summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dir-locals.el3
-rw-r--r--.gitattributes46
-rw-r--r--.gitignore25
-rw-r--r--CONTRIBUTE18
-rw-r--r--ChangeLog.27524
-rw-r--r--GNUmakefile7
-rw-r--r--INSTALL8
-rw-r--r--INSTALL.REPO5
-rw-r--r--Makefile.in22
-rw-r--r--README2
-rw-r--r--admin/CPP-DEFINES8
-rw-r--r--admin/MAINTAINERS11
-rw-r--r--admin/gitmerge.el27
-rwxr-xr-xadmin/merge-gnulib4
-rw-r--r--admin/notes/bug-triage108
-rw-r--r--admin/notes/unicode11
-rw-r--r--admin/release-process1
-rw-r--r--admin/unidata/BidiBrackets.txt9
-rw-r--r--admin/unidata/NormalizationTest.txt18777
-rw-r--r--admin/unidata/README4
-rw-r--r--admin/unidata/UnicodeData.txt8
-rw-r--r--admin/unidata/copyright.html65
-rwxr-xr-xadmin/update_autogen2
-rwxr-xr-xautogen.sh193
-rwxr-xr-xbuild-aux/gitlog-to-emacslog2
-rw-r--r--configure.ac359
-rw-r--r--doc/emacs/building.texi8
-rw-r--r--doc/emacs/cmdargs.texi7
-rw-r--r--doc/emacs/custom.texi21
-rw-r--r--doc/emacs/dired.texi20
-rw-r--r--doc/emacs/display.texi8
-rw-r--r--doc/emacs/files.texi3
-rw-r--r--doc/emacs/frames.texi16
-rw-r--r--doc/emacs/m-x.texi6
-rw-r--r--doc/emacs/maintaining.texi7
-rw-r--r--doc/emacs/misc.texi46
-rw-r--r--doc/emacs/msdos.texi81
-rw-r--r--doc/emacs/trouble.texi9
-rw-r--r--doc/lispref/commands.texi25
-rw-r--r--doc/lispref/display.texi215
-rw-r--r--doc/lispref/edebug.texi39
-rw-r--r--doc/lispref/files.texi136
-rw-r--r--doc/lispref/functions.texi78
-rw-r--r--doc/lispref/hash.texi43
-rw-r--r--doc/lispref/help.texi13
-rw-r--r--doc/lispref/internals.texi10
-rw-r--r--doc/lispref/intro.texi3
-rw-r--r--doc/lispref/keymaps.texi16
-rw-r--r--doc/lispref/minibuf.texi17
-rw-r--r--doc/lispref/modes.texi68
-rw-r--r--doc/lispref/nonascii.texi27
-rw-r--r--doc/lispref/objects.texi44
-rw-r--r--doc/lispref/os.texi21
-rw-r--r--doc/lispref/positions.texi14
-rw-r--r--doc/lispref/processes.texi43
-rw-r--r--doc/lispref/searching.texi8
-rw-r--r--doc/lispref/sequences.texi27
-rw-r--r--doc/lispref/strings.texi16
-rw-r--r--doc/lispref/syntax.texi42
-rw-r--r--doc/lispref/text.texi94
-rw-r--r--doc/lispref/tips.texi3
-rw-r--r--doc/lispref/variables.texi16
-rw-r--r--doc/lispref/windows.texi102
-rw-r--r--doc/misc/Makefile.in1
-rw-r--r--doc/misc/cc-mode.texi81
-rw-r--r--doc/misc/emacs-gnutls.texi12
-rw-r--r--doc/misc/emacs-mime.texi5
-rw-r--r--doc/misc/eww.texi12
-rw-r--r--doc/misc/gnus.texi107
-rw-r--r--doc/misc/message.texi30
-rw-r--r--doc/misc/ses.texi262
-rw-r--r--doc/misc/texinfo.tex1097
-rw-r--r--doc/misc/tramp.texi1271
-rw-r--r--doc/misc/trampver.texi41
-rw-r--r--doc/misc/url.texi26
-rw-r--r--etc/DEBUG10
-rw-r--r--etc/MACHINES4
-rw-r--r--etc/NEWS584
-rw-r--r--etc/PROBLEMS39
-rw-r--r--etc/compilation.txt26
-rw-r--r--etc/nxml/00000-0007F.el98
-rw-r--r--etc/nxml/00080-000FF.el99
-rw-r--r--etc/nxml/00100-0017F.el131
-rw-r--r--etc/nxml/00180-0024F.el182
-rw-r--r--etc/nxml/00250-002AF.el97
-rw-r--r--etc/nxml/002B0-002FF.el66
-rw-r--r--etc/nxml/00300-0036F.el99
-rw-r--r--etc/nxml/00370-003FF.el118
-rw-r--r--etc/nxml/00400-004FF.el249
-rw-r--r--etc/nxml/00500-0052F.el19
-rw-r--r--etc/nxml/00530-0058F.el89
-rw-r--r--etc/nxml/00590-005FF.el85
-rw-r--r--etc/nxml/00600-006FF.el211
-rw-r--r--etc/nxml/00700-0074F.el74
-rw-r--r--etc/nxml/00780-007BF.el53
-rw-r--r--etc/nxml/00900-0097F.el107
-rw-r--r--etc/nxml/00980-009FF.el92
-rw-r--r--etc/nxml/00A00-00A7F.el78
-rw-r--r--etc/nxml/00A80-00AFF.el81
-rw-r--r--etc/nxml/00B00-00B7F.el82
-rw-r--r--etc/nxml/00B80-00BFF.el64
-rw-r--r--etc/nxml/00C00-00C7F.el83
-rw-r--r--etc/nxml/00C80-00CFF.el83
-rw-r--r--etc/nxml/00D00-00D7F.el81
-rw-r--r--etc/nxml/00D80-00DFF.el83
-rw-r--r--etc/nxml/00E00-00E7F.el90
-rw-r--r--etc/nxml/00E80-00EFF.el68
-rw-r--r--etc/nxml/00F00-00FFF.el196
-rw-r--r--etc/nxml/01000-0109F.el81
-rw-r--r--etc/nxml/010A0-010FF.el83
-rw-r--r--etc/nxml/01100-011FF.el243
-rw-r--r--etc/nxml/01200-0137F.el348
-rw-r--r--etc/nxml/013A0-013FF.el88
-rw-r--r--etc/nxml/01400-0167F.el633
-rw-r--r--etc/nxml/01680-0169F.el32
-rw-r--r--etc/nxml/016A0-016FF.el84
-rw-r--r--etc/nxml/01700-0171F.el23
-rw-r--r--etc/nxml/01720-0173F.el26
-rw-r--r--etc/nxml/01740-0175F.el23
-rw-r--r--etc/nxml/01760-0177F.el21
-rw-r--r--etc/nxml/01780-017FF.el106
-rw-r--r--etc/nxml/01800-018AF.el158
-rw-r--r--etc/nxml/01E00-01EFF.el249
-rw-r--r--etc/nxml/01F00-01FFF.el236
-rw-r--r--etc/nxml/02000-0206F.el98
-rw-r--r--etc/nxml/02070-0209F.el32
-rw-r--r--etc/nxml/020A0-020CF.el21
-rw-r--r--etc/nxml/020D0-020FF.el30
-rw-r--r--etc/nxml/02100-0214F.el77
-rw-r--r--etc/nxml/02150-0218F.el52
-rw-r--r--etc/nxml/02190-021FF.el115
-rw-r--r--etc/nxml/02200-022FF.el259
-rw-r--r--etc/nxml/02300-023FF.el210
-rw-r--r--etc/nxml/02400-0243F.el42
-rw-r--r--etc/nxml/02440-0245F.el14
-rw-r--r--etc/nxml/02460-024FF.el162
-rw-r--r--etc/nxml/02500-0257F.el131
-rw-r--r--etc/nxml/02580-0259F.el35
-rw-r--r--etc/nxml/025A0-025FF.el99
-rw-r--r--etc/nxml/02600-026FF.el136
-rw-r--r--etc/nxml/02700-027BF.el177
-rw-r--r--etc/nxml/027C0-027EF.el31
-rw-r--r--etc/nxml/027F0-027FF.el19
-rw-r--r--etc/nxml/02800-028FF.el259
-rw-r--r--etc/nxml/02900-0297F.el131
-rw-r--r--etc/nxml/02980-029FF.el131
-rw-r--r--etc/nxml/02A00-02AFF.el259
-rw-r--r--etc/nxml/02E80-02EFF.el118
-rw-r--r--etc/nxml/02F00-02FDF.el217
-rw-r--r--etc/nxml/02FF0-02FFF.el15
-rw-r--r--etc/nxml/03000-0303F.el67
-rw-r--r--etc/nxml/03040-0309F.el96
-rw-r--r--etc/nxml/030A0-030FF.el99
-rw-r--r--etc/nxml/03100-0312F.el43
-rw-r--r--etc/nxml/03130-0318F.el97
-rw-r--r--etc/nxml/03190-0319F.el19
-rw-r--r--etc/nxml/031A0-031BF.el27
-rw-r--r--etc/nxml/031F0-031FF.el19
-rw-r--r--etc/nxml/03200-032FF.el235
-rw-r--r--etc/nxml/03300-033FF.el252
-rw-r--r--etc/nxml/03400-04DBF.el3
-rw-r--r--etc/nxml/0A000-0A48F.el1168
-rw-r--r--etc/nxml/0A490-0A4CF.el58
-rw-r--r--etc/nxml/0FB00-0FB4F.el61
-rw-r--r--etc/nxml/0FB50-0FDFF.el597
-rw-r--r--etc/nxml/0FE00-0FE0F.el19
-rw-r--r--etc/nxml/0FE20-0FE2F.el7
-rw-r--r--etc/nxml/0FE30-0FE4F.el33
-rw-r--r--etc/nxml/0FE50-0FE6F.el29
-rw-r--r--etc/nxml/0FE70-0FEFF.el144
-rw-r--r--etc/nxml/0FF00-0FFEF.el228
-rw-r--r--etc/nxml/0FFF0-0FFFF.el8
-rw-r--r--etc/nxml/10300-1032F.el38
-rw-r--r--etc/nxml/10330-1034F.el30
-rw-r--r--etc/nxml/10400-1044F.el79
-rw-r--r--etc/nxml/1D000-1D0FF.el249
-rw-r--r--etc/nxml/1D100-1D1FF.el222
-rw-r--r--etc/nxml/1D400-1D7FF.el994
-rw-r--r--etc/nxml/E0000-E007F.el100
-rw-r--r--lib-src/Makefile.in7
-rw-r--r--lib-src/emacsclient.c33
-rw-r--r--lib-src/etags.c9
-rw-r--r--lib-src/make-docfile.c2
-rw-r--r--lib-src/movemail.c2
-rw-r--r--lib-src/ntlib.c22
-rw-r--r--lib-src/ntlib.h3
-rw-r--r--lib-src/pop.c190
-rw-r--r--lib/Makefile.am31
-rw-r--r--lib/alloca.in.h2
-rw-r--r--lib/filevercmp.c181
-rw-r--r--lib/filevercmp.h42
-rw-r--r--lib/gettext.h8
-rw-r--r--lib/gnulib.mk10
-rw-r--r--lib/intprops.h102
-rw-r--r--lib/mktime-internal.h35
-rw-r--r--lib/mktime.c463
-rw-r--r--lib/secure_getenv.c29
-rw-r--r--lib/string.in.h16
-rw-r--r--lib/strtol.c31
-rw-r--r--lib/timegm.c6
-rw-r--r--lib/verify.h2
-rw-r--r--lib/xalloc-oversized.h42
-rw-r--r--lisp/ChangeLog.172
-rw-r--r--lisp/Makefile.in52
-rw-r--r--lisp/abbrev.el54
-rw-r--r--lisp/align.el7
-rw-r--r--lisp/allout.el59
-rw-r--r--lisp/apropos.el30
-rw-r--r--lisp/auth-source.el (renamed from lisp/gnus/auth-source.el)129
-rw-r--r--lisp/autorevert.el91
-rw-r--r--lisp/battery.el12
-rw-r--r--lisp/bindings.el10
-rw-r--r--lisp/calc/calc-ext.el1
-rw-r--r--lisp/calc/calc-forms.el12
-rw-r--r--lisp/calc/calc-math.el12
-rw-r--r--lisp/calculator.el457
-rw-r--r--lisp/calendar/appt.el4
-rw-r--r--lisp/calendar/cal-hebrew.el2
-rw-r--r--lisp/calendar/cal-iso.el4
-rw-r--r--lisp/calendar/cal-tex.el4
-rw-r--r--lisp/calendar/parse-time.el15
-rw-r--r--lisp/calendar/solar.el4
-rw-r--r--lisp/calendar/time-date.el104
-rw-r--r--lisp/calendar/timeclock.el60
-rw-r--r--lisp/cedet/ede/linux.el4
-rw-r--r--lisp/cedet/ede/project-am.el6
-rw-r--r--lisp/cedet/ede/simple.el4
-rw-r--r--lisp/cedet/semantic/bovine/c.el2
-rw-r--r--lisp/cedet/semantic/bovine/el.el6
-rw-r--r--lisp/cedet/semantic/complete.el8
-rw-r--r--lisp/cedet/semantic/db-el.el45
-rw-r--r--lisp/cedet/semantic/db-find.el2
-rw-r--r--lisp/cedet/semantic/db.el2
-rw-r--r--lisp/cedet/semantic/decorate/include.el8
-rw-r--r--lisp/cedet/semantic/decorate/mode.el6
-rw-r--r--lisp/cedet/semantic/format.el4
-rw-r--r--lisp/cedet/semantic/ia.el2
-rw-r--r--lisp/cedet/semantic/idle.el6
-rw-r--r--lisp/cedet/semantic/imenu.el20
-rw-r--r--lisp/cedet/semantic/lex-spp.el8
-rw-r--r--lisp/cedet/semantic/lex.el6
-rw-r--r--lisp/cedet/semantic/mru-bookmark.el2
-rw-r--r--lisp/cedet/semantic/sb.el6
-rw-r--r--lisp/cedet/semantic/symref.el194
-rw-r--r--lisp/cedet/semantic/symref/grep.el2
-rw-r--r--lisp/cedet/semantic/wisent/comp.el14
-rw-r--r--lisp/cedet/semantic/wisent/wisent.el5
-rw-r--r--lisp/cedet/srecode/fields.el2
-rw-r--r--lisp/cedet/srecode/insert.el7
-rw-r--r--lisp/comint.el10
-rw-r--r--lisp/cus-edit.el28
-rw-r--r--lisp/cus-start.el1
-rw-r--r--lisp/descr-text.el4
-rw-r--r--lisp/desktop.el2
-rw-r--r--lisp/dired-aux.el107
-rw-r--r--lisp/dired-x.el2
-rw-r--r--lisp/dired.el609
-rw-r--r--lisp/dom.el11
-rw-r--r--lisp/ecomplete.el (renamed from lisp/gnus/ecomplete.el)13
-rw-r--r--lisp/emacs-lisp/advice.el2
-rw-r--r--lisp/emacs-lisp/autoload.el399
-rw-r--r--lisp/emacs-lisp/byte-opt.el5
-rw-r--r--lisp/emacs-lisp/bytecomp.el62
-rw-r--r--lisp/emacs-lisp/cconv.el76
-rw-r--r--lisp/emacs-lisp/check-declare.el142
-rw-r--r--lisp/emacs-lisp/checkdoc.el21
-rw-r--r--lisp/emacs-lisp/cl-extra.el4
-rw-r--r--lisp/emacs-lisp/cl-generic.el79
-rw-r--r--lisp/emacs-lisp/cl-macs.el27
-rw-r--r--lisp/emacs-lisp/cl-seq.el29
-rw-r--r--lisp/emacs-lisp/cl.el3
-rw-r--r--lisp/emacs-lisp/derived.el15
-rw-r--r--lisp/emacs-lisp/easy-mmode.el7
-rw-r--r--lisp/emacs-lisp/edebug.el7
-rw-r--r--lisp/emacs-lisp/eieio-compat.el2
-rw-r--r--lisp/emacs-lisp/eieio-core.el108
-rw-r--r--lisp/emacs-lisp/eieio-custom.el2
-rw-r--r--lisp/emacs-lisp/eieio-opt.el2
-rw-r--r--lisp/emacs-lisp/eieio.el71
-rw-r--r--lisp/emacs-lisp/eldoc.el5
-rw-r--r--lisp/emacs-lisp/ert.el31
-rw-r--r--lisp/emacs-lisp/find-func.el71
-rw-r--r--lisp/emacs-lisp/let-alist.el9
-rw-r--r--lisp/emacs-lisp/lisp-mode.el18
-rw-r--r--lisp/emacs-lisp/map.el63
-rw-r--r--lisp/emacs-lisp/package.el10
-rw-r--r--lisp/emacs-lisp/pcase.el1
-rw-r--r--lisp/emacs-lisp/radix-tree.el246
-rw-r--r--lisp/emacs-lisp/seq.el42
-rw-r--r--lisp/emacs-lisp/subr-x.el165
-rw-r--r--lisp/emacs-lisp/syntax.el9
-rw-r--r--lisp/emacs-lisp/timer-list.el112
-rw-r--r--lisp/emulation/viper-cmd.el171
-rw-r--r--lisp/emulation/viper-ex.el4
-rw-r--r--lisp/emulation/viper-init.el11
-rw-r--r--lisp/emulation/viper-macs.el2
-rw-r--r--lisp/emulation/viper.el467
-rw-r--r--lisp/epa.el19
-rw-r--r--lisp/epg-config.el90
-rw-r--r--lisp/epg.el22
-rw-r--r--lisp/erc/erc-backend.el141
-rw-r--r--lisp/erc/erc-button.el10
-rw-r--r--lisp/erc/erc-capab.el3
-rw-r--r--lisp/erc/erc-compat.el5
-rw-r--r--lisp/erc/erc-dcc.el2
-rw-r--r--lisp/erc/erc-goodies.el2
-rw-r--r--lisp/erc/erc-match.el12
-rw-r--r--lisp/erc/erc-stamp.el3
-rw-r--r--lisp/erc/erc-track.el100
-rw-r--r--lisp/erc/erc.el61
-rw-r--r--lisp/eshell/em-ls.el14
-rw-r--r--lisp/eshell/em-unix.el11
-rw-r--r--lisp/eshell/esh-mode.el7
-rw-r--r--lisp/eshell/esh-var.el2
-rw-r--r--lisp/eshell/eshell.el4
-rw-r--r--lisp/faces.el133
-rw-r--r--lisp/ffap.el2
-rw-r--r--lisp/files-x.el30
-rw-r--r--lisp/files.el458
-rw-r--r--lisp/find-dired.el2
-rw-r--r--lisp/find-file.el25
-rw-r--r--lisp/font-lock.el31
-rw-r--r--lisp/frameset.el24
-rw-r--r--lisp/generic-x.el25
-rw-r--r--lisp/gnus/ChangeLog.12
-rw-r--r--lisp/gnus/ChangeLog.22
-rw-r--r--lisp/gnus/ChangeLog.32
-rw-r--r--lisp/gnus/canlock.el9
-rw-r--r--lisp/gnus/gmm-utils.el246
-rw-r--r--lisp/gnus/gnus-agent.el54
-rw-r--r--lisp/gnus/gnus-art.el508
-rw-r--r--lisp/gnus/gnus-async.el25
-rw-r--r--lisp/gnus/gnus-bcklg.el2
-rw-r--r--lisp/gnus/gnus-bookmark.el49
-rw-r--r--lisp/gnus/gnus-cache.el16
-rw-r--r--lisp/gnus/gnus-cite.el40
-rw-r--r--lisp/gnus/gnus-cloud.el464
-rw-r--r--lisp/gnus/gnus-cus.el4
-rw-r--r--lisp/gnus/gnus-delay.el12
-rw-r--r--lisp/gnus/gnus-demon.el5
-rw-r--r--lisp/gnus/gnus-diary.el19
-rw-r--r--lisp/gnus/gnus-dired.el13
-rw-r--r--lisp/gnus/gnus-draft.el5
-rw-r--r--lisp/gnus/gnus-dup.el6
-rw-r--r--lisp/gnus/gnus-ems.el266
-rw-r--r--lisp/gnus/gnus-fun.el5
-rw-r--r--lisp/gnus/gnus-gravatar.el8
-rw-r--r--lisp/gnus/gnus-group.el284
-rw-r--r--lisp/gnus/gnus-html.el66
-rw-r--r--lisp/gnus/gnus-icalendar.el355
-rw-r--r--lisp/gnus/gnus-int.el8
-rw-r--r--lisp/gnus/gnus-kill.el6
-rw-r--r--lisp/gnus/gnus-ml.el9
-rw-r--r--lisp/gnus/gnus-msg.el49
-rw-r--r--lisp/gnus/gnus-notifications.el9
-rw-r--r--lisp/gnus/gnus-picon.el9
-rw-r--r--lisp/gnus/gnus-registry.el11
-rw-r--r--lisp/gnus/gnus-rfc1843.el77
-rw-r--r--lisp/gnus/gnus-salt.el51
-rw-r--r--lisp/gnus/gnus-score.el54
-rw-r--r--lisp/gnus/gnus-spec.el176
-rw-r--r--lisp/gnus/gnus-srvr.el79
-rw-r--r--lisp/gnus/gnus-start.el108
-rw-r--r--lisp/gnus/gnus-sum.el546
-rw-r--r--lisp/gnus/gnus-sync.el917
-rw-r--r--lisp/gnus/gnus-topic.el23
-rw-r--r--lisp/gnus/gnus-undo.el4
-rw-r--r--lisp/gnus/gnus-util.el513
-rw-r--r--lisp/gnus/gnus-uu.el52
-rw-r--r--lisp/gnus/gnus-win.el42
-rw-r--r--lisp/gnus/gnus.el157
-rw-r--r--lisp/gnus/legacy-gnus-agent.el6
-rw-r--r--lisp/gnus/mail-source.el19
-rw-r--r--lisp/gnus/message.el948
-rw-r--r--lisp/gnus/messcompat.el91
-rw-r--r--lisp/gnus/mm-archive.el2
-rw-r--r--lisp/gnus/mm-bodies.el55
-rw-r--r--lisp/gnus/mm-decode.el129
-rw-r--r--lisp/gnus/mm-partial.el7
-rw-r--r--lisp/gnus/mm-url.el29
-rw-r--r--lisp/gnus/mm-util.el1046
-rw-r--r--lisp/gnus/mm-uu.el49
-rw-r--r--lisp/gnus/mm-view.el70
-rw-r--r--lisp/gnus/mml-sec.el30
-rw-r--r--lisp/gnus/mml-smime.el51
-rw-r--r--lisp/gnus/mml.el173
-rw-r--r--lisp/gnus/mml1991.el50
-rw-r--r--lisp/gnus/mml2015.el58
-rw-r--r--lisp/gnus/nndiary.el48
-rw-r--r--lisp/gnus/nndoc.el2
-rw-r--r--lisp/gnus/nndraft.el15
-rw-r--r--lisp/gnus/nneething.el4
-rw-r--r--lisp/gnus/nnfolder.el6
-rw-r--r--lisp/gnus/nnheader.el105
-rw-r--r--lisp/gnus/nnimap.el68
-rw-r--r--lisp/gnus/nnir.el89
-rw-r--r--lisp/gnus/nnmail.el102
-rw-r--r--lisp/gnus/nnmaildir.el53
-rw-r--r--lisp/gnus/nnmairix.el7
-rw-r--r--lisp/gnus/nnmh.el4
-rw-r--r--lisp/gnus/nnml.el10
-rw-r--r--lisp/gnus/nnrss.el53
-rw-r--r--lisp/gnus/nnspool.el9
-rw-r--r--lisp/gnus/nntp.el41
-rw-r--r--lisp/gnus/nnweb.el41
-rw-r--r--lisp/gnus/score-mode.el22
-rw-r--r--lisp/gnus/smiley.el26
-rw-r--r--lisp/gnus/smime.el70
-rw-r--r--lisp/gnus/spam-report.el27
-rw-r--r--lisp/gnus/spam-stat.el14
-rw-r--r--lisp/gnus/spam.el16
-rw-r--r--lisp/help-fns.el177
-rw-r--r--lisp/help-mode.el2
-rw-r--r--lisp/help.el27
-rw-r--r--lisp/hfy-cmap.el2
-rw-r--r--lisp/hilit-chg.el9
-rw-r--r--lisp/hl-line.el71
-rw-r--r--lisp/htmlfontify.el22
-rw-r--r--lisp/ibuf-ext.el149
-rw-r--r--lisp/ibuf-macs.el9
-rw-r--r--lisp/ibuffer.el501
-rw-r--r--lisp/icomplete.el3
-rw-r--r--lisp/image-dired.el6
-rw-r--r--lisp/image-mode.el104
-rw-r--r--lisp/image.el186
-rw-r--r--lisp/image/compface.el (renamed from lisp/gnus/compface.el)17
-rw-r--r--lisp/image/gravatar.el (renamed from lisp/gnus/gravatar.el)17
-rw-r--r--lisp/indent.el2
-rw-r--r--lisp/info.el17
-rw-r--r--lisp/international/characters.el16
-rw-r--r--lisp/international/kinsoku.el6
-rw-r--r--lisp/international/mule-cmds.el45
-rw-r--r--lisp/international/mule-diag.el9
-rw-r--r--lisp/international/quail.el10
-rw-r--r--lisp/international/rfc1843.el (renamed from lisp/gnus/rfc1843.el)64
-rw-r--r--lisp/international/ucs-normalize.el45
-rw-r--r--lisp/international/utf7.el (renamed from lisp/gnus/utf7.el)21
-rw-r--r--lisp/isearch.el20
-rw-r--r--lisp/jit-lock.el116
-rw-r--r--lisp/json.el2
-rw-r--r--lisp/kmacro.el2
-rw-r--r--lisp/language/china-util.el113
-rw-r--r--lisp/language/european.el22
-rw-r--r--lisp/language/japan-util.el3
-rw-r--r--lisp/language/lao-util.el191
-rw-r--r--lisp/language/thai-util.el191
-rw-r--r--lisp/ldefs-boot.el8066
-rw-r--r--lisp/leim/quail/latin-pre.el2
-rw-r--r--lisp/leim/quail/rfc1345.el3914
-rw-r--r--lisp/linum.el23
-rw-r--r--lisp/loadup.el21
-rw-r--r--lisp/lpr.el2
-rw-r--r--lisp/ls-lisp.el2
-rw-r--r--lisp/mail/emacsbug.el28
-rw-r--r--lisp/mail/flow-fill.el (renamed from lisp/gnus/flow-fill.el)1
-rw-r--r--lisp/mail/ietf-drums.el (renamed from lisp/gnus/ietf-drums.el)10
-rw-r--r--lisp/mail/mail-extr.el41
-rw-r--r--lisp/mail/mail-parse.el (renamed from lisp/gnus/mail-parse.el)0
-rw-r--r--lisp/mail/mail-prsvr.el (renamed from lisp/gnus/mail-prsvr.el)0
-rw-r--r--lisp/mail/qp.el (renamed from lisp/gnus/qp.el)30
-rw-r--r--lisp/mail/rfc2045.el (renamed from lisp/gnus/rfc2045.el)0
-rw-r--r--lisp/mail/rfc2047.el (renamed from lisp/gnus/rfc2047.el)153
-rw-r--r--lisp/mail/rfc2231.el (renamed from lisp/gnus/rfc2231.el)7
-rw-r--r--lisp/mail/rmail.el252
-rw-r--r--lisp/mail/rmailedit.el2
-rw-r--r--lisp/mail/rmailkwd.el2
-rw-r--r--lisp/mail/rmailmm.el2
-rw-r--r--lisp/mail/rmailmsc.el2
-rw-r--r--lisp/mail/rmailsort.el2
-rw-r--r--lisp/mail/rmailsum.el2
-rw-r--r--lisp/mail/smtpmail.el9
-rw-r--r--lisp/mail/undigest.el2
-rw-r--r--lisp/mail/yenc.el (renamed from lisp/gnus/yenc.el)4
-rw-r--r--lisp/man.el17
-rw-r--r--lisp/menu-bar.el46
-rw-r--r--lisp/mh-e/ChangeLog.12
-rw-r--r--lisp/mh-e/mh-alias.el8
-rw-r--r--lisp/mh-e/mh-comp.el4
-rw-r--r--lisp/mh-e/mh-e.el155
-rw-r--r--lisp/mh-e/mh-scan.el16
-rw-r--r--lisp/minibuffer.el2
-rw-r--r--lisp/mouse.el114
-rw-r--r--lisp/mpc.el5
-rw-r--r--lisp/net/eudc.el19
-rw-r--r--lisp/net/eww.el56
-rw-r--r--lisp/net/gnutls.el154
-rw-r--r--lisp/net/html2text.el (renamed from lisp/gnus/html2text.el)0
-rw-r--r--lisp/net/mailcap.el (renamed from lisp/gnus/mailcap.el)190
-rw-r--r--lisp/net/net-utils.el44
-rw-r--r--lisp/net/network-stream.el87
-rw-r--r--lisp/net/newst-backend.el7
-rw-r--r--lisp/net/nsm.el47
-rw-r--r--lisp/net/pop3.el (renamed from lisp/gnus/pop3.el)42
-rw-r--r--lisp/net/puny.el248
-rw-r--r--lisp/net/rcirc.el47
-rw-r--r--lisp/net/secrets.el58
-rw-r--r--lisp/net/shr.el342
-rw-r--r--lisp/net/sieve-manage.el (renamed from lisp/gnus/sieve-manage.el)9
-rw-r--r--lisp/net/sieve-mode.el (renamed from lisp/gnus/sieve-mode.el)134
-rw-r--r--lisp/net/sieve.el (renamed from lisp/gnus/sieve.el)0
-rw-r--r--lisp/net/soap-client.el122
-rw-r--r--lisp/net/starttls.el (renamed from lisp/gnus/starttls.el)21
-rw-r--r--lisp/net/tramp-adb.el132
-rw-r--r--lisp/net/tramp-cache.el83
-rw-r--r--lisp/net/tramp-cmds.el39
-rw-r--r--lisp/net/tramp-compat.el525
-rw-r--r--lisp/net/tramp-ftp.el30
-rw-r--r--lisp/net/tramp-gvfs.el669
-rw-r--r--lisp/net/tramp-gw.el11
-rw-r--r--lisp/net/tramp-sh.el918
-rw-r--r--lisp/net/tramp-smb.el145
-rw-r--r--lisp/net/tramp.el1028
-rw-r--r--lisp/net/trampver.el47
-rw-r--r--lisp/net/webjump.el209
-rw-r--r--lisp/nxml/nxml-enc.el4
-rw-r--r--lisp/nxml/nxml-glyph.el423
-rw-r--r--lisp/nxml/nxml-maint.el44
-rw-r--r--lisp/nxml/nxml-mode.el329
-rw-r--r--lisp/nxml/nxml-outln.el28
-rw-r--r--lisp/nxml/nxml-parse.el2
-rw-r--r--lisp/nxml/nxml-rap.el129
-rw-r--r--lisp/nxml/nxml-uchnm.el251
-rw-r--r--lisp/nxml/nxml-util.el14
-rw-r--r--lisp/nxml/rng-cmpct.el10
-rw-r--r--lisp/nxml/rng-dt.el4
-rw-r--r--lisp/nxml/rng-loc.el15
-rw-r--r--lisp/nxml/rng-maint.el2
-rw-r--r--lisp/nxml/rng-match.el5
-rw-r--r--lisp/nxml/rng-nxml.el250
-rw-r--r--lisp/nxml/rng-parse.el2
-rw-r--r--lisp/nxml/rng-pttrn.el2
-rw-r--r--lisp/nxml/rng-uri.el2
-rw-r--r--lisp/nxml/rng-util.el63
-rw-r--r--lisp/nxml/rng-valid.el53
-rw-r--r--lisp/nxml/rng-xsd.el8
-rw-r--r--lisp/nxml/xmltok.el43
-rw-r--r--lisp/nxml/xsd-regexp.el6
-rw-r--r--lisp/obsolete/awk-mode.el124
-rw-r--r--lisp/obsolete/iso-acc.el489
-rw-r--r--lisp/obsolete/iso-insert.el630
-rw-r--r--lisp/obsolete/iso-swed.el150
-rw-r--r--lisp/obsolete/messcompat.el55
-rw-r--r--lisp/obsolete/old-whitespace.el2
-rw-r--r--lisp/obsolete/resume.el125
-rw-r--r--lisp/obsolete/scribe.el329
-rw-r--r--lisp/obsolete/spell.el171
-rw-r--r--lisp/obsolete/swedish.el160
-rw-r--r--lisp/obsolete/sym-comp.el237
-rw-r--r--lisp/org/ChangeLog.14
-rw-r--r--lisp/org/ob-asymptote.el3
-rw-r--r--lisp/org/ob-awk.el3
-rw-r--r--lisp/org/ob-comint.el5
-rw-r--r--lisp/org/ob-core.el51
-rw-r--r--lisp/org/ob-emacs-lisp.el3
-rw-r--r--lisp/org/ob-exp.el2
-rw-r--r--lisp/org/ob-gnuplot.el5
-rw-r--r--lisp/org/ob-haskell.el3
-rw-r--r--lisp/org/ob-latex.el5
-rw-r--r--lisp/org/ob-python.el2
-rw-r--r--lisp/org/ob-scheme.el9
-rw-r--r--lisp/org/ob-sh.el5
-rw-r--r--lisp/org/ob-tangle.el6
-rw-r--r--lisp/org/org-agenda.el14
-rw-r--r--lisp/org/org-bibtex.el2
-rw-r--r--lisp/org/org-clock.el60
-rw-r--r--lisp/org/org-colview.el2
-rw-r--r--lisp/org/org-compat.el5
-rw-r--r--lisp/org/org-feed.el3
-rw-r--r--lisp/org/org-gnus.el3
-rw-r--r--lisp/org/org-info.el4
-rw-r--r--lisp/org/org-list.el4
-rw-r--r--lisp/org/org-macro.el1
-rw-r--r--lisp/org/org-macs.el3
-rw-r--r--lisp/org/org-pcomplete.el2
-rw-r--r--lisp/org/org-protocol.el2
-rw-r--r--lisp/org/org-src.el7
-rw-r--r--lisp/org/org-timer.el16
-rw-r--r--lisp/org/org.el52
-rw-r--r--lisp/org/ox-org.el2
-rw-r--r--lisp/paren.el5
-rw-r--r--lisp/pcmpl-gnu.el36
-rw-r--r--lisp/play/animate.el10
-rw-r--r--lisp/play/fortune.el13
-rw-r--r--lisp/play/snake.el23
-rw-r--r--lisp/plstore.el (renamed from lisp/gnus/plstore.el)24
-rw-r--r--lisp/proced.el7
-rw-r--r--lisp/profiler.el1
-rw-r--r--lisp/progmodes/ada-xref.el4
-rw-r--r--lisp/progmodes/cc-cmds.el188
-rw-r--r--lisp/progmodes/cc-defs.el96
-rw-r--r--lisp/progmodes/cc-engine.el1748
-rw-r--r--lisp/progmodes/cc-fonts.el568
-rw-r--r--lisp/progmodes/cc-langs.el117
-rw-r--r--lisp/progmodes/cc-mode.el479
-rw-r--r--lisp/progmodes/cc-vars.el150
-rw-r--r--lisp/progmodes/compile.el7
-rw-r--r--lisp/progmodes/cperl-mode.el130
-rw-r--r--lisp/progmodes/elisp-mode.el23
-rw-r--r--lisp/progmodes/gdb-mi.el22
-rw-r--r--lisp/progmodes/grep.el43
-rw-r--r--lisp/progmodes/gud.el32
-rw-r--r--lisp/progmodes/hideif.el4
-rw-r--r--lisp/progmodes/hideshow.el4
-rw-r--r--lisp/progmodes/js.el16
-rw-r--r--lisp/progmodes/make-mode.el1
-rw-r--r--lisp/progmodes/octave.el43
-rw-r--r--lisp/progmodes/prog-mode.el68
-rw-r--r--lisp/progmodes/prolog.el25
-rw-r--r--lisp/progmodes/ps-mode.el2
-rw-r--r--lisp/progmodes/python.el89
-rw-r--r--lisp/progmodes/ruby-mode.el6
-rw-r--r--lisp/progmodes/scheme.el170
-rw-r--r--lisp/progmodes/sh-script.el18
-rw-r--r--lisp/progmodes/sql.el52
-rw-r--r--lisp/progmodes/verilog-mode.el574
-rw-r--r--lisp/progmodes/which-func.el45
-rw-r--r--lisp/ps-mule.el2
-rw-r--r--lisp/ps-print.el75
-rw-r--r--lisp/recentf.el5
-rw-r--r--lisp/rect.el11
-rw-r--r--lisp/registry.el (renamed from lisp/gnus/registry.el)35
-rw-r--r--lisp/replace.el117
-rw-r--r--lisp/rtree.el (renamed from lisp/gnus/rtree.el)0
-rw-r--r--lisp/scroll-bar.el11
-rw-r--r--lisp/server.el4
-rw-r--r--lisp/ses.el155
-rw-r--r--lisp/simple.el262
-rw-r--r--lisp/sort.el5
-rw-r--r--lisp/startup.el9
-rw-r--r--lisp/subr.el149
-rw-r--r--lisp/svg.el273
-rw-r--r--lisp/term.el23
-rw-r--r--lisp/term/AT386.el2
-rw-r--r--lisp/term/bobcat.el2
-rw-r--r--lisp/term/cygwin.el2
-rw-r--r--lisp/term/internal.el2
-rw-r--r--lisp/term/iris-ansi.el2
-rw-r--r--lisp/term/linux.el2
-rw-r--r--lisp/term/lk201.el2
-rw-r--r--lisp/term/news.el2
-rw-r--r--lisp/term/ns-win.el57
-rw-r--r--lisp/term/pc-win.el1
-rw-r--r--lisp/term/rxvt.el2
-rw-r--r--lisp/term/screen.el2
-rw-r--r--lisp/term/sun.el2
-rw-r--r--lisp/term/tty-colors.el2
-rw-r--r--lisp/term/tvi970.el2
-rw-r--r--lisp/term/vt100.el2
-rw-r--r--lisp/term/vt200.el2
-rw-r--r--lisp/term/w32-win.el1
-rw-r--r--lisp/term/w32console.el2
-rw-r--r--lisp/term/wyse50.el2
-rw-r--r--lisp/term/x-win.el1
-rw-r--r--lisp/term/xterm.el13
-rw-r--r--lisp/textmodes/css-mode.el653
-rw-r--r--lisp/textmodes/fill.el128
-rw-r--r--lisp/textmodes/flyspell.el42
-rw-r--r--lisp/textmodes/ispell.el228
-rw-r--r--lisp/textmodes/reftex-auc.el2
-rw-r--r--lisp/textmodes/reftex-cite.el2
-rw-r--r--lisp/textmodes/reftex-dcr.el2
-rw-r--r--lisp/textmodes/reftex-global.el2
-rw-r--r--lisp/textmodes/reftex-index.el2
-rw-r--r--lisp/textmodes/reftex-parse.el2
-rw-r--r--lisp/textmodes/reftex-ref.el2
-rw-r--r--lisp/textmodes/reftex-sel.el2
-rw-r--r--lisp/textmodes/reftex-toc.el2
-rw-r--r--lisp/textmodes/reftex.el699
-rw-r--r--lisp/textmodes/rst.el2772
-rw-r--r--lisp/textmodes/sgml-mode.el175
-rw-r--r--lisp/textmodes/table.el4
-rw-r--r--lisp/textmodes/tex-mode.el91
-rw-r--r--lisp/textmodes/texinfo.el9
-rw-r--r--lisp/thingatpt.el5
-rw-r--r--lisp/time-stamp.el58
-rw-r--r--lisp/time.el3
-rw-r--r--lisp/url/url-cookie.el18
-rw-r--r--lisp/url/url-file.el1
-rw-r--r--lisp/url/url-gw.el4
-rw-r--r--lisp/url/url-handlers.el3
-rw-r--r--lisp/url/url-http.el199
-rw-r--r--lisp/url/url-misc.el1
-rw-r--r--lisp/url/url-queue.el18
-rw-r--r--lisp/url/url-util.el2
-rw-r--r--lisp/url/url-vars.el27
-rw-r--r--lisp/url/url.el19
-rw-r--r--lisp/vc/add-log.el89
-rw-r--r--lisp/vc/diff-mode.el71
-rw-r--r--lisp/vc/ediff-util.el47
-rw-r--r--lisp/vc/ediff.el8
-rw-r--r--lisp/vc/emerge.el37
-rw-r--r--lisp/vc/log-view.el9
-rw-r--r--lisp/vc/pcvs-info.el7
-rw-r--r--lisp/vc/smerge-mode.el179
-rw-r--r--lisp/vc/vc-bzr.el5
-rw-r--r--lisp/vc/vc-cvs.el6
-rw-r--r--lisp/vc/vc-dispatcher.el3
-rw-r--r--lisp/vc/vc-git.el20
-rw-r--r--lisp/vc/vc-hg.el615
-rw-r--r--lisp/vc/vc-hooks.el39
-rw-r--r--lisp/vc/vc-rcs.el11
-rw-r--r--lisp/vc/vc-src.el2
-rw-r--r--lisp/version.el73
-rw-r--r--lisp/w32-fns.el21
-rw-r--r--lisp/wdired.el23
-rw-r--r--lisp/wid-edit.el18
-rw-r--r--lisp/widget.el6
-rw-r--r--lisp/window.el141
-rw-r--r--lisp/woman.el46
-rw-r--r--lwlib/Makefile.in15
-rw-r--r--lwlib/lwlib.c12
-rw-r--r--m4/gnulib-comp.m45
-rw-r--r--m4/manywarnings.m414
-rw-r--r--m4/mktime.m423
-rw-r--r--m4/nocrash.m43
-rw-r--r--m4/secure_getenv.m41
-rw-r--r--m4/std-gnu11.m4824
-rwxr-xr-xmake-dist2
-rw-r--r--msdos/sed2v2.inp2
-rw-r--r--nt/Makefile.in13
-rw-r--r--nt/gnulib.mk13
-rw-r--r--nt/inc/ms-w32.h10
-rw-r--r--nt/inc/sys/socket.h5
-rw-r--r--nt/mingw-cfg.site12
-rw-r--r--nt/runemacs.c2
-rw-r--r--oldXMenu/Makefile.in17
-rw-r--r--src/.gdbinit15
-rw-r--r--src/Makefile.in57
-rw-r--r--src/alloc.c326
-rw-r--r--src/bidi.c10
-rw-r--r--src/buffer.c64
-rw-r--r--src/bytecode.c1000
-rw-r--r--src/callproc.c83
-rw-r--r--src/casefiddle.c24
-rw-r--r--src/ccl.c5
-rw-r--r--src/character.h13
-rw-r--r--src/charset.c23
-rw-r--r--src/chartab.c2
-rw-r--r--src/cm.c2
-rw-r--r--src/coding.c187
-rw-r--r--src/coding.h2
-rw-r--r--src/composite.c5
-rw-r--r--src/conf_post.h78
-rw-r--r--src/cygw32.c4
-rw-r--r--src/data.c12
-rw-r--r--src/dbusbind.c121
-rw-r--r--src/decompress.c6
-rw-r--r--src/dired.c32
-rw-r--r--src/dispextern.h65
-rw-r--r--src/dispnew.c12
-rw-r--r--src/doc.c276
-rw-r--r--src/dynlib.c1
-rw-r--r--src/editfns.c201
-rw-r--r--src/emacs-module.c165
-rw-r--r--src/emacs-module.h9
-rw-r--r--src/emacs.c265
-rw-r--r--src/emacsgtkfixed.c2
-rw-r--r--src/eval.c184
-rw-r--r--src/fileio.c78
-rw-r--r--src/filelock.c26
-rw-r--r--src/fns.c287
-rw-r--r--src/font.c18
-rw-r--r--src/fontset.c89
-rw-r--r--src/frame.c253
-rw-r--r--src/frame.h109
-rw-r--r--src/fringe.c7
-rw-r--r--src/ftfont.c5
-rw-r--r--src/gmalloc.c233
-rw-r--r--src/gnutls.c518
-rw-r--r--src/gnutls.h9
-rw-r--r--src/gtkutil.c3
-rw-r--r--src/image.c211
-rw-r--r--src/indent.c23
-rw-r--r--src/insdel.c102
-rw-r--r--src/intervals.h14
-rw-r--r--src/keyboard.c75
-rw-r--r--src/keymap.c16
-rw-r--r--src/kqueue.c24
-rw-r--r--src/lastfile.c3
-rw-r--r--src/lisp.h111
-rw-r--r--src/lread.c138
-rw-r--r--src/macfont.m13
-rw-r--r--src/menu.c7
-rw-r--r--src/minibuf.c59
-rw-r--r--src/msdos.c6
-rw-r--r--src/nsfns.m8
-rw-r--r--src/nsfont.m3
-rw-r--r--src/nsmenu.m32
-rw-r--r--src/nsterm.h6
-rw-r--r--src/nsterm.m293
-rw-r--r--src/print.c57
-rw-r--r--src/process.c1782
-rw-r--r--src/process.h40
-rw-r--r--src/profiler.c11
-rw-r--r--src/puresize.h2
-rw-r--r--src/ralloc.c30
-rw-r--r--src/regex.c632
-rw-r--r--src/regex.h34
-rw-r--r--src/search.c21
-rw-r--r--src/sheap.c83
-rw-r--r--src/sheap.h31
-rw-r--r--src/sound.c4
-rw-r--r--src/syntax.c472
-rw-r--r--src/sysdep.c304
-rw-r--r--src/term.c30
-rw-r--r--src/termhooks.h3
-rw-r--r--src/textprop.c20
-rw-r--r--src/unexcw.c18
-rw-r--r--src/unexelf.c26
-rw-r--r--src/unexw32.c33
-rw-r--r--src/vm-limit.c11
-rw-r--r--src/w32.c267
-rw-r--r--src/w32.h2
-rw-r--r--src/w32console.c27
-rw-r--r--src/w32fns.c1136
-rw-r--r--src/w32font.c9
-rw-r--r--src/w32font.h1
-rw-r--r--src/w32heap.c12
-rw-r--r--src/w32heap.h4
-rw-r--r--src/w32inevt.c135
-rw-r--r--src/w32menu.c27
-rw-r--r--src/w32notify.c327
-rw-r--r--src/w32proc.c13
-rw-r--r--src/w32reg.c4
-rw-r--r--src/w32select.c7
-rw-r--r--src/w32term.c164
-rw-r--r--src/w32term.h46
-rw-r--r--src/w32uniscribe.c6
-rw-r--r--src/w32xfns.c32
-rw-r--r--src/window.c284
-rw-r--r--src/window.h21
-rw-r--r--src/xdisp.c529
-rw-r--r--src/xfaces.c55
-rw-r--r--src/xfns.c534
-rw-r--r--src/xfont.c2
-rw-r--r--src/xmenu.c6
-rw-r--r--src/xml.c8
-rw-r--r--src/xselect.c69
-rw-r--r--src/xsmfns.c4
-rw-r--r--src/xterm.c60
-rw-r--r--src/xterm.h4
-rw-r--r--src/xwidget.c88
-rw-r--r--test/Makefile.in (renamed from test/automated/Makefile.in)77
-rw-r--r--test/README3
-rw-r--r--test/automated/abbrev-tests.el98
-rw-r--r--test/automated/help-fns.el70
-rw-r--r--test/data/decompress/foo.gz (renamed from test/automated/data/decompress/foo.gz)bin30 -> 30 bytes
-rw-r--r--test/data/epg/pubkey.asc (renamed from test/automated/data/epg/pubkey.asc)0
-rw-r--r--test/data/epg/seckey.asc (renamed from test/automated/data/epg/seckey.asc)0
-rw-r--r--test/data/files-bug18141.el.gz (renamed from test/automated/data/files-bug18141.el.gz)bin77 -> 77 bytes
-rw-r--r--test/data/net/cert.pem25
-rw-r--r--test/data/net/key.pem28
-rw-r--r--test/data/shr/div-div.html1
-rw-r--r--test/data/shr/div-div.txt2
-rw-r--r--test/data/shr/div-p.html1
-rw-r--r--test/data/shr/div-p.txt3
-rw-r--r--test/data/shr/li-div.html10
-rw-r--r--test/data/shr/li-div.txt6
-rw-r--r--test/data/shr/li-empty.html1
-rw-r--r--test/data/shr/li-empty.txt3
-rw-r--r--test/data/shr/nonbr.html1
-rw-r--r--test/data/shr/nonbr.txt12
-rw-r--r--test/data/shr/ul-empty.html4
-rw-r--r--test/data/shr/ul-empty.txt3
-rw-r--r--test/data/xref/file1.txt (renamed from test/automated/data/xref/file1.txt)0
-rw-r--r--test/data/xref/file2.txt (renamed from test/automated/data/xref/file2.txt)0
-rw-r--r--test/file-organization.org54
-rw-r--r--test/lisp/abbrev-tests.el255
-rw-r--r--test/lisp/auth-source-tests.el (renamed from test/automated/auth-source-tests.el)0
-rw-r--r--test/lisp/autorevert-tests.el (renamed from test/automated/auto-revert-tests.el)73
-rw-r--r--test/lisp/calc/calc-tests.el (renamed from test/automated/calc-tests.el)0
-rw-r--r--test/lisp/calendar/icalendar-tests.el (renamed from test/automated/icalendar-tests.el)19
-rw-r--r--test/lisp/calendar/parse-time-tests.el49
-rw-r--r--test/lisp/char-fold-tests.el (renamed from test/automated/char-fold-tests.el)0
-rw-r--r--test/lisp/comint-tests.el (renamed from test/automated/comint-testsuite.el)0
-rw-r--r--test/lisp/dabbrev-tests.el (renamed from test/automated/dabbrev-tests.el)0
-rw-r--r--test/lisp/descr-text-tests.el (renamed from test/automated/descr-text-test.el)0
-rw-r--r--test/lisp/dired-tests.el56
-rw-r--r--test/lisp/electric-tests.el (renamed from test/automated/electric-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/cl-generic-tests.el (renamed from test/automated/cl-generic-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/cl-lib-tests.el (renamed from test/automated/cl-lib-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/cl-seq-tests.el308
-rw-r--r--test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el (renamed from test/automated/eieio-test-methodinvoke.el)0
-rw-r--r--test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el (renamed from test/automated/eieio-test-persist.el)0
-rw-r--r--test/lisp/emacs-lisp/eieio-tests/eieio-tests.el (renamed from test/automated/eieio-tests.el)6
-rw-r--r--test/lisp/emacs-lisp/ert-tests.el (renamed from test/automated/ert-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/ert-x-tests.el (renamed from test/automated/ert-x-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/generator-tests.el (renamed from test/automated/generator-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/let-alist-tests.el (renamed from test/automated/let-alist.el)0
-rw-r--r--test/lisp/emacs-lisp/lisp-tests.el211
-rw-r--r--test/lisp/emacs-lisp/map-tests.el (renamed from test/automated/map-tests.el)8
-rw-r--r--test/lisp/emacs-lisp/nadvice-tests.el (renamed from test/automated/advice-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/archive-contents (renamed from test/automated/data/package/archive-contents)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/key.pub (renamed from test/automated/data/package/key.pub)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/key.sec (renamed from test/automated/data/package/key.sec)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/macro-problem-package-1.0/macro-aux.el (renamed from test/automated/data/package/macro-problem-package-1.0/macro-aux.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/macro-problem-package-1.0/macro-problem.el (renamed from test/automated/data/package/macro-problem-package-1.0/macro-problem.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/macro-problem-package-2.0/macro-aux.el (renamed from test/automated/data/package/macro-problem-package-2.0/macro-aux.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/macro-problem-package-2.0/macro-problem.el (renamed from test/automated/data/package/macro-problem-package-2.0/macro-problem.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/multi-file-0.2.3.tar (renamed from test/automated/data/package/multi-file-0.2.3.tar)bin20480 -> 20480 bytes
-rw-r--r--test/lisp/emacs-lisp/package-resources/multi-file-readme.txt (renamed from test/automated/data/package/multi-file-readme.txt)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/newer-versions/archive-contents (renamed from test/automated/data/package/newer-versions/archive-contents)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/newer-versions/new-pkg-1.0.el (renamed from test/automated/data/package/newer-versions/new-pkg-1.0.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/newer-versions/simple-single-1.4.el (renamed from test/automated/data/package/newer-versions/simple-single-1.4.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/package-test-server.py (renamed from test/automated/data/package/package-test-server.py)2
-rw-r--r--test/lisp/emacs-lisp/package-resources/signed/archive-contents (renamed from test/automated/data/package/signed/archive-contents)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/signed/archive-contents.sig (renamed from test/automated/data/package/signed/archive-contents.sig)bin287 -> 287 bytes
-rw-r--r--test/lisp/emacs-lisp/package-resources/signed/signed-bad-1.0.el (renamed from test/automated/data/package/signed/signed-bad-1.0.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/signed/signed-bad-1.0.el.sig (renamed from test/automated/data/package/signed/signed-bad-1.0.el.sig)bin287 -> 287 bytes
-rw-r--r--test/lisp/emacs-lisp/package-resources/signed/signed-good-1.0.el (renamed from test/automated/data/package/signed/signed-good-1.0.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/signed/signed-good-1.0.el.sig (renamed from test/automated/data/package/signed/signed-good-1.0.el.sig)bin287 -> 287 bytes
-rw-r--r--test/lisp/emacs-lisp/package-resources/simple-depend-1.0.el (renamed from test/automated/data/package/simple-depend-1.0.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/simple-single-1.3.el (renamed from test/automated/data/package/simple-single-1.3.el)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/simple-single-readme.txt (renamed from test/automated/data/package/simple-single-readme.txt)0
-rw-r--r--test/lisp/emacs-lisp/package-resources/simple-two-depend-1.1.el (renamed from test/automated/data/package/simple-two-depend-1.1.el)0
-rw-r--r--test/lisp/emacs-lisp/package-tests.el (renamed from test/automated/package-test.el)63
-rw-r--r--test/lisp/emacs-lisp/pcase-tests.el (renamed from test/automated/pcase-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/regexp-opt-tests.el (renamed from test/automated/regexp-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/seq-tests.el (renamed from test/automated/seq-tests.el)34
-rw-r--r--test/lisp/emacs-lisp/subr-x-tests.el (renamed from test/automated/subr-x-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/tabulated-list-test.el (renamed from test/automated/tabulated-list-test.el)0
-rw-r--r--test/lisp/emacs-lisp/thunk-tests.el (renamed from test/automated/thunk-tests.el)0
-rw-r--r--test/lisp/emacs-lisp/timer-tests.el (renamed from test/automated/timer-tests.el)0
-rw-r--r--test/lisp/emulation/viper-tests.el (renamed from test/automated/viper-tests.el)6
-rw-r--r--test/lisp/epg-tests.el (renamed from test/automated/epg-tests.el)42
-rw-r--r--test/lisp/erc/erc-track-tests.el122
-rw-r--r--test/lisp/eshell/eshell.el (renamed from test/automated/eshell.el)0
-rw-r--r--test/lisp/faces-tests.el (renamed from test/automated/faces-tests.el)0
-rw-r--r--test/lisp/filenotify-tests.el (renamed from test/automated/file-notify-tests.el)563
-rw-r--r--test/lisp/gnus/gnus-tests.el (renamed from test/automated/gnus-tests.el)0
-rw-r--r--test/lisp/gnus/message-tests.el (renamed from test/automated/message-mode-tests.el)43
-rw-r--r--test/lisp/help-fns-tests.el121
-rw-r--r--test/lisp/htmlfontify-tests.el34
-rw-r--r--test/lisp/ibuffer-tests.el34
-rw-r--r--test/lisp/imenu-tests.el (renamed from test/automated/imenu-test.el)0
-rw-r--r--test/lisp/info-xref-tests.el (renamed from test/automated/info-xref.el)0
-rw-r--r--test/lisp/international/mule-util-tests.el (renamed from test/automated/mule-util.el)0
-rw-r--r--test/lisp/international/ucs-normalize-tests.el277
-rw-r--r--test/lisp/isearch-tests.el (renamed from test/automated/isearch-tests.el)0
-rw-r--r--test/lisp/jit-lock-tests.el60
-rw-r--r--test/lisp/json-tests.el (renamed from test/automated/json-tests.el)0
-rw-r--r--test/lisp/legacy/bytecomp-tests.el (renamed from test/automated/bytecomp-tests.el)0
-rw-r--r--test/lisp/legacy/coding-tests.el (renamed from test/automated/coding-tests.el)8
-rw-r--r--test/lisp/legacy/core-elisp-tests.el (renamed from test/automated/core-elisp-tests.el)0
-rw-r--r--test/lisp/legacy/decoder-tests.el (renamed from test/automated/decoder-tests.el)0
-rw-r--r--test/lisp/legacy/files-tests.el (renamed from test/automated/files.el)0
-rw-r--r--test/lisp/legacy/font-parse-tests.el (renamed from test/automated/font-parse-tests.el)1
-rw-r--r--test/lisp/legacy/lexbind-tests.el (renamed from test/automated/lexbind-tests.el)0
-rw-r--r--test/lisp/legacy/occur-tests.el (renamed from test/automated/occur-tests.el)0
-rw-r--r--test/lisp/legacy/process-tests.el (renamed from test/automated/process-tests.el)0
-rw-r--r--test/lisp/legacy/syntax-tests.el (renamed from test/automated/syntax-tests.el)0
-rw-r--r--test/lisp/legacy/textprop-tests.el (renamed from test/automated/textprop-tests.el)0
-rw-r--r--test/lisp/legacy/undo-tests.el (renamed from test/automated/undo-tests.el)0
-rw-r--r--test/lisp/mail/rmail-tests.el (renamed from test/automated/cl-seq-tests.el)37
-rw-r--r--test/lisp/man-tests.el (renamed from test/automated/man-tests.el)0
-rw-r--r--test/lisp/minibuffer-tests.el (renamed from test/automated/completion-tests.el)0
-rw-r--r--test/lisp/mouse-tests.el50
-rw-r--r--test/lisp/net/dbus-tests.el (renamed from test/automated/dbus-tests.el)0
-rw-r--r--test/lisp/net/network-stream-tests.el294
-rw-r--r--test/lisp/net/newsticker-tests.el (renamed from test/automated/newsticker-tests.el)0
-rw-r--r--test/lisp/net/sasl-scram-rfc-tests.el (renamed from test/automated/sasl-scram-rfc-tests.el)0
-rw-r--r--test/lisp/net/shr-tests.el58
-rw-r--r--test/lisp/net/tramp-tests.el (renamed from test/automated/tramp-tests.el)384
-rw-r--r--test/lisp/obarray-tests.el (renamed from test/automated/obarray-tests.el)0
-rw-r--r--test/lisp/progmodes/cc-mode.el65
-rw-r--r--test/lisp/progmodes/compile-tests.el (renamed from test/automated/compile-tests.el)7
-rw-r--r--test/lisp/progmodes/elisp-mode-tests.el (renamed from test/automated/elisp-mode-tests.el)85
-rw-r--r--test/lisp/progmodes/f90.el (renamed from test/automated/f90.el)0
-rw-r--r--test/lisp/progmodes/flymake-resources/Makefile (renamed from test/automated/data/flymake/Makefile)0
-rw-r--r--test/lisp/progmodes/flymake-resources/test.c (renamed from test/automated/data/flymake/test.c)0
-rw-r--r--test/lisp/progmodes/flymake-resources/test.pl (renamed from test/automated/data/flymake/test.pl)0
-rw-r--r--test/lisp/progmodes/flymake-tests.el (renamed from test/automated/flymake-tests.el)2
-rw-r--r--test/lisp/progmodes/python-tests.el (renamed from test/automated/python-tests.el)0
-rw-r--r--test/lisp/progmodes/ruby-mode-tests.el (renamed from test/automated/ruby-mode-tests.el)11
-rw-r--r--test/lisp/progmodes/subword-tests.el (renamed from test/automated/subword-tests.el)0
-rw-r--r--test/lisp/progmodes/xref-tests.el (renamed from test/automated/xref-tests.el)2
-rw-r--r--test/lisp/ps-print-tests.el (renamed from lisp/obsolete/keyswap.el)34
-rw-r--r--test/lisp/replace-tests.el (renamed from test/automated/replace-tests.el)0
-rw-r--r--test/lisp/simple-tests.el (renamed from test/automated/simple-test.el)18
-rw-r--r--test/lisp/sort-tests.el (renamed from test/automated/sort-tests.el)0
-rw-r--r--test/lisp/subr-tests.el (renamed from test/automated/subr-tests.el)0
-rw-r--r--test/lisp/textmodes/css-mode-tests.el188
-rw-r--r--test/lisp/textmodes/reftex-tests.el (renamed from test/automated/reftex-tests.el)15
-rw-r--r--test/lisp/textmodes/sgml-mode-tests.el (renamed from test/automated/sgml-mode-tests.el)0
-rw-r--r--test/lisp/textmodes/tildify-tests.el (renamed from test/automated/tildify-tests.el)0
-rw-r--r--test/lisp/thingatpt-tests.el (renamed from test/automated/thingatpt.el)0
-rw-r--r--test/lisp/url/url-auth-tests.el255
-rw-r--r--test/lisp/url/url-expand-tests.el (renamed from test/automated/url-expand-tests.el)0
-rw-r--r--test/lisp/url/url-future-tests.el (renamed from test/automated/url-future-tests.el)0
-rw-r--r--test/lisp/url/url-parse-tests.el (renamed from test/automated/url-parse-tests.el)0
-rw-r--r--test/lisp/url/url-util-tests.el (renamed from test/automated/url-util-tests.el)0
-rw-r--r--test/lisp/vc/add-log-tests.el (renamed from test/automated/add-log-tests.el)0
-rw-r--r--test/lisp/vc/vc-bzr-tests.el (renamed from test/automated/vc-bzr.el)8
-rw-r--r--test/lisp/vc/vc-hg.el (renamed from test/automated/vc-hg.el)0
-rw-r--r--test/lisp/vc/vc-tests.el (renamed from test/automated/vc-tests.el)229
-rw-r--r--test/lisp/xml-tests.el (renamed from test/automated/xml-parse-tests.el)0
-rw-r--r--test/lisp/xt-mouse-tests.el (renamed from test/automated/xt-mouse-tests.el)0
-rw-r--r--test/make-test-deps.emacs-lisp98
-rw-r--r--test/manual/BidiCharacterTest.txt (renamed from test/BidiCharacterTest.txt)0
-rw-r--r--test/manual/biditest.el (renamed from test/biditest.el)0
-rw-r--r--test/manual/cedet/cedet-utests.el (renamed from test/cedet/cedet-utests.el)0
-rw-r--r--test/manual/cedet/ede-tests.el (renamed from test/cedet/ede-tests.el)0
-rw-r--r--test/manual/cedet/semantic-ia-utest.el (renamed from test/cedet/semantic-ia-utest.el)0
-rw-r--r--test/manual/cedet/semantic-tests.el (renamed from test/cedet/semantic-tests.el)0
-rw-r--r--test/manual/cedet/semantic-utest-c.el (renamed from test/cedet/semantic-utest-c.el)0
-rw-r--r--test/manual/cedet/semantic-utest.el (renamed from test/cedet/semantic-utest.el)0
-rw-r--r--test/manual/cedet/srecode-tests.el (renamed from test/cedet/srecode-tests.el)0
-rw-r--r--test/manual/cedet/tests/test.c (renamed from test/cedet/tests/test.c)0
-rw-r--r--test/manual/cedet/tests/test.el (renamed from test/cedet/tests/test.el)2
-rw-r--r--test/manual/cedet/tests/test.make (renamed from test/cedet/tests/test.make)0
-rw-r--r--test/manual/cedet/tests/testdoublens.cpp (renamed from test/cedet/tests/testdoublens.cpp)0
-rw-r--r--test/manual/cedet/tests/testdoublens.hpp (renamed from test/cedet/tests/testdoublens.hpp)0
-rw-r--r--test/manual/cedet/tests/testfriends.cpp (renamed from test/cedet/tests/testfriends.cpp)0
-rw-r--r--test/manual/cedet/tests/testjavacomp.java (renamed from test/cedet/tests/testjavacomp.java)0
-rw-r--r--test/manual/cedet/tests/testnsp.cpp (renamed from test/cedet/tests/testnsp.cpp)0
-rw-r--r--test/manual/cedet/tests/testpolymorph.cpp (renamed from test/cedet/tests/testpolymorph.cpp)0
-rw-r--r--test/manual/cedet/tests/testspp.c (renamed from test/cedet/tests/testspp.c)0
-rw-r--r--test/manual/cedet/tests/testsppcomplete.c (renamed from test/cedet/tests/testsppcomplete.c)0
-rw-r--r--test/manual/cedet/tests/testsppreplace.c (renamed from test/cedet/tests/testsppreplace.c)0
-rw-r--r--test/manual/cedet/tests/testsppreplaced.c (renamed from test/cedet/tests/testsppreplaced.c)0
-rw-r--r--test/manual/cedet/tests/testsubclass.cpp (renamed from test/cedet/tests/testsubclass.cpp)0
-rw-r--r--test/manual/cedet/tests/testsubclass.hh (renamed from test/cedet/tests/testsubclass.hh)0
-rw-r--r--test/manual/cedet/tests/testtypedefs.cpp (renamed from test/cedet/tests/testtypedefs.cpp)0
-rw-r--r--test/manual/cedet/tests/testvarnames.c (renamed from test/cedet/tests/testvarnames.c)0
-rw-r--r--test/manual/etags/CTAGS.good (renamed from test/etags/CTAGS.good)0
-rw-r--r--test/manual/etags/ETAGS.good_1 (renamed from test/etags/ETAGS.good_1)0
-rw-r--r--test/manual/etags/ETAGS.good_2 (renamed from test/etags/ETAGS.good_2)0
-rw-r--r--test/manual/etags/ETAGS.good_3 (renamed from test/etags/ETAGS.good_3)0
-rw-r--r--test/manual/etags/ETAGS.good_4 (renamed from test/etags/ETAGS.good_4)0
-rw-r--r--test/manual/etags/ETAGS.good_5 (renamed from test/etags/ETAGS.good_5)0
-rw-r--r--test/manual/etags/ETAGS.good_6 (renamed from test/etags/ETAGS.good_6)0
-rw-r--r--test/manual/etags/Makefile (renamed from test/etags/Makefile)4
-rw-r--r--test/manual/etags/a-src/empty.zz (renamed from test/etags/a-src/empty.zz)0
-rw-r--r--test/manual/etags/a-src/empty.zz.gz (renamed from test/etags/a-src/empty.zz.gz)0
-rw-r--r--test/manual/etags/ada-src/2ataspri.adb (renamed from test/etags/ada-src/2ataspri.adb)0
-rw-r--r--test/manual/etags/ada-src/2ataspri.ads (renamed from test/etags/ada-src/2ataspri.ads)0
-rw-r--r--test/manual/etags/ada-src/etags-test-for.ada (renamed from test/etags/ada-src/etags-test-for.ada)0
-rw-r--r--test/manual/etags/ada-src/waroquiers.ada (renamed from test/etags/ada-src/waroquiers.ada)0
-rw-r--r--test/manual/etags/c-src/a/b/b.c (renamed from test/etags/c-src/a/b/b.c)0
-rw-r--r--test/manual/etags/c-src/abbrev.c (renamed from test/etags/c-src/abbrev.c)0
-rw-r--r--test/manual/etags/c-src/c.c (renamed from test/etags/c-src/c.c)0
-rw-r--r--test/manual/etags/c-src/dostorture.c (renamed from test/etags/c-src/dostorture.c)0
-rw-r--r--test/manual/etags/c-src/emacs/src/gmalloc.c (renamed from test/etags/c-src/emacs/src/gmalloc.c)0
-rw-r--r--test/manual/etags/c-src/emacs/src/keyboard.c (renamed from test/etags/c-src/emacs/src/keyboard.c)0
-rw-r--r--test/manual/etags/c-src/emacs/src/lisp.h (renamed from test/etags/c-src/emacs/src/lisp.h)0
-rw-r--r--test/manual/etags/c-src/emacs/src/regex.h (renamed from test/etags/c-src/emacs/src/regex.h)0
-rw-r--r--test/manual/etags/c-src/etags.c (renamed from test/etags/c-src/etags.c)0
-rw-r--r--test/manual/etags/c-src/exit.c (renamed from test/etags/c-src/exit.c)0
-rw-r--r--test/manual/etags/c-src/exit.strange_suffix (renamed from test/etags/c-src/exit.strange_suffix)0
-rw-r--r--test/manual/etags/c-src/fail.c (renamed from test/etags/c-src/fail.c)0
-rw-r--r--test/manual/etags/c-src/getopt.h (renamed from test/etags/c-src/getopt.h)0
-rw-r--r--test/manual/etags/c-src/h.h (renamed from test/etags/c-src/h.h)0
-rw-r--r--test/manual/etags/c-src/machsyscalls.c (renamed from test/etags/c-src/machsyscalls.c)0
-rw-r--r--test/manual/etags/c-src/machsyscalls.h (renamed from test/etags/c-src/machsyscalls.h)0
-rw-r--r--test/manual/etags/c-src/sysdep.h (renamed from test/etags/c-src/sysdep.h)0
-rw-r--r--test/manual/etags/c-src/tab.c (renamed from test/etags/c-src/tab.c)0
-rw-r--r--test/manual/etags/c-src/torture.c (renamed from test/etags/c-src/torture.c)0
-rw-r--r--test/manual/etags/cp-src/MDiagArray2.h (renamed from test/etags/cp-src/MDiagArray2.h)0
-rw-r--r--test/manual/etags/cp-src/Range.h (renamed from test/etags/cp-src/Range.h)0
-rw-r--r--test/manual/etags/cp-src/burton.cpp (renamed from test/etags/cp-src/burton.cpp)0
-rw-r--r--test/manual/etags/cp-src/c.C (renamed from test/etags/cp-src/c.C)0
-rw-r--r--test/manual/etags/cp-src/clheir.cpp.gz (renamed from test/etags/cp-src/clheir.cpp.gz)bin408 -> 408 bytes
-rw-r--r--test/manual/etags/cp-src/clheir.hpp (renamed from test/etags/cp-src/clheir.hpp)0
-rw-r--r--test/manual/etags/cp-src/conway.cpp (renamed from test/etags/cp-src/conway.cpp)0
-rw-r--r--test/manual/etags/cp-src/conway.hpp (renamed from test/etags/cp-src/conway.hpp)0
-rw-r--r--test/manual/etags/cp-src/fail.C (renamed from test/etags/cp-src/fail.C)0
-rw-r--r--test/manual/etags/cp-src/functions.cpp (renamed from test/etags/cp-src/functions.cpp)6
-rw-r--r--test/manual/etags/cp-src/screen.cpp (renamed from test/etags/cp-src/screen.cpp)0
-rw-r--r--test/manual/etags/cp-src/screen.hpp (renamed from test/etags/cp-src/screen.hpp)0
-rw-r--r--test/manual/etags/cp-src/x.cc (renamed from test/etags/cp-src/x.cc)0
-rw-r--r--test/manual/etags/el-src/TAGTEST.EL (renamed from test/etags/el-src/TAGTEST.EL)0
-rw-r--r--test/manual/etags/el-src/emacs/lisp/progmodes/etags.el (renamed from test/etags/el-src/emacs/lisp/progmodes/etags.el)0
-rw-r--r--test/manual/etags/erl-src/gs_dialog.erl (renamed from test/etags/erl-src/gs_dialog.erl)0
-rw-r--r--test/manual/etags/f-src/entry.for (renamed from test/etags/f-src/entry.for)0
-rw-r--r--test/manual/etags/f-src/entry.strange.gz (renamed from test/etags/f-src/entry.strange.gz)bin3265 -> 3265 bytes
-rw-r--r--test/manual/etags/f-src/entry.strange_suffix (renamed from test/etags/f-src/entry.strange_suffix)0
-rw-r--r--test/manual/etags/forth-src/test-forth.fth (renamed from test/etags/forth-src/test-forth.fth)0
-rw-r--r--test/manual/etags/html-src/algrthms.html (renamed from test/etags/html-src/algrthms.html)0
-rw-r--r--test/manual/etags/html-src/index.shtml (renamed from test/etags/html-src/index.shtml)0
-rw-r--r--test/manual/etags/html-src/software.html (renamed from test/etags/html-src/software.html)2
-rw-r--r--test/manual/etags/html-src/softwarelibero.html (renamed from test/etags/html-src/softwarelibero.html)0
-rw-r--r--test/manual/etags/lua-src/allegro.lua (renamed from test/etags/lua-src/allegro.lua)0
-rw-r--r--test/manual/etags/lua-src/test.lua (renamed from test/etags/lua-src/test.lua)0
-rw-r--r--test/manual/etags/make-src/Makefile (renamed from test/etags/make-src/Makefile)0
-rw-r--r--test/manual/etags/objc-src/PackInsp.h (renamed from test/etags/objc-src/PackInsp.h)0
-rw-r--r--test/manual/etags/objc-src/PackInsp.m (renamed from test/etags/objc-src/PackInsp.m)0
-rw-r--r--test/manual/etags/objc-src/Subprocess.h (renamed from test/etags/objc-src/Subprocess.h)0
-rw-r--r--test/manual/etags/objc-src/Subprocess.m (renamed from test/etags/objc-src/Subprocess.m)0
-rw-r--r--test/manual/etags/objcpp-src/SimpleCalc.H (renamed from test/etags/objcpp-src/SimpleCalc.H)0
-rw-r--r--test/manual/etags/objcpp-src/SimpleCalc.M (renamed from test/etags/objcpp-src/SimpleCalc.M)0
-rw-r--r--test/manual/etags/pas-src/common.pas (renamed from test/etags/pas-src/common.pas)0
-rw-r--r--test/manual/etags/perl-src/htlmify-cystic (renamed from test/etags/perl-src/htlmify-cystic)0
-rw-r--r--test/manual/etags/perl-src/kai-test.pl (renamed from test/etags/perl-src/kai-test.pl)0
-rw-r--r--test/manual/etags/perl-src/yagrip.pl (renamed from test/etags/perl-src/yagrip.pl)0
-rw-r--r--test/manual/etags/php-src/lce_functions.php (renamed from test/etags/php-src/lce_functions.php)0
-rw-r--r--test/manual/etags/php-src/ptest.php (renamed from test/etags/php-src/ptest.php)0
-rw-r--r--test/manual/etags/php-src/sendmail.php (renamed from test/etags/php-src/sendmail.php)0
-rw-r--r--test/manual/etags/prol-src/natded.prolog (renamed from test/etags/prol-src/natded.prolog)0
-rw-r--r--test/manual/etags/prol-src/ordsets.prolog (renamed from test/etags/prol-src/ordsets.prolog)0
-rw-r--r--test/manual/etags/ps-src/rfc1245.ps (renamed from test/etags/ps-src/rfc1245.ps)0
-rw-r--r--test/manual/etags/pyt-src/server.py (renamed from test/etags/pyt-src/server.py)0
-rw-r--r--test/manual/etags/ruby-src/test.rb (renamed from test/etags/ruby-src/test.rb)0
-rw-r--r--test/manual/etags/ruby-src/test1.ruby29
-rw-r--r--test/manual/etags/tex-src/gzip.texi (renamed from test/etags/tex-src/gzip.texi)0
-rw-r--r--test/manual/etags/tex-src/nonewline.tex (renamed from test/etags/tex-src/nonewline.tex)0
-rw-r--r--test/manual/etags/tex-src/testenv.tex (renamed from test/etags/tex-src/testenv.tex)0
-rw-r--r--test/manual/etags/tex-src/texinfo.tex (renamed from test/etags/tex-src/texinfo.tex)0
-rw-r--r--test/manual/etags/y-src/atest.y (renamed from test/etags/y-src/atest.y)0
-rw-r--r--test/manual/etags/y-src/cccp.c (renamed from test/etags/y-src/cccp.c)0
-rw-r--r--test/manual/etags/y-src/cccp.y (renamed from test/etags/y-src/cccp.y)0
-rw-r--r--test/manual/etags/y-src/parse.c (renamed from test/etags/y-src/parse.c)0
-rw-r--r--test/manual/etags/y-src/parse.y (renamed from test/etags/y-src/parse.y)0
-rw-r--r--test/manual/indent/Makefile (renamed from test/indent/Makefile)0
-rw-r--r--test/manual/indent/css-mode.css (renamed from test/indent/css-mode.css)0
-rw-r--r--test/manual/indent/js-indent-init-dynamic.js (renamed from test/indent/js-indent-init-dynamic.js)0
-rw-r--r--test/manual/indent/js-indent-init-t.js (renamed from test/indent/js-indent-init-t.js)0
-rw-r--r--test/manual/indent/js-jsx.js (renamed from test/indent/js-jsx.js)0
-rw-r--r--test/manual/indent/js.js (renamed from test/indent/js.js)0
-rw-r--r--test/manual/indent/latex-mode.tex (renamed from test/indent/latex-mode.tex)0
-rw-r--r--test/manual/indent/modula2.mod (renamed from test/indent/modula2.mod)0
-rw-r--r--test/manual/indent/nxml.xml (renamed from test/indent/nxml.xml)0
-rw-r--r--test/manual/indent/octave.m (renamed from test/indent/octave.m)0
-rw-r--r--test/manual/indent/pascal.pas (renamed from test/indent/pascal.pas)0
-rwxr-xr-xtest/manual/indent/perl.perl (renamed from test/indent/perl.perl)0
-rw-r--r--test/manual/indent/prolog.prolog (renamed from test/indent/prolog.prolog)0
-rw-r--r--test/manual/indent/ps-mode.ps (renamed from test/indent/ps-mode.ps)0
-rw-r--r--test/manual/indent/ruby.rb (renamed from test/indent/ruby.rb)0
-rw-r--r--test/manual/indent/scheme.scm (renamed from test/indent/scheme.scm)0
-rw-r--r--test/manual/indent/scss-mode.scss (renamed from test/indent/scss-mode.scss)0
-rw-r--r--test/manual/indent/sgml-mode-attribute.html (renamed from test/indent/sgml-mode-attribute.html)0
-rwxr-xr-xtest/manual/indent/shell.rc (renamed from test/indent/shell.rc)0
-rwxr-xr-xtest/manual/indent/shell.sh (renamed from test/indent/shell.sh)0
-rw-r--r--test/manual/redisplay-testsuite.el (renamed from test/redisplay-testsuite.el)0
-rw-r--r--test/manual/rmailmm.el (renamed from test/rmailmm.el)0
-rw-r--r--test/src/alloc-tests.el (renamed from test/automated/finalizer-tests.el)2
-rw-r--r--test/src/buffer-tests.el (renamed from test/automated/buffer-tests.el)0
-rw-r--r--test/src/callproc-tests.el39
-rw-r--r--test/src/chartab-tests.el51
-rw-r--r--test/src/cmds-tests.el (renamed from test/automated/cmds-tests.el)0
-rw-r--r--test/src/data-tests.el (renamed from test/automated/data-tests.el)0
-rw-r--r--test/src/decompress-tests.el (renamed from test/automated/zlib-tests.el)6
-rw-r--r--test/src/doc-tests.el92
-rw-r--r--test/src/editfns-tests.el136
-rw-r--r--test/src/fns-tests.el (renamed from test/automated/fns-tests.el)54
-rw-r--r--test/src/inotify-tests.el (renamed from test/automated/inotify-test.el)0
-rw-r--r--test/src/keymap-tests.el (renamed from test/automated/keymap-tests.el)0
-rw-r--r--test/src/lread-tests.el107
-rw-r--r--test/src/print-tests.el (renamed from test/automated/print-tests.el)0
-rw-r--r--test/src/regex-resources/BOOST.tests829
-rw-r--r--test/src/regex-resources/PCRE.tests2386
-rw-r--r--test/src/regex-resources/PTESTS341
-rw-r--r--test/src/regex-resources/TESTS167
-rw-r--r--test/src/regex-tests.el678
-rw-r--r--test/src/xml-tests.el (renamed from test/automated/libxml-tests.el)0
1154 files changed, 74336 insertions, 49251 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
index 9853d7b5d8..8a4a348ebd 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -1,7 +1,8 @@
((nil . ((tab-width . 8)
(sentence-end-double-space . t)
(fill-column . 70)))
- (c-mode . ((c-file-style . "GNU")))
+ (c-mode . ((c-file-style . "GNU")
+ (c-noise-macro-names . ("UNINIT"))))
(objc-mode . ((c-file-style . "GNU")))
(log-edit-mode . ((log-edit-font-lock-gnu-style . t)
(log-edit-setup-add-author . t)))
diff --git a/.gitattributes b/.gitattributes
index 5ccf9a5eab..13e58a87e9 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -47,6 +47,52 @@ doc/misc/texinfo.tex -whitespace=blank-at-eol
*.tiff binary
etc/e/eterm-color binary
+# Git's builtin diff hunk header styles.
+*.ada diff=ada
+*.[ch] diff=cpp
+*.cc diff=cpp
+*.cpp diff=cpp
+*.hh diff=cpp
+*.for diff=fortran
+*.html diff=html
+*.shtml diff=html
+*.xml diff=html
+*.java diff=java
+*.m diff=objc
+*.perl diff=perl
+*.pl diff=perl
+*.php diff=php
+*.py diff=python
+*.rb diff=ruby
+*.ruby diff=ruby
+*.tex diff=tex
+
# Hooks for non-default diff hunk headers; see autogen.sh.
*.el diff=elisp
+*.ac diff=m4
+*.m4 diff=m4
+*.mk diff=make
+*[Mm]akefile diff=make
+Makefile.in diff=make
+*.sh diff=shell
*.texi diff=texinfo
+#
+# Diff hunk header special-case file names.
+admin/build-configs diff=perl
+admin/charsets/mapconv diff=shell
+admin/diff-tar-files diff=shell
+admin/make-emacs diff=perl
+admin/merge-gnulib diff=shell
+admin/merge-pkg-config diff=shell
+admin/quick-install-emacs diff=shell
+admin/update-copyright diff=shell
+admin/update_autogen diff=shell
+build-aux/git-hooks/commit-msg diff=shell
+build-aux/git-hooks/pre-commit diff=shell
+build-aux/gitlog-to-emacslog diff=shell
+build-aux/make-info-dir diff=shell
+build-aux/move-if-change diff=shell
+build-aux/msys-to-w32 diff=shell
+build-aux/update-subdirs diff=shell
+lib-src/rcs2log diff=shell
+/make-dist diff=shell
diff --git a/.gitignore b/.gitignore
index 7c8b74336d..a81a515c72 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,10 +43,10 @@ Makefile
makefile
!etc/refcards/Makefile
!modules/mod-test/Makefile
-!test/automated/data/flymake/Makefile
-!test/indent/Makefile
-!test/etags/Makefile
-!test/etags/make-src/Makefile
+!test/lisp/progmodes/flymake-resources/Makefile
+!test/manual/indent/Makefile
+!test/manual/etags/Makefile
+!test/manual/etags/make-src/Makefile
/*.cache
/confdefs.h
/config.status
@@ -82,8 +82,6 @@ src/lisp.mk
# Lisp-level sources built by 'make'.
*cus-load.el
*loaddefs.el
-leim/changed.misc
-leim/changed.tit
lisp/cedet/semantic/bovine/c-by.el
lisp/cedet/semantic/bovine/make-by.el
lisp/cedet/semantic/bovine/scm-by.el
@@ -116,6 +114,7 @@ lisp/leim/quail/quick-b5.el
lisp/leim/quail/quick-cns.el
lisp/leim/quail/tsang-b5.el
lisp/leim/quail/tsang-cns.el
+lisp/mh-e/mh-autoloads.el
lisp/subdirs.el
# Dependencies.
@@ -136,26 +135,28 @@ src/stamp-h1
# Object files and debugging.
*.a
*.dSYM/
+*.dll
*.core
*.elc
*.o
*.res
*.so
-*.dll
[0-9]*.core
core
core.*[0-9]
+gmon.out
oo/
oo-spd/
src/*.map
# Tests.
test/indent/*.new
-test/biditest.txt
-test/etags/srclist
-test/etags/regexfile
-test/etags/ETAGS
-test/etags/CTAGS
+test/make-test-deps.mk
+test/manual/biditest.txt
+test/manual/etags/srclist
+test/manual/etags/regexfile
+test/manual/etags/ETAGS
+test/manual/etags/CTAGS
# ctags, etags.
TAGS
diff --git a/CONTRIBUTE b/CONTRIBUTE
index a70682f29a..9d5d775a5e 100644
--- a/CONTRIBUTE
+++ b/CONTRIBUTE
@@ -233,6 +233,17 @@ above, are recorded by the tracker with the corresponding bugs/issues.
GNU ELPA has a 'debbugs' package that allows accessing the tracker
database from Emacs.
+Bugs needs regular attention. A large backlog of bugs is
+disheartening to the developers, and a culture of ignoring bugs is
+harmful to users, who expect software that works. Bugs have to be
+regularly looked at and acted upon. Not all bugs are critical, but at
+the least, each bug needs to be regularly re-reviewed to make sure it
+is still reproducible.
+
+The process of going through old or new bugs and acting on them is
+called bug triage. This process is described in the file
+admin/notes/bug-triage.
+
** Documenting your changes
Any change that matters to end-users should have an entry in etc/NEWS.
@@ -264,10 +275,9 @@ If your test lasts longer than some few seconds, mark it in its
'ert-deftest' definition with ":tags '(:expensive-test)".
To run tests on the entire Emacs tree, run "make check" from the
-top-level directory. Most tests are in the directory
-"test/automated". From the "test/automated" directory, run "make
-<filename>" to run the tests for <filename>.el(c). See "test/README"
-for more information.
+top-level directory. Most tests are in the directory "test/". From
+the "test/" directory, run "make <filename>" to run the tests for
+<filename>.el(c). See "test/README" for more information.
** Understanding Emacs internals
diff --git a/ChangeLog.2 b/ChangeLog.2
index f2964efcde..7e2f5819c3 100644
--- a/ChangeLog.2
+++ b/ChangeLog.2
@@ -1,22 +1,22 @@
-2016-07-24 Nicolas Petton <nicolas@petton.fr>
+2016-08-05 Nicolas Petton <nicolas@petton.fr>
* admin/authors.el (authors-valid-file-names): Addition.
-2016-07-23 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Warn about Cairo-related problems
* etc/NEWS: Warn about known problems in the Cairo build.
(Bug#23925)
-2016-07-23 Paul Pogonyshev <pogonyshev@gmail.com>
+2016-08-05 Paul Pogonyshev <pogonyshev@gmail.com>
Don't let completion break `declare' handling
* lisp/progmodes/elisp-mode.el (elisp-completion-at-point): Fix to not alter
`defun-declarations-alist' by side effect (Bug #23648).
-2016-07-23 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Adjust match data before calling after-change-funs
@@ -33,20 +33,20 @@
(Freplace_match): Remove match data adjustment code, pass 1 for
ADJUST_MATCH_DATA to replace_range instead.
-2016-07-21 Mark Oteiza <mvoteiza@udel.edu>
+2016-08-05 Mark Oteiza <mvoteiza@udel.edu>
Do not show string-rectangle preview if minibuffer is empty
* lisp/rect.el (rectangle--string-preview): Remove condition that sets
preview string to the default replacement string.
-2016-07-21 Achim Gratz <Stromeko@nexgo.de>
+2016-08-05 Achim Gratz <Stromeko@nexgo.de>
* etc/PROBLEMS: Add entry about selection problems under Plasma 5.
Bug#24013
-2016-07-21 Paul Eggert <eggert@cs.ucla.edu>
+2016-08-05 Paul Eggert <eggert@cs.ucla.edu>
Port to glibc 2.24 (pre-release) + ppc64
@@ -57,14 +57,14 @@
Special case for __PPC64__, which needs ASLR disabled in
dumped Emacs too.
-2016-07-21 Katsumi Yamaoka <yamaoka@jpl.org>
+2016-08-05 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/net/shr.el (shr-fill-line): Withdraw the last commit (4157159).
* lisp/net/shr.el (shr-fill-line):
Preserve text properties in folded lines (bug#24034).
-2016-07-17 Robert Cochran <robert-git@cochranmail.com> (tiny change)
+2016-08-05 Robert Cochran <robert-git@cochranmail.com> (tiny change)
Expand FIXME near definition of fboundp
@@ -75,21 +75,21 @@
* src/data.c (fboundp): Note potential backwards compatibility issues in
FIXME.
-2016-07-17 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
kill-rectangle should mention killed-rectangle
* lisp/rect.el (kill-rectangle): Mention `killed-rectangle' in docstring
and warning message, rather than kill ring (Bug#19773).
-2016-07-16 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations in nhexl-mode
* src/bidi.c (bidi_resolve_neutral): Convert an assertion to real
code executed in all builds. (Bug#24001)
-2016-07-15 Fredrik Bergroth <fbergroth@gmail.com> (tiny change)
+2016-08-05 Fredrik Bergroth <fbergroth@gmail.com> (tiny change)
Use memmove instead of memcpy on overlapping regions
@@ -100,7 +100,7 @@
This is a backport from trunk.
(cherry picked from commit 354f9f0fc6cc05ed98883447f9b2f37943d79160)
-2016-07-15 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Document buffer-swap-text+save-excursion interaction
@@ -108,7 +108,7 @@
* src/buffer.c (Fbuffer_swap_text): Add warning about interaction of
`buffer-swap-text' and `save-excursion' (Bug #4655).
-2016-07-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
Fix eieio vs cl-generic incompatibilities found in Rudel (bug#23947)
@@ -118,14 +118,14 @@
* lisp/emacs-lisp/eieio-core.el (eieio--class-precedence-c3):
`class' is not a symbol but a class object.
-2016-07-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
Include cl-generic in package--builtin-versions (bug#22817)
* lisp/emacs-lisp/cl-generic.el (package--builtin-versions):
Add ourselves manually. Don't merge since there's a better fix on master.
-2016-07-14 Michael Albinus <michael.albinus@gmx.de>
+2016-08-05 Michael Albinus <michael.albinus@gmx.de>
Improve timing in `tramp-test29-environment-variables'
@@ -134,7 +134,7 @@
Add additional `accept-process-output' call.
(tramp-test29-environment-variables): Remove additional sleep calls.
-2016-07-14 Michael Albinus <michael.albinus@gmx.de>
+2016-08-05 Michael Albinus <michael.albinus@gmx.de>
Add test for handling environment variables in Tramp
@@ -152,12 +152,12 @@
(tramp-test34-asynchronous-requests)
(tramp-test35-recursive-load, tramp-test36-unload): Rename.
-2016-07-13 Glenn Morris <rgm@gnu.org>
+2016-08-05 Glenn Morris <rgm@gnu.org>
* lisp/emacs-lisp/package.el (describe-package-1)
(package-status-external): Fix face references. (Bug#23927)
-2016-07-12 Stephen Berman <stephen.berman@gmx.net>
+2016-08-05 Stephen Berman <stephen.berman@gmx.net>
Improve documentation of search functions
@@ -178,7 +178,7 @@
the fourth parameter of the *-search-{forward,backward} functions
and improve documentation as described above.
-2016-07-12 Michael Albinus <michael.albinus@gmx.de>
+2016-08-05 Michael Albinus <michael.albinus@gmx.de>
Delete environment variables in Tramp when needed
@@ -186,7 +186,7 @@
(tramp-sh-handle-start-file-process)
(tramp-sh-handle-process-file, ): Use it. (Bug#23952)
-2016-07-12 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Add "New in Emacs 25" section to the FAQ
@@ -195,7 +195,7 @@
(New in Emacs 25): New node.
(Status of Emacs): Add it to the menu.
-2016-07-10 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Fix 'vertical-motion' in non-interactive sessions
@@ -207,35 +207,35 @@
http://lists.gnu.org/archive/html/emacs-devel/2016-07/msg00500.html
for the details.
-2016-07-10 Andreas Schwab <schwab@linux-m68k.org>
+2016-08-05 Andreas Schwab <schwab@linux-m68k.org>
Fix memory leak in imagemagick-types
* src/image.c (Fimagemagick_types): Use AcquireExceptionInfo to
avoid memory leak.
-2016-07-10 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Update ELisp manual to match 'string-collate-equalp' doc string
* doc/lispref/strings.texi (Text Comparison): Remove reference to
sorting from the description of 'string-collate-equalp'. (Bug#23902)
-2016-07-09 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Clarify docstring of find-feature-regexp
* lisp/emacs-lisp/find-func.el (find-feature-regexp): Explain that `%s'
is optional (Bug #23520).
-2016-07-09 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Add details to cl-lib defining macros' docstrings
* lisp/emacs-lisp/cl-macs.el (cl-defun, cl-defmacro): Add terse summary
of supported arglist forms (Bug #22462).
-2016-07-09 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Clarify doc string of 'save-buffer'
@@ -243,21 +243,21 @@
made even if this command is invoked with 2 or 3 "C-u"s.
(Bug#3702)
-2016-07-08 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Un-confuse doc string of 'string-collate-equalp'
* src/fns.c (Fstring_collate_equalp): Remove confusing text from
doc string. (Bug#23902)
-2016-07-07 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Clarify documentation of 'mouse-on-link-p'
* lisp/mouse.el (mouse-on-link-p): Clarify the form of the POS
argument. (Bug#23899)
-2016-07-06 Phillip Lord <phillip.lord@russet.org.uk>
+2016-08-05 Phillip Lord <phillip.lord@russet.org.uk>
Fix missing undo-boundary on revert-buffer.
@@ -269,13 +269,13 @@
Do not merge to master as c98bc98 also addresses the same bug.
-2016-07-06 Martin Rudalics <rudalics@gmx.at>
+2016-08-05 Martin Rudalics <rudalics@gmx.at>
Amend last addition to etc/PROBLEMS
* etc/PROBLEMS: Mention GTK+ problem with unexpected frame widenings
-2016-07-06 Paul Eggert <eggert@cs.ucla.edu>
+2016-08-05 Paul Eggert <eggert@cs.ucla.edu>
Fix open-network-stream responsiveness
@@ -286,7 +286,7 @@
when wait == INFINITY and got_output_end_time is invalid.
In this case the code should break, not continue.
-2016-07-05 Phillip Lord <phillip.lord@russet.org.uk>
+2016-08-05 Phillip Lord <phillip.lord@russet.org.uk>
Fix missing point information in undo
@@ -300,7 +300,7 @@
Addresses Bug# 21722
-2016-07-04 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Avoid crashes when buffer modification hooks clobber match data
@@ -309,7 +309,7 @@
and upcase-initials-region clobber the match data needed to be
adjusted for the replacement. (Bug#23869)
-2016-07-03 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Note combine-and-quote-strings doesn't shell quote
@@ -318,21 +318,21 @@
combine-and-quote-strings doesn't protect arguments against shell
evaluation (Bug #20333).
-2016-07-03 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Explain when package-initialize isn't called
* doc/lispref/os.texi (Startup Summary): Explain that package-initialize
is not called when options -q, -Q, or --batch were passed (Bug #19151).
-2016-07-03 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Fix escaping in sh-indent-after-continuation docstr
* lisp/progmodes/sh-script.el (sh-indent-after-continuation): Properly
escape backslashes in docstring (Bug#23046).
-2016-07-02 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Clarify the documentation of back-references in replacements
@@ -342,7 +342,7 @@
* lisp/replace.el (query-replace-regexp)
(query-replace-regexp-eval, replace-regexp): Doc fix (Bug#23884)
-2016-07-01 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Clarify lexical binding with symbol args behavior
@@ -352,15 +352,15 @@
defmacro, this no longer applies since 61b108cc 2012-05-29 "*
lisp/emacs-lisp/byte-run.el (defmacro, defun): Move from C...".
-2016-06-30 Michael Albinus <michael.albinus@gmx.de>
+2016-08-05 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp-sh.el (tramp-remote-path): Doc fix.
-2016-06-29 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
* lisp/net/tramp-sh.el (tramp-remote-path): Doc fix. (Bug#23865)
-2016-06-29 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations when rendering some fonts
@@ -368,25 +368,25 @@
high" if its pixel_size value is zero. This avoids assertion
violations at the end of x_produce_glyphs.
-2016-06-28 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Document more details of package activation
* doc/emacs/package.texi (Package Installation): Explain that package
activation adds to load-path (Bug #21704).
-2016-06-28 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Fixup warning message regarding HOME a bit more
* src/w32.c (init_environment): The manual section title is "Windows
HOME" (Bug #11612). Move newline so warning fits in 80 character lines.
-2016-06-27 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
* lisp/leim/quail/indian.el ("bengali-probhat"): Change indicator to BngPB.
-2016-06-27 Michael Albinus <michael.albinus@gmx.de>
+2016-08-05 Michael Albinus <michael.albinus@gmx.de>
Fix input method "probhat" for Bengali
@@ -394,14 +394,14 @@
* lisp/leim/quail/indian.el ("bengali-probhat"): Fix entry.
-2016-06-27 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Add to elisp-completion-at-point's docstring
* lisp/progmodes/elisp-mode.el (elisp-completion-at-point): Document
position dependent behavior (Bug #19854).
-2016-06-27 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Eli Zaretskii <eliz@gnu.org>
Give more helpful warning about setting HOME
@@ -409,7 +409,7 @@
* src/w32.c (init_environment): Improve warning message that pops when
Emacs sets HOME according to existence of C:\.emacs (Bug #11612).
-2016-06-26 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Fix slow redisplay in term-mode
@@ -419,7 +419,7 @@
is solved in bidi.c by changing the regexps that delimit a
paragraph. (Bug#23801)
-2016-06-26 উৎসব রায় <uroybd@gmail.com>
+2016-08-05 উৎসব রায় <uroybd@gmail.com>
New input method "probhat" for Bengali
@@ -428,7 +428,7 @@
* etc/NEWS: Mention the new input method.
-2016-06-25 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Drew Adams <drew.adams@oracle.com>
Update docs for `customize-mode'
@@ -440,7 +440,7 @@
customize-mode being experimental; it has been around since Emacs
22 (Bug #11299).
-2016-06-23 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Fix documentation of 'assoc-string' and 'compare-strings'
@@ -454,7 +454,7 @@
the description of how IGNORE-CASE affects the comparison in
'compare-strings'.
-2016-06-22 Dmitry Gutov <dgutov@yandex.ru>
+2016-08-05 Dmitry Gutov <dgutov@yandex.ru>
Error on multibyte characters in HTTP request
@@ -462,19 +462,19 @@
constructed request in the end to verify that it does not contain
multibyte characters (bug#23750).
-2016-06-22 Katsumi Yamaoka <yamaoka@jpl.org>
+2016-08-05 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/gnus/mm-decode.el (mm-convert-shr-links):
Mask keys that launch `widget-button-click' (bug#22157).
-2016-06-22 Dmitry Gutov <dgutov@yandex.ru>
+2016-08-05 Dmitry Gutov <dgutov@yandex.ru>
Unset GIT_DIR when calling Git commands
* lisp/vc/vc-git.el (vc-git--call, vc-git-command):
Unset GIT_DIR (bug#23769).
-2016-06-21 Phillip Lord <phillip.lord@russet.org.uk>
+2016-08-05 Phillip Lord <phillip.lord@russet.org.uk>
Ensure undo-boundary after insert-file-contents.
@@ -482,28 +482,28 @@
Addresses Bug #23785.
-2016-06-21 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Clarify documentation of 'line-spacing' and 'line-height'
* doc/lispref/display.texi (Line Height): Clarify how the line
height is determined via variables and text properties. (Bug#23806)
-2016-06-20 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Fix removal of variables from process-environment
* src/callproc.c (add_env): Fix comparison of a variable with a
value against the same variable without a value. (Bug#23779)
-2016-06-20 Glenn Morris <rgm@gnu.org>
+2016-08-05 Glenn Morris <rgm@gnu.org>
* admin/authors.el (authors-ignored-files, authors-valid-file-names)
(authors-renamed-files-alist): Additions.
* admin/authors.el (authors-aliases, authors-fixed-case): Additions.
-2016-06-18 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Fix documentation of completion functions
@@ -512,7 +512,7 @@
* doc/lispref/minibuf.texi (Basic Completion): Symbol keys of hash table
collections are used like string keys, not ignored (Bug #10416).
-2016-06-18 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Clarify documentation of 'font-lock-maximum-decoration'
@@ -520,11 +520,11 @@
customization of 'font-lock-maximum-decoration' effective for an
existing buffer. (Bug#23783)
-2016-06-17 Glenn Morris <rgm@gnu.org>
+2016-08-05 Glenn Morris <rgm@gnu.org>
* doc/misc/cl.texi (Usage): Add some more details.
-2016-06-17 Noam Postavsky <npostavs@gmail.com>
+2016-08-05 Noam Postavsky <npostavs@gmail.com>
Fbackward_prefix_chars: stay within buffer bounds
@@ -538,7 +538,7 @@
* src/syntax.c (Fbackward_prefix_chars): Stop the loop when beginning of
buffer is reached (Bug #3552, Bug #17132, Bug #19379).
-2016-06-16 Paul Eggert <eggert@cs.ucla.edu>
+2016-08-05 Paul Eggert <eggert@cs.ucla.edu>
Fix ifdef-vs-if typo with RANDR13_LIBRARY
@@ -548,14 +548,14 @@
(cherry picked from commit dce99f222f1ca33265cd56ddb157817be1dc078e)
-2016-06-16 Stephen Berman <stephen.berman@gmx.net>
+2016-08-05 Stephen Berman <stephen.berman@gmx.net>
Fix last todo-mode change
* lisp/calendar/todo-mode.el (todo-read-category): Return the
keymap in order to use its defined key bindings.
-2016-06-15 Stephen Berman <stephen.berman@gmx.net>
+2016-08-05 Stephen Berman <stephen.berman@gmx.net>
Improve last todo-mode fix
@@ -564,7 +564,7 @@
previously) to the global binding (for rationale, see
http://lists.gnu.org/archive/html/emacs-devel/2016-06/msg00217.html).
-2016-06-14 Stephen Berman <stephen.berman@gmx.net>
+2016-08-05 Stephen Berman <stephen.berman@gmx.net>
Fix todo-mode use of minibuffer completion keymap (bug#23695).
@@ -572,26 +572,26 @@
override minibuffer-local-completion-map globally (bug#23695).
Bind <SPC> key to self-insert-command.
-2016-06-14 Glenn Morris <rgm@gnu.org>
+2016-08-05 Glenn Morris <rgm@gnu.org>
* src/alloc.c (ALIGN): Avoid error on DragonFly BSD. (Bug#23764)
* lisp/emacs-lisp/nadvice.el (advice--make-docstring):
Avoid mangling autoloads with unspecified arguments. (Bug#21299)
-2016-06-13 Glenn Morris <rgm@gnu.org>
+2016-08-05 Glenn Morris <rgm@gnu.org>
* lisp/help-fns.el (describe-function-1): Avoid reporting advised
autoloads as aliases. (Bug#21299)
-2016-06-13 Stephen Berman <stephen.berman@gmx.net>
+2016-08-05 Stephen Berman <stephen.berman@gmx.net>
Minor grammar fix (bug#23746)
* doc/lispref/processes.texi (Synchronous Processes):
Another minor grammar fix (bug#23746).
-2016-06-13 Stephen Berman <stephen.berman@gmx.net>
+2016-08-05 Stephen Berman <stephen.berman@gmx.net>
Doc fixes for grammar and typos (bug#23746)
@@ -608,24 +608,25 @@
* src/xfaces.c (syms_of_xfaces):
Minor doc fixes for grammar and typos (bug#23746).
-2016-06-13 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
* doc/lispref/processes.texi (Process Buffers): Minor rewording. (Bug#23446)
-2016-06-13 Eli Zaretskii <eliz@gnu.org>
+2016-08-05 Eli Zaretskii <eliz@gnu.org>
Add cross-reference to ELisp manual
* doc/lispref/commands.texi (Classifying Events): Add
cross-reference to "Motion Events". (Bug#23756)
-2016-06-11 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-06-19 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/macroexp.el (macroexp--expand-all): Fix (bug#19704)
Don't rewrite (funcall 'f ...) to (f ...).
-2016-06-11 Phillip Lord <phillip.lord@russet.org.uk>
+2016-06-19 Phillip Lord <phillip.lord@russet.org.uk>
Restore initial undo boundary with viper
@@ -634,13 +635,13 @@
Addresses Bug#22295.
-2016-06-11 Phillip Lord <phillip.lord@russet.org.uk>
+2016-06-19 Phillip Lord <phillip.lord@russet.org.uk>
Revert "Fix viper undo breakage from undo-boundary changes"
This reverts commit c0139e32f1f3bb287b04e02a69a7848d6a040003.
-2016-06-11 Ken Brown <kbrown@cornell.edu>
+2016-06-19 Ken Brown <kbrown@cornell.edu>
Fix dbus crash on 32-bit Cygwin
@@ -649,7 +650,7 @@
(xd_lisp_dbus_to_dbus): Use XSAVE_POINTER to retrieve connection
address.
-2016-06-10 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
Bump version to 25.0.95
@@ -658,17 +659,17 @@
* lisp/ldefs-boot.el:
* msdos/sed2v2.inp: Bump Emacs version to 25.0.95.
-2016-06-10 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
* etc/AUTHORS: Update the AUTHORS file
-2016-06-10 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
add entries to authors.el
* admin/authors.el (authors-renamed-files-alist): Add char-fold files.
-2016-06-10 Jules Tamagnan <jtamagnan@gmail.com>
+2016-06-19 Jules Tamagnan <jtamagnan@gmail.com>
Fix eldoc-related freezes in python mode
@@ -678,7 +679,7 @@
(python-eldoc-function): If python-eldoc--get-doc-at-point times
out, effectively turn off ElDoc in current buffer. (Bug#23609)
-2016-06-09 Martin Rudalics <rudalics@gmx.at>
+2016-06-19 Martin Rudalics <rudalics@gmx.at>
Handle mouse leaving initial window in `mouse-set-region' (Bug#23707)
@@ -687,7 +688,7 @@
selected window instead of `posn-point' of the event end
(Bug#23707).
-2016-06-08 Marco Wahl <marcowahlsoft@gmail.com>
+2016-06-19 Marco Wahl <marcowahlsoft@gmail.com>
org.el: Fix bindings of < and > for calendar scrolling
@@ -696,7 +697,7 @@
* lisp/org/org.el (org-read-date-minibuffer-local-map):
Switch to the current calendar API for scrolling the calendar.
-2016-06-08 Phillip Lord <phillip.lord@russet.org.uk>
+2016-06-19 Phillip Lord <phillip.lord@russet.org.uk>
Fix undo boundary in recursive edit (Bug#23632)
@@ -705,21 +706,21 @@
* lisp/simple.el (undo-auto--undoably-changed-buffers):
fix docstring.
-2016-06-07 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
Doc fixes re alist-get. (Bug#23548)
* lisp/subr.el (alist-get): Doc fix.
* doc/lispref/lists.texi (Association Lists): Improve alist-get.
-2016-06-07 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* lisp/progmodes/python.el (inferior-python-mode):
Avoid tabs. (Bug#23616)
* src/syntax.c (syms_of_syntax) <comment-end-can-be-escaped>: Doc fix.
-2016-06-07 Tino Calancha <f92capac@gmail.com>
+2016-06-19 Tino Calancha <f92capac@gmail.com>
* lisp/help-fns.el (describe-function-1):
Fix handling of file name for aliases. (Bug#21950)
@@ -728,7 +729,7 @@
* doc/misc/cl.texi (Mapping over Sequences): Fix cl-notevery.
-2016-06-07 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Fix crash in syntax.c after GC
@@ -737,14 +738,14 @@
buffer after every call to update_syntax_table_forward,
as it can GC.
-2016-06-06 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Improve squiggly heredoc support in non-SMIE Ruby mode
* lisp/progmodes/ruby-mode.el (ruby-parse-partial): Support
squiggly heredocs here, too (port from upstream).
-2016-06-06 Stephen Berman <stephen.berman@gmx.net>
+2016-06-19 Stephen Berman <stephen.berman@gmx.net>
Fix doc string quoting
@@ -756,7 +757,7 @@
* src/syntax.c (Fbackward_prefix_chars):
Fix quoting problems in doc strings (Bug#23696).
-2016-06-05 Martin Rudalics <rudalics@gmx.at>
+2016-06-19 Martin Rudalics <rudalics@gmx.at>
Fix mouse dragging of vertical dividers with scroll bars on left (Bug#23690)
@@ -764,13 +765,13 @@
adjust trailing edge of window on the left when dragging the
vertical divider of the mode line. (Bug#23690)
-2016-06-04 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
* etc/PROBLEMS: Mention the link-time problems on FreeBSD 11.
(Bug#23641)
-2016-05-31 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* test/automated/viper-tests.el (viper-test-undo-kmacro):
Delete temp-file at end.
@@ -782,11 +783,11 @@
* lisp/emacs-lisp/lisp-mode.el (lisp--mode-syntax-table):
Fix typo. (Bug#23654)
-2016-05-30 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-06-19 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/recentf.el (recentf-dialog-mode-map): Remove follow-link (bug#22434)
-2016-05-30 Bill Wohler <wohler@newt.com>
+2016-06-19 Bill Wohler <wohler@newt.com>
Correct cl-flet usage (Bug#22317)
@@ -798,14 +799,14 @@
(mh-mime-display, mh-press-button, mh-push-button):
(mh-display-emphasis): Call mh-flet instead of mh-cl-flet.
-2016-05-30 Bill Wohler <wohler@newt.com>
+2016-06-19 Bill Wohler <wohler@newt.com>
Release MH-E manual version 8.6
* doc/misc/mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH):
Update for release 8.6.
-2016-05-30 Mike Kupfer <m.kupfer@acm.org>
+2016-06-19 Mike Kupfer <m.kupfer@acm.org>
Update MH-E's documentation about HTML renderers
@@ -818,14 +819,14 @@
are discussed, and to reflect recent testing (Debian 8). Small tweaks
to existing text.
-2016-05-30 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Fx the we->the typo
* doc/emacs/trouble.texi (Sending Patches):
Fix the typo (bug#23657).
-2016-05-30 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Restore frames into the current display by default
@@ -833,13 +834,13 @@
Default to t, not nil (Bug#23604).
* etc/NEWS: Mention the change.
-2016-05-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-06-19 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/recentf.el (recentf-open-files-item): Quick fix for (bug#22434).
etc/TODO: Remove out-of-place issue
-2016-05-29 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Clarify doc string of 'file-name-sans-extension'
@@ -847,7 +848,7 @@
Clarify in the doc strings what is the extension, and which
leading period doesn't count. (Bug#23643)
-2016-05-28 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix the MSDOS build
@@ -855,16 +856,16 @@
empty, and remove the lines which use them in recipes, as that
causes weird error message from Make and breaks the MSDOS build.
-2016-05-28 Andreas Schwab <schwab@linux-m68k.org>
+2016-06-19 Andreas Schwab <schwab@linux-m68k.org>
* lisp/progmodes/elisp-mode.el (elisp-function-argstring): Call
substitute-command-keys to undo help--docstring-quote. (Bug#23634)
-2016-05-27 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
* src/dired.c (Ffile_name_all_completions): Doc fix. (Bug#23631)
-2016-05-27 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix infloop in 'number-sequence'
@@ -873,18 +874,18 @@
* test/automated/subr-tests.el (number-sequence-test): New test.
-2016-05-26 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* lisp/emacs-lisp/find-func.el (find-function-library):
Update for symbol-function no longer erroring. (Bug#23626)
-2016-05-26 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* lisp/w32-fns.el (set-message-beep, w32-get-locale-info)
(w32-get-valid-locale-ids): Improve declarations.
-2016-05-26 Vincent Belaïche <vincentb1@users.sourceforge.net>
+2016-06-19 Vincent Belaïche <vincentb1@users.sourceforge.net>
Correct old cell name unbinding when renaming cell.
@@ -900,37 +901,37 @@
either 'ses--unbind-cell-name' or 'kill-local-variable' depending on
whether the cell old name is a named cell or an A1 type cell
-2016-05-25 Vincent Belaïche <vincentb1@users.sourceforge.net>
+2016-06-19 Vincent Belaïche <vincentb1@users.sourceforge.net>
Document problem: slow screen refresh on missing font.
See discussion of bug#22519 for more on this.
-2016-05-25 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* admin/admin.el (add-release-logs): Basic check of existing ChangeLog.
-2016-05-25 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* build-aux/gitlog-to-emacslog: Handle empty generated ChangeLog.
This is relevant for M-x add-release-logs right after M-x authors.
-2016-05-25 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* admin/admin.el (add-release-logs): Generate ChangeLog if needed.
-2016-05-25 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
* doc/misc/texinfo.tex: Revert previous change (Bug#23611).
-2016-05-25 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* admin/authors.el (authors): First update the ChangeLog.
* admin/make-tarball.txt: Related updates.
-2016-05-24 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Rename vc-stay-local back to vc-cvs-stay-local
@@ -938,14 +939,14 @@
vc-stay-local (bug#19548). Improve the docstring.
(vc-cvs-stay-local-p): Update accordingly.
-2016-05-24 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* doc/emacs/files.texi (Comparing Files):
* doc/emacs/trouble.texi (Sending Patches): Fix external xrefs.
* doc/misc/eww.texi (Advanced): Fix xref.
-2016-05-24 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix cross-references between manuals
@@ -958,13 +959,13 @@
* doc/lispintro/emacs-lisp-intro.texi (etags): Node deleted: no
longer relevant to Emacs Lisp programming.
-2016-05-24 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* doc/misc/vhdl-mode.texi (Sample Init File): Rename node to avoid ".".
* admin/admin.el (add-release-logs): Also update etc/HISTORY.
-2016-05-24 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Avoid aborting due to errors in arguments of 'set-face-attribute'
@@ -973,11 +974,11 @@
Emacs built with --enable-checking when the luser was unlucky
enough to get the argument list in wrong order.
-2016-05-23 Phillip Lord <phillip.lord@russet.org.uk>
+2016-06-19 Phillip Lord <phillip.lord@russet.org.uk>
Add automated test for viper-tests.el
-2016-05-23 Phillip Lord <phillip.lord@russet.org.uk>
+2016-06-19 Phillip Lord <phillip.lord@russet.org.uk>
Fix viper undo breakage from undo-boundary changes
@@ -998,7 +999,7 @@
Addresses Bug #22295
-2016-05-22 Kaushal Modi <kaushal.modi@gmail.com>
+2016-06-19 Kaushal Modi <kaushal.modi@gmail.com>
Fix reference to obsolete fn ps-eval-switch
@@ -1008,7 +1009,7 @@
* lisp/printing.el (pr-switches): Use lpr-eval-switch instead of
ps-eval-switch.
-2016-05-22 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Do not trash symlinks to init file
@@ -1020,7 +1021,7 @@
save and restore the buffer name the way cus-edit does in a
similar situation (Bug#454).
-2016-05-22 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Don't print the "decomposition" line for control chars in what-cursor-position
@@ -1030,7 +1031,7 @@
* lisp/descr-text.el (describe-char): Remove `decomposition' from the list of
character code properties printed for control characters.
-2016-05-22 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Bring back xterm pasting with middle mouse
@@ -1043,7 +1044,7 @@
taken from xterm-paste internals.
(xterm-paste): Use it.
-2016-05-22 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Provide workaround for xftfont rendering problem
@@ -1052,20 +1053,20 @@
(xftfont_open): Use it to work around problems with rendering some
fonts. (Bug#23360)
-2016-05-21 Jun Hao <jun_hao@aol.com>
+2016-06-19 Jun Hao <jun_hao@aol.com>
* lisp/desktop.el: Disable restore frameset if in non-graphic display.
(Bug#17693)
-2016-05-21 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Mention GTK+ problems in etc/PROBLEMS
* etc/PROBLEMS (GDK_SCALE, GDK_DPI_SCALE): Mention the possible
problems this could create and the workaround. (Bug#23587)
-2016-05-20 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-06-19 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/emacs-lisp/package.el (package-refresh-contents):
@@ -1073,13 +1074,13 @@
(package-check-signature): Use `epg-find-configuration'
instead of `executable-find'.
-2016-05-20 Daiki Ueno <ueno@gnu.org>
+2016-06-19 Daiki Ueno <ueno@gnu.org>
Revert "epg: Add a way to detect gpg1 executable for tests"
This reverts commit d4ae6d7033b34e8b75c59aaf1584131e439ef2d5.
-2016-05-19 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Avoid errors with Czech and Slovak input methods
@@ -1090,7 +1091,7 @@
(czech-prog-2, czech-prog-3): Remove the kp-* key bindings.
(Bug#23559)
-2016-05-19 Daiki Ueno <ueno@gnu.org>
+2016-06-19 Daiki Ueno <ueno@gnu.org>
epg: Add a way to detect gpg1 executable for tests
@@ -1109,14 +1110,14 @@
(epg-find-configuration): Rename FORCE argument to NO-CACHE,
and add PROGRAM-ALIST argument.
-2016-05-18 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-06-19 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/emacs-lisp/package.el: Fix free variable warnings.
(package--with-response-buffer): Replace two usages of
`macroexp-let2*' with `let'.
-2016-05-18 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-06-19 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/emacs-lisp/package.el (package--with-response-buffer):
@@ -1125,7 +1126,7 @@
* test/automated/package-test.el (package-test-signed):
Manually check all possible values of `package-check-signature'.
-2016-05-18 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'server-name'
@@ -1133,14 +1134,14 @@
'server-name'. Mention how to do that with daemon sessions.
(Bug#23576)
-2016-05-18 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Modernize ASLR advice in etc/PROBLEMS
* etc/PROBLEMS (Segfault during 'make'): Modernize advice for
seccomp, Docker, and NetBSD (Bug#23529).
-2016-05-17 Juri Linkov <juri@linkov.net>
+2016-06-19 Juri Linkov <juri@linkov.net>
* lisp/char-fold.el: Rename from character-fold.el.
@@ -1148,7 +1149,7 @@
* test/automated/char-fold-tests.el: Rename from character-fold-tests.el.
http://lists.gnu.org/archive/html/emacs-devel/2015-12/msg00529.html
-2016-05-17 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
Bump version to 25.0.94
@@ -1156,18 +1157,18 @@
* configure.ac:
* msdos/sed2v2.inp: Bump Emacs version to 25.0.94.
-2016-05-17 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
etc/AUTHORS: Update the AUTHORS file
-2016-05-16 Alan Third <alan@idiocy.org>
+2016-06-19 Alan Third <alan@idiocy.org>
Fix bug#23462: Crash when iconifying frame on OS X.
* src/nsterm.m (x_iconify_frame): Block input while miniaturize is
running.
-2016-05-16 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Avoid shrinking windows with Gtk+ 3.20.3
@@ -1177,7 +1178,7 @@
* src/xterm.c (handle_one_xevent) [GTK_CHECK_VERSION (3, 20, 3)]:
Do not call xg_frame_resized in the MapNotify case.
-2016-05-16 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix bug in default setting of 'ps-paper-type'
@@ -1187,7 +1188,7 @@
that value would effectively ignore the setting of LC_PAPER.
(Bug#23544)
-2016-05-13 Paul Eggert <eggert@cs.ucla.edu> (tiny change)
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu> (tiny change)
Properly reject malformed or empty package sigs
@@ -1195,7 +1196,7 @@
* lisp/emacs-lisp/package.el (package--check-signature-content):
Report an error if no good signatures OR if a fatal error. Not AND.
-2016-05-13 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Remove buggy non-native image scrolling
@@ -1204,16 +1205,16 @@
* lisp/xwidget.el (xwidget-webkit-scroll-behavior): Remove.
All uses removed.
-2016-05-13 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
* doc/misc/texinfo.tex: Sync from gnulib.
-2016-05-12 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* lisp/emacs-lisp/find-func.el (find-feature-regexp)
(find-alias-regexp): Fix :version.
-2016-05-11 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Do not mistake colon at the end of regexp for slash symbol
@@ -1221,14 +1222,14 @@
Check the parse state in the "Symbols with special characters"
rule (bug#23515).
-2016-05-11 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Make package-install-from-buffer not move point
* lisp/emacs-lisp/package.el (package-install-from-buffer):
Use save-excursion here (bug#22616).
-2016-05-11 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Redo the fix for bug#21839
@@ -1238,7 +1239,7 @@
* lisp/emacs-lisp/cl-macs.el (cl--transform-lambda):
Ditto (bug#21839).
-2016-05-10 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Don't treat JS spread as contination method call
@@ -1247,14 +1248,14 @@
* test/indent/js.js (default): Add a corresponding example.
-2016-05-09 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Allow newlines inside cl function arglists
* lisp/help.el (help-add-fundoc-usage): Allow newlines inside
ARGLIST (bug#21839).
-2016-05-09 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Publicize cl--generic-all-functions
@@ -1265,7 +1266,7 @@
(semanticdb-find-tags-external-children-of-type-method):
And use it here (bug#23042).
-2016-05-09 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Add some "safe-local-variable" declarations for compatibility with master.
@@ -1279,7 +1280,7 @@
(c-macro-names-with-semicolon): give the safe-local-variable property
c-string-or-string-list-p.
-2016-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Fix doc string in `insert'
@@ -1287,11 +1288,11 @@
markers do not move.
(Finsert): Ditto.
-2016-05-08 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
* doc/misc/emacs-mime.texi (time-date): Document now-builtins better.
-2016-05-07 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Say 'All results processed' at the end
@@ -1299,7 +1300,7 @@
Say 'All results processed' at the end if the user hadn't
cancelled the process (bug#23284).
-2016-05-07 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Document automatic adjustment of process' logical window dimensions
@@ -1311,7 +1312,7 @@
* src/process.c (Fset_process_window_size): Improve the doc string.
-2016-05-06 Michael Albinus <michael.albinus@gmx.de>
+2016-06-19 Michael Albinus <michael.albinus@gmx.de>
tramp-sh.el: Work around a stat bug (backport from master)
@@ -1321,7 +1322,7 @@
(cherry picked from commit 6aad36ace9953b9672b13be68416d205532d5e59)
-2016-05-05 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Doc fixes for fclist and grep
@@ -1329,7 +1330,7 @@
egrep and fgrep have been withdrawn from POSIX,
so document grep -E and grep -F instead.
-2016-05-05 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Minor doc fixes for quoting
@@ -1338,14 +1339,14 @@
Don’t say that formats “generateâ€. Try to word more clearly.
* etc/NEWS: Coalesce near-duplicate entries.
-2016-05-05 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
`nreverse' the marker pairs list
* lisp/progmodes/xref.el (xref--buf-pairs-iterator): `nreverse'
the marker pairs list for each buffer before returning.
-2016-05-04 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Use save-excursion in xref-location-marker more
@@ -1356,7 +1357,7 @@
* lisp/progmodes/etags.el (xref-location-marker): Same.
-2016-05-04 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
shell-quote-argument DIR when appropriate
@@ -1367,7 +1368,7 @@
`shell-quote-argument' (bug#23453). Thanks for Kaushal Modi for
pointing out the problem. Assert that DIR doesn't start with `~'.
-2016-05-04 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Rework xref-query-replace-in-results
@@ -1392,14 +1393,14 @@
(xref--buf-pairs-iterator-groups-markers-by-buffers-2)
(xref--buf-pairs-iterator-cleans-up-markers): New tests.
-2016-05-04 Juri Linkov <juri@linkov.net>
+2016-06-19 Juri Linkov <juri@linkov.net>
* lisp/replace.el (query-replace-read-from): Use minibuffer-with-setup-hook
to set minibuffer-local value of text-property-default-nonsticky.
(Bug#23418, bug#23127)
-2016-05-04 Stephen Berman <stephen.berman@gmx.net>
+2016-06-19 Stephen Berman <stephen.berman@gmx.net>
Fix todo-mode bug involving archived items (bug#23447)
@@ -1412,7 +1413,7 @@
archived category. Remove a no-op call to kill-buffer, which is
already called in todo-insert-category-line.
-2016-05-03 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Handle "empty line" regexp in xref searches
@@ -1423,14 +1424,14 @@
(xref-collect-matches-finds-an-empty-line-regexp-match):
Uncomment test.
-2016-05-03 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Add tests for xref-collect-matches
* test/automated/xref-tests.el: New file. Add tests for
xref-collect-matches.
-2016-05-03 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Use grep-find-ignored-directories instead of vc-directory-exclusion-list
@@ -1447,7 +1448,7 @@
* doc/emacs/dired.texi (Operating on Files): Update the
documentation accordingly.
-2016-05-03 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Clear buffer-undo-list when showing xrefs
@@ -1455,7 +1456,7 @@
buffer-undo-list and temporarily bind it to t while rendering the
buffer contents.
-2016-05-03 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Note the quote translation in `message' in section "incompatible changes".
@@ -1463,18 +1464,18 @@
cannot be disabled, and that `format' can be used to get the old
behavior back.
-2016-05-03 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
* etc/NEWS: Mention (message "%s" (format ...)).
-2016-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
(Common Keywords): Correct what missing :group means
* doc/lispref/customize.texi (Common Keywords): Correct what
missing :group means.
-2016-05-03 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve documentation of Dired's 'A' and 'Q' commands
@@ -1488,7 +1489,7 @@
'grep-find-ignored-files' and 'vc-directory-exclusion-list'.
(Bug#23429)
-2016-05-03 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Doc fixes for quoting
@@ -1499,21 +1500,21 @@
Document quoting a bit more systematically.
Problem reported by Alan Mackenzie (Bug#23425).
-2016-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
posnp doc clarification
* lisp/subr.el (posnp): Mention that a posn object is returned
from `event-start' (bug#18211).
-2016-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Mention what a missing :group does
* doc/lispref/customize.texi (Common Keywords): Document that
a missing :group reuses the group from the preceding item (bug#21601).
-2016-05-02 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix documentation of dired-aux search/replace commands
@@ -1521,7 +1522,7 @@
(dired-do-find-regexp-and-replace): Doc fixes. (Bug#23429)
* lisp/dired.el: Update the corresponding autoload forms.
-2016-05-02 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Fix quoting problem in cc-engine debug message
@@ -1529,13 +1530,13 @@
Use "%s" format to pass through ‘'’ unscathed (Bug#23425), and
likewise for ‘`’, and ‘%’.
-2016-05-02 Philipp Stephani <phst@google.com>
+2016-06-19 Philipp Stephani <phst@google.com>
Add electric-quote-string unit test
* test/automated/electric-tests.el (electric-quote-string): New test.
-2016-05-02 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Don’t electrically quote ‘'’ in Python
@@ -1543,7 +1544,7 @@
* lisp/electric.el (electric-quote-post-self-insert-function):
Do not requote a string starter or ender.
-2016-05-02 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
`nreverse' Grep hits before passing them to xref--convert-hits
@@ -1551,23 +1552,23 @@
before passing them to xref--convert-hits. Fixes a regression
from cc0b7132.
-2016-05-01 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
* doc/misc/texinfo.tex: Sync from gnulib.
-2016-05-01 Juri Linkov <juri@linkov.net>
+2016-06-19 Juri Linkov <juri@linkov.net>
* lisp/isearch.el (isearch-forward-symbol-at-point): Add isearch-push-state.
(Bug#23410)
-2016-05-01 Michael Albinus <michael.albinus@gmx.de>
+2016-06-19 Michael Albinus <michael.albinus@gmx.de>
tramp.texi: Revert last change due to backward compatibility
(cherry picked from commit 910f9a0a936aacbffe9b9b790d7f698dfd287aac)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
cua-prefix-override-inhibit-delay doc fix
@@ -1577,7 +1578,7 @@
(cherry picked from commit 2b4c099822811ede787fc6e575bfbb17b3cc0681)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
global-eldoc-mode doc fix
@@ -1586,7 +1587,7 @@
(cherry picked from commit 25e95b5dd8cd92e03788e589bf99a4b399f03114)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
normal-top-level-add-subdirs-to-load-path doc fix
@@ -1595,7 +1596,7 @@
(cherry picked from commit 28aaa6d20586e3330a23b017a65e56dd6461c003)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
isearch-search-fun-function doc tweak
@@ -1604,7 +1605,7 @@
(cherry picked from commit cafc2a5940cdc523cfea6dcf1cf540f48367c62a)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Fill some imenu--index-alist doc lines
@@ -1612,7 +1613,7 @@
(cherry picked from commit 4b7bb8f596550628eaa83b82c0f7eabe59a84964)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Fmarker_position doc string clarification
@@ -1621,7 +1622,7 @@
(cherry picked from commit eeac7c57273cec3f9408b18392dd2bafe3be4450)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Further define-obsolete-* doc fixups
@@ -1631,7 +1632,7 @@
(cherry picked from commit 28e9f4390d8391c2c36be4ef515cf3a2c679a5a5)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Describe WHEN in all the define-obsolete- macros
@@ -1642,7 +1643,7 @@
(cherry picked from commit 247c388f160581d207e41ca5926990bbf69d4a0f)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Mention with-silent-modifications in the lispref manual
@@ -1651,7 +1652,7 @@
(cherry picked from commit fcd0d854eef6e439d51e8f07cf734d5e34e502b3)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
with-silent-modifications doc clarification
@@ -1661,7 +1662,7 @@
(cherry picked from commit e0e70f030e69d9696a963a86f5f7caaff4df06eb)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
clear-visited-file-modtime doc string fix
@@ -1670,7 +1671,7 @@
(cherry picked from commit 1aaeaf1450756a71c9254a2a5b174c72084ca67a)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Document mode mode line variables
@@ -1680,7 +1681,7 @@
(cherry picked from commit bf7a630b0a5d3900f2afb0e7a881ce62e2b9f935)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Add a cross ref to Optional Mode Line
@@ -1690,7 +1691,7 @@
(cherry picked from commit a3151a28789f413af73b14fbba557b2a587fca53)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Add a doc string to display-time-string
@@ -1700,7 +1701,7 @@
(cherry picked from commit 45559c584e5a4ddeed1539b028b50b95baa372f8)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
custom-buffer-style doc fix
@@ -1709,7 +1710,7 @@
(cherry picked from commit bcf0291d0cd02095b0809b1eb91f1e5c5c2ac5e3)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Rearrange the doc of query-replace slightly
@@ -1719,7 +1720,7 @@
(cherry picked from commit bcc10761c3b968fa4534718116a0a601ed7da389)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
apropos-print doc fix
@@ -1728,7 +1729,7 @@
(cherry picked from commit 0714d7387812a151f59993ac77c7321724ef79b1)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
completion-table-with-predicate doc string fix
@@ -1737,7 +1738,7 @@
(cherry picked from commit b6a4d162208f239bc7804696d611ae52c686f138)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Fill the completion-table-with-predicate doc string
@@ -1746,7 +1747,7 @@
(cherry picked from commit 207a31432c1ed8b548003a3e4af32c49aa3441e9)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
replace-match-maybe-edit doc clarification
@@ -1755,7 +1756,7 @@
(cherry picked from commit 139874ba53c2e2de9868f8e5234d6ea2bcb97af8)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
add-timeout doc fix
@@ -1764,7 +1765,7 @@
(cherry picked from commit 921b40476f597c84d7c34aa289cd43caeb389c4a)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Extremely minor doc fix in Choosing Window
@@ -1773,7 +1774,7 @@
(cherry picked from commit 6c7e7f421d02d9290d6d1d85320737371160aef7)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Transform mentions of `eval-after-load' to `with-eval-after-load'
@@ -1782,7 +1783,7 @@
(cherry picked from commit 9392193be56eebdfac702a0bbb5e954088371c7a)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
cursor-type doc fix
@@ -1791,7 +1792,7 @@
(cherry picked from commit 77c5f4554ebb3b7c7d49bc881e45a550f6c93987)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Add a link from Tool Bar to Images
@@ -1800,7 +1801,7 @@
(cherry picked from commit da5d0786163a91400eced4fddba4a92b652458d1)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
(default-mode-line-format): More explicit obsolete info
@@ -1809,7 +1810,7 @@
(cherry picked from commit 9dc5f6d830e72420dc4d41c8f6ca1ca6b28609c0)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Fcompare_buffer_substrings doc string clarification
@@ -1818,7 +1819,7 @@
(cherry picked from commit aa692acbb598a1cc8219ed7a87dde25fd7626ba5)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
insert-file-contents-literally doc fix
@@ -1827,7 +1828,7 @@
(cherry picked from commit b6481b19bc9592492b1f70dfecb4de6256f537fe)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Fix custom types for cursor-in-non-selected-windows
@@ -1836,7 +1837,7 @@
(cherry picked from commit b66bc0cced786e0320e1c3b0758bd3c434d4e8b5)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc clarification to mwheel-scroll
@@ -1845,7 +1846,7 @@
(cherry picked from commit 696052b5fdfbc5c25dff3c6b081aebe70f6d06c7)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Clarify the doc of eval-expression-print-format
@@ -1854,7 +1855,7 @@
(cherry picked from commit cd193a871f5a8e1c81ba86fc398ac382fa814383)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Explictly explain that package-initialize loads the packages
@@ -1865,7 +1866,7 @@
(cherry picked from commit 619e0aedb2f3dbfe6821ac34e2d25b4e5c181117)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Have the doc strings of `load-path' and `require' mention each other
@@ -1877,7 +1878,7 @@
(cherry picked from commit 3eca9a03816f95da0030665223c0b5262f223ba7)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc fix for insert-pair-alist
@@ -1886,7 +1887,7 @@
(cherry picked from commit 2824c587e9749a8f350f1d3dddd65176b4561dcb)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Move doc of backup-directory-alist to the Backup node
@@ -1897,7 +1898,7 @@
(cherry picked from commit e77b8d84b4161f2cf8720dec2bf44a3e50134398)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Tiny doc clarification for create-fontset-from-fontset-spec
@@ -1906,7 +1907,7 @@
(cherry picked from commit c05d186455ce9907eeb6b21ea4227e453996c681)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Fill the doc string of font-lock-keywords
@@ -1915,7 +1916,7 @@
(cherry picked from commit c05716d3a26ea7518b89eacfccaf70c9d0731df7)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc fix for font-lock-remove-keywords
@@ -1924,7 +1925,7 @@
(cherry picked from commit bc00dcf12983cd399127d0eea39647f29778eb02)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Clarify whitespace-style doc string
@@ -1933,7 +1934,7 @@
(cherry picked from commit d96c720d0cca7c9ffbb4c712ad315bb707d6625c)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc fixed for next-error-buffer-p
@@ -1942,7 +1943,7 @@
(cherry picked from commit a10eb168cc96db9f0dab2d75550cbd8f08be2363)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Tiny doc fix
@@ -1951,7 +1952,7 @@
(cherry picked from commit 2ef0040e2363a669d9b93df935d31c98fa130132)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc fix
@@ -1960,7 +1961,7 @@
(cherry picked from commit 6b769c81d024f7eeb90b167e7df6f87d859614d4)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
delsel doc touch ups
@@ -1969,7 +1970,7 @@
(cherry picked from commit d7a5b5be9a5869bcd233434ec3103dd1976d7df7)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc fixes for menu-bar.el
@@ -1979,7 +1980,7 @@
(cherry picked from commit 33d2c67bff0992ecbc0fe38556683242b9d1a4ae)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc fix
@@ -1987,7 +1988,7 @@
(cherry picked from commit 6baca4911ec901579749dbf7596011d90fea3781)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Minor doc clarification
@@ -1996,7 +1997,7 @@
(cherry picked from commit 5d1f3192d484edee92caa46cd7d699da3e920259)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Fill font-lock-mode doc string
@@ -2005,7 +2006,7 @@
(cherry picked from commit 27abf372836532c57be2e9e3ed23413729cc07fc)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Wrap the auto-generated doc string
@@ -2015,7 +2016,7 @@
(cherry picked from commit 323b69664914d687fd4b48593479cea223dfbcb4)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Clarify hi-lock-find-patterns
@@ -2024,7 +2025,7 @@
(cherry picked from commit 552e90ce7dff3a7107243fdf71c4de3af443e13a)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Add a doc string to `winner-mode'
@@ -2033,7 +2034,7 @@
(cherry picked from commit 2c3ab9b6e39a3d600e7d82deacc24effaec051bb)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc fix for align-newline-and-indent
@@ -2042,7 +2043,7 @@
(cherry picked from commit 340a224ec3e01706112a07164da9a9f3f369a5aa)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc fix for `kbd'
@@ -2051,7 +2052,7 @@
(cherry picked from commit 3a33afe25d8518f194fa4706eaccdb2a786a0348)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc tweak
@@ -2060,16 +2061,16 @@
(cherry picked from commit 35fb7897f161d5e5a87e039dc1e427094640b0c8)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Link from (emacs)Exiting to (lisp)Killing Emacs
* doc/emacs/entering.texi (Exiting): Link to the lispref
- manual for further customisations (bug#15445).
+ manual for further customizations (bug#15445).
(cherry picked from commit bc5f27aa099cdde02ca66e71501b89300685ab28)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
find-lisp doc touchups
@@ -2079,7 +2080,7 @@
(cherry picked from commit e4c7657b0d1a31d64ca24bc64b5480cd7687e332)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Don't have the manual claim that it lists all CL incompatibilities
@@ -2089,7 +2090,7 @@
(cherry picked from commit fb685bc91a72508c97ce7e30f970d4157677f371)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Change all occurrences of "Mouse-[0-9]" to "mouse-[0-9]"
@@ -2099,7 +2100,7 @@
(cherry picked from commit e4c26271f2c2fe08f8490e25c63a436ab2a804ca)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Doc string change to enable-recursive-minibuffers
@@ -2109,7 +2110,7 @@
(cherry picked from commit 23ba488a5e8290c4de91e0ff4161641efa364c0d)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Clarify the `interactive' doc string slightly
@@ -2118,7 +2119,7 @@
(cherry picked from commit cd993be60da2d12db0d390001373d486c1091c47)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Clarify some doc strings
@@ -2128,7 +2129,7 @@
(cherry picked from commit ad3ef417f3c40f086de9c547d6272e5685595e42)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Add some concept index entries for custom types
@@ -2137,7 +2138,7 @@
(cherry picked from commit 388bb723fa078158d3148de05e942f9c01e95dd8)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Mention `lisp-indent-function' in the lispref manual
@@ -2146,7 +2147,7 @@
(cherry picked from commit a1627691a896b2afaa264f93534178bc763564c9)
-2016-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Clarify doc string of internal compilation function
@@ -2155,7 +2156,7 @@
(cherry picked from commit 123191decb7428db3b32a6c01631fa755088393a)
-2016-05-01 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Use ‘T *restrict’ proto, not ‘T[restrict]’
@@ -2163,18 +2164,18 @@
work around GCC 3.0-and-earlier incompatibility with C99, one that
does not have problems with modern non-GCC compilers.
-2016-05-01 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix documentation of 'url-retrieve-synchronously'
* doc/misc/url.texi (Retrieving URLs): Update argument list of
'url-retrieve-synchronously'. (Bug#23411)
-2016-05-01 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
* lisp/url/url.el (url-retrieve-synchronously): Doc fix. (Bug#23411)
-2016-04-30 Leo Liu <sdl.web@gmail.com>
+2016-06-19 Leo Liu <sdl.web@gmail.com>
Fix last change to isearch-update (bug#23406)
@@ -2182,14 +2183,14 @@
nil) ie remove the original (unless (boundp 'cursor-sensor-inhibit)
...) form.
-2016-04-30 Leo Liu <sdl.web@gmail.com>
+2016-06-19 Leo Liu <sdl.web@gmail.com>
Autoload cursor-sensor-inhibit (bug#23406)
* lisp/emacs-lisp/cursor-sensor.el (cursor-sensor-inhibit): Autoload.
* lisp/isearch.el (isearch-update): Remove boundp check.
-2016-04-30 Phillip Lord <phillip.lord@newcastle.ac.uk>
+2016-06-19 Phillip Lord <phillip.lord@newcastle.ac.uk>
org-map-entries: Fix org-agenda-prepare-buffers call
@@ -2199,20 +2200,20 @@
This is a backport of commit 44c8cd7136e3fcd1e6bfa08895cac437b7a691fa
from upstream org-mode. Addresses bug #23365.
-2016-04-30 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Followup for last commit in the user manual
* doc/emacs/basic.texi (Moving Point): Clarify that
set-goal-column has buffer-local effect. (Bug#23405)
-2016-04-30 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve doc string of 'set-goal-column'
* lisp/simple.el (set-goal-column): Doc fix. (Bug#23405)
-2016-04-30 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix the MSDOS build
@@ -2290,14 +2291,14 @@
(eshell-execute-pipeline): Test 'make-process', not
'start-process', as the latter is now available on all platforms.
-2016-04-30 Andreas Schwab <schwab@linux-m68k.org>
+2016-06-19 Andreas Schwab <schwab@linux-m68k.org>
Remove \= from format string (bug#18190)
* lisp/emacs-lisp/eieio.el (defclass): Remove \= from format
string.
-2016-04-30 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix variable-pitch font on MS-Windows
@@ -2306,7 +2307,7 @@
some MS-Windows systems. See this thread for details:
http://lists.gnu.org/archive/html/emacs-devel/2016-04/msg00746.html.
-2016-04-29 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Restore follow-scroll-up/down to scrolling by the combined size of all windows
@@ -2323,7 +2324,7 @@
follow-scroll-up/down.
(follow-scroll-up, follow-scroll-down): Restore the historic functionality.
-2016-04-29 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Revert unneeded change which harms syntactic parsing. This fixes bug #23308.
@@ -2331,7 +2332,7 @@
c-state-old-cpp-end as an argument to c-with-all-but-one-cpps-commented-out
regardless of the value of `here'.
-2016-04-29 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Correct indentation of ids in a C++ enum after a protection keyword.
@@ -2344,7 +2345,7 @@
c-backward-colon-prefixed-type. On finding a colon in the backward search,
check it is preceded by an identifier rather than a keyword.
-2016-04-27 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* lisp/window.el (window--process-window-list): No-op if no processes.
@@ -2352,7 +2353,7 @@
failing if frame.el is not loaded, eg if the terminal is resized
during startup of a -nw CANNOT_DUMP build. (Bug#23369).
-2016-04-27 Paul Eggert <eggert@penguin.cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@penguin.cs.ucla.edu>
Port dumping to NetBSD with PaX
@@ -2365,7 +2366,7 @@
New vars, replacing PAXCTL_if_present and SETFATTR_if_present.
All uses changed.
-2016-04-27 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Don't mistake `for' inside a function for a part of array comprehension
@@ -2374,7 +2375,7 @@
* test/indent/js.js: Add a corresponding example.
-2016-04-27 Anders Lindgren <andlind@gmail.com>
+2016-06-19 Anders Lindgren <andlind@gmail.com>
Fix bug#22891: wrong terminal width when a fringe width is zero.
@@ -2393,21 +2394,21 @@
(cherry picked from commit 5b5403289888efe8783ae6a405845b925f544ec1)
-2016-04-27 Leo Liu <sdl.web@gmail.com>
+2016-06-19 Leo Liu <sdl.web@gmail.com>
Improve last change to vc-git-mode-line-string
* lisp/vc/vc-git.el (vc-git-mode-line-string): Better fix that caches
the result.
-2016-04-27 Stephen Berman <stephen.berman@gmx.net>
+2016-06-19 Stephen Berman <stephen.berman@gmx.net>
Todo mode doc bug fix
* lisp/calendar/todo-mode.el (todo-show): Correct obsolete and no
longer correct information in doc string.
-2016-04-27 Leo Liu <sdl.web@gmail.com>
+2016-06-19 Leo Liu <sdl.web@gmail.com>
Fix revision calculation in vc-git-mode-line-string
@@ -2415,14 +2416,14 @@
vc-git-working-revision because vc-working-revision needs to decide
the backend and may return nil.
-2016-04-26 Jorgen Schaefer <contact@jorgenschaefer.de>
+2016-06-19 Jorgen Schaefer <contact@jorgenschaefer.de>
Add Python 3.5 keyword "await"
* lisp/progmodes/python.el (python-font-lock-keywords): Add await as
keyword.
-2016-04-26 Lele Gaifax <lele@metapensiero.it>
+2016-06-19 Lele Gaifax <lele@metapensiero.it>
Add new keywords of Python 3.5
@@ -2439,7 +2440,7 @@
python-nav-beginning-of-defun-3): New tests to test indentation and
navigation for the async keyword.
-2016-04-26 Mark Oteiza <mvoteiza@udel.edu>
+2016-06-19 Mark Oteiza <mvoteiza@udel.edu>
Partially revert previous change.
@@ -2447,7 +2448,7 @@
* lisp/rect.el (rectangle--highlight-for-redisplay): Use region face.
This function is for rectangle-mark-mode, not string-rectangle.
-2016-04-25 Paul Eggert <eggert@penguin.cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@penguin.cs.ucla.edu>
Say why text-quoting-style is not a user option
@@ -2455,12 +2456,12 @@
* etc/NEWS: Document why text-quoting-style is not a
customizable variable (Bug#23372).
-2016-04-25 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* lisp/emacs-lisp/autoload.el (update-directory-autoloads):
Future-proof against non-time-values.
-2016-04-25 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Don't mention ~/.emacs.bmk literally in doc strings
@@ -2468,35 +2469,35 @@
mention "~/.emacs.bmk" explicitly as the default bookmark file in
the doc strings. (Bug#23350)
-2016-04-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2016-06-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* etc/NEWS: Explain why multicolor font display is disabled on OS X Cocoa.
-2016-04-24 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Port to Ubuntu 16.04 --enable-gcc-warnings
* src/image.c (gif_load) [HAVE_GIF]: Fix pointer signedness problem.
-2016-04-24 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
* etc/NEWS: Improve wording of vc-git-log-output-coding-system etc.
-2016-04-24 Tino Calancha <f92capac@gmail.com>
+2016-06-19 Tino Calancha <f92capac@gmail.com>
Don't kill ~/ if it's the top level directory
* lisp/dired-aux.el (dired-kill-subdir): Don't kill ~/ if it's
the top level directory (bug#23017).
-2016-04-23 Tino Calancha <f92capac@gmail.com> (tiny change)
+2016-06-19 Tino Calancha <f92capac@gmail.com> (tiny change)
describe-char: fix insert char documentation
* lisp/descr-text.el (describe-char):
Only 'ucs-names' entries can be inserted by unicode name (Bug#23325).
-2016-04-23 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
(vc-git-mode-line-string): Don't use `replace-regexp-in-string'
@@ -2505,7 +2506,7 @@
(e.g. when FILE is a directory, bug#23344), and we actually know
we only need the first 4 characters.
-2016-04-22 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
Bump version to 25.0.93
@@ -2513,7 +2514,7 @@
* configure.ac:
* msdos/sed2v2.inp: Bump Emacs version to 25.0.93.
-2016-04-22 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
* etc/AUTHORS: Update the AUTHORS file
@@ -2521,7 +2522,7 @@
* admin/authors.el (authors-ignored-files): Additions.
-2016-04-22 Martin Rudalics <rudalics@gmx.at>
+2016-06-19 Martin Rudalics <rudalics@gmx.at>
In x_set_window_size restore do_pending_window_change calls
@@ -2530,7 +2531,7 @@
do_pending_window_change calls after their stupid removal on
2015-08-31.
-2016-04-21 Ilya Zakharevich <ilya@math.berkeley.edu>
+2016-06-19 Ilya Zakharevich <ilya@math.berkeley.edu>
Fix Alt-modified keys on some European MS-Windows keyboards
@@ -2538,32 +2539,32 @@
ASCII, AND Meta modifier is a candidate, behave as if Meta is
present, i.e. fall back to the legacy code. (Bug#23251)
-2016-04-20 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Document 'help-go-forward'
* doc/emacs/help.texi (Help Mode): Document and index
'help-go-forward'. (Bug#23323)
-2016-04-20 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Revert "Allow to customize names of executables used by grep.el"
This reverts commit c93ae7a1e5a94541189a8f36984014344d561ffc.
-2016-04-20 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Revert "Don't use 'find-program'"
This reverts commit 10597c977d55cbf9304b51c3b364ce58199384a0.
-2016-04-20 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Revert "Use 'grep-find-program' in check-declare.el"
This reverts commit 33bef6e90bfd20609d044b8a076c1570c627684a.
-2016-04-20 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Clarify documentation of 'dired-mark-files-containing-regexp'
@@ -2575,7 +2576,7 @@
for files visited in buffers, 'dired-mark-files-containing-regexp'
searches the buffer rather than the file on disk. (Bug#22694)
-2016-04-19 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Make tmm-menubar work in correct order again
@@ -2586,7 +2587,7 @@
item when the function is called with a non-nil 'x-position'
argument.
-2016-04-18 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Remove the Meta-CVS VC backend
@@ -2597,14 +2598,14 @@
* doc/misc/efaq-w32.texi (Version control): Same.
-2016-04-18 Michael Albinus <michael.albinus@gmx.de>
+2016-06-19 Michael Albinus <michael.albinus@gmx.de>
Fix Bug#23276
* lisp/autorevert.el (auto-revert-handler): Ignore errors
coming from `revert-buffer'. (Bug#23276)
-2016-04-17 Reto Zimmermann <reto@gnu.org>
+2016-06-19 Reto Zimmermann <reto@gnu.org>
Sync with upstream vhdl mode v3.38.1.
@@ -2615,7 +2616,7 @@
(vhdl-template-else, vhdl-template-elsif): Support generate statement.
(vhdl-re-search-forward, vhdl-re-search-backward): Save match data.
-2016-04-16 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Tweak configure.ac syntax in recent module patch
@@ -2623,14 +2624,14 @@
recent HAVE_MODULES patch. Although this doesn’t fix any bugs,
the previous syntax was confusing.
-2016-04-16 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Port to GCC 5.3.1 20160406 (Red Hat 5.3.1-6)
* src/indent.c (Fvertical_motion): Pacify --enable-gcc-warnings
when using the April 6 Fedora patch to GCC.
-2016-04-16 Mark Oteiza <mvoteiza@udel.edu>
+2016-06-19 Mark Oteiza <mvoteiza@udel.edu>
Make sh-electric-here-document-mode accessible in sh-mode-hook. (Bug#3226)
@@ -2639,18 +2640,18 @@
(sh-mode): Mention sh-mode-hook in docstring.
(sh-mode): Remove sh-electric-here-document-mode invocation.
-2016-04-16 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* configure.ac (HAVE_MODULES): Exclude gnu-kfreebsd from previous.
-2016-04-16 Mark Oteiza <mvoteiza@udel.edu>
+2016-06-19 Mark Oteiza <mvoteiza@udel.edu>
Make use of rectangle-preview custom variable.
lisp/rect.el (rectangle--string-preview): Only create a preview if
rectangle-preview is non-nil (Bug#23248).
-2016-04-16 Mark Oteiza <mvoteiza@udel.edu>
+2016-06-19 Mark Oteiza <mvoteiza@udel.edu>
Make use of rectangle-preview face.
@@ -2658,21 +2659,21 @@
(rectangle--highlight-for-redisplay): Replace 'region with
'rectangle-preview (Bug#23248).
-2016-04-16 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Use 'grep-find-program' in check-declare.el
* lisp/emacs-lisp/check-declare.el (check-declare-directory): Use
'grep-find-program', not 'find-program'.
-2016-04-16 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve "C-h S" for cl-lib symbols
* lisp/info-look.el: Add cl.info lookup to emacs-lisp-mode related
manuals. (Bug#23289)
-2016-04-16 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix minor issues with removing left or right fringes
@@ -2686,14 +2687,14 @@
text width when setting the width of one or both fringes to zero.
(Bug#22891)
-2016-04-16 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Speed up redisplay in ansi-term mode
* lisp/term.el (ansi-term): Force L2R 'bidi-paragraph-direction'.
(Bug#20611)
-2016-04-16 Philipp Stephani <phst@google.com>
+2016-06-19 Philipp Stephani <phst@google.com>
Simplify 8-bit character handling by terminal for 'raw-text'
@@ -2702,11 +2703,11 @@
* lisp/xt-mouse.el (xterm-mouse--read-coordinate): Use 'no-conversion'
instead of 'latin-1'.
-2016-04-15 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* configure.ac (HAVE_MODULES): Treat gnu like gnu-linux. (Bug#22722)
-2016-04-15 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix w32 memory-management problem when extending buffer text
@@ -2722,7 +2723,7 @@
and http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23223#55 for two
examples of the related problems.
-2016-04-14 Michael Albinus <michael.albinus@gmx.de>
+2016-06-19 Michael Albinus <michael.albinus@gmx.de>
Fix Bug#20637. Do not merge to master
@@ -2732,7 +2733,7 @@
* test/automated/vc-tests.el (vc-test--state)
(vc-test--working-revision): Deactivate now failing checks.
-2016-04-14 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
substitute-command-keys keeps quotes’ text props
@@ -2742,11 +2743,11 @@
quotes, copy the source string’s text properties too, since no
substring lengths have changed.
-2016-04-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2016-06-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* src/xwidget.c (x_draw_xwidget_glyph_string): More clipping fixes.
-2016-04-12 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Add semantic-symref-filepattern-alist entry for lisp-interaction-mode
@@ -2755,7 +2756,7 @@
Add entry for lisp-interaction-mode
(http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23223#47)
-2016-04-12 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Perform xref searches without visiting unopened files
@@ -2795,13 +2796,13 @@
(semantic-symref-global--line-re)
(semantic-symref-parse-tool-output-one-line): Same.
-2016-04-12 Phillip Lord <phillip.lord@newcastle.ac.uk>
+2016-06-19 Phillip Lord <phillip.lord@newcastle.ac.uk>
Revert "Prevent bootstrap autoload backup files"
This reverts commit c23c965bb9d0a4bcc1b6158833ff99aa20fd53e9.
-2016-04-12 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Improve time zone documentation
@@ -2819,7 +2820,7 @@
environment variable in preference to mentioning the
sort-of-internal function set-time-zone-rule.
-2016-04-12 Phillip Lord <phillip.lord@russet.org.uk>
+2016-06-19 Phillip Lord <phillip.lord@russet.org.uk>
Prevent bootstrap autoload backup files
@@ -2831,13 +2832,13 @@
(Bug#23203)
-2016-04-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2016-06-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Disable multicolor fonts on OS X since they are not supported on free systems
* src/macfont.m (macfont_list): Don't use color bitmap fonts.
-2016-04-11 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Capitalize “Universal Time†in documentation
@@ -2845,14 +2846,14 @@
* lisp/vc/add-log.el (add-log-time-zone-rule): Also, fix typo by
mentioning ‘format-time-string’ instead of ‘set-time-zone-rule’.
-2016-04-11 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Don't use 'find-program'
* lisp/progmodes/project.el (project-file-completion-table): Use
'grep-find-program', rather than the obsolete 'find-program'.
-2016-04-11 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Sync with gnulib
@@ -2862,7 +2863,7 @@
2016-04-11 stdint: port to strict C11 left shift
* doc/misc/texinfo.tex, lib/stdint.in.h: Copy from gnulib.
-2016-04-11 Leo Liu <sdl.web@gmail.com>
+2016-06-19 Leo Liu <sdl.web@gmail.com>
Fix last change on 2016-01-02
@@ -2870,7 +2871,7 @@
`cl-errs-re' before `lisp--el-match-keyword'; don't use `prepend'
which highlights `cl-errs-re' even in comments or strings.
-2016-04-11 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Port run-prolog EMACS to SWI-Prolog 7.2.3
@@ -2879,7 +2880,7 @@
with the new way of dealing with the EMACS and INSIDE_EMACS
environment variables.
-2016-04-10 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Avoid crashes due to unreasonably large or small text scaling
@@ -2888,13 +2889,13 @@
(text-scale-set, text-scale-increase): Use them to limit the text
scaling to a reasonable range of values. (Bug#23259)
-2016-04-10 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'with-eval-after-load'
* lisp/subr.el (with-eval-after-load): Doc fix. (Bug#23258)
-2016-04-10 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve handling of non-ASCII characters in Git log messages
@@ -2914,7 +2915,7 @@
* etc/NEWS: Mention the new vc-git related defcustoms.
-2016-04-09 Philipp Stephani <phst@google.com>
+2016-06-19 Philipp Stephani <phst@google.com>
Remove undefined behavior in OS X dumper.
@@ -2923,7 +2924,7 @@
* src/unexmacosx.c (unexec_write): Use Mach virtual memory API to
avoid undefined behavior when reading arbitrary memory.
-2016-04-09 Joakim Verona <joakim@verona.se>
+2016-06-19 Joakim Verona <joakim@verona.se>
Fix clipping of xwidgets
@@ -2931,7 +2932,7 @@
instead of calculating the clipping borders manually. Suggested
by YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>.
-2016-04-09 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve Lisp-level documentation of tooltips
@@ -2944,18 +2945,18 @@
* doc/emacs/frames.texi (Tooltips): Include more customization
variables. Add a cross-reference to the ELisp manual.
-2016-04-08 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
Faces names should not end in "-face".
* lisp/rect.el (rectangle-preview): Rename from rectangle-preview-face.
* lisp/vc/vc-hooks.el (vc-state-base): Rename from vc-state-base-face.
-2016-04-08 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
* src/xsmfns.c (syms_of_xsmfns): Remove stray "s in doc strings.
-2016-04-08 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Comint and compile no longer set EMACS
@@ -2970,11 +2971,11 @@
* lisp/progmodes/compile.el (compilation-start):
Don’t set EMACS=t in the subsidiary process.
-2016-04-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-06-19 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/subr.el (read-key): Don't let the prompt linger (bug#22714)
-2016-04-08 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Allow to customize names of executables used by grep.el
@@ -2985,20 +2986,20 @@
(grep-program): Now a defcustom rather than a simple variable.
(Bug#23219)
-2016-04-08 Alan Third <alan@idiocy.org>
+2016-06-19 Alan Third <alan@idiocy.org>
Set locale encoding to UTF-8 when run from OS X GUI.
* src/nsterm.m (ns_init_locale): Append .UTF-8 when setting LANG.
-2016-04-08 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Avoid signaling errors in 'M-n' at the 'C-x C-f' prompt
* lisp/ffap.el (ffap-guess-file-name-at-point): Ignore errors
while 'ffap-guesser' runs. (Bug#23218)
-2016-04-08 Marcin Borkowski <mbork@mbork.pl>
+2016-06-19 Marcin Borkowski <mbork@mbork.pl>
Avoid infinite loop in 'studlify-word'
@@ -3006,7 +3007,7 @@
'forward-word-strictly' and 'backward-word-strictly' instead of
'forward-word' and 'backward-word'. (Bug#19940)
-2016-04-07 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Don’t recommend obsolete EMACS env var
@@ -3018,20 +3019,20 @@
Remove obsolescent recommendation to consult the EMACS environment
variable.
-2016-04-07 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* lisp/emacs-lisp/package.el: Change from a few days ago needs seq.
* lisp/emacs-lisp/seq.el: Load cl-lib, not cl-extra.
-2016-04-07 Leo Liu <sdl.web@gmail.com>
+2016-06-19 Leo Liu <sdl.web@gmail.com>
Fix "Beginning of buffer" error in forward-page
* lisp/textmodes/page.el (forward-page): Check before move to prevent
"Beginning of buffer" error.
-2016-04-06 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Add a `transient' project type
@@ -3040,7 +3041,7 @@
(project-current): Instead of signaling an error, return a
transient project instance rooted in the chosen directory.
-2016-04-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Magne Ingebrigtsen <larsi@gnus.org>
Revert "Backport HTTPS proxy fix"
@@ -3049,7 +3050,7 @@
It's too late in the Emacs 25 release cycle to add things like this to
Emacs 25.1. It's border line new feature.
-2016-04-06 Tao Fang <fangtao0901@gmail.com>
+2016-06-19 Tao Fang <fangtao0901@gmail.com>
Backport HTTPS proxy fix
@@ -3057,7 +3058,7 @@
Backport:
-2016-04-06 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Fix stability confusion in sort-tests
@@ -3068,7 +3069,7 @@
as sorting with the reverse predicate. This is not true
for stable sorts when items compare equal.
-2016-04-05 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Avoid describe-key error with lambdas
@@ -3077,13 +3078,13 @@
(xref-mode-local-overload): Use function-overload-p instead
of assuming the argument is a symbol.
-2016-04-04 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-06-19 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/emacs-lisp/package.el (package-install-selected-packages):
Skip unavailable packages.
-2016-04-04 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Sync with gnulib
@@ -3093,7 +3094,7 @@
* doc/misc/texinfo.tex, lib/stddef.in.h, m4/stdint.m4:
Copy from gnulib.
-2016-04-03 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Fix doc for Universal Time
@@ -3103,7 +3104,7 @@
(Time Parsing): Remove stray obsolete paragraph about a
UNIVERSAL argument for ‘format-time-string’.
-2016-04-03 Michael Albinus <michael.albinus@gmx.de>
+2016-06-19 Michael Albinus <michael.albinus@gmx.de>
Handle Bug#23186
@@ -3112,7 +3113,7 @@
* lisp/net/tramp-sh.el (tramp-maybe-open-connection):
`tramp-encoding-shell' could be nil. (Bug#23186)
-2016-04-03 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
More format-time-string change fixups
@@ -3122,14 +3123,14 @@
* lisp/org/ox-icalendar.el (org-icalendar-convert-timestamp):
Use (not (not X)) to treat non-nil values of utc arg as UTC.
-2016-04-02 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
make-xwidget unused arg cleanup
* doc/lispref/display.texi (Xwidgets): Remove stray refs.
* src/xwidget.c (syms_of_xwidget): Qwebkit, not Qwebkit_osr.
-2016-04-02 Joakim Verona <joakim@verona.se>
+2016-06-19 Joakim Verona <joakim@verona.se>
Remove unused arguments from make-xwidget
@@ -3140,21 +3141,21 @@
(xwidget-webkit-new-session): Reflect changed arguments
* src/xwidget.c (Fmake_xwidget, syms_of_xwidget): Reflect changed arguments
-2016-04-02 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Document incompatible changes in 'format-time-string'
* etc/NEWS: Mention the incompatible change in the interpretation
of the 3rd argument to 'format-time-string'. (Bug#21943)
-2016-04-02 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve documentation of byte-code objects
* doc/lispref/compile.texi (Byte-Code Objects): Document the
integer format of the argument descriptor. (Bug#23061)
-2016-04-02 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Adapt calls to 'format-time-string' to changes in Emacs 25
@@ -3164,7 +3165,7 @@
last argument to format-time-string, when the TZ argument is not a
number, per the doc string.
-2016-04-02 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve vc-diff with Git backend
@@ -3174,7 +3175,7 @@
(vc-git-print-log): Don't override coding-system-for-read if it's
already bound.
-2016-04-01 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
(js--continued-expression-p): Special-case unary plus and minus
@@ -3182,7 +3183,7 @@
effort to recognize unary plus and minus, in the contexts where
they make sense (https://github.com/mooz/js2-mode/issues/322).
-2016-04-01 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Prevent C++ Mode wrongly fontifying some identifiers near templates as types
@@ -3200,7 +3201,7 @@
* lisp/progmodes/cc-fonts.el (c-font-lock-<>-arglists): Don't fontify an
identifier as a type when its associated ">" is followed by a "(".
-2016-04-01 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Avoid crashes due to insanely large columns in tabulated-list-format
@@ -3213,7 +3214,7 @@
* src/term.c (append_composite_glyph): Add assertion to verify
that the pixel width of the glyph will never overflow a 'short'.
-2016-03-31 Mark Oteiza <mvoteiza@udel.edu>
+2016-06-19 Mark Oteiza <mvoteiza@udel.edu>
Teach M-x disassemble a default argument.
@@ -3221,14 +3222,14 @@
* lisp/emacs-lisp/disass.el (disassemble): Default to function at point,
if any.
-2016-03-31 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix EOL decoding in vc-annotate with SVN back-end on MS-Windows
* lisp/vc/vc-annotate.el (vc-annotate): Force DOS EOL decoding on
MS-Windows and MS-DOS, when processing the output of "svn annotate".
-2016-03-31 Michael Albinus <michael.albinus@gmx.de>
+2016-06-19 Michael Albinus <michael.albinus@gmx.de>
Fix OS X specific settings in tramp-tests
@@ -3240,7 +3241,7 @@
(tramp--test-utf8): Improve settings of coding systems.
Do not use `tramp--test-darwin-p' anymore. (Bug#22145)
-2016-03-30 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Finish fixing a cacheing bug in CC Mode (see 2016-03-09)
@@ -3253,21 +3254,21 @@
* lisp/progmodes/cc-engine.el (c-record-parse-state-state): Terminate stale
markers.
-2016-03-30 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Merge branch 'emacs-25' of /home/acm/emacs/emacs.git/emacs-25 into emacs-25
-2016-03-29 Xue Fuqiao <xfq.free@gmail.com>
+2016-06-19 Xue Fuqiao <xfq.free@gmail.com>
* doc/lispref/text.texi (Columns): Remove a nonexistent reference.
The example was removed by Chong Yidong on Mar 5, 2012.
-2016-03-29 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
* doc/man/emacsclient.1: Document +line:column option.
-2016-03-29 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix rare problems with echo-area display and multiple frames
@@ -3275,7 +3276,7 @@
around the call to x_consider_frame_title, to prevent
resize_mini_window from undoing echo-area display. (Bug#23124)
-2016-03-29 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
In M-%, avoid making buffer-local binding of text-property-default-nonsticky
@@ -3286,7 +3287,7 @@
text-property-default-nonsticky to inside of a new with-current-buffer buffer
form with the minibuffer as argument.
-2016-03-27 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Remove prog-indentation-context
@@ -3304,22 +3305,22 @@
Do not merge to master.
-2016-03-27 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
* src/font.c (QCuser_spec): Add missing colon to :user-spec.
-2016-03-27 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Don't start the 'midnight' timer twice
* lisp/midnight.el (midnight-mode): Avoid starting the midnight
timer twice when activating the mode the first time. (Bug#23123)
-2016-03-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2016-06-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* src/xwidget.c (Fxwidget_resize): Fix inappropriate use of XFASTINT.
-2016-03-26 Stephen Berman <stephen.berman@gmx.net>
+2016-06-19 Stephen Berman <stephen.berman@gmx.net>
Fix todo-mode category movement
@@ -3330,11 +3331,11 @@
items, handle the source archive buffer properly. Remove
superfluous code.
-2016-03-26 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* lisp/xt-mouse.el (xterm-mouse-utf-8): Add :version.
-2016-03-26 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Ignore non-nil. non-cons values of unread-command-events
@@ -3342,7 +3343,7 @@
(Finput_pending_p): Use CONSP instead of !NILP to see if there are
unread command events to be processed. (Bug#22976)
-2016-03-26 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve documentatuon of 'truncate-partial-width-windows'
@@ -3355,11 +3356,11 @@
* doc/emacs/display.texi (Line Truncation): Remove a redundant
index entry.
-2016-03-25 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
* src/ftfont.c (ftfont_shape_by_flt): Parenthesize as per GNU style.
-2016-03-25 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix 'dired-goto-file' in Dired buffers produced by find-dired
@@ -3367,7 +3368,7 @@
relative name with leading sub-directories, before looking for the
basename alone. (Bug#23089)
-2016-03-25 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
Fix map-put and map-delete for alists (Bug#23105)
@@ -3375,7 +3376,7 @@
expression to a new symbol.
* test/automated/map-tests.el: Add a regression test.
-2016-03-25 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Minor copyedits of documentation for temporary displays
@@ -3386,7 +3387,7 @@
* etc/NEWS: Minor rewording of the entry about temporary displays.
-2016-03-25 Philipp Stephani <phst@google.com>
+2016-06-19 Philipp Stephani <phst@google.com>
Add customization option for using UTF-8 coordinates in xt-mouse
@@ -3404,7 +3405,7 @@
* test/automated/xt-mouse-tests.el: Add tests for xt-mouse.el.
-2016-03-25 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Minor doc string fixes in replace.el
@@ -3414,7 +3415,7 @@
these commands operate from point to the end of the buffer's
accessible portion. (Bug#23067)
-2016-03-25 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix scrolling upwards with 'xwidget-webkit-browse-url'
@@ -3422,7 +3423,7 @@
of CHECK_NATNUM. Suggested by Shayan Pirani <shayanpirani@gmail.com>.
(Bug#22918)
-2016-03-25 K. Handa <handa@gnu.org>
+2016-06-19 K. Handa <handa@gnu.org>
Fix display of Indic scripts
@@ -3430,7 +3431,7 @@
of the range U+300...U+36F, use the "combining" FLT only with
non-OTF fonts.
-2016-03-25 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix splash screen display at startup
@@ -3444,7 +3445,7 @@
* etc/NEWS: Mention the change.
-2016-03-25 Martin Rudalics <rudalics@gmx.at>
+2016-06-19 Martin Rudalics <rudalics@gmx.at>
Describe temporary displays in Emacs manual
@@ -3453,7 +3454,7 @@
(Temporary Displays): New subsubsection describing display of
temporary buffers and `temp-buffer-resize-mode'.
-2016-03-24 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Avoid stray As next to IDLW icons
@@ -3461,7 +3462,7 @@
Use "" for empty labels, not "a", as the latter now displays stray
"A"s (Bug#18997).
-2016-03-24 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Avoid GTK 3 crash with icons and masks
@@ -3474,13 +3475,13 @@
or images that are not 8 bits per sample) instead of displaying
junk or crashing.
-2016-03-24 Juri Linkov <juri@linkov.net>
+2016-06-19 Juri Linkov <juri@linkov.net>
* lisp/minibuffer.el (minibuffer-completion-help): Use fit-window-to-buffer
instead of shrink-window-if-larger-than-buffer. (Bug#23092)
-2016-03-24 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Define make_save_ptr_ptr unconditionally
@@ -3488,14 +3489,14 @@
USE_X_TOOLKIT || defined USE_GTK) conditional. Reported by
Philipp Stephani <phst@google.com>. (Bug#23101)
-2016-03-24 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Preserve current buffer when popping up TTY menus
* src/term.c (tty_menu_show): Be sure to save and restore the
current buffer around TTY menu pop-ups. (Bug#23101)
-2016-03-24 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve font selection by family on MS-Windows
@@ -3507,7 +3508,7 @@
of a face have no effect on MS-Windows, because they are rejected
due to bogus mismatch of the charset.
-2016-03-23 Paul Eggert <eggert@penguin.cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@penguin.cs.ucla.edu>
Comint, term, and compile now set EMACS
@@ -3523,7 +3524,7 @@
Go back to setting the EMACS environment variable, for backward
compatibility to Bash 4.3 and earlier.
-2016-03-23 Paul Eggert <eggert@penguin.cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@penguin.cs.ucla.edu>
Ignore more merges when generating ChangeLog
@@ -3531,7 +3532,7 @@
not merely those from master and emacs-NN. The ChangeLog entries
they generate are not that useful.
-2016-03-23 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Sync with gnulib
@@ -3541,7 +3542,7 @@
* build-aux/gitlog-to-changelog, doc/misc/texinfo.tex:
* lib/sys_select.in.h: Copy from gnulib.
-2016-03-23 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Resurrect GNUS-NEWS autogeneration
@@ -3552,7 +3553,7 @@
procedure for building GNUS-NEWS. The old procedure got lost
somehow when Gnus was merged into Emacs.
-2016-03-22 Anders Lindgren <andlind@gmail.com>
+2016-06-19 Anders Lindgren <andlind@gmail.com>
Make `toggle-frame-maximized' respect the dock on OS X (bug#22988).
@@ -3562,7 +3563,7 @@
([EmacsWindow zoom:]): Take all screen margins (except those
originating from a hidden dock) into account.
-2016-03-22 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix bug in displaying header line with a box face
@@ -3570,7 +3571,7 @@
display string acquires the box face from an underlying string,
not from the buffer. (Bug#23091)
-2016-03-21 Kaushal Modi <kaushal.modi@gmail.com>
+2016-06-19 Kaushal Modi <kaushal.modi@gmail.com>
Fix an Isearch var to be a string (Bug#23038)
@@ -3585,14 +3586,14 @@
`replace-regexp-in-string' (where a string was expected). That caused
the error described in Bug#23038.
-2016-03-21 Leo Liu <sdl.web@gmail.com>
+2016-06-19 Leo Liu <sdl.web@gmail.com>
Fix (args-out-of-range 1) error in cursor-sensor--detect
* lisp/emacs-lisp/cursor-sensor.el (cursor-sensor--detect): Don't
hard-code (point-min) as 1 which fails in narrowed buffers.
-2016-03-20 Lars Magne Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Magne Ingebrigtsen <larsi@gnus.org>
Render empty <ul><li><ul> correctly
@@ -3602,7 +3603,7 @@
Backport:
-2016-03-20 Lars Magne Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Magne Ingebrigtsen <larsi@gnus.org>
Ignore invalid base64 encoded embedded images
@@ -3612,7 +3613,7 @@
Backport:
-2016-03-20 Lars Magne Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Magne Ingebrigtsen <larsi@gnus.org>
Fix <p> and <div> newlines with or without <li> in shr
@@ -3626,21 +3627,21 @@
Backport:
-2016-03-19 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Avoid errors in 'newline'
* lisp/simple.el (newline): Don't barf if invoked with
non-positive argument in the middle of a line. (Bug#22490)
-2016-03-19 Michael Albinus <michael.albinus@gmx.de>
+2016-06-19 Michael Albinus <michael.albinus@gmx.de>
Fix Bug#23032
* doc/misc/eshell.texi (Arguments): Mention the pipe symbol in
remote file names. (Bug#23032)
-2016-03-19 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Adjudicate review comments in abbrevs.texi
@@ -3652,7 +3653,7 @@
* admin/release-process (Check manuals): Mark files reviewed by
Steve Byrne.
-2016-03-18 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Fixup the "normal" matcher; highlight global var symbols, too
@@ -3660,7 +3661,7 @@
operator name symbols with the "normal" matcher (it actually
needed updating). Highlight global variable symbols, too.
-2016-03-18 Marcin Borkowski <mbork@mbork.pl>
+2016-06-19 Marcin Borkowski <mbork@mbork.pl>
Honor prefix arg in doc-view-next-line-or-next-page
@@ -3668,7 +3669,7 @@
prefix argument into consideration when continuous scrolling is
not in effect (i.e., by default) (bug#19559).
-2016-03-18 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Port to strict C99 offsetof
@@ -3677,7 +3678,7 @@
Use only a single identifier as the second argument of offsetof.
Found by using clang -pedantic.
-2016-03-18 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Port to GTK with strict C11 compiler
@@ -3687,7 +3688,7 @@
g_signal_handler_find and g_signal_handlers_block_by_func, which
use gpointer instead of GCallback. Found by using gcc -pedantic.
-2016-03-18 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Port to GTK with strict C99 compiler
@@ -3697,7 +3698,7 @@
* src/emacsgtkfixed.h (EmacsFixedClass):
Remove duplicate typedef, which strict C99 does not allow (Bug#23003).
-2016-03-17 Anders Lindgren <andlind@gmail.com>
+2016-06-19 Anders Lindgren <andlind@gmail.com>
Avoid screen artifacts with new OS X visible bell after scrolling
@@ -3706,14 +3707,14 @@
(hide_bell): Trace.
(ns_copy_bits): Trace.
-2016-03-17 Michael Albinus <michael.albinus@gmx.de>
+2016-06-19 Michael Albinus <michael.albinus@gmx.de>
Suppress some Tramp tests for OSX, do not merge with master
* test/automated/tramp-tests.el (tramp--test-darwin-p): New defun.
(tramp--test-utf8): Use it. (Bug#22145)
-2016-03-17 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* lisp/progmodes/xref.el (xref-buffer-name, xref--window):
Move definitions before use.
@@ -3722,7 +3723,7 @@
* lisp/mail/rmail.el (rmail-mime-entity-truncated): Declare.
-2016-03-17 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
Address compilation warnings due to 2016-01-03 mml refactoring.
@@ -3735,13 +3736,13 @@
* lisp/gnus/mml1991.el, lisp/gnus/mml2015.el:
No longer a need for password-cache.
-2016-03-16 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-06-19 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/smie.el (smie-indent-keyword): Don't burp in strings
(bug#22960).
-2016-03-16 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* lisp/dired-x.el (dired-omit-here-always): Correct error message
for 2016-01-25 change.
@@ -3751,21 +3752,21 @@
* lisp/xml.el (xml-parse-tag-1): Replace undefined function.
-2016-03-16 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Avoid segfaults due to frame image cache being absent
* src/image.c (cache_image): If the frame doesn't have an image
cache, create it. (Bug#23028)
-2016-03-16 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve documentation of glyphless-character display
* doc/emacs/display.texi (Text Display): Document and index the
'glyphless-char' face.
-2016-03-16 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Support safe navigation operator in non-SMIE indentation code
@@ -3774,7 +3775,7 @@
Cherry-picked from
https://github.com/ruby/ruby/commit/68e16ddd7961b86e5013e62ae2954e88638de058.
-2016-03-16 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2016-06-19 Thomas Fitzsimmons <fitzsim@fitzsim.org>
Move xsd:base64Binary decoding fix to debbugs.el 0.9.1
@@ -3783,14 +3784,14 @@
(soap-decode-xs-basic-type): Likewise.
(soap-invoke): Document xsd:base64Binary handling.
-2016-03-15 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Fix Ruby's operator precedence
* lisp/progmodes/ruby-mode.el (ruby-smie-grammar):
Rearrange the smie-precs->prec2 form.
-2016-03-15 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
(ruby-interpolation-inside-another-interpolation): New failing test
@@ -3798,7 +3799,7 @@
(ruby-interpolation-inside-another-interpolation):
New failing test.
-2016-03-15 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Port to clang 3.7.0 on x86-64
@@ -3812,12 +3813,12 @@
uninitialized locals. This avoids undefined behavior and pacifies
clang.
-2016-03-15 Glenn Morris <rgm@gnu.org>
+2016-06-19 Glenn Morris <rgm@gnu.org>
* test/automated/package-test.el (package-test-signed): Tweak skip
condition, for hydra.
-2016-03-15 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Sync with gnulib
@@ -3826,7 +3827,7 @@
2016-03-15 select: port more to Intel 2016.1.150 compiler
* lib/sys_select.in.h, lib/time_rz.c: Copy from gnulib.
-2016-03-15 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix startup of "emacs -nw" on systems that CANNOT_DUMP
@@ -3836,14 +3837,14 @@
* lisp/loadup.el <resize-mini-windows>: Set to 'grow-only' after
loading window.el. (Bug#22975)
-2016-03-14 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Do not tokenize a comment before continuation as ';'
* lisp/progmodes/ruby-mode.el (ruby-smie--implicit-semi-p):
Account for a comment right after point.
-2016-03-14 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Don't misindent arguments of a method call inside continuation
@@ -3851,14 +3852,14 @@
Use smie-indent-virtual instead of smie-rule-parent (bug#23015).
Simplify the traversal loop.
-2016-03-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-06-19 Stefan Monnier <monnier@iro.umontreal.ca>
* src/keyboard.c (echo_keystrokes_p): Don't test cursor_in_echo_area
(read_key_sequence): Test it here, as before.
(bug#22825).
-2016-03-14 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
ASCII-only etc/NEWS etc.
@@ -3868,7 +3869,7 @@
UTF-8-ignorant tools, rewrite its non-ASCII text to spell out
Unicode, e.g., replace ‘‒’ with ‘U+2012 (FIGURE DASH)’.
-2016-03-14 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Fix a cacheing bug, which led to inordinately slow c-beginning-of-defun.
@@ -3883,7 +3884,7 @@
c-self-bind-state-cache around the processing, replacing flawed bindings of
c-state-cache.
-2016-03-14 Alan Mackenzie <acm@muc.de>
+2016-06-19 Alan Mackenzie <acm@muc.de>
Fix a cacheing bug, which led to inordinately slow c-beginning-of-defun.
@@ -3898,7 +3899,7 @@
c-self-bind-state-cache around the processing, replacing flawed bindings of
c-state-cache.
-2016-03-14 Kaushal Modi <kaushal.modi@gmail.com>
+2016-06-19 Kaushal Modi <kaushal.modi@gmail.com>
Fix Isearch prompt when invoked with an argument
@@ -3910,14 +3911,14 @@
mode. Comments have been added to explain the priority of conditions
in the `cond' form. (Bug#22991)
-2016-03-14 Cesar Quiroz <cesar.quiroz@gmail.com> (tiny change)
+2016-06-19 Cesar Quiroz <cesar.quiroz@gmail.com> (tiny change)
Fix a typo in the Emacs manual
* doc/emacs/maintaining.texi (VC Directory Commands): Fix a typo
in a command name.
-2016-03-14 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Curved quotes in etc/NEWS etc.
@@ -3925,7 +3926,7 @@
recently-changed text documentation. See:
http://lists.gnu.org/archive/html/emacs-devel/2016-03/msg00860.html
-2016-03-14 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Fix some single quotes in documentation
@@ -3935,21 +3936,21 @@
'like this' consistently, rather than also (sometimes) ‘like this’
or (more often) `like this'.
-2016-03-13 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Make lisp-completion-at-point's argument optional
* lisp/progmodes/elisp-mode.el (lisp-completion-at-point): Make
the argument optional, like it was before the rename.
-2016-03-13 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Tweak the left precedence of '=>'
* lisp/progmodes/ruby-mode.el (ruby-smie-grammar): Tweak the left
precedence of '=>', to improve indentation and sexp navigation.
-2016-03-13 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Indent '.' relative to the first sibling expression
@@ -3957,20 +3958,20 @@
Indent '.' relative to the first sibling expression, instead of the
parent token (bug#17213).
-2016-03-13 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Make '.' associative, for easier sexp navigation
* lisp/progmodes/ruby-mode.el (ruby-smie-grammar):
Make '.' associative, for easier sexp navigation.
-2016-03-13 Phillip Lord <phillip.lord@russet.org.uk>
+2016-06-19 Phillip Lord <phillip.lord@russet.org.uk>
Revert "Simplify "Visit New File" to "New File""
This reverts commit d457fd9dc782465e1547f74021390c9d5951d6af.
-2016-03-12 Phillip Lord <phillip.lord@russet.org.uk>
+2016-06-19 Phillip Lord <phillip.lord@russet.org.uk>
Simplify "Visit New File" to "New File"
@@ -3979,7 +3980,7 @@
normal-no-mouse-startup-screen): Change label "Visit New File" to "New
File".
-2016-03-12 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Update Unicode notes for importing a new Unicode version
@@ -3987,7 +3988,7 @@
in fontset.el when importing data files from a new Unicode
version.
-2016-03-12 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Import new data files from Unicode 9.0.0beta
@@ -4012,7 +4013,7 @@
* lisp/international/mule-cmds.el (ucs-names): Update ranges per
Unicode 9.0.0 additions.
-2016-03-12 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Avoid errors in forms-mode when default major mode is text
@@ -4020,7 +4021,7 @@
change-major-mode-with-file-name to nil when calling
set-visited-file-name. (Bug#22982)
-2016-03-12 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Avoid crashes at startup on systems that CANNOT_DUMP
@@ -4037,14 +4038,14 @@
successfully loaded, or when we are going to dump, whichever
happens last. (Bug#22975)
-2016-03-12 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix documentation of seq.el functions
* doc/lispref/sequences.texi (Sequence Functions): Fix typos. Add
cross-references. Fix formatting. (Bug#22992)
-2016-03-11 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Support Ruby 2.3.0's safe navigation operator
@@ -4055,13 +4056,13 @@
* test/indent/ruby.rb: Add an example using safe navigation
operator. Fix a syntax error in existing example.
-2016-03-11 John Wiegley <johnw@newartisans.com>
+2016-06-19 John Wiegley <johnw@newartisans.com>
Update Emacs manual section related to character folding
* doc/emacs/search.texi: Character folding is not on by default.
-2016-03-11 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Update admin/notes/unicode
@@ -4069,7 +4070,7 @@
are using. Mention the possible need to change 'ucs-names' when
importing a new version of the Unicode Standard.
-2016-03-10 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Add symref-filepattern entries for c?perl-mode
@@ -4077,7 +4078,7 @@
(semantic-symref-filepattern-alist): Add entries for perl-mode and
cperl-mode.
-2016-03-10 Ken Raeburn <raeburn@raeburn.org>
+2016-06-19 Ken Raeburn <raeburn@raeburn.org>
Don't use XRANDR 1.3 extensions if the server doesn't support them.
@@ -4092,7 +4093,7 @@
each function.
* configure.ac: Stop testing for those two functions.
-2016-03-10 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Sync with gnulib
@@ -4104,7 +4105,7 @@
* m4/extern-inline.m4:
Copy from gnulib.
-2016-03-10 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Rework C source files to avoid ^(
@@ -4114,7 +4115,7 @@
performance for C files that have ‘(’ at the start of a line in a
comment or string.
-2016-03-10 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
By default, etags produces unqualified Perl tag names
@@ -4132,7 +4133,7 @@
* test/etags/CTAGS.good: Adapt the expected test results to the
changed Perl functionality.
-2016-03-10 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Indent methods with keyword names correctly
@@ -4140,7 +4141,7 @@
Rename to ruby-smie--before-method-name. Now also check if we're
after a 'def' keyword. Update both callers.
-2016-03-10 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Propertize character literals and special global variables differently
@@ -4151,19 +4152,19 @@
(ruby-font-lock-keywords): Fix an old regression in highlighting
character literals.
-2016-03-09 John Wiegley <johnw@newartisans.com>
+2016-06-19 John Wiegley <johnw@newartisans.com>
Change how /etc/NEWS presents character folding
* NEWS: Note that character folding is no longer the default.
-2016-03-09 John Wiegley <johnw@newartisans.com>
+2016-06-19 John Wiegley <johnw@newartisans.com>
Revert "Revert "Backport: * lisp/isearch.el: Turn char-folding off by default""
This reverts commit a91b4b51ddf2575d821adb8b84fdf32cff83886e.
-2016-03-09 Andreas Schwab <schwab@linux-m68k.org>
+2016-06-19 Andreas Schwab <schwab@linux-m68k.org>
Properly handle lambda as read function (bug 22961)
@@ -4171,7 +4172,7 @@
string in cons for read_vector.
(unreadchar): Likewise.
-2016-03-09 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Propertize operator symbol names with symbol syntax class
@@ -4187,7 +4188,7 @@
at EOL the same way: check if the character has been assigned the
symbol syntax class by syntax-propertize.
-2016-03-09 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Stop recognizing :#{} as symbol in ruby-mode
@@ -4196,7 +4197,7 @@
construct without quotes (e.g. ':#{abc}') as symbol, which is just a
syntax error in any modern version of Ruby. Fix nearby bug reference.
-2016-03-09 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Allow using the left shift operator without spaces on both sides
@@ -4207,7 +4208,7 @@
* test/automated/ruby-mode-tests.el (ruby-no-heredoc-left-shift)
(ruby-no-heredoc-class-self): New tests.
-2016-03-08 Andreas Schwab <schwab@linux-m68k.org>
+2016-06-19 Andreas Schwab <schwab@linux-m68k.org>
Properly handle unquoting in wdired (bug 22938)
@@ -4218,21 +4219,21 @@
(wdired-get-filename): Don't unquote the old file name.
(wdired-get-previous-link): Always unquote.
-2016-03-06 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Allow splat operator before percent literal
* lisp/progmodes/ruby-mode.el (ruby-syntax-propertize):
Allow splat operator before percent literal.
-2016-03-06 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Don't apply the return value of goto-char as syntax class
* lisp/progmodes/ruby-mode.el (ruby-syntax-propertize): Don't
apply the return value of goto-char as syntax class.
-2016-03-06 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Guard against nested percent literals
@@ -4245,7 +4246,7 @@
* test/automated/ruby-mode-tests.el
(ruby-no-nested-percent-literals): New test.
-2016-03-06 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Recognize iuwu-mod after an escaped newline
@@ -4254,7 +4255,7 @@
(ruby-smie-rules): Indent iuwu-mod after an escaped newline
correctly.
-2016-03-06 Andreas Schwab <schwab@linux-m68k.org>
+2016-06-19 Andreas Schwab <schwab@linux-m68k.org>
Fix symbolic mode string conversion for s and t
@@ -4262,21 +4263,21 @@
?t.
(file-modes-symbolic-to-number): Default to a for ts permissions.
-2016-03-06 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Update 'ucs-names' database
* lisp/international/mule-cmds.el (ucs-names): Update used and
unused ranges from the latest UnicodeData.txt.
-2016-03-06 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Improve doc string of 'shell-command'
* lisp/simple.el (shell-command): Mention that COMMAND is prompted
for. (Bug#22926)
-2016-03-06 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Make the code in movemail_strftime more general
@@ -4284,7 +4285,7 @@
string passed by the caller instead of using a separate format
string.
-2016-03-06 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Speed up redisplay of binary files with long series of nulls
@@ -4300,7 +4301,7 @@
a paragraph separator if the current character is already at base
embedding level. (Bug#22739)
-2016-03-05 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Remove the highlighting support for quoting 'like this' inside Lisp docstrings
@@ -4313,7 +4314,7 @@
(lisp-cl-font-lock-keywords-2): Do not highlight text between two
straight quotes as symbol.
-2016-03-05 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
Restore leading space in movemail pop output
@@ -4324,7 +4325,7 @@
that should do the right thing. That way, the output continues
to use leading space rather than leading zero for day of month.
-2016-03-05 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix bidi-paragraph-direction in Rmail view buffer
@@ -4332,7 +4333,7 @@
bidi-paragraph-direction to nil before formatting the message for
display.
-2016-03-05 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Don't misindent computed property generator methods
@@ -4340,7 +4341,7 @@
Don't misindent computed property generator methods
(https://github.com/mooz/js2-mode/issues/317).
-2016-03-05 Eli Zaretskii <eliz@gnu.org>
+2016-06-19 Eli Zaretskii <eliz@gnu.org>
Fix mbox files produced by movemail on MS-Windows
@@ -4348,21 +4349,21 @@
format specifiers, as at least the MS-Windows version of strftime
doesn't support %e and %T.
-2016-03-04 Paul Eggert <eggert@cs.ucla.edu>
+2016-06-19 Paul Eggert <eggert@cs.ucla.edu>
doc string file descriptor exhaustion fix
* src/doc.c (get_doc_string): Move newly-added check to a better
location (Bug#22814).
-2016-03-04 Michael Albinus <michael.albinus@gmx.de>
+2016-06-19 Michael Albinus <michael.albinus@gmx.de>
Fix Bug#22814
* src/doc.c (get_doc_string): Raise an error in case too many
files are open. (Bug#22814)
-2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
+2016-06-19 Lars Ingebrigtsen <larsi@gnus.org>
Fix insertion of edited servers in the dribble file
@@ -4373,7 +4374,7 @@
(cherry picked from commit ca4e30058eba0531f38fff75f14734acffab84ea)
-2016-03-04 Martin Rudalics <rudalics@gmx.at>
+2016-06-19 Martin Rudalics <rudalics@gmx.at>
Fix previous fix of enlarge-/shrink-window
@@ -4384,25 +4385,25 @@
in the enlarge-/shrink-window group (this restores the behavior
before the fix of bug#22723 for the non-interactive case).
-2016-03-03 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-06-19 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/isearch.el (isearch-define-mode-toggle): Fix toggling logic
-2016-03-03 Mark Oteiza <mvoteiza@udel.edu>
+2016-06-19 Mark Oteiza <mvoteiza@udel.edu>
Complete temperature units in calc-convert-temperature
* lisp/calc/calc-units.el (calc-convert-temperature): Complete with
temperature units in math-standard-units.
-2016-03-02 Dmitry Gutov <dgutov@yandex.ru>
+2016-06-19 Dmitry Gutov <dgutov@yandex.ru>
Make sure to use case-sensitive search
* lisp/progmodes/xref.el (xref-collect-references): Make sure to
use case-sensitive search.
-2016-03-02 Ulf Jasper <ulf.jasper@web.de>
+2016-06-19 Ulf Jasper <ulf.jasper@web.de>
Prevent infinite loop on not-well-formed xml. (Bug#16344)
@@ -4410,7 +4411,7 @@
* test/automated/xml-parse-tests.el (xml-parse-tests--bad-data): Add
test cases for Bug#16344.
-2016-03-02 Alan Third <alan@idiocy.org>
+2016-06-19 Alan Third <alan@idiocy.org>
Add the missing test case for the previous patch
@@ -4420,7 +4421,7 @@
DABBREV--SUBSTITUTE-EXPANSION.
test/automated/dabbrev-tests.el (dabbrev-expand-test): Test for bug#1948.
-2016-03-02 Alan Third <alan@idiocy.org>
+2016-06-19 Alan Third <alan@idiocy.org>
Use the correct dabbrev expansion
@@ -4430,7 +4431,7 @@
DABBREV--SUBSTITUTE-EXPANSION.
test/automated/dabbrev-tests.el (dabbrev-expand-test): Test for bug#1948.
-2016-03-02 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
Bump version to 25.0.92
@@ -4438,24 +4439,25 @@
* configure.ac:
* msdos/sed2v2.inp: Bump version to 25.0.92.
-2016-03-02 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
* etc/AUTHORS: Update the AUTHORS file
-2016-03-02 Nicolas Petton <nicolas@petton.fr>
+2016-06-19 Nicolas Petton <nicolas@petton.fr>
authors.el updates
* admin/authors.el (authors-ignored-files): Addition.
-2016-03-02 Michael Albinus <michael.albinus@gmx.de>
+2016-06-19 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
Fix Bug#22859
* lisp/filenotify.el (file-notify-callback): Return a `deleted'
event in case of kqueue and file1 is nil. (Bug#22859)
-2016-03-01 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix reordering of bidi text in an isolate inside an override
@@ -4465,7 +4467,7 @@
isolate when the FSI...PDI text is inside a directional override.
(Bug#22786)
-2016-03-01 Alan Mackenzie <acm@muc.de>
+2016-03-04 Alan Mackenzie <acm@muc.de>
Document c-guess-basic-syntax in the CC Mode manual.
@@ -4474,20 +4476,20 @@
(Custom Line-Up): Add a note on using c-guess-basic-syntax with a pxref to
Syntactic Analysis.
-2016-03-01 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
Fix targets in test/automated/Makefile.in
* test/automated/Makefile.in: Use $(SELECTOR_DEFAULT) also for
empty target and target all.
-2016-03-01 Leo Liu <sdl.web@gmail.com>
+2016-03-04 Leo Liu <sdl.web@gmail.com>
Comment on last change to define-derived-mode
* lisp/emacs-lisp/derived.el (define-derived-mode): Add comment.
-2016-03-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
Allow binding `url-mime-accept-string'
@@ -4498,14 +4500,14 @@
(cherry picked from commit 144bb0cf322b9756d29def3e27a42303e2edce43)
-2016-03-01 Lars Ingebrigtsen <larsi@gnus.org>
+2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
Also allow setting the paragraph direction to nil
* lisp/net/eww.el (eww-toggle-paragraph-direction): Also allow
setting the paragraph direction to nil ("auto").
-2016-02-29 Anders Lindgren <andlind@gmail.com>
+2016-03-04 Anders Lindgren <andlind@gmail.com>
Made the new OS X visible bell more visible.
@@ -4513,7 +4515,7 @@
"caution" image five times, as the image in its original size
was hard to see.
-2016-02-29 Lars Ingebrigtsen <larsi@gnus.org>
+2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
Use the correct background color when filling nested <divs>
@@ -4524,7 +4526,7 @@
(cherry picked from commit cad0bc70558f9c28c808711c5295dec9fc5ad6e5)
-2016-02-29 Lars Ingebrigtsen <larsi@gnus.org>
+2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
Make <div> in <li> not insert extra newlines
@@ -4535,7 +4537,7 @@
(cherry picked from commit 379a846b8548dc32a9019ef0a37c02f62cd9bad1)
-2016-02-29 Dmitry Gutov <dgutov@yandex.ru>
+2016-03-04 Dmitry Gutov <dgutov@yandex.ru>
Uncomment the next-error-function integration in xref
@@ -4543,18 +4545,18 @@
Uncomment the next-error-function integration
(http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20489#110).
-2016-02-29 Dmitry Gutov <dgutov@yandex.ru>
+2016-03-04 Dmitry Gutov <dgutov@yandex.ru>
Remove the word "valid", to avoid ambiguity
* doc/emacs/maintaining.texi (Identifier Search)
(Looking Up Identifiers): Remove the word "valid" (bug#22692).
-2016-02-28 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
Merge branch 'emacs-25' of git.sv.gnu.org:/srv/git/emacs into emacs-25
-2016-02-28 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
Set auto-revert-use-notify to nil in global-auto-revert-mode. (Bug#22814)
@@ -4564,25 +4566,25 @@
* lisp/autorevert.el (global-auto-revert-mode): Set
`auto-revert-use-notify' to nil. (Bug#22814)
-2016-02-28 Paul Eggert <eggert@cs.ucla.edu>
+2016-03-04 Paul Eggert <eggert@cs.ucla.edu>
* etc/TODO: Minor quoting and grammar fixes.
-2016-02-28 Friedrich Beckmann <friedrich.beckmann@gmx.de> (tiny change)
+2016-03-04 Friedrich Beckmann <friedrich.beckmann@gmx.de> (tiny change)
Fix ModelSim error parsing
* lisp/progmodes/vhdl-mode.el (vhdl-compiler-alist): Fix
ModelSim error parsing (bug#5768).
-2016-02-28 Lars Ingebrigtsen <larsi@gnus.org>
+2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
Make parse-time-string-chars faster
* lisp/calendar/parse-time.el (parse-time-string-chars): Clean
up the code (backport:).
-2016-02-28 Lars Ingebrigtsen <larsi@gnus.org>
+2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
Add a eww command to toggle paragraph direction
@@ -4591,25 +4593,25 @@
* doc/misc/eww.texi (Advanced): Mention the `D' command.
-2016-02-27 Glenn Morris <rgm@gnu.org>
+2016-03-04 Glenn Morris <rgm@gnu.org>
* nextstep/WISHLIST: Merge into etc/TODO and remove.
* etc/TODO: Merge in items from nextstep/WISHLIST.
* nextstep/README: Update for this change.
-2016-02-27 Andreas Schwab <schwab@linux-m68k.org>
+2016-03-04 Andreas Schwab <schwab@linux-m68k.org>
Fix char signedness issue in bidi code
* src/dispextern.h (struct bidi_t): Change type of resolved_level
and isolate_level to signed char. (Bug#22830)
-2016-02-27 Andreas Schwab <schwab@linux-m68k.org>
+2016-03-04 Andreas Schwab <schwab@linux-m68k.org>
* lib-src/pop.c (socket_connection): Fix format string.
-2016-02-27 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Avoid inflooping in thing-at-point-looking-at
@@ -4618,22 +4620,22 @@
(Bug#22756)
Describe the argument DISTANCE in the doc string.
-2016-02-27 Leo Liu <sdl.web@gmail.com>
+2016-03-04 Leo Liu <sdl.web@gmail.com>
* lisp/emacs-lisp/derived.el (define-derived-mode): Revert indent change.
-2016-02-26 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
etc/PROBLEMS: Mention problems with using file descriptors
* etc/PROBLEMS: Mention problems with using file descriptors
of kqueue file notification library.
-2016-02-26 Kaushal Modi <kaushal.modi@gmail.com>
+2016-03-04 Kaushal Modi <kaushal.modi@gmail.com>
* lisp/apropos.el (apropos-variable): Doc fix. (Bug#22813).
-2016-02-25 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Remove unneeded workaround in xftfont.c
@@ -4641,7 +4643,7 @@
XftTextExtents8 behavior, as it is no longer needed. Suggested by
Fangwen Yu <yynyygy@gmail.com>. (Bug#22383)
-2016-02-25 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-03-04 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/saveplace.el (save-place-local-mode): New minor mode
@@ -4649,42 +4651,42 @@
(save-place--setup-hooks): New function.
(save-place-mode): Use it.
-2016-02-25 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix redisplay on a TTY after 'make-frame'
* src/xdisp.c (clear_garbaged_frames): Don't clear/redraw a
garbaged TTY frame if it is not the selected frame. (Bug#22794)
-2016-02-25 Alan Mackenzie <acm@muc.de>
+2016-03-04 Alan Mackenzie <acm@muc.de>
Make double-click-1 work with unbalanced parens in CC Mode. Fixes bug#5560.
* lisp/mouse.el (mouse-start-end): check the syntax of alleged parens with
`syntax-after' to ensure syntax-table text properties are respected.
-2016-02-25 Magnus Henoch <magnus.henoch@gmail.com>
+2016-03-04 Magnus Henoch <magnus.henoch@gmail.com>
Input method polish-slash should not use keyboard translation
* lisp/leim/quail/latin-pre.el ("polish-slash"): Input method
polish-slash should not use keyboard translation (bug#19081).
-2016-02-25 Chris Feng <chris.w.feng@gmail.com>
+2016-03-04 Chris Feng <chris.w.feng@gmail.com>
Fix an assertion
* src/dispnew.c (clear_glyph_matrix_rows): Test matrix->nrows == 0 (which
implies start == 0) separately.
-2016-02-24 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix 'toggle-save-place'
* lisp/saveplace.el (toggle-save-place): Set up hooks necessary to
support save-place in the buffer. Autoload the command.
-2016-02-24 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-03-04 Stefan Monnier <monnier@iro.umontreal.ca>
* src/keyboard.c: Don't inadvertently set immediate_echo (bug#22581)
@@ -4692,7 +4694,7 @@
immediate_echo when we don't want any echo-keystrokes.
(echo_keystrokes_p): Move earlier.
-2016-02-24 Chris Zheng <chriszheng99@gmail.com> (tiny change)
+2016-03-04 Chris Zheng <chriszheng99@gmail.com> (tiny change)
Minor fixes in calculator.el
@@ -4701,14 +4703,14 @@
(calculator-last-input): Fix a bug with pressing F1.
(Bug#20764)
-2016-02-24 Anders Lindgren <andlind@gmail.com>
+2016-03-04 Anders Lindgren <andlind@gmail.com>
Update HISTORY section in readme for the NextStep interface.
* nextstep/README: Update HISTORY after suggestion
from former maintainer Adrian Robert.
-2016-02-24 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'save-place-mode'
@@ -4718,7 +4720,7 @@
* etc/NEWS: Mention the need to call 'save-place-mode' for turning
on the mode in all buffers.
-2016-02-24 Chris Feng <chris.w.feng@gmail.com> (tiny change)
+2016-03-04 Chris Feng <chris.w.feng@gmail.com> (tiny change)
Allocate glyph matrices for the initial frame
@@ -4726,11 +4728,11 @@
* src/dispnew.c (clear_glyph_matrix_rows): matrix->nrows can be 0.
-2016-02-24 Lars Ingebrigtsen <larsi@gnus.org>
+2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
Fix white space in last checkin
-2016-02-24 Dima Kogan <gnuplot@dima.secretsauce.net>
+2016-03-04 Dima Kogan <gnuplot@dima.secretsauce.net>
Make `insert-pair' always leave the cursor where documented
@@ -4739,14 +4741,14 @@
after the opening character. This was not true if the pair was
inserted to surround a region (bug#16949).
-2016-02-24 Kaushal Modi <kaushal.modi@gmail.com>
+2016-03-04 Kaushal Modi <kaushal.modi@gmail.com>
etc/NEWS: Mention the new second parameter to `package-install'
* etc/NEWS: Mention the new second parameter to
`package-install' (bug#22784).
-2016-02-24 John F. Trudeau <JFTrudeau@aetna.com> (tiny change)
+2016-03-04 John F. Trudeau <JFTrudeau@aetna.com> (tiny change)
Highlight assignments in Makefiles more correctly
@@ -4759,21 +4761,21 @@
(cherry picked from commit bbd86c5642bd62c43d72391669f28eaa14459fd5)
-2016-02-23 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Improve documentation of focus-related hooks
* doc/lispref/commands.texi (Focus Events): Mention focus-related
hooks. (Bug#21728)
-2016-02-23 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Further improve doc string of 'disable-point-adjustment'
* src/keyboard.c (syms_of_keyboard): <disable-point-adjustment>
<global-disable-point-adjustment>: Clarify doc strings. (Bug#22771)
-2016-02-23 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
Further adaptions in file-notify-tests.el for w32notify
@@ -4786,7 +4788,7 @@
(file-notify-test08-watched-file-in-watched-dir):
Adapt expected events for w32notify.
-2016-02-23 Jan Tatarik <jan.tatarik@gmail.com>
+2016-03-04 Jan Tatarik <jan.tatarik@gmail.com>
Don't bug out on localised dates in gnus-icalendar
@@ -4794,7 +4796,7 @@
(gnus-icalendar-event:org-timestamp): Don't bug out on
localised dates.
-2016-02-23 Drew Adams <drew.adams@oracle.com>
+2016-03-04 Drew Adams <drew.adams@oracle.com>
(ls-lisp-insert-directory): Make -B work
@@ -4805,7 +4807,7 @@
(cherry picked from commit ef52e66efd78aac4c4e5bd5e11870e5ba3b37a1e)
-2016-02-23 Vaidheeswaran C <vaidheeswaran.chinnaraju@gmail.com>
+2016-03-04 Vaidheeswaran C <vaidheeswaran.chinnaraju@gmail.com>
Make buttons in header lines work
@@ -4816,14 +4818,14 @@
(cherry picked from commit c11e565a6b6d09fa39d4c3ef65bef08190eaecc1)
-2016-02-23 Christopher Wellons <wellons@nullprogram.com>
+2016-03-04 Christopher Wellons <wellons@nullprogram.com>
Make setf for frame-height/width work again
* lisp/emacs-lisp/cl-lib.el (frame-height): Make setf for
frame-height/width work again (bug#21979).
-2016-02-23 Åukasz Stelmach <stlman@poczta.fm>
+2016-03-04 Åukasz Stelmach <stlman@poczta.fm>
Encode header strings before printing
@@ -4835,7 +4837,7 @@
(cherry picked from commit 3cedbdcc71ebefc12bd20ec84f74251fe99ee7d0)
-2016-02-23 Nicolas Richard <youngfrog@members.fsf.org>
+2016-03-04 Nicolas Richard <youngfrog@members.fsf.org>
(cl-union): Do not ignore :test argument when lists are equal.
@@ -4843,7 +4845,7 @@
* test/automated/cl-seq-tests.el: New file (bug#22729).
-2016-02-23 Lars Ingebrigtsen <larsi@gnus.org>
+2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
Add `isearch' to `basic-faces'
@@ -4853,7 +4855,7 @@
* lisp/replace.el (match): Add `isearch' to the `basic-faces'
group, too (bug#22760).
-2016-02-23 Dmitry Gutov <dgutov@yandex.ru>
+2016-03-04 Dmitry Gutov <dgutov@yandex.ru>
Make $, : and @ "prefix characters" in ruby-mode
@@ -4866,14 +4868,14 @@
(ruby-font-lock-keywords): Adjust the constants matcher for `:'
not being a symbol constituent anymore.
-2016-02-23 Dmitry Gutov <dgutov@yandex.ru>
+2016-03-04 Dmitry Gutov <dgutov@yandex.ru>
Make find-tag-default-bounds more strict
* lisp/subr.el (find-tag-default-bounds): Delegate to
bounds-of-thing-at-point (bug#22692).
-2016-02-22 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
Minor fixes in filenotify.el
@@ -4882,7 +4884,7 @@
(file-notify--event-watched-file): Use cl-caadr.
(file-notify-callback): Handle also `ignore' events from inotify.
-2016-02-22 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
Additional fixes for file notification
@@ -4900,14 +4902,14 @@
(file-notify-test07-backup): Adapt expected events for gfilenotify.
(file-notify-test08-watched-file-in-watched-dir): Improve.
-2016-02-22 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix documentation of 'global-disable-point-adjustment'
* src/keyboard.c (syms_of_keyboard) <disable-point-adjustment>
<global-disable-point-adjustment>: Doc fixes. (Bug#22771)
-2016-02-22 Daiki Ueno <ueno@gnu.org>
+2016-03-04 Daiki Ueno <ueno@gnu.org>
Set file modes of pinentry socket for extra safety
@@ -4916,21 +4918,21 @@
This is just for extra safety since the parent directory is already
protected with `server-ensure-safe-dir'.
-2016-02-22 Daiki Ueno <ueno@gnu.org>
+2016-03-04 Daiki Ueno <ueno@gnu.org>
Clarify GnuPG version compatibility chapter
* doc/misc/epa.texi (GnuPG version compatibility): Make the gpg-agent
description a bit clearer.
-2016-02-22 Daiki Ueno <ueno@gnu.org>
+2016-03-04 Daiki Ueno <ueno@gnu.org>
Revert "Change the default socket location for pinentry"
This reverts commit e34fbdee8aca84b98393b06b2450837d175999ca.
It turned out that the address is fixed in Pinentry itself.
-2016-02-21 Dmitry Gutov <dgutov@yandex.ru>
+2016-03-04 Dmitry Gutov <dgutov@yandex.ru>
Kill off xref--display-history
@@ -4942,7 +4944,7 @@
(xref--show-pos-in-buf): Update accordingly.
(xref--xref-buffer-mode-map): Remove xref-quit binding.
-2016-02-21 Dmitry Gutov <dgutov@yandex.ru>
+2016-03-04 Dmitry Gutov <dgutov@yandex.ru>
Keep the xref buffer visible until the user quits it explicitly
@@ -4966,7 +4968,7 @@
(xref--find-xrefs, xref--find-definitions): Rename WINDOW argument
to DISPLAY-ACTION as well.
-2016-02-21 Daiki Ueno <ueno@gnu.org>
+2016-03-04 Daiki Ueno <ueno@gnu.org>
Change the default socket location for pinentry
@@ -4977,14 +4979,14 @@
This is just for extra safety since the parent directory is already
protected with `server-ensure-safe-dir'.
-2016-02-21 Daiki Ueno <ueno@gnu.org>
+2016-03-04 Daiki Ueno <ueno@gnu.org>
Mention how to enable pinentry feature
* etc/NEWS: Mention "gpgconf --reload gpg-agent".
* lisp/net/pinentry.el: Likewise.
-2016-02-21 Paul Eggert <eggert@cs.ucla.edu>
+2016-03-04 Paul Eggert <eggert@cs.ucla.edu>
Sync with gnulib
@@ -4992,7 +4994,7 @@
2016-02-10 stdalign: port to older HP and IBM cc
* doc/misc/texinfo.tex, lib/stdalign.in.h: Copy from gnulib.
-2016-02-21 David Engster <deng@randomsample.de>
+2016-03-04 David Engster <deng@randomsample.de>
Remove `semanticdb-save-all-db-idle' from `auto-save-hook'
@@ -5002,7 +5004,7 @@
already be called in the `semantic-idle-work-core-handler', which
runs when Emacs is actually idle.
-2016-02-21 David Engster <deng@randomsample.de>
+2016-03-04 David Engster <deng@randomsample.de>
Restore point when writing semantic table to disk
@@ -5010,7 +5012,7 @@
`semantic-fetch-tags' in `save-excursion', since it might move point
in current buffer. (Bug #22287)
-2016-02-21 Daiki Ueno <ueno@gnu.org>
+2016-03-04 Daiki Ueno <ueno@gnu.org>
Mention pinentry.el in epa manual
@@ -5019,7 +5021,7 @@
to enable pinentry.el.
(Caching Passphrases): Add xref to the compatibility chapter.
-2016-02-21 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
Fix Bug#22736
@@ -5031,13 +5033,13 @@
(file-notify-test08-watched-file-in-watched-dir): Bind
`file-notify--test-tmpfile' temporarily in `dir-callback'.
-2016-02-21 Wieland Hoffmann <themineo@gmail.com> (tiny change)
+2016-03-04 Wieland Hoffmann <themineo@gmail.com> (tiny change)
Grammar fix in doc string
* lisp/custom.el (defgroup): Grammar fix in doc string.
-2016-02-20 Daiki Ueno <ueno@gnu.org>
+2016-03-04 Daiki Ueno <ueno@gnu.org>
Naming fix for consistency
@@ -5045,14 +5047,14 @@
`epg-configuration-find' to be consistent with other epg-* functions.
Change all callers.
-2016-02-20 Daiki Ueno <ueno@gnu.org>
+2016-03-04 Daiki Ueno <ueno@gnu.org>
Prefer customized value for GnuPG executable
* lisp/epg-config.el (epg-configuration-find): Don't check GPG
configuration if it is already set with custom. (Bug#22747)
-2016-02-20 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix memory reservation on MS-Windows
@@ -5061,7 +5063,7 @@
no one can use, since memory reservation must produce 64KB-aligned
addresses. (Bug#22526)
-2016-02-20 Anders Lindgren <andlind@gmail.com>
+2016-03-04 Anders Lindgren <andlind@gmail.com>
Update NextStep readme and add wish list.
@@ -5071,11 +5073,11 @@
* nextstep/WISHLIST: New file containing list of issues and ideas
associated with the NS port of Emacs.
-2016-02-20 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
Report also result in `file-notify--test-event-handler'
-2016-02-20 Michael Albinus <michael.albinus@gmx.de>
+2016-03-04 Michael Albinus <michael.albinus@gmx.de>
Improve file-notify-test08-watched-file-in-watched-dir
@@ -5089,7 +5091,7 @@
`file-notify--test-results'.
(file-notify-test08-watched-file-in-watched-dir): Fix docstring.
-2016-02-20 Stephen Berman <stephen.berman@gmx.net>
+2016-03-04 Stephen Berman <stephen.berman@gmx.net>
Fix todo-mode item date editing bugs
@@ -5101,14 +5103,14 @@
(todo-read-date): When using the numerical month date component make
sure to use `*' for an arbitrary month instead of its numerical value.
-2016-02-20 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix "[:upper:]" for non-ASCII characters
* src/regex.c (re_match_2_internal): Support [:upper:] and
[:lower:] for non-ASCII characters. (Bug#18150)
-2016-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
Allow customising the article mode cursor behavior
@@ -5117,7 +5119,7 @@
* lisp/gnus/gnus-art.el (gnus-article-show-cursor): New variable.
(gnus-article-mode): Use it.
-2016-02-20 Ari Roponen <ari.roponen@gmail.com>
+2016-03-04 Ari Roponen <ari.roponen@gmail.com>
Use pop-to-buffer-same-window in woman.el
@@ -5125,7 +5127,7 @@
the wrong buffer by using `pop-to-buffer-same-window' (bug#22332).
(WoMan-find-buffer): Ditto.
-2016-02-20 Tassilo Horn <tsdh@gnu.org>
+2016-03-04 Tassilo Horn <tsdh@gnu.org>
New filenotify test for bug#22736
@@ -5133,25 +5135,25 @@
(file-notify-test08-watched-file-in-watched-dir):
(file-notify--test-desc1): New filenotify test for bug#22736
-2016-02-20 Marcin Borkowski <mbork@mbork.pl>
+2016-03-04 Marcin Borkowski <mbork@mbork.pl>
Report critical battery errors
* lisp/battery.el (battery-pmset): Report critical battery
errors (bug#18157).
-2016-02-19 Kaushal Modi <kaushal.modi@gmail.com> (tiny change)
+2016-03-04 Kaushal Modi <kaushal.modi@gmail.com> (tiny change)
Make eww message toggling message clearer
* lisp/net/eww.el (eww-toggle-fonts): Make the message
clearer.
-2016-02-19 Mark Oteiza <mvoteiza@udel.edu>
+2016-03-04 Mark Oteiza <mvoteiza@udel.edu>
* lisp/calc/calc-units.el (math-standard-units): Update to 2014 CODATA adjustment.
-2016-02-18 Martin Rudalics <rudalics@gmx.at>
+2016-03-04 Martin Rudalics <rudalics@gmx.at>
Fix bugs in window resizing code
@@ -5161,21 +5163,21 @@
with preserved size would not get resized. Also now signal an
error when the window cannot be shrunk or enlarged as requested.
-2016-02-17 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix decoding DOS EOL in a unibyte buffer
* src/coding.c (decode_eol): Loop over bytes, not characters.
(Bug#5251)
-2016-02-17 Alan Mackenzie <acm@muc.de>
+2016-03-04 Alan Mackenzie <acm@muc.de>
Correct c-parse-state cache manipulation error.
* lisp/progmodes/cc-engine.el (c-invalidate-state-cache-1): Correct a
comparison bound. Amend comments.
-2016-02-17 Daiki Ueno <ueno@gnu.org>
+2016-03-04 Daiki Ueno <ueno@gnu.org>
Take advantage of new GnuPG version check function
@@ -5183,7 +5185,7 @@
(package-refresh-contents): Use `epg-configuration-find' to check if EPG
is usable.
-2016-02-17 Daiki Ueno <ueno@gnu.org>
+2016-03-04 Daiki Ueno <ueno@gnu.org>
Make GnuPG version check robuster
@@ -5201,7 +5203,7 @@
(epg-configuration): Mark as obsolete.
* lisp/epg.el (epg-context): Use `epg-configuration-find'.
-2016-02-17 Paul Eggert <eggert@cs.ucla.edu>
+2016-03-04 Paul Eggert <eggert@cs.ucla.edu>
Fix x-load-color-file pointer signedness
@@ -5209,43 +5211,43 @@
For sscanf and int *, use %d, not %u.
Problem found on Ubuntu 15.10 x32, which lacks X support.
-2016-02-17 Paul Eggert <eggert@cs.ucla.edu>
+2016-03-04 Paul Eggert <eggert@cs.ucla.edu>
* lisp/time-stamp.el (time-stamp-time-zone): Fix doc string punct.
-2016-02-16 Mark Oteiza <mvoteiza@udel.edu>
+2016-03-04 Mark Oteiza <mvoteiza@udel.edu>
Follow convention for greek letter constants.
* lisp/calc/calc-units.el (math-standard-units):
Add "sigma" and alias σ to it.
-2016-02-16 Mark Oteiza <mvoteiza@udel.edu>
+2016-03-04 Mark Oteiza <mvoteiza@udel.edu>
Add Stefan-Boltzmann constant to calc units table.
* lisp/calc/calc-units.el (math-standard-units):
Add Stefan-Boltzmann constant.
-2016-02-16 Mark Oteiza <mvoteiza@udel.edu>
+2016-03-04 Mark Oteiza <mvoteiza@udel.edu>
* lisp/calc/calc-units.el (math-build-units-table-buffer): Use special-mode.
-2016-02-16 Glenn Morris <rgm@gnu.org>
+2016-03-04 Glenn Morris <rgm@gnu.org>
Avoid loading cl-lib for term/xterm.elc, eg in -Q -nw. (Bug#22669)
* lisp/emacs-lisp/cl-generic.el (cl--generic-dispatchers):
Prefill with relevant elements for term/xterm.
-2016-02-16 Tassilo Horn <tsdh@gnu.org>
+2016-03-04 Tassilo Horn <tsdh@gnu.org>
Fix soffice UserInstallation-URL for Windows
* lisp/doc-view.el (doc-view-odf->pdf-converter-soffice): Fix
UserInstallation-URL when calling soffice on Windows.
-2016-02-16 Lars Ingebrigtsen <larsi@gnus.org>
+2016-03-04 Lars Ingebrigtsen <larsi@gnus.org>
Fix display of <pre> elements
@@ -5253,7 +5255,7 @@
parsing so that <pre> elements don't render with ^M at the end
of the lines.
-2016-02-15 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Minor fixes in global-auto-composition-mode
@@ -5262,7 +5264,7 @@
* lisp/composite.el (global-auto-composition-mode): Make it a
globalized mode. (Bug#22682)
-2016-02-15 Alan Mackenzie <acm@muc.de>
+2016-03-04 Alan Mackenzie <acm@muc.de>
Allow arithmetic operators inside C++ template constructs.
@@ -5280,14 +5282,14 @@
multichar operator in place of the former c->-op-without->-cont-regexp.
Add code to skip forwards over a balanced parenthesized expression.
-2016-02-15 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Avoid crashes in semi-malformed 'condition-case'
* src/eval.c (internal_lisp_condition_case): Treat a handler
'(nil)' as if it were '(nil nil)'. (Bug#22675)
-2016-02-15 Alan Mackenzie <acm@muc.de>
+2016-03-04 Alan Mackenzie <acm@muc.de>
Allow arithmetic operators inside C++ template constructs.
@@ -5304,21 +5306,21 @@
multichar operator in place of the former c->-op-without->-cont-regexp.
Add code to skip forwards over a balanced parenthesized expression.
-2016-02-15 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix regression with 'recent-keys' and keyboard macros
* src/keyboard.c (record_char): Don't record in 'recent_keys'
events that come from executing keyboard macros. (Bug#22674)
-2016-02-15 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix wording in a doc-view.el comment
* lisp/doc-view.el (doc-view--current-cache-dir): Don't use
"illegal" for something that is not against the law.
-2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
+2016-03-04 Paul Eggert <eggert@cs.ucla.edu>
CONTRIBUTE cleanups and updates
@@ -5333,7 +5335,7 @@
* admin/notes/git-workflow: Change emacs-24 to emacs-25,
and trunk to master. This file still needs work.
-2016-02-14 Paul Eggert <eggert@cs.ucla.edu>
+2016-03-04 Paul Eggert <eggert@cs.ucla.edu>
Port USE_STACK_LISP_OBJECTS fix to Clang
@@ -5341,7 +5343,7 @@
Recent versions of Clang claim to be GCC 4.2.1 but do not have
the GCC bug.
-2016-02-14 Paul Eggert <eggert@cs.ucla.edu>
+2016-03-04 Paul Eggert <eggert@cs.ucla.edu>
Port to x86 GCC 4.3.1 and earlier
@@ -5349,28 +5351,28 @@
* src/lisp.h (USE_STACK_LISP_OBJECTS): Default to false
for GCC 4.3.1 and earlier.
-2016-02-14 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix point movement under 'scroll-conservatively'
* src/xdisp.c (redisplay_window): Correct a typo in computing the
effective number of text lines in a window. (Bug#22637)
-2016-02-14 Thomas Plass <thomas.plass@arcor.de>
+2016-03-04 Thomas Plass <thomas.plass@arcor.de>
Replace colon in file name (not legal on Windows)
* lisp/doc-view.el (doc-view--current-cache-dir): Replace colon in file
name (not legal on Windows). [tiny change]
-2016-02-14 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Fix a typo in edt.texi
* doc/misc/edt.texi: Fix a typo in an email address. Reported by
"Herbert J. Skuhra" <herbert@mailbox.org>.
-2016-02-14 Eli Zaretskii <eliz@gnu.org>
+2016-03-04 Eli Zaretskii <eliz@gnu.org>
Make 'mmap_realloc' on MS-Windows more reliable
@@ -5384,14 +5386,14 @@
if the call to VirtualAlloc to commit more pages fails.
(Bug#22526)
-2016-02-14 Oscar Fuentes <ofv@wanadoo.es>
+2016-03-04 Oscar Fuentes <ofv@wanadoo.es>
Grep alias `all' shall not match parent directory
* lisp/progmodes/grep.el (grep-files-aliases): Don't match parent
directory for `all'. Fixes bug#22577
-2016-02-13 Nicolas Petton <nicolas@petton.fr>
+2016-03-04 Nicolas Petton <nicolas@petton.fr>
Bump version to 25.0.91
@@ -5399,22 +5401,23 @@
* configure.ac:
* msdos/sed2v2.inp: Bump version to 25.0.91.
-2016-02-13 Nicolas Petton <nicolas@petton.fr>
+2016-03-04 Nicolas Petton <nicolas@petton.fr>
* etc/AUTHORS: Update the AUTHORS file
-2016-02-13 Glenn Morris <rgm@gnu.org>
+2016-03-04 Glenn Morris <rgm@gnu.org>
+2016-02-15 Glenn Morris <rgm@gnu.org>
* lisp/dired-aux.el: Require cl-lib. (Bug#22613)
-2016-02-13 Eli Zaretskii <eliz@gnu.org>
+2016-02-15 Eli Zaretskii <eliz@gnu.org>
Index tilde characters in names of backup files
* doc/emacs/files.texi (Backup Names): Improve indexing.
(Bug#22625)
-2016-02-13 Eli Zaretskii <eliz@gnu.org>
+2016-02-15 Eli Zaretskii <eliz@gnu.org>
Document deprecation of hi-lock-mode's 'C-x w' bindings
@@ -5423,11 +5426,11 @@
* etc/NEWS: Mark the deprecation entry as documented.
-2016-02-13 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-02-15 Stefan Monnier <monnier@iro.umontreal.ca>
Announce that the `C-x w' bindings are deprecated
-2016-02-13 Paul Eggert <eggert@cs.ucla.edu>
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
Suppress GNUstep hardening
@@ -5439,7 +5442,7 @@
(GNU_OBJC_CFLAGS): Omit options like
‘-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1’.
-2016-02-12 Eli Zaretskii <eliz@gnu.org>
+2016-02-15 Eli Zaretskii <eliz@gnu.org>
Fix redisplay after a large insertion
@@ -5447,7 +5450,7 @@
"optimization 3" if the cursor ends up in a partially visible
glyph row. (Bug22637)
-2016-02-12 Andreas Schwab <schwab@linux-m68k.org>
+2016-02-15 Andreas Schwab <schwab@linux-m68k.org>
Revert "Fix gnus-group-get-new-news-this-group on group with closed server"
@@ -5456,11 +5459,11 @@
* lisp/gnus/nnimap.el (nnimap-change-group): Revert last
change. (Bug#22634)
-2016-02-11 Paul Eggert <eggert@cs.ucla.edu>
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
* lib-src/make-docfile.c: Include stdarg.h.
-2016-02-11 Alan Mackenzie <acm@muc.de>
+2016-02-15 Alan Mackenzie <acm@muc.de>
Extend gpm-mouse-mode's doc string and doc to point out limitations.
@@ -5470,7 +5473,7 @@
* doc/emacs/frames.texi (Text-Only Mouse): Note the inability to transfer text
between Emacs and other progrmas which use GPM.
-2016-02-11 Eli Zaretskii <eliz@gnu.org>
+2016-02-15 Eli Zaretskii <eliz@gnu.org>
Revert "Backport: * lisp/isearch.el: Turn char-folding off by default"
@@ -5478,7 +5481,7 @@
This reverts commit 12c50e82c9b432b2fc31f8fb2215f43ceea80822.
-2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+2016-02-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Support integer image rotation and respect EXIF rotations"
@@ -5486,7 +5489,7 @@
This change does not work on Fedora.
-2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+2016-02-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Document EXIF image rotation"
@@ -5494,7 +5497,7 @@
This change does not work on Fedora, for instance.
-2016-02-11 Paul Eggert <eggert@cs.ucla.edu>
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
Document OS X LANG default
@@ -5502,7 +5505,7 @@
Document OS X Language and Region system preference.
Suggested by Alan Third.
-2016-02-11 Alan Third <alan@idiocy.org>
+2016-02-15 Alan Third <alan@idiocy.org>
Set locale when run from OS X GUI
@@ -5510,7 +5513,7 @@
* src/nsterm.m (ns_init_locale): Get locale from OS and set LANG.
* src/nsterm.h: Include ns_init_locale.
-2016-02-10 Paul Eggert <eggert@cs.ucla.edu>
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
make-docfile cleanup for I/O, etc.
@@ -5533,7 +5536,7 @@
(search_lisp_doc_at_eol): Don't worry about ungetc of EOF; it's
portable now.
-2016-02-10 Paul Eggert <eggert@cs.ucla.edu>
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
Memory-management cleanup in make-docfile
@@ -5557,7 +5560,7 @@
(write_globals, scan_c_stream, scan_lisp_file): Avoid memory leak.
(scan_c_stream): Check for add_global failure.
-2016-02-10 Kevin Gallagher <Kevin.Gallagher@boeing.com>
+2016-02-15 Kevin Gallagher <Kevin.Gallagher@boeing.com>
Kevin Gallagher has new email address
@@ -5569,7 +5572,7 @@
* etc/edt-user.el:
* doc/misc/edt.texi: Update Kevin Gallagher's email address.
-2016-02-10 Eli Zaretskii <eliz@gnu.org>
+2016-02-15 Eli Zaretskii <eliz@gnu.org>
Improve doc strings of 'forward/backward-word-strictly'
@@ -5581,7 +5584,7 @@
* src/syntax.c (Fforward_word): Refer to 'forward-word-strictly'
in the doc string. (Bug#22560)
-2016-02-10 Michael Albinus <michael.albinus@gmx.de>
+2016-02-15 Michael Albinus <michael.albinus@gmx.de>
Describe Makefile test targets in test/README
@@ -5590,19 +5593,19 @@
* Makefile.in:
* test/README: Describe Makefile test targets.
-2016-02-10 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-02-15 Artur Malabarba <bruce.connor.am@gmail.com>
Backport: * lisp/isearch.el: Turn char-folding off by default
(search-default-mode): Set default value to nil.
-2016-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+2016-02-15 Lars Ingebrigtsen <larsi@gnus.org>
Document EXIF image rotation
* doc/lispref/display.texi (ImageMagick Images): Mention EXIF rotation.
-2016-02-10 Dima Kogan <dima@secretsauce.net>
+2016-02-15 Dima Kogan <dima@secretsauce.net>
Support integer image rotation and respect EXIF rotations
@@ -5613,14 +5616,14 @@
pre-rotated. All information such as width/height is reported for the
rotated image.
-2016-02-10 Matthew Carter <m@ahungry.com>
+2016-02-15 Matthew Carter <m@ahungry.com>
Quote table names for postgres listings (sql-mode)
* lisp/progmodes/sql.el (sql-postgres-completion-object): Avoid passing
unquoted table names to the completion list.
-2016-02-10 Juri Linkov <juri@linkov.net>
+2016-02-15 Juri Linkov <juri@linkov.net>
* lisp/replace.el (replace-match-maybe-edit): Make arg `backward' optional.
@@ -5628,14 +5631,14 @@
(replace-search, replace-highlight): Make arg `backward' optional.
(Bug#18388)
-2016-02-10 Juri Linkov <juri@linkov.net>
+2016-02-15 Juri Linkov <juri@linkov.net>
* lisp/simple.el (next-line-or-history-element): Reset temporary-goal-column.
(previous-line-or-history-element): Reset temporary-goal-column.
Use end-of-visual-line instead of line-end-position. (Bug#22544)
-2016-02-10 Paul Eggert <eggert@cs.ucla.edu>
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
Suppress ACL ops if configured with --disable-acl
@@ -5643,14 +5646,14 @@
* src/fileio.c [!USE_ACL]: Do not include sys/acl.h.
(Ffile_acl, Fset_file_acl) [!USE_ACL]: Return nil in this case.
-2016-02-09 Katsumi Yamaoka <yamaoka@jpl.org>
+2016-02-15 Katsumi Yamaoka <yamaoka@jpl.org>
Mention web bugs
* doc/misc/emacs-mime.texi (Display Customization):
Mention web bugs in the mm-html-blocked-images section.
-2016-02-09 Katsumi Yamaoka <yamaoka@jpl.org>
+2016-02-15 Katsumi Yamaoka <yamaoka@jpl.org>
Make mm-html-blocked-images default to "" again
@@ -5660,6 +5663,1344 @@
* doc/misc/emacs-mime.texi (Display Customization):
Mention that mm-html-blocked-images defaults to "".
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Minor alignas cleanup
+
+ * src/lisp.h (alignas): Remove now-redundant #ifdef that was left
+ over from the old way of doing things, before Bug#20862 was fixed.
+
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add lmalloc commentary and tweak laligned
+
+ * src/alloc.c (laligned): Help compiler in a tiny way by putting
+ the more-commonly-failing disjunct first.
+
+2016-02-15 Eli Zaretskii <eliz@gnu.org>
+
+ Clarify documentation of key binding conventions
+
+ * doc/lispref/tips.texi (Key Binding Conventions): Clarify which
+ "punctuation characters" are reserved after "C-c". (Bug#22604)
+
+2016-02-15 Oscar Fuentes <ofv@wanadoo.es>
+
+ * etc/NEWS: mention the `vc-faces' customization group
+
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync with gnulib
+
+ This incorporates:
+ 2016-02-09 stdalign: port to clang 3.7.0
+ 2016-02-06 misc: port better to gcc -fsanitize=address
+ * doc/misc/texinfo.tex, lib/stdalign.in.h, m4/acl.m4, m4/getgroups.m4:
+ Copy from gnulib.
+
+2016-02-15 Michael Albinus <michael.albinus@gmx.de>
+
+ * CONTRIBUTE: Add more examples for $(SELECTOR) make variable.
+
+2016-02-15 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ Make mm-html-inhibit-images and mm-html-blocked-images default to nil
+
+ * lisp/gnus/mm-decode.el (mm-html-inhibit-images)
+ (mm-html-blocked-images): Default to nil.
+
+ * doc/misc/emacs-mime.texi (Display Customization): Mention that
+ mm-html-inhibit-images and mm-html-blocked-images default to nil.
+
+ * etc/NEWS (Gnus): Document mm-html-inhibit-images and
+ mm-html-blocked-images.
+
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Increase success rate of fallback lmalloc
+
+ * src/alloc.c (lmalloc, lrealloc): Reallocate with (typically)
+ larger and larger sizes, to increase the probability that
+ the allocator will return a Lisp-aligned pointer.
+
+2016-02-15 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make backgrounds extend to the end of the lines in shr
+
+ * lisp/net/shr.el (shr-face-background): Faces can also be on
+ the form `(:background "#fff)' (bug#22547).
+
+2016-02-15 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make the `R' command get the correct relative <img>s
+
+ * lisp/net/eww.el (eww-readable): Preserve the base URL so
+ that image expansions are fetched from the right place (bug#22605).
+
+ (cherry picked from commit 8722e849f75ceafb82a1c17105e8ab76077a8ebc)
+
+ Backport:
+
+2016-02-15 Mike Kupfer <m.kupfer@acm.org>
+
+ Fix typos in emacs-mime.texi and gnus.texi
+
+ * doc/misc/emacs-mime.texi (Display Customization):
+ * doc/misc/gnus.texi (HTML): Fix typo.
+
+2016-02-15 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * doc/misc/emacs-mime.texi (Display Customization):
+ Doc fix for mm-html-inhibit-images.
+
+2016-02-15 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix message-cross-post-followup-to group names
+
+ * lisp/gnus/message.el (message-cross-post-followup-to): Don't
+ insert group names like "nntp+foo:zot", because those aren't valid.
+
+2016-02-15 David Edmondson <dme@dme.org>
+
+ Compare recipient and keys case-insensitively
+
+ * lisp/gnus/mml2015.el: (mml-secure-check-user-id): When comparing a
+ recipient address with that from a key, do so in a case insensitive
+ manner (bug#22603).
+
+2016-02-15 Glenn Morris <rgm@gnu.org>
+
+ * lisp/gnus/mm-decode.el (mm-alist-to-plist): Doc fix.
+
+2016-02-15 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ Refactor HTML images handling of Gnus and mm-* (a part of bug#21650)
+
+ * doc/misc/emacs-mime.texi (Display Customization):
+ Remove mm-inline-text-html-with-images; add documentations for
+ mm-html-inhibit-images and mm-html-blocked-images.
+
+ * lisp/gnus/gnus-art.el (gnus-article-show-images):
+ No need to bind mm-inline-text-html-with-images.
+ (gnus-bind-safe-url-regexp): Rename to gnus-bind-mm-vars.
+ (gnus-bind-mm-vars): Rename from gnus-bind-safe-url-regexp;
+ bind mm-html-inhibit-images and mm-html-blocked-images.
+ (gnus-mime-view-all-parts, gnus-mime-view-part-internally)
+ (gnus-mm-display-part, gnus-mime-display-single)
+ (gnus-mime-display-alternative): Use gnus-bind-mm-vars.
+
+ * lisp/gnus/mm-decode.el (mm-inline-text-html-with-images): Remove.
+ (mm-html-inhibit-images, mm-html-blocked-images): New user options.
+ (mm-shr): Bind shr-inhibit-images and shr-blocked-images with
+ mm-html-inhibit-images and mm-html-blocked-images respectively
+ instead of gnus-inhibit-images and gnus-blocked-images.
+
+ * lisp/gnus/mm-view.el (mm-setup-w3m): Use mm-html-inhibit-images
+ instead of mm-inline-text-html-with-images.
+
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port to FreeBSD 11-CURRENT i386
+
+ Problem reported by Herbert J. Skuhra in:
+ http://lists.gnu.org/archive/html/emacs-devel/2016-02/msg00354.html
+ Instead of trying
+ * src/alloc.c (lmalloc, lrealloc, laligned): New functions.
+ (xmalloc, xzalloc, xrealloc, lisp_malloc): Use them.
+ (__alignof__) [!__GNUC__ && !__alignof__]: New macro.
+ (MALLOC_IS_GC_ALIGNED): New macro.
+ * src/lisp.h (NONPOINTER_BITS): Remove. All uses removed.
+ No longer needed now that alloc.c uses lmalloc and lrealloc.
+
+2016-02-15 Michael Albinus <michael.albinus@gmx.de>
+
+ Some fixes in file-notify-tests.el
+
+ * test/automated/file-notify-tests.el
+ (file-notify--test-with-events-check)
+ (file-notify--test-with-events-explainer): New defuns.
+ (file-notify--test-with-events): Use it.
+ (file-notify-test07-backup): Fix docstring. Some of the
+ backends fire two `changed' events. Backup by rename doesn't
+ work for kqueue.
+
+2016-02-15 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix Bug#22557
+
+ * lisp/filenotify.el (file-notify-callback): Do not send a
+ `stopped' event in case of backup by renaming. (Bug#22557)
+
+ * test/automated/Makefile.in: Use $(SELECTOR_EXPENSIVE) for
+ all targets but check and check-maybe.
+
+ * test/automated/file-notify-tests.el
+ (file-notify--test-read-event-timeout): New defconst.
+ (file-notify--deftest-remote, file-notify--wait-for-events)
+ (file-notify-test02-events)
+ (file-notify-test04-file-validity)
+ (file-notify-test06-many-events): Use it.
+ (file-notify--test-cleanup): Make it more robust. Delete also
+ backup file.
+ (file-notify-test07-backup): New test.
+
+2016-02-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix test for dladdr
+
+ Problem reported by Andreas Schwab in:
+ http://lists.gnu.org/archive/html/emacs-devel/2016-02/msg00327.html
+ * configure.ac (dladdr): Link with LIBMODULES when checking for
+ this function.
+
+2016-02-15 Andreas Schwab <schwab@linux-m68k.org>
+
+ Fix gnus-group-get-new-news-this-group on group with closed server
+
+ * lisp/gnus/nnimap.el (nnimap-change-group): Lookup server
+ method and pass to nnimap-open-server.
+
+2016-02-15 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-02-14 Nicolas Petton <nicolas@petton.fr>
+
+ * doc/lispref/sequences.texi: Add documentation for seq-map-indexed
+
+2016-02-14 Nicolas Petton <nicolas@petton.fr>
+
+ New function seq-map-indexed
+
+ * lisp/emacs-lisp/seq.el (seq-map-indexed): New function.
+ * test/lisp/emacs-lisp/seq-tests.el: Add tests for seq-map-indexed.
+
+2016-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * lisp/gnus/mm-util.el: Remove the mm-string-as-multibyte alias.
+
+2016-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix problem with wrong encoding of non-ASCII message bodies
+
+ * lisp/gnus/mml.el (mml-generate-mime-1): Disable
+ multibyteness before encoding the data.
+
+2016-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove codepage setup code from mm-util
+
+ * lisp/gnus/mm-util.el (mm-codepage-setup): Remove.
+ (mm-codepage-iso-8859-list): Remove.
+ (mm-codepage-ibm-list, mm-setup-codepage-iso-8859)
+ (mm-setup-codepage-ibm): Remove.
+ (mm-charset-eval-alist): Remove the code pages from the
+ default value.
+
+2016-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code for older Emacsen
+
+ * lisp/gnus/gnus-art.el (gnus-button-url-regexp): Remove
+ XEmacs compat code.
+
+ * lisp/gnus/gnus-sync.el (gnus-sync-json-alist-p): Remove
+ unused compat function.
+ (gnus-sync-json-plist-p): Ditto.
+
+ * lisp/gnus/message.el (message-default-charset): Make obsolete.
+ (message-info): Remove compat code.
+ (message-setup-fill-variables): Remove kludge needed earlier
+ to not overwrite `normal-auto-fill-function'.
+ (message-split-line): Remove compat code.
+
+ * lisp/gnus/mm-view.el (mm-display-inline-fontify): Remove
+ compat code.
+
+2016-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove some compat functions from gmm-utils.el
+
+ * lisp/gnus/gmm-utils.el (gmm-tool-bar-from-list): Remove
+ compat code.
+ (gmm-image-search-load-path): Remove.
+ (gmm-image-load-path-for-library): Remove.
+
+2016-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove the gmm-lazy and nnmail-lazy compat widgets
+
+ * lisp/gnus/gmm-utils.el (gmm-lazy): Remove.
+
+ * lisp/gnus/nnmail.el (nnmail-lazy): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Clean up nnimap-request-move-article slightly
+
+ * lisp/gnus/nnheader.el (subr-x): Require.
+
+ * lisp/gnus/nnimap.el (nnimap-request-move-article): Clean up
+ the code slightly.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Use open-network-stream instead of open-protocol-stream
+
+ * lisp/gnus/nnimap.el: Use open-network-stream instead of
+ open-protocol-stream.
+
+ * lisp/gnus/nntp.el: Ditto.
+
+ * lisp/gnus/pop3.el: Ditto.
+
+ * lisp/gnus/sieve-manage.el: Ditto.
+
+ * lisp/net/network-stream.el (open-protocol-stream): Make obsolete.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code that relies on (featurep 'mule)
+
+ * lisp/gnus/gnus-group.el (gnus-group-name-decode): Remove
+ compat code.
+
+ * lisp/gnus/gnus-start.el (gnus-read-descriptions-file):
+ Remove compat code.
+
+ * lisp/gnus/mm-bodies.el (mm-decode-body, mm-decode-string):
+ Remove compat code.
+
+ * lisp/gnus/mm-view.el (mm-w3m-standalone-supports-m17n-p):
+ Remove compat code.
+ (mm-w3m-standalone-supports-m17n-p): Ditto.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat functions from starttls.el
+
+ * lisp/gnus/starttls.el
+ (starttls-set-process-query-on-exit-flag): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat functions from smime.el
+
+ * lisp/gnus/smime.el (smime-replace-in-string): Remove.
+ (smime-make-temp-file): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from smiley
+
+ * lisp/gnus/smiley.el (smiley-style): Remove compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from rfc2047
+
+ * lisp/gnus/rfc2047.el (rfc2047-encode-message-header): Remove
+ compat code.
+ (rfc2047-decode-string): Ditto.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat function from pop3
+
+ * lisp/gnus/pop3.el (pop3-set-process-query-on-exit-flag): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code in Gnus backends
+
+ * lisp/gnus/nndiary.el (nndiary-error): Remove.
+
+ * lisp/gnus/nndraft.el (nndraft-request-associate-buffer): Ditto.
+
+ * lisp/gnus/nnfolder.el (nnfolder-read-folder): Ditto.
+
+ * lisp/gnus/nnheader.el (nnheader-find-file-noselect): Ditto.
+
+ * lisp/gnus/nnimap.el (nnimap-log-buffer): Remove compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from some mml files
+
+ * lisp/gnus/mml-sec.el (mml-secure-passphrase-cache-expiry):
+ Remove compat code.
+
+ * lisp/gnus/mml-smime.el (mml-smime-openssl-sign-query):
+ Always use `mail-extract-address-components', since this isn't
+ time critical.
+ (mml-smime-get-dns-cert): Ditto.
+
+ * lisp/gnus/mml.el (mml-preview): Remove compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code and compat functions from mm-util.el
+
+ * lisp/gnus/mm-util.el (mm-mime-mule-charset-alist): Remove
+ compat code.
+ (mm-coding-system-priorities)
+ (mm-mule-charset-to-mime-charset, mm-charset-after)
+ (mm-mime-charset, mm-iso-8859-x-to-15-region): Remove compat code.
+ (mm-detect-coding-region): Define unconditionally.
+ (mm-detect-mime-charset-region): Ditto.
+ (mm-coding-system-to-mime-charset): It's 'mime-charset now.
+ (coding-system-name)
+ (find-file-coding-system-for-read-from-filename)
+ (find-operation-coding-system): Remove aliases.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove some compat code from mm-*.el
+
+ * lisp/gnus/mm-bodies.el (mm-decode-body): Ditto.
+
+ * lisp/gnus/mm-decode.el (mm-tmp-directory)
+ (mm-valid-image-format-p): Remove compat code.
+
+ * lisp/gnus/mm-url.el (mm-url-insert-file-contents): Remove
+ "Connection" "Close" workaround for older Emacsen.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code and functions from message.el
+
+ * lisp/gnus/message.el (message-send-mail-function): Remove
+ compat code.
+ (message-dont-reply-to-names, message-mode)
+ (message-setup-fill-variables, message-fill-paragraph)
+ (message-remove-blank-cited-lines, message-make-from)
+ (message-forward-rmail-make-body, message-tool-bar-gnome)
+ (message-tab): Remove compat code.
+ (message-completion-in-region): Remove.
+ (message-read-from-minibuffer): Remove compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Declare rfc1843 instead of autoloading
+
+ * lisp/gnus/gnus-art.el (rfc1843-decode-region): Declare
+ instead of autoload.
+
+2016-02-13 Eli Zaretskii <eliz@gnu.org>
+
+ Avoid signaling an error in 'dired-do-find-regexp-and-replace'
+
+ * lisp/dired-aux.el: Require cl-lib, so that 'cl-mapcan' is
+ autoloaded correctly. (Bug#22613)
+
+2016-02-13 Eli Zaretskii <eliz@gnu.org>
+
+ Fix network-stream-tests.el for MS-Windows
+
+ * test/lisp/net/network-stream-tests.el
+ (connect-to-tls-ipv6-nowait): Skip for MS-Windows builds.
+ (connect-to-tls-ipv4-wait): Add a 0.1 sleep-for.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove some Message compat functions
+
+ * lisp/gnus/message.el (message-kill-all-overlays): Define
+ unconditionally.
+ (message-window-inside-pixel-edges): Remove.
+ (mail-dont-reply-to): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove some Gnus compat code
+
+ * lisp/gnus/gnus-art.el (gnus-mime-inline-part): Remove compat code.
+ (gnus-mm-display-part): Ditto.
+
+ * lisp/gnus/gnus-start.el (gnus-dribble-read-file): Remove
+ compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Sort groups before inserting them into the group buffer
+
+ * lisp/gnus/gnus-group.el (gnus-group-describe-all-groups):
+ Sort groups before inserting them.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make "unseen" tracking work again in Gnus
+
+ * lisp/gnus/gnus-sum.el (gnus-update-marks): Make "unseen"
+ tracking work again.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove Gnus compat functions defined in gnus.el
+
+ * lisp/gnus/gnus.el (gnus-extent-detached-p): Remove.
+ (gnus-extent-start-open, gnus-character-to-event)
+ (gnus-assq-delete-all, gnus-add-text-properties)
+ (gnus-put-text-property, gnus-key-press-event-p):
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from gnus-uu and win
+
+ * lisp/gnus/gnus-util.el (gnus-image-type-available-p): Remove
+ compat code.
+
+ * lisp/gnus/gnus-uu.el (gnus-uu-tmp-dir): Remove compat code.
+
+ * lisp/gnus/gnus-win.el (gnus-frames-on-display-list): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove several gnus-util compat functions
+
+ * lisp/gnus/gnus-util.el (gnus-set-process-query-on-exit-flag): Remove.
+ (gnus-read-shell-command): Remove.
+ (gnus-match-substitute-replacement): Remove.
+ (gnus-string-match-p): Remove.
+ (gnus-string-prefix-p): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove the gnus-merge alias
+
+ * lisp/gnus/gnus-util.el (gnus-merge): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove the gnus-union alias
+
+ * lisp/gnus/gnus-util.el (gnus-union): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove the gnus-delete-alist alias
+
+ * lisp/gnus/gnus-util.el (gnus-run-mode-hooks): Remove compat code.
+ (gnus-delete-alist): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove the gnus-float-time alias
+
+ * lisp/gnus/gnus-util.el (gnus-completion-styles): Remove
+ compat code.
+ (gnus-float-time): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from gnus-srvr, start and sum
+
+ * lisp/gnus/gnus-srvr.el (gnus-browse-foreign-server): Remove
+ compat code.
+
+ * lisp/gnus/gnus-start.el (gnus-check-reasonable-setup):
+ Remove compat code.
+
+ * lisp/gnus/gnus-sum.el (gnus-summary-display-arrow)
+ (gnus-summary-make-menu-bar, gnus-summary-make-tool-bar)
+ (gnus-recenter)
+ (gnus-summary-limit-strange-charsets-predicate)
+ (gnus-summary-show-thread): Remove compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from gnus-spec.el
+
+ * lisp/gnus/gnus-spec.el (gnus-lrm-string-p): Remove compat code.
+ (gnus-balloon-face-function): Remove compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix compat change in last check-in
+
+ * lisp/gnus/gnus-group.el
+ (gnus-group-name-charset-group-alist): `find-coding-system'
+ doesn't exist in Emacs.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Always use url-queue
+
+ * lisp/gnus/gnus-html.el (gnus-html-schedule-image-fetching):
+ Always use url-queue.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat functions from gnus-html.el
+
+ * lisp/gnus/gnus-html.el (gnus-html-encode-url-chars): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from gnus-group.el
+
+ * lisp/gnus/gnus-group.el (gnus-group-name-charset-group-alist)
+ (gnus-group-make-tool-bar, gnus-group-update-tool-bar): Remove compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Define gnus-diary-kill-entire-line unconditionally
+
+ * lisp/gnus/gnus-diary.el (gnus-diary-kill-entire-line):
+ Define unconditionally.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from gnus-cache and gnus-bookmark
+
+ * lisp/gnus/gnus-bookmark.el (gnus-bookmark-bmenu-mode-map): Ditto.
+
+ * lisp/gnus/gnus-cache.el (gnus-cache-decoded-group-name):
+ Remove compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from gnus-art.el
+
+ * lisp/gnus/gnus-art.el (gnus-article-prepare)
+ (gnus-mime-copy-part, gnus-output-to-file)
+ (gnus-article-reply-with-original)
+ (gnus-button-handle-apropos-variable)
+ (gnus-button-handle-apropos-documentation):
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from gnus-agent.el
+
+ * lisp/gnus/gnus-agent.el (gnus-agent-make-mode-line-string):
+ Remove compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Rewrite gmm-labels usage to use cl-labels
+
+ * lisp/gnus/gmm-utils.el (gmm-tool-bar-style): Remove compat code.
+ (gmm-labels): Remove.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from canlock.el
+
+ * lisp/gnus/canlock.el (defmacro): Remove
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from auth-source
+
+ * lisp/gnus/auth-source.el (auth-source-read-char-choice):
+ Remove compat code.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix gnus-group.el compilation warnings about unprefixed variables
+
+ * lisp/gnus/gnus-group.el (gnus-group-update-eval-form): Avoid
+ compilation warnings by passing in the dynamic variables as
+ explicit lexical parameters to `eval'.
+
+2016-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix the :tracker slot name
+
+ * lisp/gnus/registry.el (registry-lookup-secondary): The
+ `tracker' slot is called `tracker', not `:tracker'.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix compilation warnings in gnus-art.el
+
+ * lisp/gnus/gnus-art.el (rfc1843-decode-region): Autoload.
+ (gnus-article-hide): Avoid compilation warnings.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix compilation warning in gnus-score.el
+
+ * lisp/gnus/gnus-score.el (gnus-art): Require to silence byte
+ compiler.
+
+2016-02-12 Andreas Schwab <schwab@linux-m68k.org>
+
+ Revert "Fix gnus-group-get-new-news-this-group on group with closed server"
+
+ This reverts commit 9dc77e37aa84c6df9b3ddb4609f3c09201b0580e.
+
+ This makes nnimap groups not be activated.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix encoding problem introduced by previous patch series
+
+ * lisp/gnus/rfc2047.el: Ditto (bug#22648).
+
+ * lisp/gnus/rfc2231.el: Fix problem created by the
+ mm-replace-in-string conversion.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Revert "Avoid defvarring prefix-less variables"
+
+ This reverts commit 303390bda34f98b400798d5383cf0d722e35ba19.
+
+ The defvars are needed if we're doing lexical-binding
+
+2016-02-12 Glenn Morris <rgm@gnu.org>
+
+ * test/lisp/url/url-auth-tests.el (url-auth-test-digest-auth):
+ Make it pass.
+
+ * test/lisp/url/url-auth-tests.el
+ (url-auth-test-digest-auth-retrieve-cache): Fix obvious typo.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Finish up cl-defmethoding registry,el
+
+ * lisp/gnus/registry.el (initialize-instance): Use cl-defmethod.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Revert the gnus-replace-in-string change, fix arguments, reapply
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Silence more message.el compilation warnings
+
+ * lisp/gnus/message.el (message-generate-headers): Don't use
+ variable values directly to get the header values, because
+ that breaks with lexical binding (without unprefixed defvars).
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix various compilation warnings in message.el
+
+ * lisp/gnus/message.el (message-fix-before-sending): Use
+ read-multiple-choice instead of gnus-multiple-choice.
+ (mm-util): Require.
+ (rfc2047): Require.
+ (message-remove-blank-cited-lines): Use message instead of
+ gnus-message.
+ (message-send): Use y-or-n-p instead of gnus-y-or-n-p.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Silence compilation warning in mm-view
+
+ * lisp/gnus/mm-view.el (mm-display-inline-fontify): Silence
+ compilation warning.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix epg-related compilation warnings in mml-sec
+
+ * lisp/gnus/mml-sec.el: Fix compilation warnings from the epg
+ library.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ rmail-dont-reply-to-names is obsolete
+
+ * lisp/gnus/nnmail.el (nnmail-fancy-expiry-target): Don't bind
+ the obsolete `rmail-dont-reply-to-names' variable.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Partially revert the defmethod->cl-defmethod change in registry.el
+
+ * lisp/gnus/registry.el (initialize-instance): Use defmethod,
+ since cl-defmethod doesn't work with :after.
+ (initialize-instance): Ditto, but with :before.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Avoid obsolete function in plstore
+
+ * lisp/gnus/plstore.el (plstore--insert-buffer): Use setf
+ instead of the obsolete epg-context-set-armor.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Use cl-defmethod in registry.el
+
+ * lisp/gnus/registry.el: Use cl-defmethod instead of the
+ obsolete defmethod.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make sieve-manage require sasl
+
+ * lisp/gnus/sieve-manage.el: Fix compilation warning by
+ requiring sasl.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Avoid defvarring prefix-less variable
+
+ * lisp/gnus/mm-uu.el (mm-uu-entry): Rename from `entry'.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * lisp/gnus/mailcap.el: Remove usage of mailcap-delete-duplicates.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Don't use the obsolete char-valid-p function
+
+ * lisp/gnus/mm-url.el (mm-url-decode-entities): Don't use the
+ obsolete char-valid-p function.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix missed translation in a previous commit
+
+ * lisp/gnus/mailcap.el (mailcap-mime-types): Fix missed
+ translation of mailcap-delete-duplicates.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Avoid using mm-make-temp-file
+
+ * lisp/gnus/mail-source.el (mail-source-delete-crash-box): Ditto.
+
+ * lisp/gnus/mm-decode.el (mm-display-external): Ditto.
+
+ * lisp/gnus/mml-smime.el (mml-smime-openssl-encrypt): Ditto.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix compilation warning in gnus-start
+
+ * lisp/gnus/gnus-start.el (gnus-slave-save-newsrc): Avoid
+ mm-make-temp-file.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Avoid the obsoleted defmethod
+
+ * lisp/gnus/gnus-icalendar.el: Use cl-defmethod instead of
+ defmethod.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Avoid defvarring prefix-less variables
+
+ * lisp/gnus/gnus-group.el (gnus-group-update-eval-form): We
+ don't need to `defvar' the short variables to allow `eval' to
+ use them.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ nnweb doesn't need unibyte buffers
+
+ * lisp/gnus/nnweb.el (nnweb-retrieve-headers)
+ (nnweb-read-overview, nnweb-request-article)
+ (nnweb-google-reference): Unibyte buffers are not needed here.
+
+2016-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Encode before sending from nnspool
+
+ * lisp/gnus/nnspool.el (nnspool-request-post): Encode data
+ before sending it to the news server.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ nnrss buffers don't have to be unibyte
+
+ * lisp/gnus/nnrss.el (nnrss-insert): The buffer doesn't have
+ to be unibyte just to receive data, I think.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Don't use mm-with-unibyte-current-buffer in mml2015
+
+ * lisp/gnus/mml2015.el (mml2015-mailcrypt-encrypt): Don't use
+ mm-with-unibyte-current-buffer.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Don't use mm-with-unibyte-current in mml1991
+
+ * lisp/gnus/mml1991.el (mml1991-epg-sign): Don't use
+ mm-with-unibyte-current.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Don't use mm-with-unibyte-current in mml1991
+
+ * lisp/gnus/mml1991.el (mml1991-pgg-sign): Don't use
+ mm-with-unibyte-current.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Don't use mm-with-unibyte-buffer in utf7
+
+ * lisp/gnus/utf7.el (utf7-fragment-encode): Don't use
+ mm-with-unibyte-buffer.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove XEmacs compat code from Gnus helper libraries
+
+ * lisp/gnus/plstore.el (plstore-called-interactively-p): Remove.
+
+ * lisp/gnus/pop3.el (pop3-make-date): Remove XEmacs compat.
+
+ * lisp/gnus/sieve-mode.el: Remove XEmacs compat.
+
+ * lisp/gnus/spam-stat.el (spam-stat-called-interactively-p): Remove.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove XEmacs compat code from Gnus backends
+
+ * lisp/gnus/mm-view.el (mm-inline-image-xemacs): Remove.
+ (mm-inline-image): Rename from mm-inline-image-emacs.
+
+ * lisp/gnus/mml.el: Remove XEmacs compat code.
+
+ * lisp/gnus/nnheader.el: Remove XEmacs compat code.
+
+ * lisp/gnus/nnimap.el (nnimap-open-connection-1): Remove
+ XEmacs compat code.
+
+ * lisp/gnus/nnir.el (nnir-run-gmane): Remove XEmacs compat code.
+
+ * lisp/gnus/nnmail.el (nnmail-pathname-coding-system): Remove
+ XEmacs compat code.
+
+ * lisp/gnus/nnmairix.el: Remove XEmacs compat code.
+
+ * lisp/gnus/nnrss.el: Remove XEmacs compat code.
+
+ * lisp/gnus/nntp.el: Remove XEmacs compat code.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove XEmacs compat functions from mm-util.el
+
+ * lisp/gnus/mm-util.el (mm-special-display-p): Remove.
+ (mm-decode-coding-string, mm-encode-coding-string)
+ (mm-decode-coding-region, mm-encode-coding-region): Remove.
+ (mm-string-to-multibyte): Remove.
+ (mm-char-or-char-int-p): Remove.
+ (mm-ucs-to-char): Remove compat versions of the function.
+ (mm-read-coding-system): Remove.
+ (mm-coding-system-p): Remove compat code.
+ (mm-enrich-utf-8-by-mule-ucs): Remove.
+ (mm-enable-multibyte, mm-disable-multibyte): Remove compat versions.
+ (mm-delete-duplicates): Remove.
+ (mm-multibyte-p): Remove compat versions.
+ (mm-xemacs-find-mime-charset-1): Remove.
+ (mm-xemacs-find-mime-charset): Remove.
+ (mm-make-temp-file): Made obsolete.
+ (mm-find-buffer-file-coding-system): Remove XEmacs compat.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove Message and mm-decode XEmacs compat code
+
+ * lisp/gnus/message.el: Remove XEmacs compat code.
+
+ * lisp/gnus/mm-decode.el (mm-create-image-xemacs): Remove.
+
+ * lisp/gnus/mm-util.el: Remove some XEmacs compat code.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove som XEmacs compat code from message.el
+
+ * lisp/gnus/message.el: Remove some XEmacs compat code.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove XEmacs compat code from ietf-drums.el
+
+ * lisp/gnus/ietf-drums.el (ietf-drums-syntax-table): Drop
+ XEmacs compat.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove XEmacs compat code from gravatar.el
+
+ * lisp/gnus/gravatar.el: Remove XEmacs compat code from
+ gravatar.el.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove more XEmacs compat code from Gnus
+
+ * lisp/gnus/gnus-util.el (gnus-bound-and-true-p): Remove.
+ (gnus-timer--function): Remove.
+
+ * lisp/gnus/gnus-uu.el (gnus-uu-save-article): Remove XEmacs
+ 19.2 compat.
+
+ * lisp/gnus/gnus-win.el: Remove XEmacs compat code.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove more XEmacs compat functions from gnus-util.el
+
+ * lisp/gnus/gnus-util.el (gnus-put-display-table): Remove.
+ (gnus-get-display-table): Remove.
+ (gnus-format-message): Remove.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove more XEmacs compat functions from Gnus
+
+ * lisp/gnus/gnus-util.el (gnus-next-char-property-change): Remove.
+ (gnus-previous-char-property-change): Remove.
+ (gnus-graphic-display-p): Remove.
+ (gnus-select-frame-set-input-focus): Remove.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove more XEmacs compat code from gnus-util
+
+ * lisp/gnus/gnus-util.el (gnus-make-local-hook): Remove (and
+ all its usages).
+ (gnus-invisible-p): Remove.
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove gnus-make-local-hook
+
+ * lisp/gnus/gnus-util.el (gnus-make-local-hook): Remove (and
+ all its usages).
+
+2016-02-11 Lars Ingebrigtsen <larsi@gnus.org>
+
+ gnus-replace-in-string -> replace-regexp-in-string
+
+ * lisp/gnus/gnus-util.el (gnus-replace-in-string): Declare
+ obsolete. Transform all usages of it into
+ replace-regexp-in-string.
+
+ * lisp/gnus/mailcap.el (mailcap-replace-in-string): Remove.
+
+2016-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove Gnus XEmacs compat
+
+ * lisp/gnus/gnus-start.el (gnus-dribble-enter): Remove comment
+ about code that doesn't work in XEmacs.
+
+ * lisp/gnus/gnus-sum.el: Remove XEmacs compat.
+
+ * lisp/gnus/gnus-topic.el: Remove XEmacs compat.
+
+2016-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat functions in gnus-spec.el
+
+ * lisp/gnus/gnus-spec.el (gnus-string-width-function): Remove.
+ (gnus-substring-function): Remove.
+ (gnus-use-correct-string-widths): Remove.
+ (gnus-make-format-preserve-properties): Remove.
+ (gnus-xmas-format): Remove.
+
+ * lisp/gnus/gnus-srvr.el (gnus-server-mode): Remove XEmacs compat.
+
+2016-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove Gnus XEmacs compat functions
+
+ * lisp/gnus/gnus-registry.el: Remove XEmacs compat.
+
+ * lisp/gnus/gnus-salt.el: Remove XEmacs compat.
+
+ * lisp/gnus/gnus-score.el (gnus-decay-score): Remove XEmacs compat.
+
+2016-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove Gnus XEmacs compatibility
+
+ * lisp/gnus/gnus-demon.el (gnus-demon-idle-since): Remove
+ XEmacs compat.
+
+ * lisp/gnus/gnus-dired.el: Remove XEmacs compat.
+
+ * lisp/gnus/gnus-draft.el: Remove XEmacs compat.
+
+ * lisp/gnus/gnus-gravatar.el (gnus-gravatar-insert): Remove
+ XEmacs compat.
+
+ * lisp/gnus/gnus-group.el: Remove XEmacs compat.
+
+ * lisp/gnus/gnus-html.el: Remove XEmacs compat.
+
+ * lisp/gnus/gnus-ml.el: Remove XEmacs compat.
+
+ * lisp/gnus/gnus-picon.el (gnus-picon-style): Remove XEmacs comment.
+
+2016-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Don't use image-map if it isn't defined
+
+ * lisp/net/shr.el (shr-image-map): Only use image-map as a
+ parent if it's defined (bug#22614).
+
+2016-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Check for MagickAutoOrientImage
+
+ * configure.ac: Check for MagickAutoOrientImage.
+
+ * src/image.c (imagemagick_load_image): Don't use
+ MagickAutoOrientImage unless it's available.
+
+2016-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Document EXIF image rotation
+
+ * doc/lispref/display.texi (ImageMagick Images): Mention EXIF rotation.
+
+2016-02-10 Dima Kogan <dima@secretsauce.net>
+
+ Support integer image rotation and respect EXIF rotations
+
+ * src/image.c (imagemagick_load_image): Allow integer rotations in
+ addition to floating point rotations (bug#22591).
+ * src/image.c (imagemagick_load_image): Images that have an
+ orientation given in EXIF and have no explicit :rotation tag are now
+ pre-rotated. All information such as width/height is reported for the
+ rotated image.
+
+2016-02-10 Wolfgang Jenkner <wjenkner@inode.at>
+
+ * lisp/net/shr.el (image-map): Defvar it. (Bug#22614)
+
+2016-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * lisp/gnus/gnus-cite.el: Remove XEmacs compat code.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from gnus-bookmark.el
+
+ * lisp/gnus/gnus-bookmark.el (gnus-bookmark-mouse-available-p): Remove.
+ (gnus-bookmark-remove-properties): Remove.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove XEmacs compat code from gnus-a*.el
+
+ * lisp/gnus/gnus-agent.el: Remove compat code.
+
+ * lisp/gnus/gnus-art.el: Remove compat code.
+
+ * lisp/gnus/gnus-async.el: Remove compat code.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove gmm compat functions
+
+ * lisp/gnus/gmm-utils.el (gmm-image-search-load-path): Remove.
+ (gmm-write-region): Remove.
+ (gmm-called-interactively-p): Remove.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * lisp/gnus/ecomplete.el: Remove XEmacs compat code.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove compat code from compface.el
+
+ * lisp/gnus/compface.el: Remove XEmacs compat code throughout.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove the now empty gnus-ems.el and references to it
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove Gnus compat names for mouse bindings
+
+ * lisp/gnus/gnus-ems.el (gnus-widget-button-keymap): Remove.
+ (gnus-down-mouse-2): Remove.
+ (gnus-down-mouse-3): Remove.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Drop Gnus compat functions
+
+ * lisp/gnus/gnus-ems.el (gnus-mule-max-width-function): Remove.
+
+ * lisp/gnus/gnus-util.el (gnus-kill-all-overlays): Move here.
+
+ * lisp/gnus/gnus.el (gnus-mode-line-modified): Remove.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Get rid of gnus-ems-redefine
+
+ * lisp/gnus/gnus-ems.el (gnus-mouse-face-prop): Remove.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * lisp/gnus/gnus-spec.el: Move definition here from gnus-ems.el.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove Gnus compat code
+
+ * lisp/gnus/gnus-ems.el (gnus-ems-redefine): Remove
+ transitional code from ten years ago.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Allow interactively scaling past :max-width etc
+
+ * lisp/image.el (image--current-scaling)
+ (image--image-without-parameters): New functions.
+ (image--change-size): Use them to allow changing the size of a
+ image even if it has :width/:max-width (etc.) already set.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * lisp/gnus/mm-decode.el (shr-image-map): Compilation fix.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Allow accessing the image commands via shr
+
+ * lisp/gnus/mm-decode.el (mm-convert-shr-links): Allow
+ accessing the image commands.
+
+ * lisp/net/shr.el (shr-image-map): New map used for images.
+ (shr-urlify): Don't overwrite image maps when applying URL maps.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Use a sparse image keymap
+
+ * lisp/image.el (image-map): Use a sparse keymap.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Put a keymap on images created with insert-image and friends
+
+ * lisp/image.el (image-save): New command.
+ (image-rotate): Ditto.
+ (image-map): New keymap.
+ (insert-image): Put the image-map on all images.
+ (insert-sliced-image): Ditto.
+ * doc/lispref/display.texi (Showing Images): Document the
+ image map.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix some folding issues in read-multiple-choice
+
+ * lisp/subr.el (read-multiple-choice): Fix folding when you
+ have many items.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix typo in last checkin
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove Gnus compat functions
+
+ * lisp/gnus/gnus-ems.el (gnus-mark-active-p)
+ (gnus-region-active-p, gnus-select-lowest-window)
+ (gnus-summary-display-table, gnus-max-width-function): Remove
+ compat functions.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Move non-compat Gnus functions to gnus-util.el
+
+ * lisp/gnus/gnus-util.el (gnus-remove-image, gnus-put-image)
+ (gnus-create-image, gnus-image-type-available-p): Move here
+ from gnus-ems.el, since these aren't compat functions.
+
+2016-02-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Omit valloc decl if redundant
+
+ * src/gmalloc.c (valloc): Omit decl if malloc.h is included,
+ to pacify --enable-gcc-warnings.
+
+2016-02-09 Wolfgang Jenkner <wjenkner@inode.at>
+
+ Restore the calloc family.
+
+ * src/gmalloc.c (calloc, gcalloc, hybrid_calloc): Restore definitions.
+ They were lost in a4817d8 but calloc is still (marginally) used in
+ code statically liked with emacs, so hybrid_calloc is needed.
+ Also, in the non-hybrid case, we can't get rid of calloc anyway as
+ other libraries liked with emacs may need it.
+ * src/conf_post.h: Restore redefinition of calloc to hybrid_calloc.
+
+2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove some Gnus compat functions
+
+ * lisp/gnus/gnus-ems.el (gnus-string-mark-left-to-right)
+ (gnus-window-inside-pixel-edges, gnus-set-process-plist)
+ (gnus-process-plist, gnus-process-get, gnus-process-put): Remove.
+
+2016-02-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ -
+
+ -
+
+2016-02-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge from origin/emacs-25
+
+ 4feb962 * lisp/comint.el (comint-prompt-read-only): Clean tabs in docstring
+ cc419fb Don't inloop gnus-uu-mark-thread on the last thread
+ 51c77a2 Display non-ASCII group names better in prompts
+ f93d669 Default to gpg2 instead of gpg
+
+2016-02-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge from origin/emacs-25
+
+ 9ffe7dd * lisp/isearch.el (isearch-define-mode-toggle): Improve logic
+ 16140f7 * lisp/menu-bar.el (menu-bar-options-menu): New search submenu
+ 3db6adb * lisp/isearch.el (search-default-mode)
+ 4ea1ea7 * lisp/isearch.el: Rename search-default-regexp-mode to search-default-mode
+ c77ffc8 Use monitor's resolution for positioning tooltips
+ 49e5749 Fix file-notify-test on MS-Windows
+ be1d874 Fix issues found by auditing w32notify code
+ 87ae218 Extend etags Ruby support for accessors
+ aa35257 Update publicsuffix.txt.
+ 6816bff Ensure that Gnus dribble handling allows removing entries
+ 691feae Be consistent when using encoded strings in nnimap data
+ 3ed423b Display the decoded Gnus group name
+ 5428b5b Use completion-ignore-case instead of defining command
+
+2016-02-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge from origin/emacs-25
+
+ 1eaf68f * test/automated/file-notify-tests.el (file-notify-test06-many-events):
+ d333716 ; * etc/NEWS: Expand news entry for scss-mode
+ c32c16f ; Better document changes in ls-lisp default behavior
+ dc6eed2 Fix doc string of tls-program
+
+2016-02-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge from origin/emacs-25
+
+ 2c117fc * etc/NEWS: Document new mpc.el features
+ 71a0496 * lisp/custom.el (defface): Revert indentation change. (Bug#22524)
+ 9dfece1 Correctly fontify C++ initializations which "look like" functions.
+ 4485222 Improve newsticker-treeview-selection-face
+ 4236944 Minor fix in tagging Ruby accessors by etags
+ 35fc77d Spelling fixes
+ 3dda110 Remove 'def X' from the example
+
2016-02-09 Paul Eggert <eggert@cs.ucla.edu>
Minor alignas cleanup
@@ -5712,7 +7053,7 @@
* etc/NEWS (Gnus): Document mm-html-inhibit-images and
mm-html-blocked-images.
-2016-02-09 Paul Eggert <eggert@cs.ucla.edu>
+2016-02-08 Paul Eggert <eggert@cs.ucla.edu>
Increase success rate of fallback lmalloc
@@ -5720,14 +7061,14 @@
larger and larger sizes, to increase the probability that
the allocator will return a Lisp-aligned pointer.
-2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+2016-02-08 Lars Ingebrigtsen <larsi@gnus.org>
Make backgrounds extend to the end of the lines in shr
* lisp/net/shr.el (shr-face-background): Faces can also be on
the form `(:background "#fff)' (bug#22547).
-2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+2016-02-08 Lars Ingebrigtsen <larsi@gnus.org>
Make the `R' command get the correct relative <img>s
@@ -5738,26 +7079,26 @@
Backport:
-2016-02-09 Mike Kupfer <m.kupfer@acm.org>
+2016-02-08 Mike Kupfer <m.kupfer@acm.org>
Fix typos in emacs-mime.texi and gnus.texi
* doc/misc/emacs-mime.texi (Display Customization):
* doc/misc/gnus.texi (HTML): Fix typo.
-2016-02-09 Katsumi Yamaoka <yamaoka@jpl.org>
+2016-02-08 Katsumi Yamaoka <yamaoka@jpl.org>
* doc/misc/emacs-mime.texi (Display Customization):
Doc fix for mm-html-inhibit-images.
-2016-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+2016-02-08 Lars Ingebrigtsen <larsi@gnus.org>
Fix message-cross-post-followup-to group names
* lisp/gnus/message.el (message-cross-post-followup-to): Don't
insert group names like "nntp+foo:zot", because those aren't valid.
-2016-02-09 David Edmondson <dme@dme.org>
+2016-02-08 David Edmondson <dme@dme.org>
Compare recipient and keys case-insensitively
@@ -6137,14 +7478,6 @@
* lisp/net/tls.el (tls-program): Document the %t parameter (bug#22559).
-2016-02-05 Lars Ingebrigtsen <larsi@gnus.org>
-
- Restore window conf in nsm
-
- * lisp/net/nsm.el (nsm-query-user): Restore the window configuration.
-
- Backport:
-
2016-02-05 Mark Oteiza <mvoteiza@udel.edu>
* etc/NEWS: Document new mpc.el features
@@ -6170,7 +7503,7 @@
Improve newsticker-treeview-selection-face
- * lisp/net/newst-treeview.el (newsticker-treeview-selection-face): Improve
+ * newst-treeview.el (newsticker-treeview-selection-face): Improve
readability for dark background.
2016-02-04 Eli Zaretskii <eliz@gnu.org>
@@ -6198,6 +7531,510 @@
* test/etags/ETAGS.good_5:
* test/etags/ETAGS.good_6: Adjust accordingly.
+2016-02-09 Eli Zaretskii <eliz@gnu.org>
+
+ Fix network-stream-tests on MS-Windows
+
+ * test/lisp/net/network-stream-tests.el (make-local-unix-server):
+ Skip if local sockets are not supported.
+
+2016-02-09 Michael Albinus <michael.albinus@gmx.de>
+
+ * admin/notes/bug-triage: Fix bug priorities. Explain colors in debbugs-gnu.
+
+2016-02-09 Eli Zaretskii <eliz@gnu.org>
+
+ Disable 'timer-list'
+
+ * lisp/emacs-lisp/timer-list.el: Make 'timer-list' a disabled
+ command.
+
+2016-02-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Avoid aligned_alloc static/extern collision
+
+ * src/alloc.c (aligned_alloc): Define to private name when a
+ static function, to avoid collision with lisp.h extern decl.
+ Reported by John Yates in:
+ http://lists.gnu.org/archive/html/emacs-devel/2016-02/msg00439.html
+
+2016-02-08 Michal Nazarewicz <mina86@mina86.com>
+
+ Make `message-beginning-of-line' aware of folded headers
+
+ * lisp/gnus/message.pl (message-beginning-of-header): New function which
+ moves point to the beginning of a mail header. The function is aware of
+ folded headers and with non-nil argument looks for the true beginning of
+ a header while with nil argument moves to the indented text of header's
+ value.
+ (message-beginning-of-line): Function is now aware of folded headers and
+ either moves point to the indention of a header or, in visual-line-mode,
+ searches for the beginning of the header.
+
+2016-02-08 Michal Nazarewicz <mina86@mina86.com>
+
+ Optimise ‘point in message header’ check
+
+ * lisp/gnus/message.el (message-point-in-header-p): Replace two unbound
+ regular expression matches with a single bound string match thus
+ reducing amount of work the function is doing.
+
+2016-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make the `R' command get the correct relative <img>s
+
+ * lisp/net/eww.el (eww-readable): Preserve the base URL so
+ that image expansions are fetched from the right place (bug#22605).
+
+2016-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Add a mode to list and cancel timers
+
+ * doc/lispref/os.texi (Timers): Menton `timer-list'.
+
+ * lisp/emacs-lisp/timer-list.el: New file.
+
+2016-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Add new commands to allow changing the size of images
+
+ * lisp/image.el (image-increase-size, image-decrease-size):
+ New commands.
+ (image-change-size): New function.
+
+2016-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Allow the image scale to be a floating point number
+
+ * src/image.c (compute_image_size): The scale can be a
+ floating point number.
+
+2016-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Add an IPv6 test
+
+ * test/lisp/net/network-stream-tests.el
+ (connect-to-tls-ipv6-nowait): Add an ipv6 test, too.
+
+2016-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Use gnutls-serv instead of openssh
+
+ * test/lisp/net/network-stream-tests.el (make-tls-server): Use
+ gnutls-serv instead of openssh.
+
+2016-02-08 Daniel Colascione <dancol@dancol.org>
+
+ Performance improvements for vc-hg
+
+ Teach vc-hg how to read some Mercurial internal data structures,
+ allowing us to avoid the need to run hg status -A, which is very slow
+ for large repositories. Fall back to running hg if anything looks
+ funny. vc-hg now puts the _working directory_ revision in the
+ modeline instead of the file revision, which greatly improves
+ performance and which allows us to again skip running hg in the case
+ that we have an active bookmark.
+
+ * lisp/vc/vc-hg.el (vc-hg-state): Try calling `vc-hg-statefast'
+ (vc-hg-symbolic-revision-styles)
+ (vc-hg-use-file-version-for-mode-line-version)
+ (vc-hg-parse-hg-data-structures): New user preferences
+ (vc-hg--active-bookmark-internal, vc-hg--run-log)
+ (vc-hg--symbolic-revision, vc-hg-mode-line-string)
+ (vc-hg--read-u8, vc-hg--read-u32-be)
+ (vc-hg--raw-dirstate-search, vc-hg--cached-dirstate-search)
+ (vc-hg--parts-to-string, vc-hg--pcre-to-elisp-re)
+ (vc-hg--glob-to-pcre, vc-hg--hgignore-add-pcre)
+ (vc-hg--hgignore-add-glob, vc-hg--hgignore-add-path)
+ (vc-hg--slurp-hgignore-1, vc-hg--slurp-hgignore)
+ (vc-hg--ignore-patterns-valid-p)
+ (vc-hg--ignore-patterns-ignored-p, vc-hg--time-to-fixnum)
+ (vc-hg--file-ignored-p, vc-hg--read-repo-requirements)
+ (vc-hg--requirements-understood-p, vc-hg--dirstate-scan-cache)
+ (vc-hg-state-fast): New functions.
+ (vc-hg--hgignore-patterns, vc-hg--hgignore-filenames)
+ (vc-hg--cached-ignore-patterns, vc-hg--dirstate-scan-cache)
+ (vc-hg--dirstate-scan-cache): New internal variables.
+ * lisp/vc/vc-hooks.el (vc-refresh-state): Invoke vc find-file-hook
+ before updating modeline.
+
+2016-02-07 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Skip TLS tests if we don't have openssl
+
+ * test/lisp/net/network-stream-tests.el (connect-to-tls): Skip
+ TLS tests if we don't have openssl and GnuTLS.
+
+2016-02-07 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Automatically scale images up on high-density screens
+
+ * doc/lispref/display.texi (ImageMagick Images): Mention :scale.
+ (Defining Images): Mention image-scaling-factor.
+
+ * lisp/image.el (image-compute-scaling-factor): New function
+ (bug#22172).
+ (create-image): Use it.
+ (image-scaling-factor): New variable.
+
+ * src/image.c (compute_image_size): Take :scale into account.
+
+2016-02-07 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Ensure progress when fetching from the queue
+
+ * lisp/url/url-queue.el (url-queue-check-progress): Ensure
+ that we have progress when fetching queued requests (bug#22576).
+
+2016-02-07 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make mail-extract-address-components return the user name more
+
+ * lisp/mail/mail-extr.el (mail-extract-address-components):
+ Return the name even if it's the same as the mailbox name (if
+ `mail-extr-ignore-single-names' isn't set) (bug#22594).
+
+2016-02-07 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Message no longer warns about unknown top level domains
+
+2016-02-07 Jarno Malmari <jarno@malmari.fi>
+
+ Add tests for url-auth
+
+ * test/lisp/url/url-auth-tests.el: New file.
+
+2016-02-07 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Add a TLS connection test
+
+ * test/lisp/net/network-stream-tests.el (connect-to-tls): Add
+ a TLS connection test.
+
+2016-02-07 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Add more network tests
+
+ * test/lisp/net/network-stream-tests.el (echo-server-nowait):
+ New test.
+
+2016-02-07 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Add network tests
+
+ * test/lisp/net/network-stream-tests.el: New suite of network tests.
+
+2016-02-07 Foo <rasmus@gmx.us>
+
+ Allow various Gnus and Message address variables to be functions
+
+ * doc/misc/gnus.texi (To From Newsgroups):
+ gnus-ignored-from-addresses can be a function.
+
+ * doc/misc/message.texi (Wide Reply):
+ message-dont-reply-to-names can be a function.
+
+ * lisp/gnus/gnus-icalendar.el (gnus-icalendar-identities):
+ message-alternative-emails can be a function.
+
+ * lisp/gnus/gnus-notifications.el (gnus-notifications):
+ message-alternative-emails can be a function (bug#22315).
+
+ * lisp/gnus/gnus-sum.el
+ (gnus-summary-from-or-to-or-newsgroups):
+ gnus-ignored-from-addresses can be a function (bug#22315).
+
+2016-02-07 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix typo in Gnus regexp
+
+ * lisp/gnus/gnus-art.el (gnus-button-valid-fqdn-regexp): Fix
+ typo in last change to this regexp (bug#22592).
+
+2016-02-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port to FreeBSD x86
+
+ Reported by Herbert J. Skuhra in:
+ http://lists.gnu.org/archive/html/emacs-devel/2016-02/msg00336.html
+ * src/lisp.h (NONPOINTER_BITS) [__FreeBSD__]: Zero in this case too,
+ since malloc always returns a multiple of 8 in FreeBSD.
+
+2016-02-07 Alan Mackenzie <acm@muc.de>
+
+ On leaving CC Mode, clean up by removing character properties.
+
+ * lisp/progmodes/cc-mode.el (c-leave-cc-mode-mode): Remove from the buffer
+ all instances of the text properties/extents category, syntax-table,
+ c-is-sws, c-in-sws, c-type, and c-awk-NL-prop.
+
+2016-02-06 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * lisp/gnus/gnus-art.el (gnus-button-valid-fqdn-regexp): Don't use
+ the no-longer-existing message-valid-fqdn-regexp variable.
+
+2016-02-06 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove message-valid-fqdn-regexp, since it changes too much now
+ * lisp/gnus/message.el (message-valid-fqdn-regexp): Remove.
+ (message-bogus-recipient-p): Don't use it any more.
+ (message-make-fqdn): Ditto. Suggested by Lars-Johan Liman.
+
+2016-02-06 Paul van der Walt <paul@denknerd.org> (tiny change)
+
+ * lisp/gnus/message.el (message-subject-re-regexp): Also match
+ "Re :" as a "Re:" prefix (commonly used in France).
+
+2016-02-06 Adam Sjøgren <asjo@koldfront.dk>
+
+ * lisp/net/shr.el (shr-tag-del, shr-tag-ins): New functions.
+
+2016-02-06 David Edmondson <dme@dme.org>
+
+ src/process.c Correctly convert AF_INET6 addresses
+ * src/process.c (conv_lisp_to_sockaddr): AF_INET6 addresses are
+ converted to a list of 16 bit quantities by
+ conv_sockaddr_to_lisp(). conv_lisp_to_sockaddr() should follow the
+ same scheme rather than expecting a (longer) list of 8 bit
+ quantities.
+
+2016-02-06 Martin Jesper Low Madsen <martin@martinjlowm.dk> (tiny change)
+
+ * lisp/gnus/auth-source.el (auth-source-macos-keychain-search):
+ Search for all host/port (or protocol) combinations for a match in
+ the OS X keychain.
+
+2016-02-06 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Remove nonsensical setting of gnus-newsgroup-unseen
+
+ * lisp/gnus/gnus-sum.el (gnus-update-marks): Remove nonsensical
+ setting of gnus-newsgroup-unseen.
+
+2016-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Use underline on all terminals that support it
+
+ * lisp/subr.el (read-multiple-choice): Use
+ display-supports-face-attributes-p instead of
+ display-graphic-p to determine whether we can use underlining.
+
+2016-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make the nsm query say what it did after the user interaction
+
+ * lisp/net/nsm.el (nsm-query): Issue a message about
+ aborting/accepting messages (suggested by N. Jackson)
+ (bug#22531).
+
+2016-02-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Omit XLI (init) == 0 optimization in make-vector
+
+ * src/alloc.c (Fmake_vector): Simplify by omitting the (XLI (init)
+ == 0) case, as this optimization is probably not worth the hassle.
+ Just for the record, the test for that case could have been
+ (XLI (init) % ((EMACS_UINT) -1 / UCHAR_MAX) == 0) (!),
+ assuming the typical platform with no padding bits and where
+ conversion to int omits the most significant bits.
+
+2016-02-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * autogen.sh: Port to dash (Bug#22556).
+
+2016-02-05 Michael Albinus <michael.albinus@gmx.de>
+
+ Minor cleanup for Tramp "doas".
+
+ * doc/misc/tramp.texi (Inline methods): Add "doas" method.
+
+ * etc/NEWS: Add Tramp connection method "doas".
+
+ * lisp/net/tramp-sh.el (tramp-methods) <doas>:
+ Add `tramp-remote-shell-args'.
+
+2016-02-05 Xi Lu <lx@shellcodes.org>
+
+ * lisp/net/tramp-sh.el (tramp-methods) <doas>: Add. (Bug#22542)
+
+ (tramp-default-user-alist): Add rule for "doas".
+ (top): Completion function for "doas" is
+ `tramp-completion-function-alist-su'.
+
+2016-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Restore the window configuration
+
+ * lisp/net/nsm.el (nsm-query-user): Restore the window
+ configuration (bug#22532).
+
+2016-02-04 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Use an X popup in read-multiple-choice if running from a mouse command
+
+ * lisp/subr.el (read-multiple-choice): Use an X popup if
+ called from a mouse action (bug#19368).
+
+2016-02-04 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Display cursor in echo area when prompting
+
+ * lisp/subr.el (read-multiple-choice): Display the cursor in
+ the echo area when prompting (bug#19368).
+
+2016-02-04 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make NSM prompting clearer
+
+ * lisp/net/nsm.el (nsm-query-user): Use read-multiple-choice
+ to prompt in a nicer way (bug#19368).
+
+2016-02-04 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Underline read-multiple-choice-face
+
+ * lisp/faces.el (read-multiple-choice-face): Also underline
+ the choice.
+
+2016-02-04 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make the read-multiple-choice prompt a bit prettier
+
+ * doc/lispref/commands.texi (Reading One Event): Mention
+ read-multiple-choice-face.
+
+ * lisp/subr.el (read-multiple-choice): Make the prompting a bit
+ prettier.
+
+2016-02-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Prefer memcpy and memset to doing it by hand
+
+ * src/alloc.c (Fmake_vector):
+ * src/ccl.c (setup_ccl_program):
+ Use memset to clear array.
+ * src/alloc.c (Fvector, Fmake_byte_code):
+ * src/charset.c (Fdefine_charset_internal):
+ Use memcpy to copy array.
+
+2016-02-04 Nicolas Petton <nicolas@petton.fr>
+
+ Do not ignore redirections of 301, 302 and 307 status codes
+
+ The current version of HTTP/1.1 (RFC 7231) no longer requires
+ confirmation on 301, 302 or 307 status codes, therefore we do not have
+ to ignore redirects for other requests than GET and HEAD.
+
+ * lisp/url/url-http.el (url-http-parse-headers): Do not ignore 301, 302
+ and 307 redirects for other requests than GET and HEAD.
+
+2016-02-04 Mark Oteiza <mvoteiza@udel.edu>
+
+ * lisp/net/eww.el (eww-switch-to-buffer): Use pop-to-buffer-same-window instead.
+
+2016-02-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Simplify USE_ALIGNED_ALLOC
+
+ * src/alloc.c (USE_ALIGNED_ALLOC): Simplify, now that we’ve merged
+ in the emacs-25 changes. Omit no-longer-needed decl for aligned_alloc.
+
+2016-02-04 Eric Abrahamsen <eric@ericabrahamsen.net>
+
+ Honor docstring of gnus-group-get-new-news
+
+ * lisp/gnus/gnus-start.el (gnus-get-unread-articles): If the prefix arg
+ is t, but non-numeric, unconditionally consider all groups to need
+ updating.
+
+2016-02-04 Lars Ingebrigtsen <larsi@gnus.org>
+
+ New function read-multiple-choice
+
+ * doc/lispref/commands.texi (Reading One Event): Document
+ read-multiple-choice.
+
+ * lisp/faces.el (read-multiple-choice-face): New face.
+
+ * lisp/subr.el (read-multiple-choice): New function.
+
+2016-02-04 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ ee73997 Make erc work better when encountering unknown prefix chars
+ b99141d Make erc completion case-insensitive again
+ 66c4620 Make complection in erc use consistent casing
+ 8c562b2 Make /QUIT in erc more robust
+ d93d2c5 Make tracking faces in Emacs work more reliably
+ af6ab7e Make shr not bug out on images on non-graphical displays
+ 3311f40 Fix bookmark display widths
+ d90ab1e Fix typo in eww-make-unique-file-name
+ 7f81825 Make it possible to TAB to input fields
+ a43a1dc Insert complete alt texts when images are disabled
+ 56ed4e1 Allow eww text fields to grow
+ 66b315c Make erc work when subword-mode is switched on
+ 255b68f Fix IMAP doc example
+ 91557f5 Quoting fixes in doc strings and diagnostics
+ 2c0dc9f Fix warning message in hack-local-variables
+ 504696d Etags: yet another improvement in Ruby tags
+ 8784ebf Fix x-popup-menu on TTYs without a mouse
+ 8b87ecb * lisp/emacs-lisp/map.el: Improvements to the docstring of the
+ pcase macro
+ 6191003 Use pop-to-buffer-same-window in eww
+ fe321fd * autogen.sh: Revert all recent changes.
+ 74ebd4a * make-dist: Updates related to nt/.
+ 737193a * make-dist: Add modules/.
+ 3696bf2 * make-dist: Update for super-special file that can't live in etc/.
+ a4278e2 Fix failure to compile ns-win.el in parallel builds
+ 860da4d Fix names of tags generated for Ruby accessors
+ f6213ce Fix file-name recognition in 'etags'
+ e42e662 Change Ruby file names and extensions recognized by 'etags'
+ 58bfb6a More improvements for Ruby support in 'etags'
+ c04e911 Add --git-config option to autogen.sh
+ 5713466 Fix editing undo changes in eww fields
+ 51362d6 Allow the user more control of popping up the eww window
+ ee0fbd8 Make eww-browse-url with new-window parameter work again
+ 9c3142d Clean up eww code slightly
+ cb035f3 Don't insert nil faces in shr
+ 4c3fae3 ; * lisp/progmodes/prolog.el: Remove some obsolete commentary.
+ 93f2153 Improve the custom type of some user options.
+ 9f60d7e Mark some risky calendar variables.
+ 1d07dcd Highlight two additional SCSS keywords
+ ee8b466 Recommend enabling integrity-checking in git
+ e639e10 Some corrections in Elisp manual
+ d766ca8 Chatter when autogen.sh changes Git configuration
+ 3b734e1 * org/org-compat.el (org-font-lock-ensure): Fix bogus test (bug#22399)
+ 43cb9f8 Omit unnecessary history from Lisp intro
+ 2fbd1da * etc/HISTORY: Add some more history, plus git tags.
+ c90e1b4 Improve elisp “Security Considerations†doc
+ cedd7ca autogen.sh now arranges for git to check hashes
+ 86ce76b ; Fix ChangeLog.2 commit ID.
+ 7b1d2b1 Fix (c & 040) typo in emergency escapes
+ a8273da Fix display of overlay strings with 'display' and 'box' property
+ fc48106 Fix imap-starttls-open
+ cdecbed Fix return value of imap-starttls-open
+ 20c7e34 ; * etc/NEWS: Fix renamed command name
+ 98bdbdb Correct reference to DARWIN_OS preprocessor symbol
+ b250d29 Spelling fix
+ b920a0e Spelling fixes
+ 93b144b Pacify GCC on C library without glibc API
+
+2016-02-04 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ ea26c8a * lisp/net/browse-url.el (browse-url-default-browser): Lower
+ priority of non-free Chrome.
+ 0fac75f Improve the custom type of some user options.
+ 2df0e04 Highlight CSS variables with variable name face
+ 3cf5e81 * lisp/gnus/gnus-kill.el (gnus-winconf-kill-file): Not
+ user-serviceable.
+ 2a5233c Mark some user options that can get evalled as risky.
+ 39b166f Disable DebPrint in sys_read on MS-Windows
+ 9fd0189 ;Fix ChangeLog entry
+ 4bb7233 Fix typos in Introduction to Emacs Lisp manual
+
2016-02-04 Vasilij Schneidermann <v.schneidermann@gmail.com> (tiny change)
Allow sending empty hidden values in eww
@@ -6216,6 +8053,30 @@
* lisp/erc/erc.el (erc-channel-receive-names): Output a warning
instead of erroring out on unknown prefix chars (bug#22380).
+2016-02-04 Mark Oteiza <mvoteiza@udel.edu>
+
+ Add a new command to switch between erc buffers
+
+ * doc/misc/eww.texi: Document eww-switch-to-buffer and its keybinding
+ * etc/NEWS: Mention new command
+ * lisp/net/eww.el (eww-mode-map): Bind eww-switch-to-buffer to "s"
+ (eww-mode-map): Add menu item
+ (eww-switch-to-buffer): New command
+
+2016-02-04 David Edmondson <dme@dme.org>
+
+ Make erc work better when encountering unknown prefix chars
+
+ * lisp/erc/erc.el (erc-channel-receive-names): Output a warning
+ instead of erroring out on unknown prefix chars (bug#22380).
+
+2016-02-04 Vasilij Schneidermann <v.schneidermann@gmail.com> (tiny change)
+
+ Allow sending empty hidden values in eww
+
+ * lisp/net/eww.el (eww-tag-input): Allow sending empty hidden
+ values (bug#22388).
+
2016-02-04 Lars Ingebrigtsen <larsi@gnus.org>
Make erc completion case-insensitive again
@@ -6251,6 +8112,19 @@
* lisp/net/shr.el (shr-put-image): Don't bug out on alt-less
images on non-graphical displays (bug#22327).
+2016-02-04 Andrew Hyatt <ahyatt@gmail.com>
+
+ Remove packages obsoleted before Emacs 24.
+
+ In accordance with the policy discussed in the emacs-devel list,
+ packages that have been obsoleted for a full major release cycle are up
+ for deletion.
+
+ This removes almost all packages that are now eligible for deletion,
+ with the exception of "cl-compat", which seems it is likely to still be
+ used, and "optional", which offers some functionality that doesn't have
+ a replacement yet.
+
2016-02-04 Lars Ingebrigtsen <larsi@gnus.org>
Fix bookmark display widths
@@ -6312,6 +8186,16 @@
(mml-smime-get-ldap-cert):
Follow user style preference when quoting diagnostics.
+2016-02-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ Mention context when resume from emergency escape
+
+ That way, if the user has been doing something else for a while,
+ they are reminded of the situation when restarting Emacs,
+ and are more likely to understand the two questions.
+ * doc/emacs/trouble.texi (Emergency Escape): Document this.
+ * src/keyboard.c (handle_interrupt): Implement this.
+
2016-02-03 Noam Postavsky <npostavs@gmail.com>
Fix warning message in hack-local-variables
@@ -6347,6 +8231,31 @@
* lisp/emacs-lisp/map.el: Improvements to the docstring of the pcase macro
+2016-02-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port aligned_alloc decl to Cygwin.
+
+ Problem reported by Ken Brown (Bug#22522#38).
+ * configure.ac (aligned_alloc): Check for decl too.
+ * src/lisp.h (aligned_alloc): Declare if not already declared.
+
+2016-02-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ autogen.sh now configures git only on request
+
+ * autogen.sh (do_autoconf, do_git): New vars.
+ Support new arguments --help, all, autoconf, git.
+ By default, just do autoconf-related configuration, not git.
+ Prefer 'echo' to 'cat <<EOF ...', as this tends to avoid temp files.
+ If GNU cp is available, use it to backup .git/config before
+ changing it. When configuring git, chatter about what is being
+ done, and configure git to check hashes. Avoid some duplicate
+ file name specification when creating git hooks.
+
+ * GNUmakefile (ALL_IF_GIT): New macro.
+ (configure): Use it.
+ * INSTALL.REPO: Suggest './autogen.sh all'.
+
2016-02-02 Lars Ingebrigtsen <larsi@gnus.org>
Use pop-to-buffer-same-window in eww
@@ -6358,6 +8267,20 @@
* autogen.sh: Revert all recent changes.
+2016-02-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Build with C11 if available
+
+ * admin/merge-gnulib (GNULIB_MODULES): Add std-gnu11.
+ * m4/std-gnu11.m4: New file, from gnulib.
+ * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
+
+2016-02-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Update gnulib copy
+
+ * doc/misc/texinfo.tex: Copy from gnulib.
+
2016-02-02 Glenn Morris <rgm@gnu.org>
* make-dist: Updates related to nt/.
@@ -6389,6 +8312,11 @@
* test/etags/ETAGS.good_6:
* test/etags/CTAGS.good: Adapt to changes in Ruby tags.
+2016-02-02 Glenn Morris <rgm@gnu.org>
+
+ * lisp/vc/add-log.el (change-log-directory-files, find-change-log):
+ Doc tweaks.
+
2016-02-02 Eli Zaretskii <eliz@gnu.org>
Fix file-name recognition in 'etags'
@@ -6419,6 +8347,21 @@
* test/etags/ruby-src/test1.ru: Renamed from test1.ruby.
(Bug#22241)
+2016-02-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port better to platforms lacking aligned_alloc
+
+ Problem reported by Ken Brown (Bug#22522).
+ * src/lisp.h (hybrid_aligned_alloc)
+ [HYBRID_MALLOC && !HAVE_ALIGNED_ALLOC]: New decl.
+
+2016-02-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port malloc.h hygiene fix to LTO
+
+ * src/alloc.c (__malloc_initialize_hook):
+ Make it externally visible (Bug#22522).
+
2016-02-02 Eli Zaretskii <eliz@gnu.org>
More improvements for Ruby support in 'etags'
@@ -6427,7 +8370,7 @@
alias_method. Identify constants even if the assignment is not
followed by whitespace. (Bug#22241)
- * test/etags/ruby-src/test1.ru: Add tests for constants,
+ * test/etags/ruby-src/test1.ruby: Add tests for constants,
accessors, and alias_method.
* test/etags/ETAGS.good_1:
* test/etags/ETAGS.good_2:
@@ -6484,6 +8427,15 @@
2016-02-01 Glenn Morris <rgm@gnu.org>
+ Make find-change-log prefer a VCS root, if no ChangeLog exists.
+
+ * lisp/vc/add-log.el (change-log-directory-files): New option.
+ (find-change-log): Respect change-log-directory-files.
+ * doc/emacs/maintaining.texi (Change Log Commands):
+ Mention change-log-directory-files.
+
+2016-02-01 Glenn Morris <rgm@gnu.org>
+
Improve the custom type of some user options.
* lisp/autoinsert.el (auto-insert-alist):
@@ -6527,7 +8479,7 @@
* test/indent/css-mode.css: Add bang rule test case.
- * test/indent/scss-mode.scss: Add test cases for the introduced bang
+ * test/indent/scss-mode.css: Add test cases for the introduced bang
rules.
2016-02-01 Karl Fogel <kfogel@red-bean.com>
@@ -6590,13 +8542,28 @@
2016-02-01 Paul Eggert <eggert@cs.ucla.edu>
+ Double static heap size.
+
+ * src/sheap.h (STATIC_HEAP_SIZE): Double it, since it was too
+ small on FreeBSD (Bug#22086).
+
+2016-02-01 Paul Eggert <eggert@cs.ucla.edu>
+
Chatter when autogen.sh changes Git configuration
* autogen.sh (git_config): New function. Use it instead of ‘git config’.
2016-02-01 Kyle Meyer <kyle@kyleam.com>
- * lisp/org/org-compat.el (org-font-lock-ensure): Fix bogus test (bug#22399)
+ * org/org-compat.el (org-font-lock-ensure): Fix bogus test (bug#22399)
+
+2016-02-01 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix Bug#20821
+
+ * lisp/net/tramp.el (tramp-file-name-handler):
+ * lisp/net/tramp-sh.el (tramp-sh-handle-expand-file-name):
+ Use `tramp-drop-volume-letter'. (Bug#20821)
2016-01-31 Paul Eggert <eggert@cs.ucla.edu>
@@ -6626,6 +8593,14 @@
http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg01802.html
* autogen.sh: Do "git config transfer.fsckObjects true".
+2016-01-31 Dave Barker <kzar@kzar.co.uk>
+
+ Add ability to give rcirc servers an alias name
+
+ * lisp/net/rcirc.el (rcirc-server-alist): Add :server-alias
+ customization option.
+ (rcirc, rcirc-connect): Take server alias into account.
+
2016-01-31 Paul Eggert <eggert@cs.ucla.edu>
Fix (c & 040) typo in emergency escapes
@@ -6635,6 +8610,18 @@
auto-saves after emergency escapes. Redo comparison to avoid
similar problems.
+2016-01-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port new hybrid malloc to FreeBSD
+
+ Problem reported by Wolfgang Jenkner in: http://bugs.gnu.org/22086#118
+ * src/gmalloc.c (__malloc_initialize_hook, __after_morecore_hook)
+ (__morecore) [HYBRID_MALLOC]: Define in this case too.
+
+2016-01-31 Wolfgang Jenkner <wjenkner@inode.at>
+
+ * configure.ac: Stop using mmap for buffers for FreeBSD.
+
2016-01-31 Eli Zaretskii <eliz@gnu.org>
Fix display of overlay strings with 'display' and 'box' property
@@ -6650,6 +8637,24 @@
* lisp/net/imap.el (imap-starttls-open): Log imap process
output. Call imap-parse-greeting. (Bug#22500)
+2016-01-31 Michael Albinus <michael.albinus@gmx.de>
+
+ Merge changes from Tramp repository
+
+ * doc/misc/Makefile.in (${buildinfodir}/tramp.info tramp.html):
+ No EXTRA_OPTS needed.
+
+ * doc/misc/tramp.texi: Merge changes from Emacsemacs-25
+ branch, especially for @trampfn{}.
+ (Top): Move @ifnottex down.
+ (History): XEmacs support has been removed.
+ (GVFS based methods, Remote processes): Do not use emacsgvfs flag.
+ (Auto-save and Backup): Use both syntax versions.
+ (File name Syntax): Remark on IPv6 adresses is valid for
+ unified syntax only.
+
+ * doc/misc/trampver.texi: Do not set emacsgvfs flag.
+
2016-01-31 Andreas Schwab <schwab@linux-m68k.org>
Fix return value of imap-starttls-open
@@ -6665,10 +8670,52 @@
2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
+ Spelling fixes
+
Spelling fix
Spelling fixes
+2016-01-30 Glenn Morris <rgm@gnu.org>
+
+ * lisp/vc/add-log.el (find-change-log): Use locate-dominating-file.
+
+2016-01-30 Matthew Carter <m@ahungry.com>
+
+ Quote table names for postgres listings (sql-mode)
+
+ * lisp/progmodes/sql.el (sql-postgres-completion-object): Avoid passing
+ unquoted table names to the completion list.
+
+2016-01-30 Glenn Morris <rgm@gnu.org>
+
+ Change Smerge "Mine" and "Other" for "Upper" and "Lower. (Bug#20878)
+
+ * lisp/vc/smerge-mode.el (smerge-diff-switches)
+ (smerge-context-menu, smerge-match-conflict, smerge-swap): Doc fixes.
+ (smerge-upper, smerge-upper-face, smerge-keep-upper)
+ (smerge-diff-base-upper): Rename from smerge-mine, smerge-mine-face,
+ smerge-keep-mine, smerge-diff-base-mine. Update all uses.
+ (smerge-mine-face, smerge-other-face): Remove obsolete face aliases.
+ (smerge-lower, smerge-lower-face, smerge-lower-re, smerge-keep-lower)
+ (smerge-diff-base-lower): Rename from smerge-other, smerge-other-face,
+ smerge-other-re, smerge-keep-other, smerge-diff-base-lower.
+ Update all uses.
+ (smerge-basic-map): Add "l" and "u" bindings.
+ (smerge-mode-menu): Update menu bindings for renaming.
+ (smerge-font-lock-keywords): Update face names.
+ (smerge-match-names): Update names.
+ (smerge-diff-upper-lower): Rename from smerge-diff-mine-other.
+ (smerge-match-conflict, smerge-ediff): Rename local variables.
+ (smerge-makeup-conflict): Relabel markers.
+ (smerge-parsep-re): Use renamed variables.
+
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port recent my_edata change to MS-Windows
+
+ * src/lastfile.c (my_edata): Also define if WINDOWSNT.
+
2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC on C library without glibc API
@@ -6681,21 +8728,19 @@
Don’t declare if HAVE_ALIGNED_ALLOC.
Correct misspelling of HAVE_ALIGNED_ALLOC in ifdef.
-2016-01-30 Artur Malabarba <bruce.connor.am@gmail.com>
-
- Backport: * lisp/files.el: Remove support for extra .dir-locals file
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
- (dir-locals-file-2, dir-locals--all-files): Remove.
- (dir-locals-collect-variables, dir-locals-file, dir-locals-find-file)
- (dir-locals-read-from-file, hack-dir-local-variables): Revert changes.
+ Tell Automake the new lib/Makefile.am is OK
- * lisp/files-x.el (modify-dir-local-variable): Revert changes.
+ * lib/Makefile.am (AUTOMAKE_OPTIONS): Add -Wno-portability.
- * lisp/help-fns.el (describe-variable): Revert changes.
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
- * doc/emacs/custom.texi (Directory Variables): Revert changes.
+ Make it easy to override preferred-branch test
- * etc/NEWS: Revert changes.
+ * Makefile.in (preferred-branch-is-current):
+ Rename from emacs-25-branch-is-current. All uses changed.
+ (PREFERRED_BRANCH): New macro.
2016-01-30 Glenn Morris <rgm@gnu.org>
@@ -6768,260 +8813,239 @@
(recursive-count-words): Fix typos. Reported by Daniel Bastos
<dbastos@toledo.com>.
-2016-01-30 Nicolas Petton <nicolas@petton.fr>
-
- Bump version to 25.0.90
-
- * README:
- * configure.ac:
- * msdos/sed2v2.inp: Bump version to 25.0.90.
-
-2016-01-30 Nicolas Petton <nicolas@petton.fr>
-
- * etc/AUTHORS: Update the AUTHORS file
-
-2016-01-30 Nicolas Petton <nicolas@petton.fr>
-
- Bump version to 25.0.90
-
- * README:
- * configure.ac:
- * msdos/sed2v2.inp: Bump version to 25.0.90.
-
-2016-01-30 Nicolas Petton <nicolas@petton.fr>
-
- * etc/AUTHORS: Update the AUTHORS file
-
-2016-01-30 Nicolas Petton <nicolas@petton.fr>
-
- authors.el updates
-
- * admin/authors.el (authors-renamed-files-alist): Additions.
-
-2016-01-30 Nicolas Petton <nicolas@petton.fr>
-
- Make it possible to run make change-history on emacs-25
-
- * Makefile.in: Check if the current branch is emacs-25 instead of
- master.
-
-2016-01-30 lu4nx <lx@shellcodes.org>
-
- Support Go language in 'etags'
-
- * lib-src/etags.c <Ruby_help>: Fix documentation of Ruby tags.
- <Go_help>: New help.
- <Go_suffixes>: New variable.
- (Go_functions): New function.
- <lang_names>: Add entry for Go. (Bug#22370)
-
- * doc/emacs/maintaining.texi (Tag Syntax): Document Go support.
- * doc/man/etags.1: Mention Go support.
-
- * etc/NEWS: Mention Go support.
-
- * test/etags/go-src/test.go:
- * test/etags/go-src/test1.go: New test files.
- * test/etags/Makefile (GOSRC): New variable.
- (SRCS): Add $(GOSRC).
- * test/etags/ETAGS.good_1:
- * test/etags/ETAGS.good_2:
- * test/etags/ETAGS.good_3:
- * test/etags/ETAGS.good_4:
- * test/etags/ETAGS.good_5:
- * test/etags/ETAGS.good_6:
- * test/etags/CTAGS.good: Adapt to addition of Go tests.
-
-2016-01-30 Eli Zaretskii <eliz@gnu.org>
-
- Improve Ruby support in 'etags'
-
- * lib-src/etags.c (Ruby_functions): Tag constants. Don't tag
- singleton classes. Remove class qualifiers from tags generated
- for method and constant names. (Bug#22241)
-
- * doc/emacs/maintaining.texi (Tag Syntax): Mention that constants
- are tagged by etags in Ruby.
-
- * etc/NEWS: Mention that constants are tagged by etags in Ruby.
-
- * test/etags/ruby-src/test1.ru: Add more tests.
- * test/etags/ETAGS.good_1:
- * test/etags/ETAGS.good_2:
- * test/etags/ETAGS.good_3:
- * test/etags/ETAGS.good_4:
- * test/etags/ETAGS.good_5:
- * test/etags/ETAGS.good_6:
- * test/etags/CTAGS.good: Adapt to the changes in etags and in Ruby
- tests.
-
-2016-01-30 Eli Zaretskii <eliz@gnu.org>
-
- Adjust etags test results to changes in copyright years
-
- * test/etags/CTAGS.good:
- * test/etags/ETAGS.good_1:
- * test/etags/ETAGS.good_2:
- * test/etags/ETAGS.good_3:
- * test/etags/ETAGS.good_4:
- * test/etags/ETAGS.good_5:
- * test/etags/ETAGS.good_6: Adjust to shift in characters and
- in line numbers.
-
-2016-01-30 Andreas Schwab <schwab@linux-m68k.org>
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
- Revert "Re-enable checks in member, memql, delete to complain about non-lists"
+ Shrink static heap a bit
- This reverts commit f524e8b7f12d9b5a8b92084e5385429fe7b085b9.
+ * src/sheap.h: Include lisp.h, for Lisp_Object.
+ (STATIC_HEAP_SIZE): Now an enum constant, not a macro.
+ Make it 2 MiB * sizeof (Lisp_Object), which is a bit more
+ conservative than the old value.
+ (Bug#22086)
-2016-01-30 Nicolas Petton <nicolas@petton.fr>
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
- Make it possible to run make change-history on emacs-25
+ Fix extern symbols defined and not used
- * Makefile.in: Check if the current branch is emacs-25 instead of
- master.
+ * src/alloc.c: Always include <signal.h>.
+ (malloc_warning) [!SIGDANGER && (SYSTEM_MALLOC || HYBRID_MALLOC)]:
+ Do not define; unused.
+ * src/emacs.c, src/lisp.h (might_dump) [!DOUG_LEA_MALLOC]: Now static.
+ * src/gmalloc.c (gdefault_morecore): Rename from __default_morecore,
+ to avoid collision with glibc. Now static. All uses changed.
+ * src/lastfile.c (my_edata): Define only if
+ ((!defined SYSTEM_MALLOC && !defined HYBRID_MALLOC && !defined
+ WINDOWSNT) \ || defined CYGWIN || defined DARWIN_OS).
+ (Bug#22086)
-2016-01-30 Dmitry Gutov <dgutov@yandex.ru>
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
- Don't fiddle with DEFAULT
+ Build lib/e-*.o only on platforms that need it
+
+ * configure.ac (hybrid malloc): Simplify configuration.
+ (SHEAP_OBJ): Remove; no longer needed.
+ (HYBRID_MALLOC): New var. Subst it.
+ (HYBRID_MALLOC_LIB): New Automake conditional.
+ * lib/Makefile.am (noinst_LIBRARIES): Add libegnu.a only if
+ HYBRID_MALLOC_LIB.
+ (libegnu_a_CPPFLAGS): Omit AM_CPPFLAGS; not needed.
+ (MOSTLYCLEANFILES): Add libegnu.a.
+ * src/Makefile.in (SHEAP_OBJ): Remove.
+ (HYBRID_MALLOC): New macro.
+ (base_obj): Use it to conditionally add sheap.o.
+ (LIBEGNU_ARCHIVE): New macro.
+ ($(LIBEGNU_ARCHIVE)): New rule, replacing $(lib)/libegnu.a.
+ All uses of the latter replaced by the former.
+ * src/alloc.c (USE_ALIGNED_ALLOC): Simplify configuration.
+ Correct misspelling ALIGNED_ALLOC to HAVE_ALIGNED_ALLOC.
+ * src/gmalloc.c: Update comment.
+ * src/lisp.h (aligned_alloc)
+ [!DOUG_LEA_MALLOC && !HYBRID_MALLOC && !SYSTEM_MALLOC]:
+ New decl.
+ (Bug#22086)
- * lisp/progmodes/project.el (project--completing-read-strict):
- Don't change DEFAULT, whether is has any matches in
- COLLECTION, or not.
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
-2016-01-30 Eli Zaretskii <eliz@gnu.org>
+ Include <malloc.h> when advisable
+
+ This should help insulate us better from future glibc changes.
+ It is good hygiene to include .h files for APIs that Emacs uses.
+ Fix type clashes between Emacs and GNU <malloc.h> (Bug#22086).
+ * configure.ac: Check for malloc.h.
+ * src/alloc.c: Include <malloc.h> depending on HAVE_MALLOC_H,
+ not on DOUG_LEA_MALLOC.
+ * src/emacs.c, src/gmalloc.c (malloc_enable_thread):
+ Remove decl (now in lisp.h).
+ * src/gmalloc.c: Include stddef.h earlier, for ptrdiff_t.
+ [emacs]: Include lisp.h.
+ [HAVE_MALLOC_H]: Include <malloc.h>.
+ (__MALLOC_HOOK_VOLATILE): New macro, if not already defined.
+ (__after_morecore_hook, __malloc_initialize_hook, __morecore)
+ (__default_morecore):
+ [!HAVE_MALLOC_H]: New decls near non-inclusion of <malloc.h>.
+ (calloc): Make it clear that the macro should not be used.
+ Remove unused decl.
+ (malloc_info): New macro, to avoid clash with glibc <malloc.h>.
+ (__morecore, __default_morecore, __after_morecore_hook)
+ (__malloc_extra_blocks, __malloc_initialize_hook, __free_hook)
+ (__malloc_hook, __realloc_hook, __memalign_hook, memory_warnings):
+ Remove later decls.
+ (gmalloc_hook, gfree_hook, grealloc_hook):
+ Rename from __malloc_hook, __free_hook, __realloc_hook to
+ avoid type collision with glibc <malloc.h>. All uses changed.
+ (gmalloc_hook):
+ (__malloc_extra_blocks) [DOUG_LEA_MALLOC||HYBRID_MALLOC||SYSTEM_MALLOC]:
+ Now static.
+ (gmalloc_hook, __malloc_extra_blocks): Define even if [!HYBRID_MALLOC].
+ (__malloc_initialize_hook, __after_morecore_hook):
+ Declare with types compatible with glibc.
+ (__memalign_hook, hybrid_calloc) [HYBRID_MALLOC]:
+ Remove. All uses removed.
+ * src/lisp.h (__malloc_extra_blocks, malloc_enable_thread): New decls.
+ * src/ralloc.c, src/vm-limit.c:
+ Simplify includes and include <malloc.h> if available.
- Document xwidget commands and functions
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
- * doc/lispref/display.texi (Xwidgets): New section, describes some
- of the xwidget primitives.
- * doc/lispref/display.texi (Display): Update the chapter menu.
- * doc/emacs/misc.texi (Embedded WebKit Widgets): New section.
- * doc/emacs/emacs.texi (Top): Update the master menu to include
- the xwidget node.
+ * src/alloc.c: Include "sheap.h".
-2016-01-30 Lars Ingebrigtsen <larsi@gnus.org>
+ (alloc_unexec_pre, alloc_unexec_post) [HYBRID_MALLOC]:
+ Set and clear bss_sbrk_did_unexec, on all platforms not just Cygwin.
+ * src/lisp.h (alloc_unexec_pre, alloc_unexec_post) [!DOUG_LEA_MALLOC]:
+ Declare unconditionally.
+ * src/unexcw.c, src/unexelf.c (bss_sbrk_did_unexec): Remove decl.
+ (unexec): Don’t set or clear bss_sbrk_did_unexec;
+ the caller now does this.
+ (Bug#22086)
- Build fix for shr.el
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
- * shr.el (seq): Require.
+ Pacify --enable-gcc-warnings when HYBRID_MALLOC
-2016-01-30 Dmitry Gutov <dgutov@yandex.ru>
+ * src/buffer.c (init_buffer):
+ * src/emacs.c (main):
+ * src/xsmfns.c (smc_save_yourself_CB, x_session_initialize):
+ Use emacs_get_current_dir_name, not get_current_dir_name.
+ * src/conf_post.h (aligned_alloc) [HYBRID_MALLOC && emacs]: New macro.
+ (HYBRID_GET_CURRENT_DIR_NAME, get_current_dir_name): Remove.
+ * src/emacs.c: Include "sheap.h".
+ (report_sheap_usage): Remove decl.
+ (Fdump_emacs) [HYBRID_MALLOC]: Report usage directly.
+ Don't assume ptrdiff_t can be printed as int.
+ * src/gmalloc.c [HYBRID_MALLOC]:
+ Include "sheap.h" rather than declaring its contents by hand.
+ (get_current_dir_name, gget_current_dir_name)
+ (hybrid_get_current_dir_name): Remove.
+ (emacs_abort): Remove duplicate decl.
+ (aligned_alloc): Undef, like malloc etc.
+ (ALLOCATED_BEFORE_DUMPING): Now a static function, not a macro.
+ Make it a bit more efficient.
+ (malloc_find_object_address): Remove unused decl.
+ (enum mcheck_status, mcheck, mprobe, mtrace, muntrace, struct mstats)
+ (mstats, memory_warnings): Declare only if GC_MCHECK.
+ * src/lisp.h (emacs_get_current_dir_name):
+ New decl, replacing get_current_dir_name.
+ * src/sheap.c: Include sheap.h first.
+ (STATIC_HEAP_SIZE): Remove; now in sheap.h.
+ (debug_sheap): Now static.
+ (bss_sbrk_buffer_end): Remove; no longer used.
+ (bss_sbrk_ptr): Now static and private.
+ (bss_sbrk_did_unexec): Now bool.
+ (BLOCKSIZE): Remove, to avoid GCC warning about its not being used.
+ (bss_sbrk): Don't treat request_size 0 as special, since the code
+ works without this being a special case.
+ Avoid overflow if request size exceeds INT_MAX.
+ (report_sheap_usage): Remove; now done in emacs.c.
+ * src/sheap.h: New file.
+ * src/sysdep.c (get_current_dir_name): Remove macro.
+ Include "sheap.h".
+ (emacs_get_current_dir_name): Rename function from
+ get_current_dir_name. Handle HYBRID_MALLOC here;
+ this is simpler.
+ (Bug#22086)
- Improve project-find-file yet again!
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
- * lisp/progmodes/project.el (project--completing-read-strict):
- New function.
- (project-find-file-in): Use it.
- (project-file-completion-table): Move the default
- implementation inside the cl-defgeneric form.
- (http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg01720.html)
+ Report static heap usage on non-Cygwin, too
-2016-01-30 Dmitry Gutov <dgutov@yandex.ru>
+ * src/emacs.c (Fdump_emacs) [HYBRID_MALLOC]: Report sheap usage here ...
+ * src/unexcw.c (unexec): ... instead of here, since sheap can be used
+ on platforms other than Cygwin (Bug#22086).
- Don't pass DIR to 'hg status'
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
- * lisp/vc/vc-hg.el (vc-hg-dir-status-files):
- Don't pass DIR to 'hg status' (bug#22481).
+ Pacify GCC on extern decls
-2016-01-30 Stephen Leake <stephen_leake@stephe-leake.org>
+ * src/unexelf.c (bss_sbrk_did_unexec): Move decl to top level
+ to pacify recent GCC (Bug#22086).
- Fix typo in previous commits
+2016-01-30 Wolfgang Jenkner <wjenkner@inode.at>
- * lisp/progmodes/project.el (project-find-file-in):
- * lisp/vc/vc-mtn.el (vc-mtn-find-ignore-file): Fix typo in previous
- commit.
+ Add musl patch to support HYBRID_MALLOC on elf systems
-2016-01-30 Stephen Leake <stephen_leake@stephe-leake.org>
+ * src/gmalloc.c: Adjust for HYBRID_MALLOC in the non CYGWIN case.
+ (__default_morecore): Here, in particular.
+ * configure.ac: Define HYBRID_MALLOC when unexelf.o is used.
+ New variable SHEAP_OBJ.
+ * src/Makefile.in: Use it.
+ (Bug#22086)
- Improve project-find-file
+2016-01-30 Rich Felker <dalias@libc.org> (tiny change)
- * lisp/progmodes/project.el (project-file-completion-table): New.
- (project-find-file, project-or-external-find-file): Default to filename
- at point.
- (project-file-completion-table): New, split out from
- project--find-file-in.
- (project-find-file-in): Renamed from project--find-file-in, use
- project-file-completion-table.
+ unexelf.c hook to support HYBRID_MALLOC on ELF
- * lisp/progmodes/xref.el (ede-minor-mode): New declaration.
- (xref--find-ignores-arguments): Add doc string.
+ * src/unexelf.c (unexec) [HYBRID_MALLOC]:
+ Define bss_sbrk_did_unexec (Bug#22086).
-2016-01-30 Stephen Leake <stephen_leake@stephe-leake.org>
+2016-01-30 Wolfgang Jenkner <wjenkner@inode.at>
- Implement vc-mtn-find-ignore-file, fix some doc strings
+ Link temacs with gnulib compiled with -Demacs
- * lisp/cedet/cedet-global.el (cedet-gnu-global-root): Improve doc string.
+ This is done to support HYBRID_MALLOC, since some static variables
+ (e.g., last_environ in putenv.c) hold pointers to memory malloced
+ before dumping (Bug#22086).
+ * lib/Makefile.am: Add incantation to install libegnu.a.
+ * src/Makefile.in ($(lib)/libgnu.a): Replace with libegnu.a
+ (temacs$(EXEEXT)): Use it.
- * lisp/cedet/ede/locate.el (initialize-instance): Improve doc string.
+2016-01-30 Wolfgang Jenkner <wjenkner@inode.at>
- * lisp/vc/vc-git.el (vc-git-find-ignore-file): Fix doc string.
+ Internal linkage for gmalloc etc. if HYBRID_MALLOC
- * lisp/vc/vc-mtn.el (vc-mtn-find-ignore-file): New function.
+ This avoids clashes with symbols if the after-dump malloc is
+ derived from Doug Lea's implementation (Bug#22086).
-2016-01-29 Vincent Belaïche <vincentb1@users.sourceforge.net>
+ * src/gmalloc.c (emacs_abort, __morecore, __default_morecore):
+ Move declarations up. For HYBRID_MALLOC, turn all `extern'
+ declarations below to `static' ones.
+ (aligned_alloc): Declare for !MSDOS as well.
+ (heapsize, _fraghead): Move resp. copy declaration downwards.
+ For HYBRID_MALLOC, conditionalize out the other definitions,
+ since the previous `static' declarations double as tentative
+ definitions, anyway.
+ (_malloc, _free, _realloc, __free_hook, _aligned_blocks)
+ (__realloc_hook, __memalign_hook): Conditionalize out.
+ (cfree, memalign, valloc): Ditto.
- Correct a whole bunch of bugs coming with renamed cell relocation.
+2016-01-30 Paul Eggert <eggert@cs.ucla.edu>
- This is the same change as commit on master branch. See
- http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=badcd38aa86ed7973f2be2743c405710973a0bdd
+ Merge from origin/emacs-25
- * lisp/ses.el (ses-localvars): rename variable
- `ses--renamed-cell-symb-list' into `ses--in-killing-named-cell-list'
- and adjust the comment about it.
- (ses-plist-delq): new defun.
- (ses--ses-buffer-list): new defvar.
- (ses--unbind-cell-name): new defun.
- (ses-relocate-symbol): Do not relocate symbol when it is a named cell.
- (ses-relocate-formula): Undo change of
- 2011-12-27T19:30:39Z!vincentb1@users.sourceforge.net that was
- preventing relocation for named cell --- now doing this is delegated
- to function `ses-relocate-symbol'.
- (ses-relocate-range): In docstring, undo change of
- 2016-01-03T07:31:52Z!johnw@newartisans.com, `ses-range' must remain
- lower case as it is not a variable.
- (ses-relocate-all): Cell name relocation : 1) check that cell is a
- renamed cell by testing `ses-cell' property to :ses-named, rather than
- comparing name to corresponding standard name. Set rowcol of renamed
- cell into the hashmap --- `ses-cell' property must not be used for
- that as the same name can be used for different locations in different
- SES sheets ; 2) use `local-variable-if-set-p' rather than `boundp' and
- `local-variable-p' to check if cell name is already in use in this
- sheet or needs initialization.
- (ses-relocate-all): Cell value relocation : 1) like for name
- relocation use the `ses-cell' property rather than comparing actual
- name to corresponding standard name. 2) Correct bug introduced in
- 2011-12-27T19:30:39Z!vincentb1@users.sourceforge.net, as the test was
- made the other way round than the intention --- ie value relocation
- was disabled for standard cell, not for renamed cell as was the
- intention.
- (ses-relocate-all): Add loop for unbinding deleted renamed cells
- names.
- (ses-killbuffer-hook): new defun.
- (ses-mode): Add the ses--ses-buffer-list maintenance mechanism ---
- kill buffer hook, plus pushing current buffer if new in list.
- (ses-delete-row, ses-delete-column): Collect deleted renamed cells
- into `ses--in-killing-named-cell-list'.
- (ses-rename-cell): Remove update of variable
- `ses--renamed-cell-symb-list', this variable is renamed to
- `ses--in-killing-named-cell-list', and its setting is done in
- functions `ses-delete-row' and , `ses-delete-column' now.
- (ses-rename-cell): Make cell new name a buffer local variable.
- (ses-rename-cell): Change correction of
- 2015-12-30T23:10:37Z!vincentb1@users.sourceforge.net concerning
- computation of the range over which `cursor-intangible' property was
- to be updated. This correction was ok for non spilling cells, but not
- for cells spilling over following blank cells. Simply use
- `next-single-property-change' rather than computing the end column
- from column widths.
+ 3f481ad Rename xref-query-replace to xref-query-replace-in-results
+ 62f4ed4 Update cl-defgeneric and cl-defmethod docstrings
+ 2111e0e Comment out next-error-function integration in xref
+ 4e11ad3 Correct a use of "which" in intro.texi
+ a1865bc Distinguish the two meanings of Java's keyword "default". Fixes bug #22358.
+ 76045f7 Don't operate on menu bar of nonexistent frame
+ c32f3bc Unbreak the GNUstep build.
-2016-01-29 Andreas Schwab <schwab@linux-m68k.org>
+2016-01-30 Andreas Schwab <schwab@linux-m68k.org>
Re-enable checks in member, memql, delete to complain about non-lists
* src/fns.c (Fmember, Fmemql, Fdelete): Revert 2007-10-16 change.
-2016-01-29 Martin Rudalics <rudalics@gmx.at>
+2016-02-04 Martin Rudalics <rudalics@gmx.at>
Minor doc(-string) tweaks
@@ -7039,24 +9063,22 @@
(Switching Buffers): Clarify description of
`switch-to-buffer-in-dedicated-window'.
-2016-01-29 Eli Zaretskii <eliz@gnu.org>
+2016-02-04 Eli Zaretskii <eliz@gnu.org>
- Minor improvements to 'pcase' documentation
+ Remove some useless-use-of eval.
- * doc/lispref/control.texi (Pattern matching case statement):
- Improve the documentation of 'pcase' per comments. See two
- discussion threads on emacs-devel@gnu.org for the details:
- http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg01335.html
- http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg01336.html.
+ * lisp/gnus/gnus.el (gnus-load-hook): Don't use eval.
+ * lisp/gnus/nnrss.el (xml): Simply require it.
+ (xml-rpc-method-call): Use declare-function.
-2016-01-29 Glenn Morris <rgm@gnu.org>
+2016-01-28 Glenn Morris <rgm@gnu.org>
Don't use eval to quieten prolog.el compilation.
* lisp/progmodes/prolog.el (pltrace-on, pltrace-off): Declare.
(prolog-enable-sicstus-sd, prolog-disable-sicstus-sd): Don't use eval.
-2016-01-29 Glenn Morris <rgm@gnu.org>
+2016-01-28 Glenn Morris <rgm@gnu.org>
Mark some risky prolog variables.
@@ -7077,6 +9099,9 @@
2016-01-28 Glenn Morris <rgm@gnu.org>
+ * lisp/emacs-lisp/bytecomp.el (byte-compile-nogroup-warn):
+ Warn if defcustom has no type. (Bug#16276)
+
* lisp/cedet/semantic/db-file.el (semanticdb-persistent-path):
Fix :type.
@@ -7097,19 +9122,21 @@
2016-01-27 Glenn Morris <rgm@gnu.org>
+ * test/lisp/vc/vc-hg.el: Move from test/automated/.
+
* lisp/xwidget.el (xwidget-query-on-exit-flag): Declare.
* lisp/xwidget.el (xwidget-webkit-browse-url): Give explicit error
if not compiled with xwidgets.
-2016-01-27 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-26 Paul Eggert <eggert@cs.ucla.edu>
C-u C-x = example doc fix
* doc/emacs/mule.texi (International Chars):
Adjust example to match current behavior of C-u C-x =.
-2016-01-27 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-26 Paul Eggert <eggert@cs.ucla.edu>
malloc.h hygiene
@@ -7147,37 +9174,6 @@
* src/keyboard.c, src/keyboard.h (handle_user_signal_hook):
Remove never-set var. All uses removed.
-2016-01-26 K. Handa <handa@gnu.org>
-
- Backport:fix previous change of src/ftfont.c (ftfont_shape_by_flt)
-
- * src/ftfont.c (ftfont_shape_by_flt): Fix previous change. Access the
- second glyph only when there are enough glyphs.
-
- (cherry picked from commit 9835757013569673854b692ccbb58bfb3c3ed1f7)
-
-2016-01-26 K. Handa <handa@gnu.org>
-
- support rendering of wider range of combinging characters by ftfont backend
-
- * lisp/language/hebrew.el (hebrew-shape-gstring): If the font backend
- supports rendering of combining characters, call
- font-shape-gstring.
-
- * src/font.c (Ffont_get): Handle `combining-capability' property.
- (syms_of_font): New symbol ":combining-capability'.
-
- * src/font.h (struct font_driver): New member combining_capability.
-
- * src/ftfont.c: Include "category.h".
- (ftfont_driver): Initialize combining_capability to
- ftfont_combining_capability.
- (ftfont_shape_by_flt): If OTF is null, try to find a suitable
- FLT in advance.
- (ftfont_combining_capability): New function.
-
- (cherry picked from commit 536f48e9a2251b9e654ea974bd90ff2f40218753)
-
2016-01-26 Anders Lindgren <andlind@gmail.com>
Fixed NextStep fullscreen issue (bug#22468)
@@ -7196,7 +9192,7 @@
([EmacsWindow constrainFrameRect:toScreen:]): Pass fullscreen
state to `constrain_frame_rect'.
-2016-01-26 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-01-25 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/files.el: Use a fixed file name for the second dir-locals file
@@ -7213,14 +9209,14 @@
* doc/lispref/variables.texi (Directory Local Variables): Update
accordingly.
-2016-01-26 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-01-25 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/files-x.el (modify-dir-local-variable): Small rewrite
Change a variable name to be more meaningful, and reorder some of
- the code with no change in behaviour.
+ the code with no change in behavior.
-2016-01-26 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-01-25 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/files.el (dir-locals-find-file): Refactor return values
@@ -7234,7 +9230,7 @@
(hack-dir-local-variables): Simplify accordingly and rename a
variable.
-2016-01-26 Glenn Morris <rgm@gnu.org>
+2016-01-25 Glenn Morris <rgm@gnu.org>
* lisp/textmodes/flyspell.el (flyspell--prev-meta-tab-binding):
Declare.
@@ -7246,7 +9242,7 @@
* lisp/xwidget.el (xwidget-webkit-scroll-behavior):
Rename using American spelling. Update all uses.
-2016-01-26 Glenn Morris <rgm@gnu.org>
+2016-01-25 Glenn Morris <rgm@gnu.org>
Yet more xwidget doc fixes.
@@ -7276,6 +9272,42 @@
2016-01-25 Stefan Monnier <monnier@iro.umontreal.ca>
+ (rng-c-fix-escaped-newlines): Use subst-char-in-string
+
+ * lisp/nxml/rng-cmpct.el (rng-c-fix-escaped-newlines):
+ Use subst-char-in-string.
+
+2016-01-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/textmodes/sgml-mode.el (sgml-forward-sexp): New function
+
+ (sgml-cursor-sensor, sgml-pretty-print, sgml-parse-tag-backward)
+ (sgml-calculate-indent): Use it.
+
+2016-01-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/org: Fix some compiler warnings
+
+ * lisp/org/ob-core.el (org-babel-check-confirm-evaluate)
+ (org-babel-map-src-blocks): Don't emit warnings if added vars are not used.
+ (*this*): Declare as dyn-bound.
+ (org-babel-expand-src-block, org-babel-load-in-session)
+ (org-babel-switch-to-session-with-code, org-babel-get-rownames):
+ Mark unused args.
+ (org-babel-combine-header-arg-lists): Remove unused var `args'.
+ (org-babel-find-named-block): Remove unused var `msg'.
+
+ * lisp/org/org-src.el (org-inhibit-startup, org-src-fontify-natively):
+ Declare as dyn-bound.
+ (org-edit-src-code): Remove unused var `lfmt'.
+ (org-edit-fixed-width-region): Remove unused var `preserve-indentation'.
+
+2016-01-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/font-lock.el: Use #' to quote function symbols
+
+2016-01-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
(font-lock-ensure-function): Fix bug#22399
* lisp/font-lock.el (font-lock-ensure-function): Fix handling when
@@ -7312,7 +9344,7 @@
* lisp/emacs-lisp/ert.el (ert--results-move): Change error to user-error
-2016-01-25 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-24 Paul Eggert <eggert@cs.ucla.edu>
Port "$@" to OpenIndiana ksh93
@@ -7323,11 +9355,11 @@
* admin/check-doc-strings, configure.ac, lib-src/rcs2log:
Use plain "$@" rather than ${1+"$@"}.
-2016-01-25 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-24 Paul Eggert <eggert@cs.ucla.edu>
* src/xwidget.c (Fxwidget_set_adjustment): Fix doc string quoting typo.
-2016-01-25 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-24 Paul Eggert <eggert@cs.ucla.edu>
Improve wording for SMB support
@@ -7468,7 +9500,7 @@
* admin/authors.el (authors-ignored-files, authors-renamed-files-alist):
Additions.
-2016-01-24 Dmitry Gutov <dgutov@yandex.ru>
+2016-01-23 Dmitry Gutov <dgutov@yandex.ru>
Rename xref-query-replace to xref-query-replace-in-results
@@ -7482,7 +9514,7 @@
* doc/emacs/maintaining.texi (Xref Commands)
(Identifier Search, Identifier Search): Update accordingly.
-2016-01-24 Dmitry Gutov <dgutov@yandex.ru>
+2016-01-23 Dmitry Gutov <dgutov@yandex.ru>
Update cl-defgeneric and cl-defmethod docstrings
@@ -7580,7 +9612,7 @@
Omit unused locals, or move them to where they’re needed.
(x_clear_area1): Now ATTRIBUTE_UNUSED.
-2016-01-23 Eli Zaretskii <eliz@gnu.org>
+2016-01-22 Eli Zaretskii <eliz@gnu.org>
Update documentation for Dired search and replace
@@ -7590,7 +9622,7 @@
* etc/NEWS: Mention xref-related changes in Dired.
-2016-01-23 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-22 Paul Eggert <eggert@cs.ucla.edu>
Port recent xdisp.c fix to picky C compilers
@@ -7602,11 +9634,11 @@
Prevent spurious recognition of K&R argument declarations. Fixes bug #2203
- * lisp/progmodes/cc-engine.el (c-forward-declarator): New function.
+ * cc-engine.el (c-forward-declarator): New function.
(c-in-knr-argdecl): Before recognizing a K&R argument declaration, check it is
contained in the preceding arg list.
- * lisp/progmodes/cc-fonts.el (c-font-lock-declarators): Use the new function
+ * cc-fonts.el (c-font-lock-declarators): Use the new function
`c-forward-declarator' in place of inline code.
2016-01-22 Eli Zaretskii <eliz@gnu.org>
@@ -7703,62 +9735,6 @@
HAVE_XWIDGETS is defined.
(struct xwidget_type, xwidget_from_id): Remove; unused.
-2016-01-22 Michael Albinus <michael.albinus@gmx.de>
-
- Backport kqueue integration from master
-
- * configure.ac (--with-file-notification): Add kqueue.
- (top): Remove special test for "${HAVE_NS}" and
- ${with_file_notification}, this is handled inside gfilenotify
- tests. Add kqueue tests. Use NOTIFY_CFLAGS and NOTIFY_LIBS
- instead of library specific variables. Add error message for
- gfile on Nextstep.
-
- * doc/lispref/os.texi (File Notifications): Add kqueue as backend.
- Fix some glitches in the example.
-
- * etc/NEWS: Mention kqueue.
-
- * lisp/filenotify.el (file-notify--library)
- (file-notify-descriptors, file-notify-callback)
- (file-notify-add-watch, file-notify-rm-watch)
- (file-notify-valid-p): Add kqueue support.
- (file-notify--rm-descriptor): Remove WHAT arg.
-
- * src/Makefile.in: Use NOTIFY_CFLAGS and NOTIFY_LIBS.
-
- * src/emacs.c (main): Call globals_of_kqueue and syms_of_kqueue.
-
- * src/inotify.c (inotifyevent_to_event): Extract file name from
- watch_object if the event doesn't provide it.
- (Finotify_add_watch): Add file name to watch_object.
-
- * src/keyboard.c (make_lispy_event): Check also for HAVE_KQUEUE.
-
- * src/kqueue.c: New file.
-
- * src/lisp.h: Declare extern globals_of_kqueue and syms_of_kqueue.
-
- * test/automated/file-notify-tests.el
- (file-notify--test-expected-events): Remove.
- (file-notify--test-cleanup): Do not set that variable.
- (file-notify--test-timeout) Use different timeouts for
- different libraries.
- (file-notify--test-library): New defun.
- (file-notify--test-event-test): Make stronger checks.
- (file-notify--test-with-events): EVENTS can also be a list of
- lists. Flush outstanding events before running the body.
- Make timeout heuristically depend on the number of events.
- (file-notify-test01-add-watch, file-notify-test02-events)
- (file-notify-test04-file-validity, file-notify-test05-dir-validity):
- Rewrite in order to call file monitors but directory monitors.
- (file-notify-test02-events, file-notify-test04-file-validity): Do
- not skip cygwin tests. Add additional test for file creation.
- Adapt expected result for different backends.
- (file-notify-test03-autorevert): Some of the tests don't work for
- w32notify.
- (file-notify-test06-many-events): New test.
-
2016-01-22 John Wiegley <johnw@newartisans.com>
Further corrections to the pcase docstring
@@ -7767,18 +9743,18 @@
* doc/emacs/anti.texi (Antinews): Rewrite for Emacs 25.
-2016-01-22 Stephen Leake <stephen_leake@stephe-leake.org>
+2016-01-21 Stephen Leake <stephen_leake@stephe-leake.org>
In xref-collect-references, force backends to respect the 'dir' arg
* lisp/progmodes/xref.el (xref-collect-references): Force symref backends
to use `default-directory'.
-2016-01-22 John Wiegley <johnw@newartisans.com>
+2016-01-21 John Wiegley <johnw@newartisans.com>
Minor correction to pcase docstring
-2016-01-22 John Wiegley <johnw@newartisans.com>
+2016-01-21 John Wiegley <johnw@newartisans.com>
Write a new docstring for the pcase macro
@@ -7788,7 +9764,7 @@
Avoid byte-compiler warning in todo-mode (bug#21953)
- * lisp/calendar/todo-mode.el (todo-convert-legacy-files): Add limit argument
+ * todo-mode.el (todo-convert-legacy-files): Add limit argument
to looking-back to comply with advertised-calling-convention.
2016-01-21 Stephen Berman <stephen.berman@gmx.net>
@@ -7801,7 +9777,7 @@
* lisp/calendar/todo-mode.el (todo-modes-set-2):
* lisp/doc-view.el (doc-view-mode): Set desktop-save-buffer unconditionally.
-2016-01-21 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-20 Paul Eggert <eggert@cs.ucla.edu>
No need to configure gobject-introspection
@@ -7876,14 +9852,14 @@
* lisp/isearch.el (isearch-search-fun-function)
(isearch-search-string): Doc fixes. (Bug#22411)
-2016-01-20 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-01-19 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/xwidget.el: Nitpicks
* lisp/xwidget.el (xwidget-log, xwidget-webkit-callback):
Use with-current-buffer rather than save-excursion + set-buffer.
-2016-01-20 Glenn Morris <rgm@gnu.org>
+2016-01-19 Glenn Morris <rgm@gnu.org>
Don't hard-code 1 as point-min.
@@ -7891,11 +9867,11 @@
* lisp/xwidget.el (xwidget-webkit-last-session)
(xwidget-webkit-current-session): Don't hard-code 1 as point-min.
-2016-01-20 Glenn Morris <rgm@gnu.org>
+2016-01-19 Glenn Morris <rgm@gnu.org>
* lisp/xwidget.el: Add declarations to silence non-xwidget compilation.
-2016-01-20 Glenn Morris <rgm@gnu.org>
+2016-01-19 Glenn Morris <rgm@gnu.org>
Trivial doc copyedits.
@@ -7905,7 +9881,7 @@
(Fxwidget_info, Fxwidget_view_lookup)
(Fset_xwidget_query_on_exit_flag): Trivial doc copyedits.
-2016-01-20 Glenn Morris <rgm@gnu.org>
+2016-01-19 Glenn Morris <rgm@gnu.org>
Avoid advising image-display-size for xwidgets.
@@ -7914,7 +9890,7 @@
* lisp/image-mode.el (xwidget-info, xwidget-at): Declare.
(image-display-size): Incorporate xwidget code directly.
-2016-01-20 Glenn Morris <rgm@gnu.org>
+2016-01-19 Glenn Morris <rgm@gnu.org>
Avoid breaking non-xwidget Emacs that happen to load xwidget.el.
@@ -7922,12 +9898,10 @@
(kill-buffer-query-functions): Only modify these hooks if
compiled with xwidget support.
-2016-01-20 Glenn Morris <rgm@gnu.org>
+2016-01-19 Glenn Morris <rgm@gnu.org>
* lisp/xwidget.el (xwidget-webkit-scroll-behaviour): Fix custom spec.
-2016-01-19 Glenn Morris <rgm@gnu.org>
-
* configure.ac (WEBKIT, GIR, CAIRO): Use EMACS_CHECK_MODULES, not PKG_.
* configure.ac (emacs_config_features): Add XWIDGETS, WEBKIT, GIR.
@@ -7954,36 +9928,36 @@
* configure.ac:
(HAVE_XWIDGETS, WIDGET_OBJ, EMACS_CONFIG_FEATURES):
- * src/xterm.c (x_draw_glyph_string, x_draw_bar_cursor):
- * src/xdisp.c:
+ * xterm.c (x_draw_glyph_string, x_draw_bar_cursor):
+ * xdisp.c:
(handle_display_spec, handle_single_display_spec, push_it)
(pop_it, set_iterator_to_next, dump_glyph)
(calc_pixel_width_or_height, fill_xwidget_glyph_string)
(BUILD_XWIDGET_GLYPH_STRING, BUILD_GLYPH_STRINGS)
(produce_xwidget_glyph, x_produce_glyphs)
(get_window_cursor_type):
- * src/window.c (Fdelete_window_internal):
- * src/termhooks.h (e):
- * src/print.c (print_object):
- * src/lisp.h (ptrdiff_t):
- * src/keyboard.c (kbd_buffer_get_event, make_lispy_event)
+ * window.c (Fdelete_window_internal):
+ * termhooks.h (e):
+ * print.c (print_object):
+ * lisp.h (ptrdiff_t):
+ * keyboard.c (kbd_buffer_get_event, make_lispy_event)
(syms_of_keyboard):
- * src/emacs.c (main):
- * src/dispnew.c (update_window, scrolling_window):
- * src/dispextern.h (g, i):
+ * emacs.c (main):
+ * dispnew.c (update_window, scrolling_window):
+ * dispextern.h (g, i):
* Makefile.in (XWIDGETS_OBJ, WEBKIT_CFLAGS, WEBKIT_LIBS)
(GIR_LIBS, ALL_CFLAGS, base_obj, LIBES):
- * src/keyboard.c (kbd_buffer_get_event):
- * src/emacsgtkfixed.c (emacs_fixed_gtk_widget_size_allocate)
+ * keyboard.c (kbd_buffer_get_event):
+ * emacsgtkfixed.c (emacs_fixed_gtk_widget_size_allocate)
(emacs_fixed_class_init): Add case for an xwidget view.
- * src/xwidget.c, src/xwidget.h, lisp/xwidget.el: New files for xwidgets
+ * xwidget.c, xwidget.h, xwidget.el: New files for xwidgets
Various improvements to the Xwidget feature.
- * src/xwidget.c:
- * src/emacsgtkfixed.c:
- * lisp/xwidget.el:
+ * xwidgets.c:
+ * emacsgtkfixed.c:
+ * xwidget.el:
2016-01-19 Eli Zaretskii <eliz@gnu.org>
@@ -8022,7 +9996,7 @@
(hfy-face-resolve-face): Handle font specification as well as font
name. Documentation update. (Bug#21990)
-2016-01-19 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-18 Paul Eggert <eggert@cs.ucla.edu>
Fix spurious escapes in describe-input-method
@@ -8031,6 +10005,409 @@
* lisp/international/quail.el (quail-help):
Apply substitute-command-keys to doc strings before displaying them.
+2016-01-30 Nicolas Petton <nicolas@petton.fr>
+
+ Bump version to 25.0.90
+
+ * README:
+ * configure.ac:
+ * msdos/sed2v2.inp: Bump version to 25.0.90.
+
+2016-01-30 Nicolas Petton <nicolas@petton.fr>
+
+ * etc/AUTHORS: Update the AUTHORS file
+
+2016-01-30 Nicolas Petton <nicolas@petton.fr>
+
+ authors.el updates
+
+ * admin/authors.el (authors-renamed-files-alist): Additions.
+
+2016-01-30 Nicolas Petton <nicolas@petton.fr>
+
+ Make it possible to run make change-history on emacs-25
+
+ * Makefile.in: Check if the current branch is emacs-25 instead of
+ master.
+
+2016-01-30 lu4nx <lx@shellcodes.org>
+
+ Support Go language in 'etags'
+
+ * lib-src/etags.c <Ruby_help>: Fix documentation of Ruby tags.
+ <Go_help>: New help.
+ <Go_suffixes>: New variable.
+ (Go_functions): New function.
+ <lang_names>: Add entry for Go. (Bug#22370)
+
+ * doc/emacs/maintaining.texi (Tag Syntax): Document Go support.
+ * doc/man/etags.1: Mention Go support.
+
+ * etc/NEWS: Mention Go support.
+
+ * test/etags/go-src/test.go:
+ * test/etags/go-src/test1.go: New test files.
+ * test/etags/Makefile (GOSRC): New variable.
+ (SRCS): Add $(GOSRC).
+ * test/etags/ETAGS.good_1:
+ * test/etags/ETAGS.good_2:
+ * test/etags/ETAGS.good_3:
+ * test/etags/ETAGS.good_4:
+ * test/etags/ETAGS.good_5:
+ * test/etags/ETAGS.good_6:
+ * test/etags/CTAGS.good: Adapt to addition of Go tests.
+
+2016-01-30 Eli Zaretskii <eliz@gnu.org>
+
+ Improve Ruby support in 'etags'
+
+ * lib-src/etags.c (Ruby_functions): Tag constants. Don't tag
+ singleton classes. Remove class qualifiers from tags generated
+ for method and constant names. (Bug#22241)
+
+ * doc/emacs/maintaining.texi (Tag Syntax): Mention that constants
+ are tagged by etags in Ruby.
+
+ * etc/NEWS: Mention that constants are tagged by etags in Ruby.
+
+ * test/etags/ruby-src/test1.ruby: Add more tests.
+ * test/etags/ETAGS.good_1:
+ * test/etags/ETAGS.good_2:
+ * test/etags/ETAGS.good_3:
+ * test/etags/ETAGS.good_4:
+ * test/etags/ETAGS.good_5:
+ * test/etags/ETAGS.good_6:
+ * test/etags/CTAGS.good: Adapt to the changes in etags and in Ruby
+ tests.
+
+2016-01-30 Eli Zaretskii <eliz@gnu.org>
+
+ Adjust etags test results to changes in copyright years
+
+ * test/etags/CTAGS.good:
+ * test/etags/ETAGS.good_1:
+ * test/etags/ETAGS.good_2:
+ * test/etags/ETAGS.good_3:
+ * test/etags/ETAGS.good_4:
+ * test/etags/ETAGS.good_5:
+ * test/etags/ETAGS.good_6: Adjust to shift in characters and
+ in line numbers.
+
+2016-01-30 Andreas Schwab <schwab@linux-m68k.org>
+
+ Revert "Re-enable checks in member, memql, delete to complain about non-lists"
+
+ This reverts commit f524e8b7f12d9b5a8b92084e5385429fe7b085b9.
+
+2016-01-30 Nicolas Petton <nicolas@petton.fr>
+
+ Make it possible to run make change-history on emacs-25
+
+ * Makefile.in: Check if the current branch is emacs-25 instead of
+ master.
+
+2016-01-30 Dmitry Gutov <dgutov@yandex.ru>
+
+ Don't fiddle with DEFAULT
+
+ * lisp/progmodes/project.el (project--completing-read-strict):
+ Don't change DEFAULT, whether is has any matches in
+ COLLECTION, or not.
+
+2016-01-30 Eli Zaretskii <eliz@gnu.org>
+
+ Document xwidget commands and functions
+
+ * doc/lispref/display.texi (Xwidgets): New section, describes some
+ of the xwidget primitives.
+ * doc/lispref/display.texi (Display): Update the chapter menu.
+ * doc/emacs/misc.texi (Embedded WebKit Widgets): New section.
+ * doc/emacs/emacs.texi (Top): Update the master menu to include
+ the xwidget node.
+
+2016-01-30 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Build fix for shr.el
+
+ * shr.el (seq): Require.
+
+2016-01-30 Dmitry Gutov <dgutov@yandex.ru>
+
+ Improve project-find-file yet again!
+
+ * lisp/progmodes/project.el (project--completing-read-strict):
+ New function.
+ (project-find-file-in): Use it.
+ (project-file-completion-table): Move the default
+ implementation inside the cl-defgeneric form.
+ (http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg01720.html)
+
+2016-01-30 Dmitry Gutov <dgutov@yandex.ru>
+
+ Don't pass DIR to 'hg status'
+
+ * lisp/vc/vc-hg.el (vc-hg-dir-status-files):
+ Don't pass DIR to 'hg status' (bug#22481).
+
+2016-01-30 Stephen Leake <stephen_leake@stephe-leake.org>
+
+ Fix typo in previous commits
+
+ * lisp/progmodes/project.el (project-find-file-in):
+ * lisp/vc/vc-mtn.el (vc-mtn-find-ignore-file): Fix typo in previous
+ commit.
+
+2016-01-30 Stephen Leake <stephen_leake@stephe-leake.org>
+
+ Improve project-find-file
+
+ * lisp/progmodes/project.el (project-file-completion-table): New.
+ (project-find-file, project-or-external-find-file): Default to filename
+ at point.
+ (project-file-completion-table): New, split out from
+ project--find-file-in.
+ (project-find-file-in): Renamed from project--find-file-in, use
+ project-file-completion-table.
+
+ * lisp/progmodes/xref.el (ede-minor-mode): New declaration.
+ (xref--find-ignores-arguments): Add doc string.
+
+2016-01-30 Stephen Leake <stephen_leake@stephe-leake.org>
+
+ Implement vc-mtn-find-ignore-file, fix some doc strings
+
+ * lisp/cedet/cedet-global.el (cedet-gnu-global-root): Improve doc string.
+
+ * lisp/cedet/ede/locate.el (initialize-instance): Improve doc string.
+
+ * lisp/vc/vc-git.el (vc-git-find-ignore-file): Fix doc string.
+
+ * lisp/vc/vc-mtn.el (vc-mtn-find-ignore-file): New function.
+
+2016-01-23 Michael Albinus <michael.albinus@gmx.de>
+
+ Improve user name completion in Tramp
+
+ * lisp/net/tramp.el (tramp-parse-passwd, tramp-parse-etc-group):
+ Call also "getent passwd" or "getent group", if possible.
+ (tramp-parse-putty): Cache the result.
+
+2016-01-22 Michael Albinus <michael.albinus@gmx.de>
+
+ * etc/NEWS: Move kqueue entries to Emacs 25.1 sections.
+
+2016-01-20 Glenn Morris <rgm@gnu.org>
+
+ Remove handling of non-string time-stamp formats, obsolete for 20 years.
+
+ * lisp/time-stamp.el (time-stamp-format): Doc fix.
+ (time-stamp-old-format-warn, time-stamp-fconcat): Remove.
+ (time-stamp-string): Ignore non-string formats.
+
+2016-01-20 Eli Zaretskii <eliz@gnu.org>
+
+ Anoter fix for problematic merge from emacs-25
+
+ * src/w32fns.c (globals_of_w32fns): Move initialization of
+ resetstkoflw to a non-Cygwin part.
+
+2016-01-20 Michael Albinus <michael.albinus@gmx.de>
+
+ * test/Makefile.in (mostlyclean): Use ${LOGFILES}.
+
+2016-01-20 Eli Zaretskii <eliz@gnu.org>
+
+ Fix MS-Windows build broken by a botched merge from emacs-25
+
+ * src/w32.c (w32_crypto_hprov): New static variable.
+ (globals_of_w32): Initialize w32_crypto_hprov.
+ (w32_init_crypt_random, w32_init_random): New functions.
+ Include wincrypt.h.
+ * src/w32.h (w32_init_random): Add prototype.
+
+2016-01-20 Vincent Belaïche <vincentb1@users.sourceforge.net>
+
+ Correct a whole bunch of bugs coming with renamed cell relocation.
+
+ * lisp/ses.el (ses-localvars): rename variable
+ `ses--renamed-cell-symb-list' into `ses--in-killing-named-cell-list'
+ and adjust the comment about it.
+ (ses-plist-delq): new defun.
+ (ses--ses-buffer-list): new defvar.
+ (ses--unbind-cell-name): new defun.
+ (ses-relocate-symbol): Do not relocate symbol when it is a named cell.
+ (ses-relocate-formula): Undo change of
+ 2011-12-27T19:30:39Z!vincentb1@users.sourceforge.net that was
+ preventing relocation for named cell --- now doing this is delegated
+ to function `ses-relocate-symbol'.
+ (ses-relocate-range): In docstring, undo change of
+ 2016-01-03T07:31:52Z!johnw@newartisans.com, `ses-range' must remain
+ lower case as it is not a variable.
+ (ses-relocate-all): Cell name relocation : 1) check that cell is a
+ renamed cell by testing `ses-cell' property to :ses-named, rather than
+ comparing name to corresponding standard name. Set rowcol of renamed
+ cell into the hashmap --- `ses-cell' property must not be used for
+ that as the same name can be used for different locations in different
+ SES sheets ; 2) use `local-variable-if-set-p' rather than `boundp' and
+ `local-variable-p' to check if cell name is already in use in this
+ sheet or needs initialization.
+ (ses-relocate-all): Cell value relocation : 1) like for name
+ relocation use the `ses-cell' property rather than comparing actual
+ name to corresponding standard name. 2) Correct bug introduced in
+ 2011-12-27T19:30:39Z!vincentb1@users.sourceforge.net, as the test was
+ made the other way round than the intention --- ie value relocation
+ was disabled for standard cell, not for renamed cell as was the
+ intention.
+ (ses-relocate-all): Add loop for unbinding deleted renamed cells
+ names.
+ (ses-killbuffer-hook): new defun.
+ (ses-mode): Add the ses--ses-buffer-list maintenance mechanism ---
+ kill buffer hook, plus pushing current buffer if new in list.
+ (ses-delete-row, ses-delete-column): Collect deleted renamed cells
+ into `ses--in-killing-named-cell-list'.
+ (ses-rename-cell): Remove update of variable
+ `ses--renamed-cell-symb-list', this variable is renamed to
+ `ses--in-killing-named-cell-list', and its setting is done in
+ functions `ses-delete-row' and , `ses-delete-column' now.
+ (ses-rename-cell): Make cell new name a buffer local variable.
+ (ses-rename-cell): Change correction of
+ 2015-12-30T23:10:37Z!vincentb1@users.sourceforge.net concerning
+ computation of the range over which `cursor-intangible' property was
+ to be updated. This correction was ok for non spilling cells, but not
+ for cells spilling over following blank cells. Simply use
+ `next-single-property-change' rather than computing the end column
+ from column widths.
+
+2016-01-19 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ 3ae7934 ; * etc/NEWS: Mark entries that don't need further treatment.
+ 6165c36 * lisp/files.el (dir-locals--all-files): Respect absolute file-names
+ 2ffdf15 * lisp/help-fns.el (describe-variable): Fix a left-over parenthesis
+ 71ecd62 * lisp/dired-x.el (dired-omit-here-always): Use add-dir-local-variable
+ f0b82b3 * lisp/files.el (dir-locals--all-files): Use completion instead of wildcards
+ 86e4513 Fix incompatbilities with MS-Windows 2000 and older
+ 4e96521 Mention in PROBLEMS an issue with MS-Windows NT4
+ 15c23aa Ensure 8-byte aligned memory allocation on MS-Windows 9X
+ 39afa42 Fix tests for active region in hideif.el
+ 05df666 Fix interactive specs in some hideif.el commands
+
+2016-01-19 John Wiegley <johnw@newartisans.com>
+
+ -
+
+2016-01-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Avoid stdio in SIGINT handler
+
+ * admin/merge-gnulib (GNULIB_MODULES): Add ignore-value.
+ * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
+ * lib/ignore-value.h: New file, from gnulib.
+ * src/keyboard.c: Include it.
+ (write_stdout, read_stdin): New functions.
+ (handle_interrupt): Use them instead of printf and getchar,
+ and avoid fflush when handling signals.
+
+2016-01-19 Jens Lechtenboerger <jens.lechtenboerger@fsfe.org>
+
+ Refactor mml-smime.el, mml1991.el, mml2015.el
+
+ (Maybe this is the last merge from Gnus git to Emacs git)
+
+ Cf. discussion on ding mailing list, messages in
+ <http://thread.gmane.org/gmane.emacs.gnus.general/86228>.
+ Common code from the three files mml-smime.el, mml1991.el, and
+ mml2015.el is moved to mml-sec.el. Auxiliary functions are added
+ to gnus-util.el.
+
+ The code is supported by test cases with necessary test keys.
+
+ Documentation in message.texi is updated.
+
+ * doc/misc/message.texi (Security, Using S/MIME):
+ Update for refactoring mml-smime.el, mml1991.el, mml2015.el.
+ (Using OpenPGP): Rename from "Using PGP/MIME"; update contents.
+ (Passphrase caching, Encrypt-to-self, Bcc Warning): New sections.
+
+ * lisp/gnus/gnus-util.el (gnus-test-list, gnus-subsetp, gnus-setdiff):
+ New functions.
+
+ * lisp/gnus/mml-sec.el: Require gnus-util and epg.
+ (epa--select-keys): Autoload.
+ (mml-signencrypt-style-alist, mml-secure-cache-passphrase): Doc fix.
+ (mml-secure-openpgp-signers): New user option;
+ make mml1991-signers and mml2015-signers obsolete aliases to it.
+ (mml-secure-smime-signers): New user option;
+ make mml-smime-signers an obsolete alias to it.
+ (mml-secure-openpgp-encrypt-to-self): New user option;
+ make mml1991-encrypt-to-self and mml2015-encrypt-to-self obsolete
+ aliases to it.
+ (mml-secure-smime-encrypt-to-self): New user option;
+ make mml-smime-encrypt-to-self an obsolete alias to it.
+ (mml-secure-openpgp-sign-with-sender): New user option;
+ make mml2015-sign-with-sender an obsolete alias to it.
+ (mml-secure-smime-sign-with-sender): New user option;
+ make mml-smime-sign-with-sender an obsolete alias to it.
+ (mml-secure-openpgp-always-trust): New user option;
+ make mml2015-always-trust an obsolete alias to it.
+ (mml-secure-fail-when-key-problem, mml-secure-key-preferences):
+ New user options.
+ (mml-secure-cust-usage-lookup, mml-secure-cust-fpr-lookup)
+ (mml-secure-cust-record-keys, mml-secure-cust-remove-keys)
+ (mml-secure-add-secret-key-id, mml-secure-clear-secret-key-id-list)
+ (mml-secure-cache-passphrase-p, mml-secure-cache-expiry-interval)
+ (mml-secure-passphrase-callback, mml-secure-check-user-id)
+ (mml-secure-secret-key-exists-p, mml-secure-check-sub-key)
+ (mml-secure-find-usable-keys, mml-secure-select-preferred-keys)
+ (mml-secure-fingerprint, mml-secure-filter-keys)
+ (mml-secure-normalize-cust-name, mml-secure-select-keys)
+ (mml-secure-select-keys-1, mml-secure-signer-names, mml-secure-signers)
+ (mml-secure-self-recipients, mml-secure-recipients)
+ (mml-secure-epg-encrypt, mml-secure-epg-sign): New functions.
+
+ * lisp/gnus/mml-smime.el: Require epg;
+ refactor declaration and autoloading of epg functions.
+ (mml-smime-use): Doc fix.
+ (mml-smime-cache-passphrase, mml-smime-passphrase-cache-expiry):
+ Obsolete.
+ (mml-smime-get-dns-cert, mml-smime-get-ldap-cert):
+ Use format instead of gnus-format-message.
+ (mml-smime-epg-secret-key-id-list): Remove variable.
+ (mml-smime-epg-passphrase-callback, mml-smime-epg-find-usable-key)
+ (mml-smime-epg-find-usable-secret-key): Remove functions.
+ (mml-smime-epg-sign, mml-smime-epg-encrypt): Refactor.
+
+ * lisp/gnus/mml1991.el (mml1991-cache-passphrase)
+ (mml1991-passphrase-cache-expiry): Obsolete.
+ (mml1991-epg-secret-key-id-list): Remove variable.
+ (mml1991-epg-passphrase-callback, mml1991-epg-find-usable-key)
+ (mml1991-epg-find-usable-secret-key): Remove functions.
+ (mml1991-epg-sign, mml1991-epg-encrypt): Refactor.
+
+ * lisp/gnus/mml2015.el (mml2015-cache-passphrase)
+ (mml2015-passphrase-cache-expiry): Obsolete.
+ (mml2015-epg-secret-key-id-list): Remove variable.
+ (mml2015-epg-passphrase-callback, mml2015-epg-check-user-id)
+ (mml2015-epg-check-sub-key, mml2015-epg-find-usable-key)
+ (mml2015-epg-find-usable-secret-key): Remove functions.
+ (mml2015-epg-decrypt, mml2015-epg-clear-decrypt, mml2015-epg-sign)
+ (mml2015-epg-encrypt): Refactor.
+
+2016-01-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge from gnulib
+
+ This mostly just updates copyright dates of gnulib files.
+ It also updates to the latest version of texinfo.tex.
+
+2016-01-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ Move variables to inner loop, preparing for Mac port merge
+
+ * src/keyboard.c (command_loop_1): Move variables `cmd',
+ `keybuf', and `i' to inner loop.
+
2016-01-19 Paul Eggert <eggert@cs.ucla.edu>
Minor improvements to (random t) documentation
@@ -8054,7 +10431,7 @@
* test/etags/ETAGS.good_5:
* test/etags/ETAGS.good_6: Adjust accordingly.
-2016-01-19 Dmitry Gutov <dgutov@yandex.ru>
+2016-01-18 Dmitry Gutov <dgutov@yandex.ru>
Propertize backtick in 'def `(abc)' as symbol constituent
@@ -8149,7 +10526,7 @@
(desktop-create-buffer): Set desktop-io-file-version to the input file's
version.
-2016-01-18 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-17 Paul Eggert <eggert@cs.ucla.edu>
Initialize GnuTLS before calling gnutls_rnd
@@ -8162,12 +10539,16 @@
(init_random): Initialize gnutls globals before trying to
use gnutls_rnd.
-2016-01-18 Andreas Schwab <schwab@linux-m68k.org>
+2016-01-17 Andreas Schwab <schwab@linux-m68k.org>
Don't use GnuTLS before it is initialized
* src/sysdep.c (init_random): Don't use gnutls_rnd.
+2016-01-17 Bill Wohler <wohler@newt.com>
+
+ * mh-e.el (mh-version): Add +git to version.
+
2016-01-17 Paul Eggert <eggert@cs.ucla.edu>
Port cleanup attribute to OpenBSD
@@ -8336,10 +10717,6 @@
2016-01-15 Phillip Lord <phillip.lord@russet.org.uk>
- Merge branch 'emacs-25' of git.sv.gnu.org:/srv/git/emacs into emacs-25
-
-2016-01-15 Phillip Lord <phillip.lord@russet.org.uk>
-
Enable test selector from command line
* test/automated/Makefile.in: Change variable manipulation to avoid
@@ -8352,7 +10729,7 @@
* lisp/progmodes/cc-engine.el (c-back-over-member-initializers): Check
more robustly for ":" token when searching backwards for it.
- * lisp/progmodes/cc-langs.el (c-:$-multichar-token-regexp): New language
+ * lisp/progmodes/cc-langs (c-:$-multichar-token-regexp): New language
variable.
2016-01-15 Eli Zaretskii <eliz@gnu.org>
@@ -8452,11 +10829,11 @@
(check-doit): Use code of check-maybe.
(mostlyclean): Move *.log files away.
-2016-01-14 Mark Oteiza <mvoteiza@udel.edu>
+2016-01-13 Mark Oteiza <mvoteiza@udel.edu>
* lisp/thingatpt.el (thing-at-point-uri-schemes): Add "magnet:"
-2016-01-14 Dmitry Gutov <dgutov@yandex.ru>
+2016-01-13 Dmitry Gutov <dgutov@yandex.ru>
Un-obsolete tags-loop-continue
@@ -8527,7 +10904,7 @@
* lisp/gnus/nntp.el (nntp-request-newgroups): Format string
in Universal Time, since we’re telling the server “GMTâ€.
-2016-01-13 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-12 Paul Eggert <eggert@cs.ucla.edu>
Update publicsuffix.txt from upstream
@@ -8535,7 +10912,7 @@
https://publicsuffix.org/list/effective_tld_names.dat
dated 2016-01-12 11:52:01 UTC.
-2016-01-13 Glenn Morris <rgm@gnu.org>
+2016-01-12 Glenn Morris <rgm@gnu.org>
Fix some declarations.
@@ -8546,7 +10923,7 @@
* lisp/international/mule-util.el (internal-char-font):
Fix declarations.
-2016-01-13 Glenn Morris <rgm@gnu.org>
+2016-01-12 Glenn Morris <rgm@gnu.org>
Fix some custom types.
@@ -8559,7 +10936,7 @@
* lisp/url/url-tramp.el (url-tramp-protocols):
Fix custom types.
-2016-01-13 Glenn Morris <rgm@gnu.org>
+2016-01-12 Glenn Morris <rgm@gnu.org>
Add some missing version tags.
@@ -8594,12 +10971,12 @@
* lisp/term/xterm.el (xterm-max-cut-length):
Add missing version tags.
-2016-01-13 Glenn Morris <rgm@gnu.org>
+2016-01-12 Glenn Morris <rgm@gnu.org>
* test/automated/core-elisp-tests.el
(core-elisp-tests-1-defvar-in-let): Add a custom type.
-2016-01-13 Glenn Morris <rgm@gnu.org>
+2016-01-12 Glenn Morris <rgm@gnu.org>
* src/buffer.c (syms_of_buffer) <major-mode>: Doc fix.
@@ -8675,6 +11052,483 @@
* doc/emacs/msdos.texi (Windows Processes): Document
'w32-pipe-buffer-size'.
+2016-01-16 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/emacs-lisp/syntax.el (syntax-ppss-table): New var
+
+ (syntax-ppss):
+ * lisp/font-lock.el (font-lock-fontify-syntactically-region): Use it.
+
+2016-01-16 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ lisp/nxml: Use syntax-tables for comments
+
+ * lisp/nxml/nxml-mode.el (nxml-set-face): Prepend.
+ (nxml-mode): Set syntax-ppss-table.
+ Use sgml-syntax-propertize-function for syntax-propertize-function.
+ Let font-lock highlight strings and comments.
+ (nxml-degrade): Don't touch "nxml-inside" property any more.
+ (nxml-after-change, nxml-after-change1): Remove functions.
+ (comment): Don't set fontify rule any more.
+ (nxml-fontify-attribute): Don't highlight the value any more.
+ (nxml-namespace-attribute-value-delimiter, nxml-namespace-attribute-value)
+ (nxml-comment-delimiter, nxml-comment-content): Remove faces.
+
+ * lisp/nxml/nxml-rap.el (nxml-scan-end): Remove.
+ (nxml-get-inside, nxml-inside-start, nxml-inside-end): Use syntax-ppss.
+ (nxml-clear-inside, nxml-set-inside): Remove.
+ (nxml-scan-after-change): Remove function.
+ (nxml-scan-prolog, nxml-tokenize-forward): Simplify.
+ (nxml-ensure-scan-up-to-date): Use syntax-propertize.
+ (nxml-move-outside-backwards):
+ * lisp/nxml/nxml-outln.el (nxml-section-tag-backward): Adjust to new
+ nxml-inside-start behavior.
+
+ * lisp/nxml/nxml-util.el (nxml-debug-set-inside)
+ (nxml-debug-clear-inside): Remove macros.
+
+ * lisp/nxml/xmltok.el (xmltok-forward-special): Remove function.
+ (xmltok-scan-after-comment-open): Simplify.
+
+2016-01-16 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * elisp-mode.el (elisp--font-lock-flush-elisp-buffers): Fix comment
+
+2016-01-16 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/nxml: Use standard completion; it also works for company-mode
+
+ * lisp/nxml/nxml-mode.el (nxml-complete): Obsolete.
+ (nxml-completion-at-point-function): Remove.
+ (nxml-mode): Don't set completion-at-point-functions.
+ * lisp/nxml/rng-nxml.el (rng-nxml-mode-init): Set it here instead.
+ (rng-completion-at-point): Rename from rng-complete and mark it
+ non-interactive. It is now to be used as completion-at-point-function.
+ (rng-complete-tag, rng-complete-end-tag, rng-complete-attribute-name)
+ (rng-complete-attribute-value): Don't perform completion, but return
+ completion data instead.
+ (rng-complete-qname-function, rng-generate-qname-list): Add a few
+ arguments, previously passed via dynamic coping.
+ (rng-strings-to-completion-table): Rename from
+ rng-strings-to-completion-alist. Don't return an alist. Don't both
+ sorting and uniquifying.
+
+ * lisp/nxml/rng-util.el (rng-complete-before-point): Delete function.
+ (rng-completion-exact-p, rng-quote-string): Delete functions.
+
+ * lisp/nxml/rng-valid.el (rng-recover-start-tag-open)
+ (rng-missing-attributes-message, rng-missing-element-message)
+ (rng-mark-missing-end-tags): Use explicit ".." in formats rather than
+ calling rng-quote-string everywhere.
+
+2016-01-16 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ Use sgml-electric-tag-pair-mode also in nxml-mode
+
+ * lisp/nxml/rng-nxml.el: Require sgml-mode.
+ (rng-nxml-easy-menu): Add entry for sgml-electric-tag-pair-mode.
+ (rng-complete-qname-function): Use complete-with-action.
+
+ * lisp/textmodes/sgml-mode.el (sgml-electric-tag-pair-before-change-function):
+ Let-bind forward-sexp-function, since nxml-mode binds it to
+ something incompatible.
+
+ * lisp/nxml/nxml-mode.el: Use setq-local and defvar-local.
+
+2016-01-15 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * xmltok.el: Mark the "sole --" rather than the comment opener
+
+ * lisp/nxml/xmltok.el (xmltok-scan-after-comment-open): Put the error
+ marker on the "sole --" rather than on the comment opener.
+
+2016-01-15 Sam Steingold <sds@gnu.org>
+
+ replace `tramp-compat-split-string' (removed) with `split-string'
+
+ (python-shell-tramp-refresh-process-environment)
+ (python-shell-calculate-pythonpath): use `split-string'
+ instead of defunct `tramp-compat-split-string'
+
+2016-01-15 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ Update nXML to use Emacs's Unicode support, and lexical-binding
+
+ * etc/nxml/*.el: Remove obsolete char-name files.
+ * lisp/nxml/xsd-regexp.el (xsdre-range-list-difference): Remove unused
+ var `next'.
+ * lisp/nxml/rng-nxml.el (rng-set-state-after): Don't assume point-min==1.
+ * lisp/nxml/rng-match.el (rng-update-match-state): Simplify.
+ * lisp/nxml/nxml-outln.el (nxml-outline-state-transform-exceptions)
+ (nxml-target-section-pos, nxml-depth-in-target-section)
+ (nxml-outline-state-transform-alist)
+ (nxml-outline-display-section-tag-function): Move decl before first use.
+ * lisp/nxml/nxml-mode.el (nxml-char-name-ignore-case)
+ (nxml-char-name-alist, nxml-char-name-table)
+ (nxml-autoload-char-name-set-list, nxml-named-char-history): Remove vars.
+ (nxml-enable-char-name-set, nxml-disable-char-name-set)
+ (nxml-char-name-set-enabled-p, nxml-autoload-char-name-set)
+ (nxml-define-char-name-set, nxml-get-char-name): Remove functions.
+ (nxml-insert-named-char): Use read-char-by-name instead.
+ (nxml-char-ref-display-extra): Use get-char-code-property.
+ * lisp/nxml/nxml-maint.el (nxml-create-unicode-char-name-sets):
+ Remove function.
+ * lisp/nxml/nxml-glyph.el, lisp/nxml/nxml-uchnm.el: Remove files.
+
+2016-01-15 Michael Albinus <michael.albinus@gmx.de>
+
+ Add "sg" method to Tramp
+
+ * doc/misc/tramp.texi (Inline methods): Add "sg" method.
+ (Customizing Completion): Add function `tramp-parse-etc-group'.
+
+ * lisp/net/tramp-sh.el (tramp-methods) <sg>: Add. (Bug#22329)
+ (tramp-completion-function-alist-sg): New defconst.
+ (top): Completion function for "sg" is
+ `tramp-completion-function-alist-sg'.
+
+ * lisp/net/tramp.el (tramp-completion-function-alist): Adapt docstring.
+ (tramp-parse-etc-group, tramp-parse-etc-group-group): New defuns.
+
+2016-01-14 Michael Albinus <michael.albinus@gmx.de>
+
+ Remove XEmacs compatibility in Tramp
+
+ * doc/misc/tramp.texi: Replace flags by their hard coded name.
+ Remove unused flags and the enclosed alternative text for XEmacs.
+
+ * doc/misc/trampver.texi: Use "Tramp" CamelCase. Rename "emacs"
+ and "xemacs" flags to "unified" and "separate". Remove flags
+ "emacsgw", "emacsname", "emacsdir", "ftppackagename",
+ "emacsothername", "emacsotherdir" and "emacsotherfilename".
+ (trampver):
+ * lisp/net/trampver.el (tramp-version): Set to "2.3.0-pre".
+
+ * lisp/net/tramp.el (bkup-backup-directory-info)
+ (directory-sep-char, ls-lisp-use-insert-directory-program)
+ (outline-regexp, tramp-backup-directory-alist)
+ (tramp-default-method, tramp-shell-prompt-pattern, tramp-syntax)
+ (tramp-file-name-regexp-unified)
+ (tramp-file-name-regexp-separate)
+ (tramp-completion-file-name-regexp-unified)
+ (tramp-completion-file-name-regexp-separate, tramp-chunksize)
+ (tramp-get-method-parameter, tramp-find-method, tramp-find-user)
+ (tramp-debug-message, tramp-progress-reporter-update)
+ (with-tramp-progress-reporter)
+ (tramp-rfn-eshadow-setup-minibuffer)
+ (rfn-eshadow-setup-minibuffer-hook, tramp-unload-hook)
+ (tramp-rfn-eshadow-update-overlay)
+ (rfn-eshadow-update-overlay-hook, tramp-default-file-modes)
+ (tramp-file-name-for-operation)
+ (tramp-completion-file-name-handler)
+ (tramp-autoload-file-name-handler, tramp-completion-mode-p)
+ (tramp-handle-directory-files)
+ (tramp-handle-directory-files-and-attributes)
+ (tramp-handle-dired-uncache, tramp-handle-find-backup-file-name)
+ (tramp-handle-insert-file-contents, tramp-handle-load)
+ (tramp-handle-shell-command)
+ (tramp-handle-verify-visited-file-modtime)
+ (tramp-handle-file-notify-valid-p, tramp-accept-process-output)
+ (tramp-check-for-regexp, tramp-wait-for-regexp)
+ (tramp-send-string, tramp-mode-string-to-int)
+ (tramp-get-local-gid, tramp-check-cached-permissions)
+ (tramp-get-remote-tmpdir, tramp-make-tramp-temp-file)
+ (auto-save-file-name-transforms)
+ (tramp-handle-make-auto-save-file-name, tramp-read-passwd)
+ (tramp-clear-passwd, tramp-time-diff):
+ * lisp/net/tramp-adb.el (directory-listing-before-filename-regexp)
+ (directory-sep-char, tramp-adb-file-name-handler-alist)
+ (tramp-adb-parse-device-names)
+ (tramp-adb-handle-expand-file-name)
+ (tramp-adb-handle-file-truename, tramp-adb--gnu-switches-to-ash)
+ (tramp-adb-handle-file-local-copy)
+ (tramp-adb-handle-write-region, tramp-adb-handle-set-file-modes)
+ (tramp-adb-handle-rename-file, tramp-adb-handle-process-file)
+ (tramp-adb-handle-shell-command)
+ (tramp-adb-handle-start-file-process, tramp-adb-get-device)
+ (tramp-adb-maybe-open-connection):
+ * lisp/net/tramp-cache.el (tramp-persistency-file-name)
+ (tramp-cache-print):
+ * lisp/net/tramp-cmds.el (tramp-cleanup-all-connections)
+ (tramp-bug, tramp-reporter-dump-variable)
+ (tramp-load-report-modules, tramp-append-tramp-buffers):
+ * lisp/net/tramp-compat.el (tramp-compat-funcall)
+ (tramp-advice-file-expand-wildcards)
+ (tramp-compat-temporary-file-directory)
+ (tramp-compat-make-temp-file, tramp-compat-copy-file)
+ (tramp-compat-delete-directory, )
+ (tramp-compat-process-running-p):
+ * lisp/net/tramp-ftp.el (tramp-methods) <ftp>:
+ (tramp-default-method-alist, tramp-foreign-file-name-handler-alist):
+ * lisp/net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist)
+ (tramp-gvfs-do-copy-or-rename-file, tramp-gvfs-handle-copy-file)
+ (tramp-gvfs-handle-file-local-copy)
+ (tramp-gvfs-handle-file-name-all-completions)
+ (tramp-gvfs-handle-file-notify-add-watch)
+ (tramp-gvfs-monitor-file-process-filter)
+ (tramp-gvfs-handle-file-readable-p)
+ (tramp-gvfs-handle-rename-file, tramp-gvfs-handle-write-region)
+ (tramp-gvfs-file-name, tramp-gvfs-handler-askquestion)
+ (tramp-gvfs-maybe-open-connection)
+ (tramp-gvfs-parse-device-names):
+ * lisp/net/tramp-gw.el (tramp-gw-aux-proc-sentinel)
+ (tramp-gw-open-connection, tramp-gw-open-network-stream):
+ * lisp/net/tramp-sh.el (directory-sep-char)
+ (tramp-sh-file-name-handler-alist)
+ (tramp-sh-handle-file-truename)
+ (tramp-sh-handle-set-visited-file-modtime)
+ (tramp-sh-handle-verify-visited-file-modtime)
+ (tramp-sh-handle-set-file-modes, tramp-sh-handle-set-file-times)
+ (tramp-sh-handle-file-acl)
+ (tramp-sh-handle-file-name-all-completions)
+ (tramp-sh-handle-copy-file, tramp-sh-handle-rename-file)
+ (tramp-do-copy-or-rename-file-directly)
+ (tramp-do-copy-or-rename-file-out-of-band)
+ (dired-compress-file-suffixes, dired-remove-file)
+ (tramp-sh-handle-dired-compress-file)
+ (tramp-sh-handle-insert-directory)
+ (tramp-sh-handle-expand-file-name)
+ (tramp-sh-handle-start-file-process)
+ (tramp-sh-handle-process-file, tramp-sh-handle-file-local-copy)
+ (tramp-sh-handle-write-region, tramp-sh-handle-vc-registered)
+ (tramp-sh-handle-file-notify-add-watch)
+ (tramp-sh-gvfs-monitor-dir-process-filter)
+ (tramp-sh-inotifywait-process-filter, tramp-maybe-send-script)
+ (tramp-find-executable)
+ (tramp-open-connection-setup-interactive-shell)
+ (tramp-find-inline-encoding, tramp-compute-multi-hops)
+ (tramp-maybe-open-connection, tramp-convert-file-attributes)
+ (tramp-get-remote-path, tramp-get-remote-touch):
+ * lisp/net/tramp-smb.el (tramp-smb-file-name-handler-alist)
+ (tramp-smb-handle-copy-directory, tramp-smb-handle-copy-file)
+ (tramp-smb-handle-delete-directory)
+ (tramp-smb-handle-directory-files, tramp-smb-handle-file-acl)
+ (tramp-smb-handle-make-directory-internal)
+ (tramp-smb-handle-process-file, tramp-smb-handle-rename-file)
+ (tramp-smb-handle-set-file-acl, tramp-smb-handle-set-file-modes)
+ (tramp-smb-handle-write-region, tramp-smb-get-file-entries)
+ (tramp-smb-get-cifs-capabilities)
+ (tramp-smb-maybe-open-connection):
+ * lisp/net/trampver.el (tramp-repository-get-version):
+ Remove XEmacs compat code.
+
+ * lisp/net/tramp-cmds.el (mml-mode, mml-insert-empty-tag)
+ (reporter-dump-variable): Declare functions.
+
+ * lisp/net/tramp.el (tramp-bkup-backup-directory-info)
+ (tramp-advice-minibuffer-electric-separator)
+ (tramp-advice-minibuffer-electric-tilde)
+ (tramp-handle-unhandled-file-name-directory):
+ * lisp/net/tramp-compat.el (tramp-compat-with-temp-message)
+ (tramp-compat-font-lock-add-keywords)
+ (tramp-compat-load, tramp-compat-number-sequence)
+ (tramp-compat-split-string, tramp-compat-delete-dups):
+ * lisp/net/tramp-sh.el (tramp-sh-handle-insert-file-contents-literally):
+ Remove.
+
+ * lisp/net/tramp-sh.el (tramp-methods) <psftp>: This does not work
+ recursively.
+
+2016-01-14 K. Handa <handa@gnu.org>
+
+ fix previous change of src/ftfont.c (ftfont_shape_by_flt)
+
+ * src/ftfont.c (ftfont_shape_by_flt): Fix previous change. Access the
+ second glyph only when there are enough glyphs.
+
+2016-01-13 Glenn Morris <rgm@gnu.org>
+
+ * src/buffer.c (Fset_buffer_major_mode): Allow default major-mode,
+
+ or its hook, to move point. (Bug#22348)
+
+2016-01-12 Michael Albinus <michael.albinus@gmx.de>
+
+ Merge missing commit from emacs-25 branch
+
+ * test/Makefile.in (SELECTOR_DEFAULT, SELECTOR_EXPENSIVE, SELECTOR):
+ New variables.
+ (check-expensive, check-doit): New targets.
+
+ * Makefile.in (check-expensive): New target.
+
+ * test/lisp/autorevert-tests.el
+ (auto-revert-test01-auto-revert-several-files):
+ * test/lisp/filenotify-tests.el (file-notify--deftest-remote)
+ (file-notify-test06-many-events):
+ * test/lisp/net/tramp-tests.el (tramp-test26-process-file)
+ (tramp-test27-start-file-process, tramp-test28-shell-command)
+ (tramp-test29-vc-registered)
+ (tramp-test31-special-characters-with-stat)
+ (tramp-test31-special-characters-with-perl)
+ (tramp-test31-special-characters-with-ls)
+ (tramp-test32-utf8-with-stat, tramp-test32-utf8-with-perl)
+ (tramp-test32-utf8-with-ls, tramp-test33-asynchronous-requests)
+ (tramp-test35-unload): Tag the tests as :expensive-test.
+
+2016-01-12 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ 1f6898d test/automated/vc-hg.el: Support out-of-tree build
+ 3adb56e Minor change in tramp-tests.el
+ 2b535ba ; * etc/NEWS: Update the js.el entry.
+ 76b518c * etc/HELLO: Add Armenian and Mongolian greetings.
+ b51f1ef Java Mode: Fontify identifiers in the presence of annotations.
+ 36b9539 Avoid an infloop when we run out of memory
+ 2006752 Avoid unnecessary failures of auto-saving after fatal error
+ eef6784 Simplify HAVE_MODULES use in mark_maybe_pointer
+ 552694a Revert attempt to use 'noexcept' in typedef
+ 6ad0d39 Update documentation of 'indirect-function'
+ c6a5314 ; * etc/NEWS: Move entry of 'inhibit-point-motion-hooks'.
+ 303141a Update documentation for obsoleting 'syntax-begin-function'
+ 4e6f61c ; * etc/NEWS: Mark documented and not-to-be-documented entries.
+ e667bbb Document new features if Eshell
+ 9c4e4e0 ; * etc/NEWS: Update EUDC entries.
+ 1089dc9 Handle too long commands in Tramp
+ 684eb58 * .gitattributes: *.cur and *.pif are binary files too.
+ d2c7fda * src/alloc.c (mark_maybe_pointer): HAVE_MODULES may be undefined
+ bd3f53d * sh-script.el (sh-smie-sh-rules): Improve indentation inside $(...)
+ 09b2b8a * src/alloc.c (mark_maybe_pointer): Also check wide-int's emacs_value
+ cca0f93 ; Account for spaces before the filename
+ c71e1e8 Use short date for 'hg annotate', and output the author
+ f50027b Spelling fix
+ c7dff67 ; * etc/NEWS: Fix the Xref entries that got separated.
+ cc140bc Document user-level functions in project.el
+ f8208b6 Document the user-level features of the Xref package
+ b131fb8 * loading.texi: Add `define-type' entry for load-history
+ db3c2a8 Improve doc strings and prompts in xref.el
+ f6117ef Allow the use of `font-lock-extend-region-multiline' in CC Mode.
+ 90fd798 Fix coding system for Tramp on OS X.
+ e985a0e ; * etc/NEWS: Mark the 'check-expensive' entry not to be documented.
+ 9dfcbf0 Update 'load-history' docs
+ 207e191 Fix (error ...) error
+ 457738f Correctly analyze brace arguments in templated C++ function declarations.
+ d57724a * lisp/cedet/mode-local.el (describe-function-orig-buffer): Declare.
+ 2a9532d * lisp/ffap.el (ffap-latex-mode): Avoid free variable.
+ 1a6b084 * lisp/play/dunnet.el (dun-fix-screen): Avoid `end-of-buffer`.
+ 8be046f Respect fontification region calculated by major mode. Fixes bug #22316.
+ 4b37cba Improve documentation of Delete Selection mode
+ a034dd3 Fix two project-find-file issues
+ 30abf29 Clarify doc string of 'dired-current-directory'
+ e990bb2 Use the face of preceding text for displaying the ellipsis
+ 5810ac3 Suppress Chinese file name test for OSX in tramp-tests.el
+ eeb710a ; * lisp/startup.el: Sentences end with two spaces.
+ 428b3de * admin/admin.el (set-version): Also handle the NEWS file.
+ 648de81 ; Add NEWS entry for project.el
+ 671862f apropos-library: Skip obvious duplicates; don't error on generics
+ 51668a5 ; Grammar fix
+ ed41d11 Add project-find-file and project-or-external-find-file
+ 056da45 ; Improve commentary in 'setup_for_ellipsis'
+ 269d008 ; Improve docstring for `inhibit-startup-echo-area-message'
+
+2016-01-12 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ ce4a052 Add defvar-local to lisp-imenu-generic-expression
+ a0121bc Revert commit b1e3d14845517bfa9fa5d6d3840f3ab3160306fd
+ 76fe2d5 * lisp/emacs-lisp/autoload.el (autoload-find-destination): Doc fix.
+ 1ae088f * lisp/emacs-lisp/autoload.el (autoload-find-destination):
+ b6b47af Properly encode/decode base64Binary data in SOAP
+ c632466 Obey coding-system-for-write when writing stdout/stderr in batch
+ 2f32cb5 * doc/misc/efaq.texi (Packages that do not come with Emacs):
+ Update the URI of MELPA and marmalade-repo.
+ Reported by CHENG Goa <chenggao@royau.me> in
+ https://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00390.html.
+ d2937aa * lisp/progmodes/opascal.el (opascal-mode-syntax-table):
+ 5330c25 * lisp/progmodes/xscheme.el (xscheme-prompt-for-expression-exit):
+ 7380990 Remove function wrongly on AWK Mode value of context
+ fontification hook.
+ d400753 * src/buffer.c: Stick with ASCII in doc string.
+ 221240c Reword transient-mark-mode doc string
+ 977d3ea Update doc string of 'selective-display'
+ 229c3fa Make C++ buffers writeable when writing their initial text
+ properties.
+ f5c762c Additional changes for "make check-expensive"
+ 1729cf3 ; * admin/MAINTAINERS: Remove myself.
+ 33219d3 Apply text properties for <, > in new after-change function
+ (C++ Java Modes).
+
+2016-01-12 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ 9fb185a shr-tag-video bug fix
+ 6300655 Minor fixes in tramp-tests.el
+ 50575b1 Ensure redisplay when 'truncate-lines' is set
+ 0d9e80d Fix a doc string of 'transient-mark-mode'
+ 0000ae5 MS-Windows followup to latest gnulib update
+ 4bc5e02 Spelling fix
+ f1093f7 Do secure signed Bcc handling
+
+2016-01-12 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ 861022f * doc/misc/texinfo.tex: Revert unwanted copyright change.
+ 46e47a5 ; * etc/refcards/ru-refcard.tex (cyear): Update via M-x set-copyright.
+ 71ea138 * lisp/align.el (align): Simplify a lambda
+ 5618a50 * lisp/align.el (align): Fix arg order in call to `align-region'
+ 1f680db Fix compilation next-error in buffers with selective-display
+ d20a948 * nsm.el (nsm-check-protocol): Fix typo in the message.
+ 1da116f Add SHA1 warnings for high network security settings
+ e48bacd ; * etc/NEWS: Typo fix.
+
+2016-01-12 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ 43662a2 ; Clarify that xref is still experimental
+ 0a6e6ca ; * admin/release-process: Remove some obsolete records.
+ c2e9e3d * lisp/progmodes/fortran.el (fortran-make-syntax-propertize-function):
+ 8637f3d (semantic-symref-derive-find-filepatterns): Return a list
+ 0a7ad07 ; Re-arrange xref-related entries in NEWS.
+ fe903ef Fix xref-find-references on MS-Windows
+ 55a28d8 ; Fixed visual bell artifact problem on NextStep.
+ d064034 Document new features of tildify-mode
+ 964bea7 Document new features of Whitespace mode
+ cd68f47 Improve documentation of new Hide-IfDef features
+ 723b8bf Fix regression in font-locking cl-assert and cl-check-type
+
+2016-01-12 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ ef33bc7 Spelling and grammar fixes
+ 9c3dbab Fix copyright years by hand
+ 0e96320 Update copyright year to 2016
+
+2016-01-12 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ 9ee6ecb lisp/emacs-lisp/chart.el (chart-new-buffer): Move to silence byte compiler.
+ 526d80c Port chart.el methods to cl-generic.
+ 410bb69 Add nt/INSTALL.W64 build instructions
+ 8f5b524 Add new input method 'programmer-dvorak'
+ 6d11f6e Allow to invoke original M-TAB binding in 'flyspell-prog-mode'
+ bb83bb1 Fix EWW rendering of long RTL lines
+ b1a8509 fix bug#21054
+ ce5ad12 Clean up cairo printing code
+
+2016-01-12 John Wiegley <johnw@newartisans.com>
+
+ Merge from origin/emacs-25
+
+ 6ee327d Add handle_user_signal_hook
+ 47580e0 Avoid writing to purespace
+ 0588be7 Remove unused variable
+ 89e7483 * configure.ac: Find libxml2 headers in Xcode SDK dir on Darwin.
+ 3b95e9c Use posix_openpt instead of openpty on Darwin
+ 86312ff Document support for ':documentation' in Lisp mode
+ c930e75b Document new features of TeX mode
+ 7c83d84 Clarify docs of hscroll in RTL text
+ 4c8f8db Fix rendering of HTML pages that use character composition
+ a8d37ca Avoid some compiler warnings in w32.c
+ ce106f3de Undo ill-advised change
+ be0bba4 Unbreak completion in python-mode buffers
+
2016-01-11 Dmitry Gutov <dgutov@yandex.ru>
test/automated/vc-hg.el: Support out-of-tree build
@@ -8805,20 +11659,20 @@
2016-01-10 Stefan Monnier <monnier@iro.umontreal.ca>
- * lisp/progmodes/sh-script.el (sh-smie-sh-rules): Improve indentation inside $(...)
+ * sh-script.el (sh-smie-sh-rules): Improve indentation inside $(...)
* lisp/progmodes/sh-script.el (sh-smie-sh-rules): Improve indentation
within $(...).
* test/indent/shell.sh: Add corresponding test.
-2016-01-10 Stefan Monnier <monnier@iro.umontreal.ca>
+2016-01-09 Stefan Monnier <monnier@iro.umontreal.ca>
* src/alloc.c (mark_maybe_pointer): Also check wide-int's emacs_value
(mark_memory): Simplify loop. Don't assume a pointer-sized word can be
cast to Lisp_Object.
-2016-01-10 Dmitry Gutov <dgutov@yandex.ru>
+2016-01-09 Dmitry Gutov <dgutov@yandex.ru>
Use short date for 'hg annotate', and output the author
@@ -8832,7 +11686,7 @@
* test/automated/vc-hg.el: New file.
-2016-01-10 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-09 Paul Eggert <eggert@cs.ucla.edu>
Spelling fix
@@ -8866,7 +11720,7 @@
2016-01-09 Stefan Monnier <monnier@iro.umontreal.ca>
- * doc/lispref/loading.texi: Add `define-type' entry for load-history
+ * loading.texi: Add `define-type' entry for load-history
* doc/lispref/loading.texi (Where Defined): Remove incorrect
cl-defmethod description, and add missing define-type entry.
@@ -8909,7 +11763,7 @@
forms in 'load-history' by adding the forms created for the
'cl-generic' generics. (Bug#21422)
-2016-01-09 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-08 Paul Eggert <eggert@cs.ucla.edu>
Fix (error ...) error
@@ -8996,11 +11850,11 @@
* test/automated/tramp-tests.el (tramp--test-utf8):
Remove instrumentation. Suppress Chinese file name test for OSX.
-2016-01-08 Glenn Morris <rgm@gnu.org>
+2016-01-07 Glenn Morris <rgm@gnu.org>
* admin/admin.el (set-version): Also handle the NEWS file.
-2016-01-08 Dmitry Gutov <dgutov@yandex.ru>
+2016-01-07 Dmitry Gutov <dgutov@yandex.ru>
apropos-library: Skip obvious duplicates; don't error on generics
@@ -9024,25 +11878,25 @@
(xref--find-ignores-arguments): Extract from
`xref--rgrep-command'.
-2016-01-07 Leo Liu <sdl.web@gmail.com>
+2016-01-06 Leo Liu <sdl.web@gmail.com>
Add defvar-local to lisp-imenu-generic-expression
* lisp/emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression): Add
defvar-local.
-2016-01-07 Leo Liu <sdl.web@gmail.com>
+2016-01-06 Leo Liu <sdl.web@gmail.com>
Revert commit b1e3d14845517bfa9fa5d6d3840f3ab3160306fd
* lisp/emacs-lisp/easy-mmode.el (define-minor-mode):
Don't declare (indent 1).
-2016-01-07 Glenn Morris <rgm@gnu.org>
+2016-01-06 Glenn Morris <rgm@gnu.org>
* lisp/emacs-lisp/autoload.el (autoload-find-destination): Doc fix.
-2016-01-07 Glenn Morris <rgm@gnu.org>
+2016-01-06 Glenn Morris <rgm@gnu.org>
* lisp/emacs-lisp/autoload.el (autoload-find-destination):
@@ -9081,13 +11935,13 @@
<chenggao@royau.me> in
https://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00390.html.
-2016-01-06 Maksim Golubev <maksim.golubev72@gmail.com> (tiny change)
+2016-01-05 Maksim Golubev <maksim.golubev72@gmail.com> (tiny change)
* lisp/progmodes/opascal.el (opascal-mode-syntax-table):
Fix backslash. (Bug#22224)
-2016-01-06 Federico Beffa <beffa@ieee.org> (tiny change)
+2016-01-05 Federico Beffa <beffa@ieee.org> (tiny change)
* lisp/progmodes/xscheme.el (xscheme-prompt-for-expression-exit):
@@ -9239,14 +12093,14 @@
Spelling fix
-2016-01-04 Jens Lechtenboerger <jens.lechtenboerger@fsfe.org>
+2016-01-03 Jens Lechtenboerger <jens.lechtenboerger@fsfe.org>
Do secure signed Bcc handling
* lisp/gnus/message.el (message-send): Do secure signed Bcc handling
(bug#18718).
-2016-01-04 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-03 Paul Eggert <eggert@cs.ucla.edu>
Avoid stdio in SIGINT handler
@@ -9258,7 +12112,7 @@
(handle_interrupt): Use them instead of printf and getchar,
and avoid fflush when handling signals.
-2016-01-04 Paul Eggert <eggert@cs.ucla.edu>
+2016-01-03 Paul Eggert <eggert@cs.ucla.edu>
* doc/misc/texinfo.tex: Revert unwanted copyright change.
@@ -9280,17 +12134,17 @@
2016-01-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
- * lisp/net/nsm.el (nsm-check-protocol): Fix typo in the message.
+ * nsm.el (nsm-check-protocol): Fix typo in the message.
2016-01-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
Add SHA1 warnings for high network security settings
- * lisp/net/nsm.el (nsm-check-protocol): When using high security, warn
+ * nsm.el (nsm-check-protocol): When using high security, warn
about SHA1 certificates, which are now believed to be open to
spoofing.
-2016-01-03 Jens Lechtenboerger <jens.lechtenboerger@fsfe.org>
+2016-01-02 Jens Lechtenboerger <jens.lechtenboerger@fsfe.org>
Refactor mml-smime.el, mml1991.el, mml2015.el
@@ -9507,7 +12361,7 @@
fix bug#21054
- * lisp/ses.el (ses-check-curcell): Call `ses-set-curcell' unconditionally
+ * ses.el (ses-check-curcell): Call `ses-set-curcell' unconditionally
2015-12-31 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
@@ -9521,14 +12375,7 @@
* src/xterm.c (x_cr_export_frames): Use redisplay_preserve_echo_area
instead of Fdisplay. Temporarily unblock_input around QUIT.
-2015-12-31 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
-
- Move variables to inner loop, preparing for Mac port merge
-
- * src/keyboard.c (command_loop_1): Move variables `cmd',
- `keybuf', and `i' to inner loop.
-
-2015-12-31 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2015-12-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Add handle_user_signal_hook
@@ -9536,7 +12383,7 @@
* src/keyboard.c (handle_user_signal_hook): New variable.
(handle_user_signal): Call it.
-2015-12-31 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2015-12-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Avoid writing to purespace
@@ -9547,18 +12394,18 @@
* src/lisp.h (STRING_SET_UNIBYTE, STRING_SET_MULTIBYTE): Don't
write to empty string size_byte.
-2015-12-31 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2015-12-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Remove unused variable
* lisp/international/mule-cmds.el: Remove unused variable
`mac-system-coding-system'.
-2015-12-31 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2015-12-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* configure.ac: Find libxml2 headers in Xcode SDK dir on Darwin.
-2015-12-31 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2015-12-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Use posix_openpt instead of openpty on Darwin
@@ -9607,7 +12454,7 @@
(check_windows_init_file): Avoid compiler warnings about
differences in pointer signedness.
-2015-12-30 Dmitry Gutov <dgutov@yandex.ru>
+2015-12-29 Dmitry Gutov <dgutov@yandex.ru>
Undo ill-advised change
@@ -9615,13 +12462,245 @@
ill-advised change. The hits come in the order that `find'
produces them in, which isn't alphabetical.
-2015-12-30 Dmitry Gutov <dgutov@yandex.ru>
+2015-12-29 Dmitry Gutov <dgutov@yandex.ru>
Unbreak completion in python-mode buffers
* lisp/progmodes/python.el (python-shell-completion-at-point):
Unbreak in python-mode buffers.
+2016-01-09 Andrew Hyatt <ahyatt@gmail.com>
+
+ Adding example replies to bug-triage.
+
+ * admin/notes/bug-triage: Added example replies. Also, as requested,
+ making the process notes into more of a checklist.
+
+2016-01-08 Andrew Hyatt <ahyatt@gmail.com>
+
+ Rename the notes/admin/triage file to bug-triage.
+
+ * CONTRIBUTE: Change reference to the triage file name.
+ * admin/notes/triage: Rename file to admin/notes/bug-triage.
+
+2016-01-07 Glenn Morris <rgm@gnu.org>
+
+ Allow creation of loaddefs files without timestamps.
+
+ * lisp/emacs-lisp/autoload.el (autoload-timestamps): New variable.
+ (autoload-generate-file-autoloads, update-directory-autoloads):
+ If autoload-timestamps is nil, write "t" instead of file timestamp.
+ (autoload-find-destination, update-directory-autoloads):
+ If timestamp is "t", use the modtime of the output file instead.
+
+2016-01-06 Glenn Morris <rgm@gnu.org>
+
+ Doc tweaks.
+
+ * lisp/calendar/cal-hebrew.el (diary-hebrew-list-entries):
+ * lisp/calendar/cal-iso.el (calendar-iso-to-absolute)
+ (calendar-iso-from-absolute):
+ * lisp/calendar/cal-tex.el (cal-tex-comment):
+ * lisp/calendar/solar.el (calendar-time-display-form): Doc tweaks.
+
+2016-01-06 Glenn Morris <rgm@gnu.org>
+
+ Build tweaks related to tags files.
+
+ * lib-src/Makefile.in (tagsfiles): New variable.
+ (TAGS): Also depend on the source files. Use our own etags program.
+ * lisp/Makefile.in (ETAGS): Add EXEEXT.
+ (lisptagsfiles1, lisptagsfiles2, lisptagsfiles3, lisptagsfiles4):
+ Remove.
+ (tagsfiles): New, replacing lisptagsfiles1 etc.
+ Remove irrelevant source files here rather than in the TAGS rule.
+ (${ETAGS}): New rule.
+ (TAGS): Also depend on the etags executable.
+ * lwlib/Makefile.in (EXEEXT): New, set by configure.
+ (ETAGS): Add EXEEXT.
+ (${ETAGS}): New rule.
+ (ctagsfiles): Use "wildcard".
+ (TAGS): Also depend on the etags executable.
+ * nt/Makefile.in (ETAGS, tagsfiles): New variables.
+ (${ETAGS}): New rule.
+ (TAGS): Fix dependencies.
+ * oldXMenu/Makefile.in (EXEEXT): New, set by configure.
+ (ETAGS): New variable, replacing $TAGS. Use our own etags program.
+ Remove "-t" argument.
+ (${ETAGS}): New rule.
+ (tagsfiles): New variable.
+ (TAGS): New rule, with proper dependencies.
+ * src/Makefile.in (ETAGS): Add EXEEXT. Add a build rule.
+ (ctagsfiles1, ctagsfiles2): Use "wildcard".
+ (ctagsfiles3): Remove.
+ (TAGS): Depend on etags.
+ (../lisp/TAGS, $(lwlibdir)/TAGS): Let the rules in the relevant
+ directories decide if updates are needed.
+
+2016-01-06 Glenn Morris <rgm@gnu.org>
+
+ * lisp/Makefile.in (CAL_SRC): Skip calendar.el.
+
+2016-01-06 Glenn Morris <rgm@gnu.org>
+
+ * test/lisp/emacs-lisp/package-tests.el
+
+ (package-test-macro-compilation): Fixup branch merge.
+
+2016-01-05 Eli Zaretskii <eliz@gnu.org>
+
+ Fix fallout from merging emacs-25 branch in test/
+
+ * .gitignore: Update for the new place of biditest.txt.
+ * test/automated/: Directory removed. All files moved to their
+ proper places.
+ * test/etags/: Directory removed. All files moved to their proper
+ places.
+ * test/automated/url-parse-tests.el: File removed; it was an exact
+ copy of the same file in test/lisp/url/.
+ * test/automated/url-expand-tests.el: Moved to test/lisp/url/.
+
+2016-01-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Spelling fixes.
+
+2016-01-04 Daniel Colascione <dancol@dancol.org>
+
+ Let users disable unsafe signal handling code
+
+ * src/keyboard.c (syms_of_keyboard): New user variables
+ `attempt-stack-overflow-recovery' and
+ `attempt-orderly-shutdown-on-fatal-signal'.
+ * src/sysdep.c (stack_overflow): Check
+ `attempt-stack-overflow-recovery'.
+ * src/emacs.c (terminate_due_to_signal): Check
+ `attempt-orderly-shutdown-on-fatal-signal'.
+
+2016-01-03 Michael Albinus <michael.albinus@gmx.de>
+
+ * configure.ac: Add error message for gfile on Nextstep.
+
+2016-01-03 John Wiegley <johnw@newartisans.com>
+
+ Merge branch 'emacs-25-merge'
+
+2016-01-02 Vincent Belaïche <vincentb1@users.sourceforge.net>
+
+ Align textually on fix done for emacs-25 branch for bug#21054
+
+ * lisp/ses.el (ses-check-curcell): Suppress ``temporary fix'' comment,
+ and useless `(if t ...)' in order to align textually on fix done for
+ emacs-25 branch for bug#21054.
+
+2016-01-02 K. Handa <handa@gnu.org>
+
+ support rendering of wider range of combinging characters by ftfont backend
+
+ * lisp/language/hebrew.el (hebrew-shape-gstring): If the font backend
+ supports rendering of combining characters, call
+ font-shape-gstring.
+
+ * src/font.c (Ffont_get): Handle `combining-capability' property.
+ (syms_of_font): New symbol ":combining-capability'.
+
+ * src/font.h (struct font_driver): New member combining_capability.
+
+ * src/ftfont.c: Include "category.h".
+ (ftfont_driver): Initialize combining_capability to
+ ftfont_combining_capability.
+ (ftfont_shape_by_flt): If OTF is null, try to find a suitable
+ FLT in advance.
+ (ftfont_combining_capability): New function.
+
+2016-01-01 Andrew Hyatt <ahyatt@gmail.com>
+
+ Add notes on bug triage procedure
+
+ * CONTRIBUTE: In section on the issue tracker, point to new triage file.
+ * admin/notes/triage: New file explaining triage procedure.
+
+2015-12-30 Vincent Belaïche <vincentb1@users.sourceforge.net>
+
+ Correct ses-rename-cell cursor-intangible text prop updating.
+
+ There were two problems:
+
+ - First ses-rename-cell has to work when called non interactively
+ (with non-nil CELL argument), so in this case the start pos of
+ put-text-property cannot be plainly (point), you need a
+ ses-goto-print call before
+
+ - Second, the range itself was computed erronously, only the first
+ char was affected instead of the full cell width. This was not
+ noticeable prior to changes (Deprecate `intangible' and
+ `point-entered' properties) made by Stefan on 2015-04-13T19:51:15Z
+
+ * lisp/ses.el (ses-rename-cell): Correct computation of position range
+ to which the 'cursor-intangible text property has to be set to cell
+ new name.
+
+2015-12-30 Vincent Belaïche <vincentb1@users.sourceforge.net>
+
+ Don't fake empty cells value by "" when printing with a lambda.
+
+ When using a lambda expression printer function the user should be
+ free to format differently a really empty cell, ie. containing nil,
+ from a cell containing an empty string "".
+
+ * ses.el (ses-call-printer): Replace `(or value "")' by just `value'
+ in the case of a lambda expression printer function.
+
+ * ses.texi (Printer functions): Add example and description about
+ lambda expression printer function handling all the possible values,
+ including unexpected ones.
+
+2015-12-30 Vincent Belaïche <vincentb1@users.sourceforge.net>
+
+ Quick temporary hack to fix curcell refreshing.
+
+ The problem was caused by change: 2015-04-13 Deprecate `intangible'
+ and `point-entered' properties. The problem is that this change has
+ removed the (setq ses--curcell t) setting in the ses-command-hook
+ function.
+
+ * ses.el (ses-check-curcell): replace `(eq ses--curcell t)' by just `t' as
+ a condition to call function `ses-set-curcell'. Comment this as a quick
+ temporary hack to make it work, as I don't know yet whether a definite
+ correction would be to make the ses-set-curcell at every ses-check-curcell,
+ or to revert to the previous approach, ie marking ses--curcell as out-of-date
+ at every potentially cursor motion command.
+
+2015-12-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ Restrictive URL checking tweaks
+
+ * lisp/net/eww.el (eww): Check whether the domain is
+ restrictive instead of the string
+ (http://македонија.icom.museum is restrictive even if each
+ part is from a different script).
+
+2015-12-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ New function `puny-highly-restrictive-domain-p'
+
+ * lisp/net/puny.el (puny-highly-restrictive-string-p): Rename.
+ (puny-highly-restrictive-domain-p): New function.
+
+2015-12-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ eww build fix (require puny)
+
+2015-12-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ Transform non-restrictive domains to punycode for display
+
+ * lisp/net/eww.el (eww): Check whether the domain is Highly
+ Restrictive in the Unicode IDNA sense.
+
+2015-12-30 John Wiegley <johnw@newartisans.com>
+
+ Merge emacs-25 into master (using imerge)
+
2015-12-29 Eli Zaretskii <eliz@gnu.org>
Fix typos in CC Mode manual
@@ -9646,6 +12725,13 @@
directionality is opposite to the base paragraph direction,
because columns are counted in the logical order. (Bug#22250)
+2015-12-29 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Further Unicode restrictive fixups
+
+ * puny.el (puny-highly-restrictive-p): Include the extra
+ identifier characters from table 3.
+
2015-12-29 Martin Rudalics <rudalics@gmx.at>
* src/xfns.c (x_create_tip_frame): Process alpha parameter.
@@ -9693,11 +12779,17 @@
* tls.el (tls-program): Default to using secure TLS
connections (bug#19284).
-2015-12-29 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-29 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Add a new function to say whether a string is restrictive
+
+ * puny.el (puny-highly-restrictive-p): New function.
+
+2015-12-28 Paul Eggert <eggert@cs.ucla.edu>
Spelling fix
-2015-12-29 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-28 Paul Eggert <eggert@cs.ucla.edu>
Port report-emacs-bug to deterministic builds
@@ -9706,7 +12798,7 @@
emacs-build-system will be nil. See:
http://lists.gnu.org/archive/html/emacs-devel/2015-12/msg01369.html
-2015-12-29 Jose A. Ortega Ruiz <jao@gnu.org> (tiny change)
+2015-12-28 Jose A. Ortega Ruiz <jao@gnu.org> (tiny change)
Fix URL auth error message
@@ -9715,13 +12807,36 @@
2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
- shr link traversal fixup
+ Mention the new puny.el library
- * shr.el (shr-next-link): Don't bug out on adjacent links.
+2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
- Backport:
+ IDNA-related fixes for the URL library
+
+ * lisp/url/url-http.el (url-http-create-request): IDNA-encode
+ the Host: header.
+
+ * lisp/url/url-util.el (url-encode-url): Don't hex-encode
+ domain names, but leave them as UTF-8, so that they can be
+ IDNA-encoded later when contacting the host.
+
+2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
- (cherry picked from commit 1efc5f8b09273c359683ce13be95fb5df7a84311)
+ IDNA-encode all domain names in `open-network-stream'
+
+ * network-stream.el (open-network-stream)
+ (network-stream-open-plain, network-stream-open-starttls):
+ IDNA-encode all domain names, if needed.
+
+2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix puny-encoding all-non-ASCII domains
+
+ * puny.el (puny-encode-string): Fix the all-non-ASCII encoding case.
+
+2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * lisp/net/shr.el (shr-next-link): Don't bug out on adjacent links.
2015-12-28 Tom Tromey <tom@tromey.com>
@@ -9741,6 +12856,19 @@
(url-http-chunked-encoding-after-change-function): Make
trailer detection more compliant (bug#16345).
+2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Reconnect erc even on server errors
+
+ * lisp/erc/erc-backend.el (erc-server-reconnect-p): Try to
+ reconnect even if a server error has occurred (bug#18527).
+
+2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Fix punycode short circuit logic
+
+ * puny.el (puny-encode-domain): Fix short-circuit logic.
+
2015-12-28 Martin Rudalics <rudalics@gmx.at>
Fix Bug#10873 in `report-emacs-bug'
@@ -9751,6 +12879,27 @@
2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
+ IDNA speed up
+
+ * puny.el (puny-encode-domain): Make the common non-IDNA case faster
+
+2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Add IDNA domain encode/decode functions
+
+ * puny.el (puny-decode-domain): New function.
+ (puny-encode-domain): Ditto.
+ (puny-decode-digit): Fix digit decoding error.
+
+2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Rename idna.el to puny.el
+
+ * puny.el: Renamed from idna.el to avoid name collisions with
+ the external idna.el library.
+
+2015-12-28 Lars Ingebrigtsen <larsi@gnus.org>
+
Always reset the bidi direction
* eww.el (eww-display-html): Always reset the bidi direction
@@ -9773,7 +12922,14 @@
* lisp/progmodes/cc-langs.el: New c-lang-setvar `comment-end-can-be-escaped'.
-2015-12-28 Dmitry Gutov <dgutov@yandex.ru>
+2015-12-28 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ lisp/gnus/mml-sec.el (mml-secure-bcc-is-safe): Keep old Emacsen compatibility
+
+ * lisp/gnus/mml-sec.el (mml-secure-bcc-is-safe):
+ Don't use split-string with 4th arg for old Emacsen compatibility.
+
+2015-12-27 Dmitry Gutov <dgutov@yandex.ru>
Rename project-library-roots to project-external-roots
@@ -9793,6 +12949,52 @@
an anonymous function for the default value of
project-vc-external-roots-function.
+2015-12-27 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * idna.el (idna-decode-string-internal): Implement decoding.
+
+2015-12-27 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Further IDNA tweaks
+
+ (idna-encode-string): Make idna-encode-string safe for
+ non-ASCII use.
+
+2015-12-27 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Clean up the code slightly
+
+2015-12-27 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Added basic idna encoding support
+
+ * lisp/net/idna.el: New file.
+
+2015-12-27 Vivek Dasmohapatra <vivek@etla.org>
+
+ Disconnection fixes for erc
+
+ * lisp/erc/erc-backend.el (erc-server-reconnect-p): Don't
+ reconnect if the user has disconnected explicitly (bug#4589).
+
+2015-12-27 Thomas Riccardi <riccardi.thomas@gmail.com> (tiny change)
+
+ Further erc asynch fixes
+
+ * lisp/erc/erc-backend.el (erc-process-sentinel-2): Make
+ erc-server-connect to return even if the connection is not
+ ready. Then erc-open and erc-server-reconnect do the
+ same. (bug#5650).
+
+2015-12-27 Vivek Dasmohapatra <vivek@etla.org>
+
+ Make erc connect asynchronously
+
+ * lisp/erc/erc-backend.el (erc-server-reconnect): Use it to
+ reconnect asynchronously.
+
+ * lisp/erc/erc-backend.el (erc-open-network-stream): New function (bug#5650).
+
2015-12-27 Deniz Dogan <deniz@dogan.se>
Clear erc user list upon disconnection
@@ -9805,7 +13007,7 @@
Don't bug out in erc after waking from sleep
- * lisp/erc/erc-backend.el (erc-server-send-ping): If the server has
+ * erc-backend.el (erc-server-send-ping): If the server has
closed connection, this may already have been detected and
`erc-server-last-received-time' has been set to nil (bug#13608).
@@ -9817,10 +13019,6 @@
generated when multiple IRC clients talk to a single IRC proxy
(bug#19034).
- Backport:
-
- (cherry picked from commit 507e98a54d1aa37823c64993d6b59257a82fe8f4)
-
2015-12-27 Dima Kogan <dima@secretsauce.net>
Ensure that we don't have several timers in erc
@@ -9832,37 +13030,23 @@
2015-12-27 Jens Lechtenboerger <jens.lechtenboerger@fsfe.org>
- Fix mml-sec build warnings
-
* lisp/gnus/mml-sec.el: Fix warnings by adding autoloads
(bug#18718).
- Backport:
-
- (cherry picked from commit 3603097f62f5f4aa5451716e9ac380161f6829e2)
-
2015-12-27 Lars Ingebrigtsen <larsi@gnus.org>
- Don't insert erc logs at the end
-
* lisp/erc/erc-log.el (erc-log-setup-logging): Insert the previous log
at the start of the buffer, not at the end (bug#20496).
2015-12-27 Lars Ingebrigtsen <larsi@gnus.org>
- (eww-setup-buffer): Restore left-to-right defaults
-
- * eww.el (eww-setup-buffer): Restore left-to-right defaults.
-
- Backport:
-
- (cherry picked from commit 96c874b96b617c124d500a94de761a61f2a08685)
+ * lisp/net/eww.el (eww-setup-buffer): Restore left-to-right defaults.
2015-12-27 Lars Ingebrigtsen <larsi@gnus.org>
Don't join erc channels doubly
- * lisp/erc/erc-join.el (erc-autojoin-channels): Don't join channels
+ * erc-join.el (erc-autojoin-channels): Don't join channels
more than once (if you have several nicks) (bug#20695).
2015-12-27 Eli Zaretskii <eliz@gnu.org>
@@ -9875,6 +13059,18 @@
* src/w32term.c (frame_set_mouse_pixel_position): Include
w32common.h.
+2015-12-27 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * lisp/gnus/mml-sec.el (mml-secure-bcc-is-safe): Fix typo in last check-in.
+
+2015-12-27 Jens Lechtenboerger <jens.lechtenboerger@fsfe.org>
+
+ Identify unsafe combinations of Bcc and encryption
+
+ * lisp/gnus/gnus-util.el (gnus-subsetp): New function
+ * lisp/gnus/mml-sec.el (mml-secure-safe-bcc-list): New variable
+ * lisp/gnus/mml-sec.el (mml-secure-bcc-is-safe): New function
+
2015-12-27 Krzysztof Jurewicz <krzysztof.jurewicz@gmail.com> (tiny change)
Fix auth source lookups from erc with port numbers
@@ -9889,7 +13085,7 @@
* lisp/erc/erc.el (erc-kill-buffer-function): Run erc-kill-channel-hook
when erc-kill-queries-on-quit is set (bug#21187).
-2015-12-27 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-26 Paul Eggert <eggert@cs.ucla.edu>
Spelling fix
@@ -9897,7 +13093,7 @@
(url-generic-parse-url/same-document-reference):
Rename from url-generic-parse-url/same-decument-reference.
-2015-12-27 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-26 Paul Eggert <eggert@cs.ucla.edu>
Reword initial *scratch* for brevity, appearance
@@ -9910,14 +13106,14 @@
Add ert-deftest to lisp-mode.el
- * lisp/emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression,
+ * lisp-mode.el (lisp-imenu-generic-expression,
lisp-el-font-lock-keywords-1): Add ert-deftest.
2015-12-26 Lars Ingebrigtsen <larsi@gnus.org>
Mark imap changes as not needing doc changes
- * lisp/net/imap.el (imap-ssl-open): Remove
+ * imap.el (imap-ssl-open): Remove
2015-12-26 Lars Ingebrigtsen <larsi@gnus.org>
@@ -10011,27 +13207,6 @@
Include the tests for the URL parsing fixes
-2015-12-26 Alain Schneble <a.s@realize.ch>
-
- Make relative URL parsing and resolution consistent with RFC 3986 (bug#22044)
-
- * test/automated/url-parse-tests.el: Add tests covering url-generic-parse-url.
- * test/automated/url-expand-tests.el: Add tests covering url-expand-file-name.
- * lisp/url/url-parse.el (url-generic-parse-url): Keep empty fragment
- information in URL-struct.
- * lisp/url/url-parse.el (url-path-and-query): Do not artificially turn empty
- path and query into nil path and query, respectively.
- * lisp/url/url-expand.el (url-expander-remove-relative-links): Do not turn
- empty path into an absolute ("/") path.
- * lisp/url/url-expand.el (url-expand-file-name): Properly resolve
- fragment-only URIs. Do not just return them unchanged.
- * lisp/url/url-expand.el (url-default-expander): An empty path in the relative
- reference URI should not drop the last segment.
-
- Backport:
-
- (cherry picked from commit b792ecea1715e080ad8e232d3d154b8a25d2edfb)
-
2015-12-26 Eli Zaretskii <eliz@gnu.org>
Document 'url-user-agent'.
@@ -10086,43 +13261,8 @@
2015-12-25 Andreas Schwab <schwab@linux-m68k.org>
Don't treat /foo/bar:mumble as ange-ftp address
-
- * lisp/net/browse-url.el (browse-url-filename-alist): Match colons
- only in the first component. (bug#5362)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Follow <meta> redirects in eww
-
- Merge conflict, but I think I resolved it.
-
- Follow meta refresh tags in eww
-
- * eww.el (eww-tag-meta): Follow meta refresh tags (bug#22234).
-
- Backport:
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Allow http://user:pass@foo/ URLs again
-
- * lisp/url/url-auth.el (url-basic-auth): Allow explicit
- user/passwords in URLs (bug#19046).
-
- Backport:
-
- (cherry picked from commit b563715a2db265517d5a77f165a42afa1e233fdd)
-
-2015-12-25 Samer Masterson <samer@samertm.com>
-
- Autoload url-insert-buffer-contents
-
- * lisp/url/url-handlers.el: Add autoload cookie so that
- `package-list-packages' doesn't bug out (bug#21927) (tiny change)
-
- Backport:
-
- (cherry picked from commit 7a7b5b492ff9929eecd90c4564db6fbf3b192323)
+ * lisp/net/browse-url.el (browse-url-filename-alist): Match colons
+ only in the first component. (bug#5362)
2015-12-25 Eli Zaretskii <eliz@gnu.org>
@@ -10132,157 +13272,6 @@
backslashes to forward slashes while decoding default-directory
of the initially-created buffers.
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- More eww file name coding fixes
-
- * eww.el (eww-decode-url-file-name): Use the base coding
- system to check for encodability.
-
- Backport:
-
- (cherry picked from commit a8627008abe4ab339df19b417776da28b3ce0fc7)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Always save eww history
-
- * eww.el (eww-setup-buffer): Always save history, even when
- called from outside the eww buffer (bug#19638).
-
- Backport:
-
- (cherry picked from commit 2a0f18d9b6ce0ccce3d9c4a4a3b5743bae71b41e)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Default web pages to right-to-left
-
- * eww.el (eww-mode): Most web pages are left-to-right, so make
- that the default (bug#19801).
-
- * shr.el (shr-tag-html): Respect "dir" attributes
- (left-to-right, right-to-left).
-
- Backport:
-
- (cherry picked from commit 9e089ec8a380ec3758fcf1564c5f86dc92c68c2a)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Make toggling checkboxes work again
-
- * eww.el (eww-update-field): Make toggling checkboxes work
- again (bug#21881).
-
- Backport:
-
- (cherry picked from commit 5e56f606952e5e81b4d3a93ea70e791b74b33041)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Don't store cookies with empty names
-
- * lisp/url/url-cookie.el (url-cookie-store): Refuse to store
- cookies with empty names (bug#21936).
-
- Backport:
-
- (cherry picked from commit 9f0fd7cb1aec3eb9e2e0f7b8854c30870286d96c)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Stop rendering HTML before specdlr exhaustion
-
- Fixes: 22117
-
- * shr.el (shr-descend): Stop rendering before we run out of
- specpdl room (bug#22117).
-
- Backport:
-
- (cherry picked from commit 248da292fe46224b0b5a79b632c89cf4de2c2081)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Use cl-reduce, not reduce.
-
- Backport:
-
- (cherry picked from commit fe4606f93b91ff3d046aee0cf21ecc277af7a786)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Allow several <tbody> tags in shr
-
- * shr.el (shr-table-body): New function to find the real body
- of a table.
- (shr-tag-table): Use it to render several <tbody> tags in a
- table (bug#22170).
-
- Backport:
-
- (cherry picked from commit cdaf33029d6620073833876d76056045ecfbc7c4)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Make prettier unique file names in eww
-
- (eww-make-unique-file-name): Make unique file names by making
- files like foo(2).jpg instead of foo(1)(2).jpg.
-
- Backport:
-
- (cherry picked from commit edfdd0a6cbdfa9e5e4bd0553e2b489401ca39266)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Decode hex-encoded URLs before using them as file names
-
- * eww.el (eww-decode-url-file-name): New function.
- (eww-download-callback): Use it to decode file names before
- saving them.
-
- Backport:
-
- (cherry picked from commit af22a010d87516c2a646572fb27512c03057784f)
-
-2015-12-25 Ashish SHUKLA <ashish.is@lostca.se>
-
- Add FreeBSD cert bundle
-
- * doc/misc/emacs-gnutls.texi (Help For Users): Document
- FreeBSD bundle.
-
- * lisp/net/gnutls.el (gnutls-trustfiles): Add FreeBSD cert bundle.
-
- Backport:
-
- (cherry picked from commit 60c0f1a18ad88d6dc1a8f4ee5d9d18940eaeb6f7)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- Ignore invalid SVG images
-
- * shr.el (shr-tag-svg): Ignore SVG images that have no width
- or height, because these can't be displayed by ImageMagick,
- anyway.
-
- Backport:
-
- (cherry picked from commit 821107d53c2e390240d25c036b99ebbf9b4a93b6)
-
-2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
-
- shr table rendering fix
-
- * shr.el (shr-tag-table): Allow rendering body-less tables
- that have headers.
-
- Backport:
-
- (cherry picked from commit b05471e42c17e02c56c87d7599ada0c124a5fe09)
-
2015-12-25 Eli Zaretskii <eliz@gnu.org>
Restore info about the build host in bug reports
@@ -10308,7 +13297,8 @@
2015-12-25 Leo Liu <sdl.web@gmail.com>
- * lisp/ido.el (ido-add-virtual-buffers-to-list): Use bookmark-get-filename.
+ * lisp/ido.el (ido-add-virtual-buffers-to-list):
+ Use bookmark-get-filename.
2015-12-25 Michael Albinus <michael.albinus@gmx.de>
@@ -10322,7 +13312,7 @@
* lisp/term/x-win.el (x-gtk-stock-map): Fix typo.
-2015-12-24 Katsumi Yamaoka <yamaoka@jpl.org>
+2015-12-23 Katsumi Yamaoka <yamaoka@jpl.org>
Fix `gnus-union' so as to behave like `cl-union'
@@ -10383,14 +13373,14 @@
* src/nsfns.m (ns-convert-utf8-nfd-to-nfc): Removed.
-2015-12-23 Tom Tromey <tom@tromey.com>
+2015-12-22 Tom Tromey <tom@tromey.com>
Fix bug #18588 by making bug-reference-bug-regexp more lenient
* lisp/progmodes/bug-reference.el (bug-reference-bug-regexp): Accept
"bug NNNN". (Bug #18588)
-2015-12-23 Tom Tromey <tom@tromey.com>
+2015-12-22 Tom Tromey <tom@tromey.com>
add some cl-* aliases to lisp-mode imenu
@@ -10440,7 +13430,7 @@
`display-buffer' with ACTION instead of NOT-THIS-WINDOW
(Bug#22221).
-2015-12-22 Juri Linkov <juri@linkov.net>
+2015-12-21 Juri Linkov <juri@linkov.net>
* lisp/saveplace.el (toggle-save-place, save-place-to-alist)
@@ -10451,18 +13441,18 @@
Add FIXME comment re stack overflow and modules
-2015-12-21 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-20 Paul Eggert <eggert@cs.ucla.edu>
Revert some recent emacs-module commentary
Most of the recently-added commentary was incorrect, due to the
possibility of stack overflow.
-2015-12-21 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-20 Paul Eggert <eggert@cs.ucla.edu>
Spelling fix: prefer "cooperate" to "co-operate"
-2015-12-21 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-20 Paul Eggert <eggert@cs.ucla.edu>
Port undo fixes to -fno-common
@@ -10497,7 +13487,8 @@
2015-12-19 Michael Albinus <michael.albinus@gmx.de>
- * lisp/net/tramp-sh.el (tramp-get-ls-command-with-w-option): Improve check.
+ * lisp/net/tramp-sh.el (tramp-get-ls-command-with-w-option):
+ Improve check.
2015-12-19 Eli Zaretskii <eliz@gnu.org>
@@ -10589,7 +13580,7 @@
signal an error if VISIT is non-nil, to more faithfully emulate
the behavior of 'insert-file-contents'. (Bug#22160)
-2015-12-19 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-18 Paul Eggert <eggert@cs.ucla.edu>
Remove SunOS 4.x cruft
@@ -10597,7 +13588,7 @@
* lib-src/pop.c [sun]: Remove no-longer-needed include.
* lwlib/xlwmenu.c (SUNSO41): Remove.
-2015-12-19 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-18 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib
@@ -10627,7 +13618,7 @@
2015-12-18 Lele Gaifax <lele@metapensiero.it>
- * etc/tutorials/TUTORIAL.it: Update and fix typos.
+ * etc/tutorials/TUTORIAL.it: Update and fix typos. (Bug#22187)
2015-12-18 Alan Mackenzie <acm@muc.de>
@@ -10656,7 +13647,7 @@
* lisp/help.el (temp-buffer-max-height, temp-buffer-max-width):
Don't call x-display-pixel-width/-height on ttys.
-2015-12-18 Dmitry Gutov <dgutov@yandex.ru>
+2015-12-17 Dmitry Gutov <dgutov@yandex.ru>
Use 'hg id' in vc-hg-previous-revision
@@ -10785,7 +13776,7 @@
* src/xfns.c (compute_tip_xy): Modify *root_x instead of *root_y
when `right' is integer.
-2015-12-14 foudfou <foudil.newbie+git@gmail.com>
+2015-12-14 foudfou <foudil.newbie+git@gmail.com> (tiny change)
* lisp/ibuffer.el: Add ability to (un-)mark or delete buffers in the region.
@@ -10897,7 +13888,7 @@
... in case of Tramp. (Bug#20821)
-2015-12-13 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-12 Paul Eggert <eggert@cs.ucla.edu>
Fix performance regression with gcc -O0
@@ -11073,7 +14064,7 @@
(Ruby_help): Mention "module".
* test/etags/ruby-src/test.rb:
- * test/etags/ruby-src/test1.ru: New files.
+ * test/etags/ruby-src/test1.ruby: New files.
* test/etags/Makefile (RBSRC): New tests.
(SRCS): Add ${RBSRC}.
* test/etags/ETAGS.good_1:
@@ -11180,17 +14171,17 @@
* lisp/mail/rmailout.el (rmail-output-read-file-name):
Fix display-warning usage.
-2015-12-08 Glenn Morris <rgm@gnu.org>
+2015-12-07 Glenn Morris <rgm@gnu.org>
* lisp/calendar/cal-html.el: Require diary-lib.
(cal-html-list-diary-entries): Handle no diary. (Bug#21994)
-2015-12-08 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2015-12-07 Thomas Fitzsimmons <fitzsim@fitzsim.org>
Add Obsolete-since header to eudcb-ph.el
- * lisp/obsolete/eudcb-ph.el: Add Obsolete-since header.
+ * eudcb-ph.el: Add Obsolete-since header.
2015-12-07 Paul Eggert <eggert@cs.ucla.edu>
@@ -11262,7 +14253,7 @@
Make lax check for utf8.
(tramp-get-remote-locale): Add "en_US.UTF-8" as candidate.
-2015-12-07 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2015-12-06 Thomas Fitzsimmons <fitzsim@fitzsim.org>
Make eudcb-ph.el obsolete
@@ -11273,7 +14264,7 @@
(eudc-ph-bbdb-conversion-alist): Make obsolete.
* etc/NEWS: Mention this. (Bug#21191)
-2015-12-07 Paul Eggert <eggert@cs.ucla.edu>
+2015-12-06 Paul Eggert <eggert@cs.ucla.edu>
Remove overenthusiastic eassert
@@ -11370,7 +14361,7 @@
* test/automated/auto-revert-tests.el (auto-revert--wait-for-revert):
Make it working also when filenotify isn't used.
-2015-12-06 Juri Linkov <juri@linkov.net>
+2015-12-05 Juri Linkov <juri@linkov.net>
* lisp/textmodes/ispell.el (ispell-highlight-spelling-error-overlay):
@@ -11463,7 +14454,7 @@
* etc/NEWS: Fix wording and spelling of undo-related entries.
Mark them as documented.
-2015-12-05 Glenn Morris <rgm@gnu.org>
+2015-12-04 Glenn Morris <rgm@gnu.org>
* lisp/net/net-utils.el: Small improvements.
@@ -11473,7 +14464,7 @@
(ifconfig-program-options): Check the actual program in use.
(arp-program): Check sbin directories.
-2015-12-04 (tiny change) Arash Esbati <esbati@gmx.de> (tiny change)
+2015-12-04 Arash Esbati <esbati@gmx.de> (tiny change)
Fix wrong-type-argument integer-or-marker-p nil error
@@ -11582,7 +14573,6 @@
2015-12-04 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-macs.el (character): Can't be negative
-
Fixes (bug#21701)
2015-12-04 Daiki Ueno <ueno@gnu.org>
@@ -11715,7 +14705,7 @@
* lisp/emacs-lisp/cl-generic.el (cl-no-method): Remove %S; this string is
not run thru `format'.
-2015-12-02 Dmitry Gutov <dgutov@yandex.ru>
+2015-12-01 Dmitry Gutov <dgutov@yandex.ru>
APPEND etags--xref-backend to xref-backend-functions
@@ -11808,14 +14798,14 @@
* src/lread.c (syms_of_lread): Doc fix.
-2015-12-01 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-30 Dmitry Gutov <dgutov@yandex.ru>
Don't mistake certain JS method calls for keywords
* lisp/progmodes/js.el (js--ctrl-statement-indentation):
Braceless keyword can't come after a period (bug#22063).
-2015-12-01 David Reitter <david.reitter@gmail.com>
+2015-11-30 David Reitter <david.reitter@gmail.com>
Read frame_title_format from buffer-local variable for NS port
@@ -11823,7 +14813,7 @@
icon-title-format variables from buffer in appropriate window.
(Bug#22048)
-2015-12-01 Juri Linkov <juri@linkov.net>
+2015-11-30 Juri Linkov <juri@linkov.net>
* lisp/replace.el (occur-engine): Count matches in empty lines.
@@ -11941,7 +14931,7 @@
Spelling and grammar fixes
-2015-11-30 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-29 Dmitry Gutov <dgutov@yandex.ru>
Make lisp-completion-at-point a wrapper instead of an alias
@@ -12243,15 +15233,6 @@
* lisp/replace.el (replace-character-fold): Clarify which commands
are affected by this variable.
-2015-11-27 Mark Oteiza <mvoteiza@udel.edu>
-
- Backport: Add interactive seek command.
-
- * lisp/mpc.el (mpc-cmd-seekcur): New function.
- (mpc-seek-current): New command.
- (mpc-mode-menu): Add entry for mpc-seek-current
- (mpc-mode-map): Bind mpc-seek-current to "g"
-
2015-11-27 Dmitry Gutov <dgutov@yandex.ru>
Autoload etags when using its xref backend
@@ -12289,7 +15270,7 @@
2015-11-27 Lee Bochicchio <lboc.home@gmail.com>
- * test/automated/abbrev-tests.el: Define more tests
+ * test/lisp/abbrev-tests.el: Define more tests
(abbrev-table-name-test, kill-all-abbrevs-test)
(clear-abbrev-table-test): New tests.
@@ -12428,7 +15409,7 @@
* lisp/emacs-lisp/bytecomp.el (byte-compile-setq): In a `setq' form with an
odd number of arguments, generate a `signal' instead of the normal code.
-2015-11-26 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-25 Dmitry Gutov <dgutov@yandex.ru>
Use find-tag-default for xref-backend-identifier-at-point
@@ -12438,7 +15419,7 @@
(xref-backend-identifier-at-point): Define in terms of the new
function.
-2015-11-26 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-25 Paul Eggert <eggert@cs.ucla.edu>
* src/undo.c (record_property_change): Remove now-unused local.
@@ -12529,7 +15510,7 @@
See: T.V Raman in:
http://lists.gnu.org/archive/html/emacs-devel/2015-11/msg02147.html
-2015-11-25 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-24 Dmitry Gutov <dgutov@yandex.ru>
Pass SVN commit message through log-edit-extract-headers
@@ -12709,18 +15690,18 @@
Omit overkill discussion of ‘setq’. Mention Emacs versions
where ‘grave’ style was standard.
-2015-11-24 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-23 Paul Eggert <eggert@cs.ucla.edu>
Improve text-quoting-style doc
-2015-11-24 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-23 Paul Eggert <eggert@cs.ucla.edu>
Simplify module_make_function
* src/emacs-module.c (module_make_function):
Simplify by calling build_unibyte_string.
-2015-11-24 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-23 Paul Eggert <eggert@cs.ucla.edu>
Port better to FreeBSD’s dlfunc vs dlsym
@@ -12733,7 +15714,7 @@
* src/emacs-module.c (Fmodule_load): Use dynlib_func, not
dynlib_sym, for function pointers.
-2015-11-24 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-23 Paul Eggert <eggert@cs.ucla.edu>
Simplify use of emacs_finalizer_function type
@@ -12741,7 +15722,7 @@
Now EMACS_NOEXCEPT. All users simplified to omit EMACS_NOEXCEPT.
(struct emacs_env_25): Use emacs_finalizer_function where applicable.
-2015-11-24 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-23 Paul Eggert <eggert@cs.ucla.edu>
module_format_fun_env fixes
@@ -12806,7 +15787,7 @@
Fix how strings are accepted from modules
- * src/emacs-module.c (module_make_function, module_make_string): Use
+ * emacs-module.c (module_make_function, module_make_string): Use
make_multibyte_string.
(module_copy_string_contents): Encode before reading the byte
size. Return false if and only if an error occurred.
@@ -12834,7 +15815,7 @@
2015-11-23 Alan Mackenzie <acm@muc.de>
- * etc/NEWS (Incompatible Lisp Changes): Also `setf' needs an even # of args.
+ * /etc/NEWS (Incompatible Lisp Changes): Also `setf' needs an even # of args.
2015-11-23 Alan Mackenzie <acm@muc.de>
@@ -12898,32 +15879,32 @@
* src/frame.c (adjust_frame_size): Set FRAME_WINDOW_SIZES_CHANGED (Bug#21975).
-2015-11-23 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2015-11-22 Thomas Fitzsimmons <fitzsim@fitzsim.org>
Add EUDC BBDB 3 entry in NEWS
* NEWS: Mention EUDC BBDB backend support for BBDB 3.
-2015-11-23 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2015-11-22 Thomas Fitzsimmons <fitzsim@fitzsim.org>
Improve EUDC to BBDB 3 export
- * lisp/net/eudc-vars.el (eudc-ldap-bbdb-conversion-alist): Change phone
+ * eudc-vars.el (eudc-ldap-bbdb-conversion-alist): Change phone
entry to single item. Add company conversion.
- * lisp/net/eudc-export.el (eudc-bbdbify-company): New function.
+ * eudc-export.el (eudc-bbdbify-company): New function.
(bbdb-parse-phone): Declare function.
(eudc-bbdbify-phone): Add BBDB 3 support.
(Bug#21971)
-2015-11-23 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2015-11-22 Thomas Fitzsimmons <fitzsim@fitzsim.org>
Add BBDB 3 support for EUDC export
- * lisp/net/eudc.el: Add bbdb-version defvar.
+ * eudc.el: Add bbdb-version defvar.
(eudc--using-bbdb-3-or-newer-p): New function.
- * lisp/net/eudc-export.el (eudc-create-bbdb-record): Add support for
+ * eudc-export.el (eudc-create-bbdb-record): Add support for
bbdb-create-internal argument list changes introduced in BBDB 3.
- * lisp/net/eudcb-bbdb.el: Remove bbdb-version defvar.
+ * eudcb-bbdb.el: Remove bbdb-version defvar.
(eudc-bbdb-field): Call eudc--using-bbdb-3-or-newer-p.
(Bug#21971)
@@ -12958,7 +15939,7 @@
* lisp/vc/vc-git.el (vc-git-diff): Ignore the ASYNC argument,
do a synchronous process call (bug#21969).
-2015-11-22 Karl Fogel <kfogel@red-bean.com>
+2015-11-21 Karl Fogel <kfogel@red-bean.com>
Finish excising electric indent from `open-line'
@@ -12982,7 +15963,7 @@
This could close bug#21884, at least until further discussion.
-2015-11-22 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-21 Dmitry Gutov <dgutov@yandex.ru>
Adhere closer to the "implicit tag name" definition
@@ -12991,7 +15972,7 @@
the regexp. Search for the explicit tag name first, and when
not found, search locally for the implicit one. (Bug#21934)
-2015-11-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2015-11-21 Stefan Monnier <monnier@iro.umontreal.ca>
Unrevert most of regexp reentrancy abort patch
@@ -13067,12 +16048,6 @@
w32_init_main_thread, instead of calling the requisite APIs once
more.
-2015-11-21 Mark Oteiza <mvoteiza@udel.edu>
-
- Backport: Fix issue where a new tempfile was created every refresh
-
- * lisp/mpc.el (mpc-format): Leave dir as relative path
-
2015-11-21 Eli Zaretskii <eliz@gnu.org>
Call 'window-size-change-functions' for mini-windows
@@ -13109,7 +16084,7 @@
* etc/NEWS: Mention the new support for dynamically loaded modules.
-2015-11-21 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-20 Dmitry Gutov <dgutov@yandex.ru>
Add xref--etags-backend to xref-backing-functions using add-hook
@@ -13247,7 +16222,7 @@
config.h, to test that emacs-module.h doesn’t depend on
include files other than config.h.
-2015-11-20 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-19 Paul Eggert <eggert@cs.ucla.edu>
Simplify push_handler and profile its malloc
@@ -13263,11 +16238,11 @@
push_handler_nosignal.
(push_handler_nosignal): Profile any newly allocated memory.
-2015-11-20 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-19 Paul Eggert <eggert@cs.ucla.edu>
* src/emacs-module.h: Include stddef.h, not stdlib.h.
-2015-11-20 Juanma Barranquero <lekktu@gmail.com>
+2015-11-19 Juanma Barranquero <lekktu@gmail.com>
Discover repository version in linked worktrees (bug#21930)
@@ -13276,7 +16251,7 @@
(emacs-repository-get-version): Grok linked worktrees when EXTERNAL
is nil too.
-2015-11-20 Juri Linkov <juri@linkov.net>
+2015-11-19 Juri Linkov <juri@linkov.net>
* lisp/replace.el (occur-regexp-descr): New function.
(occur-1, occur-engine): Use it.
@@ -13286,7 +16261,7 @@
occur-regexp-descr to display the correct description
message in the header (bug#21176, bug#21180).
-2015-11-20 Karl Fogel <kfogel@red-bean.com>
+2015-11-19 Karl Fogel <kfogel@red-bean.com>
Revert `open-line' electric-indent sensitivity
@@ -13315,7 +16290,7 @@
https://lists.gnu.org/archive/html/emacs-devel/2015-11/msg01707.html
-2015-11-20 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-19 Paul Eggert <eggert@cs.ucla.edu>
Omit unnecessary clear in Fmodule_load
@@ -13324,7 +16299,7 @@
* src/emacs-module.c: (module_vec_set, module_vec_get, module_vec_size)
-2015-11-20 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-19 Paul Eggert <eggert@cs.ucla.edu>
Prefer signed integer types in module code
@@ -13400,7 +16375,7 @@
* src/dynlib.c (dynlib_close): #ifdef out for now, as it’s not used.
* src/eval.c, src/lisp.h (lisp_eval_depth): Now static.
- * src/emacs-module.c (Fmodule_load): Fix pointer signedness bug.
+ * src/module.c (Fmodule_load): Fix pointer signedness bug.
(Fmodule_call): Tell GCC that the default case is unreachable.
2015-11-19 Paul Eggert <eggert@cs.ucla.edu>
@@ -13409,7 +16384,7 @@
This is mostly indenting and spacing changes. Also, remove
some unnecessary static decls instead of bothering to reindent them.
- * src/emacs-module.h (EMACS_EXTERN_C_BEGIN): Remove, and do this inline,
+ * src/module.h (EMACS_EXTERN_C_BEGIN): Remove, and do this inline,
as most other Emacs files do for this sort of thing.
2015-11-19 Eli Zaretskii <eliz@gnu.org>
@@ -13454,7 +16429,7 @@
src/keyboard.c (pre-command-hook): Fix typo in doc string: "pre" -> "post".
-2015-11-19 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-18 Dmitry Gutov <dgutov@yandex.ru>
Prioritize looking inside vc-parent-buffer over log-view-mode fallback
@@ -13531,9 +16506,9 @@
* src/alloc.c (garbage_collect_1): protect module local values from
GC.
* src/lisp.h: Add 'module_init' and 'syms_of_module' prototypes.
- * src/emacs-module.h: New header file included by modules. Public
+ * src/emacs_module.h: New header file included by modules. Public
module API.
- * src/emacs-module.c: New module implementation file.
+ * src/module.c: New module implementation file.
2015-11-18 Aurélien Aptel <aurelien.aptel@gmail.com>
@@ -13599,46 +16574,11 @@
Ensure we're at the start of the buffer before searching for
the end of headers.
-2015-11-18 Xue Fuqiao <xfq.free@gmail.com>
+2015-11-17 Xue Fuqiao <xfq.free@gmail.com>
* admin/release-process: Improve wording.
-2015-11-18 Xue Fuqiao <xfq.free@gmail.com>
-
- Backport: * CONTRIBUTE: Remove information about feature freeze.
-
- (cherry picked from commit ae0653b5ab9ee223751ec389b87011963e1cbbef)
-
-2015-11-18 Xue Fuqiao <xfq.free@gmail.com>
-
- Backport: Document the release process
-
- * admin/notes/versioning: Add information about RC releases.
- * admin/release-process: Document the release process.
- * admin/authors.el (authors-ignored-files):
- * admin/README: Change FOR-RELEASE to release-process.
- * CONTRIBUTE:
- * admin/notes/bugtracker: Don't mention FOR-RELEASE.
-
- (cherry picked from commit 9a4aa0f5945a03611ae29c516025dbd353bd26ab)
-
-2015-11-18 Xue Fuqiao <xfq.free@gmail.com>
-
- Backport: * admin/release-process: Rename from admin/FOR-RELEASE.
-
- (cherry picked from commit f8cc14b59700e51a4e31139c0a65c8154995e055)
-
-2015-11-18 Xue Fuqiao <xfq.free@gmail.com>
-
- Backport: Mention CONTRIBUTE in README
-
- Mention CONTRIBUTE in README, since it was moved from etc/ to root.
- * etc/TODO: Remove the reference to `etc/CONTRIBUTE'.
- * README: Mention CONTRIBUTE.
-
- (cherry picked from commit ed2e7e20ae0945288c98091f308f5460c3453873)
-
-2015-11-18 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-17 Paul Eggert <eggert@cs.ucla.edu>
Fix docstring quoting problems with ‘ '’
@@ -13689,14 +16629,14 @@
set_backtrace_debug_on_exit hack. This is cleaner,
and should work better with buggy custom debuggers.
-2015-11-17 Daiki Ueno <ueno@gnu.org>
+2015-11-16 Daiki Ueno <ueno@gnu.org>
* lisp/image-mode.el: Support encrypted file
(image-toggle-display-image): Read content from the buffer instead
of the file, if the buffer holds a decrypted data. (Bug#21870)
-2015-11-17 Paul Eggert <eggert@cs.ucla.edu>
+2015-11-16 Paul Eggert <eggert@cs.ucla.edu>
ELF unexec: align section header
@@ -13706,7 +16646,7 @@
of ElfW (Shdr)’s alignment, so that NEW_SECTION_H returns a
pointer aligned appropriately for its type.
-2015-11-17 Andreas Schwab <schwab@linux-m68k.org>
+2015-11-16 Andreas Schwab <schwab@linux-m68k.org>
Do more checks on bytecode objects (Bug#21929)
@@ -13740,7 +16680,7 @@
* lisp/emacs-lisp/nadvice.el (add-function): Escape quote
-2015-11-16 Vasily Korytov <vasily.korytov@yahoo.com>
+2015-11-15 Vasily Korytov <vasily.korytov@yahoo.com>
Recognize .rbw and .pyw files (bug#18753)
@@ -13750,7 +16690,7 @@
* lisp/progmodes/ruby-mode.el (auto-mode-alist):
Recognize .rbw files.
-2015-11-16 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-15 Dmitry Gutov <dgutov@yandex.ru>
Fix ruby-mode auto-mode-alist entry
@@ -13773,19 +16713,6 @@
is only called when a construct "looks right" rather than continually.
(c-guess-basic-syntax, CASE 5R): Add a check for the mode being C++ Mode.
-2015-11-15 Artur Malabarba <bruce.connor.am@gmail.com>
-
- Backport: * lisp/emacs-lisp/package.el: Fix a decoding issue.
-
- * lisp/url/url-handlers.el (url-insert-file-contents): Move some code to
- `url-insert-buffer-contents'.
- (url-insert-buffer-contents): New function
-
- (package--with-response-buffer): Use `url-insert-buffer-contents'.
- The previous code had some issues with decoding. Refactoring that
- function allows us to use the decoding from url-handlers while still
- treating both sync and async requests the same.
-
2015-11-15 Stephen Leake <stephen_leake@stephe-leake.org>
Improve a few doc strings, comments
@@ -13844,7 +16771,7 @@
frame size didn't match the number of text lines, leaving an
unused area at the bottom of the frame.
- * src/nsfns.m (x_set_tool_bar_lines): Exit maximized and full height
+ * nsfns.m (x_set_tool_bar_lines): Exit maximized and full height
fullscreen modes when tool bar is disabled.
2015-11-15 Anders Lindgren <andlind@gmail.com>
@@ -13904,7 +16831,7 @@
* lisp/progmodes/xref.el (xref-backend-references):
Define the default implementation.
-2015-11-15 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-14 Dmitry Gutov <dgutov@yandex.ru>
Update project-find-regexp for the new xref API
@@ -13913,7 +16840,7 @@
* lisp/progmodes/xref.el (xref-find-backend): Autoload.
-2015-11-15 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-14 Dmitry Gutov <dgutov@yandex.ru>
Fix replacing a match with a shorter string
@@ -13963,38 +16890,1476 @@
* doc/lispref/internals.texi (Building Emacs): Document that GNU
Make 3.81 or later is now required.
-2015-11-14 Artur Malabarba <bruce.connor.am@gmail.com>
+2015-11-14 Eli Zaretskii <eliz@gnu.org>
+
+ * CONTRIBUTE (Branches): Improve wording for back-ported commits.
+
+2015-11-13 l3thal <kwhite@gnu.org>
+
+ Merge branch 'erc-async-reconnect' into emacs-25
+
+ Reconnect asynchronously.
+
+2015-11-11 Alan Mackenzie <acm@muc.de>
+
+ First commit to scratch/follow. Make Isearch work with Follow Mode, etc.
+
+ doc/lispref/window.texi (Basic Windows): Add paragraph defining "Group of
+ Windows" and new @defun selected-window-group.
+ (Window Start and End): Describe new &optional parameter GROUP and
+ ...-group-function for window-start, window-end, set-window-start, and
+ pos-visible-in-window-p.
+ (Textual Scrolling) Describe the same for recenter.
+ doc/lispref/positions.texi (Screen Lines): Describe the same for
+ move-to-window-line.
+
+ src/window.c (Fwindow_start, Fwindow_end, Fset_window_start)
+ (Fpos_visible_in_window_p, Frecenter, Fmove_to_window_line): To each, add ar
+ new optional parameter "group". At the beginning of each, check whether the
+ corresponding ...-group-function is set to a function, and if so execute this
+ function in place of the normal processing.
+ (syms_of_window): Define symbols for the six new variables below.
+ (window-start-group-function, window-end-group-function)
+ (set-window-start-group-function, recenter-group-function)
+ (pos-visible-in-window-p-group-function, move-to-window-line-group-function):
+ New permanent local buffer local variables.
+ src/keyboard.c (Fposn_at_point): Add extra parameter in call to
+ Fpos_visible_in_window_p.
+
+ lisp/window.el (selected-window-group-function): New permanent local buffer
+ local variable.
+ (selected-window-group): New function.
+
+ lisp/follow.el (follow-mode): Set the ...-group-function variables at mode
+ enable, kill them at mode disable. Add/remove follow-after-change to/from
+ after-change-functions.
+ (follow-start-end-invalid): New variable.
+ (follow-redisplay): Manipulate follow-start-end-invalid.
+ (follow-after-change, follow-window-start, follow-window-end)
+ (follow-set-window-start, follow-pos-visible-in-window-p)
+ (follow-move-to-window-line, follow-sit-for): New functions.
+
+ lisp/isearch.el (isearch-call-message): New macro.
+ (isearch-update, with-isearch-suspended, isearch-del-char)
+ (isearch-search-and-update, isearch-ring-adjust): Invoke above new macro.
+ (with-isearch-suspended): Rearrange code such that isearch-call-message is
+ invoked before point is moved.
+ (isearch-message): Add comment about where point must be at function call.
+ (isearch-search): Remove call to isearch-message.
+ (isearch-lazy-highlight-window-group): New variable.
+ (isearch-lazy-highlight-new-loop): Unconditionally start idle timer. Move
+ the battery of tests to ...
+ (isearch-lazy-highlight-maybe-new-loop): New function, started by idle timer.
+ Note: (sit-for 0) is still called.
+ (isearch-lazy-highlight-update): Check membership of
+ isearch-lazy-highlight-window-group. Don't set the `window' overlay
+ property.
+ (isearch-update, isearch-done, isearch-string-out-of-window)
+ (isearch-back-into-window, isearch-lazy-highlight-maybe-new-loop)
+ (isearch-lazy-highlight-search, isearch-lazy-highlight-update)
+ (isearch-lazy-highlight-update): Call the six amended primitives (see
+ src/window.c above) with the new `group' argument set to t, to cooperate
+ with Follow Mode.
+
+2015-12-27 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-descend): Allow using lambdas in external functions.
+
+2015-12-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * admin/gitmerge.el: Tweaks that seemed necessary
+
+ * admin/gitmerge.el (gitmerge-skip-regexp): Remove "sync".
+ (gitmerge-maybe-resume): Provide explicit empty commit message.
+
+2015-12-25 Åukasz Stelmach <stlman@poczta.fm> (tiny change)
+
+ Use a different port for TLS erc
+
+ * lisp/erc/erc.el (erc-default-port-tls): New variable
+ (bug#19497).
+ * lisp/erc/erc.el (erc-tls): Use it.
+
+2015-12-25 Alain Schneble <a.s@realize.ch>
+
+ Make relative URL parsing and resolution consistent with RFC 3986 (bug#22044)
+
+ * test/lisp/url/url-parse-tests.el: Add tests covering url-generic-parse-url.
+ * test/lisp/url/url-expand-tests.el: Add tests covering url-expand-file-name.
+ * lisp/url/url-parse.el (url-generic-parse-url): Keep empty fragment
+ information in URL-struct.
+ * lisp/url/url-parse.el (url-path-and-query): Do not artificially turn empty
+ path and query into nil path and query, respectively.
+ * lisp/url/url-expand.el (url-expander-remove-relative-links): Do not turn
+ empty path into an absolute ("/") path.
+ * lisp/url/url-expand.el (url-expand-file-name): Properly resolve
+ fragment-only URIs. Do not just return them unchanged.
+ * lisp/url/url-expand.el (url-default-expander): An empty path in the relative
+ reference URI should not drop the last segment.
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Let url use default file modes when copying files
+
+ * lisp/url/url-handlers.el (url-copy-file): Use default file
+ modes when copying files (bug#11400).
+
+2015-12-25 Devon Sean McCullough <Emacs-Hacker2012@jovi.net>
+
+ Doc fix for url-http
+
+ * lisp/url/url-http.el (url-http): Document better return values
+ (bug#13187) (tiny change)
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * eww.el (eww-display-html): Support <button> tags (bug#20485).
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Made ffap-url-p a defun instead of a defsubst
+
+ * lisp/ffap.el (ffap-url-p): Change from defsusbt to defun,
+ since there doesn't seem to be much of a reason for it to be a
+ defsubst (bug#18203).
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Add a command to view files in the browser to dired
+
+ * lisp/dired.el (dired-mode-map): Add the `W' command
+ (bug#18810).
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Allow http://user:pass@foo/ URLs again
+
+ * lisp/url/url-auth.el (url-basic-auth): Allow explicit
+ user/passwords in URLs (bug#19046).
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * eww.el (eww-mode-map): Fix command name of eww-toggle-colors.
+
+2015-12-25 Samer Masterson <samer@samertm.com>
+
+ Autoload url-insert-buffer-contents
+
+ * lisp/url/url-handlers.el: Add autoload cookie so that
+ `package-list-packages' doesn't bug out (bug#21927) (tiny change)
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Allow toggling colors in eww
+
+ * doc/misc/eww.texi (Basics): Mention "C".
+
+ * lisp/net/eww.el (eww-toggle-colors): New command and keystroke.
+
+ * lisp/net/shr.el (shr-use-colors): New variable.
+ (shr-colorize-region): Use it.
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Follow meta refresh tags in eww
+
+ * eww.el (eww-tag-meta): Follow meta refresh tags (bug#22234).
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ More eww file name coding fixes
+
+ * eww.el (eww-decode-url-file-name): Use the base coding
+ system to check for encodability.
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Always save eww history
+
+ * eww.el (eww-setup-buffer): Always save history, even when
+ called from outside the eww buffer (bug#19638).
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Default web pages to right-to-left
+
+ * eww.el (eww-mode): Most web pages are left-to-right, so make
+ that the default (bug#19801).
+
+ * shr.el (shr-tag-html): Respect "dir" attributes
+ (left-to-right, right-to-left).
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make toggling checkboxes work again
+
+ * eww.el (eww-update-field): Make toggling checkboxes work
+ again (bug#21881).
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Don't store cookies with empty names
+
+ * lisp/url/url-cookie.el (url-cookie-store): Refuse to store
+ cookies with empty names (bug#21936).
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-descend): Stop rendering before we run out of
+ specpdl room (bug#22117).
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Use cl-reduce, not reduce.
+
+2015-12-25 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Allow several <tbody> tags in shr
+
+ * shr.el (shr-table-body): New function to find the real body
+ of a table.
+ (shr-tag-table): Use it to render several <tbody> tags in a
+ table (bug#22170).
+
+2015-12-24 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Make prettier unique file names in eww
+
+ (eww-make-unique-file-name): Make unique file names by making
+ files like foo(2).jpg instead of foo(1)(2).jpg.
+
+2015-12-24 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Decode hex-encoded URLs before using them as file names
+
+ * eww.el (eww-decode-url-file-name): New function.
+ (eww-download-callback): Use it to decode file names before
+ saving them.
+
+2015-12-24 Ashish SHUKLA <ashish.is@lostca.se> (tiny change)
+
+ * doc/misc/emacs-gnutls.texi (Help For Users): Document FreeBSD bundle.
+ * lisp/net/gnutls.el (gnutls-trustfiles): Add FreeBSD cert bundle.
+
+2015-12-24 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Allow overriding shr functions from eww
+
+ * eww.el (eww-display-html): Allow overriding elements in
+ `shr-external-rendering-functions'.
+
+2015-12-24 Lars Ingebrigtsen <larsi@gnus.org>
+
+ Ignore invalid SVG images
+
+ * shr.el (shr-tag-svg): Ignore SVG images that have no width
+ or height, because these can't be displayed by ImageMagick,
+ anyway.
+
+2015-12-24 Lars Ingebrigtsen <larsi@gnus.org>
+
+ shr table rendering fix
+
+ * shr.el (shr-tag-table): Allow rendering body-less tables
+ that have headers.
+
+2015-12-22 Sam Steingold <sds@gnu.org>
+
+ clipboard should still work even if interprogram-* is disabled
+
+ (clipboard-yank): When `interprogram-cut-function' is nil,
+ bind it to `gui-selection-value' - the default value.
+ (clipboard-kill-region, clipboard-kill-ring-save): When
+ `interprogram-paste-function' is nil, bind it to `gui-select-text' -
+ the default value.
+
+2015-12-18 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Fix bootstrap issue with dired-loaddefs
+
+ * lisp/dired.el: Autoloads for secondary files loaded optionally.
+
+2015-12-17 Phillip Lord <phillip.lord@russet.org.uk>
+
+ dired generate autoloads to non-versioned file.
+
+ * lisp/dired.el: Remove autoloads.
+ * lisp/Makefile.in: Add dired to autogenel.
+ * lisp/dired-aux.el,lisp/dired-x.el: Update file local.
+ * test/lisp/dired-tests.el: Add new test.
+
+2015-12-17 Phillip Lord <phillip.lord@russet.org.uk>
+
+ eieio generate autoloads to non-versioned file.
+
+ * lisp/Makefile.in: eieio-loaddefs add to autogenel.
+ * lisp/emacs-lisp/eieio.el,lisp/emacs-lisp/eieio-core.el:
+ Remove autoloads.
+ * lisp/emacs-lisp/eieio-compat.el,lisp/emacs-lisp/eieio-custom.el,
+ lisp/emacs-lisp/eieio-opt.el: Update file local.
+ * test/lisp/emacs-lisp/eieio-tests/eieio-tests.el: New test.
+
+2015-12-17 Phillip Lord <phillip.lord@russet.org.uk>
+
+ htmlfontify generate autoload to non-versioned file.
+
+ * lisp/Makefile.in: Add htmlfontity-loaddefs to autogenel.
+ * lisp/hfy-cmap.el: Update file local.
+ * lisp/htmlfontify.el: Remove autoloads, add require.
+ * test/lisp/htmlfontify-tests.el: Test autoload functionality.
+
+2015-12-17 Phillip Lord <phillip.lord@russet.org.uk>
+
+ ibuffer generate autoloads to non-versioned file.
+
+ * lisp/Makefile.in: Add ibuffer-loaddefs to autogenel.
+ * lisp/ibuf-ext.el: Update file local.
+ * lisp/ibuffer.el: Remove autoloads and add a require.
+ * test/lisp/ibuffer-tests.el: Test that autoload is working.
+
+2015-12-17 Phillip Lord <phillip.lord@russet.org.uk>
+
+ rmail generate autoloads to non-versioned file.
+
+ * lisp/Makefile.in: Add rmail-loaddefs.el to autogenel.
+ * lisp/mail/rmail.el: Remove autoloads, add require.
+ * lisp/mail/rmailedit.el,lisp/mail/rmailkwd.el,
+ lisp/mail/rmailmm.el,lisp/mail/rmailmsc.el,
+ lisp/mail/rmailsort.el,lisp/mail/rmailsum.el,
+ lisp/mail/undigest.el: Update file-local.
+ * test/lisp/mail/rmail-tests.el:
+
+2015-12-17 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Add autoload-force target.
+
+ * lisp/Makefile.in (autoload-force): New target.
+
+2015-12-17 Phillip Lord <phillip.lord@russet.org.uk>
+
+ ps-print generate autoloads to non versioned file.
+
+ * lisp/Makefile.in: Add ps-print-loaddefs.el to autogen list.
+ * lisp/ps-print.el: Remove autoloads.
+ * lisp/ps-mule.el: Update file-local.
+ * test/lisp/ps-print-tests.el: Test autoload functionality.
+
+2015-12-17 Phillip Lord <phillip.lord@russet.org.uk>
+
+ reftex generate autoloads to non versioned file.
+
+ * lisp/Makefile.in: Add reftex-loaddefs to autogen files
+ * lisp/textmodes/reftex.el: Remove autoloads.
+ * lisp/textmodes/reftex-auc.el,lisp/textmodes/reftex-cite.el,
+ lisp/textmodes/reftex-dcr.el,lisp/textmodes/reftex-global.el,
+ lisp/textmodes/reftex-index.el,lisp/textmodes/reftex-parse.el,
+ lisp/textmodes/reftex-ref.el,lisp/textmodes/reftex-sel.el,
+ lisp/textmodes/reftex-toc.el: Update autoload file-local.
+ * test/lisp/textmodes/reftex-tests.el: Add test of an autoloaded
+ function.
+
+2015-12-07 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/calculator.el (calculator-define-key): Undo last change
+
+ Make map argument mandatory instead (bug#22106).
+ (calculator-add-operators): Pass the argument that's not optional any more.
+
+2015-12-03 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in: Avoid duplication.
+
+ (have-tests): New rule.
+ (check, check-maybe): Use it.
+
+2015-12-02 Phillip Lord <phillip.lord@russet.org.uk>
+
+ make check unconditional, check-maybe top-level.
+
+ * Makefile.in: Add check-maybe target.
+ * test/Makefile.in: Restore unconditional behavior to make check.
+
+2015-12-01 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Tests now support out-of-source-build.
+
+ * tests/Makefile.in,test/make-test-deps.emacs-lisp: Remove assumptions
+ about current working directory.
+
+2015-12-01 Artur Malabarba <bruce.connor.am@gmail.com>
+
+ * lisp/emacs-lisp/let-alist.el: Now an Elpa :core package
+
+2015-11-30 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Improve documentation and clean up.
+
+ * test/Makefile.in: Improve documentation, use EMACS variable
+ correctly, and clean up makefile rules.
+
+2015-11-30 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Update file headers for name change.
+
+ * (test/src/decompress-tests.el, test/src/alloc-tests.el): Update headers.
+
+2015-11-30 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Test files renamed to new scheme.
+
+ * (finalizer-tests.el): Now renamed alloc-tests.el
+ * (zlib-tests.el): Now renamed decompress-tests.el.
+
+2015-11-30 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Tests now depend on source files
+
+ * test/Makefile.in: Include dependences from tests to source files.
+ * test/make-test-deps.emacs-lisp: New file
+ * .gitignore: Ignore generated make include file
+
+2015-11-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/progmodes/which-func.el: Improve disabling the mode
+
+ Use lexical-binding.
+ (which-func-modes, which-func-non-auto-modes, which-func-maxout)
+ (which-func, which-func-format): Remove redundant :group arg.
+ (which-func-try-to-enable): New function.
+ (which-func-ff-hook, which-function-mode): Use it.
+ (mode-line-misc-info): Add ourselves here instead of in bindings.el.
+ * lisp/bindings.el (mode-line-misc-info): Remove which-func-mode entry.
+
+2015-11-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/calculator.el (calculator-define-key): Silence warning
+
+ ...about unknown calculator-mode-map.
+
+2015-11-29 Eli Barzilay <eli@barzilay.org>
+
+ * lisp/calculator.el: more improvements and bugfixes.
+
+ - Mark `calculator-paste-decimals' as obsolete. (It wasn't having an
+ effect anyway.)
+
+ - Simplify `calculator-number-to-string' by throwing most of the work
+ onto `number-to-string', leaving just some tweaks for decimal inputs.
+ This leads to some minor changes, for example, pasting "1x1" in hex
+ mode would warn that "x" is ignored and result in "11" (and it wasn't
+ done in decimal mode), whereas now it just ignores everything from the
+ "x" and on and result in a "1" just like in decimal input mode. Also,
+ overflows are left for `number-to-string' to deal with.
+
+ - `calculator-paste' is very simple as a result.
+
+ - Extend the simplified `calculator-paste': with a prefix argument it
+ pastes a string as if the characters were entered. This can be used
+ to reduce expressions, but note that it's a simple literal operation,
+ so precedence can be messed, a number can be paster while entering a
+ number, spaces and newlines matter, etc.
+
+ - Fix a minor bug where "e+" in hex mode wouldn't use "+" as an
+ operator.
+
+ - Fix a bug in `calculator-put-value': avoid grouping in the display
+ that is used to construct `calculator-curnum'. This would trigger
+ when pasting or getting a value from a register in some radix mode
+ with a large enough value. Another fix: make the output radix equal
+ the input one, otherwise numbers could be converted twice.
+
+2015-11-29 Eli Barzilay <eli@barzilay.org>
+
+ * lisp/calculator.el: Re-do key bindings.
+
+ Use a helper function that arranges a parent keymap that binds alternate
+ case keys so if some letter key is unbound and it's un/shifted version
+ is, it will get used. This makes the global-map trickery unnecessary.
+
+ Also switch to passing strings that name keys through `kbd'.
+
+2015-11-29 Eli Barzilay <eli@barzilay.org>
+
+ * lisp/calculator.el: improve radix modes
+
+ Fix prompt for some input radix with decimal output (eg, "BD" instead of
+ the incorrect "B="); also, some minor docstring tweaks for these.
+
+2015-11-29 Eli Barzilay <eli@barzilay.org>
+
+ * lisp/calculator.el: better reading of register names
+
+ Use `register-read-with-preview' with a dynamically bound
+ `register-alist' and a proper preview function to read register names.
+
+2015-11-29 Eli Barzilay <eli@barzilay.org>
+
+ * lisp/calculator.el: General improvements
+
+ Use things like `when', `unless', and `push'.
+
+ Improve `calculator-last-input' so it doesn't barf when hitting `F1' in
+ non-electric mode.
+
+2015-11-28 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix a problem with gfilenotify in filenotify-tests.el
+
+ * test/lisp/filenotify-tests.el
+ (file-notify--test-expected-events): Remove.
+ (file-notify--test-cleanup): Do not set that variable.
+ (file-notify--test-with-events): EVENTS can also be a list of lists.
+ (file-notify-test02-events, file-notify-test04-file-validity):
+ Adapt expected result.
+
+2015-11-28 Eli Zaretskii <eliz@gnu.org>
+
+ * .gitignore: Adjust to changes in 'test' directory structure.
+
+2015-11-28 Eli Zaretskii <eliz@gnu.org>
+
+ Fix test/manual/etags/Makefile
+
+ * test/manual/etags/Makefile (ETAGS_PROG, CTAGS_PROG): Adjust to
+ changes in 'test' directory structure.
+
+2015-11-27 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Exclude resource dirs from search for tests.
+
+ * test/Makefile.in: Test file locations are now found with find
+ rather than using finds native functions.
+
+2015-11-27 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Add test targets without directory names.
+
+ * (test/Makefile.in): Extend test_template to add two targets for each
+ file.
+
+2015-11-27 Artur Malabarba <bruce.connor.am@gmail.com>
+
+ * lisp/emacs-lisp/package.el: Require url-handlers
+
+2015-11-27 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Move elisp-mode-tests to new function names.
+
+ * test/lisp/progmodes/elisp-mode-tests.el (find-defsdefun-c-defvar-c,
+ find-defs-defun-el-defvar-c): Call `elisp--xref-find-definitions'.
+
+2015-11-27 Juanma Barranquero <lekktu@gmail.com>
+
+ * lisp/emacs-lisp/package.el: Declare `url-insert-buffer-contents'
+
+2015-11-26 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Merge branch 'feature/standard-test-location'
+
+2015-11-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/emacs-lisp/eieio.el: Add some default implementations
+
+ (standard-class): Mark it obsolete.
+ (slot-missing): Give it a default implementation.
+ (destructor): Simplify and mark it obsolete.
+ (object-print): Give it a default implementation.
+ (eieio-change-class): Rename from change-class.
+ (change-class): Redefine as obsolete alias.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Some final fixes in file notification before merging with master
+
+ * lisp/filenotify.el (file-notify--rm-descriptor): Remove WHAT arg.
+ (file-notify-callback): Improve check for `stopped' event. Call
+ `file-notify-rm-watch' rather than `file-notify--rm-descriptor'.
+ (file-notify-add-watch): In case FILE is not a directory, call the
+ file monitor for the kqueue backend. Otherwise, call the
+ directory monitor for the upper directory.
+
+ * src/inotify.c (inotifyevent_to_event): Extract file name from
+ watch_object if the event doesn't provide it.
+ (Finotify_add_watch): Add file name to watch_object.
+
+ * test/automated/file-notify-tests.el (file-notify--test-timeout):
+ Use different timeouts for different libraries.
+ (file-notify--test-with-events): Suppress lock files. Flush
+ outstanding events before running the body.
+ (file-notify-test02-events, file-notify-test04-file-validity): Do
+ not skip cygwin tests. Add additional test for file creation.
+ Adapt expected result for different backends.
+ (file-notify-test03-autorevert): Some of the tests don't work for
+ w32notify.
+ (file-notify-test06-many-events): Rename into both directions.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Rework file notifications, kqueue has problems with directory monitors
+
+ * lisp/filenotify.el (file-notify-add-watch): Call the native
+ add-watch function on the file, not on the dir.
+
+ * src/kqueue.c (kqueue_compare_dir_list): Make also bookkeeping
+ about already deleted entries.
+
+ * test/automated/auto-revert-tests.el
+ (auto-revert-test01-auto-revert-several-files): Do not call "cp -f"
+ since this deletes the target file first.
+
+ * test/automated/file-notify-tests.el (file-notify--test-event-test):
+ Make stronger checks.
+ (file-notify-test01-add-watch, file-notify-test02-events)
+ (file-notify-test04-file-validity, file-notify-test05-dir-validity):
+ Rewrite in order to call file monitors but directory monitors.
+ (file-notify-test06-many-events): Ler rename work in both directions.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Continue with pending events
+
+ * src/kqueue.c (pending_events): Remove global variable.
+ (kqueue_compare_dir_list): Create `write' event for not used
+ pending events.
+ (globals_of_kqueue): Remove initialization of pending_events.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Improve loops in file-notify-test06-many-events
+
+ * test/automated/file-notify-tests.el (file-notify-test06-many-events):
+ Use `read-event' pauses for the `write-file' loops; otherwise
+ events are lost in inotify and gfilenotify cases.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Handle more complex rename operation in kqueue
+
+ * src/kqueue.c (pending_events): New variable.
+ (kqueue_compare_dir_list): Handle more complex rename operation.
+ (globals_of_kqueue): Initialize pending_events.
+
+ * test/automated/file-notify-tests.el (file-notify-test06-many-events):
+ Adapt expected events in the `rename-file' case.
+ (file-notify-test06-many-events-remote): Declare.
+
+2015-11-25 Wolfgang Jenkner <wjenkner@inode.at>
- Backport: * lisp/emacs-lisp/package.el: Refactor -with-work-buffer-async.
+ New test with a larger number of events
- (package--with-work-buffer-async): Reimplement as
- `package--with-response-buffer'.
- (package--with-work-buffer): Mark obsolete.
- (package--with-response-buffer): New macro. This is a more self
- contained and less contrived version of
- `package--with-work-buffer-async'. It uses keyword arguments,
- doesn't have async on the name, doesn't fallback on
- `package--with-work-buffer', and has _much_ simpler error
- handling. On master, this macro will soon be part of another
- library (either standalone or inside url.el), which is why this
- commit is not to be merged back.
+ * test/automated/file-notify-tests.el (file-notify--test-with-events):
+ Make timeout heuristically depend on the number of events.
+
+ (file-notify-test06-many-events): Use it for new test.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Further fixes for kqueue
+
+ * lisp/filenotify.el (file-notify-callback): Raise also event if
+ directory name matches.
+ (file-notify-add-watch): Add `create' to the flags for `kqueue'.
+
+ * src/kqueue.c (kqueue_generate_event): Use watch_object as
+ argument instead of ident. Remove callback argument. Adapt
+ callees. Check actions whether they are monitored flags.
+
+ * test/automated/file-notify-tests.el (file-notify--test-library):
+ New defun.
+ (file-notify-test00-availability, file-notify-test02-events)
+ (file-notify-test04-file-validity)
+ (file-notify-test05-dir-validity): Use it.
+ (file-notify-test02-events, file-notify-test04-file-validity): Add
+ `read-event' calls between different file actions, in order to
+ give the backends a chance to rais an event. Needed especially
+ for kqueue. In case of deleting a directory, there are two
+ `deleted' events.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Code cleanup of kqueue.c
+
+ * src/kqueue.c (kqueue_directory_listing): Skip "." and "..".
+ (kqueue_compare_dir_list): Do not loop when calling
+ directory_files_internal. Remove checks for "." and "..", this is
+ done in kqueue_directory_listing now.
+ (Fkqueue_add_watch): Check for proper emacs_open flags.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Doc changes for kqueue
+
+ * doc/lispref/os.texi (File Notifications): Add kqueue as backend.
+ Fix some glitches in the example.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Finish implementation in kqueue.c
+
+ * src/kqueue.c (kqueue_directory_listing, kqueue_callback):
+ Simplify access to list.
+ (kqueue_compare_dir_list): Simplify access to list. Raise
+ `delete' event if directory does not exist any longer. Otherwise,
+ wait until directory contents has changed. Fix error in check.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ * lisp/filenotify.el (file-notify-add-watch): Fix thinko.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ More work on kqueue
+
+ * lisp/filenotify.el (file-notify-callback): Handle also the
+ `rename' event from kqueue.
+ (file-notify-add-watch): Do not register an entry twice.
- (package--check-signature, package--download-one-archive)
- (package-install-from-archive, describe-package-1): Use it.
+ * src/kqueue.c (kqueue_directory_listing): New function.
+ (kqueue_generate_event): New argument FILE1. Adapt callees.
+ (kqueue_compare_dir_list): Rewrite in order to make it more robust.
- (package--download-and-read-archives): Let
- `package--download-one-archive' take care of calling
- `package--update-downloads-in-progress'.
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Implement directory events
+
+ * lisp/filenotify.el (file-notify-handle-event)
+ (file-notify-callback): Remove traces.
+
+ * src/kqueue.c: Include <sys/time.h>.
+ (kqueue_generate_event, kqueue_compare_dir_list): New functions.
+ (kqueue_callback): Use them. Call kevent() with a zero timeout.
+ (Fkqueue_add_watch): Adapt docstring. Support directory events.
+ Compute initial directory listing. Close file descriptor in case
+ of errors.
+ (syms_of_kqueue): Declare Qcreate.
+
+2015-11-25 Wolfgang Jenkner <wjenkner@inode.at>
+
+ Build fixes for kqueue support
+
+ * src/kqueue.c (Fkqueue_add_watch): O_BINARY is not a POSIX open(3)
+ flag.
+
+ * configure.ac (HAVE_KQUEUE): There is no pkg-config module for native
+ kqueue on *BSD.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Continue kqueue implementation
+
+ * lisp/filenotify.el (file-notify-handle-event)
+ (file-notify-callback): Enable trace messages.
+
+ * src/kqueue.c: Include also <sys/types.h>.
+ (kqueue_callback): Remove watch in case of NOTE_DELETE or NOTE_RENAME.
+ (Fkqueue_rm_watch, Fkqueue_valid_p): New functions.
+ (syms_of_kqueue): Add them.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Work on kqueue
+
+ * lisp/filenotify.el (file-notify--library)
+ (file-notify-descriptors, file-notify-callback)
+ (file-notify-add-watch, file-notify-rm-watch)
+ (file-notify-valid-p): Add kqueue support.
+
+ * src/keyboard.c (make_lispy_event): Check also for HAVE_KQUEUE.
+
+2015-11-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Add kqueue support
+
+ * configure.ac (--with-file-notification): Add kqueue.
+ (top): Remove special test for "${HAVE_NS}" and
+ ${with_file_notification}, this is handled inside gfilenotify
+ tests. Add kqueue tests. Use NOTIFY_CFLAGS and NOTIFY_LIBS
+ instead of library specific variables.
+
+ * src/Makefile.in: Use NOTIFY_CFLAGS and NOTIFY_LIBS.
+
+ * src/emacs.c (main): Call globals_of_kqueue and syms_of_kqueue.
+
+ * src/kqueue.c: New file.
+
+ * src/lisp.h: Declare extern globals_of_kqueue and syms_of_kqueue.
+
+2015-11-24 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Update elisp-mode-tests for changed file location.
+
+ * test/lisp/progmodes/elisp-mode-tests.el:
+
+2015-11-24 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Exclude manual tests from Makefile
+
+ * test/Makefile.in:
+
+2015-11-24 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Move package test files to new directory.
+
+ * test/lisp/emacs-lisp/package-tests.el: Update resoruce file location.
+ * test/data/package: Moved to test/lisp/emacs-lisp/package-resources
+
+2015-11-24 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Restore delete Makefiles and fix .gitignore.
+
+ * .gitignore: Update Makefiles to changed locations
+ * test/lisp/progmodes/flymake-resources/Makefile,
+ test/manual/etags/Makefile,
+ test/manual/etags/make-src/Makefile,
+ test/manual/indent/Makefile: Restored and moved to new location.
+
+2015-11-24 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Test infrastructure: updates after directory move
+
+ * (test/Makefile.in): Support directories several levels deep.
+ * (test/data/flymake): Rename to test/lisp/progmodes/flymake-resources.
+ * (test/lisp/progmodes/flymake-tests.el): Support renamed resource directory.
+
+2015-11-24 Phillip Lord <phillip.lord@russet.org.uk>
+
+ Rename all test files to reflect source layout.
+
+ * CONTRIBUTE,Makefile.in,configure.ac: Update to reflect
+ test directory moves.
+ * test/file-organisation.org: New file.
+ * test/automated/Makefile.in
+ test/automated/data/decompress/foo.gz
+ test/automated/data/epg/pubkey.asc
+ test/automated/data/epg/seckey.asc
+ test/automated/data/files-bug18141.el.gz
+ test/automated/data/flymake/test.c
+ test/automated/data/flymake/test.pl
+ test/automated/data/package/archive-contents
+ test/automated/data/package/key.pub
+ test/automated/data/package/key.sec
+ test/automated/data/package/multi-file-0.2.3.tar
+ test/automated/data/package/multi-file-readme.txt
+ test/automated/data/package/newer-versions/archive-contents
+ test/automated/data/package/newer-versions/new-pkg-1.0.el
+ test/automated/data/package/newer-versions/simple-single-1.4.el
+ test/automated/data/package/package-test-server.py
+ test/automated/data/package/signed/archive-contents
+ test/automated/data/package/signed/archive-contents.sig
+ test/automated/data/package/signed/signed-bad-1.0.el
+ test/automated/data/package/signed/signed-bad-1.0.el.sig
+ test/automated/data/package/signed/signed-good-1.0.el
+ test/automated/data/package/signed/signed-good-1.0.el.sig
+ test/automated/data/package/simple-depend-1.0.el
+ test/automated/data/package/simple-single-1.3.el
+ test/automated/data/package/simple-single-readme.txt
+ test/automated/data/package/simple-two-depend-1.1.el
+ test/automated/abbrev-tests.el
+ test/automated/auto-revert-tests.el
+ test/automated/calc-tests.el
+ test/automated/icalendar-tests.el
+ test/automated/character-fold-tests.el
+ test/automated/comint-testsuite.el
+ test/automated/descr-text-test.el
+ test/automated/electric-tests.el
+ test/automated/cl-generic-tests.el
+ test/automated/cl-lib-tests.el
+ test/automated/eieio-test-methodinvoke.el
+ test/automated/eieio-test-persist.el
+ test/automated/eieio-tests.el
+ test/automated/ert-tests.el
+ test/automated/ert-x-tests.el
+ test/automated/generator-tests.el
+ test/automated/let-alist.el
+ test/automated/map-tests.el
+ test/automated/advice-tests.el
+ test/automated/package-test.el
+ test/automated/pcase-tests.el
+ test/automated/regexp-tests.el
+ test/automated/seq-tests.el
+ test/automated/subr-x-tests.el
+ test/automated/tabulated-list-test.el
+ test/automated/thunk-tests.el
+ test/automated/timer-tests.el
+ test/automated/epg-tests.el
+ test/automated/eshell.el
+ test/automated/faces-tests.el
+ test/automated/file-notify-tests.el
+ test/automated/auth-source-tests.el
+ test/automated/gnus-tests.el
+ test/automated/message-mode-tests.el
+ test/automated/help-fns.el
+ test/automated/imenu-test.el
+ test/automated/info-xref.el
+ test/automated/mule-util.el
+ test/automated/isearch-tests.el
+ test/automated/json-tests.el
+ test/automated/bytecomp-tests.el
+ test/automated/coding-tests.el
+ test/automated/core-elisp-tests.el
+ test/automated/decoder-tests.el
+ test/automated/files.el
+ test/automated/font-parse-tests.el
+ test/automated/lexbind-tests.el
+ test/automated/occur-tests.el
+ test/automated/process-tests.el
+ test/automated/syntax-tests.el
+ test/automated/textprop-tests.el
+ test/automated/undo-tests.el
+ test/automated/man-tests.el
+ test/automated/completion-tests.el
+ test/automated/dbus-tests.el
+ test/automated/newsticker-tests.el
+ test/automated/sasl-scram-rfc-tests.el
+ test/automated/tramp-tests.el
+ test/automated/obarray-tests.el
+ test/automated/compile-tests.el
+ test/automated/elisp-mode-tests.el
+ test/automated/f90.el
+ test/automated/flymake-tests.el
+ test/automated/python-tests.el
+ test/automated/ruby-mode-tests.el
+ test/automated/subword-tests.el
+ test/automated/replace-tests.el
+ test/automated/simple-test.el
+ test/automated/sort-tests.el
+ test/automated/subr-tests.el
+ test/automated/reftex-tests.el
+ test/automated/sgml-mode-tests.el
+ test/automated/tildify-tests.el
+ test/automated/thingatpt.el
+ test/automated/url-future-tests.el
+ test/automated/url-util-tests.el
+ test/automated/add-log-tests.el
+ test/automated/vc-bzr.el
+ test/automated/vc-tests.el
+ test/automated/xml-parse-tests.el
+ test/BidiCharacterTest.txt
+ test/biditest.el
+ test/cedet/cedet-utests.el
+ test/cedet/ede-tests.el
+ test/cedet/semantic-ia-utest.el
+ test/cedet/semantic-tests.el
+ test/cedet/semantic-utest-c.el
+ test/cedet/semantic-utest.el
+ test/cedet/srecode-tests.el
+ test/cedet/tests/test.c
+ test/cedet/tests/test.el
+ test/cedet/tests/test.make
+ test/cedet/tests/testdoublens.cpp
+ test/cedet/tests/testdoublens.hpp
+ test/cedet/tests/testfriends.cpp
+ test/cedet/tests/testjavacomp.java
+ test/cedet/tests/testnsp.cpp
+ test/cedet/tests/testpolymorph.cpp
+ test/cedet/tests/testspp.c
+ test/cedet/tests/testsppcomplete.c
+ test/cedet/tests/testsppreplace.c
+ test/cedet/tests/testsppreplaced.c
+ test/cedet/tests/testsubclass.cpp
+ test/cedet/tests/testsubclass.hh
+ test/cedet/tests/testtypedefs.cpp
+ test/cedet/tests/testvarnames.c
+ test/etags/CTAGS.good
+ test/etags/ETAGS.good_1
+ test/etags/ETAGS.good_2
+ test/etags/ETAGS.good_3
+ test/etags/ETAGS.good_4
+ test/etags/ETAGS.good_5
+ test/etags/ETAGS.good_6
+ test/etags/a-src/empty.zz
+ test/etags/a-src/empty.zz.gz
+ test/etags/ada-src/2ataspri.adb
+ test/etags/ada-src/2ataspri.ads
+ test/etags/ada-src/etags-test-for.ada
+ test/etags/ada-src/waroquiers.ada
+ test/etags/c-src/a/b/b.c
+ test/etags/c-src/abbrev.c
+ test/etags/c-src/c.c
+ test/etags/c-src/dostorture.c
+ test/etags/c-src/emacs/src/gmalloc.c
+ test/etags/c-src/emacs/src/keyboard.c
+ test/etags/c-src/emacs/src/lisp.h
+ test/etags/c-src/emacs/src/regex.h
+ test/etags/c-src/etags.c
+ test/etags/c-src/exit.c
+ test/etags/c-src/exit.strange_suffix
+ test/etags/c-src/fail.c
+ test/etags/c-src/getopt.h
+ test/etags/c-src/h.h
+ test/etags/c-src/machsyscalls.c
+ test/etags/c-src/machsyscalls.h
+ test/etags/c-src/sysdep.h
+ test/etags/c-src/tab.c
+ test/etags/c-src/torture.c
+ test/etags/cp-src/MDiagArray2.h
+ test/etags/cp-src/Range.h
+ test/etags/cp-src/burton.cpp
+ test/etags/cp-src/c.C
+ test/etags/cp-src/clheir.cpp.gz
+ test/etags/cp-src/clheir.hpp
+ test/etags/cp-src/conway.cpp
+ test/etags/cp-src/conway.hpp
+ test/etags/cp-src/fail.C
+ test/etags/cp-src/functions.cpp
+ test/etags/cp-src/screen.cpp
+ test/etags/cp-src/screen.hpp
+ test/etags/cp-src/x.cc
+ test/etags/el-src/TAGTEST.EL
+ test/etags/el-src/emacs/lisp/progmodes/etags.el
+ test/etags/erl-src/gs_dialog.erl
+ test/etags/f-src/entry.for
+ test/etags/f-src/entry.strange.gz
+ test/etags/f-src/entry.strange_suffix
+ test/etags/forth-src/test-forth.fth
+ test/etags/html-src/algrthms.html
+ test/etags/html-src/index.shtml
+ test/etags/html-src/software.html
+ test/etags/html-src/softwarelibero.html
+ test/etags/lua-src/allegro.lua
+ test/etags/objc-src/PackInsp.h
+ test/etags/objc-src/PackInsp.m
+ test/etags/objc-src/Subprocess.h
+ test/etags/objc-src/Subprocess.m
+ test/etags/objcpp-src/SimpleCalc.H
+ test/etags/objcpp-src/SimpleCalc.M
+ test/etags/pas-src/common.pas
+ test/etags/perl-src/htlmify-cystic
+ test/etags/perl-src/kai-test.pl
+ test/etags/perl-src/yagrip.pl
+ test/etags/php-src/lce_functions.php
+ test/etags/php-src/ptest.php
+ test/etags/php-src/sendmail.php
+ test/etags/prol-src/natded.prolog
+ test/etags/prol-src/ordsets.prolog
+ test/etags/ps-src/rfc1245.ps
+ test/etags/pyt-src/server.py
+ test/etags/tex-src/gzip.texi
+ test/etags/tex-src/nonewline.tex
+ test/etags/tex-src/testenv.tex
+ test/etags/tex-src/texinfo.tex
+ test/etags/y-src/atest.y
+ test/etags/y-src/cccp.c
+ test/etags/y-src/cccp.y
+ test/etags/y-src/parse.c
+ test/etags/y-src/parse.y
+ test/indent/css-mode.css
+ test/indent/js-indent-init-dynamic.js
+ test/indent/js-indent-init-t.js
+ test/indent/js-jsx.js
+ test/indent/js.js
+ test/indent/latex-mode.tex
+ test/indent/modula2.mod
+ test/indent/nxml.xml
+ test/indent/octave.m
+ test/indent/pascal.pas
+ test/indent/perl.perl
+ test/indent/prolog.prolog
+ test/indent/ps-mode.ps
+ test/indent/ruby.rb
+ test/indent/scheme.scm
+ test/indent/scss-mode.scss
+ test/indent/sgml-mode-attribute.html
+ test/indent/shell.rc
+ test/indent/shell.sh
+ test/redisplay-testsuite.el
+ test/rmailmm.el
+ test/automated/buffer-tests.el
+ test/automated/cmds-tests.el
+ test/automated/data-tests.el
+ test/automated/finalizer-tests.el
+ test/automated/fns-tests.el
+ test/automated/inotify-test.el
+ test/automated/keymap-tests.el
+ test/automated/print-tests.el
+ test/automated/libxml-tests.el
+ test/automated/zlib-tests.el: Files Moved.
+
+2015-11-20 Michael Albinus <michael.albinus@gmx.de>
+
+ Rework file notifications, kqueue has problems with directory monitors
+
+ * lisp/filenotify.el (file-notify-add-watch): Call the native
+ add-watch function on the file, not on the dir.
+
+ * src/kqueue.c (kqueue_compare_dir_list): Make also bookkeeping
+ about already deleted entries.
+
+ * test/automated/auto-revert-tests.el
+ (auto-revert-test01-auto-revert-several-files): Do not call "cp -f"
+ since this deletes the target file first.
+
+ * test/automated/file-notify-tests.el (file-notify--test-event-test):
+ Make stronger checks.
+ (file-notify-test01-add-watch, file-notify-test02-events)
+ (file-notify-test04-file-validity, file-notify-test05-dir-validity):
+ Rewrite in order to call file monitors but directory monitors.
+ (file-notify-test06-many-events): Ler rename work in both directions.
+
+2015-11-19 Michael Albinus <michael.albinus@gmx.de>
+
+ Continie with pending events
+
+ * src/kqueue.c (pending_events): Remove global variable.
+ (kqueue_compare_dir_list): Create `write' event for not used
+ pending events.
+ (globals_of_kqueue): Remove initialization of pending_events.
+
+2015-11-19 Michael Albinus <michael.albinus@gmx.de>
+
+ Improve loops in file-notify-test06-many-events
+
+ * test/automated/file-notify-tests.el (file-notify-test06-many-events):
+ Use `read-event' pauses for the `write-file' loops; otherwise
+ events are lost in inotify and gfilenotify cases.
+
+2015-11-19 Michael Albinus <michael.albinus@gmx.de>
+
+ Handle more complex rename operation in kqueue
+
+ * src/kqueue.c (pending_events): New variable.
+ (kqueue_compare_dir_list): Handle more complex rename operation.
+ (globals_of_kqueue): Initialize pending_events.
+
+ * test/automated/file-notify-tests.el (file-notify-test06-many-events):
+ Adapt expected events in the `rename-file' case.
+ (file-notify-test06-many-events-remote): Declare.
+
+2015-11-18 Wolfgang Jenkner <wjenkner@inode.at>
+
+ New test with a larger number of events.
+
+ * test/automated/file-notify-tests.el (file-notify--test-with-events):
+ Make timeout heuristically depend on the number of events.
+
+ (file-notify-test06-many-events): Use it for new test.
+
+2015-11-18 Michael Albinus <michael.albinus@gmx.de>
+
+ Further fixes for kqueue.
+
+ * lisp/filenotify.el (file-notify-callback): Raise also event if
+ directory name matches.
+ (file-notify-add-watch): Add `create' to the flags for `kqueue'.
+
+ * src/kqueue.c (kqueue_generate_event): Use watch_object as
+ argument instead of ident. Remove callback argument. Adapt
+ callees. Check actions whether they are monitored flags.
+
+ * test/automated/file-notify-tests.el (file-notify--test-library):
+ New defun.
+ (file-notify-test00-availability, file-notify-test02-events)
+ (file-notify-test04-file-validity)
+ (file-notify-test05-dir-validity): Use it.
+ (file-notify-test02-events, file-notify-test04-file-validity): Add
+ `read-event' calls between different file actions, in order to
+ give the backends a chance to rais an event. Needed especially
+ for kqueue. In case of deleting a directory, there are two
+ `deleted' events.
+
+2015-11-17 Michael Albinus <michael.albinus@gmx.de>
+
+ Code cleanup of kqueue.c
+
+ * src/kqueue.c (kqueue_directory_listing): Skip "." and "..".
+ (kqueue_compare_dir_list): Do not loop when calling
+ directory_files_internal. Remove checks for "." and "..", this is
+ done in kqueue_directory_listing now.
+ (Fkqueue_add_watch): Check for proper emacs_open flags.
+
+2015-11-16 Michael Albinus <michael.albinus@gmx.de>
+
+ Doc changes for kqueue
+
+ * doc/lispref/os.texi (File Notifications): Add kqueue as backend.
+ Fix some glitches in the example.
+
+2015-11-16 Michael Albinus <michael.albinus@gmx.de>
+
+ Finish implementation in kqueue.c
+
+ * src/kqueue.c (kqueue_directory_listing, kqueue_callback):
+ Simplify access to list.
+ (kqueue_compare_dir_list): Simplify access to list. Raise
+ `delete' event if directory does not exist any longer. Otherwise,
+ wait until directory contents has changed. Fix error in check.
+
+2015-11-16 Michael Albinus <michael.albinus@gmx.de>
+
+ * lisp/filenotify.el (file-notify-add-watch): Fix thinko.
+
+2015-11-15 Michael Albinus <michael.albinus@gmx.de>
+
+ More work on kqueue
+
+ * lisp/filenotify.el (file-notify-callback): Handle also the
+ `rename' event from kqueue.
+ (file-notify-add-watch): Do not register an entry twice.
+
+ * src/kqueue.c (kqueue_directory_listing): New function.
+ (kqueue_generate_event): New argument FILE1. Adapt callees.
+ (kqueue_compare_dir_list): Rewrite in order to make it more robust.
+
+2015-11-14 Michael Albinus <michael.albinus@gmx.de>
+
+ Implement directory events
+
+ * lisp/filenotify.el (file-notify-handle-event)
+ (file-notify-callback): Remove traces.
+
+ * src/kqueue.c: Include <sys/time.h>.
+ (kqueue_generate_event, kqueue_compare_dir_list): New functions.
+ (kqueue_callback): Use them. Call kevent() with a zero timeout.
+ (Fkqueue_add_watch): Adapt docstring. Support directory events.
+ Compute initial directory listing. Close file descriptor in case
+ of errors.
+ (syms_of_kqueue): Declare Qcreate.
+
+2015-11-11 Wolfgang Jenkner <wjenkner@inode.at>
+
+ Build fixes for kqueue support.
+
+ * src/kqueue.c (Fkqueue_add_watch): O_BINARY is not a POSIX open(3)
+ flag.
+
+ * configure.ac (HAVE_KQUEUE): There is no pkg-config module for native
+ kqueue on *BSD.
+
+2015-11-11 Michael Albinus <michael.albinus@gmx.de>
+
+ Continue kqueue implementation
+
+ * lisp/filenotify.el (file-notify-handle-event)
+ (file-notify-callback): Enable trace messages.
+
+ * src/kqueue.c: Include also <sys/types.h>.
+ (kqueue_callback): Remove watch in case of NOTE_DELETE or NOTE_RENAME.
+ (Fkqueue_rm_watch, Fkqueue_valid_p): New functions.
+ (syms_of_kqueue): Add them.
+
+2015-11-11 Michael Albinus <michael.albinus@gmx.de>
+
+ Work on kqueue
+
+ * lisp/filenotify.el (file-notify--library)
+ (file-notify-descriptors, file-notify-callback)
+ (file-notify-add-watch, file-notify-rm-watch)
+ (file-notify-valid-p): Add kqueue support.
+
+ * src/keyboard.c (make_lispy_event): Check also for HAVE_KQUEUE.
+
+2015-11-11 Michael Albinus <michael.albinus@gmx.de>
+
+ Add kqueue support
+
+ * configure.ac (--with-file-notification): Add kqueue.
+ (top): Remove special test for "${HAVE_NS}" and
+ ${with_file_notification}, this is handled inside gfilenotify
+ tests. Add kqueue tests. Use NOTIFY_CFLAGS and NOTIFY_LIBS
+ instead of library specific variables.
+
+ * src/Makefile.in: Use NOTIFY_CFLAGS and NOTIFY_LIBS.
+
+ * src/emacs.c (main): Call globals_of_kqueue and syms_of_kqueue.
+
+ * src/kqueue.c: New file.
+
+ * src/lisp.h: Declare extern globals_of_kqueue and syms_of_kqueue.
+
+2015-11-21 Wilson Snyder <wsnyder@wsnyder.org>
+
+ verilog-mode.el: Commentary and fix pre-Emacs 21 behavior.
+
+ * verilog-mode.el (verilog-save-font-no-change-functions):
+ Commentary and fix pre-Emacs 21 behavior.
+
+2015-11-19 Przemysław Wojnowski <esperanto@cumego.com>
+
+ Use obarray functions from obarray.
+
+ * lisp/abbrev.el (copy-abbrev-table, abbrev-table-p, make-abbrev-table,
+ abbrev-table-get, abbrev-table-put, abbrev-table-empty-p,
+ clear-abbrev-table, define-abbrev, abbrev--symbol, abbrev-table-menu):
+ delegate to obarray.el functions.
+ * lisp/loadup.el: load obarray before abbrev
+ * test/automated/abbrev-tests.el: new tests
+
+2015-11-18 Christian Schwarzgruber <c.schwarzgruber.cs@gmail.com> (tiny change)
+
+ epa.el: Add option to replace original text
+
+ * lisp/epa.el (epa-replace-original-text): New user option.
+ (Bug#21947)
+
+2015-11-18 Mark Oteiza <mvoteiza@udel.edu>
+
+ Add interactive seek command.
+
+ * lisp/mpc.el (mpc-cmd-seekcur): New function.
+ (mpc-seek-current): New command.
+ (mpc-mode-menu): Add entry for mpc-seek-current
+ (mpc-mode-map): Bind mpc-seek-current to "g"
+
+2015-11-18 Mark Oteiza <mvoteiza@udel.edu>
+
+ Fix issue where a new tempfile was created every refresh
+
+ * lisp/mpc.el (mpc-format): Leave dir as relative path
+
+2015-11-18 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/progmodes/cc-defs.el: Use with-silent-modifications
+
+ (c-save-buffer-state): Use with-silent-modifications when available.
+ (c--macroexpand-all): Check macroexpand-all directly rather than
+ c--mapcan-status.
+
+2015-11-18 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/loadup.el: Set max-lisp-eval-depth here
+
+ * lisp/Makefile.in (BIG_STACK_DEPTH, BIG_STACK_OPTS): Remove.
+ (BYTE_COMPILE_FLAGS): Adjust accordingly.
+
+2015-11-17 João Távora <joaotavora@gmail.com>
+
+ Minor fix to comment indentation and typo in last commit
+
+ * linum.el (linum-update-window): Fix comment indentation and a
+ typo.
+
+2015-11-17 João Távora <joaotavora@gmail.com>
+
+ linum-mode plays more nicely with other margin-setting extensions
+
+ linum.el will only modify the left margin if it needs to, and will
+ only reset the it back to 0 if it guesses that no-one has touched that
+ margin in the meantime.
+
+ As such, this is a more of a workaround than an actual fix, but fixes
+ the problems described in bug#20674 regarding the interaction with
+ modes such as darkroom-mode and olivetti-mode.
+
+ A similar fix was commited to nlinum.el in ELPA.git's
+ e7f5f549fbfb740b911fb7f33b42381ecece56d8
+
+ * linum.el (linum-delete-overlays): Restore margins more
+ criteriously.
+ (linum-update-window): Set margins more criteriously.
+
+2015-11-16 Daiki Ueno <ueno@gnu.org>
+
+ * lisp/image-mode.el: Support encrypted file
+
+ (image-toggle-display-image): Read content from the buffer instead
+ of the file, if the buffer holds a decrypted data. (Bug#21870)
+
+2015-11-15 Juanma Barranquero <lekktu@gmail.com>
+
+ * lisp/progmodes/verilog-mode.el (verilog-save-buffer-state): Add backquote
+
+2015-11-15 Artur Malabarba <bruce.connor.am@gmail.com>
+
+ * lisp/emacs-lisp/package.el: Fix a decoding issue
+
+ (package--with-response-buffer): Use `url-insert-buffer-contents'.
+ The previous code had some issues with decoding. Refactoring that
+ function allows us to use the decoding from url-handlers while still
+ treating both sync and async requests the same.
+
+ * lisp/url/url-handlers.el (url-insert-file-contents): Move some code to
+ `url-insert-buffer-contents'.
+ (url-insert-buffer-contents): New function
+
+2015-11-15 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/progmodes/verilog-mode.el: Use with-silent-modifications
+
+ (verilog-save-buffer-state): Use with-silent-modifications when available.
+ (verilog-save-font-no-change-functions): Don't bind
+ before/after-change-functions if it's not needed.
+
+2015-11-14 Xue Fuqiao <xfq.free@gmail.com>
+
+ * CONTRIBUTE: Remove information about feature freeze.
+
+ Merge branch 'release-process-lowercase'
+
+2015-11-14 Xue Fuqiao <xfq.free@gmail.com>
+
+ Document the release process
+
+ * admin/notes/versioning: Add information about RC releases.
+ * admin/release-process: Document the release process.
+ * admin/authors.el (authors-ignored-files):
+ * admin/README: Change FOR-RELEASE to release-process.
+ * CONTRIBUTE:
+ * admin/notes/bugtracker: Don't mention FOR-RELEASE.
+
+2015-11-14 Xue Fuqiao <xfq.free@gmail.com>
+
+ * admin/release-process: Rename from admin/FOR-RELEASE.
+
+2015-11-14 David Engster <deng@randomsample.de>
+
+ gitmerge: Fix git log command
+
+ * admin/gitmerge.el (gitmerge-missing): Use '--left-only' since we
+ only want commits from the branch that is to be merged.
+ (gitmerge-setup-log-buffer): Use the same symmetric range as in
+ `gitmerge-missing'.
+
+2015-11-14 David Engster <deng@randomsample.de>
+
+ gitmerge: Try to detect cherry-picks
+
+ * admin/gitmerge.el (gitmerge-default-branch): Change to
+ origin/emacs-25.
+ (gitmerge-missing): Use symmetric difference ('...') between
+ branch and master so that cherry-picks can be detected.
2015-11-14 Eli Zaretskii <eliz@gnu.org>
- * CONTRIBUTE (Branches): Improve wording for back-ported commits.
+ Increment Emacs version on master branch
-2015-11-14 Dmitry Gutov <dgutov@yandex.ru>
+ * lisp/cus-edit.el (customize-changed-options-previous-release):
+ Increase previous version to 24.5.
- Merge branch 'master' into emacs-25
+ * configure.ac:
+ * msdos/sed2v2.inp: Bump version to 25.1.50.
-2015-11-14 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-14 Xue Fuqiao <xfq.free@gmail.com>
+
+ Mention CONTRIBUTE in README, since it was moved from etc/ to root.
+ * etc/TODO: Remove the reference to `etc/CONTRIBUTE'.
+ * README: Mention CONTRIBUTE.
+
+2015-11-13 Wilson Snyder <wsnyder@wsnyder.org>
+
+ Update verilog-mode.el to 2015-11-09-b121d60-vpo
+
+ * verilog-mode.el (verilog-auto, verilog-delete-auto)
+ (verilog-modi-cache-results, verilog-save-buffer-state)
+ (verilog-save-font-no-change-functions): When internally suppressing
+ change functions, use `inhibit-modification-hooks' and call
+ `after-change-funtions' to more nicely work with user hooks.
+ Reported by Stefan Monnier.
+ (verilog-auto, verilog-delete-auto, verilog-delete-auto-buffer):
+ Create `verilog-delete-auto-buffer' to avoid double-calling
+ fontification hooks.
+ (verilog-restore-buffer-modified-p, verilog-auto)
+ (verilog-save-buffer-state): Prefer restore-buffer-modified-p over
+ set-buffer-modified-p. Reported by Stefan Monnier.
+ (verilog-diff-auto, verilog-diff-buffers-p)
+ (verilog-diff-ignore-regexp): Add `verilog-diff-ignore-regexp'.
+ (verilog-auto-inst-port, verilog-read-sub-decls-expr): Fix
+ AUTOINST with unpacked dimensional parameters, bug981. Reported by
+ by Amol Nagapurkar.
+ (verilog-read-decls, verilog-read-sub-decls-line): Avoid unneeded
+ properties inside internal structures. No functional change
+ intended.
+
+2015-11-13 Dmitry Gutov <dgutov@yandex.ru>
Use generic dispatch for xref backends
@@ -14025,7 +18390,7 @@
(xref-backend-references, xref-backend-definitions)
(xref-backend-apropos): New generic methods.
-2015-11-14 Juri Linkov <juri@linkov.net>
+2015-11-13 Juri Linkov <juri@linkov.net>
Support rectangular regions for more commands
@@ -14058,7 +18423,7 @@
* src/casefiddle.c (Fdowncase_region): Add arg ‘region-noncontiguous-p’.
If non-nil, operate on multiple chunks. (Bug#19829)
-2015-11-14 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-13 Dmitry Gutov <dgutov@yandex.ru>
Handle multiple matches on the same line; add highlighting
@@ -14068,7 +18433,7 @@
Search for all matches in the hit line. Add `highlight' face to
the matched region in the summary. Update both callers.
-2015-11-14 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-13 Dmitry Gutov <dgutov@yandex.ru>
Replace xref-match-bounds with xref-match-length
@@ -14085,16 +18450,6 @@
(xref-query-replace): Ditto. And check that the search results
are up-to-date.
-2015-11-13 John Wiegley <johnw@newartisans.com>
-
- Merge remote-tracking branch 'origin/master' into emacs-25
-
-2015-11-13 l3thal <kwhite@gnu.org>
-
- Merge branch 'erc-async-reconnect' into emacs-25
-
- Reconnect asynchronously.
-
2015-11-13 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib
@@ -14114,138 +18469,6 @@
mflt_run to leave the output areas unchanged on failure, as
this isn’t part of its interface spec.
-2015-11-13 Eli Zaretskii <eliz@gnu.org>
-
- Merge branch 'emacs-25' of git.savannah.gnu.org:/srv/git/emacs into emacs-25
-
-2015-11-13 Paul Eggert <eggert@cs.ucla.edu>
-
- Port recent XCB changes to 64-bit ‘long int’
-
- For historical reasons, libX11 represents 32-bit values like Atoms as
- ‘long int’ even on platforms where ‘long int’ is 64 bits. XCB doesn’t
- do that, so adapt the recent XCB code to behave properly on 64-bit
- platforms. Also, fix what appears to be a bug in the interpretation
- of xcb_get_property_value_length, at least on my Fedora platform
- which is running libxcb-1.11-5.fc21.
- * src/xfns.c (x_real_pos_and_offsets):
- * src/xterm.c (get_current_wm_state):
- xcb_get_property_value_length returns a byte count, not a word count.
- For 32-bit quantities, xcb_get_property_value returns a vector
- of 32-bit words, not of (possibly 64-bit) long int.
-
- Backport.
-
-2015-11-13 Paul Eggert <eggert@cs.ucla.edu>
-
- * src/undo.c (run_undoable_change): Now static.
-
- Backport.
-
-2015-11-13 Eli Zaretskii <eliz@gnu.org>
-
- Remove support for ':timeout' from w32 tray notifications
-
- * src/w32fns.c (Fw32_notification_notify): Delete the code that
- supports ':timeout'.
- (syms_of_w32fns): Don't DEFSYM ':timeout'. This avoids clashes
- with dbusbind.c when D-Bus is compiled in.
-
- * doc/lispref/os.texi (Desktop Notifications): Don't mention
- ':timeout'.
-
- Backport.
-
-2015-11-13 Juanma Barranquero <lekktu@gmail.com>
-
- * test/automated/simple-test.el: Add test for bug#20698 (bug#21885)
-
- (simple-test--transpositions): New macro.
- (simple-transpose-subr): New test.
-
- Backport.
-
-2015-11-13 Juanma Barranquero <lekktu@gmail.com>
-
- * lisp/progmodes/elisp-mode.el: Declare function `project-roots'
-
- Backport.
-
-2015-11-13 Juanma Barranquero <lekktu@gmail.com>
-
- * src/undo.c: Small fixes for previous change
-
- (run_undoable_change): Mark void argument list.
- (record_property_change): Remove unused variable `boundary'.
-
- Backport.
-
-2015-11-13 Eli Zaretskii <eliz@gnu.org>
-
- Add a few more variables to redisplay--variables
-
- * lisp/frame.el (redisplay--variables): Add bidi-paragraph-direction
- and bidi-display-reordering to the list.
-
- Backport.
-
-2015-11-13 Eli Zaretskii <eliz@gnu.org>
-
- * lisp/loadup.el: Enlarge the size of the hash table to 80000.
-
- Backport.
-
-2015-11-13 Eli Barzilay <eli@barzilay.org>
-
- Fix point positioning after transposing with negative arg
-
- * lisp/simple.el (transpose-subr): When invoked with a negative
- argument, move point to after the transposed text, like we do
- when invoked with a positive argument. (Bug#21885)
-
- Backport.
-
-2015-11-13 Eli Zaretskii <eliz@gnu.org>
-
- Fix last change in shr.el
-
- * lisp/net/shr.el (shr--have-one-fringe-p): Rename from
- have-fringes-p. All callers changed. Doc fix. (Bug#21895)
-
- Backport.
-
-2015-11-13 Eli Zaretskii <eliz@gnu.org>
-
- Fix last change
-
- * src/w32fns.c (syms_of_w32fns) [WINDOWSNT && !HAVE_DBUS]:
- Don't DEFSYM tray notification symbols if D-Bus is being used.
-
- Backport.
-
-2015-11-13 Eli Zaretskii <eliz@gnu.org>
-
- Another fix for MinGW64 and Cygwin builds due to notifications
-
- * src/w32fns.c: Ifdef away tray notification code if D-Bus is
- being compiled into Emacs.
- (syms_of_w32fns) [WINDOWSNT && !HAVE_DBUS]: Don't defsubr
- Sw32_notification_notify and Sw32_notification_close if the code
- is not compiled. Reported by Andy Moreton <andrewjmoreton@gmail.com>.
-
- Backport.
-
-2015-11-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
-
- Remove intern calls and XXX comments from Fx_export_frames
-
- * src/xfns.c (Fx_export_frames): Use Qpdf, Qpng, Qpostscript, and
- Qsvg instead of intern calls. Use "postscript" instead of "ps"
- for consistency with image types. Remove XXX comments.
- (syms_of_xfns) <Qpdf>: DEFSYM it.
-
- Backport.
-
2015-11-13 Paul Eggert <eggert@cs.ucla.edu>
Port recent XCB changes to 64-bit ‘long int’
@@ -14266,7 +18489,7 @@
* src/undo.c (run_undoable_change): Now static.
-2015-11-13 Michael Albinus <michael.albinus@gmx.de>
+2016-01-30 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp version, do not merge with master
@@ -14344,7 +18567,8 @@
Sw32_notification_notify and Sw32_notification_close if the code
is not compiled. Reported by Andy Moreton <andrewjmoreton@gmail.com>.
-2015-11-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2016-01-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2015-11-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Remove intern calls and XXX comments from Fx_export_frames
@@ -14353,7 +18577,8 @@
for consistency with image types. Remove XXX comments.
(syms_of_xfns) <Qpdf>: DEFSYM it.
-2015-11-13 Eric Hanchrow <eric.hanchrow@gmail.com>
+2016-01-30 Eric Hanchrow <eric.hanchrow@gmail.com>
+2015-11-12 Eric Hanchrow <eric.hanchrow@gmail.com>
shr: don't invoke unbound function (Bug#21895)
@@ -14368,13 +18593,17 @@
entry to its initial value to make the test repeatable in interactive
sessions (assuming it doesn't fail and crashes Emacs, of course).
-2015-11-13 Artur Malabarba <bruce.connor.am@gmail.com>
+2016-01-30 Artur Malabarba <bruce.connor.am@gmail.com>
* test/automated/cl-lib-tests.el (cl-lib-struct-constructors): Small fix
-2015-11-12 Phillip Lord <phillip.lord@russet.org.uk>
+2016-01-30 Phillip Lord <phillip.lord@russet.org.uk>
: Tests for undo-auto functionality.
+2015-11-12 Artur Malabarba <bruce.connor.am@gmail.com>
+
+ * test/automated/cl-lib-tests.el (cl-lib-struct-constructors):
+ Small fix.
2015-11-12 Phillip Lord <phillip.lord@newcastle.ac.uk>
@@ -14498,7 +18727,7 @@
better with a "^" in the `interactive' declaration so selection works
as expected.
-2015-11-12 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2016-01-30 Thomas Fitzsimmons <fitzsim@fitzsim.org>
Sync with soap-client repository, version 3.0.2
@@ -14515,6 +18744,23 @@
* lisp/net/soap-inspect.el: Remove version header.
* lisp/net/soap-client.el, lisp/net/soap-inspect.el: Fix first line header
+2015-11-11 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+
+ Sync with soap-client repository, version 3.0.2
+
+ * soap-client.el: Bump version to 3.0.2.
+
+ * soap-client.el (soap-warning): Use format, not format-message.
+
+ * soap-client.el: Add cl-lib to Package-Requires. Require cl-lib.
+ (soap-validate-xs-simple-type): Use cl-labels instead of cl-flet.
+
+ * soap-client.el: Support Emacs versions that do not have
+ define-error.
+
+ * soap-inspect.el: Remove version header.
+
+ * soap-client.el, soap-inspect.el, jira2.el: Fix first line header
format.
2015-11-11 Alan Mackenzie <acm@muc.de>
@@ -14599,7 +18845,7 @@
* doc/lispref/os.texi (Desktop Notifications): Describe the native
w32 tray notifications.
-2015-11-11 Alan Mackenzie <acm@muc.de>
+2016-01-30 Alan Mackenzie <acm@muc.de>
First commit to scratch/follow. Make Isearch work with Follow Mode, etc.
@@ -14744,7 +18990,7 @@
* lisp/files.el: Don't allow customization of dir-locals sorting.
In retrospect, this is not a good idea for the same reason that
`dir-locals-file' is a defconst, because it is important that this
- behaviour be "uniform across different environments and users".
+ behavior be "uniform across different environments and users".
Sure, the user can still change the sorting with a hack, but we
shouldn't encourage them to change it.
(dir-locals--all-files): Return list in the order returned by
@@ -14783,7 +19029,7 @@
* test/automated/map-tests.el (test-map-merge-with): New test.
-2015-11-10 Karl Fogel <kfogel@red-bean.com>
+2015-11-09 Karl Fogel <kfogel@red-bean.com>
Fix some recently-perturbed bookmark autoloads
@@ -14795,24 +19041,37 @@
introduced by my recent commit adding/changing the above functions
(Sun Nov 8 14:16:43 2015 -0500, git commit 3812e17978).
+2016-01-30 Noah Friedman <friedman@splode.com>
+
+ (ydump-buffer): Handle case where gap is at the start of buffer.
+ I don't recall if older versions of gdb were less strict but you
+ cannot dump a 0-length range in gdb 7.9.1.
+
+2016-01-30 Dmitry Gutov <dgutov@yandex.ru>
2015-11-09 Noah Friedman <friedman@splode.com>
* etc/emacs-buffer.gdb (ydump-buffer): Handle case where gap is at
the start of buffer. I don't recall if older versions of gdb were
less strict but you cannot dump a 0-length range in gdb 7.9.1.
-2015-11-10 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-09 Dmitry Gutov <dgutov@yandex.ru>
* lisp/progmodes/project.el: Update Commentary.
Merge branch 'project-next'
-2015-11-10 Dmitry Gutov <dgutov@yandex.ru>
+2016-01-30 Dmitry Gutov <dgutov@yandex.ru>
Fold `project-ask-user' into `project-current'
* lisp/progmodes/project.el (project-find-functions): Remove
`project-ask-user'.
+2015-11-09 Dmitry Gutov <dgutov@yandex.ru>
+
+ Fold `project-ask-user' into `project-current'
+
+ * lisp/progmodes/project.el (project-find-functions):
+ Remove `project-ask-user'.
(project-ask-user): Remove function and the corresponding
`project-roots' implementation.
(project-current): Add a new argument, MAYBE-PROMPT. Prompt the
@@ -14898,16 +19157,20 @@
any Emacs integer.
* src/lisp.h (lisp_word_count): Remove; no longer used.
-2015-11-09 Dmitry Gutov <dgutov@yandex.ru>
+2016-01-30 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-08 Dmitry Gutov <dgutov@yandex.ru>
Make sure that the ignore file exists
* lisp/vc/vc.el (vc-default-ignore-completion-table):
Make sure that the ignore file exists.
-2015-11-09 Michael Sperber <mike@xemacs.org>
+2016-01-30 Michael Sperber <mike@xemacs.org>
* lisp/gnus-sum.el (gnus-summary-backend-map): Bind B-backspace to
+2015-11-08 Michael Sperber <mike@xemacs.org>
+
+ * gnus-sum.el (gnus-summary-backend-map): Bind B-backspace to
`gnus-summary-delete-article` in a way that also works on XEmacs.
2015-11-08 Simen Heggestøyl <simenheg@gmail.com>
@@ -15105,7 +19368,7 @@
Remove directories inside the project roots from the result.
(http://lists.gnu.org/archive/html/emacs-devel/2015-11/msg00536.html)
-2015-11-08 Dmitry Gutov <dgutov@yandex.ru>
+2015-11-07 Dmitry Gutov <dgutov@yandex.ru>
Move and rename xref-find-regexp to the project package
@@ -33115,7 +37378,12 @@
This file records repository revisions from
commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
-commit 7acfaead6df626b3737c10f98e9c4964232aa6b9 (inclusive).
+2016-08-05faead6df626b3737c10f98e9c4964232aa6b9 (inclusive).
+2016-06-19d77d8dbd5b051bb681bacaee4a6faffbbdde9 (inclusive).
+2016-03-04a00c6cfb5f3cafbad92bd4584a0f50343a568 (inclusive).
+2016-02-15decb15e0496cec0c48d980c88a5a9d7cc00da (inclusive).
+2016-02-04b6d89ff9288a49099f041752908b5eb9613e (inclusive).
+commit ba1422e12f80ae1eb2aa9d0ce80c14e3ee4b3950 (inclusive).
See ChangeLog.1 for earlier changes.
;; Local Variables:
diff --git a/GNUmakefile b/GNUmakefile
index 83bb718a96..e6941b03b3 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -62,10 +62,13 @@ default $(ORDINARY_GOALS): Makefile
# Execute in sequence, so that multiple user goals don't conflict.
.NOTPARALLEL:
+# 'all' if a .git subdirectory is present, empty otherwise.
+ALL_IF_GIT = $(subst .git,all,$(wildcard .git))
+
configure:
@echo >&2 'There seems to be no "configure" file in this directory.'
- @echo >&2 'Running ./autogen.sh ...'
- ./autogen.sh
+ @echo >&2 Running ./autogen.sh $(ALL_IF_GIT) ...
+ ./autogen.sh $(ALL_IF_GIT)
@echo >&2 '"configure" file built.'
Makefile: configure
diff --git a/INSTALL b/INSTALL
index 6f516bd1dd..27af6d9c21 100644
--- a/INSTALL
+++ b/INSTALL
@@ -318,9 +318,11 @@ Use --enable-gcc-warnings to enable compile-time checks that warn
about possibly-questionable C code. This is intended for developers
and is useful with GNU-compatible compilers. On a recent GNU system
there should be no warnings; on older and on non-GNU systems the
-generated warnings may still be useful, though you may prefer building
-with 'make WERROR_CFLAGS=' so that the warnings are not treated as
-errors.
+generated warnings may still be useful, though you may prefer
+configuring with --enable-gcc-warnings=warn-only so they are not
+treated as errors. The default is --enable-gcc-warnings=warn-only if
+it appears to be a developer build, and is --disable-gcc-warnings
+otherwise.
Use --disable-silent-rules to cause 'make' to give more details about
the commands it executes. This can be helpful when debugging a build
diff --git a/INSTALL.REPO b/INSTALL.REPO
index 1720758928..7497f1f296 100644
--- a/INSTALL.REPO
+++ b/INSTALL.REPO
@@ -18,9 +18,10 @@ makeinfo - not strictly necessary, but highly recommended, so that
you can build the manuals.
To use the autotools, run the following shell command to generate the
-'configure' script and some related files:
+'configure' script and some related files, and to set up your git
+configuration:
- $ ./autogen.sh
+ $ ./autogen.sh all
You can then configure your build as follows:
diff --git a/Makefile.in b/Makefile.in
index b212c914e5..7aac403ada 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -925,14 +925,17 @@ extraclean: $(extraclean_dirs:=_extraclean)
TAGS tags: lib lib-src src
$(MAKE) -C src tags
-check check-expensive: all
- @if test ! -d test/automated; then \
+.PHONY: have-tests
+have-tests:
+ @if test ! -d test; then \
echo "You do not seem to have the test/ directory."; \
echo "Maybe you are using a release tarfile, rather than a repository checkout."; \
- else \
- $(MAKE) -C test/automated $@; \
+ exit 1; \
fi
+check check-maybe check-expensive: have-tests all
+ $(MAKE) -C test $@
+
dist:
cd ${srcdir}; ./make-dist
@@ -947,7 +950,7 @@ $(DOCS):
$(MAKE) -C doc/$(subst -, ,$@)
.PHONY: $(DOCS) docs pdf ps
-.PHONY: info dvi dist check check-expensive html info-real info-dir check-info
+.PHONY: info dvi dist check check-maybe check-expensive html info-real info-dir check-info
## TODO add etc/refcards.
docs: $(DOCS)
@@ -1093,7 +1096,7 @@ bootstrap: bootstrap-clean
$(MAKE) all
.PHONY: ChangeLog change-history change-history-commit change-history-nocommit
-.PHONY: emacs-25-branch-is-current unchanged-history-files
+.PHONY: preferred-branch-is-current unchanged-history-files
CHANGELOG = ChangeLog
emacslog = build-aux/gitlog-to-emacslog
@@ -1110,8 +1113,9 @@ ChangeLog:
./$(emacslog) -o $(CHANGELOG) -n $(CHANGELOG_HISTORY_INDEX_MAX)
# Check that we are in a good state for changing history.
-emacs-25-branch-is-current:
- git branch | grep -q '^\* emacs-25$$'
+PREFERRED_BRANCH = master
+preferred-branch-is-current:
+ git branch | grep -q '^\* $(PREFERRED_BRANCH)$$'
unchanged-history-files:
x=$$(git diff-files --name-only $(CHANGELOG_N) $(emacslog)) && \
test -z "$$x"
@@ -1121,7 +1125,7 @@ new_commit_regexp = ^commit [0123456789abcdef]* (inclusive)
# Copy newer commit messages to the start of the ChangeLog history file,
# and consider them to be older.
-change-history-nocommit: emacs-25-branch-is-current unchanged-history-files
+change-history-nocommit: preferred-branch-is-current unchanged-history-files
-rm -f ChangeLog.tmp
$(MAKE) ChangeLog CHANGELOG=ChangeLog.tmp
sed '/^This file records repository revisions/,$$d' \
diff --git a/README b/README
index bdd9bde02e..35a31dbd31 100644
--- a/README
+++ b/README
@@ -2,7 +2,7 @@ Copyright (C) 2001-2016 Free Software Foundation, Inc.
See the end of the file for license conditions.
-This directory tree holds version 25.1 of GNU Emacs, the extensible,
+This directory tree holds version 25.1.50 of GNU Emacs, the extensible,
customizable, self-documenting real-time display editor.
The file INSTALL in this directory says how to build and install GNU
diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES
index 796b57db3d..5e6146b33d 100644
--- a/admin/CPP-DEFINES
+++ b/admin/CPP-DEFINES
@@ -13,7 +13,6 @@ CYGWIN Compiling the Cygwin port.
__CYGWIN__ Ditto
GNU_LINUX
HPUX
-IRIX6_5
MSDOS Compiling the MS-DOS port.
__MSDOS__ Ditto.
__DJGPP_MINOR__ Minor version number of the DJGPP library; used only in msdos.c and dosfns.c.
@@ -148,7 +147,6 @@ HAVE_FUTIMES
HAVE_FUTIMESAT
HAVE_GAI_STRERROR
HAVE_GCONF
-HAVE_GETADDRINFO
HAVE_GETDELIM
HAVE_GETGRENT
HAVE_GETHOSTNAME
@@ -158,7 +156,6 @@ HAVE_GETLOADAVG
HAVE_GETOPT_H
HAVE_GETOPT_LONG_ONLY
HAVE_GETPAGESIZE
-HAVE_GETPEERNAME
HAVE_GETPT
HAVE_GETPWENT
HAVE_GETRLIMIT
@@ -185,7 +182,6 @@ HAVE_GTK_WIDGET_GET_WINDOW
HAVE_GTK_WIDGET_SET_HAS_WINDOW
HAVE_GTK_WINDOW_SET_HAS_RESIZE_GRIP
HAVE_G_TYPE_INIT
-HAVE_H_ERRNO
HAVE_IFADDRS_H
HAVE_IMAGEMAGICK
HAVE_INET_SOCKETS
@@ -237,7 +233,7 @@ HAVE_NET_IF_DL_H
HAVE_NET_IF_H
HAVE_NLIST_H
HAVE_OTF_GET_VARIATION_GLYPHS
-HAVE_PERSONALITY_LINUX32
+HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
HAVE_PNG
HAVE_PNG_H
HAVE_POSIX_MEMALIGN
@@ -254,7 +250,6 @@ HAVE_RANDOM
HAVE_READLINK
HAVE_READLINKAT
HAVE_RECVFROM
-HAVE_RES_INIT
HAVE_RINT
HAVE_RSVG
HAVE_SELECT
@@ -379,7 +374,6 @@ NSIG
NSIG_MINIMUM
NULL_DEVICE
PAGESIZE
-PREFER_VSUSP
PTY_ITERATION
PTY_NAME_SPRINTF
PTY_OPEN
diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS
index b15c57e7ee..5aff824288 100644
--- a/admin/MAINTAINERS
+++ b/admin/MAINTAINERS
@@ -61,7 +61,7 @@ Michael Albinus
lisp/net/tramp*.el
lisp/url/url-tramp.el
doc/misc/tramp*.texi
- test/automated/tramp-tests.el
+ test/lisp/net/tramp-tests.el
D-Bus
src/dbusbind.c
@@ -69,13 +69,13 @@ Michael Albinus
lisp/net/secrets.el
lisp/net/zeroconf.el
doc/misc/dbus.texi
- test/automated/dbus-tests.el
+ test/lisp/net/dbus-tests.el
File Notifications
src/gfilenotify.c
src/kqueue.c
lisp/filenotify.el
- test/automated/file-notify-tests.el
+ test/lisp/filenotify-tests.el
Simen Heggestøyl
lisp/textmodes/css-mode.el
@@ -211,9 +211,8 @@ Michael Albinus
lisp/autorevert.el
lisp/eshell/em-tramp.el
lisp/notifications.el
- test/automated/auto-revert-tests.el
- test/automated/inotify-test.el
- test/automated/vc-tests.el
+ test/lisp/autorevert-tests.el
+ test/src/inotify-test.el
Nicolas Petton
lisp/emacs-lisp/subr-x.el
diff --git a/admin/gitmerge.el b/admin/gitmerge.el
index a08a36937b..d2cb1e8df0 100644
--- a/admin/gitmerge.el
+++ b/admin/gitmerge.el
@@ -48,8 +48,10 @@
(require 'smerge-mode)
(defvar gitmerge-skip-regexp
- "back[- ]?port\\|merge\\|sync\\|re-?generate\\|bump version\\|from trunk\\|\
-Auto-commit"
+ ;; We used to include "sync" in there, but in my experience it only
+ ;; caused false positives. --Stef
+ "back[- ]?port\\|cherry picked from commit\\|\\(do not\\|no need to\\) merge\\|\
+re-?generate\\|bump version\\|from trunk\\|Auto-commit"
"Regexp matching logs of revisions that might be skipped.
`gitmerge-missing' will ask you if it should skip any matches.")
@@ -65,7 +67,7 @@ Auto-commit"
'((t (:strike-through t)))
"Face for skipped commits.")
-(defconst gitmerge-default-branch "origin/emacs-24"
+(defconst gitmerge-default-branch "origin/emacs-25"
"Default for branch that should be merged.")
(defconst gitmerge-buffer "*gitmerge*"
@@ -169,9 +171,10 @@ Auto-commit"
(defun gitmerge-highlight-skip-regexp ()
"Highlight strings that match `gitmerge-skip-regexp'."
(save-excursion
- (while (re-search-forward gitmerge-skip-regexp nil t)
- (put-text-property (match-beginning 0) (match-end 0)
- 'face 'font-lock-warning-face))))
+ (let ((case-fold-search t))
+ (while (re-search-forward gitmerge-skip-regexp nil t)
+ (put-text-property (match-beginning 0) (match-end 0)
+ 'face 'font-lock-warning-face)))))
(defun gitmerge-missing (from)
"Return the list of revisions that need to be merged from FROM.
@@ -183,8 +186,8 @@ if and why this commit should be skipped."
;; Go through the log and remember all commits that match
;; `gitmerge-skip-regexp' or are marked by --cherry-mark.
(with-temp-buffer
- (call-process "git" nil t nil "log" "--cherry-mark" from
- (concat "^" (car (vc-git-branches))))
+ (call-process "git" nil t nil "log" "--cherry-mark" "--left-only"
+ (concat from "..." (car (vc-git-branches))))
(goto-char (point-max))
(while (re-search-backward "^commit \\(.+\\) \\([0-9a-f]+\\).*" nil t)
(let ((cherrymark (match-string 1))
@@ -206,9 +209,9 @@ if and why this commit should be skipped."
"Create the buffer for choosing commits."
(with-current-buffer (get-buffer-create gitmerge-buffer)
(erase-buffer)
- (call-process "git" nil t nil "log"
+ (call-process "git" nil t nil "log" "--left-only"
"--pretty=format:%h %<(20,trunc) %an: %<(100,trunc) %s"
- from (concat "^" (car (vc-git-branches))))
+ (concat from "..." (car (vc-git-branches))))
(goto-char (point-min))
(while (looking-at "^\\([a-f0-9]+\\)")
(let ((skipreason (gitmerge-skip-commit-p (match-string 1) commits)))
@@ -328,6 +331,10 @@ is nil, only the single commit BEG is merged."
(if end (list (concat beg "~.." end))
`("-1" ,beg)))
(insert "\n")
+ ;; Truncate to 72 chars so that the resulting ChangeLog line fits in 80.
+ (goto-char (point-min))
+ (while (re-search-forward "^\\(.\\{69\\}\\).\\{4,\\}" nil t)
+ (replace-match "\\1..."))
(buffer-string)))
(defun gitmerge-apply (missing from)
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 40b5b78ee8..5d6512760d 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -30,12 +30,12 @@ GNULIB_MODULES='
careadlinkat close-stream count-one-bits count-trailing-zeros
crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512
dtoastr dtotimespec dup2 environ execinfo faccessat
- fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync
+ fcntl fcntl-h fdatasync fdopendir filemode filevercmp fstatat fsync
getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog
ignore-value intprops largefile lstat
manywarnings memrchr mkostemp mktime
pipe2 pselect pthread_sigmask putenv qcopy-acl readlink readlinkat
- sig2str socklen stat-time stdalign stddef stdio
+ sig2str socklen stat-time std-gnu11 stdalign stddef stdio
stpcpy strftime strtoimax strtoumax symlink sys_stat
sys_time time time_r time_rz timegm timer-time timespec-add timespec-sub
unsetenv update-copyright utimens
diff --git a/admin/notes/bug-triage b/admin/notes/bug-triage
new file mode 100644
index 0000000000..4a2a5f392e
--- /dev/null
+++ b/admin/notes/bug-triage
@@ -0,0 +1,108 @@
+HOW TO TRIAGE EMACS BUGS -*- outline -*-
+
+This document just describes the procedure of triaging bugs, for information on
+how to work with the bug tracker, see the bugtracker file in this same directory
+for the basics. You can also install the debbugs ELPA package for access to M-x
+debbugs-gnu, an emacs interface to debbugs, and M-x debbugs-org, an emacs
+interface via org-mode.
+
+* Bug backlog triage procedure
+
+The goal of this triage is to prune down the list of old bugs, closing
+the ones that are not reproducible on the current release.
+
+ 1. To start, enter debbugs mode (either debbugs-gnu, debbugs-org, or via the
+ web browser), and accept the default list option of bugs that have severity
+ serious, important, or normal.
+ 2. This will also show closed bugs that have yet to be archived. You can
+ filter these out in debbugs-gnu with "x" (debbugs-gnu-toggle-suppress).
+ 3. For each bug, we want to primarily make sure it is still
+ reproducible. A bug can and should stay open as long as it is
+ still a bug and no one has fixed it. The following is a
+ suggested checklist to follow for handling these bugs, along with
+ example replies. Closing, tagging, etc., are done
+ with debbugs control messages, which in debbugs-gnu is initiated
+ with a "C".
+ [ ] Read the mail thread for the bug. Find out if anyone has
+ been able to reproduce this on the current release. If
+ someone has been able to, then your work is finished for this
+ bug.
+ [ ] Make sure there's enough information to reproduce the bug.
+ It should be very clear how to reproduce. If not, please ask
+ for specific steps to reproduce. If you don't get them, and
+ you can't reproduce without them, you can close as
+ "doneunreproducible". Sometimes there is specific hardware
+ involved, such as particular models of keyboards, or it may
+ simply involve a platform you don't have access to. It's
+ fine to ignore those, and let a future triager that is better
+ equipped to reproduce it handle it.
+
+ An example reply asking for clear reproduction steps would be
+ something like: "Hi! In the interest of seeing whether this
+ is reproducible, and to aid anyone who will look at this bug
+ in the future, can you please give instructions on how to
+ reproduce this bug starting from an emacs without
+ configuration ("emacs -Q")?
+ [ ] If there is enough detail to reproduce, but no one has
+ mentioned being able to reproduce on the current release,
+ read the bug description and attempt to reproduce on an emacs
+ started with "emacs -Q" (the goal is to not let our personal
+ configs interfere with bug testing).
+
+ If you can reproduce, then reply on the thread (either on the
+ original message, or anywhere you find appropriate) that you
+ can reproduce this on the current release. If your
+ reproduction gives additional info (such as a backtrace),
+ then add that as well, since it will help whoever attempts to
+ fix it.
+
+ Example reply: "I'd just like to add that I can reproduce
+ this on the latest version of Emacs, Emacs 25."
+
+ If you can't reproduce, state that you can't reproduce it on
+ the current release, ask if they can try again against the
+ current release. Tag the bug as "unreproducable". Wait a
+ few weeks for their reply - if they can reproduce it, then
+ that's great, otherwise close as "doneunreproducible".
+
+ Example reply: "I've attempted to reproduce this on the
+ latest version of emacs, Emacs 25, but haven't been able to.
+ Can you try to reproduce this on this version, and let us
+ know if you are able to? If I don't hear back in a few
+ weeks, I'll just close this bug as unreproducible."
+ [ ] Check that the priority is reasonable. Most bugs should be
+ marked as normal, but crashers and security issues can be
+ marked as serious.
+ 4. Your changes will take some time to take effect. After a period of minutes
+ to hours, you will get a mail telling you the control message has been
+ processed. At this point, if there were no errors detected, you and
+ everyone else can see your changes. If there are errors, read the error
+ text - if you need help, consulting the bugtracker documentation in this
+ same directory.
+
+* New bug triage process
+
+The goal of the new bug triage process is similar to the backlog triage process,
+except that the focus is on prioritizing the bug, and making sure it is has
+necessary information for others to act on.
+
+For each new bug, ask the following questions:
+
+ 1. Is the bug report written in a way to be easy to reproduce (starts from
+ emacs -Q, etc.)? If not, ask the reporter to try and reproduce it on an
+ emacs without customization.
+ 2. Is the bug report written against the latest emacs? If not, try to
+ reproduce on the latest version, and if it can't be reproduced, ask the
+ reporter to try again with the latest version.
+ 3. Is the bug the same as another bug? If so, merge the bugs.
+ 4. What is the priority of the bug? Add a priority: serious, important,
+ normal, minor, or wishlist.
+ 5. Who should be the owner? This depends on what component the bug is part
+ of. You can look at the admin/MAINTAINERS file (then you can just search
+ emacs-devel to match the name with an email address).
+
+In the debbugs-gnu buffer, bugs are marked in the "State" column
+according to the communication flow. Red bugs mean that nobody has
+answered, these bugs need primary attention. Green bugs flag that
+there is a recent communication about, and orange bugs flag that the
+bug hasn't been touched for at least two weeks.
diff --git a/admin/notes/unicode b/admin/notes/unicode
index b30bf50ccf..65df2166f2 100644
--- a/admin/notes/unicode
+++ b/admin/notes/unicode
@@ -14,6 +14,7 @@ Emacs uses the following files from the Unicode Character Database
. BidiMirroring.txt
. BidiBrackets.txt
. IVD_Sequences.txt
+ . NormalizationTest.txt
First, these files need to be copied into admin/unidata/, and then
Emacs should be rebuilt for them to take effect. Rebuilding Emacs
@@ -48,6 +49,14 @@ might need to be updated because it knows about used and unused ranges
of Unicode codepoints, which a new release of the Unicode Standard
could change.
+Finally, test normalization functions against NormalizationTests.txt,
+in the test/ directory run:
+
+ make lisp/international/ucs-normalize-tests
+
+See commentary in test/lisp/international/ucs-normalize-tests.el
+regarding failing lines.
+
Problems, fixmes and other unicode-related issues
-------------------------------------------------------------
@@ -131,8 +140,6 @@ regard to completeness.
* Need multibyte text in menus, e.g. for the above. (Not specific to
Unicode -- see Emacs etc/TODO, but now mostly works with gtk.)
- * There's currently no support for Unicode normalization.
-
* Populate char-width-table correctly for Unicode characters and
worry about what happens when double-width charsets covering
non-CJK characters are unified.
diff --git a/admin/release-process b/admin/release-process
index e4ef4d9464..28f2307846 100644
--- a/admin/release-process
+++ b/admin/release-process
@@ -47,6 +47,7 @@ Emacs uses the "blocking" feature of Debbugs for bugs that need to be
addressed in the next release.
Currently, bug#19759 is the tracking bug for release of 25.1 and
+bug#21966 is the tracking bug for release of 25.2. Say bug#123 needs
bug#21966 is the tracking bug for the next release. Say bug#123 needs
to be fixed for Emacs 25.1. Send a message to control@debbugs.gnu.org
that says:
diff --git a/admin/unidata/BidiBrackets.txt b/admin/unidata/BidiBrackets.txt
index a3a49415ad..eb02a24bfc 100644
--- a/admin/unidata/BidiBrackets.txt
+++ b/admin/unidata/BidiBrackets.txt
@@ -1,6 +1,7 @@
# BidiBrackets-9.0.0.txt
-# Date: 2016-01-21, 22:00:00 GMT [AG, LI, KW]
+# Date: 2016-06-07, 22:30:00 GMT [AG, LI, KW]
# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
@@ -28,6 +29,12 @@
# vice versa, and their Bidi_Paired_Bracket_Type (bpt) property values are
# Open (o) and Close (c), respectively.
#
+# The brackets with ticks U+298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+# through U+2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER are paired the
+# same way their glyphs form mirror pairs, according to their bmg property
+# values. They are not paired on the basis of a diagonal or antidiagonal
+# matching of the corner ticks inferred from code point order.
+#
# For legacy reasons, the characters U+FD3E ORNATE LEFT PARENTHESIS and
# U+FD3F ORNATE RIGHT PARENTHESIS do not mirror in bidirectional display
# and therefore do not form a bracket pair.
diff --git a/admin/unidata/NormalizationTest.txt b/admin/unidata/NormalizationTest.txt
new file mode 100644
index 0000000000..e133fa8a78
--- /dev/null
+++ b/admin/unidata/NormalizationTest.txt
@@ -0,0 +1,18777 @@
+# NormalizationTest-9.0.0.txt
+# Date: 2016-04-04, 11:41:55 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
+#
+# Normalization Test Suite
+# Format:
+#
+# Columns (c1, c2,...) are separated by semicolons
+# They have the following meaning:
+# source; NFC; NFD; NFKC; NFKD
+# Comments are indicated with hash marks
+# Each of the columns may have one or more code points.
+#
+# CONFORMANCE:
+# 1. The following invariants must be true for all conformant implementations
+#
+# NFC
+# c2 == toNFC(c1) == toNFC(c2) == toNFC(c3)
+# c4 == toNFC(c4) == toNFC(c5)
+#
+# NFD
+# c3 == toNFD(c1) == toNFD(c2) == toNFD(c3)
+# c5 == toNFD(c4) == toNFD(c5)
+#
+# NFKC
+# c4 == toNFKC(c1) == toNFKC(c2) == toNFKC(c3) == toNFKC(c4) == toNFKC(c5)
+#
+# NFKD
+# c5 == toNFKD(c1) == toNFKD(c2) == toNFKD(c3) == toNFKD(c4) == toNFKD(c5)
+#
+# 2. For every code point X assigned in this version of Unicode that is not specifically
+# listed in Part 1, the following invariants must be true for all conformant
+# implementations:
+#
+# X == toNFC(X) == toNFD(X) == toNFKC(X) == toNFKD(X)
+#
+@Part0 # Specific cases
+#
+1E0A;1E0A;0044 0307;1E0A;0044 0307; # (Ḋ; Ḋ; D◌̇; Ḋ; D◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0C;1E0C;0044 0323;1E0C;0044 0323; # (Ḍ; Ḍ; D◌̣; Ḍ; D◌̣; ) LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0A 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307; # (Ḋ◌̣; Ḍ◌̇; D◌̣◌̇; Ḍ◌̇; D◌̣◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE, COMBINING DOT BELOW
+1E0C 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307; # (Ḍ◌̇; Ḍ◌̇; D◌̣◌̇; Ḍ◌̇; D◌̣◌̇; ) LATIN CAPITAL LETTER D WITH DOT BELOW, COMBINING DOT ABOVE
+0044 0307 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307; # (D◌̇◌̣; Ḍ◌̇; D◌̣◌̇; Ḍ◌̇; D◌̣◌̇; ) LATIN CAPITAL LETTER D, COMBINING DOT ABOVE, COMBINING DOT BELOW
+0044 0323 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307; # (D◌̣◌̇; Ḍ◌̇; D◌̣◌̇; Ḍ◌̇; D◌̣◌̇; ) LATIN CAPITAL LETTER D, COMBINING DOT BELOW, COMBINING DOT ABOVE
+1E0A 031B;1E0A 031B;0044 031B 0307;1E0A 031B;0044 031B 0307; # (Ḋ◌̛; Ḋ◌̛; D◌̛◌̇; Ḋ◌̛; D◌̛◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE, COMBINING HORN
+1E0C 031B;1E0C 031B;0044 031B 0323;1E0C 031B;0044 031B 0323; # (Ḍ◌̛; Ḍ◌̛; D◌̛◌̣; Ḍ◌̛; D◌̛◌̣; ) LATIN CAPITAL LETTER D WITH DOT BELOW, COMBINING HORN
+1E0A 031B 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307; # (Ḋ◌̛◌̣; Ḍ◌̛◌̇; D◌̛◌̣◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE, COMBINING HORN, COMBINING DOT BELOW
+1E0C 031B 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307; # (Ḍ◌̛◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; ) LATIN CAPITAL LETTER D WITH DOT BELOW, COMBINING HORN, COMBINING DOT ABOVE
+0044 031B 0307 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307; # (D◌̛◌̇◌̣; Ḍ◌̛◌̇; D◌̛◌̣◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; ) LATIN CAPITAL LETTER D, COMBINING HORN, COMBINING DOT ABOVE, COMBINING DOT BELOW
+0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307; # (D◌̛◌̣◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; ) LATIN CAPITAL LETTER D, COMBINING HORN, COMBINING DOT BELOW, COMBINING DOT ABOVE
+00C8;00C8;0045 0300;00C8;0045 0300; # (È; È; E◌̀; È; E◌̀; ) LATIN CAPITAL LETTER E WITH GRAVE
+0112;0112;0045 0304;0112;0045 0304; # (Ē; Ē; E◌̄; Ē; E◌̄; ) LATIN CAPITAL LETTER E WITH MACRON
+0045 0300;00C8;0045 0300;00C8;0045 0300; # (E◌̀; È; E◌̀; È; E◌̀; ) LATIN CAPITAL LETTER E, COMBINING GRAVE ACCENT
+0045 0304;0112;0045 0304;0112;0045 0304; # (E◌̄; Ē; E◌̄; Ē; E◌̄; ) LATIN CAPITAL LETTER E, COMBINING MACRON
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300; # (Ḕ; Ḕ; E◌̄◌̀; Ḕ; E◌̄◌̀; ) LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+0112 0300;1E14;0045 0304 0300;1E14;0045 0304 0300; # (Ē◌̀; Ḕ; E◌̄◌̀; Ḕ; E◌̄◌̀; ) LATIN CAPITAL LETTER E WITH MACRON, COMBINING GRAVE ACCENT
+1E14 0304;1E14 0304;0045 0304 0300 0304;1E14 0304;0045 0304 0300 0304; # (Ḕ◌̄; Ḕ◌̄; E◌̄◌̀◌̄; Ḕ◌̄; E◌̄◌̀◌̄; ) LATIN CAPITAL LETTER E WITH MACRON AND GRAVE, COMBINING MACRON
+0045 0304 0300;1E14;0045 0304 0300;1E14;0045 0304 0300; # (E◌̄◌̀; Ḕ; E◌̄◌̀; Ḕ; E◌̄◌̀; ) LATIN CAPITAL LETTER E, COMBINING MACRON, COMBINING GRAVE ACCENT
+0045 0300 0304;00C8 0304;0045 0300 0304;00C8 0304;0045 0300 0304; # (E◌̀◌̄; È◌̄; E◌̀◌̄; È◌̄; E◌̀◌̄; ) LATIN CAPITAL LETTER E, COMBINING GRAVE ACCENT, COMBINING MACRON
+05B8 05B9 05B1 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F; # (◌ָ◌ֹ◌ֱ◌֑׃◌ְ◌֬◌֟; ◌ֱ◌ָ◌ֹ◌֑׃◌ְ◌֬◌֟; ◌ֱ◌ָ◌ֹ◌֑׃◌ְ◌֬◌֟; ◌ֱ◌ָ◌ֹ◌֑׃◌ְ◌֬◌֟; ◌ֱ◌ָ◌ֹ◌֑׃◌ְ◌֬◌֟; ) HEBREW POINT QAMATS, HEBREW POINT HOLAM, HEBREW POINT HATAF SEGOL, HEBREW ACCENT ETNAHTA, HEBREW PUNCTUATION SOF PASUQ, HEBREW POINT SHEVA, HEBREW ACCENT ILUY, HEBREW ACCENT QARNEY PARA
+0592 05B7 05BC 05A5 05B0 05C0 05C4 05AD;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4; # (◌֒◌ַ◌ּ◌֥◌ְ׀◌ׄ◌֭; ◌ְ◌ַ◌ּ◌֥◌֒׀◌֭◌ׄ; ◌ְ◌ַ◌ּ◌֥◌֒׀◌֭◌ׄ; ◌ְ◌ַ◌ּ◌֥◌֒׀◌֭◌ׄ; ◌ְ◌ַ◌ּ◌֥◌֒׀◌֭◌ׄ; ) HEBREW ACCENT SEGOL, HEBREW POINT PATAH, HEBREW POINT DAGESH OR MAPIQ, HEBREW ACCENT MERKHA, HEBREW POINT SHEVA, HEBREW PUNCTUATION PASEQ, HEBREW MARK UPPER DOT, HEBREW ACCENT DEHI
+1100 AC00 11A8;1100 AC01;1100 1100 1161 11A8;1100 AC01;1100 1100 1161 11A8; # (ᄀ각; á„€ê°; ᄀ각; á„€ê°; ᄀ각; ) HANGUL CHOSEONG KIYEOK, HANGUL SYLLABLE GA, HANGUL JONGSEONG KIYEOK
+1100 AC00 11A8 11A8;1100 AC01 11A8;1100 1100 1161 11A8 11A8;1100 AC01 11A8;1100 1100 1161 11A8 11A8; # (ᄀ각ᆨ; á„€ê°á†¨; ᄀ각ᆨ; á„€ê°á†¨; ᄀ각ᆨ; ) HANGUL CHOSEONG KIYEOK, HANGUL SYLLABLE GA, HANGUL JONGSEONG KIYEOK, HANGUL JONGSEONG KIYEOK
+#
+@Part1 # Character by character test
+# All characters not explicitly occurring in c1 of Part 1 have identical NFC, D, KC, KD forms.
+#
+00A0;00A0;00A0;0020;0020; # ( ;  ;  ; ; ; ) NO-BREAK SPACE
+00A8;00A8;00A8;0020 0308;0020 0308; # (¨; ¨; ¨; ◌̈; ◌̈; ) DIAERESIS
+00AA;00AA;00AA;0061;0061; # (ª; ª; ª; a; a; ) FEMININE ORDINAL INDICATOR
+00AF;00AF;00AF;0020 0304;0020 0304; # (¯; ¯; ¯; ◌̄; ◌̄; ) MACRON
+00B2;00B2;00B2;0032;0032; # (²; ²; ²; 2; 2; ) SUPERSCRIPT TWO
+00B3;00B3;00B3;0033;0033; # (³; ³; ³; 3; 3; ) SUPERSCRIPT THREE
+00B4;00B4;00B4;0020 0301;0020 0301; # (´; ´; ´; â—ŒÌ; â—ŒÌ; ) ACUTE ACCENT
+00B5;00B5;00B5;03BC;03BC; # (µ; µ; µ; μ; μ; ) MICRO SIGN
+00B8;00B8;00B8;0020 0327;0020 0327; # (¸; ¸; ¸; ◌̧; ◌̧; ) CEDILLA
+00B9;00B9;00B9;0031;0031; # (¹; ¹; ¹; 1; 1; ) SUPERSCRIPT ONE
+00BA;00BA;00BA;006F;006F; # (º; º; º; o; o; ) MASCULINE ORDINAL INDICATOR
+00BC;00BC;00BC;0031 2044 0034;0031 2044 0034; # (¼; ¼; ¼; 1â„4; 1â„4; ) VULGAR FRACTION ONE QUARTER
+00BD;00BD;00BD;0031 2044 0032;0031 2044 0032; # (½; ½; ½; 1â„2; 1â„2; ) VULGAR FRACTION ONE HALF
+00BE;00BE;00BE;0033 2044 0034;0033 2044 0034; # (¾; ¾; ¾; 3â„4; 3â„4; ) VULGAR FRACTION THREE QUARTERS
+00C0;00C0;0041 0300;00C0;0041 0300; # (À; À; A◌̀; À; A◌̀; ) LATIN CAPITAL LETTER A WITH GRAVE
+00C1;00C1;0041 0301;00C1;0041 0301; # (Ã; Ã; Aâ—ŒÌ; Ã; Aâ—ŒÌ; ) LATIN CAPITAL LETTER A WITH ACUTE
+00C2;00C2;0041 0302;00C2;0041 0302; # (Â; Â; A◌̂; Â; A◌̂; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3;00C3;0041 0303;00C3;0041 0303; # (Ã; Ã; A◌̃; Ã; A◌̃; ) LATIN CAPITAL LETTER A WITH TILDE
+00C4;00C4;0041 0308;00C4;0041 0308; # (Ä; Ä; A◌̈; Ä; A◌̈; ) LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5;00C5;0041 030A;00C5;0041 030A; # (Å; Å; A◌̊; Å; A◌̊; ) LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7;00C7;0043 0327;00C7;0043 0327; # (Ç; Ç; C◌̧; Ç; C◌̧; ) LATIN CAPITAL LETTER C WITH CEDILLA
+00C8;00C8;0045 0300;00C8;0045 0300; # (È; È; E◌̀; È; E◌̀; ) LATIN CAPITAL LETTER E WITH GRAVE
+00C9;00C9;0045 0301;00C9;0045 0301; # (É; É; Eâ—ŒÌ; É; Eâ—ŒÌ; ) LATIN CAPITAL LETTER E WITH ACUTE
+00CA;00CA;0045 0302;00CA;0045 0302; # (Ê; Ê; E◌̂; Ê; E◌̂; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB;00CB;0045 0308;00CB;0045 0308; # (Ë; Ë; E◌̈; Ë; E◌̈; ) LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC;00CC;0049 0300;00CC;0049 0300; # (Ì; Ì; I◌̀; Ì; I◌̀; ) LATIN CAPITAL LETTER I WITH GRAVE
+00CD;00CD;0049 0301;00CD;0049 0301; # (Ã; Ã; Iâ—ŒÌ; Ã; Iâ—ŒÌ; ) LATIN CAPITAL LETTER I WITH ACUTE
+00CE;00CE;0049 0302;00CE;0049 0302; # (Î; Î; I◌̂; Î; I◌̂; ) LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF;00CF;0049 0308;00CF;0049 0308; # (Ã; Ã; I◌̈; Ã; I◌̈; ) LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1;00D1;004E 0303;00D1;004E 0303; # (Ñ; Ñ; N◌̃; Ñ; N◌̃; ) LATIN CAPITAL LETTER N WITH TILDE
+00D2;00D2;004F 0300;00D2;004F 0300; # (Ò; Ò; O◌̀; Ò; O◌̀; ) LATIN CAPITAL LETTER O WITH GRAVE
+00D3;00D3;004F 0301;00D3;004F 0301; # (Ó; Ó; Oâ—ŒÌ; Ó; Oâ—ŒÌ; ) LATIN CAPITAL LETTER O WITH ACUTE
+00D4;00D4;004F 0302;00D4;004F 0302; # (Ô; Ô; O◌̂; Ô; O◌̂; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5;00D5;004F 0303;00D5;004F 0303; # (Õ; Õ; O◌̃; Õ; O◌̃; ) LATIN CAPITAL LETTER O WITH TILDE
+00D6;00D6;004F 0308;00D6;004F 0308; # (Ö; Ö; O◌̈; Ö; O◌̈; ) LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9;00D9;0055 0300;00D9;0055 0300; # (Ù; Ù; U◌̀; Ù; U◌̀; ) LATIN CAPITAL LETTER U WITH GRAVE
+00DA;00DA;0055 0301;00DA;0055 0301; # (Ú; Ú; Uâ—ŒÌ; Ú; Uâ—ŒÌ; ) LATIN CAPITAL LETTER U WITH ACUTE
+00DB;00DB;0055 0302;00DB;0055 0302; # (Û; Û; U◌̂; Û; U◌̂; ) LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC;00DC;0055 0308;00DC;0055 0308; # (Ü; Ü; U◌̈; Ü; U◌̈; ) LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD;00DD;0059 0301;00DD;0059 0301; # (Ã; Ã; Yâ—ŒÌ; Ã; Yâ—ŒÌ; ) LATIN CAPITAL LETTER Y WITH ACUTE
+00E0;00E0;0061 0300;00E0;0061 0300; # (à; à; a◌̀; à; a◌̀; ) LATIN SMALL LETTER A WITH GRAVE
+00E1;00E1;0061 0301;00E1;0061 0301; # (á; á; aâ—ŒÌ; á; aâ—ŒÌ; ) LATIN SMALL LETTER A WITH ACUTE
+00E2;00E2;0061 0302;00E2;0061 0302; # (â; â; a◌̂; â; a◌̂; ) LATIN SMALL LETTER A WITH CIRCUMFLEX
+00E3;00E3;0061 0303;00E3;0061 0303; # (ã; ã; a◌̃; ã; a◌̃; ) LATIN SMALL LETTER A WITH TILDE
+00E4;00E4;0061 0308;00E4;0061 0308; # (ä; ä; a◌̈; ä; a◌̈; ) LATIN SMALL LETTER A WITH DIAERESIS
+00E5;00E5;0061 030A;00E5;0061 030A; # (å; å; a◌̊; å; a◌̊; ) LATIN SMALL LETTER A WITH RING ABOVE
+00E7;00E7;0063 0327;00E7;0063 0327; # (ç; ç; c◌̧; ç; c◌̧; ) LATIN SMALL LETTER C WITH CEDILLA
+00E8;00E8;0065 0300;00E8;0065 0300; # (è; è; e◌̀; è; e◌̀; ) LATIN SMALL LETTER E WITH GRAVE
+00E9;00E9;0065 0301;00E9;0065 0301; # (é; é; eâ—ŒÌ; é; eâ—ŒÌ; ) LATIN SMALL LETTER E WITH ACUTE
+00EA;00EA;0065 0302;00EA;0065 0302; # (ê; ê; e◌̂; ê; e◌̂; ) LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB;00EB;0065 0308;00EB;0065 0308; # (ë; ë; e◌̈; ë; e◌̈; ) LATIN SMALL LETTER E WITH DIAERESIS
+00EC;00EC;0069 0300;00EC;0069 0300; # (ì; ì; i◌̀; ì; i◌̀; ) LATIN SMALL LETTER I WITH GRAVE
+00ED;00ED;0069 0301;00ED;0069 0301; # (í; í; iâ—ŒÌ; í; iâ—ŒÌ; ) LATIN SMALL LETTER I WITH ACUTE
+00EE;00EE;0069 0302;00EE;0069 0302; # (î; î; i◌̂; î; i◌̂; ) LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF;00EF;0069 0308;00EF;0069 0308; # (ï; ï; i◌̈; ï; i◌̈; ) LATIN SMALL LETTER I WITH DIAERESIS
+00F1;00F1;006E 0303;00F1;006E 0303; # (ñ; ñ; n◌̃; ñ; n◌̃; ) LATIN SMALL LETTER N WITH TILDE
+00F2;00F2;006F 0300;00F2;006F 0300; # (ò; ò; o◌̀; ò; o◌̀; ) LATIN SMALL LETTER O WITH GRAVE
+00F3;00F3;006F 0301;00F3;006F 0301; # (ó; ó; oâ—ŒÌ; ó; oâ—ŒÌ; ) LATIN SMALL LETTER O WITH ACUTE
+00F4;00F4;006F 0302;00F4;006F 0302; # (ô; ô; o◌̂; ô; o◌̂; ) LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F5;00F5;006F 0303;00F5;006F 0303; # (õ; õ; o◌̃; õ; o◌̃; ) LATIN SMALL LETTER O WITH TILDE
+00F6;00F6;006F 0308;00F6;006F 0308; # (ö; ö; o◌̈; ö; o◌̈; ) LATIN SMALL LETTER O WITH DIAERESIS
+00F9;00F9;0075 0300;00F9;0075 0300; # (ù; ù; u◌̀; ù; u◌̀; ) LATIN SMALL LETTER U WITH GRAVE
+00FA;00FA;0075 0301;00FA;0075 0301; # (ú; ú; uâ—ŒÌ; ú; uâ—ŒÌ; ) LATIN SMALL LETTER U WITH ACUTE
+00FB;00FB;0075 0302;00FB;0075 0302; # (û; û; u◌̂; û; u◌̂; ) LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC;00FC;0075 0308;00FC;0075 0308; # (ü; ü; u◌̈; ü; u◌̈; ) LATIN SMALL LETTER U WITH DIAERESIS
+00FD;00FD;0079 0301;00FD;0079 0301; # (ý; ý; yâ—ŒÌ; ý; yâ—ŒÌ; ) LATIN SMALL LETTER Y WITH ACUTE
+00FF;00FF;0079 0308;00FF;0079 0308; # (ÿ; ÿ; y◌̈; ÿ; y◌̈; ) LATIN SMALL LETTER Y WITH DIAERESIS
+0100;0100;0041 0304;0100;0041 0304; # (Ā; Ā; A◌̄; Ā; A◌̄; ) LATIN CAPITAL LETTER A WITH MACRON
+0101;0101;0061 0304;0101;0061 0304; # (Ä; Ä; a◌̄; Ä; a◌̄; ) LATIN SMALL LETTER A WITH MACRON
+0102;0102;0041 0306;0102;0041 0306; # (Ă; Ă; A◌̆; Ă; A◌̆; ) LATIN CAPITAL LETTER A WITH BREVE
+0103;0103;0061 0306;0103;0061 0306; # (ă; ă; a◌̆; ă; a◌̆; ) LATIN SMALL LETTER A WITH BREVE
+0104;0104;0041 0328;0104;0041 0328; # (Ą; Ą; A◌̨; Ą; A◌̨; ) LATIN CAPITAL LETTER A WITH OGONEK
+0105;0105;0061 0328;0105;0061 0328; # (ą; ą; a◌̨; ą; a◌̨; ) LATIN SMALL LETTER A WITH OGONEK
+0106;0106;0043 0301;0106;0043 0301; # (Ć; Ć; Câ—ŒÌ; Ć; Câ—ŒÌ; ) LATIN CAPITAL LETTER C WITH ACUTE
+0107;0107;0063 0301;0107;0063 0301; # (ć; ć; câ—ŒÌ; ć; câ—ŒÌ; ) LATIN SMALL LETTER C WITH ACUTE
+0108;0108;0043 0302;0108;0043 0302; # (Ĉ; Ĉ; C◌̂; Ĉ; C◌̂; ) LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109;0109;0063 0302;0109;0063 0302; # (ĉ; ĉ; c◌̂; ĉ; c◌̂; ) LATIN SMALL LETTER C WITH CIRCUMFLEX
+010A;010A;0043 0307;010A;0043 0307; # (Ċ; Ċ; C◌̇; Ċ; C◌̇; ) LATIN CAPITAL LETTER C WITH DOT ABOVE
+010B;010B;0063 0307;010B;0063 0307; # (ċ; ċ; c◌̇; ċ; c◌̇; ) LATIN SMALL LETTER C WITH DOT ABOVE
+010C;010C;0043 030C;010C;0043 030C; # (Č; Č; C◌̌; Č; C◌̌; ) LATIN CAPITAL LETTER C WITH CARON
+010D;010D;0063 030C;010D;0063 030C; # (Ä; Ä; c◌̌; Ä; c◌̌; ) LATIN SMALL LETTER C WITH CARON
+010E;010E;0044 030C;010E;0044 030C; # (Ď; Ď; D◌̌; Ď; D◌̌; ) LATIN CAPITAL LETTER D WITH CARON
+010F;010F;0064 030C;010F;0064 030C; # (Ä; Ä; d◌̌; Ä; d◌̌; ) LATIN SMALL LETTER D WITH CARON
+0112;0112;0045 0304;0112;0045 0304; # (Ē; Ē; E◌̄; Ē; E◌̄; ) LATIN CAPITAL LETTER E WITH MACRON
+0113;0113;0065 0304;0113;0065 0304; # (ē; ē; e◌̄; ē; e◌̄; ) LATIN SMALL LETTER E WITH MACRON
+0114;0114;0045 0306;0114;0045 0306; # (Ĕ; Ĕ; E◌̆; Ĕ; E◌̆; ) LATIN CAPITAL LETTER E WITH BREVE
+0115;0115;0065 0306;0115;0065 0306; # (ĕ; ĕ; e◌̆; ĕ; e◌̆; ) LATIN SMALL LETTER E WITH BREVE
+0116;0116;0045 0307;0116;0045 0307; # (Ė; Ė; E◌̇; Ė; E◌̇; ) LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117;0117;0065 0307;0117;0065 0307; # (ė; ė; e◌̇; ė; e◌̇; ) LATIN SMALL LETTER E WITH DOT ABOVE
+0118;0118;0045 0328;0118;0045 0328; # (Ę; Ę; E◌̨; Ę; E◌̨; ) LATIN CAPITAL LETTER E WITH OGONEK
+0119;0119;0065 0328;0119;0065 0328; # (ę; ę; e◌̨; ę; e◌̨; ) LATIN SMALL LETTER E WITH OGONEK
+011A;011A;0045 030C;011A;0045 030C; # (Ě; Ě; E◌̌; Ě; E◌̌; ) LATIN CAPITAL LETTER E WITH CARON
+011B;011B;0065 030C;011B;0065 030C; # (ě; ě; e◌̌; ě; e◌̌; ) LATIN SMALL LETTER E WITH CARON
+011C;011C;0047 0302;011C;0047 0302; # (Ĝ; Ĝ; G◌̂; Ĝ; G◌̂; ) LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011D;011D;0067 0302;011D;0067 0302; # (Ä; Ä; g◌̂; Ä; g◌̂; ) LATIN SMALL LETTER G WITH CIRCUMFLEX
+011E;011E;0047 0306;011E;0047 0306; # (Ğ; Ğ; G◌̆; Ğ; G◌̆; ) LATIN CAPITAL LETTER G WITH BREVE
+011F;011F;0067 0306;011F;0067 0306; # (ğ; ğ; g◌̆; ğ; g◌̆; ) LATIN SMALL LETTER G WITH BREVE
+0120;0120;0047 0307;0120;0047 0307; # (Ġ; Ġ; G◌̇; Ġ; G◌̇; ) LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121;0121;0067 0307;0121;0067 0307; # (ġ; ġ; g◌̇; ġ; g◌̇; ) LATIN SMALL LETTER G WITH DOT ABOVE
+0122;0122;0047 0327;0122;0047 0327; # (Ģ; Ģ; G◌̧; Ģ; G◌̧; ) LATIN CAPITAL LETTER G WITH CEDILLA
+0123;0123;0067 0327;0123;0067 0327; # (ģ; ģ; g◌̧; ģ; g◌̧; ) LATIN SMALL LETTER G WITH CEDILLA
+0124;0124;0048 0302;0124;0048 0302; # (Ĥ; Ĥ; H◌̂; Ĥ; H◌̂; ) LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125;0125;0068 0302;0125;0068 0302; # (ĥ; ĥ; h◌̂; ĥ; h◌̂; ) LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128;0128;0049 0303;0128;0049 0303; # (Ĩ; Ĩ; I◌̃; Ĩ; I◌̃; ) LATIN CAPITAL LETTER I WITH TILDE
+0129;0129;0069 0303;0129;0069 0303; # (ĩ; ĩ; i◌̃; ĩ; i◌̃; ) LATIN SMALL LETTER I WITH TILDE
+012A;012A;0049 0304;012A;0049 0304; # (Ī; Ī; I◌̄; Ī; I◌̄; ) LATIN CAPITAL LETTER I WITH MACRON
+012B;012B;0069 0304;012B;0069 0304; # (ī; ī; i◌̄; ī; i◌̄; ) LATIN SMALL LETTER I WITH MACRON
+012C;012C;0049 0306;012C;0049 0306; # (Ĭ; Ĭ; I◌̆; Ĭ; I◌̆; ) LATIN CAPITAL LETTER I WITH BREVE
+012D;012D;0069 0306;012D;0069 0306; # (ĭ; ĭ; i◌̆; ĭ; i◌̆; ) LATIN SMALL LETTER I WITH BREVE
+012E;012E;0049 0328;012E;0049 0328; # (Į; Į; I◌̨; Į; I◌̨; ) LATIN CAPITAL LETTER I WITH OGONEK
+012F;012F;0069 0328;012F;0069 0328; # (į; į; i◌̨; į; i◌̨; ) LATIN SMALL LETTER I WITH OGONEK
+0130;0130;0049 0307;0130;0049 0307; # (İ; İ; I◌̇; İ; I◌̇; ) LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132;0132;0132;0049 004A;0049 004A; # (IJ; IJ; IJ; IJ; IJ; ) LATIN CAPITAL LIGATURE IJ
+0133;0133;0133;0069 006A;0069 006A; # (ij; ij; ij; ij; ij; ) LATIN SMALL LIGATURE IJ
+0134;0134;004A 0302;0134;004A 0302; # (Ĵ; Ĵ; J◌̂; Ĵ; J◌̂; ) LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135;0135;006A 0302;0135;006A 0302; # (ĵ; ĵ; j◌̂; ĵ; j◌̂; ) LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136;0136;004B 0327;0136;004B 0327; # (Ķ; Ķ; K◌̧; Ķ; K◌̧; ) LATIN CAPITAL LETTER K WITH CEDILLA
+0137;0137;006B 0327;0137;006B 0327; # (ķ; ķ; k◌̧; ķ; k◌̧; ) LATIN SMALL LETTER K WITH CEDILLA
+0139;0139;004C 0301;0139;004C 0301; # (Ĺ; Ĺ; Lâ—ŒÌ; Ĺ; Lâ—ŒÌ; ) LATIN CAPITAL LETTER L WITH ACUTE
+013A;013A;006C 0301;013A;006C 0301; # (ĺ; ĺ; lâ—ŒÌ; ĺ; lâ—ŒÌ; ) LATIN SMALL LETTER L WITH ACUTE
+013B;013B;004C 0327;013B;004C 0327; # (Ļ; Ļ; L◌̧; Ļ; L◌̧; ) LATIN CAPITAL LETTER L WITH CEDILLA
+013C;013C;006C 0327;013C;006C 0327; # (ļ; ļ; l◌̧; ļ; l◌̧; ) LATIN SMALL LETTER L WITH CEDILLA
+013D;013D;004C 030C;013D;004C 030C; # (Ľ; Ľ; L◌̌; Ľ; L◌̌; ) LATIN CAPITAL LETTER L WITH CARON
+013E;013E;006C 030C;013E;006C 030C; # (ľ; ľ; l◌̌; ľ; l◌̌; ) LATIN SMALL LETTER L WITH CARON
+013F;013F;013F;004C 00B7;004C 00B7; # (Ŀ; Ŀ; Ŀ; L·; L·; ) LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140;0140;0140;006C 00B7;006C 00B7; # (ŀ; ŀ; ŀ; l·; l·; ) LATIN SMALL LETTER L WITH MIDDLE DOT
+0143;0143;004E 0301;0143;004E 0301; # (Ń; Ń; Nâ—ŒÌ; Ń; Nâ—ŒÌ; ) LATIN CAPITAL LETTER N WITH ACUTE
+0144;0144;006E 0301;0144;006E 0301; # (Å„; Å„; nâ—ŒÌ; Å„; nâ—ŒÌ; ) LATIN SMALL LETTER N WITH ACUTE
+0145;0145;004E 0327;0145;004E 0327; # (Ņ; Ņ; N◌̧; Ņ; N◌̧; ) LATIN CAPITAL LETTER N WITH CEDILLA
+0146;0146;006E 0327;0146;006E 0327; # (ņ; ņ; n◌̧; ņ; n◌̧; ) LATIN SMALL LETTER N WITH CEDILLA
+0147;0147;004E 030C;0147;004E 030C; # (Ň; Ň; N◌̌; Ň; N◌̌; ) LATIN CAPITAL LETTER N WITH CARON
+0148;0148;006E 030C;0148;006E 030C; # (ň; ň; n◌̌; ň; n◌̌; ) LATIN SMALL LETTER N WITH CARON
+0149;0149;0149;02BC 006E;02BC 006E; # (ʼn; ʼn; ʼn; ʼn; ʼn; ) LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014C;014C;004F 0304;014C;004F 0304; # (Ō; Ō; O◌̄; Ō; O◌̄; ) LATIN CAPITAL LETTER O WITH MACRON
+014D;014D;006F 0304;014D;006F 0304; # (Å; Å; o◌̄; Å; o◌̄; ) LATIN SMALL LETTER O WITH MACRON
+014E;014E;004F 0306;014E;004F 0306; # (Ŏ; Ŏ; O◌̆; Ŏ; O◌̆; ) LATIN CAPITAL LETTER O WITH BREVE
+014F;014F;006F 0306;014F;006F 0306; # (Å; Å; o◌̆; Å; o◌̆; ) LATIN SMALL LETTER O WITH BREVE
+0150;0150;004F 030B;0150;004F 030B; # (Å; Å; O◌̋; Å; O◌̋; ) LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151;0151;006F 030B;0151;006F 030B; # (ő; ő; o◌̋; ő; o◌̋; ) LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154;0154;0052 0301;0154;0052 0301; # (Å”; Å”; Râ—ŒÌ; Å”; Râ—ŒÌ; ) LATIN CAPITAL LETTER R WITH ACUTE
+0155;0155;0072 0301;0155;0072 0301; # (Å•; Å•; râ—ŒÌ; Å•; râ—ŒÌ; ) LATIN SMALL LETTER R WITH ACUTE
+0156;0156;0052 0327;0156;0052 0327; # (Ŗ; Ŗ; R◌̧; Ŗ; R◌̧; ) LATIN CAPITAL LETTER R WITH CEDILLA
+0157;0157;0072 0327;0157;0072 0327; # (ŗ; ŗ; r◌̧; ŗ; r◌̧; ) LATIN SMALL LETTER R WITH CEDILLA
+0158;0158;0052 030C;0158;0052 030C; # (Ř; Ř; R◌̌; Ř; R◌̌; ) LATIN CAPITAL LETTER R WITH CARON
+0159;0159;0072 030C;0159;0072 030C; # (ř; ř; r◌̌; ř; r◌̌; ) LATIN SMALL LETTER R WITH CARON
+015A;015A;0053 0301;015A;0053 0301; # (Åš; Åš; Sâ—ŒÌ; Åš; Sâ—ŒÌ; ) LATIN CAPITAL LETTER S WITH ACUTE
+015B;015B;0073 0301;015B;0073 0301; # (Å›; Å›; sâ—ŒÌ; Å›; sâ—ŒÌ; ) LATIN SMALL LETTER S WITH ACUTE
+015C;015C;0053 0302;015C;0053 0302; # (Ŝ; Ŝ; S◌̂; Ŝ; S◌̂; ) LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015D;015D;0073 0302;015D;0073 0302; # (Å; Å; s◌̂; Å; s◌̂; ) LATIN SMALL LETTER S WITH CIRCUMFLEX
+015E;015E;0053 0327;015E;0053 0327; # (Ş; Ş; S◌̧; Ş; S◌̧; ) LATIN CAPITAL LETTER S WITH CEDILLA
+015F;015F;0073 0327;015F;0073 0327; # (ş; ş; s◌̧; ş; s◌̧; ) LATIN SMALL LETTER S WITH CEDILLA
+0160;0160;0053 030C;0160;0053 030C; # (Š; Š; S◌̌; Š; S◌̌; ) LATIN CAPITAL LETTER S WITH CARON
+0161;0161;0073 030C;0161;0073 030C; # (š; š; s◌̌; š; s◌̌; ) LATIN SMALL LETTER S WITH CARON
+0162;0162;0054 0327;0162;0054 0327; # (Ţ; Ţ; T◌̧; Ţ; T◌̧; ) LATIN CAPITAL LETTER T WITH CEDILLA
+0163;0163;0074 0327;0163;0074 0327; # (ţ; ţ; t◌̧; ţ; t◌̧; ) LATIN SMALL LETTER T WITH CEDILLA
+0164;0164;0054 030C;0164;0054 030C; # (Ť; Ť; T◌̌; Ť; T◌̌; ) LATIN CAPITAL LETTER T WITH CARON
+0165;0165;0074 030C;0165;0074 030C; # (ť; ť; t◌̌; ť; t◌̌; ) LATIN SMALL LETTER T WITH CARON
+0168;0168;0055 0303;0168;0055 0303; # (Ũ; Ũ; U◌̃; Ũ; U◌̃; ) LATIN CAPITAL LETTER U WITH TILDE
+0169;0169;0075 0303;0169;0075 0303; # (ũ; ũ; u◌̃; ũ; u◌̃; ) LATIN SMALL LETTER U WITH TILDE
+016A;016A;0055 0304;016A;0055 0304; # (Ū; Ū; U◌̄; Ū; U◌̄; ) LATIN CAPITAL LETTER U WITH MACRON
+016B;016B;0075 0304;016B;0075 0304; # (ū; ū; u◌̄; ū; u◌̄; ) LATIN SMALL LETTER U WITH MACRON
+016C;016C;0055 0306;016C;0055 0306; # (Ŭ; Ŭ; U◌̆; Ŭ; U◌̆; ) LATIN CAPITAL LETTER U WITH BREVE
+016D;016D;0075 0306;016D;0075 0306; # (ŭ; ŭ; u◌̆; ŭ; u◌̆; ) LATIN SMALL LETTER U WITH BREVE
+016E;016E;0055 030A;016E;0055 030A; # (Ů; Ů; U◌̊; Ů; U◌̊; ) LATIN CAPITAL LETTER U WITH RING ABOVE
+016F;016F;0075 030A;016F;0075 030A; # (ů; ů; u◌̊; ů; u◌̊; ) LATIN SMALL LETTER U WITH RING ABOVE
+0170;0170;0055 030B;0170;0055 030B; # (Ű; Ű; U◌̋; Ű; U◌̋; ) LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171;0171;0075 030B;0171;0075 030B; # (ű; ű; u◌̋; ű; u◌̋; ) LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172;0172;0055 0328;0172;0055 0328; # (Ų; Ų; U◌̨; Ų; U◌̨; ) LATIN CAPITAL LETTER U WITH OGONEK
+0173;0173;0075 0328;0173;0075 0328; # (ų; ų; u◌̨; ų; u◌̨; ) LATIN SMALL LETTER U WITH OGONEK
+0174;0174;0057 0302;0174;0057 0302; # (Ŵ; Ŵ; W◌̂; Ŵ; W◌̂; ) LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175;0175;0077 0302;0175;0077 0302; # (ŵ; ŵ; w◌̂; ŵ; w◌̂; ) LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176;0176;0059 0302;0176;0059 0302; # (Ŷ; Ŷ; Y◌̂; Ŷ; Y◌̂; ) LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177;0177;0079 0302;0177;0079 0302; # (ŷ; ŷ; y◌̂; ŷ; y◌̂; ) LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178;0178;0059 0308;0178;0059 0308; # (Ÿ; Ÿ; Y◌̈; Ÿ; Y◌̈; ) LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179;0179;005A 0301;0179;005A 0301; # (Ź; Ź; Zâ—ŒÌ; Ź; Zâ—ŒÌ; ) LATIN CAPITAL LETTER Z WITH ACUTE
+017A;017A;007A 0301;017A;007A 0301; # (ź; ź; zâ—ŒÌ; ź; zâ—ŒÌ; ) LATIN SMALL LETTER Z WITH ACUTE
+017B;017B;005A 0307;017B;005A 0307; # (Ż; Ż; Z◌̇; Ż; Z◌̇; ) LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017C;017C;007A 0307;017C;007A 0307; # (ż; ż; z◌̇; ż; z◌̇; ) LATIN SMALL LETTER Z WITH DOT ABOVE
+017D;017D;005A 030C;017D;005A 030C; # (Ž; Ž; Z◌̌; Ž; Z◌̌; ) LATIN CAPITAL LETTER Z WITH CARON
+017E;017E;007A 030C;017E;007A 030C; # (ž; ž; z◌̌; ž; z◌̌; ) LATIN SMALL LETTER Z WITH CARON
+017F;017F;017F;0073;0073; # (Å¿; Å¿; Å¿; s; s; ) LATIN SMALL LETTER LONG S
+01A0;01A0;004F 031B;01A0;004F 031B; # (Ơ; Ơ; O◌̛; Ơ; O◌̛; ) LATIN CAPITAL LETTER O WITH HORN
+01A1;01A1;006F 031B;01A1;006F 031B; # (ơ; ơ; o◌̛; ơ; o◌̛; ) LATIN SMALL LETTER O WITH HORN
+01AF;01AF;0055 031B;01AF;0055 031B; # (Ư; Ư; U◌̛; Ư; U◌̛; ) LATIN CAPITAL LETTER U WITH HORN
+01B0;01B0;0075 031B;01B0;0075 031B; # (ư; ư; u◌̛; ư; u◌̛; ) LATIN SMALL LETTER U WITH HORN
+01C4;01C4;01C4;0044 017D;0044 005A 030C; # (DŽ; DŽ; DŽ; DŽ; DZ◌̌; ) LATIN CAPITAL LETTER DZ WITH CARON
+01C5;01C5;01C5;0044 017E;0044 007A 030C; # (Dž; Dž; Dž; Dž; Dz◌̌; ) LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C6;01C6;01C6;0064 017E;0064 007A 030C; # (dž; dž; dž; dž; dz◌̌; ) LATIN SMALL LETTER DZ WITH CARON
+01C7;01C7;01C7;004C 004A;004C 004A; # (LJ; LJ; LJ; LJ; LJ; ) LATIN CAPITAL LETTER LJ
+01C8;01C8;01C8;004C 006A;004C 006A; # (Lj; Lj; Lj; Lj; Lj; ) LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01C9;01C9;01C9;006C 006A;006C 006A; # (lj; lj; lj; lj; lj; ) LATIN SMALL LETTER LJ
+01CA;01CA;01CA;004E 004A;004E 004A; # (ÇŠ; ÇŠ; ÇŠ; NJ; NJ; ) LATIN CAPITAL LETTER NJ
+01CB;01CB;01CB;004E 006A;004E 006A; # (Ç‹; Ç‹; Ç‹; Nj; Nj; ) LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CC;01CC;01CC;006E 006A;006E 006A; # (nj; nj; nj; nj; nj; ) LATIN SMALL LETTER NJ
+01CD;01CD;0041 030C;01CD;0041 030C; # (Ç; Ç; A◌̌; Ç; A◌̌; ) LATIN CAPITAL LETTER A WITH CARON
+01CE;01CE;0061 030C;01CE;0061 030C; # (ǎ; ǎ; a◌̌; ǎ; a◌̌; ) LATIN SMALL LETTER A WITH CARON
+01CF;01CF;0049 030C;01CF;0049 030C; # (Ç; Ç; I◌̌; Ç; I◌̌; ) LATIN CAPITAL LETTER I WITH CARON
+01D0;01D0;0069 030C;01D0;0069 030C; # (Ç; Ç; i◌̌; Ç; i◌̌; ) LATIN SMALL LETTER I WITH CARON
+01D1;01D1;004F 030C;01D1;004F 030C; # (Ǒ; Ǒ; O◌̌; Ǒ; O◌̌; ) LATIN CAPITAL LETTER O WITH CARON
+01D2;01D2;006F 030C;01D2;006F 030C; # (ǒ; ǒ; o◌̌; ǒ; o◌̌; ) LATIN SMALL LETTER O WITH CARON
+01D3;01D3;0055 030C;01D3;0055 030C; # (Ǔ; Ǔ; U◌̌; Ǔ; U◌̌; ) LATIN CAPITAL LETTER U WITH CARON
+01D4;01D4;0075 030C;01D4;0075 030C; # (ǔ; ǔ; u◌̌; ǔ; u◌̌; ) LATIN SMALL LETTER U WITH CARON
+01D5;01D5;0055 0308 0304;01D5;0055 0308 0304; # (Ǖ; Ǖ; U◌̈◌̄; Ǖ; U◌̈◌̄; ) LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D6;01D6;0075 0308 0304;01D6;0075 0308 0304; # (ǖ; ǖ; u◌̈◌̄; ǖ; u◌̈◌̄; ) LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D7;01D7;0055 0308 0301;01D7;0055 0308 0301; # (Ç—; Ç—; U◌̈◌Ì; Ç—; U◌̈◌Ì; ) LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D8;01D8;0075 0308 0301;01D8;0075 0308 0301; # (ǘ; ǘ; u◌̈◌Ì; ǘ; u◌̈◌Ì; ) LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D9;01D9;0055 0308 030C;01D9;0055 0308 030C; # (Ǚ; Ǚ; U◌̈◌̌; Ǚ; U◌̈◌̌; ) LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DA;01DA;0075 0308 030C;01DA;0075 0308 030C; # (ǚ; ǚ; u◌̈◌̌; ǚ; u◌̈◌̌; ) LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01DB;01DB;0055 0308 0300;01DB;0055 0308 0300; # (Ǜ; Ǜ; U◌̈◌̀; Ǜ; U◌̈◌̀; ) LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DC;01DC;0075 0308 0300;01DC;0075 0308 0300; # (ǜ; ǜ; u◌̈◌̀; ǜ; u◌̈◌̀; ) LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE;01DE;0041 0308 0304;01DE;0041 0308 0304; # (Ǟ; Ǟ; A◌̈◌̄; Ǟ; A◌̈◌̄; ) LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01DF;01DF;0061 0308 0304;01DF;0061 0308 0304; # (ǟ; ǟ; a◌̈◌̄; ǟ; a◌̈◌̄; ) LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E0;01E0;0041 0307 0304;01E0;0041 0307 0304; # (Ǡ; Ǡ; A◌̇◌̄; Ǡ; A◌̇◌̄; ) LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E1;01E1;0061 0307 0304;01E1;0061 0307 0304; # (ǡ; ǡ; a◌̇◌̄; ǡ; a◌̇◌̄; ) LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E2;01E2;00C6 0304;01E2;00C6 0304; # (Ǣ; Ǣ; Æ◌̄; Ǣ; Æ◌̄; ) LATIN CAPITAL LETTER AE WITH MACRON
+01E3;01E3;00E6 0304;01E3;00E6 0304; # (ǣ; ǣ; æ◌̄; ǣ; æ◌̄; ) LATIN SMALL LETTER AE WITH MACRON
+01E6;01E6;0047 030C;01E6;0047 030C; # (Ǧ; Ǧ; G◌̌; Ǧ; G◌̌; ) LATIN CAPITAL LETTER G WITH CARON
+01E7;01E7;0067 030C;01E7;0067 030C; # (ǧ; ǧ; g◌̌; ǧ; g◌̌; ) LATIN SMALL LETTER G WITH CARON
+01E8;01E8;004B 030C;01E8;004B 030C; # (Ǩ; Ǩ; K◌̌; Ǩ; K◌̌; ) LATIN CAPITAL LETTER K WITH CARON
+01E9;01E9;006B 030C;01E9;006B 030C; # (ǩ; ǩ; k◌̌; ǩ; k◌̌; ) LATIN SMALL LETTER K WITH CARON
+01EA;01EA;004F 0328;01EA;004F 0328; # (Ǫ; Ǫ; O◌̨; Ǫ; O◌̨; ) LATIN CAPITAL LETTER O WITH OGONEK
+01EB;01EB;006F 0328;01EB;006F 0328; # (ǫ; ǫ; o◌̨; ǫ; o◌̨; ) LATIN SMALL LETTER O WITH OGONEK
+01EC;01EC;004F 0328 0304;01EC;004F 0328 0304; # (Ǭ; Ǭ; O◌̨◌̄; Ǭ; O◌̨◌̄; ) LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01ED;01ED;006F 0328 0304;01ED;006F 0328 0304; # (ǭ; ǭ; o◌̨◌̄; ǭ; o◌̨◌̄; ) LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EE;01EE;01B7 030C;01EE;01B7 030C; # (Ǯ; Ǯ; Ʒ◌̌; Ǯ; Ʒ◌̌; ) LATIN CAPITAL LETTER EZH WITH CARON
+01EF;01EF;0292 030C;01EF;0292 030C; # (ǯ; ǯ; ʒ◌̌; ǯ; ʒ◌̌; ) LATIN SMALL LETTER EZH WITH CARON
+01F0;01F0;006A 030C;01F0;006A 030C; # (ǰ; ǰ; j◌̌; ǰ; j◌̌; ) LATIN SMALL LETTER J WITH CARON
+01F1;01F1;01F1;0044 005A;0044 005A; # (DZ; DZ; DZ; DZ; DZ; ) LATIN CAPITAL LETTER DZ
+01F2;01F2;01F2;0044 007A;0044 007A; # (Dz; Dz; Dz; Dz; Dz; ) LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F3;01F3;01F3;0064 007A;0064 007A; # (dz; dz; dz; dz; dz; ) LATIN SMALL LETTER DZ
+01F4;01F4;0047 0301;01F4;0047 0301; # (Ç´; Ç´; Gâ—ŒÌ; Ç´; Gâ—ŒÌ; ) LATIN CAPITAL LETTER G WITH ACUTE
+01F5;01F5;0067 0301;01F5;0067 0301; # (ǵ; ǵ; gâ—ŒÌ; ǵ; gâ—ŒÌ; ) LATIN SMALL LETTER G WITH ACUTE
+01F8;01F8;004E 0300;01F8;004E 0300; # (Ǹ; Ǹ; N◌̀; Ǹ; N◌̀; ) LATIN CAPITAL LETTER N WITH GRAVE
+01F9;01F9;006E 0300;01F9;006E 0300; # (ǹ; ǹ; n◌̀; ǹ; n◌̀; ) LATIN SMALL LETTER N WITH GRAVE
+01FA;01FA;0041 030A 0301;01FA;0041 030A 0301; # (Ǻ; Ǻ; A◌̊◌Ì; Ǻ; A◌̊◌Ì; ) LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FB;01FB;0061 030A 0301;01FB;0061 030A 0301; # (Ç»; Ç»; a◌̊◌Ì; Ç»; a◌̊◌Ì; ) LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FC;01FC;00C6 0301;01FC;00C6 0301; # (Ǽ; Ǽ; Æ◌Ì; Ǽ; Æ◌Ì; ) LATIN CAPITAL LETTER AE WITH ACUTE
+01FD;01FD;00E6 0301;01FD;00E6 0301; # (ǽ; ǽ; æ◌Ì; ǽ; æ◌Ì; ) LATIN SMALL LETTER AE WITH ACUTE
+01FE;01FE;00D8 0301;01FE;00D8 0301; # (Ǿ; Ǿ; Ø◌Ì; Ǿ; Ø◌Ì; ) LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01FF;01FF;00F8 0301;01FF;00F8 0301; # (Ç¿; Ç¿; ø◌Ì; Ç¿; ø◌Ì; ) LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0200;0200;0041 030F;0200;0041 030F; # (È€; È€; Aâ—ŒÌ; È€; Aâ—ŒÌ; ) LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0201;0201;0061 030F;0201;0061 030F; # (È; È; aâ—ŒÌ; È; aâ—ŒÌ; ) LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0202;0202;0041 0311;0202;0041 0311; # (Ȃ; Ȃ; A◌̑; Ȃ; A◌̑; ) LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0203;0203;0061 0311;0203;0061 0311; # (ȃ; ȃ; a◌̑; ȃ; a◌̑; ) LATIN SMALL LETTER A WITH INVERTED BREVE
+0204;0204;0045 030F;0204;0045 030F; # (È„; È„; Eâ—ŒÌ; È„; Eâ—ŒÌ; ) LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0205;0205;0065 030F;0205;0065 030F; # (È…; È…; eâ—ŒÌ; È…; eâ—ŒÌ; ) LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0206;0206;0045 0311;0206;0045 0311; # (Ȇ; Ȇ; E◌̑; Ȇ; E◌̑; ) LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0207;0207;0065 0311;0207;0065 0311; # (ȇ; ȇ; e◌̑; ȇ; e◌̑; ) LATIN SMALL LETTER E WITH INVERTED BREVE
+0208;0208;0049 030F;0208;0049 030F; # (Ȉ; Ȉ; Iâ—ŒÌ; Ȉ; Iâ—ŒÌ; ) LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+0209;0209;0069 030F;0209;0069 030F; # (ȉ; ȉ; iâ—ŒÌ; ȉ; iâ—ŒÌ; ) LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020A;020A;0049 0311;020A;0049 0311; # (Ȋ; Ȋ; I◌̑; Ȋ; I◌̑; ) LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020B;020B;0069 0311;020B;0069 0311; # (ȋ; ȋ; i◌̑; ȋ; i◌̑; ) LATIN SMALL LETTER I WITH INVERTED BREVE
+020C;020C;004F 030F;020C;004F 030F; # (ÈŒ; ÈŒ; Oâ—ŒÌ; ÈŒ; Oâ—ŒÌ; ) LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020D;020D;006F 030F;020D;006F 030F; # (È; È; oâ—ŒÌ; È; oâ—ŒÌ; ) LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020E;020E;004F 0311;020E;004F 0311; # (Ȏ; Ȏ; O◌̑; Ȏ; O◌̑; ) LATIN CAPITAL LETTER O WITH INVERTED BREVE
+020F;020F;006F 0311;020F;006F 0311; # (È; È; o◌̑; È; o◌̑; ) LATIN SMALL LETTER O WITH INVERTED BREVE
+0210;0210;0052 030F;0210;0052 030F; # (È; È; Râ—ŒÌ; È; Râ—ŒÌ; ) LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0211;0211;0072 030F;0211;0072 030F; # (È‘; È‘; râ—ŒÌ; È‘; râ—ŒÌ; ) LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0212;0212;0052 0311;0212;0052 0311; # (Ȓ; Ȓ; R◌̑; Ȓ; R◌̑; ) LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0213;0213;0072 0311;0213;0072 0311; # (ȓ; ȓ; r◌̑; ȓ; r◌̑; ) LATIN SMALL LETTER R WITH INVERTED BREVE
+0214;0214;0055 030F;0214;0055 030F; # (È”; È”; Uâ—ŒÌ; È”; Uâ—ŒÌ; ) LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0215;0215;0075 030F;0215;0075 030F; # (È•; È•; uâ—ŒÌ; È•; uâ—ŒÌ; ) LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0216;0216;0055 0311;0216;0055 0311; # (Ȗ; Ȗ; U◌̑; Ȗ; U◌̑; ) LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0217;0217;0075 0311;0217;0075 0311; # (ȗ; ȗ; u◌̑; ȗ; u◌̑; ) LATIN SMALL LETTER U WITH INVERTED BREVE
+0218;0218;0053 0326;0218;0053 0326; # (Ș; Ș; S◌̦; Ș; S◌̦; ) LATIN CAPITAL LETTER S WITH COMMA BELOW
+0219;0219;0073 0326;0219;0073 0326; # (ș; ș; s◌̦; ș; s◌̦; ) LATIN SMALL LETTER S WITH COMMA BELOW
+021A;021A;0054 0326;021A;0054 0326; # (Ț; Ț; T◌̦; Ț; T◌̦; ) LATIN CAPITAL LETTER T WITH COMMA BELOW
+021B;021B;0074 0326;021B;0074 0326; # (ț; ț; t◌̦; ț; t◌̦; ) LATIN SMALL LETTER T WITH COMMA BELOW
+021E;021E;0048 030C;021E;0048 030C; # (Ȟ; Ȟ; H◌̌; Ȟ; H◌̌; ) LATIN CAPITAL LETTER H WITH CARON
+021F;021F;0068 030C;021F;0068 030C; # (ȟ; ȟ; h◌̌; ȟ; h◌̌; ) LATIN SMALL LETTER H WITH CARON
+0226;0226;0041 0307;0226;0041 0307; # (Ȧ; Ȧ; A◌̇; Ȧ; A◌̇; ) LATIN CAPITAL LETTER A WITH DOT ABOVE
+0227;0227;0061 0307;0227;0061 0307; # (ȧ; ȧ; a◌̇; ȧ; a◌̇; ) LATIN SMALL LETTER A WITH DOT ABOVE
+0228;0228;0045 0327;0228;0045 0327; # (Ȩ; Ȩ; E◌̧; Ȩ; E◌̧; ) LATIN CAPITAL LETTER E WITH CEDILLA
+0229;0229;0065 0327;0229;0065 0327; # (ȩ; ȩ; e◌̧; ȩ; e◌̧; ) LATIN SMALL LETTER E WITH CEDILLA
+022A;022A;004F 0308 0304;022A;004F 0308 0304; # (Ȫ; Ȫ; O◌̈◌̄; Ȫ; O◌̈◌̄; ) LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022B;022B;006F 0308 0304;022B;006F 0308 0304; # (ȫ; ȫ; o◌̈◌̄; ȫ; o◌̈◌̄; ) LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022C;022C;004F 0303 0304;022C;004F 0303 0304; # (Ȭ; Ȭ; O◌̃◌̄; Ȭ; O◌̃◌̄; ) LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022D;022D;006F 0303 0304;022D;006F 0303 0304; # (ȭ; ȭ; o◌̃◌̄; ȭ; o◌̃◌̄; ) LATIN SMALL LETTER O WITH TILDE AND MACRON
+022E;022E;004F 0307;022E;004F 0307; # (Ȯ; Ȯ; O◌̇; Ȯ; O◌̇; ) LATIN CAPITAL LETTER O WITH DOT ABOVE
+022F;022F;006F 0307;022F;006F 0307; # (ȯ; ȯ; o◌̇; ȯ; o◌̇; ) LATIN SMALL LETTER O WITH DOT ABOVE
+0230;0230;004F 0307 0304;0230;004F 0307 0304; # (Ȱ; Ȱ; O◌̇◌̄; Ȱ; O◌̇◌̄; ) LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0231;0231;006F 0307 0304;0231;006F 0307 0304; # (ȱ; ȱ; o◌̇◌̄; ȱ; o◌̇◌̄; ) LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0232;0232;0059 0304;0232;0059 0304; # (Ȳ; Ȳ; Y◌̄; Ȳ; Y◌̄; ) LATIN CAPITAL LETTER Y WITH MACRON
+0233;0233;0079 0304;0233;0079 0304; # (ȳ; ȳ; y◌̄; ȳ; y◌̄; ) LATIN SMALL LETTER Y WITH MACRON
+02B0;02B0;02B0;0068;0068; # (Ê°; Ê°; Ê°; h; h; ) MODIFIER LETTER SMALL H
+02B1;02B1;02B1;0266;0266; # (ʱ; ʱ; ʱ; ɦ; ɦ; ) MODIFIER LETTER SMALL H WITH HOOK
+02B2;02B2;02B2;006A;006A; # (ʲ; ʲ; ʲ; j; j; ) MODIFIER LETTER SMALL J
+02B3;02B3;02B3;0072;0072; # (ʳ; ʳ; ʳ; r; r; ) MODIFIER LETTER SMALL R
+02B4;02B4;02B4;0279;0279; # (ʴ; ʴ; ʴ; ɹ; ɹ; ) MODIFIER LETTER SMALL TURNED R
+02B5;02B5;02B5;027B;027B; # (ʵ; ʵ; ʵ; ɻ; ɻ; ) MODIFIER LETTER SMALL TURNED R WITH HOOK
+02B6;02B6;02B6;0281;0281; # (ʶ; ʶ; ʶ; Ê; Ê; ) MODIFIER LETTER SMALL CAPITAL INVERTED R
+02B7;02B7;02B7;0077;0077; # (Ê·; Ê·; Ê·; w; w; ) MODIFIER LETTER SMALL W
+02B8;02B8;02B8;0079;0079; # (ʸ; ʸ; ʸ; y; y; ) MODIFIER LETTER SMALL Y
+02D8;02D8;02D8;0020 0306;0020 0306; # (˘; ˘; ˘; ◌̆; ◌̆; ) BREVE
+02D9;02D9;02D9;0020 0307;0020 0307; # (˙; ˙; ˙; ◌̇; ◌̇; ) DOT ABOVE
+02DA;02DA;02DA;0020 030A;0020 030A; # (˚; ˚; ˚; ◌̊; ◌̊; ) RING ABOVE
+02DB;02DB;02DB;0020 0328;0020 0328; # (˛; ˛; ˛; ◌̨; ◌̨; ) OGONEK
+02DC;02DC;02DC;0020 0303;0020 0303; # (˜; ˜; ˜; ◌̃; ◌̃; ) SMALL TILDE
+02DD;02DD;02DD;0020 030B;0020 030B; # (Ë; Ë; Ë; ◌̋; ◌̋; ) DOUBLE ACUTE ACCENT
+02E0;02E0;02E0;0263;0263; # (ˠ; ˠ; ˠ; ɣ; ɣ; ) MODIFIER LETTER SMALL GAMMA
+02E1;02E1;02E1;006C;006C; # (Ë¡; Ë¡; Ë¡; l; l; ) MODIFIER LETTER SMALL L
+02E2;02E2;02E2;0073;0073; # (ˢ; ˢ; ˢ; s; s; ) MODIFIER LETTER SMALL S
+02E3;02E3;02E3;0078;0078; # (ˣ; ˣ; ˣ; x; x; ) MODIFIER LETTER SMALL X
+02E4;02E4;02E4;0295;0295; # (ˤ; ˤ; ˤ; ʕ; ʕ; ) MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+0340;0300;0300;0300;0300; # (◌̀; ◌̀; ◌̀; ◌̀; ◌̀; ) COMBINING GRAVE TONE MARK
+0341;0301;0301;0301;0301; # (â—ŒÍ; â—ŒÌ; â—ŒÌ; â—ŒÌ; â—ŒÌ; ) COMBINING ACUTE TONE MARK
+0343;0313;0313;0313;0313; # (◌̓; ◌̓; ◌̓; ◌̓; ◌̓; ) COMBINING GREEK KORONIS
+0344;0308 0301;0308 0301;0308 0301;0308 0301; # (◌̈́; ◌̈◌Ì; ◌̈◌Ì; ◌̈◌Ì; ◌̈◌Ì; ) COMBINING GREEK DIALYTIKA TONOS
+0374;02B9;02B9;02B9;02B9; # (ʹ; ʹ; ʹ; ʹ; ʹ; ) GREEK NUMERAL SIGN
+037A;037A;037A;0020 0345;0020 0345; # (ͺ; ͺ; ͺ; ◌ͅ; ◌ͅ; ) GREEK YPOGEGRAMMENI
+037E;003B;003B;003B;003B; # (;; ;; ;; ;; ;; ) GREEK QUESTION MARK
+0384;0384;0384;0020 0301;0020 0301; # (΄; ΄; ΄; â—ŒÌ; â—ŒÌ; ) GREEK TONOS
+0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301; # (Î…; Î…; ¨◌Ì; ◌̈◌Ì; ◌̈◌Ì; ) GREEK DIALYTIKA TONOS
+0386;0386;0391 0301;0386;0391 0301; # (Ά; Ά; Α◌Ì; Ά; Α◌Ì; ) GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387;00B7;00B7;00B7;00B7; # (·; ·; ·; ·; ·; ) GREEK ANO TELEIA
+0388;0388;0395 0301;0388;0395 0301; # (Έ; Έ; Ε◌Ì; Έ; Ε◌Ì; ) GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389;0389;0397 0301;0389;0397 0301; # (Ή; Ή; Η◌Ì; Ή; Η◌Ì; ) GREEK CAPITAL LETTER ETA WITH TONOS
+038A;038A;0399 0301;038A;0399 0301; # (Ί; Ί; Ι◌Ì; Ί; Ι◌Ì; ) GREEK CAPITAL LETTER IOTA WITH TONOS
+038C;038C;039F 0301;038C;039F 0301; # (ÎŒ; ÎŒ; Ο◌Ì; ÎŒ; Ο◌Ì; ) GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E;038E;03A5 0301;038E;03A5 0301; # (ÎŽ; ÎŽ; Υ◌Ì; ÎŽ; Υ◌Ì; ) GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F;038F;03A9 0301;038F;03A9 0301; # (Î; Î; Ω◌Ì; Î; Ω◌Ì; ) GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390;0390;03B9 0308 0301;0390;03B9 0308 0301; # (Î; Î; ι◌̈◌Ì; Î; ι◌̈◌Ì; ) GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA;03AA;0399 0308;03AA;0399 0308; # (Ϊ; Ϊ; Ι◌̈; Ϊ; Ι◌̈; ) GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB;03AB;03A5 0308;03AB;03A5 0308; # (Ϋ; Ϋ; Υ◌̈; Ϋ; Υ◌̈; ) GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03AC;03AC;03B1 0301;03AC;03B1 0301; # (ά; ά; α◌Ì; ά; α◌Ì; ) GREEK SMALL LETTER ALPHA WITH TONOS
+03AD;03AD;03B5 0301;03AD;03B5 0301; # (έ; έ; ε◌Ì; έ; ε◌Ì; ) GREEK SMALL LETTER EPSILON WITH TONOS
+03AE;03AE;03B7 0301;03AE;03B7 0301; # (ή; ή; η◌Ì; ή; η◌Ì; ) GREEK SMALL LETTER ETA WITH TONOS
+03AF;03AF;03B9 0301;03AF;03B9 0301; # (ί; ί; ι◌Ì; ί; ι◌Ì; ) GREEK SMALL LETTER IOTA WITH TONOS
+03B0;03B0;03C5 0308 0301;03B0;03C5 0308 0301; # (ΰ; ΰ; υ◌̈◌Ì; ΰ; υ◌̈◌Ì; ) GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA;03CA;03B9 0308;03CA;03B9 0308; # (ϊ; ϊ; ι◌̈; ϊ; ι◌̈; ) GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03CB;03CB;03C5 0308;03CB;03C5 0308; # (ϋ; ϋ; υ◌̈; ϋ; υ◌̈; ) GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03CC;03CC;03BF 0301;03CC;03BF 0301; # (ÏŒ; ÏŒ; ο◌Ì; ÏŒ; ο◌Ì; ) GREEK SMALL LETTER OMICRON WITH TONOS
+03CD;03CD;03C5 0301;03CD;03C5 0301; # (Ï; Ï; Ï…â—ŒÌ; Ï; Ï…â—ŒÌ; ) GREEK SMALL LETTER UPSILON WITH TONOS
+03CE;03CE;03C9 0301;03CE;03C9 0301; # (ÏŽ; ÏŽ; ω◌Ì; ÏŽ; ω◌Ì; ) GREEK SMALL LETTER OMEGA WITH TONOS
+03D0;03D0;03D0;03B2;03B2; # (Ï; Ï; Ï; β; β; ) GREEK BETA SYMBOL
+03D1;03D1;03D1;03B8;03B8; # (ϑ; ϑ; ϑ; θ; θ; ) GREEK THETA SYMBOL
+03D2;03D2;03D2;03A5;03A5; # (ϒ; ϒ; ϒ; Υ; Υ; ) GREEK UPSILON WITH HOOK SYMBOL
+03D3;03D3;03D2 0301;038E;03A5 0301; # (Ï“; Ï“; Ï’â—ŒÌ; ÎŽ; Υ◌Ì; ) GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03D4;03D4;03D2 0308;03AB;03A5 0308; # (ϔ; ϔ; ϒ◌̈; Ϋ; Υ◌̈; ) GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03D5;03D5;03D5;03C6;03C6; # (ϕ; ϕ; ϕ; φ; φ; ) GREEK PHI SYMBOL
+03D6;03D6;03D6;03C0;03C0; # (ϖ; ϖ; ϖ; π; π; ) GREEK PI SYMBOL
+03F0;03F0;03F0;03BA;03BA; # (ϰ; ϰ; ϰ; κ; κ; ) GREEK KAPPA SYMBOL
+03F1;03F1;03F1;03C1;03C1; # (ϱ; ϱ; ϱ; Ï; Ï; ) GREEK RHO SYMBOL
+03F2;03F2;03F2;03C2;03C2; # (ϲ; ϲ; ϲ; ς; ς; ) GREEK LUNATE SIGMA SYMBOL
+03F4;03F4;03F4;0398;0398; # (ϴ; ϴ; ϴ; Θ; Θ; ) GREEK CAPITAL THETA SYMBOL
+03F5;03F5;03F5;03B5;03B5; # (ϵ; ϵ; ϵ; ε; ε; ) GREEK LUNATE EPSILON SYMBOL
+03F9;03F9;03F9;03A3;03A3; # (Ϲ; Ϲ; Ϲ; Σ; Σ; ) GREEK CAPITAL LUNATE SIGMA SYMBOL
+0400;0400;0415 0300;0400;0415 0300; # (Ѐ; Ѐ; Е◌̀; Ѐ; Е◌̀; ) CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401;0401;0415 0308;0401;0415 0308; # (Ð; Ð; Е◌̈; Ð; Е◌̈; ) CYRILLIC CAPITAL LETTER IO
+0403;0403;0413 0301;0403;0413 0301; # (Ѓ; Ѓ; Г◌Ì; Ѓ; Г◌Ì; ) CYRILLIC CAPITAL LETTER GJE
+0407;0407;0406 0308;0407;0406 0308; # (Ї; Ї; І◌̈; Ї; І◌̈; ) CYRILLIC CAPITAL LETTER YI
+040C;040C;041A 0301;040C;041A 0301; # (ÐŒ; ÐŒ; К◌Ì; ÐŒ; К◌Ì; ) CYRILLIC CAPITAL LETTER KJE
+040D;040D;0418 0300;040D;0418 0300; # (Ð; Ð; И◌̀; Ð; И◌̀; ) CYRILLIC CAPITAL LETTER I WITH GRAVE
+040E;040E;0423 0306;040E;0423 0306; # (Ў; Ў; У◌̆; Ў; У◌̆; ) CYRILLIC CAPITAL LETTER SHORT U
+0419;0419;0418 0306;0419;0418 0306; # (Й; Й; И◌̆; Й; И◌̆; ) CYRILLIC CAPITAL LETTER SHORT I
+0439;0439;0438 0306;0439;0438 0306; # (й; й; и◌̆; й; и◌̆; ) CYRILLIC SMALL LETTER SHORT I
+0450;0450;0435 0300;0450;0435 0300; # (Ñ; Ñ; е◌̀; Ñ; е◌̀; ) CYRILLIC SMALL LETTER IE WITH GRAVE
+0451;0451;0435 0308;0451;0435 0308; # (ё; ё; е◌̈; ё; е◌̈; ) CYRILLIC SMALL LETTER IO
+0453;0453;0433 0301;0453;0433 0301; # (Ñ“; Ñ“; г◌Ì; Ñ“; г◌Ì; ) CYRILLIC SMALL LETTER GJE
+0457;0457;0456 0308;0457;0456 0308; # (ї; ї; і◌̈; ї; і◌̈; ) CYRILLIC SMALL LETTER YI
+045C;045C;043A 0301;045C;043A 0301; # (Ñœ; Ñœ; к◌Ì; Ñœ; к◌Ì; ) CYRILLIC SMALL LETTER KJE
+045D;045D;0438 0300;045D;0438 0300; # (Ñ; Ñ; и◌̀; Ñ; и◌̀; ) CYRILLIC SMALL LETTER I WITH GRAVE
+045E;045E;0443 0306;045E;0443 0306; # (ў; ў; у◌̆; ў; у◌̆; ) CYRILLIC SMALL LETTER SHORT U
+0476;0476;0474 030F;0476;0474 030F; # (Ѷ; Ѷ; Ñ´â—ŒÌ; Ѷ; Ñ´â—ŒÌ; ) CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0477;0477;0475 030F;0477;0475 030F; # (Ñ·; Ñ·; ѵ◌Ì; Ñ·; ѵ◌Ì; ) CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1;04C1;0416 0306;04C1;0416 0306; # (Ó; Ó; Ж◌̆; Ó; Ж◌̆; ) CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C2;04C2;0436 0306;04C2;0436 0306; # (ӂ; ӂ; ж◌̆; ӂ; ж◌̆; ) CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0;04D0;0410 0306;04D0;0410 0306; # (Ó; Ó; Ð◌̆; Ó; Ð◌̆; ) CYRILLIC CAPITAL LETTER A WITH BREVE
+04D1;04D1;0430 0306;04D1;0430 0306; # (ӑ; ӑ; а◌̆; ӑ; а◌̆; ) CYRILLIC SMALL LETTER A WITH BREVE
+04D2;04D2;0410 0308;04D2;0410 0308; # (Ó’; Ó’; Ð◌̈; Ó’; Ð◌̈; ) CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D3;04D3;0430 0308;04D3;0430 0308; # (ӓ; ӓ; а◌̈; ӓ; а◌̈; ) CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6;04D6;0415 0306;04D6;0415 0306; # (Ӗ; Ӗ; Е◌̆; Ӗ; Е◌̆; ) CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D7;04D7;0435 0306;04D7;0435 0306; # (ӗ; ӗ; е◌̆; ӗ; е◌̆; ) CYRILLIC SMALL LETTER IE WITH BREVE
+04DA;04DA;04D8 0308;04DA;04D8 0308; # (Ӛ; Ӛ; Ә◌̈; Ӛ; Ә◌̈; ) CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DB;04DB;04D9 0308;04DB;04D9 0308; # (ӛ; ӛ; ә◌̈; ӛ; ә◌̈; ) CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DC;04DC;0416 0308;04DC;0416 0308; # (Ӝ; Ӝ; Ж◌̈; Ӝ; Ж◌̈; ) CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DD;04DD;0436 0308;04DD;0436 0308; # (Ó; Ó; ж◌̈; Ó; ж◌̈; ) CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DE;04DE;0417 0308;04DE;0417 0308; # (Ӟ; Ӟ; З◌̈; Ӟ; З◌̈; ) CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04DF;04DF;0437 0308;04DF;0437 0308; # (ӟ; ӟ; з◌̈; ӟ; з◌̈; ) CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2;04E2;0418 0304;04E2;0418 0304; # (Ӣ; Ӣ; И◌̄; Ӣ; И◌̄; ) CYRILLIC CAPITAL LETTER I WITH MACRON
+04E3;04E3;0438 0304;04E3;0438 0304; # (ӣ; ӣ; и◌̄; ӣ; и◌̄; ) CYRILLIC SMALL LETTER I WITH MACRON
+04E4;04E4;0418 0308;04E4;0418 0308; # (Ӥ; Ӥ; И◌̈; Ӥ; И◌̈; ) CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E5;04E5;0438 0308;04E5;0438 0308; # (ӥ; ӥ; и◌̈; ӥ; и◌̈; ) CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E6;04E6;041E 0308;04E6;041E 0308; # (Ӧ; Ӧ; О◌̈; Ӧ; О◌̈; ) CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E7;04E7;043E 0308;04E7;043E 0308; # (ӧ; ӧ; о◌̈; ӧ; о◌̈; ) CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA;04EA;04E8 0308;04EA;04E8 0308; # (Ӫ; Ӫ; Ө◌̈; Ӫ; Ө◌̈; ) CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EB;04EB;04E9 0308;04EB;04E9 0308; # (ӫ; ӫ; ө◌̈; ӫ; ө◌̈; ) CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EC;04EC;042D 0308;04EC;042D 0308; # (Ӭ; Ӭ; Э◌̈; Ӭ; Э◌̈; ) CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04ED;04ED;044D 0308;04ED;044D 0308; # (Ó­; Ó­; Ñ◌̈; Ó­; Ñ◌̈; ) CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EE;04EE;0423 0304;04EE;0423 0304; # (Ӯ; Ӯ; У◌̄; Ӯ; У◌̄; ) CYRILLIC CAPITAL LETTER U WITH MACRON
+04EF;04EF;0443 0304;04EF;0443 0304; # (ӯ; ӯ; у◌̄; ӯ; у◌̄; ) CYRILLIC SMALL LETTER U WITH MACRON
+04F0;04F0;0423 0308;04F0;0423 0308; # (Ӱ; Ӱ; У◌̈; Ӱ; У◌̈; ) CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F1;04F1;0443 0308;04F1;0443 0308; # (ӱ; ӱ; у◌̈; ӱ; у◌̈; ) CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F2;04F2;0423 030B;04F2;0423 030B; # (Ӳ; Ӳ; У◌̋; Ӳ; У◌̋; ) CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F3;04F3;0443 030B;04F3;0443 030B; # (ӳ; ӳ; у◌̋; ӳ; у◌̋; ) CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F4;04F4;0427 0308;04F4;0427 0308; # (Ӵ; Ӵ; Ч◌̈; Ӵ; Ч◌̈; ) CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F5;04F5;0447 0308;04F5;0447 0308; # (ӵ; ӵ; ч◌̈; ӵ; ч◌̈; ) CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8;04F8;042B 0308;04F8;042B 0308; # (Ӹ; Ӹ; Ы◌̈; Ӹ; Ы◌̈; ) CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04F9;04F9;044B 0308;04F9;044B 0308; # (ӹ; ӹ; ы◌̈; ӹ; ы◌̈; ) CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0587;0587;0587;0565 0582;0565 0582; # (Ö‡; Ö‡; Ö‡; Õ¥Ö‚; Õ¥Ö‚; ) ARMENIAN SMALL LIGATURE ECH YIWN
+0622;0622;0627 0653;0622;0627 0653; # (آ; آ; ا◌ٓ; آ; ا◌ٓ; ) ARABIC LETTER ALEF WITH MADDA ABOVE
+0623;0623;0627 0654;0623;0627 0654; # (أ; أ; ا◌ٔ; أ; ا◌ٔ; ) ARABIC LETTER ALEF WITH HAMZA ABOVE
+0624;0624;0648 0654;0624;0648 0654; # (ؤ; ؤ; و◌ٔ; ؤ; و◌ٔ; ) ARABIC LETTER WAW WITH HAMZA ABOVE
+0625;0625;0627 0655;0625;0627 0655; # (إ; إ; ا◌ٕ; إ; ا◌ٕ; ) ARABIC LETTER ALEF WITH HAMZA BELOW
+0626;0626;064A 0654;0626;064A 0654; # (ئ; ئ; ي◌ٔ; ئ; ي◌ٔ; ) ARABIC LETTER YEH WITH HAMZA ABOVE
+0675;0675;0675;0627 0674;0627 0674; # (ٵ; ٵ; ٵ; اٴ; اٴ; ) ARABIC LETTER HIGH HAMZA ALEF
+0676;0676;0676;0648 0674;0648 0674; # (ٶ; ٶ; ٶ; وٴ; وٴ; ) ARABIC LETTER HIGH HAMZA WAW
+0677;0677;0677;06C7 0674;06C7 0674; # (Ù·; Ù·; Ù·; Û‡Ù´; Û‡Ù´; ) ARABIC LETTER U WITH HAMZA ABOVE
+0678;0678;0678;064A 0674;064A 0674; # (ٸ; ٸ; ٸ; يٴ; يٴ; ) ARABIC LETTER HIGH HAMZA YEH
+06C0;06C0;06D5 0654;06C0;06D5 0654; # (ۀ; ۀ; ە◌ٔ; ۀ; ە◌ٔ; ) ARABIC LETTER HEH WITH YEH ABOVE
+06C2;06C2;06C1 0654;06C2;06C1 0654; # (Û‚; Û‚; Û◌ٔ; Û‚; Û◌ٔ; ) ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3;06D3;06D2 0654;06D3;06D2 0654; # (ۓ; ۓ; ے◌ٔ; ۓ; ے◌ٔ; ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929;0929;0928 093C;0929;0928 093C; # (ऩ; ऩ; न◌़; ऩ; न◌़; ) DEVANAGARI LETTER NNNA
+0931;0931;0930 093C;0931;0930 093C; # (ऱ; ऱ; र◌़; ऱ; र◌़; ) DEVANAGARI LETTER RRA
+0934;0934;0933 093C;0934;0933 093C; # (ऴ; ऴ; ळ◌़; ऴ; ळ◌़; ) DEVANAGARI LETTER LLLA
+0958;0915 093C;0915 093C;0915 093C;0915 093C; # (क़; क◌़; क◌़; क◌़; क◌़; ) DEVANAGARI LETTER QA
+0959;0916 093C;0916 093C;0916 093C;0916 093C; # (ख़; ख◌़; ख◌़; ख◌़; ख◌़; ) DEVANAGARI LETTER KHHA
+095A;0917 093C;0917 093C;0917 093C;0917 093C; # (ग़; ग◌़; ग◌़; ग◌़; ग◌़; ) DEVANAGARI LETTER GHHA
+095B;091C 093C;091C 093C;091C 093C;091C 093C; # (ज़; ज◌़; ज◌़; ज◌़; ज◌़; ) DEVANAGARI LETTER ZA
+095C;0921 093C;0921 093C;0921 093C;0921 093C; # (ड़; ड◌़; ड◌़; ड◌़; ड◌़; ) DEVANAGARI LETTER DDDHA
+095D;0922 093C;0922 093C;0922 093C;0922 093C; # (à¥; ढ◌़; ढ◌़; ढ◌़; ढ◌़; ) DEVANAGARI LETTER RHA
+095E;092B 093C;092B 093C;092B 093C;092B 093C; # (फ़; फ◌़; फ◌़; फ◌़; फ◌़; ) DEVANAGARI LETTER FA
+095F;092F 093C;092F 093C;092F 093C;092F 093C; # (य़; य◌़; य◌़; य◌़; य◌़; ) DEVANAGARI LETTER YYA
+09CB;09CB;09C7 09BE;09CB;09C7 09BE; # (ো; ো; ো; ো; ো; ) BENGALI VOWEL SIGN O
+09CC;09CC;09C7 09D7;09CC;09C7 09D7; # (ৌ; ৌ; ৌ; ৌ; ৌ; ) BENGALI VOWEL SIGN AU
+09DC;09A1 09BC;09A1 09BC;09A1 09BC;09A1 09BC; # (ড়; ড◌়; ড◌়; ড◌়; ড◌়; ) BENGALI LETTER RRA
+09DD;09A2 09BC;09A2 09BC;09A2 09BC;09A2 09BC; # (à§; ঢ◌়; ঢ◌়; ঢ◌়; ঢ◌়; ) BENGALI LETTER RHA
+09DF;09AF 09BC;09AF 09BC;09AF 09BC;09AF 09BC; # (য়; য◌়; য◌়; য◌়; য◌়; ) BENGALI LETTER YYA
+0A33;0A32 0A3C;0A32 0A3C;0A32 0A3C;0A32 0A3C; # (ਲ਼; ਲ◌਼; ਲ◌਼; ਲ◌਼; ਲ◌਼; ) GURMUKHI LETTER LLA
+0A36;0A38 0A3C;0A38 0A3C;0A38 0A3C;0A38 0A3C; # (ਸ਼; ਸ◌਼; ਸ◌਼; ਸ◌਼; ਸ◌਼; ) GURMUKHI LETTER SHA
+0A59;0A16 0A3C;0A16 0A3C;0A16 0A3C;0A16 0A3C; # (ਖ਼; ਖ◌਼; ਖ◌਼; ਖ◌਼; ਖ◌਼; ) GURMUKHI LETTER KHHA
+0A5A;0A17 0A3C;0A17 0A3C;0A17 0A3C;0A17 0A3C; # (ਗ਼; ਗ◌਼; ਗ◌਼; ਗ◌਼; ਗ◌਼; ) GURMUKHI LETTER GHHA
+0A5B;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C; # (ਜ਼; ਜ◌਼; ਜ◌਼; ਜ◌਼; ਜ◌਼; ) GURMUKHI LETTER ZA
+0A5E;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C; # (ਫ਼; ਫ◌਼; ਫ◌਼; ਫ◌਼; ਫ◌਼; ) GURMUKHI LETTER FA
+0B48;0B48;0B47 0B56;0B48;0B47 0B56; # (ୈ; ୈ; େ◌ୖ; ୈ; େ◌ୖ; ) ORIYA VOWEL SIGN AI
+0B4B;0B4B;0B47 0B3E;0B4B;0B47 0B3E; # (ୋ; ୋ; ୋ; ୋ; ୋ; ) ORIYA VOWEL SIGN O
+0B4C;0B4C;0B47 0B57;0B4C;0B47 0B57; # (ୌ; ୌ; ୌ; ୌ; ୌ; ) ORIYA VOWEL SIGN AU
+0B5C;0B21 0B3C;0B21 0B3C;0B21 0B3C;0B21 0B3C; # (ଡ଼; ଡ◌଼; ଡ◌଼; ଡ◌଼; ଡ◌଼; ) ORIYA LETTER RRA
+0B5D;0B22 0B3C;0B22 0B3C;0B22 0B3C;0B22 0B3C; # (à­; ଢ◌଼; ଢ◌଼; ଢ◌଼; ଢ◌଼; ) ORIYA LETTER RHA
+0B94;0B94;0B92 0BD7;0B94;0B92 0BD7; # (ஔ; ஔ; ஔ; ஔ; ஔ; ) TAMIL LETTER AU
+0BCA;0BCA;0BC6 0BBE;0BCA;0BC6 0BBE; # (ொ; ொ; ொ; ொ; ொ; ) TAMIL VOWEL SIGN O
+0BCB;0BCB;0BC7 0BBE;0BCB;0BC7 0BBE; # (ோ; ோ; ோ; ோ; ோ; ) TAMIL VOWEL SIGN OO
+0BCC;0BCC;0BC6 0BD7;0BCC;0BC6 0BD7; # (ௌ; ௌ; ௌ; ௌ; ௌ; ) TAMIL VOWEL SIGN AU
+0C48;0C48;0C46 0C56;0C48;0C46 0C56; # (◌ై; ◌ై; ◌ె◌ౖ; ◌ై; ◌ె◌ౖ; ) TELUGU VOWEL SIGN AI
+0CC0;0CC0;0CBF 0CD5;0CC0;0CBF 0CD5; # (ೀ; ೀ; ◌ೀ; ೀ; ◌ೀ; ) KANNADA VOWEL SIGN II
+0CC7;0CC7;0CC6 0CD5;0CC7;0CC6 0CD5; # (ೇ; ೇ; ◌ೇ; ೇ; ◌ೇ; ) KANNADA VOWEL SIGN EE
+0CC8;0CC8;0CC6 0CD6;0CC8;0CC6 0CD6; # (ೈ; ೈ; ◌ೈ; ೈ; ◌ೈ; ) KANNADA VOWEL SIGN AI
+0CCA;0CCA;0CC6 0CC2;0CCA;0CC6 0CC2; # (ೊ; ೊ; ◌ೊ; ೊ; ◌ೊ; ) KANNADA VOWEL SIGN O
+0CCB;0CCB;0CC6 0CC2 0CD5;0CCB;0CC6 0CC2 0CD5; # (ೋ; ೋ; ◌ೋ; ೋ; ◌ೋ; ) KANNADA VOWEL SIGN OO
+0D4A;0D4A;0D46 0D3E;0D4A;0D46 0D3E; # (ൊ; ൊ; ൊ; ൊ; ൊ; ) MALAYALAM VOWEL SIGN O
+0D4B;0D4B;0D47 0D3E;0D4B;0D47 0D3E; # (ോ; ോ; ോ; ോ; ോ; ) MALAYALAM VOWEL SIGN OO
+0D4C;0D4C;0D46 0D57;0D4C;0D46 0D57; # (ൌ; ൌ; ൌ; ൌ; ൌ; ) MALAYALAM VOWEL SIGN AU
+0DDA;0DDA;0DD9 0DCA;0DDA;0DD9 0DCA; # (ේ; ේ; ෙ◌්; ේ; ෙ◌්; ) SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC;0DDC;0DD9 0DCF;0DDC;0DD9 0DCF; # (à·œ; à·œ; à·™à·; à·œ; à·™à·; ) SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0DDD;0DDD;0DD9 0DCF 0DCA;0DDD;0DD9 0DCF 0DCA; # (à·; à·; à·™à·â—Œà·Š; à·; à·™à·â—Œà·Š; ) SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DDE;0DDE;0DD9 0DDF;0DDE;0DD9 0DDF; # (ෞ; ෞ; ෞ; ෞ; ෞ; ) SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0E33;0E33;0E33;0E4D 0E32;0E4D 0E32; # (ำ; ำ; ำ; â—Œà¹à¸²; â—Œà¹à¸²; ) THAI CHARACTER SARA AM
+0EB3;0EB3;0EB3;0ECD 0EB2;0ECD 0EB2; # (ຳ; ຳ; ຳ; â—Œà»àº²; â—Œà»àº²; ) LAO VOWEL SIGN AM
+0EDC;0EDC;0EDC;0EAB 0E99;0EAB 0E99; # (ໜ; ໜ; ໜ; ຫນ; ຫນ; ) LAO HO NO
+0EDD;0EDD;0EDD;0EAB 0EA1;0EAB 0EA1; # (à»; à»; à»; ຫມ; ຫມ; ) LAO HO MO
+0F0C;0F0C;0F0C;0F0B;0F0B; # (༌; ༌; ༌; ་; ་; ) TIBETAN MARK DELIMITER TSHEG BSTAR
+0F43;0F42 0FB7;0F42 0FB7;0F42 0FB7;0F42 0FB7; # (གྷ; ག◌ྷ; ག◌ྷ; ག◌ྷ; ག◌ྷ; ) TIBETAN LETTER GHA
+0F4D;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7; # (à½; ཌ◌ྷ; ཌ◌ྷ; ཌ◌ྷ; ཌ◌ྷ; ) TIBETAN LETTER DDHA
+0F52;0F51 0FB7;0F51 0FB7;0F51 0FB7;0F51 0FB7; # (དྷ; ད◌ྷ; ད◌ྷ; ད◌ྷ; ད◌ྷ; ) TIBETAN LETTER DHA
+0F57;0F56 0FB7;0F56 0FB7;0F56 0FB7;0F56 0FB7; # (བྷ; བ◌ྷ; བ◌ྷ; བ◌ྷ; བ◌ྷ; ) TIBETAN LETTER BHA
+0F5C;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7; # (ཛྷ; ཛ◌ྷ; ཛ◌ྷ; ཛ◌ྷ; ཛ◌ྷ; ) TIBETAN LETTER DZHA
+0F69;0F40 0FB5;0F40 0FB5;0F40 0FB5;0F40 0FB5; # (ཀྵ; ཀ◌ྵ; ཀ◌ྵ; ཀ◌ྵ; ཀ◌ྵ; ) TIBETAN LETTER KSSA
+0F73;0F71 0F72;0F71 0F72;0F71 0F72;0F71 0F72; # (◌ཱི; ◌ཱ◌ི; ◌ཱ◌ི; ◌ཱ◌ི; ◌ཱ◌ི; ) TIBETAN VOWEL SIGN II
+0F75;0F71 0F74;0F71 0F74;0F71 0F74;0F71 0F74; # (◌ཱུ; ◌ཱ◌ུ; ◌ཱ◌ུ; ◌ཱ◌ུ; ◌ཱ◌ུ; ) TIBETAN VOWEL SIGN UU
+0F76;0FB2 0F80;0FB2 0F80;0FB2 0F80;0FB2 0F80; # (◌ྲྀ; ◌ྲ◌ྀ; ◌ྲ◌ྀ; ◌ྲ◌ྀ; ◌ྲ◌ྀ; ) TIBETAN VOWEL SIGN VOCALIC R
+0F77;0F77;0F77;0FB2 0F71 0F80;0FB2 0F71 0F80; # (◌ཷ; ◌ཷ; ◌ཷ; ◌ྲ◌ཱ◌ྀ; ◌ྲ◌ཱ◌ྀ; ) TIBETAN VOWEL SIGN VOCALIC RR
+0F78;0FB3 0F80;0FB3 0F80;0FB3 0F80;0FB3 0F80; # (◌ླྀ; ◌ླ◌ྀ; ◌ླ◌ྀ; ◌ླ◌ྀ; ◌ླ◌ྀ; ) TIBETAN VOWEL SIGN VOCALIC L
+0F79;0F79;0F79;0FB3 0F71 0F80;0FB3 0F71 0F80; # (◌ཹ; ◌ཹ; ◌ཹ; ◌ླ◌ཱ◌ྀ; ◌ླ◌ཱ◌ྀ; ) TIBETAN VOWEL SIGN VOCALIC LL
+0F81;0F71 0F80;0F71 0F80;0F71 0F80;0F71 0F80; # (â—Œà¾; ◌ཱ◌ྀ; ◌ཱ◌ྀ; ◌ཱ◌ྀ; ◌ཱ◌ྀ; ) TIBETAN VOWEL SIGN REVERSED II
+0F93;0F92 0FB7;0F92 0FB7;0F92 0FB7;0F92 0FB7; # (◌ྒྷ; ◌ྒ◌ྷ; ◌ྒ◌ྷ; ◌ྒ◌ྷ; ◌ྒ◌ྷ; ) TIBETAN SUBJOINED LETTER GHA
+0F9D;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7; # (â—Œà¾; ◌ྜ◌ྷ; ◌ྜ◌ྷ; ◌ྜ◌ྷ; ◌ྜ◌ྷ; ) TIBETAN SUBJOINED LETTER DDHA
+0FA2;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7; # (◌ྡྷ; ◌ྡ◌ྷ; ◌ྡ◌ྷ; ◌ྡ◌ྷ; ◌ྡ◌ྷ; ) TIBETAN SUBJOINED LETTER DHA
+0FA7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7; # (◌ྦྷ; ◌ྦ◌ྷ; ◌ྦ◌ྷ; ◌ྦ◌ྷ; ◌ྦ◌ྷ; ) TIBETAN SUBJOINED LETTER BHA
+0FAC;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7; # (◌ྫྷ; ◌ྫ◌ྷ; ◌ྫ◌ྷ; ◌ྫ◌ྷ; ◌ྫ◌ྷ; ) TIBETAN SUBJOINED LETTER DZHA
+0FB9;0F90 0FB5;0F90 0FB5;0F90 0FB5;0F90 0FB5; # (◌ྐྵ; â—Œà¾â—Œà¾µ; â—Œà¾â—Œà¾µ; â—Œà¾â—Œà¾µ; â—Œà¾â—Œà¾µ; ) TIBETAN SUBJOINED LETTER KSSA
+1026;1026;1025 102E;1026;1025 102E; # (ဦ; ဦ; ဥ◌ီ; ဦ; ဥ◌ီ; ) MYANMAR LETTER UU
+10FC;10FC;10FC;10DC;10DC; # (ჼ; ჼ; ჼ; ნ; ნ; ) MODIFIER LETTER GEORGIAN NAR
+1B06;1B06;1B05 1B35;1B06;1B05 1B35; # (ᬆ; ᬆ; ᬆ; ᬆ; ᬆ; ) BALINESE LETTER AKARA TEDUNG
+1B08;1B08;1B07 1B35;1B08;1B07 1B35; # (ᬈ; ᬈ; ᬈ; ᬈ; ᬈ; ) BALINESE LETTER IKARA TEDUNG
+1B0A;1B0A;1B09 1B35;1B0A;1B09 1B35; # (ᬊ; ᬊ; ᬊ; ᬊ; ᬊ; ) BALINESE LETTER UKARA TEDUNG
+1B0C;1B0C;1B0B 1B35;1B0C;1B0B 1B35; # (ᬌ; ᬌ; ᬌ; ᬌ; ᬌ; ) BALINESE LETTER RA REPA TEDUNG
+1B0E;1B0E;1B0D 1B35;1B0E;1B0D 1B35; # (ᬎ; ᬎ; á¬á¬µ; ᬎ; á¬á¬µ; ) BALINESE LETTER LA LENGA TEDUNG
+1B12;1B12;1B11 1B35;1B12;1B11 1B35; # (ᬒ; ᬒ; ᬒ; ᬒ; ᬒ; ) BALINESE LETTER OKARA TEDUNG
+1B3B;1B3B;1B3A 1B35;1B3B;1B3A 1B35; # (ᬻ; ᬻ; ◌ᬻ; ᬻ; ◌ᬻ; ) BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D;1B3D;1B3C 1B35;1B3D;1B3C 1B35; # (ᬽ; ᬽ; ◌ᬽ; ᬽ; ◌ᬽ; ) BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40;1B40;1B3E 1B35;1B40;1B3E 1B35; # (ᭀ; ᭀ; ᭀ; ᭀ; ᭀ; ) BALINESE VOWEL SIGN TALING TEDUNG
+1B41;1B41;1B3F 1B35;1B41;1B3F 1B35; # (á­; á­; ᭁ; á­; ᭁ; ) BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43;1B43;1B42 1B35;1B43;1B42 1B35; # (ᭃ; ᭃ; ◌ᭃ; ᭃ; ◌ᭃ; ) BALINESE VOWEL SIGN PEPET TEDUNG
+1D2C;1D2C;1D2C;0041;0041; # (á´¬; á´¬; á´¬; A; A; ) MODIFIER LETTER CAPITAL A
+1D2D;1D2D;1D2D;00C6;00C6; # (ᴭ; ᴭ; ᴭ; Æ; Æ; ) MODIFIER LETTER CAPITAL AE
+1D2E;1D2E;1D2E;0042;0042; # (á´®; á´®; á´®; B; B; ) MODIFIER LETTER CAPITAL B
+1D30;1D30;1D30;0044;0044; # (á´°; á´°; á´°; D; D; ) MODIFIER LETTER CAPITAL D
+1D31;1D31;1D31;0045;0045; # (á´±; á´±; á´±; E; E; ) MODIFIER LETTER CAPITAL E
+1D32;1D32;1D32;018E;018E; # (á´²; á´²; á´²; ÆŽ; ÆŽ; ) MODIFIER LETTER CAPITAL REVERSED E
+1D33;1D33;1D33;0047;0047; # (á´³; á´³; á´³; G; G; ) MODIFIER LETTER CAPITAL G
+1D34;1D34;1D34;0048;0048; # (á´´; á´´; á´´; H; H; ) MODIFIER LETTER CAPITAL H
+1D35;1D35;1D35;0049;0049; # (á´µ; á´µ; á´µ; I; I; ) MODIFIER LETTER CAPITAL I
+1D36;1D36;1D36;004A;004A; # (á´¶; á´¶; á´¶; J; J; ) MODIFIER LETTER CAPITAL J
+1D37;1D37;1D37;004B;004B; # (á´·; á´·; á´·; K; K; ) MODIFIER LETTER CAPITAL K
+1D38;1D38;1D38;004C;004C; # (á´¸; á´¸; á´¸; L; L; ) MODIFIER LETTER CAPITAL L
+1D39;1D39;1D39;004D;004D; # (á´¹; á´¹; á´¹; M; M; ) MODIFIER LETTER CAPITAL M
+1D3A;1D3A;1D3A;004E;004E; # (á´º; á´º; á´º; N; N; ) MODIFIER LETTER CAPITAL N
+1D3C;1D3C;1D3C;004F;004F; # (á´¼; á´¼; á´¼; O; O; ) MODIFIER LETTER CAPITAL O
+1D3D;1D3D;1D3D;0222;0222; # (ᴽ; ᴽ; ᴽ; Ȣ; Ȣ; ) MODIFIER LETTER CAPITAL OU
+1D3E;1D3E;1D3E;0050;0050; # (á´¾; á´¾; á´¾; P; P; ) MODIFIER LETTER CAPITAL P
+1D3F;1D3F;1D3F;0052;0052; # (á´¿; á´¿; á´¿; R; R; ) MODIFIER LETTER CAPITAL R
+1D40;1D40;1D40;0054;0054; # (áµ€; áµ€; áµ€; T; T; ) MODIFIER LETTER CAPITAL T
+1D41;1D41;1D41;0055;0055; # (áµ; áµ; áµ; U; U; ) MODIFIER LETTER CAPITAL U
+1D42;1D42;1D42;0057;0057; # (ᵂ; ᵂ; ᵂ; W; W; ) MODIFIER LETTER CAPITAL W
+1D43;1D43;1D43;0061;0061; # (ᵃ; ᵃ; ᵃ; a; a; ) MODIFIER LETTER SMALL A
+1D44;1D44;1D44;0250;0250; # (ᵄ; ᵄ; ᵄ; É; É; ) MODIFIER LETTER SMALL TURNED A
+1D45;1D45;1D45;0251;0251; # (áµ…; áµ…; áµ…; É‘; É‘; ) MODIFIER LETTER SMALL ALPHA
+1D46;1D46;1D46;1D02;1D02; # (ᵆ; ᵆ; ᵆ; ᴂ; ᴂ; ) MODIFIER LETTER SMALL TURNED AE
+1D47;1D47;1D47;0062;0062; # (ᵇ; ᵇ; ᵇ; b; b; ) MODIFIER LETTER SMALL B
+1D48;1D48;1D48;0064;0064; # (ᵈ; ᵈ; ᵈ; d; d; ) MODIFIER LETTER SMALL D
+1D49;1D49;1D49;0065;0065; # (ᵉ; ᵉ; ᵉ; e; e; ) MODIFIER LETTER SMALL E
+1D4A;1D4A;1D4A;0259;0259; # (ᵊ; ᵊ; ᵊ; ə; ə; ) MODIFIER LETTER SMALL SCHWA
+1D4B;1D4B;1D4B;025B;025B; # (ᵋ; ᵋ; ᵋ; ɛ; ɛ; ) MODIFIER LETTER SMALL OPEN E
+1D4C;1D4C;1D4C;025C;025C; # (ᵌ; ᵌ; ᵌ; ɜ; ɜ; ) MODIFIER LETTER SMALL TURNED OPEN E
+1D4D;1D4D;1D4D;0067;0067; # (áµ; áµ; áµ; g; g; ) MODIFIER LETTER SMALL G
+1D4F;1D4F;1D4F;006B;006B; # (áµ; áµ; áµ; k; k; ) MODIFIER LETTER SMALL K
+1D50;1D50;1D50;006D;006D; # (áµ; áµ; áµ; m; m; ) MODIFIER LETTER SMALL M
+1D51;1D51;1D51;014B;014B; # (ᵑ; ᵑ; ᵑ; ŋ; ŋ; ) MODIFIER LETTER SMALL ENG
+1D52;1D52;1D52;006F;006F; # (áµ’; áµ’; áµ’; o; o; ) MODIFIER LETTER SMALL O
+1D53;1D53;1D53;0254;0254; # (ᵓ; ᵓ; ᵓ; ɔ; ɔ; ) MODIFIER LETTER SMALL OPEN O
+1D54;1D54;1D54;1D16;1D16; # (áµ”; áµ”; áµ”; á´–; á´–; ) MODIFIER LETTER SMALL TOP HALF O
+1D55;1D55;1D55;1D17;1D17; # (ᵕ; ᵕ; ᵕ; ᴗ; ᴗ; ) MODIFIER LETTER SMALL BOTTOM HALF O
+1D56;1D56;1D56;0070;0070; # (áµ–; áµ–; áµ–; p; p; ) MODIFIER LETTER SMALL P
+1D57;1D57;1D57;0074;0074; # (áµ—; áµ—; áµ—; t; t; ) MODIFIER LETTER SMALL T
+1D58;1D58;1D58;0075;0075; # (ᵘ; ᵘ; ᵘ; u; u; ) MODIFIER LETTER SMALL U
+1D59;1D59;1D59;1D1D;1D1D; # (áµ™; áµ™; áµ™; á´; á´; ) MODIFIER LETTER SMALL SIDEWAYS U
+1D5A;1D5A;1D5A;026F;026F; # (ᵚ; ᵚ; ᵚ; ɯ; ɯ; ) MODIFIER LETTER SMALL TURNED M
+1D5B;1D5B;1D5B;0076;0076; # (áµ›; áµ›; áµ›; v; v; ) MODIFIER LETTER SMALL V
+1D5C;1D5C;1D5C;1D25;1D25; # (ᵜ; ᵜ; ᵜ; ᴥ; ᴥ; ) MODIFIER LETTER SMALL AIN
+1D5D;1D5D;1D5D;03B2;03B2; # (áµ; áµ; áµ; β; β; ) MODIFIER LETTER SMALL BETA
+1D5E;1D5E;1D5E;03B3;03B3; # (ᵞ; ᵞ; ᵞ; γ; γ; ) MODIFIER LETTER SMALL GREEK GAMMA
+1D5F;1D5F;1D5F;03B4;03B4; # (ᵟ; ᵟ; ᵟ; δ; δ; ) MODIFIER LETTER SMALL DELTA
+1D60;1D60;1D60;03C6;03C6; # (ᵠ; ᵠ; ᵠ; φ; φ; ) MODIFIER LETTER SMALL GREEK PHI
+1D61;1D61;1D61;03C7;03C7; # (ᵡ; ᵡ; ᵡ; χ; χ; ) MODIFIER LETTER SMALL CHI
+1D62;1D62;1D62;0069;0069; # (áµ¢; áµ¢; áµ¢; i; i; ) LATIN SUBSCRIPT SMALL LETTER I
+1D63;1D63;1D63;0072;0072; # (áµ£; áµ£; áµ£; r; r; ) LATIN SUBSCRIPT SMALL LETTER R
+1D64;1D64;1D64;0075;0075; # (ᵤ; ᵤ; ᵤ; u; u; ) LATIN SUBSCRIPT SMALL LETTER U
+1D65;1D65;1D65;0076;0076; # (áµ¥; áµ¥; áµ¥; v; v; ) LATIN SUBSCRIPT SMALL LETTER V
+1D66;1D66;1D66;03B2;03B2; # (ᵦ; ᵦ; ᵦ; β; β; ) GREEK SUBSCRIPT SMALL LETTER BETA
+1D67;1D67;1D67;03B3;03B3; # (ᵧ; ᵧ; ᵧ; γ; γ; ) GREEK SUBSCRIPT SMALL LETTER GAMMA
+1D68;1D68;1D68;03C1;03C1; # (ᵨ; ᵨ; ᵨ; Ï; Ï; ) GREEK SUBSCRIPT SMALL LETTER RHO
+1D69;1D69;1D69;03C6;03C6; # (ᵩ; ᵩ; ᵩ; φ; φ; ) GREEK SUBSCRIPT SMALL LETTER PHI
+1D6A;1D6A;1D6A;03C7;03C7; # (ᵪ; ᵪ; ᵪ; χ; χ; ) GREEK SUBSCRIPT SMALL LETTER CHI
+1D78;1D78;1D78;043D;043D; # (ᵸ; ᵸ; ᵸ; н; н; ) MODIFIER LETTER CYRILLIC EN
+1D9B;1D9B;1D9B;0252;0252; # (ᶛ; ᶛ; ᶛ; ɒ; ɒ; ) MODIFIER LETTER SMALL TURNED ALPHA
+1D9C;1D9C;1D9C;0063;0063; # (ᶜ; ᶜ; ᶜ; c; c; ) MODIFIER LETTER SMALL C
+1D9D;1D9D;1D9D;0255;0255; # (á¶; á¶; á¶; É•; É•; ) MODIFIER LETTER SMALL C WITH CURL
+1D9E;1D9E;1D9E;00F0;00F0; # (ᶞ; ᶞ; ᶞ; ð; ð; ) MODIFIER LETTER SMALL ETH
+1D9F;1D9F;1D9F;025C;025C; # (ᶟ; ᶟ; ᶟ; ɜ; ɜ; ) MODIFIER LETTER SMALL REVERSED OPEN E
+1DA0;1DA0;1DA0;0066;0066; # (ᶠ; ᶠ; ᶠ; f; f; ) MODIFIER LETTER SMALL F
+1DA1;1DA1;1DA1;025F;025F; # (ᶡ; ᶡ; ᶡ; ɟ; ɟ; ) MODIFIER LETTER SMALL DOTLESS J WITH STROKE
+1DA2;1DA2;1DA2;0261;0261; # (ᶢ; ᶢ; ᶢ; ɡ; ɡ; ) MODIFIER LETTER SMALL SCRIPT G
+1DA3;1DA3;1DA3;0265;0265; # (ᶣ; ᶣ; ᶣ; ɥ; ɥ; ) MODIFIER LETTER SMALL TURNED H
+1DA4;1DA4;1DA4;0268;0268; # (ᶤ; ᶤ; ᶤ; ɨ; ɨ; ) MODIFIER LETTER SMALL I WITH STROKE
+1DA5;1DA5;1DA5;0269;0269; # (ᶥ; ᶥ; ᶥ; ɩ; ɩ; ) MODIFIER LETTER SMALL IOTA
+1DA6;1DA6;1DA6;026A;026A; # (ᶦ; ᶦ; ᶦ; ɪ; ɪ; ) MODIFIER LETTER SMALL CAPITAL I
+1DA7;1DA7;1DA7;1D7B;1D7B; # (ᶧ; ᶧ; ᶧ; ᵻ; ᵻ; ) MODIFIER LETTER SMALL CAPITAL I WITH STROKE
+1DA8;1DA8;1DA8;029D;029D; # (ᶨ; ᶨ; ᶨ; Ê; Ê; ) MODIFIER LETTER SMALL J WITH CROSSED-TAIL
+1DA9;1DA9;1DA9;026D;026D; # (ᶩ; ᶩ; ᶩ; ɭ; ɭ; ) MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
+1DAA;1DAA;1DAA;1D85;1D85; # (ᶪ; ᶪ; ᶪ; ᶅ; ᶅ; ) MODIFIER LETTER SMALL L WITH PALATAL HOOK
+1DAB;1DAB;1DAB;029F;029F; # (ᶫ; ᶫ; ᶫ; ʟ; ʟ; ) MODIFIER LETTER SMALL CAPITAL L
+1DAC;1DAC;1DAC;0271;0271; # (ᶬ; ᶬ; ᶬ; ɱ; ɱ; ) MODIFIER LETTER SMALL M WITH HOOK
+1DAD;1DAD;1DAD;0270;0270; # (ᶭ; ᶭ; ᶭ; ɰ; ɰ; ) MODIFIER LETTER SMALL TURNED M WITH LONG LEG
+1DAE;1DAE;1DAE;0272;0272; # (ᶮ; ᶮ; ᶮ; ɲ; ɲ; ) MODIFIER LETTER SMALL N WITH LEFT HOOK
+1DAF;1DAF;1DAF;0273;0273; # (ᶯ; ᶯ; ᶯ; ɳ; ɳ; ) MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
+1DB0;1DB0;1DB0;0274;0274; # (ᶰ; ᶰ; ᶰ; ɴ; ɴ; ) MODIFIER LETTER SMALL CAPITAL N
+1DB1;1DB1;1DB1;0275;0275; # (ᶱ; ᶱ; ᶱ; ɵ; ɵ; ) MODIFIER LETTER SMALL BARRED O
+1DB2;1DB2;1DB2;0278;0278; # (ᶲ; ᶲ; ᶲ; ɸ; ɸ; ) MODIFIER LETTER SMALL PHI
+1DB3;1DB3;1DB3;0282;0282; # (ᶳ; ᶳ; ᶳ; ʂ; ʂ; ) MODIFIER LETTER SMALL S WITH HOOK
+1DB4;1DB4;1DB4;0283;0283; # (ᶴ; ᶴ; ᶴ; ʃ; ʃ; ) MODIFIER LETTER SMALL ESH
+1DB5;1DB5;1DB5;01AB;01AB; # (ᶵ; ᶵ; ᶵ; ƫ; ƫ; ) MODIFIER LETTER SMALL T WITH PALATAL HOOK
+1DB6;1DB6;1DB6;0289;0289; # (ᶶ; ᶶ; ᶶ; ʉ; ʉ; ) MODIFIER LETTER SMALL U BAR
+1DB7;1DB7;1DB7;028A;028A; # (ᶷ; ᶷ; ᶷ; ʊ; ʊ; ) MODIFIER LETTER SMALL UPSILON
+1DB8;1DB8;1DB8;1D1C;1D1C; # (ᶸ; ᶸ; ᶸ; ᴜ; ᴜ; ) MODIFIER LETTER SMALL CAPITAL U
+1DB9;1DB9;1DB9;028B;028B; # (ᶹ; ᶹ; ᶹ; ʋ; ʋ; ) MODIFIER LETTER SMALL V WITH HOOK
+1DBA;1DBA;1DBA;028C;028C; # (ᶺ; ᶺ; ᶺ; ʌ; ʌ; ) MODIFIER LETTER SMALL TURNED V
+1DBB;1DBB;1DBB;007A;007A; # (ᶻ; ᶻ; ᶻ; z; z; ) MODIFIER LETTER SMALL Z
+1DBC;1DBC;1DBC;0290;0290; # (ᶼ; ᶼ; ᶼ; Ê; Ê; ) MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
+1DBD;1DBD;1DBD;0291;0291; # (ᶽ; ᶽ; ᶽ; ʑ; ʑ; ) MODIFIER LETTER SMALL Z WITH CURL
+1DBE;1DBE;1DBE;0292;0292; # (ᶾ; ᶾ; ᶾ; ʒ; ʒ; ) MODIFIER LETTER SMALL EZH
+1DBF;1DBF;1DBF;03B8;03B8; # (ᶿ; ᶿ; ᶿ; θ; θ; ) MODIFIER LETTER SMALL THETA
+1E00;1E00;0041 0325;1E00;0041 0325; # (Ḁ; Ḁ; A◌̥; Ḁ; A◌̥; ) LATIN CAPITAL LETTER A WITH RING BELOW
+1E01;1E01;0061 0325;1E01;0061 0325; # (á¸; á¸; a◌̥; á¸; a◌̥; ) LATIN SMALL LETTER A WITH RING BELOW
+1E02;1E02;0042 0307;1E02;0042 0307; # (Ḃ; Ḃ; B◌̇; Ḃ; B◌̇; ) LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E03;1E03;0062 0307;1E03;0062 0307; # (ḃ; ḃ; b◌̇; ḃ; b◌̇; ) LATIN SMALL LETTER B WITH DOT ABOVE
+1E04;1E04;0042 0323;1E04;0042 0323; # (Ḅ; Ḅ; B◌̣; Ḅ; B◌̣; ) LATIN CAPITAL LETTER B WITH DOT BELOW
+1E05;1E05;0062 0323;1E05;0062 0323; # (ḅ; ḅ; b◌̣; ḅ; b◌̣; ) LATIN SMALL LETTER B WITH DOT BELOW
+1E06;1E06;0042 0331;1E06;0042 0331; # (Ḇ; Ḇ; B◌̱; Ḇ; B◌̱; ) LATIN CAPITAL LETTER B WITH LINE BELOW
+1E07;1E07;0062 0331;1E07;0062 0331; # (ḇ; ḇ; b◌̱; ḇ; b◌̱; ) LATIN SMALL LETTER B WITH LINE BELOW
+1E08;1E08;0043 0327 0301;1E08;0043 0327 0301; # (Ḉ; Ḉ; C◌̧◌Ì; Ḉ; C◌̧◌Ì; ) LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E09;1E09;0063 0327 0301;1E09;0063 0327 0301; # (ḉ; ḉ; c◌̧◌Ì; ḉ; c◌̧◌Ì; ) LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E0A;1E0A;0044 0307;1E0A;0044 0307; # (Ḋ; Ḋ; D◌̇; Ḋ; D◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0B;1E0B;0064 0307;1E0B;0064 0307; # (ḋ; ḋ; d◌̇; ḋ; d◌̇; ) LATIN SMALL LETTER D WITH DOT ABOVE
+1E0C;1E0C;0044 0323;1E0C;0044 0323; # (Ḍ; Ḍ; D◌̣; Ḍ; D◌̣; ) LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0D;1E0D;0064 0323;1E0D;0064 0323; # (á¸; á¸; d◌̣; á¸; d◌̣; ) LATIN SMALL LETTER D WITH DOT BELOW
+1E0E;1E0E;0044 0331;1E0E;0044 0331; # (Ḏ; Ḏ; D◌̱; Ḏ; D◌̱; ) LATIN CAPITAL LETTER D WITH LINE BELOW
+1E0F;1E0F;0064 0331;1E0F;0064 0331; # (á¸; á¸; d◌̱; á¸; d◌̱; ) LATIN SMALL LETTER D WITH LINE BELOW
+1E10;1E10;0044 0327;1E10;0044 0327; # (á¸; á¸; D◌̧; á¸; D◌̧; ) LATIN CAPITAL LETTER D WITH CEDILLA
+1E11;1E11;0064 0327;1E11;0064 0327; # (ḑ; ḑ; d◌̧; ḑ; d◌̧; ) LATIN SMALL LETTER D WITH CEDILLA
+1E12;1E12;0044 032D;1E12;0044 032D; # (Ḓ; Ḓ; D◌̭; Ḓ; D◌̭; ) LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E13;1E13;0064 032D;1E13;0064 032D; # (ḓ; ḓ; d◌̭; ḓ; d◌̭; ) LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300; # (Ḕ; Ḕ; E◌̄◌̀; Ḕ; E◌̄◌̀; ) LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E15;1E15;0065 0304 0300;1E15;0065 0304 0300; # (ḕ; ḕ; e◌̄◌̀; ḕ; e◌̄◌̀; ) LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E16;1E16;0045 0304 0301;1E16;0045 0304 0301; # (Ḗ; Ḗ; E◌̄◌Ì; Ḗ; E◌̄◌Ì; ) LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E17;1E17;0065 0304 0301;1E17;0065 0304 0301; # (ḗ; ḗ; e◌̄◌Ì; ḗ; e◌̄◌Ì; ) LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E18;1E18;0045 032D;1E18;0045 032D; # (Ḙ; Ḙ; E◌̭; Ḙ; E◌̭; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E19;1E19;0065 032D;1E19;0065 032D; # (ḙ; ḙ; e◌̭; ḙ; e◌̭; ) LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E1A;1E1A;0045 0330;1E1A;0045 0330; # (Ḛ; Ḛ; E◌̰; Ḛ; E◌̰; ) LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1B;1E1B;0065 0330;1E1B;0065 0330; # (ḛ; ḛ; e◌̰; ḛ; e◌̰; ) LATIN SMALL LETTER E WITH TILDE BELOW
+1E1C;1E1C;0045 0327 0306;1E1C;0045 0327 0306; # (Ḝ; Ḝ; E◌̧◌̆; Ḝ; E◌̧◌̆; ) LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1D;1E1D;0065 0327 0306;1E1D;0065 0327 0306; # (á¸; á¸; e◌̧◌̆; á¸; e◌̧◌̆; ) LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1E;1E1E;0046 0307;1E1E;0046 0307; # (Ḟ; Ḟ; F◌̇; Ḟ; F◌̇; ) LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E1F;1E1F;0066 0307;1E1F;0066 0307; # (ḟ; ḟ; f◌̇; ḟ; f◌̇; ) LATIN SMALL LETTER F WITH DOT ABOVE
+1E20;1E20;0047 0304;1E20;0047 0304; # (Ḡ; Ḡ; G◌̄; Ḡ; G◌̄; ) LATIN CAPITAL LETTER G WITH MACRON
+1E21;1E21;0067 0304;1E21;0067 0304; # (ḡ; ḡ; g◌̄; ḡ; g◌̄; ) LATIN SMALL LETTER G WITH MACRON
+1E22;1E22;0048 0307;1E22;0048 0307; # (Ḣ; Ḣ; H◌̇; Ḣ; H◌̇; ) LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E23;1E23;0068 0307;1E23;0068 0307; # (ḣ; ḣ; h◌̇; ḣ; h◌̇; ) LATIN SMALL LETTER H WITH DOT ABOVE
+1E24;1E24;0048 0323;1E24;0048 0323; # (Ḥ; Ḥ; H◌̣; Ḥ; H◌̣; ) LATIN CAPITAL LETTER H WITH DOT BELOW
+1E25;1E25;0068 0323;1E25;0068 0323; # (ḥ; ḥ; h◌̣; ḥ; h◌̣; ) LATIN SMALL LETTER H WITH DOT BELOW
+1E26;1E26;0048 0308;1E26;0048 0308; # (Ḧ; Ḧ; H◌̈; Ḧ; H◌̈; ) LATIN CAPITAL LETTER H WITH DIAERESIS
+1E27;1E27;0068 0308;1E27;0068 0308; # (ḧ; ḧ; h◌̈; ḧ; h◌̈; ) LATIN SMALL LETTER H WITH DIAERESIS
+1E28;1E28;0048 0327;1E28;0048 0327; # (Ḩ; Ḩ; H◌̧; Ḩ; H◌̧; ) LATIN CAPITAL LETTER H WITH CEDILLA
+1E29;1E29;0068 0327;1E29;0068 0327; # (ḩ; ḩ; h◌̧; ḩ; h◌̧; ) LATIN SMALL LETTER H WITH CEDILLA
+1E2A;1E2A;0048 032E;1E2A;0048 032E; # (Ḫ; Ḫ; H◌̮; Ḫ; H◌̮; ) LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2B;1E2B;0068 032E;1E2B;0068 032E; # (ḫ; ḫ; h◌̮; ḫ; h◌̮; ) LATIN SMALL LETTER H WITH BREVE BELOW
+1E2C;1E2C;0049 0330;1E2C;0049 0330; # (Ḭ; Ḭ; I◌̰; Ḭ; I◌̰; ) LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2D;1E2D;0069 0330;1E2D;0069 0330; # (ḭ; ḭ; i◌̰; ḭ; i◌̰; ) LATIN SMALL LETTER I WITH TILDE BELOW
+1E2E;1E2E;0049 0308 0301;1E2E;0049 0308 0301; # (Ḯ; Ḯ; I◌̈◌Ì; Ḯ; I◌̈◌Ì; ) LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E2F;1E2F;0069 0308 0301;1E2F;0069 0308 0301; # (ḯ; ḯ; i◌̈◌Ì; ḯ; i◌̈◌Ì; ) LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E30;1E30;004B 0301;1E30;004B 0301; # (Ḱ; Ḱ; Kâ—ŒÌ; Ḱ; Kâ—ŒÌ; ) LATIN CAPITAL LETTER K WITH ACUTE
+1E31;1E31;006B 0301;1E31;006B 0301; # (ḱ; ḱ; kâ—ŒÌ; ḱ; kâ—ŒÌ; ) LATIN SMALL LETTER K WITH ACUTE
+1E32;1E32;004B 0323;1E32;004B 0323; # (Ḳ; Ḳ; K◌̣; Ḳ; K◌̣; ) LATIN CAPITAL LETTER K WITH DOT BELOW
+1E33;1E33;006B 0323;1E33;006B 0323; # (ḳ; ḳ; k◌̣; ḳ; k◌̣; ) LATIN SMALL LETTER K WITH DOT BELOW
+1E34;1E34;004B 0331;1E34;004B 0331; # (Ḵ; Ḵ; K◌̱; Ḵ; K◌̱; ) LATIN CAPITAL LETTER K WITH LINE BELOW
+1E35;1E35;006B 0331;1E35;006B 0331; # (ḵ; ḵ; k◌̱; ḵ; k◌̱; ) LATIN SMALL LETTER K WITH LINE BELOW
+1E36;1E36;004C 0323;1E36;004C 0323; # (Ḷ; Ḷ; L◌̣; Ḷ; L◌̣; ) LATIN CAPITAL LETTER L WITH DOT BELOW
+1E37;1E37;006C 0323;1E37;006C 0323; # (ḷ; ḷ; l◌̣; ḷ; l◌̣; ) LATIN SMALL LETTER L WITH DOT BELOW
+1E38;1E38;004C 0323 0304;1E38;004C 0323 0304; # (Ḹ; Ḹ; L◌̣◌̄; Ḹ; L◌̣◌̄; ) LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E39;1E39;006C 0323 0304;1E39;006C 0323 0304; # (ḹ; ḹ; l◌̣◌̄; ḹ; l◌̣◌̄; ) LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E3A;1E3A;004C 0331;1E3A;004C 0331; # (Ḻ; Ḻ; L◌̱; Ḻ; L◌̱; ) LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3B;1E3B;006C 0331;1E3B;006C 0331; # (ḻ; ḻ; l◌̱; ḻ; l◌̱; ) LATIN SMALL LETTER L WITH LINE BELOW
+1E3C;1E3C;004C 032D;1E3C;004C 032D; # (Ḽ; Ḽ; L◌̭; Ḽ; L◌̭; ) LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3D;1E3D;006C 032D;1E3D;006C 032D; # (ḽ; ḽ; l◌̭; ḽ; l◌̭; ) LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3E;1E3E;004D 0301;1E3E;004D 0301; # (Ḿ; Ḿ; Mâ—ŒÌ; Ḿ; Mâ—ŒÌ; ) LATIN CAPITAL LETTER M WITH ACUTE
+1E3F;1E3F;006D 0301;1E3F;006D 0301; # (ḿ; ḿ; mâ—ŒÌ; ḿ; mâ—ŒÌ; ) LATIN SMALL LETTER M WITH ACUTE
+1E40;1E40;004D 0307;1E40;004D 0307; # (Ṁ; Ṁ; M◌̇; Ṁ; M◌̇; ) LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E41;1E41;006D 0307;1E41;006D 0307; # (á¹; á¹; m◌̇; á¹; m◌̇; ) LATIN SMALL LETTER M WITH DOT ABOVE
+1E42;1E42;004D 0323;1E42;004D 0323; # (Ṃ; Ṃ; M◌̣; Ṃ; M◌̣; ) LATIN CAPITAL LETTER M WITH DOT BELOW
+1E43;1E43;006D 0323;1E43;006D 0323; # (ṃ; ṃ; m◌̣; ṃ; m◌̣; ) LATIN SMALL LETTER M WITH DOT BELOW
+1E44;1E44;004E 0307;1E44;004E 0307; # (Ṅ; Ṅ; N◌̇; Ṅ; N◌̇; ) LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E45;1E45;006E 0307;1E45;006E 0307; # (ṅ; ṅ; n◌̇; ṅ; n◌̇; ) LATIN SMALL LETTER N WITH DOT ABOVE
+1E46;1E46;004E 0323;1E46;004E 0323; # (Ṇ; Ṇ; N◌̣; Ṇ; N◌̣; ) LATIN CAPITAL LETTER N WITH DOT BELOW
+1E47;1E47;006E 0323;1E47;006E 0323; # (ṇ; ṇ; n◌̣; ṇ; n◌̣; ) LATIN SMALL LETTER N WITH DOT BELOW
+1E48;1E48;004E 0331;1E48;004E 0331; # (Ṉ; Ṉ; N◌̱; Ṉ; N◌̱; ) LATIN CAPITAL LETTER N WITH LINE BELOW
+1E49;1E49;006E 0331;1E49;006E 0331; # (ṉ; ṉ; n◌̱; ṉ; n◌̱; ) LATIN SMALL LETTER N WITH LINE BELOW
+1E4A;1E4A;004E 032D;1E4A;004E 032D; # (Ṋ; Ṋ; N◌̭; Ṋ; N◌̭; ) LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4B;1E4B;006E 032D;1E4B;006E 032D; # (ṋ; ṋ; n◌̭; ṋ; n◌̭; ) LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4C;1E4C;004F 0303 0301;1E4C;004F 0303 0301; # (Ṍ; Ṍ; O◌̃◌Ì; Ṍ; O◌̃◌Ì; ) LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4D;1E4D;006F 0303 0301;1E4D;006F 0303 0301; # (á¹; á¹; o◌̃◌Ì; á¹; o◌̃◌Ì; ) LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4E;1E4E;004F 0303 0308;1E4E;004F 0303 0308; # (Ṏ; Ṏ; O◌̃◌̈; Ṏ; O◌̃◌̈; ) LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E4F;1E4F;006F 0303 0308;1E4F;006F 0303 0308; # (á¹; á¹; o◌̃◌̈; á¹; o◌̃◌̈; ) LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E50;1E50;004F 0304 0300;1E50;004F 0304 0300; # (á¹; á¹; O◌̄◌̀; á¹; O◌̄◌̀; ) LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E51;1E51;006F 0304 0300;1E51;006F 0304 0300; # (ṑ; ṑ; o◌̄◌̀; ṑ; o◌̄◌̀; ) LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E52;1E52;004F 0304 0301;1E52;004F 0304 0301; # (á¹’; á¹’; O◌̄◌Ì; á¹’; O◌̄◌Ì; ) LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E53;1E53;006F 0304 0301;1E53;006F 0304 0301; # (ṓ; ṓ; o◌̄◌Ì; ṓ; o◌̄◌Ì; ) LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E54;1E54;0050 0301;1E54;0050 0301; # (á¹”; á¹”; Pâ—ŒÌ; á¹”; Pâ—ŒÌ; ) LATIN CAPITAL LETTER P WITH ACUTE
+1E55;1E55;0070 0301;1E55;0070 0301; # (ṕ; ṕ; pâ—ŒÌ; ṕ; pâ—ŒÌ; ) LATIN SMALL LETTER P WITH ACUTE
+1E56;1E56;0050 0307;1E56;0050 0307; # (Ṗ; Ṗ; P◌̇; Ṗ; P◌̇; ) LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E57;1E57;0070 0307;1E57;0070 0307; # (ṗ; ṗ; p◌̇; ṗ; p◌̇; ) LATIN SMALL LETTER P WITH DOT ABOVE
+1E58;1E58;0052 0307;1E58;0052 0307; # (Ṙ; Ṙ; R◌̇; Ṙ; R◌̇; ) LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E59;1E59;0072 0307;1E59;0072 0307; # (ṙ; ṙ; r◌̇; ṙ; r◌̇; ) LATIN SMALL LETTER R WITH DOT ABOVE
+1E5A;1E5A;0052 0323;1E5A;0052 0323; # (Ṛ; Ṛ; R◌̣; Ṛ; R◌̣; ) LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5B;1E5B;0072 0323;1E5B;0072 0323; # (ṛ; ṛ; r◌̣; ṛ; r◌̣; ) LATIN SMALL LETTER R WITH DOT BELOW
+1E5C;1E5C;0052 0323 0304;1E5C;0052 0323 0304; # (Ṝ; Ṝ; R◌̣◌̄; Ṝ; R◌̣◌̄; ) LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5D;1E5D;0072 0323 0304;1E5D;0072 0323 0304; # (á¹; á¹; r◌̣◌̄; á¹; r◌̣◌̄; ) LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5E;1E5E;0052 0331;1E5E;0052 0331; # (Ṟ; Ṟ; R◌̱; Ṟ; R◌̱; ) LATIN CAPITAL LETTER R WITH LINE BELOW
+1E5F;1E5F;0072 0331;1E5F;0072 0331; # (ṟ; ṟ; r◌̱; ṟ; r◌̱; ) LATIN SMALL LETTER R WITH LINE BELOW
+1E60;1E60;0053 0307;1E60;0053 0307; # (Ṡ; Ṡ; S◌̇; Ṡ; S◌̇; ) LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E61;1E61;0073 0307;1E61;0073 0307; # (ṡ; ṡ; s◌̇; ṡ; s◌̇; ) LATIN SMALL LETTER S WITH DOT ABOVE
+1E62;1E62;0053 0323;1E62;0053 0323; # (Ṣ; Ṣ; S◌̣; Ṣ; S◌̣; ) LATIN CAPITAL LETTER S WITH DOT BELOW
+1E63;1E63;0073 0323;1E63;0073 0323; # (ṣ; ṣ; s◌̣; ṣ; s◌̣; ) LATIN SMALL LETTER S WITH DOT BELOW
+1E64;1E64;0053 0301 0307;1E64;0053 0301 0307; # (Ṥ; Ṥ; Sâ—ŒÌ◌̇; Ṥ; Sâ—ŒÌ◌̇; ) LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E65;1E65;0073 0301 0307;1E65;0073 0301 0307; # (á¹¥; á¹¥; sâ—ŒÌ◌̇; á¹¥; sâ—ŒÌ◌̇; ) LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E66;1E66;0053 030C 0307;1E66;0053 030C 0307; # (Ṧ; Ṧ; S◌̌◌̇; Ṧ; S◌̌◌̇; ) LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E67;1E67;0073 030C 0307;1E67;0073 030C 0307; # (ṧ; ṧ; s◌̌◌̇; ṧ; s◌̌◌̇; ) LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E68;1E68;0053 0323 0307;1E68;0053 0323 0307; # (Ṩ; Ṩ; S◌̣◌̇; Ṩ; S◌̣◌̇; ) LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E69;1E69;0073 0323 0307;1E69;0073 0323 0307; # (ṩ; ṩ; s◌̣◌̇; ṩ; s◌̣◌̇; ) LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A;1E6A;0054 0307;1E6A;0054 0307; # (Ṫ; Ṫ; T◌̇; Ṫ; T◌̇; ) LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6B;1E6B;0074 0307;1E6B;0074 0307; # (ṫ; ṫ; t◌̇; ṫ; t◌̇; ) LATIN SMALL LETTER T WITH DOT ABOVE
+1E6C;1E6C;0054 0323;1E6C;0054 0323; # (Ṭ; Ṭ; T◌̣; Ṭ; T◌̣; ) LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6D;1E6D;0074 0323;1E6D;0074 0323; # (ṭ; ṭ; t◌̣; ṭ; t◌̣; ) LATIN SMALL LETTER T WITH DOT BELOW
+1E6E;1E6E;0054 0331;1E6E;0054 0331; # (Ṯ; Ṯ; T◌̱; Ṯ; T◌̱; ) LATIN CAPITAL LETTER T WITH LINE BELOW
+1E6F;1E6F;0074 0331;1E6F;0074 0331; # (ṯ; ṯ; t◌̱; ṯ; t◌̱; ) LATIN SMALL LETTER T WITH LINE BELOW
+1E70;1E70;0054 032D;1E70;0054 032D; # (Ṱ; Ṱ; T◌̭; Ṱ; T◌̭; ) LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E71;1E71;0074 032D;1E71;0074 032D; # (ṱ; ṱ; t◌̭; ṱ; t◌̭; ) LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E72;1E72;0055 0324;1E72;0055 0324; # (Ṳ; Ṳ; U◌̤; Ṳ; U◌̤; ) LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E73;1E73;0075 0324;1E73;0075 0324; # (ṳ; ṳ; u◌̤; ṳ; u◌̤; ) LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E74;1E74;0055 0330;1E74;0055 0330; # (Ṵ; Ṵ; U◌̰; Ṵ; U◌̰; ) LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E75;1E75;0075 0330;1E75;0075 0330; # (ṵ; ṵ; u◌̰; ṵ; u◌̰; ) LATIN SMALL LETTER U WITH TILDE BELOW
+1E76;1E76;0055 032D;1E76;0055 032D; # (Ṷ; Ṷ; U◌̭; Ṷ; U◌̭; ) LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E77;1E77;0075 032D;1E77;0075 032D; # (ṷ; ṷ; u◌̭; ṷ; u◌̭; ) LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E78;1E78;0055 0303 0301;1E78;0055 0303 0301; # (Ṹ; Ṹ; U◌̃◌Ì; Ṹ; U◌̃◌Ì; ) LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E79;1E79;0075 0303 0301;1E79;0075 0303 0301; # (á¹¹; á¹¹; u◌̃◌Ì; á¹¹; u◌̃◌Ì; ) LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E7A;1E7A;0055 0304 0308;1E7A;0055 0304 0308; # (Ṻ; Ṻ; U◌̄◌̈; Ṻ; U◌̄◌̈; ) LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7B;1E7B;0075 0304 0308;1E7B;0075 0304 0308; # (ṻ; ṻ; u◌̄◌̈; ṻ; u◌̄◌̈; ) LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7C;1E7C;0056 0303;1E7C;0056 0303; # (Ṽ; Ṽ; V◌̃; Ṽ; V◌̃; ) LATIN CAPITAL LETTER V WITH TILDE
+1E7D;1E7D;0076 0303;1E7D;0076 0303; # (ṽ; ṽ; v◌̃; ṽ; v◌̃; ) LATIN SMALL LETTER V WITH TILDE
+1E7E;1E7E;0056 0323;1E7E;0056 0323; # (Ṿ; Ṿ; V◌̣; Ṿ; V◌̣; ) LATIN CAPITAL LETTER V WITH DOT BELOW
+1E7F;1E7F;0076 0323;1E7F;0076 0323; # (ṿ; ṿ; v◌̣; ṿ; v◌̣; ) LATIN SMALL LETTER V WITH DOT BELOW
+1E80;1E80;0057 0300;1E80;0057 0300; # (Ẁ; Ẁ; W◌̀; Ẁ; W◌̀; ) LATIN CAPITAL LETTER W WITH GRAVE
+1E81;1E81;0077 0300;1E81;0077 0300; # (áº; áº; w◌̀; áº; w◌̀; ) LATIN SMALL LETTER W WITH GRAVE
+1E82;1E82;0057 0301;1E82;0057 0301; # (Ẃ; Ẃ; Wâ—ŒÌ; Ẃ; Wâ—ŒÌ; ) LATIN CAPITAL LETTER W WITH ACUTE
+1E83;1E83;0077 0301;1E83;0077 0301; # (ẃ; ẃ; wâ—ŒÌ; ẃ; wâ—ŒÌ; ) LATIN SMALL LETTER W WITH ACUTE
+1E84;1E84;0057 0308;1E84;0057 0308; # (Ẅ; Ẅ; W◌̈; Ẅ; W◌̈; ) LATIN CAPITAL LETTER W WITH DIAERESIS
+1E85;1E85;0077 0308;1E85;0077 0308; # (ẅ; ẅ; w◌̈; ẅ; w◌̈; ) LATIN SMALL LETTER W WITH DIAERESIS
+1E86;1E86;0057 0307;1E86;0057 0307; # (Ẇ; Ẇ; W◌̇; Ẇ; W◌̇; ) LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E87;1E87;0077 0307;1E87;0077 0307; # (ẇ; ẇ; w◌̇; ẇ; w◌̇; ) LATIN SMALL LETTER W WITH DOT ABOVE
+1E88;1E88;0057 0323;1E88;0057 0323; # (Ẉ; Ẉ; W◌̣; Ẉ; W◌̣; ) LATIN CAPITAL LETTER W WITH DOT BELOW
+1E89;1E89;0077 0323;1E89;0077 0323; # (ẉ; ẉ; w◌̣; ẉ; w◌̣; ) LATIN SMALL LETTER W WITH DOT BELOW
+1E8A;1E8A;0058 0307;1E8A;0058 0307; # (Ẋ; Ẋ; X◌̇; Ẋ; X◌̇; ) LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8B;1E8B;0078 0307;1E8B;0078 0307; # (ẋ; ẋ; x◌̇; ẋ; x◌̇; ) LATIN SMALL LETTER X WITH DOT ABOVE
+1E8C;1E8C;0058 0308;1E8C;0058 0308; # (Ẍ; Ẍ; X◌̈; Ẍ; X◌̈; ) LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8D;1E8D;0078 0308;1E8D;0078 0308; # (áº; áº; x◌̈; áº; x◌̈; ) LATIN SMALL LETTER X WITH DIAERESIS
+1E8E;1E8E;0059 0307;1E8E;0059 0307; # (Ẏ; Ẏ; Y◌̇; Ẏ; Y◌̇; ) LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E8F;1E8F;0079 0307;1E8F;0079 0307; # (áº; áº; y◌̇; áº; y◌̇; ) LATIN SMALL LETTER Y WITH DOT ABOVE
+1E90;1E90;005A 0302;1E90;005A 0302; # (áº; áº; Z◌̂; áº; Z◌̂; ) LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E91;1E91;007A 0302;1E91;007A 0302; # (ẑ; ẑ; z◌̂; ẑ; z◌̂; ) LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E92;1E92;005A 0323;1E92;005A 0323; # (Ẓ; Ẓ; Z◌̣; Ẓ; Z◌̣; ) LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E93;1E93;007A 0323;1E93;007A 0323; # (ẓ; ẓ; z◌̣; ẓ; z◌̣; ) LATIN SMALL LETTER Z WITH DOT BELOW
+1E94;1E94;005A 0331;1E94;005A 0331; # (Ẕ; Ẕ; Z◌̱; Ẕ; Z◌̱; ) LATIN CAPITAL LETTER Z WITH LINE BELOW
+1E95;1E95;007A 0331;1E95;007A 0331; # (ẕ; ẕ; z◌̱; ẕ; z◌̱; ) LATIN SMALL LETTER Z WITH LINE BELOW
+1E96;1E96;0068 0331;1E96;0068 0331; # (ẖ; ẖ; h◌̱; ẖ; h◌̱; ) LATIN SMALL LETTER H WITH LINE BELOW
+1E97;1E97;0074 0308;1E97;0074 0308; # (ẗ; ẗ; t◌̈; ẗ; t◌̈; ) LATIN SMALL LETTER T WITH DIAERESIS
+1E98;1E98;0077 030A;1E98;0077 030A; # (ẘ; ẘ; w◌̊; ẘ; w◌̊; ) LATIN SMALL LETTER W WITH RING ABOVE
+1E99;1E99;0079 030A;1E99;0079 030A; # (ẙ; ẙ; y◌̊; ẙ; y◌̊; ) LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A;1E9A;1E9A;0061 02BE;0061 02BE; # (ẚ; ẚ; ẚ; aʾ; aʾ; ) LATIN SMALL LETTER A WITH RIGHT HALF RING
+1E9B;1E9B;017F 0307;1E61;0073 0307; # (ẛ; ẛ; ſ◌̇; ṡ; s◌̇; ) LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0;1EA0;0041 0323;1EA0;0041 0323; # (Ạ; Ạ; A◌̣; Ạ; A◌̣; ) LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA1;1EA1;0061 0323;1EA1;0061 0323; # (ạ; ạ; a◌̣; ạ; a◌̣; ) LATIN SMALL LETTER A WITH DOT BELOW
+1EA2;1EA2;0041 0309;1EA2;0041 0309; # (Ả; Ả; A◌̉; Ả; A◌̉; ) LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA3;1EA3;0061 0309;1EA3;0061 0309; # (ả; ả; a◌̉; ả; a◌̉; ) LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA4;1EA4;0041 0302 0301;1EA4;0041 0302 0301; # (Ấ; Ấ; A◌̂◌Ì; Ấ; A◌̂◌Ì; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA5;1EA5;0061 0302 0301;1EA5;0061 0302 0301; # (ấ; ấ; a◌̂◌Ì; ấ; a◌̂◌Ì; ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6;1EA6;0041 0302 0300;1EA6;0041 0302 0300; # (Ầ; Ầ; A◌̂◌̀; Ầ; A◌̂◌̀; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA7;1EA7;0061 0302 0300;1EA7;0061 0302 0300; # (ầ; ầ; a◌̂◌̀; ầ; a◌̂◌̀; ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8;1EA8;0041 0302 0309;1EA8;0041 0302 0309; # (Ẩ; Ẩ; A◌̂◌̉; Ẩ; A◌̂◌̉; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA9;1EA9;0061 0302 0309;1EA9;0061 0302 0309; # (ẩ; ẩ; a◌̂◌̉; ẩ; a◌̂◌̉; ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA;1EAA;0041 0302 0303;1EAA;0041 0302 0303; # (Ẫ; Ẫ; A◌̂◌̃; Ẫ; A◌̂◌̃; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAB;1EAB;0061 0302 0303;1EAB;0061 0302 0303; # (ẫ; ẫ; a◌̂◌̃; ẫ; a◌̂◌̃; ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC;1EAC;0041 0323 0302;1EAC;0041 0323 0302; # (Ậ; Ậ; A◌̣◌̂; Ậ; A◌̣◌̂; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAD;1EAD;0061 0323 0302;1EAD;0061 0323 0302; # (ậ; ậ; a◌̣◌̂; ậ; a◌̣◌̂; ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE;1EAE;0041 0306 0301;1EAE;0041 0306 0301; # (Ắ; Ắ; A◌̆◌Ì; Ắ; A◌̆◌Ì; ) LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EAF;1EAF;0061 0306 0301;1EAF;0061 0306 0301; # (ắ; ắ; a◌̆◌Ì; ắ; a◌̆◌Ì; ) LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EB0;1EB0;0041 0306 0300;1EB0;0041 0306 0300; # (Ằ; Ằ; A◌̆◌̀; Ằ; A◌̆◌̀; ) LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB1;1EB1;0061 0306 0300;1EB1;0061 0306 0300; # (ằ; ằ; a◌̆◌̀; ằ; a◌̆◌̀; ) LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB2;1EB2;0041 0306 0309;1EB2;0041 0306 0309; # (Ẳ; Ẳ; A◌̆◌̉; Ẳ; A◌̆◌̉; ) LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB3;1EB3;0061 0306 0309;1EB3;0061 0306 0309; # (ẳ; ẳ; a◌̆◌̉; ẳ; a◌̆◌̉; ) LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4;1EB4;0041 0306 0303;1EB4;0041 0306 0303; # (Ẵ; Ẵ; A◌̆◌̃; Ẵ; A◌̆◌̃; ) LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB5;1EB5;0061 0306 0303;1EB5;0061 0306 0303; # (ẵ; ẵ; a◌̆◌̃; ẵ; a◌̆◌̃; ) LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB6;1EB6;0041 0323 0306;1EB6;0041 0323 0306; # (Ặ; Ặ; A◌̣◌̆; Ặ; A◌̣◌̆; ) LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB7;1EB7;0061 0323 0306;1EB7;0061 0323 0306; # (ặ; ặ; a◌̣◌̆; ặ; a◌̣◌̆; ) LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB8;1EB8;0045 0323;1EB8;0045 0323; # (Ẹ; Ẹ; E◌̣; Ẹ; E◌̣; ) LATIN CAPITAL LETTER E WITH DOT BELOW
+1EB9;1EB9;0065 0323;1EB9;0065 0323; # (ẹ; ẹ; e◌̣; ẹ; e◌̣; ) LATIN SMALL LETTER E WITH DOT BELOW
+1EBA;1EBA;0045 0309;1EBA;0045 0309; # (Ẻ; Ẻ; E◌̉; Ẻ; E◌̉; ) LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBB;1EBB;0065 0309;1EBB;0065 0309; # (ẻ; ẻ; e◌̉; ẻ; e◌̉; ) LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBC;1EBC;0045 0303;1EBC;0045 0303; # (Ẽ; Ẽ; E◌̃; Ẽ; E◌̃; ) LATIN CAPITAL LETTER E WITH TILDE
+1EBD;1EBD;0065 0303;1EBD;0065 0303; # (ẽ; ẽ; e◌̃; ẽ; e◌̃; ) LATIN SMALL LETTER E WITH TILDE
+1EBE;1EBE;0045 0302 0301;1EBE;0045 0302 0301; # (Ế; Ế; E◌̂◌Ì; Ế; E◌̂◌Ì; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBF;1EBF;0065 0302 0301;1EBF;0065 0302 0301; # (ế; ế; e◌̂◌Ì; ế; e◌̂◌Ì; ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0;1EC0;0045 0302 0300;1EC0;0045 0302 0300; # (Ề; Ề; E◌̂◌̀; Ề; E◌̂◌̀; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC1;1EC1;0065 0302 0300;1EC1;0065 0302 0300; # (á»; á»; e◌̂◌̀; á»; e◌̂◌̀; ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2;1EC2;0045 0302 0309;1EC2;0045 0302 0309; # (Ể; Ể; E◌̂◌̉; Ể; E◌̂◌̉; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC3;1EC3;0065 0302 0309;1EC3;0065 0302 0309; # (ể; ể; e◌̂◌̉; ể; e◌̂◌̉; ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4;1EC4;0045 0302 0303;1EC4;0045 0302 0303; # (Ễ; Ễ; E◌̂◌̃; Ễ; E◌̂◌̃; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC5;1EC5;0065 0302 0303;1EC5;0065 0302 0303; # (ễ; ễ; e◌̂◌̃; ễ; e◌̂◌̃; ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6;1EC6;0045 0323 0302;1EC6;0045 0323 0302; # (Ệ; Ệ; E◌̣◌̂; Ệ; E◌̣◌̂; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC7;1EC7;0065 0323 0302;1EC7;0065 0323 0302; # (ệ; ệ; e◌̣◌̂; ệ; e◌̣◌̂; ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8;1EC8;0049 0309;1EC8;0049 0309; # (Ỉ; Ỉ; I◌̉; Ỉ; I◌̉; ) LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1EC9;1EC9;0069 0309;1EC9;0069 0309; # (ỉ; ỉ; i◌̉; ỉ; i◌̉; ) LATIN SMALL LETTER I WITH HOOK ABOVE
+1ECA;1ECA;0049 0323;1ECA;0049 0323; # (Ị; Ị; I◌̣; Ị; I◌̣; ) LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECB;1ECB;0069 0323;1ECB;0069 0323; # (ị; ị; i◌̣; ị; i◌̣; ) LATIN SMALL LETTER I WITH DOT BELOW
+1ECC;1ECC;004F 0323;1ECC;004F 0323; # (Ọ; Ọ; O◌̣; Ọ; O◌̣; ) LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECD;1ECD;006F 0323;1ECD;006F 0323; # (á»; á»; o◌̣; á»; o◌̣; ) LATIN SMALL LETTER O WITH DOT BELOW
+1ECE;1ECE;004F 0309;1ECE;004F 0309; # (Ỏ; Ỏ; O◌̉; Ỏ; O◌̉; ) LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ECF;1ECF;006F 0309;1ECF;006F 0309; # (á»; á»; o◌̉; á»; o◌̉; ) LATIN SMALL LETTER O WITH HOOK ABOVE
+1ED0;1ED0;004F 0302 0301;1ED0;004F 0302 0301; # (á»; á»; O◌̂◌Ì; á»; O◌̂◌Ì; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED1;1ED1;006F 0302 0301;1ED1;006F 0302 0301; # (ố; ố; o◌̂◌Ì; ố; o◌̂◌Ì; ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2;1ED2;004F 0302 0300;1ED2;004F 0302 0300; # (Ồ; Ồ; O◌̂◌̀; Ồ; O◌̂◌̀; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED3;1ED3;006F 0302 0300;1ED3;006F 0302 0300; # (ồ; ồ; o◌̂◌̀; ồ; o◌̂◌̀; ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4;1ED4;004F 0302 0309;1ED4;004F 0302 0309; # (Ổ; Ổ; O◌̂◌̉; Ổ; O◌̂◌̉; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED5;1ED5;006F 0302 0309;1ED5;006F 0302 0309; # (ổ; ổ; o◌̂◌̉; ổ; o◌̂◌̉; ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6;1ED6;004F 0302 0303;1ED6;004F 0302 0303; # (Ỗ; Ỗ; O◌̂◌̃; Ỗ; O◌̂◌̃; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED7;1ED7;006F 0302 0303;1ED7;006F 0302 0303; # (ỗ; ỗ; o◌̂◌̃; ỗ; o◌̂◌̃; ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8;1ED8;004F 0323 0302;1ED8;004F 0323 0302; # (Ộ; Ộ; O◌̣◌̂; Ộ; O◌̣◌̂; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED9;1ED9;006F 0323 0302;1ED9;006F 0323 0302; # (ộ; ộ; o◌̣◌̂; ộ; o◌̣◌̂; ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA;1EDA;004F 031B 0301;1EDA;004F 031B 0301; # (Ớ; Ớ; O◌̛◌Ì; Ớ; O◌̛◌Ì; ) LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDB;1EDB;006F 031B 0301;1EDB;006F 031B 0301; # (á»›; á»›; o◌̛◌Ì; á»›; o◌̛◌Ì; ) LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDC;1EDC;004F 031B 0300;1EDC;004F 031B 0300; # (Ờ; Ờ; O◌̛◌̀; Ờ; O◌̛◌̀; ) LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDD;1EDD;006F 031B 0300;1EDD;006F 031B 0300; # (á»; á»; o◌̛◌̀; á»; o◌̛◌̀; ) LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDE;1EDE;004F 031B 0309;1EDE;004F 031B 0309; # (Ở; Ở; O◌̛◌̉; Ở; O◌̛◌̉; ) LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EDF;1EDF;006F 031B 0309;1EDF;006F 031B 0309; # (ở; ở; o◌̛◌̉; ở; o◌̛◌̉; ) LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EE0;1EE0;004F 031B 0303;1EE0;004F 031B 0303; # (Ỡ; Ỡ; O◌̛◌̃; Ỡ; O◌̛◌̃; ) LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE1;1EE1;006F 031B 0303;1EE1;006F 031B 0303; # (ỡ; ỡ; o◌̛◌̃; ỡ; o◌̛◌̃; ) LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE2;1EE2;004F 031B 0323;1EE2;004F 031B 0323; # (Ợ; Ợ; O◌̛◌̣; Ợ; O◌̛◌̣; ) LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE3;1EE3;006F 031B 0323;1EE3;006F 031B 0323; # (ợ; ợ; o◌̛◌̣; ợ; o◌̛◌̣; ) LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE4;1EE4;0055 0323;1EE4;0055 0323; # (Ụ; Ụ; U◌̣; Ụ; U◌̣; ) LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE5;1EE5;0075 0323;1EE5;0075 0323; # (ụ; ụ; u◌̣; ụ; u◌̣; ) LATIN SMALL LETTER U WITH DOT BELOW
+1EE6;1EE6;0055 0309;1EE6;0055 0309; # (Ủ; Ủ; U◌̉; Ủ; U◌̉; ) LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE7;1EE7;0075 0309;1EE7;0075 0309; # (ủ; ủ; u◌̉; ủ; u◌̉; ) LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE8;1EE8;0055 031B 0301;1EE8;0055 031B 0301; # (Ứ; Ứ; U◌̛◌Ì; Ứ; U◌̛◌Ì; ) LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EE9;1EE9;0075 031B 0301;1EE9;0075 031B 0301; # (ứ; ứ; u◌̛◌Ì; ứ; u◌̛◌Ì; ) LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EEA;1EEA;0055 031B 0300;1EEA;0055 031B 0300; # (Ừ; Ừ; U◌̛◌̀; Ừ; U◌̛◌̀; ) LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEB;1EEB;0075 031B 0300;1EEB;0075 031B 0300; # (ừ; ừ; u◌̛◌̀; ừ; u◌̛◌̀; ) LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEC;1EEC;0055 031B 0309;1EEC;0055 031B 0309; # (Ử; Ử; U◌̛◌̉; Ử; U◌̛◌̉; ) LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EED;1EED;0075 031B 0309;1EED;0075 031B 0309; # (ử; ử; u◌̛◌̉; ử; u◌̛◌̉; ) LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEE;1EEE;0055 031B 0303;1EEE;0055 031B 0303; # (Ữ; Ữ; U◌̛◌̃; Ữ; U◌̛◌̃; ) LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EEF;1EEF;0075 031B 0303;1EEF;0075 031B 0303; # (ữ; ữ; u◌̛◌̃; ữ; u◌̛◌̃; ) LATIN SMALL LETTER U WITH HORN AND TILDE
+1EF0;1EF0;0055 031B 0323;1EF0;0055 031B 0323; # (Ự; Ự; U◌̛◌̣; Ự; U◌̛◌̣; ) LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF1;1EF1;0075 031B 0323;1EF1;0075 031B 0323; # (ự; ự; u◌̛◌̣; ự; u◌̛◌̣; ) LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF2;1EF2;0059 0300;1EF2;0059 0300; # (Ỳ; Ỳ; Y◌̀; Ỳ; Y◌̀; ) LATIN CAPITAL LETTER Y WITH GRAVE
+1EF3;1EF3;0079 0300;1EF3;0079 0300; # (ỳ; ỳ; y◌̀; ỳ; y◌̀; ) LATIN SMALL LETTER Y WITH GRAVE
+1EF4;1EF4;0059 0323;1EF4;0059 0323; # (Ỵ; Ỵ; Y◌̣; Ỵ; Y◌̣; ) LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF5;1EF5;0079 0323;1EF5;0079 0323; # (ỵ; ỵ; y◌̣; ỵ; y◌̣; ) LATIN SMALL LETTER Y WITH DOT BELOW
+1EF6;1EF6;0059 0309;1EF6;0059 0309; # (Ỷ; Ỷ; Y◌̉; Ỷ; Y◌̉; ) LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF7;1EF7;0079 0309;1EF7;0079 0309; # (ỷ; ỷ; y◌̉; ỷ; y◌̉; ) LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF8;1EF8;0059 0303;1EF8;0059 0303; # (Ỹ; Ỹ; Y◌̃; Ỹ; Y◌̃; ) LATIN CAPITAL LETTER Y WITH TILDE
+1EF9;1EF9;0079 0303;1EF9;0079 0303; # (ỹ; ỹ; y◌̃; ỹ; y◌̃; ) LATIN SMALL LETTER Y WITH TILDE
+1F00;1F00;03B1 0313;1F00;03B1 0313; # (ἀ; ἀ; α◌̓; ἀ; α◌̓; ) GREEK SMALL LETTER ALPHA WITH PSILI
+1F01;1F01;03B1 0314;1F01;03B1 0314; # (á¼; á¼; α◌̔; á¼; α◌̔; ) GREEK SMALL LETTER ALPHA WITH DASIA
+1F02;1F02;03B1 0313 0300;1F02;03B1 0313 0300; # (ἂ; ἂ; α◌̓◌̀; ἂ; α◌̓◌̀; ) GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1F03;1F03;03B1 0314 0300;1F03;03B1 0314 0300; # (ἃ; ἃ; α◌̔◌̀; ἃ; α◌̔◌̀; ) GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1F04;1F04;03B1 0313 0301;1F04;03B1 0313 0301; # (ἄ; ἄ; α◌̓◌Ì; ἄ; α◌̓◌Ì; ) GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1F05;1F05;03B1 0314 0301;1F05;03B1 0314 0301; # (á¼…; á¼…; α◌̔◌Ì; á¼…; α◌̔◌Ì; ) GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1F06;1F06;03B1 0313 0342;1F06;03B1 0313 0342; # (ἆ; ἆ; α◌̓◌͂; ἆ; α◌̓◌͂; ) GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F07;1F07;03B1 0314 0342;1F07;03B1 0314 0342; # (ἇ; ἇ; α◌̔◌͂; ἇ; α◌̔◌͂; ) GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F08;1F08;0391 0313;1F08;0391 0313; # (Ἀ; Ἀ; Α◌̓; Ἀ; Α◌̓; ) GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F09;1F09;0391 0314;1F09;0391 0314; # (Ἁ; Ἁ; Α◌̔; Ἁ; Α◌̔; ) GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F0A;1F0A;0391 0313 0300;1F0A;0391 0313 0300; # (Ἂ; Ἂ; Α◌̓◌̀; Ἂ; Α◌̓◌̀; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F0B;1F0B;0391 0314 0300;1F0B;0391 0314 0300; # (Ἃ; Ἃ; Α◌̔◌̀; Ἃ; Α◌̔◌̀; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F0C;1F0C;0391 0313 0301;1F0C;0391 0313 0301; # (Ἄ; Ἄ; Α◌̓◌Ì; Ἄ; Α◌̓◌Ì; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F0D;1F0D;0391 0314 0301;1F0D;0391 0314 0301; # (á¼; á¼; Α◌̔◌Ì; á¼; Α◌̔◌Ì; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F0E;1F0E;0391 0313 0342;1F0E;0391 0313 0342; # (Ἆ; Ἆ; Α◌̓◌͂; Ἆ; Α◌̓◌͂; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0F;1F0F;0391 0314 0342;1F0F;0391 0314 0342; # (á¼; á¼; Α◌̔◌͂; á¼; Α◌̔◌͂; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10;1F10;03B5 0313;1F10;03B5 0313; # (á¼; á¼; ε◌̓; á¼; ε◌̓; ) GREEK SMALL LETTER EPSILON WITH PSILI
+1F11;1F11;03B5 0314;1F11;03B5 0314; # (ἑ; ἑ; ε◌̔; ἑ; ε◌̔; ) GREEK SMALL LETTER EPSILON WITH DASIA
+1F12;1F12;03B5 0313 0300;1F12;03B5 0313 0300; # (ἒ; ἒ; ε◌̓◌̀; ἒ; ε◌̓◌̀; ) GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1F13;1F13;03B5 0314 0300;1F13;03B5 0314 0300; # (ἓ; ἓ; ε◌̔◌̀; ἓ; ε◌̔◌̀; ) GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1F14;1F14;03B5 0313 0301;1F14;03B5 0313 0301; # (á¼”; á¼”; ε◌̓◌Ì; á¼”; ε◌̓◌Ì; ) GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1F15;1F15;03B5 0314 0301;1F15;03B5 0314 0301; # (ἕ; ἕ; ε◌̔◌Ì; ἕ; ε◌̔◌Ì; ) GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18;1F18;0395 0313;1F18;0395 0313; # (Ἐ; Ἐ; Ε◌̓; Ἐ; Ε◌̓; ) GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F19;1F19;0395 0314;1F19;0395 0314; # (Ἑ; Ἑ; Ε◌̔; Ἑ; Ε◌̔; ) GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F1A;1F1A;0395 0313 0300;1F1A;0395 0313 0300; # (Ἒ; Ἒ; Ε◌̓◌̀; Ἒ; Ε◌̓◌̀; ) GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F1B;1F1B;0395 0314 0300;1F1B;0395 0314 0300; # (Ἓ; Ἓ; Ε◌̔◌̀; Ἓ; Ε◌̔◌̀; ) GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1F1C;1F1C;0395 0313 0301;1F1C;0395 0313 0301; # (Ἔ; Ἔ; Ε◌̓◌Ì; Ἔ; Ε◌̓◌Ì; ) GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F1D;1F1D;0395 0314 0301;1F1D;0395 0314 0301; # (á¼; á¼; Ε◌̔◌Ì; á¼; Ε◌̔◌Ì; ) GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20;1F20;03B7 0313;1F20;03B7 0313; # (ἠ; ἠ; η◌̓; ἠ; η◌̓; ) GREEK SMALL LETTER ETA WITH PSILI
+1F21;1F21;03B7 0314;1F21;03B7 0314; # (ἡ; ἡ; η◌̔; ἡ; η◌̔; ) GREEK SMALL LETTER ETA WITH DASIA
+1F22;1F22;03B7 0313 0300;1F22;03B7 0313 0300; # (ἢ; ἢ; η◌̓◌̀; ἢ; η◌̓◌̀; ) GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1F23;1F23;03B7 0314 0300;1F23;03B7 0314 0300; # (ἣ; ἣ; η◌̔◌̀; ἣ; η◌̔◌̀; ) GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1F24;1F24;03B7 0313 0301;1F24;03B7 0313 0301; # (ἤ; ἤ; η◌̓◌Ì; ἤ; η◌̓◌Ì; ) GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1F25;1F25;03B7 0314 0301;1F25;03B7 0314 0301; # (á¼¥; á¼¥; η◌̔◌Ì; á¼¥; η◌̔◌Ì; ) GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1F26;1F26;03B7 0313 0342;1F26;03B7 0313 0342; # (ἦ; ἦ; η◌̓◌͂; ἦ; η◌̓◌͂; ) GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1F27;1F27;03B7 0314 0342;1F27;03B7 0314 0342; # (ἧ; ἧ; η◌̔◌͂; ἧ; η◌̔◌͂; ) GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F28;1F28;0397 0313;1F28;0397 0313; # (Ἠ; Ἠ; Η◌̓; Ἠ; Η◌̓; ) GREEK CAPITAL LETTER ETA WITH PSILI
+1F29;1F29;0397 0314;1F29;0397 0314; # (Ἡ; Ἡ; Η◌̔; Ἡ; Η◌̔; ) GREEK CAPITAL LETTER ETA WITH DASIA
+1F2A;1F2A;0397 0313 0300;1F2A;0397 0313 0300; # (Ἢ; Ἢ; Η◌̓◌̀; Ἢ; Η◌̓◌̀; ) GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F2B;1F2B;0397 0314 0300;1F2B;0397 0314 0300; # (Ἣ; Ἣ; Η◌̔◌̀; Ἣ; Η◌̔◌̀; ) GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F2C;1F2C;0397 0313 0301;1F2C;0397 0313 0301; # (Ἤ; Ἤ; Η◌̓◌Ì; Ἤ; Η◌̓◌Ì; ) GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F2D;1F2D;0397 0314 0301;1F2D;0397 0314 0301; # (á¼­; á¼­; Η◌̔◌Ì; á¼­; Η◌̔◌Ì; ) GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F2E;1F2E;0397 0313 0342;1F2E;0397 0313 0342; # (Ἦ; Ἦ; Η◌̓◌͂; Ἦ; Η◌̓◌͂; ) GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2F;1F2F;0397 0314 0342;1F2F;0397 0314 0342; # (Ἧ; Ἧ; Η◌̔◌͂; Ἧ; Η◌̔◌͂; ) GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30;1F30;03B9 0313;1F30;03B9 0313; # (ἰ; ἰ; ι◌̓; ἰ; ι◌̓; ) GREEK SMALL LETTER IOTA WITH PSILI
+1F31;1F31;03B9 0314;1F31;03B9 0314; # (ἱ; ἱ; ι◌̔; ἱ; ι◌̔; ) GREEK SMALL LETTER IOTA WITH DASIA
+1F32;1F32;03B9 0313 0300;1F32;03B9 0313 0300; # (ἲ; ἲ; ι◌̓◌̀; ἲ; ι◌̓◌̀; ) GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1F33;1F33;03B9 0314 0300;1F33;03B9 0314 0300; # (ἳ; ἳ; ι◌̔◌̀; ἳ; ι◌̔◌̀; ) GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1F34;1F34;03B9 0313 0301;1F34;03B9 0313 0301; # (á¼´; á¼´; ι◌̓◌Ì; á¼´; ι◌̓◌Ì; ) GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1F35;1F35;03B9 0314 0301;1F35;03B9 0314 0301; # (á¼µ; á¼µ; ι◌̔◌Ì; á¼µ; ι◌̔◌Ì; ) GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1F36;1F36;03B9 0313 0342;1F36;03B9 0313 0342; # (ἶ; ἶ; ι◌̓◌͂; ἶ; ι◌̓◌͂; ) GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F37;1F37;03B9 0314 0342;1F37;03B9 0314 0342; # (ἷ; ἷ; ι◌̔◌͂; ἷ; ι◌̔◌͂; ) GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F38;1F38;0399 0313;1F38;0399 0313; # (Ἰ; Ἰ; Ι◌̓; Ἰ; Ι◌̓; ) GREEK CAPITAL LETTER IOTA WITH PSILI
+1F39;1F39;0399 0314;1F39;0399 0314; # (Ἱ; Ἱ; Ι◌̔; Ἱ; Ι◌̔; ) GREEK CAPITAL LETTER IOTA WITH DASIA
+1F3A;1F3A;0399 0313 0300;1F3A;0399 0313 0300; # (Ἲ; Ἲ; Ι◌̓◌̀; Ἲ; Ι◌̓◌̀; ) GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F3B;1F3B;0399 0314 0300;1F3B;0399 0314 0300; # (Ἳ; Ἳ; Ι◌̔◌̀; Ἳ; Ι◌̔◌̀; ) GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F3C;1F3C;0399 0313 0301;1F3C;0399 0313 0301; # (á¼¼; á¼¼; Ι◌̓◌Ì; á¼¼; Ι◌̓◌Ì; ) GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F3D;1F3D;0399 0314 0301;1F3D;0399 0314 0301; # (á¼½; á¼½; Ι◌̔◌Ì; á¼½; Ι◌̔◌Ì; ) GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F3E;1F3E;0399 0313 0342;1F3E;0399 0313 0342; # (Ἶ; Ἶ; Ι◌̓◌͂; Ἶ; Ι◌̓◌͂; ) GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3F;1F3F;0399 0314 0342;1F3F;0399 0314 0342; # (Ἷ; Ἷ; Ι◌̔◌͂; Ἷ; Ι◌̔◌͂; ) GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40;1F40;03BF 0313;1F40;03BF 0313; # (ὀ; ὀ; ο◌̓; ὀ; ο◌̓; ) GREEK SMALL LETTER OMICRON WITH PSILI
+1F41;1F41;03BF 0314;1F41;03BF 0314; # (á½; á½; ο◌̔; á½; ο◌̔; ) GREEK SMALL LETTER OMICRON WITH DASIA
+1F42;1F42;03BF 0313 0300;1F42;03BF 0313 0300; # (ὂ; ὂ; ο◌̓◌̀; ὂ; ο◌̓◌̀; ) GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1F43;1F43;03BF 0314 0300;1F43;03BF 0314 0300; # (ὃ; ὃ; ο◌̔◌̀; ὃ; ο◌̔◌̀; ) GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1F44;1F44;03BF 0313 0301;1F44;03BF 0313 0301; # (ὄ; ὄ; ο◌̓◌Ì; ὄ; ο◌̓◌Ì; ) GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1F45;1F45;03BF 0314 0301;1F45;03BF 0314 0301; # (á½…; á½…; ο◌̔◌Ì; á½…; ο◌̔◌Ì; ) GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48;1F48;039F 0313;1F48;039F 0313; # (Ὀ; Ὀ; Ο◌̓; Ὀ; Ο◌̓; ) GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F49;1F49;039F 0314;1F49;039F 0314; # (Ὁ; Ὁ; Ο◌̔; Ὁ; Ο◌̔; ) GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F4A;1F4A;039F 0313 0300;1F4A;039F 0313 0300; # (Ὂ; Ὂ; Ο◌̓◌̀; Ὂ; Ο◌̓◌̀; ) GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F4B;1F4B;039F 0314 0300;1F4B;039F 0314 0300; # (Ὃ; Ὃ; Ο◌̔◌̀; Ὃ; Ο◌̔◌̀; ) GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1F4C;1F4C;039F 0313 0301;1F4C;039F 0313 0301; # (Ὄ; Ὄ; Ο◌̓◌Ì; Ὄ; Ο◌̓◌Ì; ) GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F4D;1F4D;039F 0314 0301;1F4D;039F 0314 0301; # (á½; á½; Ο◌̔◌Ì; á½; Ο◌̔◌Ì; ) GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50;1F50;03C5 0313;1F50;03C5 0313; # (á½; á½; υ◌̓; á½; υ◌̓; ) GREEK SMALL LETTER UPSILON WITH PSILI
+1F51;1F51;03C5 0314;1F51;03C5 0314; # (ὑ; ὑ; υ◌̔; ὑ; υ◌̔; ) GREEK SMALL LETTER UPSILON WITH DASIA
+1F52;1F52;03C5 0313 0300;1F52;03C5 0313 0300; # (ὒ; ὒ; υ◌̓◌̀; ὒ; υ◌̓◌̀; ) GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F53;1F53;03C5 0314 0300;1F53;03C5 0314 0300; # (ὓ; ὓ; υ◌̔◌̀; ὓ; υ◌̔◌̀; ) GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1F54;1F54;03C5 0313 0301;1F54;03C5 0313 0301; # (á½”; á½”; υ◌̓◌Ì; á½”; υ◌̓◌Ì; ) GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F55;1F55;03C5 0314 0301;1F55;03C5 0314 0301; # (ὕ; ὕ; υ◌̔◌Ì; ὕ; υ◌̔◌Ì; ) GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1F56;1F56;03C5 0313 0342;1F56;03C5 0313 0342; # (ὖ; ὖ; υ◌̓◌͂; ὖ; υ◌̓◌͂; ) GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F57;1F57;03C5 0314 0342;1F57;03C5 0314 0342; # (ὗ; ὗ; υ◌̔◌͂; ὗ; υ◌̔◌͂; ) GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59;1F59;03A5 0314;1F59;03A5 0314; # (Ὑ; Ὑ; Υ◌̔; Ὑ; Υ◌̔; ) GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B;1F5B;03A5 0314 0300;1F5B;03A5 0314 0300; # (Ὓ; Ὓ; Υ◌̔◌̀; Ὓ; Υ◌̔◌̀; ) GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D;1F5D;03A5 0314 0301;1F5D;03A5 0314 0301; # (á½; á½; Υ◌̔◌Ì; á½; Υ◌̔◌Ì; ) GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F;1F5F;03A5 0314 0342;1F5F;03A5 0314 0342; # (Ὗ; Ὗ; Υ◌̔◌͂; Ὗ; Υ◌̔◌͂; ) GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60;1F60;03C9 0313;1F60;03C9 0313; # (ὠ; ὠ; ω◌̓; ὠ; ω◌̓; ) GREEK SMALL LETTER OMEGA WITH PSILI
+1F61;1F61;03C9 0314;1F61;03C9 0314; # (ὡ; ὡ; ω◌̔; ὡ; ω◌̔; ) GREEK SMALL LETTER OMEGA WITH DASIA
+1F62;1F62;03C9 0313 0300;1F62;03C9 0313 0300; # (ὢ; ὢ; ω◌̓◌̀; ὢ; ω◌̓◌̀; ) GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1F63;1F63;03C9 0314 0300;1F63;03C9 0314 0300; # (ὣ; ὣ; ω◌̔◌̀; ὣ; ω◌̔◌̀; ) GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1F64;1F64;03C9 0313 0301;1F64;03C9 0313 0301; # (ὤ; ὤ; ω◌̓◌Ì; ὤ; ω◌̓◌Ì; ) GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1F65;1F65;03C9 0314 0301;1F65;03C9 0314 0301; # (á½¥; á½¥; ω◌̔◌Ì; á½¥; ω◌̔◌Ì; ) GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1F66;1F66;03C9 0313 0342;1F66;03C9 0313 0342; # (ὦ; ὦ; ω◌̓◌͂; ὦ; ω◌̓◌͂; ) GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F67;1F67;03C9 0314 0342;1F67;03C9 0314 0342; # (ὧ; ὧ; ω◌̔◌͂; ὧ; ω◌̔◌͂; ) GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F68;1F68;03A9 0313;1F68;03A9 0313; # (Ὠ; Ὠ; Ω◌̓; Ὠ; Ω◌̓; ) GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F69;1F69;03A9 0314;1F69;03A9 0314; # (Ὡ; Ὡ; Ω◌̔; Ὡ; Ω◌̔; ) GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F6A;1F6A;03A9 0313 0300;1F6A;03A9 0313 0300; # (Ὢ; Ὢ; Ω◌̓◌̀; Ὢ; Ω◌̓◌̀; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1F6B;1F6B;03A9 0314 0300;1F6B;03A9 0314 0300; # (Ὣ; Ὣ; Ω◌̔◌̀; Ὣ; Ω◌̔◌̀; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1F6C;1F6C;03A9 0313 0301;1F6C;03A9 0313 0301; # (Ὤ; Ὤ; Ω◌̓◌Ì; Ὤ; Ω◌̓◌Ì; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1F6D;1F6D;03A9 0314 0301;1F6D;03A9 0314 0301; # (á½­; á½­; Ω◌̔◌Ì; á½­; Ω◌̔◌Ì; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1F6E;1F6E;03A9 0313 0342;1F6E;03A9 0313 0342; # (Ὦ; Ὦ; Ω◌̓◌͂; Ὦ; Ω◌̓◌͂; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6F;1F6F;03A9 0314 0342;1F6F;03A9 0314 0342; # (Ὧ; Ὧ; Ω◌̔◌͂; Ὧ; Ω◌̔◌͂; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70;1F70;03B1 0300;1F70;03B1 0300; # (ὰ; ὰ; α◌̀; ὰ; α◌̀; ) GREEK SMALL LETTER ALPHA WITH VARIA
+1F71;03AC;03B1 0301;03AC;03B1 0301; # (á½±; ά; α◌Ì; ά; α◌Ì; ) GREEK SMALL LETTER ALPHA WITH OXIA
+1F72;1F72;03B5 0300;1F72;03B5 0300; # (ὲ; ὲ; ε◌̀; ὲ; ε◌̀; ) GREEK SMALL LETTER EPSILON WITH VARIA
+1F73;03AD;03B5 0301;03AD;03B5 0301; # (á½³; έ; ε◌Ì; έ; ε◌Ì; ) GREEK SMALL LETTER EPSILON WITH OXIA
+1F74;1F74;03B7 0300;1F74;03B7 0300; # (ὴ; ὴ; η◌̀; ὴ; η◌̀; ) GREEK SMALL LETTER ETA WITH VARIA
+1F75;03AE;03B7 0301;03AE;03B7 0301; # (á½µ; ή; η◌Ì; ή; η◌Ì; ) GREEK SMALL LETTER ETA WITH OXIA
+1F76;1F76;03B9 0300;1F76;03B9 0300; # (ὶ; ὶ; ι◌̀; ὶ; ι◌̀; ) GREEK SMALL LETTER IOTA WITH VARIA
+1F77;03AF;03B9 0301;03AF;03B9 0301; # (á½·; ί; ι◌Ì; ί; ι◌Ì; ) GREEK SMALL LETTER IOTA WITH OXIA
+1F78;1F78;03BF 0300;1F78;03BF 0300; # (ὸ; ὸ; ο◌̀; ὸ; ο◌̀; ) GREEK SMALL LETTER OMICRON WITH VARIA
+1F79;03CC;03BF 0301;03CC;03BF 0301; # (á½¹; ÏŒ; ο◌Ì; ÏŒ; ο◌Ì; ) GREEK SMALL LETTER OMICRON WITH OXIA
+1F7A;1F7A;03C5 0300;1F7A;03C5 0300; # (ὺ; ὺ; υ◌̀; ὺ; υ◌̀; ) GREEK SMALL LETTER UPSILON WITH VARIA
+1F7B;03CD;03C5 0301;03CD;03C5 0301; # (á½»; Ï; Ï…â—ŒÌ; Ï; Ï…â—ŒÌ; ) GREEK SMALL LETTER UPSILON WITH OXIA
+1F7C;1F7C;03C9 0300;1F7C;03C9 0300; # (ὼ; ὼ; ω◌̀; ὼ; ω◌̀; ) GREEK SMALL LETTER OMEGA WITH VARIA
+1F7D;03CE;03C9 0301;03CE;03C9 0301; # (á½½; ÏŽ; ω◌Ì; ÏŽ; ω◌Ì; ) GREEK SMALL LETTER OMEGA WITH OXIA
+1F80;1F80;03B1 0313 0345;1F80;03B1 0313 0345; # (ᾀ; ᾀ; α◌̓◌ͅ; ᾀ; α◌̓◌ͅ; ) GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81;1F81;03B1 0314 0345;1F81;03B1 0314 0345; # (á¾; á¾; α◌̔◌ͅ; á¾; α◌̔◌ͅ; ) GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82;1F82;03B1 0313 0300 0345;1F82;03B1 0313 0300 0345; # (ᾂ; ᾂ; α◌̓◌̀◌ͅ; ᾂ; α◌̓◌̀◌ͅ; ) GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83;1F83;03B1 0314 0300 0345;1F83;03B1 0314 0300 0345; # (ᾃ; ᾃ; α◌̔◌̀◌ͅ; ᾃ; α◌̔◌̀◌ͅ; ) GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84;1F84;03B1 0313 0301 0345;1F84;03B1 0313 0301 0345; # (ᾄ; ᾄ; α◌̓◌Ì◌ͅ; ᾄ; α◌̓◌Ì◌ͅ; ) GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85;1F85;03B1 0314 0301 0345;1F85;03B1 0314 0301 0345; # (á¾…; á¾…; α◌̔◌Ì◌ͅ; á¾…; α◌̔◌Ì◌ͅ; ) GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86;1F86;03B1 0313 0342 0345;1F86;03B1 0313 0342 0345; # (ᾆ; ᾆ; α◌̓◌͂◌ͅ; ᾆ; α◌̓◌͂◌ͅ; ) GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87;1F87;03B1 0314 0342 0345;1F87;03B1 0314 0342 0345; # (ᾇ; ᾇ; α◌̔◌͂◌ͅ; ᾇ; α◌̔◌͂◌ͅ; ) GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88;1F88;0391 0313 0345;1F88;0391 0313 0345; # (ᾈ; ᾈ; Α◌̓◌ͅ; ᾈ; Α◌̓◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89;1F89;0391 0314 0345;1F89;0391 0314 0345; # (ᾉ; ᾉ; Α◌̔◌ͅ; ᾉ; Α◌̔◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A;1F8A;0391 0313 0300 0345;1F8A;0391 0313 0300 0345; # (ᾊ; ᾊ; Α◌̓◌̀◌ͅ; ᾊ; Α◌̓◌̀◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B;1F8B;0391 0314 0300 0345;1F8B;0391 0314 0300 0345; # (ᾋ; ᾋ; Α◌̔◌̀◌ͅ; ᾋ; Α◌̔◌̀◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C;1F8C;0391 0313 0301 0345;1F8C;0391 0313 0301 0345; # (ᾌ; ᾌ; Α◌̓◌Ì◌ͅ; ᾌ; Α◌̓◌Ì◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D;1F8D;0391 0314 0301 0345;1F8D;0391 0314 0301 0345; # (á¾; á¾; Α◌̔◌Ì◌ͅ; á¾; Α◌̔◌Ì◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E;1F8E;0391 0313 0342 0345;1F8E;0391 0313 0342 0345; # (ᾎ; ᾎ; Α◌̓◌͂◌ͅ; ᾎ; Α◌̓◌͂◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F;1F8F;0391 0314 0342 0345;1F8F;0391 0314 0342 0345; # (á¾; á¾; Α◌̔◌͂◌ͅ; á¾; Α◌̔◌͂◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90;1F90;03B7 0313 0345;1F90;03B7 0313 0345; # (á¾; á¾; η◌̓◌ͅ; á¾; η◌̓◌ͅ; ) GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91;1F91;03B7 0314 0345;1F91;03B7 0314 0345; # (ᾑ; ᾑ; η◌̔◌ͅ; ᾑ; η◌̔◌ͅ; ) GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92;1F92;03B7 0313 0300 0345;1F92;03B7 0313 0300 0345; # (ᾒ; ᾒ; η◌̓◌̀◌ͅ; ᾒ; η◌̓◌̀◌ͅ; ) GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93;1F93;03B7 0314 0300 0345;1F93;03B7 0314 0300 0345; # (ᾓ; ᾓ; η◌̔◌̀◌ͅ; ᾓ; η◌̔◌̀◌ͅ; ) GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94;1F94;03B7 0313 0301 0345;1F94;03B7 0313 0301 0345; # (á¾”; á¾”; η◌̓◌Ì◌ͅ; á¾”; η◌̓◌Ì◌ͅ; ) GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95;1F95;03B7 0314 0301 0345;1F95;03B7 0314 0301 0345; # (ᾕ; ᾕ; η◌̔◌Ì◌ͅ; ᾕ; η◌̔◌Ì◌ͅ; ) GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96;1F96;03B7 0313 0342 0345;1F96;03B7 0313 0342 0345; # (ᾖ; ᾖ; η◌̓◌͂◌ͅ; ᾖ; η◌̓◌͂◌ͅ; ) GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97;1F97;03B7 0314 0342 0345;1F97;03B7 0314 0342 0345; # (ᾗ; ᾗ; η◌̔◌͂◌ͅ; ᾗ; η◌̔◌͂◌ͅ; ) GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98;1F98;0397 0313 0345;1F98;0397 0313 0345; # (ᾘ; ᾘ; Η◌̓◌ͅ; ᾘ; Η◌̓◌ͅ; ) GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99;1F99;0397 0314 0345;1F99;0397 0314 0345; # (ᾙ; ᾙ; Η◌̔◌ͅ; ᾙ; Η◌̔◌ͅ; ) GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A;1F9A;0397 0313 0300 0345;1F9A;0397 0313 0300 0345; # (ᾚ; ᾚ; Η◌̓◌̀◌ͅ; ᾚ; Η◌̓◌̀◌ͅ; ) GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B;1F9B;0397 0314 0300 0345;1F9B;0397 0314 0300 0345; # (ᾛ; ᾛ; Η◌̔◌̀◌ͅ; ᾛ; Η◌̔◌̀◌ͅ; ) GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C;1F9C;0397 0313 0301 0345;1F9C;0397 0313 0301 0345; # (ᾜ; ᾜ; Η◌̓◌Ì◌ͅ; ᾜ; Η◌̓◌Ì◌ͅ; ) GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D;1F9D;0397 0314 0301 0345;1F9D;0397 0314 0301 0345; # (á¾; á¾; Η◌̔◌Ì◌ͅ; á¾; Η◌̔◌Ì◌ͅ; ) GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E;1F9E;0397 0313 0342 0345;1F9E;0397 0313 0342 0345; # (ᾞ; ᾞ; Η◌̓◌͂◌ͅ; ᾞ; Η◌̓◌͂◌ͅ; ) GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F;1F9F;0397 0314 0342 0345;1F9F;0397 0314 0342 0345; # (ᾟ; ᾟ; Η◌̔◌͂◌ͅ; ᾟ; Η◌̔◌͂◌ͅ; ) GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0;1FA0;03C9 0313 0345;1FA0;03C9 0313 0345; # (ᾠ; ᾠ; ω◌̓◌ͅ; ᾠ; ω◌̓◌ͅ; ) GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1;1FA1;03C9 0314 0345;1FA1;03C9 0314 0345; # (ᾡ; ᾡ; ω◌̔◌ͅ; ᾡ; ω◌̔◌ͅ; ) GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2;1FA2;03C9 0313 0300 0345;1FA2;03C9 0313 0300 0345; # (ᾢ; ᾢ; ω◌̓◌̀◌ͅ; ᾢ; ω◌̓◌̀◌ͅ; ) GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3;1FA3;03C9 0314 0300 0345;1FA3;03C9 0314 0300 0345; # (ᾣ; ᾣ; ω◌̔◌̀◌ͅ; ᾣ; ω◌̔◌̀◌ͅ; ) GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4;1FA4;03C9 0313 0301 0345;1FA4;03C9 0313 0301 0345; # (ᾤ; ᾤ; ω◌̓◌Ì◌ͅ; ᾤ; ω◌̓◌Ì◌ͅ; ) GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5;1FA5;03C9 0314 0301 0345;1FA5;03C9 0314 0301 0345; # (á¾¥; á¾¥; ω◌̔◌Ì◌ͅ; á¾¥; ω◌̔◌Ì◌ͅ; ) GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6;1FA6;03C9 0313 0342 0345;1FA6;03C9 0313 0342 0345; # (ᾦ; ᾦ; ω◌̓◌͂◌ͅ; ᾦ; ω◌̓◌͂◌ͅ; ) GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7;1FA7;03C9 0314 0342 0345;1FA7;03C9 0314 0342 0345; # (ᾧ; ᾧ; ω◌̔◌͂◌ͅ; ᾧ; ω◌̔◌͂◌ͅ; ) GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8;1FA8;03A9 0313 0345;1FA8;03A9 0313 0345; # (ᾨ; ᾨ; Ω◌̓◌ͅ; ᾨ; Ω◌̓◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9;1FA9;03A9 0314 0345;1FA9;03A9 0314 0345; # (ᾩ; ᾩ; Ω◌̔◌ͅ; ᾩ; Ω◌̔◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA;1FAA;03A9 0313 0300 0345;1FAA;03A9 0313 0300 0345; # (ᾪ; ᾪ; Ω◌̓◌̀◌ͅ; ᾪ; Ω◌̓◌̀◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB;1FAB;03A9 0314 0300 0345;1FAB;03A9 0314 0300 0345; # (ᾫ; ᾫ; Ω◌̔◌̀◌ͅ; ᾫ; Ω◌̔◌̀◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC;1FAC;03A9 0313 0301 0345;1FAC;03A9 0313 0301 0345; # (ᾬ; ᾬ; Ω◌̓◌Ì◌ͅ; ᾬ; Ω◌̓◌Ì◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD;1FAD;03A9 0314 0301 0345;1FAD;03A9 0314 0301 0345; # (á¾­; á¾­; Ω◌̔◌Ì◌ͅ; á¾­; Ω◌̔◌Ì◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE;1FAE;03A9 0313 0342 0345;1FAE;03A9 0313 0342 0345; # (ᾮ; ᾮ; Ω◌̓◌͂◌ͅ; ᾮ; Ω◌̓◌͂◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF;1FAF;03A9 0314 0342 0345;1FAF;03A9 0314 0342 0345; # (ᾯ; ᾯ; Ω◌̔◌͂◌ͅ; ᾯ; Ω◌̔◌͂◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB0;1FB0;03B1 0306;1FB0;03B1 0306; # (ᾰ; ᾰ; α◌̆; ᾰ; α◌̆; ) GREEK SMALL LETTER ALPHA WITH VRACHY
+1FB1;1FB1;03B1 0304;1FB1;03B1 0304; # (ᾱ; ᾱ; α◌̄; ᾱ; α◌̄; ) GREEK SMALL LETTER ALPHA WITH MACRON
+1FB2;1FB2;03B1 0300 0345;1FB2;03B1 0300 0345; # (ᾲ; ᾲ; α◌̀◌ͅ; ᾲ; α◌̀◌ͅ; ) GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB3;1FB3;03B1 0345;1FB3;03B1 0345; # (ᾳ; ᾳ; α◌ͅ; ᾳ; α◌ͅ; ) GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FB4;1FB4;03B1 0301 0345;1FB4;03B1 0301 0345; # (á¾´; á¾´; α◌Ì◌ͅ; á¾´; α◌Ì◌ͅ; ) GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6;1FB6;03B1 0342;1FB6;03B1 0342; # (ᾶ; ᾶ; α◌͂; ᾶ; α◌͂; ) GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7;1FB7;03B1 0342 0345;1FB7;03B1 0342 0345; # (ᾷ; ᾷ; α◌͂◌ͅ; ᾷ; α◌͂◌ͅ; ) GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB8;1FB8;0391 0306;1FB8;0391 0306; # (Ᾰ; Ᾰ; Α◌̆; Ᾰ; Α◌̆; ) GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB9;1FB9;0391 0304;1FB9;0391 0304; # (Ᾱ; Ᾱ; Α◌̄; Ᾱ; Α◌̄; ) GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FBA;1FBA;0391 0300;1FBA;0391 0300; # (Ὰ; Ὰ; Α◌̀; Ὰ; Α◌̀; ) GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FBB;0386;0391 0301;0386;0391 0301; # (á¾»; Ά; Α◌Ì; Ά; Α◌Ì; ) GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBC;1FBC;0391 0345;1FBC;0391 0345; # (ᾼ; ᾼ; Α◌ͅ; ᾼ; Α◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD;1FBD;1FBD;0020 0313;0020 0313; # (᾽; ᾽; ᾽; ◌̓; ◌̓; ) GREEK KORONIS
+1FBE;03B9;03B9;03B9;03B9; # (ι; ι; ι; ι; ι; ) GREEK PROSGEGRAMMENI
+1FBF;1FBF;1FBF;0020 0313;0020 0313; # (᾿; ᾿; ᾿; ◌̓; ◌̓; ) GREEK PSILI
+1FC0;1FC0;1FC0;0020 0342;0020 0342; # (῀; ῀; ῀; ◌͂; ◌͂; ) GREEK PERISPOMENI
+1FC1;1FC1;00A8 0342;0020 0308 0342;0020 0308 0342; # (á¿; á¿; ¨◌͂; ◌̈◌͂; ◌̈◌͂; ) GREEK DIALYTIKA AND PERISPOMENI
+1FC2;1FC2;03B7 0300 0345;1FC2;03B7 0300 0345; # (ῂ; ῂ; η◌̀◌ͅ; ῂ; η◌̀◌ͅ; ) GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC3;1FC3;03B7 0345;1FC3;03B7 0345; # (ῃ; ῃ; η◌ͅ; ῃ; η◌ͅ; ) GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FC4;1FC4;03B7 0301 0345;1FC4;03B7 0301 0345; # (á¿„; á¿„; η◌Ì◌ͅ; á¿„; η◌Ì◌ͅ; ) GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6;1FC6;03B7 0342;1FC6;03B7 0342; # (ῆ; ῆ; η◌͂; ῆ; η◌͂; ) GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7;1FC7;03B7 0342 0345;1FC7;03B7 0342 0345; # (ῇ; ῇ; η◌͂◌ͅ; ῇ; η◌͂◌ͅ; ) GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC8;1FC8;0395 0300;1FC8;0395 0300; # (Ὲ; Ὲ; Ε◌̀; Ὲ; Ε◌̀; ) GREEK CAPITAL LETTER EPSILON WITH VARIA
+1FC9;0388;0395 0301;0388;0395 0301; # (Έ; Έ; Ε◌Ì; Έ; Ε◌Ì; ) GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCA;1FCA;0397 0300;1FCA;0397 0300; # (Ὴ; Ὴ; Η◌̀; Ὴ; Η◌̀; ) GREEK CAPITAL LETTER ETA WITH VARIA
+1FCB;0389;0397 0301;0389;0397 0301; # (á¿‹; Ή; Η◌Ì; Ή; Η◌Ì; ) GREEK CAPITAL LETTER ETA WITH OXIA
+1FCC;1FCC;0397 0345;1FCC;0397 0345; # (ῌ; ῌ; Η◌ͅ; ῌ; Η◌ͅ; ) GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD;1FCD;1FBF 0300;0020 0313 0300;0020 0313 0300; # (á¿; á¿; ᾿◌̀; ◌̓◌̀; ◌̓◌̀; ) GREEK PSILI AND VARIA
+1FCE;1FCE;1FBF 0301;0020 0313 0301;0020 0313 0301; # (á¿Ž; á¿Ž; ᾿◌Ì; ◌̓◌Ì; ◌̓◌Ì; ) GREEK PSILI AND OXIA
+1FCF;1FCF;1FBF 0342;0020 0313 0342;0020 0313 0342; # (á¿; á¿; ᾿◌͂; ◌̓◌͂; ◌̓◌͂; ) GREEK PSILI AND PERISPOMENI
+1FD0;1FD0;03B9 0306;1FD0;03B9 0306; # (á¿; á¿; ι◌̆; á¿; ι◌̆; ) GREEK SMALL LETTER IOTA WITH VRACHY
+1FD1;1FD1;03B9 0304;1FD1;03B9 0304; # (ῑ; ῑ; ι◌̄; ῑ; ι◌̄; ) GREEK SMALL LETTER IOTA WITH MACRON
+1FD2;1FD2;03B9 0308 0300;1FD2;03B9 0308 0300; # (ῒ; ῒ; ι◌̈◌̀; ῒ; ι◌̈◌̀; ) GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3;0390;03B9 0308 0301;0390;03B9 0308 0301; # (á¿“; Î; ι◌̈◌Ì; Î; ι◌̈◌Ì; ) GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6;1FD6;03B9 0342;1FD6;03B9 0342; # (ῖ; ῖ; ι◌͂; ῖ; ι◌͂; ) GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7;1FD7;03B9 0308 0342;1FD7;03B9 0308 0342; # (ῗ; ῗ; ι◌̈◌͂; ῗ; ι◌̈◌͂; ) GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD8;1FD8;0399 0306;1FD8;0399 0306; # (Ῐ; Ῐ; Ι◌̆; Ῐ; Ι◌̆; ) GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD9;1FD9;0399 0304;1FD9;0399 0304; # (Ῑ; Ῑ; Ι◌̄; Ῑ; Ι◌̄; ) GREEK CAPITAL LETTER IOTA WITH MACRON
+1FDA;1FDA;0399 0300;1FDA;0399 0300; # (Ὶ; Ὶ; Ι◌̀; Ὶ; Ι◌̀; ) GREEK CAPITAL LETTER IOTA WITH VARIA
+1FDB;038A;0399 0301;038A;0399 0301; # (á¿›; Ί; Ι◌Ì; Ί; Ι◌Ì; ) GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD;1FDD;1FFE 0300;0020 0314 0300;0020 0314 0300; # (á¿; á¿; ῾◌̀; ◌̔◌̀; ◌̔◌̀; ) GREEK DASIA AND VARIA
+1FDE;1FDE;1FFE 0301;0020 0314 0301;0020 0314 0301; # (á¿ž; á¿ž; ῾◌Ì; ◌̔◌Ì; ◌̔◌Ì; ) GREEK DASIA AND OXIA
+1FDF;1FDF;1FFE 0342;0020 0314 0342;0020 0314 0342; # (῟; ῟; ῾◌͂; ◌̔◌͂; ◌̔◌͂; ) GREEK DASIA AND PERISPOMENI
+1FE0;1FE0;03C5 0306;1FE0;03C5 0306; # (ῠ; ῠ; υ◌̆; ῠ; υ◌̆; ) GREEK SMALL LETTER UPSILON WITH VRACHY
+1FE1;1FE1;03C5 0304;1FE1;03C5 0304; # (ῡ; ῡ; υ◌̄; ῡ; υ◌̄; ) GREEK SMALL LETTER UPSILON WITH MACRON
+1FE2;1FE2;03C5 0308 0300;1FE2;03C5 0308 0300; # (ῢ; ῢ; υ◌̈◌̀; ῢ; υ◌̈◌̀; ) GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3;03B0;03C5 0308 0301;03B0;03C5 0308 0301; # (á¿£; ΰ; υ◌̈◌Ì; ΰ; υ◌̈◌Ì; ) GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4;1FE4;03C1 0313;1FE4;03C1 0313; # (ῤ; ῤ; Ï◌̓; ῤ; Ï◌̓; ) GREEK SMALL LETTER RHO WITH PSILI
+1FE5;1FE5;03C1 0314;1FE5;03C1 0314; # (á¿¥; á¿¥; Ï◌̔; á¿¥; Ï◌̔; ) GREEK SMALL LETTER RHO WITH DASIA
+1FE6;1FE6;03C5 0342;1FE6;03C5 0342; # (ῦ; ῦ; υ◌͂; ῦ; υ◌͂; ) GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7;1FE7;03C5 0308 0342;1FE7;03C5 0308 0342; # (ῧ; ῧ; υ◌̈◌͂; ῧ; υ◌̈◌͂; ) GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE8;1FE8;03A5 0306;1FE8;03A5 0306; # (Ῠ; Ῠ; Υ◌̆; Ῠ; Υ◌̆; ) GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE9;1FE9;03A5 0304;1FE9;03A5 0304; # (Ῡ; Ῡ; Υ◌̄; Ῡ; Υ◌̄; ) GREEK CAPITAL LETTER UPSILON WITH MACRON
+1FEA;1FEA;03A5 0300;1FEA;03A5 0300; # (Ὺ; Ὺ; Υ◌̀; Ὺ; Υ◌̀; ) GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FEB;038E;03A5 0301;038E;03A5 0301; # (á¿«; ÎŽ; Υ◌Ì; ÎŽ; Υ◌Ì; ) GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEC;1FEC;03A1 0314;1FEC;03A1 0314; # (Ῥ; Ῥ; Ρ◌̔; Ῥ; Ρ◌̔; ) GREEK CAPITAL LETTER RHO WITH DASIA
+1FED;1FED;00A8 0300;0020 0308 0300;0020 0308 0300; # (῭; ῭; ¨◌̀; ◌̈◌̀; ◌̈◌̀; ) GREEK DIALYTIKA AND VARIA
+1FEE;0385;00A8 0301;0020 0308 0301;0020 0308 0301; # (á¿®; Î…; ¨◌Ì; ◌̈◌Ì; ◌̈◌Ì; ) GREEK DIALYTIKA AND OXIA
+1FEF;0060;0060;0060;0060; # (`; `; `; `; `; ) GREEK VARIA
+1FF2;1FF2;03C9 0300 0345;1FF2;03C9 0300 0345; # (ῲ; ῲ; ω◌̀◌ͅ; ῲ; ω◌̀◌ͅ; ) GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF3;1FF3;03C9 0345;1FF3;03C9 0345; # (ῳ; ῳ; ω◌ͅ; ῳ; ω◌ͅ; ) GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FF4;1FF4;03C9 0301 0345;1FF4;03C9 0301 0345; # (á¿´; á¿´; ω◌Ì◌ͅ; á¿´; ω◌Ì◌ͅ; ) GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6;1FF6;03C9 0342;1FF6;03C9 0342; # (ῶ; ῶ; ω◌͂; ῶ; ω◌͂; ) GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7;1FF7;03C9 0342 0345;1FF7;03C9 0342 0345; # (ῷ; ῷ; ω◌͂◌ͅ; ῷ; ω◌͂◌ͅ; ) GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF8;1FF8;039F 0300;1FF8;039F 0300; # (Ὸ; Ὸ; Ο◌̀; Ὸ; Ο◌̀; ) GREEK CAPITAL LETTER OMICRON WITH VARIA
+1FF9;038C;039F 0301;038C;039F 0301; # (Ό; ÎŒ; Ο◌Ì; ÎŒ; Ο◌Ì; ) GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFA;1FFA;03A9 0300;1FFA;03A9 0300; # (Ὼ; Ὼ; Ω◌̀; Ὼ; Ω◌̀; ) GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FFB;038F;03A9 0301;038F;03A9 0301; # (á¿»; Î; Ω◌Ì; Î; Ω◌Ì; ) GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFC;1FFC;03A9 0345;1FFC;03A9 0345; # (ῼ; ῼ; Ω◌ͅ; ῼ; Ω◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD;00B4;00B4;0020 0301;0020 0301; # (´; ´; ´; â—ŒÌ; â—ŒÌ; ) GREEK OXIA
+1FFE;1FFE;1FFE;0020 0314;0020 0314; # (῾; ῾; ῾; ◌̔; ◌̔; ) GREEK DASIA
+2000;2002;2002;0020;0020; # ( ;  ;  ; ; ; ) EN QUAD
+2001;2003;2003;0020;0020; # (â€;  ;  ; ; ; ) EM QUAD
+2002;2002;2002;0020;0020; # ( ;  ;  ; ; ; ) EN SPACE
+2003;2003;2003;0020;0020; # ( ;  ;  ; ; ; ) EM SPACE
+2004;2004;2004;0020;0020; # ( ;  ;  ; ; ; ) THREE-PER-EM SPACE
+2005;2005;2005;0020;0020; # ( ;  ;  ; ; ; ) FOUR-PER-EM SPACE
+2006;2006;2006;0020;0020; # ( ;  ;  ; ; ; ) SIX-PER-EM SPACE
+2007;2007;2007;0020;0020; # ( ;  ;  ; ; ; ) FIGURE SPACE
+2008;2008;2008;0020;0020; # ( ;  ;  ; ; ; ) PUNCTUATION SPACE
+2009;2009;2009;0020;0020; # ( ;  ;  ; ; ; ) THIN SPACE
+200A;200A;200A;0020;0020; # ( ;  ;  ; ; ; ) HAIR SPACE
+2011;2011;2011;2010;2010; # (‑; ‑; ‑; â€; â€; ) NON-BREAKING HYPHEN
+2017;2017;2017;0020 0333;0020 0333; # (‗; ‗; ‗; ◌̳; ◌̳; ) DOUBLE LOW LINE
+2024;2024;2024;002E;002E; # (․; ․; ․; .; .; ) ONE DOT LEADER
+2025;2025;2025;002E 002E;002E 002E; # (‥; ‥; ‥; ..; ..; ) TWO DOT LEADER
+2026;2026;2026;002E 002E 002E;002E 002E 002E; # (…; …; …; ...; ...; ) HORIZONTAL ELLIPSIS
+202F;202F;202F;0020;0020; # ( ;  ;  ; ; ; ) NARROW NO-BREAK SPACE
+2033;2033;2033;2032 2032;2032 2032; # (″; ″; ″; ′′; ′′; ) DOUBLE PRIME
+2034;2034;2034;2032 2032 2032;2032 2032 2032; # (‴; ‴; ‴; ′′′; ′′′; ) TRIPLE PRIME
+2036;2036;2036;2035 2035;2035 2035; # (‶; ‶; ‶; ‵‵; ‵‵; ) REVERSED DOUBLE PRIME
+2037;2037;2037;2035 2035 2035;2035 2035 2035; # (‷; ‷; ‷; ‵‵‵; ‵‵‵; ) REVERSED TRIPLE PRIME
+203C;203C;203C;0021 0021;0021 0021; # (‼; ‼; ‼; !!; !!; ) DOUBLE EXCLAMATION MARK
+203E;203E;203E;0020 0305;0020 0305; # (‾; ‾; ‾; ◌̅; ◌̅; ) OVERLINE
+2047;2047;2047;003F 003F;003F 003F; # (â‡; â‡; â‡; ??; ??; ) DOUBLE QUESTION MARK
+2048;2048;2048;003F 0021;003F 0021; # (âˆ; âˆ; âˆ; ?!; ?!; ) QUESTION EXCLAMATION MARK
+2049;2049;2049;0021 003F;0021 003F; # (â‰; â‰; â‰; !?; !?; ) EXCLAMATION QUESTION MARK
+2057;2057;2057;2032 2032 2032 2032;2032 2032 2032 2032; # (â—; â—; â—; ′′′′; ′′′′; ) QUADRUPLE PRIME
+205F;205F;205F;0020;0020; # (âŸ; âŸ; âŸ; ; ; ) MEDIUM MATHEMATICAL SPACE
+2070;2070;2070;0030;0030; # (â°; â°; â°; 0; 0; ) SUPERSCRIPT ZERO
+2071;2071;2071;0069;0069; # (â±; â±; â±; i; i; ) SUPERSCRIPT LATIN SMALL LETTER I
+2074;2074;2074;0034;0034; # (â´; â´; â´; 4; 4; ) SUPERSCRIPT FOUR
+2075;2075;2075;0035;0035; # (âµ; âµ; âµ; 5; 5; ) SUPERSCRIPT FIVE
+2076;2076;2076;0036;0036; # (â¶; â¶; â¶; 6; 6; ) SUPERSCRIPT SIX
+2077;2077;2077;0037;0037; # (â·; â·; â·; 7; 7; ) SUPERSCRIPT SEVEN
+2078;2078;2078;0038;0038; # (â¸; â¸; â¸; 8; 8; ) SUPERSCRIPT EIGHT
+2079;2079;2079;0039;0039; # (â¹; â¹; â¹; 9; 9; ) SUPERSCRIPT NINE
+207A;207A;207A;002B;002B; # (âº; âº; âº; +; +; ) SUPERSCRIPT PLUS SIGN
+207B;207B;207B;2212;2212; # (â»; â»; â»; −; −; ) SUPERSCRIPT MINUS
+207C;207C;207C;003D;003D; # (â¼; â¼; â¼; =; =; ) SUPERSCRIPT EQUALS SIGN
+207D;207D;207D;0028;0028; # (â½; â½; â½; (; (; ) SUPERSCRIPT LEFT PARENTHESIS
+207E;207E;207E;0029;0029; # (â¾; â¾; â¾; ); ); ) SUPERSCRIPT RIGHT PARENTHESIS
+207F;207F;207F;006E;006E; # (â¿; â¿; â¿; n; n; ) SUPERSCRIPT LATIN SMALL LETTER N
+2080;2080;2080;0030;0030; # (â‚€; â‚€; â‚€; 0; 0; ) SUBSCRIPT ZERO
+2081;2081;2081;0031;0031; # (â‚; â‚; â‚; 1; 1; ) SUBSCRIPT ONE
+2082;2082;2082;0032;0032; # (â‚‚; â‚‚; â‚‚; 2; 2; ) SUBSCRIPT TWO
+2083;2083;2083;0033;0033; # (₃; ₃; ₃; 3; 3; ) SUBSCRIPT THREE
+2084;2084;2084;0034;0034; # (â‚„; â‚„; â‚„; 4; 4; ) SUBSCRIPT FOUR
+2085;2085;2085;0035;0035; # (â‚…; â‚…; â‚…; 5; 5; ) SUBSCRIPT FIVE
+2086;2086;2086;0036;0036; # (₆; ₆; ₆; 6; 6; ) SUBSCRIPT SIX
+2087;2087;2087;0037;0037; # (₇; ₇; ₇; 7; 7; ) SUBSCRIPT SEVEN
+2088;2088;2088;0038;0038; # (₈; ₈; ₈; 8; 8; ) SUBSCRIPT EIGHT
+2089;2089;2089;0039;0039; # (₉; ₉; ₉; 9; 9; ) SUBSCRIPT NINE
+208A;208A;208A;002B;002B; # (â‚Š; â‚Š; â‚Š; +; +; ) SUBSCRIPT PLUS SIGN
+208B;208B;208B;2212;2212; # (₋; ₋; ₋; −; −; ) SUBSCRIPT MINUS
+208C;208C;208C;003D;003D; # (₌; ₌; ₌; =; =; ) SUBSCRIPT EQUALS SIGN
+208D;208D;208D;0028;0028; # (â‚; â‚; â‚; (; (; ) SUBSCRIPT LEFT PARENTHESIS
+208E;208E;208E;0029;0029; # (â‚Ž; â‚Ž; â‚Ž; ); ); ) SUBSCRIPT RIGHT PARENTHESIS
+2090;2090;2090;0061;0061; # (â‚; â‚; â‚; a; a; ) LATIN SUBSCRIPT SMALL LETTER A
+2091;2091;2091;0065;0065; # (â‚‘; â‚‘; â‚‘; e; e; ) LATIN SUBSCRIPT SMALL LETTER E
+2092;2092;2092;006F;006F; # (â‚’; â‚’; â‚’; o; o; ) LATIN SUBSCRIPT SMALL LETTER O
+2093;2093;2093;0078;0078; # (â‚“; â‚“; â‚“; x; x; ) LATIN SUBSCRIPT SMALL LETTER X
+2094;2094;2094;0259;0259; # (â‚”; â‚”; â‚”; É™; É™; ) LATIN SUBSCRIPT SMALL LETTER SCHWA
+2095;2095;2095;0068;0068; # (â‚•; â‚•; â‚•; h; h; ) LATIN SUBSCRIPT SMALL LETTER H
+2096;2096;2096;006B;006B; # (â‚–; â‚–; â‚–; k; k; ) LATIN SUBSCRIPT SMALL LETTER K
+2097;2097;2097;006C;006C; # (â‚—; â‚—; â‚—; l; l; ) LATIN SUBSCRIPT SMALL LETTER L
+2098;2098;2098;006D;006D; # (ₘ; ₘ; ₘ; m; m; ) LATIN SUBSCRIPT SMALL LETTER M
+2099;2099;2099;006E;006E; # (â‚™; â‚™; â‚™; n; n; ) LATIN SUBSCRIPT SMALL LETTER N
+209A;209A;209A;0070;0070; # (â‚š; â‚š; â‚š; p; p; ) LATIN SUBSCRIPT SMALL LETTER P
+209B;209B;209B;0073;0073; # (â‚›; â‚›; â‚›; s; s; ) LATIN SUBSCRIPT SMALL LETTER S
+209C;209C;209C;0074;0074; # (ₜ; ₜ; ₜ; t; t; ) LATIN SUBSCRIPT SMALL LETTER T
+20A8;20A8;20A8;0052 0073;0052 0073; # (₨; ₨; ₨; Rs; Rs; ) RUPEE SIGN
+2100;2100;2100;0061 002F 0063;0061 002F 0063; # (â„€; â„€; â„€; a/c; a/c; ) ACCOUNT OF
+2101;2101;2101;0061 002F 0073;0061 002F 0073; # (â„; â„; â„; a/s; a/s; ) ADDRESSED TO THE SUBJECT
+2102;2102;2102;0043;0043; # (â„‚; â„‚; â„‚; C; C; ) DOUBLE-STRUCK CAPITAL C
+2103;2103;2103;00B0 0043;00B0 0043; # (℃; ℃; ℃; °C; °C; ) DEGREE CELSIUS
+2105;2105;2105;0063 002F 006F;0063 002F 006F; # (â„…; â„…; â„…; c/o; c/o; ) CARE OF
+2106;2106;2106;0063 002F 0075;0063 002F 0075; # (℆; ℆; ℆; c/u; c/u; ) CADA UNA
+2107;2107;2107;0190;0190; # (ℇ; ℇ; ℇ; Æ; Æ; ) EULER CONSTANT
+2109;2109;2109;00B0 0046;00B0 0046; # (℉; ℉; ℉; °F; °F; ) DEGREE FAHRENHEIT
+210A;210A;210A;0067;0067; # (â„Š; â„Š; â„Š; g; g; ) SCRIPT SMALL G
+210B;210B;210B;0048;0048; # (â„‹; â„‹; â„‹; H; H; ) SCRIPT CAPITAL H
+210C;210C;210C;0048;0048; # (ℌ; ℌ; ℌ; H; H; ) BLACK-LETTER CAPITAL H
+210D;210D;210D;0048;0048; # (â„; â„; â„; H; H; ) DOUBLE-STRUCK CAPITAL H
+210E;210E;210E;0068;0068; # (â„Ž; â„Ž; â„Ž; h; h; ) PLANCK CONSTANT
+210F;210F;210F;0127;0127; # (â„; â„; â„; ħ; ħ; ) PLANCK CONSTANT OVER TWO PI
+2110;2110;2110;0049;0049; # (â„; â„; â„; I; I; ) SCRIPT CAPITAL I
+2111;2111;2111;0049;0049; # (â„‘; â„‘; â„‘; I; I; ) BLACK-LETTER CAPITAL I
+2112;2112;2112;004C;004C; # (â„’; â„’; â„’; L; L; ) SCRIPT CAPITAL L
+2113;2113;2113;006C;006C; # (â„“; â„“; â„“; l; l; ) SCRIPT SMALL L
+2115;2115;2115;004E;004E; # (â„•; â„•; â„•; N; N; ) DOUBLE-STRUCK CAPITAL N
+2116;2116;2116;004E 006F;004E 006F; # (â„–; â„–; â„–; No; No; ) NUMERO SIGN
+2119;2119;2119;0050;0050; # (â„™; â„™; â„™; P; P; ) DOUBLE-STRUCK CAPITAL P
+211A;211A;211A;0051;0051; # (â„š; â„š; â„š; Q; Q; ) DOUBLE-STRUCK CAPITAL Q
+211B;211B;211B;0052;0052; # (â„›; â„›; â„›; R; R; ) SCRIPT CAPITAL R
+211C;211C;211C;0052;0052; # (ℜ; ℜ; ℜ; R; R; ) BLACK-LETTER CAPITAL R
+211D;211D;211D;0052;0052; # (â„; â„; â„; R; R; ) DOUBLE-STRUCK CAPITAL R
+2120;2120;2120;0053 004D;0053 004D; # (â„ ; â„ ; â„ ; SM; SM; ) SERVICE MARK
+2121;2121;2121;0054 0045 004C;0054 0045 004C; # (â„¡; â„¡; â„¡; TEL; TEL; ) TELEPHONE SIGN
+2122;2122;2122;0054 004D;0054 004D; # (â„¢; â„¢; â„¢; TM; TM; ) TRADE MARK SIGN
+2124;2124;2124;005A;005A; # (ℤ; ℤ; ℤ; Z; Z; ) DOUBLE-STRUCK CAPITAL Z
+2126;03A9;03A9;03A9;03A9; # (Ω; Ω; Ω; Ω; Ω; ) OHM SIGN
+2128;2128;2128;005A;005A; # (ℨ; ℨ; ℨ; Z; Z; ) BLACK-LETTER CAPITAL Z
+212A;004B;004B;004B;004B; # (K; K; K; K; K; ) KELVIN SIGN
+212B;00C5;0041 030A;00C5;0041 030A; # (Å; Å; A◌̊; Å; A◌̊; ) ANGSTROM SIGN
+212C;212C;212C;0042;0042; # (ℬ; ℬ; ℬ; B; B; ) SCRIPT CAPITAL B
+212D;212D;212D;0043;0043; # (â„­; â„­; â„­; C; C; ) BLACK-LETTER CAPITAL C
+212F;212F;212F;0065;0065; # (ℯ; ℯ; ℯ; e; e; ) SCRIPT SMALL E
+2130;2130;2130;0045;0045; # (â„°; â„°; â„°; E; E; ) SCRIPT CAPITAL E
+2131;2131;2131;0046;0046; # (ℱ; ℱ; ℱ; F; F; ) SCRIPT CAPITAL F
+2133;2133;2133;004D;004D; # (ℳ; ℳ; ℳ; M; M; ) SCRIPT CAPITAL M
+2134;2134;2134;006F;006F; # (â„´; â„´; â„´; o; o; ) SCRIPT SMALL O
+2135;2135;2135;05D0;05D0; # (ℵ; ℵ; ℵ; ×; ×; ) ALEF SYMBOL
+2136;2136;2136;05D1;05D1; # (ℶ; ℶ; ℶ; ב; ב; ) BET SYMBOL
+2137;2137;2137;05D2;05D2; # (â„·; â„·; â„·; ×’; ×’; ) GIMEL SYMBOL
+2138;2138;2138;05D3;05D3; # (ℸ; ℸ; ℸ; ד; ד; ) DALET SYMBOL
+2139;2139;2139;0069;0069; # (ℹ; ℹ; ℹ; i; i; ) INFORMATION SOURCE
+213B;213B;213B;0046 0041 0058;0046 0041 0058; # (â„»; â„»; â„»; FAX; FAX; ) FACSIMILE SIGN
+213C;213C;213C;03C0;03C0; # (ℼ; ℼ; ℼ; π; π; ) DOUBLE-STRUCK SMALL PI
+213D;213D;213D;03B3;03B3; # (ℽ; ℽ; ℽ; γ; γ; ) DOUBLE-STRUCK SMALL GAMMA
+213E;213E;213E;0393;0393; # (ℾ; ℾ; ℾ; Γ; Γ; ) DOUBLE-STRUCK CAPITAL GAMMA
+213F;213F;213F;03A0;03A0; # (ℿ; ℿ; ℿ; Π; Π; ) DOUBLE-STRUCK CAPITAL PI
+2140;2140;2140;2211;2211; # (⅀; ⅀; ⅀; ∑; ∑; ) DOUBLE-STRUCK N-ARY SUMMATION
+2145;2145;2145;0044;0044; # (â……; â……; â……; D; D; ) DOUBLE-STRUCK ITALIC CAPITAL D
+2146;2146;2146;0064;0064; # (â…†; â…†; â…†; d; d; ) DOUBLE-STRUCK ITALIC SMALL D
+2147;2147;2147;0065;0065; # (â…‡; â…‡; â…‡; e; e; ) DOUBLE-STRUCK ITALIC SMALL E
+2148;2148;2148;0069;0069; # (â…ˆ; â…ˆ; â…ˆ; i; i; ) DOUBLE-STRUCK ITALIC SMALL I
+2149;2149;2149;006A;006A; # (â…‰; â…‰; â…‰; j; j; ) DOUBLE-STRUCK ITALIC SMALL J
+2150;2150;2150;0031 2044 0037;0031 2044 0037; # (â…; â…; â…; 1â„7; 1â„7; ) VULGAR FRACTION ONE SEVENTH
+2151;2151;2151;0031 2044 0039;0031 2044 0039; # (â…‘; â…‘; â…‘; 1â„9; 1â„9; ) VULGAR FRACTION ONE NINTH
+2152;2152;2152;0031 2044 0031 0030;0031 2044 0031 0030; # (â…’; â…’; â…’; 1â„10; 1â„10; ) VULGAR FRACTION ONE TENTH
+2153;2153;2153;0031 2044 0033;0031 2044 0033; # (â…“; â…“; â…“; 1â„3; 1â„3; ) VULGAR FRACTION ONE THIRD
+2154;2154;2154;0032 2044 0033;0032 2044 0033; # (â…”; â…”; â…”; 2â„3; 2â„3; ) VULGAR FRACTION TWO THIRDS
+2155;2155;2155;0031 2044 0035;0031 2044 0035; # (â…•; â…•; â…•; 1â„5; 1â„5; ) VULGAR FRACTION ONE FIFTH
+2156;2156;2156;0032 2044 0035;0032 2044 0035; # (â…–; â…–; â…–; 2â„5; 2â„5; ) VULGAR FRACTION TWO FIFTHS
+2157;2157;2157;0033 2044 0035;0033 2044 0035; # (â…—; â…—; â…—; 3â„5; 3â„5; ) VULGAR FRACTION THREE FIFTHS
+2158;2158;2158;0034 2044 0035;0034 2044 0035; # (â…˜; â…˜; â…˜; 4â„5; 4â„5; ) VULGAR FRACTION FOUR FIFTHS
+2159;2159;2159;0031 2044 0036;0031 2044 0036; # (â…™; â…™; â…™; 1â„6; 1â„6; ) VULGAR FRACTION ONE SIXTH
+215A;215A;215A;0035 2044 0036;0035 2044 0036; # (â…š; â…š; â…š; 5â„6; 5â„6; ) VULGAR FRACTION FIVE SIXTHS
+215B;215B;215B;0031 2044 0038;0031 2044 0038; # (â…›; â…›; â…›; 1â„8; 1â„8; ) VULGAR FRACTION ONE EIGHTH
+215C;215C;215C;0033 2044 0038;0033 2044 0038; # (â…œ; â…œ; â…œ; 3â„8; 3â„8; ) VULGAR FRACTION THREE EIGHTHS
+215D;215D;215D;0035 2044 0038;0035 2044 0038; # (â…; â…; â…; 5â„8; 5â„8; ) VULGAR FRACTION FIVE EIGHTHS
+215E;215E;215E;0037 2044 0038;0037 2044 0038; # (â…ž; â…ž; â…ž; 7â„8; 7â„8; ) VULGAR FRACTION SEVEN EIGHTHS
+215F;215F;215F;0031 2044;0031 2044; # (â…Ÿ; â…Ÿ; â…Ÿ; 1â„; 1â„; ) FRACTION NUMERATOR ONE
+2160;2160;2160;0049;0049; # (â… ; â… ; â… ; I; I; ) ROMAN NUMERAL ONE
+2161;2161;2161;0049 0049;0049 0049; # (â…¡; â…¡; â…¡; II; II; ) ROMAN NUMERAL TWO
+2162;2162;2162;0049 0049 0049;0049 0049 0049; # (â…¢; â…¢; â…¢; III; III; ) ROMAN NUMERAL THREE
+2163;2163;2163;0049 0056;0049 0056; # (â…£; â…£; â…£; IV; IV; ) ROMAN NUMERAL FOUR
+2164;2164;2164;0056;0056; # (â…¤; â…¤; â…¤; V; V; ) ROMAN NUMERAL FIVE
+2165;2165;2165;0056 0049;0056 0049; # (â…¥; â…¥; â…¥; VI; VI; ) ROMAN NUMERAL SIX
+2166;2166;2166;0056 0049 0049;0056 0049 0049; # (â…¦; â…¦; â…¦; VII; VII; ) ROMAN NUMERAL SEVEN
+2167;2167;2167;0056 0049 0049 0049;0056 0049 0049 0049; # (â…§; â…§; â…§; VIII; VIII; ) ROMAN NUMERAL EIGHT
+2168;2168;2168;0049 0058;0049 0058; # (â…¨; â…¨; â…¨; IX; IX; ) ROMAN NUMERAL NINE
+2169;2169;2169;0058;0058; # (â…©; â…©; â…©; X; X; ) ROMAN NUMERAL TEN
+216A;216A;216A;0058 0049;0058 0049; # (â…ª; â…ª; â…ª; XI; XI; ) ROMAN NUMERAL ELEVEN
+216B;216B;216B;0058 0049 0049;0058 0049 0049; # (â…«; â…«; â…«; XII; XII; ) ROMAN NUMERAL TWELVE
+216C;216C;216C;004C;004C; # (â…¬; â…¬; â…¬; L; L; ) ROMAN NUMERAL FIFTY
+216D;216D;216D;0043;0043; # (â…­; â…­; â…­; C; C; ) ROMAN NUMERAL ONE HUNDRED
+216E;216E;216E;0044;0044; # (â…®; â…®; â…®; D; D; ) ROMAN NUMERAL FIVE HUNDRED
+216F;216F;216F;004D;004D; # (â…¯; â…¯; â…¯; M; M; ) ROMAN NUMERAL ONE THOUSAND
+2170;2170;2170;0069;0069; # (â…°; â…°; â…°; i; i; ) SMALL ROMAN NUMERAL ONE
+2171;2171;2171;0069 0069;0069 0069; # (â…±; â…±; â…±; ii; ii; ) SMALL ROMAN NUMERAL TWO
+2172;2172;2172;0069 0069 0069;0069 0069 0069; # (â…²; â…²; â…²; iii; iii; ) SMALL ROMAN NUMERAL THREE
+2173;2173;2173;0069 0076;0069 0076; # (â…³; â…³; â…³; iv; iv; ) SMALL ROMAN NUMERAL FOUR
+2174;2174;2174;0076;0076; # (â…´; â…´; â…´; v; v; ) SMALL ROMAN NUMERAL FIVE
+2175;2175;2175;0076 0069;0076 0069; # (â…µ; â…µ; â…µ; vi; vi; ) SMALL ROMAN NUMERAL SIX
+2176;2176;2176;0076 0069 0069;0076 0069 0069; # (â…¶; â…¶; â…¶; vii; vii; ) SMALL ROMAN NUMERAL SEVEN
+2177;2177;2177;0076 0069 0069 0069;0076 0069 0069 0069; # (â…·; â…·; â…·; viii; viii; ) SMALL ROMAN NUMERAL EIGHT
+2178;2178;2178;0069 0078;0069 0078; # (â…¸; â…¸; â…¸; ix; ix; ) SMALL ROMAN NUMERAL NINE
+2179;2179;2179;0078;0078; # (â…¹; â…¹; â…¹; x; x; ) SMALL ROMAN NUMERAL TEN
+217A;217A;217A;0078 0069;0078 0069; # (â…º; â…º; â…º; xi; xi; ) SMALL ROMAN NUMERAL ELEVEN
+217B;217B;217B;0078 0069 0069;0078 0069 0069; # (â…»; â…»; â…»; xii; xii; ) SMALL ROMAN NUMERAL TWELVE
+217C;217C;217C;006C;006C; # (â…¼; â…¼; â…¼; l; l; ) SMALL ROMAN NUMERAL FIFTY
+217D;217D;217D;0063;0063; # (â…½; â…½; â…½; c; c; ) SMALL ROMAN NUMERAL ONE HUNDRED
+217E;217E;217E;0064;0064; # (â…¾; â…¾; â…¾; d; d; ) SMALL ROMAN NUMERAL FIVE HUNDRED
+217F;217F;217F;006D;006D; # (â…¿; â…¿; â…¿; m; m; ) SMALL ROMAN NUMERAL ONE THOUSAND
+2189;2189;2189;0030 2044 0033;0030 2044 0033; # (↉; ↉; ↉; 0â„3; 0â„3; ) VULGAR FRACTION ZERO THIRDS
+219A;219A;2190 0338;219A;2190 0338; # (↚; ↚; â†â—ŒÌ¸; ↚; â†â—ŒÌ¸; ) LEFTWARDS ARROW WITH STROKE
+219B;219B;2192 0338;219B;2192 0338; # (↛; ↛; →◌̸; ↛; →◌̸; ) RIGHTWARDS ARROW WITH STROKE
+21AE;21AE;2194 0338;21AE;2194 0338; # (↮; ↮; ↔◌̸; ↮; ↔◌̸; ) LEFT RIGHT ARROW WITH STROKE
+21CD;21CD;21D0 0338;21CD;21D0 0338; # (â‡; â‡; â‡â—ŒÌ¸; â‡; â‡â—ŒÌ¸; ) LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE;21CE;21D4 0338;21CE;21D4 0338; # (⇎; ⇎; ⇔◌̸; ⇎; ⇔◌̸; ) LEFT RIGHT DOUBLE ARROW WITH STROKE
+21CF;21CF;21D2 0338;21CF;21D2 0338; # (â‡; â‡; ⇒◌̸; â‡; ⇒◌̸; ) RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204;2204;2203 0338;2204;2203 0338; # (∄; ∄; ∃◌̸; ∄; ∃◌̸; ) THERE DOES NOT EXIST
+2209;2209;2208 0338;2209;2208 0338; # (∉; ∉; ∈◌̸; ∉; ∈◌̸; ) NOT AN ELEMENT OF
+220C;220C;220B 0338;220C;220B 0338; # (∌; ∌; ∋◌̸; ∌; ∋◌̸; ) DOES NOT CONTAIN AS MEMBER
+2224;2224;2223 0338;2224;2223 0338; # (∤; ∤; ∣◌̸; ∤; ∣◌̸; ) DOES NOT DIVIDE
+2226;2226;2225 0338;2226;2225 0338; # (∦; ∦; ∥◌̸; ∦; ∥◌̸; ) NOT PARALLEL TO
+222C;222C;222C;222B 222B;222B 222B; # (∬; ∬; ∬; ∫∫; ∫∫; ) DOUBLE INTEGRAL
+222D;222D;222D;222B 222B 222B;222B 222B 222B; # (∭; ∭; ∭; ∫∫∫; ∫∫∫; ) TRIPLE INTEGRAL
+222F;222F;222F;222E 222E;222E 222E; # (∯; ∯; ∯; ∮∮; ∮∮; ) SURFACE INTEGRAL
+2230;2230;2230;222E 222E 222E;222E 222E 222E; # (∰; ∰; ∰; ∮∮∮; ∮∮∮; ) VOLUME INTEGRAL
+2241;2241;223C 0338;2241;223C 0338; # (â‰; â‰; ∼◌̸; â‰; ∼◌̸; ) NOT TILDE
+2244;2244;2243 0338;2244;2243 0338; # (≄; ≄; ≃◌̸; ≄; ≃◌̸; ) NOT ASYMPTOTICALLY EQUAL TO
+2247;2247;2245 0338;2247;2245 0338; # (≇; ≇; ≅◌̸; ≇; ≅◌̸; ) NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249;2249;2248 0338;2249;2248 0338; # (≉; ≉; ≈◌̸; ≉; ≈◌̸; ) NOT ALMOST EQUAL TO
+2260;2260;003D 0338;2260;003D 0338; # (≠; ≠; =◌̸; ≠; =◌̸; ) NOT EQUAL TO
+2262;2262;2261 0338;2262;2261 0338; # (≢; ≢; ≡◌̸; ≢; ≡◌̸; ) NOT IDENTICAL TO
+226D;226D;224D 0338;226D;224D 0338; # (≭; ≭; â‰â—ŒÌ¸; ≭; â‰â—ŒÌ¸; ) NOT EQUIVALENT TO
+226E;226E;003C 0338;226E;003C 0338; # (≮; ≮; <◌̸; ≮; <◌̸; ) NOT LESS-THAN
+226F;226F;003E 0338;226F;003E 0338; # (≯; ≯; >◌̸; ≯; >◌̸; ) NOT GREATER-THAN
+2270;2270;2264 0338;2270;2264 0338; # (≰; ≰; ≤◌̸; ≰; ≤◌̸; ) NEITHER LESS-THAN NOR EQUAL TO
+2271;2271;2265 0338;2271;2265 0338; # (≱; ≱; ≥◌̸; ≱; ≥◌̸; ) NEITHER GREATER-THAN NOR EQUAL TO
+2274;2274;2272 0338;2274;2272 0338; # (≴; ≴; ≲◌̸; ≴; ≲◌̸; ) NEITHER LESS-THAN NOR EQUIVALENT TO
+2275;2275;2273 0338;2275;2273 0338; # (≵; ≵; ≳◌̸; ≵; ≳◌̸; ) NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278;2278;2276 0338;2278;2276 0338; # (≸; ≸; ≶◌̸; ≸; ≶◌̸; ) NEITHER LESS-THAN NOR GREATER-THAN
+2279;2279;2277 0338;2279;2277 0338; # (≹; ≹; ≷◌̸; ≹; ≷◌̸; ) NEITHER GREATER-THAN NOR LESS-THAN
+2280;2280;227A 0338;2280;227A 0338; # (⊀; ⊀; ≺◌̸; ⊀; ≺◌̸; ) DOES NOT PRECEDE
+2281;2281;227B 0338;2281;227B 0338; # (âŠ; âŠ; ≻◌̸; âŠ; ≻◌̸; ) DOES NOT SUCCEED
+2284;2284;2282 0338;2284;2282 0338; # (⊄; ⊄; ⊂◌̸; ⊄; ⊂◌̸; ) NOT A SUBSET OF
+2285;2285;2283 0338;2285;2283 0338; # (⊅; ⊅; ⊃◌̸; ⊅; ⊃◌̸; ) NOT A SUPERSET OF
+2288;2288;2286 0338;2288;2286 0338; # (⊈; ⊈; ⊆◌̸; ⊈; ⊆◌̸; ) NEITHER A SUBSET OF NOR EQUAL TO
+2289;2289;2287 0338;2289;2287 0338; # (⊉; ⊉; ⊇◌̸; ⊉; ⊇◌̸; ) NEITHER A SUPERSET OF NOR EQUAL TO
+22AC;22AC;22A2 0338;22AC;22A2 0338; # (⊬; ⊬; ⊢◌̸; ⊬; ⊢◌̸; ) DOES NOT PROVE
+22AD;22AD;22A8 0338;22AD;22A8 0338; # (⊭; ⊭; ⊨◌̸; ⊭; ⊨◌̸; ) NOT TRUE
+22AE;22AE;22A9 0338;22AE;22A9 0338; # (⊮; ⊮; ⊩◌̸; ⊮; ⊩◌̸; ) DOES NOT FORCE
+22AF;22AF;22AB 0338;22AF;22AB 0338; # (⊯; ⊯; ⊫◌̸; ⊯; ⊫◌̸; ) NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0;22E0;227C 0338;22E0;227C 0338; # (⋠; ⋠; ≼◌̸; ⋠; ≼◌̸; ) DOES NOT PRECEDE OR EQUAL
+22E1;22E1;227D 0338;22E1;227D 0338; # (⋡; ⋡; ≽◌̸; ⋡; ≽◌̸; ) DOES NOT SUCCEED OR EQUAL
+22E2;22E2;2291 0338;22E2;2291 0338; # (⋢; ⋢; ⊑◌̸; ⋢; ⊑◌̸; ) NOT SQUARE IMAGE OF OR EQUAL TO
+22E3;22E3;2292 0338;22E3;2292 0338; # (⋣; ⋣; ⊒◌̸; ⋣; ⊒◌̸; ) NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA;22EA;22B2 0338;22EA;22B2 0338; # (⋪; ⋪; ⊲◌̸; ⋪; ⊲◌̸; ) NOT NORMAL SUBGROUP OF
+22EB;22EB;22B3 0338;22EB;22B3 0338; # (⋫; ⋫; ⊳◌̸; ⋫; ⊳◌̸; ) DOES NOT CONTAIN AS NORMAL SUBGROUP
+22EC;22EC;22B4 0338;22EC;22B4 0338; # (⋬; ⋬; ⊴◌̸; ⋬; ⊴◌̸; ) NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ED;22ED;22B5 0338;22ED;22B5 0338; # (⋭; ⋭; ⊵◌̸; ⋭; ⊵◌̸; ) DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2329;3008;3008;3008;3008; # (〈; 〈; 〈; 〈; 〈; ) LEFT-POINTING ANGLE BRACKET
+232A;3009;3009;3009;3009; # (〉; 〉; 〉; 〉; 〉; ) RIGHT-POINTING ANGLE BRACKET
+2460;2460;2460;0031;0031; # (â‘ ; â‘ ; â‘ ; 1; 1; ) CIRCLED DIGIT ONE
+2461;2461;2461;0032;0032; # (â‘¡; â‘¡; â‘¡; 2; 2; ) CIRCLED DIGIT TWO
+2462;2462;2462;0033;0033; # (â‘¢; â‘¢; â‘¢; 3; 3; ) CIRCLED DIGIT THREE
+2463;2463;2463;0034;0034; # (â‘£; â‘£; â‘£; 4; 4; ) CIRCLED DIGIT FOUR
+2464;2464;2464;0035;0035; # (⑤; ⑤; ⑤; 5; 5; ) CIRCLED DIGIT FIVE
+2465;2465;2465;0036;0036; # (â‘¥; â‘¥; â‘¥; 6; 6; ) CIRCLED DIGIT SIX
+2466;2466;2466;0037;0037; # (⑦; ⑦; ⑦; 7; 7; ) CIRCLED DIGIT SEVEN
+2467;2467;2467;0038;0038; # (⑧; ⑧; ⑧; 8; 8; ) CIRCLED DIGIT EIGHT
+2468;2468;2468;0039;0039; # (⑨; ⑨; ⑨; 9; 9; ) CIRCLED DIGIT NINE
+2469;2469;2469;0031 0030;0031 0030; # (â‘©; â‘©; â‘©; 10; 10; ) CIRCLED NUMBER TEN
+246A;246A;246A;0031 0031;0031 0031; # (⑪; ⑪; ⑪; 11; 11; ) CIRCLED NUMBER ELEVEN
+246B;246B;246B;0031 0032;0031 0032; # (â‘«; â‘«; â‘«; 12; 12; ) CIRCLED NUMBER TWELVE
+246C;246C;246C;0031 0033;0031 0033; # (⑬; ⑬; ⑬; 13; 13; ) CIRCLED NUMBER THIRTEEN
+246D;246D;246D;0031 0034;0031 0034; # (â‘­; â‘­; â‘­; 14; 14; ) CIRCLED NUMBER FOURTEEN
+246E;246E;246E;0031 0035;0031 0035; # (â‘®; â‘®; â‘®; 15; 15; ) CIRCLED NUMBER FIFTEEN
+246F;246F;246F;0031 0036;0031 0036; # (⑯; ⑯; ⑯; 16; 16; ) CIRCLED NUMBER SIXTEEN
+2470;2470;2470;0031 0037;0031 0037; # (â‘°; â‘°; â‘°; 17; 17; ) CIRCLED NUMBER SEVENTEEN
+2471;2471;2471;0031 0038;0031 0038; # (⑱; ⑱; ⑱; 18; 18; ) CIRCLED NUMBER EIGHTEEN
+2472;2472;2472;0031 0039;0031 0039; # (⑲; ⑲; ⑲; 19; 19; ) CIRCLED NUMBER NINETEEN
+2473;2473;2473;0032 0030;0032 0030; # (⑳; ⑳; ⑳; 20; 20; ) CIRCLED NUMBER TWENTY
+2474;2474;2474;0028 0031 0029;0028 0031 0029; # (â‘´; â‘´; â‘´; (1); (1); ) PARENTHESIZED DIGIT ONE
+2475;2475;2475;0028 0032 0029;0028 0032 0029; # (⑵; ⑵; ⑵; (2); (2); ) PARENTHESIZED DIGIT TWO
+2476;2476;2476;0028 0033 0029;0028 0033 0029; # (⑶; ⑶; ⑶; (3); (3); ) PARENTHESIZED DIGIT THREE
+2477;2477;2477;0028 0034 0029;0028 0034 0029; # (â‘·; â‘·; â‘·; (4); (4); ) PARENTHESIZED DIGIT FOUR
+2478;2478;2478;0028 0035 0029;0028 0035 0029; # (⑸; ⑸; ⑸; (5); (5); ) PARENTHESIZED DIGIT FIVE
+2479;2479;2479;0028 0036 0029;0028 0036 0029; # (⑹; ⑹; ⑹; (6); (6); ) PARENTHESIZED DIGIT SIX
+247A;247A;247A;0028 0037 0029;0028 0037 0029; # (⑺; ⑺; ⑺; (7); (7); ) PARENTHESIZED DIGIT SEVEN
+247B;247B;247B;0028 0038 0029;0028 0038 0029; # (â‘»; â‘»; â‘»; (8); (8); ) PARENTHESIZED DIGIT EIGHT
+247C;247C;247C;0028 0039 0029;0028 0039 0029; # (⑼; ⑼; ⑼; (9); (9); ) PARENTHESIZED DIGIT NINE
+247D;247D;247D;0028 0031 0030 0029;0028 0031 0030 0029; # (⑽; ⑽; ⑽; (10); (10); ) PARENTHESIZED NUMBER TEN
+247E;247E;247E;0028 0031 0031 0029;0028 0031 0031 0029; # (⑾; ⑾; ⑾; (11); (11); ) PARENTHESIZED NUMBER ELEVEN
+247F;247F;247F;0028 0031 0032 0029;0028 0031 0032 0029; # (â‘¿; â‘¿; â‘¿; (12); (12); ) PARENTHESIZED NUMBER TWELVE
+2480;2480;2480;0028 0031 0033 0029;0028 0031 0033 0029; # (â’€; â’€; â’€; (13); (13); ) PARENTHESIZED NUMBER THIRTEEN
+2481;2481;2481;0028 0031 0034 0029;0028 0031 0034 0029; # (â’; â’; â’; (14); (14); ) PARENTHESIZED NUMBER FOURTEEN
+2482;2482;2482;0028 0031 0035 0029;0028 0031 0035 0029; # (â’‚; â’‚; â’‚; (15); (15); ) PARENTHESIZED NUMBER FIFTEEN
+2483;2483;2483;0028 0031 0036 0029;0028 0031 0036 0029; # (â’ƒ; â’ƒ; â’ƒ; (16); (16); ) PARENTHESIZED NUMBER SIXTEEN
+2484;2484;2484;0028 0031 0037 0029;0028 0031 0037 0029; # (â’„; â’„; â’„; (17); (17); ) PARENTHESIZED NUMBER SEVENTEEN
+2485;2485;2485;0028 0031 0038 0029;0028 0031 0038 0029; # (â’…; â’…; â’…; (18); (18); ) PARENTHESIZED NUMBER EIGHTEEN
+2486;2486;2486;0028 0031 0039 0029;0028 0031 0039 0029; # (â’†; â’†; â’†; (19); (19); ) PARENTHESIZED NUMBER NINETEEN
+2487;2487;2487;0028 0032 0030 0029;0028 0032 0030 0029; # (â’‡; â’‡; â’‡; (20); (20); ) PARENTHESIZED NUMBER TWENTY
+2488;2488;2488;0031 002E;0031 002E; # (â’ˆ; â’ˆ; â’ˆ; 1.; 1.; ) DIGIT ONE FULL STOP
+2489;2489;2489;0032 002E;0032 002E; # (â’‰; â’‰; â’‰; 2.; 2.; ) DIGIT TWO FULL STOP
+248A;248A;248A;0033 002E;0033 002E; # (â’Š; â’Š; â’Š; 3.; 3.; ) DIGIT THREE FULL STOP
+248B;248B;248B;0034 002E;0034 002E; # (â’‹; â’‹; â’‹; 4.; 4.; ) DIGIT FOUR FULL STOP
+248C;248C;248C;0035 002E;0035 002E; # (⒌; ⒌; ⒌; 5.; 5.; ) DIGIT FIVE FULL STOP
+248D;248D;248D;0036 002E;0036 002E; # (â’; â’; â’; 6.; 6.; ) DIGIT SIX FULL STOP
+248E;248E;248E;0037 002E;0037 002E; # (â’Ž; â’Ž; â’Ž; 7.; 7.; ) DIGIT SEVEN FULL STOP
+248F;248F;248F;0038 002E;0038 002E; # (â’; â’; â’; 8.; 8.; ) DIGIT EIGHT FULL STOP
+2490;2490;2490;0039 002E;0039 002E; # (â’; â’; â’; 9.; 9.; ) DIGIT NINE FULL STOP
+2491;2491;2491;0031 0030 002E;0031 0030 002E; # (â’‘; â’‘; â’‘; 10.; 10.; ) NUMBER TEN FULL STOP
+2492;2492;2492;0031 0031 002E;0031 0031 002E; # (â’’; â’’; â’’; 11.; 11.; ) NUMBER ELEVEN FULL STOP
+2493;2493;2493;0031 0032 002E;0031 0032 002E; # (â’“; â’“; â’“; 12.; 12.; ) NUMBER TWELVE FULL STOP
+2494;2494;2494;0031 0033 002E;0031 0033 002E; # (â’”; â’”; â’”; 13.; 13.; ) NUMBER THIRTEEN FULL STOP
+2495;2495;2495;0031 0034 002E;0031 0034 002E; # (â’•; â’•; â’•; 14.; 14.; ) NUMBER FOURTEEN FULL STOP
+2496;2496;2496;0031 0035 002E;0031 0035 002E; # (â’–; â’–; â’–; 15.; 15.; ) NUMBER FIFTEEN FULL STOP
+2497;2497;2497;0031 0036 002E;0031 0036 002E; # (â’—; â’—; â’—; 16.; 16.; ) NUMBER SIXTEEN FULL STOP
+2498;2498;2498;0031 0037 002E;0031 0037 002E; # (â’˜; â’˜; â’˜; 17.; 17.; ) NUMBER SEVENTEEN FULL STOP
+2499;2499;2499;0031 0038 002E;0031 0038 002E; # (â’™; â’™; â’™; 18.; 18.; ) NUMBER EIGHTEEN FULL STOP
+249A;249A;249A;0031 0039 002E;0031 0039 002E; # (â’š; â’š; â’š; 19.; 19.; ) NUMBER NINETEEN FULL STOP
+249B;249B;249B;0032 0030 002E;0032 0030 002E; # (â’›; â’›; â’›; 20.; 20.; ) NUMBER TWENTY FULL STOP
+249C;249C;249C;0028 0061 0029;0028 0061 0029; # (⒜; ⒜; ⒜; (a); (a); ) PARENTHESIZED LATIN SMALL LETTER A
+249D;249D;249D;0028 0062 0029;0028 0062 0029; # (â’; â’; â’; (b); (b); ) PARENTHESIZED LATIN SMALL LETTER B
+249E;249E;249E;0028 0063 0029;0028 0063 0029; # (â’ž; â’ž; â’ž; (c); (c); ) PARENTHESIZED LATIN SMALL LETTER C
+249F;249F;249F;0028 0064 0029;0028 0064 0029; # (â’Ÿ; â’Ÿ; â’Ÿ; (d); (d); ) PARENTHESIZED LATIN SMALL LETTER D
+24A0;24A0;24A0;0028 0065 0029;0028 0065 0029; # (â’ ; â’ ; â’ ; (e); (e); ) PARENTHESIZED LATIN SMALL LETTER E
+24A1;24A1;24A1;0028 0066 0029;0028 0066 0029; # (â’¡; â’¡; â’¡; (f); (f); ) PARENTHESIZED LATIN SMALL LETTER F
+24A2;24A2;24A2;0028 0067 0029;0028 0067 0029; # (â’¢; â’¢; â’¢; (g); (g); ) PARENTHESIZED LATIN SMALL LETTER G
+24A3;24A3;24A3;0028 0068 0029;0028 0068 0029; # (â’£; â’£; â’£; (h); (h); ) PARENTHESIZED LATIN SMALL LETTER H
+24A4;24A4;24A4;0028 0069 0029;0028 0069 0029; # (â’¤; â’¤; â’¤; (i); (i); ) PARENTHESIZED LATIN SMALL LETTER I
+24A5;24A5;24A5;0028 006A 0029;0028 006A 0029; # (â’¥; â’¥; â’¥; (j); (j); ) PARENTHESIZED LATIN SMALL LETTER J
+24A6;24A6;24A6;0028 006B 0029;0028 006B 0029; # (â’¦; â’¦; â’¦; (k); (k); ) PARENTHESIZED LATIN SMALL LETTER K
+24A7;24A7;24A7;0028 006C 0029;0028 006C 0029; # (â’§; â’§; â’§; (l); (l); ) PARENTHESIZED LATIN SMALL LETTER L
+24A8;24A8;24A8;0028 006D 0029;0028 006D 0029; # (â’¨; â’¨; â’¨; (m); (m); ) PARENTHESIZED LATIN SMALL LETTER M
+24A9;24A9;24A9;0028 006E 0029;0028 006E 0029; # (â’©; â’©; â’©; (n); (n); ) PARENTHESIZED LATIN SMALL LETTER N
+24AA;24AA;24AA;0028 006F 0029;0028 006F 0029; # (â’ª; â’ª; â’ª; (o); (o); ) PARENTHESIZED LATIN SMALL LETTER O
+24AB;24AB;24AB;0028 0070 0029;0028 0070 0029; # (â’«; â’«; â’«; (p); (p); ) PARENTHESIZED LATIN SMALL LETTER P
+24AC;24AC;24AC;0028 0071 0029;0028 0071 0029; # (â’¬; â’¬; â’¬; (q); (q); ) PARENTHESIZED LATIN SMALL LETTER Q
+24AD;24AD;24AD;0028 0072 0029;0028 0072 0029; # (â’­; â’­; â’­; (r); (r); ) PARENTHESIZED LATIN SMALL LETTER R
+24AE;24AE;24AE;0028 0073 0029;0028 0073 0029; # (â’®; â’®; â’®; (s); (s); ) PARENTHESIZED LATIN SMALL LETTER S
+24AF;24AF;24AF;0028 0074 0029;0028 0074 0029; # (â’¯; â’¯; â’¯; (t); (t); ) PARENTHESIZED LATIN SMALL LETTER T
+24B0;24B0;24B0;0028 0075 0029;0028 0075 0029; # (â’°; â’°; â’°; (u); (u); ) PARENTHESIZED LATIN SMALL LETTER U
+24B1;24B1;24B1;0028 0076 0029;0028 0076 0029; # (â’±; â’±; â’±; (v); (v); ) PARENTHESIZED LATIN SMALL LETTER V
+24B2;24B2;24B2;0028 0077 0029;0028 0077 0029; # (â’²; â’²; â’²; (w); (w); ) PARENTHESIZED LATIN SMALL LETTER W
+24B3;24B3;24B3;0028 0078 0029;0028 0078 0029; # (â’³; â’³; â’³; (x); (x); ) PARENTHESIZED LATIN SMALL LETTER X
+24B4;24B4;24B4;0028 0079 0029;0028 0079 0029; # (â’´; â’´; â’´; (y); (y); ) PARENTHESIZED LATIN SMALL LETTER Y
+24B5;24B5;24B5;0028 007A 0029;0028 007A 0029; # (â’µ; â’µ; â’µ; (z); (z); ) PARENTHESIZED LATIN SMALL LETTER Z
+24B6;24B6;24B6;0041;0041; # (â’¶; â’¶; â’¶; A; A; ) CIRCLED LATIN CAPITAL LETTER A
+24B7;24B7;24B7;0042;0042; # (â’·; â’·; â’·; B; B; ) CIRCLED LATIN CAPITAL LETTER B
+24B8;24B8;24B8;0043;0043; # (â’¸; â’¸; â’¸; C; C; ) CIRCLED LATIN CAPITAL LETTER C
+24B9;24B9;24B9;0044;0044; # (â’¹; â’¹; â’¹; D; D; ) CIRCLED LATIN CAPITAL LETTER D
+24BA;24BA;24BA;0045;0045; # (â’º; â’º; â’º; E; E; ) CIRCLED LATIN CAPITAL LETTER E
+24BB;24BB;24BB;0046;0046; # (â’»; â’»; â’»; F; F; ) CIRCLED LATIN CAPITAL LETTER F
+24BC;24BC;24BC;0047;0047; # (â’¼; â’¼; â’¼; G; G; ) CIRCLED LATIN CAPITAL LETTER G
+24BD;24BD;24BD;0048;0048; # (â’½; â’½; â’½; H; H; ) CIRCLED LATIN CAPITAL LETTER H
+24BE;24BE;24BE;0049;0049; # (â’¾; â’¾; â’¾; I; I; ) CIRCLED LATIN CAPITAL LETTER I
+24BF;24BF;24BF;004A;004A; # (â’¿; â’¿; â’¿; J; J; ) CIRCLED LATIN CAPITAL LETTER J
+24C0;24C0;24C0;004B;004B; # (â“€; â“€; â“€; K; K; ) CIRCLED LATIN CAPITAL LETTER K
+24C1;24C1;24C1;004C;004C; # (â“; â“; â“; L; L; ) CIRCLED LATIN CAPITAL LETTER L
+24C2;24C2;24C2;004D;004D; # (â“‚; â“‚; â“‚; M; M; ) CIRCLED LATIN CAPITAL LETTER M
+24C3;24C3;24C3;004E;004E; # (Ⓝ; Ⓝ; Ⓝ; N; N; ) CIRCLED LATIN CAPITAL LETTER N
+24C4;24C4;24C4;004F;004F; # (â“„; â“„; â“„; O; O; ) CIRCLED LATIN CAPITAL LETTER O
+24C5;24C5;24C5;0050;0050; # (â“…; â“…; â“…; P; P; ) CIRCLED LATIN CAPITAL LETTER P
+24C6;24C6;24C6;0051;0051; # (Ⓠ; Ⓠ; Ⓠ; Q; Q; ) CIRCLED LATIN CAPITAL LETTER Q
+24C7;24C7;24C7;0052;0052; # (Ⓡ; Ⓡ; Ⓡ; R; R; ) CIRCLED LATIN CAPITAL LETTER R
+24C8;24C8;24C8;0053;0053; # (Ⓢ; Ⓢ; Ⓢ; S; S; ) CIRCLED LATIN CAPITAL LETTER S
+24C9;24C9;24C9;0054;0054; # (Ⓣ; Ⓣ; Ⓣ; T; T; ) CIRCLED LATIN CAPITAL LETTER T
+24CA;24CA;24CA;0055;0055; # (â“Š; â“Š; â“Š; U; U; ) CIRCLED LATIN CAPITAL LETTER U
+24CB;24CB;24CB;0056;0056; # (â“‹; â“‹; â“‹; V; V; ) CIRCLED LATIN CAPITAL LETTER V
+24CC;24CC;24CC;0057;0057; # (Ⓦ; Ⓦ; Ⓦ; W; W; ) CIRCLED LATIN CAPITAL LETTER W
+24CD;24CD;24CD;0058;0058; # (â“; â“; â“; X; X; ) CIRCLED LATIN CAPITAL LETTER X
+24CE;24CE;24CE;0059;0059; # (â“Ž; â“Ž; â“Ž; Y; Y; ) CIRCLED LATIN CAPITAL LETTER Y
+24CF;24CF;24CF;005A;005A; # (â“; â“; â“; Z; Z; ) CIRCLED LATIN CAPITAL LETTER Z
+24D0;24D0;24D0;0061;0061; # (â“; â“; â“; a; a; ) CIRCLED LATIN SMALL LETTER A
+24D1;24D1;24D1;0062;0062; # (â“‘; â“‘; â“‘; b; b; ) CIRCLED LATIN SMALL LETTER B
+24D2;24D2;24D2;0063;0063; # (â“’; â“’; â“’; c; c; ) CIRCLED LATIN SMALL LETTER C
+24D3;24D3;24D3;0064;0064; # (â““; â““; â““; d; d; ) CIRCLED LATIN SMALL LETTER D
+24D4;24D4;24D4;0065;0065; # (â“”; â“”; â“”; e; e; ) CIRCLED LATIN SMALL LETTER E
+24D5;24D5;24D5;0066;0066; # (â“•; â“•; â“•; f; f; ) CIRCLED LATIN SMALL LETTER F
+24D6;24D6;24D6;0067;0067; # (â“–; â“–; â“–; g; g; ) CIRCLED LATIN SMALL LETTER G
+24D7;24D7;24D7;0068;0068; # (â“—; â“—; â“—; h; h; ) CIRCLED LATIN SMALL LETTER H
+24D8;24D8;24D8;0069;0069; # (ⓘ; ⓘ; ⓘ; i; i; ) CIRCLED LATIN SMALL LETTER I
+24D9;24D9;24D9;006A;006A; # (â“™; â“™; â“™; j; j; ) CIRCLED LATIN SMALL LETTER J
+24DA;24DA;24DA;006B;006B; # (â“š; â“š; â“š; k; k; ) CIRCLED LATIN SMALL LETTER K
+24DB;24DB;24DB;006C;006C; # (â“›; â“›; â“›; l; l; ) CIRCLED LATIN SMALL LETTER L
+24DC;24DC;24DC;006D;006D; # (ⓜ; ⓜ; ⓜ; m; m; ) CIRCLED LATIN SMALL LETTER M
+24DD;24DD;24DD;006E;006E; # (â“; â“; â“; n; n; ) CIRCLED LATIN SMALL LETTER N
+24DE;24DE;24DE;006F;006F; # (â“ž; â“ž; â“ž; o; o; ) CIRCLED LATIN SMALL LETTER O
+24DF;24DF;24DF;0070;0070; # (â“Ÿ; â“Ÿ; â“Ÿ; p; p; ) CIRCLED LATIN SMALL LETTER P
+24E0;24E0;24E0;0071;0071; # (â“ ; â“ ; â“ ; q; q; ) CIRCLED LATIN SMALL LETTER Q
+24E1;24E1;24E1;0072;0072; # (â“¡; â“¡; â“¡; r; r; ) CIRCLED LATIN SMALL LETTER R
+24E2;24E2;24E2;0073;0073; # (â“¢; â“¢; â“¢; s; s; ) CIRCLED LATIN SMALL LETTER S
+24E3;24E3;24E3;0074;0074; # (â“£; â“£; â“£; t; t; ) CIRCLED LATIN SMALL LETTER T
+24E4;24E4;24E4;0075;0075; # (ⓤ; ⓤ; ⓤ; u; u; ) CIRCLED LATIN SMALL LETTER U
+24E5;24E5;24E5;0076;0076; # (â“¥; â“¥; â“¥; v; v; ) CIRCLED LATIN SMALL LETTER V
+24E6;24E6;24E6;0077;0077; # (ⓦ; ⓦ; ⓦ; w; w; ) CIRCLED LATIN SMALL LETTER W
+24E7;24E7;24E7;0078;0078; # (ⓧ; ⓧ; ⓧ; x; x; ) CIRCLED LATIN SMALL LETTER X
+24E8;24E8;24E8;0079;0079; # (ⓨ; ⓨ; ⓨ; y; y; ) CIRCLED LATIN SMALL LETTER Y
+24E9;24E9;24E9;007A;007A; # (â“©; â“©; â“©; z; z; ) CIRCLED LATIN SMALL LETTER Z
+24EA;24EA;24EA;0030;0030; # (⓪; ⓪; ⓪; 0; 0; ) CIRCLED DIGIT ZERO
+2A0C;2A0C;2A0C;222B 222B 222B 222B;222B 222B 222B 222B; # (⨌; ⨌; ⨌; ∫∫∫∫; ∫∫∫∫; ) QUADRUPLE INTEGRAL OPERATOR
+2A74;2A74;2A74;003A 003A 003D;003A 003A 003D; # (â©´; â©´; â©´; ::=; ::=; ) DOUBLE COLON EQUAL
+2A75;2A75;2A75;003D 003D;003D 003D; # (⩵; ⩵; ⩵; ==; ==; ) TWO CONSECUTIVE EQUALS SIGNS
+2A76;2A76;2A76;003D 003D 003D;003D 003D 003D; # (⩶; ⩶; ⩶; ===; ===; ) THREE CONSECUTIVE EQUALS SIGNS
+2ADC;2ADD 0338;2ADD 0338;2ADD 0338;2ADD 0338; # (â«œ; â«â—ŒÌ¸; â«â—ŒÌ¸; â«â—ŒÌ¸; â«â—ŒÌ¸; ) FORKING
+2C7C;2C7C;2C7C;006A;006A; # (â±¼; â±¼; â±¼; j; j; ) LATIN SUBSCRIPT SMALL LETTER J
+2C7D;2C7D;2C7D;0056;0056; # (â±½; â±½; â±½; V; V; ) MODIFIER LETTER CAPITAL V
+2D6F;2D6F;2D6F;2D61;2D61; # (ⵯ; ⵯ; ⵯ; ⵡ; ⵡ; ) TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2E9F;2E9F;2E9F;6BCD;6BCD; # (⺟; ⺟; ⺟; æ¯; æ¯; ) CJK RADICAL MOTHER
+2EF3;2EF3;2EF3;9F9F;9F9F; # (⻳; ⻳; ⻳; 龟; 龟; ) CJK RADICAL C-SIMPLIFIED TURTLE
+2F00;2F00;2F00;4E00;4E00; # (⼀; ⼀; ⼀; 一; 一; ) KANGXI RADICAL ONE
+2F01;2F01;2F01;4E28;4E28; # (â¼; â¼; â¼; 丨; 丨; ) KANGXI RADICAL LINE
+2F02;2F02;2F02;4E36;4E36; # (⼂; ⼂; ⼂; 丶; 丶; ) KANGXI RADICAL DOT
+2F03;2F03;2F03;4E3F;4E3F; # (⼃; ⼃; ⼃; 丿; 丿; ) KANGXI RADICAL SLASH
+2F04;2F04;2F04;4E59;4E59; # (⼄; ⼄; ⼄; 乙; 乙; ) KANGXI RADICAL SECOND
+2F05;2F05;2F05;4E85;4E85; # (⼅; ⼅; ⼅; 亅; 亅; ) KANGXI RADICAL HOOK
+2F06;2F06;2F06;4E8C;4E8C; # (⼆; ⼆; ⼆; 二; 二; ) KANGXI RADICAL TWO
+2F07;2F07;2F07;4EA0;4EA0; # (⼇; ⼇; ⼇; 亠; 亠; ) KANGXI RADICAL LID
+2F08;2F08;2F08;4EBA;4EBA; # (⼈; ⼈; ⼈; 人; 人; ) KANGXI RADICAL MAN
+2F09;2F09;2F09;513F;513F; # (⼉; ⼉; ⼉; 儿; 儿; ) KANGXI RADICAL LEGS
+2F0A;2F0A;2F0A;5165;5165; # (⼊; ⼊; ⼊; 入; 入; ) KANGXI RADICAL ENTER
+2F0B;2F0B;2F0B;516B;516B; # (⼋; ⼋; ⼋; 八; 八; ) KANGXI RADICAL EIGHT
+2F0C;2F0C;2F0C;5182;5182; # (⼌; ⼌; ⼌; 冂; 冂; ) KANGXI RADICAL DOWN BOX
+2F0D;2F0D;2F0D;5196;5196; # (â¼; â¼; â¼; 冖; 冖; ) KANGXI RADICAL COVER
+2F0E;2F0E;2F0E;51AB;51AB; # (⼎; ⼎; ⼎; 冫; 冫; ) KANGXI RADICAL ICE
+2F0F;2F0F;2F0F;51E0;51E0; # (â¼; â¼; â¼; 几; 几; ) KANGXI RADICAL TABLE
+2F10;2F10;2F10;51F5;51F5; # (â¼; â¼; â¼; 凵; 凵; ) KANGXI RADICAL OPEN BOX
+2F11;2F11;2F11;5200;5200; # (⼑; ⼑; ⼑; 刀; 刀; ) KANGXI RADICAL KNIFE
+2F12;2F12;2F12;529B;529B; # (⼒; ⼒; ⼒; 力; 力; ) KANGXI RADICAL POWER
+2F13;2F13;2F13;52F9;52F9; # (⼓; ⼓; ⼓; 勹; 勹; ) KANGXI RADICAL WRAP
+2F14;2F14;2F14;5315;5315; # (⼔; ⼔; ⼔; 匕; 匕; ) KANGXI RADICAL SPOON
+2F15;2F15;2F15;531A;531A; # (⼕; ⼕; ⼕; 匚; 匚; ) KANGXI RADICAL RIGHT OPEN BOX
+2F16;2F16;2F16;5338;5338; # (⼖; ⼖; ⼖; 匸; 匸; ) KANGXI RADICAL HIDING ENCLOSURE
+2F17;2F17;2F17;5341;5341; # (â¼—; â¼—; â¼—; å; å; ) KANGXI RADICAL TEN
+2F18;2F18;2F18;535C;535C; # (⼘; ⼘; ⼘; åœ; åœ; ) KANGXI RADICAL DIVINATION
+2F19;2F19;2F19;5369;5369; # (â¼™; â¼™; â¼™; å©; å©; ) KANGXI RADICAL SEAL
+2F1A;2F1A;2F1A;5382;5382; # (⼚; ⼚; ⼚; 厂; 厂; ) KANGXI RADICAL CLIFF
+2F1B;2F1B;2F1B;53B6;53B6; # (⼛; ⼛; ⼛; 厶; 厶; ) KANGXI RADICAL PRIVATE
+2F1C;2F1C;2F1C;53C8;53C8; # (⼜; ⼜; ⼜; åˆ; åˆ; ) KANGXI RADICAL AGAIN
+2F1D;2F1D;2F1D;53E3;53E3; # (â¼; â¼; â¼; å£; å£; ) KANGXI RADICAL MOUTH
+2F1E;2F1E;2F1E;56D7;56D7; # (⼞; ⼞; ⼞; 囗; 囗; ) KANGXI RADICAL ENCLOSURE
+2F1F;2F1F;2F1F;571F;571F; # (⼟; ⼟; ⼟; 土; 土; ) KANGXI RADICAL EARTH
+2F20;2F20;2F20;58EB;58EB; # (⼠; ⼠; ⼠; 士; 士; ) KANGXI RADICAL SCHOLAR
+2F21;2F21;2F21;5902;5902; # (⼡; ⼡; ⼡; 夂; 夂; ) KANGXI RADICAL GO
+2F22;2F22;2F22;590A;590A; # (⼢; ⼢; ⼢; 夊; 夊; ) KANGXI RADICAL GO SLOWLY
+2F23;2F23;2F23;5915;5915; # (⼣; ⼣; ⼣; 夕; 夕; ) KANGXI RADICAL EVENING
+2F24;2F24;2F24;5927;5927; # (⼤; ⼤; ⼤; 大; 大; ) KANGXI RADICAL BIG
+2F25;2F25;2F25;5973;5973; # (⼥; ⼥; ⼥; 女; 女; ) KANGXI RADICAL WOMAN
+2F26;2F26;2F26;5B50;5B50; # (⼦; ⼦; ⼦; å­; å­; ) KANGXI RADICAL CHILD
+2F27;2F27;2F27;5B80;5B80; # (⼧; ⼧; ⼧; 宀; 宀; ) KANGXI RADICAL ROOF
+2F28;2F28;2F28;5BF8;5BF8; # (⼨; ⼨; ⼨; 寸; 寸; ) KANGXI RADICAL INCH
+2F29;2F29;2F29;5C0F;5C0F; # (⼩; ⼩; ⼩; å°; å°; ) KANGXI RADICAL SMALL
+2F2A;2F2A;2F2A;5C22;5C22; # (⼪; ⼪; ⼪; 尢; 尢; ) KANGXI RADICAL LAME
+2F2B;2F2B;2F2B;5C38;5C38; # (⼫; ⼫; ⼫; 尸; 尸; ) KANGXI RADICAL CORPSE
+2F2C;2F2C;2F2C;5C6E;5C6E; # (⼬; ⼬; ⼬; 屮; 屮; ) KANGXI RADICAL SPROUT
+2F2D;2F2D;2F2D;5C71;5C71; # (â¼­; â¼­; â¼­; å±±; å±±; ) KANGXI RADICAL MOUNTAIN
+2F2E;2F2E;2F2E;5DDB;5DDB; # (â¼®; â¼®; â¼®; å·›; å·›; ) KANGXI RADICAL RIVER
+2F2F;2F2F;2F2F;5DE5;5DE5; # (⼯; ⼯; ⼯; 工; 工; ) KANGXI RADICAL WORK
+2F30;2F30;2F30;5DF1;5DF1; # (â¼°; â¼°; â¼°; å·±; å·±; ) KANGXI RADICAL ONESELF
+2F31;2F31;2F31;5DFE;5DFE; # (â¼±; â¼±; â¼±; å·¾; å·¾; ) KANGXI RADICAL TURBAN
+2F32;2F32;2F32;5E72;5E72; # (â¼²; â¼²; â¼²; å¹²; å¹²; ) KANGXI RADICAL DRY
+2F33;2F33;2F33;5E7A;5E7A; # (⼳; ⼳; ⼳; 幺; 幺; ) KANGXI RADICAL SHORT THREAD
+2F34;2F34;2F34;5E7F;5E7F; # (⼴; ⼴; ⼴; 广; 广; ) KANGXI RADICAL DOTTED CLIFF
+2F35;2F35;2F35;5EF4;5EF4; # (â¼µ; â¼µ; â¼µ; å»´; å»´; ) KANGXI RADICAL LONG STRIDE
+2F36;2F36;2F36;5EFE;5EFE; # (⼶; ⼶; ⼶; 廾; 廾; ) KANGXI RADICAL TWO HANDS
+2F37;2F37;2F37;5F0B;5F0B; # (⼷; ⼷; ⼷; 弋; 弋; ) KANGXI RADICAL SHOOT
+2F38;2F38;2F38;5F13;5F13; # (⼸; ⼸; ⼸; 弓; 弓; ) KANGXI RADICAL BOW
+2F39;2F39;2F39;5F50;5F50; # (â¼¹; â¼¹; â¼¹; å½; å½; ) KANGXI RADICAL SNOUT
+2F3A;2F3A;2F3A;5F61;5F61; # (⼺; ⼺; ⼺; 彡; 彡; ) KANGXI RADICAL BRISTLE
+2F3B;2F3B;2F3B;5F73;5F73; # (â¼»; â¼»; â¼»; å½³; å½³; ) KANGXI RADICAL STEP
+2F3C;2F3C;2F3C;5FC3;5FC3; # (⼼; ⼼; ⼼; 心; 心; ) KANGXI RADICAL HEART
+2F3D;2F3D;2F3D;6208;6208; # (⼽; ⼽; ⼽; 戈; 戈; ) KANGXI RADICAL HALBERD
+2F3E;2F3E;2F3E;6236;6236; # (⼾; ⼾; ⼾; 戶; 戶; ) KANGXI RADICAL DOOR
+2F3F;2F3F;2F3F;624B;624B; # (⼿; ⼿; ⼿; 手; 手; ) KANGXI RADICAL HAND
+2F40;2F40;2F40;652F;652F; # (⽀; ⽀; ⽀; 支; 支; ) KANGXI RADICAL BRANCH
+2F41;2F41;2F41;6534;6534; # (â½; â½; â½; æ”´; æ”´; ) KANGXI RADICAL RAP
+2F42;2F42;2F42;6587;6587; # (⽂; ⽂; ⽂; 文; 文; ) KANGXI RADICAL SCRIPT
+2F43;2F43;2F43;6597;6597; # (⽃; ⽃; ⽃; 斗; 斗; ) KANGXI RADICAL DIPPER
+2F44;2F44;2F44;65A4;65A4; # (⽄; ⽄; ⽄; 斤; 斤; ) KANGXI RADICAL AXE
+2F45;2F45;2F45;65B9;65B9; # (â½…; â½…; â½…; æ–¹; æ–¹; ) KANGXI RADICAL SQUARE
+2F46;2F46;2F46;65E0;65E0; # (⽆; ⽆; ⽆; 无; 无; ) KANGXI RADICAL NOT
+2F47;2F47;2F47;65E5;65E5; # (⽇; ⽇; ⽇; 日; 日; ) KANGXI RADICAL SUN
+2F48;2F48;2F48;66F0;66F0; # (⽈; ⽈; ⽈; 曰; 曰; ) KANGXI RADICAL SAY
+2F49;2F49;2F49;6708;6708; # (⽉; ⽉; ⽉; 月; 月; ) KANGXI RADICAL MOON
+2F4A;2F4A;2F4A;6728;6728; # (⽊; ⽊; ⽊; 木; 木; ) KANGXI RADICAL TREE
+2F4B;2F4B;2F4B;6B20;6B20; # (⽋; ⽋; ⽋; 欠; 欠; ) KANGXI RADICAL LACK
+2F4C;2F4C;2F4C;6B62;6B62; # (⽌; ⽌; ⽌; 止; 止; ) KANGXI RADICAL STOP
+2F4D;2F4D;2F4D;6B79;6B79; # (â½; â½; â½; æ­¹; æ­¹; ) KANGXI RADICAL DEATH
+2F4E;2F4E;2F4E;6BB3;6BB3; # (⽎; ⽎; ⽎; 殳; 殳; ) KANGXI RADICAL WEAPON
+2F4F;2F4F;2F4F;6BCB;6BCB; # (â½; â½; â½; 毋; 毋; ) KANGXI RADICAL DO NOT
+2F50;2F50;2F50;6BD4;6BD4; # (â½; â½; â½; 比; 比; ) KANGXI RADICAL COMPARE
+2F51;2F51;2F51;6BDB;6BDB; # (⽑; ⽑; ⽑; 毛; 毛; ) KANGXI RADICAL FUR
+2F52;2F52;2F52;6C0F;6C0F; # (â½’; â½’; â½’; æ°; æ°; ) KANGXI RADICAL CLAN
+2F53;2F53;2F53;6C14;6C14; # (⽓; ⽓; ⽓; 气; 气; ) KANGXI RADICAL STEAM
+2F54;2F54;2F54;6C34;6C34; # (â½”; â½”; â½”; æ°´; æ°´; ) KANGXI RADICAL WATER
+2F55;2F55;2F55;706B;706B; # (⽕; ⽕; ⽕; ç«; ç«; ) KANGXI RADICAL FIRE
+2F56;2F56;2F56;722A;722A; # (⽖; ⽖; ⽖; 爪; 爪; ) KANGXI RADICAL CLAW
+2F57;2F57;2F57;7236;7236; # (⽗; ⽗; ⽗; 父; 父; ) KANGXI RADICAL FATHER
+2F58;2F58;2F58;723B;723B; # (⽘; ⽘; ⽘; 爻; 爻; ) KANGXI RADICAL DOUBLE X
+2F59;2F59;2F59;723F;723F; # (⽙; ⽙; ⽙; 爿; 爿; ) KANGXI RADICAL HALF TREE TRUNK
+2F5A;2F5A;2F5A;7247;7247; # (⽚; ⽚; ⽚; 片; 片; ) KANGXI RADICAL SLICE
+2F5B;2F5B;2F5B;7259;7259; # (⽛; ⽛; ⽛; 牙; 牙; ) KANGXI RADICAL FANG
+2F5C;2F5C;2F5C;725B;725B; # (⽜; ⽜; ⽜; 牛; 牛; ) KANGXI RADICAL COW
+2F5D;2F5D;2F5D;72AC;72AC; # (â½; â½; â½; 犬; 犬; ) KANGXI RADICAL DOG
+2F5E;2F5E;2F5E;7384;7384; # (⽞; ⽞; ⽞; 玄; 玄; ) KANGXI RADICAL PROFOUND
+2F5F;2F5F;2F5F;7389;7389; # (⽟; ⽟; ⽟; 玉; 玉; ) KANGXI RADICAL JADE
+2F60;2F60;2F60;74DC;74DC; # (⽠; ⽠; ⽠; 瓜; 瓜; ) KANGXI RADICAL MELON
+2F61;2F61;2F61;74E6;74E6; # (⽡; ⽡; ⽡; 瓦; 瓦; ) KANGXI RADICAL TILE
+2F62;2F62;2F62;7518;7518; # (⽢; ⽢; ⽢; 甘; 甘; ) KANGXI RADICAL SWEET
+2F63;2F63;2F63;751F;751F; # (⽣; ⽣; ⽣; 生; 生; ) KANGXI RADICAL LIFE
+2F64;2F64;2F64;7528;7528; # (⽤; ⽤; ⽤; 用; 用; ) KANGXI RADICAL USE
+2F65;2F65;2F65;7530;7530; # (â½¥; â½¥; â½¥; ç”°; ç”°; ) KANGXI RADICAL FIELD
+2F66;2F66;2F66;758B;758B; # (⽦; ⽦; ⽦; 疋; 疋; ) KANGXI RADICAL BOLT OF CLOTH
+2F67;2F67;2F67;7592;7592; # (⽧; ⽧; ⽧; 疒; 疒; ) KANGXI RADICAL SICKNESS
+2F68;2F68;2F68;7676;7676; # (⽨; ⽨; ⽨; 癶; 癶; ) KANGXI RADICAL DOTTED TENT
+2F69;2F69;2F69;767D;767D; # (⽩; ⽩; ⽩; 白; 白; ) KANGXI RADICAL WHITE
+2F6A;2F6A;2F6A;76AE;76AE; # (⽪; ⽪; ⽪; 皮; 皮; ) KANGXI RADICAL SKIN
+2F6B;2F6B;2F6B;76BF;76BF; # (⽫; ⽫; ⽫; 皿; 皿; ) KANGXI RADICAL DISH
+2F6C;2F6C;2F6C;76EE;76EE; # (⽬; ⽬; ⽬; 目; 目; ) KANGXI RADICAL EYE
+2F6D;2F6D;2F6D;77DB;77DB; # (⽭; ⽭; ⽭; 矛; 矛; ) KANGXI RADICAL SPEAR
+2F6E;2F6E;2F6E;77E2;77E2; # (⽮; ⽮; ⽮; 矢; 矢; ) KANGXI RADICAL ARROW
+2F6F;2F6F;2F6F;77F3;77F3; # (⽯; ⽯; ⽯; 石; 石; ) KANGXI RADICAL STONE
+2F70;2F70;2F70;793A;793A; # (⽰; ⽰; ⽰; 示; 示; ) KANGXI RADICAL SPIRIT
+2F71;2F71;2F71;79B8;79B8; # (⽱; ⽱; ⽱; 禸; 禸; ) KANGXI RADICAL TRACK
+2F72;2F72;2F72;79BE;79BE; # (⽲; ⽲; ⽲; 禾; 禾; ) KANGXI RADICAL GRAIN
+2F73;2F73;2F73;7A74;7A74; # (â½³; â½³; â½³; ç©´; ç©´; ) KANGXI RADICAL CAVE
+2F74;2F74;2F74;7ACB;7ACB; # (â½´; â½´; â½´; ç«‹; ç«‹; ) KANGXI RADICAL STAND
+2F75;2F75;2F75;7AF9;7AF9; # (⽵; ⽵; ⽵; 竹; 竹; ) KANGXI RADICAL BAMBOO
+2F76;2F76;2F76;7C73;7C73; # (⽶; ⽶; ⽶; 米; 米; ) KANGXI RADICAL RICE
+2F77;2F77;2F77;7CF8;7CF8; # (⽷; ⽷; ⽷; 糸; 糸; ) KANGXI RADICAL SILK
+2F78;2F78;2F78;7F36;7F36; # (⽸; ⽸; ⽸; 缶; 缶; ) KANGXI RADICAL JAR
+2F79;2F79;2F79;7F51;7F51; # (⽹; ⽹; ⽹; 网; 网; ) KANGXI RADICAL NET
+2F7A;2F7A;2F7A;7F8A;7F8A; # (⽺; ⽺; ⽺; 羊; 羊; ) KANGXI RADICAL SHEEP
+2F7B;2F7B;2F7B;7FBD;7FBD; # (â½»; â½»; â½»; ç¾½; ç¾½; ) KANGXI RADICAL FEATHER
+2F7C;2F7C;2F7C;8001;8001; # (â½¼; â½¼; â½¼; è€; è€; ) KANGXI RADICAL OLD
+2F7D;2F7D;2F7D;800C;800C; # (⽽; ⽽; ⽽; 而; 而; ) KANGXI RADICAL AND
+2F7E;2F7E;2F7E;8012;8012; # (⽾; ⽾; ⽾; 耒; 耒; ) KANGXI RADICAL PLOW
+2F7F;2F7F;2F7F;8033;8033; # (⽿; ⽿; ⽿; 耳; 耳; ) KANGXI RADICAL EAR
+2F80;2F80;2F80;807F;807F; # (â¾€; â¾€; â¾€; è¿; è¿; ) KANGXI RADICAL BRUSH
+2F81;2F81;2F81;8089;8089; # (â¾; â¾; â¾; 肉; 肉; ) KANGXI RADICAL MEAT
+2F82;2F82;2F82;81E3;81E3; # (⾂; ⾂; ⾂; 臣; 臣; ) KANGXI RADICAL MINISTER
+2F83;2F83;2F83;81EA;81EA; # (⾃; ⾃; ⾃; 自; 自; ) KANGXI RADICAL SELF
+2F84;2F84;2F84;81F3;81F3; # (⾄; ⾄; ⾄; 至; 至; ) KANGXI RADICAL ARRIVE
+2F85;2F85;2F85;81FC;81FC; # (⾅; ⾅; ⾅; 臼; 臼; ) KANGXI RADICAL MORTAR
+2F86;2F86;2F86;820C;820C; # (⾆; ⾆; ⾆; 舌; 舌; ) KANGXI RADICAL TONGUE
+2F87;2F87;2F87;821B;821B; # (⾇; ⾇; ⾇; 舛; 舛; ) KANGXI RADICAL OPPOSE
+2F88;2F88;2F88;821F;821F; # (⾈; ⾈; ⾈; 舟; 舟; ) KANGXI RADICAL BOAT
+2F89;2F89;2F89;826E;826E; # (⾉; ⾉; ⾉; 艮; 艮; ) KANGXI RADICAL STOPPING
+2F8A;2F8A;2F8A;8272;8272; # (⾊; ⾊; ⾊; 色; 色; ) KANGXI RADICAL COLOR
+2F8B;2F8B;2F8B;8278;8278; # (⾋; ⾋; ⾋; 艸; 艸; ) KANGXI RADICAL GRASS
+2F8C;2F8C;2F8C;864D;864D; # (⾌; ⾌; ⾌; è™; è™; ) KANGXI RADICAL TIGER
+2F8D;2F8D;2F8D;866B;866B; # (â¾; â¾; â¾; 虫; 虫; ) KANGXI RADICAL INSECT
+2F8E;2F8E;2F8E;8840;8840; # (⾎; ⾎; ⾎; 血; 血; ) KANGXI RADICAL BLOOD
+2F8F;2F8F;2F8F;884C;884C; # (â¾; â¾; â¾; è¡Œ; è¡Œ; ) KANGXI RADICAL WALK ENCLOSURE
+2F90;2F90;2F90;8863;8863; # (â¾; â¾; â¾; è¡£; è¡£; ) KANGXI RADICAL CLOTHES
+2F91;2F91;2F91;897E;897E; # (⾑; ⾑; ⾑; 襾; 襾; ) KANGXI RADICAL WEST
+2F92;2F92;2F92;898B;898B; # (⾒; ⾒; ⾒; 見; 見; ) KANGXI RADICAL SEE
+2F93;2F93;2F93;89D2;89D2; # (⾓; ⾓; ⾓; 角; 角; ) KANGXI RADICAL HORN
+2F94;2F94;2F94;8A00;8A00; # (⾔; ⾔; ⾔; 言; 言; ) KANGXI RADICAL SPEECH
+2F95;2F95;2F95;8C37;8C37; # (⾕; ⾕; ⾕; 谷; 谷; ) KANGXI RADICAL VALLEY
+2F96;2F96;2F96;8C46;8C46; # (⾖; ⾖; ⾖; 豆; 豆; ) KANGXI RADICAL BEAN
+2F97;2F97;2F97;8C55;8C55; # (⾗; ⾗; ⾗; 豕; 豕; ) KANGXI RADICAL PIG
+2F98;2F98;2F98;8C78;8C78; # (⾘; ⾘; ⾘; 豸; 豸; ) KANGXI RADICAL BADGER
+2F99;2F99;2F99;8C9D;8C9D; # (â¾™; â¾™; â¾™; è²; è²; ) KANGXI RADICAL SHELL
+2F9A;2F9A;2F9A;8D64;8D64; # (⾚; ⾚; ⾚; 赤; 赤; ) KANGXI RADICAL RED
+2F9B;2F9B;2F9B;8D70;8D70; # (â¾›; â¾›; â¾›; èµ°; èµ°; ) KANGXI RADICAL RUN
+2F9C;2F9C;2F9C;8DB3;8DB3; # (⾜; ⾜; ⾜; 足; 足; ) KANGXI RADICAL FOOT
+2F9D;2F9D;2F9D;8EAB;8EAB; # (â¾; â¾; â¾; 身; 身; ) KANGXI RADICAL BODY
+2F9E;2F9E;2F9E;8ECA;8ECA; # (⾞; ⾞; ⾞; 車; 車; ) KANGXI RADICAL CART
+2F9F;2F9F;2F9F;8F9B;8F9B; # (⾟; ⾟; ⾟; 辛; 辛; ) KANGXI RADICAL BITTER
+2FA0;2FA0;2FA0;8FB0;8FB0; # (â¾ ; â¾ ; â¾ ; è¾°; è¾°; ) KANGXI RADICAL MORNING
+2FA1;2FA1;2FA1;8FB5;8FB5; # (⾡; ⾡; ⾡; 辵; 辵; ) KANGXI RADICAL WALK
+2FA2;2FA2;2FA2;9091;9091; # (â¾¢; â¾¢; â¾¢; é‚‘; é‚‘; ) KANGXI RADICAL CITY
+2FA3;2FA3;2FA3;9149;9149; # (â¾£; â¾£; â¾£; é…‰; é…‰; ) KANGXI RADICAL WINE
+2FA4;2FA4;2FA4;91C6;91C6; # (⾤; ⾤; ⾤; 釆; 釆; ) KANGXI RADICAL DISTINGUISH
+2FA5;2FA5;2FA5;91CC;91CC; # (⾥; ⾥; ⾥; 里; 里; ) KANGXI RADICAL VILLAGE
+2FA6;2FA6;2FA6;91D1;91D1; # (⾦; ⾦; ⾦; 金; 金; ) KANGXI RADICAL GOLD
+2FA7;2FA7;2FA7;9577;9577; # (⾧; ⾧; ⾧; 長; 長; ) KANGXI RADICAL LONG
+2FA8;2FA8;2FA8;9580;9580; # (⾨; ⾨; ⾨; 門; 門; ) KANGXI RADICAL GATE
+2FA9;2FA9;2FA9;961C;961C; # (⾩; ⾩; ⾩; 阜; 阜; ) KANGXI RADICAL MOUND
+2FAA;2FAA;2FAA;96B6;96B6; # (⾪; ⾪; ⾪; 隶; 隶; ) KANGXI RADICAL SLAVE
+2FAB;2FAB;2FAB;96B9;96B9; # (⾫; ⾫; ⾫; 隹; 隹; ) KANGXI RADICAL SHORT TAILED BIRD
+2FAC;2FAC;2FAC;96E8;96E8; # (⾬; ⾬; ⾬; 雨; 雨; ) KANGXI RADICAL RAIN
+2FAD;2FAD;2FAD;9751;9751; # (â¾­; â¾­; â¾­; é‘; é‘; ) KANGXI RADICAL BLUE
+2FAE;2FAE;2FAE;975E;975E; # (â¾®; â¾®; â¾®; éž; éž; ) KANGXI RADICAL WRONG
+2FAF;2FAF;2FAF;9762;9762; # (⾯; ⾯; ⾯; é¢; é¢; ) KANGXI RADICAL FACE
+2FB0;2FB0;2FB0;9769;9769; # (â¾°; â¾°; â¾°; é©; é©; ) KANGXI RADICAL LEATHER
+2FB1;2FB1;2FB1;97CB;97CB; # (⾱; ⾱; ⾱; 韋; 韋; ) KANGXI RADICAL TANNED LEATHER
+2FB2;2FB2;2FB2;97ED;97ED; # (⾲; ⾲; ⾲; 韭; 韭; ) KANGXI RADICAL LEEK
+2FB3;2FB3;2FB3;97F3;97F3; # (⾳; ⾳; ⾳; 音; 音; ) KANGXI RADICAL SOUND
+2FB4;2FB4;2FB4;9801;9801; # (â¾´; â¾´; â¾´; é ; é ; ) KANGXI RADICAL LEAF
+2FB5;2FB5;2FB5;98A8;98A8; # (⾵; ⾵; ⾵; 風; 風; ) KANGXI RADICAL WIND
+2FB6;2FB6;2FB6;98DB;98DB; # (⾶; ⾶; ⾶; 飛; 飛; ) KANGXI RADICAL FLY
+2FB7;2FB7;2FB7;98DF;98DF; # (⾷; ⾷; ⾷; 食; 食; ) KANGXI RADICAL EAT
+2FB8;2FB8;2FB8;9996;9996; # (⾸; ⾸; ⾸; 首; 首; ) KANGXI RADICAL HEAD
+2FB9;2FB9;2FB9;9999;9999; # (⾹; ⾹; ⾹; 香; 香; ) KANGXI RADICAL FRAGRANT
+2FBA;2FBA;2FBA;99AC;99AC; # (⾺; ⾺; ⾺; 馬; 馬; ) KANGXI RADICAL HORSE
+2FBB;2FBB;2FBB;9AA8;9AA8; # (⾻; ⾻; ⾻; 骨; 骨; ) KANGXI RADICAL BONE
+2FBC;2FBC;2FBC;9AD8;9AD8; # (⾼; ⾼; ⾼; 高; 高; ) KANGXI RADICAL TALL
+2FBD;2FBD;2FBD;9ADF;9ADF; # (â¾½; â¾½; â¾½; é«Ÿ; é«Ÿ; ) KANGXI RADICAL HAIR
+2FBE;2FBE;2FBE;9B25;9B25; # (⾾; ⾾; ⾾; 鬥; 鬥; ) KANGXI RADICAL FIGHT
+2FBF;2FBF;2FBF;9B2F;9B2F; # (⾿; ⾿; ⾿; 鬯; 鬯; ) KANGXI RADICAL SACRIFICIAL WINE
+2FC0;2FC0;2FC0;9B32;9B32; # (⿀; ⿀; ⿀; 鬲; 鬲; ) KANGXI RADICAL CAULDRON
+2FC1;2FC1;2FC1;9B3C;9B3C; # (â¿; â¿; â¿; 鬼; 鬼; ) KANGXI RADICAL GHOST
+2FC2;2FC2;2FC2;9B5A;9B5A; # (â¿‚; â¿‚; â¿‚; é­š; é­š; ) KANGXI RADICAL FISH
+2FC3;2FC3;2FC3;9CE5;9CE5; # (⿃; ⿃; ⿃; 鳥; 鳥; ) KANGXI RADICAL BIRD
+2FC4;2FC4;2FC4;9E75;9E75; # (â¿„; â¿„; â¿„; é¹µ; é¹µ; ) KANGXI RADICAL SALT
+2FC5;2FC5;2FC5;9E7F;9E7F; # (⿅; ⿅; ⿅; 鹿; 鹿; ) KANGXI RADICAL DEER
+2FC6;2FC6;2FC6;9EA5;9EA5; # (⿆; ⿆; ⿆; 麥; 麥; ) KANGXI RADICAL WHEAT
+2FC7;2FC7;2FC7;9EBB;9EBB; # (⿇; ⿇; ⿇; 麻; 麻; ) KANGXI RADICAL HEMP
+2FC8;2FC8;2FC8;9EC3;9EC3; # (⿈; ⿈; ⿈; 黃; 黃; ) KANGXI RADICAL YELLOW
+2FC9;2FC9;2FC9;9ECD;9ECD; # (⿉; ⿉; ⿉; é»; é»; ) KANGXI RADICAL MILLET
+2FCA;2FCA;2FCA;9ED1;9ED1; # (⿊; ⿊; ⿊; 黑; 黑; ) KANGXI RADICAL BLACK
+2FCB;2FCB;2FCB;9EF9;9EF9; # (⿋; ⿋; ⿋; 黹; 黹; ) KANGXI RADICAL EMBROIDERY
+2FCC;2FCC;2FCC;9EFD;9EFD; # (⿌; ⿌; ⿌; 黽; 黽; ) KANGXI RADICAL FROG
+2FCD;2FCD;2FCD;9F0E;9F0E; # (â¿; â¿; â¿; 鼎; 鼎; ) KANGXI RADICAL TRIPOD
+2FCE;2FCE;2FCE;9F13;9F13; # (⿎; ⿎; ⿎; 鼓; 鼓; ) KANGXI RADICAL DRUM
+2FCF;2FCF;2FCF;9F20;9F20; # (â¿; â¿; â¿; é¼ ; é¼ ; ) KANGXI RADICAL RAT
+2FD0;2FD0;2FD0;9F3B;9F3B; # (â¿; â¿; â¿; é¼»; é¼»; ) KANGXI RADICAL NOSE
+2FD1;2FD1;2FD1;9F4A;9F4A; # (⿑; ⿑; ⿑; 齊; 齊; ) KANGXI RADICAL EVEN
+2FD2;2FD2;2FD2;9F52;9F52; # (â¿’; â¿’; â¿’; é½’; é½’; ) KANGXI RADICAL TOOTH
+2FD3;2FD3;2FD3;9F8D;9F8D; # (â¿“; â¿“; â¿“; é¾; é¾; ) KANGXI RADICAL DRAGON
+2FD4;2FD4;2FD4;9F9C;9F9C; # (⿔; ⿔; ⿔; 龜; 龜; ) KANGXI RADICAL TURTLE
+2FD5;2FD5;2FD5;9FA0;9FA0; # (â¿•; â¿•; â¿•; é¾ ; é¾ ; ) KANGXI RADICAL FLUTE
+3000;3000;3000;0020;0020; # ( ;  ;  ; ; ; ) IDEOGRAPHIC SPACE
+3036;3036;3036;3012;3012; # (〶; 〶; 〶; 〒; 〒; ) CIRCLED POSTAL MARK
+3038;3038;3038;5341;5341; # (〸; 〸; 〸; å; å; ) HANGZHOU NUMERAL TEN
+3039;3039;3039;5344;5344; # (〹; 〹; 〹; å„; å„; ) HANGZHOU NUMERAL TWENTY
+303A;303A;303A;5345;5345; # (〺; 〺; 〺; å…; å…; ) HANGZHOU NUMERAL THIRTY
+304C;304C;304B 3099;304C;304B 3099; # (ãŒ; ãŒ; ã‹â—Œã‚™; ãŒ; ã‹â—Œã‚™; ) HIRAGANA LETTER GA
+304E;304E;304D 3099;304E;304D 3099; # (ãŽ; ãŽ; ã◌゙; ãŽ; ã◌゙; ) HIRAGANA LETTER GI
+3050;3050;304F 3099;3050;304F 3099; # (ã; ã; ã◌゙; ã; ã◌゙; ) HIRAGANA LETTER GU
+3052;3052;3051 3099;3052;3051 3099; # (ã’; ã’; ã‘◌゙; ã’; ã‘◌゙; ) HIRAGANA LETTER GE
+3054;3054;3053 3099;3054;3053 3099; # (ã”; ã”; ã“◌゙; ã”; ã“◌゙; ) HIRAGANA LETTER GO
+3056;3056;3055 3099;3056;3055 3099; # (ã–; ã–; ã•â—Œã‚™; ã–; ã•â—Œã‚™; ) HIRAGANA LETTER ZA
+3058;3058;3057 3099;3058;3057 3099; # (ã˜; ã˜; ã—◌゙; ã˜; ã—◌゙; ) HIRAGANA LETTER ZI
+305A;305A;3059 3099;305A;3059 3099; # (ãš; ãš; ã™â—Œã‚™; ãš; ã™â—Œã‚™; ) HIRAGANA LETTER ZU
+305C;305C;305B 3099;305C;305B 3099; # (ãœ; ãœ; ã›â—Œã‚™; ãœ; ã›â—Œã‚™; ) HIRAGANA LETTER ZE
+305E;305E;305D 3099;305E;305D 3099; # (ãž; ãž; ã◌゙; ãž; ã◌゙; ) HIRAGANA LETTER ZO
+3060;3060;305F 3099;3060;305F 3099; # (ã ; ã ; ãŸâ—Œã‚™; ã ; ãŸâ—Œã‚™; ) HIRAGANA LETTER DA
+3062;3062;3061 3099;3062;3061 3099; # (ã¢; ã¢; ã¡â—Œã‚™; ã¢; ã¡â—Œã‚™; ) HIRAGANA LETTER DI
+3065;3065;3064 3099;3065;3064 3099; # (ã¥; ã¥; ã¤â—Œã‚™; ã¥; ã¤â—Œã‚™; ) HIRAGANA LETTER DU
+3067;3067;3066 3099;3067;3066 3099; # (ã§; ã§; ã¦â—Œã‚™; ã§; ã¦â—Œã‚™; ) HIRAGANA LETTER DE
+3069;3069;3068 3099;3069;3068 3099; # (ã©; ã©; ã¨â—Œã‚™; ã©; ã¨â—Œã‚™; ) HIRAGANA LETTER DO
+3070;3070;306F 3099;3070;306F 3099; # (ã°; ã°; ã¯â—Œã‚™; ã°; ã¯â—Œã‚™; ) HIRAGANA LETTER BA
+3071;3071;306F 309A;3071;306F 309A; # (ã±; ã±; ã¯â—Œã‚š; ã±; ã¯â—Œã‚š; ) HIRAGANA LETTER PA
+3073;3073;3072 3099;3073;3072 3099; # (ã³; ã³; ã²â—Œã‚™; ã³; ã²â—Œã‚™; ) HIRAGANA LETTER BI
+3074;3074;3072 309A;3074;3072 309A; # (ã´; ã´; ã²â—Œã‚š; ã´; ã²â—Œã‚š; ) HIRAGANA LETTER PI
+3076;3076;3075 3099;3076;3075 3099; # (ã¶; ã¶; ãµâ—Œã‚™; ã¶; ãµâ—Œã‚™; ) HIRAGANA LETTER BU
+3077;3077;3075 309A;3077;3075 309A; # (ã·; ã·; ãµâ—Œã‚š; ã·; ãµâ—Œã‚š; ) HIRAGANA LETTER PU
+3079;3079;3078 3099;3079;3078 3099; # (ã¹; ã¹; ã¸â—Œã‚™; ã¹; ã¸â—Œã‚™; ) HIRAGANA LETTER BE
+307A;307A;3078 309A;307A;3078 309A; # (ãº; ãº; ã¸â—Œã‚š; ãº; ã¸â—Œã‚š; ) HIRAGANA LETTER PE
+307C;307C;307B 3099;307C;307B 3099; # (ã¼; ã¼; ã»â—Œã‚™; ã¼; ã»â—Œã‚™; ) HIRAGANA LETTER BO
+307D;307D;307B 309A;307D;307B 309A; # (ã½; ã½; ã»â—Œã‚š; ã½; ã»â—Œã‚š; ) HIRAGANA LETTER PO
+3094;3094;3046 3099;3094;3046 3099; # (ã‚”; ã‚”; ã†â—Œã‚™; ã‚”; ã†â—Œã‚™; ) HIRAGANA LETTER VU
+309B;309B;309B;0020 3099;0020 3099; # (゛; ゛; ゛; ◌゙; ◌゙; ) KATAKANA-HIRAGANA VOICED SOUND MARK
+309C;309C;309C;0020 309A;0020 309A; # (゜; ゜; ゜; ◌゚; ◌゚; ) KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309E;309E;309D 3099;309E;309D 3099; # (ã‚ž; ã‚ž; ã‚◌゙; ã‚ž; ã‚◌゙; ) HIRAGANA VOICED ITERATION MARK
+309F;309F;309F;3088 308A;3088 308A; # (ゟ; ゟ; ゟ; より; より; ) HIRAGANA DIGRAPH YORI
+30AC;30AC;30AB 3099;30AC;30AB 3099; # (ガ; ガ; カ◌゙; ガ; カ◌゙; ) KATAKANA LETTER GA
+30AE;30AE;30AD 3099;30AE;30AD 3099; # (ギ; ギ; キ◌゙; ギ; キ◌゙; ) KATAKANA LETTER GI
+30B0;30B0;30AF 3099;30B0;30AF 3099; # (グ; グ; ク◌゙; グ; ク◌゙; ) KATAKANA LETTER GU
+30B2;30B2;30B1 3099;30B2;30B1 3099; # (ゲ; ゲ; ケ◌゙; ゲ; ケ◌゙; ) KATAKANA LETTER GE
+30B4;30B4;30B3 3099;30B4;30B3 3099; # (ゴ; ゴ; コ◌゙; ゴ; コ◌゙; ) KATAKANA LETTER GO
+30B6;30B6;30B5 3099;30B6;30B5 3099; # (ザ; ザ; サ◌゙; ザ; サ◌゙; ) KATAKANA LETTER ZA
+30B8;30B8;30B7 3099;30B8;30B7 3099; # (ジ; ジ; シ◌゙; ジ; シ◌゙; ) KATAKANA LETTER ZI
+30BA;30BA;30B9 3099;30BA;30B9 3099; # (ズ; ズ; ス◌゙; ズ; ス◌゙; ) KATAKANA LETTER ZU
+30BC;30BC;30BB 3099;30BC;30BB 3099; # (ゼ; ゼ; セ◌゙; ゼ; セ◌゙; ) KATAKANA LETTER ZE
+30BE;30BE;30BD 3099;30BE;30BD 3099; # (ゾ; ゾ; ソ◌゙; ゾ; ソ◌゙; ) KATAKANA LETTER ZO
+30C0;30C0;30BF 3099;30C0;30BF 3099; # (ダ; ダ; タ◌゙; ダ; タ◌゙; ) KATAKANA LETTER DA
+30C2;30C2;30C1 3099;30C2;30C1 3099; # (ヂ; ヂ; ãƒâ—Œã‚™; ヂ; ãƒâ—Œã‚™; ) KATAKANA LETTER DI
+30C5;30C5;30C4 3099;30C5;30C4 3099; # (ヅ; ヅ; ツ◌゙; ヅ; ツ◌゙; ) KATAKANA LETTER DU
+30C7;30C7;30C6 3099;30C7;30C6 3099; # (デ; デ; テ◌゙; デ; テ◌゙; ) KATAKANA LETTER DE
+30C9;30C9;30C8 3099;30C9;30C8 3099; # (ド; ド; ト◌゙; ド; ト◌゙; ) KATAKANA LETTER DO
+30D0;30D0;30CF 3099;30D0;30CF 3099; # (ãƒ; ãƒ; ãƒâ—Œã‚™; ãƒ; ãƒâ—Œã‚™; ) KATAKANA LETTER BA
+30D1;30D1;30CF 309A;30D1;30CF 309A; # (パ; パ; ãƒâ—Œã‚š; パ; ãƒâ—Œã‚š; ) KATAKANA LETTER PA
+30D3;30D3;30D2 3099;30D3;30D2 3099; # (ビ; ビ; ヒ◌゙; ビ; ヒ◌゙; ) KATAKANA LETTER BI
+30D4;30D4;30D2 309A;30D4;30D2 309A; # (ピ; ピ; ヒ◌゚; ピ; ヒ◌゚; ) KATAKANA LETTER PI
+30D6;30D6;30D5 3099;30D6;30D5 3099; # (ブ; ブ; フ◌゙; ブ; フ◌゙; ) KATAKANA LETTER BU
+30D7;30D7;30D5 309A;30D7;30D5 309A; # (プ; プ; フ◌゚; プ; フ◌゚; ) KATAKANA LETTER PU
+30D9;30D9;30D8 3099;30D9;30D8 3099; # (ベ; ベ; ヘ◌゙; ベ; ヘ◌゙; ) KATAKANA LETTER BE
+30DA;30DA;30D8 309A;30DA;30D8 309A; # (ペ; ペ; ヘ◌゚; ペ; ヘ◌゚; ) KATAKANA LETTER PE
+30DC;30DC;30DB 3099;30DC;30DB 3099; # (ボ; ボ; ホ◌゙; ボ; ホ◌゙; ) KATAKANA LETTER BO
+30DD;30DD;30DB 309A;30DD;30DB 309A; # (ãƒ; ãƒ; ホ◌゚; ãƒ; ホ◌゚; ) KATAKANA LETTER PO
+30F4;30F4;30A6 3099;30F4;30A6 3099; # (ヴ; ヴ; ウ◌゙; ヴ; ウ◌゙; ) KATAKANA LETTER VU
+30F7;30F7;30EF 3099;30F7;30EF 3099; # (ヷ; ヷ; ワ◌゙; ヷ; ワ◌゙; ) KATAKANA LETTER VA
+30F8;30F8;30F0 3099;30F8;30F0 3099; # (ヸ; ヸ; ヰ◌゙; ヸ; ヰ◌゙; ) KATAKANA LETTER VI
+30F9;30F9;30F1 3099;30F9;30F1 3099; # (ヹ; ヹ; ヱ◌゙; ヹ; ヱ◌゙; ) KATAKANA LETTER VE
+30FA;30FA;30F2 3099;30FA;30F2 3099; # (ヺ; ヺ; ヲ◌゙; ヺ; ヲ◌゙; ) KATAKANA LETTER VO
+30FE;30FE;30FD 3099;30FE;30FD 3099; # (ヾ; ヾ; ヽ◌゙; ヾ; ヽ◌゙; ) KATAKANA VOICED ITERATION MARK
+30FF;30FF;30FF;30B3 30C8;30B3 30C8; # (ヿ; ヿ; ヿ; コト; コト; ) KATAKANA DIGRAPH KOTO
+3131;3131;3131;1100;1100; # (ㄱ; ㄱ; ㄱ; ᄀ; ᄀ; ) HANGUL LETTER KIYEOK
+3132;3132;3132;1101;1101; # (ㄲ; ㄲ; ㄲ; á„; á„; ) HANGUL LETTER SSANGKIYEOK
+3133;3133;3133;11AA;11AA; # (ㄳ; ㄳ; ㄳ; ᆪ; ᆪ; ) HANGUL LETTER KIYEOK-SIOS
+3134;3134;3134;1102;1102; # (ã„´; ã„´; ã„´; á„‚; á„‚; ) HANGUL LETTER NIEUN
+3135;3135;3135;11AC;11AC; # (ㄵ; ㄵ; ㄵ; ᆬ; ᆬ; ) HANGUL LETTER NIEUN-CIEUC
+3136;3136;3136;11AD;11AD; # (ㄶ; ㄶ; ㄶ; ᆭ; ᆭ; ) HANGUL LETTER NIEUN-HIEUH
+3137;3137;3137;1103;1103; # (ㄷ; ㄷ; ㄷ; ᄃ; ᄃ; ) HANGUL LETTER TIKEUT
+3138;3138;3138;1104;1104; # (ㄸ; ㄸ; ㄸ; ᄄ; ᄄ; ) HANGUL LETTER SSANGTIKEUT
+3139;3139;3139;1105;1105; # (ㄹ; ㄹ; ㄹ; ᄅ; ᄅ; ) HANGUL LETTER RIEUL
+313A;313A;313A;11B0;11B0; # (ㄺ; ㄺ; ㄺ; ᆰ; ᆰ; ) HANGUL LETTER RIEUL-KIYEOK
+313B;313B;313B;11B1;11B1; # (ㄻ; ㄻ; ㄻ; ᆱ; ᆱ; ) HANGUL LETTER RIEUL-MIEUM
+313C;313C;313C;11B2;11B2; # (ㄼ; ㄼ; ㄼ; ᆲ; ᆲ; ) HANGUL LETTER RIEUL-PIEUP
+313D;313D;313D;11B3;11B3; # (ㄽ; ㄽ; ㄽ; ᆳ; ᆳ; ) HANGUL LETTER RIEUL-SIOS
+313E;313E;313E;11B4;11B4; # (ㄾ; ㄾ; ㄾ; ᆴ; ᆴ; ) HANGUL LETTER RIEUL-THIEUTH
+313F;313F;313F;11B5;11B5; # (ㄿ; ㄿ; ㄿ; ᆵ; ᆵ; ) HANGUL LETTER RIEUL-PHIEUPH
+3140;3140;3140;111A;111A; # (ã…€; ã…€; ã…€; á„š; á„š; ) HANGUL LETTER RIEUL-HIEUH
+3141;3141;3141;1106;1106; # (ã…; ã…; ã…; ᄆ; ᄆ; ) HANGUL LETTER MIEUM
+3142;3142;3142;1107;1107; # (ㅂ; ㅂ; ㅂ; ᄇ; ᄇ; ) HANGUL LETTER PIEUP
+3143;3143;3143;1108;1108; # (ㅃ; ㅃ; ㅃ; ᄈ; ᄈ; ) HANGUL LETTER SSANGPIEUP
+3144;3144;3144;1121;1121; # (ã…„; ã…„; ã…„; á„¡; á„¡; ) HANGUL LETTER PIEUP-SIOS
+3145;3145;3145;1109;1109; # (ㅅ; ㅅ; ㅅ; ᄉ; ᄉ; ) HANGUL LETTER SIOS
+3146;3146;3146;110A;110A; # (ã…†; ã…†; ã…†; á„Š; á„Š; ) HANGUL LETTER SSANGSIOS
+3147;3147;3147;110B;110B; # (ã…‡; ã…‡; ã…‡; á„‹; á„‹; ) HANGUL LETTER IEUNG
+3148;3148;3148;110C;110C; # (ㅈ; ㅈ; ㅈ; ᄌ; ᄌ; ) HANGUL LETTER CIEUC
+3149;3149;3149;110D;110D; # (ã…‰; ã…‰; ã…‰; á„; á„; ) HANGUL LETTER SSANGCIEUC
+314A;314A;314A;110E;110E; # (ã…Š; ã…Š; ã…Š; á„Ž; á„Ž; ) HANGUL LETTER CHIEUCH
+314B;314B;314B;110F;110F; # (ã…‹; ã…‹; ã…‹; á„; á„; ) HANGUL LETTER KHIEUKH
+314C;314C;314C;1110;1110; # (ã…Œ; ã…Œ; ã…Œ; á„; á„; ) HANGUL LETTER THIEUTH
+314D;314D;314D;1111;1111; # (ã…; ã…; ã…; á„‘; á„‘; ) HANGUL LETTER PHIEUPH
+314E;314E;314E;1112;1112; # (ã…Ž; ã…Ž; ã…Ž; á„’; á„’; ) HANGUL LETTER HIEUH
+314F;314F;314F;1161;1161; # (ã…; ã…; ã…; á…¡; á…¡; ) HANGUL LETTER A
+3150;3150;3150;1162;1162; # (ã…; ã…; ã…; á…¢; á…¢; ) HANGUL LETTER AE
+3151;3151;3151;1163;1163; # (ã…‘; ã…‘; ã…‘; á…£; á…£; ) HANGUL LETTER YA
+3152;3152;3152;1164;1164; # (ã…’; ã…’; ã…’; á…¤; á…¤; ) HANGUL LETTER YAE
+3153;3153;3153;1165;1165; # (ã…“; ã…“; ã…“; á…¥; á…¥; ) HANGUL LETTER EO
+3154;3154;3154;1166;1166; # (ã…”; ã…”; ã…”; á…¦; á…¦; ) HANGUL LETTER E
+3155;3155;3155;1167;1167; # (ã…•; ã…•; ã…•; á…§; á…§; ) HANGUL LETTER YEO
+3156;3156;3156;1168;1168; # (ã…–; ã…–; ã…–; á…¨; á…¨; ) HANGUL LETTER YE
+3157;3157;3157;1169;1169; # (ã…—; ã…—; ã…—; á…©; á…©; ) HANGUL LETTER O
+3158;3158;3158;116A;116A; # (ã…˜; ã…˜; ã…˜; á…ª; á…ª; ) HANGUL LETTER WA
+3159;3159;3159;116B;116B; # (ã…™; ã…™; ã…™; á…«; á…«; ) HANGUL LETTER WAE
+315A;315A;315A;116C;116C; # (ã…š; ã…š; ã…š; á…¬; á…¬; ) HANGUL LETTER OE
+315B;315B;315B;116D;116D; # (ã…›; ã…›; ã…›; á…­; á…­; ) HANGUL LETTER YO
+315C;315C;315C;116E;116E; # (ㅜ; ㅜ; ㅜ; ᅮ; ᅮ; ) HANGUL LETTER U
+315D;315D;315D;116F;116F; # (ã…; ã…; ã…; á…¯; á…¯; ) HANGUL LETTER WEO
+315E;315E;315E;1170;1170; # (ã…ž; ã…ž; ã…ž; á…°; á…°; ) HANGUL LETTER WE
+315F;315F;315F;1171;1171; # (ã…Ÿ; ã…Ÿ; ã…Ÿ; á…±; á…±; ) HANGUL LETTER WI
+3160;3160;3160;1172;1172; # (ã… ; ã… ; ã… ; á…²; á…²; ) HANGUL LETTER YU
+3161;3161;3161;1173;1173; # (ã…¡; ã…¡; ã…¡; á…³; á…³; ) HANGUL LETTER EU
+3162;3162;3162;1174;1174; # (ã…¢; ã…¢; ã…¢; á…´; á…´; ) HANGUL LETTER YI
+3163;3163;3163;1175;1175; # (ã…£; ã…£; ã…£; á…µ; á…µ; ) HANGUL LETTER I
+3164;3164;3164;1160;1160; # (ã…¤; ã…¤; ã…¤; á… ; á… ; ) HANGUL FILLER
+3165;3165;3165;1114;1114; # (ã…¥; ã…¥; ã…¥; á„”; á„”; ) HANGUL LETTER SSANGNIEUN
+3166;3166;3166;1115;1115; # (ã…¦; ã…¦; ã…¦; á„•; á„•; ) HANGUL LETTER NIEUN-TIKEUT
+3167;3167;3167;11C7;11C7; # (ㅧ; ㅧ; ㅧ; ᇇ; ᇇ; ) HANGUL LETTER NIEUN-SIOS
+3168;3168;3168;11C8;11C8; # (ㅨ; ㅨ; ㅨ; ᇈ; ᇈ; ) HANGUL LETTER NIEUN-PANSIOS
+3169;3169;3169;11CC;11CC; # (ㅩ; ㅩ; ㅩ; ᇌ; ᇌ; ) HANGUL LETTER RIEUL-KIYEOK-SIOS
+316A;316A;316A;11CE;11CE; # (ㅪ; ㅪ; ㅪ; ᇎ; ᇎ; ) HANGUL LETTER RIEUL-TIKEUT
+316B;316B;316B;11D3;11D3; # (ㅫ; ㅫ; ㅫ; ᇓ; ᇓ; ) HANGUL LETTER RIEUL-PIEUP-SIOS
+316C;316C;316C;11D7;11D7; # (ㅬ; ㅬ; ㅬ; ᇗ; ᇗ; ) HANGUL LETTER RIEUL-PANSIOS
+316D;316D;316D;11D9;11D9; # (ㅭ; ㅭ; ㅭ; ᇙ; ᇙ; ) HANGUL LETTER RIEUL-YEORINHIEUH
+316E;316E;316E;111C;111C; # (ㅮ; ㅮ; ㅮ; ᄜ; ᄜ; ) HANGUL LETTER MIEUM-PIEUP
+316F;316F;316F;11DD;11DD; # (ã…¯; ã…¯; ã…¯; á‡; á‡; ) HANGUL LETTER MIEUM-SIOS
+3170;3170;3170;11DF;11DF; # (ㅰ; ㅰ; ㅰ; ᇟ; ᇟ; ) HANGUL LETTER MIEUM-PANSIOS
+3171;3171;3171;111D;111D; # (ã…±; ã…±; ã…±; á„; á„; ) HANGUL LETTER KAPYEOUNMIEUM
+3172;3172;3172;111E;111E; # (ã…²; ã…²; ã…²; á„ž; á„ž; ) HANGUL LETTER PIEUP-KIYEOK
+3173;3173;3173;1120;1120; # (ã…³; ã…³; ã…³; á„ ; á„ ; ) HANGUL LETTER PIEUP-TIKEUT
+3174;3174;3174;1122;1122; # (ã…´; ã…´; ã…´; á„¢; á„¢; ) HANGUL LETTER PIEUP-SIOS-KIYEOK
+3175;3175;3175;1123;1123; # (ã…µ; ã…µ; ã…µ; á„£; á„£; ) HANGUL LETTER PIEUP-SIOS-TIKEUT
+3176;3176;3176;1127;1127; # (ㅶ; ㅶ; ㅶ; ᄧ; ᄧ; ) HANGUL LETTER PIEUP-CIEUC
+3177;3177;3177;1129;1129; # (ã…·; ã…·; ã…·; á„©; á„©; ) HANGUL LETTER PIEUP-THIEUTH
+3178;3178;3178;112B;112B; # (ã…¸; ã…¸; ã…¸; á„«; á„«; ) HANGUL LETTER KAPYEOUNPIEUP
+3179;3179;3179;112C;112C; # (ㅹ; ㅹ; ㅹ; ᄬ; ᄬ; ) HANGUL LETTER KAPYEOUNSSANGPIEUP
+317A;317A;317A;112D;112D; # (ã…º; ã…º; ã…º; á„­; á„­; ) HANGUL LETTER SIOS-KIYEOK
+317B;317B;317B;112E;112E; # (ã…»; ã…»; ã…»; á„®; á„®; ) HANGUL LETTER SIOS-NIEUN
+317C;317C;317C;112F;112F; # (ㅼ; ㅼ; ㅼ; ᄯ; ᄯ; ) HANGUL LETTER SIOS-TIKEUT
+317D;317D;317D;1132;1132; # (ㅽ; ㅽ; ㅽ; ᄲ; ᄲ; ) HANGUL LETTER SIOS-PIEUP
+317E;317E;317E;1136;1136; # (ㅾ; ㅾ; ㅾ; ᄶ; ᄶ; ) HANGUL LETTER SIOS-CIEUC
+317F;317F;317F;1140;1140; # (ã…¿; ã…¿; ã…¿; á…€; á…€; ) HANGUL LETTER PANSIOS
+3180;3180;3180;1147;1147; # (ㆀ; ㆀ; ㆀ; ᅇ; ᅇ; ) HANGUL LETTER SSANGIEUNG
+3181;3181;3181;114C;114C; # (ã†; ã†; ã†; á…Œ; á…Œ; ) HANGUL LETTER YESIEUNG
+3182;3182;3182;11F1;11F1; # (ㆂ; ㆂ; ㆂ; ᇱ; ᇱ; ) HANGUL LETTER YESIEUNG-SIOS
+3183;3183;3183;11F2;11F2; # (ㆃ; ㆃ; ㆃ; ᇲ; ᇲ; ) HANGUL LETTER YESIEUNG-PANSIOS
+3184;3184;3184;1157;1157; # (ㆄ; ㆄ; ㆄ; ᅗ; ᅗ; ) HANGUL LETTER KAPYEOUNPHIEUPH
+3185;3185;3185;1158;1158; # (ㆅ; ㆅ; ㆅ; ᅘ; ᅘ; ) HANGUL LETTER SSANGHIEUH
+3186;3186;3186;1159;1159; # (ㆆ; ㆆ; ㆆ; ᅙ; ᅙ; ) HANGUL LETTER YEORINHIEUH
+3187;3187;3187;1184;1184; # (ㆇ; ㆇ; ㆇ; ᆄ; ᆄ; ) HANGUL LETTER YO-YA
+3188;3188;3188;1185;1185; # (ㆈ; ㆈ; ㆈ; ᆅ; ᆅ; ) HANGUL LETTER YO-YAE
+3189;3189;3189;1188;1188; # (ㆉ; ㆉ; ㆉ; ᆈ; ᆈ; ) HANGUL LETTER YO-I
+318A;318A;318A;1191;1191; # (ㆊ; ㆊ; ㆊ; ᆑ; ᆑ; ) HANGUL LETTER YU-YEO
+318B;318B;318B;1192;1192; # (ㆋ; ㆋ; ㆋ; ᆒ; ᆒ; ) HANGUL LETTER YU-YE
+318C;318C;318C;1194;1194; # (ㆌ; ㆌ; ㆌ; ᆔ; ᆔ; ) HANGUL LETTER YU-I
+318D;318D;318D;119E;119E; # (ã†; ã†; ã†; ᆞ; ᆞ; ) HANGUL LETTER ARAEA
+318E;318E;318E;11A1;11A1; # (ㆎ; ㆎ; ㆎ; ᆡ; ᆡ; ) HANGUL LETTER ARAEAE
+3192;3192;3192;4E00;4E00; # (㆒; ㆒; ㆒; 一; 一; ) IDEOGRAPHIC ANNOTATION ONE MARK
+3193;3193;3193;4E8C;4E8C; # (㆓; ㆓; ㆓; 二; 二; ) IDEOGRAPHIC ANNOTATION TWO MARK
+3194;3194;3194;4E09;4E09; # (㆔; ㆔; ㆔; 三; 三; ) IDEOGRAPHIC ANNOTATION THREE MARK
+3195;3195;3195;56DB;56DB; # (㆕; ㆕; ㆕; 四; 四; ) IDEOGRAPHIC ANNOTATION FOUR MARK
+3196;3196;3196;4E0A;4E0A; # (㆖; ㆖; ㆖; 上; 上; ) IDEOGRAPHIC ANNOTATION TOP MARK
+3197;3197;3197;4E2D;4E2D; # (㆗; ㆗; ㆗; 中; 中; ) IDEOGRAPHIC ANNOTATION MIDDLE MARK
+3198;3198;3198;4E0B;4E0B; # (㆘; ㆘; ㆘; 下; 下; ) IDEOGRAPHIC ANNOTATION BOTTOM MARK
+3199;3199;3199;7532;7532; # (㆙; ㆙; ㆙; 甲; 甲; ) IDEOGRAPHIC ANNOTATION FIRST MARK
+319A;319A;319A;4E59;4E59; # (㆚; ㆚; ㆚; 乙; 乙; ) IDEOGRAPHIC ANNOTATION SECOND MARK
+319B;319B;319B;4E19;4E19; # (㆛; ㆛; ㆛; 丙; 丙; ) IDEOGRAPHIC ANNOTATION THIRD MARK
+319C;319C;319C;4E01;4E01; # (㆜; ㆜; ㆜; ä¸; ä¸; ) IDEOGRAPHIC ANNOTATION FOURTH MARK
+319D;319D;319D;5929;5929; # (ã†; ã†; ã†; 天; 天; ) IDEOGRAPHIC ANNOTATION HEAVEN MARK
+319E;319E;319E;5730;5730; # (㆞; ㆞; ㆞; 地; 地; ) IDEOGRAPHIC ANNOTATION EARTH MARK
+319F;319F;319F;4EBA;4EBA; # (㆟; ㆟; ㆟; 人; 人; ) IDEOGRAPHIC ANNOTATION MAN MARK
+3200;3200;3200;0028 1100 0029;0028 1100 0029; # (㈀; ㈀; ㈀; (ᄀ); (ᄀ); ) PARENTHESIZED HANGUL KIYEOK
+3201;3201;3201;0028 1102 0029;0028 1102 0029; # (ãˆ; ãˆ; ãˆ; (á„‚); (á„‚); ) PARENTHESIZED HANGUL NIEUN
+3202;3202;3202;0028 1103 0029;0028 1103 0029; # (㈂; ㈂; ㈂; (ᄃ); (ᄃ); ) PARENTHESIZED HANGUL TIKEUT
+3203;3203;3203;0028 1105 0029;0028 1105 0029; # (㈃; ㈃; ㈃; (ᄅ); (ᄅ); ) PARENTHESIZED HANGUL RIEUL
+3204;3204;3204;0028 1106 0029;0028 1106 0029; # (㈄; ㈄; ㈄; (ᄆ); (ᄆ); ) PARENTHESIZED HANGUL MIEUM
+3205;3205;3205;0028 1107 0029;0028 1107 0029; # (㈅; ㈅; ㈅; (ᄇ); (ᄇ); ) PARENTHESIZED HANGUL PIEUP
+3206;3206;3206;0028 1109 0029;0028 1109 0029; # (㈆; ㈆; ㈆; (ᄉ); (ᄉ); ) PARENTHESIZED HANGUL SIOS
+3207;3207;3207;0028 110B 0029;0028 110B 0029; # (㈇; ㈇; ㈇; (ᄋ); (ᄋ); ) PARENTHESIZED HANGUL IEUNG
+3208;3208;3208;0028 110C 0029;0028 110C 0029; # (㈈; ㈈; ㈈; (ᄌ); (ᄌ); ) PARENTHESIZED HANGUL CIEUC
+3209;3209;3209;0028 110E 0029;0028 110E 0029; # (㈉; ㈉; ㈉; (ᄎ); (ᄎ); ) PARENTHESIZED HANGUL CHIEUCH
+320A;320A;320A;0028 110F 0029;0028 110F 0029; # (㈊; ㈊; ㈊; (á„); (á„); ) PARENTHESIZED HANGUL KHIEUKH
+320B;320B;320B;0028 1110 0029;0028 1110 0029; # (㈋; ㈋; ㈋; (á„); (á„); ) PARENTHESIZED HANGUL THIEUTH
+320C;320C;320C;0028 1111 0029;0028 1111 0029; # (㈌; ㈌; ㈌; (ᄑ); (ᄑ); ) PARENTHESIZED HANGUL PHIEUPH
+320D;320D;320D;0028 1112 0029;0028 1112 0029; # (ãˆ; ãˆ; ãˆ; (á„’); (á„’); ) PARENTHESIZED HANGUL HIEUH
+320E;320E;320E;0028 AC00 0029;0028 1100 1161 0029; # (㈎; ㈎; ㈎; (가); (가); ) PARENTHESIZED HANGUL KIYEOK A
+320F;320F;320F;0028 B098 0029;0028 1102 1161 0029; # (ãˆ; ãˆ; ãˆ; (나); (á„‚á…¡); ) PARENTHESIZED HANGUL NIEUN A
+3210;3210;3210;0028 B2E4 0029;0028 1103 1161 0029; # (ãˆ; ãˆ; ãˆ; (다); (다); ) PARENTHESIZED HANGUL TIKEUT A
+3211;3211;3211;0028 B77C 0029;0028 1105 1161 0029; # (㈑; ㈑; ㈑; (ë¼); (á„…á…¡); ) PARENTHESIZED HANGUL RIEUL A
+3212;3212;3212;0028 B9C8 0029;0028 1106 1161 0029; # (㈒; ㈒; ㈒; (마); (마); ) PARENTHESIZED HANGUL MIEUM A
+3213;3213;3213;0028 BC14 0029;0028 1107 1161 0029; # (㈓; ㈓; ㈓; (바); (바); ) PARENTHESIZED HANGUL PIEUP A
+3214;3214;3214;0028 C0AC 0029;0028 1109 1161 0029; # (㈔; ㈔; ㈔; (사); (사); ) PARENTHESIZED HANGUL SIOS A
+3215;3215;3215;0028 C544 0029;0028 110B 1161 0029; # (㈕; ㈕; ㈕; (아); (아); ) PARENTHESIZED HANGUL IEUNG A
+3216;3216;3216;0028 C790 0029;0028 110C 1161 0029; # (㈖; ㈖; ㈖; (ìž); (자); ) PARENTHESIZED HANGUL CIEUC A
+3217;3217;3217;0028 CC28 0029;0028 110E 1161 0029; # (㈗; ㈗; ㈗; (차); (차); ) PARENTHESIZED HANGUL CHIEUCH A
+3218;3218;3218;0028 CE74 0029;0028 110F 1161 0029; # (㈘; ㈘; ㈘; (ì¹´); (á„á…¡); ) PARENTHESIZED HANGUL KHIEUKH A
+3219;3219;3219;0028 D0C0 0029;0028 1110 1161 0029; # (㈙; ㈙; ㈙; (타); (á„á…¡); ) PARENTHESIZED HANGUL THIEUTH A
+321A;321A;321A;0028 D30C 0029;0028 1111 1161 0029; # (㈚; ㈚; ㈚; (파); (파); ) PARENTHESIZED HANGUL PHIEUPH A
+321B;321B;321B;0028 D558 0029;0028 1112 1161 0029; # (㈛; ㈛; ㈛; (하); (하); ) PARENTHESIZED HANGUL HIEUH A
+321C;321C;321C;0028 C8FC 0029;0028 110C 116E 0029; # (㈜; ㈜; ㈜; (주); (주); ) PARENTHESIZED HANGUL CIEUC U
+321D;321D;321D;0028 C624 C804 0029;0028 110B 1169 110C 1165 11AB 0029; # (ãˆ; ãˆ; ãˆ; (오전); (오전); ) PARENTHESIZED KOREAN CHARACTER OJEON
+321E;321E;321E;0028 C624 D6C4 0029;0028 110B 1169 1112 116E 0029; # (㈞; ㈞; ㈞; (오후); (오후); ) PARENTHESIZED KOREAN CHARACTER O HU
+3220;3220;3220;0028 4E00 0029;0028 4E00 0029; # (㈠; ㈠; ㈠; (一); (一); ) PARENTHESIZED IDEOGRAPH ONE
+3221;3221;3221;0028 4E8C 0029;0028 4E8C 0029; # (㈡; ㈡; ㈡; (二); (二); ) PARENTHESIZED IDEOGRAPH TWO
+3222;3222;3222;0028 4E09 0029;0028 4E09 0029; # (㈢; ㈢; ㈢; (三); (三); ) PARENTHESIZED IDEOGRAPH THREE
+3223;3223;3223;0028 56DB 0029;0028 56DB 0029; # (㈣; ㈣; ㈣; (四); (四); ) PARENTHESIZED IDEOGRAPH FOUR
+3224;3224;3224;0028 4E94 0029;0028 4E94 0029; # (㈤; ㈤; ㈤; (五); (五); ) PARENTHESIZED IDEOGRAPH FIVE
+3225;3225;3225;0028 516D 0029;0028 516D 0029; # (㈥; ㈥; ㈥; (六); (六); ) PARENTHESIZED IDEOGRAPH SIX
+3226;3226;3226;0028 4E03 0029;0028 4E03 0029; # (㈦; ㈦; ㈦; (七); (七); ) PARENTHESIZED IDEOGRAPH SEVEN
+3227;3227;3227;0028 516B 0029;0028 516B 0029; # (㈧; ㈧; ㈧; (八); (八); ) PARENTHESIZED IDEOGRAPH EIGHT
+3228;3228;3228;0028 4E5D 0029;0028 4E5D 0029; # (㈨; ㈨; ㈨; (ä¹); (ä¹); ) PARENTHESIZED IDEOGRAPH NINE
+3229;3229;3229;0028 5341 0029;0028 5341 0029; # (㈩; ㈩; ㈩; (å); (å); ) PARENTHESIZED IDEOGRAPH TEN
+322A;322A;322A;0028 6708 0029;0028 6708 0029; # (㈪; ㈪; ㈪; (月); (月); ) PARENTHESIZED IDEOGRAPH MOON
+322B;322B;322B;0028 706B 0029;0028 706B 0029; # (㈫; ㈫; ㈫; (ç«); (ç«); ) PARENTHESIZED IDEOGRAPH FIRE
+322C;322C;322C;0028 6C34 0029;0028 6C34 0029; # (㈬; ㈬; ㈬; (水); (水); ) PARENTHESIZED IDEOGRAPH WATER
+322D;322D;322D;0028 6728 0029;0028 6728 0029; # (㈭; ㈭; ㈭; (木); (木); ) PARENTHESIZED IDEOGRAPH WOOD
+322E;322E;322E;0028 91D1 0029;0028 91D1 0029; # (㈮; ㈮; ㈮; (金); (金); ) PARENTHESIZED IDEOGRAPH METAL
+322F;322F;322F;0028 571F 0029;0028 571F 0029; # (㈯; ㈯; ㈯; (土); (土); ) PARENTHESIZED IDEOGRAPH EARTH
+3230;3230;3230;0028 65E5 0029;0028 65E5 0029; # (㈰; ㈰; ㈰; (日); (日); ) PARENTHESIZED IDEOGRAPH SUN
+3231;3231;3231;0028 682A 0029;0028 682A 0029; # (㈱; ㈱; ㈱; (株); (株); ) PARENTHESIZED IDEOGRAPH STOCK
+3232;3232;3232;0028 6709 0029;0028 6709 0029; # (㈲; ㈲; ㈲; (有); (有); ) PARENTHESIZED IDEOGRAPH HAVE
+3233;3233;3233;0028 793E 0029;0028 793E 0029; # (㈳; ㈳; ㈳; (社); (社); ) PARENTHESIZED IDEOGRAPH SOCIETY
+3234;3234;3234;0028 540D 0029;0028 540D 0029; # (㈴; ㈴; ㈴; (å); (å); ) PARENTHESIZED IDEOGRAPH NAME
+3235;3235;3235;0028 7279 0029;0028 7279 0029; # (㈵; ㈵; ㈵; (特); (特); ) PARENTHESIZED IDEOGRAPH SPECIAL
+3236;3236;3236;0028 8CA1 0029;0028 8CA1 0029; # (㈶; ㈶; ㈶; (財); (財); ) PARENTHESIZED IDEOGRAPH FINANCIAL
+3237;3237;3237;0028 795D 0029;0028 795D 0029; # (㈷; ㈷; ㈷; (ç¥); (ç¥); ) PARENTHESIZED IDEOGRAPH CONGRATULATION
+3238;3238;3238;0028 52B4 0029;0028 52B4 0029; # (㈸; ㈸; ㈸; (労); (労); ) PARENTHESIZED IDEOGRAPH LABOR
+3239;3239;3239;0028 4EE3 0029;0028 4EE3 0029; # (㈹; ㈹; ㈹; (代); (代); ) PARENTHESIZED IDEOGRAPH REPRESENT
+323A;323A;323A;0028 547C 0029;0028 547C 0029; # (㈺; ㈺; ㈺; (呼); (呼); ) PARENTHESIZED IDEOGRAPH CALL
+323B;323B;323B;0028 5B66 0029;0028 5B66 0029; # (㈻; ㈻; ㈻; (学); (学); ) PARENTHESIZED IDEOGRAPH STUDY
+323C;323C;323C;0028 76E3 0029;0028 76E3 0029; # (㈼; ㈼; ㈼; (監); (監); ) PARENTHESIZED IDEOGRAPH SUPERVISE
+323D;323D;323D;0028 4F01 0029;0028 4F01 0029; # (㈽; ㈽; ㈽; (ä¼); (ä¼); ) PARENTHESIZED IDEOGRAPH ENTERPRISE
+323E;323E;323E;0028 8CC7 0029;0028 8CC7 0029; # (㈾; ㈾; ㈾; (資); (資); ) PARENTHESIZED IDEOGRAPH RESOURCE
+323F;323F;323F;0028 5354 0029;0028 5354 0029; # (㈿; ㈿; ㈿; (å”); (å”); ) PARENTHESIZED IDEOGRAPH ALLIANCE
+3240;3240;3240;0028 796D 0029;0028 796D 0029; # (㉀; ㉀; ㉀; (祭); (祭); ) PARENTHESIZED IDEOGRAPH FESTIVAL
+3241;3241;3241;0028 4F11 0029;0028 4F11 0029; # (ã‰; ã‰; ã‰; (休); (休); ) PARENTHESIZED IDEOGRAPH REST
+3242;3242;3242;0028 81EA 0029;0028 81EA 0029; # (㉂; ㉂; ㉂; (自); (自); ) PARENTHESIZED IDEOGRAPH SELF
+3243;3243;3243;0028 81F3 0029;0028 81F3 0029; # (㉃; ㉃; ㉃; (至); (至); ) PARENTHESIZED IDEOGRAPH REACH
+3244;3244;3244;554F;554F; # (㉄; ㉄; ㉄; å•; å•; ) CIRCLED IDEOGRAPH QUESTION
+3245;3245;3245;5E7C;5E7C; # (㉅; ㉅; ㉅; 幼; 幼; ) CIRCLED IDEOGRAPH KINDERGARTEN
+3246;3246;3246;6587;6587; # (㉆; ㉆; ㉆; 文; 文; ) CIRCLED IDEOGRAPH SCHOOL
+3247;3247;3247;7B8F;7B8F; # (㉇; ㉇; ㉇; ç®; ç®; ) CIRCLED IDEOGRAPH KOTO
+3250;3250;3250;0050 0054 0045;0050 0054 0045; # (ã‰; ã‰; ã‰; PTE; PTE; ) PARTNERSHIP SIGN
+3251;3251;3251;0032 0031;0032 0031; # (㉑; ㉑; ㉑; 21; 21; ) CIRCLED NUMBER TWENTY ONE
+3252;3252;3252;0032 0032;0032 0032; # (㉒; ㉒; ㉒; 22; 22; ) CIRCLED NUMBER TWENTY TWO
+3253;3253;3253;0032 0033;0032 0033; # (㉓; ㉓; ㉓; 23; 23; ) CIRCLED NUMBER TWENTY THREE
+3254;3254;3254;0032 0034;0032 0034; # (㉔; ㉔; ㉔; 24; 24; ) CIRCLED NUMBER TWENTY FOUR
+3255;3255;3255;0032 0035;0032 0035; # (㉕; ㉕; ㉕; 25; 25; ) CIRCLED NUMBER TWENTY FIVE
+3256;3256;3256;0032 0036;0032 0036; # (㉖; ㉖; ㉖; 26; 26; ) CIRCLED NUMBER TWENTY SIX
+3257;3257;3257;0032 0037;0032 0037; # (㉗; ㉗; ㉗; 27; 27; ) CIRCLED NUMBER TWENTY SEVEN
+3258;3258;3258;0032 0038;0032 0038; # (㉘; ㉘; ㉘; 28; 28; ) CIRCLED NUMBER TWENTY EIGHT
+3259;3259;3259;0032 0039;0032 0039; # (㉙; ㉙; ㉙; 29; 29; ) CIRCLED NUMBER TWENTY NINE
+325A;325A;325A;0033 0030;0033 0030; # (㉚; ㉚; ㉚; 30; 30; ) CIRCLED NUMBER THIRTY
+325B;325B;325B;0033 0031;0033 0031; # (㉛; ㉛; ㉛; 31; 31; ) CIRCLED NUMBER THIRTY ONE
+325C;325C;325C;0033 0032;0033 0032; # (㉜; ㉜; ㉜; 32; 32; ) CIRCLED NUMBER THIRTY TWO
+325D;325D;325D;0033 0033;0033 0033; # (ã‰; ã‰; ã‰; 33; 33; ) CIRCLED NUMBER THIRTY THREE
+325E;325E;325E;0033 0034;0033 0034; # (㉞; ㉞; ㉞; 34; 34; ) CIRCLED NUMBER THIRTY FOUR
+325F;325F;325F;0033 0035;0033 0035; # (㉟; ㉟; ㉟; 35; 35; ) CIRCLED NUMBER THIRTY FIVE
+3260;3260;3260;1100;1100; # (㉠; ㉠; ㉠; ᄀ; ᄀ; ) CIRCLED HANGUL KIYEOK
+3261;3261;3261;1102;1102; # (㉡; ㉡; ㉡; ᄂ; ᄂ; ) CIRCLED HANGUL NIEUN
+3262;3262;3262;1103;1103; # (㉢; ㉢; ㉢; ᄃ; ᄃ; ) CIRCLED HANGUL TIKEUT
+3263;3263;3263;1105;1105; # (㉣; ㉣; ㉣; ᄅ; ᄅ; ) CIRCLED HANGUL RIEUL
+3264;3264;3264;1106;1106; # (㉤; ㉤; ㉤; ᄆ; ᄆ; ) CIRCLED HANGUL MIEUM
+3265;3265;3265;1107;1107; # (㉥; ㉥; ㉥; ᄇ; ᄇ; ) CIRCLED HANGUL PIEUP
+3266;3266;3266;1109;1109; # (㉦; ㉦; ㉦; ᄉ; ᄉ; ) CIRCLED HANGUL SIOS
+3267;3267;3267;110B;110B; # (㉧; ㉧; ㉧; ᄋ; ᄋ; ) CIRCLED HANGUL IEUNG
+3268;3268;3268;110C;110C; # (㉨; ㉨; ㉨; ᄌ; ᄌ; ) CIRCLED HANGUL CIEUC
+3269;3269;3269;110E;110E; # (㉩; ㉩; ㉩; ᄎ; ᄎ; ) CIRCLED HANGUL CHIEUCH
+326A;326A;326A;110F;110F; # (㉪; ㉪; ㉪; á„; á„; ) CIRCLED HANGUL KHIEUKH
+326B;326B;326B;1110;1110; # (㉫; ㉫; ㉫; á„; á„; ) CIRCLED HANGUL THIEUTH
+326C;326C;326C;1111;1111; # (㉬; ㉬; ㉬; ᄑ; ᄑ; ) CIRCLED HANGUL PHIEUPH
+326D;326D;326D;1112;1112; # (㉭; ㉭; ㉭; ᄒ; ᄒ; ) CIRCLED HANGUL HIEUH
+326E;326E;326E;AC00;1100 1161; # (㉮; ㉮; ㉮; 가; 가; ) CIRCLED HANGUL KIYEOK A
+326F;326F;326F;B098;1102 1161; # (㉯; ㉯; ㉯; 나; 나; ) CIRCLED HANGUL NIEUN A
+3270;3270;3270;B2E4;1103 1161; # (㉰; ㉰; ㉰; 다; 다; ) CIRCLED HANGUL TIKEUT A
+3271;3271;3271;B77C;1105 1161; # (㉱; ㉱; ㉱; ë¼; á„…á…¡; ) CIRCLED HANGUL RIEUL A
+3272;3272;3272;B9C8;1106 1161; # (㉲; ㉲; ㉲; 마; 마; ) CIRCLED HANGUL MIEUM A
+3273;3273;3273;BC14;1107 1161; # (㉳; ㉳; ㉳; 바; 바; ) CIRCLED HANGUL PIEUP A
+3274;3274;3274;C0AC;1109 1161; # (㉴; ㉴; ㉴; 사; 사; ) CIRCLED HANGUL SIOS A
+3275;3275;3275;C544;110B 1161; # (㉵; ㉵; ㉵; 아; 아; ) CIRCLED HANGUL IEUNG A
+3276;3276;3276;C790;110C 1161; # (㉶; ㉶; ㉶; ìž; 자; ) CIRCLED HANGUL CIEUC A
+3277;3277;3277;CC28;110E 1161; # (㉷; ㉷; ㉷; 차; 차; ) CIRCLED HANGUL CHIEUCH A
+3278;3278;3278;CE74;110F 1161; # (㉸; ㉸; ㉸; ì¹´; á„á…¡; ) CIRCLED HANGUL KHIEUKH A
+3279;3279;3279;D0C0;1110 1161; # (㉹; ㉹; ㉹; 타; á„á…¡; ) CIRCLED HANGUL THIEUTH A
+327A;327A;327A;D30C;1111 1161; # (㉺; ㉺; ㉺; 파; 파; ) CIRCLED HANGUL PHIEUPH A
+327B;327B;327B;D558;1112 1161; # (㉻; ㉻; ㉻; 하; 하; ) CIRCLED HANGUL HIEUH A
+327C;327C;327C;CC38 ACE0;110E 1161 11B7 1100 1169; # (㉼; ㉼; ㉼; 참고; 참고; ) CIRCLED KOREAN CHARACTER CHAMKO
+327D;327D;327D;C8FC C758;110C 116E 110B 1174; # (㉽; ㉽; ㉽; 주ì˜; 주의; ) CIRCLED KOREAN CHARACTER JUEUI
+327E;327E;327E;C6B0;110B 116E; # (㉾; ㉾; ㉾; 우; 우; ) CIRCLED HANGUL IEUNG U
+3280;3280;3280;4E00;4E00; # (㊀; ㊀; ㊀; 一; 一; ) CIRCLED IDEOGRAPH ONE
+3281;3281;3281;4E8C;4E8C; # (ãŠ; ãŠ; ãŠ; 二; 二; ) CIRCLED IDEOGRAPH TWO
+3282;3282;3282;4E09;4E09; # (㊂; ㊂; ㊂; 三; 三; ) CIRCLED IDEOGRAPH THREE
+3283;3283;3283;56DB;56DB; # (㊃; ㊃; ㊃; 四; 四; ) CIRCLED IDEOGRAPH FOUR
+3284;3284;3284;4E94;4E94; # (㊄; ㊄; ㊄; 五; 五; ) CIRCLED IDEOGRAPH FIVE
+3285;3285;3285;516D;516D; # (㊅; ㊅; ㊅; 六; 六; ) CIRCLED IDEOGRAPH SIX
+3286;3286;3286;4E03;4E03; # (㊆; ㊆; ㊆; 七; 七; ) CIRCLED IDEOGRAPH SEVEN
+3287;3287;3287;516B;516B; # (㊇; ㊇; ㊇; 八; 八; ) CIRCLED IDEOGRAPH EIGHT
+3288;3288;3288;4E5D;4E5D; # (㊈; ㊈; ㊈; ä¹; ä¹; ) CIRCLED IDEOGRAPH NINE
+3289;3289;3289;5341;5341; # (㊉; ㊉; ㊉; å; å; ) CIRCLED IDEOGRAPH TEN
+328A;328A;328A;6708;6708; # (㊊; ㊊; ㊊; 月; 月; ) CIRCLED IDEOGRAPH MOON
+328B;328B;328B;706B;706B; # (㊋; ㊋; ㊋; ç«; ç«; ) CIRCLED IDEOGRAPH FIRE
+328C;328C;328C;6C34;6C34; # (㊌; ㊌; ㊌; 水; 水; ) CIRCLED IDEOGRAPH WATER
+328D;328D;328D;6728;6728; # (ãŠ; ãŠ; ãŠ; 木; 木; ) CIRCLED IDEOGRAPH WOOD
+328E;328E;328E;91D1;91D1; # (㊎; ㊎; ㊎; 金; 金; ) CIRCLED IDEOGRAPH METAL
+328F;328F;328F;571F;571F; # (ãŠ; ãŠ; ãŠ; 土; 土; ) CIRCLED IDEOGRAPH EARTH
+3290;3290;3290;65E5;65E5; # (ãŠ; ãŠ; ãŠ; æ—¥; æ—¥; ) CIRCLED IDEOGRAPH SUN
+3291;3291;3291;682A;682A; # (㊑; ㊑; ㊑; 株; 株; ) CIRCLED IDEOGRAPH STOCK
+3292;3292;3292;6709;6709; # (㊒; ㊒; ㊒; 有; 有; ) CIRCLED IDEOGRAPH HAVE
+3293;3293;3293;793E;793E; # (㊓; ㊓; ㊓; 社; 社; ) CIRCLED IDEOGRAPH SOCIETY
+3294;3294;3294;540D;540D; # (㊔; ㊔; ㊔; å; å; ) CIRCLED IDEOGRAPH NAME
+3295;3295;3295;7279;7279; # (㊕; ㊕; ㊕; 特; 特; ) CIRCLED IDEOGRAPH SPECIAL
+3296;3296;3296;8CA1;8CA1; # (㊖; ㊖; ㊖; 財; 財; ) CIRCLED IDEOGRAPH FINANCIAL
+3297;3297;3297;795D;795D; # (㊗; ㊗; ㊗; ç¥; ç¥; ) CIRCLED IDEOGRAPH CONGRATULATION
+3298;3298;3298;52B4;52B4; # (㊘; ㊘; ㊘; 労; 労; ) CIRCLED IDEOGRAPH LABOR
+3299;3299;3299;79D8;79D8; # (㊙; ㊙; ㊙; 秘; 秘; ) CIRCLED IDEOGRAPH SECRET
+329A;329A;329A;7537;7537; # (㊚; ㊚; ㊚; 男; 男; ) CIRCLED IDEOGRAPH MALE
+329B;329B;329B;5973;5973; # (㊛; ㊛; ㊛; 女; 女; ) CIRCLED IDEOGRAPH FEMALE
+329C;329C;329C;9069;9069; # (㊜; ㊜; ㊜; é©; é©; ) CIRCLED IDEOGRAPH SUITABLE
+329D;329D;329D;512A;512A; # (ãŠ; ãŠ; ãŠ; 優; 優; ) CIRCLED IDEOGRAPH EXCELLENT
+329E;329E;329E;5370;5370; # (㊞; ㊞; ㊞; å°; å°; ) CIRCLED IDEOGRAPH PRINT
+329F;329F;329F;6CE8;6CE8; # (㊟; ㊟; ㊟; 注; 注; ) CIRCLED IDEOGRAPH ATTENTION
+32A0;32A0;32A0;9805;9805; # (㊠; ㊠; ㊠; 項; 項; ) CIRCLED IDEOGRAPH ITEM
+32A1;32A1;32A1;4F11;4F11; # (㊡; ㊡; ㊡; 休; 休; ) CIRCLED IDEOGRAPH REST
+32A2;32A2;32A2;5199;5199; # (㊢; ㊢; ㊢; 写; 写; ) CIRCLED IDEOGRAPH COPY
+32A3;32A3;32A3;6B63;6B63; # (㊣; ㊣; ㊣; 正; 正; ) CIRCLED IDEOGRAPH CORRECT
+32A4;32A4;32A4;4E0A;4E0A; # (㊤; ㊤; ㊤; 上; 上; ) CIRCLED IDEOGRAPH HIGH
+32A5;32A5;32A5;4E2D;4E2D; # (㊥; ㊥; ㊥; 中; 中; ) CIRCLED IDEOGRAPH CENTRE
+32A6;32A6;32A6;4E0B;4E0B; # (㊦; ㊦; ㊦; 下; 下; ) CIRCLED IDEOGRAPH LOW
+32A7;32A7;32A7;5DE6;5DE6; # (㊧; ㊧; ㊧; 左; 左; ) CIRCLED IDEOGRAPH LEFT
+32A8;32A8;32A8;53F3;53F3; # (㊨; ㊨; ㊨; å³; å³; ) CIRCLED IDEOGRAPH RIGHT
+32A9;32A9;32A9;533B;533B; # (㊩; ㊩; ㊩; 医; 医; ) CIRCLED IDEOGRAPH MEDICINE
+32AA;32AA;32AA;5B97;5B97; # (㊪; ㊪; ㊪; 宗; 宗; ) CIRCLED IDEOGRAPH RELIGION
+32AB;32AB;32AB;5B66;5B66; # (㊫; ㊫; ㊫; 学; 学; ) CIRCLED IDEOGRAPH STUDY
+32AC;32AC;32AC;76E3;76E3; # (㊬; ㊬; ㊬; 監; 監; ) CIRCLED IDEOGRAPH SUPERVISE
+32AD;32AD;32AD;4F01;4F01; # (㊭; ㊭; ㊭; ä¼; ä¼; ) CIRCLED IDEOGRAPH ENTERPRISE
+32AE;32AE;32AE;8CC7;8CC7; # (㊮; ㊮; ㊮; 資; 資; ) CIRCLED IDEOGRAPH RESOURCE
+32AF;32AF;32AF;5354;5354; # (㊯; ㊯; ㊯; å”; å”; ) CIRCLED IDEOGRAPH ALLIANCE
+32B0;32B0;32B0;591C;591C; # (㊰; ㊰; ㊰; 夜; 夜; ) CIRCLED IDEOGRAPH NIGHT
+32B1;32B1;32B1;0033 0036;0033 0036; # (㊱; ㊱; ㊱; 36; 36; ) CIRCLED NUMBER THIRTY SIX
+32B2;32B2;32B2;0033 0037;0033 0037; # (㊲; ㊲; ㊲; 37; 37; ) CIRCLED NUMBER THIRTY SEVEN
+32B3;32B3;32B3;0033 0038;0033 0038; # (㊳; ㊳; ㊳; 38; 38; ) CIRCLED NUMBER THIRTY EIGHT
+32B4;32B4;32B4;0033 0039;0033 0039; # (㊴; ㊴; ㊴; 39; 39; ) CIRCLED NUMBER THIRTY NINE
+32B5;32B5;32B5;0034 0030;0034 0030; # (㊵; ㊵; ㊵; 40; 40; ) CIRCLED NUMBER FORTY
+32B6;32B6;32B6;0034 0031;0034 0031; # (㊶; ㊶; ㊶; 41; 41; ) CIRCLED NUMBER FORTY ONE
+32B7;32B7;32B7;0034 0032;0034 0032; # (㊷; ㊷; ㊷; 42; 42; ) CIRCLED NUMBER FORTY TWO
+32B8;32B8;32B8;0034 0033;0034 0033; # (㊸; ㊸; ㊸; 43; 43; ) CIRCLED NUMBER FORTY THREE
+32B9;32B9;32B9;0034 0034;0034 0034; # (㊹; ㊹; ㊹; 44; 44; ) CIRCLED NUMBER FORTY FOUR
+32BA;32BA;32BA;0034 0035;0034 0035; # (㊺; ㊺; ㊺; 45; 45; ) CIRCLED NUMBER FORTY FIVE
+32BB;32BB;32BB;0034 0036;0034 0036; # (㊻; ㊻; ㊻; 46; 46; ) CIRCLED NUMBER FORTY SIX
+32BC;32BC;32BC;0034 0037;0034 0037; # (㊼; ㊼; ㊼; 47; 47; ) CIRCLED NUMBER FORTY SEVEN
+32BD;32BD;32BD;0034 0038;0034 0038; # (㊽; ㊽; ㊽; 48; 48; ) CIRCLED NUMBER FORTY EIGHT
+32BE;32BE;32BE;0034 0039;0034 0039; # (㊾; ㊾; ㊾; 49; 49; ) CIRCLED NUMBER FORTY NINE
+32BF;32BF;32BF;0035 0030;0035 0030; # (㊿; ㊿; ㊿; 50; 50; ) CIRCLED NUMBER FIFTY
+32C0;32C0;32C0;0031 6708;0031 6708; # (㋀; ㋀; ㋀; 1月; 1月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+32C1;32C1;32C1;0032 6708;0032 6708; # (ã‹; ã‹; ã‹; 2月; 2月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+32C2;32C2;32C2;0033 6708;0033 6708; # (㋂; ㋂; ㋂; 3月; 3月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+32C3;32C3;32C3;0034 6708;0034 6708; # (㋃; ㋃; ㋃; 4月; 4月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+32C4;32C4;32C4;0035 6708;0035 6708; # (㋄; ㋄; ㋄; 5月; 5月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+32C5;32C5;32C5;0036 6708;0036 6708; # (㋅; ㋅; ㋅; 6月; 6月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+32C6;32C6;32C6;0037 6708;0037 6708; # (㋆; ㋆; ㋆; 7月; 7月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+32C7;32C7;32C7;0038 6708;0038 6708; # (㋇; ㋇; ㋇; 8月; 8月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+32C8;32C8;32C8;0039 6708;0039 6708; # (㋈; ㋈; ㋈; 9月; 9月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+32C9;32C9;32C9;0031 0030 6708;0031 0030 6708; # (㋉; ㋉; ㋉; 10月; 10月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+32CA;32CA;32CA;0031 0031 6708;0031 0031 6708; # (㋊; ㋊; ㋊; 11月; 11月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+32CB;32CB;32CB;0031 0032 6708;0031 0032 6708; # (㋋; ㋋; ㋋; 12月; 12月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+32CC;32CC;32CC;0048 0067;0048 0067; # (㋌; ㋌; ㋌; Hg; Hg; ) SQUARE HG
+32CD;32CD;32CD;0065 0072 0067;0065 0072 0067; # (ã‹; ã‹; ã‹; erg; erg; ) SQUARE ERG
+32CE;32CE;32CE;0065 0056;0065 0056; # (ã‹Ž; ã‹Ž; ã‹Ž; eV; eV; ) SQUARE EV
+32CF;32CF;32CF;004C 0054 0044;004C 0054 0044; # (ã‹; ã‹; ã‹; LTD; LTD; ) LIMITED LIABILITY SIGN
+32D0;32D0;32D0;30A2;30A2; # (ã‹; ã‹; ã‹; ã‚¢; ã‚¢; ) CIRCLED KATAKANA A
+32D1;32D1;32D1;30A4;30A4; # (㋑; ㋑; ㋑; イ; イ; ) CIRCLED KATAKANA I
+32D2;32D2;32D2;30A6;30A6; # (㋒; ㋒; ㋒; ウ; ウ; ) CIRCLED KATAKANA U
+32D3;32D3;32D3;30A8;30A8; # (㋓; ㋓; ㋓; エ; エ; ) CIRCLED KATAKANA E
+32D4;32D4;32D4;30AA;30AA; # (㋔; ㋔; ㋔; オ; オ; ) CIRCLED KATAKANA O
+32D5;32D5;32D5;30AB;30AB; # (ã‹•; ã‹•; ã‹•; ã‚«; ã‚«; ) CIRCLED KATAKANA KA
+32D6;32D6;32D6;30AD;30AD; # (ã‹–; ã‹–; ã‹–; ã‚­; ã‚­; ) CIRCLED KATAKANA KI
+32D7;32D7;32D7;30AF;30AF; # (㋗; ㋗; ㋗; ク; ク; ) CIRCLED KATAKANA KU
+32D8;32D8;32D8;30B1;30B1; # (㋘; ㋘; ㋘; ケ; ケ; ) CIRCLED KATAKANA KE
+32D9;32D9;32D9;30B3;30B3; # (㋙; ㋙; ㋙; コ; コ; ) CIRCLED KATAKANA KO
+32DA;32DA;32DA;30B5;30B5; # (㋚; ㋚; ㋚; サ; サ; ) CIRCLED KATAKANA SA
+32DB;32DB;32DB;30B7;30B7; # (ã‹›; ã‹›; ã‹›; ã‚·; ã‚·; ) CIRCLED KATAKANA SI
+32DC;32DC;32DC;30B9;30B9; # (㋜; ㋜; ㋜; ス; ス; ) CIRCLED KATAKANA SU
+32DD;32DD;32DD;30BB;30BB; # (ã‹; ã‹; ã‹; ã‚»; ã‚»; ) CIRCLED KATAKANA SE
+32DE;32DE;32DE;30BD;30BD; # (㋞; ㋞; ㋞; ソ; ソ; ) CIRCLED KATAKANA SO
+32DF;32DF;32DF;30BF;30BF; # (ã‹Ÿ; ã‹Ÿ; ã‹Ÿ; ã‚¿; ã‚¿; ) CIRCLED KATAKANA TA
+32E0;32E0;32E0;30C1;30C1; # (ã‹ ; ã‹ ; ã‹ ; ãƒ; ãƒ; ) CIRCLED KATAKANA TI
+32E1;32E1;32E1;30C4;30C4; # (㋡; ㋡; ㋡; ツ; ツ; ) CIRCLED KATAKANA TU
+32E2;32E2;32E2;30C6;30C6; # (㋢; ㋢; ㋢; テ; テ; ) CIRCLED KATAKANA TE
+32E3;32E3;32E3;30C8;30C8; # (㋣; ㋣; ㋣; ト; ト; ) CIRCLED KATAKANA TO
+32E4;32E4;32E4;30CA;30CA; # (㋤; ㋤; ㋤; ナ; ナ; ) CIRCLED KATAKANA NA
+32E5;32E5;32E5;30CB;30CB; # (㋥; ㋥; ㋥; ニ; ニ; ) CIRCLED KATAKANA NI
+32E6;32E6;32E6;30CC;30CC; # (㋦; ㋦; ㋦; ヌ; ヌ; ) CIRCLED KATAKANA NU
+32E7;32E7;32E7;30CD;30CD; # (㋧; ㋧; ㋧; ãƒ; ãƒ; ) CIRCLED KATAKANA NE
+32E8;32E8;32E8;30CE;30CE; # (㋨; ㋨; ㋨; ノ; ノ; ) CIRCLED KATAKANA NO
+32E9;32E9;32E9;30CF;30CF; # (ã‹©; ã‹©; ã‹©; ãƒ; ãƒ; ) CIRCLED KATAKANA HA
+32EA;32EA;32EA;30D2;30D2; # (㋪; ㋪; ㋪; ヒ; ヒ; ) CIRCLED KATAKANA HI
+32EB;32EB;32EB;30D5;30D5; # (㋫; ㋫; ㋫; フ; フ; ) CIRCLED KATAKANA HU
+32EC;32EC;32EC;30D8;30D8; # (㋬; ㋬; ㋬; ヘ; ヘ; ) CIRCLED KATAKANA HE
+32ED;32ED;32ED;30DB;30DB; # (㋭; ㋭; ㋭; ホ; ホ; ) CIRCLED KATAKANA HO
+32EE;32EE;32EE;30DE;30DE; # (㋮; ㋮; ㋮; マ; マ; ) CIRCLED KATAKANA MA
+32EF;32EF;32EF;30DF;30DF; # (㋯; ㋯; ㋯; ミ; ミ; ) CIRCLED KATAKANA MI
+32F0;32F0;32F0;30E0;30E0; # (㋰; ㋰; ㋰; ム; ム; ) CIRCLED KATAKANA MU
+32F1;32F1;32F1;30E1;30E1; # (㋱; ㋱; ㋱; メ; メ; ) CIRCLED KATAKANA ME
+32F2;32F2;32F2;30E2;30E2; # (㋲; ㋲; ㋲; モ; モ; ) CIRCLED KATAKANA MO
+32F3;32F3;32F3;30E4;30E4; # (㋳; ㋳; ㋳; ヤ; ヤ; ) CIRCLED KATAKANA YA
+32F4;32F4;32F4;30E6;30E6; # (㋴; ㋴; ㋴; ユ; ユ; ) CIRCLED KATAKANA YU
+32F5;32F5;32F5;30E8;30E8; # (㋵; ㋵; ㋵; ヨ; ヨ; ) CIRCLED KATAKANA YO
+32F6;32F6;32F6;30E9;30E9; # (㋶; ㋶; ㋶; ラ; ラ; ) CIRCLED KATAKANA RA
+32F7;32F7;32F7;30EA;30EA; # (㋷; ㋷; ㋷; リ; リ; ) CIRCLED KATAKANA RI
+32F8;32F8;32F8;30EB;30EB; # (㋸; ㋸; ㋸; ル; ル; ) CIRCLED KATAKANA RU
+32F9;32F9;32F9;30EC;30EC; # (㋹; ㋹; ㋹; レ; レ; ) CIRCLED KATAKANA RE
+32FA;32FA;32FA;30ED;30ED; # (㋺; ㋺; ㋺; ロ; ロ; ) CIRCLED KATAKANA RO
+32FB;32FB;32FB;30EF;30EF; # (㋻; ㋻; ㋻; ワ; ワ; ) CIRCLED KATAKANA WA
+32FC;32FC;32FC;30F0;30F0; # (㋼; ㋼; ㋼; ヰ; ヰ; ) CIRCLED KATAKANA WI
+32FD;32FD;32FD;30F1;30F1; # (㋽; ㋽; ㋽; ヱ; ヱ; ) CIRCLED KATAKANA WE
+32FE;32FE;32FE;30F2;30F2; # (㋾; ㋾; ㋾; ヲ; ヲ; ) CIRCLED KATAKANA WO
+3300;3300;3300;30A2 30D1 30FC 30C8;30A2 30CF 309A 30FC 30C8; # (㌀; ㌀; ㌀; アパート; ã‚¢ãƒâ—Œã‚šãƒ¼ãƒˆ; ) SQUARE APAATO
+3301;3301;3301;30A2 30EB 30D5 30A1;30A2 30EB 30D5 30A1; # (ãŒ; ãŒ; ãŒ; アルファ; アルファ; ) SQUARE ARUHUA
+3302;3302;3302;30A2 30F3 30DA 30A2;30A2 30F3 30D8 309A 30A2; # (㌂; ㌂; ㌂; アンペア; アンヘ◌゚ア; ) SQUARE ANPEA
+3303;3303;3303;30A2 30FC 30EB;30A2 30FC 30EB; # (㌃; ㌃; ㌃; アール; アール; ) SQUARE AARU
+3304;3304;3304;30A4 30CB 30F3 30B0;30A4 30CB 30F3 30AF 3099; # (㌄; ㌄; ㌄; イニング; イニンク◌゙; ) SQUARE ININGU
+3305;3305;3305;30A4 30F3 30C1;30A4 30F3 30C1; # (㌅; ㌅; ㌅; インãƒ; インãƒ; ) SQUARE INTI
+3306;3306;3306;30A6 30A9 30F3;30A6 30A9 30F3; # (㌆; ㌆; ㌆; ウォン; ウォン; ) SQUARE UON
+3307;3307;3307;30A8 30B9 30AF 30FC 30C9;30A8 30B9 30AF 30FC 30C8 3099; # (㌇; ㌇; ㌇; エスクード; エスクート◌゙; ) SQUARE ESUKUUDO
+3308;3308;3308;30A8 30FC 30AB 30FC;30A8 30FC 30AB 30FC; # (㌈; ㌈; ㌈; エーカー; エーカー; ) SQUARE EEKAA
+3309;3309;3309;30AA 30F3 30B9;30AA 30F3 30B9; # (㌉; ㌉; ㌉; オンス; オンス; ) SQUARE ONSU
+330A;330A;330A;30AA 30FC 30E0;30AA 30FC 30E0; # (㌊; ㌊; ㌊; オーム; オーム; ) SQUARE OOMU
+330B;330B;330B;30AB 30A4 30EA;30AB 30A4 30EA; # (㌋; ㌋; ㌋; カイリ; カイリ; ) SQUARE KAIRI
+330C;330C;330C;30AB 30E9 30C3 30C8;30AB 30E9 30C3 30C8; # (㌌; ㌌; ㌌; カラット; カラット; ) SQUARE KARATTO
+330D;330D;330D;30AB 30ED 30EA 30FC;30AB 30ED 30EA 30FC; # (ãŒ; ãŒ; ãŒ; カロリー; カロリー; ) SQUARE KARORII
+330E;330E;330E;30AC 30ED 30F3;30AB 3099 30ED 30F3; # (㌎; ㌎; ㌎; ガロン; カ◌゙ロン; ) SQUARE GARON
+330F;330F;330F;30AC 30F3 30DE;30AB 3099 30F3 30DE; # (ãŒ; ãŒ; ãŒ; ガンマ; カ◌゙ンマ; ) SQUARE GANMA
+3310;3310;3310;30AE 30AC;30AD 3099 30AB 3099; # (ãŒ; ãŒ; ãŒ; ギガ; キ◌゙カ◌゙; ) SQUARE GIGA
+3311;3311;3311;30AE 30CB 30FC;30AD 3099 30CB 30FC; # (㌑; ㌑; ㌑; ギニー; キ◌゙ニー; ) SQUARE GINII
+3312;3312;3312;30AD 30E5 30EA 30FC;30AD 30E5 30EA 30FC; # (㌒; ㌒; ㌒; キュリー; キュリー; ) SQUARE KYURII
+3313;3313;3313;30AE 30EB 30C0 30FC;30AD 3099 30EB 30BF 3099 30FC; # (㌓; ㌓; ㌓; ギルダー; キ◌゙ルタ◌゙ー; ) SQUARE GIRUDAA
+3314;3314;3314;30AD 30ED;30AD 30ED; # (㌔; ㌔; ㌔; キロ; キロ; ) SQUARE KIRO
+3315;3315;3315;30AD 30ED 30B0 30E9 30E0;30AD 30ED 30AF 3099 30E9 30E0; # (㌕; ㌕; ㌕; キログラム; キロク◌゙ラム; ) SQUARE KIROGURAMU
+3316;3316;3316;30AD 30ED 30E1 30FC 30C8 30EB;30AD 30ED 30E1 30FC 30C8 30EB; # (㌖; ㌖; ㌖; キロメートル; キロメートル; ) SQUARE KIROMEETORU
+3317;3317;3317;30AD 30ED 30EF 30C3 30C8;30AD 30ED 30EF 30C3 30C8; # (㌗; ㌗; ㌗; キロワット; キロワット; ) SQUARE KIROWATTO
+3318;3318;3318;30B0 30E9 30E0;30AF 3099 30E9 30E0; # (㌘; ㌘; ㌘; グラム; ク◌゙ラム; ) SQUARE GURAMU
+3319;3319;3319;30B0 30E9 30E0 30C8 30F3;30AF 3099 30E9 30E0 30C8 30F3; # (㌙; ㌙; ㌙; グラムトン; ク◌゙ラムトン; ) SQUARE GURAMUTON
+331A;331A;331A;30AF 30EB 30BC 30A4 30ED;30AF 30EB 30BB 3099 30A4 30ED; # (㌚; ㌚; ㌚; クルゼイロ; クルセ◌゙イロ; ) SQUARE KURUZEIRO
+331B;331B;331B;30AF 30ED 30FC 30CD;30AF 30ED 30FC 30CD; # (㌛; ㌛; ㌛; クローãƒ; クローãƒ; ) SQUARE KUROONE
+331C;331C;331C;30B1 30FC 30B9;30B1 30FC 30B9; # (㌜; ㌜; ㌜; ケース; ケース; ) SQUARE KEESU
+331D;331D;331D;30B3 30EB 30CA;30B3 30EB 30CA; # (ãŒ; ãŒ; ãŒ; コルナ; コルナ; ) SQUARE KORUNA
+331E;331E;331E;30B3 30FC 30DD;30B3 30FC 30DB 309A; # (㌞; ㌞; ㌞; コーãƒ; コーホ◌゚; ) SQUARE KOOPO
+331F;331F;331F;30B5 30A4 30AF 30EB;30B5 30A4 30AF 30EB; # (㌟; ㌟; ㌟; サイクル; サイクル; ) SQUARE SAIKURU
+3320;3320;3320;30B5 30F3 30C1 30FC 30E0;30B5 30F3 30C1 30FC 30E0; # (㌠; ㌠; ㌠; サンãƒãƒ¼ãƒ ; サンãƒãƒ¼ãƒ ; ) SQUARE SANTIIMU
+3321;3321;3321;30B7 30EA 30F3 30B0;30B7 30EA 30F3 30AF 3099; # (㌡; ㌡; ㌡; シリング; シリンク◌゙; ) SQUARE SIRINGU
+3322;3322;3322;30BB 30F3 30C1;30BB 30F3 30C1; # (㌢; ㌢; ㌢; センãƒ; センãƒ; ) SQUARE SENTI
+3323;3323;3323;30BB 30F3 30C8;30BB 30F3 30C8; # (㌣; ㌣; ㌣; セント; セント; ) SQUARE SENTO
+3324;3324;3324;30C0 30FC 30B9;30BF 3099 30FC 30B9; # (㌤; ㌤; ㌤; ダース; タ◌゙ース; ) SQUARE DAASU
+3325;3325;3325;30C7 30B7;30C6 3099 30B7; # (㌥; ㌥; ㌥; デシ; テ◌゙シ; ) SQUARE DESI
+3326;3326;3326;30C9 30EB;30C8 3099 30EB; # (㌦; ㌦; ㌦; ドル; ト◌゙ル; ) SQUARE DORU
+3327;3327;3327;30C8 30F3;30C8 30F3; # (㌧; ㌧; ㌧; トン; トン; ) SQUARE TON
+3328;3328;3328;30CA 30CE;30CA 30CE; # (㌨; ㌨; ㌨; ナノ; ナノ; ) SQUARE NANO
+3329;3329;3329;30CE 30C3 30C8;30CE 30C3 30C8; # (㌩; ㌩; ㌩; ノット; ノット; ) SQUARE NOTTO
+332A;332A;332A;30CF 30A4 30C4;30CF 30A4 30C4; # (㌪; ㌪; ㌪; ãƒã‚¤ãƒ„; ãƒã‚¤ãƒ„; ) SQUARE HAITU
+332B;332B;332B;30D1 30FC 30BB 30F3 30C8;30CF 309A 30FC 30BB 30F3 30C8; # (㌫; ㌫; ㌫; パーセント; ãƒâ—Œã‚šãƒ¼ã‚»ãƒ³ãƒˆ; ) SQUARE PAASENTO
+332C;332C;332C;30D1 30FC 30C4;30CF 309A 30FC 30C4; # (㌬; ㌬; ㌬; パーツ; ãƒâ—Œã‚šãƒ¼ãƒ„; ) SQUARE PAATU
+332D;332D;332D;30D0 30FC 30EC 30EB;30CF 3099 30FC 30EC 30EB; # (㌭; ㌭; ㌭; ãƒãƒ¼ãƒ¬ãƒ«; ãƒâ—Œã‚™ãƒ¼ãƒ¬ãƒ«; ) SQUARE BAARERU
+332E;332E;332E;30D4 30A2 30B9 30C8 30EB;30D2 309A 30A2 30B9 30C8 30EB; # (㌮; ㌮; ㌮; ピアストル; ヒ◌゚アストル; ) SQUARE PIASUTORU
+332F;332F;332F;30D4 30AF 30EB;30D2 309A 30AF 30EB; # (㌯; ㌯; ㌯; ピクル; ヒ◌゚クル; ) SQUARE PIKURU
+3330;3330;3330;30D4 30B3;30D2 309A 30B3; # (㌰; ㌰; ㌰; ピコ; ヒ◌゚コ; ) SQUARE PIKO
+3331;3331;3331;30D3 30EB;30D2 3099 30EB; # (㌱; ㌱; ㌱; ビル; ヒ◌゙ル; ) SQUARE BIRU
+3332;3332;3332;30D5 30A1 30E9 30C3 30C9;30D5 30A1 30E9 30C3 30C8 3099; # (㌲; ㌲; ㌲; ファラッド; ファラット◌゙; ) SQUARE HUARADDO
+3333;3333;3333;30D5 30A3 30FC 30C8;30D5 30A3 30FC 30C8; # (㌳; ㌳; ㌳; フィート; フィート; ) SQUARE HUIITO
+3334;3334;3334;30D6 30C3 30B7 30A7 30EB;30D5 3099 30C3 30B7 30A7 30EB; # (㌴; ㌴; ㌴; ブッシェル; フ◌゙ッシェル; ) SQUARE BUSSYERU
+3335;3335;3335;30D5 30E9 30F3;30D5 30E9 30F3; # (㌵; ㌵; ㌵; フラン; フラン; ) SQUARE HURAN
+3336;3336;3336;30D8 30AF 30BF 30FC 30EB;30D8 30AF 30BF 30FC 30EB; # (㌶; ㌶; ㌶; ヘクタール; ヘクタール; ) SQUARE HEKUTAARU
+3337;3337;3337;30DA 30BD;30D8 309A 30BD; # (㌷; ㌷; ㌷; ペソ; ヘ◌゚ソ; ) SQUARE PESO
+3338;3338;3338;30DA 30CB 30D2;30D8 309A 30CB 30D2; # (㌸; ㌸; ㌸; ペニヒ; ヘ◌゚ニヒ; ) SQUARE PENIHI
+3339;3339;3339;30D8 30EB 30C4;30D8 30EB 30C4; # (㌹; ㌹; ㌹; ヘルツ; ヘルツ; ) SQUARE HERUTU
+333A;333A;333A;30DA 30F3 30B9;30D8 309A 30F3 30B9; # (㌺; ㌺; ㌺; ペンス; ヘ◌゚ンス; ) SQUARE PENSU
+333B;333B;333B;30DA 30FC 30B8;30D8 309A 30FC 30B7 3099; # (㌻; ㌻; ㌻; ページ; ヘ◌゚ーシ◌゙; ) SQUARE PEEZI
+333C;333C;333C;30D9 30FC 30BF;30D8 3099 30FC 30BF; # (㌼; ㌼; ㌼; ベータ; ヘ◌゙ータ; ) SQUARE BEETA
+333D;333D;333D;30DD 30A4 30F3 30C8;30DB 309A 30A4 30F3 30C8; # (㌽; ㌽; ㌽; ãƒã‚¤ãƒ³ãƒˆ; ホ◌゚イント; ) SQUARE POINTO
+333E;333E;333E;30DC 30EB 30C8;30DB 3099 30EB 30C8; # (㌾; ㌾; ㌾; ボルト; ホ◌゙ルト; ) SQUARE BORUTO
+333F;333F;333F;30DB 30F3;30DB 30F3; # (㌿; ㌿; ㌿; ホン; ホン; ) SQUARE HON
+3340;3340;3340;30DD 30F3 30C9;30DB 309A 30F3 30C8 3099; # (ã€; ã€; ã€; ãƒãƒ³ãƒ‰; ホ◌゚ント◌゙; ) SQUARE PONDO
+3341;3341;3341;30DB 30FC 30EB;30DB 30FC 30EB; # (ã; ã; ã; ホール; ホール; ) SQUARE HOORU
+3342;3342;3342;30DB 30FC 30F3;30DB 30FC 30F3; # (ã‚; ã‚; ã‚; ホーン; ホーン; ) SQUARE HOON
+3343;3343;3343;30DE 30A4 30AF 30ED;30DE 30A4 30AF 30ED; # (ãƒ; ãƒ; ãƒ; マイクロ; マイクロ; ) SQUARE MAIKURO
+3344;3344;3344;30DE 30A4 30EB;30DE 30A4 30EB; # (ã„; ã„; ã„; マイル; マイル; ) SQUARE MAIRU
+3345;3345;3345;30DE 30C3 30CF;30DE 30C3 30CF; # (ã…; ã…; ã…; マッãƒ; マッãƒ; ) SQUARE MAHHA
+3346;3346;3346;30DE 30EB 30AF;30DE 30EB 30AF; # (ã†; ã†; ã†; マルク; マルク; ) SQUARE MARUKU
+3347;3347;3347;30DE 30F3 30B7 30E7 30F3;30DE 30F3 30B7 30E7 30F3; # (ã‡; ã‡; ã‡; マンション; マンション; ) SQUARE MANSYON
+3348;3348;3348;30DF 30AF 30ED 30F3;30DF 30AF 30ED 30F3; # (ãˆ; ãˆ; ãˆ; ミクロン; ミクロン; ) SQUARE MIKURON
+3349;3349;3349;30DF 30EA;30DF 30EA; # (ã‰; ã‰; ã‰; ミリ; ミリ; ) SQUARE MIRI
+334A;334A;334A;30DF 30EA 30D0 30FC 30EB;30DF 30EA 30CF 3099 30FC 30EB; # (ãŠ; ãŠ; ãŠ; ミリãƒãƒ¼ãƒ«; ミリãƒâ—Œã‚™ãƒ¼ãƒ«; ) SQUARE MIRIBAARU
+334B;334B;334B;30E1 30AC;30E1 30AB 3099; # (ã‹; ã‹; ã‹; メガ; メカ◌゙; ) SQUARE MEGA
+334C;334C;334C;30E1 30AC 30C8 30F3;30E1 30AB 3099 30C8 30F3; # (ãŒ; ãŒ; ãŒ; メガトン; メカ◌゙トン; ) SQUARE MEGATON
+334D;334D;334D;30E1 30FC 30C8 30EB;30E1 30FC 30C8 30EB; # (ã; ã; ã; メートル; メートル; ) SQUARE MEETORU
+334E;334E;334E;30E4 30FC 30C9;30E4 30FC 30C8 3099; # (ãŽ; ãŽ; ãŽ; ヤード; ヤート◌゙; ) SQUARE YAADO
+334F;334F;334F;30E4 30FC 30EB;30E4 30FC 30EB; # (ã; ã; ã; ヤール; ヤール; ) SQUARE YAARU
+3350;3350;3350;30E6 30A2 30F3;30E6 30A2 30F3; # (ã; ã; ã; ユアン; ユアン; ) SQUARE YUAN
+3351;3351;3351;30EA 30C3 30C8 30EB;30EA 30C3 30C8 30EB; # (ã‘; ã‘; ã‘; リットル; リットル; ) SQUARE RITTORU
+3352;3352;3352;30EA 30E9;30EA 30E9; # (ã’; ã’; ã’; リラ; リラ; ) SQUARE RIRA
+3353;3353;3353;30EB 30D4 30FC;30EB 30D2 309A 30FC; # (ã“; ã“; ã“; ルピー; ルヒ◌゚ー; ) SQUARE RUPII
+3354;3354;3354;30EB 30FC 30D6 30EB;30EB 30FC 30D5 3099 30EB; # (ã”; ã”; ã”; ルーブル; ルーフ◌゙ル; ) SQUARE RUUBURU
+3355;3355;3355;30EC 30E0;30EC 30E0; # (ã•; ã•; ã•; レム; レム; ) SQUARE REMU
+3356;3356;3356;30EC 30F3 30C8 30B2 30F3;30EC 30F3 30C8 30B1 3099 30F3; # (ã–; ã–; ã–; レントゲン; レントケ◌゙ン; ) SQUARE RENTOGEN
+3357;3357;3357;30EF 30C3 30C8;30EF 30C3 30C8; # (ã—; ã—; ã—; ワット; ワット; ) SQUARE WATTO
+3358;3358;3358;0030 70B9;0030 70B9; # (ã˜; ã˜; ã˜; 0点; 0点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+3359;3359;3359;0031 70B9;0031 70B9; # (ã™; ã™; ã™; 1点; 1点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+335A;335A;335A;0032 70B9;0032 70B9; # (ãš; ãš; ãš; 2点; 2点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+335B;335B;335B;0033 70B9;0033 70B9; # (ã›; ã›; ã›; 3点; 3点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+335C;335C;335C;0034 70B9;0034 70B9; # (ãœ; ãœ; ãœ; 4点; 4点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+335D;335D;335D;0035 70B9;0035 70B9; # (ã; ã; ã; 5点; 5点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+335E;335E;335E;0036 70B9;0036 70B9; # (ãž; ãž; ãž; 6点; 6点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+335F;335F;335F;0037 70B9;0037 70B9; # (ãŸ; ãŸ; ãŸ; 7点; 7点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+3360;3360;3360;0038 70B9;0038 70B9; # (ã ; ã ; ã ; 8点; 8点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+3361;3361;3361;0039 70B9;0039 70B9; # (ã¡; ã¡; ã¡; 9点; 9点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+3362;3362;3362;0031 0030 70B9;0031 0030 70B9; # (ã¢; ã¢; ã¢; 10点; 10点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+3363;3363;3363;0031 0031 70B9;0031 0031 70B9; # (ã£; ã£; ã£; 11点; 11点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+3364;3364;3364;0031 0032 70B9;0031 0032 70B9; # (ã¤; ã¤; ã¤; 12点; 12点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+3365;3365;3365;0031 0033 70B9;0031 0033 70B9; # (ã¥; ã¥; ã¥; 13点; 13点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+3366;3366;3366;0031 0034 70B9;0031 0034 70B9; # (ã¦; ã¦; ã¦; 14点; 14点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+3367;3367;3367;0031 0035 70B9;0031 0035 70B9; # (ã§; ã§; ã§; 15点; 15点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+3368;3368;3368;0031 0036 70B9;0031 0036 70B9; # (ã¨; ã¨; ã¨; 16点; 16点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+3369;3369;3369;0031 0037 70B9;0031 0037 70B9; # (ã©; ã©; ã©; 17点; 17点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+336A;336A;336A;0031 0038 70B9;0031 0038 70B9; # (ãª; ãª; ãª; 18点; 18点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+336B;336B;336B;0031 0039 70B9;0031 0039 70B9; # (ã«; ã«; ã«; 19点; 19点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+336C;336C;336C;0032 0030 70B9;0032 0030 70B9; # (ã¬; ã¬; ã¬; 20点; 20点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+336D;336D;336D;0032 0031 70B9;0032 0031 70B9; # (ã­; ã­; ã­; 21点; 21点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+336E;336E;336E;0032 0032 70B9;0032 0032 70B9; # (ã®; ã®; ã®; 22点; 22点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+336F;336F;336F;0032 0033 70B9;0032 0033 70B9; # (ã¯; ã¯; ã¯; 23点; 23点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+3370;3370;3370;0032 0034 70B9;0032 0034 70B9; # (ã°; ã°; ã°; 24点; 24点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+3371;3371;3371;0068 0050 0061;0068 0050 0061; # (ã±; ã±; ã±; hPa; hPa; ) SQUARE HPA
+3372;3372;3372;0064 0061;0064 0061; # (ã²; ã²; ã²; da; da; ) SQUARE DA
+3373;3373;3373;0041 0055;0041 0055; # (ã³; ã³; ã³; AU; AU; ) SQUARE AU
+3374;3374;3374;0062 0061 0072;0062 0061 0072; # (ã´; ã´; ã´; bar; bar; ) SQUARE BAR
+3375;3375;3375;006F 0056;006F 0056; # (ãµ; ãµ; ãµ; oV; oV; ) SQUARE OV
+3376;3376;3376;0070 0063;0070 0063; # (ã¶; ã¶; ã¶; pc; pc; ) SQUARE PC
+3377;3377;3377;0064 006D;0064 006D; # (ã·; ã·; ã·; dm; dm; ) SQUARE DM
+3378;3378;3378;0064 006D 0032;0064 006D 0032; # (ã¸; ã¸; ã¸; dm2; dm2; ) SQUARE DM SQUARED
+3379;3379;3379;0064 006D 0033;0064 006D 0033; # (ã¹; ã¹; ã¹; dm3; dm3; ) SQUARE DM CUBED
+337A;337A;337A;0049 0055;0049 0055; # (ãº; ãº; ãº; IU; IU; ) SQUARE IU
+337B;337B;337B;5E73 6210;5E73 6210; # (ã»; ã»; ã»; å¹³æˆ; å¹³æˆ; ) SQUARE ERA NAME HEISEI
+337C;337C;337C;662D 548C;662D 548C; # (ã¼; ã¼; ã¼; 昭和; 昭和; ) SQUARE ERA NAME SYOUWA
+337D;337D;337D;5927 6B63;5927 6B63; # (ã½; ã½; ã½; 大正; 大正; ) SQUARE ERA NAME TAISYOU
+337E;337E;337E;660E 6CBB;660E 6CBB; # (ã¾; ã¾; ã¾; 明治; 明治; ) SQUARE ERA NAME MEIZI
+337F;337F;337F;682A 5F0F 4F1A 793E;682A 5F0F 4F1A 793E; # (ã¿; ã¿; ã¿; æ ªå¼ä¼šç¤¾; æ ªå¼ä¼šç¤¾; ) SQUARE CORPORATION
+3380;3380;3380;0070 0041;0070 0041; # (㎀; ㎀; ㎀; pA; pA; ) SQUARE PA AMPS
+3381;3381;3381;006E 0041;006E 0041; # (ãŽ; ãŽ; ãŽ; nA; nA; ) SQUARE NA
+3382;3382;3382;03BC 0041;03BC 0041; # (㎂; ㎂; ㎂; μA; μA; ) SQUARE MU A
+3383;3383;3383;006D 0041;006D 0041; # (㎃; ㎃; ㎃; mA; mA; ) SQUARE MA
+3384;3384;3384;006B 0041;006B 0041; # (㎄; ㎄; ㎄; kA; kA; ) SQUARE KA
+3385;3385;3385;004B 0042;004B 0042; # (㎅; ㎅; ㎅; KB; KB; ) SQUARE KB
+3386;3386;3386;004D 0042;004D 0042; # (㎆; ㎆; ㎆; MB; MB; ) SQUARE MB
+3387;3387;3387;0047 0042;0047 0042; # (㎇; ㎇; ㎇; GB; GB; ) SQUARE GB
+3388;3388;3388;0063 0061 006C;0063 0061 006C; # (㎈; ㎈; ㎈; cal; cal; ) SQUARE CAL
+3389;3389;3389;006B 0063 0061 006C;006B 0063 0061 006C; # (㎉; ㎉; ㎉; kcal; kcal; ) SQUARE KCAL
+338A;338A;338A;0070 0046;0070 0046; # (㎊; ㎊; ㎊; pF; pF; ) SQUARE PF
+338B;338B;338B;006E 0046;006E 0046; # (㎋; ㎋; ㎋; nF; nF; ) SQUARE NF
+338C;338C;338C;03BC 0046;03BC 0046; # (㎌; ㎌; ㎌; μF; μF; ) SQUARE MU F
+338D;338D;338D;03BC 0067;03BC 0067; # (ãŽ; ãŽ; ãŽ; μg; μg; ) SQUARE MU G
+338E;338E;338E;006D 0067;006D 0067; # (㎎; ㎎; ㎎; mg; mg; ) SQUARE MG
+338F;338F;338F;006B 0067;006B 0067; # (ãŽ; ãŽ; ãŽ; kg; kg; ) SQUARE KG
+3390;3390;3390;0048 007A;0048 007A; # (ãŽ; ãŽ; ãŽ; Hz; Hz; ) SQUARE HZ
+3391;3391;3391;006B 0048 007A;006B 0048 007A; # (㎑; ㎑; ㎑; kHz; kHz; ) SQUARE KHZ
+3392;3392;3392;004D 0048 007A;004D 0048 007A; # (㎒; ㎒; ㎒; MHz; MHz; ) SQUARE MHZ
+3393;3393;3393;0047 0048 007A;0047 0048 007A; # (㎓; ㎓; ㎓; GHz; GHz; ) SQUARE GHZ
+3394;3394;3394;0054 0048 007A;0054 0048 007A; # (㎔; ㎔; ㎔; THz; THz; ) SQUARE THZ
+3395;3395;3395;03BC 006C;03BC 006C; # (㎕; ㎕; ㎕; μl; μl; ) SQUARE MU L
+3396;3396;3396;006D 006C;006D 006C; # (㎖; ㎖; ㎖; ml; ml; ) SQUARE ML
+3397;3397;3397;0064 006C;0064 006C; # (㎗; ㎗; ㎗; dl; dl; ) SQUARE DL
+3398;3398;3398;006B 006C;006B 006C; # (㎘; ㎘; ㎘; kl; kl; ) SQUARE KL
+3399;3399;3399;0066 006D;0066 006D; # (㎙; ㎙; ㎙; fm; fm; ) SQUARE FM
+339A;339A;339A;006E 006D;006E 006D; # (㎚; ㎚; ㎚; nm; nm; ) SQUARE NM
+339B;339B;339B;03BC 006D;03BC 006D; # (㎛; ㎛; ㎛; μm; μm; ) SQUARE MU M
+339C;339C;339C;006D 006D;006D 006D; # (㎜; ㎜; ㎜; mm; mm; ) SQUARE MM
+339D;339D;339D;0063 006D;0063 006D; # (ãŽ; ãŽ; ãŽ; cm; cm; ) SQUARE CM
+339E;339E;339E;006B 006D;006B 006D; # (㎞; ㎞; ㎞; km; km; ) SQUARE KM
+339F;339F;339F;006D 006D 0032;006D 006D 0032; # (㎟; ㎟; ㎟; mm2; mm2; ) SQUARE MM SQUARED
+33A0;33A0;33A0;0063 006D 0032;0063 006D 0032; # (㎠; ㎠; ㎠; cm2; cm2; ) SQUARE CM SQUARED
+33A1;33A1;33A1;006D 0032;006D 0032; # (㎡; ㎡; ㎡; m2; m2; ) SQUARE M SQUARED
+33A2;33A2;33A2;006B 006D 0032;006B 006D 0032; # (㎢; ㎢; ㎢; km2; km2; ) SQUARE KM SQUARED
+33A3;33A3;33A3;006D 006D 0033;006D 006D 0033; # (㎣; ㎣; ㎣; mm3; mm3; ) SQUARE MM CUBED
+33A4;33A4;33A4;0063 006D 0033;0063 006D 0033; # (㎤; ㎤; ㎤; cm3; cm3; ) SQUARE CM CUBED
+33A5;33A5;33A5;006D 0033;006D 0033; # (㎥; ㎥; ㎥; m3; m3; ) SQUARE M CUBED
+33A6;33A6;33A6;006B 006D 0033;006B 006D 0033; # (㎦; ㎦; ㎦; km3; km3; ) SQUARE KM CUBED
+33A7;33A7;33A7;006D 2215 0073;006D 2215 0073; # (㎧; ㎧; ㎧; m∕s; m∕s; ) SQUARE M OVER S
+33A8;33A8;33A8;006D 2215 0073 0032;006D 2215 0073 0032; # (㎨; ㎨; ㎨; m∕s2; m∕s2; ) SQUARE M OVER S SQUARED
+33A9;33A9;33A9;0050 0061;0050 0061; # (㎩; ㎩; ㎩; Pa; Pa; ) SQUARE PA
+33AA;33AA;33AA;006B 0050 0061;006B 0050 0061; # (㎪; ㎪; ㎪; kPa; kPa; ) SQUARE KPA
+33AB;33AB;33AB;004D 0050 0061;004D 0050 0061; # (㎫; ㎫; ㎫; MPa; MPa; ) SQUARE MPA
+33AC;33AC;33AC;0047 0050 0061;0047 0050 0061; # (㎬; ㎬; ㎬; GPa; GPa; ) SQUARE GPA
+33AD;33AD;33AD;0072 0061 0064;0072 0061 0064; # (㎭; ㎭; ㎭; rad; rad; ) SQUARE RAD
+33AE;33AE;33AE;0072 0061 0064 2215 0073;0072 0061 0064 2215 0073; # (㎮; ㎮; ㎮; rad∕s; rad∕s; ) SQUARE RAD OVER S
+33AF;33AF;33AF;0072 0061 0064 2215 0073 0032;0072 0061 0064 2215 0073 0032; # (㎯; ㎯; ㎯; rad∕s2; rad∕s2; ) SQUARE RAD OVER S SQUARED
+33B0;33B0;33B0;0070 0073;0070 0073; # (㎰; ㎰; ㎰; ps; ps; ) SQUARE PS
+33B1;33B1;33B1;006E 0073;006E 0073; # (㎱; ㎱; ㎱; ns; ns; ) SQUARE NS
+33B2;33B2;33B2;03BC 0073;03BC 0073; # (㎲; ㎲; ㎲; μs; μs; ) SQUARE MU S
+33B3;33B3;33B3;006D 0073;006D 0073; # (㎳; ㎳; ㎳; ms; ms; ) SQUARE MS
+33B4;33B4;33B4;0070 0056;0070 0056; # (㎴; ㎴; ㎴; pV; pV; ) SQUARE PV
+33B5;33B5;33B5;006E 0056;006E 0056; # (㎵; ㎵; ㎵; nV; nV; ) SQUARE NV
+33B6;33B6;33B6;03BC 0056;03BC 0056; # (㎶; ㎶; ㎶; μV; μV; ) SQUARE MU V
+33B7;33B7;33B7;006D 0056;006D 0056; # (㎷; ㎷; ㎷; mV; mV; ) SQUARE MV
+33B8;33B8;33B8;006B 0056;006B 0056; # (㎸; ㎸; ㎸; kV; kV; ) SQUARE KV
+33B9;33B9;33B9;004D 0056;004D 0056; # (㎹; ㎹; ㎹; MV; MV; ) SQUARE MV MEGA
+33BA;33BA;33BA;0070 0057;0070 0057; # (㎺; ㎺; ㎺; pW; pW; ) SQUARE PW
+33BB;33BB;33BB;006E 0057;006E 0057; # (㎻; ㎻; ㎻; nW; nW; ) SQUARE NW
+33BC;33BC;33BC;03BC 0057;03BC 0057; # (㎼; ㎼; ㎼; μW; μW; ) SQUARE MU W
+33BD;33BD;33BD;006D 0057;006D 0057; # (㎽; ㎽; ㎽; mW; mW; ) SQUARE MW
+33BE;33BE;33BE;006B 0057;006B 0057; # (㎾; ㎾; ㎾; kW; kW; ) SQUARE KW
+33BF;33BF;33BF;004D 0057;004D 0057; # (㎿; ㎿; ㎿; MW; MW; ) SQUARE MW MEGA
+33C0;33C0;33C0;006B 03A9;006B 03A9; # (ã€; ã€; ã€; kΩ; kΩ; ) SQUARE K OHM
+33C1;33C1;33C1;004D 03A9;004D 03A9; # (ã; ã; ã; MΩ; MΩ; ) SQUARE M OHM
+33C2;33C2;33C2;0061 002E 006D 002E;0061 002E 006D 002E; # (ã‚; ã‚; ã‚; a.m.; a.m.; ) SQUARE AM
+33C3;33C3;33C3;0042 0071;0042 0071; # (ãƒ; ãƒ; ãƒ; Bq; Bq; ) SQUARE BQ
+33C4;33C4;33C4;0063 0063;0063 0063; # (ã„; ã„; ã„; cc; cc; ) SQUARE CC
+33C5;33C5;33C5;0063 0064;0063 0064; # (ã…; ã…; ã…; cd; cd; ) SQUARE CD
+33C6;33C6;33C6;0043 2215 006B 0067;0043 2215 006B 0067; # (ã†; ã†; ã†; C∕kg; C∕kg; ) SQUARE C OVER KG
+33C7;33C7;33C7;0043 006F 002E;0043 006F 002E; # (ã‡; ã‡; ã‡; Co.; Co.; ) SQUARE CO
+33C8;33C8;33C8;0064 0042;0064 0042; # (ãˆ; ãˆ; ãˆ; dB; dB; ) SQUARE DB
+33C9;33C9;33C9;0047 0079;0047 0079; # (ã‰; ã‰; ã‰; Gy; Gy; ) SQUARE GY
+33CA;33CA;33CA;0068 0061;0068 0061; # (ãŠ; ãŠ; ãŠ; ha; ha; ) SQUARE HA
+33CB;33CB;33CB;0048 0050;0048 0050; # (ã‹; ã‹; ã‹; HP; HP; ) SQUARE HP
+33CC;33CC;33CC;0069 006E;0069 006E; # (ãŒ; ãŒ; ãŒ; in; in; ) SQUARE IN
+33CD;33CD;33CD;004B 004B;004B 004B; # (ã; ã; ã; KK; KK; ) SQUARE KK
+33CE;33CE;33CE;004B 004D;004B 004D; # (ãŽ; ãŽ; ãŽ; KM; KM; ) SQUARE KM CAPITAL
+33CF;33CF;33CF;006B 0074;006B 0074; # (ã; ã; ã; kt; kt; ) SQUARE KT
+33D0;33D0;33D0;006C 006D;006C 006D; # (ã; ã; ã; lm; lm; ) SQUARE LM
+33D1;33D1;33D1;006C 006E;006C 006E; # (ã‘; ã‘; ã‘; ln; ln; ) SQUARE LN
+33D2;33D2;33D2;006C 006F 0067;006C 006F 0067; # (ã’; ã’; ã’; log; log; ) SQUARE LOG
+33D3;33D3;33D3;006C 0078;006C 0078; # (ã“; ã“; ã“; lx; lx; ) SQUARE LX
+33D4;33D4;33D4;006D 0062;006D 0062; # (ã”; ã”; ã”; mb; mb; ) SQUARE MB SMALL
+33D5;33D5;33D5;006D 0069 006C;006D 0069 006C; # (ã•; ã•; ã•; mil; mil; ) SQUARE MIL
+33D6;33D6;33D6;006D 006F 006C;006D 006F 006C; # (ã–; ã–; ã–; mol; mol; ) SQUARE MOL
+33D7;33D7;33D7;0050 0048;0050 0048; # (ã—; ã—; ã—; PH; PH; ) SQUARE PH
+33D8;33D8;33D8;0070 002E 006D 002E;0070 002E 006D 002E; # (ã˜; ã˜; ã˜; p.m.; p.m.; ) SQUARE PM
+33D9;33D9;33D9;0050 0050 004D;0050 0050 004D; # (ã™; ã™; ã™; PPM; PPM; ) SQUARE PPM
+33DA;33DA;33DA;0050 0052;0050 0052; # (ãš; ãš; ãš; PR; PR; ) SQUARE PR
+33DB;33DB;33DB;0073 0072;0073 0072; # (ã›; ã›; ã›; sr; sr; ) SQUARE SR
+33DC;33DC;33DC;0053 0076;0053 0076; # (ãœ; ãœ; ãœ; Sv; Sv; ) SQUARE SV
+33DD;33DD;33DD;0057 0062;0057 0062; # (ã; ã; ã; Wb; Wb; ) SQUARE WB
+33DE;33DE;33DE;0056 2215 006D;0056 2215 006D; # (ãž; ãž; ãž; V∕m; V∕m; ) SQUARE V OVER M
+33DF;33DF;33DF;0041 2215 006D;0041 2215 006D; # (ãŸ; ãŸ; ãŸ; A∕m; A∕m; ) SQUARE A OVER M
+33E0;33E0;33E0;0031 65E5;0031 65E5; # (ã ; ã ; ã ; 1æ—¥; 1æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+33E1;33E1;33E1;0032 65E5;0032 65E5; # (ã¡; ã¡; ã¡; 2æ—¥; 2æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+33E2;33E2;33E2;0033 65E5;0033 65E5; # (ã¢; ã¢; ã¢; 3æ—¥; 3æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+33E3;33E3;33E3;0034 65E5;0034 65E5; # (ã£; ã£; ã£; 4æ—¥; 4æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+33E4;33E4;33E4;0035 65E5;0035 65E5; # (ã¤; ã¤; ã¤; 5æ—¥; 5æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+33E5;33E5;33E5;0036 65E5;0036 65E5; # (ã¥; ã¥; ã¥; 6æ—¥; 6æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+33E6;33E6;33E6;0037 65E5;0037 65E5; # (ã¦; ã¦; ã¦; 7æ—¥; 7æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+33E7;33E7;33E7;0038 65E5;0038 65E5; # (ã§; ã§; ã§; 8æ—¥; 8æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+33E8;33E8;33E8;0039 65E5;0039 65E5; # (ã¨; ã¨; ã¨; 9æ—¥; 9æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+33E9;33E9;33E9;0031 0030 65E5;0031 0030 65E5; # (ã©; ã©; ã©; 10æ—¥; 10æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+33EA;33EA;33EA;0031 0031 65E5;0031 0031 65E5; # (ãª; ãª; ãª; 11æ—¥; 11æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+33EB;33EB;33EB;0031 0032 65E5;0031 0032 65E5; # (ã«; ã«; ã«; 12æ—¥; 12æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+33EC;33EC;33EC;0031 0033 65E5;0031 0033 65E5; # (ã¬; ã¬; ã¬; 13æ—¥; 13æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+33ED;33ED;33ED;0031 0034 65E5;0031 0034 65E5; # (ã­; ã­; ã­; 14æ—¥; 14æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+33EE;33EE;33EE;0031 0035 65E5;0031 0035 65E5; # (ã®; ã®; ã®; 15æ—¥; 15æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+33EF;33EF;33EF;0031 0036 65E5;0031 0036 65E5; # (ã¯; ã¯; ã¯; 16æ—¥; 16æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+33F0;33F0;33F0;0031 0037 65E5;0031 0037 65E5; # (ã°; ã°; ã°; 17æ—¥; 17æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+33F1;33F1;33F1;0031 0038 65E5;0031 0038 65E5; # (ã±; ã±; ã±; 18æ—¥; 18æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+33F2;33F2;33F2;0031 0039 65E5;0031 0039 65E5; # (ã²; ã²; ã²; 19æ—¥; 19æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+33F3;33F3;33F3;0032 0030 65E5;0032 0030 65E5; # (ã³; ã³; ã³; 20æ—¥; 20æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+33F4;33F4;33F4;0032 0031 65E5;0032 0031 65E5; # (ã´; ã´; ã´; 21æ—¥; 21æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+33F5;33F5;33F5;0032 0032 65E5;0032 0032 65E5; # (ãµ; ãµ; ãµ; 22æ—¥; 22æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+33F6;33F6;33F6;0032 0033 65E5;0032 0033 65E5; # (ã¶; ã¶; ã¶; 23æ—¥; 23æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+33F7;33F7;33F7;0032 0034 65E5;0032 0034 65E5; # (ã·; ã·; ã·; 24æ—¥; 24æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+33F8;33F8;33F8;0032 0035 65E5;0032 0035 65E5; # (ã¸; ã¸; ã¸; 25æ—¥; 25æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33F9;33F9;33F9;0032 0036 65E5;0032 0036 65E5; # (ã¹; ã¹; ã¹; 26æ—¥; 26æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33FA;33FA;33FA;0032 0037 65E5;0032 0037 65E5; # (ãº; ãº; ãº; 27æ—¥; 27æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33FB;33FB;33FB;0032 0038 65E5;0032 0038 65E5; # (ã»; ã»; ã»; 28æ—¥; 28æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33FC;33FC;33FC;0032 0039 65E5;0032 0039 65E5; # (ã¼; ã¼; ã¼; 29æ—¥; 29æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33FD;33FD;33FD;0033 0030 65E5;0033 0030 65E5; # (ã½; ã½; ã½; 30æ—¥; 30æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33FE;33FE;33FE;0033 0031 65E5;0033 0031 65E5; # (ã¾; ã¾; ã¾; 31æ—¥; 31æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+33FF;33FF;33FF;0067 0061 006C;0067 0061 006C; # (ã¿; ã¿; ã¿; gal; gal; ) SQUARE GAL
+A69C;A69C;A69C;044A;044A; # (ꚜ; ꚜ; ꚜ; ъ; ъ; ) MODIFIER LETTER CYRILLIC HARD SIGN
+A69D;A69D;A69D;044C;044C; # (êš; êš; êš; ÑŒ; ÑŒ; ) MODIFIER LETTER CYRILLIC SOFT SIGN
+A770;A770;A770;A76F;A76F; # (ê°; ê°; ê°; ê¯; ê¯; ) MODIFIER LETTER US
+A7F8;A7F8;A7F8;0126;0126; # (ꟸ; ꟸ; ꟸ; Ħ; Ħ; ) MODIFIER LETTER CAPITAL H WITH STROKE
+A7F9;A7F9;A7F9;0153;0153; # (ꟹ; ꟹ; ꟹ; œ; œ; ) MODIFIER LETTER SMALL LIGATURE OE
+AB5C;AB5C;AB5C;A727;A727; # (ꭜ; ꭜ; ꭜ; ꜧ; ꜧ; ) MODIFIER LETTER SMALL HENG
+AB5D;AB5D;AB5D;AB37;AB37; # (ê­; ê­; ê­; ꬷ; ꬷ; ) MODIFIER LETTER SMALL L WITH INVERTED LAZY S
+AB5E;AB5E;AB5E;026B;026B; # (ê­ž; ê­ž; ê­ž; É«; É«; ) MODIFIER LETTER SMALL L WITH MIDDLE TILDE
+AB5F;AB5F;AB5F;AB52;AB52; # (ê­Ÿ; ê­Ÿ; ê­Ÿ; ê­’; ê­’; ) MODIFIER LETTER SMALL U WITH LEFT HOOK
+AC00;AC00;1100 1161;AC00;1100 1161; # (가; 가; 가; 가; 가; ) HANGUL SYLLABLE GA
+AC01;AC01;1100 1161 11A8;AC01;1100 1161 11A8; # (ê°; ê°; 각; ê°; 각; ) HANGUL SYLLABLE GAG
+AC02;AC02;1100 1161 11A9;AC02;1100 1161 11A9; # (갂; 갂; 갂; 갂; 갂; ) HANGUL SYLLABLE GAGG
+AC03;AC03;1100 1161 11AA;AC03;1100 1161 11AA; # (갃; 갃; 갃; 갃; 갃; ) HANGUL SYLLABLE GAGS
+AC04;AC04;1100 1161 11AB;AC04;1100 1161 11AB; # (간; 간; 간; 간; 간; ) HANGUL SYLLABLE GAN
+AC05;AC05;1100 1161 11AC;AC05;1100 1161 11AC; # (갅; 갅; 갅; 갅; 갅; ) HANGUL SYLLABLE GANJ
+AC06;AC06;1100 1161 11AD;AC06;1100 1161 11AD; # (갆; 갆; 갆; 갆; 갆; ) HANGUL SYLLABLE GANH
+AC07;AC07;1100 1161 11AE;AC07;1100 1161 11AE; # (갇; 갇; 갇; 갇; 갇; ) HANGUL SYLLABLE GAD
+AC08;AC08;1100 1161 11AF;AC08;1100 1161 11AF; # (갈; 갈; 갈; 갈; 갈; ) HANGUL SYLLABLE GAL
+AC09;AC09;1100 1161 11B0;AC09;1100 1161 11B0; # (갉; 갉; 갉; 갉; 갉; ) HANGUL SYLLABLE GALG
+AC0A;AC0A;1100 1161 11B1;AC0A;1100 1161 11B1; # (갊; 갊; 갊; 갊; 갊; ) HANGUL SYLLABLE GALM
+AC0B;AC0B;1100 1161 11B2;AC0B;1100 1161 11B2; # (갋; 갋; 갋; 갋; 갋; ) HANGUL SYLLABLE GALB
+AC0C;AC0C;1100 1161 11B3;AC0C;1100 1161 11B3; # (갌; 갌; 갌; 갌; 갌; ) HANGUL SYLLABLE GALS
+AC0D;AC0D;1100 1161 11B4;AC0D;1100 1161 11B4; # (ê°; ê°; 갍; ê°; 갍; ) HANGUL SYLLABLE GALT
+AC0E;AC0E;1100 1161 11B5;AC0E;1100 1161 11B5; # (갎; 갎; 갎; 갎; 갎; ) HANGUL SYLLABLE GALP
+AC0F;AC0F;1100 1161 11B6;AC0F;1100 1161 11B6; # (ê°; ê°; 갏; ê°; 갏; ) HANGUL SYLLABLE GALH
+AC10;AC10;1100 1161 11B7;AC10;1100 1161 11B7; # (ê°; ê°; 감; ê°; 감; ) HANGUL SYLLABLE GAM
+AC11;AC11;1100 1161 11B8;AC11;1100 1161 11B8; # (갑; 갑; 갑; 갑; 갑; ) HANGUL SYLLABLE GAB
+AC12;AC12;1100 1161 11B9;AC12;1100 1161 11B9; # (값; 값; 값; 값; 값; ) HANGUL SYLLABLE GABS
+AC13;AC13;1100 1161 11BA;AC13;1100 1161 11BA; # (갓; 갓; 갓; 갓; 갓; ) HANGUL SYLLABLE GAS
+AC14;AC14;1100 1161 11BB;AC14;1100 1161 11BB; # (갔; 갔; 갔; 갔; 갔; ) HANGUL SYLLABLE GASS
+AC15;AC15;1100 1161 11BC;AC15;1100 1161 11BC; # (강; 강; 강; 강; 강; ) HANGUL SYLLABLE GANG
+AC16;AC16;1100 1161 11BD;AC16;1100 1161 11BD; # (갖; 갖; 갖; 갖; 갖; ) HANGUL SYLLABLE GAJ
+AC17;AC17;1100 1161 11BE;AC17;1100 1161 11BE; # (갗; 갗; 갗; 갗; 갗; ) HANGUL SYLLABLE GAC
+AC18;AC18;1100 1161 11BF;AC18;1100 1161 11BF; # (갘; 갘; 갘; 갘; 갘; ) HANGUL SYLLABLE GAK
+AC19;AC19;1100 1161 11C0;AC19;1100 1161 11C0; # (같; 같; 같; 같; 같; ) HANGUL SYLLABLE GAT
+AC1A;AC1A;1100 1161 11C1;AC1A;1100 1161 11C1; # (ê°š; ê°š; 가á‡; ê°š; 가á‡; ) HANGUL SYLLABLE GAP
+AC1B;AC1B;1100 1161 11C2;AC1B;1100 1161 11C2; # (갛; 갛; 갛; 갛; 갛; ) HANGUL SYLLABLE GAH
+AC1C;AC1C;1100 1162;AC1C;1100 1162; # (개; 개; 개; 개; 개; ) HANGUL SYLLABLE GAE
+AC1D;AC1D;1100 1162 11A8;AC1D;1100 1162 11A8; # (ê°; ê°; 객; ê°; 객; ) HANGUL SYLLABLE GAEG
+AC1E;AC1E;1100 1162 11A9;AC1E;1100 1162 11A9; # (갞; 갞; 갞; 갞; 갞; ) HANGUL SYLLABLE GAEGG
+AC1F;AC1F;1100 1162 11AA;AC1F;1100 1162 11AA; # (갟; 갟; 갟; 갟; 갟; ) HANGUL SYLLABLE GAEGS
+AC20;AC20;1100 1162 11AB;AC20;1100 1162 11AB; # (갠; 갠; 갠; 갠; 갠; ) HANGUL SYLLABLE GAEN
+AC21;AC21;1100 1162 11AC;AC21;1100 1162 11AC; # (갡; 갡; 갡; 갡; 갡; ) HANGUL SYLLABLE GAENJ
+AC22;AC22;1100 1162 11AD;AC22;1100 1162 11AD; # (갢; 갢; 갢; 갢; 갢; ) HANGUL SYLLABLE GAENH
+AC23;AC23;1100 1162 11AE;AC23;1100 1162 11AE; # (갣; 갣; 갣; 갣; 갣; ) HANGUL SYLLABLE GAED
+AC24;AC24;1100 1162 11AF;AC24;1100 1162 11AF; # (갤; 갤; 갤; 갤; 갤; ) HANGUL SYLLABLE GAEL
+AC25;AC25;1100 1162 11B0;AC25;1100 1162 11B0; # (갥; 갥; 갥; 갥; 갥; ) HANGUL SYLLABLE GAELG
+AC26;AC26;1100 1162 11B1;AC26;1100 1162 11B1; # (갦; 갦; 갦; 갦; 갦; ) HANGUL SYLLABLE GAELM
+AC27;AC27;1100 1162 11B2;AC27;1100 1162 11B2; # (갧; 갧; 갧; 갧; 갧; ) HANGUL SYLLABLE GAELB
+AC28;AC28;1100 1162 11B3;AC28;1100 1162 11B3; # (갨; 갨; 갨; 갨; 갨; ) HANGUL SYLLABLE GAELS
+AC29;AC29;1100 1162 11B4;AC29;1100 1162 11B4; # (갩; 갩; 갩; 갩; 갩; ) HANGUL SYLLABLE GAELT
+AC2A;AC2A;1100 1162 11B5;AC2A;1100 1162 11B5; # (갪; 갪; 갪; 갪; 갪; ) HANGUL SYLLABLE GAELP
+AC2B;AC2B;1100 1162 11B6;AC2B;1100 1162 11B6; # (갫; 갫; 갫; 갫; 갫; ) HANGUL SYLLABLE GAELH
+AC2C;AC2C;1100 1162 11B7;AC2C;1100 1162 11B7; # (갬; 갬; 갬; 갬; 갬; ) HANGUL SYLLABLE GAEM
+AC2D;AC2D;1100 1162 11B8;AC2D;1100 1162 11B8; # (갭; 갭; 갭; 갭; 갭; ) HANGUL SYLLABLE GAEB
+AC2E;AC2E;1100 1162 11B9;AC2E;1100 1162 11B9; # (갮; 갮; 갮; 갮; 갮; ) HANGUL SYLLABLE GAEBS
+AC2F;AC2F;1100 1162 11BA;AC2F;1100 1162 11BA; # (갯; 갯; 갯; 갯; 갯; ) HANGUL SYLLABLE GAES
+AC30;AC30;1100 1162 11BB;AC30;1100 1162 11BB; # (갰; 갰; 갰; 갰; 갰; ) HANGUL SYLLABLE GAESS
+AC31;AC31;1100 1162 11BC;AC31;1100 1162 11BC; # (갱; 갱; 갱; 갱; 갱; ) HANGUL SYLLABLE GAENG
+AC32;AC32;1100 1162 11BD;AC32;1100 1162 11BD; # (갲; 갲; 갲; 갲; 갲; ) HANGUL SYLLABLE GAEJ
+AC33;AC33;1100 1162 11BE;AC33;1100 1162 11BE; # (갳; 갳; 갳; 갳; 갳; ) HANGUL SYLLABLE GAEC
+AC34;AC34;1100 1162 11BF;AC34;1100 1162 11BF; # (갴; 갴; 갴; 갴; 갴; ) HANGUL SYLLABLE GAEK
+AC35;AC35;1100 1162 11C0;AC35;1100 1162 11C0; # (갵; 갵; 갵; 갵; 갵; ) HANGUL SYLLABLE GAET
+AC36;AC36;1100 1162 11C1;AC36;1100 1162 11C1; # (ê°¶; ê°¶; 개á‡; ê°¶; 개á‡; ) HANGUL SYLLABLE GAEP
+AC37;AC37;1100 1162 11C2;AC37;1100 1162 11C2; # (갷; 갷; 갷; 갷; 갷; ) HANGUL SYLLABLE GAEH
+AC38;AC38;1100 1163;AC38;1100 1163; # (갸; 갸; 갸; 갸; 갸; ) HANGUL SYLLABLE GYA
+AC39;AC39;1100 1163 11A8;AC39;1100 1163 11A8; # (갹; 갹; 갹; 갹; 갹; ) HANGUL SYLLABLE GYAG
+AC3A;AC3A;1100 1163 11A9;AC3A;1100 1163 11A9; # (갺; 갺; 갺; 갺; 갺; ) HANGUL SYLLABLE GYAGG
+AC3B;AC3B;1100 1163 11AA;AC3B;1100 1163 11AA; # (갻; 갻; 갻; 갻; 갻; ) HANGUL SYLLABLE GYAGS
+AC3C;AC3C;1100 1163 11AB;AC3C;1100 1163 11AB; # (갼; 갼; 갼; 갼; 갼; ) HANGUL SYLLABLE GYAN
+AC3D;AC3D;1100 1163 11AC;AC3D;1100 1163 11AC; # (갽; 갽; 갽; 갽; 갽; ) HANGUL SYLLABLE GYANJ
+AC3E;AC3E;1100 1163 11AD;AC3E;1100 1163 11AD; # (갾; 갾; 갾; 갾; 갾; ) HANGUL SYLLABLE GYANH
+AC3F;AC3F;1100 1163 11AE;AC3F;1100 1163 11AE; # (갿; 갿; 갿; 갿; 갿; ) HANGUL SYLLABLE GYAD
+AC40;AC40;1100 1163 11AF;AC40;1100 1163 11AF; # (걀; 걀; 걀; 걀; 걀; ) HANGUL SYLLABLE GYAL
+AC41;AC41;1100 1163 11B0;AC41;1100 1163 11B0; # (ê±; ê±; 걁; ê±; 걁; ) HANGUL SYLLABLE GYALG
+AC42;AC42;1100 1163 11B1;AC42;1100 1163 11B1; # (걂; 걂; 걂; 걂; 걂; ) HANGUL SYLLABLE GYALM
+AC43;AC43;1100 1163 11B2;AC43;1100 1163 11B2; # (걃; 걃; 걃; 걃; 걃; ) HANGUL SYLLABLE GYALB
+AC44;AC44;1100 1163 11B3;AC44;1100 1163 11B3; # (걄; 걄; 걄; 걄; 걄; ) HANGUL SYLLABLE GYALS
+AC45;AC45;1100 1163 11B4;AC45;1100 1163 11B4; # (걅; 걅; 걅; 걅; 걅; ) HANGUL SYLLABLE GYALT
+AC46;AC46;1100 1163 11B5;AC46;1100 1163 11B5; # (걆; 걆; 걆; 걆; 걆; ) HANGUL SYLLABLE GYALP
+AC47;AC47;1100 1163 11B6;AC47;1100 1163 11B6; # (걇; 걇; 걇; 걇; 걇; ) HANGUL SYLLABLE GYALH
+AC48;AC48;1100 1163 11B7;AC48;1100 1163 11B7; # (걈; 걈; 걈; 걈; 걈; ) HANGUL SYLLABLE GYAM
+AC49;AC49;1100 1163 11B8;AC49;1100 1163 11B8; # (걉; 걉; 걉; 걉; 걉; ) HANGUL SYLLABLE GYAB
+AC4A;AC4A;1100 1163 11B9;AC4A;1100 1163 11B9; # (걊; 걊; 걊; 걊; 걊; ) HANGUL SYLLABLE GYABS
+AC4B;AC4B;1100 1163 11BA;AC4B;1100 1163 11BA; # (걋; 걋; 걋; 걋; 걋; ) HANGUL SYLLABLE GYAS
+AC4C;AC4C;1100 1163 11BB;AC4C;1100 1163 11BB; # (걌; 걌; 걌; 걌; 걌; ) HANGUL SYLLABLE GYASS
+AC4D;AC4D;1100 1163 11BC;AC4D;1100 1163 11BC; # (ê±; ê±; 걍; ê±; 걍; ) HANGUL SYLLABLE GYANG
+AC4E;AC4E;1100 1163 11BD;AC4E;1100 1163 11BD; # (걎; 걎; 걎; 걎; 걎; ) HANGUL SYLLABLE GYAJ
+AC4F;AC4F;1100 1163 11BE;AC4F;1100 1163 11BE; # (ê±; ê±; 걏; ê±; 걏; ) HANGUL SYLLABLE GYAC
+AC50;AC50;1100 1163 11BF;AC50;1100 1163 11BF; # (ê±; ê±; 걐; ê±; 걐; ) HANGUL SYLLABLE GYAK
+AC51;AC51;1100 1163 11C0;AC51;1100 1163 11C0; # (걑; 걑; 걑; 걑; 걑; ) HANGUL SYLLABLE GYAT
+AC52;AC52;1100 1163 11C1;AC52;1100 1163 11C1; # (ê±’; ê±’; 갸á‡; ê±’; 갸á‡; ) HANGUL SYLLABLE GYAP
+AC53;AC53;1100 1163 11C2;AC53;1100 1163 11C2; # (걓; 걓; 걓; 걓; 걓; ) HANGUL SYLLABLE GYAH
+AC54;AC54;1100 1164;AC54;1100 1164; # (걔; 걔; 걔; 걔; 걔; ) HANGUL SYLLABLE GYAE
+AC55;AC55;1100 1164 11A8;AC55;1100 1164 11A8; # (걕; 걕; 걕; 걕; 걕; ) HANGUL SYLLABLE GYAEG
+AC56;AC56;1100 1164 11A9;AC56;1100 1164 11A9; # (걖; 걖; 걖; 걖; 걖; ) HANGUL SYLLABLE GYAEGG
+AC57;AC57;1100 1164 11AA;AC57;1100 1164 11AA; # (걗; 걗; 걗; 걗; 걗; ) HANGUL SYLLABLE GYAEGS
+AC58;AC58;1100 1164 11AB;AC58;1100 1164 11AB; # (걘; 걘; 걘; 걘; 걘; ) HANGUL SYLLABLE GYAEN
+AC59;AC59;1100 1164 11AC;AC59;1100 1164 11AC; # (걙; 걙; 걙; 걙; 걙; ) HANGUL SYLLABLE GYAENJ
+AC5A;AC5A;1100 1164 11AD;AC5A;1100 1164 11AD; # (걚; 걚; 걚; 걚; 걚; ) HANGUL SYLLABLE GYAENH
+AC5B;AC5B;1100 1164 11AE;AC5B;1100 1164 11AE; # (걛; 걛; 걛; 걛; 걛; ) HANGUL SYLLABLE GYAED
+AC5C;AC5C;1100 1164 11AF;AC5C;1100 1164 11AF; # (걜; 걜; 걜; 걜; 걜; ) HANGUL SYLLABLE GYAEL
+AC5D;AC5D;1100 1164 11B0;AC5D;1100 1164 11B0; # (ê±; ê±; 걝; ê±; 걝; ) HANGUL SYLLABLE GYAELG
+AC5E;AC5E;1100 1164 11B1;AC5E;1100 1164 11B1; # (걞; 걞; 걞; 걞; 걞; ) HANGUL SYLLABLE GYAELM
+AC5F;AC5F;1100 1164 11B2;AC5F;1100 1164 11B2; # (걟; 걟; 걟; 걟; 걟; ) HANGUL SYLLABLE GYAELB
+AC60;AC60;1100 1164 11B3;AC60;1100 1164 11B3; # (걠; 걠; 걠; 걠; 걠; ) HANGUL SYLLABLE GYAELS
+AC61;AC61;1100 1164 11B4;AC61;1100 1164 11B4; # (걡; 걡; 걡; 걡; 걡; ) HANGUL SYLLABLE GYAELT
+AC62;AC62;1100 1164 11B5;AC62;1100 1164 11B5; # (걢; 걢; 걢; 걢; 걢; ) HANGUL SYLLABLE GYAELP
+AC63;AC63;1100 1164 11B6;AC63;1100 1164 11B6; # (걣; 걣; 걣; 걣; 걣; ) HANGUL SYLLABLE GYAELH
+AC64;AC64;1100 1164 11B7;AC64;1100 1164 11B7; # (걤; 걤; 걤; 걤; 걤; ) HANGUL SYLLABLE GYAEM
+AC65;AC65;1100 1164 11B8;AC65;1100 1164 11B8; # (걥; 걥; 걥; 걥; 걥; ) HANGUL SYLLABLE GYAEB
+AC66;AC66;1100 1164 11B9;AC66;1100 1164 11B9; # (걦; 걦; 걦; 걦; 걦; ) HANGUL SYLLABLE GYAEBS
+AC67;AC67;1100 1164 11BA;AC67;1100 1164 11BA; # (걧; 걧; 걧; 걧; 걧; ) HANGUL SYLLABLE GYAES
+AC68;AC68;1100 1164 11BB;AC68;1100 1164 11BB; # (걨; 걨; 걨; 걨; 걨; ) HANGUL SYLLABLE GYAESS
+AC69;AC69;1100 1164 11BC;AC69;1100 1164 11BC; # (걩; 걩; 걩; 걩; 걩; ) HANGUL SYLLABLE GYAENG
+AC6A;AC6A;1100 1164 11BD;AC6A;1100 1164 11BD; # (걪; 걪; 걪; 걪; 걪; ) HANGUL SYLLABLE GYAEJ
+AC6B;AC6B;1100 1164 11BE;AC6B;1100 1164 11BE; # (걫; 걫; 걫; 걫; 걫; ) HANGUL SYLLABLE GYAEC
+AC6C;AC6C;1100 1164 11BF;AC6C;1100 1164 11BF; # (걬; 걬; 걬; 걬; 걬; ) HANGUL SYLLABLE GYAEK
+AC6D;AC6D;1100 1164 11C0;AC6D;1100 1164 11C0; # (걭; 걭; 걭; 걭; 걭; ) HANGUL SYLLABLE GYAET
+AC6E;AC6E;1100 1164 11C1;AC6E;1100 1164 11C1; # (ê±®; ê±®; 걔á‡; ê±®; 걔á‡; ) HANGUL SYLLABLE GYAEP
+AC6F;AC6F;1100 1164 11C2;AC6F;1100 1164 11C2; # (걯; 걯; 걯; 걯; 걯; ) HANGUL SYLLABLE GYAEH
+AC70;AC70;1100 1165;AC70;1100 1165; # (거; 거; 거; 거; 거; ) HANGUL SYLLABLE GEO
+AC71;AC71;1100 1165 11A8;AC71;1100 1165 11A8; # (걱; 걱; 걱; 걱; 걱; ) HANGUL SYLLABLE GEOG
+AC72;AC72;1100 1165 11A9;AC72;1100 1165 11A9; # (걲; 걲; 걲; 걲; 걲; ) HANGUL SYLLABLE GEOGG
+AC73;AC73;1100 1165 11AA;AC73;1100 1165 11AA; # (걳; 걳; 걳; 걳; 걳; ) HANGUL SYLLABLE GEOGS
+AC74;AC74;1100 1165 11AB;AC74;1100 1165 11AB; # (건; 건; 건; 건; 건; ) HANGUL SYLLABLE GEON
+AC75;AC75;1100 1165 11AC;AC75;1100 1165 11AC; # (걵; 걵; 걵; 걵; 걵; ) HANGUL SYLLABLE GEONJ
+AC76;AC76;1100 1165 11AD;AC76;1100 1165 11AD; # (걶; 걶; 걶; 걶; 걶; ) HANGUL SYLLABLE GEONH
+AC77;AC77;1100 1165 11AE;AC77;1100 1165 11AE; # (걷; 걷; 걷; 걷; 걷; ) HANGUL SYLLABLE GEOD
+AC78;AC78;1100 1165 11AF;AC78;1100 1165 11AF; # (걸; 걸; 걸; 걸; 걸; ) HANGUL SYLLABLE GEOL
+AC79;AC79;1100 1165 11B0;AC79;1100 1165 11B0; # (걹; 걹; 걹; 걹; 걹; ) HANGUL SYLLABLE GEOLG
+AC7A;AC7A;1100 1165 11B1;AC7A;1100 1165 11B1; # (걺; 걺; 걺; 걺; 걺; ) HANGUL SYLLABLE GEOLM
+AC7B;AC7B;1100 1165 11B2;AC7B;1100 1165 11B2; # (걻; 걻; 걻; 걻; 걻; ) HANGUL SYLLABLE GEOLB
+AC7C;AC7C;1100 1165 11B3;AC7C;1100 1165 11B3; # (걼; 걼; 걼; 걼; 걼; ) HANGUL SYLLABLE GEOLS
+AC7D;AC7D;1100 1165 11B4;AC7D;1100 1165 11B4; # (걽; 걽; 걽; 걽; 걽; ) HANGUL SYLLABLE GEOLT
+AC7E;AC7E;1100 1165 11B5;AC7E;1100 1165 11B5; # (걾; 걾; 걾; 걾; 걾; ) HANGUL SYLLABLE GEOLP
+AC7F;AC7F;1100 1165 11B6;AC7F;1100 1165 11B6; # (걿; 걿; 걿; 걿; 걿; ) HANGUL SYLLABLE GEOLH
+AC80;AC80;1100 1165 11B7;AC80;1100 1165 11B7; # (검; 검; 검; 검; 검; ) HANGUL SYLLABLE GEOM
+AC81;AC81;1100 1165 11B8;AC81;1100 1165 11B8; # (ê²; ê²; 겁; ê²; 겁; ) HANGUL SYLLABLE GEOB
+AC82;AC82;1100 1165 11B9;AC82;1100 1165 11B9; # (겂; 겂; 겂; 겂; 겂; ) HANGUL SYLLABLE GEOBS
+AC83;AC83;1100 1165 11BA;AC83;1100 1165 11BA; # (것; 것; 것; 것; 것; ) HANGUL SYLLABLE GEOS
+AC84;AC84;1100 1165 11BB;AC84;1100 1165 11BB; # (겄; 겄; 겄; 겄; 겄; ) HANGUL SYLLABLE GEOSS
+AC85;AC85;1100 1165 11BC;AC85;1100 1165 11BC; # (겅; 겅; 겅; 겅; 겅; ) HANGUL SYLLABLE GEONG
+AC86;AC86;1100 1165 11BD;AC86;1100 1165 11BD; # (겆; 겆; 겆; 겆; 겆; ) HANGUL SYLLABLE GEOJ
+AC87;AC87;1100 1165 11BE;AC87;1100 1165 11BE; # (겇; 겇; 겇; 겇; 겇; ) HANGUL SYLLABLE GEOC
+AC88;AC88;1100 1165 11BF;AC88;1100 1165 11BF; # (겈; 겈; 겈; 겈; 겈; ) HANGUL SYLLABLE GEOK
+AC89;AC89;1100 1165 11C0;AC89;1100 1165 11C0; # (겉; 겉; 겉; 겉; 겉; ) HANGUL SYLLABLE GEOT
+AC8A;AC8A;1100 1165 11C1;AC8A;1100 1165 11C1; # (겊; 겊; 거á‡; 겊; 거á‡; ) HANGUL SYLLABLE GEOP
+AC8B;AC8B;1100 1165 11C2;AC8B;1100 1165 11C2; # (겋; 겋; 겋; 겋; 겋; ) HANGUL SYLLABLE GEOH
+AC8C;AC8C;1100 1166;AC8C;1100 1166; # (게; 게; 게; 게; 게; ) HANGUL SYLLABLE GE
+AC8D;AC8D;1100 1166 11A8;AC8D;1100 1166 11A8; # (ê²; ê²; 겍; ê²; 겍; ) HANGUL SYLLABLE GEG
+AC8E;AC8E;1100 1166 11A9;AC8E;1100 1166 11A9; # (겎; 겎; 겎; 겎; 겎; ) HANGUL SYLLABLE GEGG
+AC8F;AC8F;1100 1166 11AA;AC8F;1100 1166 11AA; # (ê²; ê²; 겏; ê²; 겏; ) HANGUL SYLLABLE GEGS
+AC90;AC90;1100 1166 11AB;AC90;1100 1166 11AB; # (ê²; ê²; 겐; ê²; 겐; ) HANGUL SYLLABLE GEN
+AC91;AC91;1100 1166 11AC;AC91;1100 1166 11AC; # (겑; 겑; 겑; 겑; 겑; ) HANGUL SYLLABLE GENJ
+AC92;AC92;1100 1166 11AD;AC92;1100 1166 11AD; # (겒; 겒; 겒; 겒; 겒; ) HANGUL SYLLABLE GENH
+AC93;AC93;1100 1166 11AE;AC93;1100 1166 11AE; # (겓; 겓; 겓; 겓; 겓; ) HANGUL SYLLABLE GED
+AC94;AC94;1100 1166 11AF;AC94;1100 1166 11AF; # (겔; 겔; 겔; 겔; 겔; ) HANGUL SYLLABLE GEL
+AC95;AC95;1100 1166 11B0;AC95;1100 1166 11B0; # (겕; 겕; 겕; 겕; 겕; ) HANGUL SYLLABLE GELG
+AC96;AC96;1100 1166 11B1;AC96;1100 1166 11B1; # (겖; 겖; 겖; 겖; 겖; ) HANGUL SYLLABLE GELM
+AC97;AC97;1100 1166 11B2;AC97;1100 1166 11B2; # (겗; 겗; 겗; 겗; 겗; ) HANGUL SYLLABLE GELB
+AC98;AC98;1100 1166 11B3;AC98;1100 1166 11B3; # (겘; 겘; 겘; 겘; 겘; ) HANGUL SYLLABLE GELS
+AC99;AC99;1100 1166 11B4;AC99;1100 1166 11B4; # (겙; 겙; 겙; 겙; 겙; ) HANGUL SYLLABLE GELT
+AC9A;AC9A;1100 1166 11B5;AC9A;1100 1166 11B5; # (겚; 겚; 겚; 겚; 겚; ) HANGUL SYLLABLE GELP
+AC9B;AC9B;1100 1166 11B6;AC9B;1100 1166 11B6; # (겛; 겛; 겛; 겛; 겛; ) HANGUL SYLLABLE GELH
+AC9C;AC9C;1100 1166 11B7;AC9C;1100 1166 11B7; # (겜; 겜; 겜; 겜; 겜; ) HANGUL SYLLABLE GEM
+AC9D;AC9D;1100 1166 11B8;AC9D;1100 1166 11B8; # (ê²; ê²; 겝; ê²; 겝; ) HANGUL SYLLABLE GEB
+AC9E;AC9E;1100 1166 11B9;AC9E;1100 1166 11B9; # (겞; 겞; 겞; 겞; 겞; ) HANGUL SYLLABLE GEBS
+AC9F;AC9F;1100 1166 11BA;AC9F;1100 1166 11BA; # (겟; 겟; 겟; 겟; 겟; ) HANGUL SYLLABLE GES
+ACA0;ACA0;1100 1166 11BB;ACA0;1100 1166 11BB; # (겠; 겠; 겠; 겠; 겠; ) HANGUL SYLLABLE GESS
+ACA1;ACA1;1100 1166 11BC;ACA1;1100 1166 11BC; # (겡; 겡; 겡; 겡; 겡; ) HANGUL SYLLABLE GENG
+ACA2;ACA2;1100 1166 11BD;ACA2;1100 1166 11BD; # (겢; 겢; 겢; 겢; 겢; ) HANGUL SYLLABLE GEJ
+ACA3;ACA3;1100 1166 11BE;ACA3;1100 1166 11BE; # (겣; 겣; 겣; 겣; 겣; ) HANGUL SYLLABLE GEC
+ACA4;ACA4;1100 1166 11BF;ACA4;1100 1166 11BF; # (겤; 겤; 겤; 겤; 겤; ) HANGUL SYLLABLE GEK
+ACA5;ACA5;1100 1166 11C0;ACA5;1100 1166 11C0; # (겥; 겥; 겥; 겥; 겥; ) HANGUL SYLLABLE GET
+ACA6;ACA6;1100 1166 11C1;ACA6;1100 1166 11C1; # (겦; 겦; 게á‡; 겦; 게á‡; ) HANGUL SYLLABLE GEP
+ACA7;ACA7;1100 1166 11C2;ACA7;1100 1166 11C2; # (겧; 겧; 겧; 겧; 겧; ) HANGUL SYLLABLE GEH
+ACA8;ACA8;1100 1167;ACA8;1100 1167; # (겨; 겨; 겨; 겨; 겨; ) HANGUL SYLLABLE GYEO
+ACA9;ACA9;1100 1167 11A8;ACA9;1100 1167 11A8; # (격; 격; 격; 격; 격; ) HANGUL SYLLABLE GYEOG
+ACAA;ACAA;1100 1167 11A9;ACAA;1100 1167 11A9; # (겪; 겪; 겪; 겪; 겪; ) HANGUL SYLLABLE GYEOGG
+ACAB;ACAB;1100 1167 11AA;ACAB;1100 1167 11AA; # (겫; 겫; 겫; 겫; 겫; ) HANGUL SYLLABLE GYEOGS
+ACAC;ACAC;1100 1167 11AB;ACAC;1100 1167 11AB; # (견; 견; 견; 견; 견; ) HANGUL SYLLABLE GYEON
+ACAD;ACAD;1100 1167 11AC;ACAD;1100 1167 11AC; # (겭; 겭; 겭; 겭; 겭; ) HANGUL SYLLABLE GYEONJ
+ACAE;ACAE;1100 1167 11AD;ACAE;1100 1167 11AD; # (겮; 겮; 겮; 겮; 겮; ) HANGUL SYLLABLE GYEONH
+ACAF;ACAF;1100 1167 11AE;ACAF;1100 1167 11AE; # (겯; 겯; 겯; 겯; 겯; ) HANGUL SYLLABLE GYEOD
+ACB0;ACB0;1100 1167 11AF;ACB0;1100 1167 11AF; # (결; 결; 결; 결; 결; ) HANGUL SYLLABLE GYEOL
+ACB1;ACB1;1100 1167 11B0;ACB1;1100 1167 11B0; # (겱; 겱; 겱; 겱; 겱; ) HANGUL SYLLABLE GYEOLG
+ACB2;ACB2;1100 1167 11B1;ACB2;1100 1167 11B1; # (겲; 겲; 겲; 겲; 겲; ) HANGUL SYLLABLE GYEOLM
+ACB3;ACB3;1100 1167 11B2;ACB3;1100 1167 11B2; # (겳; 겳; 겳; 겳; 겳; ) HANGUL SYLLABLE GYEOLB
+ACB4;ACB4;1100 1167 11B3;ACB4;1100 1167 11B3; # (겴; 겴; 겴; 겴; 겴; ) HANGUL SYLLABLE GYEOLS
+ACB5;ACB5;1100 1167 11B4;ACB5;1100 1167 11B4; # (겵; 겵; 겵; 겵; 겵; ) HANGUL SYLLABLE GYEOLT
+ACB6;ACB6;1100 1167 11B5;ACB6;1100 1167 11B5; # (겶; 겶; 겶; 겶; 겶; ) HANGUL SYLLABLE GYEOLP
+ACB7;ACB7;1100 1167 11B6;ACB7;1100 1167 11B6; # (겷; 겷; 겷; 겷; 겷; ) HANGUL SYLLABLE GYEOLH
+ACB8;ACB8;1100 1167 11B7;ACB8;1100 1167 11B7; # (겸; 겸; 겸; 겸; 겸; ) HANGUL SYLLABLE GYEOM
+ACB9;ACB9;1100 1167 11B8;ACB9;1100 1167 11B8; # (겹; 겹; 겹; 겹; 겹; ) HANGUL SYLLABLE GYEOB
+ACBA;ACBA;1100 1167 11B9;ACBA;1100 1167 11B9; # (겺; 겺; 겺; 겺; 겺; ) HANGUL SYLLABLE GYEOBS
+ACBB;ACBB;1100 1167 11BA;ACBB;1100 1167 11BA; # (겻; 겻; 겻; 겻; 겻; ) HANGUL SYLLABLE GYEOS
+ACBC;ACBC;1100 1167 11BB;ACBC;1100 1167 11BB; # (겼; 겼; 겼; 겼; 겼; ) HANGUL SYLLABLE GYEOSS
+ACBD;ACBD;1100 1167 11BC;ACBD;1100 1167 11BC; # (경; 경; 경; 경; 경; ) HANGUL SYLLABLE GYEONG
+ACBE;ACBE;1100 1167 11BD;ACBE;1100 1167 11BD; # (겾; 겾; 겾; 겾; 겾; ) HANGUL SYLLABLE GYEOJ
+ACBF;ACBF;1100 1167 11BE;ACBF;1100 1167 11BE; # (겿; 겿; 겿; 겿; 겿; ) HANGUL SYLLABLE GYEOC
+ACC0;ACC0;1100 1167 11BF;ACC0;1100 1167 11BF; # (곀; 곀; 곀; 곀; 곀; ) HANGUL SYLLABLE GYEOK
+ACC1;ACC1;1100 1167 11C0;ACC1;1100 1167 11C0; # (ê³; ê³; 곁; ê³; 곁; ) HANGUL SYLLABLE GYEOT
+ACC2;ACC2;1100 1167 11C1;ACC2;1100 1167 11C1; # (곂; 곂; 겨á‡; 곂; 겨á‡; ) HANGUL SYLLABLE GYEOP
+ACC3;ACC3;1100 1167 11C2;ACC3;1100 1167 11C2; # (곃; 곃; 곃; 곃; 곃; ) HANGUL SYLLABLE GYEOH
+ACC4;ACC4;1100 1168;ACC4;1100 1168; # (계; 계; 계; 계; 계; ) HANGUL SYLLABLE GYE
+ACC5;ACC5;1100 1168 11A8;ACC5;1100 1168 11A8; # (곅; 곅; 곅; 곅; 곅; ) HANGUL SYLLABLE GYEG
+ACC6;ACC6;1100 1168 11A9;ACC6;1100 1168 11A9; # (곆; 곆; 곆; 곆; 곆; ) HANGUL SYLLABLE GYEGG
+ACC7;ACC7;1100 1168 11AA;ACC7;1100 1168 11AA; # (곇; 곇; 곇; 곇; 곇; ) HANGUL SYLLABLE GYEGS
+ACC8;ACC8;1100 1168 11AB;ACC8;1100 1168 11AB; # (곈; 곈; 곈; 곈; 곈; ) HANGUL SYLLABLE GYEN
+ACC9;ACC9;1100 1168 11AC;ACC9;1100 1168 11AC; # (곉; 곉; 곉; 곉; 곉; ) HANGUL SYLLABLE GYENJ
+ACCA;ACCA;1100 1168 11AD;ACCA;1100 1168 11AD; # (곊; 곊; 곊; 곊; 곊; ) HANGUL SYLLABLE GYENH
+ACCB;ACCB;1100 1168 11AE;ACCB;1100 1168 11AE; # (곋; 곋; 곋; 곋; 곋; ) HANGUL SYLLABLE GYED
+ACCC;ACCC;1100 1168 11AF;ACCC;1100 1168 11AF; # (곌; 곌; 곌; 곌; 곌; ) HANGUL SYLLABLE GYEL
+ACCD;ACCD;1100 1168 11B0;ACCD;1100 1168 11B0; # (ê³; ê³; 곍; ê³; 곍; ) HANGUL SYLLABLE GYELG
+ACCE;ACCE;1100 1168 11B1;ACCE;1100 1168 11B1; # (곎; 곎; 곎; 곎; 곎; ) HANGUL SYLLABLE GYELM
+ACCF;ACCF;1100 1168 11B2;ACCF;1100 1168 11B2; # (ê³; ê³; 곏; ê³; 곏; ) HANGUL SYLLABLE GYELB
+ACD0;ACD0;1100 1168 11B3;ACD0;1100 1168 11B3; # (ê³; ê³; 곐; ê³; 곐; ) HANGUL SYLLABLE GYELS
+ACD1;ACD1;1100 1168 11B4;ACD1;1100 1168 11B4; # (곑; 곑; 곑; 곑; 곑; ) HANGUL SYLLABLE GYELT
+ACD2;ACD2;1100 1168 11B5;ACD2;1100 1168 11B5; # (곒; 곒; 곒; 곒; 곒; ) HANGUL SYLLABLE GYELP
+ACD3;ACD3;1100 1168 11B6;ACD3;1100 1168 11B6; # (곓; 곓; 곓; 곓; 곓; ) HANGUL SYLLABLE GYELH
+ACD4;ACD4;1100 1168 11B7;ACD4;1100 1168 11B7; # (곔; 곔; 곔; 곔; 곔; ) HANGUL SYLLABLE GYEM
+ACD5;ACD5;1100 1168 11B8;ACD5;1100 1168 11B8; # (곕; 곕; 곕; 곕; 곕; ) HANGUL SYLLABLE GYEB
+ACD6;ACD6;1100 1168 11B9;ACD6;1100 1168 11B9; # (곖; 곖; 곖; 곖; 곖; ) HANGUL SYLLABLE GYEBS
+ACD7;ACD7;1100 1168 11BA;ACD7;1100 1168 11BA; # (곗; 곗; 곗; 곗; 곗; ) HANGUL SYLLABLE GYES
+ACD8;ACD8;1100 1168 11BB;ACD8;1100 1168 11BB; # (곘; 곘; 곘; 곘; 곘; ) HANGUL SYLLABLE GYESS
+ACD9;ACD9;1100 1168 11BC;ACD9;1100 1168 11BC; # (곙; 곙; 곙; 곙; 곙; ) HANGUL SYLLABLE GYENG
+ACDA;ACDA;1100 1168 11BD;ACDA;1100 1168 11BD; # (곚; 곚; 곚; 곚; 곚; ) HANGUL SYLLABLE GYEJ
+ACDB;ACDB;1100 1168 11BE;ACDB;1100 1168 11BE; # (곛; 곛; 곛; 곛; 곛; ) HANGUL SYLLABLE GYEC
+ACDC;ACDC;1100 1168 11BF;ACDC;1100 1168 11BF; # (곜; 곜; 곜; 곜; 곜; ) HANGUL SYLLABLE GYEK
+ACDD;ACDD;1100 1168 11C0;ACDD;1100 1168 11C0; # (ê³; ê³; 곝; ê³; 곝; ) HANGUL SYLLABLE GYET
+ACDE;ACDE;1100 1168 11C1;ACDE;1100 1168 11C1; # (곞; 곞; 계á‡; 곞; 계á‡; ) HANGUL SYLLABLE GYEP
+ACDF;ACDF;1100 1168 11C2;ACDF;1100 1168 11C2; # (곟; 곟; 곟; 곟; 곟; ) HANGUL SYLLABLE GYEH
+ACE0;ACE0;1100 1169;ACE0;1100 1169; # (고; 고; 고; 고; 고; ) HANGUL SYLLABLE GO
+ACE1;ACE1;1100 1169 11A8;ACE1;1100 1169 11A8; # (곡; 곡; 곡; 곡; 곡; ) HANGUL SYLLABLE GOG
+ACE2;ACE2;1100 1169 11A9;ACE2;1100 1169 11A9; # (곢; 곢; 곢; 곢; 곢; ) HANGUL SYLLABLE GOGG
+ACE3;ACE3;1100 1169 11AA;ACE3;1100 1169 11AA; # (곣; 곣; 곣; 곣; 곣; ) HANGUL SYLLABLE GOGS
+ACE4;ACE4;1100 1169 11AB;ACE4;1100 1169 11AB; # (곤; 곤; 곤; 곤; 곤; ) HANGUL SYLLABLE GON
+ACE5;ACE5;1100 1169 11AC;ACE5;1100 1169 11AC; # (곥; 곥; 곥; 곥; 곥; ) HANGUL SYLLABLE GONJ
+ACE6;ACE6;1100 1169 11AD;ACE6;1100 1169 11AD; # (곦; 곦; 곦; 곦; 곦; ) HANGUL SYLLABLE GONH
+ACE7;ACE7;1100 1169 11AE;ACE7;1100 1169 11AE; # (곧; 곧; 곧; 곧; 곧; ) HANGUL SYLLABLE GOD
+ACE8;ACE8;1100 1169 11AF;ACE8;1100 1169 11AF; # (골; 골; 골; 골; 골; ) HANGUL SYLLABLE GOL
+ACE9;ACE9;1100 1169 11B0;ACE9;1100 1169 11B0; # (곩; 곩; 곩; 곩; 곩; ) HANGUL SYLLABLE GOLG
+ACEA;ACEA;1100 1169 11B1;ACEA;1100 1169 11B1; # (곪; 곪; 곪; 곪; 곪; ) HANGUL SYLLABLE GOLM
+ACEB;ACEB;1100 1169 11B2;ACEB;1100 1169 11B2; # (곫; 곫; 곫; 곫; 곫; ) HANGUL SYLLABLE GOLB
+ACEC;ACEC;1100 1169 11B3;ACEC;1100 1169 11B3; # (곬; 곬; 곬; 곬; 곬; ) HANGUL SYLLABLE GOLS
+ACED;ACED;1100 1169 11B4;ACED;1100 1169 11B4; # (곭; 곭; 곭; 곭; 곭; ) HANGUL SYLLABLE GOLT
+ACEE;ACEE;1100 1169 11B5;ACEE;1100 1169 11B5; # (곮; 곮; 곮; 곮; 곮; ) HANGUL SYLLABLE GOLP
+ACEF;ACEF;1100 1169 11B6;ACEF;1100 1169 11B6; # (곯; 곯; 곯; 곯; 곯; ) HANGUL SYLLABLE GOLH
+ACF0;ACF0;1100 1169 11B7;ACF0;1100 1169 11B7; # (곰; 곰; 곰; 곰; 곰; ) HANGUL SYLLABLE GOM
+ACF1;ACF1;1100 1169 11B8;ACF1;1100 1169 11B8; # (곱; 곱; 곱; 곱; 곱; ) HANGUL SYLLABLE GOB
+ACF2;ACF2;1100 1169 11B9;ACF2;1100 1169 11B9; # (곲; 곲; 곲; 곲; 곲; ) HANGUL SYLLABLE GOBS
+ACF3;ACF3;1100 1169 11BA;ACF3;1100 1169 11BA; # (곳; 곳; 곳; 곳; 곳; ) HANGUL SYLLABLE GOS
+ACF4;ACF4;1100 1169 11BB;ACF4;1100 1169 11BB; # (곴; 곴; 곴; 곴; 곴; ) HANGUL SYLLABLE GOSS
+ACF5;ACF5;1100 1169 11BC;ACF5;1100 1169 11BC; # (공; 공; 공; 공; 공; ) HANGUL SYLLABLE GONG
+ACF6;ACF6;1100 1169 11BD;ACF6;1100 1169 11BD; # (곶; 곶; 곶; 곶; 곶; ) HANGUL SYLLABLE GOJ
+ACF7;ACF7;1100 1169 11BE;ACF7;1100 1169 11BE; # (곷; 곷; 곷; 곷; 곷; ) HANGUL SYLLABLE GOC
+ACF8;ACF8;1100 1169 11BF;ACF8;1100 1169 11BF; # (곸; 곸; 곸; 곸; 곸; ) HANGUL SYLLABLE GOK
+ACF9;ACF9;1100 1169 11C0;ACF9;1100 1169 11C0; # (곹; 곹; 곹; 곹; 곹; ) HANGUL SYLLABLE GOT
+ACFA;ACFA;1100 1169 11C1;ACFA;1100 1169 11C1; # (곺; 곺; 고á‡; 곺; 고á‡; ) HANGUL SYLLABLE GOP
+ACFB;ACFB;1100 1169 11C2;ACFB;1100 1169 11C2; # (곻; 곻; 곻; 곻; 곻; ) HANGUL SYLLABLE GOH
+ACFC;ACFC;1100 116A;ACFC;1100 116A; # (과; 과; 과; 과; 과; ) HANGUL SYLLABLE GWA
+ACFD;ACFD;1100 116A 11A8;ACFD;1100 116A 11A8; # (곽; 곽; 곽; 곽; 곽; ) HANGUL SYLLABLE GWAG
+ACFE;ACFE;1100 116A 11A9;ACFE;1100 116A 11A9; # (곾; 곾; 곾; 곾; 곾; ) HANGUL SYLLABLE GWAGG
+ACFF;ACFF;1100 116A 11AA;ACFF;1100 116A 11AA; # (곿; 곿; 곿; 곿; 곿; ) HANGUL SYLLABLE GWAGS
+AD00;AD00;1100 116A 11AB;AD00;1100 116A 11AB; # (관; 관; 관; 관; 관; ) HANGUL SYLLABLE GWAN
+AD01;AD01;1100 116A 11AC;AD01;1100 116A 11AC; # (ê´; ê´; 괁; ê´; 괁; ) HANGUL SYLLABLE GWANJ
+AD02;AD02;1100 116A 11AD;AD02;1100 116A 11AD; # (괂; 괂; 괂; 괂; 괂; ) HANGUL SYLLABLE GWANH
+AD03;AD03;1100 116A 11AE;AD03;1100 116A 11AE; # (괃; 괃; 괃; 괃; 괃; ) HANGUL SYLLABLE GWAD
+AD04;AD04;1100 116A 11AF;AD04;1100 116A 11AF; # (괄; 괄; 괄; 괄; 괄; ) HANGUL SYLLABLE GWAL
+AD05;AD05;1100 116A 11B0;AD05;1100 116A 11B0; # (괅; 괅; 괅; 괅; 괅; ) HANGUL SYLLABLE GWALG
+AD06;AD06;1100 116A 11B1;AD06;1100 116A 11B1; # (괆; 괆; 괆; 괆; 괆; ) HANGUL SYLLABLE GWALM
+AD07;AD07;1100 116A 11B2;AD07;1100 116A 11B2; # (괇; 괇; 괇; 괇; 괇; ) HANGUL SYLLABLE GWALB
+AD08;AD08;1100 116A 11B3;AD08;1100 116A 11B3; # (괈; 괈; 괈; 괈; 괈; ) HANGUL SYLLABLE GWALS
+AD09;AD09;1100 116A 11B4;AD09;1100 116A 11B4; # (괉; 괉; 괉; 괉; 괉; ) HANGUL SYLLABLE GWALT
+AD0A;AD0A;1100 116A 11B5;AD0A;1100 116A 11B5; # (괊; 괊; 괊; 괊; 괊; ) HANGUL SYLLABLE GWALP
+AD0B;AD0B;1100 116A 11B6;AD0B;1100 116A 11B6; # (괋; 괋; 괋; 괋; 괋; ) HANGUL SYLLABLE GWALH
+AD0C;AD0C;1100 116A 11B7;AD0C;1100 116A 11B7; # (괌; 괌; 괌; 괌; 괌; ) HANGUL SYLLABLE GWAM
+AD0D;AD0D;1100 116A 11B8;AD0D;1100 116A 11B8; # (ê´; ê´; 괍; ê´; 괍; ) HANGUL SYLLABLE GWAB
+AD0E;AD0E;1100 116A 11B9;AD0E;1100 116A 11B9; # (괎; 괎; 괎; 괎; 괎; ) HANGUL SYLLABLE GWABS
+AD0F;AD0F;1100 116A 11BA;AD0F;1100 116A 11BA; # (ê´; ê´; 괏; ê´; 괏; ) HANGUL SYLLABLE GWAS
+AD10;AD10;1100 116A 11BB;AD10;1100 116A 11BB; # (ê´; ê´; 괐; ê´; 괐; ) HANGUL SYLLABLE GWASS
+AD11;AD11;1100 116A 11BC;AD11;1100 116A 11BC; # (광; 광; 광; 광; 광; ) HANGUL SYLLABLE GWANG
+AD12;AD12;1100 116A 11BD;AD12;1100 116A 11BD; # (괒; 괒; 괒; 괒; 괒; ) HANGUL SYLLABLE GWAJ
+AD13;AD13;1100 116A 11BE;AD13;1100 116A 11BE; # (괓; 괓; 괓; 괓; 괓; ) HANGUL SYLLABLE GWAC
+AD14;AD14;1100 116A 11BF;AD14;1100 116A 11BF; # (괔; 괔; 괔; 괔; 괔; ) HANGUL SYLLABLE GWAK
+AD15;AD15;1100 116A 11C0;AD15;1100 116A 11C0; # (괕; 괕; 괕; 괕; 괕; ) HANGUL SYLLABLE GWAT
+AD16;AD16;1100 116A 11C1;AD16;1100 116A 11C1; # (ê´–; ê´–; 과á‡; ê´–; 과á‡; ) HANGUL SYLLABLE GWAP
+AD17;AD17;1100 116A 11C2;AD17;1100 116A 11C2; # (괗; 괗; 괗; 괗; 괗; ) HANGUL SYLLABLE GWAH
+AD18;AD18;1100 116B;AD18;1100 116B; # (괘; 괘; 괘; 괘; 괘; ) HANGUL SYLLABLE GWAE
+AD19;AD19;1100 116B 11A8;AD19;1100 116B 11A8; # (괙; 괙; 괙; 괙; 괙; ) HANGUL SYLLABLE GWAEG
+AD1A;AD1A;1100 116B 11A9;AD1A;1100 116B 11A9; # (괚; 괚; 괚; 괚; 괚; ) HANGUL SYLLABLE GWAEGG
+AD1B;AD1B;1100 116B 11AA;AD1B;1100 116B 11AA; # (괛; 괛; 괛; 괛; 괛; ) HANGUL SYLLABLE GWAEGS
+AD1C;AD1C;1100 116B 11AB;AD1C;1100 116B 11AB; # (괜; 괜; 괜; 괜; 괜; ) HANGUL SYLLABLE GWAEN
+AD1D;AD1D;1100 116B 11AC;AD1D;1100 116B 11AC; # (ê´; ê´; 괝; ê´; 괝; ) HANGUL SYLLABLE GWAENJ
+AD1E;AD1E;1100 116B 11AD;AD1E;1100 116B 11AD; # (괞; 괞; 괞; 괞; 괞; ) HANGUL SYLLABLE GWAENH
+AD1F;AD1F;1100 116B 11AE;AD1F;1100 116B 11AE; # (괟; 괟; 괟; 괟; 괟; ) HANGUL SYLLABLE GWAED
+AD20;AD20;1100 116B 11AF;AD20;1100 116B 11AF; # (괠; 괠; 괠; 괠; 괠; ) HANGUL SYLLABLE GWAEL
+AD21;AD21;1100 116B 11B0;AD21;1100 116B 11B0; # (괡; 괡; 괡; 괡; 괡; ) HANGUL SYLLABLE GWAELG
+AD22;AD22;1100 116B 11B1;AD22;1100 116B 11B1; # (괢; 괢; 괢; 괢; 괢; ) HANGUL SYLLABLE GWAELM
+AD23;AD23;1100 116B 11B2;AD23;1100 116B 11B2; # (괣; 괣; 괣; 괣; 괣; ) HANGUL SYLLABLE GWAELB
+AD24;AD24;1100 116B 11B3;AD24;1100 116B 11B3; # (괤; 괤; 괤; 괤; 괤; ) HANGUL SYLLABLE GWAELS
+AD25;AD25;1100 116B 11B4;AD25;1100 116B 11B4; # (괥; 괥; 괥; 괥; 괥; ) HANGUL SYLLABLE GWAELT
+AD26;AD26;1100 116B 11B5;AD26;1100 116B 11B5; # (괦; 괦; 괦; 괦; 괦; ) HANGUL SYLLABLE GWAELP
+AD27;AD27;1100 116B 11B6;AD27;1100 116B 11B6; # (괧; 괧; 괧; 괧; 괧; ) HANGUL SYLLABLE GWAELH
+AD28;AD28;1100 116B 11B7;AD28;1100 116B 11B7; # (괨; 괨; 괨; 괨; 괨; ) HANGUL SYLLABLE GWAEM
+AD29;AD29;1100 116B 11B8;AD29;1100 116B 11B8; # (괩; 괩; 괩; 괩; 괩; ) HANGUL SYLLABLE GWAEB
+AD2A;AD2A;1100 116B 11B9;AD2A;1100 116B 11B9; # (괪; 괪; 괪; 괪; 괪; ) HANGUL SYLLABLE GWAEBS
+AD2B;AD2B;1100 116B 11BA;AD2B;1100 116B 11BA; # (괫; 괫; 괫; 괫; 괫; ) HANGUL SYLLABLE GWAES
+AD2C;AD2C;1100 116B 11BB;AD2C;1100 116B 11BB; # (괬; 괬; 괬; 괬; 괬; ) HANGUL SYLLABLE GWAESS
+AD2D;AD2D;1100 116B 11BC;AD2D;1100 116B 11BC; # (괭; 괭; 괭; 괭; 괭; ) HANGUL SYLLABLE GWAENG
+AD2E;AD2E;1100 116B 11BD;AD2E;1100 116B 11BD; # (괮; 괮; 괮; 괮; 괮; ) HANGUL SYLLABLE GWAEJ
+AD2F;AD2F;1100 116B 11BE;AD2F;1100 116B 11BE; # (괯; 괯; 괯; 괯; 괯; ) HANGUL SYLLABLE GWAEC
+AD30;AD30;1100 116B 11BF;AD30;1100 116B 11BF; # (괰; 괰; 괰; 괰; 괰; ) HANGUL SYLLABLE GWAEK
+AD31;AD31;1100 116B 11C0;AD31;1100 116B 11C0; # (괱; 괱; 괱; 괱; 괱; ) HANGUL SYLLABLE GWAET
+AD32;AD32;1100 116B 11C1;AD32;1100 116B 11C1; # (ê´²; ê´²; 괘á‡; ê´²; 괘á‡; ) HANGUL SYLLABLE GWAEP
+AD33;AD33;1100 116B 11C2;AD33;1100 116B 11C2; # (괳; 괳; 괳; 괳; 괳; ) HANGUL SYLLABLE GWAEH
+AD34;AD34;1100 116C;AD34;1100 116C; # (괴; 괴; 괴; 괴; 괴; ) HANGUL SYLLABLE GOE
+AD35;AD35;1100 116C 11A8;AD35;1100 116C 11A8; # (괵; 괵; 괵; 괵; 괵; ) HANGUL SYLLABLE GOEG
+AD36;AD36;1100 116C 11A9;AD36;1100 116C 11A9; # (괶; 괶; 괶; 괶; 괶; ) HANGUL SYLLABLE GOEGG
+AD37;AD37;1100 116C 11AA;AD37;1100 116C 11AA; # (괷; 괷; 괷; 괷; 괷; ) HANGUL SYLLABLE GOEGS
+AD38;AD38;1100 116C 11AB;AD38;1100 116C 11AB; # (괸; 괸; 괸; 괸; 괸; ) HANGUL SYLLABLE GOEN
+AD39;AD39;1100 116C 11AC;AD39;1100 116C 11AC; # (괹; 괹; 괹; 괹; 괹; ) HANGUL SYLLABLE GOENJ
+AD3A;AD3A;1100 116C 11AD;AD3A;1100 116C 11AD; # (괺; 괺; 괺; 괺; 괺; ) HANGUL SYLLABLE GOENH
+AD3B;AD3B;1100 116C 11AE;AD3B;1100 116C 11AE; # (괻; 괻; 괻; 괻; 괻; ) HANGUL SYLLABLE GOED
+AD3C;AD3C;1100 116C 11AF;AD3C;1100 116C 11AF; # (괼; 괼; 괼; 괼; 괼; ) HANGUL SYLLABLE GOEL
+AD3D;AD3D;1100 116C 11B0;AD3D;1100 116C 11B0; # (괽; 괽; 괽; 괽; 괽; ) HANGUL SYLLABLE GOELG
+AD3E;AD3E;1100 116C 11B1;AD3E;1100 116C 11B1; # (괾; 괾; 괾; 괾; 괾; ) HANGUL SYLLABLE GOELM
+AD3F;AD3F;1100 116C 11B2;AD3F;1100 116C 11B2; # (괿; 괿; 괿; 괿; 괿; ) HANGUL SYLLABLE GOELB
+AD40;AD40;1100 116C 11B3;AD40;1100 116C 11B3; # (굀; 굀; 굀; 굀; 굀; ) HANGUL SYLLABLE GOELS
+AD41;AD41;1100 116C 11B4;AD41;1100 116C 11B4; # (êµ; êµ; 굁; êµ; 굁; ) HANGUL SYLLABLE GOELT
+AD42;AD42;1100 116C 11B5;AD42;1100 116C 11B5; # (굂; 굂; 굂; 굂; 굂; ) HANGUL SYLLABLE GOELP
+AD43;AD43;1100 116C 11B6;AD43;1100 116C 11B6; # (굃; 굃; 굃; 굃; 굃; ) HANGUL SYLLABLE GOELH
+AD44;AD44;1100 116C 11B7;AD44;1100 116C 11B7; # (굄; 굄; 굄; 굄; 굄; ) HANGUL SYLLABLE GOEM
+AD45;AD45;1100 116C 11B8;AD45;1100 116C 11B8; # (굅; 굅; 굅; 굅; 굅; ) HANGUL SYLLABLE GOEB
+AD46;AD46;1100 116C 11B9;AD46;1100 116C 11B9; # (굆; 굆; 굆; 굆; 굆; ) HANGUL SYLLABLE GOEBS
+AD47;AD47;1100 116C 11BA;AD47;1100 116C 11BA; # (굇; 굇; 굇; 굇; 굇; ) HANGUL SYLLABLE GOES
+AD48;AD48;1100 116C 11BB;AD48;1100 116C 11BB; # (굈; 굈; 굈; 굈; 굈; ) HANGUL SYLLABLE GOESS
+AD49;AD49;1100 116C 11BC;AD49;1100 116C 11BC; # (굉; 굉; 굉; 굉; 굉; ) HANGUL SYLLABLE GOENG
+AD4A;AD4A;1100 116C 11BD;AD4A;1100 116C 11BD; # (굊; 굊; 굊; 굊; 굊; ) HANGUL SYLLABLE GOEJ
+AD4B;AD4B;1100 116C 11BE;AD4B;1100 116C 11BE; # (굋; 굋; 굋; 굋; 굋; ) HANGUL SYLLABLE GOEC
+AD4C;AD4C;1100 116C 11BF;AD4C;1100 116C 11BF; # (굌; 굌; 굌; 굌; 굌; ) HANGUL SYLLABLE GOEK
+AD4D;AD4D;1100 116C 11C0;AD4D;1100 116C 11C0; # (êµ; êµ; 굍; êµ; 굍; ) HANGUL SYLLABLE GOET
+AD4E;AD4E;1100 116C 11C1;AD4E;1100 116C 11C1; # (굎; 굎; 괴á‡; 굎; 괴á‡; ) HANGUL SYLLABLE GOEP
+AD4F;AD4F;1100 116C 11C2;AD4F;1100 116C 11C2; # (êµ; êµ; 굏; êµ; 굏; ) HANGUL SYLLABLE GOEH
+AD50;AD50;1100 116D;AD50;1100 116D; # (êµ; êµ; 교; êµ; 교; ) HANGUL SYLLABLE GYO
+AD51;AD51;1100 116D 11A8;AD51;1100 116D 11A8; # (굑; 굑; 굑; 굑; 굑; ) HANGUL SYLLABLE GYOG
+AD52;AD52;1100 116D 11A9;AD52;1100 116D 11A9; # (굒; 굒; 굒; 굒; 굒; ) HANGUL SYLLABLE GYOGG
+AD53;AD53;1100 116D 11AA;AD53;1100 116D 11AA; # (굓; 굓; 굓; 굓; 굓; ) HANGUL SYLLABLE GYOGS
+AD54;AD54;1100 116D 11AB;AD54;1100 116D 11AB; # (굔; 굔; 굔; 굔; 굔; ) HANGUL SYLLABLE GYON
+AD55;AD55;1100 116D 11AC;AD55;1100 116D 11AC; # (굕; 굕; 굕; 굕; 굕; ) HANGUL SYLLABLE GYONJ
+AD56;AD56;1100 116D 11AD;AD56;1100 116D 11AD; # (굖; 굖; 굖; 굖; 굖; ) HANGUL SYLLABLE GYONH
+AD57;AD57;1100 116D 11AE;AD57;1100 116D 11AE; # (굗; 굗; 굗; 굗; 굗; ) HANGUL SYLLABLE GYOD
+AD58;AD58;1100 116D 11AF;AD58;1100 116D 11AF; # (굘; 굘; 굘; 굘; 굘; ) HANGUL SYLLABLE GYOL
+AD59;AD59;1100 116D 11B0;AD59;1100 116D 11B0; # (굙; 굙; 굙; 굙; 굙; ) HANGUL SYLLABLE GYOLG
+AD5A;AD5A;1100 116D 11B1;AD5A;1100 116D 11B1; # (굚; 굚; 굚; 굚; 굚; ) HANGUL SYLLABLE GYOLM
+AD5B;AD5B;1100 116D 11B2;AD5B;1100 116D 11B2; # (굛; 굛; 굛; 굛; 굛; ) HANGUL SYLLABLE GYOLB
+AD5C;AD5C;1100 116D 11B3;AD5C;1100 116D 11B3; # (굜; 굜; 굜; 굜; 굜; ) HANGUL SYLLABLE GYOLS
+AD5D;AD5D;1100 116D 11B4;AD5D;1100 116D 11B4; # (êµ; êµ; 굝; êµ; 굝; ) HANGUL SYLLABLE GYOLT
+AD5E;AD5E;1100 116D 11B5;AD5E;1100 116D 11B5; # (굞; 굞; 굞; 굞; 굞; ) HANGUL SYLLABLE GYOLP
+AD5F;AD5F;1100 116D 11B6;AD5F;1100 116D 11B6; # (굟; 굟; 굟; 굟; 굟; ) HANGUL SYLLABLE GYOLH
+AD60;AD60;1100 116D 11B7;AD60;1100 116D 11B7; # (굠; 굠; 굠; 굠; 굠; ) HANGUL SYLLABLE GYOM
+AD61;AD61;1100 116D 11B8;AD61;1100 116D 11B8; # (굡; 굡; 굡; 굡; 굡; ) HANGUL SYLLABLE GYOB
+AD62;AD62;1100 116D 11B9;AD62;1100 116D 11B9; # (굢; 굢; 굢; 굢; 굢; ) HANGUL SYLLABLE GYOBS
+AD63;AD63;1100 116D 11BA;AD63;1100 116D 11BA; # (굣; 굣; 굣; 굣; 굣; ) HANGUL SYLLABLE GYOS
+AD64;AD64;1100 116D 11BB;AD64;1100 116D 11BB; # (굤; 굤; 굤; 굤; 굤; ) HANGUL SYLLABLE GYOSS
+AD65;AD65;1100 116D 11BC;AD65;1100 116D 11BC; # (굥; 굥; 굥; 굥; 굥; ) HANGUL SYLLABLE GYONG
+AD66;AD66;1100 116D 11BD;AD66;1100 116D 11BD; # (굦; 굦; 굦; 굦; 굦; ) HANGUL SYLLABLE GYOJ
+AD67;AD67;1100 116D 11BE;AD67;1100 116D 11BE; # (굧; 굧; 굧; 굧; 굧; ) HANGUL SYLLABLE GYOC
+AD68;AD68;1100 116D 11BF;AD68;1100 116D 11BF; # (굨; 굨; 굨; 굨; 굨; ) HANGUL SYLLABLE GYOK
+AD69;AD69;1100 116D 11C0;AD69;1100 116D 11C0; # (굩; 굩; 굩; 굩; 굩; ) HANGUL SYLLABLE GYOT
+AD6A;AD6A;1100 116D 11C1;AD6A;1100 116D 11C1; # (굪; 굪; 교á‡; 굪; 교á‡; ) HANGUL SYLLABLE GYOP
+AD6B;AD6B;1100 116D 11C2;AD6B;1100 116D 11C2; # (굫; 굫; 굫; 굫; 굫; ) HANGUL SYLLABLE GYOH
+AD6C;AD6C;1100 116E;AD6C;1100 116E; # (구; 구; 구; 구; 구; ) HANGUL SYLLABLE GU
+AD6D;AD6D;1100 116E 11A8;AD6D;1100 116E 11A8; # (국; 국; 국; 국; 국; ) HANGUL SYLLABLE GUG
+AD6E;AD6E;1100 116E 11A9;AD6E;1100 116E 11A9; # (굮; 굮; 굮; 굮; 굮; ) HANGUL SYLLABLE GUGG
+AD6F;AD6F;1100 116E 11AA;AD6F;1100 116E 11AA; # (굯; 굯; 굯; 굯; 굯; ) HANGUL SYLLABLE GUGS
+AD70;AD70;1100 116E 11AB;AD70;1100 116E 11AB; # (군; 군; 군; 군; 군; ) HANGUL SYLLABLE GUN
+AD71;AD71;1100 116E 11AC;AD71;1100 116E 11AC; # (굱; 굱; 굱; 굱; 굱; ) HANGUL SYLLABLE GUNJ
+AD72;AD72;1100 116E 11AD;AD72;1100 116E 11AD; # (굲; 굲; 굲; 굲; 굲; ) HANGUL SYLLABLE GUNH
+AD73;AD73;1100 116E 11AE;AD73;1100 116E 11AE; # (굳; 굳; 굳; 굳; 굳; ) HANGUL SYLLABLE GUD
+AD74;AD74;1100 116E 11AF;AD74;1100 116E 11AF; # (굴; 굴; 굴; 굴; 굴; ) HANGUL SYLLABLE GUL
+AD75;AD75;1100 116E 11B0;AD75;1100 116E 11B0; # (굵; 굵; 굵; 굵; 굵; ) HANGUL SYLLABLE GULG
+AD76;AD76;1100 116E 11B1;AD76;1100 116E 11B1; # (굶; 굶; 굶; 굶; 굶; ) HANGUL SYLLABLE GULM
+AD77;AD77;1100 116E 11B2;AD77;1100 116E 11B2; # (굷; 굷; 굷; 굷; 굷; ) HANGUL SYLLABLE GULB
+AD78;AD78;1100 116E 11B3;AD78;1100 116E 11B3; # (굸; 굸; 굸; 굸; 굸; ) HANGUL SYLLABLE GULS
+AD79;AD79;1100 116E 11B4;AD79;1100 116E 11B4; # (굹; 굹; 굹; 굹; 굹; ) HANGUL SYLLABLE GULT
+AD7A;AD7A;1100 116E 11B5;AD7A;1100 116E 11B5; # (굺; 굺; 굺; 굺; 굺; ) HANGUL SYLLABLE GULP
+AD7B;AD7B;1100 116E 11B6;AD7B;1100 116E 11B6; # (굻; 굻; 굻; 굻; 굻; ) HANGUL SYLLABLE GULH
+AD7C;AD7C;1100 116E 11B7;AD7C;1100 116E 11B7; # (굼; 굼; 굼; 굼; 굼; ) HANGUL SYLLABLE GUM
+AD7D;AD7D;1100 116E 11B8;AD7D;1100 116E 11B8; # (굽; 굽; 굽; 굽; 굽; ) HANGUL SYLLABLE GUB
+AD7E;AD7E;1100 116E 11B9;AD7E;1100 116E 11B9; # (굾; 굾; 굾; 굾; 굾; ) HANGUL SYLLABLE GUBS
+AD7F;AD7F;1100 116E 11BA;AD7F;1100 116E 11BA; # (굿; 굿; 굿; 굿; 굿; ) HANGUL SYLLABLE GUS
+AD80;AD80;1100 116E 11BB;AD80;1100 116E 11BB; # (궀; 궀; 궀; 궀; 궀; ) HANGUL SYLLABLE GUSS
+AD81;AD81;1100 116E 11BC;AD81;1100 116E 11BC; # (ê¶; ê¶; 궁; ê¶; 궁; ) HANGUL SYLLABLE GUNG
+AD82;AD82;1100 116E 11BD;AD82;1100 116E 11BD; # (궂; 궂; 궂; 궂; 궂; ) HANGUL SYLLABLE GUJ
+AD83;AD83;1100 116E 11BE;AD83;1100 116E 11BE; # (궃; 궃; 궃; 궃; 궃; ) HANGUL SYLLABLE GUC
+AD84;AD84;1100 116E 11BF;AD84;1100 116E 11BF; # (궄; 궄; 궄; 궄; 궄; ) HANGUL SYLLABLE GUK
+AD85;AD85;1100 116E 11C0;AD85;1100 116E 11C0; # (궅; 궅; 궅; 궅; 궅; ) HANGUL SYLLABLE GUT
+AD86;AD86;1100 116E 11C1;AD86;1100 116E 11C1; # (궆; 궆; 구á‡; 궆; 구á‡; ) HANGUL SYLLABLE GUP
+AD87;AD87;1100 116E 11C2;AD87;1100 116E 11C2; # (궇; 궇; 궇; 궇; 궇; ) HANGUL SYLLABLE GUH
+AD88;AD88;1100 116F;AD88;1100 116F; # (궈; 궈; 궈; 궈; 궈; ) HANGUL SYLLABLE GWEO
+AD89;AD89;1100 116F 11A8;AD89;1100 116F 11A8; # (궉; 궉; 궉; 궉; 궉; ) HANGUL SYLLABLE GWEOG
+AD8A;AD8A;1100 116F 11A9;AD8A;1100 116F 11A9; # (궊; 궊; 궊; 궊; 궊; ) HANGUL SYLLABLE GWEOGG
+AD8B;AD8B;1100 116F 11AA;AD8B;1100 116F 11AA; # (궋; 궋; 궋; 궋; 궋; ) HANGUL SYLLABLE GWEOGS
+AD8C;AD8C;1100 116F 11AB;AD8C;1100 116F 11AB; # (권; 권; 권; 권; 권; ) HANGUL SYLLABLE GWEON
+AD8D;AD8D;1100 116F 11AC;AD8D;1100 116F 11AC; # (ê¶; ê¶; 궍; ê¶; 궍; ) HANGUL SYLLABLE GWEONJ
+AD8E;AD8E;1100 116F 11AD;AD8E;1100 116F 11AD; # (궎; 궎; 궎; 궎; 궎; ) HANGUL SYLLABLE GWEONH
+AD8F;AD8F;1100 116F 11AE;AD8F;1100 116F 11AE; # (ê¶; ê¶; 궏; ê¶; 궏; ) HANGUL SYLLABLE GWEOD
+AD90;AD90;1100 116F 11AF;AD90;1100 116F 11AF; # (ê¶; ê¶; 궐; ê¶; 궐; ) HANGUL SYLLABLE GWEOL
+AD91;AD91;1100 116F 11B0;AD91;1100 116F 11B0; # (궑; 궑; 궑; 궑; 궑; ) HANGUL SYLLABLE GWEOLG
+AD92;AD92;1100 116F 11B1;AD92;1100 116F 11B1; # (궒; 궒; 궒; 궒; 궒; ) HANGUL SYLLABLE GWEOLM
+AD93;AD93;1100 116F 11B2;AD93;1100 116F 11B2; # (궓; 궓; 궓; 궓; 궓; ) HANGUL SYLLABLE GWEOLB
+AD94;AD94;1100 116F 11B3;AD94;1100 116F 11B3; # (궔; 궔; 궔; 궔; 궔; ) HANGUL SYLLABLE GWEOLS
+AD95;AD95;1100 116F 11B4;AD95;1100 116F 11B4; # (궕; 궕; 궕; 궕; 궕; ) HANGUL SYLLABLE GWEOLT
+AD96;AD96;1100 116F 11B5;AD96;1100 116F 11B5; # (궖; 궖; 궖; 궖; 궖; ) HANGUL SYLLABLE GWEOLP
+AD97;AD97;1100 116F 11B6;AD97;1100 116F 11B6; # (궗; 궗; 궗; 궗; 궗; ) HANGUL SYLLABLE GWEOLH
+AD98;AD98;1100 116F 11B7;AD98;1100 116F 11B7; # (궘; 궘; 궘; 궘; 궘; ) HANGUL SYLLABLE GWEOM
+AD99;AD99;1100 116F 11B8;AD99;1100 116F 11B8; # (궙; 궙; 궙; 궙; 궙; ) HANGUL SYLLABLE GWEOB
+AD9A;AD9A;1100 116F 11B9;AD9A;1100 116F 11B9; # (궚; 궚; 궚; 궚; 궚; ) HANGUL SYLLABLE GWEOBS
+AD9B;AD9B;1100 116F 11BA;AD9B;1100 116F 11BA; # (궛; 궛; 궛; 궛; 궛; ) HANGUL SYLLABLE GWEOS
+AD9C;AD9C;1100 116F 11BB;AD9C;1100 116F 11BB; # (궜; 궜; 궜; 궜; 궜; ) HANGUL SYLLABLE GWEOSS
+AD9D;AD9D;1100 116F 11BC;AD9D;1100 116F 11BC; # (ê¶; ê¶; 궝; ê¶; 궝; ) HANGUL SYLLABLE GWEONG
+AD9E;AD9E;1100 116F 11BD;AD9E;1100 116F 11BD; # (궞; 궞; 궞; 궞; 궞; ) HANGUL SYLLABLE GWEOJ
+AD9F;AD9F;1100 116F 11BE;AD9F;1100 116F 11BE; # (궟; 궟; 궟; 궟; 궟; ) HANGUL SYLLABLE GWEOC
+ADA0;ADA0;1100 116F 11BF;ADA0;1100 116F 11BF; # (궠; 궠; 궠; 궠; 궠; ) HANGUL SYLLABLE GWEOK
+ADA1;ADA1;1100 116F 11C0;ADA1;1100 116F 11C0; # (궡; 궡; 궡; 궡; 궡; ) HANGUL SYLLABLE GWEOT
+ADA2;ADA2;1100 116F 11C1;ADA2;1100 116F 11C1; # (궢; 궢; 궈á‡; 궢; 궈á‡; ) HANGUL SYLLABLE GWEOP
+ADA3;ADA3;1100 116F 11C2;ADA3;1100 116F 11C2; # (궣; 궣; 궣; 궣; 궣; ) HANGUL SYLLABLE GWEOH
+ADA4;ADA4;1100 1170;ADA4;1100 1170; # (궤; 궤; 궤; 궤; 궤; ) HANGUL SYLLABLE GWE
+ADA5;ADA5;1100 1170 11A8;ADA5;1100 1170 11A8; # (궥; 궥; 궥; 궥; 궥; ) HANGUL SYLLABLE GWEG
+ADA6;ADA6;1100 1170 11A9;ADA6;1100 1170 11A9; # (궦; 궦; 궦; 궦; 궦; ) HANGUL SYLLABLE GWEGG
+ADA7;ADA7;1100 1170 11AA;ADA7;1100 1170 11AA; # (궧; 궧; 궧; 궧; 궧; ) HANGUL SYLLABLE GWEGS
+ADA8;ADA8;1100 1170 11AB;ADA8;1100 1170 11AB; # (궨; 궨; 궨; 궨; 궨; ) HANGUL SYLLABLE GWEN
+ADA9;ADA9;1100 1170 11AC;ADA9;1100 1170 11AC; # (궩; 궩; 궩; 궩; 궩; ) HANGUL SYLLABLE GWENJ
+ADAA;ADAA;1100 1170 11AD;ADAA;1100 1170 11AD; # (궪; 궪; 궪; 궪; 궪; ) HANGUL SYLLABLE GWENH
+ADAB;ADAB;1100 1170 11AE;ADAB;1100 1170 11AE; # (궫; 궫; 궫; 궫; 궫; ) HANGUL SYLLABLE GWED
+ADAC;ADAC;1100 1170 11AF;ADAC;1100 1170 11AF; # (궬; 궬; 궬; 궬; 궬; ) HANGUL SYLLABLE GWEL
+ADAD;ADAD;1100 1170 11B0;ADAD;1100 1170 11B0; # (궭; 궭; 궭; 궭; 궭; ) HANGUL SYLLABLE GWELG
+ADAE;ADAE;1100 1170 11B1;ADAE;1100 1170 11B1; # (궮; 궮; 궮; 궮; 궮; ) HANGUL SYLLABLE GWELM
+ADAF;ADAF;1100 1170 11B2;ADAF;1100 1170 11B2; # (궯; 궯; 궯; 궯; 궯; ) HANGUL SYLLABLE GWELB
+ADB0;ADB0;1100 1170 11B3;ADB0;1100 1170 11B3; # (궰; 궰; 궰; 궰; 궰; ) HANGUL SYLLABLE GWELS
+ADB1;ADB1;1100 1170 11B4;ADB1;1100 1170 11B4; # (궱; 궱; 궱; 궱; 궱; ) HANGUL SYLLABLE GWELT
+ADB2;ADB2;1100 1170 11B5;ADB2;1100 1170 11B5; # (궲; 궲; 궲; 궲; 궲; ) HANGUL SYLLABLE GWELP
+ADB3;ADB3;1100 1170 11B6;ADB3;1100 1170 11B6; # (궳; 궳; 궳; 궳; 궳; ) HANGUL SYLLABLE GWELH
+ADB4;ADB4;1100 1170 11B7;ADB4;1100 1170 11B7; # (궴; 궴; 궴; 궴; 궴; ) HANGUL SYLLABLE GWEM
+ADB5;ADB5;1100 1170 11B8;ADB5;1100 1170 11B8; # (궵; 궵; 궵; 궵; 궵; ) HANGUL SYLLABLE GWEB
+ADB6;ADB6;1100 1170 11B9;ADB6;1100 1170 11B9; # (궶; 궶; 궶; 궶; 궶; ) HANGUL SYLLABLE GWEBS
+ADB7;ADB7;1100 1170 11BA;ADB7;1100 1170 11BA; # (궷; 궷; 궷; 궷; 궷; ) HANGUL SYLLABLE GWES
+ADB8;ADB8;1100 1170 11BB;ADB8;1100 1170 11BB; # (궸; 궸; 궸; 궸; 궸; ) HANGUL SYLLABLE GWESS
+ADB9;ADB9;1100 1170 11BC;ADB9;1100 1170 11BC; # (궹; 궹; 궹; 궹; 궹; ) HANGUL SYLLABLE GWENG
+ADBA;ADBA;1100 1170 11BD;ADBA;1100 1170 11BD; # (궺; 궺; 궺; 궺; 궺; ) HANGUL SYLLABLE GWEJ
+ADBB;ADBB;1100 1170 11BE;ADBB;1100 1170 11BE; # (궻; 궻; 궻; 궻; 궻; ) HANGUL SYLLABLE GWEC
+ADBC;ADBC;1100 1170 11BF;ADBC;1100 1170 11BF; # (궼; 궼; 궼; 궼; 궼; ) HANGUL SYLLABLE GWEK
+ADBD;ADBD;1100 1170 11C0;ADBD;1100 1170 11C0; # (궽; 궽; 궽; 궽; 궽; ) HANGUL SYLLABLE GWET
+ADBE;ADBE;1100 1170 11C1;ADBE;1100 1170 11C1; # (궾; 궾; 궤á‡; 궾; 궤á‡; ) HANGUL SYLLABLE GWEP
+ADBF;ADBF;1100 1170 11C2;ADBF;1100 1170 11C2; # (궿; 궿; 궿; 궿; 궿; ) HANGUL SYLLABLE GWEH
+ADC0;ADC0;1100 1171;ADC0;1100 1171; # (귀; 귀; 귀; 귀; 귀; ) HANGUL SYLLABLE GWI
+ADC1;ADC1;1100 1171 11A8;ADC1;1100 1171 11A8; # (ê·; ê·; 귁; ê·; 귁; ) HANGUL SYLLABLE GWIG
+ADC2;ADC2;1100 1171 11A9;ADC2;1100 1171 11A9; # (귂; 귂; 귂; 귂; 귂; ) HANGUL SYLLABLE GWIGG
+ADC3;ADC3;1100 1171 11AA;ADC3;1100 1171 11AA; # (귃; 귃; 귃; 귃; 귃; ) HANGUL SYLLABLE GWIGS
+ADC4;ADC4;1100 1171 11AB;ADC4;1100 1171 11AB; # (귄; 귄; 귄; 귄; 귄; ) HANGUL SYLLABLE GWIN
+ADC5;ADC5;1100 1171 11AC;ADC5;1100 1171 11AC; # (귅; 귅; 귅; 귅; 귅; ) HANGUL SYLLABLE GWINJ
+ADC6;ADC6;1100 1171 11AD;ADC6;1100 1171 11AD; # (귆; 귆; 귆; 귆; 귆; ) HANGUL SYLLABLE GWINH
+ADC7;ADC7;1100 1171 11AE;ADC7;1100 1171 11AE; # (귇; 귇; 귇; 귇; 귇; ) HANGUL SYLLABLE GWID
+ADC8;ADC8;1100 1171 11AF;ADC8;1100 1171 11AF; # (귈; 귈; 귈; 귈; 귈; ) HANGUL SYLLABLE GWIL
+ADC9;ADC9;1100 1171 11B0;ADC9;1100 1171 11B0; # (귉; 귉; 귉; 귉; 귉; ) HANGUL SYLLABLE GWILG
+ADCA;ADCA;1100 1171 11B1;ADCA;1100 1171 11B1; # (귊; 귊; 귊; 귊; 귊; ) HANGUL SYLLABLE GWILM
+ADCB;ADCB;1100 1171 11B2;ADCB;1100 1171 11B2; # (귋; 귋; 귋; 귋; 귋; ) HANGUL SYLLABLE GWILB
+ADCC;ADCC;1100 1171 11B3;ADCC;1100 1171 11B3; # (귌; 귌; 귌; 귌; 귌; ) HANGUL SYLLABLE GWILS
+ADCD;ADCD;1100 1171 11B4;ADCD;1100 1171 11B4; # (ê·; ê·; 귍; ê·; 귍; ) HANGUL SYLLABLE GWILT
+ADCE;ADCE;1100 1171 11B5;ADCE;1100 1171 11B5; # (귎; 귎; 귎; 귎; 귎; ) HANGUL SYLLABLE GWILP
+ADCF;ADCF;1100 1171 11B6;ADCF;1100 1171 11B6; # (ê·; ê·; 귏; ê·; 귏; ) HANGUL SYLLABLE GWILH
+ADD0;ADD0;1100 1171 11B7;ADD0;1100 1171 11B7; # (ê·; ê·; 귐; ê·; 귐; ) HANGUL SYLLABLE GWIM
+ADD1;ADD1;1100 1171 11B8;ADD1;1100 1171 11B8; # (귑; 귑; 귑; 귑; 귑; ) HANGUL SYLLABLE GWIB
+ADD2;ADD2;1100 1171 11B9;ADD2;1100 1171 11B9; # (귒; 귒; 귒; 귒; 귒; ) HANGUL SYLLABLE GWIBS
+ADD3;ADD3;1100 1171 11BA;ADD3;1100 1171 11BA; # (귓; 귓; 귓; 귓; 귓; ) HANGUL SYLLABLE GWIS
+ADD4;ADD4;1100 1171 11BB;ADD4;1100 1171 11BB; # (귔; 귔; 귔; 귔; 귔; ) HANGUL SYLLABLE GWISS
+ADD5;ADD5;1100 1171 11BC;ADD5;1100 1171 11BC; # (귕; 귕; 귕; 귕; 귕; ) HANGUL SYLLABLE GWING
+ADD6;ADD6;1100 1171 11BD;ADD6;1100 1171 11BD; # (귖; 귖; 귖; 귖; 귖; ) HANGUL SYLLABLE GWIJ
+ADD7;ADD7;1100 1171 11BE;ADD7;1100 1171 11BE; # (귗; 귗; 귗; 귗; 귗; ) HANGUL SYLLABLE GWIC
+ADD8;ADD8;1100 1171 11BF;ADD8;1100 1171 11BF; # (귘; 귘; 귘; 귘; 귘; ) HANGUL SYLLABLE GWIK
+ADD9;ADD9;1100 1171 11C0;ADD9;1100 1171 11C0; # (귙; 귙; 귙; 귙; 귙; ) HANGUL SYLLABLE GWIT
+ADDA;ADDA;1100 1171 11C1;ADDA;1100 1171 11C1; # (ê·š; ê·š; 귀á‡; ê·š; 귀á‡; ) HANGUL SYLLABLE GWIP
+ADDB;ADDB;1100 1171 11C2;ADDB;1100 1171 11C2; # (귛; 귛; 귛; 귛; 귛; ) HANGUL SYLLABLE GWIH
+ADDC;ADDC;1100 1172;ADDC;1100 1172; # (규; 규; 규; 규; 규; ) HANGUL SYLLABLE GYU
+ADDD;ADDD;1100 1172 11A8;ADDD;1100 1172 11A8; # (ê·; ê·; 귝; ê·; 귝; ) HANGUL SYLLABLE GYUG
+ADDE;ADDE;1100 1172 11A9;ADDE;1100 1172 11A9; # (귞; 귞; 귞; 귞; 귞; ) HANGUL SYLLABLE GYUGG
+ADDF;ADDF;1100 1172 11AA;ADDF;1100 1172 11AA; # (귟; 귟; 귟; 귟; 귟; ) HANGUL SYLLABLE GYUGS
+ADE0;ADE0;1100 1172 11AB;ADE0;1100 1172 11AB; # (균; 균; 균; 균; 균; ) HANGUL SYLLABLE GYUN
+ADE1;ADE1;1100 1172 11AC;ADE1;1100 1172 11AC; # (귡; 귡; 귡; 귡; 귡; ) HANGUL SYLLABLE GYUNJ
+ADE2;ADE2;1100 1172 11AD;ADE2;1100 1172 11AD; # (귢; 귢; 귢; 귢; 귢; ) HANGUL SYLLABLE GYUNH
+ADE3;ADE3;1100 1172 11AE;ADE3;1100 1172 11AE; # (귣; 귣; 귣; 귣; 귣; ) HANGUL SYLLABLE GYUD
+ADE4;ADE4;1100 1172 11AF;ADE4;1100 1172 11AF; # (귤; 귤; 귤; 귤; 귤; ) HANGUL SYLLABLE GYUL
+ADE5;ADE5;1100 1172 11B0;ADE5;1100 1172 11B0; # (귥; 귥; 귥; 귥; 귥; ) HANGUL SYLLABLE GYULG
+ADE6;ADE6;1100 1172 11B1;ADE6;1100 1172 11B1; # (귦; 귦; 귦; 귦; 귦; ) HANGUL SYLLABLE GYULM
+ADE7;ADE7;1100 1172 11B2;ADE7;1100 1172 11B2; # (귧; 귧; 귧; 귧; 귧; ) HANGUL SYLLABLE GYULB
+ADE8;ADE8;1100 1172 11B3;ADE8;1100 1172 11B3; # (귨; 귨; 귨; 귨; 귨; ) HANGUL SYLLABLE GYULS
+ADE9;ADE9;1100 1172 11B4;ADE9;1100 1172 11B4; # (귩; 귩; 귩; 귩; 귩; ) HANGUL SYLLABLE GYULT
+ADEA;ADEA;1100 1172 11B5;ADEA;1100 1172 11B5; # (귪; 귪; 귪; 귪; 귪; ) HANGUL SYLLABLE GYULP
+ADEB;ADEB;1100 1172 11B6;ADEB;1100 1172 11B6; # (귫; 귫; 귫; 귫; 귫; ) HANGUL SYLLABLE GYULH
+ADEC;ADEC;1100 1172 11B7;ADEC;1100 1172 11B7; # (귬; 귬; 귬; 귬; 귬; ) HANGUL SYLLABLE GYUM
+ADED;ADED;1100 1172 11B8;ADED;1100 1172 11B8; # (귭; 귭; 귭; 귭; 귭; ) HANGUL SYLLABLE GYUB
+ADEE;ADEE;1100 1172 11B9;ADEE;1100 1172 11B9; # (귮; 귮; 귮; 귮; 귮; ) HANGUL SYLLABLE GYUBS
+ADEF;ADEF;1100 1172 11BA;ADEF;1100 1172 11BA; # (귯; 귯; 귯; 귯; 귯; ) HANGUL SYLLABLE GYUS
+ADF0;ADF0;1100 1172 11BB;ADF0;1100 1172 11BB; # (귰; 귰; 귰; 귰; 귰; ) HANGUL SYLLABLE GYUSS
+ADF1;ADF1;1100 1172 11BC;ADF1;1100 1172 11BC; # (귱; 귱; 귱; 귱; 귱; ) HANGUL SYLLABLE GYUNG
+ADF2;ADF2;1100 1172 11BD;ADF2;1100 1172 11BD; # (귲; 귲; 귲; 귲; 귲; ) HANGUL SYLLABLE GYUJ
+ADF3;ADF3;1100 1172 11BE;ADF3;1100 1172 11BE; # (귳; 귳; 귳; 귳; 귳; ) HANGUL SYLLABLE GYUC
+ADF4;ADF4;1100 1172 11BF;ADF4;1100 1172 11BF; # (귴; 귴; 귴; 귴; 귴; ) HANGUL SYLLABLE GYUK
+ADF5;ADF5;1100 1172 11C0;ADF5;1100 1172 11C0; # (귵; 귵; 귵; 귵; 귵; ) HANGUL SYLLABLE GYUT
+ADF6;ADF6;1100 1172 11C1;ADF6;1100 1172 11C1; # (ê·¶; ê·¶; 규á‡; ê·¶; 규á‡; ) HANGUL SYLLABLE GYUP
+ADF7;ADF7;1100 1172 11C2;ADF7;1100 1172 11C2; # (귷; 귷; 귷; 귷; 귷; ) HANGUL SYLLABLE GYUH
+ADF8;ADF8;1100 1173;ADF8;1100 1173; # (그; 그; 그; 그; 그; ) HANGUL SYLLABLE GEU
+ADF9;ADF9;1100 1173 11A8;ADF9;1100 1173 11A8; # (극; 극; 극; 극; 극; ) HANGUL SYLLABLE GEUG
+ADFA;ADFA;1100 1173 11A9;ADFA;1100 1173 11A9; # (귺; 귺; 귺; 귺; 귺; ) HANGUL SYLLABLE GEUGG
+ADFB;ADFB;1100 1173 11AA;ADFB;1100 1173 11AA; # (귻; 귻; 귻; 귻; 귻; ) HANGUL SYLLABLE GEUGS
+ADFC;ADFC;1100 1173 11AB;ADFC;1100 1173 11AB; # (근; 근; 근; 근; 근; ) HANGUL SYLLABLE GEUN
+ADFD;ADFD;1100 1173 11AC;ADFD;1100 1173 11AC; # (귽; 귽; 귽; 귽; 귽; ) HANGUL SYLLABLE GEUNJ
+ADFE;ADFE;1100 1173 11AD;ADFE;1100 1173 11AD; # (귾; 귾; 귾; 귾; 귾; ) HANGUL SYLLABLE GEUNH
+ADFF;ADFF;1100 1173 11AE;ADFF;1100 1173 11AE; # (귿; 귿; 귿; 귿; 귿; ) HANGUL SYLLABLE GEUD
+AE00;AE00;1100 1173 11AF;AE00;1100 1173 11AF; # (글; 글; 글; 글; 글; ) HANGUL SYLLABLE GEUL
+AE01;AE01;1100 1173 11B0;AE01;1100 1173 11B0; # (ê¸; ê¸; 긁; ê¸; 긁; ) HANGUL SYLLABLE GEULG
+AE02;AE02;1100 1173 11B1;AE02;1100 1173 11B1; # (긂; 긂; 긂; 긂; 긂; ) HANGUL SYLLABLE GEULM
+AE03;AE03;1100 1173 11B2;AE03;1100 1173 11B2; # (긃; 긃; 긃; 긃; 긃; ) HANGUL SYLLABLE GEULB
+AE04;AE04;1100 1173 11B3;AE04;1100 1173 11B3; # (긄; 긄; 긄; 긄; 긄; ) HANGUL SYLLABLE GEULS
+AE05;AE05;1100 1173 11B4;AE05;1100 1173 11B4; # (긅; 긅; 긅; 긅; 긅; ) HANGUL SYLLABLE GEULT
+AE06;AE06;1100 1173 11B5;AE06;1100 1173 11B5; # (긆; 긆; 긆; 긆; 긆; ) HANGUL SYLLABLE GEULP
+AE07;AE07;1100 1173 11B6;AE07;1100 1173 11B6; # (긇; 긇; 긇; 긇; 긇; ) HANGUL SYLLABLE GEULH
+AE08;AE08;1100 1173 11B7;AE08;1100 1173 11B7; # (금; 금; 금; 금; 금; ) HANGUL SYLLABLE GEUM
+AE09;AE09;1100 1173 11B8;AE09;1100 1173 11B8; # (급; 급; 급; 급; 급; ) HANGUL SYLLABLE GEUB
+AE0A;AE0A;1100 1173 11B9;AE0A;1100 1173 11B9; # (긊; 긊; 긊; 긊; 긊; ) HANGUL SYLLABLE GEUBS
+AE0B;AE0B;1100 1173 11BA;AE0B;1100 1173 11BA; # (긋; 긋; 긋; 긋; 긋; ) HANGUL SYLLABLE GEUS
+AE0C;AE0C;1100 1173 11BB;AE0C;1100 1173 11BB; # (긌; 긌; 긌; 긌; 긌; ) HANGUL SYLLABLE GEUSS
+AE0D;AE0D;1100 1173 11BC;AE0D;1100 1173 11BC; # (ê¸; ê¸; 긍; ê¸; 긍; ) HANGUL SYLLABLE GEUNG
+AE0E;AE0E;1100 1173 11BD;AE0E;1100 1173 11BD; # (긎; 긎; 긎; 긎; 긎; ) HANGUL SYLLABLE GEUJ
+AE0F;AE0F;1100 1173 11BE;AE0F;1100 1173 11BE; # (ê¸; ê¸; 긏; ê¸; 긏; ) HANGUL SYLLABLE GEUC
+AE10;AE10;1100 1173 11BF;AE10;1100 1173 11BF; # (ê¸; ê¸; 긐; ê¸; 긐; ) HANGUL SYLLABLE GEUK
+AE11;AE11;1100 1173 11C0;AE11;1100 1173 11C0; # (긑; 긑; 긑; 긑; 긑; ) HANGUL SYLLABLE GEUT
+AE12;AE12;1100 1173 11C1;AE12;1100 1173 11C1; # (긒; 긒; 그á‡; 긒; 그á‡; ) HANGUL SYLLABLE GEUP
+AE13;AE13;1100 1173 11C2;AE13;1100 1173 11C2; # (긓; 긓; 긓; 긓; 긓; ) HANGUL SYLLABLE GEUH
+AE14;AE14;1100 1174;AE14;1100 1174; # (긔; 긔; 긔; 긔; 긔; ) HANGUL SYLLABLE GYI
+AE15;AE15;1100 1174 11A8;AE15;1100 1174 11A8; # (긕; 긕; 긕; 긕; 긕; ) HANGUL SYLLABLE GYIG
+AE16;AE16;1100 1174 11A9;AE16;1100 1174 11A9; # (긖; 긖; 긖; 긖; 긖; ) HANGUL SYLLABLE GYIGG
+AE17;AE17;1100 1174 11AA;AE17;1100 1174 11AA; # (긗; 긗; 긗; 긗; 긗; ) HANGUL SYLLABLE GYIGS
+AE18;AE18;1100 1174 11AB;AE18;1100 1174 11AB; # (긘; 긘; 긘; 긘; 긘; ) HANGUL SYLLABLE GYIN
+AE19;AE19;1100 1174 11AC;AE19;1100 1174 11AC; # (긙; 긙; 긙; 긙; 긙; ) HANGUL SYLLABLE GYINJ
+AE1A;AE1A;1100 1174 11AD;AE1A;1100 1174 11AD; # (긚; 긚; 긚; 긚; 긚; ) HANGUL SYLLABLE GYINH
+AE1B;AE1B;1100 1174 11AE;AE1B;1100 1174 11AE; # (긛; 긛; 긛; 긛; 긛; ) HANGUL SYLLABLE GYID
+AE1C;AE1C;1100 1174 11AF;AE1C;1100 1174 11AF; # (긜; 긜; 긜; 긜; 긜; ) HANGUL SYLLABLE GYIL
+AE1D;AE1D;1100 1174 11B0;AE1D;1100 1174 11B0; # (ê¸; ê¸; 긝; ê¸; 긝; ) HANGUL SYLLABLE GYILG
+AE1E;AE1E;1100 1174 11B1;AE1E;1100 1174 11B1; # (긞; 긞; 긞; 긞; 긞; ) HANGUL SYLLABLE GYILM
+AE1F;AE1F;1100 1174 11B2;AE1F;1100 1174 11B2; # (긟; 긟; 긟; 긟; 긟; ) HANGUL SYLLABLE GYILB
+AE20;AE20;1100 1174 11B3;AE20;1100 1174 11B3; # (긠; 긠; 긠; 긠; 긠; ) HANGUL SYLLABLE GYILS
+AE21;AE21;1100 1174 11B4;AE21;1100 1174 11B4; # (긡; 긡; 긡; 긡; 긡; ) HANGUL SYLLABLE GYILT
+AE22;AE22;1100 1174 11B5;AE22;1100 1174 11B5; # (긢; 긢; 긢; 긢; 긢; ) HANGUL SYLLABLE GYILP
+AE23;AE23;1100 1174 11B6;AE23;1100 1174 11B6; # (긣; 긣; 긣; 긣; 긣; ) HANGUL SYLLABLE GYILH
+AE24;AE24;1100 1174 11B7;AE24;1100 1174 11B7; # (긤; 긤; 긤; 긤; 긤; ) HANGUL SYLLABLE GYIM
+AE25;AE25;1100 1174 11B8;AE25;1100 1174 11B8; # (긥; 긥; 긥; 긥; 긥; ) HANGUL SYLLABLE GYIB
+AE26;AE26;1100 1174 11B9;AE26;1100 1174 11B9; # (긦; 긦; 긦; 긦; 긦; ) HANGUL SYLLABLE GYIBS
+AE27;AE27;1100 1174 11BA;AE27;1100 1174 11BA; # (긧; 긧; 긧; 긧; 긧; ) HANGUL SYLLABLE GYIS
+AE28;AE28;1100 1174 11BB;AE28;1100 1174 11BB; # (긨; 긨; 긨; 긨; 긨; ) HANGUL SYLLABLE GYISS
+AE29;AE29;1100 1174 11BC;AE29;1100 1174 11BC; # (긩; 긩; 긩; 긩; 긩; ) HANGUL SYLLABLE GYING
+AE2A;AE2A;1100 1174 11BD;AE2A;1100 1174 11BD; # (긪; 긪; 긪; 긪; 긪; ) HANGUL SYLLABLE GYIJ
+AE2B;AE2B;1100 1174 11BE;AE2B;1100 1174 11BE; # (긫; 긫; 긫; 긫; 긫; ) HANGUL SYLLABLE GYIC
+AE2C;AE2C;1100 1174 11BF;AE2C;1100 1174 11BF; # (긬; 긬; 긬; 긬; 긬; ) HANGUL SYLLABLE GYIK
+AE2D;AE2D;1100 1174 11C0;AE2D;1100 1174 11C0; # (긭; 긭; 긭; 긭; 긭; ) HANGUL SYLLABLE GYIT
+AE2E;AE2E;1100 1174 11C1;AE2E;1100 1174 11C1; # (긮; 긮; 긔á‡; 긮; 긔á‡; ) HANGUL SYLLABLE GYIP
+AE2F;AE2F;1100 1174 11C2;AE2F;1100 1174 11C2; # (긯; 긯; 긯; 긯; 긯; ) HANGUL SYLLABLE GYIH
+AE30;AE30;1100 1175;AE30;1100 1175; # (기; 기; 기; 기; 기; ) HANGUL SYLLABLE GI
+AE31;AE31;1100 1175 11A8;AE31;1100 1175 11A8; # (긱; 긱; 긱; 긱; 긱; ) HANGUL SYLLABLE GIG
+AE32;AE32;1100 1175 11A9;AE32;1100 1175 11A9; # (긲; 긲; 긲; 긲; 긲; ) HANGUL SYLLABLE GIGG
+AE33;AE33;1100 1175 11AA;AE33;1100 1175 11AA; # (긳; 긳; 긳; 긳; 긳; ) HANGUL SYLLABLE GIGS
+AE34;AE34;1100 1175 11AB;AE34;1100 1175 11AB; # (긴; 긴; 긴; 긴; 긴; ) HANGUL SYLLABLE GIN
+AE35;AE35;1100 1175 11AC;AE35;1100 1175 11AC; # (긵; 긵; 긵; 긵; 긵; ) HANGUL SYLLABLE GINJ
+AE36;AE36;1100 1175 11AD;AE36;1100 1175 11AD; # (긶; 긶; 긶; 긶; 긶; ) HANGUL SYLLABLE GINH
+AE37;AE37;1100 1175 11AE;AE37;1100 1175 11AE; # (긷; 긷; 긷; 긷; 긷; ) HANGUL SYLLABLE GID
+AE38;AE38;1100 1175 11AF;AE38;1100 1175 11AF; # (길; 길; 길; 길; 길; ) HANGUL SYLLABLE GIL
+AE39;AE39;1100 1175 11B0;AE39;1100 1175 11B0; # (긹; 긹; 긹; 긹; 긹; ) HANGUL SYLLABLE GILG
+AE3A;AE3A;1100 1175 11B1;AE3A;1100 1175 11B1; # (긺; 긺; 긺; 긺; 긺; ) HANGUL SYLLABLE GILM
+AE3B;AE3B;1100 1175 11B2;AE3B;1100 1175 11B2; # (긻; 긻; 긻; 긻; 긻; ) HANGUL SYLLABLE GILB
+AE3C;AE3C;1100 1175 11B3;AE3C;1100 1175 11B3; # (긼; 긼; 긼; 긼; 긼; ) HANGUL SYLLABLE GILS
+AE3D;AE3D;1100 1175 11B4;AE3D;1100 1175 11B4; # (긽; 긽; 긽; 긽; 긽; ) HANGUL SYLLABLE GILT
+AE3E;AE3E;1100 1175 11B5;AE3E;1100 1175 11B5; # (긾; 긾; 긾; 긾; 긾; ) HANGUL SYLLABLE GILP
+AE3F;AE3F;1100 1175 11B6;AE3F;1100 1175 11B6; # (긿; 긿; 긿; 긿; 긿; ) HANGUL SYLLABLE GILH
+AE40;AE40;1100 1175 11B7;AE40;1100 1175 11B7; # (김; 김; 김; 김; 김; ) HANGUL SYLLABLE GIM
+AE41;AE41;1100 1175 11B8;AE41;1100 1175 11B8; # (ê¹; ê¹; 깁; ê¹; 깁; ) HANGUL SYLLABLE GIB
+AE42;AE42;1100 1175 11B9;AE42;1100 1175 11B9; # (깂; 깂; 깂; 깂; 깂; ) HANGUL SYLLABLE GIBS
+AE43;AE43;1100 1175 11BA;AE43;1100 1175 11BA; # (깃; 깃; 깃; 깃; 깃; ) HANGUL SYLLABLE GIS
+AE44;AE44;1100 1175 11BB;AE44;1100 1175 11BB; # (깄; 깄; 깄; 깄; 깄; ) HANGUL SYLLABLE GISS
+AE45;AE45;1100 1175 11BC;AE45;1100 1175 11BC; # (깅; 깅; 깅; 깅; 깅; ) HANGUL SYLLABLE GING
+AE46;AE46;1100 1175 11BD;AE46;1100 1175 11BD; # (깆; 깆; 깆; 깆; 깆; ) HANGUL SYLLABLE GIJ
+AE47;AE47;1100 1175 11BE;AE47;1100 1175 11BE; # (깇; 깇; 깇; 깇; 깇; ) HANGUL SYLLABLE GIC
+AE48;AE48;1100 1175 11BF;AE48;1100 1175 11BF; # (깈; 깈; 깈; 깈; 깈; ) HANGUL SYLLABLE GIK
+AE49;AE49;1100 1175 11C0;AE49;1100 1175 11C0; # (깉; 깉; 깉; 깉; 깉; ) HANGUL SYLLABLE GIT
+AE4A;AE4A;1100 1175 11C1;AE4A;1100 1175 11C1; # (깊; 깊; 기á‡; 깊; 기á‡; ) HANGUL SYLLABLE GIP
+AE4B;AE4B;1100 1175 11C2;AE4B;1100 1175 11C2; # (깋; 깋; 깋; 깋; 깋; ) HANGUL SYLLABLE GIH
+AE4C;AE4C;1101 1161;AE4C;1101 1161; # (까; 까; á„á…¡; 까; á„á…¡; ) HANGUL SYLLABLE GGA
+AE4D;AE4D;1101 1161 11A8;AE4D;1101 1161 11A8; # (ê¹; ê¹; á„ᅡᆨ; ê¹; á„ᅡᆨ; ) HANGUL SYLLABLE GGAG
+AE4E;AE4E;1101 1161 11A9;AE4E;1101 1161 11A9; # (깎; 깎; á„ᅡᆩ; 깎; á„ᅡᆩ; ) HANGUL SYLLABLE GGAGG
+AE4F;AE4F;1101 1161 11AA;AE4F;1101 1161 11AA; # (ê¹; ê¹; á„ᅡᆪ; ê¹; á„ᅡᆪ; ) HANGUL SYLLABLE GGAGS
+AE50;AE50;1101 1161 11AB;AE50;1101 1161 11AB; # (ê¹; ê¹; á„ᅡᆫ; ê¹; á„ᅡᆫ; ) HANGUL SYLLABLE GGAN
+AE51;AE51;1101 1161 11AC;AE51;1101 1161 11AC; # (깑; 깑; á„ᅡᆬ; 깑; á„ᅡᆬ; ) HANGUL SYLLABLE GGANJ
+AE52;AE52;1101 1161 11AD;AE52;1101 1161 11AD; # (ê¹’; ê¹’; á„ᅡᆭ; ê¹’; á„ᅡᆭ; ) HANGUL SYLLABLE GGANH
+AE53;AE53;1101 1161 11AE;AE53;1101 1161 11AE; # (깓; 깓; á„ᅡᆮ; 깓; á„ᅡᆮ; ) HANGUL SYLLABLE GGAD
+AE54;AE54;1101 1161 11AF;AE54;1101 1161 11AF; # (ê¹”; ê¹”; á„ᅡᆯ; ê¹”; á„ᅡᆯ; ) HANGUL SYLLABLE GGAL
+AE55;AE55;1101 1161 11B0;AE55;1101 1161 11B0; # (깕; 깕; á„ᅡᆰ; 깕; á„ᅡᆰ; ) HANGUL SYLLABLE GGALG
+AE56;AE56;1101 1161 11B1;AE56;1101 1161 11B1; # (ê¹–; ê¹–; á„ᅡᆱ; ê¹–; á„ᅡᆱ; ) HANGUL SYLLABLE GGALM
+AE57;AE57;1101 1161 11B2;AE57;1101 1161 11B2; # (ê¹—; ê¹—; á„ᅡᆲ; ê¹—; á„ᅡᆲ; ) HANGUL SYLLABLE GGALB
+AE58;AE58;1101 1161 11B3;AE58;1101 1161 11B3; # (깘; 깘; á„ᅡᆳ; 깘; á„ᅡᆳ; ) HANGUL SYLLABLE GGALS
+AE59;AE59;1101 1161 11B4;AE59;1101 1161 11B4; # (ê¹™; ê¹™; á„ᅡᆴ; ê¹™; á„ᅡᆴ; ) HANGUL SYLLABLE GGALT
+AE5A;AE5A;1101 1161 11B5;AE5A;1101 1161 11B5; # (깚; 깚; á„ᅡᆵ; 깚; á„ᅡᆵ; ) HANGUL SYLLABLE GGALP
+AE5B;AE5B;1101 1161 11B6;AE5B;1101 1161 11B6; # (ê¹›; ê¹›; á„ᅡᆶ; ê¹›; á„ᅡᆶ; ) HANGUL SYLLABLE GGALH
+AE5C;AE5C;1101 1161 11B7;AE5C;1101 1161 11B7; # (깜; 깜; á„ᅡᆷ; 깜; á„ᅡᆷ; ) HANGUL SYLLABLE GGAM
+AE5D;AE5D;1101 1161 11B8;AE5D;1101 1161 11B8; # (ê¹; ê¹; á„ᅡᆸ; ê¹; á„ᅡᆸ; ) HANGUL SYLLABLE GGAB
+AE5E;AE5E;1101 1161 11B9;AE5E;1101 1161 11B9; # (깞; 깞; á„ᅡᆹ; 깞; á„ᅡᆹ; ) HANGUL SYLLABLE GGABS
+AE5F;AE5F;1101 1161 11BA;AE5F;1101 1161 11BA; # (깟; 깟; á„ᅡᆺ; 깟; á„ᅡᆺ; ) HANGUL SYLLABLE GGAS
+AE60;AE60;1101 1161 11BB;AE60;1101 1161 11BB; # (ê¹ ; ê¹ ; á„ᅡᆻ; ê¹ ; á„ᅡᆻ; ) HANGUL SYLLABLE GGASS
+AE61;AE61;1101 1161 11BC;AE61;1101 1161 11BC; # (깡; 깡; á„ᅡᆼ; 깡; á„ᅡᆼ; ) HANGUL SYLLABLE GGANG
+AE62;AE62;1101 1161 11BD;AE62;1101 1161 11BD; # (ê¹¢; ê¹¢; á„ᅡᆽ; ê¹¢; á„ᅡᆽ; ) HANGUL SYLLABLE GGAJ
+AE63;AE63;1101 1161 11BE;AE63;1101 1161 11BE; # (ê¹£; ê¹£; á„ᅡᆾ; ê¹£; á„ᅡᆾ; ) HANGUL SYLLABLE GGAC
+AE64;AE64;1101 1161 11BF;AE64;1101 1161 11BF; # (깤; 깤; á„ᅡᆿ; 깤; á„ᅡᆿ; ) HANGUL SYLLABLE GGAK
+AE65;AE65;1101 1161 11C0;AE65;1101 1161 11C0; # (ê¹¥; ê¹¥; á„ᅡᇀ; ê¹¥; á„ᅡᇀ; ) HANGUL SYLLABLE GGAT
+AE66;AE66;1101 1161 11C1;AE66;1101 1161 11C1; # (깦; 깦; á„á…¡á‡; 깦; á„á…¡á‡; ) HANGUL SYLLABLE GGAP
+AE67;AE67;1101 1161 11C2;AE67;1101 1161 11C2; # (깧; 깧; á„ᅡᇂ; 깧; á„ᅡᇂ; ) HANGUL SYLLABLE GGAH
+AE68;AE68;1101 1162;AE68;1101 1162; # (깨; 깨; á„á…¢; 깨; á„á…¢; ) HANGUL SYLLABLE GGAE
+AE69;AE69;1101 1162 11A8;AE69;1101 1162 11A8; # (깩; 깩; á„ᅢᆨ; 깩; á„ᅢᆨ; ) HANGUL SYLLABLE GGAEG
+AE6A;AE6A;1101 1162 11A9;AE6A;1101 1162 11A9; # (깪; 깪; á„ᅢᆩ; 깪; á„ᅢᆩ; ) HANGUL SYLLABLE GGAEGG
+AE6B;AE6B;1101 1162 11AA;AE6B;1101 1162 11AA; # (깫; 깫; á„ᅢᆪ; 깫; á„ᅢᆪ; ) HANGUL SYLLABLE GGAEGS
+AE6C;AE6C;1101 1162 11AB;AE6C;1101 1162 11AB; # (깬; 깬; á„ᅢᆫ; 깬; á„ᅢᆫ; ) HANGUL SYLLABLE GGAEN
+AE6D;AE6D;1101 1162 11AC;AE6D;1101 1162 11AC; # (ê¹­; ê¹­; á„ᅢᆬ; ê¹­; á„ᅢᆬ; ) HANGUL SYLLABLE GGAENJ
+AE6E;AE6E;1101 1162 11AD;AE6E;1101 1162 11AD; # (ê¹®; ê¹®; á„ᅢᆭ; ê¹®; á„ᅢᆭ; ) HANGUL SYLLABLE GGAENH
+AE6F;AE6F;1101 1162 11AE;AE6F;1101 1162 11AE; # (깯; 깯; á„ᅢᆮ; 깯; á„ᅢᆮ; ) HANGUL SYLLABLE GGAED
+AE70;AE70;1101 1162 11AF;AE70;1101 1162 11AF; # (ê¹°; ê¹°; á„ᅢᆯ; ê¹°; á„ᅢᆯ; ) HANGUL SYLLABLE GGAEL
+AE71;AE71;1101 1162 11B0;AE71;1101 1162 11B0; # (ê¹±; ê¹±; á„ᅢᆰ; ê¹±; á„ᅢᆰ; ) HANGUL SYLLABLE GGAELG
+AE72;AE72;1101 1162 11B1;AE72;1101 1162 11B1; # (ê¹²; ê¹²; á„ᅢᆱ; ê¹²; á„ᅢᆱ; ) HANGUL SYLLABLE GGAELM
+AE73;AE73;1101 1162 11B2;AE73;1101 1162 11B2; # (ê¹³; ê¹³; á„ᅢᆲ; ê¹³; á„ᅢᆲ; ) HANGUL SYLLABLE GGAELB
+AE74;AE74;1101 1162 11B3;AE74;1101 1162 11B3; # (ê¹´; ê¹´; á„ᅢᆳ; ê¹´; á„ᅢᆳ; ) HANGUL SYLLABLE GGAELS
+AE75;AE75;1101 1162 11B4;AE75;1101 1162 11B4; # (ê¹µ; ê¹µ; á„ᅢᆴ; ê¹µ; á„ᅢᆴ; ) HANGUL SYLLABLE GGAELT
+AE76;AE76;1101 1162 11B5;AE76;1101 1162 11B5; # (깶; 깶; á„ᅢᆵ; 깶; á„ᅢᆵ; ) HANGUL SYLLABLE GGAELP
+AE77;AE77;1101 1162 11B6;AE77;1101 1162 11B6; # (ê¹·; ê¹·; á„ᅢᆶ; ê¹·; á„ᅢᆶ; ) HANGUL SYLLABLE GGAELH
+AE78;AE78;1101 1162 11B7;AE78;1101 1162 11B7; # (깸; 깸; á„ᅢᆷ; 깸; á„ᅢᆷ; ) HANGUL SYLLABLE GGAEM
+AE79;AE79;1101 1162 11B8;AE79;1101 1162 11B8; # (ê¹¹; ê¹¹; á„ᅢᆸ; ê¹¹; á„ᅢᆸ; ) HANGUL SYLLABLE GGAEB
+AE7A;AE7A;1101 1162 11B9;AE7A;1101 1162 11B9; # (깺; 깺; á„ᅢᆹ; 깺; á„ᅢᆹ; ) HANGUL SYLLABLE GGAEBS
+AE7B;AE7B;1101 1162 11BA;AE7B;1101 1162 11BA; # (ê¹»; ê¹»; á„ᅢᆺ; ê¹»; á„ᅢᆺ; ) HANGUL SYLLABLE GGAES
+AE7C;AE7C;1101 1162 11BB;AE7C;1101 1162 11BB; # (ê¹¼; ê¹¼; á„ᅢᆻ; ê¹¼; á„ᅢᆻ; ) HANGUL SYLLABLE GGAESS
+AE7D;AE7D;1101 1162 11BC;AE7D;1101 1162 11BC; # (ê¹½; ê¹½; á„ᅢᆼ; ê¹½; á„ᅢᆼ; ) HANGUL SYLLABLE GGAENG
+AE7E;AE7E;1101 1162 11BD;AE7E;1101 1162 11BD; # (ê¹¾; ê¹¾; á„ᅢᆽ; ê¹¾; á„ᅢᆽ; ) HANGUL SYLLABLE GGAEJ
+AE7F;AE7F;1101 1162 11BE;AE7F;1101 1162 11BE; # (깿; 깿; á„ᅢᆾ; 깿; á„ᅢᆾ; ) HANGUL SYLLABLE GGAEC
+AE80;AE80;1101 1162 11BF;AE80;1101 1162 11BF; # (꺀; 꺀; á„ᅢᆿ; 꺀; á„ᅢᆿ; ) HANGUL SYLLABLE GGAEK
+AE81;AE81;1101 1162 11C0;AE81;1101 1162 11C0; # (êº; êº; á„ᅢᇀ; êº; á„ᅢᇀ; ) HANGUL SYLLABLE GGAET
+AE82;AE82;1101 1162 11C1;AE82;1101 1162 11C1; # (꺂; 꺂; á„á…¢á‡; 꺂; á„á…¢á‡; ) HANGUL SYLLABLE GGAEP
+AE83;AE83;1101 1162 11C2;AE83;1101 1162 11C2; # (꺃; 꺃; á„ᅢᇂ; 꺃; á„ᅢᇂ; ) HANGUL SYLLABLE GGAEH
+AE84;AE84;1101 1163;AE84;1101 1163; # (꺄; 꺄; á„á…£; 꺄; á„á…£; ) HANGUL SYLLABLE GGYA
+AE85;AE85;1101 1163 11A8;AE85;1101 1163 11A8; # (꺅; 꺅; á„ᅣᆨ; 꺅; á„ᅣᆨ; ) HANGUL SYLLABLE GGYAG
+AE86;AE86;1101 1163 11A9;AE86;1101 1163 11A9; # (꺆; 꺆; á„ᅣᆩ; 꺆; á„ᅣᆩ; ) HANGUL SYLLABLE GGYAGG
+AE87;AE87;1101 1163 11AA;AE87;1101 1163 11AA; # (꺇; 꺇; á„ᅣᆪ; 꺇; á„ᅣᆪ; ) HANGUL SYLLABLE GGYAGS
+AE88;AE88;1101 1163 11AB;AE88;1101 1163 11AB; # (꺈; 꺈; á„ᅣᆫ; 꺈; á„ᅣᆫ; ) HANGUL SYLLABLE GGYAN
+AE89;AE89;1101 1163 11AC;AE89;1101 1163 11AC; # (꺉; 꺉; á„ᅣᆬ; 꺉; á„ᅣᆬ; ) HANGUL SYLLABLE GGYANJ
+AE8A;AE8A;1101 1163 11AD;AE8A;1101 1163 11AD; # (꺊; 꺊; á„ᅣᆭ; 꺊; á„ᅣᆭ; ) HANGUL SYLLABLE GGYANH
+AE8B;AE8B;1101 1163 11AE;AE8B;1101 1163 11AE; # (꺋; 꺋; á„ᅣᆮ; 꺋; á„ᅣᆮ; ) HANGUL SYLLABLE GGYAD
+AE8C;AE8C;1101 1163 11AF;AE8C;1101 1163 11AF; # (꺌; 꺌; á„ᅣᆯ; 꺌; á„ᅣᆯ; ) HANGUL SYLLABLE GGYAL
+AE8D;AE8D;1101 1163 11B0;AE8D;1101 1163 11B0; # (êº; êº; á„ᅣᆰ; êº; á„ᅣᆰ; ) HANGUL SYLLABLE GGYALG
+AE8E;AE8E;1101 1163 11B1;AE8E;1101 1163 11B1; # (꺎; 꺎; á„ᅣᆱ; 꺎; á„ᅣᆱ; ) HANGUL SYLLABLE GGYALM
+AE8F;AE8F;1101 1163 11B2;AE8F;1101 1163 11B2; # (êº; êº; á„ᅣᆲ; êº; á„ᅣᆲ; ) HANGUL SYLLABLE GGYALB
+AE90;AE90;1101 1163 11B3;AE90;1101 1163 11B3; # (êº; êº; á„ᅣᆳ; êº; á„ᅣᆳ; ) HANGUL SYLLABLE GGYALS
+AE91;AE91;1101 1163 11B4;AE91;1101 1163 11B4; # (꺑; 꺑; á„ᅣᆴ; 꺑; á„ᅣᆴ; ) HANGUL SYLLABLE GGYALT
+AE92;AE92;1101 1163 11B5;AE92;1101 1163 11B5; # (꺒; 꺒; á„ᅣᆵ; 꺒; á„ᅣᆵ; ) HANGUL SYLLABLE GGYALP
+AE93;AE93;1101 1163 11B6;AE93;1101 1163 11B6; # (꺓; 꺓; á„ᅣᆶ; 꺓; á„ᅣᆶ; ) HANGUL SYLLABLE GGYALH
+AE94;AE94;1101 1163 11B7;AE94;1101 1163 11B7; # (꺔; 꺔; á„ᅣᆷ; 꺔; á„ᅣᆷ; ) HANGUL SYLLABLE GGYAM
+AE95;AE95;1101 1163 11B8;AE95;1101 1163 11B8; # (꺕; 꺕; á„ᅣᆸ; 꺕; á„ᅣᆸ; ) HANGUL SYLLABLE GGYAB
+AE96;AE96;1101 1163 11B9;AE96;1101 1163 11B9; # (꺖; 꺖; á„ᅣᆹ; 꺖; á„ᅣᆹ; ) HANGUL SYLLABLE GGYABS
+AE97;AE97;1101 1163 11BA;AE97;1101 1163 11BA; # (꺗; 꺗; á„ᅣᆺ; 꺗; á„ᅣᆺ; ) HANGUL SYLLABLE GGYAS
+AE98;AE98;1101 1163 11BB;AE98;1101 1163 11BB; # (꺘; 꺘; á„ᅣᆻ; 꺘; á„ᅣᆻ; ) HANGUL SYLLABLE GGYASS
+AE99;AE99;1101 1163 11BC;AE99;1101 1163 11BC; # (꺙; 꺙; á„ᅣᆼ; 꺙; á„ᅣᆼ; ) HANGUL SYLLABLE GGYANG
+AE9A;AE9A;1101 1163 11BD;AE9A;1101 1163 11BD; # (꺚; 꺚; á„ᅣᆽ; 꺚; á„ᅣᆽ; ) HANGUL SYLLABLE GGYAJ
+AE9B;AE9B;1101 1163 11BE;AE9B;1101 1163 11BE; # (꺛; 꺛; á„ᅣᆾ; 꺛; á„ᅣᆾ; ) HANGUL SYLLABLE GGYAC
+AE9C;AE9C;1101 1163 11BF;AE9C;1101 1163 11BF; # (꺜; 꺜; á„ᅣᆿ; 꺜; á„ᅣᆿ; ) HANGUL SYLLABLE GGYAK
+AE9D;AE9D;1101 1163 11C0;AE9D;1101 1163 11C0; # (êº; êº; á„ᅣᇀ; êº; á„ᅣᇀ; ) HANGUL SYLLABLE GGYAT
+AE9E;AE9E;1101 1163 11C1;AE9E;1101 1163 11C1; # (꺞; 꺞; á„á…£á‡; 꺞; á„á…£á‡; ) HANGUL SYLLABLE GGYAP
+AE9F;AE9F;1101 1163 11C2;AE9F;1101 1163 11C2; # (꺟; 꺟; á„ᅣᇂ; 꺟; á„ᅣᇂ; ) HANGUL SYLLABLE GGYAH
+AEA0;AEA0;1101 1164;AEA0;1101 1164; # (꺠; 꺠; á„á…¤; 꺠; á„á…¤; ) HANGUL SYLLABLE GGYAE
+AEA1;AEA1;1101 1164 11A8;AEA1;1101 1164 11A8; # (꺡; 꺡; á„ᅤᆨ; 꺡; á„ᅤᆨ; ) HANGUL SYLLABLE GGYAEG
+AEA2;AEA2;1101 1164 11A9;AEA2;1101 1164 11A9; # (꺢; 꺢; á„ᅤᆩ; 꺢; á„ᅤᆩ; ) HANGUL SYLLABLE GGYAEGG
+AEA3;AEA3;1101 1164 11AA;AEA3;1101 1164 11AA; # (꺣; 꺣; á„ᅤᆪ; 꺣; á„ᅤᆪ; ) HANGUL SYLLABLE GGYAEGS
+AEA4;AEA4;1101 1164 11AB;AEA4;1101 1164 11AB; # (꺤; 꺤; á„ᅤᆫ; 꺤; á„ᅤᆫ; ) HANGUL SYLLABLE GGYAEN
+AEA5;AEA5;1101 1164 11AC;AEA5;1101 1164 11AC; # (꺥; 꺥; á„ᅤᆬ; 꺥; á„ᅤᆬ; ) HANGUL SYLLABLE GGYAENJ
+AEA6;AEA6;1101 1164 11AD;AEA6;1101 1164 11AD; # (꺦; 꺦; á„ᅤᆭ; 꺦; á„ᅤᆭ; ) HANGUL SYLLABLE GGYAENH
+AEA7;AEA7;1101 1164 11AE;AEA7;1101 1164 11AE; # (꺧; 꺧; á„ᅤᆮ; 꺧; á„ᅤᆮ; ) HANGUL SYLLABLE GGYAED
+AEA8;AEA8;1101 1164 11AF;AEA8;1101 1164 11AF; # (꺨; 꺨; á„ᅤᆯ; 꺨; á„ᅤᆯ; ) HANGUL SYLLABLE GGYAEL
+AEA9;AEA9;1101 1164 11B0;AEA9;1101 1164 11B0; # (꺩; 꺩; á„ᅤᆰ; 꺩; á„ᅤᆰ; ) HANGUL SYLLABLE GGYAELG
+AEAA;AEAA;1101 1164 11B1;AEAA;1101 1164 11B1; # (꺪; 꺪; á„ᅤᆱ; 꺪; á„ᅤᆱ; ) HANGUL SYLLABLE GGYAELM
+AEAB;AEAB;1101 1164 11B2;AEAB;1101 1164 11B2; # (꺫; 꺫; á„ᅤᆲ; 꺫; á„ᅤᆲ; ) HANGUL SYLLABLE GGYAELB
+AEAC;AEAC;1101 1164 11B3;AEAC;1101 1164 11B3; # (꺬; 꺬; á„ᅤᆳ; 꺬; á„ᅤᆳ; ) HANGUL SYLLABLE GGYAELS
+AEAD;AEAD;1101 1164 11B4;AEAD;1101 1164 11B4; # (꺭; 꺭; á„ᅤᆴ; 꺭; á„ᅤᆴ; ) HANGUL SYLLABLE GGYAELT
+AEAE;AEAE;1101 1164 11B5;AEAE;1101 1164 11B5; # (꺮; 꺮; á„ᅤᆵ; 꺮; á„ᅤᆵ; ) HANGUL SYLLABLE GGYAELP
+AEAF;AEAF;1101 1164 11B6;AEAF;1101 1164 11B6; # (꺯; 꺯; á„ᅤᆶ; 꺯; á„ᅤᆶ; ) HANGUL SYLLABLE GGYAELH
+AEB0;AEB0;1101 1164 11B7;AEB0;1101 1164 11B7; # (꺰; 꺰; á„ᅤᆷ; 꺰; á„ᅤᆷ; ) HANGUL SYLLABLE GGYAEM
+AEB1;AEB1;1101 1164 11B8;AEB1;1101 1164 11B8; # (꺱; 꺱; á„ᅤᆸ; 꺱; á„ᅤᆸ; ) HANGUL SYLLABLE GGYAEB
+AEB2;AEB2;1101 1164 11B9;AEB2;1101 1164 11B9; # (꺲; 꺲; á„ᅤᆹ; 꺲; á„ᅤᆹ; ) HANGUL SYLLABLE GGYAEBS
+AEB3;AEB3;1101 1164 11BA;AEB3;1101 1164 11BA; # (꺳; 꺳; á„ᅤᆺ; 꺳; á„ᅤᆺ; ) HANGUL SYLLABLE GGYAES
+AEB4;AEB4;1101 1164 11BB;AEB4;1101 1164 11BB; # (꺴; 꺴; á„ᅤᆻ; 꺴; á„ᅤᆻ; ) HANGUL SYLLABLE GGYAESS
+AEB5;AEB5;1101 1164 11BC;AEB5;1101 1164 11BC; # (꺵; 꺵; á„ᅤᆼ; 꺵; á„ᅤᆼ; ) HANGUL SYLLABLE GGYAENG
+AEB6;AEB6;1101 1164 11BD;AEB6;1101 1164 11BD; # (꺶; 꺶; á„ᅤᆽ; 꺶; á„ᅤᆽ; ) HANGUL SYLLABLE GGYAEJ
+AEB7;AEB7;1101 1164 11BE;AEB7;1101 1164 11BE; # (꺷; 꺷; á„ᅤᆾ; 꺷; á„ᅤᆾ; ) HANGUL SYLLABLE GGYAEC
+AEB8;AEB8;1101 1164 11BF;AEB8;1101 1164 11BF; # (꺸; 꺸; á„ᅤᆿ; 꺸; á„ᅤᆿ; ) HANGUL SYLLABLE GGYAEK
+AEB9;AEB9;1101 1164 11C0;AEB9;1101 1164 11C0; # (꺹; 꺹; á„ᅤᇀ; 꺹; á„ᅤᇀ; ) HANGUL SYLLABLE GGYAET
+AEBA;AEBA;1101 1164 11C1;AEBA;1101 1164 11C1; # (꺺; 꺺; á„á…¤á‡; 꺺; á„á…¤á‡; ) HANGUL SYLLABLE GGYAEP
+AEBB;AEBB;1101 1164 11C2;AEBB;1101 1164 11C2; # (꺻; 꺻; á„ᅤᇂ; 꺻; á„ᅤᇂ; ) HANGUL SYLLABLE GGYAEH
+AEBC;AEBC;1101 1165;AEBC;1101 1165; # (꺼; 꺼; á„á…¥; 꺼; á„á…¥; ) HANGUL SYLLABLE GGEO
+AEBD;AEBD;1101 1165 11A8;AEBD;1101 1165 11A8; # (꺽; 꺽; á„ᅥᆨ; 꺽; á„ᅥᆨ; ) HANGUL SYLLABLE GGEOG
+AEBE;AEBE;1101 1165 11A9;AEBE;1101 1165 11A9; # (꺾; 꺾; á„ᅥᆩ; 꺾; á„ᅥᆩ; ) HANGUL SYLLABLE GGEOGG
+AEBF;AEBF;1101 1165 11AA;AEBF;1101 1165 11AA; # (꺿; 꺿; á„ᅥᆪ; 꺿; á„ᅥᆪ; ) HANGUL SYLLABLE GGEOGS
+AEC0;AEC0;1101 1165 11AB;AEC0;1101 1165 11AB; # (껀; 껀; á„ᅥᆫ; 껀; á„ᅥᆫ; ) HANGUL SYLLABLE GGEON
+AEC1;AEC1;1101 1165 11AC;AEC1;1101 1165 11AC; # (ê»; ê»; á„ᅥᆬ; ê»; á„ᅥᆬ; ) HANGUL SYLLABLE GGEONJ
+AEC2;AEC2;1101 1165 11AD;AEC2;1101 1165 11AD; # (껂; 껂; á„ᅥᆭ; 껂; á„ᅥᆭ; ) HANGUL SYLLABLE GGEONH
+AEC3;AEC3;1101 1165 11AE;AEC3;1101 1165 11AE; # (껃; 껃; á„ᅥᆮ; 껃; á„ᅥᆮ; ) HANGUL SYLLABLE GGEOD
+AEC4;AEC4;1101 1165 11AF;AEC4;1101 1165 11AF; # (껄; 껄; á„ᅥᆯ; 껄; á„ᅥᆯ; ) HANGUL SYLLABLE GGEOL
+AEC5;AEC5;1101 1165 11B0;AEC5;1101 1165 11B0; # (ê»…; ê»…; á„ᅥᆰ; ê»…; á„ᅥᆰ; ) HANGUL SYLLABLE GGEOLG
+AEC6;AEC6;1101 1165 11B1;AEC6;1101 1165 11B1; # (껆; 껆; á„ᅥᆱ; 껆; á„ᅥᆱ; ) HANGUL SYLLABLE GGEOLM
+AEC7;AEC7;1101 1165 11B2;AEC7;1101 1165 11B2; # (껇; 껇; á„ᅥᆲ; 껇; á„ᅥᆲ; ) HANGUL SYLLABLE GGEOLB
+AEC8;AEC8;1101 1165 11B3;AEC8;1101 1165 11B3; # (껈; 껈; á„ᅥᆳ; 껈; á„ᅥᆳ; ) HANGUL SYLLABLE GGEOLS
+AEC9;AEC9;1101 1165 11B4;AEC9;1101 1165 11B4; # (껉; 껉; á„ᅥᆴ; 껉; á„ᅥᆴ; ) HANGUL SYLLABLE GGEOLT
+AECA;AECA;1101 1165 11B5;AECA;1101 1165 11B5; # (껊; 껊; á„ᅥᆵ; 껊; á„ᅥᆵ; ) HANGUL SYLLABLE GGEOLP
+AECB;AECB;1101 1165 11B6;AECB;1101 1165 11B6; # (껋; 껋; á„ᅥᆶ; 껋; á„ᅥᆶ; ) HANGUL SYLLABLE GGEOLH
+AECC;AECC;1101 1165 11B7;AECC;1101 1165 11B7; # (껌; 껌; á„ᅥᆷ; 껌; á„ᅥᆷ; ) HANGUL SYLLABLE GGEOM
+AECD;AECD;1101 1165 11B8;AECD;1101 1165 11B8; # (ê»; ê»; á„ᅥᆸ; ê»; á„ᅥᆸ; ) HANGUL SYLLABLE GGEOB
+AECE;AECE;1101 1165 11B9;AECE;1101 1165 11B9; # (껎; 껎; á„ᅥᆹ; 껎; á„ᅥᆹ; ) HANGUL SYLLABLE GGEOBS
+AECF;AECF;1101 1165 11BA;AECF;1101 1165 11BA; # (ê»; ê»; á„ᅥᆺ; ê»; á„ᅥᆺ; ) HANGUL SYLLABLE GGEOS
+AED0;AED0;1101 1165 11BB;AED0;1101 1165 11BB; # (ê»; ê»; á„ᅥᆻ; ê»; á„ᅥᆻ; ) HANGUL SYLLABLE GGEOSS
+AED1;AED1;1101 1165 11BC;AED1;1101 1165 11BC; # (껑; 껑; á„ᅥᆼ; 껑; á„ᅥᆼ; ) HANGUL SYLLABLE GGEONG
+AED2;AED2;1101 1165 11BD;AED2;1101 1165 11BD; # (ê»’; ê»’; á„ᅥᆽ; ê»’; á„ᅥᆽ; ) HANGUL SYLLABLE GGEOJ
+AED3;AED3;1101 1165 11BE;AED3;1101 1165 11BE; # (껓; 껓; á„ᅥᆾ; 껓; á„ᅥᆾ; ) HANGUL SYLLABLE GGEOC
+AED4;AED4;1101 1165 11BF;AED4;1101 1165 11BF; # (ê»”; ê»”; á„ᅥᆿ; ê»”; á„ᅥᆿ; ) HANGUL SYLLABLE GGEOK
+AED5;AED5;1101 1165 11C0;AED5;1101 1165 11C0; # (껕; 껕; á„ᅥᇀ; 껕; á„ᅥᇀ; ) HANGUL SYLLABLE GGEOT
+AED6;AED6;1101 1165 11C1;AED6;1101 1165 11C1; # (ê»–; ê»–; á„á…¥á‡; ê»–; á„á…¥á‡; ) HANGUL SYLLABLE GGEOP
+AED7;AED7;1101 1165 11C2;AED7;1101 1165 11C2; # (ê»—; ê»—; á„ᅥᇂ; ê»—; á„ᅥᇂ; ) HANGUL SYLLABLE GGEOH
+AED8;AED8;1101 1166;AED8;1101 1166; # (께; 께; á„á…¦; 께; á„á…¦; ) HANGUL SYLLABLE GGE
+AED9;AED9;1101 1166 11A8;AED9;1101 1166 11A8; # (ê»™; ê»™; á„ᅦᆨ; ê»™; á„ᅦᆨ; ) HANGUL SYLLABLE GGEG
+AEDA;AEDA;1101 1166 11A9;AEDA;1101 1166 11A9; # (껚; 껚; á„ᅦᆩ; 껚; á„ᅦᆩ; ) HANGUL SYLLABLE GGEGG
+AEDB;AEDB;1101 1166 11AA;AEDB;1101 1166 11AA; # (ê»›; ê»›; á„ᅦᆪ; ê»›; á„ᅦᆪ; ) HANGUL SYLLABLE GGEGS
+AEDC;AEDC;1101 1166 11AB;AEDC;1101 1166 11AB; # (껜; 껜; á„ᅦᆫ; 껜; á„ᅦᆫ; ) HANGUL SYLLABLE GGEN
+AEDD;AEDD;1101 1166 11AC;AEDD;1101 1166 11AC; # (ê»; ê»; á„ᅦᆬ; ê»; á„ᅦᆬ; ) HANGUL SYLLABLE GGENJ
+AEDE;AEDE;1101 1166 11AD;AEDE;1101 1166 11AD; # (껞; 껞; á„ᅦᆭ; 껞; á„ᅦᆭ; ) HANGUL SYLLABLE GGENH
+AEDF;AEDF;1101 1166 11AE;AEDF;1101 1166 11AE; # (껟; 껟; á„ᅦᆮ; 껟; á„ᅦᆮ; ) HANGUL SYLLABLE GGED
+AEE0;AEE0;1101 1166 11AF;AEE0;1101 1166 11AF; # (ê» ; ê» ; á„ᅦᆯ; ê» ; á„ᅦᆯ; ) HANGUL SYLLABLE GGEL
+AEE1;AEE1;1101 1166 11B0;AEE1;1101 1166 11B0; # (껡; 껡; á„ᅦᆰ; 껡; á„ᅦᆰ; ) HANGUL SYLLABLE GGELG
+AEE2;AEE2;1101 1166 11B1;AEE2;1101 1166 11B1; # (껢; 껢; á„ᅦᆱ; 껢; á„ᅦᆱ; ) HANGUL SYLLABLE GGELM
+AEE3;AEE3;1101 1166 11B2;AEE3;1101 1166 11B2; # (껣; 껣; á„ᅦᆲ; 껣; á„ᅦᆲ; ) HANGUL SYLLABLE GGELB
+AEE4;AEE4;1101 1166 11B3;AEE4;1101 1166 11B3; # (껤; 껤; á„ᅦᆳ; 껤; á„ᅦᆳ; ) HANGUL SYLLABLE GGELS
+AEE5;AEE5;1101 1166 11B4;AEE5;1101 1166 11B4; # (껥; 껥; á„ᅦᆴ; 껥; á„ᅦᆴ; ) HANGUL SYLLABLE GGELT
+AEE6;AEE6;1101 1166 11B5;AEE6;1101 1166 11B5; # (껦; 껦; á„ᅦᆵ; 껦; á„ᅦᆵ; ) HANGUL SYLLABLE GGELP
+AEE7;AEE7;1101 1166 11B6;AEE7;1101 1166 11B6; # (껧; 껧; á„ᅦᆶ; 껧; á„ᅦᆶ; ) HANGUL SYLLABLE GGELH
+AEE8;AEE8;1101 1166 11B7;AEE8;1101 1166 11B7; # (껨; 껨; á„ᅦᆷ; 껨; á„ᅦᆷ; ) HANGUL SYLLABLE GGEM
+AEE9;AEE9;1101 1166 11B8;AEE9;1101 1166 11B8; # (껩; 껩; á„ᅦᆸ; 껩; á„ᅦᆸ; ) HANGUL SYLLABLE GGEB
+AEEA;AEEA;1101 1166 11B9;AEEA;1101 1166 11B9; # (껪; 껪; á„ᅦᆹ; 껪; á„ᅦᆹ; ) HANGUL SYLLABLE GGEBS
+AEEB;AEEB;1101 1166 11BA;AEEB;1101 1166 11BA; # (껫; 껫; á„ᅦᆺ; 껫; á„ᅦᆺ; ) HANGUL SYLLABLE GGES
+AEEC;AEEC;1101 1166 11BB;AEEC;1101 1166 11BB; # (껬; 껬; á„ᅦᆻ; 껬; á„ᅦᆻ; ) HANGUL SYLLABLE GGESS
+AEED;AEED;1101 1166 11BC;AEED;1101 1166 11BC; # (ê»­; ê»­; á„ᅦᆼ; ê»­; á„ᅦᆼ; ) HANGUL SYLLABLE GGENG
+AEEE;AEEE;1101 1166 11BD;AEEE;1101 1166 11BD; # (ê»®; ê»®; á„ᅦᆽ; ê»®; á„ᅦᆽ; ) HANGUL SYLLABLE GGEJ
+AEEF;AEEF;1101 1166 11BE;AEEF;1101 1166 11BE; # (껯; 껯; á„ᅦᆾ; 껯; á„ᅦᆾ; ) HANGUL SYLLABLE GGEC
+AEF0;AEF0;1101 1166 11BF;AEF0;1101 1166 11BF; # (ê»°; ê»°; á„ᅦᆿ; ê»°; á„ᅦᆿ; ) HANGUL SYLLABLE GGEK
+AEF1;AEF1;1101 1166 11C0;AEF1;1101 1166 11C0; # (ê»±; ê»±; á„ᅦᇀ; ê»±; á„ᅦᇀ; ) HANGUL SYLLABLE GGET
+AEF2;AEF2;1101 1166 11C1;AEF2;1101 1166 11C1; # (껲; 껲; á„á…¦á‡; 껲; á„á…¦á‡; ) HANGUL SYLLABLE GGEP
+AEF3;AEF3;1101 1166 11C2;AEF3;1101 1166 11C2; # (껳; 껳; á„ᅦᇂ; 껳; á„ᅦᇂ; ) HANGUL SYLLABLE GGEH
+AEF4;AEF4;1101 1167;AEF4;1101 1167; # (ê»´; ê»´; á„á…§; ê»´; á„á…§; ) HANGUL SYLLABLE GGYEO
+AEF5;AEF5;1101 1167 11A8;AEF5;1101 1167 11A8; # (껵; 껵; á„ᅧᆨ; 껵; á„ᅧᆨ; ) HANGUL SYLLABLE GGYEOG
+AEF6;AEF6;1101 1167 11A9;AEF6;1101 1167 11A9; # (껶; 껶; á„ᅧᆩ; 껶; á„ᅧᆩ; ) HANGUL SYLLABLE GGYEOGG
+AEF7;AEF7;1101 1167 11AA;AEF7;1101 1167 11AA; # (ê»·; ê»·; á„ᅧᆪ; ê»·; á„ᅧᆪ; ) HANGUL SYLLABLE GGYEOGS
+AEF8;AEF8;1101 1167 11AB;AEF8;1101 1167 11AB; # (껸; 껸; á„ᅧᆫ; 껸; á„ᅧᆫ; ) HANGUL SYLLABLE GGYEON
+AEF9;AEF9;1101 1167 11AC;AEF9;1101 1167 11AC; # (껹; 껹; á„ᅧᆬ; 껹; á„ᅧᆬ; ) HANGUL SYLLABLE GGYEONJ
+AEFA;AEFA;1101 1167 11AD;AEFA;1101 1167 11AD; # (껺; 껺; á„ᅧᆭ; 껺; á„ᅧᆭ; ) HANGUL SYLLABLE GGYEONH
+AEFB;AEFB;1101 1167 11AE;AEFB;1101 1167 11AE; # (ê»»; ê»»; á„ᅧᆮ; ê»»; á„ᅧᆮ; ) HANGUL SYLLABLE GGYEOD
+AEFC;AEFC;1101 1167 11AF;AEFC;1101 1167 11AF; # (껼; 껼; á„ᅧᆯ; 껼; á„ᅧᆯ; ) HANGUL SYLLABLE GGYEOL
+AEFD;AEFD;1101 1167 11B0;AEFD;1101 1167 11B0; # (껽; 껽; á„ᅧᆰ; 껽; á„ᅧᆰ; ) HANGUL SYLLABLE GGYEOLG
+AEFE;AEFE;1101 1167 11B1;AEFE;1101 1167 11B1; # (껾; 껾; á„ᅧᆱ; 껾; á„ᅧᆱ; ) HANGUL SYLLABLE GGYEOLM
+AEFF;AEFF;1101 1167 11B2;AEFF;1101 1167 11B2; # (껿; 껿; á„ᅧᆲ; 껿; á„ᅧᆲ; ) HANGUL SYLLABLE GGYEOLB
+AF00;AF00;1101 1167 11B3;AF00;1101 1167 11B3; # (ê¼€; ê¼€; á„ᅧᆳ; ê¼€; á„ᅧᆳ; ) HANGUL SYLLABLE GGYEOLS
+AF01;AF01;1101 1167 11B4;AF01;1101 1167 11B4; # (ê¼; ê¼; á„ᅧᆴ; ê¼; á„ᅧᆴ; ) HANGUL SYLLABLE GGYEOLT
+AF02;AF02;1101 1167 11B5;AF02;1101 1167 11B5; # (꼂; 꼂; á„ᅧᆵ; 꼂; á„ᅧᆵ; ) HANGUL SYLLABLE GGYEOLP
+AF03;AF03;1101 1167 11B6;AF03;1101 1167 11B6; # (꼃; 꼃; á„ᅧᆶ; 꼃; á„ᅧᆶ; ) HANGUL SYLLABLE GGYEOLH
+AF04;AF04;1101 1167 11B7;AF04;1101 1167 11B7; # (꼄; 꼄; á„ᅧᆷ; 꼄; á„ᅧᆷ; ) HANGUL SYLLABLE GGYEOM
+AF05;AF05;1101 1167 11B8;AF05;1101 1167 11B8; # (ê¼…; ê¼…; á„ᅧᆸ; ê¼…; á„ᅧᆸ; ) HANGUL SYLLABLE GGYEOB
+AF06;AF06;1101 1167 11B9;AF06;1101 1167 11B9; # (꼆; 꼆; á„ᅧᆹ; 꼆; á„ᅧᆹ; ) HANGUL SYLLABLE GGYEOBS
+AF07;AF07;1101 1167 11BA;AF07;1101 1167 11BA; # (꼇; 꼇; á„ᅧᆺ; 꼇; á„ᅧᆺ; ) HANGUL SYLLABLE GGYEOS
+AF08;AF08;1101 1167 11BB;AF08;1101 1167 11BB; # (꼈; 꼈; á„ᅧᆻ; 꼈; á„ᅧᆻ; ) HANGUL SYLLABLE GGYEOSS
+AF09;AF09;1101 1167 11BC;AF09;1101 1167 11BC; # (꼉; 꼉; á„ᅧᆼ; 꼉; á„ᅧᆼ; ) HANGUL SYLLABLE GGYEONG
+AF0A;AF0A;1101 1167 11BD;AF0A;1101 1167 11BD; # (꼊; 꼊; á„ᅧᆽ; 꼊; á„ᅧᆽ; ) HANGUL SYLLABLE GGYEOJ
+AF0B;AF0B;1101 1167 11BE;AF0B;1101 1167 11BE; # (꼋; 꼋; á„ᅧᆾ; 꼋; á„ᅧᆾ; ) HANGUL SYLLABLE GGYEOC
+AF0C;AF0C;1101 1167 11BF;AF0C;1101 1167 11BF; # (꼌; 꼌; á„ᅧᆿ; 꼌; á„ᅧᆿ; ) HANGUL SYLLABLE GGYEOK
+AF0D;AF0D;1101 1167 11C0;AF0D;1101 1167 11C0; # (ê¼; ê¼; á„ᅧᇀ; ê¼; á„ᅧᇀ; ) HANGUL SYLLABLE GGYEOT
+AF0E;AF0E;1101 1167 11C1;AF0E;1101 1167 11C1; # (꼎; 꼎; á„á…§á‡; 꼎; á„á…§á‡; ) HANGUL SYLLABLE GGYEOP
+AF0F;AF0F;1101 1167 11C2;AF0F;1101 1167 11C2; # (ê¼; ê¼; á„ᅧᇂ; ê¼; á„ᅧᇂ; ) HANGUL SYLLABLE GGYEOH
+AF10;AF10;1101 1168;AF10;1101 1168; # (ê¼; ê¼; á„á…¨; ê¼; á„á…¨; ) HANGUL SYLLABLE GGYE
+AF11;AF11;1101 1168 11A8;AF11;1101 1168 11A8; # (꼑; 꼑; á„ᅨᆨ; 꼑; á„ᅨᆨ; ) HANGUL SYLLABLE GGYEG
+AF12;AF12;1101 1168 11A9;AF12;1101 1168 11A9; # (ê¼’; ê¼’; á„ᅨᆩ; ê¼’; á„ᅨᆩ; ) HANGUL SYLLABLE GGYEGG
+AF13;AF13;1101 1168 11AA;AF13;1101 1168 11AA; # (꼓; 꼓; á„ᅨᆪ; 꼓; á„ᅨᆪ; ) HANGUL SYLLABLE GGYEGS
+AF14;AF14;1101 1168 11AB;AF14;1101 1168 11AB; # (ê¼”; ê¼”; á„ᅨᆫ; ê¼”; á„ᅨᆫ; ) HANGUL SYLLABLE GGYEN
+AF15;AF15;1101 1168 11AC;AF15;1101 1168 11AC; # (꼕; 꼕; á„ᅨᆬ; 꼕; á„ᅨᆬ; ) HANGUL SYLLABLE GGYENJ
+AF16;AF16;1101 1168 11AD;AF16;1101 1168 11AD; # (ê¼–; ê¼–; á„ᅨᆭ; ê¼–; á„ᅨᆭ; ) HANGUL SYLLABLE GGYENH
+AF17;AF17;1101 1168 11AE;AF17;1101 1168 11AE; # (ê¼—; ê¼—; á„ᅨᆮ; ê¼—; á„ᅨᆮ; ) HANGUL SYLLABLE GGYED
+AF18;AF18;1101 1168 11AF;AF18;1101 1168 11AF; # (꼘; 꼘; á„ᅨᆯ; 꼘; á„ᅨᆯ; ) HANGUL SYLLABLE GGYEL
+AF19;AF19;1101 1168 11B0;AF19;1101 1168 11B0; # (ê¼™; ê¼™; á„ᅨᆰ; ê¼™; á„ᅨᆰ; ) HANGUL SYLLABLE GGYELG
+AF1A;AF1A;1101 1168 11B1;AF1A;1101 1168 11B1; # (꼚; 꼚; á„ᅨᆱ; 꼚; á„ᅨᆱ; ) HANGUL SYLLABLE GGYELM
+AF1B;AF1B;1101 1168 11B2;AF1B;1101 1168 11B2; # (ê¼›; ê¼›; á„ᅨᆲ; ê¼›; á„ᅨᆲ; ) HANGUL SYLLABLE GGYELB
+AF1C;AF1C;1101 1168 11B3;AF1C;1101 1168 11B3; # (꼜; 꼜; á„ᅨᆳ; 꼜; á„ᅨᆳ; ) HANGUL SYLLABLE GGYELS
+AF1D;AF1D;1101 1168 11B4;AF1D;1101 1168 11B4; # (ê¼; ê¼; á„ᅨᆴ; ê¼; á„ᅨᆴ; ) HANGUL SYLLABLE GGYELT
+AF1E;AF1E;1101 1168 11B5;AF1E;1101 1168 11B5; # (꼞; 꼞; á„ᅨᆵ; 꼞; á„ᅨᆵ; ) HANGUL SYLLABLE GGYELP
+AF1F;AF1F;1101 1168 11B6;AF1F;1101 1168 11B6; # (꼟; 꼟; á„ᅨᆶ; 꼟; á„ᅨᆶ; ) HANGUL SYLLABLE GGYELH
+AF20;AF20;1101 1168 11B7;AF20;1101 1168 11B7; # (ê¼ ; ê¼ ; á„ᅨᆷ; ê¼ ; á„ᅨᆷ; ) HANGUL SYLLABLE GGYEM
+AF21;AF21;1101 1168 11B8;AF21;1101 1168 11B8; # (꼡; 꼡; á„ᅨᆸ; 꼡; á„ᅨᆸ; ) HANGUL SYLLABLE GGYEB
+AF22;AF22;1101 1168 11B9;AF22;1101 1168 11B9; # (ê¼¢; ê¼¢; á„ᅨᆹ; ê¼¢; á„ᅨᆹ; ) HANGUL SYLLABLE GGYEBS
+AF23;AF23;1101 1168 11BA;AF23;1101 1168 11BA; # (ê¼£; ê¼£; á„ᅨᆺ; ê¼£; á„ᅨᆺ; ) HANGUL SYLLABLE GGYES
+AF24;AF24;1101 1168 11BB;AF24;1101 1168 11BB; # (꼤; 꼤; á„ᅨᆻ; 꼤; á„ᅨᆻ; ) HANGUL SYLLABLE GGYESS
+AF25;AF25;1101 1168 11BC;AF25;1101 1168 11BC; # (ê¼¥; ê¼¥; á„ᅨᆼ; ê¼¥; á„ᅨᆼ; ) HANGUL SYLLABLE GGYENG
+AF26;AF26;1101 1168 11BD;AF26;1101 1168 11BD; # (꼦; 꼦; á„ᅨᆽ; 꼦; á„ᅨᆽ; ) HANGUL SYLLABLE GGYEJ
+AF27;AF27;1101 1168 11BE;AF27;1101 1168 11BE; # (꼧; 꼧; á„ᅨᆾ; 꼧; á„ᅨᆾ; ) HANGUL SYLLABLE GGYEC
+AF28;AF28;1101 1168 11BF;AF28;1101 1168 11BF; # (꼨; 꼨; á„ᅨᆿ; 꼨; á„ᅨᆿ; ) HANGUL SYLLABLE GGYEK
+AF29;AF29;1101 1168 11C0;AF29;1101 1168 11C0; # (꼩; 꼩; á„ᅨᇀ; 꼩; á„ᅨᇀ; ) HANGUL SYLLABLE GGYET
+AF2A;AF2A;1101 1168 11C1;AF2A;1101 1168 11C1; # (꼪; 꼪; á„á…¨á‡; 꼪; á„á…¨á‡; ) HANGUL SYLLABLE GGYEP
+AF2B;AF2B;1101 1168 11C2;AF2B;1101 1168 11C2; # (꼫; 꼫; á„ᅨᇂ; 꼫; á„ᅨᇂ; ) HANGUL SYLLABLE GGYEH
+AF2C;AF2C;1101 1169;AF2C;1101 1169; # (꼬; 꼬; á„á…©; 꼬; á„á…©; ) HANGUL SYLLABLE GGO
+AF2D;AF2D;1101 1169 11A8;AF2D;1101 1169 11A8; # (ê¼­; ê¼­; á„ᅩᆨ; ê¼­; á„ᅩᆨ; ) HANGUL SYLLABLE GGOG
+AF2E;AF2E;1101 1169 11A9;AF2E;1101 1169 11A9; # (ê¼®; ê¼®; á„ᅩᆩ; ê¼®; á„ᅩᆩ; ) HANGUL SYLLABLE GGOGG
+AF2F;AF2F;1101 1169 11AA;AF2F;1101 1169 11AA; # (꼯; 꼯; á„ᅩᆪ; 꼯; á„ᅩᆪ; ) HANGUL SYLLABLE GGOGS
+AF30;AF30;1101 1169 11AB;AF30;1101 1169 11AB; # (ê¼°; ê¼°; á„ᅩᆫ; ê¼°; á„ᅩᆫ; ) HANGUL SYLLABLE GGON
+AF31;AF31;1101 1169 11AC;AF31;1101 1169 11AC; # (ê¼±; ê¼±; á„ᅩᆬ; ê¼±; á„ᅩᆬ; ) HANGUL SYLLABLE GGONJ
+AF32;AF32;1101 1169 11AD;AF32;1101 1169 11AD; # (ê¼²; ê¼²; á„ᅩᆭ; ê¼²; á„ᅩᆭ; ) HANGUL SYLLABLE GGONH
+AF33;AF33;1101 1169 11AE;AF33;1101 1169 11AE; # (ê¼³; ê¼³; á„ᅩᆮ; ê¼³; á„ᅩᆮ; ) HANGUL SYLLABLE GGOD
+AF34;AF34;1101 1169 11AF;AF34;1101 1169 11AF; # (ê¼´; ê¼´; á„ᅩᆯ; ê¼´; á„ᅩᆯ; ) HANGUL SYLLABLE GGOL
+AF35;AF35;1101 1169 11B0;AF35;1101 1169 11B0; # (ê¼µ; ê¼µ; á„ᅩᆰ; ê¼µ; á„ᅩᆰ; ) HANGUL SYLLABLE GGOLG
+AF36;AF36;1101 1169 11B1;AF36;1101 1169 11B1; # (꼶; 꼶; á„ᅩᆱ; 꼶; á„ᅩᆱ; ) HANGUL SYLLABLE GGOLM
+AF37;AF37;1101 1169 11B2;AF37;1101 1169 11B2; # (ê¼·; ê¼·; á„ᅩᆲ; ê¼·; á„ᅩᆲ; ) HANGUL SYLLABLE GGOLB
+AF38;AF38;1101 1169 11B3;AF38;1101 1169 11B3; # (꼸; 꼸; á„ᅩᆳ; 꼸; á„ᅩᆳ; ) HANGUL SYLLABLE GGOLS
+AF39;AF39;1101 1169 11B4;AF39;1101 1169 11B4; # (ê¼¹; ê¼¹; á„ᅩᆴ; ê¼¹; á„ᅩᆴ; ) HANGUL SYLLABLE GGOLT
+AF3A;AF3A;1101 1169 11B5;AF3A;1101 1169 11B5; # (꼺; 꼺; á„ᅩᆵ; 꼺; á„ᅩᆵ; ) HANGUL SYLLABLE GGOLP
+AF3B;AF3B;1101 1169 11B6;AF3B;1101 1169 11B6; # (ê¼»; ê¼»; á„ᅩᆶ; ê¼»; á„ᅩᆶ; ) HANGUL SYLLABLE GGOLH
+AF3C;AF3C;1101 1169 11B7;AF3C;1101 1169 11B7; # (ê¼¼; ê¼¼; á„ᅩᆷ; ê¼¼; á„ᅩᆷ; ) HANGUL SYLLABLE GGOM
+AF3D;AF3D;1101 1169 11B8;AF3D;1101 1169 11B8; # (ê¼½; ê¼½; á„ᅩᆸ; ê¼½; á„ᅩᆸ; ) HANGUL SYLLABLE GGOB
+AF3E;AF3E;1101 1169 11B9;AF3E;1101 1169 11B9; # (ê¼¾; ê¼¾; á„ᅩᆹ; ê¼¾; á„ᅩᆹ; ) HANGUL SYLLABLE GGOBS
+AF3F;AF3F;1101 1169 11BA;AF3F;1101 1169 11BA; # (꼿; 꼿; á„ᅩᆺ; 꼿; á„ᅩᆺ; ) HANGUL SYLLABLE GGOS
+AF40;AF40;1101 1169 11BB;AF40;1101 1169 11BB; # (ê½€; ê½€; á„ᅩᆻ; ê½€; á„ᅩᆻ; ) HANGUL SYLLABLE GGOSS
+AF41;AF41;1101 1169 11BC;AF41;1101 1169 11BC; # (ê½; ê½; á„ᅩᆼ; ê½; á„ᅩᆼ; ) HANGUL SYLLABLE GGONG
+AF42;AF42;1101 1169 11BD;AF42;1101 1169 11BD; # (꽂; 꽂; á„ᅩᆽ; 꽂; á„ᅩᆽ; ) HANGUL SYLLABLE GGOJ
+AF43;AF43;1101 1169 11BE;AF43;1101 1169 11BE; # (꽃; 꽃; á„ᅩᆾ; 꽃; á„ᅩᆾ; ) HANGUL SYLLABLE GGOC
+AF44;AF44;1101 1169 11BF;AF44;1101 1169 11BF; # (꽄; 꽄; á„ᅩᆿ; 꽄; á„ᅩᆿ; ) HANGUL SYLLABLE GGOK
+AF45;AF45;1101 1169 11C0;AF45;1101 1169 11C0; # (ê½…; ê½…; á„ᅩᇀ; ê½…; á„ᅩᇀ; ) HANGUL SYLLABLE GGOT
+AF46;AF46;1101 1169 11C1;AF46;1101 1169 11C1; # (꽆; 꽆; á„á…©á‡; 꽆; á„á…©á‡; ) HANGUL SYLLABLE GGOP
+AF47;AF47;1101 1169 11C2;AF47;1101 1169 11C2; # (꽇; 꽇; á„ᅩᇂ; 꽇; á„ᅩᇂ; ) HANGUL SYLLABLE GGOH
+AF48;AF48;1101 116A;AF48;1101 116A; # (꽈; 꽈; á„á…ª; 꽈; á„á…ª; ) HANGUL SYLLABLE GGWA
+AF49;AF49;1101 116A 11A8;AF49;1101 116A 11A8; # (꽉; 꽉; á„ᅪᆨ; 꽉; á„ᅪᆨ; ) HANGUL SYLLABLE GGWAG
+AF4A;AF4A;1101 116A 11A9;AF4A;1101 116A 11A9; # (꽊; 꽊; á„ᅪᆩ; 꽊; á„ᅪᆩ; ) HANGUL SYLLABLE GGWAGG
+AF4B;AF4B;1101 116A 11AA;AF4B;1101 116A 11AA; # (꽋; 꽋; á„ᅪᆪ; 꽋; á„ᅪᆪ; ) HANGUL SYLLABLE GGWAGS
+AF4C;AF4C;1101 116A 11AB;AF4C;1101 116A 11AB; # (꽌; 꽌; á„ᅪᆫ; 꽌; á„ᅪᆫ; ) HANGUL SYLLABLE GGWAN
+AF4D;AF4D;1101 116A 11AC;AF4D;1101 116A 11AC; # (ê½; ê½; á„ᅪᆬ; ê½; á„ᅪᆬ; ) HANGUL SYLLABLE GGWANJ
+AF4E;AF4E;1101 116A 11AD;AF4E;1101 116A 11AD; # (꽎; 꽎; á„ᅪᆭ; 꽎; á„ᅪᆭ; ) HANGUL SYLLABLE GGWANH
+AF4F;AF4F;1101 116A 11AE;AF4F;1101 116A 11AE; # (ê½; ê½; á„ᅪᆮ; ê½; á„ᅪᆮ; ) HANGUL SYLLABLE GGWAD
+AF50;AF50;1101 116A 11AF;AF50;1101 116A 11AF; # (ê½; ê½; á„ᅪᆯ; ê½; á„ᅪᆯ; ) HANGUL SYLLABLE GGWAL
+AF51;AF51;1101 116A 11B0;AF51;1101 116A 11B0; # (꽑; 꽑; á„ᅪᆰ; 꽑; á„ᅪᆰ; ) HANGUL SYLLABLE GGWALG
+AF52;AF52;1101 116A 11B1;AF52;1101 116A 11B1; # (ê½’; ê½’; á„ᅪᆱ; ê½’; á„ᅪᆱ; ) HANGUL SYLLABLE GGWALM
+AF53;AF53;1101 116A 11B2;AF53;1101 116A 11B2; # (꽓; 꽓; á„ᅪᆲ; 꽓; á„ᅪᆲ; ) HANGUL SYLLABLE GGWALB
+AF54;AF54;1101 116A 11B3;AF54;1101 116A 11B3; # (ê½”; ê½”; á„ᅪᆳ; ê½”; á„ᅪᆳ; ) HANGUL SYLLABLE GGWALS
+AF55;AF55;1101 116A 11B4;AF55;1101 116A 11B4; # (꽕; 꽕; á„ᅪᆴ; 꽕; á„ᅪᆴ; ) HANGUL SYLLABLE GGWALT
+AF56;AF56;1101 116A 11B5;AF56;1101 116A 11B5; # (ê½–; ê½–; á„ᅪᆵ; ê½–; á„ᅪᆵ; ) HANGUL SYLLABLE GGWALP
+AF57;AF57;1101 116A 11B6;AF57;1101 116A 11B6; # (ê½—; ê½—; á„ᅪᆶ; ê½—; á„ᅪᆶ; ) HANGUL SYLLABLE GGWALH
+AF58;AF58;1101 116A 11B7;AF58;1101 116A 11B7; # (꽘; 꽘; á„ᅪᆷ; 꽘; á„ᅪᆷ; ) HANGUL SYLLABLE GGWAM
+AF59;AF59;1101 116A 11B8;AF59;1101 116A 11B8; # (ê½™; ê½™; á„ᅪᆸ; ê½™; á„ᅪᆸ; ) HANGUL SYLLABLE GGWAB
+AF5A;AF5A;1101 116A 11B9;AF5A;1101 116A 11B9; # (꽚; 꽚; á„ᅪᆹ; 꽚; á„ᅪᆹ; ) HANGUL SYLLABLE GGWABS
+AF5B;AF5B;1101 116A 11BA;AF5B;1101 116A 11BA; # (ê½›; ê½›; á„ᅪᆺ; ê½›; á„ᅪᆺ; ) HANGUL SYLLABLE GGWAS
+AF5C;AF5C;1101 116A 11BB;AF5C;1101 116A 11BB; # (꽜; 꽜; á„ᅪᆻ; 꽜; á„ᅪᆻ; ) HANGUL SYLLABLE GGWASS
+AF5D;AF5D;1101 116A 11BC;AF5D;1101 116A 11BC; # (ê½; ê½; á„ᅪᆼ; ê½; á„ᅪᆼ; ) HANGUL SYLLABLE GGWANG
+AF5E;AF5E;1101 116A 11BD;AF5E;1101 116A 11BD; # (꽞; 꽞; á„ᅪᆽ; 꽞; á„ᅪᆽ; ) HANGUL SYLLABLE GGWAJ
+AF5F;AF5F;1101 116A 11BE;AF5F;1101 116A 11BE; # (꽟; 꽟; á„ᅪᆾ; 꽟; á„ᅪᆾ; ) HANGUL SYLLABLE GGWAC
+AF60;AF60;1101 116A 11BF;AF60;1101 116A 11BF; # (ê½ ; ê½ ; á„ᅪᆿ; ê½ ; á„ᅪᆿ; ) HANGUL SYLLABLE GGWAK
+AF61;AF61;1101 116A 11C0;AF61;1101 116A 11C0; # (꽡; 꽡; á„ᅪᇀ; 꽡; á„ᅪᇀ; ) HANGUL SYLLABLE GGWAT
+AF62;AF62;1101 116A 11C1;AF62;1101 116A 11C1; # (ê½¢; ê½¢; á„á…ªá‡; ê½¢; á„á…ªá‡; ) HANGUL SYLLABLE GGWAP
+AF63;AF63;1101 116A 11C2;AF63;1101 116A 11C2; # (ê½£; ê½£; á„ᅪᇂ; ê½£; á„ᅪᇂ; ) HANGUL SYLLABLE GGWAH
+AF64;AF64;1101 116B;AF64;1101 116B; # (꽤; 꽤; á„á…«; 꽤; á„á…«; ) HANGUL SYLLABLE GGWAE
+AF65;AF65;1101 116B 11A8;AF65;1101 116B 11A8; # (ê½¥; ê½¥; á„ᅫᆨ; ê½¥; á„ᅫᆨ; ) HANGUL SYLLABLE GGWAEG
+AF66;AF66;1101 116B 11A9;AF66;1101 116B 11A9; # (꽦; 꽦; á„ᅫᆩ; 꽦; á„ᅫᆩ; ) HANGUL SYLLABLE GGWAEGG
+AF67;AF67;1101 116B 11AA;AF67;1101 116B 11AA; # (꽧; 꽧; á„ᅫᆪ; 꽧; á„ᅫᆪ; ) HANGUL SYLLABLE GGWAEGS
+AF68;AF68;1101 116B 11AB;AF68;1101 116B 11AB; # (꽨; 꽨; á„ᅫᆫ; 꽨; á„ᅫᆫ; ) HANGUL SYLLABLE GGWAEN
+AF69;AF69;1101 116B 11AC;AF69;1101 116B 11AC; # (꽩; 꽩; á„ᅫᆬ; 꽩; á„ᅫᆬ; ) HANGUL SYLLABLE GGWAENJ
+AF6A;AF6A;1101 116B 11AD;AF6A;1101 116B 11AD; # (꽪; 꽪; á„ᅫᆭ; 꽪; á„ᅫᆭ; ) HANGUL SYLLABLE GGWAENH
+AF6B;AF6B;1101 116B 11AE;AF6B;1101 116B 11AE; # (꽫; 꽫; á„ᅫᆮ; 꽫; á„ᅫᆮ; ) HANGUL SYLLABLE GGWAED
+AF6C;AF6C;1101 116B 11AF;AF6C;1101 116B 11AF; # (꽬; 꽬; á„ᅫᆯ; 꽬; á„ᅫᆯ; ) HANGUL SYLLABLE GGWAEL
+AF6D;AF6D;1101 116B 11B0;AF6D;1101 116B 11B0; # (ê½­; ê½­; á„ᅫᆰ; ê½­; á„ᅫᆰ; ) HANGUL SYLLABLE GGWAELG
+AF6E;AF6E;1101 116B 11B1;AF6E;1101 116B 11B1; # (ê½®; ê½®; á„ᅫᆱ; ê½®; á„ᅫᆱ; ) HANGUL SYLLABLE GGWAELM
+AF6F;AF6F;1101 116B 11B2;AF6F;1101 116B 11B2; # (꽯; 꽯; á„ᅫᆲ; 꽯; á„ᅫᆲ; ) HANGUL SYLLABLE GGWAELB
+AF70;AF70;1101 116B 11B3;AF70;1101 116B 11B3; # (ê½°; ê½°; á„ᅫᆳ; ê½°; á„ᅫᆳ; ) HANGUL SYLLABLE GGWAELS
+AF71;AF71;1101 116B 11B4;AF71;1101 116B 11B4; # (ê½±; ê½±; á„ᅫᆴ; ê½±; á„ᅫᆴ; ) HANGUL SYLLABLE GGWAELT
+AF72;AF72;1101 116B 11B5;AF72;1101 116B 11B5; # (ê½²; ê½²; á„ᅫᆵ; ê½²; á„ᅫᆵ; ) HANGUL SYLLABLE GGWAELP
+AF73;AF73;1101 116B 11B6;AF73;1101 116B 11B6; # (ê½³; ê½³; á„ᅫᆶ; ê½³; á„ᅫᆶ; ) HANGUL SYLLABLE GGWAELH
+AF74;AF74;1101 116B 11B7;AF74;1101 116B 11B7; # (ê½´; ê½´; á„ᅫᆷ; ê½´; á„ᅫᆷ; ) HANGUL SYLLABLE GGWAEM
+AF75;AF75;1101 116B 11B8;AF75;1101 116B 11B8; # (ê½µ; ê½µ; á„ᅫᆸ; ê½µ; á„ᅫᆸ; ) HANGUL SYLLABLE GGWAEB
+AF76;AF76;1101 116B 11B9;AF76;1101 116B 11B9; # (꽶; 꽶; á„ᅫᆹ; 꽶; á„ᅫᆹ; ) HANGUL SYLLABLE GGWAEBS
+AF77;AF77;1101 116B 11BA;AF77;1101 116B 11BA; # (ê½·; ê½·; á„ᅫᆺ; ê½·; á„ᅫᆺ; ) HANGUL SYLLABLE GGWAES
+AF78;AF78;1101 116B 11BB;AF78;1101 116B 11BB; # (꽸; 꽸; á„ᅫᆻ; 꽸; á„ᅫᆻ; ) HANGUL SYLLABLE GGWAESS
+AF79;AF79;1101 116B 11BC;AF79;1101 116B 11BC; # (ê½¹; ê½¹; á„ᅫᆼ; ê½¹; á„ᅫᆼ; ) HANGUL SYLLABLE GGWAENG
+AF7A;AF7A;1101 116B 11BD;AF7A;1101 116B 11BD; # (꽺; 꽺; á„ᅫᆽ; 꽺; á„ᅫᆽ; ) HANGUL SYLLABLE GGWAEJ
+AF7B;AF7B;1101 116B 11BE;AF7B;1101 116B 11BE; # (ê½»; ê½»; á„ᅫᆾ; ê½»; á„ᅫᆾ; ) HANGUL SYLLABLE GGWAEC
+AF7C;AF7C;1101 116B 11BF;AF7C;1101 116B 11BF; # (ê½¼; ê½¼; á„ᅫᆿ; ê½¼; á„ᅫᆿ; ) HANGUL SYLLABLE GGWAEK
+AF7D;AF7D;1101 116B 11C0;AF7D;1101 116B 11C0; # (ê½½; ê½½; á„ᅫᇀ; ê½½; á„ᅫᇀ; ) HANGUL SYLLABLE GGWAET
+AF7E;AF7E;1101 116B 11C1;AF7E;1101 116B 11C1; # (ê½¾; ê½¾; á„á…«á‡; ê½¾; á„á…«á‡; ) HANGUL SYLLABLE GGWAEP
+AF7F;AF7F;1101 116B 11C2;AF7F;1101 116B 11C2; # (꽿; 꽿; á„ᅫᇂ; 꽿; á„ᅫᇂ; ) HANGUL SYLLABLE GGWAEH
+AF80;AF80;1101 116C;AF80;1101 116C; # (ê¾€; ê¾€; á„á…¬; ê¾€; á„á…¬; ) HANGUL SYLLABLE GGOE
+AF81;AF81;1101 116C 11A8;AF81;1101 116C 11A8; # (ê¾; ê¾; á„ᅬᆨ; ê¾; á„ᅬᆨ; ) HANGUL SYLLABLE GGOEG
+AF82;AF82;1101 116C 11A9;AF82;1101 116C 11A9; # (꾂; 꾂; á„ᅬᆩ; 꾂; á„ᅬᆩ; ) HANGUL SYLLABLE GGOEGG
+AF83;AF83;1101 116C 11AA;AF83;1101 116C 11AA; # (꾃; 꾃; á„ᅬᆪ; 꾃; á„ᅬᆪ; ) HANGUL SYLLABLE GGOEGS
+AF84;AF84;1101 116C 11AB;AF84;1101 116C 11AB; # (꾄; 꾄; á„ᅬᆫ; 꾄; á„ᅬᆫ; ) HANGUL SYLLABLE GGOEN
+AF85;AF85;1101 116C 11AC;AF85;1101 116C 11AC; # (ê¾…; ê¾…; á„ᅬᆬ; ê¾…; á„ᅬᆬ; ) HANGUL SYLLABLE GGOENJ
+AF86;AF86;1101 116C 11AD;AF86;1101 116C 11AD; # (꾆; 꾆; á„ᅬᆭ; 꾆; á„ᅬᆭ; ) HANGUL SYLLABLE GGOENH
+AF87;AF87;1101 116C 11AE;AF87;1101 116C 11AE; # (꾇; 꾇; á„ᅬᆮ; 꾇; á„ᅬᆮ; ) HANGUL SYLLABLE GGOED
+AF88;AF88;1101 116C 11AF;AF88;1101 116C 11AF; # (꾈; 꾈; á„ᅬᆯ; 꾈; á„ᅬᆯ; ) HANGUL SYLLABLE GGOEL
+AF89;AF89;1101 116C 11B0;AF89;1101 116C 11B0; # (꾉; 꾉; á„ᅬᆰ; 꾉; á„ᅬᆰ; ) HANGUL SYLLABLE GGOELG
+AF8A;AF8A;1101 116C 11B1;AF8A;1101 116C 11B1; # (꾊; 꾊; á„ᅬᆱ; 꾊; á„ᅬᆱ; ) HANGUL SYLLABLE GGOELM
+AF8B;AF8B;1101 116C 11B2;AF8B;1101 116C 11B2; # (꾋; 꾋; á„ᅬᆲ; 꾋; á„ᅬᆲ; ) HANGUL SYLLABLE GGOELB
+AF8C;AF8C;1101 116C 11B3;AF8C;1101 116C 11B3; # (꾌; 꾌; á„ᅬᆳ; 꾌; á„ᅬᆳ; ) HANGUL SYLLABLE GGOELS
+AF8D;AF8D;1101 116C 11B4;AF8D;1101 116C 11B4; # (ê¾; ê¾; á„ᅬᆴ; ê¾; á„ᅬᆴ; ) HANGUL SYLLABLE GGOELT
+AF8E;AF8E;1101 116C 11B5;AF8E;1101 116C 11B5; # (꾎; 꾎; á„ᅬᆵ; 꾎; á„ᅬᆵ; ) HANGUL SYLLABLE GGOELP
+AF8F;AF8F;1101 116C 11B6;AF8F;1101 116C 11B6; # (ê¾; ê¾; á„ᅬᆶ; ê¾; á„ᅬᆶ; ) HANGUL SYLLABLE GGOELH
+AF90;AF90;1101 116C 11B7;AF90;1101 116C 11B7; # (ê¾; ê¾; á„ᅬᆷ; ê¾; á„ᅬᆷ; ) HANGUL SYLLABLE GGOEM
+AF91;AF91;1101 116C 11B8;AF91;1101 116C 11B8; # (꾑; 꾑; á„ᅬᆸ; 꾑; á„ᅬᆸ; ) HANGUL SYLLABLE GGOEB
+AF92;AF92;1101 116C 11B9;AF92;1101 116C 11B9; # (ê¾’; ê¾’; á„ᅬᆹ; ê¾’; á„ᅬᆹ; ) HANGUL SYLLABLE GGOEBS
+AF93;AF93;1101 116C 11BA;AF93;1101 116C 11BA; # (꾓; 꾓; á„ᅬᆺ; 꾓; á„ᅬᆺ; ) HANGUL SYLLABLE GGOES
+AF94;AF94;1101 116C 11BB;AF94;1101 116C 11BB; # (ê¾”; ê¾”; á„ᅬᆻ; ê¾”; á„ᅬᆻ; ) HANGUL SYLLABLE GGOESS
+AF95;AF95;1101 116C 11BC;AF95;1101 116C 11BC; # (꾕; 꾕; á„ᅬᆼ; 꾕; á„ᅬᆼ; ) HANGUL SYLLABLE GGOENG
+AF96;AF96;1101 116C 11BD;AF96;1101 116C 11BD; # (ê¾–; ê¾–; á„ᅬᆽ; ê¾–; á„ᅬᆽ; ) HANGUL SYLLABLE GGOEJ
+AF97;AF97;1101 116C 11BE;AF97;1101 116C 11BE; # (ê¾—; ê¾—; á„ᅬᆾ; ê¾—; á„ᅬᆾ; ) HANGUL SYLLABLE GGOEC
+AF98;AF98;1101 116C 11BF;AF98;1101 116C 11BF; # (꾘; 꾘; á„ᅬᆿ; 꾘; á„ᅬᆿ; ) HANGUL SYLLABLE GGOEK
+AF99;AF99;1101 116C 11C0;AF99;1101 116C 11C0; # (ê¾™; ê¾™; á„ᅬᇀ; ê¾™; á„ᅬᇀ; ) HANGUL SYLLABLE GGOET
+AF9A;AF9A;1101 116C 11C1;AF9A;1101 116C 11C1; # (꾚; 꾚; á„á…¬á‡; 꾚; á„á…¬á‡; ) HANGUL SYLLABLE GGOEP
+AF9B;AF9B;1101 116C 11C2;AF9B;1101 116C 11C2; # (ê¾›; ê¾›; á„ᅬᇂ; ê¾›; á„ᅬᇂ; ) HANGUL SYLLABLE GGOEH
+AF9C;AF9C;1101 116D;AF9C;1101 116D; # (꾜; 꾜; á„á…­; 꾜; á„á…­; ) HANGUL SYLLABLE GGYO
+AF9D;AF9D;1101 116D 11A8;AF9D;1101 116D 11A8; # (ê¾; ê¾; á„ᅭᆨ; ê¾; á„ᅭᆨ; ) HANGUL SYLLABLE GGYOG
+AF9E;AF9E;1101 116D 11A9;AF9E;1101 116D 11A9; # (꾞; 꾞; á„ᅭᆩ; 꾞; á„ᅭᆩ; ) HANGUL SYLLABLE GGYOGG
+AF9F;AF9F;1101 116D 11AA;AF9F;1101 116D 11AA; # (꾟; 꾟; á„ᅭᆪ; 꾟; á„ᅭᆪ; ) HANGUL SYLLABLE GGYOGS
+AFA0;AFA0;1101 116D 11AB;AFA0;1101 116D 11AB; # (ê¾ ; ê¾ ; á„ᅭᆫ; ê¾ ; á„ᅭᆫ; ) HANGUL SYLLABLE GGYON
+AFA1;AFA1;1101 116D 11AC;AFA1;1101 116D 11AC; # (꾡; 꾡; á„ᅭᆬ; 꾡; á„ᅭᆬ; ) HANGUL SYLLABLE GGYONJ
+AFA2;AFA2;1101 116D 11AD;AFA2;1101 116D 11AD; # (ê¾¢; ê¾¢; á„ᅭᆭ; ê¾¢; á„ᅭᆭ; ) HANGUL SYLLABLE GGYONH
+AFA3;AFA3;1101 116D 11AE;AFA3;1101 116D 11AE; # (ê¾£; ê¾£; á„ᅭᆮ; ê¾£; á„ᅭᆮ; ) HANGUL SYLLABLE GGYOD
+AFA4;AFA4;1101 116D 11AF;AFA4;1101 116D 11AF; # (꾤; 꾤; á„ᅭᆯ; 꾤; á„ᅭᆯ; ) HANGUL SYLLABLE GGYOL
+AFA5;AFA5;1101 116D 11B0;AFA5;1101 116D 11B0; # (ê¾¥; ê¾¥; á„ᅭᆰ; ê¾¥; á„ᅭᆰ; ) HANGUL SYLLABLE GGYOLG
+AFA6;AFA6;1101 116D 11B1;AFA6;1101 116D 11B1; # (꾦; 꾦; á„ᅭᆱ; 꾦; á„ᅭᆱ; ) HANGUL SYLLABLE GGYOLM
+AFA7;AFA7;1101 116D 11B2;AFA7;1101 116D 11B2; # (꾧; 꾧; á„ᅭᆲ; 꾧; á„ᅭᆲ; ) HANGUL SYLLABLE GGYOLB
+AFA8;AFA8;1101 116D 11B3;AFA8;1101 116D 11B3; # (꾨; 꾨; á„ᅭᆳ; 꾨; á„ᅭᆳ; ) HANGUL SYLLABLE GGYOLS
+AFA9;AFA9;1101 116D 11B4;AFA9;1101 116D 11B4; # (꾩; 꾩; á„ᅭᆴ; 꾩; á„ᅭᆴ; ) HANGUL SYLLABLE GGYOLT
+AFAA;AFAA;1101 116D 11B5;AFAA;1101 116D 11B5; # (꾪; 꾪; á„ᅭᆵ; 꾪; á„ᅭᆵ; ) HANGUL SYLLABLE GGYOLP
+AFAB;AFAB;1101 116D 11B6;AFAB;1101 116D 11B6; # (꾫; 꾫; á„ᅭᆶ; 꾫; á„ᅭᆶ; ) HANGUL SYLLABLE GGYOLH
+AFAC;AFAC;1101 116D 11B7;AFAC;1101 116D 11B7; # (꾬; 꾬; á„ᅭᆷ; 꾬; á„ᅭᆷ; ) HANGUL SYLLABLE GGYOM
+AFAD;AFAD;1101 116D 11B8;AFAD;1101 116D 11B8; # (ê¾­; ê¾­; á„ᅭᆸ; ê¾­; á„ᅭᆸ; ) HANGUL SYLLABLE GGYOB
+AFAE;AFAE;1101 116D 11B9;AFAE;1101 116D 11B9; # (ê¾®; ê¾®; á„ᅭᆹ; ê¾®; á„ᅭᆹ; ) HANGUL SYLLABLE GGYOBS
+AFAF;AFAF;1101 116D 11BA;AFAF;1101 116D 11BA; # (꾯; 꾯; á„ᅭᆺ; 꾯; á„ᅭᆺ; ) HANGUL SYLLABLE GGYOS
+AFB0;AFB0;1101 116D 11BB;AFB0;1101 116D 11BB; # (ê¾°; ê¾°; á„ᅭᆻ; ê¾°; á„ᅭᆻ; ) HANGUL SYLLABLE GGYOSS
+AFB1;AFB1;1101 116D 11BC;AFB1;1101 116D 11BC; # (ê¾±; ê¾±; á„ᅭᆼ; ê¾±; á„ᅭᆼ; ) HANGUL SYLLABLE GGYONG
+AFB2;AFB2;1101 116D 11BD;AFB2;1101 116D 11BD; # (ê¾²; ê¾²; á„ᅭᆽ; ê¾²; á„ᅭᆽ; ) HANGUL SYLLABLE GGYOJ
+AFB3;AFB3;1101 116D 11BE;AFB3;1101 116D 11BE; # (ê¾³; ê¾³; á„ᅭᆾ; ê¾³; á„ᅭᆾ; ) HANGUL SYLLABLE GGYOC
+AFB4;AFB4;1101 116D 11BF;AFB4;1101 116D 11BF; # (ê¾´; ê¾´; á„ᅭᆿ; ê¾´; á„ᅭᆿ; ) HANGUL SYLLABLE GGYOK
+AFB5;AFB5;1101 116D 11C0;AFB5;1101 116D 11C0; # (ê¾µ; ê¾µ; á„ᅭᇀ; ê¾µ; á„ᅭᇀ; ) HANGUL SYLLABLE GGYOT
+AFB6;AFB6;1101 116D 11C1;AFB6;1101 116D 11C1; # (꾶; 꾶; á„á…­á‡; 꾶; á„á…­á‡; ) HANGUL SYLLABLE GGYOP
+AFB7;AFB7;1101 116D 11C2;AFB7;1101 116D 11C2; # (ê¾·; ê¾·; á„ᅭᇂ; ê¾·; á„ᅭᇂ; ) HANGUL SYLLABLE GGYOH
+AFB8;AFB8;1101 116E;AFB8;1101 116E; # (꾸; 꾸; á„á…®; 꾸; á„á…®; ) HANGUL SYLLABLE GGU
+AFB9;AFB9;1101 116E 11A8;AFB9;1101 116E 11A8; # (ê¾¹; ê¾¹; á„ᅮᆨ; ê¾¹; á„ᅮᆨ; ) HANGUL SYLLABLE GGUG
+AFBA;AFBA;1101 116E 11A9;AFBA;1101 116E 11A9; # (꾺; 꾺; á„ᅮᆩ; 꾺; á„ᅮᆩ; ) HANGUL SYLLABLE GGUGG
+AFBB;AFBB;1101 116E 11AA;AFBB;1101 116E 11AA; # (ê¾»; ê¾»; á„ᅮᆪ; ê¾»; á„ᅮᆪ; ) HANGUL SYLLABLE GGUGS
+AFBC;AFBC;1101 116E 11AB;AFBC;1101 116E 11AB; # (ê¾¼; ê¾¼; á„ᅮᆫ; ê¾¼; á„ᅮᆫ; ) HANGUL SYLLABLE GGUN
+AFBD;AFBD;1101 116E 11AC;AFBD;1101 116E 11AC; # (ê¾½; ê¾½; á„ᅮᆬ; ê¾½; á„ᅮᆬ; ) HANGUL SYLLABLE GGUNJ
+AFBE;AFBE;1101 116E 11AD;AFBE;1101 116E 11AD; # (ê¾¾; ê¾¾; á„ᅮᆭ; ê¾¾; á„ᅮᆭ; ) HANGUL SYLLABLE GGUNH
+AFBF;AFBF;1101 116E 11AE;AFBF;1101 116E 11AE; # (꾿; 꾿; á„ᅮᆮ; 꾿; á„ᅮᆮ; ) HANGUL SYLLABLE GGUD
+AFC0;AFC0;1101 116E 11AF;AFC0;1101 116E 11AF; # (ê¿€; ê¿€; á„ᅮᆯ; ê¿€; á„ᅮᆯ; ) HANGUL SYLLABLE GGUL
+AFC1;AFC1;1101 116E 11B0;AFC1;1101 116E 11B0; # (ê¿; ê¿; á„ᅮᆰ; ê¿; á„ᅮᆰ; ) HANGUL SYLLABLE GGULG
+AFC2;AFC2;1101 116E 11B1;AFC2;1101 116E 11B1; # (ê¿‚; ê¿‚; á„ᅮᆱ; ê¿‚; á„ᅮᆱ; ) HANGUL SYLLABLE GGULM
+AFC3;AFC3;1101 116E 11B2;AFC3;1101 116E 11B2; # (꿃; 꿃; á„ᅮᆲ; 꿃; á„ᅮᆲ; ) HANGUL SYLLABLE GGULB
+AFC4;AFC4;1101 116E 11B3;AFC4;1101 116E 11B3; # (ê¿„; ê¿„; á„ᅮᆳ; ê¿„; á„ᅮᆳ; ) HANGUL SYLLABLE GGULS
+AFC5;AFC5;1101 116E 11B4;AFC5;1101 116E 11B4; # (ê¿…; ê¿…; á„ᅮᆴ; ê¿…; á„ᅮᆴ; ) HANGUL SYLLABLE GGULT
+AFC6;AFC6;1101 116E 11B5;AFC6;1101 116E 11B5; # (꿆; 꿆; á„ᅮᆵ; 꿆; á„ᅮᆵ; ) HANGUL SYLLABLE GGULP
+AFC7;AFC7;1101 116E 11B6;AFC7;1101 116E 11B6; # (꿇; 꿇; á„ᅮᆶ; 꿇; á„ᅮᆶ; ) HANGUL SYLLABLE GGULH
+AFC8;AFC8;1101 116E 11B7;AFC8;1101 116E 11B7; # (꿈; 꿈; á„ᅮᆷ; 꿈; á„ᅮᆷ; ) HANGUL SYLLABLE GGUM
+AFC9;AFC9;1101 116E 11B8;AFC9;1101 116E 11B8; # (꿉; 꿉; á„ᅮᆸ; 꿉; á„ᅮᆸ; ) HANGUL SYLLABLE GGUB
+AFCA;AFCA;1101 116E 11B9;AFCA;1101 116E 11B9; # (ê¿Š; ê¿Š; á„ᅮᆹ; ê¿Š; á„ᅮᆹ; ) HANGUL SYLLABLE GGUBS
+AFCB;AFCB;1101 116E 11BA;AFCB;1101 116E 11BA; # (ê¿‹; ê¿‹; á„ᅮᆺ; ê¿‹; á„ᅮᆺ; ) HANGUL SYLLABLE GGUS
+AFCC;AFCC;1101 116E 11BB;AFCC;1101 116E 11BB; # (ê¿Œ; ê¿Œ; á„ᅮᆻ; ê¿Œ; á„ᅮᆻ; ) HANGUL SYLLABLE GGUSS
+AFCD;AFCD;1101 116E 11BC;AFCD;1101 116E 11BC; # (ê¿; ê¿; á„ᅮᆼ; ê¿; á„ᅮᆼ; ) HANGUL SYLLABLE GGUNG
+AFCE;AFCE;1101 116E 11BD;AFCE;1101 116E 11BD; # (ê¿Ž; ê¿Ž; á„ᅮᆽ; ê¿Ž; á„ᅮᆽ; ) HANGUL SYLLABLE GGUJ
+AFCF;AFCF;1101 116E 11BE;AFCF;1101 116E 11BE; # (ê¿; ê¿; á„ᅮᆾ; ê¿; á„ᅮᆾ; ) HANGUL SYLLABLE GGUC
+AFD0;AFD0;1101 116E 11BF;AFD0;1101 116E 11BF; # (ê¿; ê¿; á„ᅮᆿ; ê¿; á„ᅮᆿ; ) HANGUL SYLLABLE GGUK
+AFD1;AFD1;1101 116E 11C0;AFD1;1101 116E 11C0; # (ê¿‘; ê¿‘; á„ᅮᇀ; ê¿‘; á„ᅮᇀ; ) HANGUL SYLLABLE GGUT
+AFD2;AFD2;1101 116E 11C1;AFD2;1101 116E 11C1; # (ê¿’; ê¿’; á„á…®á‡; ê¿’; á„á…®á‡; ) HANGUL SYLLABLE GGUP
+AFD3;AFD3;1101 116E 11C2;AFD3;1101 116E 11C2; # (ê¿“; ê¿“; á„ᅮᇂ; ê¿“; á„ᅮᇂ; ) HANGUL SYLLABLE GGUH
+AFD4;AFD4;1101 116F;AFD4;1101 116F; # (ê¿”; ê¿”; á„á…¯; ê¿”; á„á…¯; ) HANGUL SYLLABLE GGWEO
+AFD5;AFD5;1101 116F 11A8;AFD5;1101 116F 11A8; # (ê¿•; ê¿•; á„ᅯᆨ; ê¿•; á„ᅯᆨ; ) HANGUL SYLLABLE GGWEOG
+AFD6;AFD6;1101 116F 11A9;AFD6;1101 116F 11A9; # (ê¿–; ê¿–; á„ᅯᆩ; ê¿–; á„ᅯᆩ; ) HANGUL SYLLABLE GGWEOGG
+AFD7;AFD7;1101 116F 11AA;AFD7;1101 116F 11AA; # (ê¿—; ê¿—; á„ᅯᆪ; ê¿—; á„ᅯᆪ; ) HANGUL SYLLABLE GGWEOGS
+AFD8;AFD8;1101 116F 11AB;AFD8;1101 116F 11AB; # (꿘; 꿘; á„ᅯᆫ; 꿘; á„ᅯᆫ; ) HANGUL SYLLABLE GGWEON
+AFD9;AFD9;1101 116F 11AC;AFD9;1101 116F 11AC; # (ê¿™; ê¿™; á„ᅯᆬ; ê¿™; á„ᅯᆬ; ) HANGUL SYLLABLE GGWEONJ
+AFDA;AFDA;1101 116F 11AD;AFDA;1101 116F 11AD; # (ê¿š; ê¿š; á„ᅯᆭ; ê¿š; á„ᅯᆭ; ) HANGUL SYLLABLE GGWEONH
+AFDB;AFDB;1101 116F 11AE;AFDB;1101 116F 11AE; # (ê¿›; ê¿›; á„ᅯᆮ; ê¿›; á„ᅯᆮ; ) HANGUL SYLLABLE GGWEOD
+AFDC;AFDC;1101 116F 11AF;AFDC;1101 116F 11AF; # (ê¿œ; ê¿œ; á„ᅯᆯ; ê¿œ; á„ᅯᆯ; ) HANGUL SYLLABLE GGWEOL
+AFDD;AFDD;1101 116F 11B0;AFDD;1101 116F 11B0; # (ê¿; ê¿; á„ᅯᆰ; ê¿; á„ᅯᆰ; ) HANGUL SYLLABLE GGWEOLG
+AFDE;AFDE;1101 116F 11B1;AFDE;1101 116F 11B1; # (ê¿ž; ê¿ž; á„ᅯᆱ; ê¿ž; á„ᅯᆱ; ) HANGUL SYLLABLE GGWEOLM
+AFDF;AFDF;1101 116F 11B2;AFDF;1101 116F 11B2; # (ê¿Ÿ; ê¿Ÿ; á„ᅯᆲ; ê¿Ÿ; á„ᅯᆲ; ) HANGUL SYLLABLE GGWEOLB
+AFE0;AFE0;1101 116F 11B3;AFE0;1101 116F 11B3; # (ê¿ ; ê¿ ; á„ᅯᆳ; ê¿ ; á„ᅯᆳ; ) HANGUL SYLLABLE GGWEOLS
+AFE1;AFE1;1101 116F 11B4;AFE1;1101 116F 11B4; # (ê¿¡; ê¿¡; á„ᅯᆴ; ê¿¡; á„ᅯᆴ; ) HANGUL SYLLABLE GGWEOLT
+AFE2;AFE2;1101 116F 11B5;AFE2;1101 116F 11B5; # (ê¿¢; ê¿¢; á„ᅯᆵ; ê¿¢; á„ᅯᆵ; ) HANGUL SYLLABLE GGWEOLP
+AFE3;AFE3;1101 116F 11B6;AFE3;1101 116F 11B6; # (ê¿£; ê¿£; á„ᅯᆶ; ê¿£; á„ᅯᆶ; ) HANGUL SYLLABLE GGWEOLH
+AFE4;AFE4;1101 116F 11B7;AFE4;1101 116F 11B7; # (꿤; 꿤; á„ᅯᆷ; 꿤; á„ᅯᆷ; ) HANGUL SYLLABLE GGWEOM
+AFE5;AFE5;1101 116F 11B8;AFE5;1101 116F 11B8; # (ê¿¥; ê¿¥; á„ᅯᆸ; ê¿¥; á„ᅯᆸ; ) HANGUL SYLLABLE GGWEOB
+AFE6;AFE6;1101 116F 11B9;AFE6;1101 116F 11B9; # (꿦; 꿦; á„ᅯᆹ; 꿦; á„ᅯᆹ; ) HANGUL SYLLABLE GGWEOBS
+AFE7;AFE7;1101 116F 11BA;AFE7;1101 116F 11BA; # (꿧; 꿧; á„ᅯᆺ; 꿧; á„ᅯᆺ; ) HANGUL SYLLABLE GGWEOS
+AFE8;AFE8;1101 116F 11BB;AFE8;1101 116F 11BB; # (꿨; 꿨; á„ᅯᆻ; 꿨; á„ᅯᆻ; ) HANGUL SYLLABLE GGWEOSS
+AFE9;AFE9;1101 116F 11BC;AFE9;1101 116F 11BC; # (ê¿©; ê¿©; á„ᅯᆼ; ê¿©; á„ᅯᆼ; ) HANGUL SYLLABLE GGWEONG
+AFEA;AFEA;1101 116F 11BD;AFEA;1101 116F 11BD; # (꿪; 꿪; á„ᅯᆽ; 꿪; á„ᅯᆽ; ) HANGUL SYLLABLE GGWEOJ
+AFEB;AFEB;1101 116F 11BE;AFEB;1101 116F 11BE; # (ê¿«; ê¿«; á„ᅯᆾ; ê¿«; á„ᅯᆾ; ) HANGUL SYLLABLE GGWEOC
+AFEC;AFEC;1101 116F 11BF;AFEC;1101 116F 11BF; # (꿬; 꿬; á„ᅯᆿ; 꿬; á„ᅯᆿ; ) HANGUL SYLLABLE GGWEOK
+AFED;AFED;1101 116F 11C0;AFED;1101 116F 11C0; # (ê¿­; ê¿­; á„ᅯᇀ; ê¿­; á„ᅯᇀ; ) HANGUL SYLLABLE GGWEOT
+AFEE;AFEE;1101 116F 11C1;AFEE;1101 116F 11C1; # (ê¿®; ê¿®; á„á…¯á‡; ê¿®; á„á…¯á‡; ) HANGUL SYLLABLE GGWEOP
+AFEF;AFEF;1101 116F 11C2;AFEF;1101 116F 11C2; # (꿯; 꿯; á„ᅯᇂ; 꿯; á„ᅯᇂ; ) HANGUL SYLLABLE GGWEOH
+AFF0;AFF0;1101 1170;AFF0;1101 1170; # (ê¿°; ê¿°; á„á…°; ê¿°; á„á…°; ) HANGUL SYLLABLE GGWE
+AFF1;AFF1;1101 1170 11A8;AFF1;1101 1170 11A8; # (꿱; 꿱; á„ᅰᆨ; 꿱; á„ᅰᆨ; ) HANGUL SYLLABLE GGWEG
+AFF2;AFF2;1101 1170 11A9;AFF2;1101 1170 11A9; # (꿲; 꿲; á„ᅰᆩ; 꿲; á„ᅰᆩ; ) HANGUL SYLLABLE GGWEGG
+AFF3;AFF3;1101 1170 11AA;AFF3;1101 1170 11AA; # (꿳; 꿳; á„ᅰᆪ; 꿳; á„ᅰᆪ; ) HANGUL SYLLABLE GGWEGS
+AFF4;AFF4;1101 1170 11AB;AFF4;1101 1170 11AB; # (ê¿´; ê¿´; á„ᅰᆫ; ê¿´; á„ᅰᆫ; ) HANGUL SYLLABLE GGWEN
+AFF5;AFF5;1101 1170 11AC;AFF5;1101 1170 11AC; # (꿵; 꿵; á„ᅰᆬ; 꿵; á„ᅰᆬ; ) HANGUL SYLLABLE GGWENJ
+AFF6;AFF6;1101 1170 11AD;AFF6;1101 1170 11AD; # (꿶; 꿶; á„ᅰᆭ; 꿶; á„ᅰᆭ; ) HANGUL SYLLABLE GGWENH
+AFF7;AFF7;1101 1170 11AE;AFF7;1101 1170 11AE; # (ê¿·; ê¿·; á„ᅰᆮ; ê¿·; á„ᅰᆮ; ) HANGUL SYLLABLE GGWED
+AFF8;AFF8;1101 1170 11AF;AFF8;1101 1170 11AF; # (꿸; 꿸; á„ᅰᆯ; 꿸; á„ᅰᆯ; ) HANGUL SYLLABLE GGWEL
+AFF9;AFF9;1101 1170 11B0;AFF9;1101 1170 11B0; # (꿹; 꿹; á„ᅰᆰ; 꿹; á„ᅰᆰ; ) HANGUL SYLLABLE GGWELG
+AFFA;AFFA;1101 1170 11B1;AFFA;1101 1170 11B1; # (꿺; 꿺; á„ᅰᆱ; 꿺; á„ᅰᆱ; ) HANGUL SYLLABLE GGWELM
+AFFB;AFFB;1101 1170 11B2;AFFB;1101 1170 11B2; # (ê¿»; ê¿»; á„ᅰᆲ; ê¿»; á„ᅰᆲ; ) HANGUL SYLLABLE GGWELB
+AFFC;AFFC;1101 1170 11B3;AFFC;1101 1170 11B3; # (꿼; 꿼; á„ᅰᆳ; 꿼; á„ᅰᆳ; ) HANGUL SYLLABLE GGWELS
+AFFD;AFFD;1101 1170 11B4;AFFD;1101 1170 11B4; # (꿽; 꿽; á„ᅰᆴ; 꿽; á„ᅰᆴ; ) HANGUL SYLLABLE GGWELT
+AFFE;AFFE;1101 1170 11B5;AFFE;1101 1170 11B5; # (꿾; 꿾; á„ᅰᆵ; 꿾; á„ᅰᆵ; ) HANGUL SYLLABLE GGWELP
+AFFF;AFFF;1101 1170 11B6;AFFF;1101 1170 11B6; # (ê¿¿; ê¿¿; á„ᅰᆶ; ê¿¿; á„ᅰᆶ; ) HANGUL SYLLABLE GGWELH
+B000;B000;1101 1170 11B7;B000;1101 1170 11B7; # (뀀; 뀀; á„ᅰᆷ; 뀀; á„ᅰᆷ; ) HANGUL SYLLABLE GGWEM
+B001;B001;1101 1170 11B8;B001;1101 1170 11B8; # (ë€; ë€; á„ᅰᆸ; ë€; á„ᅰᆸ; ) HANGUL SYLLABLE GGWEB
+B002;B002;1101 1170 11B9;B002;1101 1170 11B9; # (뀂; 뀂; á„ᅰᆹ; 뀂; á„ᅰᆹ; ) HANGUL SYLLABLE GGWEBS
+B003;B003;1101 1170 11BA;B003;1101 1170 11BA; # (뀃; 뀃; á„ᅰᆺ; 뀃; á„ᅰᆺ; ) HANGUL SYLLABLE GGWES
+B004;B004;1101 1170 11BB;B004;1101 1170 11BB; # (뀄; 뀄; á„ᅰᆻ; 뀄; á„ᅰᆻ; ) HANGUL SYLLABLE GGWESS
+B005;B005;1101 1170 11BC;B005;1101 1170 11BC; # (뀅; 뀅; á„ᅰᆼ; 뀅; á„ᅰᆼ; ) HANGUL SYLLABLE GGWENG
+B006;B006;1101 1170 11BD;B006;1101 1170 11BD; # (뀆; 뀆; á„ᅰᆽ; 뀆; á„ᅰᆽ; ) HANGUL SYLLABLE GGWEJ
+B007;B007;1101 1170 11BE;B007;1101 1170 11BE; # (뀇; 뀇; á„ᅰᆾ; 뀇; á„ᅰᆾ; ) HANGUL SYLLABLE GGWEC
+B008;B008;1101 1170 11BF;B008;1101 1170 11BF; # (뀈; 뀈; á„ᅰᆿ; 뀈; á„ᅰᆿ; ) HANGUL SYLLABLE GGWEK
+B009;B009;1101 1170 11C0;B009;1101 1170 11C0; # (뀉; 뀉; á„ᅰᇀ; 뀉; á„ᅰᇀ; ) HANGUL SYLLABLE GGWET
+B00A;B00A;1101 1170 11C1;B00A;1101 1170 11C1; # (뀊; 뀊; á„á…°á‡; 뀊; á„á…°á‡; ) HANGUL SYLLABLE GGWEP
+B00B;B00B;1101 1170 11C2;B00B;1101 1170 11C2; # (뀋; 뀋; á„ᅰᇂ; 뀋; á„ᅰᇂ; ) HANGUL SYLLABLE GGWEH
+B00C;B00C;1101 1171;B00C;1101 1171; # (뀌; 뀌; á„á…±; 뀌; á„á…±; ) HANGUL SYLLABLE GGWI
+B00D;B00D;1101 1171 11A8;B00D;1101 1171 11A8; # (ë€; ë€; á„ᅱᆨ; ë€; á„ᅱᆨ; ) HANGUL SYLLABLE GGWIG
+B00E;B00E;1101 1171 11A9;B00E;1101 1171 11A9; # (뀎; 뀎; á„ᅱᆩ; 뀎; á„ᅱᆩ; ) HANGUL SYLLABLE GGWIGG
+B00F;B00F;1101 1171 11AA;B00F;1101 1171 11AA; # (ë€; ë€; á„ᅱᆪ; ë€; á„ᅱᆪ; ) HANGUL SYLLABLE GGWIGS
+B010;B010;1101 1171 11AB;B010;1101 1171 11AB; # (ë€; ë€; á„ᅱᆫ; ë€; á„ᅱᆫ; ) HANGUL SYLLABLE GGWIN
+B011;B011;1101 1171 11AC;B011;1101 1171 11AC; # (뀑; 뀑; á„ᅱᆬ; 뀑; á„ᅱᆬ; ) HANGUL SYLLABLE GGWINJ
+B012;B012;1101 1171 11AD;B012;1101 1171 11AD; # (뀒; 뀒; á„ᅱᆭ; 뀒; á„ᅱᆭ; ) HANGUL SYLLABLE GGWINH
+B013;B013;1101 1171 11AE;B013;1101 1171 11AE; # (뀓; 뀓; á„ᅱᆮ; 뀓; á„ᅱᆮ; ) HANGUL SYLLABLE GGWID
+B014;B014;1101 1171 11AF;B014;1101 1171 11AF; # (뀔; 뀔; á„ᅱᆯ; 뀔; á„ᅱᆯ; ) HANGUL SYLLABLE GGWIL
+B015;B015;1101 1171 11B0;B015;1101 1171 11B0; # (뀕; 뀕; á„ᅱᆰ; 뀕; á„ᅱᆰ; ) HANGUL SYLLABLE GGWILG
+B016;B016;1101 1171 11B1;B016;1101 1171 11B1; # (뀖; 뀖; á„ᅱᆱ; 뀖; á„ᅱᆱ; ) HANGUL SYLLABLE GGWILM
+B017;B017;1101 1171 11B2;B017;1101 1171 11B2; # (뀗; 뀗; á„ᅱᆲ; 뀗; á„ᅱᆲ; ) HANGUL SYLLABLE GGWILB
+B018;B018;1101 1171 11B3;B018;1101 1171 11B3; # (뀘; 뀘; á„ᅱᆳ; 뀘; á„ᅱᆳ; ) HANGUL SYLLABLE GGWILS
+B019;B019;1101 1171 11B4;B019;1101 1171 11B4; # (뀙; 뀙; á„ᅱᆴ; 뀙; á„ᅱᆴ; ) HANGUL SYLLABLE GGWILT
+B01A;B01A;1101 1171 11B5;B01A;1101 1171 11B5; # (뀚; 뀚; á„ᅱᆵ; 뀚; á„ᅱᆵ; ) HANGUL SYLLABLE GGWILP
+B01B;B01B;1101 1171 11B6;B01B;1101 1171 11B6; # (뀛; 뀛; á„ᅱᆶ; 뀛; á„ᅱᆶ; ) HANGUL SYLLABLE GGWILH
+B01C;B01C;1101 1171 11B7;B01C;1101 1171 11B7; # (뀜; 뀜; á„ᅱᆷ; 뀜; á„ᅱᆷ; ) HANGUL SYLLABLE GGWIM
+B01D;B01D;1101 1171 11B8;B01D;1101 1171 11B8; # (ë€; ë€; á„ᅱᆸ; ë€; á„ᅱᆸ; ) HANGUL SYLLABLE GGWIB
+B01E;B01E;1101 1171 11B9;B01E;1101 1171 11B9; # (뀞; 뀞; á„ᅱᆹ; 뀞; á„ᅱᆹ; ) HANGUL SYLLABLE GGWIBS
+B01F;B01F;1101 1171 11BA;B01F;1101 1171 11BA; # (뀟; 뀟; á„ᅱᆺ; 뀟; á„ᅱᆺ; ) HANGUL SYLLABLE GGWIS
+B020;B020;1101 1171 11BB;B020;1101 1171 11BB; # (뀠; 뀠; á„ᅱᆻ; 뀠; á„ᅱᆻ; ) HANGUL SYLLABLE GGWISS
+B021;B021;1101 1171 11BC;B021;1101 1171 11BC; # (뀡; 뀡; á„ᅱᆼ; 뀡; á„ᅱᆼ; ) HANGUL SYLLABLE GGWING
+B022;B022;1101 1171 11BD;B022;1101 1171 11BD; # (뀢; 뀢; á„ᅱᆽ; 뀢; á„ᅱᆽ; ) HANGUL SYLLABLE GGWIJ
+B023;B023;1101 1171 11BE;B023;1101 1171 11BE; # (뀣; 뀣; á„ᅱᆾ; 뀣; á„ᅱᆾ; ) HANGUL SYLLABLE GGWIC
+B024;B024;1101 1171 11BF;B024;1101 1171 11BF; # (뀤; 뀤; á„ᅱᆿ; 뀤; á„ᅱᆿ; ) HANGUL SYLLABLE GGWIK
+B025;B025;1101 1171 11C0;B025;1101 1171 11C0; # (뀥; 뀥; á„ᅱᇀ; 뀥; á„ᅱᇀ; ) HANGUL SYLLABLE GGWIT
+B026;B026;1101 1171 11C1;B026;1101 1171 11C1; # (뀦; 뀦; á„á…±á‡; 뀦; á„á…±á‡; ) HANGUL SYLLABLE GGWIP
+B027;B027;1101 1171 11C2;B027;1101 1171 11C2; # (뀧; 뀧; á„ᅱᇂ; 뀧; á„ᅱᇂ; ) HANGUL SYLLABLE GGWIH
+B028;B028;1101 1172;B028;1101 1172; # (뀨; 뀨; á„á…²; 뀨; á„á…²; ) HANGUL SYLLABLE GGYU
+B029;B029;1101 1172 11A8;B029;1101 1172 11A8; # (뀩; 뀩; á„ᅲᆨ; 뀩; á„ᅲᆨ; ) HANGUL SYLLABLE GGYUG
+B02A;B02A;1101 1172 11A9;B02A;1101 1172 11A9; # (뀪; 뀪; á„ᅲᆩ; 뀪; á„ᅲᆩ; ) HANGUL SYLLABLE GGYUGG
+B02B;B02B;1101 1172 11AA;B02B;1101 1172 11AA; # (뀫; 뀫; á„ᅲᆪ; 뀫; á„ᅲᆪ; ) HANGUL SYLLABLE GGYUGS
+B02C;B02C;1101 1172 11AB;B02C;1101 1172 11AB; # (뀬; 뀬; á„ᅲᆫ; 뀬; á„ᅲᆫ; ) HANGUL SYLLABLE GGYUN
+B02D;B02D;1101 1172 11AC;B02D;1101 1172 11AC; # (뀭; 뀭; á„ᅲᆬ; 뀭; á„ᅲᆬ; ) HANGUL SYLLABLE GGYUNJ
+B02E;B02E;1101 1172 11AD;B02E;1101 1172 11AD; # (뀮; 뀮; á„ᅲᆭ; 뀮; á„ᅲᆭ; ) HANGUL SYLLABLE GGYUNH
+B02F;B02F;1101 1172 11AE;B02F;1101 1172 11AE; # (뀯; 뀯; á„ᅲᆮ; 뀯; á„ᅲᆮ; ) HANGUL SYLLABLE GGYUD
+B030;B030;1101 1172 11AF;B030;1101 1172 11AF; # (뀰; 뀰; á„ᅲᆯ; 뀰; á„ᅲᆯ; ) HANGUL SYLLABLE GGYUL
+B031;B031;1101 1172 11B0;B031;1101 1172 11B0; # (뀱; 뀱; á„ᅲᆰ; 뀱; á„ᅲᆰ; ) HANGUL SYLLABLE GGYULG
+B032;B032;1101 1172 11B1;B032;1101 1172 11B1; # (뀲; 뀲; á„ᅲᆱ; 뀲; á„ᅲᆱ; ) HANGUL SYLLABLE GGYULM
+B033;B033;1101 1172 11B2;B033;1101 1172 11B2; # (뀳; 뀳; á„ᅲᆲ; 뀳; á„ᅲᆲ; ) HANGUL SYLLABLE GGYULB
+B034;B034;1101 1172 11B3;B034;1101 1172 11B3; # (뀴; 뀴; á„ᅲᆳ; 뀴; á„ᅲᆳ; ) HANGUL SYLLABLE GGYULS
+B035;B035;1101 1172 11B4;B035;1101 1172 11B4; # (뀵; 뀵; á„ᅲᆴ; 뀵; á„ᅲᆴ; ) HANGUL SYLLABLE GGYULT
+B036;B036;1101 1172 11B5;B036;1101 1172 11B5; # (뀶; 뀶; á„ᅲᆵ; 뀶; á„ᅲᆵ; ) HANGUL SYLLABLE GGYULP
+B037;B037;1101 1172 11B6;B037;1101 1172 11B6; # (뀷; 뀷; á„ᅲᆶ; 뀷; á„ᅲᆶ; ) HANGUL SYLLABLE GGYULH
+B038;B038;1101 1172 11B7;B038;1101 1172 11B7; # (뀸; 뀸; á„ᅲᆷ; 뀸; á„ᅲᆷ; ) HANGUL SYLLABLE GGYUM
+B039;B039;1101 1172 11B8;B039;1101 1172 11B8; # (뀹; 뀹; á„ᅲᆸ; 뀹; á„ᅲᆸ; ) HANGUL SYLLABLE GGYUB
+B03A;B03A;1101 1172 11B9;B03A;1101 1172 11B9; # (뀺; 뀺; á„ᅲᆹ; 뀺; á„ᅲᆹ; ) HANGUL SYLLABLE GGYUBS
+B03B;B03B;1101 1172 11BA;B03B;1101 1172 11BA; # (뀻; 뀻; á„ᅲᆺ; 뀻; á„ᅲᆺ; ) HANGUL SYLLABLE GGYUS
+B03C;B03C;1101 1172 11BB;B03C;1101 1172 11BB; # (뀼; 뀼; á„ᅲᆻ; 뀼; á„ᅲᆻ; ) HANGUL SYLLABLE GGYUSS
+B03D;B03D;1101 1172 11BC;B03D;1101 1172 11BC; # (뀽; 뀽; á„ᅲᆼ; 뀽; á„ᅲᆼ; ) HANGUL SYLLABLE GGYUNG
+B03E;B03E;1101 1172 11BD;B03E;1101 1172 11BD; # (뀾; 뀾; á„ᅲᆽ; 뀾; á„ᅲᆽ; ) HANGUL SYLLABLE GGYUJ
+B03F;B03F;1101 1172 11BE;B03F;1101 1172 11BE; # (뀿; 뀿; á„ᅲᆾ; 뀿; á„ᅲᆾ; ) HANGUL SYLLABLE GGYUC
+B040;B040;1101 1172 11BF;B040;1101 1172 11BF; # (ë€; ë€; á„ᅲᆿ; ë€; á„ᅲᆿ; ) HANGUL SYLLABLE GGYUK
+B041;B041;1101 1172 11C0;B041;1101 1172 11C0; # (ë; ë; á„ᅲᇀ; ë; á„ᅲᇀ; ) HANGUL SYLLABLE GGYUT
+B042;B042;1101 1172 11C1;B042;1101 1172 11C1; # (ë‚; ë‚; á„á…²á‡; ë‚; á„á…²á‡; ) HANGUL SYLLABLE GGYUP
+B043;B043;1101 1172 11C2;B043;1101 1172 11C2; # (ëƒ; ëƒ; á„ᅲᇂ; ëƒ; á„ᅲᇂ; ) HANGUL SYLLABLE GGYUH
+B044;B044;1101 1173;B044;1101 1173; # (ë„; ë„; á„á…³; ë„; á„á…³; ) HANGUL SYLLABLE GGEU
+B045;B045;1101 1173 11A8;B045;1101 1173 11A8; # (ë…; ë…; á„ᅳᆨ; ë…; á„ᅳᆨ; ) HANGUL SYLLABLE GGEUG
+B046;B046;1101 1173 11A9;B046;1101 1173 11A9; # (ë†; ë†; á„ᅳᆩ; ë†; á„ᅳᆩ; ) HANGUL SYLLABLE GGEUGG
+B047;B047;1101 1173 11AA;B047;1101 1173 11AA; # (ë‡; ë‡; á„ᅳᆪ; ë‡; á„ᅳᆪ; ) HANGUL SYLLABLE GGEUGS
+B048;B048;1101 1173 11AB;B048;1101 1173 11AB; # (ëˆ; ëˆ; á„ᅳᆫ; ëˆ; á„ᅳᆫ; ) HANGUL SYLLABLE GGEUN
+B049;B049;1101 1173 11AC;B049;1101 1173 11AC; # (ë‰; ë‰; á„ᅳᆬ; ë‰; á„ᅳᆬ; ) HANGUL SYLLABLE GGEUNJ
+B04A;B04A;1101 1173 11AD;B04A;1101 1173 11AD; # (ëŠ; ëŠ; á„ᅳᆭ; ëŠ; á„ᅳᆭ; ) HANGUL SYLLABLE GGEUNH
+B04B;B04B;1101 1173 11AE;B04B;1101 1173 11AE; # (ë‹; ë‹; á„ᅳᆮ; ë‹; á„ᅳᆮ; ) HANGUL SYLLABLE GGEUD
+B04C;B04C;1101 1173 11AF;B04C;1101 1173 11AF; # (ëŒ; ëŒ; á„ᅳᆯ; ëŒ; á„ᅳᆯ; ) HANGUL SYLLABLE GGEUL
+B04D;B04D;1101 1173 11B0;B04D;1101 1173 11B0; # (ë; ë; á„ᅳᆰ; ë; á„ᅳᆰ; ) HANGUL SYLLABLE GGEULG
+B04E;B04E;1101 1173 11B1;B04E;1101 1173 11B1; # (ëŽ; ëŽ; á„ᅳᆱ; ëŽ; á„ᅳᆱ; ) HANGUL SYLLABLE GGEULM
+B04F;B04F;1101 1173 11B2;B04F;1101 1173 11B2; # (ë; ë; á„ᅳᆲ; ë; á„ᅳᆲ; ) HANGUL SYLLABLE GGEULB
+B050;B050;1101 1173 11B3;B050;1101 1173 11B3; # (ë; ë; á„ᅳᆳ; ë; á„ᅳᆳ; ) HANGUL SYLLABLE GGEULS
+B051;B051;1101 1173 11B4;B051;1101 1173 11B4; # (ë‘; ë‘; á„ᅳᆴ; ë‘; á„ᅳᆴ; ) HANGUL SYLLABLE GGEULT
+B052;B052;1101 1173 11B5;B052;1101 1173 11B5; # (ë’; ë’; á„ᅳᆵ; ë’; á„ᅳᆵ; ) HANGUL SYLLABLE GGEULP
+B053;B053;1101 1173 11B6;B053;1101 1173 11B6; # (ë“; ë“; á„ᅳᆶ; ë“; á„ᅳᆶ; ) HANGUL SYLLABLE GGEULH
+B054;B054;1101 1173 11B7;B054;1101 1173 11B7; # (ë”; ë”; á„ᅳᆷ; ë”; á„ᅳᆷ; ) HANGUL SYLLABLE GGEUM
+B055;B055;1101 1173 11B8;B055;1101 1173 11B8; # (ë•; ë•; á„ᅳᆸ; ë•; á„ᅳᆸ; ) HANGUL SYLLABLE GGEUB
+B056;B056;1101 1173 11B9;B056;1101 1173 11B9; # (ë–; ë–; á„ᅳᆹ; ë–; á„ᅳᆹ; ) HANGUL SYLLABLE GGEUBS
+B057;B057;1101 1173 11BA;B057;1101 1173 11BA; # (ë—; ë—; á„ᅳᆺ; ë—; á„ᅳᆺ; ) HANGUL SYLLABLE GGEUS
+B058;B058;1101 1173 11BB;B058;1101 1173 11BB; # (ë˜; ë˜; á„ᅳᆻ; ë˜; á„ᅳᆻ; ) HANGUL SYLLABLE GGEUSS
+B059;B059;1101 1173 11BC;B059;1101 1173 11BC; # (ë™; ë™; á„ᅳᆼ; ë™; á„ᅳᆼ; ) HANGUL SYLLABLE GGEUNG
+B05A;B05A;1101 1173 11BD;B05A;1101 1173 11BD; # (ëš; ëš; á„ᅳᆽ; ëš; á„ᅳᆽ; ) HANGUL SYLLABLE GGEUJ
+B05B;B05B;1101 1173 11BE;B05B;1101 1173 11BE; # (ë›; ë›; á„ᅳᆾ; ë›; á„ᅳᆾ; ) HANGUL SYLLABLE GGEUC
+B05C;B05C;1101 1173 11BF;B05C;1101 1173 11BF; # (ëœ; ëœ; á„ᅳᆿ; ëœ; á„ᅳᆿ; ) HANGUL SYLLABLE GGEUK
+B05D;B05D;1101 1173 11C0;B05D;1101 1173 11C0; # (ë; ë; á„ᅳᇀ; ë; á„ᅳᇀ; ) HANGUL SYLLABLE GGEUT
+B05E;B05E;1101 1173 11C1;B05E;1101 1173 11C1; # (ëž; ëž; á„á…³á‡; ëž; á„á…³á‡; ) HANGUL SYLLABLE GGEUP
+B05F;B05F;1101 1173 11C2;B05F;1101 1173 11C2; # (ëŸ; ëŸ; á„ᅳᇂ; ëŸ; á„ᅳᇂ; ) HANGUL SYLLABLE GGEUH
+B060;B060;1101 1174;B060;1101 1174; # (ë ; ë ; á„á…´; ë ; á„á…´; ) HANGUL SYLLABLE GGYI
+B061;B061;1101 1174 11A8;B061;1101 1174 11A8; # (ë¡; ë¡; á„ᅴᆨ; ë¡; á„ᅴᆨ; ) HANGUL SYLLABLE GGYIG
+B062;B062;1101 1174 11A9;B062;1101 1174 11A9; # (ë¢; ë¢; á„ᅴᆩ; ë¢; á„ᅴᆩ; ) HANGUL SYLLABLE GGYIGG
+B063;B063;1101 1174 11AA;B063;1101 1174 11AA; # (ë£; ë£; á„ᅴᆪ; ë£; á„ᅴᆪ; ) HANGUL SYLLABLE GGYIGS
+B064;B064;1101 1174 11AB;B064;1101 1174 11AB; # (ë¤; ë¤; á„ᅴᆫ; ë¤; á„ᅴᆫ; ) HANGUL SYLLABLE GGYIN
+B065;B065;1101 1174 11AC;B065;1101 1174 11AC; # (ë¥; ë¥; á„ᅴᆬ; ë¥; á„ᅴᆬ; ) HANGUL SYLLABLE GGYINJ
+B066;B066;1101 1174 11AD;B066;1101 1174 11AD; # (ë¦; ë¦; á„ᅴᆭ; ë¦; á„ᅴᆭ; ) HANGUL SYLLABLE GGYINH
+B067;B067;1101 1174 11AE;B067;1101 1174 11AE; # (ë§; ë§; á„ᅴᆮ; ë§; á„ᅴᆮ; ) HANGUL SYLLABLE GGYID
+B068;B068;1101 1174 11AF;B068;1101 1174 11AF; # (ë¨; ë¨; á„ᅴᆯ; ë¨; á„ᅴᆯ; ) HANGUL SYLLABLE GGYIL
+B069;B069;1101 1174 11B0;B069;1101 1174 11B0; # (ë©; ë©; á„ᅴᆰ; ë©; á„ᅴᆰ; ) HANGUL SYLLABLE GGYILG
+B06A;B06A;1101 1174 11B1;B06A;1101 1174 11B1; # (ëª; ëª; á„ᅴᆱ; ëª; á„ᅴᆱ; ) HANGUL SYLLABLE GGYILM
+B06B;B06B;1101 1174 11B2;B06B;1101 1174 11B2; # (ë«; ë«; á„ᅴᆲ; ë«; á„ᅴᆲ; ) HANGUL SYLLABLE GGYILB
+B06C;B06C;1101 1174 11B3;B06C;1101 1174 11B3; # (ë¬; ë¬; á„ᅴᆳ; ë¬; á„ᅴᆳ; ) HANGUL SYLLABLE GGYILS
+B06D;B06D;1101 1174 11B4;B06D;1101 1174 11B4; # (ë­; ë­; á„ᅴᆴ; ë­; á„ᅴᆴ; ) HANGUL SYLLABLE GGYILT
+B06E;B06E;1101 1174 11B5;B06E;1101 1174 11B5; # (ë®; ë®; á„ᅴᆵ; ë®; á„ᅴᆵ; ) HANGUL SYLLABLE GGYILP
+B06F;B06F;1101 1174 11B6;B06F;1101 1174 11B6; # (ë¯; ë¯; á„ᅴᆶ; ë¯; á„ᅴᆶ; ) HANGUL SYLLABLE GGYILH
+B070;B070;1101 1174 11B7;B070;1101 1174 11B7; # (ë°; ë°; á„ᅴᆷ; ë°; á„ᅴᆷ; ) HANGUL SYLLABLE GGYIM
+B071;B071;1101 1174 11B8;B071;1101 1174 11B8; # (ë±; ë±; á„ᅴᆸ; ë±; á„ᅴᆸ; ) HANGUL SYLLABLE GGYIB
+B072;B072;1101 1174 11B9;B072;1101 1174 11B9; # (ë²; ë²; á„ᅴᆹ; ë²; á„ᅴᆹ; ) HANGUL SYLLABLE GGYIBS
+B073;B073;1101 1174 11BA;B073;1101 1174 11BA; # (ë³; ë³; á„ᅴᆺ; ë³; á„ᅴᆺ; ) HANGUL SYLLABLE GGYIS
+B074;B074;1101 1174 11BB;B074;1101 1174 11BB; # (ë´; ë´; á„ᅴᆻ; ë´; á„ᅴᆻ; ) HANGUL SYLLABLE GGYISS
+B075;B075;1101 1174 11BC;B075;1101 1174 11BC; # (ëµ; ëµ; á„ᅴᆼ; ëµ; á„ᅴᆼ; ) HANGUL SYLLABLE GGYING
+B076;B076;1101 1174 11BD;B076;1101 1174 11BD; # (ë¶; ë¶; á„ᅴᆽ; ë¶; á„ᅴᆽ; ) HANGUL SYLLABLE GGYIJ
+B077;B077;1101 1174 11BE;B077;1101 1174 11BE; # (ë·; ë·; á„ᅴᆾ; ë·; á„ᅴᆾ; ) HANGUL SYLLABLE GGYIC
+B078;B078;1101 1174 11BF;B078;1101 1174 11BF; # (ë¸; ë¸; á„ᅴᆿ; ë¸; á„ᅴᆿ; ) HANGUL SYLLABLE GGYIK
+B079;B079;1101 1174 11C0;B079;1101 1174 11C0; # (ë¹; ë¹; á„ᅴᇀ; ë¹; á„ᅴᇀ; ) HANGUL SYLLABLE GGYIT
+B07A;B07A;1101 1174 11C1;B07A;1101 1174 11C1; # (ëº; ëº; á„á…´á‡; ëº; á„á…´á‡; ) HANGUL SYLLABLE GGYIP
+B07B;B07B;1101 1174 11C2;B07B;1101 1174 11C2; # (ë»; ë»; á„ᅴᇂ; ë»; á„ᅴᇂ; ) HANGUL SYLLABLE GGYIH
+B07C;B07C;1101 1175;B07C;1101 1175; # (ë¼; ë¼; á„á…µ; ë¼; á„á…µ; ) HANGUL SYLLABLE GGI
+B07D;B07D;1101 1175 11A8;B07D;1101 1175 11A8; # (ë½; ë½; á„ᅵᆨ; ë½; á„ᅵᆨ; ) HANGUL SYLLABLE GGIG
+B07E;B07E;1101 1175 11A9;B07E;1101 1175 11A9; # (ë¾; ë¾; á„ᅵᆩ; ë¾; á„ᅵᆩ; ) HANGUL SYLLABLE GGIGG
+B07F;B07F;1101 1175 11AA;B07F;1101 1175 11AA; # (ë¿; ë¿; á„ᅵᆪ; ë¿; á„ᅵᆪ; ) HANGUL SYLLABLE GGIGS
+B080;B080;1101 1175 11AB;B080;1101 1175 11AB; # (ë‚€; ë‚€; á„ᅵᆫ; ë‚€; á„ᅵᆫ; ) HANGUL SYLLABLE GGIN
+B081;B081;1101 1175 11AC;B081;1101 1175 11AC; # (ë‚; ë‚; á„ᅵᆬ; ë‚; á„ᅵᆬ; ) HANGUL SYLLABLE GGINJ
+B082;B082;1101 1175 11AD;B082;1101 1175 11AD; # (ë‚‚; ë‚‚; á„ᅵᆭ; ë‚‚; á„ᅵᆭ; ) HANGUL SYLLABLE GGINH
+B083;B083;1101 1175 11AE;B083;1101 1175 11AE; # (낃; 낃; á„ᅵᆮ; 낃; á„ᅵᆮ; ) HANGUL SYLLABLE GGID
+B084;B084;1101 1175 11AF;B084;1101 1175 11AF; # (ë‚„; ë‚„; á„ᅵᆯ; ë‚„; á„ᅵᆯ; ) HANGUL SYLLABLE GGIL
+B085;B085;1101 1175 11B0;B085;1101 1175 11B0; # (ë‚…; ë‚…; á„ᅵᆰ; ë‚…; á„ᅵᆰ; ) HANGUL SYLLABLE GGILG
+B086;B086;1101 1175 11B1;B086;1101 1175 11B1; # (낆; 낆; á„ᅵᆱ; 낆; á„ᅵᆱ; ) HANGUL SYLLABLE GGILM
+B087;B087;1101 1175 11B2;B087;1101 1175 11B2; # (낇; 낇; á„ᅵᆲ; 낇; á„ᅵᆲ; ) HANGUL SYLLABLE GGILB
+B088;B088;1101 1175 11B3;B088;1101 1175 11B3; # (낈; 낈; á„ᅵᆳ; 낈; á„ᅵᆳ; ) HANGUL SYLLABLE GGILS
+B089;B089;1101 1175 11B4;B089;1101 1175 11B4; # (낉; 낉; á„ᅵᆴ; 낉; á„ᅵᆴ; ) HANGUL SYLLABLE GGILT
+B08A;B08A;1101 1175 11B5;B08A;1101 1175 11B5; # (ë‚Š; ë‚Š; á„ᅵᆵ; ë‚Š; á„ᅵᆵ; ) HANGUL SYLLABLE GGILP
+B08B;B08B;1101 1175 11B6;B08B;1101 1175 11B6; # (ë‚‹; ë‚‹; á„ᅵᆶ; ë‚‹; á„ᅵᆶ; ) HANGUL SYLLABLE GGILH
+B08C;B08C;1101 1175 11B7;B08C;1101 1175 11B7; # (ë‚Œ; ë‚Œ; á„ᅵᆷ; ë‚Œ; á„ᅵᆷ; ) HANGUL SYLLABLE GGIM
+B08D;B08D;1101 1175 11B8;B08D;1101 1175 11B8; # (ë‚; ë‚; á„ᅵᆸ; ë‚; á„ᅵᆸ; ) HANGUL SYLLABLE GGIB
+B08E;B08E;1101 1175 11B9;B08E;1101 1175 11B9; # (ë‚Ž; ë‚Ž; á„ᅵᆹ; ë‚Ž; á„ᅵᆹ; ) HANGUL SYLLABLE GGIBS
+B08F;B08F;1101 1175 11BA;B08F;1101 1175 11BA; # (ë‚; ë‚; á„ᅵᆺ; ë‚; á„ᅵᆺ; ) HANGUL SYLLABLE GGIS
+B090;B090;1101 1175 11BB;B090;1101 1175 11BB; # (ë‚; ë‚; á„ᅵᆻ; ë‚; á„ᅵᆻ; ) HANGUL SYLLABLE GGISS
+B091;B091;1101 1175 11BC;B091;1101 1175 11BC; # (ë‚‘; ë‚‘; á„ᅵᆼ; ë‚‘; á„ᅵᆼ; ) HANGUL SYLLABLE GGING
+B092;B092;1101 1175 11BD;B092;1101 1175 11BD; # (ë‚’; ë‚’; á„ᅵᆽ; ë‚’; á„ᅵᆽ; ) HANGUL SYLLABLE GGIJ
+B093;B093;1101 1175 11BE;B093;1101 1175 11BE; # (ë‚“; ë‚“; á„ᅵᆾ; ë‚“; á„ᅵᆾ; ) HANGUL SYLLABLE GGIC
+B094;B094;1101 1175 11BF;B094;1101 1175 11BF; # (ë‚”; ë‚”; á„ᅵᆿ; ë‚”; á„ᅵᆿ; ) HANGUL SYLLABLE GGIK
+B095;B095;1101 1175 11C0;B095;1101 1175 11C0; # (ë‚•; ë‚•; á„ᅵᇀ; ë‚•; á„ᅵᇀ; ) HANGUL SYLLABLE GGIT
+B096;B096;1101 1175 11C1;B096;1101 1175 11C1; # (ë‚–; ë‚–; á„á…µá‡; ë‚–; á„á…µá‡; ) HANGUL SYLLABLE GGIP
+B097;B097;1101 1175 11C2;B097;1101 1175 11C2; # (ë‚—; ë‚—; á„ᅵᇂ; ë‚—; á„ᅵᇂ; ) HANGUL SYLLABLE GGIH
+B098;B098;1102 1161;B098;1102 1161; # (나; 나; 나; 나; 나; ) HANGUL SYLLABLE NA
+B099;B099;1102 1161 11A8;B099;1102 1161 11A8; # (낙; 낙; 낙; 낙; 낙; ) HANGUL SYLLABLE NAG
+B09A;B09A;1102 1161 11A9;B09A;1102 1161 11A9; # (낚; 낚; 낚; 낚; 낚; ) HANGUL SYLLABLE NAGG
+B09B;B09B;1102 1161 11AA;B09B;1102 1161 11AA; # (낛; 낛; 낛; 낛; 낛; ) HANGUL SYLLABLE NAGS
+B09C;B09C;1102 1161 11AB;B09C;1102 1161 11AB; # (난; 난; 난; 난; 난; ) HANGUL SYLLABLE NAN
+B09D;B09D;1102 1161 11AC;B09D;1102 1161 11AC; # (ë‚; ë‚; 낝; ë‚; 낝; ) HANGUL SYLLABLE NANJ
+B09E;B09E;1102 1161 11AD;B09E;1102 1161 11AD; # (낞; 낞; 낞; 낞; 낞; ) HANGUL SYLLABLE NANH
+B09F;B09F;1102 1161 11AE;B09F;1102 1161 11AE; # (낟; 낟; 낟; 낟; 낟; ) HANGUL SYLLABLE NAD
+B0A0;B0A0;1102 1161 11AF;B0A0;1102 1161 11AF; # (날; 날; 날; 날; 날; ) HANGUL SYLLABLE NAL
+B0A1;B0A1;1102 1161 11B0;B0A1;1102 1161 11B0; # (낡; 낡; 낡; 낡; 낡; ) HANGUL SYLLABLE NALG
+B0A2;B0A2;1102 1161 11B1;B0A2;1102 1161 11B1; # (낢; 낢; 낢; 낢; 낢; ) HANGUL SYLLABLE NALM
+B0A3;B0A3;1102 1161 11B2;B0A3;1102 1161 11B2; # (낣; 낣; 낣; 낣; 낣; ) HANGUL SYLLABLE NALB
+B0A4;B0A4;1102 1161 11B3;B0A4;1102 1161 11B3; # (낤; 낤; 낤; 낤; 낤; ) HANGUL SYLLABLE NALS
+B0A5;B0A5;1102 1161 11B4;B0A5;1102 1161 11B4; # (낥; 낥; 낥; 낥; 낥; ) HANGUL SYLLABLE NALT
+B0A6;B0A6;1102 1161 11B5;B0A6;1102 1161 11B5; # (낦; 낦; 낦; 낦; 낦; ) HANGUL SYLLABLE NALP
+B0A7;B0A7;1102 1161 11B6;B0A7;1102 1161 11B6; # (낧; 낧; 낧; 낧; 낧; ) HANGUL SYLLABLE NALH
+B0A8;B0A8;1102 1161 11B7;B0A8;1102 1161 11B7; # (남; 남; 남; 남; 남; ) HANGUL SYLLABLE NAM
+B0A9;B0A9;1102 1161 11B8;B0A9;1102 1161 11B8; # (납; 납; 납; 납; 납; ) HANGUL SYLLABLE NAB
+B0AA;B0AA;1102 1161 11B9;B0AA;1102 1161 11B9; # (낪; 낪; 낪; 낪; 낪; ) HANGUL SYLLABLE NABS
+B0AB;B0AB;1102 1161 11BA;B0AB;1102 1161 11BA; # (낫; 낫; 낫; 낫; 낫; ) HANGUL SYLLABLE NAS
+B0AC;B0AC;1102 1161 11BB;B0AC;1102 1161 11BB; # (났; 났; 났; 났; 났; ) HANGUL SYLLABLE NASS
+B0AD;B0AD;1102 1161 11BC;B0AD;1102 1161 11BC; # (낭; 낭; 낭; 낭; 낭; ) HANGUL SYLLABLE NANG
+B0AE;B0AE;1102 1161 11BD;B0AE;1102 1161 11BD; # (낮; 낮; 낮; 낮; 낮; ) HANGUL SYLLABLE NAJ
+B0AF;B0AF;1102 1161 11BE;B0AF;1102 1161 11BE; # (낯; 낯; 낯; 낯; 낯; ) HANGUL SYLLABLE NAC
+B0B0;B0B0;1102 1161 11BF;B0B0;1102 1161 11BF; # (낰; 낰; 낰; 낰; 낰; ) HANGUL SYLLABLE NAK
+B0B1;B0B1;1102 1161 11C0;B0B1;1102 1161 11C0; # (낱; 낱; 낱; 낱; 낱; ) HANGUL SYLLABLE NAT
+B0B2;B0B2;1102 1161 11C1;B0B2;1102 1161 11C1; # (낲; 낲; á„‚á…¡á‡; 낲; á„‚á…¡á‡; ) HANGUL SYLLABLE NAP
+B0B3;B0B3;1102 1161 11C2;B0B3;1102 1161 11C2; # (낳; 낳; 낳; 낳; 낳; ) HANGUL SYLLABLE NAH
+B0B4;B0B4;1102 1162;B0B4;1102 1162; # (ë‚´; ë‚´; á„‚á…¢; ë‚´; á„‚á…¢; ) HANGUL SYLLABLE NAE
+B0B5;B0B5;1102 1162 11A8;B0B5;1102 1162 11A8; # (낵; 낵; 낵; 낵; 낵; ) HANGUL SYLLABLE NAEG
+B0B6;B0B6;1102 1162 11A9;B0B6;1102 1162 11A9; # (낶; 낶; 낶; 낶; 낶; ) HANGUL SYLLABLE NAEGG
+B0B7;B0B7;1102 1162 11AA;B0B7;1102 1162 11AA; # (낷; 낷; 낷; 낷; 낷; ) HANGUL SYLLABLE NAEGS
+B0B8;B0B8;1102 1162 11AB;B0B8;1102 1162 11AB; # (낸; 낸; 낸; 낸; 낸; ) HANGUL SYLLABLE NAEN
+B0B9;B0B9;1102 1162 11AC;B0B9;1102 1162 11AC; # (낹; 낹; 낹; 낹; 낹; ) HANGUL SYLLABLE NAENJ
+B0BA;B0BA;1102 1162 11AD;B0BA;1102 1162 11AD; # (낺; 낺; 낺; 낺; 낺; ) HANGUL SYLLABLE NAENH
+B0BB;B0BB;1102 1162 11AE;B0BB;1102 1162 11AE; # (낻; 낻; 낻; 낻; 낻; ) HANGUL SYLLABLE NAED
+B0BC;B0BC;1102 1162 11AF;B0BC;1102 1162 11AF; # (낼; 낼; 낼; 낼; 낼; ) HANGUL SYLLABLE NAEL
+B0BD;B0BD;1102 1162 11B0;B0BD;1102 1162 11B0; # (낽; 낽; 낽; 낽; 낽; ) HANGUL SYLLABLE NAELG
+B0BE;B0BE;1102 1162 11B1;B0BE;1102 1162 11B1; # (낾; 낾; 낾; 낾; 낾; ) HANGUL SYLLABLE NAELM
+B0BF;B0BF;1102 1162 11B2;B0BF;1102 1162 11B2; # (낿; 낿; 낿; 낿; 낿; ) HANGUL SYLLABLE NAELB
+B0C0;B0C0;1102 1162 11B3;B0C0;1102 1162 11B3; # (냀; 냀; 냀; 냀; 냀; ) HANGUL SYLLABLE NAELS
+B0C1;B0C1;1102 1162 11B4;B0C1;1102 1162 11B4; # (ëƒ; ëƒ; 냁; ëƒ; 냁; ) HANGUL SYLLABLE NAELT
+B0C2;B0C2;1102 1162 11B5;B0C2;1102 1162 11B5; # (냂; 냂; 냂; 냂; 냂; ) HANGUL SYLLABLE NAELP
+B0C3;B0C3;1102 1162 11B6;B0C3;1102 1162 11B6; # (냃; 냃; 냃; 냃; 냃; ) HANGUL SYLLABLE NAELH
+B0C4;B0C4;1102 1162 11B7;B0C4;1102 1162 11B7; # (냄; 냄; 냄; 냄; 냄; ) HANGUL SYLLABLE NAEM
+B0C5;B0C5;1102 1162 11B8;B0C5;1102 1162 11B8; # (냅; 냅; 냅; 냅; 냅; ) HANGUL SYLLABLE NAEB
+B0C6;B0C6;1102 1162 11B9;B0C6;1102 1162 11B9; # (냆; 냆; 냆; 냆; 냆; ) HANGUL SYLLABLE NAEBS
+B0C7;B0C7;1102 1162 11BA;B0C7;1102 1162 11BA; # (냇; 냇; 냇; 냇; 냇; ) HANGUL SYLLABLE NAES
+B0C8;B0C8;1102 1162 11BB;B0C8;1102 1162 11BB; # (냈; 냈; 냈; 냈; 냈; ) HANGUL SYLLABLE NAESS
+B0C9;B0C9;1102 1162 11BC;B0C9;1102 1162 11BC; # (냉; 냉; 냉; 냉; 냉; ) HANGUL SYLLABLE NAENG
+B0CA;B0CA;1102 1162 11BD;B0CA;1102 1162 11BD; # (냊; 냊; 냊; 냊; 냊; ) HANGUL SYLLABLE NAEJ
+B0CB;B0CB;1102 1162 11BE;B0CB;1102 1162 11BE; # (냋; 냋; 냋; 냋; 냋; ) HANGUL SYLLABLE NAEC
+B0CC;B0CC;1102 1162 11BF;B0CC;1102 1162 11BF; # (냌; 냌; 냌; 냌; 냌; ) HANGUL SYLLABLE NAEK
+B0CD;B0CD;1102 1162 11C0;B0CD;1102 1162 11C0; # (ëƒ; ëƒ; 냍; ëƒ; 냍; ) HANGUL SYLLABLE NAET
+B0CE;B0CE;1102 1162 11C1;B0CE;1102 1162 11C1; # (냎; 냎; á„‚á…¢á‡; 냎; á„‚á…¢á‡; ) HANGUL SYLLABLE NAEP
+B0CF;B0CF;1102 1162 11C2;B0CF;1102 1162 11C2; # (ëƒ; ëƒ; 냏; ëƒ; 냏; ) HANGUL SYLLABLE NAEH
+B0D0;B0D0;1102 1163;B0D0;1102 1163; # (ëƒ; ëƒ; á„‚á…£; ëƒ; á„‚á…£; ) HANGUL SYLLABLE NYA
+B0D1;B0D1;1102 1163 11A8;B0D1;1102 1163 11A8; # (냑; 냑; 냑; 냑; 냑; ) HANGUL SYLLABLE NYAG
+B0D2;B0D2;1102 1163 11A9;B0D2;1102 1163 11A9; # (냒; 냒; 냒; 냒; 냒; ) HANGUL SYLLABLE NYAGG
+B0D3;B0D3;1102 1163 11AA;B0D3;1102 1163 11AA; # (냓; 냓; 냓; 냓; 냓; ) HANGUL SYLLABLE NYAGS
+B0D4;B0D4;1102 1163 11AB;B0D4;1102 1163 11AB; # (냔; 냔; 냔; 냔; 냔; ) HANGUL SYLLABLE NYAN
+B0D5;B0D5;1102 1163 11AC;B0D5;1102 1163 11AC; # (냕; 냕; 냕; 냕; 냕; ) HANGUL SYLLABLE NYANJ
+B0D6;B0D6;1102 1163 11AD;B0D6;1102 1163 11AD; # (냖; 냖; 냖; 냖; 냖; ) HANGUL SYLLABLE NYANH
+B0D7;B0D7;1102 1163 11AE;B0D7;1102 1163 11AE; # (냗; 냗; 냗; 냗; 냗; ) HANGUL SYLLABLE NYAD
+B0D8;B0D8;1102 1163 11AF;B0D8;1102 1163 11AF; # (냘; 냘; 냘; 냘; 냘; ) HANGUL SYLLABLE NYAL
+B0D9;B0D9;1102 1163 11B0;B0D9;1102 1163 11B0; # (냙; 냙; 냙; 냙; 냙; ) HANGUL SYLLABLE NYALG
+B0DA;B0DA;1102 1163 11B1;B0DA;1102 1163 11B1; # (냚; 냚; 냚; 냚; 냚; ) HANGUL SYLLABLE NYALM
+B0DB;B0DB;1102 1163 11B2;B0DB;1102 1163 11B2; # (냛; 냛; 냛; 냛; 냛; ) HANGUL SYLLABLE NYALB
+B0DC;B0DC;1102 1163 11B3;B0DC;1102 1163 11B3; # (냜; 냜; 냜; 냜; 냜; ) HANGUL SYLLABLE NYALS
+B0DD;B0DD;1102 1163 11B4;B0DD;1102 1163 11B4; # (ëƒ; ëƒ; 냝; ëƒ; 냝; ) HANGUL SYLLABLE NYALT
+B0DE;B0DE;1102 1163 11B5;B0DE;1102 1163 11B5; # (냞; 냞; 냞; 냞; 냞; ) HANGUL SYLLABLE NYALP
+B0DF;B0DF;1102 1163 11B6;B0DF;1102 1163 11B6; # (냟; 냟; 냟; 냟; 냟; ) HANGUL SYLLABLE NYALH
+B0E0;B0E0;1102 1163 11B7;B0E0;1102 1163 11B7; # (냠; 냠; 냠; 냠; 냠; ) HANGUL SYLLABLE NYAM
+B0E1;B0E1;1102 1163 11B8;B0E1;1102 1163 11B8; # (냡; 냡; 냡; 냡; 냡; ) HANGUL SYLLABLE NYAB
+B0E2;B0E2;1102 1163 11B9;B0E2;1102 1163 11B9; # (냢; 냢; 냢; 냢; 냢; ) HANGUL SYLLABLE NYABS
+B0E3;B0E3;1102 1163 11BA;B0E3;1102 1163 11BA; # (냣; 냣; 냣; 냣; 냣; ) HANGUL SYLLABLE NYAS
+B0E4;B0E4;1102 1163 11BB;B0E4;1102 1163 11BB; # (냤; 냤; 냤; 냤; 냤; ) HANGUL SYLLABLE NYASS
+B0E5;B0E5;1102 1163 11BC;B0E5;1102 1163 11BC; # (냥; 냥; 냥; 냥; 냥; ) HANGUL SYLLABLE NYANG
+B0E6;B0E6;1102 1163 11BD;B0E6;1102 1163 11BD; # (냦; 냦; 냦; 냦; 냦; ) HANGUL SYLLABLE NYAJ
+B0E7;B0E7;1102 1163 11BE;B0E7;1102 1163 11BE; # (냧; 냧; 냧; 냧; 냧; ) HANGUL SYLLABLE NYAC
+B0E8;B0E8;1102 1163 11BF;B0E8;1102 1163 11BF; # (냨; 냨; 냨; 냨; 냨; ) HANGUL SYLLABLE NYAK
+B0E9;B0E9;1102 1163 11C0;B0E9;1102 1163 11C0; # (냩; 냩; 냩; 냩; 냩; ) HANGUL SYLLABLE NYAT
+B0EA;B0EA;1102 1163 11C1;B0EA;1102 1163 11C1; # (냪; 냪; á„‚á…£á‡; 냪; á„‚á…£á‡; ) HANGUL SYLLABLE NYAP
+B0EB;B0EB;1102 1163 11C2;B0EB;1102 1163 11C2; # (냫; 냫; 냫; 냫; 냫; ) HANGUL SYLLABLE NYAH
+B0EC;B0EC;1102 1164;B0EC;1102 1164; # (냬; 냬; 냬; 냬; 냬; ) HANGUL SYLLABLE NYAE
+B0ED;B0ED;1102 1164 11A8;B0ED;1102 1164 11A8; # (냭; 냭; 냭; 냭; 냭; ) HANGUL SYLLABLE NYAEG
+B0EE;B0EE;1102 1164 11A9;B0EE;1102 1164 11A9; # (냮; 냮; 냮; 냮; 냮; ) HANGUL SYLLABLE NYAEGG
+B0EF;B0EF;1102 1164 11AA;B0EF;1102 1164 11AA; # (냯; 냯; 냯; 냯; 냯; ) HANGUL SYLLABLE NYAEGS
+B0F0;B0F0;1102 1164 11AB;B0F0;1102 1164 11AB; # (냰; 냰; 냰; 냰; 냰; ) HANGUL SYLLABLE NYAEN
+B0F1;B0F1;1102 1164 11AC;B0F1;1102 1164 11AC; # (냱; 냱; 냱; 냱; 냱; ) HANGUL SYLLABLE NYAENJ
+B0F2;B0F2;1102 1164 11AD;B0F2;1102 1164 11AD; # (냲; 냲; 냲; 냲; 냲; ) HANGUL SYLLABLE NYAENH
+B0F3;B0F3;1102 1164 11AE;B0F3;1102 1164 11AE; # (냳; 냳; 냳; 냳; 냳; ) HANGUL SYLLABLE NYAED
+B0F4;B0F4;1102 1164 11AF;B0F4;1102 1164 11AF; # (냴; 냴; 냴; 냴; 냴; ) HANGUL SYLLABLE NYAEL
+B0F5;B0F5;1102 1164 11B0;B0F5;1102 1164 11B0; # (냵; 냵; 냵; 냵; 냵; ) HANGUL SYLLABLE NYAELG
+B0F6;B0F6;1102 1164 11B1;B0F6;1102 1164 11B1; # (냶; 냶; 냶; 냶; 냶; ) HANGUL SYLLABLE NYAELM
+B0F7;B0F7;1102 1164 11B2;B0F7;1102 1164 11B2; # (냷; 냷; 냷; 냷; 냷; ) HANGUL SYLLABLE NYAELB
+B0F8;B0F8;1102 1164 11B3;B0F8;1102 1164 11B3; # (냸; 냸; 냸; 냸; 냸; ) HANGUL SYLLABLE NYAELS
+B0F9;B0F9;1102 1164 11B4;B0F9;1102 1164 11B4; # (냹; 냹; 냹; 냹; 냹; ) HANGUL SYLLABLE NYAELT
+B0FA;B0FA;1102 1164 11B5;B0FA;1102 1164 11B5; # (냺; 냺; 냺; 냺; 냺; ) HANGUL SYLLABLE NYAELP
+B0FB;B0FB;1102 1164 11B6;B0FB;1102 1164 11B6; # (냻; 냻; 냻; 냻; 냻; ) HANGUL SYLLABLE NYAELH
+B0FC;B0FC;1102 1164 11B7;B0FC;1102 1164 11B7; # (냼; 냼; 냼; 냼; 냼; ) HANGUL SYLLABLE NYAEM
+B0FD;B0FD;1102 1164 11B8;B0FD;1102 1164 11B8; # (냽; 냽; 냽; 냽; 냽; ) HANGUL SYLLABLE NYAEB
+B0FE;B0FE;1102 1164 11B9;B0FE;1102 1164 11B9; # (냾; 냾; 냾; 냾; 냾; ) HANGUL SYLLABLE NYAEBS
+B0FF;B0FF;1102 1164 11BA;B0FF;1102 1164 11BA; # (냿; 냿; 냿; 냿; 냿; ) HANGUL SYLLABLE NYAES
+B100;B100;1102 1164 11BB;B100;1102 1164 11BB; # (넀; 넀; 넀; 넀; 넀; ) HANGUL SYLLABLE NYAESS
+B101;B101;1102 1164 11BC;B101;1102 1164 11BC; # (ë„; ë„; 넁; ë„; 넁; ) HANGUL SYLLABLE NYAENG
+B102;B102;1102 1164 11BD;B102;1102 1164 11BD; # (넂; 넂; 넂; 넂; 넂; ) HANGUL SYLLABLE NYAEJ
+B103;B103;1102 1164 11BE;B103;1102 1164 11BE; # (넃; 넃; 넃; 넃; 넃; ) HANGUL SYLLABLE NYAEC
+B104;B104;1102 1164 11BF;B104;1102 1164 11BF; # (넄; 넄; 넄; 넄; 넄; ) HANGUL SYLLABLE NYAEK
+B105;B105;1102 1164 11C0;B105;1102 1164 11C0; # (넅; 넅; 넅; 넅; 넅; ) HANGUL SYLLABLE NYAET
+B106;B106;1102 1164 11C1;B106;1102 1164 11C1; # (넆; 넆; á„‚á…¤á‡; 넆; á„‚á…¤á‡; ) HANGUL SYLLABLE NYAEP
+B107;B107;1102 1164 11C2;B107;1102 1164 11C2; # (넇; 넇; 넇; 넇; 넇; ) HANGUL SYLLABLE NYAEH
+B108;B108;1102 1165;B108;1102 1165; # (너; 너; 너; 너; 너; ) HANGUL SYLLABLE NEO
+B109;B109;1102 1165 11A8;B109;1102 1165 11A8; # (넉; 넉; 넉; 넉; 넉; ) HANGUL SYLLABLE NEOG
+B10A;B10A;1102 1165 11A9;B10A;1102 1165 11A9; # (넊; 넊; 넊; 넊; 넊; ) HANGUL SYLLABLE NEOGG
+B10B;B10B;1102 1165 11AA;B10B;1102 1165 11AA; # (넋; 넋; 넋; 넋; 넋; ) HANGUL SYLLABLE NEOGS
+B10C;B10C;1102 1165 11AB;B10C;1102 1165 11AB; # (넌; 넌; 넌; 넌; 넌; ) HANGUL SYLLABLE NEON
+B10D;B10D;1102 1165 11AC;B10D;1102 1165 11AC; # (ë„; ë„; 넍; ë„; 넍; ) HANGUL SYLLABLE NEONJ
+B10E;B10E;1102 1165 11AD;B10E;1102 1165 11AD; # (넎; 넎; 넎; 넎; 넎; ) HANGUL SYLLABLE NEONH
+B10F;B10F;1102 1165 11AE;B10F;1102 1165 11AE; # (ë„; ë„; 넏; ë„; 넏; ) HANGUL SYLLABLE NEOD
+B110;B110;1102 1165 11AF;B110;1102 1165 11AF; # (ë„; ë„; 널; ë„; 널; ) HANGUL SYLLABLE NEOL
+B111;B111;1102 1165 11B0;B111;1102 1165 11B0; # (넑; 넑; 넑; 넑; 넑; ) HANGUL SYLLABLE NEOLG
+B112;B112;1102 1165 11B1;B112;1102 1165 11B1; # (넒; 넒; 넒; 넒; 넒; ) HANGUL SYLLABLE NEOLM
+B113;B113;1102 1165 11B2;B113;1102 1165 11B2; # (넓; 넓; 넓; 넓; 넓; ) HANGUL SYLLABLE NEOLB
+B114;B114;1102 1165 11B3;B114;1102 1165 11B3; # (넔; 넔; 넔; 넔; 넔; ) HANGUL SYLLABLE NEOLS
+B115;B115;1102 1165 11B4;B115;1102 1165 11B4; # (넕; 넕; 넕; 넕; 넕; ) HANGUL SYLLABLE NEOLT
+B116;B116;1102 1165 11B5;B116;1102 1165 11B5; # (넖; 넖; 넖; 넖; 넖; ) HANGUL SYLLABLE NEOLP
+B117;B117;1102 1165 11B6;B117;1102 1165 11B6; # (넗; 넗; 넗; 넗; 넗; ) HANGUL SYLLABLE NEOLH
+B118;B118;1102 1165 11B7;B118;1102 1165 11B7; # (넘; 넘; 넘; 넘; 넘; ) HANGUL SYLLABLE NEOM
+B119;B119;1102 1165 11B8;B119;1102 1165 11B8; # (넙; 넙; 넙; 넙; 넙; ) HANGUL SYLLABLE NEOB
+B11A;B11A;1102 1165 11B9;B11A;1102 1165 11B9; # (넚; 넚; 넚; 넚; 넚; ) HANGUL SYLLABLE NEOBS
+B11B;B11B;1102 1165 11BA;B11B;1102 1165 11BA; # (넛; 넛; 넛; 넛; 넛; ) HANGUL SYLLABLE NEOS
+B11C;B11C;1102 1165 11BB;B11C;1102 1165 11BB; # (넜; 넜; 넜; 넜; 넜; ) HANGUL SYLLABLE NEOSS
+B11D;B11D;1102 1165 11BC;B11D;1102 1165 11BC; # (ë„; ë„; 넝; ë„; 넝; ) HANGUL SYLLABLE NEONG
+B11E;B11E;1102 1165 11BD;B11E;1102 1165 11BD; # (넞; 넞; 넞; 넞; 넞; ) HANGUL SYLLABLE NEOJ
+B11F;B11F;1102 1165 11BE;B11F;1102 1165 11BE; # (넟; 넟; 넟; 넟; 넟; ) HANGUL SYLLABLE NEOC
+B120;B120;1102 1165 11BF;B120;1102 1165 11BF; # (넠; 넠; 넠; 넠; 넠; ) HANGUL SYLLABLE NEOK
+B121;B121;1102 1165 11C0;B121;1102 1165 11C0; # (넡; 넡; 넡; 넡; 넡; ) HANGUL SYLLABLE NEOT
+B122;B122;1102 1165 11C1;B122;1102 1165 11C1; # (ë„¢; ë„¢; á„‚á…¥á‡; ë„¢; á„‚á…¥á‡; ) HANGUL SYLLABLE NEOP
+B123;B123;1102 1165 11C2;B123;1102 1165 11C2; # (넣; 넣; 넣; 넣; 넣; ) HANGUL SYLLABLE NEOH
+B124;B124;1102 1166;B124;1102 1166; # (네; 네; 네; 네; 네; ) HANGUL SYLLABLE NE
+B125;B125;1102 1166 11A8;B125;1102 1166 11A8; # (넥; 넥; 넥; 넥; 넥; ) HANGUL SYLLABLE NEG
+B126;B126;1102 1166 11A9;B126;1102 1166 11A9; # (넦; 넦; 넦; 넦; 넦; ) HANGUL SYLLABLE NEGG
+B127;B127;1102 1166 11AA;B127;1102 1166 11AA; # (넧; 넧; 넧; 넧; 넧; ) HANGUL SYLLABLE NEGS
+B128;B128;1102 1166 11AB;B128;1102 1166 11AB; # (넨; 넨; 넨; 넨; 넨; ) HANGUL SYLLABLE NEN
+B129;B129;1102 1166 11AC;B129;1102 1166 11AC; # (넩; 넩; 넩; 넩; 넩; ) HANGUL SYLLABLE NENJ
+B12A;B12A;1102 1166 11AD;B12A;1102 1166 11AD; # (넪; 넪; 넪; 넪; 넪; ) HANGUL SYLLABLE NENH
+B12B;B12B;1102 1166 11AE;B12B;1102 1166 11AE; # (넫; 넫; 넫; 넫; 넫; ) HANGUL SYLLABLE NED
+B12C;B12C;1102 1166 11AF;B12C;1102 1166 11AF; # (넬; 넬; 넬; 넬; 넬; ) HANGUL SYLLABLE NEL
+B12D;B12D;1102 1166 11B0;B12D;1102 1166 11B0; # (넭; 넭; 넭; 넭; 넭; ) HANGUL SYLLABLE NELG
+B12E;B12E;1102 1166 11B1;B12E;1102 1166 11B1; # (넮; 넮; 넮; 넮; 넮; ) HANGUL SYLLABLE NELM
+B12F;B12F;1102 1166 11B2;B12F;1102 1166 11B2; # (넯; 넯; 넯; 넯; 넯; ) HANGUL SYLLABLE NELB
+B130;B130;1102 1166 11B3;B130;1102 1166 11B3; # (넰; 넰; 넰; 넰; 넰; ) HANGUL SYLLABLE NELS
+B131;B131;1102 1166 11B4;B131;1102 1166 11B4; # (넱; 넱; 넱; 넱; 넱; ) HANGUL SYLLABLE NELT
+B132;B132;1102 1166 11B5;B132;1102 1166 11B5; # (넲; 넲; 넲; 넲; 넲; ) HANGUL SYLLABLE NELP
+B133;B133;1102 1166 11B6;B133;1102 1166 11B6; # (넳; 넳; 넳; 넳; 넳; ) HANGUL SYLLABLE NELH
+B134;B134;1102 1166 11B7;B134;1102 1166 11B7; # (넴; 넴; 넴; 넴; 넴; ) HANGUL SYLLABLE NEM
+B135;B135;1102 1166 11B8;B135;1102 1166 11B8; # (넵; 넵; 넵; 넵; 넵; ) HANGUL SYLLABLE NEB
+B136;B136;1102 1166 11B9;B136;1102 1166 11B9; # (넶; 넶; 넶; 넶; 넶; ) HANGUL SYLLABLE NEBS
+B137;B137;1102 1166 11BA;B137;1102 1166 11BA; # (넷; 넷; 넷; 넷; 넷; ) HANGUL SYLLABLE NES
+B138;B138;1102 1166 11BB;B138;1102 1166 11BB; # (넸; 넸; 넸; 넸; 넸; ) HANGUL SYLLABLE NESS
+B139;B139;1102 1166 11BC;B139;1102 1166 11BC; # (넹; 넹; 넹; 넹; 넹; ) HANGUL SYLLABLE NENG
+B13A;B13A;1102 1166 11BD;B13A;1102 1166 11BD; # (넺; 넺; 넺; 넺; 넺; ) HANGUL SYLLABLE NEJ
+B13B;B13B;1102 1166 11BE;B13B;1102 1166 11BE; # (넻; 넻; 넻; 넻; 넻; ) HANGUL SYLLABLE NEC
+B13C;B13C;1102 1166 11BF;B13C;1102 1166 11BF; # (넼; 넼; 넼; 넼; 넼; ) HANGUL SYLLABLE NEK
+B13D;B13D;1102 1166 11C0;B13D;1102 1166 11C0; # (넽; 넽; 넽; 넽; 넽; ) HANGUL SYLLABLE NET
+B13E;B13E;1102 1166 11C1;B13E;1102 1166 11C1; # (넾; 넾; á„‚á…¦á‡; 넾; á„‚á…¦á‡; ) HANGUL SYLLABLE NEP
+B13F;B13F;1102 1166 11C2;B13F;1102 1166 11C2; # (넿; 넿; 넿; 넿; 넿; ) HANGUL SYLLABLE NEH
+B140;B140;1102 1167;B140;1102 1167; # (ë…€; ë…€; á„‚á…§; ë…€; á„‚á…§; ) HANGUL SYLLABLE NYEO
+B141;B141;1102 1167 11A8;B141;1102 1167 11A8; # (ë…; ë…; 녁; ë…; 녁; ) HANGUL SYLLABLE NYEOG
+B142;B142;1102 1167 11A9;B142;1102 1167 11A9; # (녂; 녂; 녂; 녂; 녂; ) HANGUL SYLLABLE NYEOGG
+B143;B143;1102 1167 11AA;B143;1102 1167 11AA; # (녃; 녃; 녃; 녃; 녃; ) HANGUL SYLLABLE NYEOGS
+B144;B144;1102 1167 11AB;B144;1102 1167 11AB; # (년; 년; 년; 년; 년; ) HANGUL SYLLABLE NYEON
+B145;B145;1102 1167 11AC;B145;1102 1167 11AC; # (녅; 녅; 녅; 녅; 녅; ) HANGUL SYLLABLE NYEONJ
+B146;B146;1102 1167 11AD;B146;1102 1167 11AD; # (녆; 녆; 녆; 녆; 녆; ) HANGUL SYLLABLE NYEONH
+B147;B147;1102 1167 11AE;B147;1102 1167 11AE; # (녇; 녇; 녇; 녇; 녇; ) HANGUL SYLLABLE NYEOD
+B148;B148;1102 1167 11AF;B148;1102 1167 11AF; # (녈; 녈; 녈; 녈; 녈; ) HANGUL SYLLABLE NYEOL
+B149;B149;1102 1167 11B0;B149;1102 1167 11B0; # (녉; 녉; 녉; 녉; 녉; ) HANGUL SYLLABLE NYEOLG
+B14A;B14A;1102 1167 11B1;B14A;1102 1167 11B1; # (녊; 녊; 녊; 녊; 녊; ) HANGUL SYLLABLE NYEOLM
+B14B;B14B;1102 1167 11B2;B14B;1102 1167 11B2; # (녋; 녋; 녋; 녋; 녋; ) HANGUL SYLLABLE NYEOLB
+B14C;B14C;1102 1167 11B3;B14C;1102 1167 11B3; # (녌; 녌; 녌; 녌; 녌; ) HANGUL SYLLABLE NYEOLS
+B14D;B14D;1102 1167 11B4;B14D;1102 1167 11B4; # (ë…; ë…; 녍; ë…; 녍; ) HANGUL SYLLABLE NYEOLT
+B14E;B14E;1102 1167 11B5;B14E;1102 1167 11B5; # (녎; 녎; 녎; 녎; 녎; ) HANGUL SYLLABLE NYEOLP
+B14F;B14F;1102 1167 11B6;B14F;1102 1167 11B6; # (ë…; ë…; 녏; ë…; 녏; ) HANGUL SYLLABLE NYEOLH
+B150;B150;1102 1167 11B7;B150;1102 1167 11B7; # (ë…; ë…; 념; ë…; 념; ) HANGUL SYLLABLE NYEOM
+B151;B151;1102 1167 11B8;B151;1102 1167 11B8; # (녑; 녑; 녑; 녑; 녑; ) HANGUL SYLLABLE NYEOB
+B152;B152;1102 1167 11B9;B152;1102 1167 11B9; # (녒; 녒; 녒; 녒; 녒; ) HANGUL SYLLABLE NYEOBS
+B153;B153;1102 1167 11BA;B153;1102 1167 11BA; # (녓; 녓; 녓; 녓; 녓; ) HANGUL SYLLABLE NYEOS
+B154;B154;1102 1167 11BB;B154;1102 1167 11BB; # (녔; 녔; 녔; 녔; 녔; ) HANGUL SYLLABLE NYEOSS
+B155;B155;1102 1167 11BC;B155;1102 1167 11BC; # (녕; 녕; 녕; 녕; 녕; ) HANGUL SYLLABLE NYEONG
+B156;B156;1102 1167 11BD;B156;1102 1167 11BD; # (녖; 녖; 녖; 녖; 녖; ) HANGUL SYLLABLE NYEOJ
+B157;B157;1102 1167 11BE;B157;1102 1167 11BE; # (녗; 녗; 녗; 녗; 녗; ) HANGUL SYLLABLE NYEOC
+B158;B158;1102 1167 11BF;B158;1102 1167 11BF; # (녘; 녘; 녘; 녘; 녘; ) HANGUL SYLLABLE NYEOK
+B159;B159;1102 1167 11C0;B159;1102 1167 11C0; # (녙; 녙; 녙; 녙; 녙; ) HANGUL SYLLABLE NYEOT
+B15A;B15A;1102 1167 11C1;B15A;1102 1167 11C1; # (ë…š; ë…š; á„‚á…§á‡; ë…š; á„‚á…§á‡; ) HANGUL SYLLABLE NYEOP
+B15B;B15B;1102 1167 11C2;B15B;1102 1167 11C2; # (녛; 녛; 녛; 녛; 녛; ) HANGUL SYLLABLE NYEOH
+B15C;B15C;1102 1168;B15C;1102 1168; # (녜; 녜; 녜; 녜; 녜; ) HANGUL SYLLABLE NYE
+B15D;B15D;1102 1168 11A8;B15D;1102 1168 11A8; # (ë…; ë…; 녝; ë…; 녝; ) HANGUL SYLLABLE NYEG
+B15E;B15E;1102 1168 11A9;B15E;1102 1168 11A9; # (녞; 녞; 녞; 녞; 녞; ) HANGUL SYLLABLE NYEGG
+B15F;B15F;1102 1168 11AA;B15F;1102 1168 11AA; # (녟; 녟; 녟; 녟; 녟; ) HANGUL SYLLABLE NYEGS
+B160;B160;1102 1168 11AB;B160;1102 1168 11AB; # (녠; 녠; 녠; 녠; 녠; ) HANGUL SYLLABLE NYEN
+B161;B161;1102 1168 11AC;B161;1102 1168 11AC; # (녡; 녡; 녡; 녡; 녡; ) HANGUL SYLLABLE NYENJ
+B162;B162;1102 1168 11AD;B162;1102 1168 11AD; # (녢; 녢; 녢; 녢; 녢; ) HANGUL SYLLABLE NYENH
+B163;B163;1102 1168 11AE;B163;1102 1168 11AE; # (녣; 녣; 녣; 녣; 녣; ) HANGUL SYLLABLE NYED
+B164;B164;1102 1168 11AF;B164;1102 1168 11AF; # (녤; 녤; 녤; 녤; 녤; ) HANGUL SYLLABLE NYEL
+B165;B165;1102 1168 11B0;B165;1102 1168 11B0; # (녥; 녥; 녥; 녥; 녥; ) HANGUL SYLLABLE NYELG
+B166;B166;1102 1168 11B1;B166;1102 1168 11B1; # (녦; 녦; 녦; 녦; 녦; ) HANGUL SYLLABLE NYELM
+B167;B167;1102 1168 11B2;B167;1102 1168 11B2; # (녧; 녧; 녧; 녧; 녧; ) HANGUL SYLLABLE NYELB
+B168;B168;1102 1168 11B3;B168;1102 1168 11B3; # (녨; 녨; 녨; 녨; 녨; ) HANGUL SYLLABLE NYELS
+B169;B169;1102 1168 11B4;B169;1102 1168 11B4; # (녩; 녩; 녩; 녩; 녩; ) HANGUL SYLLABLE NYELT
+B16A;B16A;1102 1168 11B5;B16A;1102 1168 11B5; # (녪; 녪; 녪; 녪; 녪; ) HANGUL SYLLABLE NYELP
+B16B;B16B;1102 1168 11B6;B16B;1102 1168 11B6; # (녫; 녫; 녫; 녫; 녫; ) HANGUL SYLLABLE NYELH
+B16C;B16C;1102 1168 11B7;B16C;1102 1168 11B7; # (녬; 녬; 녬; 녬; 녬; ) HANGUL SYLLABLE NYEM
+B16D;B16D;1102 1168 11B8;B16D;1102 1168 11B8; # (녭; 녭; 녭; 녭; 녭; ) HANGUL SYLLABLE NYEB
+B16E;B16E;1102 1168 11B9;B16E;1102 1168 11B9; # (녮; 녮; 녮; 녮; 녮; ) HANGUL SYLLABLE NYEBS
+B16F;B16F;1102 1168 11BA;B16F;1102 1168 11BA; # (녯; 녯; 녯; 녯; 녯; ) HANGUL SYLLABLE NYES
+B170;B170;1102 1168 11BB;B170;1102 1168 11BB; # (녰; 녰; 녰; 녰; 녰; ) HANGUL SYLLABLE NYESS
+B171;B171;1102 1168 11BC;B171;1102 1168 11BC; # (녱; 녱; 녱; 녱; 녱; ) HANGUL SYLLABLE NYENG
+B172;B172;1102 1168 11BD;B172;1102 1168 11BD; # (녲; 녲; 녲; 녲; 녲; ) HANGUL SYLLABLE NYEJ
+B173;B173;1102 1168 11BE;B173;1102 1168 11BE; # (녳; 녳; 녳; 녳; 녳; ) HANGUL SYLLABLE NYEC
+B174;B174;1102 1168 11BF;B174;1102 1168 11BF; # (녴; 녴; 녴; 녴; 녴; ) HANGUL SYLLABLE NYEK
+B175;B175;1102 1168 11C0;B175;1102 1168 11C0; # (녵; 녵; 녵; 녵; 녵; ) HANGUL SYLLABLE NYET
+B176;B176;1102 1168 11C1;B176;1102 1168 11C1; # (ë…¶; ë…¶; á„‚á…¨á‡; ë…¶; á„‚á…¨á‡; ) HANGUL SYLLABLE NYEP
+B177;B177;1102 1168 11C2;B177;1102 1168 11C2; # (녷; 녷; 녷; 녷; 녷; ) HANGUL SYLLABLE NYEH
+B178;B178;1102 1169;B178;1102 1169; # (ë…¸; ë…¸; á„‚á…©; ë…¸; á„‚á…©; ) HANGUL SYLLABLE NO
+B179;B179;1102 1169 11A8;B179;1102 1169 11A8; # (녹; 녹; 녹; 녹; 녹; ) HANGUL SYLLABLE NOG
+B17A;B17A;1102 1169 11A9;B17A;1102 1169 11A9; # (녺; 녺; 녺; 녺; 녺; ) HANGUL SYLLABLE NOGG
+B17B;B17B;1102 1169 11AA;B17B;1102 1169 11AA; # (녻; 녻; 녻; 녻; 녻; ) HANGUL SYLLABLE NOGS
+B17C;B17C;1102 1169 11AB;B17C;1102 1169 11AB; # (논; 논; 논; 논; 논; ) HANGUL SYLLABLE NON
+B17D;B17D;1102 1169 11AC;B17D;1102 1169 11AC; # (녽; 녽; 녽; 녽; 녽; ) HANGUL SYLLABLE NONJ
+B17E;B17E;1102 1169 11AD;B17E;1102 1169 11AD; # (녾; 녾; 녾; 녾; 녾; ) HANGUL SYLLABLE NONH
+B17F;B17F;1102 1169 11AE;B17F;1102 1169 11AE; # (녿; 녿; 녿; 녿; 녿; ) HANGUL SYLLABLE NOD
+B180;B180;1102 1169 11AF;B180;1102 1169 11AF; # (놀; 놀; 놀; 놀; 놀; ) HANGUL SYLLABLE NOL
+B181;B181;1102 1169 11B0;B181;1102 1169 11B0; # (ë†; ë†; 놁; ë†; 놁; ) HANGUL SYLLABLE NOLG
+B182;B182;1102 1169 11B1;B182;1102 1169 11B1; # (놂; 놂; 놂; 놂; 놂; ) HANGUL SYLLABLE NOLM
+B183;B183;1102 1169 11B2;B183;1102 1169 11B2; # (놃; 놃; 놃; 놃; 놃; ) HANGUL SYLLABLE NOLB
+B184;B184;1102 1169 11B3;B184;1102 1169 11B3; # (놄; 놄; 놄; 놄; 놄; ) HANGUL SYLLABLE NOLS
+B185;B185;1102 1169 11B4;B185;1102 1169 11B4; # (놅; 놅; 놅; 놅; 놅; ) HANGUL SYLLABLE NOLT
+B186;B186;1102 1169 11B5;B186;1102 1169 11B5; # (놆; 놆; 놆; 놆; 놆; ) HANGUL SYLLABLE NOLP
+B187;B187;1102 1169 11B6;B187;1102 1169 11B6; # (놇; 놇; 놇; 놇; 놇; ) HANGUL SYLLABLE NOLH
+B188;B188;1102 1169 11B7;B188;1102 1169 11B7; # (놈; 놈; 놈; 놈; 놈; ) HANGUL SYLLABLE NOM
+B189;B189;1102 1169 11B8;B189;1102 1169 11B8; # (놉; 놉; 놉; 놉; 놉; ) HANGUL SYLLABLE NOB
+B18A;B18A;1102 1169 11B9;B18A;1102 1169 11B9; # (놊; 놊; 놊; 놊; 놊; ) HANGUL SYLLABLE NOBS
+B18B;B18B;1102 1169 11BA;B18B;1102 1169 11BA; # (놋; 놋; 놋; 놋; 놋; ) HANGUL SYLLABLE NOS
+B18C;B18C;1102 1169 11BB;B18C;1102 1169 11BB; # (놌; 놌; 놌; 놌; 놌; ) HANGUL SYLLABLE NOSS
+B18D;B18D;1102 1169 11BC;B18D;1102 1169 11BC; # (ë†; ë†; 농; ë†; 농; ) HANGUL SYLLABLE NONG
+B18E;B18E;1102 1169 11BD;B18E;1102 1169 11BD; # (놎; 놎; 놎; 놎; 놎; ) HANGUL SYLLABLE NOJ
+B18F;B18F;1102 1169 11BE;B18F;1102 1169 11BE; # (ë†; ë†; 놏; ë†; 놏; ) HANGUL SYLLABLE NOC
+B190;B190;1102 1169 11BF;B190;1102 1169 11BF; # (ë†; ë†; 놐; ë†; 놐; ) HANGUL SYLLABLE NOK
+B191;B191;1102 1169 11C0;B191;1102 1169 11C0; # (놑; 놑; 놑; 놑; 놑; ) HANGUL SYLLABLE NOT
+B192;B192;1102 1169 11C1;B192;1102 1169 11C1; # (높; 높; á„‚á…©á‡; 높; á„‚á…©á‡; ) HANGUL SYLLABLE NOP
+B193;B193;1102 1169 11C2;B193;1102 1169 11C2; # (놓; 놓; 놓; 놓; 놓; ) HANGUL SYLLABLE NOH
+B194;B194;1102 116A;B194;1102 116A; # (놔; 놔; 놔; 놔; 놔; ) HANGUL SYLLABLE NWA
+B195;B195;1102 116A 11A8;B195;1102 116A 11A8; # (놕; 놕; 놕; 놕; 놕; ) HANGUL SYLLABLE NWAG
+B196;B196;1102 116A 11A9;B196;1102 116A 11A9; # (놖; 놖; 놖; 놖; 놖; ) HANGUL SYLLABLE NWAGG
+B197;B197;1102 116A 11AA;B197;1102 116A 11AA; # (놗; 놗; 놗; 놗; 놗; ) HANGUL SYLLABLE NWAGS
+B198;B198;1102 116A 11AB;B198;1102 116A 11AB; # (놘; 놘; 놘; 놘; 놘; ) HANGUL SYLLABLE NWAN
+B199;B199;1102 116A 11AC;B199;1102 116A 11AC; # (놙; 놙; 놙; 놙; 놙; ) HANGUL SYLLABLE NWANJ
+B19A;B19A;1102 116A 11AD;B19A;1102 116A 11AD; # (놚; 놚; 놚; 놚; 놚; ) HANGUL SYLLABLE NWANH
+B19B;B19B;1102 116A 11AE;B19B;1102 116A 11AE; # (놛; 놛; 놛; 놛; 놛; ) HANGUL SYLLABLE NWAD
+B19C;B19C;1102 116A 11AF;B19C;1102 116A 11AF; # (놜; 놜; 놜; 놜; 놜; ) HANGUL SYLLABLE NWAL
+B19D;B19D;1102 116A 11B0;B19D;1102 116A 11B0; # (ë†; ë†; 놝; ë†; 놝; ) HANGUL SYLLABLE NWALG
+B19E;B19E;1102 116A 11B1;B19E;1102 116A 11B1; # (놞; 놞; 놞; 놞; 놞; ) HANGUL SYLLABLE NWALM
+B19F;B19F;1102 116A 11B2;B19F;1102 116A 11B2; # (놟; 놟; 놟; 놟; 놟; ) HANGUL SYLLABLE NWALB
+B1A0;B1A0;1102 116A 11B3;B1A0;1102 116A 11B3; # (놠; 놠; 놠; 놠; 놠; ) HANGUL SYLLABLE NWALS
+B1A1;B1A1;1102 116A 11B4;B1A1;1102 116A 11B4; # (놡; 놡; 놡; 놡; 놡; ) HANGUL SYLLABLE NWALT
+B1A2;B1A2;1102 116A 11B5;B1A2;1102 116A 11B5; # (놢; 놢; 놢; 놢; 놢; ) HANGUL SYLLABLE NWALP
+B1A3;B1A3;1102 116A 11B6;B1A3;1102 116A 11B6; # (놣; 놣; 놣; 놣; 놣; ) HANGUL SYLLABLE NWALH
+B1A4;B1A4;1102 116A 11B7;B1A4;1102 116A 11B7; # (놤; 놤; 놤; 놤; 놤; ) HANGUL SYLLABLE NWAM
+B1A5;B1A5;1102 116A 11B8;B1A5;1102 116A 11B8; # (놥; 놥; 놥; 놥; 놥; ) HANGUL SYLLABLE NWAB
+B1A6;B1A6;1102 116A 11B9;B1A6;1102 116A 11B9; # (놦; 놦; 놦; 놦; 놦; ) HANGUL SYLLABLE NWABS
+B1A7;B1A7;1102 116A 11BA;B1A7;1102 116A 11BA; # (놧; 놧; 놧; 놧; 놧; ) HANGUL SYLLABLE NWAS
+B1A8;B1A8;1102 116A 11BB;B1A8;1102 116A 11BB; # (놨; 놨; 놨; 놨; 놨; ) HANGUL SYLLABLE NWASS
+B1A9;B1A9;1102 116A 11BC;B1A9;1102 116A 11BC; # (놩; 놩; 놩; 놩; 놩; ) HANGUL SYLLABLE NWANG
+B1AA;B1AA;1102 116A 11BD;B1AA;1102 116A 11BD; # (놪; 놪; 놪; 놪; 놪; ) HANGUL SYLLABLE NWAJ
+B1AB;B1AB;1102 116A 11BE;B1AB;1102 116A 11BE; # (놫; 놫; 놫; 놫; 놫; ) HANGUL SYLLABLE NWAC
+B1AC;B1AC;1102 116A 11BF;B1AC;1102 116A 11BF; # (놬; 놬; 놬; 놬; 놬; ) HANGUL SYLLABLE NWAK
+B1AD;B1AD;1102 116A 11C0;B1AD;1102 116A 11C0; # (놭; 놭; 놭; 놭; 놭; ) HANGUL SYLLABLE NWAT
+B1AE;B1AE;1102 116A 11C1;B1AE;1102 116A 11C1; # (놮; 놮; á„‚á…ªá‡; 놮; á„‚á…ªá‡; ) HANGUL SYLLABLE NWAP
+B1AF;B1AF;1102 116A 11C2;B1AF;1102 116A 11C2; # (놯; 놯; 놯; 놯; 놯; ) HANGUL SYLLABLE NWAH
+B1B0;B1B0;1102 116B;B1B0;1102 116B; # (놰; 놰; 놰; 놰; 놰; ) HANGUL SYLLABLE NWAE
+B1B1;B1B1;1102 116B 11A8;B1B1;1102 116B 11A8; # (놱; 놱; 놱; 놱; 놱; ) HANGUL SYLLABLE NWAEG
+B1B2;B1B2;1102 116B 11A9;B1B2;1102 116B 11A9; # (놲; 놲; 놲; 놲; 놲; ) HANGUL SYLLABLE NWAEGG
+B1B3;B1B3;1102 116B 11AA;B1B3;1102 116B 11AA; # (놳; 놳; 놳; 놳; 놳; ) HANGUL SYLLABLE NWAEGS
+B1B4;B1B4;1102 116B 11AB;B1B4;1102 116B 11AB; # (놴; 놴; 놴; 놴; 놴; ) HANGUL SYLLABLE NWAEN
+B1B5;B1B5;1102 116B 11AC;B1B5;1102 116B 11AC; # (놵; 놵; 놵; 놵; 놵; ) HANGUL SYLLABLE NWAENJ
+B1B6;B1B6;1102 116B 11AD;B1B6;1102 116B 11AD; # (놶; 놶; 놶; 놶; 놶; ) HANGUL SYLLABLE NWAENH
+B1B7;B1B7;1102 116B 11AE;B1B7;1102 116B 11AE; # (놷; 놷; 놷; 놷; 놷; ) HANGUL SYLLABLE NWAED
+B1B8;B1B8;1102 116B 11AF;B1B8;1102 116B 11AF; # (놸; 놸; 놸; 놸; 놸; ) HANGUL SYLLABLE NWAEL
+B1B9;B1B9;1102 116B 11B0;B1B9;1102 116B 11B0; # (놹; 놹; 놹; 놹; 놹; ) HANGUL SYLLABLE NWAELG
+B1BA;B1BA;1102 116B 11B1;B1BA;1102 116B 11B1; # (놺; 놺; 놺; 놺; 놺; ) HANGUL SYLLABLE NWAELM
+B1BB;B1BB;1102 116B 11B2;B1BB;1102 116B 11B2; # (놻; 놻; 놻; 놻; 놻; ) HANGUL SYLLABLE NWAELB
+B1BC;B1BC;1102 116B 11B3;B1BC;1102 116B 11B3; # (놼; 놼; 놼; 놼; 놼; ) HANGUL SYLLABLE NWAELS
+B1BD;B1BD;1102 116B 11B4;B1BD;1102 116B 11B4; # (놽; 놽; 놽; 놽; 놽; ) HANGUL SYLLABLE NWAELT
+B1BE;B1BE;1102 116B 11B5;B1BE;1102 116B 11B5; # (놾; 놾; 놾; 놾; 놾; ) HANGUL SYLLABLE NWAELP
+B1BF;B1BF;1102 116B 11B6;B1BF;1102 116B 11B6; # (놿; 놿; 놿; 놿; 놿; ) HANGUL SYLLABLE NWAELH
+B1C0;B1C0;1102 116B 11B7;B1C0;1102 116B 11B7; # (뇀; 뇀; 뇀; 뇀; 뇀; ) HANGUL SYLLABLE NWAEM
+B1C1;B1C1;1102 116B 11B8;B1C1;1102 116B 11B8; # (ë‡; ë‡; 뇁; ë‡; 뇁; ) HANGUL SYLLABLE NWAEB
+B1C2;B1C2;1102 116B 11B9;B1C2;1102 116B 11B9; # (뇂; 뇂; 뇂; 뇂; 뇂; ) HANGUL SYLLABLE NWAEBS
+B1C3;B1C3;1102 116B 11BA;B1C3;1102 116B 11BA; # (뇃; 뇃; 뇃; 뇃; 뇃; ) HANGUL SYLLABLE NWAES
+B1C4;B1C4;1102 116B 11BB;B1C4;1102 116B 11BB; # (뇄; 뇄; 뇄; 뇄; 뇄; ) HANGUL SYLLABLE NWAESS
+B1C5;B1C5;1102 116B 11BC;B1C5;1102 116B 11BC; # (뇅; 뇅; 뇅; 뇅; 뇅; ) HANGUL SYLLABLE NWAENG
+B1C6;B1C6;1102 116B 11BD;B1C6;1102 116B 11BD; # (뇆; 뇆; 뇆; 뇆; 뇆; ) HANGUL SYLLABLE NWAEJ
+B1C7;B1C7;1102 116B 11BE;B1C7;1102 116B 11BE; # (뇇; 뇇; 뇇; 뇇; 뇇; ) HANGUL SYLLABLE NWAEC
+B1C8;B1C8;1102 116B 11BF;B1C8;1102 116B 11BF; # (뇈; 뇈; 뇈; 뇈; 뇈; ) HANGUL SYLLABLE NWAEK
+B1C9;B1C9;1102 116B 11C0;B1C9;1102 116B 11C0; # (뇉; 뇉; 뇉; 뇉; 뇉; ) HANGUL SYLLABLE NWAET
+B1CA;B1CA;1102 116B 11C1;B1CA;1102 116B 11C1; # (뇊; 뇊; á„‚á…«á‡; 뇊; á„‚á…«á‡; ) HANGUL SYLLABLE NWAEP
+B1CB;B1CB;1102 116B 11C2;B1CB;1102 116B 11C2; # (뇋; 뇋; 뇋; 뇋; 뇋; ) HANGUL SYLLABLE NWAEH
+B1CC;B1CC;1102 116C;B1CC;1102 116C; # (뇌; 뇌; 뇌; 뇌; 뇌; ) HANGUL SYLLABLE NOE
+B1CD;B1CD;1102 116C 11A8;B1CD;1102 116C 11A8; # (ë‡; ë‡; 뇍; ë‡; 뇍; ) HANGUL SYLLABLE NOEG
+B1CE;B1CE;1102 116C 11A9;B1CE;1102 116C 11A9; # (뇎; 뇎; 뇎; 뇎; 뇎; ) HANGUL SYLLABLE NOEGG
+B1CF;B1CF;1102 116C 11AA;B1CF;1102 116C 11AA; # (ë‡; ë‡; 뇏; ë‡; 뇏; ) HANGUL SYLLABLE NOEGS
+B1D0;B1D0;1102 116C 11AB;B1D0;1102 116C 11AB; # (ë‡; ë‡; 뇐; ë‡; 뇐; ) HANGUL SYLLABLE NOEN
+B1D1;B1D1;1102 116C 11AC;B1D1;1102 116C 11AC; # (뇑; 뇑; 뇑; 뇑; 뇑; ) HANGUL SYLLABLE NOENJ
+B1D2;B1D2;1102 116C 11AD;B1D2;1102 116C 11AD; # (뇒; 뇒; 뇒; 뇒; 뇒; ) HANGUL SYLLABLE NOENH
+B1D3;B1D3;1102 116C 11AE;B1D3;1102 116C 11AE; # (뇓; 뇓; 뇓; 뇓; 뇓; ) HANGUL SYLLABLE NOED
+B1D4;B1D4;1102 116C 11AF;B1D4;1102 116C 11AF; # (뇔; 뇔; 뇔; 뇔; 뇔; ) HANGUL SYLLABLE NOEL
+B1D5;B1D5;1102 116C 11B0;B1D5;1102 116C 11B0; # (뇕; 뇕; 뇕; 뇕; 뇕; ) HANGUL SYLLABLE NOELG
+B1D6;B1D6;1102 116C 11B1;B1D6;1102 116C 11B1; # (뇖; 뇖; 뇖; 뇖; 뇖; ) HANGUL SYLLABLE NOELM
+B1D7;B1D7;1102 116C 11B2;B1D7;1102 116C 11B2; # (뇗; 뇗; 뇗; 뇗; 뇗; ) HANGUL SYLLABLE NOELB
+B1D8;B1D8;1102 116C 11B3;B1D8;1102 116C 11B3; # (뇘; 뇘; 뇘; 뇘; 뇘; ) HANGUL SYLLABLE NOELS
+B1D9;B1D9;1102 116C 11B4;B1D9;1102 116C 11B4; # (뇙; 뇙; 뇙; 뇙; 뇙; ) HANGUL SYLLABLE NOELT
+B1DA;B1DA;1102 116C 11B5;B1DA;1102 116C 11B5; # (뇚; 뇚; 뇚; 뇚; 뇚; ) HANGUL SYLLABLE NOELP
+B1DB;B1DB;1102 116C 11B6;B1DB;1102 116C 11B6; # (뇛; 뇛; 뇛; 뇛; 뇛; ) HANGUL SYLLABLE NOELH
+B1DC;B1DC;1102 116C 11B7;B1DC;1102 116C 11B7; # (뇜; 뇜; 뇜; 뇜; 뇜; ) HANGUL SYLLABLE NOEM
+B1DD;B1DD;1102 116C 11B8;B1DD;1102 116C 11B8; # (ë‡; ë‡; 뇝; ë‡; 뇝; ) HANGUL SYLLABLE NOEB
+B1DE;B1DE;1102 116C 11B9;B1DE;1102 116C 11B9; # (뇞; 뇞; 뇞; 뇞; 뇞; ) HANGUL SYLLABLE NOEBS
+B1DF;B1DF;1102 116C 11BA;B1DF;1102 116C 11BA; # (뇟; 뇟; 뇟; 뇟; 뇟; ) HANGUL SYLLABLE NOES
+B1E0;B1E0;1102 116C 11BB;B1E0;1102 116C 11BB; # (뇠; 뇠; 뇠; 뇠; 뇠; ) HANGUL SYLLABLE NOESS
+B1E1;B1E1;1102 116C 11BC;B1E1;1102 116C 11BC; # (뇡; 뇡; 뇡; 뇡; 뇡; ) HANGUL SYLLABLE NOENG
+B1E2;B1E2;1102 116C 11BD;B1E2;1102 116C 11BD; # (뇢; 뇢; 뇢; 뇢; 뇢; ) HANGUL SYLLABLE NOEJ
+B1E3;B1E3;1102 116C 11BE;B1E3;1102 116C 11BE; # (뇣; 뇣; 뇣; 뇣; 뇣; ) HANGUL SYLLABLE NOEC
+B1E4;B1E4;1102 116C 11BF;B1E4;1102 116C 11BF; # (뇤; 뇤; 뇤; 뇤; 뇤; ) HANGUL SYLLABLE NOEK
+B1E5;B1E5;1102 116C 11C0;B1E5;1102 116C 11C0; # (뇥; 뇥; 뇥; 뇥; 뇥; ) HANGUL SYLLABLE NOET
+B1E6;B1E6;1102 116C 11C1;B1E6;1102 116C 11C1; # (뇦; 뇦; á„‚á…¬á‡; 뇦; á„‚á…¬á‡; ) HANGUL SYLLABLE NOEP
+B1E7;B1E7;1102 116C 11C2;B1E7;1102 116C 11C2; # (뇧; 뇧; 뇧; 뇧; 뇧; ) HANGUL SYLLABLE NOEH
+B1E8;B1E8;1102 116D;B1E8;1102 116D; # (뇨; 뇨; 뇨; 뇨; 뇨; ) HANGUL SYLLABLE NYO
+B1E9;B1E9;1102 116D 11A8;B1E9;1102 116D 11A8; # (뇩; 뇩; 뇩; 뇩; 뇩; ) HANGUL SYLLABLE NYOG
+B1EA;B1EA;1102 116D 11A9;B1EA;1102 116D 11A9; # (뇪; 뇪; 뇪; 뇪; 뇪; ) HANGUL SYLLABLE NYOGG
+B1EB;B1EB;1102 116D 11AA;B1EB;1102 116D 11AA; # (뇫; 뇫; 뇫; 뇫; 뇫; ) HANGUL SYLLABLE NYOGS
+B1EC;B1EC;1102 116D 11AB;B1EC;1102 116D 11AB; # (뇬; 뇬; 뇬; 뇬; 뇬; ) HANGUL SYLLABLE NYON
+B1ED;B1ED;1102 116D 11AC;B1ED;1102 116D 11AC; # (뇭; 뇭; 뇭; 뇭; 뇭; ) HANGUL SYLLABLE NYONJ
+B1EE;B1EE;1102 116D 11AD;B1EE;1102 116D 11AD; # (뇮; 뇮; 뇮; 뇮; 뇮; ) HANGUL SYLLABLE NYONH
+B1EF;B1EF;1102 116D 11AE;B1EF;1102 116D 11AE; # (뇯; 뇯; 뇯; 뇯; 뇯; ) HANGUL SYLLABLE NYOD
+B1F0;B1F0;1102 116D 11AF;B1F0;1102 116D 11AF; # (뇰; 뇰; 뇰; 뇰; 뇰; ) HANGUL SYLLABLE NYOL
+B1F1;B1F1;1102 116D 11B0;B1F1;1102 116D 11B0; # (뇱; 뇱; 뇱; 뇱; 뇱; ) HANGUL SYLLABLE NYOLG
+B1F2;B1F2;1102 116D 11B1;B1F2;1102 116D 11B1; # (뇲; 뇲; 뇲; 뇲; 뇲; ) HANGUL SYLLABLE NYOLM
+B1F3;B1F3;1102 116D 11B2;B1F3;1102 116D 11B2; # (뇳; 뇳; 뇳; 뇳; 뇳; ) HANGUL SYLLABLE NYOLB
+B1F4;B1F4;1102 116D 11B3;B1F4;1102 116D 11B3; # (뇴; 뇴; 뇴; 뇴; 뇴; ) HANGUL SYLLABLE NYOLS
+B1F5;B1F5;1102 116D 11B4;B1F5;1102 116D 11B4; # (뇵; 뇵; 뇵; 뇵; 뇵; ) HANGUL SYLLABLE NYOLT
+B1F6;B1F6;1102 116D 11B5;B1F6;1102 116D 11B5; # (뇶; 뇶; 뇶; 뇶; 뇶; ) HANGUL SYLLABLE NYOLP
+B1F7;B1F7;1102 116D 11B6;B1F7;1102 116D 11B6; # (뇷; 뇷; 뇷; 뇷; 뇷; ) HANGUL SYLLABLE NYOLH
+B1F8;B1F8;1102 116D 11B7;B1F8;1102 116D 11B7; # (뇸; 뇸; 뇸; 뇸; 뇸; ) HANGUL SYLLABLE NYOM
+B1F9;B1F9;1102 116D 11B8;B1F9;1102 116D 11B8; # (뇹; 뇹; 뇹; 뇹; 뇹; ) HANGUL SYLLABLE NYOB
+B1FA;B1FA;1102 116D 11B9;B1FA;1102 116D 11B9; # (뇺; 뇺; 뇺; 뇺; 뇺; ) HANGUL SYLLABLE NYOBS
+B1FB;B1FB;1102 116D 11BA;B1FB;1102 116D 11BA; # (뇻; 뇻; 뇻; 뇻; 뇻; ) HANGUL SYLLABLE NYOS
+B1FC;B1FC;1102 116D 11BB;B1FC;1102 116D 11BB; # (뇼; 뇼; 뇼; 뇼; 뇼; ) HANGUL SYLLABLE NYOSS
+B1FD;B1FD;1102 116D 11BC;B1FD;1102 116D 11BC; # (뇽; 뇽; 뇽; 뇽; 뇽; ) HANGUL SYLLABLE NYONG
+B1FE;B1FE;1102 116D 11BD;B1FE;1102 116D 11BD; # (뇾; 뇾; 뇾; 뇾; 뇾; ) HANGUL SYLLABLE NYOJ
+B1FF;B1FF;1102 116D 11BE;B1FF;1102 116D 11BE; # (뇿; 뇿; 뇿; 뇿; 뇿; ) HANGUL SYLLABLE NYOC
+B200;B200;1102 116D 11BF;B200;1102 116D 11BF; # (눀; 눀; 눀; 눀; 눀; ) HANGUL SYLLABLE NYOK
+B201;B201;1102 116D 11C0;B201;1102 116D 11C0; # (ëˆ; ëˆ; 눁; ëˆ; 눁; ) HANGUL SYLLABLE NYOT
+B202;B202;1102 116D 11C1;B202;1102 116D 11C1; # (눂; 눂; á„‚á…­á‡; 눂; á„‚á…­á‡; ) HANGUL SYLLABLE NYOP
+B203;B203;1102 116D 11C2;B203;1102 116D 11C2; # (눃; 눃; 눃; 눃; 눃; ) HANGUL SYLLABLE NYOH
+B204;B204;1102 116E;B204;1102 116E; # (누; 누; 누; 누; 누; ) HANGUL SYLLABLE NU
+B205;B205;1102 116E 11A8;B205;1102 116E 11A8; # (눅; 눅; 눅; 눅; 눅; ) HANGUL SYLLABLE NUG
+B206;B206;1102 116E 11A9;B206;1102 116E 11A9; # (눆; 눆; 눆; 눆; 눆; ) HANGUL SYLLABLE NUGG
+B207;B207;1102 116E 11AA;B207;1102 116E 11AA; # (눇; 눇; 눇; 눇; 눇; ) HANGUL SYLLABLE NUGS
+B208;B208;1102 116E 11AB;B208;1102 116E 11AB; # (눈; 눈; 눈; 눈; 눈; ) HANGUL SYLLABLE NUN
+B209;B209;1102 116E 11AC;B209;1102 116E 11AC; # (눉; 눉; 눉; 눉; 눉; ) HANGUL SYLLABLE NUNJ
+B20A;B20A;1102 116E 11AD;B20A;1102 116E 11AD; # (눊; 눊; 눊; 눊; 눊; ) HANGUL SYLLABLE NUNH
+B20B;B20B;1102 116E 11AE;B20B;1102 116E 11AE; # (눋; 눋; 눋; 눋; 눋; ) HANGUL SYLLABLE NUD
+B20C;B20C;1102 116E 11AF;B20C;1102 116E 11AF; # (눌; 눌; 눌; 눌; 눌; ) HANGUL SYLLABLE NUL
+B20D;B20D;1102 116E 11B0;B20D;1102 116E 11B0; # (ëˆ; ëˆ; 눍; ëˆ; 눍; ) HANGUL SYLLABLE NULG
+B20E;B20E;1102 116E 11B1;B20E;1102 116E 11B1; # (눎; 눎; 눎; 눎; 눎; ) HANGUL SYLLABLE NULM
+B20F;B20F;1102 116E 11B2;B20F;1102 116E 11B2; # (ëˆ; ëˆ; 눏; ëˆ; 눏; ) HANGUL SYLLABLE NULB
+B210;B210;1102 116E 11B3;B210;1102 116E 11B3; # (ëˆ; ëˆ; 눐; ëˆ; 눐; ) HANGUL SYLLABLE NULS
+B211;B211;1102 116E 11B4;B211;1102 116E 11B4; # (눑; 눑; 눑; 눑; 눑; ) HANGUL SYLLABLE NULT
+B212;B212;1102 116E 11B5;B212;1102 116E 11B5; # (눒; 눒; 눒; 눒; 눒; ) HANGUL SYLLABLE NULP
+B213;B213;1102 116E 11B6;B213;1102 116E 11B6; # (눓; 눓; 눓; 눓; 눓; ) HANGUL SYLLABLE NULH
+B214;B214;1102 116E 11B7;B214;1102 116E 11B7; # (눔; 눔; 눔; 눔; 눔; ) HANGUL SYLLABLE NUM
+B215;B215;1102 116E 11B8;B215;1102 116E 11B8; # (눕; 눕; 눕; 눕; 눕; ) HANGUL SYLLABLE NUB
+B216;B216;1102 116E 11B9;B216;1102 116E 11B9; # (눖; 눖; 눖; 눖; 눖; ) HANGUL SYLLABLE NUBS
+B217;B217;1102 116E 11BA;B217;1102 116E 11BA; # (눗; 눗; 눗; 눗; 눗; ) HANGUL SYLLABLE NUS
+B218;B218;1102 116E 11BB;B218;1102 116E 11BB; # (눘; 눘; 눘; 눘; 눘; ) HANGUL SYLLABLE NUSS
+B219;B219;1102 116E 11BC;B219;1102 116E 11BC; # (눙; 눙; 눙; 눙; 눙; ) HANGUL SYLLABLE NUNG
+B21A;B21A;1102 116E 11BD;B21A;1102 116E 11BD; # (눚; 눚; 눚; 눚; 눚; ) HANGUL SYLLABLE NUJ
+B21B;B21B;1102 116E 11BE;B21B;1102 116E 11BE; # (눛; 눛; 눛; 눛; 눛; ) HANGUL SYLLABLE NUC
+B21C;B21C;1102 116E 11BF;B21C;1102 116E 11BF; # (눜; 눜; 눜; 눜; 눜; ) HANGUL SYLLABLE NUK
+B21D;B21D;1102 116E 11C0;B21D;1102 116E 11C0; # (ëˆ; ëˆ; 눝; ëˆ; 눝; ) HANGUL SYLLABLE NUT
+B21E;B21E;1102 116E 11C1;B21E;1102 116E 11C1; # (눞; 눞; á„‚á…®á‡; 눞; á„‚á…®á‡; ) HANGUL SYLLABLE NUP
+B21F;B21F;1102 116E 11C2;B21F;1102 116E 11C2; # (눟; 눟; 눟; 눟; 눟; ) HANGUL SYLLABLE NUH
+B220;B220;1102 116F;B220;1102 116F; # (눠; 눠; 눠; 눠; 눠; ) HANGUL SYLLABLE NWEO
+B221;B221;1102 116F 11A8;B221;1102 116F 11A8; # (눡; 눡; 눡; 눡; 눡; ) HANGUL SYLLABLE NWEOG
+B222;B222;1102 116F 11A9;B222;1102 116F 11A9; # (눢; 눢; 눢; 눢; 눢; ) HANGUL SYLLABLE NWEOGG
+B223;B223;1102 116F 11AA;B223;1102 116F 11AA; # (눣; 눣; 눣; 눣; 눣; ) HANGUL SYLLABLE NWEOGS
+B224;B224;1102 116F 11AB;B224;1102 116F 11AB; # (눤; 눤; 눤; 눤; 눤; ) HANGUL SYLLABLE NWEON
+B225;B225;1102 116F 11AC;B225;1102 116F 11AC; # (눥; 눥; 눥; 눥; 눥; ) HANGUL SYLLABLE NWEONJ
+B226;B226;1102 116F 11AD;B226;1102 116F 11AD; # (눦; 눦; 눦; 눦; 눦; ) HANGUL SYLLABLE NWEONH
+B227;B227;1102 116F 11AE;B227;1102 116F 11AE; # (눧; 눧; 눧; 눧; 눧; ) HANGUL SYLLABLE NWEOD
+B228;B228;1102 116F 11AF;B228;1102 116F 11AF; # (눨; 눨; 눨; 눨; 눨; ) HANGUL SYLLABLE NWEOL
+B229;B229;1102 116F 11B0;B229;1102 116F 11B0; # (눩; 눩; 눩; 눩; 눩; ) HANGUL SYLLABLE NWEOLG
+B22A;B22A;1102 116F 11B1;B22A;1102 116F 11B1; # (눪; 눪; 눪; 눪; 눪; ) HANGUL SYLLABLE NWEOLM
+B22B;B22B;1102 116F 11B2;B22B;1102 116F 11B2; # (눫; 눫; 눫; 눫; 눫; ) HANGUL SYLLABLE NWEOLB
+B22C;B22C;1102 116F 11B3;B22C;1102 116F 11B3; # (눬; 눬; 눬; 눬; 눬; ) HANGUL SYLLABLE NWEOLS
+B22D;B22D;1102 116F 11B4;B22D;1102 116F 11B4; # (눭; 눭; 눭; 눭; 눭; ) HANGUL SYLLABLE NWEOLT
+B22E;B22E;1102 116F 11B5;B22E;1102 116F 11B5; # (눮; 눮; 눮; 눮; 눮; ) HANGUL SYLLABLE NWEOLP
+B22F;B22F;1102 116F 11B6;B22F;1102 116F 11B6; # (눯; 눯; 눯; 눯; 눯; ) HANGUL SYLLABLE NWEOLH
+B230;B230;1102 116F 11B7;B230;1102 116F 11B7; # (눰; 눰; 눰; 눰; 눰; ) HANGUL SYLLABLE NWEOM
+B231;B231;1102 116F 11B8;B231;1102 116F 11B8; # (눱; 눱; 눱; 눱; 눱; ) HANGUL SYLLABLE NWEOB
+B232;B232;1102 116F 11B9;B232;1102 116F 11B9; # (눲; 눲; 눲; 눲; 눲; ) HANGUL SYLLABLE NWEOBS
+B233;B233;1102 116F 11BA;B233;1102 116F 11BA; # (눳; 눳; 눳; 눳; 눳; ) HANGUL SYLLABLE NWEOS
+B234;B234;1102 116F 11BB;B234;1102 116F 11BB; # (눴; 눴; 눴; 눴; 눴; ) HANGUL SYLLABLE NWEOSS
+B235;B235;1102 116F 11BC;B235;1102 116F 11BC; # (눵; 눵; 눵; 눵; 눵; ) HANGUL SYLLABLE NWEONG
+B236;B236;1102 116F 11BD;B236;1102 116F 11BD; # (눶; 눶; 눶; 눶; 눶; ) HANGUL SYLLABLE NWEOJ
+B237;B237;1102 116F 11BE;B237;1102 116F 11BE; # (눷; 눷; 눷; 눷; 눷; ) HANGUL SYLLABLE NWEOC
+B238;B238;1102 116F 11BF;B238;1102 116F 11BF; # (눸; 눸; 눸; 눸; 눸; ) HANGUL SYLLABLE NWEOK
+B239;B239;1102 116F 11C0;B239;1102 116F 11C0; # (눹; 눹; 눹; 눹; 눹; ) HANGUL SYLLABLE NWEOT
+B23A;B23A;1102 116F 11C1;B23A;1102 116F 11C1; # (눺; 눺; á„‚á…¯á‡; 눺; á„‚á…¯á‡; ) HANGUL SYLLABLE NWEOP
+B23B;B23B;1102 116F 11C2;B23B;1102 116F 11C2; # (눻; 눻; 눻; 눻; 눻; ) HANGUL SYLLABLE NWEOH
+B23C;B23C;1102 1170;B23C;1102 1170; # (눼; 눼; 눼; 눼; 눼; ) HANGUL SYLLABLE NWE
+B23D;B23D;1102 1170 11A8;B23D;1102 1170 11A8; # (눽; 눽; 눽; 눽; 눽; ) HANGUL SYLLABLE NWEG
+B23E;B23E;1102 1170 11A9;B23E;1102 1170 11A9; # (눾; 눾; 눾; 눾; 눾; ) HANGUL SYLLABLE NWEGG
+B23F;B23F;1102 1170 11AA;B23F;1102 1170 11AA; # (눿; 눿; 눿; 눿; 눿; ) HANGUL SYLLABLE NWEGS
+B240;B240;1102 1170 11AB;B240;1102 1170 11AB; # (뉀; 뉀; 뉀; 뉀; 뉀; ) HANGUL SYLLABLE NWEN
+B241;B241;1102 1170 11AC;B241;1102 1170 11AC; # (ë‰; ë‰; 뉁; ë‰; 뉁; ) HANGUL SYLLABLE NWENJ
+B242;B242;1102 1170 11AD;B242;1102 1170 11AD; # (뉂; 뉂; 뉂; 뉂; 뉂; ) HANGUL SYLLABLE NWENH
+B243;B243;1102 1170 11AE;B243;1102 1170 11AE; # (뉃; 뉃; 뉃; 뉃; 뉃; ) HANGUL SYLLABLE NWED
+B244;B244;1102 1170 11AF;B244;1102 1170 11AF; # (뉄; 뉄; 뉄; 뉄; 뉄; ) HANGUL SYLLABLE NWEL
+B245;B245;1102 1170 11B0;B245;1102 1170 11B0; # (뉅; 뉅; 뉅; 뉅; 뉅; ) HANGUL SYLLABLE NWELG
+B246;B246;1102 1170 11B1;B246;1102 1170 11B1; # (뉆; 뉆; 뉆; 뉆; 뉆; ) HANGUL SYLLABLE NWELM
+B247;B247;1102 1170 11B2;B247;1102 1170 11B2; # (뉇; 뉇; 뉇; 뉇; 뉇; ) HANGUL SYLLABLE NWELB
+B248;B248;1102 1170 11B3;B248;1102 1170 11B3; # (뉈; 뉈; 뉈; 뉈; 뉈; ) HANGUL SYLLABLE NWELS
+B249;B249;1102 1170 11B4;B249;1102 1170 11B4; # (뉉; 뉉; 뉉; 뉉; 뉉; ) HANGUL SYLLABLE NWELT
+B24A;B24A;1102 1170 11B5;B24A;1102 1170 11B5; # (뉊; 뉊; 뉊; 뉊; 뉊; ) HANGUL SYLLABLE NWELP
+B24B;B24B;1102 1170 11B6;B24B;1102 1170 11B6; # (뉋; 뉋; 뉋; 뉋; 뉋; ) HANGUL SYLLABLE NWELH
+B24C;B24C;1102 1170 11B7;B24C;1102 1170 11B7; # (뉌; 뉌; 뉌; 뉌; 뉌; ) HANGUL SYLLABLE NWEM
+B24D;B24D;1102 1170 11B8;B24D;1102 1170 11B8; # (ë‰; ë‰; 뉍; ë‰; 뉍; ) HANGUL SYLLABLE NWEB
+B24E;B24E;1102 1170 11B9;B24E;1102 1170 11B9; # (뉎; 뉎; 뉎; 뉎; 뉎; ) HANGUL SYLLABLE NWEBS
+B24F;B24F;1102 1170 11BA;B24F;1102 1170 11BA; # (ë‰; ë‰; 뉏; ë‰; 뉏; ) HANGUL SYLLABLE NWES
+B250;B250;1102 1170 11BB;B250;1102 1170 11BB; # (ë‰; ë‰; 뉐; ë‰; 뉐; ) HANGUL SYLLABLE NWESS
+B251;B251;1102 1170 11BC;B251;1102 1170 11BC; # (뉑; 뉑; 뉑; 뉑; 뉑; ) HANGUL SYLLABLE NWENG
+B252;B252;1102 1170 11BD;B252;1102 1170 11BD; # (뉒; 뉒; 뉒; 뉒; 뉒; ) HANGUL SYLLABLE NWEJ
+B253;B253;1102 1170 11BE;B253;1102 1170 11BE; # (뉓; 뉓; 뉓; 뉓; 뉓; ) HANGUL SYLLABLE NWEC
+B254;B254;1102 1170 11BF;B254;1102 1170 11BF; # (뉔; 뉔; 뉔; 뉔; 뉔; ) HANGUL SYLLABLE NWEK
+B255;B255;1102 1170 11C0;B255;1102 1170 11C0; # (뉕; 뉕; 뉕; 뉕; 뉕; ) HANGUL SYLLABLE NWET
+B256;B256;1102 1170 11C1;B256;1102 1170 11C1; # (뉖; 뉖; á„‚á…°á‡; 뉖; á„‚á…°á‡; ) HANGUL SYLLABLE NWEP
+B257;B257;1102 1170 11C2;B257;1102 1170 11C2; # (뉗; 뉗; 뉗; 뉗; 뉗; ) HANGUL SYLLABLE NWEH
+B258;B258;1102 1171;B258;1102 1171; # (뉘; 뉘; 뉘; 뉘; 뉘; ) HANGUL SYLLABLE NWI
+B259;B259;1102 1171 11A8;B259;1102 1171 11A8; # (뉙; 뉙; 뉙; 뉙; 뉙; ) HANGUL SYLLABLE NWIG
+B25A;B25A;1102 1171 11A9;B25A;1102 1171 11A9; # (뉚; 뉚; 뉚; 뉚; 뉚; ) HANGUL SYLLABLE NWIGG
+B25B;B25B;1102 1171 11AA;B25B;1102 1171 11AA; # (뉛; 뉛; 뉛; 뉛; 뉛; ) HANGUL SYLLABLE NWIGS
+B25C;B25C;1102 1171 11AB;B25C;1102 1171 11AB; # (뉜; 뉜; 뉜; 뉜; 뉜; ) HANGUL SYLLABLE NWIN
+B25D;B25D;1102 1171 11AC;B25D;1102 1171 11AC; # (ë‰; ë‰; 뉝; ë‰; 뉝; ) HANGUL SYLLABLE NWINJ
+B25E;B25E;1102 1171 11AD;B25E;1102 1171 11AD; # (뉞; 뉞; 뉞; 뉞; 뉞; ) HANGUL SYLLABLE NWINH
+B25F;B25F;1102 1171 11AE;B25F;1102 1171 11AE; # (뉟; 뉟; 뉟; 뉟; 뉟; ) HANGUL SYLLABLE NWID
+B260;B260;1102 1171 11AF;B260;1102 1171 11AF; # (뉠; 뉠; 뉠; 뉠; 뉠; ) HANGUL SYLLABLE NWIL
+B261;B261;1102 1171 11B0;B261;1102 1171 11B0; # (뉡; 뉡; 뉡; 뉡; 뉡; ) HANGUL SYLLABLE NWILG
+B262;B262;1102 1171 11B1;B262;1102 1171 11B1; # (뉢; 뉢; 뉢; 뉢; 뉢; ) HANGUL SYLLABLE NWILM
+B263;B263;1102 1171 11B2;B263;1102 1171 11B2; # (뉣; 뉣; 뉣; 뉣; 뉣; ) HANGUL SYLLABLE NWILB
+B264;B264;1102 1171 11B3;B264;1102 1171 11B3; # (뉤; 뉤; 뉤; 뉤; 뉤; ) HANGUL SYLLABLE NWILS
+B265;B265;1102 1171 11B4;B265;1102 1171 11B4; # (뉥; 뉥; 뉥; 뉥; 뉥; ) HANGUL SYLLABLE NWILT
+B266;B266;1102 1171 11B5;B266;1102 1171 11B5; # (뉦; 뉦; 뉦; 뉦; 뉦; ) HANGUL SYLLABLE NWILP
+B267;B267;1102 1171 11B6;B267;1102 1171 11B6; # (뉧; 뉧; 뉧; 뉧; 뉧; ) HANGUL SYLLABLE NWILH
+B268;B268;1102 1171 11B7;B268;1102 1171 11B7; # (뉨; 뉨; 뉨; 뉨; 뉨; ) HANGUL SYLLABLE NWIM
+B269;B269;1102 1171 11B8;B269;1102 1171 11B8; # (뉩; 뉩; 뉩; 뉩; 뉩; ) HANGUL SYLLABLE NWIB
+B26A;B26A;1102 1171 11B9;B26A;1102 1171 11B9; # (뉪; 뉪; 뉪; 뉪; 뉪; ) HANGUL SYLLABLE NWIBS
+B26B;B26B;1102 1171 11BA;B26B;1102 1171 11BA; # (뉫; 뉫; 뉫; 뉫; 뉫; ) HANGUL SYLLABLE NWIS
+B26C;B26C;1102 1171 11BB;B26C;1102 1171 11BB; # (뉬; 뉬; 뉬; 뉬; 뉬; ) HANGUL SYLLABLE NWISS
+B26D;B26D;1102 1171 11BC;B26D;1102 1171 11BC; # (뉭; 뉭; 뉭; 뉭; 뉭; ) HANGUL SYLLABLE NWING
+B26E;B26E;1102 1171 11BD;B26E;1102 1171 11BD; # (뉮; 뉮; 뉮; 뉮; 뉮; ) HANGUL SYLLABLE NWIJ
+B26F;B26F;1102 1171 11BE;B26F;1102 1171 11BE; # (뉯; 뉯; 뉯; 뉯; 뉯; ) HANGUL SYLLABLE NWIC
+B270;B270;1102 1171 11BF;B270;1102 1171 11BF; # (뉰; 뉰; 뉰; 뉰; 뉰; ) HANGUL SYLLABLE NWIK
+B271;B271;1102 1171 11C0;B271;1102 1171 11C0; # (뉱; 뉱; 뉱; 뉱; 뉱; ) HANGUL SYLLABLE NWIT
+B272;B272;1102 1171 11C1;B272;1102 1171 11C1; # (뉲; 뉲; á„‚á…±á‡; 뉲; á„‚á…±á‡; ) HANGUL SYLLABLE NWIP
+B273;B273;1102 1171 11C2;B273;1102 1171 11C2; # (뉳; 뉳; 뉳; 뉳; 뉳; ) HANGUL SYLLABLE NWIH
+B274;B274;1102 1172;B274;1102 1172; # (뉴; 뉴; 뉴; 뉴; 뉴; ) HANGUL SYLLABLE NYU
+B275;B275;1102 1172 11A8;B275;1102 1172 11A8; # (뉵; 뉵; 뉵; 뉵; 뉵; ) HANGUL SYLLABLE NYUG
+B276;B276;1102 1172 11A9;B276;1102 1172 11A9; # (뉶; 뉶; 뉶; 뉶; 뉶; ) HANGUL SYLLABLE NYUGG
+B277;B277;1102 1172 11AA;B277;1102 1172 11AA; # (뉷; 뉷; 뉷; 뉷; 뉷; ) HANGUL SYLLABLE NYUGS
+B278;B278;1102 1172 11AB;B278;1102 1172 11AB; # (뉸; 뉸; 뉸; 뉸; 뉸; ) HANGUL SYLLABLE NYUN
+B279;B279;1102 1172 11AC;B279;1102 1172 11AC; # (뉹; 뉹; 뉹; 뉹; 뉹; ) HANGUL SYLLABLE NYUNJ
+B27A;B27A;1102 1172 11AD;B27A;1102 1172 11AD; # (뉺; 뉺; 뉺; 뉺; 뉺; ) HANGUL SYLLABLE NYUNH
+B27B;B27B;1102 1172 11AE;B27B;1102 1172 11AE; # (뉻; 뉻; 뉻; 뉻; 뉻; ) HANGUL SYLLABLE NYUD
+B27C;B27C;1102 1172 11AF;B27C;1102 1172 11AF; # (뉼; 뉼; 뉼; 뉼; 뉼; ) HANGUL SYLLABLE NYUL
+B27D;B27D;1102 1172 11B0;B27D;1102 1172 11B0; # (뉽; 뉽; 뉽; 뉽; 뉽; ) HANGUL SYLLABLE NYULG
+B27E;B27E;1102 1172 11B1;B27E;1102 1172 11B1; # (뉾; 뉾; 뉾; 뉾; 뉾; ) HANGUL SYLLABLE NYULM
+B27F;B27F;1102 1172 11B2;B27F;1102 1172 11B2; # (뉿; 뉿; 뉿; 뉿; 뉿; ) HANGUL SYLLABLE NYULB
+B280;B280;1102 1172 11B3;B280;1102 1172 11B3; # (늀; 늀; 늀; 늀; 늀; ) HANGUL SYLLABLE NYULS
+B281;B281;1102 1172 11B4;B281;1102 1172 11B4; # (ëŠ; ëŠ; 늁; ëŠ; 늁; ) HANGUL SYLLABLE NYULT
+B282;B282;1102 1172 11B5;B282;1102 1172 11B5; # (늂; 늂; 늂; 늂; 늂; ) HANGUL SYLLABLE NYULP
+B283;B283;1102 1172 11B6;B283;1102 1172 11B6; # (늃; 늃; 늃; 늃; 늃; ) HANGUL SYLLABLE NYULH
+B284;B284;1102 1172 11B7;B284;1102 1172 11B7; # (늄; 늄; 늄; 늄; 늄; ) HANGUL SYLLABLE NYUM
+B285;B285;1102 1172 11B8;B285;1102 1172 11B8; # (늅; 늅; 늅; 늅; 늅; ) HANGUL SYLLABLE NYUB
+B286;B286;1102 1172 11B9;B286;1102 1172 11B9; # (늆; 늆; 늆; 늆; 늆; ) HANGUL SYLLABLE NYUBS
+B287;B287;1102 1172 11BA;B287;1102 1172 11BA; # (늇; 늇; 늇; 늇; 늇; ) HANGUL SYLLABLE NYUS
+B288;B288;1102 1172 11BB;B288;1102 1172 11BB; # (늈; 늈; 늈; 늈; 늈; ) HANGUL SYLLABLE NYUSS
+B289;B289;1102 1172 11BC;B289;1102 1172 11BC; # (늉; 늉; 늉; 늉; 늉; ) HANGUL SYLLABLE NYUNG
+B28A;B28A;1102 1172 11BD;B28A;1102 1172 11BD; # (늊; 늊; 늊; 늊; 늊; ) HANGUL SYLLABLE NYUJ
+B28B;B28B;1102 1172 11BE;B28B;1102 1172 11BE; # (늋; 늋; 늋; 늋; 늋; ) HANGUL SYLLABLE NYUC
+B28C;B28C;1102 1172 11BF;B28C;1102 1172 11BF; # (늌; 늌; 늌; 늌; 늌; ) HANGUL SYLLABLE NYUK
+B28D;B28D;1102 1172 11C0;B28D;1102 1172 11C0; # (ëŠ; ëŠ; 늍; ëŠ; 늍; ) HANGUL SYLLABLE NYUT
+B28E;B28E;1102 1172 11C1;B28E;1102 1172 11C1; # (늎; 늎; á„‚á…²á‡; 늎; á„‚á…²á‡; ) HANGUL SYLLABLE NYUP
+B28F;B28F;1102 1172 11C2;B28F;1102 1172 11C2; # (ëŠ; ëŠ; 늏; ëŠ; 늏; ) HANGUL SYLLABLE NYUH
+B290;B290;1102 1173;B290;1102 1173; # (ëŠ; ëŠ; á„‚á…³; ëŠ; á„‚á…³; ) HANGUL SYLLABLE NEU
+B291;B291;1102 1173 11A8;B291;1102 1173 11A8; # (늑; 늑; 늑; 늑; 늑; ) HANGUL SYLLABLE NEUG
+B292;B292;1102 1173 11A9;B292;1102 1173 11A9; # (늒; 늒; 늒; 늒; 늒; ) HANGUL SYLLABLE NEUGG
+B293;B293;1102 1173 11AA;B293;1102 1173 11AA; # (늓; 늓; 늓; 늓; 늓; ) HANGUL SYLLABLE NEUGS
+B294;B294;1102 1173 11AB;B294;1102 1173 11AB; # (는; 는; 는; 는; 는; ) HANGUL SYLLABLE NEUN
+B295;B295;1102 1173 11AC;B295;1102 1173 11AC; # (늕; 늕; 늕; 늕; 늕; ) HANGUL SYLLABLE NEUNJ
+B296;B296;1102 1173 11AD;B296;1102 1173 11AD; # (늖; 늖; 늖; 늖; 늖; ) HANGUL SYLLABLE NEUNH
+B297;B297;1102 1173 11AE;B297;1102 1173 11AE; # (늗; 늗; 늗; 늗; 늗; ) HANGUL SYLLABLE NEUD
+B298;B298;1102 1173 11AF;B298;1102 1173 11AF; # (늘; 늘; 늘; 늘; 늘; ) HANGUL SYLLABLE NEUL
+B299;B299;1102 1173 11B0;B299;1102 1173 11B0; # (늙; 늙; 늙; 늙; 늙; ) HANGUL SYLLABLE NEULG
+B29A;B29A;1102 1173 11B1;B29A;1102 1173 11B1; # (늚; 늚; 늚; 늚; 늚; ) HANGUL SYLLABLE NEULM
+B29B;B29B;1102 1173 11B2;B29B;1102 1173 11B2; # (늛; 늛; 늛; 늛; 늛; ) HANGUL SYLLABLE NEULB
+B29C;B29C;1102 1173 11B3;B29C;1102 1173 11B3; # (늜; 늜; 늜; 늜; 늜; ) HANGUL SYLLABLE NEULS
+B29D;B29D;1102 1173 11B4;B29D;1102 1173 11B4; # (ëŠ; ëŠ; 늝; ëŠ; 늝; ) HANGUL SYLLABLE NEULT
+B29E;B29E;1102 1173 11B5;B29E;1102 1173 11B5; # (늞; 늞; 늞; 늞; 늞; ) HANGUL SYLLABLE NEULP
+B29F;B29F;1102 1173 11B6;B29F;1102 1173 11B6; # (늟; 늟; 늟; 늟; 늟; ) HANGUL SYLLABLE NEULH
+B2A0;B2A0;1102 1173 11B7;B2A0;1102 1173 11B7; # (늠; 늠; 늠; 늠; 늠; ) HANGUL SYLLABLE NEUM
+B2A1;B2A1;1102 1173 11B8;B2A1;1102 1173 11B8; # (늡; 늡; 늡; 늡; 늡; ) HANGUL SYLLABLE NEUB
+B2A2;B2A2;1102 1173 11B9;B2A2;1102 1173 11B9; # (늢; 늢; 늢; 늢; 늢; ) HANGUL SYLLABLE NEUBS
+B2A3;B2A3;1102 1173 11BA;B2A3;1102 1173 11BA; # (늣; 늣; 늣; 늣; 늣; ) HANGUL SYLLABLE NEUS
+B2A4;B2A4;1102 1173 11BB;B2A4;1102 1173 11BB; # (늤; 늤; 늤; 늤; 늤; ) HANGUL SYLLABLE NEUSS
+B2A5;B2A5;1102 1173 11BC;B2A5;1102 1173 11BC; # (능; 능; 능; 능; 능; ) HANGUL SYLLABLE NEUNG
+B2A6;B2A6;1102 1173 11BD;B2A6;1102 1173 11BD; # (늦; 늦; 늦; 늦; 늦; ) HANGUL SYLLABLE NEUJ
+B2A7;B2A7;1102 1173 11BE;B2A7;1102 1173 11BE; # (늧; 늧; 늧; 늧; 늧; ) HANGUL SYLLABLE NEUC
+B2A8;B2A8;1102 1173 11BF;B2A8;1102 1173 11BF; # (늨; 늨; 늨; 늨; 늨; ) HANGUL SYLLABLE NEUK
+B2A9;B2A9;1102 1173 11C0;B2A9;1102 1173 11C0; # (늩; 늩; 늩; 늩; 늩; ) HANGUL SYLLABLE NEUT
+B2AA;B2AA;1102 1173 11C1;B2AA;1102 1173 11C1; # (늪; 늪; á„‚á…³á‡; 늪; á„‚á…³á‡; ) HANGUL SYLLABLE NEUP
+B2AB;B2AB;1102 1173 11C2;B2AB;1102 1173 11C2; # (늫; 늫; 늫; 늫; 늫; ) HANGUL SYLLABLE NEUH
+B2AC;B2AC;1102 1174;B2AC;1102 1174; # (늬; 늬; 늬; 늬; 늬; ) HANGUL SYLLABLE NYI
+B2AD;B2AD;1102 1174 11A8;B2AD;1102 1174 11A8; # (늭; 늭; 늭; 늭; 늭; ) HANGUL SYLLABLE NYIG
+B2AE;B2AE;1102 1174 11A9;B2AE;1102 1174 11A9; # (늮; 늮; 늮; 늮; 늮; ) HANGUL SYLLABLE NYIGG
+B2AF;B2AF;1102 1174 11AA;B2AF;1102 1174 11AA; # (늯; 늯; 늯; 늯; 늯; ) HANGUL SYLLABLE NYIGS
+B2B0;B2B0;1102 1174 11AB;B2B0;1102 1174 11AB; # (늰; 늰; 늰; 늰; 늰; ) HANGUL SYLLABLE NYIN
+B2B1;B2B1;1102 1174 11AC;B2B1;1102 1174 11AC; # (늱; 늱; 늱; 늱; 늱; ) HANGUL SYLLABLE NYINJ
+B2B2;B2B2;1102 1174 11AD;B2B2;1102 1174 11AD; # (늲; 늲; 늲; 늲; 늲; ) HANGUL SYLLABLE NYINH
+B2B3;B2B3;1102 1174 11AE;B2B3;1102 1174 11AE; # (늳; 늳; 늳; 늳; 늳; ) HANGUL SYLLABLE NYID
+B2B4;B2B4;1102 1174 11AF;B2B4;1102 1174 11AF; # (늴; 늴; 늴; 늴; 늴; ) HANGUL SYLLABLE NYIL
+B2B5;B2B5;1102 1174 11B0;B2B5;1102 1174 11B0; # (늵; 늵; 늵; 늵; 늵; ) HANGUL SYLLABLE NYILG
+B2B6;B2B6;1102 1174 11B1;B2B6;1102 1174 11B1; # (늶; 늶; 늶; 늶; 늶; ) HANGUL SYLLABLE NYILM
+B2B7;B2B7;1102 1174 11B2;B2B7;1102 1174 11B2; # (늷; 늷; 늷; 늷; 늷; ) HANGUL SYLLABLE NYILB
+B2B8;B2B8;1102 1174 11B3;B2B8;1102 1174 11B3; # (늸; 늸; 늸; 늸; 늸; ) HANGUL SYLLABLE NYILS
+B2B9;B2B9;1102 1174 11B4;B2B9;1102 1174 11B4; # (늹; 늹; 늹; 늹; 늹; ) HANGUL SYLLABLE NYILT
+B2BA;B2BA;1102 1174 11B5;B2BA;1102 1174 11B5; # (늺; 늺; 늺; 늺; 늺; ) HANGUL SYLLABLE NYILP
+B2BB;B2BB;1102 1174 11B6;B2BB;1102 1174 11B6; # (늻; 늻; 늻; 늻; 늻; ) HANGUL SYLLABLE NYILH
+B2BC;B2BC;1102 1174 11B7;B2BC;1102 1174 11B7; # (늼; 늼; 늼; 늼; 늼; ) HANGUL SYLLABLE NYIM
+B2BD;B2BD;1102 1174 11B8;B2BD;1102 1174 11B8; # (늽; 늽; 늽; 늽; 늽; ) HANGUL SYLLABLE NYIB
+B2BE;B2BE;1102 1174 11B9;B2BE;1102 1174 11B9; # (늾; 늾; 늾; 늾; 늾; ) HANGUL SYLLABLE NYIBS
+B2BF;B2BF;1102 1174 11BA;B2BF;1102 1174 11BA; # (늿; 늿; 늿; 늿; 늿; ) HANGUL SYLLABLE NYIS
+B2C0;B2C0;1102 1174 11BB;B2C0;1102 1174 11BB; # (닀; 닀; 닀; 닀; 닀; ) HANGUL SYLLABLE NYISS
+B2C1;B2C1;1102 1174 11BC;B2C1;1102 1174 11BC; # (ë‹; ë‹; 닁; ë‹; 닁; ) HANGUL SYLLABLE NYING
+B2C2;B2C2;1102 1174 11BD;B2C2;1102 1174 11BD; # (닂; 닂; 닂; 닂; 닂; ) HANGUL SYLLABLE NYIJ
+B2C3;B2C3;1102 1174 11BE;B2C3;1102 1174 11BE; # (닃; 닃; 닃; 닃; 닃; ) HANGUL SYLLABLE NYIC
+B2C4;B2C4;1102 1174 11BF;B2C4;1102 1174 11BF; # (닄; 닄; 닄; 닄; 닄; ) HANGUL SYLLABLE NYIK
+B2C5;B2C5;1102 1174 11C0;B2C5;1102 1174 11C0; # (닅; 닅; 닅; 닅; 닅; ) HANGUL SYLLABLE NYIT
+B2C6;B2C6;1102 1174 11C1;B2C6;1102 1174 11C1; # (닆; 닆; á„‚á…´á‡; 닆; á„‚á…´á‡; ) HANGUL SYLLABLE NYIP
+B2C7;B2C7;1102 1174 11C2;B2C7;1102 1174 11C2; # (닇; 닇; 닇; 닇; 닇; ) HANGUL SYLLABLE NYIH
+B2C8;B2C8;1102 1175;B2C8;1102 1175; # (니; 니; 니; 니; 니; ) HANGUL SYLLABLE NI
+B2C9;B2C9;1102 1175 11A8;B2C9;1102 1175 11A8; # (닉; 닉; 닉; 닉; 닉; ) HANGUL SYLLABLE NIG
+B2CA;B2CA;1102 1175 11A9;B2CA;1102 1175 11A9; # (닊; 닊; 닊; 닊; 닊; ) HANGUL SYLLABLE NIGG
+B2CB;B2CB;1102 1175 11AA;B2CB;1102 1175 11AA; # (닋; 닋; 닋; 닋; 닋; ) HANGUL SYLLABLE NIGS
+B2CC;B2CC;1102 1175 11AB;B2CC;1102 1175 11AB; # (닌; 닌; 닌; 닌; 닌; ) HANGUL SYLLABLE NIN
+B2CD;B2CD;1102 1175 11AC;B2CD;1102 1175 11AC; # (ë‹; ë‹; 닍; ë‹; 닍; ) HANGUL SYLLABLE NINJ
+B2CE;B2CE;1102 1175 11AD;B2CE;1102 1175 11AD; # (닎; 닎; 닎; 닎; 닎; ) HANGUL SYLLABLE NINH
+B2CF;B2CF;1102 1175 11AE;B2CF;1102 1175 11AE; # (ë‹; ë‹; 닏; ë‹; 닏; ) HANGUL SYLLABLE NID
+B2D0;B2D0;1102 1175 11AF;B2D0;1102 1175 11AF; # (ë‹; ë‹; 닐; ë‹; 닐; ) HANGUL SYLLABLE NIL
+B2D1;B2D1;1102 1175 11B0;B2D1;1102 1175 11B0; # (닑; 닑; 닑; 닑; 닑; ) HANGUL SYLLABLE NILG
+B2D2;B2D2;1102 1175 11B1;B2D2;1102 1175 11B1; # (닒; 닒; 닒; 닒; 닒; ) HANGUL SYLLABLE NILM
+B2D3;B2D3;1102 1175 11B2;B2D3;1102 1175 11B2; # (닓; 닓; 닓; 닓; 닓; ) HANGUL SYLLABLE NILB
+B2D4;B2D4;1102 1175 11B3;B2D4;1102 1175 11B3; # (닔; 닔; 닔; 닔; 닔; ) HANGUL SYLLABLE NILS
+B2D5;B2D5;1102 1175 11B4;B2D5;1102 1175 11B4; # (닕; 닕; 닕; 닕; 닕; ) HANGUL SYLLABLE NILT
+B2D6;B2D6;1102 1175 11B5;B2D6;1102 1175 11B5; # (닖; 닖; 닖; 닖; 닖; ) HANGUL SYLLABLE NILP
+B2D7;B2D7;1102 1175 11B6;B2D7;1102 1175 11B6; # (닗; 닗; 닗; 닗; 닗; ) HANGUL SYLLABLE NILH
+B2D8;B2D8;1102 1175 11B7;B2D8;1102 1175 11B7; # (님; 님; 님; 님; 님; ) HANGUL SYLLABLE NIM
+B2D9;B2D9;1102 1175 11B8;B2D9;1102 1175 11B8; # (닙; 닙; 닙; 닙; 닙; ) HANGUL SYLLABLE NIB
+B2DA;B2DA;1102 1175 11B9;B2DA;1102 1175 11B9; # (닚; 닚; 닚; 닚; 닚; ) HANGUL SYLLABLE NIBS
+B2DB;B2DB;1102 1175 11BA;B2DB;1102 1175 11BA; # (닛; 닛; 닛; 닛; 닛; ) HANGUL SYLLABLE NIS
+B2DC;B2DC;1102 1175 11BB;B2DC;1102 1175 11BB; # (닜; 닜; 닜; 닜; 닜; ) HANGUL SYLLABLE NISS
+B2DD;B2DD;1102 1175 11BC;B2DD;1102 1175 11BC; # (ë‹; ë‹; 닝; ë‹; 닝; ) HANGUL SYLLABLE NING
+B2DE;B2DE;1102 1175 11BD;B2DE;1102 1175 11BD; # (닞; 닞; 닞; 닞; 닞; ) HANGUL SYLLABLE NIJ
+B2DF;B2DF;1102 1175 11BE;B2DF;1102 1175 11BE; # (닟; 닟; 닟; 닟; 닟; ) HANGUL SYLLABLE NIC
+B2E0;B2E0;1102 1175 11BF;B2E0;1102 1175 11BF; # (닠; 닠; 닠; 닠; 닠; ) HANGUL SYLLABLE NIK
+B2E1;B2E1;1102 1175 11C0;B2E1;1102 1175 11C0; # (닡; 닡; 닡; 닡; 닡; ) HANGUL SYLLABLE NIT
+B2E2;B2E2;1102 1175 11C1;B2E2;1102 1175 11C1; # (ë‹¢; ë‹¢; á„‚á…µá‡; ë‹¢; á„‚á…µá‡; ) HANGUL SYLLABLE NIP
+B2E3;B2E3;1102 1175 11C2;B2E3;1102 1175 11C2; # (닣; 닣; 닣; 닣; 닣; ) HANGUL SYLLABLE NIH
+B2E4;B2E4;1103 1161;B2E4;1103 1161; # (다; 다; 다; 다; 다; ) HANGUL SYLLABLE DA
+B2E5;B2E5;1103 1161 11A8;B2E5;1103 1161 11A8; # (닥; 닥; 닥; 닥; 닥; ) HANGUL SYLLABLE DAG
+B2E6;B2E6;1103 1161 11A9;B2E6;1103 1161 11A9; # (닦; 닦; 닦; 닦; 닦; ) HANGUL SYLLABLE DAGG
+B2E7;B2E7;1103 1161 11AA;B2E7;1103 1161 11AA; # (닧; 닧; 닧; 닧; 닧; ) HANGUL SYLLABLE DAGS
+B2E8;B2E8;1103 1161 11AB;B2E8;1103 1161 11AB; # (단; 단; 단; 단; 단; ) HANGUL SYLLABLE DAN
+B2E9;B2E9;1103 1161 11AC;B2E9;1103 1161 11AC; # (닩; 닩; 닩; 닩; 닩; ) HANGUL SYLLABLE DANJ
+B2EA;B2EA;1103 1161 11AD;B2EA;1103 1161 11AD; # (닪; 닪; 닪; 닪; 닪; ) HANGUL SYLLABLE DANH
+B2EB;B2EB;1103 1161 11AE;B2EB;1103 1161 11AE; # (닫; 닫; 닫; 닫; 닫; ) HANGUL SYLLABLE DAD
+B2EC;B2EC;1103 1161 11AF;B2EC;1103 1161 11AF; # (달; 달; 달; 달; 달; ) HANGUL SYLLABLE DAL
+B2ED;B2ED;1103 1161 11B0;B2ED;1103 1161 11B0; # (닭; 닭; 닭; 닭; 닭; ) HANGUL SYLLABLE DALG
+B2EE;B2EE;1103 1161 11B1;B2EE;1103 1161 11B1; # (닮; 닮; 닮; 닮; 닮; ) HANGUL SYLLABLE DALM
+B2EF;B2EF;1103 1161 11B2;B2EF;1103 1161 11B2; # (닯; 닯; 닯; 닯; 닯; ) HANGUL SYLLABLE DALB
+B2F0;B2F0;1103 1161 11B3;B2F0;1103 1161 11B3; # (닰; 닰; 닰; 닰; 닰; ) HANGUL SYLLABLE DALS
+B2F1;B2F1;1103 1161 11B4;B2F1;1103 1161 11B4; # (닱; 닱; 닱; 닱; 닱; ) HANGUL SYLLABLE DALT
+B2F2;B2F2;1103 1161 11B5;B2F2;1103 1161 11B5; # (닲; 닲; 닲; 닲; 닲; ) HANGUL SYLLABLE DALP
+B2F3;B2F3;1103 1161 11B6;B2F3;1103 1161 11B6; # (닳; 닳; 닳; 닳; 닳; ) HANGUL SYLLABLE DALH
+B2F4;B2F4;1103 1161 11B7;B2F4;1103 1161 11B7; # (담; 담; 담; 담; 담; ) HANGUL SYLLABLE DAM
+B2F5;B2F5;1103 1161 11B8;B2F5;1103 1161 11B8; # (답; 답; 답; 답; 답; ) HANGUL SYLLABLE DAB
+B2F6;B2F6;1103 1161 11B9;B2F6;1103 1161 11B9; # (닶; 닶; 닶; 닶; 닶; ) HANGUL SYLLABLE DABS
+B2F7;B2F7;1103 1161 11BA;B2F7;1103 1161 11BA; # (닷; 닷; 닷; 닷; 닷; ) HANGUL SYLLABLE DAS
+B2F8;B2F8;1103 1161 11BB;B2F8;1103 1161 11BB; # (닸; 닸; 닸; 닸; 닸; ) HANGUL SYLLABLE DASS
+B2F9;B2F9;1103 1161 11BC;B2F9;1103 1161 11BC; # (당; 당; 당; 당; 당; ) HANGUL SYLLABLE DANG
+B2FA;B2FA;1103 1161 11BD;B2FA;1103 1161 11BD; # (닺; 닺; 닺; 닺; 닺; ) HANGUL SYLLABLE DAJ
+B2FB;B2FB;1103 1161 11BE;B2FB;1103 1161 11BE; # (닻; 닻; 닻; 닻; 닻; ) HANGUL SYLLABLE DAC
+B2FC;B2FC;1103 1161 11BF;B2FC;1103 1161 11BF; # (닼; 닼; 닼; 닼; 닼; ) HANGUL SYLLABLE DAK
+B2FD;B2FD;1103 1161 11C0;B2FD;1103 1161 11C0; # (닽; 닽; 닽; 닽; 닽; ) HANGUL SYLLABLE DAT
+B2FE;B2FE;1103 1161 11C1;B2FE;1103 1161 11C1; # (닾; 닾; 다á‡; 닾; 다á‡; ) HANGUL SYLLABLE DAP
+B2FF;B2FF;1103 1161 11C2;B2FF;1103 1161 11C2; # (닿; 닿; 닿; 닿; 닿; ) HANGUL SYLLABLE DAH
+B300;B300;1103 1162;B300;1103 1162; # (대; 대; 대; 대; 대; ) HANGUL SYLLABLE DAE
+B301;B301;1103 1162 11A8;B301;1103 1162 11A8; # (ëŒ; ëŒ; 댁; ëŒ; 댁; ) HANGUL SYLLABLE DAEG
+B302;B302;1103 1162 11A9;B302;1103 1162 11A9; # (댂; 댂; 댂; 댂; 댂; ) HANGUL SYLLABLE DAEGG
+B303;B303;1103 1162 11AA;B303;1103 1162 11AA; # (댃; 댃; 댃; 댃; 댃; ) HANGUL SYLLABLE DAEGS
+B304;B304;1103 1162 11AB;B304;1103 1162 11AB; # (댄; 댄; 댄; 댄; 댄; ) HANGUL SYLLABLE DAEN
+B305;B305;1103 1162 11AC;B305;1103 1162 11AC; # (댅; 댅; 댅; 댅; 댅; ) HANGUL SYLLABLE DAENJ
+B306;B306;1103 1162 11AD;B306;1103 1162 11AD; # (댆; 댆; 댆; 댆; 댆; ) HANGUL SYLLABLE DAENH
+B307;B307;1103 1162 11AE;B307;1103 1162 11AE; # (댇; 댇; 댇; 댇; 댇; ) HANGUL SYLLABLE DAED
+B308;B308;1103 1162 11AF;B308;1103 1162 11AF; # (댈; 댈; 댈; 댈; 댈; ) HANGUL SYLLABLE DAEL
+B309;B309;1103 1162 11B0;B309;1103 1162 11B0; # (댉; 댉; 댉; 댉; 댉; ) HANGUL SYLLABLE DAELG
+B30A;B30A;1103 1162 11B1;B30A;1103 1162 11B1; # (댊; 댊; 댊; 댊; 댊; ) HANGUL SYLLABLE DAELM
+B30B;B30B;1103 1162 11B2;B30B;1103 1162 11B2; # (댋; 댋; 댋; 댋; 댋; ) HANGUL SYLLABLE DAELB
+B30C;B30C;1103 1162 11B3;B30C;1103 1162 11B3; # (댌; 댌; 댌; 댌; 댌; ) HANGUL SYLLABLE DAELS
+B30D;B30D;1103 1162 11B4;B30D;1103 1162 11B4; # (ëŒ; ëŒ; 댍; ëŒ; 댍; ) HANGUL SYLLABLE DAELT
+B30E;B30E;1103 1162 11B5;B30E;1103 1162 11B5; # (댎; 댎; 댎; 댎; 댎; ) HANGUL SYLLABLE DAELP
+B30F;B30F;1103 1162 11B6;B30F;1103 1162 11B6; # (ëŒ; ëŒ; 댏; ëŒ; 댏; ) HANGUL SYLLABLE DAELH
+B310;B310;1103 1162 11B7;B310;1103 1162 11B7; # (ëŒ; ëŒ; 댐; ëŒ; 댐; ) HANGUL SYLLABLE DAEM
+B311;B311;1103 1162 11B8;B311;1103 1162 11B8; # (댑; 댑; 댑; 댑; 댑; ) HANGUL SYLLABLE DAEB
+B312;B312;1103 1162 11B9;B312;1103 1162 11B9; # (댒; 댒; 댒; 댒; 댒; ) HANGUL SYLLABLE DAEBS
+B313;B313;1103 1162 11BA;B313;1103 1162 11BA; # (댓; 댓; 댓; 댓; 댓; ) HANGUL SYLLABLE DAES
+B314;B314;1103 1162 11BB;B314;1103 1162 11BB; # (댔; 댔; 댔; 댔; 댔; ) HANGUL SYLLABLE DAESS
+B315;B315;1103 1162 11BC;B315;1103 1162 11BC; # (댕; 댕; 댕; 댕; 댕; ) HANGUL SYLLABLE DAENG
+B316;B316;1103 1162 11BD;B316;1103 1162 11BD; # (댖; 댖; 댖; 댖; 댖; ) HANGUL SYLLABLE DAEJ
+B317;B317;1103 1162 11BE;B317;1103 1162 11BE; # (댗; 댗; 댗; 댗; 댗; ) HANGUL SYLLABLE DAEC
+B318;B318;1103 1162 11BF;B318;1103 1162 11BF; # (댘; 댘; 댘; 댘; 댘; ) HANGUL SYLLABLE DAEK
+B319;B319;1103 1162 11C0;B319;1103 1162 11C0; # (댙; 댙; 댙; 댙; 댙; ) HANGUL SYLLABLE DAET
+B31A;B31A;1103 1162 11C1;B31A;1103 1162 11C1; # (댚; 댚; 대á‡; 댚; 대á‡; ) HANGUL SYLLABLE DAEP
+B31B;B31B;1103 1162 11C2;B31B;1103 1162 11C2; # (댛; 댛; 댛; 댛; 댛; ) HANGUL SYLLABLE DAEH
+B31C;B31C;1103 1163;B31C;1103 1163; # (댜; 댜; 댜; 댜; 댜; ) HANGUL SYLLABLE DYA
+B31D;B31D;1103 1163 11A8;B31D;1103 1163 11A8; # (ëŒ; ëŒ; 댝; ëŒ; 댝; ) HANGUL SYLLABLE DYAG
+B31E;B31E;1103 1163 11A9;B31E;1103 1163 11A9; # (댞; 댞; 댞; 댞; 댞; ) HANGUL SYLLABLE DYAGG
+B31F;B31F;1103 1163 11AA;B31F;1103 1163 11AA; # (댟; 댟; 댟; 댟; 댟; ) HANGUL SYLLABLE DYAGS
+B320;B320;1103 1163 11AB;B320;1103 1163 11AB; # (댠; 댠; 댠; 댠; 댠; ) HANGUL SYLLABLE DYAN
+B321;B321;1103 1163 11AC;B321;1103 1163 11AC; # (댡; 댡; 댡; 댡; 댡; ) HANGUL SYLLABLE DYANJ
+B322;B322;1103 1163 11AD;B322;1103 1163 11AD; # (댢; 댢; 댢; 댢; 댢; ) HANGUL SYLLABLE DYANH
+B323;B323;1103 1163 11AE;B323;1103 1163 11AE; # (댣; 댣; 댣; 댣; 댣; ) HANGUL SYLLABLE DYAD
+B324;B324;1103 1163 11AF;B324;1103 1163 11AF; # (댤; 댤; 댤; 댤; 댤; ) HANGUL SYLLABLE DYAL
+B325;B325;1103 1163 11B0;B325;1103 1163 11B0; # (댥; 댥; 댥; 댥; 댥; ) HANGUL SYLLABLE DYALG
+B326;B326;1103 1163 11B1;B326;1103 1163 11B1; # (댦; 댦; 댦; 댦; 댦; ) HANGUL SYLLABLE DYALM
+B327;B327;1103 1163 11B2;B327;1103 1163 11B2; # (댧; 댧; 댧; 댧; 댧; ) HANGUL SYLLABLE DYALB
+B328;B328;1103 1163 11B3;B328;1103 1163 11B3; # (댨; 댨; 댨; 댨; 댨; ) HANGUL SYLLABLE DYALS
+B329;B329;1103 1163 11B4;B329;1103 1163 11B4; # (댩; 댩; 댩; 댩; 댩; ) HANGUL SYLLABLE DYALT
+B32A;B32A;1103 1163 11B5;B32A;1103 1163 11B5; # (댪; 댪; 댪; 댪; 댪; ) HANGUL SYLLABLE DYALP
+B32B;B32B;1103 1163 11B6;B32B;1103 1163 11B6; # (댫; 댫; 댫; 댫; 댫; ) HANGUL SYLLABLE DYALH
+B32C;B32C;1103 1163 11B7;B32C;1103 1163 11B7; # (댬; 댬; 댬; 댬; 댬; ) HANGUL SYLLABLE DYAM
+B32D;B32D;1103 1163 11B8;B32D;1103 1163 11B8; # (댭; 댭; 댭; 댭; 댭; ) HANGUL SYLLABLE DYAB
+B32E;B32E;1103 1163 11B9;B32E;1103 1163 11B9; # (댮; 댮; 댮; 댮; 댮; ) HANGUL SYLLABLE DYABS
+B32F;B32F;1103 1163 11BA;B32F;1103 1163 11BA; # (댯; 댯; 댯; 댯; 댯; ) HANGUL SYLLABLE DYAS
+B330;B330;1103 1163 11BB;B330;1103 1163 11BB; # (댰; 댰; 댰; 댰; 댰; ) HANGUL SYLLABLE DYASS
+B331;B331;1103 1163 11BC;B331;1103 1163 11BC; # (댱; 댱; 댱; 댱; 댱; ) HANGUL SYLLABLE DYANG
+B332;B332;1103 1163 11BD;B332;1103 1163 11BD; # (댲; 댲; 댲; 댲; 댲; ) HANGUL SYLLABLE DYAJ
+B333;B333;1103 1163 11BE;B333;1103 1163 11BE; # (댳; 댳; 댳; 댳; 댳; ) HANGUL SYLLABLE DYAC
+B334;B334;1103 1163 11BF;B334;1103 1163 11BF; # (댴; 댴; 댴; 댴; 댴; ) HANGUL SYLLABLE DYAK
+B335;B335;1103 1163 11C0;B335;1103 1163 11C0; # (댵; 댵; 댵; 댵; 댵; ) HANGUL SYLLABLE DYAT
+B336;B336;1103 1163 11C1;B336;1103 1163 11C1; # (댶; 댶; 댜á‡; 댶; 댜á‡; ) HANGUL SYLLABLE DYAP
+B337;B337;1103 1163 11C2;B337;1103 1163 11C2; # (댷; 댷; 댷; 댷; 댷; ) HANGUL SYLLABLE DYAH
+B338;B338;1103 1164;B338;1103 1164; # (댸; 댸; 댸; 댸; 댸; ) HANGUL SYLLABLE DYAE
+B339;B339;1103 1164 11A8;B339;1103 1164 11A8; # (댹; 댹; 댹; 댹; 댹; ) HANGUL SYLLABLE DYAEG
+B33A;B33A;1103 1164 11A9;B33A;1103 1164 11A9; # (댺; 댺; 댺; 댺; 댺; ) HANGUL SYLLABLE DYAEGG
+B33B;B33B;1103 1164 11AA;B33B;1103 1164 11AA; # (댻; 댻; 댻; 댻; 댻; ) HANGUL SYLLABLE DYAEGS
+B33C;B33C;1103 1164 11AB;B33C;1103 1164 11AB; # (댼; 댼; 댼; 댼; 댼; ) HANGUL SYLLABLE DYAEN
+B33D;B33D;1103 1164 11AC;B33D;1103 1164 11AC; # (댽; 댽; 댽; 댽; 댽; ) HANGUL SYLLABLE DYAENJ
+B33E;B33E;1103 1164 11AD;B33E;1103 1164 11AD; # (댾; 댾; 댾; 댾; 댾; ) HANGUL SYLLABLE DYAENH
+B33F;B33F;1103 1164 11AE;B33F;1103 1164 11AE; # (댿; 댿; 댿; 댿; 댿; ) HANGUL SYLLABLE DYAED
+B340;B340;1103 1164 11AF;B340;1103 1164 11AF; # (ë€; ë€; 덀; ë€; 덀; ) HANGUL SYLLABLE DYAEL
+B341;B341;1103 1164 11B0;B341;1103 1164 11B0; # (ë; ë; 덁; ë; 덁; ) HANGUL SYLLABLE DYAELG
+B342;B342;1103 1164 11B1;B342;1103 1164 11B1; # (ë‚; ë‚; 덂; ë‚; 덂; ) HANGUL SYLLABLE DYAELM
+B343;B343;1103 1164 11B2;B343;1103 1164 11B2; # (ëƒ; ëƒ; 덃; ëƒ; 덃; ) HANGUL SYLLABLE DYAELB
+B344;B344;1103 1164 11B3;B344;1103 1164 11B3; # (ë„; ë„; 덄; ë„; 덄; ) HANGUL SYLLABLE DYAELS
+B345;B345;1103 1164 11B4;B345;1103 1164 11B4; # (ë…; ë…; 덅; ë…; 덅; ) HANGUL SYLLABLE DYAELT
+B346;B346;1103 1164 11B5;B346;1103 1164 11B5; # (ë†; ë†; 덆; ë†; 덆; ) HANGUL SYLLABLE DYAELP
+B347;B347;1103 1164 11B6;B347;1103 1164 11B6; # (ë‡; ë‡; 덇; ë‡; 덇; ) HANGUL SYLLABLE DYAELH
+B348;B348;1103 1164 11B7;B348;1103 1164 11B7; # (ëˆ; ëˆ; 덈; ëˆ; 덈; ) HANGUL SYLLABLE DYAEM
+B349;B349;1103 1164 11B8;B349;1103 1164 11B8; # (ë‰; ë‰; 덉; ë‰; 덉; ) HANGUL SYLLABLE DYAEB
+B34A;B34A;1103 1164 11B9;B34A;1103 1164 11B9; # (ëŠ; ëŠ; 덊; ëŠ; 덊; ) HANGUL SYLLABLE DYAEBS
+B34B;B34B;1103 1164 11BA;B34B;1103 1164 11BA; # (ë‹; ë‹; 덋; ë‹; 덋; ) HANGUL SYLLABLE DYAES
+B34C;B34C;1103 1164 11BB;B34C;1103 1164 11BB; # (ëŒ; ëŒ; 덌; ëŒ; 덌; ) HANGUL SYLLABLE DYAESS
+B34D;B34D;1103 1164 11BC;B34D;1103 1164 11BC; # (ë; ë; 덍; ë; 덍; ) HANGUL SYLLABLE DYAENG
+B34E;B34E;1103 1164 11BD;B34E;1103 1164 11BD; # (ëŽ; ëŽ; 덎; ëŽ; 덎; ) HANGUL SYLLABLE DYAEJ
+B34F;B34F;1103 1164 11BE;B34F;1103 1164 11BE; # (ë; ë; 덏; ë; 덏; ) HANGUL SYLLABLE DYAEC
+B350;B350;1103 1164 11BF;B350;1103 1164 11BF; # (ë; ë; 덐; ë; 덐; ) HANGUL SYLLABLE DYAEK
+B351;B351;1103 1164 11C0;B351;1103 1164 11C0; # (ë‘; ë‘; 덑; ë‘; 덑; ) HANGUL SYLLABLE DYAET
+B352;B352;1103 1164 11C1;B352;1103 1164 11C1; # (ë’; ë’; 댸á‡; ë’; 댸á‡; ) HANGUL SYLLABLE DYAEP
+B353;B353;1103 1164 11C2;B353;1103 1164 11C2; # (ë“; ë“; 덓; ë“; 덓; ) HANGUL SYLLABLE DYAEH
+B354;B354;1103 1165;B354;1103 1165; # (ë”; ë”; 더; ë”; 더; ) HANGUL SYLLABLE DEO
+B355;B355;1103 1165 11A8;B355;1103 1165 11A8; # (ë•; ë•; 덕; ë•; 덕; ) HANGUL SYLLABLE DEOG
+B356;B356;1103 1165 11A9;B356;1103 1165 11A9; # (ë–; ë–; 덖; ë–; 덖; ) HANGUL SYLLABLE DEOGG
+B357;B357;1103 1165 11AA;B357;1103 1165 11AA; # (ë—; ë—; 덗; ë—; 덗; ) HANGUL SYLLABLE DEOGS
+B358;B358;1103 1165 11AB;B358;1103 1165 11AB; # (ë˜; ë˜; 던; ë˜; 던; ) HANGUL SYLLABLE DEON
+B359;B359;1103 1165 11AC;B359;1103 1165 11AC; # (ë™; ë™; 덙; ë™; 덙; ) HANGUL SYLLABLE DEONJ
+B35A;B35A;1103 1165 11AD;B35A;1103 1165 11AD; # (ëš; ëš; 덚; ëš; 덚; ) HANGUL SYLLABLE DEONH
+B35B;B35B;1103 1165 11AE;B35B;1103 1165 11AE; # (ë›; ë›; 덛; ë›; 덛; ) HANGUL SYLLABLE DEOD
+B35C;B35C;1103 1165 11AF;B35C;1103 1165 11AF; # (ëœ; ëœ; 덜; ëœ; 덜; ) HANGUL SYLLABLE DEOL
+B35D;B35D;1103 1165 11B0;B35D;1103 1165 11B0; # (ë; ë; 덝; ë; 덝; ) HANGUL SYLLABLE DEOLG
+B35E;B35E;1103 1165 11B1;B35E;1103 1165 11B1; # (ëž; ëž; 덞; ëž; 덞; ) HANGUL SYLLABLE DEOLM
+B35F;B35F;1103 1165 11B2;B35F;1103 1165 11B2; # (ëŸ; ëŸ; 덟; ëŸ; 덟; ) HANGUL SYLLABLE DEOLB
+B360;B360;1103 1165 11B3;B360;1103 1165 11B3; # (ë ; ë ; 덠; ë ; 덠; ) HANGUL SYLLABLE DEOLS
+B361;B361;1103 1165 11B4;B361;1103 1165 11B4; # (ë¡; ë¡; 덡; ë¡; 덡; ) HANGUL SYLLABLE DEOLT
+B362;B362;1103 1165 11B5;B362;1103 1165 11B5; # (ë¢; ë¢; 덢; ë¢; 덢; ) HANGUL SYLLABLE DEOLP
+B363;B363;1103 1165 11B6;B363;1103 1165 11B6; # (ë£; ë£; 덣; ë£; 덣; ) HANGUL SYLLABLE DEOLH
+B364;B364;1103 1165 11B7;B364;1103 1165 11B7; # (ë¤; ë¤; 덤; ë¤; 덤; ) HANGUL SYLLABLE DEOM
+B365;B365;1103 1165 11B8;B365;1103 1165 11B8; # (ë¥; ë¥; 덥; ë¥; 덥; ) HANGUL SYLLABLE DEOB
+B366;B366;1103 1165 11B9;B366;1103 1165 11B9; # (ë¦; ë¦; 덦; ë¦; 덦; ) HANGUL SYLLABLE DEOBS
+B367;B367;1103 1165 11BA;B367;1103 1165 11BA; # (ë§; ë§; 덧; ë§; 덧; ) HANGUL SYLLABLE DEOS
+B368;B368;1103 1165 11BB;B368;1103 1165 11BB; # (ë¨; ë¨; 덨; ë¨; 덨; ) HANGUL SYLLABLE DEOSS
+B369;B369;1103 1165 11BC;B369;1103 1165 11BC; # (ë©; ë©; 덩; ë©; 덩; ) HANGUL SYLLABLE DEONG
+B36A;B36A;1103 1165 11BD;B36A;1103 1165 11BD; # (ëª; ëª; 덪; ëª; 덪; ) HANGUL SYLLABLE DEOJ
+B36B;B36B;1103 1165 11BE;B36B;1103 1165 11BE; # (ë«; ë«; 덫; ë«; 덫; ) HANGUL SYLLABLE DEOC
+B36C;B36C;1103 1165 11BF;B36C;1103 1165 11BF; # (ë¬; ë¬; 덬; ë¬; 덬; ) HANGUL SYLLABLE DEOK
+B36D;B36D;1103 1165 11C0;B36D;1103 1165 11C0; # (ë­; ë­; 덭; ë­; 덭; ) HANGUL SYLLABLE DEOT
+B36E;B36E;1103 1165 11C1;B36E;1103 1165 11C1; # (ë®; ë®; 더á‡; ë®; 더á‡; ) HANGUL SYLLABLE DEOP
+B36F;B36F;1103 1165 11C2;B36F;1103 1165 11C2; # (ë¯; ë¯; 덯; ë¯; 덯; ) HANGUL SYLLABLE DEOH
+B370;B370;1103 1166;B370;1103 1166; # (ë°; ë°; 데; ë°; 데; ) HANGUL SYLLABLE DE
+B371;B371;1103 1166 11A8;B371;1103 1166 11A8; # (ë±; ë±; 덱; ë±; 덱; ) HANGUL SYLLABLE DEG
+B372;B372;1103 1166 11A9;B372;1103 1166 11A9; # (ë²; ë²; 덲; ë²; 덲; ) HANGUL SYLLABLE DEGG
+B373;B373;1103 1166 11AA;B373;1103 1166 11AA; # (ë³; ë³; 덳; ë³; 덳; ) HANGUL SYLLABLE DEGS
+B374;B374;1103 1166 11AB;B374;1103 1166 11AB; # (ë´; ë´; 덴; ë´; 덴; ) HANGUL SYLLABLE DEN
+B375;B375;1103 1166 11AC;B375;1103 1166 11AC; # (ëµ; ëµ; 덵; ëµ; 덵; ) HANGUL SYLLABLE DENJ
+B376;B376;1103 1166 11AD;B376;1103 1166 11AD; # (ë¶; ë¶; 덶; ë¶; 덶; ) HANGUL SYLLABLE DENH
+B377;B377;1103 1166 11AE;B377;1103 1166 11AE; # (ë·; ë·; 덷; ë·; 덷; ) HANGUL SYLLABLE DED
+B378;B378;1103 1166 11AF;B378;1103 1166 11AF; # (ë¸; ë¸; 델; ë¸; 델; ) HANGUL SYLLABLE DEL
+B379;B379;1103 1166 11B0;B379;1103 1166 11B0; # (ë¹; ë¹; 덹; ë¹; 덹; ) HANGUL SYLLABLE DELG
+B37A;B37A;1103 1166 11B1;B37A;1103 1166 11B1; # (ëº; ëº; 덺; ëº; 덺; ) HANGUL SYLLABLE DELM
+B37B;B37B;1103 1166 11B2;B37B;1103 1166 11B2; # (ë»; ë»; 덻; ë»; 덻; ) HANGUL SYLLABLE DELB
+B37C;B37C;1103 1166 11B3;B37C;1103 1166 11B3; # (ë¼; ë¼; 덼; ë¼; 덼; ) HANGUL SYLLABLE DELS
+B37D;B37D;1103 1166 11B4;B37D;1103 1166 11B4; # (ë½; ë½; 덽; ë½; 덽; ) HANGUL SYLLABLE DELT
+B37E;B37E;1103 1166 11B5;B37E;1103 1166 11B5; # (ë¾; ë¾; 덾; ë¾; 덾; ) HANGUL SYLLABLE DELP
+B37F;B37F;1103 1166 11B6;B37F;1103 1166 11B6; # (ë¿; ë¿; 덿; ë¿; 덿; ) HANGUL SYLLABLE DELH
+B380;B380;1103 1166 11B7;B380;1103 1166 11B7; # (뎀; 뎀; 뎀; 뎀; 뎀; ) HANGUL SYLLABLE DEM
+B381;B381;1103 1166 11B8;B381;1103 1166 11B8; # (ëŽ; ëŽ; 뎁; ëŽ; 뎁; ) HANGUL SYLLABLE DEB
+B382;B382;1103 1166 11B9;B382;1103 1166 11B9; # (뎂; 뎂; 뎂; 뎂; 뎂; ) HANGUL SYLLABLE DEBS
+B383;B383;1103 1166 11BA;B383;1103 1166 11BA; # (뎃; 뎃; 뎃; 뎃; 뎃; ) HANGUL SYLLABLE DES
+B384;B384;1103 1166 11BB;B384;1103 1166 11BB; # (뎄; 뎄; 뎄; 뎄; 뎄; ) HANGUL SYLLABLE DESS
+B385;B385;1103 1166 11BC;B385;1103 1166 11BC; # (뎅; 뎅; 뎅; 뎅; 뎅; ) HANGUL SYLLABLE DENG
+B386;B386;1103 1166 11BD;B386;1103 1166 11BD; # (뎆; 뎆; 뎆; 뎆; 뎆; ) HANGUL SYLLABLE DEJ
+B387;B387;1103 1166 11BE;B387;1103 1166 11BE; # (뎇; 뎇; 뎇; 뎇; 뎇; ) HANGUL SYLLABLE DEC
+B388;B388;1103 1166 11BF;B388;1103 1166 11BF; # (뎈; 뎈; 뎈; 뎈; 뎈; ) HANGUL SYLLABLE DEK
+B389;B389;1103 1166 11C0;B389;1103 1166 11C0; # (뎉; 뎉; 뎉; 뎉; 뎉; ) HANGUL SYLLABLE DET
+B38A;B38A;1103 1166 11C1;B38A;1103 1166 11C1; # (뎊; 뎊; 데á‡; 뎊; 데á‡; ) HANGUL SYLLABLE DEP
+B38B;B38B;1103 1166 11C2;B38B;1103 1166 11C2; # (뎋; 뎋; 뎋; 뎋; 뎋; ) HANGUL SYLLABLE DEH
+B38C;B38C;1103 1167;B38C;1103 1167; # (뎌; 뎌; 뎌; 뎌; 뎌; ) HANGUL SYLLABLE DYEO
+B38D;B38D;1103 1167 11A8;B38D;1103 1167 11A8; # (ëŽ; ëŽ; 뎍; ëŽ; 뎍; ) HANGUL SYLLABLE DYEOG
+B38E;B38E;1103 1167 11A9;B38E;1103 1167 11A9; # (뎎; 뎎; 뎎; 뎎; 뎎; ) HANGUL SYLLABLE DYEOGG
+B38F;B38F;1103 1167 11AA;B38F;1103 1167 11AA; # (ëŽ; ëŽ; 뎏; ëŽ; 뎏; ) HANGUL SYLLABLE DYEOGS
+B390;B390;1103 1167 11AB;B390;1103 1167 11AB; # (ëŽ; ëŽ; 뎐; ëŽ; 뎐; ) HANGUL SYLLABLE DYEON
+B391;B391;1103 1167 11AC;B391;1103 1167 11AC; # (뎑; 뎑; 뎑; 뎑; 뎑; ) HANGUL SYLLABLE DYEONJ
+B392;B392;1103 1167 11AD;B392;1103 1167 11AD; # (뎒; 뎒; 뎒; 뎒; 뎒; ) HANGUL SYLLABLE DYEONH
+B393;B393;1103 1167 11AE;B393;1103 1167 11AE; # (뎓; 뎓; 뎓; 뎓; 뎓; ) HANGUL SYLLABLE DYEOD
+B394;B394;1103 1167 11AF;B394;1103 1167 11AF; # (뎔; 뎔; 뎔; 뎔; 뎔; ) HANGUL SYLLABLE DYEOL
+B395;B395;1103 1167 11B0;B395;1103 1167 11B0; # (뎕; 뎕; 뎕; 뎕; 뎕; ) HANGUL SYLLABLE DYEOLG
+B396;B396;1103 1167 11B1;B396;1103 1167 11B1; # (뎖; 뎖; 뎖; 뎖; 뎖; ) HANGUL SYLLABLE DYEOLM
+B397;B397;1103 1167 11B2;B397;1103 1167 11B2; # (뎗; 뎗; 뎗; 뎗; 뎗; ) HANGUL SYLLABLE DYEOLB
+B398;B398;1103 1167 11B3;B398;1103 1167 11B3; # (뎘; 뎘; 뎘; 뎘; 뎘; ) HANGUL SYLLABLE DYEOLS
+B399;B399;1103 1167 11B4;B399;1103 1167 11B4; # (뎙; 뎙; 뎙; 뎙; 뎙; ) HANGUL SYLLABLE DYEOLT
+B39A;B39A;1103 1167 11B5;B39A;1103 1167 11B5; # (뎚; 뎚; 뎚; 뎚; 뎚; ) HANGUL SYLLABLE DYEOLP
+B39B;B39B;1103 1167 11B6;B39B;1103 1167 11B6; # (뎛; 뎛; 뎛; 뎛; 뎛; ) HANGUL SYLLABLE DYEOLH
+B39C;B39C;1103 1167 11B7;B39C;1103 1167 11B7; # (뎜; 뎜; 뎜; 뎜; 뎜; ) HANGUL SYLLABLE DYEOM
+B39D;B39D;1103 1167 11B8;B39D;1103 1167 11B8; # (ëŽ; ëŽ; 뎝; ëŽ; 뎝; ) HANGUL SYLLABLE DYEOB
+B39E;B39E;1103 1167 11B9;B39E;1103 1167 11B9; # (뎞; 뎞; 뎞; 뎞; 뎞; ) HANGUL SYLLABLE DYEOBS
+B39F;B39F;1103 1167 11BA;B39F;1103 1167 11BA; # (뎟; 뎟; 뎟; 뎟; 뎟; ) HANGUL SYLLABLE DYEOS
+B3A0;B3A0;1103 1167 11BB;B3A0;1103 1167 11BB; # (뎠; 뎠; 뎠; 뎠; 뎠; ) HANGUL SYLLABLE DYEOSS
+B3A1;B3A1;1103 1167 11BC;B3A1;1103 1167 11BC; # (뎡; 뎡; 뎡; 뎡; 뎡; ) HANGUL SYLLABLE DYEONG
+B3A2;B3A2;1103 1167 11BD;B3A2;1103 1167 11BD; # (뎢; 뎢; 뎢; 뎢; 뎢; ) HANGUL SYLLABLE DYEOJ
+B3A3;B3A3;1103 1167 11BE;B3A3;1103 1167 11BE; # (뎣; 뎣; 뎣; 뎣; 뎣; ) HANGUL SYLLABLE DYEOC
+B3A4;B3A4;1103 1167 11BF;B3A4;1103 1167 11BF; # (뎤; 뎤; 뎤; 뎤; 뎤; ) HANGUL SYLLABLE DYEOK
+B3A5;B3A5;1103 1167 11C0;B3A5;1103 1167 11C0; # (뎥; 뎥; 뎥; 뎥; 뎥; ) HANGUL SYLLABLE DYEOT
+B3A6;B3A6;1103 1167 11C1;B3A6;1103 1167 11C1; # (뎦; 뎦; 뎌á‡; 뎦; 뎌á‡; ) HANGUL SYLLABLE DYEOP
+B3A7;B3A7;1103 1167 11C2;B3A7;1103 1167 11C2; # (뎧; 뎧; 뎧; 뎧; 뎧; ) HANGUL SYLLABLE DYEOH
+B3A8;B3A8;1103 1168;B3A8;1103 1168; # (뎨; 뎨; 뎨; 뎨; 뎨; ) HANGUL SYLLABLE DYE
+B3A9;B3A9;1103 1168 11A8;B3A9;1103 1168 11A8; # (뎩; 뎩; 뎩; 뎩; 뎩; ) HANGUL SYLLABLE DYEG
+B3AA;B3AA;1103 1168 11A9;B3AA;1103 1168 11A9; # (뎪; 뎪; 뎪; 뎪; 뎪; ) HANGUL SYLLABLE DYEGG
+B3AB;B3AB;1103 1168 11AA;B3AB;1103 1168 11AA; # (뎫; 뎫; 뎫; 뎫; 뎫; ) HANGUL SYLLABLE DYEGS
+B3AC;B3AC;1103 1168 11AB;B3AC;1103 1168 11AB; # (뎬; 뎬; 뎬; 뎬; 뎬; ) HANGUL SYLLABLE DYEN
+B3AD;B3AD;1103 1168 11AC;B3AD;1103 1168 11AC; # (뎭; 뎭; 뎭; 뎭; 뎭; ) HANGUL SYLLABLE DYENJ
+B3AE;B3AE;1103 1168 11AD;B3AE;1103 1168 11AD; # (뎮; 뎮; 뎮; 뎮; 뎮; ) HANGUL SYLLABLE DYENH
+B3AF;B3AF;1103 1168 11AE;B3AF;1103 1168 11AE; # (뎯; 뎯; 뎯; 뎯; 뎯; ) HANGUL SYLLABLE DYED
+B3B0;B3B0;1103 1168 11AF;B3B0;1103 1168 11AF; # (뎰; 뎰; 뎰; 뎰; 뎰; ) HANGUL SYLLABLE DYEL
+B3B1;B3B1;1103 1168 11B0;B3B1;1103 1168 11B0; # (뎱; 뎱; 뎱; 뎱; 뎱; ) HANGUL SYLLABLE DYELG
+B3B2;B3B2;1103 1168 11B1;B3B2;1103 1168 11B1; # (뎲; 뎲; 뎲; 뎲; 뎲; ) HANGUL SYLLABLE DYELM
+B3B3;B3B3;1103 1168 11B2;B3B3;1103 1168 11B2; # (뎳; 뎳; 뎳; 뎳; 뎳; ) HANGUL SYLLABLE DYELB
+B3B4;B3B4;1103 1168 11B3;B3B4;1103 1168 11B3; # (뎴; 뎴; 뎴; 뎴; 뎴; ) HANGUL SYLLABLE DYELS
+B3B5;B3B5;1103 1168 11B4;B3B5;1103 1168 11B4; # (뎵; 뎵; 뎵; 뎵; 뎵; ) HANGUL SYLLABLE DYELT
+B3B6;B3B6;1103 1168 11B5;B3B6;1103 1168 11B5; # (뎶; 뎶; 뎶; 뎶; 뎶; ) HANGUL SYLLABLE DYELP
+B3B7;B3B7;1103 1168 11B6;B3B7;1103 1168 11B6; # (뎷; 뎷; 뎷; 뎷; 뎷; ) HANGUL SYLLABLE DYELH
+B3B8;B3B8;1103 1168 11B7;B3B8;1103 1168 11B7; # (뎸; 뎸; 뎸; 뎸; 뎸; ) HANGUL SYLLABLE DYEM
+B3B9;B3B9;1103 1168 11B8;B3B9;1103 1168 11B8; # (뎹; 뎹; 뎹; 뎹; 뎹; ) HANGUL SYLLABLE DYEB
+B3BA;B3BA;1103 1168 11B9;B3BA;1103 1168 11B9; # (뎺; 뎺; 뎺; 뎺; 뎺; ) HANGUL SYLLABLE DYEBS
+B3BB;B3BB;1103 1168 11BA;B3BB;1103 1168 11BA; # (뎻; 뎻; 뎻; 뎻; 뎻; ) HANGUL SYLLABLE DYES
+B3BC;B3BC;1103 1168 11BB;B3BC;1103 1168 11BB; # (뎼; 뎼; 뎼; 뎼; 뎼; ) HANGUL SYLLABLE DYESS
+B3BD;B3BD;1103 1168 11BC;B3BD;1103 1168 11BC; # (뎽; 뎽; 뎽; 뎽; 뎽; ) HANGUL SYLLABLE DYENG
+B3BE;B3BE;1103 1168 11BD;B3BE;1103 1168 11BD; # (뎾; 뎾; 뎾; 뎾; 뎾; ) HANGUL SYLLABLE DYEJ
+B3BF;B3BF;1103 1168 11BE;B3BF;1103 1168 11BE; # (뎿; 뎿; 뎿; 뎿; 뎿; ) HANGUL SYLLABLE DYEC
+B3C0;B3C0;1103 1168 11BF;B3C0;1103 1168 11BF; # (ë€; ë€; 돀; ë€; 돀; ) HANGUL SYLLABLE DYEK
+B3C1;B3C1;1103 1168 11C0;B3C1;1103 1168 11C0; # (ë; ë; 돁; ë; 돁; ) HANGUL SYLLABLE DYET
+B3C2;B3C2;1103 1168 11C1;B3C2;1103 1168 11C1; # (ë‚; ë‚; 뎨á‡; ë‚; 뎨á‡; ) HANGUL SYLLABLE DYEP
+B3C3;B3C3;1103 1168 11C2;B3C3;1103 1168 11C2; # (ëƒ; ëƒ; 돃; ëƒ; 돃; ) HANGUL SYLLABLE DYEH
+B3C4;B3C4;1103 1169;B3C4;1103 1169; # (ë„; ë„; 도; ë„; 도; ) HANGUL SYLLABLE DO
+B3C5;B3C5;1103 1169 11A8;B3C5;1103 1169 11A8; # (ë…; ë…; 독; ë…; 독; ) HANGUL SYLLABLE DOG
+B3C6;B3C6;1103 1169 11A9;B3C6;1103 1169 11A9; # (ë†; ë†; 돆; ë†; 돆; ) HANGUL SYLLABLE DOGG
+B3C7;B3C7;1103 1169 11AA;B3C7;1103 1169 11AA; # (ë‡; ë‡; 돇; ë‡; 돇; ) HANGUL SYLLABLE DOGS
+B3C8;B3C8;1103 1169 11AB;B3C8;1103 1169 11AB; # (ëˆ; ëˆ; 돈; ëˆ; 돈; ) HANGUL SYLLABLE DON
+B3C9;B3C9;1103 1169 11AC;B3C9;1103 1169 11AC; # (ë‰; ë‰; 돉; ë‰; 돉; ) HANGUL SYLLABLE DONJ
+B3CA;B3CA;1103 1169 11AD;B3CA;1103 1169 11AD; # (ëŠ; ëŠ; 돊; ëŠ; 돊; ) HANGUL SYLLABLE DONH
+B3CB;B3CB;1103 1169 11AE;B3CB;1103 1169 11AE; # (ë‹; ë‹; 돋; ë‹; 돋; ) HANGUL SYLLABLE DOD
+B3CC;B3CC;1103 1169 11AF;B3CC;1103 1169 11AF; # (ëŒ; ëŒ; 돌; ëŒ; 돌; ) HANGUL SYLLABLE DOL
+B3CD;B3CD;1103 1169 11B0;B3CD;1103 1169 11B0; # (ë; ë; 돍; ë; 돍; ) HANGUL SYLLABLE DOLG
+B3CE;B3CE;1103 1169 11B1;B3CE;1103 1169 11B1; # (ëŽ; ëŽ; 돎; ëŽ; 돎; ) HANGUL SYLLABLE DOLM
+B3CF;B3CF;1103 1169 11B2;B3CF;1103 1169 11B2; # (ë; ë; 돏; ë; 돏; ) HANGUL SYLLABLE DOLB
+B3D0;B3D0;1103 1169 11B3;B3D0;1103 1169 11B3; # (ë; ë; 돐; ë; 돐; ) HANGUL SYLLABLE DOLS
+B3D1;B3D1;1103 1169 11B4;B3D1;1103 1169 11B4; # (ë‘; ë‘; 돑; ë‘; 돑; ) HANGUL SYLLABLE DOLT
+B3D2;B3D2;1103 1169 11B5;B3D2;1103 1169 11B5; # (ë’; ë’; 돒; ë’; 돒; ) HANGUL SYLLABLE DOLP
+B3D3;B3D3;1103 1169 11B6;B3D3;1103 1169 11B6; # (ë“; ë“; 돓; ë“; 돓; ) HANGUL SYLLABLE DOLH
+B3D4;B3D4;1103 1169 11B7;B3D4;1103 1169 11B7; # (ë”; ë”; 돔; ë”; 돔; ) HANGUL SYLLABLE DOM
+B3D5;B3D5;1103 1169 11B8;B3D5;1103 1169 11B8; # (ë•; ë•; 돕; ë•; 돕; ) HANGUL SYLLABLE DOB
+B3D6;B3D6;1103 1169 11B9;B3D6;1103 1169 11B9; # (ë–; ë–; 돖; ë–; 돖; ) HANGUL SYLLABLE DOBS
+B3D7;B3D7;1103 1169 11BA;B3D7;1103 1169 11BA; # (ë—; ë—; 돗; ë—; 돗; ) HANGUL SYLLABLE DOS
+B3D8;B3D8;1103 1169 11BB;B3D8;1103 1169 11BB; # (ë˜; ë˜; 돘; ë˜; 돘; ) HANGUL SYLLABLE DOSS
+B3D9;B3D9;1103 1169 11BC;B3D9;1103 1169 11BC; # (ë™; ë™; 동; ë™; 동; ) HANGUL SYLLABLE DONG
+B3DA;B3DA;1103 1169 11BD;B3DA;1103 1169 11BD; # (ëš; ëš; 돚; ëš; 돚; ) HANGUL SYLLABLE DOJ
+B3DB;B3DB;1103 1169 11BE;B3DB;1103 1169 11BE; # (ë›; ë›; 돛; ë›; 돛; ) HANGUL SYLLABLE DOC
+B3DC;B3DC;1103 1169 11BF;B3DC;1103 1169 11BF; # (ëœ; ëœ; 돜; ëœ; 돜; ) HANGUL SYLLABLE DOK
+B3DD;B3DD;1103 1169 11C0;B3DD;1103 1169 11C0; # (ë; ë; 돝; ë; 돝; ) HANGUL SYLLABLE DOT
+B3DE;B3DE;1103 1169 11C1;B3DE;1103 1169 11C1; # (ëž; ëž; 도á‡; ëž; 도á‡; ) HANGUL SYLLABLE DOP
+B3DF;B3DF;1103 1169 11C2;B3DF;1103 1169 11C2; # (ëŸ; ëŸ; 돟; ëŸ; 돟; ) HANGUL SYLLABLE DOH
+B3E0;B3E0;1103 116A;B3E0;1103 116A; # (ë ; ë ; 돠; ë ; 돠; ) HANGUL SYLLABLE DWA
+B3E1;B3E1;1103 116A 11A8;B3E1;1103 116A 11A8; # (ë¡; ë¡; 돡; ë¡; 돡; ) HANGUL SYLLABLE DWAG
+B3E2;B3E2;1103 116A 11A9;B3E2;1103 116A 11A9; # (ë¢; ë¢; 돢; ë¢; 돢; ) HANGUL SYLLABLE DWAGG
+B3E3;B3E3;1103 116A 11AA;B3E3;1103 116A 11AA; # (ë£; ë£; 돣; ë£; 돣; ) HANGUL SYLLABLE DWAGS
+B3E4;B3E4;1103 116A 11AB;B3E4;1103 116A 11AB; # (ë¤; ë¤; 돤; ë¤; 돤; ) HANGUL SYLLABLE DWAN
+B3E5;B3E5;1103 116A 11AC;B3E5;1103 116A 11AC; # (ë¥; ë¥; 돥; ë¥; 돥; ) HANGUL SYLLABLE DWANJ
+B3E6;B3E6;1103 116A 11AD;B3E6;1103 116A 11AD; # (ë¦; ë¦; 돦; ë¦; 돦; ) HANGUL SYLLABLE DWANH
+B3E7;B3E7;1103 116A 11AE;B3E7;1103 116A 11AE; # (ë§; ë§; 돧; ë§; 돧; ) HANGUL SYLLABLE DWAD
+B3E8;B3E8;1103 116A 11AF;B3E8;1103 116A 11AF; # (ë¨; ë¨; 돨; ë¨; 돨; ) HANGUL SYLLABLE DWAL
+B3E9;B3E9;1103 116A 11B0;B3E9;1103 116A 11B0; # (ë©; ë©; 돩; ë©; 돩; ) HANGUL SYLLABLE DWALG
+B3EA;B3EA;1103 116A 11B1;B3EA;1103 116A 11B1; # (ëª; ëª; 돪; ëª; 돪; ) HANGUL SYLLABLE DWALM
+B3EB;B3EB;1103 116A 11B2;B3EB;1103 116A 11B2; # (ë«; ë«; 돫; ë«; 돫; ) HANGUL SYLLABLE DWALB
+B3EC;B3EC;1103 116A 11B3;B3EC;1103 116A 11B3; # (ë¬; ë¬; 돬; ë¬; 돬; ) HANGUL SYLLABLE DWALS
+B3ED;B3ED;1103 116A 11B4;B3ED;1103 116A 11B4; # (ë­; ë­; 돭; ë­; 돭; ) HANGUL SYLLABLE DWALT
+B3EE;B3EE;1103 116A 11B5;B3EE;1103 116A 11B5; # (ë®; ë®; 돮; ë®; 돮; ) HANGUL SYLLABLE DWALP
+B3EF;B3EF;1103 116A 11B6;B3EF;1103 116A 11B6; # (ë¯; ë¯; 돯; ë¯; 돯; ) HANGUL SYLLABLE DWALH
+B3F0;B3F0;1103 116A 11B7;B3F0;1103 116A 11B7; # (ë°; ë°; 돰; ë°; 돰; ) HANGUL SYLLABLE DWAM
+B3F1;B3F1;1103 116A 11B8;B3F1;1103 116A 11B8; # (ë±; ë±; 돱; ë±; 돱; ) HANGUL SYLLABLE DWAB
+B3F2;B3F2;1103 116A 11B9;B3F2;1103 116A 11B9; # (ë²; ë²; 돲; ë²; 돲; ) HANGUL SYLLABLE DWABS
+B3F3;B3F3;1103 116A 11BA;B3F3;1103 116A 11BA; # (ë³; ë³; 돳; ë³; 돳; ) HANGUL SYLLABLE DWAS
+B3F4;B3F4;1103 116A 11BB;B3F4;1103 116A 11BB; # (ë´; ë´; 돴; ë´; 돴; ) HANGUL SYLLABLE DWASS
+B3F5;B3F5;1103 116A 11BC;B3F5;1103 116A 11BC; # (ëµ; ëµ; 돵; ëµ; 돵; ) HANGUL SYLLABLE DWANG
+B3F6;B3F6;1103 116A 11BD;B3F6;1103 116A 11BD; # (ë¶; ë¶; 돶; ë¶; 돶; ) HANGUL SYLLABLE DWAJ
+B3F7;B3F7;1103 116A 11BE;B3F7;1103 116A 11BE; # (ë·; ë·; 돷; ë·; 돷; ) HANGUL SYLLABLE DWAC
+B3F8;B3F8;1103 116A 11BF;B3F8;1103 116A 11BF; # (ë¸; ë¸; 돸; ë¸; 돸; ) HANGUL SYLLABLE DWAK
+B3F9;B3F9;1103 116A 11C0;B3F9;1103 116A 11C0; # (ë¹; ë¹; 돹; ë¹; 돹; ) HANGUL SYLLABLE DWAT
+B3FA;B3FA;1103 116A 11C1;B3FA;1103 116A 11C1; # (ëº; ëº; 돠á‡; ëº; 돠á‡; ) HANGUL SYLLABLE DWAP
+B3FB;B3FB;1103 116A 11C2;B3FB;1103 116A 11C2; # (ë»; ë»; 돻; ë»; 돻; ) HANGUL SYLLABLE DWAH
+B3FC;B3FC;1103 116B;B3FC;1103 116B; # (ë¼; ë¼; 돼; ë¼; 돼; ) HANGUL SYLLABLE DWAE
+B3FD;B3FD;1103 116B 11A8;B3FD;1103 116B 11A8; # (ë½; ë½; 돽; ë½; 돽; ) HANGUL SYLLABLE DWAEG
+B3FE;B3FE;1103 116B 11A9;B3FE;1103 116B 11A9; # (ë¾; ë¾; 돾; ë¾; 돾; ) HANGUL SYLLABLE DWAEGG
+B3FF;B3FF;1103 116B 11AA;B3FF;1103 116B 11AA; # (ë¿; ë¿; 돿; ë¿; 돿; ) HANGUL SYLLABLE DWAEGS
+B400;B400;1103 116B 11AB;B400;1103 116B 11AB; # (ë€; ë€; 됀; ë€; 됀; ) HANGUL SYLLABLE DWAEN
+B401;B401;1103 116B 11AC;B401;1103 116B 11AC; # (ë; ë; 됁; ë; 됁; ) HANGUL SYLLABLE DWAENJ
+B402;B402;1103 116B 11AD;B402;1103 116B 11AD; # (ë‚; ë‚; 됂; ë‚; 됂; ) HANGUL SYLLABLE DWAENH
+B403;B403;1103 116B 11AE;B403;1103 116B 11AE; # (ëƒ; ëƒ; 됃; ëƒ; 됃; ) HANGUL SYLLABLE DWAED
+B404;B404;1103 116B 11AF;B404;1103 116B 11AF; # (ë„; ë„; 됄; ë„; 됄; ) HANGUL SYLLABLE DWAEL
+B405;B405;1103 116B 11B0;B405;1103 116B 11B0; # (ë…; ë…; 됅; ë…; 됅; ) HANGUL SYLLABLE DWAELG
+B406;B406;1103 116B 11B1;B406;1103 116B 11B1; # (ë†; ë†; 됆; ë†; 됆; ) HANGUL SYLLABLE DWAELM
+B407;B407;1103 116B 11B2;B407;1103 116B 11B2; # (ë‡; ë‡; 됇; ë‡; 됇; ) HANGUL SYLLABLE DWAELB
+B408;B408;1103 116B 11B3;B408;1103 116B 11B3; # (ëˆ; ëˆ; 됈; ëˆ; 됈; ) HANGUL SYLLABLE DWAELS
+B409;B409;1103 116B 11B4;B409;1103 116B 11B4; # (ë‰; ë‰; 됉; ë‰; 됉; ) HANGUL SYLLABLE DWAELT
+B40A;B40A;1103 116B 11B5;B40A;1103 116B 11B5; # (ëŠ; ëŠ; 됊; ëŠ; 됊; ) HANGUL SYLLABLE DWAELP
+B40B;B40B;1103 116B 11B6;B40B;1103 116B 11B6; # (ë‹; ë‹; 됋; ë‹; 됋; ) HANGUL SYLLABLE DWAELH
+B40C;B40C;1103 116B 11B7;B40C;1103 116B 11B7; # (ëŒ; ëŒ; 됌; ëŒ; 됌; ) HANGUL SYLLABLE DWAEM
+B40D;B40D;1103 116B 11B8;B40D;1103 116B 11B8; # (ë; ë; 됍; ë; 됍; ) HANGUL SYLLABLE DWAEB
+B40E;B40E;1103 116B 11B9;B40E;1103 116B 11B9; # (ëŽ; ëŽ; 됎; ëŽ; 됎; ) HANGUL SYLLABLE DWAEBS
+B40F;B40F;1103 116B 11BA;B40F;1103 116B 11BA; # (ë; ë; 됏; ë; 됏; ) HANGUL SYLLABLE DWAES
+B410;B410;1103 116B 11BB;B410;1103 116B 11BB; # (ë; ë; 됐; ë; 됐; ) HANGUL SYLLABLE DWAESS
+B411;B411;1103 116B 11BC;B411;1103 116B 11BC; # (ë‘; ë‘; 됑; ë‘; 됑; ) HANGUL SYLLABLE DWAENG
+B412;B412;1103 116B 11BD;B412;1103 116B 11BD; # (ë’; ë’; 됒; ë’; 됒; ) HANGUL SYLLABLE DWAEJ
+B413;B413;1103 116B 11BE;B413;1103 116B 11BE; # (ë“; ë“; 됓; ë“; 됓; ) HANGUL SYLLABLE DWAEC
+B414;B414;1103 116B 11BF;B414;1103 116B 11BF; # (ë”; ë”; 됔; ë”; 됔; ) HANGUL SYLLABLE DWAEK
+B415;B415;1103 116B 11C0;B415;1103 116B 11C0; # (ë•; ë•; 됕; ë•; 됕; ) HANGUL SYLLABLE DWAET
+B416;B416;1103 116B 11C1;B416;1103 116B 11C1; # (ë–; ë–; 돼á‡; ë–; 돼á‡; ) HANGUL SYLLABLE DWAEP
+B417;B417;1103 116B 11C2;B417;1103 116B 11C2; # (ë—; ë—; 됗; ë—; 됗; ) HANGUL SYLLABLE DWAEH
+B418;B418;1103 116C;B418;1103 116C; # (ë˜; ë˜; 되; ë˜; 되; ) HANGUL SYLLABLE DOE
+B419;B419;1103 116C 11A8;B419;1103 116C 11A8; # (ë™; ë™; 됙; ë™; 됙; ) HANGUL SYLLABLE DOEG
+B41A;B41A;1103 116C 11A9;B41A;1103 116C 11A9; # (ëš; ëš; 됚; ëš; 됚; ) HANGUL SYLLABLE DOEGG
+B41B;B41B;1103 116C 11AA;B41B;1103 116C 11AA; # (ë›; ë›; 됛; ë›; 됛; ) HANGUL SYLLABLE DOEGS
+B41C;B41C;1103 116C 11AB;B41C;1103 116C 11AB; # (ëœ; ëœ; 된; ëœ; 된; ) HANGUL SYLLABLE DOEN
+B41D;B41D;1103 116C 11AC;B41D;1103 116C 11AC; # (ë; ë; 됝; ë; 됝; ) HANGUL SYLLABLE DOENJ
+B41E;B41E;1103 116C 11AD;B41E;1103 116C 11AD; # (ëž; ëž; 됞; ëž; 됞; ) HANGUL SYLLABLE DOENH
+B41F;B41F;1103 116C 11AE;B41F;1103 116C 11AE; # (ëŸ; ëŸ; 됟; ëŸ; 됟; ) HANGUL SYLLABLE DOED
+B420;B420;1103 116C 11AF;B420;1103 116C 11AF; # (ë ; ë ; 될; ë ; 될; ) HANGUL SYLLABLE DOEL
+B421;B421;1103 116C 11B0;B421;1103 116C 11B0; # (ë¡; ë¡; 됡; ë¡; 됡; ) HANGUL SYLLABLE DOELG
+B422;B422;1103 116C 11B1;B422;1103 116C 11B1; # (ë¢; ë¢; 됢; ë¢; 됢; ) HANGUL SYLLABLE DOELM
+B423;B423;1103 116C 11B2;B423;1103 116C 11B2; # (ë£; ë£; 됣; ë£; 됣; ) HANGUL SYLLABLE DOELB
+B424;B424;1103 116C 11B3;B424;1103 116C 11B3; # (ë¤; ë¤; 됤; ë¤; 됤; ) HANGUL SYLLABLE DOELS
+B425;B425;1103 116C 11B4;B425;1103 116C 11B4; # (ë¥; ë¥; 됥; ë¥; 됥; ) HANGUL SYLLABLE DOELT
+B426;B426;1103 116C 11B5;B426;1103 116C 11B5; # (ë¦; ë¦; 됦; ë¦; 됦; ) HANGUL SYLLABLE DOELP
+B427;B427;1103 116C 11B6;B427;1103 116C 11B6; # (ë§; ë§; 됧; ë§; 됧; ) HANGUL SYLLABLE DOELH
+B428;B428;1103 116C 11B7;B428;1103 116C 11B7; # (ë¨; ë¨; 됨; ë¨; 됨; ) HANGUL SYLLABLE DOEM
+B429;B429;1103 116C 11B8;B429;1103 116C 11B8; # (ë©; ë©; 됩; ë©; 됩; ) HANGUL SYLLABLE DOEB
+B42A;B42A;1103 116C 11B9;B42A;1103 116C 11B9; # (ëª; ëª; 됪; ëª; 됪; ) HANGUL SYLLABLE DOEBS
+B42B;B42B;1103 116C 11BA;B42B;1103 116C 11BA; # (ë«; ë«; 됫; ë«; 됫; ) HANGUL SYLLABLE DOES
+B42C;B42C;1103 116C 11BB;B42C;1103 116C 11BB; # (ë¬; ë¬; 됬; ë¬; 됬; ) HANGUL SYLLABLE DOESS
+B42D;B42D;1103 116C 11BC;B42D;1103 116C 11BC; # (ë­; ë­; 됭; ë­; 됭; ) HANGUL SYLLABLE DOENG
+B42E;B42E;1103 116C 11BD;B42E;1103 116C 11BD; # (ë®; ë®; 됮; ë®; 됮; ) HANGUL SYLLABLE DOEJ
+B42F;B42F;1103 116C 11BE;B42F;1103 116C 11BE; # (ë¯; ë¯; 됯; ë¯; 됯; ) HANGUL SYLLABLE DOEC
+B430;B430;1103 116C 11BF;B430;1103 116C 11BF; # (ë°; ë°; 됰; ë°; 됰; ) HANGUL SYLLABLE DOEK
+B431;B431;1103 116C 11C0;B431;1103 116C 11C0; # (ë±; ë±; 됱; ë±; 됱; ) HANGUL SYLLABLE DOET
+B432;B432;1103 116C 11C1;B432;1103 116C 11C1; # (ë²; ë²; 되á‡; ë²; 되á‡; ) HANGUL SYLLABLE DOEP
+B433;B433;1103 116C 11C2;B433;1103 116C 11C2; # (ë³; ë³; 됳; ë³; 됳; ) HANGUL SYLLABLE DOEH
+B434;B434;1103 116D;B434;1103 116D; # (ë´; ë´; 됴; ë´; 됴; ) HANGUL SYLLABLE DYO
+B435;B435;1103 116D 11A8;B435;1103 116D 11A8; # (ëµ; ëµ; 됵; ëµ; 됵; ) HANGUL SYLLABLE DYOG
+B436;B436;1103 116D 11A9;B436;1103 116D 11A9; # (ë¶; ë¶; 됶; ë¶; 됶; ) HANGUL SYLLABLE DYOGG
+B437;B437;1103 116D 11AA;B437;1103 116D 11AA; # (ë·; ë·; 됷; ë·; 됷; ) HANGUL SYLLABLE DYOGS
+B438;B438;1103 116D 11AB;B438;1103 116D 11AB; # (ë¸; ë¸; 됸; ë¸; 됸; ) HANGUL SYLLABLE DYON
+B439;B439;1103 116D 11AC;B439;1103 116D 11AC; # (ë¹; ë¹; 됹; ë¹; 됹; ) HANGUL SYLLABLE DYONJ
+B43A;B43A;1103 116D 11AD;B43A;1103 116D 11AD; # (ëº; ëº; 됺; ëº; 됺; ) HANGUL SYLLABLE DYONH
+B43B;B43B;1103 116D 11AE;B43B;1103 116D 11AE; # (ë»; ë»; 됻; ë»; 됻; ) HANGUL SYLLABLE DYOD
+B43C;B43C;1103 116D 11AF;B43C;1103 116D 11AF; # (ë¼; ë¼; 됼; ë¼; 됼; ) HANGUL SYLLABLE DYOL
+B43D;B43D;1103 116D 11B0;B43D;1103 116D 11B0; # (ë½; ë½; 됽; ë½; 됽; ) HANGUL SYLLABLE DYOLG
+B43E;B43E;1103 116D 11B1;B43E;1103 116D 11B1; # (ë¾; ë¾; 됾; ë¾; 됾; ) HANGUL SYLLABLE DYOLM
+B43F;B43F;1103 116D 11B2;B43F;1103 116D 11B2; # (ë¿; ë¿; 됿; ë¿; 됿; ) HANGUL SYLLABLE DYOLB
+B440;B440;1103 116D 11B3;B440;1103 116D 11B3; # (둀; 둀; 둀; 둀; 둀; ) HANGUL SYLLABLE DYOLS
+B441;B441;1103 116D 11B4;B441;1103 116D 11B4; # (ë‘; ë‘; 둁; ë‘; 둁; ) HANGUL SYLLABLE DYOLT
+B442;B442;1103 116D 11B5;B442;1103 116D 11B5; # (둂; 둂; 둂; 둂; 둂; ) HANGUL SYLLABLE DYOLP
+B443;B443;1103 116D 11B6;B443;1103 116D 11B6; # (둃; 둃; 둃; 둃; 둃; ) HANGUL SYLLABLE DYOLH
+B444;B444;1103 116D 11B7;B444;1103 116D 11B7; # (둄; 둄; 둄; 둄; 둄; ) HANGUL SYLLABLE DYOM
+B445;B445;1103 116D 11B8;B445;1103 116D 11B8; # (둅; 둅; 둅; 둅; 둅; ) HANGUL SYLLABLE DYOB
+B446;B446;1103 116D 11B9;B446;1103 116D 11B9; # (둆; 둆; 둆; 둆; 둆; ) HANGUL SYLLABLE DYOBS
+B447;B447;1103 116D 11BA;B447;1103 116D 11BA; # (둇; 둇; 둇; 둇; 둇; ) HANGUL SYLLABLE DYOS
+B448;B448;1103 116D 11BB;B448;1103 116D 11BB; # (둈; 둈; 둈; 둈; 둈; ) HANGUL SYLLABLE DYOSS
+B449;B449;1103 116D 11BC;B449;1103 116D 11BC; # (둉; 둉; 둉; 둉; 둉; ) HANGUL SYLLABLE DYONG
+B44A;B44A;1103 116D 11BD;B44A;1103 116D 11BD; # (둊; 둊; 둊; 둊; 둊; ) HANGUL SYLLABLE DYOJ
+B44B;B44B;1103 116D 11BE;B44B;1103 116D 11BE; # (둋; 둋; 둋; 둋; 둋; ) HANGUL SYLLABLE DYOC
+B44C;B44C;1103 116D 11BF;B44C;1103 116D 11BF; # (둌; 둌; 둌; 둌; 둌; ) HANGUL SYLLABLE DYOK
+B44D;B44D;1103 116D 11C0;B44D;1103 116D 11C0; # (ë‘; ë‘; 둍; ë‘; 둍; ) HANGUL SYLLABLE DYOT
+B44E;B44E;1103 116D 11C1;B44E;1103 116D 11C1; # (ë‘Ž; ë‘Ž; 됴á‡; ë‘Ž; 됴á‡; ) HANGUL SYLLABLE DYOP
+B44F;B44F;1103 116D 11C2;B44F;1103 116D 11C2; # (ë‘; ë‘; 둏; ë‘; 둏; ) HANGUL SYLLABLE DYOH
+B450;B450;1103 116E;B450;1103 116E; # (ë‘; ë‘; 두; ë‘; 두; ) HANGUL SYLLABLE DU
+B451;B451;1103 116E 11A8;B451;1103 116E 11A8; # (둑; 둑; 둑; 둑; 둑; ) HANGUL SYLLABLE DUG
+B452;B452;1103 116E 11A9;B452;1103 116E 11A9; # (둒; 둒; 둒; 둒; 둒; ) HANGUL SYLLABLE DUGG
+B453;B453;1103 116E 11AA;B453;1103 116E 11AA; # (둓; 둓; 둓; 둓; 둓; ) HANGUL SYLLABLE DUGS
+B454;B454;1103 116E 11AB;B454;1103 116E 11AB; # (둔; 둔; 둔; 둔; 둔; ) HANGUL SYLLABLE DUN
+B455;B455;1103 116E 11AC;B455;1103 116E 11AC; # (둕; 둕; 둕; 둕; 둕; ) HANGUL SYLLABLE DUNJ
+B456;B456;1103 116E 11AD;B456;1103 116E 11AD; # (둖; 둖; 둖; 둖; 둖; ) HANGUL SYLLABLE DUNH
+B457;B457;1103 116E 11AE;B457;1103 116E 11AE; # (둗; 둗; 둗; 둗; 둗; ) HANGUL SYLLABLE DUD
+B458;B458;1103 116E 11AF;B458;1103 116E 11AF; # (둘; 둘; 둘; 둘; 둘; ) HANGUL SYLLABLE DUL
+B459;B459;1103 116E 11B0;B459;1103 116E 11B0; # (둙; 둙; 둙; 둙; 둙; ) HANGUL SYLLABLE DULG
+B45A;B45A;1103 116E 11B1;B45A;1103 116E 11B1; # (둚; 둚; 둚; 둚; 둚; ) HANGUL SYLLABLE DULM
+B45B;B45B;1103 116E 11B2;B45B;1103 116E 11B2; # (둛; 둛; 둛; 둛; 둛; ) HANGUL SYLLABLE DULB
+B45C;B45C;1103 116E 11B3;B45C;1103 116E 11B3; # (둜; 둜; 둜; 둜; 둜; ) HANGUL SYLLABLE DULS
+B45D;B45D;1103 116E 11B4;B45D;1103 116E 11B4; # (ë‘; ë‘; 둝; ë‘; 둝; ) HANGUL SYLLABLE DULT
+B45E;B45E;1103 116E 11B5;B45E;1103 116E 11B5; # (둞; 둞; 둞; 둞; 둞; ) HANGUL SYLLABLE DULP
+B45F;B45F;1103 116E 11B6;B45F;1103 116E 11B6; # (둟; 둟; 둟; 둟; 둟; ) HANGUL SYLLABLE DULH
+B460;B460;1103 116E 11B7;B460;1103 116E 11B7; # (둠; 둠; 둠; 둠; 둠; ) HANGUL SYLLABLE DUM
+B461;B461;1103 116E 11B8;B461;1103 116E 11B8; # (둡; 둡; 둡; 둡; 둡; ) HANGUL SYLLABLE DUB
+B462;B462;1103 116E 11B9;B462;1103 116E 11B9; # (둢; 둢; 둢; 둢; 둢; ) HANGUL SYLLABLE DUBS
+B463;B463;1103 116E 11BA;B463;1103 116E 11BA; # (둣; 둣; 둣; 둣; 둣; ) HANGUL SYLLABLE DUS
+B464;B464;1103 116E 11BB;B464;1103 116E 11BB; # (둤; 둤; 둤; 둤; 둤; ) HANGUL SYLLABLE DUSS
+B465;B465;1103 116E 11BC;B465;1103 116E 11BC; # (둥; 둥; 둥; 둥; 둥; ) HANGUL SYLLABLE DUNG
+B466;B466;1103 116E 11BD;B466;1103 116E 11BD; # (둦; 둦; 둦; 둦; 둦; ) HANGUL SYLLABLE DUJ
+B467;B467;1103 116E 11BE;B467;1103 116E 11BE; # (둧; 둧; 둧; 둧; 둧; ) HANGUL SYLLABLE DUC
+B468;B468;1103 116E 11BF;B468;1103 116E 11BF; # (둨; 둨; 둨; 둨; 둨; ) HANGUL SYLLABLE DUK
+B469;B469;1103 116E 11C0;B469;1103 116E 11C0; # (둩; 둩; 둩; 둩; 둩; ) HANGUL SYLLABLE DUT
+B46A;B46A;1103 116E 11C1;B46A;1103 116E 11C1; # (둪; 둪; 두á‡; 둪; 두á‡; ) HANGUL SYLLABLE DUP
+B46B;B46B;1103 116E 11C2;B46B;1103 116E 11C2; # (둫; 둫; 둫; 둫; 둫; ) HANGUL SYLLABLE DUH
+B46C;B46C;1103 116F;B46C;1103 116F; # (둬; 둬; 둬; 둬; 둬; ) HANGUL SYLLABLE DWEO
+B46D;B46D;1103 116F 11A8;B46D;1103 116F 11A8; # (둭; 둭; 둭; 둭; 둭; ) HANGUL SYLLABLE DWEOG
+B46E;B46E;1103 116F 11A9;B46E;1103 116F 11A9; # (둮; 둮; 둮; 둮; 둮; ) HANGUL SYLLABLE DWEOGG
+B46F;B46F;1103 116F 11AA;B46F;1103 116F 11AA; # (둯; 둯; 둯; 둯; 둯; ) HANGUL SYLLABLE DWEOGS
+B470;B470;1103 116F 11AB;B470;1103 116F 11AB; # (둰; 둰; 둰; 둰; 둰; ) HANGUL SYLLABLE DWEON
+B471;B471;1103 116F 11AC;B471;1103 116F 11AC; # (둱; 둱; 둱; 둱; 둱; ) HANGUL SYLLABLE DWEONJ
+B472;B472;1103 116F 11AD;B472;1103 116F 11AD; # (둲; 둲; 둲; 둲; 둲; ) HANGUL SYLLABLE DWEONH
+B473;B473;1103 116F 11AE;B473;1103 116F 11AE; # (둳; 둳; 둳; 둳; 둳; ) HANGUL SYLLABLE DWEOD
+B474;B474;1103 116F 11AF;B474;1103 116F 11AF; # (둴; 둴; 둴; 둴; 둴; ) HANGUL SYLLABLE DWEOL
+B475;B475;1103 116F 11B0;B475;1103 116F 11B0; # (둵; 둵; 둵; 둵; 둵; ) HANGUL SYLLABLE DWEOLG
+B476;B476;1103 116F 11B1;B476;1103 116F 11B1; # (둶; 둶; 둶; 둶; 둶; ) HANGUL SYLLABLE DWEOLM
+B477;B477;1103 116F 11B2;B477;1103 116F 11B2; # (둷; 둷; 둷; 둷; 둷; ) HANGUL SYLLABLE DWEOLB
+B478;B478;1103 116F 11B3;B478;1103 116F 11B3; # (둸; 둸; 둸; 둸; 둸; ) HANGUL SYLLABLE DWEOLS
+B479;B479;1103 116F 11B4;B479;1103 116F 11B4; # (둹; 둹; 둹; 둹; 둹; ) HANGUL SYLLABLE DWEOLT
+B47A;B47A;1103 116F 11B5;B47A;1103 116F 11B5; # (둺; 둺; 둺; 둺; 둺; ) HANGUL SYLLABLE DWEOLP
+B47B;B47B;1103 116F 11B6;B47B;1103 116F 11B6; # (둻; 둻; 둻; 둻; 둻; ) HANGUL SYLLABLE DWEOLH
+B47C;B47C;1103 116F 11B7;B47C;1103 116F 11B7; # (둼; 둼; 둼; 둼; 둼; ) HANGUL SYLLABLE DWEOM
+B47D;B47D;1103 116F 11B8;B47D;1103 116F 11B8; # (둽; 둽; 둽; 둽; 둽; ) HANGUL SYLLABLE DWEOB
+B47E;B47E;1103 116F 11B9;B47E;1103 116F 11B9; # (둾; 둾; 둾; 둾; 둾; ) HANGUL SYLLABLE DWEOBS
+B47F;B47F;1103 116F 11BA;B47F;1103 116F 11BA; # (둿; 둿; 둿; 둿; 둿; ) HANGUL SYLLABLE DWEOS
+B480;B480;1103 116F 11BB;B480;1103 116F 11BB; # (뒀; 뒀; 뒀; 뒀; 뒀; ) HANGUL SYLLABLE DWEOSS
+B481;B481;1103 116F 11BC;B481;1103 116F 11BC; # (ë’; ë’; 뒁; ë’; 뒁; ) HANGUL SYLLABLE DWEONG
+B482;B482;1103 116F 11BD;B482;1103 116F 11BD; # (뒂; 뒂; 뒂; 뒂; 뒂; ) HANGUL SYLLABLE DWEOJ
+B483;B483;1103 116F 11BE;B483;1103 116F 11BE; # (뒃; 뒃; 뒃; 뒃; 뒃; ) HANGUL SYLLABLE DWEOC
+B484;B484;1103 116F 11BF;B484;1103 116F 11BF; # (뒄; 뒄; 뒄; 뒄; 뒄; ) HANGUL SYLLABLE DWEOK
+B485;B485;1103 116F 11C0;B485;1103 116F 11C0; # (뒅; 뒅; 뒅; 뒅; 뒅; ) HANGUL SYLLABLE DWEOT
+B486;B486;1103 116F 11C1;B486;1103 116F 11C1; # (ë’†; ë’†; 둬á‡; ë’†; 둬á‡; ) HANGUL SYLLABLE DWEOP
+B487;B487;1103 116F 11C2;B487;1103 116F 11C2; # (뒇; 뒇; 뒇; 뒇; 뒇; ) HANGUL SYLLABLE DWEOH
+B488;B488;1103 1170;B488;1103 1170; # (뒈; 뒈; 뒈; 뒈; 뒈; ) HANGUL SYLLABLE DWE
+B489;B489;1103 1170 11A8;B489;1103 1170 11A8; # (뒉; 뒉; 뒉; 뒉; 뒉; ) HANGUL SYLLABLE DWEG
+B48A;B48A;1103 1170 11A9;B48A;1103 1170 11A9; # (뒊; 뒊; 뒊; 뒊; 뒊; ) HANGUL SYLLABLE DWEGG
+B48B;B48B;1103 1170 11AA;B48B;1103 1170 11AA; # (뒋; 뒋; 뒋; 뒋; 뒋; ) HANGUL SYLLABLE DWEGS
+B48C;B48C;1103 1170 11AB;B48C;1103 1170 11AB; # (뒌; 뒌; 뒌; 뒌; 뒌; ) HANGUL SYLLABLE DWEN
+B48D;B48D;1103 1170 11AC;B48D;1103 1170 11AC; # (ë’; ë’; 뒍; ë’; 뒍; ) HANGUL SYLLABLE DWENJ
+B48E;B48E;1103 1170 11AD;B48E;1103 1170 11AD; # (뒎; 뒎; 뒎; 뒎; 뒎; ) HANGUL SYLLABLE DWENH
+B48F;B48F;1103 1170 11AE;B48F;1103 1170 11AE; # (ë’; ë’; 뒏; ë’; 뒏; ) HANGUL SYLLABLE DWED
+B490;B490;1103 1170 11AF;B490;1103 1170 11AF; # (ë’; ë’; 뒐; ë’; 뒐; ) HANGUL SYLLABLE DWEL
+B491;B491;1103 1170 11B0;B491;1103 1170 11B0; # (뒑; 뒑; 뒑; 뒑; 뒑; ) HANGUL SYLLABLE DWELG
+B492;B492;1103 1170 11B1;B492;1103 1170 11B1; # (뒒; 뒒; 뒒; 뒒; 뒒; ) HANGUL SYLLABLE DWELM
+B493;B493;1103 1170 11B2;B493;1103 1170 11B2; # (뒓; 뒓; 뒓; 뒓; 뒓; ) HANGUL SYLLABLE DWELB
+B494;B494;1103 1170 11B3;B494;1103 1170 11B3; # (뒔; 뒔; 뒔; 뒔; 뒔; ) HANGUL SYLLABLE DWELS
+B495;B495;1103 1170 11B4;B495;1103 1170 11B4; # (뒕; 뒕; 뒕; 뒕; 뒕; ) HANGUL SYLLABLE DWELT
+B496;B496;1103 1170 11B5;B496;1103 1170 11B5; # (뒖; 뒖; 뒖; 뒖; 뒖; ) HANGUL SYLLABLE DWELP
+B497;B497;1103 1170 11B6;B497;1103 1170 11B6; # (뒗; 뒗; 뒗; 뒗; 뒗; ) HANGUL SYLLABLE DWELH
+B498;B498;1103 1170 11B7;B498;1103 1170 11B7; # (뒘; 뒘; 뒘; 뒘; 뒘; ) HANGUL SYLLABLE DWEM
+B499;B499;1103 1170 11B8;B499;1103 1170 11B8; # (뒙; 뒙; 뒙; 뒙; 뒙; ) HANGUL SYLLABLE DWEB
+B49A;B49A;1103 1170 11B9;B49A;1103 1170 11B9; # (뒚; 뒚; 뒚; 뒚; 뒚; ) HANGUL SYLLABLE DWEBS
+B49B;B49B;1103 1170 11BA;B49B;1103 1170 11BA; # (뒛; 뒛; 뒛; 뒛; 뒛; ) HANGUL SYLLABLE DWES
+B49C;B49C;1103 1170 11BB;B49C;1103 1170 11BB; # (뒜; 뒜; 뒜; 뒜; 뒜; ) HANGUL SYLLABLE DWESS
+B49D;B49D;1103 1170 11BC;B49D;1103 1170 11BC; # (ë’; ë’; 뒝; ë’; 뒝; ) HANGUL SYLLABLE DWENG
+B49E;B49E;1103 1170 11BD;B49E;1103 1170 11BD; # (뒞; 뒞; 뒞; 뒞; 뒞; ) HANGUL SYLLABLE DWEJ
+B49F;B49F;1103 1170 11BE;B49F;1103 1170 11BE; # (뒟; 뒟; 뒟; 뒟; 뒟; ) HANGUL SYLLABLE DWEC
+B4A0;B4A0;1103 1170 11BF;B4A0;1103 1170 11BF; # (뒠; 뒠; 뒠; 뒠; 뒠; ) HANGUL SYLLABLE DWEK
+B4A1;B4A1;1103 1170 11C0;B4A1;1103 1170 11C0; # (뒡; 뒡; 뒡; 뒡; 뒡; ) HANGUL SYLLABLE DWET
+B4A2;B4A2;1103 1170 11C1;B4A2;1103 1170 11C1; # (ë’¢; ë’¢; 뒈á‡; ë’¢; 뒈á‡; ) HANGUL SYLLABLE DWEP
+B4A3;B4A3;1103 1170 11C2;B4A3;1103 1170 11C2; # (뒣; 뒣; 뒣; 뒣; 뒣; ) HANGUL SYLLABLE DWEH
+B4A4;B4A4;1103 1171;B4A4;1103 1171; # (뒤; 뒤; 뒤; 뒤; 뒤; ) HANGUL SYLLABLE DWI
+B4A5;B4A5;1103 1171 11A8;B4A5;1103 1171 11A8; # (뒥; 뒥; 뒥; 뒥; 뒥; ) HANGUL SYLLABLE DWIG
+B4A6;B4A6;1103 1171 11A9;B4A6;1103 1171 11A9; # (뒦; 뒦; 뒦; 뒦; 뒦; ) HANGUL SYLLABLE DWIGG
+B4A7;B4A7;1103 1171 11AA;B4A7;1103 1171 11AA; # (뒧; 뒧; 뒧; 뒧; 뒧; ) HANGUL SYLLABLE DWIGS
+B4A8;B4A8;1103 1171 11AB;B4A8;1103 1171 11AB; # (뒨; 뒨; 뒨; 뒨; 뒨; ) HANGUL SYLLABLE DWIN
+B4A9;B4A9;1103 1171 11AC;B4A9;1103 1171 11AC; # (뒩; 뒩; 뒩; 뒩; 뒩; ) HANGUL SYLLABLE DWINJ
+B4AA;B4AA;1103 1171 11AD;B4AA;1103 1171 11AD; # (뒪; 뒪; 뒪; 뒪; 뒪; ) HANGUL SYLLABLE DWINH
+B4AB;B4AB;1103 1171 11AE;B4AB;1103 1171 11AE; # (뒫; 뒫; 뒫; 뒫; 뒫; ) HANGUL SYLLABLE DWID
+B4AC;B4AC;1103 1171 11AF;B4AC;1103 1171 11AF; # (뒬; 뒬; 뒬; 뒬; 뒬; ) HANGUL SYLLABLE DWIL
+B4AD;B4AD;1103 1171 11B0;B4AD;1103 1171 11B0; # (뒭; 뒭; 뒭; 뒭; 뒭; ) HANGUL SYLLABLE DWILG
+B4AE;B4AE;1103 1171 11B1;B4AE;1103 1171 11B1; # (뒮; 뒮; 뒮; 뒮; 뒮; ) HANGUL SYLLABLE DWILM
+B4AF;B4AF;1103 1171 11B2;B4AF;1103 1171 11B2; # (뒯; 뒯; 뒯; 뒯; 뒯; ) HANGUL SYLLABLE DWILB
+B4B0;B4B0;1103 1171 11B3;B4B0;1103 1171 11B3; # (뒰; 뒰; 뒰; 뒰; 뒰; ) HANGUL SYLLABLE DWILS
+B4B1;B4B1;1103 1171 11B4;B4B1;1103 1171 11B4; # (뒱; 뒱; 뒱; 뒱; 뒱; ) HANGUL SYLLABLE DWILT
+B4B2;B4B2;1103 1171 11B5;B4B2;1103 1171 11B5; # (뒲; 뒲; 뒲; 뒲; 뒲; ) HANGUL SYLLABLE DWILP
+B4B3;B4B3;1103 1171 11B6;B4B3;1103 1171 11B6; # (뒳; 뒳; 뒳; 뒳; 뒳; ) HANGUL SYLLABLE DWILH
+B4B4;B4B4;1103 1171 11B7;B4B4;1103 1171 11B7; # (뒴; 뒴; 뒴; 뒴; 뒴; ) HANGUL SYLLABLE DWIM
+B4B5;B4B5;1103 1171 11B8;B4B5;1103 1171 11B8; # (뒵; 뒵; 뒵; 뒵; 뒵; ) HANGUL SYLLABLE DWIB
+B4B6;B4B6;1103 1171 11B9;B4B6;1103 1171 11B9; # (뒶; 뒶; 뒶; 뒶; 뒶; ) HANGUL SYLLABLE DWIBS
+B4B7;B4B7;1103 1171 11BA;B4B7;1103 1171 11BA; # (뒷; 뒷; 뒷; 뒷; 뒷; ) HANGUL SYLLABLE DWIS
+B4B8;B4B8;1103 1171 11BB;B4B8;1103 1171 11BB; # (뒸; 뒸; 뒸; 뒸; 뒸; ) HANGUL SYLLABLE DWISS
+B4B9;B4B9;1103 1171 11BC;B4B9;1103 1171 11BC; # (뒹; 뒹; 뒹; 뒹; 뒹; ) HANGUL SYLLABLE DWING
+B4BA;B4BA;1103 1171 11BD;B4BA;1103 1171 11BD; # (뒺; 뒺; 뒺; 뒺; 뒺; ) HANGUL SYLLABLE DWIJ
+B4BB;B4BB;1103 1171 11BE;B4BB;1103 1171 11BE; # (뒻; 뒻; 뒻; 뒻; 뒻; ) HANGUL SYLLABLE DWIC
+B4BC;B4BC;1103 1171 11BF;B4BC;1103 1171 11BF; # (뒼; 뒼; 뒼; 뒼; 뒼; ) HANGUL SYLLABLE DWIK
+B4BD;B4BD;1103 1171 11C0;B4BD;1103 1171 11C0; # (뒽; 뒽; 뒽; 뒽; 뒽; ) HANGUL SYLLABLE DWIT
+B4BE;B4BE;1103 1171 11C1;B4BE;1103 1171 11C1; # (ë’¾; ë’¾; 뒤á‡; ë’¾; 뒤á‡; ) HANGUL SYLLABLE DWIP
+B4BF;B4BF;1103 1171 11C2;B4BF;1103 1171 11C2; # (뒿; 뒿; 뒿; 뒿; 뒿; ) HANGUL SYLLABLE DWIH
+B4C0;B4C0;1103 1172;B4C0;1103 1172; # (듀; 듀; 듀; 듀; 듀; ) HANGUL SYLLABLE DYU
+B4C1;B4C1;1103 1172 11A8;B4C1;1103 1172 11A8; # (ë“; ë“; 듁; ë“; 듁; ) HANGUL SYLLABLE DYUG
+B4C2;B4C2;1103 1172 11A9;B4C2;1103 1172 11A9; # (듂; 듂; 듂; 듂; 듂; ) HANGUL SYLLABLE DYUGG
+B4C3;B4C3;1103 1172 11AA;B4C3;1103 1172 11AA; # (듃; 듃; 듃; 듃; 듃; ) HANGUL SYLLABLE DYUGS
+B4C4;B4C4;1103 1172 11AB;B4C4;1103 1172 11AB; # (듄; 듄; 듄; 듄; 듄; ) HANGUL SYLLABLE DYUN
+B4C5;B4C5;1103 1172 11AC;B4C5;1103 1172 11AC; # (듅; 듅; 듅; 듅; 듅; ) HANGUL SYLLABLE DYUNJ
+B4C6;B4C6;1103 1172 11AD;B4C6;1103 1172 11AD; # (듆; 듆; 듆; 듆; 듆; ) HANGUL SYLLABLE DYUNH
+B4C7;B4C7;1103 1172 11AE;B4C7;1103 1172 11AE; # (듇; 듇; 듇; 듇; 듇; ) HANGUL SYLLABLE DYUD
+B4C8;B4C8;1103 1172 11AF;B4C8;1103 1172 11AF; # (듈; 듈; 듈; 듈; 듈; ) HANGUL SYLLABLE DYUL
+B4C9;B4C9;1103 1172 11B0;B4C9;1103 1172 11B0; # (듉; 듉; 듉; 듉; 듉; ) HANGUL SYLLABLE DYULG
+B4CA;B4CA;1103 1172 11B1;B4CA;1103 1172 11B1; # (듊; 듊; 듊; 듊; 듊; ) HANGUL SYLLABLE DYULM
+B4CB;B4CB;1103 1172 11B2;B4CB;1103 1172 11B2; # (듋; 듋; 듋; 듋; 듋; ) HANGUL SYLLABLE DYULB
+B4CC;B4CC;1103 1172 11B3;B4CC;1103 1172 11B3; # (듌; 듌; 듌; 듌; 듌; ) HANGUL SYLLABLE DYULS
+B4CD;B4CD;1103 1172 11B4;B4CD;1103 1172 11B4; # (ë“; ë“; 듍; ë“; 듍; ) HANGUL SYLLABLE DYULT
+B4CE;B4CE;1103 1172 11B5;B4CE;1103 1172 11B5; # (듎; 듎; 듎; 듎; 듎; ) HANGUL SYLLABLE DYULP
+B4CF;B4CF;1103 1172 11B6;B4CF;1103 1172 11B6; # (ë“; ë“; 듏; ë“; 듏; ) HANGUL SYLLABLE DYULH
+B4D0;B4D0;1103 1172 11B7;B4D0;1103 1172 11B7; # (ë“; ë“; 듐; ë“; 듐; ) HANGUL SYLLABLE DYUM
+B4D1;B4D1;1103 1172 11B8;B4D1;1103 1172 11B8; # (듑; 듑; 듑; 듑; 듑; ) HANGUL SYLLABLE DYUB
+B4D2;B4D2;1103 1172 11B9;B4D2;1103 1172 11B9; # (듒; 듒; 듒; 듒; 듒; ) HANGUL SYLLABLE DYUBS
+B4D3;B4D3;1103 1172 11BA;B4D3;1103 1172 11BA; # (듓; 듓; 듓; 듓; 듓; ) HANGUL SYLLABLE DYUS
+B4D4;B4D4;1103 1172 11BB;B4D4;1103 1172 11BB; # (듔; 듔; 듔; 듔; 듔; ) HANGUL SYLLABLE DYUSS
+B4D5;B4D5;1103 1172 11BC;B4D5;1103 1172 11BC; # (듕; 듕; 듕; 듕; 듕; ) HANGUL SYLLABLE DYUNG
+B4D6;B4D6;1103 1172 11BD;B4D6;1103 1172 11BD; # (듖; 듖; 듖; 듖; 듖; ) HANGUL SYLLABLE DYUJ
+B4D7;B4D7;1103 1172 11BE;B4D7;1103 1172 11BE; # (듗; 듗; 듗; 듗; 듗; ) HANGUL SYLLABLE DYUC
+B4D8;B4D8;1103 1172 11BF;B4D8;1103 1172 11BF; # (듘; 듘; 듘; 듘; 듘; ) HANGUL SYLLABLE DYUK
+B4D9;B4D9;1103 1172 11C0;B4D9;1103 1172 11C0; # (듙; 듙; 듙; 듙; 듙; ) HANGUL SYLLABLE DYUT
+B4DA;B4DA;1103 1172 11C1;B4DA;1103 1172 11C1; # (ë“š; ë“š; 듀á‡; ë“š; 듀á‡; ) HANGUL SYLLABLE DYUP
+B4DB;B4DB;1103 1172 11C2;B4DB;1103 1172 11C2; # (듛; 듛; 듛; 듛; 듛; ) HANGUL SYLLABLE DYUH
+B4DC;B4DC;1103 1173;B4DC;1103 1173; # (드; 드; 드; 드; 드; ) HANGUL SYLLABLE DEU
+B4DD;B4DD;1103 1173 11A8;B4DD;1103 1173 11A8; # (ë“; ë“; 득; ë“; 득; ) HANGUL SYLLABLE DEUG
+B4DE;B4DE;1103 1173 11A9;B4DE;1103 1173 11A9; # (듞; 듞; 듞; 듞; 듞; ) HANGUL SYLLABLE DEUGG
+B4DF;B4DF;1103 1173 11AA;B4DF;1103 1173 11AA; # (듟; 듟; 듟; 듟; 듟; ) HANGUL SYLLABLE DEUGS
+B4E0;B4E0;1103 1173 11AB;B4E0;1103 1173 11AB; # (든; 든; 든; 든; 든; ) HANGUL SYLLABLE DEUN
+B4E1;B4E1;1103 1173 11AC;B4E1;1103 1173 11AC; # (듡; 듡; 듡; 듡; 듡; ) HANGUL SYLLABLE DEUNJ
+B4E2;B4E2;1103 1173 11AD;B4E2;1103 1173 11AD; # (듢; 듢; 듢; 듢; 듢; ) HANGUL SYLLABLE DEUNH
+B4E3;B4E3;1103 1173 11AE;B4E3;1103 1173 11AE; # (듣; 듣; 듣; 듣; 듣; ) HANGUL SYLLABLE DEUD
+B4E4;B4E4;1103 1173 11AF;B4E4;1103 1173 11AF; # (들; 들; 들; 들; 들; ) HANGUL SYLLABLE DEUL
+B4E5;B4E5;1103 1173 11B0;B4E5;1103 1173 11B0; # (듥; 듥; 듥; 듥; 듥; ) HANGUL SYLLABLE DEULG
+B4E6;B4E6;1103 1173 11B1;B4E6;1103 1173 11B1; # (듦; 듦; 듦; 듦; 듦; ) HANGUL SYLLABLE DEULM
+B4E7;B4E7;1103 1173 11B2;B4E7;1103 1173 11B2; # (듧; 듧; 듧; 듧; 듧; ) HANGUL SYLLABLE DEULB
+B4E8;B4E8;1103 1173 11B3;B4E8;1103 1173 11B3; # (듨; 듨; 듨; 듨; 듨; ) HANGUL SYLLABLE DEULS
+B4E9;B4E9;1103 1173 11B4;B4E9;1103 1173 11B4; # (듩; 듩; 듩; 듩; 듩; ) HANGUL SYLLABLE DEULT
+B4EA;B4EA;1103 1173 11B5;B4EA;1103 1173 11B5; # (듪; 듪; 듪; 듪; 듪; ) HANGUL SYLLABLE DEULP
+B4EB;B4EB;1103 1173 11B6;B4EB;1103 1173 11B6; # (듫; 듫; 듫; 듫; 듫; ) HANGUL SYLLABLE DEULH
+B4EC;B4EC;1103 1173 11B7;B4EC;1103 1173 11B7; # (듬; 듬; 듬; 듬; 듬; ) HANGUL SYLLABLE DEUM
+B4ED;B4ED;1103 1173 11B8;B4ED;1103 1173 11B8; # (듭; 듭; 듭; 듭; 듭; ) HANGUL SYLLABLE DEUB
+B4EE;B4EE;1103 1173 11B9;B4EE;1103 1173 11B9; # (듮; 듮; 듮; 듮; 듮; ) HANGUL SYLLABLE DEUBS
+B4EF;B4EF;1103 1173 11BA;B4EF;1103 1173 11BA; # (듯; 듯; 듯; 듯; 듯; ) HANGUL SYLLABLE DEUS
+B4F0;B4F0;1103 1173 11BB;B4F0;1103 1173 11BB; # (듰; 듰; 듰; 듰; 듰; ) HANGUL SYLLABLE DEUSS
+B4F1;B4F1;1103 1173 11BC;B4F1;1103 1173 11BC; # (등; 등; 등; 등; 등; ) HANGUL SYLLABLE DEUNG
+B4F2;B4F2;1103 1173 11BD;B4F2;1103 1173 11BD; # (듲; 듲; 듲; 듲; 듲; ) HANGUL SYLLABLE DEUJ
+B4F3;B4F3;1103 1173 11BE;B4F3;1103 1173 11BE; # (듳; 듳; 듳; 듳; 듳; ) HANGUL SYLLABLE DEUC
+B4F4;B4F4;1103 1173 11BF;B4F4;1103 1173 11BF; # (듴; 듴; 듴; 듴; 듴; ) HANGUL SYLLABLE DEUK
+B4F5;B4F5;1103 1173 11C0;B4F5;1103 1173 11C0; # (듵; 듵; 듵; 듵; 듵; ) HANGUL SYLLABLE DEUT
+B4F6;B4F6;1103 1173 11C1;B4F6;1103 1173 11C1; # (듶; 듶; 드á‡; 듶; 드á‡; ) HANGUL SYLLABLE DEUP
+B4F7;B4F7;1103 1173 11C2;B4F7;1103 1173 11C2; # (듷; 듷; 듷; 듷; 듷; ) HANGUL SYLLABLE DEUH
+B4F8;B4F8;1103 1174;B4F8;1103 1174; # (듸; 듸; 듸; 듸; 듸; ) HANGUL SYLLABLE DYI
+B4F9;B4F9;1103 1174 11A8;B4F9;1103 1174 11A8; # (듹; 듹; 듹; 듹; 듹; ) HANGUL SYLLABLE DYIG
+B4FA;B4FA;1103 1174 11A9;B4FA;1103 1174 11A9; # (듺; 듺; 듺; 듺; 듺; ) HANGUL SYLLABLE DYIGG
+B4FB;B4FB;1103 1174 11AA;B4FB;1103 1174 11AA; # (듻; 듻; 듻; 듻; 듻; ) HANGUL SYLLABLE DYIGS
+B4FC;B4FC;1103 1174 11AB;B4FC;1103 1174 11AB; # (듼; 듼; 듼; 듼; 듼; ) HANGUL SYLLABLE DYIN
+B4FD;B4FD;1103 1174 11AC;B4FD;1103 1174 11AC; # (듽; 듽; 듽; 듽; 듽; ) HANGUL SYLLABLE DYINJ
+B4FE;B4FE;1103 1174 11AD;B4FE;1103 1174 11AD; # (듾; 듾; 듾; 듾; 듾; ) HANGUL SYLLABLE DYINH
+B4FF;B4FF;1103 1174 11AE;B4FF;1103 1174 11AE; # (듿; 듿; 듿; 듿; 듿; ) HANGUL SYLLABLE DYID
+B500;B500;1103 1174 11AF;B500;1103 1174 11AF; # (딀; 딀; 딀; 딀; 딀; ) HANGUL SYLLABLE DYIL
+B501;B501;1103 1174 11B0;B501;1103 1174 11B0; # (ë”; ë”; 딁; ë”; 딁; ) HANGUL SYLLABLE DYILG
+B502;B502;1103 1174 11B1;B502;1103 1174 11B1; # (딂; 딂; 딂; 딂; 딂; ) HANGUL SYLLABLE DYILM
+B503;B503;1103 1174 11B2;B503;1103 1174 11B2; # (딃; 딃; 딃; 딃; 딃; ) HANGUL SYLLABLE DYILB
+B504;B504;1103 1174 11B3;B504;1103 1174 11B3; # (딄; 딄; 딄; 딄; 딄; ) HANGUL SYLLABLE DYILS
+B505;B505;1103 1174 11B4;B505;1103 1174 11B4; # (딅; 딅; 딅; 딅; 딅; ) HANGUL SYLLABLE DYILT
+B506;B506;1103 1174 11B5;B506;1103 1174 11B5; # (딆; 딆; 딆; 딆; 딆; ) HANGUL SYLLABLE DYILP
+B507;B507;1103 1174 11B6;B507;1103 1174 11B6; # (딇; 딇; 딇; 딇; 딇; ) HANGUL SYLLABLE DYILH
+B508;B508;1103 1174 11B7;B508;1103 1174 11B7; # (딈; 딈; 딈; 딈; 딈; ) HANGUL SYLLABLE DYIM
+B509;B509;1103 1174 11B8;B509;1103 1174 11B8; # (딉; 딉; 딉; 딉; 딉; ) HANGUL SYLLABLE DYIB
+B50A;B50A;1103 1174 11B9;B50A;1103 1174 11B9; # (딊; 딊; 딊; 딊; 딊; ) HANGUL SYLLABLE DYIBS
+B50B;B50B;1103 1174 11BA;B50B;1103 1174 11BA; # (딋; 딋; 딋; 딋; 딋; ) HANGUL SYLLABLE DYIS
+B50C;B50C;1103 1174 11BB;B50C;1103 1174 11BB; # (딌; 딌; 딌; 딌; 딌; ) HANGUL SYLLABLE DYISS
+B50D;B50D;1103 1174 11BC;B50D;1103 1174 11BC; # (ë”; ë”; 딍; ë”; 딍; ) HANGUL SYLLABLE DYING
+B50E;B50E;1103 1174 11BD;B50E;1103 1174 11BD; # (딎; 딎; 딎; 딎; 딎; ) HANGUL SYLLABLE DYIJ
+B50F;B50F;1103 1174 11BE;B50F;1103 1174 11BE; # (ë”; ë”; 딏; ë”; 딏; ) HANGUL SYLLABLE DYIC
+B510;B510;1103 1174 11BF;B510;1103 1174 11BF; # (ë”; ë”; 딐; ë”; 딐; ) HANGUL SYLLABLE DYIK
+B511;B511;1103 1174 11C0;B511;1103 1174 11C0; # (딑; 딑; 딑; 딑; 딑; ) HANGUL SYLLABLE DYIT
+B512;B512;1103 1174 11C1;B512;1103 1174 11C1; # (ë”’; ë”’; 듸á‡; ë”’; 듸á‡; ) HANGUL SYLLABLE DYIP
+B513;B513;1103 1174 11C2;B513;1103 1174 11C2; # (딓; 딓; 딓; 딓; 딓; ) HANGUL SYLLABLE DYIH
+B514;B514;1103 1175;B514;1103 1175; # (디; 디; 디; 디; 디; ) HANGUL SYLLABLE DI
+B515;B515;1103 1175 11A8;B515;1103 1175 11A8; # (딕; 딕; 딕; 딕; 딕; ) HANGUL SYLLABLE DIG
+B516;B516;1103 1175 11A9;B516;1103 1175 11A9; # (딖; 딖; 딖; 딖; 딖; ) HANGUL SYLLABLE DIGG
+B517;B517;1103 1175 11AA;B517;1103 1175 11AA; # (딗; 딗; 딗; 딗; 딗; ) HANGUL SYLLABLE DIGS
+B518;B518;1103 1175 11AB;B518;1103 1175 11AB; # (딘; 딘; 딘; 딘; 딘; ) HANGUL SYLLABLE DIN
+B519;B519;1103 1175 11AC;B519;1103 1175 11AC; # (딙; 딙; 딙; 딙; 딙; ) HANGUL SYLLABLE DINJ
+B51A;B51A;1103 1175 11AD;B51A;1103 1175 11AD; # (딚; 딚; 딚; 딚; 딚; ) HANGUL SYLLABLE DINH
+B51B;B51B;1103 1175 11AE;B51B;1103 1175 11AE; # (딛; 딛; 딛; 딛; 딛; ) HANGUL SYLLABLE DID
+B51C;B51C;1103 1175 11AF;B51C;1103 1175 11AF; # (딜; 딜; 딜; 딜; 딜; ) HANGUL SYLLABLE DIL
+B51D;B51D;1103 1175 11B0;B51D;1103 1175 11B0; # (ë”; ë”; 딝; ë”; 딝; ) HANGUL SYLLABLE DILG
+B51E;B51E;1103 1175 11B1;B51E;1103 1175 11B1; # (딞; 딞; 딞; 딞; 딞; ) HANGUL SYLLABLE DILM
+B51F;B51F;1103 1175 11B2;B51F;1103 1175 11B2; # (딟; 딟; 딟; 딟; 딟; ) HANGUL SYLLABLE DILB
+B520;B520;1103 1175 11B3;B520;1103 1175 11B3; # (딠; 딠; 딠; 딠; 딠; ) HANGUL SYLLABLE DILS
+B521;B521;1103 1175 11B4;B521;1103 1175 11B4; # (딡; 딡; 딡; 딡; 딡; ) HANGUL SYLLABLE DILT
+B522;B522;1103 1175 11B5;B522;1103 1175 11B5; # (딢; 딢; 딢; 딢; 딢; ) HANGUL SYLLABLE DILP
+B523;B523;1103 1175 11B6;B523;1103 1175 11B6; # (딣; 딣; 딣; 딣; 딣; ) HANGUL SYLLABLE DILH
+B524;B524;1103 1175 11B7;B524;1103 1175 11B7; # (딤; 딤; 딤; 딤; 딤; ) HANGUL SYLLABLE DIM
+B525;B525;1103 1175 11B8;B525;1103 1175 11B8; # (딥; 딥; 딥; 딥; 딥; ) HANGUL SYLLABLE DIB
+B526;B526;1103 1175 11B9;B526;1103 1175 11B9; # (딦; 딦; 딦; 딦; 딦; ) HANGUL SYLLABLE DIBS
+B527;B527;1103 1175 11BA;B527;1103 1175 11BA; # (딧; 딧; 딧; 딧; 딧; ) HANGUL SYLLABLE DIS
+B528;B528;1103 1175 11BB;B528;1103 1175 11BB; # (딨; 딨; 딨; 딨; 딨; ) HANGUL SYLLABLE DISS
+B529;B529;1103 1175 11BC;B529;1103 1175 11BC; # (딩; 딩; 딩; 딩; 딩; ) HANGUL SYLLABLE DING
+B52A;B52A;1103 1175 11BD;B52A;1103 1175 11BD; # (딪; 딪; 딪; 딪; 딪; ) HANGUL SYLLABLE DIJ
+B52B;B52B;1103 1175 11BE;B52B;1103 1175 11BE; # (딫; 딫; 딫; 딫; 딫; ) HANGUL SYLLABLE DIC
+B52C;B52C;1103 1175 11BF;B52C;1103 1175 11BF; # (딬; 딬; 딬; 딬; 딬; ) HANGUL SYLLABLE DIK
+B52D;B52D;1103 1175 11C0;B52D;1103 1175 11C0; # (딭; 딭; 딭; 딭; 딭; ) HANGUL SYLLABLE DIT
+B52E;B52E;1103 1175 11C1;B52E;1103 1175 11C1; # (ë”®; ë”®; 디á‡; ë”®; 디á‡; ) HANGUL SYLLABLE DIP
+B52F;B52F;1103 1175 11C2;B52F;1103 1175 11C2; # (딯; 딯; 딯; 딯; 딯; ) HANGUL SYLLABLE DIH
+B530;B530;1104 1161;B530;1104 1161; # (ë”°; ë”°; á„„á…¡; ë”°; á„„á…¡; ) HANGUL SYLLABLE DDA
+B531;B531;1104 1161 11A8;B531;1104 1161 11A8; # (딱; 딱; 딱; 딱; 딱; ) HANGUL SYLLABLE DDAG
+B532;B532;1104 1161 11A9;B532;1104 1161 11A9; # (딲; 딲; 딲; 딲; 딲; ) HANGUL SYLLABLE DDAGG
+B533;B533;1104 1161 11AA;B533;1104 1161 11AA; # (딳; 딳; 딳; 딳; 딳; ) HANGUL SYLLABLE DDAGS
+B534;B534;1104 1161 11AB;B534;1104 1161 11AB; # (딴; 딴; 딴; 딴; 딴; ) HANGUL SYLLABLE DDAN
+B535;B535;1104 1161 11AC;B535;1104 1161 11AC; # (딵; 딵; 딵; 딵; 딵; ) HANGUL SYLLABLE DDANJ
+B536;B536;1104 1161 11AD;B536;1104 1161 11AD; # (딶; 딶; 딶; 딶; 딶; ) HANGUL SYLLABLE DDANH
+B537;B537;1104 1161 11AE;B537;1104 1161 11AE; # (딷; 딷; 딷; 딷; 딷; ) HANGUL SYLLABLE DDAD
+B538;B538;1104 1161 11AF;B538;1104 1161 11AF; # (딸; 딸; 딸; 딸; 딸; ) HANGUL SYLLABLE DDAL
+B539;B539;1104 1161 11B0;B539;1104 1161 11B0; # (딹; 딹; 딹; 딹; 딹; ) HANGUL SYLLABLE DDALG
+B53A;B53A;1104 1161 11B1;B53A;1104 1161 11B1; # (딺; 딺; 딺; 딺; 딺; ) HANGUL SYLLABLE DDALM
+B53B;B53B;1104 1161 11B2;B53B;1104 1161 11B2; # (딻; 딻; 딻; 딻; 딻; ) HANGUL SYLLABLE DDALB
+B53C;B53C;1104 1161 11B3;B53C;1104 1161 11B3; # (딼; 딼; 딼; 딼; 딼; ) HANGUL SYLLABLE DDALS
+B53D;B53D;1104 1161 11B4;B53D;1104 1161 11B4; # (딽; 딽; 딽; 딽; 딽; ) HANGUL SYLLABLE DDALT
+B53E;B53E;1104 1161 11B5;B53E;1104 1161 11B5; # (딾; 딾; 딾; 딾; 딾; ) HANGUL SYLLABLE DDALP
+B53F;B53F;1104 1161 11B6;B53F;1104 1161 11B6; # (딿; 딿; 딿; 딿; 딿; ) HANGUL SYLLABLE DDALH
+B540;B540;1104 1161 11B7;B540;1104 1161 11B7; # (땀; 땀; 땀; 땀; 땀; ) HANGUL SYLLABLE DDAM
+B541;B541;1104 1161 11B8;B541;1104 1161 11B8; # (ë•; ë•; 땁; ë•; 땁; ) HANGUL SYLLABLE DDAB
+B542;B542;1104 1161 11B9;B542;1104 1161 11B9; # (땂; 땂; 땂; 땂; 땂; ) HANGUL SYLLABLE DDABS
+B543;B543;1104 1161 11BA;B543;1104 1161 11BA; # (땃; 땃; 땃; 땃; 땃; ) HANGUL SYLLABLE DDAS
+B544;B544;1104 1161 11BB;B544;1104 1161 11BB; # (땄; 땄; 땄; 땄; 땄; ) HANGUL SYLLABLE DDASS
+B545;B545;1104 1161 11BC;B545;1104 1161 11BC; # (땅; 땅; 땅; 땅; 땅; ) HANGUL SYLLABLE DDANG
+B546;B546;1104 1161 11BD;B546;1104 1161 11BD; # (땆; 땆; 땆; 땆; 땆; ) HANGUL SYLLABLE DDAJ
+B547;B547;1104 1161 11BE;B547;1104 1161 11BE; # (땇; 땇; 땇; 땇; 땇; ) HANGUL SYLLABLE DDAC
+B548;B548;1104 1161 11BF;B548;1104 1161 11BF; # (땈; 땈; 땈; 땈; 땈; ) HANGUL SYLLABLE DDAK
+B549;B549;1104 1161 11C0;B549;1104 1161 11C0; # (땉; 땉; 땉; 땉; 땉; ) HANGUL SYLLABLE DDAT
+B54A;B54A;1104 1161 11C1;B54A;1104 1161 11C1; # (ë•Š; ë•Š; á„„á…¡á‡; ë•Š; á„„á…¡á‡; ) HANGUL SYLLABLE DDAP
+B54B;B54B;1104 1161 11C2;B54B;1104 1161 11C2; # (땋; 땋; 땋; 땋; 땋; ) HANGUL SYLLABLE DDAH
+B54C;B54C;1104 1162;B54C;1104 1162; # (때; 때; 때; 때; 때; ) HANGUL SYLLABLE DDAE
+B54D;B54D;1104 1162 11A8;B54D;1104 1162 11A8; # (ë•; ë•; 땍; ë•; 땍; ) HANGUL SYLLABLE DDAEG
+B54E;B54E;1104 1162 11A9;B54E;1104 1162 11A9; # (땎; 땎; 땎; 땎; 땎; ) HANGUL SYLLABLE DDAEGG
+B54F;B54F;1104 1162 11AA;B54F;1104 1162 11AA; # (ë•; ë•; 땏; ë•; 땏; ) HANGUL SYLLABLE DDAEGS
+B550;B550;1104 1162 11AB;B550;1104 1162 11AB; # (ë•; ë•; 땐; ë•; 땐; ) HANGUL SYLLABLE DDAEN
+B551;B551;1104 1162 11AC;B551;1104 1162 11AC; # (땑; 땑; 땑; 땑; 땑; ) HANGUL SYLLABLE DDAENJ
+B552;B552;1104 1162 11AD;B552;1104 1162 11AD; # (땒; 땒; 땒; 땒; 땒; ) HANGUL SYLLABLE DDAENH
+B553;B553;1104 1162 11AE;B553;1104 1162 11AE; # (땓; 땓; 땓; 땓; 땓; ) HANGUL SYLLABLE DDAED
+B554;B554;1104 1162 11AF;B554;1104 1162 11AF; # (땔; 땔; 땔; 땔; 땔; ) HANGUL SYLLABLE DDAEL
+B555;B555;1104 1162 11B0;B555;1104 1162 11B0; # (땕; 땕; 땕; 땕; 땕; ) HANGUL SYLLABLE DDAELG
+B556;B556;1104 1162 11B1;B556;1104 1162 11B1; # (땖; 땖; 땖; 땖; 땖; ) HANGUL SYLLABLE DDAELM
+B557;B557;1104 1162 11B2;B557;1104 1162 11B2; # (땗; 땗; 땗; 땗; 땗; ) HANGUL SYLLABLE DDAELB
+B558;B558;1104 1162 11B3;B558;1104 1162 11B3; # (땘; 땘; 땘; 땘; 땘; ) HANGUL SYLLABLE DDAELS
+B559;B559;1104 1162 11B4;B559;1104 1162 11B4; # (땙; 땙; 땙; 땙; 땙; ) HANGUL SYLLABLE DDAELT
+B55A;B55A;1104 1162 11B5;B55A;1104 1162 11B5; # (땚; 땚; 땚; 땚; 땚; ) HANGUL SYLLABLE DDAELP
+B55B;B55B;1104 1162 11B6;B55B;1104 1162 11B6; # (땛; 땛; 땛; 땛; 땛; ) HANGUL SYLLABLE DDAELH
+B55C;B55C;1104 1162 11B7;B55C;1104 1162 11B7; # (땜; 땜; 땜; 땜; 땜; ) HANGUL SYLLABLE DDAEM
+B55D;B55D;1104 1162 11B8;B55D;1104 1162 11B8; # (ë•; ë•; 땝; ë•; 땝; ) HANGUL SYLLABLE DDAEB
+B55E;B55E;1104 1162 11B9;B55E;1104 1162 11B9; # (땞; 땞; 땞; 땞; 땞; ) HANGUL SYLLABLE DDAEBS
+B55F;B55F;1104 1162 11BA;B55F;1104 1162 11BA; # (땟; 땟; 땟; 땟; 땟; ) HANGUL SYLLABLE DDAES
+B560;B560;1104 1162 11BB;B560;1104 1162 11BB; # (땠; 땠; 땠; 땠; 땠; ) HANGUL SYLLABLE DDAESS
+B561;B561;1104 1162 11BC;B561;1104 1162 11BC; # (땡; 땡; 땡; 땡; 땡; ) HANGUL SYLLABLE DDAENG
+B562;B562;1104 1162 11BD;B562;1104 1162 11BD; # (땢; 땢; 땢; 땢; 땢; ) HANGUL SYLLABLE DDAEJ
+B563;B563;1104 1162 11BE;B563;1104 1162 11BE; # (땣; 땣; 땣; 땣; 땣; ) HANGUL SYLLABLE DDAEC
+B564;B564;1104 1162 11BF;B564;1104 1162 11BF; # (땤; 땤; 땤; 땤; 땤; ) HANGUL SYLLABLE DDAEK
+B565;B565;1104 1162 11C0;B565;1104 1162 11C0; # (땥; 땥; 땥; 땥; 땥; ) HANGUL SYLLABLE DDAET
+B566;B566;1104 1162 11C1;B566;1104 1162 11C1; # (땦; 땦; á„„á…¢á‡; 땦; á„„á…¢á‡; ) HANGUL SYLLABLE DDAEP
+B567;B567;1104 1162 11C2;B567;1104 1162 11C2; # (땧; 땧; 땧; 땧; 땧; ) HANGUL SYLLABLE DDAEH
+B568;B568;1104 1163;B568;1104 1163; # (땨; 땨; 땨; 땨; 땨; ) HANGUL SYLLABLE DDYA
+B569;B569;1104 1163 11A8;B569;1104 1163 11A8; # (땩; 땩; 땩; 땩; 땩; ) HANGUL SYLLABLE DDYAG
+B56A;B56A;1104 1163 11A9;B56A;1104 1163 11A9; # (땪; 땪; 땪; 땪; 땪; ) HANGUL SYLLABLE DDYAGG
+B56B;B56B;1104 1163 11AA;B56B;1104 1163 11AA; # (땫; 땫; 땫; 땫; 땫; ) HANGUL SYLLABLE DDYAGS
+B56C;B56C;1104 1163 11AB;B56C;1104 1163 11AB; # (땬; 땬; 땬; 땬; 땬; ) HANGUL SYLLABLE DDYAN
+B56D;B56D;1104 1163 11AC;B56D;1104 1163 11AC; # (땭; 땭; 땭; 땭; 땭; ) HANGUL SYLLABLE DDYANJ
+B56E;B56E;1104 1163 11AD;B56E;1104 1163 11AD; # (땮; 땮; 땮; 땮; 땮; ) HANGUL SYLLABLE DDYANH
+B56F;B56F;1104 1163 11AE;B56F;1104 1163 11AE; # (땯; 땯; 땯; 땯; 땯; ) HANGUL SYLLABLE DDYAD
+B570;B570;1104 1163 11AF;B570;1104 1163 11AF; # (땰; 땰; 땰; 땰; 땰; ) HANGUL SYLLABLE DDYAL
+B571;B571;1104 1163 11B0;B571;1104 1163 11B0; # (땱; 땱; 땱; 땱; 땱; ) HANGUL SYLLABLE DDYALG
+B572;B572;1104 1163 11B1;B572;1104 1163 11B1; # (땲; 땲; 땲; 땲; 땲; ) HANGUL SYLLABLE DDYALM
+B573;B573;1104 1163 11B2;B573;1104 1163 11B2; # (땳; 땳; 땳; 땳; 땳; ) HANGUL SYLLABLE DDYALB
+B574;B574;1104 1163 11B3;B574;1104 1163 11B3; # (땴; 땴; 땴; 땴; 땴; ) HANGUL SYLLABLE DDYALS
+B575;B575;1104 1163 11B4;B575;1104 1163 11B4; # (땵; 땵; 땵; 땵; 땵; ) HANGUL SYLLABLE DDYALT
+B576;B576;1104 1163 11B5;B576;1104 1163 11B5; # (땶; 땶; 땶; 땶; 땶; ) HANGUL SYLLABLE DDYALP
+B577;B577;1104 1163 11B6;B577;1104 1163 11B6; # (땷; 땷; 땷; 땷; 땷; ) HANGUL SYLLABLE DDYALH
+B578;B578;1104 1163 11B7;B578;1104 1163 11B7; # (땸; 땸; 땸; 땸; 땸; ) HANGUL SYLLABLE DDYAM
+B579;B579;1104 1163 11B8;B579;1104 1163 11B8; # (땹; 땹; 땹; 땹; 땹; ) HANGUL SYLLABLE DDYAB
+B57A;B57A;1104 1163 11B9;B57A;1104 1163 11B9; # (땺; 땺; 땺; 땺; 땺; ) HANGUL SYLLABLE DDYABS
+B57B;B57B;1104 1163 11BA;B57B;1104 1163 11BA; # (땻; 땻; 땻; 땻; 땻; ) HANGUL SYLLABLE DDYAS
+B57C;B57C;1104 1163 11BB;B57C;1104 1163 11BB; # (땼; 땼; 땼; 땼; 땼; ) HANGUL SYLLABLE DDYASS
+B57D;B57D;1104 1163 11BC;B57D;1104 1163 11BC; # (땽; 땽; 땽; 땽; 땽; ) HANGUL SYLLABLE DDYANG
+B57E;B57E;1104 1163 11BD;B57E;1104 1163 11BD; # (땾; 땾; 땾; 땾; 땾; ) HANGUL SYLLABLE DDYAJ
+B57F;B57F;1104 1163 11BE;B57F;1104 1163 11BE; # (땿; 땿; 땿; 땿; 땿; ) HANGUL SYLLABLE DDYAC
+B580;B580;1104 1163 11BF;B580;1104 1163 11BF; # (떀; 떀; 떀; 떀; 떀; ) HANGUL SYLLABLE DDYAK
+B581;B581;1104 1163 11C0;B581;1104 1163 11C0; # (ë–; ë–; 떁; ë–; 떁; ) HANGUL SYLLABLE DDYAT
+B582;B582;1104 1163 11C1;B582;1104 1163 11C1; # (ë–‚; ë–‚; á„„á…£á‡; ë–‚; á„„á…£á‡; ) HANGUL SYLLABLE DDYAP
+B583;B583;1104 1163 11C2;B583;1104 1163 11C2; # (떃; 떃; 떃; 떃; 떃; ) HANGUL SYLLABLE DDYAH
+B584;B584;1104 1164;B584;1104 1164; # (ë–„; ë–„; á„„á…¤; ë–„; á„„á…¤; ) HANGUL SYLLABLE DDYAE
+B585;B585;1104 1164 11A8;B585;1104 1164 11A8; # (떅; 떅; 떅; 떅; 떅; ) HANGUL SYLLABLE DDYAEG
+B586;B586;1104 1164 11A9;B586;1104 1164 11A9; # (떆; 떆; 떆; 떆; 떆; ) HANGUL SYLLABLE DDYAEGG
+B587;B587;1104 1164 11AA;B587;1104 1164 11AA; # (떇; 떇; 떇; 떇; 떇; ) HANGUL SYLLABLE DDYAEGS
+B588;B588;1104 1164 11AB;B588;1104 1164 11AB; # (떈; 떈; 떈; 떈; 떈; ) HANGUL SYLLABLE DDYAEN
+B589;B589;1104 1164 11AC;B589;1104 1164 11AC; # (떉; 떉; 떉; 떉; 떉; ) HANGUL SYLLABLE DDYAENJ
+B58A;B58A;1104 1164 11AD;B58A;1104 1164 11AD; # (떊; 떊; 떊; 떊; 떊; ) HANGUL SYLLABLE DDYAENH
+B58B;B58B;1104 1164 11AE;B58B;1104 1164 11AE; # (떋; 떋; 떋; 떋; 떋; ) HANGUL SYLLABLE DDYAED
+B58C;B58C;1104 1164 11AF;B58C;1104 1164 11AF; # (떌; 떌; 떌; 떌; 떌; ) HANGUL SYLLABLE DDYAEL
+B58D;B58D;1104 1164 11B0;B58D;1104 1164 11B0; # (ë–; ë–; 떍; ë–; 떍; ) HANGUL SYLLABLE DDYAELG
+B58E;B58E;1104 1164 11B1;B58E;1104 1164 11B1; # (떎; 떎; 떎; 떎; 떎; ) HANGUL SYLLABLE DDYAELM
+B58F;B58F;1104 1164 11B2;B58F;1104 1164 11B2; # (ë–; ë–; 떏; ë–; 떏; ) HANGUL SYLLABLE DDYAELB
+B590;B590;1104 1164 11B3;B590;1104 1164 11B3; # (ë–; ë–; 떐; ë–; 떐; ) HANGUL SYLLABLE DDYAELS
+B591;B591;1104 1164 11B4;B591;1104 1164 11B4; # (떑; 떑; 떑; 떑; 떑; ) HANGUL SYLLABLE DDYAELT
+B592;B592;1104 1164 11B5;B592;1104 1164 11B5; # (떒; 떒; 떒; 떒; 떒; ) HANGUL SYLLABLE DDYAELP
+B593;B593;1104 1164 11B6;B593;1104 1164 11B6; # (떓; 떓; 떓; 떓; 떓; ) HANGUL SYLLABLE DDYAELH
+B594;B594;1104 1164 11B7;B594;1104 1164 11B7; # (떔; 떔; 떔; 떔; 떔; ) HANGUL SYLLABLE DDYAEM
+B595;B595;1104 1164 11B8;B595;1104 1164 11B8; # (떕; 떕; 떕; 떕; 떕; ) HANGUL SYLLABLE DDYAEB
+B596;B596;1104 1164 11B9;B596;1104 1164 11B9; # (떖; 떖; 떖; 떖; 떖; ) HANGUL SYLLABLE DDYAEBS
+B597;B597;1104 1164 11BA;B597;1104 1164 11BA; # (떗; 떗; 떗; 떗; 떗; ) HANGUL SYLLABLE DDYAES
+B598;B598;1104 1164 11BB;B598;1104 1164 11BB; # (떘; 떘; 떘; 떘; 떘; ) HANGUL SYLLABLE DDYAESS
+B599;B599;1104 1164 11BC;B599;1104 1164 11BC; # (떙; 떙; 떙; 떙; 떙; ) HANGUL SYLLABLE DDYAENG
+B59A;B59A;1104 1164 11BD;B59A;1104 1164 11BD; # (떚; 떚; 떚; 떚; 떚; ) HANGUL SYLLABLE DDYAEJ
+B59B;B59B;1104 1164 11BE;B59B;1104 1164 11BE; # (떛; 떛; 떛; 떛; 떛; ) HANGUL SYLLABLE DDYAEC
+B59C;B59C;1104 1164 11BF;B59C;1104 1164 11BF; # (떜; 떜; 떜; 떜; 떜; ) HANGUL SYLLABLE DDYAEK
+B59D;B59D;1104 1164 11C0;B59D;1104 1164 11C0; # (ë–; ë–; 떝; ë–; 떝; ) HANGUL SYLLABLE DDYAET
+B59E;B59E;1104 1164 11C1;B59E;1104 1164 11C1; # (ë–ž; ë–ž; á„„á…¤á‡; ë–ž; á„„á…¤á‡; ) HANGUL SYLLABLE DDYAEP
+B59F;B59F;1104 1164 11C2;B59F;1104 1164 11C2; # (떟; 떟; 떟; 떟; 떟; ) HANGUL SYLLABLE DDYAEH
+B5A0;B5A0;1104 1165;B5A0;1104 1165; # (ë– ; ë– ; á„„á…¥; ë– ; á„„á…¥; ) HANGUL SYLLABLE DDEO
+B5A1;B5A1;1104 1165 11A8;B5A1;1104 1165 11A8; # (떡; 떡; 떡; 떡; 떡; ) HANGUL SYLLABLE DDEOG
+B5A2;B5A2;1104 1165 11A9;B5A2;1104 1165 11A9; # (떢; 떢; 떢; 떢; 떢; ) HANGUL SYLLABLE DDEOGG
+B5A3;B5A3;1104 1165 11AA;B5A3;1104 1165 11AA; # (떣; 떣; 떣; 떣; 떣; ) HANGUL SYLLABLE DDEOGS
+B5A4;B5A4;1104 1165 11AB;B5A4;1104 1165 11AB; # (떤; 떤; 떤; 떤; 떤; ) HANGUL SYLLABLE DDEON
+B5A5;B5A5;1104 1165 11AC;B5A5;1104 1165 11AC; # (떥; 떥; 떥; 떥; 떥; ) HANGUL SYLLABLE DDEONJ
+B5A6;B5A6;1104 1165 11AD;B5A6;1104 1165 11AD; # (떦; 떦; 떦; 떦; 떦; ) HANGUL SYLLABLE DDEONH
+B5A7;B5A7;1104 1165 11AE;B5A7;1104 1165 11AE; # (떧; 떧; 떧; 떧; 떧; ) HANGUL SYLLABLE DDEOD
+B5A8;B5A8;1104 1165 11AF;B5A8;1104 1165 11AF; # (떨; 떨; 떨; 떨; 떨; ) HANGUL SYLLABLE DDEOL
+B5A9;B5A9;1104 1165 11B0;B5A9;1104 1165 11B0; # (떩; 떩; 떩; 떩; 떩; ) HANGUL SYLLABLE DDEOLG
+B5AA;B5AA;1104 1165 11B1;B5AA;1104 1165 11B1; # (떪; 떪; 떪; 떪; 떪; ) HANGUL SYLLABLE DDEOLM
+B5AB;B5AB;1104 1165 11B2;B5AB;1104 1165 11B2; # (떫; 떫; 떫; 떫; 떫; ) HANGUL SYLLABLE DDEOLB
+B5AC;B5AC;1104 1165 11B3;B5AC;1104 1165 11B3; # (떬; 떬; 떬; 떬; 떬; ) HANGUL SYLLABLE DDEOLS
+B5AD;B5AD;1104 1165 11B4;B5AD;1104 1165 11B4; # (떭; 떭; 떭; 떭; 떭; ) HANGUL SYLLABLE DDEOLT
+B5AE;B5AE;1104 1165 11B5;B5AE;1104 1165 11B5; # (떮; 떮; 떮; 떮; 떮; ) HANGUL SYLLABLE DDEOLP
+B5AF;B5AF;1104 1165 11B6;B5AF;1104 1165 11B6; # (떯; 떯; 떯; 떯; 떯; ) HANGUL SYLLABLE DDEOLH
+B5B0;B5B0;1104 1165 11B7;B5B0;1104 1165 11B7; # (떰; 떰; 떰; 떰; 떰; ) HANGUL SYLLABLE DDEOM
+B5B1;B5B1;1104 1165 11B8;B5B1;1104 1165 11B8; # (떱; 떱; 떱; 떱; 떱; ) HANGUL SYLLABLE DDEOB
+B5B2;B5B2;1104 1165 11B9;B5B2;1104 1165 11B9; # (떲; 떲; 떲; 떲; 떲; ) HANGUL SYLLABLE DDEOBS
+B5B3;B5B3;1104 1165 11BA;B5B3;1104 1165 11BA; # (떳; 떳; 떳; 떳; 떳; ) HANGUL SYLLABLE DDEOS
+B5B4;B5B4;1104 1165 11BB;B5B4;1104 1165 11BB; # (떴; 떴; 떴; 떴; 떴; ) HANGUL SYLLABLE DDEOSS
+B5B5;B5B5;1104 1165 11BC;B5B5;1104 1165 11BC; # (떵; 떵; 떵; 떵; 떵; ) HANGUL SYLLABLE DDEONG
+B5B6;B5B6;1104 1165 11BD;B5B6;1104 1165 11BD; # (떶; 떶; 떶; 떶; 떶; ) HANGUL SYLLABLE DDEOJ
+B5B7;B5B7;1104 1165 11BE;B5B7;1104 1165 11BE; # (떷; 떷; 떷; 떷; 떷; ) HANGUL SYLLABLE DDEOC
+B5B8;B5B8;1104 1165 11BF;B5B8;1104 1165 11BF; # (떸; 떸; 떸; 떸; 떸; ) HANGUL SYLLABLE DDEOK
+B5B9;B5B9;1104 1165 11C0;B5B9;1104 1165 11C0; # (떹; 떹; 떹; 떹; 떹; ) HANGUL SYLLABLE DDEOT
+B5BA;B5BA;1104 1165 11C1;B5BA;1104 1165 11C1; # (ë–º; ë–º; á„„á…¥á‡; ë–º; á„„á…¥á‡; ) HANGUL SYLLABLE DDEOP
+B5BB;B5BB;1104 1165 11C2;B5BB;1104 1165 11C2; # (떻; 떻; 떻; 떻; 떻; ) HANGUL SYLLABLE DDEOH
+B5BC;B5BC;1104 1166;B5BC;1104 1166; # (ë–¼; ë–¼; á„„á…¦; ë–¼; á„„á…¦; ) HANGUL SYLLABLE DDE
+B5BD;B5BD;1104 1166 11A8;B5BD;1104 1166 11A8; # (떽; 떽; 떽; 떽; 떽; ) HANGUL SYLLABLE DDEG
+B5BE;B5BE;1104 1166 11A9;B5BE;1104 1166 11A9; # (떾; 떾; 떾; 떾; 떾; ) HANGUL SYLLABLE DDEGG
+B5BF;B5BF;1104 1166 11AA;B5BF;1104 1166 11AA; # (떿; 떿; 떿; 떿; 떿; ) HANGUL SYLLABLE DDEGS
+B5C0;B5C0;1104 1166 11AB;B5C0;1104 1166 11AB; # (뗀; 뗀; 뗀; 뗀; 뗀; ) HANGUL SYLLABLE DDEN
+B5C1;B5C1;1104 1166 11AC;B5C1;1104 1166 11AC; # (ë—; ë—; 뗁; ë—; 뗁; ) HANGUL SYLLABLE DDENJ
+B5C2;B5C2;1104 1166 11AD;B5C2;1104 1166 11AD; # (뗂; 뗂; 뗂; 뗂; 뗂; ) HANGUL SYLLABLE DDENH
+B5C3;B5C3;1104 1166 11AE;B5C3;1104 1166 11AE; # (뗃; 뗃; 뗃; 뗃; 뗃; ) HANGUL SYLLABLE DDED
+B5C4;B5C4;1104 1166 11AF;B5C4;1104 1166 11AF; # (뗄; 뗄; 뗄; 뗄; 뗄; ) HANGUL SYLLABLE DDEL
+B5C5;B5C5;1104 1166 11B0;B5C5;1104 1166 11B0; # (뗅; 뗅; 뗅; 뗅; 뗅; ) HANGUL SYLLABLE DDELG
+B5C6;B5C6;1104 1166 11B1;B5C6;1104 1166 11B1; # (뗆; 뗆; 뗆; 뗆; 뗆; ) HANGUL SYLLABLE DDELM
+B5C7;B5C7;1104 1166 11B2;B5C7;1104 1166 11B2; # (뗇; 뗇; 뗇; 뗇; 뗇; ) HANGUL SYLLABLE DDELB
+B5C8;B5C8;1104 1166 11B3;B5C8;1104 1166 11B3; # (뗈; 뗈; 뗈; 뗈; 뗈; ) HANGUL SYLLABLE DDELS
+B5C9;B5C9;1104 1166 11B4;B5C9;1104 1166 11B4; # (뗉; 뗉; 뗉; 뗉; 뗉; ) HANGUL SYLLABLE DDELT
+B5CA;B5CA;1104 1166 11B5;B5CA;1104 1166 11B5; # (뗊; 뗊; 뗊; 뗊; 뗊; ) HANGUL SYLLABLE DDELP
+B5CB;B5CB;1104 1166 11B6;B5CB;1104 1166 11B6; # (뗋; 뗋; 뗋; 뗋; 뗋; ) HANGUL SYLLABLE DDELH
+B5CC;B5CC;1104 1166 11B7;B5CC;1104 1166 11B7; # (뗌; 뗌; 뗌; 뗌; 뗌; ) HANGUL SYLLABLE DDEM
+B5CD;B5CD;1104 1166 11B8;B5CD;1104 1166 11B8; # (ë—; ë—; 뗍; ë—; 뗍; ) HANGUL SYLLABLE DDEB
+B5CE;B5CE;1104 1166 11B9;B5CE;1104 1166 11B9; # (뗎; 뗎; 뗎; 뗎; 뗎; ) HANGUL SYLLABLE DDEBS
+B5CF;B5CF;1104 1166 11BA;B5CF;1104 1166 11BA; # (ë—; ë—; 뗏; ë—; 뗏; ) HANGUL SYLLABLE DDES
+B5D0;B5D0;1104 1166 11BB;B5D0;1104 1166 11BB; # (ë—; ë—; 뗐; ë—; 뗐; ) HANGUL SYLLABLE DDESS
+B5D1;B5D1;1104 1166 11BC;B5D1;1104 1166 11BC; # (뗑; 뗑; 뗑; 뗑; 뗑; ) HANGUL SYLLABLE DDENG
+B5D2;B5D2;1104 1166 11BD;B5D2;1104 1166 11BD; # (뗒; 뗒; 뗒; 뗒; 뗒; ) HANGUL SYLLABLE DDEJ
+B5D3;B5D3;1104 1166 11BE;B5D3;1104 1166 11BE; # (뗓; 뗓; 뗓; 뗓; 뗓; ) HANGUL SYLLABLE DDEC
+B5D4;B5D4;1104 1166 11BF;B5D4;1104 1166 11BF; # (뗔; 뗔; 뗔; 뗔; 뗔; ) HANGUL SYLLABLE DDEK
+B5D5;B5D5;1104 1166 11C0;B5D5;1104 1166 11C0; # (뗕; 뗕; 뗕; 뗕; 뗕; ) HANGUL SYLLABLE DDET
+B5D6;B5D6;1104 1166 11C1;B5D6;1104 1166 11C1; # (ë—–; ë—–; á„„á…¦á‡; ë—–; á„„á…¦á‡; ) HANGUL SYLLABLE DDEP
+B5D7;B5D7;1104 1166 11C2;B5D7;1104 1166 11C2; # (뗗; 뗗; 뗗; 뗗; 뗗; ) HANGUL SYLLABLE DDEH
+B5D8;B5D8;1104 1167;B5D8;1104 1167; # (ë—˜; ë—˜; á„„á…§; ë—˜; á„„á…§; ) HANGUL SYLLABLE DDYEO
+B5D9;B5D9;1104 1167 11A8;B5D9;1104 1167 11A8; # (뗙; 뗙; 뗙; 뗙; 뗙; ) HANGUL SYLLABLE DDYEOG
+B5DA;B5DA;1104 1167 11A9;B5DA;1104 1167 11A9; # (뗚; 뗚; 뗚; 뗚; 뗚; ) HANGUL SYLLABLE DDYEOGG
+B5DB;B5DB;1104 1167 11AA;B5DB;1104 1167 11AA; # (뗛; 뗛; 뗛; 뗛; 뗛; ) HANGUL SYLLABLE DDYEOGS
+B5DC;B5DC;1104 1167 11AB;B5DC;1104 1167 11AB; # (뗜; 뗜; 뗜; 뗜; 뗜; ) HANGUL SYLLABLE DDYEON
+B5DD;B5DD;1104 1167 11AC;B5DD;1104 1167 11AC; # (ë—; ë—; 뗝; ë—; 뗝; ) HANGUL SYLLABLE DDYEONJ
+B5DE;B5DE;1104 1167 11AD;B5DE;1104 1167 11AD; # (뗞; 뗞; 뗞; 뗞; 뗞; ) HANGUL SYLLABLE DDYEONH
+B5DF;B5DF;1104 1167 11AE;B5DF;1104 1167 11AE; # (뗟; 뗟; 뗟; 뗟; 뗟; ) HANGUL SYLLABLE DDYEOD
+B5E0;B5E0;1104 1167 11AF;B5E0;1104 1167 11AF; # (뗠; 뗠; 뗠; 뗠; 뗠; ) HANGUL SYLLABLE DDYEOL
+B5E1;B5E1;1104 1167 11B0;B5E1;1104 1167 11B0; # (뗡; 뗡; 뗡; 뗡; 뗡; ) HANGUL SYLLABLE DDYEOLG
+B5E2;B5E2;1104 1167 11B1;B5E2;1104 1167 11B1; # (뗢; 뗢; 뗢; 뗢; 뗢; ) HANGUL SYLLABLE DDYEOLM
+B5E3;B5E3;1104 1167 11B2;B5E3;1104 1167 11B2; # (뗣; 뗣; 뗣; 뗣; 뗣; ) HANGUL SYLLABLE DDYEOLB
+B5E4;B5E4;1104 1167 11B3;B5E4;1104 1167 11B3; # (뗤; 뗤; 뗤; 뗤; 뗤; ) HANGUL SYLLABLE DDYEOLS
+B5E5;B5E5;1104 1167 11B4;B5E5;1104 1167 11B4; # (뗥; 뗥; 뗥; 뗥; 뗥; ) HANGUL SYLLABLE DDYEOLT
+B5E6;B5E6;1104 1167 11B5;B5E6;1104 1167 11B5; # (뗦; 뗦; 뗦; 뗦; 뗦; ) HANGUL SYLLABLE DDYEOLP
+B5E7;B5E7;1104 1167 11B6;B5E7;1104 1167 11B6; # (뗧; 뗧; 뗧; 뗧; 뗧; ) HANGUL SYLLABLE DDYEOLH
+B5E8;B5E8;1104 1167 11B7;B5E8;1104 1167 11B7; # (뗨; 뗨; 뗨; 뗨; 뗨; ) HANGUL SYLLABLE DDYEOM
+B5E9;B5E9;1104 1167 11B8;B5E9;1104 1167 11B8; # (뗩; 뗩; 뗩; 뗩; 뗩; ) HANGUL SYLLABLE DDYEOB
+B5EA;B5EA;1104 1167 11B9;B5EA;1104 1167 11B9; # (뗪; 뗪; 뗪; 뗪; 뗪; ) HANGUL SYLLABLE DDYEOBS
+B5EB;B5EB;1104 1167 11BA;B5EB;1104 1167 11BA; # (뗫; 뗫; 뗫; 뗫; 뗫; ) HANGUL SYLLABLE DDYEOS
+B5EC;B5EC;1104 1167 11BB;B5EC;1104 1167 11BB; # (뗬; 뗬; 뗬; 뗬; 뗬; ) HANGUL SYLLABLE DDYEOSS
+B5ED;B5ED;1104 1167 11BC;B5ED;1104 1167 11BC; # (뗭; 뗭; 뗭; 뗭; 뗭; ) HANGUL SYLLABLE DDYEONG
+B5EE;B5EE;1104 1167 11BD;B5EE;1104 1167 11BD; # (뗮; 뗮; 뗮; 뗮; 뗮; ) HANGUL SYLLABLE DDYEOJ
+B5EF;B5EF;1104 1167 11BE;B5EF;1104 1167 11BE; # (뗯; 뗯; 뗯; 뗯; 뗯; ) HANGUL SYLLABLE DDYEOC
+B5F0;B5F0;1104 1167 11BF;B5F0;1104 1167 11BF; # (뗰; 뗰; 뗰; 뗰; 뗰; ) HANGUL SYLLABLE DDYEOK
+B5F1;B5F1;1104 1167 11C0;B5F1;1104 1167 11C0; # (뗱; 뗱; 뗱; 뗱; 뗱; ) HANGUL SYLLABLE DDYEOT
+B5F2;B5F2;1104 1167 11C1;B5F2;1104 1167 11C1; # (ë—²; ë—²; á„„á…§á‡; ë—²; á„„á…§á‡; ) HANGUL SYLLABLE DDYEOP
+B5F3;B5F3;1104 1167 11C2;B5F3;1104 1167 11C2; # (뗳; 뗳; 뗳; 뗳; 뗳; ) HANGUL SYLLABLE DDYEOH
+B5F4;B5F4;1104 1168;B5F4;1104 1168; # (ë—´; ë—´; á„„á…¨; ë—´; á„„á…¨; ) HANGUL SYLLABLE DDYE
+B5F5;B5F5;1104 1168 11A8;B5F5;1104 1168 11A8; # (뗵; 뗵; 뗵; 뗵; 뗵; ) HANGUL SYLLABLE DDYEG
+B5F6;B5F6;1104 1168 11A9;B5F6;1104 1168 11A9; # (뗶; 뗶; 뗶; 뗶; 뗶; ) HANGUL SYLLABLE DDYEGG
+B5F7;B5F7;1104 1168 11AA;B5F7;1104 1168 11AA; # (뗷; 뗷; 뗷; 뗷; 뗷; ) HANGUL SYLLABLE DDYEGS
+B5F8;B5F8;1104 1168 11AB;B5F8;1104 1168 11AB; # (뗸; 뗸; 뗸; 뗸; 뗸; ) HANGUL SYLLABLE DDYEN
+B5F9;B5F9;1104 1168 11AC;B5F9;1104 1168 11AC; # (뗹; 뗹; 뗹; 뗹; 뗹; ) HANGUL SYLLABLE DDYENJ
+B5FA;B5FA;1104 1168 11AD;B5FA;1104 1168 11AD; # (뗺; 뗺; 뗺; 뗺; 뗺; ) HANGUL SYLLABLE DDYENH
+B5FB;B5FB;1104 1168 11AE;B5FB;1104 1168 11AE; # (뗻; 뗻; 뗻; 뗻; 뗻; ) HANGUL SYLLABLE DDYED
+B5FC;B5FC;1104 1168 11AF;B5FC;1104 1168 11AF; # (뗼; 뗼; 뗼; 뗼; 뗼; ) HANGUL SYLLABLE DDYEL
+B5FD;B5FD;1104 1168 11B0;B5FD;1104 1168 11B0; # (뗽; 뗽; 뗽; 뗽; 뗽; ) HANGUL SYLLABLE DDYELG
+B5FE;B5FE;1104 1168 11B1;B5FE;1104 1168 11B1; # (뗾; 뗾; 뗾; 뗾; 뗾; ) HANGUL SYLLABLE DDYELM
+B5FF;B5FF;1104 1168 11B2;B5FF;1104 1168 11B2; # (뗿; 뗿; 뗿; 뗿; 뗿; ) HANGUL SYLLABLE DDYELB
+B600;B600;1104 1168 11B3;B600;1104 1168 11B3; # (똀; 똀; 똀; 똀; 똀; ) HANGUL SYLLABLE DDYELS
+B601;B601;1104 1168 11B4;B601;1104 1168 11B4; # (ë˜; ë˜; 똁; ë˜; 똁; ) HANGUL SYLLABLE DDYELT
+B602;B602;1104 1168 11B5;B602;1104 1168 11B5; # (똂; 똂; 똂; 똂; 똂; ) HANGUL SYLLABLE DDYELP
+B603;B603;1104 1168 11B6;B603;1104 1168 11B6; # (똃; 똃; 똃; 똃; 똃; ) HANGUL SYLLABLE DDYELH
+B604;B604;1104 1168 11B7;B604;1104 1168 11B7; # (똄; 똄; 똄; 똄; 똄; ) HANGUL SYLLABLE DDYEM
+B605;B605;1104 1168 11B8;B605;1104 1168 11B8; # (똅; 똅; 똅; 똅; 똅; ) HANGUL SYLLABLE DDYEB
+B606;B606;1104 1168 11B9;B606;1104 1168 11B9; # (똆; 똆; 똆; 똆; 똆; ) HANGUL SYLLABLE DDYEBS
+B607;B607;1104 1168 11BA;B607;1104 1168 11BA; # (똇; 똇; 똇; 똇; 똇; ) HANGUL SYLLABLE DDYES
+B608;B608;1104 1168 11BB;B608;1104 1168 11BB; # (똈; 똈; 똈; 똈; 똈; ) HANGUL SYLLABLE DDYESS
+B609;B609;1104 1168 11BC;B609;1104 1168 11BC; # (똉; 똉; 똉; 똉; 똉; ) HANGUL SYLLABLE DDYENG
+B60A;B60A;1104 1168 11BD;B60A;1104 1168 11BD; # (똊; 똊; 똊; 똊; 똊; ) HANGUL SYLLABLE DDYEJ
+B60B;B60B;1104 1168 11BE;B60B;1104 1168 11BE; # (똋; 똋; 똋; 똋; 똋; ) HANGUL SYLLABLE DDYEC
+B60C;B60C;1104 1168 11BF;B60C;1104 1168 11BF; # (똌; 똌; 똌; 똌; 똌; ) HANGUL SYLLABLE DDYEK
+B60D;B60D;1104 1168 11C0;B60D;1104 1168 11C0; # (ë˜; ë˜; 똍; ë˜; 똍; ) HANGUL SYLLABLE DDYET
+B60E;B60E;1104 1168 11C1;B60E;1104 1168 11C1; # (똎; 똎; á„„á…¨á‡; 똎; á„„á…¨á‡; ) HANGUL SYLLABLE DDYEP
+B60F;B60F;1104 1168 11C2;B60F;1104 1168 11C2; # (ë˜; ë˜; 똏; ë˜; 똏; ) HANGUL SYLLABLE DDYEH
+B610;B610;1104 1169;B610;1104 1169; # (ë˜; ë˜; á„„á…©; ë˜; á„„á…©; ) HANGUL SYLLABLE DDO
+B611;B611;1104 1169 11A8;B611;1104 1169 11A8; # (똑; 똑; 똑; 똑; 똑; ) HANGUL SYLLABLE DDOG
+B612;B612;1104 1169 11A9;B612;1104 1169 11A9; # (똒; 똒; 똒; 똒; 똒; ) HANGUL SYLLABLE DDOGG
+B613;B613;1104 1169 11AA;B613;1104 1169 11AA; # (똓; 똓; 똓; 똓; 똓; ) HANGUL SYLLABLE DDOGS
+B614;B614;1104 1169 11AB;B614;1104 1169 11AB; # (똔; 똔; 똔; 똔; 똔; ) HANGUL SYLLABLE DDON
+B615;B615;1104 1169 11AC;B615;1104 1169 11AC; # (똕; 똕; 똕; 똕; 똕; ) HANGUL SYLLABLE DDONJ
+B616;B616;1104 1169 11AD;B616;1104 1169 11AD; # (똖; 똖; 똖; 똖; 똖; ) HANGUL SYLLABLE DDONH
+B617;B617;1104 1169 11AE;B617;1104 1169 11AE; # (똗; 똗; 똗; 똗; 똗; ) HANGUL SYLLABLE DDOD
+B618;B618;1104 1169 11AF;B618;1104 1169 11AF; # (똘; 똘; 똘; 똘; 똘; ) HANGUL SYLLABLE DDOL
+B619;B619;1104 1169 11B0;B619;1104 1169 11B0; # (똙; 똙; 똙; 똙; 똙; ) HANGUL SYLLABLE DDOLG
+B61A;B61A;1104 1169 11B1;B61A;1104 1169 11B1; # (똚; 똚; 똚; 똚; 똚; ) HANGUL SYLLABLE DDOLM
+B61B;B61B;1104 1169 11B2;B61B;1104 1169 11B2; # (똛; 똛; 똛; 똛; 똛; ) HANGUL SYLLABLE DDOLB
+B61C;B61C;1104 1169 11B3;B61C;1104 1169 11B3; # (똜; 똜; 똜; 똜; 똜; ) HANGUL SYLLABLE DDOLS
+B61D;B61D;1104 1169 11B4;B61D;1104 1169 11B4; # (ë˜; ë˜; 똝; ë˜; 똝; ) HANGUL SYLLABLE DDOLT
+B61E;B61E;1104 1169 11B5;B61E;1104 1169 11B5; # (똞; 똞; 똞; 똞; 똞; ) HANGUL SYLLABLE DDOLP
+B61F;B61F;1104 1169 11B6;B61F;1104 1169 11B6; # (똟; 똟; 똟; 똟; 똟; ) HANGUL SYLLABLE DDOLH
+B620;B620;1104 1169 11B7;B620;1104 1169 11B7; # (똠; 똠; 똠; 똠; 똠; ) HANGUL SYLLABLE DDOM
+B621;B621;1104 1169 11B8;B621;1104 1169 11B8; # (똡; 똡; 똡; 똡; 똡; ) HANGUL SYLLABLE DDOB
+B622;B622;1104 1169 11B9;B622;1104 1169 11B9; # (똢; 똢; 똢; 똢; 똢; ) HANGUL SYLLABLE DDOBS
+B623;B623;1104 1169 11BA;B623;1104 1169 11BA; # (똣; 똣; 똣; 똣; 똣; ) HANGUL SYLLABLE DDOS
+B624;B624;1104 1169 11BB;B624;1104 1169 11BB; # (똤; 똤; 똤; 똤; 똤; ) HANGUL SYLLABLE DDOSS
+B625;B625;1104 1169 11BC;B625;1104 1169 11BC; # (똥; 똥; 똥; 똥; 똥; ) HANGUL SYLLABLE DDONG
+B626;B626;1104 1169 11BD;B626;1104 1169 11BD; # (똦; 똦; 똦; 똦; 똦; ) HANGUL SYLLABLE DDOJ
+B627;B627;1104 1169 11BE;B627;1104 1169 11BE; # (똧; 똧; 똧; 똧; 똧; ) HANGUL SYLLABLE DDOC
+B628;B628;1104 1169 11BF;B628;1104 1169 11BF; # (똨; 똨; 똨; 똨; 똨; ) HANGUL SYLLABLE DDOK
+B629;B629;1104 1169 11C0;B629;1104 1169 11C0; # (똩; 똩; 똩; 똩; 똩; ) HANGUL SYLLABLE DDOT
+B62A;B62A;1104 1169 11C1;B62A;1104 1169 11C1; # (똪; 똪; á„„á…©á‡; 똪; á„„á…©á‡; ) HANGUL SYLLABLE DDOP
+B62B;B62B;1104 1169 11C2;B62B;1104 1169 11C2; # (똫; 똫; 똫; 똫; 똫; ) HANGUL SYLLABLE DDOH
+B62C;B62C;1104 116A;B62C;1104 116A; # (똬; 똬; 똬; 똬; 똬; ) HANGUL SYLLABLE DDWA
+B62D;B62D;1104 116A 11A8;B62D;1104 116A 11A8; # (똭; 똭; 똭; 똭; 똭; ) HANGUL SYLLABLE DDWAG
+B62E;B62E;1104 116A 11A9;B62E;1104 116A 11A9; # (똮; 똮; 똮; 똮; 똮; ) HANGUL SYLLABLE DDWAGG
+B62F;B62F;1104 116A 11AA;B62F;1104 116A 11AA; # (똯; 똯; 똯; 똯; 똯; ) HANGUL SYLLABLE DDWAGS
+B630;B630;1104 116A 11AB;B630;1104 116A 11AB; # (똰; 똰; 똰; 똰; 똰; ) HANGUL SYLLABLE DDWAN
+B631;B631;1104 116A 11AC;B631;1104 116A 11AC; # (똱; 똱; 똱; 똱; 똱; ) HANGUL SYLLABLE DDWANJ
+B632;B632;1104 116A 11AD;B632;1104 116A 11AD; # (똲; 똲; 똲; 똲; 똲; ) HANGUL SYLLABLE DDWANH
+B633;B633;1104 116A 11AE;B633;1104 116A 11AE; # (똳; 똳; 똳; 똳; 똳; ) HANGUL SYLLABLE DDWAD
+B634;B634;1104 116A 11AF;B634;1104 116A 11AF; # (똴; 똴; 똴; 똴; 똴; ) HANGUL SYLLABLE DDWAL
+B635;B635;1104 116A 11B0;B635;1104 116A 11B0; # (똵; 똵; 똵; 똵; 똵; ) HANGUL SYLLABLE DDWALG
+B636;B636;1104 116A 11B1;B636;1104 116A 11B1; # (똶; 똶; 똶; 똶; 똶; ) HANGUL SYLLABLE DDWALM
+B637;B637;1104 116A 11B2;B637;1104 116A 11B2; # (똷; 똷; 똷; 똷; 똷; ) HANGUL SYLLABLE DDWALB
+B638;B638;1104 116A 11B3;B638;1104 116A 11B3; # (똸; 똸; 똸; 똸; 똸; ) HANGUL SYLLABLE DDWALS
+B639;B639;1104 116A 11B4;B639;1104 116A 11B4; # (똹; 똹; 똹; 똹; 똹; ) HANGUL SYLLABLE DDWALT
+B63A;B63A;1104 116A 11B5;B63A;1104 116A 11B5; # (똺; 똺; 똺; 똺; 똺; ) HANGUL SYLLABLE DDWALP
+B63B;B63B;1104 116A 11B6;B63B;1104 116A 11B6; # (똻; 똻; 똻; 똻; 똻; ) HANGUL SYLLABLE DDWALH
+B63C;B63C;1104 116A 11B7;B63C;1104 116A 11B7; # (똼; 똼; 똼; 똼; 똼; ) HANGUL SYLLABLE DDWAM
+B63D;B63D;1104 116A 11B8;B63D;1104 116A 11B8; # (똽; 똽; 똽; 똽; 똽; ) HANGUL SYLLABLE DDWAB
+B63E;B63E;1104 116A 11B9;B63E;1104 116A 11B9; # (똾; 똾; 똾; 똾; 똾; ) HANGUL SYLLABLE DDWABS
+B63F;B63F;1104 116A 11BA;B63F;1104 116A 11BA; # (똿; 똿; 똿; 똿; 똿; ) HANGUL SYLLABLE DDWAS
+B640;B640;1104 116A 11BB;B640;1104 116A 11BB; # (뙀; 뙀; 뙀; 뙀; 뙀; ) HANGUL SYLLABLE DDWASS
+B641;B641;1104 116A 11BC;B641;1104 116A 11BC; # (ë™; ë™; 뙁; ë™; 뙁; ) HANGUL SYLLABLE DDWANG
+B642;B642;1104 116A 11BD;B642;1104 116A 11BD; # (뙂; 뙂; 뙂; 뙂; 뙂; ) HANGUL SYLLABLE DDWAJ
+B643;B643;1104 116A 11BE;B643;1104 116A 11BE; # (뙃; 뙃; 뙃; 뙃; 뙃; ) HANGUL SYLLABLE DDWAC
+B644;B644;1104 116A 11BF;B644;1104 116A 11BF; # (뙄; 뙄; 뙄; 뙄; 뙄; ) HANGUL SYLLABLE DDWAK
+B645;B645;1104 116A 11C0;B645;1104 116A 11C0; # (뙅; 뙅; 뙅; 뙅; 뙅; ) HANGUL SYLLABLE DDWAT
+B646;B646;1104 116A 11C1;B646;1104 116A 11C1; # (뙆; 뙆; á„„á…ªá‡; 뙆; á„„á…ªá‡; ) HANGUL SYLLABLE DDWAP
+B647;B647;1104 116A 11C2;B647;1104 116A 11C2; # (뙇; 뙇; 뙇; 뙇; 뙇; ) HANGUL SYLLABLE DDWAH
+B648;B648;1104 116B;B648;1104 116B; # (뙈; 뙈; 뙈; 뙈; 뙈; ) HANGUL SYLLABLE DDWAE
+B649;B649;1104 116B 11A8;B649;1104 116B 11A8; # (뙉; 뙉; 뙉; 뙉; 뙉; ) HANGUL SYLLABLE DDWAEG
+B64A;B64A;1104 116B 11A9;B64A;1104 116B 11A9; # (뙊; 뙊; 뙊; 뙊; 뙊; ) HANGUL SYLLABLE DDWAEGG
+B64B;B64B;1104 116B 11AA;B64B;1104 116B 11AA; # (뙋; 뙋; 뙋; 뙋; 뙋; ) HANGUL SYLLABLE DDWAEGS
+B64C;B64C;1104 116B 11AB;B64C;1104 116B 11AB; # (뙌; 뙌; 뙌; 뙌; 뙌; ) HANGUL SYLLABLE DDWAEN
+B64D;B64D;1104 116B 11AC;B64D;1104 116B 11AC; # (ë™; ë™; 뙍; ë™; 뙍; ) HANGUL SYLLABLE DDWAENJ
+B64E;B64E;1104 116B 11AD;B64E;1104 116B 11AD; # (뙎; 뙎; 뙎; 뙎; 뙎; ) HANGUL SYLLABLE DDWAENH
+B64F;B64F;1104 116B 11AE;B64F;1104 116B 11AE; # (ë™; ë™; 뙏; ë™; 뙏; ) HANGUL SYLLABLE DDWAED
+B650;B650;1104 116B 11AF;B650;1104 116B 11AF; # (ë™; ë™; 뙐; ë™; 뙐; ) HANGUL SYLLABLE DDWAEL
+B651;B651;1104 116B 11B0;B651;1104 116B 11B0; # (뙑; 뙑; 뙑; 뙑; 뙑; ) HANGUL SYLLABLE DDWAELG
+B652;B652;1104 116B 11B1;B652;1104 116B 11B1; # (뙒; 뙒; 뙒; 뙒; 뙒; ) HANGUL SYLLABLE DDWAELM
+B653;B653;1104 116B 11B2;B653;1104 116B 11B2; # (뙓; 뙓; 뙓; 뙓; 뙓; ) HANGUL SYLLABLE DDWAELB
+B654;B654;1104 116B 11B3;B654;1104 116B 11B3; # (뙔; 뙔; 뙔; 뙔; 뙔; ) HANGUL SYLLABLE DDWAELS
+B655;B655;1104 116B 11B4;B655;1104 116B 11B4; # (뙕; 뙕; 뙕; 뙕; 뙕; ) HANGUL SYLLABLE DDWAELT
+B656;B656;1104 116B 11B5;B656;1104 116B 11B5; # (뙖; 뙖; 뙖; 뙖; 뙖; ) HANGUL SYLLABLE DDWAELP
+B657;B657;1104 116B 11B6;B657;1104 116B 11B6; # (뙗; 뙗; 뙗; 뙗; 뙗; ) HANGUL SYLLABLE DDWAELH
+B658;B658;1104 116B 11B7;B658;1104 116B 11B7; # (뙘; 뙘; 뙘; 뙘; 뙘; ) HANGUL SYLLABLE DDWAEM
+B659;B659;1104 116B 11B8;B659;1104 116B 11B8; # (뙙; 뙙; 뙙; 뙙; 뙙; ) HANGUL SYLLABLE DDWAEB
+B65A;B65A;1104 116B 11B9;B65A;1104 116B 11B9; # (뙚; 뙚; 뙚; 뙚; 뙚; ) HANGUL SYLLABLE DDWAEBS
+B65B;B65B;1104 116B 11BA;B65B;1104 116B 11BA; # (뙛; 뙛; 뙛; 뙛; 뙛; ) HANGUL SYLLABLE DDWAES
+B65C;B65C;1104 116B 11BB;B65C;1104 116B 11BB; # (뙜; 뙜; 뙜; 뙜; 뙜; ) HANGUL SYLLABLE DDWAESS
+B65D;B65D;1104 116B 11BC;B65D;1104 116B 11BC; # (ë™; ë™; 뙝; ë™; 뙝; ) HANGUL SYLLABLE DDWAENG
+B65E;B65E;1104 116B 11BD;B65E;1104 116B 11BD; # (뙞; 뙞; 뙞; 뙞; 뙞; ) HANGUL SYLLABLE DDWAEJ
+B65F;B65F;1104 116B 11BE;B65F;1104 116B 11BE; # (뙟; 뙟; 뙟; 뙟; 뙟; ) HANGUL SYLLABLE DDWAEC
+B660;B660;1104 116B 11BF;B660;1104 116B 11BF; # (뙠; 뙠; 뙠; 뙠; 뙠; ) HANGUL SYLLABLE DDWAEK
+B661;B661;1104 116B 11C0;B661;1104 116B 11C0; # (뙡; 뙡; 뙡; 뙡; 뙡; ) HANGUL SYLLABLE DDWAET
+B662;B662;1104 116B 11C1;B662;1104 116B 11C1; # (뙢; 뙢; á„„á…«á‡; 뙢; á„„á…«á‡; ) HANGUL SYLLABLE DDWAEP
+B663;B663;1104 116B 11C2;B663;1104 116B 11C2; # (뙣; 뙣; 뙣; 뙣; 뙣; ) HANGUL SYLLABLE DDWAEH
+B664;B664;1104 116C;B664;1104 116C; # (뙤; 뙤; 뙤; 뙤; 뙤; ) HANGUL SYLLABLE DDOE
+B665;B665;1104 116C 11A8;B665;1104 116C 11A8; # (뙥; 뙥; 뙥; 뙥; 뙥; ) HANGUL SYLLABLE DDOEG
+B666;B666;1104 116C 11A9;B666;1104 116C 11A9; # (뙦; 뙦; 뙦; 뙦; 뙦; ) HANGUL SYLLABLE DDOEGG
+B667;B667;1104 116C 11AA;B667;1104 116C 11AA; # (뙧; 뙧; 뙧; 뙧; 뙧; ) HANGUL SYLLABLE DDOEGS
+B668;B668;1104 116C 11AB;B668;1104 116C 11AB; # (뙨; 뙨; 뙨; 뙨; 뙨; ) HANGUL SYLLABLE DDOEN
+B669;B669;1104 116C 11AC;B669;1104 116C 11AC; # (뙩; 뙩; 뙩; 뙩; 뙩; ) HANGUL SYLLABLE DDOENJ
+B66A;B66A;1104 116C 11AD;B66A;1104 116C 11AD; # (뙪; 뙪; 뙪; 뙪; 뙪; ) HANGUL SYLLABLE DDOENH
+B66B;B66B;1104 116C 11AE;B66B;1104 116C 11AE; # (뙫; 뙫; 뙫; 뙫; 뙫; ) HANGUL SYLLABLE DDOED
+B66C;B66C;1104 116C 11AF;B66C;1104 116C 11AF; # (뙬; 뙬; 뙬; 뙬; 뙬; ) HANGUL SYLLABLE DDOEL
+B66D;B66D;1104 116C 11B0;B66D;1104 116C 11B0; # (뙭; 뙭; 뙭; 뙭; 뙭; ) HANGUL SYLLABLE DDOELG
+B66E;B66E;1104 116C 11B1;B66E;1104 116C 11B1; # (뙮; 뙮; 뙮; 뙮; 뙮; ) HANGUL SYLLABLE DDOELM
+B66F;B66F;1104 116C 11B2;B66F;1104 116C 11B2; # (뙯; 뙯; 뙯; 뙯; 뙯; ) HANGUL SYLLABLE DDOELB
+B670;B670;1104 116C 11B3;B670;1104 116C 11B3; # (뙰; 뙰; 뙰; 뙰; 뙰; ) HANGUL SYLLABLE DDOELS
+B671;B671;1104 116C 11B4;B671;1104 116C 11B4; # (뙱; 뙱; 뙱; 뙱; 뙱; ) HANGUL SYLLABLE DDOELT
+B672;B672;1104 116C 11B5;B672;1104 116C 11B5; # (뙲; 뙲; 뙲; 뙲; 뙲; ) HANGUL SYLLABLE DDOELP
+B673;B673;1104 116C 11B6;B673;1104 116C 11B6; # (뙳; 뙳; 뙳; 뙳; 뙳; ) HANGUL SYLLABLE DDOELH
+B674;B674;1104 116C 11B7;B674;1104 116C 11B7; # (뙴; 뙴; 뙴; 뙴; 뙴; ) HANGUL SYLLABLE DDOEM
+B675;B675;1104 116C 11B8;B675;1104 116C 11B8; # (뙵; 뙵; 뙵; 뙵; 뙵; ) HANGUL SYLLABLE DDOEB
+B676;B676;1104 116C 11B9;B676;1104 116C 11B9; # (뙶; 뙶; 뙶; 뙶; 뙶; ) HANGUL SYLLABLE DDOEBS
+B677;B677;1104 116C 11BA;B677;1104 116C 11BA; # (뙷; 뙷; 뙷; 뙷; 뙷; ) HANGUL SYLLABLE DDOES
+B678;B678;1104 116C 11BB;B678;1104 116C 11BB; # (뙸; 뙸; 뙸; 뙸; 뙸; ) HANGUL SYLLABLE DDOESS
+B679;B679;1104 116C 11BC;B679;1104 116C 11BC; # (뙹; 뙹; 뙹; 뙹; 뙹; ) HANGUL SYLLABLE DDOENG
+B67A;B67A;1104 116C 11BD;B67A;1104 116C 11BD; # (뙺; 뙺; 뙺; 뙺; 뙺; ) HANGUL SYLLABLE DDOEJ
+B67B;B67B;1104 116C 11BE;B67B;1104 116C 11BE; # (뙻; 뙻; 뙻; 뙻; 뙻; ) HANGUL SYLLABLE DDOEC
+B67C;B67C;1104 116C 11BF;B67C;1104 116C 11BF; # (뙼; 뙼; 뙼; 뙼; 뙼; ) HANGUL SYLLABLE DDOEK
+B67D;B67D;1104 116C 11C0;B67D;1104 116C 11C0; # (뙽; 뙽; 뙽; 뙽; 뙽; ) HANGUL SYLLABLE DDOET
+B67E;B67E;1104 116C 11C1;B67E;1104 116C 11C1; # (뙾; 뙾; á„„á…¬á‡; 뙾; á„„á…¬á‡; ) HANGUL SYLLABLE DDOEP
+B67F;B67F;1104 116C 11C2;B67F;1104 116C 11C2; # (뙿; 뙿; 뙿; 뙿; 뙿; ) HANGUL SYLLABLE DDOEH
+B680;B680;1104 116D;B680;1104 116D; # (뚀; 뚀; 뚀; 뚀; 뚀; ) HANGUL SYLLABLE DDYO
+B681;B681;1104 116D 11A8;B681;1104 116D 11A8; # (ëš; ëš; 뚁; ëš; 뚁; ) HANGUL SYLLABLE DDYOG
+B682;B682;1104 116D 11A9;B682;1104 116D 11A9; # (뚂; 뚂; 뚂; 뚂; 뚂; ) HANGUL SYLLABLE DDYOGG
+B683;B683;1104 116D 11AA;B683;1104 116D 11AA; # (뚃; 뚃; 뚃; 뚃; 뚃; ) HANGUL SYLLABLE DDYOGS
+B684;B684;1104 116D 11AB;B684;1104 116D 11AB; # (뚄; 뚄; 뚄; 뚄; 뚄; ) HANGUL SYLLABLE DDYON
+B685;B685;1104 116D 11AC;B685;1104 116D 11AC; # (뚅; 뚅; 뚅; 뚅; 뚅; ) HANGUL SYLLABLE DDYONJ
+B686;B686;1104 116D 11AD;B686;1104 116D 11AD; # (뚆; 뚆; 뚆; 뚆; 뚆; ) HANGUL SYLLABLE DDYONH
+B687;B687;1104 116D 11AE;B687;1104 116D 11AE; # (뚇; 뚇; 뚇; 뚇; 뚇; ) HANGUL SYLLABLE DDYOD
+B688;B688;1104 116D 11AF;B688;1104 116D 11AF; # (뚈; 뚈; 뚈; 뚈; 뚈; ) HANGUL SYLLABLE DDYOL
+B689;B689;1104 116D 11B0;B689;1104 116D 11B0; # (뚉; 뚉; 뚉; 뚉; 뚉; ) HANGUL SYLLABLE DDYOLG
+B68A;B68A;1104 116D 11B1;B68A;1104 116D 11B1; # (뚊; 뚊; 뚊; 뚊; 뚊; ) HANGUL SYLLABLE DDYOLM
+B68B;B68B;1104 116D 11B2;B68B;1104 116D 11B2; # (뚋; 뚋; 뚋; 뚋; 뚋; ) HANGUL SYLLABLE DDYOLB
+B68C;B68C;1104 116D 11B3;B68C;1104 116D 11B3; # (뚌; 뚌; 뚌; 뚌; 뚌; ) HANGUL SYLLABLE DDYOLS
+B68D;B68D;1104 116D 11B4;B68D;1104 116D 11B4; # (ëš; ëš; 뚍; ëš; 뚍; ) HANGUL SYLLABLE DDYOLT
+B68E;B68E;1104 116D 11B5;B68E;1104 116D 11B5; # (뚎; 뚎; 뚎; 뚎; 뚎; ) HANGUL SYLLABLE DDYOLP
+B68F;B68F;1104 116D 11B6;B68F;1104 116D 11B6; # (ëš; ëš; 뚏; ëš; 뚏; ) HANGUL SYLLABLE DDYOLH
+B690;B690;1104 116D 11B7;B690;1104 116D 11B7; # (ëš; ëš; 뚐; ëš; 뚐; ) HANGUL SYLLABLE DDYOM
+B691;B691;1104 116D 11B8;B691;1104 116D 11B8; # (뚑; 뚑; 뚑; 뚑; 뚑; ) HANGUL SYLLABLE DDYOB
+B692;B692;1104 116D 11B9;B692;1104 116D 11B9; # (뚒; 뚒; 뚒; 뚒; 뚒; ) HANGUL SYLLABLE DDYOBS
+B693;B693;1104 116D 11BA;B693;1104 116D 11BA; # (뚓; 뚓; 뚓; 뚓; 뚓; ) HANGUL SYLLABLE DDYOS
+B694;B694;1104 116D 11BB;B694;1104 116D 11BB; # (뚔; 뚔; 뚔; 뚔; 뚔; ) HANGUL SYLLABLE DDYOSS
+B695;B695;1104 116D 11BC;B695;1104 116D 11BC; # (뚕; 뚕; 뚕; 뚕; 뚕; ) HANGUL SYLLABLE DDYONG
+B696;B696;1104 116D 11BD;B696;1104 116D 11BD; # (뚖; 뚖; 뚖; 뚖; 뚖; ) HANGUL SYLLABLE DDYOJ
+B697;B697;1104 116D 11BE;B697;1104 116D 11BE; # (뚗; 뚗; 뚗; 뚗; 뚗; ) HANGUL SYLLABLE DDYOC
+B698;B698;1104 116D 11BF;B698;1104 116D 11BF; # (뚘; 뚘; 뚘; 뚘; 뚘; ) HANGUL SYLLABLE DDYOK
+B699;B699;1104 116D 11C0;B699;1104 116D 11C0; # (뚙; 뚙; 뚙; 뚙; 뚙; ) HANGUL SYLLABLE DDYOT
+B69A;B69A;1104 116D 11C1;B69A;1104 116D 11C1; # (ëšš; ëšš; á„„á…­á‡; ëšš; á„„á…­á‡; ) HANGUL SYLLABLE DDYOP
+B69B;B69B;1104 116D 11C2;B69B;1104 116D 11C2; # (뚛; 뚛; 뚛; 뚛; 뚛; ) HANGUL SYLLABLE DDYOH
+B69C;B69C;1104 116E;B69C;1104 116E; # (뚜; 뚜; 뚜; 뚜; 뚜; ) HANGUL SYLLABLE DDU
+B69D;B69D;1104 116E 11A8;B69D;1104 116E 11A8; # (ëš; ëš; 뚝; ëš; 뚝; ) HANGUL SYLLABLE DDUG
+B69E;B69E;1104 116E 11A9;B69E;1104 116E 11A9; # (뚞; 뚞; 뚞; 뚞; 뚞; ) HANGUL SYLLABLE DDUGG
+B69F;B69F;1104 116E 11AA;B69F;1104 116E 11AA; # (뚟; 뚟; 뚟; 뚟; 뚟; ) HANGUL SYLLABLE DDUGS
+B6A0;B6A0;1104 116E 11AB;B6A0;1104 116E 11AB; # (뚠; 뚠; 뚠; 뚠; 뚠; ) HANGUL SYLLABLE DDUN
+B6A1;B6A1;1104 116E 11AC;B6A1;1104 116E 11AC; # (뚡; 뚡; 뚡; 뚡; 뚡; ) HANGUL SYLLABLE DDUNJ
+B6A2;B6A2;1104 116E 11AD;B6A2;1104 116E 11AD; # (뚢; 뚢; 뚢; 뚢; 뚢; ) HANGUL SYLLABLE DDUNH
+B6A3;B6A3;1104 116E 11AE;B6A3;1104 116E 11AE; # (뚣; 뚣; 뚣; 뚣; 뚣; ) HANGUL SYLLABLE DDUD
+B6A4;B6A4;1104 116E 11AF;B6A4;1104 116E 11AF; # (뚤; 뚤; 뚤; 뚤; 뚤; ) HANGUL SYLLABLE DDUL
+B6A5;B6A5;1104 116E 11B0;B6A5;1104 116E 11B0; # (뚥; 뚥; 뚥; 뚥; 뚥; ) HANGUL SYLLABLE DDULG
+B6A6;B6A6;1104 116E 11B1;B6A6;1104 116E 11B1; # (뚦; 뚦; 뚦; 뚦; 뚦; ) HANGUL SYLLABLE DDULM
+B6A7;B6A7;1104 116E 11B2;B6A7;1104 116E 11B2; # (뚧; 뚧; 뚧; 뚧; 뚧; ) HANGUL SYLLABLE DDULB
+B6A8;B6A8;1104 116E 11B3;B6A8;1104 116E 11B3; # (뚨; 뚨; 뚨; 뚨; 뚨; ) HANGUL SYLLABLE DDULS
+B6A9;B6A9;1104 116E 11B4;B6A9;1104 116E 11B4; # (뚩; 뚩; 뚩; 뚩; 뚩; ) HANGUL SYLLABLE DDULT
+B6AA;B6AA;1104 116E 11B5;B6AA;1104 116E 11B5; # (뚪; 뚪; 뚪; 뚪; 뚪; ) HANGUL SYLLABLE DDULP
+B6AB;B6AB;1104 116E 11B6;B6AB;1104 116E 11B6; # (뚫; 뚫; 뚫; 뚫; 뚫; ) HANGUL SYLLABLE DDULH
+B6AC;B6AC;1104 116E 11B7;B6AC;1104 116E 11B7; # (뚬; 뚬; 뚬; 뚬; 뚬; ) HANGUL SYLLABLE DDUM
+B6AD;B6AD;1104 116E 11B8;B6AD;1104 116E 11B8; # (뚭; 뚭; 뚭; 뚭; 뚭; ) HANGUL SYLLABLE DDUB
+B6AE;B6AE;1104 116E 11B9;B6AE;1104 116E 11B9; # (뚮; 뚮; 뚮; 뚮; 뚮; ) HANGUL SYLLABLE DDUBS
+B6AF;B6AF;1104 116E 11BA;B6AF;1104 116E 11BA; # (뚯; 뚯; 뚯; 뚯; 뚯; ) HANGUL SYLLABLE DDUS
+B6B0;B6B0;1104 116E 11BB;B6B0;1104 116E 11BB; # (뚰; 뚰; 뚰; 뚰; 뚰; ) HANGUL SYLLABLE DDUSS
+B6B1;B6B1;1104 116E 11BC;B6B1;1104 116E 11BC; # (뚱; 뚱; 뚱; 뚱; 뚱; ) HANGUL SYLLABLE DDUNG
+B6B2;B6B2;1104 116E 11BD;B6B2;1104 116E 11BD; # (뚲; 뚲; 뚲; 뚲; 뚲; ) HANGUL SYLLABLE DDUJ
+B6B3;B6B3;1104 116E 11BE;B6B3;1104 116E 11BE; # (뚳; 뚳; 뚳; 뚳; 뚳; ) HANGUL SYLLABLE DDUC
+B6B4;B6B4;1104 116E 11BF;B6B4;1104 116E 11BF; # (뚴; 뚴; 뚴; 뚴; 뚴; ) HANGUL SYLLABLE DDUK
+B6B5;B6B5;1104 116E 11C0;B6B5;1104 116E 11C0; # (뚵; 뚵; 뚵; 뚵; 뚵; ) HANGUL SYLLABLE DDUT
+B6B6;B6B6;1104 116E 11C1;B6B6;1104 116E 11C1; # (뚶; 뚶; á„„á…®á‡; 뚶; á„„á…®á‡; ) HANGUL SYLLABLE DDUP
+B6B7;B6B7;1104 116E 11C2;B6B7;1104 116E 11C2; # (뚷; 뚷; 뚷; 뚷; 뚷; ) HANGUL SYLLABLE DDUH
+B6B8;B6B8;1104 116F;B6B8;1104 116F; # (뚸; 뚸; 뚸; 뚸; 뚸; ) HANGUL SYLLABLE DDWEO
+B6B9;B6B9;1104 116F 11A8;B6B9;1104 116F 11A8; # (뚹; 뚹; 뚹; 뚹; 뚹; ) HANGUL SYLLABLE DDWEOG
+B6BA;B6BA;1104 116F 11A9;B6BA;1104 116F 11A9; # (뚺; 뚺; 뚺; 뚺; 뚺; ) HANGUL SYLLABLE DDWEOGG
+B6BB;B6BB;1104 116F 11AA;B6BB;1104 116F 11AA; # (뚻; 뚻; 뚻; 뚻; 뚻; ) HANGUL SYLLABLE DDWEOGS
+B6BC;B6BC;1104 116F 11AB;B6BC;1104 116F 11AB; # (뚼; 뚼; 뚼; 뚼; 뚼; ) HANGUL SYLLABLE DDWEON
+B6BD;B6BD;1104 116F 11AC;B6BD;1104 116F 11AC; # (뚽; 뚽; 뚽; 뚽; 뚽; ) HANGUL SYLLABLE DDWEONJ
+B6BE;B6BE;1104 116F 11AD;B6BE;1104 116F 11AD; # (뚾; 뚾; 뚾; 뚾; 뚾; ) HANGUL SYLLABLE DDWEONH
+B6BF;B6BF;1104 116F 11AE;B6BF;1104 116F 11AE; # (뚿; 뚿; 뚿; 뚿; 뚿; ) HANGUL SYLLABLE DDWEOD
+B6C0;B6C0;1104 116F 11AF;B6C0;1104 116F 11AF; # (뛀; 뛀; 뛀; 뛀; 뛀; ) HANGUL SYLLABLE DDWEOL
+B6C1;B6C1;1104 116F 11B0;B6C1;1104 116F 11B0; # (ë›; ë›; 뛁; ë›; 뛁; ) HANGUL SYLLABLE DDWEOLG
+B6C2;B6C2;1104 116F 11B1;B6C2;1104 116F 11B1; # (뛂; 뛂; 뛂; 뛂; 뛂; ) HANGUL SYLLABLE DDWEOLM
+B6C3;B6C3;1104 116F 11B2;B6C3;1104 116F 11B2; # (뛃; 뛃; 뛃; 뛃; 뛃; ) HANGUL SYLLABLE DDWEOLB
+B6C4;B6C4;1104 116F 11B3;B6C4;1104 116F 11B3; # (뛄; 뛄; 뛄; 뛄; 뛄; ) HANGUL SYLLABLE DDWEOLS
+B6C5;B6C5;1104 116F 11B4;B6C5;1104 116F 11B4; # (뛅; 뛅; 뛅; 뛅; 뛅; ) HANGUL SYLLABLE DDWEOLT
+B6C6;B6C6;1104 116F 11B5;B6C6;1104 116F 11B5; # (뛆; 뛆; 뛆; 뛆; 뛆; ) HANGUL SYLLABLE DDWEOLP
+B6C7;B6C7;1104 116F 11B6;B6C7;1104 116F 11B6; # (뛇; 뛇; 뛇; 뛇; 뛇; ) HANGUL SYLLABLE DDWEOLH
+B6C8;B6C8;1104 116F 11B7;B6C8;1104 116F 11B7; # (뛈; 뛈; 뛈; 뛈; 뛈; ) HANGUL SYLLABLE DDWEOM
+B6C9;B6C9;1104 116F 11B8;B6C9;1104 116F 11B8; # (뛉; 뛉; 뛉; 뛉; 뛉; ) HANGUL SYLLABLE DDWEOB
+B6CA;B6CA;1104 116F 11B9;B6CA;1104 116F 11B9; # (뛊; 뛊; 뛊; 뛊; 뛊; ) HANGUL SYLLABLE DDWEOBS
+B6CB;B6CB;1104 116F 11BA;B6CB;1104 116F 11BA; # (뛋; 뛋; 뛋; 뛋; 뛋; ) HANGUL SYLLABLE DDWEOS
+B6CC;B6CC;1104 116F 11BB;B6CC;1104 116F 11BB; # (뛌; 뛌; 뛌; 뛌; 뛌; ) HANGUL SYLLABLE DDWEOSS
+B6CD;B6CD;1104 116F 11BC;B6CD;1104 116F 11BC; # (ë›; ë›; 뛍; ë›; 뛍; ) HANGUL SYLLABLE DDWEONG
+B6CE;B6CE;1104 116F 11BD;B6CE;1104 116F 11BD; # (뛎; 뛎; 뛎; 뛎; 뛎; ) HANGUL SYLLABLE DDWEOJ
+B6CF;B6CF;1104 116F 11BE;B6CF;1104 116F 11BE; # (ë›; ë›; 뛏; ë›; 뛏; ) HANGUL SYLLABLE DDWEOC
+B6D0;B6D0;1104 116F 11BF;B6D0;1104 116F 11BF; # (ë›; ë›; 뛐; ë›; 뛐; ) HANGUL SYLLABLE DDWEOK
+B6D1;B6D1;1104 116F 11C0;B6D1;1104 116F 11C0; # (뛑; 뛑; 뛑; 뛑; 뛑; ) HANGUL SYLLABLE DDWEOT
+B6D2;B6D2;1104 116F 11C1;B6D2;1104 116F 11C1; # (ë›’; ë›’; á„„á…¯á‡; ë›’; á„„á…¯á‡; ) HANGUL SYLLABLE DDWEOP
+B6D3;B6D3;1104 116F 11C2;B6D3;1104 116F 11C2; # (뛓; 뛓; 뛓; 뛓; 뛓; ) HANGUL SYLLABLE DDWEOH
+B6D4;B6D4;1104 1170;B6D4;1104 1170; # (ë›”; ë›”; á„„á…°; ë›”; á„„á…°; ) HANGUL SYLLABLE DDWE
+B6D5;B6D5;1104 1170 11A8;B6D5;1104 1170 11A8; # (뛕; 뛕; 뛕; 뛕; 뛕; ) HANGUL SYLLABLE DDWEG
+B6D6;B6D6;1104 1170 11A9;B6D6;1104 1170 11A9; # (뛖; 뛖; 뛖; 뛖; 뛖; ) HANGUL SYLLABLE DDWEGG
+B6D7;B6D7;1104 1170 11AA;B6D7;1104 1170 11AA; # (뛗; 뛗; 뛗; 뛗; 뛗; ) HANGUL SYLLABLE DDWEGS
+B6D8;B6D8;1104 1170 11AB;B6D8;1104 1170 11AB; # (뛘; 뛘; 뛘; 뛘; 뛘; ) HANGUL SYLLABLE DDWEN
+B6D9;B6D9;1104 1170 11AC;B6D9;1104 1170 11AC; # (뛙; 뛙; 뛙; 뛙; 뛙; ) HANGUL SYLLABLE DDWENJ
+B6DA;B6DA;1104 1170 11AD;B6DA;1104 1170 11AD; # (뛚; 뛚; 뛚; 뛚; 뛚; ) HANGUL SYLLABLE DDWENH
+B6DB;B6DB;1104 1170 11AE;B6DB;1104 1170 11AE; # (뛛; 뛛; 뛛; 뛛; 뛛; ) HANGUL SYLLABLE DDWED
+B6DC;B6DC;1104 1170 11AF;B6DC;1104 1170 11AF; # (뛜; 뛜; 뛜; 뛜; 뛜; ) HANGUL SYLLABLE DDWEL
+B6DD;B6DD;1104 1170 11B0;B6DD;1104 1170 11B0; # (ë›; ë›; 뛝; ë›; 뛝; ) HANGUL SYLLABLE DDWELG
+B6DE;B6DE;1104 1170 11B1;B6DE;1104 1170 11B1; # (뛞; 뛞; 뛞; 뛞; 뛞; ) HANGUL SYLLABLE DDWELM
+B6DF;B6DF;1104 1170 11B2;B6DF;1104 1170 11B2; # (뛟; 뛟; 뛟; 뛟; 뛟; ) HANGUL SYLLABLE DDWELB
+B6E0;B6E0;1104 1170 11B3;B6E0;1104 1170 11B3; # (뛠; 뛠; 뛠; 뛠; 뛠; ) HANGUL SYLLABLE DDWELS
+B6E1;B6E1;1104 1170 11B4;B6E1;1104 1170 11B4; # (뛡; 뛡; 뛡; 뛡; 뛡; ) HANGUL SYLLABLE DDWELT
+B6E2;B6E2;1104 1170 11B5;B6E2;1104 1170 11B5; # (뛢; 뛢; 뛢; 뛢; 뛢; ) HANGUL SYLLABLE DDWELP
+B6E3;B6E3;1104 1170 11B6;B6E3;1104 1170 11B6; # (뛣; 뛣; 뛣; 뛣; 뛣; ) HANGUL SYLLABLE DDWELH
+B6E4;B6E4;1104 1170 11B7;B6E4;1104 1170 11B7; # (뛤; 뛤; 뛤; 뛤; 뛤; ) HANGUL SYLLABLE DDWEM
+B6E5;B6E5;1104 1170 11B8;B6E5;1104 1170 11B8; # (뛥; 뛥; 뛥; 뛥; 뛥; ) HANGUL SYLLABLE DDWEB
+B6E6;B6E6;1104 1170 11B9;B6E6;1104 1170 11B9; # (뛦; 뛦; 뛦; 뛦; 뛦; ) HANGUL SYLLABLE DDWEBS
+B6E7;B6E7;1104 1170 11BA;B6E7;1104 1170 11BA; # (뛧; 뛧; 뛧; 뛧; 뛧; ) HANGUL SYLLABLE DDWES
+B6E8;B6E8;1104 1170 11BB;B6E8;1104 1170 11BB; # (뛨; 뛨; 뛨; 뛨; 뛨; ) HANGUL SYLLABLE DDWESS
+B6E9;B6E9;1104 1170 11BC;B6E9;1104 1170 11BC; # (뛩; 뛩; 뛩; 뛩; 뛩; ) HANGUL SYLLABLE DDWENG
+B6EA;B6EA;1104 1170 11BD;B6EA;1104 1170 11BD; # (뛪; 뛪; 뛪; 뛪; 뛪; ) HANGUL SYLLABLE DDWEJ
+B6EB;B6EB;1104 1170 11BE;B6EB;1104 1170 11BE; # (뛫; 뛫; 뛫; 뛫; 뛫; ) HANGUL SYLLABLE DDWEC
+B6EC;B6EC;1104 1170 11BF;B6EC;1104 1170 11BF; # (뛬; 뛬; 뛬; 뛬; 뛬; ) HANGUL SYLLABLE DDWEK
+B6ED;B6ED;1104 1170 11C0;B6ED;1104 1170 11C0; # (뛭; 뛭; 뛭; 뛭; 뛭; ) HANGUL SYLLABLE DDWET
+B6EE;B6EE;1104 1170 11C1;B6EE;1104 1170 11C1; # (ë›®; ë›®; á„„á…°á‡; ë›®; á„„á…°á‡; ) HANGUL SYLLABLE DDWEP
+B6EF;B6EF;1104 1170 11C2;B6EF;1104 1170 11C2; # (뛯; 뛯; 뛯; 뛯; 뛯; ) HANGUL SYLLABLE DDWEH
+B6F0;B6F0;1104 1171;B6F0;1104 1171; # (ë›°; ë›°; á„„á…±; ë›°; á„„á…±; ) HANGUL SYLLABLE DDWI
+B6F1;B6F1;1104 1171 11A8;B6F1;1104 1171 11A8; # (뛱; 뛱; 뛱; 뛱; 뛱; ) HANGUL SYLLABLE DDWIG
+B6F2;B6F2;1104 1171 11A9;B6F2;1104 1171 11A9; # (뛲; 뛲; 뛲; 뛲; 뛲; ) HANGUL SYLLABLE DDWIGG
+B6F3;B6F3;1104 1171 11AA;B6F3;1104 1171 11AA; # (뛳; 뛳; 뛳; 뛳; 뛳; ) HANGUL SYLLABLE DDWIGS
+B6F4;B6F4;1104 1171 11AB;B6F4;1104 1171 11AB; # (뛴; 뛴; 뛴; 뛴; 뛴; ) HANGUL SYLLABLE DDWIN
+B6F5;B6F5;1104 1171 11AC;B6F5;1104 1171 11AC; # (뛵; 뛵; 뛵; 뛵; 뛵; ) HANGUL SYLLABLE DDWINJ
+B6F6;B6F6;1104 1171 11AD;B6F6;1104 1171 11AD; # (뛶; 뛶; 뛶; 뛶; 뛶; ) HANGUL SYLLABLE DDWINH
+B6F7;B6F7;1104 1171 11AE;B6F7;1104 1171 11AE; # (뛷; 뛷; 뛷; 뛷; 뛷; ) HANGUL SYLLABLE DDWID
+B6F8;B6F8;1104 1171 11AF;B6F8;1104 1171 11AF; # (뛸; 뛸; 뛸; 뛸; 뛸; ) HANGUL SYLLABLE DDWIL
+B6F9;B6F9;1104 1171 11B0;B6F9;1104 1171 11B0; # (뛹; 뛹; 뛹; 뛹; 뛹; ) HANGUL SYLLABLE DDWILG
+B6FA;B6FA;1104 1171 11B1;B6FA;1104 1171 11B1; # (뛺; 뛺; 뛺; 뛺; 뛺; ) HANGUL SYLLABLE DDWILM
+B6FB;B6FB;1104 1171 11B2;B6FB;1104 1171 11B2; # (뛻; 뛻; 뛻; 뛻; 뛻; ) HANGUL SYLLABLE DDWILB
+B6FC;B6FC;1104 1171 11B3;B6FC;1104 1171 11B3; # (뛼; 뛼; 뛼; 뛼; 뛼; ) HANGUL SYLLABLE DDWILS
+B6FD;B6FD;1104 1171 11B4;B6FD;1104 1171 11B4; # (뛽; 뛽; 뛽; 뛽; 뛽; ) HANGUL SYLLABLE DDWILT
+B6FE;B6FE;1104 1171 11B5;B6FE;1104 1171 11B5; # (뛾; 뛾; 뛾; 뛾; 뛾; ) HANGUL SYLLABLE DDWILP
+B6FF;B6FF;1104 1171 11B6;B6FF;1104 1171 11B6; # (뛿; 뛿; 뛿; 뛿; 뛿; ) HANGUL SYLLABLE DDWILH
+B700;B700;1104 1171 11B7;B700;1104 1171 11B7; # (뜀; 뜀; 뜀; 뜀; 뜀; ) HANGUL SYLLABLE DDWIM
+B701;B701;1104 1171 11B8;B701;1104 1171 11B8; # (ëœ; ëœ; 뜁; ëœ; 뜁; ) HANGUL SYLLABLE DDWIB
+B702;B702;1104 1171 11B9;B702;1104 1171 11B9; # (뜂; 뜂; 뜂; 뜂; 뜂; ) HANGUL SYLLABLE DDWIBS
+B703;B703;1104 1171 11BA;B703;1104 1171 11BA; # (뜃; 뜃; 뜃; 뜃; 뜃; ) HANGUL SYLLABLE DDWIS
+B704;B704;1104 1171 11BB;B704;1104 1171 11BB; # (뜄; 뜄; 뜄; 뜄; 뜄; ) HANGUL SYLLABLE DDWISS
+B705;B705;1104 1171 11BC;B705;1104 1171 11BC; # (뜅; 뜅; 뜅; 뜅; 뜅; ) HANGUL SYLLABLE DDWING
+B706;B706;1104 1171 11BD;B706;1104 1171 11BD; # (뜆; 뜆; 뜆; 뜆; 뜆; ) HANGUL SYLLABLE DDWIJ
+B707;B707;1104 1171 11BE;B707;1104 1171 11BE; # (뜇; 뜇; 뜇; 뜇; 뜇; ) HANGUL SYLLABLE DDWIC
+B708;B708;1104 1171 11BF;B708;1104 1171 11BF; # (뜈; 뜈; 뜈; 뜈; 뜈; ) HANGUL SYLLABLE DDWIK
+B709;B709;1104 1171 11C0;B709;1104 1171 11C0; # (뜉; 뜉; 뜉; 뜉; 뜉; ) HANGUL SYLLABLE DDWIT
+B70A;B70A;1104 1171 11C1;B70A;1104 1171 11C1; # (뜊; 뜊; á„„á…±á‡; 뜊; á„„á…±á‡; ) HANGUL SYLLABLE DDWIP
+B70B;B70B;1104 1171 11C2;B70B;1104 1171 11C2; # (뜋; 뜋; 뜋; 뜋; 뜋; ) HANGUL SYLLABLE DDWIH
+B70C;B70C;1104 1172;B70C;1104 1172; # (뜌; 뜌; 뜌; 뜌; 뜌; ) HANGUL SYLLABLE DDYU
+B70D;B70D;1104 1172 11A8;B70D;1104 1172 11A8; # (ëœ; ëœ; 뜍; ëœ; 뜍; ) HANGUL SYLLABLE DDYUG
+B70E;B70E;1104 1172 11A9;B70E;1104 1172 11A9; # (뜎; 뜎; 뜎; 뜎; 뜎; ) HANGUL SYLLABLE DDYUGG
+B70F;B70F;1104 1172 11AA;B70F;1104 1172 11AA; # (ëœ; ëœ; 뜏; ëœ; 뜏; ) HANGUL SYLLABLE DDYUGS
+B710;B710;1104 1172 11AB;B710;1104 1172 11AB; # (ëœ; ëœ; 뜐; ëœ; 뜐; ) HANGUL SYLLABLE DDYUN
+B711;B711;1104 1172 11AC;B711;1104 1172 11AC; # (뜑; 뜑; 뜑; 뜑; 뜑; ) HANGUL SYLLABLE DDYUNJ
+B712;B712;1104 1172 11AD;B712;1104 1172 11AD; # (뜒; 뜒; 뜒; 뜒; 뜒; ) HANGUL SYLLABLE DDYUNH
+B713;B713;1104 1172 11AE;B713;1104 1172 11AE; # (뜓; 뜓; 뜓; 뜓; 뜓; ) HANGUL SYLLABLE DDYUD
+B714;B714;1104 1172 11AF;B714;1104 1172 11AF; # (뜔; 뜔; 뜔; 뜔; 뜔; ) HANGUL SYLLABLE DDYUL
+B715;B715;1104 1172 11B0;B715;1104 1172 11B0; # (뜕; 뜕; 뜕; 뜕; 뜕; ) HANGUL SYLLABLE DDYULG
+B716;B716;1104 1172 11B1;B716;1104 1172 11B1; # (뜖; 뜖; 뜖; 뜖; 뜖; ) HANGUL SYLLABLE DDYULM
+B717;B717;1104 1172 11B2;B717;1104 1172 11B2; # (뜗; 뜗; 뜗; 뜗; 뜗; ) HANGUL SYLLABLE DDYULB
+B718;B718;1104 1172 11B3;B718;1104 1172 11B3; # (뜘; 뜘; 뜘; 뜘; 뜘; ) HANGUL SYLLABLE DDYULS
+B719;B719;1104 1172 11B4;B719;1104 1172 11B4; # (뜙; 뜙; 뜙; 뜙; 뜙; ) HANGUL SYLLABLE DDYULT
+B71A;B71A;1104 1172 11B5;B71A;1104 1172 11B5; # (뜚; 뜚; 뜚; 뜚; 뜚; ) HANGUL SYLLABLE DDYULP
+B71B;B71B;1104 1172 11B6;B71B;1104 1172 11B6; # (뜛; 뜛; 뜛; 뜛; 뜛; ) HANGUL SYLLABLE DDYULH
+B71C;B71C;1104 1172 11B7;B71C;1104 1172 11B7; # (뜜; 뜜; 뜜; 뜜; 뜜; ) HANGUL SYLLABLE DDYUM
+B71D;B71D;1104 1172 11B8;B71D;1104 1172 11B8; # (ëœ; ëœ; 뜝; ëœ; 뜝; ) HANGUL SYLLABLE DDYUB
+B71E;B71E;1104 1172 11B9;B71E;1104 1172 11B9; # (뜞; 뜞; 뜞; 뜞; 뜞; ) HANGUL SYLLABLE DDYUBS
+B71F;B71F;1104 1172 11BA;B71F;1104 1172 11BA; # (뜟; 뜟; 뜟; 뜟; 뜟; ) HANGUL SYLLABLE DDYUS
+B720;B720;1104 1172 11BB;B720;1104 1172 11BB; # (뜠; 뜠; 뜠; 뜠; 뜠; ) HANGUL SYLLABLE DDYUSS
+B721;B721;1104 1172 11BC;B721;1104 1172 11BC; # (뜡; 뜡; 뜡; 뜡; 뜡; ) HANGUL SYLLABLE DDYUNG
+B722;B722;1104 1172 11BD;B722;1104 1172 11BD; # (뜢; 뜢; 뜢; 뜢; 뜢; ) HANGUL SYLLABLE DDYUJ
+B723;B723;1104 1172 11BE;B723;1104 1172 11BE; # (뜣; 뜣; 뜣; 뜣; 뜣; ) HANGUL SYLLABLE DDYUC
+B724;B724;1104 1172 11BF;B724;1104 1172 11BF; # (뜤; 뜤; 뜤; 뜤; 뜤; ) HANGUL SYLLABLE DDYUK
+B725;B725;1104 1172 11C0;B725;1104 1172 11C0; # (뜥; 뜥; 뜥; 뜥; 뜥; ) HANGUL SYLLABLE DDYUT
+B726;B726;1104 1172 11C1;B726;1104 1172 11C1; # (뜦; 뜦; á„„á…²á‡; 뜦; á„„á…²á‡; ) HANGUL SYLLABLE DDYUP
+B727;B727;1104 1172 11C2;B727;1104 1172 11C2; # (뜧; 뜧; 뜧; 뜧; 뜧; ) HANGUL SYLLABLE DDYUH
+B728;B728;1104 1173;B728;1104 1173; # (뜨; 뜨; 뜨; 뜨; 뜨; ) HANGUL SYLLABLE DDEU
+B729;B729;1104 1173 11A8;B729;1104 1173 11A8; # (뜩; 뜩; 뜩; 뜩; 뜩; ) HANGUL SYLLABLE DDEUG
+B72A;B72A;1104 1173 11A9;B72A;1104 1173 11A9; # (뜪; 뜪; 뜪; 뜪; 뜪; ) HANGUL SYLLABLE DDEUGG
+B72B;B72B;1104 1173 11AA;B72B;1104 1173 11AA; # (뜫; 뜫; 뜫; 뜫; 뜫; ) HANGUL SYLLABLE DDEUGS
+B72C;B72C;1104 1173 11AB;B72C;1104 1173 11AB; # (뜬; 뜬; 뜬; 뜬; 뜬; ) HANGUL SYLLABLE DDEUN
+B72D;B72D;1104 1173 11AC;B72D;1104 1173 11AC; # (뜭; 뜭; 뜭; 뜭; 뜭; ) HANGUL SYLLABLE DDEUNJ
+B72E;B72E;1104 1173 11AD;B72E;1104 1173 11AD; # (뜮; 뜮; 뜮; 뜮; 뜮; ) HANGUL SYLLABLE DDEUNH
+B72F;B72F;1104 1173 11AE;B72F;1104 1173 11AE; # (뜯; 뜯; 뜯; 뜯; 뜯; ) HANGUL SYLLABLE DDEUD
+B730;B730;1104 1173 11AF;B730;1104 1173 11AF; # (뜰; 뜰; 뜰; 뜰; 뜰; ) HANGUL SYLLABLE DDEUL
+B731;B731;1104 1173 11B0;B731;1104 1173 11B0; # (뜱; 뜱; 뜱; 뜱; 뜱; ) HANGUL SYLLABLE DDEULG
+B732;B732;1104 1173 11B1;B732;1104 1173 11B1; # (뜲; 뜲; 뜲; 뜲; 뜲; ) HANGUL SYLLABLE DDEULM
+B733;B733;1104 1173 11B2;B733;1104 1173 11B2; # (뜳; 뜳; 뜳; 뜳; 뜳; ) HANGUL SYLLABLE DDEULB
+B734;B734;1104 1173 11B3;B734;1104 1173 11B3; # (뜴; 뜴; 뜴; 뜴; 뜴; ) HANGUL SYLLABLE DDEULS
+B735;B735;1104 1173 11B4;B735;1104 1173 11B4; # (뜵; 뜵; 뜵; 뜵; 뜵; ) HANGUL SYLLABLE DDEULT
+B736;B736;1104 1173 11B5;B736;1104 1173 11B5; # (뜶; 뜶; 뜶; 뜶; 뜶; ) HANGUL SYLLABLE DDEULP
+B737;B737;1104 1173 11B6;B737;1104 1173 11B6; # (뜷; 뜷; 뜷; 뜷; 뜷; ) HANGUL SYLLABLE DDEULH
+B738;B738;1104 1173 11B7;B738;1104 1173 11B7; # (뜸; 뜸; 뜸; 뜸; 뜸; ) HANGUL SYLLABLE DDEUM
+B739;B739;1104 1173 11B8;B739;1104 1173 11B8; # (뜹; 뜹; 뜹; 뜹; 뜹; ) HANGUL SYLLABLE DDEUB
+B73A;B73A;1104 1173 11B9;B73A;1104 1173 11B9; # (뜺; 뜺; 뜺; 뜺; 뜺; ) HANGUL SYLLABLE DDEUBS
+B73B;B73B;1104 1173 11BA;B73B;1104 1173 11BA; # (뜻; 뜻; 뜻; 뜻; 뜻; ) HANGUL SYLLABLE DDEUS
+B73C;B73C;1104 1173 11BB;B73C;1104 1173 11BB; # (뜼; 뜼; 뜼; 뜼; 뜼; ) HANGUL SYLLABLE DDEUSS
+B73D;B73D;1104 1173 11BC;B73D;1104 1173 11BC; # (뜽; 뜽; 뜽; 뜽; 뜽; ) HANGUL SYLLABLE DDEUNG
+B73E;B73E;1104 1173 11BD;B73E;1104 1173 11BD; # (뜾; 뜾; 뜾; 뜾; 뜾; ) HANGUL SYLLABLE DDEUJ
+B73F;B73F;1104 1173 11BE;B73F;1104 1173 11BE; # (뜿; 뜿; 뜿; 뜿; 뜿; ) HANGUL SYLLABLE DDEUC
+B740;B740;1104 1173 11BF;B740;1104 1173 11BF; # (ë€; ë€; 띀; ë€; 띀; ) HANGUL SYLLABLE DDEUK
+B741;B741;1104 1173 11C0;B741;1104 1173 11C0; # (ë; ë; 띁; ë; 띁; ) HANGUL SYLLABLE DDEUT
+B742;B742;1104 1173 11C1;B742;1104 1173 11C1; # (ë‚; ë‚; á„„á…³á‡; ë‚; á„„á…³á‡; ) HANGUL SYLLABLE DDEUP
+B743;B743;1104 1173 11C2;B743;1104 1173 11C2; # (ëƒ; ëƒ; 띃; ëƒ; 띃; ) HANGUL SYLLABLE DDEUH
+B744;B744;1104 1174;B744;1104 1174; # (ë„; ë„; á„„á…´; ë„; á„„á…´; ) HANGUL SYLLABLE DDYI
+B745;B745;1104 1174 11A8;B745;1104 1174 11A8; # (ë…; ë…; 띅; ë…; 띅; ) HANGUL SYLLABLE DDYIG
+B746;B746;1104 1174 11A9;B746;1104 1174 11A9; # (ë†; ë†; 띆; ë†; 띆; ) HANGUL SYLLABLE DDYIGG
+B747;B747;1104 1174 11AA;B747;1104 1174 11AA; # (ë‡; ë‡; 띇; ë‡; 띇; ) HANGUL SYLLABLE DDYIGS
+B748;B748;1104 1174 11AB;B748;1104 1174 11AB; # (ëˆ; ëˆ; 띈; ëˆ; 띈; ) HANGUL SYLLABLE DDYIN
+B749;B749;1104 1174 11AC;B749;1104 1174 11AC; # (ë‰; ë‰; 띉; ë‰; 띉; ) HANGUL SYLLABLE DDYINJ
+B74A;B74A;1104 1174 11AD;B74A;1104 1174 11AD; # (ëŠ; ëŠ; 띊; ëŠ; 띊; ) HANGUL SYLLABLE DDYINH
+B74B;B74B;1104 1174 11AE;B74B;1104 1174 11AE; # (ë‹; ë‹; 띋; ë‹; 띋; ) HANGUL SYLLABLE DDYID
+B74C;B74C;1104 1174 11AF;B74C;1104 1174 11AF; # (ëŒ; ëŒ; 띌; ëŒ; 띌; ) HANGUL SYLLABLE DDYIL
+B74D;B74D;1104 1174 11B0;B74D;1104 1174 11B0; # (ë; ë; 띍; ë; 띍; ) HANGUL SYLLABLE DDYILG
+B74E;B74E;1104 1174 11B1;B74E;1104 1174 11B1; # (ëŽ; ëŽ; 띎; ëŽ; 띎; ) HANGUL SYLLABLE DDYILM
+B74F;B74F;1104 1174 11B2;B74F;1104 1174 11B2; # (ë; ë; 띏; ë; 띏; ) HANGUL SYLLABLE DDYILB
+B750;B750;1104 1174 11B3;B750;1104 1174 11B3; # (ë; ë; 띐; ë; 띐; ) HANGUL SYLLABLE DDYILS
+B751;B751;1104 1174 11B4;B751;1104 1174 11B4; # (ë‘; ë‘; 띑; ë‘; 띑; ) HANGUL SYLLABLE DDYILT
+B752;B752;1104 1174 11B5;B752;1104 1174 11B5; # (ë’; ë’; 띒; ë’; 띒; ) HANGUL SYLLABLE DDYILP
+B753;B753;1104 1174 11B6;B753;1104 1174 11B6; # (ë“; ë“; 띓; ë“; 띓; ) HANGUL SYLLABLE DDYILH
+B754;B754;1104 1174 11B7;B754;1104 1174 11B7; # (ë”; ë”; 띔; ë”; 띔; ) HANGUL SYLLABLE DDYIM
+B755;B755;1104 1174 11B8;B755;1104 1174 11B8; # (ë•; ë•; 띕; ë•; 띕; ) HANGUL SYLLABLE DDYIB
+B756;B756;1104 1174 11B9;B756;1104 1174 11B9; # (ë–; ë–; 띖; ë–; 띖; ) HANGUL SYLLABLE DDYIBS
+B757;B757;1104 1174 11BA;B757;1104 1174 11BA; # (ë—; ë—; 띗; ë—; 띗; ) HANGUL SYLLABLE DDYIS
+B758;B758;1104 1174 11BB;B758;1104 1174 11BB; # (ë˜; ë˜; 띘; ë˜; 띘; ) HANGUL SYLLABLE DDYISS
+B759;B759;1104 1174 11BC;B759;1104 1174 11BC; # (ë™; ë™; 띙; ë™; 띙; ) HANGUL SYLLABLE DDYING
+B75A;B75A;1104 1174 11BD;B75A;1104 1174 11BD; # (ëš; ëš; 띚; ëš; 띚; ) HANGUL SYLLABLE DDYIJ
+B75B;B75B;1104 1174 11BE;B75B;1104 1174 11BE; # (ë›; ë›; 띛; ë›; 띛; ) HANGUL SYLLABLE DDYIC
+B75C;B75C;1104 1174 11BF;B75C;1104 1174 11BF; # (ëœ; ëœ; 띜; ëœ; 띜; ) HANGUL SYLLABLE DDYIK
+B75D;B75D;1104 1174 11C0;B75D;1104 1174 11C0; # (ë; ë; 띝; ë; 띝; ) HANGUL SYLLABLE DDYIT
+B75E;B75E;1104 1174 11C1;B75E;1104 1174 11C1; # (ëž; ëž; á„„á…´á‡; ëž; á„„á…´á‡; ) HANGUL SYLLABLE DDYIP
+B75F;B75F;1104 1174 11C2;B75F;1104 1174 11C2; # (ëŸ; ëŸ; 띟; ëŸ; 띟; ) HANGUL SYLLABLE DDYIH
+B760;B760;1104 1175;B760;1104 1175; # (ë ; ë ; á„„á…µ; ë ; á„„á…µ; ) HANGUL SYLLABLE DDI
+B761;B761;1104 1175 11A8;B761;1104 1175 11A8; # (ë¡; ë¡; 띡; ë¡; 띡; ) HANGUL SYLLABLE DDIG
+B762;B762;1104 1175 11A9;B762;1104 1175 11A9; # (ë¢; ë¢; 띢; ë¢; 띢; ) HANGUL SYLLABLE DDIGG
+B763;B763;1104 1175 11AA;B763;1104 1175 11AA; # (ë£; ë£; 띣; ë£; 띣; ) HANGUL SYLLABLE DDIGS
+B764;B764;1104 1175 11AB;B764;1104 1175 11AB; # (ë¤; ë¤; 띤; ë¤; 띤; ) HANGUL SYLLABLE DDIN
+B765;B765;1104 1175 11AC;B765;1104 1175 11AC; # (ë¥; ë¥; 띥; ë¥; 띥; ) HANGUL SYLLABLE DDINJ
+B766;B766;1104 1175 11AD;B766;1104 1175 11AD; # (ë¦; ë¦; 띦; ë¦; 띦; ) HANGUL SYLLABLE DDINH
+B767;B767;1104 1175 11AE;B767;1104 1175 11AE; # (ë§; ë§; 띧; ë§; 띧; ) HANGUL SYLLABLE DDID
+B768;B768;1104 1175 11AF;B768;1104 1175 11AF; # (ë¨; ë¨; 띨; ë¨; 띨; ) HANGUL SYLLABLE DDIL
+B769;B769;1104 1175 11B0;B769;1104 1175 11B0; # (ë©; ë©; 띩; ë©; 띩; ) HANGUL SYLLABLE DDILG
+B76A;B76A;1104 1175 11B1;B76A;1104 1175 11B1; # (ëª; ëª; 띪; ëª; 띪; ) HANGUL SYLLABLE DDILM
+B76B;B76B;1104 1175 11B2;B76B;1104 1175 11B2; # (ë«; ë«; 띫; ë«; 띫; ) HANGUL SYLLABLE DDILB
+B76C;B76C;1104 1175 11B3;B76C;1104 1175 11B3; # (ë¬; ë¬; 띬; ë¬; 띬; ) HANGUL SYLLABLE DDILS
+B76D;B76D;1104 1175 11B4;B76D;1104 1175 11B4; # (ë­; ë­; 띭; ë­; 띭; ) HANGUL SYLLABLE DDILT
+B76E;B76E;1104 1175 11B5;B76E;1104 1175 11B5; # (ë®; ë®; 띮; ë®; 띮; ) HANGUL SYLLABLE DDILP
+B76F;B76F;1104 1175 11B6;B76F;1104 1175 11B6; # (ë¯; ë¯; 띯; ë¯; 띯; ) HANGUL SYLLABLE DDILH
+B770;B770;1104 1175 11B7;B770;1104 1175 11B7; # (ë°; ë°; 띰; ë°; 띰; ) HANGUL SYLLABLE DDIM
+B771;B771;1104 1175 11B8;B771;1104 1175 11B8; # (ë±; ë±; 띱; ë±; 띱; ) HANGUL SYLLABLE DDIB
+B772;B772;1104 1175 11B9;B772;1104 1175 11B9; # (ë²; ë²; 띲; ë²; 띲; ) HANGUL SYLLABLE DDIBS
+B773;B773;1104 1175 11BA;B773;1104 1175 11BA; # (ë³; ë³; 띳; ë³; 띳; ) HANGUL SYLLABLE DDIS
+B774;B774;1104 1175 11BB;B774;1104 1175 11BB; # (ë´; ë´; 띴; ë´; 띴; ) HANGUL SYLLABLE DDISS
+B775;B775;1104 1175 11BC;B775;1104 1175 11BC; # (ëµ; ëµ; 띵; ëµ; 띵; ) HANGUL SYLLABLE DDING
+B776;B776;1104 1175 11BD;B776;1104 1175 11BD; # (ë¶; ë¶; 띶; ë¶; 띶; ) HANGUL SYLLABLE DDIJ
+B777;B777;1104 1175 11BE;B777;1104 1175 11BE; # (ë·; ë·; 띷; ë·; 띷; ) HANGUL SYLLABLE DDIC
+B778;B778;1104 1175 11BF;B778;1104 1175 11BF; # (ë¸; ë¸; 띸; ë¸; 띸; ) HANGUL SYLLABLE DDIK
+B779;B779;1104 1175 11C0;B779;1104 1175 11C0; # (ë¹; ë¹; 띹; ë¹; 띹; ) HANGUL SYLLABLE DDIT
+B77A;B77A;1104 1175 11C1;B77A;1104 1175 11C1; # (ëº; ëº; á„„á…µá‡; ëº; á„„á…µá‡; ) HANGUL SYLLABLE DDIP
+B77B;B77B;1104 1175 11C2;B77B;1104 1175 11C2; # (ë»; ë»; 띻; ë»; 띻; ) HANGUL SYLLABLE DDIH
+B77C;B77C;1105 1161;B77C;1105 1161; # (ë¼; ë¼; á„…á…¡; ë¼; á„…á…¡; ) HANGUL SYLLABLE RA
+B77D;B77D;1105 1161 11A8;B77D;1105 1161 11A8; # (ë½; ë½; 락; ë½; 락; ) HANGUL SYLLABLE RAG
+B77E;B77E;1105 1161 11A9;B77E;1105 1161 11A9; # (ë¾; ë¾; 띾; ë¾; 띾; ) HANGUL SYLLABLE RAGG
+B77F;B77F;1105 1161 11AA;B77F;1105 1161 11AA; # (ë¿; ë¿; 띿; ë¿; 띿; ) HANGUL SYLLABLE RAGS
+B780;B780;1105 1161 11AB;B780;1105 1161 11AB; # (란; 란; 란; 란; 란; ) HANGUL SYLLABLE RAN
+B781;B781;1105 1161 11AC;B781;1105 1161 11AC; # (ëž; ëž; 랁; ëž; 랁; ) HANGUL SYLLABLE RANJ
+B782;B782;1105 1161 11AD;B782;1105 1161 11AD; # (랂; 랂; 랂; 랂; 랂; ) HANGUL SYLLABLE RANH
+B783;B783;1105 1161 11AE;B783;1105 1161 11AE; # (랃; 랃; 랃; 랃; 랃; ) HANGUL SYLLABLE RAD
+B784;B784;1105 1161 11AF;B784;1105 1161 11AF; # (랄; 랄; 랄; 랄; 랄; ) HANGUL SYLLABLE RAL
+B785;B785;1105 1161 11B0;B785;1105 1161 11B0; # (랅; 랅; 랅; 랅; 랅; ) HANGUL SYLLABLE RALG
+B786;B786;1105 1161 11B1;B786;1105 1161 11B1; # (랆; 랆; 랆; 랆; 랆; ) HANGUL SYLLABLE RALM
+B787;B787;1105 1161 11B2;B787;1105 1161 11B2; # (랇; 랇; 랇; 랇; 랇; ) HANGUL SYLLABLE RALB
+B788;B788;1105 1161 11B3;B788;1105 1161 11B3; # (랈; 랈; 랈; 랈; 랈; ) HANGUL SYLLABLE RALS
+B789;B789;1105 1161 11B4;B789;1105 1161 11B4; # (랉; 랉; 랉; 랉; 랉; ) HANGUL SYLLABLE RALT
+B78A;B78A;1105 1161 11B5;B78A;1105 1161 11B5; # (랊; 랊; 랊; 랊; 랊; ) HANGUL SYLLABLE RALP
+B78B;B78B;1105 1161 11B6;B78B;1105 1161 11B6; # (랋; 랋; 랋; 랋; 랋; ) HANGUL SYLLABLE RALH
+B78C;B78C;1105 1161 11B7;B78C;1105 1161 11B7; # (람; 람; 람; 람; 람; ) HANGUL SYLLABLE RAM
+B78D;B78D;1105 1161 11B8;B78D;1105 1161 11B8; # (ëž; ëž; 랍; ëž; 랍; ) HANGUL SYLLABLE RAB
+B78E;B78E;1105 1161 11B9;B78E;1105 1161 11B9; # (랎; 랎; 랎; 랎; 랎; ) HANGUL SYLLABLE RABS
+B78F;B78F;1105 1161 11BA;B78F;1105 1161 11BA; # (ëž; ëž; 랏; ëž; 랏; ) HANGUL SYLLABLE RAS
+B790;B790;1105 1161 11BB;B790;1105 1161 11BB; # (ëž; ëž; 랐; ëž; 랐; ) HANGUL SYLLABLE RASS
+B791;B791;1105 1161 11BC;B791;1105 1161 11BC; # (랑; 랑; 랑; 랑; 랑; ) HANGUL SYLLABLE RANG
+B792;B792;1105 1161 11BD;B792;1105 1161 11BD; # (랒; 랒; 랒; 랒; 랒; ) HANGUL SYLLABLE RAJ
+B793;B793;1105 1161 11BE;B793;1105 1161 11BE; # (랓; 랓; 랓; 랓; 랓; ) HANGUL SYLLABLE RAC
+B794;B794;1105 1161 11BF;B794;1105 1161 11BF; # (랔; 랔; 랔; 랔; 랔; ) HANGUL SYLLABLE RAK
+B795;B795;1105 1161 11C0;B795;1105 1161 11C0; # (랕; 랕; 랕; 랕; 랕; ) HANGUL SYLLABLE RAT
+B796;B796;1105 1161 11C1;B796;1105 1161 11C1; # (ëž–; ëž–; á„…á…¡á‡; ëž–; á„…á…¡á‡; ) HANGUL SYLLABLE RAP
+B797;B797;1105 1161 11C2;B797;1105 1161 11C2; # (랗; 랗; 랗; 랗; 랗; ) HANGUL SYLLABLE RAH
+B798;B798;1105 1162;B798;1105 1162; # (래; 래; 래; 래; 래; ) HANGUL SYLLABLE RAE
+B799;B799;1105 1162 11A8;B799;1105 1162 11A8; # (랙; 랙; 랙; 랙; 랙; ) HANGUL SYLLABLE RAEG
+B79A;B79A;1105 1162 11A9;B79A;1105 1162 11A9; # (랚; 랚; 랚; 랚; 랚; ) HANGUL SYLLABLE RAEGG
+B79B;B79B;1105 1162 11AA;B79B;1105 1162 11AA; # (랛; 랛; 랛; 랛; 랛; ) HANGUL SYLLABLE RAEGS
+B79C;B79C;1105 1162 11AB;B79C;1105 1162 11AB; # (랜; 랜; 랜; 랜; 랜; ) HANGUL SYLLABLE RAEN
+B79D;B79D;1105 1162 11AC;B79D;1105 1162 11AC; # (ëž; ëž; 랝; ëž; 랝; ) HANGUL SYLLABLE RAENJ
+B79E;B79E;1105 1162 11AD;B79E;1105 1162 11AD; # (랞; 랞; 랞; 랞; 랞; ) HANGUL SYLLABLE RAENH
+B79F;B79F;1105 1162 11AE;B79F;1105 1162 11AE; # (랟; 랟; 랟; 랟; 랟; ) HANGUL SYLLABLE RAED
+B7A0;B7A0;1105 1162 11AF;B7A0;1105 1162 11AF; # (랠; 랠; 랠; 랠; 랠; ) HANGUL SYLLABLE RAEL
+B7A1;B7A1;1105 1162 11B0;B7A1;1105 1162 11B0; # (랡; 랡; 랡; 랡; 랡; ) HANGUL SYLLABLE RAELG
+B7A2;B7A2;1105 1162 11B1;B7A2;1105 1162 11B1; # (랢; 랢; 랢; 랢; 랢; ) HANGUL SYLLABLE RAELM
+B7A3;B7A3;1105 1162 11B2;B7A3;1105 1162 11B2; # (랣; 랣; 랣; 랣; 랣; ) HANGUL SYLLABLE RAELB
+B7A4;B7A4;1105 1162 11B3;B7A4;1105 1162 11B3; # (랤; 랤; 랤; 랤; 랤; ) HANGUL SYLLABLE RAELS
+B7A5;B7A5;1105 1162 11B4;B7A5;1105 1162 11B4; # (랥; 랥; 랥; 랥; 랥; ) HANGUL SYLLABLE RAELT
+B7A6;B7A6;1105 1162 11B5;B7A6;1105 1162 11B5; # (랦; 랦; 랦; 랦; 랦; ) HANGUL SYLLABLE RAELP
+B7A7;B7A7;1105 1162 11B6;B7A7;1105 1162 11B6; # (랧; 랧; 랧; 랧; 랧; ) HANGUL SYLLABLE RAELH
+B7A8;B7A8;1105 1162 11B7;B7A8;1105 1162 11B7; # (램; 램; 램; 램; 램; ) HANGUL SYLLABLE RAEM
+B7A9;B7A9;1105 1162 11B8;B7A9;1105 1162 11B8; # (랩; 랩; 랩; 랩; 랩; ) HANGUL SYLLABLE RAEB
+B7AA;B7AA;1105 1162 11B9;B7AA;1105 1162 11B9; # (랪; 랪; 랪; 랪; 랪; ) HANGUL SYLLABLE RAEBS
+B7AB;B7AB;1105 1162 11BA;B7AB;1105 1162 11BA; # (랫; 랫; 랫; 랫; 랫; ) HANGUL SYLLABLE RAES
+B7AC;B7AC;1105 1162 11BB;B7AC;1105 1162 11BB; # (랬; 랬; 랬; 랬; 랬; ) HANGUL SYLLABLE RAESS
+B7AD;B7AD;1105 1162 11BC;B7AD;1105 1162 11BC; # (랭; 랭; 랭; 랭; 랭; ) HANGUL SYLLABLE RAENG
+B7AE;B7AE;1105 1162 11BD;B7AE;1105 1162 11BD; # (랮; 랮; 랮; 랮; 랮; ) HANGUL SYLLABLE RAEJ
+B7AF;B7AF;1105 1162 11BE;B7AF;1105 1162 11BE; # (랯; 랯; 랯; 랯; 랯; ) HANGUL SYLLABLE RAEC
+B7B0;B7B0;1105 1162 11BF;B7B0;1105 1162 11BF; # (랰; 랰; 랰; 랰; 랰; ) HANGUL SYLLABLE RAEK
+B7B1;B7B1;1105 1162 11C0;B7B1;1105 1162 11C0; # (랱; 랱; 랱; 랱; 랱; ) HANGUL SYLLABLE RAET
+B7B2;B7B2;1105 1162 11C1;B7B2;1105 1162 11C1; # (ëž²; ëž²; á„…á…¢á‡; ëž²; á„…á…¢á‡; ) HANGUL SYLLABLE RAEP
+B7B3;B7B3;1105 1162 11C2;B7B3;1105 1162 11C2; # (랳; 랳; 랳; 랳; 랳; ) HANGUL SYLLABLE RAEH
+B7B4;B7B4;1105 1163;B7B4;1105 1163; # (ëž´; ëž´; á„…á…£; ëž´; á„…á…£; ) HANGUL SYLLABLE RYA
+B7B5;B7B5;1105 1163 11A8;B7B5;1105 1163 11A8; # (략; 략; 략; 략; 략; ) HANGUL SYLLABLE RYAG
+B7B6;B7B6;1105 1163 11A9;B7B6;1105 1163 11A9; # (랶; 랶; 랶; 랶; 랶; ) HANGUL SYLLABLE RYAGG
+B7B7;B7B7;1105 1163 11AA;B7B7;1105 1163 11AA; # (랷; 랷; 랷; 랷; 랷; ) HANGUL SYLLABLE RYAGS
+B7B8;B7B8;1105 1163 11AB;B7B8;1105 1163 11AB; # (랸; 랸; 랸; 랸; 랸; ) HANGUL SYLLABLE RYAN
+B7B9;B7B9;1105 1163 11AC;B7B9;1105 1163 11AC; # (랹; 랹; 랹; 랹; 랹; ) HANGUL SYLLABLE RYANJ
+B7BA;B7BA;1105 1163 11AD;B7BA;1105 1163 11AD; # (랺; 랺; 랺; 랺; 랺; ) HANGUL SYLLABLE RYANH
+B7BB;B7BB;1105 1163 11AE;B7BB;1105 1163 11AE; # (랻; 랻; 랻; 랻; 랻; ) HANGUL SYLLABLE RYAD
+B7BC;B7BC;1105 1163 11AF;B7BC;1105 1163 11AF; # (랼; 랼; 랼; 랼; 랼; ) HANGUL SYLLABLE RYAL
+B7BD;B7BD;1105 1163 11B0;B7BD;1105 1163 11B0; # (랽; 랽; 랽; 랽; 랽; ) HANGUL SYLLABLE RYALG
+B7BE;B7BE;1105 1163 11B1;B7BE;1105 1163 11B1; # (랾; 랾; 랾; 랾; 랾; ) HANGUL SYLLABLE RYALM
+B7BF;B7BF;1105 1163 11B2;B7BF;1105 1163 11B2; # (랿; 랿; 랿; 랿; 랿; ) HANGUL SYLLABLE RYALB
+B7C0;B7C0;1105 1163 11B3;B7C0;1105 1163 11B3; # (럀; 럀; 럀; 럀; 럀; ) HANGUL SYLLABLE RYALS
+B7C1;B7C1;1105 1163 11B4;B7C1;1105 1163 11B4; # (ëŸ; ëŸ; 럁; ëŸ; 럁; ) HANGUL SYLLABLE RYALT
+B7C2;B7C2;1105 1163 11B5;B7C2;1105 1163 11B5; # (럂; 럂; 럂; 럂; 럂; ) HANGUL SYLLABLE RYALP
+B7C3;B7C3;1105 1163 11B6;B7C3;1105 1163 11B6; # (럃; 럃; 럃; 럃; 럃; ) HANGUL SYLLABLE RYALH
+B7C4;B7C4;1105 1163 11B7;B7C4;1105 1163 11B7; # (럄; 럄; 럄; 럄; 럄; ) HANGUL SYLLABLE RYAM
+B7C5;B7C5;1105 1163 11B8;B7C5;1105 1163 11B8; # (럅; 럅; 럅; 럅; 럅; ) HANGUL SYLLABLE RYAB
+B7C6;B7C6;1105 1163 11B9;B7C6;1105 1163 11B9; # (럆; 럆; 럆; 럆; 럆; ) HANGUL SYLLABLE RYABS
+B7C7;B7C7;1105 1163 11BA;B7C7;1105 1163 11BA; # (럇; 럇; 럇; 럇; 럇; ) HANGUL SYLLABLE RYAS
+B7C8;B7C8;1105 1163 11BB;B7C8;1105 1163 11BB; # (럈; 럈; 럈; 럈; 럈; ) HANGUL SYLLABLE RYASS
+B7C9;B7C9;1105 1163 11BC;B7C9;1105 1163 11BC; # (량; 량; 량; 량; 량; ) HANGUL SYLLABLE RYANG
+B7CA;B7CA;1105 1163 11BD;B7CA;1105 1163 11BD; # (럊; 럊; 럊; 럊; 럊; ) HANGUL SYLLABLE RYAJ
+B7CB;B7CB;1105 1163 11BE;B7CB;1105 1163 11BE; # (럋; 럋; 럋; 럋; 럋; ) HANGUL SYLLABLE RYAC
+B7CC;B7CC;1105 1163 11BF;B7CC;1105 1163 11BF; # (럌; 럌; 럌; 럌; 럌; ) HANGUL SYLLABLE RYAK
+B7CD;B7CD;1105 1163 11C0;B7CD;1105 1163 11C0; # (ëŸ; ëŸ; 럍; ëŸ; 럍; ) HANGUL SYLLABLE RYAT
+B7CE;B7CE;1105 1163 11C1;B7CE;1105 1163 11C1; # (럎; 럎; á„…á…£á‡; 럎; á„…á…£á‡; ) HANGUL SYLLABLE RYAP
+B7CF;B7CF;1105 1163 11C2;B7CF;1105 1163 11C2; # (ëŸ; ëŸ; 럏; ëŸ; 럏; ) HANGUL SYLLABLE RYAH
+B7D0;B7D0;1105 1164;B7D0;1105 1164; # (ëŸ; ëŸ; á„…á…¤; ëŸ; á„…á…¤; ) HANGUL SYLLABLE RYAE
+B7D1;B7D1;1105 1164 11A8;B7D1;1105 1164 11A8; # (럑; 럑; 럑; 럑; 럑; ) HANGUL SYLLABLE RYAEG
+B7D2;B7D2;1105 1164 11A9;B7D2;1105 1164 11A9; # (럒; 럒; 럒; 럒; 럒; ) HANGUL SYLLABLE RYAEGG
+B7D3;B7D3;1105 1164 11AA;B7D3;1105 1164 11AA; # (럓; 럓; 럓; 럓; 럓; ) HANGUL SYLLABLE RYAEGS
+B7D4;B7D4;1105 1164 11AB;B7D4;1105 1164 11AB; # (럔; 럔; 럔; 럔; 럔; ) HANGUL SYLLABLE RYAEN
+B7D5;B7D5;1105 1164 11AC;B7D5;1105 1164 11AC; # (럕; 럕; 럕; 럕; 럕; ) HANGUL SYLLABLE RYAENJ
+B7D6;B7D6;1105 1164 11AD;B7D6;1105 1164 11AD; # (럖; 럖; 럖; 럖; 럖; ) HANGUL SYLLABLE RYAENH
+B7D7;B7D7;1105 1164 11AE;B7D7;1105 1164 11AE; # (럗; 럗; 럗; 럗; 럗; ) HANGUL SYLLABLE RYAED
+B7D8;B7D8;1105 1164 11AF;B7D8;1105 1164 11AF; # (럘; 럘; 럘; 럘; 럘; ) HANGUL SYLLABLE RYAEL
+B7D9;B7D9;1105 1164 11B0;B7D9;1105 1164 11B0; # (럙; 럙; 럙; 럙; 럙; ) HANGUL SYLLABLE RYAELG
+B7DA;B7DA;1105 1164 11B1;B7DA;1105 1164 11B1; # (럚; 럚; 럚; 럚; 럚; ) HANGUL SYLLABLE RYAELM
+B7DB;B7DB;1105 1164 11B2;B7DB;1105 1164 11B2; # (럛; 럛; 럛; 럛; 럛; ) HANGUL SYLLABLE RYAELB
+B7DC;B7DC;1105 1164 11B3;B7DC;1105 1164 11B3; # (럜; 럜; 럜; 럜; 럜; ) HANGUL SYLLABLE RYAELS
+B7DD;B7DD;1105 1164 11B4;B7DD;1105 1164 11B4; # (ëŸ; ëŸ; 럝; ëŸ; 럝; ) HANGUL SYLLABLE RYAELT
+B7DE;B7DE;1105 1164 11B5;B7DE;1105 1164 11B5; # (럞; 럞; 럞; 럞; 럞; ) HANGUL SYLLABLE RYAELP
+B7DF;B7DF;1105 1164 11B6;B7DF;1105 1164 11B6; # (럟; 럟; 럟; 럟; 럟; ) HANGUL SYLLABLE RYAELH
+B7E0;B7E0;1105 1164 11B7;B7E0;1105 1164 11B7; # (럠; 럠; 럠; 럠; 럠; ) HANGUL SYLLABLE RYAEM
+B7E1;B7E1;1105 1164 11B8;B7E1;1105 1164 11B8; # (럡; 럡; 럡; 럡; 럡; ) HANGUL SYLLABLE RYAEB
+B7E2;B7E2;1105 1164 11B9;B7E2;1105 1164 11B9; # (럢; 럢; 럢; 럢; 럢; ) HANGUL SYLLABLE RYAEBS
+B7E3;B7E3;1105 1164 11BA;B7E3;1105 1164 11BA; # (럣; 럣; 럣; 럣; 럣; ) HANGUL SYLLABLE RYAES
+B7E4;B7E4;1105 1164 11BB;B7E4;1105 1164 11BB; # (럤; 럤; 럤; 럤; 럤; ) HANGUL SYLLABLE RYAESS
+B7E5;B7E5;1105 1164 11BC;B7E5;1105 1164 11BC; # (럥; 럥; 럥; 럥; 럥; ) HANGUL SYLLABLE RYAENG
+B7E6;B7E6;1105 1164 11BD;B7E6;1105 1164 11BD; # (럦; 럦; 럦; 럦; 럦; ) HANGUL SYLLABLE RYAEJ
+B7E7;B7E7;1105 1164 11BE;B7E7;1105 1164 11BE; # (럧; 럧; 럧; 럧; 럧; ) HANGUL SYLLABLE RYAEC
+B7E8;B7E8;1105 1164 11BF;B7E8;1105 1164 11BF; # (럨; 럨; 럨; 럨; 럨; ) HANGUL SYLLABLE RYAEK
+B7E9;B7E9;1105 1164 11C0;B7E9;1105 1164 11C0; # (럩; 럩; 럩; 럩; 럩; ) HANGUL SYLLABLE RYAET
+B7EA;B7EA;1105 1164 11C1;B7EA;1105 1164 11C1; # (럪; 럪; á„…á…¤á‡; 럪; á„…á…¤á‡; ) HANGUL SYLLABLE RYAEP
+B7EB;B7EB;1105 1164 11C2;B7EB;1105 1164 11C2; # (럫; 럫; 럫; 럫; 럫; ) HANGUL SYLLABLE RYAEH
+B7EC;B7EC;1105 1165;B7EC;1105 1165; # (러; 러; 러; 러; 러; ) HANGUL SYLLABLE REO
+B7ED;B7ED;1105 1165 11A8;B7ED;1105 1165 11A8; # (럭; 럭; 럭; 럭; 럭; ) HANGUL SYLLABLE REOG
+B7EE;B7EE;1105 1165 11A9;B7EE;1105 1165 11A9; # (럮; 럮; 럮; 럮; 럮; ) HANGUL SYLLABLE REOGG
+B7EF;B7EF;1105 1165 11AA;B7EF;1105 1165 11AA; # (럯; 럯; 럯; 럯; 럯; ) HANGUL SYLLABLE REOGS
+B7F0;B7F0;1105 1165 11AB;B7F0;1105 1165 11AB; # (런; 런; 런; 런; 런; ) HANGUL SYLLABLE REON
+B7F1;B7F1;1105 1165 11AC;B7F1;1105 1165 11AC; # (럱; 럱; 럱; 럱; 럱; ) HANGUL SYLLABLE REONJ
+B7F2;B7F2;1105 1165 11AD;B7F2;1105 1165 11AD; # (럲; 럲; 럲; 럲; 럲; ) HANGUL SYLLABLE REONH
+B7F3;B7F3;1105 1165 11AE;B7F3;1105 1165 11AE; # (럳; 럳; 럳; 럳; 럳; ) HANGUL SYLLABLE REOD
+B7F4;B7F4;1105 1165 11AF;B7F4;1105 1165 11AF; # (럴; 럴; 럴; 럴; 럴; ) HANGUL SYLLABLE REOL
+B7F5;B7F5;1105 1165 11B0;B7F5;1105 1165 11B0; # (럵; 럵; 럵; 럵; 럵; ) HANGUL SYLLABLE REOLG
+B7F6;B7F6;1105 1165 11B1;B7F6;1105 1165 11B1; # (럶; 럶; 럶; 럶; 럶; ) HANGUL SYLLABLE REOLM
+B7F7;B7F7;1105 1165 11B2;B7F7;1105 1165 11B2; # (럷; 럷; 럷; 럷; 럷; ) HANGUL SYLLABLE REOLB
+B7F8;B7F8;1105 1165 11B3;B7F8;1105 1165 11B3; # (럸; 럸; 럸; 럸; 럸; ) HANGUL SYLLABLE REOLS
+B7F9;B7F9;1105 1165 11B4;B7F9;1105 1165 11B4; # (럹; 럹; 럹; 럹; 럹; ) HANGUL SYLLABLE REOLT
+B7FA;B7FA;1105 1165 11B5;B7FA;1105 1165 11B5; # (럺; 럺; 럺; 럺; 럺; ) HANGUL SYLLABLE REOLP
+B7FB;B7FB;1105 1165 11B6;B7FB;1105 1165 11B6; # (럻; 럻; 럻; 럻; 럻; ) HANGUL SYLLABLE REOLH
+B7FC;B7FC;1105 1165 11B7;B7FC;1105 1165 11B7; # (럼; 럼; 럼; 럼; 럼; ) HANGUL SYLLABLE REOM
+B7FD;B7FD;1105 1165 11B8;B7FD;1105 1165 11B8; # (럽; 럽; 럽; 럽; 럽; ) HANGUL SYLLABLE REOB
+B7FE;B7FE;1105 1165 11B9;B7FE;1105 1165 11B9; # (럾; 럾; 럾; 럾; 럾; ) HANGUL SYLLABLE REOBS
+B7FF;B7FF;1105 1165 11BA;B7FF;1105 1165 11BA; # (럿; 럿; 럿; 럿; 럿; ) HANGUL SYLLABLE REOS
+B800;B800;1105 1165 11BB;B800;1105 1165 11BB; # (렀; 렀; 렀; 렀; 렀; ) HANGUL SYLLABLE REOSS
+B801;B801;1105 1165 11BC;B801;1105 1165 11BC; # (ë ; ë ; 렁; ë ; 렁; ) HANGUL SYLLABLE REONG
+B802;B802;1105 1165 11BD;B802;1105 1165 11BD; # (렂; 렂; 렂; 렂; 렂; ) HANGUL SYLLABLE REOJ
+B803;B803;1105 1165 11BE;B803;1105 1165 11BE; # (렃; 렃; 렃; 렃; 렃; ) HANGUL SYLLABLE REOC
+B804;B804;1105 1165 11BF;B804;1105 1165 11BF; # (렄; 렄; 렄; 렄; 렄; ) HANGUL SYLLABLE REOK
+B805;B805;1105 1165 11C0;B805;1105 1165 11C0; # (렅; 렅; 렅; 렅; 렅; ) HANGUL SYLLABLE REOT
+B806;B806;1105 1165 11C1;B806;1105 1165 11C1; # (ë †; ë †; á„…á…¥á‡; ë †; á„…á…¥á‡; ) HANGUL SYLLABLE REOP
+B807;B807;1105 1165 11C2;B807;1105 1165 11C2; # (렇; 렇; 렇; 렇; 렇; ) HANGUL SYLLABLE REOH
+B808;B808;1105 1166;B808;1105 1166; # (ë ˆ; ë ˆ; á„…á…¦; ë ˆ; á„…á…¦; ) HANGUL SYLLABLE RE
+B809;B809;1105 1166 11A8;B809;1105 1166 11A8; # (렉; 렉; 렉; 렉; 렉; ) HANGUL SYLLABLE REG
+B80A;B80A;1105 1166 11A9;B80A;1105 1166 11A9; # (렊; 렊; 렊; 렊; 렊; ) HANGUL SYLLABLE REGG
+B80B;B80B;1105 1166 11AA;B80B;1105 1166 11AA; # (렋; 렋; 렋; 렋; 렋; ) HANGUL SYLLABLE REGS
+B80C;B80C;1105 1166 11AB;B80C;1105 1166 11AB; # (렌; 렌; 렌; 렌; 렌; ) HANGUL SYLLABLE REN
+B80D;B80D;1105 1166 11AC;B80D;1105 1166 11AC; # (ë ; ë ; 렍; ë ; 렍; ) HANGUL SYLLABLE RENJ
+B80E;B80E;1105 1166 11AD;B80E;1105 1166 11AD; # (렎; 렎; 렎; 렎; 렎; ) HANGUL SYLLABLE RENH
+B80F;B80F;1105 1166 11AE;B80F;1105 1166 11AE; # (ë ; ë ; 렏; ë ; 렏; ) HANGUL SYLLABLE RED
+B810;B810;1105 1166 11AF;B810;1105 1166 11AF; # (ë ; ë ; 렐; ë ; 렐; ) HANGUL SYLLABLE REL
+B811;B811;1105 1166 11B0;B811;1105 1166 11B0; # (렑; 렑; 렑; 렑; 렑; ) HANGUL SYLLABLE RELG
+B812;B812;1105 1166 11B1;B812;1105 1166 11B1; # (렒; 렒; 렒; 렒; 렒; ) HANGUL SYLLABLE RELM
+B813;B813;1105 1166 11B2;B813;1105 1166 11B2; # (렓; 렓; 렓; 렓; 렓; ) HANGUL SYLLABLE RELB
+B814;B814;1105 1166 11B3;B814;1105 1166 11B3; # (렔; 렔; 렔; 렔; 렔; ) HANGUL SYLLABLE RELS
+B815;B815;1105 1166 11B4;B815;1105 1166 11B4; # (렕; 렕; 렕; 렕; 렕; ) HANGUL SYLLABLE RELT
+B816;B816;1105 1166 11B5;B816;1105 1166 11B5; # (렖; 렖; 렖; 렖; 렖; ) HANGUL SYLLABLE RELP
+B817;B817;1105 1166 11B6;B817;1105 1166 11B6; # (렗; 렗; 렗; 렗; 렗; ) HANGUL SYLLABLE RELH
+B818;B818;1105 1166 11B7;B818;1105 1166 11B7; # (렘; 렘; 렘; 렘; 렘; ) HANGUL SYLLABLE REM
+B819;B819;1105 1166 11B8;B819;1105 1166 11B8; # (렙; 렙; 렙; 렙; 렙; ) HANGUL SYLLABLE REB
+B81A;B81A;1105 1166 11B9;B81A;1105 1166 11B9; # (렚; 렚; 렚; 렚; 렚; ) HANGUL SYLLABLE REBS
+B81B;B81B;1105 1166 11BA;B81B;1105 1166 11BA; # (렛; 렛; 렛; 렛; 렛; ) HANGUL SYLLABLE RES
+B81C;B81C;1105 1166 11BB;B81C;1105 1166 11BB; # (렜; 렜; 렜; 렜; 렜; ) HANGUL SYLLABLE RESS
+B81D;B81D;1105 1166 11BC;B81D;1105 1166 11BC; # (ë ; ë ; 렝; ë ; 렝; ) HANGUL SYLLABLE RENG
+B81E;B81E;1105 1166 11BD;B81E;1105 1166 11BD; # (렞; 렞; 렞; 렞; 렞; ) HANGUL SYLLABLE REJ
+B81F;B81F;1105 1166 11BE;B81F;1105 1166 11BE; # (렟; 렟; 렟; 렟; 렟; ) HANGUL SYLLABLE REC
+B820;B820;1105 1166 11BF;B820;1105 1166 11BF; # (렠; 렠; 렠; 렠; 렠; ) HANGUL SYLLABLE REK
+B821;B821;1105 1166 11C0;B821;1105 1166 11C0; # (렡; 렡; 렡; 렡; 렡; ) HANGUL SYLLABLE RET
+B822;B822;1105 1166 11C1;B822;1105 1166 11C1; # (ë ¢; ë ¢; á„…á…¦á‡; ë ¢; á„…á…¦á‡; ) HANGUL SYLLABLE REP
+B823;B823;1105 1166 11C2;B823;1105 1166 11C2; # (렣; 렣; 렣; 렣; 렣; ) HANGUL SYLLABLE REH
+B824;B824;1105 1167;B824;1105 1167; # (ë ¤; ë ¤; á„…á…§; ë ¤; á„…á…§; ) HANGUL SYLLABLE RYEO
+B825;B825;1105 1167 11A8;B825;1105 1167 11A8; # (력; 력; 력; 력; 력; ) HANGUL SYLLABLE RYEOG
+B826;B826;1105 1167 11A9;B826;1105 1167 11A9; # (렦; 렦; 렦; 렦; 렦; ) HANGUL SYLLABLE RYEOGG
+B827;B827;1105 1167 11AA;B827;1105 1167 11AA; # (렧; 렧; 렧; 렧; 렧; ) HANGUL SYLLABLE RYEOGS
+B828;B828;1105 1167 11AB;B828;1105 1167 11AB; # (련; 련; 련; 련; 련; ) HANGUL SYLLABLE RYEON
+B829;B829;1105 1167 11AC;B829;1105 1167 11AC; # (렩; 렩; 렩; 렩; 렩; ) HANGUL SYLLABLE RYEONJ
+B82A;B82A;1105 1167 11AD;B82A;1105 1167 11AD; # (렪; 렪; 렪; 렪; 렪; ) HANGUL SYLLABLE RYEONH
+B82B;B82B;1105 1167 11AE;B82B;1105 1167 11AE; # (렫; 렫; 렫; 렫; 렫; ) HANGUL SYLLABLE RYEOD
+B82C;B82C;1105 1167 11AF;B82C;1105 1167 11AF; # (렬; 렬; 렬; 렬; 렬; ) HANGUL SYLLABLE RYEOL
+B82D;B82D;1105 1167 11B0;B82D;1105 1167 11B0; # (렭; 렭; 렭; 렭; 렭; ) HANGUL SYLLABLE RYEOLG
+B82E;B82E;1105 1167 11B1;B82E;1105 1167 11B1; # (렮; 렮; 렮; 렮; 렮; ) HANGUL SYLLABLE RYEOLM
+B82F;B82F;1105 1167 11B2;B82F;1105 1167 11B2; # (렯; 렯; 렯; 렯; 렯; ) HANGUL SYLLABLE RYEOLB
+B830;B830;1105 1167 11B3;B830;1105 1167 11B3; # (렰; 렰; 렰; 렰; 렰; ) HANGUL SYLLABLE RYEOLS
+B831;B831;1105 1167 11B4;B831;1105 1167 11B4; # (렱; 렱; 렱; 렱; 렱; ) HANGUL SYLLABLE RYEOLT
+B832;B832;1105 1167 11B5;B832;1105 1167 11B5; # (렲; 렲; 렲; 렲; 렲; ) HANGUL SYLLABLE RYEOLP
+B833;B833;1105 1167 11B6;B833;1105 1167 11B6; # (렳; 렳; 렳; 렳; 렳; ) HANGUL SYLLABLE RYEOLH
+B834;B834;1105 1167 11B7;B834;1105 1167 11B7; # (렴; 렴; 렴; 렴; 렴; ) HANGUL SYLLABLE RYEOM
+B835;B835;1105 1167 11B8;B835;1105 1167 11B8; # (렵; 렵; 렵; 렵; 렵; ) HANGUL SYLLABLE RYEOB
+B836;B836;1105 1167 11B9;B836;1105 1167 11B9; # (렶; 렶; 렶; 렶; 렶; ) HANGUL SYLLABLE RYEOBS
+B837;B837;1105 1167 11BA;B837;1105 1167 11BA; # (렷; 렷; 렷; 렷; 렷; ) HANGUL SYLLABLE RYEOS
+B838;B838;1105 1167 11BB;B838;1105 1167 11BB; # (렸; 렸; 렸; 렸; 렸; ) HANGUL SYLLABLE RYEOSS
+B839;B839;1105 1167 11BC;B839;1105 1167 11BC; # (령; 령; 령; 령; 령; ) HANGUL SYLLABLE RYEONG
+B83A;B83A;1105 1167 11BD;B83A;1105 1167 11BD; # (렺; 렺; 렺; 렺; 렺; ) HANGUL SYLLABLE RYEOJ
+B83B;B83B;1105 1167 11BE;B83B;1105 1167 11BE; # (렻; 렻; 렻; 렻; 렻; ) HANGUL SYLLABLE RYEOC
+B83C;B83C;1105 1167 11BF;B83C;1105 1167 11BF; # (렼; 렼; 렼; 렼; 렼; ) HANGUL SYLLABLE RYEOK
+B83D;B83D;1105 1167 11C0;B83D;1105 1167 11C0; # (렽; 렽; 렽; 렽; 렽; ) HANGUL SYLLABLE RYEOT
+B83E;B83E;1105 1167 11C1;B83E;1105 1167 11C1; # (ë ¾; ë ¾; á„…á…§á‡; ë ¾; á„…á…§á‡; ) HANGUL SYLLABLE RYEOP
+B83F;B83F;1105 1167 11C2;B83F;1105 1167 11C2; # (렿; 렿; 렿; 렿; 렿; ) HANGUL SYLLABLE RYEOH
+B840;B840;1105 1168;B840;1105 1168; # (ë¡€; ë¡€; á„…á…¨; ë¡€; á„…á…¨; ) HANGUL SYLLABLE RYE
+B841;B841;1105 1168 11A8;B841;1105 1168 11A8; # (ë¡; ë¡; 롁; ë¡; 롁; ) HANGUL SYLLABLE RYEG
+B842;B842;1105 1168 11A9;B842;1105 1168 11A9; # (롂; 롂; 롂; 롂; 롂; ) HANGUL SYLLABLE RYEGG
+B843;B843;1105 1168 11AA;B843;1105 1168 11AA; # (롃; 롃; 롃; 롃; 롃; ) HANGUL SYLLABLE RYEGS
+B844;B844;1105 1168 11AB;B844;1105 1168 11AB; # (롄; 롄; 롄; 롄; 롄; ) HANGUL SYLLABLE RYEN
+B845;B845;1105 1168 11AC;B845;1105 1168 11AC; # (롅; 롅; 롅; 롅; 롅; ) HANGUL SYLLABLE RYENJ
+B846;B846;1105 1168 11AD;B846;1105 1168 11AD; # (롆; 롆; 롆; 롆; 롆; ) HANGUL SYLLABLE RYENH
+B847;B847;1105 1168 11AE;B847;1105 1168 11AE; # (롇; 롇; 롇; 롇; 롇; ) HANGUL SYLLABLE RYED
+B848;B848;1105 1168 11AF;B848;1105 1168 11AF; # (롈; 롈; 롈; 롈; 롈; ) HANGUL SYLLABLE RYEL
+B849;B849;1105 1168 11B0;B849;1105 1168 11B0; # (롉; 롉; 롉; 롉; 롉; ) HANGUL SYLLABLE RYELG
+B84A;B84A;1105 1168 11B1;B84A;1105 1168 11B1; # (롊; 롊; 롊; 롊; 롊; ) HANGUL SYLLABLE RYELM
+B84B;B84B;1105 1168 11B2;B84B;1105 1168 11B2; # (롋; 롋; 롋; 롋; 롋; ) HANGUL SYLLABLE RYELB
+B84C;B84C;1105 1168 11B3;B84C;1105 1168 11B3; # (롌; 롌; 롌; 롌; 롌; ) HANGUL SYLLABLE RYELS
+B84D;B84D;1105 1168 11B4;B84D;1105 1168 11B4; # (ë¡; ë¡; 롍; ë¡; 롍; ) HANGUL SYLLABLE RYELT
+B84E;B84E;1105 1168 11B5;B84E;1105 1168 11B5; # (롎; 롎; 롎; 롎; 롎; ) HANGUL SYLLABLE RYELP
+B84F;B84F;1105 1168 11B6;B84F;1105 1168 11B6; # (ë¡; ë¡; 롏; ë¡; 롏; ) HANGUL SYLLABLE RYELH
+B850;B850;1105 1168 11B7;B850;1105 1168 11B7; # (ë¡; ë¡; 롐; ë¡; 롐; ) HANGUL SYLLABLE RYEM
+B851;B851;1105 1168 11B8;B851;1105 1168 11B8; # (롑; 롑; 롑; 롑; 롑; ) HANGUL SYLLABLE RYEB
+B852;B852;1105 1168 11B9;B852;1105 1168 11B9; # (롒; 롒; 롒; 롒; 롒; ) HANGUL SYLLABLE RYEBS
+B853;B853;1105 1168 11BA;B853;1105 1168 11BA; # (롓; 롓; 롓; 롓; 롓; ) HANGUL SYLLABLE RYES
+B854;B854;1105 1168 11BB;B854;1105 1168 11BB; # (롔; 롔; 롔; 롔; 롔; ) HANGUL SYLLABLE RYESS
+B855;B855;1105 1168 11BC;B855;1105 1168 11BC; # (롕; 롕; 롕; 롕; 롕; ) HANGUL SYLLABLE RYENG
+B856;B856;1105 1168 11BD;B856;1105 1168 11BD; # (롖; 롖; 롖; 롖; 롖; ) HANGUL SYLLABLE RYEJ
+B857;B857;1105 1168 11BE;B857;1105 1168 11BE; # (롗; 롗; 롗; 롗; 롗; ) HANGUL SYLLABLE RYEC
+B858;B858;1105 1168 11BF;B858;1105 1168 11BF; # (롘; 롘; 롘; 롘; 롘; ) HANGUL SYLLABLE RYEK
+B859;B859;1105 1168 11C0;B859;1105 1168 11C0; # (롙; 롙; 롙; 롙; 롙; ) HANGUL SYLLABLE RYET
+B85A;B85A;1105 1168 11C1;B85A;1105 1168 11C1; # (ë¡š; ë¡š; á„…á…¨á‡; ë¡š; á„…á…¨á‡; ) HANGUL SYLLABLE RYEP
+B85B;B85B;1105 1168 11C2;B85B;1105 1168 11C2; # (롛; 롛; 롛; 롛; 롛; ) HANGUL SYLLABLE RYEH
+B85C;B85C;1105 1169;B85C;1105 1169; # (로; 로; 로; 로; 로; ) HANGUL SYLLABLE RO
+B85D;B85D;1105 1169 11A8;B85D;1105 1169 11A8; # (ë¡; ë¡; 록; ë¡; 록; ) HANGUL SYLLABLE ROG
+B85E;B85E;1105 1169 11A9;B85E;1105 1169 11A9; # (롞; 롞; 롞; 롞; 롞; ) HANGUL SYLLABLE ROGG
+B85F;B85F;1105 1169 11AA;B85F;1105 1169 11AA; # (롟; 롟; 롟; 롟; 롟; ) HANGUL SYLLABLE ROGS
+B860;B860;1105 1169 11AB;B860;1105 1169 11AB; # (론; 론; 론; 론; 론; ) HANGUL SYLLABLE RON
+B861;B861;1105 1169 11AC;B861;1105 1169 11AC; # (롡; 롡; 롡; 롡; 롡; ) HANGUL SYLLABLE RONJ
+B862;B862;1105 1169 11AD;B862;1105 1169 11AD; # (롢; 롢; 롢; 롢; 롢; ) HANGUL SYLLABLE RONH
+B863;B863;1105 1169 11AE;B863;1105 1169 11AE; # (롣; 롣; 롣; 롣; 롣; ) HANGUL SYLLABLE ROD
+B864;B864;1105 1169 11AF;B864;1105 1169 11AF; # (롤; 롤; 롤; 롤; 롤; ) HANGUL SYLLABLE ROL
+B865;B865;1105 1169 11B0;B865;1105 1169 11B0; # (롥; 롥; 롥; 롥; 롥; ) HANGUL SYLLABLE ROLG
+B866;B866;1105 1169 11B1;B866;1105 1169 11B1; # (롦; 롦; 롦; 롦; 롦; ) HANGUL SYLLABLE ROLM
+B867;B867;1105 1169 11B2;B867;1105 1169 11B2; # (롧; 롧; 롧; 롧; 롧; ) HANGUL SYLLABLE ROLB
+B868;B868;1105 1169 11B3;B868;1105 1169 11B3; # (롨; 롨; 롨; 롨; 롨; ) HANGUL SYLLABLE ROLS
+B869;B869;1105 1169 11B4;B869;1105 1169 11B4; # (롩; 롩; 롩; 롩; 롩; ) HANGUL SYLLABLE ROLT
+B86A;B86A;1105 1169 11B5;B86A;1105 1169 11B5; # (롪; 롪; 롪; 롪; 롪; ) HANGUL SYLLABLE ROLP
+B86B;B86B;1105 1169 11B6;B86B;1105 1169 11B6; # (롫; 롫; 롫; 롫; 롫; ) HANGUL SYLLABLE ROLH
+B86C;B86C;1105 1169 11B7;B86C;1105 1169 11B7; # (롬; 롬; 롬; 롬; 롬; ) HANGUL SYLLABLE ROM
+B86D;B86D;1105 1169 11B8;B86D;1105 1169 11B8; # (롭; 롭; 롭; 롭; 롭; ) HANGUL SYLLABLE ROB
+B86E;B86E;1105 1169 11B9;B86E;1105 1169 11B9; # (롮; 롮; 롮; 롮; 롮; ) HANGUL SYLLABLE ROBS
+B86F;B86F;1105 1169 11BA;B86F;1105 1169 11BA; # (롯; 롯; 롯; 롯; 롯; ) HANGUL SYLLABLE ROS
+B870;B870;1105 1169 11BB;B870;1105 1169 11BB; # (롰; 롰; 롰; 롰; 롰; ) HANGUL SYLLABLE ROSS
+B871;B871;1105 1169 11BC;B871;1105 1169 11BC; # (롱; 롱; 롱; 롱; 롱; ) HANGUL SYLLABLE RONG
+B872;B872;1105 1169 11BD;B872;1105 1169 11BD; # (롲; 롲; 롲; 롲; 롲; ) HANGUL SYLLABLE ROJ
+B873;B873;1105 1169 11BE;B873;1105 1169 11BE; # (롳; 롳; 롳; 롳; 롳; ) HANGUL SYLLABLE ROC
+B874;B874;1105 1169 11BF;B874;1105 1169 11BF; # (롴; 롴; 롴; 롴; 롴; ) HANGUL SYLLABLE ROK
+B875;B875;1105 1169 11C0;B875;1105 1169 11C0; # (롵; 롵; 롵; 롵; 롵; ) HANGUL SYLLABLE ROT
+B876;B876;1105 1169 11C1;B876;1105 1169 11C1; # (롶; 롶; á„…á…©á‡; 롶; á„…á…©á‡; ) HANGUL SYLLABLE ROP
+B877;B877;1105 1169 11C2;B877;1105 1169 11C2; # (롷; 롷; 롷; 롷; 롷; ) HANGUL SYLLABLE ROH
+B878;B878;1105 116A;B878;1105 116A; # (롸; 롸; 롸; 롸; 롸; ) HANGUL SYLLABLE RWA
+B879;B879;1105 116A 11A8;B879;1105 116A 11A8; # (롹; 롹; 롹; 롹; 롹; ) HANGUL SYLLABLE RWAG
+B87A;B87A;1105 116A 11A9;B87A;1105 116A 11A9; # (롺; 롺; 롺; 롺; 롺; ) HANGUL SYLLABLE RWAGG
+B87B;B87B;1105 116A 11AA;B87B;1105 116A 11AA; # (롻; 롻; 롻; 롻; 롻; ) HANGUL SYLLABLE RWAGS
+B87C;B87C;1105 116A 11AB;B87C;1105 116A 11AB; # (롼; 롼; 롼; 롼; 롼; ) HANGUL SYLLABLE RWAN
+B87D;B87D;1105 116A 11AC;B87D;1105 116A 11AC; # (롽; 롽; 롽; 롽; 롽; ) HANGUL SYLLABLE RWANJ
+B87E;B87E;1105 116A 11AD;B87E;1105 116A 11AD; # (롾; 롾; 롾; 롾; 롾; ) HANGUL SYLLABLE RWANH
+B87F;B87F;1105 116A 11AE;B87F;1105 116A 11AE; # (롿; 롿; 롿; 롿; 롿; ) HANGUL SYLLABLE RWAD
+B880;B880;1105 116A 11AF;B880;1105 116A 11AF; # (뢀; 뢀; 뢀; 뢀; 뢀; ) HANGUL SYLLABLE RWAL
+B881;B881;1105 116A 11B0;B881;1105 116A 11B0; # (ë¢; ë¢; 뢁; ë¢; 뢁; ) HANGUL SYLLABLE RWALG
+B882;B882;1105 116A 11B1;B882;1105 116A 11B1; # (뢂; 뢂; 뢂; 뢂; 뢂; ) HANGUL SYLLABLE RWALM
+B883;B883;1105 116A 11B2;B883;1105 116A 11B2; # (뢃; 뢃; 뢃; 뢃; 뢃; ) HANGUL SYLLABLE RWALB
+B884;B884;1105 116A 11B3;B884;1105 116A 11B3; # (뢄; 뢄; 뢄; 뢄; 뢄; ) HANGUL SYLLABLE RWALS
+B885;B885;1105 116A 11B4;B885;1105 116A 11B4; # (뢅; 뢅; 뢅; 뢅; 뢅; ) HANGUL SYLLABLE RWALT
+B886;B886;1105 116A 11B5;B886;1105 116A 11B5; # (뢆; 뢆; 뢆; 뢆; 뢆; ) HANGUL SYLLABLE RWALP
+B887;B887;1105 116A 11B6;B887;1105 116A 11B6; # (뢇; 뢇; 뢇; 뢇; 뢇; ) HANGUL SYLLABLE RWALH
+B888;B888;1105 116A 11B7;B888;1105 116A 11B7; # (뢈; 뢈; 뢈; 뢈; 뢈; ) HANGUL SYLLABLE RWAM
+B889;B889;1105 116A 11B8;B889;1105 116A 11B8; # (뢉; 뢉; 뢉; 뢉; 뢉; ) HANGUL SYLLABLE RWAB
+B88A;B88A;1105 116A 11B9;B88A;1105 116A 11B9; # (뢊; 뢊; 뢊; 뢊; 뢊; ) HANGUL SYLLABLE RWABS
+B88B;B88B;1105 116A 11BA;B88B;1105 116A 11BA; # (뢋; 뢋; 뢋; 뢋; 뢋; ) HANGUL SYLLABLE RWAS
+B88C;B88C;1105 116A 11BB;B88C;1105 116A 11BB; # (뢌; 뢌; 뢌; 뢌; 뢌; ) HANGUL SYLLABLE RWASS
+B88D;B88D;1105 116A 11BC;B88D;1105 116A 11BC; # (ë¢; ë¢; 뢍; ë¢; 뢍; ) HANGUL SYLLABLE RWANG
+B88E;B88E;1105 116A 11BD;B88E;1105 116A 11BD; # (뢎; 뢎; 뢎; 뢎; 뢎; ) HANGUL SYLLABLE RWAJ
+B88F;B88F;1105 116A 11BE;B88F;1105 116A 11BE; # (ë¢; ë¢; 뢏; ë¢; 뢏; ) HANGUL SYLLABLE RWAC
+B890;B890;1105 116A 11BF;B890;1105 116A 11BF; # (ë¢; ë¢; 뢐; ë¢; 뢐; ) HANGUL SYLLABLE RWAK
+B891;B891;1105 116A 11C0;B891;1105 116A 11C0; # (뢑; 뢑; 뢑; 뢑; 뢑; ) HANGUL SYLLABLE RWAT
+B892;B892;1105 116A 11C1;B892;1105 116A 11C1; # (뢒; 뢒; á„…á…ªá‡; 뢒; á„…á…ªá‡; ) HANGUL SYLLABLE RWAP
+B893;B893;1105 116A 11C2;B893;1105 116A 11C2; # (뢓; 뢓; 뢓; 뢓; 뢓; ) HANGUL SYLLABLE RWAH
+B894;B894;1105 116B;B894;1105 116B; # (뢔; 뢔; 뢔; 뢔; 뢔; ) HANGUL SYLLABLE RWAE
+B895;B895;1105 116B 11A8;B895;1105 116B 11A8; # (뢕; 뢕; 뢕; 뢕; 뢕; ) HANGUL SYLLABLE RWAEG
+B896;B896;1105 116B 11A9;B896;1105 116B 11A9; # (뢖; 뢖; 뢖; 뢖; 뢖; ) HANGUL SYLLABLE RWAEGG
+B897;B897;1105 116B 11AA;B897;1105 116B 11AA; # (뢗; 뢗; 뢗; 뢗; 뢗; ) HANGUL SYLLABLE RWAEGS
+B898;B898;1105 116B 11AB;B898;1105 116B 11AB; # (뢘; 뢘; 뢘; 뢘; 뢘; ) HANGUL SYLLABLE RWAEN
+B899;B899;1105 116B 11AC;B899;1105 116B 11AC; # (뢙; 뢙; 뢙; 뢙; 뢙; ) HANGUL SYLLABLE RWAENJ
+B89A;B89A;1105 116B 11AD;B89A;1105 116B 11AD; # (뢚; 뢚; 뢚; 뢚; 뢚; ) HANGUL SYLLABLE RWAENH
+B89B;B89B;1105 116B 11AE;B89B;1105 116B 11AE; # (뢛; 뢛; 뢛; 뢛; 뢛; ) HANGUL SYLLABLE RWAED
+B89C;B89C;1105 116B 11AF;B89C;1105 116B 11AF; # (뢜; 뢜; 뢜; 뢜; 뢜; ) HANGUL SYLLABLE RWAEL
+B89D;B89D;1105 116B 11B0;B89D;1105 116B 11B0; # (ë¢; ë¢; 뢝; ë¢; 뢝; ) HANGUL SYLLABLE RWAELG
+B89E;B89E;1105 116B 11B1;B89E;1105 116B 11B1; # (뢞; 뢞; 뢞; 뢞; 뢞; ) HANGUL SYLLABLE RWAELM
+B89F;B89F;1105 116B 11B2;B89F;1105 116B 11B2; # (뢟; 뢟; 뢟; 뢟; 뢟; ) HANGUL SYLLABLE RWAELB
+B8A0;B8A0;1105 116B 11B3;B8A0;1105 116B 11B3; # (뢠; 뢠; 뢠; 뢠; 뢠; ) HANGUL SYLLABLE RWAELS
+B8A1;B8A1;1105 116B 11B4;B8A1;1105 116B 11B4; # (뢡; 뢡; 뢡; 뢡; 뢡; ) HANGUL SYLLABLE RWAELT
+B8A2;B8A2;1105 116B 11B5;B8A2;1105 116B 11B5; # (뢢; 뢢; 뢢; 뢢; 뢢; ) HANGUL SYLLABLE RWAELP
+B8A3;B8A3;1105 116B 11B6;B8A3;1105 116B 11B6; # (뢣; 뢣; 뢣; 뢣; 뢣; ) HANGUL SYLLABLE RWAELH
+B8A4;B8A4;1105 116B 11B7;B8A4;1105 116B 11B7; # (뢤; 뢤; 뢤; 뢤; 뢤; ) HANGUL SYLLABLE RWAEM
+B8A5;B8A5;1105 116B 11B8;B8A5;1105 116B 11B8; # (뢥; 뢥; 뢥; 뢥; 뢥; ) HANGUL SYLLABLE RWAEB
+B8A6;B8A6;1105 116B 11B9;B8A6;1105 116B 11B9; # (뢦; 뢦; 뢦; 뢦; 뢦; ) HANGUL SYLLABLE RWAEBS
+B8A7;B8A7;1105 116B 11BA;B8A7;1105 116B 11BA; # (뢧; 뢧; 뢧; 뢧; 뢧; ) HANGUL SYLLABLE RWAES
+B8A8;B8A8;1105 116B 11BB;B8A8;1105 116B 11BB; # (뢨; 뢨; 뢨; 뢨; 뢨; ) HANGUL SYLLABLE RWAESS
+B8A9;B8A9;1105 116B 11BC;B8A9;1105 116B 11BC; # (뢩; 뢩; 뢩; 뢩; 뢩; ) HANGUL SYLLABLE RWAENG
+B8AA;B8AA;1105 116B 11BD;B8AA;1105 116B 11BD; # (뢪; 뢪; 뢪; 뢪; 뢪; ) HANGUL SYLLABLE RWAEJ
+B8AB;B8AB;1105 116B 11BE;B8AB;1105 116B 11BE; # (뢫; 뢫; 뢫; 뢫; 뢫; ) HANGUL SYLLABLE RWAEC
+B8AC;B8AC;1105 116B 11BF;B8AC;1105 116B 11BF; # (뢬; 뢬; 뢬; 뢬; 뢬; ) HANGUL SYLLABLE RWAEK
+B8AD;B8AD;1105 116B 11C0;B8AD;1105 116B 11C0; # (뢭; 뢭; 뢭; 뢭; 뢭; ) HANGUL SYLLABLE RWAET
+B8AE;B8AE;1105 116B 11C1;B8AE;1105 116B 11C1; # (뢮; 뢮; á„…á…«á‡; 뢮; á„…á…«á‡; ) HANGUL SYLLABLE RWAEP
+B8AF;B8AF;1105 116B 11C2;B8AF;1105 116B 11C2; # (뢯; 뢯; 뢯; 뢯; 뢯; ) HANGUL SYLLABLE RWAEH
+B8B0;B8B0;1105 116C;B8B0;1105 116C; # (뢰; 뢰; 뢰; 뢰; 뢰; ) HANGUL SYLLABLE ROE
+B8B1;B8B1;1105 116C 11A8;B8B1;1105 116C 11A8; # (뢱; 뢱; 뢱; 뢱; 뢱; ) HANGUL SYLLABLE ROEG
+B8B2;B8B2;1105 116C 11A9;B8B2;1105 116C 11A9; # (뢲; 뢲; 뢲; 뢲; 뢲; ) HANGUL SYLLABLE ROEGG
+B8B3;B8B3;1105 116C 11AA;B8B3;1105 116C 11AA; # (뢳; 뢳; 뢳; 뢳; 뢳; ) HANGUL SYLLABLE ROEGS
+B8B4;B8B4;1105 116C 11AB;B8B4;1105 116C 11AB; # (뢴; 뢴; 뢴; 뢴; 뢴; ) HANGUL SYLLABLE ROEN
+B8B5;B8B5;1105 116C 11AC;B8B5;1105 116C 11AC; # (뢵; 뢵; 뢵; 뢵; 뢵; ) HANGUL SYLLABLE ROENJ
+B8B6;B8B6;1105 116C 11AD;B8B6;1105 116C 11AD; # (뢶; 뢶; 뢶; 뢶; 뢶; ) HANGUL SYLLABLE ROENH
+B8B7;B8B7;1105 116C 11AE;B8B7;1105 116C 11AE; # (뢷; 뢷; 뢷; 뢷; 뢷; ) HANGUL SYLLABLE ROED
+B8B8;B8B8;1105 116C 11AF;B8B8;1105 116C 11AF; # (뢸; 뢸; 뢸; 뢸; 뢸; ) HANGUL SYLLABLE ROEL
+B8B9;B8B9;1105 116C 11B0;B8B9;1105 116C 11B0; # (뢹; 뢹; 뢹; 뢹; 뢹; ) HANGUL SYLLABLE ROELG
+B8BA;B8BA;1105 116C 11B1;B8BA;1105 116C 11B1; # (뢺; 뢺; 뢺; 뢺; 뢺; ) HANGUL SYLLABLE ROELM
+B8BB;B8BB;1105 116C 11B2;B8BB;1105 116C 11B2; # (뢻; 뢻; 뢻; 뢻; 뢻; ) HANGUL SYLLABLE ROELB
+B8BC;B8BC;1105 116C 11B3;B8BC;1105 116C 11B3; # (뢼; 뢼; 뢼; 뢼; 뢼; ) HANGUL SYLLABLE ROELS
+B8BD;B8BD;1105 116C 11B4;B8BD;1105 116C 11B4; # (뢽; 뢽; 뢽; 뢽; 뢽; ) HANGUL SYLLABLE ROELT
+B8BE;B8BE;1105 116C 11B5;B8BE;1105 116C 11B5; # (뢾; 뢾; 뢾; 뢾; 뢾; ) HANGUL SYLLABLE ROELP
+B8BF;B8BF;1105 116C 11B6;B8BF;1105 116C 11B6; # (뢿; 뢿; 뢿; 뢿; 뢿; ) HANGUL SYLLABLE ROELH
+B8C0;B8C0;1105 116C 11B7;B8C0;1105 116C 11B7; # (룀; 룀; 룀; 룀; 룀; ) HANGUL SYLLABLE ROEM
+B8C1;B8C1;1105 116C 11B8;B8C1;1105 116C 11B8; # (ë£; ë£; 룁; ë£; 룁; ) HANGUL SYLLABLE ROEB
+B8C2;B8C2;1105 116C 11B9;B8C2;1105 116C 11B9; # (룂; 룂; 룂; 룂; 룂; ) HANGUL SYLLABLE ROEBS
+B8C3;B8C3;1105 116C 11BA;B8C3;1105 116C 11BA; # (룃; 룃; 룃; 룃; 룃; ) HANGUL SYLLABLE ROES
+B8C4;B8C4;1105 116C 11BB;B8C4;1105 116C 11BB; # (룄; 룄; 룄; 룄; 룄; ) HANGUL SYLLABLE ROESS
+B8C5;B8C5;1105 116C 11BC;B8C5;1105 116C 11BC; # (룅; 룅; 룅; 룅; 룅; ) HANGUL SYLLABLE ROENG
+B8C6;B8C6;1105 116C 11BD;B8C6;1105 116C 11BD; # (룆; 룆; 룆; 룆; 룆; ) HANGUL SYLLABLE ROEJ
+B8C7;B8C7;1105 116C 11BE;B8C7;1105 116C 11BE; # (룇; 룇; 룇; 룇; 룇; ) HANGUL SYLLABLE ROEC
+B8C8;B8C8;1105 116C 11BF;B8C8;1105 116C 11BF; # (룈; 룈; 룈; 룈; 룈; ) HANGUL SYLLABLE ROEK
+B8C9;B8C9;1105 116C 11C0;B8C9;1105 116C 11C0; # (룉; 룉; 룉; 룉; 룉; ) HANGUL SYLLABLE ROET
+B8CA;B8CA;1105 116C 11C1;B8CA;1105 116C 11C1; # (룊; 룊; á„…á…¬á‡; 룊; á„…á…¬á‡; ) HANGUL SYLLABLE ROEP
+B8CB;B8CB;1105 116C 11C2;B8CB;1105 116C 11C2; # (룋; 룋; 룋; 룋; 룋; ) HANGUL SYLLABLE ROEH
+B8CC;B8CC;1105 116D;B8CC;1105 116D; # (료; 료; 료; 료; 료; ) HANGUL SYLLABLE RYO
+B8CD;B8CD;1105 116D 11A8;B8CD;1105 116D 11A8; # (ë£; ë£; 룍; ë£; 룍; ) HANGUL SYLLABLE RYOG
+B8CE;B8CE;1105 116D 11A9;B8CE;1105 116D 11A9; # (룎; 룎; 룎; 룎; 룎; ) HANGUL SYLLABLE RYOGG
+B8CF;B8CF;1105 116D 11AA;B8CF;1105 116D 11AA; # (ë£; ë£; 룏; ë£; 룏; ) HANGUL SYLLABLE RYOGS
+B8D0;B8D0;1105 116D 11AB;B8D0;1105 116D 11AB; # (ë£; ë£; 룐; ë£; 룐; ) HANGUL SYLLABLE RYON
+B8D1;B8D1;1105 116D 11AC;B8D1;1105 116D 11AC; # (룑; 룑; 룑; 룑; 룑; ) HANGUL SYLLABLE RYONJ
+B8D2;B8D2;1105 116D 11AD;B8D2;1105 116D 11AD; # (룒; 룒; 룒; 룒; 룒; ) HANGUL SYLLABLE RYONH
+B8D3;B8D3;1105 116D 11AE;B8D3;1105 116D 11AE; # (룓; 룓; 룓; 룓; 룓; ) HANGUL SYLLABLE RYOD
+B8D4;B8D4;1105 116D 11AF;B8D4;1105 116D 11AF; # (룔; 룔; 룔; 룔; 룔; ) HANGUL SYLLABLE RYOL
+B8D5;B8D5;1105 116D 11B0;B8D5;1105 116D 11B0; # (룕; 룕; 룕; 룕; 룕; ) HANGUL SYLLABLE RYOLG
+B8D6;B8D6;1105 116D 11B1;B8D6;1105 116D 11B1; # (룖; 룖; 룖; 룖; 룖; ) HANGUL SYLLABLE RYOLM
+B8D7;B8D7;1105 116D 11B2;B8D7;1105 116D 11B2; # (룗; 룗; 룗; 룗; 룗; ) HANGUL SYLLABLE RYOLB
+B8D8;B8D8;1105 116D 11B3;B8D8;1105 116D 11B3; # (룘; 룘; 룘; 룘; 룘; ) HANGUL SYLLABLE RYOLS
+B8D9;B8D9;1105 116D 11B4;B8D9;1105 116D 11B4; # (룙; 룙; 룙; 룙; 룙; ) HANGUL SYLLABLE RYOLT
+B8DA;B8DA;1105 116D 11B5;B8DA;1105 116D 11B5; # (룚; 룚; 룚; 룚; 룚; ) HANGUL SYLLABLE RYOLP
+B8DB;B8DB;1105 116D 11B6;B8DB;1105 116D 11B6; # (룛; 룛; 룛; 룛; 룛; ) HANGUL SYLLABLE RYOLH
+B8DC;B8DC;1105 116D 11B7;B8DC;1105 116D 11B7; # (룜; 룜; 룜; 룜; 룜; ) HANGUL SYLLABLE RYOM
+B8DD;B8DD;1105 116D 11B8;B8DD;1105 116D 11B8; # (ë£; ë£; 룝; ë£; 룝; ) HANGUL SYLLABLE RYOB
+B8DE;B8DE;1105 116D 11B9;B8DE;1105 116D 11B9; # (룞; 룞; 룞; 룞; 룞; ) HANGUL SYLLABLE RYOBS
+B8DF;B8DF;1105 116D 11BA;B8DF;1105 116D 11BA; # (룟; 룟; 룟; 룟; 룟; ) HANGUL SYLLABLE RYOS
+B8E0;B8E0;1105 116D 11BB;B8E0;1105 116D 11BB; # (룠; 룠; 룠; 룠; 룠; ) HANGUL SYLLABLE RYOSS
+B8E1;B8E1;1105 116D 11BC;B8E1;1105 116D 11BC; # (룡; 룡; 룡; 룡; 룡; ) HANGUL SYLLABLE RYONG
+B8E2;B8E2;1105 116D 11BD;B8E2;1105 116D 11BD; # (룢; 룢; 룢; 룢; 룢; ) HANGUL SYLLABLE RYOJ
+B8E3;B8E3;1105 116D 11BE;B8E3;1105 116D 11BE; # (룣; 룣; 룣; 룣; 룣; ) HANGUL SYLLABLE RYOC
+B8E4;B8E4;1105 116D 11BF;B8E4;1105 116D 11BF; # (룤; 룤; 룤; 룤; 룤; ) HANGUL SYLLABLE RYOK
+B8E5;B8E5;1105 116D 11C0;B8E5;1105 116D 11C0; # (룥; 룥; 룥; 룥; 룥; ) HANGUL SYLLABLE RYOT
+B8E6;B8E6;1105 116D 11C1;B8E6;1105 116D 11C1; # (룦; 룦; á„…á…­á‡; 룦; á„…á…­á‡; ) HANGUL SYLLABLE RYOP
+B8E7;B8E7;1105 116D 11C2;B8E7;1105 116D 11C2; # (룧; 룧; 룧; 룧; 룧; ) HANGUL SYLLABLE RYOH
+B8E8;B8E8;1105 116E;B8E8;1105 116E; # (루; 루; 루; 루; 루; ) HANGUL SYLLABLE RU
+B8E9;B8E9;1105 116E 11A8;B8E9;1105 116E 11A8; # (룩; 룩; 룩; 룩; 룩; ) HANGUL SYLLABLE RUG
+B8EA;B8EA;1105 116E 11A9;B8EA;1105 116E 11A9; # (룪; 룪; 룪; 룪; 룪; ) HANGUL SYLLABLE RUGG
+B8EB;B8EB;1105 116E 11AA;B8EB;1105 116E 11AA; # (룫; 룫; 룫; 룫; 룫; ) HANGUL SYLLABLE RUGS
+B8EC;B8EC;1105 116E 11AB;B8EC;1105 116E 11AB; # (룬; 룬; 룬; 룬; 룬; ) HANGUL SYLLABLE RUN
+B8ED;B8ED;1105 116E 11AC;B8ED;1105 116E 11AC; # (룭; 룭; 룭; 룭; 룭; ) HANGUL SYLLABLE RUNJ
+B8EE;B8EE;1105 116E 11AD;B8EE;1105 116E 11AD; # (룮; 룮; 룮; 룮; 룮; ) HANGUL SYLLABLE RUNH
+B8EF;B8EF;1105 116E 11AE;B8EF;1105 116E 11AE; # (룯; 룯; 룯; 룯; 룯; ) HANGUL SYLLABLE RUD
+B8F0;B8F0;1105 116E 11AF;B8F0;1105 116E 11AF; # (룰; 룰; 룰; 룰; 룰; ) HANGUL SYLLABLE RUL
+B8F1;B8F1;1105 116E 11B0;B8F1;1105 116E 11B0; # (룱; 룱; 룱; 룱; 룱; ) HANGUL SYLLABLE RULG
+B8F2;B8F2;1105 116E 11B1;B8F2;1105 116E 11B1; # (룲; 룲; 룲; 룲; 룲; ) HANGUL SYLLABLE RULM
+B8F3;B8F3;1105 116E 11B2;B8F3;1105 116E 11B2; # (룳; 룳; 룳; 룳; 룳; ) HANGUL SYLLABLE RULB
+B8F4;B8F4;1105 116E 11B3;B8F4;1105 116E 11B3; # (룴; 룴; 룴; 룴; 룴; ) HANGUL SYLLABLE RULS
+B8F5;B8F5;1105 116E 11B4;B8F5;1105 116E 11B4; # (룵; 룵; 룵; 룵; 룵; ) HANGUL SYLLABLE RULT
+B8F6;B8F6;1105 116E 11B5;B8F6;1105 116E 11B5; # (룶; 룶; 룶; 룶; 룶; ) HANGUL SYLLABLE RULP
+B8F7;B8F7;1105 116E 11B6;B8F7;1105 116E 11B6; # (룷; 룷; 룷; 룷; 룷; ) HANGUL SYLLABLE RULH
+B8F8;B8F8;1105 116E 11B7;B8F8;1105 116E 11B7; # (룸; 룸; 룸; 룸; 룸; ) HANGUL SYLLABLE RUM
+B8F9;B8F9;1105 116E 11B8;B8F9;1105 116E 11B8; # (룹; 룹; 룹; 룹; 룹; ) HANGUL SYLLABLE RUB
+B8FA;B8FA;1105 116E 11B9;B8FA;1105 116E 11B9; # (룺; 룺; 룺; 룺; 룺; ) HANGUL SYLLABLE RUBS
+B8FB;B8FB;1105 116E 11BA;B8FB;1105 116E 11BA; # (룻; 룻; 룻; 룻; 룻; ) HANGUL SYLLABLE RUS
+B8FC;B8FC;1105 116E 11BB;B8FC;1105 116E 11BB; # (룼; 룼; 룼; 룼; 룼; ) HANGUL SYLLABLE RUSS
+B8FD;B8FD;1105 116E 11BC;B8FD;1105 116E 11BC; # (룽; 룽; 룽; 룽; 룽; ) HANGUL SYLLABLE RUNG
+B8FE;B8FE;1105 116E 11BD;B8FE;1105 116E 11BD; # (룾; 룾; 룾; 룾; 룾; ) HANGUL SYLLABLE RUJ
+B8FF;B8FF;1105 116E 11BE;B8FF;1105 116E 11BE; # (룿; 룿; 룿; 룿; 룿; ) HANGUL SYLLABLE RUC
+B900;B900;1105 116E 11BF;B900;1105 116E 11BF; # (뤀; 뤀; 뤀; 뤀; 뤀; ) HANGUL SYLLABLE RUK
+B901;B901;1105 116E 11C0;B901;1105 116E 11C0; # (ë¤; ë¤; 뤁; ë¤; 뤁; ) HANGUL SYLLABLE RUT
+B902;B902;1105 116E 11C1;B902;1105 116E 11C1; # (뤂; 뤂; á„…á…®á‡; 뤂; á„…á…®á‡; ) HANGUL SYLLABLE RUP
+B903;B903;1105 116E 11C2;B903;1105 116E 11C2; # (뤃; 뤃; 뤃; 뤃; 뤃; ) HANGUL SYLLABLE RUH
+B904;B904;1105 116F;B904;1105 116F; # (뤄; 뤄; 뤄; 뤄; 뤄; ) HANGUL SYLLABLE RWEO
+B905;B905;1105 116F 11A8;B905;1105 116F 11A8; # (뤅; 뤅; 뤅; 뤅; 뤅; ) HANGUL SYLLABLE RWEOG
+B906;B906;1105 116F 11A9;B906;1105 116F 11A9; # (뤆; 뤆; 뤆; 뤆; 뤆; ) HANGUL SYLLABLE RWEOGG
+B907;B907;1105 116F 11AA;B907;1105 116F 11AA; # (뤇; 뤇; 뤇; 뤇; 뤇; ) HANGUL SYLLABLE RWEOGS
+B908;B908;1105 116F 11AB;B908;1105 116F 11AB; # (뤈; 뤈; 뤈; 뤈; 뤈; ) HANGUL SYLLABLE RWEON
+B909;B909;1105 116F 11AC;B909;1105 116F 11AC; # (뤉; 뤉; 뤉; 뤉; 뤉; ) HANGUL SYLLABLE RWEONJ
+B90A;B90A;1105 116F 11AD;B90A;1105 116F 11AD; # (뤊; 뤊; 뤊; 뤊; 뤊; ) HANGUL SYLLABLE RWEONH
+B90B;B90B;1105 116F 11AE;B90B;1105 116F 11AE; # (뤋; 뤋; 뤋; 뤋; 뤋; ) HANGUL SYLLABLE RWEOD
+B90C;B90C;1105 116F 11AF;B90C;1105 116F 11AF; # (뤌; 뤌; 뤌; 뤌; 뤌; ) HANGUL SYLLABLE RWEOL
+B90D;B90D;1105 116F 11B0;B90D;1105 116F 11B0; # (ë¤; ë¤; 뤍; ë¤; 뤍; ) HANGUL SYLLABLE RWEOLG
+B90E;B90E;1105 116F 11B1;B90E;1105 116F 11B1; # (뤎; 뤎; 뤎; 뤎; 뤎; ) HANGUL SYLLABLE RWEOLM
+B90F;B90F;1105 116F 11B2;B90F;1105 116F 11B2; # (ë¤; ë¤; 뤏; ë¤; 뤏; ) HANGUL SYLLABLE RWEOLB
+B910;B910;1105 116F 11B3;B910;1105 116F 11B3; # (ë¤; ë¤; 뤐; ë¤; 뤐; ) HANGUL SYLLABLE RWEOLS
+B911;B911;1105 116F 11B4;B911;1105 116F 11B4; # (뤑; 뤑; 뤑; 뤑; 뤑; ) HANGUL SYLLABLE RWEOLT
+B912;B912;1105 116F 11B5;B912;1105 116F 11B5; # (뤒; 뤒; 뤒; 뤒; 뤒; ) HANGUL SYLLABLE RWEOLP
+B913;B913;1105 116F 11B6;B913;1105 116F 11B6; # (뤓; 뤓; 뤓; 뤓; 뤓; ) HANGUL SYLLABLE RWEOLH
+B914;B914;1105 116F 11B7;B914;1105 116F 11B7; # (뤔; 뤔; 뤔; 뤔; 뤔; ) HANGUL SYLLABLE RWEOM
+B915;B915;1105 116F 11B8;B915;1105 116F 11B8; # (뤕; 뤕; 뤕; 뤕; 뤕; ) HANGUL SYLLABLE RWEOB
+B916;B916;1105 116F 11B9;B916;1105 116F 11B9; # (뤖; 뤖; 뤖; 뤖; 뤖; ) HANGUL SYLLABLE RWEOBS
+B917;B917;1105 116F 11BA;B917;1105 116F 11BA; # (뤗; 뤗; 뤗; 뤗; 뤗; ) HANGUL SYLLABLE RWEOS
+B918;B918;1105 116F 11BB;B918;1105 116F 11BB; # (뤘; 뤘; 뤘; 뤘; 뤘; ) HANGUL SYLLABLE RWEOSS
+B919;B919;1105 116F 11BC;B919;1105 116F 11BC; # (뤙; 뤙; 뤙; 뤙; 뤙; ) HANGUL SYLLABLE RWEONG
+B91A;B91A;1105 116F 11BD;B91A;1105 116F 11BD; # (뤚; 뤚; 뤚; 뤚; 뤚; ) HANGUL SYLLABLE RWEOJ
+B91B;B91B;1105 116F 11BE;B91B;1105 116F 11BE; # (뤛; 뤛; 뤛; 뤛; 뤛; ) HANGUL SYLLABLE RWEOC
+B91C;B91C;1105 116F 11BF;B91C;1105 116F 11BF; # (뤜; 뤜; 뤜; 뤜; 뤜; ) HANGUL SYLLABLE RWEOK
+B91D;B91D;1105 116F 11C0;B91D;1105 116F 11C0; # (ë¤; ë¤; 뤝; ë¤; 뤝; ) HANGUL SYLLABLE RWEOT
+B91E;B91E;1105 116F 11C1;B91E;1105 116F 11C1; # (뤞; 뤞; á„…á…¯á‡; 뤞; á„…á…¯á‡; ) HANGUL SYLLABLE RWEOP
+B91F;B91F;1105 116F 11C2;B91F;1105 116F 11C2; # (뤟; 뤟; 뤟; 뤟; 뤟; ) HANGUL SYLLABLE RWEOH
+B920;B920;1105 1170;B920;1105 1170; # (뤠; 뤠; 뤠; 뤠; 뤠; ) HANGUL SYLLABLE RWE
+B921;B921;1105 1170 11A8;B921;1105 1170 11A8; # (뤡; 뤡; 뤡; 뤡; 뤡; ) HANGUL SYLLABLE RWEG
+B922;B922;1105 1170 11A9;B922;1105 1170 11A9; # (뤢; 뤢; 뤢; 뤢; 뤢; ) HANGUL SYLLABLE RWEGG
+B923;B923;1105 1170 11AA;B923;1105 1170 11AA; # (뤣; 뤣; 뤣; 뤣; 뤣; ) HANGUL SYLLABLE RWEGS
+B924;B924;1105 1170 11AB;B924;1105 1170 11AB; # (뤤; 뤤; 뤤; 뤤; 뤤; ) HANGUL SYLLABLE RWEN
+B925;B925;1105 1170 11AC;B925;1105 1170 11AC; # (뤥; 뤥; 뤥; 뤥; 뤥; ) HANGUL SYLLABLE RWENJ
+B926;B926;1105 1170 11AD;B926;1105 1170 11AD; # (뤦; 뤦; 뤦; 뤦; 뤦; ) HANGUL SYLLABLE RWENH
+B927;B927;1105 1170 11AE;B927;1105 1170 11AE; # (뤧; 뤧; 뤧; 뤧; 뤧; ) HANGUL SYLLABLE RWED
+B928;B928;1105 1170 11AF;B928;1105 1170 11AF; # (뤨; 뤨; 뤨; 뤨; 뤨; ) HANGUL SYLLABLE RWEL
+B929;B929;1105 1170 11B0;B929;1105 1170 11B0; # (뤩; 뤩; 뤩; 뤩; 뤩; ) HANGUL SYLLABLE RWELG
+B92A;B92A;1105 1170 11B1;B92A;1105 1170 11B1; # (뤪; 뤪; 뤪; 뤪; 뤪; ) HANGUL SYLLABLE RWELM
+B92B;B92B;1105 1170 11B2;B92B;1105 1170 11B2; # (뤫; 뤫; 뤫; 뤫; 뤫; ) HANGUL SYLLABLE RWELB
+B92C;B92C;1105 1170 11B3;B92C;1105 1170 11B3; # (뤬; 뤬; 뤬; 뤬; 뤬; ) HANGUL SYLLABLE RWELS
+B92D;B92D;1105 1170 11B4;B92D;1105 1170 11B4; # (뤭; 뤭; 뤭; 뤭; 뤭; ) HANGUL SYLLABLE RWELT
+B92E;B92E;1105 1170 11B5;B92E;1105 1170 11B5; # (뤮; 뤮; 뤮; 뤮; 뤮; ) HANGUL SYLLABLE RWELP
+B92F;B92F;1105 1170 11B6;B92F;1105 1170 11B6; # (뤯; 뤯; 뤯; 뤯; 뤯; ) HANGUL SYLLABLE RWELH
+B930;B930;1105 1170 11B7;B930;1105 1170 11B7; # (뤰; 뤰; 뤰; 뤰; 뤰; ) HANGUL SYLLABLE RWEM
+B931;B931;1105 1170 11B8;B931;1105 1170 11B8; # (뤱; 뤱; 뤱; 뤱; 뤱; ) HANGUL SYLLABLE RWEB
+B932;B932;1105 1170 11B9;B932;1105 1170 11B9; # (뤲; 뤲; 뤲; 뤲; 뤲; ) HANGUL SYLLABLE RWEBS
+B933;B933;1105 1170 11BA;B933;1105 1170 11BA; # (뤳; 뤳; 뤳; 뤳; 뤳; ) HANGUL SYLLABLE RWES
+B934;B934;1105 1170 11BB;B934;1105 1170 11BB; # (뤴; 뤴; 뤴; 뤴; 뤴; ) HANGUL SYLLABLE RWESS
+B935;B935;1105 1170 11BC;B935;1105 1170 11BC; # (뤵; 뤵; 뤵; 뤵; 뤵; ) HANGUL SYLLABLE RWENG
+B936;B936;1105 1170 11BD;B936;1105 1170 11BD; # (뤶; 뤶; 뤶; 뤶; 뤶; ) HANGUL SYLLABLE RWEJ
+B937;B937;1105 1170 11BE;B937;1105 1170 11BE; # (뤷; 뤷; 뤷; 뤷; 뤷; ) HANGUL SYLLABLE RWEC
+B938;B938;1105 1170 11BF;B938;1105 1170 11BF; # (뤸; 뤸; 뤸; 뤸; 뤸; ) HANGUL SYLLABLE RWEK
+B939;B939;1105 1170 11C0;B939;1105 1170 11C0; # (뤹; 뤹; 뤹; 뤹; 뤹; ) HANGUL SYLLABLE RWET
+B93A;B93A;1105 1170 11C1;B93A;1105 1170 11C1; # (뤺; 뤺; á„…á…°á‡; 뤺; á„…á…°á‡; ) HANGUL SYLLABLE RWEP
+B93B;B93B;1105 1170 11C2;B93B;1105 1170 11C2; # (뤻; 뤻; 뤻; 뤻; 뤻; ) HANGUL SYLLABLE RWEH
+B93C;B93C;1105 1171;B93C;1105 1171; # (뤼; 뤼; 뤼; 뤼; 뤼; ) HANGUL SYLLABLE RWI
+B93D;B93D;1105 1171 11A8;B93D;1105 1171 11A8; # (뤽; 뤽; 뤽; 뤽; 뤽; ) HANGUL SYLLABLE RWIG
+B93E;B93E;1105 1171 11A9;B93E;1105 1171 11A9; # (뤾; 뤾; 뤾; 뤾; 뤾; ) HANGUL SYLLABLE RWIGG
+B93F;B93F;1105 1171 11AA;B93F;1105 1171 11AA; # (뤿; 뤿; 뤿; 뤿; 뤿; ) HANGUL SYLLABLE RWIGS
+B940;B940;1105 1171 11AB;B940;1105 1171 11AB; # (륀; 륀; 륀; 륀; 륀; ) HANGUL SYLLABLE RWIN
+B941;B941;1105 1171 11AC;B941;1105 1171 11AC; # (ë¥; ë¥; 륁; ë¥; 륁; ) HANGUL SYLLABLE RWINJ
+B942;B942;1105 1171 11AD;B942;1105 1171 11AD; # (륂; 륂; 륂; 륂; 륂; ) HANGUL SYLLABLE RWINH
+B943;B943;1105 1171 11AE;B943;1105 1171 11AE; # (륃; 륃; 륃; 륃; 륃; ) HANGUL SYLLABLE RWID
+B944;B944;1105 1171 11AF;B944;1105 1171 11AF; # (륄; 륄; 륄; 륄; 륄; ) HANGUL SYLLABLE RWIL
+B945;B945;1105 1171 11B0;B945;1105 1171 11B0; # (륅; 륅; 륅; 륅; 륅; ) HANGUL SYLLABLE RWILG
+B946;B946;1105 1171 11B1;B946;1105 1171 11B1; # (륆; 륆; 륆; 륆; 륆; ) HANGUL SYLLABLE RWILM
+B947;B947;1105 1171 11B2;B947;1105 1171 11B2; # (륇; 륇; 륇; 륇; 륇; ) HANGUL SYLLABLE RWILB
+B948;B948;1105 1171 11B3;B948;1105 1171 11B3; # (륈; 륈; 륈; 륈; 륈; ) HANGUL SYLLABLE RWILS
+B949;B949;1105 1171 11B4;B949;1105 1171 11B4; # (륉; 륉; 륉; 륉; 륉; ) HANGUL SYLLABLE RWILT
+B94A;B94A;1105 1171 11B5;B94A;1105 1171 11B5; # (륊; 륊; 륊; 륊; 륊; ) HANGUL SYLLABLE RWILP
+B94B;B94B;1105 1171 11B6;B94B;1105 1171 11B6; # (륋; 륋; 륋; 륋; 륋; ) HANGUL SYLLABLE RWILH
+B94C;B94C;1105 1171 11B7;B94C;1105 1171 11B7; # (륌; 륌; 륌; 륌; 륌; ) HANGUL SYLLABLE RWIM
+B94D;B94D;1105 1171 11B8;B94D;1105 1171 11B8; # (ë¥; ë¥; 륍; ë¥; 륍; ) HANGUL SYLLABLE RWIB
+B94E;B94E;1105 1171 11B9;B94E;1105 1171 11B9; # (륎; 륎; 륎; 륎; 륎; ) HANGUL SYLLABLE RWIBS
+B94F;B94F;1105 1171 11BA;B94F;1105 1171 11BA; # (ë¥; ë¥; 륏; ë¥; 륏; ) HANGUL SYLLABLE RWIS
+B950;B950;1105 1171 11BB;B950;1105 1171 11BB; # (ë¥; ë¥; 륐; ë¥; 륐; ) HANGUL SYLLABLE RWISS
+B951;B951;1105 1171 11BC;B951;1105 1171 11BC; # (륑; 륑; 륑; 륑; 륑; ) HANGUL SYLLABLE RWING
+B952;B952;1105 1171 11BD;B952;1105 1171 11BD; # (륒; 륒; 륒; 륒; 륒; ) HANGUL SYLLABLE RWIJ
+B953;B953;1105 1171 11BE;B953;1105 1171 11BE; # (륓; 륓; 륓; 륓; 륓; ) HANGUL SYLLABLE RWIC
+B954;B954;1105 1171 11BF;B954;1105 1171 11BF; # (륔; 륔; 륔; 륔; 륔; ) HANGUL SYLLABLE RWIK
+B955;B955;1105 1171 11C0;B955;1105 1171 11C0; # (륕; 륕; 륕; 륕; 륕; ) HANGUL SYLLABLE RWIT
+B956;B956;1105 1171 11C1;B956;1105 1171 11C1; # (륖; 륖; á„…á…±á‡; 륖; á„…á…±á‡; ) HANGUL SYLLABLE RWIP
+B957;B957;1105 1171 11C2;B957;1105 1171 11C2; # (륗; 륗; 륗; 륗; 륗; ) HANGUL SYLLABLE RWIH
+B958;B958;1105 1172;B958;1105 1172; # (류; 류; 류; 류; 류; ) HANGUL SYLLABLE RYU
+B959;B959;1105 1172 11A8;B959;1105 1172 11A8; # (륙; 륙; 륙; 륙; 륙; ) HANGUL SYLLABLE RYUG
+B95A;B95A;1105 1172 11A9;B95A;1105 1172 11A9; # (륚; 륚; 륚; 륚; 륚; ) HANGUL SYLLABLE RYUGG
+B95B;B95B;1105 1172 11AA;B95B;1105 1172 11AA; # (륛; 륛; 륛; 륛; 륛; ) HANGUL SYLLABLE RYUGS
+B95C;B95C;1105 1172 11AB;B95C;1105 1172 11AB; # (륜; 륜; 륜; 륜; 륜; ) HANGUL SYLLABLE RYUN
+B95D;B95D;1105 1172 11AC;B95D;1105 1172 11AC; # (ë¥; ë¥; 륝; ë¥; 륝; ) HANGUL SYLLABLE RYUNJ
+B95E;B95E;1105 1172 11AD;B95E;1105 1172 11AD; # (륞; 륞; 륞; 륞; 륞; ) HANGUL SYLLABLE RYUNH
+B95F;B95F;1105 1172 11AE;B95F;1105 1172 11AE; # (륟; 륟; 륟; 륟; 륟; ) HANGUL SYLLABLE RYUD
+B960;B960;1105 1172 11AF;B960;1105 1172 11AF; # (률; 률; 률; 률; 률; ) HANGUL SYLLABLE RYUL
+B961;B961;1105 1172 11B0;B961;1105 1172 11B0; # (륡; 륡; 륡; 륡; 륡; ) HANGUL SYLLABLE RYULG
+B962;B962;1105 1172 11B1;B962;1105 1172 11B1; # (륢; 륢; 륢; 륢; 륢; ) HANGUL SYLLABLE RYULM
+B963;B963;1105 1172 11B2;B963;1105 1172 11B2; # (륣; 륣; 륣; 륣; 륣; ) HANGUL SYLLABLE RYULB
+B964;B964;1105 1172 11B3;B964;1105 1172 11B3; # (륤; 륤; 륤; 륤; 륤; ) HANGUL SYLLABLE RYULS
+B965;B965;1105 1172 11B4;B965;1105 1172 11B4; # (륥; 륥; 륥; 륥; 륥; ) HANGUL SYLLABLE RYULT
+B966;B966;1105 1172 11B5;B966;1105 1172 11B5; # (륦; 륦; 륦; 륦; 륦; ) HANGUL SYLLABLE RYULP
+B967;B967;1105 1172 11B6;B967;1105 1172 11B6; # (륧; 륧; 륧; 륧; 륧; ) HANGUL SYLLABLE RYULH
+B968;B968;1105 1172 11B7;B968;1105 1172 11B7; # (륨; 륨; 륨; 륨; 륨; ) HANGUL SYLLABLE RYUM
+B969;B969;1105 1172 11B8;B969;1105 1172 11B8; # (륩; 륩; 륩; 륩; 륩; ) HANGUL SYLLABLE RYUB
+B96A;B96A;1105 1172 11B9;B96A;1105 1172 11B9; # (륪; 륪; 륪; 륪; 륪; ) HANGUL SYLLABLE RYUBS
+B96B;B96B;1105 1172 11BA;B96B;1105 1172 11BA; # (륫; 륫; 륫; 륫; 륫; ) HANGUL SYLLABLE RYUS
+B96C;B96C;1105 1172 11BB;B96C;1105 1172 11BB; # (륬; 륬; 륬; 륬; 륬; ) HANGUL SYLLABLE RYUSS
+B96D;B96D;1105 1172 11BC;B96D;1105 1172 11BC; # (륭; 륭; 륭; 륭; 륭; ) HANGUL SYLLABLE RYUNG
+B96E;B96E;1105 1172 11BD;B96E;1105 1172 11BD; # (륮; 륮; 륮; 륮; 륮; ) HANGUL SYLLABLE RYUJ
+B96F;B96F;1105 1172 11BE;B96F;1105 1172 11BE; # (륯; 륯; 륯; 륯; 륯; ) HANGUL SYLLABLE RYUC
+B970;B970;1105 1172 11BF;B970;1105 1172 11BF; # (륰; 륰; 륰; 륰; 륰; ) HANGUL SYLLABLE RYUK
+B971;B971;1105 1172 11C0;B971;1105 1172 11C0; # (륱; 륱; 륱; 륱; 륱; ) HANGUL SYLLABLE RYUT
+B972;B972;1105 1172 11C1;B972;1105 1172 11C1; # (륲; 륲; á„…á…²á‡; 륲; á„…á…²á‡; ) HANGUL SYLLABLE RYUP
+B973;B973;1105 1172 11C2;B973;1105 1172 11C2; # (륳; 륳; 륳; 륳; 륳; ) HANGUL SYLLABLE RYUH
+B974;B974;1105 1173;B974;1105 1173; # (르; 르; 르; 르; 르; ) HANGUL SYLLABLE REU
+B975;B975;1105 1173 11A8;B975;1105 1173 11A8; # (륵; 륵; 륵; 륵; 륵; ) HANGUL SYLLABLE REUG
+B976;B976;1105 1173 11A9;B976;1105 1173 11A9; # (륶; 륶; 륶; 륶; 륶; ) HANGUL SYLLABLE REUGG
+B977;B977;1105 1173 11AA;B977;1105 1173 11AA; # (륷; 륷; 륷; 륷; 륷; ) HANGUL SYLLABLE REUGS
+B978;B978;1105 1173 11AB;B978;1105 1173 11AB; # (른; 른; 른; 른; 른; ) HANGUL SYLLABLE REUN
+B979;B979;1105 1173 11AC;B979;1105 1173 11AC; # (륹; 륹; 륹; 륹; 륹; ) HANGUL SYLLABLE REUNJ
+B97A;B97A;1105 1173 11AD;B97A;1105 1173 11AD; # (륺; 륺; 륺; 륺; 륺; ) HANGUL SYLLABLE REUNH
+B97B;B97B;1105 1173 11AE;B97B;1105 1173 11AE; # (륻; 륻; 륻; 륻; 륻; ) HANGUL SYLLABLE REUD
+B97C;B97C;1105 1173 11AF;B97C;1105 1173 11AF; # (를; 를; 를; 를; 를; ) HANGUL SYLLABLE REUL
+B97D;B97D;1105 1173 11B0;B97D;1105 1173 11B0; # (륽; 륽; 륽; 륽; 륽; ) HANGUL SYLLABLE REULG
+B97E;B97E;1105 1173 11B1;B97E;1105 1173 11B1; # (륾; 륾; 륾; 륾; 륾; ) HANGUL SYLLABLE REULM
+B97F;B97F;1105 1173 11B2;B97F;1105 1173 11B2; # (륿; 륿; 륿; 륿; 륿; ) HANGUL SYLLABLE REULB
+B980;B980;1105 1173 11B3;B980;1105 1173 11B3; # (릀; 릀; 릀; 릀; 릀; ) HANGUL SYLLABLE REULS
+B981;B981;1105 1173 11B4;B981;1105 1173 11B4; # (ë¦; ë¦; 릁; ë¦; 릁; ) HANGUL SYLLABLE REULT
+B982;B982;1105 1173 11B5;B982;1105 1173 11B5; # (릂; 릂; 릂; 릂; 릂; ) HANGUL SYLLABLE REULP
+B983;B983;1105 1173 11B6;B983;1105 1173 11B6; # (릃; 릃; 릃; 릃; 릃; ) HANGUL SYLLABLE REULH
+B984;B984;1105 1173 11B7;B984;1105 1173 11B7; # (름; 름; 름; 름; 름; ) HANGUL SYLLABLE REUM
+B985;B985;1105 1173 11B8;B985;1105 1173 11B8; # (릅; 릅; 릅; 릅; 릅; ) HANGUL SYLLABLE REUB
+B986;B986;1105 1173 11B9;B986;1105 1173 11B9; # (릆; 릆; 릆; 릆; 릆; ) HANGUL SYLLABLE REUBS
+B987;B987;1105 1173 11BA;B987;1105 1173 11BA; # (릇; 릇; 릇; 릇; 릇; ) HANGUL SYLLABLE REUS
+B988;B988;1105 1173 11BB;B988;1105 1173 11BB; # (릈; 릈; 릈; 릈; 릈; ) HANGUL SYLLABLE REUSS
+B989;B989;1105 1173 11BC;B989;1105 1173 11BC; # (릉; 릉; 릉; 릉; 릉; ) HANGUL SYLLABLE REUNG
+B98A;B98A;1105 1173 11BD;B98A;1105 1173 11BD; # (릊; 릊; 릊; 릊; 릊; ) HANGUL SYLLABLE REUJ
+B98B;B98B;1105 1173 11BE;B98B;1105 1173 11BE; # (릋; 릋; 릋; 릋; 릋; ) HANGUL SYLLABLE REUC
+B98C;B98C;1105 1173 11BF;B98C;1105 1173 11BF; # (릌; 릌; 릌; 릌; 릌; ) HANGUL SYLLABLE REUK
+B98D;B98D;1105 1173 11C0;B98D;1105 1173 11C0; # (ë¦; ë¦; 릍; ë¦; 릍; ) HANGUL SYLLABLE REUT
+B98E;B98E;1105 1173 11C1;B98E;1105 1173 11C1; # (릎; 릎; á„…á…³á‡; 릎; á„…á…³á‡; ) HANGUL SYLLABLE REUP
+B98F;B98F;1105 1173 11C2;B98F;1105 1173 11C2; # (ë¦; ë¦; 릏; ë¦; 릏; ) HANGUL SYLLABLE REUH
+B990;B990;1105 1174;B990;1105 1174; # (ë¦; ë¦; á„…á…´; ë¦; á„…á…´; ) HANGUL SYLLABLE RYI
+B991;B991;1105 1174 11A8;B991;1105 1174 11A8; # (릑; 릑; 릑; 릑; 릑; ) HANGUL SYLLABLE RYIG
+B992;B992;1105 1174 11A9;B992;1105 1174 11A9; # (릒; 릒; 릒; 릒; 릒; ) HANGUL SYLLABLE RYIGG
+B993;B993;1105 1174 11AA;B993;1105 1174 11AA; # (릓; 릓; 릓; 릓; 릓; ) HANGUL SYLLABLE RYIGS
+B994;B994;1105 1174 11AB;B994;1105 1174 11AB; # (릔; 릔; 릔; 릔; 릔; ) HANGUL SYLLABLE RYIN
+B995;B995;1105 1174 11AC;B995;1105 1174 11AC; # (릕; 릕; 릕; 릕; 릕; ) HANGUL SYLLABLE RYINJ
+B996;B996;1105 1174 11AD;B996;1105 1174 11AD; # (릖; 릖; 릖; 릖; 릖; ) HANGUL SYLLABLE RYINH
+B997;B997;1105 1174 11AE;B997;1105 1174 11AE; # (릗; 릗; 릗; 릗; 릗; ) HANGUL SYLLABLE RYID
+B998;B998;1105 1174 11AF;B998;1105 1174 11AF; # (릘; 릘; 릘; 릘; 릘; ) HANGUL SYLLABLE RYIL
+B999;B999;1105 1174 11B0;B999;1105 1174 11B0; # (릙; 릙; 릙; 릙; 릙; ) HANGUL SYLLABLE RYILG
+B99A;B99A;1105 1174 11B1;B99A;1105 1174 11B1; # (릚; 릚; 릚; 릚; 릚; ) HANGUL SYLLABLE RYILM
+B99B;B99B;1105 1174 11B2;B99B;1105 1174 11B2; # (릛; 릛; 릛; 릛; 릛; ) HANGUL SYLLABLE RYILB
+B99C;B99C;1105 1174 11B3;B99C;1105 1174 11B3; # (릜; 릜; 릜; 릜; 릜; ) HANGUL SYLLABLE RYILS
+B99D;B99D;1105 1174 11B4;B99D;1105 1174 11B4; # (ë¦; ë¦; 릝; ë¦; 릝; ) HANGUL SYLLABLE RYILT
+B99E;B99E;1105 1174 11B5;B99E;1105 1174 11B5; # (릞; 릞; 릞; 릞; 릞; ) HANGUL SYLLABLE RYILP
+B99F;B99F;1105 1174 11B6;B99F;1105 1174 11B6; # (릟; 릟; 릟; 릟; 릟; ) HANGUL SYLLABLE RYILH
+B9A0;B9A0;1105 1174 11B7;B9A0;1105 1174 11B7; # (릠; 릠; 릠; 릠; 릠; ) HANGUL SYLLABLE RYIM
+B9A1;B9A1;1105 1174 11B8;B9A1;1105 1174 11B8; # (릡; 릡; 릡; 릡; 릡; ) HANGUL SYLLABLE RYIB
+B9A2;B9A2;1105 1174 11B9;B9A2;1105 1174 11B9; # (릢; 릢; 릢; 릢; 릢; ) HANGUL SYLLABLE RYIBS
+B9A3;B9A3;1105 1174 11BA;B9A3;1105 1174 11BA; # (릣; 릣; 릣; 릣; 릣; ) HANGUL SYLLABLE RYIS
+B9A4;B9A4;1105 1174 11BB;B9A4;1105 1174 11BB; # (릤; 릤; 릤; 릤; 릤; ) HANGUL SYLLABLE RYISS
+B9A5;B9A5;1105 1174 11BC;B9A5;1105 1174 11BC; # (릥; 릥; 릥; 릥; 릥; ) HANGUL SYLLABLE RYING
+B9A6;B9A6;1105 1174 11BD;B9A6;1105 1174 11BD; # (릦; 릦; 릦; 릦; 릦; ) HANGUL SYLLABLE RYIJ
+B9A7;B9A7;1105 1174 11BE;B9A7;1105 1174 11BE; # (릧; 릧; 릧; 릧; 릧; ) HANGUL SYLLABLE RYIC
+B9A8;B9A8;1105 1174 11BF;B9A8;1105 1174 11BF; # (릨; 릨; 릨; 릨; 릨; ) HANGUL SYLLABLE RYIK
+B9A9;B9A9;1105 1174 11C0;B9A9;1105 1174 11C0; # (릩; 릩; 릩; 릩; 릩; ) HANGUL SYLLABLE RYIT
+B9AA;B9AA;1105 1174 11C1;B9AA;1105 1174 11C1; # (릪; 릪; á„…á…´á‡; 릪; á„…á…´á‡; ) HANGUL SYLLABLE RYIP
+B9AB;B9AB;1105 1174 11C2;B9AB;1105 1174 11C2; # (릫; 릫; 릫; 릫; 릫; ) HANGUL SYLLABLE RYIH
+B9AC;B9AC;1105 1175;B9AC;1105 1175; # (리; 리; 리; 리; 리; ) HANGUL SYLLABLE RI
+B9AD;B9AD;1105 1175 11A8;B9AD;1105 1175 11A8; # (릭; 릭; 릭; 릭; 릭; ) HANGUL SYLLABLE RIG
+B9AE;B9AE;1105 1175 11A9;B9AE;1105 1175 11A9; # (릮; 릮; 릮; 릮; 릮; ) HANGUL SYLLABLE RIGG
+B9AF;B9AF;1105 1175 11AA;B9AF;1105 1175 11AA; # (릯; 릯; 릯; 릯; 릯; ) HANGUL SYLLABLE RIGS
+B9B0;B9B0;1105 1175 11AB;B9B0;1105 1175 11AB; # (린; 린; 린; 린; 린; ) HANGUL SYLLABLE RIN
+B9B1;B9B1;1105 1175 11AC;B9B1;1105 1175 11AC; # (릱; 릱; 릱; 릱; 릱; ) HANGUL SYLLABLE RINJ
+B9B2;B9B2;1105 1175 11AD;B9B2;1105 1175 11AD; # (릲; 릲; 릲; 릲; 릲; ) HANGUL SYLLABLE RINH
+B9B3;B9B3;1105 1175 11AE;B9B3;1105 1175 11AE; # (릳; 릳; 릳; 릳; 릳; ) HANGUL SYLLABLE RID
+B9B4;B9B4;1105 1175 11AF;B9B4;1105 1175 11AF; # (릴; 릴; 릴; 릴; 릴; ) HANGUL SYLLABLE RIL
+B9B5;B9B5;1105 1175 11B0;B9B5;1105 1175 11B0; # (릵; 릵; 릵; 릵; 릵; ) HANGUL SYLLABLE RILG
+B9B6;B9B6;1105 1175 11B1;B9B6;1105 1175 11B1; # (릶; 릶; 릶; 릶; 릶; ) HANGUL SYLLABLE RILM
+B9B7;B9B7;1105 1175 11B2;B9B7;1105 1175 11B2; # (릷; 릷; 릷; 릷; 릷; ) HANGUL SYLLABLE RILB
+B9B8;B9B8;1105 1175 11B3;B9B8;1105 1175 11B3; # (릸; 릸; 릸; 릸; 릸; ) HANGUL SYLLABLE RILS
+B9B9;B9B9;1105 1175 11B4;B9B9;1105 1175 11B4; # (릹; 릹; 릹; 릹; 릹; ) HANGUL SYLLABLE RILT
+B9BA;B9BA;1105 1175 11B5;B9BA;1105 1175 11B5; # (릺; 릺; 릺; 릺; 릺; ) HANGUL SYLLABLE RILP
+B9BB;B9BB;1105 1175 11B6;B9BB;1105 1175 11B6; # (릻; 릻; 릻; 릻; 릻; ) HANGUL SYLLABLE RILH
+B9BC;B9BC;1105 1175 11B7;B9BC;1105 1175 11B7; # (림; 림; 림; 림; 림; ) HANGUL SYLLABLE RIM
+B9BD;B9BD;1105 1175 11B8;B9BD;1105 1175 11B8; # (립; 립; 립; 립; 립; ) HANGUL SYLLABLE RIB
+B9BE;B9BE;1105 1175 11B9;B9BE;1105 1175 11B9; # (릾; 릾; 릾; 릾; 릾; ) HANGUL SYLLABLE RIBS
+B9BF;B9BF;1105 1175 11BA;B9BF;1105 1175 11BA; # (릿; 릿; 릿; 릿; 릿; ) HANGUL SYLLABLE RIS
+B9C0;B9C0;1105 1175 11BB;B9C0;1105 1175 11BB; # (맀; 맀; 맀; 맀; 맀; ) HANGUL SYLLABLE RISS
+B9C1;B9C1;1105 1175 11BC;B9C1;1105 1175 11BC; # (ë§; ë§; 링; ë§; 링; ) HANGUL SYLLABLE RING
+B9C2;B9C2;1105 1175 11BD;B9C2;1105 1175 11BD; # (맂; 맂; 맂; 맂; 맂; ) HANGUL SYLLABLE RIJ
+B9C3;B9C3;1105 1175 11BE;B9C3;1105 1175 11BE; # (맃; 맃; 맃; 맃; 맃; ) HANGUL SYLLABLE RIC
+B9C4;B9C4;1105 1175 11BF;B9C4;1105 1175 11BF; # (맄; 맄; 맄; 맄; 맄; ) HANGUL SYLLABLE RIK
+B9C5;B9C5;1105 1175 11C0;B9C5;1105 1175 11C0; # (맅; 맅; 맅; 맅; 맅; ) HANGUL SYLLABLE RIT
+B9C6;B9C6;1105 1175 11C1;B9C6;1105 1175 11C1; # (맆; 맆; á„…á…µá‡; 맆; á„…á…µá‡; ) HANGUL SYLLABLE RIP
+B9C7;B9C7;1105 1175 11C2;B9C7;1105 1175 11C2; # (맇; 맇; 맇; 맇; 맇; ) HANGUL SYLLABLE RIH
+B9C8;B9C8;1106 1161;B9C8;1106 1161; # (마; 마; 마; 마; 마; ) HANGUL SYLLABLE MA
+B9C9;B9C9;1106 1161 11A8;B9C9;1106 1161 11A8; # (막; 막; 막; 막; 막; ) HANGUL SYLLABLE MAG
+B9CA;B9CA;1106 1161 11A9;B9CA;1106 1161 11A9; # (맊; 맊; 맊; 맊; 맊; ) HANGUL SYLLABLE MAGG
+B9CB;B9CB;1106 1161 11AA;B9CB;1106 1161 11AA; # (맋; 맋; 맋; 맋; 맋; ) HANGUL SYLLABLE MAGS
+B9CC;B9CC;1106 1161 11AB;B9CC;1106 1161 11AB; # (만; 만; 만; 만; 만; ) HANGUL SYLLABLE MAN
+B9CD;B9CD;1106 1161 11AC;B9CD;1106 1161 11AC; # (ë§; ë§; 맍; ë§; 맍; ) HANGUL SYLLABLE MANJ
+B9CE;B9CE;1106 1161 11AD;B9CE;1106 1161 11AD; # (많; 많; 많; 많; 많; ) HANGUL SYLLABLE MANH
+B9CF;B9CF;1106 1161 11AE;B9CF;1106 1161 11AE; # (ë§; ë§; 맏; ë§; 맏; ) HANGUL SYLLABLE MAD
+B9D0;B9D0;1106 1161 11AF;B9D0;1106 1161 11AF; # (ë§; ë§; 말; ë§; 말; ) HANGUL SYLLABLE MAL
+B9D1;B9D1;1106 1161 11B0;B9D1;1106 1161 11B0; # (맑; 맑; 맑; 맑; 맑; ) HANGUL SYLLABLE MALG
+B9D2;B9D2;1106 1161 11B1;B9D2;1106 1161 11B1; # (맒; 맒; 맒; 맒; 맒; ) HANGUL SYLLABLE MALM
+B9D3;B9D3;1106 1161 11B2;B9D3;1106 1161 11B2; # (맓; 맓; 맓; 맓; 맓; ) HANGUL SYLLABLE MALB
+B9D4;B9D4;1106 1161 11B3;B9D4;1106 1161 11B3; # (맔; 맔; 맔; 맔; 맔; ) HANGUL SYLLABLE MALS
+B9D5;B9D5;1106 1161 11B4;B9D5;1106 1161 11B4; # (맕; 맕; 맕; 맕; 맕; ) HANGUL SYLLABLE MALT
+B9D6;B9D6;1106 1161 11B5;B9D6;1106 1161 11B5; # (맖; 맖; 맖; 맖; 맖; ) HANGUL SYLLABLE MALP
+B9D7;B9D7;1106 1161 11B6;B9D7;1106 1161 11B6; # (맗; 맗; 맗; 맗; 맗; ) HANGUL SYLLABLE MALH
+B9D8;B9D8;1106 1161 11B7;B9D8;1106 1161 11B7; # (맘; 맘; 맘; 맘; 맘; ) HANGUL SYLLABLE MAM
+B9D9;B9D9;1106 1161 11B8;B9D9;1106 1161 11B8; # (맙; 맙; 맙; 맙; 맙; ) HANGUL SYLLABLE MAB
+B9DA;B9DA;1106 1161 11B9;B9DA;1106 1161 11B9; # (맚; 맚; 맚; 맚; 맚; ) HANGUL SYLLABLE MABS
+B9DB;B9DB;1106 1161 11BA;B9DB;1106 1161 11BA; # (맛; 맛; 맛; 맛; 맛; ) HANGUL SYLLABLE MAS
+B9DC;B9DC;1106 1161 11BB;B9DC;1106 1161 11BB; # (맜; 맜; 맜; 맜; 맜; ) HANGUL SYLLABLE MASS
+B9DD;B9DD;1106 1161 11BC;B9DD;1106 1161 11BC; # (ë§; ë§; 망; ë§; 망; ) HANGUL SYLLABLE MANG
+B9DE;B9DE;1106 1161 11BD;B9DE;1106 1161 11BD; # (맞; 맞; 맞; 맞; 맞; ) HANGUL SYLLABLE MAJ
+B9DF;B9DF;1106 1161 11BE;B9DF;1106 1161 11BE; # (맟; 맟; 맟; 맟; 맟; ) HANGUL SYLLABLE MAC
+B9E0;B9E0;1106 1161 11BF;B9E0;1106 1161 11BF; # (맠; 맠; 맠; 맠; 맠; ) HANGUL SYLLABLE MAK
+B9E1;B9E1;1106 1161 11C0;B9E1;1106 1161 11C0; # (맡; 맡; 맡; 맡; 맡; ) HANGUL SYLLABLE MAT
+B9E2;B9E2;1106 1161 11C1;B9E2;1106 1161 11C1; # (맢; 맢; 마á‡; 맢; 마á‡; ) HANGUL SYLLABLE MAP
+B9E3;B9E3;1106 1161 11C2;B9E3;1106 1161 11C2; # (맣; 맣; 맣; 맣; 맣; ) HANGUL SYLLABLE MAH
+B9E4;B9E4;1106 1162;B9E4;1106 1162; # (매; 매; 매; 매; 매; ) HANGUL SYLLABLE MAE
+B9E5;B9E5;1106 1162 11A8;B9E5;1106 1162 11A8; # (맥; 맥; 맥; 맥; 맥; ) HANGUL SYLLABLE MAEG
+B9E6;B9E6;1106 1162 11A9;B9E6;1106 1162 11A9; # (맦; 맦; 맦; 맦; 맦; ) HANGUL SYLLABLE MAEGG
+B9E7;B9E7;1106 1162 11AA;B9E7;1106 1162 11AA; # (맧; 맧; 맧; 맧; 맧; ) HANGUL SYLLABLE MAEGS
+B9E8;B9E8;1106 1162 11AB;B9E8;1106 1162 11AB; # (맨; 맨; 맨; 맨; 맨; ) HANGUL SYLLABLE MAEN
+B9E9;B9E9;1106 1162 11AC;B9E9;1106 1162 11AC; # (맩; 맩; 맩; 맩; 맩; ) HANGUL SYLLABLE MAENJ
+B9EA;B9EA;1106 1162 11AD;B9EA;1106 1162 11AD; # (맪; 맪; 맪; 맪; 맪; ) HANGUL SYLLABLE MAENH
+B9EB;B9EB;1106 1162 11AE;B9EB;1106 1162 11AE; # (맫; 맫; 맫; 맫; 맫; ) HANGUL SYLLABLE MAED
+B9EC;B9EC;1106 1162 11AF;B9EC;1106 1162 11AF; # (맬; 맬; 맬; 맬; 맬; ) HANGUL SYLLABLE MAEL
+B9ED;B9ED;1106 1162 11B0;B9ED;1106 1162 11B0; # (맭; 맭; 맭; 맭; 맭; ) HANGUL SYLLABLE MAELG
+B9EE;B9EE;1106 1162 11B1;B9EE;1106 1162 11B1; # (맮; 맮; 맮; 맮; 맮; ) HANGUL SYLLABLE MAELM
+B9EF;B9EF;1106 1162 11B2;B9EF;1106 1162 11B2; # (맯; 맯; 맯; 맯; 맯; ) HANGUL SYLLABLE MAELB
+B9F0;B9F0;1106 1162 11B3;B9F0;1106 1162 11B3; # (맰; 맰; 맰; 맰; 맰; ) HANGUL SYLLABLE MAELS
+B9F1;B9F1;1106 1162 11B4;B9F1;1106 1162 11B4; # (맱; 맱; 맱; 맱; 맱; ) HANGUL SYLLABLE MAELT
+B9F2;B9F2;1106 1162 11B5;B9F2;1106 1162 11B5; # (맲; 맲; 맲; 맲; 맲; ) HANGUL SYLLABLE MAELP
+B9F3;B9F3;1106 1162 11B6;B9F3;1106 1162 11B6; # (맳; 맳; 맳; 맳; 맳; ) HANGUL SYLLABLE MAELH
+B9F4;B9F4;1106 1162 11B7;B9F4;1106 1162 11B7; # (맴; 맴; 맴; 맴; 맴; ) HANGUL SYLLABLE MAEM
+B9F5;B9F5;1106 1162 11B8;B9F5;1106 1162 11B8; # (맵; 맵; 맵; 맵; 맵; ) HANGUL SYLLABLE MAEB
+B9F6;B9F6;1106 1162 11B9;B9F6;1106 1162 11B9; # (맶; 맶; 맶; 맶; 맶; ) HANGUL SYLLABLE MAEBS
+B9F7;B9F7;1106 1162 11BA;B9F7;1106 1162 11BA; # (맷; 맷; 맷; 맷; 맷; ) HANGUL SYLLABLE MAES
+B9F8;B9F8;1106 1162 11BB;B9F8;1106 1162 11BB; # (맸; 맸; 맸; 맸; 맸; ) HANGUL SYLLABLE MAESS
+B9F9;B9F9;1106 1162 11BC;B9F9;1106 1162 11BC; # (맹; 맹; 맹; 맹; 맹; ) HANGUL SYLLABLE MAENG
+B9FA;B9FA;1106 1162 11BD;B9FA;1106 1162 11BD; # (맺; 맺; 맺; 맺; 맺; ) HANGUL SYLLABLE MAEJ
+B9FB;B9FB;1106 1162 11BE;B9FB;1106 1162 11BE; # (맻; 맻; 맻; 맻; 맻; ) HANGUL SYLLABLE MAEC
+B9FC;B9FC;1106 1162 11BF;B9FC;1106 1162 11BF; # (맼; 맼; 맼; 맼; 맼; ) HANGUL SYLLABLE MAEK
+B9FD;B9FD;1106 1162 11C0;B9FD;1106 1162 11C0; # (맽; 맽; 맽; 맽; 맽; ) HANGUL SYLLABLE MAET
+B9FE;B9FE;1106 1162 11C1;B9FE;1106 1162 11C1; # (맾; 맾; 매á‡; 맾; 매á‡; ) HANGUL SYLLABLE MAEP
+B9FF;B9FF;1106 1162 11C2;B9FF;1106 1162 11C2; # (맿; 맿; 맿; 맿; 맿; ) HANGUL SYLLABLE MAEH
+BA00;BA00;1106 1163;BA00;1106 1163; # (먀; 먀; 먀; 먀; 먀; ) HANGUL SYLLABLE MYA
+BA01;BA01;1106 1163 11A8;BA01;1106 1163 11A8; # (ë¨; ë¨; 먁; ë¨; 먁; ) HANGUL SYLLABLE MYAG
+BA02;BA02;1106 1163 11A9;BA02;1106 1163 11A9; # (먂; 먂; 먂; 먂; 먂; ) HANGUL SYLLABLE MYAGG
+BA03;BA03;1106 1163 11AA;BA03;1106 1163 11AA; # (먃; 먃; 먃; 먃; 먃; ) HANGUL SYLLABLE MYAGS
+BA04;BA04;1106 1163 11AB;BA04;1106 1163 11AB; # (먄; 먄; 먄; 먄; 먄; ) HANGUL SYLLABLE MYAN
+BA05;BA05;1106 1163 11AC;BA05;1106 1163 11AC; # (먅; 먅; 먅; 먅; 먅; ) HANGUL SYLLABLE MYANJ
+BA06;BA06;1106 1163 11AD;BA06;1106 1163 11AD; # (먆; 먆; 먆; 먆; 먆; ) HANGUL SYLLABLE MYANH
+BA07;BA07;1106 1163 11AE;BA07;1106 1163 11AE; # (먇; 먇; 먇; 먇; 먇; ) HANGUL SYLLABLE MYAD
+BA08;BA08;1106 1163 11AF;BA08;1106 1163 11AF; # (먈; 먈; 먈; 먈; 먈; ) HANGUL SYLLABLE MYAL
+BA09;BA09;1106 1163 11B0;BA09;1106 1163 11B0; # (먉; 먉; 먉; 먉; 먉; ) HANGUL SYLLABLE MYALG
+BA0A;BA0A;1106 1163 11B1;BA0A;1106 1163 11B1; # (먊; 먊; 먊; 먊; 먊; ) HANGUL SYLLABLE MYALM
+BA0B;BA0B;1106 1163 11B2;BA0B;1106 1163 11B2; # (먋; 먋; 먋; 먋; 먋; ) HANGUL SYLLABLE MYALB
+BA0C;BA0C;1106 1163 11B3;BA0C;1106 1163 11B3; # (먌; 먌; 먌; 먌; 먌; ) HANGUL SYLLABLE MYALS
+BA0D;BA0D;1106 1163 11B4;BA0D;1106 1163 11B4; # (ë¨; ë¨; 먍; ë¨; 먍; ) HANGUL SYLLABLE MYALT
+BA0E;BA0E;1106 1163 11B5;BA0E;1106 1163 11B5; # (먎; 먎; 먎; 먎; 먎; ) HANGUL SYLLABLE MYALP
+BA0F;BA0F;1106 1163 11B6;BA0F;1106 1163 11B6; # (ë¨; ë¨; 먏; ë¨; 먏; ) HANGUL SYLLABLE MYALH
+BA10;BA10;1106 1163 11B7;BA10;1106 1163 11B7; # (ë¨; ë¨; 먐; ë¨; 먐; ) HANGUL SYLLABLE MYAM
+BA11;BA11;1106 1163 11B8;BA11;1106 1163 11B8; # (먑; 먑; 먑; 먑; 먑; ) HANGUL SYLLABLE MYAB
+BA12;BA12;1106 1163 11B9;BA12;1106 1163 11B9; # (먒; 먒; 먒; 먒; 먒; ) HANGUL SYLLABLE MYABS
+BA13;BA13;1106 1163 11BA;BA13;1106 1163 11BA; # (먓; 먓; 먓; 먓; 먓; ) HANGUL SYLLABLE MYAS
+BA14;BA14;1106 1163 11BB;BA14;1106 1163 11BB; # (먔; 먔; 먔; 먔; 먔; ) HANGUL SYLLABLE MYASS
+BA15;BA15;1106 1163 11BC;BA15;1106 1163 11BC; # (먕; 먕; 먕; 먕; 먕; ) HANGUL SYLLABLE MYANG
+BA16;BA16;1106 1163 11BD;BA16;1106 1163 11BD; # (먖; 먖; 먖; 먖; 먖; ) HANGUL SYLLABLE MYAJ
+BA17;BA17;1106 1163 11BE;BA17;1106 1163 11BE; # (먗; 먗; 먗; 먗; 먗; ) HANGUL SYLLABLE MYAC
+BA18;BA18;1106 1163 11BF;BA18;1106 1163 11BF; # (먘; 먘; 먘; 먘; 먘; ) HANGUL SYLLABLE MYAK
+BA19;BA19;1106 1163 11C0;BA19;1106 1163 11C0; # (먙; 먙; 먙; 먙; 먙; ) HANGUL SYLLABLE MYAT
+BA1A;BA1A;1106 1163 11C1;BA1A;1106 1163 11C1; # (먚; 먚; 먀á‡; 먚; 먀á‡; ) HANGUL SYLLABLE MYAP
+BA1B;BA1B;1106 1163 11C2;BA1B;1106 1163 11C2; # (먛; 먛; 먛; 먛; 먛; ) HANGUL SYLLABLE MYAH
+BA1C;BA1C;1106 1164;BA1C;1106 1164; # (먜; 먜; 먜; 먜; 먜; ) HANGUL SYLLABLE MYAE
+BA1D;BA1D;1106 1164 11A8;BA1D;1106 1164 11A8; # (ë¨; ë¨; 먝; ë¨; 먝; ) HANGUL SYLLABLE MYAEG
+BA1E;BA1E;1106 1164 11A9;BA1E;1106 1164 11A9; # (먞; 먞; 먞; 먞; 먞; ) HANGUL SYLLABLE MYAEGG
+BA1F;BA1F;1106 1164 11AA;BA1F;1106 1164 11AA; # (먟; 먟; 먟; 먟; 먟; ) HANGUL SYLLABLE MYAEGS
+BA20;BA20;1106 1164 11AB;BA20;1106 1164 11AB; # (먠; 먠; 먠; 먠; 먠; ) HANGUL SYLLABLE MYAEN
+BA21;BA21;1106 1164 11AC;BA21;1106 1164 11AC; # (먡; 먡; 먡; 먡; 먡; ) HANGUL SYLLABLE MYAENJ
+BA22;BA22;1106 1164 11AD;BA22;1106 1164 11AD; # (먢; 먢; 먢; 먢; 먢; ) HANGUL SYLLABLE MYAENH
+BA23;BA23;1106 1164 11AE;BA23;1106 1164 11AE; # (먣; 먣; 먣; 먣; 먣; ) HANGUL SYLLABLE MYAED
+BA24;BA24;1106 1164 11AF;BA24;1106 1164 11AF; # (먤; 먤; 먤; 먤; 먤; ) HANGUL SYLLABLE MYAEL
+BA25;BA25;1106 1164 11B0;BA25;1106 1164 11B0; # (먥; 먥; 먥; 먥; 먥; ) HANGUL SYLLABLE MYAELG
+BA26;BA26;1106 1164 11B1;BA26;1106 1164 11B1; # (먦; 먦; 먦; 먦; 먦; ) HANGUL SYLLABLE MYAELM
+BA27;BA27;1106 1164 11B2;BA27;1106 1164 11B2; # (먧; 먧; 먧; 먧; 먧; ) HANGUL SYLLABLE MYAELB
+BA28;BA28;1106 1164 11B3;BA28;1106 1164 11B3; # (먨; 먨; 먨; 먨; 먨; ) HANGUL SYLLABLE MYAELS
+BA29;BA29;1106 1164 11B4;BA29;1106 1164 11B4; # (먩; 먩; 먩; 먩; 먩; ) HANGUL SYLLABLE MYAELT
+BA2A;BA2A;1106 1164 11B5;BA2A;1106 1164 11B5; # (먪; 먪; 먪; 먪; 먪; ) HANGUL SYLLABLE MYAELP
+BA2B;BA2B;1106 1164 11B6;BA2B;1106 1164 11B6; # (먫; 먫; 먫; 먫; 먫; ) HANGUL SYLLABLE MYAELH
+BA2C;BA2C;1106 1164 11B7;BA2C;1106 1164 11B7; # (먬; 먬; 먬; 먬; 먬; ) HANGUL SYLLABLE MYAEM
+BA2D;BA2D;1106 1164 11B8;BA2D;1106 1164 11B8; # (먭; 먭; 먭; 먭; 먭; ) HANGUL SYLLABLE MYAEB
+BA2E;BA2E;1106 1164 11B9;BA2E;1106 1164 11B9; # (먮; 먮; 먮; 먮; 먮; ) HANGUL SYLLABLE MYAEBS
+BA2F;BA2F;1106 1164 11BA;BA2F;1106 1164 11BA; # (먯; 먯; 먯; 먯; 먯; ) HANGUL SYLLABLE MYAES
+BA30;BA30;1106 1164 11BB;BA30;1106 1164 11BB; # (먰; 먰; 먰; 먰; 먰; ) HANGUL SYLLABLE MYAESS
+BA31;BA31;1106 1164 11BC;BA31;1106 1164 11BC; # (먱; 먱; 먱; 먱; 먱; ) HANGUL SYLLABLE MYAENG
+BA32;BA32;1106 1164 11BD;BA32;1106 1164 11BD; # (먲; 먲; 먲; 먲; 먲; ) HANGUL SYLLABLE MYAEJ
+BA33;BA33;1106 1164 11BE;BA33;1106 1164 11BE; # (먳; 먳; 먳; 먳; 먳; ) HANGUL SYLLABLE MYAEC
+BA34;BA34;1106 1164 11BF;BA34;1106 1164 11BF; # (먴; 먴; 먴; 먴; 먴; ) HANGUL SYLLABLE MYAEK
+BA35;BA35;1106 1164 11C0;BA35;1106 1164 11C0; # (먵; 먵; 먵; 먵; 먵; ) HANGUL SYLLABLE MYAET
+BA36;BA36;1106 1164 11C1;BA36;1106 1164 11C1; # (먶; 먶; 먜á‡; 먶; 먜á‡; ) HANGUL SYLLABLE MYAEP
+BA37;BA37;1106 1164 11C2;BA37;1106 1164 11C2; # (먷; 먷; 먷; 먷; 먷; ) HANGUL SYLLABLE MYAEH
+BA38;BA38;1106 1165;BA38;1106 1165; # (머; 머; 머; 머; 머; ) HANGUL SYLLABLE MEO
+BA39;BA39;1106 1165 11A8;BA39;1106 1165 11A8; # (먹; 먹; 먹; 먹; 먹; ) HANGUL SYLLABLE MEOG
+BA3A;BA3A;1106 1165 11A9;BA3A;1106 1165 11A9; # (먺; 먺; 먺; 먺; 먺; ) HANGUL SYLLABLE MEOGG
+BA3B;BA3B;1106 1165 11AA;BA3B;1106 1165 11AA; # (먻; 먻; 먻; 먻; 먻; ) HANGUL SYLLABLE MEOGS
+BA3C;BA3C;1106 1165 11AB;BA3C;1106 1165 11AB; # (먼; 먼; 먼; 먼; 먼; ) HANGUL SYLLABLE MEON
+BA3D;BA3D;1106 1165 11AC;BA3D;1106 1165 11AC; # (먽; 먽; 먽; 먽; 먽; ) HANGUL SYLLABLE MEONJ
+BA3E;BA3E;1106 1165 11AD;BA3E;1106 1165 11AD; # (먾; 먾; 먾; 먾; 먾; ) HANGUL SYLLABLE MEONH
+BA3F;BA3F;1106 1165 11AE;BA3F;1106 1165 11AE; # (먿; 먿; 먿; 먿; 먿; ) HANGUL SYLLABLE MEOD
+BA40;BA40;1106 1165 11AF;BA40;1106 1165 11AF; # (멀; 멀; 멀; 멀; 멀; ) HANGUL SYLLABLE MEOL
+BA41;BA41;1106 1165 11B0;BA41;1106 1165 11B0; # (ë©; ë©; 멁; ë©; 멁; ) HANGUL SYLLABLE MEOLG
+BA42;BA42;1106 1165 11B1;BA42;1106 1165 11B1; # (멂; 멂; 멂; 멂; 멂; ) HANGUL SYLLABLE MEOLM
+BA43;BA43;1106 1165 11B2;BA43;1106 1165 11B2; # (멃; 멃; 멃; 멃; 멃; ) HANGUL SYLLABLE MEOLB
+BA44;BA44;1106 1165 11B3;BA44;1106 1165 11B3; # (멄; 멄; 멄; 멄; 멄; ) HANGUL SYLLABLE MEOLS
+BA45;BA45;1106 1165 11B4;BA45;1106 1165 11B4; # (멅; 멅; 멅; 멅; 멅; ) HANGUL SYLLABLE MEOLT
+BA46;BA46;1106 1165 11B5;BA46;1106 1165 11B5; # (멆; 멆; 멆; 멆; 멆; ) HANGUL SYLLABLE MEOLP
+BA47;BA47;1106 1165 11B6;BA47;1106 1165 11B6; # (멇; 멇; 멇; 멇; 멇; ) HANGUL SYLLABLE MEOLH
+BA48;BA48;1106 1165 11B7;BA48;1106 1165 11B7; # (멈; 멈; 멈; 멈; 멈; ) HANGUL SYLLABLE MEOM
+BA49;BA49;1106 1165 11B8;BA49;1106 1165 11B8; # (멉; 멉; 멉; 멉; 멉; ) HANGUL SYLLABLE MEOB
+BA4A;BA4A;1106 1165 11B9;BA4A;1106 1165 11B9; # (멊; 멊; 멊; 멊; 멊; ) HANGUL SYLLABLE MEOBS
+BA4B;BA4B;1106 1165 11BA;BA4B;1106 1165 11BA; # (멋; 멋; 멋; 멋; 멋; ) HANGUL SYLLABLE MEOS
+BA4C;BA4C;1106 1165 11BB;BA4C;1106 1165 11BB; # (멌; 멌; 멌; 멌; 멌; ) HANGUL SYLLABLE MEOSS
+BA4D;BA4D;1106 1165 11BC;BA4D;1106 1165 11BC; # (ë©; ë©; 멍; ë©; 멍; ) HANGUL SYLLABLE MEONG
+BA4E;BA4E;1106 1165 11BD;BA4E;1106 1165 11BD; # (멎; 멎; 멎; 멎; 멎; ) HANGUL SYLLABLE MEOJ
+BA4F;BA4F;1106 1165 11BE;BA4F;1106 1165 11BE; # (ë©; ë©; 멏; ë©; 멏; ) HANGUL SYLLABLE MEOC
+BA50;BA50;1106 1165 11BF;BA50;1106 1165 11BF; # (ë©; ë©; 멐; ë©; 멐; ) HANGUL SYLLABLE MEOK
+BA51;BA51;1106 1165 11C0;BA51;1106 1165 11C0; # (멑; 멑; 멑; 멑; 멑; ) HANGUL SYLLABLE MEOT
+BA52;BA52;1106 1165 11C1;BA52;1106 1165 11C1; # (ë©’; ë©’; 머á‡; ë©’; 머á‡; ) HANGUL SYLLABLE MEOP
+BA53;BA53;1106 1165 11C2;BA53;1106 1165 11C2; # (멓; 멓; 멓; 멓; 멓; ) HANGUL SYLLABLE MEOH
+BA54;BA54;1106 1166;BA54;1106 1166; # (메; 메; 메; 메; 메; ) HANGUL SYLLABLE ME
+BA55;BA55;1106 1166 11A8;BA55;1106 1166 11A8; # (멕; 멕; 멕; 멕; 멕; ) HANGUL SYLLABLE MEG
+BA56;BA56;1106 1166 11A9;BA56;1106 1166 11A9; # (멖; 멖; 멖; 멖; 멖; ) HANGUL SYLLABLE MEGG
+BA57;BA57;1106 1166 11AA;BA57;1106 1166 11AA; # (멗; 멗; 멗; 멗; 멗; ) HANGUL SYLLABLE MEGS
+BA58;BA58;1106 1166 11AB;BA58;1106 1166 11AB; # (멘; 멘; 멘; 멘; 멘; ) HANGUL SYLLABLE MEN
+BA59;BA59;1106 1166 11AC;BA59;1106 1166 11AC; # (멙; 멙; 멙; 멙; 멙; ) HANGUL SYLLABLE MENJ
+BA5A;BA5A;1106 1166 11AD;BA5A;1106 1166 11AD; # (멚; 멚; 멚; 멚; 멚; ) HANGUL SYLLABLE MENH
+BA5B;BA5B;1106 1166 11AE;BA5B;1106 1166 11AE; # (멛; 멛; 멛; 멛; 멛; ) HANGUL SYLLABLE MED
+BA5C;BA5C;1106 1166 11AF;BA5C;1106 1166 11AF; # (멜; 멜; 멜; 멜; 멜; ) HANGUL SYLLABLE MEL
+BA5D;BA5D;1106 1166 11B0;BA5D;1106 1166 11B0; # (ë©; ë©; 멝; ë©; 멝; ) HANGUL SYLLABLE MELG
+BA5E;BA5E;1106 1166 11B1;BA5E;1106 1166 11B1; # (멞; 멞; 멞; 멞; 멞; ) HANGUL SYLLABLE MELM
+BA5F;BA5F;1106 1166 11B2;BA5F;1106 1166 11B2; # (멟; 멟; 멟; 멟; 멟; ) HANGUL SYLLABLE MELB
+BA60;BA60;1106 1166 11B3;BA60;1106 1166 11B3; # (멠; 멠; 멠; 멠; 멠; ) HANGUL SYLLABLE MELS
+BA61;BA61;1106 1166 11B4;BA61;1106 1166 11B4; # (멡; 멡; 멡; 멡; 멡; ) HANGUL SYLLABLE MELT
+BA62;BA62;1106 1166 11B5;BA62;1106 1166 11B5; # (멢; 멢; 멢; 멢; 멢; ) HANGUL SYLLABLE MELP
+BA63;BA63;1106 1166 11B6;BA63;1106 1166 11B6; # (멣; 멣; 멣; 멣; 멣; ) HANGUL SYLLABLE MELH
+BA64;BA64;1106 1166 11B7;BA64;1106 1166 11B7; # (멤; 멤; 멤; 멤; 멤; ) HANGUL SYLLABLE MEM
+BA65;BA65;1106 1166 11B8;BA65;1106 1166 11B8; # (멥; 멥; 멥; 멥; 멥; ) HANGUL SYLLABLE MEB
+BA66;BA66;1106 1166 11B9;BA66;1106 1166 11B9; # (멦; 멦; 멦; 멦; 멦; ) HANGUL SYLLABLE MEBS
+BA67;BA67;1106 1166 11BA;BA67;1106 1166 11BA; # (멧; 멧; 멧; 멧; 멧; ) HANGUL SYLLABLE MES
+BA68;BA68;1106 1166 11BB;BA68;1106 1166 11BB; # (멨; 멨; 멨; 멨; 멨; ) HANGUL SYLLABLE MESS
+BA69;BA69;1106 1166 11BC;BA69;1106 1166 11BC; # (멩; 멩; 멩; 멩; 멩; ) HANGUL SYLLABLE MENG
+BA6A;BA6A;1106 1166 11BD;BA6A;1106 1166 11BD; # (멪; 멪; 멪; 멪; 멪; ) HANGUL SYLLABLE MEJ
+BA6B;BA6B;1106 1166 11BE;BA6B;1106 1166 11BE; # (멫; 멫; 멫; 멫; 멫; ) HANGUL SYLLABLE MEC
+BA6C;BA6C;1106 1166 11BF;BA6C;1106 1166 11BF; # (멬; 멬; 멬; 멬; 멬; ) HANGUL SYLLABLE MEK
+BA6D;BA6D;1106 1166 11C0;BA6D;1106 1166 11C0; # (멭; 멭; 멭; 멭; 멭; ) HANGUL SYLLABLE MET
+BA6E;BA6E;1106 1166 11C1;BA6E;1106 1166 11C1; # (ë©®; ë©®; 메á‡; ë©®; 메á‡; ) HANGUL SYLLABLE MEP
+BA6F;BA6F;1106 1166 11C2;BA6F;1106 1166 11C2; # (멯; 멯; 멯; 멯; 멯; ) HANGUL SYLLABLE MEH
+BA70;BA70;1106 1167;BA70;1106 1167; # (며; 며; 며; 며; 며; ) HANGUL SYLLABLE MYEO
+BA71;BA71;1106 1167 11A8;BA71;1106 1167 11A8; # (멱; 멱; 멱; 멱; 멱; ) HANGUL SYLLABLE MYEOG
+BA72;BA72;1106 1167 11A9;BA72;1106 1167 11A9; # (멲; 멲; 멲; 멲; 멲; ) HANGUL SYLLABLE MYEOGG
+BA73;BA73;1106 1167 11AA;BA73;1106 1167 11AA; # (멳; 멳; 멳; 멳; 멳; ) HANGUL SYLLABLE MYEOGS
+BA74;BA74;1106 1167 11AB;BA74;1106 1167 11AB; # (면; 면; 면; 면; 면; ) HANGUL SYLLABLE MYEON
+BA75;BA75;1106 1167 11AC;BA75;1106 1167 11AC; # (멵; 멵; 멵; 멵; 멵; ) HANGUL SYLLABLE MYEONJ
+BA76;BA76;1106 1167 11AD;BA76;1106 1167 11AD; # (멶; 멶; 멶; 멶; 멶; ) HANGUL SYLLABLE MYEONH
+BA77;BA77;1106 1167 11AE;BA77;1106 1167 11AE; # (멷; 멷; 멷; 멷; 멷; ) HANGUL SYLLABLE MYEOD
+BA78;BA78;1106 1167 11AF;BA78;1106 1167 11AF; # (멸; 멸; 멸; 멸; 멸; ) HANGUL SYLLABLE MYEOL
+BA79;BA79;1106 1167 11B0;BA79;1106 1167 11B0; # (멹; 멹; 멹; 멹; 멹; ) HANGUL SYLLABLE MYEOLG
+BA7A;BA7A;1106 1167 11B1;BA7A;1106 1167 11B1; # (멺; 멺; 멺; 멺; 멺; ) HANGUL SYLLABLE MYEOLM
+BA7B;BA7B;1106 1167 11B2;BA7B;1106 1167 11B2; # (멻; 멻; 멻; 멻; 멻; ) HANGUL SYLLABLE MYEOLB
+BA7C;BA7C;1106 1167 11B3;BA7C;1106 1167 11B3; # (멼; 멼; 멼; 멼; 멼; ) HANGUL SYLLABLE MYEOLS
+BA7D;BA7D;1106 1167 11B4;BA7D;1106 1167 11B4; # (멽; 멽; 멽; 멽; 멽; ) HANGUL SYLLABLE MYEOLT
+BA7E;BA7E;1106 1167 11B5;BA7E;1106 1167 11B5; # (멾; 멾; 멾; 멾; 멾; ) HANGUL SYLLABLE MYEOLP
+BA7F;BA7F;1106 1167 11B6;BA7F;1106 1167 11B6; # (멿; 멿; 멿; 멿; 멿; ) HANGUL SYLLABLE MYEOLH
+BA80;BA80;1106 1167 11B7;BA80;1106 1167 11B7; # (몀; 몀; 몀; 몀; 몀; ) HANGUL SYLLABLE MYEOM
+BA81;BA81;1106 1167 11B8;BA81;1106 1167 11B8; # (ëª; ëª; 몁; ëª; 몁; ) HANGUL SYLLABLE MYEOB
+BA82;BA82;1106 1167 11B9;BA82;1106 1167 11B9; # (몂; 몂; 몂; 몂; 몂; ) HANGUL SYLLABLE MYEOBS
+BA83;BA83;1106 1167 11BA;BA83;1106 1167 11BA; # (몃; 몃; 몃; 몃; 몃; ) HANGUL SYLLABLE MYEOS
+BA84;BA84;1106 1167 11BB;BA84;1106 1167 11BB; # (몄; 몄; 몄; 몄; 몄; ) HANGUL SYLLABLE MYEOSS
+BA85;BA85;1106 1167 11BC;BA85;1106 1167 11BC; # (명; 명; 명; 명; 명; ) HANGUL SYLLABLE MYEONG
+BA86;BA86;1106 1167 11BD;BA86;1106 1167 11BD; # (몆; 몆; 몆; 몆; 몆; ) HANGUL SYLLABLE MYEOJ
+BA87;BA87;1106 1167 11BE;BA87;1106 1167 11BE; # (몇; 몇; 몇; 몇; 몇; ) HANGUL SYLLABLE MYEOC
+BA88;BA88;1106 1167 11BF;BA88;1106 1167 11BF; # (몈; 몈; 몈; 몈; 몈; ) HANGUL SYLLABLE MYEOK
+BA89;BA89;1106 1167 11C0;BA89;1106 1167 11C0; # (몉; 몉; 몉; 몉; 몉; ) HANGUL SYLLABLE MYEOT
+BA8A;BA8A;1106 1167 11C1;BA8A;1106 1167 11C1; # (몊; 몊; 며á‡; 몊; 며á‡; ) HANGUL SYLLABLE MYEOP
+BA8B;BA8B;1106 1167 11C2;BA8B;1106 1167 11C2; # (몋; 몋; 몋; 몋; 몋; ) HANGUL SYLLABLE MYEOH
+BA8C;BA8C;1106 1168;BA8C;1106 1168; # (몌; 몌; 몌; 몌; 몌; ) HANGUL SYLLABLE MYE
+BA8D;BA8D;1106 1168 11A8;BA8D;1106 1168 11A8; # (ëª; ëª; 몍; ëª; 몍; ) HANGUL SYLLABLE MYEG
+BA8E;BA8E;1106 1168 11A9;BA8E;1106 1168 11A9; # (몎; 몎; 몎; 몎; 몎; ) HANGUL SYLLABLE MYEGG
+BA8F;BA8F;1106 1168 11AA;BA8F;1106 1168 11AA; # (ëª; ëª; 몏; ëª; 몏; ) HANGUL SYLLABLE MYEGS
+BA90;BA90;1106 1168 11AB;BA90;1106 1168 11AB; # (ëª; ëª; 몐; ëª; 몐; ) HANGUL SYLLABLE MYEN
+BA91;BA91;1106 1168 11AC;BA91;1106 1168 11AC; # (몑; 몑; 몑; 몑; 몑; ) HANGUL SYLLABLE MYENJ
+BA92;BA92;1106 1168 11AD;BA92;1106 1168 11AD; # (몒; 몒; 몒; 몒; 몒; ) HANGUL SYLLABLE MYENH
+BA93;BA93;1106 1168 11AE;BA93;1106 1168 11AE; # (몓; 몓; 몓; 몓; 몓; ) HANGUL SYLLABLE MYED
+BA94;BA94;1106 1168 11AF;BA94;1106 1168 11AF; # (몔; 몔; 몔; 몔; 몔; ) HANGUL SYLLABLE MYEL
+BA95;BA95;1106 1168 11B0;BA95;1106 1168 11B0; # (몕; 몕; 몕; 몕; 몕; ) HANGUL SYLLABLE MYELG
+BA96;BA96;1106 1168 11B1;BA96;1106 1168 11B1; # (몖; 몖; 몖; 몖; 몖; ) HANGUL SYLLABLE MYELM
+BA97;BA97;1106 1168 11B2;BA97;1106 1168 11B2; # (몗; 몗; 몗; 몗; 몗; ) HANGUL SYLLABLE MYELB
+BA98;BA98;1106 1168 11B3;BA98;1106 1168 11B3; # (몘; 몘; 몘; 몘; 몘; ) HANGUL SYLLABLE MYELS
+BA99;BA99;1106 1168 11B4;BA99;1106 1168 11B4; # (몙; 몙; 몙; 몙; 몙; ) HANGUL SYLLABLE MYELT
+BA9A;BA9A;1106 1168 11B5;BA9A;1106 1168 11B5; # (몚; 몚; 몚; 몚; 몚; ) HANGUL SYLLABLE MYELP
+BA9B;BA9B;1106 1168 11B6;BA9B;1106 1168 11B6; # (몛; 몛; 몛; 몛; 몛; ) HANGUL SYLLABLE MYELH
+BA9C;BA9C;1106 1168 11B7;BA9C;1106 1168 11B7; # (몜; 몜; 몜; 몜; 몜; ) HANGUL SYLLABLE MYEM
+BA9D;BA9D;1106 1168 11B8;BA9D;1106 1168 11B8; # (ëª; ëª; 몝; ëª; 몝; ) HANGUL SYLLABLE MYEB
+BA9E;BA9E;1106 1168 11B9;BA9E;1106 1168 11B9; # (몞; 몞; 몞; 몞; 몞; ) HANGUL SYLLABLE MYEBS
+BA9F;BA9F;1106 1168 11BA;BA9F;1106 1168 11BA; # (몟; 몟; 몟; 몟; 몟; ) HANGUL SYLLABLE MYES
+BAA0;BAA0;1106 1168 11BB;BAA0;1106 1168 11BB; # (몠; 몠; 몠; 몠; 몠; ) HANGUL SYLLABLE MYESS
+BAA1;BAA1;1106 1168 11BC;BAA1;1106 1168 11BC; # (몡; 몡; 몡; 몡; 몡; ) HANGUL SYLLABLE MYENG
+BAA2;BAA2;1106 1168 11BD;BAA2;1106 1168 11BD; # (몢; 몢; 몢; 몢; 몢; ) HANGUL SYLLABLE MYEJ
+BAA3;BAA3;1106 1168 11BE;BAA3;1106 1168 11BE; # (몣; 몣; 몣; 몣; 몣; ) HANGUL SYLLABLE MYEC
+BAA4;BAA4;1106 1168 11BF;BAA4;1106 1168 11BF; # (몤; 몤; 몤; 몤; 몤; ) HANGUL SYLLABLE MYEK
+BAA5;BAA5;1106 1168 11C0;BAA5;1106 1168 11C0; # (몥; 몥; 몥; 몥; 몥; ) HANGUL SYLLABLE MYET
+BAA6;BAA6;1106 1168 11C1;BAA6;1106 1168 11C1; # (몦; 몦; 몌á‡; 몦; 몌á‡; ) HANGUL SYLLABLE MYEP
+BAA7;BAA7;1106 1168 11C2;BAA7;1106 1168 11C2; # (몧; 몧; 몧; 몧; 몧; ) HANGUL SYLLABLE MYEH
+BAA8;BAA8;1106 1169;BAA8;1106 1169; # (모; 모; 모; 모; 모; ) HANGUL SYLLABLE MO
+BAA9;BAA9;1106 1169 11A8;BAA9;1106 1169 11A8; # (목; 목; 목; 목; 목; ) HANGUL SYLLABLE MOG
+BAAA;BAAA;1106 1169 11A9;BAAA;1106 1169 11A9; # (몪; 몪; 몪; 몪; 몪; ) HANGUL SYLLABLE MOGG
+BAAB;BAAB;1106 1169 11AA;BAAB;1106 1169 11AA; # (몫; 몫; 몫; 몫; 몫; ) HANGUL SYLLABLE MOGS
+BAAC;BAAC;1106 1169 11AB;BAAC;1106 1169 11AB; # (몬; 몬; 몬; 몬; 몬; ) HANGUL SYLLABLE MON
+BAAD;BAAD;1106 1169 11AC;BAAD;1106 1169 11AC; # (몭; 몭; 몭; 몭; 몭; ) HANGUL SYLLABLE MONJ
+BAAE;BAAE;1106 1169 11AD;BAAE;1106 1169 11AD; # (몮; 몮; 몮; 몮; 몮; ) HANGUL SYLLABLE MONH
+BAAF;BAAF;1106 1169 11AE;BAAF;1106 1169 11AE; # (몯; 몯; 몯; 몯; 몯; ) HANGUL SYLLABLE MOD
+BAB0;BAB0;1106 1169 11AF;BAB0;1106 1169 11AF; # (몰; 몰; 몰; 몰; 몰; ) HANGUL SYLLABLE MOL
+BAB1;BAB1;1106 1169 11B0;BAB1;1106 1169 11B0; # (몱; 몱; 몱; 몱; 몱; ) HANGUL SYLLABLE MOLG
+BAB2;BAB2;1106 1169 11B1;BAB2;1106 1169 11B1; # (몲; 몲; 몲; 몲; 몲; ) HANGUL SYLLABLE MOLM
+BAB3;BAB3;1106 1169 11B2;BAB3;1106 1169 11B2; # (몳; 몳; 몳; 몳; 몳; ) HANGUL SYLLABLE MOLB
+BAB4;BAB4;1106 1169 11B3;BAB4;1106 1169 11B3; # (몴; 몴; 몴; 몴; 몴; ) HANGUL SYLLABLE MOLS
+BAB5;BAB5;1106 1169 11B4;BAB5;1106 1169 11B4; # (몵; 몵; 몵; 몵; 몵; ) HANGUL SYLLABLE MOLT
+BAB6;BAB6;1106 1169 11B5;BAB6;1106 1169 11B5; # (몶; 몶; 몶; 몶; 몶; ) HANGUL SYLLABLE MOLP
+BAB7;BAB7;1106 1169 11B6;BAB7;1106 1169 11B6; # (몷; 몷; 몷; 몷; 몷; ) HANGUL SYLLABLE MOLH
+BAB8;BAB8;1106 1169 11B7;BAB8;1106 1169 11B7; # (몸; 몸; 몸; 몸; 몸; ) HANGUL SYLLABLE MOM
+BAB9;BAB9;1106 1169 11B8;BAB9;1106 1169 11B8; # (몹; 몹; 몹; 몹; 몹; ) HANGUL SYLLABLE MOB
+BABA;BABA;1106 1169 11B9;BABA;1106 1169 11B9; # (몺; 몺; 몺; 몺; 몺; ) HANGUL SYLLABLE MOBS
+BABB;BABB;1106 1169 11BA;BABB;1106 1169 11BA; # (못; 못; 못; 못; 못; ) HANGUL SYLLABLE MOS
+BABC;BABC;1106 1169 11BB;BABC;1106 1169 11BB; # (몼; 몼; 몼; 몼; 몼; ) HANGUL SYLLABLE MOSS
+BABD;BABD;1106 1169 11BC;BABD;1106 1169 11BC; # (몽; 몽; 몽; 몽; 몽; ) HANGUL SYLLABLE MONG
+BABE;BABE;1106 1169 11BD;BABE;1106 1169 11BD; # (몾; 몾; 몾; 몾; 몾; ) HANGUL SYLLABLE MOJ
+BABF;BABF;1106 1169 11BE;BABF;1106 1169 11BE; # (몿; 몿; 몿; 몿; 몿; ) HANGUL SYLLABLE MOC
+BAC0;BAC0;1106 1169 11BF;BAC0;1106 1169 11BF; # (뫀; 뫀; 뫀; 뫀; 뫀; ) HANGUL SYLLABLE MOK
+BAC1;BAC1;1106 1169 11C0;BAC1;1106 1169 11C0; # (ë«; ë«; 뫁; ë«; 뫁; ) HANGUL SYLLABLE MOT
+BAC2;BAC2;1106 1169 11C1;BAC2;1106 1169 11C1; # (ë«‚; ë«‚; 모á‡; ë«‚; 모á‡; ) HANGUL SYLLABLE MOP
+BAC3;BAC3;1106 1169 11C2;BAC3;1106 1169 11C2; # (뫃; 뫃; 뫃; 뫃; 뫃; ) HANGUL SYLLABLE MOH
+BAC4;BAC4;1106 116A;BAC4;1106 116A; # (뫄; 뫄; 뫄; 뫄; 뫄; ) HANGUL SYLLABLE MWA
+BAC5;BAC5;1106 116A 11A8;BAC5;1106 116A 11A8; # (뫅; 뫅; 뫅; 뫅; 뫅; ) HANGUL SYLLABLE MWAG
+BAC6;BAC6;1106 116A 11A9;BAC6;1106 116A 11A9; # (뫆; 뫆; 뫆; 뫆; 뫆; ) HANGUL SYLLABLE MWAGG
+BAC7;BAC7;1106 116A 11AA;BAC7;1106 116A 11AA; # (뫇; 뫇; 뫇; 뫇; 뫇; ) HANGUL SYLLABLE MWAGS
+BAC8;BAC8;1106 116A 11AB;BAC8;1106 116A 11AB; # (뫈; 뫈; 뫈; 뫈; 뫈; ) HANGUL SYLLABLE MWAN
+BAC9;BAC9;1106 116A 11AC;BAC9;1106 116A 11AC; # (뫉; 뫉; 뫉; 뫉; 뫉; ) HANGUL SYLLABLE MWANJ
+BACA;BACA;1106 116A 11AD;BACA;1106 116A 11AD; # (뫊; 뫊; 뫊; 뫊; 뫊; ) HANGUL SYLLABLE MWANH
+BACB;BACB;1106 116A 11AE;BACB;1106 116A 11AE; # (뫋; 뫋; 뫋; 뫋; 뫋; ) HANGUL SYLLABLE MWAD
+BACC;BACC;1106 116A 11AF;BACC;1106 116A 11AF; # (뫌; 뫌; 뫌; 뫌; 뫌; ) HANGUL SYLLABLE MWAL
+BACD;BACD;1106 116A 11B0;BACD;1106 116A 11B0; # (ë«; ë«; 뫍; ë«; 뫍; ) HANGUL SYLLABLE MWALG
+BACE;BACE;1106 116A 11B1;BACE;1106 116A 11B1; # (뫎; 뫎; 뫎; 뫎; 뫎; ) HANGUL SYLLABLE MWALM
+BACF;BACF;1106 116A 11B2;BACF;1106 116A 11B2; # (ë«; ë«; 뫏; ë«; 뫏; ) HANGUL SYLLABLE MWALB
+BAD0;BAD0;1106 116A 11B3;BAD0;1106 116A 11B3; # (ë«; ë«; 뫐; ë«; 뫐; ) HANGUL SYLLABLE MWALS
+BAD1;BAD1;1106 116A 11B4;BAD1;1106 116A 11B4; # (뫑; 뫑; 뫑; 뫑; 뫑; ) HANGUL SYLLABLE MWALT
+BAD2;BAD2;1106 116A 11B5;BAD2;1106 116A 11B5; # (뫒; 뫒; 뫒; 뫒; 뫒; ) HANGUL SYLLABLE MWALP
+BAD3;BAD3;1106 116A 11B6;BAD3;1106 116A 11B6; # (뫓; 뫓; 뫓; 뫓; 뫓; ) HANGUL SYLLABLE MWALH
+BAD4;BAD4;1106 116A 11B7;BAD4;1106 116A 11B7; # (뫔; 뫔; 뫔; 뫔; 뫔; ) HANGUL SYLLABLE MWAM
+BAD5;BAD5;1106 116A 11B8;BAD5;1106 116A 11B8; # (뫕; 뫕; 뫕; 뫕; 뫕; ) HANGUL SYLLABLE MWAB
+BAD6;BAD6;1106 116A 11B9;BAD6;1106 116A 11B9; # (뫖; 뫖; 뫖; 뫖; 뫖; ) HANGUL SYLLABLE MWABS
+BAD7;BAD7;1106 116A 11BA;BAD7;1106 116A 11BA; # (뫗; 뫗; 뫗; 뫗; 뫗; ) HANGUL SYLLABLE MWAS
+BAD8;BAD8;1106 116A 11BB;BAD8;1106 116A 11BB; # (뫘; 뫘; 뫘; 뫘; 뫘; ) HANGUL SYLLABLE MWASS
+BAD9;BAD9;1106 116A 11BC;BAD9;1106 116A 11BC; # (뫙; 뫙; 뫙; 뫙; 뫙; ) HANGUL SYLLABLE MWANG
+BADA;BADA;1106 116A 11BD;BADA;1106 116A 11BD; # (뫚; 뫚; 뫚; 뫚; 뫚; ) HANGUL SYLLABLE MWAJ
+BADB;BADB;1106 116A 11BE;BADB;1106 116A 11BE; # (뫛; 뫛; 뫛; 뫛; 뫛; ) HANGUL SYLLABLE MWAC
+BADC;BADC;1106 116A 11BF;BADC;1106 116A 11BF; # (뫜; 뫜; 뫜; 뫜; 뫜; ) HANGUL SYLLABLE MWAK
+BADD;BADD;1106 116A 11C0;BADD;1106 116A 11C0; # (ë«; ë«; 뫝; ë«; 뫝; ) HANGUL SYLLABLE MWAT
+BADE;BADE;1106 116A 11C1;BADE;1106 116A 11C1; # (ë«ž; ë«ž; 뫄á‡; ë«ž; 뫄á‡; ) HANGUL SYLLABLE MWAP
+BADF;BADF;1106 116A 11C2;BADF;1106 116A 11C2; # (뫟; 뫟; 뫟; 뫟; 뫟; ) HANGUL SYLLABLE MWAH
+BAE0;BAE0;1106 116B;BAE0;1106 116B; # (뫠; 뫠; 뫠; 뫠; 뫠; ) HANGUL SYLLABLE MWAE
+BAE1;BAE1;1106 116B 11A8;BAE1;1106 116B 11A8; # (뫡; 뫡; 뫡; 뫡; 뫡; ) HANGUL SYLLABLE MWAEG
+BAE2;BAE2;1106 116B 11A9;BAE2;1106 116B 11A9; # (뫢; 뫢; 뫢; 뫢; 뫢; ) HANGUL SYLLABLE MWAEGG
+BAE3;BAE3;1106 116B 11AA;BAE3;1106 116B 11AA; # (뫣; 뫣; 뫣; 뫣; 뫣; ) HANGUL SYLLABLE MWAEGS
+BAE4;BAE4;1106 116B 11AB;BAE4;1106 116B 11AB; # (뫤; 뫤; 뫤; 뫤; 뫤; ) HANGUL SYLLABLE MWAEN
+BAE5;BAE5;1106 116B 11AC;BAE5;1106 116B 11AC; # (뫥; 뫥; 뫥; 뫥; 뫥; ) HANGUL SYLLABLE MWAENJ
+BAE6;BAE6;1106 116B 11AD;BAE6;1106 116B 11AD; # (뫦; 뫦; 뫦; 뫦; 뫦; ) HANGUL SYLLABLE MWAENH
+BAE7;BAE7;1106 116B 11AE;BAE7;1106 116B 11AE; # (뫧; 뫧; 뫧; 뫧; 뫧; ) HANGUL SYLLABLE MWAED
+BAE8;BAE8;1106 116B 11AF;BAE8;1106 116B 11AF; # (뫨; 뫨; 뫨; 뫨; 뫨; ) HANGUL SYLLABLE MWAEL
+BAE9;BAE9;1106 116B 11B0;BAE9;1106 116B 11B0; # (뫩; 뫩; 뫩; 뫩; 뫩; ) HANGUL SYLLABLE MWAELG
+BAEA;BAEA;1106 116B 11B1;BAEA;1106 116B 11B1; # (뫪; 뫪; 뫪; 뫪; 뫪; ) HANGUL SYLLABLE MWAELM
+BAEB;BAEB;1106 116B 11B2;BAEB;1106 116B 11B2; # (뫫; 뫫; 뫫; 뫫; 뫫; ) HANGUL SYLLABLE MWAELB
+BAEC;BAEC;1106 116B 11B3;BAEC;1106 116B 11B3; # (뫬; 뫬; 뫬; 뫬; 뫬; ) HANGUL SYLLABLE MWAELS
+BAED;BAED;1106 116B 11B4;BAED;1106 116B 11B4; # (뫭; 뫭; 뫭; 뫭; 뫭; ) HANGUL SYLLABLE MWAELT
+BAEE;BAEE;1106 116B 11B5;BAEE;1106 116B 11B5; # (뫮; 뫮; 뫮; 뫮; 뫮; ) HANGUL SYLLABLE MWAELP
+BAEF;BAEF;1106 116B 11B6;BAEF;1106 116B 11B6; # (뫯; 뫯; 뫯; 뫯; 뫯; ) HANGUL SYLLABLE MWAELH
+BAF0;BAF0;1106 116B 11B7;BAF0;1106 116B 11B7; # (뫰; 뫰; 뫰; 뫰; 뫰; ) HANGUL SYLLABLE MWAEM
+BAF1;BAF1;1106 116B 11B8;BAF1;1106 116B 11B8; # (뫱; 뫱; 뫱; 뫱; 뫱; ) HANGUL SYLLABLE MWAEB
+BAF2;BAF2;1106 116B 11B9;BAF2;1106 116B 11B9; # (뫲; 뫲; 뫲; 뫲; 뫲; ) HANGUL SYLLABLE MWAEBS
+BAF3;BAF3;1106 116B 11BA;BAF3;1106 116B 11BA; # (뫳; 뫳; 뫳; 뫳; 뫳; ) HANGUL SYLLABLE MWAES
+BAF4;BAF4;1106 116B 11BB;BAF4;1106 116B 11BB; # (뫴; 뫴; 뫴; 뫴; 뫴; ) HANGUL SYLLABLE MWAESS
+BAF5;BAF5;1106 116B 11BC;BAF5;1106 116B 11BC; # (뫵; 뫵; 뫵; 뫵; 뫵; ) HANGUL SYLLABLE MWAENG
+BAF6;BAF6;1106 116B 11BD;BAF6;1106 116B 11BD; # (뫶; 뫶; 뫶; 뫶; 뫶; ) HANGUL SYLLABLE MWAEJ
+BAF7;BAF7;1106 116B 11BE;BAF7;1106 116B 11BE; # (뫷; 뫷; 뫷; 뫷; 뫷; ) HANGUL SYLLABLE MWAEC
+BAF8;BAF8;1106 116B 11BF;BAF8;1106 116B 11BF; # (뫸; 뫸; 뫸; 뫸; 뫸; ) HANGUL SYLLABLE MWAEK
+BAF9;BAF9;1106 116B 11C0;BAF9;1106 116B 11C0; # (뫹; 뫹; 뫹; 뫹; 뫹; ) HANGUL SYLLABLE MWAET
+BAFA;BAFA;1106 116B 11C1;BAFA;1106 116B 11C1; # (뫺; 뫺; 뫠á‡; 뫺; 뫠á‡; ) HANGUL SYLLABLE MWAEP
+BAFB;BAFB;1106 116B 11C2;BAFB;1106 116B 11C2; # (뫻; 뫻; 뫻; 뫻; 뫻; ) HANGUL SYLLABLE MWAEH
+BAFC;BAFC;1106 116C;BAFC;1106 116C; # (뫼; 뫼; 뫼; 뫼; 뫼; ) HANGUL SYLLABLE MOE
+BAFD;BAFD;1106 116C 11A8;BAFD;1106 116C 11A8; # (뫽; 뫽; 뫽; 뫽; 뫽; ) HANGUL SYLLABLE MOEG
+BAFE;BAFE;1106 116C 11A9;BAFE;1106 116C 11A9; # (뫾; 뫾; 뫾; 뫾; 뫾; ) HANGUL SYLLABLE MOEGG
+BAFF;BAFF;1106 116C 11AA;BAFF;1106 116C 11AA; # (뫿; 뫿; 뫿; 뫿; 뫿; ) HANGUL SYLLABLE MOEGS
+BB00;BB00;1106 116C 11AB;BB00;1106 116C 11AB; # (묀; 묀; 묀; 묀; 묀; ) HANGUL SYLLABLE MOEN
+BB01;BB01;1106 116C 11AC;BB01;1106 116C 11AC; # (ë¬; ë¬; 묁; ë¬; 묁; ) HANGUL SYLLABLE MOENJ
+BB02;BB02;1106 116C 11AD;BB02;1106 116C 11AD; # (묂; 묂; 묂; 묂; 묂; ) HANGUL SYLLABLE MOENH
+BB03;BB03;1106 116C 11AE;BB03;1106 116C 11AE; # (묃; 묃; 묃; 묃; 묃; ) HANGUL SYLLABLE MOED
+BB04;BB04;1106 116C 11AF;BB04;1106 116C 11AF; # (묄; 묄; 묄; 묄; 묄; ) HANGUL SYLLABLE MOEL
+BB05;BB05;1106 116C 11B0;BB05;1106 116C 11B0; # (묅; 묅; 묅; 묅; 묅; ) HANGUL SYLLABLE MOELG
+BB06;BB06;1106 116C 11B1;BB06;1106 116C 11B1; # (묆; 묆; 묆; 묆; 묆; ) HANGUL SYLLABLE MOELM
+BB07;BB07;1106 116C 11B2;BB07;1106 116C 11B2; # (묇; 묇; 묇; 묇; 묇; ) HANGUL SYLLABLE MOELB
+BB08;BB08;1106 116C 11B3;BB08;1106 116C 11B3; # (묈; 묈; 묈; 묈; 묈; ) HANGUL SYLLABLE MOELS
+BB09;BB09;1106 116C 11B4;BB09;1106 116C 11B4; # (묉; 묉; 묉; 묉; 묉; ) HANGUL SYLLABLE MOELT
+BB0A;BB0A;1106 116C 11B5;BB0A;1106 116C 11B5; # (묊; 묊; 묊; 묊; 묊; ) HANGUL SYLLABLE MOELP
+BB0B;BB0B;1106 116C 11B6;BB0B;1106 116C 11B6; # (묋; 묋; 묋; 묋; 묋; ) HANGUL SYLLABLE MOELH
+BB0C;BB0C;1106 116C 11B7;BB0C;1106 116C 11B7; # (묌; 묌; 묌; 묌; 묌; ) HANGUL SYLLABLE MOEM
+BB0D;BB0D;1106 116C 11B8;BB0D;1106 116C 11B8; # (ë¬; ë¬; 묍; ë¬; 묍; ) HANGUL SYLLABLE MOEB
+BB0E;BB0E;1106 116C 11B9;BB0E;1106 116C 11B9; # (묎; 묎; 묎; 묎; 묎; ) HANGUL SYLLABLE MOEBS
+BB0F;BB0F;1106 116C 11BA;BB0F;1106 116C 11BA; # (ë¬; ë¬; 묏; ë¬; 묏; ) HANGUL SYLLABLE MOES
+BB10;BB10;1106 116C 11BB;BB10;1106 116C 11BB; # (ë¬; ë¬; 묐; ë¬; 묐; ) HANGUL SYLLABLE MOESS
+BB11;BB11;1106 116C 11BC;BB11;1106 116C 11BC; # (묑; 묑; 묑; 묑; 묑; ) HANGUL SYLLABLE MOENG
+BB12;BB12;1106 116C 11BD;BB12;1106 116C 11BD; # (묒; 묒; 묒; 묒; 묒; ) HANGUL SYLLABLE MOEJ
+BB13;BB13;1106 116C 11BE;BB13;1106 116C 11BE; # (묓; 묓; 묓; 묓; 묓; ) HANGUL SYLLABLE MOEC
+BB14;BB14;1106 116C 11BF;BB14;1106 116C 11BF; # (묔; 묔; 묔; 묔; 묔; ) HANGUL SYLLABLE MOEK
+BB15;BB15;1106 116C 11C0;BB15;1106 116C 11C0; # (묕; 묕; 묕; 묕; 묕; ) HANGUL SYLLABLE MOET
+BB16;BB16;1106 116C 11C1;BB16;1106 116C 11C1; # (묖; 묖; 뫼á‡; 묖; 뫼á‡; ) HANGUL SYLLABLE MOEP
+BB17;BB17;1106 116C 11C2;BB17;1106 116C 11C2; # (묗; 묗; 묗; 묗; 묗; ) HANGUL SYLLABLE MOEH
+BB18;BB18;1106 116D;BB18;1106 116D; # (묘; 묘; 묘; 묘; 묘; ) HANGUL SYLLABLE MYO
+BB19;BB19;1106 116D 11A8;BB19;1106 116D 11A8; # (묙; 묙; 묙; 묙; 묙; ) HANGUL SYLLABLE MYOG
+BB1A;BB1A;1106 116D 11A9;BB1A;1106 116D 11A9; # (묚; 묚; 묚; 묚; 묚; ) HANGUL SYLLABLE MYOGG
+BB1B;BB1B;1106 116D 11AA;BB1B;1106 116D 11AA; # (묛; 묛; 묛; 묛; 묛; ) HANGUL SYLLABLE MYOGS
+BB1C;BB1C;1106 116D 11AB;BB1C;1106 116D 11AB; # (묜; 묜; 묜; 묜; 묜; ) HANGUL SYLLABLE MYON
+BB1D;BB1D;1106 116D 11AC;BB1D;1106 116D 11AC; # (ë¬; ë¬; 묝; ë¬; 묝; ) HANGUL SYLLABLE MYONJ
+BB1E;BB1E;1106 116D 11AD;BB1E;1106 116D 11AD; # (묞; 묞; 묞; 묞; 묞; ) HANGUL SYLLABLE MYONH
+BB1F;BB1F;1106 116D 11AE;BB1F;1106 116D 11AE; # (묟; 묟; 묟; 묟; 묟; ) HANGUL SYLLABLE MYOD
+BB20;BB20;1106 116D 11AF;BB20;1106 116D 11AF; # (묠; 묠; 묠; 묠; 묠; ) HANGUL SYLLABLE MYOL
+BB21;BB21;1106 116D 11B0;BB21;1106 116D 11B0; # (묡; 묡; 묡; 묡; 묡; ) HANGUL SYLLABLE MYOLG
+BB22;BB22;1106 116D 11B1;BB22;1106 116D 11B1; # (묢; 묢; 묢; 묢; 묢; ) HANGUL SYLLABLE MYOLM
+BB23;BB23;1106 116D 11B2;BB23;1106 116D 11B2; # (묣; 묣; 묣; 묣; 묣; ) HANGUL SYLLABLE MYOLB
+BB24;BB24;1106 116D 11B3;BB24;1106 116D 11B3; # (묤; 묤; 묤; 묤; 묤; ) HANGUL SYLLABLE MYOLS
+BB25;BB25;1106 116D 11B4;BB25;1106 116D 11B4; # (묥; 묥; 묥; 묥; 묥; ) HANGUL SYLLABLE MYOLT
+BB26;BB26;1106 116D 11B5;BB26;1106 116D 11B5; # (묦; 묦; 묦; 묦; 묦; ) HANGUL SYLLABLE MYOLP
+BB27;BB27;1106 116D 11B6;BB27;1106 116D 11B6; # (묧; 묧; 묧; 묧; 묧; ) HANGUL SYLLABLE MYOLH
+BB28;BB28;1106 116D 11B7;BB28;1106 116D 11B7; # (묨; 묨; 묨; 묨; 묨; ) HANGUL SYLLABLE MYOM
+BB29;BB29;1106 116D 11B8;BB29;1106 116D 11B8; # (묩; 묩; 묩; 묩; 묩; ) HANGUL SYLLABLE MYOB
+BB2A;BB2A;1106 116D 11B9;BB2A;1106 116D 11B9; # (묪; 묪; 묪; 묪; 묪; ) HANGUL SYLLABLE MYOBS
+BB2B;BB2B;1106 116D 11BA;BB2B;1106 116D 11BA; # (묫; 묫; 묫; 묫; 묫; ) HANGUL SYLLABLE MYOS
+BB2C;BB2C;1106 116D 11BB;BB2C;1106 116D 11BB; # (묬; 묬; 묬; 묬; 묬; ) HANGUL SYLLABLE MYOSS
+BB2D;BB2D;1106 116D 11BC;BB2D;1106 116D 11BC; # (묭; 묭; 묭; 묭; 묭; ) HANGUL SYLLABLE MYONG
+BB2E;BB2E;1106 116D 11BD;BB2E;1106 116D 11BD; # (묮; 묮; 묮; 묮; 묮; ) HANGUL SYLLABLE MYOJ
+BB2F;BB2F;1106 116D 11BE;BB2F;1106 116D 11BE; # (묯; 묯; 묯; 묯; 묯; ) HANGUL SYLLABLE MYOC
+BB30;BB30;1106 116D 11BF;BB30;1106 116D 11BF; # (묰; 묰; 묰; 묰; 묰; ) HANGUL SYLLABLE MYOK
+BB31;BB31;1106 116D 11C0;BB31;1106 116D 11C0; # (묱; 묱; 묱; 묱; 묱; ) HANGUL SYLLABLE MYOT
+BB32;BB32;1106 116D 11C1;BB32;1106 116D 11C1; # (묲; 묲; 묘á‡; 묲; 묘á‡; ) HANGUL SYLLABLE MYOP
+BB33;BB33;1106 116D 11C2;BB33;1106 116D 11C2; # (묳; 묳; 묳; 묳; 묳; ) HANGUL SYLLABLE MYOH
+BB34;BB34;1106 116E;BB34;1106 116E; # (무; 무; 무; 무; 무; ) HANGUL SYLLABLE MU
+BB35;BB35;1106 116E 11A8;BB35;1106 116E 11A8; # (묵; 묵; 묵; 묵; 묵; ) HANGUL SYLLABLE MUG
+BB36;BB36;1106 116E 11A9;BB36;1106 116E 11A9; # (묶; 묶; 묶; 묶; 묶; ) HANGUL SYLLABLE MUGG
+BB37;BB37;1106 116E 11AA;BB37;1106 116E 11AA; # (묷; 묷; 묷; 묷; 묷; ) HANGUL SYLLABLE MUGS
+BB38;BB38;1106 116E 11AB;BB38;1106 116E 11AB; # (문; 문; 문; 문; 문; ) HANGUL SYLLABLE MUN
+BB39;BB39;1106 116E 11AC;BB39;1106 116E 11AC; # (묹; 묹; 묹; 묹; 묹; ) HANGUL SYLLABLE MUNJ
+BB3A;BB3A;1106 116E 11AD;BB3A;1106 116E 11AD; # (묺; 묺; 묺; 묺; 묺; ) HANGUL SYLLABLE MUNH
+BB3B;BB3B;1106 116E 11AE;BB3B;1106 116E 11AE; # (묻; 묻; 묻; 묻; 묻; ) HANGUL SYLLABLE MUD
+BB3C;BB3C;1106 116E 11AF;BB3C;1106 116E 11AF; # (물; 물; 물; 물; 물; ) HANGUL SYLLABLE MUL
+BB3D;BB3D;1106 116E 11B0;BB3D;1106 116E 11B0; # (묽; 묽; 묽; 묽; 묽; ) HANGUL SYLLABLE MULG
+BB3E;BB3E;1106 116E 11B1;BB3E;1106 116E 11B1; # (묾; 묾; 묾; 묾; 묾; ) HANGUL SYLLABLE MULM
+BB3F;BB3F;1106 116E 11B2;BB3F;1106 116E 11B2; # (묿; 묿; 묿; 묿; 묿; ) HANGUL SYLLABLE MULB
+BB40;BB40;1106 116E 11B3;BB40;1106 116E 11B3; # (뭀; 뭀; 뭀; 뭀; 뭀; ) HANGUL SYLLABLE MULS
+BB41;BB41;1106 116E 11B4;BB41;1106 116E 11B4; # (ë­; ë­; 뭁; ë­; 뭁; ) HANGUL SYLLABLE MULT
+BB42;BB42;1106 116E 11B5;BB42;1106 116E 11B5; # (뭂; 뭂; 뭂; 뭂; 뭂; ) HANGUL SYLLABLE MULP
+BB43;BB43;1106 116E 11B6;BB43;1106 116E 11B6; # (뭃; 뭃; 뭃; 뭃; 뭃; ) HANGUL SYLLABLE MULH
+BB44;BB44;1106 116E 11B7;BB44;1106 116E 11B7; # (뭄; 뭄; 뭄; 뭄; 뭄; ) HANGUL SYLLABLE MUM
+BB45;BB45;1106 116E 11B8;BB45;1106 116E 11B8; # (뭅; 뭅; 뭅; 뭅; 뭅; ) HANGUL SYLLABLE MUB
+BB46;BB46;1106 116E 11B9;BB46;1106 116E 11B9; # (뭆; 뭆; 뭆; 뭆; 뭆; ) HANGUL SYLLABLE MUBS
+BB47;BB47;1106 116E 11BA;BB47;1106 116E 11BA; # (뭇; 뭇; 뭇; 뭇; 뭇; ) HANGUL SYLLABLE MUS
+BB48;BB48;1106 116E 11BB;BB48;1106 116E 11BB; # (뭈; 뭈; 뭈; 뭈; 뭈; ) HANGUL SYLLABLE MUSS
+BB49;BB49;1106 116E 11BC;BB49;1106 116E 11BC; # (뭉; 뭉; 뭉; 뭉; 뭉; ) HANGUL SYLLABLE MUNG
+BB4A;BB4A;1106 116E 11BD;BB4A;1106 116E 11BD; # (뭊; 뭊; 뭊; 뭊; 뭊; ) HANGUL SYLLABLE MUJ
+BB4B;BB4B;1106 116E 11BE;BB4B;1106 116E 11BE; # (뭋; 뭋; 뭋; 뭋; 뭋; ) HANGUL SYLLABLE MUC
+BB4C;BB4C;1106 116E 11BF;BB4C;1106 116E 11BF; # (뭌; 뭌; 뭌; 뭌; 뭌; ) HANGUL SYLLABLE MUK
+BB4D;BB4D;1106 116E 11C0;BB4D;1106 116E 11C0; # (ë­; ë­; 뭍; ë­; 뭍; ) HANGUL SYLLABLE MUT
+BB4E;BB4E;1106 116E 11C1;BB4E;1106 116E 11C1; # (ë­Ž; ë­Ž; 무á‡; ë­Ž; 무á‡; ) HANGUL SYLLABLE MUP
+BB4F;BB4F;1106 116E 11C2;BB4F;1106 116E 11C2; # (ë­; ë­; 뭏; ë­; 뭏; ) HANGUL SYLLABLE MUH
+BB50;BB50;1106 116F;BB50;1106 116F; # (ë­; ë­; 뭐; ë­; 뭐; ) HANGUL SYLLABLE MWEO
+BB51;BB51;1106 116F 11A8;BB51;1106 116F 11A8; # (뭑; 뭑; 뭑; 뭑; 뭑; ) HANGUL SYLLABLE MWEOG
+BB52;BB52;1106 116F 11A9;BB52;1106 116F 11A9; # (뭒; 뭒; 뭒; 뭒; 뭒; ) HANGUL SYLLABLE MWEOGG
+BB53;BB53;1106 116F 11AA;BB53;1106 116F 11AA; # (뭓; 뭓; 뭓; 뭓; 뭓; ) HANGUL SYLLABLE MWEOGS
+BB54;BB54;1106 116F 11AB;BB54;1106 116F 11AB; # (뭔; 뭔; 뭔; 뭔; 뭔; ) HANGUL SYLLABLE MWEON
+BB55;BB55;1106 116F 11AC;BB55;1106 116F 11AC; # (뭕; 뭕; 뭕; 뭕; 뭕; ) HANGUL SYLLABLE MWEONJ
+BB56;BB56;1106 116F 11AD;BB56;1106 116F 11AD; # (뭖; 뭖; 뭖; 뭖; 뭖; ) HANGUL SYLLABLE MWEONH
+BB57;BB57;1106 116F 11AE;BB57;1106 116F 11AE; # (뭗; 뭗; 뭗; 뭗; 뭗; ) HANGUL SYLLABLE MWEOD
+BB58;BB58;1106 116F 11AF;BB58;1106 116F 11AF; # (뭘; 뭘; 뭘; 뭘; 뭘; ) HANGUL SYLLABLE MWEOL
+BB59;BB59;1106 116F 11B0;BB59;1106 116F 11B0; # (뭙; 뭙; 뭙; 뭙; 뭙; ) HANGUL SYLLABLE MWEOLG
+BB5A;BB5A;1106 116F 11B1;BB5A;1106 116F 11B1; # (뭚; 뭚; 뭚; 뭚; 뭚; ) HANGUL SYLLABLE MWEOLM
+BB5B;BB5B;1106 116F 11B2;BB5B;1106 116F 11B2; # (뭛; 뭛; 뭛; 뭛; 뭛; ) HANGUL SYLLABLE MWEOLB
+BB5C;BB5C;1106 116F 11B3;BB5C;1106 116F 11B3; # (뭜; 뭜; 뭜; 뭜; 뭜; ) HANGUL SYLLABLE MWEOLS
+BB5D;BB5D;1106 116F 11B4;BB5D;1106 116F 11B4; # (ë­; ë­; 뭝; ë­; 뭝; ) HANGUL SYLLABLE MWEOLT
+BB5E;BB5E;1106 116F 11B5;BB5E;1106 116F 11B5; # (뭞; 뭞; 뭞; 뭞; 뭞; ) HANGUL SYLLABLE MWEOLP
+BB5F;BB5F;1106 116F 11B6;BB5F;1106 116F 11B6; # (뭟; 뭟; 뭟; 뭟; 뭟; ) HANGUL SYLLABLE MWEOLH
+BB60;BB60;1106 116F 11B7;BB60;1106 116F 11B7; # (뭠; 뭠; 뭠; 뭠; 뭠; ) HANGUL SYLLABLE MWEOM
+BB61;BB61;1106 116F 11B8;BB61;1106 116F 11B8; # (뭡; 뭡; 뭡; 뭡; 뭡; ) HANGUL SYLLABLE MWEOB
+BB62;BB62;1106 116F 11B9;BB62;1106 116F 11B9; # (뭢; 뭢; 뭢; 뭢; 뭢; ) HANGUL SYLLABLE MWEOBS
+BB63;BB63;1106 116F 11BA;BB63;1106 116F 11BA; # (뭣; 뭣; 뭣; 뭣; 뭣; ) HANGUL SYLLABLE MWEOS
+BB64;BB64;1106 116F 11BB;BB64;1106 116F 11BB; # (뭤; 뭤; 뭤; 뭤; 뭤; ) HANGUL SYLLABLE MWEOSS
+BB65;BB65;1106 116F 11BC;BB65;1106 116F 11BC; # (뭥; 뭥; 뭥; 뭥; 뭥; ) HANGUL SYLLABLE MWEONG
+BB66;BB66;1106 116F 11BD;BB66;1106 116F 11BD; # (뭦; 뭦; 뭦; 뭦; 뭦; ) HANGUL SYLLABLE MWEOJ
+BB67;BB67;1106 116F 11BE;BB67;1106 116F 11BE; # (뭧; 뭧; 뭧; 뭧; 뭧; ) HANGUL SYLLABLE MWEOC
+BB68;BB68;1106 116F 11BF;BB68;1106 116F 11BF; # (뭨; 뭨; 뭨; 뭨; 뭨; ) HANGUL SYLLABLE MWEOK
+BB69;BB69;1106 116F 11C0;BB69;1106 116F 11C0; # (뭩; 뭩; 뭩; 뭩; 뭩; ) HANGUL SYLLABLE MWEOT
+BB6A;BB6A;1106 116F 11C1;BB6A;1106 116F 11C1; # (ë­ª; ë­ª; 뭐á‡; ë­ª; 뭐á‡; ) HANGUL SYLLABLE MWEOP
+BB6B;BB6B;1106 116F 11C2;BB6B;1106 116F 11C2; # (뭫; 뭫; 뭫; 뭫; 뭫; ) HANGUL SYLLABLE MWEOH
+BB6C;BB6C;1106 1170;BB6C;1106 1170; # (뭬; 뭬; 뭬; 뭬; 뭬; ) HANGUL SYLLABLE MWE
+BB6D;BB6D;1106 1170 11A8;BB6D;1106 1170 11A8; # (뭭; 뭭; 뭭; 뭭; 뭭; ) HANGUL SYLLABLE MWEG
+BB6E;BB6E;1106 1170 11A9;BB6E;1106 1170 11A9; # (뭮; 뭮; 뭮; 뭮; 뭮; ) HANGUL SYLLABLE MWEGG
+BB6F;BB6F;1106 1170 11AA;BB6F;1106 1170 11AA; # (뭯; 뭯; 뭯; 뭯; 뭯; ) HANGUL SYLLABLE MWEGS
+BB70;BB70;1106 1170 11AB;BB70;1106 1170 11AB; # (뭰; 뭰; 뭰; 뭰; 뭰; ) HANGUL SYLLABLE MWEN
+BB71;BB71;1106 1170 11AC;BB71;1106 1170 11AC; # (뭱; 뭱; 뭱; 뭱; 뭱; ) HANGUL SYLLABLE MWENJ
+BB72;BB72;1106 1170 11AD;BB72;1106 1170 11AD; # (뭲; 뭲; 뭲; 뭲; 뭲; ) HANGUL SYLLABLE MWENH
+BB73;BB73;1106 1170 11AE;BB73;1106 1170 11AE; # (뭳; 뭳; 뭳; 뭳; 뭳; ) HANGUL SYLLABLE MWED
+BB74;BB74;1106 1170 11AF;BB74;1106 1170 11AF; # (뭴; 뭴; 뭴; 뭴; 뭴; ) HANGUL SYLLABLE MWEL
+BB75;BB75;1106 1170 11B0;BB75;1106 1170 11B0; # (뭵; 뭵; 뭵; 뭵; 뭵; ) HANGUL SYLLABLE MWELG
+BB76;BB76;1106 1170 11B1;BB76;1106 1170 11B1; # (뭶; 뭶; 뭶; 뭶; 뭶; ) HANGUL SYLLABLE MWELM
+BB77;BB77;1106 1170 11B2;BB77;1106 1170 11B2; # (뭷; 뭷; 뭷; 뭷; 뭷; ) HANGUL SYLLABLE MWELB
+BB78;BB78;1106 1170 11B3;BB78;1106 1170 11B3; # (뭸; 뭸; 뭸; 뭸; 뭸; ) HANGUL SYLLABLE MWELS
+BB79;BB79;1106 1170 11B4;BB79;1106 1170 11B4; # (뭹; 뭹; 뭹; 뭹; 뭹; ) HANGUL SYLLABLE MWELT
+BB7A;BB7A;1106 1170 11B5;BB7A;1106 1170 11B5; # (뭺; 뭺; 뭺; 뭺; 뭺; ) HANGUL SYLLABLE MWELP
+BB7B;BB7B;1106 1170 11B6;BB7B;1106 1170 11B6; # (뭻; 뭻; 뭻; 뭻; 뭻; ) HANGUL SYLLABLE MWELH
+BB7C;BB7C;1106 1170 11B7;BB7C;1106 1170 11B7; # (뭼; 뭼; 뭼; 뭼; 뭼; ) HANGUL SYLLABLE MWEM
+BB7D;BB7D;1106 1170 11B8;BB7D;1106 1170 11B8; # (뭽; 뭽; 뭽; 뭽; 뭽; ) HANGUL SYLLABLE MWEB
+BB7E;BB7E;1106 1170 11B9;BB7E;1106 1170 11B9; # (뭾; 뭾; 뭾; 뭾; 뭾; ) HANGUL SYLLABLE MWEBS
+BB7F;BB7F;1106 1170 11BA;BB7F;1106 1170 11BA; # (뭿; 뭿; 뭿; 뭿; 뭿; ) HANGUL SYLLABLE MWES
+BB80;BB80;1106 1170 11BB;BB80;1106 1170 11BB; # (뮀; 뮀; 뮀; 뮀; 뮀; ) HANGUL SYLLABLE MWESS
+BB81;BB81;1106 1170 11BC;BB81;1106 1170 11BC; # (ë®; ë®; 뮁; ë®; 뮁; ) HANGUL SYLLABLE MWENG
+BB82;BB82;1106 1170 11BD;BB82;1106 1170 11BD; # (뮂; 뮂; 뮂; 뮂; 뮂; ) HANGUL SYLLABLE MWEJ
+BB83;BB83;1106 1170 11BE;BB83;1106 1170 11BE; # (뮃; 뮃; 뮃; 뮃; 뮃; ) HANGUL SYLLABLE MWEC
+BB84;BB84;1106 1170 11BF;BB84;1106 1170 11BF; # (뮄; 뮄; 뮄; 뮄; 뮄; ) HANGUL SYLLABLE MWEK
+BB85;BB85;1106 1170 11C0;BB85;1106 1170 11C0; # (뮅; 뮅; 뮅; 뮅; 뮅; ) HANGUL SYLLABLE MWET
+BB86;BB86;1106 1170 11C1;BB86;1106 1170 11C1; # (뮆; 뮆; 뭬á‡; 뮆; 뭬á‡; ) HANGUL SYLLABLE MWEP
+BB87;BB87;1106 1170 11C2;BB87;1106 1170 11C2; # (뮇; 뮇; 뮇; 뮇; 뮇; ) HANGUL SYLLABLE MWEH
+BB88;BB88;1106 1171;BB88;1106 1171; # (뮈; 뮈; 뮈; 뮈; 뮈; ) HANGUL SYLLABLE MWI
+BB89;BB89;1106 1171 11A8;BB89;1106 1171 11A8; # (뮉; 뮉; 뮉; 뮉; 뮉; ) HANGUL SYLLABLE MWIG
+BB8A;BB8A;1106 1171 11A9;BB8A;1106 1171 11A9; # (뮊; 뮊; 뮊; 뮊; 뮊; ) HANGUL SYLLABLE MWIGG
+BB8B;BB8B;1106 1171 11AA;BB8B;1106 1171 11AA; # (뮋; 뮋; 뮋; 뮋; 뮋; ) HANGUL SYLLABLE MWIGS
+BB8C;BB8C;1106 1171 11AB;BB8C;1106 1171 11AB; # (뮌; 뮌; 뮌; 뮌; 뮌; ) HANGUL SYLLABLE MWIN
+BB8D;BB8D;1106 1171 11AC;BB8D;1106 1171 11AC; # (ë®; ë®; 뮍; ë®; 뮍; ) HANGUL SYLLABLE MWINJ
+BB8E;BB8E;1106 1171 11AD;BB8E;1106 1171 11AD; # (뮎; 뮎; 뮎; 뮎; 뮎; ) HANGUL SYLLABLE MWINH
+BB8F;BB8F;1106 1171 11AE;BB8F;1106 1171 11AE; # (ë®; ë®; 뮏; ë®; 뮏; ) HANGUL SYLLABLE MWID
+BB90;BB90;1106 1171 11AF;BB90;1106 1171 11AF; # (ë®; ë®; 뮐; ë®; 뮐; ) HANGUL SYLLABLE MWIL
+BB91;BB91;1106 1171 11B0;BB91;1106 1171 11B0; # (뮑; 뮑; 뮑; 뮑; 뮑; ) HANGUL SYLLABLE MWILG
+BB92;BB92;1106 1171 11B1;BB92;1106 1171 11B1; # (뮒; 뮒; 뮒; 뮒; 뮒; ) HANGUL SYLLABLE MWILM
+BB93;BB93;1106 1171 11B2;BB93;1106 1171 11B2; # (뮓; 뮓; 뮓; 뮓; 뮓; ) HANGUL SYLLABLE MWILB
+BB94;BB94;1106 1171 11B3;BB94;1106 1171 11B3; # (뮔; 뮔; 뮔; 뮔; 뮔; ) HANGUL SYLLABLE MWILS
+BB95;BB95;1106 1171 11B4;BB95;1106 1171 11B4; # (뮕; 뮕; 뮕; 뮕; 뮕; ) HANGUL SYLLABLE MWILT
+BB96;BB96;1106 1171 11B5;BB96;1106 1171 11B5; # (뮖; 뮖; 뮖; 뮖; 뮖; ) HANGUL SYLLABLE MWILP
+BB97;BB97;1106 1171 11B6;BB97;1106 1171 11B6; # (뮗; 뮗; 뮗; 뮗; 뮗; ) HANGUL SYLLABLE MWILH
+BB98;BB98;1106 1171 11B7;BB98;1106 1171 11B7; # (뮘; 뮘; 뮘; 뮘; 뮘; ) HANGUL SYLLABLE MWIM
+BB99;BB99;1106 1171 11B8;BB99;1106 1171 11B8; # (뮙; 뮙; 뮙; 뮙; 뮙; ) HANGUL SYLLABLE MWIB
+BB9A;BB9A;1106 1171 11B9;BB9A;1106 1171 11B9; # (뮚; 뮚; 뮚; 뮚; 뮚; ) HANGUL SYLLABLE MWIBS
+BB9B;BB9B;1106 1171 11BA;BB9B;1106 1171 11BA; # (뮛; 뮛; 뮛; 뮛; 뮛; ) HANGUL SYLLABLE MWIS
+BB9C;BB9C;1106 1171 11BB;BB9C;1106 1171 11BB; # (뮜; 뮜; 뮜; 뮜; 뮜; ) HANGUL SYLLABLE MWISS
+BB9D;BB9D;1106 1171 11BC;BB9D;1106 1171 11BC; # (ë®; ë®; 뮝; ë®; 뮝; ) HANGUL SYLLABLE MWING
+BB9E;BB9E;1106 1171 11BD;BB9E;1106 1171 11BD; # (뮞; 뮞; 뮞; 뮞; 뮞; ) HANGUL SYLLABLE MWIJ
+BB9F;BB9F;1106 1171 11BE;BB9F;1106 1171 11BE; # (뮟; 뮟; 뮟; 뮟; 뮟; ) HANGUL SYLLABLE MWIC
+BBA0;BBA0;1106 1171 11BF;BBA0;1106 1171 11BF; # (뮠; 뮠; 뮠; 뮠; 뮠; ) HANGUL SYLLABLE MWIK
+BBA1;BBA1;1106 1171 11C0;BBA1;1106 1171 11C0; # (뮡; 뮡; 뮡; 뮡; 뮡; ) HANGUL SYLLABLE MWIT
+BBA2;BBA2;1106 1171 11C1;BBA2;1106 1171 11C1; # (뮢; 뮢; 뮈á‡; 뮢; 뮈á‡; ) HANGUL SYLLABLE MWIP
+BBA3;BBA3;1106 1171 11C2;BBA3;1106 1171 11C2; # (뮣; 뮣; 뮣; 뮣; 뮣; ) HANGUL SYLLABLE MWIH
+BBA4;BBA4;1106 1172;BBA4;1106 1172; # (뮤; 뮤; 뮤; 뮤; 뮤; ) HANGUL SYLLABLE MYU
+BBA5;BBA5;1106 1172 11A8;BBA5;1106 1172 11A8; # (뮥; 뮥; 뮥; 뮥; 뮥; ) HANGUL SYLLABLE MYUG
+BBA6;BBA6;1106 1172 11A9;BBA6;1106 1172 11A9; # (뮦; 뮦; 뮦; 뮦; 뮦; ) HANGUL SYLLABLE MYUGG
+BBA7;BBA7;1106 1172 11AA;BBA7;1106 1172 11AA; # (뮧; 뮧; 뮧; 뮧; 뮧; ) HANGUL SYLLABLE MYUGS
+BBA8;BBA8;1106 1172 11AB;BBA8;1106 1172 11AB; # (뮨; 뮨; 뮨; 뮨; 뮨; ) HANGUL SYLLABLE MYUN
+BBA9;BBA9;1106 1172 11AC;BBA9;1106 1172 11AC; # (뮩; 뮩; 뮩; 뮩; 뮩; ) HANGUL SYLLABLE MYUNJ
+BBAA;BBAA;1106 1172 11AD;BBAA;1106 1172 11AD; # (뮪; 뮪; 뮪; 뮪; 뮪; ) HANGUL SYLLABLE MYUNH
+BBAB;BBAB;1106 1172 11AE;BBAB;1106 1172 11AE; # (뮫; 뮫; 뮫; 뮫; 뮫; ) HANGUL SYLLABLE MYUD
+BBAC;BBAC;1106 1172 11AF;BBAC;1106 1172 11AF; # (뮬; 뮬; 뮬; 뮬; 뮬; ) HANGUL SYLLABLE MYUL
+BBAD;BBAD;1106 1172 11B0;BBAD;1106 1172 11B0; # (뮭; 뮭; 뮭; 뮭; 뮭; ) HANGUL SYLLABLE MYULG
+BBAE;BBAE;1106 1172 11B1;BBAE;1106 1172 11B1; # (뮮; 뮮; 뮮; 뮮; 뮮; ) HANGUL SYLLABLE MYULM
+BBAF;BBAF;1106 1172 11B2;BBAF;1106 1172 11B2; # (뮯; 뮯; 뮯; 뮯; 뮯; ) HANGUL SYLLABLE MYULB
+BBB0;BBB0;1106 1172 11B3;BBB0;1106 1172 11B3; # (뮰; 뮰; 뮰; 뮰; 뮰; ) HANGUL SYLLABLE MYULS
+BBB1;BBB1;1106 1172 11B4;BBB1;1106 1172 11B4; # (뮱; 뮱; 뮱; 뮱; 뮱; ) HANGUL SYLLABLE MYULT
+BBB2;BBB2;1106 1172 11B5;BBB2;1106 1172 11B5; # (뮲; 뮲; 뮲; 뮲; 뮲; ) HANGUL SYLLABLE MYULP
+BBB3;BBB3;1106 1172 11B6;BBB3;1106 1172 11B6; # (뮳; 뮳; 뮳; 뮳; 뮳; ) HANGUL SYLLABLE MYULH
+BBB4;BBB4;1106 1172 11B7;BBB4;1106 1172 11B7; # (뮴; 뮴; 뮴; 뮴; 뮴; ) HANGUL SYLLABLE MYUM
+BBB5;BBB5;1106 1172 11B8;BBB5;1106 1172 11B8; # (뮵; 뮵; 뮵; 뮵; 뮵; ) HANGUL SYLLABLE MYUB
+BBB6;BBB6;1106 1172 11B9;BBB6;1106 1172 11B9; # (뮶; 뮶; 뮶; 뮶; 뮶; ) HANGUL SYLLABLE MYUBS
+BBB7;BBB7;1106 1172 11BA;BBB7;1106 1172 11BA; # (뮷; 뮷; 뮷; 뮷; 뮷; ) HANGUL SYLLABLE MYUS
+BBB8;BBB8;1106 1172 11BB;BBB8;1106 1172 11BB; # (뮸; 뮸; 뮸; 뮸; 뮸; ) HANGUL SYLLABLE MYUSS
+BBB9;BBB9;1106 1172 11BC;BBB9;1106 1172 11BC; # (뮹; 뮹; 뮹; 뮹; 뮹; ) HANGUL SYLLABLE MYUNG
+BBBA;BBBA;1106 1172 11BD;BBBA;1106 1172 11BD; # (뮺; 뮺; 뮺; 뮺; 뮺; ) HANGUL SYLLABLE MYUJ
+BBBB;BBBB;1106 1172 11BE;BBBB;1106 1172 11BE; # (뮻; 뮻; 뮻; 뮻; 뮻; ) HANGUL SYLLABLE MYUC
+BBBC;BBBC;1106 1172 11BF;BBBC;1106 1172 11BF; # (뮼; 뮼; 뮼; 뮼; 뮼; ) HANGUL SYLLABLE MYUK
+BBBD;BBBD;1106 1172 11C0;BBBD;1106 1172 11C0; # (뮽; 뮽; 뮽; 뮽; 뮽; ) HANGUL SYLLABLE MYUT
+BBBE;BBBE;1106 1172 11C1;BBBE;1106 1172 11C1; # (뮾; 뮾; 뮤á‡; 뮾; 뮤á‡; ) HANGUL SYLLABLE MYUP
+BBBF;BBBF;1106 1172 11C2;BBBF;1106 1172 11C2; # (뮿; 뮿; 뮿; 뮿; 뮿; ) HANGUL SYLLABLE MYUH
+BBC0;BBC0;1106 1173;BBC0;1106 1173; # (므; 므; 므; 므; 므; ) HANGUL SYLLABLE MEU
+BBC1;BBC1;1106 1173 11A8;BBC1;1106 1173 11A8; # (ë¯; ë¯; 믁; ë¯; 믁; ) HANGUL SYLLABLE MEUG
+BBC2;BBC2;1106 1173 11A9;BBC2;1106 1173 11A9; # (믂; 믂; 믂; 믂; 믂; ) HANGUL SYLLABLE MEUGG
+BBC3;BBC3;1106 1173 11AA;BBC3;1106 1173 11AA; # (믃; 믃; 믃; 믃; 믃; ) HANGUL SYLLABLE MEUGS
+BBC4;BBC4;1106 1173 11AB;BBC4;1106 1173 11AB; # (믄; 믄; 믄; 믄; 믄; ) HANGUL SYLLABLE MEUN
+BBC5;BBC5;1106 1173 11AC;BBC5;1106 1173 11AC; # (믅; 믅; 믅; 믅; 믅; ) HANGUL SYLLABLE MEUNJ
+BBC6;BBC6;1106 1173 11AD;BBC6;1106 1173 11AD; # (믆; 믆; 믆; 믆; 믆; ) HANGUL SYLLABLE MEUNH
+BBC7;BBC7;1106 1173 11AE;BBC7;1106 1173 11AE; # (믇; 믇; 믇; 믇; 믇; ) HANGUL SYLLABLE MEUD
+BBC8;BBC8;1106 1173 11AF;BBC8;1106 1173 11AF; # (믈; 믈; 믈; 믈; 믈; ) HANGUL SYLLABLE MEUL
+BBC9;BBC9;1106 1173 11B0;BBC9;1106 1173 11B0; # (믉; 믉; 믉; 믉; 믉; ) HANGUL SYLLABLE MEULG
+BBCA;BBCA;1106 1173 11B1;BBCA;1106 1173 11B1; # (믊; 믊; 믊; 믊; 믊; ) HANGUL SYLLABLE MEULM
+BBCB;BBCB;1106 1173 11B2;BBCB;1106 1173 11B2; # (믋; 믋; 믋; 믋; 믋; ) HANGUL SYLLABLE MEULB
+BBCC;BBCC;1106 1173 11B3;BBCC;1106 1173 11B3; # (믌; 믌; 믌; 믌; 믌; ) HANGUL SYLLABLE MEULS
+BBCD;BBCD;1106 1173 11B4;BBCD;1106 1173 11B4; # (ë¯; ë¯; 믍; ë¯; 믍; ) HANGUL SYLLABLE MEULT
+BBCE;BBCE;1106 1173 11B5;BBCE;1106 1173 11B5; # (믎; 믎; 믎; 믎; 믎; ) HANGUL SYLLABLE MEULP
+BBCF;BBCF;1106 1173 11B6;BBCF;1106 1173 11B6; # (ë¯; ë¯; 믏; ë¯; 믏; ) HANGUL SYLLABLE MEULH
+BBD0;BBD0;1106 1173 11B7;BBD0;1106 1173 11B7; # (ë¯; ë¯; 믐; ë¯; 믐; ) HANGUL SYLLABLE MEUM
+BBD1;BBD1;1106 1173 11B8;BBD1;1106 1173 11B8; # (믑; 믑; 믑; 믑; 믑; ) HANGUL SYLLABLE MEUB
+BBD2;BBD2;1106 1173 11B9;BBD2;1106 1173 11B9; # (믒; 믒; 믒; 믒; 믒; ) HANGUL SYLLABLE MEUBS
+BBD3;BBD3;1106 1173 11BA;BBD3;1106 1173 11BA; # (믓; 믓; 믓; 믓; 믓; ) HANGUL SYLLABLE MEUS
+BBD4;BBD4;1106 1173 11BB;BBD4;1106 1173 11BB; # (믔; 믔; 믔; 믔; 믔; ) HANGUL SYLLABLE MEUSS
+BBD5;BBD5;1106 1173 11BC;BBD5;1106 1173 11BC; # (믕; 믕; 믕; 믕; 믕; ) HANGUL SYLLABLE MEUNG
+BBD6;BBD6;1106 1173 11BD;BBD6;1106 1173 11BD; # (믖; 믖; 믖; 믖; 믖; ) HANGUL SYLLABLE MEUJ
+BBD7;BBD7;1106 1173 11BE;BBD7;1106 1173 11BE; # (믗; 믗; 믗; 믗; 믗; ) HANGUL SYLLABLE MEUC
+BBD8;BBD8;1106 1173 11BF;BBD8;1106 1173 11BF; # (믘; 믘; 믘; 믘; 믘; ) HANGUL SYLLABLE MEUK
+BBD9;BBD9;1106 1173 11C0;BBD9;1106 1173 11C0; # (믙; 믙; 믙; 믙; 믙; ) HANGUL SYLLABLE MEUT
+BBDA;BBDA;1106 1173 11C1;BBDA;1106 1173 11C1; # (믚; 믚; 므á‡; 믚; 므á‡; ) HANGUL SYLLABLE MEUP
+BBDB;BBDB;1106 1173 11C2;BBDB;1106 1173 11C2; # (믛; 믛; 믛; 믛; 믛; ) HANGUL SYLLABLE MEUH
+BBDC;BBDC;1106 1174;BBDC;1106 1174; # (믜; 믜; 믜; 믜; 믜; ) HANGUL SYLLABLE MYI
+BBDD;BBDD;1106 1174 11A8;BBDD;1106 1174 11A8; # (ë¯; ë¯; 믝; ë¯; 믝; ) HANGUL SYLLABLE MYIG
+BBDE;BBDE;1106 1174 11A9;BBDE;1106 1174 11A9; # (믞; 믞; 믞; 믞; 믞; ) HANGUL SYLLABLE MYIGG
+BBDF;BBDF;1106 1174 11AA;BBDF;1106 1174 11AA; # (믟; 믟; 믟; 믟; 믟; ) HANGUL SYLLABLE MYIGS
+BBE0;BBE0;1106 1174 11AB;BBE0;1106 1174 11AB; # (믠; 믠; 믠; 믠; 믠; ) HANGUL SYLLABLE MYIN
+BBE1;BBE1;1106 1174 11AC;BBE1;1106 1174 11AC; # (믡; 믡; 믡; 믡; 믡; ) HANGUL SYLLABLE MYINJ
+BBE2;BBE2;1106 1174 11AD;BBE2;1106 1174 11AD; # (믢; 믢; 믢; 믢; 믢; ) HANGUL SYLLABLE MYINH
+BBE3;BBE3;1106 1174 11AE;BBE3;1106 1174 11AE; # (믣; 믣; 믣; 믣; 믣; ) HANGUL SYLLABLE MYID
+BBE4;BBE4;1106 1174 11AF;BBE4;1106 1174 11AF; # (믤; 믤; 믤; 믤; 믤; ) HANGUL SYLLABLE MYIL
+BBE5;BBE5;1106 1174 11B0;BBE5;1106 1174 11B0; # (믥; 믥; 믥; 믥; 믥; ) HANGUL SYLLABLE MYILG
+BBE6;BBE6;1106 1174 11B1;BBE6;1106 1174 11B1; # (믦; 믦; 믦; 믦; 믦; ) HANGUL SYLLABLE MYILM
+BBE7;BBE7;1106 1174 11B2;BBE7;1106 1174 11B2; # (믧; 믧; 믧; 믧; 믧; ) HANGUL SYLLABLE MYILB
+BBE8;BBE8;1106 1174 11B3;BBE8;1106 1174 11B3; # (믨; 믨; 믨; 믨; 믨; ) HANGUL SYLLABLE MYILS
+BBE9;BBE9;1106 1174 11B4;BBE9;1106 1174 11B4; # (믩; 믩; 믩; 믩; 믩; ) HANGUL SYLLABLE MYILT
+BBEA;BBEA;1106 1174 11B5;BBEA;1106 1174 11B5; # (믪; 믪; 믪; 믪; 믪; ) HANGUL SYLLABLE MYILP
+BBEB;BBEB;1106 1174 11B6;BBEB;1106 1174 11B6; # (믫; 믫; 믫; 믫; 믫; ) HANGUL SYLLABLE MYILH
+BBEC;BBEC;1106 1174 11B7;BBEC;1106 1174 11B7; # (믬; 믬; 믬; 믬; 믬; ) HANGUL SYLLABLE MYIM
+BBED;BBED;1106 1174 11B8;BBED;1106 1174 11B8; # (믭; 믭; 믭; 믭; 믭; ) HANGUL SYLLABLE MYIB
+BBEE;BBEE;1106 1174 11B9;BBEE;1106 1174 11B9; # (믮; 믮; 믮; 믮; 믮; ) HANGUL SYLLABLE MYIBS
+BBEF;BBEF;1106 1174 11BA;BBEF;1106 1174 11BA; # (믯; 믯; 믯; 믯; 믯; ) HANGUL SYLLABLE MYIS
+BBF0;BBF0;1106 1174 11BB;BBF0;1106 1174 11BB; # (믰; 믰; 믰; 믰; 믰; ) HANGUL SYLLABLE MYISS
+BBF1;BBF1;1106 1174 11BC;BBF1;1106 1174 11BC; # (믱; 믱; 믱; 믱; 믱; ) HANGUL SYLLABLE MYING
+BBF2;BBF2;1106 1174 11BD;BBF2;1106 1174 11BD; # (믲; 믲; 믲; 믲; 믲; ) HANGUL SYLLABLE MYIJ
+BBF3;BBF3;1106 1174 11BE;BBF3;1106 1174 11BE; # (믳; 믳; 믳; 믳; 믳; ) HANGUL SYLLABLE MYIC
+BBF4;BBF4;1106 1174 11BF;BBF4;1106 1174 11BF; # (믴; 믴; 믴; 믴; 믴; ) HANGUL SYLLABLE MYIK
+BBF5;BBF5;1106 1174 11C0;BBF5;1106 1174 11C0; # (믵; 믵; 믵; 믵; 믵; ) HANGUL SYLLABLE MYIT
+BBF6;BBF6;1106 1174 11C1;BBF6;1106 1174 11C1; # (믶; 믶; 믜á‡; 믶; 믜á‡; ) HANGUL SYLLABLE MYIP
+BBF7;BBF7;1106 1174 11C2;BBF7;1106 1174 11C2; # (믷; 믷; 믷; 믷; 믷; ) HANGUL SYLLABLE MYIH
+BBF8;BBF8;1106 1175;BBF8;1106 1175; # (미; 미; 미; 미; 미; ) HANGUL SYLLABLE MI
+BBF9;BBF9;1106 1175 11A8;BBF9;1106 1175 11A8; # (믹; 믹; 믹; 믹; 믹; ) HANGUL SYLLABLE MIG
+BBFA;BBFA;1106 1175 11A9;BBFA;1106 1175 11A9; # (믺; 믺; 믺; 믺; 믺; ) HANGUL SYLLABLE MIGG
+BBFB;BBFB;1106 1175 11AA;BBFB;1106 1175 11AA; # (믻; 믻; 믻; 믻; 믻; ) HANGUL SYLLABLE MIGS
+BBFC;BBFC;1106 1175 11AB;BBFC;1106 1175 11AB; # (민; 민; 민; 민; 민; ) HANGUL SYLLABLE MIN
+BBFD;BBFD;1106 1175 11AC;BBFD;1106 1175 11AC; # (믽; 믽; 믽; 믽; 믽; ) HANGUL SYLLABLE MINJ
+BBFE;BBFE;1106 1175 11AD;BBFE;1106 1175 11AD; # (믾; 믾; 믾; 믾; 믾; ) HANGUL SYLLABLE MINH
+BBFF;BBFF;1106 1175 11AE;BBFF;1106 1175 11AE; # (믿; 믿; 믿; 믿; 믿; ) HANGUL SYLLABLE MID
+BC00;BC00;1106 1175 11AF;BC00;1106 1175 11AF; # (밀; 밀; 밀; 밀; 밀; ) HANGUL SYLLABLE MIL
+BC01;BC01;1106 1175 11B0;BC01;1106 1175 11B0; # (ë°; ë°; 밁; ë°; 밁; ) HANGUL SYLLABLE MILG
+BC02;BC02;1106 1175 11B1;BC02;1106 1175 11B1; # (밂; 밂; 밂; 밂; 밂; ) HANGUL SYLLABLE MILM
+BC03;BC03;1106 1175 11B2;BC03;1106 1175 11B2; # (밃; 밃; 밃; 밃; 밃; ) HANGUL SYLLABLE MILB
+BC04;BC04;1106 1175 11B3;BC04;1106 1175 11B3; # (밄; 밄; 밄; 밄; 밄; ) HANGUL SYLLABLE MILS
+BC05;BC05;1106 1175 11B4;BC05;1106 1175 11B4; # (밅; 밅; 밅; 밅; 밅; ) HANGUL SYLLABLE MILT
+BC06;BC06;1106 1175 11B5;BC06;1106 1175 11B5; # (밆; 밆; 밆; 밆; 밆; ) HANGUL SYLLABLE MILP
+BC07;BC07;1106 1175 11B6;BC07;1106 1175 11B6; # (밇; 밇; 밇; 밇; 밇; ) HANGUL SYLLABLE MILH
+BC08;BC08;1106 1175 11B7;BC08;1106 1175 11B7; # (밈; 밈; 밈; 밈; 밈; ) HANGUL SYLLABLE MIM
+BC09;BC09;1106 1175 11B8;BC09;1106 1175 11B8; # (밉; 밉; 밉; 밉; 밉; ) HANGUL SYLLABLE MIB
+BC0A;BC0A;1106 1175 11B9;BC0A;1106 1175 11B9; # (밊; 밊; 밊; 밊; 밊; ) HANGUL SYLLABLE MIBS
+BC0B;BC0B;1106 1175 11BA;BC0B;1106 1175 11BA; # (밋; 밋; 밋; 밋; 밋; ) HANGUL SYLLABLE MIS
+BC0C;BC0C;1106 1175 11BB;BC0C;1106 1175 11BB; # (밌; 밌; 밌; 밌; 밌; ) HANGUL SYLLABLE MISS
+BC0D;BC0D;1106 1175 11BC;BC0D;1106 1175 11BC; # (ë°; ë°; 밍; ë°; 밍; ) HANGUL SYLLABLE MING
+BC0E;BC0E;1106 1175 11BD;BC0E;1106 1175 11BD; # (밎; 밎; 밎; 밎; 밎; ) HANGUL SYLLABLE MIJ
+BC0F;BC0F;1106 1175 11BE;BC0F;1106 1175 11BE; # (ë°; ë°; 및; ë°; 및; ) HANGUL SYLLABLE MIC
+BC10;BC10;1106 1175 11BF;BC10;1106 1175 11BF; # (ë°; ë°; 밐; ë°; 밐; ) HANGUL SYLLABLE MIK
+BC11;BC11;1106 1175 11C0;BC11;1106 1175 11C0; # (밑; 밑; 밑; 밑; 밑; ) HANGUL SYLLABLE MIT
+BC12;BC12;1106 1175 11C1;BC12;1106 1175 11C1; # (ë°’; ë°’; 미á‡; ë°’; 미á‡; ) HANGUL SYLLABLE MIP
+BC13;BC13;1106 1175 11C2;BC13;1106 1175 11C2; # (밓; 밓; 밓; 밓; 밓; ) HANGUL SYLLABLE MIH
+BC14;BC14;1107 1161;BC14;1107 1161; # (바; 바; 바; 바; 바; ) HANGUL SYLLABLE BA
+BC15;BC15;1107 1161 11A8;BC15;1107 1161 11A8; # (박; 박; 박; 박; 박; ) HANGUL SYLLABLE BAG
+BC16;BC16;1107 1161 11A9;BC16;1107 1161 11A9; # (밖; 밖; 밖; 밖; 밖; ) HANGUL SYLLABLE BAGG
+BC17;BC17;1107 1161 11AA;BC17;1107 1161 11AA; # (밗; 밗; 밗; 밗; 밗; ) HANGUL SYLLABLE BAGS
+BC18;BC18;1107 1161 11AB;BC18;1107 1161 11AB; # (반; 반; 반; 반; 반; ) HANGUL SYLLABLE BAN
+BC19;BC19;1107 1161 11AC;BC19;1107 1161 11AC; # (밙; 밙; 밙; 밙; 밙; ) HANGUL SYLLABLE BANJ
+BC1A;BC1A;1107 1161 11AD;BC1A;1107 1161 11AD; # (밚; 밚; 밚; 밚; 밚; ) HANGUL SYLLABLE BANH
+BC1B;BC1B;1107 1161 11AE;BC1B;1107 1161 11AE; # (받; 받; 받; 받; 받; ) HANGUL SYLLABLE BAD
+BC1C;BC1C;1107 1161 11AF;BC1C;1107 1161 11AF; # (발; 발; 발; 발; 발; ) HANGUL SYLLABLE BAL
+BC1D;BC1D;1107 1161 11B0;BC1D;1107 1161 11B0; # (ë°; ë°; 밝; ë°; 밝; ) HANGUL SYLLABLE BALG
+BC1E;BC1E;1107 1161 11B1;BC1E;1107 1161 11B1; # (밞; 밞; 밞; 밞; 밞; ) HANGUL SYLLABLE BALM
+BC1F;BC1F;1107 1161 11B2;BC1F;1107 1161 11B2; # (밟; 밟; 밟; 밟; 밟; ) HANGUL SYLLABLE BALB
+BC20;BC20;1107 1161 11B3;BC20;1107 1161 11B3; # (밠; 밠; 밠; 밠; 밠; ) HANGUL SYLLABLE BALS
+BC21;BC21;1107 1161 11B4;BC21;1107 1161 11B4; # (밡; 밡; 밡; 밡; 밡; ) HANGUL SYLLABLE BALT
+BC22;BC22;1107 1161 11B5;BC22;1107 1161 11B5; # (밢; 밢; 밢; 밢; 밢; ) HANGUL SYLLABLE BALP
+BC23;BC23;1107 1161 11B6;BC23;1107 1161 11B6; # (밣; 밣; 밣; 밣; 밣; ) HANGUL SYLLABLE BALH
+BC24;BC24;1107 1161 11B7;BC24;1107 1161 11B7; # (밤; 밤; 밤; 밤; 밤; ) HANGUL SYLLABLE BAM
+BC25;BC25;1107 1161 11B8;BC25;1107 1161 11B8; # (밥; 밥; 밥; 밥; 밥; ) HANGUL SYLLABLE BAB
+BC26;BC26;1107 1161 11B9;BC26;1107 1161 11B9; # (밦; 밦; 밦; 밦; 밦; ) HANGUL SYLLABLE BABS
+BC27;BC27;1107 1161 11BA;BC27;1107 1161 11BA; # (밧; 밧; 밧; 밧; 밧; ) HANGUL SYLLABLE BAS
+BC28;BC28;1107 1161 11BB;BC28;1107 1161 11BB; # (밨; 밨; 밨; 밨; 밨; ) HANGUL SYLLABLE BASS
+BC29;BC29;1107 1161 11BC;BC29;1107 1161 11BC; # (방; 방; 방; 방; 방; ) HANGUL SYLLABLE BANG
+BC2A;BC2A;1107 1161 11BD;BC2A;1107 1161 11BD; # (밪; 밪; 밪; 밪; 밪; ) HANGUL SYLLABLE BAJ
+BC2B;BC2B;1107 1161 11BE;BC2B;1107 1161 11BE; # (밫; 밫; 밫; 밫; 밫; ) HANGUL SYLLABLE BAC
+BC2C;BC2C;1107 1161 11BF;BC2C;1107 1161 11BF; # (밬; 밬; 밬; 밬; 밬; ) HANGUL SYLLABLE BAK
+BC2D;BC2D;1107 1161 11C0;BC2D;1107 1161 11C0; # (밭; 밭; 밭; 밭; 밭; ) HANGUL SYLLABLE BAT
+BC2E;BC2E;1107 1161 11C1;BC2E;1107 1161 11C1; # (ë°®; ë°®; 바á‡; ë°®; 바á‡; ) HANGUL SYLLABLE BAP
+BC2F;BC2F;1107 1161 11C2;BC2F;1107 1161 11C2; # (밯; 밯; 밯; 밯; 밯; ) HANGUL SYLLABLE BAH
+BC30;BC30;1107 1162;BC30;1107 1162; # (배; 배; 배; 배; 배; ) HANGUL SYLLABLE BAE
+BC31;BC31;1107 1162 11A8;BC31;1107 1162 11A8; # (백; 백; 백; 백; 백; ) HANGUL SYLLABLE BAEG
+BC32;BC32;1107 1162 11A9;BC32;1107 1162 11A9; # (밲; 밲; 밲; 밲; 밲; ) HANGUL SYLLABLE BAEGG
+BC33;BC33;1107 1162 11AA;BC33;1107 1162 11AA; # (밳; 밳; 밳; 밳; 밳; ) HANGUL SYLLABLE BAEGS
+BC34;BC34;1107 1162 11AB;BC34;1107 1162 11AB; # (밴; 밴; 밴; 밴; 밴; ) HANGUL SYLLABLE BAEN
+BC35;BC35;1107 1162 11AC;BC35;1107 1162 11AC; # (밵; 밵; 밵; 밵; 밵; ) HANGUL SYLLABLE BAENJ
+BC36;BC36;1107 1162 11AD;BC36;1107 1162 11AD; # (밶; 밶; 밶; 밶; 밶; ) HANGUL SYLLABLE BAENH
+BC37;BC37;1107 1162 11AE;BC37;1107 1162 11AE; # (밷; 밷; 밷; 밷; 밷; ) HANGUL SYLLABLE BAED
+BC38;BC38;1107 1162 11AF;BC38;1107 1162 11AF; # (밸; 밸; 밸; 밸; 밸; ) HANGUL SYLLABLE BAEL
+BC39;BC39;1107 1162 11B0;BC39;1107 1162 11B0; # (밹; 밹; 밹; 밹; 밹; ) HANGUL SYLLABLE BAELG
+BC3A;BC3A;1107 1162 11B1;BC3A;1107 1162 11B1; # (밺; 밺; 밺; 밺; 밺; ) HANGUL SYLLABLE BAELM
+BC3B;BC3B;1107 1162 11B2;BC3B;1107 1162 11B2; # (밻; 밻; 밻; 밻; 밻; ) HANGUL SYLLABLE BAELB
+BC3C;BC3C;1107 1162 11B3;BC3C;1107 1162 11B3; # (밼; 밼; 밼; 밼; 밼; ) HANGUL SYLLABLE BAELS
+BC3D;BC3D;1107 1162 11B4;BC3D;1107 1162 11B4; # (밽; 밽; 밽; 밽; 밽; ) HANGUL SYLLABLE BAELT
+BC3E;BC3E;1107 1162 11B5;BC3E;1107 1162 11B5; # (밾; 밾; 밾; 밾; 밾; ) HANGUL SYLLABLE BAELP
+BC3F;BC3F;1107 1162 11B6;BC3F;1107 1162 11B6; # (밿; 밿; 밿; 밿; 밿; ) HANGUL SYLLABLE BAELH
+BC40;BC40;1107 1162 11B7;BC40;1107 1162 11B7; # (뱀; 뱀; 뱀; 뱀; 뱀; ) HANGUL SYLLABLE BAEM
+BC41;BC41;1107 1162 11B8;BC41;1107 1162 11B8; # (ë±; ë±; 뱁; ë±; 뱁; ) HANGUL SYLLABLE BAEB
+BC42;BC42;1107 1162 11B9;BC42;1107 1162 11B9; # (뱂; 뱂; 뱂; 뱂; 뱂; ) HANGUL SYLLABLE BAEBS
+BC43;BC43;1107 1162 11BA;BC43;1107 1162 11BA; # (뱃; 뱃; 뱃; 뱃; 뱃; ) HANGUL SYLLABLE BAES
+BC44;BC44;1107 1162 11BB;BC44;1107 1162 11BB; # (뱄; 뱄; 뱄; 뱄; 뱄; ) HANGUL SYLLABLE BAESS
+BC45;BC45;1107 1162 11BC;BC45;1107 1162 11BC; # (뱅; 뱅; 뱅; 뱅; 뱅; ) HANGUL SYLLABLE BAENG
+BC46;BC46;1107 1162 11BD;BC46;1107 1162 11BD; # (뱆; 뱆; 뱆; 뱆; 뱆; ) HANGUL SYLLABLE BAEJ
+BC47;BC47;1107 1162 11BE;BC47;1107 1162 11BE; # (뱇; 뱇; 뱇; 뱇; 뱇; ) HANGUL SYLLABLE BAEC
+BC48;BC48;1107 1162 11BF;BC48;1107 1162 11BF; # (뱈; 뱈; 뱈; 뱈; 뱈; ) HANGUL SYLLABLE BAEK
+BC49;BC49;1107 1162 11C0;BC49;1107 1162 11C0; # (뱉; 뱉; 뱉; 뱉; 뱉; ) HANGUL SYLLABLE BAET
+BC4A;BC4A;1107 1162 11C1;BC4A;1107 1162 11C1; # (뱊; 뱊; 배á‡; 뱊; 배á‡; ) HANGUL SYLLABLE BAEP
+BC4B;BC4B;1107 1162 11C2;BC4B;1107 1162 11C2; # (뱋; 뱋; 뱋; 뱋; 뱋; ) HANGUL SYLLABLE BAEH
+BC4C;BC4C;1107 1163;BC4C;1107 1163; # (뱌; 뱌; 뱌; 뱌; 뱌; ) HANGUL SYLLABLE BYA
+BC4D;BC4D;1107 1163 11A8;BC4D;1107 1163 11A8; # (ë±; ë±; 뱍; ë±; 뱍; ) HANGUL SYLLABLE BYAG
+BC4E;BC4E;1107 1163 11A9;BC4E;1107 1163 11A9; # (뱎; 뱎; 뱎; 뱎; 뱎; ) HANGUL SYLLABLE BYAGG
+BC4F;BC4F;1107 1163 11AA;BC4F;1107 1163 11AA; # (ë±; ë±; 뱏; ë±; 뱏; ) HANGUL SYLLABLE BYAGS
+BC50;BC50;1107 1163 11AB;BC50;1107 1163 11AB; # (ë±; ë±; 뱐; ë±; 뱐; ) HANGUL SYLLABLE BYAN
+BC51;BC51;1107 1163 11AC;BC51;1107 1163 11AC; # (뱑; 뱑; 뱑; 뱑; 뱑; ) HANGUL SYLLABLE BYANJ
+BC52;BC52;1107 1163 11AD;BC52;1107 1163 11AD; # (뱒; 뱒; 뱒; 뱒; 뱒; ) HANGUL SYLLABLE BYANH
+BC53;BC53;1107 1163 11AE;BC53;1107 1163 11AE; # (뱓; 뱓; 뱓; 뱓; 뱓; ) HANGUL SYLLABLE BYAD
+BC54;BC54;1107 1163 11AF;BC54;1107 1163 11AF; # (뱔; 뱔; 뱔; 뱔; 뱔; ) HANGUL SYLLABLE BYAL
+BC55;BC55;1107 1163 11B0;BC55;1107 1163 11B0; # (뱕; 뱕; 뱕; 뱕; 뱕; ) HANGUL SYLLABLE BYALG
+BC56;BC56;1107 1163 11B1;BC56;1107 1163 11B1; # (뱖; 뱖; 뱖; 뱖; 뱖; ) HANGUL SYLLABLE BYALM
+BC57;BC57;1107 1163 11B2;BC57;1107 1163 11B2; # (뱗; 뱗; 뱗; 뱗; 뱗; ) HANGUL SYLLABLE BYALB
+BC58;BC58;1107 1163 11B3;BC58;1107 1163 11B3; # (뱘; 뱘; 뱘; 뱘; 뱘; ) HANGUL SYLLABLE BYALS
+BC59;BC59;1107 1163 11B4;BC59;1107 1163 11B4; # (뱙; 뱙; 뱙; 뱙; 뱙; ) HANGUL SYLLABLE BYALT
+BC5A;BC5A;1107 1163 11B5;BC5A;1107 1163 11B5; # (뱚; 뱚; 뱚; 뱚; 뱚; ) HANGUL SYLLABLE BYALP
+BC5B;BC5B;1107 1163 11B6;BC5B;1107 1163 11B6; # (뱛; 뱛; 뱛; 뱛; 뱛; ) HANGUL SYLLABLE BYALH
+BC5C;BC5C;1107 1163 11B7;BC5C;1107 1163 11B7; # (뱜; 뱜; 뱜; 뱜; 뱜; ) HANGUL SYLLABLE BYAM
+BC5D;BC5D;1107 1163 11B8;BC5D;1107 1163 11B8; # (ë±; ë±; 뱝; ë±; 뱝; ) HANGUL SYLLABLE BYAB
+BC5E;BC5E;1107 1163 11B9;BC5E;1107 1163 11B9; # (뱞; 뱞; 뱞; 뱞; 뱞; ) HANGUL SYLLABLE BYABS
+BC5F;BC5F;1107 1163 11BA;BC5F;1107 1163 11BA; # (뱟; 뱟; 뱟; 뱟; 뱟; ) HANGUL SYLLABLE BYAS
+BC60;BC60;1107 1163 11BB;BC60;1107 1163 11BB; # (뱠; 뱠; 뱠; 뱠; 뱠; ) HANGUL SYLLABLE BYASS
+BC61;BC61;1107 1163 11BC;BC61;1107 1163 11BC; # (뱡; 뱡; 뱡; 뱡; 뱡; ) HANGUL SYLLABLE BYANG
+BC62;BC62;1107 1163 11BD;BC62;1107 1163 11BD; # (뱢; 뱢; 뱢; 뱢; 뱢; ) HANGUL SYLLABLE BYAJ
+BC63;BC63;1107 1163 11BE;BC63;1107 1163 11BE; # (뱣; 뱣; 뱣; 뱣; 뱣; ) HANGUL SYLLABLE BYAC
+BC64;BC64;1107 1163 11BF;BC64;1107 1163 11BF; # (뱤; 뱤; 뱤; 뱤; 뱤; ) HANGUL SYLLABLE BYAK
+BC65;BC65;1107 1163 11C0;BC65;1107 1163 11C0; # (뱥; 뱥; 뱥; 뱥; 뱥; ) HANGUL SYLLABLE BYAT
+BC66;BC66;1107 1163 11C1;BC66;1107 1163 11C1; # (뱦; 뱦; 뱌á‡; 뱦; 뱌á‡; ) HANGUL SYLLABLE BYAP
+BC67;BC67;1107 1163 11C2;BC67;1107 1163 11C2; # (뱧; 뱧; 뱧; 뱧; 뱧; ) HANGUL SYLLABLE BYAH
+BC68;BC68;1107 1164;BC68;1107 1164; # (뱨; 뱨; 뱨; 뱨; 뱨; ) HANGUL SYLLABLE BYAE
+BC69;BC69;1107 1164 11A8;BC69;1107 1164 11A8; # (뱩; 뱩; 뱩; 뱩; 뱩; ) HANGUL SYLLABLE BYAEG
+BC6A;BC6A;1107 1164 11A9;BC6A;1107 1164 11A9; # (뱪; 뱪; 뱪; 뱪; 뱪; ) HANGUL SYLLABLE BYAEGG
+BC6B;BC6B;1107 1164 11AA;BC6B;1107 1164 11AA; # (뱫; 뱫; 뱫; 뱫; 뱫; ) HANGUL SYLLABLE BYAEGS
+BC6C;BC6C;1107 1164 11AB;BC6C;1107 1164 11AB; # (뱬; 뱬; 뱬; 뱬; 뱬; ) HANGUL SYLLABLE BYAEN
+BC6D;BC6D;1107 1164 11AC;BC6D;1107 1164 11AC; # (뱭; 뱭; 뱭; 뱭; 뱭; ) HANGUL SYLLABLE BYAENJ
+BC6E;BC6E;1107 1164 11AD;BC6E;1107 1164 11AD; # (뱮; 뱮; 뱮; 뱮; 뱮; ) HANGUL SYLLABLE BYAENH
+BC6F;BC6F;1107 1164 11AE;BC6F;1107 1164 11AE; # (뱯; 뱯; 뱯; 뱯; 뱯; ) HANGUL SYLLABLE BYAED
+BC70;BC70;1107 1164 11AF;BC70;1107 1164 11AF; # (뱰; 뱰; 뱰; 뱰; 뱰; ) HANGUL SYLLABLE BYAEL
+BC71;BC71;1107 1164 11B0;BC71;1107 1164 11B0; # (뱱; 뱱; 뱱; 뱱; 뱱; ) HANGUL SYLLABLE BYAELG
+BC72;BC72;1107 1164 11B1;BC72;1107 1164 11B1; # (뱲; 뱲; 뱲; 뱲; 뱲; ) HANGUL SYLLABLE BYAELM
+BC73;BC73;1107 1164 11B2;BC73;1107 1164 11B2; # (뱳; 뱳; 뱳; 뱳; 뱳; ) HANGUL SYLLABLE BYAELB
+BC74;BC74;1107 1164 11B3;BC74;1107 1164 11B3; # (뱴; 뱴; 뱴; 뱴; 뱴; ) HANGUL SYLLABLE BYAELS
+BC75;BC75;1107 1164 11B4;BC75;1107 1164 11B4; # (뱵; 뱵; 뱵; 뱵; 뱵; ) HANGUL SYLLABLE BYAELT
+BC76;BC76;1107 1164 11B5;BC76;1107 1164 11B5; # (뱶; 뱶; 뱶; 뱶; 뱶; ) HANGUL SYLLABLE BYAELP
+BC77;BC77;1107 1164 11B6;BC77;1107 1164 11B6; # (뱷; 뱷; 뱷; 뱷; 뱷; ) HANGUL SYLLABLE BYAELH
+BC78;BC78;1107 1164 11B7;BC78;1107 1164 11B7; # (뱸; 뱸; 뱸; 뱸; 뱸; ) HANGUL SYLLABLE BYAEM
+BC79;BC79;1107 1164 11B8;BC79;1107 1164 11B8; # (뱹; 뱹; 뱹; 뱹; 뱹; ) HANGUL SYLLABLE BYAEB
+BC7A;BC7A;1107 1164 11B9;BC7A;1107 1164 11B9; # (뱺; 뱺; 뱺; 뱺; 뱺; ) HANGUL SYLLABLE BYAEBS
+BC7B;BC7B;1107 1164 11BA;BC7B;1107 1164 11BA; # (뱻; 뱻; 뱻; 뱻; 뱻; ) HANGUL SYLLABLE BYAES
+BC7C;BC7C;1107 1164 11BB;BC7C;1107 1164 11BB; # (뱼; 뱼; 뱼; 뱼; 뱼; ) HANGUL SYLLABLE BYAESS
+BC7D;BC7D;1107 1164 11BC;BC7D;1107 1164 11BC; # (뱽; 뱽; 뱽; 뱽; 뱽; ) HANGUL SYLLABLE BYAENG
+BC7E;BC7E;1107 1164 11BD;BC7E;1107 1164 11BD; # (뱾; 뱾; 뱾; 뱾; 뱾; ) HANGUL SYLLABLE BYAEJ
+BC7F;BC7F;1107 1164 11BE;BC7F;1107 1164 11BE; # (뱿; 뱿; 뱿; 뱿; 뱿; ) HANGUL SYLLABLE BYAEC
+BC80;BC80;1107 1164 11BF;BC80;1107 1164 11BF; # (벀; 벀; 벀; 벀; 벀; ) HANGUL SYLLABLE BYAEK
+BC81;BC81;1107 1164 11C0;BC81;1107 1164 11C0; # (ë²; ë²; 벁; ë²; 벁; ) HANGUL SYLLABLE BYAET
+BC82;BC82;1107 1164 11C1;BC82;1107 1164 11C1; # (벂; 벂; 뱨á‡; 벂; 뱨á‡; ) HANGUL SYLLABLE BYAEP
+BC83;BC83;1107 1164 11C2;BC83;1107 1164 11C2; # (벃; 벃; 벃; 벃; 벃; ) HANGUL SYLLABLE BYAEH
+BC84;BC84;1107 1165;BC84;1107 1165; # (버; 버; 버; 버; 버; ) HANGUL SYLLABLE BEO
+BC85;BC85;1107 1165 11A8;BC85;1107 1165 11A8; # (벅; 벅; 벅; 벅; 벅; ) HANGUL SYLLABLE BEOG
+BC86;BC86;1107 1165 11A9;BC86;1107 1165 11A9; # (벆; 벆; 벆; 벆; 벆; ) HANGUL SYLLABLE BEOGG
+BC87;BC87;1107 1165 11AA;BC87;1107 1165 11AA; # (벇; 벇; 벇; 벇; 벇; ) HANGUL SYLLABLE BEOGS
+BC88;BC88;1107 1165 11AB;BC88;1107 1165 11AB; # (번; 번; 번; 번; 번; ) HANGUL SYLLABLE BEON
+BC89;BC89;1107 1165 11AC;BC89;1107 1165 11AC; # (벉; 벉; 벉; 벉; 벉; ) HANGUL SYLLABLE BEONJ
+BC8A;BC8A;1107 1165 11AD;BC8A;1107 1165 11AD; # (벊; 벊; 벊; 벊; 벊; ) HANGUL SYLLABLE BEONH
+BC8B;BC8B;1107 1165 11AE;BC8B;1107 1165 11AE; # (벋; 벋; 벋; 벋; 벋; ) HANGUL SYLLABLE BEOD
+BC8C;BC8C;1107 1165 11AF;BC8C;1107 1165 11AF; # (벌; 벌; 벌; 벌; 벌; ) HANGUL SYLLABLE BEOL
+BC8D;BC8D;1107 1165 11B0;BC8D;1107 1165 11B0; # (ë²; ë²; 벍; ë²; 벍; ) HANGUL SYLLABLE BEOLG
+BC8E;BC8E;1107 1165 11B1;BC8E;1107 1165 11B1; # (벎; 벎; 벎; 벎; 벎; ) HANGUL SYLLABLE BEOLM
+BC8F;BC8F;1107 1165 11B2;BC8F;1107 1165 11B2; # (ë²; ë²; 벏; ë²; 벏; ) HANGUL SYLLABLE BEOLB
+BC90;BC90;1107 1165 11B3;BC90;1107 1165 11B3; # (ë²; ë²; 벐; ë²; 벐; ) HANGUL SYLLABLE BEOLS
+BC91;BC91;1107 1165 11B4;BC91;1107 1165 11B4; # (벑; 벑; 벑; 벑; 벑; ) HANGUL SYLLABLE BEOLT
+BC92;BC92;1107 1165 11B5;BC92;1107 1165 11B5; # (벒; 벒; 벒; 벒; 벒; ) HANGUL SYLLABLE BEOLP
+BC93;BC93;1107 1165 11B6;BC93;1107 1165 11B6; # (벓; 벓; 벓; 벓; 벓; ) HANGUL SYLLABLE BEOLH
+BC94;BC94;1107 1165 11B7;BC94;1107 1165 11B7; # (범; 범; 범; 범; 범; ) HANGUL SYLLABLE BEOM
+BC95;BC95;1107 1165 11B8;BC95;1107 1165 11B8; # (법; 법; 법; 법; 법; ) HANGUL SYLLABLE BEOB
+BC96;BC96;1107 1165 11B9;BC96;1107 1165 11B9; # (벖; 벖; 벖; 벖; 벖; ) HANGUL SYLLABLE BEOBS
+BC97;BC97;1107 1165 11BA;BC97;1107 1165 11BA; # (벗; 벗; 벗; 벗; 벗; ) HANGUL SYLLABLE BEOS
+BC98;BC98;1107 1165 11BB;BC98;1107 1165 11BB; # (벘; 벘; 벘; 벘; 벘; ) HANGUL SYLLABLE BEOSS
+BC99;BC99;1107 1165 11BC;BC99;1107 1165 11BC; # (벙; 벙; 벙; 벙; 벙; ) HANGUL SYLLABLE BEONG
+BC9A;BC9A;1107 1165 11BD;BC9A;1107 1165 11BD; # (벚; 벚; 벚; 벚; 벚; ) HANGUL SYLLABLE BEOJ
+BC9B;BC9B;1107 1165 11BE;BC9B;1107 1165 11BE; # (벛; 벛; 벛; 벛; 벛; ) HANGUL SYLLABLE BEOC
+BC9C;BC9C;1107 1165 11BF;BC9C;1107 1165 11BF; # (벜; 벜; 벜; 벜; 벜; ) HANGUL SYLLABLE BEOK
+BC9D;BC9D;1107 1165 11C0;BC9D;1107 1165 11C0; # (ë²; ë²; 벝; ë²; 벝; ) HANGUL SYLLABLE BEOT
+BC9E;BC9E;1107 1165 11C1;BC9E;1107 1165 11C1; # (벞; 벞; 버á‡; 벞; 버á‡; ) HANGUL SYLLABLE BEOP
+BC9F;BC9F;1107 1165 11C2;BC9F;1107 1165 11C2; # (벟; 벟; 벟; 벟; 벟; ) HANGUL SYLLABLE BEOH
+BCA0;BCA0;1107 1166;BCA0;1107 1166; # (베; 베; 베; 베; 베; ) HANGUL SYLLABLE BE
+BCA1;BCA1;1107 1166 11A8;BCA1;1107 1166 11A8; # (벡; 벡; 벡; 벡; 벡; ) HANGUL SYLLABLE BEG
+BCA2;BCA2;1107 1166 11A9;BCA2;1107 1166 11A9; # (벢; 벢; 벢; 벢; 벢; ) HANGUL SYLLABLE BEGG
+BCA3;BCA3;1107 1166 11AA;BCA3;1107 1166 11AA; # (벣; 벣; 벣; 벣; 벣; ) HANGUL SYLLABLE BEGS
+BCA4;BCA4;1107 1166 11AB;BCA4;1107 1166 11AB; # (벤; 벤; 벤; 벤; 벤; ) HANGUL SYLLABLE BEN
+BCA5;BCA5;1107 1166 11AC;BCA5;1107 1166 11AC; # (벥; 벥; 벥; 벥; 벥; ) HANGUL SYLLABLE BENJ
+BCA6;BCA6;1107 1166 11AD;BCA6;1107 1166 11AD; # (벦; 벦; 벦; 벦; 벦; ) HANGUL SYLLABLE BENH
+BCA7;BCA7;1107 1166 11AE;BCA7;1107 1166 11AE; # (벧; 벧; 벧; 벧; 벧; ) HANGUL SYLLABLE BED
+BCA8;BCA8;1107 1166 11AF;BCA8;1107 1166 11AF; # (벨; 벨; 벨; 벨; 벨; ) HANGUL SYLLABLE BEL
+BCA9;BCA9;1107 1166 11B0;BCA9;1107 1166 11B0; # (벩; 벩; 벩; 벩; 벩; ) HANGUL SYLLABLE BELG
+BCAA;BCAA;1107 1166 11B1;BCAA;1107 1166 11B1; # (벪; 벪; 벪; 벪; 벪; ) HANGUL SYLLABLE BELM
+BCAB;BCAB;1107 1166 11B2;BCAB;1107 1166 11B2; # (벫; 벫; 벫; 벫; 벫; ) HANGUL SYLLABLE BELB
+BCAC;BCAC;1107 1166 11B3;BCAC;1107 1166 11B3; # (벬; 벬; 벬; 벬; 벬; ) HANGUL SYLLABLE BELS
+BCAD;BCAD;1107 1166 11B4;BCAD;1107 1166 11B4; # (벭; 벭; 벭; 벭; 벭; ) HANGUL SYLLABLE BELT
+BCAE;BCAE;1107 1166 11B5;BCAE;1107 1166 11B5; # (벮; 벮; 벮; 벮; 벮; ) HANGUL SYLLABLE BELP
+BCAF;BCAF;1107 1166 11B6;BCAF;1107 1166 11B6; # (벯; 벯; 벯; 벯; 벯; ) HANGUL SYLLABLE BELH
+BCB0;BCB0;1107 1166 11B7;BCB0;1107 1166 11B7; # (벰; 벰; 벰; 벰; 벰; ) HANGUL SYLLABLE BEM
+BCB1;BCB1;1107 1166 11B8;BCB1;1107 1166 11B8; # (벱; 벱; 벱; 벱; 벱; ) HANGUL SYLLABLE BEB
+BCB2;BCB2;1107 1166 11B9;BCB2;1107 1166 11B9; # (벲; 벲; 벲; 벲; 벲; ) HANGUL SYLLABLE BEBS
+BCB3;BCB3;1107 1166 11BA;BCB3;1107 1166 11BA; # (벳; 벳; 벳; 벳; 벳; ) HANGUL SYLLABLE BES
+BCB4;BCB4;1107 1166 11BB;BCB4;1107 1166 11BB; # (벴; 벴; 벴; 벴; 벴; ) HANGUL SYLLABLE BESS
+BCB5;BCB5;1107 1166 11BC;BCB5;1107 1166 11BC; # (벵; 벵; 벵; 벵; 벵; ) HANGUL SYLLABLE BENG
+BCB6;BCB6;1107 1166 11BD;BCB6;1107 1166 11BD; # (벶; 벶; 벶; 벶; 벶; ) HANGUL SYLLABLE BEJ
+BCB7;BCB7;1107 1166 11BE;BCB7;1107 1166 11BE; # (벷; 벷; 벷; 벷; 벷; ) HANGUL SYLLABLE BEC
+BCB8;BCB8;1107 1166 11BF;BCB8;1107 1166 11BF; # (벸; 벸; 벸; 벸; 벸; ) HANGUL SYLLABLE BEK
+BCB9;BCB9;1107 1166 11C0;BCB9;1107 1166 11C0; # (벹; 벹; 벹; 벹; 벹; ) HANGUL SYLLABLE BET
+BCBA;BCBA;1107 1166 11C1;BCBA;1107 1166 11C1; # (벺; 벺; 베á‡; 벺; 베á‡; ) HANGUL SYLLABLE BEP
+BCBB;BCBB;1107 1166 11C2;BCBB;1107 1166 11C2; # (벻; 벻; 벻; 벻; 벻; ) HANGUL SYLLABLE BEH
+BCBC;BCBC;1107 1167;BCBC;1107 1167; # (벼; 벼; 벼; 벼; 벼; ) HANGUL SYLLABLE BYEO
+BCBD;BCBD;1107 1167 11A8;BCBD;1107 1167 11A8; # (벽; 벽; 벽; 벽; 벽; ) HANGUL SYLLABLE BYEOG
+BCBE;BCBE;1107 1167 11A9;BCBE;1107 1167 11A9; # (벾; 벾; 벾; 벾; 벾; ) HANGUL SYLLABLE BYEOGG
+BCBF;BCBF;1107 1167 11AA;BCBF;1107 1167 11AA; # (벿; 벿; 벿; 벿; 벿; ) HANGUL SYLLABLE BYEOGS
+BCC0;BCC0;1107 1167 11AB;BCC0;1107 1167 11AB; # (변; 변; 변; 변; 변; ) HANGUL SYLLABLE BYEON
+BCC1;BCC1;1107 1167 11AC;BCC1;1107 1167 11AC; # (ë³; ë³; 볁; ë³; 볁; ) HANGUL SYLLABLE BYEONJ
+BCC2;BCC2;1107 1167 11AD;BCC2;1107 1167 11AD; # (볂; 볂; 볂; 볂; 볂; ) HANGUL SYLLABLE BYEONH
+BCC3;BCC3;1107 1167 11AE;BCC3;1107 1167 11AE; # (볃; 볃; 볃; 볃; 볃; ) HANGUL SYLLABLE BYEOD
+BCC4;BCC4;1107 1167 11AF;BCC4;1107 1167 11AF; # (별; 별; 별; 별; 별; ) HANGUL SYLLABLE BYEOL
+BCC5;BCC5;1107 1167 11B0;BCC5;1107 1167 11B0; # (볅; 볅; 볅; 볅; 볅; ) HANGUL SYLLABLE BYEOLG
+BCC6;BCC6;1107 1167 11B1;BCC6;1107 1167 11B1; # (볆; 볆; 볆; 볆; 볆; ) HANGUL SYLLABLE BYEOLM
+BCC7;BCC7;1107 1167 11B2;BCC7;1107 1167 11B2; # (볇; 볇; 볇; 볇; 볇; ) HANGUL SYLLABLE BYEOLB
+BCC8;BCC8;1107 1167 11B3;BCC8;1107 1167 11B3; # (볈; 볈; 볈; 볈; 볈; ) HANGUL SYLLABLE BYEOLS
+BCC9;BCC9;1107 1167 11B4;BCC9;1107 1167 11B4; # (볉; 볉; 볉; 볉; 볉; ) HANGUL SYLLABLE BYEOLT
+BCCA;BCCA;1107 1167 11B5;BCCA;1107 1167 11B5; # (볊; 볊; 볊; 볊; 볊; ) HANGUL SYLLABLE BYEOLP
+BCCB;BCCB;1107 1167 11B6;BCCB;1107 1167 11B6; # (볋; 볋; 볋; 볋; 볋; ) HANGUL SYLLABLE BYEOLH
+BCCC;BCCC;1107 1167 11B7;BCCC;1107 1167 11B7; # (볌; 볌; 볌; 볌; 볌; ) HANGUL SYLLABLE BYEOM
+BCCD;BCCD;1107 1167 11B8;BCCD;1107 1167 11B8; # (ë³; ë³; 볍; ë³; 볍; ) HANGUL SYLLABLE BYEOB
+BCCE;BCCE;1107 1167 11B9;BCCE;1107 1167 11B9; # (볎; 볎; 볎; 볎; 볎; ) HANGUL SYLLABLE BYEOBS
+BCCF;BCCF;1107 1167 11BA;BCCF;1107 1167 11BA; # (ë³; ë³; 볏; ë³; 볏; ) HANGUL SYLLABLE BYEOS
+BCD0;BCD0;1107 1167 11BB;BCD0;1107 1167 11BB; # (ë³; ë³; 볐; ë³; 볐; ) HANGUL SYLLABLE BYEOSS
+BCD1;BCD1;1107 1167 11BC;BCD1;1107 1167 11BC; # (병; 병; 병; 병; 병; ) HANGUL SYLLABLE BYEONG
+BCD2;BCD2;1107 1167 11BD;BCD2;1107 1167 11BD; # (볒; 볒; 볒; 볒; 볒; ) HANGUL SYLLABLE BYEOJ
+BCD3;BCD3;1107 1167 11BE;BCD3;1107 1167 11BE; # (볓; 볓; 볓; 볓; 볓; ) HANGUL SYLLABLE BYEOC
+BCD4;BCD4;1107 1167 11BF;BCD4;1107 1167 11BF; # (볔; 볔; 볔; 볔; 볔; ) HANGUL SYLLABLE BYEOK
+BCD5;BCD5;1107 1167 11C0;BCD5;1107 1167 11C0; # (볕; 볕; 볕; 볕; 볕; ) HANGUL SYLLABLE BYEOT
+BCD6;BCD6;1107 1167 11C1;BCD6;1107 1167 11C1; # (ë³–; ë³–; 벼á‡; ë³–; 벼á‡; ) HANGUL SYLLABLE BYEOP
+BCD7;BCD7;1107 1167 11C2;BCD7;1107 1167 11C2; # (볗; 볗; 볗; 볗; 볗; ) HANGUL SYLLABLE BYEOH
+BCD8;BCD8;1107 1168;BCD8;1107 1168; # (볘; 볘; 볘; 볘; 볘; ) HANGUL SYLLABLE BYE
+BCD9;BCD9;1107 1168 11A8;BCD9;1107 1168 11A8; # (볙; 볙; 볙; 볙; 볙; ) HANGUL SYLLABLE BYEG
+BCDA;BCDA;1107 1168 11A9;BCDA;1107 1168 11A9; # (볚; 볚; 볚; 볚; 볚; ) HANGUL SYLLABLE BYEGG
+BCDB;BCDB;1107 1168 11AA;BCDB;1107 1168 11AA; # (볛; 볛; 볛; 볛; 볛; ) HANGUL SYLLABLE BYEGS
+BCDC;BCDC;1107 1168 11AB;BCDC;1107 1168 11AB; # (볜; 볜; 볜; 볜; 볜; ) HANGUL SYLLABLE BYEN
+BCDD;BCDD;1107 1168 11AC;BCDD;1107 1168 11AC; # (ë³; ë³; 볝; ë³; 볝; ) HANGUL SYLLABLE BYENJ
+BCDE;BCDE;1107 1168 11AD;BCDE;1107 1168 11AD; # (볞; 볞; 볞; 볞; 볞; ) HANGUL SYLLABLE BYENH
+BCDF;BCDF;1107 1168 11AE;BCDF;1107 1168 11AE; # (볟; 볟; 볟; 볟; 볟; ) HANGUL SYLLABLE BYED
+BCE0;BCE0;1107 1168 11AF;BCE0;1107 1168 11AF; # (볠; 볠; 볠; 볠; 볠; ) HANGUL SYLLABLE BYEL
+BCE1;BCE1;1107 1168 11B0;BCE1;1107 1168 11B0; # (볡; 볡; 볡; 볡; 볡; ) HANGUL SYLLABLE BYELG
+BCE2;BCE2;1107 1168 11B1;BCE2;1107 1168 11B1; # (볢; 볢; 볢; 볢; 볢; ) HANGUL SYLLABLE BYELM
+BCE3;BCE3;1107 1168 11B2;BCE3;1107 1168 11B2; # (볣; 볣; 볣; 볣; 볣; ) HANGUL SYLLABLE BYELB
+BCE4;BCE4;1107 1168 11B3;BCE4;1107 1168 11B3; # (볤; 볤; 볤; 볤; 볤; ) HANGUL SYLLABLE BYELS
+BCE5;BCE5;1107 1168 11B4;BCE5;1107 1168 11B4; # (볥; 볥; 볥; 볥; 볥; ) HANGUL SYLLABLE BYELT
+BCE6;BCE6;1107 1168 11B5;BCE6;1107 1168 11B5; # (볦; 볦; 볦; 볦; 볦; ) HANGUL SYLLABLE BYELP
+BCE7;BCE7;1107 1168 11B6;BCE7;1107 1168 11B6; # (볧; 볧; 볧; 볧; 볧; ) HANGUL SYLLABLE BYELH
+BCE8;BCE8;1107 1168 11B7;BCE8;1107 1168 11B7; # (볨; 볨; 볨; 볨; 볨; ) HANGUL SYLLABLE BYEM
+BCE9;BCE9;1107 1168 11B8;BCE9;1107 1168 11B8; # (볩; 볩; 볩; 볩; 볩; ) HANGUL SYLLABLE BYEB
+BCEA;BCEA;1107 1168 11B9;BCEA;1107 1168 11B9; # (볪; 볪; 볪; 볪; 볪; ) HANGUL SYLLABLE BYEBS
+BCEB;BCEB;1107 1168 11BA;BCEB;1107 1168 11BA; # (볫; 볫; 볫; 볫; 볫; ) HANGUL SYLLABLE BYES
+BCEC;BCEC;1107 1168 11BB;BCEC;1107 1168 11BB; # (볬; 볬; 볬; 볬; 볬; ) HANGUL SYLLABLE BYESS
+BCED;BCED;1107 1168 11BC;BCED;1107 1168 11BC; # (볭; 볭; 볭; 볭; 볭; ) HANGUL SYLLABLE BYENG
+BCEE;BCEE;1107 1168 11BD;BCEE;1107 1168 11BD; # (볮; 볮; 볮; 볮; 볮; ) HANGUL SYLLABLE BYEJ
+BCEF;BCEF;1107 1168 11BE;BCEF;1107 1168 11BE; # (볯; 볯; 볯; 볯; 볯; ) HANGUL SYLLABLE BYEC
+BCF0;BCF0;1107 1168 11BF;BCF0;1107 1168 11BF; # (볰; 볰; 볰; 볰; 볰; ) HANGUL SYLLABLE BYEK
+BCF1;BCF1;1107 1168 11C0;BCF1;1107 1168 11C0; # (볱; 볱; 볱; 볱; 볱; ) HANGUL SYLLABLE BYET
+BCF2;BCF2;1107 1168 11C1;BCF2;1107 1168 11C1; # (ë³²; ë³²; 볘á‡; ë³²; 볘á‡; ) HANGUL SYLLABLE BYEP
+BCF3;BCF3;1107 1168 11C2;BCF3;1107 1168 11C2; # (볳; 볳; 볳; 볳; 볳; ) HANGUL SYLLABLE BYEH
+BCF4;BCF4;1107 1169;BCF4;1107 1169; # (보; 보; 보; 보; 보; ) HANGUL SYLLABLE BO
+BCF5;BCF5;1107 1169 11A8;BCF5;1107 1169 11A8; # (복; 복; 복; 복; 복; ) HANGUL SYLLABLE BOG
+BCF6;BCF6;1107 1169 11A9;BCF6;1107 1169 11A9; # (볶; 볶; 볶; 볶; 볶; ) HANGUL SYLLABLE BOGG
+BCF7;BCF7;1107 1169 11AA;BCF7;1107 1169 11AA; # (볷; 볷; 볷; 볷; 볷; ) HANGUL SYLLABLE BOGS
+BCF8;BCF8;1107 1169 11AB;BCF8;1107 1169 11AB; # (본; 본; 본; 본; 본; ) HANGUL SYLLABLE BON
+BCF9;BCF9;1107 1169 11AC;BCF9;1107 1169 11AC; # (볹; 볹; 볹; 볹; 볹; ) HANGUL SYLLABLE BONJ
+BCFA;BCFA;1107 1169 11AD;BCFA;1107 1169 11AD; # (볺; 볺; 볺; 볺; 볺; ) HANGUL SYLLABLE BONH
+BCFB;BCFB;1107 1169 11AE;BCFB;1107 1169 11AE; # (볻; 볻; 볻; 볻; 볻; ) HANGUL SYLLABLE BOD
+BCFC;BCFC;1107 1169 11AF;BCFC;1107 1169 11AF; # (볼; 볼; 볼; 볼; 볼; ) HANGUL SYLLABLE BOL
+BCFD;BCFD;1107 1169 11B0;BCFD;1107 1169 11B0; # (볽; 볽; 볽; 볽; 볽; ) HANGUL SYLLABLE BOLG
+BCFE;BCFE;1107 1169 11B1;BCFE;1107 1169 11B1; # (볾; 볾; 볾; 볾; 볾; ) HANGUL SYLLABLE BOLM
+BCFF;BCFF;1107 1169 11B2;BCFF;1107 1169 11B2; # (볿; 볿; 볿; 볿; 볿; ) HANGUL SYLLABLE BOLB
+BD00;BD00;1107 1169 11B3;BD00;1107 1169 11B3; # (봀; 봀; 봀; 봀; 봀; ) HANGUL SYLLABLE BOLS
+BD01;BD01;1107 1169 11B4;BD01;1107 1169 11B4; # (ë´; ë´; 봁; ë´; 봁; ) HANGUL SYLLABLE BOLT
+BD02;BD02;1107 1169 11B5;BD02;1107 1169 11B5; # (봂; 봂; 봂; 봂; 봂; ) HANGUL SYLLABLE BOLP
+BD03;BD03;1107 1169 11B6;BD03;1107 1169 11B6; # (봃; 봃; 봃; 봃; 봃; ) HANGUL SYLLABLE BOLH
+BD04;BD04;1107 1169 11B7;BD04;1107 1169 11B7; # (봄; 봄; 봄; 봄; 봄; ) HANGUL SYLLABLE BOM
+BD05;BD05;1107 1169 11B8;BD05;1107 1169 11B8; # (봅; 봅; 봅; 봅; 봅; ) HANGUL SYLLABLE BOB
+BD06;BD06;1107 1169 11B9;BD06;1107 1169 11B9; # (봆; 봆; 봆; 봆; 봆; ) HANGUL SYLLABLE BOBS
+BD07;BD07;1107 1169 11BA;BD07;1107 1169 11BA; # (봇; 봇; 봇; 봇; 봇; ) HANGUL SYLLABLE BOS
+BD08;BD08;1107 1169 11BB;BD08;1107 1169 11BB; # (봈; 봈; 봈; 봈; 봈; ) HANGUL SYLLABLE BOSS
+BD09;BD09;1107 1169 11BC;BD09;1107 1169 11BC; # (봉; 봉; 봉; 봉; 봉; ) HANGUL SYLLABLE BONG
+BD0A;BD0A;1107 1169 11BD;BD0A;1107 1169 11BD; # (봊; 봊; 봊; 봊; 봊; ) HANGUL SYLLABLE BOJ
+BD0B;BD0B;1107 1169 11BE;BD0B;1107 1169 11BE; # (봋; 봋; 봋; 봋; 봋; ) HANGUL SYLLABLE BOC
+BD0C;BD0C;1107 1169 11BF;BD0C;1107 1169 11BF; # (봌; 봌; 봌; 봌; 봌; ) HANGUL SYLLABLE BOK
+BD0D;BD0D;1107 1169 11C0;BD0D;1107 1169 11C0; # (ë´; ë´; 봍; ë´; 봍; ) HANGUL SYLLABLE BOT
+BD0E;BD0E;1107 1169 11C1;BD0E;1107 1169 11C1; # (ë´Ž; ë´Ž; 보á‡; ë´Ž; 보á‡; ) HANGUL SYLLABLE BOP
+BD0F;BD0F;1107 1169 11C2;BD0F;1107 1169 11C2; # (ë´; ë´; 봏; ë´; 봏; ) HANGUL SYLLABLE BOH
+BD10;BD10;1107 116A;BD10;1107 116A; # (ë´; ë´; 봐; ë´; 봐; ) HANGUL SYLLABLE BWA
+BD11;BD11;1107 116A 11A8;BD11;1107 116A 11A8; # (봑; 봑; 봑; 봑; 봑; ) HANGUL SYLLABLE BWAG
+BD12;BD12;1107 116A 11A9;BD12;1107 116A 11A9; # (봒; 봒; 봒; 봒; 봒; ) HANGUL SYLLABLE BWAGG
+BD13;BD13;1107 116A 11AA;BD13;1107 116A 11AA; # (봓; 봓; 봓; 봓; 봓; ) HANGUL SYLLABLE BWAGS
+BD14;BD14;1107 116A 11AB;BD14;1107 116A 11AB; # (봔; 봔; 봔; 봔; 봔; ) HANGUL SYLLABLE BWAN
+BD15;BD15;1107 116A 11AC;BD15;1107 116A 11AC; # (봕; 봕; 봕; 봕; 봕; ) HANGUL SYLLABLE BWANJ
+BD16;BD16;1107 116A 11AD;BD16;1107 116A 11AD; # (봖; 봖; 봖; 봖; 봖; ) HANGUL SYLLABLE BWANH
+BD17;BD17;1107 116A 11AE;BD17;1107 116A 11AE; # (봗; 봗; 봗; 봗; 봗; ) HANGUL SYLLABLE BWAD
+BD18;BD18;1107 116A 11AF;BD18;1107 116A 11AF; # (봘; 봘; 봘; 봘; 봘; ) HANGUL SYLLABLE BWAL
+BD19;BD19;1107 116A 11B0;BD19;1107 116A 11B0; # (봙; 봙; 봙; 봙; 봙; ) HANGUL SYLLABLE BWALG
+BD1A;BD1A;1107 116A 11B1;BD1A;1107 116A 11B1; # (봚; 봚; 봚; 봚; 봚; ) HANGUL SYLLABLE BWALM
+BD1B;BD1B;1107 116A 11B2;BD1B;1107 116A 11B2; # (봛; 봛; 봛; 봛; 봛; ) HANGUL SYLLABLE BWALB
+BD1C;BD1C;1107 116A 11B3;BD1C;1107 116A 11B3; # (봜; 봜; 봜; 봜; 봜; ) HANGUL SYLLABLE BWALS
+BD1D;BD1D;1107 116A 11B4;BD1D;1107 116A 11B4; # (ë´; ë´; 봝; ë´; 봝; ) HANGUL SYLLABLE BWALT
+BD1E;BD1E;1107 116A 11B5;BD1E;1107 116A 11B5; # (봞; 봞; 봞; 봞; 봞; ) HANGUL SYLLABLE BWALP
+BD1F;BD1F;1107 116A 11B6;BD1F;1107 116A 11B6; # (봟; 봟; 봟; 봟; 봟; ) HANGUL SYLLABLE BWALH
+BD20;BD20;1107 116A 11B7;BD20;1107 116A 11B7; # (봠; 봠; 봠; 봠; 봠; ) HANGUL SYLLABLE BWAM
+BD21;BD21;1107 116A 11B8;BD21;1107 116A 11B8; # (봡; 봡; 봡; 봡; 봡; ) HANGUL SYLLABLE BWAB
+BD22;BD22;1107 116A 11B9;BD22;1107 116A 11B9; # (봢; 봢; 봢; 봢; 봢; ) HANGUL SYLLABLE BWABS
+BD23;BD23;1107 116A 11BA;BD23;1107 116A 11BA; # (봣; 봣; 봣; 봣; 봣; ) HANGUL SYLLABLE BWAS
+BD24;BD24;1107 116A 11BB;BD24;1107 116A 11BB; # (봤; 봤; 봤; 봤; 봤; ) HANGUL SYLLABLE BWASS
+BD25;BD25;1107 116A 11BC;BD25;1107 116A 11BC; # (봥; 봥; 봥; 봥; 봥; ) HANGUL SYLLABLE BWANG
+BD26;BD26;1107 116A 11BD;BD26;1107 116A 11BD; # (봦; 봦; 봦; 봦; 봦; ) HANGUL SYLLABLE BWAJ
+BD27;BD27;1107 116A 11BE;BD27;1107 116A 11BE; # (봧; 봧; 봧; 봧; 봧; ) HANGUL SYLLABLE BWAC
+BD28;BD28;1107 116A 11BF;BD28;1107 116A 11BF; # (봨; 봨; 봨; 봨; 봨; ) HANGUL SYLLABLE BWAK
+BD29;BD29;1107 116A 11C0;BD29;1107 116A 11C0; # (봩; 봩; 봩; 봩; 봩; ) HANGUL SYLLABLE BWAT
+BD2A;BD2A;1107 116A 11C1;BD2A;1107 116A 11C1; # (ë´ª; ë´ª; 봐á‡; ë´ª; 봐á‡; ) HANGUL SYLLABLE BWAP
+BD2B;BD2B;1107 116A 11C2;BD2B;1107 116A 11C2; # (봫; 봫; 봫; 봫; 봫; ) HANGUL SYLLABLE BWAH
+BD2C;BD2C;1107 116B;BD2C;1107 116B; # (봬; 봬; 봬; 봬; 봬; ) HANGUL SYLLABLE BWAE
+BD2D;BD2D;1107 116B 11A8;BD2D;1107 116B 11A8; # (봭; 봭; 봭; 봭; 봭; ) HANGUL SYLLABLE BWAEG
+BD2E;BD2E;1107 116B 11A9;BD2E;1107 116B 11A9; # (봮; 봮; 봮; 봮; 봮; ) HANGUL SYLLABLE BWAEGG
+BD2F;BD2F;1107 116B 11AA;BD2F;1107 116B 11AA; # (봯; 봯; 봯; 봯; 봯; ) HANGUL SYLLABLE BWAEGS
+BD30;BD30;1107 116B 11AB;BD30;1107 116B 11AB; # (봰; 봰; 봰; 봰; 봰; ) HANGUL SYLLABLE BWAEN
+BD31;BD31;1107 116B 11AC;BD31;1107 116B 11AC; # (봱; 봱; 봱; 봱; 봱; ) HANGUL SYLLABLE BWAENJ
+BD32;BD32;1107 116B 11AD;BD32;1107 116B 11AD; # (봲; 봲; 봲; 봲; 봲; ) HANGUL SYLLABLE BWAENH
+BD33;BD33;1107 116B 11AE;BD33;1107 116B 11AE; # (봳; 봳; 봳; 봳; 봳; ) HANGUL SYLLABLE BWAED
+BD34;BD34;1107 116B 11AF;BD34;1107 116B 11AF; # (봴; 봴; 봴; 봴; 봴; ) HANGUL SYLLABLE BWAEL
+BD35;BD35;1107 116B 11B0;BD35;1107 116B 11B0; # (봵; 봵; 봵; 봵; 봵; ) HANGUL SYLLABLE BWAELG
+BD36;BD36;1107 116B 11B1;BD36;1107 116B 11B1; # (봶; 봶; 봶; 봶; 봶; ) HANGUL SYLLABLE BWAELM
+BD37;BD37;1107 116B 11B2;BD37;1107 116B 11B2; # (봷; 봷; 봷; 봷; 봷; ) HANGUL SYLLABLE BWAELB
+BD38;BD38;1107 116B 11B3;BD38;1107 116B 11B3; # (봸; 봸; 봸; 봸; 봸; ) HANGUL SYLLABLE BWAELS
+BD39;BD39;1107 116B 11B4;BD39;1107 116B 11B4; # (봹; 봹; 봹; 봹; 봹; ) HANGUL SYLLABLE BWAELT
+BD3A;BD3A;1107 116B 11B5;BD3A;1107 116B 11B5; # (봺; 봺; 봺; 봺; 봺; ) HANGUL SYLLABLE BWAELP
+BD3B;BD3B;1107 116B 11B6;BD3B;1107 116B 11B6; # (봻; 봻; 봻; 봻; 봻; ) HANGUL SYLLABLE BWAELH
+BD3C;BD3C;1107 116B 11B7;BD3C;1107 116B 11B7; # (봼; 봼; 봼; 봼; 봼; ) HANGUL SYLLABLE BWAEM
+BD3D;BD3D;1107 116B 11B8;BD3D;1107 116B 11B8; # (봽; 봽; 봽; 봽; 봽; ) HANGUL SYLLABLE BWAEB
+BD3E;BD3E;1107 116B 11B9;BD3E;1107 116B 11B9; # (봾; 봾; 봾; 봾; 봾; ) HANGUL SYLLABLE BWAEBS
+BD3F;BD3F;1107 116B 11BA;BD3F;1107 116B 11BA; # (봿; 봿; 봿; 봿; 봿; ) HANGUL SYLLABLE BWAES
+BD40;BD40;1107 116B 11BB;BD40;1107 116B 11BB; # (뵀; 뵀; 뵀; 뵀; 뵀; ) HANGUL SYLLABLE BWAESS
+BD41;BD41;1107 116B 11BC;BD41;1107 116B 11BC; # (ëµ; ëµ; 뵁; ëµ; 뵁; ) HANGUL SYLLABLE BWAENG
+BD42;BD42;1107 116B 11BD;BD42;1107 116B 11BD; # (뵂; 뵂; 뵂; 뵂; 뵂; ) HANGUL SYLLABLE BWAEJ
+BD43;BD43;1107 116B 11BE;BD43;1107 116B 11BE; # (뵃; 뵃; 뵃; 뵃; 뵃; ) HANGUL SYLLABLE BWAEC
+BD44;BD44;1107 116B 11BF;BD44;1107 116B 11BF; # (뵄; 뵄; 뵄; 뵄; 뵄; ) HANGUL SYLLABLE BWAEK
+BD45;BD45;1107 116B 11C0;BD45;1107 116B 11C0; # (뵅; 뵅; 뵅; 뵅; 뵅; ) HANGUL SYLLABLE BWAET
+BD46;BD46;1107 116B 11C1;BD46;1107 116B 11C1; # (뵆; 뵆; 봬á‡; 뵆; 봬á‡; ) HANGUL SYLLABLE BWAEP
+BD47;BD47;1107 116B 11C2;BD47;1107 116B 11C2; # (뵇; 뵇; 뵇; 뵇; 뵇; ) HANGUL SYLLABLE BWAEH
+BD48;BD48;1107 116C;BD48;1107 116C; # (뵈; 뵈; 뵈; 뵈; 뵈; ) HANGUL SYLLABLE BOE
+BD49;BD49;1107 116C 11A8;BD49;1107 116C 11A8; # (뵉; 뵉; 뵉; 뵉; 뵉; ) HANGUL SYLLABLE BOEG
+BD4A;BD4A;1107 116C 11A9;BD4A;1107 116C 11A9; # (뵊; 뵊; 뵊; 뵊; 뵊; ) HANGUL SYLLABLE BOEGG
+BD4B;BD4B;1107 116C 11AA;BD4B;1107 116C 11AA; # (뵋; 뵋; 뵋; 뵋; 뵋; ) HANGUL SYLLABLE BOEGS
+BD4C;BD4C;1107 116C 11AB;BD4C;1107 116C 11AB; # (뵌; 뵌; 뵌; 뵌; 뵌; ) HANGUL SYLLABLE BOEN
+BD4D;BD4D;1107 116C 11AC;BD4D;1107 116C 11AC; # (ëµ; ëµ; 뵍; ëµ; 뵍; ) HANGUL SYLLABLE BOENJ
+BD4E;BD4E;1107 116C 11AD;BD4E;1107 116C 11AD; # (뵎; 뵎; 뵎; 뵎; 뵎; ) HANGUL SYLLABLE BOENH
+BD4F;BD4F;1107 116C 11AE;BD4F;1107 116C 11AE; # (ëµ; ëµ; 뵏; ëµ; 뵏; ) HANGUL SYLLABLE BOED
+BD50;BD50;1107 116C 11AF;BD50;1107 116C 11AF; # (ëµ; ëµ; 뵐; ëµ; 뵐; ) HANGUL SYLLABLE BOEL
+BD51;BD51;1107 116C 11B0;BD51;1107 116C 11B0; # (뵑; 뵑; 뵑; 뵑; 뵑; ) HANGUL SYLLABLE BOELG
+BD52;BD52;1107 116C 11B1;BD52;1107 116C 11B1; # (뵒; 뵒; 뵒; 뵒; 뵒; ) HANGUL SYLLABLE BOELM
+BD53;BD53;1107 116C 11B2;BD53;1107 116C 11B2; # (뵓; 뵓; 뵓; 뵓; 뵓; ) HANGUL SYLLABLE BOELB
+BD54;BD54;1107 116C 11B3;BD54;1107 116C 11B3; # (뵔; 뵔; 뵔; 뵔; 뵔; ) HANGUL SYLLABLE BOELS
+BD55;BD55;1107 116C 11B4;BD55;1107 116C 11B4; # (뵕; 뵕; 뵕; 뵕; 뵕; ) HANGUL SYLLABLE BOELT
+BD56;BD56;1107 116C 11B5;BD56;1107 116C 11B5; # (뵖; 뵖; 뵖; 뵖; 뵖; ) HANGUL SYLLABLE BOELP
+BD57;BD57;1107 116C 11B6;BD57;1107 116C 11B6; # (뵗; 뵗; 뵗; 뵗; 뵗; ) HANGUL SYLLABLE BOELH
+BD58;BD58;1107 116C 11B7;BD58;1107 116C 11B7; # (뵘; 뵘; 뵘; 뵘; 뵘; ) HANGUL SYLLABLE BOEM
+BD59;BD59;1107 116C 11B8;BD59;1107 116C 11B8; # (뵙; 뵙; 뵙; 뵙; 뵙; ) HANGUL SYLLABLE BOEB
+BD5A;BD5A;1107 116C 11B9;BD5A;1107 116C 11B9; # (뵚; 뵚; 뵚; 뵚; 뵚; ) HANGUL SYLLABLE BOEBS
+BD5B;BD5B;1107 116C 11BA;BD5B;1107 116C 11BA; # (뵛; 뵛; 뵛; 뵛; 뵛; ) HANGUL SYLLABLE BOES
+BD5C;BD5C;1107 116C 11BB;BD5C;1107 116C 11BB; # (뵜; 뵜; 뵜; 뵜; 뵜; ) HANGUL SYLLABLE BOESS
+BD5D;BD5D;1107 116C 11BC;BD5D;1107 116C 11BC; # (ëµ; ëµ; 뵝; ëµ; 뵝; ) HANGUL SYLLABLE BOENG
+BD5E;BD5E;1107 116C 11BD;BD5E;1107 116C 11BD; # (뵞; 뵞; 뵞; 뵞; 뵞; ) HANGUL SYLLABLE BOEJ
+BD5F;BD5F;1107 116C 11BE;BD5F;1107 116C 11BE; # (뵟; 뵟; 뵟; 뵟; 뵟; ) HANGUL SYLLABLE BOEC
+BD60;BD60;1107 116C 11BF;BD60;1107 116C 11BF; # (뵠; 뵠; 뵠; 뵠; 뵠; ) HANGUL SYLLABLE BOEK
+BD61;BD61;1107 116C 11C0;BD61;1107 116C 11C0; # (뵡; 뵡; 뵡; 뵡; 뵡; ) HANGUL SYLLABLE BOET
+BD62;BD62;1107 116C 11C1;BD62;1107 116C 11C1; # (ëµ¢; ëµ¢; 뵈á‡; ëµ¢; 뵈á‡; ) HANGUL SYLLABLE BOEP
+BD63;BD63;1107 116C 11C2;BD63;1107 116C 11C2; # (뵣; 뵣; 뵣; 뵣; 뵣; ) HANGUL SYLLABLE BOEH
+BD64;BD64;1107 116D;BD64;1107 116D; # (뵤; 뵤; 뵤; 뵤; 뵤; ) HANGUL SYLLABLE BYO
+BD65;BD65;1107 116D 11A8;BD65;1107 116D 11A8; # (뵥; 뵥; 뵥; 뵥; 뵥; ) HANGUL SYLLABLE BYOG
+BD66;BD66;1107 116D 11A9;BD66;1107 116D 11A9; # (뵦; 뵦; 뵦; 뵦; 뵦; ) HANGUL SYLLABLE BYOGG
+BD67;BD67;1107 116D 11AA;BD67;1107 116D 11AA; # (뵧; 뵧; 뵧; 뵧; 뵧; ) HANGUL SYLLABLE BYOGS
+BD68;BD68;1107 116D 11AB;BD68;1107 116D 11AB; # (뵨; 뵨; 뵨; 뵨; 뵨; ) HANGUL SYLLABLE BYON
+BD69;BD69;1107 116D 11AC;BD69;1107 116D 11AC; # (뵩; 뵩; 뵩; 뵩; 뵩; ) HANGUL SYLLABLE BYONJ
+BD6A;BD6A;1107 116D 11AD;BD6A;1107 116D 11AD; # (뵪; 뵪; 뵪; 뵪; 뵪; ) HANGUL SYLLABLE BYONH
+BD6B;BD6B;1107 116D 11AE;BD6B;1107 116D 11AE; # (뵫; 뵫; 뵫; 뵫; 뵫; ) HANGUL SYLLABLE BYOD
+BD6C;BD6C;1107 116D 11AF;BD6C;1107 116D 11AF; # (뵬; 뵬; 뵬; 뵬; 뵬; ) HANGUL SYLLABLE BYOL
+BD6D;BD6D;1107 116D 11B0;BD6D;1107 116D 11B0; # (뵭; 뵭; 뵭; 뵭; 뵭; ) HANGUL SYLLABLE BYOLG
+BD6E;BD6E;1107 116D 11B1;BD6E;1107 116D 11B1; # (뵮; 뵮; 뵮; 뵮; 뵮; ) HANGUL SYLLABLE BYOLM
+BD6F;BD6F;1107 116D 11B2;BD6F;1107 116D 11B2; # (뵯; 뵯; 뵯; 뵯; 뵯; ) HANGUL SYLLABLE BYOLB
+BD70;BD70;1107 116D 11B3;BD70;1107 116D 11B3; # (뵰; 뵰; 뵰; 뵰; 뵰; ) HANGUL SYLLABLE BYOLS
+BD71;BD71;1107 116D 11B4;BD71;1107 116D 11B4; # (뵱; 뵱; 뵱; 뵱; 뵱; ) HANGUL SYLLABLE BYOLT
+BD72;BD72;1107 116D 11B5;BD72;1107 116D 11B5; # (뵲; 뵲; 뵲; 뵲; 뵲; ) HANGUL SYLLABLE BYOLP
+BD73;BD73;1107 116D 11B6;BD73;1107 116D 11B6; # (뵳; 뵳; 뵳; 뵳; 뵳; ) HANGUL SYLLABLE BYOLH
+BD74;BD74;1107 116D 11B7;BD74;1107 116D 11B7; # (뵴; 뵴; 뵴; 뵴; 뵴; ) HANGUL SYLLABLE BYOM
+BD75;BD75;1107 116D 11B8;BD75;1107 116D 11B8; # (뵵; 뵵; 뵵; 뵵; 뵵; ) HANGUL SYLLABLE BYOB
+BD76;BD76;1107 116D 11B9;BD76;1107 116D 11B9; # (뵶; 뵶; 뵶; 뵶; 뵶; ) HANGUL SYLLABLE BYOBS
+BD77;BD77;1107 116D 11BA;BD77;1107 116D 11BA; # (뵷; 뵷; 뵷; 뵷; 뵷; ) HANGUL SYLLABLE BYOS
+BD78;BD78;1107 116D 11BB;BD78;1107 116D 11BB; # (뵸; 뵸; 뵸; 뵸; 뵸; ) HANGUL SYLLABLE BYOSS
+BD79;BD79;1107 116D 11BC;BD79;1107 116D 11BC; # (뵹; 뵹; 뵹; 뵹; 뵹; ) HANGUL SYLLABLE BYONG
+BD7A;BD7A;1107 116D 11BD;BD7A;1107 116D 11BD; # (뵺; 뵺; 뵺; 뵺; 뵺; ) HANGUL SYLLABLE BYOJ
+BD7B;BD7B;1107 116D 11BE;BD7B;1107 116D 11BE; # (뵻; 뵻; 뵻; 뵻; 뵻; ) HANGUL SYLLABLE BYOC
+BD7C;BD7C;1107 116D 11BF;BD7C;1107 116D 11BF; # (뵼; 뵼; 뵼; 뵼; 뵼; ) HANGUL SYLLABLE BYOK
+BD7D;BD7D;1107 116D 11C0;BD7D;1107 116D 11C0; # (뵽; 뵽; 뵽; 뵽; 뵽; ) HANGUL SYLLABLE BYOT
+BD7E;BD7E;1107 116D 11C1;BD7E;1107 116D 11C1; # (ëµ¾; ëµ¾; 뵤á‡; ëµ¾; 뵤á‡; ) HANGUL SYLLABLE BYOP
+BD7F;BD7F;1107 116D 11C2;BD7F;1107 116D 11C2; # (뵿; 뵿; 뵿; 뵿; 뵿; ) HANGUL SYLLABLE BYOH
+BD80;BD80;1107 116E;BD80;1107 116E; # (부; 부; 부; 부; 부; ) HANGUL SYLLABLE BU
+BD81;BD81;1107 116E 11A8;BD81;1107 116E 11A8; # (ë¶; ë¶; 북; ë¶; 북; ) HANGUL SYLLABLE BUG
+BD82;BD82;1107 116E 11A9;BD82;1107 116E 11A9; # (붂; 붂; 붂; 붂; 붂; ) HANGUL SYLLABLE BUGG
+BD83;BD83;1107 116E 11AA;BD83;1107 116E 11AA; # (붃; 붃; 붃; 붃; 붃; ) HANGUL SYLLABLE BUGS
+BD84;BD84;1107 116E 11AB;BD84;1107 116E 11AB; # (분; 분; 분; 분; 분; ) HANGUL SYLLABLE BUN
+BD85;BD85;1107 116E 11AC;BD85;1107 116E 11AC; # (붅; 붅; 붅; 붅; 붅; ) HANGUL SYLLABLE BUNJ
+BD86;BD86;1107 116E 11AD;BD86;1107 116E 11AD; # (붆; 붆; 붆; 붆; 붆; ) HANGUL SYLLABLE BUNH
+BD87;BD87;1107 116E 11AE;BD87;1107 116E 11AE; # (붇; 붇; 붇; 붇; 붇; ) HANGUL SYLLABLE BUD
+BD88;BD88;1107 116E 11AF;BD88;1107 116E 11AF; # (불; 불; 불; 불; 불; ) HANGUL SYLLABLE BUL
+BD89;BD89;1107 116E 11B0;BD89;1107 116E 11B0; # (붉; 붉; 붉; 붉; 붉; ) HANGUL SYLLABLE BULG
+BD8A;BD8A;1107 116E 11B1;BD8A;1107 116E 11B1; # (붊; 붊; 붊; 붊; 붊; ) HANGUL SYLLABLE BULM
+BD8B;BD8B;1107 116E 11B2;BD8B;1107 116E 11B2; # (붋; 붋; 붋; 붋; 붋; ) HANGUL SYLLABLE BULB
+BD8C;BD8C;1107 116E 11B3;BD8C;1107 116E 11B3; # (붌; 붌; 붌; 붌; 붌; ) HANGUL SYLLABLE BULS
+BD8D;BD8D;1107 116E 11B4;BD8D;1107 116E 11B4; # (ë¶; ë¶; 붍; ë¶; 붍; ) HANGUL SYLLABLE BULT
+BD8E;BD8E;1107 116E 11B5;BD8E;1107 116E 11B5; # (붎; 붎; 붎; 붎; 붎; ) HANGUL SYLLABLE BULP
+BD8F;BD8F;1107 116E 11B6;BD8F;1107 116E 11B6; # (ë¶; ë¶; 붏; ë¶; 붏; ) HANGUL SYLLABLE BULH
+BD90;BD90;1107 116E 11B7;BD90;1107 116E 11B7; # (ë¶; ë¶; 붐; ë¶; 붐; ) HANGUL SYLLABLE BUM
+BD91;BD91;1107 116E 11B8;BD91;1107 116E 11B8; # (붑; 붑; 붑; 붑; 붑; ) HANGUL SYLLABLE BUB
+BD92;BD92;1107 116E 11B9;BD92;1107 116E 11B9; # (붒; 붒; 붒; 붒; 붒; ) HANGUL SYLLABLE BUBS
+BD93;BD93;1107 116E 11BA;BD93;1107 116E 11BA; # (붓; 붓; 붓; 붓; 붓; ) HANGUL SYLLABLE BUS
+BD94;BD94;1107 116E 11BB;BD94;1107 116E 11BB; # (붔; 붔; 붔; 붔; 붔; ) HANGUL SYLLABLE BUSS
+BD95;BD95;1107 116E 11BC;BD95;1107 116E 11BC; # (붕; 붕; 붕; 붕; 붕; ) HANGUL SYLLABLE BUNG
+BD96;BD96;1107 116E 11BD;BD96;1107 116E 11BD; # (붖; 붖; 붖; 붖; 붖; ) HANGUL SYLLABLE BUJ
+BD97;BD97;1107 116E 11BE;BD97;1107 116E 11BE; # (붗; 붗; 붗; 붗; 붗; ) HANGUL SYLLABLE BUC
+BD98;BD98;1107 116E 11BF;BD98;1107 116E 11BF; # (붘; 붘; 붘; 붘; 붘; ) HANGUL SYLLABLE BUK
+BD99;BD99;1107 116E 11C0;BD99;1107 116E 11C0; # (붙; 붙; 붙; 붙; 붙; ) HANGUL SYLLABLE BUT
+BD9A;BD9A;1107 116E 11C1;BD9A;1107 116E 11C1; # (붚; 붚; 부á‡; 붚; 부á‡; ) HANGUL SYLLABLE BUP
+BD9B;BD9B;1107 116E 11C2;BD9B;1107 116E 11C2; # (붛; 붛; 붛; 붛; 붛; ) HANGUL SYLLABLE BUH
+BD9C;BD9C;1107 116F;BD9C;1107 116F; # (붜; 붜; 붜; 붜; 붜; ) HANGUL SYLLABLE BWEO
+BD9D;BD9D;1107 116F 11A8;BD9D;1107 116F 11A8; # (ë¶; ë¶; 붝; ë¶; 붝; ) HANGUL SYLLABLE BWEOG
+BD9E;BD9E;1107 116F 11A9;BD9E;1107 116F 11A9; # (붞; 붞; 붞; 붞; 붞; ) HANGUL SYLLABLE BWEOGG
+BD9F;BD9F;1107 116F 11AA;BD9F;1107 116F 11AA; # (붟; 붟; 붟; 붟; 붟; ) HANGUL SYLLABLE BWEOGS
+BDA0;BDA0;1107 116F 11AB;BDA0;1107 116F 11AB; # (붠; 붠; 붠; 붠; 붠; ) HANGUL SYLLABLE BWEON
+BDA1;BDA1;1107 116F 11AC;BDA1;1107 116F 11AC; # (붡; 붡; 붡; 붡; 붡; ) HANGUL SYLLABLE BWEONJ
+BDA2;BDA2;1107 116F 11AD;BDA2;1107 116F 11AD; # (붢; 붢; 붢; 붢; 붢; ) HANGUL SYLLABLE BWEONH
+BDA3;BDA3;1107 116F 11AE;BDA3;1107 116F 11AE; # (붣; 붣; 붣; 붣; 붣; ) HANGUL SYLLABLE BWEOD
+BDA4;BDA4;1107 116F 11AF;BDA4;1107 116F 11AF; # (붤; 붤; 붤; 붤; 붤; ) HANGUL SYLLABLE BWEOL
+BDA5;BDA5;1107 116F 11B0;BDA5;1107 116F 11B0; # (붥; 붥; 붥; 붥; 붥; ) HANGUL SYLLABLE BWEOLG
+BDA6;BDA6;1107 116F 11B1;BDA6;1107 116F 11B1; # (붦; 붦; 붦; 붦; 붦; ) HANGUL SYLLABLE BWEOLM
+BDA7;BDA7;1107 116F 11B2;BDA7;1107 116F 11B2; # (붧; 붧; 붧; 붧; 붧; ) HANGUL SYLLABLE BWEOLB
+BDA8;BDA8;1107 116F 11B3;BDA8;1107 116F 11B3; # (붨; 붨; 붨; 붨; 붨; ) HANGUL SYLLABLE BWEOLS
+BDA9;BDA9;1107 116F 11B4;BDA9;1107 116F 11B4; # (붩; 붩; 붩; 붩; 붩; ) HANGUL SYLLABLE BWEOLT
+BDAA;BDAA;1107 116F 11B5;BDAA;1107 116F 11B5; # (붪; 붪; 붪; 붪; 붪; ) HANGUL SYLLABLE BWEOLP
+BDAB;BDAB;1107 116F 11B6;BDAB;1107 116F 11B6; # (붫; 붫; 붫; 붫; 붫; ) HANGUL SYLLABLE BWEOLH
+BDAC;BDAC;1107 116F 11B7;BDAC;1107 116F 11B7; # (붬; 붬; 붬; 붬; 붬; ) HANGUL SYLLABLE BWEOM
+BDAD;BDAD;1107 116F 11B8;BDAD;1107 116F 11B8; # (붭; 붭; 붭; 붭; 붭; ) HANGUL SYLLABLE BWEOB
+BDAE;BDAE;1107 116F 11B9;BDAE;1107 116F 11B9; # (붮; 붮; 붮; 붮; 붮; ) HANGUL SYLLABLE BWEOBS
+BDAF;BDAF;1107 116F 11BA;BDAF;1107 116F 11BA; # (붯; 붯; 붯; 붯; 붯; ) HANGUL SYLLABLE BWEOS
+BDB0;BDB0;1107 116F 11BB;BDB0;1107 116F 11BB; # (붰; 붰; 붰; 붰; 붰; ) HANGUL SYLLABLE BWEOSS
+BDB1;BDB1;1107 116F 11BC;BDB1;1107 116F 11BC; # (붱; 붱; 붱; 붱; 붱; ) HANGUL SYLLABLE BWEONG
+BDB2;BDB2;1107 116F 11BD;BDB2;1107 116F 11BD; # (붲; 붲; 붲; 붲; 붲; ) HANGUL SYLLABLE BWEOJ
+BDB3;BDB3;1107 116F 11BE;BDB3;1107 116F 11BE; # (붳; 붳; 붳; 붳; 붳; ) HANGUL SYLLABLE BWEOC
+BDB4;BDB4;1107 116F 11BF;BDB4;1107 116F 11BF; # (붴; 붴; 붴; 붴; 붴; ) HANGUL SYLLABLE BWEOK
+BDB5;BDB5;1107 116F 11C0;BDB5;1107 116F 11C0; # (붵; 붵; 붵; 붵; 붵; ) HANGUL SYLLABLE BWEOT
+BDB6;BDB6;1107 116F 11C1;BDB6;1107 116F 11C1; # (붶; 붶; 붜á‡; 붶; 붜á‡; ) HANGUL SYLLABLE BWEOP
+BDB7;BDB7;1107 116F 11C2;BDB7;1107 116F 11C2; # (붷; 붷; 붷; 붷; 붷; ) HANGUL SYLLABLE BWEOH
+BDB8;BDB8;1107 1170;BDB8;1107 1170; # (붸; 붸; 붸; 붸; 붸; ) HANGUL SYLLABLE BWE
+BDB9;BDB9;1107 1170 11A8;BDB9;1107 1170 11A8; # (붹; 붹; 붹; 붹; 붹; ) HANGUL SYLLABLE BWEG
+BDBA;BDBA;1107 1170 11A9;BDBA;1107 1170 11A9; # (붺; 붺; 붺; 붺; 붺; ) HANGUL SYLLABLE BWEGG
+BDBB;BDBB;1107 1170 11AA;BDBB;1107 1170 11AA; # (붻; 붻; 붻; 붻; 붻; ) HANGUL SYLLABLE BWEGS
+BDBC;BDBC;1107 1170 11AB;BDBC;1107 1170 11AB; # (붼; 붼; 붼; 붼; 붼; ) HANGUL SYLLABLE BWEN
+BDBD;BDBD;1107 1170 11AC;BDBD;1107 1170 11AC; # (붽; 붽; 붽; 붽; 붽; ) HANGUL SYLLABLE BWENJ
+BDBE;BDBE;1107 1170 11AD;BDBE;1107 1170 11AD; # (붾; 붾; 붾; 붾; 붾; ) HANGUL SYLLABLE BWENH
+BDBF;BDBF;1107 1170 11AE;BDBF;1107 1170 11AE; # (붿; 붿; 붿; 붿; 붿; ) HANGUL SYLLABLE BWED
+BDC0;BDC0;1107 1170 11AF;BDC0;1107 1170 11AF; # (뷀; 뷀; 뷀; 뷀; 뷀; ) HANGUL SYLLABLE BWEL
+BDC1;BDC1;1107 1170 11B0;BDC1;1107 1170 11B0; # (ë·; ë·; 뷁; ë·; 뷁; ) HANGUL SYLLABLE BWELG
+BDC2;BDC2;1107 1170 11B1;BDC2;1107 1170 11B1; # (뷂; 뷂; 뷂; 뷂; 뷂; ) HANGUL SYLLABLE BWELM
+BDC3;BDC3;1107 1170 11B2;BDC3;1107 1170 11B2; # (뷃; 뷃; 뷃; 뷃; 뷃; ) HANGUL SYLLABLE BWELB
+BDC4;BDC4;1107 1170 11B3;BDC4;1107 1170 11B3; # (뷄; 뷄; 뷄; 뷄; 뷄; ) HANGUL SYLLABLE BWELS
+BDC5;BDC5;1107 1170 11B4;BDC5;1107 1170 11B4; # (뷅; 뷅; 뷅; 뷅; 뷅; ) HANGUL SYLLABLE BWELT
+BDC6;BDC6;1107 1170 11B5;BDC6;1107 1170 11B5; # (뷆; 뷆; 뷆; 뷆; 뷆; ) HANGUL SYLLABLE BWELP
+BDC7;BDC7;1107 1170 11B6;BDC7;1107 1170 11B6; # (뷇; 뷇; 뷇; 뷇; 뷇; ) HANGUL SYLLABLE BWELH
+BDC8;BDC8;1107 1170 11B7;BDC8;1107 1170 11B7; # (뷈; 뷈; 뷈; 뷈; 뷈; ) HANGUL SYLLABLE BWEM
+BDC9;BDC9;1107 1170 11B8;BDC9;1107 1170 11B8; # (뷉; 뷉; 뷉; 뷉; 뷉; ) HANGUL SYLLABLE BWEB
+BDCA;BDCA;1107 1170 11B9;BDCA;1107 1170 11B9; # (뷊; 뷊; 뷊; 뷊; 뷊; ) HANGUL SYLLABLE BWEBS
+BDCB;BDCB;1107 1170 11BA;BDCB;1107 1170 11BA; # (뷋; 뷋; 뷋; 뷋; 뷋; ) HANGUL SYLLABLE BWES
+BDCC;BDCC;1107 1170 11BB;BDCC;1107 1170 11BB; # (뷌; 뷌; 뷌; 뷌; 뷌; ) HANGUL SYLLABLE BWESS
+BDCD;BDCD;1107 1170 11BC;BDCD;1107 1170 11BC; # (ë·; ë·; 뷍; ë·; 뷍; ) HANGUL SYLLABLE BWENG
+BDCE;BDCE;1107 1170 11BD;BDCE;1107 1170 11BD; # (뷎; 뷎; 뷎; 뷎; 뷎; ) HANGUL SYLLABLE BWEJ
+BDCF;BDCF;1107 1170 11BE;BDCF;1107 1170 11BE; # (ë·; ë·; 뷏; ë·; 뷏; ) HANGUL SYLLABLE BWEC
+BDD0;BDD0;1107 1170 11BF;BDD0;1107 1170 11BF; # (ë·; ë·; 뷐; ë·; 뷐; ) HANGUL SYLLABLE BWEK
+BDD1;BDD1;1107 1170 11C0;BDD1;1107 1170 11C0; # (뷑; 뷑; 뷑; 뷑; 뷑; ) HANGUL SYLLABLE BWET
+BDD2;BDD2;1107 1170 11C1;BDD2;1107 1170 11C1; # (ë·’; ë·’; 붸á‡; ë·’; 붸á‡; ) HANGUL SYLLABLE BWEP
+BDD3;BDD3;1107 1170 11C2;BDD3;1107 1170 11C2; # (뷓; 뷓; 뷓; 뷓; 뷓; ) HANGUL SYLLABLE BWEH
+BDD4;BDD4;1107 1171;BDD4;1107 1171; # (뷔; 뷔; 뷔; 뷔; 뷔; ) HANGUL SYLLABLE BWI
+BDD5;BDD5;1107 1171 11A8;BDD5;1107 1171 11A8; # (뷕; 뷕; 뷕; 뷕; 뷕; ) HANGUL SYLLABLE BWIG
+BDD6;BDD6;1107 1171 11A9;BDD6;1107 1171 11A9; # (뷖; 뷖; 뷖; 뷖; 뷖; ) HANGUL SYLLABLE BWIGG
+BDD7;BDD7;1107 1171 11AA;BDD7;1107 1171 11AA; # (뷗; 뷗; 뷗; 뷗; 뷗; ) HANGUL SYLLABLE BWIGS
+BDD8;BDD8;1107 1171 11AB;BDD8;1107 1171 11AB; # (뷘; 뷘; 뷘; 뷘; 뷘; ) HANGUL SYLLABLE BWIN
+BDD9;BDD9;1107 1171 11AC;BDD9;1107 1171 11AC; # (뷙; 뷙; 뷙; 뷙; 뷙; ) HANGUL SYLLABLE BWINJ
+BDDA;BDDA;1107 1171 11AD;BDDA;1107 1171 11AD; # (뷚; 뷚; 뷚; 뷚; 뷚; ) HANGUL SYLLABLE BWINH
+BDDB;BDDB;1107 1171 11AE;BDDB;1107 1171 11AE; # (뷛; 뷛; 뷛; 뷛; 뷛; ) HANGUL SYLLABLE BWID
+BDDC;BDDC;1107 1171 11AF;BDDC;1107 1171 11AF; # (뷜; 뷜; 뷜; 뷜; 뷜; ) HANGUL SYLLABLE BWIL
+BDDD;BDDD;1107 1171 11B0;BDDD;1107 1171 11B0; # (ë·; ë·; 뷝; ë·; 뷝; ) HANGUL SYLLABLE BWILG
+BDDE;BDDE;1107 1171 11B1;BDDE;1107 1171 11B1; # (뷞; 뷞; 뷞; 뷞; 뷞; ) HANGUL SYLLABLE BWILM
+BDDF;BDDF;1107 1171 11B2;BDDF;1107 1171 11B2; # (뷟; 뷟; 뷟; 뷟; 뷟; ) HANGUL SYLLABLE BWILB
+BDE0;BDE0;1107 1171 11B3;BDE0;1107 1171 11B3; # (뷠; 뷠; 뷠; 뷠; 뷠; ) HANGUL SYLLABLE BWILS
+BDE1;BDE1;1107 1171 11B4;BDE1;1107 1171 11B4; # (뷡; 뷡; 뷡; 뷡; 뷡; ) HANGUL SYLLABLE BWILT
+BDE2;BDE2;1107 1171 11B5;BDE2;1107 1171 11B5; # (뷢; 뷢; 뷢; 뷢; 뷢; ) HANGUL SYLLABLE BWILP
+BDE3;BDE3;1107 1171 11B6;BDE3;1107 1171 11B6; # (뷣; 뷣; 뷣; 뷣; 뷣; ) HANGUL SYLLABLE BWILH
+BDE4;BDE4;1107 1171 11B7;BDE4;1107 1171 11B7; # (뷤; 뷤; 뷤; 뷤; 뷤; ) HANGUL SYLLABLE BWIM
+BDE5;BDE5;1107 1171 11B8;BDE5;1107 1171 11B8; # (뷥; 뷥; 뷥; 뷥; 뷥; ) HANGUL SYLLABLE BWIB
+BDE6;BDE6;1107 1171 11B9;BDE6;1107 1171 11B9; # (뷦; 뷦; 뷦; 뷦; 뷦; ) HANGUL SYLLABLE BWIBS
+BDE7;BDE7;1107 1171 11BA;BDE7;1107 1171 11BA; # (뷧; 뷧; 뷧; 뷧; 뷧; ) HANGUL SYLLABLE BWIS
+BDE8;BDE8;1107 1171 11BB;BDE8;1107 1171 11BB; # (뷨; 뷨; 뷨; 뷨; 뷨; ) HANGUL SYLLABLE BWISS
+BDE9;BDE9;1107 1171 11BC;BDE9;1107 1171 11BC; # (뷩; 뷩; 뷩; 뷩; 뷩; ) HANGUL SYLLABLE BWING
+BDEA;BDEA;1107 1171 11BD;BDEA;1107 1171 11BD; # (뷪; 뷪; 뷪; 뷪; 뷪; ) HANGUL SYLLABLE BWIJ
+BDEB;BDEB;1107 1171 11BE;BDEB;1107 1171 11BE; # (뷫; 뷫; 뷫; 뷫; 뷫; ) HANGUL SYLLABLE BWIC
+BDEC;BDEC;1107 1171 11BF;BDEC;1107 1171 11BF; # (뷬; 뷬; 뷬; 뷬; 뷬; ) HANGUL SYLLABLE BWIK
+BDED;BDED;1107 1171 11C0;BDED;1107 1171 11C0; # (뷭; 뷭; 뷭; 뷭; 뷭; ) HANGUL SYLLABLE BWIT
+BDEE;BDEE;1107 1171 11C1;BDEE;1107 1171 11C1; # (ë·®; ë·®; 뷔á‡; ë·®; 뷔á‡; ) HANGUL SYLLABLE BWIP
+BDEF;BDEF;1107 1171 11C2;BDEF;1107 1171 11C2; # (뷯; 뷯; 뷯; 뷯; 뷯; ) HANGUL SYLLABLE BWIH
+BDF0;BDF0;1107 1172;BDF0;1107 1172; # (뷰; 뷰; 뷰; 뷰; 뷰; ) HANGUL SYLLABLE BYU
+BDF1;BDF1;1107 1172 11A8;BDF1;1107 1172 11A8; # (뷱; 뷱; 뷱; 뷱; 뷱; ) HANGUL SYLLABLE BYUG
+BDF2;BDF2;1107 1172 11A9;BDF2;1107 1172 11A9; # (뷲; 뷲; 뷲; 뷲; 뷲; ) HANGUL SYLLABLE BYUGG
+BDF3;BDF3;1107 1172 11AA;BDF3;1107 1172 11AA; # (뷳; 뷳; 뷳; 뷳; 뷳; ) HANGUL SYLLABLE BYUGS
+BDF4;BDF4;1107 1172 11AB;BDF4;1107 1172 11AB; # (뷴; 뷴; 뷴; 뷴; 뷴; ) HANGUL SYLLABLE BYUN
+BDF5;BDF5;1107 1172 11AC;BDF5;1107 1172 11AC; # (뷵; 뷵; 뷵; 뷵; 뷵; ) HANGUL SYLLABLE BYUNJ
+BDF6;BDF6;1107 1172 11AD;BDF6;1107 1172 11AD; # (뷶; 뷶; 뷶; 뷶; 뷶; ) HANGUL SYLLABLE BYUNH
+BDF7;BDF7;1107 1172 11AE;BDF7;1107 1172 11AE; # (뷷; 뷷; 뷷; 뷷; 뷷; ) HANGUL SYLLABLE BYUD
+BDF8;BDF8;1107 1172 11AF;BDF8;1107 1172 11AF; # (뷸; 뷸; 뷸; 뷸; 뷸; ) HANGUL SYLLABLE BYUL
+BDF9;BDF9;1107 1172 11B0;BDF9;1107 1172 11B0; # (뷹; 뷹; 뷹; 뷹; 뷹; ) HANGUL SYLLABLE BYULG
+BDFA;BDFA;1107 1172 11B1;BDFA;1107 1172 11B1; # (뷺; 뷺; 뷺; 뷺; 뷺; ) HANGUL SYLLABLE BYULM
+BDFB;BDFB;1107 1172 11B2;BDFB;1107 1172 11B2; # (뷻; 뷻; 뷻; 뷻; 뷻; ) HANGUL SYLLABLE BYULB
+BDFC;BDFC;1107 1172 11B3;BDFC;1107 1172 11B3; # (뷼; 뷼; 뷼; 뷼; 뷼; ) HANGUL SYLLABLE BYULS
+BDFD;BDFD;1107 1172 11B4;BDFD;1107 1172 11B4; # (뷽; 뷽; 뷽; 뷽; 뷽; ) HANGUL SYLLABLE BYULT
+BDFE;BDFE;1107 1172 11B5;BDFE;1107 1172 11B5; # (뷾; 뷾; 뷾; 뷾; 뷾; ) HANGUL SYLLABLE BYULP
+BDFF;BDFF;1107 1172 11B6;BDFF;1107 1172 11B6; # (뷿; 뷿; 뷿; 뷿; 뷿; ) HANGUL SYLLABLE BYULH
+BE00;BE00;1107 1172 11B7;BE00;1107 1172 11B7; # (븀; 븀; 븀; 븀; 븀; ) HANGUL SYLLABLE BYUM
+BE01;BE01;1107 1172 11B8;BE01;1107 1172 11B8; # (ë¸; ë¸; 븁; ë¸; 븁; ) HANGUL SYLLABLE BYUB
+BE02;BE02;1107 1172 11B9;BE02;1107 1172 11B9; # (븂; 븂; 븂; 븂; 븂; ) HANGUL SYLLABLE BYUBS
+BE03;BE03;1107 1172 11BA;BE03;1107 1172 11BA; # (븃; 븃; 븃; 븃; 븃; ) HANGUL SYLLABLE BYUS
+BE04;BE04;1107 1172 11BB;BE04;1107 1172 11BB; # (븄; 븄; 븄; 븄; 븄; ) HANGUL SYLLABLE BYUSS
+BE05;BE05;1107 1172 11BC;BE05;1107 1172 11BC; # (븅; 븅; 븅; 븅; 븅; ) HANGUL SYLLABLE BYUNG
+BE06;BE06;1107 1172 11BD;BE06;1107 1172 11BD; # (븆; 븆; 븆; 븆; 븆; ) HANGUL SYLLABLE BYUJ
+BE07;BE07;1107 1172 11BE;BE07;1107 1172 11BE; # (븇; 븇; 븇; 븇; 븇; ) HANGUL SYLLABLE BYUC
+BE08;BE08;1107 1172 11BF;BE08;1107 1172 11BF; # (븈; 븈; 븈; 븈; 븈; ) HANGUL SYLLABLE BYUK
+BE09;BE09;1107 1172 11C0;BE09;1107 1172 11C0; # (븉; 븉; 븉; 븉; 븉; ) HANGUL SYLLABLE BYUT
+BE0A;BE0A;1107 1172 11C1;BE0A;1107 1172 11C1; # (븊; 븊; 뷰á‡; 븊; 뷰á‡; ) HANGUL SYLLABLE BYUP
+BE0B;BE0B;1107 1172 11C2;BE0B;1107 1172 11C2; # (븋; 븋; 븋; 븋; 븋; ) HANGUL SYLLABLE BYUH
+BE0C;BE0C;1107 1173;BE0C;1107 1173; # (브; 브; 브; 브; 브; ) HANGUL SYLLABLE BEU
+BE0D;BE0D;1107 1173 11A8;BE0D;1107 1173 11A8; # (ë¸; ë¸; 븍; ë¸; 븍; ) HANGUL SYLLABLE BEUG
+BE0E;BE0E;1107 1173 11A9;BE0E;1107 1173 11A9; # (븎; 븎; 븎; 븎; 븎; ) HANGUL SYLLABLE BEUGG
+BE0F;BE0F;1107 1173 11AA;BE0F;1107 1173 11AA; # (ë¸; ë¸; 븏; ë¸; 븏; ) HANGUL SYLLABLE BEUGS
+BE10;BE10;1107 1173 11AB;BE10;1107 1173 11AB; # (ë¸; ë¸; 븐; ë¸; 븐; ) HANGUL SYLLABLE BEUN
+BE11;BE11;1107 1173 11AC;BE11;1107 1173 11AC; # (븑; 븑; 븑; 븑; 븑; ) HANGUL SYLLABLE BEUNJ
+BE12;BE12;1107 1173 11AD;BE12;1107 1173 11AD; # (븒; 븒; 븒; 븒; 븒; ) HANGUL SYLLABLE BEUNH
+BE13;BE13;1107 1173 11AE;BE13;1107 1173 11AE; # (븓; 븓; 븓; 븓; 븓; ) HANGUL SYLLABLE BEUD
+BE14;BE14;1107 1173 11AF;BE14;1107 1173 11AF; # (블; 블; 블; 블; 블; ) HANGUL SYLLABLE BEUL
+BE15;BE15;1107 1173 11B0;BE15;1107 1173 11B0; # (븕; 븕; 븕; 븕; 븕; ) HANGUL SYLLABLE BEULG
+BE16;BE16;1107 1173 11B1;BE16;1107 1173 11B1; # (븖; 븖; 븖; 븖; 븖; ) HANGUL SYLLABLE BEULM
+BE17;BE17;1107 1173 11B2;BE17;1107 1173 11B2; # (븗; 븗; 븗; 븗; 븗; ) HANGUL SYLLABLE BEULB
+BE18;BE18;1107 1173 11B3;BE18;1107 1173 11B3; # (븘; 븘; 븘; 븘; 븘; ) HANGUL SYLLABLE BEULS
+BE19;BE19;1107 1173 11B4;BE19;1107 1173 11B4; # (븙; 븙; 븙; 븙; 븙; ) HANGUL SYLLABLE BEULT
+BE1A;BE1A;1107 1173 11B5;BE1A;1107 1173 11B5; # (븚; 븚; 븚; 븚; 븚; ) HANGUL SYLLABLE BEULP
+BE1B;BE1B;1107 1173 11B6;BE1B;1107 1173 11B6; # (븛; 븛; 븛; 븛; 븛; ) HANGUL SYLLABLE BEULH
+BE1C;BE1C;1107 1173 11B7;BE1C;1107 1173 11B7; # (븜; 븜; 븜; 븜; 븜; ) HANGUL SYLLABLE BEUM
+BE1D;BE1D;1107 1173 11B8;BE1D;1107 1173 11B8; # (ë¸; ë¸; 븝; ë¸; 븝; ) HANGUL SYLLABLE BEUB
+BE1E;BE1E;1107 1173 11B9;BE1E;1107 1173 11B9; # (븞; 븞; 븞; 븞; 븞; ) HANGUL SYLLABLE BEUBS
+BE1F;BE1F;1107 1173 11BA;BE1F;1107 1173 11BA; # (븟; 븟; 븟; 븟; 븟; ) HANGUL SYLLABLE BEUS
+BE20;BE20;1107 1173 11BB;BE20;1107 1173 11BB; # (븠; 븠; 븠; 븠; 븠; ) HANGUL SYLLABLE BEUSS
+BE21;BE21;1107 1173 11BC;BE21;1107 1173 11BC; # (븡; 븡; 븡; 븡; 븡; ) HANGUL SYLLABLE BEUNG
+BE22;BE22;1107 1173 11BD;BE22;1107 1173 11BD; # (븢; 븢; 븢; 븢; 븢; ) HANGUL SYLLABLE BEUJ
+BE23;BE23;1107 1173 11BE;BE23;1107 1173 11BE; # (븣; 븣; 븣; 븣; 븣; ) HANGUL SYLLABLE BEUC
+BE24;BE24;1107 1173 11BF;BE24;1107 1173 11BF; # (븤; 븤; 븤; 븤; 븤; ) HANGUL SYLLABLE BEUK
+BE25;BE25;1107 1173 11C0;BE25;1107 1173 11C0; # (븥; 븥; 븥; 븥; 븥; ) HANGUL SYLLABLE BEUT
+BE26;BE26;1107 1173 11C1;BE26;1107 1173 11C1; # (븦; 븦; 브á‡; 븦; 브á‡; ) HANGUL SYLLABLE BEUP
+BE27;BE27;1107 1173 11C2;BE27;1107 1173 11C2; # (븧; 븧; 븧; 븧; 븧; ) HANGUL SYLLABLE BEUH
+BE28;BE28;1107 1174;BE28;1107 1174; # (븨; 븨; 븨; 븨; 븨; ) HANGUL SYLLABLE BYI
+BE29;BE29;1107 1174 11A8;BE29;1107 1174 11A8; # (븩; 븩; 븩; 븩; 븩; ) HANGUL SYLLABLE BYIG
+BE2A;BE2A;1107 1174 11A9;BE2A;1107 1174 11A9; # (븪; 븪; 븪; 븪; 븪; ) HANGUL SYLLABLE BYIGG
+BE2B;BE2B;1107 1174 11AA;BE2B;1107 1174 11AA; # (븫; 븫; 븫; 븫; 븫; ) HANGUL SYLLABLE BYIGS
+BE2C;BE2C;1107 1174 11AB;BE2C;1107 1174 11AB; # (븬; 븬; 븬; 븬; 븬; ) HANGUL SYLLABLE BYIN
+BE2D;BE2D;1107 1174 11AC;BE2D;1107 1174 11AC; # (븭; 븭; 븭; 븭; 븭; ) HANGUL SYLLABLE BYINJ
+BE2E;BE2E;1107 1174 11AD;BE2E;1107 1174 11AD; # (븮; 븮; 븮; 븮; 븮; ) HANGUL SYLLABLE BYINH
+BE2F;BE2F;1107 1174 11AE;BE2F;1107 1174 11AE; # (븯; 븯; 븯; 븯; 븯; ) HANGUL SYLLABLE BYID
+BE30;BE30;1107 1174 11AF;BE30;1107 1174 11AF; # (븰; 븰; 븰; 븰; 븰; ) HANGUL SYLLABLE BYIL
+BE31;BE31;1107 1174 11B0;BE31;1107 1174 11B0; # (븱; 븱; 븱; 븱; 븱; ) HANGUL SYLLABLE BYILG
+BE32;BE32;1107 1174 11B1;BE32;1107 1174 11B1; # (븲; 븲; 븲; 븲; 븲; ) HANGUL SYLLABLE BYILM
+BE33;BE33;1107 1174 11B2;BE33;1107 1174 11B2; # (븳; 븳; 븳; 븳; 븳; ) HANGUL SYLLABLE BYILB
+BE34;BE34;1107 1174 11B3;BE34;1107 1174 11B3; # (븴; 븴; 븴; 븴; 븴; ) HANGUL SYLLABLE BYILS
+BE35;BE35;1107 1174 11B4;BE35;1107 1174 11B4; # (븵; 븵; 븵; 븵; 븵; ) HANGUL SYLLABLE BYILT
+BE36;BE36;1107 1174 11B5;BE36;1107 1174 11B5; # (븶; 븶; 븶; 븶; 븶; ) HANGUL SYLLABLE BYILP
+BE37;BE37;1107 1174 11B6;BE37;1107 1174 11B6; # (븷; 븷; 븷; 븷; 븷; ) HANGUL SYLLABLE BYILH
+BE38;BE38;1107 1174 11B7;BE38;1107 1174 11B7; # (븸; 븸; 븸; 븸; 븸; ) HANGUL SYLLABLE BYIM
+BE39;BE39;1107 1174 11B8;BE39;1107 1174 11B8; # (븹; 븹; 븹; 븹; 븹; ) HANGUL SYLLABLE BYIB
+BE3A;BE3A;1107 1174 11B9;BE3A;1107 1174 11B9; # (븺; 븺; 븺; 븺; 븺; ) HANGUL SYLLABLE BYIBS
+BE3B;BE3B;1107 1174 11BA;BE3B;1107 1174 11BA; # (븻; 븻; 븻; 븻; 븻; ) HANGUL SYLLABLE BYIS
+BE3C;BE3C;1107 1174 11BB;BE3C;1107 1174 11BB; # (븼; 븼; 븼; 븼; 븼; ) HANGUL SYLLABLE BYISS
+BE3D;BE3D;1107 1174 11BC;BE3D;1107 1174 11BC; # (븽; 븽; 븽; 븽; 븽; ) HANGUL SYLLABLE BYING
+BE3E;BE3E;1107 1174 11BD;BE3E;1107 1174 11BD; # (븾; 븾; 븾; 븾; 븾; ) HANGUL SYLLABLE BYIJ
+BE3F;BE3F;1107 1174 11BE;BE3F;1107 1174 11BE; # (븿; 븿; 븿; 븿; 븿; ) HANGUL SYLLABLE BYIC
+BE40;BE40;1107 1174 11BF;BE40;1107 1174 11BF; # (빀; 빀; 빀; 빀; 빀; ) HANGUL SYLLABLE BYIK
+BE41;BE41;1107 1174 11C0;BE41;1107 1174 11C0; # (ë¹; ë¹; 빁; ë¹; 빁; ) HANGUL SYLLABLE BYIT
+BE42;BE42;1107 1174 11C1;BE42;1107 1174 11C1; # (빂; 빂; 븨á‡; 빂; 븨á‡; ) HANGUL SYLLABLE BYIP
+BE43;BE43;1107 1174 11C2;BE43;1107 1174 11C2; # (빃; 빃; 빃; 빃; 빃; ) HANGUL SYLLABLE BYIH
+BE44;BE44;1107 1175;BE44;1107 1175; # (비; 비; 비; 비; 비; ) HANGUL SYLLABLE BI
+BE45;BE45;1107 1175 11A8;BE45;1107 1175 11A8; # (빅; 빅; 빅; 빅; 빅; ) HANGUL SYLLABLE BIG
+BE46;BE46;1107 1175 11A9;BE46;1107 1175 11A9; # (빆; 빆; 빆; 빆; 빆; ) HANGUL SYLLABLE BIGG
+BE47;BE47;1107 1175 11AA;BE47;1107 1175 11AA; # (빇; 빇; 빇; 빇; 빇; ) HANGUL SYLLABLE BIGS
+BE48;BE48;1107 1175 11AB;BE48;1107 1175 11AB; # (빈; 빈; 빈; 빈; 빈; ) HANGUL SYLLABLE BIN
+BE49;BE49;1107 1175 11AC;BE49;1107 1175 11AC; # (빉; 빉; 빉; 빉; 빉; ) HANGUL SYLLABLE BINJ
+BE4A;BE4A;1107 1175 11AD;BE4A;1107 1175 11AD; # (빊; 빊; 빊; 빊; 빊; ) HANGUL SYLLABLE BINH
+BE4B;BE4B;1107 1175 11AE;BE4B;1107 1175 11AE; # (빋; 빋; 빋; 빋; 빋; ) HANGUL SYLLABLE BID
+BE4C;BE4C;1107 1175 11AF;BE4C;1107 1175 11AF; # (빌; 빌; 빌; 빌; 빌; ) HANGUL SYLLABLE BIL
+BE4D;BE4D;1107 1175 11B0;BE4D;1107 1175 11B0; # (ë¹; ë¹; 빍; ë¹; 빍; ) HANGUL SYLLABLE BILG
+BE4E;BE4E;1107 1175 11B1;BE4E;1107 1175 11B1; # (빎; 빎; 빎; 빎; 빎; ) HANGUL SYLLABLE BILM
+BE4F;BE4F;1107 1175 11B2;BE4F;1107 1175 11B2; # (ë¹; ë¹; 빏; ë¹; 빏; ) HANGUL SYLLABLE BILB
+BE50;BE50;1107 1175 11B3;BE50;1107 1175 11B3; # (ë¹; ë¹; 빐; ë¹; 빐; ) HANGUL SYLLABLE BILS
+BE51;BE51;1107 1175 11B4;BE51;1107 1175 11B4; # (빑; 빑; 빑; 빑; 빑; ) HANGUL SYLLABLE BILT
+BE52;BE52;1107 1175 11B5;BE52;1107 1175 11B5; # (빒; 빒; 빒; 빒; 빒; ) HANGUL SYLLABLE BILP
+BE53;BE53;1107 1175 11B6;BE53;1107 1175 11B6; # (빓; 빓; 빓; 빓; 빓; ) HANGUL SYLLABLE BILH
+BE54;BE54;1107 1175 11B7;BE54;1107 1175 11B7; # (빔; 빔; 빔; 빔; 빔; ) HANGUL SYLLABLE BIM
+BE55;BE55;1107 1175 11B8;BE55;1107 1175 11B8; # (빕; 빕; 빕; 빕; 빕; ) HANGUL SYLLABLE BIB
+BE56;BE56;1107 1175 11B9;BE56;1107 1175 11B9; # (빖; 빖; 빖; 빖; 빖; ) HANGUL SYLLABLE BIBS
+BE57;BE57;1107 1175 11BA;BE57;1107 1175 11BA; # (빗; 빗; 빗; 빗; 빗; ) HANGUL SYLLABLE BIS
+BE58;BE58;1107 1175 11BB;BE58;1107 1175 11BB; # (빘; 빘; 빘; 빘; 빘; ) HANGUL SYLLABLE BISS
+BE59;BE59;1107 1175 11BC;BE59;1107 1175 11BC; # (빙; 빙; 빙; 빙; 빙; ) HANGUL SYLLABLE BING
+BE5A;BE5A;1107 1175 11BD;BE5A;1107 1175 11BD; # (빚; 빚; 빚; 빚; 빚; ) HANGUL SYLLABLE BIJ
+BE5B;BE5B;1107 1175 11BE;BE5B;1107 1175 11BE; # (빛; 빛; 빛; 빛; 빛; ) HANGUL SYLLABLE BIC
+BE5C;BE5C;1107 1175 11BF;BE5C;1107 1175 11BF; # (빜; 빜; 빜; 빜; 빜; ) HANGUL SYLLABLE BIK
+BE5D;BE5D;1107 1175 11C0;BE5D;1107 1175 11C0; # (ë¹; ë¹; 빝; ë¹; 빝; ) HANGUL SYLLABLE BIT
+BE5E;BE5E;1107 1175 11C1;BE5E;1107 1175 11C1; # (빞; 빞; 비á‡; 빞; 비á‡; ) HANGUL SYLLABLE BIP
+BE5F;BE5F;1107 1175 11C2;BE5F;1107 1175 11C2; # (빟; 빟; 빟; 빟; 빟; ) HANGUL SYLLABLE BIH
+BE60;BE60;1108 1161;BE60;1108 1161; # (빠; 빠; 빠; 빠; 빠; ) HANGUL SYLLABLE BBA
+BE61;BE61;1108 1161 11A8;BE61;1108 1161 11A8; # (빡; 빡; 빡; 빡; 빡; ) HANGUL SYLLABLE BBAG
+BE62;BE62;1108 1161 11A9;BE62;1108 1161 11A9; # (빢; 빢; 빢; 빢; 빢; ) HANGUL SYLLABLE BBAGG
+BE63;BE63;1108 1161 11AA;BE63;1108 1161 11AA; # (빣; 빣; 빣; 빣; 빣; ) HANGUL SYLLABLE BBAGS
+BE64;BE64;1108 1161 11AB;BE64;1108 1161 11AB; # (빤; 빤; 빤; 빤; 빤; ) HANGUL SYLLABLE BBAN
+BE65;BE65;1108 1161 11AC;BE65;1108 1161 11AC; # (빥; 빥; 빥; 빥; 빥; ) HANGUL SYLLABLE BBANJ
+BE66;BE66;1108 1161 11AD;BE66;1108 1161 11AD; # (빦; 빦; 빦; 빦; 빦; ) HANGUL SYLLABLE BBANH
+BE67;BE67;1108 1161 11AE;BE67;1108 1161 11AE; # (빧; 빧; 빧; 빧; 빧; ) HANGUL SYLLABLE BBAD
+BE68;BE68;1108 1161 11AF;BE68;1108 1161 11AF; # (빨; 빨; 빨; 빨; 빨; ) HANGUL SYLLABLE BBAL
+BE69;BE69;1108 1161 11B0;BE69;1108 1161 11B0; # (빩; 빩; 빩; 빩; 빩; ) HANGUL SYLLABLE BBALG
+BE6A;BE6A;1108 1161 11B1;BE6A;1108 1161 11B1; # (빪; 빪; 빪; 빪; 빪; ) HANGUL SYLLABLE BBALM
+BE6B;BE6B;1108 1161 11B2;BE6B;1108 1161 11B2; # (빫; 빫; 빫; 빫; 빫; ) HANGUL SYLLABLE BBALB
+BE6C;BE6C;1108 1161 11B3;BE6C;1108 1161 11B3; # (빬; 빬; 빬; 빬; 빬; ) HANGUL SYLLABLE BBALS
+BE6D;BE6D;1108 1161 11B4;BE6D;1108 1161 11B4; # (빭; 빭; 빭; 빭; 빭; ) HANGUL SYLLABLE BBALT
+BE6E;BE6E;1108 1161 11B5;BE6E;1108 1161 11B5; # (빮; 빮; 빮; 빮; 빮; ) HANGUL SYLLABLE BBALP
+BE6F;BE6F;1108 1161 11B6;BE6F;1108 1161 11B6; # (빯; 빯; 빯; 빯; 빯; ) HANGUL SYLLABLE BBALH
+BE70;BE70;1108 1161 11B7;BE70;1108 1161 11B7; # (빰; 빰; 빰; 빰; 빰; ) HANGUL SYLLABLE BBAM
+BE71;BE71;1108 1161 11B8;BE71;1108 1161 11B8; # (빱; 빱; 빱; 빱; 빱; ) HANGUL SYLLABLE BBAB
+BE72;BE72;1108 1161 11B9;BE72;1108 1161 11B9; # (빲; 빲; 빲; 빲; 빲; ) HANGUL SYLLABLE BBABS
+BE73;BE73;1108 1161 11BA;BE73;1108 1161 11BA; # (빳; 빳; 빳; 빳; 빳; ) HANGUL SYLLABLE BBAS
+BE74;BE74;1108 1161 11BB;BE74;1108 1161 11BB; # (빴; 빴; 빴; 빴; 빴; ) HANGUL SYLLABLE BBASS
+BE75;BE75;1108 1161 11BC;BE75;1108 1161 11BC; # (빵; 빵; 빵; 빵; 빵; ) HANGUL SYLLABLE BBANG
+BE76;BE76;1108 1161 11BD;BE76;1108 1161 11BD; # (빶; 빶; 빶; 빶; 빶; ) HANGUL SYLLABLE BBAJ
+BE77;BE77;1108 1161 11BE;BE77;1108 1161 11BE; # (빷; 빷; 빷; 빷; 빷; ) HANGUL SYLLABLE BBAC
+BE78;BE78;1108 1161 11BF;BE78;1108 1161 11BF; # (빸; 빸; 빸; 빸; 빸; ) HANGUL SYLLABLE BBAK
+BE79;BE79;1108 1161 11C0;BE79;1108 1161 11C0; # (빹; 빹; 빹; 빹; 빹; ) HANGUL SYLLABLE BBAT
+BE7A;BE7A;1108 1161 11C1;BE7A;1108 1161 11C1; # (빺; 빺; 빠á‡; 빺; 빠á‡; ) HANGUL SYLLABLE BBAP
+BE7B;BE7B;1108 1161 11C2;BE7B;1108 1161 11C2; # (빻; 빻; 빻; 빻; 빻; ) HANGUL SYLLABLE BBAH
+BE7C;BE7C;1108 1162;BE7C;1108 1162; # (빼; 빼; 빼; 빼; 빼; ) HANGUL SYLLABLE BBAE
+BE7D;BE7D;1108 1162 11A8;BE7D;1108 1162 11A8; # (빽; 빽; 빽; 빽; 빽; ) HANGUL SYLLABLE BBAEG
+BE7E;BE7E;1108 1162 11A9;BE7E;1108 1162 11A9; # (빾; 빾; 빾; 빾; 빾; ) HANGUL SYLLABLE BBAEGG
+BE7F;BE7F;1108 1162 11AA;BE7F;1108 1162 11AA; # (빿; 빿; 빿; 빿; 빿; ) HANGUL SYLLABLE BBAEGS
+BE80;BE80;1108 1162 11AB;BE80;1108 1162 11AB; # (뺀; 뺀; 뺀; 뺀; 뺀; ) HANGUL SYLLABLE BBAEN
+BE81;BE81;1108 1162 11AC;BE81;1108 1162 11AC; # (ëº; ëº; 뺁; ëº; 뺁; ) HANGUL SYLLABLE BBAENJ
+BE82;BE82;1108 1162 11AD;BE82;1108 1162 11AD; # (뺂; 뺂; 뺂; 뺂; 뺂; ) HANGUL SYLLABLE BBAENH
+BE83;BE83;1108 1162 11AE;BE83;1108 1162 11AE; # (뺃; 뺃; 뺃; 뺃; 뺃; ) HANGUL SYLLABLE BBAED
+BE84;BE84;1108 1162 11AF;BE84;1108 1162 11AF; # (뺄; 뺄; 뺄; 뺄; 뺄; ) HANGUL SYLLABLE BBAEL
+BE85;BE85;1108 1162 11B0;BE85;1108 1162 11B0; # (뺅; 뺅; 뺅; 뺅; 뺅; ) HANGUL SYLLABLE BBAELG
+BE86;BE86;1108 1162 11B1;BE86;1108 1162 11B1; # (뺆; 뺆; 뺆; 뺆; 뺆; ) HANGUL SYLLABLE BBAELM
+BE87;BE87;1108 1162 11B2;BE87;1108 1162 11B2; # (뺇; 뺇; 뺇; 뺇; 뺇; ) HANGUL SYLLABLE BBAELB
+BE88;BE88;1108 1162 11B3;BE88;1108 1162 11B3; # (뺈; 뺈; 뺈; 뺈; 뺈; ) HANGUL SYLLABLE BBAELS
+BE89;BE89;1108 1162 11B4;BE89;1108 1162 11B4; # (뺉; 뺉; 뺉; 뺉; 뺉; ) HANGUL SYLLABLE BBAELT
+BE8A;BE8A;1108 1162 11B5;BE8A;1108 1162 11B5; # (뺊; 뺊; 뺊; 뺊; 뺊; ) HANGUL SYLLABLE BBAELP
+BE8B;BE8B;1108 1162 11B6;BE8B;1108 1162 11B6; # (뺋; 뺋; 뺋; 뺋; 뺋; ) HANGUL SYLLABLE BBAELH
+BE8C;BE8C;1108 1162 11B7;BE8C;1108 1162 11B7; # (뺌; 뺌; 뺌; 뺌; 뺌; ) HANGUL SYLLABLE BBAEM
+BE8D;BE8D;1108 1162 11B8;BE8D;1108 1162 11B8; # (ëº; ëº; 뺍; ëº; 뺍; ) HANGUL SYLLABLE BBAEB
+BE8E;BE8E;1108 1162 11B9;BE8E;1108 1162 11B9; # (뺎; 뺎; 뺎; 뺎; 뺎; ) HANGUL SYLLABLE BBAEBS
+BE8F;BE8F;1108 1162 11BA;BE8F;1108 1162 11BA; # (ëº; ëº; 뺏; ëº; 뺏; ) HANGUL SYLLABLE BBAES
+BE90;BE90;1108 1162 11BB;BE90;1108 1162 11BB; # (ëº; ëº; 뺐; ëº; 뺐; ) HANGUL SYLLABLE BBAESS
+BE91;BE91;1108 1162 11BC;BE91;1108 1162 11BC; # (뺑; 뺑; 뺑; 뺑; 뺑; ) HANGUL SYLLABLE BBAENG
+BE92;BE92;1108 1162 11BD;BE92;1108 1162 11BD; # (뺒; 뺒; 뺒; 뺒; 뺒; ) HANGUL SYLLABLE BBAEJ
+BE93;BE93;1108 1162 11BE;BE93;1108 1162 11BE; # (뺓; 뺓; 뺓; 뺓; 뺓; ) HANGUL SYLLABLE BBAEC
+BE94;BE94;1108 1162 11BF;BE94;1108 1162 11BF; # (뺔; 뺔; 뺔; 뺔; 뺔; ) HANGUL SYLLABLE BBAEK
+BE95;BE95;1108 1162 11C0;BE95;1108 1162 11C0; # (뺕; 뺕; 뺕; 뺕; 뺕; ) HANGUL SYLLABLE BBAET
+BE96;BE96;1108 1162 11C1;BE96;1108 1162 11C1; # (뺖; 뺖; 빼á‡; 뺖; 빼á‡; ) HANGUL SYLLABLE BBAEP
+BE97;BE97;1108 1162 11C2;BE97;1108 1162 11C2; # (뺗; 뺗; 뺗; 뺗; 뺗; ) HANGUL SYLLABLE BBAEH
+BE98;BE98;1108 1163;BE98;1108 1163; # (뺘; 뺘; 뺘; 뺘; 뺘; ) HANGUL SYLLABLE BBYA
+BE99;BE99;1108 1163 11A8;BE99;1108 1163 11A8; # (뺙; 뺙; 뺙; 뺙; 뺙; ) HANGUL SYLLABLE BBYAG
+BE9A;BE9A;1108 1163 11A9;BE9A;1108 1163 11A9; # (뺚; 뺚; 뺚; 뺚; 뺚; ) HANGUL SYLLABLE BBYAGG
+BE9B;BE9B;1108 1163 11AA;BE9B;1108 1163 11AA; # (뺛; 뺛; 뺛; 뺛; 뺛; ) HANGUL SYLLABLE BBYAGS
+BE9C;BE9C;1108 1163 11AB;BE9C;1108 1163 11AB; # (뺜; 뺜; 뺜; 뺜; 뺜; ) HANGUL SYLLABLE BBYAN
+BE9D;BE9D;1108 1163 11AC;BE9D;1108 1163 11AC; # (ëº; ëº; 뺝; ëº; 뺝; ) HANGUL SYLLABLE BBYANJ
+BE9E;BE9E;1108 1163 11AD;BE9E;1108 1163 11AD; # (뺞; 뺞; 뺞; 뺞; 뺞; ) HANGUL SYLLABLE BBYANH
+BE9F;BE9F;1108 1163 11AE;BE9F;1108 1163 11AE; # (뺟; 뺟; 뺟; 뺟; 뺟; ) HANGUL SYLLABLE BBYAD
+BEA0;BEA0;1108 1163 11AF;BEA0;1108 1163 11AF; # (뺠; 뺠; 뺠; 뺠; 뺠; ) HANGUL SYLLABLE BBYAL
+BEA1;BEA1;1108 1163 11B0;BEA1;1108 1163 11B0; # (뺡; 뺡; 뺡; 뺡; 뺡; ) HANGUL SYLLABLE BBYALG
+BEA2;BEA2;1108 1163 11B1;BEA2;1108 1163 11B1; # (뺢; 뺢; 뺢; 뺢; 뺢; ) HANGUL SYLLABLE BBYALM
+BEA3;BEA3;1108 1163 11B2;BEA3;1108 1163 11B2; # (뺣; 뺣; 뺣; 뺣; 뺣; ) HANGUL SYLLABLE BBYALB
+BEA4;BEA4;1108 1163 11B3;BEA4;1108 1163 11B3; # (뺤; 뺤; 뺤; 뺤; 뺤; ) HANGUL SYLLABLE BBYALS
+BEA5;BEA5;1108 1163 11B4;BEA5;1108 1163 11B4; # (뺥; 뺥; 뺥; 뺥; 뺥; ) HANGUL SYLLABLE BBYALT
+BEA6;BEA6;1108 1163 11B5;BEA6;1108 1163 11B5; # (뺦; 뺦; 뺦; 뺦; 뺦; ) HANGUL SYLLABLE BBYALP
+BEA7;BEA7;1108 1163 11B6;BEA7;1108 1163 11B6; # (뺧; 뺧; 뺧; 뺧; 뺧; ) HANGUL SYLLABLE BBYALH
+BEA8;BEA8;1108 1163 11B7;BEA8;1108 1163 11B7; # (뺨; 뺨; 뺨; 뺨; 뺨; ) HANGUL SYLLABLE BBYAM
+BEA9;BEA9;1108 1163 11B8;BEA9;1108 1163 11B8; # (뺩; 뺩; 뺩; 뺩; 뺩; ) HANGUL SYLLABLE BBYAB
+BEAA;BEAA;1108 1163 11B9;BEAA;1108 1163 11B9; # (뺪; 뺪; 뺪; 뺪; 뺪; ) HANGUL SYLLABLE BBYABS
+BEAB;BEAB;1108 1163 11BA;BEAB;1108 1163 11BA; # (뺫; 뺫; 뺫; 뺫; 뺫; ) HANGUL SYLLABLE BBYAS
+BEAC;BEAC;1108 1163 11BB;BEAC;1108 1163 11BB; # (뺬; 뺬; 뺬; 뺬; 뺬; ) HANGUL SYLLABLE BBYASS
+BEAD;BEAD;1108 1163 11BC;BEAD;1108 1163 11BC; # (뺭; 뺭; 뺭; 뺭; 뺭; ) HANGUL SYLLABLE BBYANG
+BEAE;BEAE;1108 1163 11BD;BEAE;1108 1163 11BD; # (뺮; 뺮; 뺮; 뺮; 뺮; ) HANGUL SYLLABLE BBYAJ
+BEAF;BEAF;1108 1163 11BE;BEAF;1108 1163 11BE; # (뺯; 뺯; 뺯; 뺯; 뺯; ) HANGUL SYLLABLE BBYAC
+BEB0;BEB0;1108 1163 11BF;BEB0;1108 1163 11BF; # (뺰; 뺰; 뺰; 뺰; 뺰; ) HANGUL SYLLABLE BBYAK
+BEB1;BEB1;1108 1163 11C0;BEB1;1108 1163 11C0; # (뺱; 뺱; 뺱; 뺱; 뺱; ) HANGUL SYLLABLE BBYAT
+BEB2;BEB2;1108 1163 11C1;BEB2;1108 1163 11C1; # (뺲; 뺲; 뺘á‡; 뺲; 뺘á‡; ) HANGUL SYLLABLE BBYAP
+BEB3;BEB3;1108 1163 11C2;BEB3;1108 1163 11C2; # (뺳; 뺳; 뺳; 뺳; 뺳; ) HANGUL SYLLABLE BBYAH
+BEB4;BEB4;1108 1164;BEB4;1108 1164; # (뺴; 뺴; 뺴; 뺴; 뺴; ) HANGUL SYLLABLE BBYAE
+BEB5;BEB5;1108 1164 11A8;BEB5;1108 1164 11A8; # (뺵; 뺵; 뺵; 뺵; 뺵; ) HANGUL SYLLABLE BBYAEG
+BEB6;BEB6;1108 1164 11A9;BEB6;1108 1164 11A9; # (뺶; 뺶; 뺶; 뺶; 뺶; ) HANGUL SYLLABLE BBYAEGG
+BEB7;BEB7;1108 1164 11AA;BEB7;1108 1164 11AA; # (뺷; 뺷; 뺷; 뺷; 뺷; ) HANGUL SYLLABLE BBYAEGS
+BEB8;BEB8;1108 1164 11AB;BEB8;1108 1164 11AB; # (뺸; 뺸; 뺸; 뺸; 뺸; ) HANGUL SYLLABLE BBYAEN
+BEB9;BEB9;1108 1164 11AC;BEB9;1108 1164 11AC; # (뺹; 뺹; 뺹; 뺹; 뺹; ) HANGUL SYLLABLE BBYAENJ
+BEBA;BEBA;1108 1164 11AD;BEBA;1108 1164 11AD; # (뺺; 뺺; 뺺; 뺺; 뺺; ) HANGUL SYLLABLE BBYAENH
+BEBB;BEBB;1108 1164 11AE;BEBB;1108 1164 11AE; # (뺻; 뺻; 뺻; 뺻; 뺻; ) HANGUL SYLLABLE BBYAED
+BEBC;BEBC;1108 1164 11AF;BEBC;1108 1164 11AF; # (뺼; 뺼; 뺼; 뺼; 뺼; ) HANGUL SYLLABLE BBYAEL
+BEBD;BEBD;1108 1164 11B0;BEBD;1108 1164 11B0; # (뺽; 뺽; 뺽; 뺽; 뺽; ) HANGUL SYLLABLE BBYAELG
+BEBE;BEBE;1108 1164 11B1;BEBE;1108 1164 11B1; # (뺾; 뺾; 뺾; 뺾; 뺾; ) HANGUL SYLLABLE BBYAELM
+BEBF;BEBF;1108 1164 11B2;BEBF;1108 1164 11B2; # (뺿; 뺿; 뺿; 뺿; 뺿; ) HANGUL SYLLABLE BBYAELB
+BEC0;BEC0;1108 1164 11B3;BEC0;1108 1164 11B3; # (뻀; 뻀; 뻀; 뻀; 뻀; ) HANGUL SYLLABLE BBYAELS
+BEC1;BEC1;1108 1164 11B4;BEC1;1108 1164 11B4; # (ë»; ë»; 뻁; ë»; 뻁; ) HANGUL SYLLABLE BBYAELT
+BEC2;BEC2;1108 1164 11B5;BEC2;1108 1164 11B5; # (뻂; 뻂; 뻂; 뻂; 뻂; ) HANGUL SYLLABLE BBYAELP
+BEC3;BEC3;1108 1164 11B6;BEC3;1108 1164 11B6; # (뻃; 뻃; 뻃; 뻃; 뻃; ) HANGUL SYLLABLE BBYAELH
+BEC4;BEC4;1108 1164 11B7;BEC4;1108 1164 11B7; # (뻄; 뻄; 뻄; 뻄; 뻄; ) HANGUL SYLLABLE BBYAEM
+BEC5;BEC5;1108 1164 11B8;BEC5;1108 1164 11B8; # (뻅; 뻅; 뻅; 뻅; 뻅; ) HANGUL SYLLABLE BBYAEB
+BEC6;BEC6;1108 1164 11B9;BEC6;1108 1164 11B9; # (뻆; 뻆; 뻆; 뻆; 뻆; ) HANGUL SYLLABLE BBYAEBS
+BEC7;BEC7;1108 1164 11BA;BEC7;1108 1164 11BA; # (뻇; 뻇; 뻇; 뻇; 뻇; ) HANGUL SYLLABLE BBYAES
+BEC8;BEC8;1108 1164 11BB;BEC8;1108 1164 11BB; # (뻈; 뻈; 뻈; 뻈; 뻈; ) HANGUL SYLLABLE BBYAESS
+BEC9;BEC9;1108 1164 11BC;BEC9;1108 1164 11BC; # (뻉; 뻉; 뻉; 뻉; 뻉; ) HANGUL SYLLABLE BBYAENG
+BECA;BECA;1108 1164 11BD;BECA;1108 1164 11BD; # (뻊; 뻊; 뻊; 뻊; 뻊; ) HANGUL SYLLABLE BBYAEJ
+BECB;BECB;1108 1164 11BE;BECB;1108 1164 11BE; # (뻋; 뻋; 뻋; 뻋; 뻋; ) HANGUL SYLLABLE BBYAEC
+BECC;BECC;1108 1164 11BF;BECC;1108 1164 11BF; # (뻌; 뻌; 뻌; 뻌; 뻌; ) HANGUL SYLLABLE BBYAEK
+BECD;BECD;1108 1164 11C0;BECD;1108 1164 11C0; # (ë»; ë»; 뻍; ë»; 뻍; ) HANGUL SYLLABLE BBYAET
+BECE;BECE;1108 1164 11C1;BECE;1108 1164 11C1; # (뻎; 뻎; 뺴á‡; 뻎; 뺴á‡; ) HANGUL SYLLABLE BBYAEP
+BECF;BECF;1108 1164 11C2;BECF;1108 1164 11C2; # (ë»; ë»; 뻏; ë»; 뻏; ) HANGUL SYLLABLE BBYAEH
+BED0;BED0;1108 1165;BED0;1108 1165; # (ë»; ë»; 뻐; ë»; 뻐; ) HANGUL SYLLABLE BBEO
+BED1;BED1;1108 1165 11A8;BED1;1108 1165 11A8; # (뻑; 뻑; 뻑; 뻑; 뻑; ) HANGUL SYLLABLE BBEOG
+BED2;BED2;1108 1165 11A9;BED2;1108 1165 11A9; # (뻒; 뻒; 뻒; 뻒; 뻒; ) HANGUL SYLLABLE BBEOGG
+BED3;BED3;1108 1165 11AA;BED3;1108 1165 11AA; # (뻓; 뻓; 뻓; 뻓; 뻓; ) HANGUL SYLLABLE BBEOGS
+BED4;BED4;1108 1165 11AB;BED4;1108 1165 11AB; # (뻔; 뻔; 뻔; 뻔; 뻔; ) HANGUL SYLLABLE BBEON
+BED5;BED5;1108 1165 11AC;BED5;1108 1165 11AC; # (뻕; 뻕; 뻕; 뻕; 뻕; ) HANGUL SYLLABLE BBEONJ
+BED6;BED6;1108 1165 11AD;BED6;1108 1165 11AD; # (뻖; 뻖; 뻖; 뻖; 뻖; ) HANGUL SYLLABLE BBEONH
+BED7;BED7;1108 1165 11AE;BED7;1108 1165 11AE; # (뻗; 뻗; 뻗; 뻗; 뻗; ) HANGUL SYLLABLE BBEOD
+BED8;BED8;1108 1165 11AF;BED8;1108 1165 11AF; # (뻘; 뻘; 뻘; 뻘; 뻘; ) HANGUL SYLLABLE BBEOL
+BED9;BED9;1108 1165 11B0;BED9;1108 1165 11B0; # (뻙; 뻙; 뻙; 뻙; 뻙; ) HANGUL SYLLABLE BBEOLG
+BEDA;BEDA;1108 1165 11B1;BEDA;1108 1165 11B1; # (뻚; 뻚; 뻚; 뻚; 뻚; ) HANGUL SYLLABLE BBEOLM
+BEDB;BEDB;1108 1165 11B2;BEDB;1108 1165 11B2; # (뻛; 뻛; 뻛; 뻛; 뻛; ) HANGUL SYLLABLE BBEOLB
+BEDC;BEDC;1108 1165 11B3;BEDC;1108 1165 11B3; # (뻜; 뻜; 뻜; 뻜; 뻜; ) HANGUL SYLLABLE BBEOLS
+BEDD;BEDD;1108 1165 11B4;BEDD;1108 1165 11B4; # (ë»; ë»; 뻝; ë»; 뻝; ) HANGUL SYLLABLE BBEOLT
+BEDE;BEDE;1108 1165 11B5;BEDE;1108 1165 11B5; # (뻞; 뻞; 뻞; 뻞; 뻞; ) HANGUL SYLLABLE BBEOLP
+BEDF;BEDF;1108 1165 11B6;BEDF;1108 1165 11B6; # (뻟; 뻟; 뻟; 뻟; 뻟; ) HANGUL SYLLABLE BBEOLH
+BEE0;BEE0;1108 1165 11B7;BEE0;1108 1165 11B7; # (뻠; 뻠; 뻠; 뻠; 뻠; ) HANGUL SYLLABLE BBEOM
+BEE1;BEE1;1108 1165 11B8;BEE1;1108 1165 11B8; # (뻡; 뻡; 뻡; 뻡; 뻡; ) HANGUL SYLLABLE BBEOB
+BEE2;BEE2;1108 1165 11B9;BEE2;1108 1165 11B9; # (뻢; 뻢; 뻢; 뻢; 뻢; ) HANGUL SYLLABLE BBEOBS
+BEE3;BEE3;1108 1165 11BA;BEE3;1108 1165 11BA; # (뻣; 뻣; 뻣; 뻣; 뻣; ) HANGUL SYLLABLE BBEOS
+BEE4;BEE4;1108 1165 11BB;BEE4;1108 1165 11BB; # (뻤; 뻤; 뻤; 뻤; 뻤; ) HANGUL SYLLABLE BBEOSS
+BEE5;BEE5;1108 1165 11BC;BEE5;1108 1165 11BC; # (뻥; 뻥; 뻥; 뻥; 뻥; ) HANGUL SYLLABLE BBEONG
+BEE6;BEE6;1108 1165 11BD;BEE6;1108 1165 11BD; # (뻦; 뻦; 뻦; 뻦; 뻦; ) HANGUL SYLLABLE BBEOJ
+BEE7;BEE7;1108 1165 11BE;BEE7;1108 1165 11BE; # (뻧; 뻧; 뻧; 뻧; 뻧; ) HANGUL SYLLABLE BBEOC
+BEE8;BEE8;1108 1165 11BF;BEE8;1108 1165 11BF; # (뻨; 뻨; 뻨; 뻨; 뻨; ) HANGUL SYLLABLE BBEOK
+BEE9;BEE9;1108 1165 11C0;BEE9;1108 1165 11C0; # (뻩; 뻩; 뻩; 뻩; 뻩; ) HANGUL SYLLABLE BBEOT
+BEEA;BEEA;1108 1165 11C1;BEEA;1108 1165 11C1; # (뻪; 뻪; 뻐á‡; 뻪; 뻐á‡; ) HANGUL SYLLABLE BBEOP
+BEEB;BEEB;1108 1165 11C2;BEEB;1108 1165 11C2; # (뻫; 뻫; 뻫; 뻫; 뻫; ) HANGUL SYLLABLE BBEOH
+BEEC;BEEC;1108 1166;BEEC;1108 1166; # (뻬; 뻬; 뻬; 뻬; 뻬; ) HANGUL SYLLABLE BBE
+BEED;BEED;1108 1166 11A8;BEED;1108 1166 11A8; # (뻭; 뻭; 뻭; 뻭; 뻭; ) HANGUL SYLLABLE BBEG
+BEEE;BEEE;1108 1166 11A9;BEEE;1108 1166 11A9; # (뻮; 뻮; 뻮; 뻮; 뻮; ) HANGUL SYLLABLE BBEGG
+BEEF;BEEF;1108 1166 11AA;BEEF;1108 1166 11AA; # (뻯; 뻯; 뻯; 뻯; 뻯; ) HANGUL SYLLABLE BBEGS
+BEF0;BEF0;1108 1166 11AB;BEF0;1108 1166 11AB; # (뻰; 뻰; 뻰; 뻰; 뻰; ) HANGUL SYLLABLE BBEN
+BEF1;BEF1;1108 1166 11AC;BEF1;1108 1166 11AC; # (뻱; 뻱; 뻱; 뻱; 뻱; ) HANGUL SYLLABLE BBENJ
+BEF2;BEF2;1108 1166 11AD;BEF2;1108 1166 11AD; # (뻲; 뻲; 뻲; 뻲; 뻲; ) HANGUL SYLLABLE BBENH
+BEF3;BEF3;1108 1166 11AE;BEF3;1108 1166 11AE; # (뻳; 뻳; 뻳; 뻳; 뻳; ) HANGUL SYLLABLE BBED
+BEF4;BEF4;1108 1166 11AF;BEF4;1108 1166 11AF; # (뻴; 뻴; 뻴; 뻴; 뻴; ) HANGUL SYLLABLE BBEL
+BEF5;BEF5;1108 1166 11B0;BEF5;1108 1166 11B0; # (뻵; 뻵; 뻵; 뻵; 뻵; ) HANGUL SYLLABLE BBELG
+BEF6;BEF6;1108 1166 11B1;BEF6;1108 1166 11B1; # (뻶; 뻶; 뻶; 뻶; 뻶; ) HANGUL SYLLABLE BBELM
+BEF7;BEF7;1108 1166 11B2;BEF7;1108 1166 11B2; # (뻷; 뻷; 뻷; 뻷; 뻷; ) HANGUL SYLLABLE BBELB
+BEF8;BEF8;1108 1166 11B3;BEF8;1108 1166 11B3; # (뻸; 뻸; 뻸; 뻸; 뻸; ) HANGUL SYLLABLE BBELS
+BEF9;BEF9;1108 1166 11B4;BEF9;1108 1166 11B4; # (뻹; 뻹; 뻹; 뻹; 뻹; ) HANGUL SYLLABLE BBELT
+BEFA;BEFA;1108 1166 11B5;BEFA;1108 1166 11B5; # (뻺; 뻺; 뻺; 뻺; 뻺; ) HANGUL SYLLABLE BBELP
+BEFB;BEFB;1108 1166 11B6;BEFB;1108 1166 11B6; # (뻻; 뻻; 뻻; 뻻; 뻻; ) HANGUL SYLLABLE BBELH
+BEFC;BEFC;1108 1166 11B7;BEFC;1108 1166 11B7; # (뻼; 뻼; 뻼; 뻼; 뻼; ) HANGUL SYLLABLE BBEM
+BEFD;BEFD;1108 1166 11B8;BEFD;1108 1166 11B8; # (뻽; 뻽; 뻽; 뻽; 뻽; ) HANGUL SYLLABLE BBEB
+BEFE;BEFE;1108 1166 11B9;BEFE;1108 1166 11B9; # (뻾; 뻾; 뻾; 뻾; 뻾; ) HANGUL SYLLABLE BBEBS
+BEFF;BEFF;1108 1166 11BA;BEFF;1108 1166 11BA; # (뻿; 뻿; 뻿; 뻿; 뻿; ) HANGUL SYLLABLE BBES
+BF00;BF00;1108 1166 11BB;BF00;1108 1166 11BB; # (뼀; 뼀; 뼀; 뼀; 뼀; ) HANGUL SYLLABLE BBESS
+BF01;BF01;1108 1166 11BC;BF01;1108 1166 11BC; # (ë¼; ë¼; 뼁; ë¼; 뼁; ) HANGUL SYLLABLE BBENG
+BF02;BF02;1108 1166 11BD;BF02;1108 1166 11BD; # (뼂; 뼂; 뼂; 뼂; 뼂; ) HANGUL SYLLABLE BBEJ
+BF03;BF03;1108 1166 11BE;BF03;1108 1166 11BE; # (뼃; 뼃; 뼃; 뼃; 뼃; ) HANGUL SYLLABLE BBEC
+BF04;BF04;1108 1166 11BF;BF04;1108 1166 11BF; # (뼄; 뼄; 뼄; 뼄; 뼄; ) HANGUL SYLLABLE BBEK
+BF05;BF05;1108 1166 11C0;BF05;1108 1166 11C0; # (뼅; 뼅; 뼅; 뼅; 뼅; ) HANGUL SYLLABLE BBET
+BF06;BF06;1108 1166 11C1;BF06;1108 1166 11C1; # (뼆; 뼆; 뻬á‡; 뼆; 뻬á‡; ) HANGUL SYLLABLE BBEP
+BF07;BF07;1108 1166 11C2;BF07;1108 1166 11C2; # (뼇; 뼇; 뼇; 뼇; 뼇; ) HANGUL SYLLABLE BBEH
+BF08;BF08;1108 1167;BF08;1108 1167; # (뼈; 뼈; 뼈; 뼈; 뼈; ) HANGUL SYLLABLE BBYEO
+BF09;BF09;1108 1167 11A8;BF09;1108 1167 11A8; # (뼉; 뼉; 뼉; 뼉; 뼉; ) HANGUL SYLLABLE BBYEOG
+BF0A;BF0A;1108 1167 11A9;BF0A;1108 1167 11A9; # (뼊; 뼊; 뼊; 뼊; 뼊; ) HANGUL SYLLABLE BBYEOGG
+BF0B;BF0B;1108 1167 11AA;BF0B;1108 1167 11AA; # (뼋; 뼋; 뼋; 뼋; 뼋; ) HANGUL SYLLABLE BBYEOGS
+BF0C;BF0C;1108 1167 11AB;BF0C;1108 1167 11AB; # (뼌; 뼌; 뼌; 뼌; 뼌; ) HANGUL SYLLABLE BBYEON
+BF0D;BF0D;1108 1167 11AC;BF0D;1108 1167 11AC; # (ë¼; ë¼; 뼍; ë¼; 뼍; ) HANGUL SYLLABLE BBYEONJ
+BF0E;BF0E;1108 1167 11AD;BF0E;1108 1167 11AD; # (뼎; 뼎; 뼎; 뼎; 뼎; ) HANGUL SYLLABLE BBYEONH
+BF0F;BF0F;1108 1167 11AE;BF0F;1108 1167 11AE; # (ë¼; ë¼; 뼏; ë¼; 뼏; ) HANGUL SYLLABLE BBYEOD
+BF10;BF10;1108 1167 11AF;BF10;1108 1167 11AF; # (ë¼; ë¼; 뼐; ë¼; 뼐; ) HANGUL SYLLABLE BBYEOL
+BF11;BF11;1108 1167 11B0;BF11;1108 1167 11B0; # (뼑; 뼑; 뼑; 뼑; 뼑; ) HANGUL SYLLABLE BBYEOLG
+BF12;BF12;1108 1167 11B1;BF12;1108 1167 11B1; # (뼒; 뼒; 뼒; 뼒; 뼒; ) HANGUL SYLLABLE BBYEOLM
+BF13;BF13;1108 1167 11B2;BF13;1108 1167 11B2; # (뼓; 뼓; 뼓; 뼓; 뼓; ) HANGUL SYLLABLE BBYEOLB
+BF14;BF14;1108 1167 11B3;BF14;1108 1167 11B3; # (뼔; 뼔; 뼔; 뼔; 뼔; ) HANGUL SYLLABLE BBYEOLS
+BF15;BF15;1108 1167 11B4;BF15;1108 1167 11B4; # (뼕; 뼕; 뼕; 뼕; 뼕; ) HANGUL SYLLABLE BBYEOLT
+BF16;BF16;1108 1167 11B5;BF16;1108 1167 11B5; # (뼖; 뼖; 뼖; 뼖; 뼖; ) HANGUL SYLLABLE BBYEOLP
+BF17;BF17;1108 1167 11B6;BF17;1108 1167 11B6; # (뼗; 뼗; 뼗; 뼗; 뼗; ) HANGUL SYLLABLE BBYEOLH
+BF18;BF18;1108 1167 11B7;BF18;1108 1167 11B7; # (뼘; 뼘; 뼘; 뼘; 뼘; ) HANGUL SYLLABLE BBYEOM
+BF19;BF19;1108 1167 11B8;BF19;1108 1167 11B8; # (뼙; 뼙; 뼙; 뼙; 뼙; ) HANGUL SYLLABLE BBYEOB
+BF1A;BF1A;1108 1167 11B9;BF1A;1108 1167 11B9; # (뼚; 뼚; 뼚; 뼚; 뼚; ) HANGUL SYLLABLE BBYEOBS
+BF1B;BF1B;1108 1167 11BA;BF1B;1108 1167 11BA; # (뼛; 뼛; 뼛; 뼛; 뼛; ) HANGUL SYLLABLE BBYEOS
+BF1C;BF1C;1108 1167 11BB;BF1C;1108 1167 11BB; # (뼜; 뼜; 뼜; 뼜; 뼜; ) HANGUL SYLLABLE BBYEOSS
+BF1D;BF1D;1108 1167 11BC;BF1D;1108 1167 11BC; # (ë¼; ë¼; 뼝; ë¼; 뼝; ) HANGUL SYLLABLE BBYEONG
+BF1E;BF1E;1108 1167 11BD;BF1E;1108 1167 11BD; # (뼞; 뼞; 뼞; 뼞; 뼞; ) HANGUL SYLLABLE BBYEOJ
+BF1F;BF1F;1108 1167 11BE;BF1F;1108 1167 11BE; # (뼟; 뼟; 뼟; 뼟; 뼟; ) HANGUL SYLLABLE BBYEOC
+BF20;BF20;1108 1167 11BF;BF20;1108 1167 11BF; # (뼠; 뼠; 뼠; 뼠; 뼠; ) HANGUL SYLLABLE BBYEOK
+BF21;BF21;1108 1167 11C0;BF21;1108 1167 11C0; # (뼡; 뼡; 뼡; 뼡; 뼡; ) HANGUL SYLLABLE BBYEOT
+BF22;BF22;1108 1167 11C1;BF22;1108 1167 11C1; # (ë¼¢; ë¼¢; 뼈á‡; ë¼¢; 뼈á‡; ) HANGUL SYLLABLE BBYEOP
+BF23;BF23;1108 1167 11C2;BF23;1108 1167 11C2; # (뼣; 뼣; 뼣; 뼣; 뼣; ) HANGUL SYLLABLE BBYEOH
+BF24;BF24;1108 1168;BF24;1108 1168; # (뼤; 뼤; 뼤; 뼤; 뼤; ) HANGUL SYLLABLE BBYE
+BF25;BF25;1108 1168 11A8;BF25;1108 1168 11A8; # (뼥; 뼥; 뼥; 뼥; 뼥; ) HANGUL SYLLABLE BBYEG
+BF26;BF26;1108 1168 11A9;BF26;1108 1168 11A9; # (뼦; 뼦; 뼦; 뼦; 뼦; ) HANGUL SYLLABLE BBYEGG
+BF27;BF27;1108 1168 11AA;BF27;1108 1168 11AA; # (뼧; 뼧; 뼧; 뼧; 뼧; ) HANGUL SYLLABLE BBYEGS
+BF28;BF28;1108 1168 11AB;BF28;1108 1168 11AB; # (뼨; 뼨; 뼨; 뼨; 뼨; ) HANGUL SYLLABLE BBYEN
+BF29;BF29;1108 1168 11AC;BF29;1108 1168 11AC; # (뼩; 뼩; 뼩; 뼩; 뼩; ) HANGUL SYLLABLE BBYENJ
+BF2A;BF2A;1108 1168 11AD;BF2A;1108 1168 11AD; # (뼪; 뼪; 뼪; 뼪; 뼪; ) HANGUL SYLLABLE BBYENH
+BF2B;BF2B;1108 1168 11AE;BF2B;1108 1168 11AE; # (뼫; 뼫; 뼫; 뼫; 뼫; ) HANGUL SYLLABLE BBYED
+BF2C;BF2C;1108 1168 11AF;BF2C;1108 1168 11AF; # (뼬; 뼬; 뼬; 뼬; 뼬; ) HANGUL SYLLABLE BBYEL
+BF2D;BF2D;1108 1168 11B0;BF2D;1108 1168 11B0; # (뼭; 뼭; 뼭; 뼭; 뼭; ) HANGUL SYLLABLE BBYELG
+BF2E;BF2E;1108 1168 11B1;BF2E;1108 1168 11B1; # (뼮; 뼮; 뼮; 뼮; 뼮; ) HANGUL SYLLABLE BBYELM
+BF2F;BF2F;1108 1168 11B2;BF2F;1108 1168 11B2; # (뼯; 뼯; 뼯; 뼯; 뼯; ) HANGUL SYLLABLE BBYELB
+BF30;BF30;1108 1168 11B3;BF30;1108 1168 11B3; # (뼰; 뼰; 뼰; 뼰; 뼰; ) HANGUL SYLLABLE BBYELS
+BF31;BF31;1108 1168 11B4;BF31;1108 1168 11B4; # (뼱; 뼱; 뼱; 뼱; 뼱; ) HANGUL SYLLABLE BBYELT
+BF32;BF32;1108 1168 11B5;BF32;1108 1168 11B5; # (뼲; 뼲; 뼲; 뼲; 뼲; ) HANGUL SYLLABLE BBYELP
+BF33;BF33;1108 1168 11B6;BF33;1108 1168 11B6; # (뼳; 뼳; 뼳; 뼳; 뼳; ) HANGUL SYLLABLE BBYELH
+BF34;BF34;1108 1168 11B7;BF34;1108 1168 11B7; # (뼴; 뼴; 뼴; 뼴; 뼴; ) HANGUL SYLLABLE BBYEM
+BF35;BF35;1108 1168 11B8;BF35;1108 1168 11B8; # (뼵; 뼵; 뼵; 뼵; 뼵; ) HANGUL SYLLABLE BBYEB
+BF36;BF36;1108 1168 11B9;BF36;1108 1168 11B9; # (뼶; 뼶; 뼶; 뼶; 뼶; ) HANGUL SYLLABLE BBYEBS
+BF37;BF37;1108 1168 11BA;BF37;1108 1168 11BA; # (뼷; 뼷; 뼷; 뼷; 뼷; ) HANGUL SYLLABLE BBYES
+BF38;BF38;1108 1168 11BB;BF38;1108 1168 11BB; # (뼸; 뼸; 뼸; 뼸; 뼸; ) HANGUL SYLLABLE BBYESS
+BF39;BF39;1108 1168 11BC;BF39;1108 1168 11BC; # (뼹; 뼹; 뼹; 뼹; 뼹; ) HANGUL SYLLABLE BBYENG
+BF3A;BF3A;1108 1168 11BD;BF3A;1108 1168 11BD; # (뼺; 뼺; 뼺; 뼺; 뼺; ) HANGUL SYLLABLE BBYEJ
+BF3B;BF3B;1108 1168 11BE;BF3B;1108 1168 11BE; # (뼻; 뼻; 뼻; 뼻; 뼻; ) HANGUL SYLLABLE BBYEC
+BF3C;BF3C;1108 1168 11BF;BF3C;1108 1168 11BF; # (뼼; 뼼; 뼼; 뼼; 뼼; ) HANGUL SYLLABLE BBYEK
+BF3D;BF3D;1108 1168 11C0;BF3D;1108 1168 11C0; # (뼽; 뼽; 뼽; 뼽; 뼽; ) HANGUL SYLLABLE BBYET
+BF3E;BF3E;1108 1168 11C1;BF3E;1108 1168 11C1; # (ë¼¾; ë¼¾; 뼤á‡; ë¼¾; 뼤á‡; ) HANGUL SYLLABLE BBYEP
+BF3F;BF3F;1108 1168 11C2;BF3F;1108 1168 11C2; # (뼿; 뼿; 뼿; 뼿; 뼿; ) HANGUL SYLLABLE BBYEH
+BF40;BF40;1108 1169;BF40;1108 1169; # (뽀; 뽀; 뽀; 뽀; 뽀; ) HANGUL SYLLABLE BBO
+BF41;BF41;1108 1169 11A8;BF41;1108 1169 11A8; # (ë½; ë½; 뽁; ë½; 뽁; ) HANGUL SYLLABLE BBOG
+BF42;BF42;1108 1169 11A9;BF42;1108 1169 11A9; # (뽂; 뽂; 뽂; 뽂; 뽂; ) HANGUL SYLLABLE BBOGG
+BF43;BF43;1108 1169 11AA;BF43;1108 1169 11AA; # (뽃; 뽃; 뽃; 뽃; 뽃; ) HANGUL SYLLABLE BBOGS
+BF44;BF44;1108 1169 11AB;BF44;1108 1169 11AB; # (뽄; 뽄; 뽄; 뽄; 뽄; ) HANGUL SYLLABLE BBON
+BF45;BF45;1108 1169 11AC;BF45;1108 1169 11AC; # (뽅; 뽅; 뽅; 뽅; 뽅; ) HANGUL SYLLABLE BBONJ
+BF46;BF46;1108 1169 11AD;BF46;1108 1169 11AD; # (뽆; 뽆; 뽆; 뽆; 뽆; ) HANGUL SYLLABLE BBONH
+BF47;BF47;1108 1169 11AE;BF47;1108 1169 11AE; # (뽇; 뽇; 뽇; 뽇; 뽇; ) HANGUL SYLLABLE BBOD
+BF48;BF48;1108 1169 11AF;BF48;1108 1169 11AF; # (뽈; 뽈; 뽈; 뽈; 뽈; ) HANGUL SYLLABLE BBOL
+BF49;BF49;1108 1169 11B0;BF49;1108 1169 11B0; # (뽉; 뽉; 뽉; 뽉; 뽉; ) HANGUL SYLLABLE BBOLG
+BF4A;BF4A;1108 1169 11B1;BF4A;1108 1169 11B1; # (뽊; 뽊; 뽊; 뽊; 뽊; ) HANGUL SYLLABLE BBOLM
+BF4B;BF4B;1108 1169 11B2;BF4B;1108 1169 11B2; # (뽋; 뽋; 뽋; 뽋; 뽋; ) HANGUL SYLLABLE BBOLB
+BF4C;BF4C;1108 1169 11B3;BF4C;1108 1169 11B3; # (뽌; 뽌; 뽌; 뽌; 뽌; ) HANGUL SYLLABLE BBOLS
+BF4D;BF4D;1108 1169 11B4;BF4D;1108 1169 11B4; # (ë½; ë½; 뽍; ë½; 뽍; ) HANGUL SYLLABLE BBOLT
+BF4E;BF4E;1108 1169 11B5;BF4E;1108 1169 11B5; # (뽎; 뽎; 뽎; 뽎; 뽎; ) HANGUL SYLLABLE BBOLP
+BF4F;BF4F;1108 1169 11B6;BF4F;1108 1169 11B6; # (ë½; ë½; 뽏; ë½; 뽏; ) HANGUL SYLLABLE BBOLH
+BF50;BF50;1108 1169 11B7;BF50;1108 1169 11B7; # (ë½; ë½; 뽐; ë½; 뽐; ) HANGUL SYLLABLE BBOM
+BF51;BF51;1108 1169 11B8;BF51;1108 1169 11B8; # (뽑; 뽑; 뽑; 뽑; 뽑; ) HANGUL SYLLABLE BBOB
+BF52;BF52;1108 1169 11B9;BF52;1108 1169 11B9; # (뽒; 뽒; 뽒; 뽒; 뽒; ) HANGUL SYLLABLE BBOBS
+BF53;BF53;1108 1169 11BA;BF53;1108 1169 11BA; # (뽓; 뽓; 뽓; 뽓; 뽓; ) HANGUL SYLLABLE BBOS
+BF54;BF54;1108 1169 11BB;BF54;1108 1169 11BB; # (뽔; 뽔; 뽔; 뽔; 뽔; ) HANGUL SYLLABLE BBOSS
+BF55;BF55;1108 1169 11BC;BF55;1108 1169 11BC; # (뽕; 뽕; 뽕; 뽕; 뽕; ) HANGUL SYLLABLE BBONG
+BF56;BF56;1108 1169 11BD;BF56;1108 1169 11BD; # (뽖; 뽖; 뽖; 뽖; 뽖; ) HANGUL SYLLABLE BBOJ
+BF57;BF57;1108 1169 11BE;BF57;1108 1169 11BE; # (뽗; 뽗; 뽗; 뽗; 뽗; ) HANGUL SYLLABLE BBOC
+BF58;BF58;1108 1169 11BF;BF58;1108 1169 11BF; # (뽘; 뽘; 뽘; 뽘; 뽘; ) HANGUL SYLLABLE BBOK
+BF59;BF59;1108 1169 11C0;BF59;1108 1169 11C0; # (뽙; 뽙; 뽙; 뽙; 뽙; ) HANGUL SYLLABLE BBOT
+BF5A;BF5A;1108 1169 11C1;BF5A;1108 1169 11C1; # (뽚; 뽚; 뽀á‡; 뽚; 뽀á‡; ) HANGUL SYLLABLE BBOP
+BF5B;BF5B;1108 1169 11C2;BF5B;1108 1169 11C2; # (뽛; 뽛; 뽛; 뽛; 뽛; ) HANGUL SYLLABLE BBOH
+BF5C;BF5C;1108 116A;BF5C;1108 116A; # (뽜; 뽜; 뽜; 뽜; 뽜; ) HANGUL SYLLABLE BBWA
+BF5D;BF5D;1108 116A 11A8;BF5D;1108 116A 11A8; # (ë½; ë½; 뽝; ë½; 뽝; ) HANGUL SYLLABLE BBWAG
+BF5E;BF5E;1108 116A 11A9;BF5E;1108 116A 11A9; # (뽞; 뽞; 뽞; 뽞; 뽞; ) HANGUL SYLLABLE BBWAGG
+BF5F;BF5F;1108 116A 11AA;BF5F;1108 116A 11AA; # (뽟; 뽟; 뽟; 뽟; 뽟; ) HANGUL SYLLABLE BBWAGS
+BF60;BF60;1108 116A 11AB;BF60;1108 116A 11AB; # (뽠; 뽠; 뽠; 뽠; 뽠; ) HANGUL SYLLABLE BBWAN
+BF61;BF61;1108 116A 11AC;BF61;1108 116A 11AC; # (뽡; 뽡; 뽡; 뽡; 뽡; ) HANGUL SYLLABLE BBWANJ
+BF62;BF62;1108 116A 11AD;BF62;1108 116A 11AD; # (뽢; 뽢; 뽢; 뽢; 뽢; ) HANGUL SYLLABLE BBWANH
+BF63;BF63;1108 116A 11AE;BF63;1108 116A 11AE; # (뽣; 뽣; 뽣; 뽣; 뽣; ) HANGUL SYLLABLE BBWAD
+BF64;BF64;1108 116A 11AF;BF64;1108 116A 11AF; # (뽤; 뽤; 뽤; 뽤; 뽤; ) HANGUL SYLLABLE BBWAL
+BF65;BF65;1108 116A 11B0;BF65;1108 116A 11B0; # (뽥; 뽥; 뽥; 뽥; 뽥; ) HANGUL SYLLABLE BBWALG
+BF66;BF66;1108 116A 11B1;BF66;1108 116A 11B1; # (뽦; 뽦; 뽦; 뽦; 뽦; ) HANGUL SYLLABLE BBWALM
+BF67;BF67;1108 116A 11B2;BF67;1108 116A 11B2; # (뽧; 뽧; 뽧; 뽧; 뽧; ) HANGUL SYLLABLE BBWALB
+BF68;BF68;1108 116A 11B3;BF68;1108 116A 11B3; # (뽨; 뽨; 뽨; 뽨; 뽨; ) HANGUL SYLLABLE BBWALS
+BF69;BF69;1108 116A 11B4;BF69;1108 116A 11B4; # (뽩; 뽩; 뽩; 뽩; 뽩; ) HANGUL SYLLABLE BBWALT
+BF6A;BF6A;1108 116A 11B5;BF6A;1108 116A 11B5; # (뽪; 뽪; 뽪; 뽪; 뽪; ) HANGUL SYLLABLE BBWALP
+BF6B;BF6B;1108 116A 11B6;BF6B;1108 116A 11B6; # (뽫; 뽫; 뽫; 뽫; 뽫; ) HANGUL SYLLABLE BBWALH
+BF6C;BF6C;1108 116A 11B7;BF6C;1108 116A 11B7; # (뽬; 뽬; 뽬; 뽬; 뽬; ) HANGUL SYLLABLE BBWAM
+BF6D;BF6D;1108 116A 11B8;BF6D;1108 116A 11B8; # (뽭; 뽭; 뽭; 뽭; 뽭; ) HANGUL SYLLABLE BBWAB
+BF6E;BF6E;1108 116A 11B9;BF6E;1108 116A 11B9; # (뽮; 뽮; 뽮; 뽮; 뽮; ) HANGUL SYLLABLE BBWABS
+BF6F;BF6F;1108 116A 11BA;BF6F;1108 116A 11BA; # (뽯; 뽯; 뽯; 뽯; 뽯; ) HANGUL SYLLABLE BBWAS
+BF70;BF70;1108 116A 11BB;BF70;1108 116A 11BB; # (뽰; 뽰; 뽰; 뽰; 뽰; ) HANGUL SYLLABLE BBWASS
+BF71;BF71;1108 116A 11BC;BF71;1108 116A 11BC; # (뽱; 뽱; 뽱; 뽱; 뽱; ) HANGUL SYLLABLE BBWANG
+BF72;BF72;1108 116A 11BD;BF72;1108 116A 11BD; # (뽲; 뽲; 뽲; 뽲; 뽲; ) HANGUL SYLLABLE BBWAJ
+BF73;BF73;1108 116A 11BE;BF73;1108 116A 11BE; # (뽳; 뽳; 뽳; 뽳; 뽳; ) HANGUL SYLLABLE BBWAC
+BF74;BF74;1108 116A 11BF;BF74;1108 116A 11BF; # (뽴; 뽴; 뽴; 뽴; 뽴; ) HANGUL SYLLABLE BBWAK
+BF75;BF75;1108 116A 11C0;BF75;1108 116A 11C0; # (뽵; 뽵; 뽵; 뽵; 뽵; ) HANGUL SYLLABLE BBWAT
+BF76;BF76;1108 116A 11C1;BF76;1108 116A 11C1; # (뽶; 뽶; 뽜á‡; 뽶; 뽜á‡; ) HANGUL SYLLABLE BBWAP
+BF77;BF77;1108 116A 11C2;BF77;1108 116A 11C2; # (뽷; 뽷; 뽷; 뽷; 뽷; ) HANGUL SYLLABLE BBWAH
+BF78;BF78;1108 116B;BF78;1108 116B; # (뽸; 뽸; 뽸; 뽸; 뽸; ) HANGUL SYLLABLE BBWAE
+BF79;BF79;1108 116B 11A8;BF79;1108 116B 11A8; # (뽹; 뽹; 뽹; 뽹; 뽹; ) HANGUL SYLLABLE BBWAEG
+BF7A;BF7A;1108 116B 11A9;BF7A;1108 116B 11A9; # (뽺; 뽺; 뽺; 뽺; 뽺; ) HANGUL SYLLABLE BBWAEGG
+BF7B;BF7B;1108 116B 11AA;BF7B;1108 116B 11AA; # (뽻; 뽻; 뽻; 뽻; 뽻; ) HANGUL SYLLABLE BBWAEGS
+BF7C;BF7C;1108 116B 11AB;BF7C;1108 116B 11AB; # (뽼; 뽼; 뽼; 뽼; 뽼; ) HANGUL SYLLABLE BBWAEN
+BF7D;BF7D;1108 116B 11AC;BF7D;1108 116B 11AC; # (뽽; 뽽; 뽽; 뽽; 뽽; ) HANGUL SYLLABLE BBWAENJ
+BF7E;BF7E;1108 116B 11AD;BF7E;1108 116B 11AD; # (뽾; 뽾; 뽾; 뽾; 뽾; ) HANGUL SYLLABLE BBWAENH
+BF7F;BF7F;1108 116B 11AE;BF7F;1108 116B 11AE; # (뽿; 뽿; 뽿; 뽿; 뽿; ) HANGUL SYLLABLE BBWAED
+BF80;BF80;1108 116B 11AF;BF80;1108 116B 11AF; # (뾀; 뾀; 뾀; 뾀; 뾀; ) HANGUL SYLLABLE BBWAEL
+BF81;BF81;1108 116B 11B0;BF81;1108 116B 11B0; # (ë¾; ë¾; 뾁; ë¾; 뾁; ) HANGUL SYLLABLE BBWAELG
+BF82;BF82;1108 116B 11B1;BF82;1108 116B 11B1; # (뾂; 뾂; 뾂; 뾂; 뾂; ) HANGUL SYLLABLE BBWAELM
+BF83;BF83;1108 116B 11B2;BF83;1108 116B 11B2; # (뾃; 뾃; 뾃; 뾃; 뾃; ) HANGUL SYLLABLE BBWAELB
+BF84;BF84;1108 116B 11B3;BF84;1108 116B 11B3; # (뾄; 뾄; 뾄; 뾄; 뾄; ) HANGUL SYLLABLE BBWAELS
+BF85;BF85;1108 116B 11B4;BF85;1108 116B 11B4; # (뾅; 뾅; 뾅; 뾅; 뾅; ) HANGUL SYLLABLE BBWAELT
+BF86;BF86;1108 116B 11B5;BF86;1108 116B 11B5; # (뾆; 뾆; 뾆; 뾆; 뾆; ) HANGUL SYLLABLE BBWAELP
+BF87;BF87;1108 116B 11B6;BF87;1108 116B 11B6; # (뾇; 뾇; 뾇; 뾇; 뾇; ) HANGUL SYLLABLE BBWAELH
+BF88;BF88;1108 116B 11B7;BF88;1108 116B 11B7; # (뾈; 뾈; 뾈; 뾈; 뾈; ) HANGUL SYLLABLE BBWAEM
+BF89;BF89;1108 116B 11B8;BF89;1108 116B 11B8; # (뾉; 뾉; 뾉; 뾉; 뾉; ) HANGUL SYLLABLE BBWAEB
+BF8A;BF8A;1108 116B 11B9;BF8A;1108 116B 11B9; # (뾊; 뾊; 뾊; 뾊; 뾊; ) HANGUL SYLLABLE BBWAEBS
+BF8B;BF8B;1108 116B 11BA;BF8B;1108 116B 11BA; # (뾋; 뾋; 뾋; 뾋; 뾋; ) HANGUL SYLLABLE BBWAES
+BF8C;BF8C;1108 116B 11BB;BF8C;1108 116B 11BB; # (뾌; 뾌; 뾌; 뾌; 뾌; ) HANGUL SYLLABLE BBWAESS
+BF8D;BF8D;1108 116B 11BC;BF8D;1108 116B 11BC; # (ë¾; ë¾; 뾍; ë¾; 뾍; ) HANGUL SYLLABLE BBWAENG
+BF8E;BF8E;1108 116B 11BD;BF8E;1108 116B 11BD; # (뾎; 뾎; 뾎; 뾎; 뾎; ) HANGUL SYLLABLE BBWAEJ
+BF8F;BF8F;1108 116B 11BE;BF8F;1108 116B 11BE; # (ë¾; ë¾; 뾏; ë¾; 뾏; ) HANGUL SYLLABLE BBWAEC
+BF90;BF90;1108 116B 11BF;BF90;1108 116B 11BF; # (ë¾; ë¾; 뾐; ë¾; 뾐; ) HANGUL SYLLABLE BBWAEK
+BF91;BF91;1108 116B 11C0;BF91;1108 116B 11C0; # (뾑; 뾑; 뾑; 뾑; 뾑; ) HANGUL SYLLABLE BBWAET
+BF92;BF92;1108 116B 11C1;BF92;1108 116B 11C1; # (ë¾’; ë¾’; 뽸á‡; ë¾’; 뽸á‡; ) HANGUL SYLLABLE BBWAEP
+BF93;BF93;1108 116B 11C2;BF93;1108 116B 11C2; # (뾓; 뾓; 뾓; 뾓; 뾓; ) HANGUL SYLLABLE BBWAEH
+BF94;BF94;1108 116C;BF94;1108 116C; # (뾔; 뾔; 뾔; 뾔; 뾔; ) HANGUL SYLLABLE BBOE
+BF95;BF95;1108 116C 11A8;BF95;1108 116C 11A8; # (뾕; 뾕; 뾕; 뾕; 뾕; ) HANGUL SYLLABLE BBOEG
+BF96;BF96;1108 116C 11A9;BF96;1108 116C 11A9; # (뾖; 뾖; 뾖; 뾖; 뾖; ) HANGUL SYLLABLE BBOEGG
+BF97;BF97;1108 116C 11AA;BF97;1108 116C 11AA; # (뾗; 뾗; 뾗; 뾗; 뾗; ) HANGUL SYLLABLE BBOEGS
+BF98;BF98;1108 116C 11AB;BF98;1108 116C 11AB; # (뾘; 뾘; 뾘; 뾘; 뾘; ) HANGUL SYLLABLE BBOEN
+BF99;BF99;1108 116C 11AC;BF99;1108 116C 11AC; # (뾙; 뾙; 뾙; 뾙; 뾙; ) HANGUL SYLLABLE BBOENJ
+BF9A;BF9A;1108 116C 11AD;BF9A;1108 116C 11AD; # (뾚; 뾚; 뾚; 뾚; 뾚; ) HANGUL SYLLABLE BBOENH
+BF9B;BF9B;1108 116C 11AE;BF9B;1108 116C 11AE; # (뾛; 뾛; 뾛; 뾛; 뾛; ) HANGUL SYLLABLE BBOED
+BF9C;BF9C;1108 116C 11AF;BF9C;1108 116C 11AF; # (뾜; 뾜; 뾜; 뾜; 뾜; ) HANGUL SYLLABLE BBOEL
+BF9D;BF9D;1108 116C 11B0;BF9D;1108 116C 11B0; # (ë¾; ë¾; 뾝; ë¾; 뾝; ) HANGUL SYLLABLE BBOELG
+BF9E;BF9E;1108 116C 11B1;BF9E;1108 116C 11B1; # (뾞; 뾞; 뾞; 뾞; 뾞; ) HANGUL SYLLABLE BBOELM
+BF9F;BF9F;1108 116C 11B2;BF9F;1108 116C 11B2; # (뾟; 뾟; 뾟; 뾟; 뾟; ) HANGUL SYLLABLE BBOELB
+BFA0;BFA0;1108 116C 11B3;BFA0;1108 116C 11B3; # (뾠; 뾠; 뾠; 뾠; 뾠; ) HANGUL SYLLABLE BBOELS
+BFA1;BFA1;1108 116C 11B4;BFA1;1108 116C 11B4; # (뾡; 뾡; 뾡; 뾡; 뾡; ) HANGUL SYLLABLE BBOELT
+BFA2;BFA2;1108 116C 11B5;BFA2;1108 116C 11B5; # (뾢; 뾢; 뾢; 뾢; 뾢; ) HANGUL SYLLABLE BBOELP
+BFA3;BFA3;1108 116C 11B6;BFA3;1108 116C 11B6; # (뾣; 뾣; 뾣; 뾣; 뾣; ) HANGUL SYLLABLE BBOELH
+BFA4;BFA4;1108 116C 11B7;BFA4;1108 116C 11B7; # (뾤; 뾤; 뾤; 뾤; 뾤; ) HANGUL SYLLABLE BBOEM
+BFA5;BFA5;1108 116C 11B8;BFA5;1108 116C 11B8; # (뾥; 뾥; 뾥; 뾥; 뾥; ) HANGUL SYLLABLE BBOEB
+BFA6;BFA6;1108 116C 11B9;BFA6;1108 116C 11B9; # (뾦; 뾦; 뾦; 뾦; 뾦; ) HANGUL SYLLABLE BBOEBS
+BFA7;BFA7;1108 116C 11BA;BFA7;1108 116C 11BA; # (뾧; 뾧; 뾧; 뾧; 뾧; ) HANGUL SYLLABLE BBOES
+BFA8;BFA8;1108 116C 11BB;BFA8;1108 116C 11BB; # (뾨; 뾨; 뾨; 뾨; 뾨; ) HANGUL SYLLABLE BBOESS
+BFA9;BFA9;1108 116C 11BC;BFA9;1108 116C 11BC; # (뾩; 뾩; 뾩; 뾩; 뾩; ) HANGUL SYLLABLE BBOENG
+BFAA;BFAA;1108 116C 11BD;BFAA;1108 116C 11BD; # (뾪; 뾪; 뾪; 뾪; 뾪; ) HANGUL SYLLABLE BBOEJ
+BFAB;BFAB;1108 116C 11BE;BFAB;1108 116C 11BE; # (뾫; 뾫; 뾫; 뾫; 뾫; ) HANGUL SYLLABLE BBOEC
+BFAC;BFAC;1108 116C 11BF;BFAC;1108 116C 11BF; # (뾬; 뾬; 뾬; 뾬; 뾬; ) HANGUL SYLLABLE BBOEK
+BFAD;BFAD;1108 116C 11C0;BFAD;1108 116C 11C0; # (뾭; 뾭; 뾭; 뾭; 뾭; ) HANGUL SYLLABLE BBOET
+BFAE;BFAE;1108 116C 11C1;BFAE;1108 116C 11C1; # (ë¾®; ë¾®; 뾔á‡; ë¾®; 뾔á‡; ) HANGUL SYLLABLE BBOEP
+BFAF;BFAF;1108 116C 11C2;BFAF;1108 116C 11C2; # (뾯; 뾯; 뾯; 뾯; 뾯; ) HANGUL SYLLABLE BBOEH
+BFB0;BFB0;1108 116D;BFB0;1108 116D; # (뾰; 뾰; 뾰; 뾰; 뾰; ) HANGUL SYLLABLE BBYO
+BFB1;BFB1;1108 116D 11A8;BFB1;1108 116D 11A8; # (뾱; 뾱; 뾱; 뾱; 뾱; ) HANGUL SYLLABLE BBYOG
+BFB2;BFB2;1108 116D 11A9;BFB2;1108 116D 11A9; # (뾲; 뾲; 뾲; 뾲; 뾲; ) HANGUL SYLLABLE BBYOGG
+BFB3;BFB3;1108 116D 11AA;BFB3;1108 116D 11AA; # (뾳; 뾳; 뾳; 뾳; 뾳; ) HANGUL SYLLABLE BBYOGS
+BFB4;BFB4;1108 116D 11AB;BFB4;1108 116D 11AB; # (뾴; 뾴; 뾴; 뾴; 뾴; ) HANGUL SYLLABLE BBYON
+BFB5;BFB5;1108 116D 11AC;BFB5;1108 116D 11AC; # (뾵; 뾵; 뾵; 뾵; 뾵; ) HANGUL SYLLABLE BBYONJ
+BFB6;BFB6;1108 116D 11AD;BFB6;1108 116D 11AD; # (뾶; 뾶; 뾶; 뾶; 뾶; ) HANGUL SYLLABLE BBYONH
+BFB7;BFB7;1108 116D 11AE;BFB7;1108 116D 11AE; # (뾷; 뾷; 뾷; 뾷; 뾷; ) HANGUL SYLLABLE BBYOD
+BFB8;BFB8;1108 116D 11AF;BFB8;1108 116D 11AF; # (뾸; 뾸; 뾸; 뾸; 뾸; ) HANGUL SYLLABLE BBYOL
+BFB9;BFB9;1108 116D 11B0;BFB9;1108 116D 11B0; # (뾹; 뾹; 뾹; 뾹; 뾹; ) HANGUL SYLLABLE BBYOLG
+BFBA;BFBA;1108 116D 11B1;BFBA;1108 116D 11B1; # (뾺; 뾺; 뾺; 뾺; 뾺; ) HANGUL SYLLABLE BBYOLM
+BFBB;BFBB;1108 116D 11B2;BFBB;1108 116D 11B2; # (뾻; 뾻; 뾻; 뾻; 뾻; ) HANGUL SYLLABLE BBYOLB
+BFBC;BFBC;1108 116D 11B3;BFBC;1108 116D 11B3; # (뾼; 뾼; 뾼; 뾼; 뾼; ) HANGUL SYLLABLE BBYOLS
+BFBD;BFBD;1108 116D 11B4;BFBD;1108 116D 11B4; # (뾽; 뾽; 뾽; 뾽; 뾽; ) HANGUL SYLLABLE BBYOLT
+BFBE;BFBE;1108 116D 11B5;BFBE;1108 116D 11B5; # (뾾; 뾾; 뾾; 뾾; 뾾; ) HANGUL SYLLABLE BBYOLP
+BFBF;BFBF;1108 116D 11B6;BFBF;1108 116D 11B6; # (뾿; 뾿; 뾿; 뾿; 뾿; ) HANGUL SYLLABLE BBYOLH
+BFC0;BFC0;1108 116D 11B7;BFC0;1108 116D 11B7; # (뿀; 뿀; 뿀; 뿀; 뿀; ) HANGUL SYLLABLE BBYOM
+BFC1;BFC1;1108 116D 11B8;BFC1;1108 116D 11B8; # (ë¿; ë¿; 뿁; ë¿; 뿁; ) HANGUL SYLLABLE BBYOB
+BFC2;BFC2;1108 116D 11B9;BFC2;1108 116D 11B9; # (뿂; 뿂; 뿂; 뿂; 뿂; ) HANGUL SYLLABLE BBYOBS
+BFC3;BFC3;1108 116D 11BA;BFC3;1108 116D 11BA; # (뿃; 뿃; 뿃; 뿃; 뿃; ) HANGUL SYLLABLE BBYOS
+BFC4;BFC4;1108 116D 11BB;BFC4;1108 116D 11BB; # (뿄; 뿄; 뿄; 뿄; 뿄; ) HANGUL SYLLABLE BBYOSS
+BFC5;BFC5;1108 116D 11BC;BFC5;1108 116D 11BC; # (뿅; 뿅; 뿅; 뿅; 뿅; ) HANGUL SYLLABLE BBYONG
+BFC6;BFC6;1108 116D 11BD;BFC6;1108 116D 11BD; # (뿆; 뿆; 뿆; 뿆; 뿆; ) HANGUL SYLLABLE BBYOJ
+BFC7;BFC7;1108 116D 11BE;BFC7;1108 116D 11BE; # (뿇; 뿇; 뿇; 뿇; 뿇; ) HANGUL SYLLABLE BBYOC
+BFC8;BFC8;1108 116D 11BF;BFC8;1108 116D 11BF; # (뿈; 뿈; 뿈; 뿈; 뿈; ) HANGUL SYLLABLE BBYOK
+BFC9;BFC9;1108 116D 11C0;BFC9;1108 116D 11C0; # (뿉; 뿉; 뿉; 뿉; 뿉; ) HANGUL SYLLABLE BBYOT
+BFCA;BFCA;1108 116D 11C1;BFCA;1108 116D 11C1; # (ë¿Š; ë¿Š; 뾰á‡; ë¿Š; 뾰á‡; ) HANGUL SYLLABLE BBYOP
+BFCB;BFCB;1108 116D 11C2;BFCB;1108 116D 11C2; # (뿋; 뿋; 뿋; 뿋; 뿋; ) HANGUL SYLLABLE BBYOH
+BFCC;BFCC;1108 116E;BFCC;1108 116E; # (뿌; 뿌; 뿌; 뿌; 뿌; ) HANGUL SYLLABLE BBU
+BFCD;BFCD;1108 116E 11A8;BFCD;1108 116E 11A8; # (ë¿; ë¿; 뿍; ë¿; 뿍; ) HANGUL SYLLABLE BBUG
+BFCE;BFCE;1108 116E 11A9;BFCE;1108 116E 11A9; # (뿎; 뿎; 뿎; 뿎; 뿎; ) HANGUL SYLLABLE BBUGG
+BFCF;BFCF;1108 116E 11AA;BFCF;1108 116E 11AA; # (ë¿; ë¿; 뿏; ë¿; 뿏; ) HANGUL SYLLABLE BBUGS
+BFD0;BFD0;1108 116E 11AB;BFD0;1108 116E 11AB; # (ë¿; ë¿; 뿐; ë¿; 뿐; ) HANGUL SYLLABLE BBUN
+BFD1;BFD1;1108 116E 11AC;BFD1;1108 116E 11AC; # (뿑; 뿑; 뿑; 뿑; 뿑; ) HANGUL SYLLABLE BBUNJ
+BFD2;BFD2;1108 116E 11AD;BFD2;1108 116E 11AD; # (뿒; 뿒; 뿒; 뿒; 뿒; ) HANGUL SYLLABLE BBUNH
+BFD3;BFD3;1108 116E 11AE;BFD3;1108 116E 11AE; # (뿓; 뿓; 뿓; 뿓; 뿓; ) HANGUL SYLLABLE BBUD
+BFD4;BFD4;1108 116E 11AF;BFD4;1108 116E 11AF; # (뿔; 뿔; 뿔; 뿔; 뿔; ) HANGUL SYLLABLE BBUL
+BFD5;BFD5;1108 116E 11B0;BFD5;1108 116E 11B0; # (뿕; 뿕; 뿕; 뿕; 뿕; ) HANGUL SYLLABLE BBULG
+BFD6;BFD6;1108 116E 11B1;BFD6;1108 116E 11B1; # (뿖; 뿖; 뿖; 뿖; 뿖; ) HANGUL SYLLABLE BBULM
+BFD7;BFD7;1108 116E 11B2;BFD7;1108 116E 11B2; # (뿗; 뿗; 뿗; 뿗; 뿗; ) HANGUL SYLLABLE BBULB
+BFD8;BFD8;1108 116E 11B3;BFD8;1108 116E 11B3; # (뿘; 뿘; 뿘; 뿘; 뿘; ) HANGUL SYLLABLE BBULS
+BFD9;BFD9;1108 116E 11B4;BFD9;1108 116E 11B4; # (뿙; 뿙; 뿙; 뿙; 뿙; ) HANGUL SYLLABLE BBULT
+BFDA;BFDA;1108 116E 11B5;BFDA;1108 116E 11B5; # (뿚; 뿚; 뿚; 뿚; 뿚; ) HANGUL SYLLABLE BBULP
+BFDB;BFDB;1108 116E 11B6;BFDB;1108 116E 11B6; # (뿛; 뿛; 뿛; 뿛; 뿛; ) HANGUL SYLLABLE BBULH
+BFDC;BFDC;1108 116E 11B7;BFDC;1108 116E 11B7; # (뿜; 뿜; 뿜; 뿜; 뿜; ) HANGUL SYLLABLE BBUM
+BFDD;BFDD;1108 116E 11B8;BFDD;1108 116E 11B8; # (ë¿; ë¿; 뿝; ë¿; 뿝; ) HANGUL SYLLABLE BBUB
+BFDE;BFDE;1108 116E 11B9;BFDE;1108 116E 11B9; # (뿞; 뿞; 뿞; 뿞; 뿞; ) HANGUL SYLLABLE BBUBS
+BFDF;BFDF;1108 116E 11BA;BFDF;1108 116E 11BA; # (뿟; 뿟; 뿟; 뿟; 뿟; ) HANGUL SYLLABLE BBUS
+BFE0;BFE0;1108 116E 11BB;BFE0;1108 116E 11BB; # (뿠; 뿠; 뿠; 뿠; 뿠; ) HANGUL SYLLABLE BBUSS
+BFE1;BFE1;1108 116E 11BC;BFE1;1108 116E 11BC; # (뿡; 뿡; 뿡; 뿡; 뿡; ) HANGUL SYLLABLE BBUNG
+BFE2;BFE2;1108 116E 11BD;BFE2;1108 116E 11BD; # (뿢; 뿢; 뿢; 뿢; 뿢; ) HANGUL SYLLABLE BBUJ
+BFE3;BFE3;1108 116E 11BE;BFE3;1108 116E 11BE; # (뿣; 뿣; 뿣; 뿣; 뿣; ) HANGUL SYLLABLE BBUC
+BFE4;BFE4;1108 116E 11BF;BFE4;1108 116E 11BF; # (뿤; 뿤; 뿤; 뿤; 뿤; ) HANGUL SYLLABLE BBUK
+BFE5;BFE5;1108 116E 11C0;BFE5;1108 116E 11C0; # (뿥; 뿥; 뿥; 뿥; 뿥; ) HANGUL SYLLABLE BBUT
+BFE6;BFE6;1108 116E 11C1;BFE6;1108 116E 11C1; # (뿦; 뿦; 뿌á‡; 뿦; 뿌á‡; ) HANGUL SYLLABLE BBUP
+BFE7;BFE7;1108 116E 11C2;BFE7;1108 116E 11C2; # (뿧; 뿧; 뿧; 뿧; 뿧; ) HANGUL SYLLABLE BBUH
+BFE8;BFE8;1108 116F;BFE8;1108 116F; # (뿨; 뿨; 뿨; 뿨; 뿨; ) HANGUL SYLLABLE BBWEO
+BFE9;BFE9;1108 116F 11A8;BFE9;1108 116F 11A8; # (뿩; 뿩; 뿩; 뿩; 뿩; ) HANGUL SYLLABLE BBWEOG
+BFEA;BFEA;1108 116F 11A9;BFEA;1108 116F 11A9; # (뿪; 뿪; 뿪; 뿪; 뿪; ) HANGUL SYLLABLE BBWEOGG
+BFEB;BFEB;1108 116F 11AA;BFEB;1108 116F 11AA; # (뿫; 뿫; 뿫; 뿫; 뿫; ) HANGUL SYLLABLE BBWEOGS
+BFEC;BFEC;1108 116F 11AB;BFEC;1108 116F 11AB; # (뿬; 뿬; 뿬; 뿬; 뿬; ) HANGUL SYLLABLE BBWEON
+BFED;BFED;1108 116F 11AC;BFED;1108 116F 11AC; # (뿭; 뿭; 뿭; 뿭; 뿭; ) HANGUL SYLLABLE BBWEONJ
+BFEE;BFEE;1108 116F 11AD;BFEE;1108 116F 11AD; # (뿮; 뿮; 뿮; 뿮; 뿮; ) HANGUL SYLLABLE BBWEONH
+BFEF;BFEF;1108 116F 11AE;BFEF;1108 116F 11AE; # (뿯; 뿯; 뿯; 뿯; 뿯; ) HANGUL SYLLABLE BBWEOD
+BFF0;BFF0;1108 116F 11AF;BFF0;1108 116F 11AF; # (뿰; 뿰; 뿰; 뿰; 뿰; ) HANGUL SYLLABLE BBWEOL
+BFF1;BFF1;1108 116F 11B0;BFF1;1108 116F 11B0; # (뿱; 뿱; 뿱; 뿱; 뿱; ) HANGUL SYLLABLE BBWEOLG
+BFF2;BFF2;1108 116F 11B1;BFF2;1108 116F 11B1; # (뿲; 뿲; 뿲; 뿲; 뿲; ) HANGUL SYLLABLE BBWEOLM
+BFF3;BFF3;1108 116F 11B2;BFF3;1108 116F 11B2; # (뿳; 뿳; 뿳; 뿳; 뿳; ) HANGUL SYLLABLE BBWEOLB
+BFF4;BFF4;1108 116F 11B3;BFF4;1108 116F 11B3; # (뿴; 뿴; 뿴; 뿴; 뿴; ) HANGUL SYLLABLE BBWEOLS
+BFF5;BFF5;1108 116F 11B4;BFF5;1108 116F 11B4; # (뿵; 뿵; 뿵; 뿵; 뿵; ) HANGUL SYLLABLE BBWEOLT
+BFF6;BFF6;1108 116F 11B5;BFF6;1108 116F 11B5; # (뿶; 뿶; 뿶; 뿶; 뿶; ) HANGUL SYLLABLE BBWEOLP
+BFF7;BFF7;1108 116F 11B6;BFF7;1108 116F 11B6; # (뿷; 뿷; 뿷; 뿷; 뿷; ) HANGUL SYLLABLE BBWEOLH
+BFF8;BFF8;1108 116F 11B7;BFF8;1108 116F 11B7; # (뿸; 뿸; 뿸; 뿸; 뿸; ) HANGUL SYLLABLE BBWEOM
+BFF9;BFF9;1108 116F 11B8;BFF9;1108 116F 11B8; # (뿹; 뿹; 뿹; 뿹; 뿹; ) HANGUL SYLLABLE BBWEOB
+BFFA;BFFA;1108 116F 11B9;BFFA;1108 116F 11B9; # (뿺; 뿺; 뿺; 뿺; 뿺; ) HANGUL SYLLABLE BBWEOBS
+BFFB;BFFB;1108 116F 11BA;BFFB;1108 116F 11BA; # (뿻; 뿻; 뿻; 뿻; 뿻; ) HANGUL SYLLABLE BBWEOS
+BFFC;BFFC;1108 116F 11BB;BFFC;1108 116F 11BB; # (뿼; 뿼; 뿼; 뿼; 뿼; ) HANGUL SYLLABLE BBWEOSS
+BFFD;BFFD;1108 116F 11BC;BFFD;1108 116F 11BC; # (뿽; 뿽; 뿽; 뿽; 뿽; ) HANGUL SYLLABLE BBWEONG
+BFFE;BFFE;1108 116F 11BD;BFFE;1108 116F 11BD; # (뿾; 뿾; 뿾; 뿾; 뿾; ) HANGUL SYLLABLE BBWEOJ
+BFFF;BFFF;1108 116F 11BE;BFFF;1108 116F 11BE; # (뿿; 뿿; 뿿; 뿿; 뿿; ) HANGUL SYLLABLE BBWEOC
+C000;C000;1108 116F 11BF;C000;1108 116F 11BF; # (쀀; 쀀; 쀀; 쀀; 쀀; ) HANGUL SYLLABLE BBWEOK
+C001;C001;1108 116F 11C0;C001;1108 116F 11C0; # (ì€; ì€; 쀁; ì€; 쀁; ) HANGUL SYLLABLE BBWEOT
+C002;C002;1108 116F 11C1;C002;1108 116F 11C1; # (쀂; 쀂; 뿨á‡; 쀂; 뿨á‡; ) HANGUL SYLLABLE BBWEOP
+C003;C003;1108 116F 11C2;C003;1108 116F 11C2; # (쀃; 쀃; 쀃; 쀃; 쀃; ) HANGUL SYLLABLE BBWEOH
+C004;C004;1108 1170;C004;1108 1170; # (쀄; 쀄; 쀄; 쀄; 쀄; ) HANGUL SYLLABLE BBWE
+C005;C005;1108 1170 11A8;C005;1108 1170 11A8; # (쀅; 쀅; 쀅; 쀅; 쀅; ) HANGUL SYLLABLE BBWEG
+C006;C006;1108 1170 11A9;C006;1108 1170 11A9; # (쀆; 쀆; 쀆; 쀆; 쀆; ) HANGUL SYLLABLE BBWEGG
+C007;C007;1108 1170 11AA;C007;1108 1170 11AA; # (쀇; 쀇; 쀇; 쀇; 쀇; ) HANGUL SYLLABLE BBWEGS
+C008;C008;1108 1170 11AB;C008;1108 1170 11AB; # (쀈; 쀈; 쀈; 쀈; 쀈; ) HANGUL SYLLABLE BBWEN
+C009;C009;1108 1170 11AC;C009;1108 1170 11AC; # (쀉; 쀉; 쀉; 쀉; 쀉; ) HANGUL SYLLABLE BBWENJ
+C00A;C00A;1108 1170 11AD;C00A;1108 1170 11AD; # (쀊; 쀊; 쀊; 쀊; 쀊; ) HANGUL SYLLABLE BBWENH
+C00B;C00B;1108 1170 11AE;C00B;1108 1170 11AE; # (쀋; 쀋; 쀋; 쀋; 쀋; ) HANGUL SYLLABLE BBWED
+C00C;C00C;1108 1170 11AF;C00C;1108 1170 11AF; # (쀌; 쀌; 쀌; 쀌; 쀌; ) HANGUL SYLLABLE BBWEL
+C00D;C00D;1108 1170 11B0;C00D;1108 1170 11B0; # (ì€; ì€; 쀍; ì€; 쀍; ) HANGUL SYLLABLE BBWELG
+C00E;C00E;1108 1170 11B1;C00E;1108 1170 11B1; # (쀎; 쀎; 쀎; 쀎; 쀎; ) HANGUL SYLLABLE BBWELM
+C00F;C00F;1108 1170 11B2;C00F;1108 1170 11B2; # (ì€; ì€; 쀏; ì€; 쀏; ) HANGUL SYLLABLE BBWELB
+C010;C010;1108 1170 11B3;C010;1108 1170 11B3; # (ì€; ì€; 쀐; ì€; 쀐; ) HANGUL SYLLABLE BBWELS
+C011;C011;1108 1170 11B4;C011;1108 1170 11B4; # (쀑; 쀑; 쀑; 쀑; 쀑; ) HANGUL SYLLABLE BBWELT
+C012;C012;1108 1170 11B5;C012;1108 1170 11B5; # (쀒; 쀒; 쀒; 쀒; 쀒; ) HANGUL SYLLABLE BBWELP
+C013;C013;1108 1170 11B6;C013;1108 1170 11B6; # (쀓; 쀓; 쀓; 쀓; 쀓; ) HANGUL SYLLABLE BBWELH
+C014;C014;1108 1170 11B7;C014;1108 1170 11B7; # (쀔; 쀔; 쀔; 쀔; 쀔; ) HANGUL SYLLABLE BBWEM
+C015;C015;1108 1170 11B8;C015;1108 1170 11B8; # (쀕; 쀕; 쀕; 쀕; 쀕; ) HANGUL SYLLABLE BBWEB
+C016;C016;1108 1170 11B9;C016;1108 1170 11B9; # (쀖; 쀖; 쀖; 쀖; 쀖; ) HANGUL SYLLABLE BBWEBS
+C017;C017;1108 1170 11BA;C017;1108 1170 11BA; # (쀗; 쀗; 쀗; 쀗; 쀗; ) HANGUL SYLLABLE BBWES
+C018;C018;1108 1170 11BB;C018;1108 1170 11BB; # (쀘; 쀘; 쀘; 쀘; 쀘; ) HANGUL SYLLABLE BBWESS
+C019;C019;1108 1170 11BC;C019;1108 1170 11BC; # (쀙; 쀙; 쀙; 쀙; 쀙; ) HANGUL SYLLABLE BBWENG
+C01A;C01A;1108 1170 11BD;C01A;1108 1170 11BD; # (쀚; 쀚; 쀚; 쀚; 쀚; ) HANGUL SYLLABLE BBWEJ
+C01B;C01B;1108 1170 11BE;C01B;1108 1170 11BE; # (쀛; 쀛; 쀛; 쀛; 쀛; ) HANGUL SYLLABLE BBWEC
+C01C;C01C;1108 1170 11BF;C01C;1108 1170 11BF; # (쀜; 쀜; 쀜; 쀜; 쀜; ) HANGUL SYLLABLE BBWEK
+C01D;C01D;1108 1170 11C0;C01D;1108 1170 11C0; # (ì€; ì€; 쀝; ì€; 쀝; ) HANGUL SYLLABLE BBWET
+C01E;C01E;1108 1170 11C1;C01E;1108 1170 11C1; # (쀞; 쀞; 쀄á‡; 쀞; 쀄á‡; ) HANGUL SYLLABLE BBWEP
+C01F;C01F;1108 1170 11C2;C01F;1108 1170 11C2; # (쀟; 쀟; 쀟; 쀟; 쀟; ) HANGUL SYLLABLE BBWEH
+C020;C020;1108 1171;C020;1108 1171; # (쀠; 쀠; 쀠; 쀠; 쀠; ) HANGUL SYLLABLE BBWI
+C021;C021;1108 1171 11A8;C021;1108 1171 11A8; # (쀡; 쀡; 쀡; 쀡; 쀡; ) HANGUL SYLLABLE BBWIG
+C022;C022;1108 1171 11A9;C022;1108 1171 11A9; # (쀢; 쀢; 쀢; 쀢; 쀢; ) HANGUL SYLLABLE BBWIGG
+C023;C023;1108 1171 11AA;C023;1108 1171 11AA; # (쀣; 쀣; 쀣; 쀣; 쀣; ) HANGUL SYLLABLE BBWIGS
+C024;C024;1108 1171 11AB;C024;1108 1171 11AB; # (쀤; 쀤; 쀤; 쀤; 쀤; ) HANGUL SYLLABLE BBWIN
+C025;C025;1108 1171 11AC;C025;1108 1171 11AC; # (쀥; 쀥; 쀥; 쀥; 쀥; ) HANGUL SYLLABLE BBWINJ
+C026;C026;1108 1171 11AD;C026;1108 1171 11AD; # (쀦; 쀦; 쀦; 쀦; 쀦; ) HANGUL SYLLABLE BBWINH
+C027;C027;1108 1171 11AE;C027;1108 1171 11AE; # (쀧; 쀧; 쀧; 쀧; 쀧; ) HANGUL SYLLABLE BBWID
+C028;C028;1108 1171 11AF;C028;1108 1171 11AF; # (쀨; 쀨; 쀨; 쀨; 쀨; ) HANGUL SYLLABLE BBWIL
+C029;C029;1108 1171 11B0;C029;1108 1171 11B0; # (쀩; 쀩; 쀩; 쀩; 쀩; ) HANGUL SYLLABLE BBWILG
+C02A;C02A;1108 1171 11B1;C02A;1108 1171 11B1; # (쀪; 쀪; 쀪; 쀪; 쀪; ) HANGUL SYLLABLE BBWILM
+C02B;C02B;1108 1171 11B2;C02B;1108 1171 11B2; # (쀫; 쀫; 쀫; 쀫; 쀫; ) HANGUL SYLLABLE BBWILB
+C02C;C02C;1108 1171 11B3;C02C;1108 1171 11B3; # (쀬; 쀬; 쀬; 쀬; 쀬; ) HANGUL SYLLABLE BBWILS
+C02D;C02D;1108 1171 11B4;C02D;1108 1171 11B4; # (쀭; 쀭; 쀭; 쀭; 쀭; ) HANGUL SYLLABLE BBWILT
+C02E;C02E;1108 1171 11B5;C02E;1108 1171 11B5; # (쀮; 쀮; 쀮; 쀮; 쀮; ) HANGUL SYLLABLE BBWILP
+C02F;C02F;1108 1171 11B6;C02F;1108 1171 11B6; # (쀯; 쀯; 쀯; 쀯; 쀯; ) HANGUL SYLLABLE BBWILH
+C030;C030;1108 1171 11B7;C030;1108 1171 11B7; # (쀰; 쀰; 쀰; 쀰; 쀰; ) HANGUL SYLLABLE BBWIM
+C031;C031;1108 1171 11B8;C031;1108 1171 11B8; # (쀱; 쀱; 쀱; 쀱; 쀱; ) HANGUL SYLLABLE BBWIB
+C032;C032;1108 1171 11B9;C032;1108 1171 11B9; # (쀲; 쀲; 쀲; 쀲; 쀲; ) HANGUL SYLLABLE BBWIBS
+C033;C033;1108 1171 11BA;C033;1108 1171 11BA; # (쀳; 쀳; 쀳; 쀳; 쀳; ) HANGUL SYLLABLE BBWIS
+C034;C034;1108 1171 11BB;C034;1108 1171 11BB; # (쀴; 쀴; 쀴; 쀴; 쀴; ) HANGUL SYLLABLE BBWISS
+C035;C035;1108 1171 11BC;C035;1108 1171 11BC; # (쀵; 쀵; 쀵; 쀵; 쀵; ) HANGUL SYLLABLE BBWING
+C036;C036;1108 1171 11BD;C036;1108 1171 11BD; # (쀶; 쀶; 쀶; 쀶; 쀶; ) HANGUL SYLLABLE BBWIJ
+C037;C037;1108 1171 11BE;C037;1108 1171 11BE; # (쀷; 쀷; 쀷; 쀷; 쀷; ) HANGUL SYLLABLE BBWIC
+C038;C038;1108 1171 11BF;C038;1108 1171 11BF; # (쀸; 쀸; 쀸; 쀸; 쀸; ) HANGUL SYLLABLE BBWIK
+C039;C039;1108 1171 11C0;C039;1108 1171 11C0; # (쀹; 쀹; 쀹; 쀹; 쀹; ) HANGUL SYLLABLE BBWIT
+C03A;C03A;1108 1171 11C1;C03A;1108 1171 11C1; # (쀺; 쀺; 쀠á‡; 쀺; 쀠á‡; ) HANGUL SYLLABLE BBWIP
+C03B;C03B;1108 1171 11C2;C03B;1108 1171 11C2; # (쀻; 쀻; 쀻; 쀻; 쀻; ) HANGUL SYLLABLE BBWIH
+C03C;C03C;1108 1172;C03C;1108 1172; # (쀼; 쀼; 쀼; 쀼; 쀼; ) HANGUL SYLLABLE BBYU
+C03D;C03D;1108 1172 11A8;C03D;1108 1172 11A8; # (쀽; 쀽; 쀽; 쀽; 쀽; ) HANGUL SYLLABLE BBYUG
+C03E;C03E;1108 1172 11A9;C03E;1108 1172 11A9; # (쀾; 쀾; 쀾; 쀾; 쀾; ) HANGUL SYLLABLE BBYUGG
+C03F;C03F;1108 1172 11AA;C03F;1108 1172 11AA; # (쀿; 쀿; 쀿; 쀿; 쀿; ) HANGUL SYLLABLE BBYUGS
+C040;C040;1108 1172 11AB;C040;1108 1172 11AB; # (ì€; ì€; 쁀; ì€; 쁀; ) HANGUL SYLLABLE BBYUN
+C041;C041;1108 1172 11AC;C041;1108 1172 11AC; # (ì; ì; 쁁; ì; 쁁; ) HANGUL SYLLABLE BBYUNJ
+C042;C042;1108 1172 11AD;C042;1108 1172 11AD; # (ì‚; ì‚; 쁂; ì‚; 쁂; ) HANGUL SYLLABLE BBYUNH
+C043;C043;1108 1172 11AE;C043;1108 1172 11AE; # (ìƒ; ìƒ; 쁃; ìƒ; 쁃; ) HANGUL SYLLABLE BBYUD
+C044;C044;1108 1172 11AF;C044;1108 1172 11AF; # (ì„; ì„; 쁄; ì„; 쁄; ) HANGUL SYLLABLE BBYUL
+C045;C045;1108 1172 11B0;C045;1108 1172 11B0; # (ì…; ì…; 쁅; ì…; 쁅; ) HANGUL SYLLABLE BBYULG
+C046;C046;1108 1172 11B1;C046;1108 1172 11B1; # (ì†; ì†; 쁆; ì†; 쁆; ) HANGUL SYLLABLE BBYULM
+C047;C047;1108 1172 11B2;C047;1108 1172 11B2; # (ì‡; ì‡; 쁇; ì‡; 쁇; ) HANGUL SYLLABLE BBYULB
+C048;C048;1108 1172 11B3;C048;1108 1172 11B3; # (ìˆ; ìˆ; 쁈; ìˆ; 쁈; ) HANGUL SYLLABLE BBYULS
+C049;C049;1108 1172 11B4;C049;1108 1172 11B4; # (ì‰; ì‰; 쁉; ì‰; 쁉; ) HANGUL SYLLABLE BBYULT
+C04A;C04A;1108 1172 11B5;C04A;1108 1172 11B5; # (ìŠ; ìŠ; 쁊; ìŠ; 쁊; ) HANGUL SYLLABLE BBYULP
+C04B;C04B;1108 1172 11B6;C04B;1108 1172 11B6; # (ì‹; ì‹; 쁋; ì‹; 쁋; ) HANGUL SYLLABLE BBYULH
+C04C;C04C;1108 1172 11B7;C04C;1108 1172 11B7; # (ìŒ; ìŒ; 쁌; ìŒ; 쁌; ) HANGUL SYLLABLE BBYUM
+C04D;C04D;1108 1172 11B8;C04D;1108 1172 11B8; # (ì; ì; 쁍; ì; 쁍; ) HANGUL SYLLABLE BBYUB
+C04E;C04E;1108 1172 11B9;C04E;1108 1172 11B9; # (ìŽ; ìŽ; 쁎; ìŽ; 쁎; ) HANGUL SYLLABLE BBYUBS
+C04F;C04F;1108 1172 11BA;C04F;1108 1172 11BA; # (ì; ì; 쁏; ì; 쁏; ) HANGUL SYLLABLE BBYUS
+C050;C050;1108 1172 11BB;C050;1108 1172 11BB; # (ì; ì; 쁐; ì; 쁐; ) HANGUL SYLLABLE BBYUSS
+C051;C051;1108 1172 11BC;C051;1108 1172 11BC; # (ì‘; ì‘; 쁑; ì‘; 쁑; ) HANGUL SYLLABLE BBYUNG
+C052;C052;1108 1172 11BD;C052;1108 1172 11BD; # (ì’; ì’; 쁒; ì’; 쁒; ) HANGUL SYLLABLE BBYUJ
+C053;C053;1108 1172 11BE;C053;1108 1172 11BE; # (ì“; ì“; 쁓; ì“; 쁓; ) HANGUL SYLLABLE BBYUC
+C054;C054;1108 1172 11BF;C054;1108 1172 11BF; # (ì”; ì”; 쁔; ì”; 쁔; ) HANGUL SYLLABLE BBYUK
+C055;C055;1108 1172 11C0;C055;1108 1172 11C0; # (ì•; ì•; 쁕; ì•; 쁕; ) HANGUL SYLLABLE BBYUT
+C056;C056;1108 1172 11C1;C056;1108 1172 11C1; # (ì–; ì–; 쀼á‡; ì–; 쀼á‡; ) HANGUL SYLLABLE BBYUP
+C057;C057;1108 1172 11C2;C057;1108 1172 11C2; # (ì—; ì—; 쁗; ì—; 쁗; ) HANGUL SYLLABLE BBYUH
+C058;C058;1108 1173;C058;1108 1173; # (ì˜; ì˜; 쁘; ì˜; 쁘; ) HANGUL SYLLABLE BBEU
+C059;C059;1108 1173 11A8;C059;1108 1173 11A8; # (ì™; ì™; 쁙; ì™; 쁙; ) HANGUL SYLLABLE BBEUG
+C05A;C05A;1108 1173 11A9;C05A;1108 1173 11A9; # (ìš; ìš; 쁚; ìš; 쁚; ) HANGUL SYLLABLE BBEUGG
+C05B;C05B;1108 1173 11AA;C05B;1108 1173 11AA; # (ì›; ì›; 쁛; ì›; 쁛; ) HANGUL SYLLABLE BBEUGS
+C05C;C05C;1108 1173 11AB;C05C;1108 1173 11AB; # (ìœ; ìœ; 쁜; ìœ; 쁜; ) HANGUL SYLLABLE BBEUN
+C05D;C05D;1108 1173 11AC;C05D;1108 1173 11AC; # (ì; ì; 쁝; ì; 쁝; ) HANGUL SYLLABLE BBEUNJ
+C05E;C05E;1108 1173 11AD;C05E;1108 1173 11AD; # (ìž; ìž; 쁞; ìž; 쁞; ) HANGUL SYLLABLE BBEUNH
+C05F;C05F;1108 1173 11AE;C05F;1108 1173 11AE; # (ìŸ; ìŸ; 쁟; ìŸ; 쁟; ) HANGUL SYLLABLE BBEUD
+C060;C060;1108 1173 11AF;C060;1108 1173 11AF; # (ì ; ì ; 쁠; ì ; 쁠; ) HANGUL SYLLABLE BBEUL
+C061;C061;1108 1173 11B0;C061;1108 1173 11B0; # (ì¡; ì¡; 쁡; ì¡; 쁡; ) HANGUL SYLLABLE BBEULG
+C062;C062;1108 1173 11B1;C062;1108 1173 11B1; # (ì¢; ì¢; 쁢; ì¢; 쁢; ) HANGUL SYLLABLE BBEULM
+C063;C063;1108 1173 11B2;C063;1108 1173 11B2; # (ì£; ì£; 쁣; ì£; 쁣; ) HANGUL SYLLABLE BBEULB
+C064;C064;1108 1173 11B3;C064;1108 1173 11B3; # (ì¤; ì¤; 쁤; ì¤; 쁤; ) HANGUL SYLLABLE BBEULS
+C065;C065;1108 1173 11B4;C065;1108 1173 11B4; # (ì¥; ì¥; 쁥; ì¥; 쁥; ) HANGUL SYLLABLE BBEULT
+C066;C066;1108 1173 11B5;C066;1108 1173 11B5; # (ì¦; ì¦; 쁦; ì¦; 쁦; ) HANGUL SYLLABLE BBEULP
+C067;C067;1108 1173 11B6;C067;1108 1173 11B6; # (ì§; ì§; 쁧; ì§; 쁧; ) HANGUL SYLLABLE BBEULH
+C068;C068;1108 1173 11B7;C068;1108 1173 11B7; # (ì¨; ì¨; 쁨; ì¨; 쁨; ) HANGUL SYLLABLE BBEUM
+C069;C069;1108 1173 11B8;C069;1108 1173 11B8; # (ì©; ì©; 쁩; ì©; 쁩; ) HANGUL SYLLABLE BBEUB
+C06A;C06A;1108 1173 11B9;C06A;1108 1173 11B9; # (ìª; ìª; 쁪; ìª; 쁪; ) HANGUL SYLLABLE BBEUBS
+C06B;C06B;1108 1173 11BA;C06B;1108 1173 11BA; # (ì«; ì«; 쁫; ì«; 쁫; ) HANGUL SYLLABLE BBEUS
+C06C;C06C;1108 1173 11BB;C06C;1108 1173 11BB; # (ì¬; ì¬; 쁬; ì¬; 쁬; ) HANGUL SYLLABLE BBEUSS
+C06D;C06D;1108 1173 11BC;C06D;1108 1173 11BC; # (ì­; ì­; 쁭; ì­; 쁭; ) HANGUL SYLLABLE BBEUNG
+C06E;C06E;1108 1173 11BD;C06E;1108 1173 11BD; # (ì®; ì®; 쁮; ì®; 쁮; ) HANGUL SYLLABLE BBEUJ
+C06F;C06F;1108 1173 11BE;C06F;1108 1173 11BE; # (ì¯; ì¯; 쁯; ì¯; 쁯; ) HANGUL SYLLABLE BBEUC
+C070;C070;1108 1173 11BF;C070;1108 1173 11BF; # (ì°; ì°; 쁰; ì°; 쁰; ) HANGUL SYLLABLE BBEUK
+C071;C071;1108 1173 11C0;C071;1108 1173 11C0; # (ì±; ì±; 쁱; ì±; 쁱; ) HANGUL SYLLABLE BBEUT
+C072;C072;1108 1173 11C1;C072;1108 1173 11C1; # (ì²; ì²; 쁘á‡; ì²; 쁘á‡; ) HANGUL SYLLABLE BBEUP
+C073;C073;1108 1173 11C2;C073;1108 1173 11C2; # (ì³; ì³; 쁳; ì³; 쁳; ) HANGUL SYLLABLE BBEUH
+C074;C074;1108 1174;C074;1108 1174; # (ì´; ì´; 쁴; ì´; 쁴; ) HANGUL SYLLABLE BBYI
+C075;C075;1108 1174 11A8;C075;1108 1174 11A8; # (ìµ; ìµ; 쁵; ìµ; 쁵; ) HANGUL SYLLABLE BBYIG
+C076;C076;1108 1174 11A9;C076;1108 1174 11A9; # (ì¶; ì¶; 쁶; ì¶; 쁶; ) HANGUL SYLLABLE BBYIGG
+C077;C077;1108 1174 11AA;C077;1108 1174 11AA; # (ì·; ì·; 쁷; ì·; 쁷; ) HANGUL SYLLABLE BBYIGS
+C078;C078;1108 1174 11AB;C078;1108 1174 11AB; # (ì¸; ì¸; 쁸; ì¸; 쁸; ) HANGUL SYLLABLE BBYIN
+C079;C079;1108 1174 11AC;C079;1108 1174 11AC; # (ì¹; ì¹; 쁹; ì¹; 쁹; ) HANGUL SYLLABLE BBYINJ
+C07A;C07A;1108 1174 11AD;C07A;1108 1174 11AD; # (ìº; ìº; 쁺; ìº; 쁺; ) HANGUL SYLLABLE BBYINH
+C07B;C07B;1108 1174 11AE;C07B;1108 1174 11AE; # (ì»; ì»; 쁻; ì»; 쁻; ) HANGUL SYLLABLE BBYID
+C07C;C07C;1108 1174 11AF;C07C;1108 1174 11AF; # (ì¼; ì¼; 쁼; ì¼; 쁼; ) HANGUL SYLLABLE BBYIL
+C07D;C07D;1108 1174 11B0;C07D;1108 1174 11B0; # (ì½; ì½; 쁽; ì½; 쁽; ) HANGUL SYLLABLE BBYILG
+C07E;C07E;1108 1174 11B1;C07E;1108 1174 11B1; # (ì¾; ì¾; 쁾; ì¾; 쁾; ) HANGUL SYLLABLE BBYILM
+C07F;C07F;1108 1174 11B2;C07F;1108 1174 11B2; # (ì¿; ì¿; 쁿; ì¿; 쁿; ) HANGUL SYLLABLE BBYILB
+C080;C080;1108 1174 11B3;C080;1108 1174 11B3; # (삀; 삀; 삀; 삀; 삀; ) HANGUL SYLLABLE BBYILS
+C081;C081;1108 1174 11B4;C081;1108 1174 11B4; # (ì‚; ì‚; 삁; ì‚; 삁; ) HANGUL SYLLABLE BBYILT
+C082;C082;1108 1174 11B5;C082;1108 1174 11B5; # (삂; 삂; 삂; 삂; 삂; ) HANGUL SYLLABLE BBYILP
+C083;C083;1108 1174 11B6;C083;1108 1174 11B6; # (삃; 삃; 삃; 삃; 삃; ) HANGUL SYLLABLE BBYILH
+C084;C084;1108 1174 11B7;C084;1108 1174 11B7; # (삄; 삄; 삄; 삄; 삄; ) HANGUL SYLLABLE BBYIM
+C085;C085;1108 1174 11B8;C085;1108 1174 11B8; # (삅; 삅; 삅; 삅; 삅; ) HANGUL SYLLABLE BBYIB
+C086;C086;1108 1174 11B9;C086;1108 1174 11B9; # (삆; 삆; 삆; 삆; 삆; ) HANGUL SYLLABLE BBYIBS
+C087;C087;1108 1174 11BA;C087;1108 1174 11BA; # (삇; 삇; 삇; 삇; 삇; ) HANGUL SYLLABLE BBYIS
+C088;C088;1108 1174 11BB;C088;1108 1174 11BB; # (삈; 삈; 삈; 삈; 삈; ) HANGUL SYLLABLE BBYISS
+C089;C089;1108 1174 11BC;C089;1108 1174 11BC; # (삉; 삉; 삉; 삉; 삉; ) HANGUL SYLLABLE BBYING
+C08A;C08A;1108 1174 11BD;C08A;1108 1174 11BD; # (삊; 삊; 삊; 삊; 삊; ) HANGUL SYLLABLE BBYIJ
+C08B;C08B;1108 1174 11BE;C08B;1108 1174 11BE; # (삋; 삋; 삋; 삋; 삋; ) HANGUL SYLLABLE BBYIC
+C08C;C08C;1108 1174 11BF;C08C;1108 1174 11BF; # (삌; 삌; 삌; 삌; 삌; ) HANGUL SYLLABLE BBYIK
+C08D;C08D;1108 1174 11C0;C08D;1108 1174 11C0; # (ì‚; ì‚; 삍; ì‚; 삍; ) HANGUL SYLLABLE BBYIT
+C08E;C08E;1108 1174 11C1;C08E;1108 1174 11C1; # (ì‚Ž; ì‚Ž; 쁴á‡; ì‚Ž; 쁴á‡; ) HANGUL SYLLABLE BBYIP
+C08F;C08F;1108 1174 11C2;C08F;1108 1174 11C2; # (ì‚; ì‚; 삏; ì‚; 삏; ) HANGUL SYLLABLE BBYIH
+C090;C090;1108 1175;C090;1108 1175; # (ì‚; ì‚; 삐; ì‚; 삐; ) HANGUL SYLLABLE BBI
+C091;C091;1108 1175 11A8;C091;1108 1175 11A8; # (삑; 삑; 삑; 삑; 삑; ) HANGUL SYLLABLE BBIG
+C092;C092;1108 1175 11A9;C092;1108 1175 11A9; # (삒; 삒; 삒; 삒; 삒; ) HANGUL SYLLABLE BBIGG
+C093;C093;1108 1175 11AA;C093;1108 1175 11AA; # (삓; 삓; 삓; 삓; 삓; ) HANGUL SYLLABLE BBIGS
+C094;C094;1108 1175 11AB;C094;1108 1175 11AB; # (삔; 삔; 삔; 삔; 삔; ) HANGUL SYLLABLE BBIN
+C095;C095;1108 1175 11AC;C095;1108 1175 11AC; # (삕; 삕; 삕; 삕; 삕; ) HANGUL SYLLABLE BBINJ
+C096;C096;1108 1175 11AD;C096;1108 1175 11AD; # (삖; 삖; 삖; 삖; 삖; ) HANGUL SYLLABLE BBINH
+C097;C097;1108 1175 11AE;C097;1108 1175 11AE; # (삗; 삗; 삗; 삗; 삗; ) HANGUL SYLLABLE BBID
+C098;C098;1108 1175 11AF;C098;1108 1175 11AF; # (삘; 삘; 삘; 삘; 삘; ) HANGUL SYLLABLE BBIL
+C099;C099;1108 1175 11B0;C099;1108 1175 11B0; # (삙; 삙; 삙; 삙; 삙; ) HANGUL SYLLABLE BBILG
+C09A;C09A;1108 1175 11B1;C09A;1108 1175 11B1; # (삚; 삚; 삚; 삚; 삚; ) HANGUL SYLLABLE BBILM
+C09B;C09B;1108 1175 11B2;C09B;1108 1175 11B2; # (삛; 삛; 삛; 삛; 삛; ) HANGUL SYLLABLE BBILB
+C09C;C09C;1108 1175 11B3;C09C;1108 1175 11B3; # (삜; 삜; 삜; 삜; 삜; ) HANGUL SYLLABLE BBILS
+C09D;C09D;1108 1175 11B4;C09D;1108 1175 11B4; # (ì‚; ì‚; 삝; ì‚; 삝; ) HANGUL SYLLABLE BBILT
+C09E;C09E;1108 1175 11B5;C09E;1108 1175 11B5; # (삞; 삞; 삞; 삞; 삞; ) HANGUL SYLLABLE BBILP
+C09F;C09F;1108 1175 11B6;C09F;1108 1175 11B6; # (삟; 삟; 삟; 삟; 삟; ) HANGUL SYLLABLE BBILH
+C0A0;C0A0;1108 1175 11B7;C0A0;1108 1175 11B7; # (삠; 삠; 삠; 삠; 삠; ) HANGUL SYLLABLE BBIM
+C0A1;C0A1;1108 1175 11B8;C0A1;1108 1175 11B8; # (삡; 삡; 삡; 삡; 삡; ) HANGUL SYLLABLE BBIB
+C0A2;C0A2;1108 1175 11B9;C0A2;1108 1175 11B9; # (삢; 삢; 삢; 삢; 삢; ) HANGUL SYLLABLE BBIBS
+C0A3;C0A3;1108 1175 11BA;C0A3;1108 1175 11BA; # (삣; 삣; 삣; 삣; 삣; ) HANGUL SYLLABLE BBIS
+C0A4;C0A4;1108 1175 11BB;C0A4;1108 1175 11BB; # (삤; 삤; 삤; 삤; 삤; ) HANGUL SYLLABLE BBISS
+C0A5;C0A5;1108 1175 11BC;C0A5;1108 1175 11BC; # (삥; 삥; 삥; 삥; 삥; ) HANGUL SYLLABLE BBING
+C0A6;C0A6;1108 1175 11BD;C0A6;1108 1175 11BD; # (삦; 삦; 삦; 삦; 삦; ) HANGUL SYLLABLE BBIJ
+C0A7;C0A7;1108 1175 11BE;C0A7;1108 1175 11BE; # (삧; 삧; 삧; 삧; 삧; ) HANGUL SYLLABLE BBIC
+C0A8;C0A8;1108 1175 11BF;C0A8;1108 1175 11BF; # (삨; 삨; 삨; 삨; 삨; ) HANGUL SYLLABLE BBIK
+C0A9;C0A9;1108 1175 11C0;C0A9;1108 1175 11C0; # (삩; 삩; 삩; 삩; 삩; ) HANGUL SYLLABLE BBIT
+C0AA;C0AA;1108 1175 11C1;C0AA;1108 1175 11C1; # (삪; 삪; 삐á‡; 삪; 삐á‡; ) HANGUL SYLLABLE BBIP
+C0AB;C0AB;1108 1175 11C2;C0AB;1108 1175 11C2; # (삫; 삫; 삫; 삫; 삫; ) HANGUL SYLLABLE BBIH
+C0AC;C0AC;1109 1161;C0AC;1109 1161; # (사; 사; 사; 사; 사; ) HANGUL SYLLABLE SA
+C0AD;C0AD;1109 1161 11A8;C0AD;1109 1161 11A8; # (삭; 삭; 삭; 삭; 삭; ) HANGUL SYLLABLE SAG
+C0AE;C0AE;1109 1161 11A9;C0AE;1109 1161 11A9; # (삮; 삮; 삮; 삮; 삮; ) HANGUL SYLLABLE SAGG
+C0AF;C0AF;1109 1161 11AA;C0AF;1109 1161 11AA; # (삯; 삯; 삯; 삯; 삯; ) HANGUL SYLLABLE SAGS
+C0B0;C0B0;1109 1161 11AB;C0B0;1109 1161 11AB; # (산; 산; 산; 산; 산; ) HANGUL SYLLABLE SAN
+C0B1;C0B1;1109 1161 11AC;C0B1;1109 1161 11AC; # (삱; 삱; 삱; 삱; 삱; ) HANGUL SYLLABLE SANJ
+C0B2;C0B2;1109 1161 11AD;C0B2;1109 1161 11AD; # (삲; 삲; 삲; 삲; 삲; ) HANGUL SYLLABLE SANH
+C0B3;C0B3;1109 1161 11AE;C0B3;1109 1161 11AE; # (삳; 삳; 삳; 삳; 삳; ) HANGUL SYLLABLE SAD
+C0B4;C0B4;1109 1161 11AF;C0B4;1109 1161 11AF; # (살; 살; 살; 살; 살; ) HANGUL SYLLABLE SAL
+C0B5;C0B5;1109 1161 11B0;C0B5;1109 1161 11B0; # (삵; 삵; 삵; 삵; 삵; ) HANGUL SYLLABLE SALG
+C0B6;C0B6;1109 1161 11B1;C0B6;1109 1161 11B1; # (삶; 삶; 삶; 삶; 삶; ) HANGUL SYLLABLE SALM
+C0B7;C0B7;1109 1161 11B2;C0B7;1109 1161 11B2; # (삷; 삷; 삷; 삷; 삷; ) HANGUL SYLLABLE SALB
+C0B8;C0B8;1109 1161 11B3;C0B8;1109 1161 11B3; # (삸; 삸; 삸; 삸; 삸; ) HANGUL SYLLABLE SALS
+C0B9;C0B9;1109 1161 11B4;C0B9;1109 1161 11B4; # (삹; 삹; 삹; 삹; 삹; ) HANGUL SYLLABLE SALT
+C0BA;C0BA;1109 1161 11B5;C0BA;1109 1161 11B5; # (삺; 삺; 삺; 삺; 삺; ) HANGUL SYLLABLE SALP
+C0BB;C0BB;1109 1161 11B6;C0BB;1109 1161 11B6; # (삻; 삻; 삻; 삻; 삻; ) HANGUL SYLLABLE SALH
+C0BC;C0BC;1109 1161 11B7;C0BC;1109 1161 11B7; # (삼; 삼; 삼; 삼; 삼; ) HANGUL SYLLABLE SAM
+C0BD;C0BD;1109 1161 11B8;C0BD;1109 1161 11B8; # (삽; 삽; 삽; 삽; 삽; ) HANGUL SYLLABLE SAB
+C0BE;C0BE;1109 1161 11B9;C0BE;1109 1161 11B9; # (삾; 삾; 삾; 삾; 삾; ) HANGUL SYLLABLE SABS
+C0BF;C0BF;1109 1161 11BA;C0BF;1109 1161 11BA; # (삿; 삿; 삿; 삿; 삿; ) HANGUL SYLLABLE SAS
+C0C0;C0C0;1109 1161 11BB;C0C0;1109 1161 11BB; # (샀; 샀; 샀; 샀; 샀; ) HANGUL SYLLABLE SASS
+C0C1;C0C1;1109 1161 11BC;C0C1;1109 1161 11BC; # (ìƒ; ìƒ; 상; ìƒ; 상; ) HANGUL SYLLABLE SANG
+C0C2;C0C2;1109 1161 11BD;C0C2;1109 1161 11BD; # (샂; 샂; 샂; 샂; 샂; ) HANGUL SYLLABLE SAJ
+C0C3;C0C3;1109 1161 11BE;C0C3;1109 1161 11BE; # (샃; 샃; 샃; 샃; 샃; ) HANGUL SYLLABLE SAC
+C0C4;C0C4;1109 1161 11BF;C0C4;1109 1161 11BF; # (샄; 샄; 샄; 샄; 샄; ) HANGUL SYLLABLE SAK
+C0C5;C0C5;1109 1161 11C0;C0C5;1109 1161 11C0; # (샅; 샅; 샅; 샅; 샅; ) HANGUL SYLLABLE SAT
+C0C6;C0C6;1109 1161 11C1;C0C6;1109 1161 11C1; # (샆; 샆; 사á‡; 샆; 사á‡; ) HANGUL SYLLABLE SAP
+C0C7;C0C7;1109 1161 11C2;C0C7;1109 1161 11C2; # (샇; 샇; 샇; 샇; 샇; ) HANGUL SYLLABLE SAH
+C0C8;C0C8;1109 1162;C0C8;1109 1162; # (새; 새; 새; 새; 새; ) HANGUL SYLLABLE SAE
+C0C9;C0C9;1109 1162 11A8;C0C9;1109 1162 11A8; # (색; 색; 색; 색; 색; ) HANGUL SYLLABLE SAEG
+C0CA;C0CA;1109 1162 11A9;C0CA;1109 1162 11A9; # (샊; 샊; 샊; 샊; 샊; ) HANGUL SYLLABLE SAEGG
+C0CB;C0CB;1109 1162 11AA;C0CB;1109 1162 11AA; # (샋; 샋; 샋; 샋; 샋; ) HANGUL SYLLABLE SAEGS
+C0CC;C0CC;1109 1162 11AB;C0CC;1109 1162 11AB; # (샌; 샌; 샌; 샌; 샌; ) HANGUL SYLLABLE SAEN
+C0CD;C0CD;1109 1162 11AC;C0CD;1109 1162 11AC; # (ìƒ; ìƒ; 샍; ìƒ; 샍; ) HANGUL SYLLABLE SAENJ
+C0CE;C0CE;1109 1162 11AD;C0CE;1109 1162 11AD; # (샎; 샎; 샎; 샎; 샎; ) HANGUL SYLLABLE SAENH
+C0CF;C0CF;1109 1162 11AE;C0CF;1109 1162 11AE; # (ìƒ; ìƒ; 샏; ìƒ; 샏; ) HANGUL SYLLABLE SAED
+C0D0;C0D0;1109 1162 11AF;C0D0;1109 1162 11AF; # (ìƒ; ìƒ; 샐; ìƒ; 샐; ) HANGUL SYLLABLE SAEL
+C0D1;C0D1;1109 1162 11B0;C0D1;1109 1162 11B0; # (샑; 샑; 샑; 샑; 샑; ) HANGUL SYLLABLE SAELG
+C0D2;C0D2;1109 1162 11B1;C0D2;1109 1162 11B1; # (샒; 샒; 샒; 샒; 샒; ) HANGUL SYLLABLE SAELM
+C0D3;C0D3;1109 1162 11B2;C0D3;1109 1162 11B2; # (샓; 샓; 샓; 샓; 샓; ) HANGUL SYLLABLE SAELB
+C0D4;C0D4;1109 1162 11B3;C0D4;1109 1162 11B3; # (샔; 샔; 샔; 샔; 샔; ) HANGUL SYLLABLE SAELS
+C0D5;C0D5;1109 1162 11B4;C0D5;1109 1162 11B4; # (샕; 샕; 샕; 샕; 샕; ) HANGUL SYLLABLE SAELT
+C0D6;C0D6;1109 1162 11B5;C0D6;1109 1162 11B5; # (샖; 샖; 샖; 샖; 샖; ) HANGUL SYLLABLE SAELP
+C0D7;C0D7;1109 1162 11B6;C0D7;1109 1162 11B6; # (샗; 샗; 샗; 샗; 샗; ) HANGUL SYLLABLE SAELH
+C0D8;C0D8;1109 1162 11B7;C0D8;1109 1162 11B7; # (샘; 샘; 샘; 샘; 샘; ) HANGUL SYLLABLE SAEM
+C0D9;C0D9;1109 1162 11B8;C0D9;1109 1162 11B8; # (샙; 샙; 샙; 샙; 샙; ) HANGUL SYLLABLE SAEB
+C0DA;C0DA;1109 1162 11B9;C0DA;1109 1162 11B9; # (샚; 샚; 샚; 샚; 샚; ) HANGUL SYLLABLE SAEBS
+C0DB;C0DB;1109 1162 11BA;C0DB;1109 1162 11BA; # (샛; 샛; 샛; 샛; 샛; ) HANGUL SYLLABLE SAES
+C0DC;C0DC;1109 1162 11BB;C0DC;1109 1162 11BB; # (샜; 샜; 샜; 샜; 샜; ) HANGUL SYLLABLE SAESS
+C0DD;C0DD;1109 1162 11BC;C0DD;1109 1162 11BC; # (ìƒ; ìƒ; 생; ìƒ; 생; ) HANGUL SYLLABLE SAENG
+C0DE;C0DE;1109 1162 11BD;C0DE;1109 1162 11BD; # (샞; 샞; 샞; 샞; 샞; ) HANGUL SYLLABLE SAEJ
+C0DF;C0DF;1109 1162 11BE;C0DF;1109 1162 11BE; # (샟; 샟; 샟; 샟; 샟; ) HANGUL SYLLABLE SAEC
+C0E0;C0E0;1109 1162 11BF;C0E0;1109 1162 11BF; # (샠; 샠; 샠; 샠; 샠; ) HANGUL SYLLABLE SAEK
+C0E1;C0E1;1109 1162 11C0;C0E1;1109 1162 11C0; # (샡; 샡; 샡; 샡; 샡; ) HANGUL SYLLABLE SAET
+C0E2;C0E2;1109 1162 11C1;C0E2;1109 1162 11C1; # (샢; 샢; 새á‡; 샢; 새á‡; ) HANGUL SYLLABLE SAEP
+C0E3;C0E3;1109 1162 11C2;C0E3;1109 1162 11C2; # (샣; 샣; 샣; 샣; 샣; ) HANGUL SYLLABLE SAEH
+C0E4;C0E4;1109 1163;C0E4;1109 1163; # (샤; 샤; 샤; 샤; 샤; ) HANGUL SYLLABLE SYA
+C0E5;C0E5;1109 1163 11A8;C0E5;1109 1163 11A8; # (샥; 샥; 샥; 샥; 샥; ) HANGUL SYLLABLE SYAG
+C0E6;C0E6;1109 1163 11A9;C0E6;1109 1163 11A9; # (샦; 샦; 샦; 샦; 샦; ) HANGUL SYLLABLE SYAGG
+C0E7;C0E7;1109 1163 11AA;C0E7;1109 1163 11AA; # (샧; 샧; 샧; 샧; 샧; ) HANGUL SYLLABLE SYAGS
+C0E8;C0E8;1109 1163 11AB;C0E8;1109 1163 11AB; # (샨; 샨; 샨; 샨; 샨; ) HANGUL SYLLABLE SYAN
+C0E9;C0E9;1109 1163 11AC;C0E9;1109 1163 11AC; # (샩; 샩; 샩; 샩; 샩; ) HANGUL SYLLABLE SYANJ
+C0EA;C0EA;1109 1163 11AD;C0EA;1109 1163 11AD; # (샪; 샪; 샪; 샪; 샪; ) HANGUL SYLLABLE SYANH
+C0EB;C0EB;1109 1163 11AE;C0EB;1109 1163 11AE; # (샫; 샫; 샫; 샫; 샫; ) HANGUL SYLLABLE SYAD
+C0EC;C0EC;1109 1163 11AF;C0EC;1109 1163 11AF; # (샬; 샬; 샬; 샬; 샬; ) HANGUL SYLLABLE SYAL
+C0ED;C0ED;1109 1163 11B0;C0ED;1109 1163 11B0; # (샭; 샭; 샭; 샭; 샭; ) HANGUL SYLLABLE SYALG
+C0EE;C0EE;1109 1163 11B1;C0EE;1109 1163 11B1; # (샮; 샮; 샮; 샮; 샮; ) HANGUL SYLLABLE SYALM
+C0EF;C0EF;1109 1163 11B2;C0EF;1109 1163 11B2; # (샯; 샯; 샯; 샯; 샯; ) HANGUL SYLLABLE SYALB
+C0F0;C0F0;1109 1163 11B3;C0F0;1109 1163 11B3; # (샰; 샰; 샰; 샰; 샰; ) HANGUL SYLLABLE SYALS
+C0F1;C0F1;1109 1163 11B4;C0F1;1109 1163 11B4; # (샱; 샱; 샱; 샱; 샱; ) HANGUL SYLLABLE SYALT
+C0F2;C0F2;1109 1163 11B5;C0F2;1109 1163 11B5; # (샲; 샲; 샲; 샲; 샲; ) HANGUL SYLLABLE SYALP
+C0F3;C0F3;1109 1163 11B6;C0F3;1109 1163 11B6; # (샳; 샳; 샳; 샳; 샳; ) HANGUL SYLLABLE SYALH
+C0F4;C0F4;1109 1163 11B7;C0F4;1109 1163 11B7; # (샴; 샴; 샴; 샴; 샴; ) HANGUL SYLLABLE SYAM
+C0F5;C0F5;1109 1163 11B8;C0F5;1109 1163 11B8; # (샵; 샵; 샵; 샵; 샵; ) HANGUL SYLLABLE SYAB
+C0F6;C0F6;1109 1163 11B9;C0F6;1109 1163 11B9; # (샶; 샶; 샶; 샶; 샶; ) HANGUL SYLLABLE SYABS
+C0F7;C0F7;1109 1163 11BA;C0F7;1109 1163 11BA; # (샷; 샷; 샷; 샷; 샷; ) HANGUL SYLLABLE SYAS
+C0F8;C0F8;1109 1163 11BB;C0F8;1109 1163 11BB; # (샸; 샸; 샸; 샸; 샸; ) HANGUL SYLLABLE SYASS
+C0F9;C0F9;1109 1163 11BC;C0F9;1109 1163 11BC; # (샹; 샹; 샹; 샹; 샹; ) HANGUL SYLLABLE SYANG
+C0FA;C0FA;1109 1163 11BD;C0FA;1109 1163 11BD; # (샺; 샺; 샺; 샺; 샺; ) HANGUL SYLLABLE SYAJ
+C0FB;C0FB;1109 1163 11BE;C0FB;1109 1163 11BE; # (샻; 샻; 샻; 샻; 샻; ) HANGUL SYLLABLE SYAC
+C0FC;C0FC;1109 1163 11BF;C0FC;1109 1163 11BF; # (샼; 샼; 샼; 샼; 샼; ) HANGUL SYLLABLE SYAK
+C0FD;C0FD;1109 1163 11C0;C0FD;1109 1163 11C0; # (샽; 샽; 샽; 샽; 샽; ) HANGUL SYLLABLE SYAT
+C0FE;C0FE;1109 1163 11C1;C0FE;1109 1163 11C1; # (샾; 샾; 샤á‡; 샾; 샤á‡; ) HANGUL SYLLABLE SYAP
+C0FF;C0FF;1109 1163 11C2;C0FF;1109 1163 11C2; # (샿; 샿; 샿; 샿; 샿; ) HANGUL SYLLABLE SYAH
+C100;C100;1109 1164;C100;1109 1164; # (섀; 섀; 섀; 섀; 섀; ) HANGUL SYLLABLE SYAE
+C101;C101;1109 1164 11A8;C101;1109 1164 11A8; # (ì„; ì„; 섁; ì„; 섁; ) HANGUL SYLLABLE SYAEG
+C102;C102;1109 1164 11A9;C102;1109 1164 11A9; # (섂; 섂; 섂; 섂; 섂; ) HANGUL SYLLABLE SYAEGG
+C103;C103;1109 1164 11AA;C103;1109 1164 11AA; # (섃; 섃; 섃; 섃; 섃; ) HANGUL SYLLABLE SYAEGS
+C104;C104;1109 1164 11AB;C104;1109 1164 11AB; # (섄; 섄; 섄; 섄; 섄; ) HANGUL SYLLABLE SYAEN
+C105;C105;1109 1164 11AC;C105;1109 1164 11AC; # (섅; 섅; 섅; 섅; 섅; ) HANGUL SYLLABLE SYAENJ
+C106;C106;1109 1164 11AD;C106;1109 1164 11AD; # (섆; 섆; 섆; 섆; 섆; ) HANGUL SYLLABLE SYAENH
+C107;C107;1109 1164 11AE;C107;1109 1164 11AE; # (섇; 섇; 섇; 섇; 섇; ) HANGUL SYLLABLE SYAED
+C108;C108;1109 1164 11AF;C108;1109 1164 11AF; # (섈; 섈; 섈; 섈; 섈; ) HANGUL SYLLABLE SYAEL
+C109;C109;1109 1164 11B0;C109;1109 1164 11B0; # (섉; 섉; 섉; 섉; 섉; ) HANGUL SYLLABLE SYAELG
+C10A;C10A;1109 1164 11B1;C10A;1109 1164 11B1; # (섊; 섊; 섊; 섊; 섊; ) HANGUL SYLLABLE SYAELM
+C10B;C10B;1109 1164 11B2;C10B;1109 1164 11B2; # (섋; 섋; 섋; 섋; 섋; ) HANGUL SYLLABLE SYAELB
+C10C;C10C;1109 1164 11B3;C10C;1109 1164 11B3; # (섌; 섌; 섌; 섌; 섌; ) HANGUL SYLLABLE SYAELS
+C10D;C10D;1109 1164 11B4;C10D;1109 1164 11B4; # (ì„; ì„; 섍; ì„; 섍; ) HANGUL SYLLABLE SYAELT
+C10E;C10E;1109 1164 11B5;C10E;1109 1164 11B5; # (섎; 섎; 섎; 섎; 섎; ) HANGUL SYLLABLE SYAELP
+C10F;C10F;1109 1164 11B6;C10F;1109 1164 11B6; # (ì„; ì„; 섏; ì„; 섏; ) HANGUL SYLLABLE SYAELH
+C110;C110;1109 1164 11B7;C110;1109 1164 11B7; # (ì„; ì„; 섐; ì„; 섐; ) HANGUL SYLLABLE SYAEM
+C111;C111;1109 1164 11B8;C111;1109 1164 11B8; # (섑; 섑; 섑; 섑; 섑; ) HANGUL SYLLABLE SYAEB
+C112;C112;1109 1164 11B9;C112;1109 1164 11B9; # (섒; 섒; 섒; 섒; 섒; ) HANGUL SYLLABLE SYAEBS
+C113;C113;1109 1164 11BA;C113;1109 1164 11BA; # (섓; 섓; 섓; 섓; 섓; ) HANGUL SYLLABLE SYAES
+C114;C114;1109 1164 11BB;C114;1109 1164 11BB; # (섔; 섔; 섔; 섔; 섔; ) HANGUL SYLLABLE SYAESS
+C115;C115;1109 1164 11BC;C115;1109 1164 11BC; # (섕; 섕; 섕; 섕; 섕; ) HANGUL SYLLABLE SYAENG
+C116;C116;1109 1164 11BD;C116;1109 1164 11BD; # (섖; 섖; 섖; 섖; 섖; ) HANGUL SYLLABLE SYAEJ
+C117;C117;1109 1164 11BE;C117;1109 1164 11BE; # (섗; 섗; 섗; 섗; 섗; ) HANGUL SYLLABLE SYAEC
+C118;C118;1109 1164 11BF;C118;1109 1164 11BF; # (섘; 섘; 섘; 섘; 섘; ) HANGUL SYLLABLE SYAEK
+C119;C119;1109 1164 11C0;C119;1109 1164 11C0; # (섙; 섙; 섙; 섙; 섙; ) HANGUL SYLLABLE SYAET
+C11A;C11A;1109 1164 11C1;C11A;1109 1164 11C1; # (ì„š; ì„š; 섀á‡; ì„š; 섀á‡; ) HANGUL SYLLABLE SYAEP
+C11B;C11B;1109 1164 11C2;C11B;1109 1164 11C2; # (섛; 섛; 섛; 섛; 섛; ) HANGUL SYLLABLE SYAEH
+C11C;C11C;1109 1165;C11C;1109 1165; # (서; 서; 서; 서; 서; ) HANGUL SYLLABLE SEO
+C11D;C11D;1109 1165 11A8;C11D;1109 1165 11A8; # (ì„; ì„; 석; ì„; 석; ) HANGUL SYLLABLE SEOG
+C11E;C11E;1109 1165 11A9;C11E;1109 1165 11A9; # (섞; 섞; 섞; 섞; 섞; ) HANGUL SYLLABLE SEOGG
+C11F;C11F;1109 1165 11AA;C11F;1109 1165 11AA; # (섟; 섟; 섟; 섟; 섟; ) HANGUL SYLLABLE SEOGS
+C120;C120;1109 1165 11AB;C120;1109 1165 11AB; # (선; 선; 선; 선; 선; ) HANGUL SYLLABLE SEON
+C121;C121;1109 1165 11AC;C121;1109 1165 11AC; # (섡; 섡; 섡; 섡; 섡; ) HANGUL SYLLABLE SEONJ
+C122;C122;1109 1165 11AD;C122;1109 1165 11AD; # (섢; 섢; 섢; 섢; 섢; ) HANGUL SYLLABLE SEONH
+C123;C123;1109 1165 11AE;C123;1109 1165 11AE; # (섣; 섣; 섣; 섣; 섣; ) HANGUL SYLLABLE SEOD
+C124;C124;1109 1165 11AF;C124;1109 1165 11AF; # (설; 설; 설; 설; 설; ) HANGUL SYLLABLE SEOL
+C125;C125;1109 1165 11B0;C125;1109 1165 11B0; # (섥; 섥; 섥; 섥; 섥; ) HANGUL SYLLABLE SEOLG
+C126;C126;1109 1165 11B1;C126;1109 1165 11B1; # (섦; 섦; 섦; 섦; 섦; ) HANGUL SYLLABLE SEOLM
+C127;C127;1109 1165 11B2;C127;1109 1165 11B2; # (섧; 섧; 섧; 섧; 섧; ) HANGUL SYLLABLE SEOLB
+C128;C128;1109 1165 11B3;C128;1109 1165 11B3; # (섨; 섨; 섨; 섨; 섨; ) HANGUL SYLLABLE SEOLS
+C129;C129;1109 1165 11B4;C129;1109 1165 11B4; # (섩; 섩; 섩; 섩; 섩; ) HANGUL SYLLABLE SEOLT
+C12A;C12A;1109 1165 11B5;C12A;1109 1165 11B5; # (섪; 섪; 섪; 섪; 섪; ) HANGUL SYLLABLE SEOLP
+C12B;C12B;1109 1165 11B6;C12B;1109 1165 11B6; # (섫; 섫; 섫; 섫; 섫; ) HANGUL SYLLABLE SEOLH
+C12C;C12C;1109 1165 11B7;C12C;1109 1165 11B7; # (섬; 섬; 섬; 섬; 섬; ) HANGUL SYLLABLE SEOM
+C12D;C12D;1109 1165 11B8;C12D;1109 1165 11B8; # (섭; 섭; 섭; 섭; 섭; ) HANGUL SYLLABLE SEOB
+C12E;C12E;1109 1165 11B9;C12E;1109 1165 11B9; # (섮; 섮; 섮; 섮; 섮; ) HANGUL SYLLABLE SEOBS
+C12F;C12F;1109 1165 11BA;C12F;1109 1165 11BA; # (섯; 섯; 섯; 섯; 섯; ) HANGUL SYLLABLE SEOS
+C130;C130;1109 1165 11BB;C130;1109 1165 11BB; # (섰; 섰; 섰; 섰; 섰; ) HANGUL SYLLABLE SEOSS
+C131;C131;1109 1165 11BC;C131;1109 1165 11BC; # (성; 성; 성; 성; 성; ) HANGUL SYLLABLE SEONG
+C132;C132;1109 1165 11BD;C132;1109 1165 11BD; # (섲; 섲; 섲; 섲; 섲; ) HANGUL SYLLABLE SEOJ
+C133;C133;1109 1165 11BE;C133;1109 1165 11BE; # (섳; 섳; 섳; 섳; 섳; ) HANGUL SYLLABLE SEOC
+C134;C134;1109 1165 11BF;C134;1109 1165 11BF; # (섴; 섴; 섴; 섴; 섴; ) HANGUL SYLLABLE SEOK
+C135;C135;1109 1165 11C0;C135;1109 1165 11C0; # (섵; 섵; 섵; 섵; 섵; ) HANGUL SYLLABLE SEOT
+C136;C136;1109 1165 11C1;C136;1109 1165 11C1; # (섶; 섶; 서á‡; 섶; 서á‡; ) HANGUL SYLLABLE SEOP
+C137;C137;1109 1165 11C2;C137;1109 1165 11C2; # (섷; 섷; 섷; 섷; 섷; ) HANGUL SYLLABLE SEOH
+C138;C138;1109 1166;C138;1109 1166; # (세; 세; 세; 세; 세; ) HANGUL SYLLABLE SE
+C139;C139;1109 1166 11A8;C139;1109 1166 11A8; # (섹; 섹; 섹; 섹; 섹; ) HANGUL SYLLABLE SEG
+C13A;C13A;1109 1166 11A9;C13A;1109 1166 11A9; # (섺; 섺; 섺; 섺; 섺; ) HANGUL SYLLABLE SEGG
+C13B;C13B;1109 1166 11AA;C13B;1109 1166 11AA; # (섻; 섻; 섻; 섻; 섻; ) HANGUL SYLLABLE SEGS
+C13C;C13C;1109 1166 11AB;C13C;1109 1166 11AB; # (센; 센; 센; 센; 센; ) HANGUL SYLLABLE SEN
+C13D;C13D;1109 1166 11AC;C13D;1109 1166 11AC; # (섽; 섽; 섽; 섽; 섽; ) HANGUL SYLLABLE SENJ
+C13E;C13E;1109 1166 11AD;C13E;1109 1166 11AD; # (섾; 섾; 섾; 섾; 섾; ) HANGUL SYLLABLE SENH
+C13F;C13F;1109 1166 11AE;C13F;1109 1166 11AE; # (섿; 섿; 섿; 섿; 섿; ) HANGUL SYLLABLE SED
+C140;C140;1109 1166 11AF;C140;1109 1166 11AF; # (셀; 셀; 셀; 셀; 셀; ) HANGUL SYLLABLE SEL
+C141;C141;1109 1166 11B0;C141;1109 1166 11B0; # (ì…; ì…; 셁; ì…; 셁; ) HANGUL SYLLABLE SELG
+C142;C142;1109 1166 11B1;C142;1109 1166 11B1; # (셂; 셂; 셂; 셂; 셂; ) HANGUL SYLLABLE SELM
+C143;C143;1109 1166 11B2;C143;1109 1166 11B2; # (셃; 셃; 셃; 셃; 셃; ) HANGUL SYLLABLE SELB
+C144;C144;1109 1166 11B3;C144;1109 1166 11B3; # (셄; 셄; 셄; 셄; 셄; ) HANGUL SYLLABLE SELS
+C145;C145;1109 1166 11B4;C145;1109 1166 11B4; # (셅; 셅; 셅; 셅; 셅; ) HANGUL SYLLABLE SELT
+C146;C146;1109 1166 11B5;C146;1109 1166 11B5; # (셆; 셆; 셆; 셆; 셆; ) HANGUL SYLLABLE SELP
+C147;C147;1109 1166 11B6;C147;1109 1166 11B6; # (셇; 셇; 셇; 셇; 셇; ) HANGUL SYLLABLE SELH
+C148;C148;1109 1166 11B7;C148;1109 1166 11B7; # (셈; 셈; 셈; 셈; 셈; ) HANGUL SYLLABLE SEM
+C149;C149;1109 1166 11B8;C149;1109 1166 11B8; # (셉; 셉; 셉; 셉; 셉; ) HANGUL SYLLABLE SEB
+C14A;C14A;1109 1166 11B9;C14A;1109 1166 11B9; # (셊; 셊; 셊; 셊; 셊; ) HANGUL SYLLABLE SEBS
+C14B;C14B;1109 1166 11BA;C14B;1109 1166 11BA; # (셋; 셋; 셋; 셋; 셋; ) HANGUL SYLLABLE SES
+C14C;C14C;1109 1166 11BB;C14C;1109 1166 11BB; # (셌; 셌; 셌; 셌; 셌; ) HANGUL SYLLABLE SESS
+C14D;C14D;1109 1166 11BC;C14D;1109 1166 11BC; # (ì…; ì…; 셍; ì…; 셍; ) HANGUL SYLLABLE SENG
+C14E;C14E;1109 1166 11BD;C14E;1109 1166 11BD; # (셎; 셎; 셎; 셎; 셎; ) HANGUL SYLLABLE SEJ
+C14F;C14F;1109 1166 11BE;C14F;1109 1166 11BE; # (ì…; ì…; 셏; ì…; 셏; ) HANGUL SYLLABLE SEC
+C150;C150;1109 1166 11BF;C150;1109 1166 11BF; # (ì…; ì…; 셐; ì…; 셐; ) HANGUL SYLLABLE SEK
+C151;C151;1109 1166 11C0;C151;1109 1166 11C0; # (셑; 셑; 셑; 셑; 셑; ) HANGUL SYLLABLE SET
+C152;C152;1109 1166 11C1;C152;1109 1166 11C1; # (ì…’; ì…’; 세á‡; ì…’; 세á‡; ) HANGUL SYLLABLE SEP
+C153;C153;1109 1166 11C2;C153;1109 1166 11C2; # (셓; 셓; 셓; 셓; 셓; ) HANGUL SYLLABLE SEH
+C154;C154;1109 1167;C154;1109 1167; # (셔; 셔; 셔; 셔; 셔; ) HANGUL SYLLABLE SYEO
+C155;C155;1109 1167 11A8;C155;1109 1167 11A8; # (셕; 셕; 셕; 셕; 셕; ) HANGUL SYLLABLE SYEOG
+C156;C156;1109 1167 11A9;C156;1109 1167 11A9; # (셖; 셖; 셖; 셖; 셖; ) HANGUL SYLLABLE SYEOGG
+C157;C157;1109 1167 11AA;C157;1109 1167 11AA; # (셗; 셗; 셗; 셗; 셗; ) HANGUL SYLLABLE SYEOGS
+C158;C158;1109 1167 11AB;C158;1109 1167 11AB; # (션; 션; 션; 션; 션; ) HANGUL SYLLABLE SYEON
+C159;C159;1109 1167 11AC;C159;1109 1167 11AC; # (셙; 셙; 셙; 셙; 셙; ) HANGUL SYLLABLE SYEONJ
+C15A;C15A;1109 1167 11AD;C15A;1109 1167 11AD; # (셚; 셚; 셚; 셚; 셚; ) HANGUL SYLLABLE SYEONH
+C15B;C15B;1109 1167 11AE;C15B;1109 1167 11AE; # (셛; 셛; 셛; 셛; 셛; ) HANGUL SYLLABLE SYEOD
+C15C;C15C;1109 1167 11AF;C15C;1109 1167 11AF; # (셜; 셜; 셜; 셜; 셜; ) HANGUL SYLLABLE SYEOL
+C15D;C15D;1109 1167 11B0;C15D;1109 1167 11B0; # (ì…; ì…; 셝; ì…; 셝; ) HANGUL SYLLABLE SYEOLG
+C15E;C15E;1109 1167 11B1;C15E;1109 1167 11B1; # (셞; 셞; 셞; 셞; 셞; ) HANGUL SYLLABLE SYEOLM
+C15F;C15F;1109 1167 11B2;C15F;1109 1167 11B2; # (셟; 셟; 셟; 셟; 셟; ) HANGUL SYLLABLE SYEOLB
+C160;C160;1109 1167 11B3;C160;1109 1167 11B3; # (셠; 셠; 셠; 셠; 셠; ) HANGUL SYLLABLE SYEOLS
+C161;C161;1109 1167 11B4;C161;1109 1167 11B4; # (셡; 셡; 셡; 셡; 셡; ) HANGUL SYLLABLE SYEOLT
+C162;C162;1109 1167 11B5;C162;1109 1167 11B5; # (셢; 셢; 셢; 셢; 셢; ) HANGUL SYLLABLE SYEOLP
+C163;C163;1109 1167 11B6;C163;1109 1167 11B6; # (셣; 셣; 셣; 셣; 셣; ) HANGUL SYLLABLE SYEOLH
+C164;C164;1109 1167 11B7;C164;1109 1167 11B7; # (셤; 셤; 셤; 셤; 셤; ) HANGUL SYLLABLE SYEOM
+C165;C165;1109 1167 11B8;C165;1109 1167 11B8; # (셥; 셥; 셥; 셥; 셥; ) HANGUL SYLLABLE SYEOB
+C166;C166;1109 1167 11B9;C166;1109 1167 11B9; # (셦; 셦; 셦; 셦; 셦; ) HANGUL SYLLABLE SYEOBS
+C167;C167;1109 1167 11BA;C167;1109 1167 11BA; # (셧; 셧; 셧; 셧; 셧; ) HANGUL SYLLABLE SYEOS
+C168;C168;1109 1167 11BB;C168;1109 1167 11BB; # (셨; 셨; 셨; 셨; 셨; ) HANGUL SYLLABLE SYEOSS
+C169;C169;1109 1167 11BC;C169;1109 1167 11BC; # (셩; 셩; 셩; 셩; 셩; ) HANGUL SYLLABLE SYEONG
+C16A;C16A;1109 1167 11BD;C16A;1109 1167 11BD; # (셪; 셪; 셪; 셪; 셪; ) HANGUL SYLLABLE SYEOJ
+C16B;C16B;1109 1167 11BE;C16B;1109 1167 11BE; # (셫; 셫; 셫; 셫; 셫; ) HANGUL SYLLABLE SYEOC
+C16C;C16C;1109 1167 11BF;C16C;1109 1167 11BF; # (셬; 셬; 셬; 셬; 셬; ) HANGUL SYLLABLE SYEOK
+C16D;C16D;1109 1167 11C0;C16D;1109 1167 11C0; # (셭; 셭; 셭; 셭; 셭; ) HANGUL SYLLABLE SYEOT
+C16E;C16E;1109 1167 11C1;C16E;1109 1167 11C1; # (ì…®; ì…®; 셔á‡; ì…®; 셔á‡; ) HANGUL SYLLABLE SYEOP
+C16F;C16F;1109 1167 11C2;C16F;1109 1167 11C2; # (셯; 셯; 셯; 셯; 셯; ) HANGUL SYLLABLE SYEOH
+C170;C170;1109 1168;C170;1109 1168; # (셰; 셰; 셰; 셰; 셰; ) HANGUL SYLLABLE SYE
+C171;C171;1109 1168 11A8;C171;1109 1168 11A8; # (셱; 셱; 셱; 셱; 셱; ) HANGUL SYLLABLE SYEG
+C172;C172;1109 1168 11A9;C172;1109 1168 11A9; # (셲; 셲; 셲; 셲; 셲; ) HANGUL SYLLABLE SYEGG
+C173;C173;1109 1168 11AA;C173;1109 1168 11AA; # (셳; 셳; 셳; 셳; 셳; ) HANGUL SYLLABLE SYEGS
+C174;C174;1109 1168 11AB;C174;1109 1168 11AB; # (셴; 셴; 셴; 셴; 셴; ) HANGUL SYLLABLE SYEN
+C175;C175;1109 1168 11AC;C175;1109 1168 11AC; # (셵; 셵; 셵; 셵; 셵; ) HANGUL SYLLABLE SYENJ
+C176;C176;1109 1168 11AD;C176;1109 1168 11AD; # (셶; 셶; 셶; 셶; 셶; ) HANGUL SYLLABLE SYENH
+C177;C177;1109 1168 11AE;C177;1109 1168 11AE; # (셷; 셷; 셷; 셷; 셷; ) HANGUL SYLLABLE SYED
+C178;C178;1109 1168 11AF;C178;1109 1168 11AF; # (셸; 셸; 셸; 셸; 셸; ) HANGUL SYLLABLE SYEL
+C179;C179;1109 1168 11B0;C179;1109 1168 11B0; # (셹; 셹; 셹; 셹; 셹; ) HANGUL SYLLABLE SYELG
+C17A;C17A;1109 1168 11B1;C17A;1109 1168 11B1; # (셺; 셺; 셺; 셺; 셺; ) HANGUL SYLLABLE SYELM
+C17B;C17B;1109 1168 11B2;C17B;1109 1168 11B2; # (셻; 셻; 셻; 셻; 셻; ) HANGUL SYLLABLE SYELB
+C17C;C17C;1109 1168 11B3;C17C;1109 1168 11B3; # (셼; 셼; 셼; 셼; 셼; ) HANGUL SYLLABLE SYELS
+C17D;C17D;1109 1168 11B4;C17D;1109 1168 11B4; # (셽; 셽; 셽; 셽; 셽; ) HANGUL SYLLABLE SYELT
+C17E;C17E;1109 1168 11B5;C17E;1109 1168 11B5; # (셾; 셾; 셾; 셾; 셾; ) HANGUL SYLLABLE SYELP
+C17F;C17F;1109 1168 11B6;C17F;1109 1168 11B6; # (셿; 셿; 셿; 셿; 셿; ) HANGUL SYLLABLE SYELH
+C180;C180;1109 1168 11B7;C180;1109 1168 11B7; # (솀; 솀; 솀; 솀; 솀; ) HANGUL SYLLABLE SYEM
+C181;C181;1109 1168 11B8;C181;1109 1168 11B8; # (ì†; ì†; 솁; ì†; 솁; ) HANGUL SYLLABLE SYEB
+C182;C182;1109 1168 11B9;C182;1109 1168 11B9; # (솂; 솂; 솂; 솂; 솂; ) HANGUL SYLLABLE SYEBS
+C183;C183;1109 1168 11BA;C183;1109 1168 11BA; # (솃; 솃; 솃; 솃; 솃; ) HANGUL SYLLABLE SYES
+C184;C184;1109 1168 11BB;C184;1109 1168 11BB; # (솄; 솄; 솄; 솄; 솄; ) HANGUL SYLLABLE SYESS
+C185;C185;1109 1168 11BC;C185;1109 1168 11BC; # (솅; 솅; 솅; 솅; 솅; ) HANGUL SYLLABLE SYENG
+C186;C186;1109 1168 11BD;C186;1109 1168 11BD; # (솆; 솆; 솆; 솆; 솆; ) HANGUL SYLLABLE SYEJ
+C187;C187;1109 1168 11BE;C187;1109 1168 11BE; # (솇; 솇; 솇; 솇; 솇; ) HANGUL SYLLABLE SYEC
+C188;C188;1109 1168 11BF;C188;1109 1168 11BF; # (솈; 솈; 솈; 솈; 솈; ) HANGUL SYLLABLE SYEK
+C189;C189;1109 1168 11C0;C189;1109 1168 11C0; # (솉; 솉; 솉; 솉; 솉; ) HANGUL SYLLABLE SYET
+C18A;C18A;1109 1168 11C1;C18A;1109 1168 11C1; # (솊; 솊; 셰á‡; 솊; 셰á‡; ) HANGUL SYLLABLE SYEP
+C18B;C18B;1109 1168 11C2;C18B;1109 1168 11C2; # (솋; 솋; 솋; 솋; 솋; ) HANGUL SYLLABLE SYEH
+C18C;C18C;1109 1169;C18C;1109 1169; # (소; 소; 소; 소; 소; ) HANGUL SYLLABLE SO
+C18D;C18D;1109 1169 11A8;C18D;1109 1169 11A8; # (ì†; ì†; 속; ì†; 속; ) HANGUL SYLLABLE SOG
+C18E;C18E;1109 1169 11A9;C18E;1109 1169 11A9; # (솎; 솎; 솎; 솎; 솎; ) HANGUL SYLLABLE SOGG
+C18F;C18F;1109 1169 11AA;C18F;1109 1169 11AA; # (ì†; ì†; 솏; ì†; 솏; ) HANGUL SYLLABLE SOGS
+C190;C190;1109 1169 11AB;C190;1109 1169 11AB; # (ì†; ì†; 손; ì†; 손; ) HANGUL SYLLABLE SON
+C191;C191;1109 1169 11AC;C191;1109 1169 11AC; # (솑; 솑; 솑; 솑; 솑; ) HANGUL SYLLABLE SONJ
+C192;C192;1109 1169 11AD;C192;1109 1169 11AD; # (솒; 솒; 솒; 솒; 솒; ) HANGUL SYLLABLE SONH
+C193;C193;1109 1169 11AE;C193;1109 1169 11AE; # (솓; 솓; 솓; 솓; 솓; ) HANGUL SYLLABLE SOD
+C194;C194;1109 1169 11AF;C194;1109 1169 11AF; # (솔; 솔; 솔; 솔; 솔; ) HANGUL SYLLABLE SOL
+C195;C195;1109 1169 11B0;C195;1109 1169 11B0; # (솕; 솕; 솕; 솕; 솕; ) HANGUL SYLLABLE SOLG
+C196;C196;1109 1169 11B1;C196;1109 1169 11B1; # (솖; 솖; 솖; 솖; 솖; ) HANGUL SYLLABLE SOLM
+C197;C197;1109 1169 11B2;C197;1109 1169 11B2; # (솗; 솗; 솗; 솗; 솗; ) HANGUL SYLLABLE SOLB
+C198;C198;1109 1169 11B3;C198;1109 1169 11B3; # (솘; 솘; 솘; 솘; 솘; ) HANGUL SYLLABLE SOLS
+C199;C199;1109 1169 11B4;C199;1109 1169 11B4; # (솙; 솙; 솙; 솙; 솙; ) HANGUL SYLLABLE SOLT
+C19A;C19A;1109 1169 11B5;C19A;1109 1169 11B5; # (솚; 솚; 솚; 솚; 솚; ) HANGUL SYLLABLE SOLP
+C19B;C19B;1109 1169 11B6;C19B;1109 1169 11B6; # (솛; 솛; 솛; 솛; 솛; ) HANGUL SYLLABLE SOLH
+C19C;C19C;1109 1169 11B7;C19C;1109 1169 11B7; # (솜; 솜; 솜; 솜; 솜; ) HANGUL SYLLABLE SOM
+C19D;C19D;1109 1169 11B8;C19D;1109 1169 11B8; # (ì†; ì†; 솝; ì†; 솝; ) HANGUL SYLLABLE SOB
+C19E;C19E;1109 1169 11B9;C19E;1109 1169 11B9; # (솞; 솞; 솞; 솞; 솞; ) HANGUL SYLLABLE SOBS
+C19F;C19F;1109 1169 11BA;C19F;1109 1169 11BA; # (솟; 솟; 솟; 솟; 솟; ) HANGUL SYLLABLE SOS
+C1A0;C1A0;1109 1169 11BB;C1A0;1109 1169 11BB; # (솠; 솠; 솠; 솠; 솠; ) HANGUL SYLLABLE SOSS
+C1A1;C1A1;1109 1169 11BC;C1A1;1109 1169 11BC; # (송; 송; 송; 송; 송; ) HANGUL SYLLABLE SONG
+C1A2;C1A2;1109 1169 11BD;C1A2;1109 1169 11BD; # (솢; 솢; 솢; 솢; 솢; ) HANGUL SYLLABLE SOJ
+C1A3;C1A3;1109 1169 11BE;C1A3;1109 1169 11BE; # (솣; 솣; 솣; 솣; 솣; ) HANGUL SYLLABLE SOC
+C1A4;C1A4;1109 1169 11BF;C1A4;1109 1169 11BF; # (솤; 솤; 솤; 솤; 솤; ) HANGUL SYLLABLE SOK
+C1A5;C1A5;1109 1169 11C0;C1A5;1109 1169 11C0; # (솥; 솥; 솥; 솥; 솥; ) HANGUL SYLLABLE SOT
+C1A6;C1A6;1109 1169 11C1;C1A6;1109 1169 11C1; # (솦; 솦; 소á‡; 솦; 소á‡; ) HANGUL SYLLABLE SOP
+C1A7;C1A7;1109 1169 11C2;C1A7;1109 1169 11C2; # (솧; 솧; 솧; 솧; 솧; ) HANGUL SYLLABLE SOH
+C1A8;C1A8;1109 116A;C1A8;1109 116A; # (솨; 솨; 솨; 솨; 솨; ) HANGUL SYLLABLE SWA
+C1A9;C1A9;1109 116A 11A8;C1A9;1109 116A 11A8; # (솩; 솩; 솩; 솩; 솩; ) HANGUL SYLLABLE SWAG
+C1AA;C1AA;1109 116A 11A9;C1AA;1109 116A 11A9; # (솪; 솪; 솪; 솪; 솪; ) HANGUL SYLLABLE SWAGG
+C1AB;C1AB;1109 116A 11AA;C1AB;1109 116A 11AA; # (솫; 솫; 솫; 솫; 솫; ) HANGUL SYLLABLE SWAGS
+C1AC;C1AC;1109 116A 11AB;C1AC;1109 116A 11AB; # (솬; 솬; 솬; 솬; 솬; ) HANGUL SYLLABLE SWAN
+C1AD;C1AD;1109 116A 11AC;C1AD;1109 116A 11AC; # (솭; 솭; 솭; 솭; 솭; ) HANGUL SYLLABLE SWANJ
+C1AE;C1AE;1109 116A 11AD;C1AE;1109 116A 11AD; # (솮; 솮; 솮; 솮; 솮; ) HANGUL SYLLABLE SWANH
+C1AF;C1AF;1109 116A 11AE;C1AF;1109 116A 11AE; # (솯; 솯; 솯; 솯; 솯; ) HANGUL SYLLABLE SWAD
+C1B0;C1B0;1109 116A 11AF;C1B0;1109 116A 11AF; # (솰; 솰; 솰; 솰; 솰; ) HANGUL SYLLABLE SWAL
+C1B1;C1B1;1109 116A 11B0;C1B1;1109 116A 11B0; # (솱; 솱; 솱; 솱; 솱; ) HANGUL SYLLABLE SWALG
+C1B2;C1B2;1109 116A 11B1;C1B2;1109 116A 11B1; # (솲; 솲; 솲; 솲; 솲; ) HANGUL SYLLABLE SWALM
+C1B3;C1B3;1109 116A 11B2;C1B3;1109 116A 11B2; # (솳; 솳; 솳; 솳; 솳; ) HANGUL SYLLABLE SWALB
+C1B4;C1B4;1109 116A 11B3;C1B4;1109 116A 11B3; # (솴; 솴; 솴; 솴; 솴; ) HANGUL SYLLABLE SWALS
+C1B5;C1B5;1109 116A 11B4;C1B5;1109 116A 11B4; # (솵; 솵; 솵; 솵; 솵; ) HANGUL SYLLABLE SWALT
+C1B6;C1B6;1109 116A 11B5;C1B6;1109 116A 11B5; # (솶; 솶; 솶; 솶; 솶; ) HANGUL SYLLABLE SWALP
+C1B7;C1B7;1109 116A 11B6;C1B7;1109 116A 11B6; # (솷; 솷; 솷; 솷; 솷; ) HANGUL SYLLABLE SWALH
+C1B8;C1B8;1109 116A 11B7;C1B8;1109 116A 11B7; # (솸; 솸; 솸; 솸; 솸; ) HANGUL SYLLABLE SWAM
+C1B9;C1B9;1109 116A 11B8;C1B9;1109 116A 11B8; # (솹; 솹; 솹; 솹; 솹; ) HANGUL SYLLABLE SWAB
+C1BA;C1BA;1109 116A 11B9;C1BA;1109 116A 11B9; # (솺; 솺; 솺; 솺; 솺; ) HANGUL SYLLABLE SWABS
+C1BB;C1BB;1109 116A 11BA;C1BB;1109 116A 11BA; # (솻; 솻; 솻; 솻; 솻; ) HANGUL SYLLABLE SWAS
+C1BC;C1BC;1109 116A 11BB;C1BC;1109 116A 11BB; # (솼; 솼; 솼; 솼; 솼; ) HANGUL SYLLABLE SWASS
+C1BD;C1BD;1109 116A 11BC;C1BD;1109 116A 11BC; # (솽; 솽; 솽; 솽; 솽; ) HANGUL SYLLABLE SWANG
+C1BE;C1BE;1109 116A 11BD;C1BE;1109 116A 11BD; # (솾; 솾; 솾; 솾; 솾; ) HANGUL SYLLABLE SWAJ
+C1BF;C1BF;1109 116A 11BE;C1BF;1109 116A 11BE; # (솿; 솿; 솿; 솿; 솿; ) HANGUL SYLLABLE SWAC
+C1C0;C1C0;1109 116A 11BF;C1C0;1109 116A 11BF; # (쇀; 쇀; 쇀; 쇀; 쇀; ) HANGUL SYLLABLE SWAK
+C1C1;C1C1;1109 116A 11C0;C1C1;1109 116A 11C0; # (ì‡; ì‡; 쇁; ì‡; 쇁; ) HANGUL SYLLABLE SWAT
+C1C2;C1C2;1109 116A 11C1;C1C2;1109 116A 11C1; # (쇂; 쇂; 솨á‡; 쇂; 솨á‡; ) HANGUL SYLLABLE SWAP
+C1C3;C1C3;1109 116A 11C2;C1C3;1109 116A 11C2; # (쇃; 쇃; 쇃; 쇃; 쇃; ) HANGUL SYLLABLE SWAH
+C1C4;C1C4;1109 116B;C1C4;1109 116B; # (쇄; 쇄; 쇄; 쇄; 쇄; ) HANGUL SYLLABLE SWAE
+C1C5;C1C5;1109 116B 11A8;C1C5;1109 116B 11A8; # (쇅; 쇅; 쇅; 쇅; 쇅; ) HANGUL SYLLABLE SWAEG
+C1C6;C1C6;1109 116B 11A9;C1C6;1109 116B 11A9; # (쇆; 쇆; 쇆; 쇆; 쇆; ) HANGUL SYLLABLE SWAEGG
+C1C7;C1C7;1109 116B 11AA;C1C7;1109 116B 11AA; # (쇇; 쇇; 쇇; 쇇; 쇇; ) HANGUL SYLLABLE SWAEGS
+C1C8;C1C8;1109 116B 11AB;C1C8;1109 116B 11AB; # (쇈; 쇈; 쇈; 쇈; 쇈; ) HANGUL SYLLABLE SWAEN
+C1C9;C1C9;1109 116B 11AC;C1C9;1109 116B 11AC; # (쇉; 쇉; 쇉; 쇉; 쇉; ) HANGUL SYLLABLE SWAENJ
+C1CA;C1CA;1109 116B 11AD;C1CA;1109 116B 11AD; # (쇊; 쇊; 쇊; 쇊; 쇊; ) HANGUL SYLLABLE SWAENH
+C1CB;C1CB;1109 116B 11AE;C1CB;1109 116B 11AE; # (쇋; 쇋; 쇋; 쇋; 쇋; ) HANGUL SYLLABLE SWAED
+C1CC;C1CC;1109 116B 11AF;C1CC;1109 116B 11AF; # (쇌; 쇌; 쇌; 쇌; 쇌; ) HANGUL SYLLABLE SWAEL
+C1CD;C1CD;1109 116B 11B0;C1CD;1109 116B 11B0; # (ì‡; ì‡; 쇍; ì‡; 쇍; ) HANGUL SYLLABLE SWAELG
+C1CE;C1CE;1109 116B 11B1;C1CE;1109 116B 11B1; # (쇎; 쇎; 쇎; 쇎; 쇎; ) HANGUL SYLLABLE SWAELM
+C1CF;C1CF;1109 116B 11B2;C1CF;1109 116B 11B2; # (ì‡; ì‡; 쇏; ì‡; 쇏; ) HANGUL SYLLABLE SWAELB
+C1D0;C1D0;1109 116B 11B3;C1D0;1109 116B 11B3; # (ì‡; ì‡; 쇐; ì‡; 쇐; ) HANGUL SYLLABLE SWAELS
+C1D1;C1D1;1109 116B 11B4;C1D1;1109 116B 11B4; # (쇑; 쇑; 쇑; 쇑; 쇑; ) HANGUL SYLLABLE SWAELT
+C1D2;C1D2;1109 116B 11B5;C1D2;1109 116B 11B5; # (쇒; 쇒; 쇒; 쇒; 쇒; ) HANGUL SYLLABLE SWAELP
+C1D3;C1D3;1109 116B 11B6;C1D3;1109 116B 11B6; # (쇓; 쇓; 쇓; 쇓; 쇓; ) HANGUL SYLLABLE SWAELH
+C1D4;C1D4;1109 116B 11B7;C1D4;1109 116B 11B7; # (쇔; 쇔; 쇔; 쇔; 쇔; ) HANGUL SYLLABLE SWAEM
+C1D5;C1D5;1109 116B 11B8;C1D5;1109 116B 11B8; # (쇕; 쇕; 쇕; 쇕; 쇕; ) HANGUL SYLLABLE SWAEB
+C1D6;C1D6;1109 116B 11B9;C1D6;1109 116B 11B9; # (쇖; 쇖; 쇖; 쇖; 쇖; ) HANGUL SYLLABLE SWAEBS
+C1D7;C1D7;1109 116B 11BA;C1D7;1109 116B 11BA; # (쇗; 쇗; 쇗; 쇗; 쇗; ) HANGUL SYLLABLE SWAES
+C1D8;C1D8;1109 116B 11BB;C1D8;1109 116B 11BB; # (쇘; 쇘; 쇘; 쇘; 쇘; ) HANGUL SYLLABLE SWAESS
+C1D9;C1D9;1109 116B 11BC;C1D9;1109 116B 11BC; # (쇙; 쇙; 쇙; 쇙; 쇙; ) HANGUL SYLLABLE SWAENG
+C1DA;C1DA;1109 116B 11BD;C1DA;1109 116B 11BD; # (쇚; 쇚; 쇚; 쇚; 쇚; ) HANGUL SYLLABLE SWAEJ
+C1DB;C1DB;1109 116B 11BE;C1DB;1109 116B 11BE; # (쇛; 쇛; 쇛; 쇛; 쇛; ) HANGUL SYLLABLE SWAEC
+C1DC;C1DC;1109 116B 11BF;C1DC;1109 116B 11BF; # (쇜; 쇜; 쇜; 쇜; 쇜; ) HANGUL SYLLABLE SWAEK
+C1DD;C1DD;1109 116B 11C0;C1DD;1109 116B 11C0; # (ì‡; ì‡; 쇝; ì‡; 쇝; ) HANGUL SYLLABLE SWAET
+C1DE;C1DE;1109 116B 11C1;C1DE;1109 116B 11C1; # (쇞; 쇞; 쇄á‡; 쇞; 쇄á‡; ) HANGUL SYLLABLE SWAEP
+C1DF;C1DF;1109 116B 11C2;C1DF;1109 116B 11C2; # (쇟; 쇟; 쇟; 쇟; 쇟; ) HANGUL SYLLABLE SWAEH
+C1E0;C1E0;1109 116C;C1E0;1109 116C; # (쇠; 쇠; 쇠; 쇠; 쇠; ) HANGUL SYLLABLE SOE
+C1E1;C1E1;1109 116C 11A8;C1E1;1109 116C 11A8; # (쇡; 쇡; 쇡; 쇡; 쇡; ) HANGUL SYLLABLE SOEG
+C1E2;C1E2;1109 116C 11A9;C1E2;1109 116C 11A9; # (쇢; 쇢; 쇢; 쇢; 쇢; ) HANGUL SYLLABLE SOEGG
+C1E3;C1E3;1109 116C 11AA;C1E3;1109 116C 11AA; # (쇣; 쇣; 쇣; 쇣; 쇣; ) HANGUL SYLLABLE SOEGS
+C1E4;C1E4;1109 116C 11AB;C1E4;1109 116C 11AB; # (쇤; 쇤; 쇤; 쇤; 쇤; ) HANGUL SYLLABLE SOEN
+C1E5;C1E5;1109 116C 11AC;C1E5;1109 116C 11AC; # (쇥; 쇥; 쇥; 쇥; 쇥; ) HANGUL SYLLABLE SOENJ
+C1E6;C1E6;1109 116C 11AD;C1E6;1109 116C 11AD; # (쇦; 쇦; 쇦; 쇦; 쇦; ) HANGUL SYLLABLE SOENH
+C1E7;C1E7;1109 116C 11AE;C1E7;1109 116C 11AE; # (쇧; 쇧; 쇧; 쇧; 쇧; ) HANGUL SYLLABLE SOED
+C1E8;C1E8;1109 116C 11AF;C1E8;1109 116C 11AF; # (쇨; 쇨; 쇨; 쇨; 쇨; ) HANGUL SYLLABLE SOEL
+C1E9;C1E9;1109 116C 11B0;C1E9;1109 116C 11B0; # (쇩; 쇩; 쇩; 쇩; 쇩; ) HANGUL SYLLABLE SOELG
+C1EA;C1EA;1109 116C 11B1;C1EA;1109 116C 11B1; # (쇪; 쇪; 쇪; 쇪; 쇪; ) HANGUL SYLLABLE SOELM
+C1EB;C1EB;1109 116C 11B2;C1EB;1109 116C 11B2; # (쇫; 쇫; 쇫; 쇫; 쇫; ) HANGUL SYLLABLE SOELB
+C1EC;C1EC;1109 116C 11B3;C1EC;1109 116C 11B3; # (쇬; 쇬; 쇬; 쇬; 쇬; ) HANGUL SYLLABLE SOELS
+C1ED;C1ED;1109 116C 11B4;C1ED;1109 116C 11B4; # (쇭; 쇭; 쇭; 쇭; 쇭; ) HANGUL SYLLABLE SOELT
+C1EE;C1EE;1109 116C 11B5;C1EE;1109 116C 11B5; # (쇮; 쇮; 쇮; 쇮; 쇮; ) HANGUL SYLLABLE SOELP
+C1EF;C1EF;1109 116C 11B6;C1EF;1109 116C 11B6; # (쇯; 쇯; 쇯; 쇯; 쇯; ) HANGUL SYLLABLE SOELH
+C1F0;C1F0;1109 116C 11B7;C1F0;1109 116C 11B7; # (쇰; 쇰; 쇰; 쇰; 쇰; ) HANGUL SYLLABLE SOEM
+C1F1;C1F1;1109 116C 11B8;C1F1;1109 116C 11B8; # (쇱; 쇱; 쇱; 쇱; 쇱; ) HANGUL SYLLABLE SOEB
+C1F2;C1F2;1109 116C 11B9;C1F2;1109 116C 11B9; # (쇲; 쇲; 쇲; 쇲; 쇲; ) HANGUL SYLLABLE SOEBS
+C1F3;C1F3;1109 116C 11BA;C1F3;1109 116C 11BA; # (쇳; 쇳; 쇳; 쇳; 쇳; ) HANGUL SYLLABLE SOES
+C1F4;C1F4;1109 116C 11BB;C1F4;1109 116C 11BB; # (쇴; 쇴; 쇴; 쇴; 쇴; ) HANGUL SYLLABLE SOESS
+C1F5;C1F5;1109 116C 11BC;C1F5;1109 116C 11BC; # (쇵; 쇵; 쇵; 쇵; 쇵; ) HANGUL SYLLABLE SOENG
+C1F6;C1F6;1109 116C 11BD;C1F6;1109 116C 11BD; # (쇶; 쇶; 쇶; 쇶; 쇶; ) HANGUL SYLLABLE SOEJ
+C1F7;C1F7;1109 116C 11BE;C1F7;1109 116C 11BE; # (쇷; 쇷; 쇷; 쇷; 쇷; ) HANGUL SYLLABLE SOEC
+C1F8;C1F8;1109 116C 11BF;C1F8;1109 116C 11BF; # (쇸; 쇸; 쇸; 쇸; 쇸; ) HANGUL SYLLABLE SOEK
+C1F9;C1F9;1109 116C 11C0;C1F9;1109 116C 11C0; # (쇹; 쇹; 쇹; 쇹; 쇹; ) HANGUL SYLLABLE SOET
+C1FA;C1FA;1109 116C 11C1;C1FA;1109 116C 11C1; # (쇺; 쇺; 쇠á‡; 쇺; 쇠á‡; ) HANGUL SYLLABLE SOEP
+C1FB;C1FB;1109 116C 11C2;C1FB;1109 116C 11C2; # (쇻; 쇻; 쇻; 쇻; 쇻; ) HANGUL SYLLABLE SOEH
+C1FC;C1FC;1109 116D;C1FC;1109 116D; # (쇼; 쇼; 쇼; 쇼; 쇼; ) HANGUL SYLLABLE SYO
+C1FD;C1FD;1109 116D 11A8;C1FD;1109 116D 11A8; # (쇽; 쇽; 쇽; 쇽; 쇽; ) HANGUL SYLLABLE SYOG
+C1FE;C1FE;1109 116D 11A9;C1FE;1109 116D 11A9; # (쇾; 쇾; 쇾; 쇾; 쇾; ) HANGUL SYLLABLE SYOGG
+C1FF;C1FF;1109 116D 11AA;C1FF;1109 116D 11AA; # (쇿; 쇿; 쇿; 쇿; 쇿; ) HANGUL SYLLABLE SYOGS
+C200;C200;1109 116D 11AB;C200;1109 116D 11AB; # (숀; 숀; 숀; 숀; 숀; ) HANGUL SYLLABLE SYON
+C201;C201;1109 116D 11AC;C201;1109 116D 11AC; # (ìˆ; ìˆ; 숁; ìˆ; 숁; ) HANGUL SYLLABLE SYONJ
+C202;C202;1109 116D 11AD;C202;1109 116D 11AD; # (숂; 숂; 숂; 숂; 숂; ) HANGUL SYLLABLE SYONH
+C203;C203;1109 116D 11AE;C203;1109 116D 11AE; # (숃; 숃; 숃; 숃; 숃; ) HANGUL SYLLABLE SYOD
+C204;C204;1109 116D 11AF;C204;1109 116D 11AF; # (숄; 숄; 숄; 숄; 숄; ) HANGUL SYLLABLE SYOL
+C205;C205;1109 116D 11B0;C205;1109 116D 11B0; # (숅; 숅; 숅; 숅; 숅; ) HANGUL SYLLABLE SYOLG
+C206;C206;1109 116D 11B1;C206;1109 116D 11B1; # (숆; 숆; 숆; 숆; 숆; ) HANGUL SYLLABLE SYOLM
+C207;C207;1109 116D 11B2;C207;1109 116D 11B2; # (숇; 숇; 숇; 숇; 숇; ) HANGUL SYLLABLE SYOLB
+C208;C208;1109 116D 11B3;C208;1109 116D 11B3; # (숈; 숈; 숈; 숈; 숈; ) HANGUL SYLLABLE SYOLS
+C209;C209;1109 116D 11B4;C209;1109 116D 11B4; # (숉; 숉; 숉; 숉; 숉; ) HANGUL SYLLABLE SYOLT
+C20A;C20A;1109 116D 11B5;C20A;1109 116D 11B5; # (숊; 숊; 숊; 숊; 숊; ) HANGUL SYLLABLE SYOLP
+C20B;C20B;1109 116D 11B6;C20B;1109 116D 11B6; # (숋; 숋; 숋; 숋; 숋; ) HANGUL SYLLABLE SYOLH
+C20C;C20C;1109 116D 11B7;C20C;1109 116D 11B7; # (숌; 숌; 숌; 숌; 숌; ) HANGUL SYLLABLE SYOM
+C20D;C20D;1109 116D 11B8;C20D;1109 116D 11B8; # (ìˆ; ìˆ; 숍; ìˆ; 숍; ) HANGUL SYLLABLE SYOB
+C20E;C20E;1109 116D 11B9;C20E;1109 116D 11B9; # (숎; 숎; 숎; 숎; 숎; ) HANGUL SYLLABLE SYOBS
+C20F;C20F;1109 116D 11BA;C20F;1109 116D 11BA; # (ìˆ; ìˆ; 숏; ìˆ; 숏; ) HANGUL SYLLABLE SYOS
+C210;C210;1109 116D 11BB;C210;1109 116D 11BB; # (ìˆ; ìˆ; 숐; ìˆ; 숐; ) HANGUL SYLLABLE SYOSS
+C211;C211;1109 116D 11BC;C211;1109 116D 11BC; # (숑; 숑; 숑; 숑; 숑; ) HANGUL SYLLABLE SYONG
+C212;C212;1109 116D 11BD;C212;1109 116D 11BD; # (숒; 숒; 숒; 숒; 숒; ) HANGUL SYLLABLE SYOJ
+C213;C213;1109 116D 11BE;C213;1109 116D 11BE; # (숓; 숓; 숓; 숓; 숓; ) HANGUL SYLLABLE SYOC
+C214;C214;1109 116D 11BF;C214;1109 116D 11BF; # (숔; 숔; 숔; 숔; 숔; ) HANGUL SYLLABLE SYOK
+C215;C215;1109 116D 11C0;C215;1109 116D 11C0; # (숕; 숕; 숕; 숕; 숕; ) HANGUL SYLLABLE SYOT
+C216;C216;1109 116D 11C1;C216;1109 116D 11C1; # (숖; 숖; 쇼á‡; 숖; 쇼á‡; ) HANGUL SYLLABLE SYOP
+C217;C217;1109 116D 11C2;C217;1109 116D 11C2; # (숗; 숗; 숗; 숗; 숗; ) HANGUL SYLLABLE SYOH
+C218;C218;1109 116E;C218;1109 116E; # (수; 수; 수; 수; 수; ) HANGUL SYLLABLE SU
+C219;C219;1109 116E 11A8;C219;1109 116E 11A8; # (숙; 숙; 숙; 숙; 숙; ) HANGUL SYLLABLE SUG
+C21A;C21A;1109 116E 11A9;C21A;1109 116E 11A9; # (숚; 숚; 숚; 숚; 숚; ) HANGUL SYLLABLE SUGG
+C21B;C21B;1109 116E 11AA;C21B;1109 116E 11AA; # (숛; 숛; 숛; 숛; 숛; ) HANGUL SYLLABLE SUGS
+C21C;C21C;1109 116E 11AB;C21C;1109 116E 11AB; # (순; 순; 순; 순; 순; ) HANGUL SYLLABLE SUN
+C21D;C21D;1109 116E 11AC;C21D;1109 116E 11AC; # (ìˆ; ìˆ; 숝; ìˆ; 숝; ) HANGUL SYLLABLE SUNJ
+C21E;C21E;1109 116E 11AD;C21E;1109 116E 11AD; # (숞; 숞; 숞; 숞; 숞; ) HANGUL SYLLABLE SUNH
+C21F;C21F;1109 116E 11AE;C21F;1109 116E 11AE; # (숟; 숟; 숟; 숟; 숟; ) HANGUL SYLLABLE SUD
+C220;C220;1109 116E 11AF;C220;1109 116E 11AF; # (술; 술; 술; 술; 술; ) HANGUL SYLLABLE SUL
+C221;C221;1109 116E 11B0;C221;1109 116E 11B0; # (숡; 숡; 숡; 숡; 숡; ) HANGUL SYLLABLE SULG
+C222;C222;1109 116E 11B1;C222;1109 116E 11B1; # (숢; 숢; 숢; 숢; 숢; ) HANGUL SYLLABLE SULM
+C223;C223;1109 116E 11B2;C223;1109 116E 11B2; # (숣; 숣; 숣; 숣; 숣; ) HANGUL SYLLABLE SULB
+C224;C224;1109 116E 11B3;C224;1109 116E 11B3; # (숤; 숤; 숤; 숤; 숤; ) HANGUL SYLLABLE SULS
+C225;C225;1109 116E 11B4;C225;1109 116E 11B4; # (숥; 숥; 숥; 숥; 숥; ) HANGUL SYLLABLE SULT
+C226;C226;1109 116E 11B5;C226;1109 116E 11B5; # (숦; 숦; 숦; 숦; 숦; ) HANGUL SYLLABLE SULP
+C227;C227;1109 116E 11B6;C227;1109 116E 11B6; # (숧; 숧; 숧; 숧; 숧; ) HANGUL SYLLABLE SULH
+C228;C228;1109 116E 11B7;C228;1109 116E 11B7; # (숨; 숨; 숨; 숨; 숨; ) HANGUL SYLLABLE SUM
+C229;C229;1109 116E 11B8;C229;1109 116E 11B8; # (숩; 숩; 숩; 숩; 숩; ) HANGUL SYLLABLE SUB
+C22A;C22A;1109 116E 11B9;C22A;1109 116E 11B9; # (숪; 숪; 숪; 숪; 숪; ) HANGUL SYLLABLE SUBS
+C22B;C22B;1109 116E 11BA;C22B;1109 116E 11BA; # (숫; 숫; 숫; 숫; 숫; ) HANGUL SYLLABLE SUS
+C22C;C22C;1109 116E 11BB;C22C;1109 116E 11BB; # (숬; 숬; 숬; 숬; 숬; ) HANGUL SYLLABLE SUSS
+C22D;C22D;1109 116E 11BC;C22D;1109 116E 11BC; # (숭; 숭; 숭; 숭; 숭; ) HANGUL SYLLABLE SUNG
+C22E;C22E;1109 116E 11BD;C22E;1109 116E 11BD; # (숮; 숮; 숮; 숮; 숮; ) HANGUL SYLLABLE SUJ
+C22F;C22F;1109 116E 11BE;C22F;1109 116E 11BE; # (숯; 숯; 숯; 숯; 숯; ) HANGUL SYLLABLE SUC
+C230;C230;1109 116E 11BF;C230;1109 116E 11BF; # (숰; 숰; 숰; 숰; 숰; ) HANGUL SYLLABLE SUK
+C231;C231;1109 116E 11C0;C231;1109 116E 11C0; # (숱; 숱; 숱; 숱; 숱; ) HANGUL SYLLABLE SUT
+C232;C232;1109 116E 11C1;C232;1109 116E 11C1; # (숲; 숲; 수á‡; 숲; 수á‡; ) HANGUL SYLLABLE SUP
+C233;C233;1109 116E 11C2;C233;1109 116E 11C2; # (숳; 숳; 숳; 숳; 숳; ) HANGUL SYLLABLE SUH
+C234;C234;1109 116F;C234;1109 116F; # (숴; 숴; 숴; 숴; 숴; ) HANGUL SYLLABLE SWEO
+C235;C235;1109 116F 11A8;C235;1109 116F 11A8; # (숵; 숵; 숵; 숵; 숵; ) HANGUL SYLLABLE SWEOG
+C236;C236;1109 116F 11A9;C236;1109 116F 11A9; # (숶; 숶; 숶; 숶; 숶; ) HANGUL SYLLABLE SWEOGG
+C237;C237;1109 116F 11AA;C237;1109 116F 11AA; # (숷; 숷; 숷; 숷; 숷; ) HANGUL SYLLABLE SWEOGS
+C238;C238;1109 116F 11AB;C238;1109 116F 11AB; # (숸; 숸; 숸; 숸; 숸; ) HANGUL SYLLABLE SWEON
+C239;C239;1109 116F 11AC;C239;1109 116F 11AC; # (숹; 숹; 숹; 숹; 숹; ) HANGUL SYLLABLE SWEONJ
+C23A;C23A;1109 116F 11AD;C23A;1109 116F 11AD; # (숺; 숺; 숺; 숺; 숺; ) HANGUL SYLLABLE SWEONH
+C23B;C23B;1109 116F 11AE;C23B;1109 116F 11AE; # (숻; 숻; 숻; 숻; 숻; ) HANGUL SYLLABLE SWEOD
+C23C;C23C;1109 116F 11AF;C23C;1109 116F 11AF; # (숼; 숼; 숼; 숼; 숼; ) HANGUL SYLLABLE SWEOL
+C23D;C23D;1109 116F 11B0;C23D;1109 116F 11B0; # (숽; 숽; 숽; 숽; 숽; ) HANGUL SYLLABLE SWEOLG
+C23E;C23E;1109 116F 11B1;C23E;1109 116F 11B1; # (숾; 숾; 숾; 숾; 숾; ) HANGUL SYLLABLE SWEOLM
+C23F;C23F;1109 116F 11B2;C23F;1109 116F 11B2; # (숿; 숿; 숿; 숿; 숿; ) HANGUL SYLLABLE SWEOLB
+C240;C240;1109 116F 11B3;C240;1109 116F 11B3; # (쉀; 쉀; 쉀; 쉀; 쉀; ) HANGUL SYLLABLE SWEOLS
+C241;C241;1109 116F 11B4;C241;1109 116F 11B4; # (ì‰; ì‰; 쉁; ì‰; 쉁; ) HANGUL SYLLABLE SWEOLT
+C242;C242;1109 116F 11B5;C242;1109 116F 11B5; # (쉂; 쉂; 쉂; 쉂; 쉂; ) HANGUL SYLLABLE SWEOLP
+C243;C243;1109 116F 11B6;C243;1109 116F 11B6; # (쉃; 쉃; 쉃; 쉃; 쉃; ) HANGUL SYLLABLE SWEOLH
+C244;C244;1109 116F 11B7;C244;1109 116F 11B7; # (쉄; 쉄; 쉄; 쉄; 쉄; ) HANGUL SYLLABLE SWEOM
+C245;C245;1109 116F 11B8;C245;1109 116F 11B8; # (쉅; 쉅; 쉅; 쉅; 쉅; ) HANGUL SYLLABLE SWEOB
+C246;C246;1109 116F 11B9;C246;1109 116F 11B9; # (쉆; 쉆; 쉆; 쉆; 쉆; ) HANGUL SYLLABLE SWEOBS
+C247;C247;1109 116F 11BA;C247;1109 116F 11BA; # (쉇; 쉇; 쉇; 쉇; 쉇; ) HANGUL SYLLABLE SWEOS
+C248;C248;1109 116F 11BB;C248;1109 116F 11BB; # (쉈; 쉈; 쉈; 쉈; 쉈; ) HANGUL SYLLABLE SWEOSS
+C249;C249;1109 116F 11BC;C249;1109 116F 11BC; # (쉉; 쉉; 쉉; 쉉; 쉉; ) HANGUL SYLLABLE SWEONG
+C24A;C24A;1109 116F 11BD;C24A;1109 116F 11BD; # (쉊; 쉊; 쉊; 쉊; 쉊; ) HANGUL SYLLABLE SWEOJ
+C24B;C24B;1109 116F 11BE;C24B;1109 116F 11BE; # (쉋; 쉋; 쉋; 쉋; 쉋; ) HANGUL SYLLABLE SWEOC
+C24C;C24C;1109 116F 11BF;C24C;1109 116F 11BF; # (쉌; 쉌; 쉌; 쉌; 쉌; ) HANGUL SYLLABLE SWEOK
+C24D;C24D;1109 116F 11C0;C24D;1109 116F 11C0; # (ì‰; ì‰; 쉍; ì‰; 쉍; ) HANGUL SYLLABLE SWEOT
+C24E;C24E;1109 116F 11C1;C24E;1109 116F 11C1; # (쉎; 쉎; 숴á‡; 쉎; 숴á‡; ) HANGUL SYLLABLE SWEOP
+C24F;C24F;1109 116F 11C2;C24F;1109 116F 11C2; # (ì‰; ì‰; 쉏; ì‰; 쉏; ) HANGUL SYLLABLE SWEOH
+C250;C250;1109 1170;C250;1109 1170; # (ì‰; ì‰; 쉐; ì‰; 쉐; ) HANGUL SYLLABLE SWE
+C251;C251;1109 1170 11A8;C251;1109 1170 11A8; # (쉑; 쉑; 쉑; 쉑; 쉑; ) HANGUL SYLLABLE SWEG
+C252;C252;1109 1170 11A9;C252;1109 1170 11A9; # (쉒; 쉒; 쉒; 쉒; 쉒; ) HANGUL SYLLABLE SWEGG
+C253;C253;1109 1170 11AA;C253;1109 1170 11AA; # (쉓; 쉓; 쉓; 쉓; 쉓; ) HANGUL SYLLABLE SWEGS
+C254;C254;1109 1170 11AB;C254;1109 1170 11AB; # (쉔; 쉔; 쉔; 쉔; 쉔; ) HANGUL SYLLABLE SWEN
+C255;C255;1109 1170 11AC;C255;1109 1170 11AC; # (쉕; 쉕; 쉕; 쉕; 쉕; ) HANGUL SYLLABLE SWENJ
+C256;C256;1109 1170 11AD;C256;1109 1170 11AD; # (쉖; 쉖; 쉖; 쉖; 쉖; ) HANGUL SYLLABLE SWENH
+C257;C257;1109 1170 11AE;C257;1109 1170 11AE; # (쉗; 쉗; 쉗; 쉗; 쉗; ) HANGUL SYLLABLE SWED
+C258;C258;1109 1170 11AF;C258;1109 1170 11AF; # (쉘; 쉘; 쉘; 쉘; 쉘; ) HANGUL SYLLABLE SWEL
+C259;C259;1109 1170 11B0;C259;1109 1170 11B0; # (쉙; 쉙; 쉙; 쉙; 쉙; ) HANGUL SYLLABLE SWELG
+C25A;C25A;1109 1170 11B1;C25A;1109 1170 11B1; # (쉚; 쉚; 쉚; 쉚; 쉚; ) HANGUL SYLLABLE SWELM
+C25B;C25B;1109 1170 11B2;C25B;1109 1170 11B2; # (쉛; 쉛; 쉛; 쉛; 쉛; ) HANGUL SYLLABLE SWELB
+C25C;C25C;1109 1170 11B3;C25C;1109 1170 11B3; # (쉜; 쉜; 쉜; 쉜; 쉜; ) HANGUL SYLLABLE SWELS
+C25D;C25D;1109 1170 11B4;C25D;1109 1170 11B4; # (ì‰; ì‰; 쉝; ì‰; 쉝; ) HANGUL SYLLABLE SWELT
+C25E;C25E;1109 1170 11B5;C25E;1109 1170 11B5; # (쉞; 쉞; 쉞; 쉞; 쉞; ) HANGUL SYLLABLE SWELP
+C25F;C25F;1109 1170 11B6;C25F;1109 1170 11B6; # (쉟; 쉟; 쉟; 쉟; 쉟; ) HANGUL SYLLABLE SWELH
+C260;C260;1109 1170 11B7;C260;1109 1170 11B7; # (쉠; 쉠; 쉠; 쉠; 쉠; ) HANGUL SYLLABLE SWEM
+C261;C261;1109 1170 11B8;C261;1109 1170 11B8; # (쉡; 쉡; 쉡; 쉡; 쉡; ) HANGUL SYLLABLE SWEB
+C262;C262;1109 1170 11B9;C262;1109 1170 11B9; # (쉢; 쉢; 쉢; 쉢; 쉢; ) HANGUL SYLLABLE SWEBS
+C263;C263;1109 1170 11BA;C263;1109 1170 11BA; # (쉣; 쉣; 쉣; 쉣; 쉣; ) HANGUL SYLLABLE SWES
+C264;C264;1109 1170 11BB;C264;1109 1170 11BB; # (쉤; 쉤; 쉤; 쉤; 쉤; ) HANGUL SYLLABLE SWESS
+C265;C265;1109 1170 11BC;C265;1109 1170 11BC; # (쉥; 쉥; 쉥; 쉥; 쉥; ) HANGUL SYLLABLE SWENG
+C266;C266;1109 1170 11BD;C266;1109 1170 11BD; # (쉦; 쉦; 쉦; 쉦; 쉦; ) HANGUL SYLLABLE SWEJ
+C267;C267;1109 1170 11BE;C267;1109 1170 11BE; # (쉧; 쉧; 쉧; 쉧; 쉧; ) HANGUL SYLLABLE SWEC
+C268;C268;1109 1170 11BF;C268;1109 1170 11BF; # (쉨; 쉨; 쉨; 쉨; 쉨; ) HANGUL SYLLABLE SWEK
+C269;C269;1109 1170 11C0;C269;1109 1170 11C0; # (쉩; 쉩; 쉩; 쉩; 쉩; ) HANGUL SYLLABLE SWET
+C26A;C26A;1109 1170 11C1;C26A;1109 1170 11C1; # (쉪; 쉪; 쉐á‡; 쉪; 쉐á‡; ) HANGUL SYLLABLE SWEP
+C26B;C26B;1109 1170 11C2;C26B;1109 1170 11C2; # (쉫; 쉫; 쉫; 쉫; 쉫; ) HANGUL SYLLABLE SWEH
+C26C;C26C;1109 1171;C26C;1109 1171; # (쉬; 쉬; 쉬; 쉬; 쉬; ) HANGUL SYLLABLE SWI
+C26D;C26D;1109 1171 11A8;C26D;1109 1171 11A8; # (쉭; 쉭; 쉭; 쉭; 쉭; ) HANGUL SYLLABLE SWIG
+C26E;C26E;1109 1171 11A9;C26E;1109 1171 11A9; # (쉮; 쉮; 쉮; 쉮; 쉮; ) HANGUL SYLLABLE SWIGG
+C26F;C26F;1109 1171 11AA;C26F;1109 1171 11AA; # (쉯; 쉯; 쉯; 쉯; 쉯; ) HANGUL SYLLABLE SWIGS
+C270;C270;1109 1171 11AB;C270;1109 1171 11AB; # (쉰; 쉰; 쉰; 쉰; 쉰; ) HANGUL SYLLABLE SWIN
+C271;C271;1109 1171 11AC;C271;1109 1171 11AC; # (쉱; 쉱; 쉱; 쉱; 쉱; ) HANGUL SYLLABLE SWINJ
+C272;C272;1109 1171 11AD;C272;1109 1171 11AD; # (쉲; 쉲; 쉲; 쉲; 쉲; ) HANGUL SYLLABLE SWINH
+C273;C273;1109 1171 11AE;C273;1109 1171 11AE; # (쉳; 쉳; 쉳; 쉳; 쉳; ) HANGUL SYLLABLE SWID
+C274;C274;1109 1171 11AF;C274;1109 1171 11AF; # (쉴; 쉴; 쉴; 쉴; 쉴; ) HANGUL SYLLABLE SWIL
+C275;C275;1109 1171 11B0;C275;1109 1171 11B0; # (쉵; 쉵; 쉵; 쉵; 쉵; ) HANGUL SYLLABLE SWILG
+C276;C276;1109 1171 11B1;C276;1109 1171 11B1; # (쉶; 쉶; 쉶; 쉶; 쉶; ) HANGUL SYLLABLE SWILM
+C277;C277;1109 1171 11B2;C277;1109 1171 11B2; # (쉷; 쉷; 쉷; 쉷; 쉷; ) HANGUL SYLLABLE SWILB
+C278;C278;1109 1171 11B3;C278;1109 1171 11B3; # (쉸; 쉸; 쉸; 쉸; 쉸; ) HANGUL SYLLABLE SWILS
+C279;C279;1109 1171 11B4;C279;1109 1171 11B4; # (쉹; 쉹; 쉹; 쉹; 쉹; ) HANGUL SYLLABLE SWILT
+C27A;C27A;1109 1171 11B5;C27A;1109 1171 11B5; # (쉺; 쉺; 쉺; 쉺; 쉺; ) HANGUL SYLLABLE SWILP
+C27B;C27B;1109 1171 11B6;C27B;1109 1171 11B6; # (쉻; 쉻; 쉻; 쉻; 쉻; ) HANGUL SYLLABLE SWILH
+C27C;C27C;1109 1171 11B7;C27C;1109 1171 11B7; # (쉼; 쉼; 쉼; 쉼; 쉼; ) HANGUL SYLLABLE SWIM
+C27D;C27D;1109 1171 11B8;C27D;1109 1171 11B8; # (쉽; 쉽; 쉽; 쉽; 쉽; ) HANGUL SYLLABLE SWIB
+C27E;C27E;1109 1171 11B9;C27E;1109 1171 11B9; # (쉾; 쉾; 쉾; 쉾; 쉾; ) HANGUL SYLLABLE SWIBS
+C27F;C27F;1109 1171 11BA;C27F;1109 1171 11BA; # (쉿; 쉿; 쉿; 쉿; 쉿; ) HANGUL SYLLABLE SWIS
+C280;C280;1109 1171 11BB;C280;1109 1171 11BB; # (슀; 슀; 슀; 슀; 슀; ) HANGUL SYLLABLE SWISS
+C281;C281;1109 1171 11BC;C281;1109 1171 11BC; # (ìŠ; ìŠ; 슁; ìŠ; 슁; ) HANGUL SYLLABLE SWING
+C282;C282;1109 1171 11BD;C282;1109 1171 11BD; # (슂; 슂; 슂; 슂; 슂; ) HANGUL SYLLABLE SWIJ
+C283;C283;1109 1171 11BE;C283;1109 1171 11BE; # (슃; 슃; 슃; 슃; 슃; ) HANGUL SYLLABLE SWIC
+C284;C284;1109 1171 11BF;C284;1109 1171 11BF; # (슄; 슄; 슄; 슄; 슄; ) HANGUL SYLLABLE SWIK
+C285;C285;1109 1171 11C0;C285;1109 1171 11C0; # (슅; 슅; 슅; 슅; 슅; ) HANGUL SYLLABLE SWIT
+C286;C286;1109 1171 11C1;C286;1109 1171 11C1; # (슆; 슆; 쉬á‡; 슆; 쉬á‡; ) HANGUL SYLLABLE SWIP
+C287;C287;1109 1171 11C2;C287;1109 1171 11C2; # (슇; 슇; 슇; 슇; 슇; ) HANGUL SYLLABLE SWIH
+C288;C288;1109 1172;C288;1109 1172; # (슈; 슈; 슈; 슈; 슈; ) HANGUL SYLLABLE SYU
+C289;C289;1109 1172 11A8;C289;1109 1172 11A8; # (슉; 슉; 슉; 슉; 슉; ) HANGUL SYLLABLE SYUG
+C28A;C28A;1109 1172 11A9;C28A;1109 1172 11A9; # (슊; 슊; 슊; 슊; 슊; ) HANGUL SYLLABLE SYUGG
+C28B;C28B;1109 1172 11AA;C28B;1109 1172 11AA; # (슋; 슋; 슋; 슋; 슋; ) HANGUL SYLLABLE SYUGS
+C28C;C28C;1109 1172 11AB;C28C;1109 1172 11AB; # (슌; 슌; 슌; 슌; 슌; ) HANGUL SYLLABLE SYUN
+C28D;C28D;1109 1172 11AC;C28D;1109 1172 11AC; # (ìŠ; ìŠ; 슍; ìŠ; 슍; ) HANGUL SYLLABLE SYUNJ
+C28E;C28E;1109 1172 11AD;C28E;1109 1172 11AD; # (슎; 슎; 슎; 슎; 슎; ) HANGUL SYLLABLE SYUNH
+C28F;C28F;1109 1172 11AE;C28F;1109 1172 11AE; # (ìŠ; ìŠ; 슏; ìŠ; 슏; ) HANGUL SYLLABLE SYUD
+C290;C290;1109 1172 11AF;C290;1109 1172 11AF; # (ìŠ; ìŠ; 슐; ìŠ; 슐; ) HANGUL SYLLABLE SYUL
+C291;C291;1109 1172 11B0;C291;1109 1172 11B0; # (슑; 슑; 슑; 슑; 슑; ) HANGUL SYLLABLE SYULG
+C292;C292;1109 1172 11B1;C292;1109 1172 11B1; # (슒; 슒; 슒; 슒; 슒; ) HANGUL SYLLABLE SYULM
+C293;C293;1109 1172 11B2;C293;1109 1172 11B2; # (슓; 슓; 슓; 슓; 슓; ) HANGUL SYLLABLE SYULB
+C294;C294;1109 1172 11B3;C294;1109 1172 11B3; # (슔; 슔; 슔; 슔; 슔; ) HANGUL SYLLABLE SYULS
+C295;C295;1109 1172 11B4;C295;1109 1172 11B4; # (슕; 슕; 슕; 슕; 슕; ) HANGUL SYLLABLE SYULT
+C296;C296;1109 1172 11B5;C296;1109 1172 11B5; # (슖; 슖; 슖; 슖; 슖; ) HANGUL SYLLABLE SYULP
+C297;C297;1109 1172 11B6;C297;1109 1172 11B6; # (슗; 슗; 슗; 슗; 슗; ) HANGUL SYLLABLE SYULH
+C298;C298;1109 1172 11B7;C298;1109 1172 11B7; # (슘; 슘; 슘; 슘; 슘; ) HANGUL SYLLABLE SYUM
+C299;C299;1109 1172 11B8;C299;1109 1172 11B8; # (슙; 슙; 슙; 슙; 슙; ) HANGUL SYLLABLE SYUB
+C29A;C29A;1109 1172 11B9;C29A;1109 1172 11B9; # (슚; 슚; 슚; 슚; 슚; ) HANGUL SYLLABLE SYUBS
+C29B;C29B;1109 1172 11BA;C29B;1109 1172 11BA; # (슛; 슛; 슛; 슛; 슛; ) HANGUL SYLLABLE SYUS
+C29C;C29C;1109 1172 11BB;C29C;1109 1172 11BB; # (슜; 슜; 슜; 슜; 슜; ) HANGUL SYLLABLE SYUSS
+C29D;C29D;1109 1172 11BC;C29D;1109 1172 11BC; # (ìŠ; ìŠ; 슝; ìŠ; 슝; ) HANGUL SYLLABLE SYUNG
+C29E;C29E;1109 1172 11BD;C29E;1109 1172 11BD; # (슞; 슞; 슞; 슞; 슞; ) HANGUL SYLLABLE SYUJ
+C29F;C29F;1109 1172 11BE;C29F;1109 1172 11BE; # (슟; 슟; 슟; 슟; 슟; ) HANGUL SYLLABLE SYUC
+C2A0;C2A0;1109 1172 11BF;C2A0;1109 1172 11BF; # (슠; 슠; 슠; 슠; 슠; ) HANGUL SYLLABLE SYUK
+C2A1;C2A1;1109 1172 11C0;C2A1;1109 1172 11C0; # (슡; 슡; 슡; 슡; 슡; ) HANGUL SYLLABLE SYUT
+C2A2;C2A2;1109 1172 11C1;C2A2;1109 1172 11C1; # (슢; 슢; 슈á‡; 슢; 슈á‡; ) HANGUL SYLLABLE SYUP
+C2A3;C2A3;1109 1172 11C2;C2A3;1109 1172 11C2; # (슣; 슣; 슣; 슣; 슣; ) HANGUL SYLLABLE SYUH
+C2A4;C2A4;1109 1173;C2A4;1109 1173; # (스; 스; 스; 스; 스; ) HANGUL SYLLABLE SEU
+C2A5;C2A5;1109 1173 11A8;C2A5;1109 1173 11A8; # (슥; 슥; 슥; 슥; 슥; ) HANGUL SYLLABLE SEUG
+C2A6;C2A6;1109 1173 11A9;C2A6;1109 1173 11A9; # (슦; 슦; 슦; 슦; 슦; ) HANGUL SYLLABLE SEUGG
+C2A7;C2A7;1109 1173 11AA;C2A7;1109 1173 11AA; # (슧; 슧; 슧; 슧; 슧; ) HANGUL SYLLABLE SEUGS
+C2A8;C2A8;1109 1173 11AB;C2A8;1109 1173 11AB; # (슨; 슨; 슨; 슨; 슨; ) HANGUL SYLLABLE SEUN
+C2A9;C2A9;1109 1173 11AC;C2A9;1109 1173 11AC; # (슩; 슩; 슩; 슩; 슩; ) HANGUL SYLLABLE SEUNJ
+C2AA;C2AA;1109 1173 11AD;C2AA;1109 1173 11AD; # (슪; 슪; 슪; 슪; 슪; ) HANGUL SYLLABLE SEUNH
+C2AB;C2AB;1109 1173 11AE;C2AB;1109 1173 11AE; # (슫; 슫; 슫; 슫; 슫; ) HANGUL SYLLABLE SEUD
+C2AC;C2AC;1109 1173 11AF;C2AC;1109 1173 11AF; # (슬; 슬; 슬; 슬; 슬; ) HANGUL SYLLABLE SEUL
+C2AD;C2AD;1109 1173 11B0;C2AD;1109 1173 11B0; # (슭; 슭; 슭; 슭; 슭; ) HANGUL SYLLABLE SEULG
+C2AE;C2AE;1109 1173 11B1;C2AE;1109 1173 11B1; # (슮; 슮; 슮; 슮; 슮; ) HANGUL SYLLABLE SEULM
+C2AF;C2AF;1109 1173 11B2;C2AF;1109 1173 11B2; # (슯; 슯; 슯; 슯; 슯; ) HANGUL SYLLABLE SEULB
+C2B0;C2B0;1109 1173 11B3;C2B0;1109 1173 11B3; # (슰; 슰; 슰; 슰; 슰; ) HANGUL SYLLABLE SEULS
+C2B1;C2B1;1109 1173 11B4;C2B1;1109 1173 11B4; # (슱; 슱; 슱; 슱; 슱; ) HANGUL SYLLABLE SEULT
+C2B2;C2B2;1109 1173 11B5;C2B2;1109 1173 11B5; # (슲; 슲; 슲; 슲; 슲; ) HANGUL SYLLABLE SEULP
+C2B3;C2B3;1109 1173 11B6;C2B3;1109 1173 11B6; # (슳; 슳; 슳; 슳; 슳; ) HANGUL SYLLABLE SEULH
+C2B4;C2B4;1109 1173 11B7;C2B4;1109 1173 11B7; # (슴; 슴; 슴; 슴; 슴; ) HANGUL SYLLABLE SEUM
+C2B5;C2B5;1109 1173 11B8;C2B5;1109 1173 11B8; # (습; 습; 습; 습; 습; ) HANGUL SYLLABLE SEUB
+C2B6;C2B6;1109 1173 11B9;C2B6;1109 1173 11B9; # (슶; 슶; 슶; 슶; 슶; ) HANGUL SYLLABLE SEUBS
+C2B7;C2B7;1109 1173 11BA;C2B7;1109 1173 11BA; # (슷; 슷; 슷; 슷; 슷; ) HANGUL SYLLABLE SEUS
+C2B8;C2B8;1109 1173 11BB;C2B8;1109 1173 11BB; # (슸; 슸; 슸; 슸; 슸; ) HANGUL SYLLABLE SEUSS
+C2B9;C2B9;1109 1173 11BC;C2B9;1109 1173 11BC; # (승; 승; 승; 승; 승; ) HANGUL SYLLABLE SEUNG
+C2BA;C2BA;1109 1173 11BD;C2BA;1109 1173 11BD; # (슺; 슺; 슺; 슺; 슺; ) HANGUL SYLLABLE SEUJ
+C2BB;C2BB;1109 1173 11BE;C2BB;1109 1173 11BE; # (슻; 슻; 슻; 슻; 슻; ) HANGUL SYLLABLE SEUC
+C2BC;C2BC;1109 1173 11BF;C2BC;1109 1173 11BF; # (슼; 슼; 슼; 슼; 슼; ) HANGUL SYLLABLE SEUK
+C2BD;C2BD;1109 1173 11C0;C2BD;1109 1173 11C0; # (슽; 슽; 슽; 슽; 슽; ) HANGUL SYLLABLE SEUT
+C2BE;C2BE;1109 1173 11C1;C2BE;1109 1173 11C1; # (슾; 슾; 스á‡; 슾; 스á‡; ) HANGUL SYLLABLE SEUP
+C2BF;C2BF;1109 1173 11C2;C2BF;1109 1173 11C2; # (슿; 슿; 슿; 슿; 슿; ) HANGUL SYLLABLE SEUH
+C2C0;C2C0;1109 1174;C2C0;1109 1174; # (싀; 싀; 싀; 싀; 싀; ) HANGUL SYLLABLE SYI
+C2C1;C2C1;1109 1174 11A8;C2C1;1109 1174 11A8; # (ì‹; ì‹; 싁; ì‹; 싁; ) HANGUL SYLLABLE SYIG
+C2C2;C2C2;1109 1174 11A9;C2C2;1109 1174 11A9; # (싂; 싂; 싂; 싂; 싂; ) HANGUL SYLLABLE SYIGG
+C2C3;C2C3;1109 1174 11AA;C2C3;1109 1174 11AA; # (싃; 싃; 싃; 싃; 싃; ) HANGUL SYLLABLE SYIGS
+C2C4;C2C4;1109 1174 11AB;C2C4;1109 1174 11AB; # (싄; 싄; 싄; 싄; 싄; ) HANGUL SYLLABLE SYIN
+C2C5;C2C5;1109 1174 11AC;C2C5;1109 1174 11AC; # (싅; 싅; 싅; 싅; 싅; ) HANGUL SYLLABLE SYINJ
+C2C6;C2C6;1109 1174 11AD;C2C6;1109 1174 11AD; # (싆; 싆; 싆; 싆; 싆; ) HANGUL SYLLABLE SYINH
+C2C7;C2C7;1109 1174 11AE;C2C7;1109 1174 11AE; # (싇; 싇; 싇; 싇; 싇; ) HANGUL SYLLABLE SYID
+C2C8;C2C8;1109 1174 11AF;C2C8;1109 1174 11AF; # (싈; 싈; 싈; 싈; 싈; ) HANGUL SYLLABLE SYIL
+C2C9;C2C9;1109 1174 11B0;C2C9;1109 1174 11B0; # (싉; 싉; 싉; 싉; 싉; ) HANGUL SYLLABLE SYILG
+C2CA;C2CA;1109 1174 11B1;C2CA;1109 1174 11B1; # (싊; 싊; 싊; 싊; 싊; ) HANGUL SYLLABLE SYILM
+C2CB;C2CB;1109 1174 11B2;C2CB;1109 1174 11B2; # (싋; 싋; 싋; 싋; 싋; ) HANGUL SYLLABLE SYILB
+C2CC;C2CC;1109 1174 11B3;C2CC;1109 1174 11B3; # (싌; 싌; 싌; 싌; 싌; ) HANGUL SYLLABLE SYILS
+C2CD;C2CD;1109 1174 11B4;C2CD;1109 1174 11B4; # (ì‹; ì‹; 싍; ì‹; 싍; ) HANGUL SYLLABLE SYILT
+C2CE;C2CE;1109 1174 11B5;C2CE;1109 1174 11B5; # (싎; 싎; 싎; 싎; 싎; ) HANGUL SYLLABLE SYILP
+C2CF;C2CF;1109 1174 11B6;C2CF;1109 1174 11B6; # (ì‹; ì‹; 싏; ì‹; 싏; ) HANGUL SYLLABLE SYILH
+C2D0;C2D0;1109 1174 11B7;C2D0;1109 1174 11B7; # (ì‹; ì‹; 싐; ì‹; 싐; ) HANGUL SYLLABLE SYIM
+C2D1;C2D1;1109 1174 11B8;C2D1;1109 1174 11B8; # (싑; 싑; 싑; 싑; 싑; ) HANGUL SYLLABLE SYIB
+C2D2;C2D2;1109 1174 11B9;C2D2;1109 1174 11B9; # (싒; 싒; 싒; 싒; 싒; ) HANGUL SYLLABLE SYIBS
+C2D3;C2D3;1109 1174 11BA;C2D3;1109 1174 11BA; # (싓; 싓; 싓; 싓; 싓; ) HANGUL SYLLABLE SYIS
+C2D4;C2D4;1109 1174 11BB;C2D4;1109 1174 11BB; # (싔; 싔; 싔; 싔; 싔; ) HANGUL SYLLABLE SYISS
+C2D5;C2D5;1109 1174 11BC;C2D5;1109 1174 11BC; # (싕; 싕; 싕; 싕; 싕; ) HANGUL SYLLABLE SYING
+C2D6;C2D6;1109 1174 11BD;C2D6;1109 1174 11BD; # (싖; 싖; 싖; 싖; 싖; ) HANGUL SYLLABLE SYIJ
+C2D7;C2D7;1109 1174 11BE;C2D7;1109 1174 11BE; # (싗; 싗; 싗; 싗; 싗; ) HANGUL SYLLABLE SYIC
+C2D8;C2D8;1109 1174 11BF;C2D8;1109 1174 11BF; # (싘; 싘; 싘; 싘; 싘; ) HANGUL SYLLABLE SYIK
+C2D9;C2D9;1109 1174 11C0;C2D9;1109 1174 11C0; # (싙; 싙; 싙; 싙; 싙; ) HANGUL SYLLABLE SYIT
+C2DA;C2DA;1109 1174 11C1;C2DA;1109 1174 11C1; # (ì‹š; ì‹š; 싀á‡; ì‹š; 싀á‡; ) HANGUL SYLLABLE SYIP
+C2DB;C2DB;1109 1174 11C2;C2DB;1109 1174 11C2; # (싛; 싛; 싛; 싛; 싛; ) HANGUL SYLLABLE SYIH
+C2DC;C2DC;1109 1175;C2DC;1109 1175; # (시; 시; 시; 시; 시; ) HANGUL SYLLABLE SI
+C2DD;C2DD;1109 1175 11A8;C2DD;1109 1175 11A8; # (ì‹; ì‹; 식; ì‹; 식; ) HANGUL SYLLABLE SIG
+C2DE;C2DE;1109 1175 11A9;C2DE;1109 1175 11A9; # (싞; 싞; 싞; 싞; 싞; ) HANGUL SYLLABLE SIGG
+C2DF;C2DF;1109 1175 11AA;C2DF;1109 1175 11AA; # (싟; 싟; 싟; 싟; 싟; ) HANGUL SYLLABLE SIGS
+C2E0;C2E0;1109 1175 11AB;C2E0;1109 1175 11AB; # (신; 신; 신; 신; 신; ) HANGUL SYLLABLE SIN
+C2E1;C2E1;1109 1175 11AC;C2E1;1109 1175 11AC; # (싡; 싡; 싡; 싡; 싡; ) HANGUL SYLLABLE SINJ
+C2E2;C2E2;1109 1175 11AD;C2E2;1109 1175 11AD; # (싢; 싢; 싢; 싢; 싢; ) HANGUL SYLLABLE SINH
+C2E3;C2E3;1109 1175 11AE;C2E3;1109 1175 11AE; # (싣; 싣; 싣; 싣; 싣; ) HANGUL SYLLABLE SID
+C2E4;C2E4;1109 1175 11AF;C2E4;1109 1175 11AF; # (실; 실; 실; 실; 실; ) HANGUL SYLLABLE SIL
+C2E5;C2E5;1109 1175 11B0;C2E5;1109 1175 11B0; # (싥; 싥; 싥; 싥; 싥; ) HANGUL SYLLABLE SILG
+C2E6;C2E6;1109 1175 11B1;C2E6;1109 1175 11B1; # (싦; 싦; 싦; 싦; 싦; ) HANGUL SYLLABLE SILM
+C2E7;C2E7;1109 1175 11B2;C2E7;1109 1175 11B2; # (싧; 싧; 싧; 싧; 싧; ) HANGUL SYLLABLE SILB
+C2E8;C2E8;1109 1175 11B3;C2E8;1109 1175 11B3; # (싨; 싨; 싨; 싨; 싨; ) HANGUL SYLLABLE SILS
+C2E9;C2E9;1109 1175 11B4;C2E9;1109 1175 11B4; # (싩; 싩; 싩; 싩; 싩; ) HANGUL SYLLABLE SILT
+C2EA;C2EA;1109 1175 11B5;C2EA;1109 1175 11B5; # (싪; 싪; 싪; 싪; 싪; ) HANGUL SYLLABLE SILP
+C2EB;C2EB;1109 1175 11B6;C2EB;1109 1175 11B6; # (싫; 싫; 싫; 싫; 싫; ) HANGUL SYLLABLE SILH
+C2EC;C2EC;1109 1175 11B7;C2EC;1109 1175 11B7; # (심; 심; 심; 심; 심; ) HANGUL SYLLABLE SIM
+C2ED;C2ED;1109 1175 11B8;C2ED;1109 1175 11B8; # (십; 십; 십; 십; 십; ) HANGUL SYLLABLE SIB
+C2EE;C2EE;1109 1175 11B9;C2EE;1109 1175 11B9; # (싮; 싮; 싮; 싮; 싮; ) HANGUL SYLLABLE SIBS
+C2EF;C2EF;1109 1175 11BA;C2EF;1109 1175 11BA; # (싯; 싯; 싯; 싯; 싯; ) HANGUL SYLLABLE SIS
+C2F0;C2F0;1109 1175 11BB;C2F0;1109 1175 11BB; # (싰; 싰; 싰; 싰; 싰; ) HANGUL SYLLABLE SISS
+C2F1;C2F1;1109 1175 11BC;C2F1;1109 1175 11BC; # (싱; 싱; 싱; 싱; 싱; ) HANGUL SYLLABLE SING
+C2F2;C2F2;1109 1175 11BD;C2F2;1109 1175 11BD; # (싲; 싲; 싲; 싲; 싲; ) HANGUL SYLLABLE SIJ
+C2F3;C2F3;1109 1175 11BE;C2F3;1109 1175 11BE; # (싳; 싳; 싳; 싳; 싳; ) HANGUL SYLLABLE SIC
+C2F4;C2F4;1109 1175 11BF;C2F4;1109 1175 11BF; # (싴; 싴; 싴; 싴; 싴; ) HANGUL SYLLABLE SIK
+C2F5;C2F5;1109 1175 11C0;C2F5;1109 1175 11C0; # (싵; 싵; 싵; 싵; 싵; ) HANGUL SYLLABLE SIT
+C2F6;C2F6;1109 1175 11C1;C2F6;1109 1175 11C1; # (싶; 싶; 시á‡; 싶; 시á‡; ) HANGUL SYLLABLE SIP
+C2F7;C2F7;1109 1175 11C2;C2F7;1109 1175 11C2; # (싷; 싷; 싷; 싷; 싷; ) HANGUL SYLLABLE SIH
+C2F8;C2F8;110A 1161;C2F8;110A 1161; # (싸; 싸; 싸; 싸; 싸; ) HANGUL SYLLABLE SSA
+C2F9;C2F9;110A 1161 11A8;C2F9;110A 1161 11A8; # (싹; 싹; 싹; 싹; 싹; ) HANGUL SYLLABLE SSAG
+C2FA;C2FA;110A 1161 11A9;C2FA;110A 1161 11A9; # (싺; 싺; 싺; 싺; 싺; ) HANGUL SYLLABLE SSAGG
+C2FB;C2FB;110A 1161 11AA;C2FB;110A 1161 11AA; # (싻; 싻; 싻; 싻; 싻; ) HANGUL SYLLABLE SSAGS
+C2FC;C2FC;110A 1161 11AB;C2FC;110A 1161 11AB; # (싼; 싼; 싼; 싼; 싼; ) HANGUL SYLLABLE SSAN
+C2FD;C2FD;110A 1161 11AC;C2FD;110A 1161 11AC; # (싽; 싽; 싽; 싽; 싽; ) HANGUL SYLLABLE SSANJ
+C2FE;C2FE;110A 1161 11AD;C2FE;110A 1161 11AD; # (싾; 싾; 싾; 싾; 싾; ) HANGUL SYLLABLE SSANH
+C2FF;C2FF;110A 1161 11AE;C2FF;110A 1161 11AE; # (싿; 싿; 싿; 싿; 싿; ) HANGUL SYLLABLE SSAD
+C300;C300;110A 1161 11AF;C300;110A 1161 11AF; # (쌀; 쌀; 쌀; 쌀; 쌀; ) HANGUL SYLLABLE SSAL
+C301;C301;110A 1161 11B0;C301;110A 1161 11B0; # (ìŒ; ìŒ; 쌁; ìŒ; 쌁; ) HANGUL SYLLABLE SSALG
+C302;C302;110A 1161 11B1;C302;110A 1161 11B1; # (쌂; 쌂; 쌂; 쌂; 쌂; ) HANGUL SYLLABLE SSALM
+C303;C303;110A 1161 11B2;C303;110A 1161 11B2; # (쌃; 쌃; 쌃; 쌃; 쌃; ) HANGUL SYLLABLE SSALB
+C304;C304;110A 1161 11B3;C304;110A 1161 11B3; # (쌄; 쌄; 쌄; 쌄; 쌄; ) HANGUL SYLLABLE SSALS
+C305;C305;110A 1161 11B4;C305;110A 1161 11B4; # (쌅; 쌅; 쌅; 쌅; 쌅; ) HANGUL SYLLABLE SSALT
+C306;C306;110A 1161 11B5;C306;110A 1161 11B5; # (쌆; 쌆; 쌆; 쌆; 쌆; ) HANGUL SYLLABLE SSALP
+C307;C307;110A 1161 11B6;C307;110A 1161 11B6; # (쌇; 쌇; 쌇; 쌇; 쌇; ) HANGUL SYLLABLE SSALH
+C308;C308;110A 1161 11B7;C308;110A 1161 11B7; # (쌈; 쌈; 쌈; 쌈; 쌈; ) HANGUL SYLLABLE SSAM
+C309;C309;110A 1161 11B8;C309;110A 1161 11B8; # (쌉; 쌉; 쌉; 쌉; 쌉; ) HANGUL SYLLABLE SSAB
+C30A;C30A;110A 1161 11B9;C30A;110A 1161 11B9; # (쌊; 쌊; 쌊; 쌊; 쌊; ) HANGUL SYLLABLE SSABS
+C30B;C30B;110A 1161 11BA;C30B;110A 1161 11BA; # (쌋; 쌋; 쌋; 쌋; 쌋; ) HANGUL SYLLABLE SSAS
+C30C;C30C;110A 1161 11BB;C30C;110A 1161 11BB; # (쌌; 쌌; 쌌; 쌌; 쌌; ) HANGUL SYLLABLE SSASS
+C30D;C30D;110A 1161 11BC;C30D;110A 1161 11BC; # (ìŒ; ìŒ; 쌍; ìŒ; 쌍; ) HANGUL SYLLABLE SSANG
+C30E;C30E;110A 1161 11BD;C30E;110A 1161 11BD; # (쌎; 쌎; 쌎; 쌎; 쌎; ) HANGUL SYLLABLE SSAJ
+C30F;C30F;110A 1161 11BE;C30F;110A 1161 11BE; # (ìŒ; ìŒ; 쌏; ìŒ; 쌏; ) HANGUL SYLLABLE SSAC
+C310;C310;110A 1161 11BF;C310;110A 1161 11BF; # (ìŒ; ìŒ; 쌐; ìŒ; 쌐; ) HANGUL SYLLABLE SSAK
+C311;C311;110A 1161 11C0;C311;110A 1161 11C0; # (쌑; 쌑; 쌑; 쌑; 쌑; ) HANGUL SYLLABLE SSAT
+C312;C312;110A 1161 11C1;C312;110A 1161 11C1; # (쌒; 쌒; á„Šá…¡á‡; 쌒; á„Šá…¡á‡; ) HANGUL SYLLABLE SSAP
+C313;C313;110A 1161 11C2;C313;110A 1161 11C2; # (쌓; 쌓; 쌓; 쌓; 쌓; ) HANGUL SYLLABLE SSAH
+C314;C314;110A 1162;C314;110A 1162; # (쌔; 쌔; 쌔; 쌔; 쌔; ) HANGUL SYLLABLE SSAE
+C315;C315;110A 1162 11A8;C315;110A 1162 11A8; # (쌕; 쌕; 쌕; 쌕; 쌕; ) HANGUL SYLLABLE SSAEG
+C316;C316;110A 1162 11A9;C316;110A 1162 11A9; # (쌖; 쌖; 쌖; 쌖; 쌖; ) HANGUL SYLLABLE SSAEGG
+C317;C317;110A 1162 11AA;C317;110A 1162 11AA; # (쌗; 쌗; 쌗; 쌗; 쌗; ) HANGUL SYLLABLE SSAEGS
+C318;C318;110A 1162 11AB;C318;110A 1162 11AB; # (쌘; 쌘; 쌘; 쌘; 쌘; ) HANGUL SYLLABLE SSAEN
+C319;C319;110A 1162 11AC;C319;110A 1162 11AC; # (쌙; 쌙; 쌙; 쌙; 쌙; ) HANGUL SYLLABLE SSAENJ
+C31A;C31A;110A 1162 11AD;C31A;110A 1162 11AD; # (쌚; 쌚; 쌚; 쌚; 쌚; ) HANGUL SYLLABLE SSAENH
+C31B;C31B;110A 1162 11AE;C31B;110A 1162 11AE; # (쌛; 쌛; 쌛; 쌛; 쌛; ) HANGUL SYLLABLE SSAED
+C31C;C31C;110A 1162 11AF;C31C;110A 1162 11AF; # (쌜; 쌜; 쌜; 쌜; 쌜; ) HANGUL SYLLABLE SSAEL
+C31D;C31D;110A 1162 11B0;C31D;110A 1162 11B0; # (ìŒ; ìŒ; 쌝; ìŒ; 쌝; ) HANGUL SYLLABLE SSAELG
+C31E;C31E;110A 1162 11B1;C31E;110A 1162 11B1; # (쌞; 쌞; 쌞; 쌞; 쌞; ) HANGUL SYLLABLE SSAELM
+C31F;C31F;110A 1162 11B2;C31F;110A 1162 11B2; # (쌟; 쌟; 쌟; 쌟; 쌟; ) HANGUL SYLLABLE SSAELB
+C320;C320;110A 1162 11B3;C320;110A 1162 11B3; # (쌠; 쌠; 쌠; 쌠; 쌠; ) HANGUL SYLLABLE SSAELS
+C321;C321;110A 1162 11B4;C321;110A 1162 11B4; # (쌡; 쌡; 쌡; 쌡; 쌡; ) HANGUL SYLLABLE SSAELT
+C322;C322;110A 1162 11B5;C322;110A 1162 11B5; # (쌢; 쌢; 쌢; 쌢; 쌢; ) HANGUL SYLLABLE SSAELP
+C323;C323;110A 1162 11B6;C323;110A 1162 11B6; # (쌣; 쌣; 쌣; 쌣; 쌣; ) HANGUL SYLLABLE SSAELH
+C324;C324;110A 1162 11B7;C324;110A 1162 11B7; # (쌤; 쌤; 쌤; 쌤; 쌤; ) HANGUL SYLLABLE SSAEM
+C325;C325;110A 1162 11B8;C325;110A 1162 11B8; # (쌥; 쌥; 쌥; 쌥; 쌥; ) HANGUL SYLLABLE SSAEB
+C326;C326;110A 1162 11B9;C326;110A 1162 11B9; # (쌦; 쌦; 쌦; 쌦; 쌦; ) HANGUL SYLLABLE SSAEBS
+C327;C327;110A 1162 11BA;C327;110A 1162 11BA; # (쌧; 쌧; 쌧; 쌧; 쌧; ) HANGUL SYLLABLE SSAES
+C328;C328;110A 1162 11BB;C328;110A 1162 11BB; # (쌨; 쌨; 쌨; 쌨; 쌨; ) HANGUL SYLLABLE SSAESS
+C329;C329;110A 1162 11BC;C329;110A 1162 11BC; # (쌩; 쌩; 쌩; 쌩; 쌩; ) HANGUL SYLLABLE SSAENG
+C32A;C32A;110A 1162 11BD;C32A;110A 1162 11BD; # (쌪; 쌪; 쌪; 쌪; 쌪; ) HANGUL SYLLABLE SSAEJ
+C32B;C32B;110A 1162 11BE;C32B;110A 1162 11BE; # (쌫; 쌫; 쌫; 쌫; 쌫; ) HANGUL SYLLABLE SSAEC
+C32C;C32C;110A 1162 11BF;C32C;110A 1162 11BF; # (쌬; 쌬; 쌬; 쌬; 쌬; ) HANGUL SYLLABLE SSAEK
+C32D;C32D;110A 1162 11C0;C32D;110A 1162 11C0; # (쌭; 쌭; 쌭; 쌭; 쌭; ) HANGUL SYLLABLE SSAET
+C32E;C32E;110A 1162 11C1;C32E;110A 1162 11C1; # (쌮; 쌮; á„Šá…¢á‡; 쌮; á„Šá…¢á‡; ) HANGUL SYLLABLE SSAEP
+C32F;C32F;110A 1162 11C2;C32F;110A 1162 11C2; # (쌯; 쌯; 쌯; 쌯; 쌯; ) HANGUL SYLLABLE SSAEH
+C330;C330;110A 1163;C330;110A 1163; # (쌰; 쌰; 쌰; 쌰; 쌰; ) HANGUL SYLLABLE SSYA
+C331;C331;110A 1163 11A8;C331;110A 1163 11A8; # (쌱; 쌱; 쌱; 쌱; 쌱; ) HANGUL SYLLABLE SSYAG
+C332;C332;110A 1163 11A9;C332;110A 1163 11A9; # (쌲; 쌲; 쌲; 쌲; 쌲; ) HANGUL SYLLABLE SSYAGG
+C333;C333;110A 1163 11AA;C333;110A 1163 11AA; # (쌳; 쌳; 쌳; 쌳; 쌳; ) HANGUL SYLLABLE SSYAGS
+C334;C334;110A 1163 11AB;C334;110A 1163 11AB; # (쌴; 쌴; 쌴; 쌴; 쌴; ) HANGUL SYLLABLE SSYAN
+C335;C335;110A 1163 11AC;C335;110A 1163 11AC; # (쌵; 쌵; 쌵; 쌵; 쌵; ) HANGUL SYLLABLE SSYANJ
+C336;C336;110A 1163 11AD;C336;110A 1163 11AD; # (쌶; 쌶; 쌶; 쌶; 쌶; ) HANGUL SYLLABLE SSYANH
+C337;C337;110A 1163 11AE;C337;110A 1163 11AE; # (쌷; 쌷; 쌷; 쌷; 쌷; ) HANGUL SYLLABLE SSYAD
+C338;C338;110A 1163 11AF;C338;110A 1163 11AF; # (쌸; 쌸; 쌸; 쌸; 쌸; ) HANGUL SYLLABLE SSYAL
+C339;C339;110A 1163 11B0;C339;110A 1163 11B0; # (쌹; 쌹; 쌹; 쌹; 쌹; ) HANGUL SYLLABLE SSYALG
+C33A;C33A;110A 1163 11B1;C33A;110A 1163 11B1; # (쌺; 쌺; 쌺; 쌺; 쌺; ) HANGUL SYLLABLE SSYALM
+C33B;C33B;110A 1163 11B2;C33B;110A 1163 11B2; # (쌻; 쌻; 쌻; 쌻; 쌻; ) HANGUL SYLLABLE SSYALB
+C33C;C33C;110A 1163 11B3;C33C;110A 1163 11B3; # (쌼; 쌼; 쌼; 쌼; 쌼; ) HANGUL SYLLABLE SSYALS
+C33D;C33D;110A 1163 11B4;C33D;110A 1163 11B4; # (쌽; 쌽; 쌽; 쌽; 쌽; ) HANGUL SYLLABLE SSYALT
+C33E;C33E;110A 1163 11B5;C33E;110A 1163 11B5; # (쌾; 쌾; 쌾; 쌾; 쌾; ) HANGUL SYLLABLE SSYALP
+C33F;C33F;110A 1163 11B6;C33F;110A 1163 11B6; # (쌿; 쌿; 쌿; 쌿; 쌿; ) HANGUL SYLLABLE SSYALH
+C340;C340;110A 1163 11B7;C340;110A 1163 11B7; # (ì€; ì€; 썀; ì€; 썀; ) HANGUL SYLLABLE SSYAM
+C341;C341;110A 1163 11B8;C341;110A 1163 11B8; # (ì; ì; 썁; ì; 썁; ) HANGUL SYLLABLE SSYAB
+C342;C342;110A 1163 11B9;C342;110A 1163 11B9; # (ì‚; ì‚; 썂; ì‚; 썂; ) HANGUL SYLLABLE SSYABS
+C343;C343;110A 1163 11BA;C343;110A 1163 11BA; # (ìƒ; ìƒ; 썃; ìƒ; 썃; ) HANGUL SYLLABLE SSYAS
+C344;C344;110A 1163 11BB;C344;110A 1163 11BB; # (ì„; ì„; 썄; ì„; 썄; ) HANGUL SYLLABLE SSYASS
+C345;C345;110A 1163 11BC;C345;110A 1163 11BC; # (ì…; ì…; 썅; ì…; 썅; ) HANGUL SYLLABLE SSYANG
+C346;C346;110A 1163 11BD;C346;110A 1163 11BD; # (ì†; ì†; 썆; ì†; 썆; ) HANGUL SYLLABLE SSYAJ
+C347;C347;110A 1163 11BE;C347;110A 1163 11BE; # (ì‡; ì‡; 썇; ì‡; 썇; ) HANGUL SYLLABLE SSYAC
+C348;C348;110A 1163 11BF;C348;110A 1163 11BF; # (ìˆ; ìˆ; 썈; ìˆ; 썈; ) HANGUL SYLLABLE SSYAK
+C349;C349;110A 1163 11C0;C349;110A 1163 11C0; # (ì‰; ì‰; 썉; ì‰; 썉; ) HANGUL SYLLABLE SSYAT
+C34A;C34A;110A 1163 11C1;C34A;110A 1163 11C1; # (ìŠ; ìŠ; á„Šá…£á‡; ìŠ; á„Šá…£á‡; ) HANGUL SYLLABLE SSYAP
+C34B;C34B;110A 1163 11C2;C34B;110A 1163 11C2; # (ì‹; ì‹; 썋; ì‹; 썋; ) HANGUL SYLLABLE SSYAH
+C34C;C34C;110A 1164;C34C;110A 1164; # (ìŒ; ìŒ; á„Šá…¤; ìŒ; á„Šá…¤; ) HANGUL SYLLABLE SSYAE
+C34D;C34D;110A 1164 11A8;C34D;110A 1164 11A8; # (ì; ì; 썍; ì; 썍; ) HANGUL SYLLABLE SSYAEG
+C34E;C34E;110A 1164 11A9;C34E;110A 1164 11A9; # (ìŽ; ìŽ; 썎; ìŽ; 썎; ) HANGUL SYLLABLE SSYAEGG
+C34F;C34F;110A 1164 11AA;C34F;110A 1164 11AA; # (ì; ì; 썏; ì; 썏; ) HANGUL SYLLABLE SSYAEGS
+C350;C350;110A 1164 11AB;C350;110A 1164 11AB; # (ì; ì; 썐; ì; 썐; ) HANGUL SYLLABLE SSYAEN
+C351;C351;110A 1164 11AC;C351;110A 1164 11AC; # (ì‘; ì‘; 썑; ì‘; 썑; ) HANGUL SYLLABLE SSYAENJ
+C352;C352;110A 1164 11AD;C352;110A 1164 11AD; # (ì’; ì’; 썒; ì’; 썒; ) HANGUL SYLLABLE SSYAENH
+C353;C353;110A 1164 11AE;C353;110A 1164 11AE; # (ì“; ì“; 썓; ì“; 썓; ) HANGUL SYLLABLE SSYAED
+C354;C354;110A 1164 11AF;C354;110A 1164 11AF; # (ì”; ì”; 썔; ì”; 썔; ) HANGUL SYLLABLE SSYAEL
+C355;C355;110A 1164 11B0;C355;110A 1164 11B0; # (ì•; ì•; 썕; ì•; 썕; ) HANGUL SYLLABLE SSYAELG
+C356;C356;110A 1164 11B1;C356;110A 1164 11B1; # (ì–; ì–; 썖; ì–; 썖; ) HANGUL SYLLABLE SSYAELM
+C357;C357;110A 1164 11B2;C357;110A 1164 11B2; # (ì—; ì—; 썗; ì—; 썗; ) HANGUL SYLLABLE SSYAELB
+C358;C358;110A 1164 11B3;C358;110A 1164 11B3; # (ì˜; ì˜; 썘; ì˜; 썘; ) HANGUL SYLLABLE SSYAELS
+C359;C359;110A 1164 11B4;C359;110A 1164 11B4; # (ì™; ì™; 썙; ì™; 썙; ) HANGUL SYLLABLE SSYAELT
+C35A;C35A;110A 1164 11B5;C35A;110A 1164 11B5; # (ìš; ìš; 썚; ìš; 썚; ) HANGUL SYLLABLE SSYAELP
+C35B;C35B;110A 1164 11B6;C35B;110A 1164 11B6; # (ì›; ì›; 썛; ì›; 썛; ) HANGUL SYLLABLE SSYAELH
+C35C;C35C;110A 1164 11B7;C35C;110A 1164 11B7; # (ìœ; ìœ; 썜; ìœ; 썜; ) HANGUL SYLLABLE SSYAEM
+C35D;C35D;110A 1164 11B8;C35D;110A 1164 11B8; # (ì; ì; 썝; ì; 썝; ) HANGUL SYLLABLE SSYAEB
+C35E;C35E;110A 1164 11B9;C35E;110A 1164 11B9; # (ìž; ìž; 썞; ìž; 썞; ) HANGUL SYLLABLE SSYAEBS
+C35F;C35F;110A 1164 11BA;C35F;110A 1164 11BA; # (ìŸ; ìŸ; 썟; ìŸ; 썟; ) HANGUL SYLLABLE SSYAES
+C360;C360;110A 1164 11BB;C360;110A 1164 11BB; # (ì ; ì ; 썠; ì ; 썠; ) HANGUL SYLLABLE SSYAESS
+C361;C361;110A 1164 11BC;C361;110A 1164 11BC; # (ì¡; ì¡; 썡; ì¡; 썡; ) HANGUL SYLLABLE SSYAENG
+C362;C362;110A 1164 11BD;C362;110A 1164 11BD; # (ì¢; ì¢; 썢; ì¢; 썢; ) HANGUL SYLLABLE SSYAEJ
+C363;C363;110A 1164 11BE;C363;110A 1164 11BE; # (ì£; ì£; 썣; ì£; 썣; ) HANGUL SYLLABLE SSYAEC
+C364;C364;110A 1164 11BF;C364;110A 1164 11BF; # (ì¤; ì¤; 썤; ì¤; 썤; ) HANGUL SYLLABLE SSYAEK
+C365;C365;110A 1164 11C0;C365;110A 1164 11C0; # (ì¥; ì¥; 썥; ì¥; 썥; ) HANGUL SYLLABLE SSYAET
+C366;C366;110A 1164 11C1;C366;110A 1164 11C1; # (ì¦; ì¦; á„Šá…¤á‡; ì¦; á„Šá…¤á‡; ) HANGUL SYLLABLE SSYAEP
+C367;C367;110A 1164 11C2;C367;110A 1164 11C2; # (ì§; ì§; 썧; ì§; 썧; ) HANGUL SYLLABLE SSYAEH
+C368;C368;110A 1165;C368;110A 1165; # (ì¨; ì¨; á„Šá…¥; ì¨; á„Šá…¥; ) HANGUL SYLLABLE SSEO
+C369;C369;110A 1165 11A8;C369;110A 1165 11A8; # (ì©; ì©; 썩; ì©; 썩; ) HANGUL SYLLABLE SSEOG
+C36A;C36A;110A 1165 11A9;C36A;110A 1165 11A9; # (ìª; ìª; 썪; ìª; 썪; ) HANGUL SYLLABLE SSEOGG
+C36B;C36B;110A 1165 11AA;C36B;110A 1165 11AA; # (ì«; ì«; 썫; ì«; 썫; ) HANGUL SYLLABLE SSEOGS
+C36C;C36C;110A 1165 11AB;C36C;110A 1165 11AB; # (ì¬; ì¬; 썬; ì¬; 썬; ) HANGUL SYLLABLE SSEON
+C36D;C36D;110A 1165 11AC;C36D;110A 1165 11AC; # (ì­; ì­; 썭; ì­; 썭; ) HANGUL SYLLABLE SSEONJ
+C36E;C36E;110A 1165 11AD;C36E;110A 1165 11AD; # (ì®; ì®; 썮; ì®; 썮; ) HANGUL SYLLABLE SSEONH
+C36F;C36F;110A 1165 11AE;C36F;110A 1165 11AE; # (ì¯; ì¯; 썯; ì¯; 썯; ) HANGUL SYLLABLE SSEOD
+C370;C370;110A 1165 11AF;C370;110A 1165 11AF; # (ì°; ì°; 썰; ì°; 썰; ) HANGUL SYLLABLE SSEOL
+C371;C371;110A 1165 11B0;C371;110A 1165 11B0; # (ì±; ì±; 썱; ì±; 썱; ) HANGUL SYLLABLE SSEOLG
+C372;C372;110A 1165 11B1;C372;110A 1165 11B1; # (ì²; ì²; 썲; ì²; 썲; ) HANGUL SYLLABLE SSEOLM
+C373;C373;110A 1165 11B2;C373;110A 1165 11B2; # (ì³; ì³; 썳; ì³; 썳; ) HANGUL SYLLABLE SSEOLB
+C374;C374;110A 1165 11B3;C374;110A 1165 11B3; # (ì´; ì´; 썴; ì´; 썴; ) HANGUL SYLLABLE SSEOLS
+C375;C375;110A 1165 11B4;C375;110A 1165 11B4; # (ìµ; ìµ; 썵; ìµ; 썵; ) HANGUL SYLLABLE SSEOLT
+C376;C376;110A 1165 11B5;C376;110A 1165 11B5; # (ì¶; ì¶; 썶; ì¶; 썶; ) HANGUL SYLLABLE SSEOLP
+C377;C377;110A 1165 11B6;C377;110A 1165 11B6; # (ì·; ì·; 썷; ì·; 썷; ) HANGUL SYLLABLE SSEOLH
+C378;C378;110A 1165 11B7;C378;110A 1165 11B7; # (ì¸; ì¸; 썸; ì¸; 썸; ) HANGUL SYLLABLE SSEOM
+C379;C379;110A 1165 11B8;C379;110A 1165 11B8; # (ì¹; ì¹; 썹; ì¹; 썹; ) HANGUL SYLLABLE SSEOB
+C37A;C37A;110A 1165 11B9;C37A;110A 1165 11B9; # (ìº; ìº; 썺; ìº; 썺; ) HANGUL SYLLABLE SSEOBS
+C37B;C37B;110A 1165 11BA;C37B;110A 1165 11BA; # (ì»; ì»; 썻; ì»; 썻; ) HANGUL SYLLABLE SSEOS
+C37C;C37C;110A 1165 11BB;C37C;110A 1165 11BB; # (ì¼; ì¼; 썼; ì¼; 썼; ) HANGUL SYLLABLE SSEOSS
+C37D;C37D;110A 1165 11BC;C37D;110A 1165 11BC; # (ì½; ì½; 썽; ì½; 썽; ) HANGUL SYLLABLE SSEONG
+C37E;C37E;110A 1165 11BD;C37E;110A 1165 11BD; # (ì¾; ì¾; 썾; ì¾; 썾; ) HANGUL SYLLABLE SSEOJ
+C37F;C37F;110A 1165 11BE;C37F;110A 1165 11BE; # (ì¿; ì¿; 썿; ì¿; 썿; ) HANGUL SYLLABLE SSEOC
+C380;C380;110A 1165 11BF;C380;110A 1165 11BF; # (쎀; 쎀; 쎀; 쎀; 쎀; ) HANGUL SYLLABLE SSEOK
+C381;C381;110A 1165 11C0;C381;110A 1165 11C0; # (ìŽ; ìŽ; 쎁; ìŽ; 쎁; ) HANGUL SYLLABLE SSEOT
+C382;C382;110A 1165 11C1;C382;110A 1165 11C1; # (쎂; 쎂; á„Šá…¥á‡; 쎂; á„Šá…¥á‡; ) HANGUL SYLLABLE SSEOP
+C383;C383;110A 1165 11C2;C383;110A 1165 11C2; # (쎃; 쎃; 쎃; 쎃; 쎃; ) HANGUL SYLLABLE SSEOH
+C384;C384;110A 1166;C384;110A 1166; # (쎄; 쎄; 쎄; 쎄; 쎄; ) HANGUL SYLLABLE SSE
+C385;C385;110A 1166 11A8;C385;110A 1166 11A8; # (쎅; 쎅; 쎅; 쎅; 쎅; ) HANGUL SYLLABLE SSEG
+C386;C386;110A 1166 11A9;C386;110A 1166 11A9; # (쎆; 쎆; 쎆; 쎆; 쎆; ) HANGUL SYLLABLE SSEGG
+C387;C387;110A 1166 11AA;C387;110A 1166 11AA; # (쎇; 쎇; 쎇; 쎇; 쎇; ) HANGUL SYLLABLE SSEGS
+C388;C388;110A 1166 11AB;C388;110A 1166 11AB; # (쎈; 쎈; 쎈; 쎈; 쎈; ) HANGUL SYLLABLE SSEN
+C389;C389;110A 1166 11AC;C389;110A 1166 11AC; # (쎉; 쎉; 쎉; 쎉; 쎉; ) HANGUL SYLLABLE SSENJ
+C38A;C38A;110A 1166 11AD;C38A;110A 1166 11AD; # (쎊; 쎊; 쎊; 쎊; 쎊; ) HANGUL SYLLABLE SSENH
+C38B;C38B;110A 1166 11AE;C38B;110A 1166 11AE; # (쎋; 쎋; 쎋; 쎋; 쎋; ) HANGUL SYLLABLE SSED
+C38C;C38C;110A 1166 11AF;C38C;110A 1166 11AF; # (쎌; 쎌; 쎌; 쎌; 쎌; ) HANGUL SYLLABLE SSEL
+C38D;C38D;110A 1166 11B0;C38D;110A 1166 11B0; # (ìŽ; ìŽ; 쎍; ìŽ; 쎍; ) HANGUL SYLLABLE SSELG
+C38E;C38E;110A 1166 11B1;C38E;110A 1166 11B1; # (쎎; 쎎; 쎎; 쎎; 쎎; ) HANGUL SYLLABLE SSELM
+C38F;C38F;110A 1166 11B2;C38F;110A 1166 11B2; # (ìŽ; ìŽ; 쎏; ìŽ; 쎏; ) HANGUL SYLLABLE SSELB
+C390;C390;110A 1166 11B3;C390;110A 1166 11B3; # (ìŽ; ìŽ; 쎐; ìŽ; 쎐; ) HANGUL SYLLABLE SSELS
+C391;C391;110A 1166 11B4;C391;110A 1166 11B4; # (쎑; 쎑; 쎑; 쎑; 쎑; ) HANGUL SYLLABLE SSELT
+C392;C392;110A 1166 11B5;C392;110A 1166 11B5; # (쎒; 쎒; 쎒; 쎒; 쎒; ) HANGUL SYLLABLE SSELP
+C393;C393;110A 1166 11B6;C393;110A 1166 11B6; # (쎓; 쎓; 쎓; 쎓; 쎓; ) HANGUL SYLLABLE SSELH
+C394;C394;110A 1166 11B7;C394;110A 1166 11B7; # (쎔; 쎔; 쎔; 쎔; 쎔; ) HANGUL SYLLABLE SSEM
+C395;C395;110A 1166 11B8;C395;110A 1166 11B8; # (쎕; 쎕; 쎕; 쎕; 쎕; ) HANGUL SYLLABLE SSEB
+C396;C396;110A 1166 11B9;C396;110A 1166 11B9; # (쎖; 쎖; 쎖; 쎖; 쎖; ) HANGUL SYLLABLE SSEBS
+C397;C397;110A 1166 11BA;C397;110A 1166 11BA; # (쎗; 쎗; 쎗; 쎗; 쎗; ) HANGUL SYLLABLE SSES
+C398;C398;110A 1166 11BB;C398;110A 1166 11BB; # (쎘; 쎘; 쎘; 쎘; 쎘; ) HANGUL SYLLABLE SSESS
+C399;C399;110A 1166 11BC;C399;110A 1166 11BC; # (쎙; 쎙; 쎙; 쎙; 쎙; ) HANGUL SYLLABLE SSENG
+C39A;C39A;110A 1166 11BD;C39A;110A 1166 11BD; # (쎚; 쎚; 쎚; 쎚; 쎚; ) HANGUL SYLLABLE SSEJ
+C39B;C39B;110A 1166 11BE;C39B;110A 1166 11BE; # (쎛; 쎛; 쎛; 쎛; 쎛; ) HANGUL SYLLABLE SSEC
+C39C;C39C;110A 1166 11BF;C39C;110A 1166 11BF; # (쎜; 쎜; 쎜; 쎜; 쎜; ) HANGUL SYLLABLE SSEK
+C39D;C39D;110A 1166 11C0;C39D;110A 1166 11C0; # (ìŽ; ìŽ; 쎝; ìŽ; 쎝; ) HANGUL SYLLABLE SSET
+C39E;C39E;110A 1166 11C1;C39E;110A 1166 11C1; # (쎞; 쎞; á„Šá…¦á‡; 쎞; á„Šá…¦á‡; ) HANGUL SYLLABLE SSEP
+C39F;C39F;110A 1166 11C2;C39F;110A 1166 11C2; # (쎟; 쎟; 쎟; 쎟; 쎟; ) HANGUL SYLLABLE SSEH
+C3A0;C3A0;110A 1167;C3A0;110A 1167; # (쎠; 쎠; 쎠; 쎠; 쎠; ) HANGUL SYLLABLE SSYEO
+C3A1;C3A1;110A 1167 11A8;C3A1;110A 1167 11A8; # (쎡; 쎡; 쎡; 쎡; 쎡; ) HANGUL SYLLABLE SSYEOG
+C3A2;C3A2;110A 1167 11A9;C3A2;110A 1167 11A9; # (쎢; 쎢; 쎢; 쎢; 쎢; ) HANGUL SYLLABLE SSYEOGG
+C3A3;C3A3;110A 1167 11AA;C3A3;110A 1167 11AA; # (쎣; 쎣; 쎣; 쎣; 쎣; ) HANGUL SYLLABLE SSYEOGS
+C3A4;C3A4;110A 1167 11AB;C3A4;110A 1167 11AB; # (쎤; 쎤; 쎤; 쎤; 쎤; ) HANGUL SYLLABLE SSYEON
+C3A5;C3A5;110A 1167 11AC;C3A5;110A 1167 11AC; # (쎥; 쎥; 쎥; 쎥; 쎥; ) HANGUL SYLLABLE SSYEONJ
+C3A6;C3A6;110A 1167 11AD;C3A6;110A 1167 11AD; # (쎦; 쎦; 쎦; 쎦; 쎦; ) HANGUL SYLLABLE SSYEONH
+C3A7;C3A7;110A 1167 11AE;C3A7;110A 1167 11AE; # (쎧; 쎧; 쎧; 쎧; 쎧; ) HANGUL SYLLABLE SSYEOD
+C3A8;C3A8;110A 1167 11AF;C3A8;110A 1167 11AF; # (쎨; 쎨; 쎨; 쎨; 쎨; ) HANGUL SYLLABLE SSYEOL
+C3A9;C3A9;110A 1167 11B0;C3A9;110A 1167 11B0; # (쎩; 쎩; 쎩; 쎩; 쎩; ) HANGUL SYLLABLE SSYEOLG
+C3AA;C3AA;110A 1167 11B1;C3AA;110A 1167 11B1; # (쎪; 쎪; 쎪; 쎪; 쎪; ) HANGUL SYLLABLE SSYEOLM
+C3AB;C3AB;110A 1167 11B2;C3AB;110A 1167 11B2; # (쎫; 쎫; 쎫; 쎫; 쎫; ) HANGUL SYLLABLE SSYEOLB
+C3AC;C3AC;110A 1167 11B3;C3AC;110A 1167 11B3; # (쎬; 쎬; 쎬; 쎬; 쎬; ) HANGUL SYLLABLE SSYEOLS
+C3AD;C3AD;110A 1167 11B4;C3AD;110A 1167 11B4; # (쎭; 쎭; 쎭; 쎭; 쎭; ) HANGUL SYLLABLE SSYEOLT
+C3AE;C3AE;110A 1167 11B5;C3AE;110A 1167 11B5; # (쎮; 쎮; 쎮; 쎮; 쎮; ) HANGUL SYLLABLE SSYEOLP
+C3AF;C3AF;110A 1167 11B6;C3AF;110A 1167 11B6; # (쎯; 쎯; 쎯; 쎯; 쎯; ) HANGUL SYLLABLE SSYEOLH
+C3B0;C3B0;110A 1167 11B7;C3B0;110A 1167 11B7; # (쎰; 쎰; 쎰; 쎰; 쎰; ) HANGUL SYLLABLE SSYEOM
+C3B1;C3B1;110A 1167 11B8;C3B1;110A 1167 11B8; # (쎱; 쎱; 쎱; 쎱; 쎱; ) HANGUL SYLLABLE SSYEOB
+C3B2;C3B2;110A 1167 11B9;C3B2;110A 1167 11B9; # (쎲; 쎲; 쎲; 쎲; 쎲; ) HANGUL SYLLABLE SSYEOBS
+C3B3;C3B3;110A 1167 11BA;C3B3;110A 1167 11BA; # (쎳; 쎳; 쎳; 쎳; 쎳; ) HANGUL SYLLABLE SSYEOS
+C3B4;C3B4;110A 1167 11BB;C3B4;110A 1167 11BB; # (쎴; 쎴; 쎴; 쎴; 쎴; ) HANGUL SYLLABLE SSYEOSS
+C3B5;C3B5;110A 1167 11BC;C3B5;110A 1167 11BC; # (쎵; 쎵; 쎵; 쎵; 쎵; ) HANGUL SYLLABLE SSYEONG
+C3B6;C3B6;110A 1167 11BD;C3B6;110A 1167 11BD; # (쎶; 쎶; 쎶; 쎶; 쎶; ) HANGUL SYLLABLE SSYEOJ
+C3B7;C3B7;110A 1167 11BE;C3B7;110A 1167 11BE; # (쎷; 쎷; 쎷; 쎷; 쎷; ) HANGUL SYLLABLE SSYEOC
+C3B8;C3B8;110A 1167 11BF;C3B8;110A 1167 11BF; # (쎸; 쎸; 쎸; 쎸; 쎸; ) HANGUL SYLLABLE SSYEOK
+C3B9;C3B9;110A 1167 11C0;C3B9;110A 1167 11C0; # (쎹; 쎹; 쎹; 쎹; 쎹; ) HANGUL SYLLABLE SSYEOT
+C3BA;C3BA;110A 1167 11C1;C3BA;110A 1167 11C1; # (쎺; 쎺; á„Šá…§á‡; 쎺; á„Šá…§á‡; ) HANGUL SYLLABLE SSYEOP
+C3BB;C3BB;110A 1167 11C2;C3BB;110A 1167 11C2; # (쎻; 쎻; 쎻; 쎻; 쎻; ) HANGUL SYLLABLE SSYEOH
+C3BC;C3BC;110A 1168;C3BC;110A 1168; # (쎼; 쎼; 쎼; 쎼; 쎼; ) HANGUL SYLLABLE SSYE
+C3BD;C3BD;110A 1168 11A8;C3BD;110A 1168 11A8; # (쎽; 쎽; 쎽; 쎽; 쎽; ) HANGUL SYLLABLE SSYEG
+C3BE;C3BE;110A 1168 11A9;C3BE;110A 1168 11A9; # (쎾; 쎾; 쎾; 쎾; 쎾; ) HANGUL SYLLABLE SSYEGG
+C3BF;C3BF;110A 1168 11AA;C3BF;110A 1168 11AA; # (쎿; 쎿; 쎿; 쎿; 쎿; ) HANGUL SYLLABLE SSYEGS
+C3C0;C3C0;110A 1168 11AB;C3C0;110A 1168 11AB; # (ì€; ì€; 쏀; ì€; 쏀; ) HANGUL SYLLABLE SSYEN
+C3C1;C3C1;110A 1168 11AC;C3C1;110A 1168 11AC; # (ì; ì; 쏁; ì; 쏁; ) HANGUL SYLLABLE SSYENJ
+C3C2;C3C2;110A 1168 11AD;C3C2;110A 1168 11AD; # (ì‚; ì‚; 쏂; ì‚; 쏂; ) HANGUL SYLLABLE SSYENH
+C3C3;C3C3;110A 1168 11AE;C3C3;110A 1168 11AE; # (ìƒ; ìƒ; 쏃; ìƒ; 쏃; ) HANGUL SYLLABLE SSYED
+C3C4;C3C4;110A 1168 11AF;C3C4;110A 1168 11AF; # (ì„; ì„; 쏄; ì„; 쏄; ) HANGUL SYLLABLE SSYEL
+C3C5;C3C5;110A 1168 11B0;C3C5;110A 1168 11B0; # (ì…; ì…; 쏅; ì…; 쏅; ) HANGUL SYLLABLE SSYELG
+C3C6;C3C6;110A 1168 11B1;C3C6;110A 1168 11B1; # (ì†; ì†; 쏆; ì†; 쏆; ) HANGUL SYLLABLE SSYELM
+C3C7;C3C7;110A 1168 11B2;C3C7;110A 1168 11B2; # (ì‡; ì‡; 쏇; ì‡; 쏇; ) HANGUL SYLLABLE SSYELB
+C3C8;C3C8;110A 1168 11B3;C3C8;110A 1168 11B3; # (ìˆ; ìˆ; 쏈; ìˆ; 쏈; ) HANGUL SYLLABLE SSYELS
+C3C9;C3C9;110A 1168 11B4;C3C9;110A 1168 11B4; # (ì‰; ì‰; 쏉; ì‰; 쏉; ) HANGUL SYLLABLE SSYELT
+C3CA;C3CA;110A 1168 11B5;C3CA;110A 1168 11B5; # (ìŠ; ìŠ; 쏊; ìŠ; 쏊; ) HANGUL SYLLABLE SSYELP
+C3CB;C3CB;110A 1168 11B6;C3CB;110A 1168 11B6; # (ì‹; ì‹; 쏋; ì‹; 쏋; ) HANGUL SYLLABLE SSYELH
+C3CC;C3CC;110A 1168 11B7;C3CC;110A 1168 11B7; # (ìŒ; ìŒ; 쏌; ìŒ; 쏌; ) HANGUL SYLLABLE SSYEM
+C3CD;C3CD;110A 1168 11B8;C3CD;110A 1168 11B8; # (ì; ì; 쏍; ì; 쏍; ) HANGUL SYLLABLE SSYEB
+C3CE;C3CE;110A 1168 11B9;C3CE;110A 1168 11B9; # (ìŽ; ìŽ; 쏎; ìŽ; 쏎; ) HANGUL SYLLABLE SSYEBS
+C3CF;C3CF;110A 1168 11BA;C3CF;110A 1168 11BA; # (ì; ì; 쏏; ì; 쏏; ) HANGUL SYLLABLE SSYES
+C3D0;C3D0;110A 1168 11BB;C3D0;110A 1168 11BB; # (ì; ì; 쏐; ì; 쏐; ) HANGUL SYLLABLE SSYESS
+C3D1;C3D1;110A 1168 11BC;C3D1;110A 1168 11BC; # (ì‘; ì‘; 쏑; ì‘; 쏑; ) HANGUL SYLLABLE SSYENG
+C3D2;C3D2;110A 1168 11BD;C3D2;110A 1168 11BD; # (ì’; ì’; 쏒; ì’; 쏒; ) HANGUL SYLLABLE SSYEJ
+C3D3;C3D3;110A 1168 11BE;C3D3;110A 1168 11BE; # (ì“; ì“; 쏓; ì“; 쏓; ) HANGUL SYLLABLE SSYEC
+C3D4;C3D4;110A 1168 11BF;C3D4;110A 1168 11BF; # (ì”; ì”; 쏔; ì”; 쏔; ) HANGUL SYLLABLE SSYEK
+C3D5;C3D5;110A 1168 11C0;C3D5;110A 1168 11C0; # (ì•; ì•; 쏕; ì•; 쏕; ) HANGUL SYLLABLE SSYET
+C3D6;C3D6;110A 1168 11C1;C3D6;110A 1168 11C1; # (ì–; ì–; á„Šá…¨á‡; ì–; á„Šá…¨á‡; ) HANGUL SYLLABLE SSYEP
+C3D7;C3D7;110A 1168 11C2;C3D7;110A 1168 11C2; # (ì—; ì—; 쏗; ì—; 쏗; ) HANGUL SYLLABLE SSYEH
+C3D8;C3D8;110A 1169;C3D8;110A 1169; # (ì˜; ì˜; á„Šá…©; ì˜; á„Šá…©; ) HANGUL SYLLABLE SSO
+C3D9;C3D9;110A 1169 11A8;C3D9;110A 1169 11A8; # (ì™; ì™; 쏙; ì™; 쏙; ) HANGUL SYLLABLE SSOG
+C3DA;C3DA;110A 1169 11A9;C3DA;110A 1169 11A9; # (ìš; ìš; 쏚; ìš; 쏚; ) HANGUL SYLLABLE SSOGG
+C3DB;C3DB;110A 1169 11AA;C3DB;110A 1169 11AA; # (ì›; ì›; 쏛; ì›; 쏛; ) HANGUL SYLLABLE SSOGS
+C3DC;C3DC;110A 1169 11AB;C3DC;110A 1169 11AB; # (ìœ; ìœ; 쏜; ìœ; 쏜; ) HANGUL SYLLABLE SSON
+C3DD;C3DD;110A 1169 11AC;C3DD;110A 1169 11AC; # (ì; ì; 쏝; ì; 쏝; ) HANGUL SYLLABLE SSONJ
+C3DE;C3DE;110A 1169 11AD;C3DE;110A 1169 11AD; # (ìž; ìž; 쏞; ìž; 쏞; ) HANGUL SYLLABLE SSONH
+C3DF;C3DF;110A 1169 11AE;C3DF;110A 1169 11AE; # (ìŸ; ìŸ; 쏟; ìŸ; 쏟; ) HANGUL SYLLABLE SSOD
+C3E0;C3E0;110A 1169 11AF;C3E0;110A 1169 11AF; # (ì ; ì ; 쏠; ì ; 쏠; ) HANGUL SYLLABLE SSOL
+C3E1;C3E1;110A 1169 11B0;C3E1;110A 1169 11B0; # (ì¡; ì¡; 쏡; ì¡; 쏡; ) HANGUL SYLLABLE SSOLG
+C3E2;C3E2;110A 1169 11B1;C3E2;110A 1169 11B1; # (ì¢; ì¢; 쏢; ì¢; 쏢; ) HANGUL SYLLABLE SSOLM
+C3E3;C3E3;110A 1169 11B2;C3E3;110A 1169 11B2; # (ì£; ì£; 쏣; ì£; 쏣; ) HANGUL SYLLABLE SSOLB
+C3E4;C3E4;110A 1169 11B3;C3E4;110A 1169 11B3; # (ì¤; ì¤; 쏤; ì¤; 쏤; ) HANGUL SYLLABLE SSOLS
+C3E5;C3E5;110A 1169 11B4;C3E5;110A 1169 11B4; # (ì¥; ì¥; 쏥; ì¥; 쏥; ) HANGUL SYLLABLE SSOLT
+C3E6;C3E6;110A 1169 11B5;C3E6;110A 1169 11B5; # (ì¦; ì¦; 쏦; ì¦; 쏦; ) HANGUL SYLLABLE SSOLP
+C3E7;C3E7;110A 1169 11B6;C3E7;110A 1169 11B6; # (ì§; ì§; 쏧; ì§; 쏧; ) HANGUL SYLLABLE SSOLH
+C3E8;C3E8;110A 1169 11B7;C3E8;110A 1169 11B7; # (ì¨; ì¨; 쏨; ì¨; 쏨; ) HANGUL SYLLABLE SSOM
+C3E9;C3E9;110A 1169 11B8;C3E9;110A 1169 11B8; # (ì©; ì©; 쏩; ì©; 쏩; ) HANGUL SYLLABLE SSOB
+C3EA;C3EA;110A 1169 11B9;C3EA;110A 1169 11B9; # (ìª; ìª; 쏪; ìª; 쏪; ) HANGUL SYLLABLE SSOBS
+C3EB;C3EB;110A 1169 11BA;C3EB;110A 1169 11BA; # (ì«; ì«; 쏫; ì«; 쏫; ) HANGUL SYLLABLE SSOS
+C3EC;C3EC;110A 1169 11BB;C3EC;110A 1169 11BB; # (ì¬; ì¬; 쏬; ì¬; 쏬; ) HANGUL SYLLABLE SSOSS
+C3ED;C3ED;110A 1169 11BC;C3ED;110A 1169 11BC; # (ì­; ì­; 쏭; ì­; 쏭; ) HANGUL SYLLABLE SSONG
+C3EE;C3EE;110A 1169 11BD;C3EE;110A 1169 11BD; # (ì®; ì®; 쏮; ì®; 쏮; ) HANGUL SYLLABLE SSOJ
+C3EF;C3EF;110A 1169 11BE;C3EF;110A 1169 11BE; # (ì¯; ì¯; 쏯; ì¯; 쏯; ) HANGUL SYLLABLE SSOC
+C3F0;C3F0;110A 1169 11BF;C3F0;110A 1169 11BF; # (ì°; ì°; 쏰; ì°; 쏰; ) HANGUL SYLLABLE SSOK
+C3F1;C3F1;110A 1169 11C0;C3F1;110A 1169 11C0; # (ì±; ì±; 쏱; ì±; 쏱; ) HANGUL SYLLABLE SSOT
+C3F2;C3F2;110A 1169 11C1;C3F2;110A 1169 11C1; # (ì²; ì²; á„Šá…©á‡; ì²; á„Šá…©á‡; ) HANGUL SYLLABLE SSOP
+C3F3;C3F3;110A 1169 11C2;C3F3;110A 1169 11C2; # (ì³; ì³; 쏳; ì³; 쏳; ) HANGUL SYLLABLE SSOH
+C3F4;C3F4;110A 116A;C3F4;110A 116A; # (ì´; ì´; á„Šá…ª; ì´; á„Šá…ª; ) HANGUL SYLLABLE SSWA
+C3F5;C3F5;110A 116A 11A8;C3F5;110A 116A 11A8; # (ìµ; ìµ; 쏵; ìµ; 쏵; ) HANGUL SYLLABLE SSWAG
+C3F6;C3F6;110A 116A 11A9;C3F6;110A 116A 11A9; # (ì¶; ì¶; 쏶; ì¶; 쏶; ) HANGUL SYLLABLE SSWAGG
+C3F7;C3F7;110A 116A 11AA;C3F7;110A 116A 11AA; # (ì·; ì·; 쏷; ì·; 쏷; ) HANGUL SYLLABLE SSWAGS
+C3F8;C3F8;110A 116A 11AB;C3F8;110A 116A 11AB; # (ì¸; ì¸; 쏸; ì¸; 쏸; ) HANGUL SYLLABLE SSWAN
+C3F9;C3F9;110A 116A 11AC;C3F9;110A 116A 11AC; # (ì¹; ì¹; 쏹; ì¹; 쏹; ) HANGUL SYLLABLE SSWANJ
+C3FA;C3FA;110A 116A 11AD;C3FA;110A 116A 11AD; # (ìº; ìº; 쏺; ìº; 쏺; ) HANGUL SYLLABLE SSWANH
+C3FB;C3FB;110A 116A 11AE;C3FB;110A 116A 11AE; # (ì»; ì»; 쏻; ì»; 쏻; ) HANGUL SYLLABLE SSWAD
+C3FC;C3FC;110A 116A 11AF;C3FC;110A 116A 11AF; # (ì¼; ì¼; 쏼; ì¼; 쏼; ) HANGUL SYLLABLE SSWAL
+C3FD;C3FD;110A 116A 11B0;C3FD;110A 116A 11B0; # (ì½; ì½; 쏽; ì½; 쏽; ) HANGUL SYLLABLE SSWALG
+C3FE;C3FE;110A 116A 11B1;C3FE;110A 116A 11B1; # (ì¾; ì¾; 쏾; ì¾; 쏾; ) HANGUL SYLLABLE SSWALM
+C3FF;C3FF;110A 116A 11B2;C3FF;110A 116A 11B2; # (ì¿; ì¿; 쏿; ì¿; 쏿; ) HANGUL SYLLABLE SSWALB
+C400;C400;110A 116A 11B3;C400;110A 116A 11B3; # (ì€; ì€; 쐀; ì€; 쐀; ) HANGUL SYLLABLE SSWALS
+C401;C401;110A 116A 11B4;C401;110A 116A 11B4; # (ì; ì; 쐁; ì; 쐁; ) HANGUL SYLLABLE SSWALT
+C402;C402;110A 116A 11B5;C402;110A 116A 11B5; # (ì‚; ì‚; 쐂; ì‚; 쐂; ) HANGUL SYLLABLE SSWALP
+C403;C403;110A 116A 11B6;C403;110A 116A 11B6; # (ìƒ; ìƒ; 쐃; ìƒ; 쐃; ) HANGUL SYLLABLE SSWALH
+C404;C404;110A 116A 11B7;C404;110A 116A 11B7; # (ì„; ì„; 쐄; ì„; 쐄; ) HANGUL SYLLABLE SSWAM
+C405;C405;110A 116A 11B8;C405;110A 116A 11B8; # (ì…; ì…; 쐅; ì…; 쐅; ) HANGUL SYLLABLE SSWAB
+C406;C406;110A 116A 11B9;C406;110A 116A 11B9; # (ì†; ì†; 쐆; ì†; 쐆; ) HANGUL SYLLABLE SSWABS
+C407;C407;110A 116A 11BA;C407;110A 116A 11BA; # (ì‡; ì‡; 쐇; ì‡; 쐇; ) HANGUL SYLLABLE SSWAS
+C408;C408;110A 116A 11BB;C408;110A 116A 11BB; # (ìˆ; ìˆ; 쐈; ìˆ; 쐈; ) HANGUL SYLLABLE SSWASS
+C409;C409;110A 116A 11BC;C409;110A 116A 11BC; # (ì‰; ì‰; 쐉; ì‰; 쐉; ) HANGUL SYLLABLE SSWANG
+C40A;C40A;110A 116A 11BD;C40A;110A 116A 11BD; # (ìŠ; ìŠ; 쐊; ìŠ; 쐊; ) HANGUL SYLLABLE SSWAJ
+C40B;C40B;110A 116A 11BE;C40B;110A 116A 11BE; # (ì‹; ì‹; 쐋; ì‹; 쐋; ) HANGUL SYLLABLE SSWAC
+C40C;C40C;110A 116A 11BF;C40C;110A 116A 11BF; # (ìŒ; ìŒ; 쐌; ìŒ; 쐌; ) HANGUL SYLLABLE SSWAK
+C40D;C40D;110A 116A 11C0;C40D;110A 116A 11C0; # (ì; ì; 쐍; ì; 쐍; ) HANGUL SYLLABLE SSWAT
+C40E;C40E;110A 116A 11C1;C40E;110A 116A 11C1; # (ìŽ; ìŽ; á„Šá…ªá‡; ìŽ; á„Šá…ªá‡; ) HANGUL SYLLABLE SSWAP
+C40F;C40F;110A 116A 11C2;C40F;110A 116A 11C2; # (ì; ì; 쐏; ì; 쐏; ) HANGUL SYLLABLE SSWAH
+C410;C410;110A 116B;C410;110A 116B; # (ì; ì; á„Šá…«; ì; á„Šá…«; ) HANGUL SYLLABLE SSWAE
+C411;C411;110A 116B 11A8;C411;110A 116B 11A8; # (ì‘; ì‘; 쐑; ì‘; 쐑; ) HANGUL SYLLABLE SSWAEG
+C412;C412;110A 116B 11A9;C412;110A 116B 11A9; # (ì’; ì’; 쐒; ì’; 쐒; ) HANGUL SYLLABLE SSWAEGG
+C413;C413;110A 116B 11AA;C413;110A 116B 11AA; # (ì“; ì“; 쐓; ì“; 쐓; ) HANGUL SYLLABLE SSWAEGS
+C414;C414;110A 116B 11AB;C414;110A 116B 11AB; # (ì”; ì”; 쐔; ì”; 쐔; ) HANGUL SYLLABLE SSWAEN
+C415;C415;110A 116B 11AC;C415;110A 116B 11AC; # (ì•; ì•; 쐕; ì•; 쐕; ) HANGUL SYLLABLE SSWAENJ
+C416;C416;110A 116B 11AD;C416;110A 116B 11AD; # (ì–; ì–; 쐖; ì–; 쐖; ) HANGUL SYLLABLE SSWAENH
+C417;C417;110A 116B 11AE;C417;110A 116B 11AE; # (ì—; ì—; 쐗; ì—; 쐗; ) HANGUL SYLLABLE SSWAED
+C418;C418;110A 116B 11AF;C418;110A 116B 11AF; # (ì˜; ì˜; 쐘; ì˜; 쐘; ) HANGUL SYLLABLE SSWAEL
+C419;C419;110A 116B 11B0;C419;110A 116B 11B0; # (ì™; ì™; 쐙; ì™; 쐙; ) HANGUL SYLLABLE SSWAELG
+C41A;C41A;110A 116B 11B1;C41A;110A 116B 11B1; # (ìš; ìš; 쐚; ìš; 쐚; ) HANGUL SYLLABLE SSWAELM
+C41B;C41B;110A 116B 11B2;C41B;110A 116B 11B2; # (ì›; ì›; 쐛; ì›; 쐛; ) HANGUL SYLLABLE SSWAELB
+C41C;C41C;110A 116B 11B3;C41C;110A 116B 11B3; # (ìœ; ìœ; 쐜; ìœ; 쐜; ) HANGUL SYLLABLE SSWAELS
+C41D;C41D;110A 116B 11B4;C41D;110A 116B 11B4; # (ì; ì; 쐝; ì; 쐝; ) HANGUL SYLLABLE SSWAELT
+C41E;C41E;110A 116B 11B5;C41E;110A 116B 11B5; # (ìž; ìž; 쐞; ìž; 쐞; ) HANGUL SYLLABLE SSWAELP
+C41F;C41F;110A 116B 11B6;C41F;110A 116B 11B6; # (ìŸ; ìŸ; 쐟; ìŸ; 쐟; ) HANGUL SYLLABLE SSWAELH
+C420;C420;110A 116B 11B7;C420;110A 116B 11B7; # (ì ; ì ; 쐠; ì ; 쐠; ) HANGUL SYLLABLE SSWAEM
+C421;C421;110A 116B 11B8;C421;110A 116B 11B8; # (ì¡; ì¡; 쐡; ì¡; 쐡; ) HANGUL SYLLABLE SSWAEB
+C422;C422;110A 116B 11B9;C422;110A 116B 11B9; # (ì¢; ì¢; 쐢; ì¢; 쐢; ) HANGUL SYLLABLE SSWAEBS
+C423;C423;110A 116B 11BA;C423;110A 116B 11BA; # (ì£; ì£; 쐣; ì£; 쐣; ) HANGUL SYLLABLE SSWAES
+C424;C424;110A 116B 11BB;C424;110A 116B 11BB; # (ì¤; ì¤; 쐤; ì¤; 쐤; ) HANGUL SYLLABLE SSWAESS
+C425;C425;110A 116B 11BC;C425;110A 116B 11BC; # (ì¥; ì¥; 쐥; ì¥; 쐥; ) HANGUL SYLLABLE SSWAENG
+C426;C426;110A 116B 11BD;C426;110A 116B 11BD; # (ì¦; ì¦; 쐦; ì¦; 쐦; ) HANGUL SYLLABLE SSWAEJ
+C427;C427;110A 116B 11BE;C427;110A 116B 11BE; # (ì§; ì§; 쐧; ì§; 쐧; ) HANGUL SYLLABLE SSWAEC
+C428;C428;110A 116B 11BF;C428;110A 116B 11BF; # (ì¨; ì¨; 쐨; ì¨; 쐨; ) HANGUL SYLLABLE SSWAEK
+C429;C429;110A 116B 11C0;C429;110A 116B 11C0; # (ì©; ì©; 쐩; ì©; 쐩; ) HANGUL SYLLABLE SSWAET
+C42A;C42A;110A 116B 11C1;C42A;110A 116B 11C1; # (ìª; ìª; á„Šá…«á‡; ìª; á„Šá…«á‡; ) HANGUL SYLLABLE SSWAEP
+C42B;C42B;110A 116B 11C2;C42B;110A 116B 11C2; # (ì«; ì«; 쐫; ì«; 쐫; ) HANGUL SYLLABLE SSWAEH
+C42C;C42C;110A 116C;C42C;110A 116C; # (ì¬; ì¬; á„Šá…¬; ì¬; á„Šá…¬; ) HANGUL SYLLABLE SSOE
+C42D;C42D;110A 116C 11A8;C42D;110A 116C 11A8; # (ì­; ì­; 쐭; ì­; 쐭; ) HANGUL SYLLABLE SSOEG
+C42E;C42E;110A 116C 11A9;C42E;110A 116C 11A9; # (ì®; ì®; 쐮; ì®; 쐮; ) HANGUL SYLLABLE SSOEGG
+C42F;C42F;110A 116C 11AA;C42F;110A 116C 11AA; # (ì¯; ì¯; 쐯; ì¯; 쐯; ) HANGUL SYLLABLE SSOEGS
+C430;C430;110A 116C 11AB;C430;110A 116C 11AB; # (ì°; ì°; 쐰; ì°; 쐰; ) HANGUL SYLLABLE SSOEN
+C431;C431;110A 116C 11AC;C431;110A 116C 11AC; # (ì±; ì±; 쐱; ì±; 쐱; ) HANGUL SYLLABLE SSOENJ
+C432;C432;110A 116C 11AD;C432;110A 116C 11AD; # (ì²; ì²; 쐲; ì²; 쐲; ) HANGUL SYLLABLE SSOENH
+C433;C433;110A 116C 11AE;C433;110A 116C 11AE; # (ì³; ì³; 쐳; ì³; 쐳; ) HANGUL SYLLABLE SSOED
+C434;C434;110A 116C 11AF;C434;110A 116C 11AF; # (ì´; ì´; 쐴; ì´; 쐴; ) HANGUL SYLLABLE SSOEL
+C435;C435;110A 116C 11B0;C435;110A 116C 11B0; # (ìµ; ìµ; 쐵; ìµ; 쐵; ) HANGUL SYLLABLE SSOELG
+C436;C436;110A 116C 11B1;C436;110A 116C 11B1; # (ì¶; ì¶; 쐶; ì¶; 쐶; ) HANGUL SYLLABLE SSOELM
+C437;C437;110A 116C 11B2;C437;110A 116C 11B2; # (ì·; ì·; 쐷; ì·; 쐷; ) HANGUL SYLLABLE SSOELB
+C438;C438;110A 116C 11B3;C438;110A 116C 11B3; # (ì¸; ì¸; 쐸; ì¸; 쐸; ) HANGUL SYLLABLE SSOELS
+C439;C439;110A 116C 11B4;C439;110A 116C 11B4; # (ì¹; ì¹; 쐹; ì¹; 쐹; ) HANGUL SYLLABLE SSOELT
+C43A;C43A;110A 116C 11B5;C43A;110A 116C 11B5; # (ìº; ìº; 쐺; ìº; 쐺; ) HANGUL SYLLABLE SSOELP
+C43B;C43B;110A 116C 11B6;C43B;110A 116C 11B6; # (ì»; ì»; 쐻; ì»; 쐻; ) HANGUL SYLLABLE SSOELH
+C43C;C43C;110A 116C 11B7;C43C;110A 116C 11B7; # (ì¼; ì¼; 쐼; ì¼; 쐼; ) HANGUL SYLLABLE SSOEM
+C43D;C43D;110A 116C 11B8;C43D;110A 116C 11B8; # (ì½; ì½; 쐽; ì½; 쐽; ) HANGUL SYLLABLE SSOEB
+C43E;C43E;110A 116C 11B9;C43E;110A 116C 11B9; # (ì¾; ì¾; 쐾; ì¾; 쐾; ) HANGUL SYLLABLE SSOEBS
+C43F;C43F;110A 116C 11BA;C43F;110A 116C 11BA; # (ì¿; ì¿; 쐿; ì¿; 쐿; ) HANGUL SYLLABLE SSOES
+C440;C440;110A 116C 11BB;C440;110A 116C 11BB; # (쑀; 쑀; 쑀; 쑀; 쑀; ) HANGUL SYLLABLE SSOESS
+C441;C441;110A 116C 11BC;C441;110A 116C 11BC; # (ì‘; ì‘; 쑁; ì‘; 쑁; ) HANGUL SYLLABLE SSOENG
+C442;C442;110A 116C 11BD;C442;110A 116C 11BD; # (쑂; 쑂; 쑂; 쑂; 쑂; ) HANGUL SYLLABLE SSOEJ
+C443;C443;110A 116C 11BE;C443;110A 116C 11BE; # (쑃; 쑃; 쑃; 쑃; 쑃; ) HANGUL SYLLABLE SSOEC
+C444;C444;110A 116C 11BF;C444;110A 116C 11BF; # (쑄; 쑄; 쑄; 쑄; 쑄; ) HANGUL SYLLABLE SSOEK
+C445;C445;110A 116C 11C0;C445;110A 116C 11C0; # (쑅; 쑅; 쑅; 쑅; 쑅; ) HANGUL SYLLABLE SSOET
+C446;C446;110A 116C 11C1;C446;110A 116C 11C1; # (쑆; 쑆; á„Šá…¬á‡; 쑆; á„Šá…¬á‡; ) HANGUL SYLLABLE SSOEP
+C447;C447;110A 116C 11C2;C447;110A 116C 11C2; # (쑇; 쑇; 쑇; 쑇; 쑇; ) HANGUL SYLLABLE SSOEH
+C448;C448;110A 116D;C448;110A 116D; # (쑈; 쑈; 쑈; 쑈; 쑈; ) HANGUL SYLLABLE SSYO
+C449;C449;110A 116D 11A8;C449;110A 116D 11A8; # (쑉; 쑉; 쑉; 쑉; 쑉; ) HANGUL SYLLABLE SSYOG
+C44A;C44A;110A 116D 11A9;C44A;110A 116D 11A9; # (쑊; 쑊; 쑊; 쑊; 쑊; ) HANGUL SYLLABLE SSYOGG
+C44B;C44B;110A 116D 11AA;C44B;110A 116D 11AA; # (쑋; 쑋; 쑋; 쑋; 쑋; ) HANGUL SYLLABLE SSYOGS
+C44C;C44C;110A 116D 11AB;C44C;110A 116D 11AB; # (쑌; 쑌; 쑌; 쑌; 쑌; ) HANGUL SYLLABLE SSYON
+C44D;C44D;110A 116D 11AC;C44D;110A 116D 11AC; # (ì‘; ì‘; 쑍; ì‘; 쑍; ) HANGUL SYLLABLE SSYONJ
+C44E;C44E;110A 116D 11AD;C44E;110A 116D 11AD; # (쑎; 쑎; 쑎; 쑎; 쑎; ) HANGUL SYLLABLE SSYONH
+C44F;C44F;110A 116D 11AE;C44F;110A 116D 11AE; # (ì‘; ì‘; 쑏; ì‘; 쑏; ) HANGUL SYLLABLE SSYOD
+C450;C450;110A 116D 11AF;C450;110A 116D 11AF; # (ì‘; ì‘; 쑐; ì‘; 쑐; ) HANGUL SYLLABLE SSYOL
+C451;C451;110A 116D 11B0;C451;110A 116D 11B0; # (쑑; 쑑; 쑑; 쑑; 쑑; ) HANGUL SYLLABLE SSYOLG
+C452;C452;110A 116D 11B1;C452;110A 116D 11B1; # (쑒; 쑒; 쑒; 쑒; 쑒; ) HANGUL SYLLABLE SSYOLM
+C453;C453;110A 116D 11B2;C453;110A 116D 11B2; # (쑓; 쑓; 쑓; 쑓; 쑓; ) HANGUL SYLLABLE SSYOLB
+C454;C454;110A 116D 11B3;C454;110A 116D 11B3; # (쑔; 쑔; 쑔; 쑔; 쑔; ) HANGUL SYLLABLE SSYOLS
+C455;C455;110A 116D 11B4;C455;110A 116D 11B4; # (쑕; 쑕; 쑕; 쑕; 쑕; ) HANGUL SYLLABLE SSYOLT
+C456;C456;110A 116D 11B5;C456;110A 116D 11B5; # (쑖; 쑖; 쑖; 쑖; 쑖; ) HANGUL SYLLABLE SSYOLP
+C457;C457;110A 116D 11B6;C457;110A 116D 11B6; # (쑗; 쑗; 쑗; 쑗; 쑗; ) HANGUL SYLLABLE SSYOLH
+C458;C458;110A 116D 11B7;C458;110A 116D 11B7; # (쑘; 쑘; 쑘; 쑘; 쑘; ) HANGUL SYLLABLE SSYOM
+C459;C459;110A 116D 11B8;C459;110A 116D 11B8; # (쑙; 쑙; 쑙; 쑙; 쑙; ) HANGUL SYLLABLE SSYOB
+C45A;C45A;110A 116D 11B9;C45A;110A 116D 11B9; # (쑚; 쑚; 쑚; 쑚; 쑚; ) HANGUL SYLLABLE SSYOBS
+C45B;C45B;110A 116D 11BA;C45B;110A 116D 11BA; # (쑛; 쑛; 쑛; 쑛; 쑛; ) HANGUL SYLLABLE SSYOS
+C45C;C45C;110A 116D 11BB;C45C;110A 116D 11BB; # (쑜; 쑜; 쑜; 쑜; 쑜; ) HANGUL SYLLABLE SSYOSS
+C45D;C45D;110A 116D 11BC;C45D;110A 116D 11BC; # (ì‘; ì‘; 쑝; ì‘; 쑝; ) HANGUL SYLLABLE SSYONG
+C45E;C45E;110A 116D 11BD;C45E;110A 116D 11BD; # (쑞; 쑞; 쑞; 쑞; 쑞; ) HANGUL SYLLABLE SSYOJ
+C45F;C45F;110A 116D 11BE;C45F;110A 116D 11BE; # (쑟; 쑟; 쑟; 쑟; 쑟; ) HANGUL SYLLABLE SSYOC
+C460;C460;110A 116D 11BF;C460;110A 116D 11BF; # (쑠; 쑠; 쑠; 쑠; 쑠; ) HANGUL SYLLABLE SSYOK
+C461;C461;110A 116D 11C0;C461;110A 116D 11C0; # (쑡; 쑡; 쑡; 쑡; 쑡; ) HANGUL SYLLABLE SSYOT
+C462;C462;110A 116D 11C1;C462;110A 116D 11C1; # (ì‘¢; ì‘¢; á„Šá…­á‡; ì‘¢; á„Šá…­á‡; ) HANGUL SYLLABLE SSYOP
+C463;C463;110A 116D 11C2;C463;110A 116D 11C2; # (쑣; 쑣; 쑣; 쑣; 쑣; ) HANGUL SYLLABLE SSYOH
+C464;C464;110A 116E;C464;110A 116E; # (쑤; 쑤; 쑤; 쑤; 쑤; ) HANGUL SYLLABLE SSU
+C465;C465;110A 116E 11A8;C465;110A 116E 11A8; # (쑥; 쑥; 쑥; 쑥; 쑥; ) HANGUL SYLLABLE SSUG
+C466;C466;110A 116E 11A9;C466;110A 116E 11A9; # (쑦; 쑦; 쑦; 쑦; 쑦; ) HANGUL SYLLABLE SSUGG
+C467;C467;110A 116E 11AA;C467;110A 116E 11AA; # (쑧; 쑧; 쑧; 쑧; 쑧; ) HANGUL SYLLABLE SSUGS
+C468;C468;110A 116E 11AB;C468;110A 116E 11AB; # (쑨; 쑨; 쑨; 쑨; 쑨; ) HANGUL SYLLABLE SSUN
+C469;C469;110A 116E 11AC;C469;110A 116E 11AC; # (쑩; 쑩; 쑩; 쑩; 쑩; ) HANGUL SYLLABLE SSUNJ
+C46A;C46A;110A 116E 11AD;C46A;110A 116E 11AD; # (쑪; 쑪; 쑪; 쑪; 쑪; ) HANGUL SYLLABLE SSUNH
+C46B;C46B;110A 116E 11AE;C46B;110A 116E 11AE; # (쑫; 쑫; 쑫; 쑫; 쑫; ) HANGUL SYLLABLE SSUD
+C46C;C46C;110A 116E 11AF;C46C;110A 116E 11AF; # (쑬; 쑬; 쑬; 쑬; 쑬; ) HANGUL SYLLABLE SSUL
+C46D;C46D;110A 116E 11B0;C46D;110A 116E 11B0; # (쑭; 쑭; 쑭; 쑭; 쑭; ) HANGUL SYLLABLE SSULG
+C46E;C46E;110A 116E 11B1;C46E;110A 116E 11B1; # (쑮; 쑮; 쑮; 쑮; 쑮; ) HANGUL SYLLABLE SSULM
+C46F;C46F;110A 116E 11B2;C46F;110A 116E 11B2; # (쑯; 쑯; 쑯; 쑯; 쑯; ) HANGUL SYLLABLE SSULB
+C470;C470;110A 116E 11B3;C470;110A 116E 11B3; # (쑰; 쑰; 쑰; 쑰; 쑰; ) HANGUL SYLLABLE SSULS
+C471;C471;110A 116E 11B4;C471;110A 116E 11B4; # (쑱; 쑱; 쑱; 쑱; 쑱; ) HANGUL SYLLABLE SSULT
+C472;C472;110A 116E 11B5;C472;110A 116E 11B5; # (쑲; 쑲; 쑲; 쑲; 쑲; ) HANGUL SYLLABLE SSULP
+C473;C473;110A 116E 11B6;C473;110A 116E 11B6; # (쑳; 쑳; 쑳; 쑳; 쑳; ) HANGUL SYLLABLE SSULH
+C474;C474;110A 116E 11B7;C474;110A 116E 11B7; # (쑴; 쑴; 쑴; 쑴; 쑴; ) HANGUL SYLLABLE SSUM
+C475;C475;110A 116E 11B8;C475;110A 116E 11B8; # (쑵; 쑵; 쑵; 쑵; 쑵; ) HANGUL SYLLABLE SSUB
+C476;C476;110A 116E 11B9;C476;110A 116E 11B9; # (쑶; 쑶; 쑶; 쑶; 쑶; ) HANGUL SYLLABLE SSUBS
+C477;C477;110A 116E 11BA;C477;110A 116E 11BA; # (쑷; 쑷; 쑷; 쑷; 쑷; ) HANGUL SYLLABLE SSUS
+C478;C478;110A 116E 11BB;C478;110A 116E 11BB; # (쑸; 쑸; 쑸; 쑸; 쑸; ) HANGUL SYLLABLE SSUSS
+C479;C479;110A 116E 11BC;C479;110A 116E 11BC; # (쑹; 쑹; 쑹; 쑹; 쑹; ) HANGUL SYLLABLE SSUNG
+C47A;C47A;110A 116E 11BD;C47A;110A 116E 11BD; # (쑺; 쑺; 쑺; 쑺; 쑺; ) HANGUL SYLLABLE SSUJ
+C47B;C47B;110A 116E 11BE;C47B;110A 116E 11BE; # (쑻; 쑻; 쑻; 쑻; 쑻; ) HANGUL SYLLABLE SSUC
+C47C;C47C;110A 116E 11BF;C47C;110A 116E 11BF; # (쑼; 쑼; 쑼; 쑼; 쑼; ) HANGUL SYLLABLE SSUK
+C47D;C47D;110A 116E 11C0;C47D;110A 116E 11C0; # (쑽; 쑽; 쑽; 쑽; 쑽; ) HANGUL SYLLABLE SSUT
+C47E;C47E;110A 116E 11C1;C47E;110A 116E 11C1; # (쑾; 쑾; á„Šá…®á‡; 쑾; á„Šá…®á‡; ) HANGUL SYLLABLE SSUP
+C47F;C47F;110A 116E 11C2;C47F;110A 116E 11C2; # (쑿; 쑿; 쑿; 쑿; 쑿; ) HANGUL SYLLABLE SSUH
+C480;C480;110A 116F;C480;110A 116F; # (ì’€; ì’€; á„Šá…¯; ì’€; á„Šá…¯; ) HANGUL SYLLABLE SSWEO
+C481;C481;110A 116F 11A8;C481;110A 116F 11A8; # (ì’; ì’; 쒁; ì’; 쒁; ) HANGUL SYLLABLE SSWEOG
+C482;C482;110A 116F 11A9;C482;110A 116F 11A9; # (쒂; 쒂; 쒂; 쒂; 쒂; ) HANGUL SYLLABLE SSWEOGG
+C483;C483;110A 116F 11AA;C483;110A 116F 11AA; # (쒃; 쒃; 쒃; 쒃; 쒃; ) HANGUL SYLLABLE SSWEOGS
+C484;C484;110A 116F 11AB;C484;110A 116F 11AB; # (쒄; 쒄; 쒄; 쒄; 쒄; ) HANGUL SYLLABLE SSWEON
+C485;C485;110A 116F 11AC;C485;110A 116F 11AC; # (쒅; 쒅; 쒅; 쒅; 쒅; ) HANGUL SYLLABLE SSWEONJ
+C486;C486;110A 116F 11AD;C486;110A 116F 11AD; # (쒆; 쒆; 쒆; 쒆; 쒆; ) HANGUL SYLLABLE SSWEONH
+C487;C487;110A 116F 11AE;C487;110A 116F 11AE; # (쒇; 쒇; 쒇; 쒇; 쒇; ) HANGUL SYLLABLE SSWEOD
+C488;C488;110A 116F 11AF;C488;110A 116F 11AF; # (쒈; 쒈; 쒈; 쒈; 쒈; ) HANGUL SYLLABLE SSWEOL
+C489;C489;110A 116F 11B0;C489;110A 116F 11B0; # (쒉; 쒉; 쒉; 쒉; 쒉; ) HANGUL SYLLABLE SSWEOLG
+C48A;C48A;110A 116F 11B1;C48A;110A 116F 11B1; # (쒊; 쒊; 쒊; 쒊; 쒊; ) HANGUL SYLLABLE SSWEOLM
+C48B;C48B;110A 116F 11B2;C48B;110A 116F 11B2; # (쒋; 쒋; 쒋; 쒋; 쒋; ) HANGUL SYLLABLE SSWEOLB
+C48C;C48C;110A 116F 11B3;C48C;110A 116F 11B3; # (쒌; 쒌; 쒌; 쒌; 쒌; ) HANGUL SYLLABLE SSWEOLS
+C48D;C48D;110A 116F 11B4;C48D;110A 116F 11B4; # (ì’; ì’; 쒍; ì’; 쒍; ) HANGUL SYLLABLE SSWEOLT
+C48E;C48E;110A 116F 11B5;C48E;110A 116F 11B5; # (쒎; 쒎; 쒎; 쒎; 쒎; ) HANGUL SYLLABLE SSWEOLP
+C48F;C48F;110A 116F 11B6;C48F;110A 116F 11B6; # (ì’; ì’; 쒏; ì’; 쒏; ) HANGUL SYLLABLE SSWEOLH
+C490;C490;110A 116F 11B7;C490;110A 116F 11B7; # (ì’; ì’; 쒐; ì’; 쒐; ) HANGUL SYLLABLE SSWEOM
+C491;C491;110A 116F 11B8;C491;110A 116F 11B8; # (쒑; 쒑; 쒑; 쒑; 쒑; ) HANGUL SYLLABLE SSWEOB
+C492;C492;110A 116F 11B9;C492;110A 116F 11B9; # (쒒; 쒒; 쒒; 쒒; 쒒; ) HANGUL SYLLABLE SSWEOBS
+C493;C493;110A 116F 11BA;C493;110A 116F 11BA; # (쒓; 쒓; 쒓; 쒓; 쒓; ) HANGUL SYLLABLE SSWEOS
+C494;C494;110A 116F 11BB;C494;110A 116F 11BB; # (쒔; 쒔; 쒔; 쒔; 쒔; ) HANGUL SYLLABLE SSWEOSS
+C495;C495;110A 116F 11BC;C495;110A 116F 11BC; # (쒕; 쒕; 쒕; 쒕; 쒕; ) HANGUL SYLLABLE SSWEONG
+C496;C496;110A 116F 11BD;C496;110A 116F 11BD; # (쒖; 쒖; 쒖; 쒖; 쒖; ) HANGUL SYLLABLE SSWEOJ
+C497;C497;110A 116F 11BE;C497;110A 116F 11BE; # (쒗; 쒗; 쒗; 쒗; 쒗; ) HANGUL SYLLABLE SSWEOC
+C498;C498;110A 116F 11BF;C498;110A 116F 11BF; # (쒘; 쒘; 쒘; 쒘; 쒘; ) HANGUL SYLLABLE SSWEOK
+C499;C499;110A 116F 11C0;C499;110A 116F 11C0; # (쒙; 쒙; 쒙; 쒙; 쒙; ) HANGUL SYLLABLE SSWEOT
+C49A;C49A;110A 116F 11C1;C49A;110A 116F 11C1; # (ì’š; ì’š; á„Šá…¯á‡; ì’š; á„Šá…¯á‡; ) HANGUL SYLLABLE SSWEOP
+C49B;C49B;110A 116F 11C2;C49B;110A 116F 11C2; # (쒛; 쒛; 쒛; 쒛; 쒛; ) HANGUL SYLLABLE SSWEOH
+C49C;C49C;110A 1170;C49C;110A 1170; # (쒜; 쒜; 쒜; 쒜; 쒜; ) HANGUL SYLLABLE SSWE
+C49D;C49D;110A 1170 11A8;C49D;110A 1170 11A8; # (ì’; ì’; 쒝; ì’; 쒝; ) HANGUL SYLLABLE SSWEG
+C49E;C49E;110A 1170 11A9;C49E;110A 1170 11A9; # (쒞; 쒞; 쒞; 쒞; 쒞; ) HANGUL SYLLABLE SSWEGG
+C49F;C49F;110A 1170 11AA;C49F;110A 1170 11AA; # (쒟; 쒟; 쒟; 쒟; 쒟; ) HANGUL SYLLABLE SSWEGS
+C4A0;C4A0;110A 1170 11AB;C4A0;110A 1170 11AB; # (쒠; 쒠; 쒠; 쒠; 쒠; ) HANGUL SYLLABLE SSWEN
+C4A1;C4A1;110A 1170 11AC;C4A1;110A 1170 11AC; # (쒡; 쒡; 쒡; 쒡; 쒡; ) HANGUL SYLLABLE SSWENJ
+C4A2;C4A2;110A 1170 11AD;C4A2;110A 1170 11AD; # (쒢; 쒢; 쒢; 쒢; 쒢; ) HANGUL SYLLABLE SSWENH
+C4A3;C4A3;110A 1170 11AE;C4A3;110A 1170 11AE; # (쒣; 쒣; 쒣; 쒣; 쒣; ) HANGUL SYLLABLE SSWED
+C4A4;C4A4;110A 1170 11AF;C4A4;110A 1170 11AF; # (쒤; 쒤; 쒤; 쒤; 쒤; ) HANGUL SYLLABLE SSWEL
+C4A5;C4A5;110A 1170 11B0;C4A5;110A 1170 11B0; # (쒥; 쒥; 쒥; 쒥; 쒥; ) HANGUL SYLLABLE SSWELG
+C4A6;C4A6;110A 1170 11B1;C4A6;110A 1170 11B1; # (쒦; 쒦; 쒦; 쒦; 쒦; ) HANGUL SYLLABLE SSWELM
+C4A7;C4A7;110A 1170 11B2;C4A7;110A 1170 11B2; # (쒧; 쒧; 쒧; 쒧; 쒧; ) HANGUL SYLLABLE SSWELB
+C4A8;C4A8;110A 1170 11B3;C4A8;110A 1170 11B3; # (쒨; 쒨; 쒨; 쒨; 쒨; ) HANGUL SYLLABLE SSWELS
+C4A9;C4A9;110A 1170 11B4;C4A9;110A 1170 11B4; # (쒩; 쒩; 쒩; 쒩; 쒩; ) HANGUL SYLLABLE SSWELT
+C4AA;C4AA;110A 1170 11B5;C4AA;110A 1170 11B5; # (쒪; 쒪; 쒪; 쒪; 쒪; ) HANGUL SYLLABLE SSWELP
+C4AB;C4AB;110A 1170 11B6;C4AB;110A 1170 11B6; # (쒫; 쒫; 쒫; 쒫; 쒫; ) HANGUL SYLLABLE SSWELH
+C4AC;C4AC;110A 1170 11B7;C4AC;110A 1170 11B7; # (쒬; 쒬; 쒬; 쒬; 쒬; ) HANGUL SYLLABLE SSWEM
+C4AD;C4AD;110A 1170 11B8;C4AD;110A 1170 11B8; # (쒭; 쒭; 쒭; 쒭; 쒭; ) HANGUL SYLLABLE SSWEB
+C4AE;C4AE;110A 1170 11B9;C4AE;110A 1170 11B9; # (쒮; 쒮; 쒮; 쒮; 쒮; ) HANGUL SYLLABLE SSWEBS
+C4AF;C4AF;110A 1170 11BA;C4AF;110A 1170 11BA; # (쒯; 쒯; 쒯; 쒯; 쒯; ) HANGUL SYLLABLE SSWES
+C4B0;C4B0;110A 1170 11BB;C4B0;110A 1170 11BB; # (쒰; 쒰; 쒰; 쒰; 쒰; ) HANGUL SYLLABLE SSWESS
+C4B1;C4B1;110A 1170 11BC;C4B1;110A 1170 11BC; # (쒱; 쒱; 쒱; 쒱; 쒱; ) HANGUL SYLLABLE SSWENG
+C4B2;C4B2;110A 1170 11BD;C4B2;110A 1170 11BD; # (쒲; 쒲; 쒲; 쒲; 쒲; ) HANGUL SYLLABLE SSWEJ
+C4B3;C4B3;110A 1170 11BE;C4B3;110A 1170 11BE; # (쒳; 쒳; 쒳; 쒳; 쒳; ) HANGUL SYLLABLE SSWEC
+C4B4;C4B4;110A 1170 11BF;C4B4;110A 1170 11BF; # (쒴; 쒴; 쒴; 쒴; 쒴; ) HANGUL SYLLABLE SSWEK
+C4B5;C4B5;110A 1170 11C0;C4B5;110A 1170 11C0; # (쒵; 쒵; 쒵; 쒵; 쒵; ) HANGUL SYLLABLE SSWET
+C4B6;C4B6;110A 1170 11C1;C4B6;110A 1170 11C1; # (ì’¶; ì’¶; á„Šá…°á‡; ì’¶; á„Šá…°á‡; ) HANGUL SYLLABLE SSWEP
+C4B7;C4B7;110A 1170 11C2;C4B7;110A 1170 11C2; # (쒷; 쒷; 쒷; 쒷; 쒷; ) HANGUL SYLLABLE SSWEH
+C4B8;C4B8;110A 1171;C4B8;110A 1171; # (ì’¸; ì’¸; á„Šá…±; ì’¸; á„Šá…±; ) HANGUL SYLLABLE SSWI
+C4B9;C4B9;110A 1171 11A8;C4B9;110A 1171 11A8; # (쒹; 쒹; 쒹; 쒹; 쒹; ) HANGUL SYLLABLE SSWIG
+C4BA;C4BA;110A 1171 11A9;C4BA;110A 1171 11A9; # (쒺; 쒺; 쒺; 쒺; 쒺; ) HANGUL SYLLABLE SSWIGG
+C4BB;C4BB;110A 1171 11AA;C4BB;110A 1171 11AA; # (쒻; 쒻; 쒻; 쒻; 쒻; ) HANGUL SYLLABLE SSWIGS
+C4BC;C4BC;110A 1171 11AB;C4BC;110A 1171 11AB; # (쒼; 쒼; 쒼; 쒼; 쒼; ) HANGUL SYLLABLE SSWIN
+C4BD;C4BD;110A 1171 11AC;C4BD;110A 1171 11AC; # (쒽; 쒽; 쒽; 쒽; 쒽; ) HANGUL SYLLABLE SSWINJ
+C4BE;C4BE;110A 1171 11AD;C4BE;110A 1171 11AD; # (쒾; 쒾; 쒾; 쒾; 쒾; ) HANGUL SYLLABLE SSWINH
+C4BF;C4BF;110A 1171 11AE;C4BF;110A 1171 11AE; # (쒿; 쒿; 쒿; 쒿; 쒿; ) HANGUL SYLLABLE SSWID
+C4C0;C4C0;110A 1171 11AF;C4C0;110A 1171 11AF; # (쓀; 쓀; 쓀; 쓀; 쓀; ) HANGUL SYLLABLE SSWIL
+C4C1;C4C1;110A 1171 11B0;C4C1;110A 1171 11B0; # (ì“; ì“; 쓁; ì“; 쓁; ) HANGUL SYLLABLE SSWILG
+C4C2;C4C2;110A 1171 11B1;C4C2;110A 1171 11B1; # (쓂; 쓂; 쓂; 쓂; 쓂; ) HANGUL SYLLABLE SSWILM
+C4C3;C4C3;110A 1171 11B2;C4C3;110A 1171 11B2; # (쓃; 쓃; 쓃; 쓃; 쓃; ) HANGUL SYLLABLE SSWILB
+C4C4;C4C4;110A 1171 11B3;C4C4;110A 1171 11B3; # (쓄; 쓄; 쓄; 쓄; 쓄; ) HANGUL SYLLABLE SSWILS
+C4C5;C4C5;110A 1171 11B4;C4C5;110A 1171 11B4; # (쓅; 쓅; 쓅; 쓅; 쓅; ) HANGUL SYLLABLE SSWILT
+C4C6;C4C6;110A 1171 11B5;C4C6;110A 1171 11B5; # (쓆; 쓆; 쓆; 쓆; 쓆; ) HANGUL SYLLABLE SSWILP
+C4C7;C4C7;110A 1171 11B6;C4C7;110A 1171 11B6; # (쓇; 쓇; 쓇; 쓇; 쓇; ) HANGUL SYLLABLE SSWILH
+C4C8;C4C8;110A 1171 11B7;C4C8;110A 1171 11B7; # (쓈; 쓈; 쓈; 쓈; 쓈; ) HANGUL SYLLABLE SSWIM
+C4C9;C4C9;110A 1171 11B8;C4C9;110A 1171 11B8; # (쓉; 쓉; 쓉; 쓉; 쓉; ) HANGUL SYLLABLE SSWIB
+C4CA;C4CA;110A 1171 11B9;C4CA;110A 1171 11B9; # (쓊; 쓊; 쓊; 쓊; 쓊; ) HANGUL SYLLABLE SSWIBS
+C4CB;C4CB;110A 1171 11BA;C4CB;110A 1171 11BA; # (쓋; 쓋; 쓋; 쓋; 쓋; ) HANGUL SYLLABLE SSWIS
+C4CC;C4CC;110A 1171 11BB;C4CC;110A 1171 11BB; # (쓌; 쓌; 쓌; 쓌; 쓌; ) HANGUL SYLLABLE SSWISS
+C4CD;C4CD;110A 1171 11BC;C4CD;110A 1171 11BC; # (ì“; ì“; 쓍; ì“; 쓍; ) HANGUL SYLLABLE SSWING
+C4CE;C4CE;110A 1171 11BD;C4CE;110A 1171 11BD; # (쓎; 쓎; 쓎; 쓎; 쓎; ) HANGUL SYLLABLE SSWIJ
+C4CF;C4CF;110A 1171 11BE;C4CF;110A 1171 11BE; # (ì“; ì“; 쓏; ì“; 쓏; ) HANGUL SYLLABLE SSWIC
+C4D0;C4D0;110A 1171 11BF;C4D0;110A 1171 11BF; # (ì“; ì“; 쓐; ì“; 쓐; ) HANGUL SYLLABLE SSWIK
+C4D1;C4D1;110A 1171 11C0;C4D1;110A 1171 11C0; # (쓑; 쓑; 쓑; 쓑; 쓑; ) HANGUL SYLLABLE SSWIT
+C4D2;C4D2;110A 1171 11C1;C4D2;110A 1171 11C1; # (ì“’; ì“’; á„Šá…±á‡; ì“’; á„Šá…±á‡; ) HANGUL SYLLABLE SSWIP
+C4D3;C4D3;110A 1171 11C2;C4D3;110A 1171 11C2; # (쓓; 쓓; 쓓; 쓓; 쓓; ) HANGUL SYLLABLE SSWIH
+C4D4;C4D4;110A 1172;C4D4;110A 1172; # (ì“”; ì“”; á„Šá…²; ì“”; á„Šá…²; ) HANGUL SYLLABLE SSYU
+C4D5;C4D5;110A 1172 11A8;C4D5;110A 1172 11A8; # (쓕; 쓕; 쓕; 쓕; 쓕; ) HANGUL SYLLABLE SSYUG
+C4D6;C4D6;110A 1172 11A9;C4D6;110A 1172 11A9; # (쓖; 쓖; 쓖; 쓖; 쓖; ) HANGUL SYLLABLE SSYUGG
+C4D7;C4D7;110A 1172 11AA;C4D7;110A 1172 11AA; # (쓗; 쓗; 쓗; 쓗; 쓗; ) HANGUL SYLLABLE SSYUGS
+C4D8;C4D8;110A 1172 11AB;C4D8;110A 1172 11AB; # (쓘; 쓘; 쓘; 쓘; 쓘; ) HANGUL SYLLABLE SSYUN
+C4D9;C4D9;110A 1172 11AC;C4D9;110A 1172 11AC; # (쓙; 쓙; 쓙; 쓙; 쓙; ) HANGUL SYLLABLE SSYUNJ
+C4DA;C4DA;110A 1172 11AD;C4DA;110A 1172 11AD; # (쓚; 쓚; 쓚; 쓚; 쓚; ) HANGUL SYLLABLE SSYUNH
+C4DB;C4DB;110A 1172 11AE;C4DB;110A 1172 11AE; # (쓛; 쓛; 쓛; 쓛; 쓛; ) HANGUL SYLLABLE SSYUD
+C4DC;C4DC;110A 1172 11AF;C4DC;110A 1172 11AF; # (쓜; 쓜; 쓜; 쓜; 쓜; ) HANGUL SYLLABLE SSYUL
+C4DD;C4DD;110A 1172 11B0;C4DD;110A 1172 11B0; # (ì“; ì“; 쓝; ì“; 쓝; ) HANGUL SYLLABLE SSYULG
+C4DE;C4DE;110A 1172 11B1;C4DE;110A 1172 11B1; # (쓞; 쓞; 쓞; 쓞; 쓞; ) HANGUL SYLLABLE SSYULM
+C4DF;C4DF;110A 1172 11B2;C4DF;110A 1172 11B2; # (쓟; 쓟; 쓟; 쓟; 쓟; ) HANGUL SYLLABLE SSYULB
+C4E0;C4E0;110A 1172 11B3;C4E0;110A 1172 11B3; # (쓠; 쓠; 쓠; 쓠; 쓠; ) HANGUL SYLLABLE SSYULS
+C4E1;C4E1;110A 1172 11B4;C4E1;110A 1172 11B4; # (쓡; 쓡; 쓡; 쓡; 쓡; ) HANGUL SYLLABLE SSYULT
+C4E2;C4E2;110A 1172 11B5;C4E2;110A 1172 11B5; # (쓢; 쓢; 쓢; 쓢; 쓢; ) HANGUL SYLLABLE SSYULP
+C4E3;C4E3;110A 1172 11B6;C4E3;110A 1172 11B6; # (쓣; 쓣; 쓣; 쓣; 쓣; ) HANGUL SYLLABLE SSYULH
+C4E4;C4E4;110A 1172 11B7;C4E4;110A 1172 11B7; # (쓤; 쓤; 쓤; 쓤; 쓤; ) HANGUL SYLLABLE SSYUM
+C4E5;C4E5;110A 1172 11B8;C4E5;110A 1172 11B8; # (쓥; 쓥; 쓥; 쓥; 쓥; ) HANGUL SYLLABLE SSYUB
+C4E6;C4E6;110A 1172 11B9;C4E6;110A 1172 11B9; # (쓦; 쓦; 쓦; 쓦; 쓦; ) HANGUL SYLLABLE SSYUBS
+C4E7;C4E7;110A 1172 11BA;C4E7;110A 1172 11BA; # (쓧; 쓧; 쓧; 쓧; 쓧; ) HANGUL SYLLABLE SSYUS
+C4E8;C4E8;110A 1172 11BB;C4E8;110A 1172 11BB; # (쓨; 쓨; 쓨; 쓨; 쓨; ) HANGUL SYLLABLE SSYUSS
+C4E9;C4E9;110A 1172 11BC;C4E9;110A 1172 11BC; # (쓩; 쓩; 쓩; 쓩; 쓩; ) HANGUL SYLLABLE SSYUNG
+C4EA;C4EA;110A 1172 11BD;C4EA;110A 1172 11BD; # (쓪; 쓪; 쓪; 쓪; 쓪; ) HANGUL SYLLABLE SSYUJ
+C4EB;C4EB;110A 1172 11BE;C4EB;110A 1172 11BE; # (쓫; 쓫; 쓫; 쓫; 쓫; ) HANGUL SYLLABLE SSYUC
+C4EC;C4EC;110A 1172 11BF;C4EC;110A 1172 11BF; # (쓬; 쓬; 쓬; 쓬; 쓬; ) HANGUL SYLLABLE SSYUK
+C4ED;C4ED;110A 1172 11C0;C4ED;110A 1172 11C0; # (쓭; 쓭; 쓭; 쓭; 쓭; ) HANGUL SYLLABLE SSYUT
+C4EE;C4EE;110A 1172 11C1;C4EE;110A 1172 11C1; # (ì“®; ì“®; á„Šá…²á‡; ì“®; á„Šá…²á‡; ) HANGUL SYLLABLE SSYUP
+C4EF;C4EF;110A 1172 11C2;C4EF;110A 1172 11C2; # (쓯; 쓯; 쓯; 쓯; 쓯; ) HANGUL SYLLABLE SSYUH
+C4F0;C4F0;110A 1173;C4F0;110A 1173; # (ì“°; ì“°; á„Šá…³; ì“°; á„Šá…³; ) HANGUL SYLLABLE SSEU
+C4F1;C4F1;110A 1173 11A8;C4F1;110A 1173 11A8; # (쓱; 쓱; 쓱; 쓱; 쓱; ) HANGUL SYLLABLE SSEUG
+C4F2;C4F2;110A 1173 11A9;C4F2;110A 1173 11A9; # (쓲; 쓲; 쓲; 쓲; 쓲; ) HANGUL SYLLABLE SSEUGG
+C4F3;C4F3;110A 1173 11AA;C4F3;110A 1173 11AA; # (쓳; 쓳; 쓳; 쓳; 쓳; ) HANGUL SYLLABLE SSEUGS
+C4F4;C4F4;110A 1173 11AB;C4F4;110A 1173 11AB; # (쓴; 쓴; 쓴; 쓴; 쓴; ) HANGUL SYLLABLE SSEUN
+C4F5;C4F5;110A 1173 11AC;C4F5;110A 1173 11AC; # (쓵; 쓵; 쓵; 쓵; 쓵; ) HANGUL SYLLABLE SSEUNJ
+C4F6;C4F6;110A 1173 11AD;C4F6;110A 1173 11AD; # (쓶; 쓶; 쓶; 쓶; 쓶; ) HANGUL SYLLABLE SSEUNH
+C4F7;C4F7;110A 1173 11AE;C4F7;110A 1173 11AE; # (쓷; 쓷; 쓷; 쓷; 쓷; ) HANGUL SYLLABLE SSEUD
+C4F8;C4F8;110A 1173 11AF;C4F8;110A 1173 11AF; # (쓸; 쓸; 쓸; 쓸; 쓸; ) HANGUL SYLLABLE SSEUL
+C4F9;C4F9;110A 1173 11B0;C4F9;110A 1173 11B0; # (쓹; 쓹; 쓹; 쓹; 쓹; ) HANGUL SYLLABLE SSEULG
+C4FA;C4FA;110A 1173 11B1;C4FA;110A 1173 11B1; # (쓺; 쓺; 쓺; 쓺; 쓺; ) HANGUL SYLLABLE SSEULM
+C4FB;C4FB;110A 1173 11B2;C4FB;110A 1173 11B2; # (쓻; 쓻; 쓻; 쓻; 쓻; ) HANGUL SYLLABLE SSEULB
+C4FC;C4FC;110A 1173 11B3;C4FC;110A 1173 11B3; # (쓼; 쓼; 쓼; 쓼; 쓼; ) HANGUL SYLLABLE SSEULS
+C4FD;C4FD;110A 1173 11B4;C4FD;110A 1173 11B4; # (쓽; 쓽; 쓽; 쓽; 쓽; ) HANGUL SYLLABLE SSEULT
+C4FE;C4FE;110A 1173 11B5;C4FE;110A 1173 11B5; # (쓾; 쓾; 쓾; 쓾; 쓾; ) HANGUL SYLLABLE SSEULP
+C4FF;C4FF;110A 1173 11B6;C4FF;110A 1173 11B6; # (쓿; 쓿; 쓿; 쓿; 쓿; ) HANGUL SYLLABLE SSEULH
+C500;C500;110A 1173 11B7;C500;110A 1173 11B7; # (씀; 씀; 씀; 씀; 씀; ) HANGUL SYLLABLE SSEUM
+C501;C501;110A 1173 11B8;C501;110A 1173 11B8; # (ì”; ì”; 씁; ì”; 씁; ) HANGUL SYLLABLE SSEUB
+C502;C502;110A 1173 11B9;C502;110A 1173 11B9; # (씂; 씂; 씂; 씂; 씂; ) HANGUL SYLLABLE SSEUBS
+C503;C503;110A 1173 11BA;C503;110A 1173 11BA; # (씃; 씃; 씃; 씃; 씃; ) HANGUL SYLLABLE SSEUS
+C504;C504;110A 1173 11BB;C504;110A 1173 11BB; # (씄; 씄; 씄; 씄; 씄; ) HANGUL SYLLABLE SSEUSS
+C505;C505;110A 1173 11BC;C505;110A 1173 11BC; # (씅; 씅; 씅; 씅; 씅; ) HANGUL SYLLABLE SSEUNG
+C506;C506;110A 1173 11BD;C506;110A 1173 11BD; # (씆; 씆; 씆; 씆; 씆; ) HANGUL SYLLABLE SSEUJ
+C507;C507;110A 1173 11BE;C507;110A 1173 11BE; # (씇; 씇; 씇; 씇; 씇; ) HANGUL SYLLABLE SSEUC
+C508;C508;110A 1173 11BF;C508;110A 1173 11BF; # (씈; 씈; 씈; 씈; 씈; ) HANGUL SYLLABLE SSEUK
+C509;C509;110A 1173 11C0;C509;110A 1173 11C0; # (씉; 씉; 씉; 씉; 씉; ) HANGUL SYLLABLE SSEUT
+C50A;C50A;110A 1173 11C1;C50A;110A 1173 11C1; # (씊; 씊; á„Šá…³á‡; 씊; á„Šá…³á‡; ) HANGUL SYLLABLE SSEUP
+C50B;C50B;110A 1173 11C2;C50B;110A 1173 11C2; # (씋; 씋; 씋; 씋; 씋; ) HANGUL SYLLABLE SSEUH
+C50C;C50C;110A 1174;C50C;110A 1174; # (씌; 씌; 씌; 씌; 씌; ) HANGUL SYLLABLE SSYI
+C50D;C50D;110A 1174 11A8;C50D;110A 1174 11A8; # (ì”; ì”; 씍; ì”; 씍; ) HANGUL SYLLABLE SSYIG
+C50E;C50E;110A 1174 11A9;C50E;110A 1174 11A9; # (씎; 씎; 씎; 씎; 씎; ) HANGUL SYLLABLE SSYIGG
+C50F;C50F;110A 1174 11AA;C50F;110A 1174 11AA; # (ì”; ì”; 씏; ì”; 씏; ) HANGUL SYLLABLE SSYIGS
+C510;C510;110A 1174 11AB;C510;110A 1174 11AB; # (ì”; ì”; 씐; ì”; 씐; ) HANGUL SYLLABLE SSYIN
+C511;C511;110A 1174 11AC;C511;110A 1174 11AC; # (씑; 씑; 씑; 씑; 씑; ) HANGUL SYLLABLE SSYINJ
+C512;C512;110A 1174 11AD;C512;110A 1174 11AD; # (씒; 씒; 씒; 씒; 씒; ) HANGUL SYLLABLE SSYINH
+C513;C513;110A 1174 11AE;C513;110A 1174 11AE; # (씓; 씓; 씓; 씓; 씓; ) HANGUL SYLLABLE SSYID
+C514;C514;110A 1174 11AF;C514;110A 1174 11AF; # (씔; 씔; 씔; 씔; 씔; ) HANGUL SYLLABLE SSYIL
+C515;C515;110A 1174 11B0;C515;110A 1174 11B0; # (씕; 씕; 씕; 씕; 씕; ) HANGUL SYLLABLE SSYILG
+C516;C516;110A 1174 11B1;C516;110A 1174 11B1; # (씖; 씖; 씖; 씖; 씖; ) HANGUL SYLLABLE SSYILM
+C517;C517;110A 1174 11B2;C517;110A 1174 11B2; # (씗; 씗; 씗; 씗; 씗; ) HANGUL SYLLABLE SSYILB
+C518;C518;110A 1174 11B3;C518;110A 1174 11B3; # (씘; 씘; 씘; 씘; 씘; ) HANGUL SYLLABLE SSYILS
+C519;C519;110A 1174 11B4;C519;110A 1174 11B4; # (씙; 씙; 씙; 씙; 씙; ) HANGUL SYLLABLE SSYILT
+C51A;C51A;110A 1174 11B5;C51A;110A 1174 11B5; # (씚; 씚; 씚; 씚; 씚; ) HANGUL SYLLABLE SSYILP
+C51B;C51B;110A 1174 11B6;C51B;110A 1174 11B6; # (씛; 씛; 씛; 씛; 씛; ) HANGUL SYLLABLE SSYILH
+C51C;C51C;110A 1174 11B7;C51C;110A 1174 11B7; # (씜; 씜; 씜; 씜; 씜; ) HANGUL SYLLABLE SSYIM
+C51D;C51D;110A 1174 11B8;C51D;110A 1174 11B8; # (ì”; ì”; 씝; ì”; 씝; ) HANGUL SYLLABLE SSYIB
+C51E;C51E;110A 1174 11B9;C51E;110A 1174 11B9; # (씞; 씞; 씞; 씞; 씞; ) HANGUL SYLLABLE SSYIBS
+C51F;C51F;110A 1174 11BA;C51F;110A 1174 11BA; # (씟; 씟; 씟; 씟; 씟; ) HANGUL SYLLABLE SSYIS
+C520;C520;110A 1174 11BB;C520;110A 1174 11BB; # (씠; 씠; 씠; 씠; 씠; ) HANGUL SYLLABLE SSYISS
+C521;C521;110A 1174 11BC;C521;110A 1174 11BC; # (씡; 씡; 씡; 씡; 씡; ) HANGUL SYLLABLE SSYING
+C522;C522;110A 1174 11BD;C522;110A 1174 11BD; # (씢; 씢; 씢; 씢; 씢; ) HANGUL SYLLABLE SSYIJ
+C523;C523;110A 1174 11BE;C523;110A 1174 11BE; # (씣; 씣; 씣; 씣; 씣; ) HANGUL SYLLABLE SSYIC
+C524;C524;110A 1174 11BF;C524;110A 1174 11BF; # (씤; 씤; 씤; 씤; 씤; ) HANGUL SYLLABLE SSYIK
+C525;C525;110A 1174 11C0;C525;110A 1174 11C0; # (씥; 씥; 씥; 씥; 씥; ) HANGUL SYLLABLE SSYIT
+C526;C526;110A 1174 11C1;C526;110A 1174 11C1; # (씦; 씦; á„Šá…´á‡; 씦; á„Šá…´á‡; ) HANGUL SYLLABLE SSYIP
+C527;C527;110A 1174 11C2;C527;110A 1174 11C2; # (씧; 씧; 씧; 씧; 씧; ) HANGUL SYLLABLE SSYIH
+C528;C528;110A 1175;C528;110A 1175; # (씨; 씨; 씨; 씨; 씨; ) HANGUL SYLLABLE SSI
+C529;C529;110A 1175 11A8;C529;110A 1175 11A8; # (씩; 씩; 씩; 씩; 씩; ) HANGUL SYLLABLE SSIG
+C52A;C52A;110A 1175 11A9;C52A;110A 1175 11A9; # (씪; 씪; 씪; 씪; 씪; ) HANGUL SYLLABLE SSIGG
+C52B;C52B;110A 1175 11AA;C52B;110A 1175 11AA; # (씫; 씫; 씫; 씫; 씫; ) HANGUL SYLLABLE SSIGS
+C52C;C52C;110A 1175 11AB;C52C;110A 1175 11AB; # (씬; 씬; 씬; 씬; 씬; ) HANGUL SYLLABLE SSIN
+C52D;C52D;110A 1175 11AC;C52D;110A 1175 11AC; # (씭; 씭; 씭; 씭; 씭; ) HANGUL SYLLABLE SSINJ
+C52E;C52E;110A 1175 11AD;C52E;110A 1175 11AD; # (씮; 씮; 씮; 씮; 씮; ) HANGUL SYLLABLE SSINH
+C52F;C52F;110A 1175 11AE;C52F;110A 1175 11AE; # (씯; 씯; 씯; 씯; 씯; ) HANGUL SYLLABLE SSID
+C530;C530;110A 1175 11AF;C530;110A 1175 11AF; # (씰; 씰; 씰; 씰; 씰; ) HANGUL SYLLABLE SSIL
+C531;C531;110A 1175 11B0;C531;110A 1175 11B0; # (씱; 씱; 씱; 씱; 씱; ) HANGUL SYLLABLE SSILG
+C532;C532;110A 1175 11B1;C532;110A 1175 11B1; # (씲; 씲; 씲; 씲; 씲; ) HANGUL SYLLABLE SSILM
+C533;C533;110A 1175 11B2;C533;110A 1175 11B2; # (씳; 씳; 씳; 씳; 씳; ) HANGUL SYLLABLE SSILB
+C534;C534;110A 1175 11B3;C534;110A 1175 11B3; # (씴; 씴; 씴; 씴; 씴; ) HANGUL SYLLABLE SSILS
+C535;C535;110A 1175 11B4;C535;110A 1175 11B4; # (씵; 씵; 씵; 씵; 씵; ) HANGUL SYLLABLE SSILT
+C536;C536;110A 1175 11B5;C536;110A 1175 11B5; # (씶; 씶; 씶; 씶; 씶; ) HANGUL SYLLABLE SSILP
+C537;C537;110A 1175 11B6;C537;110A 1175 11B6; # (씷; 씷; 씷; 씷; 씷; ) HANGUL SYLLABLE SSILH
+C538;C538;110A 1175 11B7;C538;110A 1175 11B7; # (씸; 씸; 씸; 씸; 씸; ) HANGUL SYLLABLE SSIM
+C539;C539;110A 1175 11B8;C539;110A 1175 11B8; # (씹; 씹; 씹; 씹; 씹; ) HANGUL SYLLABLE SSIB
+C53A;C53A;110A 1175 11B9;C53A;110A 1175 11B9; # (씺; 씺; 씺; 씺; 씺; ) HANGUL SYLLABLE SSIBS
+C53B;C53B;110A 1175 11BA;C53B;110A 1175 11BA; # (씻; 씻; 씻; 씻; 씻; ) HANGUL SYLLABLE SSIS
+C53C;C53C;110A 1175 11BB;C53C;110A 1175 11BB; # (씼; 씼; 씼; 씼; 씼; ) HANGUL SYLLABLE SSISS
+C53D;C53D;110A 1175 11BC;C53D;110A 1175 11BC; # (씽; 씽; 씽; 씽; 씽; ) HANGUL SYLLABLE SSING
+C53E;C53E;110A 1175 11BD;C53E;110A 1175 11BD; # (씾; 씾; 씾; 씾; 씾; ) HANGUL SYLLABLE SSIJ
+C53F;C53F;110A 1175 11BE;C53F;110A 1175 11BE; # (씿; 씿; 씿; 씿; 씿; ) HANGUL SYLLABLE SSIC
+C540;C540;110A 1175 11BF;C540;110A 1175 11BF; # (앀; 앀; 앀; 앀; 앀; ) HANGUL SYLLABLE SSIK
+C541;C541;110A 1175 11C0;C541;110A 1175 11C0; # (ì•; ì•; 앁; ì•; 앁; ) HANGUL SYLLABLE SSIT
+C542;C542;110A 1175 11C1;C542;110A 1175 11C1; # (ì•‚; ì•‚; á„Šá…µá‡; ì•‚; á„Šá…µá‡; ) HANGUL SYLLABLE SSIP
+C543;C543;110A 1175 11C2;C543;110A 1175 11C2; # (앃; 앃; 앃; 앃; 앃; ) HANGUL SYLLABLE SSIH
+C544;C544;110B 1161;C544;110B 1161; # (ì•„; ì•„; á„‹á…¡; ì•„; á„‹á…¡; ) HANGUL SYLLABLE A
+C545;C545;110B 1161 11A8;C545;110B 1161 11A8; # (악; 악; 악; 악; 악; ) HANGUL SYLLABLE AG
+C546;C546;110B 1161 11A9;C546;110B 1161 11A9; # (앆; 앆; 앆; 앆; 앆; ) HANGUL SYLLABLE AGG
+C547;C547;110B 1161 11AA;C547;110B 1161 11AA; # (앇; 앇; 앇; 앇; 앇; ) HANGUL SYLLABLE AGS
+C548;C548;110B 1161 11AB;C548;110B 1161 11AB; # (안; 안; 안; 안; 안; ) HANGUL SYLLABLE AN
+C549;C549;110B 1161 11AC;C549;110B 1161 11AC; # (앉; 앉; 앉; 앉; 앉; ) HANGUL SYLLABLE ANJ
+C54A;C54A;110B 1161 11AD;C54A;110B 1161 11AD; # (않; 않; 않; 않; 않; ) HANGUL SYLLABLE ANH
+C54B;C54B;110B 1161 11AE;C54B;110B 1161 11AE; # (앋; 앋; 앋; 앋; 앋; ) HANGUL SYLLABLE AD
+C54C;C54C;110B 1161 11AF;C54C;110B 1161 11AF; # (알; 알; 알; 알; 알; ) HANGUL SYLLABLE AL
+C54D;C54D;110B 1161 11B0;C54D;110B 1161 11B0; # (ì•; ì•; 앍; ì•; 앍; ) HANGUL SYLLABLE ALG
+C54E;C54E;110B 1161 11B1;C54E;110B 1161 11B1; # (앎; 앎; 앎; 앎; 앎; ) HANGUL SYLLABLE ALM
+C54F;C54F;110B 1161 11B2;C54F;110B 1161 11B2; # (ì•; ì•; 앏; ì•; 앏; ) HANGUL SYLLABLE ALB
+C550;C550;110B 1161 11B3;C550;110B 1161 11B3; # (ì•; ì•; 앐; ì•; 앐; ) HANGUL SYLLABLE ALS
+C551;C551;110B 1161 11B4;C551;110B 1161 11B4; # (앑; 앑; 앑; 앑; 앑; ) HANGUL SYLLABLE ALT
+C552;C552;110B 1161 11B5;C552;110B 1161 11B5; # (앒; 앒; 앒; 앒; 앒; ) HANGUL SYLLABLE ALP
+C553;C553;110B 1161 11B6;C553;110B 1161 11B6; # (앓; 앓; 앓; 앓; 앓; ) HANGUL SYLLABLE ALH
+C554;C554;110B 1161 11B7;C554;110B 1161 11B7; # (암; 암; 암; 암; 암; ) HANGUL SYLLABLE AM
+C555;C555;110B 1161 11B8;C555;110B 1161 11B8; # (압; 압; 압; 압; 압; ) HANGUL SYLLABLE AB
+C556;C556;110B 1161 11B9;C556;110B 1161 11B9; # (앖; 앖; 앖; 앖; 앖; ) HANGUL SYLLABLE ABS
+C557;C557;110B 1161 11BA;C557;110B 1161 11BA; # (앗; 앗; 앗; 앗; 앗; ) HANGUL SYLLABLE AS
+C558;C558;110B 1161 11BB;C558;110B 1161 11BB; # (았; 았; 았; 았; 았; ) HANGUL SYLLABLE ASS
+C559;C559;110B 1161 11BC;C559;110B 1161 11BC; # (앙; 앙; 앙; 앙; 앙; ) HANGUL SYLLABLE ANG
+C55A;C55A;110B 1161 11BD;C55A;110B 1161 11BD; # (앚; 앚; 앚; 앚; 앚; ) HANGUL SYLLABLE AJ
+C55B;C55B;110B 1161 11BE;C55B;110B 1161 11BE; # (앛; 앛; 앛; 앛; 앛; ) HANGUL SYLLABLE AC
+C55C;C55C;110B 1161 11BF;C55C;110B 1161 11BF; # (앜; 앜; 앜; 앜; 앜; ) HANGUL SYLLABLE AK
+C55D;C55D;110B 1161 11C0;C55D;110B 1161 11C0; # (ì•; ì•; 앝; ì•; 앝; ) HANGUL SYLLABLE AT
+C55E;C55E;110B 1161 11C1;C55E;110B 1161 11C1; # (ì•ž; ì•ž; á„‹á…¡á‡; ì•ž; á„‹á…¡á‡; ) HANGUL SYLLABLE AP
+C55F;C55F;110B 1161 11C2;C55F;110B 1161 11C2; # (앟; 앟; 앟; 앟; 앟; ) HANGUL SYLLABLE AH
+C560;C560;110B 1162;C560;110B 1162; # (ì• ; ì• ; á„‹á…¢; ì• ; á„‹á…¢; ) HANGUL SYLLABLE AE
+C561;C561;110B 1162 11A8;C561;110B 1162 11A8; # (액; 액; 액; 액; 액; ) HANGUL SYLLABLE AEG
+C562;C562;110B 1162 11A9;C562;110B 1162 11A9; # (앢; 앢; 앢; 앢; 앢; ) HANGUL SYLLABLE AEGG
+C563;C563;110B 1162 11AA;C563;110B 1162 11AA; # (앣; 앣; 앣; 앣; 앣; ) HANGUL SYLLABLE AEGS
+C564;C564;110B 1162 11AB;C564;110B 1162 11AB; # (앤; 앤; 앤; 앤; 앤; ) HANGUL SYLLABLE AEN
+C565;C565;110B 1162 11AC;C565;110B 1162 11AC; # (앥; 앥; 앥; 앥; 앥; ) HANGUL SYLLABLE AENJ
+C566;C566;110B 1162 11AD;C566;110B 1162 11AD; # (앦; 앦; 앦; 앦; 앦; ) HANGUL SYLLABLE AENH
+C567;C567;110B 1162 11AE;C567;110B 1162 11AE; # (앧; 앧; 앧; 앧; 앧; ) HANGUL SYLLABLE AED
+C568;C568;110B 1162 11AF;C568;110B 1162 11AF; # (앨; 앨; 앨; 앨; 앨; ) HANGUL SYLLABLE AEL
+C569;C569;110B 1162 11B0;C569;110B 1162 11B0; # (앩; 앩; 앩; 앩; 앩; ) HANGUL SYLLABLE AELG
+C56A;C56A;110B 1162 11B1;C56A;110B 1162 11B1; # (앪; 앪; 앪; 앪; 앪; ) HANGUL SYLLABLE AELM
+C56B;C56B;110B 1162 11B2;C56B;110B 1162 11B2; # (앫; 앫; 앫; 앫; 앫; ) HANGUL SYLLABLE AELB
+C56C;C56C;110B 1162 11B3;C56C;110B 1162 11B3; # (앬; 앬; 앬; 앬; 앬; ) HANGUL SYLLABLE AELS
+C56D;C56D;110B 1162 11B4;C56D;110B 1162 11B4; # (앭; 앭; 앭; 앭; 앭; ) HANGUL SYLLABLE AELT
+C56E;C56E;110B 1162 11B5;C56E;110B 1162 11B5; # (앮; 앮; 앮; 앮; 앮; ) HANGUL SYLLABLE AELP
+C56F;C56F;110B 1162 11B6;C56F;110B 1162 11B6; # (앯; 앯; 앯; 앯; 앯; ) HANGUL SYLLABLE AELH
+C570;C570;110B 1162 11B7;C570;110B 1162 11B7; # (앰; 앰; 앰; 앰; 앰; ) HANGUL SYLLABLE AEM
+C571;C571;110B 1162 11B8;C571;110B 1162 11B8; # (앱; 앱; 앱; 앱; 앱; ) HANGUL SYLLABLE AEB
+C572;C572;110B 1162 11B9;C572;110B 1162 11B9; # (앲; 앲; 앲; 앲; 앲; ) HANGUL SYLLABLE AEBS
+C573;C573;110B 1162 11BA;C573;110B 1162 11BA; # (앳; 앳; 앳; 앳; 앳; ) HANGUL SYLLABLE AES
+C574;C574;110B 1162 11BB;C574;110B 1162 11BB; # (앴; 앴; 앴; 앴; 앴; ) HANGUL SYLLABLE AESS
+C575;C575;110B 1162 11BC;C575;110B 1162 11BC; # (앵; 앵; 앵; 앵; 앵; ) HANGUL SYLLABLE AENG
+C576;C576;110B 1162 11BD;C576;110B 1162 11BD; # (앶; 앶; 앶; 앶; 앶; ) HANGUL SYLLABLE AEJ
+C577;C577;110B 1162 11BE;C577;110B 1162 11BE; # (앷; 앷; 앷; 앷; 앷; ) HANGUL SYLLABLE AEC
+C578;C578;110B 1162 11BF;C578;110B 1162 11BF; # (앸; 앸; 앸; 앸; 앸; ) HANGUL SYLLABLE AEK
+C579;C579;110B 1162 11C0;C579;110B 1162 11C0; # (앹; 앹; 앹; 앹; 앹; ) HANGUL SYLLABLE AET
+C57A;C57A;110B 1162 11C1;C57A;110B 1162 11C1; # (앺; 앺; á„‹á…¢á‡; 앺; á„‹á…¢á‡; ) HANGUL SYLLABLE AEP
+C57B;C57B;110B 1162 11C2;C57B;110B 1162 11C2; # (앻; 앻; 앻; 앻; 앻; ) HANGUL SYLLABLE AEH
+C57C;C57C;110B 1163;C57C;110B 1163; # (야; 야; 야; 야; 야; ) HANGUL SYLLABLE YA
+C57D;C57D;110B 1163 11A8;C57D;110B 1163 11A8; # (약; 약; 약; 약; 약; ) HANGUL SYLLABLE YAG
+C57E;C57E;110B 1163 11A9;C57E;110B 1163 11A9; # (앾; 앾; 앾; 앾; 앾; ) HANGUL SYLLABLE YAGG
+C57F;C57F;110B 1163 11AA;C57F;110B 1163 11AA; # (앿; 앿; 앿; 앿; 앿; ) HANGUL SYLLABLE YAGS
+C580;C580;110B 1163 11AB;C580;110B 1163 11AB; # (얀; 얀; 얀; 얀; 얀; ) HANGUL SYLLABLE YAN
+C581;C581;110B 1163 11AC;C581;110B 1163 11AC; # (ì–; ì–; 얁; ì–; 얁; ) HANGUL SYLLABLE YANJ
+C582;C582;110B 1163 11AD;C582;110B 1163 11AD; # (얂; 얂; 얂; 얂; 얂; ) HANGUL SYLLABLE YANH
+C583;C583;110B 1163 11AE;C583;110B 1163 11AE; # (얃; 얃; 얃; 얃; 얃; ) HANGUL SYLLABLE YAD
+C584;C584;110B 1163 11AF;C584;110B 1163 11AF; # (얄; 얄; 얄; 얄; 얄; ) HANGUL SYLLABLE YAL
+C585;C585;110B 1163 11B0;C585;110B 1163 11B0; # (얅; 얅; 얅; 얅; 얅; ) HANGUL SYLLABLE YALG
+C586;C586;110B 1163 11B1;C586;110B 1163 11B1; # (얆; 얆; 얆; 얆; 얆; ) HANGUL SYLLABLE YALM
+C587;C587;110B 1163 11B2;C587;110B 1163 11B2; # (얇; 얇; 얇; 얇; 얇; ) HANGUL SYLLABLE YALB
+C588;C588;110B 1163 11B3;C588;110B 1163 11B3; # (얈; 얈; 얈; 얈; 얈; ) HANGUL SYLLABLE YALS
+C589;C589;110B 1163 11B4;C589;110B 1163 11B4; # (얉; 얉; 얉; 얉; 얉; ) HANGUL SYLLABLE YALT
+C58A;C58A;110B 1163 11B5;C58A;110B 1163 11B5; # (얊; 얊; 얊; 얊; 얊; ) HANGUL SYLLABLE YALP
+C58B;C58B;110B 1163 11B6;C58B;110B 1163 11B6; # (얋; 얋; 얋; 얋; 얋; ) HANGUL SYLLABLE YALH
+C58C;C58C;110B 1163 11B7;C58C;110B 1163 11B7; # (얌; 얌; 얌; 얌; 얌; ) HANGUL SYLLABLE YAM
+C58D;C58D;110B 1163 11B8;C58D;110B 1163 11B8; # (ì–; ì–; 얍; ì–; 얍; ) HANGUL SYLLABLE YAB
+C58E;C58E;110B 1163 11B9;C58E;110B 1163 11B9; # (얎; 얎; 얎; 얎; 얎; ) HANGUL SYLLABLE YABS
+C58F;C58F;110B 1163 11BA;C58F;110B 1163 11BA; # (ì–; ì–; 얏; ì–; 얏; ) HANGUL SYLLABLE YAS
+C590;C590;110B 1163 11BB;C590;110B 1163 11BB; # (ì–; ì–; 얐; ì–; 얐; ) HANGUL SYLLABLE YASS
+C591;C591;110B 1163 11BC;C591;110B 1163 11BC; # (양; 양; 양; 양; 양; ) HANGUL SYLLABLE YANG
+C592;C592;110B 1163 11BD;C592;110B 1163 11BD; # (얒; 얒; 얒; 얒; 얒; ) HANGUL SYLLABLE YAJ
+C593;C593;110B 1163 11BE;C593;110B 1163 11BE; # (얓; 얓; 얓; 얓; 얓; ) HANGUL SYLLABLE YAC
+C594;C594;110B 1163 11BF;C594;110B 1163 11BF; # (얔; 얔; 얔; 얔; 얔; ) HANGUL SYLLABLE YAK
+C595;C595;110B 1163 11C0;C595;110B 1163 11C0; # (얕; 얕; 얕; 얕; 얕; ) HANGUL SYLLABLE YAT
+C596;C596;110B 1163 11C1;C596;110B 1163 11C1; # (ì––; ì––; á„‹á…£á‡; ì––; á„‹á…£á‡; ) HANGUL SYLLABLE YAP
+C597;C597;110B 1163 11C2;C597;110B 1163 11C2; # (얗; 얗; 얗; 얗; 얗; ) HANGUL SYLLABLE YAH
+C598;C598;110B 1164;C598;110B 1164; # (ì–˜; ì–˜; á„‹á…¤; ì–˜; á„‹á…¤; ) HANGUL SYLLABLE YAE
+C599;C599;110B 1164 11A8;C599;110B 1164 11A8; # (얙; 얙; 얙; 얙; 얙; ) HANGUL SYLLABLE YAEG
+C59A;C59A;110B 1164 11A9;C59A;110B 1164 11A9; # (얚; 얚; 얚; 얚; 얚; ) HANGUL SYLLABLE YAEGG
+C59B;C59B;110B 1164 11AA;C59B;110B 1164 11AA; # (얛; 얛; 얛; 얛; 얛; ) HANGUL SYLLABLE YAEGS
+C59C;C59C;110B 1164 11AB;C59C;110B 1164 11AB; # (얜; 얜; 얜; 얜; 얜; ) HANGUL SYLLABLE YAEN
+C59D;C59D;110B 1164 11AC;C59D;110B 1164 11AC; # (ì–; ì–; 얝; ì–; 얝; ) HANGUL SYLLABLE YAENJ
+C59E;C59E;110B 1164 11AD;C59E;110B 1164 11AD; # (얞; 얞; 얞; 얞; 얞; ) HANGUL SYLLABLE YAENH
+C59F;C59F;110B 1164 11AE;C59F;110B 1164 11AE; # (얟; 얟; 얟; 얟; 얟; ) HANGUL SYLLABLE YAED
+C5A0;C5A0;110B 1164 11AF;C5A0;110B 1164 11AF; # (얠; 얠; 얠; 얠; 얠; ) HANGUL SYLLABLE YAEL
+C5A1;C5A1;110B 1164 11B0;C5A1;110B 1164 11B0; # (얡; 얡; 얡; 얡; 얡; ) HANGUL SYLLABLE YAELG
+C5A2;C5A2;110B 1164 11B1;C5A2;110B 1164 11B1; # (얢; 얢; 얢; 얢; 얢; ) HANGUL SYLLABLE YAELM
+C5A3;C5A3;110B 1164 11B2;C5A3;110B 1164 11B2; # (얣; 얣; 얣; 얣; 얣; ) HANGUL SYLLABLE YAELB
+C5A4;C5A4;110B 1164 11B3;C5A4;110B 1164 11B3; # (얤; 얤; 얤; 얤; 얤; ) HANGUL SYLLABLE YAELS
+C5A5;C5A5;110B 1164 11B4;C5A5;110B 1164 11B4; # (얥; 얥; 얥; 얥; 얥; ) HANGUL SYLLABLE YAELT
+C5A6;C5A6;110B 1164 11B5;C5A6;110B 1164 11B5; # (얦; 얦; 얦; 얦; 얦; ) HANGUL SYLLABLE YAELP
+C5A7;C5A7;110B 1164 11B6;C5A7;110B 1164 11B6; # (얧; 얧; 얧; 얧; 얧; ) HANGUL SYLLABLE YAELH
+C5A8;C5A8;110B 1164 11B7;C5A8;110B 1164 11B7; # (얨; 얨; 얨; 얨; 얨; ) HANGUL SYLLABLE YAEM
+C5A9;C5A9;110B 1164 11B8;C5A9;110B 1164 11B8; # (얩; 얩; 얩; 얩; 얩; ) HANGUL SYLLABLE YAEB
+C5AA;C5AA;110B 1164 11B9;C5AA;110B 1164 11B9; # (얪; 얪; 얪; 얪; 얪; ) HANGUL SYLLABLE YAEBS
+C5AB;C5AB;110B 1164 11BA;C5AB;110B 1164 11BA; # (얫; 얫; 얫; 얫; 얫; ) HANGUL SYLLABLE YAES
+C5AC;C5AC;110B 1164 11BB;C5AC;110B 1164 11BB; # (얬; 얬; 얬; 얬; 얬; ) HANGUL SYLLABLE YAESS
+C5AD;C5AD;110B 1164 11BC;C5AD;110B 1164 11BC; # (얭; 얭; 얭; 얭; 얭; ) HANGUL SYLLABLE YAENG
+C5AE;C5AE;110B 1164 11BD;C5AE;110B 1164 11BD; # (얮; 얮; 얮; 얮; 얮; ) HANGUL SYLLABLE YAEJ
+C5AF;C5AF;110B 1164 11BE;C5AF;110B 1164 11BE; # (얯; 얯; 얯; 얯; 얯; ) HANGUL SYLLABLE YAEC
+C5B0;C5B0;110B 1164 11BF;C5B0;110B 1164 11BF; # (얰; 얰; 얰; 얰; 얰; ) HANGUL SYLLABLE YAEK
+C5B1;C5B1;110B 1164 11C0;C5B1;110B 1164 11C0; # (얱; 얱; 얱; 얱; 얱; ) HANGUL SYLLABLE YAET
+C5B2;C5B2;110B 1164 11C1;C5B2;110B 1164 11C1; # (ì–²; ì–²; á„‹á…¤á‡; ì–²; á„‹á…¤á‡; ) HANGUL SYLLABLE YAEP
+C5B3;C5B3;110B 1164 11C2;C5B3;110B 1164 11C2; # (얳; 얳; 얳; 얳; 얳; ) HANGUL SYLLABLE YAEH
+C5B4;C5B4;110B 1165;C5B4;110B 1165; # (ì–´; ì–´; á„‹á…¥; ì–´; á„‹á…¥; ) HANGUL SYLLABLE EO
+C5B5;C5B5;110B 1165 11A8;C5B5;110B 1165 11A8; # (억; 억; 억; 억; 억; ) HANGUL SYLLABLE EOG
+C5B6;C5B6;110B 1165 11A9;C5B6;110B 1165 11A9; # (얶; 얶; 얶; 얶; 얶; ) HANGUL SYLLABLE EOGG
+C5B7;C5B7;110B 1165 11AA;C5B7;110B 1165 11AA; # (얷; 얷; 얷; 얷; 얷; ) HANGUL SYLLABLE EOGS
+C5B8;C5B8;110B 1165 11AB;C5B8;110B 1165 11AB; # (언; 언; 언; 언; 언; ) HANGUL SYLLABLE EON
+C5B9;C5B9;110B 1165 11AC;C5B9;110B 1165 11AC; # (얹; 얹; 얹; 얹; 얹; ) HANGUL SYLLABLE EONJ
+C5BA;C5BA;110B 1165 11AD;C5BA;110B 1165 11AD; # (얺; 얺; 얺; 얺; 얺; ) HANGUL SYLLABLE EONH
+C5BB;C5BB;110B 1165 11AE;C5BB;110B 1165 11AE; # (얻; 얻; 얻; 얻; 얻; ) HANGUL SYLLABLE EOD
+C5BC;C5BC;110B 1165 11AF;C5BC;110B 1165 11AF; # (얼; 얼; 얼; 얼; 얼; ) HANGUL SYLLABLE EOL
+C5BD;C5BD;110B 1165 11B0;C5BD;110B 1165 11B0; # (얽; 얽; 얽; 얽; 얽; ) HANGUL SYLLABLE EOLG
+C5BE;C5BE;110B 1165 11B1;C5BE;110B 1165 11B1; # (얾; 얾; 얾; 얾; 얾; ) HANGUL SYLLABLE EOLM
+C5BF;C5BF;110B 1165 11B2;C5BF;110B 1165 11B2; # (얿; 얿; 얿; 얿; 얿; ) HANGUL SYLLABLE EOLB
+C5C0;C5C0;110B 1165 11B3;C5C0;110B 1165 11B3; # (엀; 엀; 엀; 엀; 엀; ) HANGUL SYLLABLE EOLS
+C5C1;C5C1;110B 1165 11B4;C5C1;110B 1165 11B4; # (ì—; ì—; 엁; ì—; 엁; ) HANGUL SYLLABLE EOLT
+C5C2;C5C2;110B 1165 11B5;C5C2;110B 1165 11B5; # (엂; 엂; 엂; 엂; 엂; ) HANGUL SYLLABLE EOLP
+C5C3;C5C3;110B 1165 11B6;C5C3;110B 1165 11B6; # (엃; 엃; 엃; 엃; 엃; ) HANGUL SYLLABLE EOLH
+C5C4;C5C4;110B 1165 11B7;C5C4;110B 1165 11B7; # (엄; 엄; 엄; 엄; 엄; ) HANGUL SYLLABLE EOM
+C5C5;C5C5;110B 1165 11B8;C5C5;110B 1165 11B8; # (업; 업; 업; 업; 업; ) HANGUL SYLLABLE EOB
+C5C6;C5C6;110B 1165 11B9;C5C6;110B 1165 11B9; # (없; 없; 없; 없; 없; ) HANGUL SYLLABLE EOBS
+C5C7;C5C7;110B 1165 11BA;C5C7;110B 1165 11BA; # (엇; 엇; 엇; 엇; 엇; ) HANGUL SYLLABLE EOS
+C5C8;C5C8;110B 1165 11BB;C5C8;110B 1165 11BB; # (었; 었; 었; 었; 었; ) HANGUL SYLLABLE EOSS
+C5C9;C5C9;110B 1165 11BC;C5C9;110B 1165 11BC; # (엉; 엉; 엉; 엉; 엉; ) HANGUL SYLLABLE EONG
+C5CA;C5CA;110B 1165 11BD;C5CA;110B 1165 11BD; # (엊; 엊; 엊; 엊; 엊; ) HANGUL SYLLABLE EOJ
+C5CB;C5CB;110B 1165 11BE;C5CB;110B 1165 11BE; # (엋; 엋; 엋; 엋; 엋; ) HANGUL SYLLABLE EOC
+C5CC;C5CC;110B 1165 11BF;C5CC;110B 1165 11BF; # (엌; 엌; 엌; 엌; 엌; ) HANGUL SYLLABLE EOK
+C5CD;C5CD;110B 1165 11C0;C5CD;110B 1165 11C0; # (ì—; ì—; 엍; ì—; 엍; ) HANGUL SYLLABLE EOT
+C5CE;C5CE;110B 1165 11C1;C5CE;110B 1165 11C1; # (ì—Ž; ì—Ž; á„‹á…¥á‡; ì—Ž; á„‹á…¥á‡; ) HANGUL SYLLABLE EOP
+C5CF;C5CF;110B 1165 11C2;C5CF;110B 1165 11C2; # (ì—; ì—; 엏; ì—; 엏; ) HANGUL SYLLABLE EOH
+C5D0;C5D0;110B 1166;C5D0;110B 1166; # (ì—; ì—; á„‹á…¦; ì—; á„‹á…¦; ) HANGUL SYLLABLE E
+C5D1;C5D1;110B 1166 11A8;C5D1;110B 1166 11A8; # (엑; 엑; 엑; 엑; 엑; ) HANGUL SYLLABLE EG
+C5D2;C5D2;110B 1166 11A9;C5D2;110B 1166 11A9; # (엒; 엒; 엒; 엒; 엒; ) HANGUL SYLLABLE EGG
+C5D3;C5D3;110B 1166 11AA;C5D3;110B 1166 11AA; # (엓; 엓; 엓; 엓; 엓; ) HANGUL SYLLABLE EGS
+C5D4;C5D4;110B 1166 11AB;C5D4;110B 1166 11AB; # (엔; 엔; 엔; 엔; 엔; ) HANGUL SYLLABLE EN
+C5D5;C5D5;110B 1166 11AC;C5D5;110B 1166 11AC; # (엕; 엕; 엕; 엕; 엕; ) HANGUL SYLLABLE ENJ
+C5D6;C5D6;110B 1166 11AD;C5D6;110B 1166 11AD; # (엖; 엖; 엖; 엖; 엖; ) HANGUL SYLLABLE ENH
+C5D7;C5D7;110B 1166 11AE;C5D7;110B 1166 11AE; # (엗; 엗; 엗; 엗; 엗; ) HANGUL SYLLABLE ED
+C5D8;C5D8;110B 1166 11AF;C5D8;110B 1166 11AF; # (엘; 엘; 엘; 엘; 엘; ) HANGUL SYLLABLE EL
+C5D9;C5D9;110B 1166 11B0;C5D9;110B 1166 11B0; # (엙; 엙; 엙; 엙; 엙; ) HANGUL SYLLABLE ELG
+C5DA;C5DA;110B 1166 11B1;C5DA;110B 1166 11B1; # (엚; 엚; 엚; 엚; 엚; ) HANGUL SYLLABLE ELM
+C5DB;C5DB;110B 1166 11B2;C5DB;110B 1166 11B2; # (엛; 엛; 엛; 엛; 엛; ) HANGUL SYLLABLE ELB
+C5DC;C5DC;110B 1166 11B3;C5DC;110B 1166 11B3; # (엜; 엜; 엜; 엜; 엜; ) HANGUL SYLLABLE ELS
+C5DD;C5DD;110B 1166 11B4;C5DD;110B 1166 11B4; # (ì—; ì—; 엝; ì—; 엝; ) HANGUL SYLLABLE ELT
+C5DE;C5DE;110B 1166 11B5;C5DE;110B 1166 11B5; # (엞; 엞; 엞; 엞; 엞; ) HANGUL SYLLABLE ELP
+C5DF;C5DF;110B 1166 11B6;C5DF;110B 1166 11B6; # (엟; 엟; 엟; 엟; 엟; ) HANGUL SYLLABLE ELH
+C5E0;C5E0;110B 1166 11B7;C5E0;110B 1166 11B7; # (엠; 엠; 엠; 엠; 엠; ) HANGUL SYLLABLE EM
+C5E1;C5E1;110B 1166 11B8;C5E1;110B 1166 11B8; # (엡; 엡; 엡; 엡; 엡; ) HANGUL SYLLABLE EB
+C5E2;C5E2;110B 1166 11B9;C5E2;110B 1166 11B9; # (엢; 엢; 엢; 엢; 엢; ) HANGUL SYLLABLE EBS
+C5E3;C5E3;110B 1166 11BA;C5E3;110B 1166 11BA; # (엣; 엣; 엣; 엣; 엣; ) HANGUL SYLLABLE ES
+C5E4;C5E4;110B 1166 11BB;C5E4;110B 1166 11BB; # (엤; 엤; 엤; 엤; 엤; ) HANGUL SYLLABLE ESS
+C5E5;C5E5;110B 1166 11BC;C5E5;110B 1166 11BC; # (엥; 엥; 엥; 엥; 엥; ) HANGUL SYLLABLE ENG
+C5E6;C5E6;110B 1166 11BD;C5E6;110B 1166 11BD; # (엦; 엦; 엦; 엦; 엦; ) HANGUL SYLLABLE EJ
+C5E7;C5E7;110B 1166 11BE;C5E7;110B 1166 11BE; # (엧; 엧; 엧; 엧; 엧; ) HANGUL SYLLABLE EC
+C5E8;C5E8;110B 1166 11BF;C5E8;110B 1166 11BF; # (엨; 엨; 엨; 엨; 엨; ) HANGUL SYLLABLE EK
+C5E9;C5E9;110B 1166 11C0;C5E9;110B 1166 11C0; # (엩; 엩; 엩; 엩; 엩; ) HANGUL SYLLABLE ET
+C5EA;C5EA;110B 1166 11C1;C5EA;110B 1166 11C1; # (ì—ª; ì—ª; á„‹á…¦á‡; ì—ª; á„‹á…¦á‡; ) HANGUL SYLLABLE EP
+C5EB;C5EB;110B 1166 11C2;C5EB;110B 1166 11C2; # (엫; 엫; 엫; 엫; 엫; ) HANGUL SYLLABLE EH
+C5EC;C5EC;110B 1167;C5EC;110B 1167; # (ì—¬; ì—¬; á„‹á…§; ì—¬; á„‹á…§; ) HANGUL SYLLABLE YEO
+C5ED;C5ED;110B 1167 11A8;C5ED;110B 1167 11A8; # (역; 역; 역; 역; 역; ) HANGUL SYLLABLE YEOG
+C5EE;C5EE;110B 1167 11A9;C5EE;110B 1167 11A9; # (엮; 엮; 엮; 엮; 엮; ) HANGUL SYLLABLE YEOGG
+C5EF;C5EF;110B 1167 11AA;C5EF;110B 1167 11AA; # (엯; 엯; 엯; 엯; 엯; ) HANGUL SYLLABLE YEOGS
+C5F0;C5F0;110B 1167 11AB;C5F0;110B 1167 11AB; # (연; 연; 연; 연; 연; ) HANGUL SYLLABLE YEON
+C5F1;C5F1;110B 1167 11AC;C5F1;110B 1167 11AC; # (엱; 엱; 엱; 엱; 엱; ) HANGUL SYLLABLE YEONJ
+C5F2;C5F2;110B 1167 11AD;C5F2;110B 1167 11AD; # (엲; 엲; 엲; 엲; 엲; ) HANGUL SYLLABLE YEONH
+C5F3;C5F3;110B 1167 11AE;C5F3;110B 1167 11AE; # (엳; 엳; 엳; 엳; 엳; ) HANGUL SYLLABLE YEOD
+C5F4;C5F4;110B 1167 11AF;C5F4;110B 1167 11AF; # (열; 열; 열; 열; 열; ) HANGUL SYLLABLE YEOL
+C5F5;C5F5;110B 1167 11B0;C5F5;110B 1167 11B0; # (엵; 엵; 엵; 엵; 엵; ) HANGUL SYLLABLE YEOLG
+C5F6;C5F6;110B 1167 11B1;C5F6;110B 1167 11B1; # (엶; 엶; 엶; 엶; 엶; ) HANGUL SYLLABLE YEOLM
+C5F7;C5F7;110B 1167 11B2;C5F7;110B 1167 11B2; # (엷; 엷; 엷; 엷; 엷; ) HANGUL SYLLABLE YEOLB
+C5F8;C5F8;110B 1167 11B3;C5F8;110B 1167 11B3; # (엸; 엸; 엸; 엸; 엸; ) HANGUL SYLLABLE YEOLS
+C5F9;C5F9;110B 1167 11B4;C5F9;110B 1167 11B4; # (엹; 엹; 엹; 엹; 엹; ) HANGUL SYLLABLE YEOLT
+C5FA;C5FA;110B 1167 11B5;C5FA;110B 1167 11B5; # (엺; 엺; 엺; 엺; 엺; ) HANGUL SYLLABLE YEOLP
+C5FB;C5FB;110B 1167 11B6;C5FB;110B 1167 11B6; # (엻; 엻; 엻; 엻; 엻; ) HANGUL SYLLABLE YEOLH
+C5FC;C5FC;110B 1167 11B7;C5FC;110B 1167 11B7; # (염; 염; 염; 염; 염; ) HANGUL SYLLABLE YEOM
+C5FD;C5FD;110B 1167 11B8;C5FD;110B 1167 11B8; # (엽; 엽; 엽; 엽; 엽; ) HANGUL SYLLABLE YEOB
+C5FE;C5FE;110B 1167 11B9;C5FE;110B 1167 11B9; # (엾; 엾; 엾; 엾; 엾; ) HANGUL SYLLABLE YEOBS
+C5FF;C5FF;110B 1167 11BA;C5FF;110B 1167 11BA; # (엿; 엿; 엿; 엿; 엿; ) HANGUL SYLLABLE YEOS
+C600;C600;110B 1167 11BB;C600;110B 1167 11BB; # (였; 였; 였; 였; 였; ) HANGUL SYLLABLE YEOSS
+C601;C601;110B 1167 11BC;C601;110B 1167 11BC; # (ì˜; ì˜; 영; ì˜; 영; ) HANGUL SYLLABLE YEONG
+C602;C602;110B 1167 11BD;C602;110B 1167 11BD; # (옂; 옂; 옂; 옂; 옂; ) HANGUL SYLLABLE YEOJ
+C603;C603;110B 1167 11BE;C603;110B 1167 11BE; # (옃; 옃; 옃; 옃; 옃; ) HANGUL SYLLABLE YEOC
+C604;C604;110B 1167 11BF;C604;110B 1167 11BF; # (옄; 옄; 옄; 옄; 옄; ) HANGUL SYLLABLE YEOK
+C605;C605;110B 1167 11C0;C605;110B 1167 11C0; # (옅; 옅; 옅; 옅; 옅; ) HANGUL SYLLABLE YEOT
+C606;C606;110B 1167 11C1;C606;110B 1167 11C1; # (옆; 옆; á„‹á…§á‡; 옆; á„‹á…§á‡; ) HANGUL SYLLABLE YEOP
+C607;C607;110B 1167 11C2;C607;110B 1167 11C2; # (옇; 옇; 옇; 옇; 옇; ) HANGUL SYLLABLE YEOH
+C608;C608;110B 1168;C608;110B 1168; # (예; 예; 예; 예; 예; ) HANGUL SYLLABLE YE
+C609;C609;110B 1168 11A8;C609;110B 1168 11A8; # (옉; 옉; 옉; 옉; 옉; ) HANGUL SYLLABLE YEG
+C60A;C60A;110B 1168 11A9;C60A;110B 1168 11A9; # (옊; 옊; 옊; 옊; 옊; ) HANGUL SYLLABLE YEGG
+C60B;C60B;110B 1168 11AA;C60B;110B 1168 11AA; # (옋; 옋; 옋; 옋; 옋; ) HANGUL SYLLABLE YEGS
+C60C;C60C;110B 1168 11AB;C60C;110B 1168 11AB; # (옌; 옌; 옌; 옌; 옌; ) HANGUL SYLLABLE YEN
+C60D;C60D;110B 1168 11AC;C60D;110B 1168 11AC; # (ì˜; ì˜; 옍; ì˜; 옍; ) HANGUL SYLLABLE YENJ
+C60E;C60E;110B 1168 11AD;C60E;110B 1168 11AD; # (옎; 옎; 옎; 옎; 옎; ) HANGUL SYLLABLE YENH
+C60F;C60F;110B 1168 11AE;C60F;110B 1168 11AE; # (ì˜; ì˜; 옏; ì˜; 옏; ) HANGUL SYLLABLE YED
+C610;C610;110B 1168 11AF;C610;110B 1168 11AF; # (ì˜; ì˜; 옐; ì˜; 옐; ) HANGUL SYLLABLE YEL
+C611;C611;110B 1168 11B0;C611;110B 1168 11B0; # (옑; 옑; 옑; 옑; 옑; ) HANGUL SYLLABLE YELG
+C612;C612;110B 1168 11B1;C612;110B 1168 11B1; # (옒; 옒; 옒; 옒; 옒; ) HANGUL SYLLABLE YELM
+C613;C613;110B 1168 11B2;C613;110B 1168 11B2; # (옓; 옓; 옓; 옓; 옓; ) HANGUL SYLLABLE YELB
+C614;C614;110B 1168 11B3;C614;110B 1168 11B3; # (옔; 옔; 옔; 옔; 옔; ) HANGUL SYLLABLE YELS
+C615;C615;110B 1168 11B4;C615;110B 1168 11B4; # (옕; 옕; 옕; 옕; 옕; ) HANGUL SYLLABLE YELT
+C616;C616;110B 1168 11B5;C616;110B 1168 11B5; # (옖; 옖; 옖; 옖; 옖; ) HANGUL SYLLABLE YELP
+C617;C617;110B 1168 11B6;C617;110B 1168 11B6; # (옗; 옗; 옗; 옗; 옗; ) HANGUL SYLLABLE YELH
+C618;C618;110B 1168 11B7;C618;110B 1168 11B7; # (옘; 옘; 옘; 옘; 옘; ) HANGUL SYLLABLE YEM
+C619;C619;110B 1168 11B8;C619;110B 1168 11B8; # (옙; 옙; 옙; 옙; 옙; ) HANGUL SYLLABLE YEB
+C61A;C61A;110B 1168 11B9;C61A;110B 1168 11B9; # (옚; 옚; 옚; 옚; 옚; ) HANGUL SYLLABLE YEBS
+C61B;C61B;110B 1168 11BA;C61B;110B 1168 11BA; # (옛; 옛; 옛; 옛; 옛; ) HANGUL SYLLABLE YES
+C61C;C61C;110B 1168 11BB;C61C;110B 1168 11BB; # (옜; 옜; 옜; 옜; 옜; ) HANGUL SYLLABLE YESS
+C61D;C61D;110B 1168 11BC;C61D;110B 1168 11BC; # (ì˜; ì˜; 옝; ì˜; 옝; ) HANGUL SYLLABLE YENG
+C61E;C61E;110B 1168 11BD;C61E;110B 1168 11BD; # (옞; 옞; 옞; 옞; 옞; ) HANGUL SYLLABLE YEJ
+C61F;C61F;110B 1168 11BE;C61F;110B 1168 11BE; # (옟; 옟; 옟; 옟; 옟; ) HANGUL SYLLABLE YEC
+C620;C620;110B 1168 11BF;C620;110B 1168 11BF; # (옠; 옠; 옠; 옠; 옠; ) HANGUL SYLLABLE YEK
+C621;C621;110B 1168 11C0;C621;110B 1168 11C0; # (옡; 옡; 옡; 옡; 옡; ) HANGUL SYLLABLE YET
+C622;C622;110B 1168 11C1;C622;110B 1168 11C1; # (옢; 옢; á„‹á…¨á‡; 옢; á„‹á…¨á‡; ) HANGUL SYLLABLE YEP
+C623;C623;110B 1168 11C2;C623;110B 1168 11C2; # (옣; 옣; 옣; 옣; 옣; ) HANGUL SYLLABLE YEH
+C624;C624;110B 1169;C624;110B 1169; # (오; 오; 오; 오; 오; ) HANGUL SYLLABLE O
+C625;C625;110B 1169 11A8;C625;110B 1169 11A8; # (옥; 옥; 옥; 옥; 옥; ) HANGUL SYLLABLE OG
+C626;C626;110B 1169 11A9;C626;110B 1169 11A9; # (옦; 옦; 옦; 옦; 옦; ) HANGUL SYLLABLE OGG
+C627;C627;110B 1169 11AA;C627;110B 1169 11AA; # (옧; 옧; 옧; 옧; 옧; ) HANGUL SYLLABLE OGS
+C628;C628;110B 1169 11AB;C628;110B 1169 11AB; # (온; 온; 온; 온; 온; ) HANGUL SYLLABLE ON
+C629;C629;110B 1169 11AC;C629;110B 1169 11AC; # (옩; 옩; 옩; 옩; 옩; ) HANGUL SYLLABLE ONJ
+C62A;C62A;110B 1169 11AD;C62A;110B 1169 11AD; # (옪; 옪; 옪; 옪; 옪; ) HANGUL SYLLABLE ONH
+C62B;C62B;110B 1169 11AE;C62B;110B 1169 11AE; # (옫; 옫; 옫; 옫; 옫; ) HANGUL SYLLABLE OD
+C62C;C62C;110B 1169 11AF;C62C;110B 1169 11AF; # (올; 올; 올; 올; 올; ) HANGUL SYLLABLE OL
+C62D;C62D;110B 1169 11B0;C62D;110B 1169 11B0; # (옭; 옭; 옭; 옭; 옭; ) HANGUL SYLLABLE OLG
+C62E;C62E;110B 1169 11B1;C62E;110B 1169 11B1; # (옮; 옮; 옮; 옮; 옮; ) HANGUL SYLLABLE OLM
+C62F;C62F;110B 1169 11B2;C62F;110B 1169 11B2; # (옯; 옯; 옯; 옯; 옯; ) HANGUL SYLLABLE OLB
+C630;C630;110B 1169 11B3;C630;110B 1169 11B3; # (옰; 옰; 옰; 옰; 옰; ) HANGUL SYLLABLE OLS
+C631;C631;110B 1169 11B4;C631;110B 1169 11B4; # (옱; 옱; 옱; 옱; 옱; ) HANGUL SYLLABLE OLT
+C632;C632;110B 1169 11B5;C632;110B 1169 11B5; # (옲; 옲; 옲; 옲; 옲; ) HANGUL SYLLABLE OLP
+C633;C633;110B 1169 11B6;C633;110B 1169 11B6; # (옳; 옳; 옳; 옳; 옳; ) HANGUL SYLLABLE OLH
+C634;C634;110B 1169 11B7;C634;110B 1169 11B7; # (옴; 옴; 옴; 옴; 옴; ) HANGUL SYLLABLE OM
+C635;C635;110B 1169 11B8;C635;110B 1169 11B8; # (옵; 옵; 옵; 옵; 옵; ) HANGUL SYLLABLE OB
+C636;C636;110B 1169 11B9;C636;110B 1169 11B9; # (옶; 옶; 옶; 옶; 옶; ) HANGUL SYLLABLE OBS
+C637;C637;110B 1169 11BA;C637;110B 1169 11BA; # (옷; 옷; 옷; 옷; 옷; ) HANGUL SYLLABLE OS
+C638;C638;110B 1169 11BB;C638;110B 1169 11BB; # (옸; 옸; 옸; 옸; 옸; ) HANGUL SYLLABLE OSS
+C639;C639;110B 1169 11BC;C639;110B 1169 11BC; # (옹; 옹; 옹; 옹; 옹; ) HANGUL SYLLABLE ONG
+C63A;C63A;110B 1169 11BD;C63A;110B 1169 11BD; # (옺; 옺; 옺; 옺; 옺; ) HANGUL SYLLABLE OJ
+C63B;C63B;110B 1169 11BE;C63B;110B 1169 11BE; # (옻; 옻; 옻; 옻; 옻; ) HANGUL SYLLABLE OC
+C63C;C63C;110B 1169 11BF;C63C;110B 1169 11BF; # (옼; 옼; 옼; 옼; 옼; ) HANGUL SYLLABLE OK
+C63D;C63D;110B 1169 11C0;C63D;110B 1169 11C0; # (옽; 옽; 옽; 옽; 옽; ) HANGUL SYLLABLE OT
+C63E;C63E;110B 1169 11C1;C63E;110B 1169 11C1; # (옾; 옾; á„‹á…©á‡; 옾; á„‹á…©á‡; ) HANGUL SYLLABLE OP
+C63F;C63F;110B 1169 11C2;C63F;110B 1169 11C2; # (옿; 옿; 옿; 옿; 옿; ) HANGUL SYLLABLE OH
+C640;C640;110B 116A;C640;110B 116A; # (와; 와; 와; 와; 와; ) HANGUL SYLLABLE WA
+C641;C641;110B 116A 11A8;C641;110B 116A 11A8; # (ì™; ì™; 왁; ì™; 왁; ) HANGUL SYLLABLE WAG
+C642;C642;110B 116A 11A9;C642;110B 116A 11A9; # (왂; 왂; 왂; 왂; 왂; ) HANGUL SYLLABLE WAGG
+C643;C643;110B 116A 11AA;C643;110B 116A 11AA; # (왃; 왃; 왃; 왃; 왃; ) HANGUL SYLLABLE WAGS
+C644;C644;110B 116A 11AB;C644;110B 116A 11AB; # (완; 완; 완; 완; 완; ) HANGUL SYLLABLE WAN
+C645;C645;110B 116A 11AC;C645;110B 116A 11AC; # (왅; 왅; 왅; 왅; 왅; ) HANGUL SYLLABLE WANJ
+C646;C646;110B 116A 11AD;C646;110B 116A 11AD; # (왆; 왆; 왆; 왆; 왆; ) HANGUL SYLLABLE WANH
+C647;C647;110B 116A 11AE;C647;110B 116A 11AE; # (왇; 왇; 왇; 왇; 왇; ) HANGUL SYLLABLE WAD
+C648;C648;110B 116A 11AF;C648;110B 116A 11AF; # (왈; 왈; 왈; 왈; 왈; ) HANGUL SYLLABLE WAL
+C649;C649;110B 116A 11B0;C649;110B 116A 11B0; # (왉; 왉; 왉; 왉; 왉; ) HANGUL SYLLABLE WALG
+C64A;C64A;110B 116A 11B1;C64A;110B 116A 11B1; # (왊; 왊; 왊; 왊; 왊; ) HANGUL SYLLABLE WALM
+C64B;C64B;110B 116A 11B2;C64B;110B 116A 11B2; # (왋; 왋; 왋; 왋; 왋; ) HANGUL SYLLABLE WALB
+C64C;C64C;110B 116A 11B3;C64C;110B 116A 11B3; # (왌; 왌; 왌; 왌; 왌; ) HANGUL SYLLABLE WALS
+C64D;C64D;110B 116A 11B4;C64D;110B 116A 11B4; # (ì™; ì™; 왍; ì™; 왍; ) HANGUL SYLLABLE WALT
+C64E;C64E;110B 116A 11B5;C64E;110B 116A 11B5; # (왎; 왎; 왎; 왎; 왎; ) HANGUL SYLLABLE WALP
+C64F;C64F;110B 116A 11B6;C64F;110B 116A 11B6; # (ì™; ì™; 왏; ì™; 왏; ) HANGUL SYLLABLE WALH
+C650;C650;110B 116A 11B7;C650;110B 116A 11B7; # (ì™; ì™; 왐; ì™; 왐; ) HANGUL SYLLABLE WAM
+C651;C651;110B 116A 11B8;C651;110B 116A 11B8; # (왑; 왑; 왑; 왑; 왑; ) HANGUL SYLLABLE WAB
+C652;C652;110B 116A 11B9;C652;110B 116A 11B9; # (왒; 왒; 왒; 왒; 왒; ) HANGUL SYLLABLE WABS
+C653;C653;110B 116A 11BA;C653;110B 116A 11BA; # (왓; 왓; 왓; 왓; 왓; ) HANGUL SYLLABLE WAS
+C654;C654;110B 116A 11BB;C654;110B 116A 11BB; # (왔; 왔; 왔; 왔; 왔; ) HANGUL SYLLABLE WASS
+C655;C655;110B 116A 11BC;C655;110B 116A 11BC; # (왕; 왕; 왕; 왕; 왕; ) HANGUL SYLLABLE WANG
+C656;C656;110B 116A 11BD;C656;110B 116A 11BD; # (왖; 왖; 왖; 왖; 왖; ) HANGUL SYLLABLE WAJ
+C657;C657;110B 116A 11BE;C657;110B 116A 11BE; # (왗; 왗; 왗; 왗; 왗; ) HANGUL SYLLABLE WAC
+C658;C658;110B 116A 11BF;C658;110B 116A 11BF; # (왘; 왘; 왘; 왘; 왘; ) HANGUL SYLLABLE WAK
+C659;C659;110B 116A 11C0;C659;110B 116A 11C0; # (왙; 왙; 왙; 왙; 왙; ) HANGUL SYLLABLE WAT
+C65A;C65A;110B 116A 11C1;C65A;110B 116A 11C1; # (왚; 왚; á„‹á…ªá‡; 왚; á„‹á…ªá‡; ) HANGUL SYLLABLE WAP
+C65B;C65B;110B 116A 11C2;C65B;110B 116A 11C2; # (왛; 왛; 왛; 왛; 왛; ) HANGUL SYLLABLE WAH
+C65C;C65C;110B 116B;C65C;110B 116B; # (왜; 왜; 왜; 왜; 왜; ) HANGUL SYLLABLE WAE
+C65D;C65D;110B 116B 11A8;C65D;110B 116B 11A8; # (ì™; ì™; 왝; ì™; 왝; ) HANGUL SYLLABLE WAEG
+C65E;C65E;110B 116B 11A9;C65E;110B 116B 11A9; # (왞; 왞; 왞; 왞; 왞; ) HANGUL SYLLABLE WAEGG
+C65F;C65F;110B 116B 11AA;C65F;110B 116B 11AA; # (왟; 왟; 왟; 왟; 왟; ) HANGUL SYLLABLE WAEGS
+C660;C660;110B 116B 11AB;C660;110B 116B 11AB; # (왠; 왠; 왠; 왠; 왠; ) HANGUL SYLLABLE WAEN
+C661;C661;110B 116B 11AC;C661;110B 116B 11AC; # (왡; 왡; 왡; 왡; 왡; ) HANGUL SYLLABLE WAENJ
+C662;C662;110B 116B 11AD;C662;110B 116B 11AD; # (왢; 왢; 왢; 왢; 왢; ) HANGUL SYLLABLE WAENH
+C663;C663;110B 116B 11AE;C663;110B 116B 11AE; # (왣; 왣; 왣; 왣; 왣; ) HANGUL SYLLABLE WAED
+C664;C664;110B 116B 11AF;C664;110B 116B 11AF; # (왤; 왤; 왤; 왤; 왤; ) HANGUL SYLLABLE WAEL
+C665;C665;110B 116B 11B0;C665;110B 116B 11B0; # (왥; 왥; 왥; 왥; 왥; ) HANGUL SYLLABLE WAELG
+C666;C666;110B 116B 11B1;C666;110B 116B 11B1; # (왦; 왦; 왦; 왦; 왦; ) HANGUL SYLLABLE WAELM
+C667;C667;110B 116B 11B2;C667;110B 116B 11B2; # (왧; 왧; 왧; 왧; 왧; ) HANGUL SYLLABLE WAELB
+C668;C668;110B 116B 11B3;C668;110B 116B 11B3; # (왨; 왨; 왨; 왨; 왨; ) HANGUL SYLLABLE WAELS
+C669;C669;110B 116B 11B4;C669;110B 116B 11B4; # (왩; 왩; 왩; 왩; 왩; ) HANGUL SYLLABLE WAELT
+C66A;C66A;110B 116B 11B5;C66A;110B 116B 11B5; # (왪; 왪; 왪; 왪; 왪; ) HANGUL SYLLABLE WAELP
+C66B;C66B;110B 116B 11B6;C66B;110B 116B 11B6; # (왫; 왫; 왫; 왫; 왫; ) HANGUL SYLLABLE WAELH
+C66C;C66C;110B 116B 11B7;C66C;110B 116B 11B7; # (왬; 왬; 왬; 왬; 왬; ) HANGUL SYLLABLE WAEM
+C66D;C66D;110B 116B 11B8;C66D;110B 116B 11B8; # (왭; 왭; 왭; 왭; 왭; ) HANGUL SYLLABLE WAEB
+C66E;C66E;110B 116B 11B9;C66E;110B 116B 11B9; # (왮; 왮; 왮; 왮; 왮; ) HANGUL SYLLABLE WAEBS
+C66F;C66F;110B 116B 11BA;C66F;110B 116B 11BA; # (왯; 왯; 왯; 왯; 왯; ) HANGUL SYLLABLE WAES
+C670;C670;110B 116B 11BB;C670;110B 116B 11BB; # (왰; 왰; 왰; 왰; 왰; ) HANGUL SYLLABLE WAESS
+C671;C671;110B 116B 11BC;C671;110B 116B 11BC; # (왱; 왱; 왱; 왱; 왱; ) HANGUL SYLLABLE WAENG
+C672;C672;110B 116B 11BD;C672;110B 116B 11BD; # (왲; 왲; 왲; 왲; 왲; ) HANGUL SYLLABLE WAEJ
+C673;C673;110B 116B 11BE;C673;110B 116B 11BE; # (왳; 왳; 왳; 왳; 왳; ) HANGUL SYLLABLE WAEC
+C674;C674;110B 116B 11BF;C674;110B 116B 11BF; # (왴; 왴; 왴; 왴; 왴; ) HANGUL SYLLABLE WAEK
+C675;C675;110B 116B 11C0;C675;110B 116B 11C0; # (왵; 왵; 왵; 왵; 왵; ) HANGUL SYLLABLE WAET
+C676;C676;110B 116B 11C1;C676;110B 116B 11C1; # (왶; 왶; á„‹á…«á‡; 왶; á„‹á…«á‡; ) HANGUL SYLLABLE WAEP
+C677;C677;110B 116B 11C2;C677;110B 116B 11C2; # (왷; 왷; 왷; 왷; 왷; ) HANGUL SYLLABLE WAEH
+C678;C678;110B 116C;C678;110B 116C; # (외; 외; 외; 외; 외; ) HANGUL SYLLABLE OE
+C679;C679;110B 116C 11A8;C679;110B 116C 11A8; # (왹; 왹; 왹; 왹; 왹; ) HANGUL SYLLABLE OEG
+C67A;C67A;110B 116C 11A9;C67A;110B 116C 11A9; # (왺; 왺; 왺; 왺; 왺; ) HANGUL SYLLABLE OEGG
+C67B;C67B;110B 116C 11AA;C67B;110B 116C 11AA; # (왻; 왻; 왻; 왻; 왻; ) HANGUL SYLLABLE OEGS
+C67C;C67C;110B 116C 11AB;C67C;110B 116C 11AB; # (왼; 왼; 왼; 왼; 왼; ) HANGUL SYLLABLE OEN
+C67D;C67D;110B 116C 11AC;C67D;110B 116C 11AC; # (왽; 왽; 왽; 왽; 왽; ) HANGUL SYLLABLE OENJ
+C67E;C67E;110B 116C 11AD;C67E;110B 116C 11AD; # (왾; 왾; 왾; 왾; 왾; ) HANGUL SYLLABLE OENH
+C67F;C67F;110B 116C 11AE;C67F;110B 116C 11AE; # (왿; 왿; 왿; 왿; 왿; ) HANGUL SYLLABLE OED
+C680;C680;110B 116C 11AF;C680;110B 116C 11AF; # (욀; 욀; 욀; 욀; 욀; ) HANGUL SYLLABLE OEL
+C681;C681;110B 116C 11B0;C681;110B 116C 11B0; # (ìš; ìš; 욁; ìš; 욁; ) HANGUL SYLLABLE OELG
+C682;C682;110B 116C 11B1;C682;110B 116C 11B1; # (욂; 욂; 욂; 욂; 욂; ) HANGUL SYLLABLE OELM
+C683;C683;110B 116C 11B2;C683;110B 116C 11B2; # (욃; 욃; 욃; 욃; 욃; ) HANGUL SYLLABLE OELB
+C684;C684;110B 116C 11B3;C684;110B 116C 11B3; # (욄; 욄; 욄; 욄; 욄; ) HANGUL SYLLABLE OELS
+C685;C685;110B 116C 11B4;C685;110B 116C 11B4; # (욅; 욅; 욅; 욅; 욅; ) HANGUL SYLLABLE OELT
+C686;C686;110B 116C 11B5;C686;110B 116C 11B5; # (욆; 욆; 욆; 욆; 욆; ) HANGUL SYLLABLE OELP
+C687;C687;110B 116C 11B6;C687;110B 116C 11B6; # (욇; 욇; 욇; 욇; 욇; ) HANGUL SYLLABLE OELH
+C688;C688;110B 116C 11B7;C688;110B 116C 11B7; # (욈; 욈; 욈; 욈; 욈; ) HANGUL SYLLABLE OEM
+C689;C689;110B 116C 11B8;C689;110B 116C 11B8; # (욉; 욉; 욉; 욉; 욉; ) HANGUL SYLLABLE OEB
+C68A;C68A;110B 116C 11B9;C68A;110B 116C 11B9; # (욊; 욊; 욊; 욊; 욊; ) HANGUL SYLLABLE OEBS
+C68B;C68B;110B 116C 11BA;C68B;110B 116C 11BA; # (욋; 욋; 욋; 욋; 욋; ) HANGUL SYLLABLE OES
+C68C;C68C;110B 116C 11BB;C68C;110B 116C 11BB; # (욌; 욌; 욌; 욌; 욌; ) HANGUL SYLLABLE OESS
+C68D;C68D;110B 116C 11BC;C68D;110B 116C 11BC; # (ìš; ìš; 욍; ìš; 욍; ) HANGUL SYLLABLE OENG
+C68E;C68E;110B 116C 11BD;C68E;110B 116C 11BD; # (욎; 욎; 욎; 욎; 욎; ) HANGUL SYLLABLE OEJ
+C68F;C68F;110B 116C 11BE;C68F;110B 116C 11BE; # (ìš; ìš; 욏; ìš; 욏; ) HANGUL SYLLABLE OEC
+C690;C690;110B 116C 11BF;C690;110B 116C 11BF; # (ìš; ìš; 욐; ìš; 욐; ) HANGUL SYLLABLE OEK
+C691;C691;110B 116C 11C0;C691;110B 116C 11C0; # (욑; 욑; 욑; 욑; 욑; ) HANGUL SYLLABLE OET
+C692;C692;110B 116C 11C1;C692;110B 116C 11C1; # (ìš’; ìš’; á„‹á…¬á‡; ìš’; á„‹á…¬á‡; ) HANGUL SYLLABLE OEP
+C693;C693;110B 116C 11C2;C693;110B 116C 11C2; # (욓; 욓; 욓; 욓; 욓; ) HANGUL SYLLABLE OEH
+C694;C694;110B 116D;C694;110B 116D; # (ìš”; ìš”; á„‹á…­; ìš”; á„‹á…­; ) HANGUL SYLLABLE YO
+C695;C695;110B 116D 11A8;C695;110B 116D 11A8; # (욕; 욕; 욕; 욕; 욕; ) HANGUL SYLLABLE YOG
+C696;C696;110B 116D 11A9;C696;110B 116D 11A9; # (욖; 욖; 욖; 욖; 욖; ) HANGUL SYLLABLE YOGG
+C697;C697;110B 116D 11AA;C697;110B 116D 11AA; # (욗; 욗; 욗; 욗; 욗; ) HANGUL SYLLABLE YOGS
+C698;C698;110B 116D 11AB;C698;110B 116D 11AB; # (욘; 욘; 욘; 욘; 욘; ) HANGUL SYLLABLE YON
+C699;C699;110B 116D 11AC;C699;110B 116D 11AC; # (욙; 욙; 욙; 욙; 욙; ) HANGUL SYLLABLE YONJ
+C69A;C69A;110B 116D 11AD;C69A;110B 116D 11AD; # (욚; 욚; 욚; 욚; 욚; ) HANGUL SYLLABLE YONH
+C69B;C69B;110B 116D 11AE;C69B;110B 116D 11AE; # (욛; 욛; 욛; 욛; 욛; ) HANGUL SYLLABLE YOD
+C69C;C69C;110B 116D 11AF;C69C;110B 116D 11AF; # (욜; 욜; 욜; 욜; 욜; ) HANGUL SYLLABLE YOL
+C69D;C69D;110B 116D 11B0;C69D;110B 116D 11B0; # (ìš; ìš; 욝; ìš; 욝; ) HANGUL SYLLABLE YOLG
+C69E;C69E;110B 116D 11B1;C69E;110B 116D 11B1; # (욞; 욞; 욞; 욞; 욞; ) HANGUL SYLLABLE YOLM
+C69F;C69F;110B 116D 11B2;C69F;110B 116D 11B2; # (욟; 욟; 욟; 욟; 욟; ) HANGUL SYLLABLE YOLB
+C6A0;C6A0;110B 116D 11B3;C6A0;110B 116D 11B3; # (욠; 욠; 욠; 욠; 욠; ) HANGUL SYLLABLE YOLS
+C6A1;C6A1;110B 116D 11B4;C6A1;110B 116D 11B4; # (욡; 욡; 욡; 욡; 욡; ) HANGUL SYLLABLE YOLT
+C6A2;C6A2;110B 116D 11B5;C6A2;110B 116D 11B5; # (욢; 욢; 욢; 욢; 욢; ) HANGUL SYLLABLE YOLP
+C6A3;C6A3;110B 116D 11B6;C6A3;110B 116D 11B6; # (욣; 욣; 욣; 욣; 욣; ) HANGUL SYLLABLE YOLH
+C6A4;C6A4;110B 116D 11B7;C6A4;110B 116D 11B7; # (욤; 욤; 욤; 욤; 욤; ) HANGUL SYLLABLE YOM
+C6A5;C6A5;110B 116D 11B8;C6A5;110B 116D 11B8; # (욥; 욥; 욥; 욥; 욥; ) HANGUL SYLLABLE YOB
+C6A6;C6A6;110B 116D 11B9;C6A6;110B 116D 11B9; # (욦; 욦; 욦; 욦; 욦; ) HANGUL SYLLABLE YOBS
+C6A7;C6A7;110B 116D 11BA;C6A7;110B 116D 11BA; # (욧; 욧; 욧; 욧; 욧; ) HANGUL SYLLABLE YOS
+C6A8;C6A8;110B 116D 11BB;C6A8;110B 116D 11BB; # (욨; 욨; 욨; 욨; 욨; ) HANGUL SYLLABLE YOSS
+C6A9;C6A9;110B 116D 11BC;C6A9;110B 116D 11BC; # (용; 용; 용; 용; 용; ) HANGUL SYLLABLE YONG
+C6AA;C6AA;110B 116D 11BD;C6AA;110B 116D 11BD; # (욪; 욪; 욪; 욪; 욪; ) HANGUL SYLLABLE YOJ
+C6AB;C6AB;110B 116D 11BE;C6AB;110B 116D 11BE; # (욫; 욫; 욫; 욫; 욫; ) HANGUL SYLLABLE YOC
+C6AC;C6AC;110B 116D 11BF;C6AC;110B 116D 11BF; # (욬; 욬; 욬; 욬; 욬; ) HANGUL SYLLABLE YOK
+C6AD;C6AD;110B 116D 11C0;C6AD;110B 116D 11C0; # (욭; 욭; 욭; 욭; 욭; ) HANGUL SYLLABLE YOT
+C6AE;C6AE;110B 116D 11C1;C6AE;110B 116D 11C1; # (ìš®; ìš®; á„‹á…­á‡; ìš®; á„‹á…­á‡; ) HANGUL SYLLABLE YOP
+C6AF;C6AF;110B 116D 11C2;C6AF;110B 116D 11C2; # (욯; 욯; 욯; 욯; 욯; ) HANGUL SYLLABLE YOH
+C6B0;C6B0;110B 116E;C6B0;110B 116E; # (ìš°; ìš°; á„‹á…®; ìš°; á„‹á…®; ) HANGUL SYLLABLE U
+C6B1;C6B1;110B 116E 11A8;C6B1;110B 116E 11A8; # (욱; 욱; 욱; 욱; 욱; ) HANGUL SYLLABLE UG
+C6B2;C6B2;110B 116E 11A9;C6B2;110B 116E 11A9; # (욲; 욲; 욲; 욲; 욲; ) HANGUL SYLLABLE UGG
+C6B3;C6B3;110B 116E 11AA;C6B3;110B 116E 11AA; # (욳; 욳; 욳; 욳; 욳; ) HANGUL SYLLABLE UGS
+C6B4;C6B4;110B 116E 11AB;C6B4;110B 116E 11AB; # (운; 운; 운; 운; 운; ) HANGUL SYLLABLE UN
+C6B5;C6B5;110B 116E 11AC;C6B5;110B 116E 11AC; # (욵; 욵; 욵; 욵; 욵; ) HANGUL SYLLABLE UNJ
+C6B6;C6B6;110B 116E 11AD;C6B6;110B 116E 11AD; # (욶; 욶; 욶; 욶; 욶; ) HANGUL SYLLABLE UNH
+C6B7;C6B7;110B 116E 11AE;C6B7;110B 116E 11AE; # (욷; 욷; 욷; 욷; 욷; ) HANGUL SYLLABLE UD
+C6B8;C6B8;110B 116E 11AF;C6B8;110B 116E 11AF; # (울; 울; 울; 울; 울; ) HANGUL SYLLABLE UL
+C6B9;C6B9;110B 116E 11B0;C6B9;110B 116E 11B0; # (욹; 욹; 욹; 욹; 욹; ) HANGUL SYLLABLE ULG
+C6BA;C6BA;110B 116E 11B1;C6BA;110B 116E 11B1; # (욺; 욺; 욺; 욺; 욺; ) HANGUL SYLLABLE ULM
+C6BB;C6BB;110B 116E 11B2;C6BB;110B 116E 11B2; # (욻; 욻; 욻; 욻; 욻; ) HANGUL SYLLABLE ULB
+C6BC;C6BC;110B 116E 11B3;C6BC;110B 116E 11B3; # (욼; 욼; 욼; 욼; 욼; ) HANGUL SYLLABLE ULS
+C6BD;C6BD;110B 116E 11B4;C6BD;110B 116E 11B4; # (욽; 욽; 욽; 욽; 욽; ) HANGUL SYLLABLE ULT
+C6BE;C6BE;110B 116E 11B5;C6BE;110B 116E 11B5; # (욾; 욾; 욾; 욾; 욾; ) HANGUL SYLLABLE ULP
+C6BF;C6BF;110B 116E 11B6;C6BF;110B 116E 11B6; # (욿; 욿; 욿; 욿; 욿; ) HANGUL SYLLABLE ULH
+C6C0;C6C0;110B 116E 11B7;C6C0;110B 116E 11B7; # (움; 움; 움; 움; 움; ) HANGUL SYLLABLE UM
+C6C1;C6C1;110B 116E 11B8;C6C1;110B 116E 11B8; # (ì›; ì›; 웁; ì›; 웁; ) HANGUL SYLLABLE UB
+C6C2;C6C2;110B 116E 11B9;C6C2;110B 116E 11B9; # (웂; 웂; 웂; 웂; 웂; ) HANGUL SYLLABLE UBS
+C6C3;C6C3;110B 116E 11BA;C6C3;110B 116E 11BA; # (웃; 웃; 웃; 웃; 웃; ) HANGUL SYLLABLE US
+C6C4;C6C4;110B 116E 11BB;C6C4;110B 116E 11BB; # (웄; 웄; 웄; 웄; 웄; ) HANGUL SYLLABLE USS
+C6C5;C6C5;110B 116E 11BC;C6C5;110B 116E 11BC; # (웅; 웅; 웅; 웅; 웅; ) HANGUL SYLLABLE UNG
+C6C6;C6C6;110B 116E 11BD;C6C6;110B 116E 11BD; # (웆; 웆; 웆; 웆; 웆; ) HANGUL SYLLABLE UJ
+C6C7;C6C7;110B 116E 11BE;C6C7;110B 116E 11BE; # (웇; 웇; 웇; 웇; 웇; ) HANGUL SYLLABLE UC
+C6C8;C6C8;110B 116E 11BF;C6C8;110B 116E 11BF; # (웈; 웈; 웈; 웈; 웈; ) HANGUL SYLLABLE UK
+C6C9;C6C9;110B 116E 11C0;C6C9;110B 116E 11C0; # (웉; 웉; 웉; 웉; 웉; ) HANGUL SYLLABLE UT
+C6CA;C6CA;110B 116E 11C1;C6CA;110B 116E 11C1; # (웊; 웊; á„‹á…®á‡; 웊; á„‹á…®á‡; ) HANGUL SYLLABLE UP
+C6CB;C6CB;110B 116E 11C2;C6CB;110B 116E 11C2; # (웋; 웋; 웋; 웋; 웋; ) HANGUL SYLLABLE UH
+C6CC;C6CC;110B 116F;C6CC;110B 116F; # (워; 워; 워; 워; 워; ) HANGUL SYLLABLE WEO
+C6CD;C6CD;110B 116F 11A8;C6CD;110B 116F 11A8; # (ì›; ì›; 웍; ì›; 웍; ) HANGUL SYLLABLE WEOG
+C6CE;C6CE;110B 116F 11A9;C6CE;110B 116F 11A9; # (웎; 웎; 웎; 웎; 웎; ) HANGUL SYLLABLE WEOGG
+C6CF;C6CF;110B 116F 11AA;C6CF;110B 116F 11AA; # (ì›; ì›; 웏; ì›; 웏; ) HANGUL SYLLABLE WEOGS
+C6D0;C6D0;110B 116F 11AB;C6D0;110B 116F 11AB; # (ì›; ì›; 원; ì›; 원; ) HANGUL SYLLABLE WEON
+C6D1;C6D1;110B 116F 11AC;C6D1;110B 116F 11AC; # (웑; 웑; 웑; 웑; 웑; ) HANGUL SYLLABLE WEONJ
+C6D2;C6D2;110B 116F 11AD;C6D2;110B 116F 11AD; # (웒; 웒; 웒; 웒; 웒; ) HANGUL SYLLABLE WEONH
+C6D3;C6D3;110B 116F 11AE;C6D3;110B 116F 11AE; # (웓; 웓; 웓; 웓; 웓; ) HANGUL SYLLABLE WEOD
+C6D4;C6D4;110B 116F 11AF;C6D4;110B 116F 11AF; # (월; 월; 월; 월; 월; ) HANGUL SYLLABLE WEOL
+C6D5;C6D5;110B 116F 11B0;C6D5;110B 116F 11B0; # (웕; 웕; 웕; 웕; 웕; ) HANGUL SYLLABLE WEOLG
+C6D6;C6D6;110B 116F 11B1;C6D6;110B 116F 11B1; # (웖; 웖; 웖; 웖; 웖; ) HANGUL SYLLABLE WEOLM
+C6D7;C6D7;110B 116F 11B2;C6D7;110B 116F 11B2; # (웗; 웗; 웗; 웗; 웗; ) HANGUL SYLLABLE WEOLB
+C6D8;C6D8;110B 116F 11B3;C6D8;110B 116F 11B3; # (웘; 웘; 웘; 웘; 웘; ) HANGUL SYLLABLE WEOLS
+C6D9;C6D9;110B 116F 11B4;C6D9;110B 116F 11B4; # (웙; 웙; 웙; 웙; 웙; ) HANGUL SYLLABLE WEOLT
+C6DA;C6DA;110B 116F 11B5;C6DA;110B 116F 11B5; # (웚; 웚; 웚; 웚; 웚; ) HANGUL SYLLABLE WEOLP
+C6DB;C6DB;110B 116F 11B6;C6DB;110B 116F 11B6; # (웛; 웛; 웛; 웛; 웛; ) HANGUL SYLLABLE WEOLH
+C6DC;C6DC;110B 116F 11B7;C6DC;110B 116F 11B7; # (웜; 웜; 웜; 웜; 웜; ) HANGUL SYLLABLE WEOM
+C6DD;C6DD;110B 116F 11B8;C6DD;110B 116F 11B8; # (ì›; ì›; 웝; ì›; 웝; ) HANGUL SYLLABLE WEOB
+C6DE;C6DE;110B 116F 11B9;C6DE;110B 116F 11B9; # (웞; 웞; 웞; 웞; 웞; ) HANGUL SYLLABLE WEOBS
+C6DF;C6DF;110B 116F 11BA;C6DF;110B 116F 11BA; # (웟; 웟; 웟; 웟; 웟; ) HANGUL SYLLABLE WEOS
+C6E0;C6E0;110B 116F 11BB;C6E0;110B 116F 11BB; # (웠; 웠; 웠; 웠; 웠; ) HANGUL SYLLABLE WEOSS
+C6E1;C6E1;110B 116F 11BC;C6E1;110B 116F 11BC; # (웡; 웡; 웡; 웡; 웡; ) HANGUL SYLLABLE WEONG
+C6E2;C6E2;110B 116F 11BD;C6E2;110B 116F 11BD; # (웢; 웢; 웢; 웢; 웢; ) HANGUL SYLLABLE WEOJ
+C6E3;C6E3;110B 116F 11BE;C6E3;110B 116F 11BE; # (웣; 웣; 웣; 웣; 웣; ) HANGUL SYLLABLE WEOC
+C6E4;C6E4;110B 116F 11BF;C6E4;110B 116F 11BF; # (웤; 웤; 웤; 웤; 웤; ) HANGUL SYLLABLE WEOK
+C6E5;C6E5;110B 116F 11C0;C6E5;110B 116F 11C0; # (웥; 웥; 웥; 웥; 웥; ) HANGUL SYLLABLE WEOT
+C6E6;C6E6;110B 116F 11C1;C6E6;110B 116F 11C1; # (웦; 웦; á„‹á…¯á‡; 웦; á„‹á…¯á‡; ) HANGUL SYLLABLE WEOP
+C6E7;C6E7;110B 116F 11C2;C6E7;110B 116F 11C2; # (웧; 웧; 웧; 웧; 웧; ) HANGUL SYLLABLE WEOH
+C6E8;C6E8;110B 1170;C6E8;110B 1170; # (웨; 웨; 웨; 웨; 웨; ) HANGUL SYLLABLE WE
+C6E9;C6E9;110B 1170 11A8;C6E9;110B 1170 11A8; # (웩; 웩; 웩; 웩; 웩; ) HANGUL SYLLABLE WEG
+C6EA;C6EA;110B 1170 11A9;C6EA;110B 1170 11A9; # (웪; 웪; 웪; 웪; 웪; ) HANGUL SYLLABLE WEGG
+C6EB;C6EB;110B 1170 11AA;C6EB;110B 1170 11AA; # (웫; 웫; 웫; 웫; 웫; ) HANGUL SYLLABLE WEGS
+C6EC;C6EC;110B 1170 11AB;C6EC;110B 1170 11AB; # (웬; 웬; 웬; 웬; 웬; ) HANGUL SYLLABLE WEN
+C6ED;C6ED;110B 1170 11AC;C6ED;110B 1170 11AC; # (웭; 웭; 웭; 웭; 웭; ) HANGUL SYLLABLE WENJ
+C6EE;C6EE;110B 1170 11AD;C6EE;110B 1170 11AD; # (웮; 웮; 웮; 웮; 웮; ) HANGUL SYLLABLE WENH
+C6EF;C6EF;110B 1170 11AE;C6EF;110B 1170 11AE; # (웯; 웯; 웯; 웯; 웯; ) HANGUL SYLLABLE WED
+C6F0;C6F0;110B 1170 11AF;C6F0;110B 1170 11AF; # (웰; 웰; 웰; 웰; 웰; ) HANGUL SYLLABLE WEL
+C6F1;C6F1;110B 1170 11B0;C6F1;110B 1170 11B0; # (웱; 웱; 웱; 웱; 웱; ) HANGUL SYLLABLE WELG
+C6F2;C6F2;110B 1170 11B1;C6F2;110B 1170 11B1; # (웲; 웲; 웲; 웲; 웲; ) HANGUL SYLLABLE WELM
+C6F3;C6F3;110B 1170 11B2;C6F3;110B 1170 11B2; # (웳; 웳; 웳; 웳; 웳; ) HANGUL SYLLABLE WELB
+C6F4;C6F4;110B 1170 11B3;C6F4;110B 1170 11B3; # (웴; 웴; 웴; 웴; 웴; ) HANGUL SYLLABLE WELS
+C6F5;C6F5;110B 1170 11B4;C6F5;110B 1170 11B4; # (웵; 웵; 웵; 웵; 웵; ) HANGUL SYLLABLE WELT
+C6F6;C6F6;110B 1170 11B5;C6F6;110B 1170 11B5; # (웶; 웶; 웶; 웶; 웶; ) HANGUL SYLLABLE WELP
+C6F7;C6F7;110B 1170 11B6;C6F7;110B 1170 11B6; # (웷; 웷; 웷; 웷; 웷; ) HANGUL SYLLABLE WELH
+C6F8;C6F8;110B 1170 11B7;C6F8;110B 1170 11B7; # (웸; 웸; 웸; 웸; 웸; ) HANGUL SYLLABLE WEM
+C6F9;C6F9;110B 1170 11B8;C6F9;110B 1170 11B8; # (웹; 웹; 웹; 웹; 웹; ) HANGUL SYLLABLE WEB
+C6FA;C6FA;110B 1170 11B9;C6FA;110B 1170 11B9; # (웺; 웺; 웺; 웺; 웺; ) HANGUL SYLLABLE WEBS
+C6FB;C6FB;110B 1170 11BA;C6FB;110B 1170 11BA; # (웻; 웻; 웻; 웻; 웻; ) HANGUL SYLLABLE WES
+C6FC;C6FC;110B 1170 11BB;C6FC;110B 1170 11BB; # (웼; 웼; 웼; 웼; 웼; ) HANGUL SYLLABLE WESS
+C6FD;C6FD;110B 1170 11BC;C6FD;110B 1170 11BC; # (웽; 웽; 웽; 웽; 웽; ) HANGUL SYLLABLE WENG
+C6FE;C6FE;110B 1170 11BD;C6FE;110B 1170 11BD; # (웾; 웾; 웾; 웾; 웾; ) HANGUL SYLLABLE WEJ
+C6FF;C6FF;110B 1170 11BE;C6FF;110B 1170 11BE; # (웿; 웿; 웿; 웿; 웿; ) HANGUL SYLLABLE WEC
+C700;C700;110B 1170 11BF;C700;110B 1170 11BF; # (윀; 윀; 윀; 윀; 윀; ) HANGUL SYLLABLE WEK
+C701;C701;110B 1170 11C0;C701;110B 1170 11C0; # (ìœ; ìœ; 윁; ìœ; 윁; ) HANGUL SYLLABLE WET
+C702;C702;110B 1170 11C1;C702;110B 1170 11C1; # (윂; 윂; á„‹á…°á‡; 윂; á„‹á…°á‡; ) HANGUL SYLLABLE WEP
+C703;C703;110B 1170 11C2;C703;110B 1170 11C2; # (윃; 윃; 윃; 윃; 윃; ) HANGUL SYLLABLE WEH
+C704;C704;110B 1171;C704;110B 1171; # (위; 위; 위; 위; 위; ) HANGUL SYLLABLE WI
+C705;C705;110B 1171 11A8;C705;110B 1171 11A8; # (윅; 윅; 윅; 윅; 윅; ) HANGUL SYLLABLE WIG
+C706;C706;110B 1171 11A9;C706;110B 1171 11A9; # (윆; 윆; 윆; 윆; 윆; ) HANGUL SYLLABLE WIGG
+C707;C707;110B 1171 11AA;C707;110B 1171 11AA; # (윇; 윇; 윇; 윇; 윇; ) HANGUL SYLLABLE WIGS
+C708;C708;110B 1171 11AB;C708;110B 1171 11AB; # (윈; 윈; 윈; 윈; 윈; ) HANGUL SYLLABLE WIN
+C709;C709;110B 1171 11AC;C709;110B 1171 11AC; # (윉; 윉; 윉; 윉; 윉; ) HANGUL SYLLABLE WINJ
+C70A;C70A;110B 1171 11AD;C70A;110B 1171 11AD; # (윊; 윊; 윊; 윊; 윊; ) HANGUL SYLLABLE WINH
+C70B;C70B;110B 1171 11AE;C70B;110B 1171 11AE; # (윋; 윋; 윋; 윋; 윋; ) HANGUL SYLLABLE WID
+C70C;C70C;110B 1171 11AF;C70C;110B 1171 11AF; # (윌; 윌; 윌; 윌; 윌; ) HANGUL SYLLABLE WIL
+C70D;C70D;110B 1171 11B0;C70D;110B 1171 11B0; # (ìœ; ìœ; 윍; ìœ; 윍; ) HANGUL SYLLABLE WILG
+C70E;C70E;110B 1171 11B1;C70E;110B 1171 11B1; # (윎; 윎; 윎; 윎; 윎; ) HANGUL SYLLABLE WILM
+C70F;C70F;110B 1171 11B2;C70F;110B 1171 11B2; # (ìœ; ìœ; 윏; ìœ; 윏; ) HANGUL SYLLABLE WILB
+C710;C710;110B 1171 11B3;C710;110B 1171 11B3; # (ìœ; ìœ; 윐; ìœ; 윐; ) HANGUL SYLLABLE WILS
+C711;C711;110B 1171 11B4;C711;110B 1171 11B4; # (윑; 윑; 윑; 윑; 윑; ) HANGUL SYLLABLE WILT
+C712;C712;110B 1171 11B5;C712;110B 1171 11B5; # (윒; 윒; 윒; 윒; 윒; ) HANGUL SYLLABLE WILP
+C713;C713;110B 1171 11B6;C713;110B 1171 11B6; # (윓; 윓; 윓; 윓; 윓; ) HANGUL SYLLABLE WILH
+C714;C714;110B 1171 11B7;C714;110B 1171 11B7; # (윔; 윔; 윔; 윔; 윔; ) HANGUL SYLLABLE WIM
+C715;C715;110B 1171 11B8;C715;110B 1171 11B8; # (윕; 윕; 윕; 윕; 윕; ) HANGUL SYLLABLE WIB
+C716;C716;110B 1171 11B9;C716;110B 1171 11B9; # (윖; 윖; 윖; 윖; 윖; ) HANGUL SYLLABLE WIBS
+C717;C717;110B 1171 11BA;C717;110B 1171 11BA; # (윗; 윗; 윗; 윗; 윗; ) HANGUL SYLLABLE WIS
+C718;C718;110B 1171 11BB;C718;110B 1171 11BB; # (윘; 윘; 윘; 윘; 윘; ) HANGUL SYLLABLE WISS
+C719;C719;110B 1171 11BC;C719;110B 1171 11BC; # (윙; 윙; 윙; 윙; 윙; ) HANGUL SYLLABLE WING
+C71A;C71A;110B 1171 11BD;C71A;110B 1171 11BD; # (윚; 윚; 윚; 윚; 윚; ) HANGUL SYLLABLE WIJ
+C71B;C71B;110B 1171 11BE;C71B;110B 1171 11BE; # (윛; 윛; 윛; 윛; 윛; ) HANGUL SYLLABLE WIC
+C71C;C71C;110B 1171 11BF;C71C;110B 1171 11BF; # (윜; 윜; 윜; 윜; 윜; ) HANGUL SYLLABLE WIK
+C71D;C71D;110B 1171 11C0;C71D;110B 1171 11C0; # (ìœ; ìœ; 윝; ìœ; 윝; ) HANGUL SYLLABLE WIT
+C71E;C71E;110B 1171 11C1;C71E;110B 1171 11C1; # (윞; 윞; á„‹á…±á‡; 윞; á„‹á…±á‡; ) HANGUL SYLLABLE WIP
+C71F;C71F;110B 1171 11C2;C71F;110B 1171 11C2; # (윟; 윟; 윟; 윟; 윟; ) HANGUL SYLLABLE WIH
+C720;C720;110B 1172;C720;110B 1172; # (유; 유; 유; 유; 유; ) HANGUL SYLLABLE YU
+C721;C721;110B 1172 11A8;C721;110B 1172 11A8; # (육; 육; 육; 육; 육; ) HANGUL SYLLABLE YUG
+C722;C722;110B 1172 11A9;C722;110B 1172 11A9; # (윢; 윢; 윢; 윢; 윢; ) HANGUL SYLLABLE YUGG
+C723;C723;110B 1172 11AA;C723;110B 1172 11AA; # (윣; 윣; 윣; 윣; 윣; ) HANGUL SYLLABLE YUGS
+C724;C724;110B 1172 11AB;C724;110B 1172 11AB; # (윤; 윤; 윤; 윤; 윤; ) HANGUL SYLLABLE YUN
+C725;C725;110B 1172 11AC;C725;110B 1172 11AC; # (윥; 윥; 윥; 윥; 윥; ) HANGUL SYLLABLE YUNJ
+C726;C726;110B 1172 11AD;C726;110B 1172 11AD; # (윦; 윦; 윦; 윦; 윦; ) HANGUL SYLLABLE YUNH
+C727;C727;110B 1172 11AE;C727;110B 1172 11AE; # (윧; 윧; 윧; 윧; 윧; ) HANGUL SYLLABLE YUD
+C728;C728;110B 1172 11AF;C728;110B 1172 11AF; # (율; 율; 율; 율; 율; ) HANGUL SYLLABLE YUL
+C729;C729;110B 1172 11B0;C729;110B 1172 11B0; # (윩; 윩; 윩; 윩; 윩; ) HANGUL SYLLABLE YULG
+C72A;C72A;110B 1172 11B1;C72A;110B 1172 11B1; # (윪; 윪; 윪; 윪; 윪; ) HANGUL SYLLABLE YULM
+C72B;C72B;110B 1172 11B2;C72B;110B 1172 11B2; # (윫; 윫; 윫; 윫; 윫; ) HANGUL SYLLABLE YULB
+C72C;C72C;110B 1172 11B3;C72C;110B 1172 11B3; # (윬; 윬; 윬; 윬; 윬; ) HANGUL SYLLABLE YULS
+C72D;C72D;110B 1172 11B4;C72D;110B 1172 11B4; # (윭; 윭; 윭; 윭; 윭; ) HANGUL SYLLABLE YULT
+C72E;C72E;110B 1172 11B5;C72E;110B 1172 11B5; # (윮; 윮; 윮; 윮; 윮; ) HANGUL SYLLABLE YULP
+C72F;C72F;110B 1172 11B6;C72F;110B 1172 11B6; # (윯; 윯; 윯; 윯; 윯; ) HANGUL SYLLABLE YULH
+C730;C730;110B 1172 11B7;C730;110B 1172 11B7; # (윰; 윰; 윰; 윰; 윰; ) HANGUL SYLLABLE YUM
+C731;C731;110B 1172 11B8;C731;110B 1172 11B8; # (윱; 윱; 윱; 윱; 윱; ) HANGUL SYLLABLE YUB
+C732;C732;110B 1172 11B9;C732;110B 1172 11B9; # (윲; 윲; 윲; 윲; 윲; ) HANGUL SYLLABLE YUBS
+C733;C733;110B 1172 11BA;C733;110B 1172 11BA; # (윳; 윳; 윳; 윳; 윳; ) HANGUL SYLLABLE YUS
+C734;C734;110B 1172 11BB;C734;110B 1172 11BB; # (윴; 윴; 윴; 윴; 윴; ) HANGUL SYLLABLE YUSS
+C735;C735;110B 1172 11BC;C735;110B 1172 11BC; # (융; 융; 융; 융; 융; ) HANGUL SYLLABLE YUNG
+C736;C736;110B 1172 11BD;C736;110B 1172 11BD; # (윶; 윶; 윶; 윶; 윶; ) HANGUL SYLLABLE YUJ
+C737;C737;110B 1172 11BE;C737;110B 1172 11BE; # (윷; 윷; 윷; 윷; 윷; ) HANGUL SYLLABLE YUC
+C738;C738;110B 1172 11BF;C738;110B 1172 11BF; # (윸; 윸; 윸; 윸; 윸; ) HANGUL SYLLABLE YUK
+C739;C739;110B 1172 11C0;C739;110B 1172 11C0; # (윹; 윹; 윹; 윹; 윹; ) HANGUL SYLLABLE YUT
+C73A;C73A;110B 1172 11C1;C73A;110B 1172 11C1; # (윺; 윺; á„‹á…²á‡; 윺; á„‹á…²á‡; ) HANGUL SYLLABLE YUP
+C73B;C73B;110B 1172 11C2;C73B;110B 1172 11C2; # (윻; 윻; 윻; 윻; 윻; ) HANGUL SYLLABLE YUH
+C73C;C73C;110B 1173;C73C;110B 1173; # (으; 으; 으; 으; 으; ) HANGUL SYLLABLE EU
+C73D;C73D;110B 1173 11A8;C73D;110B 1173 11A8; # (윽; 윽; 윽; 윽; 윽; ) HANGUL SYLLABLE EUG
+C73E;C73E;110B 1173 11A9;C73E;110B 1173 11A9; # (윾; 윾; 윾; 윾; 윾; ) HANGUL SYLLABLE EUGG
+C73F;C73F;110B 1173 11AA;C73F;110B 1173 11AA; # (윿; 윿; 윿; 윿; 윿; ) HANGUL SYLLABLE EUGS
+C740;C740;110B 1173 11AB;C740;110B 1173 11AB; # (ì€; ì€; 은; ì€; 은; ) HANGUL SYLLABLE EUN
+C741;C741;110B 1173 11AC;C741;110B 1173 11AC; # (ì; ì; 읁; ì; 읁; ) HANGUL SYLLABLE EUNJ
+C742;C742;110B 1173 11AD;C742;110B 1173 11AD; # (ì‚; ì‚; 읂; ì‚; 읂; ) HANGUL SYLLABLE EUNH
+C743;C743;110B 1173 11AE;C743;110B 1173 11AE; # (ìƒ; ìƒ; 읃; ìƒ; 읃; ) HANGUL SYLLABLE EUD
+C744;C744;110B 1173 11AF;C744;110B 1173 11AF; # (ì„; ì„; 을; ì„; 을; ) HANGUL SYLLABLE EUL
+C745;C745;110B 1173 11B0;C745;110B 1173 11B0; # (ì…; ì…; 읅; ì…; 읅; ) HANGUL SYLLABLE EULG
+C746;C746;110B 1173 11B1;C746;110B 1173 11B1; # (ì†; ì†; 읆; ì†; 읆; ) HANGUL SYLLABLE EULM
+C747;C747;110B 1173 11B2;C747;110B 1173 11B2; # (ì‡; ì‡; 읇; ì‡; 읇; ) HANGUL SYLLABLE EULB
+C748;C748;110B 1173 11B3;C748;110B 1173 11B3; # (ìˆ; ìˆ; 읈; ìˆ; 읈; ) HANGUL SYLLABLE EULS
+C749;C749;110B 1173 11B4;C749;110B 1173 11B4; # (ì‰; ì‰; 읉; ì‰; 읉; ) HANGUL SYLLABLE EULT
+C74A;C74A;110B 1173 11B5;C74A;110B 1173 11B5; # (ìŠ; ìŠ; 읊; ìŠ; 읊; ) HANGUL SYLLABLE EULP
+C74B;C74B;110B 1173 11B6;C74B;110B 1173 11B6; # (ì‹; ì‹; 읋; ì‹; 읋; ) HANGUL SYLLABLE EULH
+C74C;C74C;110B 1173 11B7;C74C;110B 1173 11B7; # (ìŒ; ìŒ; 음; ìŒ; 음; ) HANGUL SYLLABLE EUM
+C74D;C74D;110B 1173 11B8;C74D;110B 1173 11B8; # (ì; ì; 읍; ì; 읍; ) HANGUL SYLLABLE EUB
+C74E;C74E;110B 1173 11B9;C74E;110B 1173 11B9; # (ìŽ; ìŽ; 읎; ìŽ; 읎; ) HANGUL SYLLABLE EUBS
+C74F;C74F;110B 1173 11BA;C74F;110B 1173 11BA; # (ì; ì; 읏; ì; 읏; ) HANGUL SYLLABLE EUS
+C750;C750;110B 1173 11BB;C750;110B 1173 11BB; # (ì; ì; 읐; ì; 읐; ) HANGUL SYLLABLE EUSS
+C751;C751;110B 1173 11BC;C751;110B 1173 11BC; # (ì‘; ì‘; 응; ì‘; 응; ) HANGUL SYLLABLE EUNG
+C752;C752;110B 1173 11BD;C752;110B 1173 11BD; # (ì’; ì’; 읒; ì’; 읒; ) HANGUL SYLLABLE EUJ
+C753;C753;110B 1173 11BE;C753;110B 1173 11BE; # (ì“; ì“; 읓; ì“; 읓; ) HANGUL SYLLABLE EUC
+C754;C754;110B 1173 11BF;C754;110B 1173 11BF; # (ì”; ì”; 읔; ì”; 읔; ) HANGUL SYLLABLE EUK
+C755;C755;110B 1173 11C0;C755;110B 1173 11C0; # (ì•; ì•; 읕; ì•; 읕; ) HANGUL SYLLABLE EUT
+C756;C756;110B 1173 11C1;C756;110B 1173 11C1; # (ì–; ì–; á„‹á…³á‡; ì–; á„‹á…³á‡; ) HANGUL SYLLABLE EUP
+C757;C757;110B 1173 11C2;C757;110B 1173 11C2; # (ì—; ì—; 읗; ì—; 읗; ) HANGUL SYLLABLE EUH
+C758;C758;110B 1174;C758;110B 1174; # (ì˜; ì˜; á„‹á…´; ì˜; á„‹á…´; ) HANGUL SYLLABLE YI
+C759;C759;110B 1174 11A8;C759;110B 1174 11A8; # (ì™; ì™; 읙; ì™; 읙; ) HANGUL SYLLABLE YIG
+C75A;C75A;110B 1174 11A9;C75A;110B 1174 11A9; # (ìš; ìš; 읚; ìš; 읚; ) HANGUL SYLLABLE YIGG
+C75B;C75B;110B 1174 11AA;C75B;110B 1174 11AA; # (ì›; ì›; 읛; ì›; 읛; ) HANGUL SYLLABLE YIGS
+C75C;C75C;110B 1174 11AB;C75C;110B 1174 11AB; # (ìœ; ìœ; 읜; ìœ; 읜; ) HANGUL SYLLABLE YIN
+C75D;C75D;110B 1174 11AC;C75D;110B 1174 11AC; # (ì; ì; 읝; ì; 읝; ) HANGUL SYLLABLE YINJ
+C75E;C75E;110B 1174 11AD;C75E;110B 1174 11AD; # (ìž; ìž; 읞; ìž; 읞; ) HANGUL SYLLABLE YINH
+C75F;C75F;110B 1174 11AE;C75F;110B 1174 11AE; # (ìŸ; ìŸ; 읟; ìŸ; 읟; ) HANGUL SYLLABLE YID
+C760;C760;110B 1174 11AF;C760;110B 1174 11AF; # (ì ; ì ; 읠; ì ; 읠; ) HANGUL SYLLABLE YIL
+C761;C761;110B 1174 11B0;C761;110B 1174 11B0; # (ì¡; ì¡; 읡; ì¡; 읡; ) HANGUL SYLLABLE YILG
+C762;C762;110B 1174 11B1;C762;110B 1174 11B1; # (ì¢; ì¢; 읢; ì¢; 읢; ) HANGUL SYLLABLE YILM
+C763;C763;110B 1174 11B2;C763;110B 1174 11B2; # (ì£; ì£; 읣; ì£; 읣; ) HANGUL SYLLABLE YILB
+C764;C764;110B 1174 11B3;C764;110B 1174 11B3; # (ì¤; ì¤; 읤; ì¤; 읤; ) HANGUL SYLLABLE YILS
+C765;C765;110B 1174 11B4;C765;110B 1174 11B4; # (ì¥; ì¥; 읥; ì¥; 읥; ) HANGUL SYLLABLE YILT
+C766;C766;110B 1174 11B5;C766;110B 1174 11B5; # (ì¦; ì¦; 읦; ì¦; 읦; ) HANGUL SYLLABLE YILP
+C767;C767;110B 1174 11B6;C767;110B 1174 11B6; # (ì§; ì§; 읧; ì§; 읧; ) HANGUL SYLLABLE YILH
+C768;C768;110B 1174 11B7;C768;110B 1174 11B7; # (ì¨; ì¨; 읨; ì¨; 읨; ) HANGUL SYLLABLE YIM
+C769;C769;110B 1174 11B8;C769;110B 1174 11B8; # (ì©; ì©; 읩; ì©; 읩; ) HANGUL SYLLABLE YIB
+C76A;C76A;110B 1174 11B9;C76A;110B 1174 11B9; # (ìª; ìª; 읪; ìª; 읪; ) HANGUL SYLLABLE YIBS
+C76B;C76B;110B 1174 11BA;C76B;110B 1174 11BA; # (ì«; ì«; 읫; ì«; 읫; ) HANGUL SYLLABLE YIS
+C76C;C76C;110B 1174 11BB;C76C;110B 1174 11BB; # (ì¬; ì¬; 읬; ì¬; 읬; ) HANGUL SYLLABLE YISS
+C76D;C76D;110B 1174 11BC;C76D;110B 1174 11BC; # (ì­; ì­; 읭; ì­; 읭; ) HANGUL SYLLABLE YING
+C76E;C76E;110B 1174 11BD;C76E;110B 1174 11BD; # (ì®; ì®; 읮; ì®; 읮; ) HANGUL SYLLABLE YIJ
+C76F;C76F;110B 1174 11BE;C76F;110B 1174 11BE; # (ì¯; ì¯; 읯; ì¯; 읯; ) HANGUL SYLLABLE YIC
+C770;C770;110B 1174 11BF;C770;110B 1174 11BF; # (ì°; ì°; 읰; ì°; 읰; ) HANGUL SYLLABLE YIK
+C771;C771;110B 1174 11C0;C771;110B 1174 11C0; # (ì±; ì±; 읱; ì±; 읱; ) HANGUL SYLLABLE YIT
+C772;C772;110B 1174 11C1;C772;110B 1174 11C1; # (ì²; ì²; á„‹á…´á‡; ì²; á„‹á…´á‡; ) HANGUL SYLLABLE YIP
+C773;C773;110B 1174 11C2;C773;110B 1174 11C2; # (ì³; ì³; 읳; ì³; 읳; ) HANGUL SYLLABLE YIH
+C774;C774;110B 1175;C774;110B 1175; # (ì´; ì´; á„‹á…µ; ì´; á„‹á…µ; ) HANGUL SYLLABLE I
+C775;C775;110B 1175 11A8;C775;110B 1175 11A8; # (ìµ; ìµ; 익; ìµ; 익; ) HANGUL SYLLABLE IG
+C776;C776;110B 1175 11A9;C776;110B 1175 11A9; # (ì¶; ì¶; 읶; ì¶; 읶; ) HANGUL SYLLABLE IGG
+C777;C777;110B 1175 11AA;C777;110B 1175 11AA; # (ì·; ì·; 읷; ì·; 읷; ) HANGUL SYLLABLE IGS
+C778;C778;110B 1175 11AB;C778;110B 1175 11AB; # (ì¸; ì¸; 인; ì¸; 인; ) HANGUL SYLLABLE IN
+C779;C779;110B 1175 11AC;C779;110B 1175 11AC; # (ì¹; ì¹; 읹; ì¹; 읹; ) HANGUL SYLLABLE INJ
+C77A;C77A;110B 1175 11AD;C77A;110B 1175 11AD; # (ìº; ìº; 읺; ìº; 읺; ) HANGUL SYLLABLE INH
+C77B;C77B;110B 1175 11AE;C77B;110B 1175 11AE; # (ì»; ì»; 읻; ì»; 읻; ) HANGUL SYLLABLE ID
+C77C;C77C;110B 1175 11AF;C77C;110B 1175 11AF; # (ì¼; ì¼; 일; ì¼; 일; ) HANGUL SYLLABLE IL
+C77D;C77D;110B 1175 11B0;C77D;110B 1175 11B0; # (ì½; ì½; 읽; ì½; 읽; ) HANGUL SYLLABLE ILG
+C77E;C77E;110B 1175 11B1;C77E;110B 1175 11B1; # (ì¾; ì¾; 읾; ì¾; 읾; ) HANGUL SYLLABLE ILM
+C77F;C77F;110B 1175 11B2;C77F;110B 1175 11B2; # (ì¿; ì¿; 읿; ì¿; 읿; ) HANGUL SYLLABLE ILB
+C780;C780;110B 1175 11B3;C780;110B 1175 11B3; # (잀; 잀; 잀; 잀; 잀; ) HANGUL SYLLABLE ILS
+C781;C781;110B 1175 11B4;C781;110B 1175 11B4; # (ìž; ìž; 잁; ìž; 잁; ) HANGUL SYLLABLE ILT
+C782;C782;110B 1175 11B5;C782;110B 1175 11B5; # (잂; 잂; 잂; 잂; 잂; ) HANGUL SYLLABLE ILP
+C783;C783;110B 1175 11B6;C783;110B 1175 11B6; # (잃; 잃; 잃; 잃; 잃; ) HANGUL SYLLABLE ILH
+C784;C784;110B 1175 11B7;C784;110B 1175 11B7; # (임; 임; 임; 임; 임; ) HANGUL SYLLABLE IM
+C785;C785;110B 1175 11B8;C785;110B 1175 11B8; # (입; 입; 입; 입; 입; ) HANGUL SYLLABLE IB
+C786;C786;110B 1175 11B9;C786;110B 1175 11B9; # (잆; 잆; 잆; 잆; 잆; ) HANGUL SYLLABLE IBS
+C787;C787;110B 1175 11BA;C787;110B 1175 11BA; # (잇; 잇; 잇; 잇; 잇; ) HANGUL SYLLABLE IS
+C788;C788;110B 1175 11BB;C788;110B 1175 11BB; # (있; 있; 있; 있; 있; ) HANGUL SYLLABLE ISS
+C789;C789;110B 1175 11BC;C789;110B 1175 11BC; # (잉; 잉; 잉; 잉; 잉; ) HANGUL SYLLABLE ING
+C78A;C78A;110B 1175 11BD;C78A;110B 1175 11BD; # (잊; 잊; 잊; 잊; 잊; ) HANGUL SYLLABLE IJ
+C78B;C78B;110B 1175 11BE;C78B;110B 1175 11BE; # (잋; 잋; 잋; 잋; 잋; ) HANGUL SYLLABLE IC
+C78C;C78C;110B 1175 11BF;C78C;110B 1175 11BF; # (잌; 잌; 잌; 잌; 잌; ) HANGUL SYLLABLE IK
+C78D;C78D;110B 1175 11C0;C78D;110B 1175 11C0; # (ìž; ìž; 잍; ìž; 잍; ) HANGUL SYLLABLE IT
+C78E;C78E;110B 1175 11C1;C78E;110B 1175 11C1; # (잎; 잎; á„‹á…µá‡; 잎; á„‹á…µá‡; ) HANGUL SYLLABLE IP
+C78F;C78F;110B 1175 11C2;C78F;110B 1175 11C2; # (ìž; ìž; 잏; ìž; 잏; ) HANGUL SYLLABLE IH
+C790;C790;110C 1161;C790;110C 1161; # (ìž; ìž; 자; ìž; 자; ) HANGUL SYLLABLE JA
+C791;C791;110C 1161 11A8;C791;110C 1161 11A8; # (작; 작; 작; 작; 작; ) HANGUL SYLLABLE JAG
+C792;C792;110C 1161 11A9;C792;110C 1161 11A9; # (잒; 잒; 잒; 잒; 잒; ) HANGUL SYLLABLE JAGG
+C793;C793;110C 1161 11AA;C793;110C 1161 11AA; # (잓; 잓; 잓; 잓; 잓; ) HANGUL SYLLABLE JAGS
+C794;C794;110C 1161 11AB;C794;110C 1161 11AB; # (잔; 잔; 잔; 잔; 잔; ) HANGUL SYLLABLE JAN
+C795;C795;110C 1161 11AC;C795;110C 1161 11AC; # (잕; 잕; 잕; 잕; 잕; ) HANGUL SYLLABLE JANJ
+C796;C796;110C 1161 11AD;C796;110C 1161 11AD; # (잖; 잖; 잖; 잖; 잖; ) HANGUL SYLLABLE JANH
+C797;C797;110C 1161 11AE;C797;110C 1161 11AE; # (잗; 잗; 잗; 잗; 잗; ) HANGUL SYLLABLE JAD
+C798;C798;110C 1161 11AF;C798;110C 1161 11AF; # (잘; 잘; 잘; 잘; 잘; ) HANGUL SYLLABLE JAL
+C799;C799;110C 1161 11B0;C799;110C 1161 11B0; # (잙; 잙; 잙; 잙; 잙; ) HANGUL SYLLABLE JALG
+C79A;C79A;110C 1161 11B1;C79A;110C 1161 11B1; # (잚; 잚; 잚; 잚; 잚; ) HANGUL SYLLABLE JALM
+C79B;C79B;110C 1161 11B2;C79B;110C 1161 11B2; # (잛; 잛; 잛; 잛; 잛; ) HANGUL SYLLABLE JALB
+C79C;C79C;110C 1161 11B3;C79C;110C 1161 11B3; # (잜; 잜; 잜; 잜; 잜; ) HANGUL SYLLABLE JALS
+C79D;C79D;110C 1161 11B4;C79D;110C 1161 11B4; # (ìž; ìž; 잝; ìž; 잝; ) HANGUL SYLLABLE JALT
+C79E;C79E;110C 1161 11B5;C79E;110C 1161 11B5; # (잞; 잞; 잞; 잞; 잞; ) HANGUL SYLLABLE JALP
+C79F;C79F;110C 1161 11B6;C79F;110C 1161 11B6; # (잟; 잟; 잟; 잟; 잟; ) HANGUL SYLLABLE JALH
+C7A0;C7A0;110C 1161 11B7;C7A0;110C 1161 11B7; # (잠; 잠; 잠; 잠; 잠; ) HANGUL SYLLABLE JAM
+C7A1;C7A1;110C 1161 11B8;C7A1;110C 1161 11B8; # (잡; 잡; 잡; 잡; 잡; ) HANGUL SYLLABLE JAB
+C7A2;C7A2;110C 1161 11B9;C7A2;110C 1161 11B9; # (잢; 잢; 잢; 잢; 잢; ) HANGUL SYLLABLE JABS
+C7A3;C7A3;110C 1161 11BA;C7A3;110C 1161 11BA; # (잣; 잣; 잣; 잣; 잣; ) HANGUL SYLLABLE JAS
+C7A4;C7A4;110C 1161 11BB;C7A4;110C 1161 11BB; # (잤; 잤; 잤; 잤; 잤; ) HANGUL SYLLABLE JASS
+C7A5;C7A5;110C 1161 11BC;C7A5;110C 1161 11BC; # (장; 장; 장; 장; 장; ) HANGUL SYLLABLE JANG
+C7A6;C7A6;110C 1161 11BD;C7A6;110C 1161 11BD; # (잦; 잦; 잦; 잦; 잦; ) HANGUL SYLLABLE JAJ
+C7A7;C7A7;110C 1161 11BE;C7A7;110C 1161 11BE; # (잧; 잧; 잧; 잧; 잧; ) HANGUL SYLLABLE JAC
+C7A8;C7A8;110C 1161 11BF;C7A8;110C 1161 11BF; # (잨; 잨; 잨; 잨; 잨; ) HANGUL SYLLABLE JAK
+C7A9;C7A9;110C 1161 11C0;C7A9;110C 1161 11C0; # (잩; 잩; 잩; 잩; 잩; ) HANGUL SYLLABLE JAT
+C7AA;C7AA;110C 1161 11C1;C7AA;110C 1161 11C1; # (잪; 잪; 자á‡; 잪; 자á‡; ) HANGUL SYLLABLE JAP
+C7AB;C7AB;110C 1161 11C2;C7AB;110C 1161 11C2; # (잫; 잫; 잫; 잫; 잫; ) HANGUL SYLLABLE JAH
+C7AC;C7AC;110C 1162;C7AC;110C 1162; # (재; 재; 재; 재; 재; ) HANGUL SYLLABLE JAE
+C7AD;C7AD;110C 1162 11A8;C7AD;110C 1162 11A8; # (잭; 잭; 잭; 잭; 잭; ) HANGUL SYLLABLE JAEG
+C7AE;C7AE;110C 1162 11A9;C7AE;110C 1162 11A9; # (잮; 잮; 잮; 잮; 잮; ) HANGUL SYLLABLE JAEGG
+C7AF;C7AF;110C 1162 11AA;C7AF;110C 1162 11AA; # (잯; 잯; 잯; 잯; 잯; ) HANGUL SYLLABLE JAEGS
+C7B0;C7B0;110C 1162 11AB;C7B0;110C 1162 11AB; # (잰; 잰; 잰; 잰; 잰; ) HANGUL SYLLABLE JAEN
+C7B1;C7B1;110C 1162 11AC;C7B1;110C 1162 11AC; # (잱; 잱; 잱; 잱; 잱; ) HANGUL SYLLABLE JAENJ
+C7B2;C7B2;110C 1162 11AD;C7B2;110C 1162 11AD; # (잲; 잲; 잲; 잲; 잲; ) HANGUL SYLLABLE JAENH
+C7B3;C7B3;110C 1162 11AE;C7B3;110C 1162 11AE; # (잳; 잳; 잳; 잳; 잳; ) HANGUL SYLLABLE JAED
+C7B4;C7B4;110C 1162 11AF;C7B4;110C 1162 11AF; # (잴; 잴; 잴; 잴; 잴; ) HANGUL SYLLABLE JAEL
+C7B5;C7B5;110C 1162 11B0;C7B5;110C 1162 11B0; # (잵; 잵; 잵; 잵; 잵; ) HANGUL SYLLABLE JAELG
+C7B6;C7B6;110C 1162 11B1;C7B6;110C 1162 11B1; # (잶; 잶; 잶; 잶; 잶; ) HANGUL SYLLABLE JAELM
+C7B7;C7B7;110C 1162 11B2;C7B7;110C 1162 11B2; # (잷; 잷; 잷; 잷; 잷; ) HANGUL SYLLABLE JAELB
+C7B8;C7B8;110C 1162 11B3;C7B8;110C 1162 11B3; # (잸; 잸; 잸; 잸; 잸; ) HANGUL SYLLABLE JAELS
+C7B9;C7B9;110C 1162 11B4;C7B9;110C 1162 11B4; # (잹; 잹; 잹; 잹; 잹; ) HANGUL SYLLABLE JAELT
+C7BA;C7BA;110C 1162 11B5;C7BA;110C 1162 11B5; # (잺; 잺; 잺; 잺; 잺; ) HANGUL SYLLABLE JAELP
+C7BB;C7BB;110C 1162 11B6;C7BB;110C 1162 11B6; # (잻; 잻; 잻; 잻; 잻; ) HANGUL SYLLABLE JAELH
+C7BC;C7BC;110C 1162 11B7;C7BC;110C 1162 11B7; # (잼; 잼; 잼; 잼; 잼; ) HANGUL SYLLABLE JAEM
+C7BD;C7BD;110C 1162 11B8;C7BD;110C 1162 11B8; # (잽; 잽; 잽; 잽; 잽; ) HANGUL SYLLABLE JAEB
+C7BE;C7BE;110C 1162 11B9;C7BE;110C 1162 11B9; # (잾; 잾; 잾; 잾; 잾; ) HANGUL SYLLABLE JAEBS
+C7BF;C7BF;110C 1162 11BA;C7BF;110C 1162 11BA; # (잿; 잿; 잿; 잿; 잿; ) HANGUL SYLLABLE JAES
+C7C0;C7C0;110C 1162 11BB;C7C0;110C 1162 11BB; # (쟀; 쟀; 쟀; 쟀; 쟀; ) HANGUL SYLLABLE JAESS
+C7C1;C7C1;110C 1162 11BC;C7C1;110C 1162 11BC; # (ìŸ; ìŸ; 쟁; ìŸ; 쟁; ) HANGUL SYLLABLE JAENG
+C7C2;C7C2;110C 1162 11BD;C7C2;110C 1162 11BD; # (쟂; 쟂; 쟂; 쟂; 쟂; ) HANGUL SYLLABLE JAEJ
+C7C3;C7C3;110C 1162 11BE;C7C3;110C 1162 11BE; # (쟃; 쟃; 쟃; 쟃; 쟃; ) HANGUL SYLLABLE JAEC
+C7C4;C7C4;110C 1162 11BF;C7C4;110C 1162 11BF; # (쟄; 쟄; 쟄; 쟄; 쟄; ) HANGUL SYLLABLE JAEK
+C7C5;C7C5;110C 1162 11C0;C7C5;110C 1162 11C0; # (쟅; 쟅; 쟅; 쟅; 쟅; ) HANGUL SYLLABLE JAET
+C7C6;C7C6;110C 1162 11C1;C7C6;110C 1162 11C1; # (쟆; 쟆; 재á‡; 쟆; 재á‡; ) HANGUL SYLLABLE JAEP
+C7C7;C7C7;110C 1162 11C2;C7C7;110C 1162 11C2; # (쟇; 쟇; 쟇; 쟇; 쟇; ) HANGUL SYLLABLE JAEH
+C7C8;C7C8;110C 1163;C7C8;110C 1163; # (쟈; 쟈; 쟈; 쟈; 쟈; ) HANGUL SYLLABLE JYA
+C7C9;C7C9;110C 1163 11A8;C7C9;110C 1163 11A8; # (쟉; 쟉; 쟉; 쟉; 쟉; ) HANGUL SYLLABLE JYAG
+C7CA;C7CA;110C 1163 11A9;C7CA;110C 1163 11A9; # (쟊; 쟊; 쟊; 쟊; 쟊; ) HANGUL SYLLABLE JYAGG
+C7CB;C7CB;110C 1163 11AA;C7CB;110C 1163 11AA; # (쟋; 쟋; 쟋; 쟋; 쟋; ) HANGUL SYLLABLE JYAGS
+C7CC;C7CC;110C 1163 11AB;C7CC;110C 1163 11AB; # (쟌; 쟌; 쟌; 쟌; 쟌; ) HANGUL SYLLABLE JYAN
+C7CD;C7CD;110C 1163 11AC;C7CD;110C 1163 11AC; # (ìŸ; ìŸ; 쟍; ìŸ; 쟍; ) HANGUL SYLLABLE JYANJ
+C7CE;C7CE;110C 1163 11AD;C7CE;110C 1163 11AD; # (쟎; 쟎; 쟎; 쟎; 쟎; ) HANGUL SYLLABLE JYANH
+C7CF;C7CF;110C 1163 11AE;C7CF;110C 1163 11AE; # (ìŸ; ìŸ; 쟏; ìŸ; 쟏; ) HANGUL SYLLABLE JYAD
+C7D0;C7D0;110C 1163 11AF;C7D0;110C 1163 11AF; # (ìŸ; ìŸ; 쟐; ìŸ; 쟐; ) HANGUL SYLLABLE JYAL
+C7D1;C7D1;110C 1163 11B0;C7D1;110C 1163 11B0; # (쟑; 쟑; 쟑; 쟑; 쟑; ) HANGUL SYLLABLE JYALG
+C7D2;C7D2;110C 1163 11B1;C7D2;110C 1163 11B1; # (쟒; 쟒; 쟒; 쟒; 쟒; ) HANGUL SYLLABLE JYALM
+C7D3;C7D3;110C 1163 11B2;C7D3;110C 1163 11B2; # (쟓; 쟓; 쟓; 쟓; 쟓; ) HANGUL SYLLABLE JYALB
+C7D4;C7D4;110C 1163 11B3;C7D4;110C 1163 11B3; # (쟔; 쟔; 쟔; 쟔; 쟔; ) HANGUL SYLLABLE JYALS
+C7D5;C7D5;110C 1163 11B4;C7D5;110C 1163 11B4; # (쟕; 쟕; 쟕; 쟕; 쟕; ) HANGUL SYLLABLE JYALT
+C7D6;C7D6;110C 1163 11B5;C7D6;110C 1163 11B5; # (쟖; 쟖; 쟖; 쟖; 쟖; ) HANGUL SYLLABLE JYALP
+C7D7;C7D7;110C 1163 11B6;C7D7;110C 1163 11B6; # (쟗; 쟗; 쟗; 쟗; 쟗; ) HANGUL SYLLABLE JYALH
+C7D8;C7D8;110C 1163 11B7;C7D8;110C 1163 11B7; # (쟘; 쟘; 쟘; 쟘; 쟘; ) HANGUL SYLLABLE JYAM
+C7D9;C7D9;110C 1163 11B8;C7D9;110C 1163 11B8; # (쟙; 쟙; 쟙; 쟙; 쟙; ) HANGUL SYLLABLE JYAB
+C7DA;C7DA;110C 1163 11B9;C7DA;110C 1163 11B9; # (쟚; 쟚; 쟚; 쟚; 쟚; ) HANGUL SYLLABLE JYABS
+C7DB;C7DB;110C 1163 11BA;C7DB;110C 1163 11BA; # (쟛; 쟛; 쟛; 쟛; 쟛; ) HANGUL SYLLABLE JYAS
+C7DC;C7DC;110C 1163 11BB;C7DC;110C 1163 11BB; # (쟜; 쟜; 쟜; 쟜; 쟜; ) HANGUL SYLLABLE JYASS
+C7DD;C7DD;110C 1163 11BC;C7DD;110C 1163 11BC; # (ìŸ; ìŸ; 쟝; ìŸ; 쟝; ) HANGUL SYLLABLE JYANG
+C7DE;C7DE;110C 1163 11BD;C7DE;110C 1163 11BD; # (쟞; 쟞; 쟞; 쟞; 쟞; ) HANGUL SYLLABLE JYAJ
+C7DF;C7DF;110C 1163 11BE;C7DF;110C 1163 11BE; # (쟟; 쟟; 쟟; 쟟; 쟟; ) HANGUL SYLLABLE JYAC
+C7E0;C7E0;110C 1163 11BF;C7E0;110C 1163 11BF; # (쟠; 쟠; 쟠; 쟠; 쟠; ) HANGUL SYLLABLE JYAK
+C7E1;C7E1;110C 1163 11C0;C7E1;110C 1163 11C0; # (쟡; 쟡; 쟡; 쟡; 쟡; ) HANGUL SYLLABLE JYAT
+C7E2;C7E2;110C 1163 11C1;C7E2;110C 1163 11C1; # (쟢; 쟢; 쟈á‡; 쟢; 쟈á‡; ) HANGUL SYLLABLE JYAP
+C7E3;C7E3;110C 1163 11C2;C7E3;110C 1163 11C2; # (쟣; 쟣; 쟣; 쟣; 쟣; ) HANGUL SYLLABLE JYAH
+C7E4;C7E4;110C 1164;C7E4;110C 1164; # (쟤; 쟤; 쟤; 쟤; 쟤; ) HANGUL SYLLABLE JYAE
+C7E5;C7E5;110C 1164 11A8;C7E5;110C 1164 11A8; # (쟥; 쟥; 쟥; 쟥; 쟥; ) HANGUL SYLLABLE JYAEG
+C7E6;C7E6;110C 1164 11A9;C7E6;110C 1164 11A9; # (쟦; 쟦; 쟦; 쟦; 쟦; ) HANGUL SYLLABLE JYAEGG
+C7E7;C7E7;110C 1164 11AA;C7E7;110C 1164 11AA; # (쟧; 쟧; 쟧; 쟧; 쟧; ) HANGUL SYLLABLE JYAEGS
+C7E8;C7E8;110C 1164 11AB;C7E8;110C 1164 11AB; # (쟨; 쟨; 쟨; 쟨; 쟨; ) HANGUL SYLLABLE JYAEN
+C7E9;C7E9;110C 1164 11AC;C7E9;110C 1164 11AC; # (쟩; 쟩; 쟩; 쟩; 쟩; ) HANGUL SYLLABLE JYAENJ
+C7EA;C7EA;110C 1164 11AD;C7EA;110C 1164 11AD; # (쟪; 쟪; 쟪; 쟪; 쟪; ) HANGUL SYLLABLE JYAENH
+C7EB;C7EB;110C 1164 11AE;C7EB;110C 1164 11AE; # (쟫; 쟫; 쟫; 쟫; 쟫; ) HANGUL SYLLABLE JYAED
+C7EC;C7EC;110C 1164 11AF;C7EC;110C 1164 11AF; # (쟬; 쟬; 쟬; 쟬; 쟬; ) HANGUL SYLLABLE JYAEL
+C7ED;C7ED;110C 1164 11B0;C7ED;110C 1164 11B0; # (쟭; 쟭; 쟭; 쟭; 쟭; ) HANGUL SYLLABLE JYAELG
+C7EE;C7EE;110C 1164 11B1;C7EE;110C 1164 11B1; # (쟮; 쟮; 쟮; 쟮; 쟮; ) HANGUL SYLLABLE JYAELM
+C7EF;C7EF;110C 1164 11B2;C7EF;110C 1164 11B2; # (쟯; 쟯; 쟯; 쟯; 쟯; ) HANGUL SYLLABLE JYAELB
+C7F0;C7F0;110C 1164 11B3;C7F0;110C 1164 11B3; # (쟰; 쟰; 쟰; 쟰; 쟰; ) HANGUL SYLLABLE JYAELS
+C7F1;C7F1;110C 1164 11B4;C7F1;110C 1164 11B4; # (쟱; 쟱; 쟱; 쟱; 쟱; ) HANGUL SYLLABLE JYAELT
+C7F2;C7F2;110C 1164 11B5;C7F2;110C 1164 11B5; # (쟲; 쟲; 쟲; 쟲; 쟲; ) HANGUL SYLLABLE JYAELP
+C7F3;C7F3;110C 1164 11B6;C7F3;110C 1164 11B6; # (쟳; 쟳; 쟳; 쟳; 쟳; ) HANGUL SYLLABLE JYAELH
+C7F4;C7F4;110C 1164 11B7;C7F4;110C 1164 11B7; # (쟴; 쟴; 쟴; 쟴; 쟴; ) HANGUL SYLLABLE JYAEM
+C7F5;C7F5;110C 1164 11B8;C7F5;110C 1164 11B8; # (쟵; 쟵; 쟵; 쟵; 쟵; ) HANGUL SYLLABLE JYAEB
+C7F6;C7F6;110C 1164 11B9;C7F6;110C 1164 11B9; # (쟶; 쟶; 쟶; 쟶; 쟶; ) HANGUL SYLLABLE JYAEBS
+C7F7;C7F7;110C 1164 11BA;C7F7;110C 1164 11BA; # (쟷; 쟷; 쟷; 쟷; 쟷; ) HANGUL SYLLABLE JYAES
+C7F8;C7F8;110C 1164 11BB;C7F8;110C 1164 11BB; # (쟸; 쟸; 쟸; 쟸; 쟸; ) HANGUL SYLLABLE JYAESS
+C7F9;C7F9;110C 1164 11BC;C7F9;110C 1164 11BC; # (쟹; 쟹; 쟹; 쟹; 쟹; ) HANGUL SYLLABLE JYAENG
+C7FA;C7FA;110C 1164 11BD;C7FA;110C 1164 11BD; # (쟺; 쟺; 쟺; 쟺; 쟺; ) HANGUL SYLLABLE JYAEJ
+C7FB;C7FB;110C 1164 11BE;C7FB;110C 1164 11BE; # (쟻; 쟻; 쟻; 쟻; 쟻; ) HANGUL SYLLABLE JYAEC
+C7FC;C7FC;110C 1164 11BF;C7FC;110C 1164 11BF; # (쟼; 쟼; 쟼; 쟼; 쟼; ) HANGUL SYLLABLE JYAEK
+C7FD;C7FD;110C 1164 11C0;C7FD;110C 1164 11C0; # (쟽; 쟽; 쟽; 쟽; 쟽; ) HANGUL SYLLABLE JYAET
+C7FE;C7FE;110C 1164 11C1;C7FE;110C 1164 11C1; # (쟾; 쟾; 쟤á‡; 쟾; 쟤á‡; ) HANGUL SYLLABLE JYAEP
+C7FF;C7FF;110C 1164 11C2;C7FF;110C 1164 11C2; # (쟿; 쟿; 쟿; 쟿; 쟿; ) HANGUL SYLLABLE JYAEH
+C800;C800;110C 1165;C800;110C 1165; # (저; 저; 저; 저; 저; ) HANGUL SYLLABLE JEO
+C801;C801;110C 1165 11A8;C801;110C 1165 11A8; # (ì ; ì ; 적; ì ; 적; ) HANGUL SYLLABLE JEOG
+C802;C802;110C 1165 11A9;C802;110C 1165 11A9; # (젂; 젂; 젂; 젂; 젂; ) HANGUL SYLLABLE JEOGG
+C803;C803;110C 1165 11AA;C803;110C 1165 11AA; # (젃; 젃; 젃; 젃; 젃; ) HANGUL SYLLABLE JEOGS
+C804;C804;110C 1165 11AB;C804;110C 1165 11AB; # (전; 전; 전; 전; 전; ) HANGUL SYLLABLE JEON
+C805;C805;110C 1165 11AC;C805;110C 1165 11AC; # (젅; 젅; 젅; 젅; 젅; ) HANGUL SYLLABLE JEONJ
+C806;C806;110C 1165 11AD;C806;110C 1165 11AD; # (젆; 젆; 젆; 젆; 젆; ) HANGUL SYLLABLE JEONH
+C807;C807;110C 1165 11AE;C807;110C 1165 11AE; # (젇; 젇; 젇; 젇; 젇; ) HANGUL SYLLABLE JEOD
+C808;C808;110C 1165 11AF;C808;110C 1165 11AF; # (절; 절; 절; 절; 절; ) HANGUL SYLLABLE JEOL
+C809;C809;110C 1165 11B0;C809;110C 1165 11B0; # (젉; 젉; 젉; 젉; 젉; ) HANGUL SYLLABLE JEOLG
+C80A;C80A;110C 1165 11B1;C80A;110C 1165 11B1; # (젊; 젊; 젊; 젊; 젊; ) HANGUL SYLLABLE JEOLM
+C80B;C80B;110C 1165 11B2;C80B;110C 1165 11B2; # (젋; 젋; 젋; 젋; 젋; ) HANGUL SYLLABLE JEOLB
+C80C;C80C;110C 1165 11B3;C80C;110C 1165 11B3; # (젌; 젌; 젌; 젌; 젌; ) HANGUL SYLLABLE JEOLS
+C80D;C80D;110C 1165 11B4;C80D;110C 1165 11B4; # (ì ; ì ; 젍; ì ; 젍; ) HANGUL SYLLABLE JEOLT
+C80E;C80E;110C 1165 11B5;C80E;110C 1165 11B5; # (젎; 젎; 젎; 젎; 젎; ) HANGUL SYLLABLE JEOLP
+C80F;C80F;110C 1165 11B6;C80F;110C 1165 11B6; # (ì ; ì ; 젏; ì ; 젏; ) HANGUL SYLLABLE JEOLH
+C810;C810;110C 1165 11B7;C810;110C 1165 11B7; # (ì ; ì ; 점; ì ; 점; ) HANGUL SYLLABLE JEOM
+C811;C811;110C 1165 11B8;C811;110C 1165 11B8; # (접; 접; 접; 접; 접; ) HANGUL SYLLABLE JEOB
+C812;C812;110C 1165 11B9;C812;110C 1165 11B9; # (젒; 젒; 젒; 젒; 젒; ) HANGUL SYLLABLE JEOBS
+C813;C813;110C 1165 11BA;C813;110C 1165 11BA; # (젓; 젓; 젓; 젓; 젓; ) HANGUL SYLLABLE JEOS
+C814;C814;110C 1165 11BB;C814;110C 1165 11BB; # (젔; 젔; 젔; 젔; 젔; ) HANGUL SYLLABLE JEOSS
+C815;C815;110C 1165 11BC;C815;110C 1165 11BC; # (정; 정; 정; 정; 정; ) HANGUL SYLLABLE JEONG
+C816;C816;110C 1165 11BD;C816;110C 1165 11BD; # (젖; 젖; 젖; 젖; 젖; ) HANGUL SYLLABLE JEOJ
+C817;C817;110C 1165 11BE;C817;110C 1165 11BE; # (젗; 젗; 젗; 젗; 젗; ) HANGUL SYLLABLE JEOC
+C818;C818;110C 1165 11BF;C818;110C 1165 11BF; # (젘; 젘; 젘; 젘; 젘; ) HANGUL SYLLABLE JEOK
+C819;C819;110C 1165 11C0;C819;110C 1165 11C0; # (젙; 젙; 젙; 젙; 젙; ) HANGUL SYLLABLE JEOT
+C81A;C81A;110C 1165 11C1;C81A;110C 1165 11C1; # (ì š; ì š; 저á‡; ì š; 저á‡; ) HANGUL SYLLABLE JEOP
+C81B;C81B;110C 1165 11C2;C81B;110C 1165 11C2; # (젛; 젛; 젛; 젛; 젛; ) HANGUL SYLLABLE JEOH
+C81C;C81C;110C 1166;C81C;110C 1166; # (제; 제; 제; 제; 제; ) HANGUL SYLLABLE JE
+C81D;C81D;110C 1166 11A8;C81D;110C 1166 11A8; # (ì ; ì ; 젝; ì ; 젝; ) HANGUL SYLLABLE JEG
+C81E;C81E;110C 1166 11A9;C81E;110C 1166 11A9; # (젞; 젞; 젞; 젞; 젞; ) HANGUL SYLLABLE JEGG
+C81F;C81F;110C 1166 11AA;C81F;110C 1166 11AA; # (젟; 젟; 젟; 젟; 젟; ) HANGUL SYLLABLE JEGS
+C820;C820;110C 1166 11AB;C820;110C 1166 11AB; # (젠; 젠; 젠; 젠; 젠; ) HANGUL SYLLABLE JEN
+C821;C821;110C 1166 11AC;C821;110C 1166 11AC; # (젡; 젡; 젡; 젡; 젡; ) HANGUL SYLLABLE JENJ
+C822;C822;110C 1166 11AD;C822;110C 1166 11AD; # (젢; 젢; 젢; 젢; 젢; ) HANGUL SYLLABLE JENH
+C823;C823;110C 1166 11AE;C823;110C 1166 11AE; # (젣; 젣; 젣; 젣; 젣; ) HANGUL SYLLABLE JED
+C824;C824;110C 1166 11AF;C824;110C 1166 11AF; # (젤; 젤; 젤; 젤; 젤; ) HANGUL SYLLABLE JEL
+C825;C825;110C 1166 11B0;C825;110C 1166 11B0; # (젥; 젥; 젥; 젥; 젥; ) HANGUL SYLLABLE JELG
+C826;C826;110C 1166 11B1;C826;110C 1166 11B1; # (젦; 젦; 젦; 젦; 젦; ) HANGUL SYLLABLE JELM
+C827;C827;110C 1166 11B2;C827;110C 1166 11B2; # (젧; 젧; 젧; 젧; 젧; ) HANGUL SYLLABLE JELB
+C828;C828;110C 1166 11B3;C828;110C 1166 11B3; # (젨; 젨; 젨; 젨; 젨; ) HANGUL SYLLABLE JELS
+C829;C829;110C 1166 11B4;C829;110C 1166 11B4; # (젩; 젩; 젩; 젩; 젩; ) HANGUL SYLLABLE JELT
+C82A;C82A;110C 1166 11B5;C82A;110C 1166 11B5; # (젪; 젪; 젪; 젪; 젪; ) HANGUL SYLLABLE JELP
+C82B;C82B;110C 1166 11B6;C82B;110C 1166 11B6; # (젫; 젫; 젫; 젫; 젫; ) HANGUL SYLLABLE JELH
+C82C;C82C;110C 1166 11B7;C82C;110C 1166 11B7; # (젬; 젬; 젬; 젬; 젬; ) HANGUL SYLLABLE JEM
+C82D;C82D;110C 1166 11B8;C82D;110C 1166 11B8; # (젭; 젭; 젭; 젭; 젭; ) HANGUL SYLLABLE JEB
+C82E;C82E;110C 1166 11B9;C82E;110C 1166 11B9; # (젮; 젮; 젮; 젮; 젮; ) HANGUL SYLLABLE JEBS
+C82F;C82F;110C 1166 11BA;C82F;110C 1166 11BA; # (젯; 젯; 젯; 젯; 젯; ) HANGUL SYLLABLE JES
+C830;C830;110C 1166 11BB;C830;110C 1166 11BB; # (젰; 젰; 젰; 젰; 젰; ) HANGUL SYLLABLE JESS
+C831;C831;110C 1166 11BC;C831;110C 1166 11BC; # (젱; 젱; 젱; 젱; 젱; ) HANGUL SYLLABLE JENG
+C832;C832;110C 1166 11BD;C832;110C 1166 11BD; # (젲; 젲; 젲; 젲; 젲; ) HANGUL SYLLABLE JEJ
+C833;C833;110C 1166 11BE;C833;110C 1166 11BE; # (젳; 젳; 젳; 젳; 젳; ) HANGUL SYLLABLE JEC
+C834;C834;110C 1166 11BF;C834;110C 1166 11BF; # (젴; 젴; 젴; 젴; 젴; ) HANGUL SYLLABLE JEK
+C835;C835;110C 1166 11C0;C835;110C 1166 11C0; # (젵; 젵; 젵; 젵; 젵; ) HANGUL SYLLABLE JET
+C836;C836;110C 1166 11C1;C836;110C 1166 11C1; # (ì ¶; ì ¶; 제á‡; ì ¶; 제á‡; ) HANGUL SYLLABLE JEP
+C837;C837;110C 1166 11C2;C837;110C 1166 11C2; # (젷; 젷; 젷; 젷; 젷; ) HANGUL SYLLABLE JEH
+C838;C838;110C 1167;C838;110C 1167; # (져; 져; 져; 져; 져; ) HANGUL SYLLABLE JYEO
+C839;C839;110C 1167 11A8;C839;110C 1167 11A8; # (젹; 젹; 젹; 젹; 젹; ) HANGUL SYLLABLE JYEOG
+C83A;C83A;110C 1167 11A9;C83A;110C 1167 11A9; # (젺; 젺; 젺; 젺; 젺; ) HANGUL SYLLABLE JYEOGG
+C83B;C83B;110C 1167 11AA;C83B;110C 1167 11AA; # (젻; 젻; 젻; 젻; 젻; ) HANGUL SYLLABLE JYEOGS
+C83C;C83C;110C 1167 11AB;C83C;110C 1167 11AB; # (젼; 젼; 젼; 젼; 젼; ) HANGUL SYLLABLE JYEON
+C83D;C83D;110C 1167 11AC;C83D;110C 1167 11AC; # (젽; 젽; 젽; 젽; 젽; ) HANGUL SYLLABLE JYEONJ
+C83E;C83E;110C 1167 11AD;C83E;110C 1167 11AD; # (젾; 젾; 젾; 젾; 젾; ) HANGUL SYLLABLE JYEONH
+C83F;C83F;110C 1167 11AE;C83F;110C 1167 11AE; # (젿; 젿; 젿; 젿; 젿; ) HANGUL SYLLABLE JYEOD
+C840;C840;110C 1167 11AF;C840;110C 1167 11AF; # (졀; 졀; 졀; 졀; 졀; ) HANGUL SYLLABLE JYEOL
+C841;C841;110C 1167 11B0;C841;110C 1167 11B0; # (ì¡; ì¡; 졁; ì¡; 졁; ) HANGUL SYLLABLE JYEOLG
+C842;C842;110C 1167 11B1;C842;110C 1167 11B1; # (졂; 졂; 졂; 졂; 졂; ) HANGUL SYLLABLE JYEOLM
+C843;C843;110C 1167 11B2;C843;110C 1167 11B2; # (졃; 졃; 졃; 졃; 졃; ) HANGUL SYLLABLE JYEOLB
+C844;C844;110C 1167 11B3;C844;110C 1167 11B3; # (졄; 졄; 졄; 졄; 졄; ) HANGUL SYLLABLE JYEOLS
+C845;C845;110C 1167 11B4;C845;110C 1167 11B4; # (졅; 졅; 졅; 졅; 졅; ) HANGUL SYLLABLE JYEOLT
+C846;C846;110C 1167 11B5;C846;110C 1167 11B5; # (졆; 졆; 졆; 졆; 졆; ) HANGUL SYLLABLE JYEOLP
+C847;C847;110C 1167 11B6;C847;110C 1167 11B6; # (졇; 졇; 졇; 졇; 졇; ) HANGUL SYLLABLE JYEOLH
+C848;C848;110C 1167 11B7;C848;110C 1167 11B7; # (졈; 졈; 졈; 졈; 졈; ) HANGUL SYLLABLE JYEOM
+C849;C849;110C 1167 11B8;C849;110C 1167 11B8; # (졉; 졉; 졉; 졉; 졉; ) HANGUL SYLLABLE JYEOB
+C84A;C84A;110C 1167 11B9;C84A;110C 1167 11B9; # (졊; 졊; 졊; 졊; 졊; ) HANGUL SYLLABLE JYEOBS
+C84B;C84B;110C 1167 11BA;C84B;110C 1167 11BA; # (졋; 졋; 졋; 졋; 졋; ) HANGUL SYLLABLE JYEOS
+C84C;C84C;110C 1167 11BB;C84C;110C 1167 11BB; # (졌; 졌; 졌; 졌; 졌; ) HANGUL SYLLABLE JYEOSS
+C84D;C84D;110C 1167 11BC;C84D;110C 1167 11BC; # (ì¡; ì¡; 졍; ì¡; 졍; ) HANGUL SYLLABLE JYEONG
+C84E;C84E;110C 1167 11BD;C84E;110C 1167 11BD; # (졎; 졎; 졎; 졎; 졎; ) HANGUL SYLLABLE JYEOJ
+C84F;C84F;110C 1167 11BE;C84F;110C 1167 11BE; # (ì¡; ì¡; 졏; ì¡; 졏; ) HANGUL SYLLABLE JYEOC
+C850;C850;110C 1167 11BF;C850;110C 1167 11BF; # (ì¡; ì¡; 졐; ì¡; 졐; ) HANGUL SYLLABLE JYEOK
+C851;C851;110C 1167 11C0;C851;110C 1167 11C0; # (졑; 졑; 졑; 졑; 졑; ) HANGUL SYLLABLE JYEOT
+C852;C852;110C 1167 11C1;C852;110C 1167 11C1; # (ì¡’; ì¡’; 져á‡; ì¡’; 져á‡; ) HANGUL SYLLABLE JYEOP
+C853;C853;110C 1167 11C2;C853;110C 1167 11C2; # (졓; 졓; 졓; 졓; 졓; ) HANGUL SYLLABLE JYEOH
+C854;C854;110C 1168;C854;110C 1168; # (졔; 졔; 졔; 졔; 졔; ) HANGUL SYLLABLE JYE
+C855;C855;110C 1168 11A8;C855;110C 1168 11A8; # (졕; 졕; 졕; 졕; 졕; ) HANGUL SYLLABLE JYEG
+C856;C856;110C 1168 11A9;C856;110C 1168 11A9; # (졖; 졖; 졖; 졖; 졖; ) HANGUL SYLLABLE JYEGG
+C857;C857;110C 1168 11AA;C857;110C 1168 11AA; # (졗; 졗; 졗; 졗; 졗; ) HANGUL SYLLABLE JYEGS
+C858;C858;110C 1168 11AB;C858;110C 1168 11AB; # (졘; 졘; 졘; 졘; 졘; ) HANGUL SYLLABLE JYEN
+C859;C859;110C 1168 11AC;C859;110C 1168 11AC; # (졙; 졙; 졙; 졙; 졙; ) HANGUL SYLLABLE JYENJ
+C85A;C85A;110C 1168 11AD;C85A;110C 1168 11AD; # (졚; 졚; 졚; 졚; 졚; ) HANGUL SYLLABLE JYENH
+C85B;C85B;110C 1168 11AE;C85B;110C 1168 11AE; # (졛; 졛; 졛; 졛; 졛; ) HANGUL SYLLABLE JYED
+C85C;C85C;110C 1168 11AF;C85C;110C 1168 11AF; # (졜; 졜; 졜; 졜; 졜; ) HANGUL SYLLABLE JYEL
+C85D;C85D;110C 1168 11B0;C85D;110C 1168 11B0; # (ì¡; ì¡; 졝; ì¡; 졝; ) HANGUL SYLLABLE JYELG
+C85E;C85E;110C 1168 11B1;C85E;110C 1168 11B1; # (졞; 졞; 졞; 졞; 졞; ) HANGUL SYLLABLE JYELM
+C85F;C85F;110C 1168 11B2;C85F;110C 1168 11B2; # (졟; 졟; 졟; 졟; 졟; ) HANGUL SYLLABLE JYELB
+C860;C860;110C 1168 11B3;C860;110C 1168 11B3; # (졠; 졠; 졠; 졠; 졠; ) HANGUL SYLLABLE JYELS
+C861;C861;110C 1168 11B4;C861;110C 1168 11B4; # (졡; 졡; 졡; 졡; 졡; ) HANGUL SYLLABLE JYELT
+C862;C862;110C 1168 11B5;C862;110C 1168 11B5; # (졢; 졢; 졢; 졢; 졢; ) HANGUL SYLLABLE JYELP
+C863;C863;110C 1168 11B6;C863;110C 1168 11B6; # (졣; 졣; 졣; 졣; 졣; ) HANGUL SYLLABLE JYELH
+C864;C864;110C 1168 11B7;C864;110C 1168 11B7; # (졤; 졤; 졤; 졤; 졤; ) HANGUL SYLLABLE JYEM
+C865;C865;110C 1168 11B8;C865;110C 1168 11B8; # (졥; 졥; 졥; 졥; 졥; ) HANGUL SYLLABLE JYEB
+C866;C866;110C 1168 11B9;C866;110C 1168 11B9; # (졦; 졦; 졦; 졦; 졦; ) HANGUL SYLLABLE JYEBS
+C867;C867;110C 1168 11BA;C867;110C 1168 11BA; # (졧; 졧; 졧; 졧; 졧; ) HANGUL SYLLABLE JYES
+C868;C868;110C 1168 11BB;C868;110C 1168 11BB; # (졨; 졨; 졨; 졨; 졨; ) HANGUL SYLLABLE JYESS
+C869;C869;110C 1168 11BC;C869;110C 1168 11BC; # (졩; 졩; 졩; 졩; 졩; ) HANGUL SYLLABLE JYENG
+C86A;C86A;110C 1168 11BD;C86A;110C 1168 11BD; # (졪; 졪; 졪; 졪; 졪; ) HANGUL SYLLABLE JYEJ
+C86B;C86B;110C 1168 11BE;C86B;110C 1168 11BE; # (졫; 졫; 졫; 졫; 졫; ) HANGUL SYLLABLE JYEC
+C86C;C86C;110C 1168 11BF;C86C;110C 1168 11BF; # (졬; 졬; 졬; 졬; 졬; ) HANGUL SYLLABLE JYEK
+C86D;C86D;110C 1168 11C0;C86D;110C 1168 11C0; # (졭; 졭; 졭; 졭; 졭; ) HANGUL SYLLABLE JYET
+C86E;C86E;110C 1168 11C1;C86E;110C 1168 11C1; # (ì¡®; ì¡®; 졔á‡; ì¡®; 졔á‡; ) HANGUL SYLLABLE JYEP
+C86F;C86F;110C 1168 11C2;C86F;110C 1168 11C2; # (졯; 졯; 졯; 졯; 졯; ) HANGUL SYLLABLE JYEH
+C870;C870;110C 1169;C870;110C 1169; # (조; 조; 조; 조; 조; ) HANGUL SYLLABLE JO
+C871;C871;110C 1169 11A8;C871;110C 1169 11A8; # (족; 족; 족; 족; 족; ) HANGUL SYLLABLE JOG
+C872;C872;110C 1169 11A9;C872;110C 1169 11A9; # (졲; 졲; 졲; 졲; 졲; ) HANGUL SYLLABLE JOGG
+C873;C873;110C 1169 11AA;C873;110C 1169 11AA; # (졳; 졳; 졳; 졳; 졳; ) HANGUL SYLLABLE JOGS
+C874;C874;110C 1169 11AB;C874;110C 1169 11AB; # (존; 존; 존; 존; 존; ) HANGUL SYLLABLE JON
+C875;C875;110C 1169 11AC;C875;110C 1169 11AC; # (졵; 졵; 졵; 졵; 졵; ) HANGUL SYLLABLE JONJ
+C876;C876;110C 1169 11AD;C876;110C 1169 11AD; # (졶; 졶; 졶; 졶; 졶; ) HANGUL SYLLABLE JONH
+C877;C877;110C 1169 11AE;C877;110C 1169 11AE; # (졷; 졷; 졷; 졷; 졷; ) HANGUL SYLLABLE JOD
+C878;C878;110C 1169 11AF;C878;110C 1169 11AF; # (졸; 졸; 졸; 졸; 졸; ) HANGUL SYLLABLE JOL
+C879;C879;110C 1169 11B0;C879;110C 1169 11B0; # (졹; 졹; 졹; 졹; 졹; ) HANGUL SYLLABLE JOLG
+C87A;C87A;110C 1169 11B1;C87A;110C 1169 11B1; # (졺; 졺; 졺; 졺; 졺; ) HANGUL SYLLABLE JOLM
+C87B;C87B;110C 1169 11B2;C87B;110C 1169 11B2; # (졻; 졻; 졻; 졻; 졻; ) HANGUL SYLLABLE JOLB
+C87C;C87C;110C 1169 11B3;C87C;110C 1169 11B3; # (졼; 졼; 졼; 졼; 졼; ) HANGUL SYLLABLE JOLS
+C87D;C87D;110C 1169 11B4;C87D;110C 1169 11B4; # (졽; 졽; 졽; 졽; 졽; ) HANGUL SYLLABLE JOLT
+C87E;C87E;110C 1169 11B5;C87E;110C 1169 11B5; # (졾; 졾; 졾; 졾; 졾; ) HANGUL SYLLABLE JOLP
+C87F;C87F;110C 1169 11B6;C87F;110C 1169 11B6; # (졿; 졿; 졿; 졿; 졿; ) HANGUL SYLLABLE JOLH
+C880;C880;110C 1169 11B7;C880;110C 1169 11B7; # (좀; 좀; 좀; 좀; 좀; ) HANGUL SYLLABLE JOM
+C881;C881;110C 1169 11B8;C881;110C 1169 11B8; # (ì¢; ì¢; 좁; ì¢; 좁; ) HANGUL SYLLABLE JOB
+C882;C882;110C 1169 11B9;C882;110C 1169 11B9; # (좂; 좂; 좂; 좂; 좂; ) HANGUL SYLLABLE JOBS
+C883;C883;110C 1169 11BA;C883;110C 1169 11BA; # (좃; 좃; 좃; 좃; 좃; ) HANGUL SYLLABLE JOS
+C884;C884;110C 1169 11BB;C884;110C 1169 11BB; # (좄; 좄; 좄; 좄; 좄; ) HANGUL SYLLABLE JOSS
+C885;C885;110C 1169 11BC;C885;110C 1169 11BC; # (종; 종; 종; 종; 종; ) HANGUL SYLLABLE JONG
+C886;C886;110C 1169 11BD;C886;110C 1169 11BD; # (좆; 좆; 좆; 좆; 좆; ) HANGUL SYLLABLE JOJ
+C887;C887;110C 1169 11BE;C887;110C 1169 11BE; # (좇; 좇; 좇; 좇; 좇; ) HANGUL SYLLABLE JOC
+C888;C888;110C 1169 11BF;C888;110C 1169 11BF; # (좈; 좈; 좈; 좈; 좈; ) HANGUL SYLLABLE JOK
+C889;C889;110C 1169 11C0;C889;110C 1169 11C0; # (좉; 좉; 좉; 좉; 좉; ) HANGUL SYLLABLE JOT
+C88A;C88A;110C 1169 11C1;C88A;110C 1169 11C1; # (좊; 좊; 조á‡; 좊; 조á‡; ) HANGUL SYLLABLE JOP
+C88B;C88B;110C 1169 11C2;C88B;110C 1169 11C2; # (좋; 좋; 좋; 좋; 좋; ) HANGUL SYLLABLE JOH
+C88C;C88C;110C 116A;C88C;110C 116A; # (좌; 좌; 좌; 좌; 좌; ) HANGUL SYLLABLE JWA
+C88D;C88D;110C 116A 11A8;C88D;110C 116A 11A8; # (ì¢; ì¢; 좍; ì¢; 좍; ) HANGUL SYLLABLE JWAG
+C88E;C88E;110C 116A 11A9;C88E;110C 116A 11A9; # (좎; 좎; 좎; 좎; 좎; ) HANGUL SYLLABLE JWAGG
+C88F;C88F;110C 116A 11AA;C88F;110C 116A 11AA; # (ì¢; ì¢; 좏; ì¢; 좏; ) HANGUL SYLLABLE JWAGS
+C890;C890;110C 116A 11AB;C890;110C 116A 11AB; # (ì¢; ì¢; 좐; ì¢; 좐; ) HANGUL SYLLABLE JWAN
+C891;C891;110C 116A 11AC;C891;110C 116A 11AC; # (좑; 좑; 좑; 좑; 좑; ) HANGUL SYLLABLE JWANJ
+C892;C892;110C 116A 11AD;C892;110C 116A 11AD; # (좒; 좒; 좒; 좒; 좒; ) HANGUL SYLLABLE JWANH
+C893;C893;110C 116A 11AE;C893;110C 116A 11AE; # (좓; 좓; 좓; 좓; 좓; ) HANGUL SYLLABLE JWAD
+C894;C894;110C 116A 11AF;C894;110C 116A 11AF; # (좔; 좔; 좔; 좔; 좔; ) HANGUL SYLLABLE JWAL
+C895;C895;110C 116A 11B0;C895;110C 116A 11B0; # (좕; 좕; 좕; 좕; 좕; ) HANGUL SYLLABLE JWALG
+C896;C896;110C 116A 11B1;C896;110C 116A 11B1; # (좖; 좖; 좖; 좖; 좖; ) HANGUL SYLLABLE JWALM
+C897;C897;110C 116A 11B2;C897;110C 116A 11B2; # (좗; 좗; 좗; 좗; 좗; ) HANGUL SYLLABLE JWALB
+C898;C898;110C 116A 11B3;C898;110C 116A 11B3; # (좘; 좘; 좘; 좘; 좘; ) HANGUL SYLLABLE JWALS
+C899;C899;110C 116A 11B4;C899;110C 116A 11B4; # (좙; 좙; 좙; 좙; 좙; ) HANGUL SYLLABLE JWALT
+C89A;C89A;110C 116A 11B5;C89A;110C 116A 11B5; # (좚; 좚; 좚; 좚; 좚; ) HANGUL SYLLABLE JWALP
+C89B;C89B;110C 116A 11B6;C89B;110C 116A 11B6; # (좛; 좛; 좛; 좛; 좛; ) HANGUL SYLLABLE JWALH
+C89C;C89C;110C 116A 11B7;C89C;110C 116A 11B7; # (좜; 좜; 좜; 좜; 좜; ) HANGUL SYLLABLE JWAM
+C89D;C89D;110C 116A 11B8;C89D;110C 116A 11B8; # (ì¢; ì¢; 좝; ì¢; 좝; ) HANGUL SYLLABLE JWAB
+C89E;C89E;110C 116A 11B9;C89E;110C 116A 11B9; # (좞; 좞; 좞; 좞; 좞; ) HANGUL SYLLABLE JWABS
+C89F;C89F;110C 116A 11BA;C89F;110C 116A 11BA; # (좟; 좟; 좟; 좟; 좟; ) HANGUL SYLLABLE JWAS
+C8A0;C8A0;110C 116A 11BB;C8A0;110C 116A 11BB; # (좠; 좠; 좠; 좠; 좠; ) HANGUL SYLLABLE JWASS
+C8A1;C8A1;110C 116A 11BC;C8A1;110C 116A 11BC; # (좡; 좡; 좡; 좡; 좡; ) HANGUL SYLLABLE JWANG
+C8A2;C8A2;110C 116A 11BD;C8A2;110C 116A 11BD; # (좢; 좢; 좢; 좢; 좢; ) HANGUL SYLLABLE JWAJ
+C8A3;C8A3;110C 116A 11BE;C8A3;110C 116A 11BE; # (좣; 좣; 좣; 좣; 좣; ) HANGUL SYLLABLE JWAC
+C8A4;C8A4;110C 116A 11BF;C8A4;110C 116A 11BF; # (좤; 좤; 좤; 좤; 좤; ) HANGUL SYLLABLE JWAK
+C8A5;C8A5;110C 116A 11C0;C8A5;110C 116A 11C0; # (좥; 좥; 좥; 좥; 좥; ) HANGUL SYLLABLE JWAT
+C8A6;C8A6;110C 116A 11C1;C8A6;110C 116A 11C1; # (좦; 좦; 좌á‡; 좦; 좌á‡; ) HANGUL SYLLABLE JWAP
+C8A7;C8A7;110C 116A 11C2;C8A7;110C 116A 11C2; # (좧; 좧; 좧; 좧; 좧; ) HANGUL SYLLABLE JWAH
+C8A8;C8A8;110C 116B;C8A8;110C 116B; # (좨; 좨; 좨; 좨; 좨; ) HANGUL SYLLABLE JWAE
+C8A9;C8A9;110C 116B 11A8;C8A9;110C 116B 11A8; # (좩; 좩; 좩; 좩; 좩; ) HANGUL SYLLABLE JWAEG
+C8AA;C8AA;110C 116B 11A9;C8AA;110C 116B 11A9; # (좪; 좪; 좪; 좪; 좪; ) HANGUL SYLLABLE JWAEGG
+C8AB;C8AB;110C 116B 11AA;C8AB;110C 116B 11AA; # (좫; 좫; 좫; 좫; 좫; ) HANGUL SYLLABLE JWAEGS
+C8AC;C8AC;110C 116B 11AB;C8AC;110C 116B 11AB; # (좬; 좬; 좬; 좬; 좬; ) HANGUL SYLLABLE JWAEN
+C8AD;C8AD;110C 116B 11AC;C8AD;110C 116B 11AC; # (좭; 좭; 좭; 좭; 좭; ) HANGUL SYLLABLE JWAENJ
+C8AE;C8AE;110C 116B 11AD;C8AE;110C 116B 11AD; # (좮; 좮; 좮; 좮; 좮; ) HANGUL SYLLABLE JWAENH
+C8AF;C8AF;110C 116B 11AE;C8AF;110C 116B 11AE; # (좯; 좯; 좯; 좯; 좯; ) HANGUL SYLLABLE JWAED
+C8B0;C8B0;110C 116B 11AF;C8B0;110C 116B 11AF; # (좰; 좰; 좰; 좰; 좰; ) HANGUL SYLLABLE JWAEL
+C8B1;C8B1;110C 116B 11B0;C8B1;110C 116B 11B0; # (좱; 좱; 좱; 좱; 좱; ) HANGUL SYLLABLE JWAELG
+C8B2;C8B2;110C 116B 11B1;C8B2;110C 116B 11B1; # (좲; 좲; 좲; 좲; 좲; ) HANGUL SYLLABLE JWAELM
+C8B3;C8B3;110C 116B 11B2;C8B3;110C 116B 11B2; # (좳; 좳; 좳; 좳; 좳; ) HANGUL SYLLABLE JWAELB
+C8B4;C8B4;110C 116B 11B3;C8B4;110C 116B 11B3; # (좴; 좴; 좴; 좴; 좴; ) HANGUL SYLLABLE JWAELS
+C8B5;C8B5;110C 116B 11B4;C8B5;110C 116B 11B4; # (좵; 좵; 좵; 좵; 좵; ) HANGUL SYLLABLE JWAELT
+C8B6;C8B6;110C 116B 11B5;C8B6;110C 116B 11B5; # (좶; 좶; 좶; 좶; 좶; ) HANGUL SYLLABLE JWAELP
+C8B7;C8B7;110C 116B 11B6;C8B7;110C 116B 11B6; # (좷; 좷; 좷; 좷; 좷; ) HANGUL SYLLABLE JWAELH
+C8B8;C8B8;110C 116B 11B7;C8B8;110C 116B 11B7; # (좸; 좸; 좸; 좸; 좸; ) HANGUL SYLLABLE JWAEM
+C8B9;C8B9;110C 116B 11B8;C8B9;110C 116B 11B8; # (좹; 좹; 좹; 좹; 좹; ) HANGUL SYLLABLE JWAEB
+C8BA;C8BA;110C 116B 11B9;C8BA;110C 116B 11B9; # (좺; 좺; 좺; 좺; 좺; ) HANGUL SYLLABLE JWAEBS
+C8BB;C8BB;110C 116B 11BA;C8BB;110C 116B 11BA; # (좻; 좻; 좻; 좻; 좻; ) HANGUL SYLLABLE JWAES
+C8BC;C8BC;110C 116B 11BB;C8BC;110C 116B 11BB; # (좼; 좼; 좼; 좼; 좼; ) HANGUL SYLLABLE JWAESS
+C8BD;C8BD;110C 116B 11BC;C8BD;110C 116B 11BC; # (좽; 좽; 좽; 좽; 좽; ) HANGUL SYLLABLE JWAENG
+C8BE;C8BE;110C 116B 11BD;C8BE;110C 116B 11BD; # (좾; 좾; 좾; 좾; 좾; ) HANGUL SYLLABLE JWAEJ
+C8BF;C8BF;110C 116B 11BE;C8BF;110C 116B 11BE; # (좿; 좿; 좿; 좿; 좿; ) HANGUL SYLLABLE JWAEC
+C8C0;C8C0;110C 116B 11BF;C8C0;110C 116B 11BF; # (죀; 죀; 죀; 죀; 죀; ) HANGUL SYLLABLE JWAEK
+C8C1;C8C1;110C 116B 11C0;C8C1;110C 116B 11C0; # (ì£; ì£; 죁; ì£; 죁; ) HANGUL SYLLABLE JWAET
+C8C2;C8C2;110C 116B 11C1;C8C2;110C 116B 11C1; # (죂; 죂; 좨á‡; 죂; 좨á‡; ) HANGUL SYLLABLE JWAEP
+C8C3;C8C3;110C 116B 11C2;C8C3;110C 116B 11C2; # (죃; 죃; 죃; 죃; 죃; ) HANGUL SYLLABLE JWAEH
+C8C4;C8C4;110C 116C;C8C4;110C 116C; # (죄; 죄; 죄; 죄; 죄; ) HANGUL SYLLABLE JOE
+C8C5;C8C5;110C 116C 11A8;C8C5;110C 116C 11A8; # (죅; 죅; 죅; 죅; 죅; ) HANGUL SYLLABLE JOEG
+C8C6;C8C6;110C 116C 11A9;C8C6;110C 116C 11A9; # (죆; 죆; 죆; 죆; 죆; ) HANGUL SYLLABLE JOEGG
+C8C7;C8C7;110C 116C 11AA;C8C7;110C 116C 11AA; # (죇; 죇; 죇; 죇; 죇; ) HANGUL SYLLABLE JOEGS
+C8C8;C8C8;110C 116C 11AB;C8C8;110C 116C 11AB; # (죈; 죈; 죈; 죈; 죈; ) HANGUL SYLLABLE JOEN
+C8C9;C8C9;110C 116C 11AC;C8C9;110C 116C 11AC; # (죉; 죉; 죉; 죉; 죉; ) HANGUL SYLLABLE JOENJ
+C8CA;C8CA;110C 116C 11AD;C8CA;110C 116C 11AD; # (죊; 죊; 죊; 죊; 죊; ) HANGUL SYLLABLE JOENH
+C8CB;C8CB;110C 116C 11AE;C8CB;110C 116C 11AE; # (죋; 죋; 죋; 죋; 죋; ) HANGUL SYLLABLE JOED
+C8CC;C8CC;110C 116C 11AF;C8CC;110C 116C 11AF; # (죌; 죌; 죌; 죌; 죌; ) HANGUL SYLLABLE JOEL
+C8CD;C8CD;110C 116C 11B0;C8CD;110C 116C 11B0; # (ì£; ì£; 죍; ì£; 죍; ) HANGUL SYLLABLE JOELG
+C8CE;C8CE;110C 116C 11B1;C8CE;110C 116C 11B1; # (죎; 죎; 죎; 죎; 죎; ) HANGUL SYLLABLE JOELM
+C8CF;C8CF;110C 116C 11B2;C8CF;110C 116C 11B2; # (ì£; ì£; 죏; ì£; 죏; ) HANGUL SYLLABLE JOELB
+C8D0;C8D0;110C 116C 11B3;C8D0;110C 116C 11B3; # (ì£; ì£; 죐; ì£; 죐; ) HANGUL SYLLABLE JOELS
+C8D1;C8D1;110C 116C 11B4;C8D1;110C 116C 11B4; # (죑; 죑; 죑; 죑; 죑; ) HANGUL SYLLABLE JOELT
+C8D2;C8D2;110C 116C 11B5;C8D2;110C 116C 11B5; # (죒; 죒; 죒; 죒; 죒; ) HANGUL SYLLABLE JOELP
+C8D3;C8D3;110C 116C 11B6;C8D3;110C 116C 11B6; # (죓; 죓; 죓; 죓; 죓; ) HANGUL SYLLABLE JOELH
+C8D4;C8D4;110C 116C 11B7;C8D4;110C 116C 11B7; # (죔; 죔; 죔; 죔; 죔; ) HANGUL SYLLABLE JOEM
+C8D5;C8D5;110C 116C 11B8;C8D5;110C 116C 11B8; # (죕; 죕; 죕; 죕; 죕; ) HANGUL SYLLABLE JOEB
+C8D6;C8D6;110C 116C 11B9;C8D6;110C 116C 11B9; # (죖; 죖; 죖; 죖; 죖; ) HANGUL SYLLABLE JOEBS
+C8D7;C8D7;110C 116C 11BA;C8D7;110C 116C 11BA; # (죗; 죗; 죗; 죗; 죗; ) HANGUL SYLLABLE JOES
+C8D8;C8D8;110C 116C 11BB;C8D8;110C 116C 11BB; # (죘; 죘; 죘; 죘; 죘; ) HANGUL SYLLABLE JOESS
+C8D9;C8D9;110C 116C 11BC;C8D9;110C 116C 11BC; # (죙; 죙; 죙; 죙; 죙; ) HANGUL SYLLABLE JOENG
+C8DA;C8DA;110C 116C 11BD;C8DA;110C 116C 11BD; # (죚; 죚; 죚; 죚; 죚; ) HANGUL SYLLABLE JOEJ
+C8DB;C8DB;110C 116C 11BE;C8DB;110C 116C 11BE; # (죛; 죛; 죛; 죛; 죛; ) HANGUL SYLLABLE JOEC
+C8DC;C8DC;110C 116C 11BF;C8DC;110C 116C 11BF; # (죜; 죜; 죜; 죜; 죜; ) HANGUL SYLLABLE JOEK
+C8DD;C8DD;110C 116C 11C0;C8DD;110C 116C 11C0; # (ì£; ì£; 죝; ì£; 죝; ) HANGUL SYLLABLE JOET
+C8DE;C8DE;110C 116C 11C1;C8DE;110C 116C 11C1; # (죞; 죞; 죄á‡; 죞; 죄á‡; ) HANGUL SYLLABLE JOEP
+C8DF;C8DF;110C 116C 11C2;C8DF;110C 116C 11C2; # (죟; 죟; 죟; 죟; 죟; ) HANGUL SYLLABLE JOEH
+C8E0;C8E0;110C 116D;C8E0;110C 116D; # (죠; 죠; 죠; 죠; 죠; ) HANGUL SYLLABLE JYO
+C8E1;C8E1;110C 116D 11A8;C8E1;110C 116D 11A8; # (죡; 죡; 죡; 죡; 죡; ) HANGUL SYLLABLE JYOG
+C8E2;C8E2;110C 116D 11A9;C8E2;110C 116D 11A9; # (죢; 죢; 죢; 죢; 죢; ) HANGUL SYLLABLE JYOGG
+C8E3;C8E3;110C 116D 11AA;C8E3;110C 116D 11AA; # (죣; 죣; 죣; 죣; 죣; ) HANGUL SYLLABLE JYOGS
+C8E4;C8E4;110C 116D 11AB;C8E4;110C 116D 11AB; # (죤; 죤; 죤; 죤; 죤; ) HANGUL SYLLABLE JYON
+C8E5;C8E5;110C 116D 11AC;C8E5;110C 116D 11AC; # (죥; 죥; 죥; 죥; 죥; ) HANGUL SYLLABLE JYONJ
+C8E6;C8E6;110C 116D 11AD;C8E6;110C 116D 11AD; # (죦; 죦; 죦; 죦; 죦; ) HANGUL SYLLABLE JYONH
+C8E7;C8E7;110C 116D 11AE;C8E7;110C 116D 11AE; # (죧; 죧; 죧; 죧; 죧; ) HANGUL SYLLABLE JYOD
+C8E8;C8E8;110C 116D 11AF;C8E8;110C 116D 11AF; # (죨; 죨; 죨; 죨; 죨; ) HANGUL SYLLABLE JYOL
+C8E9;C8E9;110C 116D 11B0;C8E9;110C 116D 11B0; # (죩; 죩; 죩; 죩; 죩; ) HANGUL SYLLABLE JYOLG
+C8EA;C8EA;110C 116D 11B1;C8EA;110C 116D 11B1; # (죪; 죪; 죪; 죪; 죪; ) HANGUL SYLLABLE JYOLM
+C8EB;C8EB;110C 116D 11B2;C8EB;110C 116D 11B2; # (죫; 죫; 죫; 죫; 죫; ) HANGUL SYLLABLE JYOLB
+C8EC;C8EC;110C 116D 11B3;C8EC;110C 116D 11B3; # (죬; 죬; 죬; 죬; 죬; ) HANGUL SYLLABLE JYOLS
+C8ED;C8ED;110C 116D 11B4;C8ED;110C 116D 11B4; # (죭; 죭; 죭; 죭; 죭; ) HANGUL SYLLABLE JYOLT
+C8EE;C8EE;110C 116D 11B5;C8EE;110C 116D 11B5; # (죮; 죮; 죮; 죮; 죮; ) HANGUL SYLLABLE JYOLP
+C8EF;C8EF;110C 116D 11B6;C8EF;110C 116D 11B6; # (죯; 죯; 죯; 죯; 죯; ) HANGUL SYLLABLE JYOLH
+C8F0;C8F0;110C 116D 11B7;C8F0;110C 116D 11B7; # (죰; 죰; 죰; 죰; 죰; ) HANGUL SYLLABLE JYOM
+C8F1;C8F1;110C 116D 11B8;C8F1;110C 116D 11B8; # (죱; 죱; 죱; 죱; 죱; ) HANGUL SYLLABLE JYOB
+C8F2;C8F2;110C 116D 11B9;C8F2;110C 116D 11B9; # (죲; 죲; 죲; 죲; 죲; ) HANGUL SYLLABLE JYOBS
+C8F3;C8F3;110C 116D 11BA;C8F3;110C 116D 11BA; # (죳; 죳; 죳; 죳; 죳; ) HANGUL SYLLABLE JYOS
+C8F4;C8F4;110C 116D 11BB;C8F4;110C 116D 11BB; # (죴; 죴; 죴; 죴; 죴; ) HANGUL SYLLABLE JYOSS
+C8F5;C8F5;110C 116D 11BC;C8F5;110C 116D 11BC; # (죵; 죵; 죵; 죵; 죵; ) HANGUL SYLLABLE JYONG
+C8F6;C8F6;110C 116D 11BD;C8F6;110C 116D 11BD; # (죶; 죶; 죶; 죶; 죶; ) HANGUL SYLLABLE JYOJ
+C8F7;C8F7;110C 116D 11BE;C8F7;110C 116D 11BE; # (죷; 죷; 죷; 죷; 죷; ) HANGUL SYLLABLE JYOC
+C8F8;C8F8;110C 116D 11BF;C8F8;110C 116D 11BF; # (죸; 죸; 죸; 죸; 죸; ) HANGUL SYLLABLE JYOK
+C8F9;C8F9;110C 116D 11C0;C8F9;110C 116D 11C0; # (죹; 죹; 죹; 죹; 죹; ) HANGUL SYLLABLE JYOT
+C8FA;C8FA;110C 116D 11C1;C8FA;110C 116D 11C1; # (죺; 죺; 죠á‡; 죺; 죠á‡; ) HANGUL SYLLABLE JYOP
+C8FB;C8FB;110C 116D 11C2;C8FB;110C 116D 11C2; # (죻; 죻; 죻; 죻; 죻; ) HANGUL SYLLABLE JYOH
+C8FC;C8FC;110C 116E;C8FC;110C 116E; # (주; 주; 주; 주; 주; ) HANGUL SYLLABLE JU
+C8FD;C8FD;110C 116E 11A8;C8FD;110C 116E 11A8; # (죽; 죽; 죽; 죽; 죽; ) HANGUL SYLLABLE JUG
+C8FE;C8FE;110C 116E 11A9;C8FE;110C 116E 11A9; # (죾; 죾; 죾; 죾; 죾; ) HANGUL SYLLABLE JUGG
+C8FF;C8FF;110C 116E 11AA;C8FF;110C 116E 11AA; # (죿; 죿; 죿; 죿; 죿; ) HANGUL SYLLABLE JUGS
+C900;C900;110C 116E 11AB;C900;110C 116E 11AB; # (준; 준; 준; 준; 준; ) HANGUL SYLLABLE JUN
+C901;C901;110C 116E 11AC;C901;110C 116E 11AC; # (ì¤; ì¤; 줁; ì¤; 줁; ) HANGUL SYLLABLE JUNJ
+C902;C902;110C 116E 11AD;C902;110C 116E 11AD; # (줂; 줂; 줂; 줂; 줂; ) HANGUL SYLLABLE JUNH
+C903;C903;110C 116E 11AE;C903;110C 116E 11AE; # (줃; 줃; 줃; 줃; 줃; ) HANGUL SYLLABLE JUD
+C904;C904;110C 116E 11AF;C904;110C 116E 11AF; # (줄; 줄; 줄; 줄; 줄; ) HANGUL SYLLABLE JUL
+C905;C905;110C 116E 11B0;C905;110C 116E 11B0; # (줅; 줅; 줅; 줅; 줅; ) HANGUL SYLLABLE JULG
+C906;C906;110C 116E 11B1;C906;110C 116E 11B1; # (줆; 줆; 줆; 줆; 줆; ) HANGUL SYLLABLE JULM
+C907;C907;110C 116E 11B2;C907;110C 116E 11B2; # (줇; 줇; 줇; 줇; 줇; ) HANGUL SYLLABLE JULB
+C908;C908;110C 116E 11B3;C908;110C 116E 11B3; # (줈; 줈; 줈; 줈; 줈; ) HANGUL SYLLABLE JULS
+C909;C909;110C 116E 11B4;C909;110C 116E 11B4; # (줉; 줉; 줉; 줉; 줉; ) HANGUL SYLLABLE JULT
+C90A;C90A;110C 116E 11B5;C90A;110C 116E 11B5; # (줊; 줊; 줊; 줊; 줊; ) HANGUL SYLLABLE JULP
+C90B;C90B;110C 116E 11B6;C90B;110C 116E 11B6; # (줋; 줋; 줋; 줋; 줋; ) HANGUL SYLLABLE JULH
+C90C;C90C;110C 116E 11B7;C90C;110C 116E 11B7; # (줌; 줌; 줌; 줌; 줌; ) HANGUL SYLLABLE JUM
+C90D;C90D;110C 116E 11B8;C90D;110C 116E 11B8; # (ì¤; ì¤; 줍; ì¤; 줍; ) HANGUL SYLLABLE JUB
+C90E;C90E;110C 116E 11B9;C90E;110C 116E 11B9; # (줎; 줎; 줎; 줎; 줎; ) HANGUL SYLLABLE JUBS
+C90F;C90F;110C 116E 11BA;C90F;110C 116E 11BA; # (ì¤; ì¤; 줏; ì¤; 줏; ) HANGUL SYLLABLE JUS
+C910;C910;110C 116E 11BB;C910;110C 116E 11BB; # (ì¤; ì¤; 줐; ì¤; 줐; ) HANGUL SYLLABLE JUSS
+C911;C911;110C 116E 11BC;C911;110C 116E 11BC; # (중; 중; 중; 중; 중; ) HANGUL SYLLABLE JUNG
+C912;C912;110C 116E 11BD;C912;110C 116E 11BD; # (줒; 줒; 줒; 줒; 줒; ) HANGUL SYLLABLE JUJ
+C913;C913;110C 116E 11BE;C913;110C 116E 11BE; # (줓; 줓; 줓; 줓; 줓; ) HANGUL SYLLABLE JUC
+C914;C914;110C 116E 11BF;C914;110C 116E 11BF; # (줔; 줔; 줔; 줔; 줔; ) HANGUL SYLLABLE JUK
+C915;C915;110C 116E 11C0;C915;110C 116E 11C0; # (줕; 줕; 줕; 줕; 줕; ) HANGUL SYLLABLE JUT
+C916;C916;110C 116E 11C1;C916;110C 116E 11C1; # (줖; 줖; 주á‡; 줖; 주á‡; ) HANGUL SYLLABLE JUP
+C917;C917;110C 116E 11C2;C917;110C 116E 11C2; # (줗; 줗; 줗; 줗; 줗; ) HANGUL SYLLABLE JUH
+C918;C918;110C 116F;C918;110C 116F; # (줘; 줘; 줘; 줘; 줘; ) HANGUL SYLLABLE JWEO
+C919;C919;110C 116F 11A8;C919;110C 116F 11A8; # (줙; 줙; 줙; 줙; 줙; ) HANGUL SYLLABLE JWEOG
+C91A;C91A;110C 116F 11A9;C91A;110C 116F 11A9; # (줚; 줚; 줚; 줚; 줚; ) HANGUL SYLLABLE JWEOGG
+C91B;C91B;110C 116F 11AA;C91B;110C 116F 11AA; # (줛; 줛; 줛; 줛; 줛; ) HANGUL SYLLABLE JWEOGS
+C91C;C91C;110C 116F 11AB;C91C;110C 116F 11AB; # (줜; 줜; 줜; 줜; 줜; ) HANGUL SYLLABLE JWEON
+C91D;C91D;110C 116F 11AC;C91D;110C 116F 11AC; # (ì¤; ì¤; 줝; ì¤; 줝; ) HANGUL SYLLABLE JWEONJ
+C91E;C91E;110C 116F 11AD;C91E;110C 116F 11AD; # (줞; 줞; 줞; 줞; 줞; ) HANGUL SYLLABLE JWEONH
+C91F;C91F;110C 116F 11AE;C91F;110C 116F 11AE; # (줟; 줟; 줟; 줟; 줟; ) HANGUL SYLLABLE JWEOD
+C920;C920;110C 116F 11AF;C920;110C 116F 11AF; # (줠; 줠; 줠; 줠; 줠; ) HANGUL SYLLABLE JWEOL
+C921;C921;110C 116F 11B0;C921;110C 116F 11B0; # (줡; 줡; 줡; 줡; 줡; ) HANGUL SYLLABLE JWEOLG
+C922;C922;110C 116F 11B1;C922;110C 116F 11B1; # (줢; 줢; 줢; 줢; 줢; ) HANGUL SYLLABLE JWEOLM
+C923;C923;110C 116F 11B2;C923;110C 116F 11B2; # (줣; 줣; 줣; 줣; 줣; ) HANGUL SYLLABLE JWEOLB
+C924;C924;110C 116F 11B3;C924;110C 116F 11B3; # (줤; 줤; 줤; 줤; 줤; ) HANGUL SYLLABLE JWEOLS
+C925;C925;110C 116F 11B4;C925;110C 116F 11B4; # (줥; 줥; 줥; 줥; 줥; ) HANGUL SYLLABLE JWEOLT
+C926;C926;110C 116F 11B5;C926;110C 116F 11B5; # (줦; 줦; 줦; 줦; 줦; ) HANGUL SYLLABLE JWEOLP
+C927;C927;110C 116F 11B6;C927;110C 116F 11B6; # (줧; 줧; 줧; 줧; 줧; ) HANGUL SYLLABLE JWEOLH
+C928;C928;110C 116F 11B7;C928;110C 116F 11B7; # (줨; 줨; 줨; 줨; 줨; ) HANGUL SYLLABLE JWEOM
+C929;C929;110C 116F 11B8;C929;110C 116F 11B8; # (줩; 줩; 줩; 줩; 줩; ) HANGUL SYLLABLE JWEOB
+C92A;C92A;110C 116F 11B9;C92A;110C 116F 11B9; # (줪; 줪; 줪; 줪; 줪; ) HANGUL SYLLABLE JWEOBS
+C92B;C92B;110C 116F 11BA;C92B;110C 116F 11BA; # (줫; 줫; 줫; 줫; 줫; ) HANGUL SYLLABLE JWEOS
+C92C;C92C;110C 116F 11BB;C92C;110C 116F 11BB; # (줬; 줬; 줬; 줬; 줬; ) HANGUL SYLLABLE JWEOSS
+C92D;C92D;110C 116F 11BC;C92D;110C 116F 11BC; # (줭; 줭; 줭; 줭; 줭; ) HANGUL SYLLABLE JWEONG
+C92E;C92E;110C 116F 11BD;C92E;110C 116F 11BD; # (줮; 줮; 줮; 줮; 줮; ) HANGUL SYLLABLE JWEOJ
+C92F;C92F;110C 116F 11BE;C92F;110C 116F 11BE; # (줯; 줯; 줯; 줯; 줯; ) HANGUL SYLLABLE JWEOC
+C930;C930;110C 116F 11BF;C930;110C 116F 11BF; # (줰; 줰; 줰; 줰; 줰; ) HANGUL SYLLABLE JWEOK
+C931;C931;110C 116F 11C0;C931;110C 116F 11C0; # (줱; 줱; 줱; 줱; 줱; ) HANGUL SYLLABLE JWEOT
+C932;C932;110C 116F 11C1;C932;110C 116F 11C1; # (줲; 줲; 줘á‡; 줲; 줘á‡; ) HANGUL SYLLABLE JWEOP
+C933;C933;110C 116F 11C2;C933;110C 116F 11C2; # (줳; 줳; 줳; 줳; 줳; ) HANGUL SYLLABLE JWEOH
+C934;C934;110C 1170;C934;110C 1170; # (줴; 줴; 줴; 줴; 줴; ) HANGUL SYLLABLE JWE
+C935;C935;110C 1170 11A8;C935;110C 1170 11A8; # (줵; 줵; 줵; 줵; 줵; ) HANGUL SYLLABLE JWEG
+C936;C936;110C 1170 11A9;C936;110C 1170 11A9; # (줶; 줶; 줶; 줶; 줶; ) HANGUL SYLLABLE JWEGG
+C937;C937;110C 1170 11AA;C937;110C 1170 11AA; # (줷; 줷; 줷; 줷; 줷; ) HANGUL SYLLABLE JWEGS
+C938;C938;110C 1170 11AB;C938;110C 1170 11AB; # (줸; 줸; 줸; 줸; 줸; ) HANGUL SYLLABLE JWEN
+C939;C939;110C 1170 11AC;C939;110C 1170 11AC; # (줹; 줹; 줹; 줹; 줹; ) HANGUL SYLLABLE JWENJ
+C93A;C93A;110C 1170 11AD;C93A;110C 1170 11AD; # (줺; 줺; 줺; 줺; 줺; ) HANGUL SYLLABLE JWENH
+C93B;C93B;110C 1170 11AE;C93B;110C 1170 11AE; # (줻; 줻; 줻; 줻; 줻; ) HANGUL SYLLABLE JWED
+C93C;C93C;110C 1170 11AF;C93C;110C 1170 11AF; # (줼; 줼; 줼; 줼; 줼; ) HANGUL SYLLABLE JWEL
+C93D;C93D;110C 1170 11B0;C93D;110C 1170 11B0; # (줽; 줽; 줽; 줽; 줽; ) HANGUL SYLLABLE JWELG
+C93E;C93E;110C 1170 11B1;C93E;110C 1170 11B1; # (줾; 줾; 줾; 줾; 줾; ) HANGUL SYLLABLE JWELM
+C93F;C93F;110C 1170 11B2;C93F;110C 1170 11B2; # (줿; 줿; 줿; 줿; 줿; ) HANGUL SYLLABLE JWELB
+C940;C940;110C 1170 11B3;C940;110C 1170 11B3; # (쥀; 쥀; 쥀; 쥀; 쥀; ) HANGUL SYLLABLE JWELS
+C941;C941;110C 1170 11B4;C941;110C 1170 11B4; # (ì¥; ì¥; 쥁; ì¥; 쥁; ) HANGUL SYLLABLE JWELT
+C942;C942;110C 1170 11B5;C942;110C 1170 11B5; # (쥂; 쥂; 쥂; 쥂; 쥂; ) HANGUL SYLLABLE JWELP
+C943;C943;110C 1170 11B6;C943;110C 1170 11B6; # (쥃; 쥃; 쥃; 쥃; 쥃; ) HANGUL SYLLABLE JWELH
+C944;C944;110C 1170 11B7;C944;110C 1170 11B7; # (쥄; 쥄; 쥄; 쥄; 쥄; ) HANGUL SYLLABLE JWEM
+C945;C945;110C 1170 11B8;C945;110C 1170 11B8; # (쥅; 쥅; 쥅; 쥅; 쥅; ) HANGUL SYLLABLE JWEB
+C946;C946;110C 1170 11B9;C946;110C 1170 11B9; # (쥆; 쥆; 쥆; 쥆; 쥆; ) HANGUL SYLLABLE JWEBS
+C947;C947;110C 1170 11BA;C947;110C 1170 11BA; # (쥇; 쥇; 쥇; 쥇; 쥇; ) HANGUL SYLLABLE JWES
+C948;C948;110C 1170 11BB;C948;110C 1170 11BB; # (쥈; 쥈; 쥈; 쥈; 쥈; ) HANGUL SYLLABLE JWESS
+C949;C949;110C 1170 11BC;C949;110C 1170 11BC; # (쥉; 쥉; 쥉; 쥉; 쥉; ) HANGUL SYLLABLE JWENG
+C94A;C94A;110C 1170 11BD;C94A;110C 1170 11BD; # (쥊; 쥊; 쥊; 쥊; 쥊; ) HANGUL SYLLABLE JWEJ
+C94B;C94B;110C 1170 11BE;C94B;110C 1170 11BE; # (쥋; 쥋; 쥋; 쥋; 쥋; ) HANGUL SYLLABLE JWEC
+C94C;C94C;110C 1170 11BF;C94C;110C 1170 11BF; # (쥌; 쥌; 쥌; 쥌; 쥌; ) HANGUL SYLLABLE JWEK
+C94D;C94D;110C 1170 11C0;C94D;110C 1170 11C0; # (ì¥; ì¥; 쥍; ì¥; 쥍; ) HANGUL SYLLABLE JWET
+C94E;C94E;110C 1170 11C1;C94E;110C 1170 11C1; # (쥎; 쥎; 줴á‡; 쥎; 줴á‡; ) HANGUL SYLLABLE JWEP
+C94F;C94F;110C 1170 11C2;C94F;110C 1170 11C2; # (ì¥; ì¥; 쥏; ì¥; 쥏; ) HANGUL SYLLABLE JWEH
+C950;C950;110C 1171;C950;110C 1171; # (ì¥; ì¥; 쥐; ì¥; 쥐; ) HANGUL SYLLABLE JWI
+C951;C951;110C 1171 11A8;C951;110C 1171 11A8; # (쥑; 쥑; 쥑; 쥑; 쥑; ) HANGUL SYLLABLE JWIG
+C952;C952;110C 1171 11A9;C952;110C 1171 11A9; # (쥒; 쥒; 쥒; 쥒; 쥒; ) HANGUL SYLLABLE JWIGG
+C953;C953;110C 1171 11AA;C953;110C 1171 11AA; # (쥓; 쥓; 쥓; 쥓; 쥓; ) HANGUL SYLLABLE JWIGS
+C954;C954;110C 1171 11AB;C954;110C 1171 11AB; # (쥔; 쥔; 쥔; 쥔; 쥔; ) HANGUL SYLLABLE JWIN
+C955;C955;110C 1171 11AC;C955;110C 1171 11AC; # (쥕; 쥕; 쥕; 쥕; 쥕; ) HANGUL SYLLABLE JWINJ
+C956;C956;110C 1171 11AD;C956;110C 1171 11AD; # (쥖; 쥖; 쥖; 쥖; 쥖; ) HANGUL SYLLABLE JWINH
+C957;C957;110C 1171 11AE;C957;110C 1171 11AE; # (쥗; 쥗; 쥗; 쥗; 쥗; ) HANGUL SYLLABLE JWID
+C958;C958;110C 1171 11AF;C958;110C 1171 11AF; # (쥘; 쥘; 쥘; 쥘; 쥘; ) HANGUL SYLLABLE JWIL
+C959;C959;110C 1171 11B0;C959;110C 1171 11B0; # (쥙; 쥙; 쥙; 쥙; 쥙; ) HANGUL SYLLABLE JWILG
+C95A;C95A;110C 1171 11B1;C95A;110C 1171 11B1; # (쥚; 쥚; 쥚; 쥚; 쥚; ) HANGUL SYLLABLE JWILM
+C95B;C95B;110C 1171 11B2;C95B;110C 1171 11B2; # (쥛; 쥛; 쥛; 쥛; 쥛; ) HANGUL SYLLABLE JWILB
+C95C;C95C;110C 1171 11B3;C95C;110C 1171 11B3; # (쥜; 쥜; 쥜; 쥜; 쥜; ) HANGUL SYLLABLE JWILS
+C95D;C95D;110C 1171 11B4;C95D;110C 1171 11B4; # (ì¥; ì¥; 쥝; ì¥; 쥝; ) HANGUL SYLLABLE JWILT
+C95E;C95E;110C 1171 11B5;C95E;110C 1171 11B5; # (쥞; 쥞; 쥞; 쥞; 쥞; ) HANGUL SYLLABLE JWILP
+C95F;C95F;110C 1171 11B6;C95F;110C 1171 11B6; # (쥟; 쥟; 쥟; 쥟; 쥟; ) HANGUL SYLLABLE JWILH
+C960;C960;110C 1171 11B7;C960;110C 1171 11B7; # (쥠; 쥠; 쥠; 쥠; 쥠; ) HANGUL SYLLABLE JWIM
+C961;C961;110C 1171 11B8;C961;110C 1171 11B8; # (쥡; 쥡; 쥡; 쥡; 쥡; ) HANGUL SYLLABLE JWIB
+C962;C962;110C 1171 11B9;C962;110C 1171 11B9; # (쥢; 쥢; 쥢; 쥢; 쥢; ) HANGUL SYLLABLE JWIBS
+C963;C963;110C 1171 11BA;C963;110C 1171 11BA; # (쥣; 쥣; 쥣; 쥣; 쥣; ) HANGUL SYLLABLE JWIS
+C964;C964;110C 1171 11BB;C964;110C 1171 11BB; # (쥤; 쥤; 쥤; 쥤; 쥤; ) HANGUL SYLLABLE JWISS
+C965;C965;110C 1171 11BC;C965;110C 1171 11BC; # (쥥; 쥥; 쥥; 쥥; 쥥; ) HANGUL SYLLABLE JWING
+C966;C966;110C 1171 11BD;C966;110C 1171 11BD; # (쥦; 쥦; 쥦; 쥦; 쥦; ) HANGUL SYLLABLE JWIJ
+C967;C967;110C 1171 11BE;C967;110C 1171 11BE; # (쥧; 쥧; 쥧; 쥧; 쥧; ) HANGUL SYLLABLE JWIC
+C968;C968;110C 1171 11BF;C968;110C 1171 11BF; # (쥨; 쥨; 쥨; 쥨; 쥨; ) HANGUL SYLLABLE JWIK
+C969;C969;110C 1171 11C0;C969;110C 1171 11C0; # (쥩; 쥩; 쥩; 쥩; 쥩; ) HANGUL SYLLABLE JWIT
+C96A;C96A;110C 1171 11C1;C96A;110C 1171 11C1; # (쥪; 쥪; 쥐á‡; 쥪; 쥐á‡; ) HANGUL SYLLABLE JWIP
+C96B;C96B;110C 1171 11C2;C96B;110C 1171 11C2; # (쥫; 쥫; 쥫; 쥫; 쥫; ) HANGUL SYLLABLE JWIH
+C96C;C96C;110C 1172;C96C;110C 1172; # (쥬; 쥬; 쥬; 쥬; 쥬; ) HANGUL SYLLABLE JYU
+C96D;C96D;110C 1172 11A8;C96D;110C 1172 11A8; # (쥭; 쥭; 쥭; 쥭; 쥭; ) HANGUL SYLLABLE JYUG
+C96E;C96E;110C 1172 11A9;C96E;110C 1172 11A9; # (쥮; 쥮; 쥮; 쥮; 쥮; ) HANGUL SYLLABLE JYUGG
+C96F;C96F;110C 1172 11AA;C96F;110C 1172 11AA; # (쥯; 쥯; 쥯; 쥯; 쥯; ) HANGUL SYLLABLE JYUGS
+C970;C970;110C 1172 11AB;C970;110C 1172 11AB; # (쥰; 쥰; 쥰; 쥰; 쥰; ) HANGUL SYLLABLE JYUN
+C971;C971;110C 1172 11AC;C971;110C 1172 11AC; # (쥱; 쥱; 쥱; 쥱; 쥱; ) HANGUL SYLLABLE JYUNJ
+C972;C972;110C 1172 11AD;C972;110C 1172 11AD; # (쥲; 쥲; 쥲; 쥲; 쥲; ) HANGUL SYLLABLE JYUNH
+C973;C973;110C 1172 11AE;C973;110C 1172 11AE; # (쥳; 쥳; 쥳; 쥳; 쥳; ) HANGUL SYLLABLE JYUD
+C974;C974;110C 1172 11AF;C974;110C 1172 11AF; # (쥴; 쥴; 쥴; 쥴; 쥴; ) HANGUL SYLLABLE JYUL
+C975;C975;110C 1172 11B0;C975;110C 1172 11B0; # (쥵; 쥵; 쥵; 쥵; 쥵; ) HANGUL SYLLABLE JYULG
+C976;C976;110C 1172 11B1;C976;110C 1172 11B1; # (쥶; 쥶; 쥶; 쥶; 쥶; ) HANGUL SYLLABLE JYULM
+C977;C977;110C 1172 11B2;C977;110C 1172 11B2; # (쥷; 쥷; 쥷; 쥷; 쥷; ) HANGUL SYLLABLE JYULB
+C978;C978;110C 1172 11B3;C978;110C 1172 11B3; # (쥸; 쥸; 쥸; 쥸; 쥸; ) HANGUL SYLLABLE JYULS
+C979;C979;110C 1172 11B4;C979;110C 1172 11B4; # (쥹; 쥹; 쥹; 쥹; 쥹; ) HANGUL SYLLABLE JYULT
+C97A;C97A;110C 1172 11B5;C97A;110C 1172 11B5; # (쥺; 쥺; 쥺; 쥺; 쥺; ) HANGUL SYLLABLE JYULP
+C97B;C97B;110C 1172 11B6;C97B;110C 1172 11B6; # (쥻; 쥻; 쥻; 쥻; 쥻; ) HANGUL SYLLABLE JYULH
+C97C;C97C;110C 1172 11B7;C97C;110C 1172 11B7; # (쥼; 쥼; 쥼; 쥼; 쥼; ) HANGUL SYLLABLE JYUM
+C97D;C97D;110C 1172 11B8;C97D;110C 1172 11B8; # (쥽; 쥽; 쥽; 쥽; 쥽; ) HANGUL SYLLABLE JYUB
+C97E;C97E;110C 1172 11B9;C97E;110C 1172 11B9; # (쥾; 쥾; 쥾; 쥾; 쥾; ) HANGUL SYLLABLE JYUBS
+C97F;C97F;110C 1172 11BA;C97F;110C 1172 11BA; # (쥿; 쥿; 쥿; 쥿; 쥿; ) HANGUL SYLLABLE JYUS
+C980;C980;110C 1172 11BB;C980;110C 1172 11BB; # (즀; 즀; 즀; 즀; 즀; ) HANGUL SYLLABLE JYUSS
+C981;C981;110C 1172 11BC;C981;110C 1172 11BC; # (ì¦; ì¦; 즁; ì¦; 즁; ) HANGUL SYLLABLE JYUNG
+C982;C982;110C 1172 11BD;C982;110C 1172 11BD; # (즂; 즂; 즂; 즂; 즂; ) HANGUL SYLLABLE JYUJ
+C983;C983;110C 1172 11BE;C983;110C 1172 11BE; # (즃; 즃; 즃; 즃; 즃; ) HANGUL SYLLABLE JYUC
+C984;C984;110C 1172 11BF;C984;110C 1172 11BF; # (즄; 즄; 즄; 즄; 즄; ) HANGUL SYLLABLE JYUK
+C985;C985;110C 1172 11C0;C985;110C 1172 11C0; # (즅; 즅; 즅; 즅; 즅; ) HANGUL SYLLABLE JYUT
+C986;C986;110C 1172 11C1;C986;110C 1172 11C1; # (즆; 즆; 쥬á‡; 즆; 쥬á‡; ) HANGUL SYLLABLE JYUP
+C987;C987;110C 1172 11C2;C987;110C 1172 11C2; # (즇; 즇; 즇; 즇; 즇; ) HANGUL SYLLABLE JYUH
+C988;C988;110C 1173;C988;110C 1173; # (즈; 즈; 즈; 즈; 즈; ) HANGUL SYLLABLE JEU
+C989;C989;110C 1173 11A8;C989;110C 1173 11A8; # (즉; 즉; 즉; 즉; 즉; ) HANGUL SYLLABLE JEUG
+C98A;C98A;110C 1173 11A9;C98A;110C 1173 11A9; # (즊; 즊; 즊; 즊; 즊; ) HANGUL SYLLABLE JEUGG
+C98B;C98B;110C 1173 11AA;C98B;110C 1173 11AA; # (즋; 즋; 즋; 즋; 즋; ) HANGUL SYLLABLE JEUGS
+C98C;C98C;110C 1173 11AB;C98C;110C 1173 11AB; # (즌; 즌; 즌; 즌; 즌; ) HANGUL SYLLABLE JEUN
+C98D;C98D;110C 1173 11AC;C98D;110C 1173 11AC; # (ì¦; ì¦; 즍; ì¦; 즍; ) HANGUL SYLLABLE JEUNJ
+C98E;C98E;110C 1173 11AD;C98E;110C 1173 11AD; # (즎; 즎; 즎; 즎; 즎; ) HANGUL SYLLABLE JEUNH
+C98F;C98F;110C 1173 11AE;C98F;110C 1173 11AE; # (ì¦; ì¦; 즏; ì¦; 즏; ) HANGUL SYLLABLE JEUD
+C990;C990;110C 1173 11AF;C990;110C 1173 11AF; # (ì¦; ì¦; 즐; ì¦; 즐; ) HANGUL SYLLABLE JEUL
+C991;C991;110C 1173 11B0;C991;110C 1173 11B0; # (즑; 즑; 즑; 즑; 즑; ) HANGUL SYLLABLE JEULG
+C992;C992;110C 1173 11B1;C992;110C 1173 11B1; # (즒; 즒; 즒; 즒; 즒; ) HANGUL SYLLABLE JEULM
+C993;C993;110C 1173 11B2;C993;110C 1173 11B2; # (즓; 즓; 즓; 즓; 즓; ) HANGUL SYLLABLE JEULB
+C994;C994;110C 1173 11B3;C994;110C 1173 11B3; # (즔; 즔; 즔; 즔; 즔; ) HANGUL SYLLABLE JEULS
+C995;C995;110C 1173 11B4;C995;110C 1173 11B4; # (즕; 즕; 즕; 즕; 즕; ) HANGUL SYLLABLE JEULT
+C996;C996;110C 1173 11B5;C996;110C 1173 11B5; # (즖; 즖; 즖; 즖; 즖; ) HANGUL SYLLABLE JEULP
+C997;C997;110C 1173 11B6;C997;110C 1173 11B6; # (즗; 즗; 즗; 즗; 즗; ) HANGUL SYLLABLE JEULH
+C998;C998;110C 1173 11B7;C998;110C 1173 11B7; # (즘; 즘; 즘; 즘; 즘; ) HANGUL SYLLABLE JEUM
+C999;C999;110C 1173 11B8;C999;110C 1173 11B8; # (즙; 즙; 즙; 즙; 즙; ) HANGUL SYLLABLE JEUB
+C99A;C99A;110C 1173 11B9;C99A;110C 1173 11B9; # (즚; 즚; 즚; 즚; 즚; ) HANGUL SYLLABLE JEUBS
+C99B;C99B;110C 1173 11BA;C99B;110C 1173 11BA; # (즛; 즛; 즛; 즛; 즛; ) HANGUL SYLLABLE JEUS
+C99C;C99C;110C 1173 11BB;C99C;110C 1173 11BB; # (즜; 즜; 즜; 즜; 즜; ) HANGUL SYLLABLE JEUSS
+C99D;C99D;110C 1173 11BC;C99D;110C 1173 11BC; # (ì¦; ì¦; 증; ì¦; 증; ) HANGUL SYLLABLE JEUNG
+C99E;C99E;110C 1173 11BD;C99E;110C 1173 11BD; # (즞; 즞; 즞; 즞; 즞; ) HANGUL SYLLABLE JEUJ
+C99F;C99F;110C 1173 11BE;C99F;110C 1173 11BE; # (즟; 즟; 즟; 즟; 즟; ) HANGUL SYLLABLE JEUC
+C9A0;C9A0;110C 1173 11BF;C9A0;110C 1173 11BF; # (즠; 즠; 즠; 즠; 즠; ) HANGUL SYLLABLE JEUK
+C9A1;C9A1;110C 1173 11C0;C9A1;110C 1173 11C0; # (즡; 즡; 즡; 즡; 즡; ) HANGUL SYLLABLE JEUT
+C9A2;C9A2;110C 1173 11C1;C9A2;110C 1173 11C1; # (즢; 즢; 즈á‡; 즢; 즈á‡; ) HANGUL SYLLABLE JEUP
+C9A3;C9A3;110C 1173 11C2;C9A3;110C 1173 11C2; # (즣; 즣; 즣; 즣; 즣; ) HANGUL SYLLABLE JEUH
+C9A4;C9A4;110C 1174;C9A4;110C 1174; # (즤; 즤; 즤; 즤; 즤; ) HANGUL SYLLABLE JYI
+C9A5;C9A5;110C 1174 11A8;C9A5;110C 1174 11A8; # (즥; 즥; 즥; 즥; 즥; ) HANGUL SYLLABLE JYIG
+C9A6;C9A6;110C 1174 11A9;C9A6;110C 1174 11A9; # (즦; 즦; 즦; 즦; 즦; ) HANGUL SYLLABLE JYIGG
+C9A7;C9A7;110C 1174 11AA;C9A7;110C 1174 11AA; # (즧; 즧; 즧; 즧; 즧; ) HANGUL SYLLABLE JYIGS
+C9A8;C9A8;110C 1174 11AB;C9A8;110C 1174 11AB; # (즨; 즨; 즨; 즨; 즨; ) HANGUL SYLLABLE JYIN
+C9A9;C9A9;110C 1174 11AC;C9A9;110C 1174 11AC; # (즩; 즩; 즩; 즩; 즩; ) HANGUL SYLLABLE JYINJ
+C9AA;C9AA;110C 1174 11AD;C9AA;110C 1174 11AD; # (즪; 즪; 즪; 즪; 즪; ) HANGUL SYLLABLE JYINH
+C9AB;C9AB;110C 1174 11AE;C9AB;110C 1174 11AE; # (즫; 즫; 즫; 즫; 즫; ) HANGUL SYLLABLE JYID
+C9AC;C9AC;110C 1174 11AF;C9AC;110C 1174 11AF; # (즬; 즬; 즬; 즬; 즬; ) HANGUL SYLLABLE JYIL
+C9AD;C9AD;110C 1174 11B0;C9AD;110C 1174 11B0; # (즭; 즭; 즭; 즭; 즭; ) HANGUL SYLLABLE JYILG
+C9AE;C9AE;110C 1174 11B1;C9AE;110C 1174 11B1; # (즮; 즮; 즮; 즮; 즮; ) HANGUL SYLLABLE JYILM
+C9AF;C9AF;110C 1174 11B2;C9AF;110C 1174 11B2; # (즯; 즯; 즯; 즯; 즯; ) HANGUL SYLLABLE JYILB
+C9B0;C9B0;110C 1174 11B3;C9B0;110C 1174 11B3; # (즰; 즰; 즰; 즰; 즰; ) HANGUL SYLLABLE JYILS
+C9B1;C9B1;110C 1174 11B4;C9B1;110C 1174 11B4; # (즱; 즱; 즱; 즱; 즱; ) HANGUL SYLLABLE JYILT
+C9B2;C9B2;110C 1174 11B5;C9B2;110C 1174 11B5; # (즲; 즲; 즲; 즲; 즲; ) HANGUL SYLLABLE JYILP
+C9B3;C9B3;110C 1174 11B6;C9B3;110C 1174 11B6; # (즳; 즳; 즳; 즳; 즳; ) HANGUL SYLLABLE JYILH
+C9B4;C9B4;110C 1174 11B7;C9B4;110C 1174 11B7; # (즴; 즴; 즴; 즴; 즴; ) HANGUL SYLLABLE JYIM
+C9B5;C9B5;110C 1174 11B8;C9B5;110C 1174 11B8; # (즵; 즵; 즵; 즵; 즵; ) HANGUL SYLLABLE JYIB
+C9B6;C9B6;110C 1174 11B9;C9B6;110C 1174 11B9; # (즶; 즶; 즶; 즶; 즶; ) HANGUL SYLLABLE JYIBS
+C9B7;C9B7;110C 1174 11BA;C9B7;110C 1174 11BA; # (즷; 즷; 즷; 즷; 즷; ) HANGUL SYLLABLE JYIS
+C9B8;C9B8;110C 1174 11BB;C9B8;110C 1174 11BB; # (즸; 즸; 즸; 즸; 즸; ) HANGUL SYLLABLE JYISS
+C9B9;C9B9;110C 1174 11BC;C9B9;110C 1174 11BC; # (즹; 즹; 즹; 즹; 즹; ) HANGUL SYLLABLE JYING
+C9BA;C9BA;110C 1174 11BD;C9BA;110C 1174 11BD; # (즺; 즺; 즺; 즺; 즺; ) HANGUL SYLLABLE JYIJ
+C9BB;C9BB;110C 1174 11BE;C9BB;110C 1174 11BE; # (즻; 즻; 즻; 즻; 즻; ) HANGUL SYLLABLE JYIC
+C9BC;C9BC;110C 1174 11BF;C9BC;110C 1174 11BF; # (즼; 즼; 즼; 즼; 즼; ) HANGUL SYLLABLE JYIK
+C9BD;C9BD;110C 1174 11C0;C9BD;110C 1174 11C0; # (즽; 즽; 즽; 즽; 즽; ) HANGUL SYLLABLE JYIT
+C9BE;C9BE;110C 1174 11C1;C9BE;110C 1174 11C1; # (즾; 즾; 즤á‡; 즾; 즤á‡; ) HANGUL SYLLABLE JYIP
+C9BF;C9BF;110C 1174 11C2;C9BF;110C 1174 11C2; # (즿; 즿; 즿; 즿; 즿; ) HANGUL SYLLABLE JYIH
+C9C0;C9C0;110C 1175;C9C0;110C 1175; # (지; 지; 지; 지; 지; ) HANGUL SYLLABLE JI
+C9C1;C9C1;110C 1175 11A8;C9C1;110C 1175 11A8; # (ì§; ì§; 직; ì§; 직; ) HANGUL SYLLABLE JIG
+C9C2;C9C2;110C 1175 11A9;C9C2;110C 1175 11A9; # (짂; 짂; 짂; 짂; 짂; ) HANGUL SYLLABLE JIGG
+C9C3;C9C3;110C 1175 11AA;C9C3;110C 1175 11AA; # (짃; 짃; 짃; 짃; 짃; ) HANGUL SYLLABLE JIGS
+C9C4;C9C4;110C 1175 11AB;C9C4;110C 1175 11AB; # (진; 진; 진; 진; 진; ) HANGUL SYLLABLE JIN
+C9C5;C9C5;110C 1175 11AC;C9C5;110C 1175 11AC; # (짅; 짅; 짅; 짅; 짅; ) HANGUL SYLLABLE JINJ
+C9C6;C9C6;110C 1175 11AD;C9C6;110C 1175 11AD; # (짆; 짆; 짆; 짆; 짆; ) HANGUL SYLLABLE JINH
+C9C7;C9C7;110C 1175 11AE;C9C7;110C 1175 11AE; # (짇; 짇; 짇; 짇; 짇; ) HANGUL SYLLABLE JID
+C9C8;C9C8;110C 1175 11AF;C9C8;110C 1175 11AF; # (질; 질; 질; 질; 질; ) HANGUL SYLLABLE JIL
+C9C9;C9C9;110C 1175 11B0;C9C9;110C 1175 11B0; # (짉; 짉; 짉; 짉; 짉; ) HANGUL SYLLABLE JILG
+C9CA;C9CA;110C 1175 11B1;C9CA;110C 1175 11B1; # (짊; 짊; 짊; 짊; 짊; ) HANGUL SYLLABLE JILM
+C9CB;C9CB;110C 1175 11B2;C9CB;110C 1175 11B2; # (짋; 짋; 짋; 짋; 짋; ) HANGUL SYLLABLE JILB
+C9CC;C9CC;110C 1175 11B3;C9CC;110C 1175 11B3; # (짌; 짌; 짌; 짌; 짌; ) HANGUL SYLLABLE JILS
+C9CD;C9CD;110C 1175 11B4;C9CD;110C 1175 11B4; # (ì§; ì§; 짍; ì§; 짍; ) HANGUL SYLLABLE JILT
+C9CE;C9CE;110C 1175 11B5;C9CE;110C 1175 11B5; # (짎; 짎; 짎; 짎; 짎; ) HANGUL SYLLABLE JILP
+C9CF;C9CF;110C 1175 11B6;C9CF;110C 1175 11B6; # (ì§; ì§; 짏; ì§; 짏; ) HANGUL SYLLABLE JILH
+C9D0;C9D0;110C 1175 11B7;C9D0;110C 1175 11B7; # (ì§; ì§; 짐; ì§; 짐; ) HANGUL SYLLABLE JIM
+C9D1;C9D1;110C 1175 11B8;C9D1;110C 1175 11B8; # (집; 집; 집; 집; 집; ) HANGUL SYLLABLE JIB
+C9D2;C9D2;110C 1175 11B9;C9D2;110C 1175 11B9; # (짒; 짒; 짒; 짒; 짒; ) HANGUL SYLLABLE JIBS
+C9D3;C9D3;110C 1175 11BA;C9D3;110C 1175 11BA; # (짓; 짓; 짓; 짓; 짓; ) HANGUL SYLLABLE JIS
+C9D4;C9D4;110C 1175 11BB;C9D4;110C 1175 11BB; # (짔; 짔; 짔; 짔; 짔; ) HANGUL SYLLABLE JISS
+C9D5;C9D5;110C 1175 11BC;C9D5;110C 1175 11BC; # (징; 징; 징; 징; 징; ) HANGUL SYLLABLE JING
+C9D6;C9D6;110C 1175 11BD;C9D6;110C 1175 11BD; # (짖; 짖; 짖; 짖; 짖; ) HANGUL SYLLABLE JIJ
+C9D7;C9D7;110C 1175 11BE;C9D7;110C 1175 11BE; # (짗; 짗; 짗; 짗; 짗; ) HANGUL SYLLABLE JIC
+C9D8;C9D8;110C 1175 11BF;C9D8;110C 1175 11BF; # (짘; 짘; 짘; 짘; 짘; ) HANGUL SYLLABLE JIK
+C9D9;C9D9;110C 1175 11C0;C9D9;110C 1175 11C0; # (짙; 짙; 짙; 짙; 짙; ) HANGUL SYLLABLE JIT
+C9DA;C9DA;110C 1175 11C1;C9DA;110C 1175 11C1; # (짚; 짚; 지á‡; 짚; 지á‡; ) HANGUL SYLLABLE JIP
+C9DB;C9DB;110C 1175 11C2;C9DB;110C 1175 11C2; # (짛; 짛; 짛; 짛; 짛; ) HANGUL SYLLABLE JIH
+C9DC;C9DC;110D 1161;C9DC;110D 1161; # (짜; 짜; á„á…¡; 짜; á„á…¡; ) HANGUL SYLLABLE JJA
+C9DD;C9DD;110D 1161 11A8;C9DD;110D 1161 11A8; # (ì§; ì§; á„ᅡᆨ; ì§; á„ᅡᆨ; ) HANGUL SYLLABLE JJAG
+C9DE;C9DE;110D 1161 11A9;C9DE;110D 1161 11A9; # (짞; 짞; á„ᅡᆩ; 짞; á„ᅡᆩ; ) HANGUL SYLLABLE JJAGG
+C9DF;C9DF;110D 1161 11AA;C9DF;110D 1161 11AA; # (짟; 짟; á„ᅡᆪ; 짟; á„ᅡᆪ; ) HANGUL SYLLABLE JJAGS
+C9E0;C9E0;110D 1161 11AB;C9E0;110D 1161 11AB; # (짠; 짠; á„ᅡᆫ; 짠; á„ᅡᆫ; ) HANGUL SYLLABLE JJAN
+C9E1;C9E1;110D 1161 11AC;C9E1;110D 1161 11AC; # (짡; 짡; á„ᅡᆬ; 짡; á„ᅡᆬ; ) HANGUL SYLLABLE JJANJ
+C9E2;C9E2;110D 1161 11AD;C9E2;110D 1161 11AD; # (짢; 짢; á„ᅡᆭ; 짢; á„ᅡᆭ; ) HANGUL SYLLABLE JJANH
+C9E3;C9E3;110D 1161 11AE;C9E3;110D 1161 11AE; # (짣; 짣; á„ᅡᆮ; 짣; á„ᅡᆮ; ) HANGUL SYLLABLE JJAD
+C9E4;C9E4;110D 1161 11AF;C9E4;110D 1161 11AF; # (짤; 짤; á„ᅡᆯ; 짤; á„ᅡᆯ; ) HANGUL SYLLABLE JJAL
+C9E5;C9E5;110D 1161 11B0;C9E5;110D 1161 11B0; # (짥; 짥; á„ᅡᆰ; 짥; á„ᅡᆰ; ) HANGUL SYLLABLE JJALG
+C9E6;C9E6;110D 1161 11B1;C9E6;110D 1161 11B1; # (짦; 짦; á„ᅡᆱ; 짦; á„ᅡᆱ; ) HANGUL SYLLABLE JJALM
+C9E7;C9E7;110D 1161 11B2;C9E7;110D 1161 11B2; # (짧; 짧; á„ᅡᆲ; 짧; á„ᅡᆲ; ) HANGUL SYLLABLE JJALB
+C9E8;C9E8;110D 1161 11B3;C9E8;110D 1161 11B3; # (짨; 짨; á„ᅡᆳ; 짨; á„ᅡᆳ; ) HANGUL SYLLABLE JJALS
+C9E9;C9E9;110D 1161 11B4;C9E9;110D 1161 11B4; # (짩; 짩; á„ᅡᆴ; 짩; á„ᅡᆴ; ) HANGUL SYLLABLE JJALT
+C9EA;C9EA;110D 1161 11B5;C9EA;110D 1161 11B5; # (짪; 짪; á„ᅡᆵ; 짪; á„ᅡᆵ; ) HANGUL SYLLABLE JJALP
+C9EB;C9EB;110D 1161 11B6;C9EB;110D 1161 11B6; # (짫; 짫; á„ᅡᆶ; 짫; á„ᅡᆶ; ) HANGUL SYLLABLE JJALH
+C9EC;C9EC;110D 1161 11B7;C9EC;110D 1161 11B7; # (짬; 짬; á„ᅡᆷ; 짬; á„ᅡᆷ; ) HANGUL SYLLABLE JJAM
+C9ED;C9ED;110D 1161 11B8;C9ED;110D 1161 11B8; # (짭; 짭; á„ᅡᆸ; 짭; á„ᅡᆸ; ) HANGUL SYLLABLE JJAB
+C9EE;C9EE;110D 1161 11B9;C9EE;110D 1161 11B9; # (짮; 짮; á„ᅡᆹ; 짮; á„ᅡᆹ; ) HANGUL SYLLABLE JJABS
+C9EF;C9EF;110D 1161 11BA;C9EF;110D 1161 11BA; # (짯; 짯; á„ᅡᆺ; 짯; á„ᅡᆺ; ) HANGUL SYLLABLE JJAS
+C9F0;C9F0;110D 1161 11BB;C9F0;110D 1161 11BB; # (짰; 짰; á„ᅡᆻ; 짰; á„ᅡᆻ; ) HANGUL SYLLABLE JJASS
+C9F1;C9F1;110D 1161 11BC;C9F1;110D 1161 11BC; # (짱; 짱; á„ᅡᆼ; 짱; á„ᅡᆼ; ) HANGUL SYLLABLE JJANG
+C9F2;C9F2;110D 1161 11BD;C9F2;110D 1161 11BD; # (짲; 짲; á„ᅡᆽ; 짲; á„ᅡᆽ; ) HANGUL SYLLABLE JJAJ
+C9F3;C9F3;110D 1161 11BE;C9F3;110D 1161 11BE; # (짳; 짳; á„ᅡᆾ; 짳; á„ᅡᆾ; ) HANGUL SYLLABLE JJAC
+C9F4;C9F4;110D 1161 11BF;C9F4;110D 1161 11BF; # (짴; 짴; á„ᅡᆿ; 짴; á„ᅡᆿ; ) HANGUL SYLLABLE JJAK
+C9F5;C9F5;110D 1161 11C0;C9F5;110D 1161 11C0; # (짵; 짵; á„ᅡᇀ; 짵; á„ᅡᇀ; ) HANGUL SYLLABLE JJAT
+C9F6;C9F6;110D 1161 11C1;C9F6;110D 1161 11C1; # (짶; 짶; á„á…¡á‡; 짶; á„á…¡á‡; ) HANGUL SYLLABLE JJAP
+C9F7;C9F7;110D 1161 11C2;C9F7;110D 1161 11C2; # (짷; 짷; á„ᅡᇂ; 짷; á„ᅡᇂ; ) HANGUL SYLLABLE JJAH
+C9F8;C9F8;110D 1162;C9F8;110D 1162; # (째; 째; á„á…¢; 째; á„á…¢; ) HANGUL SYLLABLE JJAE
+C9F9;C9F9;110D 1162 11A8;C9F9;110D 1162 11A8; # (짹; 짹; á„ᅢᆨ; 짹; á„ᅢᆨ; ) HANGUL SYLLABLE JJAEG
+C9FA;C9FA;110D 1162 11A9;C9FA;110D 1162 11A9; # (짺; 짺; á„ᅢᆩ; 짺; á„ᅢᆩ; ) HANGUL SYLLABLE JJAEGG
+C9FB;C9FB;110D 1162 11AA;C9FB;110D 1162 11AA; # (짻; 짻; á„ᅢᆪ; 짻; á„ᅢᆪ; ) HANGUL SYLLABLE JJAEGS
+C9FC;C9FC;110D 1162 11AB;C9FC;110D 1162 11AB; # (짼; 짼; á„ᅢᆫ; 짼; á„ᅢᆫ; ) HANGUL SYLLABLE JJAEN
+C9FD;C9FD;110D 1162 11AC;C9FD;110D 1162 11AC; # (짽; 짽; á„ᅢᆬ; 짽; á„ᅢᆬ; ) HANGUL SYLLABLE JJAENJ
+C9FE;C9FE;110D 1162 11AD;C9FE;110D 1162 11AD; # (짾; 짾; á„ᅢᆭ; 짾; á„ᅢᆭ; ) HANGUL SYLLABLE JJAENH
+C9FF;C9FF;110D 1162 11AE;C9FF;110D 1162 11AE; # (짿; 짿; á„ᅢᆮ; 짿; á„ᅢᆮ; ) HANGUL SYLLABLE JJAED
+CA00;CA00;110D 1162 11AF;CA00;110D 1162 11AF; # (쨀; 쨀; á„ᅢᆯ; 쨀; á„ᅢᆯ; ) HANGUL SYLLABLE JJAEL
+CA01;CA01;110D 1162 11B0;CA01;110D 1162 11B0; # (ì¨; ì¨; á„ᅢᆰ; ì¨; á„ᅢᆰ; ) HANGUL SYLLABLE JJAELG
+CA02;CA02;110D 1162 11B1;CA02;110D 1162 11B1; # (쨂; 쨂; á„ᅢᆱ; 쨂; á„ᅢᆱ; ) HANGUL SYLLABLE JJAELM
+CA03;CA03;110D 1162 11B2;CA03;110D 1162 11B2; # (쨃; 쨃; á„ᅢᆲ; 쨃; á„ᅢᆲ; ) HANGUL SYLLABLE JJAELB
+CA04;CA04;110D 1162 11B3;CA04;110D 1162 11B3; # (쨄; 쨄; á„ᅢᆳ; 쨄; á„ᅢᆳ; ) HANGUL SYLLABLE JJAELS
+CA05;CA05;110D 1162 11B4;CA05;110D 1162 11B4; # (쨅; 쨅; á„ᅢᆴ; 쨅; á„ᅢᆴ; ) HANGUL SYLLABLE JJAELT
+CA06;CA06;110D 1162 11B5;CA06;110D 1162 11B5; # (쨆; 쨆; á„ᅢᆵ; 쨆; á„ᅢᆵ; ) HANGUL SYLLABLE JJAELP
+CA07;CA07;110D 1162 11B6;CA07;110D 1162 11B6; # (쨇; 쨇; á„ᅢᆶ; 쨇; á„ᅢᆶ; ) HANGUL SYLLABLE JJAELH
+CA08;CA08;110D 1162 11B7;CA08;110D 1162 11B7; # (쨈; 쨈; á„ᅢᆷ; 쨈; á„ᅢᆷ; ) HANGUL SYLLABLE JJAEM
+CA09;CA09;110D 1162 11B8;CA09;110D 1162 11B8; # (쨉; 쨉; á„ᅢᆸ; 쨉; á„ᅢᆸ; ) HANGUL SYLLABLE JJAEB
+CA0A;CA0A;110D 1162 11B9;CA0A;110D 1162 11B9; # (쨊; 쨊; á„ᅢᆹ; 쨊; á„ᅢᆹ; ) HANGUL SYLLABLE JJAEBS
+CA0B;CA0B;110D 1162 11BA;CA0B;110D 1162 11BA; # (쨋; 쨋; á„ᅢᆺ; 쨋; á„ᅢᆺ; ) HANGUL SYLLABLE JJAES
+CA0C;CA0C;110D 1162 11BB;CA0C;110D 1162 11BB; # (쨌; 쨌; á„ᅢᆻ; 쨌; á„ᅢᆻ; ) HANGUL SYLLABLE JJAESS
+CA0D;CA0D;110D 1162 11BC;CA0D;110D 1162 11BC; # (ì¨; ì¨; á„ᅢᆼ; ì¨; á„ᅢᆼ; ) HANGUL SYLLABLE JJAENG
+CA0E;CA0E;110D 1162 11BD;CA0E;110D 1162 11BD; # (쨎; 쨎; á„ᅢᆽ; 쨎; á„ᅢᆽ; ) HANGUL SYLLABLE JJAEJ
+CA0F;CA0F;110D 1162 11BE;CA0F;110D 1162 11BE; # (ì¨; ì¨; á„ᅢᆾ; ì¨; á„ᅢᆾ; ) HANGUL SYLLABLE JJAEC
+CA10;CA10;110D 1162 11BF;CA10;110D 1162 11BF; # (ì¨; ì¨; á„ᅢᆿ; ì¨; á„ᅢᆿ; ) HANGUL SYLLABLE JJAEK
+CA11;CA11;110D 1162 11C0;CA11;110D 1162 11C0; # (쨑; 쨑; á„ᅢᇀ; 쨑; á„ᅢᇀ; ) HANGUL SYLLABLE JJAET
+CA12;CA12;110D 1162 11C1;CA12;110D 1162 11C1; # (쨒; 쨒; á„á…¢á‡; 쨒; á„á…¢á‡; ) HANGUL SYLLABLE JJAEP
+CA13;CA13;110D 1162 11C2;CA13;110D 1162 11C2; # (쨓; 쨓; á„ᅢᇂ; 쨓; á„ᅢᇂ; ) HANGUL SYLLABLE JJAEH
+CA14;CA14;110D 1163;CA14;110D 1163; # (쨔; 쨔; á„á…£; 쨔; á„á…£; ) HANGUL SYLLABLE JJYA
+CA15;CA15;110D 1163 11A8;CA15;110D 1163 11A8; # (쨕; 쨕; á„ᅣᆨ; 쨕; á„ᅣᆨ; ) HANGUL SYLLABLE JJYAG
+CA16;CA16;110D 1163 11A9;CA16;110D 1163 11A9; # (쨖; 쨖; á„ᅣᆩ; 쨖; á„ᅣᆩ; ) HANGUL SYLLABLE JJYAGG
+CA17;CA17;110D 1163 11AA;CA17;110D 1163 11AA; # (쨗; 쨗; á„ᅣᆪ; 쨗; á„ᅣᆪ; ) HANGUL SYLLABLE JJYAGS
+CA18;CA18;110D 1163 11AB;CA18;110D 1163 11AB; # (쨘; 쨘; á„ᅣᆫ; 쨘; á„ᅣᆫ; ) HANGUL SYLLABLE JJYAN
+CA19;CA19;110D 1163 11AC;CA19;110D 1163 11AC; # (쨙; 쨙; á„ᅣᆬ; 쨙; á„ᅣᆬ; ) HANGUL SYLLABLE JJYANJ
+CA1A;CA1A;110D 1163 11AD;CA1A;110D 1163 11AD; # (쨚; 쨚; á„ᅣᆭ; 쨚; á„ᅣᆭ; ) HANGUL SYLLABLE JJYANH
+CA1B;CA1B;110D 1163 11AE;CA1B;110D 1163 11AE; # (쨛; 쨛; á„ᅣᆮ; 쨛; á„ᅣᆮ; ) HANGUL SYLLABLE JJYAD
+CA1C;CA1C;110D 1163 11AF;CA1C;110D 1163 11AF; # (쨜; 쨜; á„ᅣᆯ; 쨜; á„ᅣᆯ; ) HANGUL SYLLABLE JJYAL
+CA1D;CA1D;110D 1163 11B0;CA1D;110D 1163 11B0; # (ì¨; ì¨; á„ᅣᆰ; ì¨; á„ᅣᆰ; ) HANGUL SYLLABLE JJYALG
+CA1E;CA1E;110D 1163 11B1;CA1E;110D 1163 11B1; # (쨞; 쨞; á„ᅣᆱ; 쨞; á„ᅣᆱ; ) HANGUL SYLLABLE JJYALM
+CA1F;CA1F;110D 1163 11B2;CA1F;110D 1163 11B2; # (쨟; 쨟; á„ᅣᆲ; 쨟; á„ᅣᆲ; ) HANGUL SYLLABLE JJYALB
+CA20;CA20;110D 1163 11B3;CA20;110D 1163 11B3; # (쨠; 쨠; á„ᅣᆳ; 쨠; á„ᅣᆳ; ) HANGUL SYLLABLE JJYALS
+CA21;CA21;110D 1163 11B4;CA21;110D 1163 11B4; # (쨡; 쨡; á„ᅣᆴ; 쨡; á„ᅣᆴ; ) HANGUL SYLLABLE JJYALT
+CA22;CA22;110D 1163 11B5;CA22;110D 1163 11B5; # (쨢; 쨢; á„ᅣᆵ; 쨢; á„ᅣᆵ; ) HANGUL SYLLABLE JJYALP
+CA23;CA23;110D 1163 11B6;CA23;110D 1163 11B6; # (쨣; 쨣; á„ᅣᆶ; 쨣; á„ᅣᆶ; ) HANGUL SYLLABLE JJYALH
+CA24;CA24;110D 1163 11B7;CA24;110D 1163 11B7; # (쨤; 쨤; á„ᅣᆷ; 쨤; á„ᅣᆷ; ) HANGUL SYLLABLE JJYAM
+CA25;CA25;110D 1163 11B8;CA25;110D 1163 11B8; # (쨥; 쨥; á„ᅣᆸ; 쨥; á„ᅣᆸ; ) HANGUL SYLLABLE JJYAB
+CA26;CA26;110D 1163 11B9;CA26;110D 1163 11B9; # (쨦; 쨦; á„ᅣᆹ; 쨦; á„ᅣᆹ; ) HANGUL SYLLABLE JJYABS
+CA27;CA27;110D 1163 11BA;CA27;110D 1163 11BA; # (쨧; 쨧; á„ᅣᆺ; 쨧; á„ᅣᆺ; ) HANGUL SYLLABLE JJYAS
+CA28;CA28;110D 1163 11BB;CA28;110D 1163 11BB; # (쨨; 쨨; á„ᅣᆻ; 쨨; á„ᅣᆻ; ) HANGUL SYLLABLE JJYASS
+CA29;CA29;110D 1163 11BC;CA29;110D 1163 11BC; # (쨩; 쨩; á„ᅣᆼ; 쨩; á„ᅣᆼ; ) HANGUL SYLLABLE JJYANG
+CA2A;CA2A;110D 1163 11BD;CA2A;110D 1163 11BD; # (쨪; 쨪; á„ᅣᆽ; 쨪; á„ᅣᆽ; ) HANGUL SYLLABLE JJYAJ
+CA2B;CA2B;110D 1163 11BE;CA2B;110D 1163 11BE; # (쨫; 쨫; á„ᅣᆾ; 쨫; á„ᅣᆾ; ) HANGUL SYLLABLE JJYAC
+CA2C;CA2C;110D 1163 11BF;CA2C;110D 1163 11BF; # (쨬; 쨬; á„ᅣᆿ; 쨬; á„ᅣᆿ; ) HANGUL SYLLABLE JJYAK
+CA2D;CA2D;110D 1163 11C0;CA2D;110D 1163 11C0; # (쨭; 쨭; á„ᅣᇀ; 쨭; á„ᅣᇀ; ) HANGUL SYLLABLE JJYAT
+CA2E;CA2E;110D 1163 11C1;CA2E;110D 1163 11C1; # (쨮; 쨮; á„á…£á‡; 쨮; á„á…£á‡; ) HANGUL SYLLABLE JJYAP
+CA2F;CA2F;110D 1163 11C2;CA2F;110D 1163 11C2; # (쨯; 쨯; á„ᅣᇂ; 쨯; á„ᅣᇂ; ) HANGUL SYLLABLE JJYAH
+CA30;CA30;110D 1164;CA30;110D 1164; # (쨰; 쨰; á„á…¤; 쨰; á„á…¤; ) HANGUL SYLLABLE JJYAE
+CA31;CA31;110D 1164 11A8;CA31;110D 1164 11A8; # (쨱; 쨱; á„ᅤᆨ; 쨱; á„ᅤᆨ; ) HANGUL SYLLABLE JJYAEG
+CA32;CA32;110D 1164 11A9;CA32;110D 1164 11A9; # (쨲; 쨲; á„ᅤᆩ; 쨲; á„ᅤᆩ; ) HANGUL SYLLABLE JJYAEGG
+CA33;CA33;110D 1164 11AA;CA33;110D 1164 11AA; # (쨳; 쨳; á„ᅤᆪ; 쨳; á„ᅤᆪ; ) HANGUL SYLLABLE JJYAEGS
+CA34;CA34;110D 1164 11AB;CA34;110D 1164 11AB; # (쨴; 쨴; á„ᅤᆫ; 쨴; á„ᅤᆫ; ) HANGUL SYLLABLE JJYAEN
+CA35;CA35;110D 1164 11AC;CA35;110D 1164 11AC; # (쨵; 쨵; á„ᅤᆬ; 쨵; á„ᅤᆬ; ) HANGUL SYLLABLE JJYAENJ
+CA36;CA36;110D 1164 11AD;CA36;110D 1164 11AD; # (쨶; 쨶; á„ᅤᆭ; 쨶; á„ᅤᆭ; ) HANGUL SYLLABLE JJYAENH
+CA37;CA37;110D 1164 11AE;CA37;110D 1164 11AE; # (쨷; 쨷; á„ᅤᆮ; 쨷; á„ᅤᆮ; ) HANGUL SYLLABLE JJYAED
+CA38;CA38;110D 1164 11AF;CA38;110D 1164 11AF; # (쨸; 쨸; á„ᅤᆯ; 쨸; á„ᅤᆯ; ) HANGUL SYLLABLE JJYAEL
+CA39;CA39;110D 1164 11B0;CA39;110D 1164 11B0; # (쨹; 쨹; á„ᅤᆰ; 쨹; á„ᅤᆰ; ) HANGUL SYLLABLE JJYAELG
+CA3A;CA3A;110D 1164 11B1;CA3A;110D 1164 11B1; # (쨺; 쨺; á„ᅤᆱ; 쨺; á„ᅤᆱ; ) HANGUL SYLLABLE JJYAELM
+CA3B;CA3B;110D 1164 11B2;CA3B;110D 1164 11B2; # (쨻; 쨻; á„ᅤᆲ; 쨻; á„ᅤᆲ; ) HANGUL SYLLABLE JJYAELB
+CA3C;CA3C;110D 1164 11B3;CA3C;110D 1164 11B3; # (쨼; 쨼; á„ᅤᆳ; 쨼; á„ᅤᆳ; ) HANGUL SYLLABLE JJYAELS
+CA3D;CA3D;110D 1164 11B4;CA3D;110D 1164 11B4; # (쨽; 쨽; á„ᅤᆴ; 쨽; á„ᅤᆴ; ) HANGUL SYLLABLE JJYAELT
+CA3E;CA3E;110D 1164 11B5;CA3E;110D 1164 11B5; # (쨾; 쨾; á„ᅤᆵ; 쨾; á„ᅤᆵ; ) HANGUL SYLLABLE JJYAELP
+CA3F;CA3F;110D 1164 11B6;CA3F;110D 1164 11B6; # (쨿; 쨿; á„ᅤᆶ; 쨿; á„ᅤᆶ; ) HANGUL SYLLABLE JJYAELH
+CA40;CA40;110D 1164 11B7;CA40;110D 1164 11B7; # (ì©€; ì©€; á„ᅤᆷ; ì©€; á„ᅤᆷ; ) HANGUL SYLLABLE JJYAEM
+CA41;CA41;110D 1164 11B8;CA41;110D 1164 11B8; # (ì©; ì©; á„ᅤᆸ; ì©; á„ᅤᆸ; ) HANGUL SYLLABLE JJYAEB
+CA42;CA42;110D 1164 11B9;CA42;110D 1164 11B9; # (ì©‚; ì©‚; á„ᅤᆹ; ì©‚; á„ᅤᆹ; ) HANGUL SYLLABLE JJYAEBS
+CA43;CA43;110D 1164 11BA;CA43;110D 1164 11BA; # (쩃; 쩃; á„ᅤᆺ; 쩃; á„ᅤᆺ; ) HANGUL SYLLABLE JJYAES
+CA44;CA44;110D 1164 11BB;CA44;110D 1164 11BB; # (ì©„; ì©„; á„ᅤᆻ; ì©„; á„ᅤᆻ; ) HANGUL SYLLABLE JJYAESS
+CA45;CA45;110D 1164 11BC;CA45;110D 1164 11BC; # (ì©…; ì©…; á„ᅤᆼ; ì©…; á„ᅤᆼ; ) HANGUL SYLLABLE JJYAENG
+CA46;CA46;110D 1164 11BD;CA46;110D 1164 11BD; # (쩆; 쩆; á„ᅤᆽ; 쩆; á„ᅤᆽ; ) HANGUL SYLLABLE JJYAEJ
+CA47;CA47;110D 1164 11BE;CA47;110D 1164 11BE; # (쩇; 쩇; á„ᅤᆾ; 쩇; á„ᅤᆾ; ) HANGUL SYLLABLE JJYAEC
+CA48;CA48;110D 1164 11BF;CA48;110D 1164 11BF; # (쩈; 쩈; á„ᅤᆿ; 쩈; á„ᅤᆿ; ) HANGUL SYLLABLE JJYAEK
+CA49;CA49;110D 1164 11C0;CA49;110D 1164 11C0; # (쩉; 쩉; á„ᅤᇀ; 쩉; á„ᅤᇀ; ) HANGUL SYLLABLE JJYAET
+CA4A;CA4A;110D 1164 11C1;CA4A;110D 1164 11C1; # (ì©Š; ì©Š; á„á…¤á‡; ì©Š; á„á…¤á‡; ) HANGUL SYLLABLE JJYAEP
+CA4B;CA4B;110D 1164 11C2;CA4B;110D 1164 11C2; # (ì©‹; ì©‹; á„ᅤᇂ; ì©‹; á„ᅤᇂ; ) HANGUL SYLLABLE JJYAEH
+CA4C;CA4C;110D 1165;CA4C;110D 1165; # (ì©Œ; ì©Œ; á„á…¥; ì©Œ; á„á…¥; ) HANGUL SYLLABLE JJEO
+CA4D;CA4D;110D 1165 11A8;CA4D;110D 1165 11A8; # (ì©; ì©; á„ᅥᆨ; ì©; á„ᅥᆨ; ) HANGUL SYLLABLE JJEOG
+CA4E;CA4E;110D 1165 11A9;CA4E;110D 1165 11A9; # (ì©Ž; ì©Ž; á„ᅥᆩ; ì©Ž; á„ᅥᆩ; ) HANGUL SYLLABLE JJEOGG
+CA4F;CA4F;110D 1165 11AA;CA4F;110D 1165 11AA; # (ì©; ì©; á„ᅥᆪ; ì©; á„ᅥᆪ; ) HANGUL SYLLABLE JJEOGS
+CA50;CA50;110D 1165 11AB;CA50;110D 1165 11AB; # (ì©; ì©; á„ᅥᆫ; ì©; á„ᅥᆫ; ) HANGUL SYLLABLE JJEON
+CA51;CA51;110D 1165 11AC;CA51;110D 1165 11AC; # (ì©‘; ì©‘; á„ᅥᆬ; ì©‘; á„ᅥᆬ; ) HANGUL SYLLABLE JJEONJ
+CA52;CA52;110D 1165 11AD;CA52;110D 1165 11AD; # (ì©’; ì©’; á„ᅥᆭ; ì©’; á„ᅥᆭ; ) HANGUL SYLLABLE JJEONH
+CA53;CA53;110D 1165 11AE;CA53;110D 1165 11AE; # (ì©“; ì©“; á„ᅥᆮ; ì©“; á„ᅥᆮ; ) HANGUL SYLLABLE JJEOD
+CA54;CA54;110D 1165 11AF;CA54;110D 1165 11AF; # (ì©”; ì©”; á„ᅥᆯ; ì©”; á„ᅥᆯ; ) HANGUL SYLLABLE JJEOL
+CA55;CA55;110D 1165 11B0;CA55;110D 1165 11B0; # (ì©•; ì©•; á„ᅥᆰ; ì©•; á„ᅥᆰ; ) HANGUL SYLLABLE JJEOLG
+CA56;CA56;110D 1165 11B1;CA56;110D 1165 11B1; # (ì©–; ì©–; á„ᅥᆱ; ì©–; á„ᅥᆱ; ) HANGUL SYLLABLE JJEOLM
+CA57;CA57;110D 1165 11B2;CA57;110D 1165 11B2; # (ì©—; ì©—; á„ᅥᆲ; ì©—; á„ᅥᆲ; ) HANGUL SYLLABLE JJEOLB
+CA58;CA58;110D 1165 11B3;CA58;110D 1165 11B3; # (쩘; 쩘; á„ᅥᆳ; 쩘; á„ᅥᆳ; ) HANGUL SYLLABLE JJEOLS
+CA59;CA59;110D 1165 11B4;CA59;110D 1165 11B4; # (ì©™; ì©™; á„ᅥᆴ; ì©™; á„ᅥᆴ; ) HANGUL SYLLABLE JJEOLT
+CA5A;CA5A;110D 1165 11B5;CA5A;110D 1165 11B5; # (ì©š; ì©š; á„ᅥᆵ; ì©š; á„ᅥᆵ; ) HANGUL SYLLABLE JJEOLP
+CA5B;CA5B;110D 1165 11B6;CA5B;110D 1165 11B6; # (ì©›; ì©›; á„ᅥᆶ; ì©›; á„ᅥᆶ; ) HANGUL SYLLABLE JJEOLH
+CA5C;CA5C;110D 1165 11B7;CA5C;110D 1165 11B7; # (ì©œ; ì©œ; á„ᅥᆷ; ì©œ; á„ᅥᆷ; ) HANGUL SYLLABLE JJEOM
+CA5D;CA5D;110D 1165 11B8;CA5D;110D 1165 11B8; # (ì©; ì©; á„ᅥᆸ; ì©; á„ᅥᆸ; ) HANGUL SYLLABLE JJEOB
+CA5E;CA5E;110D 1165 11B9;CA5E;110D 1165 11B9; # (ì©ž; ì©ž; á„ᅥᆹ; ì©ž; á„ᅥᆹ; ) HANGUL SYLLABLE JJEOBS
+CA5F;CA5F;110D 1165 11BA;CA5F;110D 1165 11BA; # (ì©Ÿ; ì©Ÿ; á„ᅥᆺ; ì©Ÿ; á„ᅥᆺ; ) HANGUL SYLLABLE JJEOS
+CA60;CA60;110D 1165 11BB;CA60;110D 1165 11BB; # (ì© ; ì© ; á„ᅥᆻ; ì© ; á„ᅥᆻ; ) HANGUL SYLLABLE JJEOSS
+CA61;CA61;110D 1165 11BC;CA61;110D 1165 11BC; # (ì©¡; ì©¡; á„ᅥᆼ; ì©¡; á„ᅥᆼ; ) HANGUL SYLLABLE JJEONG
+CA62;CA62;110D 1165 11BD;CA62;110D 1165 11BD; # (ì©¢; ì©¢; á„ᅥᆽ; ì©¢; á„ᅥᆽ; ) HANGUL SYLLABLE JJEOJ
+CA63;CA63;110D 1165 11BE;CA63;110D 1165 11BE; # (ì©£; ì©£; á„ᅥᆾ; ì©£; á„ᅥᆾ; ) HANGUL SYLLABLE JJEOC
+CA64;CA64;110D 1165 11BF;CA64;110D 1165 11BF; # (쩤; 쩤; á„ᅥᆿ; 쩤; á„ᅥᆿ; ) HANGUL SYLLABLE JJEOK
+CA65;CA65;110D 1165 11C0;CA65;110D 1165 11C0; # (ì©¥; ì©¥; á„ᅥᇀ; ì©¥; á„ᅥᇀ; ) HANGUL SYLLABLE JJEOT
+CA66;CA66;110D 1165 11C1;CA66;110D 1165 11C1; # (쩦; 쩦; á„á…¥á‡; 쩦; á„á…¥á‡; ) HANGUL SYLLABLE JJEOP
+CA67;CA67;110D 1165 11C2;CA67;110D 1165 11C2; # (쩧; 쩧; á„ᅥᇂ; 쩧; á„ᅥᇂ; ) HANGUL SYLLABLE JJEOH
+CA68;CA68;110D 1166;CA68;110D 1166; # (쩨; 쩨; á„á…¦; 쩨; á„á…¦; ) HANGUL SYLLABLE JJE
+CA69;CA69;110D 1166 11A8;CA69;110D 1166 11A8; # (ì©©; ì©©; á„ᅦᆨ; ì©©; á„ᅦᆨ; ) HANGUL SYLLABLE JJEG
+CA6A;CA6A;110D 1166 11A9;CA6A;110D 1166 11A9; # (쩪; 쩪; á„ᅦᆩ; 쩪; á„ᅦᆩ; ) HANGUL SYLLABLE JJEGG
+CA6B;CA6B;110D 1166 11AA;CA6B;110D 1166 11AA; # (ì©«; ì©«; á„ᅦᆪ; ì©«; á„ᅦᆪ; ) HANGUL SYLLABLE JJEGS
+CA6C;CA6C;110D 1166 11AB;CA6C;110D 1166 11AB; # (쩬; 쩬; á„ᅦᆫ; 쩬; á„ᅦᆫ; ) HANGUL SYLLABLE JJEN
+CA6D;CA6D;110D 1166 11AC;CA6D;110D 1166 11AC; # (ì©­; ì©­; á„ᅦᆬ; ì©­; á„ᅦᆬ; ) HANGUL SYLLABLE JJENJ
+CA6E;CA6E;110D 1166 11AD;CA6E;110D 1166 11AD; # (ì©®; ì©®; á„ᅦᆭ; ì©®; á„ᅦᆭ; ) HANGUL SYLLABLE JJENH
+CA6F;CA6F;110D 1166 11AE;CA6F;110D 1166 11AE; # (쩯; 쩯; á„ᅦᆮ; 쩯; á„ᅦᆮ; ) HANGUL SYLLABLE JJED
+CA70;CA70;110D 1166 11AF;CA70;110D 1166 11AF; # (ì©°; ì©°; á„ᅦᆯ; ì©°; á„ᅦᆯ; ) HANGUL SYLLABLE JJEL
+CA71;CA71;110D 1166 11B0;CA71;110D 1166 11B0; # (쩱; 쩱; á„ᅦᆰ; 쩱; á„ᅦᆰ; ) HANGUL SYLLABLE JJELG
+CA72;CA72;110D 1166 11B1;CA72;110D 1166 11B1; # (쩲; 쩲; á„ᅦᆱ; 쩲; á„ᅦᆱ; ) HANGUL SYLLABLE JJELM
+CA73;CA73;110D 1166 11B2;CA73;110D 1166 11B2; # (쩳; 쩳; á„ᅦᆲ; 쩳; á„ᅦᆲ; ) HANGUL SYLLABLE JJELB
+CA74;CA74;110D 1166 11B3;CA74;110D 1166 11B3; # (ì©´; ì©´; á„ᅦᆳ; ì©´; á„ᅦᆳ; ) HANGUL SYLLABLE JJELS
+CA75;CA75;110D 1166 11B4;CA75;110D 1166 11B4; # (쩵; 쩵; á„ᅦᆴ; 쩵; á„ᅦᆴ; ) HANGUL SYLLABLE JJELT
+CA76;CA76;110D 1166 11B5;CA76;110D 1166 11B5; # (쩶; 쩶; á„ᅦᆵ; 쩶; á„ᅦᆵ; ) HANGUL SYLLABLE JJELP
+CA77;CA77;110D 1166 11B6;CA77;110D 1166 11B6; # (ì©·; ì©·; á„ᅦᆶ; ì©·; á„ᅦᆶ; ) HANGUL SYLLABLE JJELH
+CA78;CA78;110D 1166 11B7;CA78;110D 1166 11B7; # (쩸; 쩸; á„ᅦᆷ; 쩸; á„ᅦᆷ; ) HANGUL SYLLABLE JJEM
+CA79;CA79;110D 1166 11B8;CA79;110D 1166 11B8; # (쩹; 쩹; á„ᅦᆸ; 쩹; á„ᅦᆸ; ) HANGUL SYLLABLE JJEB
+CA7A;CA7A;110D 1166 11B9;CA7A;110D 1166 11B9; # (쩺; 쩺; á„ᅦᆹ; 쩺; á„ᅦᆹ; ) HANGUL SYLLABLE JJEBS
+CA7B;CA7B;110D 1166 11BA;CA7B;110D 1166 11BA; # (ì©»; ì©»; á„ᅦᆺ; ì©»; á„ᅦᆺ; ) HANGUL SYLLABLE JJES
+CA7C;CA7C;110D 1166 11BB;CA7C;110D 1166 11BB; # (쩼; 쩼; á„ᅦᆻ; 쩼; á„ᅦᆻ; ) HANGUL SYLLABLE JJESS
+CA7D;CA7D;110D 1166 11BC;CA7D;110D 1166 11BC; # (쩽; 쩽; á„ᅦᆼ; 쩽; á„ᅦᆼ; ) HANGUL SYLLABLE JJENG
+CA7E;CA7E;110D 1166 11BD;CA7E;110D 1166 11BD; # (쩾; 쩾; á„ᅦᆽ; 쩾; á„ᅦᆽ; ) HANGUL SYLLABLE JJEJ
+CA7F;CA7F;110D 1166 11BE;CA7F;110D 1166 11BE; # (ì©¿; ì©¿; á„ᅦᆾ; ì©¿; á„ᅦᆾ; ) HANGUL SYLLABLE JJEC
+CA80;CA80;110D 1166 11BF;CA80;110D 1166 11BF; # (쪀; 쪀; á„ᅦᆿ; 쪀; á„ᅦᆿ; ) HANGUL SYLLABLE JJEK
+CA81;CA81;110D 1166 11C0;CA81;110D 1166 11C0; # (ìª; ìª; á„ᅦᇀ; ìª; á„ᅦᇀ; ) HANGUL SYLLABLE JJET
+CA82;CA82;110D 1166 11C1;CA82;110D 1166 11C1; # (쪂; 쪂; á„á…¦á‡; 쪂; á„á…¦á‡; ) HANGUL SYLLABLE JJEP
+CA83;CA83;110D 1166 11C2;CA83;110D 1166 11C2; # (쪃; 쪃; á„ᅦᇂ; 쪃; á„ᅦᇂ; ) HANGUL SYLLABLE JJEH
+CA84;CA84;110D 1167;CA84;110D 1167; # (쪄; 쪄; á„á…§; 쪄; á„á…§; ) HANGUL SYLLABLE JJYEO
+CA85;CA85;110D 1167 11A8;CA85;110D 1167 11A8; # (쪅; 쪅; á„ᅧᆨ; 쪅; á„ᅧᆨ; ) HANGUL SYLLABLE JJYEOG
+CA86;CA86;110D 1167 11A9;CA86;110D 1167 11A9; # (쪆; 쪆; á„ᅧᆩ; 쪆; á„ᅧᆩ; ) HANGUL SYLLABLE JJYEOGG
+CA87;CA87;110D 1167 11AA;CA87;110D 1167 11AA; # (쪇; 쪇; á„ᅧᆪ; 쪇; á„ᅧᆪ; ) HANGUL SYLLABLE JJYEOGS
+CA88;CA88;110D 1167 11AB;CA88;110D 1167 11AB; # (쪈; 쪈; á„ᅧᆫ; 쪈; á„ᅧᆫ; ) HANGUL SYLLABLE JJYEON
+CA89;CA89;110D 1167 11AC;CA89;110D 1167 11AC; # (쪉; 쪉; á„ᅧᆬ; 쪉; á„ᅧᆬ; ) HANGUL SYLLABLE JJYEONJ
+CA8A;CA8A;110D 1167 11AD;CA8A;110D 1167 11AD; # (쪊; 쪊; á„ᅧᆭ; 쪊; á„ᅧᆭ; ) HANGUL SYLLABLE JJYEONH
+CA8B;CA8B;110D 1167 11AE;CA8B;110D 1167 11AE; # (쪋; 쪋; á„ᅧᆮ; 쪋; á„ᅧᆮ; ) HANGUL SYLLABLE JJYEOD
+CA8C;CA8C;110D 1167 11AF;CA8C;110D 1167 11AF; # (쪌; 쪌; á„ᅧᆯ; 쪌; á„ᅧᆯ; ) HANGUL SYLLABLE JJYEOL
+CA8D;CA8D;110D 1167 11B0;CA8D;110D 1167 11B0; # (ìª; ìª; á„ᅧᆰ; ìª; á„ᅧᆰ; ) HANGUL SYLLABLE JJYEOLG
+CA8E;CA8E;110D 1167 11B1;CA8E;110D 1167 11B1; # (쪎; 쪎; á„ᅧᆱ; 쪎; á„ᅧᆱ; ) HANGUL SYLLABLE JJYEOLM
+CA8F;CA8F;110D 1167 11B2;CA8F;110D 1167 11B2; # (ìª; ìª; á„ᅧᆲ; ìª; á„ᅧᆲ; ) HANGUL SYLLABLE JJYEOLB
+CA90;CA90;110D 1167 11B3;CA90;110D 1167 11B3; # (ìª; ìª; á„ᅧᆳ; ìª; á„ᅧᆳ; ) HANGUL SYLLABLE JJYEOLS
+CA91;CA91;110D 1167 11B4;CA91;110D 1167 11B4; # (쪑; 쪑; á„ᅧᆴ; 쪑; á„ᅧᆴ; ) HANGUL SYLLABLE JJYEOLT
+CA92;CA92;110D 1167 11B5;CA92;110D 1167 11B5; # (쪒; 쪒; á„ᅧᆵ; 쪒; á„ᅧᆵ; ) HANGUL SYLLABLE JJYEOLP
+CA93;CA93;110D 1167 11B6;CA93;110D 1167 11B6; # (쪓; 쪓; á„ᅧᆶ; 쪓; á„ᅧᆶ; ) HANGUL SYLLABLE JJYEOLH
+CA94;CA94;110D 1167 11B7;CA94;110D 1167 11B7; # (쪔; 쪔; á„ᅧᆷ; 쪔; á„ᅧᆷ; ) HANGUL SYLLABLE JJYEOM
+CA95;CA95;110D 1167 11B8;CA95;110D 1167 11B8; # (쪕; 쪕; á„ᅧᆸ; 쪕; á„ᅧᆸ; ) HANGUL SYLLABLE JJYEOB
+CA96;CA96;110D 1167 11B9;CA96;110D 1167 11B9; # (쪖; 쪖; á„ᅧᆹ; 쪖; á„ᅧᆹ; ) HANGUL SYLLABLE JJYEOBS
+CA97;CA97;110D 1167 11BA;CA97;110D 1167 11BA; # (쪗; 쪗; á„ᅧᆺ; 쪗; á„ᅧᆺ; ) HANGUL SYLLABLE JJYEOS
+CA98;CA98;110D 1167 11BB;CA98;110D 1167 11BB; # (쪘; 쪘; á„ᅧᆻ; 쪘; á„ᅧᆻ; ) HANGUL SYLLABLE JJYEOSS
+CA99;CA99;110D 1167 11BC;CA99;110D 1167 11BC; # (쪙; 쪙; á„ᅧᆼ; 쪙; á„ᅧᆼ; ) HANGUL SYLLABLE JJYEONG
+CA9A;CA9A;110D 1167 11BD;CA9A;110D 1167 11BD; # (쪚; 쪚; á„ᅧᆽ; 쪚; á„ᅧᆽ; ) HANGUL SYLLABLE JJYEOJ
+CA9B;CA9B;110D 1167 11BE;CA9B;110D 1167 11BE; # (쪛; 쪛; á„ᅧᆾ; 쪛; á„ᅧᆾ; ) HANGUL SYLLABLE JJYEOC
+CA9C;CA9C;110D 1167 11BF;CA9C;110D 1167 11BF; # (쪜; 쪜; á„ᅧᆿ; 쪜; á„ᅧᆿ; ) HANGUL SYLLABLE JJYEOK
+CA9D;CA9D;110D 1167 11C0;CA9D;110D 1167 11C0; # (ìª; ìª; á„ᅧᇀ; ìª; á„ᅧᇀ; ) HANGUL SYLLABLE JJYEOT
+CA9E;CA9E;110D 1167 11C1;CA9E;110D 1167 11C1; # (쪞; 쪞; á„á…§á‡; 쪞; á„á…§á‡; ) HANGUL SYLLABLE JJYEOP
+CA9F;CA9F;110D 1167 11C2;CA9F;110D 1167 11C2; # (쪟; 쪟; á„ᅧᇂ; 쪟; á„ᅧᇂ; ) HANGUL SYLLABLE JJYEOH
+CAA0;CAA0;110D 1168;CAA0;110D 1168; # (쪠; 쪠; á„á…¨; 쪠; á„á…¨; ) HANGUL SYLLABLE JJYE
+CAA1;CAA1;110D 1168 11A8;CAA1;110D 1168 11A8; # (쪡; 쪡; á„ᅨᆨ; 쪡; á„ᅨᆨ; ) HANGUL SYLLABLE JJYEG
+CAA2;CAA2;110D 1168 11A9;CAA2;110D 1168 11A9; # (쪢; 쪢; á„ᅨᆩ; 쪢; á„ᅨᆩ; ) HANGUL SYLLABLE JJYEGG
+CAA3;CAA3;110D 1168 11AA;CAA3;110D 1168 11AA; # (쪣; 쪣; á„ᅨᆪ; 쪣; á„ᅨᆪ; ) HANGUL SYLLABLE JJYEGS
+CAA4;CAA4;110D 1168 11AB;CAA4;110D 1168 11AB; # (쪤; 쪤; á„ᅨᆫ; 쪤; á„ᅨᆫ; ) HANGUL SYLLABLE JJYEN
+CAA5;CAA5;110D 1168 11AC;CAA5;110D 1168 11AC; # (쪥; 쪥; á„ᅨᆬ; 쪥; á„ᅨᆬ; ) HANGUL SYLLABLE JJYENJ
+CAA6;CAA6;110D 1168 11AD;CAA6;110D 1168 11AD; # (쪦; 쪦; á„ᅨᆭ; 쪦; á„ᅨᆭ; ) HANGUL SYLLABLE JJYENH
+CAA7;CAA7;110D 1168 11AE;CAA7;110D 1168 11AE; # (쪧; 쪧; á„ᅨᆮ; 쪧; á„ᅨᆮ; ) HANGUL SYLLABLE JJYED
+CAA8;CAA8;110D 1168 11AF;CAA8;110D 1168 11AF; # (쪨; 쪨; á„ᅨᆯ; 쪨; á„ᅨᆯ; ) HANGUL SYLLABLE JJYEL
+CAA9;CAA9;110D 1168 11B0;CAA9;110D 1168 11B0; # (쪩; 쪩; á„ᅨᆰ; 쪩; á„ᅨᆰ; ) HANGUL SYLLABLE JJYELG
+CAAA;CAAA;110D 1168 11B1;CAAA;110D 1168 11B1; # (쪪; 쪪; á„ᅨᆱ; 쪪; á„ᅨᆱ; ) HANGUL SYLLABLE JJYELM
+CAAB;CAAB;110D 1168 11B2;CAAB;110D 1168 11B2; # (쪫; 쪫; á„ᅨᆲ; 쪫; á„ᅨᆲ; ) HANGUL SYLLABLE JJYELB
+CAAC;CAAC;110D 1168 11B3;CAAC;110D 1168 11B3; # (쪬; 쪬; á„ᅨᆳ; 쪬; á„ᅨᆳ; ) HANGUL SYLLABLE JJYELS
+CAAD;CAAD;110D 1168 11B4;CAAD;110D 1168 11B4; # (쪭; 쪭; á„ᅨᆴ; 쪭; á„ᅨᆴ; ) HANGUL SYLLABLE JJYELT
+CAAE;CAAE;110D 1168 11B5;CAAE;110D 1168 11B5; # (쪮; 쪮; á„ᅨᆵ; 쪮; á„ᅨᆵ; ) HANGUL SYLLABLE JJYELP
+CAAF;CAAF;110D 1168 11B6;CAAF;110D 1168 11B6; # (쪯; 쪯; á„ᅨᆶ; 쪯; á„ᅨᆶ; ) HANGUL SYLLABLE JJYELH
+CAB0;CAB0;110D 1168 11B7;CAB0;110D 1168 11B7; # (쪰; 쪰; á„ᅨᆷ; 쪰; á„ᅨᆷ; ) HANGUL SYLLABLE JJYEM
+CAB1;CAB1;110D 1168 11B8;CAB1;110D 1168 11B8; # (쪱; 쪱; á„ᅨᆸ; 쪱; á„ᅨᆸ; ) HANGUL SYLLABLE JJYEB
+CAB2;CAB2;110D 1168 11B9;CAB2;110D 1168 11B9; # (쪲; 쪲; á„ᅨᆹ; 쪲; á„ᅨᆹ; ) HANGUL SYLLABLE JJYEBS
+CAB3;CAB3;110D 1168 11BA;CAB3;110D 1168 11BA; # (쪳; 쪳; á„ᅨᆺ; 쪳; á„ᅨᆺ; ) HANGUL SYLLABLE JJYES
+CAB4;CAB4;110D 1168 11BB;CAB4;110D 1168 11BB; # (쪴; 쪴; á„ᅨᆻ; 쪴; á„ᅨᆻ; ) HANGUL SYLLABLE JJYESS
+CAB5;CAB5;110D 1168 11BC;CAB5;110D 1168 11BC; # (쪵; 쪵; á„ᅨᆼ; 쪵; á„ᅨᆼ; ) HANGUL SYLLABLE JJYENG
+CAB6;CAB6;110D 1168 11BD;CAB6;110D 1168 11BD; # (쪶; 쪶; á„ᅨᆽ; 쪶; á„ᅨᆽ; ) HANGUL SYLLABLE JJYEJ
+CAB7;CAB7;110D 1168 11BE;CAB7;110D 1168 11BE; # (쪷; 쪷; á„ᅨᆾ; 쪷; á„ᅨᆾ; ) HANGUL SYLLABLE JJYEC
+CAB8;CAB8;110D 1168 11BF;CAB8;110D 1168 11BF; # (쪸; 쪸; á„ᅨᆿ; 쪸; á„ᅨᆿ; ) HANGUL SYLLABLE JJYEK
+CAB9;CAB9;110D 1168 11C0;CAB9;110D 1168 11C0; # (쪹; 쪹; á„ᅨᇀ; 쪹; á„ᅨᇀ; ) HANGUL SYLLABLE JJYET
+CABA;CABA;110D 1168 11C1;CABA;110D 1168 11C1; # (쪺; 쪺; á„á…¨á‡; 쪺; á„á…¨á‡; ) HANGUL SYLLABLE JJYEP
+CABB;CABB;110D 1168 11C2;CABB;110D 1168 11C2; # (쪻; 쪻; á„ᅨᇂ; 쪻; á„ᅨᇂ; ) HANGUL SYLLABLE JJYEH
+CABC;CABC;110D 1169;CABC;110D 1169; # (쪼; 쪼; á„á…©; 쪼; á„á…©; ) HANGUL SYLLABLE JJO
+CABD;CABD;110D 1169 11A8;CABD;110D 1169 11A8; # (쪽; 쪽; á„ᅩᆨ; 쪽; á„ᅩᆨ; ) HANGUL SYLLABLE JJOG
+CABE;CABE;110D 1169 11A9;CABE;110D 1169 11A9; # (쪾; 쪾; á„ᅩᆩ; 쪾; á„ᅩᆩ; ) HANGUL SYLLABLE JJOGG
+CABF;CABF;110D 1169 11AA;CABF;110D 1169 11AA; # (쪿; 쪿; á„ᅩᆪ; 쪿; á„ᅩᆪ; ) HANGUL SYLLABLE JJOGS
+CAC0;CAC0;110D 1169 11AB;CAC0;110D 1169 11AB; # (ì«€; ì«€; á„ᅩᆫ; ì«€; á„ᅩᆫ; ) HANGUL SYLLABLE JJON
+CAC1;CAC1;110D 1169 11AC;CAC1;110D 1169 11AC; # (ì«; ì«; á„ᅩᆬ; ì«; á„ᅩᆬ; ) HANGUL SYLLABLE JJONJ
+CAC2;CAC2;110D 1169 11AD;CAC2;110D 1169 11AD; # (ì«‚; ì«‚; á„ᅩᆭ; ì«‚; á„ᅩᆭ; ) HANGUL SYLLABLE JJONH
+CAC3;CAC3;110D 1169 11AE;CAC3;110D 1169 11AE; # (쫃; 쫃; á„ᅩᆮ; 쫃; á„ᅩᆮ; ) HANGUL SYLLABLE JJOD
+CAC4;CAC4;110D 1169 11AF;CAC4;110D 1169 11AF; # (ì«„; ì«„; á„ᅩᆯ; ì«„; á„ᅩᆯ; ) HANGUL SYLLABLE JJOL
+CAC5;CAC5;110D 1169 11B0;CAC5;110D 1169 11B0; # (ì«…; ì«…; á„ᅩᆰ; ì«…; á„ᅩᆰ; ) HANGUL SYLLABLE JJOLG
+CAC6;CAC6;110D 1169 11B1;CAC6;110D 1169 11B1; # (쫆; 쫆; á„ᅩᆱ; 쫆; á„ᅩᆱ; ) HANGUL SYLLABLE JJOLM
+CAC7;CAC7;110D 1169 11B2;CAC7;110D 1169 11B2; # (쫇; 쫇; á„ᅩᆲ; 쫇; á„ᅩᆲ; ) HANGUL SYLLABLE JJOLB
+CAC8;CAC8;110D 1169 11B3;CAC8;110D 1169 11B3; # (쫈; 쫈; á„ᅩᆳ; 쫈; á„ᅩᆳ; ) HANGUL SYLLABLE JJOLS
+CAC9;CAC9;110D 1169 11B4;CAC9;110D 1169 11B4; # (쫉; 쫉; á„ᅩᆴ; 쫉; á„ᅩᆴ; ) HANGUL SYLLABLE JJOLT
+CACA;CACA;110D 1169 11B5;CACA;110D 1169 11B5; # (ì«Š; ì«Š; á„ᅩᆵ; ì«Š; á„ᅩᆵ; ) HANGUL SYLLABLE JJOLP
+CACB;CACB;110D 1169 11B6;CACB;110D 1169 11B6; # (ì«‹; ì«‹; á„ᅩᆶ; ì«‹; á„ᅩᆶ; ) HANGUL SYLLABLE JJOLH
+CACC;CACC;110D 1169 11B7;CACC;110D 1169 11B7; # (ì«Œ; ì«Œ; á„ᅩᆷ; ì«Œ; á„ᅩᆷ; ) HANGUL SYLLABLE JJOM
+CACD;CACD;110D 1169 11B8;CACD;110D 1169 11B8; # (ì«; ì«; á„ᅩᆸ; ì«; á„ᅩᆸ; ) HANGUL SYLLABLE JJOB
+CACE;CACE;110D 1169 11B9;CACE;110D 1169 11B9; # (ì«Ž; ì«Ž; á„ᅩᆹ; ì«Ž; á„ᅩᆹ; ) HANGUL SYLLABLE JJOBS
+CACF;CACF;110D 1169 11BA;CACF;110D 1169 11BA; # (ì«; ì«; á„ᅩᆺ; ì«; á„ᅩᆺ; ) HANGUL SYLLABLE JJOS
+CAD0;CAD0;110D 1169 11BB;CAD0;110D 1169 11BB; # (ì«; ì«; á„ᅩᆻ; ì«; á„ᅩᆻ; ) HANGUL SYLLABLE JJOSS
+CAD1;CAD1;110D 1169 11BC;CAD1;110D 1169 11BC; # (ì«‘; ì«‘; á„ᅩᆼ; ì«‘; á„ᅩᆼ; ) HANGUL SYLLABLE JJONG
+CAD2;CAD2;110D 1169 11BD;CAD2;110D 1169 11BD; # (ì«’; ì«’; á„ᅩᆽ; ì«’; á„ᅩᆽ; ) HANGUL SYLLABLE JJOJ
+CAD3;CAD3;110D 1169 11BE;CAD3;110D 1169 11BE; # (ì«“; ì«“; á„ᅩᆾ; ì«“; á„ᅩᆾ; ) HANGUL SYLLABLE JJOC
+CAD4;CAD4;110D 1169 11BF;CAD4;110D 1169 11BF; # (ì«”; ì«”; á„ᅩᆿ; ì«”; á„ᅩᆿ; ) HANGUL SYLLABLE JJOK
+CAD5;CAD5;110D 1169 11C0;CAD5;110D 1169 11C0; # (ì«•; ì«•; á„ᅩᇀ; ì«•; á„ᅩᇀ; ) HANGUL SYLLABLE JJOT
+CAD6;CAD6;110D 1169 11C1;CAD6;110D 1169 11C1; # (ì«–; ì«–; á„á…©á‡; ì«–; á„á…©á‡; ) HANGUL SYLLABLE JJOP
+CAD7;CAD7;110D 1169 11C2;CAD7;110D 1169 11C2; # (ì«—; ì«—; á„ᅩᇂ; ì«—; á„ᅩᇂ; ) HANGUL SYLLABLE JJOH
+CAD8;CAD8;110D 116A;CAD8;110D 116A; # (쫘; 쫘; á„á…ª; 쫘; á„á…ª; ) HANGUL SYLLABLE JJWA
+CAD9;CAD9;110D 116A 11A8;CAD9;110D 116A 11A8; # (ì«™; ì«™; á„ᅪᆨ; ì«™; á„ᅪᆨ; ) HANGUL SYLLABLE JJWAG
+CADA;CADA;110D 116A 11A9;CADA;110D 116A 11A9; # (ì«š; ì«š; á„ᅪᆩ; ì«š; á„ᅪᆩ; ) HANGUL SYLLABLE JJWAGG
+CADB;CADB;110D 116A 11AA;CADB;110D 116A 11AA; # (ì«›; ì«›; á„ᅪᆪ; ì«›; á„ᅪᆪ; ) HANGUL SYLLABLE JJWAGS
+CADC;CADC;110D 116A 11AB;CADC;110D 116A 11AB; # (ì«œ; ì«œ; á„ᅪᆫ; ì«œ; á„ᅪᆫ; ) HANGUL SYLLABLE JJWAN
+CADD;CADD;110D 116A 11AC;CADD;110D 116A 11AC; # (ì«; ì«; á„ᅪᆬ; ì«; á„ᅪᆬ; ) HANGUL SYLLABLE JJWANJ
+CADE;CADE;110D 116A 11AD;CADE;110D 116A 11AD; # (ì«ž; ì«ž; á„ᅪᆭ; ì«ž; á„ᅪᆭ; ) HANGUL SYLLABLE JJWANH
+CADF;CADF;110D 116A 11AE;CADF;110D 116A 11AE; # (ì«Ÿ; ì«Ÿ; á„ᅪᆮ; ì«Ÿ; á„ᅪᆮ; ) HANGUL SYLLABLE JJWAD
+CAE0;CAE0;110D 116A 11AF;CAE0;110D 116A 11AF; # (ì« ; ì« ; á„ᅪᆯ; ì« ; á„ᅪᆯ; ) HANGUL SYLLABLE JJWAL
+CAE1;CAE1;110D 116A 11B0;CAE1;110D 116A 11B0; # (ì«¡; ì«¡; á„ᅪᆰ; ì«¡; á„ᅪᆰ; ) HANGUL SYLLABLE JJWALG
+CAE2;CAE2;110D 116A 11B1;CAE2;110D 116A 11B1; # (ì«¢; ì«¢; á„ᅪᆱ; ì«¢; á„ᅪᆱ; ) HANGUL SYLLABLE JJWALM
+CAE3;CAE3;110D 116A 11B2;CAE3;110D 116A 11B2; # (ì«£; ì«£; á„ᅪᆲ; ì«£; á„ᅪᆲ; ) HANGUL SYLLABLE JJWALB
+CAE4;CAE4;110D 116A 11B3;CAE4;110D 116A 11B3; # (쫤; 쫤; á„ᅪᆳ; 쫤; á„ᅪᆳ; ) HANGUL SYLLABLE JJWALS
+CAE5;CAE5;110D 116A 11B4;CAE5;110D 116A 11B4; # (ì«¥; ì«¥; á„ᅪᆴ; ì«¥; á„ᅪᆴ; ) HANGUL SYLLABLE JJWALT
+CAE6;CAE6;110D 116A 11B5;CAE6;110D 116A 11B5; # (쫦; 쫦; á„ᅪᆵ; 쫦; á„ᅪᆵ; ) HANGUL SYLLABLE JJWALP
+CAE7;CAE7;110D 116A 11B6;CAE7;110D 116A 11B6; # (쫧; 쫧; á„ᅪᆶ; 쫧; á„ᅪᆶ; ) HANGUL SYLLABLE JJWALH
+CAE8;CAE8;110D 116A 11B7;CAE8;110D 116A 11B7; # (쫨; 쫨; á„ᅪᆷ; 쫨; á„ᅪᆷ; ) HANGUL SYLLABLE JJWAM
+CAE9;CAE9;110D 116A 11B8;CAE9;110D 116A 11B8; # (ì«©; ì«©; á„ᅪᆸ; ì«©; á„ᅪᆸ; ) HANGUL SYLLABLE JJWAB
+CAEA;CAEA;110D 116A 11B9;CAEA;110D 116A 11B9; # (쫪; 쫪; á„ᅪᆹ; 쫪; á„ᅪᆹ; ) HANGUL SYLLABLE JJWABS
+CAEB;CAEB;110D 116A 11BA;CAEB;110D 116A 11BA; # (ì««; ì««; á„ᅪᆺ; ì««; á„ᅪᆺ; ) HANGUL SYLLABLE JJWAS
+CAEC;CAEC;110D 116A 11BB;CAEC;110D 116A 11BB; # (쫬; 쫬; á„ᅪᆻ; 쫬; á„ᅪᆻ; ) HANGUL SYLLABLE JJWASS
+CAED;CAED;110D 116A 11BC;CAED;110D 116A 11BC; # (ì«­; ì«­; á„ᅪᆼ; ì«­; á„ᅪᆼ; ) HANGUL SYLLABLE JJWANG
+CAEE;CAEE;110D 116A 11BD;CAEE;110D 116A 11BD; # (ì«®; ì«®; á„ᅪᆽ; ì«®; á„ᅪᆽ; ) HANGUL SYLLABLE JJWAJ
+CAEF;CAEF;110D 116A 11BE;CAEF;110D 116A 11BE; # (쫯; 쫯; á„ᅪᆾ; 쫯; á„ᅪᆾ; ) HANGUL SYLLABLE JJWAC
+CAF0;CAF0;110D 116A 11BF;CAF0;110D 116A 11BF; # (ì«°; ì«°; á„ᅪᆿ; ì«°; á„ᅪᆿ; ) HANGUL SYLLABLE JJWAK
+CAF1;CAF1;110D 116A 11C0;CAF1;110D 116A 11C0; # (쫱; 쫱; á„ᅪᇀ; 쫱; á„ᅪᇀ; ) HANGUL SYLLABLE JJWAT
+CAF2;CAF2;110D 116A 11C1;CAF2;110D 116A 11C1; # (쫲; 쫲; á„á…ªá‡; 쫲; á„á…ªá‡; ) HANGUL SYLLABLE JJWAP
+CAF3;CAF3;110D 116A 11C2;CAF3;110D 116A 11C2; # (쫳; 쫳; á„ᅪᇂ; 쫳; á„ᅪᇂ; ) HANGUL SYLLABLE JJWAH
+CAF4;CAF4;110D 116B;CAF4;110D 116B; # (ì«´; ì«´; á„á…«; ì«´; á„á…«; ) HANGUL SYLLABLE JJWAE
+CAF5;CAF5;110D 116B 11A8;CAF5;110D 116B 11A8; # (쫵; 쫵; á„ᅫᆨ; 쫵; á„ᅫᆨ; ) HANGUL SYLLABLE JJWAEG
+CAF6;CAF6;110D 116B 11A9;CAF6;110D 116B 11A9; # (쫶; 쫶; á„ᅫᆩ; 쫶; á„ᅫᆩ; ) HANGUL SYLLABLE JJWAEGG
+CAF7;CAF7;110D 116B 11AA;CAF7;110D 116B 11AA; # (ì«·; ì«·; á„ᅫᆪ; ì«·; á„ᅫᆪ; ) HANGUL SYLLABLE JJWAEGS
+CAF8;CAF8;110D 116B 11AB;CAF8;110D 116B 11AB; # (쫸; 쫸; á„ᅫᆫ; 쫸; á„ᅫᆫ; ) HANGUL SYLLABLE JJWAEN
+CAF9;CAF9;110D 116B 11AC;CAF9;110D 116B 11AC; # (쫹; 쫹; á„ᅫᆬ; 쫹; á„ᅫᆬ; ) HANGUL SYLLABLE JJWAENJ
+CAFA;CAFA;110D 116B 11AD;CAFA;110D 116B 11AD; # (쫺; 쫺; á„ᅫᆭ; 쫺; á„ᅫᆭ; ) HANGUL SYLLABLE JJWAENH
+CAFB;CAFB;110D 116B 11AE;CAFB;110D 116B 11AE; # (ì«»; ì«»; á„ᅫᆮ; ì«»; á„ᅫᆮ; ) HANGUL SYLLABLE JJWAED
+CAFC;CAFC;110D 116B 11AF;CAFC;110D 116B 11AF; # (쫼; 쫼; á„ᅫᆯ; 쫼; á„ᅫᆯ; ) HANGUL SYLLABLE JJWAEL
+CAFD;CAFD;110D 116B 11B0;CAFD;110D 116B 11B0; # (쫽; 쫽; á„ᅫᆰ; 쫽; á„ᅫᆰ; ) HANGUL SYLLABLE JJWAELG
+CAFE;CAFE;110D 116B 11B1;CAFE;110D 116B 11B1; # (쫾; 쫾; á„ᅫᆱ; 쫾; á„ᅫᆱ; ) HANGUL SYLLABLE JJWAELM
+CAFF;CAFF;110D 116B 11B2;CAFF;110D 116B 11B2; # (ì«¿; ì«¿; á„ᅫᆲ; ì«¿; á„ᅫᆲ; ) HANGUL SYLLABLE JJWAELB
+CB00;CB00;110D 116B 11B3;CB00;110D 116B 11B3; # (쬀; 쬀; á„ᅫᆳ; 쬀; á„ᅫᆳ; ) HANGUL SYLLABLE JJWAELS
+CB01;CB01;110D 116B 11B4;CB01;110D 116B 11B4; # (ì¬; ì¬; á„ᅫᆴ; ì¬; á„ᅫᆴ; ) HANGUL SYLLABLE JJWAELT
+CB02;CB02;110D 116B 11B5;CB02;110D 116B 11B5; # (쬂; 쬂; á„ᅫᆵ; 쬂; á„ᅫᆵ; ) HANGUL SYLLABLE JJWAELP
+CB03;CB03;110D 116B 11B6;CB03;110D 116B 11B6; # (쬃; 쬃; á„ᅫᆶ; 쬃; á„ᅫᆶ; ) HANGUL SYLLABLE JJWAELH
+CB04;CB04;110D 116B 11B7;CB04;110D 116B 11B7; # (쬄; 쬄; á„ᅫᆷ; 쬄; á„ᅫᆷ; ) HANGUL SYLLABLE JJWAEM
+CB05;CB05;110D 116B 11B8;CB05;110D 116B 11B8; # (쬅; 쬅; á„ᅫᆸ; 쬅; á„ᅫᆸ; ) HANGUL SYLLABLE JJWAEB
+CB06;CB06;110D 116B 11B9;CB06;110D 116B 11B9; # (쬆; 쬆; á„ᅫᆹ; 쬆; á„ᅫᆹ; ) HANGUL SYLLABLE JJWAEBS
+CB07;CB07;110D 116B 11BA;CB07;110D 116B 11BA; # (쬇; 쬇; á„ᅫᆺ; 쬇; á„ᅫᆺ; ) HANGUL SYLLABLE JJWAES
+CB08;CB08;110D 116B 11BB;CB08;110D 116B 11BB; # (쬈; 쬈; á„ᅫᆻ; 쬈; á„ᅫᆻ; ) HANGUL SYLLABLE JJWAESS
+CB09;CB09;110D 116B 11BC;CB09;110D 116B 11BC; # (쬉; 쬉; á„ᅫᆼ; 쬉; á„ᅫᆼ; ) HANGUL SYLLABLE JJWAENG
+CB0A;CB0A;110D 116B 11BD;CB0A;110D 116B 11BD; # (쬊; 쬊; á„ᅫᆽ; 쬊; á„ᅫᆽ; ) HANGUL SYLLABLE JJWAEJ
+CB0B;CB0B;110D 116B 11BE;CB0B;110D 116B 11BE; # (쬋; 쬋; á„ᅫᆾ; 쬋; á„ᅫᆾ; ) HANGUL SYLLABLE JJWAEC
+CB0C;CB0C;110D 116B 11BF;CB0C;110D 116B 11BF; # (쬌; 쬌; á„ᅫᆿ; 쬌; á„ᅫᆿ; ) HANGUL SYLLABLE JJWAEK
+CB0D;CB0D;110D 116B 11C0;CB0D;110D 116B 11C0; # (ì¬; ì¬; á„ᅫᇀ; ì¬; á„ᅫᇀ; ) HANGUL SYLLABLE JJWAET
+CB0E;CB0E;110D 116B 11C1;CB0E;110D 116B 11C1; # (쬎; 쬎; á„á…«á‡; 쬎; á„á…«á‡; ) HANGUL SYLLABLE JJWAEP
+CB0F;CB0F;110D 116B 11C2;CB0F;110D 116B 11C2; # (ì¬; ì¬; á„ᅫᇂ; ì¬; á„ᅫᇂ; ) HANGUL SYLLABLE JJWAEH
+CB10;CB10;110D 116C;CB10;110D 116C; # (ì¬; ì¬; á„á…¬; ì¬; á„á…¬; ) HANGUL SYLLABLE JJOE
+CB11;CB11;110D 116C 11A8;CB11;110D 116C 11A8; # (쬑; 쬑; á„ᅬᆨ; 쬑; á„ᅬᆨ; ) HANGUL SYLLABLE JJOEG
+CB12;CB12;110D 116C 11A9;CB12;110D 116C 11A9; # (쬒; 쬒; á„ᅬᆩ; 쬒; á„ᅬᆩ; ) HANGUL SYLLABLE JJOEGG
+CB13;CB13;110D 116C 11AA;CB13;110D 116C 11AA; # (쬓; 쬓; á„ᅬᆪ; 쬓; á„ᅬᆪ; ) HANGUL SYLLABLE JJOEGS
+CB14;CB14;110D 116C 11AB;CB14;110D 116C 11AB; # (쬔; 쬔; á„ᅬᆫ; 쬔; á„ᅬᆫ; ) HANGUL SYLLABLE JJOEN
+CB15;CB15;110D 116C 11AC;CB15;110D 116C 11AC; # (쬕; 쬕; á„ᅬᆬ; 쬕; á„ᅬᆬ; ) HANGUL SYLLABLE JJOENJ
+CB16;CB16;110D 116C 11AD;CB16;110D 116C 11AD; # (쬖; 쬖; á„ᅬᆭ; 쬖; á„ᅬᆭ; ) HANGUL SYLLABLE JJOENH
+CB17;CB17;110D 116C 11AE;CB17;110D 116C 11AE; # (쬗; 쬗; á„ᅬᆮ; 쬗; á„ᅬᆮ; ) HANGUL SYLLABLE JJOED
+CB18;CB18;110D 116C 11AF;CB18;110D 116C 11AF; # (쬘; 쬘; á„ᅬᆯ; 쬘; á„ᅬᆯ; ) HANGUL SYLLABLE JJOEL
+CB19;CB19;110D 116C 11B0;CB19;110D 116C 11B0; # (쬙; 쬙; á„ᅬᆰ; 쬙; á„ᅬᆰ; ) HANGUL SYLLABLE JJOELG
+CB1A;CB1A;110D 116C 11B1;CB1A;110D 116C 11B1; # (쬚; 쬚; á„ᅬᆱ; 쬚; á„ᅬᆱ; ) HANGUL SYLLABLE JJOELM
+CB1B;CB1B;110D 116C 11B2;CB1B;110D 116C 11B2; # (쬛; 쬛; á„ᅬᆲ; 쬛; á„ᅬᆲ; ) HANGUL SYLLABLE JJOELB
+CB1C;CB1C;110D 116C 11B3;CB1C;110D 116C 11B3; # (쬜; 쬜; á„ᅬᆳ; 쬜; á„ᅬᆳ; ) HANGUL SYLLABLE JJOELS
+CB1D;CB1D;110D 116C 11B4;CB1D;110D 116C 11B4; # (ì¬; ì¬; á„ᅬᆴ; ì¬; á„ᅬᆴ; ) HANGUL SYLLABLE JJOELT
+CB1E;CB1E;110D 116C 11B5;CB1E;110D 116C 11B5; # (쬞; 쬞; á„ᅬᆵ; 쬞; á„ᅬᆵ; ) HANGUL SYLLABLE JJOELP
+CB1F;CB1F;110D 116C 11B6;CB1F;110D 116C 11B6; # (쬟; 쬟; á„ᅬᆶ; 쬟; á„ᅬᆶ; ) HANGUL SYLLABLE JJOELH
+CB20;CB20;110D 116C 11B7;CB20;110D 116C 11B7; # (쬠; 쬠; á„ᅬᆷ; 쬠; á„ᅬᆷ; ) HANGUL SYLLABLE JJOEM
+CB21;CB21;110D 116C 11B8;CB21;110D 116C 11B8; # (쬡; 쬡; á„ᅬᆸ; 쬡; á„ᅬᆸ; ) HANGUL SYLLABLE JJOEB
+CB22;CB22;110D 116C 11B9;CB22;110D 116C 11B9; # (쬢; 쬢; á„ᅬᆹ; 쬢; á„ᅬᆹ; ) HANGUL SYLLABLE JJOEBS
+CB23;CB23;110D 116C 11BA;CB23;110D 116C 11BA; # (쬣; 쬣; á„ᅬᆺ; 쬣; á„ᅬᆺ; ) HANGUL SYLLABLE JJOES
+CB24;CB24;110D 116C 11BB;CB24;110D 116C 11BB; # (쬤; 쬤; á„ᅬᆻ; 쬤; á„ᅬᆻ; ) HANGUL SYLLABLE JJOESS
+CB25;CB25;110D 116C 11BC;CB25;110D 116C 11BC; # (쬥; 쬥; á„ᅬᆼ; 쬥; á„ᅬᆼ; ) HANGUL SYLLABLE JJOENG
+CB26;CB26;110D 116C 11BD;CB26;110D 116C 11BD; # (쬦; 쬦; á„ᅬᆽ; 쬦; á„ᅬᆽ; ) HANGUL SYLLABLE JJOEJ
+CB27;CB27;110D 116C 11BE;CB27;110D 116C 11BE; # (쬧; 쬧; á„ᅬᆾ; 쬧; á„ᅬᆾ; ) HANGUL SYLLABLE JJOEC
+CB28;CB28;110D 116C 11BF;CB28;110D 116C 11BF; # (쬨; 쬨; á„ᅬᆿ; 쬨; á„ᅬᆿ; ) HANGUL SYLLABLE JJOEK
+CB29;CB29;110D 116C 11C0;CB29;110D 116C 11C0; # (쬩; 쬩; á„ᅬᇀ; 쬩; á„ᅬᇀ; ) HANGUL SYLLABLE JJOET
+CB2A;CB2A;110D 116C 11C1;CB2A;110D 116C 11C1; # (쬪; 쬪; á„á…¬á‡; 쬪; á„á…¬á‡; ) HANGUL SYLLABLE JJOEP
+CB2B;CB2B;110D 116C 11C2;CB2B;110D 116C 11C2; # (쬫; 쬫; á„ᅬᇂ; 쬫; á„ᅬᇂ; ) HANGUL SYLLABLE JJOEH
+CB2C;CB2C;110D 116D;CB2C;110D 116D; # (쬬; 쬬; á„á…­; 쬬; á„á…­; ) HANGUL SYLLABLE JJYO
+CB2D;CB2D;110D 116D 11A8;CB2D;110D 116D 11A8; # (쬭; 쬭; á„ᅭᆨ; 쬭; á„ᅭᆨ; ) HANGUL SYLLABLE JJYOG
+CB2E;CB2E;110D 116D 11A9;CB2E;110D 116D 11A9; # (쬮; 쬮; á„ᅭᆩ; 쬮; á„ᅭᆩ; ) HANGUL SYLLABLE JJYOGG
+CB2F;CB2F;110D 116D 11AA;CB2F;110D 116D 11AA; # (쬯; 쬯; á„ᅭᆪ; 쬯; á„ᅭᆪ; ) HANGUL SYLLABLE JJYOGS
+CB30;CB30;110D 116D 11AB;CB30;110D 116D 11AB; # (쬰; 쬰; á„ᅭᆫ; 쬰; á„ᅭᆫ; ) HANGUL SYLLABLE JJYON
+CB31;CB31;110D 116D 11AC;CB31;110D 116D 11AC; # (쬱; 쬱; á„ᅭᆬ; 쬱; á„ᅭᆬ; ) HANGUL SYLLABLE JJYONJ
+CB32;CB32;110D 116D 11AD;CB32;110D 116D 11AD; # (쬲; 쬲; á„ᅭᆭ; 쬲; á„ᅭᆭ; ) HANGUL SYLLABLE JJYONH
+CB33;CB33;110D 116D 11AE;CB33;110D 116D 11AE; # (쬳; 쬳; á„ᅭᆮ; 쬳; á„ᅭᆮ; ) HANGUL SYLLABLE JJYOD
+CB34;CB34;110D 116D 11AF;CB34;110D 116D 11AF; # (쬴; 쬴; á„ᅭᆯ; 쬴; á„ᅭᆯ; ) HANGUL SYLLABLE JJYOL
+CB35;CB35;110D 116D 11B0;CB35;110D 116D 11B0; # (쬵; 쬵; á„ᅭᆰ; 쬵; á„ᅭᆰ; ) HANGUL SYLLABLE JJYOLG
+CB36;CB36;110D 116D 11B1;CB36;110D 116D 11B1; # (쬶; 쬶; á„ᅭᆱ; 쬶; á„ᅭᆱ; ) HANGUL SYLLABLE JJYOLM
+CB37;CB37;110D 116D 11B2;CB37;110D 116D 11B2; # (쬷; 쬷; á„ᅭᆲ; 쬷; á„ᅭᆲ; ) HANGUL SYLLABLE JJYOLB
+CB38;CB38;110D 116D 11B3;CB38;110D 116D 11B3; # (쬸; 쬸; á„ᅭᆳ; 쬸; á„ᅭᆳ; ) HANGUL SYLLABLE JJYOLS
+CB39;CB39;110D 116D 11B4;CB39;110D 116D 11B4; # (쬹; 쬹; á„ᅭᆴ; 쬹; á„ᅭᆴ; ) HANGUL SYLLABLE JJYOLT
+CB3A;CB3A;110D 116D 11B5;CB3A;110D 116D 11B5; # (쬺; 쬺; á„ᅭᆵ; 쬺; á„ᅭᆵ; ) HANGUL SYLLABLE JJYOLP
+CB3B;CB3B;110D 116D 11B6;CB3B;110D 116D 11B6; # (쬻; 쬻; á„ᅭᆶ; 쬻; á„ᅭᆶ; ) HANGUL SYLLABLE JJYOLH
+CB3C;CB3C;110D 116D 11B7;CB3C;110D 116D 11B7; # (쬼; 쬼; á„ᅭᆷ; 쬼; á„ᅭᆷ; ) HANGUL SYLLABLE JJYOM
+CB3D;CB3D;110D 116D 11B8;CB3D;110D 116D 11B8; # (쬽; 쬽; á„ᅭᆸ; 쬽; á„ᅭᆸ; ) HANGUL SYLLABLE JJYOB
+CB3E;CB3E;110D 116D 11B9;CB3E;110D 116D 11B9; # (쬾; 쬾; á„ᅭᆹ; 쬾; á„ᅭᆹ; ) HANGUL SYLLABLE JJYOBS
+CB3F;CB3F;110D 116D 11BA;CB3F;110D 116D 11BA; # (쬿; 쬿; á„ᅭᆺ; 쬿; á„ᅭᆺ; ) HANGUL SYLLABLE JJYOS
+CB40;CB40;110D 116D 11BB;CB40;110D 116D 11BB; # (ì­€; ì­€; á„ᅭᆻ; ì­€; á„ᅭᆻ; ) HANGUL SYLLABLE JJYOSS
+CB41;CB41;110D 116D 11BC;CB41;110D 116D 11BC; # (ì­; ì­; á„ᅭᆼ; ì­; á„ᅭᆼ; ) HANGUL SYLLABLE JJYONG
+CB42;CB42;110D 116D 11BD;CB42;110D 116D 11BD; # (ì­‚; ì­‚; á„ᅭᆽ; ì­‚; á„ᅭᆽ; ) HANGUL SYLLABLE JJYOJ
+CB43;CB43;110D 116D 11BE;CB43;110D 116D 11BE; # (ì­ƒ; ì­ƒ; á„ᅭᆾ; ì­ƒ; á„ᅭᆾ; ) HANGUL SYLLABLE JJYOC
+CB44;CB44;110D 116D 11BF;CB44;110D 116D 11BF; # (ì­„; ì­„; á„ᅭᆿ; ì­„; á„ᅭᆿ; ) HANGUL SYLLABLE JJYOK
+CB45;CB45;110D 116D 11C0;CB45;110D 116D 11C0; # (ì­…; ì­…; á„ᅭᇀ; ì­…; á„ᅭᇀ; ) HANGUL SYLLABLE JJYOT
+CB46;CB46;110D 116D 11C1;CB46;110D 116D 11C1; # (ì­†; ì­†; á„á…­á‡; ì­†; á„á…­á‡; ) HANGUL SYLLABLE JJYOP
+CB47;CB47;110D 116D 11C2;CB47;110D 116D 11C2; # (ì­‡; ì­‡; á„ᅭᇂ; ì­‡; á„ᅭᇂ; ) HANGUL SYLLABLE JJYOH
+CB48;CB48;110D 116E;CB48;110D 116E; # (ì­ˆ; ì­ˆ; á„á…®; ì­ˆ; á„á…®; ) HANGUL SYLLABLE JJU
+CB49;CB49;110D 116E 11A8;CB49;110D 116E 11A8; # (ì­‰; ì­‰; á„ᅮᆨ; ì­‰; á„ᅮᆨ; ) HANGUL SYLLABLE JJUG
+CB4A;CB4A;110D 116E 11A9;CB4A;110D 116E 11A9; # (ì­Š; ì­Š; á„ᅮᆩ; ì­Š; á„ᅮᆩ; ) HANGUL SYLLABLE JJUGG
+CB4B;CB4B;110D 116E 11AA;CB4B;110D 116E 11AA; # (ì­‹; ì­‹; á„ᅮᆪ; ì­‹; á„ᅮᆪ; ) HANGUL SYLLABLE JJUGS
+CB4C;CB4C;110D 116E 11AB;CB4C;110D 116E 11AB; # (ì­Œ; ì­Œ; á„ᅮᆫ; ì­Œ; á„ᅮᆫ; ) HANGUL SYLLABLE JJUN
+CB4D;CB4D;110D 116E 11AC;CB4D;110D 116E 11AC; # (ì­; ì­; á„ᅮᆬ; ì­; á„ᅮᆬ; ) HANGUL SYLLABLE JJUNJ
+CB4E;CB4E;110D 116E 11AD;CB4E;110D 116E 11AD; # (ì­Ž; ì­Ž; á„ᅮᆭ; ì­Ž; á„ᅮᆭ; ) HANGUL SYLLABLE JJUNH
+CB4F;CB4F;110D 116E 11AE;CB4F;110D 116E 11AE; # (ì­; ì­; á„ᅮᆮ; ì­; á„ᅮᆮ; ) HANGUL SYLLABLE JJUD
+CB50;CB50;110D 116E 11AF;CB50;110D 116E 11AF; # (ì­; ì­; á„ᅮᆯ; ì­; á„ᅮᆯ; ) HANGUL SYLLABLE JJUL
+CB51;CB51;110D 116E 11B0;CB51;110D 116E 11B0; # (ì­‘; ì­‘; á„ᅮᆰ; ì­‘; á„ᅮᆰ; ) HANGUL SYLLABLE JJULG
+CB52;CB52;110D 116E 11B1;CB52;110D 116E 11B1; # (ì­’; ì­’; á„ᅮᆱ; ì­’; á„ᅮᆱ; ) HANGUL SYLLABLE JJULM
+CB53;CB53;110D 116E 11B2;CB53;110D 116E 11B2; # (ì­“; ì­“; á„ᅮᆲ; ì­“; á„ᅮᆲ; ) HANGUL SYLLABLE JJULB
+CB54;CB54;110D 116E 11B3;CB54;110D 116E 11B3; # (ì­”; ì­”; á„ᅮᆳ; ì­”; á„ᅮᆳ; ) HANGUL SYLLABLE JJULS
+CB55;CB55;110D 116E 11B4;CB55;110D 116E 11B4; # (ì­•; ì­•; á„ᅮᆴ; ì­•; á„ᅮᆴ; ) HANGUL SYLLABLE JJULT
+CB56;CB56;110D 116E 11B5;CB56;110D 116E 11B5; # (ì­–; ì­–; á„ᅮᆵ; ì­–; á„ᅮᆵ; ) HANGUL SYLLABLE JJULP
+CB57;CB57;110D 116E 11B6;CB57;110D 116E 11B6; # (ì­—; ì­—; á„ᅮᆶ; ì­—; á„ᅮᆶ; ) HANGUL SYLLABLE JJULH
+CB58;CB58;110D 116E 11B7;CB58;110D 116E 11B7; # (ì­˜; ì­˜; á„ᅮᆷ; ì­˜; á„ᅮᆷ; ) HANGUL SYLLABLE JJUM
+CB59;CB59;110D 116E 11B8;CB59;110D 116E 11B8; # (ì­™; ì­™; á„ᅮᆸ; ì­™; á„ᅮᆸ; ) HANGUL SYLLABLE JJUB
+CB5A;CB5A;110D 116E 11B9;CB5A;110D 116E 11B9; # (ì­š; ì­š; á„ᅮᆹ; ì­š; á„ᅮᆹ; ) HANGUL SYLLABLE JJUBS
+CB5B;CB5B;110D 116E 11BA;CB5B;110D 116E 11BA; # (ì­›; ì­›; á„ᅮᆺ; ì­›; á„ᅮᆺ; ) HANGUL SYLLABLE JJUS
+CB5C;CB5C;110D 116E 11BB;CB5C;110D 116E 11BB; # (ì­œ; ì­œ; á„ᅮᆻ; ì­œ; á„ᅮᆻ; ) HANGUL SYLLABLE JJUSS
+CB5D;CB5D;110D 116E 11BC;CB5D;110D 116E 11BC; # (ì­; ì­; á„ᅮᆼ; ì­; á„ᅮᆼ; ) HANGUL SYLLABLE JJUNG
+CB5E;CB5E;110D 116E 11BD;CB5E;110D 116E 11BD; # (ì­ž; ì­ž; á„ᅮᆽ; ì­ž; á„ᅮᆽ; ) HANGUL SYLLABLE JJUJ
+CB5F;CB5F;110D 116E 11BE;CB5F;110D 116E 11BE; # (ì­Ÿ; ì­Ÿ; á„ᅮᆾ; ì­Ÿ; á„ᅮᆾ; ) HANGUL SYLLABLE JJUC
+CB60;CB60;110D 116E 11BF;CB60;110D 116E 11BF; # (ì­ ; ì­ ; á„ᅮᆿ; ì­ ; á„ᅮᆿ; ) HANGUL SYLLABLE JJUK
+CB61;CB61;110D 116E 11C0;CB61;110D 116E 11C0; # (ì­¡; ì­¡; á„ᅮᇀ; ì­¡; á„ᅮᇀ; ) HANGUL SYLLABLE JJUT
+CB62;CB62;110D 116E 11C1;CB62;110D 116E 11C1; # (ì­¢; ì­¢; á„á…®á‡; ì­¢; á„á…®á‡; ) HANGUL SYLLABLE JJUP
+CB63;CB63;110D 116E 11C2;CB63;110D 116E 11C2; # (ì­£; ì­£; á„ᅮᇂ; ì­£; á„ᅮᇂ; ) HANGUL SYLLABLE JJUH
+CB64;CB64;110D 116F;CB64;110D 116F; # (ì­¤; ì­¤; á„á…¯; ì­¤; á„á…¯; ) HANGUL SYLLABLE JJWEO
+CB65;CB65;110D 116F 11A8;CB65;110D 116F 11A8; # (ì­¥; ì­¥; á„ᅯᆨ; ì­¥; á„ᅯᆨ; ) HANGUL SYLLABLE JJWEOG
+CB66;CB66;110D 116F 11A9;CB66;110D 116F 11A9; # (ì­¦; ì­¦; á„ᅯᆩ; ì­¦; á„ᅯᆩ; ) HANGUL SYLLABLE JJWEOGG
+CB67;CB67;110D 116F 11AA;CB67;110D 116F 11AA; # (ì­§; ì­§; á„ᅯᆪ; ì­§; á„ᅯᆪ; ) HANGUL SYLLABLE JJWEOGS
+CB68;CB68;110D 116F 11AB;CB68;110D 116F 11AB; # (ì­¨; ì­¨; á„ᅯᆫ; ì­¨; á„ᅯᆫ; ) HANGUL SYLLABLE JJWEON
+CB69;CB69;110D 116F 11AC;CB69;110D 116F 11AC; # (ì­©; ì­©; á„ᅯᆬ; ì­©; á„ᅯᆬ; ) HANGUL SYLLABLE JJWEONJ
+CB6A;CB6A;110D 116F 11AD;CB6A;110D 116F 11AD; # (ì­ª; ì­ª; á„ᅯᆭ; ì­ª; á„ᅯᆭ; ) HANGUL SYLLABLE JJWEONH
+CB6B;CB6B;110D 116F 11AE;CB6B;110D 116F 11AE; # (ì­«; ì­«; á„ᅯᆮ; ì­«; á„ᅯᆮ; ) HANGUL SYLLABLE JJWEOD
+CB6C;CB6C;110D 116F 11AF;CB6C;110D 116F 11AF; # (ì­¬; ì­¬; á„ᅯᆯ; ì­¬; á„ᅯᆯ; ) HANGUL SYLLABLE JJWEOL
+CB6D;CB6D;110D 116F 11B0;CB6D;110D 116F 11B0; # (ì­­; ì­­; á„ᅯᆰ; ì­­; á„ᅯᆰ; ) HANGUL SYLLABLE JJWEOLG
+CB6E;CB6E;110D 116F 11B1;CB6E;110D 116F 11B1; # (ì­®; ì­®; á„ᅯᆱ; ì­®; á„ᅯᆱ; ) HANGUL SYLLABLE JJWEOLM
+CB6F;CB6F;110D 116F 11B2;CB6F;110D 116F 11B2; # (ì­¯; ì­¯; á„ᅯᆲ; ì­¯; á„ᅯᆲ; ) HANGUL SYLLABLE JJWEOLB
+CB70;CB70;110D 116F 11B3;CB70;110D 116F 11B3; # (ì­°; ì­°; á„ᅯᆳ; ì­°; á„ᅯᆳ; ) HANGUL SYLLABLE JJWEOLS
+CB71;CB71;110D 116F 11B4;CB71;110D 116F 11B4; # (ì­±; ì­±; á„ᅯᆴ; ì­±; á„ᅯᆴ; ) HANGUL SYLLABLE JJWEOLT
+CB72;CB72;110D 116F 11B5;CB72;110D 116F 11B5; # (ì­²; ì­²; á„ᅯᆵ; ì­²; á„ᅯᆵ; ) HANGUL SYLLABLE JJWEOLP
+CB73;CB73;110D 116F 11B6;CB73;110D 116F 11B6; # (ì­³; ì­³; á„ᅯᆶ; ì­³; á„ᅯᆶ; ) HANGUL SYLLABLE JJWEOLH
+CB74;CB74;110D 116F 11B7;CB74;110D 116F 11B7; # (ì­´; ì­´; á„ᅯᆷ; ì­´; á„ᅯᆷ; ) HANGUL SYLLABLE JJWEOM
+CB75;CB75;110D 116F 11B8;CB75;110D 116F 11B8; # (ì­µ; ì­µ; á„ᅯᆸ; ì­µ; á„ᅯᆸ; ) HANGUL SYLLABLE JJWEOB
+CB76;CB76;110D 116F 11B9;CB76;110D 116F 11B9; # (ì­¶; ì­¶; á„ᅯᆹ; ì­¶; á„ᅯᆹ; ) HANGUL SYLLABLE JJWEOBS
+CB77;CB77;110D 116F 11BA;CB77;110D 116F 11BA; # (ì­·; ì­·; á„ᅯᆺ; ì­·; á„ᅯᆺ; ) HANGUL SYLLABLE JJWEOS
+CB78;CB78;110D 116F 11BB;CB78;110D 116F 11BB; # (ì­¸; ì­¸; á„ᅯᆻ; ì­¸; á„ᅯᆻ; ) HANGUL SYLLABLE JJWEOSS
+CB79;CB79;110D 116F 11BC;CB79;110D 116F 11BC; # (ì­¹; ì­¹; á„ᅯᆼ; ì­¹; á„ᅯᆼ; ) HANGUL SYLLABLE JJWEONG
+CB7A;CB7A;110D 116F 11BD;CB7A;110D 116F 11BD; # (ì­º; ì­º; á„ᅯᆽ; ì­º; á„ᅯᆽ; ) HANGUL SYLLABLE JJWEOJ
+CB7B;CB7B;110D 116F 11BE;CB7B;110D 116F 11BE; # (ì­»; ì­»; á„ᅯᆾ; ì­»; á„ᅯᆾ; ) HANGUL SYLLABLE JJWEOC
+CB7C;CB7C;110D 116F 11BF;CB7C;110D 116F 11BF; # (ì­¼; ì­¼; á„ᅯᆿ; ì­¼; á„ᅯᆿ; ) HANGUL SYLLABLE JJWEOK
+CB7D;CB7D;110D 116F 11C0;CB7D;110D 116F 11C0; # (ì­½; ì­½; á„ᅯᇀ; ì­½; á„ᅯᇀ; ) HANGUL SYLLABLE JJWEOT
+CB7E;CB7E;110D 116F 11C1;CB7E;110D 116F 11C1; # (ì­¾; ì­¾; á„á…¯á‡; ì­¾; á„á…¯á‡; ) HANGUL SYLLABLE JJWEOP
+CB7F;CB7F;110D 116F 11C2;CB7F;110D 116F 11C2; # (ì­¿; ì­¿; á„ᅯᇂ; ì­¿; á„ᅯᇂ; ) HANGUL SYLLABLE JJWEOH
+CB80;CB80;110D 1170;CB80;110D 1170; # (쮀; 쮀; á„á…°; 쮀; á„á…°; ) HANGUL SYLLABLE JJWE
+CB81;CB81;110D 1170 11A8;CB81;110D 1170 11A8; # (ì®; ì®; á„ᅰᆨ; ì®; á„ᅰᆨ; ) HANGUL SYLLABLE JJWEG
+CB82;CB82;110D 1170 11A9;CB82;110D 1170 11A9; # (쮂; 쮂; á„ᅰᆩ; 쮂; á„ᅰᆩ; ) HANGUL SYLLABLE JJWEGG
+CB83;CB83;110D 1170 11AA;CB83;110D 1170 11AA; # (쮃; 쮃; á„ᅰᆪ; 쮃; á„ᅰᆪ; ) HANGUL SYLLABLE JJWEGS
+CB84;CB84;110D 1170 11AB;CB84;110D 1170 11AB; # (쮄; 쮄; á„ᅰᆫ; 쮄; á„ᅰᆫ; ) HANGUL SYLLABLE JJWEN
+CB85;CB85;110D 1170 11AC;CB85;110D 1170 11AC; # (ì®…; ì®…; á„ᅰᆬ; ì®…; á„ᅰᆬ; ) HANGUL SYLLABLE JJWENJ
+CB86;CB86;110D 1170 11AD;CB86;110D 1170 11AD; # (쮆; 쮆; á„ᅰᆭ; 쮆; á„ᅰᆭ; ) HANGUL SYLLABLE JJWENH
+CB87;CB87;110D 1170 11AE;CB87;110D 1170 11AE; # (쮇; 쮇; á„ᅰᆮ; 쮇; á„ᅰᆮ; ) HANGUL SYLLABLE JJWED
+CB88;CB88;110D 1170 11AF;CB88;110D 1170 11AF; # (쮈; 쮈; á„ᅰᆯ; 쮈; á„ᅰᆯ; ) HANGUL SYLLABLE JJWEL
+CB89;CB89;110D 1170 11B0;CB89;110D 1170 11B0; # (쮉; 쮉; á„ᅰᆰ; 쮉; á„ᅰᆰ; ) HANGUL SYLLABLE JJWELG
+CB8A;CB8A;110D 1170 11B1;CB8A;110D 1170 11B1; # (쮊; 쮊; á„ᅰᆱ; 쮊; á„ᅰᆱ; ) HANGUL SYLLABLE JJWELM
+CB8B;CB8B;110D 1170 11B2;CB8B;110D 1170 11B2; # (쮋; 쮋; á„ᅰᆲ; 쮋; á„ᅰᆲ; ) HANGUL SYLLABLE JJWELB
+CB8C;CB8C;110D 1170 11B3;CB8C;110D 1170 11B3; # (쮌; 쮌; á„ᅰᆳ; 쮌; á„ᅰᆳ; ) HANGUL SYLLABLE JJWELS
+CB8D;CB8D;110D 1170 11B4;CB8D;110D 1170 11B4; # (ì®; ì®; á„ᅰᆴ; ì®; á„ᅰᆴ; ) HANGUL SYLLABLE JJWELT
+CB8E;CB8E;110D 1170 11B5;CB8E;110D 1170 11B5; # (쮎; 쮎; á„ᅰᆵ; 쮎; á„ᅰᆵ; ) HANGUL SYLLABLE JJWELP
+CB8F;CB8F;110D 1170 11B6;CB8F;110D 1170 11B6; # (ì®; ì®; á„ᅰᆶ; ì®; á„ᅰᆶ; ) HANGUL SYLLABLE JJWELH
+CB90;CB90;110D 1170 11B7;CB90;110D 1170 11B7; # (ì®; ì®; á„ᅰᆷ; ì®; á„ᅰᆷ; ) HANGUL SYLLABLE JJWEM
+CB91;CB91;110D 1170 11B8;CB91;110D 1170 11B8; # (쮑; 쮑; á„ᅰᆸ; 쮑; á„ᅰᆸ; ) HANGUL SYLLABLE JJWEB
+CB92;CB92;110D 1170 11B9;CB92;110D 1170 11B9; # (ì®’; ì®’; á„ᅰᆹ; ì®’; á„ᅰᆹ; ) HANGUL SYLLABLE JJWEBS
+CB93;CB93;110D 1170 11BA;CB93;110D 1170 11BA; # (쮓; 쮓; á„ᅰᆺ; 쮓; á„ᅰᆺ; ) HANGUL SYLLABLE JJWES
+CB94;CB94;110D 1170 11BB;CB94;110D 1170 11BB; # (ì®”; ì®”; á„ᅰᆻ; ì®”; á„ᅰᆻ; ) HANGUL SYLLABLE JJWESS
+CB95;CB95;110D 1170 11BC;CB95;110D 1170 11BC; # (쮕; 쮕; á„ᅰᆼ; 쮕; á„ᅰᆼ; ) HANGUL SYLLABLE JJWENG
+CB96;CB96;110D 1170 11BD;CB96;110D 1170 11BD; # (ì®–; ì®–; á„ᅰᆽ; ì®–; á„ᅰᆽ; ) HANGUL SYLLABLE JJWEJ
+CB97;CB97;110D 1170 11BE;CB97;110D 1170 11BE; # (ì®—; ì®—; á„ᅰᆾ; ì®—; á„ᅰᆾ; ) HANGUL SYLLABLE JJWEC
+CB98;CB98;110D 1170 11BF;CB98;110D 1170 11BF; # (쮘; 쮘; á„ᅰᆿ; 쮘; á„ᅰᆿ; ) HANGUL SYLLABLE JJWEK
+CB99;CB99;110D 1170 11C0;CB99;110D 1170 11C0; # (ì®™; ì®™; á„ᅰᇀ; ì®™; á„ᅰᇀ; ) HANGUL SYLLABLE JJWET
+CB9A;CB9A;110D 1170 11C1;CB9A;110D 1170 11C1; # (쮚; 쮚; á„á…°á‡; 쮚; á„á…°á‡; ) HANGUL SYLLABLE JJWEP
+CB9B;CB9B;110D 1170 11C2;CB9B;110D 1170 11C2; # (ì®›; ì®›; á„ᅰᇂ; ì®›; á„ᅰᇂ; ) HANGUL SYLLABLE JJWEH
+CB9C;CB9C;110D 1171;CB9C;110D 1171; # (쮜; 쮜; á„á…±; 쮜; á„á…±; ) HANGUL SYLLABLE JJWI
+CB9D;CB9D;110D 1171 11A8;CB9D;110D 1171 11A8; # (ì®; ì®; á„ᅱᆨ; ì®; á„ᅱᆨ; ) HANGUL SYLLABLE JJWIG
+CB9E;CB9E;110D 1171 11A9;CB9E;110D 1171 11A9; # (쮞; 쮞; á„ᅱᆩ; 쮞; á„ᅱᆩ; ) HANGUL SYLLABLE JJWIGG
+CB9F;CB9F;110D 1171 11AA;CB9F;110D 1171 11AA; # (쮟; 쮟; á„ᅱᆪ; 쮟; á„ᅱᆪ; ) HANGUL SYLLABLE JJWIGS
+CBA0;CBA0;110D 1171 11AB;CBA0;110D 1171 11AB; # (ì® ; ì® ; á„ᅱᆫ; ì® ; á„ᅱᆫ; ) HANGUL SYLLABLE JJWIN
+CBA1;CBA1;110D 1171 11AC;CBA1;110D 1171 11AC; # (쮡; 쮡; á„ᅱᆬ; 쮡; á„ᅱᆬ; ) HANGUL SYLLABLE JJWINJ
+CBA2;CBA2;110D 1171 11AD;CBA2;110D 1171 11AD; # (쮢; 쮢; á„ᅱᆭ; 쮢; á„ᅱᆭ; ) HANGUL SYLLABLE JJWINH
+CBA3;CBA3;110D 1171 11AE;CBA3;110D 1171 11AE; # (쮣; 쮣; á„ᅱᆮ; 쮣; á„ᅱᆮ; ) HANGUL SYLLABLE JJWID
+CBA4;CBA4;110D 1171 11AF;CBA4;110D 1171 11AF; # (쮤; 쮤; á„ᅱᆯ; 쮤; á„ᅱᆯ; ) HANGUL SYLLABLE JJWIL
+CBA5;CBA5;110D 1171 11B0;CBA5;110D 1171 11B0; # (쮥; 쮥; á„ᅱᆰ; 쮥; á„ᅱᆰ; ) HANGUL SYLLABLE JJWILG
+CBA6;CBA6;110D 1171 11B1;CBA6;110D 1171 11B1; # (쮦; 쮦; á„ᅱᆱ; 쮦; á„ᅱᆱ; ) HANGUL SYLLABLE JJWILM
+CBA7;CBA7;110D 1171 11B2;CBA7;110D 1171 11B2; # (쮧; 쮧; á„ᅱᆲ; 쮧; á„ᅱᆲ; ) HANGUL SYLLABLE JJWILB
+CBA8;CBA8;110D 1171 11B3;CBA8;110D 1171 11B3; # (쮨; 쮨; á„ᅱᆳ; 쮨; á„ᅱᆳ; ) HANGUL SYLLABLE JJWILS
+CBA9;CBA9;110D 1171 11B4;CBA9;110D 1171 11B4; # (쮩; 쮩; á„ᅱᆴ; 쮩; á„ᅱᆴ; ) HANGUL SYLLABLE JJWILT
+CBAA;CBAA;110D 1171 11B5;CBAA;110D 1171 11B5; # (쮪; 쮪; á„ᅱᆵ; 쮪; á„ᅱᆵ; ) HANGUL SYLLABLE JJWILP
+CBAB;CBAB;110D 1171 11B6;CBAB;110D 1171 11B6; # (쮫; 쮫; á„ᅱᆶ; 쮫; á„ᅱᆶ; ) HANGUL SYLLABLE JJWILH
+CBAC;CBAC;110D 1171 11B7;CBAC;110D 1171 11B7; # (쮬; 쮬; á„ᅱᆷ; 쮬; á„ᅱᆷ; ) HANGUL SYLLABLE JJWIM
+CBAD;CBAD;110D 1171 11B8;CBAD;110D 1171 11B8; # (ì®­; ì®­; á„ᅱᆸ; ì®­; á„ᅱᆸ; ) HANGUL SYLLABLE JJWIB
+CBAE;CBAE;110D 1171 11B9;CBAE;110D 1171 11B9; # (ì®®; ì®®; á„ᅱᆹ; ì®®; á„ᅱᆹ; ) HANGUL SYLLABLE JJWIBS
+CBAF;CBAF;110D 1171 11BA;CBAF;110D 1171 11BA; # (쮯; 쮯; á„ᅱᆺ; 쮯; á„ᅱᆺ; ) HANGUL SYLLABLE JJWIS
+CBB0;CBB0;110D 1171 11BB;CBB0;110D 1171 11BB; # (ì®°; ì®°; á„ᅱᆻ; ì®°; á„ᅱᆻ; ) HANGUL SYLLABLE JJWISS
+CBB1;CBB1;110D 1171 11BC;CBB1;110D 1171 11BC; # (ì®±; ì®±; á„ᅱᆼ; ì®±; á„ᅱᆼ; ) HANGUL SYLLABLE JJWING
+CBB2;CBB2;110D 1171 11BD;CBB2;110D 1171 11BD; # (쮲; 쮲; á„ᅱᆽ; 쮲; á„ᅱᆽ; ) HANGUL SYLLABLE JJWIJ
+CBB3;CBB3;110D 1171 11BE;CBB3;110D 1171 11BE; # (쮳; 쮳; á„ᅱᆾ; 쮳; á„ᅱᆾ; ) HANGUL SYLLABLE JJWIC
+CBB4;CBB4;110D 1171 11BF;CBB4;110D 1171 11BF; # (ì®´; ì®´; á„ᅱᆿ; ì®´; á„ᅱᆿ; ) HANGUL SYLLABLE JJWIK
+CBB5;CBB5;110D 1171 11C0;CBB5;110D 1171 11C0; # (쮵; 쮵; á„ᅱᇀ; 쮵; á„ᅱᇀ; ) HANGUL SYLLABLE JJWIT
+CBB6;CBB6;110D 1171 11C1;CBB6;110D 1171 11C1; # (쮶; 쮶; á„á…±á‡; 쮶; á„á…±á‡; ) HANGUL SYLLABLE JJWIP
+CBB7;CBB7;110D 1171 11C2;CBB7;110D 1171 11C2; # (ì®·; ì®·; á„ᅱᇂ; ì®·; á„ᅱᇂ; ) HANGUL SYLLABLE JJWIH
+CBB8;CBB8;110D 1172;CBB8;110D 1172; # (쮸; 쮸; á„á…²; 쮸; á„á…²; ) HANGUL SYLLABLE JJYU
+CBB9;CBB9;110D 1172 11A8;CBB9;110D 1172 11A8; # (쮹; 쮹; á„ᅲᆨ; 쮹; á„ᅲᆨ; ) HANGUL SYLLABLE JJYUG
+CBBA;CBBA;110D 1172 11A9;CBBA;110D 1172 11A9; # (쮺; 쮺; á„ᅲᆩ; 쮺; á„ᅲᆩ; ) HANGUL SYLLABLE JJYUGG
+CBBB;CBBB;110D 1172 11AA;CBBB;110D 1172 11AA; # (ì®»; ì®»; á„ᅲᆪ; ì®»; á„ᅲᆪ; ) HANGUL SYLLABLE JJYUGS
+CBBC;CBBC;110D 1172 11AB;CBBC;110D 1172 11AB; # (쮼; 쮼; á„ᅲᆫ; 쮼; á„ᅲᆫ; ) HANGUL SYLLABLE JJYUN
+CBBD;CBBD;110D 1172 11AC;CBBD;110D 1172 11AC; # (쮽; 쮽; á„ᅲᆬ; 쮽; á„ᅲᆬ; ) HANGUL SYLLABLE JJYUNJ
+CBBE;CBBE;110D 1172 11AD;CBBE;110D 1172 11AD; # (쮾; 쮾; á„ᅲᆭ; 쮾; á„ᅲᆭ; ) HANGUL SYLLABLE JJYUNH
+CBBF;CBBF;110D 1172 11AE;CBBF;110D 1172 11AE; # (쮿; 쮿; á„ᅲᆮ; 쮿; á„ᅲᆮ; ) HANGUL SYLLABLE JJYUD
+CBC0;CBC0;110D 1172 11AF;CBC0;110D 1172 11AF; # (쯀; 쯀; á„ᅲᆯ; 쯀; á„ᅲᆯ; ) HANGUL SYLLABLE JJYUL
+CBC1;CBC1;110D 1172 11B0;CBC1;110D 1172 11B0; # (ì¯; ì¯; á„ᅲᆰ; ì¯; á„ᅲᆰ; ) HANGUL SYLLABLE JJYULG
+CBC2;CBC2;110D 1172 11B1;CBC2;110D 1172 11B1; # (쯂; 쯂; á„ᅲᆱ; 쯂; á„ᅲᆱ; ) HANGUL SYLLABLE JJYULM
+CBC3;CBC3;110D 1172 11B2;CBC3;110D 1172 11B2; # (쯃; 쯃; á„ᅲᆲ; 쯃; á„ᅲᆲ; ) HANGUL SYLLABLE JJYULB
+CBC4;CBC4;110D 1172 11B3;CBC4;110D 1172 11B3; # (쯄; 쯄; á„ᅲᆳ; 쯄; á„ᅲᆳ; ) HANGUL SYLLABLE JJYULS
+CBC5;CBC5;110D 1172 11B4;CBC5;110D 1172 11B4; # (쯅; 쯅; á„ᅲᆴ; 쯅; á„ᅲᆴ; ) HANGUL SYLLABLE JJYULT
+CBC6;CBC6;110D 1172 11B5;CBC6;110D 1172 11B5; # (쯆; 쯆; á„ᅲᆵ; 쯆; á„ᅲᆵ; ) HANGUL SYLLABLE JJYULP
+CBC7;CBC7;110D 1172 11B6;CBC7;110D 1172 11B6; # (쯇; 쯇; á„ᅲᆶ; 쯇; á„ᅲᆶ; ) HANGUL SYLLABLE JJYULH
+CBC8;CBC8;110D 1172 11B7;CBC8;110D 1172 11B7; # (쯈; 쯈; á„ᅲᆷ; 쯈; á„ᅲᆷ; ) HANGUL SYLLABLE JJYUM
+CBC9;CBC9;110D 1172 11B8;CBC9;110D 1172 11B8; # (쯉; 쯉; á„ᅲᆸ; 쯉; á„ᅲᆸ; ) HANGUL SYLLABLE JJYUB
+CBCA;CBCA;110D 1172 11B9;CBCA;110D 1172 11B9; # (쯊; 쯊; á„ᅲᆹ; 쯊; á„ᅲᆹ; ) HANGUL SYLLABLE JJYUBS
+CBCB;CBCB;110D 1172 11BA;CBCB;110D 1172 11BA; # (쯋; 쯋; á„ᅲᆺ; 쯋; á„ᅲᆺ; ) HANGUL SYLLABLE JJYUS
+CBCC;CBCC;110D 1172 11BB;CBCC;110D 1172 11BB; # (쯌; 쯌; á„ᅲᆻ; 쯌; á„ᅲᆻ; ) HANGUL SYLLABLE JJYUSS
+CBCD;CBCD;110D 1172 11BC;CBCD;110D 1172 11BC; # (ì¯; ì¯; á„ᅲᆼ; ì¯; á„ᅲᆼ; ) HANGUL SYLLABLE JJYUNG
+CBCE;CBCE;110D 1172 11BD;CBCE;110D 1172 11BD; # (쯎; 쯎; á„ᅲᆽ; 쯎; á„ᅲᆽ; ) HANGUL SYLLABLE JJYUJ
+CBCF;CBCF;110D 1172 11BE;CBCF;110D 1172 11BE; # (ì¯; ì¯; á„ᅲᆾ; ì¯; á„ᅲᆾ; ) HANGUL SYLLABLE JJYUC
+CBD0;CBD0;110D 1172 11BF;CBD0;110D 1172 11BF; # (ì¯; ì¯; á„ᅲᆿ; ì¯; á„ᅲᆿ; ) HANGUL SYLLABLE JJYUK
+CBD1;CBD1;110D 1172 11C0;CBD1;110D 1172 11C0; # (쯑; 쯑; á„ᅲᇀ; 쯑; á„ᅲᇀ; ) HANGUL SYLLABLE JJYUT
+CBD2;CBD2;110D 1172 11C1;CBD2;110D 1172 11C1; # (쯒; 쯒; á„á…²á‡; 쯒; á„á…²á‡; ) HANGUL SYLLABLE JJYUP
+CBD3;CBD3;110D 1172 11C2;CBD3;110D 1172 11C2; # (쯓; 쯓; á„ᅲᇂ; 쯓; á„ᅲᇂ; ) HANGUL SYLLABLE JJYUH
+CBD4;CBD4;110D 1173;CBD4;110D 1173; # (쯔; 쯔; á„á…³; 쯔; á„á…³; ) HANGUL SYLLABLE JJEU
+CBD5;CBD5;110D 1173 11A8;CBD5;110D 1173 11A8; # (쯕; 쯕; á„ᅳᆨ; 쯕; á„ᅳᆨ; ) HANGUL SYLLABLE JJEUG
+CBD6;CBD6;110D 1173 11A9;CBD6;110D 1173 11A9; # (쯖; 쯖; á„ᅳᆩ; 쯖; á„ᅳᆩ; ) HANGUL SYLLABLE JJEUGG
+CBD7;CBD7;110D 1173 11AA;CBD7;110D 1173 11AA; # (쯗; 쯗; á„ᅳᆪ; 쯗; á„ᅳᆪ; ) HANGUL SYLLABLE JJEUGS
+CBD8;CBD8;110D 1173 11AB;CBD8;110D 1173 11AB; # (쯘; 쯘; á„ᅳᆫ; 쯘; á„ᅳᆫ; ) HANGUL SYLLABLE JJEUN
+CBD9;CBD9;110D 1173 11AC;CBD9;110D 1173 11AC; # (쯙; 쯙; á„ᅳᆬ; 쯙; á„ᅳᆬ; ) HANGUL SYLLABLE JJEUNJ
+CBDA;CBDA;110D 1173 11AD;CBDA;110D 1173 11AD; # (쯚; 쯚; á„ᅳᆭ; 쯚; á„ᅳᆭ; ) HANGUL SYLLABLE JJEUNH
+CBDB;CBDB;110D 1173 11AE;CBDB;110D 1173 11AE; # (쯛; 쯛; á„ᅳᆮ; 쯛; á„ᅳᆮ; ) HANGUL SYLLABLE JJEUD
+CBDC;CBDC;110D 1173 11AF;CBDC;110D 1173 11AF; # (쯜; 쯜; á„ᅳᆯ; 쯜; á„ᅳᆯ; ) HANGUL SYLLABLE JJEUL
+CBDD;CBDD;110D 1173 11B0;CBDD;110D 1173 11B0; # (ì¯; ì¯; á„ᅳᆰ; ì¯; á„ᅳᆰ; ) HANGUL SYLLABLE JJEULG
+CBDE;CBDE;110D 1173 11B1;CBDE;110D 1173 11B1; # (쯞; 쯞; á„ᅳᆱ; 쯞; á„ᅳᆱ; ) HANGUL SYLLABLE JJEULM
+CBDF;CBDF;110D 1173 11B2;CBDF;110D 1173 11B2; # (쯟; 쯟; á„ᅳᆲ; 쯟; á„ᅳᆲ; ) HANGUL SYLLABLE JJEULB
+CBE0;CBE0;110D 1173 11B3;CBE0;110D 1173 11B3; # (쯠; 쯠; á„ᅳᆳ; 쯠; á„ᅳᆳ; ) HANGUL SYLLABLE JJEULS
+CBE1;CBE1;110D 1173 11B4;CBE1;110D 1173 11B4; # (쯡; 쯡; á„ᅳᆴ; 쯡; á„ᅳᆴ; ) HANGUL SYLLABLE JJEULT
+CBE2;CBE2;110D 1173 11B5;CBE2;110D 1173 11B5; # (쯢; 쯢; á„ᅳᆵ; 쯢; á„ᅳᆵ; ) HANGUL SYLLABLE JJEULP
+CBE3;CBE3;110D 1173 11B6;CBE3;110D 1173 11B6; # (쯣; 쯣; á„ᅳᆶ; 쯣; á„ᅳᆶ; ) HANGUL SYLLABLE JJEULH
+CBE4;CBE4;110D 1173 11B7;CBE4;110D 1173 11B7; # (쯤; 쯤; á„ᅳᆷ; 쯤; á„ᅳᆷ; ) HANGUL SYLLABLE JJEUM
+CBE5;CBE5;110D 1173 11B8;CBE5;110D 1173 11B8; # (쯥; 쯥; á„ᅳᆸ; 쯥; á„ᅳᆸ; ) HANGUL SYLLABLE JJEUB
+CBE6;CBE6;110D 1173 11B9;CBE6;110D 1173 11B9; # (쯦; 쯦; á„ᅳᆹ; 쯦; á„ᅳᆹ; ) HANGUL SYLLABLE JJEUBS
+CBE7;CBE7;110D 1173 11BA;CBE7;110D 1173 11BA; # (쯧; 쯧; á„ᅳᆺ; 쯧; á„ᅳᆺ; ) HANGUL SYLLABLE JJEUS
+CBE8;CBE8;110D 1173 11BB;CBE8;110D 1173 11BB; # (쯨; 쯨; á„ᅳᆻ; 쯨; á„ᅳᆻ; ) HANGUL SYLLABLE JJEUSS
+CBE9;CBE9;110D 1173 11BC;CBE9;110D 1173 11BC; # (쯩; 쯩; á„ᅳᆼ; 쯩; á„ᅳᆼ; ) HANGUL SYLLABLE JJEUNG
+CBEA;CBEA;110D 1173 11BD;CBEA;110D 1173 11BD; # (쯪; 쯪; á„ᅳᆽ; 쯪; á„ᅳᆽ; ) HANGUL SYLLABLE JJEUJ
+CBEB;CBEB;110D 1173 11BE;CBEB;110D 1173 11BE; # (쯫; 쯫; á„ᅳᆾ; 쯫; á„ᅳᆾ; ) HANGUL SYLLABLE JJEUC
+CBEC;CBEC;110D 1173 11BF;CBEC;110D 1173 11BF; # (쯬; 쯬; á„ᅳᆿ; 쯬; á„ᅳᆿ; ) HANGUL SYLLABLE JJEUK
+CBED;CBED;110D 1173 11C0;CBED;110D 1173 11C0; # (쯭; 쯭; á„ᅳᇀ; 쯭; á„ᅳᇀ; ) HANGUL SYLLABLE JJEUT
+CBEE;CBEE;110D 1173 11C1;CBEE;110D 1173 11C1; # (쯮; 쯮; á„á…³á‡; 쯮; á„á…³á‡; ) HANGUL SYLLABLE JJEUP
+CBEF;CBEF;110D 1173 11C2;CBEF;110D 1173 11C2; # (쯯; 쯯; á„ᅳᇂ; 쯯; á„ᅳᇂ; ) HANGUL SYLLABLE JJEUH
+CBF0;CBF0;110D 1174;CBF0;110D 1174; # (쯰; 쯰; á„á…´; 쯰; á„á…´; ) HANGUL SYLLABLE JJYI
+CBF1;CBF1;110D 1174 11A8;CBF1;110D 1174 11A8; # (쯱; 쯱; á„ᅴᆨ; 쯱; á„ᅴᆨ; ) HANGUL SYLLABLE JJYIG
+CBF2;CBF2;110D 1174 11A9;CBF2;110D 1174 11A9; # (쯲; 쯲; á„ᅴᆩ; 쯲; á„ᅴᆩ; ) HANGUL SYLLABLE JJYIGG
+CBF3;CBF3;110D 1174 11AA;CBF3;110D 1174 11AA; # (쯳; 쯳; á„ᅴᆪ; 쯳; á„ᅴᆪ; ) HANGUL SYLLABLE JJYIGS
+CBF4;CBF4;110D 1174 11AB;CBF4;110D 1174 11AB; # (쯴; 쯴; á„ᅴᆫ; 쯴; á„ᅴᆫ; ) HANGUL SYLLABLE JJYIN
+CBF5;CBF5;110D 1174 11AC;CBF5;110D 1174 11AC; # (쯵; 쯵; á„ᅴᆬ; 쯵; á„ᅴᆬ; ) HANGUL SYLLABLE JJYINJ
+CBF6;CBF6;110D 1174 11AD;CBF6;110D 1174 11AD; # (쯶; 쯶; á„ᅴᆭ; 쯶; á„ᅴᆭ; ) HANGUL SYLLABLE JJYINH
+CBF7;CBF7;110D 1174 11AE;CBF7;110D 1174 11AE; # (쯷; 쯷; á„ᅴᆮ; 쯷; á„ᅴᆮ; ) HANGUL SYLLABLE JJYID
+CBF8;CBF8;110D 1174 11AF;CBF8;110D 1174 11AF; # (쯸; 쯸; á„ᅴᆯ; 쯸; á„ᅴᆯ; ) HANGUL SYLLABLE JJYIL
+CBF9;CBF9;110D 1174 11B0;CBF9;110D 1174 11B0; # (쯹; 쯹; á„ᅴᆰ; 쯹; á„ᅴᆰ; ) HANGUL SYLLABLE JJYILG
+CBFA;CBFA;110D 1174 11B1;CBFA;110D 1174 11B1; # (쯺; 쯺; á„ᅴᆱ; 쯺; á„ᅴᆱ; ) HANGUL SYLLABLE JJYILM
+CBFB;CBFB;110D 1174 11B2;CBFB;110D 1174 11B2; # (쯻; 쯻; á„ᅴᆲ; 쯻; á„ᅴᆲ; ) HANGUL SYLLABLE JJYILB
+CBFC;CBFC;110D 1174 11B3;CBFC;110D 1174 11B3; # (쯼; 쯼; á„ᅴᆳ; 쯼; á„ᅴᆳ; ) HANGUL SYLLABLE JJYILS
+CBFD;CBFD;110D 1174 11B4;CBFD;110D 1174 11B4; # (쯽; 쯽; á„ᅴᆴ; 쯽; á„ᅴᆴ; ) HANGUL SYLLABLE JJYILT
+CBFE;CBFE;110D 1174 11B5;CBFE;110D 1174 11B5; # (쯾; 쯾; á„ᅴᆵ; 쯾; á„ᅴᆵ; ) HANGUL SYLLABLE JJYILP
+CBFF;CBFF;110D 1174 11B6;CBFF;110D 1174 11B6; # (쯿; 쯿; á„ᅴᆶ; 쯿; á„ᅴᆶ; ) HANGUL SYLLABLE JJYILH
+CC00;CC00;110D 1174 11B7;CC00;110D 1174 11B7; # (ì°€; ì°€; á„ᅴᆷ; ì°€; á„ᅴᆷ; ) HANGUL SYLLABLE JJYIM
+CC01;CC01;110D 1174 11B8;CC01;110D 1174 11B8; # (ì°; ì°; á„ᅴᆸ; ì°; á„ᅴᆸ; ) HANGUL SYLLABLE JJYIB
+CC02;CC02;110D 1174 11B9;CC02;110D 1174 11B9; # (ì°‚; ì°‚; á„ᅴᆹ; ì°‚; á„ᅴᆹ; ) HANGUL SYLLABLE JJYIBS
+CC03;CC03;110D 1174 11BA;CC03;110D 1174 11BA; # (ì°ƒ; ì°ƒ; á„ᅴᆺ; ì°ƒ; á„ᅴᆺ; ) HANGUL SYLLABLE JJYIS
+CC04;CC04;110D 1174 11BB;CC04;110D 1174 11BB; # (ì°„; ì°„; á„ᅴᆻ; ì°„; á„ᅴᆻ; ) HANGUL SYLLABLE JJYISS
+CC05;CC05;110D 1174 11BC;CC05;110D 1174 11BC; # (ì°…; ì°…; á„ᅴᆼ; ì°…; á„ᅴᆼ; ) HANGUL SYLLABLE JJYING
+CC06;CC06;110D 1174 11BD;CC06;110D 1174 11BD; # (ì°†; ì°†; á„ᅴᆽ; ì°†; á„ᅴᆽ; ) HANGUL SYLLABLE JJYIJ
+CC07;CC07;110D 1174 11BE;CC07;110D 1174 11BE; # (ì°‡; ì°‡; á„ᅴᆾ; ì°‡; á„ᅴᆾ; ) HANGUL SYLLABLE JJYIC
+CC08;CC08;110D 1174 11BF;CC08;110D 1174 11BF; # (ì°ˆ; ì°ˆ; á„ᅴᆿ; ì°ˆ; á„ᅴᆿ; ) HANGUL SYLLABLE JJYIK
+CC09;CC09;110D 1174 11C0;CC09;110D 1174 11C0; # (ì°‰; ì°‰; á„ᅴᇀ; ì°‰; á„ᅴᇀ; ) HANGUL SYLLABLE JJYIT
+CC0A;CC0A;110D 1174 11C1;CC0A;110D 1174 11C1; # (ì°Š; ì°Š; á„á…´á‡; ì°Š; á„á…´á‡; ) HANGUL SYLLABLE JJYIP
+CC0B;CC0B;110D 1174 11C2;CC0B;110D 1174 11C2; # (ì°‹; ì°‹; á„ᅴᇂ; ì°‹; á„ᅴᇂ; ) HANGUL SYLLABLE JJYIH
+CC0C;CC0C;110D 1175;CC0C;110D 1175; # (ì°Œ; ì°Œ; á„á…µ; ì°Œ; á„á…µ; ) HANGUL SYLLABLE JJI
+CC0D;CC0D;110D 1175 11A8;CC0D;110D 1175 11A8; # (ì°; ì°; á„ᅵᆨ; ì°; á„ᅵᆨ; ) HANGUL SYLLABLE JJIG
+CC0E;CC0E;110D 1175 11A9;CC0E;110D 1175 11A9; # (ì°Ž; ì°Ž; á„ᅵᆩ; ì°Ž; á„ᅵᆩ; ) HANGUL SYLLABLE JJIGG
+CC0F;CC0F;110D 1175 11AA;CC0F;110D 1175 11AA; # (ì°; ì°; á„ᅵᆪ; ì°; á„ᅵᆪ; ) HANGUL SYLLABLE JJIGS
+CC10;CC10;110D 1175 11AB;CC10;110D 1175 11AB; # (ì°; ì°; á„ᅵᆫ; ì°; á„ᅵᆫ; ) HANGUL SYLLABLE JJIN
+CC11;CC11;110D 1175 11AC;CC11;110D 1175 11AC; # (ì°‘; ì°‘; á„ᅵᆬ; ì°‘; á„ᅵᆬ; ) HANGUL SYLLABLE JJINJ
+CC12;CC12;110D 1175 11AD;CC12;110D 1175 11AD; # (ì°’; ì°’; á„ᅵᆭ; ì°’; á„ᅵᆭ; ) HANGUL SYLLABLE JJINH
+CC13;CC13;110D 1175 11AE;CC13;110D 1175 11AE; # (ì°“; ì°“; á„ᅵᆮ; ì°“; á„ᅵᆮ; ) HANGUL SYLLABLE JJID
+CC14;CC14;110D 1175 11AF;CC14;110D 1175 11AF; # (ì°”; ì°”; á„ᅵᆯ; ì°”; á„ᅵᆯ; ) HANGUL SYLLABLE JJIL
+CC15;CC15;110D 1175 11B0;CC15;110D 1175 11B0; # (ì°•; ì°•; á„ᅵᆰ; ì°•; á„ᅵᆰ; ) HANGUL SYLLABLE JJILG
+CC16;CC16;110D 1175 11B1;CC16;110D 1175 11B1; # (ì°–; ì°–; á„ᅵᆱ; ì°–; á„ᅵᆱ; ) HANGUL SYLLABLE JJILM
+CC17;CC17;110D 1175 11B2;CC17;110D 1175 11B2; # (ì°—; ì°—; á„ᅵᆲ; ì°—; á„ᅵᆲ; ) HANGUL SYLLABLE JJILB
+CC18;CC18;110D 1175 11B3;CC18;110D 1175 11B3; # (ì°˜; ì°˜; á„ᅵᆳ; ì°˜; á„ᅵᆳ; ) HANGUL SYLLABLE JJILS
+CC19;CC19;110D 1175 11B4;CC19;110D 1175 11B4; # (ì°™; ì°™; á„ᅵᆴ; ì°™; á„ᅵᆴ; ) HANGUL SYLLABLE JJILT
+CC1A;CC1A;110D 1175 11B5;CC1A;110D 1175 11B5; # (ì°š; ì°š; á„ᅵᆵ; ì°š; á„ᅵᆵ; ) HANGUL SYLLABLE JJILP
+CC1B;CC1B;110D 1175 11B6;CC1B;110D 1175 11B6; # (ì°›; ì°›; á„ᅵᆶ; ì°›; á„ᅵᆶ; ) HANGUL SYLLABLE JJILH
+CC1C;CC1C;110D 1175 11B7;CC1C;110D 1175 11B7; # (ì°œ; ì°œ; á„ᅵᆷ; ì°œ; á„ᅵᆷ; ) HANGUL SYLLABLE JJIM
+CC1D;CC1D;110D 1175 11B8;CC1D;110D 1175 11B8; # (ì°; ì°; á„ᅵᆸ; ì°; á„ᅵᆸ; ) HANGUL SYLLABLE JJIB
+CC1E;CC1E;110D 1175 11B9;CC1E;110D 1175 11B9; # (ì°ž; ì°ž; á„ᅵᆹ; ì°ž; á„ᅵᆹ; ) HANGUL SYLLABLE JJIBS
+CC1F;CC1F;110D 1175 11BA;CC1F;110D 1175 11BA; # (ì°Ÿ; ì°Ÿ; á„ᅵᆺ; ì°Ÿ; á„ᅵᆺ; ) HANGUL SYLLABLE JJIS
+CC20;CC20;110D 1175 11BB;CC20;110D 1175 11BB; # (ì° ; ì° ; á„ᅵᆻ; ì° ; á„ᅵᆻ; ) HANGUL SYLLABLE JJISS
+CC21;CC21;110D 1175 11BC;CC21;110D 1175 11BC; # (ì°¡; ì°¡; á„ᅵᆼ; ì°¡; á„ᅵᆼ; ) HANGUL SYLLABLE JJING
+CC22;CC22;110D 1175 11BD;CC22;110D 1175 11BD; # (ì°¢; ì°¢; á„ᅵᆽ; ì°¢; á„ᅵᆽ; ) HANGUL SYLLABLE JJIJ
+CC23;CC23;110D 1175 11BE;CC23;110D 1175 11BE; # (ì°£; ì°£; á„ᅵᆾ; ì°£; á„ᅵᆾ; ) HANGUL SYLLABLE JJIC
+CC24;CC24;110D 1175 11BF;CC24;110D 1175 11BF; # (ì°¤; ì°¤; á„ᅵᆿ; ì°¤; á„ᅵᆿ; ) HANGUL SYLLABLE JJIK
+CC25;CC25;110D 1175 11C0;CC25;110D 1175 11C0; # (ì°¥; ì°¥; á„ᅵᇀ; ì°¥; á„ᅵᇀ; ) HANGUL SYLLABLE JJIT
+CC26;CC26;110D 1175 11C1;CC26;110D 1175 11C1; # (ì°¦; ì°¦; á„á…µá‡; ì°¦; á„á…µá‡; ) HANGUL SYLLABLE JJIP
+CC27;CC27;110D 1175 11C2;CC27;110D 1175 11C2; # (ì°§; ì°§; á„ᅵᇂ; ì°§; á„ᅵᇂ; ) HANGUL SYLLABLE JJIH
+CC28;CC28;110E 1161;CC28;110E 1161; # (ì°¨; ì°¨; á„Žá…¡; ì°¨; á„Žá…¡; ) HANGUL SYLLABLE CA
+CC29;CC29;110E 1161 11A8;CC29;110E 1161 11A8; # (착; 착; 착; 착; 착; ) HANGUL SYLLABLE CAG
+CC2A;CC2A;110E 1161 11A9;CC2A;110E 1161 11A9; # (찪; 찪; 찪; 찪; 찪; ) HANGUL SYLLABLE CAGG
+CC2B;CC2B;110E 1161 11AA;CC2B;110E 1161 11AA; # (찫; 찫; 찫; 찫; 찫; ) HANGUL SYLLABLE CAGS
+CC2C;CC2C;110E 1161 11AB;CC2C;110E 1161 11AB; # (찬; 찬; 찬; 찬; 찬; ) HANGUL SYLLABLE CAN
+CC2D;CC2D;110E 1161 11AC;CC2D;110E 1161 11AC; # (찭; 찭; 찭; 찭; 찭; ) HANGUL SYLLABLE CANJ
+CC2E;CC2E;110E 1161 11AD;CC2E;110E 1161 11AD; # (찮; 찮; 찮; 찮; 찮; ) HANGUL SYLLABLE CANH
+CC2F;CC2F;110E 1161 11AE;CC2F;110E 1161 11AE; # (찯; 찯; 찯; 찯; 찯; ) HANGUL SYLLABLE CAD
+CC30;CC30;110E 1161 11AF;CC30;110E 1161 11AF; # (찰; 찰; 찰; 찰; 찰; ) HANGUL SYLLABLE CAL
+CC31;CC31;110E 1161 11B0;CC31;110E 1161 11B0; # (찱; 찱; 찱; 찱; 찱; ) HANGUL SYLLABLE CALG
+CC32;CC32;110E 1161 11B1;CC32;110E 1161 11B1; # (찲; 찲; 찲; 찲; 찲; ) HANGUL SYLLABLE CALM
+CC33;CC33;110E 1161 11B2;CC33;110E 1161 11B2; # (찳; 찳; 찳; 찳; 찳; ) HANGUL SYLLABLE CALB
+CC34;CC34;110E 1161 11B3;CC34;110E 1161 11B3; # (찴; 찴; 찴; 찴; 찴; ) HANGUL SYLLABLE CALS
+CC35;CC35;110E 1161 11B4;CC35;110E 1161 11B4; # (찵; 찵; 찵; 찵; 찵; ) HANGUL SYLLABLE CALT
+CC36;CC36;110E 1161 11B5;CC36;110E 1161 11B5; # (찶; 찶; 찶; 찶; 찶; ) HANGUL SYLLABLE CALP
+CC37;CC37;110E 1161 11B6;CC37;110E 1161 11B6; # (찷; 찷; 찷; 찷; 찷; ) HANGUL SYLLABLE CALH
+CC38;CC38;110E 1161 11B7;CC38;110E 1161 11B7; # (참; 참; 참; 참; 참; ) HANGUL SYLLABLE CAM
+CC39;CC39;110E 1161 11B8;CC39;110E 1161 11B8; # (찹; 찹; 찹; 찹; 찹; ) HANGUL SYLLABLE CAB
+CC3A;CC3A;110E 1161 11B9;CC3A;110E 1161 11B9; # (찺; 찺; 찺; 찺; 찺; ) HANGUL SYLLABLE CABS
+CC3B;CC3B;110E 1161 11BA;CC3B;110E 1161 11BA; # (찻; 찻; 찻; 찻; 찻; ) HANGUL SYLLABLE CAS
+CC3C;CC3C;110E 1161 11BB;CC3C;110E 1161 11BB; # (찼; 찼; 찼; 찼; 찼; ) HANGUL SYLLABLE CASS
+CC3D;CC3D;110E 1161 11BC;CC3D;110E 1161 11BC; # (창; 창; 창; 창; 창; ) HANGUL SYLLABLE CANG
+CC3E;CC3E;110E 1161 11BD;CC3E;110E 1161 11BD; # (찾; 찾; 찾; 찾; 찾; ) HANGUL SYLLABLE CAJ
+CC3F;CC3F;110E 1161 11BE;CC3F;110E 1161 11BE; # (찿; 찿; 찿; 찿; 찿; ) HANGUL SYLLABLE CAC
+CC40;CC40;110E 1161 11BF;CC40;110E 1161 11BF; # (챀; 챀; 챀; 챀; 챀; ) HANGUL SYLLABLE CAK
+CC41;CC41;110E 1161 11C0;CC41;110E 1161 11C0; # (ì±; ì±; 챁; ì±; 챁; ) HANGUL SYLLABLE CAT
+CC42;CC42;110E 1161 11C1;CC42;110E 1161 11C1; # (챂; 챂; á„Žá…¡á‡; 챂; á„Žá…¡á‡; ) HANGUL SYLLABLE CAP
+CC43;CC43;110E 1161 11C2;CC43;110E 1161 11C2; # (챃; 챃; 챃; 챃; 챃; ) HANGUL SYLLABLE CAH
+CC44;CC44;110E 1162;CC44;110E 1162; # (채; 채; 채; 채; 채; ) HANGUL SYLLABLE CAE
+CC45;CC45;110E 1162 11A8;CC45;110E 1162 11A8; # (책; 책; 책; 책; 책; ) HANGUL SYLLABLE CAEG
+CC46;CC46;110E 1162 11A9;CC46;110E 1162 11A9; # (챆; 챆; 챆; 챆; 챆; ) HANGUL SYLLABLE CAEGG
+CC47;CC47;110E 1162 11AA;CC47;110E 1162 11AA; # (챇; 챇; 챇; 챇; 챇; ) HANGUL SYLLABLE CAEGS
+CC48;CC48;110E 1162 11AB;CC48;110E 1162 11AB; # (챈; 챈; 챈; 챈; 챈; ) HANGUL SYLLABLE CAEN
+CC49;CC49;110E 1162 11AC;CC49;110E 1162 11AC; # (챉; 챉; 챉; 챉; 챉; ) HANGUL SYLLABLE CAENJ
+CC4A;CC4A;110E 1162 11AD;CC4A;110E 1162 11AD; # (챊; 챊; 챊; 챊; 챊; ) HANGUL SYLLABLE CAENH
+CC4B;CC4B;110E 1162 11AE;CC4B;110E 1162 11AE; # (챋; 챋; 챋; 챋; 챋; ) HANGUL SYLLABLE CAED
+CC4C;CC4C;110E 1162 11AF;CC4C;110E 1162 11AF; # (챌; 챌; 챌; 챌; 챌; ) HANGUL SYLLABLE CAEL
+CC4D;CC4D;110E 1162 11B0;CC4D;110E 1162 11B0; # (ì±; ì±; 챍; ì±; 챍; ) HANGUL SYLLABLE CAELG
+CC4E;CC4E;110E 1162 11B1;CC4E;110E 1162 11B1; # (챎; 챎; 챎; 챎; 챎; ) HANGUL SYLLABLE CAELM
+CC4F;CC4F;110E 1162 11B2;CC4F;110E 1162 11B2; # (ì±; ì±; 챏; ì±; 챏; ) HANGUL SYLLABLE CAELB
+CC50;CC50;110E 1162 11B3;CC50;110E 1162 11B3; # (ì±; ì±; 챐; ì±; 챐; ) HANGUL SYLLABLE CAELS
+CC51;CC51;110E 1162 11B4;CC51;110E 1162 11B4; # (챑; 챑; 챑; 챑; 챑; ) HANGUL SYLLABLE CAELT
+CC52;CC52;110E 1162 11B5;CC52;110E 1162 11B5; # (챒; 챒; 챒; 챒; 챒; ) HANGUL SYLLABLE CAELP
+CC53;CC53;110E 1162 11B6;CC53;110E 1162 11B6; # (챓; 챓; 챓; 챓; 챓; ) HANGUL SYLLABLE CAELH
+CC54;CC54;110E 1162 11B7;CC54;110E 1162 11B7; # (챔; 챔; 챔; 챔; 챔; ) HANGUL SYLLABLE CAEM
+CC55;CC55;110E 1162 11B8;CC55;110E 1162 11B8; # (챕; 챕; 챕; 챕; 챕; ) HANGUL SYLLABLE CAEB
+CC56;CC56;110E 1162 11B9;CC56;110E 1162 11B9; # (챖; 챖; 챖; 챖; 챖; ) HANGUL SYLLABLE CAEBS
+CC57;CC57;110E 1162 11BA;CC57;110E 1162 11BA; # (챗; 챗; 챗; 챗; 챗; ) HANGUL SYLLABLE CAES
+CC58;CC58;110E 1162 11BB;CC58;110E 1162 11BB; # (챘; 챘; 챘; 챘; 챘; ) HANGUL SYLLABLE CAESS
+CC59;CC59;110E 1162 11BC;CC59;110E 1162 11BC; # (챙; 챙; 챙; 챙; 챙; ) HANGUL SYLLABLE CAENG
+CC5A;CC5A;110E 1162 11BD;CC5A;110E 1162 11BD; # (챚; 챚; 챚; 챚; 챚; ) HANGUL SYLLABLE CAEJ
+CC5B;CC5B;110E 1162 11BE;CC5B;110E 1162 11BE; # (챛; 챛; 챛; 챛; 챛; ) HANGUL SYLLABLE CAEC
+CC5C;CC5C;110E 1162 11BF;CC5C;110E 1162 11BF; # (챜; 챜; 챜; 챜; 챜; ) HANGUL SYLLABLE CAEK
+CC5D;CC5D;110E 1162 11C0;CC5D;110E 1162 11C0; # (ì±; ì±; 챝; ì±; 챝; ) HANGUL SYLLABLE CAET
+CC5E;CC5E;110E 1162 11C1;CC5E;110E 1162 11C1; # (챞; 챞; á„Žá…¢á‡; 챞; á„Žá…¢á‡; ) HANGUL SYLLABLE CAEP
+CC5F;CC5F;110E 1162 11C2;CC5F;110E 1162 11C2; # (챟; 챟; 챟; 챟; 챟; ) HANGUL SYLLABLE CAEH
+CC60;CC60;110E 1163;CC60;110E 1163; # (ì± ; ì± ; á„Žá…£; ì± ; á„Žá…£; ) HANGUL SYLLABLE CYA
+CC61;CC61;110E 1163 11A8;CC61;110E 1163 11A8; # (챡; 챡; 챡; 챡; 챡; ) HANGUL SYLLABLE CYAG
+CC62;CC62;110E 1163 11A9;CC62;110E 1163 11A9; # (챢; 챢; 챢; 챢; 챢; ) HANGUL SYLLABLE CYAGG
+CC63;CC63;110E 1163 11AA;CC63;110E 1163 11AA; # (챣; 챣; 챣; 챣; 챣; ) HANGUL SYLLABLE CYAGS
+CC64;CC64;110E 1163 11AB;CC64;110E 1163 11AB; # (챤; 챤; 챤; 챤; 챤; ) HANGUL SYLLABLE CYAN
+CC65;CC65;110E 1163 11AC;CC65;110E 1163 11AC; # (챥; 챥; 챥; 챥; 챥; ) HANGUL SYLLABLE CYANJ
+CC66;CC66;110E 1163 11AD;CC66;110E 1163 11AD; # (챦; 챦; 챦; 챦; 챦; ) HANGUL SYLLABLE CYANH
+CC67;CC67;110E 1163 11AE;CC67;110E 1163 11AE; # (챧; 챧; 챧; 챧; 챧; ) HANGUL SYLLABLE CYAD
+CC68;CC68;110E 1163 11AF;CC68;110E 1163 11AF; # (챨; 챨; 챨; 챨; 챨; ) HANGUL SYLLABLE CYAL
+CC69;CC69;110E 1163 11B0;CC69;110E 1163 11B0; # (챩; 챩; 챩; 챩; 챩; ) HANGUL SYLLABLE CYALG
+CC6A;CC6A;110E 1163 11B1;CC6A;110E 1163 11B1; # (챪; 챪; 챪; 챪; 챪; ) HANGUL SYLLABLE CYALM
+CC6B;CC6B;110E 1163 11B2;CC6B;110E 1163 11B2; # (챫; 챫; 챫; 챫; 챫; ) HANGUL SYLLABLE CYALB
+CC6C;CC6C;110E 1163 11B3;CC6C;110E 1163 11B3; # (챬; 챬; 챬; 챬; 챬; ) HANGUL SYLLABLE CYALS
+CC6D;CC6D;110E 1163 11B4;CC6D;110E 1163 11B4; # (챭; 챭; 챭; 챭; 챭; ) HANGUL SYLLABLE CYALT
+CC6E;CC6E;110E 1163 11B5;CC6E;110E 1163 11B5; # (챮; 챮; 챮; 챮; 챮; ) HANGUL SYLLABLE CYALP
+CC6F;CC6F;110E 1163 11B6;CC6F;110E 1163 11B6; # (챯; 챯; 챯; 챯; 챯; ) HANGUL SYLLABLE CYALH
+CC70;CC70;110E 1163 11B7;CC70;110E 1163 11B7; # (챰; 챰; 챰; 챰; 챰; ) HANGUL SYLLABLE CYAM
+CC71;CC71;110E 1163 11B8;CC71;110E 1163 11B8; # (챱; 챱; 챱; 챱; 챱; ) HANGUL SYLLABLE CYAB
+CC72;CC72;110E 1163 11B9;CC72;110E 1163 11B9; # (챲; 챲; 챲; 챲; 챲; ) HANGUL SYLLABLE CYABS
+CC73;CC73;110E 1163 11BA;CC73;110E 1163 11BA; # (챳; 챳; 챳; 챳; 챳; ) HANGUL SYLLABLE CYAS
+CC74;CC74;110E 1163 11BB;CC74;110E 1163 11BB; # (챴; 챴; 챴; 챴; 챴; ) HANGUL SYLLABLE CYASS
+CC75;CC75;110E 1163 11BC;CC75;110E 1163 11BC; # (챵; 챵; 챵; 챵; 챵; ) HANGUL SYLLABLE CYANG
+CC76;CC76;110E 1163 11BD;CC76;110E 1163 11BD; # (챶; 챶; 챶; 챶; 챶; ) HANGUL SYLLABLE CYAJ
+CC77;CC77;110E 1163 11BE;CC77;110E 1163 11BE; # (챷; 챷; 챷; 챷; 챷; ) HANGUL SYLLABLE CYAC
+CC78;CC78;110E 1163 11BF;CC78;110E 1163 11BF; # (챸; 챸; 챸; 챸; 챸; ) HANGUL SYLLABLE CYAK
+CC79;CC79;110E 1163 11C0;CC79;110E 1163 11C0; # (챹; 챹; 챹; 챹; 챹; ) HANGUL SYLLABLE CYAT
+CC7A;CC7A;110E 1163 11C1;CC7A;110E 1163 11C1; # (챺; 챺; á„Žá…£á‡; 챺; á„Žá…£á‡; ) HANGUL SYLLABLE CYAP
+CC7B;CC7B;110E 1163 11C2;CC7B;110E 1163 11C2; # (챻; 챻; 챻; 챻; 챻; ) HANGUL SYLLABLE CYAH
+CC7C;CC7C;110E 1164;CC7C;110E 1164; # (ì±¼; ì±¼; á„Žá…¤; ì±¼; á„Žá…¤; ) HANGUL SYLLABLE CYAE
+CC7D;CC7D;110E 1164 11A8;CC7D;110E 1164 11A8; # (챽; 챽; 챽; 챽; 챽; ) HANGUL SYLLABLE CYAEG
+CC7E;CC7E;110E 1164 11A9;CC7E;110E 1164 11A9; # (챾; 챾; 챾; 챾; 챾; ) HANGUL SYLLABLE CYAEGG
+CC7F;CC7F;110E 1164 11AA;CC7F;110E 1164 11AA; # (챿; 챿; 챿; 챿; 챿; ) HANGUL SYLLABLE CYAEGS
+CC80;CC80;110E 1164 11AB;CC80;110E 1164 11AB; # (첀; 첀; 첀; 첀; 첀; ) HANGUL SYLLABLE CYAEN
+CC81;CC81;110E 1164 11AC;CC81;110E 1164 11AC; # (ì²; ì²; 첁; ì²; 첁; ) HANGUL SYLLABLE CYAENJ
+CC82;CC82;110E 1164 11AD;CC82;110E 1164 11AD; # (첂; 첂; 첂; 첂; 첂; ) HANGUL SYLLABLE CYAENH
+CC83;CC83;110E 1164 11AE;CC83;110E 1164 11AE; # (첃; 첃; 첃; 첃; 첃; ) HANGUL SYLLABLE CYAED
+CC84;CC84;110E 1164 11AF;CC84;110E 1164 11AF; # (첄; 첄; 첄; 첄; 첄; ) HANGUL SYLLABLE CYAEL
+CC85;CC85;110E 1164 11B0;CC85;110E 1164 11B0; # (첅; 첅; 첅; 첅; 첅; ) HANGUL SYLLABLE CYAELG
+CC86;CC86;110E 1164 11B1;CC86;110E 1164 11B1; # (첆; 첆; 첆; 첆; 첆; ) HANGUL SYLLABLE CYAELM
+CC87;CC87;110E 1164 11B2;CC87;110E 1164 11B2; # (첇; 첇; 첇; 첇; 첇; ) HANGUL SYLLABLE CYAELB
+CC88;CC88;110E 1164 11B3;CC88;110E 1164 11B3; # (첈; 첈; 첈; 첈; 첈; ) HANGUL SYLLABLE CYAELS
+CC89;CC89;110E 1164 11B4;CC89;110E 1164 11B4; # (첉; 첉; 첉; 첉; 첉; ) HANGUL SYLLABLE CYAELT
+CC8A;CC8A;110E 1164 11B5;CC8A;110E 1164 11B5; # (첊; 첊; 첊; 첊; 첊; ) HANGUL SYLLABLE CYAELP
+CC8B;CC8B;110E 1164 11B6;CC8B;110E 1164 11B6; # (첋; 첋; 첋; 첋; 첋; ) HANGUL SYLLABLE CYAELH
+CC8C;CC8C;110E 1164 11B7;CC8C;110E 1164 11B7; # (첌; 첌; 첌; 첌; 첌; ) HANGUL SYLLABLE CYAEM
+CC8D;CC8D;110E 1164 11B8;CC8D;110E 1164 11B8; # (ì²; ì²; 첍; ì²; 첍; ) HANGUL SYLLABLE CYAEB
+CC8E;CC8E;110E 1164 11B9;CC8E;110E 1164 11B9; # (첎; 첎; 첎; 첎; 첎; ) HANGUL SYLLABLE CYAEBS
+CC8F;CC8F;110E 1164 11BA;CC8F;110E 1164 11BA; # (ì²; ì²; 첏; ì²; 첏; ) HANGUL SYLLABLE CYAES
+CC90;CC90;110E 1164 11BB;CC90;110E 1164 11BB; # (ì²; ì²; 첐; ì²; 첐; ) HANGUL SYLLABLE CYAESS
+CC91;CC91;110E 1164 11BC;CC91;110E 1164 11BC; # (첑; 첑; 첑; 첑; 첑; ) HANGUL SYLLABLE CYAENG
+CC92;CC92;110E 1164 11BD;CC92;110E 1164 11BD; # (첒; 첒; 첒; 첒; 첒; ) HANGUL SYLLABLE CYAEJ
+CC93;CC93;110E 1164 11BE;CC93;110E 1164 11BE; # (첓; 첓; 첓; 첓; 첓; ) HANGUL SYLLABLE CYAEC
+CC94;CC94;110E 1164 11BF;CC94;110E 1164 11BF; # (첔; 첔; 첔; 첔; 첔; ) HANGUL SYLLABLE CYAEK
+CC95;CC95;110E 1164 11C0;CC95;110E 1164 11C0; # (첕; 첕; 첕; 첕; 첕; ) HANGUL SYLLABLE CYAET
+CC96;CC96;110E 1164 11C1;CC96;110E 1164 11C1; # (ì²–; ì²–; á„Žá…¤á‡; ì²–; á„Žá…¤á‡; ) HANGUL SYLLABLE CYAEP
+CC97;CC97;110E 1164 11C2;CC97;110E 1164 11C2; # (첗; 첗; 첗; 첗; 첗; ) HANGUL SYLLABLE CYAEH
+CC98;CC98;110E 1165;CC98;110E 1165; # (처; 처; 처; 처; 처; ) HANGUL SYLLABLE CEO
+CC99;CC99;110E 1165 11A8;CC99;110E 1165 11A8; # (척; 척; 척; 척; 척; ) HANGUL SYLLABLE CEOG
+CC9A;CC9A;110E 1165 11A9;CC9A;110E 1165 11A9; # (첚; 첚; 첚; 첚; 첚; ) HANGUL SYLLABLE CEOGG
+CC9B;CC9B;110E 1165 11AA;CC9B;110E 1165 11AA; # (첛; 첛; 첛; 첛; 첛; ) HANGUL SYLLABLE CEOGS
+CC9C;CC9C;110E 1165 11AB;CC9C;110E 1165 11AB; # (천; 천; 천; 천; 천; ) HANGUL SYLLABLE CEON
+CC9D;CC9D;110E 1165 11AC;CC9D;110E 1165 11AC; # (ì²; ì²; 첝; ì²; 첝; ) HANGUL SYLLABLE CEONJ
+CC9E;CC9E;110E 1165 11AD;CC9E;110E 1165 11AD; # (첞; 첞; 첞; 첞; 첞; ) HANGUL SYLLABLE CEONH
+CC9F;CC9F;110E 1165 11AE;CC9F;110E 1165 11AE; # (첟; 첟; 첟; 첟; 첟; ) HANGUL SYLLABLE CEOD
+CCA0;CCA0;110E 1165 11AF;CCA0;110E 1165 11AF; # (철; 철; 철; 철; 철; ) HANGUL SYLLABLE CEOL
+CCA1;CCA1;110E 1165 11B0;CCA1;110E 1165 11B0; # (첡; 첡; 첡; 첡; 첡; ) HANGUL SYLLABLE CEOLG
+CCA2;CCA2;110E 1165 11B1;CCA2;110E 1165 11B1; # (첢; 첢; 첢; 첢; 첢; ) HANGUL SYLLABLE CEOLM
+CCA3;CCA3;110E 1165 11B2;CCA3;110E 1165 11B2; # (첣; 첣; 첣; 첣; 첣; ) HANGUL SYLLABLE CEOLB
+CCA4;CCA4;110E 1165 11B3;CCA4;110E 1165 11B3; # (첤; 첤; 첤; 첤; 첤; ) HANGUL SYLLABLE CEOLS
+CCA5;CCA5;110E 1165 11B4;CCA5;110E 1165 11B4; # (첥; 첥; 첥; 첥; 첥; ) HANGUL SYLLABLE CEOLT
+CCA6;CCA6;110E 1165 11B5;CCA6;110E 1165 11B5; # (첦; 첦; 첦; 첦; 첦; ) HANGUL SYLLABLE CEOLP
+CCA7;CCA7;110E 1165 11B6;CCA7;110E 1165 11B6; # (첧; 첧; 첧; 첧; 첧; ) HANGUL SYLLABLE CEOLH
+CCA8;CCA8;110E 1165 11B7;CCA8;110E 1165 11B7; # (첨; 첨; 첨; 첨; 첨; ) HANGUL SYLLABLE CEOM
+CCA9;CCA9;110E 1165 11B8;CCA9;110E 1165 11B8; # (첩; 첩; 첩; 첩; 첩; ) HANGUL SYLLABLE CEOB
+CCAA;CCAA;110E 1165 11B9;CCAA;110E 1165 11B9; # (첪; 첪; 첪; 첪; 첪; ) HANGUL SYLLABLE CEOBS
+CCAB;CCAB;110E 1165 11BA;CCAB;110E 1165 11BA; # (첫; 첫; 첫; 첫; 첫; ) HANGUL SYLLABLE CEOS
+CCAC;CCAC;110E 1165 11BB;CCAC;110E 1165 11BB; # (첬; 첬; 첬; 첬; 첬; ) HANGUL SYLLABLE CEOSS
+CCAD;CCAD;110E 1165 11BC;CCAD;110E 1165 11BC; # (청; 청; 청; 청; 청; ) HANGUL SYLLABLE CEONG
+CCAE;CCAE;110E 1165 11BD;CCAE;110E 1165 11BD; # (첮; 첮; 첮; 첮; 첮; ) HANGUL SYLLABLE CEOJ
+CCAF;CCAF;110E 1165 11BE;CCAF;110E 1165 11BE; # (첯; 첯; 첯; 첯; 첯; ) HANGUL SYLLABLE CEOC
+CCB0;CCB0;110E 1165 11BF;CCB0;110E 1165 11BF; # (첰; 첰; 첰; 첰; 첰; ) HANGUL SYLLABLE CEOK
+CCB1;CCB1;110E 1165 11C0;CCB1;110E 1165 11C0; # (첱; 첱; 첱; 첱; 첱; ) HANGUL SYLLABLE CEOT
+CCB2;CCB2;110E 1165 11C1;CCB2;110E 1165 11C1; # (ì²²; ì²²; á„Žá…¥á‡; ì²²; á„Žá…¥á‡; ) HANGUL SYLLABLE CEOP
+CCB3;CCB3;110E 1165 11C2;CCB3;110E 1165 11C2; # (첳; 첳; 첳; 첳; 첳; ) HANGUL SYLLABLE CEOH
+CCB4;CCB4;110E 1166;CCB4;110E 1166; # (ì²´; ì²´; á„Žá…¦; ì²´; á„Žá…¦; ) HANGUL SYLLABLE CE
+CCB5;CCB5;110E 1166 11A8;CCB5;110E 1166 11A8; # (첵; 첵; 첵; 첵; 첵; ) HANGUL SYLLABLE CEG
+CCB6;CCB6;110E 1166 11A9;CCB6;110E 1166 11A9; # (첶; 첶; 첶; 첶; 첶; ) HANGUL SYLLABLE CEGG
+CCB7;CCB7;110E 1166 11AA;CCB7;110E 1166 11AA; # (첷; 첷; 첷; 첷; 첷; ) HANGUL SYLLABLE CEGS
+CCB8;CCB8;110E 1166 11AB;CCB8;110E 1166 11AB; # (첸; 첸; 첸; 첸; 첸; ) HANGUL SYLLABLE CEN
+CCB9;CCB9;110E 1166 11AC;CCB9;110E 1166 11AC; # (첹; 첹; 첹; 첹; 첹; ) HANGUL SYLLABLE CENJ
+CCBA;CCBA;110E 1166 11AD;CCBA;110E 1166 11AD; # (첺; 첺; 첺; 첺; 첺; ) HANGUL SYLLABLE CENH
+CCBB;CCBB;110E 1166 11AE;CCBB;110E 1166 11AE; # (첻; 첻; 첻; 첻; 첻; ) HANGUL SYLLABLE CED
+CCBC;CCBC;110E 1166 11AF;CCBC;110E 1166 11AF; # (첼; 첼; 첼; 첼; 첼; ) HANGUL SYLLABLE CEL
+CCBD;CCBD;110E 1166 11B0;CCBD;110E 1166 11B0; # (첽; 첽; 첽; 첽; 첽; ) HANGUL SYLLABLE CELG
+CCBE;CCBE;110E 1166 11B1;CCBE;110E 1166 11B1; # (첾; 첾; 첾; 첾; 첾; ) HANGUL SYLLABLE CELM
+CCBF;CCBF;110E 1166 11B2;CCBF;110E 1166 11B2; # (첿; 첿; 첿; 첿; 첿; ) HANGUL SYLLABLE CELB
+CCC0;CCC0;110E 1166 11B3;CCC0;110E 1166 11B3; # (쳀; 쳀; 쳀; 쳀; 쳀; ) HANGUL SYLLABLE CELS
+CCC1;CCC1;110E 1166 11B4;CCC1;110E 1166 11B4; # (ì³; ì³; 쳁; ì³; 쳁; ) HANGUL SYLLABLE CELT
+CCC2;CCC2;110E 1166 11B5;CCC2;110E 1166 11B5; # (쳂; 쳂; 쳂; 쳂; 쳂; ) HANGUL SYLLABLE CELP
+CCC3;CCC3;110E 1166 11B6;CCC3;110E 1166 11B6; # (쳃; 쳃; 쳃; 쳃; 쳃; ) HANGUL SYLLABLE CELH
+CCC4;CCC4;110E 1166 11B7;CCC4;110E 1166 11B7; # (쳄; 쳄; 쳄; 쳄; 쳄; ) HANGUL SYLLABLE CEM
+CCC5;CCC5;110E 1166 11B8;CCC5;110E 1166 11B8; # (쳅; 쳅; 쳅; 쳅; 쳅; ) HANGUL SYLLABLE CEB
+CCC6;CCC6;110E 1166 11B9;CCC6;110E 1166 11B9; # (쳆; 쳆; 쳆; 쳆; 쳆; ) HANGUL SYLLABLE CEBS
+CCC7;CCC7;110E 1166 11BA;CCC7;110E 1166 11BA; # (쳇; 쳇; 쳇; 쳇; 쳇; ) HANGUL SYLLABLE CES
+CCC8;CCC8;110E 1166 11BB;CCC8;110E 1166 11BB; # (쳈; 쳈; 쳈; 쳈; 쳈; ) HANGUL SYLLABLE CESS
+CCC9;CCC9;110E 1166 11BC;CCC9;110E 1166 11BC; # (쳉; 쳉; 쳉; 쳉; 쳉; ) HANGUL SYLLABLE CENG
+CCCA;CCCA;110E 1166 11BD;CCCA;110E 1166 11BD; # (쳊; 쳊; 쳊; 쳊; 쳊; ) HANGUL SYLLABLE CEJ
+CCCB;CCCB;110E 1166 11BE;CCCB;110E 1166 11BE; # (쳋; 쳋; 쳋; 쳋; 쳋; ) HANGUL SYLLABLE CEC
+CCCC;CCCC;110E 1166 11BF;CCCC;110E 1166 11BF; # (쳌; 쳌; 쳌; 쳌; 쳌; ) HANGUL SYLLABLE CEK
+CCCD;CCCD;110E 1166 11C0;CCCD;110E 1166 11C0; # (ì³; ì³; 쳍; ì³; 쳍; ) HANGUL SYLLABLE CET
+CCCE;CCCE;110E 1166 11C1;CCCE;110E 1166 11C1; # (쳎; 쳎; á„Žá…¦á‡; 쳎; á„Žá…¦á‡; ) HANGUL SYLLABLE CEP
+CCCF;CCCF;110E 1166 11C2;CCCF;110E 1166 11C2; # (ì³; ì³; 쳏; ì³; 쳏; ) HANGUL SYLLABLE CEH
+CCD0;CCD0;110E 1167;CCD0;110E 1167; # (ì³; ì³; á„Žá…§; ì³; á„Žá…§; ) HANGUL SYLLABLE CYEO
+CCD1;CCD1;110E 1167 11A8;CCD1;110E 1167 11A8; # (쳑; 쳑; 쳑; 쳑; 쳑; ) HANGUL SYLLABLE CYEOG
+CCD2;CCD2;110E 1167 11A9;CCD2;110E 1167 11A9; # (쳒; 쳒; 쳒; 쳒; 쳒; ) HANGUL SYLLABLE CYEOGG
+CCD3;CCD3;110E 1167 11AA;CCD3;110E 1167 11AA; # (쳓; 쳓; 쳓; 쳓; 쳓; ) HANGUL SYLLABLE CYEOGS
+CCD4;CCD4;110E 1167 11AB;CCD4;110E 1167 11AB; # (쳔; 쳔; 쳔; 쳔; 쳔; ) HANGUL SYLLABLE CYEON
+CCD5;CCD5;110E 1167 11AC;CCD5;110E 1167 11AC; # (쳕; 쳕; 쳕; 쳕; 쳕; ) HANGUL SYLLABLE CYEONJ
+CCD6;CCD6;110E 1167 11AD;CCD6;110E 1167 11AD; # (쳖; 쳖; 쳖; 쳖; 쳖; ) HANGUL SYLLABLE CYEONH
+CCD7;CCD7;110E 1167 11AE;CCD7;110E 1167 11AE; # (쳗; 쳗; 쳗; 쳗; 쳗; ) HANGUL SYLLABLE CYEOD
+CCD8;CCD8;110E 1167 11AF;CCD8;110E 1167 11AF; # (쳘; 쳘; 쳘; 쳘; 쳘; ) HANGUL SYLLABLE CYEOL
+CCD9;CCD9;110E 1167 11B0;CCD9;110E 1167 11B0; # (쳙; 쳙; 쳙; 쳙; 쳙; ) HANGUL SYLLABLE CYEOLG
+CCDA;CCDA;110E 1167 11B1;CCDA;110E 1167 11B1; # (쳚; 쳚; 쳚; 쳚; 쳚; ) HANGUL SYLLABLE CYEOLM
+CCDB;CCDB;110E 1167 11B2;CCDB;110E 1167 11B2; # (쳛; 쳛; 쳛; 쳛; 쳛; ) HANGUL SYLLABLE CYEOLB
+CCDC;CCDC;110E 1167 11B3;CCDC;110E 1167 11B3; # (쳜; 쳜; 쳜; 쳜; 쳜; ) HANGUL SYLLABLE CYEOLS
+CCDD;CCDD;110E 1167 11B4;CCDD;110E 1167 11B4; # (ì³; ì³; 쳝; ì³; 쳝; ) HANGUL SYLLABLE CYEOLT
+CCDE;CCDE;110E 1167 11B5;CCDE;110E 1167 11B5; # (쳞; 쳞; 쳞; 쳞; 쳞; ) HANGUL SYLLABLE CYEOLP
+CCDF;CCDF;110E 1167 11B6;CCDF;110E 1167 11B6; # (쳟; 쳟; 쳟; 쳟; 쳟; ) HANGUL SYLLABLE CYEOLH
+CCE0;CCE0;110E 1167 11B7;CCE0;110E 1167 11B7; # (쳠; 쳠; 쳠; 쳠; 쳠; ) HANGUL SYLLABLE CYEOM
+CCE1;CCE1;110E 1167 11B8;CCE1;110E 1167 11B8; # (쳡; 쳡; 쳡; 쳡; 쳡; ) HANGUL SYLLABLE CYEOB
+CCE2;CCE2;110E 1167 11B9;CCE2;110E 1167 11B9; # (쳢; 쳢; 쳢; 쳢; 쳢; ) HANGUL SYLLABLE CYEOBS
+CCE3;CCE3;110E 1167 11BA;CCE3;110E 1167 11BA; # (쳣; 쳣; 쳣; 쳣; 쳣; ) HANGUL SYLLABLE CYEOS
+CCE4;CCE4;110E 1167 11BB;CCE4;110E 1167 11BB; # (쳤; 쳤; 쳤; 쳤; 쳤; ) HANGUL SYLLABLE CYEOSS
+CCE5;CCE5;110E 1167 11BC;CCE5;110E 1167 11BC; # (쳥; 쳥; 쳥; 쳥; 쳥; ) HANGUL SYLLABLE CYEONG
+CCE6;CCE6;110E 1167 11BD;CCE6;110E 1167 11BD; # (쳦; 쳦; 쳦; 쳦; 쳦; ) HANGUL SYLLABLE CYEOJ
+CCE7;CCE7;110E 1167 11BE;CCE7;110E 1167 11BE; # (쳧; 쳧; 쳧; 쳧; 쳧; ) HANGUL SYLLABLE CYEOC
+CCE8;CCE8;110E 1167 11BF;CCE8;110E 1167 11BF; # (쳨; 쳨; 쳨; 쳨; 쳨; ) HANGUL SYLLABLE CYEOK
+CCE9;CCE9;110E 1167 11C0;CCE9;110E 1167 11C0; # (쳩; 쳩; 쳩; 쳩; 쳩; ) HANGUL SYLLABLE CYEOT
+CCEA;CCEA;110E 1167 11C1;CCEA;110E 1167 11C1; # (쳪; 쳪; á„Žá…§á‡; 쳪; á„Žá…§á‡; ) HANGUL SYLLABLE CYEOP
+CCEB;CCEB;110E 1167 11C2;CCEB;110E 1167 11C2; # (쳫; 쳫; 쳫; 쳫; 쳫; ) HANGUL SYLLABLE CYEOH
+CCEC;CCEC;110E 1168;CCEC;110E 1168; # (쳬; 쳬; 쳬; 쳬; 쳬; ) HANGUL SYLLABLE CYE
+CCED;CCED;110E 1168 11A8;CCED;110E 1168 11A8; # (쳭; 쳭; 쳭; 쳭; 쳭; ) HANGUL SYLLABLE CYEG
+CCEE;CCEE;110E 1168 11A9;CCEE;110E 1168 11A9; # (쳮; 쳮; 쳮; 쳮; 쳮; ) HANGUL SYLLABLE CYEGG
+CCEF;CCEF;110E 1168 11AA;CCEF;110E 1168 11AA; # (쳯; 쳯; 쳯; 쳯; 쳯; ) HANGUL SYLLABLE CYEGS
+CCF0;CCF0;110E 1168 11AB;CCF0;110E 1168 11AB; # (쳰; 쳰; 쳰; 쳰; 쳰; ) HANGUL SYLLABLE CYEN
+CCF1;CCF1;110E 1168 11AC;CCF1;110E 1168 11AC; # (쳱; 쳱; 쳱; 쳱; 쳱; ) HANGUL SYLLABLE CYENJ
+CCF2;CCF2;110E 1168 11AD;CCF2;110E 1168 11AD; # (쳲; 쳲; 쳲; 쳲; 쳲; ) HANGUL SYLLABLE CYENH
+CCF3;CCF3;110E 1168 11AE;CCF3;110E 1168 11AE; # (쳳; 쳳; 쳳; 쳳; 쳳; ) HANGUL SYLLABLE CYED
+CCF4;CCF4;110E 1168 11AF;CCF4;110E 1168 11AF; # (쳴; 쳴; 쳴; 쳴; 쳴; ) HANGUL SYLLABLE CYEL
+CCF5;CCF5;110E 1168 11B0;CCF5;110E 1168 11B0; # (쳵; 쳵; 쳵; 쳵; 쳵; ) HANGUL SYLLABLE CYELG
+CCF6;CCF6;110E 1168 11B1;CCF6;110E 1168 11B1; # (쳶; 쳶; 쳶; 쳶; 쳶; ) HANGUL SYLLABLE CYELM
+CCF7;CCF7;110E 1168 11B2;CCF7;110E 1168 11B2; # (쳷; 쳷; 쳷; 쳷; 쳷; ) HANGUL SYLLABLE CYELB
+CCF8;CCF8;110E 1168 11B3;CCF8;110E 1168 11B3; # (쳸; 쳸; 쳸; 쳸; 쳸; ) HANGUL SYLLABLE CYELS
+CCF9;CCF9;110E 1168 11B4;CCF9;110E 1168 11B4; # (쳹; 쳹; 쳹; 쳹; 쳹; ) HANGUL SYLLABLE CYELT
+CCFA;CCFA;110E 1168 11B5;CCFA;110E 1168 11B5; # (쳺; 쳺; 쳺; 쳺; 쳺; ) HANGUL SYLLABLE CYELP
+CCFB;CCFB;110E 1168 11B6;CCFB;110E 1168 11B6; # (쳻; 쳻; 쳻; 쳻; 쳻; ) HANGUL SYLLABLE CYELH
+CCFC;CCFC;110E 1168 11B7;CCFC;110E 1168 11B7; # (쳼; 쳼; 쳼; 쳼; 쳼; ) HANGUL SYLLABLE CYEM
+CCFD;CCFD;110E 1168 11B8;CCFD;110E 1168 11B8; # (쳽; 쳽; 쳽; 쳽; 쳽; ) HANGUL SYLLABLE CYEB
+CCFE;CCFE;110E 1168 11B9;CCFE;110E 1168 11B9; # (쳾; 쳾; 쳾; 쳾; 쳾; ) HANGUL SYLLABLE CYEBS
+CCFF;CCFF;110E 1168 11BA;CCFF;110E 1168 11BA; # (쳿; 쳿; 쳿; 쳿; 쳿; ) HANGUL SYLLABLE CYES
+CD00;CD00;110E 1168 11BB;CD00;110E 1168 11BB; # (촀; 촀; 촀; 촀; 촀; ) HANGUL SYLLABLE CYESS
+CD01;CD01;110E 1168 11BC;CD01;110E 1168 11BC; # (ì´; ì´; 촁; ì´; 촁; ) HANGUL SYLLABLE CYENG
+CD02;CD02;110E 1168 11BD;CD02;110E 1168 11BD; # (촂; 촂; 촂; 촂; 촂; ) HANGUL SYLLABLE CYEJ
+CD03;CD03;110E 1168 11BE;CD03;110E 1168 11BE; # (촃; 촃; 촃; 촃; 촃; ) HANGUL SYLLABLE CYEC
+CD04;CD04;110E 1168 11BF;CD04;110E 1168 11BF; # (촄; 촄; 촄; 촄; 촄; ) HANGUL SYLLABLE CYEK
+CD05;CD05;110E 1168 11C0;CD05;110E 1168 11C0; # (촅; 촅; 촅; 촅; 촅; ) HANGUL SYLLABLE CYET
+CD06;CD06;110E 1168 11C1;CD06;110E 1168 11C1; # (ì´†; ì´†; á„Žá…¨á‡; ì´†; á„Žá…¨á‡; ) HANGUL SYLLABLE CYEP
+CD07;CD07;110E 1168 11C2;CD07;110E 1168 11C2; # (촇; 촇; 촇; 촇; 촇; ) HANGUL SYLLABLE CYEH
+CD08;CD08;110E 1169;CD08;110E 1169; # (ì´ˆ; ì´ˆ; á„Žá…©; ì´ˆ; á„Žá…©; ) HANGUL SYLLABLE CO
+CD09;CD09;110E 1169 11A8;CD09;110E 1169 11A8; # (촉; 촉; 촉; 촉; 촉; ) HANGUL SYLLABLE COG
+CD0A;CD0A;110E 1169 11A9;CD0A;110E 1169 11A9; # (촊; 촊; 촊; 촊; 촊; ) HANGUL SYLLABLE COGG
+CD0B;CD0B;110E 1169 11AA;CD0B;110E 1169 11AA; # (촋; 촋; 촋; 촋; 촋; ) HANGUL SYLLABLE COGS
+CD0C;CD0C;110E 1169 11AB;CD0C;110E 1169 11AB; # (촌; 촌; 촌; 촌; 촌; ) HANGUL SYLLABLE CON
+CD0D;CD0D;110E 1169 11AC;CD0D;110E 1169 11AC; # (ì´; ì´; 촍; ì´; 촍; ) HANGUL SYLLABLE CONJ
+CD0E;CD0E;110E 1169 11AD;CD0E;110E 1169 11AD; # (촎; 촎; 촎; 촎; 촎; ) HANGUL SYLLABLE CONH
+CD0F;CD0F;110E 1169 11AE;CD0F;110E 1169 11AE; # (ì´; ì´; 촏; ì´; 촏; ) HANGUL SYLLABLE COD
+CD10;CD10;110E 1169 11AF;CD10;110E 1169 11AF; # (ì´; ì´; 촐; ì´; 촐; ) HANGUL SYLLABLE COL
+CD11;CD11;110E 1169 11B0;CD11;110E 1169 11B0; # (촑; 촑; 촑; 촑; 촑; ) HANGUL SYLLABLE COLG
+CD12;CD12;110E 1169 11B1;CD12;110E 1169 11B1; # (촒; 촒; 촒; 촒; 촒; ) HANGUL SYLLABLE COLM
+CD13;CD13;110E 1169 11B2;CD13;110E 1169 11B2; # (촓; 촓; 촓; 촓; 촓; ) HANGUL SYLLABLE COLB
+CD14;CD14;110E 1169 11B3;CD14;110E 1169 11B3; # (촔; 촔; 촔; 촔; 촔; ) HANGUL SYLLABLE COLS
+CD15;CD15;110E 1169 11B4;CD15;110E 1169 11B4; # (촕; 촕; 촕; 촕; 촕; ) HANGUL SYLLABLE COLT
+CD16;CD16;110E 1169 11B5;CD16;110E 1169 11B5; # (촖; 촖; 촖; 촖; 촖; ) HANGUL SYLLABLE COLP
+CD17;CD17;110E 1169 11B6;CD17;110E 1169 11B6; # (촗; 촗; 촗; 촗; 촗; ) HANGUL SYLLABLE COLH
+CD18;CD18;110E 1169 11B7;CD18;110E 1169 11B7; # (촘; 촘; 촘; 촘; 촘; ) HANGUL SYLLABLE COM
+CD19;CD19;110E 1169 11B8;CD19;110E 1169 11B8; # (촙; 촙; 촙; 촙; 촙; ) HANGUL SYLLABLE COB
+CD1A;CD1A;110E 1169 11B9;CD1A;110E 1169 11B9; # (촚; 촚; 촚; 촚; 촚; ) HANGUL SYLLABLE COBS
+CD1B;CD1B;110E 1169 11BA;CD1B;110E 1169 11BA; # (촛; 촛; 촛; 촛; 촛; ) HANGUL SYLLABLE COS
+CD1C;CD1C;110E 1169 11BB;CD1C;110E 1169 11BB; # (촜; 촜; 촜; 촜; 촜; ) HANGUL SYLLABLE COSS
+CD1D;CD1D;110E 1169 11BC;CD1D;110E 1169 11BC; # (ì´; ì´; 총; ì´; 총; ) HANGUL SYLLABLE CONG
+CD1E;CD1E;110E 1169 11BD;CD1E;110E 1169 11BD; # (촞; 촞; 촞; 촞; 촞; ) HANGUL SYLLABLE COJ
+CD1F;CD1F;110E 1169 11BE;CD1F;110E 1169 11BE; # (촟; 촟; 촟; 촟; 촟; ) HANGUL SYLLABLE COC
+CD20;CD20;110E 1169 11BF;CD20;110E 1169 11BF; # (촠; 촠; 촠; 촠; 촠; ) HANGUL SYLLABLE COK
+CD21;CD21;110E 1169 11C0;CD21;110E 1169 11C0; # (촡; 촡; 촡; 촡; 촡; ) HANGUL SYLLABLE COT
+CD22;CD22;110E 1169 11C1;CD22;110E 1169 11C1; # (ì´¢; ì´¢; á„Žá…©á‡; ì´¢; á„Žá…©á‡; ) HANGUL SYLLABLE COP
+CD23;CD23;110E 1169 11C2;CD23;110E 1169 11C2; # (촣; 촣; 촣; 촣; 촣; ) HANGUL SYLLABLE COH
+CD24;CD24;110E 116A;CD24;110E 116A; # (ì´¤; ì´¤; á„Žá…ª; ì´¤; á„Žá…ª; ) HANGUL SYLLABLE CWA
+CD25;CD25;110E 116A 11A8;CD25;110E 116A 11A8; # (촥; 촥; 촥; 촥; 촥; ) HANGUL SYLLABLE CWAG
+CD26;CD26;110E 116A 11A9;CD26;110E 116A 11A9; # (촦; 촦; 촦; 촦; 촦; ) HANGUL SYLLABLE CWAGG
+CD27;CD27;110E 116A 11AA;CD27;110E 116A 11AA; # (촧; 촧; 촧; 촧; 촧; ) HANGUL SYLLABLE CWAGS
+CD28;CD28;110E 116A 11AB;CD28;110E 116A 11AB; # (촨; 촨; 촨; 촨; 촨; ) HANGUL SYLLABLE CWAN
+CD29;CD29;110E 116A 11AC;CD29;110E 116A 11AC; # (촩; 촩; 촩; 촩; 촩; ) HANGUL SYLLABLE CWANJ
+CD2A;CD2A;110E 116A 11AD;CD2A;110E 116A 11AD; # (촪; 촪; 촪; 촪; 촪; ) HANGUL SYLLABLE CWANH
+CD2B;CD2B;110E 116A 11AE;CD2B;110E 116A 11AE; # (촫; 촫; 촫; 촫; 촫; ) HANGUL SYLLABLE CWAD
+CD2C;CD2C;110E 116A 11AF;CD2C;110E 116A 11AF; # (촬; 촬; 촬; 촬; 촬; ) HANGUL SYLLABLE CWAL
+CD2D;CD2D;110E 116A 11B0;CD2D;110E 116A 11B0; # (촭; 촭; 촭; 촭; 촭; ) HANGUL SYLLABLE CWALG
+CD2E;CD2E;110E 116A 11B1;CD2E;110E 116A 11B1; # (촮; 촮; 촮; 촮; 촮; ) HANGUL SYLLABLE CWALM
+CD2F;CD2F;110E 116A 11B2;CD2F;110E 116A 11B2; # (촯; 촯; 촯; 촯; 촯; ) HANGUL SYLLABLE CWALB
+CD30;CD30;110E 116A 11B3;CD30;110E 116A 11B3; # (촰; 촰; 촰; 촰; 촰; ) HANGUL SYLLABLE CWALS
+CD31;CD31;110E 116A 11B4;CD31;110E 116A 11B4; # (촱; 촱; 촱; 촱; 촱; ) HANGUL SYLLABLE CWALT
+CD32;CD32;110E 116A 11B5;CD32;110E 116A 11B5; # (촲; 촲; 촲; 촲; 촲; ) HANGUL SYLLABLE CWALP
+CD33;CD33;110E 116A 11B6;CD33;110E 116A 11B6; # (촳; 촳; 촳; 촳; 촳; ) HANGUL SYLLABLE CWALH
+CD34;CD34;110E 116A 11B7;CD34;110E 116A 11B7; # (촴; 촴; 촴; 촴; 촴; ) HANGUL SYLLABLE CWAM
+CD35;CD35;110E 116A 11B8;CD35;110E 116A 11B8; # (촵; 촵; 촵; 촵; 촵; ) HANGUL SYLLABLE CWAB
+CD36;CD36;110E 116A 11B9;CD36;110E 116A 11B9; # (촶; 촶; 촶; 촶; 촶; ) HANGUL SYLLABLE CWABS
+CD37;CD37;110E 116A 11BA;CD37;110E 116A 11BA; # (촷; 촷; 촷; 촷; 촷; ) HANGUL SYLLABLE CWAS
+CD38;CD38;110E 116A 11BB;CD38;110E 116A 11BB; # (촸; 촸; 촸; 촸; 촸; ) HANGUL SYLLABLE CWASS
+CD39;CD39;110E 116A 11BC;CD39;110E 116A 11BC; # (촹; 촹; 촹; 촹; 촹; ) HANGUL SYLLABLE CWANG
+CD3A;CD3A;110E 116A 11BD;CD3A;110E 116A 11BD; # (촺; 촺; 촺; 촺; 촺; ) HANGUL SYLLABLE CWAJ
+CD3B;CD3B;110E 116A 11BE;CD3B;110E 116A 11BE; # (촻; 촻; 촻; 촻; 촻; ) HANGUL SYLLABLE CWAC
+CD3C;CD3C;110E 116A 11BF;CD3C;110E 116A 11BF; # (촼; 촼; 촼; 촼; 촼; ) HANGUL SYLLABLE CWAK
+CD3D;CD3D;110E 116A 11C0;CD3D;110E 116A 11C0; # (촽; 촽; 촽; 촽; 촽; ) HANGUL SYLLABLE CWAT
+CD3E;CD3E;110E 116A 11C1;CD3E;110E 116A 11C1; # (ì´¾; ì´¾; á„Žá…ªá‡; ì´¾; á„Žá…ªá‡; ) HANGUL SYLLABLE CWAP
+CD3F;CD3F;110E 116A 11C2;CD3F;110E 116A 11C2; # (촿; 촿; 촿; 촿; 촿; ) HANGUL SYLLABLE CWAH
+CD40;CD40;110E 116B;CD40;110E 116B; # (ìµ€; ìµ€; á„Žá…«; ìµ€; á„Žá…«; ) HANGUL SYLLABLE CWAE
+CD41;CD41;110E 116B 11A8;CD41;110E 116B 11A8; # (ìµ; ìµ; 쵁; ìµ; 쵁; ) HANGUL SYLLABLE CWAEG
+CD42;CD42;110E 116B 11A9;CD42;110E 116B 11A9; # (쵂; 쵂; 쵂; 쵂; 쵂; ) HANGUL SYLLABLE CWAEGG
+CD43;CD43;110E 116B 11AA;CD43;110E 116B 11AA; # (쵃; 쵃; 쵃; 쵃; 쵃; ) HANGUL SYLLABLE CWAEGS
+CD44;CD44;110E 116B 11AB;CD44;110E 116B 11AB; # (쵄; 쵄; 쵄; 쵄; 쵄; ) HANGUL SYLLABLE CWAEN
+CD45;CD45;110E 116B 11AC;CD45;110E 116B 11AC; # (쵅; 쵅; 쵅; 쵅; 쵅; ) HANGUL SYLLABLE CWAENJ
+CD46;CD46;110E 116B 11AD;CD46;110E 116B 11AD; # (쵆; 쵆; 쵆; 쵆; 쵆; ) HANGUL SYLLABLE CWAENH
+CD47;CD47;110E 116B 11AE;CD47;110E 116B 11AE; # (쵇; 쵇; 쵇; 쵇; 쵇; ) HANGUL SYLLABLE CWAED
+CD48;CD48;110E 116B 11AF;CD48;110E 116B 11AF; # (쵈; 쵈; 쵈; 쵈; 쵈; ) HANGUL SYLLABLE CWAEL
+CD49;CD49;110E 116B 11B0;CD49;110E 116B 11B0; # (쵉; 쵉; 쵉; 쵉; 쵉; ) HANGUL SYLLABLE CWAELG
+CD4A;CD4A;110E 116B 11B1;CD4A;110E 116B 11B1; # (쵊; 쵊; 쵊; 쵊; 쵊; ) HANGUL SYLLABLE CWAELM
+CD4B;CD4B;110E 116B 11B2;CD4B;110E 116B 11B2; # (쵋; 쵋; 쵋; 쵋; 쵋; ) HANGUL SYLLABLE CWAELB
+CD4C;CD4C;110E 116B 11B3;CD4C;110E 116B 11B3; # (쵌; 쵌; 쵌; 쵌; 쵌; ) HANGUL SYLLABLE CWAELS
+CD4D;CD4D;110E 116B 11B4;CD4D;110E 116B 11B4; # (ìµ; ìµ; 쵍; ìµ; 쵍; ) HANGUL SYLLABLE CWAELT
+CD4E;CD4E;110E 116B 11B5;CD4E;110E 116B 11B5; # (쵎; 쵎; 쵎; 쵎; 쵎; ) HANGUL SYLLABLE CWAELP
+CD4F;CD4F;110E 116B 11B6;CD4F;110E 116B 11B6; # (ìµ; ìµ; 쵏; ìµ; 쵏; ) HANGUL SYLLABLE CWAELH
+CD50;CD50;110E 116B 11B7;CD50;110E 116B 11B7; # (ìµ; ìµ; 쵐; ìµ; 쵐; ) HANGUL SYLLABLE CWAEM
+CD51;CD51;110E 116B 11B8;CD51;110E 116B 11B8; # (쵑; 쵑; 쵑; 쵑; 쵑; ) HANGUL SYLLABLE CWAEB
+CD52;CD52;110E 116B 11B9;CD52;110E 116B 11B9; # (쵒; 쵒; 쵒; 쵒; 쵒; ) HANGUL SYLLABLE CWAEBS
+CD53;CD53;110E 116B 11BA;CD53;110E 116B 11BA; # (쵓; 쵓; 쵓; 쵓; 쵓; ) HANGUL SYLLABLE CWAES
+CD54;CD54;110E 116B 11BB;CD54;110E 116B 11BB; # (쵔; 쵔; 쵔; 쵔; 쵔; ) HANGUL SYLLABLE CWAESS
+CD55;CD55;110E 116B 11BC;CD55;110E 116B 11BC; # (쵕; 쵕; 쵕; 쵕; 쵕; ) HANGUL SYLLABLE CWAENG
+CD56;CD56;110E 116B 11BD;CD56;110E 116B 11BD; # (쵖; 쵖; 쵖; 쵖; 쵖; ) HANGUL SYLLABLE CWAEJ
+CD57;CD57;110E 116B 11BE;CD57;110E 116B 11BE; # (쵗; 쵗; 쵗; 쵗; 쵗; ) HANGUL SYLLABLE CWAEC
+CD58;CD58;110E 116B 11BF;CD58;110E 116B 11BF; # (쵘; 쵘; 쵘; 쵘; 쵘; ) HANGUL SYLLABLE CWAEK
+CD59;CD59;110E 116B 11C0;CD59;110E 116B 11C0; # (쵙; 쵙; 쵙; 쵙; 쵙; ) HANGUL SYLLABLE CWAET
+CD5A;CD5A;110E 116B 11C1;CD5A;110E 116B 11C1; # (쵚; 쵚; á„Žá…«á‡; 쵚; á„Žá…«á‡; ) HANGUL SYLLABLE CWAEP
+CD5B;CD5B;110E 116B 11C2;CD5B;110E 116B 11C2; # (쵛; 쵛; 쵛; 쵛; 쵛; ) HANGUL SYLLABLE CWAEH
+CD5C;CD5C;110E 116C;CD5C;110E 116C; # (최; 최; 최; 최; 최; ) HANGUL SYLLABLE COE
+CD5D;CD5D;110E 116C 11A8;CD5D;110E 116C 11A8; # (ìµ; ìµ; 쵝; ìµ; 쵝; ) HANGUL SYLLABLE COEG
+CD5E;CD5E;110E 116C 11A9;CD5E;110E 116C 11A9; # (쵞; 쵞; 쵞; 쵞; 쵞; ) HANGUL SYLLABLE COEGG
+CD5F;CD5F;110E 116C 11AA;CD5F;110E 116C 11AA; # (쵟; 쵟; 쵟; 쵟; 쵟; ) HANGUL SYLLABLE COEGS
+CD60;CD60;110E 116C 11AB;CD60;110E 116C 11AB; # (쵠; 쵠; 쵠; 쵠; 쵠; ) HANGUL SYLLABLE COEN
+CD61;CD61;110E 116C 11AC;CD61;110E 116C 11AC; # (쵡; 쵡; 쵡; 쵡; 쵡; ) HANGUL SYLLABLE COENJ
+CD62;CD62;110E 116C 11AD;CD62;110E 116C 11AD; # (쵢; 쵢; 쵢; 쵢; 쵢; ) HANGUL SYLLABLE COENH
+CD63;CD63;110E 116C 11AE;CD63;110E 116C 11AE; # (쵣; 쵣; 쵣; 쵣; 쵣; ) HANGUL SYLLABLE COED
+CD64;CD64;110E 116C 11AF;CD64;110E 116C 11AF; # (쵤; 쵤; 쵤; 쵤; 쵤; ) HANGUL SYLLABLE COEL
+CD65;CD65;110E 116C 11B0;CD65;110E 116C 11B0; # (쵥; 쵥; 쵥; 쵥; 쵥; ) HANGUL SYLLABLE COELG
+CD66;CD66;110E 116C 11B1;CD66;110E 116C 11B1; # (쵦; 쵦; 쵦; 쵦; 쵦; ) HANGUL SYLLABLE COELM
+CD67;CD67;110E 116C 11B2;CD67;110E 116C 11B2; # (쵧; 쵧; 쵧; 쵧; 쵧; ) HANGUL SYLLABLE COELB
+CD68;CD68;110E 116C 11B3;CD68;110E 116C 11B3; # (쵨; 쵨; 쵨; 쵨; 쵨; ) HANGUL SYLLABLE COELS
+CD69;CD69;110E 116C 11B4;CD69;110E 116C 11B4; # (쵩; 쵩; 쵩; 쵩; 쵩; ) HANGUL SYLLABLE COELT
+CD6A;CD6A;110E 116C 11B5;CD6A;110E 116C 11B5; # (쵪; 쵪; 쵪; 쵪; 쵪; ) HANGUL SYLLABLE COELP
+CD6B;CD6B;110E 116C 11B6;CD6B;110E 116C 11B6; # (쵫; 쵫; 쵫; 쵫; 쵫; ) HANGUL SYLLABLE COELH
+CD6C;CD6C;110E 116C 11B7;CD6C;110E 116C 11B7; # (쵬; 쵬; 쵬; 쵬; 쵬; ) HANGUL SYLLABLE COEM
+CD6D;CD6D;110E 116C 11B8;CD6D;110E 116C 11B8; # (쵭; 쵭; 쵭; 쵭; 쵭; ) HANGUL SYLLABLE COEB
+CD6E;CD6E;110E 116C 11B9;CD6E;110E 116C 11B9; # (쵮; 쵮; 쵮; 쵮; 쵮; ) HANGUL SYLLABLE COEBS
+CD6F;CD6F;110E 116C 11BA;CD6F;110E 116C 11BA; # (쵯; 쵯; 쵯; 쵯; 쵯; ) HANGUL SYLLABLE COES
+CD70;CD70;110E 116C 11BB;CD70;110E 116C 11BB; # (쵰; 쵰; 쵰; 쵰; 쵰; ) HANGUL SYLLABLE COESS
+CD71;CD71;110E 116C 11BC;CD71;110E 116C 11BC; # (쵱; 쵱; 쵱; 쵱; 쵱; ) HANGUL SYLLABLE COENG
+CD72;CD72;110E 116C 11BD;CD72;110E 116C 11BD; # (쵲; 쵲; 쵲; 쵲; 쵲; ) HANGUL SYLLABLE COEJ
+CD73;CD73;110E 116C 11BE;CD73;110E 116C 11BE; # (쵳; 쵳; 쵳; 쵳; 쵳; ) HANGUL SYLLABLE COEC
+CD74;CD74;110E 116C 11BF;CD74;110E 116C 11BF; # (쵴; 쵴; 쵴; 쵴; 쵴; ) HANGUL SYLLABLE COEK
+CD75;CD75;110E 116C 11C0;CD75;110E 116C 11C0; # (쵵; 쵵; 쵵; 쵵; 쵵; ) HANGUL SYLLABLE COET
+CD76;CD76;110E 116C 11C1;CD76;110E 116C 11C1; # (쵶; 쵶; á„Žá…¬á‡; 쵶; á„Žá…¬á‡; ) HANGUL SYLLABLE COEP
+CD77;CD77;110E 116C 11C2;CD77;110E 116C 11C2; # (쵷; 쵷; 쵷; 쵷; 쵷; ) HANGUL SYLLABLE COEH
+CD78;CD78;110E 116D;CD78;110E 116D; # (쵸; 쵸; 쵸; 쵸; 쵸; ) HANGUL SYLLABLE CYO
+CD79;CD79;110E 116D 11A8;CD79;110E 116D 11A8; # (쵹; 쵹; 쵹; 쵹; 쵹; ) HANGUL SYLLABLE CYOG
+CD7A;CD7A;110E 116D 11A9;CD7A;110E 116D 11A9; # (쵺; 쵺; 쵺; 쵺; 쵺; ) HANGUL SYLLABLE CYOGG
+CD7B;CD7B;110E 116D 11AA;CD7B;110E 116D 11AA; # (쵻; 쵻; 쵻; 쵻; 쵻; ) HANGUL SYLLABLE CYOGS
+CD7C;CD7C;110E 116D 11AB;CD7C;110E 116D 11AB; # (쵼; 쵼; 쵼; 쵼; 쵼; ) HANGUL SYLLABLE CYON
+CD7D;CD7D;110E 116D 11AC;CD7D;110E 116D 11AC; # (쵽; 쵽; 쵽; 쵽; 쵽; ) HANGUL SYLLABLE CYONJ
+CD7E;CD7E;110E 116D 11AD;CD7E;110E 116D 11AD; # (쵾; 쵾; 쵾; 쵾; 쵾; ) HANGUL SYLLABLE CYONH
+CD7F;CD7F;110E 116D 11AE;CD7F;110E 116D 11AE; # (쵿; 쵿; 쵿; 쵿; 쵿; ) HANGUL SYLLABLE CYOD
+CD80;CD80;110E 116D 11AF;CD80;110E 116D 11AF; # (춀; 춀; 춀; 춀; 춀; ) HANGUL SYLLABLE CYOL
+CD81;CD81;110E 116D 11B0;CD81;110E 116D 11B0; # (ì¶; ì¶; 춁; ì¶; 춁; ) HANGUL SYLLABLE CYOLG
+CD82;CD82;110E 116D 11B1;CD82;110E 116D 11B1; # (춂; 춂; 춂; 춂; 춂; ) HANGUL SYLLABLE CYOLM
+CD83;CD83;110E 116D 11B2;CD83;110E 116D 11B2; # (춃; 춃; 춃; 춃; 춃; ) HANGUL SYLLABLE CYOLB
+CD84;CD84;110E 116D 11B3;CD84;110E 116D 11B3; # (춄; 춄; 춄; 춄; 춄; ) HANGUL SYLLABLE CYOLS
+CD85;CD85;110E 116D 11B4;CD85;110E 116D 11B4; # (춅; 춅; 춅; 춅; 춅; ) HANGUL SYLLABLE CYOLT
+CD86;CD86;110E 116D 11B5;CD86;110E 116D 11B5; # (춆; 춆; 춆; 춆; 춆; ) HANGUL SYLLABLE CYOLP
+CD87;CD87;110E 116D 11B6;CD87;110E 116D 11B6; # (춇; 춇; 춇; 춇; 춇; ) HANGUL SYLLABLE CYOLH
+CD88;CD88;110E 116D 11B7;CD88;110E 116D 11B7; # (춈; 춈; 춈; 춈; 춈; ) HANGUL SYLLABLE CYOM
+CD89;CD89;110E 116D 11B8;CD89;110E 116D 11B8; # (춉; 춉; 춉; 춉; 춉; ) HANGUL SYLLABLE CYOB
+CD8A;CD8A;110E 116D 11B9;CD8A;110E 116D 11B9; # (춊; 춊; 춊; 춊; 춊; ) HANGUL SYLLABLE CYOBS
+CD8B;CD8B;110E 116D 11BA;CD8B;110E 116D 11BA; # (춋; 춋; 춋; 춋; 춋; ) HANGUL SYLLABLE CYOS
+CD8C;CD8C;110E 116D 11BB;CD8C;110E 116D 11BB; # (춌; 춌; 춌; 춌; 춌; ) HANGUL SYLLABLE CYOSS
+CD8D;CD8D;110E 116D 11BC;CD8D;110E 116D 11BC; # (ì¶; ì¶; 춍; ì¶; 춍; ) HANGUL SYLLABLE CYONG
+CD8E;CD8E;110E 116D 11BD;CD8E;110E 116D 11BD; # (춎; 춎; 춎; 춎; 춎; ) HANGUL SYLLABLE CYOJ
+CD8F;CD8F;110E 116D 11BE;CD8F;110E 116D 11BE; # (ì¶; ì¶; 춏; ì¶; 춏; ) HANGUL SYLLABLE CYOC
+CD90;CD90;110E 116D 11BF;CD90;110E 116D 11BF; # (ì¶; ì¶; 춐; ì¶; 춐; ) HANGUL SYLLABLE CYOK
+CD91;CD91;110E 116D 11C0;CD91;110E 116D 11C0; # (춑; 춑; 춑; 춑; 춑; ) HANGUL SYLLABLE CYOT
+CD92;CD92;110E 116D 11C1;CD92;110E 116D 11C1; # (춒; 춒; á„Žá…­á‡; 춒; á„Žá…­á‡; ) HANGUL SYLLABLE CYOP
+CD93;CD93;110E 116D 11C2;CD93;110E 116D 11C2; # (춓; 춓; 춓; 춓; 춓; ) HANGUL SYLLABLE CYOH
+CD94;CD94;110E 116E;CD94;110E 116E; # (추; 추; 추; 추; 추; ) HANGUL SYLLABLE CU
+CD95;CD95;110E 116E 11A8;CD95;110E 116E 11A8; # (축; 축; 축; 축; 축; ) HANGUL SYLLABLE CUG
+CD96;CD96;110E 116E 11A9;CD96;110E 116E 11A9; # (춖; 춖; 춖; 춖; 춖; ) HANGUL SYLLABLE CUGG
+CD97;CD97;110E 116E 11AA;CD97;110E 116E 11AA; # (춗; 춗; 춗; 춗; 춗; ) HANGUL SYLLABLE CUGS
+CD98;CD98;110E 116E 11AB;CD98;110E 116E 11AB; # (춘; 춘; 춘; 춘; 춘; ) HANGUL SYLLABLE CUN
+CD99;CD99;110E 116E 11AC;CD99;110E 116E 11AC; # (춙; 춙; 춙; 춙; 춙; ) HANGUL SYLLABLE CUNJ
+CD9A;CD9A;110E 116E 11AD;CD9A;110E 116E 11AD; # (춚; 춚; 춚; 춚; 춚; ) HANGUL SYLLABLE CUNH
+CD9B;CD9B;110E 116E 11AE;CD9B;110E 116E 11AE; # (춛; 춛; 춛; 춛; 춛; ) HANGUL SYLLABLE CUD
+CD9C;CD9C;110E 116E 11AF;CD9C;110E 116E 11AF; # (출; 출; 출; 출; 출; ) HANGUL SYLLABLE CUL
+CD9D;CD9D;110E 116E 11B0;CD9D;110E 116E 11B0; # (ì¶; ì¶; 춝; ì¶; 춝; ) HANGUL SYLLABLE CULG
+CD9E;CD9E;110E 116E 11B1;CD9E;110E 116E 11B1; # (춞; 춞; 춞; 춞; 춞; ) HANGUL SYLLABLE CULM
+CD9F;CD9F;110E 116E 11B2;CD9F;110E 116E 11B2; # (춟; 춟; 춟; 춟; 춟; ) HANGUL SYLLABLE CULB
+CDA0;CDA0;110E 116E 11B3;CDA0;110E 116E 11B3; # (춠; 춠; 춠; 춠; 춠; ) HANGUL SYLLABLE CULS
+CDA1;CDA1;110E 116E 11B4;CDA1;110E 116E 11B4; # (춡; 춡; 춡; 춡; 춡; ) HANGUL SYLLABLE CULT
+CDA2;CDA2;110E 116E 11B5;CDA2;110E 116E 11B5; # (춢; 춢; 춢; 춢; 춢; ) HANGUL SYLLABLE CULP
+CDA3;CDA3;110E 116E 11B6;CDA3;110E 116E 11B6; # (춣; 춣; 춣; 춣; 춣; ) HANGUL SYLLABLE CULH
+CDA4;CDA4;110E 116E 11B7;CDA4;110E 116E 11B7; # (춤; 춤; 춤; 춤; 춤; ) HANGUL SYLLABLE CUM
+CDA5;CDA5;110E 116E 11B8;CDA5;110E 116E 11B8; # (춥; 춥; 춥; 춥; 춥; ) HANGUL SYLLABLE CUB
+CDA6;CDA6;110E 116E 11B9;CDA6;110E 116E 11B9; # (춦; 춦; 춦; 춦; 춦; ) HANGUL SYLLABLE CUBS
+CDA7;CDA7;110E 116E 11BA;CDA7;110E 116E 11BA; # (춧; 춧; 춧; 춧; 춧; ) HANGUL SYLLABLE CUS
+CDA8;CDA8;110E 116E 11BB;CDA8;110E 116E 11BB; # (춨; 춨; 춨; 춨; 춨; ) HANGUL SYLLABLE CUSS
+CDA9;CDA9;110E 116E 11BC;CDA9;110E 116E 11BC; # (충; 충; 충; 충; 충; ) HANGUL SYLLABLE CUNG
+CDAA;CDAA;110E 116E 11BD;CDAA;110E 116E 11BD; # (춪; 춪; 춪; 춪; 춪; ) HANGUL SYLLABLE CUJ
+CDAB;CDAB;110E 116E 11BE;CDAB;110E 116E 11BE; # (춫; 춫; 춫; 춫; 춫; ) HANGUL SYLLABLE CUC
+CDAC;CDAC;110E 116E 11BF;CDAC;110E 116E 11BF; # (춬; 춬; 춬; 춬; 춬; ) HANGUL SYLLABLE CUK
+CDAD;CDAD;110E 116E 11C0;CDAD;110E 116E 11C0; # (춭; 춭; 춭; 춭; 춭; ) HANGUL SYLLABLE CUT
+CDAE;CDAE;110E 116E 11C1;CDAE;110E 116E 11C1; # (춮; 춮; á„Žá…®á‡; 춮; á„Žá…®á‡; ) HANGUL SYLLABLE CUP
+CDAF;CDAF;110E 116E 11C2;CDAF;110E 116E 11C2; # (춯; 춯; 춯; 춯; 춯; ) HANGUL SYLLABLE CUH
+CDB0;CDB0;110E 116F;CDB0;110E 116F; # (춰; 춰; 춰; 춰; 춰; ) HANGUL SYLLABLE CWEO
+CDB1;CDB1;110E 116F 11A8;CDB1;110E 116F 11A8; # (춱; 춱; 춱; 춱; 춱; ) HANGUL SYLLABLE CWEOG
+CDB2;CDB2;110E 116F 11A9;CDB2;110E 116F 11A9; # (춲; 춲; 춲; 춲; 춲; ) HANGUL SYLLABLE CWEOGG
+CDB3;CDB3;110E 116F 11AA;CDB3;110E 116F 11AA; # (춳; 춳; 춳; 춳; 춳; ) HANGUL SYLLABLE CWEOGS
+CDB4;CDB4;110E 116F 11AB;CDB4;110E 116F 11AB; # (춴; 춴; 춴; 춴; 춴; ) HANGUL SYLLABLE CWEON
+CDB5;CDB5;110E 116F 11AC;CDB5;110E 116F 11AC; # (춵; 춵; 춵; 춵; 춵; ) HANGUL SYLLABLE CWEONJ
+CDB6;CDB6;110E 116F 11AD;CDB6;110E 116F 11AD; # (춶; 춶; 춶; 춶; 춶; ) HANGUL SYLLABLE CWEONH
+CDB7;CDB7;110E 116F 11AE;CDB7;110E 116F 11AE; # (춷; 춷; 춷; 춷; 춷; ) HANGUL SYLLABLE CWEOD
+CDB8;CDB8;110E 116F 11AF;CDB8;110E 116F 11AF; # (춸; 춸; 춸; 춸; 춸; ) HANGUL SYLLABLE CWEOL
+CDB9;CDB9;110E 116F 11B0;CDB9;110E 116F 11B0; # (춹; 춹; 춹; 춹; 춹; ) HANGUL SYLLABLE CWEOLG
+CDBA;CDBA;110E 116F 11B1;CDBA;110E 116F 11B1; # (춺; 춺; 춺; 춺; 춺; ) HANGUL SYLLABLE CWEOLM
+CDBB;CDBB;110E 116F 11B2;CDBB;110E 116F 11B2; # (춻; 춻; 춻; 춻; 춻; ) HANGUL SYLLABLE CWEOLB
+CDBC;CDBC;110E 116F 11B3;CDBC;110E 116F 11B3; # (춼; 춼; 춼; 춼; 춼; ) HANGUL SYLLABLE CWEOLS
+CDBD;CDBD;110E 116F 11B4;CDBD;110E 116F 11B4; # (춽; 춽; 춽; 춽; 춽; ) HANGUL SYLLABLE CWEOLT
+CDBE;CDBE;110E 116F 11B5;CDBE;110E 116F 11B5; # (춾; 춾; 춾; 춾; 춾; ) HANGUL SYLLABLE CWEOLP
+CDBF;CDBF;110E 116F 11B6;CDBF;110E 116F 11B6; # (춿; 춿; 춿; 춿; 춿; ) HANGUL SYLLABLE CWEOLH
+CDC0;CDC0;110E 116F 11B7;CDC0;110E 116F 11B7; # (췀; 췀; 췀; 췀; 췀; ) HANGUL SYLLABLE CWEOM
+CDC1;CDC1;110E 116F 11B8;CDC1;110E 116F 11B8; # (ì·; ì·; 췁; ì·; 췁; ) HANGUL SYLLABLE CWEOB
+CDC2;CDC2;110E 116F 11B9;CDC2;110E 116F 11B9; # (췂; 췂; 췂; 췂; 췂; ) HANGUL SYLLABLE CWEOBS
+CDC3;CDC3;110E 116F 11BA;CDC3;110E 116F 11BA; # (췃; 췃; 췃; 췃; 췃; ) HANGUL SYLLABLE CWEOS
+CDC4;CDC4;110E 116F 11BB;CDC4;110E 116F 11BB; # (췄; 췄; 췄; 췄; 췄; ) HANGUL SYLLABLE CWEOSS
+CDC5;CDC5;110E 116F 11BC;CDC5;110E 116F 11BC; # (췅; 췅; 췅; 췅; 췅; ) HANGUL SYLLABLE CWEONG
+CDC6;CDC6;110E 116F 11BD;CDC6;110E 116F 11BD; # (췆; 췆; 췆; 췆; 췆; ) HANGUL SYLLABLE CWEOJ
+CDC7;CDC7;110E 116F 11BE;CDC7;110E 116F 11BE; # (췇; 췇; 췇; 췇; 췇; ) HANGUL SYLLABLE CWEOC
+CDC8;CDC8;110E 116F 11BF;CDC8;110E 116F 11BF; # (췈; 췈; 췈; 췈; 췈; ) HANGUL SYLLABLE CWEOK
+CDC9;CDC9;110E 116F 11C0;CDC9;110E 116F 11C0; # (췉; 췉; 췉; 췉; 췉; ) HANGUL SYLLABLE CWEOT
+CDCA;CDCA;110E 116F 11C1;CDCA;110E 116F 11C1; # (ì·Š; ì·Š; á„Žá…¯á‡; ì·Š; á„Žá…¯á‡; ) HANGUL SYLLABLE CWEOP
+CDCB;CDCB;110E 116F 11C2;CDCB;110E 116F 11C2; # (췋; 췋; 췋; 췋; 췋; ) HANGUL SYLLABLE CWEOH
+CDCC;CDCC;110E 1170;CDCC;110E 1170; # (췌; 췌; 췌; 췌; 췌; ) HANGUL SYLLABLE CWE
+CDCD;CDCD;110E 1170 11A8;CDCD;110E 1170 11A8; # (ì·; ì·; 췍; ì·; 췍; ) HANGUL SYLLABLE CWEG
+CDCE;CDCE;110E 1170 11A9;CDCE;110E 1170 11A9; # (췎; 췎; 췎; 췎; 췎; ) HANGUL SYLLABLE CWEGG
+CDCF;CDCF;110E 1170 11AA;CDCF;110E 1170 11AA; # (ì·; ì·; 췏; ì·; 췏; ) HANGUL SYLLABLE CWEGS
+CDD0;CDD0;110E 1170 11AB;CDD0;110E 1170 11AB; # (ì·; ì·; 췐; ì·; 췐; ) HANGUL SYLLABLE CWEN
+CDD1;CDD1;110E 1170 11AC;CDD1;110E 1170 11AC; # (췑; 췑; 췑; 췑; 췑; ) HANGUL SYLLABLE CWENJ
+CDD2;CDD2;110E 1170 11AD;CDD2;110E 1170 11AD; # (췒; 췒; 췒; 췒; 췒; ) HANGUL SYLLABLE CWENH
+CDD3;CDD3;110E 1170 11AE;CDD3;110E 1170 11AE; # (췓; 췓; 췓; 췓; 췓; ) HANGUL SYLLABLE CWED
+CDD4;CDD4;110E 1170 11AF;CDD4;110E 1170 11AF; # (췔; 췔; 췔; 췔; 췔; ) HANGUL SYLLABLE CWEL
+CDD5;CDD5;110E 1170 11B0;CDD5;110E 1170 11B0; # (췕; 췕; 췕; 췕; 췕; ) HANGUL SYLLABLE CWELG
+CDD6;CDD6;110E 1170 11B1;CDD6;110E 1170 11B1; # (췖; 췖; 췖; 췖; 췖; ) HANGUL SYLLABLE CWELM
+CDD7;CDD7;110E 1170 11B2;CDD7;110E 1170 11B2; # (췗; 췗; 췗; 췗; 췗; ) HANGUL SYLLABLE CWELB
+CDD8;CDD8;110E 1170 11B3;CDD8;110E 1170 11B3; # (췘; 췘; 췘; 췘; 췘; ) HANGUL SYLLABLE CWELS
+CDD9;CDD9;110E 1170 11B4;CDD9;110E 1170 11B4; # (췙; 췙; 췙; 췙; 췙; ) HANGUL SYLLABLE CWELT
+CDDA;CDDA;110E 1170 11B5;CDDA;110E 1170 11B5; # (췚; 췚; 췚; 췚; 췚; ) HANGUL SYLLABLE CWELP
+CDDB;CDDB;110E 1170 11B6;CDDB;110E 1170 11B6; # (췛; 췛; 췛; 췛; 췛; ) HANGUL SYLLABLE CWELH
+CDDC;CDDC;110E 1170 11B7;CDDC;110E 1170 11B7; # (췜; 췜; 췜; 췜; 췜; ) HANGUL SYLLABLE CWEM
+CDDD;CDDD;110E 1170 11B8;CDDD;110E 1170 11B8; # (ì·; ì·; 췝; ì·; 췝; ) HANGUL SYLLABLE CWEB
+CDDE;CDDE;110E 1170 11B9;CDDE;110E 1170 11B9; # (췞; 췞; 췞; 췞; 췞; ) HANGUL SYLLABLE CWEBS
+CDDF;CDDF;110E 1170 11BA;CDDF;110E 1170 11BA; # (췟; 췟; 췟; 췟; 췟; ) HANGUL SYLLABLE CWES
+CDE0;CDE0;110E 1170 11BB;CDE0;110E 1170 11BB; # (췠; 췠; 췠; 췠; 췠; ) HANGUL SYLLABLE CWESS
+CDE1;CDE1;110E 1170 11BC;CDE1;110E 1170 11BC; # (췡; 췡; 췡; 췡; 췡; ) HANGUL SYLLABLE CWENG
+CDE2;CDE2;110E 1170 11BD;CDE2;110E 1170 11BD; # (췢; 췢; 췢; 췢; 췢; ) HANGUL SYLLABLE CWEJ
+CDE3;CDE3;110E 1170 11BE;CDE3;110E 1170 11BE; # (췣; 췣; 췣; 췣; 췣; ) HANGUL SYLLABLE CWEC
+CDE4;CDE4;110E 1170 11BF;CDE4;110E 1170 11BF; # (췤; 췤; 췤; 췤; 췤; ) HANGUL SYLLABLE CWEK
+CDE5;CDE5;110E 1170 11C0;CDE5;110E 1170 11C0; # (췥; 췥; 췥; 췥; 췥; ) HANGUL SYLLABLE CWET
+CDE6;CDE6;110E 1170 11C1;CDE6;110E 1170 11C1; # (ì·¦; ì·¦; á„Žá…°á‡; ì·¦; á„Žá…°á‡; ) HANGUL SYLLABLE CWEP
+CDE7;CDE7;110E 1170 11C2;CDE7;110E 1170 11C2; # (췧; 췧; 췧; 췧; 췧; ) HANGUL SYLLABLE CWEH
+CDE8;CDE8;110E 1171;CDE8;110E 1171; # (ì·¨; ì·¨; á„Žá…±; ì·¨; á„Žá…±; ) HANGUL SYLLABLE CWI
+CDE9;CDE9;110E 1171 11A8;CDE9;110E 1171 11A8; # (췩; 췩; 췩; 췩; 췩; ) HANGUL SYLLABLE CWIG
+CDEA;CDEA;110E 1171 11A9;CDEA;110E 1171 11A9; # (췪; 췪; 췪; 췪; 췪; ) HANGUL SYLLABLE CWIGG
+CDEB;CDEB;110E 1171 11AA;CDEB;110E 1171 11AA; # (췫; 췫; 췫; 췫; 췫; ) HANGUL SYLLABLE CWIGS
+CDEC;CDEC;110E 1171 11AB;CDEC;110E 1171 11AB; # (췬; 췬; 췬; 췬; 췬; ) HANGUL SYLLABLE CWIN
+CDED;CDED;110E 1171 11AC;CDED;110E 1171 11AC; # (췭; 췭; 췭; 췭; 췭; ) HANGUL SYLLABLE CWINJ
+CDEE;CDEE;110E 1171 11AD;CDEE;110E 1171 11AD; # (췮; 췮; 췮; 췮; 췮; ) HANGUL SYLLABLE CWINH
+CDEF;CDEF;110E 1171 11AE;CDEF;110E 1171 11AE; # (췯; 췯; 췯; 췯; 췯; ) HANGUL SYLLABLE CWID
+CDF0;CDF0;110E 1171 11AF;CDF0;110E 1171 11AF; # (췰; 췰; 췰; 췰; 췰; ) HANGUL SYLLABLE CWIL
+CDF1;CDF1;110E 1171 11B0;CDF1;110E 1171 11B0; # (췱; 췱; 췱; 췱; 췱; ) HANGUL SYLLABLE CWILG
+CDF2;CDF2;110E 1171 11B1;CDF2;110E 1171 11B1; # (췲; 췲; 췲; 췲; 췲; ) HANGUL SYLLABLE CWILM
+CDF3;CDF3;110E 1171 11B2;CDF3;110E 1171 11B2; # (췳; 췳; 췳; 췳; 췳; ) HANGUL SYLLABLE CWILB
+CDF4;CDF4;110E 1171 11B3;CDF4;110E 1171 11B3; # (췴; 췴; 췴; 췴; 췴; ) HANGUL SYLLABLE CWILS
+CDF5;CDF5;110E 1171 11B4;CDF5;110E 1171 11B4; # (췵; 췵; 췵; 췵; 췵; ) HANGUL SYLLABLE CWILT
+CDF6;CDF6;110E 1171 11B5;CDF6;110E 1171 11B5; # (췶; 췶; 췶; 췶; 췶; ) HANGUL SYLLABLE CWILP
+CDF7;CDF7;110E 1171 11B6;CDF7;110E 1171 11B6; # (췷; 췷; 췷; 췷; 췷; ) HANGUL SYLLABLE CWILH
+CDF8;CDF8;110E 1171 11B7;CDF8;110E 1171 11B7; # (췸; 췸; 췸; 췸; 췸; ) HANGUL SYLLABLE CWIM
+CDF9;CDF9;110E 1171 11B8;CDF9;110E 1171 11B8; # (췹; 췹; 췹; 췹; 췹; ) HANGUL SYLLABLE CWIB
+CDFA;CDFA;110E 1171 11B9;CDFA;110E 1171 11B9; # (췺; 췺; 췺; 췺; 췺; ) HANGUL SYLLABLE CWIBS
+CDFB;CDFB;110E 1171 11BA;CDFB;110E 1171 11BA; # (췻; 췻; 췻; 췻; 췻; ) HANGUL SYLLABLE CWIS
+CDFC;CDFC;110E 1171 11BB;CDFC;110E 1171 11BB; # (췼; 췼; 췼; 췼; 췼; ) HANGUL SYLLABLE CWISS
+CDFD;CDFD;110E 1171 11BC;CDFD;110E 1171 11BC; # (췽; 췽; 췽; 췽; 췽; ) HANGUL SYLLABLE CWING
+CDFE;CDFE;110E 1171 11BD;CDFE;110E 1171 11BD; # (췾; 췾; 췾; 췾; 췾; ) HANGUL SYLLABLE CWIJ
+CDFF;CDFF;110E 1171 11BE;CDFF;110E 1171 11BE; # (췿; 췿; 췿; 췿; 췿; ) HANGUL SYLLABLE CWIC
+CE00;CE00;110E 1171 11BF;CE00;110E 1171 11BF; # (츀; 츀; 츀; 츀; 츀; ) HANGUL SYLLABLE CWIK
+CE01;CE01;110E 1171 11C0;CE01;110E 1171 11C0; # (ì¸; ì¸; 츁; ì¸; 츁; ) HANGUL SYLLABLE CWIT
+CE02;CE02;110E 1171 11C1;CE02;110E 1171 11C1; # (츂; 츂; á„Žá…±á‡; 츂; á„Žá…±á‡; ) HANGUL SYLLABLE CWIP
+CE03;CE03;110E 1171 11C2;CE03;110E 1171 11C2; # (츃; 츃; 츃; 츃; 츃; ) HANGUL SYLLABLE CWIH
+CE04;CE04;110E 1172;CE04;110E 1172; # (츄; 츄; 츄; 츄; 츄; ) HANGUL SYLLABLE CYU
+CE05;CE05;110E 1172 11A8;CE05;110E 1172 11A8; # (츅; 츅; 츅; 츅; 츅; ) HANGUL SYLLABLE CYUG
+CE06;CE06;110E 1172 11A9;CE06;110E 1172 11A9; # (츆; 츆; 츆; 츆; 츆; ) HANGUL SYLLABLE CYUGG
+CE07;CE07;110E 1172 11AA;CE07;110E 1172 11AA; # (츇; 츇; 츇; 츇; 츇; ) HANGUL SYLLABLE CYUGS
+CE08;CE08;110E 1172 11AB;CE08;110E 1172 11AB; # (츈; 츈; 츈; 츈; 츈; ) HANGUL SYLLABLE CYUN
+CE09;CE09;110E 1172 11AC;CE09;110E 1172 11AC; # (츉; 츉; 츉; 츉; 츉; ) HANGUL SYLLABLE CYUNJ
+CE0A;CE0A;110E 1172 11AD;CE0A;110E 1172 11AD; # (츊; 츊; 츊; 츊; 츊; ) HANGUL SYLLABLE CYUNH
+CE0B;CE0B;110E 1172 11AE;CE0B;110E 1172 11AE; # (츋; 츋; 츋; 츋; 츋; ) HANGUL SYLLABLE CYUD
+CE0C;CE0C;110E 1172 11AF;CE0C;110E 1172 11AF; # (츌; 츌; 츌; 츌; 츌; ) HANGUL SYLLABLE CYUL
+CE0D;CE0D;110E 1172 11B0;CE0D;110E 1172 11B0; # (ì¸; ì¸; 츍; ì¸; 츍; ) HANGUL SYLLABLE CYULG
+CE0E;CE0E;110E 1172 11B1;CE0E;110E 1172 11B1; # (츎; 츎; 츎; 츎; 츎; ) HANGUL SYLLABLE CYULM
+CE0F;CE0F;110E 1172 11B2;CE0F;110E 1172 11B2; # (ì¸; ì¸; 츏; ì¸; 츏; ) HANGUL SYLLABLE CYULB
+CE10;CE10;110E 1172 11B3;CE10;110E 1172 11B3; # (ì¸; ì¸; 츐; ì¸; 츐; ) HANGUL SYLLABLE CYULS
+CE11;CE11;110E 1172 11B4;CE11;110E 1172 11B4; # (츑; 츑; 츑; 츑; 츑; ) HANGUL SYLLABLE CYULT
+CE12;CE12;110E 1172 11B5;CE12;110E 1172 11B5; # (츒; 츒; 츒; 츒; 츒; ) HANGUL SYLLABLE CYULP
+CE13;CE13;110E 1172 11B6;CE13;110E 1172 11B6; # (츓; 츓; 츓; 츓; 츓; ) HANGUL SYLLABLE CYULH
+CE14;CE14;110E 1172 11B7;CE14;110E 1172 11B7; # (츔; 츔; 츔; 츔; 츔; ) HANGUL SYLLABLE CYUM
+CE15;CE15;110E 1172 11B8;CE15;110E 1172 11B8; # (츕; 츕; 츕; 츕; 츕; ) HANGUL SYLLABLE CYUB
+CE16;CE16;110E 1172 11B9;CE16;110E 1172 11B9; # (츖; 츖; 츖; 츖; 츖; ) HANGUL SYLLABLE CYUBS
+CE17;CE17;110E 1172 11BA;CE17;110E 1172 11BA; # (츗; 츗; 츗; 츗; 츗; ) HANGUL SYLLABLE CYUS
+CE18;CE18;110E 1172 11BB;CE18;110E 1172 11BB; # (츘; 츘; 츘; 츘; 츘; ) HANGUL SYLLABLE CYUSS
+CE19;CE19;110E 1172 11BC;CE19;110E 1172 11BC; # (츙; 츙; 츙; 츙; 츙; ) HANGUL SYLLABLE CYUNG
+CE1A;CE1A;110E 1172 11BD;CE1A;110E 1172 11BD; # (츚; 츚; 츚; 츚; 츚; ) HANGUL SYLLABLE CYUJ
+CE1B;CE1B;110E 1172 11BE;CE1B;110E 1172 11BE; # (츛; 츛; 츛; 츛; 츛; ) HANGUL SYLLABLE CYUC
+CE1C;CE1C;110E 1172 11BF;CE1C;110E 1172 11BF; # (츜; 츜; 츜; 츜; 츜; ) HANGUL SYLLABLE CYUK
+CE1D;CE1D;110E 1172 11C0;CE1D;110E 1172 11C0; # (ì¸; ì¸; 츝; ì¸; 츝; ) HANGUL SYLLABLE CYUT
+CE1E;CE1E;110E 1172 11C1;CE1E;110E 1172 11C1; # (츞; 츞; á„Žá…²á‡; 츞; á„Žá…²á‡; ) HANGUL SYLLABLE CYUP
+CE1F;CE1F;110E 1172 11C2;CE1F;110E 1172 11C2; # (츟; 츟; 츟; 츟; 츟; ) HANGUL SYLLABLE CYUH
+CE20;CE20;110E 1173;CE20;110E 1173; # (츠; 츠; 츠; 츠; 츠; ) HANGUL SYLLABLE CEU
+CE21;CE21;110E 1173 11A8;CE21;110E 1173 11A8; # (측; 측; 측; 측; 측; ) HANGUL SYLLABLE CEUG
+CE22;CE22;110E 1173 11A9;CE22;110E 1173 11A9; # (츢; 츢; 츢; 츢; 츢; ) HANGUL SYLLABLE CEUGG
+CE23;CE23;110E 1173 11AA;CE23;110E 1173 11AA; # (츣; 츣; 츣; 츣; 츣; ) HANGUL SYLLABLE CEUGS
+CE24;CE24;110E 1173 11AB;CE24;110E 1173 11AB; # (츤; 츤; 츤; 츤; 츤; ) HANGUL SYLLABLE CEUN
+CE25;CE25;110E 1173 11AC;CE25;110E 1173 11AC; # (츥; 츥; 츥; 츥; 츥; ) HANGUL SYLLABLE CEUNJ
+CE26;CE26;110E 1173 11AD;CE26;110E 1173 11AD; # (츦; 츦; 츦; 츦; 츦; ) HANGUL SYLLABLE CEUNH
+CE27;CE27;110E 1173 11AE;CE27;110E 1173 11AE; # (츧; 츧; 츧; 츧; 츧; ) HANGUL SYLLABLE CEUD
+CE28;CE28;110E 1173 11AF;CE28;110E 1173 11AF; # (츨; 츨; 츨; 츨; 츨; ) HANGUL SYLLABLE CEUL
+CE29;CE29;110E 1173 11B0;CE29;110E 1173 11B0; # (츩; 츩; 츩; 츩; 츩; ) HANGUL SYLLABLE CEULG
+CE2A;CE2A;110E 1173 11B1;CE2A;110E 1173 11B1; # (츪; 츪; 츪; 츪; 츪; ) HANGUL SYLLABLE CEULM
+CE2B;CE2B;110E 1173 11B2;CE2B;110E 1173 11B2; # (츫; 츫; 츫; 츫; 츫; ) HANGUL SYLLABLE CEULB
+CE2C;CE2C;110E 1173 11B3;CE2C;110E 1173 11B3; # (츬; 츬; 츬; 츬; 츬; ) HANGUL SYLLABLE CEULS
+CE2D;CE2D;110E 1173 11B4;CE2D;110E 1173 11B4; # (츭; 츭; 츭; 츭; 츭; ) HANGUL SYLLABLE CEULT
+CE2E;CE2E;110E 1173 11B5;CE2E;110E 1173 11B5; # (츮; 츮; 츮; 츮; 츮; ) HANGUL SYLLABLE CEULP
+CE2F;CE2F;110E 1173 11B6;CE2F;110E 1173 11B6; # (츯; 츯; 츯; 츯; 츯; ) HANGUL SYLLABLE CEULH
+CE30;CE30;110E 1173 11B7;CE30;110E 1173 11B7; # (츰; 츰; 츰; 츰; 츰; ) HANGUL SYLLABLE CEUM
+CE31;CE31;110E 1173 11B8;CE31;110E 1173 11B8; # (츱; 츱; 츱; 츱; 츱; ) HANGUL SYLLABLE CEUB
+CE32;CE32;110E 1173 11B9;CE32;110E 1173 11B9; # (츲; 츲; 츲; 츲; 츲; ) HANGUL SYLLABLE CEUBS
+CE33;CE33;110E 1173 11BA;CE33;110E 1173 11BA; # (츳; 츳; 츳; 츳; 츳; ) HANGUL SYLLABLE CEUS
+CE34;CE34;110E 1173 11BB;CE34;110E 1173 11BB; # (츴; 츴; 츴; 츴; 츴; ) HANGUL SYLLABLE CEUSS
+CE35;CE35;110E 1173 11BC;CE35;110E 1173 11BC; # (층; 층; 층; 층; 층; ) HANGUL SYLLABLE CEUNG
+CE36;CE36;110E 1173 11BD;CE36;110E 1173 11BD; # (츶; 츶; 츶; 츶; 츶; ) HANGUL SYLLABLE CEUJ
+CE37;CE37;110E 1173 11BE;CE37;110E 1173 11BE; # (츷; 츷; 츷; 츷; 츷; ) HANGUL SYLLABLE CEUC
+CE38;CE38;110E 1173 11BF;CE38;110E 1173 11BF; # (츸; 츸; 츸; 츸; 츸; ) HANGUL SYLLABLE CEUK
+CE39;CE39;110E 1173 11C0;CE39;110E 1173 11C0; # (츹; 츹; 츹; 츹; 츹; ) HANGUL SYLLABLE CEUT
+CE3A;CE3A;110E 1173 11C1;CE3A;110E 1173 11C1; # (츺; 츺; á„Žá…³á‡; 츺; á„Žá…³á‡; ) HANGUL SYLLABLE CEUP
+CE3B;CE3B;110E 1173 11C2;CE3B;110E 1173 11C2; # (츻; 츻; 츻; 츻; 츻; ) HANGUL SYLLABLE CEUH
+CE3C;CE3C;110E 1174;CE3C;110E 1174; # (츼; 츼; 츼; 츼; 츼; ) HANGUL SYLLABLE CYI
+CE3D;CE3D;110E 1174 11A8;CE3D;110E 1174 11A8; # (츽; 츽; 츽; 츽; 츽; ) HANGUL SYLLABLE CYIG
+CE3E;CE3E;110E 1174 11A9;CE3E;110E 1174 11A9; # (츾; 츾; 츾; 츾; 츾; ) HANGUL SYLLABLE CYIGG
+CE3F;CE3F;110E 1174 11AA;CE3F;110E 1174 11AA; # (츿; 츿; 츿; 츿; 츿; ) HANGUL SYLLABLE CYIGS
+CE40;CE40;110E 1174 11AB;CE40;110E 1174 11AB; # (칀; 칀; 칀; 칀; 칀; ) HANGUL SYLLABLE CYIN
+CE41;CE41;110E 1174 11AC;CE41;110E 1174 11AC; # (ì¹; ì¹; 칁; ì¹; 칁; ) HANGUL SYLLABLE CYINJ
+CE42;CE42;110E 1174 11AD;CE42;110E 1174 11AD; # (칂; 칂; 칂; 칂; 칂; ) HANGUL SYLLABLE CYINH
+CE43;CE43;110E 1174 11AE;CE43;110E 1174 11AE; # (칃; 칃; 칃; 칃; 칃; ) HANGUL SYLLABLE CYID
+CE44;CE44;110E 1174 11AF;CE44;110E 1174 11AF; # (칄; 칄; 칄; 칄; 칄; ) HANGUL SYLLABLE CYIL
+CE45;CE45;110E 1174 11B0;CE45;110E 1174 11B0; # (칅; 칅; 칅; 칅; 칅; ) HANGUL SYLLABLE CYILG
+CE46;CE46;110E 1174 11B1;CE46;110E 1174 11B1; # (칆; 칆; 칆; 칆; 칆; ) HANGUL SYLLABLE CYILM
+CE47;CE47;110E 1174 11B2;CE47;110E 1174 11B2; # (칇; 칇; 칇; 칇; 칇; ) HANGUL SYLLABLE CYILB
+CE48;CE48;110E 1174 11B3;CE48;110E 1174 11B3; # (칈; 칈; 칈; 칈; 칈; ) HANGUL SYLLABLE CYILS
+CE49;CE49;110E 1174 11B4;CE49;110E 1174 11B4; # (칉; 칉; 칉; 칉; 칉; ) HANGUL SYLLABLE CYILT
+CE4A;CE4A;110E 1174 11B5;CE4A;110E 1174 11B5; # (칊; 칊; 칊; 칊; 칊; ) HANGUL SYLLABLE CYILP
+CE4B;CE4B;110E 1174 11B6;CE4B;110E 1174 11B6; # (칋; 칋; 칋; 칋; 칋; ) HANGUL SYLLABLE CYILH
+CE4C;CE4C;110E 1174 11B7;CE4C;110E 1174 11B7; # (칌; 칌; 칌; 칌; 칌; ) HANGUL SYLLABLE CYIM
+CE4D;CE4D;110E 1174 11B8;CE4D;110E 1174 11B8; # (ì¹; ì¹; 칍; ì¹; 칍; ) HANGUL SYLLABLE CYIB
+CE4E;CE4E;110E 1174 11B9;CE4E;110E 1174 11B9; # (칎; 칎; 칎; 칎; 칎; ) HANGUL SYLLABLE CYIBS
+CE4F;CE4F;110E 1174 11BA;CE4F;110E 1174 11BA; # (ì¹; ì¹; 칏; ì¹; 칏; ) HANGUL SYLLABLE CYIS
+CE50;CE50;110E 1174 11BB;CE50;110E 1174 11BB; # (ì¹; ì¹; 칐; ì¹; 칐; ) HANGUL SYLLABLE CYISS
+CE51;CE51;110E 1174 11BC;CE51;110E 1174 11BC; # (칑; 칑; 칑; 칑; 칑; ) HANGUL SYLLABLE CYING
+CE52;CE52;110E 1174 11BD;CE52;110E 1174 11BD; # (칒; 칒; 칒; 칒; 칒; ) HANGUL SYLLABLE CYIJ
+CE53;CE53;110E 1174 11BE;CE53;110E 1174 11BE; # (칓; 칓; 칓; 칓; 칓; ) HANGUL SYLLABLE CYIC
+CE54;CE54;110E 1174 11BF;CE54;110E 1174 11BF; # (칔; 칔; 칔; 칔; 칔; ) HANGUL SYLLABLE CYIK
+CE55;CE55;110E 1174 11C0;CE55;110E 1174 11C0; # (칕; 칕; 칕; 칕; 칕; ) HANGUL SYLLABLE CYIT
+CE56;CE56;110E 1174 11C1;CE56;110E 1174 11C1; # (ì¹–; ì¹–; á„Žá…´á‡; ì¹–; á„Žá…´á‡; ) HANGUL SYLLABLE CYIP
+CE57;CE57;110E 1174 11C2;CE57;110E 1174 11C2; # (칗; 칗; 칗; 칗; 칗; ) HANGUL SYLLABLE CYIH
+CE58;CE58;110E 1175;CE58;110E 1175; # (치; 치; 치; 치; 치; ) HANGUL SYLLABLE CI
+CE59;CE59;110E 1175 11A8;CE59;110E 1175 11A8; # (칙; 칙; 칙; 칙; 칙; ) HANGUL SYLLABLE CIG
+CE5A;CE5A;110E 1175 11A9;CE5A;110E 1175 11A9; # (칚; 칚; 칚; 칚; 칚; ) HANGUL SYLLABLE CIGG
+CE5B;CE5B;110E 1175 11AA;CE5B;110E 1175 11AA; # (칛; 칛; 칛; 칛; 칛; ) HANGUL SYLLABLE CIGS
+CE5C;CE5C;110E 1175 11AB;CE5C;110E 1175 11AB; # (친; 친; 친; 친; 친; ) HANGUL SYLLABLE CIN
+CE5D;CE5D;110E 1175 11AC;CE5D;110E 1175 11AC; # (ì¹; ì¹; 칝; ì¹; 칝; ) HANGUL SYLLABLE CINJ
+CE5E;CE5E;110E 1175 11AD;CE5E;110E 1175 11AD; # (칞; 칞; 칞; 칞; 칞; ) HANGUL SYLLABLE CINH
+CE5F;CE5F;110E 1175 11AE;CE5F;110E 1175 11AE; # (칟; 칟; 칟; 칟; 칟; ) HANGUL SYLLABLE CID
+CE60;CE60;110E 1175 11AF;CE60;110E 1175 11AF; # (칠; 칠; 칠; 칠; 칠; ) HANGUL SYLLABLE CIL
+CE61;CE61;110E 1175 11B0;CE61;110E 1175 11B0; # (칡; 칡; 칡; 칡; 칡; ) HANGUL SYLLABLE CILG
+CE62;CE62;110E 1175 11B1;CE62;110E 1175 11B1; # (칢; 칢; 칢; 칢; 칢; ) HANGUL SYLLABLE CILM
+CE63;CE63;110E 1175 11B2;CE63;110E 1175 11B2; # (칣; 칣; 칣; 칣; 칣; ) HANGUL SYLLABLE CILB
+CE64;CE64;110E 1175 11B3;CE64;110E 1175 11B3; # (칤; 칤; 칤; 칤; 칤; ) HANGUL SYLLABLE CILS
+CE65;CE65;110E 1175 11B4;CE65;110E 1175 11B4; # (칥; 칥; 칥; 칥; 칥; ) HANGUL SYLLABLE CILT
+CE66;CE66;110E 1175 11B5;CE66;110E 1175 11B5; # (칦; 칦; 칦; 칦; 칦; ) HANGUL SYLLABLE CILP
+CE67;CE67;110E 1175 11B6;CE67;110E 1175 11B6; # (칧; 칧; 칧; 칧; 칧; ) HANGUL SYLLABLE CILH
+CE68;CE68;110E 1175 11B7;CE68;110E 1175 11B7; # (침; 침; 침; 침; 침; ) HANGUL SYLLABLE CIM
+CE69;CE69;110E 1175 11B8;CE69;110E 1175 11B8; # (칩; 칩; 칩; 칩; 칩; ) HANGUL SYLLABLE CIB
+CE6A;CE6A;110E 1175 11B9;CE6A;110E 1175 11B9; # (칪; 칪; 칪; 칪; 칪; ) HANGUL SYLLABLE CIBS
+CE6B;CE6B;110E 1175 11BA;CE6B;110E 1175 11BA; # (칫; 칫; 칫; 칫; 칫; ) HANGUL SYLLABLE CIS
+CE6C;CE6C;110E 1175 11BB;CE6C;110E 1175 11BB; # (칬; 칬; 칬; 칬; 칬; ) HANGUL SYLLABLE CISS
+CE6D;CE6D;110E 1175 11BC;CE6D;110E 1175 11BC; # (칭; 칭; 칭; 칭; 칭; ) HANGUL SYLLABLE CING
+CE6E;CE6E;110E 1175 11BD;CE6E;110E 1175 11BD; # (칮; 칮; 칮; 칮; 칮; ) HANGUL SYLLABLE CIJ
+CE6F;CE6F;110E 1175 11BE;CE6F;110E 1175 11BE; # (칯; 칯; 칯; 칯; 칯; ) HANGUL SYLLABLE CIC
+CE70;CE70;110E 1175 11BF;CE70;110E 1175 11BF; # (칰; 칰; 칰; 칰; 칰; ) HANGUL SYLLABLE CIK
+CE71;CE71;110E 1175 11C0;CE71;110E 1175 11C0; # (칱; 칱; 칱; 칱; 칱; ) HANGUL SYLLABLE CIT
+CE72;CE72;110E 1175 11C1;CE72;110E 1175 11C1; # (ì¹²; ì¹²; á„Žá…µá‡; ì¹²; á„Žá…µá‡; ) HANGUL SYLLABLE CIP
+CE73;CE73;110E 1175 11C2;CE73;110E 1175 11C2; # (칳; 칳; 칳; 칳; 칳; ) HANGUL SYLLABLE CIH
+CE74;CE74;110F 1161;CE74;110F 1161; # (ì¹´; ì¹´; á„á…¡; ì¹´; á„á…¡; ) HANGUL SYLLABLE KA
+CE75;CE75;110F 1161 11A8;CE75;110F 1161 11A8; # (ì¹µ; ì¹µ; á„ᅡᆨ; ì¹µ; á„ᅡᆨ; ) HANGUL SYLLABLE KAG
+CE76;CE76;110F 1161 11A9;CE76;110F 1161 11A9; # (칶; 칶; á„ᅡᆩ; 칶; á„ᅡᆩ; ) HANGUL SYLLABLE KAGG
+CE77;CE77;110F 1161 11AA;CE77;110F 1161 11AA; # (ì¹·; ì¹·; á„ᅡᆪ; ì¹·; á„ᅡᆪ; ) HANGUL SYLLABLE KAGS
+CE78;CE78;110F 1161 11AB;CE78;110F 1161 11AB; # (칸; 칸; á„ᅡᆫ; 칸; á„ᅡᆫ; ) HANGUL SYLLABLE KAN
+CE79;CE79;110F 1161 11AC;CE79;110F 1161 11AC; # (ì¹¹; ì¹¹; á„ᅡᆬ; ì¹¹; á„ᅡᆬ; ) HANGUL SYLLABLE KANJ
+CE7A;CE7A;110F 1161 11AD;CE7A;110F 1161 11AD; # (칺; 칺; á„ᅡᆭ; 칺; á„ᅡᆭ; ) HANGUL SYLLABLE KANH
+CE7B;CE7B;110F 1161 11AE;CE7B;110F 1161 11AE; # (ì¹»; ì¹»; á„ᅡᆮ; ì¹»; á„ᅡᆮ; ) HANGUL SYLLABLE KAD
+CE7C;CE7C;110F 1161 11AF;CE7C;110F 1161 11AF; # (ì¹¼; ì¹¼; á„ᅡᆯ; ì¹¼; á„ᅡᆯ; ) HANGUL SYLLABLE KAL
+CE7D;CE7D;110F 1161 11B0;CE7D;110F 1161 11B0; # (ì¹½; ì¹½; á„ᅡᆰ; ì¹½; á„ᅡᆰ; ) HANGUL SYLLABLE KALG
+CE7E;CE7E;110F 1161 11B1;CE7E;110F 1161 11B1; # (ì¹¾; ì¹¾; á„ᅡᆱ; ì¹¾; á„ᅡᆱ; ) HANGUL SYLLABLE KALM
+CE7F;CE7F;110F 1161 11B2;CE7F;110F 1161 11B2; # (칿; 칿; á„ᅡᆲ; 칿; á„ᅡᆲ; ) HANGUL SYLLABLE KALB
+CE80;CE80;110F 1161 11B3;CE80;110F 1161 11B3; # (캀; 캀; á„ᅡᆳ; 캀; á„ᅡᆳ; ) HANGUL SYLLABLE KALS
+CE81;CE81;110F 1161 11B4;CE81;110F 1161 11B4; # (ìº; ìº; á„ᅡᆴ; ìº; á„ᅡᆴ; ) HANGUL SYLLABLE KALT
+CE82;CE82;110F 1161 11B5;CE82;110F 1161 11B5; # (캂; 캂; á„ᅡᆵ; 캂; á„ᅡᆵ; ) HANGUL SYLLABLE KALP
+CE83;CE83;110F 1161 11B6;CE83;110F 1161 11B6; # (캃; 캃; á„ᅡᆶ; 캃; á„ᅡᆶ; ) HANGUL SYLLABLE KALH
+CE84;CE84;110F 1161 11B7;CE84;110F 1161 11B7; # (캄; 캄; á„ᅡᆷ; 캄; á„ᅡᆷ; ) HANGUL SYLLABLE KAM
+CE85;CE85;110F 1161 11B8;CE85;110F 1161 11B8; # (캅; 캅; á„ᅡᆸ; 캅; á„ᅡᆸ; ) HANGUL SYLLABLE KAB
+CE86;CE86;110F 1161 11B9;CE86;110F 1161 11B9; # (캆; 캆; á„ᅡᆹ; 캆; á„ᅡᆹ; ) HANGUL SYLLABLE KABS
+CE87;CE87;110F 1161 11BA;CE87;110F 1161 11BA; # (캇; 캇; á„ᅡᆺ; 캇; á„ᅡᆺ; ) HANGUL SYLLABLE KAS
+CE88;CE88;110F 1161 11BB;CE88;110F 1161 11BB; # (캈; 캈; á„ᅡᆻ; 캈; á„ᅡᆻ; ) HANGUL SYLLABLE KASS
+CE89;CE89;110F 1161 11BC;CE89;110F 1161 11BC; # (캉; 캉; á„ᅡᆼ; 캉; á„ᅡᆼ; ) HANGUL SYLLABLE KANG
+CE8A;CE8A;110F 1161 11BD;CE8A;110F 1161 11BD; # (캊; 캊; á„ᅡᆽ; 캊; á„ᅡᆽ; ) HANGUL SYLLABLE KAJ
+CE8B;CE8B;110F 1161 11BE;CE8B;110F 1161 11BE; # (캋; 캋; á„ᅡᆾ; 캋; á„ᅡᆾ; ) HANGUL SYLLABLE KAC
+CE8C;CE8C;110F 1161 11BF;CE8C;110F 1161 11BF; # (캌; 캌; á„ᅡᆿ; 캌; á„ᅡᆿ; ) HANGUL SYLLABLE KAK
+CE8D;CE8D;110F 1161 11C0;CE8D;110F 1161 11C0; # (ìº; ìº; á„ᅡᇀ; ìº; á„ᅡᇀ; ) HANGUL SYLLABLE KAT
+CE8E;CE8E;110F 1161 11C1;CE8E;110F 1161 11C1; # (캎; 캎; á„á…¡á‡; 캎; á„á…¡á‡; ) HANGUL SYLLABLE KAP
+CE8F;CE8F;110F 1161 11C2;CE8F;110F 1161 11C2; # (ìº; ìº; á„ᅡᇂ; ìº; á„ᅡᇂ; ) HANGUL SYLLABLE KAH
+CE90;CE90;110F 1162;CE90;110F 1162; # (ìº; ìº; á„á…¢; ìº; á„á…¢; ) HANGUL SYLLABLE KAE
+CE91;CE91;110F 1162 11A8;CE91;110F 1162 11A8; # (캑; 캑; á„ᅢᆨ; 캑; á„ᅢᆨ; ) HANGUL SYLLABLE KAEG
+CE92;CE92;110F 1162 11A9;CE92;110F 1162 11A9; # (캒; 캒; á„ᅢᆩ; 캒; á„ᅢᆩ; ) HANGUL SYLLABLE KAEGG
+CE93;CE93;110F 1162 11AA;CE93;110F 1162 11AA; # (캓; 캓; á„ᅢᆪ; 캓; á„ᅢᆪ; ) HANGUL SYLLABLE KAEGS
+CE94;CE94;110F 1162 11AB;CE94;110F 1162 11AB; # (캔; 캔; á„ᅢᆫ; 캔; á„ᅢᆫ; ) HANGUL SYLLABLE KAEN
+CE95;CE95;110F 1162 11AC;CE95;110F 1162 11AC; # (캕; 캕; á„ᅢᆬ; 캕; á„ᅢᆬ; ) HANGUL SYLLABLE KAENJ
+CE96;CE96;110F 1162 11AD;CE96;110F 1162 11AD; # (캖; 캖; á„ᅢᆭ; 캖; á„ᅢᆭ; ) HANGUL SYLLABLE KAENH
+CE97;CE97;110F 1162 11AE;CE97;110F 1162 11AE; # (캗; 캗; á„ᅢᆮ; 캗; á„ᅢᆮ; ) HANGUL SYLLABLE KAED
+CE98;CE98;110F 1162 11AF;CE98;110F 1162 11AF; # (캘; 캘; á„ᅢᆯ; 캘; á„ᅢᆯ; ) HANGUL SYLLABLE KAEL
+CE99;CE99;110F 1162 11B0;CE99;110F 1162 11B0; # (캙; 캙; á„ᅢᆰ; 캙; á„ᅢᆰ; ) HANGUL SYLLABLE KAELG
+CE9A;CE9A;110F 1162 11B1;CE9A;110F 1162 11B1; # (캚; 캚; á„ᅢᆱ; 캚; á„ᅢᆱ; ) HANGUL SYLLABLE KAELM
+CE9B;CE9B;110F 1162 11B2;CE9B;110F 1162 11B2; # (캛; 캛; á„ᅢᆲ; 캛; á„ᅢᆲ; ) HANGUL SYLLABLE KAELB
+CE9C;CE9C;110F 1162 11B3;CE9C;110F 1162 11B3; # (캜; 캜; á„ᅢᆳ; 캜; á„ᅢᆳ; ) HANGUL SYLLABLE KAELS
+CE9D;CE9D;110F 1162 11B4;CE9D;110F 1162 11B4; # (ìº; ìº; á„ᅢᆴ; ìº; á„ᅢᆴ; ) HANGUL SYLLABLE KAELT
+CE9E;CE9E;110F 1162 11B5;CE9E;110F 1162 11B5; # (캞; 캞; á„ᅢᆵ; 캞; á„ᅢᆵ; ) HANGUL SYLLABLE KAELP
+CE9F;CE9F;110F 1162 11B6;CE9F;110F 1162 11B6; # (캟; 캟; á„ᅢᆶ; 캟; á„ᅢᆶ; ) HANGUL SYLLABLE KAELH
+CEA0;CEA0;110F 1162 11B7;CEA0;110F 1162 11B7; # (캠; 캠; á„ᅢᆷ; 캠; á„ᅢᆷ; ) HANGUL SYLLABLE KAEM
+CEA1;CEA1;110F 1162 11B8;CEA1;110F 1162 11B8; # (캡; 캡; á„ᅢᆸ; 캡; á„ᅢᆸ; ) HANGUL SYLLABLE KAEB
+CEA2;CEA2;110F 1162 11B9;CEA2;110F 1162 11B9; # (캢; 캢; á„ᅢᆹ; 캢; á„ᅢᆹ; ) HANGUL SYLLABLE KAEBS
+CEA3;CEA3;110F 1162 11BA;CEA3;110F 1162 11BA; # (캣; 캣; á„ᅢᆺ; 캣; á„ᅢᆺ; ) HANGUL SYLLABLE KAES
+CEA4;CEA4;110F 1162 11BB;CEA4;110F 1162 11BB; # (캤; 캤; á„ᅢᆻ; 캤; á„ᅢᆻ; ) HANGUL SYLLABLE KAESS
+CEA5;CEA5;110F 1162 11BC;CEA5;110F 1162 11BC; # (캥; 캥; á„ᅢᆼ; 캥; á„ᅢᆼ; ) HANGUL SYLLABLE KAENG
+CEA6;CEA6;110F 1162 11BD;CEA6;110F 1162 11BD; # (캦; 캦; á„ᅢᆽ; 캦; á„ᅢᆽ; ) HANGUL SYLLABLE KAEJ
+CEA7;CEA7;110F 1162 11BE;CEA7;110F 1162 11BE; # (캧; 캧; á„ᅢᆾ; 캧; á„ᅢᆾ; ) HANGUL SYLLABLE KAEC
+CEA8;CEA8;110F 1162 11BF;CEA8;110F 1162 11BF; # (캨; 캨; á„ᅢᆿ; 캨; á„ᅢᆿ; ) HANGUL SYLLABLE KAEK
+CEA9;CEA9;110F 1162 11C0;CEA9;110F 1162 11C0; # (캩; 캩; á„ᅢᇀ; 캩; á„ᅢᇀ; ) HANGUL SYLLABLE KAET
+CEAA;CEAA;110F 1162 11C1;CEAA;110F 1162 11C1; # (캪; 캪; á„á…¢á‡; 캪; á„á…¢á‡; ) HANGUL SYLLABLE KAEP
+CEAB;CEAB;110F 1162 11C2;CEAB;110F 1162 11C2; # (캫; 캫; á„ᅢᇂ; 캫; á„ᅢᇂ; ) HANGUL SYLLABLE KAEH
+CEAC;CEAC;110F 1163;CEAC;110F 1163; # (캬; 캬; á„á…£; 캬; á„á…£; ) HANGUL SYLLABLE KYA
+CEAD;CEAD;110F 1163 11A8;CEAD;110F 1163 11A8; # (캭; 캭; á„ᅣᆨ; 캭; á„ᅣᆨ; ) HANGUL SYLLABLE KYAG
+CEAE;CEAE;110F 1163 11A9;CEAE;110F 1163 11A9; # (캮; 캮; á„ᅣᆩ; 캮; á„ᅣᆩ; ) HANGUL SYLLABLE KYAGG
+CEAF;CEAF;110F 1163 11AA;CEAF;110F 1163 11AA; # (캯; 캯; á„ᅣᆪ; 캯; á„ᅣᆪ; ) HANGUL SYLLABLE KYAGS
+CEB0;CEB0;110F 1163 11AB;CEB0;110F 1163 11AB; # (캰; 캰; á„ᅣᆫ; 캰; á„ᅣᆫ; ) HANGUL SYLLABLE KYAN
+CEB1;CEB1;110F 1163 11AC;CEB1;110F 1163 11AC; # (캱; 캱; á„ᅣᆬ; 캱; á„ᅣᆬ; ) HANGUL SYLLABLE KYANJ
+CEB2;CEB2;110F 1163 11AD;CEB2;110F 1163 11AD; # (캲; 캲; á„ᅣᆭ; 캲; á„ᅣᆭ; ) HANGUL SYLLABLE KYANH
+CEB3;CEB3;110F 1163 11AE;CEB3;110F 1163 11AE; # (캳; 캳; á„ᅣᆮ; 캳; á„ᅣᆮ; ) HANGUL SYLLABLE KYAD
+CEB4;CEB4;110F 1163 11AF;CEB4;110F 1163 11AF; # (캴; 캴; á„ᅣᆯ; 캴; á„ᅣᆯ; ) HANGUL SYLLABLE KYAL
+CEB5;CEB5;110F 1163 11B0;CEB5;110F 1163 11B0; # (캵; 캵; á„ᅣᆰ; 캵; á„ᅣᆰ; ) HANGUL SYLLABLE KYALG
+CEB6;CEB6;110F 1163 11B1;CEB6;110F 1163 11B1; # (캶; 캶; á„ᅣᆱ; 캶; á„ᅣᆱ; ) HANGUL SYLLABLE KYALM
+CEB7;CEB7;110F 1163 11B2;CEB7;110F 1163 11B2; # (캷; 캷; á„ᅣᆲ; 캷; á„ᅣᆲ; ) HANGUL SYLLABLE KYALB
+CEB8;CEB8;110F 1163 11B3;CEB8;110F 1163 11B3; # (캸; 캸; á„ᅣᆳ; 캸; á„ᅣᆳ; ) HANGUL SYLLABLE KYALS
+CEB9;CEB9;110F 1163 11B4;CEB9;110F 1163 11B4; # (캹; 캹; á„ᅣᆴ; 캹; á„ᅣᆴ; ) HANGUL SYLLABLE KYALT
+CEBA;CEBA;110F 1163 11B5;CEBA;110F 1163 11B5; # (캺; 캺; á„ᅣᆵ; 캺; á„ᅣᆵ; ) HANGUL SYLLABLE KYALP
+CEBB;CEBB;110F 1163 11B6;CEBB;110F 1163 11B6; # (캻; 캻; á„ᅣᆶ; 캻; á„ᅣᆶ; ) HANGUL SYLLABLE KYALH
+CEBC;CEBC;110F 1163 11B7;CEBC;110F 1163 11B7; # (캼; 캼; á„ᅣᆷ; 캼; á„ᅣᆷ; ) HANGUL SYLLABLE KYAM
+CEBD;CEBD;110F 1163 11B8;CEBD;110F 1163 11B8; # (캽; 캽; á„ᅣᆸ; 캽; á„ᅣᆸ; ) HANGUL SYLLABLE KYAB
+CEBE;CEBE;110F 1163 11B9;CEBE;110F 1163 11B9; # (캾; 캾; á„ᅣᆹ; 캾; á„ᅣᆹ; ) HANGUL SYLLABLE KYABS
+CEBF;CEBF;110F 1163 11BA;CEBF;110F 1163 11BA; # (캿; 캿; á„ᅣᆺ; 캿; á„ᅣᆺ; ) HANGUL SYLLABLE KYAS
+CEC0;CEC0;110F 1163 11BB;CEC0;110F 1163 11BB; # (컀; 컀; á„ᅣᆻ; 컀; á„ᅣᆻ; ) HANGUL SYLLABLE KYASS
+CEC1;CEC1;110F 1163 11BC;CEC1;110F 1163 11BC; # (ì»; ì»; á„ᅣᆼ; ì»; á„ᅣᆼ; ) HANGUL SYLLABLE KYANG
+CEC2;CEC2;110F 1163 11BD;CEC2;110F 1163 11BD; # (컂; 컂; á„ᅣᆽ; 컂; á„ᅣᆽ; ) HANGUL SYLLABLE KYAJ
+CEC3;CEC3;110F 1163 11BE;CEC3;110F 1163 11BE; # (컃; 컃; á„ᅣᆾ; 컃; á„ᅣᆾ; ) HANGUL SYLLABLE KYAC
+CEC4;CEC4;110F 1163 11BF;CEC4;110F 1163 11BF; # (컄; 컄; á„ᅣᆿ; 컄; á„ᅣᆿ; ) HANGUL SYLLABLE KYAK
+CEC5;CEC5;110F 1163 11C0;CEC5;110F 1163 11C0; # (ì»…; ì»…; á„ᅣᇀ; ì»…; á„ᅣᇀ; ) HANGUL SYLLABLE KYAT
+CEC6;CEC6;110F 1163 11C1;CEC6;110F 1163 11C1; # (컆; 컆; á„á…£á‡; 컆; á„á…£á‡; ) HANGUL SYLLABLE KYAP
+CEC7;CEC7;110F 1163 11C2;CEC7;110F 1163 11C2; # (컇; 컇; á„ᅣᇂ; 컇; á„ᅣᇂ; ) HANGUL SYLLABLE KYAH
+CEC8;CEC8;110F 1164;CEC8;110F 1164; # (컈; 컈; á„á…¤; 컈; á„á…¤; ) HANGUL SYLLABLE KYAE
+CEC9;CEC9;110F 1164 11A8;CEC9;110F 1164 11A8; # (컉; 컉; á„ᅤᆨ; 컉; á„ᅤᆨ; ) HANGUL SYLLABLE KYAEG
+CECA;CECA;110F 1164 11A9;CECA;110F 1164 11A9; # (컊; 컊; á„ᅤᆩ; 컊; á„ᅤᆩ; ) HANGUL SYLLABLE KYAEGG
+CECB;CECB;110F 1164 11AA;CECB;110F 1164 11AA; # (컋; 컋; á„ᅤᆪ; 컋; á„ᅤᆪ; ) HANGUL SYLLABLE KYAEGS
+CECC;CECC;110F 1164 11AB;CECC;110F 1164 11AB; # (컌; 컌; á„ᅤᆫ; 컌; á„ᅤᆫ; ) HANGUL SYLLABLE KYAEN
+CECD;CECD;110F 1164 11AC;CECD;110F 1164 11AC; # (ì»; ì»; á„ᅤᆬ; ì»; á„ᅤᆬ; ) HANGUL SYLLABLE KYAENJ
+CECE;CECE;110F 1164 11AD;CECE;110F 1164 11AD; # (컎; 컎; á„ᅤᆭ; 컎; á„ᅤᆭ; ) HANGUL SYLLABLE KYAENH
+CECF;CECF;110F 1164 11AE;CECF;110F 1164 11AE; # (ì»; ì»; á„ᅤᆮ; ì»; á„ᅤᆮ; ) HANGUL SYLLABLE KYAED
+CED0;CED0;110F 1164 11AF;CED0;110F 1164 11AF; # (ì»; ì»; á„ᅤᆯ; ì»; á„ᅤᆯ; ) HANGUL SYLLABLE KYAEL
+CED1;CED1;110F 1164 11B0;CED1;110F 1164 11B0; # (컑; 컑; á„ᅤᆰ; 컑; á„ᅤᆰ; ) HANGUL SYLLABLE KYAELG
+CED2;CED2;110F 1164 11B1;CED2;110F 1164 11B1; # (ì»’; ì»’; á„ᅤᆱ; ì»’; á„ᅤᆱ; ) HANGUL SYLLABLE KYAELM
+CED3;CED3;110F 1164 11B2;CED3;110F 1164 11B2; # (컓; 컓; á„ᅤᆲ; 컓; á„ᅤᆲ; ) HANGUL SYLLABLE KYAELB
+CED4;CED4;110F 1164 11B3;CED4;110F 1164 11B3; # (ì»”; ì»”; á„ᅤᆳ; ì»”; á„ᅤᆳ; ) HANGUL SYLLABLE KYAELS
+CED5;CED5;110F 1164 11B4;CED5;110F 1164 11B4; # (컕; 컕; á„ᅤᆴ; 컕; á„ᅤᆴ; ) HANGUL SYLLABLE KYAELT
+CED6;CED6;110F 1164 11B5;CED6;110F 1164 11B5; # (ì»–; ì»–; á„ᅤᆵ; ì»–; á„ᅤᆵ; ) HANGUL SYLLABLE KYAELP
+CED7;CED7;110F 1164 11B6;CED7;110F 1164 11B6; # (ì»—; ì»—; á„ᅤᆶ; ì»—; á„ᅤᆶ; ) HANGUL SYLLABLE KYAELH
+CED8;CED8;110F 1164 11B7;CED8;110F 1164 11B7; # (컘; 컘; á„ᅤᆷ; 컘; á„ᅤᆷ; ) HANGUL SYLLABLE KYAEM
+CED9;CED9;110F 1164 11B8;CED9;110F 1164 11B8; # (ì»™; ì»™; á„ᅤᆸ; ì»™; á„ᅤᆸ; ) HANGUL SYLLABLE KYAEB
+CEDA;CEDA;110F 1164 11B9;CEDA;110F 1164 11B9; # (컚; 컚; á„ᅤᆹ; 컚; á„ᅤᆹ; ) HANGUL SYLLABLE KYAEBS
+CEDB;CEDB;110F 1164 11BA;CEDB;110F 1164 11BA; # (ì»›; ì»›; á„ᅤᆺ; ì»›; á„ᅤᆺ; ) HANGUL SYLLABLE KYAES
+CEDC;CEDC;110F 1164 11BB;CEDC;110F 1164 11BB; # (컜; 컜; á„ᅤᆻ; 컜; á„ᅤᆻ; ) HANGUL SYLLABLE KYAESS
+CEDD;CEDD;110F 1164 11BC;CEDD;110F 1164 11BC; # (ì»; ì»; á„ᅤᆼ; ì»; á„ᅤᆼ; ) HANGUL SYLLABLE KYAENG
+CEDE;CEDE;110F 1164 11BD;CEDE;110F 1164 11BD; # (컞; 컞; á„ᅤᆽ; 컞; á„ᅤᆽ; ) HANGUL SYLLABLE KYAEJ
+CEDF;CEDF;110F 1164 11BE;CEDF;110F 1164 11BE; # (컟; 컟; á„ᅤᆾ; 컟; á„ᅤᆾ; ) HANGUL SYLLABLE KYAEC
+CEE0;CEE0;110F 1164 11BF;CEE0;110F 1164 11BF; # (ì» ; ì» ; á„ᅤᆿ; ì» ; á„ᅤᆿ; ) HANGUL SYLLABLE KYAEK
+CEE1;CEE1;110F 1164 11C0;CEE1;110F 1164 11C0; # (컡; 컡; á„ᅤᇀ; 컡; á„ᅤᇀ; ) HANGUL SYLLABLE KYAET
+CEE2;CEE2;110F 1164 11C1;CEE2;110F 1164 11C1; # (컢; 컢; á„á…¤á‡; 컢; á„á…¤á‡; ) HANGUL SYLLABLE KYAEP
+CEE3;CEE3;110F 1164 11C2;CEE3;110F 1164 11C2; # (컣; 컣; á„ᅤᇂ; 컣; á„ᅤᇂ; ) HANGUL SYLLABLE KYAEH
+CEE4;CEE4;110F 1165;CEE4;110F 1165; # (커; 커; á„á…¥; 커; á„á…¥; ) HANGUL SYLLABLE KEO
+CEE5;CEE5;110F 1165 11A8;CEE5;110F 1165 11A8; # (컥; 컥; á„ᅥᆨ; 컥; á„ᅥᆨ; ) HANGUL SYLLABLE KEOG
+CEE6;CEE6;110F 1165 11A9;CEE6;110F 1165 11A9; # (컦; 컦; á„ᅥᆩ; 컦; á„ᅥᆩ; ) HANGUL SYLLABLE KEOGG
+CEE7;CEE7;110F 1165 11AA;CEE7;110F 1165 11AA; # (컧; 컧; á„ᅥᆪ; 컧; á„ᅥᆪ; ) HANGUL SYLLABLE KEOGS
+CEE8;CEE8;110F 1165 11AB;CEE8;110F 1165 11AB; # (컨; 컨; á„ᅥᆫ; 컨; á„ᅥᆫ; ) HANGUL SYLLABLE KEON
+CEE9;CEE9;110F 1165 11AC;CEE9;110F 1165 11AC; # (컩; 컩; á„ᅥᆬ; 컩; á„ᅥᆬ; ) HANGUL SYLLABLE KEONJ
+CEEA;CEEA;110F 1165 11AD;CEEA;110F 1165 11AD; # (컪; 컪; á„ᅥᆭ; 컪; á„ᅥᆭ; ) HANGUL SYLLABLE KEONH
+CEEB;CEEB;110F 1165 11AE;CEEB;110F 1165 11AE; # (컫; 컫; á„ᅥᆮ; 컫; á„ᅥᆮ; ) HANGUL SYLLABLE KEOD
+CEEC;CEEC;110F 1165 11AF;CEEC;110F 1165 11AF; # (컬; 컬; á„ᅥᆯ; 컬; á„ᅥᆯ; ) HANGUL SYLLABLE KEOL
+CEED;CEED;110F 1165 11B0;CEED;110F 1165 11B0; # (ì»­; ì»­; á„ᅥᆰ; ì»­; á„ᅥᆰ; ) HANGUL SYLLABLE KEOLG
+CEEE;CEEE;110F 1165 11B1;CEEE;110F 1165 11B1; # (ì»®; ì»®; á„ᅥᆱ; ì»®; á„ᅥᆱ; ) HANGUL SYLLABLE KEOLM
+CEEF;CEEF;110F 1165 11B2;CEEF;110F 1165 11B2; # (컯; 컯; á„ᅥᆲ; 컯; á„ᅥᆲ; ) HANGUL SYLLABLE KEOLB
+CEF0;CEF0;110F 1165 11B3;CEF0;110F 1165 11B3; # (ì»°; ì»°; á„ᅥᆳ; ì»°; á„ᅥᆳ; ) HANGUL SYLLABLE KEOLS
+CEF1;CEF1;110F 1165 11B4;CEF1;110F 1165 11B4; # (ì»±; ì»±; á„ᅥᆴ; ì»±; á„ᅥᆴ; ) HANGUL SYLLABLE KEOLT
+CEF2;CEF2;110F 1165 11B5;CEF2;110F 1165 11B5; # (컲; 컲; á„ᅥᆵ; 컲; á„ᅥᆵ; ) HANGUL SYLLABLE KEOLP
+CEF3;CEF3;110F 1165 11B6;CEF3;110F 1165 11B6; # (컳; 컳; á„ᅥᆶ; 컳; á„ᅥᆶ; ) HANGUL SYLLABLE KEOLH
+CEF4;CEF4;110F 1165 11B7;CEF4;110F 1165 11B7; # (ì»´; ì»´; á„ᅥᆷ; ì»´; á„ᅥᆷ; ) HANGUL SYLLABLE KEOM
+CEF5;CEF5;110F 1165 11B8;CEF5;110F 1165 11B8; # (컵; 컵; á„ᅥᆸ; 컵; á„ᅥᆸ; ) HANGUL SYLLABLE KEOB
+CEF6;CEF6;110F 1165 11B9;CEF6;110F 1165 11B9; # (컶; 컶; á„ᅥᆹ; 컶; á„ᅥᆹ; ) HANGUL SYLLABLE KEOBS
+CEF7;CEF7;110F 1165 11BA;CEF7;110F 1165 11BA; # (ì»·; ì»·; á„ᅥᆺ; ì»·; á„ᅥᆺ; ) HANGUL SYLLABLE KEOS
+CEF8;CEF8;110F 1165 11BB;CEF8;110F 1165 11BB; # (컸; 컸; á„ᅥᆻ; 컸; á„ᅥᆻ; ) HANGUL SYLLABLE KEOSS
+CEF9;CEF9;110F 1165 11BC;CEF9;110F 1165 11BC; # (컹; 컹; á„ᅥᆼ; 컹; á„ᅥᆼ; ) HANGUL SYLLABLE KEONG
+CEFA;CEFA;110F 1165 11BD;CEFA;110F 1165 11BD; # (컺; 컺; á„ᅥᆽ; 컺; á„ᅥᆽ; ) HANGUL SYLLABLE KEOJ
+CEFB;CEFB;110F 1165 11BE;CEFB;110F 1165 11BE; # (ì»»; ì»»; á„ᅥᆾ; ì»»; á„ᅥᆾ; ) HANGUL SYLLABLE KEOC
+CEFC;CEFC;110F 1165 11BF;CEFC;110F 1165 11BF; # (컼; 컼; á„ᅥᆿ; 컼; á„ᅥᆿ; ) HANGUL SYLLABLE KEOK
+CEFD;CEFD;110F 1165 11C0;CEFD;110F 1165 11C0; # (컽; 컽; á„ᅥᇀ; 컽; á„ᅥᇀ; ) HANGUL SYLLABLE KEOT
+CEFE;CEFE;110F 1165 11C1;CEFE;110F 1165 11C1; # (컾; 컾; á„á…¥á‡; 컾; á„á…¥á‡; ) HANGUL SYLLABLE KEOP
+CEFF;CEFF;110F 1165 11C2;CEFF;110F 1165 11C2; # (컿; 컿; á„ᅥᇂ; 컿; á„ᅥᇂ; ) HANGUL SYLLABLE KEOH
+CF00;CF00;110F 1166;CF00;110F 1166; # (ì¼€; ì¼€; á„á…¦; ì¼€; á„á…¦; ) HANGUL SYLLABLE KE
+CF01;CF01;110F 1166 11A8;CF01;110F 1166 11A8; # (ì¼; ì¼; á„ᅦᆨ; ì¼; á„ᅦᆨ; ) HANGUL SYLLABLE KEG
+CF02;CF02;110F 1166 11A9;CF02;110F 1166 11A9; # (켂; 켂; á„ᅦᆩ; 켂; á„ᅦᆩ; ) HANGUL SYLLABLE KEGG
+CF03;CF03;110F 1166 11AA;CF03;110F 1166 11AA; # (켃; 켃; á„ᅦᆪ; 켃; á„ᅦᆪ; ) HANGUL SYLLABLE KEGS
+CF04;CF04;110F 1166 11AB;CF04;110F 1166 11AB; # (켄; 켄; á„ᅦᆫ; 켄; á„ᅦᆫ; ) HANGUL SYLLABLE KEN
+CF05;CF05;110F 1166 11AC;CF05;110F 1166 11AC; # (ì¼…; ì¼…; á„ᅦᆬ; ì¼…; á„ᅦᆬ; ) HANGUL SYLLABLE KENJ
+CF06;CF06;110F 1166 11AD;CF06;110F 1166 11AD; # (켆; 켆; á„ᅦᆭ; 켆; á„ᅦᆭ; ) HANGUL SYLLABLE KENH
+CF07;CF07;110F 1166 11AE;CF07;110F 1166 11AE; # (켇; 켇; á„ᅦᆮ; 켇; á„ᅦᆮ; ) HANGUL SYLLABLE KED
+CF08;CF08;110F 1166 11AF;CF08;110F 1166 11AF; # (켈; 켈; á„ᅦᆯ; 켈; á„ᅦᆯ; ) HANGUL SYLLABLE KEL
+CF09;CF09;110F 1166 11B0;CF09;110F 1166 11B0; # (켉; 켉; á„ᅦᆰ; 켉; á„ᅦᆰ; ) HANGUL SYLLABLE KELG
+CF0A;CF0A;110F 1166 11B1;CF0A;110F 1166 11B1; # (켊; 켊; á„ᅦᆱ; 켊; á„ᅦᆱ; ) HANGUL SYLLABLE KELM
+CF0B;CF0B;110F 1166 11B2;CF0B;110F 1166 11B2; # (켋; 켋; á„ᅦᆲ; 켋; á„ᅦᆲ; ) HANGUL SYLLABLE KELB
+CF0C;CF0C;110F 1166 11B3;CF0C;110F 1166 11B3; # (켌; 켌; á„ᅦᆳ; 켌; á„ᅦᆳ; ) HANGUL SYLLABLE KELS
+CF0D;CF0D;110F 1166 11B4;CF0D;110F 1166 11B4; # (ì¼; ì¼; á„ᅦᆴ; ì¼; á„ᅦᆴ; ) HANGUL SYLLABLE KELT
+CF0E;CF0E;110F 1166 11B5;CF0E;110F 1166 11B5; # (켎; 켎; á„ᅦᆵ; 켎; á„ᅦᆵ; ) HANGUL SYLLABLE KELP
+CF0F;CF0F;110F 1166 11B6;CF0F;110F 1166 11B6; # (ì¼; ì¼; á„ᅦᆶ; ì¼; á„ᅦᆶ; ) HANGUL SYLLABLE KELH
+CF10;CF10;110F 1166 11B7;CF10;110F 1166 11B7; # (ì¼; ì¼; á„ᅦᆷ; ì¼; á„ᅦᆷ; ) HANGUL SYLLABLE KEM
+CF11;CF11;110F 1166 11B8;CF11;110F 1166 11B8; # (켑; 켑; á„ᅦᆸ; 켑; á„ᅦᆸ; ) HANGUL SYLLABLE KEB
+CF12;CF12;110F 1166 11B9;CF12;110F 1166 11B9; # (ì¼’; ì¼’; á„ᅦᆹ; ì¼’; á„ᅦᆹ; ) HANGUL SYLLABLE KEBS
+CF13;CF13;110F 1166 11BA;CF13;110F 1166 11BA; # (켓; 켓; á„ᅦᆺ; 켓; á„ᅦᆺ; ) HANGUL SYLLABLE KES
+CF14;CF14;110F 1166 11BB;CF14;110F 1166 11BB; # (ì¼”; ì¼”; á„ᅦᆻ; ì¼”; á„ᅦᆻ; ) HANGUL SYLLABLE KESS
+CF15;CF15;110F 1166 11BC;CF15;110F 1166 11BC; # (켕; 켕; á„ᅦᆼ; 켕; á„ᅦᆼ; ) HANGUL SYLLABLE KENG
+CF16;CF16;110F 1166 11BD;CF16;110F 1166 11BD; # (ì¼–; ì¼–; á„ᅦᆽ; ì¼–; á„ᅦᆽ; ) HANGUL SYLLABLE KEJ
+CF17;CF17;110F 1166 11BE;CF17;110F 1166 11BE; # (ì¼—; ì¼—; á„ᅦᆾ; ì¼—; á„ᅦᆾ; ) HANGUL SYLLABLE KEC
+CF18;CF18;110F 1166 11BF;CF18;110F 1166 11BF; # (켘; 켘; á„ᅦᆿ; 켘; á„ᅦᆿ; ) HANGUL SYLLABLE KEK
+CF19;CF19;110F 1166 11C0;CF19;110F 1166 11C0; # (ì¼™; ì¼™; á„ᅦᇀ; ì¼™; á„ᅦᇀ; ) HANGUL SYLLABLE KET
+CF1A;CF1A;110F 1166 11C1;CF1A;110F 1166 11C1; # (켚; 켚; á„á…¦á‡; 켚; á„á…¦á‡; ) HANGUL SYLLABLE KEP
+CF1B;CF1B;110F 1166 11C2;CF1B;110F 1166 11C2; # (ì¼›; ì¼›; á„ᅦᇂ; ì¼›; á„ᅦᇂ; ) HANGUL SYLLABLE KEH
+CF1C;CF1C;110F 1167;CF1C;110F 1167; # (켜; 켜; á„á…§; 켜; á„á…§; ) HANGUL SYLLABLE KYEO
+CF1D;CF1D;110F 1167 11A8;CF1D;110F 1167 11A8; # (ì¼; ì¼; á„ᅧᆨ; ì¼; á„ᅧᆨ; ) HANGUL SYLLABLE KYEOG
+CF1E;CF1E;110F 1167 11A9;CF1E;110F 1167 11A9; # (켞; 켞; á„ᅧᆩ; 켞; á„ᅧᆩ; ) HANGUL SYLLABLE KYEOGG
+CF1F;CF1F;110F 1167 11AA;CF1F;110F 1167 11AA; # (켟; 켟; á„ᅧᆪ; 켟; á„ᅧᆪ; ) HANGUL SYLLABLE KYEOGS
+CF20;CF20;110F 1167 11AB;CF20;110F 1167 11AB; # (ì¼ ; ì¼ ; á„ᅧᆫ; ì¼ ; á„ᅧᆫ; ) HANGUL SYLLABLE KYEON
+CF21;CF21;110F 1167 11AC;CF21;110F 1167 11AC; # (켡; 켡; á„ᅧᆬ; 켡; á„ᅧᆬ; ) HANGUL SYLLABLE KYEONJ
+CF22;CF22;110F 1167 11AD;CF22;110F 1167 11AD; # (ì¼¢; ì¼¢; á„ᅧᆭ; ì¼¢; á„ᅧᆭ; ) HANGUL SYLLABLE KYEONH
+CF23;CF23;110F 1167 11AE;CF23;110F 1167 11AE; # (ì¼£; ì¼£; á„ᅧᆮ; ì¼£; á„ᅧᆮ; ) HANGUL SYLLABLE KYEOD
+CF24;CF24;110F 1167 11AF;CF24;110F 1167 11AF; # (켤; 켤; á„ᅧᆯ; 켤; á„ᅧᆯ; ) HANGUL SYLLABLE KYEOL
+CF25;CF25;110F 1167 11B0;CF25;110F 1167 11B0; # (ì¼¥; ì¼¥; á„ᅧᆰ; ì¼¥; á„ᅧᆰ; ) HANGUL SYLLABLE KYEOLG
+CF26;CF26;110F 1167 11B1;CF26;110F 1167 11B1; # (켦; 켦; á„ᅧᆱ; 켦; á„ᅧᆱ; ) HANGUL SYLLABLE KYEOLM
+CF27;CF27;110F 1167 11B2;CF27;110F 1167 11B2; # (켧; 켧; á„ᅧᆲ; 켧; á„ᅧᆲ; ) HANGUL SYLLABLE KYEOLB
+CF28;CF28;110F 1167 11B3;CF28;110F 1167 11B3; # (켨; 켨; á„ᅧᆳ; 켨; á„ᅧᆳ; ) HANGUL SYLLABLE KYEOLS
+CF29;CF29;110F 1167 11B4;CF29;110F 1167 11B4; # (켩; 켩; á„ᅧᆴ; 켩; á„ᅧᆴ; ) HANGUL SYLLABLE KYEOLT
+CF2A;CF2A;110F 1167 11B5;CF2A;110F 1167 11B5; # (켪; 켪; á„ᅧᆵ; 켪; á„ᅧᆵ; ) HANGUL SYLLABLE KYEOLP
+CF2B;CF2B;110F 1167 11B6;CF2B;110F 1167 11B6; # (켫; 켫; á„ᅧᆶ; 켫; á„ᅧᆶ; ) HANGUL SYLLABLE KYEOLH
+CF2C;CF2C;110F 1167 11B7;CF2C;110F 1167 11B7; # (켬; 켬; á„ᅧᆷ; 켬; á„ᅧᆷ; ) HANGUL SYLLABLE KYEOM
+CF2D;CF2D;110F 1167 11B8;CF2D;110F 1167 11B8; # (ì¼­; ì¼­; á„ᅧᆸ; ì¼­; á„ᅧᆸ; ) HANGUL SYLLABLE KYEOB
+CF2E;CF2E;110F 1167 11B9;CF2E;110F 1167 11B9; # (ì¼®; ì¼®; á„ᅧᆹ; ì¼®; á„ᅧᆹ; ) HANGUL SYLLABLE KYEOBS
+CF2F;CF2F;110F 1167 11BA;CF2F;110F 1167 11BA; # (켯; 켯; á„ᅧᆺ; 켯; á„ᅧᆺ; ) HANGUL SYLLABLE KYEOS
+CF30;CF30;110F 1167 11BB;CF30;110F 1167 11BB; # (ì¼°; ì¼°; á„ᅧᆻ; ì¼°; á„ᅧᆻ; ) HANGUL SYLLABLE KYEOSS
+CF31;CF31;110F 1167 11BC;CF31;110F 1167 11BC; # (ì¼±; ì¼±; á„ᅧᆼ; ì¼±; á„ᅧᆼ; ) HANGUL SYLLABLE KYEONG
+CF32;CF32;110F 1167 11BD;CF32;110F 1167 11BD; # (ì¼²; ì¼²; á„ᅧᆽ; ì¼²; á„ᅧᆽ; ) HANGUL SYLLABLE KYEOJ
+CF33;CF33;110F 1167 11BE;CF33;110F 1167 11BE; # (ì¼³; ì¼³; á„ᅧᆾ; ì¼³; á„ᅧᆾ; ) HANGUL SYLLABLE KYEOC
+CF34;CF34;110F 1167 11BF;CF34;110F 1167 11BF; # (ì¼´; ì¼´; á„ᅧᆿ; ì¼´; á„ᅧᆿ; ) HANGUL SYLLABLE KYEOK
+CF35;CF35;110F 1167 11C0;CF35;110F 1167 11C0; # (ì¼µ; ì¼µ; á„ᅧᇀ; ì¼µ; á„ᅧᇀ; ) HANGUL SYLLABLE KYEOT
+CF36;CF36;110F 1167 11C1;CF36;110F 1167 11C1; # (켶; 켶; á„á…§á‡; 켶; á„á…§á‡; ) HANGUL SYLLABLE KYEOP
+CF37;CF37;110F 1167 11C2;CF37;110F 1167 11C2; # (ì¼·; ì¼·; á„ᅧᇂ; ì¼·; á„ᅧᇂ; ) HANGUL SYLLABLE KYEOH
+CF38;CF38;110F 1168;CF38;110F 1168; # (켸; 켸; á„á…¨; 켸; á„á…¨; ) HANGUL SYLLABLE KYE
+CF39;CF39;110F 1168 11A8;CF39;110F 1168 11A8; # (ì¼¹; ì¼¹; á„ᅨᆨ; ì¼¹; á„ᅨᆨ; ) HANGUL SYLLABLE KYEG
+CF3A;CF3A;110F 1168 11A9;CF3A;110F 1168 11A9; # (켺; 켺; á„ᅨᆩ; 켺; á„ᅨᆩ; ) HANGUL SYLLABLE KYEGG
+CF3B;CF3B;110F 1168 11AA;CF3B;110F 1168 11AA; # (ì¼»; ì¼»; á„ᅨᆪ; ì¼»; á„ᅨᆪ; ) HANGUL SYLLABLE KYEGS
+CF3C;CF3C;110F 1168 11AB;CF3C;110F 1168 11AB; # (ì¼¼; ì¼¼; á„ᅨᆫ; ì¼¼; á„ᅨᆫ; ) HANGUL SYLLABLE KYEN
+CF3D;CF3D;110F 1168 11AC;CF3D;110F 1168 11AC; # (ì¼½; ì¼½; á„ᅨᆬ; ì¼½; á„ᅨᆬ; ) HANGUL SYLLABLE KYENJ
+CF3E;CF3E;110F 1168 11AD;CF3E;110F 1168 11AD; # (ì¼¾; ì¼¾; á„ᅨᆭ; ì¼¾; á„ᅨᆭ; ) HANGUL SYLLABLE KYENH
+CF3F;CF3F;110F 1168 11AE;CF3F;110F 1168 11AE; # (켿; 켿; á„ᅨᆮ; 켿; á„ᅨᆮ; ) HANGUL SYLLABLE KYED
+CF40;CF40;110F 1168 11AF;CF40;110F 1168 11AF; # (ì½€; ì½€; á„ᅨᆯ; ì½€; á„ᅨᆯ; ) HANGUL SYLLABLE KYEL
+CF41;CF41;110F 1168 11B0;CF41;110F 1168 11B0; # (ì½; ì½; á„ᅨᆰ; ì½; á„ᅨᆰ; ) HANGUL SYLLABLE KYELG
+CF42;CF42;110F 1168 11B1;CF42;110F 1168 11B1; # (콂; 콂; á„ᅨᆱ; 콂; á„ᅨᆱ; ) HANGUL SYLLABLE KYELM
+CF43;CF43;110F 1168 11B2;CF43;110F 1168 11B2; # (콃; 콃; á„ᅨᆲ; 콃; á„ᅨᆲ; ) HANGUL SYLLABLE KYELB
+CF44;CF44;110F 1168 11B3;CF44;110F 1168 11B3; # (콄; 콄; á„ᅨᆳ; 콄; á„ᅨᆳ; ) HANGUL SYLLABLE KYELS
+CF45;CF45;110F 1168 11B4;CF45;110F 1168 11B4; # (ì½…; ì½…; á„ᅨᆴ; ì½…; á„ᅨᆴ; ) HANGUL SYLLABLE KYELT
+CF46;CF46;110F 1168 11B5;CF46;110F 1168 11B5; # (콆; 콆; á„ᅨᆵ; 콆; á„ᅨᆵ; ) HANGUL SYLLABLE KYELP
+CF47;CF47;110F 1168 11B6;CF47;110F 1168 11B6; # (콇; 콇; á„ᅨᆶ; 콇; á„ᅨᆶ; ) HANGUL SYLLABLE KYELH
+CF48;CF48;110F 1168 11B7;CF48;110F 1168 11B7; # (콈; 콈; á„ᅨᆷ; 콈; á„ᅨᆷ; ) HANGUL SYLLABLE KYEM
+CF49;CF49;110F 1168 11B8;CF49;110F 1168 11B8; # (콉; 콉; á„ᅨᆸ; 콉; á„ᅨᆸ; ) HANGUL SYLLABLE KYEB
+CF4A;CF4A;110F 1168 11B9;CF4A;110F 1168 11B9; # (콊; 콊; á„ᅨᆹ; 콊; á„ᅨᆹ; ) HANGUL SYLLABLE KYEBS
+CF4B;CF4B;110F 1168 11BA;CF4B;110F 1168 11BA; # (콋; 콋; á„ᅨᆺ; 콋; á„ᅨᆺ; ) HANGUL SYLLABLE KYES
+CF4C;CF4C;110F 1168 11BB;CF4C;110F 1168 11BB; # (콌; 콌; á„ᅨᆻ; 콌; á„ᅨᆻ; ) HANGUL SYLLABLE KYESS
+CF4D;CF4D;110F 1168 11BC;CF4D;110F 1168 11BC; # (ì½; ì½; á„ᅨᆼ; ì½; á„ᅨᆼ; ) HANGUL SYLLABLE KYENG
+CF4E;CF4E;110F 1168 11BD;CF4E;110F 1168 11BD; # (콎; 콎; á„ᅨᆽ; 콎; á„ᅨᆽ; ) HANGUL SYLLABLE KYEJ
+CF4F;CF4F;110F 1168 11BE;CF4F;110F 1168 11BE; # (ì½; ì½; á„ᅨᆾ; ì½; á„ᅨᆾ; ) HANGUL SYLLABLE KYEC
+CF50;CF50;110F 1168 11BF;CF50;110F 1168 11BF; # (ì½; ì½; á„ᅨᆿ; ì½; á„ᅨᆿ; ) HANGUL SYLLABLE KYEK
+CF51;CF51;110F 1168 11C0;CF51;110F 1168 11C0; # (콑; 콑; á„ᅨᇀ; 콑; á„ᅨᇀ; ) HANGUL SYLLABLE KYET
+CF52;CF52;110F 1168 11C1;CF52;110F 1168 11C1; # (ì½’; ì½’; á„á…¨á‡; ì½’; á„á…¨á‡; ) HANGUL SYLLABLE KYEP
+CF53;CF53;110F 1168 11C2;CF53;110F 1168 11C2; # (콓; 콓; á„ᅨᇂ; 콓; á„ᅨᇂ; ) HANGUL SYLLABLE KYEH
+CF54;CF54;110F 1169;CF54;110F 1169; # (ì½”; ì½”; á„á…©; ì½”; á„á…©; ) HANGUL SYLLABLE KO
+CF55;CF55;110F 1169 11A8;CF55;110F 1169 11A8; # (콕; 콕; á„ᅩᆨ; 콕; á„ᅩᆨ; ) HANGUL SYLLABLE KOG
+CF56;CF56;110F 1169 11A9;CF56;110F 1169 11A9; # (ì½–; ì½–; á„ᅩᆩ; ì½–; á„ᅩᆩ; ) HANGUL SYLLABLE KOGG
+CF57;CF57;110F 1169 11AA;CF57;110F 1169 11AA; # (ì½—; ì½—; á„ᅩᆪ; ì½—; á„ᅩᆪ; ) HANGUL SYLLABLE KOGS
+CF58;CF58;110F 1169 11AB;CF58;110F 1169 11AB; # (콘; 콘; á„ᅩᆫ; 콘; á„ᅩᆫ; ) HANGUL SYLLABLE KON
+CF59;CF59;110F 1169 11AC;CF59;110F 1169 11AC; # (ì½™; ì½™; á„ᅩᆬ; ì½™; á„ᅩᆬ; ) HANGUL SYLLABLE KONJ
+CF5A;CF5A;110F 1169 11AD;CF5A;110F 1169 11AD; # (콚; 콚; á„ᅩᆭ; 콚; á„ᅩᆭ; ) HANGUL SYLLABLE KONH
+CF5B;CF5B;110F 1169 11AE;CF5B;110F 1169 11AE; # (ì½›; ì½›; á„ᅩᆮ; ì½›; á„ᅩᆮ; ) HANGUL SYLLABLE KOD
+CF5C;CF5C;110F 1169 11AF;CF5C;110F 1169 11AF; # (콜; 콜; á„ᅩᆯ; 콜; á„ᅩᆯ; ) HANGUL SYLLABLE KOL
+CF5D;CF5D;110F 1169 11B0;CF5D;110F 1169 11B0; # (ì½; ì½; á„ᅩᆰ; ì½; á„ᅩᆰ; ) HANGUL SYLLABLE KOLG
+CF5E;CF5E;110F 1169 11B1;CF5E;110F 1169 11B1; # (콞; 콞; á„ᅩᆱ; 콞; á„ᅩᆱ; ) HANGUL SYLLABLE KOLM
+CF5F;CF5F;110F 1169 11B2;CF5F;110F 1169 11B2; # (콟; 콟; á„ᅩᆲ; 콟; á„ᅩᆲ; ) HANGUL SYLLABLE KOLB
+CF60;CF60;110F 1169 11B3;CF60;110F 1169 11B3; # (ì½ ; ì½ ; á„ᅩᆳ; ì½ ; á„ᅩᆳ; ) HANGUL SYLLABLE KOLS
+CF61;CF61;110F 1169 11B4;CF61;110F 1169 11B4; # (콡; 콡; á„ᅩᆴ; 콡; á„ᅩᆴ; ) HANGUL SYLLABLE KOLT
+CF62;CF62;110F 1169 11B5;CF62;110F 1169 11B5; # (ì½¢; ì½¢; á„ᅩᆵ; ì½¢; á„ᅩᆵ; ) HANGUL SYLLABLE KOLP
+CF63;CF63;110F 1169 11B6;CF63;110F 1169 11B6; # (ì½£; ì½£; á„ᅩᆶ; ì½£; á„ᅩᆶ; ) HANGUL SYLLABLE KOLH
+CF64;CF64;110F 1169 11B7;CF64;110F 1169 11B7; # (콤; 콤; á„ᅩᆷ; 콤; á„ᅩᆷ; ) HANGUL SYLLABLE KOM
+CF65;CF65;110F 1169 11B8;CF65;110F 1169 11B8; # (ì½¥; ì½¥; á„ᅩᆸ; ì½¥; á„ᅩᆸ; ) HANGUL SYLLABLE KOB
+CF66;CF66;110F 1169 11B9;CF66;110F 1169 11B9; # (콦; 콦; á„ᅩᆹ; 콦; á„ᅩᆹ; ) HANGUL SYLLABLE KOBS
+CF67;CF67;110F 1169 11BA;CF67;110F 1169 11BA; # (콧; 콧; á„ᅩᆺ; 콧; á„ᅩᆺ; ) HANGUL SYLLABLE KOS
+CF68;CF68;110F 1169 11BB;CF68;110F 1169 11BB; # (콨; 콨; á„ᅩᆻ; 콨; á„ᅩᆻ; ) HANGUL SYLLABLE KOSS
+CF69;CF69;110F 1169 11BC;CF69;110F 1169 11BC; # (콩; 콩; á„ᅩᆼ; 콩; á„ᅩᆼ; ) HANGUL SYLLABLE KONG
+CF6A;CF6A;110F 1169 11BD;CF6A;110F 1169 11BD; # (콪; 콪; á„ᅩᆽ; 콪; á„ᅩᆽ; ) HANGUL SYLLABLE KOJ
+CF6B;CF6B;110F 1169 11BE;CF6B;110F 1169 11BE; # (콫; 콫; á„ᅩᆾ; 콫; á„ᅩᆾ; ) HANGUL SYLLABLE KOC
+CF6C;CF6C;110F 1169 11BF;CF6C;110F 1169 11BF; # (콬; 콬; á„ᅩᆿ; 콬; á„ᅩᆿ; ) HANGUL SYLLABLE KOK
+CF6D;CF6D;110F 1169 11C0;CF6D;110F 1169 11C0; # (ì½­; ì½­; á„ᅩᇀ; ì½­; á„ᅩᇀ; ) HANGUL SYLLABLE KOT
+CF6E;CF6E;110F 1169 11C1;CF6E;110F 1169 11C1; # (ì½®; ì½®; á„á…©á‡; ì½®; á„á…©á‡; ) HANGUL SYLLABLE KOP
+CF6F;CF6F;110F 1169 11C2;CF6F;110F 1169 11C2; # (콯; 콯; á„ᅩᇂ; 콯; á„ᅩᇂ; ) HANGUL SYLLABLE KOH
+CF70;CF70;110F 116A;CF70;110F 116A; # (ì½°; ì½°; á„á…ª; ì½°; á„á…ª; ) HANGUL SYLLABLE KWA
+CF71;CF71;110F 116A 11A8;CF71;110F 116A 11A8; # (ì½±; ì½±; á„ᅪᆨ; ì½±; á„ᅪᆨ; ) HANGUL SYLLABLE KWAG
+CF72;CF72;110F 116A 11A9;CF72;110F 116A 11A9; # (ì½²; ì½²; á„ᅪᆩ; ì½²; á„ᅪᆩ; ) HANGUL SYLLABLE KWAGG
+CF73;CF73;110F 116A 11AA;CF73;110F 116A 11AA; # (ì½³; ì½³; á„ᅪᆪ; ì½³; á„ᅪᆪ; ) HANGUL SYLLABLE KWAGS
+CF74;CF74;110F 116A 11AB;CF74;110F 116A 11AB; # (ì½´; ì½´; á„ᅪᆫ; ì½´; á„ᅪᆫ; ) HANGUL SYLLABLE KWAN
+CF75;CF75;110F 116A 11AC;CF75;110F 116A 11AC; # (ì½µ; ì½µ; á„ᅪᆬ; ì½µ; á„ᅪᆬ; ) HANGUL SYLLABLE KWANJ
+CF76;CF76;110F 116A 11AD;CF76;110F 116A 11AD; # (콶; 콶; á„ᅪᆭ; 콶; á„ᅪᆭ; ) HANGUL SYLLABLE KWANH
+CF77;CF77;110F 116A 11AE;CF77;110F 116A 11AE; # (ì½·; ì½·; á„ᅪᆮ; ì½·; á„ᅪᆮ; ) HANGUL SYLLABLE KWAD
+CF78;CF78;110F 116A 11AF;CF78;110F 116A 11AF; # (콸; 콸; á„ᅪᆯ; 콸; á„ᅪᆯ; ) HANGUL SYLLABLE KWAL
+CF79;CF79;110F 116A 11B0;CF79;110F 116A 11B0; # (ì½¹; ì½¹; á„ᅪᆰ; ì½¹; á„ᅪᆰ; ) HANGUL SYLLABLE KWALG
+CF7A;CF7A;110F 116A 11B1;CF7A;110F 116A 11B1; # (콺; 콺; á„ᅪᆱ; 콺; á„ᅪᆱ; ) HANGUL SYLLABLE KWALM
+CF7B;CF7B;110F 116A 11B2;CF7B;110F 116A 11B2; # (ì½»; ì½»; á„ᅪᆲ; ì½»; á„ᅪᆲ; ) HANGUL SYLLABLE KWALB
+CF7C;CF7C;110F 116A 11B3;CF7C;110F 116A 11B3; # (ì½¼; ì½¼; á„ᅪᆳ; ì½¼; á„ᅪᆳ; ) HANGUL SYLLABLE KWALS
+CF7D;CF7D;110F 116A 11B4;CF7D;110F 116A 11B4; # (ì½½; ì½½; á„ᅪᆴ; ì½½; á„ᅪᆴ; ) HANGUL SYLLABLE KWALT
+CF7E;CF7E;110F 116A 11B5;CF7E;110F 116A 11B5; # (ì½¾; ì½¾; á„ᅪᆵ; ì½¾; á„ᅪᆵ; ) HANGUL SYLLABLE KWALP
+CF7F;CF7F;110F 116A 11B6;CF7F;110F 116A 11B6; # (콿; 콿; á„ᅪᆶ; 콿; á„ᅪᆶ; ) HANGUL SYLLABLE KWALH
+CF80;CF80;110F 116A 11B7;CF80;110F 116A 11B7; # (ì¾€; ì¾€; á„ᅪᆷ; ì¾€; á„ᅪᆷ; ) HANGUL SYLLABLE KWAM
+CF81;CF81;110F 116A 11B8;CF81;110F 116A 11B8; # (ì¾; ì¾; á„ᅪᆸ; ì¾; á„ᅪᆸ; ) HANGUL SYLLABLE KWAB
+CF82;CF82;110F 116A 11B9;CF82;110F 116A 11B9; # (쾂; 쾂; á„ᅪᆹ; 쾂; á„ᅪᆹ; ) HANGUL SYLLABLE KWABS
+CF83;CF83;110F 116A 11BA;CF83;110F 116A 11BA; # (쾃; 쾃; á„ᅪᆺ; 쾃; á„ᅪᆺ; ) HANGUL SYLLABLE KWAS
+CF84;CF84;110F 116A 11BB;CF84;110F 116A 11BB; # (쾄; 쾄; á„ᅪᆻ; 쾄; á„ᅪᆻ; ) HANGUL SYLLABLE KWASS
+CF85;CF85;110F 116A 11BC;CF85;110F 116A 11BC; # (ì¾…; ì¾…; á„ᅪᆼ; ì¾…; á„ᅪᆼ; ) HANGUL SYLLABLE KWANG
+CF86;CF86;110F 116A 11BD;CF86;110F 116A 11BD; # (쾆; 쾆; á„ᅪᆽ; 쾆; á„ᅪᆽ; ) HANGUL SYLLABLE KWAJ
+CF87;CF87;110F 116A 11BE;CF87;110F 116A 11BE; # (쾇; 쾇; á„ᅪᆾ; 쾇; á„ᅪᆾ; ) HANGUL SYLLABLE KWAC
+CF88;CF88;110F 116A 11BF;CF88;110F 116A 11BF; # (쾈; 쾈; á„ᅪᆿ; 쾈; á„ᅪᆿ; ) HANGUL SYLLABLE KWAK
+CF89;CF89;110F 116A 11C0;CF89;110F 116A 11C0; # (쾉; 쾉; á„ᅪᇀ; 쾉; á„ᅪᇀ; ) HANGUL SYLLABLE KWAT
+CF8A;CF8A;110F 116A 11C1;CF8A;110F 116A 11C1; # (쾊; 쾊; á„á…ªá‡; 쾊; á„á…ªá‡; ) HANGUL SYLLABLE KWAP
+CF8B;CF8B;110F 116A 11C2;CF8B;110F 116A 11C2; # (쾋; 쾋; á„ᅪᇂ; 쾋; á„ᅪᇂ; ) HANGUL SYLLABLE KWAH
+CF8C;CF8C;110F 116B;CF8C;110F 116B; # (쾌; 쾌; á„á…«; 쾌; á„á…«; ) HANGUL SYLLABLE KWAE
+CF8D;CF8D;110F 116B 11A8;CF8D;110F 116B 11A8; # (ì¾; ì¾; á„ᅫᆨ; ì¾; á„ᅫᆨ; ) HANGUL SYLLABLE KWAEG
+CF8E;CF8E;110F 116B 11A9;CF8E;110F 116B 11A9; # (쾎; 쾎; á„ᅫᆩ; 쾎; á„ᅫᆩ; ) HANGUL SYLLABLE KWAEGG
+CF8F;CF8F;110F 116B 11AA;CF8F;110F 116B 11AA; # (ì¾; ì¾; á„ᅫᆪ; ì¾; á„ᅫᆪ; ) HANGUL SYLLABLE KWAEGS
+CF90;CF90;110F 116B 11AB;CF90;110F 116B 11AB; # (ì¾; ì¾; á„ᅫᆫ; ì¾; á„ᅫᆫ; ) HANGUL SYLLABLE KWAEN
+CF91;CF91;110F 116B 11AC;CF91;110F 116B 11AC; # (쾑; 쾑; á„ᅫᆬ; 쾑; á„ᅫᆬ; ) HANGUL SYLLABLE KWAENJ
+CF92;CF92;110F 116B 11AD;CF92;110F 116B 11AD; # (ì¾’; ì¾’; á„ᅫᆭ; ì¾’; á„ᅫᆭ; ) HANGUL SYLLABLE KWAENH
+CF93;CF93;110F 116B 11AE;CF93;110F 116B 11AE; # (쾓; 쾓; á„ᅫᆮ; 쾓; á„ᅫᆮ; ) HANGUL SYLLABLE KWAED
+CF94;CF94;110F 116B 11AF;CF94;110F 116B 11AF; # (ì¾”; ì¾”; á„ᅫᆯ; ì¾”; á„ᅫᆯ; ) HANGUL SYLLABLE KWAEL
+CF95;CF95;110F 116B 11B0;CF95;110F 116B 11B0; # (쾕; 쾕; á„ᅫᆰ; 쾕; á„ᅫᆰ; ) HANGUL SYLLABLE KWAELG
+CF96;CF96;110F 116B 11B1;CF96;110F 116B 11B1; # (ì¾–; ì¾–; á„ᅫᆱ; ì¾–; á„ᅫᆱ; ) HANGUL SYLLABLE KWAELM
+CF97;CF97;110F 116B 11B2;CF97;110F 116B 11B2; # (ì¾—; ì¾—; á„ᅫᆲ; ì¾—; á„ᅫᆲ; ) HANGUL SYLLABLE KWAELB
+CF98;CF98;110F 116B 11B3;CF98;110F 116B 11B3; # (쾘; 쾘; á„ᅫᆳ; 쾘; á„ᅫᆳ; ) HANGUL SYLLABLE KWAELS
+CF99;CF99;110F 116B 11B4;CF99;110F 116B 11B4; # (ì¾™; ì¾™; á„ᅫᆴ; ì¾™; á„ᅫᆴ; ) HANGUL SYLLABLE KWAELT
+CF9A;CF9A;110F 116B 11B5;CF9A;110F 116B 11B5; # (쾚; 쾚; á„ᅫᆵ; 쾚; á„ᅫᆵ; ) HANGUL SYLLABLE KWAELP
+CF9B;CF9B;110F 116B 11B6;CF9B;110F 116B 11B6; # (ì¾›; ì¾›; á„ᅫᆶ; ì¾›; á„ᅫᆶ; ) HANGUL SYLLABLE KWAELH
+CF9C;CF9C;110F 116B 11B7;CF9C;110F 116B 11B7; # (쾜; 쾜; á„ᅫᆷ; 쾜; á„ᅫᆷ; ) HANGUL SYLLABLE KWAEM
+CF9D;CF9D;110F 116B 11B8;CF9D;110F 116B 11B8; # (ì¾; ì¾; á„ᅫᆸ; ì¾; á„ᅫᆸ; ) HANGUL SYLLABLE KWAEB
+CF9E;CF9E;110F 116B 11B9;CF9E;110F 116B 11B9; # (쾞; 쾞; á„ᅫᆹ; 쾞; á„ᅫᆹ; ) HANGUL SYLLABLE KWAEBS
+CF9F;CF9F;110F 116B 11BA;CF9F;110F 116B 11BA; # (쾟; 쾟; á„ᅫᆺ; 쾟; á„ᅫᆺ; ) HANGUL SYLLABLE KWAES
+CFA0;CFA0;110F 116B 11BB;CFA0;110F 116B 11BB; # (ì¾ ; ì¾ ; á„ᅫᆻ; ì¾ ; á„ᅫᆻ; ) HANGUL SYLLABLE KWAESS
+CFA1;CFA1;110F 116B 11BC;CFA1;110F 116B 11BC; # (쾡; 쾡; á„ᅫᆼ; 쾡; á„ᅫᆼ; ) HANGUL SYLLABLE KWAENG
+CFA2;CFA2;110F 116B 11BD;CFA2;110F 116B 11BD; # (ì¾¢; ì¾¢; á„ᅫᆽ; ì¾¢; á„ᅫᆽ; ) HANGUL SYLLABLE KWAEJ
+CFA3;CFA3;110F 116B 11BE;CFA3;110F 116B 11BE; # (ì¾£; ì¾£; á„ᅫᆾ; ì¾£; á„ᅫᆾ; ) HANGUL SYLLABLE KWAEC
+CFA4;CFA4;110F 116B 11BF;CFA4;110F 116B 11BF; # (쾤; 쾤; á„ᅫᆿ; 쾤; á„ᅫᆿ; ) HANGUL SYLLABLE KWAEK
+CFA5;CFA5;110F 116B 11C0;CFA5;110F 116B 11C0; # (ì¾¥; ì¾¥; á„ᅫᇀ; ì¾¥; á„ᅫᇀ; ) HANGUL SYLLABLE KWAET
+CFA6;CFA6;110F 116B 11C1;CFA6;110F 116B 11C1; # (쾦; 쾦; á„á…«á‡; 쾦; á„á…«á‡; ) HANGUL SYLLABLE KWAEP
+CFA7;CFA7;110F 116B 11C2;CFA7;110F 116B 11C2; # (쾧; 쾧; á„ᅫᇂ; 쾧; á„ᅫᇂ; ) HANGUL SYLLABLE KWAEH
+CFA8;CFA8;110F 116C;CFA8;110F 116C; # (쾨; 쾨; á„á…¬; 쾨; á„á…¬; ) HANGUL SYLLABLE KOE
+CFA9;CFA9;110F 116C 11A8;CFA9;110F 116C 11A8; # (쾩; 쾩; á„ᅬᆨ; 쾩; á„ᅬᆨ; ) HANGUL SYLLABLE KOEG
+CFAA;CFAA;110F 116C 11A9;CFAA;110F 116C 11A9; # (쾪; 쾪; á„ᅬᆩ; 쾪; á„ᅬᆩ; ) HANGUL SYLLABLE KOEGG
+CFAB;CFAB;110F 116C 11AA;CFAB;110F 116C 11AA; # (쾫; 쾫; á„ᅬᆪ; 쾫; á„ᅬᆪ; ) HANGUL SYLLABLE KOEGS
+CFAC;CFAC;110F 116C 11AB;CFAC;110F 116C 11AB; # (쾬; 쾬; á„ᅬᆫ; 쾬; á„ᅬᆫ; ) HANGUL SYLLABLE KOEN
+CFAD;CFAD;110F 116C 11AC;CFAD;110F 116C 11AC; # (ì¾­; ì¾­; á„ᅬᆬ; ì¾­; á„ᅬᆬ; ) HANGUL SYLLABLE KOENJ
+CFAE;CFAE;110F 116C 11AD;CFAE;110F 116C 11AD; # (ì¾®; ì¾®; á„ᅬᆭ; ì¾®; á„ᅬᆭ; ) HANGUL SYLLABLE KOENH
+CFAF;CFAF;110F 116C 11AE;CFAF;110F 116C 11AE; # (쾯; 쾯; á„ᅬᆮ; 쾯; á„ᅬᆮ; ) HANGUL SYLLABLE KOED
+CFB0;CFB0;110F 116C 11AF;CFB0;110F 116C 11AF; # (ì¾°; ì¾°; á„ᅬᆯ; ì¾°; á„ᅬᆯ; ) HANGUL SYLLABLE KOEL
+CFB1;CFB1;110F 116C 11B0;CFB1;110F 116C 11B0; # (ì¾±; ì¾±; á„ᅬᆰ; ì¾±; á„ᅬᆰ; ) HANGUL SYLLABLE KOELG
+CFB2;CFB2;110F 116C 11B1;CFB2;110F 116C 11B1; # (ì¾²; ì¾²; á„ᅬᆱ; ì¾²; á„ᅬᆱ; ) HANGUL SYLLABLE KOELM
+CFB3;CFB3;110F 116C 11B2;CFB3;110F 116C 11B2; # (ì¾³; ì¾³; á„ᅬᆲ; ì¾³; á„ᅬᆲ; ) HANGUL SYLLABLE KOELB
+CFB4;CFB4;110F 116C 11B3;CFB4;110F 116C 11B3; # (ì¾´; ì¾´; á„ᅬᆳ; ì¾´; á„ᅬᆳ; ) HANGUL SYLLABLE KOELS
+CFB5;CFB5;110F 116C 11B4;CFB5;110F 116C 11B4; # (ì¾µ; ì¾µ; á„ᅬᆴ; ì¾µ; á„ᅬᆴ; ) HANGUL SYLLABLE KOELT
+CFB6;CFB6;110F 116C 11B5;CFB6;110F 116C 11B5; # (쾶; 쾶; á„ᅬᆵ; 쾶; á„ᅬᆵ; ) HANGUL SYLLABLE KOELP
+CFB7;CFB7;110F 116C 11B6;CFB7;110F 116C 11B6; # (ì¾·; ì¾·; á„ᅬᆶ; ì¾·; á„ᅬᆶ; ) HANGUL SYLLABLE KOELH
+CFB8;CFB8;110F 116C 11B7;CFB8;110F 116C 11B7; # (쾸; 쾸; á„ᅬᆷ; 쾸; á„ᅬᆷ; ) HANGUL SYLLABLE KOEM
+CFB9;CFB9;110F 116C 11B8;CFB9;110F 116C 11B8; # (ì¾¹; ì¾¹; á„ᅬᆸ; ì¾¹; á„ᅬᆸ; ) HANGUL SYLLABLE KOEB
+CFBA;CFBA;110F 116C 11B9;CFBA;110F 116C 11B9; # (쾺; 쾺; á„ᅬᆹ; 쾺; á„ᅬᆹ; ) HANGUL SYLLABLE KOEBS
+CFBB;CFBB;110F 116C 11BA;CFBB;110F 116C 11BA; # (ì¾»; ì¾»; á„ᅬᆺ; ì¾»; á„ᅬᆺ; ) HANGUL SYLLABLE KOES
+CFBC;CFBC;110F 116C 11BB;CFBC;110F 116C 11BB; # (ì¾¼; ì¾¼; á„ᅬᆻ; ì¾¼; á„ᅬᆻ; ) HANGUL SYLLABLE KOESS
+CFBD;CFBD;110F 116C 11BC;CFBD;110F 116C 11BC; # (ì¾½; ì¾½; á„ᅬᆼ; ì¾½; á„ᅬᆼ; ) HANGUL SYLLABLE KOENG
+CFBE;CFBE;110F 116C 11BD;CFBE;110F 116C 11BD; # (ì¾¾; ì¾¾; á„ᅬᆽ; ì¾¾; á„ᅬᆽ; ) HANGUL SYLLABLE KOEJ
+CFBF;CFBF;110F 116C 11BE;CFBF;110F 116C 11BE; # (쾿; 쾿; á„ᅬᆾ; 쾿; á„ᅬᆾ; ) HANGUL SYLLABLE KOEC
+CFC0;CFC0;110F 116C 11BF;CFC0;110F 116C 11BF; # (ì¿€; ì¿€; á„ᅬᆿ; ì¿€; á„ᅬᆿ; ) HANGUL SYLLABLE KOEK
+CFC1;CFC1;110F 116C 11C0;CFC1;110F 116C 11C0; # (ì¿; ì¿; á„ᅬᇀ; ì¿; á„ᅬᇀ; ) HANGUL SYLLABLE KOET
+CFC2;CFC2;110F 116C 11C1;CFC2;110F 116C 11C1; # (ì¿‚; ì¿‚; á„á…¬á‡; ì¿‚; á„á…¬á‡; ) HANGUL SYLLABLE KOEP
+CFC3;CFC3;110F 116C 11C2;CFC3;110F 116C 11C2; # (쿃; 쿃; á„ᅬᇂ; 쿃; á„ᅬᇂ; ) HANGUL SYLLABLE KOEH
+CFC4;CFC4;110F 116D;CFC4;110F 116D; # (ì¿„; ì¿„; á„á…­; ì¿„; á„á…­; ) HANGUL SYLLABLE KYO
+CFC5;CFC5;110F 116D 11A8;CFC5;110F 116D 11A8; # (ì¿…; ì¿…; á„ᅭᆨ; ì¿…; á„ᅭᆨ; ) HANGUL SYLLABLE KYOG
+CFC6;CFC6;110F 116D 11A9;CFC6;110F 116D 11A9; # (쿆; 쿆; á„ᅭᆩ; 쿆; á„ᅭᆩ; ) HANGUL SYLLABLE KYOGG
+CFC7;CFC7;110F 116D 11AA;CFC7;110F 116D 11AA; # (쿇; 쿇; á„ᅭᆪ; 쿇; á„ᅭᆪ; ) HANGUL SYLLABLE KYOGS
+CFC8;CFC8;110F 116D 11AB;CFC8;110F 116D 11AB; # (쿈; 쿈; á„ᅭᆫ; 쿈; á„ᅭᆫ; ) HANGUL SYLLABLE KYON
+CFC9;CFC9;110F 116D 11AC;CFC9;110F 116D 11AC; # (쿉; 쿉; á„ᅭᆬ; 쿉; á„ᅭᆬ; ) HANGUL SYLLABLE KYONJ
+CFCA;CFCA;110F 116D 11AD;CFCA;110F 116D 11AD; # (ì¿Š; ì¿Š; á„ᅭᆭ; ì¿Š; á„ᅭᆭ; ) HANGUL SYLLABLE KYONH
+CFCB;CFCB;110F 116D 11AE;CFCB;110F 116D 11AE; # (ì¿‹; ì¿‹; á„ᅭᆮ; ì¿‹; á„ᅭᆮ; ) HANGUL SYLLABLE KYOD
+CFCC;CFCC;110F 116D 11AF;CFCC;110F 116D 11AF; # (ì¿Œ; ì¿Œ; á„ᅭᆯ; ì¿Œ; á„ᅭᆯ; ) HANGUL SYLLABLE KYOL
+CFCD;CFCD;110F 116D 11B0;CFCD;110F 116D 11B0; # (ì¿; ì¿; á„ᅭᆰ; ì¿; á„ᅭᆰ; ) HANGUL SYLLABLE KYOLG
+CFCE;CFCE;110F 116D 11B1;CFCE;110F 116D 11B1; # (ì¿Ž; ì¿Ž; á„ᅭᆱ; ì¿Ž; á„ᅭᆱ; ) HANGUL SYLLABLE KYOLM
+CFCF;CFCF;110F 116D 11B2;CFCF;110F 116D 11B2; # (ì¿; ì¿; á„ᅭᆲ; ì¿; á„ᅭᆲ; ) HANGUL SYLLABLE KYOLB
+CFD0;CFD0;110F 116D 11B3;CFD0;110F 116D 11B3; # (ì¿; ì¿; á„ᅭᆳ; ì¿; á„ᅭᆳ; ) HANGUL SYLLABLE KYOLS
+CFD1;CFD1;110F 116D 11B4;CFD1;110F 116D 11B4; # (ì¿‘; ì¿‘; á„ᅭᆴ; ì¿‘; á„ᅭᆴ; ) HANGUL SYLLABLE KYOLT
+CFD2;CFD2;110F 116D 11B5;CFD2;110F 116D 11B5; # (ì¿’; ì¿’; á„ᅭᆵ; ì¿’; á„ᅭᆵ; ) HANGUL SYLLABLE KYOLP
+CFD3;CFD3;110F 116D 11B6;CFD3;110F 116D 11B6; # (ì¿“; ì¿“; á„ᅭᆶ; ì¿“; á„ᅭᆶ; ) HANGUL SYLLABLE KYOLH
+CFD4;CFD4;110F 116D 11B7;CFD4;110F 116D 11B7; # (ì¿”; ì¿”; á„ᅭᆷ; ì¿”; á„ᅭᆷ; ) HANGUL SYLLABLE KYOM
+CFD5;CFD5;110F 116D 11B8;CFD5;110F 116D 11B8; # (ì¿•; ì¿•; á„ᅭᆸ; ì¿•; á„ᅭᆸ; ) HANGUL SYLLABLE KYOB
+CFD6;CFD6;110F 116D 11B9;CFD6;110F 116D 11B9; # (ì¿–; ì¿–; á„ᅭᆹ; ì¿–; á„ᅭᆹ; ) HANGUL SYLLABLE KYOBS
+CFD7;CFD7;110F 116D 11BA;CFD7;110F 116D 11BA; # (ì¿—; ì¿—; á„ᅭᆺ; ì¿—; á„ᅭᆺ; ) HANGUL SYLLABLE KYOS
+CFD8;CFD8;110F 116D 11BB;CFD8;110F 116D 11BB; # (쿘; 쿘; á„ᅭᆻ; 쿘; á„ᅭᆻ; ) HANGUL SYLLABLE KYOSS
+CFD9;CFD9;110F 116D 11BC;CFD9;110F 116D 11BC; # (ì¿™; ì¿™; á„ᅭᆼ; ì¿™; á„ᅭᆼ; ) HANGUL SYLLABLE KYONG
+CFDA;CFDA;110F 116D 11BD;CFDA;110F 116D 11BD; # (ì¿š; ì¿š; á„ᅭᆽ; ì¿š; á„ᅭᆽ; ) HANGUL SYLLABLE KYOJ
+CFDB;CFDB;110F 116D 11BE;CFDB;110F 116D 11BE; # (ì¿›; ì¿›; á„ᅭᆾ; ì¿›; á„ᅭᆾ; ) HANGUL SYLLABLE KYOC
+CFDC;CFDC;110F 116D 11BF;CFDC;110F 116D 11BF; # (ì¿œ; ì¿œ; á„ᅭᆿ; ì¿œ; á„ᅭᆿ; ) HANGUL SYLLABLE KYOK
+CFDD;CFDD;110F 116D 11C0;CFDD;110F 116D 11C0; # (ì¿; ì¿; á„ᅭᇀ; ì¿; á„ᅭᇀ; ) HANGUL SYLLABLE KYOT
+CFDE;CFDE;110F 116D 11C1;CFDE;110F 116D 11C1; # (ì¿ž; ì¿ž; á„á…­á‡; ì¿ž; á„á…­á‡; ) HANGUL SYLLABLE KYOP
+CFDF;CFDF;110F 116D 11C2;CFDF;110F 116D 11C2; # (ì¿Ÿ; ì¿Ÿ; á„ᅭᇂ; ì¿Ÿ; á„ᅭᇂ; ) HANGUL SYLLABLE KYOH
+CFE0;CFE0;110F 116E;CFE0;110F 116E; # (ì¿ ; ì¿ ; á„á…®; ì¿ ; á„á…®; ) HANGUL SYLLABLE KU
+CFE1;CFE1;110F 116E 11A8;CFE1;110F 116E 11A8; # (ì¿¡; ì¿¡; á„ᅮᆨ; ì¿¡; á„ᅮᆨ; ) HANGUL SYLLABLE KUG
+CFE2;CFE2;110F 116E 11A9;CFE2;110F 116E 11A9; # (ì¿¢; ì¿¢; á„ᅮᆩ; ì¿¢; á„ᅮᆩ; ) HANGUL SYLLABLE KUGG
+CFE3;CFE3;110F 116E 11AA;CFE3;110F 116E 11AA; # (ì¿£; ì¿£; á„ᅮᆪ; ì¿£; á„ᅮᆪ; ) HANGUL SYLLABLE KUGS
+CFE4;CFE4;110F 116E 11AB;CFE4;110F 116E 11AB; # (쿤; 쿤; á„ᅮᆫ; 쿤; á„ᅮᆫ; ) HANGUL SYLLABLE KUN
+CFE5;CFE5;110F 116E 11AC;CFE5;110F 116E 11AC; # (ì¿¥; ì¿¥; á„ᅮᆬ; ì¿¥; á„ᅮᆬ; ) HANGUL SYLLABLE KUNJ
+CFE6;CFE6;110F 116E 11AD;CFE6;110F 116E 11AD; # (쿦; 쿦; á„ᅮᆭ; 쿦; á„ᅮᆭ; ) HANGUL SYLLABLE KUNH
+CFE7;CFE7;110F 116E 11AE;CFE7;110F 116E 11AE; # (쿧; 쿧; á„ᅮᆮ; 쿧; á„ᅮᆮ; ) HANGUL SYLLABLE KUD
+CFE8;CFE8;110F 116E 11AF;CFE8;110F 116E 11AF; # (쿨; 쿨; á„ᅮᆯ; 쿨; á„ᅮᆯ; ) HANGUL SYLLABLE KUL
+CFE9;CFE9;110F 116E 11B0;CFE9;110F 116E 11B0; # (ì¿©; ì¿©; á„ᅮᆰ; ì¿©; á„ᅮᆰ; ) HANGUL SYLLABLE KULG
+CFEA;CFEA;110F 116E 11B1;CFEA;110F 116E 11B1; # (쿪; 쿪; á„ᅮᆱ; 쿪; á„ᅮᆱ; ) HANGUL SYLLABLE KULM
+CFEB;CFEB;110F 116E 11B2;CFEB;110F 116E 11B2; # (ì¿«; ì¿«; á„ᅮᆲ; ì¿«; á„ᅮᆲ; ) HANGUL SYLLABLE KULB
+CFEC;CFEC;110F 116E 11B3;CFEC;110F 116E 11B3; # (쿬; 쿬; á„ᅮᆳ; 쿬; á„ᅮᆳ; ) HANGUL SYLLABLE KULS
+CFED;CFED;110F 116E 11B4;CFED;110F 116E 11B4; # (ì¿­; ì¿­; á„ᅮᆴ; ì¿­; á„ᅮᆴ; ) HANGUL SYLLABLE KULT
+CFEE;CFEE;110F 116E 11B5;CFEE;110F 116E 11B5; # (ì¿®; ì¿®; á„ᅮᆵ; ì¿®; á„ᅮᆵ; ) HANGUL SYLLABLE KULP
+CFEF;CFEF;110F 116E 11B6;CFEF;110F 116E 11B6; # (쿯; 쿯; á„ᅮᆶ; 쿯; á„ᅮᆶ; ) HANGUL SYLLABLE KULH
+CFF0;CFF0;110F 116E 11B7;CFF0;110F 116E 11B7; # (ì¿°; ì¿°; á„ᅮᆷ; ì¿°; á„ᅮᆷ; ) HANGUL SYLLABLE KUM
+CFF1;CFF1;110F 116E 11B8;CFF1;110F 116E 11B8; # (쿱; 쿱; á„ᅮᆸ; 쿱; á„ᅮᆸ; ) HANGUL SYLLABLE KUB
+CFF2;CFF2;110F 116E 11B9;CFF2;110F 116E 11B9; # (쿲; 쿲; á„ᅮᆹ; 쿲; á„ᅮᆹ; ) HANGUL SYLLABLE KUBS
+CFF3;CFF3;110F 116E 11BA;CFF3;110F 116E 11BA; # (쿳; 쿳; á„ᅮᆺ; 쿳; á„ᅮᆺ; ) HANGUL SYLLABLE KUS
+CFF4;CFF4;110F 116E 11BB;CFF4;110F 116E 11BB; # (ì¿´; ì¿´; á„ᅮᆻ; ì¿´; á„ᅮᆻ; ) HANGUL SYLLABLE KUSS
+CFF5;CFF5;110F 116E 11BC;CFF5;110F 116E 11BC; # (쿵; 쿵; á„ᅮᆼ; 쿵; á„ᅮᆼ; ) HANGUL SYLLABLE KUNG
+CFF6;CFF6;110F 116E 11BD;CFF6;110F 116E 11BD; # (쿶; 쿶; á„ᅮᆽ; 쿶; á„ᅮᆽ; ) HANGUL SYLLABLE KUJ
+CFF7;CFF7;110F 116E 11BE;CFF7;110F 116E 11BE; # (ì¿·; ì¿·; á„ᅮᆾ; ì¿·; á„ᅮᆾ; ) HANGUL SYLLABLE KUC
+CFF8;CFF8;110F 116E 11BF;CFF8;110F 116E 11BF; # (쿸; 쿸; á„ᅮᆿ; 쿸; á„ᅮᆿ; ) HANGUL SYLLABLE KUK
+CFF9;CFF9;110F 116E 11C0;CFF9;110F 116E 11C0; # (쿹; 쿹; á„ᅮᇀ; 쿹; á„ᅮᇀ; ) HANGUL SYLLABLE KUT
+CFFA;CFFA;110F 116E 11C1;CFFA;110F 116E 11C1; # (쿺; 쿺; á„á…®á‡; 쿺; á„á…®á‡; ) HANGUL SYLLABLE KUP
+CFFB;CFFB;110F 116E 11C2;CFFB;110F 116E 11C2; # (ì¿»; ì¿»; á„ᅮᇂ; ì¿»; á„ᅮᇂ; ) HANGUL SYLLABLE KUH
+CFFC;CFFC;110F 116F;CFFC;110F 116F; # (쿼; 쿼; á„á…¯; 쿼; á„á…¯; ) HANGUL SYLLABLE KWEO
+CFFD;CFFD;110F 116F 11A8;CFFD;110F 116F 11A8; # (쿽; 쿽; á„ᅯᆨ; 쿽; á„ᅯᆨ; ) HANGUL SYLLABLE KWEOG
+CFFE;CFFE;110F 116F 11A9;CFFE;110F 116F 11A9; # (쿾; 쿾; á„ᅯᆩ; 쿾; á„ᅯᆩ; ) HANGUL SYLLABLE KWEOGG
+CFFF;CFFF;110F 116F 11AA;CFFF;110F 116F 11AA; # (ì¿¿; ì¿¿; á„ᅯᆪ; ì¿¿; á„ᅯᆪ; ) HANGUL SYLLABLE KWEOGS
+D000;D000;110F 116F 11AB;D000;110F 116F 11AB; # (퀀; 퀀; á„ᅯᆫ; 퀀; á„ᅯᆫ; ) HANGUL SYLLABLE KWEON
+D001;D001;110F 116F 11AC;D001;110F 116F 11AC; # (í€; í€; á„ᅯᆬ; í€; á„ᅯᆬ; ) HANGUL SYLLABLE KWEONJ
+D002;D002;110F 116F 11AD;D002;110F 116F 11AD; # (퀂; 퀂; á„ᅯᆭ; 퀂; á„ᅯᆭ; ) HANGUL SYLLABLE KWEONH
+D003;D003;110F 116F 11AE;D003;110F 116F 11AE; # (퀃; 퀃; á„ᅯᆮ; 퀃; á„ᅯᆮ; ) HANGUL SYLLABLE KWEOD
+D004;D004;110F 116F 11AF;D004;110F 116F 11AF; # (퀄; 퀄; á„ᅯᆯ; 퀄; á„ᅯᆯ; ) HANGUL SYLLABLE KWEOL
+D005;D005;110F 116F 11B0;D005;110F 116F 11B0; # (퀅; 퀅; á„ᅯᆰ; 퀅; á„ᅯᆰ; ) HANGUL SYLLABLE KWEOLG
+D006;D006;110F 116F 11B1;D006;110F 116F 11B1; # (퀆; 퀆; á„ᅯᆱ; 퀆; á„ᅯᆱ; ) HANGUL SYLLABLE KWEOLM
+D007;D007;110F 116F 11B2;D007;110F 116F 11B2; # (퀇; 퀇; á„ᅯᆲ; 퀇; á„ᅯᆲ; ) HANGUL SYLLABLE KWEOLB
+D008;D008;110F 116F 11B3;D008;110F 116F 11B3; # (퀈; 퀈; á„ᅯᆳ; 퀈; á„ᅯᆳ; ) HANGUL SYLLABLE KWEOLS
+D009;D009;110F 116F 11B4;D009;110F 116F 11B4; # (퀉; 퀉; á„ᅯᆴ; 퀉; á„ᅯᆴ; ) HANGUL SYLLABLE KWEOLT
+D00A;D00A;110F 116F 11B5;D00A;110F 116F 11B5; # (퀊; 퀊; á„ᅯᆵ; 퀊; á„ᅯᆵ; ) HANGUL SYLLABLE KWEOLP
+D00B;D00B;110F 116F 11B6;D00B;110F 116F 11B6; # (퀋; 퀋; á„ᅯᆶ; 퀋; á„ᅯᆶ; ) HANGUL SYLLABLE KWEOLH
+D00C;D00C;110F 116F 11B7;D00C;110F 116F 11B7; # (퀌; 퀌; á„ᅯᆷ; 퀌; á„ᅯᆷ; ) HANGUL SYLLABLE KWEOM
+D00D;D00D;110F 116F 11B8;D00D;110F 116F 11B8; # (í€; í€; á„ᅯᆸ; í€; á„ᅯᆸ; ) HANGUL SYLLABLE KWEOB
+D00E;D00E;110F 116F 11B9;D00E;110F 116F 11B9; # (퀎; 퀎; á„ᅯᆹ; 퀎; á„ᅯᆹ; ) HANGUL SYLLABLE KWEOBS
+D00F;D00F;110F 116F 11BA;D00F;110F 116F 11BA; # (í€; í€; á„ᅯᆺ; í€; á„ᅯᆺ; ) HANGUL SYLLABLE KWEOS
+D010;D010;110F 116F 11BB;D010;110F 116F 11BB; # (í€; í€; á„ᅯᆻ; í€; á„ᅯᆻ; ) HANGUL SYLLABLE KWEOSS
+D011;D011;110F 116F 11BC;D011;110F 116F 11BC; # (퀑; 퀑; á„ᅯᆼ; 퀑; á„ᅯᆼ; ) HANGUL SYLLABLE KWEONG
+D012;D012;110F 116F 11BD;D012;110F 116F 11BD; # (퀒; 퀒; á„ᅯᆽ; 퀒; á„ᅯᆽ; ) HANGUL SYLLABLE KWEOJ
+D013;D013;110F 116F 11BE;D013;110F 116F 11BE; # (퀓; 퀓; á„ᅯᆾ; 퀓; á„ᅯᆾ; ) HANGUL SYLLABLE KWEOC
+D014;D014;110F 116F 11BF;D014;110F 116F 11BF; # (퀔; 퀔; á„ᅯᆿ; 퀔; á„ᅯᆿ; ) HANGUL SYLLABLE KWEOK
+D015;D015;110F 116F 11C0;D015;110F 116F 11C0; # (퀕; 퀕; á„ᅯᇀ; 퀕; á„ᅯᇀ; ) HANGUL SYLLABLE KWEOT
+D016;D016;110F 116F 11C1;D016;110F 116F 11C1; # (퀖; 퀖; á„á…¯á‡; 퀖; á„á…¯á‡; ) HANGUL SYLLABLE KWEOP
+D017;D017;110F 116F 11C2;D017;110F 116F 11C2; # (퀗; 퀗; á„ᅯᇂ; 퀗; á„ᅯᇂ; ) HANGUL SYLLABLE KWEOH
+D018;D018;110F 1170;D018;110F 1170; # (퀘; 퀘; á„á…°; 퀘; á„á…°; ) HANGUL SYLLABLE KWE
+D019;D019;110F 1170 11A8;D019;110F 1170 11A8; # (퀙; 퀙; á„ᅰᆨ; 퀙; á„ᅰᆨ; ) HANGUL SYLLABLE KWEG
+D01A;D01A;110F 1170 11A9;D01A;110F 1170 11A9; # (퀚; 퀚; á„ᅰᆩ; 퀚; á„ᅰᆩ; ) HANGUL SYLLABLE KWEGG
+D01B;D01B;110F 1170 11AA;D01B;110F 1170 11AA; # (퀛; 퀛; á„ᅰᆪ; 퀛; á„ᅰᆪ; ) HANGUL SYLLABLE KWEGS
+D01C;D01C;110F 1170 11AB;D01C;110F 1170 11AB; # (퀜; 퀜; á„ᅰᆫ; 퀜; á„ᅰᆫ; ) HANGUL SYLLABLE KWEN
+D01D;D01D;110F 1170 11AC;D01D;110F 1170 11AC; # (í€; í€; á„ᅰᆬ; í€; á„ᅰᆬ; ) HANGUL SYLLABLE KWENJ
+D01E;D01E;110F 1170 11AD;D01E;110F 1170 11AD; # (퀞; 퀞; á„ᅰᆭ; 퀞; á„ᅰᆭ; ) HANGUL SYLLABLE KWENH
+D01F;D01F;110F 1170 11AE;D01F;110F 1170 11AE; # (퀟; 퀟; á„ᅰᆮ; 퀟; á„ᅰᆮ; ) HANGUL SYLLABLE KWED
+D020;D020;110F 1170 11AF;D020;110F 1170 11AF; # (퀠; 퀠; á„ᅰᆯ; 퀠; á„ᅰᆯ; ) HANGUL SYLLABLE KWEL
+D021;D021;110F 1170 11B0;D021;110F 1170 11B0; # (퀡; 퀡; á„ᅰᆰ; 퀡; á„ᅰᆰ; ) HANGUL SYLLABLE KWELG
+D022;D022;110F 1170 11B1;D022;110F 1170 11B1; # (퀢; 퀢; á„ᅰᆱ; 퀢; á„ᅰᆱ; ) HANGUL SYLLABLE KWELM
+D023;D023;110F 1170 11B2;D023;110F 1170 11B2; # (퀣; 퀣; á„ᅰᆲ; 퀣; á„ᅰᆲ; ) HANGUL SYLLABLE KWELB
+D024;D024;110F 1170 11B3;D024;110F 1170 11B3; # (퀤; 퀤; á„ᅰᆳ; 퀤; á„ᅰᆳ; ) HANGUL SYLLABLE KWELS
+D025;D025;110F 1170 11B4;D025;110F 1170 11B4; # (퀥; 퀥; á„ᅰᆴ; 퀥; á„ᅰᆴ; ) HANGUL SYLLABLE KWELT
+D026;D026;110F 1170 11B5;D026;110F 1170 11B5; # (퀦; 퀦; á„ᅰᆵ; 퀦; á„ᅰᆵ; ) HANGUL SYLLABLE KWELP
+D027;D027;110F 1170 11B6;D027;110F 1170 11B6; # (퀧; 퀧; á„ᅰᆶ; 퀧; á„ᅰᆶ; ) HANGUL SYLLABLE KWELH
+D028;D028;110F 1170 11B7;D028;110F 1170 11B7; # (퀨; 퀨; á„ᅰᆷ; 퀨; á„ᅰᆷ; ) HANGUL SYLLABLE KWEM
+D029;D029;110F 1170 11B8;D029;110F 1170 11B8; # (퀩; 퀩; á„ᅰᆸ; 퀩; á„ᅰᆸ; ) HANGUL SYLLABLE KWEB
+D02A;D02A;110F 1170 11B9;D02A;110F 1170 11B9; # (퀪; 퀪; á„ᅰᆹ; 퀪; á„ᅰᆹ; ) HANGUL SYLLABLE KWEBS
+D02B;D02B;110F 1170 11BA;D02B;110F 1170 11BA; # (퀫; 퀫; á„ᅰᆺ; 퀫; á„ᅰᆺ; ) HANGUL SYLLABLE KWES
+D02C;D02C;110F 1170 11BB;D02C;110F 1170 11BB; # (퀬; 퀬; á„ᅰᆻ; 퀬; á„ᅰᆻ; ) HANGUL SYLLABLE KWESS
+D02D;D02D;110F 1170 11BC;D02D;110F 1170 11BC; # (퀭; 퀭; á„ᅰᆼ; 퀭; á„ᅰᆼ; ) HANGUL SYLLABLE KWENG
+D02E;D02E;110F 1170 11BD;D02E;110F 1170 11BD; # (퀮; 퀮; á„ᅰᆽ; 퀮; á„ᅰᆽ; ) HANGUL SYLLABLE KWEJ
+D02F;D02F;110F 1170 11BE;D02F;110F 1170 11BE; # (퀯; 퀯; á„ᅰᆾ; 퀯; á„ᅰᆾ; ) HANGUL SYLLABLE KWEC
+D030;D030;110F 1170 11BF;D030;110F 1170 11BF; # (퀰; 퀰; á„ᅰᆿ; 퀰; á„ᅰᆿ; ) HANGUL SYLLABLE KWEK
+D031;D031;110F 1170 11C0;D031;110F 1170 11C0; # (퀱; 퀱; á„ᅰᇀ; 퀱; á„ᅰᇀ; ) HANGUL SYLLABLE KWET
+D032;D032;110F 1170 11C1;D032;110F 1170 11C1; # (퀲; 퀲; á„á…°á‡; 퀲; á„á…°á‡; ) HANGUL SYLLABLE KWEP
+D033;D033;110F 1170 11C2;D033;110F 1170 11C2; # (퀳; 퀳; á„ᅰᇂ; 퀳; á„ᅰᇂ; ) HANGUL SYLLABLE KWEH
+D034;D034;110F 1171;D034;110F 1171; # (퀴; 퀴; á„á…±; 퀴; á„á…±; ) HANGUL SYLLABLE KWI
+D035;D035;110F 1171 11A8;D035;110F 1171 11A8; # (퀵; 퀵; á„ᅱᆨ; 퀵; á„ᅱᆨ; ) HANGUL SYLLABLE KWIG
+D036;D036;110F 1171 11A9;D036;110F 1171 11A9; # (퀶; 퀶; á„ᅱᆩ; 퀶; á„ᅱᆩ; ) HANGUL SYLLABLE KWIGG
+D037;D037;110F 1171 11AA;D037;110F 1171 11AA; # (퀷; 퀷; á„ᅱᆪ; 퀷; á„ᅱᆪ; ) HANGUL SYLLABLE KWIGS
+D038;D038;110F 1171 11AB;D038;110F 1171 11AB; # (퀸; 퀸; á„ᅱᆫ; 퀸; á„ᅱᆫ; ) HANGUL SYLLABLE KWIN
+D039;D039;110F 1171 11AC;D039;110F 1171 11AC; # (퀹; 퀹; á„ᅱᆬ; 퀹; á„ᅱᆬ; ) HANGUL SYLLABLE KWINJ
+D03A;D03A;110F 1171 11AD;D03A;110F 1171 11AD; # (퀺; 퀺; á„ᅱᆭ; 퀺; á„ᅱᆭ; ) HANGUL SYLLABLE KWINH
+D03B;D03B;110F 1171 11AE;D03B;110F 1171 11AE; # (퀻; 퀻; á„ᅱᆮ; 퀻; á„ᅱᆮ; ) HANGUL SYLLABLE KWID
+D03C;D03C;110F 1171 11AF;D03C;110F 1171 11AF; # (퀼; 퀼; á„ᅱᆯ; 퀼; á„ᅱᆯ; ) HANGUL SYLLABLE KWIL
+D03D;D03D;110F 1171 11B0;D03D;110F 1171 11B0; # (퀽; 퀽; á„ᅱᆰ; 퀽; á„ᅱᆰ; ) HANGUL SYLLABLE KWILG
+D03E;D03E;110F 1171 11B1;D03E;110F 1171 11B1; # (퀾; 퀾; á„ᅱᆱ; 퀾; á„ᅱᆱ; ) HANGUL SYLLABLE KWILM
+D03F;D03F;110F 1171 11B2;D03F;110F 1171 11B2; # (퀿; 퀿; á„ᅱᆲ; 퀿; á„ᅱᆲ; ) HANGUL SYLLABLE KWILB
+D040;D040;110F 1171 11B3;D040;110F 1171 11B3; # (í€; í€; á„ᅱᆳ; í€; á„ᅱᆳ; ) HANGUL SYLLABLE KWILS
+D041;D041;110F 1171 11B4;D041;110F 1171 11B4; # (í; í; á„ᅱᆴ; í; á„ᅱᆴ; ) HANGUL SYLLABLE KWILT
+D042;D042;110F 1171 11B5;D042;110F 1171 11B5; # (í‚; í‚; á„ᅱᆵ; í‚; á„ᅱᆵ; ) HANGUL SYLLABLE KWILP
+D043;D043;110F 1171 11B6;D043;110F 1171 11B6; # (íƒ; íƒ; á„ᅱᆶ; íƒ; á„ᅱᆶ; ) HANGUL SYLLABLE KWILH
+D044;D044;110F 1171 11B7;D044;110F 1171 11B7; # (í„; í„; á„ᅱᆷ; í„; á„ᅱᆷ; ) HANGUL SYLLABLE KWIM
+D045;D045;110F 1171 11B8;D045;110F 1171 11B8; # (í…; í…; á„ᅱᆸ; í…; á„ᅱᆸ; ) HANGUL SYLLABLE KWIB
+D046;D046;110F 1171 11B9;D046;110F 1171 11B9; # (í†; í†; á„ᅱᆹ; í†; á„ᅱᆹ; ) HANGUL SYLLABLE KWIBS
+D047;D047;110F 1171 11BA;D047;110F 1171 11BA; # (í‡; í‡; á„ᅱᆺ; í‡; á„ᅱᆺ; ) HANGUL SYLLABLE KWIS
+D048;D048;110F 1171 11BB;D048;110F 1171 11BB; # (íˆ; íˆ; á„ᅱᆻ; íˆ; á„ᅱᆻ; ) HANGUL SYLLABLE KWISS
+D049;D049;110F 1171 11BC;D049;110F 1171 11BC; # (í‰; í‰; á„ᅱᆼ; í‰; á„ᅱᆼ; ) HANGUL SYLLABLE KWING
+D04A;D04A;110F 1171 11BD;D04A;110F 1171 11BD; # (íŠ; íŠ; á„ᅱᆽ; íŠ; á„ᅱᆽ; ) HANGUL SYLLABLE KWIJ
+D04B;D04B;110F 1171 11BE;D04B;110F 1171 11BE; # (í‹; í‹; á„ᅱᆾ; í‹; á„ᅱᆾ; ) HANGUL SYLLABLE KWIC
+D04C;D04C;110F 1171 11BF;D04C;110F 1171 11BF; # (íŒ; íŒ; á„ᅱᆿ; íŒ; á„ᅱᆿ; ) HANGUL SYLLABLE KWIK
+D04D;D04D;110F 1171 11C0;D04D;110F 1171 11C0; # (í; í; á„ᅱᇀ; í; á„ᅱᇀ; ) HANGUL SYLLABLE KWIT
+D04E;D04E;110F 1171 11C1;D04E;110F 1171 11C1; # (íŽ; íŽ; á„á…±á‡; íŽ; á„á…±á‡; ) HANGUL SYLLABLE KWIP
+D04F;D04F;110F 1171 11C2;D04F;110F 1171 11C2; # (í; í; á„ᅱᇂ; í; á„ᅱᇂ; ) HANGUL SYLLABLE KWIH
+D050;D050;110F 1172;D050;110F 1172; # (í; í; á„á…²; í; á„á…²; ) HANGUL SYLLABLE KYU
+D051;D051;110F 1172 11A8;D051;110F 1172 11A8; # (í‘; í‘; á„ᅲᆨ; í‘; á„ᅲᆨ; ) HANGUL SYLLABLE KYUG
+D052;D052;110F 1172 11A9;D052;110F 1172 11A9; # (í’; í’; á„ᅲᆩ; í’; á„ᅲᆩ; ) HANGUL SYLLABLE KYUGG
+D053;D053;110F 1172 11AA;D053;110F 1172 11AA; # (í“; í“; á„ᅲᆪ; í“; á„ᅲᆪ; ) HANGUL SYLLABLE KYUGS
+D054;D054;110F 1172 11AB;D054;110F 1172 11AB; # (í”; í”; á„ᅲᆫ; í”; á„ᅲᆫ; ) HANGUL SYLLABLE KYUN
+D055;D055;110F 1172 11AC;D055;110F 1172 11AC; # (í•; í•; á„ᅲᆬ; í•; á„ᅲᆬ; ) HANGUL SYLLABLE KYUNJ
+D056;D056;110F 1172 11AD;D056;110F 1172 11AD; # (í–; í–; á„ᅲᆭ; í–; á„ᅲᆭ; ) HANGUL SYLLABLE KYUNH
+D057;D057;110F 1172 11AE;D057;110F 1172 11AE; # (í—; í—; á„ᅲᆮ; í—; á„ᅲᆮ; ) HANGUL SYLLABLE KYUD
+D058;D058;110F 1172 11AF;D058;110F 1172 11AF; # (í˜; í˜; á„ᅲᆯ; í˜; á„ᅲᆯ; ) HANGUL SYLLABLE KYUL
+D059;D059;110F 1172 11B0;D059;110F 1172 11B0; # (í™; í™; á„ᅲᆰ; í™; á„ᅲᆰ; ) HANGUL SYLLABLE KYULG
+D05A;D05A;110F 1172 11B1;D05A;110F 1172 11B1; # (íš; íš; á„ᅲᆱ; íš; á„ᅲᆱ; ) HANGUL SYLLABLE KYULM
+D05B;D05B;110F 1172 11B2;D05B;110F 1172 11B2; # (í›; í›; á„ᅲᆲ; í›; á„ᅲᆲ; ) HANGUL SYLLABLE KYULB
+D05C;D05C;110F 1172 11B3;D05C;110F 1172 11B3; # (íœ; íœ; á„ᅲᆳ; íœ; á„ᅲᆳ; ) HANGUL SYLLABLE KYULS
+D05D;D05D;110F 1172 11B4;D05D;110F 1172 11B4; # (í; í; á„ᅲᆴ; í; á„ᅲᆴ; ) HANGUL SYLLABLE KYULT
+D05E;D05E;110F 1172 11B5;D05E;110F 1172 11B5; # (íž; íž; á„ᅲᆵ; íž; á„ᅲᆵ; ) HANGUL SYLLABLE KYULP
+D05F;D05F;110F 1172 11B6;D05F;110F 1172 11B6; # (íŸ; íŸ; á„ᅲᆶ; íŸ; á„ᅲᆶ; ) HANGUL SYLLABLE KYULH
+D060;D060;110F 1172 11B7;D060;110F 1172 11B7; # (í ; í ; á„ᅲᆷ; í ; á„ᅲᆷ; ) HANGUL SYLLABLE KYUM
+D061;D061;110F 1172 11B8;D061;110F 1172 11B8; # (í¡; í¡; á„ᅲᆸ; í¡; á„ᅲᆸ; ) HANGUL SYLLABLE KYUB
+D062;D062;110F 1172 11B9;D062;110F 1172 11B9; # (í¢; í¢; á„ᅲᆹ; í¢; á„ᅲᆹ; ) HANGUL SYLLABLE KYUBS
+D063;D063;110F 1172 11BA;D063;110F 1172 11BA; # (í£; í£; á„ᅲᆺ; í£; á„ᅲᆺ; ) HANGUL SYLLABLE KYUS
+D064;D064;110F 1172 11BB;D064;110F 1172 11BB; # (í¤; í¤; á„ᅲᆻ; í¤; á„ᅲᆻ; ) HANGUL SYLLABLE KYUSS
+D065;D065;110F 1172 11BC;D065;110F 1172 11BC; # (í¥; í¥; á„ᅲᆼ; í¥; á„ᅲᆼ; ) HANGUL SYLLABLE KYUNG
+D066;D066;110F 1172 11BD;D066;110F 1172 11BD; # (í¦; í¦; á„ᅲᆽ; í¦; á„ᅲᆽ; ) HANGUL SYLLABLE KYUJ
+D067;D067;110F 1172 11BE;D067;110F 1172 11BE; # (í§; í§; á„ᅲᆾ; í§; á„ᅲᆾ; ) HANGUL SYLLABLE KYUC
+D068;D068;110F 1172 11BF;D068;110F 1172 11BF; # (í¨; í¨; á„ᅲᆿ; í¨; á„ᅲᆿ; ) HANGUL SYLLABLE KYUK
+D069;D069;110F 1172 11C0;D069;110F 1172 11C0; # (í©; í©; á„ᅲᇀ; í©; á„ᅲᇀ; ) HANGUL SYLLABLE KYUT
+D06A;D06A;110F 1172 11C1;D06A;110F 1172 11C1; # (íª; íª; á„á…²á‡; íª; á„á…²á‡; ) HANGUL SYLLABLE KYUP
+D06B;D06B;110F 1172 11C2;D06B;110F 1172 11C2; # (í«; í«; á„ᅲᇂ; í«; á„ᅲᇂ; ) HANGUL SYLLABLE KYUH
+D06C;D06C;110F 1173;D06C;110F 1173; # (í¬; í¬; á„á…³; í¬; á„á…³; ) HANGUL SYLLABLE KEU
+D06D;D06D;110F 1173 11A8;D06D;110F 1173 11A8; # (í­; í­; á„ᅳᆨ; í­; á„ᅳᆨ; ) HANGUL SYLLABLE KEUG
+D06E;D06E;110F 1173 11A9;D06E;110F 1173 11A9; # (í®; í®; á„ᅳᆩ; í®; á„ᅳᆩ; ) HANGUL SYLLABLE KEUGG
+D06F;D06F;110F 1173 11AA;D06F;110F 1173 11AA; # (í¯; í¯; á„ᅳᆪ; í¯; á„ᅳᆪ; ) HANGUL SYLLABLE KEUGS
+D070;D070;110F 1173 11AB;D070;110F 1173 11AB; # (í°; í°; á„ᅳᆫ; í°; á„ᅳᆫ; ) HANGUL SYLLABLE KEUN
+D071;D071;110F 1173 11AC;D071;110F 1173 11AC; # (í±; í±; á„ᅳᆬ; í±; á„ᅳᆬ; ) HANGUL SYLLABLE KEUNJ
+D072;D072;110F 1173 11AD;D072;110F 1173 11AD; # (í²; í²; á„ᅳᆭ; í²; á„ᅳᆭ; ) HANGUL SYLLABLE KEUNH
+D073;D073;110F 1173 11AE;D073;110F 1173 11AE; # (í³; í³; á„ᅳᆮ; í³; á„ᅳᆮ; ) HANGUL SYLLABLE KEUD
+D074;D074;110F 1173 11AF;D074;110F 1173 11AF; # (í´; í´; á„ᅳᆯ; í´; á„ᅳᆯ; ) HANGUL SYLLABLE KEUL
+D075;D075;110F 1173 11B0;D075;110F 1173 11B0; # (íµ; íµ; á„ᅳᆰ; íµ; á„ᅳᆰ; ) HANGUL SYLLABLE KEULG
+D076;D076;110F 1173 11B1;D076;110F 1173 11B1; # (í¶; í¶; á„ᅳᆱ; í¶; á„ᅳᆱ; ) HANGUL SYLLABLE KEULM
+D077;D077;110F 1173 11B2;D077;110F 1173 11B2; # (í·; í·; á„ᅳᆲ; í·; á„ᅳᆲ; ) HANGUL SYLLABLE KEULB
+D078;D078;110F 1173 11B3;D078;110F 1173 11B3; # (í¸; í¸; á„ᅳᆳ; í¸; á„ᅳᆳ; ) HANGUL SYLLABLE KEULS
+D079;D079;110F 1173 11B4;D079;110F 1173 11B4; # (í¹; í¹; á„ᅳᆴ; í¹; á„ᅳᆴ; ) HANGUL SYLLABLE KEULT
+D07A;D07A;110F 1173 11B5;D07A;110F 1173 11B5; # (íº; íº; á„ᅳᆵ; íº; á„ᅳᆵ; ) HANGUL SYLLABLE KEULP
+D07B;D07B;110F 1173 11B6;D07B;110F 1173 11B6; # (í»; í»; á„ᅳᆶ; í»; á„ᅳᆶ; ) HANGUL SYLLABLE KEULH
+D07C;D07C;110F 1173 11B7;D07C;110F 1173 11B7; # (í¼; í¼; á„ᅳᆷ; í¼; á„ᅳᆷ; ) HANGUL SYLLABLE KEUM
+D07D;D07D;110F 1173 11B8;D07D;110F 1173 11B8; # (í½; í½; á„ᅳᆸ; í½; á„ᅳᆸ; ) HANGUL SYLLABLE KEUB
+D07E;D07E;110F 1173 11B9;D07E;110F 1173 11B9; # (í¾; í¾; á„ᅳᆹ; í¾; á„ᅳᆹ; ) HANGUL SYLLABLE KEUBS
+D07F;D07F;110F 1173 11BA;D07F;110F 1173 11BA; # (í¿; í¿; á„ᅳᆺ; í¿; á„ᅳᆺ; ) HANGUL SYLLABLE KEUS
+D080;D080;110F 1173 11BB;D080;110F 1173 11BB; # (í‚€; í‚€; á„ᅳᆻ; í‚€; á„ᅳᆻ; ) HANGUL SYLLABLE KEUSS
+D081;D081;110F 1173 11BC;D081;110F 1173 11BC; # (í‚; í‚; á„ᅳᆼ; í‚; á„ᅳᆼ; ) HANGUL SYLLABLE KEUNG
+D082;D082;110F 1173 11BD;D082;110F 1173 11BD; # (í‚‚; í‚‚; á„ᅳᆽ; í‚‚; á„ᅳᆽ; ) HANGUL SYLLABLE KEUJ
+D083;D083;110F 1173 11BE;D083;110F 1173 11BE; # (킃; 킃; á„ᅳᆾ; 킃; á„ᅳᆾ; ) HANGUL SYLLABLE KEUC
+D084;D084;110F 1173 11BF;D084;110F 1173 11BF; # (í‚„; í‚„; á„ᅳᆿ; í‚„; á„ᅳᆿ; ) HANGUL SYLLABLE KEUK
+D085;D085;110F 1173 11C0;D085;110F 1173 11C0; # (í‚…; í‚…; á„ᅳᇀ; í‚…; á„ᅳᇀ; ) HANGUL SYLLABLE KEUT
+D086;D086;110F 1173 11C1;D086;110F 1173 11C1; # (킆; 킆; á„á…³á‡; 킆; á„á…³á‡; ) HANGUL SYLLABLE KEUP
+D087;D087;110F 1173 11C2;D087;110F 1173 11C2; # (킇; 킇; á„ᅳᇂ; 킇; á„ᅳᇂ; ) HANGUL SYLLABLE KEUH
+D088;D088;110F 1174;D088;110F 1174; # (킈; 킈; á„á…´; 킈; á„á…´; ) HANGUL SYLLABLE KYI
+D089;D089;110F 1174 11A8;D089;110F 1174 11A8; # (킉; 킉; á„ᅴᆨ; 킉; á„ᅴᆨ; ) HANGUL SYLLABLE KYIG
+D08A;D08A;110F 1174 11A9;D08A;110F 1174 11A9; # (í‚Š; í‚Š; á„ᅴᆩ; í‚Š; á„ᅴᆩ; ) HANGUL SYLLABLE KYIGG
+D08B;D08B;110F 1174 11AA;D08B;110F 1174 11AA; # (í‚‹; í‚‹; á„ᅴᆪ; í‚‹; á„ᅴᆪ; ) HANGUL SYLLABLE KYIGS
+D08C;D08C;110F 1174 11AB;D08C;110F 1174 11AB; # (í‚Œ; í‚Œ; á„ᅴᆫ; í‚Œ; á„ᅴᆫ; ) HANGUL SYLLABLE KYIN
+D08D;D08D;110F 1174 11AC;D08D;110F 1174 11AC; # (í‚; í‚; á„ᅴᆬ; í‚; á„ᅴᆬ; ) HANGUL SYLLABLE KYINJ
+D08E;D08E;110F 1174 11AD;D08E;110F 1174 11AD; # (í‚Ž; í‚Ž; á„ᅴᆭ; í‚Ž; á„ᅴᆭ; ) HANGUL SYLLABLE KYINH
+D08F;D08F;110F 1174 11AE;D08F;110F 1174 11AE; # (í‚; í‚; á„ᅴᆮ; í‚; á„ᅴᆮ; ) HANGUL SYLLABLE KYID
+D090;D090;110F 1174 11AF;D090;110F 1174 11AF; # (í‚; í‚; á„ᅴᆯ; í‚; á„ᅴᆯ; ) HANGUL SYLLABLE KYIL
+D091;D091;110F 1174 11B0;D091;110F 1174 11B0; # (í‚‘; í‚‘; á„ᅴᆰ; í‚‘; á„ᅴᆰ; ) HANGUL SYLLABLE KYILG
+D092;D092;110F 1174 11B1;D092;110F 1174 11B1; # (í‚’; í‚’; á„ᅴᆱ; í‚’; á„ᅴᆱ; ) HANGUL SYLLABLE KYILM
+D093;D093;110F 1174 11B2;D093;110F 1174 11B2; # (í‚“; í‚“; á„ᅴᆲ; í‚“; á„ᅴᆲ; ) HANGUL SYLLABLE KYILB
+D094;D094;110F 1174 11B3;D094;110F 1174 11B3; # (í‚”; í‚”; á„ᅴᆳ; í‚”; á„ᅴᆳ; ) HANGUL SYLLABLE KYILS
+D095;D095;110F 1174 11B4;D095;110F 1174 11B4; # (í‚•; í‚•; á„ᅴᆴ; í‚•; á„ᅴᆴ; ) HANGUL SYLLABLE KYILT
+D096;D096;110F 1174 11B5;D096;110F 1174 11B5; # (í‚–; í‚–; á„ᅴᆵ; í‚–; á„ᅴᆵ; ) HANGUL SYLLABLE KYILP
+D097;D097;110F 1174 11B6;D097;110F 1174 11B6; # (í‚—; í‚—; á„ᅴᆶ; í‚—; á„ᅴᆶ; ) HANGUL SYLLABLE KYILH
+D098;D098;110F 1174 11B7;D098;110F 1174 11B7; # (킘; 킘; á„ᅴᆷ; 킘; á„ᅴᆷ; ) HANGUL SYLLABLE KYIM
+D099;D099;110F 1174 11B8;D099;110F 1174 11B8; # (í‚™; í‚™; á„ᅴᆸ; í‚™; á„ᅴᆸ; ) HANGUL SYLLABLE KYIB
+D09A;D09A;110F 1174 11B9;D09A;110F 1174 11B9; # (í‚š; í‚š; á„ᅴᆹ; í‚š; á„ᅴᆹ; ) HANGUL SYLLABLE KYIBS
+D09B;D09B;110F 1174 11BA;D09B;110F 1174 11BA; # (í‚›; í‚›; á„ᅴᆺ; í‚›; á„ᅴᆺ; ) HANGUL SYLLABLE KYIS
+D09C;D09C;110F 1174 11BB;D09C;110F 1174 11BB; # (í‚œ; í‚œ; á„ᅴᆻ; í‚œ; á„ᅴᆻ; ) HANGUL SYLLABLE KYISS
+D09D;D09D;110F 1174 11BC;D09D;110F 1174 11BC; # (í‚; í‚; á„ᅴᆼ; í‚; á„ᅴᆼ; ) HANGUL SYLLABLE KYING
+D09E;D09E;110F 1174 11BD;D09E;110F 1174 11BD; # (í‚ž; í‚ž; á„ᅴᆽ; í‚ž; á„ᅴᆽ; ) HANGUL SYLLABLE KYIJ
+D09F;D09F;110F 1174 11BE;D09F;110F 1174 11BE; # (í‚Ÿ; í‚Ÿ; á„ᅴᆾ; í‚Ÿ; á„ᅴᆾ; ) HANGUL SYLLABLE KYIC
+D0A0;D0A0;110F 1174 11BF;D0A0;110F 1174 11BF; # (í‚ ; í‚ ; á„ᅴᆿ; í‚ ; á„ᅴᆿ; ) HANGUL SYLLABLE KYIK
+D0A1;D0A1;110F 1174 11C0;D0A1;110F 1174 11C0; # (í‚¡; í‚¡; á„ᅴᇀ; í‚¡; á„ᅴᇀ; ) HANGUL SYLLABLE KYIT
+D0A2;D0A2;110F 1174 11C1;D0A2;110F 1174 11C1; # (í‚¢; í‚¢; á„á…´á‡; í‚¢; á„á…´á‡; ) HANGUL SYLLABLE KYIP
+D0A3;D0A3;110F 1174 11C2;D0A3;110F 1174 11C2; # (í‚£; í‚£; á„ᅴᇂ; í‚£; á„ᅴᇂ; ) HANGUL SYLLABLE KYIH
+D0A4;D0A4;110F 1175;D0A4;110F 1175; # (키; 키; á„á…µ; 키; á„á…µ; ) HANGUL SYLLABLE KI
+D0A5;D0A5;110F 1175 11A8;D0A5;110F 1175 11A8; # (í‚¥; í‚¥; á„ᅵᆨ; í‚¥; á„ᅵᆨ; ) HANGUL SYLLABLE KIG
+D0A6;D0A6;110F 1175 11A9;D0A6;110F 1175 11A9; # (킦; 킦; á„ᅵᆩ; 킦; á„ᅵᆩ; ) HANGUL SYLLABLE KIGG
+D0A7;D0A7;110F 1175 11AA;D0A7;110F 1175 11AA; # (킧; 킧; á„ᅵᆪ; 킧; á„ᅵᆪ; ) HANGUL SYLLABLE KIGS
+D0A8;D0A8;110F 1175 11AB;D0A8;110F 1175 11AB; # (킨; 킨; á„ᅵᆫ; 킨; á„ᅵᆫ; ) HANGUL SYLLABLE KIN
+D0A9;D0A9;110F 1175 11AC;D0A9;110F 1175 11AC; # (í‚©; í‚©; á„ᅵᆬ; í‚©; á„ᅵᆬ; ) HANGUL SYLLABLE KINJ
+D0AA;D0AA;110F 1175 11AD;D0AA;110F 1175 11AD; # (킪; 킪; á„ᅵᆭ; 킪; á„ᅵᆭ; ) HANGUL SYLLABLE KINH
+D0AB;D0AB;110F 1175 11AE;D0AB;110F 1175 11AE; # (í‚«; í‚«; á„ᅵᆮ; í‚«; á„ᅵᆮ; ) HANGUL SYLLABLE KID
+D0AC;D0AC;110F 1175 11AF;D0AC;110F 1175 11AF; # (킬; 킬; á„ᅵᆯ; 킬; á„ᅵᆯ; ) HANGUL SYLLABLE KIL
+D0AD;D0AD;110F 1175 11B0;D0AD;110F 1175 11B0; # (í‚­; í‚­; á„ᅵᆰ; í‚­; á„ᅵᆰ; ) HANGUL SYLLABLE KILG
+D0AE;D0AE;110F 1175 11B1;D0AE;110F 1175 11B1; # (í‚®; í‚®; á„ᅵᆱ; í‚®; á„ᅵᆱ; ) HANGUL SYLLABLE KILM
+D0AF;D0AF;110F 1175 11B2;D0AF;110F 1175 11B2; # (킯; 킯; á„ᅵᆲ; 킯; á„ᅵᆲ; ) HANGUL SYLLABLE KILB
+D0B0;D0B0;110F 1175 11B3;D0B0;110F 1175 11B3; # (í‚°; í‚°; á„ᅵᆳ; í‚°; á„ᅵᆳ; ) HANGUL SYLLABLE KILS
+D0B1;D0B1;110F 1175 11B4;D0B1;110F 1175 11B4; # (킱; 킱; á„ᅵᆴ; 킱; á„ᅵᆴ; ) HANGUL SYLLABLE KILT
+D0B2;D0B2;110F 1175 11B5;D0B2;110F 1175 11B5; # (킲; 킲; á„ᅵᆵ; 킲; á„ᅵᆵ; ) HANGUL SYLLABLE KILP
+D0B3;D0B3;110F 1175 11B6;D0B3;110F 1175 11B6; # (킳; 킳; á„ᅵᆶ; 킳; á„ᅵᆶ; ) HANGUL SYLLABLE KILH
+D0B4;D0B4;110F 1175 11B7;D0B4;110F 1175 11B7; # (í‚´; í‚´; á„ᅵᆷ; í‚´; á„ᅵᆷ; ) HANGUL SYLLABLE KIM
+D0B5;D0B5;110F 1175 11B8;D0B5;110F 1175 11B8; # (킵; 킵; á„ᅵᆸ; 킵; á„ᅵᆸ; ) HANGUL SYLLABLE KIB
+D0B6;D0B6;110F 1175 11B9;D0B6;110F 1175 11B9; # (킶; 킶; á„ᅵᆹ; 킶; á„ᅵᆹ; ) HANGUL SYLLABLE KIBS
+D0B7;D0B7;110F 1175 11BA;D0B7;110F 1175 11BA; # (í‚·; í‚·; á„ᅵᆺ; í‚·; á„ᅵᆺ; ) HANGUL SYLLABLE KIS
+D0B8;D0B8;110F 1175 11BB;D0B8;110F 1175 11BB; # (킸; 킸; á„ᅵᆻ; 킸; á„ᅵᆻ; ) HANGUL SYLLABLE KISS
+D0B9;D0B9;110F 1175 11BC;D0B9;110F 1175 11BC; # (킹; 킹; á„ᅵᆼ; 킹; á„ᅵᆼ; ) HANGUL SYLLABLE KING
+D0BA;D0BA;110F 1175 11BD;D0BA;110F 1175 11BD; # (킺; 킺; á„ᅵᆽ; 킺; á„ᅵᆽ; ) HANGUL SYLLABLE KIJ
+D0BB;D0BB;110F 1175 11BE;D0BB;110F 1175 11BE; # (í‚»; í‚»; á„ᅵᆾ; í‚»; á„ᅵᆾ; ) HANGUL SYLLABLE KIC
+D0BC;D0BC;110F 1175 11BF;D0BC;110F 1175 11BF; # (킼; 킼; á„ᅵᆿ; 킼; á„ᅵᆿ; ) HANGUL SYLLABLE KIK
+D0BD;D0BD;110F 1175 11C0;D0BD;110F 1175 11C0; # (킽; 킽; á„ᅵᇀ; 킽; á„ᅵᇀ; ) HANGUL SYLLABLE KIT
+D0BE;D0BE;110F 1175 11C1;D0BE;110F 1175 11C1; # (킾; 킾; á„á…µá‡; 킾; á„á…µá‡; ) HANGUL SYLLABLE KIP
+D0BF;D0BF;110F 1175 11C2;D0BF;110F 1175 11C2; # (í‚¿; í‚¿; á„ᅵᇂ; í‚¿; á„ᅵᇂ; ) HANGUL SYLLABLE KIH
+D0C0;D0C0;1110 1161;D0C0;1110 1161; # (타; 타; á„á…¡; 타; á„á…¡; ) HANGUL SYLLABLE TA
+D0C1;D0C1;1110 1161 11A8;D0C1;1110 1161 11A8; # (íƒ; íƒ; á„ᅡᆨ; íƒ; á„ᅡᆨ; ) HANGUL SYLLABLE TAG
+D0C2;D0C2;1110 1161 11A9;D0C2;1110 1161 11A9; # (탂; 탂; á„ᅡᆩ; 탂; á„ᅡᆩ; ) HANGUL SYLLABLE TAGG
+D0C3;D0C3;1110 1161 11AA;D0C3;1110 1161 11AA; # (탃; 탃; á„ᅡᆪ; 탃; á„ᅡᆪ; ) HANGUL SYLLABLE TAGS
+D0C4;D0C4;1110 1161 11AB;D0C4;1110 1161 11AB; # (탄; 탄; á„ᅡᆫ; 탄; á„ᅡᆫ; ) HANGUL SYLLABLE TAN
+D0C5;D0C5;1110 1161 11AC;D0C5;1110 1161 11AC; # (탅; 탅; á„ᅡᆬ; 탅; á„ᅡᆬ; ) HANGUL SYLLABLE TANJ
+D0C6;D0C6;1110 1161 11AD;D0C6;1110 1161 11AD; # (탆; 탆; á„ᅡᆭ; 탆; á„ᅡᆭ; ) HANGUL SYLLABLE TANH
+D0C7;D0C7;1110 1161 11AE;D0C7;1110 1161 11AE; # (탇; 탇; á„ᅡᆮ; 탇; á„ᅡᆮ; ) HANGUL SYLLABLE TAD
+D0C8;D0C8;1110 1161 11AF;D0C8;1110 1161 11AF; # (탈; 탈; á„ᅡᆯ; 탈; á„ᅡᆯ; ) HANGUL SYLLABLE TAL
+D0C9;D0C9;1110 1161 11B0;D0C9;1110 1161 11B0; # (탉; 탉; á„ᅡᆰ; 탉; á„ᅡᆰ; ) HANGUL SYLLABLE TALG
+D0CA;D0CA;1110 1161 11B1;D0CA;1110 1161 11B1; # (탊; 탊; á„ᅡᆱ; 탊; á„ᅡᆱ; ) HANGUL SYLLABLE TALM
+D0CB;D0CB;1110 1161 11B2;D0CB;1110 1161 11B2; # (탋; 탋; á„ᅡᆲ; 탋; á„ᅡᆲ; ) HANGUL SYLLABLE TALB
+D0CC;D0CC;1110 1161 11B3;D0CC;1110 1161 11B3; # (탌; 탌; á„ᅡᆳ; 탌; á„ᅡᆳ; ) HANGUL SYLLABLE TALS
+D0CD;D0CD;1110 1161 11B4;D0CD;1110 1161 11B4; # (íƒ; íƒ; á„ᅡᆴ; íƒ; á„ᅡᆴ; ) HANGUL SYLLABLE TALT
+D0CE;D0CE;1110 1161 11B5;D0CE;1110 1161 11B5; # (탎; 탎; á„ᅡᆵ; 탎; á„ᅡᆵ; ) HANGUL SYLLABLE TALP
+D0CF;D0CF;1110 1161 11B6;D0CF;1110 1161 11B6; # (íƒ; íƒ; á„ᅡᆶ; íƒ; á„ᅡᆶ; ) HANGUL SYLLABLE TALH
+D0D0;D0D0;1110 1161 11B7;D0D0;1110 1161 11B7; # (íƒ; íƒ; á„ᅡᆷ; íƒ; á„ᅡᆷ; ) HANGUL SYLLABLE TAM
+D0D1;D0D1;1110 1161 11B8;D0D1;1110 1161 11B8; # (탑; 탑; á„ᅡᆸ; 탑; á„ᅡᆸ; ) HANGUL SYLLABLE TAB
+D0D2;D0D2;1110 1161 11B9;D0D2;1110 1161 11B9; # (탒; 탒; á„ᅡᆹ; 탒; á„ᅡᆹ; ) HANGUL SYLLABLE TABS
+D0D3;D0D3;1110 1161 11BA;D0D3;1110 1161 11BA; # (탓; 탓; á„ᅡᆺ; 탓; á„ᅡᆺ; ) HANGUL SYLLABLE TAS
+D0D4;D0D4;1110 1161 11BB;D0D4;1110 1161 11BB; # (탔; 탔; á„ᅡᆻ; 탔; á„ᅡᆻ; ) HANGUL SYLLABLE TASS
+D0D5;D0D5;1110 1161 11BC;D0D5;1110 1161 11BC; # (탕; 탕; á„ᅡᆼ; 탕; á„ᅡᆼ; ) HANGUL SYLLABLE TANG
+D0D6;D0D6;1110 1161 11BD;D0D6;1110 1161 11BD; # (탖; 탖; á„ᅡᆽ; 탖; á„ᅡᆽ; ) HANGUL SYLLABLE TAJ
+D0D7;D0D7;1110 1161 11BE;D0D7;1110 1161 11BE; # (탗; 탗; á„ᅡᆾ; 탗; á„ᅡᆾ; ) HANGUL SYLLABLE TAC
+D0D8;D0D8;1110 1161 11BF;D0D8;1110 1161 11BF; # (탘; 탘; á„ᅡᆿ; 탘; á„ᅡᆿ; ) HANGUL SYLLABLE TAK
+D0D9;D0D9;1110 1161 11C0;D0D9;1110 1161 11C0; # (탙; 탙; á„ᅡᇀ; 탙; á„ᅡᇀ; ) HANGUL SYLLABLE TAT
+D0DA;D0DA;1110 1161 11C1;D0DA;1110 1161 11C1; # (탚; 탚; á„á…¡á‡; 탚; á„á…¡á‡; ) HANGUL SYLLABLE TAP
+D0DB;D0DB;1110 1161 11C2;D0DB;1110 1161 11C2; # (탛; 탛; á„ᅡᇂ; 탛; á„ᅡᇂ; ) HANGUL SYLLABLE TAH
+D0DC;D0DC;1110 1162;D0DC;1110 1162; # (태; 태; á„á…¢; 태; á„á…¢; ) HANGUL SYLLABLE TAE
+D0DD;D0DD;1110 1162 11A8;D0DD;1110 1162 11A8; # (íƒ; íƒ; á„ᅢᆨ; íƒ; á„ᅢᆨ; ) HANGUL SYLLABLE TAEG
+D0DE;D0DE;1110 1162 11A9;D0DE;1110 1162 11A9; # (탞; 탞; á„ᅢᆩ; 탞; á„ᅢᆩ; ) HANGUL SYLLABLE TAEGG
+D0DF;D0DF;1110 1162 11AA;D0DF;1110 1162 11AA; # (탟; 탟; á„ᅢᆪ; 탟; á„ᅢᆪ; ) HANGUL SYLLABLE TAEGS
+D0E0;D0E0;1110 1162 11AB;D0E0;1110 1162 11AB; # (탠; 탠; á„ᅢᆫ; 탠; á„ᅢᆫ; ) HANGUL SYLLABLE TAEN
+D0E1;D0E1;1110 1162 11AC;D0E1;1110 1162 11AC; # (탡; 탡; á„ᅢᆬ; 탡; á„ᅢᆬ; ) HANGUL SYLLABLE TAENJ
+D0E2;D0E2;1110 1162 11AD;D0E2;1110 1162 11AD; # (탢; 탢; á„ᅢᆭ; 탢; á„ᅢᆭ; ) HANGUL SYLLABLE TAENH
+D0E3;D0E3;1110 1162 11AE;D0E3;1110 1162 11AE; # (탣; 탣; á„ᅢᆮ; 탣; á„ᅢᆮ; ) HANGUL SYLLABLE TAED
+D0E4;D0E4;1110 1162 11AF;D0E4;1110 1162 11AF; # (탤; 탤; á„ᅢᆯ; 탤; á„ᅢᆯ; ) HANGUL SYLLABLE TAEL
+D0E5;D0E5;1110 1162 11B0;D0E5;1110 1162 11B0; # (탥; 탥; á„ᅢᆰ; 탥; á„ᅢᆰ; ) HANGUL SYLLABLE TAELG
+D0E6;D0E6;1110 1162 11B1;D0E6;1110 1162 11B1; # (탦; 탦; á„ᅢᆱ; 탦; á„ᅢᆱ; ) HANGUL SYLLABLE TAELM
+D0E7;D0E7;1110 1162 11B2;D0E7;1110 1162 11B2; # (탧; 탧; á„ᅢᆲ; 탧; á„ᅢᆲ; ) HANGUL SYLLABLE TAELB
+D0E8;D0E8;1110 1162 11B3;D0E8;1110 1162 11B3; # (탨; 탨; á„ᅢᆳ; 탨; á„ᅢᆳ; ) HANGUL SYLLABLE TAELS
+D0E9;D0E9;1110 1162 11B4;D0E9;1110 1162 11B4; # (탩; 탩; á„ᅢᆴ; 탩; á„ᅢᆴ; ) HANGUL SYLLABLE TAELT
+D0EA;D0EA;1110 1162 11B5;D0EA;1110 1162 11B5; # (탪; 탪; á„ᅢᆵ; 탪; á„ᅢᆵ; ) HANGUL SYLLABLE TAELP
+D0EB;D0EB;1110 1162 11B6;D0EB;1110 1162 11B6; # (탫; 탫; á„ᅢᆶ; 탫; á„ᅢᆶ; ) HANGUL SYLLABLE TAELH
+D0EC;D0EC;1110 1162 11B7;D0EC;1110 1162 11B7; # (탬; 탬; á„ᅢᆷ; 탬; á„ᅢᆷ; ) HANGUL SYLLABLE TAEM
+D0ED;D0ED;1110 1162 11B8;D0ED;1110 1162 11B8; # (탭; 탭; á„ᅢᆸ; 탭; á„ᅢᆸ; ) HANGUL SYLLABLE TAEB
+D0EE;D0EE;1110 1162 11B9;D0EE;1110 1162 11B9; # (탮; 탮; á„ᅢᆹ; 탮; á„ᅢᆹ; ) HANGUL SYLLABLE TAEBS
+D0EF;D0EF;1110 1162 11BA;D0EF;1110 1162 11BA; # (탯; 탯; á„ᅢᆺ; 탯; á„ᅢᆺ; ) HANGUL SYLLABLE TAES
+D0F0;D0F0;1110 1162 11BB;D0F0;1110 1162 11BB; # (탰; 탰; á„ᅢᆻ; 탰; á„ᅢᆻ; ) HANGUL SYLLABLE TAESS
+D0F1;D0F1;1110 1162 11BC;D0F1;1110 1162 11BC; # (탱; 탱; á„ᅢᆼ; 탱; á„ᅢᆼ; ) HANGUL SYLLABLE TAENG
+D0F2;D0F2;1110 1162 11BD;D0F2;1110 1162 11BD; # (탲; 탲; á„ᅢᆽ; 탲; á„ᅢᆽ; ) HANGUL SYLLABLE TAEJ
+D0F3;D0F3;1110 1162 11BE;D0F3;1110 1162 11BE; # (탳; 탳; á„ᅢᆾ; 탳; á„ᅢᆾ; ) HANGUL SYLLABLE TAEC
+D0F4;D0F4;1110 1162 11BF;D0F4;1110 1162 11BF; # (탴; 탴; á„ᅢᆿ; 탴; á„ᅢᆿ; ) HANGUL SYLLABLE TAEK
+D0F5;D0F5;1110 1162 11C0;D0F5;1110 1162 11C0; # (탵; 탵; á„ᅢᇀ; 탵; á„ᅢᇀ; ) HANGUL SYLLABLE TAET
+D0F6;D0F6;1110 1162 11C1;D0F6;1110 1162 11C1; # (탶; 탶; á„á…¢á‡; 탶; á„á…¢á‡; ) HANGUL SYLLABLE TAEP
+D0F7;D0F7;1110 1162 11C2;D0F7;1110 1162 11C2; # (탷; 탷; á„ᅢᇂ; 탷; á„ᅢᇂ; ) HANGUL SYLLABLE TAEH
+D0F8;D0F8;1110 1163;D0F8;1110 1163; # (탸; 탸; á„á…£; 탸; á„á…£; ) HANGUL SYLLABLE TYA
+D0F9;D0F9;1110 1163 11A8;D0F9;1110 1163 11A8; # (탹; 탹; á„ᅣᆨ; 탹; á„ᅣᆨ; ) HANGUL SYLLABLE TYAG
+D0FA;D0FA;1110 1163 11A9;D0FA;1110 1163 11A9; # (탺; 탺; á„ᅣᆩ; 탺; á„ᅣᆩ; ) HANGUL SYLLABLE TYAGG
+D0FB;D0FB;1110 1163 11AA;D0FB;1110 1163 11AA; # (탻; 탻; á„ᅣᆪ; 탻; á„ᅣᆪ; ) HANGUL SYLLABLE TYAGS
+D0FC;D0FC;1110 1163 11AB;D0FC;1110 1163 11AB; # (탼; 탼; á„ᅣᆫ; 탼; á„ᅣᆫ; ) HANGUL SYLLABLE TYAN
+D0FD;D0FD;1110 1163 11AC;D0FD;1110 1163 11AC; # (탽; 탽; á„ᅣᆬ; 탽; á„ᅣᆬ; ) HANGUL SYLLABLE TYANJ
+D0FE;D0FE;1110 1163 11AD;D0FE;1110 1163 11AD; # (탾; 탾; á„ᅣᆭ; 탾; á„ᅣᆭ; ) HANGUL SYLLABLE TYANH
+D0FF;D0FF;1110 1163 11AE;D0FF;1110 1163 11AE; # (탿; 탿; á„ᅣᆮ; 탿; á„ᅣᆮ; ) HANGUL SYLLABLE TYAD
+D100;D100;1110 1163 11AF;D100;1110 1163 11AF; # (í„€; í„€; á„ᅣᆯ; í„€; á„ᅣᆯ; ) HANGUL SYLLABLE TYAL
+D101;D101;1110 1163 11B0;D101;1110 1163 11B0; # (í„; í„; á„ᅣᆰ; í„; á„ᅣᆰ; ) HANGUL SYLLABLE TYALG
+D102;D102;1110 1163 11B1;D102;1110 1163 11B1; # (í„‚; í„‚; á„ᅣᆱ; í„‚; á„ᅣᆱ; ) HANGUL SYLLABLE TYALM
+D103;D103;1110 1163 11B2;D103;1110 1163 11B2; # (턃; 턃; á„ᅣᆲ; 턃; á„ᅣᆲ; ) HANGUL SYLLABLE TYALB
+D104;D104;1110 1163 11B3;D104;1110 1163 11B3; # (í„„; í„„; á„ᅣᆳ; í„„; á„ᅣᆳ; ) HANGUL SYLLABLE TYALS
+D105;D105;1110 1163 11B4;D105;1110 1163 11B4; # (í„…; í„…; á„ᅣᆴ; í„…; á„ᅣᆴ; ) HANGUL SYLLABLE TYALT
+D106;D106;1110 1163 11B5;D106;1110 1163 11B5; # (턆; 턆; á„ᅣᆵ; 턆; á„ᅣᆵ; ) HANGUL SYLLABLE TYALP
+D107;D107;1110 1163 11B6;D107;1110 1163 11B6; # (턇; 턇; á„ᅣᆶ; 턇; á„ᅣᆶ; ) HANGUL SYLLABLE TYALH
+D108;D108;1110 1163 11B7;D108;1110 1163 11B7; # (턈; 턈; á„ᅣᆷ; 턈; á„ᅣᆷ; ) HANGUL SYLLABLE TYAM
+D109;D109;1110 1163 11B8;D109;1110 1163 11B8; # (턉; 턉; á„ᅣᆸ; 턉; á„ᅣᆸ; ) HANGUL SYLLABLE TYAB
+D10A;D10A;1110 1163 11B9;D10A;1110 1163 11B9; # (í„Š; í„Š; á„ᅣᆹ; í„Š; á„ᅣᆹ; ) HANGUL SYLLABLE TYABS
+D10B;D10B;1110 1163 11BA;D10B;1110 1163 11BA; # (í„‹; í„‹; á„ᅣᆺ; í„‹; á„ᅣᆺ; ) HANGUL SYLLABLE TYAS
+D10C;D10C;1110 1163 11BB;D10C;1110 1163 11BB; # (í„Œ; í„Œ; á„ᅣᆻ; í„Œ; á„ᅣᆻ; ) HANGUL SYLLABLE TYASS
+D10D;D10D;1110 1163 11BC;D10D;1110 1163 11BC; # (í„; í„; á„ᅣᆼ; í„; á„ᅣᆼ; ) HANGUL SYLLABLE TYANG
+D10E;D10E;1110 1163 11BD;D10E;1110 1163 11BD; # (í„Ž; í„Ž; á„ᅣᆽ; í„Ž; á„ᅣᆽ; ) HANGUL SYLLABLE TYAJ
+D10F;D10F;1110 1163 11BE;D10F;1110 1163 11BE; # (í„; í„; á„ᅣᆾ; í„; á„ᅣᆾ; ) HANGUL SYLLABLE TYAC
+D110;D110;1110 1163 11BF;D110;1110 1163 11BF; # (í„; í„; á„ᅣᆿ; í„; á„ᅣᆿ; ) HANGUL SYLLABLE TYAK
+D111;D111;1110 1163 11C0;D111;1110 1163 11C0; # (í„‘; í„‘; á„ᅣᇀ; í„‘; á„ᅣᇀ; ) HANGUL SYLLABLE TYAT
+D112;D112;1110 1163 11C1;D112;1110 1163 11C1; # (í„’; í„’; á„á…£á‡; í„’; á„á…£á‡; ) HANGUL SYLLABLE TYAP
+D113;D113;1110 1163 11C2;D113;1110 1163 11C2; # (í„“; í„“; á„ᅣᇂ; í„“; á„ᅣᇂ; ) HANGUL SYLLABLE TYAH
+D114;D114;1110 1164;D114;1110 1164; # (í„”; í„”; á„á…¤; í„”; á„á…¤; ) HANGUL SYLLABLE TYAE
+D115;D115;1110 1164 11A8;D115;1110 1164 11A8; # (í„•; í„•; á„ᅤᆨ; í„•; á„ᅤᆨ; ) HANGUL SYLLABLE TYAEG
+D116;D116;1110 1164 11A9;D116;1110 1164 11A9; # (í„–; í„–; á„ᅤᆩ; í„–; á„ᅤᆩ; ) HANGUL SYLLABLE TYAEGG
+D117;D117;1110 1164 11AA;D117;1110 1164 11AA; # (í„—; í„—; á„ᅤᆪ; í„—; á„ᅤᆪ; ) HANGUL SYLLABLE TYAEGS
+D118;D118;1110 1164 11AB;D118;1110 1164 11AB; # (턘; 턘; á„ᅤᆫ; 턘; á„ᅤᆫ; ) HANGUL SYLLABLE TYAEN
+D119;D119;1110 1164 11AC;D119;1110 1164 11AC; # (í„™; í„™; á„ᅤᆬ; í„™; á„ᅤᆬ; ) HANGUL SYLLABLE TYAENJ
+D11A;D11A;1110 1164 11AD;D11A;1110 1164 11AD; # (í„š; í„š; á„ᅤᆭ; í„š; á„ᅤᆭ; ) HANGUL SYLLABLE TYAENH
+D11B;D11B;1110 1164 11AE;D11B;1110 1164 11AE; # (í„›; í„›; á„ᅤᆮ; í„›; á„ᅤᆮ; ) HANGUL SYLLABLE TYAED
+D11C;D11C;1110 1164 11AF;D11C;1110 1164 11AF; # (í„œ; í„œ; á„ᅤᆯ; í„œ; á„ᅤᆯ; ) HANGUL SYLLABLE TYAEL
+D11D;D11D;1110 1164 11B0;D11D;1110 1164 11B0; # (í„; í„; á„ᅤᆰ; í„; á„ᅤᆰ; ) HANGUL SYLLABLE TYAELG
+D11E;D11E;1110 1164 11B1;D11E;1110 1164 11B1; # (í„ž; í„ž; á„ᅤᆱ; í„ž; á„ᅤᆱ; ) HANGUL SYLLABLE TYAELM
+D11F;D11F;1110 1164 11B2;D11F;1110 1164 11B2; # (í„Ÿ; í„Ÿ; á„ᅤᆲ; í„Ÿ; á„ᅤᆲ; ) HANGUL SYLLABLE TYAELB
+D120;D120;1110 1164 11B3;D120;1110 1164 11B3; # (í„ ; í„ ; á„ᅤᆳ; í„ ; á„ᅤᆳ; ) HANGUL SYLLABLE TYAELS
+D121;D121;1110 1164 11B4;D121;1110 1164 11B4; # (í„¡; í„¡; á„ᅤᆴ; í„¡; á„ᅤᆴ; ) HANGUL SYLLABLE TYAELT
+D122;D122;1110 1164 11B5;D122;1110 1164 11B5; # (í„¢; í„¢; á„ᅤᆵ; í„¢; á„ᅤᆵ; ) HANGUL SYLLABLE TYAELP
+D123;D123;1110 1164 11B6;D123;1110 1164 11B6; # (í„£; í„£; á„ᅤᆶ; í„£; á„ᅤᆶ; ) HANGUL SYLLABLE TYAELH
+D124;D124;1110 1164 11B7;D124;1110 1164 11B7; # (턤; 턤; á„ᅤᆷ; 턤; á„ᅤᆷ; ) HANGUL SYLLABLE TYAEM
+D125;D125;1110 1164 11B8;D125;1110 1164 11B8; # (í„¥; í„¥; á„ᅤᆸ; í„¥; á„ᅤᆸ; ) HANGUL SYLLABLE TYAEB
+D126;D126;1110 1164 11B9;D126;1110 1164 11B9; # (턦; 턦; á„ᅤᆹ; 턦; á„ᅤᆹ; ) HANGUL SYLLABLE TYAEBS
+D127;D127;1110 1164 11BA;D127;1110 1164 11BA; # (턧; 턧; á„ᅤᆺ; 턧; á„ᅤᆺ; ) HANGUL SYLLABLE TYAES
+D128;D128;1110 1164 11BB;D128;1110 1164 11BB; # (턨; 턨; á„ᅤᆻ; 턨; á„ᅤᆻ; ) HANGUL SYLLABLE TYAESS
+D129;D129;1110 1164 11BC;D129;1110 1164 11BC; # (í„©; í„©; á„ᅤᆼ; í„©; á„ᅤᆼ; ) HANGUL SYLLABLE TYAENG
+D12A;D12A;1110 1164 11BD;D12A;1110 1164 11BD; # (턪; 턪; á„ᅤᆽ; 턪; á„ᅤᆽ; ) HANGUL SYLLABLE TYAEJ
+D12B;D12B;1110 1164 11BE;D12B;1110 1164 11BE; # (í„«; í„«; á„ᅤᆾ; í„«; á„ᅤᆾ; ) HANGUL SYLLABLE TYAEC
+D12C;D12C;1110 1164 11BF;D12C;1110 1164 11BF; # (턬; 턬; á„ᅤᆿ; 턬; á„ᅤᆿ; ) HANGUL SYLLABLE TYAEK
+D12D;D12D;1110 1164 11C0;D12D;1110 1164 11C0; # (í„­; í„­; á„ᅤᇀ; í„­; á„ᅤᇀ; ) HANGUL SYLLABLE TYAET
+D12E;D12E;1110 1164 11C1;D12E;1110 1164 11C1; # (í„®; í„®; á„á…¤á‡; í„®; á„á…¤á‡; ) HANGUL SYLLABLE TYAEP
+D12F;D12F;1110 1164 11C2;D12F;1110 1164 11C2; # (턯; 턯; á„ᅤᇂ; 턯; á„ᅤᇂ; ) HANGUL SYLLABLE TYAEH
+D130;D130;1110 1165;D130;1110 1165; # (í„°; í„°; á„á…¥; í„°; á„á…¥; ) HANGUL SYLLABLE TEO
+D131;D131;1110 1165 11A8;D131;1110 1165 11A8; # (턱; 턱; á„ᅥᆨ; 턱; á„ᅥᆨ; ) HANGUL SYLLABLE TEOG
+D132;D132;1110 1165 11A9;D132;1110 1165 11A9; # (턲; 턲; á„ᅥᆩ; 턲; á„ᅥᆩ; ) HANGUL SYLLABLE TEOGG
+D133;D133;1110 1165 11AA;D133;1110 1165 11AA; # (턳; 턳; á„ᅥᆪ; 턳; á„ᅥᆪ; ) HANGUL SYLLABLE TEOGS
+D134;D134;1110 1165 11AB;D134;1110 1165 11AB; # (í„´; í„´; á„ᅥᆫ; í„´; á„ᅥᆫ; ) HANGUL SYLLABLE TEON
+D135;D135;1110 1165 11AC;D135;1110 1165 11AC; # (턵; 턵; á„ᅥᆬ; 턵; á„ᅥᆬ; ) HANGUL SYLLABLE TEONJ
+D136;D136;1110 1165 11AD;D136;1110 1165 11AD; # (턶; 턶; á„ᅥᆭ; 턶; á„ᅥᆭ; ) HANGUL SYLLABLE TEONH
+D137;D137;1110 1165 11AE;D137;1110 1165 11AE; # (í„·; í„·; á„ᅥᆮ; í„·; á„ᅥᆮ; ) HANGUL SYLLABLE TEOD
+D138;D138;1110 1165 11AF;D138;1110 1165 11AF; # (털; 털; á„ᅥᆯ; 털; á„ᅥᆯ; ) HANGUL SYLLABLE TEOL
+D139;D139;1110 1165 11B0;D139;1110 1165 11B0; # (턹; 턹; á„ᅥᆰ; 턹; á„ᅥᆰ; ) HANGUL SYLLABLE TEOLG
+D13A;D13A;1110 1165 11B1;D13A;1110 1165 11B1; # (턺; 턺; á„ᅥᆱ; 턺; á„ᅥᆱ; ) HANGUL SYLLABLE TEOLM
+D13B;D13B;1110 1165 11B2;D13B;1110 1165 11B2; # (í„»; í„»; á„ᅥᆲ; í„»; á„ᅥᆲ; ) HANGUL SYLLABLE TEOLB
+D13C;D13C;1110 1165 11B3;D13C;1110 1165 11B3; # (턼; 턼; á„ᅥᆳ; 턼; á„ᅥᆳ; ) HANGUL SYLLABLE TEOLS
+D13D;D13D;1110 1165 11B4;D13D;1110 1165 11B4; # (턽; 턽; á„ᅥᆴ; 턽; á„ᅥᆴ; ) HANGUL SYLLABLE TEOLT
+D13E;D13E;1110 1165 11B5;D13E;1110 1165 11B5; # (턾; 턾; á„ᅥᆵ; 턾; á„ᅥᆵ; ) HANGUL SYLLABLE TEOLP
+D13F;D13F;1110 1165 11B6;D13F;1110 1165 11B6; # (í„¿; í„¿; á„ᅥᆶ; í„¿; á„ᅥᆶ; ) HANGUL SYLLABLE TEOLH
+D140;D140;1110 1165 11B7;D140;1110 1165 11B7; # (í…€; í…€; á„ᅥᆷ; í…€; á„ᅥᆷ; ) HANGUL SYLLABLE TEOM
+D141;D141;1110 1165 11B8;D141;1110 1165 11B8; # (í…; í…; á„ᅥᆸ; í…; á„ᅥᆸ; ) HANGUL SYLLABLE TEOB
+D142;D142;1110 1165 11B9;D142;1110 1165 11B9; # (í…‚; í…‚; á„ᅥᆹ; í…‚; á„ᅥᆹ; ) HANGUL SYLLABLE TEOBS
+D143;D143;1110 1165 11BA;D143;1110 1165 11BA; # (í…ƒ; í…ƒ; á„ᅥᆺ; í…ƒ; á„ᅥᆺ; ) HANGUL SYLLABLE TEOS
+D144;D144;1110 1165 11BB;D144;1110 1165 11BB; # (í…„; í…„; á„ᅥᆻ; í…„; á„ᅥᆻ; ) HANGUL SYLLABLE TEOSS
+D145;D145;1110 1165 11BC;D145;1110 1165 11BC; # (í……; í……; á„ᅥᆼ; í……; á„ᅥᆼ; ) HANGUL SYLLABLE TEONG
+D146;D146;1110 1165 11BD;D146;1110 1165 11BD; # (í…†; í…†; á„ᅥᆽ; í…†; á„ᅥᆽ; ) HANGUL SYLLABLE TEOJ
+D147;D147;1110 1165 11BE;D147;1110 1165 11BE; # (í…‡; í…‡; á„ᅥᆾ; í…‡; á„ᅥᆾ; ) HANGUL SYLLABLE TEOC
+D148;D148;1110 1165 11BF;D148;1110 1165 11BF; # (í…ˆ; í…ˆ; á„ᅥᆿ; í…ˆ; á„ᅥᆿ; ) HANGUL SYLLABLE TEOK
+D149;D149;1110 1165 11C0;D149;1110 1165 11C0; # (í…‰; í…‰; á„ᅥᇀ; í…‰; á„ᅥᇀ; ) HANGUL SYLLABLE TEOT
+D14A;D14A;1110 1165 11C1;D14A;1110 1165 11C1; # (í…Š; í…Š; á„á…¥á‡; í…Š; á„á…¥á‡; ) HANGUL SYLLABLE TEOP
+D14B;D14B;1110 1165 11C2;D14B;1110 1165 11C2; # (í…‹; í…‹; á„ᅥᇂ; í…‹; á„ᅥᇂ; ) HANGUL SYLLABLE TEOH
+D14C;D14C;1110 1166;D14C;1110 1166; # (í…Œ; í…Œ; á„á…¦; í…Œ; á„á…¦; ) HANGUL SYLLABLE TE
+D14D;D14D;1110 1166 11A8;D14D;1110 1166 11A8; # (í…; í…; á„ᅦᆨ; í…; á„ᅦᆨ; ) HANGUL SYLLABLE TEG
+D14E;D14E;1110 1166 11A9;D14E;1110 1166 11A9; # (í…Ž; í…Ž; á„ᅦᆩ; í…Ž; á„ᅦᆩ; ) HANGUL SYLLABLE TEGG
+D14F;D14F;1110 1166 11AA;D14F;1110 1166 11AA; # (í…; í…; á„ᅦᆪ; í…; á„ᅦᆪ; ) HANGUL SYLLABLE TEGS
+D150;D150;1110 1166 11AB;D150;1110 1166 11AB; # (í…; í…; á„ᅦᆫ; í…; á„ᅦᆫ; ) HANGUL SYLLABLE TEN
+D151;D151;1110 1166 11AC;D151;1110 1166 11AC; # (í…‘; í…‘; á„ᅦᆬ; í…‘; á„ᅦᆬ; ) HANGUL SYLLABLE TENJ
+D152;D152;1110 1166 11AD;D152;1110 1166 11AD; # (í…’; í…’; á„ᅦᆭ; í…’; á„ᅦᆭ; ) HANGUL SYLLABLE TENH
+D153;D153;1110 1166 11AE;D153;1110 1166 11AE; # (í…“; í…“; á„ᅦᆮ; í…“; á„ᅦᆮ; ) HANGUL SYLLABLE TED
+D154;D154;1110 1166 11AF;D154;1110 1166 11AF; # (í…”; í…”; á„ᅦᆯ; í…”; á„ᅦᆯ; ) HANGUL SYLLABLE TEL
+D155;D155;1110 1166 11B0;D155;1110 1166 11B0; # (í…•; í…•; á„ᅦᆰ; í…•; á„ᅦᆰ; ) HANGUL SYLLABLE TELG
+D156;D156;1110 1166 11B1;D156;1110 1166 11B1; # (í…–; í…–; á„ᅦᆱ; í…–; á„ᅦᆱ; ) HANGUL SYLLABLE TELM
+D157;D157;1110 1166 11B2;D157;1110 1166 11B2; # (í…—; í…—; á„ᅦᆲ; í…—; á„ᅦᆲ; ) HANGUL SYLLABLE TELB
+D158;D158;1110 1166 11B3;D158;1110 1166 11B3; # (í…˜; í…˜; á„ᅦᆳ; í…˜; á„ᅦᆳ; ) HANGUL SYLLABLE TELS
+D159;D159;1110 1166 11B4;D159;1110 1166 11B4; # (í…™; í…™; á„ᅦᆴ; í…™; á„ᅦᆴ; ) HANGUL SYLLABLE TELT
+D15A;D15A;1110 1166 11B5;D15A;1110 1166 11B5; # (í…š; í…š; á„ᅦᆵ; í…š; á„ᅦᆵ; ) HANGUL SYLLABLE TELP
+D15B;D15B;1110 1166 11B6;D15B;1110 1166 11B6; # (í…›; í…›; á„ᅦᆶ; í…›; á„ᅦᆶ; ) HANGUL SYLLABLE TELH
+D15C;D15C;1110 1166 11B7;D15C;1110 1166 11B7; # (í…œ; í…œ; á„ᅦᆷ; í…œ; á„ᅦᆷ; ) HANGUL SYLLABLE TEM
+D15D;D15D;1110 1166 11B8;D15D;1110 1166 11B8; # (í…; í…; á„ᅦᆸ; í…; á„ᅦᆸ; ) HANGUL SYLLABLE TEB
+D15E;D15E;1110 1166 11B9;D15E;1110 1166 11B9; # (í…ž; í…ž; á„ᅦᆹ; í…ž; á„ᅦᆹ; ) HANGUL SYLLABLE TEBS
+D15F;D15F;1110 1166 11BA;D15F;1110 1166 11BA; # (í…Ÿ; í…Ÿ; á„ᅦᆺ; í…Ÿ; á„ᅦᆺ; ) HANGUL SYLLABLE TES
+D160;D160;1110 1166 11BB;D160;1110 1166 11BB; # (í… ; í… ; á„ᅦᆻ; í… ; á„ᅦᆻ; ) HANGUL SYLLABLE TESS
+D161;D161;1110 1166 11BC;D161;1110 1166 11BC; # (í…¡; í…¡; á„ᅦᆼ; í…¡; á„ᅦᆼ; ) HANGUL SYLLABLE TENG
+D162;D162;1110 1166 11BD;D162;1110 1166 11BD; # (í…¢; í…¢; á„ᅦᆽ; í…¢; á„ᅦᆽ; ) HANGUL SYLLABLE TEJ
+D163;D163;1110 1166 11BE;D163;1110 1166 11BE; # (í…£; í…£; á„ᅦᆾ; í…£; á„ᅦᆾ; ) HANGUL SYLLABLE TEC
+D164;D164;1110 1166 11BF;D164;1110 1166 11BF; # (í…¤; í…¤; á„ᅦᆿ; í…¤; á„ᅦᆿ; ) HANGUL SYLLABLE TEK
+D165;D165;1110 1166 11C0;D165;1110 1166 11C0; # (í…¥; í…¥; á„ᅦᇀ; í…¥; á„ᅦᇀ; ) HANGUL SYLLABLE TET
+D166;D166;1110 1166 11C1;D166;1110 1166 11C1; # (í…¦; í…¦; á„á…¦á‡; í…¦; á„á…¦á‡; ) HANGUL SYLLABLE TEP
+D167;D167;1110 1166 11C2;D167;1110 1166 11C2; # (í…§; í…§; á„ᅦᇂ; í…§; á„ᅦᇂ; ) HANGUL SYLLABLE TEH
+D168;D168;1110 1167;D168;1110 1167; # (í…¨; í…¨; á„á…§; í…¨; á„á…§; ) HANGUL SYLLABLE TYEO
+D169;D169;1110 1167 11A8;D169;1110 1167 11A8; # (í…©; í…©; á„ᅧᆨ; í…©; á„ᅧᆨ; ) HANGUL SYLLABLE TYEOG
+D16A;D16A;1110 1167 11A9;D16A;1110 1167 11A9; # (í…ª; í…ª; á„ᅧᆩ; í…ª; á„ᅧᆩ; ) HANGUL SYLLABLE TYEOGG
+D16B;D16B;1110 1167 11AA;D16B;1110 1167 11AA; # (í…«; í…«; á„ᅧᆪ; í…«; á„ᅧᆪ; ) HANGUL SYLLABLE TYEOGS
+D16C;D16C;1110 1167 11AB;D16C;1110 1167 11AB; # (í…¬; í…¬; á„ᅧᆫ; í…¬; á„ᅧᆫ; ) HANGUL SYLLABLE TYEON
+D16D;D16D;1110 1167 11AC;D16D;1110 1167 11AC; # (í…­; í…­; á„ᅧᆬ; í…­; á„ᅧᆬ; ) HANGUL SYLLABLE TYEONJ
+D16E;D16E;1110 1167 11AD;D16E;1110 1167 11AD; # (í…®; í…®; á„ᅧᆭ; í…®; á„ᅧᆭ; ) HANGUL SYLLABLE TYEONH
+D16F;D16F;1110 1167 11AE;D16F;1110 1167 11AE; # (í…¯; í…¯; á„ᅧᆮ; í…¯; á„ᅧᆮ; ) HANGUL SYLLABLE TYEOD
+D170;D170;1110 1167 11AF;D170;1110 1167 11AF; # (í…°; í…°; á„ᅧᆯ; í…°; á„ᅧᆯ; ) HANGUL SYLLABLE TYEOL
+D171;D171;1110 1167 11B0;D171;1110 1167 11B0; # (í…±; í…±; á„ᅧᆰ; í…±; á„ᅧᆰ; ) HANGUL SYLLABLE TYEOLG
+D172;D172;1110 1167 11B1;D172;1110 1167 11B1; # (í…²; í…²; á„ᅧᆱ; í…²; á„ᅧᆱ; ) HANGUL SYLLABLE TYEOLM
+D173;D173;1110 1167 11B2;D173;1110 1167 11B2; # (í…³; í…³; á„ᅧᆲ; í…³; á„ᅧᆲ; ) HANGUL SYLLABLE TYEOLB
+D174;D174;1110 1167 11B3;D174;1110 1167 11B3; # (í…´; í…´; á„ᅧᆳ; í…´; á„ᅧᆳ; ) HANGUL SYLLABLE TYEOLS
+D175;D175;1110 1167 11B4;D175;1110 1167 11B4; # (í…µ; í…µ; á„ᅧᆴ; í…µ; á„ᅧᆴ; ) HANGUL SYLLABLE TYEOLT
+D176;D176;1110 1167 11B5;D176;1110 1167 11B5; # (í…¶; í…¶; á„ᅧᆵ; í…¶; á„ᅧᆵ; ) HANGUL SYLLABLE TYEOLP
+D177;D177;1110 1167 11B6;D177;1110 1167 11B6; # (í…·; í…·; á„ᅧᆶ; í…·; á„ᅧᆶ; ) HANGUL SYLLABLE TYEOLH
+D178;D178;1110 1167 11B7;D178;1110 1167 11B7; # (í…¸; í…¸; á„ᅧᆷ; í…¸; á„ᅧᆷ; ) HANGUL SYLLABLE TYEOM
+D179;D179;1110 1167 11B8;D179;1110 1167 11B8; # (í…¹; í…¹; á„ᅧᆸ; í…¹; á„ᅧᆸ; ) HANGUL SYLLABLE TYEOB
+D17A;D17A;1110 1167 11B9;D17A;1110 1167 11B9; # (í…º; í…º; á„ᅧᆹ; í…º; á„ᅧᆹ; ) HANGUL SYLLABLE TYEOBS
+D17B;D17B;1110 1167 11BA;D17B;1110 1167 11BA; # (í…»; í…»; á„ᅧᆺ; í…»; á„ᅧᆺ; ) HANGUL SYLLABLE TYEOS
+D17C;D17C;1110 1167 11BB;D17C;1110 1167 11BB; # (í…¼; í…¼; á„ᅧᆻ; í…¼; á„ᅧᆻ; ) HANGUL SYLLABLE TYEOSS
+D17D;D17D;1110 1167 11BC;D17D;1110 1167 11BC; # (í…½; í…½; á„ᅧᆼ; í…½; á„ᅧᆼ; ) HANGUL SYLLABLE TYEONG
+D17E;D17E;1110 1167 11BD;D17E;1110 1167 11BD; # (í…¾; í…¾; á„ᅧᆽ; í…¾; á„ᅧᆽ; ) HANGUL SYLLABLE TYEOJ
+D17F;D17F;1110 1167 11BE;D17F;1110 1167 11BE; # (í…¿; í…¿; á„ᅧᆾ; í…¿; á„ᅧᆾ; ) HANGUL SYLLABLE TYEOC
+D180;D180;1110 1167 11BF;D180;1110 1167 11BF; # (톀; 톀; á„ᅧᆿ; 톀; á„ᅧᆿ; ) HANGUL SYLLABLE TYEOK
+D181;D181;1110 1167 11C0;D181;1110 1167 11C0; # (í†; í†; á„ᅧᇀ; í†; á„ᅧᇀ; ) HANGUL SYLLABLE TYEOT
+D182;D182;1110 1167 11C1;D182;1110 1167 11C1; # (톂; 톂; á„á…§á‡; 톂; á„á…§á‡; ) HANGUL SYLLABLE TYEOP
+D183;D183;1110 1167 11C2;D183;1110 1167 11C2; # (톃; 톃; á„ᅧᇂ; 톃; á„ᅧᇂ; ) HANGUL SYLLABLE TYEOH
+D184;D184;1110 1168;D184;1110 1168; # (톄; 톄; á„á…¨; 톄; á„á…¨; ) HANGUL SYLLABLE TYE
+D185;D185;1110 1168 11A8;D185;1110 1168 11A8; # (톅; 톅; á„ᅨᆨ; 톅; á„ᅨᆨ; ) HANGUL SYLLABLE TYEG
+D186;D186;1110 1168 11A9;D186;1110 1168 11A9; # (톆; 톆; á„ᅨᆩ; 톆; á„ᅨᆩ; ) HANGUL SYLLABLE TYEGG
+D187;D187;1110 1168 11AA;D187;1110 1168 11AA; # (톇; 톇; á„ᅨᆪ; 톇; á„ᅨᆪ; ) HANGUL SYLLABLE TYEGS
+D188;D188;1110 1168 11AB;D188;1110 1168 11AB; # (톈; 톈; á„ᅨᆫ; 톈; á„ᅨᆫ; ) HANGUL SYLLABLE TYEN
+D189;D189;1110 1168 11AC;D189;1110 1168 11AC; # (톉; 톉; á„ᅨᆬ; 톉; á„ᅨᆬ; ) HANGUL SYLLABLE TYENJ
+D18A;D18A;1110 1168 11AD;D18A;1110 1168 11AD; # (톊; 톊; á„ᅨᆭ; 톊; á„ᅨᆭ; ) HANGUL SYLLABLE TYENH
+D18B;D18B;1110 1168 11AE;D18B;1110 1168 11AE; # (톋; 톋; á„ᅨᆮ; 톋; á„ᅨᆮ; ) HANGUL SYLLABLE TYED
+D18C;D18C;1110 1168 11AF;D18C;1110 1168 11AF; # (톌; 톌; á„ᅨᆯ; 톌; á„ᅨᆯ; ) HANGUL SYLLABLE TYEL
+D18D;D18D;1110 1168 11B0;D18D;1110 1168 11B0; # (í†; í†; á„ᅨᆰ; í†; á„ᅨᆰ; ) HANGUL SYLLABLE TYELG
+D18E;D18E;1110 1168 11B1;D18E;1110 1168 11B1; # (톎; 톎; á„ᅨᆱ; 톎; á„ᅨᆱ; ) HANGUL SYLLABLE TYELM
+D18F;D18F;1110 1168 11B2;D18F;1110 1168 11B2; # (í†; í†; á„ᅨᆲ; í†; á„ᅨᆲ; ) HANGUL SYLLABLE TYELB
+D190;D190;1110 1168 11B3;D190;1110 1168 11B3; # (í†; í†; á„ᅨᆳ; í†; á„ᅨᆳ; ) HANGUL SYLLABLE TYELS
+D191;D191;1110 1168 11B4;D191;1110 1168 11B4; # (톑; 톑; á„ᅨᆴ; 톑; á„ᅨᆴ; ) HANGUL SYLLABLE TYELT
+D192;D192;1110 1168 11B5;D192;1110 1168 11B5; # (톒; 톒; á„ᅨᆵ; 톒; á„ᅨᆵ; ) HANGUL SYLLABLE TYELP
+D193;D193;1110 1168 11B6;D193;1110 1168 11B6; # (톓; 톓; á„ᅨᆶ; 톓; á„ᅨᆶ; ) HANGUL SYLLABLE TYELH
+D194;D194;1110 1168 11B7;D194;1110 1168 11B7; # (톔; 톔; á„ᅨᆷ; 톔; á„ᅨᆷ; ) HANGUL SYLLABLE TYEM
+D195;D195;1110 1168 11B8;D195;1110 1168 11B8; # (톕; 톕; á„ᅨᆸ; 톕; á„ᅨᆸ; ) HANGUL SYLLABLE TYEB
+D196;D196;1110 1168 11B9;D196;1110 1168 11B9; # (톖; 톖; á„ᅨᆹ; 톖; á„ᅨᆹ; ) HANGUL SYLLABLE TYEBS
+D197;D197;1110 1168 11BA;D197;1110 1168 11BA; # (톗; 톗; á„ᅨᆺ; 톗; á„ᅨᆺ; ) HANGUL SYLLABLE TYES
+D198;D198;1110 1168 11BB;D198;1110 1168 11BB; # (톘; 톘; á„ᅨᆻ; 톘; á„ᅨᆻ; ) HANGUL SYLLABLE TYESS
+D199;D199;1110 1168 11BC;D199;1110 1168 11BC; # (톙; 톙; á„ᅨᆼ; 톙; á„ᅨᆼ; ) HANGUL SYLLABLE TYENG
+D19A;D19A;1110 1168 11BD;D19A;1110 1168 11BD; # (톚; 톚; á„ᅨᆽ; 톚; á„ᅨᆽ; ) HANGUL SYLLABLE TYEJ
+D19B;D19B;1110 1168 11BE;D19B;1110 1168 11BE; # (톛; 톛; á„ᅨᆾ; 톛; á„ᅨᆾ; ) HANGUL SYLLABLE TYEC
+D19C;D19C;1110 1168 11BF;D19C;1110 1168 11BF; # (톜; 톜; á„ᅨᆿ; 톜; á„ᅨᆿ; ) HANGUL SYLLABLE TYEK
+D19D;D19D;1110 1168 11C0;D19D;1110 1168 11C0; # (í†; í†; á„ᅨᇀ; í†; á„ᅨᇀ; ) HANGUL SYLLABLE TYET
+D19E;D19E;1110 1168 11C1;D19E;1110 1168 11C1; # (톞; 톞; á„á…¨á‡; 톞; á„á…¨á‡; ) HANGUL SYLLABLE TYEP
+D19F;D19F;1110 1168 11C2;D19F;1110 1168 11C2; # (톟; 톟; á„ᅨᇂ; 톟; á„ᅨᇂ; ) HANGUL SYLLABLE TYEH
+D1A0;D1A0;1110 1169;D1A0;1110 1169; # (토; 토; á„á…©; 토; á„á…©; ) HANGUL SYLLABLE TO
+D1A1;D1A1;1110 1169 11A8;D1A1;1110 1169 11A8; # (톡; 톡; á„ᅩᆨ; 톡; á„ᅩᆨ; ) HANGUL SYLLABLE TOG
+D1A2;D1A2;1110 1169 11A9;D1A2;1110 1169 11A9; # (톢; 톢; á„ᅩᆩ; 톢; á„ᅩᆩ; ) HANGUL SYLLABLE TOGG
+D1A3;D1A3;1110 1169 11AA;D1A3;1110 1169 11AA; # (톣; 톣; á„ᅩᆪ; 톣; á„ᅩᆪ; ) HANGUL SYLLABLE TOGS
+D1A4;D1A4;1110 1169 11AB;D1A4;1110 1169 11AB; # (톤; 톤; á„ᅩᆫ; 톤; á„ᅩᆫ; ) HANGUL SYLLABLE TON
+D1A5;D1A5;1110 1169 11AC;D1A5;1110 1169 11AC; # (톥; 톥; á„ᅩᆬ; 톥; á„ᅩᆬ; ) HANGUL SYLLABLE TONJ
+D1A6;D1A6;1110 1169 11AD;D1A6;1110 1169 11AD; # (톦; 톦; á„ᅩᆭ; 톦; á„ᅩᆭ; ) HANGUL SYLLABLE TONH
+D1A7;D1A7;1110 1169 11AE;D1A7;1110 1169 11AE; # (톧; 톧; á„ᅩᆮ; 톧; á„ᅩᆮ; ) HANGUL SYLLABLE TOD
+D1A8;D1A8;1110 1169 11AF;D1A8;1110 1169 11AF; # (톨; 톨; á„ᅩᆯ; 톨; á„ᅩᆯ; ) HANGUL SYLLABLE TOL
+D1A9;D1A9;1110 1169 11B0;D1A9;1110 1169 11B0; # (톩; 톩; á„ᅩᆰ; 톩; á„ᅩᆰ; ) HANGUL SYLLABLE TOLG
+D1AA;D1AA;1110 1169 11B1;D1AA;1110 1169 11B1; # (톪; 톪; á„ᅩᆱ; 톪; á„ᅩᆱ; ) HANGUL SYLLABLE TOLM
+D1AB;D1AB;1110 1169 11B2;D1AB;1110 1169 11B2; # (톫; 톫; á„ᅩᆲ; 톫; á„ᅩᆲ; ) HANGUL SYLLABLE TOLB
+D1AC;D1AC;1110 1169 11B3;D1AC;1110 1169 11B3; # (톬; 톬; á„ᅩᆳ; 톬; á„ᅩᆳ; ) HANGUL SYLLABLE TOLS
+D1AD;D1AD;1110 1169 11B4;D1AD;1110 1169 11B4; # (톭; 톭; á„ᅩᆴ; 톭; á„ᅩᆴ; ) HANGUL SYLLABLE TOLT
+D1AE;D1AE;1110 1169 11B5;D1AE;1110 1169 11B5; # (톮; 톮; á„ᅩᆵ; 톮; á„ᅩᆵ; ) HANGUL SYLLABLE TOLP
+D1AF;D1AF;1110 1169 11B6;D1AF;1110 1169 11B6; # (톯; 톯; á„ᅩᆶ; 톯; á„ᅩᆶ; ) HANGUL SYLLABLE TOLH
+D1B0;D1B0;1110 1169 11B7;D1B0;1110 1169 11B7; # (톰; 톰; á„ᅩᆷ; 톰; á„ᅩᆷ; ) HANGUL SYLLABLE TOM
+D1B1;D1B1;1110 1169 11B8;D1B1;1110 1169 11B8; # (톱; 톱; á„ᅩᆸ; 톱; á„ᅩᆸ; ) HANGUL SYLLABLE TOB
+D1B2;D1B2;1110 1169 11B9;D1B2;1110 1169 11B9; # (톲; 톲; á„ᅩᆹ; 톲; á„ᅩᆹ; ) HANGUL SYLLABLE TOBS
+D1B3;D1B3;1110 1169 11BA;D1B3;1110 1169 11BA; # (톳; 톳; á„ᅩᆺ; 톳; á„ᅩᆺ; ) HANGUL SYLLABLE TOS
+D1B4;D1B4;1110 1169 11BB;D1B4;1110 1169 11BB; # (톴; 톴; á„ᅩᆻ; 톴; á„ᅩᆻ; ) HANGUL SYLLABLE TOSS
+D1B5;D1B5;1110 1169 11BC;D1B5;1110 1169 11BC; # (통; 통; á„ᅩᆼ; 통; á„ᅩᆼ; ) HANGUL SYLLABLE TONG
+D1B6;D1B6;1110 1169 11BD;D1B6;1110 1169 11BD; # (톶; 톶; á„ᅩᆽ; 톶; á„ᅩᆽ; ) HANGUL SYLLABLE TOJ
+D1B7;D1B7;1110 1169 11BE;D1B7;1110 1169 11BE; # (톷; 톷; á„ᅩᆾ; 톷; á„ᅩᆾ; ) HANGUL SYLLABLE TOC
+D1B8;D1B8;1110 1169 11BF;D1B8;1110 1169 11BF; # (톸; 톸; á„ᅩᆿ; 톸; á„ᅩᆿ; ) HANGUL SYLLABLE TOK
+D1B9;D1B9;1110 1169 11C0;D1B9;1110 1169 11C0; # (톹; 톹; á„ᅩᇀ; 톹; á„ᅩᇀ; ) HANGUL SYLLABLE TOT
+D1BA;D1BA;1110 1169 11C1;D1BA;1110 1169 11C1; # (톺; 톺; á„á…©á‡; 톺; á„á…©á‡; ) HANGUL SYLLABLE TOP
+D1BB;D1BB;1110 1169 11C2;D1BB;1110 1169 11C2; # (톻; 톻; á„ᅩᇂ; 톻; á„ᅩᇂ; ) HANGUL SYLLABLE TOH
+D1BC;D1BC;1110 116A;D1BC;1110 116A; # (톼; 톼; á„á…ª; 톼; á„á…ª; ) HANGUL SYLLABLE TWA
+D1BD;D1BD;1110 116A 11A8;D1BD;1110 116A 11A8; # (톽; 톽; á„ᅪᆨ; 톽; á„ᅪᆨ; ) HANGUL SYLLABLE TWAG
+D1BE;D1BE;1110 116A 11A9;D1BE;1110 116A 11A9; # (톾; 톾; á„ᅪᆩ; 톾; á„ᅪᆩ; ) HANGUL SYLLABLE TWAGG
+D1BF;D1BF;1110 116A 11AA;D1BF;1110 116A 11AA; # (톿; 톿; á„ᅪᆪ; 톿; á„ᅪᆪ; ) HANGUL SYLLABLE TWAGS
+D1C0;D1C0;1110 116A 11AB;D1C0;1110 116A 11AB; # (퇀; 퇀; á„ᅪᆫ; 퇀; á„ᅪᆫ; ) HANGUL SYLLABLE TWAN
+D1C1;D1C1;1110 116A 11AC;D1C1;1110 116A 11AC; # (í‡; í‡; á„ᅪᆬ; í‡; á„ᅪᆬ; ) HANGUL SYLLABLE TWANJ
+D1C2;D1C2;1110 116A 11AD;D1C2;1110 116A 11AD; # (퇂; 퇂; á„ᅪᆭ; 퇂; á„ᅪᆭ; ) HANGUL SYLLABLE TWANH
+D1C3;D1C3;1110 116A 11AE;D1C3;1110 116A 11AE; # (퇃; 퇃; á„ᅪᆮ; 퇃; á„ᅪᆮ; ) HANGUL SYLLABLE TWAD
+D1C4;D1C4;1110 116A 11AF;D1C4;1110 116A 11AF; # (퇄; 퇄; á„ᅪᆯ; 퇄; á„ᅪᆯ; ) HANGUL SYLLABLE TWAL
+D1C5;D1C5;1110 116A 11B0;D1C5;1110 116A 11B0; # (퇅; 퇅; á„ᅪᆰ; 퇅; á„ᅪᆰ; ) HANGUL SYLLABLE TWALG
+D1C6;D1C6;1110 116A 11B1;D1C6;1110 116A 11B1; # (퇆; 퇆; á„ᅪᆱ; 퇆; á„ᅪᆱ; ) HANGUL SYLLABLE TWALM
+D1C7;D1C7;1110 116A 11B2;D1C7;1110 116A 11B2; # (퇇; 퇇; á„ᅪᆲ; 퇇; á„ᅪᆲ; ) HANGUL SYLLABLE TWALB
+D1C8;D1C8;1110 116A 11B3;D1C8;1110 116A 11B3; # (퇈; 퇈; á„ᅪᆳ; 퇈; á„ᅪᆳ; ) HANGUL SYLLABLE TWALS
+D1C9;D1C9;1110 116A 11B4;D1C9;1110 116A 11B4; # (퇉; 퇉; á„ᅪᆴ; 퇉; á„ᅪᆴ; ) HANGUL SYLLABLE TWALT
+D1CA;D1CA;1110 116A 11B5;D1CA;1110 116A 11B5; # (퇊; 퇊; á„ᅪᆵ; 퇊; á„ᅪᆵ; ) HANGUL SYLLABLE TWALP
+D1CB;D1CB;1110 116A 11B6;D1CB;1110 116A 11B6; # (퇋; 퇋; á„ᅪᆶ; 퇋; á„ᅪᆶ; ) HANGUL SYLLABLE TWALH
+D1CC;D1CC;1110 116A 11B7;D1CC;1110 116A 11B7; # (퇌; 퇌; á„ᅪᆷ; 퇌; á„ᅪᆷ; ) HANGUL SYLLABLE TWAM
+D1CD;D1CD;1110 116A 11B8;D1CD;1110 116A 11B8; # (í‡; í‡; á„ᅪᆸ; í‡; á„ᅪᆸ; ) HANGUL SYLLABLE TWAB
+D1CE;D1CE;1110 116A 11B9;D1CE;1110 116A 11B9; # (퇎; 퇎; á„ᅪᆹ; 퇎; á„ᅪᆹ; ) HANGUL SYLLABLE TWABS
+D1CF;D1CF;1110 116A 11BA;D1CF;1110 116A 11BA; # (í‡; í‡; á„ᅪᆺ; í‡; á„ᅪᆺ; ) HANGUL SYLLABLE TWAS
+D1D0;D1D0;1110 116A 11BB;D1D0;1110 116A 11BB; # (í‡; í‡; á„ᅪᆻ; í‡; á„ᅪᆻ; ) HANGUL SYLLABLE TWASS
+D1D1;D1D1;1110 116A 11BC;D1D1;1110 116A 11BC; # (퇑; 퇑; á„ᅪᆼ; 퇑; á„ᅪᆼ; ) HANGUL SYLLABLE TWANG
+D1D2;D1D2;1110 116A 11BD;D1D2;1110 116A 11BD; # (퇒; 퇒; á„ᅪᆽ; 퇒; á„ᅪᆽ; ) HANGUL SYLLABLE TWAJ
+D1D3;D1D3;1110 116A 11BE;D1D3;1110 116A 11BE; # (퇓; 퇓; á„ᅪᆾ; 퇓; á„ᅪᆾ; ) HANGUL SYLLABLE TWAC
+D1D4;D1D4;1110 116A 11BF;D1D4;1110 116A 11BF; # (퇔; 퇔; á„ᅪᆿ; 퇔; á„ᅪᆿ; ) HANGUL SYLLABLE TWAK
+D1D5;D1D5;1110 116A 11C0;D1D5;1110 116A 11C0; # (퇕; 퇕; á„ᅪᇀ; 퇕; á„ᅪᇀ; ) HANGUL SYLLABLE TWAT
+D1D6;D1D6;1110 116A 11C1;D1D6;1110 116A 11C1; # (퇖; 퇖; á„á…ªá‡; 퇖; á„á…ªá‡; ) HANGUL SYLLABLE TWAP
+D1D7;D1D7;1110 116A 11C2;D1D7;1110 116A 11C2; # (퇗; 퇗; á„ᅪᇂ; 퇗; á„ᅪᇂ; ) HANGUL SYLLABLE TWAH
+D1D8;D1D8;1110 116B;D1D8;1110 116B; # (퇘; 퇘; á„á…«; 퇘; á„á…«; ) HANGUL SYLLABLE TWAE
+D1D9;D1D9;1110 116B 11A8;D1D9;1110 116B 11A8; # (퇙; 퇙; á„ᅫᆨ; 퇙; á„ᅫᆨ; ) HANGUL SYLLABLE TWAEG
+D1DA;D1DA;1110 116B 11A9;D1DA;1110 116B 11A9; # (퇚; 퇚; á„ᅫᆩ; 퇚; á„ᅫᆩ; ) HANGUL SYLLABLE TWAEGG
+D1DB;D1DB;1110 116B 11AA;D1DB;1110 116B 11AA; # (퇛; 퇛; á„ᅫᆪ; 퇛; á„ᅫᆪ; ) HANGUL SYLLABLE TWAEGS
+D1DC;D1DC;1110 116B 11AB;D1DC;1110 116B 11AB; # (퇜; 퇜; á„ᅫᆫ; 퇜; á„ᅫᆫ; ) HANGUL SYLLABLE TWAEN
+D1DD;D1DD;1110 116B 11AC;D1DD;1110 116B 11AC; # (í‡; í‡; á„ᅫᆬ; í‡; á„ᅫᆬ; ) HANGUL SYLLABLE TWAENJ
+D1DE;D1DE;1110 116B 11AD;D1DE;1110 116B 11AD; # (퇞; 퇞; á„ᅫᆭ; 퇞; á„ᅫᆭ; ) HANGUL SYLLABLE TWAENH
+D1DF;D1DF;1110 116B 11AE;D1DF;1110 116B 11AE; # (퇟; 퇟; á„ᅫᆮ; 퇟; á„ᅫᆮ; ) HANGUL SYLLABLE TWAED
+D1E0;D1E0;1110 116B 11AF;D1E0;1110 116B 11AF; # (퇠; 퇠; á„ᅫᆯ; 퇠; á„ᅫᆯ; ) HANGUL SYLLABLE TWAEL
+D1E1;D1E1;1110 116B 11B0;D1E1;1110 116B 11B0; # (퇡; 퇡; á„ᅫᆰ; 퇡; á„ᅫᆰ; ) HANGUL SYLLABLE TWAELG
+D1E2;D1E2;1110 116B 11B1;D1E2;1110 116B 11B1; # (퇢; 퇢; á„ᅫᆱ; 퇢; á„ᅫᆱ; ) HANGUL SYLLABLE TWAELM
+D1E3;D1E3;1110 116B 11B2;D1E3;1110 116B 11B2; # (퇣; 퇣; á„ᅫᆲ; 퇣; á„ᅫᆲ; ) HANGUL SYLLABLE TWAELB
+D1E4;D1E4;1110 116B 11B3;D1E4;1110 116B 11B3; # (퇤; 퇤; á„ᅫᆳ; 퇤; á„ᅫᆳ; ) HANGUL SYLLABLE TWAELS
+D1E5;D1E5;1110 116B 11B4;D1E5;1110 116B 11B4; # (퇥; 퇥; á„ᅫᆴ; 퇥; á„ᅫᆴ; ) HANGUL SYLLABLE TWAELT
+D1E6;D1E6;1110 116B 11B5;D1E6;1110 116B 11B5; # (퇦; 퇦; á„ᅫᆵ; 퇦; á„ᅫᆵ; ) HANGUL SYLLABLE TWAELP
+D1E7;D1E7;1110 116B 11B6;D1E7;1110 116B 11B6; # (퇧; 퇧; á„ᅫᆶ; 퇧; á„ᅫᆶ; ) HANGUL SYLLABLE TWAELH
+D1E8;D1E8;1110 116B 11B7;D1E8;1110 116B 11B7; # (퇨; 퇨; á„ᅫᆷ; 퇨; á„ᅫᆷ; ) HANGUL SYLLABLE TWAEM
+D1E9;D1E9;1110 116B 11B8;D1E9;1110 116B 11B8; # (퇩; 퇩; á„ᅫᆸ; 퇩; á„ᅫᆸ; ) HANGUL SYLLABLE TWAEB
+D1EA;D1EA;1110 116B 11B9;D1EA;1110 116B 11B9; # (퇪; 퇪; á„ᅫᆹ; 퇪; á„ᅫᆹ; ) HANGUL SYLLABLE TWAEBS
+D1EB;D1EB;1110 116B 11BA;D1EB;1110 116B 11BA; # (퇫; 퇫; á„ᅫᆺ; 퇫; á„ᅫᆺ; ) HANGUL SYLLABLE TWAES
+D1EC;D1EC;1110 116B 11BB;D1EC;1110 116B 11BB; # (퇬; 퇬; á„ᅫᆻ; 퇬; á„ᅫᆻ; ) HANGUL SYLLABLE TWAESS
+D1ED;D1ED;1110 116B 11BC;D1ED;1110 116B 11BC; # (퇭; 퇭; á„ᅫᆼ; 퇭; á„ᅫᆼ; ) HANGUL SYLLABLE TWAENG
+D1EE;D1EE;1110 116B 11BD;D1EE;1110 116B 11BD; # (퇮; 퇮; á„ᅫᆽ; 퇮; á„ᅫᆽ; ) HANGUL SYLLABLE TWAEJ
+D1EF;D1EF;1110 116B 11BE;D1EF;1110 116B 11BE; # (퇯; 퇯; á„ᅫᆾ; 퇯; á„ᅫᆾ; ) HANGUL SYLLABLE TWAEC
+D1F0;D1F0;1110 116B 11BF;D1F0;1110 116B 11BF; # (퇰; 퇰; á„ᅫᆿ; 퇰; á„ᅫᆿ; ) HANGUL SYLLABLE TWAEK
+D1F1;D1F1;1110 116B 11C0;D1F1;1110 116B 11C0; # (퇱; 퇱; á„ᅫᇀ; 퇱; á„ᅫᇀ; ) HANGUL SYLLABLE TWAET
+D1F2;D1F2;1110 116B 11C1;D1F2;1110 116B 11C1; # (퇲; 퇲; á„á…«á‡; 퇲; á„á…«á‡; ) HANGUL SYLLABLE TWAEP
+D1F3;D1F3;1110 116B 11C2;D1F3;1110 116B 11C2; # (퇳; 퇳; á„ᅫᇂ; 퇳; á„ᅫᇂ; ) HANGUL SYLLABLE TWAEH
+D1F4;D1F4;1110 116C;D1F4;1110 116C; # (퇴; 퇴; á„á…¬; 퇴; á„á…¬; ) HANGUL SYLLABLE TOE
+D1F5;D1F5;1110 116C 11A8;D1F5;1110 116C 11A8; # (퇵; 퇵; á„ᅬᆨ; 퇵; á„ᅬᆨ; ) HANGUL SYLLABLE TOEG
+D1F6;D1F6;1110 116C 11A9;D1F6;1110 116C 11A9; # (퇶; 퇶; á„ᅬᆩ; 퇶; á„ᅬᆩ; ) HANGUL SYLLABLE TOEGG
+D1F7;D1F7;1110 116C 11AA;D1F7;1110 116C 11AA; # (퇷; 퇷; á„ᅬᆪ; 퇷; á„ᅬᆪ; ) HANGUL SYLLABLE TOEGS
+D1F8;D1F8;1110 116C 11AB;D1F8;1110 116C 11AB; # (퇸; 퇸; á„ᅬᆫ; 퇸; á„ᅬᆫ; ) HANGUL SYLLABLE TOEN
+D1F9;D1F9;1110 116C 11AC;D1F9;1110 116C 11AC; # (퇹; 퇹; á„ᅬᆬ; 퇹; á„ᅬᆬ; ) HANGUL SYLLABLE TOENJ
+D1FA;D1FA;1110 116C 11AD;D1FA;1110 116C 11AD; # (퇺; 퇺; á„ᅬᆭ; 퇺; á„ᅬᆭ; ) HANGUL SYLLABLE TOENH
+D1FB;D1FB;1110 116C 11AE;D1FB;1110 116C 11AE; # (퇻; 퇻; á„ᅬᆮ; 퇻; á„ᅬᆮ; ) HANGUL SYLLABLE TOED
+D1FC;D1FC;1110 116C 11AF;D1FC;1110 116C 11AF; # (퇼; 퇼; á„ᅬᆯ; 퇼; á„ᅬᆯ; ) HANGUL SYLLABLE TOEL
+D1FD;D1FD;1110 116C 11B0;D1FD;1110 116C 11B0; # (퇽; 퇽; á„ᅬᆰ; 퇽; á„ᅬᆰ; ) HANGUL SYLLABLE TOELG
+D1FE;D1FE;1110 116C 11B1;D1FE;1110 116C 11B1; # (퇾; 퇾; á„ᅬᆱ; 퇾; á„ᅬᆱ; ) HANGUL SYLLABLE TOELM
+D1FF;D1FF;1110 116C 11B2;D1FF;1110 116C 11B2; # (퇿; 퇿; á„ᅬᆲ; 퇿; á„ᅬᆲ; ) HANGUL SYLLABLE TOELB
+D200;D200;1110 116C 11B3;D200;1110 116C 11B3; # (툀; 툀; á„ᅬᆳ; 툀; á„ᅬᆳ; ) HANGUL SYLLABLE TOELS
+D201;D201;1110 116C 11B4;D201;1110 116C 11B4; # (íˆ; íˆ; á„ᅬᆴ; íˆ; á„ᅬᆴ; ) HANGUL SYLLABLE TOELT
+D202;D202;1110 116C 11B5;D202;1110 116C 11B5; # (툂; 툂; á„ᅬᆵ; 툂; á„ᅬᆵ; ) HANGUL SYLLABLE TOELP
+D203;D203;1110 116C 11B6;D203;1110 116C 11B6; # (툃; 툃; á„ᅬᆶ; 툃; á„ᅬᆶ; ) HANGUL SYLLABLE TOELH
+D204;D204;1110 116C 11B7;D204;1110 116C 11B7; # (툄; 툄; á„ᅬᆷ; 툄; á„ᅬᆷ; ) HANGUL SYLLABLE TOEM
+D205;D205;1110 116C 11B8;D205;1110 116C 11B8; # (툅; 툅; á„ᅬᆸ; 툅; á„ᅬᆸ; ) HANGUL SYLLABLE TOEB
+D206;D206;1110 116C 11B9;D206;1110 116C 11B9; # (툆; 툆; á„ᅬᆹ; 툆; á„ᅬᆹ; ) HANGUL SYLLABLE TOEBS
+D207;D207;1110 116C 11BA;D207;1110 116C 11BA; # (툇; 툇; á„ᅬᆺ; 툇; á„ᅬᆺ; ) HANGUL SYLLABLE TOES
+D208;D208;1110 116C 11BB;D208;1110 116C 11BB; # (툈; 툈; á„ᅬᆻ; 툈; á„ᅬᆻ; ) HANGUL SYLLABLE TOESS
+D209;D209;1110 116C 11BC;D209;1110 116C 11BC; # (툉; 툉; á„ᅬᆼ; 툉; á„ᅬᆼ; ) HANGUL SYLLABLE TOENG
+D20A;D20A;1110 116C 11BD;D20A;1110 116C 11BD; # (툊; 툊; á„ᅬᆽ; 툊; á„ᅬᆽ; ) HANGUL SYLLABLE TOEJ
+D20B;D20B;1110 116C 11BE;D20B;1110 116C 11BE; # (툋; 툋; á„ᅬᆾ; 툋; á„ᅬᆾ; ) HANGUL SYLLABLE TOEC
+D20C;D20C;1110 116C 11BF;D20C;1110 116C 11BF; # (툌; 툌; á„ᅬᆿ; 툌; á„ᅬᆿ; ) HANGUL SYLLABLE TOEK
+D20D;D20D;1110 116C 11C0;D20D;1110 116C 11C0; # (íˆ; íˆ; á„ᅬᇀ; íˆ; á„ᅬᇀ; ) HANGUL SYLLABLE TOET
+D20E;D20E;1110 116C 11C1;D20E;1110 116C 11C1; # (툎; 툎; á„á…¬á‡; 툎; á„á…¬á‡; ) HANGUL SYLLABLE TOEP
+D20F;D20F;1110 116C 11C2;D20F;1110 116C 11C2; # (íˆ; íˆ; á„ᅬᇂ; íˆ; á„ᅬᇂ; ) HANGUL SYLLABLE TOEH
+D210;D210;1110 116D;D210;1110 116D; # (íˆ; íˆ; á„á…­; íˆ; á„á…­; ) HANGUL SYLLABLE TYO
+D211;D211;1110 116D 11A8;D211;1110 116D 11A8; # (툑; 툑; á„ᅭᆨ; 툑; á„ᅭᆨ; ) HANGUL SYLLABLE TYOG
+D212;D212;1110 116D 11A9;D212;1110 116D 11A9; # (툒; 툒; á„ᅭᆩ; 툒; á„ᅭᆩ; ) HANGUL SYLLABLE TYOGG
+D213;D213;1110 116D 11AA;D213;1110 116D 11AA; # (툓; 툓; á„ᅭᆪ; 툓; á„ᅭᆪ; ) HANGUL SYLLABLE TYOGS
+D214;D214;1110 116D 11AB;D214;1110 116D 11AB; # (툔; 툔; á„ᅭᆫ; 툔; á„ᅭᆫ; ) HANGUL SYLLABLE TYON
+D215;D215;1110 116D 11AC;D215;1110 116D 11AC; # (툕; 툕; á„ᅭᆬ; 툕; á„ᅭᆬ; ) HANGUL SYLLABLE TYONJ
+D216;D216;1110 116D 11AD;D216;1110 116D 11AD; # (툖; 툖; á„ᅭᆭ; 툖; á„ᅭᆭ; ) HANGUL SYLLABLE TYONH
+D217;D217;1110 116D 11AE;D217;1110 116D 11AE; # (툗; 툗; á„ᅭᆮ; 툗; á„ᅭᆮ; ) HANGUL SYLLABLE TYOD
+D218;D218;1110 116D 11AF;D218;1110 116D 11AF; # (툘; 툘; á„ᅭᆯ; 툘; á„ᅭᆯ; ) HANGUL SYLLABLE TYOL
+D219;D219;1110 116D 11B0;D219;1110 116D 11B0; # (툙; 툙; á„ᅭᆰ; 툙; á„ᅭᆰ; ) HANGUL SYLLABLE TYOLG
+D21A;D21A;1110 116D 11B1;D21A;1110 116D 11B1; # (툚; 툚; á„ᅭᆱ; 툚; á„ᅭᆱ; ) HANGUL SYLLABLE TYOLM
+D21B;D21B;1110 116D 11B2;D21B;1110 116D 11B2; # (툛; 툛; á„ᅭᆲ; 툛; á„ᅭᆲ; ) HANGUL SYLLABLE TYOLB
+D21C;D21C;1110 116D 11B3;D21C;1110 116D 11B3; # (툜; 툜; á„ᅭᆳ; 툜; á„ᅭᆳ; ) HANGUL SYLLABLE TYOLS
+D21D;D21D;1110 116D 11B4;D21D;1110 116D 11B4; # (íˆ; íˆ; á„ᅭᆴ; íˆ; á„ᅭᆴ; ) HANGUL SYLLABLE TYOLT
+D21E;D21E;1110 116D 11B5;D21E;1110 116D 11B5; # (툞; 툞; á„ᅭᆵ; 툞; á„ᅭᆵ; ) HANGUL SYLLABLE TYOLP
+D21F;D21F;1110 116D 11B6;D21F;1110 116D 11B6; # (툟; 툟; á„ᅭᆶ; 툟; á„ᅭᆶ; ) HANGUL SYLLABLE TYOLH
+D220;D220;1110 116D 11B7;D220;1110 116D 11B7; # (툠; 툠; á„ᅭᆷ; 툠; á„ᅭᆷ; ) HANGUL SYLLABLE TYOM
+D221;D221;1110 116D 11B8;D221;1110 116D 11B8; # (툡; 툡; á„ᅭᆸ; 툡; á„ᅭᆸ; ) HANGUL SYLLABLE TYOB
+D222;D222;1110 116D 11B9;D222;1110 116D 11B9; # (툢; 툢; á„ᅭᆹ; 툢; á„ᅭᆹ; ) HANGUL SYLLABLE TYOBS
+D223;D223;1110 116D 11BA;D223;1110 116D 11BA; # (툣; 툣; á„ᅭᆺ; 툣; á„ᅭᆺ; ) HANGUL SYLLABLE TYOS
+D224;D224;1110 116D 11BB;D224;1110 116D 11BB; # (툤; 툤; á„ᅭᆻ; 툤; á„ᅭᆻ; ) HANGUL SYLLABLE TYOSS
+D225;D225;1110 116D 11BC;D225;1110 116D 11BC; # (툥; 툥; á„ᅭᆼ; 툥; á„ᅭᆼ; ) HANGUL SYLLABLE TYONG
+D226;D226;1110 116D 11BD;D226;1110 116D 11BD; # (툦; 툦; á„ᅭᆽ; 툦; á„ᅭᆽ; ) HANGUL SYLLABLE TYOJ
+D227;D227;1110 116D 11BE;D227;1110 116D 11BE; # (툧; 툧; á„ᅭᆾ; 툧; á„ᅭᆾ; ) HANGUL SYLLABLE TYOC
+D228;D228;1110 116D 11BF;D228;1110 116D 11BF; # (툨; 툨; á„ᅭᆿ; 툨; á„ᅭᆿ; ) HANGUL SYLLABLE TYOK
+D229;D229;1110 116D 11C0;D229;1110 116D 11C0; # (툩; 툩; á„ᅭᇀ; 툩; á„ᅭᇀ; ) HANGUL SYLLABLE TYOT
+D22A;D22A;1110 116D 11C1;D22A;1110 116D 11C1; # (툪; 툪; á„á…­á‡; 툪; á„á…­á‡; ) HANGUL SYLLABLE TYOP
+D22B;D22B;1110 116D 11C2;D22B;1110 116D 11C2; # (툫; 툫; á„ᅭᇂ; 툫; á„ᅭᇂ; ) HANGUL SYLLABLE TYOH
+D22C;D22C;1110 116E;D22C;1110 116E; # (투; 투; á„á…®; 투; á„á…®; ) HANGUL SYLLABLE TU
+D22D;D22D;1110 116E 11A8;D22D;1110 116E 11A8; # (툭; 툭; á„ᅮᆨ; 툭; á„ᅮᆨ; ) HANGUL SYLLABLE TUG
+D22E;D22E;1110 116E 11A9;D22E;1110 116E 11A9; # (툮; 툮; á„ᅮᆩ; 툮; á„ᅮᆩ; ) HANGUL SYLLABLE TUGG
+D22F;D22F;1110 116E 11AA;D22F;1110 116E 11AA; # (툯; 툯; á„ᅮᆪ; 툯; á„ᅮᆪ; ) HANGUL SYLLABLE TUGS
+D230;D230;1110 116E 11AB;D230;1110 116E 11AB; # (툰; 툰; á„ᅮᆫ; 툰; á„ᅮᆫ; ) HANGUL SYLLABLE TUN
+D231;D231;1110 116E 11AC;D231;1110 116E 11AC; # (툱; 툱; á„ᅮᆬ; 툱; á„ᅮᆬ; ) HANGUL SYLLABLE TUNJ
+D232;D232;1110 116E 11AD;D232;1110 116E 11AD; # (툲; 툲; á„ᅮᆭ; 툲; á„ᅮᆭ; ) HANGUL SYLLABLE TUNH
+D233;D233;1110 116E 11AE;D233;1110 116E 11AE; # (툳; 툳; á„ᅮᆮ; 툳; á„ᅮᆮ; ) HANGUL SYLLABLE TUD
+D234;D234;1110 116E 11AF;D234;1110 116E 11AF; # (툴; 툴; á„ᅮᆯ; 툴; á„ᅮᆯ; ) HANGUL SYLLABLE TUL
+D235;D235;1110 116E 11B0;D235;1110 116E 11B0; # (툵; 툵; á„ᅮᆰ; 툵; á„ᅮᆰ; ) HANGUL SYLLABLE TULG
+D236;D236;1110 116E 11B1;D236;1110 116E 11B1; # (툶; 툶; á„ᅮᆱ; 툶; á„ᅮᆱ; ) HANGUL SYLLABLE TULM
+D237;D237;1110 116E 11B2;D237;1110 116E 11B2; # (툷; 툷; á„ᅮᆲ; 툷; á„ᅮᆲ; ) HANGUL SYLLABLE TULB
+D238;D238;1110 116E 11B3;D238;1110 116E 11B3; # (툸; 툸; á„ᅮᆳ; 툸; á„ᅮᆳ; ) HANGUL SYLLABLE TULS
+D239;D239;1110 116E 11B4;D239;1110 116E 11B4; # (툹; 툹; á„ᅮᆴ; 툹; á„ᅮᆴ; ) HANGUL SYLLABLE TULT
+D23A;D23A;1110 116E 11B5;D23A;1110 116E 11B5; # (툺; 툺; á„ᅮᆵ; 툺; á„ᅮᆵ; ) HANGUL SYLLABLE TULP
+D23B;D23B;1110 116E 11B6;D23B;1110 116E 11B6; # (툻; 툻; á„ᅮᆶ; 툻; á„ᅮᆶ; ) HANGUL SYLLABLE TULH
+D23C;D23C;1110 116E 11B7;D23C;1110 116E 11B7; # (툼; 툼; á„ᅮᆷ; 툼; á„ᅮᆷ; ) HANGUL SYLLABLE TUM
+D23D;D23D;1110 116E 11B8;D23D;1110 116E 11B8; # (툽; 툽; á„ᅮᆸ; 툽; á„ᅮᆸ; ) HANGUL SYLLABLE TUB
+D23E;D23E;1110 116E 11B9;D23E;1110 116E 11B9; # (툾; 툾; á„ᅮᆹ; 툾; á„ᅮᆹ; ) HANGUL SYLLABLE TUBS
+D23F;D23F;1110 116E 11BA;D23F;1110 116E 11BA; # (툿; 툿; á„ᅮᆺ; 툿; á„ᅮᆺ; ) HANGUL SYLLABLE TUS
+D240;D240;1110 116E 11BB;D240;1110 116E 11BB; # (퉀; 퉀; á„ᅮᆻ; 퉀; á„ᅮᆻ; ) HANGUL SYLLABLE TUSS
+D241;D241;1110 116E 11BC;D241;1110 116E 11BC; # (í‰; í‰; á„ᅮᆼ; í‰; á„ᅮᆼ; ) HANGUL SYLLABLE TUNG
+D242;D242;1110 116E 11BD;D242;1110 116E 11BD; # (퉂; 퉂; á„ᅮᆽ; 퉂; á„ᅮᆽ; ) HANGUL SYLLABLE TUJ
+D243;D243;1110 116E 11BE;D243;1110 116E 11BE; # (퉃; 퉃; á„ᅮᆾ; 퉃; á„ᅮᆾ; ) HANGUL SYLLABLE TUC
+D244;D244;1110 116E 11BF;D244;1110 116E 11BF; # (퉄; 퉄; á„ᅮᆿ; 퉄; á„ᅮᆿ; ) HANGUL SYLLABLE TUK
+D245;D245;1110 116E 11C0;D245;1110 116E 11C0; # (퉅; 퉅; á„ᅮᇀ; 퉅; á„ᅮᇀ; ) HANGUL SYLLABLE TUT
+D246;D246;1110 116E 11C1;D246;1110 116E 11C1; # (퉆; 퉆; á„á…®á‡; 퉆; á„á…®á‡; ) HANGUL SYLLABLE TUP
+D247;D247;1110 116E 11C2;D247;1110 116E 11C2; # (퉇; 퉇; á„ᅮᇂ; 퉇; á„ᅮᇂ; ) HANGUL SYLLABLE TUH
+D248;D248;1110 116F;D248;1110 116F; # (퉈; 퉈; á„á…¯; 퉈; á„á…¯; ) HANGUL SYLLABLE TWEO
+D249;D249;1110 116F 11A8;D249;1110 116F 11A8; # (퉉; 퉉; á„ᅯᆨ; 퉉; á„ᅯᆨ; ) HANGUL SYLLABLE TWEOG
+D24A;D24A;1110 116F 11A9;D24A;1110 116F 11A9; # (퉊; 퉊; á„ᅯᆩ; 퉊; á„ᅯᆩ; ) HANGUL SYLLABLE TWEOGG
+D24B;D24B;1110 116F 11AA;D24B;1110 116F 11AA; # (퉋; 퉋; á„ᅯᆪ; 퉋; á„ᅯᆪ; ) HANGUL SYLLABLE TWEOGS
+D24C;D24C;1110 116F 11AB;D24C;1110 116F 11AB; # (퉌; 퉌; á„ᅯᆫ; 퉌; á„ᅯᆫ; ) HANGUL SYLLABLE TWEON
+D24D;D24D;1110 116F 11AC;D24D;1110 116F 11AC; # (í‰; í‰; á„ᅯᆬ; í‰; á„ᅯᆬ; ) HANGUL SYLLABLE TWEONJ
+D24E;D24E;1110 116F 11AD;D24E;1110 116F 11AD; # (퉎; 퉎; á„ᅯᆭ; 퉎; á„ᅯᆭ; ) HANGUL SYLLABLE TWEONH
+D24F;D24F;1110 116F 11AE;D24F;1110 116F 11AE; # (í‰; í‰; á„ᅯᆮ; í‰; á„ᅯᆮ; ) HANGUL SYLLABLE TWEOD
+D250;D250;1110 116F 11AF;D250;1110 116F 11AF; # (í‰; í‰; á„ᅯᆯ; í‰; á„ᅯᆯ; ) HANGUL SYLLABLE TWEOL
+D251;D251;1110 116F 11B0;D251;1110 116F 11B0; # (퉑; 퉑; á„ᅯᆰ; 퉑; á„ᅯᆰ; ) HANGUL SYLLABLE TWEOLG
+D252;D252;1110 116F 11B1;D252;1110 116F 11B1; # (퉒; 퉒; á„ᅯᆱ; 퉒; á„ᅯᆱ; ) HANGUL SYLLABLE TWEOLM
+D253;D253;1110 116F 11B2;D253;1110 116F 11B2; # (퉓; 퉓; á„ᅯᆲ; 퉓; á„ᅯᆲ; ) HANGUL SYLLABLE TWEOLB
+D254;D254;1110 116F 11B3;D254;1110 116F 11B3; # (퉔; 퉔; á„ᅯᆳ; 퉔; á„ᅯᆳ; ) HANGUL SYLLABLE TWEOLS
+D255;D255;1110 116F 11B4;D255;1110 116F 11B4; # (퉕; 퉕; á„ᅯᆴ; 퉕; á„ᅯᆴ; ) HANGUL SYLLABLE TWEOLT
+D256;D256;1110 116F 11B5;D256;1110 116F 11B5; # (퉖; 퉖; á„ᅯᆵ; 퉖; á„ᅯᆵ; ) HANGUL SYLLABLE TWEOLP
+D257;D257;1110 116F 11B6;D257;1110 116F 11B6; # (퉗; 퉗; á„ᅯᆶ; 퉗; á„ᅯᆶ; ) HANGUL SYLLABLE TWEOLH
+D258;D258;1110 116F 11B7;D258;1110 116F 11B7; # (퉘; 퉘; á„ᅯᆷ; 퉘; á„ᅯᆷ; ) HANGUL SYLLABLE TWEOM
+D259;D259;1110 116F 11B8;D259;1110 116F 11B8; # (퉙; 퉙; á„ᅯᆸ; 퉙; á„ᅯᆸ; ) HANGUL SYLLABLE TWEOB
+D25A;D25A;1110 116F 11B9;D25A;1110 116F 11B9; # (퉚; 퉚; á„ᅯᆹ; 퉚; á„ᅯᆹ; ) HANGUL SYLLABLE TWEOBS
+D25B;D25B;1110 116F 11BA;D25B;1110 116F 11BA; # (퉛; 퉛; á„ᅯᆺ; 퉛; á„ᅯᆺ; ) HANGUL SYLLABLE TWEOS
+D25C;D25C;1110 116F 11BB;D25C;1110 116F 11BB; # (퉜; 퉜; á„ᅯᆻ; 퉜; á„ᅯᆻ; ) HANGUL SYLLABLE TWEOSS
+D25D;D25D;1110 116F 11BC;D25D;1110 116F 11BC; # (í‰; í‰; á„ᅯᆼ; í‰; á„ᅯᆼ; ) HANGUL SYLLABLE TWEONG
+D25E;D25E;1110 116F 11BD;D25E;1110 116F 11BD; # (퉞; 퉞; á„ᅯᆽ; 퉞; á„ᅯᆽ; ) HANGUL SYLLABLE TWEOJ
+D25F;D25F;1110 116F 11BE;D25F;1110 116F 11BE; # (퉟; 퉟; á„ᅯᆾ; 퉟; á„ᅯᆾ; ) HANGUL SYLLABLE TWEOC
+D260;D260;1110 116F 11BF;D260;1110 116F 11BF; # (퉠; 퉠; á„ᅯᆿ; 퉠; á„ᅯᆿ; ) HANGUL SYLLABLE TWEOK
+D261;D261;1110 116F 11C0;D261;1110 116F 11C0; # (퉡; 퉡; á„ᅯᇀ; 퉡; á„ᅯᇀ; ) HANGUL SYLLABLE TWEOT
+D262;D262;1110 116F 11C1;D262;1110 116F 11C1; # (퉢; 퉢; á„á…¯á‡; 퉢; á„á…¯á‡; ) HANGUL SYLLABLE TWEOP
+D263;D263;1110 116F 11C2;D263;1110 116F 11C2; # (퉣; 퉣; á„ᅯᇂ; 퉣; á„ᅯᇂ; ) HANGUL SYLLABLE TWEOH
+D264;D264;1110 1170;D264;1110 1170; # (퉤; 퉤; á„á…°; 퉤; á„á…°; ) HANGUL SYLLABLE TWE
+D265;D265;1110 1170 11A8;D265;1110 1170 11A8; # (퉥; 퉥; á„ᅰᆨ; 퉥; á„ᅰᆨ; ) HANGUL SYLLABLE TWEG
+D266;D266;1110 1170 11A9;D266;1110 1170 11A9; # (퉦; 퉦; á„ᅰᆩ; 퉦; á„ᅰᆩ; ) HANGUL SYLLABLE TWEGG
+D267;D267;1110 1170 11AA;D267;1110 1170 11AA; # (퉧; 퉧; á„ᅰᆪ; 퉧; á„ᅰᆪ; ) HANGUL SYLLABLE TWEGS
+D268;D268;1110 1170 11AB;D268;1110 1170 11AB; # (퉨; 퉨; á„ᅰᆫ; 퉨; á„ᅰᆫ; ) HANGUL SYLLABLE TWEN
+D269;D269;1110 1170 11AC;D269;1110 1170 11AC; # (퉩; 퉩; á„ᅰᆬ; 퉩; á„ᅰᆬ; ) HANGUL SYLLABLE TWENJ
+D26A;D26A;1110 1170 11AD;D26A;1110 1170 11AD; # (퉪; 퉪; á„ᅰᆭ; 퉪; á„ᅰᆭ; ) HANGUL SYLLABLE TWENH
+D26B;D26B;1110 1170 11AE;D26B;1110 1170 11AE; # (퉫; 퉫; á„ᅰᆮ; 퉫; á„ᅰᆮ; ) HANGUL SYLLABLE TWED
+D26C;D26C;1110 1170 11AF;D26C;1110 1170 11AF; # (퉬; 퉬; á„ᅰᆯ; 퉬; á„ᅰᆯ; ) HANGUL SYLLABLE TWEL
+D26D;D26D;1110 1170 11B0;D26D;1110 1170 11B0; # (퉭; 퉭; á„ᅰᆰ; 퉭; á„ᅰᆰ; ) HANGUL SYLLABLE TWELG
+D26E;D26E;1110 1170 11B1;D26E;1110 1170 11B1; # (퉮; 퉮; á„ᅰᆱ; 퉮; á„ᅰᆱ; ) HANGUL SYLLABLE TWELM
+D26F;D26F;1110 1170 11B2;D26F;1110 1170 11B2; # (퉯; 퉯; á„ᅰᆲ; 퉯; á„ᅰᆲ; ) HANGUL SYLLABLE TWELB
+D270;D270;1110 1170 11B3;D270;1110 1170 11B3; # (퉰; 퉰; á„ᅰᆳ; 퉰; á„ᅰᆳ; ) HANGUL SYLLABLE TWELS
+D271;D271;1110 1170 11B4;D271;1110 1170 11B4; # (퉱; 퉱; á„ᅰᆴ; 퉱; á„ᅰᆴ; ) HANGUL SYLLABLE TWELT
+D272;D272;1110 1170 11B5;D272;1110 1170 11B5; # (퉲; 퉲; á„ᅰᆵ; 퉲; á„ᅰᆵ; ) HANGUL SYLLABLE TWELP
+D273;D273;1110 1170 11B6;D273;1110 1170 11B6; # (퉳; 퉳; á„ᅰᆶ; 퉳; á„ᅰᆶ; ) HANGUL SYLLABLE TWELH
+D274;D274;1110 1170 11B7;D274;1110 1170 11B7; # (퉴; 퉴; á„ᅰᆷ; 퉴; á„ᅰᆷ; ) HANGUL SYLLABLE TWEM
+D275;D275;1110 1170 11B8;D275;1110 1170 11B8; # (퉵; 퉵; á„ᅰᆸ; 퉵; á„ᅰᆸ; ) HANGUL SYLLABLE TWEB
+D276;D276;1110 1170 11B9;D276;1110 1170 11B9; # (퉶; 퉶; á„ᅰᆹ; 퉶; á„ᅰᆹ; ) HANGUL SYLLABLE TWEBS
+D277;D277;1110 1170 11BA;D277;1110 1170 11BA; # (퉷; 퉷; á„ᅰᆺ; 퉷; á„ᅰᆺ; ) HANGUL SYLLABLE TWES
+D278;D278;1110 1170 11BB;D278;1110 1170 11BB; # (퉸; 퉸; á„ᅰᆻ; 퉸; á„ᅰᆻ; ) HANGUL SYLLABLE TWESS
+D279;D279;1110 1170 11BC;D279;1110 1170 11BC; # (퉹; 퉹; á„ᅰᆼ; 퉹; á„ᅰᆼ; ) HANGUL SYLLABLE TWENG
+D27A;D27A;1110 1170 11BD;D27A;1110 1170 11BD; # (퉺; 퉺; á„ᅰᆽ; 퉺; á„ᅰᆽ; ) HANGUL SYLLABLE TWEJ
+D27B;D27B;1110 1170 11BE;D27B;1110 1170 11BE; # (퉻; 퉻; á„ᅰᆾ; 퉻; á„ᅰᆾ; ) HANGUL SYLLABLE TWEC
+D27C;D27C;1110 1170 11BF;D27C;1110 1170 11BF; # (퉼; 퉼; á„ᅰᆿ; 퉼; á„ᅰᆿ; ) HANGUL SYLLABLE TWEK
+D27D;D27D;1110 1170 11C0;D27D;1110 1170 11C0; # (퉽; 퉽; á„ᅰᇀ; 퉽; á„ᅰᇀ; ) HANGUL SYLLABLE TWET
+D27E;D27E;1110 1170 11C1;D27E;1110 1170 11C1; # (퉾; 퉾; á„á…°á‡; 퉾; á„á…°á‡; ) HANGUL SYLLABLE TWEP
+D27F;D27F;1110 1170 11C2;D27F;1110 1170 11C2; # (퉿; 퉿; á„ᅰᇂ; 퉿; á„ᅰᇂ; ) HANGUL SYLLABLE TWEH
+D280;D280;1110 1171;D280;1110 1171; # (튀; 튀; á„á…±; 튀; á„á…±; ) HANGUL SYLLABLE TWI
+D281;D281;1110 1171 11A8;D281;1110 1171 11A8; # (íŠ; íŠ; á„ᅱᆨ; íŠ; á„ᅱᆨ; ) HANGUL SYLLABLE TWIG
+D282;D282;1110 1171 11A9;D282;1110 1171 11A9; # (튂; 튂; á„ᅱᆩ; 튂; á„ᅱᆩ; ) HANGUL SYLLABLE TWIGG
+D283;D283;1110 1171 11AA;D283;1110 1171 11AA; # (튃; 튃; á„ᅱᆪ; 튃; á„ᅱᆪ; ) HANGUL SYLLABLE TWIGS
+D284;D284;1110 1171 11AB;D284;1110 1171 11AB; # (튄; 튄; á„ᅱᆫ; 튄; á„ᅱᆫ; ) HANGUL SYLLABLE TWIN
+D285;D285;1110 1171 11AC;D285;1110 1171 11AC; # (튅; 튅; á„ᅱᆬ; 튅; á„ᅱᆬ; ) HANGUL SYLLABLE TWINJ
+D286;D286;1110 1171 11AD;D286;1110 1171 11AD; # (튆; 튆; á„ᅱᆭ; 튆; á„ᅱᆭ; ) HANGUL SYLLABLE TWINH
+D287;D287;1110 1171 11AE;D287;1110 1171 11AE; # (튇; 튇; á„ᅱᆮ; 튇; á„ᅱᆮ; ) HANGUL SYLLABLE TWID
+D288;D288;1110 1171 11AF;D288;1110 1171 11AF; # (튈; 튈; á„ᅱᆯ; 튈; á„ᅱᆯ; ) HANGUL SYLLABLE TWIL
+D289;D289;1110 1171 11B0;D289;1110 1171 11B0; # (튉; 튉; á„ᅱᆰ; 튉; á„ᅱᆰ; ) HANGUL SYLLABLE TWILG
+D28A;D28A;1110 1171 11B1;D28A;1110 1171 11B1; # (튊; 튊; á„ᅱᆱ; 튊; á„ᅱᆱ; ) HANGUL SYLLABLE TWILM
+D28B;D28B;1110 1171 11B2;D28B;1110 1171 11B2; # (튋; 튋; á„ᅱᆲ; 튋; á„ᅱᆲ; ) HANGUL SYLLABLE TWILB
+D28C;D28C;1110 1171 11B3;D28C;1110 1171 11B3; # (튌; 튌; á„ᅱᆳ; 튌; á„ᅱᆳ; ) HANGUL SYLLABLE TWILS
+D28D;D28D;1110 1171 11B4;D28D;1110 1171 11B4; # (íŠ; íŠ; á„ᅱᆴ; íŠ; á„ᅱᆴ; ) HANGUL SYLLABLE TWILT
+D28E;D28E;1110 1171 11B5;D28E;1110 1171 11B5; # (튎; 튎; á„ᅱᆵ; 튎; á„ᅱᆵ; ) HANGUL SYLLABLE TWILP
+D28F;D28F;1110 1171 11B6;D28F;1110 1171 11B6; # (íŠ; íŠ; á„ᅱᆶ; íŠ; á„ᅱᆶ; ) HANGUL SYLLABLE TWILH
+D290;D290;1110 1171 11B7;D290;1110 1171 11B7; # (íŠ; íŠ; á„ᅱᆷ; íŠ; á„ᅱᆷ; ) HANGUL SYLLABLE TWIM
+D291;D291;1110 1171 11B8;D291;1110 1171 11B8; # (튑; 튑; á„ᅱᆸ; 튑; á„ᅱᆸ; ) HANGUL SYLLABLE TWIB
+D292;D292;1110 1171 11B9;D292;1110 1171 11B9; # (튒; 튒; á„ᅱᆹ; 튒; á„ᅱᆹ; ) HANGUL SYLLABLE TWIBS
+D293;D293;1110 1171 11BA;D293;1110 1171 11BA; # (튓; 튓; á„ᅱᆺ; 튓; á„ᅱᆺ; ) HANGUL SYLLABLE TWIS
+D294;D294;1110 1171 11BB;D294;1110 1171 11BB; # (튔; 튔; á„ᅱᆻ; 튔; á„ᅱᆻ; ) HANGUL SYLLABLE TWISS
+D295;D295;1110 1171 11BC;D295;1110 1171 11BC; # (튕; 튕; á„ᅱᆼ; 튕; á„ᅱᆼ; ) HANGUL SYLLABLE TWING
+D296;D296;1110 1171 11BD;D296;1110 1171 11BD; # (튖; 튖; á„ᅱᆽ; 튖; á„ᅱᆽ; ) HANGUL SYLLABLE TWIJ
+D297;D297;1110 1171 11BE;D297;1110 1171 11BE; # (튗; 튗; á„ᅱᆾ; 튗; á„ᅱᆾ; ) HANGUL SYLLABLE TWIC
+D298;D298;1110 1171 11BF;D298;1110 1171 11BF; # (튘; 튘; á„ᅱᆿ; 튘; á„ᅱᆿ; ) HANGUL SYLLABLE TWIK
+D299;D299;1110 1171 11C0;D299;1110 1171 11C0; # (튙; 튙; á„ᅱᇀ; 튙; á„ᅱᇀ; ) HANGUL SYLLABLE TWIT
+D29A;D29A;1110 1171 11C1;D29A;1110 1171 11C1; # (튚; 튚; á„á…±á‡; 튚; á„á…±á‡; ) HANGUL SYLLABLE TWIP
+D29B;D29B;1110 1171 11C2;D29B;1110 1171 11C2; # (튛; 튛; á„ᅱᇂ; 튛; á„ᅱᇂ; ) HANGUL SYLLABLE TWIH
+D29C;D29C;1110 1172;D29C;1110 1172; # (튜; 튜; á„á…²; 튜; á„á…²; ) HANGUL SYLLABLE TYU
+D29D;D29D;1110 1172 11A8;D29D;1110 1172 11A8; # (íŠ; íŠ; á„ᅲᆨ; íŠ; á„ᅲᆨ; ) HANGUL SYLLABLE TYUG
+D29E;D29E;1110 1172 11A9;D29E;1110 1172 11A9; # (튞; 튞; á„ᅲᆩ; 튞; á„ᅲᆩ; ) HANGUL SYLLABLE TYUGG
+D29F;D29F;1110 1172 11AA;D29F;1110 1172 11AA; # (튟; 튟; á„ᅲᆪ; 튟; á„ᅲᆪ; ) HANGUL SYLLABLE TYUGS
+D2A0;D2A0;1110 1172 11AB;D2A0;1110 1172 11AB; # (튠; 튠; á„ᅲᆫ; 튠; á„ᅲᆫ; ) HANGUL SYLLABLE TYUN
+D2A1;D2A1;1110 1172 11AC;D2A1;1110 1172 11AC; # (튡; 튡; á„ᅲᆬ; 튡; á„ᅲᆬ; ) HANGUL SYLLABLE TYUNJ
+D2A2;D2A2;1110 1172 11AD;D2A2;1110 1172 11AD; # (튢; 튢; á„ᅲᆭ; 튢; á„ᅲᆭ; ) HANGUL SYLLABLE TYUNH
+D2A3;D2A3;1110 1172 11AE;D2A3;1110 1172 11AE; # (튣; 튣; á„ᅲᆮ; 튣; á„ᅲᆮ; ) HANGUL SYLLABLE TYUD
+D2A4;D2A4;1110 1172 11AF;D2A4;1110 1172 11AF; # (튤; 튤; á„ᅲᆯ; 튤; á„ᅲᆯ; ) HANGUL SYLLABLE TYUL
+D2A5;D2A5;1110 1172 11B0;D2A5;1110 1172 11B0; # (튥; 튥; á„ᅲᆰ; 튥; á„ᅲᆰ; ) HANGUL SYLLABLE TYULG
+D2A6;D2A6;1110 1172 11B1;D2A6;1110 1172 11B1; # (튦; 튦; á„ᅲᆱ; 튦; á„ᅲᆱ; ) HANGUL SYLLABLE TYULM
+D2A7;D2A7;1110 1172 11B2;D2A7;1110 1172 11B2; # (튧; 튧; á„ᅲᆲ; 튧; á„ᅲᆲ; ) HANGUL SYLLABLE TYULB
+D2A8;D2A8;1110 1172 11B3;D2A8;1110 1172 11B3; # (튨; 튨; á„ᅲᆳ; 튨; á„ᅲᆳ; ) HANGUL SYLLABLE TYULS
+D2A9;D2A9;1110 1172 11B4;D2A9;1110 1172 11B4; # (튩; 튩; á„ᅲᆴ; 튩; á„ᅲᆴ; ) HANGUL SYLLABLE TYULT
+D2AA;D2AA;1110 1172 11B5;D2AA;1110 1172 11B5; # (튪; 튪; á„ᅲᆵ; 튪; á„ᅲᆵ; ) HANGUL SYLLABLE TYULP
+D2AB;D2AB;1110 1172 11B6;D2AB;1110 1172 11B6; # (튫; 튫; á„ᅲᆶ; 튫; á„ᅲᆶ; ) HANGUL SYLLABLE TYULH
+D2AC;D2AC;1110 1172 11B7;D2AC;1110 1172 11B7; # (튬; 튬; á„ᅲᆷ; 튬; á„ᅲᆷ; ) HANGUL SYLLABLE TYUM
+D2AD;D2AD;1110 1172 11B8;D2AD;1110 1172 11B8; # (튭; 튭; á„ᅲᆸ; 튭; á„ᅲᆸ; ) HANGUL SYLLABLE TYUB
+D2AE;D2AE;1110 1172 11B9;D2AE;1110 1172 11B9; # (튮; 튮; á„ᅲᆹ; 튮; á„ᅲᆹ; ) HANGUL SYLLABLE TYUBS
+D2AF;D2AF;1110 1172 11BA;D2AF;1110 1172 11BA; # (튯; 튯; á„ᅲᆺ; 튯; á„ᅲᆺ; ) HANGUL SYLLABLE TYUS
+D2B0;D2B0;1110 1172 11BB;D2B0;1110 1172 11BB; # (튰; 튰; á„ᅲᆻ; 튰; á„ᅲᆻ; ) HANGUL SYLLABLE TYUSS
+D2B1;D2B1;1110 1172 11BC;D2B1;1110 1172 11BC; # (튱; 튱; á„ᅲᆼ; 튱; á„ᅲᆼ; ) HANGUL SYLLABLE TYUNG
+D2B2;D2B2;1110 1172 11BD;D2B2;1110 1172 11BD; # (튲; 튲; á„ᅲᆽ; 튲; á„ᅲᆽ; ) HANGUL SYLLABLE TYUJ
+D2B3;D2B3;1110 1172 11BE;D2B3;1110 1172 11BE; # (튳; 튳; á„ᅲᆾ; 튳; á„ᅲᆾ; ) HANGUL SYLLABLE TYUC
+D2B4;D2B4;1110 1172 11BF;D2B4;1110 1172 11BF; # (튴; 튴; á„ᅲᆿ; 튴; á„ᅲᆿ; ) HANGUL SYLLABLE TYUK
+D2B5;D2B5;1110 1172 11C0;D2B5;1110 1172 11C0; # (튵; 튵; á„ᅲᇀ; 튵; á„ᅲᇀ; ) HANGUL SYLLABLE TYUT
+D2B6;D2B6;1110 1172 11C1;D2B6;1110 1172 11C1; # (튶; 튶; á„á…²á‡; 튶; á„á…²á‡; ) HANGUL SYLLABLE TYUP
+D2B7;D2B7;1110 1172 11C2;D2B7;1110 1172 11C2; # (튷; 튷; á„ᅲᇂ; 튷; á„ᅲᇂ; ) HANGUL SYLLABLE TYUH
+D2B8;D2B8;1110 1173;D2B8;1110 1173; # (트; 트; á„á…³; 트; á„á…³; ) HANGUL SYLLABLE TEU
+D2B9;D2B9;1110 1173 11A8;D2B9;1110 1173 11A8; # (특; 특; á„ᅳᆨ; 특; á„ᅳᆨ; ) HANGUL SYLLABLE TEUG
+D2BA;D2BA;1110 1173 11A9;D2BA;1110 1173 11A9; # (튺; 튺; á„ᅳᆩ; 튺; á„ᅳᆩ; ) HANGUL SYLLABLE TEUGG
+D2BB;D2BB;1110 1173 11AA;D2BB;1110 1173 11AA; # (튻; 튻; á„ᅳᆪ; 튻; á„ᅳᆪ; ) HANGUL SYLLABLE TEUGS
+D2BC;D2BC;1110 1173 11AB;D2BC;1110 1173 11AB; # (튼; 튼; á„ᅳᆫ; 튼; á„ᅳᆫ; ) HANGUL SYLLABLE TEUN
+D2BD;D2BD;1110 1173 11AC;D2BD;1110 1173 11AC; # (튽; 튽; á„ᅳᆬ; 튽; á„ᅳᆬ; ) HANGUL SYLLABLE TEUNJ
+D2BE;D2BE;1110 1173 11AD;D2BE;1110 1173 11AD; # (튾; 튾; á„ᅳᆭ; 튾; á„ᅳᆭ; ) HANGUL SYLLABLE TEUNH
+D2BF;D2BF;1110 1173 11AE;D2BF;1110 1173 11AE; # (튿; 튿; á„ᅳᆮ; 튿; á„ᅳᆮ; ) HANGUL SYLLABLE TEUD
+D2C0;D2C0;1110 1173 11AF;D2C0;1110 1173 11AF; # (í‹€; í‹€; á„ᅳᆯ; í‹€; á„ᅳᆯ; ) HANGUL SYLLABLE TEUL
+D2C1;D2C1;1110 1173 11B0;D2C1;1110 1173 11B0; # (í‹; í‹; á„ᅳᆰ; í‹; á„ᅳᆰ; ) HANGUL SYLLABLE TEULG
+D2C2;D2C2;1110 1173 11B1;D2C2;1110 1173 11B1; # (í‹‚; í‹‚; á„ᅳᆱ; í‹‚; á„ᅳᆱ; ) HANGUL SYLLABLE TEULM
+D2C3;D2C3;1110 1173 11B2;D2C3;1110 1173 11B2; # (틃; 틃; á„ᅳᆲ; 틃; á„ᅳᆲ; ) HANGUL SYLLABLE TEULB
+D2C4;D2C4;1110 1173 11B3;D2C4;1110 1173 11B3; # (í‹„; í‹„; á„ᅳᆳ; í‹„; á„ᅳᆳ; ) HANGUL SYLLABLE TEULS
+D2C5;D2C5;1110 1173 11B4;D2C5;1110 1173 11B4; # (í‹…; í‹…; á„ᅳᆴ; í‹…; á„ᅳᆴ; ) HANGUL SYLLABLE TEULT
+D2C6;D2C6;1110 1173 11B5;D2C6;1110 1173 11B5; # (틆; 틆; á„ᅳᆵ; 틆; á„ᅳᆵ; ) HANGUL SYLLABLE TEULP
+D2C7;D2C7;1110 1173 11B6;D2C7;1110 1173 11B6; # (틇; 틇; á„ᅳᆶ; 틇; á„ᅳᆶ; ) HANGUL SYLLABLE TEULH
+D2C8;D2C8;1110 1173 11B7;D2C8;1110 1173 11B7; # (틈; 틈; á„ᅳᆷ; 틈; á„ᅳᆷ; ) HANGUL SYLLABLE TEUM
+D2C9;D2C9;1110 1173 11B8;D2C9;1110 1173 11B8; # (틉; 틉; á„ᅳᆸ; 틉; á„ᅳᆸ; ) HANGUL SYLLABLE TEUB
+D2CA;D2CA;1110 1173 11B9;D2CA;1110 1173 11B9; # (í‹Š; í‹Š; á„ᅳᆹ; í‹Š; á„ᅳᆹ; ) HANGUL SYLLABLE TEUBS
+D2CB;D2CB;1110 1173 11BA;D2CB;1110 1173 11BA; # (í‹‹; í‹‹; á„ᅳᆺ; í‹‹; á„ᅳᆺ; ) HANGUL SYLLABLE TEUS
+D2CC;D2CC;1110 1173 11BB;D2CC;1110 1173 11BB; # (í‹Œ; í‹Œ; á„ᅳᆻ; í‹Œ; á„ᅳᆻ; ) HANGUL SYLLABLE TEUSS
+D2CD;D2CD;1110 1173 11BC;D2CD;1110 1173 11BC; # (í‹; í‹; á„ᅳᆼ; í‹; á„ᅳᆼ; ) HANGUL SYLLABLE TEUNG
+D2CE;D2CE;1110 1173 11BD;D2CE;1110 1173 11BD; # (í‹Ž; í‹Ž; á„ᅳᆽ; í‹Ž; á„ᅳᆽ; ) HANGUL SYLLABLE TEUJ
+D2CF;D2CF;1110 1173 11BE;D2CF;1110 1173 11BE; # (í‹; í‹; á„ᅳᆾ; í‹; á„ᅳᆾ; ) HANGUL SYLLABLE TEUC
+D2D0;D2D0;1110 1173 11BF;D2D0;1110 1173 11BF; # (í‹; í‹; á„ᅳᆿ; í‹; á„ᅳᆿ; ) HANGUL SYLLABLE TEUK
+D2D1;D2D1;1110 1173 11C0;D2D1;1110 1173 11C0; # (í‹‘; í‹‘; á„ᅳᇀ; í‹‘; á„ᅳᇀ; ) HANGUL SYLLABLE TEUT
+D2D2;D2D2;1110 1173 11C1;D2D2;1110 1173 11C1; # (í‹’; í‹’; á„á…³á‡; í‹’; á„á…³á‡; ) HANGUL SYLLABLE TEUP
+D2D3;D2D3;1110 1173 11C2;D2D3;1110 1173 11C2; # (í‹“; í‹“; á„ᅳᇂ; í‹“; á„ᅳᇂ; ) HANGUL SYLLABLE TEUH
+D2D4;D2D4;1110 1174;D2D4;1110 1174; # (í‹”; í‹”; á„á…´; í‹”; á„á…´; ) HANGUL SYLLABLE TYI
+D2D5;D2D5;1110 1174 11A8;D2D5;1110 1174 11A8; # (í‹•; í‹•; á„ᅴᆨ; í‹•; á„ᅴᆨ; ) HANGUL SYLLABLE TYIG
+D2D6;D2D6;1110 1174 11A9;D2D6;1110 1174 11A9; # (í‹–; í‹–; á„ᅴᆩ; í‹–; á„ᅴᆩ; ) HANGUL SYLLABLE TYIGG
+D2D7;D2D7;1110 1174 11AA;D2D7;1110 1174 11AA; # (í‹—; í‹—; á„ᅴᆪ; í‹—; á„ᅴᆪ; ) HANGUL SYLLABLE TYIGS
+D2D8;D2D8;1110 1174 11AB;D2D8;1110 1174 11AB; # (틘; 틘; á„ᅴᆫ; 틘; á„ᅴᆫ; ) HANGUL SYLLABLE TYIN
+D2D9;D2D9;1110 1174 11AC;D2D9;1110 1174 11AC; # (í‹™; í‹™; á„ᅴᆬ; í‹™; á„ᅴᆬ; ) HANGUL SYLLABLE TYINJ
+D2DA;D2DA;1110 1174 11AD;D2DA;1110 1174 11AD; # (í‹š; í‹š; á„ᅴᆭ; í‹š; á„ᅴᆭ; ) HANGUL SYLLABLE TYINH
+D2DB;D2DB;1110 1174 11AE;D2DB;1110 1174 11AE; # (í‹›; í‹›; á„ᅴᆮ; í‹›; á„ᅴᆮ; ) HANGUL SYLLABLE TYID
+D2DC;D2DC;1110 1174 11AF;D2DC;1110 1174 11AF; # (í‹œ; í‹œ; á„ᅴᆯ; í‹œ; á„ᅴᆯ; ) HANGUL SYLLABLE TYIL
+D2DD;D2DD;1110 1174 11B0;D2DD;1110 1174 11B0; # (í‹; í‹; á„ᅴᆰ; í‹; á„ᅴᆰ; ) HANGUL SYLLABLE TYILG
+D2DE;D2DE;1110 1174 11B1;D2DE;1110 1174 11B1; # (í‹ž; í‹ž; á„ᅴᆱ; í‹ž; á„ᅴᆱ; ) HANGUL SYLLABLE TYILM
+D2DF;D2DF;1110 1174 11B2;D2DF;1110 1174 11B2; # (í‹Ÿ; í‹Ÿ; á„ᅴᆲ; í‹Ÿ; á„ᅴᆲ; ) HANGUL SYLLABLE TYILB
+D2E0;D2E0;1110 1174 11B3;D2E0;1110 1174 11B3; # (í‹ ; í‹ ; á„ᅴᆳ; í‹ ; á„ᅴᆳ; ) HANGUL SYLLABLE TYILS
+D2E1;D2E1;1110 1174 11B4;D2E1;1110 1174 11B4; # (í‹¡; í‹¡; á„ᅴᆴ; í‹¡; á„ᅴᆴ; ) HANGUL SYLLABLE TYILT
+D2E2;D2E2;1110 1174 11B5;D2E2;1110 1174 11B5; # (í‹¢; í‹¢; á„ᅴᆵ; í‹¢; á„ᅴᆵ; ) HANGUL SYLLABLE TYILP
+D2E3;D2E3;1110 1174 11B6;D2E3;1110 1174 11B6; # (í‹£; í‹£; á„ᅴᆶ; í‹£; á„ᅴᆶ; ) HANGUL SYLLABLE TYILH
+D2E4;D2E4;1110 1174 11B7;D2E4;1110 1174 11B7; # (틤; 틤; á„ᅴᆷ; 틤; á„ᅴᆷ; ) HANGUL SYLLABLE TYIM
+D2E5;D2E5;1110 1174 11B8;D2E5;1110 1174 11B8; # (í‹¥; í‹¥; á„ᅴᆸ; í‹¥; á„ᅴᆸ; ) HANGUL SYLLABLE TYIB
+D2E6;D2E6;1110 1174 11B9;D2E6;1110 1174 11B9; # (틦; 틦; á„ᅴᆹ; 틦; á„ᅴᆹ; ) HANGUL SYLLABLE TYIBS
+D2E7;D2E7;1110 1174 11BA;D2E7;1110 1174 11BA; # (틧; 틧; á„ᅴᆺ; 틧; á„ᅴᆺ; ) HANGUL SYLLABLE TYIS
+D2E8;D2E8;1110 1174 11BB;D2E8;1110 1174 11BB; # (틨; 틨; á„ᅴᆻ; 틨; á„ᅴᆻ; ) HANGUL SYLLABLE TYISS
+D2E9;D2E9;1110 1174 11BC;D2E9;1110 1174 11BC; # (í‹©; í‹©; á„ᅴᆼ; í‹©; á„ᅴᆼ; ) HANGUL SYLLABLE TYING
+D2EA;D2EA;1110 1174 11BD;D2EA;1110 1174 11BD; # (틪; 틪; á„ᅴᆽ; 틪; á„ᅴᆽ; ) HANGUL SYLLABLE TYIJ
+D2EB;D2EB;1110 1174 11BE;D2EB;1110 1174 11BE; # (í‹«; í‹«; á„ᅴᆾ; í‹«; á„ᅴᆾ; ) HANGUL SYLLABLE TYIC
+D2EC;D2EC;1110 1174 11BF;D2EC;1110 1174 11BF; # (틬; 틬; á„ᅴᆿ; 틬; á„ᅴᆿ; ) HANGUL SYLLABLE TYIK
+D2ED;D2ED;1110 1174 11C0;D2ED;1110 1174 11C0; # (í‹­; í‹­; á„ᅴᇀ; í‹­; á„ᅴᇀ; ) HANGUL SYLLABLE TYIT
+D2EE;D2EE;1110 1174 11C1;D2EE;1110 1174 11C1; # (í‹®; í‹®; á„á…´á‡; í‹®; á„á…´á‡; ) HANGUL SYLLABLE TYIP
+D2EF;D2EF;1110 1174 11C2;D2EF;1110 1174 11C2; # (틯; 틯; á„ᅴᇂ; 틯; á„ᅴᇂ; ) HANGUL SYLLABLE TYIH
+D2F0;D2F0;1110 1175;D2F0;1110 1175; # (í‹°; í‹°; á„á…µ; í‹°; á„á…µ; ) HANGUL SYLLABLE TI
+D2F1;D2F1;1110 1175 11A8;D2F1;1110 1175 11A8; # (틱; 틱; á„ᅵᆨ; 틱; á„ᅵᆨ; ) HANGUL SYLLABLE TIG
+D2F2;D2F2;1110 1175 11A9;D2F2;1110 1175 11A9; # (틲; 틲; á„ᅵᆩ; 틲; á„ᅵᆩ; ) HANGUL SYLLABLE TIGG
+D2F3;D2F3;1110 1175 11AA;D2F3;1110 1175 11AA; # (틳; 틳; á„ᅵᆪ; 틳; á„ᅵᆪ; ) HANGUL SYLLABLE TIGS
+D2F4;D2F4;1110 1175 11AB;D2F4;1110 1175 11AB; # (í‹´; í‹´; á„ᅵᆫ; í‹´; á„ᅵᆫ; ) HANGUL SYLLABLE TIN
+D2F5;D2F5;1110 1175 11AC;D2F5;1110 1175 11AC; # (틵; 틵; á„ᅵᆬ; 틵; á„ᅵᆬ; ) HANGUL SYLLABLE TINJ
+D2F6;D2F6;1110 1175 11AD;D2F6;1110 1175 11AD; # (틶; 틶; á„ᅵᆭ; 틶; á„ᅵᆭ; ) HANGUL SYLLABLE TINH
+D2F7;D2F7;1110 1175 11AE;D2F7;1110 1175 11AE; # (í‹·; í‹·; á„ᅵᆮ; í‹·; á„ᅵᆮ; ) HANGUL SYLLABLE TID
+D2F8;D2F8;1110 1175 11AF;D2F8;1110 1175 11AF; # (틸; 틸; á„ᅵᆯ; 틸; á„ᅵᆯ; ) HANGUL SYLLABLE TIL
+D2F9;D2F9;1110 1175 11B0;D2F9;1110 1175 11B0; # (틹; 틹; á„ᅵᆰ; 틹; á„ᅵᆰ; ) HANGUL SYLLABLE TILG
+D2FA;D2FA;1110 1175 11B1;D2FA;1110 1175 11B1; # (틺; 틺; á„ᅵᆱ; 틺; á„ᅵᆱ; ) HANGUL SYLLABLE TILM
+D2FB;D2FB;1110 1175 11B2;D2FB;1110 1175 11B2; # (í‹»; í‹»; á„ᅵᆲ; í‹»; á„ᅵᆲ; ) HANGUL SYLLABLE TILB
+D2FC;D2FC;1110 1175 11B3;D2FC;1110 1175 11B3; # (틼; 틼; á„ᅵᆳ; 틼; á„ᅵᆳ; ) HANGUL SYLLABLE TILS
+D2FD;D2FD;1110 1175 11B4;D2FD;1110 1175 11B4; # (틽; 틽; á„ᅵᆴ; 틽; á„ᅵᆴ; ) HANGUL SYLLABLE TILT
+D2FE;D2FE;1110 1175 11B5;D2FE;1110 1175 11B5; # (틾; 틾; á„ᅵᆵ; 틾; á„ᅵᆵ; ) HANGUL SYLLABLE TILP
+D2FF;D2FF;1110 1175 11B6;D2FF;1110 1175 11B6; # (í‹¿; í‹¿; á„ᅵᆶ; í‹¿; á„ᅵᆶ; ) HANGUL SYLLABLE TILH
+D300;D300;1110 1175 11B7;D300;1110 1175 11B7; # (팀; 팀; á„ᅵᆷ; 팀; á„ᅵᆷ; ) HANGUL SYLLABLE TIM
+D301;D301;1110 1175 11B8;D301;1110 1175 11B8; # (íŒ; íŒ; á„ᅵᆸ; íŒ; á„ᅵᆸ; ) HANGUL SYLLABLE TIB
+D302;D302;1110 1175 11B9;D302;1110 1175 11B9; # (팂; 팂; á„ᅵᆹ; 팂; á„ᅵᆹ; ) HANGUL SYLLABLE TIBS
+D303;D303;1110 1175 11BA;D303;1110 1175 11BA; # (팃; 팃; á„ᅵᆺ; 팃; á„ᅵᆺ; ) HANGUL SYLLABLE TIS
+D304;D304;1110 1175 11BB;D304;1110 1175 11BB; # (팄; 팄; á„ᅵᆻ; 팄; á„ᅵᆻ; ) HANGUL SYLLABLE TISS
+D305;D305;1110 1175 11BC;D305;1110 1175 11BC; # (팅; 팅; á„ᅵᆼ; 팅; á„ᅵᆼ; ) HANGUL SYLLABLE TING
+D306;D306;1110 1175 11BD;D306;1110 1175 11BD; # (팆; 팆; á„ᅵᆽ; 팆; á„ᅵᆽ; ) HANGUL SYLLABLE TIJ
+D307;D307;1110 1175 11BE;D307;1110 1175 11BE; # (팇; 팇; á„ᅵᆾ; 팇; á„ᅵᆾ; ) HANGUL SYLLABLE TIC
+D308;D308;1110 1175 11BF;D308;1110 1175 11BF; # (팈; 팈; á„ᅵᆿ; 팈; á„ᅵᆿ; ) HANGUL SYLLABLE TIK
+D309;D309;1110 1175 11C0;D309;1110 1175 11C0; # (팉; 팉; á„ᅵᇀ; 팉; á„ᅵᇀ; ) HANGUL SYLLABLE TIT
+D30A;D30A;1110 1175 11C1;D30A;1110 1175 11C1; # (팊; 팊; á„á…µá‡; 팊; á„á…µá‡; ) HANGUL SYLLABLE TIP
+D30B;D30B;1110 1175 11C2;D30B;1110 1175 11C2; # (팋; 팋; á„ᅵᇂ; 팋; á„ᅵᇂ; ) HANGUL SYLLABLE TIH
+D30C;D30C;1111 1161;D30C;1111 1161; # (파; 파; 파; 파; 파; ) HANGUL SYLLABLE PA
+D30D;D30D;1111 1161 11A8;D30D;1111 1161 11A8; # (íŒ; íŒ; 팍; íŒ; 팍; ) HANGUL SYLLABLE PAG
+D30E;D30E;1111 1161 11A9;D30E;1111 1161 11A9; # (팎; 팎; 팎; 팎; 팎; ) HANGUL SYLLABLE PAGG
+D30F;D30F;1111 1161 11AA;D30F;1111 1161 11AA; # (íŒ; íŒ; 팏; íŒ; 팏; ) HANGUL SYLLABLE PAGS
+D310;D310;1111 1161 11AB;D310;1111 1161 11AB; # (íŒ; íŒ; 판; íŒ; 판; ) HANGUL SYLLABLE PAN
+D311;D311;1111 1161 11AC;D311;1111 1161 11AC; # (팑; 팑; 팑; 팑; 팑; ) HANGUL SYLLABLE PANJ
+D312;D312;1111 1161 11AD;D312;1111 1161 11AD; # (팒; 팒; 팒; 팒; 팒; ) HANGUL SYLLABLE PANH
+D313;D313;1111 1161 11AE;D313;1111 1161 11AE; # (팓; 팓; 팓; 팓; 팓; ) HANGUL SYLLABLE PAD
+D314;D314;1111 1161 11AF;D314;1111 1161 11AF; # (팔; 팔; 팔; 팔; 팔; ) HANGUL SYLLABLE PAL
+D315;D315;1111 1161 11B0;D315;1111 1161 11B0; # (팕; 팕; 팕; 팕; 팕; ) HANGUL SYLLABLE PALG
+D316;D316;1111 1161 11B1;D316;1111 1161 11B1; # (팖; 팖; 팖; 팖; 팖; ) HANGUL SYLLABLE PALM
+D317;D317;1111 1161 11B2;D317;1111 1161 11B2; # (팗; 팗; 팗; 팗; 팗; ) HANGUL SYLLABLE PALB
+D318;D318;1111 1161 11B3;D318;1111 1161 11B3; # (팘; 팘; 팘; 팘; 팘; ) HANGUL SYLLABLE PALS
+D319;D319;1111 1161 11B4;D319;1111 1161 11B4; # (팙; 팙; 팙; 팙; 팙; ) HANGUL SYLLABLE PALT
+D31A;D31A;1111 1161 11B5;D31A;1111 1161 11B5; # (팚; 팚; 팚; 팚; 팚; ) HANGUL SYLLABLE PALP
+D31B;D31B;1111 1161 11B6;D31B;1111 1161 11B6; # (팛; 팛; 팛; 팛; 팛; ) HANGUL SYLLABLE PALH
+D31C;D31C;1111 1161 11B7;D31C;1111 1161 11B7; # (팜; 팜; 팜; 팜; 팜; ) HANGUL SYLLABLE PAM
+D31D;D31D;1111 1161 11B8;D31D;1111 1161 11B8; # (íŒ; íŒ; 팝; íŒ; 팝; ) HANGUL SYLLABLE PAB
+D31E;D31E;1111 1161 11B9;D31E;1111 1161 11B9; # (팞; 팞; 팞; 팞; 팞; ) HANGUL SYLLABLE PABS
+D31F;D31F;1111 1161 11BA;D31F;1111 1161 11BA; # (팟; 팟; 팟; 팟; 팟; ) HANGUL SYLLABLE PAS
+D320;D320;1111 1161 11BB;D320;1111 1161 11BB; # (팠; 팠; 팠; 팠; 팠; ) HANGUL SYLLABLE PASS
+D321;D321;1111 1161 11BC;D321;1111 1161 11BC; # (팡; 팡; 팡; 팡; 팡; ) HANGUL SYLLABLE PANG
+D322;D322;1111 1161 11BD;D322;1111 1161 11BD; # (팢; 팢; 팢; 팢; 팢; ) HANGUL SYLLABLE PAJ
+D323;D323;1111 1161 11BE;D323;1111 1161 11BE; # (팣; 팣; 팣; 팣; 팣; ) HANGUL SYLLABLE PAC
+D324;D324;1111 1161 11BF;D324;1111 1161 11BF; # (팤; 팤; 팤; 팤; 팤; ) HANGUL SYLLABLE PAK
+D325;D325;1111 1161 11C0;D325;1111 1161 11C0; # (팥; 팥; 팥; 팥; 팥; ) HANGUL SYLLABLE PAT
+D326;D326;1111 1161 11C1;D326;1111 1161 11C1; # (팦; 팦; á„‘á…¡á‡; 팦; á„‘á…¡á‡; ) HANGUL SYLLABLE PAP
+D327;D327;1111 1161 11C2;D327;1111 1161 11C2; # (팧; 팧; 팧; 팧; 팧; ) HANGUL SYLLABLE PAH
+D328;D328;1111 1162;D328;1111 1162; # (패; 패; 패; 패; 패; ) HANGUL SYLLABLE PAE
+D329;D329;1111 1162 11A8;D329;1111 1162 11A8; # (팩; 팩; 팩; 팩; 팩; ) HANGUL SYLLABLE PAEG
+D32A;D32A;1111 1162 11A9;D32A;1111 1162 11A9; # (팪; 팪; 팪; 팪; 팪; ) HANGUL SYLLABLE PAEGG
+D32B;D32B;1111 1162 11AA;D32B;1111 1162 11AA; # (팫; 팫; 팫; 팫; 팫; ) HANGUL SYLLABLE PAEGS
+D32C;D32C;1111 1162 11AB;D32C;1111 1162 11AB; # (팬; 팬; 팬; 팬; 팬; ) HANGUL SYLLABLE PAEN
+D32D;D32D;1111 1162 11AC;D32D;1111 1162 11AC; # (팭; 팭; 팭; 팭; 팭; ) HANGUL SYLLABLE PAENJ
+D32E;D32E;1111 1162 11AD;D32E;1111 1162 11AD; # (팮; 팮; 팮; 팮; 팮; ) HANGUL SYLLABLE PAENH
+D32F;D32F;1111 1162 11AE;D32F;1111 1162 11AE; # (팯; 팯; 팯; 팯; 팯; ) HANGUL SYLLABLE PAED
+D330;D330;1111 1162 11AF;D330;1111 1162 11AF; # (팰; 팰; 팰; 팰; 팰; ) HANGUL SYLLABLE PAEL
+D331;D331;1111 1162 11B0;D331;1111 1162 11B0; # (팱; 팱; 팱; 팱; 팱; ) HANGUL SYLLABLE PAELG
+D332;D332;1111 1162 11B1;D332;1111 1162 11B1; # (팲; 팲; 팲; 팲; 팲; ) HANGUL SYLLABLE PAELM
+D333;D333;1111 1162 11B2;D333;1111 1162 11B2; # (팳; 팳; 팳; 팳; 팳; ) HANGUL SYLLABLE PAELB
+D334;D334;1111 1162 11B3;D334;1111 1162 11B3; # (팴; 팴; 팴; 팴; 팴; ) HANGUL SYLLABLE PAELS
+D335;D335;1111 1162 11B4;D335;1111 1162 11B4; # (팵; 팵; 팵; 팵; 팵; ) HANGUL SYLLABLE PAELT
+D336;D336;1111 1162 11B5;D336;1111 1162 11B5; # (팶; 팶; 팶; 팶; 팶; ) HANGUL SYLLABLE PAELP
+D337;D337;1111 1162 11B6;D337;1111 1162 11B6; # (팷; 팷; 팷; 팷; 팷; ) HANGUL SYLLABLE PAELH
+D338;D338;1111 1162 11B7;D338;1111 1162 11B7; # (팸; 팸; 팸; 팸; 팸; ) HANGUL SYLLABLE PAEM
+D339;D339;1111 1162 11B8;D339;1111 1162 11B8; # (팹; 팹; 팹; 팹; 팹; ) HANGUL SYLLABLE PAEB
+D33A;D33A;1111 1162 11B9;D33A;1111 1162 11B9; # (팺; 팺; 팺; 팺; 팺; ) HANGUL SYLLABLE PAEBS
+D33B;D33B;1111 1162 11BA;D33B;1111 1162 11BA; # (팻; 팻; 팻; 팻; 팻; ) HANGUL SYLLABLE PAES
+D33C;D33C;1111 1162 11BB;D33C;1111 1162 11BB; # (팼; 팼; 팼; 팼; 팼; ) HANGUL SYLLABLE PAESS
+D33D;D33D;1111 1162 11BC;D33D;1111 1162 11BC; # (팽; 팽; 팽; 팽; 팽; ) HANGUL SYLLABLE PAENG
+D33E;D33E;1111 1162 11BD;D33E;1111 1162 11BD; # (팾; 팾; 팾; 팾; 팾; ) HANGUL SYLLABLE PAEJ
+D33F;D33F;1111 1162 11BE;D33F;1111 1162 11BE; # (팿; 팿; 팿; 팿; 팿; ) HANGUL SYLLABLE PAEC
+D340;D340;1111 1162 11BF;D340;1111 1162 11BF; # (í€; í€; 퍀; í€; 퍀; ) HANGUL SYLLABLE PAEK
+D341;D341;1111 1162 11C0;D341;1111 1162 11C0; # (í; í; 퍁; í; 퍁; ) HANGUL SYLLABLE PAET
+D342;D342;1111 1162 11C1;D342;1111 1162 11C1; # (í‚; í‚; á„‘á…¢á‡; í‚; á„‘á…¢á‡; ) HANGUL SYLLABLE PAEP
+D343;D343;1111 1162 11C2;D343;1111 1162 11C2; # (íƒ; íƒ; 퍃; íƒ; 퍃; ) HANGUL SYLLABLE PAEH
+D344;D344;1111 1163;D344;1111 1163; # (í„; í„; á„‘á…£; í„; á„‘á…£; ) HANGUL SYLLABLE PYA
+D345;D345;1111 1163 11A8;D345;1111 1163 11A8; # (í…; í…; 퍅; í…; 퍅; ) HANGUL SYLLABLE PYAG
+D346;D346;1111 1163 11A9;D346;1111 1163 11A9; # (í†; í†; 퍆; í†; 퍆; ) HANGUL SYLLABLE PYAGG
+D347;D347;1111 1163 11AA;D347;1111 1163 11AA; # (í‡; í‡; 퍇; í‡; 퍇; ) HANGUL SYLLABLE PYAGS
+D348;D348;1111 1163 11AB;D348;1111 1163 11AB; # (íˆ; íˆ; 퍈; íˆ; 퍈; ) HANGUL SYLLABLE PYAN
+D349;D349;1111 1163 11AC;D349;1111 1163 11AC; # (í‰; í‰; 퍉; í‰; 퍉; ) HANGUL SYLLABLE PYANJ
+D34A;D34A;1111 1163 11AD;D34A;1111 1163 11AD; # (íŠ; íŠ; 퍊; íŠ; 퍊; ) HANGUL SYLLABLE PYANH
+D34B;D34B;1111 1163 11AE;D34B;1111 1163 11AE; # (í‹; í‹; 퍋; í‹; 퍋; ) HANGUL SYLLABLE PYAD
+D34C;D34C;1111 1163 11AF;D34C;1111 1163 11AF; # (íŒ; íŒ; 퍌; íŒ; 퍌; ) HANGUL SYLLABLE PYAL
+D34D;D34D;1111 1163 11B0;D34D;1111 1163 11B0; # (í; í; 퍍; í; 퍍; ) HANGUL SYLLABLE PYALG
+D34E;D34E;1111 1163 11B1;D34E;1111 1163 11B1; # (íŽ; íŽ; 퍎; íŽ; 퍎; ) HANGUL SYLLABLE PYALM
+D34F;D34F;1111 1163 11B2;D34F;1111 1163 11B2; # (í; í; 퍏; í; 퍏; ) HANGUL SYLLABLE PYALB
+D350;D350;1111 1163 11B3;D350;1111 1163 11B3; # (í; í; 퍐; í; 퍐; ) HANGUL SYLLABLE PYALS
+D351;D351;1111 1163 11B4;D351;1111 1163 11B4; # (í‘; í‘; 퍑; í‘; 퍑; ) HANGUL SYLLABLE PYALT
+D352;D352;1111 1163 11B5;D352;1111 1163 11B5; # (í’; í’; 퍒; í’; 퍒; ) HANGUL SYLLABLE PYALP
+D353;D353;1111 1163 11B6;D353;1111 1163 11B6; # (í“; í“; 퍓; í“; 퍓; ) HANGUL SYLLABLE PYALH
+D354;D354;1111 1163 11B7;D354;1111 1163 11B7; # (í”; í”; 퍔; í”; 퍔; ) HANGUL SYLLABLE PYAM
+D355;D355;1111 1163 11B8;D355;1111 1163 11B8; # (í•; í•; 퍕; í•; 퍕; ) HANGUL SYLLABLE PYAB
+D356;D356;1111 1163 11B9;D356;1111 1163 11B9; # (í–; í–; 퍖; í–; 퍖; ) HANGUL SYLLABLE PYABS
+D357;D357;1111 1163 11BA;D357;1111 1163 11BA; # (í—; í—; 퍗; í—; 퍗; ) HANGUL SYLLABLE PYAS
+D358;D358;1111 1163 11BB;D358;1111 1163 11BB; # (í˜; í˜; 퍘; í˜; 퍘; ) HANGUL SYLLABLE PYASS
+D359;D359;1111 1163 11BC;D359;1111 1163 11BC; # (í™; í™; 퍙; í™; 퍙; ) HANGUL SYLLABLE PYANG
+D35A;D35A;1111 1163 11BD;D35A;1111 1163 11BD; # (íš; íš; 퍚; íš; 퍚; ) HANGUL SYLLABLE PYAJ
+D35B;D35B;1111 1163 11BE;D35B;1111 1163 11BE; # (í›; í›; 퍛; í›; 퍛; ) HANGUL SYLLABLE PYAC
+D35C;D35C;1111 1163 11BF;D35C;1111 1163 11BF; # (íœ; íœ; 퍜; íœ; 퍜; ) HANGUL SYLLABLE PYAK
+D35D;D35D;1111 1163 11C0;D35D;1111 1163 11C0; # (í; í; 퍝; í; 퍝; ) HANGUL SYLLABLE PYAT
+D35E;D35E;1111 1163 11C1;D35E;1111 1163 11C1; # (íž; íž; á„‘á…£á‡; íž; á„‘á…£á‡; ) HANGUL SYLLABLE PYAP
+D35F;D35F;1111 1163 11C2;D35F;1111 1163 11C2; # (íŸ; íŸ; 퍟; íŸ; 퍟; ) HANGUL SYLLABLE PYAH
+D360;D360;1111 1164;D360;1111 1164; # (í ; í ; á„‘á…¤; í ; á„‘á…¤; ) HANGUL SYLLABLE PYAE
+D361;D361;1111 1164 11A8;D361;1111 1164 11A8; # (í¡; í¡; 퍡; í¡; 퍡; ) HANGUL SYLLABLE PYAEG
+D362;D362;1111 1164 11A9;D362;1111 1164 11A9; # (í¢; í¢; 퍢; í¢; 퍢; ) HANGUL SYLLABLE PYAEGG
+D363;D363;1111 1164 11AA;D363;1111 1164 11AA; # (í£; í£; 퍣; í£; 퍣; ) HANGUL SYLLABLE PYAEGS
+D364;D364;1111 1164 11AB;D364;1111 1164 11AB; # (í¤; í¤; 퍤; í¤; 퍤; ) HANGUL SYLLABLE PYAEN
+D365;D365;1111 1164 11AC;D365;1111 1164 11AC; # (í¥; í¥; 퍥; í¥; 퍥; ) HANGUL SYLLABLE PYAENJ
+D366;D366;1111 1164 11AD;D366;1111 1164 11AD; # (í¦; í¦; 퍦; í¦; 퍦; ) HANGUL SYLLABLE PYAENH
+D367;D367;1111 1164 11AE;D367;1111 1164 11AE; # (í§; í§; 퍧; í§; 퍧; ) HANGUL SYLLABLE PYAED
+D368;D368;1111 1164 11AF;D368;1111 1164 11AF; # (í¨; í¨; 퍨; í¨; 퍨; ) HANGUL SYLLABLE PYAEL
+D369;D369;1111 1164 11B0;D369;1111 1164 11B0; # (í©; í©; 퍩; í©; 퍩; ) HANGUL SYLLABLE PYAELG
+D36A;D36A;1111 1164 11B1;D36A;1111 1164 11B1; # (íª; íª; 퍪; íª; 퍪; ) HANGUL SYLLABLE PYAELM
+D36B;D36B;1111 1164 11B2;D36B;1111 1164 11B2; # (í«; í«; 퍫; í«; 퍫; ) HANGUL SYLLABLE PYAELB
+D36C;D36C;1111 1164 11B3;D36C;1111 1164 11B3; # (í¬; í¬; 퍬; í¬; 퍬; ) HANGUL SYLLABLE PYAELS
+D36D;D36D;1111 1164 11B4;D36D;1111 1164 11B4; # (í­; í­; 퍭; í­; 퍭; ) HANGUL SYLLABLE PYAELT
+D36E;D36E;1111 1164 11B5;D36E;1111 1164 11B5; # (í®; í®; 퍮; í®; 퍮; ) HANGUL SYLLABLE PYAELP
+D36F;D36F;1111 1164 11B6;D36F;1111 1164 11B6; # (í¯; í¯; 퍯; í¯; 퍯; ) HANGUL SYLLABLE PYAELH
+D370;D370;1111 1164 11B7;D370;1111 1164 11B7; # (í°; í°; 퍰; í°; 퍰; ) HANGUL SYLLABLE PYAEM
+D371;D371;1111 1164 11B8;D371;1111 1164 11B8; # (í±; í±; 퍱; í±; 퍱; ) HANGUL SYLLABLE PYAEB
+D372;D372;1111 1164 11B9;D372;1111 1164 11B9; # (í²; í²; 퍲; í²; 퍲; ) HANGUL SYLLABLE PYAEBS
+D373;D373;1111 1164 11BA;D373;1111 1164 11BA; # (í³; í³; 퍳; í³; 퍳; ) HANGUL SYLLABLE PYAES
+D374;D374;1111 1164 11BB;D374;1111 1164 11BB; # (í´; í´; 퍴; í´; 퍴; ) HANGUL SYLLABLE PYAESS
+D375;D375;1111 1164 11BC;D375;1111 1164 11BC; # (íµ; íµ; 퍵; íµ; 퍵; ) HANGUL SYLLABLE PYAENG
+D376;D376;1111 1164 11BD;D376;1111 1164 11BD; # (í¶; í¶; 퍶; í¶; 퍶; ) HANGUL SYLLABLE PYAEJ
+D377;D377;1111 1164 11BE;D377;1111 1164 11BE; # (í·; í·; 퍷; í·; 퍷; ) HANGUL SYLLABLE PYAEC
+D378;D378;1111 1164 11BF;D378;1111 1164 11BF; # (í¸; í¸; 퍸; í¸; 퍸; ) HANGUL SYLLABLE PYAEK
+D379;D379;1111 1164 11C0;D379;1111 1164 11C0; # (í¹; í¹; 퍹; í¹; 퍹; ) HANGUL SYLLABLE PYAET
+D37A;D37A;1111 1164 11C1;D37A;1111 1164 11C1; # (íº; íº; á„‘á…¤á‡; íº; á„‘á…¤á‡; ) HANGUL SYLLABLE PYAEP
+D37B;D37B;1111 1164 11C2;D37B;1111 1164 11C2; # (í»; í»; 퍻; í»; 퍻; ) HANGUL SYLLABLE PYAEH
+D37C;D37C;1111 1165;D37C;1111 1165; # (í¼; í¼; á„‘á…¥; í¼; á„‘á…¥; ) HANGUL SYLLABLE PEO
+D37D;D37D;1111 1165 11A8;D37D;1111 1165 11A8; # (í½; í½; 퍽; í½; 퍽; ) HANGUL SYLLABLE PEOG
+D37E;D37E;1111 1165 11A9;D37E;1111 1165 11A9; # (í¾; í¾; 퍾; í¾; 퍾; ) HANGUL SYLLABLE PEOGG
+D37F;D37F;1111 1165 11AA;D37F;1111 1165 11AA; # (í¿; í¿; 퍿; í¿; 퍿; ) HANGUL SYLLABLE PEOGS
+D380;D380;1111 1165 11AB;D380;1111 1165 11AB; # (펀; 펀; 펀; 펀; 펀; ) HANGUL SYLLABLE PEON
+D381;D381;1111 1165 11AC;D381;1111 1165 11AC; # (íŽ; íŽ; 펁; íŽ; 펁; ) HANGUL SYLLABLE PEONJ
+D382;D382;1111 1165 11AD;D382;1111 1165 11AD; # (펂; 펂; 펂; 펂; 펂; ) HANGUL SYLLABLE PEONH
+D383;D383;1111 1165 11AE;D383;1111 1165 11AE; # (펃; 펃; 펃; 펃; 펃; ) HANGUL SYLLABLE PEOD
+D384;D384;1111 1165 11AF;D384;1111 1165 11AF; # (펄; 펄; 펄; 펄; 펄; ) HANGUL SYLLABLE PEOL
+D385;D385;1111 1165 11B0;D385;1111 1165 11B0; # (펅; 펅; 펅; 펅; 펅; ) HANGUL SYLLABLE PEOLG
+D386;D386;1111 1165 11B1;D386;1111 1165 11B1; # (펆; 펆; 펆; 펆; 펆; ) HANGUL SYLLABLE PEOLM
+D387;D387;1111 1165 11B2;D387;1111 1165 11B2; # (펇; 펇; 펇; 펇; 펇; ) HANGUL SYLLABLE PEOLB
+D388;D388;1111 1165 11B3;D388;1111 1165 11B3; # (펈; 펈; 펈; 펈; 펈; ) HANGUL SYLLABLE PEOLS
+D389;D389;1111 1165 11B4;D389;1111 1165 11B4; # (펉; 펉; 펉; 펉; 펉; ) HANGUL SYLLABLE PEOLT
+D38A;D38A;1111 1165 11B5;D38A;1111 1165 11B5; # (펊; 펊; 펊; 펊; 펊; ) HANGUL SYLLABLE PEOLP
+D38B;D38B;1111 1165 11B6;D38B;1111 1165 11B6; # (펋; 펋; 펋; 펋; 펋; ) HANGUL SYLLABLE PEOLH
+D38C;D38C;1111 1165 11B7;D38C;1111 1165 11B7; # (펌; 펌; 펌; 펌; 펌; ) HANGUL SYLLABLE PEOM
+D38D;D38D;1111 1165 11B8;D38D;1111 1165 11B8; # (íŽ; íŽ; 펍; íŽ; 펍; ) HANGUL SYLLABLE PEOB
+D38E;D38E;1111 1165 11B9;D38E;1111 1165 11B9; # (펎; 펎; 펎; 펎; 펎; ) HANGUL SYLLABLE PEOBS
+D38F;D38F;1111 1165 11BA;D38F;1111 1165 11BA; # (íŽ; íŽ; 펏; íŽ; 펏; ) HANGUL SYLLABLE PEOS
+D390;D390;1111 1165 11BB;D390;1111 1165 11BB; # (íŽ; íŽ; 펐; íŽ; 펐; ) HANGUL SYLLABLE PEOSS
+D391;D391;1111 1165 11BC;D391;1111 1165 11BC; # (펑; 펑; 펑; 펑; 펑; ) HANGUL SYLLABLE PEONG
+D392;D392;1111 1165 11BD;D392;1111 1165 11BD; # (펒; 펒; 펒; 펒; 펒; ) HANGUL SYLLABLE PEOJ
+D393;D393;1111 1165 11BE;D393;1111 1165 11BE; # (펓; 펓; 펓; 펓; 펓; ) HANGUL SYLLABLE PEOC
+D394;D394;1111 1165 11BF;D394;1111 1165 11BF; # (펔; 펔; 펔; 펔; 펔; ) HANGUL SYLLABLE PEOK
+D395;D395;1111 1165 11C0;D395;1111 1165 11C0; # (펕; 펕; 펕; 펕; 펕; ) HANGUL SYLLABLE PEOT
+D396;D396;1111 1165 11C1;D396;1111 1165 11C1; # (펖; 펖; á„‘á…¥á‡; 펖; á„‘á…¥á‡; ) HANGUL SYLLABLE PEOP
+D397;D397;1111 1165 11C2;D397;1111 1165 11C2; # (펗; 펗; 펗; 펗; 펗; ) HANGUL SYLLABLE PEOH
+D398;D398;1111 1166;D398;1111 1166; # (페; 페; 페; 페; 페; ) HANGUL SYLLABLE PE
+D399;D399;1111 1166 11A8;D399;1111 1166 11A8; # (펙; 펙; 펙; 펙; 펙; ) HANGUL SYLLABLE PEG
+D39A;D39A;1111 1166 11A9;D39A;1111 1166 11A9; # (펚; 펚; 펚; 펚; 펚; ) HANGUL SYLLABLE PEGG
+D39B;D39B;1111 1166 11AA;D39B;1111 1166 11AA; # (펛; 펛; 펛; 펛; 펛; ) HANGUL SYLLABLE PEGS
+D39C;D39C;1111 1166 11AB;D39C;1111 1166 11AB; # (펜; 펜; 펜; 펜; 펜; ) HANGUL SYLLABLE PEN
+D39D;D39D;1111 1166 11AC;D39D;1111 1166 11AC; # (íŽ; íŽ; 펝; íŽ; 펝; ) HANGUL SYLLABLE PENJ
+D39E;D39E;1111 1166 11AD;D39E;1111 1166 11AD; # (펞; 펞; 펞; 펞; 펞; ) HANGUL SYLLABLE PENH
+D39F;D39F;1111 1166 11AE;D39F;1111 1166 11AE; # (펟; 펟; 펟; 펟; 펟; ) HANGUL SYLLABLE PED
+D3A0;D3A0;1111 1166 11AF;D3A0;1111 1166 11AF; # (펠; 펠; 펠; 펠; 펠; ) HANGUL SYLLABLE PEL
+D3A1;D3A1;1111 1166 11B0;D3A1;1111 1166 11B0; # (펡; 펡; 펡; 펡; 펡; ) HANGUL SYLLABLE PELG
+D3A2;D3A2;1111 1166 11B1;D3A2;1111 1166 11B1; # (펢; 펢; 펢; 펢; 펢; ) HANGUL SYLLABLE PELM
+D3A3;D3A3;1111 1166 11B2;D3A3;1111 1166 11B2; # (펣; 펣; 펣; 펣; 펣; ) HANGUL SYLLABLE PELB
+D3A4;D3A4;1111 1166 11B3;D3A4;1111 1166 11B3; # (펤; 펤; 펤; 펤; 펤; ) HANGUL SYLLABLE PELS
+D3A5;D3A5;1111 1166 11B4;D3A5;1111 1166 11B4; # (펥; 펥; 펥; 펥; 펥; ) HANGUL SYLLABLE PELT
+D3A6;D3A6;1111 1166 11B5;D3A6;1111 1166 11B5; # (펦; 펦; 펦; 펦; 펦; ) HANGUL SYLLABLE PELP
+D3A7;D3A7;1111 1166 11B6;D3A7;1111 1166 11B6; # (펧; 펧; 펧; 펧; 펧; ) HANGUL SYLLABLE PELH
+D3A8;D3A8;1111 1166 11B7;D3A8;1111 1166 11B7; # (펨; 펨; 펨; 펨; 펨; ) HANGUL SYLLABLE PEM
+D3A9;D3A9;1111 1166 11B8;D3A9;1111 1166 11B8; # (펩; 펩; 펩; 펩; 펩; ) HANGUL SYLLABLE PEB
+D3AA;D3AA;1111 1166 11B9;D3AA;1111 1166 11B9; # (펪; 펪; 펪; 펪; 펪; ) HANGUL SYLLABLE PEBS
+D3AB;D3AB;1111 1166 11BA;D3AB;1111 1166 11BA; # (펫; 펫; 펫; 펫; 펫; ) HANGUL SYLLABLE PES
+D3AC;D3AC;1111 1166 11BB;D3AC;1111 1166 11BB; # (펬; 펬; 펬; 펬; 펬; ) HANGUL SYLLABLE PESS
+D3AD;D3AD;1111 1166 11BC;D3AD;1111 1166 11BC; # (펭; 펭; 펭; 펭; 펭; ) HANGUL SYLLABLE PENG
+D3AE;D3AE;1111 1166 11BD;D3AE;1111 1166 11BD; # (펮; 펮; 펮; 펮; 펮; ) HANGUL SYLLABLE PEJ
+D3AF;D3AF;1111 1166 11BE;D3AF;1111 1166 11BE; # (펯; 펯; 펯; 펯; 펯; ) HANGUL SYLLABLE PEC
+D3B0;D3B0;1111 1166 11BF;D3B0;1111 1166 11BF; # (펰; 펰; 펰; 펰; 펰; ) HANGUL SYLLABLE PEK
+D3B1;D3B1;1111 1166 11C0;D3B1;1111 1166 11C0; # (펱; 펱; 펱; 펱; 펱; ) HANGUL SYLLABLE PET
+D3B2;D3B2;1111 1166 11C1;D3B2;1111 1166 11C1; # (펲; 펲; á„‘á…¦á‡; 펲; á„‘á…¦á‡; ) HANGUL SYLLABLE PEP
+D3B3;D3B3;1111 1166 11C2;D3B3;1111 1166 11C2; # (펳; 펳; 펳; 펳; 펳; ) HANGUL SYLLABLE PEH
+D3B4;D3B4;1111 1167;D3B4;1111 1167; # (펴; 펴; 펴; 펴; 펴; ) HANGUL SYLLABLE PYEO
+D3B5;D3B5;1111 1167 11A8;D3B5;1111 1167 11A8; # (펵; 펵; 펵; 펵; 펵; ) HANGUL SYLLABLE PYEOG
+D3B6;D3B6;1111 1167 11A9;D3B6;1111 1167 11A9; # (펶; 펶; 펶; 펶; 펶; ) HANGUL SYLLABLE PYEOGG
+D3B7;D3B7;1111 1167 11AA;D3B7;1111 1167 11AA; # (펷; 펷; 펷; 펷; 펷; ) HANGUL SYLLABLE PYEOGS
+D3B8;D3B8;1111 1167 11AB;D3B8;1111 1167 11AB; # (편; 편; 편; 편; 편; ) HANGUL SYLLABLE PYEON
+D3B9;D3B9;1111 1167 11AC;D3B9;1111 1167 11AC; # (펹; 펹; 펹; 펹; 펹; ) HANGUL SYLLABLE PYEONJ
+D3BA;D3BA;1111 1167 11AD;D3BA;1111 1167 11AD; # (펺; 펺; 펺; 펺; 펺; ) HANGUL SYLLABLE PYEONH
+D3BB;D3BB;1111 1167 11AE;D3BB;1111 1167 11AE; # (펻; 펻; 펻; 펻; 펻; ) HANGUL SYLLABLE PYEOD
+D3BC;D3BC;1111 1167 11AF;D3BC;1111 1167 11AF; # (펼; 펼; 펼; 펼; 펼; ) HANGUL SYLLABLE PYEOL
+D3BD;D3BD;1111 1167 11B0;D3BD;1111 1167 11B0; # (펽; 펽; 펽; 펽; 펽; ) HANGUL SYLLABLE PYEOLG
+D3BE;D3BE;1111 1167 11B1;D3BE;1111 1167 11B1; # (펾; 펾; 펾; 펾; 펾; ) HANGUL SYLLABLE PYEOLM
+D3BF;D3BF;1111 1167 11B2;D3BF;1111 1167 11B2; # (펿; 펿; 펿; 펿; 펿; ) HANGUL SYLLABLE PYEOLB
+D3C0;D3C0;1111 1167 11B3;D3C0;1111 1167 11B3; # (í€; í€; 폀; í€; 폀; ) HANGUL SYLLABLE PYEOLS
+D3C1;D3C1;1111 1167 11B4;D3C1;1111 1167 11B4; # (í; í; 폁; í; 폁; ) HANGUL SYLLABLE PYEOLT
+D3C2;D3C2;1111 1167 11B5;D3C2;1111 1167 11B5; # (í‚; í‚; 폂; í‚; 폂; ) HANGUL SYLLABLE PYEOLP
+D3C3;D3C3;1111 1167 11B6;D3C3;1111 1167 11B6; # (íƒ; íƒ; 폃; íƒ; 폃; ) HANGUL SYLLABLE PYEOLH
+D3C4;D3C4;1111 1167 11B7;D3C4;1111 1167 11B7; # (í„; í„; 폄; í„; 폄; ) HANGUL SYLLABLE PYEOM
+D3C5;D3C5;1111 1167 11B8;D3C5;1111 1167 11B8; # (í…; í…; 폅; í…; 폅; ) HANGUL SYLLABLE PYEOB
+D3C6;D3C6;1111 1167 11B9;D3C6;1111 1167 11B9; # (í†; í†; 폆; í†; 폆; ) HANGUL SYLLABLE PYEOBS
+D3C7;D3C7;1111 1167 11BA;D3C7;1111 1167 11BA; # (í‡; í‡; 폇; í‡; 폇; ) HANGUL SYLLABLE PYEOS
+D3C8;D3C8;1111 1167 11BB;D3C8;1111 1167 11BB; # (íˆ; íˆ; 폈; íˆ; 폈; ) HANGUL SYLLABLE PYEOSS
+D3C9;D3C9;1111 1167 11BC;D3C9;1111 1167 11BC; # (í‰; í‰; 평; í‰; 평; ) HANGUL SYLLABLE PYEONG
+D3CA;D3CA;1111 1167 11BD;D3CA;1111 1167 11BD; # (íŠ; íŠ; 폊; íŠ; 폊; ) HANGUL SYLLABLE PYEOJ
+D3CB;D3CB;1111 1167 11BE;D3CB;1111 1167 11BE; # (í‹; í‹; 폋; í‹; 폋; ) HANGUL SYLLABLE PYEOC
+D3CC;D3CC;1111 1167 11BF;D3CC;1111 1167 11BF; # (íŒ; íŒ; 폌; íŒ; 폌; ) HANGUL SYLLABLE PYEOK
+D3CD;D3CD;1111 1167 11C0;D3CD;1111 1167 11C0; # (í; í; 폍; í; 폍; ) HANGUL SYLLABLE PYEOT
+D3CE;D3CE;1111 1167 11C1;D3CE;1111 1167 11C1; # (íŽ; íŽ; á„‘á…§á‡; íŽ; á„‘á…§á‡; ) HANGUL SYLLABLE PYEOP
+D3CF;D3CF;1111 1167 11C2;D3CF;1111 1167 11C2; # (í; í; 폏; í; 폏; ) HANGUL SYLLABLE PYEOH
+D3D0;D3D0;1111 1168;D3D0;1111 1168; # (í; í; á„‘á…¨; í; á„‘á…¨; ) HANGUL SYLLABLE PYE
+D3D1;D3D1;1111 1168 11A8;D3D1;1111 1168 11A8; # (í‘; í‘; 폑; í‘; 폑; ) HANGUL SYLLABLE PYEG
+D3D2;D3D2;1111 1168 11A9;D3D2;1111 1168 11A9; # (í’; í’; 폒; í’; 폒; ) HANGUL SYLLABLE PYEGG
+D3D3;D3D3;1111 1168 11AA;D3D3;1111 1168 11AA; # (í“; í“; 폓; í“; 폓; ) HANGUL SYLLABLE PYEGS
+D3D4;D3D4;1111 1168 11AB;D3D4;1111 1168 11AB; # (í”; í”; 폔; í”; 폔; ) HANGUL SYLLABLE PYEN
+D3D5;D3D5;1111 1168 11AC;D3D5;1111 1168 11AC; # (í•; í•; 폕; í•; 폕; ) HANGUL SYLLABLE PYENJ
+D3D6;D3D6;1111 1168 11AD;D3D6;1111 1168 11AD; # (í–; í–; 폖; í–; 폖; ) HANGUL SYLLABLE PYENH
+D3D7;D3D7;1111 1168 11AE;D3D7;1111 1168 11AE; # (í—; í—; 폗; í—; 폗; ) HANGUL SYLLABLE PYED
+D3D8;D3D8;1111 1168 11AF;D3D8;1111 1168 11AF; # (í˜; í˜; 폘; í˜; 폘; ) HANGUL SYLLABLE PYEL
+D3D9;D3D9;1111 1168 11B0;D3D9;1111 1168 11B0; # (í™; í™; 폙; í™; 폙; ) HANGUL SYLLABLE PYELG
+D3DA;D3DA;1111 1168 11B1;D3DA;1111 1168 11B1; # (íš; íš; 폚; íš; 폚; ) HANGUL SYLLABLE PYELM
+D3DB;D3DB;1111 1168 11B2;D3DB;1111 1168 11B2; # (í›; í›; 폛; í›; 폛; ) HANGUL SYLLABLE PYELB
+D3DC;D3DC;1111 1168 11B3;D3DC;1111 1168 11B3; # (íœ; íœ; 폜; íœ; 폜; ) HANGUL SYLLABLE PYELS
+D3DD;D3DD;1111 1168 11B4;D3DD;1111 1168 11B4; # (í; í; 폝; í; 폝; ) HANGUL SYLLABLE PYELT
+D3DE;D3DE;1111 1168 11B5;D3DE;1111 1168 11B5; # (íž; íž; 폞; íž; 폞; ) HANGUL SYLLABLE PYELP
+D3DF;D3DF;1111 1168 11B6;D3DF;1111 1168 11B6; # (íŸ; íŸ; 폟; íŸ; 폟; ) HANGUL SYLLABLE PYELH
+D3E0;D3E0;1111 1168 11B7;D3E0;1111 1168 11B7; # (í ; í ; 폠; í ; 폠; ) HANGUL SYLLABLE PYEM
+D3E1;D3E1;1111 1168 11B8;D3E1;1111 1168 11B8; # (í¡; í¡; 폡; í¡; 폡; ) HANGUL SYLLABLE PYEB
+D3E2;D3E2;1111 1168 11B9;D3E2;1111 1168 11B9; # (í¢; í¢; 폢; í¢; 폢; ) HANGUL SYLLABLE PYEBS
+D3E3;D3E3;1111 1168 11BA;D3E3;1111 1168 11BA; # (í£; í£; 폣; í£; 폣; ) HANGUL SYLLABLE PYES
+D3E4;D3E4;1111 1168 11BB;D3E4;1111 1168 11BB; # (í¤; í¤; 폤; í¤; 폤; ) HANGUL SYLLABLE PYESS
+D3E5;D3E5;1111 1168 11BC;D3E5;1111 1168 11BC; # (í¥; í¥; 폥; í¥; 폥; ) HANGUL SYLLABLE PYENG
+D3E6;D3E6;1111 1168 11BD;D3E6;1111 1168 11BD; # (í¦; í¦; 폦; í¦; 폦; ) HANGUL SYLLABLE PYEJ
+D3E7;D3E7;1111 1168 11BE;D3E7;1111 1168 11BE; # (í§; í§; 폧; í§; 폧; ) HANGUL SYLLABLE PYEC
+D3E8;D3E8;1111 1168 11BF;D3E8;1111 1168 11BF; # (í¨; í¨; 폨; í¨; 폨; ) HANGUL SYLLABLE PYEK
+D3E9;D3E9;1111 1168 11C0;D3E9;1111 1168 11C0; # (í©; í©; 폩; í©; 폩; ) HANGUL SYLLABLE PYET
+D3EA;D3EA;1111 1168 11C1;D3EA;1111 1168 11C1; # (íª; íª; á„‘á…¨á‡; íª; á„‘á…¨á‡; ) HANGUL SYLLABLE PYEP
+D3EB;D3EB;1111 1168 11C2;D3EB;1111 1168 11C2; # (í«; í«; 폫; í«; 폫; ) HANGUL SYLLABLE PYEH
+D3EC;D3EC;1111 1169;D3EC;1111 1169; # (í¬; í¬; á„‘á…©; í¬; á„‘á…©; ) HANGUL SYLLABLE PO
+D3ED;D3ED;1111 1169 11A8;D3ED;1111 1169 11A8; # (í­; í­; 폭; í­; 폭; ) HANGUL SYLLABLE POG
+D3EE;D3EE;1111 1169 11A9;D3EE;1111 1169 11A9; # (í®; í®; 폮; í®; 폮; ) HANGUL SYLLABLE POGG
+D3EF;D3EF;1111 1169 11AA;D3EF;1111 1169 11AA; # (í¯; í¯; 폯; í¯; 폯; ) HANGUL SYLLABLE POGS
+D3F0;D3F0;1111 1169 11AB;D3F0;1111 1169 11AB; # (í°; í°; 폰; í°; 폰; ) HANGUL SYLLABLE PON
+D3F1;D3F1;1111 1169 11AC;D3F1;1111 1169 11AC; # (í±; í±; 폱; í±; 폱; ) HANGUL SYLLABLE PONJ
+D3F2;D3F2;1111 1169 11AD;D3F2;1111 1169 11AD; # (í²; í²; 폲; í²; 폲; ) HANGUL SYLLABLE PONH
+D3F3;D3F3;1111 1169 11AE;D3F3;1111 1169 11AE; # (í³; í³; 폳; í³; 폳; ) HANGUL SYLLABLE POD
+D3F4;D3F4;1111 1169 11AF;D3F4;1111 1169 11AF; # (í´; í´; 폴; í´; 폴; ) HANGUL SYLLABLE POL
+D3F5;D3F5;1111 1169 11B0;D3F5;1111 1169 11B0; # (íµ; íµ; 폵; íµ; 폵; ) HANGUL SYLLABLE POLG
+D3F6;D3F6;1111 1169 11B1;D3F6;1111 1169 11B1; # (í¶; í¶; 폶; í¶; 폶; ) HANGUL SYLLABLE POLM
+D3F7;D3F7;1111 1169 11B2;D3F7;1111 1169 11B2; # (í·; í·; 폷; í·; 폷; ) HANGUL SYLLABLE POLB
+D3F8;D3F8;1111 1169 11B3;D3F8;1111 1169 11B3; # (í¸; í¸; 폸; í¸; 폸; ) HANGUL SYLLABLE POLS
+D3F9;D3F9;1111 1169 11B4;D3F9;1111 1169 11B4; # (í¹; í¹; 폹; í¹; 폹; ) HANGUL SYLLABLE POLT
+D3FA;D3FA;1111 1169 11B5;D3FA;1111 1169 11B5; # (íº; íº; 폺; íº; 폺; ) HANGUL SYLLABLE POLP
+D3FB;D3FB;1111 1169 11B6;D3FB;1111 1169 11B6; # (í»; í»; 폻; í»; 폻; ) HANGUL SYLLABLE POLH
+D3FC;D3FC;1111 1169 11B7;D3FC;1111 1169 11B7; # (í¼; í¼; 폼; í¼; 폼; ) HANGUL SYLLABLE POM
+D3FD;D3FD;1111 1169 11B8;D3FD;1111 1169 11B8; # (í½; í½; 폽; í½; 폽; ) HANGUL SYLLABLE POB
+D3FE;D3FE;1111 1169 11B9;D3FE;1111 1169 11B9; # (í¾; í¾; 폾; í¾; 폾; ) HANGUL SYLLABLE POBS
+D3FF;D3FF;1111 1169 11BA;D3FF;1111 1169 11BA; # (í¿; í¿; 폿; í¿; 폿; ) HANGUL SYLLABLE POS
+D400;D400;1111 1169 11BB;D400;1111 1169 11BB; # (í€; í€; 퐀; í€; 퐀; ) HANGUL SYLLABLE POSS
+D401;D401;1111 1169 11BC;D401;1111 1169 11BC; # (í; í; 퐁; í; 퐁; ) HANGUL SYLLABLE PONG
+D402;D402;1111 1169 11BD;D402;1111 1169 11BD; # (í‚; í‚; 퐂; í‚; 퐂; ) HANGUL SYLLABLE POJ
+D403;D403;1111 1169 11BE;D403;1111 1169 11BE; # (íƒ; íƒ; 퐃; íƒ; 퐃; ) HANGUL SYLLABLE POC
+D404;D404;1111 1169 11BF;D404;1111 1169 11BF; # (í„; í„; 퐄; í„; 퐄; ) HANGUL SYLLABLE POK
+D405;D405;1111 1169 11C0;D405;1111 1169 11C0; # (í…; í…; 퐅; í…; 퐅; ) HANGUL SYLLABLE POT
+D406;D406;1111 1169 11C1;D406;1111 1169 11C1; # (í†; í†; á„‘á…©á‡; í†; á„‘á…©á‡; ) HANGUL SYLLABLE POP
+D407;D407;1111 1169 11C2;D407;1111 1169 11C2; # (í‡; í‡; 퐇; í‡; 퐇; ) HANGUL SYLLABLE POH
+D408;D408;1111 116A;D408;1111 116A; # (íˆ; íˆ; á„‘á…ª; íˆ; á„‘á…ª; ) HANGUL SYLLABLE PWA
+D409;D409;1111 116A 11A8;D409;1111 116A 11A8; # (í‰; í‰; 퐉; í‰; 퐉; ) HANGUL SYLLABLE PWAG
+D40A;D40A;1111 116A 11A9;D40A;1111 116A 11A9; # (íŠ; íŠ; 퐊; íŠ; 퐊; ) HANGUL SYLLABLE PWAGG
+D40B;D40B;1111 116A 11AA;D40B;1111 116A 11AA; # (í‹; í‹; 퐋; í‹; 퐋; ) HANGUL SYLLABLE PWAGS
+D40C;D40C;1111 116A 11AB;D40C;1111 116A 11AB; # (íŒ; íŒ; 퐌; íŒ; 퐌; ) HANGUL SYLLABLE PWAN
+D40D;D40D;1111 116A 11AC;D40D;1111 116A 11AC; # (í; í; 퐍; í; 퐍; ) HANGUL SYLLABLE PWANJ
+D40E;D40E;1111 116A 11AD;D40E;1111 116A 11AD; # (íŽ; íŽ; 퐎; íŽ; 퐎; ) HANGUL SYLLABLE PWANH
+D40F;D40F;1111 116A 11AE;D40F;1111 116A 11AE; # (í; í; 퐏; í; 퐏; ) HANGUL SYLLABLE PWAD
+D410;D410;1111 116A 11AF;D410;1111 116A 11AF; # (í; í; 퐐; í; 퐐; ) HANGUL SYLLABLE PWAL
+D411;D411;1111 116A 11B0;D411;1111 116A 11B0; # (í‘; í‘; 퐑; í‘; 퐑; ) HANGUL SYLLABLE PWALG
+D412;D412;1111 116A 11B1;D412;1111 116A 11B1; # (í’; í’; 퐒; í’; 퐒; ) HANGUL SYLLABLE PWALM
+D413;D413;1111 116A 11B2;D413;1111 116A 11B2; # (í“; í“; 퐓; í“; 퐓; ) HANGUL SYLLABLE PWALB
+D414;D414;1111 116A 11B3;D414;1111 116A 11B3; # (í”; í”; 퐔; í”; 퐔; ) HANGUL SYLLABLE PWALS
+D415;D415;1111 116A 11B4;D415;1111 116A 11B4; # (í•; í•; 퐕; í•; 퐕; ) HANGUL SYLLABLE PWALT
+D416;D416;1111 116A 11B5;D416;1111 116A 11B5; # (í–; í–; 퐖; í–; 퐖; ) HANGUL SYLLABLE PWALP
+D417;D417;1111 116A 11B6;D417;1111 116A 11B6; # (í—; í—; 퐗; í—; 퐗; ) HANGUL SYLLABLE PWALH
+D418;D418;1111 116A 11B7;D418;1111 116A 11B7; # (í˜; í˜; 퐘; í˜; 퐘; ) HANGUL SYLLABLE PWAM
+D419;D419;1111 116A 11B8;D419;1111 116A 11B8; # (í™; í™; 퐙; í™; 퐙; ) HANGUL SYLLABLE PWAB
+D41A;D41A;1111 116A 11B9;D41A;1111 116A 11B9; # (íš; íš; 퐚; íš; 퐚; ) HANGUL SYLLABLE PWABS
+D41B;D41B;1111 116A 11BA;D41B;1111 116A 11BA; # (í›; í›; 퐛; í›; 퐛; ) HANGUL SYLLABLE PWAS
+D41C;D41C;1111 116A 11BB;D41C;1111 116A 11BB; # (íœ; íœ; 퐜; íœ; 퐜; ) HANGUL SYLLABLE PWASS
+D41D;D41D;1111 116A 11BC;D41D;1111 116A 11BC; # (í; í; 퐝; í; 퐝; ) HANGUL SYLLABLE PWANG
+D41E;D41E;1111 116A 11BD;D41E;1111 116A 11BD; # (íž; íž; 퐞; íž; 퐞; ) HANGUL SYLLABLE PWAJ
+D41F;D41F;1111 116A 11BE;D41F;1111 116A 11BE; # (íŸ; íŸ; 퐟; íŸ; 퐟; ) HANGUL SYLLABLE PWAC
+D420;D420;1111 116A 11BF;D420;1111 116A 11BF; # (í ; í ; 퐠; í ; 퐠; ) HANGUL SYLLABLE PWAK
+D421;D421;1111 116A 11C0;D421;1111 116A 11C0; # (í¡; í¡; 퐡; í¡; 퐡; ) HANGUL SYLLABLE PWAT
+D422;D422;1111 116A 11C1;D422;1111 116A 11C1; # (í¢; í¢; á„‘á…ªá‡; í¢; á„‘á…ªá‡; ) HANGUL SYLLABLE PWAP
+D423;D423;1111 116A 11C2;D423;1111 116A 11C2; # (í£; í£; 퐣; í£; 퐣; ) HANGUL SYLLABLE PWAH
+D424;D424;1111 116B;D424;1111 116B; # (í¤; í¤; á„‘á…«; í¤; á„‘á…«; ) HANGUL SYLLABLE PWAE
+D425;D425;1111 116B 11A8;D425;1111 116B 11A8; # (í¥; í¥; 퐥; í¥; 퐥; ) HANGUL SYLLABLE PWAEG
+D426;D426;1111 116B 11A9;D426;1111 116B 11A9; # (í¦; í¦; 퐦; í¦; 퐦; ) HANGUL SYLLABLE PWAEGG
+D427;D427;1111 116B 11AA;D427;1111 116B 11AA; # (í§; í§; 퐧; í§; 퐧; ) HANGUL SYLLABLE PWAEGS
+D428;D428;1111 116B 11AB;D428;1111 116B 11AB; # (í¨; í¨; 퐨; í¨; 퐨; ) HANGUL SYLLABLE PWAEN
+D429;D429;1111 116B 11AC;D429;1111 116B 11AC; # (í©; í©; 퐩; í©; 퐩; ) HANGUL SYLLABLE PWAENJ
+D42A;D42A;1111 116B 11AD;D42A;1111 116B 11AD; # (íª; íª; 퐪; íª; 퐪; ) HANGUL SYLLABLE PWAENH
+D42B;D42B;1111 116B 11AE;D42B;1111 116B 11AE; # (í«; í«; 퐫; í«; 퐫; ) HANGUL SYLLABLE PWAED
+D42C;D42C;1111 116B 11AF;D42C;1111 116B 11AF; # (í¬; í¬; 퐬; í¬; 퐬; ) HANGUL SYLLABLE PWAEL
+D42D;D42D;1111 116B 11B0;D42D;1111 116B 11B0; # (í­; í­; 퐭; í­; 퐭; ) HANGUL SYLLABLE PWAELG
+D42E;D42E;1111 116B 11B1;D42E;1111 116B 11B1; # (í®; í®; 퐮; í®; 퐮; ) HANGUL SYLLABLE PWAELM
+D42F;D42F;1111 116B 11B2;D42F;1111 116B 11B2; # (í¯; í¯; 퐯; í¯; 퐯; ) HANGUL SYLLABLE PWAELB
+D430;D430;1111 116B 11B3;D430;1111 116B 11B3; # (í°; í°; 퐰; í°; 퐰; ) HANGUL SYLLABLE PWAELS
+D431;D431;1111 116B 11B4;D431;1111 116B 11B4; # (í±; í±; 퐱; í±; 퐱; ) HANGUL SYLLABLE PWAELT
+D432;D432;1111 116B 11B5;D432;1111 116B 11B5; # (í²; í²; 퐲; í²; 퐲; ) HANGUL SYLLABLE PWAELP
+D433;D433;1111 116B 11B6;D433;1111 116B 11B6; # (í³; í³; 퐳; í³; 퐳; ) HANGUL SYLLABLE PWAELH
+D434;D434;1111 116B 11B7;D434;1111 116B 11B7; # (í´; í´; 퐴; í´; 퐴; ) HANGUL SYLLABLE PWAEM
+D435;D435;1111 116B 11B8;D435;1111 116B 11B8; # (íµ; íµ; 퐵; íµ; 퐵; ) HANGUL SYLLABLE PWAEB
+D436;D436;1111 116B 11B9;D436;1111 116B 11B9; # (í¶; í¶; 퐶; í¶; 퐶; ) HANGUL SYLLABLE PWAEBS
+D437;D437;1111 116B 11BA;D437;1111 116B 11BA; # (í·; í·; 퐷; í·; 퐷; ) HANGUL SYLLABLE PWAES
+D438;D438;1111 116B 11BB;D438;1111 116B 11BB; # (í¸; í¸; 퐸; í¸; 퐸; ) HANGUL SYLLABLE PWAESS
+D439;D439;1111 116B 11BC;D439;1111 116B 11BC; # (í¹; í¹; 퐹; í¹; 퐹; ) HANGUL SYLLABLE PWAENG
+D43A;D43A;1111 116B 11BD;D43A;1111 116B 11BD; # (íº; íº; 퐺; íº; 퐺; ) HANGUL SYLLABLE PWAEJ
+D43B;D43B;1111 116B 11BE;D43B;1111 116B 11BE; # (í»; í»; 퐻; í»; 퐻; ) HANGUL SYLLABLE PWAEC
+D43C;D43C;1111 116B 11BF;D43C;1111 116B 11BF; # (í¼; í¼; 퐼; í¼; 퐼; ) HANGUL SYLLABLE PWAEK
+D43D;D43D;1111 116B 11C0;D43D;1111 116B 11C0; # (í½; í½; 퐽; í½; 퐽; ) HANGUL SYLLABLE PWAET
+D43E;D43E;1111 116B 11C1;D43E;1111 116B 11C1; # (í¾; í¾; á„‘á…«á‡; í¾; á„‘á…«á‡; ) HANGUL SYLLABLE PWAEP
+D43F;D43F;1111 116B 11C2;D43F;1111 116B 11C2; # (í¿; í¿; 퐿; í¿; 퐿; ) HANGUL SYLLABLE PWAEH
+D440;D440;1111 116C;D440;1111 116C; # (í‘€; í‘€; á„‘á…¬; í‘€; á„‘á…¬; ) HANGUL SYLLABLE POE
+D441;D441;1111 116C 11A8;D441;1111 116C 11A8; # (í‘; í‘; 푁; í‘; 푁; ) HANGUL SYLLABLE POEG
+D442;D442;1111 116C 11A9;D442;1111 116C 11A9; # (푂; 푂; 푂; 푂; 푂; ) HANGUL SYLLABLE POEGG
+D443;D443;1111 116C 11AA;D443;1111 116C 11AA; # (푃; 푃; 푃; 푃; 푃; ) HANGUL SYLLABLE POEGS
+D444;D444;1111 116C 11AB;D444;1111 116C 11AB; # (푄; 푄; 푄; 푄; 푄; ) HANGUL SYLLABLE POEN
+D445;D445;1111 116C 11AC;D445;1111 116C 11AC; # (푅; 푅; 푅; 푅; 푅; ) HANGUL SYLLABLE POENJ
+D446;D446;1111 116C 11AD;D446;1111 116C 11AD; # (푆; 푆; 푆; 푆; 푆; ) HANGUL SYLLABLE POENH
+D447;D447;1111 116C 11AE;D447;1111 116C 11AE; # (푇; 푇; 푇; 푇; 푇; ) HANGUL SYLLABLE POED
+D448;D448;1111 116C 11AF;D448;1111 116C 11AF; # (푈; 푈; 푈; 푈; 푈; ) HANGUL SYLLABLE POEL
+D449;D449;1111 116C 11B0;D449;1111 116C 11B0; # (푉; 푉; 푉; 푉; 푉; ) HANGUL SYLLABLE POELG
+D44A;D44A;1111 116C 11B1;D44A;1111 116C 11B1; # (푊; 푊; 푊; 푊; 푊; ) HANGUL SYLLABLE POELM
+D44B;D44B;1111 116C 11B2;D44B;1111 116C 11B2; # (푋; 푋; 푋; 푋; 푋; ) HANGUL SYLLABLE POELB
+D44C;D44C;1111 116C 11B3;D44C;1111 116C 11B3; # (푌; 푌; 푌; 푌; 푌; ) HANGUL SYLLABLE POELS
+D44D;D44D;1111 116C 11B4;D44D;1111 116C 11B4; # (í‘; í‘; 푍; í‘; 푍; ) HANGUL SYLLABLE POELT
+D44E;D44E;1111 116C 11B5;D44E;1111 116C 11B5; # (푎; 푎; 푎; 푎; 푎; ) HANGUL SYLLABLE POELP
+D44F;D44F;1111 116C 11B6;D44F;1111 116C 11B6; # (í‘; í‘; 푏; í‘; 푏; ) HANGUL SYLLABLE POELH
+D450;D450;1111 116C 11B7;D450;1111 116C 11B7; # (í‘; í‘; 푐; í‘; 푐; ) HANGUL SYLLABLE POEM
+D451;D451;1111 116C 11B8;D451;1111 116C 11B8; # (푑; 푑; 푑; 푑; 푑; ) HANGUL SYLLABLE POEB
+D452;D452;1111 116C 11B9;D452;1111 116C 11B9; # (푒; 푒; 푒; 푒; 푒; ) HANGUL SYLLABLE POEBS
+D453;D453;1111 116C 11BA;D453;1111 116C 11BA; # (푓; 푓; 푓; 푓; 푓; ) HANGUL SYLLABLE POES
+D454;D454;1111 116C 11BB;D454;1111 116C 11BB; # (푔; 푔; 푔; 푔; 푔; ) HANGUL SYLLABLE POESS
+D455;D455;1111 116C 11BC;D455;1111 116C 11BC; # (푕; 푕; 푕; 푕; 푕; ) HANGUL SYLLABLE POENG
+D456;D456;1111 116C 11BD;D456;1111 116C 11BD; # (푖; 푖; 푖; 푖; 푖; ) HANGUL SYLLABLE POEJ
+D457;D457;1111 116C 11BE;D457;1111 116C 11BE; # (푗; 푗; 푗; 푗; 푗; ) HANGUL SYLLABLE POEC
+D458;D458;1111 116C 11BF;D458;1111 116C 11BF; # (푘; 푘; 푘; 푘; 푘; ) HANGUL SYLLABLE POEK
+D459;D459;1111 116C 11C0;D459;1111 116C 11C0; # (푙; 푙; 푙; 푙; 푙; ) HANGUL SYLLABLE POET
+D45A;D45A;1111 116C 11C1;D45A;1111 116C 11C1; # (í‘š; í‘š; á„‘á…¬á‡; í‘š; á„‘á…¬á‡; ) HANGUL SYLLABLE POEP
+D45B;D45B;1111 116C 11C2;D45B;1111 116C 11C2; # (푛; 푛; 푛; 푛; 푛; ) HANGUL SYLLABLE POEH
+D45C;D45C;1111 116D;D45C;1111 116D; # (표; 표; 표; 표; 표; ) HANGUL SYLLABLE PYO
+D45D;D45D;1111 116D 11A8;D45D;1111 116D 11A8; # (í‘; í‘; 푝; í‘; 푝; ) HANGUL SYLLABLE PYOG
+D45E;D45E;1111 116D 11A9;D45E;1111 116D 11A9; # (푞; 푞; 푞; 푞; 푞; ) HANGUL SYLLABLE PYOGG
+D45F;D45F;1111 116D 11AA;D45F;1111 116D 11AA; # (푟; 푟; 푟; 푟; 푟; ) HANGUL SYLLABLE PYOGS
+D460;D460;1111 116D 11AB;D460;1111 116D 11AB; # (푠; 푠; 푠; 푠; 푠; ) HANGUL SYLLABLE PYON
+D461;D461;1111 116D 11AC;D461;1111 116D 11AC; # (푡; 푡; 푡; 푡; 푡; ) HANGUL SYLLABLE PYONJ
+D462;D462;1111 116D 11AD;D462;1111 116D 11AD; # (푢; 푢; 푢; 푢; 푢; ) HANGUL SYLLABLE PYONH
+D463;D463;1111 116D 11AE;D463;1111 116D 11AE; # (푣; 푣; 푣; 푣; 푣; ) HANGUL SYLLABLE PYOD
+D464;D464;1111 116D 11AF;D464;1111 116D 11AF; # (푤; 푤; 푤; 푤; 푤; ) HANGUL SYLLABLE PYOL
+D465;D465;1111 116D 11B0;D465;1111 116D 11B0; # (푥; 푥; 푥; 푥; 푥; ) HANGUL SYLLABLE PYOLG
+D466;D466;1111 116D 11B1;D466;1111 116D 11B1; # (푦; 푦; 푦; 푦; 푦; ) HANGUL SYLLABLE PYOLM
+D467;D467;1111 116D 11B2;D467;1111 116D 11B2; # (푧; 푧; 푧; 푧; 푧; ) HANGUL SYLLABLE PYOLB
+D468;D468;1111 116D 11B3;D468;1111 116D 11B3; # (푨; 푨; 푨; 푨; 푨; ) HANGUL SYLLABLE PYOLS
+D469;D469;1111 116D 11B4;D469;1111 116D 11B4; # (푩; 푩; 푩; 푩; 푩; ) HANGUL SYLLABLE PYOLT
+D46A;D46A;1111 116D 11B5;D46A;1111 116D 11B5; # (푪; 푪; 푪; 푪; 푪; ) HANGUL SYLLABLE PYOLP
+D46B;D46B;1111 116D 11B6;D46B;1111 116D 11B6; # (푫; 푫; 푫; 푫; 푫; ) HANGUL SYLLABLE PYOLH
+D46C;D46C;1111 116D 11B7;D46C;1111 116D 11B7; # (푬; 푬; 푬; 푬; 푬; ) HANGUL SYLLABLE PYOM
+D46D;D46D;1111 116D 11B8;D46D;1111 116D 11B8; # (푭; 푭; 푭; 푭; 푭; ) HANGUL SYLLABLE PYOB
+D46E;D46E;1111 116D 11B9;D46E;1111 116D 11B9; # (푮; 푮; 푮; 푮; 푮; ) HANGUL SYLLABLE PYOBS
+D46F;D46F;1111 116D 11BA;D46F;1111 116D 11BA; # (푯; 푯; 푯; 푯; 푯; ) HANGUL SYLLABLE PYOS
+D470;D470;1111 116D 11BB;D470;1111 116D 11BB; # (푰; 푰; 푰; 푰; 푰; ) HANGUL SYLLABLE PYOSS
+D471;D471;1111 116D 11BC;D471;1111 116D 11BC; # (푱; 푱; 푱; 푱; 푱; ) HANGUL SYLLABLE PYONG
+D472;D472;1111 116D 11BD;D472;1111 116D 11BD; # (푲; 푲; 푲; 푲; 푲; ) HANGUL SYLLABLE PYOJ
+D473;D473;1111 116D 11BE;D473;1111 116D 11BE; # (푳; 푳; 푳; 푳; 푳; ) HANGUL SYLLABLE PYOC
+D474;D474;1111 116D 11BF;D474;1111 116D 11BF; # (푴; 푴; 푴; 푴; 푴; ) HANGUL SYLLABLE PYOK
+D475;D475;1111 116D 11C0;D475;1111 116D 11C0; # (푵; 푵; 푵; 푵; 푵; ) HANGUL SYLLABLE PYOT
+D476;D476;1111 116D 11C1;D476;1111 116D 11C1; # (푶; 푶; á„‘á…­á‡; 푶; á„‘á…­á‡; ) HANGUL SYLLABLE PYOP
+D477;D477;1111 116D 11C2;D477;1111 116D 11C2; # (푷; 푷; 푷; 푷; 푷; ) HANGUL SYLLABLE PYOH
+D478;D478;1111 116E;D478;1111 116E; # (푸; 푸; 푸; 푸; 푸; ) HANGUL SYLLABLE PU
+D479;D479;1111 116E 11A8;D479;1111 116E 11A8; # (푹; 푹; 푹; 푹; 푹; ) HANGUL SYLLABLE PUG
+D47A;D47A;1111 116E 11A9;D47A;1111 116E 11A9; # (푺; 푺; 푺; 푺; 푺; ) HANGUL SYLLABLE PUGG
+D47B;D47B;1111 116E 11AA;D47B;1111 116E 11AA; # (푻; 푻; 푻; 푻; 푻; ) HANGUL SYLLABLE PUGS
+D47C;D47C;1111 116E 11AB;D47C;1111 116E 11AB; # (푼; 푼; 푼; 푼; 푼; ) HANGUL SYLLABLE PUN
+D47D;D47D;1111 116E 11AC;D47D;1111 116E 11AC; # (푽; 푽; 푽; 푽; 푽; ) HANGUL SYLLABLE PUNJ
+D47E;D47E;1111 116E 11AD;D47E;1111 116E 11AD; # (푾; 푾; 푾; 푾; 푾; ) HANGUL SYLLABLE PUNH
+D47F;D47F;1111 116E 11AE;D47F;1111 116E 11AE; # (푿; 푿; 푿; 푿; 푿; ) HANGUL SYLLABLE PUD
+D480;D480;1111 116E 11AF;D480;1111 116E 11AF; # (풀; 풀; 풀; 풀; 풀; ) HANGUL SYLLABLE PUL
+D481;D481;1111 116E 11B0;D481;1111 116E 11B0; # (í’; í’; 풁; í’; 풁; ) HANGUL SYLLABLE PULG
+D482;D482;1111 116E 11B1;D482;1111 116E 11B1; # (풂; 풂; 풂; 풂; 풂; ) HANGUL SYLLABLE PULM
+D483;D483;1111 116E 11B2;D483;1111 116E 11B2; # (풃; 풃; 풃; 풃; 풃; ) HANGUL SYLLABLE PULB
+D484;D484;1111 116E 11B3;D484;1111 116E 11B3; # (풄; 풄; 풄; 풄; 풄; ) HANGUL SYLLABLE PULS
+D485;D485;1111 116E 11B4;D485;1111 116E 11B4; # (풅; 풅; 풅; 풅; 풅; ) HANGUL SYLLABLE PULT
+D486;D486;1111 116E 11B5;D486;1111 116E 11B5; # (풆; 풆; 풆; 풆; 풆; ) HANGUL SYLLABLE PULP
+D487;D487;1111 116E 11B6;D487;1111 116E 11B6; # (풇; 풇; 풇; 풇; 풇; ) HANGUL SYLLABLE PULH
+D488;D488;1111 116E 11B7;D488;1111 116E 11B7; # (품; 품; 품; 품; 품; ) HANGUL SYLLABLE PUM
+D489;D489;1111 116E 11B8;D489;1111 116E 11B8; # (풉; 풉; 풉; 풉; 풉; ) HANGUL SYLLABLE PUB
+D48A;D48A;1111 116E 11B9;D48A;1111 116E 11B9; # (풊; 풊; 풊; 풊; 풊; ) HANGUL SYLLABLE PUBS
+D48B;D48B;1111 116E 11BA;D48B;1111 116E 11BA; # (풋; 풋; 풋; 풋; 풋; ) HANGUL SYLLABLE PUS
+D48C;D48C;1111 116E 11BB;D48C;1111 116E 11BB; # (풌; 풌; 풌; 풌; 풌; ) HANGUL SYLLABLE PUSS
+D48D;D48D;1111 116E 11BC;D48D;1111 116E 11BC; # (í’; í’; 풍; í’; 풍; ) HANGUL SYLLABLE PUNG
+D48E;D48E;1111 116E 11BD;D48E;1111 116E 11BD; # (풎; 풎; 풎; 풎; 풎; ) HANGUL SYLLABLE PUJ
+D48F;D48F;1111 116E 11BE;D48F;1111 116E 11BE; # (í’; í’; 풏; í’; 풏; ) HANGUL SYLLABLE PUC
+D490;D490;1111 116E 11BF;D490;1111 116E 11BF; # (í’; í’; 풐; í’; 풐; ) HANGUL SYLLABLE PUK
+D491;D491;1111 116E 11C0;D491;1111 116E 11C0; # (풑; 풑; 풑; 풑; 풑; ) HANGUL SYLLABLE PUT
+D492;D492;1111 116E 11C1;D492;1111 116E 11C1; # (í’’; í’’; á„‘á…®á‡; í’’; á„‘á…®á‡; ) HANGUL SYLLABLE PUP
+D493;D493;1111 116E 11C2;D493;1111 116E 11C2; # (풓; 풓; 풓; 풓; 풓; ) HANGUL SYLLABLE PUH
+D494;D494;1111 116F;D494;1111 116F; # (í’”; í’”; á„‘á…¯; í’”; á„‘á…¯; ) HANGUL SYLLABLE PWEO
+D495;D495;1111 116F 11A8;D495;1111 116F 11A8; # (풕; 풕; 풕; 풕; 풕; ) HANGUL SYLLABLE PWEOG
+D496;D496;1111 116F 11A9;D496;1111 116F 11A9; # (풖; 풖; 풖; 풖; 풖; ) HANGUL SYLLABLE PWEOGG
+D497;D497;1111 116F 11AA;D497;1111 116F 11AA; # (풗; 풗; 풗; 풗; 풗; ) HANGUL SYLLABLE PWEOGS
+D498;D498;1111 116F 11AB;D498;1111 116F 11AB; # (풘; 풘; 풘; 풘; 풘; ) HANGUL SYLLABLE PWEON
+D499;D499;1111 116F 11AC;D499;1111 116F 11AC; # (풙; 풙; 풙; 풙; 풙; ) HANGUL SYLLABLE PWEONJ
+D49A;D49A;1111 116F 11AD;D49A;1111 116F 11AD; # (풚; 풚; 풚; 풚; 풚; ) HANGUL SYLLABLE PWEONH
+D49B;D49B;1111 116F 11AE;D49B;1111 116F 11AE; # (풛; 풛; 풛; 풛; 풛; ) HANGUL SYLLABLE PWEOD
+D49C;D49C;1111 116F 11AF;D49C;1111 116F 11AF; # (풜; 풜; 풜; 풜; 풜; ) HANGUL SYLLABLE PWEOL
+D49D;D49D;1111 116F 11B0;D49D;1111 116F 11B0; # (í’; í’; 풝; í’; 풝; ) HANGUL SYLLABLE PWEOLG
+D49E;D49E;1111 116F 11B1;D49E;1111 116F 11B1; # (풞; 풞; 풞; 풞; 풞; ) HANGUL SYLLABLE PWEOLM
+D49F;D49F;1111 116F 11B2;D49F;1111 116F 11B2; # (풟; 풟; 풟; 풟; 풟; ) HANGUL SYLLABLE PWEOLB
+D4A0;D4A0;1111 116F 11B3;D4A0;1111 116F 11B3; # (풠; 풠; 풠; 풠; 풠; ) HANGUL SYLLABLE PWEOLS
+D4A1;D4A1;1111 116F 11B4;D4A1;1111 116F 11B4; # (풡; 풡; 풡; 풡; 풡; ) HANGUL SYLLABLE PWEOLT
+D4A2;D4A2;1111 116F 11B5;D4A2;1111 116F 11B5; # (풢; 풢; 풢; 풢; 풢; ) HANGUL SYLLABLE PWEOLP
+D4A3;D4A3;1111 116F 11B6;D4A3;1111 116F 11B6; # (풣; 풣; 풣; 풣; 풣; ) HANGUL SYLLABLE PWEOLH
+D4A4;D4A4;1111 116F 11B7;D4A4;1111 116F 11B7; # (풤; 풤; 풤; 풤; 풤; ) HANGUL SYLLABLE PWEOM
+D4A5;D4A5;1111 116F 11B8;D4A5;1111 116F 11B8; # (풥; 풥; 풥; 풥; 풥; ) HANGUL SYLLABLE PWEOB
+D4A6;D4A6;1111 116F 11B9;D4A6;1111 116F 11B9; # (풦; 풦; 풦; 풦; 풦; ) HANGUL SYLLABLE PWEOBS
+D4A7;D4A7;1111 116F 11BA;D4A7;1111 116F 11BA; # (풧; 풧; 풧; 풧; 풧; ) HANGUL SYLLABLE PWEOS
+D4A8;D4A8;1111 116F 11BB;D4A8;1111 116F 11BB; # (풨; 풨; 풨; 풨; 풨; ) HANGUL SYLLABLE PWEOSS
+D4A9;D4A9;1111 116F 11BC;D4A9;1111 116F 11BC; # (풩; 풩; 풩; 풩; 풩; ) HANGUL SYLLABLE PWEONG
+D4AA;D4AA;1111 116F 11BD;D4AA;1111 116F 11BD; # (풪; 풪; 풪; 풪; 풪; ) HANGUL SYLLABLE PWEOJ
+D4AB;D4AB;1111 116F 11BE;D4AB;1111 116F 11BE; # (풫; 풫; 풫; 풫; 풫; ) HANGUL SYLLABLE PWEOC
+D4AC;D4AC;1111 116F 11BF;D4AC;1111 116F 11BF; # (풬; 풬; 풬; 풬; 풬; ) HANGUL SYLLABLE PWEOK
+D4AD;D4AD;1111 116F 11C0;D4AD;1111 116F 11C0; # (풭; 풭; 풭; 풭; 풭; ) HANGUL SYLLABLE PWEOT
+D4AE;D4AE;1111 116F 11C1;D4AE;1111 116F 11C1; # (í’®; í’®; á„‘á…¯á‡; í’®; á„‘á…¯á‡; ) HANGUL SYLLABLE PWEOP
+D4AF;D4AF;1111 116F 11C2;D4AF;1111 116F 11C2; # (풯; 풯; 풯; 풯; 풯; ) HANGUL SYLLABLE PWEOH
+D4B0;D4B0;1111 1170;D4B0;1111 1170; # (í’°; í’°; á„‘á…°; í’°; á„‘á…°; ) HANGUL SYLLABLE PWE
+D4B1;D4B1;1111 1170 11A8;D4B1;1111 1170 11A8; # (풱; 풱; 풱; 풱; 풱; ) HANGUL SYLLABLE PWEG
+D4B2;D4B2;1111 1170 11A9;D4B2;1111 1170 11A9; # (풲; 풲; 풲; 풲; 풲; ) HANGUL SYLLABLE PWEGG
+D4B3;D4B3;1111 1170 11AA;D4B3;1111 1170 11AA; # (풳; 풳; 풳; 풳; 풳; ) HANGUL SYLLABLE PWEGS
+D4B4;D4B4;1111 1170 11AB;D4B4;1111 1170 11AB; # (풴; 풴; 풴; 풴; 풴; ) HANGUL SYLLABLE PWEN
+D4B5;D4B5;1111 1170 11AC;D4B5;1111 1170 11AC; # (풵; 풵; 풵; 풵; 풵; ) HANGUL SYLLABLE PWENJ
+D4B6;D4B6;1111 1170 11AD;D4B6;1111 1170 11AD; # (풶; 풶; 풶; 풶; 풶; ) HANGUL SYLLABLE PWENH
+D4B7;D4B7;1111 1170 11AE;D4B7;1111 1170 11AE; # (풷; 풷; 풷; 풷; 풷; ) HANGUL SYLLABLE PWED
+D4B8;D4B8;1111 1170 11AF;D4B8;1111 1170 11AF; # (풸; 풸; 풸; 풸; 풸; ) HANGUL SYLLABLE PWEL
+D4B9;D4B9;1111 1170 11B0;D4B9;1111 1170 11B0; # (풹; 풹; 풹; 풹; 풹; ) HANGUL SYLLABLE PWELG
+D4BA;D4BA;1111 1170 11B1;D4BA;1111 1170 11B1; # (풺; 풺; 풺; 풺; 풺; ) HANGUL SYLLABLE PWELM
+D4BB;D4BB;1111 1170 11B2;D4BB;1111 1170 11B2; # (풻; 풻; 풻; 풻; 풻; ) HANGUL SYLLABLE PWELB
+D4BC;D4BC;1111 1170 11B3;D4BC;1111 1170 11B3; # (풼; 풼; 풼; 풼; 풼; ) HANGUL SYLLABLE PWELS
+D4BD;D4BD;1111 1170 11B4;D4BD;1111 1170 11B4; # (풽; 풽; 풽; 풽; 풽; ) HANGUL SYLLABLE PWELT
+D4BE;D4BE;1111 1170 11B5;D4BE;1111 1170 11B5; # (풾; 풾; 풾; 풾; 풾; ) HANGUL SYLLABLE PWELP
+D4BF;D4BF;1111 1170 11B6;D4BF;1111 1170 11B6; # (풿; 풿; 풿; 풿; 풿; ) HANGUL SYLLABLE PWELH
+D4C0;D4C0;1111 1170 11B7;D4C0;1111 1170 11B7; # (퓀; 퓀; 퓀; 퓀; 퓀; ) HANGUL SYLLABLE PWEM
+D4C1;D4C1;1111 1170 11B8;D4C1;1111 1170 11B8; # (í“; í“; 퓁; í“; 퓁; ) HANGUL SYLLABLE PWEB
+D4C2;D4C2;1111 1170 11B9;D4C2;1111 1170 11B9; # (퓂; 퓂; 퓂; 퓂; 퓂; ) HANGUL SYLLABLE PWEBS
+D4C3;D4C3;1111 1170 11BA;D4C3;1111 1170 11BA; # (퓃; 퓃; 퓃; 퓃; 퓃; ) HANGUL SYLLABLE PWES
+D4C4;D4C4;1111 1170 11BB;D4C4;1111 1170 11BB; # (퓄; 퓄; 퓄; 퓄; 퓄; ) HANGUL SYLLABLE PWESS
+D4C5;D4C5;1111 1170 11BC;D4C5;1111 1170 11BC; # (퓅; 퓅; 퓅; 퓅; 퓅; ) HANGUL SYLLABLE PWENG
+D4C6;D4C6;1111 1170 11BD;D4C6;1111 1170 11BD; # (퓆; 퓆; 퓆; 퓆; 퓆; ) HANGUL SYLLABLE PWEJ
+D4C7;D4C7;1111 1170 11BE;D4C7;1111 1170 11BE; # (퓇; 퓇; 퓇; 퓇; 퓇; ) HANGUL SYLLABLE PWEC
+D4C8;D4C8;1111 1170 11BF;D4C8;1111 1170 11BF; # (퓈; 퓈; 퓈; 퓈; 퓈; ) HANGUL SYLLABLE PWEK
+D4C9;D4C9;1111 1170 11C0;D4C9;1111 1170 11C0; # (퓉; 퓉; 퓉; 퓉; 퓉; ) HANGUL SYLLABLE PWET
+D4CA;D4CA;1111 1170 11C1;D4CA;1111 1170 11C1; # (í“Š; í“Š; á„‘á…°á‡; í“Š; á„‘á…°á‡; ) HANGUL SYLLABLE PWEP
+D4CB;D4CB;1111 1170 11C2;D4CB;1111 1170 11C2; # (퓋; 퓋; 퓋; 퓋; 퓋; ) HANGUL SYLLABLE PWEH
+D4CC;D4CC;1111 1171;D4CC;1111 1171; # (퓌; 퓌; 퓌; 퓌; 퓌; ) HANGUL SYLLABLE PWI
+D4CD;D4CD;1111 1171 11A8;D4CD;1111 1171 11A8; # (í“; í“; 퓍; í“; 퓍; ) HANGUL SYLLABLE PWIG
+D4CE;D4CE;1111 1171 11A9;D4CE;1111 1171 11A9; # (퓎; 퓎; 퓎; 퓎; 퓎; ) HANGUL SYLLABLE PWIGG
+D4CF;D4CF;1111 1171 11AA;D4CF;1111 1171 11AA; # (í“; í“; 퓏; í“; 퓏; ) HANGUL SYLLABLE PWIGS
+D4D0;D4D0;1111 1171 11AB;D4D0;1111 1171 11AB; # (í“; í“; 퓐; í“; 퓐; ) HANGUL SYLLABLE PWIN
+D4D1;D4D1;1111 1171 11AC;D4D1;1111 1171 11AC; # (퓑; 퓑; 퓑; 퓑; 퓑; ) HANGUL SYLLABLE PWINJ
+D4D2;D4D2;1111 1171 11AD;D4D2;1111 1171 11AD; # (퓒; 퓒; 퓒; 퓒; 퓒; ) HANGUL SYLLABLE PWINH
+D4D3;D4D3;1111 1171 11AE;D4D3;1111 1171 11AE; # (퓓; 퓓; 퓓; 퓓; 퓓; ) HANGUL SYLLABLE PWID
+D4D4;D4D4;1111 1171 11AF;D4D4;1111 1171 11AF; # (퓔; 퓔; 퓔; 퓔; 퓔; ) HANGUL SYLLABLE PWIL
+D4D5;D4D5;1111 1171 11B0;D4D5;1111 1171 11B0; # (퓕; 퓕; 퓕; 퓕; 퓕; ) HANGUL SYLLABLE PWILG
+D4D6;D4D6;1111 1171 11B1;D4D6;1111 1171 11B1; # (퓖; 퓖; 퓖; 퓖; 퓖; ) HANGUL SYLLABLE PWILM
+D4D7;D4D7;1111 1171 11B2;D4D7;1111 1171 11B2; # (퓗; 퓗; 퓗; 퓗; 퓗; ) HANGUL SYLLABLE PWILB
+D4D8;D4D8;1111 1171 11B3;D4D8;1111 1171 11B3; # (퓘; 퓘; 퓘; 퓘; 퓘; ) HANGUL SYLLABLE PWILS
+D4D9;D4D9;1111 1171 11B4;D4D9;1111 1171 11B4; # (퓙; 퓙; 퓙; 퓙; 퓙; ) HANGUL SYLLABLE PWILT
+D4DA;D4DA;1111 1171 11B5;D4DA;1111 1171 11B5; # (퓚; 퓚; 퓚; 퓚; 퓚; ) HANGUL SYLLABLE PWILP
+D4DB;D4DB;1111 1171 11B6;D4DB;1111 1171 11B6; # (퓛; 퓛; 퓛; 퓛; 퓛; ) HANGUL SYLLABLE PWILH
+D4DC;D4DC;1111 1171 11B7;D4DC;1111 1171 11B7; # (퓜; 퓜; 퓜; 퓜; 퓜; ) HANGUL SYLLABLE PWIM
+D4DD;D4DD;1111 1171 11B8;D4DD;1111 1171 11B8; # (í“; í“; 퓝; í“; 퓝; ) HANGUL SYLLABLE PWIB
+D4DE;D4DE;1111 1171 11B9;D4DE;1111 1171 11B9; # (퓞; 퓞; 퓞; 퓞; 퓞; ) HANGUL SYLLABLE PWIBS
+D4DF;D4DF;1111 1171 11BA;D4DF;1111 1171 11BA; # (퓟; 퓟; 퓟; 퓟; 퓟; ) HANGUL SYLLABLE PWIS
+D4E0;D4E0;1111 1171 11BB;D4E0;1111 1171 11BB; # (퓠; 퓠; 퓠; 퓠; 퓠; ) HANGUL SYLLABLE PWISS
+D4E1;D4E1;1111 1171 11BC;D4E1;1111 1171 11BC; # (퓡; 퓡; 퓡; 퓡; 퓡; ) HANGUL SYLLABLE PWING
+D4E2;D4E2;1111 1171 11BD;D4E2;1111 1171 11BD; # (퓢; 퓢; 퓢; 퓢; 퓢; ) HANGUL SYLLABLE PWIJ
+D4E3;D4E3;1111 1171 11BE;D4E3;1111 1171 11BE; # (퓣; 퓣; 퓣; 퓣; 퓣; ) HANGUL SYLLABLE PWIC
+D4E4;D4E4;1111 1171 11BF;D4E4;1111 1171 11BF; # (퓤; 퓤; 퓤; 퓤; 퓤; ) HANGUL SYLLABLE PWIK
+D4E5;D4E5;1111 1171 11C0;D4E5;1111 1171 11C0; # (퓥; 퓥; 퓥; 퓥; 퓥; ) HANGUL SYLLABLE PWIT
+D4E6;D4E6;1111 1171 11C1;D4E6;1111 1171 11C1; # (퓦; 퓦; á„‘á…±á‡; 퓦; á„‘á…±á‡; ) HANGUL SYLLABLE PWIP
+D4E7;D4E7;1111 1171 11C2;D4E7;1111 1171 11C2; # (퓧; 퓧; 퓧; 퓧; 퓧; ) HANGUL SYLLABLE PWIH
+D4E8;D4E8;1111 1172;D4E8;1111 1172; # (퓨; 퓨; 퓨; 퓨; 퓨; ) HANGUL SYLLABLE PYU
+D4E9;D4E9;1111 1172 11A8;D4E9;1111 1172 11A8; # (퓩; 퓩; 퓩; 퓩; 퓩; ) HANGUL SYLLABLE PYUG
+D4EA;D4EA;1111 1172 11A9;D4EA;1111 1172 11A9; # (퓪; 퓪; 퓪; 퓪; 퓪; ) HANGUL SYLLABLE PYUGG
+D4EB;D4EB;1111 1172 11AA;D4EB;1111 1172 11AA; # (퓫; 퓫; 퓫; 퓫; 퓫; ) HANGUL SYLLABLE PYUGS
+D4EC;D4EC;1111 1172 11AB;D4EC;1111 1172 11AB; # (퓬; 퓬; 퓬; 퓬; 퓬; ) HANGUL SYLLABLE PYUN
+D4ED;D4ED;1111 1172 11AC;D4ED;1111 1172 11AC; # (퓭; 퓭; 퓭; 퓭; 퓭; ) HANGUL SYLLABLE PYUNJ
+D4EE;D4EE;1111 1172 11AD;D4EE;1111 1172 11AD; # (퓮; 퓮; 퓮; 퓮; 퓮; ) HANGUL SYLLABLE PYUNH
+D4EF;D4EF;1111 1172 11AE;D4EF;1111 1172 11AE; # (퓯; 퓯; 퓯; 퓯; 퓯; ) HANGUL SYLLABLE PYUD
+D4F0;D4F0;1111 1172 11AF;D4F0;1111 1172 11AF; # (퓰; 퓰; 퓰; 퓰; 퓰; ) HANGUL SYLLABLE PYUL
+D4F1;D4F1;1111 1172 11B0;D4F1;1111 1172 11B0; # (퓱; 퓱; 퓱; 퓱; 퓱; ) HANGUL SYLLABLE PYULG
+D4F2;D4F2;1111 1172 11B1;D4F2;1111 1172 11B1; # (퓲; 퓲; 퓲; 퓲; 퓲; ) HANGUL SYLLABLE PYULM
+D4F3;D4F3;1111 1172 11B2;D4F3;1111 1172 11B2; # (퓳; 퓳; 퓳; 퓳; 퓳; ) HANGUL SYLLABLE PYULB
+D4F4;D4F4;1111 1172 11B3;D4F4;1111 1172 11B3; # (퓴; 퓴; 퓴; 퓴; 퓴; ) HANGUL SYLLABLE PYULS
+D4F5;D4F5;1111 1172 11B4;D4F5;1111 1172 11B4; # (퓵; 퓵; 퓵; 퓵; 퓵; ) HANGUL SYLLABLE PYULT
+D4F6;D4F6;1111 1172 11B5;D4F6;1111 1172 11B5; # (퓶; 퓶; 퓶; 퓶; 퓶; ) HANGUL SYLLABLE PYULP
+D4F7;D4F7;1111 1172 11B6;D4F7;1111 1172 11B6; # (퓷; 퓷; 퓷; 퓷; 퓷; ) HANGUL SYLLABLE PYULH
+D4F8;D4F8;1111 1172 11B7;D4F8;1111 1172 11B7; # (퓸; 퓸; 퓸; 퓸; 퓸; ) HANGUL SYLLABLE PYUM
+D4F9;D4F9;1111 1172 11B8;D4F9;1111 1172 11B8; # (퓹; 퓹; 퓹; 퓹; 퓹; ) HANGUL SYLLABLE PYUB
+D4FA;D4FA;1111 1172 11B9;D4FA;1111 1172 11B9; # (퓺; 퓺; 퓺; 퓺; 퓺; ) HANGUL SYLLABLE PYUBS
+D4FB;D4FB;1111 1172 11BA;D4FB;1111 1172 11BA; # (퓻; 퓻; 퓻; 퓻; 퓻; ) HANGUL SYLLABLE PYUS
+D4FC;D4FC;1111 1172 11BB;D4FC;1111 1172 11BB; # (퓼; 퓼; 퓼; 퓼; 퓼; ) HANGUL SYLLABLE PYUSS
+D4FD;D4FD;1111 1172 11BC;D4FD;1111 1172 11BC; # (퓽; 퓽; 퓽; 퓽; 퓽; ) HANGUL SYLLABLE PYUNG
+D4FE;D4FE;1111 1172 11BD;D4FE;1111 1172 11BD; # (퓾; 퓾; 퓾; 퓾; 퓾; ) HANGUL SYLLABLE PYUJ
+D4FF;D4FF;1111 1172 11BE;D4FF;1111 1172 11BE; # (퓿; 퓿; 퓿; 퓿; 퓿; ) HANGUL SYLLABLE PYUC
+D500;D500;1111 1172 11BF;D500;1111 1172 11BF; # (픀; 픀; 픀; 픀; 픀; ) HANGUL SYLLABLE PYUK
+D501;D501;1111 1172 11C0;D501;1111 1172 11C0; # (í”; í”; 픁; í”; 픁; ) HANGUL SYLLABLE PYUT
+D502;D502;1111 1172 11C1;D502;1111 1172 11C1; # (픂; 픂; á„‘á…²á‡; 픂; á„‘á…²á‡; ) HANGUL SYLLABLE PYUP
+D503;D503;1111 1172 11C2;D503;1111 1172 11C2; # (픃; 픃; 픃; 픃; 픃; ) HANGUL SYLLABLE PYUH
+D504;D504;1111 1173;D504;1111 1173; # (프; 프; 프; 프; 프; ) HANGUL SYLLABLE PEU
+D505;D505;1111 1173 11A8;D505;1111 1173 11A8; # (픅; 픅; 픅; 픅; 픅; ) HANGUL SYLLABLE PEUG
+D506;D506;1111 1173 11A9;D506;1111 1173 11A9; # (픆; 픆; 픆; 픆; 픆; ) HANGUL SYLLABLE PEUGG
+D507;D507;1111 1173 11AA;D507;1111 1173 11AA; # (픇; 픇; 픇; 픇; 픇; ) HANGUL SYLLABLE PEUGS
+D508;D508;1111 1173 11AB;D508;1111 1173 11AB; # (픈; 픈; 픈; 픈; 픈; ) HANGUL SYLLABLE PEUN
+D509;D509;1111 1173 11AC;D509;1111 1173 11AC; # (픉; 픉; 픉; 픉; 픉; ) HANGUL SYLLABLE PEUNJ
+D50A;D50A;1111 1173 11AD;D50A;1111 1173 11AD; # (픊; 픊; 픊; 픊; 픊; ) HANGUL SYLLABLE PEUNH
+D50B;D50B;1111 1173 11AE;D50B;1111 1173 11AE; # (픋; 픋; 픋; 픋; 픋; ) HANGUL SYLLABLE PEUD
+D50C;D50C;1111 1173 11AF;D50C;1111 1173 11AF; # (플; 플; 플; 플; 플; ) HANGUL SYLLABLE PEUL
+D50D;D50D;1111 1173 11B0;D50D;1111 1173 11B0; # (í”; í”; 픍; í”; 픍; ) HANGUL SYLLABLE PEULG
+D50E;D50E;1111 1173 11B1;D50E;1111 1173 11B1; # (픎; 픎; 픎; 픎; 픎; ) HANGUL SYLLABLE PEULM
+D50F;D50F;1111 1173 11B2;D50F;1111 1173 11B2; # (í”; í”; 픏; í”; 픏; ) HANGUL SYLLABLE PEULB
+D510;D510;1111 1173 11B3;D510;1111 1173 11B3; # (í”; í”; 픐; í”; 픐; ) HANGUL SYLLABLE PEULS
+D511;D511;1111 1173 11B4;D511;1111 1173 11B4; # (픑; 픑; 픑; 픑; 픑; ) HANGUL SYLLABLE PEULT
+D512;D512;1111 1173 11B5;D512;1111 1173 11B5; # (픒; 픒; 픒; 픒; 픒; ) HANGUL SYLLABLE PEULP
+D513;D513;1111 1173 11B6;D513;1111 1173 11B6; # (픓; 픓; 픓; 픓; 픓; ) HANGUL SYLLABLE PEULH
+D514;D514;1111 1173 11B7;D514;1111 1173 11B7; # (픔; 픔; 픔; 픔; 픔; ) HANGUL SYLLABLE PEUM
+D515;D515;1111 1173 11B8;D515;1111 1173 11B8; # (픕; 픕; 픕; 픕; 픕; ) HANGUL SYLLABLE PEUB
+D516;D516;1111 1173 11B9;D516;1111 1173 11B9; # (픖; 픖; 픖; 픖; 픖; ) HANGUL SYLLABLE PEUBS
+D517;D517;1111 1173 11BA;D517;1111 1173 11BA; # (픗; 픗; 픗; 픗; 픗; ) HANGUL SYLLABLE PEUS
+D518;D518;1111 1173 11BB;D518;1111 1173 11BB; # (픘; 픘; 픘; 픘; 픘; ) HANGUL SYLLABLE PEUSS
+D519;D519;1111 1173 11BC;D519;1111 1173 11BC; # (픙; 픙; 픙; 픙; 픙; ) HANGUL SYLLABLE PEUNG
+D51A;D51A;1111 1173 11BD;D51A;1111 1173 11BD; # (픚; 픚; 픚; 픚; 픚; ) HANGUL SYLLABLE PEUJ
+D51B;D51B;1111 1173 11BE;D51B;1111 1173 11BE; # (픛; 픛; 픛; 픛; 픛; ) HANGUL SYLLABLE PEUC
+D51C;D51C;1111 1173 11BF;D51C;1111 1173 11BF; # (픜; 픜; 픜; 픜; 픜; ) HANGUL SYLLABLE PEUK
+D51D;D51D;1111 1173 11C0;D51D;1111 1173 11C0; # (í”; í”; 픝; í”; 픝; ) HANGUL SYLLABLE PEUT
+D51E;D51E;1111 1173 11C1;D51E;1111 1173 11C1; # (픞; 픞; á„‘á…³á‡; 픞; á„‘á…³á‡; ) HANGUL SYLLABLE PEUP
+D51F;D51F;1111 1173 11C2;D51F;1111 1173 11C2; # (픟; 픟; 픟; 픟; 픟; ) HANGUL SYLLABLE PEUH
+D520;D520;1111 1174;D520;1111 1174; # (í” ; í” ; á„‘á…´; í” ; á„‘á…´; ) HANGUL SYLLABLE PYI
+D521;D521;1111 1174 11A8;D521;1111 1174 11A8; # (픡; 픡; 픡; 픡; 픡; ) HANGUL SYLLABLE PYIG
+D522;D522;1111 1174 11A9;D522;1111 1174 11A9; # (픢; 픢; 픢; 픢; 픢; ) HANGUL SYLLABLE PYIGG
+D523;D523;1111 1174 11AA;D523;1111 1174 11AA; # (픣; 픣; 픣; 픣; 픣; ) HANGUL SYLLABLE PYIGS
+D524;D524;1111 1174 11AB;D524;1111 1174 11AB; # (픤; 픤; 픤; 픤; 픤; ) HANGUL SYLLABLE PYIN
+D525;D525;1111 1174 11AC;D525;1111 1174 11AC; # (픥; 픥; 픥; 픥; 픥; ) HANGUL SYLLABLE PYINJ
+D526;D526;1111 1174 11AD;D526;1111 1174 11AD; # (픦; 픦; 픦; 픦; 픦; ) HANGUL SYLLABLE PYINH
+D527;D527;1111 1174 11AE;D527;1111 1174 11AE; # (픧; 픧; 픧; 픧; 픧; ) HANGUL SYLLABLE PYID
+D528;D528;1111 1174 11AF;D528;1111 1174 11AF; # (픨; 픨; 픨; 픨; 픨; ) HANGUL SYLLABLE PYIL
+D529;D529;1111 1174 11B0;D529;1111 1174 11B0; # (픩; 픩; 픩; 픩; 픩; ) HANGUL SYLLABLE PYILG
+D52A;D52A;1111 1174 11B1;D52A;1111 1174 11B1; # (픪; 픪; 픪; 픪; 픪; ) HANGUL SYLLABLE PYILM
+D52B;D52B;1111 1174 11B2;D52B;1111 1174 11B2; # (픫; 픫; 픫; 픫; 픫; ) HANGUL SYLLABLE PYILB
+D52C;D52C;1111 1174 11B3;D52C;1111 1174 11B3; # (픬; 픬; 픬; 픬; 픬; ) HANGUL SYLLABLE PYILS
+D52D;D52D;1111 1174 11B4;D52D;1111 1174 11B4; # (픭; 픭; 픭; 픭; 픭; ) HANGUL SYLLABLE PYILT
+D52E;D52E;1111 1174 11B5;D52E;1111 1174 11B5; # (픮; 픮; 픮; 픮; 픮; ) HANGUL SYLLABLE PYILP
+D52F;D52F;1111 1174 11B6;D52F;1111 1174 11B6; # (픯; 픯; 픯; 픯; 픯; ) HANGUL SYLLABLE PYILH
+D530;D530;1111 1174 11B7;D530;1111 1174 11B7; # (픰; 픰; 픰; 픰; 픰; ) HANGUL SYLLABLE PYIM
+D531;D531;1111 1174 11B8;D531;1111 1174 11B8; # (픱; 픱; 픱; 픱; 픱; ) HANGUL SYLLABLE PYIB
+D532;D532;1111 1174 11B9;D532;1111 1174 11B9; # (픲; 픲; 픲; 픲; 픲; ) HANGUL SYLLABLE PYIBS
+D533;D533;1111 1174 11BA;D533;1111 1174 11BA; # (픳; 픳; 픳; 픳; 픳; ) HANGUL SYLLABLE PYIS
+D534;D534;1111 1174 11BB;D534;1111 1174 11BB; # (픴; 픴; 픴; 픴; 픴; ) HANGUL SYLLABLE PYISS
+D535;D535;1111 1174 11BC;D535;1111 1174 11BC; # (픵; 픵; 픵; 픵; 픵; ) HANGUL SYLLABLE PYING
+D536;D536;1111 1174 11BD;D536;1111 1174 11BD; # (픶; 픶; 픶; 픶; 픶; ) HANGUL SYLLABLE PYIJ
+D537;D537;1111 1174 11BE;D537;1111 1174 11BE; # (픷; 픷; 픷; 픷; 픷; ) HANGUL SYLLABLE PYIC
+D538;D538;1111 1174 11BF;D538;1111 1174 11BF; # (픸; 픸; 픸; 픸; 픸; ) HANGUL SYLLABLE PYIK
+D539;D539;1111 1174 11C0;D539;1111 1174 11C0; # (픹; 픹; 픹; 픹; 픹; ) HANGUL SYLLABLE PYIT
+D53A;D53A;1111 1174 11C1;D53A;1111 1174 11C1; # (픺; 픺; á„‘á…´á‡; 픺; á„‘á…´á‡; ) HANGUL SYLLABLE PYIP
+D53B;D53B;1111 1174 11C2;D53B;1111 1174 11C2; # (픻; 픻; 픻; 픻; 픻; ) HANGUL SYLLABLE PYIH
+D53C;D53C;1111 1175;D53C;1111 1175; # (피; 피; 피; 피; 피; ) HANGUL SYLLABLE PI
+D53D;D53D;1111 1175 11A8;D53D;1111 1175 11A8; # (픽; 픽; 픽; 픽; 픽; ) HANGUL SYLLABLE PIG
+D53E;D53E;1111 1175 11A9;D53E;1111 1175 11A9; # (픾; 픾; 픾; 픾; 픾; ) HANGUL SYLLABLE PIGG
+D53F;D53F;1111 1175 11AA;D53F;1111 1175 11AA; # (픿; 픿; 픿; 픿; 픿; ) HANGUL SYLLABLE PIGS
+D540;D540;1111 1175 11AB;D540;1111 1175 11AB; # (핀; 핀; 핀; 핀; 핀; ) HANGUL SYLLABLE PIN
+D541;D541;1111 1175 11AC;D541;1111 1175 11AC; # (í•; í•; 핁; í•; 핁; ) HANGUL SYLLABLE PINJ
+D542;D542;1111 1175 11AD;D542;1111 1175 11AD; # (핂; 핂; 핂; 핂; 핂; ) HANGUL SYLLABLE PINH
+D543;D543;1111 1175 11AE;D543;1111 1175 11AE; # (핃; 핃; 핃; 핃; 핃; ) HANGUL SYLLABLE PID
+D544;D544;1111 1175 11AF;D544;1111 1175 11AF; # (필; 필; 필; 필; 필; ) HANGUL SYLLABLE PIL
+D545;D545;1111 1175 11B0;D545;1111 1175 11B0; # (핅; 핅; 핅; 핅; 핅; ) HANGUL SYLLABLE PILG
+D546;D546;1111 1175 11B1;D546;1111 1175 11B1; # (핆; 핆; 핆; 핆; 핆; ) HANGUL SYLLABLE PILM
+D547;D547;1111 1175 11B2;D547;1111 1175 11B2; # (핇; 핇; 핇; 핇; 핇; ) HANGUL SYLLABLE PILB
+D548;D548;1111 1175 11B3;D548;1111 1175 11B3; # (핈; 핈; 핈; 핈; 핈; ) HANGUL SYLLABLE PILS
+D549;D549;1111 1175 11B4;D549;1111 1175 11B4; # (핉; 핉; 핉; 핉; 핉; ) HANGUL SYLLABLE PILT
+D54A;D54A;1111 1175 11B5;D54A;1111 1175 11B5; # (핊; 핊; 핊; 핊; 핊; ) HANGUL SYLLABLE PILP
+D54B;D54B;1111 1175 11B6;D54B;1111 1175 11B6; # (핋; 핋; 핋; 핋; 핋; ) HANGUL SYLLABLE PILH
+D54C;D54C;1111 1175 11B7;D54C;1111 1175 11B7; # (핌; 핌; 핌; 핌; 핌; ) HANGUL SYLLABLE PIM
+D54D;D54D;1111 1175 11B8;D54D;1111 1175 11B8; # (í•; í•; 핍; í•; 핍; ) HANGUL SYLLABLE PIB
+D54E;D54E;1111 1175 11B9;D54E;1111 1175 11B9; # (핎; 핎; 핎; 핎; 핎; ) HANGUL SYLLABLE PIBS
+D54F;D54F;1111 1175 11BA;D54F;1111 1175 11BA; # (í•; í•; 핏; í•; 핏; ) HANGUL SYLLABLE PIS
+D550;D550;1111 1175 11BB;D550;1111 1175 11BB; # (í•; í•; 핐; í•; 핐; ) HANGUL SYLLABLE PISS
+D551;D551;1111 1175 11BC;D551;1111 1175 11BC; # (핑; 핑; 핑; 핑; 핑; ) HANGUL SYLLABLE PING
+D552;D552;1111 1175 11BD;D552;1111 1175 11BD; # (핒; 핒; 핒; 핒; 핒; ) HANGUL SYLLABLE PIJ
+D553;D553;1111 1175 11BE;D553;1111 1175 11BE; # (핓; 핓; 핓; 핓; 핓; ) HANGUL SYLLABLE PIC
+D554;D554;1111 1175 11BF;D554;1111 1175 11BF; # (핔; 핔; 핔; 핔; 핔; ) HANGUL SYLLABLE PIK
+D555;D555;1111 1175 11C0;D555;1111 1175 11C0; # (핕; 핕; 핕; 핕; 핕; ) HANGUL SYLLABLE PIT
+D556;D556;1111 1175 11C1;D556;1111 1175 11C1; # (í•–; í•–; á„‘á…µá‡; í•–; á„‘á…µá‡; ) HANGUL SYLLABLE PIP
+D557;D557;1111 1175 11C2;D557;1111 1175 11C2; # (핗; 핗; 핗; 핗; 핗; ) HANGUL SYLLABLE PIH
+D558;D558;1112 1161;D558;1112 1161; # (하; 하; 하; 하; 하; ) HANGUL SYLLABLE HA
+D559;D559;1112 1161 11A8;D559;1112 1161 11A8; # (학; 학; 학; 학; 학; ) HANGUL SYLLABLE HAG
+D55A;D55A;1112 1161 11A9;D55A;1112 1161 11A9; # (핚; 핚; 핚; 핚; 핚; ) HANGUL SYLLABLE HAGG
+D55B;D55B;1112 1161 11AA;D55B;1112 1161 11AA; # (핛; 핛; 핛; 핛; 핛; ) HANGUL SYLLABLE HAGS
+D55C;D55C;1112 1161 11AB;D55C;1112 1161 11AB; # (한; 한; 한; 한; 한; ) HANGUL SYLLABLE HAN
+D55D;D55D;1112 1161 11AC;D55D;1112 1161 11AC; # (í•; í•; 핝; í•; 핝; ) HANGUL SYLLABLE HANJ
+D55E;D55E;1112 1161 11AD;D55E;1112 1161 11AD; # (핞; 핞; 핞; 핞; 핞; ) HANGUL SYLLABLE HANH
+D55F;D55F;1112 1161 11AE;D55F;1112 1161 11AE; # (핟; 핟; 핟; 핟; 핟; ) HANGUL SYLLABLE HAD
+D560;D560;1112 1161 11AF;D560;1112 1161 11AF; # (할; 할; 할; 할; 할; ) HANGUL SYLLABLE HAL
+D561;D561;1112 1161 11B0;D561;1112 1161 11B0; # (핡; 핡; 핡; 핡; 핡; ) HANGUL SYLLABLE HALG
+D562;D562;1112 1161 11B1;D562;1112 1161 11B1; # (핢; 핢; 핢; 핢; 핢; ) HANGUL SYLLABLE HALM
+D563;D563;1112 1161 11B2;D563;1112 1161 11B2; # (핣; 핣; 핣; 핣; 핣; ) HANGUL SYLLABLE HALB
+D564;D564;1112 1161 11B3;D564;1112 1161 11B3; # (핤; 핤; 핤; 핤; 핤; ) HANGUL SYLLABLE HALS
+D565;D565;1112 1161 11B4;D565;1112 1161 11B4; # (핥; 핥; 핥; 핥; 핥; ) HANGUL SYLLABLE HALT
+D566;D566;1112 1161 11B5;D566;1112 1161 11B5; # (핦; 핦; 핦; 핦; 핦; ) HANGUL SYLLABLE HALP
+D567;D567;1112 1161 11B6;D567;1112 1161 11B6; # (핧; 핧; 핧; 핧; 핧; ) HANGUL SYLLABLE HALH
+D568;D568;1112 1161 11B7;D568;1112 1161 11B7; # (함; 함; 함; 함; 함; ) HANGUL SYLLABLE HAM
+D569;D569;1112 1161 11B8;D569;1112 1161 11B8; # (합; 합; 합; 합; 합; ) HANGUL SYLLABLE HAB
+D56A;D56A;1112 1161 11B9;D56A;1112 1161 11B9; # (핪; 핪; 핪; 핪; 핪; ) HANGUL SYLLABLE HABS
+D56B;D56B;1112 1161 11BA;D56B;1112 1161 11BA; # (핫; 핫; 핫; 핫; 핫; ) HANGUL SYLLABLE HAS
+D56C;D56C;1112 1161 11BB;D56C;1112 1161 11BB; # (핬; 핬; 핬; 핬; 핬; ) HANGUL SYLLABLE HASS
+D56D;D56D;1112 1161 11BC;D56D;1112 1161 11BC; # (항; 항; 항; 항; 항; ) HANGUL SYLLABLE HANG
+D56E;D56E;1112 1161 11BD;D56E;1112 1161 11BD; # (핮; 핮; 핮; 핮; 핮; ) HANGUL SYLLABLE HAJ
+D56F;D56F;1112 1161 11BE;D56F;1112 1161 11BE; # (핯; 핯; 핯; 핯; 핯; ) HANGUL SYLLABLE HAC
+D570;D570;1112 1161 11BF;D570;1112 1161 11BF; # (핰; 핰; 핰; 핰; 핰; ) HANGUL SYLLABLE HAK
+D571;D571;1112 1161 11C0;D571;1112 1161 11C0; # (핱; 핱; 핱; 핱; 핱; ) HANGUL SYLLABLE HAT
+D572;D572;1112 1161 11C1;D572;1112 1161 11C1; # (핲; 핲; á„’á…¡á‡; 핲; á„’á…¡á‡; ) HANGUL SYLLABLE HAP
+D573;D573;1112 1161 11C2;D573;1112 1161 11C2; # (핳; 핳; 핳; 핳; 핳; ) HANGUL SYLLABLE HAH
+D574;D574;1112 1162;D574;1112 1162; # (í•´; í•´; á„’á…¢; í•´; á„’á…¢; ) HANGUL SYLLABLE HAE
+D575;D575;1112 1162 11A8;D575;1112 1162 11A8; # (핵; 핵; 핵; 핵; 핵; ) HANGUL SYLLABLE HAEG
+D576;D576;1112 1162 11A9;D576;1112 1162 11A9; # (핶; 핶; 핶; 핶; 핶; ) HANGUL SYLLABLE HAEGG
+D577;D577;1112 1162 11AA;D577;1112 1162 11AA; # (핷; 핷; 핷; 핷; 핷; ) HANGUL SYLLABLE HAEGS
+D578;D578;1112 1162 11AB;D578;1112 1162 11AB; # (핸; 핸; 핸; 핸; 핸; ) HANGUL SYLLABLE HAEN
+D579;D579;1112 1162 11AC;D579;1112 1162 11AC; # (핹; 핹; 핹; 핹; 핹; ) HANGUL SYLLABLE HAENJ
+D57A;D57A;1112 1162 11AD;D57A;1112 1162 11AD; # (핺; 핺; 핺; 핺; 핺; ) HANGUL SYLLABLE HAENH
+D57B;D57B;1112 1162 11AE;D57B;1112 1162 11AE; # (핻; 핻; 핻; 핻; 핻; ) HANGUL SYLLABLE HAED
+D57C;D57C;1112 1162 11AF;D57C;1112 1162 11AF; # (핼; 핼; 핼; 핼; 핼; ) HANGUL SYLLABLE HAEL
+D57D;D57D;1112 1162 11B0;D57D;1112 1162 11B0; # (핽; 핽; 핽; 핽; 핽; ) HANGUL SYLLABLE HAELG
+D57E;D57E;1112 1162 11B1;D57E;1112 1162 11B1; # (핾; 핾; 핾; 핾; 핾; ) HANGUL SYLLABLE HAELM
+D57F;D57F;1112 1162 11B2;D57F;1112 1162 11B2; # (핿; 핿; 핿; 핿; 핿; ) HANGUL SYLLABLE HAELB
+D580;D580;1112 1162 11B3;D580;1112 1162 11B3; # (햀; 햀; 햀; 햀; 햀; ) HANGUL SYLLABLE HAELS
+D581;D581;1112 1162 11B4;D581;1112 1162 11B4; # (í–; í–; 햁; í–; 햁; ) HANGUL SYLLABLE HAELT
+D582;D582;1112 1162 11B5;D582;1112 1162 11B5; # (햂; 햂; 햂; 햂; 햂; ) HANGUL SYLLABLE HAELP
+D583;D583;1112 1162 11B6;D583;1112 1162 11B6; # (햃; 햃; 햃; 햃; 햃; ) HANGUL SYLLABLE HAELH
+D584;D584;1112 1162 11B7;D584;1112 1162 11B7; # (햄; 햄; 햄; 햄; 햄; ) HANGUL SYLLABLE HAEM
+D585;D585;1112 1162 11B8;D585;1112 1162 11B8; # (햅; 햅; 햅; 햅; 햅; ) HANGUL SYLLABLE HAEB
+D586;D586;1112 1162 11B9;D586;1112 1162 11B9; # (햆; 햆; 햆; 햆; 햆; ) HANGUL SYLLABLE HAEBS
+D587;D587;1112 1162 11BA;D587;1112 1162 11BA; # (햇; 햇; 햇; 햇; 햇; ) HANGUL SYLLABLE HAES
+D588;D588;1112 1162 11BB;D588;1112 1162 11BB; # (했; 했; 했; 했; 했; ) HANGUL SYLLABLE HAESS
+D589;D589;1112 1162 11BC;D589;1112 1162 11BC; # (행; 행; 행; 행; 행; ) HANGUL SYLLABLE HAENG
+D58A;D58A;1112 1162 11BD;D58A;1112 1162 11BD; # (햊; 햊; 햊; 햊; 햊; ) HANGUL SYLLABLE HAEJ
+D58B;D58B;1112 1162 11BE;D58B;1112 1162 11BE; # (햋; 햋; 햋; 햋; 햋; ) HANGUL SYLLABLE HAEC
+D58C;D58C;1112 1162 11BF;D58C;1112 1162 11BF; # (햌; 햌; 햌; 햌; 햌; ) HANGUL SYLLABLE HAEK
+D58D;D58D;1112 1162 11C0;D58D;1112 1162 11C0; # (í–; í–; 햍; í–; 햍; ) HANGUL SYLLABLE HAET
+D58E;D58E;1112 1162 11C1;D58E;1112 1162 11C1; # (í–Ž; í–Ž; á„’á…¢á‡; í–Ž; á„’á…¢á‡; ) HANGUL SYLLABLE HAEP
+D58F;D58F;1112 1162 11C2;D58F;1112 1162 11C2; # (í–; í–; 햏; í–; 햏; ) HANGUL SYLLABLE HAEH
+D590;D590;1112 1163;D590;1112 1163; # (í–; í–; á„’á…£; í–; á„’á…£; ) HANGUL SYLLABLE HYA
+D591;D591;1112 1163 11A8;D591;1112 1163 11A8; # (햑; 햑; 햑; 햑; 햑; ) HANGUL SYLLABLE HYAG
+D592;D592;1112 1163 11A9;D592;1112 1163 11A9; # (햒; 햒; 햒; 햒; 햒; ) HANGUL SYLLABLE HYAGG
+D593;D593;1112 1163 11AA;D593;1112 1163 11AA; # (햓; 햓; 햓; 햓; 햓; ) HANGUL SYLLABLE HYAGS
+D594;D594;1112 1163 11AB;D594;1112 1163 11AB; # (햔; 햔; 햔; 햔; 햔; ) HANGUL SYLLABLE HYAN
+D595;D595;1112 1163 11AC;D595;1112 1163 11AC; # (햕; 햕; 햕; 햕; 햕; ) HANGUL SYLLABLE HYANJ
+D596;D596;1112 1163 11AD;D596;1112 1163 11AD; # (햖; 햖; 햖; 햖; 햖; ) HANGUL SYLLABLE HYANH
+D597;D597;1112 1163 11AE;D597;1112 1163 11AE; # (햗; 햗; 햗; 햗; 햗; ) HANGUL SYLLABLE HYAD
+D598;D598;1112 1163 11AF;D598;1112 1163 11AF; # (햘; 햘; 햘; 햘; 햘; ) HANGUL SYLLABLE HYAL
+D599;D599;1112 1163 11B0;D599;1112 1163 11B0; # (햙; 햙; 햙; 햙; 햙; ) HANGUL SYLLABLE HYALG
+D59A;D59A;1112 1163 11B1;D59A;1112 1163 11B1; # (햚; 햚; 햚; 햚; 햚; ) HANGUL SYLLABLE HYALM
+D59B;D59B;1112 1163 11B2;D59B;1112 1163 11B2; # (햛; 햛; 햛; 햛; 햛; ) HANGUL SYLLABLE HYALB
+D59C;D59C;1112 1163 11B3;D59C;1112 1163 11B3; # (햜; 햜; 햜; 햜; 햜; ) HANGUL SYLLABLE HYALS
+D59D;D59D;1112 1163 11B4;D59D;1112 1163 11B4; # (í–; í–; 햝; í–; 햝; ) HANGUL SYLLABLE HYALT
+D59E;D59E;1112 1163 11B5;D59E;1112 1163 11B5; # (햞; 햞; 햞; 햞; 햞; ) HANGUL SYLLABLE HYALP
+D59F;D59F;1112 1163 11B6;D59F;1112 1163 11B6; # (햟; 햟; 햟; 햟; 햟; ) HANGUL SYLLABLE HYALH
+D5A0;D5A0;1112 1163 11B7;D5A0;1112 1163 11B7; # (햠; 햠; 햠; 햠; 햠; ) HANGUL SYLLABLE HYAM
+D5A1;D5A1;1112 1163 11B8;D5A1;1112 1163 11B8; # (햡; 햡; 햡; 햡; 햡; ) HANGUL SYLLABLE HYAB
+D5A2;D5A2;1112 1163 11B9;D5A2;1112 1163 11B9; # (햢; 햢; 햢; 햢; 햢; ) HANGUL SYLLABLE HYABS
+D5A3;D5A3;1112 1163 11BA;D5A3;1112 1163 11BA; # (햣; 햣; 햣; 햣; 햣; ) HANGUL SYLLABLE HYAS
+D5A4;D5A4;1112 1163 11BB;D5A4;1112 1163 11BB; # (햤; 햤; 햤; 햤; 햤; ) HANGUL SYLLABLE HYASS
+D5A5;D5A5;1112 1163 11BC;D5A5;1112 1163 11BC; # (향; 향; 향; 향; 향; ) HANGUL SYLLABLE HYANG
+D5A6;D5A6;1112 1163 11BD;D5A6;1112 1163 11BD; # (햦; 햦; 햦; 햦; 햦; ) HANGUL SYLLABLE HYAJ
+D5A7;D5A7;1112 1163 11BE;D5A7;1112 1163 11BE; # (햧; 햧; 햧; 햧; 햧; ) HANGUL SYLLABLE HYAC
+D5A8;D5A8;1112 1163 11BF;D5A8;1112 1163 11BF; # (햨; 햨; 햨; 햨; 햨; ) HANGUL SYLLABLE HYAK
+D5A9;D5A9;1112 1163 11C0;D5A9;1112 1163 11C0; # (햩; 햩; 햩; 햩; 햩; ) HANGUL SYLLABLE HYAT
+D5AA;D5AA;1112 1163 11C1;D5AA;1112 1163 11C1; # (í–ª; í–ª; á„’á…£á‡; í–ª; á„’á…£á‡; ) HANGUL SYLLABLE HYAP
+D5AB;D5AB;1112 1163 11C2;D5AB;1112 1163 11C2; # (햫; 햫; 햫; 햫; 햫; ) HANGUL SYLLABLE HYAH
+D5AC;D5AC;1112 1164;D5AC;1112 1164; # (í–¬; í–¬; á„’á…¤; í–¬; á„’á…¤; ) HANGUL SYLLABLE HYAE
+D5AD;D5AD;1112 1164 11A8;D5AD;1112 1164 11A8; # (햭; 햭; 햭; 햭; 햭; ) HANGUL SYLLABLE HYAEG
+D5AE;D5AE;1112 1164 11A9;D5AE;1112 1164 11A9; # (햮; 햮; 햮; 햮; 햮; ) HANGUL SYLLABLE HYAEGG
+D5AF;D5AF;1112 1164 11AA;D5AF;1112 1164 11AA; # (햯; 햯; 햯; 햯; 햯; ) HANGUL SYLLABLE HYAEGS
+D5B0;D5B0;1112 1164 11AB;D5B0;1112 1164 11AB; # (햰; 햰; 햰; 햰; 햰; ) HANGUL SYLLABLE HYAEN
+D5B1;D5B1;1112 1164 11AC;D5B1;1112 1164 11AC; # (햱; 햱; 햱; 햱; 햱; ) HANGUL SYLLABLE HYAENJ
+D5B2;D5B2;1112 1164 11AD;D5B2;1112 1164 11AD; # (햲; 햲; 햲; 햲; 햲; ) HANGUL SYLLABLE HYAENH
+D5B3;D5B3;1112 1164 11AE;D5B3;1112 1164 11AE; # (햳; 햳; 햳; 햳; 햳; ) HANGUL SYLLABLE HYAED
+D5B4;D5B4;1112 1164 11AF;D5B4;1112 1164 11AF; # (햴; 햴; 햴; 햴; 햴; ) HANGUL SYLLABLE HYAEL
+D5B5;D5B5;1112 1164 11B0;D5B5;1112 1164 11B0; # (햵; 햵; 햵; 햵; 햵; ) HANGUL SYLLABLE HYAELG
+D5B6;D5B6;1112 1164 11B1;D5B6;1112 1164 11B1; # (햶; 햶; 햶; 햶; 햶; ) HANGUL SYLLABLE HYAELM
+D5B7;D5B7;1112 1164 11B2;D5B7;1112 1164 11B2; # (햷; 햷; 햷; 햷; 햷; ) HANGUL SYLLABLE HYAELB
+D5B8;D5B8;1112 1164 11B3;D5B8;1112 1164 11B3; # (햸; 햸; 햸; 햸; 햸; ) HANGUL SYLLABLE HYAELS
+D5B9;D5B9;1112 1164 11B4;D5B9;1112 1164 11B4; # (햹; 햹; 햹; 햹; 햹; ) HANGUL SYLLABLE HYAELT
+D5BA;D5BA;1112 1164 11B5;D5BA;1112 1164 11B5; # (햺; 햺; 햺; 햺; 햺; ) HANGUL SYLLABLE HYAELP
+D5BB;D5BB;1112 1164 11B6;D5BB;1112 1164 11B6; # (햻; 햻; 햻; 햻; 햻; ) HANGUL SYLLABLE HYAELH
+D5BC;D5BC;1112 1164 11B7;D5BC;1112 1164 11B7; # (햼; 햼; 햼; 햼; 햼; ) HANGUL SYLLABLE HYAEM
+D5BD;D5BD;1112 1164 11B8;D5BD;1112 1164 11B8; # (햽; 햽; 햽; 햽; 햽; ) HANGUL SYLLABLE HYAEB
+D5BE;D5BE;1112 1164 11B9;D5BE;1112 1164 11B9; # (햾; 햾; 햾; 햾; 햾; ) HANGUL SYLLABLE HYAEBS
+D5BF;D5BF;1112 1164 11BA;D5BF;1112 1164 11BA; # (햿; 햿; 햿; 햿; 햿; ) HANGUL SYLLABLE HYAES
+D5C0;D5C0;1112 1164 11BB;D5C0;1112 1164 11BB; # (헀; 헀; 헀; 헀; 헀; ) HANGUL SYLLABLE HYAESS
+D5C1;D5C1;1112 1164 11BC;D5C1;1112 1164 11BC; # (í—; í—; 헁; í—; 헁; ) HANGUL SYLLABLE HYAENG
+D5C2;D5C2;1112 1164 11BD;D5C2;1112 1164 11BD; # (헂; 헂; 헂; 헂; 헂; ) HANGUL SYLLABLE HYAEJ
+D5C3;D5C3;1112 1164 11BE;D5C3;1112 1164 11BE; # (헃; 헃; 헃; 헃; 헃; ) HANGUL SYLLABLE HYAEC
+D5C4;D5C4;1112 1164 11BF;D5C4;1112 1164 11BF; # (헄; 헄; 헄; 헄; 헄; ) HANGUL SYLLABLE HYAEK
+D5C5;D5C5;1112 1164 11C0;D5C5;1112 1164 11C0; # (헅; 헅; 헅; 헅; 헅; ) HANGUL SYLLABLE HYAET
+D5C6;D5C6;1112 1164 11C1;D5C6;1112 1164 11C1; # (í—†; í—†; á„’á…¤á‡; í—†; á„’á…¤á‡; ) HANGUL SYLLABLE HYAEP
+D5C7;D5C7;1112 1164 11C2;D5C7;1112 1164 11C2; # (헇; 헇; 헇; 헇; 헇; ) HANGUL SYLLABLE HYAEH
+D5C8;D5C8;1112 1165;D5C8;1112 1165; # (í—ˆ; í—ˆ; á„’á…¥; í—ˆ; á„’á…¥; ) HANGUL SYLLABLE HEO
+D5C9;D5C9;1112 1165 11A8;D5C9;1112 1165 11A8; # (헉; 헉; 헉; 헉; 헉; ) HANGUL SYLLABLE HEOG
+D5CA;D5CA;1112 1165 11A9;D5CA;1112 1165 11A9; # (헊; 헊; 헊; 헊; 헊; ) HANGUL SYLLABLE HEOGG
+D5CB;D5CB;1112 1165 11AA;D5CB;1112 1165 11AA; # (헋; 헋; 헋; 헋; 헋; ) HANGUL SYLLABLE HEOGS
+D5CC;D5CC;1112 1165 11AB;D5CC;1112 1165 11AB; # (헌; 헌; 헌; 헌; 헌; ) HANGUL SYLLABLE HEON
+D5CD;D5CD;1112 1165 11AC;D5CD;1112 1165 11AC; # (í—; í—; 헍; í—; 헍; ) HANGUL SYLLABLE HEONJ
+D5CE;D5CE;1112 1165 11AD;D5CE;1112 1165 11AD; # (헎; 헎; 헎; 헎; 헎; ) HANGUL SYLLABLE HEONH
+D5CF;D5CF;1112 1165 11AE;D5CF;1112 1165 11AE; # (í—; í—; 헏; í—; 헏; ) HANGUL SYLLABLE HEOD
+D5D0;D5D0;1112 1165 11AF;D5D0;1112 1165 11AF; # (í—; í—; 헐; í—; 헐; ) HANGUL SYLLABLE HEOL
+D5D1;D5D1;1112 1165 11B0;D5D1;1112 1165 11B0; # (헑; 헑; 헑; 헑; 헑; ) HANGUL SYLLABLE HEOLG
+D5D2;D5D2;1112 1165 11B1;D5D2;1112 1165 11B1; # (헒; 헒; 헒; 헒; 헒; ) HANGUL SYLLABLE HEOLM
+D5D3;D5D3;1112 1165 11B2;D5D3;1112 1165 11B2; # (헓; 헓; 헓; 헓; 헓; ) HANGUL SYLLABLE HEOLB
+D5D4;D5D4;1112 1165 11B3;D5D4;1112 1165 11B3; # (헔; 헔; 헔; 헔; 헔; ) HANGUL SYLLABLE HEOLS
+D5D5;D5D5;1112 1165 11B4;D5D5;1112 1165 11B4; # (헕; 헕; 헕; 헕; 헕; ) HANGUL SYLLABLE HEOLT
+D5D6;D5D6;1112 1165 11B5;D5D6;1112 1165 11B5; # (헖; 헖; 헖; 헖; 헖; ) HANGUL SYLLABLE HEOLP
+D5D7;D5D7;1112 1165 11B6;D5D7;1112 1165 11B6; # (헗; 헗; 헗; 헗; 헗; ) HANGUL SYLLABLE HEOLH
+D5D8;D5D8;1112 1165 11B7;D5D8;1112 1165 11B7; # (험; 험; 험; 험; 험; ) HANGUL SYLLABLE HEOM
+D5D9;D5D9;1112 1165 11B8;D5D9;1112 1165 11B8; # (헙; 헙; 헙; 헙; 헙; ) HANGUL SYLLABLE HEOB
+D5DA;D5DA;1112 1165 11B9;D5DA;1112 1165 11B9; # (헚; 헚; 헚; 헚; 헚; ) HANGUL SYLLABLE HEOBS
+D5DB;D5DB;1112 1165 11BA;D5DB;1112 1165 11BA; # (헛; 헛; 헛; 헛; 헛; ) HANGUL SYLLABLE HEOS
+D5DC;D5DC;1112 1165 11BB;D5DC;1112 1165 11BB; # (헜; 헜; 헜; 헜; 헜; ) HANGUL SYLLABLE HEOSS
+D5DD;D5DD;1112 1165 11BC;D5DD;1112 1165 11BC; # (í—; í—; 헝; í—; 헝; ) HANGUL SYLLABLE HEONG
+D5DE;D5DE;1112 1165 11BD;D5DE;1112 1165 11BD; # (헞; 헞; 헞; 헞; 헞; ) HANGUL SYLLABLE HEOJ
+D5DF;D5DF;1112 1165 11BE;D5DF;1112 1165 11BE; # (헟; 헟; 헟; 헟; 헟; ) HANGUL SYLLABLE HEOC
+D5E0;D5E0;1112 1165 11BF;D5E0;1112 1165 11BF; # (헠; 헠; 헠; 헠; 헠; ) HANGUL SYLLABLE HEOK
+D5E1;D5E1;1112 1165 11C0;D5E1;1112 1165 11C0; # (헡; 헡; 헡; 헡; 헡; ) HANGUL SYLLABLE HEOT
+D5E2;D5E2;1112 1165 11C1;D5E2;1112 1165 11C1; # (í—¢; í—¢; á„’á…¥á‡; í—¢; á„’á…¥á‡; ) HANGUL SYLLABLE HEOP
+D5E3;D5E3;1112 1165 11C2;D5E3;1112 1165 11C2; # (헣; 헣; 헣; 헣; 헣; ) HANGUL SYLLABLE HEOH
+D5E4;D5E4;1112 1166;D5E4;1112 1166; # (í—¤; í—¤; á„’á…¦; í—¤; á„’á…¦; ) HANGUL SYLLABLE HE
+D5E5;D5E5;1112 1166 11A8;D5E5;1112 1166 11A8; # (헥; 헥; 헥; 헥; 헥; ) HANGUL SYLLABLE HEG
+D5E6;D5E6;1112 1166 11A9;D5E6;1112 1166 11A9; # (헦; 헦; 헦; 헦; 헦; ) HANGUL SYLLABLE HEGG
+D5E7;D5E7;1112 1166 11AA;D5E7;1112 1166 11AA; # (헧; 헧; 헧; 헧; 헧; ) HANGUL SYLLABLE HEGS
+D5E8;D5E8;1112 1166 11AB;D5E8;1112 1166 11AB; # (헨; 헨; 헨; 헨; 헨; ) HANGUL SYLLABLE HEN
+D5E9;D5E9;1112 1166 11AC;D5E9;1112 1166 11AC; # (헩; 헩; 헩; 헩; 헩; ) HANGUL SYLLABLE HENJ
+D5EA;D5EA;1112 1166 11AD;D5EA;1112 1166 11AD; # (헪; 헪; 헪; 헪; 헪; ) HANGUL SYLLABLE HENH
+D5EB;D5EB;1112 1166 11AE;D5EB;1112 1166 11AE; # (헫; 헫; 헫; 헫; 헫; ) HANGUL SYLLABLE HED
+D5EC;D5EC;1112 1166 11AF;D5EC;1112 1166 11AF; # (헬; 헬; 헬; 헬; 헬; ) HANGUL SYLLABLE HEL
+D5ED;D5ED;1112 1166 11B0;D5ED;1112 1166 11B0; # (헭; 헭; 헭; 헭; 헭; ) HANGUL SYLLABLE HELG
+D5EE;D5EE;1112 1166 11B1;D5EE;1112 1166 11B1; # (헮; 헮; 헮; 헮; 헮; ) HANGUL SYLLABLE HELM
+D5EF;D5EF;1112 1166 11B2;D5EF;1112 1166 11B2; # (헯; 헯; 헯; 헯; 헯; ) HANGUL SYLLABLE HELB
+D5F0;D5F0;1112 1166 11B3;D5F0;1112 1166 11B3; # (헰; 헰; 헰; 헰; 헰; ) HANGUL SYLLABLE HELS
+D5F1;D5F1;1112 1166 11B4;D5F1;1112 1166 11B4; # (헱; 헱; 헱; 헱; 헱; ) HANGUL SYLLABLE HELT
+D5F2;D5F2;1112 1166 11B5;D5F2;1112 1166 11B5; # (헲; 헲; 헲; 헲; 헲; ) HANGUL SYLLABLE HELP
+D5F3;D5F3;1112 1166 11B6;D5F3;1112 1166 11B6; # (헳; 헳; 헳; 헳; 헳; ) HANGUL SYLLABLE HELH
+D5F4;D5F4;1112 1166 11B7;D5F4;1112 1166 11B7; # (헴; 헴; 헴; 헴; 헴; ) HANGUL SYLLABLE HEM
+D5F5;D5F5;1112 1166 11B8;D5F5;1112 1166 11B8; # (헵; 헵; 헵; 헵; 헵; ) HANGUL SYLLABLE HEB
+D5F6;D5F6;1112 1166 11B9;D5F6;1112 1166 11B9; # (헶; 헶; 헶; 헶; 헶; ) HANGUL SYLLABLE HEBS
+D5F7;D5F7;1112 1166 11BA;D5F7;1112 1166 11BA; # (헷; 헷; 헷; 헷; 헷; ) HANGUL SYLLABLE HES
+D5F8;D5F8;1112 1166 11BB;D5F8;1112 1166 11BB; # (헸; 헸; 헸; 헸; 헸; ) HANGUL SYLLABLE HESS
+D5F9;D5F9;1112 1166 11BC;D5F9;1112 1166 11BC; # (헹; 헹; 헹; 헹; 헹; ) HANGUL SYLLABLE HENG
+D5FA;D5FA;1112 1166 11BD;D5FA;1112 1166 11BD; # (헺; 헺; 헺; 헺; 헺; ) HANGUL SYLLABLE HEJ
+D5FB;D5FB;1112 1166 11BE;D5FB;1112 1166 11BE; # (헻; 헻; 헻; 헻; 헻; ) HANGUL SYLLABLE HEC
+D5FC;D5FC;1112 1166 11BF;D5FC;1112 1166 11BF; # (헼; 헼; 헼; 헼; 헼; ) HANGUL SYLLABLE HEK
+D5FD;D5FD;1112 1166 11C0;D5FD;1112 1166 11C0; # (헽; 헽; 헽; 헽; 헽; ) HANGUL SYLLABLE HET
+D5FE;D5FE;1112 1166 11C1;D5FE;1112 1166 11C1; # (í—¾; í—¾; á„’á…¦á‡; í—¾; á„’á…¦á‡; ) HANGUL SYLLABLE HEP
+D5FF;D5FF;1112 1166 11C2;D5FF;1112 1166 11C2; # (헿; 헿; 헿; 헿; 헿; ) HANGUL SYLLABLE HEH
+D600;D600;1112 1167;D600;1112 1167; # (혀; 혀; 혀; 혀; 혀; ) HANGUL SYLLABLE HYEO
+D601;D601;1112 1167 11A8;D601;1112 1167 11A8; # (í˜; í˜; 혁; í˜; 혁; ) HANGUL SYLLABLE HYEOG
+D602;D602;1112 1167 11A9;D602;1112 1167 11A9; # (혂; 혂; 혂; 혂; 혂; ) HANGUL SYLLABLE HYEOGG
+D603;D603;1112 1167 11AA;D603;1112 1167 11AA; # (혃; 혃; 혃; 혃; 혃; ) HANGUL SYLLABLE HYEOGS
+D604;D604;1112 1167 11AB;D604;1112 1167 11AB; # (현; 현; 현; 현; 현; ) HANGUL SYLLABLE HYEON
+D605;D605;1112 1167 11AC;D605;1112 1167 11AC; # (혅; 혅; 혅; 혅; 혅; ) HANGUL SYLLABLE HYEONJ
+D606;D606;1112 1167 11AD;D606;1112 1167 11AD; # (혆; 혆; 혆; 혆; 혆; ) HANGUL SYLLABLE HYEONH
+D607;D607;1112 1167 11AE;D607;1112 1167 11AE; # (혇; 혇; 혇; 혇; 혇; ) HANGUL SYLLABLE HYEOD
+D608;D608;1112 1167 11AF;D608;1112 1167 11AF; # (혈; 혈; 혈; 혈; 혈; ) HANGUL SYLLABLE HYEOL
+D609;D609;1112 1167 11B0;D609;1112 1167 11B0; # (혉; 혉; 혉; 혉; 혉; ) HANGUL SYLLABLE HYEOLG
+D60A;D60A;1112 1167 11B1;D60A;1112 1167 11B1; # (혊; 혊; 혊; 혊; 혊; ) HANGUL SYLLABLE HYEOLM
+D60B;D60B;1112 1167 11B2;D60B;1112 1167 11B2; # (혋; 혋; 혋; 혋; 혋; ) HANGUL SYLLABLE HYEOLB
+D60C;D60C;1112 1167 11B3;D60C;1112 1167 11B3; # (혌; 혌; 혌; 혌; 혌; ) HANGUL SYLLABLE HYEOLS
+D60D;D60D;1112 1167 11B4;D60D;1112 1167 11B4; # (í˜; í˜; 혍; í˜; 혍; ) HANGUL SYLLABLE HYEOLT
+D60E;D60E;1112 1167 11B5;D60E;1112 1167 11B5; # (혎; 혎; 혎; 혎; 혎; ) HANGUL SYLLABLE HYEOLP
+D60F;D60F;1112 1167 11B6;D60F;1112 1167 11B6; # (í˜; í˜; 혏; í˜; 혏; ) HANGUL SYLLABLE HYEOLH
+D610;D610;1112 1167 11B7;D610;1112 1167 11B7; # (í˜; í˜; 혐; í˜; 혐; ) HANGUL SYLLABLE HYEOM
+D611;D611;1112 1167 11B8;D611;1112 1167 11B8; # (협; 협; 협; 협; 협; ) HANGUL SYLLABLE HYEOB
+D612;D612;1112 1167 11B9;D612;1112 1167 11B9; # (혒; 혒; 혒; 혒; 혒; ) HANGUL SYLLABLE HYEOBS
+D613;D613;1112 1167 11BA;D613;1112 1167 11BA; # (혓; 혓; 혓; 혓; 혓; ) HANGUL SYLLABLE HYEOS
+D614;D614;1112 1167 11BB;D614;1112 1167 11BB; # (혔; 혔; 혔; 혔; 혔; ) HANGUL SYLLABLE HYEOSS
+D615;D615;1112 1167 11BC;D615;1112 1167 11BC; # (형; 형; 형; 형; 형; ) HANGUL SYLLABLE HYEONG
+D616;D616;1112 1167 11BD;D616;1112 1167 11BD; # (혖; 혖; 혖; 혖; 혖; ) HANGUL SYLLABLE HYEOJ
+D617;D617;1112 1167 11BE;D617;1112 1167 11BE; # (혗; 혗; 혗; 혗; 혗; ) HANGUL SYLLABLE HYEOC
+D618;D618;1112 1167 11BF;D618;1112 1167 11BF; # (혘; 혘; 혘; 혘; 혘; ) HANGUL SYLLABLE HYEOK
+D619;D619;1112 1167 11C0;D619;1112 1167 11C0; # (혙; 혙; 혙; 혙; 혙; ) HANGUL SYLLABLE HYEOT
+D61A;D61A;1112 1167 11C1;D61A;1112 1167 11C1; # (혚; 혚; á„’á…§á‡; 혚; á„’á…§á‡; ) HANGUL SYLLABLE HYEOP
+D61B;D61B;1112 1167 11C2;D61B;1112 1167 11C2; # (혛; 혛; 혛; 혛; 혛; ) HANGUL SYLLABLE HYEOH
+D61C;D61C;1112 1168;D61C;1112 1168; # (혜; 혜; 혜; 혜; 혜; ) HANGUL SYLLABLE HYE
+D61D;D61D;1112 1168 11A8;D61D;1112 1168 11A8; # (í˜; í˜; 혝; í˜; 혝; ) HANGUL SYLLABLE HYEG
+D61E;D61E;1112 1168 11A9;D61E;1112 1168 11A9; # (혞; 혞; 혞; 혞; 혞; ) HANGUL SYLLABLE HYEGG
+D61F;D61F;1112 1168 11AA;D61F;1112 1168 11AA; # (혟; 혟; 혟; 혟; 혟; ) HANGUL SYLLABLE HYEGS
+D620;D620;1112 1168 11AB;D620;1112 1168 11AB; # (혠; 혠; 혠; 혠; 혠; ) HANGUL SYLLABLE HYEN
+D621;D621;1112 1168 11AC;D621;1112 1168 11AC; # (혡; 혡; 혡; 혡; 혡; ) HANGUL SYLLABLE HYENJ
+D622;D622;1112 1168 11AD;D622;1112 1168 11AD; # (혢; 혢; 혢; 혢; 혢; ) HANGUL SYLLABLE HYENH
+D623;D623;1112 1168 11AE;D623;1112 1168 11AE; # (혣; 혣; 혣; 혣; 혣; ) HANGUL SYLLABLE HYED
+D624;D624;1112 1168 11AF;D624;1112 1168 11AF; # (혤; 혤; 혤; 혤; 혤; ) HANGUL SYLLABLE HYEL
+D625;D625;1112 1168 11B0;D625;1112 1168 11B0; # (혥; 혥; 혥; 혥; 혥; ) HANGUL SYLLABLE HYELG
+D626;D626;1112 1168 11B1;D626;1112 1168 11B1; # (혦; 혦; 혦; 혦; 혦; ) HANGUL SYLLABLE HYELM
+D627;D627;1112 1168 11B2;D627;1112 1168 11B2; # (혧; 혧; 혧; 혧; 혧; ) HANGUL SYLLABLE HYELB
+D628;D628;1112 1168 11B3;D628;1112 1168 11B3; # (혨; 혨; 혨; 혨; 혨; ) HANGUL SYLLABLE HYELS
+D629;D629;1112 1168 11B4;D629;1112 1168 11B4; # (혩; 혩; 혩; 혩; 혩; ) HANGUL SYLLABLE HYELT
+D62A;D62A;1112 1168 11B5;D62A;1112 1168 11B5; # (혪; 혪; 혪; 혪; 혪; ) HANGUL SYLLABLE HYELP
+D62B;D62B;1112 1168 11B6;D62B;1112 1168 11B6; # (혫; 혫; 혫; 혫; 혫; ) HANGUL SYLLABLE HYELH
+D62C;D62C;1112 1168 11B7;D62C;1112 1168 11B7; # (혬; 혬; 혬; 혬; 혬; ) HANGUL SYLLABLE HYEM
+D62D;D62D;1112 1168 11B8;D62D;1112 1168 11B8; # (혭; 혭; 혭; 혭; 혭; ) HANGUL SYLLABLE HYEB
+D62E;D62E;1112 1168 11B9;D62E;1112 1168 11B9; # (혮; 혮; 혮; 혮; 혮; ) HANGUL SYLLABLE HYEBS
+D62F;D62F;1112 1168 11BA;D62F;1112 1168 11BA; # (혯; 혯; 혯; 혯; 혯; ) HANGUL SYLLABLE HYES
+D630;D630;1112 1168 11BB;D630;1112 1168 11BB; # (혰; 혰; 혰; 혰; 혰; ) HANGUL SYLLABLE HYESS
+D631;D631;1112 1168 11BC;D631;1112 1168 11BC; # (혱; 혱; 혱; 혱; 혱; ) HANGUL SYLLABLE HYENG
+D632;D632;1112 1168 11BD;D632;1112 1168 11BD; # (혲; 혲; 혲; 혲; 혲; ) HANGUL SYLLABLE HYEJ
+D633;D633;1112 1168 11BE;D633;1112 1168 11BE; # (혳; 혳; 혳; 혳; 혳; ) HANGUL SYLLABLE HYEC
+D634;D634;1112 1168 11BF;D634;1112 1168 11BF; # (혴; 혴; 혴; 혴; 혴; ) HANGUL SYLLABLE HYEK
+D635;D635;1112 1168 11C0;D635;1112 1168 11C0; # (혵; 혵; 혵; 혵; 혵; ) HANGUL SYLLABLE HYET
+D636;D636;1112 1168 11C1;D636;1112 1168 11C1; # (혶; 혶; á„’á…¨á‡; 혶; á„’á…¨á‡; ) HANGUL SYLLABLE HYEP
+D637;D637;1112 1168 11C2;D637;1112 1168 11C2; # (혷; 혷; 혷; 혷; 혷; ) HANGUL SYLLABLE HYEH
+D638;D638;1112 1169;D638;1112 1169; # (호; 호; 호; 호; 호; ) HANGUL SYLLABLE HO
+D639;D639;1112 1169 11A8;D639;1112 1169 11A8; # (혹; 혹; 혹; 혹; 혹; ) HANGUL SYLLABLE HOG
+D63A;D63A;1112 1169 11A9;D63A;1112 1169 11A9; # (혺; 혺; 혺; 혺; 혺; ) HANGUL SYLLABLE HOGG
+D63B;D63B;1112 1169 11AA;D63B;1112 1169 11AA; # (혻; 혻; 혻; 혻; 혻; ) HANGUL SYLLABLE HOGS
+D63C;D63C;1112 1169 11AB;D63C;1112 1169 11AB; # (혼; 혼; 혼; 혼; 혼; ) HANGUL SYLLABLE HON
+D63D;D63D;1112 1169 11AC;D63D;1112 1169 11AC; # (혽; 혽; 혽; 혽; 혽; ) HANGUL SYLLABLE HONJ
+D63E;D63E;1112 1169 11AD;D63E;1112 1169 11AD; # (혾; 혾; 혾; 혾; 혾; ) HANGUL SYLLABLE HONH
+D63F;D63F;1112 1169 11AE;D63F;1112 1169 11AE; # (혿; 혿; 혿; 혿; 혿; ) HANGUL SYLLABLE HOD
+D640;D640;1112 1169 11AF;D640;1112 1169 11AF; # (홀; 홀; 홀; 홀; 홀; ) HANGUL SYLLABLE HOL
+D641;D641;1112 1169 11B0;D641;1112 1169 11B0; # (í™; í™; 홁; í™; 홁; ) HANGUL SYLLABLE HOLG
+D642;D642;1112 1169 11B1;D642;1112 1169 11B1; # (홂; 홂; 홂; 홂; 홂; ) HANGUL SYLLABLE HOLM
+D643;D643;1112 1169 11B2;D643;1112 1169 11B2; # (홃; 홃; 홃; 홃; 홃; ) HANGUL SYLLABLE HOLB
+D644;D644;1112 1169 11B3;D644;1112 1169 11B3; # (홄; 홄; 홄; 홄; 홄; ) HANGUL SYLLABLE HOLS
+D645;D645;1112 1169 11B4;D645;1112 1169 11B4; # (홅; 홅; 홅; 홅; 홅; ) HANGUL SYLLABLE HOLT
+D646;D646;1112 1169 11B5;D646;1112 1169 11B5; # (홆; 홆; 홆; 홆; 홆; ) HANGUL SYLLABLE HOLP
+D647;D647;1112 1169 11B6;D647;1112 1169 11B6; # (홇; 홇; 홇; 홇; 홇; ) HANGUL SYLLABLE HOLH
+D648;D648;1112 1169 11B7;D648;1112 1169 11B7; # (홈; 홈; 홈; 홈; 홈; ) HANGUL SYLLABLE HOM
+D649;D649;1112 1169 11B8;D649;1112 1169 11B8; # (홉; 홉; 홉; 홉; 홉; ) HANGUL SYLLABLE HOB
+D64A;D64A;1112 1169 11B9;D64A;1112 1169 11B9; # (홊; 홊; 홊; 홊; 홊; ) HANGUL SYLLABLE HOBS
+D64B;D64B;1112 1169 11BA;D64B;1112 1169 11BA; # (홋; 홋; 홋; 홋; 홋; ) HANGUL SYLLABLE HOS
+D64C;D64C;1112 1169 11BB;D64C;1112 1169 11BB; # (홌; 홌; 홌; 홌; 홌; ) HANGUL SYLLABLE HOSS
+D64D;D64D;1112 1169 11BC;D64D;1112 1169 11BC; # (í™; í™; 홍; í™; 홍; ) HANGUL SYLLABLE HONG
+D64E;D64E;1112 1169 11BD;D64E;1112 1169 11BD; # (홎; 홎; 홎; 홎; 홎; ) HANGUL SYLLABLE HOJ
+D64F;D64F;1112 1169 11BE;D64F;1112 1169 11BE; # (í™; í™; 홏; í™; 홏; ) HANGUL SYLLABLE HOC
+D650;D650;1112 1169 11BF;D650;1112 1169 11BF; # (í™; í™; 홐; í™; 홐; ) HANGUL SYLLABLE HOK
+D651;D651;1112 1169 11C0;D651;1112 1169 11C0; # (홑; 홑; 홑; 홑; 홑; ) HANGUL SYLLABLE HOT
+D652;D652;1112 1169 11C1;D652;1112 1169 11C1; # (í™’; í™’; á„’á…©á‡; í™’; á„’á…©á‡; ) HANGUL SYLLABLE HOP
+D653;D653;1112 1169 11C2;D653;1112 1169 11C2; # (홓; 홓; 홓; 홓; 홓; ) HANGUL SYLLABLE HOH
+D654;D654;1112 116A;D654;1112 116A; # (í™”; í™”; á„’á…ª; í™”; á„’á…ª; ) HANGUL SYLLABLE HWA
+D655;D655;1112 116A 11A8;D655;1112 116A 11A8; # (확; 확; 확; 확; 확; ) HANGUL SYLLABLE HWAG
+D656;D656;1112 116A 11A9;D656;1112 116A 11A9; # (홖; 홖; 홖; 홖; 홖; ) HANGUL SYLLABLE HWAGG
+D657;D657;1112 116A 11AA;D657;1112 116A 11AA; # (홗; 홗; 홗; 홗; 홗; ) HANGUL SYLLABLE HWAGS
+D658;D658;1112 116A 11AB;D658;1112 116A 11AB; # (환; 환; 환; 환; 환; ) HANGUL SYLLABLE HWAN
+D659;D659;1112 116A 11AC;D659;1112 116A 11AC; # (홙; 홙; 홙; 홙; 홙; ) HANGUL SYLLABLE HWANJ
+D65A;D65A;1112 116A 11AD;D65A;1112 116A 11AD; # (홚; 홚; 홚; 홚; 홚; ) HANGUL SYLLABLE HWANH
+D65B;D65B;1112 116A 11AE;D65B;1112 116A 11AE; # (홛; 홛; 홛; 홛; 홛; ) HANGUL SYLLABLE HWAD
+D65C;D65C;1112 116A 11AF;D65C;1112 116A 11AF; # (활; 활; 활; 활; 활; ) HANGUL SYLLABLE HWAL
+D65D;D65D;1112 116A 11B0;D65D;1112 116A 11B0; # (í™; í™; 홝; í™; 홝; ) HANGUL SYLLABLE HWALG
+D65E;D65E;1112 116A 11B1;D65E;1112 116A 11B1; # (홞; 홞; 홞; 홞; 홞; ) HANGUL SYLLABLE HWALM
+D65F;D65F;1112 116A 11B2;D65F;1112 116A 11B2; # (홟; 홟; 홟; 홟; 홟; ) HANGUL SYLLABLE HWALB
+D660;D660;1112 116A 11B3;D660;1112 116A 11B3; # (홠; 홠; 홠; 홠; 홠; ) HANGUL SYLLABLE HWALS
+D661;D661;1112 116A 11B4;D661;1112 116A 11B4; # (홡; 홡; 홡; 홡; 홡; ) HANGUL SYLLABLE HWALT
+D662;D662;1112 116A 11B5;D662;1112 116A 11B5; # (홢; 홢; 홢; 홢; 홢; ) HANGUL SYLLABLE HWALP
+D663;D663;1112 116A 11B6;D663;1112 116A 11B6; # (홣; 홣; 홣; 홣; 홣; ) HANGUL SYLLABLE HWALH
+D664;D664;1112 116A 11B7;D664;1112 116A 11B7; # (홤; 홤; 홤; 홤; 홤; ) HANGUL SYLLABLE HWAM
+D665;D665;1112 116A 11B8;D665;1112 116A 11B8; # (홥; 홥; 홥; 홥; 홥; ) HANGUL SYLLABLE HWAB
+D666;D666;1112 116A 11B9;D666;1112 116A 11B9; # (홦; 홦; 홦; 홦; 홦; ) HANGUL SYLLABLE HWABS
+D667;D667;1112 116A 11BA;D667;1112 116A 11BA; # (홧; 홧; 홧; 홧; 홧; ) HANGUL SYLLABLE HWAS
+D668;D668;1112 116A 11BB;D668;1112 116A 11BB; # (홨; 홨; 홨; 홨; 홨; ) HANGUL SYLLABLE HWASS
+D669;D669;1112 116A 11BC;D669;1112 116A 11BC; # (황; 황; 황; 황; 황; ) HANGUL SYLLABLE HWANG
+D66A;D66A;1112 116A 11BD;D66A;1112 116A 11BD; # (홪; 홪; 홪; 홪; 홪; ) HANGUL SYLLABLE HWAJ
+D66B;D66B;1112 116A 11BE;D66B;1112 116A 11BE; # (홫; 홫; 홫; 홫; 홫; ) HANGUL SYLLABLE HWAC
+D66C;D66C;1112 116A 11BF;D66C;1112 116A 11BF; # (홬; 홬; 홬; 홬; 홬; ) HANGUL SYLLABLE HWAK
+D66D;D66D;1112 116A 11C0;D66D;1112 116A 11C0; # (홭; 홭; 홭; 홭; 홭; ) HANGUL SYLLABLE HWAT
+D66E;D66E;1112 116A 11C1;D66E;1112 116A 11C1; # (í™®; í™®; á„’á…ªá‡; í™®; á„’á…ªá‡; ) HANGUL SYLLABLE HWAP
+D66F;D66F;1112 116A 11C2;D66F;1112 116A 11C2; # (홯; 홯; 홯; 홯; 홯; ) HANGUL SYLLABLE HWAH
+D670;D670;1112 116B;D670;1112 116B; # (í™°; í™°; á„’á…«; í™°; á„’á…«; ) HANGUL SYLLABLE HWAE
+D671;D671;1112 116B 11A8;D671;1112 116B 11A8; # (홱; 홱; 홱; 홱; 홱; ) HANGUL SYLLABLE HWAEG
+D672;D672;1112 116B 11A9;D672;1112 116B 11A9; # (홲; 홲; 홲; 홲; 홲; ) HANGUL SYLLABLE HWAEGG
+D673;D673;1112 116B 11AA;D673;1112 116B 11AA; # (홳; 홳; 홳; 홳; 홳; ) HANGUL SYLLABLE HWAEGS
+D674;D674;1112 116B 11AB;D674;1112 116B 11AB; # (홴; 홴; 홴; 홴; 홴; ) HANGUL SYLLABLE HWAEN
+D675;D675;1112 116B 11AC;D675;1112 116B 11AC; # (홵; 홵; 홵; 홵; 홵; ) HANGUL SYLLABLE HWAENJ
+D676;D676;1112 116B 11AD;D676;1112 116B 11AD; # (홶; 홶; 홶; 홶; 홶; ) HANGUL SYLLABLE HWAENH
+D677;D677;1112 116B 11AE;D677;1112 116B 11AE; # (홷; 홷; 홷; 홷; 홷; ) HANGUL SYLLABLE HWAED
+D678;D678;1112 116B 11AF;D678;1112 116B 11AF; # (홸; 홸; 홸; 홸; 홸; ) HANGUL SYLLABLE HWAEL
+D679;D679;1112 116B 11B0;D679;1112 116B 11B0; # (홹; 홹; 홹; 홹; 홹; ) HANGUL SYLLABLE HWAELG
+D67A;D67A;1112 116B 11B1;D67A;1112 116B 11B1; # (홺; 홺; 홺; 홺; 홺; ) HANGUL SYLLABLE HWAELM
+D67B;D67B;1112 116B 11B2;D67B;1112 116B 11B2; # (홻; 홻; 홻; 홻; 홻; ) HANGUL SYLLABLE HWAELB
+D67C;D67C;1112 116B 11B3;D67C;1112 116B 11B3; # (홼; 홼; 홼; 홼; 홼; ) HANGUL SYLLABLE HWAELS
+D67D;D67D;1112 116B 11B4;D67D;1112 116B 11B4; # (홽; 홽; 홽; 홽; 홽; ) HANGUL SYLLABLE HWAELT
+D67E;D67E;1112 116B 11B5;D67E;1112 116B 11B5; # (홾; 홾; 홾; 홾; 홾; ) HANGUL SYLLABLE HWAELP
+D67F;D67F;1112 116B 11B6;D67F;1112 116B 11B6; # (홿; 홿; 홿; 홿; 홿; ) HANGUL SYLLABLE HWAELH
+D680;D680;1112 116B 11B7;D680;1112 116B 11B7; # (횀; 횀; 횀; 횀; 횀; ) HANGUL SYLLABLE HWAEM
+D681;D681;1112 116B 11B8;D681;1112 116B 11B8; # (íš; íš; 횁; íš; 횁; ) HANGUL SYLLABLE HWAEB
+D682;D682;1112 116B 11B9;D682;1112 116B 11B9; # (횂; 횂; 횂; 횂; 횂; ) HANGUL SYLLABLE HWAEBS
+D683;D683;1112 116B 11BA;D683;1112 116B 11BA; # (횃; 횃; 횃; 횃; 횃; ) HANGUL SYLLABLE HWAES
+D684;D684;1112 116B 11BB;D684;1112 116B 11BB; # (횄; 횄; 횄; 횄; 횄; ) HANGUL SYLLABLE HWAESS
+D685;D685;1112 116B 11BC;D685;1112 116B 11BC; # (횅; 횅; 횅; 횅; 횅; ) HANGUL SYLLABLE HWAENG
+D686;D686;1112 116B 11BD;D686;1112 116B 11BD; # (횆; 횆; 횆; 횆; 횆; ) HANGUL SYLLABLE HWAEJ
+D687;D687;1112 116B 11BE;D687;1112 116B 11BE; # (횇; 횇; 횇; 횇; 횇; ) HANGUL SYLLABLE HWAEC
+D688;D688;1112 116B 11BF;D688;1112 116B 11BF; # (횈; 횈; 횈; 횈; 횈; ) HANGUL SYLLABLE HWAEK
+D689;D689;1112 116B 11C0;D689;1112 116B 11C0; # (횉; 횉; 횉; 횉; 횉; ) HANGUL SYLLABLE HWAET
+D68A;D68A;1112 116B 11C1;D68A;1112 116B 11C1; # (횊; 횊; á„’á…«á‡; 횊; á„’á…«á‡; ) HANGUL SYLLABLE HWAEP
+D68B;D68B;1112 116B 11C2;D68B;1112 116B 11C2; # (횋; 횋; 횋; 횋; 횋; ) HANGUL SYLLABLE HWAEH
+D68C;D68C;1112 116C;D68C;1112 116C; # (회; 회; 회; 회; 회; ) HANGUL SYLLABLE HOE
+D68D;D68D;1112 116C 11A8;D68D;1112 116C 11A8; # (íš; íš; 획; íš; 획; ) HANGUL SYLLABLE HOEG
+D68E;D68E;1112 116C 11A9;D68E;1112 116C 11A9; # (횎; 횎; 횎; 횎; 횎; ) HANGUL SYLLABLE HOEGG
+D68F;D68F;1112 116C 11AA;D68F;1112 116C 11AA; # (íš; íš; 횏; íš; 횏; ) HANGUL SYLLABLE HOEGS
+D690;D690;1112 116C 11AB;D690;1112 116C 11AB; # (íš; íš; 횐; íš; 횐; ) HANGUL SYLLABLE HOEN
+D691;D691;1112 116C 11AC;D691;1112 116C 11AC; # (횑; 횑; 횑; 횑; 횑; ) HANGUL SYLLABLE HOENJ
+D692;D692;1112 116C 11AD;D692;1112 116C 11AD; # (횒; 횒; 횒; 횒; 횒; ) HANGUL SYLLABLE HOENH
+D693;D693;1112 116C 11AE;D693;1112 116C 11AE; # (횓; 횓; 횓; 횓; 횓; ) HANGUL SYLLABLE HOED
+D694;D694;1112 116C 11AF;D694;1112 116C 11AF; # (횔; 횔; 횔; 횔; 횔; ) HANGUL SYLLABLE HOEL
+D695;D695;1112 116C 11B0;D695;1112 116C 11B0; # (횕; 횕; 횕; 횕; 횕; ) HANGUL SYLLABLE HOELG
+D696;D696;1112 116C 11B1;D696;1112 116C 11B1; # (횖; 횖; 횖; 횖; 횖; ) HANGUL SYLLABLE HOELM
+D697;D697;1112 116C 11B2;D697;1112 116C 11B2; # (횗; 횗; 횗; 횗; 횗; ) HANGUL SYLLABLE HOELB
+D698;D698;1112 116C 11B3;D698;1112 116C 11B3; # (횘; 횘; 횘; 횘; 횘; ) HANGUL SYLLABLE HOELS
+D699;D699;1112 116C 11B4;D699;1112 116C 11B4; # (횙; 횙; 횙; 횙; 횙; ) HANGUL SYLLABLE HOELT
+D69A;D69A;1112 116C 11B5;D69A;1112 116C 11B5; # (횚; 횚; 횚; 횚; 횚; ) HANGUL SYLLABLE HOELP
+D69B;D69B;1112 116C 11B6;D69B;1112 116C 11B6; # (횛; 횛; 횛; 횛; 횛; ) HANGUL SYLLABLE HOELH
+D69C;D69C;1112 116C 11B7;D69C;1112 116C 11B7; # (횜; 횜; 횜; 횜; 횜; ) HANGUL SYLLABLE HOEM
+D69D;D69D;1112 116C 11B8;D69D;1112 116C 11B8; # (íš; íš; 횝; íš; 횝; ) HANGUL SYLLABLE HOEB
+D69E;D69E;1112 116C 11B9;D69E;1112 116C 11B9; # (횞; 횞; 횞; 횞; 횞; ) HANGUL SYLLABLE HOEBS
+D69F;D69F;1112 116C 11BA;D69F;1112 116C 11BA; # (횟; 횟; 횟; 횟; 횟; ) HANGUL SYLLABLE HOES
+D6A0;D6A0;1112 116C 11BB;D6A0;1112 116C 11BB; # (횠; 횠; 횠; 횠; 횠; ) HANGUL SYLLABLE HOESS
+D6A1;D6A1;1112 116C 11BC;D6A1;1112 116C 11BC; # (횡; 횡; 횡; 횡; 횡; ) HANGUL SYLLABLE HOENG
+D6A2;D6A2;1112 116C 11BD;D6A2;1112 116C 11BD; # (횢; 횢; 횢; 횢; 횢; ) HANGUL SYLLABLE HOEJ
+D6A3;D6A3;1112 116C 11BE;D6A3;1112 116C 11BE; # (횣; 횣; 횣; 횣; 횣; ) HANGUL SYLLABLE HOEC
+D6A4;D6A4;1112 116C 11BF;D6A4;1112 116C 11BF; # (횤; 횤; 횤; 횤; 횤; ) HANGUL SYLLABLE HOEK
+D6A5;D6A5;1112 116C 11C0;D6A5;1112 116C 11C0; # (횥; 횥; 횥; 횥; 횥; ) HANGUL SYLLABLE HOET
+D6A6;D6A6;1112 116C 11C1;D6A6;1112 116C 11C1; # (횦; 횦; á„’á…¬á‡; 횦; á„’á…¬á‡; ) HANGUL SYLLABLE HOEP
+D6A7;D6A7;1112 116C 11C2;D6A7;1112 116C 11C2; # (횧; 횧; 횧; 횧; 횧; ) HANGUL SYLLABLE HOEH
+D6A8;D6A8;1112 116D;D6A8;1112 116D; # (효; 효; 효; 효; 효; ) HANGUL SYLLABLE HYO
+D6A9;D6A9;1112 116D 11A8;D6A9;1112 116D 11A8; # (횩; 횩; 횩; 횩; 횩; ) HANGUL SYLLABLE HYOG
+D6AA;D6AA;1112 116D 11A9;D6AA;1112 116D 11A9; # (횪; 횪; 횪; 횪; 횪; ) HANGUL SYLLABLE HYOGG
+D6AB;D6AB;1112 116D 11AA;D6AB;1112 116D 11AA; # (횫; 횫; 횫; 횫; 횫; ) HANGUL SYLLABLE HYOGS
+D6AC;D6AC;1112 116D 11AB;D6AC;1112 116D 11AB; # (횬; 횬; 횬; 횬; 횬; ) HANGUL SYLLABLE HYON
+D6AD;D6AD;1112 116D 11AC;D6AD;1112 116D 11AC; # (횭; 횭; 횭; 횭; 횭; ) HANGUL SYLLABLE HYONJ
+D6AE;D6AE;1112 116D 11AD;D6AE;1112 116D 11AD; # (횮; 횮; 횮; 횮; 횮; ) HANGUL SYLLABLE HYONH
+D6AF;D6AF;1112 116D 11AE;D6AF;1112 116D 11AE; # (횯; 횯; 횯; 횯; 횯; ) HANGUL SYLLABLE HYOD
+D6B0;D6B0;1112 116D 11AF;D6B0;1112 116D 11AF; # (횰; 횰; 횰; 횰; 횰; ) HANGUL SYLLABLE HYOL
+D6B1;D6B1;1112 116D 11B0;D6B1;1112 116D 11B0; # (횱; 횱; 횱; 횱; 횱; ) HANGUL SYLLABLE HYOLG
+D6B2;D6B2;1112 116D 11B1;D6B2;1112 116D 11B1; # (횲; 횲; 횲; 횲; 횲; ) HANGUL SYLLABLE HYOLM
+D6B3;D6B3;1112 116D 11B2;D6B3;1112 116D 11B2; # (횳; 횳; 횳; 횳; 횳; ) HANGUL SYLLABLE HYOLB
+D6B4;D6B4;1112 116D 11B3;D6B4;1112 116D 11B3; # (횴; 횴; 횴; 횴; 횴; ) HANGUL SYLLABLE HYOLS
+D6B5;D6B5;1112 116D 11B4;D6B5;1112 116D 11B4; # (횵; 횵; 횵; 횵; 횵; ) HANGUL SYLLABLE HYOLT
+D6B6;D6B6;1112 116D 11B5;D6B6;1112 116D 11B5; # (횶; 횶; 횶; 횶; 횶; ) HANGUL SYLLABLE HYOLP
+D6B7;D6B7;1112 116D 11B6;D6B7;1112 116D 11B6; # (횷; 횷; 횷; 횷; 횷; ) HANGUL SYLLABLE HYOLH
+D6B8;D6B8;1112 116D 11B7;D6B8;1112 116D 11B7; # (횸; 횸; 횸; 횸; 횸; ) HANGUL SYLLABLE HYOM
+D6B9;D6B9;1112 116D 11B8;D6B9;1112 116D 11B8; # (횹; 횹; 횹; 횹; 횹; ) HANGUL SYLLABLE HYOB
+D6BA;D6BA;1112 116D 11B9;D6BA;1112 116D 11B9; # (횺; 횺; 횺; 횺; 횺; ) HANGUL SYLLABLE HYOBS
+D6BB;D6BB;1112 116D 11BA;D6BB;1112 116D 11BA; # (횻; 횻; 횻; 횻; 횻; ) HANGUL SYLLABLE HYOS
+D6BC;D6BC;1112 116D 11BB;D6BC;1112 116D 11BB; # (횼; 횼; 횼; 횼; 횼; ) HANGUL SYLLABLE HYOSS
+D6BD;D6BD;1112 116D 11BC;D6BD;1112 116D 11BC; # (횽; 횽; 횽; 횽; 횽; ) HANGUL SYLLABLE HYONG
+D6BE;D6BE;1112 116D 11BD;D6BE;1112 116D 11BD; # (횾; 횾; 횾; 횾; 횾; ) HANGUL SYLLABLE HYOJ
+D6BF;D6BF;1112 116D 11BE;D6BF;1112 116D 11BE; # (횿; 횿; 횿; 횿; 횿; ) HANGUL SYLLABLE HYOC
+D6C0;D6C0;1112 116D 11BF;D6C0;1112 116D 11BF; # (훀; 훀; 훀; 훀; 훀; ) HANGUL SYLLABLE HYOK
+D6C1;D6C1;1112 116D 11C0;D6C1;1112 116D 11C0; # (í›; í›; 훁; í›; 훁; ) HANGUL SYLLABLE HYOT
+D6C2;D6C2;1112 116D 11C1;D6C2;1112 116D 11C1; # (훂; 훂; á„’á…­á‡; 훂; á„’á…­á‡; ) HANGUL SYLLABLE HYOP
+D6C3;D6C3;1112 116D 11C2;D6C3;1112 116D 11C2; # (훃; 훃; 훃; 훃; 훃; ) HANGUL SYLLABLE HYOH
+D6C4;D6C4;1112 116E;D6C4;1112 116E; # (후; 후; 후; 후; 후; ) HANGUL SYLLABLE HU
+D6C5;D6C5;1112 116E 11A8;D6C5;1112 116E 11A8; # (훅; 훅; 훅; 훅; 훅; ) HANGUL SYLLABLE HUG
+D6C6;D6C6;1112 116E 11A9;D6C6;1112 116E 11A9; # (훆; 훆; 훆; 훆; 훆; ) HANGUL SYLLABLE HUGG
+D6C7;D6C7;1112 116E 11AA;D6C7;1112 116E 11AA; # (훇; 훇; 훇; 훇; 훇; ) HANGUL SYLLABLE HUGS
+D6C8;D6C8;1112 116E 11AB;D6C8;1112 116E 11AB; # (훈; 훈; 훈; 훈; 훈; ) HANGUL SYLLABLE HUN
+D6C9;D6C9;1112 116E 11AC;D6C9;1112 116E 11AC; # (훉; 훉; 훉; 훉; 훉; ) HANGUL SYLLABLE HUNJ
+D6CA;D6CA;1112 116E 11AD;D6CA;1112 116E 11AD; # (훊; 훊; 훊; 훊; 훊; ) HANGUL SYLLABLE HUNH
+D6CB;D6CB;1112 116E 11AE;D6CB;1112 116E 11AE; # (훋; 훋; 훋; 훋; 훋; ) HANGUL SYLLABLE HUD
+D6CC;D6CC;1112 116E 11AF;D6CC;1112 116E 11AF; # (훌; 훌; 훌; 훌; 훌; ) HANGUL SYLLABLE HUL
+D6CD;D6CD;1112 116E 11B0;D6CD;1112 116E 11B0; # (í›; í›; 훍; í›; 훍; ) HANGUL SYLLABLE HULG
+D6CE;D6CE;1112 116E 11B1;D6CE;1112 116E 11B1; # (훎; 훎; 훎; 훎; 훎; ) HANGUL SYLLABLE HULM
+D6CF;D6CF;1112 116E 11B2;D6CF;1112 116E 11B2; # (í›; í›; 훏; í›; 훏; ) HANGUL SYLLABLE HULB
+D6D0;D6D0;1112 116E 11B3;D6D0;1112 116E 11B3; # (í›; í›; 훐; í›; 훐; ) HANGUL SYLLABLE HULS
+D6D1;D6D1;1112 116E 11B4;D6D1;1112 116E 11B4; # (훑; 훑; 훑; 훑; 훑; ) HANGUL SYLLABLE HULT
+D6D2;D6D2;1112 116E 11B5;D6D2;1112 116E 11B5; # (훒; 훒; 훒; 훒; 훒; ) HANGUL SYLLABLE HULP
+D6D3;D6D3;1112 116E 11B6;D6D3;1112 116E 11B6; # (훓; 훓; 훓; 훓; 훓; ) HANGUL SYLLABLE HULH
+D6D4;D6D4;1112 116E 11B7;D6D4;1112 116E 11B7; # (훔; 훔; 훔; 훔; 훔; ) HANGUL SYLLABLE HUM
+D6D5;D6D5;1112 116E 11B8;D6D5;1112 116E 11B8; # (훕; 훕; 훕; 훕; 훕; ) HANGUL SYLLABLE HUB
+D6D6;D6D6;1112 116E 11B9;D6D6;1112 116E 11B9; # (훖; 훖; 훖; 훖; 훖; ) HANGUL SYLLABLE HUBS
+D6D7;D6D7;1112 116E 11BA;D6D7;1112 116E 11BA; # (훗; 훗; 훗; 훗; 훗; ) HANGUL SYLLABLE HUS
+D6D8;D6D8;1112 116E 11BB;D6D8;1112 116E 11BB; # (훘; 훘; 훘; 훘; 훘; ) HANGUL SYLLABLE HUSS
+D6D9;D6D9;1112 116E 11BC;D6D9;1112 116E 11BC; # (훙; 훙; 훙; 훙; 훙; ) HANGUL SYLLABLE HUNG
+D6DA;D6DA;1112 116E 11BD;D6DA;1112 116E 11BD; # (훚; 훚; 훚; 훚; 훚; ) HANGUL SYLLABLE HUJ
+D6DB;D6DB;1112 116E 11BE;D6DB;1112 116E 11BE; # (훛; 훛; 훛; 훛; 훛; ) HANGUL SYLLABLE HUC
+D6DC;D6DC;1112 116E 11BF;D6DC;1112 116E 11BF; # (훜; 훜; 훜; 훜; 훜; ) HANGUL SYLLABLE HUK
+D6DD;D6DD;1112 116E 11C0;D6DD;1112 116E 11C0; # (í›; í›; 훝; í›; 훝; ) HANGUL SYLLABLE HUT
+D6DE;D6DE;1112 116E 11C1;D6DE;1112 116E 11C1; # (훞; 훞; á„’á…®á‡; 훞; á„’á…®á‡; ) HANGUL SYLLABLE HUP
+D6DF;D6DF;1112 116E 11C2;D6DF;1112 116E 11C2; # (훟; 훟; 훟; 훟; 훟; ) HANGUL SYLLABLE HUH
+D6E0;D6E0;1112 116F;D6E0;1112 116F; # (í› ; í› ; á„’á…¯; í› ; á„’á…¯; ) HANGUL SYLLABLE HWEO
+D6E1;D6E1;1112 116F 11A8;D6E1;1112 116F 11A8; # (훡; 훡; 훡; 훡; 훡; ) HANGUL SYLLABLE HWEOG
+D6E2;D6E2;1112 116F 11A9;D6E2;1112 116F 11A9; # (훢; 훢; 훢; 훢; 훢; ) HANGUL SYLLABLE HWEOGG
+D6E3;D6E3;1112 116F 11AA;D6E3;1112 116F 11AA; # (훣; 훣; 훣; 훣; 훣; ) HANGUL SYLLABLE HWEOGS
+D6E4;D6E4;1112 116F 11AB;D6E4;1112 116F 11AB; # (훤; 훤; 훤; 훤; 훤; ) HANGUL SYLLABLE HWEON
+D6E5;D6E5;1112 116F 11AC;D6E5;1112 116F 11AC; # (훥; 훥; 훥; 훥; 훥; ) HANGUL SYLLABLE HWEONJ
+D6E6;D6E6;1112 116F 11AD;D6E6;1112 116F 11AD; # (훦; 훦; 훦; 훦; 훦; ) HANGUL SYLLABLE HWEONH
+D6E7;D6E7;1112 116F 11AE;D6E7;1112 116F 11AE; # (훧; 훧; 훧; 훧; 훧; ) HANGUL SYLLABLE HWEOD
+D6E8;D6E8;1112 116F 11AF;D6E8;1112 116F 11AF; # (훨; 훨; 훨; 훨; 훨; ) HANGUL SYLLABLE HWEOL
+D6E9;D6E9;1112 116F 11B0;D6E9;1112 116F 11B0; # (훩; 훩; 훩; 훩; 훩; ) HANGUL SYLLABLE HWEOLG
+D6EA;D6EA;1112 116F 11B1;D6EA;1112 116F 11B1; # (훪; 훪; 훪; 훪; 훪; ) HANGUL SYLLABLE HWEOLM
+D6EB;D6EB;1112 116F 11B2;D6EB;1112 116F 11B2; # (훫; 훫; 훫; 훫; 훫; ) HANGUL SYLLABLE HWEOLB
+D6EC;D6EC;1112 116F 11B3;D6EC;1112 116F 11B3; # (훬; 훬; 훬; 훬; 훬; ) HANGUL SYLLABLE HWEOLS
+D6ED;D6ED;1112 116F 11B4;D6ED;1112 116F 11B4; # (훭; 훭; 훭; 훭; 훭; ) HANGUL SYLLABLE HWEOLT
+D6EE;D6EE;1112 116F 11B5;D6EE;1112 116F 11B5; # (훮; 훮; 훮; 훮; 훮; ) HANGUL SYLLABLE HWEOLP
+D6EF;D6EF;1112 116F 11B6;D6EF;1112 116F 11B6; # (훯; 훯; 훯; 훯; 훯; ) HANGUL SYLLABLE HWEOLH
+D6F0;D6F0;1112 116F 11B7;D6F0;1112 116F 11B7; # (훰; 훰; 훰; 훰; 훰; ) HANGUL SYLLABLE HWEOM
+D6F1;D6F1;1112 116F 11B8;D6F1;1112 116F 11B8; # (훱; 훱; 훱; 훱; 훱; ) HANGUL SYLLABLE HWEOB
+D6F2;D6F2;1112 116F 11B9;D6F2;1112 116F 11B9; # (훲; 훲; 훲; 훲; 훲; ) HANGUL SYLLABLE HWEOBS
+D6F3;D6F3;1112 116F 11BA;D6F3;1112 116F 11BA; # (훳; 훳; 훳; 훳; 훳; ) HANGUL SYLLABLE HWEOS
+D6F4;D6F4;1112 116F 11BB;D6F4;1112 116F 11BB; # (훴; 훴; 훴; 훴; 훴; ) HANGUL SYLLABLE HWEOSS
+D6F5;D6F5;1112 116F 11BC;D6F5;1112 116F 11BC; # (훵; 훵; 훵; 훵; 훵; ) HANGUL SYLLABLE HWEONG
+D6F6;D6F6;1112 116F 11BD;D6F6;1112 116F 11BD; # (훶; 훶; 훶; 훶; 훶; ) HANGUL SYLLABLE HWEOJ
+D6F7;D6F7;1112 116F 11BE;D6F7;1112 116F 11BE; # (훷; 훷; 훷; 훷; 훷; ) HANGUL SYLLABLE HWEOC
+D6F8;D6F8;1112 116F 11BF;D6F8;1112 116F 11BF; # (훸; 훸; 훸; 훸; 훸; ) HANGUL SYLLABLE HWEOK
+D6F9;D6F9;1112 116F 11C0;D6F9;1112 116F 11C0; # (훹; 훹; 훹; 훹; 훹; ) HANGUL SYLLABLE HWEOT
+D6FA;D6FA;1112 116F 11C1;D6FA;1112 116F 11C1; # (훺; 훺; á„’á…¯á‡; 훺; á„’á…¯á‡; ) HANGUL SYLLABLE HWEOP
+D6FB;D6FB;1112 116F 11C2;D6FB;1112 116F 11C2; # (훻; 훻; 훻; 훻; 훻; ) HANGUL SYLLABLE HWEOH
+D6FC;D6FC;1112 1170;D6FC;1112 1170; # (훼; 훼; 훼; 훼; 훼; ) HANGUL SYLLABLE HWE
+D6FD;D6FD;1112 1170 11A8;D6FD;1112 1170 11A8; # (훽; 훽; 훽; 훽; 훽; ) HANGUL SYLLABLE HWEG
+D6FE;D6FE;1112 1170 11A9;D6FE;1112 1170 11A9; # (훾; 훾; 훾; 훾; 훾; ) HANGUL SYLLABLE HWEGG
+D6FF;D6FF;1112 1170 11AA;D6FF;1112 1170 11AA; # (훿; 훿; 훿; 훿; 훿; ) HANGUL SYLLABLE HWEGS
+D700;D700;1112 1170 11AB;D700;1112 1170 11AB; # (휀; 휀; 휀; 휀; 휀; ) HANGUL SYLLABLE HWEN
+D701;D701;1112 1170 11AC;D701;1112 1170 11AC; # (íœ; íœ; 휁; íœ; 휁; ) HANGUL SYLLABLE HWENJ
+D702;D702;1112 1170 11AD;D702;1112 1170 11AD; # (휂; 휂; 휂; 휂; 휂; ) HANGUL SYLLABLE HWENH
+D703;D703;1112 1170 11AE;D703;1112 1170 11AE; # (휃; 휃; 휃; 휃; 휃; ) HANGUL SYLLABLE HWED
+D704;D704;1112 1170 11AF;D704;1112 1170 11AF; # (휄; 휄; 휄; 휄; 휄; ) HANGUL SYLLABLE HWEL
+D705;D705;1112 1170 11B0;D705;1112 1170 11B0; # (휅; 휅; 휅; 휅; 휅; ) HANGUL SYLLABLE HWELG
+D706;D706;1112 1170 11B1;D706;1112 1170 11B1; # (휆; 휆; 휆; 휆; 휆; ) HANGUL SYLLABLE HWELM
+D707;D707;1112 1170 11B2;D707;1112 1170 11B2; # (휇; 휇; 휇; 휇; 휇; ) HANGUL SYLLABLE HWELB
+D708;D708;1112 1170 11B3;D708;1112 1170 11B3; # (휈; 휈; 휈; 휈; 휈; ) HANGUL SYLLABLE HWELS
+D709;D709;1112 1170 11B4;D709;1112 1170 11B4; # (휉; 휉; 휉; 휉; 휉; ) HANGUL SYLLABLE HWELT
+D70A;D70A;1112 1170 11B5;D70A;1112 1170 11B5; # (휊; 휊; 휊; 휊; 휊; ) HANGUL SYLLABLE HWELP
+D70B;D70B;1112 1170 11B6;D70B;1112 1170 11B6; # (휋; 휋; 휋; 휋; 휋; ) HANGUL SYLLABLE HWELH
+D70C;D70C;1112 1170 11B7;D70C;1112 1170 11B7; # (휌; 휌; 휌; 휌; 휌; ) HANGUL SYLLABLE HWEM
+D70D;D70D;1112 1170 11B8;D70D;1112 1170 11B8; # (íœ; íœ; 휍; íœ; 휍; ) HANGUL SYLLABLE HWEB
+D70E;D70E;1112 1170 11B9;D70E;1112 1170 11B9; # (휎; 휎; 휎; 휎; 휎; ) HANGUL SYLLABLE HWEBS
+D70F;D70F;1112 1170 11BA;D70F;1112 1170 11BA; # (íœ; íœ; 휏; íœ; 휏; ) HANGUL SYLLABLE HWES
+D710;D710;1112 1170 11BB;D710;1112 1170 11BB; # (íœ; íœ; 휐; íœ; 휐; ) HANGUL SYLLABLE HWESS
+D711;D711;1112 1170 11BC;D711;1112 1170 11BC; # (휑; 휑; 휑; 휑; 휑; ) HANGUL SYLLABLE HWENG
+D712;D712;1112 1170 11BD;D712;1112 1170 11BD; # (휒; 휒; 휒; 휒; 휒; ) HANGUL SYLLABLE HWEJ
+D713;D713;1112 1170 11BE;D713;1112 1170 11BE; # (휓; 휓; 휓; 휓; 휓; ) HANGUL SYLLABLE HWEC
+D714;D714;1112 1170 11BF;D714;1112 1170 11BF; # (휔; 휔; 휔; 휔; 휔; ) HANGUL SYLLABLE HWEK
+D715;D715;1112 1170 11C0;D715;1112 1170 11C0; # (휕; 휕; 휕; 휕; 휕; ) HANGUL SYLLABLE HWET
+D716;D716;1112 1170 11C1;D716;1112 1170 11C1; # (휖; 휖; á„’á…°á‡; 휖; á„’á…°á‡; ) HANGUL SYLLABLE HWEP
+D717;D717;1112 1170 11C2;D717;1112 1170 11C2; # (휗; 휗; 휗; 휗; 휗; ) HANGUL SYLLABLE HWEH
+D718;D718;1112 1171;D718;1112 1171; # (휘; 휘; 휘; 휘; 휘; ) HANGUL SYLLABLE HWI
+D719;D719;1112 1171 11A8;D719;1112 1171 11A8; # (휙; 휙; 휙; 휙; 휙; ) HANGUL SYLLABLE HWIG
+D71A;D71A;1112 1171 11A9;D71A;1112 1171 11A9; # (휚; 휚; 휚; 휚; 휚; ) HANGUL SYLLABLE HWIGG
+D71B;D71B;1112 1171 11AA;D71B;1112 1171 11AA; # (휛; 휛; 휛; 휛; 휛; ) HANGUL SYLLABLE HWIGS
+D71C;D71C;1112 1171 11AB;D71C;1112 1171 11AB; # (휜; 휜; 휜; 휜; 휜; ) HANGUL SYLLABLE HWIN
+D71D;D71D;1112 1171 11AC;D71D;1112 1171 11AC; # (íœ; íœ; 휝; íœ; 휝; ) HANGUL SYLLABLE HWINJ
+D71E;D71E;1112 1171 11AD;D71E;1112 1171 11AD; # (휞; 휞; 휞; 휞; 휞; ) HANGUL SYLLABLE HWINH
+D71F;D71F;1112 1171 11AE;D71F;1112 1171 11AE; # (휟; 휟; 휟; 휟; 휟; ) HANGUL SYLLABLE HWID
+D720;D720;1112 1171 11AF;D720;1112 1171 11AF; # (휠; 휠; 휠; 휠; 휠; ) HANGUL SYLLABLE HWIL
+D721;D721;1112 1171 11B0;D721;1112 1171 11B0; # (휡; 휡; 휡; 휡; 휡; ) HANGUL SYLLABLE HWILG
+D722;D722;1112 1171 11B1;D722;1112 1171 11B1; # (휢; 휢; 휢; 휢; 휢; ) HANGUL SYLLABLE HWILM
+D723;D723;1112 1171 11B2;D723;1112 1171 11B2; # (휣; 휣; 휣; 휣; 휣; ) HANGUL SYLLABLE HWILB
+D724;D724;1112 1171 11B3;D724;1112 1171 11B3; # (휤; 휤; 휤; 휤; 휤; ) HANGUL SYLLABLE HWILS
+D725;D725;1112 1171 11B4;D725;1112 1171 11B4; # (휥; 휥; 휥; 휥; 휥; ) HANGUL SYLLABLE HWILT
+D726;D726;1112 1171 11B5;D726;1112 1171 11B5; # (휦; 휦; 휦; 휦; 휦; ) HANGUL SYLLABLE HWILP
+D727;D727;1112 1171 11B6;D727;1112 1171 11B6; # (휧; 휧; 휧; 휧; 휧; ) HANGUL SYLLABLE HWILH
+D728;D728;1112 1171 11B7;D728;1112 1171 11B7; # (휨; 휨; 휨; 휨; 휨; ) HANGUL SYLLABLE HWIM
+D729;D729;1112 1171 11B8;D729;1112 1171 11B8; # (휩; 휩; 휩; 휩; 휩; ) HANGUL SYLLABLE HWIB
+D72A;D72A;1112 1171 11B9;D72A;1112 1171 11B9; # (휪; 휪; 휪; 휪; 휪; ) HANGUL SYLLABLE HWIBS
+D72B;D72B;1112 1171 11BA;D72B;1112 1171 11BA; # (휫; 휫; 휫; 휫; 휫; ) HANGUL SYLLABLE HWIS
+D72C;D72C;1112 1171 11BB;D72C;1112 1171 11BB; # (휬; 휬; 휬; 휬; 휬; ) HANGUL SYLLABLE HWISS
+D72D;D72D;1112 1171 11BC;D72D;1112 1171 11BC; # (휭; 휭; 휭; 휭; 휭; ) HANGUL SYLLABLE HWING
+D72E;D72E;1112 1171 11BD;D72E;1112 1171 11BD; # (휮; 휮; 휮; 휮; 휮; ) HANGUL SYLLABLE HWIJ
+D72F;D72F;1112 1171 11BE;D72F;1112 1171 11BE; # (휯; 휯; 휯; 휯; 휯; ) HANGUL SYLLABLE HWIC
+D730;D730;1112 1171 11BF;D730;1112 1171 11BF; # (휰; 휰; 휰; 휰; 휰; ) HANGUL SYLLABLE HWIK
+D731;D731;1112 1171 11C0;D731;1112 1171 11C0; # (휱; 휱; 휱; 휱; 휱; ) HANGUL SYLLABLE HWIT
+D732;D732;1112 1171 11C1;D732;1112 1171 11C1; # (휲; 휲; á„’á…±á‡; 휲; á„’á…±á‡; ) HANGUL SYLLABLE HWIP
+D733;D733;1112 1171 11C2;D733;1112 1171 11C2; # (휳; 휳; 휳; 휳; 휳; ) HANGUL SYLLABLE HWIH
+D734;D734;1112 1172;D734;1112 1172; # (휴; 휴; 휴; 휴; 휴; ) HANGUL SYLLABLE HYU
+D735;D735;1112 1172 11A8;D735;1112 1172 11A8; # (휵; 휵; 휵; 휵; 휵; ) HANGUL SYLLABLE HYUG
+D736;D736;1112 1172 11A9;D736;1112 1172 11A9; # (휶; 휶; 휶; 휶; 휶; ) HANGUL SYLLABLE HYUGG
+D737;D737;1112 1172 11AA;D737;1112 1172 11AA; # (휷; 휷; 휷; 휷; 휷; ) HANGUL SYLLABLE HYUGS
+D738;D738;1112 1172 11AB;D738;1112 1172 11AB; # (휸; 휸; 휸; 휸; 휸; ) HANGUL SYLLABLE HYUN
+D739;D739;1112 1172 11AC;D739;1112 1172 11AC; # (휹; 휹; 휹; 휹; 휹; ) HANGUL SYLLABLE HYUNJ
+D73A;D73A;1112 1172 11AD;D73A;1112 1172 11AD; # (휺; 휺; 휺; 휺; 휺; ) HANGUL SYLLABLE HYUNH
+D73B;D73B;1112 1172 11AE;D73B;1112 1172 11AE; # (휻; 휻; 휻; 휻; 휻; ) HANGUL SYLLABLE HYUD
+D73C;D73C;1112 1172 11AF;D73C;1112 1172 11AF; # (휼; 휼; 휼; 휼; 휼; ) HANGUL SYLLABLE HYUL
+D73D;D73D;1112 1172 11B0;D73D;1112 1172 11B0; # (휽; 휽; 휽; 휽; 휽; ) HANGUL SYLLABLE HYULG
+D73E;D73E;1112 1172 11B1;D73E;1112 1172 11B1; # (휾; 휾; 휾; 휾; 휾; ) HANGUL SYLLABLE HYULM
+D73F;D73F;1112 1172 11B2;D73F;1112 1172 11B2; # (휿; 휿; 휿; 휿; 휿; ) HANGUL SYLLABLE HYULB
+D740;D740;1112 1172 11B3;D740;1112 1172 11B3; # (í€; í€; 흀; í€; 흀; ) HANGUL SYLLABLE HYULS
+D741;D741;1112 1172 11B4;D741;1112 1172 11B4; # (í; í; 흁; í; 흁; ) HANGUL SYLLABLE HYULT
+D742;D742;1112 1172 11B5;D742;1112 1172 11B5; # (í‚; í‚; 흂; í‚; 흂; ) HANGUL SYLLABLE HYULP
+D743;D743;1112 1172 11B6;D743;1112 1172 11B6; # (íƒ; íƒ; 흃; íƒ; 흃; ) HANGUL SYLLABLE HYULH
+D744;D744;1112 1172 11B7;D744;1112 1172 11B7; # (í„; í„; 흄; í„; 흄; ) HANGUL SYLLABLE HYUM
+D745;D745;1112 1172 11B8;D745;1112 1172 11B8; # (í…; í…; 흅; í…; 흅; ) HANGUL SYLLABLE HYUB
+D746;D746;1112 1172 11B9;D746;1112 1172 11B9; # (í†; í†; 흆; í†; 흆; ) HANGUL SYLLABLE HYUBS
+D747;D747;1112 1172 11BA;D747;1112 1172 11BA; # (í‡; í‡; 흇; í‡; 흇; ) HANGUL SYLLABLE HYUS
+D748;D748;1112 1172 11BB;D748;1112 1172 11BB; # (íˆ; íˆ; 흈; íˆ; 흈; ) HANGUL SYLLABLE HYUSS
+D749;D749;1112 1172 11BC;D749;1112 1172 11BC; # (í‰; í‰; 흉; í‰; 흉; ) HANGUL SYLLABLE HYUNG
+D74A;D74A;1112 1172 11BD;D74A;1112 1172 11BD; # (íŠ; íŠ; 흊; íŠ; 흊; ) HANGUL SYLLABLE HYUJ
+D74B;D74B;1112 1172 11BE;D74B;1112 1172 11BE; # (í‹; í‹; 흋; í‹; 흋; ) HANGUL SYLLABLE HYUC
+D74C;D74C;1112 1172 11BF;D74C;1112 1172 11BF; # (íŒ; íŒ; 흌; íŒ; 흌; ) HANGUL SYLLABLE HYUK
+D74D;D74D;1112 1172 11C0;D74D;1112 1172 11C0; # (í; í; 흍; í; 흍; ) HANGUL SYLLABLE HYUT
+D74E;D74E;1112 1172 11C1;D74E;1112 1172 11C1; # (íŽ; íŽ; á„’á…²á‡; íŽ; á„’á…²á‡; ) HANGUL SYLLABLE HYUP
+D74F;D74F;1112 1172 11C2;D74F;1112 1172 11C2; # (í; í; 흏; í; 흏; ) HANGUL SYLLABLE HYUH
+D750;D750;1112 1173;D750;1112 1173; # (í; í; á„’á…³; í; á„’á…³; ) HANGUL SYLLABLE HEU
+D751;D751;1112 1173 11A8;D751;1112 1173 11A8; # (í‘; í‘; 흑; í‘; 흑; ) HANGUL SYLLABLE HEUG
+D752;D752;1112 1173 11A9;D752;1112 1173 11A9; # (í’; í’; 흒; í’; 흒; ) HANGUL SYLLABLE HEUGG
+D753;D753;1112 1173 11AA;D753;1112 1173 11AA; # (í“; í“; 흓; í“; 흓; ) HANGUL SYLLABLE HEUGS
+D754;D754;1112 1173 11AB;D754;1112 1173 11AB; # (í”; í”; 흔; í”; 흔; ) HANGUL SYLLABLE HEUN
+D755;D755;1112 1173 11AC;D755;1112 1173 11AC; # (í•; í•; 흕; í•; 흕; ) HANGUL SYLLABLE HEUNJ
+D756;D756;1112 1173 11AD;D756;1112 1173 11AD; # (í–; í–; 흖; í–; 흖; ) HANGUL SYLLABLE HEUNH
+D757;D757;1112 1173 11AE;D757;1112 1173 11AE; # (í—; í—; 흗; í—; 흗; ) HANGUL SYLLABLE HEUD
+D758;D758;1112 1173 11AF;D758;1112 1173 11AF; # (í˜; í˜; 흘; í˜; 흘; ) HANGUL SYLLABLE HEUL
+D759;D759;1112 1173 11B0;D759;1112 1173 11B0; # (í™; í™; 흙; í™; 흙; ) HANGUL SYLLABLE HEULG
+D75A;D75A;1112 1173 11B1;D75A;1112 1173 11B1; # (íš; íš; 흚; íš; 흚; ) HANGUL SYLLABLE HEULM
+D75B;D75B;1112 1173 11B2;D75B;1112 1173 11B2; # (í›; í›; 흛; í›; 흛; ) HANGUL SYLLABLE HEULB
+D75C;D75C;1112 1173 11B3;D75C;1112 1173 11B3; # (íœ; íœ; 흜; íœ; 흜; ) HANGUL SYLLABLE HEULS
+D75D;D75D;1112 1173 11B4;D75D;1112 1173 11B4; # (í; í; 흝; í; 흝; ) HANGUL SYLLABLE HEULT
+D75E;D75E;1112 1173 11B5;D75E;1112 1173 11B5; # (íž; íž; 흞; íž; 흞; ) HANGUL SYLLABLE HEULP
+D75F;D75F;1112 1173 11B6;D75F;1112 1173 11B6; # (íŸ; íŸ; 흟; íŸ; 흟; ) HANGUL SYLLABLE HEULH
+D760;D760;1112 1173 11B7;D760;1112 1173 11B7; # (í ; í ; 흠; í ; 흠; ) HANGUL SYLLABLE HEUM
+D761;D761;1112 1173 11B8;D761;1112 1173 11B8; # (í¡; í¡; 흡; í¡; 흡; ) HANGUL SYLLABLE HEUB
+D762;D762;1112 1173 11B9;D762;1112 1173 11B9; # (í¢; í¢; 흢; í¢; 흢; ) HANGUL SYLLABLE HEUBS
+D763;D763;1112 1173 11BA;D763;1112 1173 11BA; # (í£; í£; 흣; í£; 흣; ) HANGUL SYLLABLE HEUS
+D764;D764;1112 1173 11BB;D764;1112 1173 11BB; # (í¤; í¤; 흤; í¤; 흤; ) HANGUL SYLLABLE HEUSS
+D765;D765;1112 1173 11BC;D765;1112 1173 11BC; # (í¥; í¥; 흥; í¥; 흥; ) HANGUL SYLLABLE HEUNG
+D766;D766;1112 1173 11BD;D766;1112 1173 11BD; # (í¦; í¦; 흦; í¦; 흦; ) HANGUL SYLLABLE HEUJ
+D767;D767;1112 1173 11BE;D767;1112 1173 11BE; # (í§; í§; 흧; í§; 흧; ) HANGUL SYLLABLE HEUC
+D768;D768;1112 1173 11BF;D768;1112 1173 11BF; # (í¨; í¨; 흨; í¨; 흨; ) HANGUL SYLLABLE HEUK
+D769;D769;1112 1173 11C0;D769;1112 1173 11C0; # (í©; í©; 흩; í©; 흩; ) HANGUL SYLLABLE HEUT
+D76A;D76A;1112 1173 11C1;D76A;1112 1173 11C1; # (íª; íª; á„’á…³á‡; íª; á„’á…³á‡; ) HANGUL SYLLABLE HEUP
+D76B;D76B;1112 1173 11C2;D76B;1112 1173 11C2; # (í«; í«; 흫; í«; 흫; ) HANGUL SYLLABLE HEUH
+D76C;D76C;1112 1174;D76C;1112 1174; # (í¬; í¬; á„’á…´; í¬; á„’á…´; ) HANGUL SYLLABLE HYI
+D76D;D76D;1112 1174 11A8;D76D;1112 1174 11A8; # (í­; í­; 흭; í­; 흭; ) HANGUL SYLLABLE HYIG
+D76E;D76E;1112 1174 11A9;D76E;1112 1174 11A9; # (í®; í®; 흮; í®; 흮; ) HANGUL SYLLABLE HYIGG
+D76F;D76F;1112 1174 11AA;D76F;1112 1174 11AA; # (í¯; í¯; 흯; í¯; 흯; ) HANGUL SYLLABLE HYIGS
+D770;D770;1112 1174 11AB;D770;1112 1174 11AB; # (í°; í°; 흰; í°; 흰; ) HANGUL SYLLABLE HYIN
+D771;D771;1112 1174 11AC;D771;1112 1174 11AC; # (í±; í±; 흱; í±; 흱; ) HANGUL SYLLABLE HYINJ
+D772;D772;1112 1174 11AD;D772;1112 1174 11AD; # (í²; í²; 흲; í²; 흲; ) HANGUL SYLLABLE HYINH
+D773;D773;1112 1174 11AE;D773;1112 1174 11AE; # (í³; í³; 흳; í³; 흳; ) HANGUL SYLLABLE HYID
+D774;D774;1112 1174 11AF;D774;1112 1174 11AF; # (í´; í´; 흴; í´; 흴; ) HANGUL SYLLABLE HYIL
+D775;D775;1112 1174 11B0;D775;1112 1174 11B0; # (íµ; íµ; 흵; íµ; 흵; ) HANGUL SYLLABLE HYILG
+D776;D776;1112 1174 11B1;D776;1112 1174 11B1; # (í¶; í¶; 흶; í¶; 흶; ) HANGUL SYLLABLE HYILM
+D777;D777;1112 1174 11B2;D777;1112 1174 11B2; # (í·; í·; 흷; í·; 흷; ) HANGUL SYLLABLE HYILB
+D778;D778;1112 1174 11B3;D778;1112 1174 11B3; # (í¸; í¸; 흸; í¸; 흸; ) HANGUL SYLLABLE HYILS
+D779;D779;1112 1174 11B4;D779;1112 1174 11B4; # (í¹; í¹; 흹; í¹; 흹; ) HANGUL SYLLABLE HYILT
+D77A;D77A;1112 1174 11B5;D77A;1112 1174 11B5; # (íº; íº; 흺; íº; 흺; ) HANGUL SYLLABLE HYILP
+D77B;D77B;1112 1174 11B6;D77B;1112 1174 11B6; # (í»; í»; 흻; í»; 흻; ) HANGUL SYLLABLE HYILH
+D77C;D77C;1112 1174 11B7;D77C;1112 1174 11B7; # (í¼; í¼; 흼; í¼; 흼; ) HANGUL SYLLABLE HYIM
+D77D;D77D;1112 1174 11B8;D77D;1112 1174 11B8; # (í½; í½; 흽; í½; 흽; ) HANGUL SYLLABLE HYIB
+D77E;D77E;1112 1174 11B9;D77E;1112 1174 11B9; # (í¾; í¾; 흾; í¾; 흾; ) HANGUL SYLLABLE HYIBS
+D77F;D77F;1112 1174 11BA;D77F;1112 1174 11BA; # (í¿; í¿; 흿; í¿; 흿; ) HANGUL SYLLABLE HYIS
+D780;D780;1112 1174 11BB;D780;1112 1174 11BB; # (힀; 힀; 힀; 힀; 힀; ) HANGUL SYLLABLE HYISS
+D781;D781;1112 1174 11BC;D781;1112 1174 11BC; # (íž; íž; 힁; íž; 힁; ) HANGUL SYLLABLE HYING
+D782;D782;1112 1174 11BD;D782;1112 1174 11BD; # (힂; 힂; 힂; 힂; 힂; ) HANGUL SYLLABLE HYIJ
+D783;D783;1112 1174 11BE;D783;1112 1174 11BE; # (힃; 힃; 힃; 힃; 힃; ) HANGUL SYLLABLE HYIC
+D784;D784;1112 1174 11BF;D784;1112 1174 11BF; # (힄; 힄; 힄; 힄; 힄; ) HANGUL SYLLABLE HYIK
+D785;D785;1112 1174 11C0;D785;1112 1174 11C0; # (힅; 힅; 힅; 힅; 힅; ) HANGUL SYLLABLE HYIT
+D786;D786;1112 1174 11C1;D786;1112 1174 11C1; # (힆; 힆; á„’á…´á‡; 힆; á„’á…´á‡; ) HANGUL SYLLABLE HYIP
+D787;D787;1112 1174 11C2;D787;1112 1174 11C2; # (힇; 힇; 힇; 힇; 힇; ) HANGUL SYLLABLE HYIH
+D788;D788;1112 1175;D788;1112 1175; # (히; 히; 히; 히; 히; ) HANGUL SYLLABLE HI
+D789;D789;1112 1175 11A8;D789;1112 1175 11A8; # (힉; 힉; 힉; 힉; 힉; ) HANGUL SYLLABLE HIG
+D78A;D78A;1112 1175 11A9;D78A;1112 1175 11A9; # (힊; 힊; 힊; 힊; 힊; ) HANGUL SYLLABLE HIGG
+D78B;D78B;1112 1175 11AA;D78B;1112 1175 11AA; # (힋; 힋; 힋; 힋; 힋; ) HANGUL SYLLABLE HIGS
+D78C;D78C;1112 1175 11AB;D78C;1112 1175 11AB; # (힌; 힌; 힌; 힌; 힌; ) HANGUL SYLLABLE HIN
+D78D;D78D;1112 1175 11AC;D78D;1112 1175 11AC; # (íž; íž; 힍; íž; 힍; ) HANGUL SYLLABLE HINJ
+D78E;D78E;1112 1175 11AD;D78E;1112 1175 11AD; # (힎; 힎; 힎; 힎; 힎; ) HANGUL SYLLABLE HINH
+D78F;D78F;1112 1175 11AE;D78F;1112 1175 11AE; # (íž; íž; 힏; íž; 힏; ) HANGUL SYLLABLE HID
+D790;D790;1112 1175 11AF;D790;1112 1175 11AF; # (íž; íž; 힐; íž; 힐; ) HANGUL SYLLABLE HIL
+D791;D791;1112 1175 11B0;D791;1112 1175 11B0; # (힑; 힑; 힑; 힑; 힑; ) HANGUL SYLLABLE HILG
+D792;D792;1112 1175 11B1;D792;1112 1175 11B1; # (힒; 힒; 힒; 힒; 힒; ) HANGUL SYLLABLE HILM
+D793;D793;1112 1175 11B2;D793;1112 1175 11B2; # (힓; 힓; 힓; 힓; 힓; ) HANGUL SYLLABLE HILB
+D794;D794;1112 1175 11B3;D794;1112 1175 11B3; # (힔; 힔; 힔; 힔; 힔; ) HANGUL SYLLABLE HILS
+D795;D795;1112 1175 11B4;D795;1112 1175 11B4; # (힕; 힕; 힕; 힕; 힕; ) HANGUL SYLLABLE HILT
+D796;D796;1112 1175 11B5;D796;1112 1175 11B5; # (힖; 힖; 힖; 힖; 힖; ) HANGUL SYLLABLE HILP
+D797;D797;1112 1175 11B6;D797;1112 1175 11B6; # (힗; 힗; 힗; 힗; 힗; ) HANGUL SYLLABLE HILH
+D798;D798;1112 1175 11B7;D798;1112 1175 11B7; # (힘; 힘; 힘; 힘; 힘; ) HANGUL SYLLABLE HIM
+D799;D799;1112 1175 11B8;D799;1112 1175 11B8; # (힙; 힙; 힙; 힙; 힙; ) HANGUL SYLLABLE HIB
+D79A;D79A;1112 1175 11B9;D79A;1112 1175 11B9; # (힚; 힚; 힚; 힚; 힚; ) HANGUL SYLLABLE HIBS
+D79B;D79B;1112 1175 11BA;D79B;1112 1175 11BA; # (힛; 힛; 힛; 힛; 힛; ) HANGUL SYLLABLE HIS
+D79C;D79C;1112 1175 11BB;D79C;1112 1175 11BB; # (힜; 힜; 힜; 힜; 힜; ) HANGUL SYLLABLE HISS
+D79D;D79D;1112 1175 11BC;D79D;1112 1175 11BC; # (íž; íž; 힝; íž; 힝; ) HANGUL SYLLABLE HING
+D79E;D79E;1112 1175 11BD;D79E;1112 1175 11BD; # (힞; 힞; 힞; 힞; 힞; ) HANGUL SYLLABLE HIJ
+D79F;D79F;1112 1175 11BE;D79F;1112 1175 11BE; # (힟; 힟; 힟; 힟; 힟; ) HANGUL SYLLABLE HIC
+D7A0;D7A0;1112 1175 11BF;D7A0;1112 1175 11BF; # (힠; 힠; 힠; 힠; 힠; ) HANGUL SYLLABLE HIK
+D7A1;D7A1;1112 1175 11C0;D7A1;1112 1175 11C0; # (힡; 힡; 힡; 힡; 힡; ) HANGUL SYLLABLE HIT
+D7A2;D7A2;1112 1175 11C1;D7A2;1112 1175 11C1; # (힢; 힢; á„’á…µá‡; 힢; á„’á…µá‡; ) HANGUL SYLLABLE HIP
+D7A3;D7A3;1112 1175 11C2;D7A3;1112 1175 11C2; # (힣; 힣; 힣; 힣; 힣; ) HANGUL SYLLABLE HIH
+F900;8C48;8C48;8C48;8C48; # (豈; 豈; 豈; 豈; 豈; ) CJK COMPATIBILITY IDEOGRAPH-F900
+F901;66F4;66F4;66F4;66F4; # (ï¤; æ›´; æ›´; æ›´; æ›´; ) CJK COMPATIBILITY IDEOGRAPH-F901
+F902;8ECA;8ECA;8ECA;8ECA; # (車; 車; 車; 車; 車; ) CJK COMPATIBILITY IDEOGRAPH-F902
+F903;8CC8;8CC8;8CC8;8CC8; # (賈; 賈; 賈; 賈; 賈; ) CJK COMPATIBILITY IDEOGRAPH-F903
+F904;6ED1;6ED1;6ED1;6ED1; # (滑; 滑; 滑; 滑; 滑; ) CJK COMPATIBILITY IDEOGRAPH-F904
+F905;4E32;4E32;4E32;4E32; # (串; 串; 串; 串; 串; ) CJK COMPATIBILITY IDEOGRAPH-F905
+F906;53E5;53E5;53E5;53E5; # (句; å¥; å¥; å¥; å¥; ) CJK COMPATIBILITY IDEOGRAPH-F906
+F907;9F9C;9F9C;9F9C;9F9C; # (龜; 龜; 龜; 龜; 龜; ) CJK COMPATIBILITY IDEOGRAPH-F907
+F908;9F9C;9F9C;9F9C;9F9C; # (龜; 龜; 龜; 龜; 龜; ) CJK COMPATIBILITY IDEOGRAPH-F908
+F909;5951;5951;5951;5951; # (契; 契; 契; 契; 契; ) CJK COMPATIBILITY IDEOGRAPH-F909
+F90A;91D1;91D1;91D1;91D1; # (金; 金; 金; 金; 金; ) CJK COMPATIBILITY IDEOGRAPH-F90A
+F90B;5587;5587;5587;5587; # (喇; 喇; 喇; 喇; 喇; ) CJK COMPATIBILITY IDEOGRAPH-F90B
+F90C;5948;5948;5948;5948; # (奈; 奈; 奈; 奈; 奈; ) CJK COMPATIBILITY IDEOGRAPH-F90C
+F90D;61F6;61F6;61F6;61F6; # (ï¤; 懶; 懶; 懶; 懶; ) CJK COMPATIBILITY IDEOGRAPH-F90D
+F90E;7669;7669;7669;7669; # (癩; 癩; 癩; 癩; 癩; ) CJK COMPATIBILITY IDEOGRAPH-F90E
+F90F;7F85;7F85;7F85;7F85; # (ï¤; ç¾…; ç¾…; ç¾…; ç¾…; ) CJK COMPATIBILITY IDEOGRAPH-F90F
+F910;863F;863F;863F;863F; # (ï¤; 蘿; 蘿; 蘿; 蘿; ) CJK COMPATIBILITY IDEOGRAPH-F910
+F911;87BA;87BA;87BA;87BA; # (螺; 螺; 螺; 螺; 螺; ) CJK COMPATIBILITY IDEOGRAPH-F911
+F912;88F8;88F8;88F8;88F8; # (裸; 裸; 裸; 裸; 裸; ) CJK COMPATIBILITY IDEOGRAPH-F912
+F913;908F;908F;908F;908F; # (邏; é‚; é‚; é‚; é‚; ) CJK COMPATIBILITY IDEOGRAPH-F913
+F914;6A02;6A02;6A02;6A02; # (樂; 樂; 樂; 樂; 樂; ) CJK COMPATIBILITY IDEOGRAPH-F914
+F915;6D1B;6D1B;6D1B;6D1B; # (洛; 洛; 洛; 洛; 洛; ) CJK COMPATIBILITY IDEOGRAPH-F915
+F916;70D9;70D9;70D9;70D9; # (烙; 烙; 烙; 烙; 烙; ) CJK COMPATIBILITY IDEOGRAPH-F916
+F917;73DE;73DE;73DE;73DE; # (珞; çž; çž; çž; çž; ) CJK COMPATIBILITY IDEOGRAPH-F917
+F918;843D;843D;843D;843D; # (落; è½; è½; è½; è½; ) CJK COMPATIBILITY IDEOGRAPH-F918
+F919;916A;916A;916A;916A; # (酪; 酪; 酪; 酪; 酪; ) CJK COMPATIBILITY IDEOGRAPH-F919
+F91A;99F1;99F1;99F1;99F1; # (駱; 駱; 駱; 駱; 駱; ) CJK COMPATIBILITY IDEOGRAPH-F91A
+F91B;4E82;4E82;4E82;4E82; # (亂; 亂; 亂; 亂; 亂; ) CJK COMPATIBILITY IDEOGRAPH-F91B
+F91C;5375;5375;5375;5375; # (卵; åµ; åµ; åµ; åµ; ) CJK COMPATIBILITY IDEOGRAPH-F91C
+F91D;6B04;6B04;6B04;6B04; # (ï¤; 欄; 欄; 欄; 欄; ) CJK COMPATIBILITY IDEOGRAPH-F91D
+F91E;721B;721B;721B;721B; # (爛; 爛; 爛; 爛; 爛; ) CJK COMPATIBILITY IDEOGRAPH-F91E
+F91F;862D;862D;862D;862D; # (蘭; 蘭; 蘭; 蘭; 蘭; ) CJK COMPATIBILITY IDEOGRAPH-F91F
+F920;9E1E;9E1E;9E1E;9E1E; # (鸞; 鸞; 鸞; 鸞; 鸞; ) CJK COMPATIBILITY IDEOGRAPH-F920
+F921;5D50;5D50;5D50;5D50; # (嵐; åµ; åµ; åµ; åµ; ) CJK COMPATIBILITY IDEOGRAPH-F921
+F922;6FEB;6FEB;6FEB;6FEB; # (濫; 濫; 濫; 濫; 濫; ) CJK COMPATIBILITY IDEOGRAPH-F922
+F923;85CD;85CD;85CD;85CD; # (藍; è—; è—; è—; è—; ) CJK COMPATIBILITY IDEOGRAPH-F923
+F924;8964;8964;8964;8964; # (襤; 襤; 襤; 襤; 襤; ) CJK COMPATIBILITY IDEOGRAPH-F924
+F925;62C9;62C9;62C9;62C9; # (拉; 拉; 拉; 拉; 拉; ) CJK COMPATIBILITY IDEOGRAPH-F925
+F926;81D8;81D8;81D8;81D8; # (臘; 臘; 臘; 臘; 臘; ) CJK COMPATIBILITY IDEOGRAPH-F926
+F927;881F;881F;881F;881F; # (蠟; 蠟; 蠟; 蠟; 蠟; ) CJK COMPATIBILITY IDEOGRAPH-F927
+F928;5ECA;5ECA;5ECA;5ECA; # (廊; 廊; 廊; 廊; 廊; ) CJK COMPATIBILITY IDEOGRAPH-F928
+F929;6717;6717;6717;6717; # (朗; 朗; 朗; 朗; 朗; ) CJK COMPATIBILITY IDEOGRAPH-F929
+F92A;6D6A;6D6A;6D6A;6D6A; # (浪; 浪; 浪; 浪; 浪; ) CJK COMPATIBILITY IDEOGRAPH-F92A
+F92B;72FC;72FC;72FC;72FC; # (狼; 狼; 狼; 狼; 狼; ) CJK COMPATIBILITY IDEOGRAPH-F92B
+F92C;90CE;90CE;90CE;90CE; # (郎; 郎; 郎; 郎; 郎; ) CJK COMPATIBILITY IDEOGRAPH-F92C
+F92D;4F86;4F86;4F86;4F86; # (來; 來; 來; 來; 來; ) CJK COMPATIBILITY IDEOGRAPH-F92D
+F92E;51B7;51B7;51B7;51B7; # (冷; 冷; 冷; 冷; 冷; ) CJK COMPATIBILITY IDEOGRAPH-F92E
+F92F;52DE;52DE;52DE;52DE; # (勞; 勞; 勞; 勞; 勞; ) CJK COMPATIBILITY IDEOGRAPH-F92F
+F930;64C4;64C4;64C4;64C4; # (擄; 擄; 擄; 擄; 擄; ) CJK COMPATIBILITY IDEOGRAPH-F930
+F931;6AD3;6AD3;6AD3;6AD3; # (櫓; 櫓; 櫓; 櫓; 櫓; ) CJK COMPATIBILITY IDEOGRAPH-F931
+F932;7210;7210;7210;7210; # (爐; çˆ; çˆ; çˆ; çˆ; ) CJK COMPATIBILITY IDEOGRAPH-F932
+F933;76E7;76E7;76E7;76E7; # (盧; 盧; 盧; 盧; 盧; ) CJK COMPATIBILITY IDEOGRAPH-F933
+F934;8001;8001;8001;8001; # (老; è€; è€; è€; è€; ) CJK COMPATIBILITY IDEOGRAPH-F934
+F935;8606;8606;8606;8606; # (蘆; 蘆; 蘆; 蘆; 蘆; ) CJK COMPATIBILITY IDEOGRAPH-F935
+F936;865C;865C;865C;865C; # (虜; 虜; 虜; 虜; 虜; ) CJK COMPATIBILITY IDEOGRAPH-F936
+F937;8DEF;8DEF;8DEF;8DEF; # (路; 路; 路; 路; 路; ) CJK COMPATIBILITY IDEOGRAPH-F937
+F938;9732;9732;9732;9732; # (露; 露; 露; 露; 露; ) CJK COMPATIBILITY IDEOGRAPH-F938
+F939;9B6F;9B6F;9B6F;9B6F; # (魯; 魯; 魯; 魯; 魯; ) CJK COMPATIBILITY IDEOGRAPH-F939
+F93A;9DFA;9DFA;9DFA;9DFA; # (鷺; 鷺; 鷺; 鷺; 鷺; ) CJK COMPATIBILITY IDEOGRAPH-F93A
+F93B;788C;788C;788C;788C; # (碌; 碌; 碌; 碌; 碌; ) CJK COMPATIBILITY IDEOGRAPH-F93B
+F93C;797F;797F;797F;797F; # (祿; 祿; 祿; 祿; 祿; ) CJK COMPATIBILITY IDEOGRAPH-F93C
+F93D;7DA0;7DA0;7DA0;7DA0; # (綠; 綠; 綠; 綠; 綠; ) CJK COMPATIBILITY IDEOGRAPH-F93D
+F93E;83C9;83C9;83C9;83C9; # (菉; è‰; è‰; è‰; è‰; ) CJK COMPATIBILITY IDEOGRAPH-F93E
+F93F;9304;9304;9304;9304; # (錄; 錄; 錄; 錄; 錄; ) CJK COMPATIBILITY IDEOGRAPH-F93F
+F940;9E7F;9E7F;9E7F;9E7F; # (鹿; 鹿; 鹿; 鹿; 鹿; ) CJK COMPATIBILITY IDEOGRAPH-F940
+F941;8AD6;8AD6;8AD6;8AD6; # (ï¥; è«–; è«–; è«–; è«–; ) CJK COMPATIBILITY IDEOGRAPH-F941
+F942;58DF;58DF;58DF;58DF; # (壟; 壟; 壟; 壟; 壟; ) CJK COMPATIBILITY IDEOGRAPH-F942
+F943;5F04;5F04;5F04;5F04; # (弄; 弄; 弄; 弄; 弄; ) CJK COMPATIBILITY IDEOGRAPH-F943
+F944;7C60;7C60;7C60;7C60; # (籠; 籠; 籠; 籠; 籠; ) CJK COMPATIBILITY IDEOGRAPH-F944
+F945;807E;807E;807E;807E; # (聾; è¾; è¾; è¾; è¾; ) CJK COMPATIBILITY IDEOGRAPH-F945
+F946;7262;7262;7262;7262; # (牢; 牢; 牢; 牢; 牢; ) CJK COMPATIBILITY IDEOGRAPH-F946
+F947;78CA;78CA;78CA;78CA; # (磊; 磊; 磊; 磊; 磊; ) CJK COMPATIBILITY IDEOGRAPH-F947
+F948;8CC2;8CC2;8CC2;8CC2; # (賂; 賂; 賂; 賂; 賂; ) CJK COMPATIBILITY IDEOGRAPH-F948
+F949;96F7;96F7;96F7;96F7; # (雷; 雷; 雷; 雷; 雷; ) CJK COMPATIBILITY IDEOGRAPH-F949
+F94A;58D8;58D8;58D8;58D8; # (壘; 壘; 壘; 壘; 壘; ) CJK COMPATIBILITY IDEOGRAPH-F94A
+F94B;5C62;5C62;5C62;5C62; # (屢; 屢; 屢; 屢; 屢; ) CJK COMPATIBILITY IDEOGRAPH-F94B
+F94C;6A13;6A13;6A13;6A13; # (樓; 樓; 樓; 樓; 樓; ) CJK COMPATIBILITY IDEOGRAPH-F94C
+F94D;6DDA;6DDA;6DDA;6DDA; # (ï¥; æ·š; æ·š; æ·š; æ·š; ) CJK COMPATIBILITY IDEOGRAPH-F94D
+F94E;6F0F;6F0F;6F0F;6F0F; # (漏; æ¼; æ¼; æ¼; æ¼; ) CJK COMPATIBILITY IDEOGRAPH-F94E
+F94F;7D2F;7D2F;7D2F;7D2F; # (ï¥; ç´¯; ç´¯; ç´¯; ç´¯; ) CJK COMPATIBILITY IDEOGRAPH-F94F
+F950;7E37;7E37;7E37;7E37; # (ï¥; 縷; 縷; 縷; 縷; ) CJK COMPATIBILITY IDEOGRAPH-F950
+F951;964B;964B;964B;964B; # (陋; 陋; 陋; 陋; 陋; ) CJK COMPATIBILITY IDEOGRAPH-F951
+F952;52D2;52D2;52D2;52D2; # (勒; 勒; 勒; 勒; 勒; ) CJK COMPATIBILITY IDEOGRAPH-F952
+F953;808B;808B;808B;808B; # (肋; 肋; 肋; 肋; 肋; ) CJK COMPATIBILITY IDEOGRAPH-F953
+F954;51DC;51DC;51DC;51DC; # (凜; 凜; 凜; 凜; 凜; ) CJK COMPATIBILITY IDEOGRAPH-F954
+F955;51CC;51CC;51CC;51CC; # (凌; 凌; 凌; 凌; 凌; ) CJK COMPATIBILITY IDEOGRAPH-F955
+F956;7A1C;7A1C;7A1C;7A1C; # (稜; 稜; 稜; 稜; 稜; ) CJK COMPATIBILITY IDEOGRAPH-F956
+F957;7DBE;7DBE;7DBE;7DBE; # (綾; 綾; 綾; 綾; 綾; ) CJK COMPATIBILITY IDEOGRAPH-F957
+F958;83F1;83F1;83F1;83F1; # (菱; è±; è±; è±; è±; ) CJK COMPATIBILITY IDEOGRAPH-F958
+F959;9675;9675;9675;9675; # (陵; 陵; 陵; 陵; 陵; ) CJK COMPATIBILITY IDEOGRAPH-F959
+F95A;8B80;8B80;8B80;8B80; # (讀; 讀; 讀; 讀; 讀; ) CJK COMPATIBILITY IDEOGRAPH-F95A
+F95B;62CF;62CF;62CF;62CF; # (拏; æ‹; æ‹; æ‹; æ‹; ) CJK COMPATIBILITY IDEOGRAPH-F95B
+F95C;6A02;6A02;6A02;6A02; # (樂; 樂; 樂; 樂; 樂; ) CJK COMPATIBILITY IDEOGRAPH-F95C
+F95D;8AFE;8AFE;8AFE;8AFE; # (ï¥; 諾; 諾; 諾; 諾; ) CJK COMPATIBILITY IDEOGRAPH-F95D
+F95E;4E39;4E39;4E39;4E39; # (丹; 丹; 丹; 丹; 丹; ) CJK COMPATIBILITY IDEOGRAPH-F95E
+F95F;5BE7;5BE7;5BE7;5BE7; # (寧; 寧; 寧; 寧; 寧; ) CJK COMPATIBILITY IDEOGRAPH-F95F
+F960;6012;6012;6012;6012; # (怒; 怒; 怒; 怒; 怒; ) CJK COMPATIBILITY IDEOGRAPH-F960
+F961;7387;7387;7387;7387; # (率; 率; 率; 率; 率; ) CJK COMPATIBILITY IDEOGRAPH-F961
+F962;7570;7570;7570;7570; # (異; 異; 異; 異; 異; ) CJK COMPATIBILITY IDEOGRAPH-F962
+F963;5317;5317;5317;5317; # (北; 北; 北; 北; 北; ) CJK COMPATIBILITY IDEOGRAPH-F963
+F964;78FB;78FB;78FB;78FB; # (磻; 磻; 磻; 磻; 磻; ) CJK COMPATIBILITY IDEOGRAPH-F964
+F965;4FBF;4FBF;4FBF;4FBF; # (便; 便; 便; 便; 便; ) CJK COMPATIBILITY IDEOGRAPH-F965
+F966;5FA9;5FA9;5FA9;5FA9; # (復; 復; 復; 復; 復; ) CJK COMPATIBILITY IDEOGRAPH-F966
+F967;4E0D;4E0D;4E0D;4E0D; # (不; ä¸; ä¸; ä¸; ä¸; ) CJK COMPATIBILITY IDEOGRAPH-F967
+F968;6CCC;6CCC;6CCC;6CCC; # (泌; 泌; 泌; 泌; 泌; ) CJK COMPATIBILITY IDEOGRAPH-F968
+F969;6578;6578;6578;6578; # (數; 數; 數; 數; 數; ) CJK COMPATIBILITY IDEOGRAPH-F969
+F96A;7D22;7D22;7D22;7D22; # (索; 索; 索; 索; 索; ) CJK COMPATIBILITY IDEOGRAPH-F96A
+F96B;53C3;53C3;53C3;53C3; # (參; åƒ; åƒ; åƒ; åƒ; ) CJK COMPATIBILITY IDEOGRAPH-F96B
+F96C;585E;585E;585E;585E; # (塞; 塞; 塞; 塞; 塞; ) CJK COMPATIBILITY IDEOGRAPH-F96C
+F96D;7701;7701;7701;7701; # (省; çœ; çœ; çœ; çœ; ) CJK COMPATIBILITY IDEOGRAPH-F96D
+F96E;8449;8449;8449;8449; # (葉; 葉; 葉; 葉; 葉; ) CJK COMPATIBILITY IDEOGRAPH-F96E
+F96F;8AAA;8AAA;8AAA;8AAA; # (說; 說; 說; 說; 說; ) CJK COMPATIBILITY IDEOGRAPH-F96F
+F970;6BBA;6BBA;6BBA;6BBA; # (殺; 殺; 殺; 殺; 殺; ) CJK COMPATIBILITY IDEOGRAPH-F970
+F971;8FB0;8FB0;8FB0;8FB0; # (辰; 辰; 辰; 辰; 辰; ) CJK COMPATIBILITY IDEOGRAPH-F971
+F972;6C88;6C88;6C88;6C88; # (沈; 沈; 沈; 沈; 沈; ) CJK COMPATIBILITY IDEOGRAPH-F972
+F973;62FE;62FE;62FE;62FE; # (拾; 拾; 拾; 拾; 拾; ) CJK COMPATIBILITY IDEOGRAPH-F973
+F974;82E5;82E5;82E5;82E5; # (若; 若; 若; 若; 若; ) CJK COMPATIBILITY IDEOGRAPH-F974
+F975;63A0;63A0;63A0;63A0; # (掠; 掠; 掠; 掠; 掠; ) CJK COMPATIBILITY IDEOGRAPH-F975
+F976;7565;7565;7565;7565; # (略; 略; 略; 略; 略; ) CJK COMPATIBILITY IDEOGRAPH-F976
+F977;4EAE;4EAE;4EAE;4EAE; # (亮; 亮; 亮; 亮; 亮; ) CJK COMPATIBILITY IDEOGRAPH-F977
+F978;5169;5169;5169;5169; # (兩; 兩; 兩; 兩; 兩; ) CJK COMPATIBILITY IDEOGRAPH-F978
+F979;51C9;51C9;51C9;51C9; # (凉; 凉; 凉; 凉; 凉; ) CJK COMPATIBILITY IDEOGRAPH-F979
+F97A;6881;6881;6881;6881; # (梁; æ¢; æ¢; æ¢; æ¢; ) CJK COMPATIBILITY IDEOGRAPH-F97A
+F97B;7CE7;7CE7;7CE7;7CE7; # (糧; 糧; 糧; 糧; 糧; ) CJK COMPATIBILITY IDEOGRAPH-F97B
+F97C;826F;826F;826F;826F; # (良; 良; 良; 良; 良; ) CJK COMPATIBILITY IDEOGRAPH-F97C
+F97D;8AD2;8AD2;8AD2;8AD2; # (諒; 諒; 諒; 諒; 諒; ) CJK COMPATIBILITY IDEOGRAPH-F97D
+F97E;91CF;91CF;91CF;91CF; # (量; é‡; é‡; é‡; é‡; ) CJK COMPATIBILITY IDEOGRAPH-F97E
+F97F;52F5;52F5;52F5;52F5; # (勵; 勵; 勵; 勵; 勵; ) CJK COMPATIBILITY IDEOGRAPH-F97F
+F980;5442;5442;5442;5442; # (呂; 呂; 呂; 呂; 呂; ) CJK COMPATIBILITY IDEOGRAPH-F980
+F981;5973;5973;5973;5973; # (ï¦; 女; 女; 女; 女; ) CJK COMPATIBILITY IDEOGRAPH-F981
+F982;5EEC;5EEC;5EEC;5EEC; # (廬; 廬; 廬; 廬; 廬; ) CJK COMPATIBILITY IDEOGRAPH-F982
+F983;65C5;65C5;65C5;65C5; # (旅; 旅; 旅; 旅; 旅; ) CJK COMPATIBILITY IDEOGRAPH-F983
+F984;6FFE;6FFE;6FFE;6FFE; # (濾; 濾; 濾; 濾; 濾; ) CJK COMPATIBILITY IDEOGRAPH-F984
+F985;792A;792A;792A;792A; # (礪; 礪; 礪; 礪; 礪; ) CJK COMPATIBILITY IDEOGRAPH-F985
+F986;95AD;95AD;95AD;95AD; # (閭; 閭; 閭; 閭; 閭; ) CJK COMPATIBILITY IDEOGRAPH-F986
+F987;9A6A;9A6A;9A6A;9A6A; # (驪; 驪; 驪; 驪; 驪; ) CJK COMPATIBILITY IDEOGRAPH-F987
+F988;9E97;9E97;9E97;9E97; # (麗; 麗; 麗; 麗; 麗; ) CJK COMPATIBILITY IDEOGRAPH-F988
+F989;9ECE;9ECE;9ECE;9ECE; # (黎; 黎; 黎; 黎; 黎; ) CJK COMPATIBILITY IDEOGRAPH-F989
+F98A;529B;529B;529B;529B; # (力; 力; 力; 力; 力; ) CJK COMPATIBILITY IDEOGRAPH-F98A
+F98B;66C6;66C6;66C6;66C6; # (曆; 曆; 曆; 曆; 曆; ) CJK COMPATIBILITY IDEOGRAPH-F98B
+F98C;6B77;6B77;6B77;6B77; # (歷; 歷; 歷; 歷; 歷; ) CJK COMPATIBILITY IDEOGRAPH-F98C
+F98D;8F62;8F62;8F62;8F62; # (ï¦; è½¢; è½¢; è½¢; è½¢; ) CJK COMPATIBILITY IDEOGRAPH-F98D
+F98E;5E74;5E74;5E74;5E74; # (年; 年; 年; 年; 年; ) CJK COMPATIBILITY IDEOGRAPH-F98E
+F98F;6190;6190;6190;6190; # (ï¦; æ†; æ†; æ†; æ†; ) CJK COMPATIBILITY IDEOGRAPH-F98F
+F990;6200;6200;6200;6200; # (ï¦; 戀; 戀; 戀; 戀; ) CJK COMPATIBILITY IDEOGRAPH-F990
+F991;649A;649A;649A;649A; # (撚; 撚; 撚; 撚; 撚; ) CJK COMPATIBILITY IDEOGRAPH-F991
+F992;6F23;6F23;6F23;6F23; # (漣; 漣; 漣; 漣; 漣; ) CJK COMPATIBILITY IDEOGRAPH-F992
+F993;7149;7149;7149;7149; # (煉; 煉; 煉; 煉; 煉; ) CJK COMPATIBILITY IDEOGRAPH-F993
+F994;7489;7489;7489;7489; # (璉; 璉; 璉; 璉; 璉; ) CJK COMPATIBILITY IDEOGRAPH-F994
+F995;79CA;79CA;79CA;79CA; # (秊; 秊; 秊; 秊; 秊; ) CJK COMPATIBILITY IDEOGRAPH-F995
+F996;7DF4;7DF4;7DF4;7DF4; # (練; 練; 練; 練; 練; ) CJK COMPATIBILITY IDEOGRAPH-F996
+F997;806F;806F;806F;806F; # (聯; è¯; è¯; è¯; è¯; ) CJK COMPATIBILITY IDEOGRAPH-F997
+F998;8F26;8F26;8F26;8F26; # (輦; 輦; 輦; 輦; 輦; ) CJK COMPATIBILITY IDEOGRAPH-F998
+F999;84EE;84EE;84EE;84EE; # (蓮; 蓮; 蓮; 蓮; 蓮; ) CJK COMPATIBILITY IDEOGRAPH-F999
+F99A;9023;9023;9023;9023; # (連; 連; 連; 連; 連; ) CJK COMPATIBILITY IDEOGRAPH-F99A
+F99B;934A;934A;934A;934A; # (鍊; éŠ; éŠ; éŠ; éŠ; ) CJK COMPATIBILITY IDEOGRAPH-F99B
+F99C;5217;5217;5217;5217; # (列; 列; 列; 列; 列; ) CJK COMPATIBILITY IDEOGRAPH-F99C
+F99D;52A3;52A3;52A3;52A3; # (ï¦; 劣; 劣; 劣; 劣; ) CJK COMPATIBILITY IDEOGRAPH-F99D
+F99E;54BD;54BD;54BD;54BD; # (咽; 咽; 咽; 咽; 咽; ) CJK COMPATIBILITY IDEOGRAPH-F99E
+F99F;70C8;70C8;70C8;70C8; # (烈; 烈; 烈; 烈; 烈; ) CJK COMPATIBILITY IDEOGRAPH-F99F
+F9A0;88C2;88C2;88C2;88C2; # (裂; 裂; 裂; 裂; 裂; ) CJK COMPATIBILITY IDEOGRAPH-F9A0
+F9A1;8AAA;8AAA;8AAA;8AAA; # (說; 說; 說; 說; 說; ) CJK COMPATIBILITY IDEOGRAPH-F9A1
+F9A2;5EC9;5EC9;5EC9;5EC9; # (廉; 廉; 廉; 廉; 廉; ) CJK COMPATIBILITY IDEOGRAPH-F9A2
+F9A3;5FF5;5FF5;5FF5;5FF5; # (念; 念; 念; 念; 念; ) CJK COMPATIBILITY IDEOGRAPH-F9A3
+F9A4;637B;637B;637B;637B; # (捻; æ»; æ»; æ»; æ»; ) CJK COMPATIBILITY IDEOGRAPH-F9A4
+F9A5;6BAE;6BAE;6BAE;6BAE; # (殮; 殮; 殮; 殮; 殮; ) CJK COMPATIBILITY IDEOGRAPH-F9A5
+F9A6;7C3E;7C3E;7C3E;7C3E; # (簾; 簾; 簾; 簾; 簾; ) CJK COMPATIBILITY IDEOGRAPH-F9A6
+F9A7;7375;7375;7375;7375; # (獵; çµ; çµ; çµ; çµ; ) CJK COMPATIBILITY IDEOGRAPH-F9A7
+F9A8;4EE4;4EE4;4EE4;4EE4; # (令; 令; 令; 令; 令; ) CJK COMPATIBILITY IDEOGRAPH-F9A8
+F9A9;56F9;56F9;56F9;56F9; # (囹; 囹; 囹; 囹; 囹; ) CJK COMPATIBILITY IDEOGRAPH-F9A9
+F9AA;5BE7;5BE7;5BE7;5BE7; # (寧; 寧; 寧; 寧; 寧; ) CJK COMPATIBILITY IDEOGRAPH-F9AA
+F9AB;5DBA;5DBA;5DBA;5DBA; # (嶺; 嶺; 嶺; 嶺; 嶺; ) CJK COMPATIBILITY IDEOGRAPH-F9AB
+F9AC;601C;601C;601C;601C; # (怜; 怜; 怜; 怜; 怜; ) CJK COMPATIBILITY IDEOGRAPH-F9AC
+F9AD;73B2;73B2;73B2;73B2; # (玲; 玲; 玲; 玲; 玲; ) CJK COMPATIBILITY IDEOGRAPH-F9AD
+F9AE;7469;7469;7469;7469; # (瑩; 瑩; 瑩; 瑩; 瑩; ) CJK COMPATIBILITY IDEOGRAPH-F9AE
+F9AF;7F9A;7F9A;7F9A;7F9A; # (羚; 羚; 羚; 羚; 羚; ) CJK COMPATIBILITY IDEOGRAPH-F9AF
+F9B0;8046;8046;8046;8046; # (聆; è†; è†; è†; è†; ) CJK COMPATIBILITY IDEOGRAPH-F9B0
+F9B1;9234;9234;9234;9234; # (鈴; 鈴; 鈴; 鈴; 鈴; ) CJK COMPATIBILITY IDEOGRAPH-F9B1
+F9B2;96F6;96F6;96F6;96F6; # (零; 零; 零; 零; 零; ) CJK COMPATIBILITY IDEOGRAPH-F9B2
+F9B3;9748;9748;9748;9748; # (靈; éˆ; éˆ; éˆ; éˆ; ) CJK COMPATIBILITY IDEOGRAPH-F9B3
+F9B4;9818;9818;9818;9818; # (領; 領; 領; 領; 領; ) CJK COMPATIBILITY IDEOGRAPH-F9B4
+F9B5;4F8B;4F8B;4F8B;4F8B; # (例; 例; 例; 例; 例; ) CJK COMPATIBILITY IDEOGRAPH-F9B5
+F9B6;79AE;79AE;79AE;79AE; # (禮; 禮; 禮; 禮; 禮; ) CJK COMPATIBILITY IDEOGRAPH-F9B6
+F9B7;91B4;91B4;91B4;91B4; # (醴; 醴; 醴; 醴; 醴; ) CJK COMPATIBILITY IDEOGRAPH-F9B7
+F9B8;96B8;96B8;96B8;96B8; # (隸; 隸; 隸; 隸; 隸; ) CJK COMPATIBILITY IDEOGRAPH-F9B8
+F9B9;60E1;60E1;60E1;60E1; # (惡; 惡; 惡; 惡; 惡; ) CJK COMPATIBILITY IDEOGRAPH-F9B9
+F9BA;4E86;4E86;4E86;4E86; # (了; 了; 了; 了; 了; ) CJK COMPATIBILITY IDEOGRAPH-F9BA
+F9BB;50DA;50DA;50DA;50DA; # (僚; 僚; 僚; 僚; 僚; ) CJK COMPATIBILITY IDEOGRAPH-F9BB
+F9BC;5BEE;5BEE;5BEE;5BEE; # (寮; 寮; 寮; 寮; 寮; ) CJK COMPATIBILITY IDEOGRAPH-F9BC
+F9BD;5C3F;5C3F;5C3F;5C3F; # (尿; 尿; 尿; 尿; 尿; ) CJK COMPATIBILITY IDEOGRAPH-F9BD
+F9BE;6599;6599;6599;6599; # (料; 料; 料; 料; 料; ) CJK COMPATIBILITY IDEOGRAPH-F9BE
+F9BF;6A02;6A02;6A02;6A02; # (樂; 樂; 樂; 樂; 樂; ) CJK COMPATIBILITY IDEOGRAPH-F9BF
+F9C0;71CE;71CE;71CE;71CE; # (燎; 燎; 燎; 燎; 燎; ) CJK COMPATIBILITY IDEOGRAPH-F9C0
+F9C1;7642;7642;7642;7642; # (ï§; 療; 療; 療; 療; ) CJK COMPATIBILITY IDEOGRAPH-F9C1
+F9C2;84FC;84FC;84FC;84FC; # (蓼; 蓼; 蓼; 蓼; 蓼; ) CJK COMPATIBILITY IDEOGRAPH-F9C2
+F9C3;907C;907C;907C;907C; # (遼; é¼; é¼; é¼; é¼; ) CJK COMPATIBILITY IDEOGRAPH-F9C3
+F9C4;9F8D;9F8D;9F8D;9F8D; # (龍; é¾; é¾; é¾; é¾; ) CJK COMPATIBILITY IDEOGRAPH-F9C4
+F9C5;6688;6688;6688;6688; # (暈; 暈; 暈; 暈; 暈; ) CJK COMPATIBILITY IDEOGRAPH-F9C5
+F9C6;962E;962E;962E;962E; # (阮; 阮; 阮; 阮; 阮; ) CJK COMPATIBILITY IDEOGRAPH-F9C6
+F9C7;5289;5289;5289;5289; # (劉; 劉; 劉; 劉; 劉; ) CJK COMPATIBILITY IDEOGRAPH-F9C7
+F9C8;677B;677B;677B;677B; # (杻; æ»; æ»; æ»; æ»; ) CJK COMPATIBILITY IDEOGRAPH-F9C8
+F9C9;67F3;67F3;67F3;67F3; # (柳; 柳; 柳; 柳; 柳; ) CJK COMPATIBILITY IDEOGRAPH-F9C9
+F9CA;6D41;6D41;6D41;6D41; # (流; æµ; æµ; æµ; æµ; ) CJK COMPATIBILITY IDEOGRAPH-F9CA
+F9CB;6E9C;6E9C;6E9C;6E9C; # (溜; 溜; 溜; 溜; 溜; ) CJK COMPATIBILITY IDEOGRAPH-F9CB
+F9CC;7409;7409;7409;7409; # (琉; ç‰; ç‰; ç‰; ç‰; ) CJK COMPATIBILITY IDEOGRAPH-F9CC
+F9CD;7559;7559;7559;7559; # (ï§; ç•™; ç•™; ç•™; ç•™; ) CJK COMPATIBILITY IDEOGRAPH-F9CD
+F9CE;786B;786B;786B;786B; # (硫; 硫; 硫; 硫; 硫; ) CJK COMPATIBILITY IDEOGRAPH-F9CE
+F9CF;7D10;7D10;7D10;7D10; # (ï§; ç´; ç´; ç´; ç´; ) CJK COMPATIBILITY IDEOGRAPH-F9CF
+F9D0;985E;985E;985E;985E; # (ï§; é¡ž; é¡ž; é¡ž; é¡ž; ) CJK COMPATIBILITY IDEOGRAPH-F9D0
+F9D1;516D;516D;516D;516D; # (六; 六; 六; 六; 六; ) CJK COMPATIBILITY IDEOGRAPH-F9D1
+F9D2;622E;622E;622E;622E; # (戮; 戮; 戮; 戮; 戮; ) CJK COMPATIBILITY IDEOGRAPH-F9D2
+F9D3;9678;9678;9678;9678; # (陸; 陸; 陸; 陸; 陸; ) CJK COMPATIBILITY IDEOGRAPH-F9D3
+F9D4;502B;502B;502B;502B; # (倫; 倫; 倫; 倫; 倫; ) CJK COMPATIBILITY IDEOGRAPH-F9D4
+F9D5;5D19;5D19;5D19;5D19; # (崙; 崙; 崙; 崙; 崙; ) CJK COMPATIBILITY IDEOGRAPH-F9D5
+F9D6;6DEA;6DEA;6DEA;6DEA; # (淪; 淪; 淪; 淪; 淪; ) CJK COMPATIBILITY IDEOGRAPH-F9D6
+F9D7;8F2A;8F2A;8F2A;8F2A; # (輪; 輪; 輪; 輪; 輪; ) CJK COMPATIBILITY IDEOGRAPH-F9D7
+F9D8;5F8B;5F8B;5F8B;5F8B; # (律; 律; 律; 律; 律; ) CJK COMPATIBILITY IDEOGRAPH-F9D8
+F9D9;6144;6144;6144;6144; # (慄; 慄; 慄; 慄; 慄; ) CJK COMPATIBILITY IDEOGRAPH-F9D9
+F9DA;6817;6817;6817;6817; # (栗; 栗; 栗; 栗; 栗; ) CJK COMPATIBILITY IDEOGRAPH-F9DA
+F9DB;7387;7387;7387;7387; # (率; 率; 率; 率; 率; ) CJK COMPATIBILITY IDEOGRAPH-F9DB
+F9DC;9686;9686;9686;9686; # (隆; 隆; 隆; 隆; 隆; ) CJK COMPATIBILITY IDEOGRAPH-F9DC
+F9DD;5229;5229;5229;5229; # (ï§; 利; 利; 利; 利; ) CJK COMPATIBILITY IDEOGRAPH-F9DD
+F9DE;540F;540F;540F;540F; # (吏; å; å; å; å; ) CJK COMPATIBILITY IDEOGRAPH-F9DE
+F9DF;5C65;5C65;5C65;5C65; # (履; 履; 履; 履; 履; ) CJK COMPATIBILITY IDEOGRAPH-F9DF
+F9E0;6613;6613;6613;6613; # (易; 易; 易; 易; 易; ) CJK COMPATIBILITY IDEOGRAPH-F9E0
+F9E1;674E;674E;674E;674E; # (李; æŽ; æŽ; æŽ; æŽ; ) CJK COMPATIBILITY IDEOGRAPH-F9E1
+F9E2;68A8;68A8;68A8;68A8; # (梨; 梨; 梨; 梨; 梨; ) CJK COMPATIBILITY IDEOGRAPH-F9E2
+F9E3;6CE5;6CE5;6CE5;6CE5; # (泥; 泥; 泥; 泥; 泥; ) CJK COMPATIBILITY IDEOGRAPH-F9E3
+F9E4;7406;7406;7406;7406; # (理; ç†; ç†; ç†; ç†; ) CJK COMPATIBILITY IDEOGRAPH-F9E4
+F9E5;75E2;75E2;75E2;75E2; # (痢; 痢; 痢; 痢; 痢; ) CJK COMPATIBILITY IDEOGRAPH-F9E5
+F9E6;7F79;7F79;7F79;7F79; # (罹; 罹; 罹; 罹; 罹; ) CJK COMPATIBILITY IDEOGRAPH-F9E6
+F9E7;88CF;88CF;88CF;88CF; # (裏; è£; è£; è£; è£; ) CJK COMPATIBILITY IDEOGRAPH-F9E7
+F9E8;88E1;88E1;88E1;88E1; # (裡; 裡; 裡; 裡; 裡; ) CJK COMPATIBILITY IDEOGRAPH-F9E8
+F9E9;91CC;91CC;91CC;91CC; # (里; 里; 里; 里; 里; ) CJK COMPATIBILITY IDEOGRAPH-F9E9
+F9EA;96E2;96E2;96E2;96E2; # (離; 離; 離; 離; 離; ) CJK COMPATIBILITY IDEOGRAPH-F9EA
+F9EB;533F;533F;533F;533F; # (匿; 匿; 匿; 匿; 匿; ) CJK COMPATIBILITY IDEOGRAPH-F9EB
+F9EC;6EBA;6EBA;6EBA;6EBA; # (溺; 溺; 溺; 溺; 溺; ) CJK COMPATIBILITY IDEOGRAPH-F9EC
+F9ED;541D;541D;541D;541D; # (吝; å; å; å; å; ) CJK COMPATIBILITY IDEOGRAPH-F9ED
+F9EE;71D0;71D0;71D0;71D0; # (燐; ç‡; ç‡; ç‡; ç‡; ) CJK COMPATIBILITY IDEOGRAPH-F9EE
+F9EF;7498;7498;7498;7498; # (璘; 璘; 璘; 璘; 璘; ) CJK COMPATIBILITY IDEOGRAPH-F9EF
+F9F0;85FA;85FA;85FA;85FA; # (藺; 藺; 藺; 藺; 藺; ) CJK COMPATIBILITY IDEOGRAPH-F9F0
+F9F1;96A3;96A3;96A3;96A3; # (隣; 隣; 隣; 隣; 隣; ) CJK COMPATIBILITY IDEOGRAPH-F9F1
+F9F2;9C57;9C57;9C57;9C57; # (鱗; 鱗; 鱗; 鱗; 鱗; ) CJK COMPATIBILITY IDEOGRAPH-F9F2
+F9F3;9E9F;9E9F;9E9F;9E9F; # (麟; 麟; 麟; 麟; 麟; ) CJK COMPATIBILITY IDEOGRAPH-F9F3
+F9F4;6797;6797;6797;6797; # (林; 林; 林; 林; 林; ) CJK COMPATIBILITY IDEOGRAPH-F9F4
+F9F5;6DCB;6DCB;6DCB;6DCB; # (淋; 淋; 淋; 淋; 淋; ) CJK COMPATIBILITY IDEOGRAPH-F9F5
+F9F6;81E8;81E8;81E8;81E8; # (臨; 臨; 臨; 臨; 臨; ) CJK COMPATIBILITY IDEOGRAPH-F9F6
+F9F7;7ACB;7ACB;7ACB;7ACB; # (立; 立; 立; 立; 立; ) CJK COMPATIBILITY IDEOGRAPH-F9F7
+F9F8;7B20;7B20;7B20;7B20; # (笠; 笠; 笠; 笠; 笠; ) CJK COMPATIBILITY IDEOGRAPH-F9F8
+F9F9;7C92;7C92;7C92;7C92; # (粒; 粒; 粒; 粒; 粒; ) CJK COMPATIBILITY IDEOGRAPH-F9F9
+F9FA;72C0;72C0;72C0;72C0; # (狀; 狀; 狀; 狀; 狀; ) CJK COMPATIBILITY IDEOGRAPH-F9FA
+F9FB;7099;7099;7099;7099; # (炙; 炙; 炙; 炙; 炙; ) CJK COMPATIBILITY IDEOGRAPH-F9FB
+F9FC;8B58;8B58;8B58;8B58; # (識; 識; 識; 識; 識; ) CJK COMPATIBILITY IDEOGRAPH-F9FC
+F9FD;4EC0;4EC0;4EC0;4EC0; # (什; 什; 什; 什; 什; ) CJK COMPATIBILITY IDEOGRAPH-F9FD
+F9FE;8336;8336;8336;8336; # (茶; 茶; 茶; 茶; 茶; ) CJK COMPATIBILITY IDEOGRAPH-F9FE
+F9FF;523A;523A;523A;523A; # (刺; 刺; 刺; 刺; 刺; ) CJK COMPATIBILITY IDEOGRAPH-F9FF
+FA00;5207;5207;5207;5207; # (切; 切; 切; 切; 切; ) CJK COMPATIBILITY IDEOGRAPH-FA00
+FA01;5EA6;5EA6;5EA6;5EA6; # (ï¨; 度; 度; 度; 度; ) CJK COMPATIBILITY IDEOGRAPH-FA01
+FA02;62D3;62D3;62D3;62D3; # (拓; 拓; 拓; 拓; 拓; ) CJK COMPATIBILITY IDEOGRAPH-FA02
+FA03;7CD6;7CD6;7CD6;7CD6; # (糖; 糖; 糖; 糖; 糖; ) CJK COMPATIBILITY IDEOGRAPH-FA03
+FA04;5B85;5B85;5B85;5B85; # (宅; 宅; 宅; 宅; 宅; ) CJK COMPATIBILITY IDEOGRAPH-FA04
+FA05;6D1E;6D1E;6D1E;6D1E; # (洞; 洞; 洞; 洞; 洞; ) CJK COMPATIBILITY IDEOGRAPH-FA05
+FA06;66B4;66B4;66B4;66B4; # (暴; 暴; 暴; 暴; 暴; ) CJK COMPATIBILITY IDEOGRAPH-FA06
+FA07;8F3B;8F3B;8F3B;8F3B; # (輻; 輻; 輻; 輻; 輻; ) CJK COMPATIBILITY IDEOGRAPH-FA07
+FA08;884C;884C;884C;884C; # (行; 行; 行; 行; 行; ) CJK COMPATIBILITY IDEOGRAPH-FA08
+FA09;964D;964D;964D;964D; # (降; é™; é™; é™; é™; ) CJK COMPATIBILITY IDEOGRAPH-FA09
+FA0A;898B;898B;898B;898B; # (見; 見; 見; 見; 見; ) CJK COMPATIBILITY IDEOGRAPH-FA0A
+FA0B;5ED3;5ED3;5ED3;5ED3; # (廓; 廓; 廓; 廓; 廓; ) CJK COMPATIBILITY IDEOGRAPH-FA0B
+FA0C;5140;5140;5140;5140; # (兀; 兀; 兀; 兀; 兀; ) CJK COMPATIBILITY IDEOGRAPH-FA0C
+FA0D;55C0;55C0;55C0;55C0; # (ï¨; å—€; å—€; å—€; å—€; ) CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10;585A;585A;585A;585A; # (ï¨; å¡š; å¡š; å¡š; å¡š; ) CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12;6674;6674;6674;6674; # (晴; 晴; 晴; 晴; 晴; ) CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15;51DE;51DE;51DE;51DE; # (凞; 凞; 凞; 凞; 凞; ) CJK COMPATIBILITY IDEOGRAPH-FA15
+FA16;732A;732A;732A;732A; # (猪; 猪; 猪; 猪; 猪; ) CJK COMPATIBILITY IDEOGRAPH-FA16
+FA17;76CA;76CA;76CA;76CA; # (益; 益; 益; 益; 益; ) CJK COMPATIBILITY IDEOGRAPH-FA17
+FA18;793C;793C;793C;793C; # (礼; 礼; 礼; 礼; 礼; ) CJK COMPATIBILITY IDEOGRAPH-FA18
+FA19;795E;795E;795E;795E; # (神; 神; 神; 神; 神; ) CJK COMPATIBILITY IDEOGRAPH-FA19
+FA1A;7965;7965;7965;7965; # (祥; 祥; 祥; 祥; 祥; ) CJK COMPATIBILITY IDEOGRAPH-FA1A
+FA1B;798F;798F;798F;798F; # (福; ç¦; ç¦; ç¦; ç¦; ) CJK COMPATIBILITY IDEOGRAPH-FA1B
+FA1C;9756;9756;9756;9756; # (靖; é–; é–; é–; é–; ) CJK COMPATIBILITY IDEOGRAPH-FA1C
+FA1D;7CBE;7CBE;7CBE;7CBE; # (ï¨; ç²¾; ç²¾; ç²¾; ç²¾; ) CJK COMPATIBILITY IDEOGRAPH-FA1D
+FA1E;7FBD;7FBD;7FBD;7FBD; # (羽; 羽; 羽; 羽; 羽; ) CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20;8612;8612;8612;8612; # (蘒; 蘒; 蘒; 蘒; 蘒; ) CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22;8AF8;8AF8;8AF8;8AF8; # (諸; 諸; 諸; 諸; 諸; ) CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25;9038;9038;9038;9038; # (逸; 逸; 逸; 逸; 逸; ) CJK COMPATIBILITY IDEOGRAPH-FA25
+FA26;90FD;90FD;90FD;90FD; # (都; 都; 都; 都; 都; ) CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A;98EF;98EF;98EF;98EF; # (飯; 飯; 飯; 飯; 飯; ) CJK COMPATIBILITY IDEOGRAPH-FA2A
+FA2B;98FC;98FC;98FC;98FC; # (飼; 飼; 飼; 飼; 飼; ) CJK COMPATIBILITY IDEOGRAPH-FA2B
+FA2C;9928;9928;9928;9928; # (館; 館; 館; 館; 館; ) CJK COMPATIBILITY IDEOGRAPH-FA2C
+FA2D;9DB4;9DB4;9DB4;9DB4; # (鶴; 鶴; 鶴; 鶴; 鶴; ) CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA2E;90DE;90DE;90DE;90DE; # (郞; 郞; 郞; 郞; 郞; ) CJK COMPATIBILITY IDEOGRAPH-FA2E
+FA2F;96B7;96B7;96B7;96B7; # (隷; 隷; 隷; 隷; 隷; ) CJK COMPATIBILITY IDEOGRAPH-FA2F
+FA30;4FAE;4FAE;4FAE;4FAE; # (侮; 侮; 侮; 侮; 侮; ) CJK COMPATIBILITY IDEOGRAPH-FA30
+FA31;50E7;50E7;50E7;50E7; # (僧; 僧; 僧; 僧; 僧; ) CJK COMPATIBILITY IDEOGRAPH-FA31
+FA32;514D;514D;514D;514D; # (免; å…; å…; å…; å…; ) CJK COMPATIBILITY IDEOGRAPH-FA32
+FA33;52C9;52C9;52C9;52C9; # (勉; 勉; 勉; 勉; 勉; ) CJK COMPATIBILITY IDEOGRAPH-FA33
+FA34;52E4;52E4;52E4;52E4; # (勤; 勤; 勤; 勤; 勤; ) CJK COMPATIBILITY IDEOGRAPH-FA34
+FA35;5351;5351;5351;5351; # (卑; å‘; å‘; å‘; å‘; ) CJK COMPATIBILITY IDEOGRAPH-FA35
+FA36;559D;559D;559D;559D; # (喝; å–; å–; å–; å–; ) CJK COMPATIBILITY IDEOGRAPH-FA36
+FA37;5606;5606;5606;5606; # (嘆; 嘆; 嘆; 嘆; 嘆; ) CJK COMPATIBILITY IDEOGRAPH-FA37
+FA38;5668;5668;5668;5668; # (器; 器; 器; 器; 器; ) CJK COMPATIBILITY IDEOGRAPH-FA38
+FA39;5840;5840;5840;5840; # (塀; 塀; 塀; 塀; 塀; ) CJK COMPATIBILITY IDEOGRAPH-FA39
+FA3A;58A8;58A8;58A8;58A8; # (墨; 墨; 墨; 墨; 墨; ) CJK COMPATIBILITY IDEOGRAPH-FA3A
+FA3B;5C64;5C64;5C64;5C64; # (層; 層; 層; 層; 層; ) CJK COMPATIBILITY IDEOGRAPH-FA3B
+FA3C;5C6E;5C6E;5C6E;5C6E; # (屮; 屮; 屮; 屮; 屮; ) CJK COMPATIBILITY IDEOGRAPH-FA3C
+FA3D;6094;6094;6094;6094; # (悔; 悔; 悔; 悔; 悔; ) CJK COMPATIBILITY IDEOGRAPH-FA3D
+FA3E;6168;6168;6168;6168; # (慨; 慨; 慨; 慨; 慨; ) CJK COMPATIBILITY IDEOGRAPH-FA3E
+FA3F;618E;618E;618E;618E; # (憎; 憎; 憎; 憎; 憎; ) CJK COMPATIBILITY IDEOGRAPH-FA3F
+FA40;61F2;61F2;61F2;61F2; # (懲; 懲; 懲; 懲; 懲; ) CJK COMPATIBILITY IDEOGRAPH-FA40
+FA41;654F;654F;654F;654F; # (ï©; æ•; æ•; æ•; æ•; ) CJK COMPATIBILITY IDEOGRAPH-FA41
+FA42;65E2;65E2;65E2;65E2; # (ï©‚; æ—¢; æ—¢; æ—¢; æ—¢; ) CJK COMPATIBILITY IDEOGRAPH-FA42
+FA43;6691;6691;6691;6691; # (暑; 暑; 暑; 暑; 暑; ) CJK COMPATIBILITY IDEOGRAPH-FA43
+FA44;6885;6885;6885;6885; # (梅; 梅; 梅; 梅; 梅; ) CJK COMPATIBILITY IDEOGRAPH-FA44
+FA45;6D77;6D77;6D77;6D77; # (ï©…; æµ·; æµ·; æµ·; æµ·; ) CJK COMPATIBILITY IDEOGRAPH-FA45
+FA46;6E1A;6E1A;6E1A;6E1A; # (渚; 渚; 渚; 渚; 渚; ) CJK COMPATIBILITY IDEOGRAPH-FA46
+FA47;6F22;6F22;6F22;6F22; # (漢; 漢; 漢; 漢; 漢; ) CJK COMPATIBILITY IDEOGRAPH-FA47
+FA48;716E;716E;716E;716E; # (煮; 煮; 煮; 煮; 煮; ) CJK COMPATIBILITY IDEOGRAPH-FA48
+FA49;722B;722B;722B;722B; # (爫; 爫; 爫; 爫; 爫; ) CJK COMPATIBILITY IDEOGRAPH-FA49
+FA4A;7422;7422;7422;7422; # (ï©Š; ç¢; ç¢; ç¢; ç¢; ) CJK COMPATIBILITY IDEOGRAPH-FA4A
+FA4B;7891;7891;7891;7891; # (碑; 碑; 碑; 碑; 碑; ) CJK COMPATIBILITY IDEOGRAPH-FA4B
+FA4C;793E;793E;793E;793E; # (社; 社; 社; 社; 社; ) CJK COMPATIBILITY IDEOGRAPH-FA4C
+FA4D;7949;7949;7949;7949; # (ï©; 祉; 祉; 祉; 祉; ) CJK COMPATIBILITY IDEOGRAPH-FA4D
+FA4E;7948;7948;7948;7948; # (祈; 祈; 祈; 祈; 祈; ) CJK COMPATIBILITY IDEOGRAPH-FA4E
+FA4F;7950;7950;7950;7950; # (ï©; ç¥; ç¥; ç¥; ç¥; ) CJK COMPATIBILITY IDEOGRAPH-FA4F
+FA50;7956;7956;7956;7956; # (ï©; 祖; 祖; 祖; 祖; ) CJK COMPATIBILITY IDEOGRAPH-FA50
+FA51;795D;795D;795D;795D; # (ï©‘; ç¥; ç¥; ç¥; ç¥; ) CJK COMPATIBILITY IDEOGRAPH-FA51
+FA52;798D;798D;798D;798D; # (ï©’; ç¦; ç¦; ç¦; ç¦; ) CJK COMPATIBILITY IDEOGRAPH-FA52
+FA53;798E;798E;798E;798E; # (禎; 禎; 禎; 禎; 禎; ) CJK COMPATIBILITY IDEOGRAPH-FA53
+FA54;7A40;7A40;7A40;7A40; # (ï©”; ç©€; ç©€; ç©€; ç©€; ) CJK COMPATIBILITY IDEOGRAPH-FA54
+FA55;7A81;7A81;7A81;7A81; # (ï©•; çª; çª; çª; çª; ) CJK COMPATIBILITY IDEOGRAPH-FA55
+FA56;7BC0;7BC0;7BC0;7BC0; # (節; 節; 節; 節; 節; ) CJK COMPATIBILITY IDEOGRAPH-FA56
+FA57;7DF4;7DF4;7DF4;7DF4; # (ï©—; ç·´; ç·´; ç·´; ç·´; ) CJK COMPATIBILITY IDEOGRAPH-FA57
+FA58;7E09;7E09;7E09;7E09; # (縉; 縉; 縉; 縉; 縉; ) CJK COMPATIBILITY IDEOGRAPH-FA58
+FA59;7E41;7E41;7E41;7E41; # (ï©™; ç¹; ç¹; ç¹; ç¹; ) CJK COMPATIBILITY IDEOGRAPH-FA59
+FA5A;7F72;7F72;7F72;7F72; # (ï©š; ç½²; ç½²; ç½²; ç½²; ) CJK COMPATIBILITY IDEOGRAPH-FA5A
+FA5B;8005;8005;8005;8005; # (者; 者; 者; 者; 者; ) CJK COMPATIBILITY IDEOGRAPH-FA5B
+FA5C;81ED;81ED;81ED;81ED; # (臭; 臭; 臭; 臭; 臭; ) CJK COMPATIBILITY IDEOGRAPH-FA5C
+FA5D;8279;8279;8279;8279; # (ï©; 艹; 艹; 艹; 艹; ) CJK COMPATIBILITY IDEOGRAPH-FA5D
+FA5E;8279;8279;8279;8279; # (艹; 艹; 艹; 艹; 艹; ) CJK COMPATIBILITY IDEOGRAPH-FA5E
+FA5F;8457;8457;8457;8457; # (ï©Ÿ; è‘—; è‘—; è‘—; è‘—; ) CJK COMPATIBILITY IDEOGRAPH-FA5F
+FA60;8910;8910;8910;8910; # (ï© ; è¤; è¤; è¤; è¤; ) CJK COMPATIBILITY IDEOGRAPH-FA60
+FA61;8996;8996;8996;8996; # (視; 視; 視; 視; 視; ) CJK COMPATIBILITY IDEOGRAPH-FA61
+FA62;8B01;8B01;8B01;8B01; # (ï©¢; è¬; è¬; è¬; è¬; ) CJK COMPATIBILITY IDEOGRAPH-FA62
+FA63;8B39;8B39;8B39;8B39; # (謹; 謹; 謹; 謹; 謹; ) CJK COMPATIBILITY IDEOGRAPH-FA63
+FA64;8CD3;8CD3;8CD3;8CD3; # (賓; 賓; 賓; 賓; 賓; ) CJK COMPATIBILITY IDEOGRAPH-FA64
+FA65;8D08;8D08;8D08;8D08; # (ï©¥; è´ˆ; è´ˆ; è´ˆ; è´ˆ; ) CJK COMPATIBILITY IDEOGRAPH-FA65
+FA66;8FB6;8FB6;8FB6;8FB6; # (辶; 辶; 辶; 辶; 辶; ) CJK COMPATIBILITY IDEOGRAPH-FA66
+FA67;9038;9038;9038;9038; # (逸; 逸; 逸; 逸; 逸; ) CJK COMPATIBILITY IDEOGRAPH-FA67
+FA68;96E3;96E3;96E3;96E3; # (難; 難; 難; 難; 難; ) CJK COMPATIBILITY IDEOGRAPH-FA68
+FA69;97FF;97FF;97FF;97FF; # (響; 響; 響; 響; 響; ) CJK COMPATIBILITY IDEOGRAPH-FA69
+FA6A;983B;983B;983B;983B; # (頻; 頻; 頻; 頻; 頻; ) CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA6B;6075;6075;6075;6075; # (ï©«; æµ; æµ; æµ; æµ; ) CJK COMPATIBILITY IDEOGRAPH-FA6B
+FA6C;242EE;242EE;242EE;242EE; # (𤋮; 𤋮; 𤋮; 𤋮; 𤋮; ) CJK COMPATIBILITY IDEOGRAPH-FA6C
+FA6D;8218;8218;8218;8218; # (舘; 舘; 舘; 舘; 舘; ) CJK COMPATIBILITY IDEOGRAPH-FA6D
+FA70;4E26;4E26;4E26;4E26; # (並; 並; 並; 並; 並; ) CJK COMPATIBILITY IDEOGRAPH-FA70
+FA71;51B5;51B5;51B5;51B5; # (况; 况; 况; 况; 况; ) CJK COMPATIBILITY IDEOGRAPH-FA71
+FA72;5168;5168;5168;5168; # (全; 全; 全; 全; 全; ) CJK COMPATIBILITY IDEOGRAPH-FA72
+FA73;4F80;4F80;4F80;4F80; # (侀; 侀; 侀; 侀; 侀; ) CJK COMPATIBILITY IDEOGRAPH-FA73
+FA74;5145;5145;5145;5145; # (ï©´; å……; å……; å……; å……; ) CJK COMPATIBILITY IDEOGRAPH-FA74
+FA75;5180;5180;5180;5180; # (冀; 冀; 冀; 冀; 冀; ) CJK COMPATIBILITY IDEOGRAPH-FA75
+FA76;52C7;52C7;52C7;52C7; # (勇; 勇; 勇; 勇; 勇; ) CJK COMPATIBILITY IDEOGRAPH-FA76
+FA77;52FA;52FA;52FA;52FA; # (勺; 勺; 勺; 勺; 勺; ) CJK COMPATIBILITY IDEOGRAPH-FA77
+FA78;559D;559D;559D;559D; # (喝; å–; å–; å–; å–; ) CJK COMPATIBILITY IDEOGRAPH-FA78
+FA79;5555;5555;5555;5555; # (啕; 啕; 啕; 啕; 啕; ) CJK COMPATIBILITY IDEOGRAPH-FA79
+FA7A;5599;5599;5599;5599; # (喙; 喙; 喙; 喙; 喙; ) CJK COMPATIBILITY IDEOGRAPH-FA7A
+FA7B;55E2;55E2;55E2;55E2; # (ï©»; å—¢; å—¢; å—¢; å—¢; ) CJK COMPATIBILITY IDEOGRAPH-FA7B
+FA7C;585A;585A;585A;585A; # (塚; 塚; 塚; 塚; 塚; ) CJK COMPATIBILITY IDEOGRAPH-FA7C
+FA7D;58B3;58B3;58B3;58B3; # (墳; 墳; 墳; 墳; 墳; ) CJK COMPATIBILITY IDEOGRAPH-FA7D
+FA7E;5944;5944;5944;5944; # (奄; 奄; 奄; 奄; 奄; ) CJK COMPATIBILITY IDEOGRAPH-FA7E
+FA7F;5954;5954;5954;5954; # (奔; 奔; 奔; 奔; 奔; ) CJK COMPATIBILITY IDEOGRAPH-FA7F
+FA80;5A62;5A62;5A62;5A62; # (婢; 婢; 婢; 婢; 婢; ) CJK COMPATIBILITY IDEOGRAPH-FA80
+FA81;5B28;5B28;5B28;5B28; # (ïª; 嬨; 嬨; 嬨; 嬨; ) CJK COMPATIBILITY IDEOGRAPH-FA81
+FA82;5ED2;5ED2;5ED2;5ED2; # (廒; 廒; 廒; 廒; 廒; ) CJK COMPATIBILITY IDEOGRAPH-FA82
+FA83;5ED9;5ED9;5ED9;5ED9; # (廙; 廙; 廙; 廙; 廙; ) CJK COMPATIBILITY IDEOGRAPH-FA83
+FA84;5F69;5F69;5F69;5F69; # (彩; 彩; 彩; 彩; 彩; ) CJK COMPATIBILITY IDEOGRAPH-FA84
+FA85;5FAD;5FAD;5FAD;5FAD; # (徭; 徭; 徭; 徭; 徭; ) CJK COMPATIBILITY IDEOGRAPH-FA85
+FA86;60D8;60D8;60D8;60D8; # (惘; 惘; 惘; 惘; 惘; ) CJK COMPATIBILITY IDEOGRAPH-FA86
+FA87;614E;614E;614E;614E; # (慎; 慎; 慎; 慎; 慎; ) CJK COMPATIBILITY IDEOGRAPH-FA87
+FA88;6108;6108;6108;6108; # (愈; 愈; 愈; 愈; 愈; ) CJK COMPATIBILITY IDEOGRAPH-FA88
+FA89;618E;618E;618E;618E; # (憎; 憎; 憎; 憎; 憎; ) CJK COMPATIBILITY IDEOGRAPH-FA89
+FA8A;6160;6160;6160;6160; # (慠; 慠; 慠; 慠; 慠; ) CJK COMPATIBILITY IDEOGRAPH-FA8A
+FA8B;61F2;61F2;61F2;61F2; # (懲; 懲; 懲; 懲; 懲; ) CJK COMPATIBILITY IDEOGRAPH-FA8B
+FA8C;6234;6234;6234;6234; # (戴; 戴; 戴; 戴; 戴; ) CJK COMPATIBILITY IDEOGRAPH-FA8C
+FA8D;63C4;63C4;63C4;63C4; # (ïª; æ„; æ„; æ„; æ„; ) CJK COMPATIBILITY IDEOGRAPH-FA8D
+FA8E;641C;641C;641C;641C; # (搜; æœ; æœ; æœ; æœ; ) CJK COMPATIBILITY IDEOGRAPH-FA8E
+FA8F;6452;6452;6452;6452; # (ïª; æ‘’; æ‘’; æ‘’; æ‘’; ) CJK COMPATIBILITY IDEOGRAPH-FA8F
+FA90;6556;6556;6556;6556; # (ïª; æ•–; æ•–; æ•–; æ•–; ) CJK COMPATIBILITY IDEOGRAPH-FA90
+FA91;6674;6674;6674;6674; # (晴; 晴; 晴; 晴; 晴; ) CJK COMPATIBILITY IDEOGRAPH-FA91
+FA92;6717;6717;6717;6717; # (朗; 朗; 朗; 朗; 朗; ) CJK COMPATIBILITY IDEOGRAPH-FA92
+FA93;671B;671B;671B;671B; # (望; 望; 望; 望; 望; ) CJK COMPATIBILITY IDEOGRAPH-FA93
+FA94;6756;6756;6756;6756; # (杖; æ–; æ–; æ–; æ–; ) CJK COMPATIBILITY IDEOGRAPH-FA94
+FA95;6B79;6B79;6B79;6B79; # (歹; 歹; 歹; 歹; 歹; ) CJK COMPATIBILITY IDEOGRAPH-FA95
+FA96;6BBA;6BBA;6BBA;6BBA; # (殺; 殺; 殺; 殺; 殺; ) CJK COMPATIBILITY IDEOGRAPH-FA96
+FA97;6D41;6D41;6D41;6D41; # (流; æµ; æµ; æµ; æµ; ) CJK COMPATIBILITY IDEOGRAPH-FA97
+FA98;6EDB;6EDB;6EDB;6EDB; # (滛; 滛; 滛; 滛; 滛; ) CJK COMPATIBILITY IDEOGRAPH-FA98
+FA99;6ECB;6ECB;6ECB;6ECB; # (滋; 滋; 滋; 滋; 滋; ) CJK COMPATIBILITY IDEOGRAPH-FA99
+FA9A;6F22;6F22;6F22;6F22; # (漢; 漢; 漢; 漢; 漢; ) CJK COMPATIBILITY IDEOGRAPH-FA9A
+FA9B;701E;701E;701E;701E; # (瀞; 瀞; 瀞; 瀞; 瀞; ) CJK COMPATIBILITY IDEOGRAPH-FA9B
+FA9C;716E;716E;716E;716E; # (煮; 煮; 煮; 煮; 煮; ) CJK COMPATIBILITY IDEOGRAPH-FA9C
+FA9D;77A7;77A7;77A7;77A7; # (ïª; 瞧; 瞧; 瞧; 瞧; ) CJK COMPATIBILITY IDEOGRAPH-FA9D
+FA9E;7235;7235;7235;7235; # (爵; 爵; 爵; 爵; 爵; ) CJK COMPATIBILITY IDEOGRAPH-FA9E
+FA9F;72AF;72AF;72AF;72AF; # (犯; 犯; 犯; 犯; 犯; ) CJK COMPATIBILITY IDEOGRAPH-FA9F
+FAA0;732A;732A;732A;732A; # (猪; 猪; 猪; 猪; 猪; ) CJK COMPATIBILITY IDEOGRAPH-FAA0
+FAA1;7471;7471;7471;7471; # (瑱; 瑱; 瑱; 瑱; 瑱; ) CJK COMPATIBILITY IDEOGRAPH-FAA1
+FAA2;7506;7506;7506;7506; # (甆; 甆; 甆; 甆; 甆; ) CJK COMPATIBILITY IDEOGRAPH-FAA2
+FAA3;753B;753B;753B;753B; # (画; 画; 画; 画; 画; ) CJK COMPATIBILITY IDEOGRAPH-FAA3
+FAA4;761D;761D;761D;761D; # (瘝; ç˜; ç˜; ç˜; ç˜; ) CJK COMPATIBILITY IDEOGRAPH-FAA4
+FAA5;761F;761F;761F;761F; # (瘟; 瘟; 瘟; 瘟; 瘟; ) CJK COMPATIBILITY IDEOGRAPH-FAA5
+FAA6;76CA;76CA;76CA;76CA; # (益; 益; 益; 益; 益; ) CJK COMPATIBILITY IDEOGRAPH-FAA6
+FAA7;76DB;76DB;76DB;76DB; # (盛; 盛; 盛; 盛; 盛; ) CJK COMPATIBILITY IDEOGRAPH-FAA7
+FAA8;76F4;76F4;76F4;76F4; # (直; 直; 直; 直; 直; ) CJK COMPATIBILITY IDEOGRAPH-FAA8
+FAA9;774A;774A;774A;774A; # (睊; çŠ; çŠ; çŠ; çŠ; ) CJK COMPATIBILITY IDEOGRAPH-FAA9
+FAAA;7740;7740;7740;7740; # (着; ç€; ç€; ç€; ç€; ) CJK COMPATIBILITY IDEOGRAPH-FAAA
+FAAB;78CC;78CC;78CC;78CC; # (磌; 磌; 磌; 磌; 磌; ) CJK COMPATIBILITY IDEOGRAPH-FAAB
+FAAC;7AB1;7AB1;7AB1;7AB1; # (窱; 窱; 窱; 窱; 窱; ) CJK COMPATIBILITY IDEOGRAPH-FAAC
+FAAD;7BC0;7BC0;7BC0;7BC0; # (節; 節; 節; 節; 節; ) CJK COMPATIBILITY IDEOGRAPH-FAAD
+FAAE;7C7B;7C7B;7C7B;7C7B; # (类; 类; 类; 类; 类; ) CJK COMPATIBILITY IDEOGRAPH-FAAE
+FAAF;7D5B;7D5B;7D5B;7D5B; # (絛; 絛; 絛; 絛; 絛; ) CJK COMPATIBILITY IDEOGRAPH-FAAF
+FAB0;7DF4;7DF4;7DF4;7DF4; # (練; 練; 練; 練; 練; ) CJK COMPATIBILITY IDEOGRAPH-FAB0
+FAB1;7F3E;7F3E;7F3E;7F3E; # (缾; 缾; 缾; 缾; 缾; ) CJK COMPATIBILITY IDEOGRAPH-FAB1
+FAB2;8005;8005;8005;8005; # (者; 者; 者; 者; 者; ) CJK COMPATIBILITY IDEOGRAPH-FAB2
+FAB3;8352;8352;8352;8352; # (荒; è’; è’; è’; è’; ) CJK COMPATIBILITY IDEOGRAPH-FAB3
+FAB4;83EF;83EF;83EF;83EF; # (華; è¯; è¯; è¯; è¯; ) CJK COMPATIBILITY IDEOGRAPH-FAB4
+FAB5;8779;8779;8779;8779; # (蝹; è¹; è¹; è¹; è¹; ) CJK COMPATIBILITY IDEOGRAPH-FAB5
+FAB6;8941;8941;8941;8941; # (襁; è¥; è¥; è¥; è¥; ) CJK COMPATIBILITY IDEOGRAPH-FAB6
+FAB7;8986;8986;8986;8986; # (覆; 覆; 覆; 覆; 覆; ) CJK COMPATIBILITY IDEOGRAPH-FAB7
+FAB8;8996;8996;8996;8996; # (視; 視; 視; 視; 視; ) CJK COMPATIBILITY IDEOGRAPH-FAB8
+FAB9;8ABF;8ABF;8ABF;8ABF; # (調; 調; 調; 調; 調; ) CJK COMPATIBILITY IDEOGRAPH-FAB9
+FABA;8AF8;8AF8;8AF8;8AF8; # (諸; 諸; 諸; 諸; 諸; ) CJK COMPATIBILITY IDEOGRAPH-FABA
+FABB;8ACB;8ACB;8ACB;8ACB; # (請; 請; 請; 請; 請; ) CJK COMPATIBILITY IDEOGRAPH-FABB
+FABC;8B01;8B01;8B01;8B01; # (謁; è¬; è¬; è¬; è¬; ) CJK COMPATIBILITY IDEOGRAPH-FABC
+FABD;8AFE;8AFE;8AFE;8AFE; # (諾; 諾; 諾; 諾; 諾; ) CJK COMPATIBILITY IDEOGRAPH-FABD
+FABE;8AED;8AED;8AED;8AED; # (諭; 諭; 諭; 諭; 諭; ) CJK COMPATIBILITY IDEOGRAPH-FABE
+FABF;8B39;8B39;8B39;8B39; # (謹; 謹; 謹; 謹; 謹; ) CJK COMPATIBILITY IDEOGRAPH-FABF
+FAC0;8B8A;8B8A;8B8A;8B8A; # (變; 變; 變; 變; 變; ) CJK COMPATIBILITY IDEOGRAPH-FAC0
+FAC1;8D08;8D08;8D08;8D08; # (ï«; è´ˆ; è´ˆ; è´ˆ; è´ˆ; ) CJK COMPATIBILITY IDEOGRAPH-FAC1
+FAC2;8F38;8F38;8F38;8F38; # (輸; 輸; 輸; 輸; 輸; ) CJK COMPATIBILITY IDEOGRAPH-FAC2
+FAC3;9072;9072;9072;9072; # (遲; é²; é²; é²; é²; ) CJK COMPATIBILITY IDEOGRAPH-FAC3
+FAC4;9199;9199;9199;9199; # (醙; 醙; 醙; 醙; 醙; ) CJK COMPATIBILITY IDEOGRAPH-FAC4
+FAC5;9276;9276;9276;9276; # (鉶; 鉶; 鉶; 鉶; 鉶; ) CJK COMPATIBILITY IDEOGRAPH-FAC5
+FAC6;967C;967C;967C;967C; # (陼; 陼; 陼; 陼; 陼; ) CJK COMPATIBILITY IDEOGRAPH-FAC6
+FAC7;96E3;96E3;96E3;96E3; # (難; 難; 難; 難; 難; ) CJK COMPATIBILITY IDEOGRAPH-FAC7
+FAC8;9756;9756;9756;9756; # (靖; é–; é–; é–; é–; ) CJK COMPATIBILITY IDEOGRAPH-FAC8
+FAC9;97DB;97DB;97DB;97DB; # (韛; 韛; 韛; 韛; 韛; ) CJK COMPATIBILITY IDEOGRAPH-FAC9
+FACA;97FF;97FF;97FF;97FF; # (響; 響; 響; 響; 響; ) CJK COMPATIBILITY IDEOGRAPH-FACA
+FACB;980B;980B;980B;980B; # (ï«‹; é ‹; é ‹; é ‹; é ‹; ) CJK COMPATIBILITY IDEOGRAPH-FACB
+FACC;983B;983B;983B;983B; # (頻; 頻; 頻; 頻; 頻; ) CJK COMPATIBILITY IDEOGRAPH-FACC
+FACD;9B12;9B12;9B12;9B12; # (ï«; 鬒; 鬒; 鬒; 鬒; ) CJK COMPATIBILITY IDEOGRAPH-FACD
+FACE;9F9C;9F9C;9F9C;9F9C; # (龜; 龜; 龜; 龜; 龜; ) CJK COMPATIBILITY IDEOGRAPH-FACE
+FACF;2284A;2284A;2284A;2284A; # (ï«; 𢡊; 𢡊; 𢡊; 𢡊; ) CJK COMPATIBILITY IDEOGRAPH-FACF
+FAD0;22844;22844;22844;22844; # (ï«; 𢡄; 𢡄; 𢡄; 𢡄; ) CJK COMPATIBILITY IDEOGRAPH-FAD0
+FAD1;233D5;233D5;233D5;233D5; # (ï«‘; ð£•; ð£•; ð£•; ð£•; ) CJK COMPATIBILITY IDEOGRAPH-FAD1
+FAD2;3B9D;3B9D;3B9D;3B9D; # (ï«’; ã®; ã®; ã®; ã®; ) CJK COMPATIBILITY IDEOGRAPH-FAD2
+FAD3;4018;4018;4018;4018; # (䀘; 䀘; 䀘; 䀘; 䀘; ) CJK COMPATIBILITY IDEOGRAPH-FAD3
+FAD4;4039;4039;4039;4039; # (䀹; 䀹; 䀹; 䀹; 䀹; ) CJK COMPATIBILITY IDEOGRAPH-FAD4
+FAD5;25249;25249;25249;25249; # (𥉉; 𥉉; 𥉉; 𥉉; 𥉉; ) CJK COMPATIBILITY IDEOGRAPH-FAD5
+FAD6;25CD0;25CD0;25CD0;25CD0; # (ï«–; ð¥³; ð¥³; ð¥³; ð¥³; ) CJK COMPATIBILITY IDEOGRAPH-FAD6
+FAD7;27ED3;27ED3;27ED3;27ED3; # (𧻓; 𧻓; 𧻓; 𧻓; 𧻓; ) CJK COMPATIBILITY IDEOGRAPH-FAD7
+FAD8;9F43;9F43;9F43;9F43; # (齃; 齃; 齃; 齃; 齃; ) CJK COMPATIBILITY IDEOGRAPH-FAD8
+FAD9;9F8E;9F8E;9F8E;9F8E; # (龎; 龎; 龎; 龎; 龎; ) CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB00;FB00;FB00;0066 0066;0066 0066; # (ff; ff; ff; ff; ff; ) LATIN SMALL LIGATURE FF
+FB01;FB01;FB01;0066 0069;0066 0069; # (ï¬; ï¬; ï¬; fi; fi; ) LATIN SMALL LIGATURE FI
+FB02;FB02;FB02;0066 006C;0066 006C; # (fl; fl; fl; fl; fl; ) LATIN SMALL LIGATURE FL
+FB03;FB03;FB03;0066 0066 0069;0066 0066 0069; # (ffi; ffi; ffi; ffi; ffi; ) LATIN SMALL LIGATURE FFI
+FB04;FB04;FB04;0066 0066 006C;0066 0066 006C; # (ffl; ffl; ffl; ffl; ffl; ) LATIN SMALL LIGATURE FFL
+FB05;FB05;FB05;0073 0074;0073 0074; # (ſt; ſt; ſt; st; st; ) LATIN SMALL LIGATURE LONG S T
+FB06;FB06;FB06;0073 0074;0073 0074; # (st; st; st; st; st; ) LATIN SMALL LIGATURE ST
+FB13;FB13;FB13;0574 0576;0574 0576; # (ﬓ; ﬓ; ﬓ; մն; մն; ) ARMENIAN SMALL LIGATURE MEN NOW
+FB14;FB14;FB14;0574 0565;0574 0565; # (ﬔ; ﬔ; ﬔ; մե; մե; ) ARMENIAN SMALL LIGATURE MEN ECH
+FB15;FB15;FB15;0574 056B;0574 056B; # (ﬕ; ﬕ; ﬕ; մի; մի; ) ARMENIAN SMALL LIGATURE MEN INI
+FB16;FB16;FB16;057E 0576;057E 0576; # (ﬖ; ﬖ; ﬖ; վն; վն; ) ARMENIAN SMALL LIGATURE VEW NOW
+FB17;FB17;FB17;0574 056D;0574 056D; # (ﬗ; ﬗ; ﬗ; մխ; մխ; ) ARMENIAN SMALL LIGATURE MEN XEH
+FB1D;05D9 05B4;05D9 05B4;05D9 05B4;05D9 05B4; # (ï¬; י◌ִ; י◌ִ; י◌ִ; י◌ִ; ) HEBREW LETTER YOD WITH HIRIQ
+FB1F;05F2 05B7;05F2 05B7;05F2 05B7;05F2 05B7; # (ײַ; ײ◌ַ; ײ◌ַ; ײ◌ַ; ײ◌ַ; ) HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB20;FB20;FB20;05E2;05E2; # (ﬠ; ﬠ; ﬠ; ע; ע; ) HEBREW LETTER ALTERNATIVE AYIN
+FB21;FB21;FB21;05D0;05D0; # (ﬡ; ﬡ; ﬡ; ×; ×; ) HEBREW LETTER WIDE ALEF
+FB22;FB22;FB22;05D3;05D3; # (ﬢ; ﬢ; ﬢ; ד; ד; ) HEBREW LETTER WIDE DALET
+FB23;FB23;FB23;05D4;05D4; # (ﬣ; ﬣ; ﬣ; ה; ה; ) HEBREW LETTER WIDE HE
+FB24;FB24;FB24;05DB;05DB; # (ﬤ; ﬤ; ﬤ; כ; כ; ) HEBREW LETTER WIDE KAF
+FB25;FB25;FB25;05DC;05DC; # (ﬥ; ﬥ; ﬥ; ל; ל; ) HEBREW LETTER WIDE LAMED
+FB26;FB26;FB26;05DD;05DD; # (ﬦ; ﬦ; ﬦ; ×; ×; ) HEBREW LETTER WIDE FINAL MEM
+FB27;FB27;FB27;05E8;05E8; # (ﬧ; ﬧ; ﬧ; ר; ר; ) HEBREW LETTER WIDE RESH
+FB28;FB28;FB28;05EA;05EA; # (ﬨ; ﬨ; ﬨ; ת; ת; ) HEBREW LETTER WIDE TAV
+FB29;FB29;FB29;002B;002B; # (﬩; ﬩; ﬩; +; +; ) HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A;05E9 05C1;05E9 05C1;05E9 05C1;05E9 05C1; # (שׁ; ש◌×; ש◌×; ש◌×; ש◌×; ) HEBREW LETTER SHIN WITH SHIN DOT
+FB2B;05E9 05C2;05E9 05C2;05E9 05C2;05E9 05C2; # (שׂ; ש◌ׂ; ש◌ׂ; ש◌ׂ; ש◌ׂ; ) HEBREW LETTER SHIN WITH SIN DOT
+FB2C;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1; # (שּׁ; ש◌ּ◌×; ש◌ּ◌×; ש◌ּ◌×; ש◌ּ◌×; ) HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2; # (שּׂ; ש◌ּ◌ׂ; ש◌ּ◌ׂ; ש◌ּ◌ׂ; ש◌ּ◌ׂ; ) HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E;05D0 05B7;05D0 05B7;05D0 05B7;05D0 05B7; # (אַ; ×◌ַ; ×◌ַ; ×◌ַ; ×◌ַ; ) HEBREW LETTER ALEF WITH PATAH
+FB2F;05D0 05B8;05D0 05B8;05D0 05B8;05D0 05B8; # (אָ; ×◌ָ; ×◌ָ; ×◌ָ; ×◌ָ; ) HEBREW LETTER ALEF WITH QAMATS
+FB30;05D0 05BC;05D0 05BC;05D0 05BC;05D0 05BC; # (אּ; ×◌ּ; ×◌ּ; ×◌ּ; ×◌ּ; ) HEBREW LETTER ALEF WITH MAPIQ
+FB31;05D1 05BC;05D1 05BC;05D1 05BC;05D1 05BC; # (בּ; ב◌ּ; ב◌ּ; ב◌ּ; ב◌ּ; ) HEBREW LETTER BET WITH DAGESH
+FB32;05D2 05BC;05D2 05BC;05D2 05BC;05D2 05BC; # (גּ; ג◌ּ; ג◌ּ; ג◌ּ; ג◌ּ; ) HEBREW LETTER GIMEL WITH DAGESH
+FB33;05D3 05BC;05D3 05BC;05D3 05BC;05D3 05BC; # (דּ; ד◌ּ; ד◌ּ; ד◌ּ; ד◌ּ; ) HEBREW LETTER DALET WITH DAGESH
+FB34;05D4 05BC;05D4 05BC;05D4 05BC;05D4 05BC; # (הּ; ה◌ּ; ה◌ּ; ה◌ּ; ה◌ּ; ) HEBREW LETTER HE WITH MAPIQ
+FB35;05D5 05BC;05D5 05BC;05D5 05BC;05D5 05BC; # (וּ; ו◌ּ; ו◌ּ; ו◌ּ; ו◌ּ; ) HEBREW LETTER VAV WITH DAGESH
+FB36;05D6 05BC;05D6 05BC;05D6 05BC;05D6 05BC; # (זּ; ז◌ּ; ז◌ּ; ז◌ּ; ז◌ּ; ) HEBREW LETTER ZAYIN WITH DAGESH
+FB38;05D8 05BC;05D8 05BC;05D8 05BC;05D8 05BC; # (טּ; ט◌ּ; ט◌ּ; ט◌ּ; ט◌ּ; ) HEBREW LETTER TET WITH DAGESH
+FB39;05D9 05BC;05D9 05BC;05D9 05BC;05D9 05BC; # (יּ; י◌ּ; י◌ּ; י◌ּ; י◌ּ; ) HEBREW LETTER YOD WITH DAGESH
+FB3A;05DA 05BC;05DA 05BC;05DA 05BC;05DA 05BC; # (ךּ; ך◌ּ; ך◌ּ; ך◌ּ; ך◌ּ; ) HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B;05DB 05BC;05DB 05BC;05DB 05BC;05DB 05BC; # (כּ; כ◌ּ; כ◌ּ; כ◌ּ; כ◌ּ; ) HEBREW LETTER KAF WITH DAGESH
+FB3C;05DC 05BC;05DC 05BC;05DC 05BC;05DC 05BC; # (לּ; ל◌ּ; ל◌ּ; ל◌ּ; ל◌ּ; ) HEBREW LETTER LAMED WITH DAGESH
+FB3E;05DE 05BC;05DE 05BC;05DE 05BC;05DE 05BC; # (מּ; מ◌ּ; מ◌ּ; מ◌ּ; מ◌ּ; ) HEBREW LETTER MEM WITH DAGESH
+FB40;05E0 05BC;05E0 05BC;05E0 05BC;05E0 05BC; # (נּ; נ◌ּ; נ◌ּ; נ◌ּ; נ◌ּ; ) HEBREW LETTER NUN WITH DAGESH
+FB41;05E1 05BC;05E1 05BC;05E1 05BC;05E1 05BC; # (ï­; ס◌ּ; ס◌ּ; ס◌ּ; ס◌ּ; ) HEBREW LETTER SAMEKH WITH DAGESH
+FB43;05E3 05BC;05E3 05BC;05E3 05BC;05E3 05BC; # (ףּ; ף◌ּ; ף◌ּ; ף◌ּ; ף◌ּ; ) HEBREW LETTER FINAL PE WITH DAGESH
+FB44;05E4 05BC;05E4 05BC;05E4 05BC;05E4 05BC; # (פּ; פ◌ּ; פ◌ּ; פ◌ּ; פ◌ּ; ) HEBREW LETTER PE WITH DAGESH
+FB46;05E6 05BC;05E6 05BC;05E6 05BC;05E6 05BC; # (צּ; צ◌ּ; צ◌ּ; צ◌ּ; צ◌ּ; ) HEBREW LETTER TSADI WITH DAGESH
+FB47;05E7 05BC;05E7 05BC;05E7 05BC;05E7 05BC; # (קּ; ק◌ּ; ק◌ּ; ק◌ּ; ק◌ּ; ) HEBREW LETTER QOF WITH DAGESH
+FB48;05E8 05BC;05E8 05BC;05E8 05BC;05E8 05BC; # (רּ; ר◌ּ; ר◌ּ; ר◌ּ; ר◌ּ; ) HEBREW LETTER RESH WITH DAGESH
+FB49;05E9 05BC;05E9 05BC;05E9 05BC;05E9 05BC; # (שּ; ש◌ּ; ש◌ּ; ש◌ּ; ש◌ּ; ) HEBREW LETTER SHIN WITH DAGESH
+FB4A;05EA 05BC;05EA 05BC;05EA 05BC;05EA 05BC; # (תּ; ת◌ּ; ת◌ּ; ת◌ּ; ת◌ּ; ) HEBREW LETTER TAV WITH DAGESH
+FB4B;05D5 05B9;05D5 05B9;05D5 05B9;05D5 05B9; # (וֹ; ו◌ֹ; ו◌ֹ; ו◌ֹ; ו◌ֹ; ) HEBREW LETTER VAV WITH HOLAM
+FB4C;05D1 05BF;05D1 05BF;05D1 05BF;05D1 05BF; # (בֿ; ב◌ֿ; ב◌ֿ; ב◌ֿ; ב◌ֿ; ) HEBREW LETTER BET WITH RAFE
+FB4D;05DB 05BF;05DB 05BF;05DB 05BF;05DB 05BF; # (ï­; כ◌ֿ; כ◌ֿ; כ◌ֿ; כ◌ֿ; ) HEBREW LETTER KAF WITH RAFE
+FB4E;05E4 05BF;05E4 05BF;05E4 05BF;05E4 05BF; # (פֿ; פ◌ֿ; פ◌ֿ; פ◌ֿ; פ◌ֿ; ) HEBREW LETTER PE WITH RAFE
+FB4F;FB4F;FB4F;05D0 05DC;05D0 05DC; # (ï­; ï­; ï­; ×ל; ×ל; ) HEBREW LIGATURE ALEF LAMED
+FB50;FB50;FB50;0671;0671; # (ï­; ï­; ï­; Ù±; Ù±; ) ARABIC LETTER ALEF WASLA ISOLATED FORM
+FB51;FB51;FB51;0671;0671; # (ï­‘; ï­‘; ï­‘; Ù±; Ù±; ) ARABIC LETTER ALEF WASLA FINAL FORM
+FB52;FB52;FB52;067B;067B; # (ï­’; ï­’; ï­’; Ù»; Ù»; ) ARABIC LETTER BEEH ISOLATED FORM
+FB53;FB53;FB53;067B;067B; # (ï­“; ï­“; ï­“; Ù»; Ù»; ) ARABIC LETTER BEEH FINAL FORM
+FB54;FB54;FB54;067B;067B; # (ï­”; ï­”; ï­”; Ù»; Ù»; ) ARABIC LETTER BEEH INITIAL FORM
+FB55;FB55;FB55;067B;067B; # (ï­•; ï­•; ï­•; Ù»; Ù»; ) ARABIC LETTER BEEH MEDIAL FORM
+FB56;FB56;FB56;067E;067E; # (ï­–; ï­–; ï­–; Ù¾; Ù¾; ) ARABIC LETTER PEH ISOLATED FORM
+FB57;FB57;FB57;067E;067E; # (ï­—; ï­—; ï­—; Ù¾; Ù¾; ) ARABIC LETTER PEH FINAL FORM
+FB58;FB58;FB58;067E;067E; # (ï­˜; ï­˜; ï­˜; Ù¾; Ù¾; ) ARABIC LETTER PEH INITIAL FORM
+FB59;FB59;FB59;067E;067E; # (ï­™; ï­™; ï­™; Ù¾; Ù¾; ) ARABIC LETTER PEH MEDIAL FORM
+FB5A;FB5A;FB5A;0680;0680; # (ï­š; ï­š; ï­š; Ú€; Ú€; ) ARABIC LETTER BEHEH ISOLATED FORM
+FB5B;FB5B;FB5B;0680;0680; # (ï­›; ï­›; ï­›; Ú€; Ú€; ) ARABIC LETTER BEHEH FINAL FORM
+FB5C;FB5C;FB5C;0680;0680; # (ﭜ; ﭜ; ﭜ; ڀ; ڀ; ) ARABIC LETTER BEHEH INITIAL FORM
+FB5D;FB5D;FB5D;0680;0680; # (ï­; ï­; ï­; Ú€; Ú€; ) ARABIC LETTER BEHEH MEDIAL FORM
+FB5E;FB5E;FB5E;067A;067A; # (ï­ž; ï­ž; ï­ž; Ùº; Ùº; ) ARABIC LETTER TTEHEH ISOLATED FORM
+FB5F;FB5F;FB5F;067A;067A; # (ï­Ÿ; ï­Ÿ; ï­Ÿ; Ùº; Ùº; ) ARABIC LETTER TTEHEH FINAL FORM
+FB60;FB60;FB60;067A;067A; # (ï­ ; ï­ ; ï­ ; Ùº; Ùº; ) ARABIC LETTER TTEHEH INITIAL FORM
+FB61;FB61;FB61;067A;067A; # (ï­¡; ï­¡; ï­¡; Ùº; Ùº; ) ARABIC LETTER TTEHEH MEDIAL FORM
+FB62;FB62;FB62;067F;067F; # (ï­¢; ï­¢; ï­¢; Ù¿; Ù¿; ) ARABIC LETTER TEHEH ISOLATED FORM
+FB63;FB63;FB63;067F;067F; # (ï­£; ï­£; ï­£; Ù¿; Ù¿; ) ARABIC LETTER TEHEH FINAL FORM
+FB64;FB64;FB64;067F;067F; # (ï­¤; ï­¤; ï­¤; Ù¿; Ù¿; ) ARABIC LETTER TEHEH INITIAL FORM
+FB65;FB65;FB65;067F;067F; # (ï­¥; ï­¥; ï­¥; Ù¿; Ù¿; ) ARABIC LETTER TEHEH MEDIAL FORM
+FB66;FB66;FB66;0679;0679; # (ï­¦; ï­¦; ï­¦; Ù¹; Ù¹; ) ARABIC LETTER TTEH ISOLATED FORM
+FB67;FB67;FB67;0679;0679; # (ï­§; ï­§; ï­§; Ù¹; Ù¹; ) ARABIC LETTER TTEH FINAL FORM
+FB68;FB68;FB68;0679;0679; # (ï­¨; ï­¨; ï­¨; Ù¹; Ù¹; ) ARABIC LETTER TTEH INITIAL FORM
+FB69;FB69;FB69;0679;0679; # (ï­©; ï­©; ï­©; Ù¹; Ù¹; ) ARABIC LETTER TTEH MEDIAL FORM
+FB6A;FB6A;FB6A;06A4;06A4; # (ï­ª; ï­ª; ï­ª; Ú¤; Ú¤; ) ARABIC LETTER VEH ISOLATED FORM
+FB6B;FB6B;FB6B;06A4;06A4; # (ï­«; ï­«; ï­«; Ú¤; Ú¤; ) ARABIC LETTER VEH FINAL FORM
+FB6C;FB6C;FB6C;06A4;06A4; # (ï­¬; ï­¬; ï­¬; Ú¤; Ú¤; ) ARABIC LETTER VEH INITIAL FORM
+FB6D;FB6D;FB6D;06A4;06A4; # (ï­­; ï­­; ï­­; Ú¤; Ú¤; ) ARABIC LETTER VEH MEDIAL FORM
+FB6E;FB6E;FB6E;06A6;06A6; # (ï­®; ï­®; ï­®; Ú¦; Ú¦; ) ARABIC LETTER PEHEH ISOLATED FORM
+FB6F;FB6F;FB6F;06A6;06A6; # (ï­¯; ï­¯; ï­¯; Ú¦; Ú¦; ) ARABIC LETTER PEHEH FINAL FORM
+FB70;FB70;FB70;06A6;06A6; # (ï­°; ï­°; ï­°; Ú¦; Ú¦; ) ARABIC LETTER PEHEH INITIAL FORM
+FB71;FB71;FB71;06A6;06A6; # (ï­±; ï­±; ï­±; Ú¦; Ú¦; ) ARABIC LETTER PEHEH MEDIAL FORM
+FB72;FB72;FB72;0684;0684; # (ï­²; ï­²; ï­²; Ú„; Ú„; ) ARABIC LETTER DYEH ISOLATED FORM
+FB73;FB73;FB73;0684;0684; # (ï­³; ï­³; ï­³; Ú„; Ú„; ) ARABIC LETTER DYEH FINAL FORM
+FB74;FB74;FB74;0684;0684; # (ï­´; ï­´; ï­´; Ú„; Ú„; ) ARABIC LETTER DYEH INITIAL FORM
+FB75;FB75;FB75;0684;0684; # (ï­µ; ï­µ; ï­µ; Ú„; Ú„; ) ARABIC LETTER DYEH MEDIAL FORM
+FB76;FB76;FB76;0683;0683; # (ï­¶; ï­¶; ï­¶; Úƒ; Úƒ; ) ARABIC LETTER NYEH ISOLATED FORM
+FB77;FB77;FB77;0683;0683; # (ï­·; ï­·; ï­·; Úƒ; Úƒ; ) ARABIC LETTER NYEH FINAL FORM
+FB78;FB78;FB78;0683;0683; # (ï­¸; ï­¸; ï­¸; Úƒ; Úƒ; ) ARABIC LETTER NYEH INITIAL FORM
+FB79;FB79;FB79;0683;0683; # (ï­¹; ï­¹; ï­¹; Úƒ; Úƒ; ) ARABIC LETTER NYEH MEDIAL FORM
+FB7A;FB7A;FB7A;0686;0686; # (ï­º; ï­º; ï­º; Ú†; Ú†; ) ARABIC LETTER TCHEH ISOLATED FORM
+FB7B;FB7B;FB7B;0686;0686; # (ï­»; ï­»; ï­»; Ú†; Ú†; ) ARABIC LETTER TCHEH FINAL FORM
+FB7C;FB7C;FB7C;0686;0686; # (ï­¼; ï­¼; ï­¼; Ú†; Ú†; ) ARABIC LETTER TCHEH INITIAL FORM
+FB7D;FB7D;FB7D;0686;0686; # (ï­½; ï­½; ï­½; Ú†; Ú†; ) ARABIC LETTER TCHEH MEDIAL FORM
+FB7E;FB7E;FB7E;0687;0687; # (ï­¾; ï­¾; ï­¾; Ú‡; Ú‡; ) ARABIC LETTER TCHEHEH ISOLATED FORM
+FB7F;FB7F;FB7F;0687;0687; # (ï­¿; ï­¿; ï­¿; Ú‡; Ú‡; ) ARABIC LETTER TCHEHEH FINAL FORM
+FB80;FB80;FB80;0687;0687; # (ﮀ; ﮀ; ﮀ; ڇ; ڇ; ) ARABIC LETTER TCHEHEH INITIAL FORM
+FB81;FB81;FB81;0687;0687; # (ï®; ï®; ï®; Ú‡; Ú‡; ) ARABIC LETTER TCHEHEH MEDIAL FORM
+FB82;FB82;FB82;068D;068D; # (ﮂ; ﮂ; ﮂ; Ú; Ú; ) ARABIC LETTER DDAHAL ISOLATED FORM
+FB83;FB83;FB83;068D;068D; # (ﮃ; ﮃ; ﮃ; Ú; Ú; ) ARABIC LETTER DDAHAL FINAL FORM
+FB84;FB84;FB84;068C;068C; # (ﮄ; ﮄ; ﮄ; ڌ; ڌ; ) ARABIC LETTER DAHAL ISOLATED FORM
+FB85;FB85;FB85;068C;068C; # (ﮅ; ﮅ; ﮅ; ڌ; ڌ; ) ARABIC LETTER DAHAL FINAL FORM
+FB86;FB86;FB86;068E;068E; # (ﮆ; ﮆ; ﮆ; ڎ; ڎ; ) ARABIC LETTER DUL ISOLATED FORM
+FB87;FB87;FB87;068E;068E; # (ﮇ; ﮇ; ﮇ; ڎ; ڎ; ) ARABIC LETTER DUL FINAL FORM
+FB88;FB88;FB88;0688;0688; # (ﮈ; ﮈ; ﮈ; ڈ; ڈ; ) ARABIC LETTER DDAL ISOLATED FORM
+FB89;FB89;FB89;0688;0688; # (ﮉ; ﮉ; ﮉ; ڈ; ڈ; ) ARABIC LETTER DDAL FINAL FORM
+FB8A;FB8A;FB8A;0698;0698; # (ﮊ; ﮊ; ﮊ; ژ; ژ; ) ARABIC LETTER JEH ISOLATED FORM
+FB8B;FB8B;FB8B;0698;0698; # (ﮋ; ﮋ; ﮋ; ژ; ژ; ) ARABIC LETTER JEH FINAL FORM
+FB8C;FB8C;FB8C;0691;0691; # (ﮌ; ﮌ; ﮌ; ڑ; ڑ; ) ARABIC LETTER RREH ISOLATED FORM
+FB8D;FB8D;FB8D;0691;0691; # (ï®; ï®; ï®; Ú‘; Ú‘; ) ARABIC LETTER RREH FINAL FORM
+FB8E;FB8E;FB8E;06A9;06A9; # (ﮎ; ﮎ; ﮎ; ک; ک; ) ARABIC LETTER KEHEH ISOLATED FORM
+FB8F;FB8F;FB8F;06A9;06A9; # (ï®; ï®; ï®; Ú©; Ú©; ) ARABIC LETTER KEHEH FINAL FORM
+FB90;FB90;FB90;06A9;06A9; # (ï®; ï®; ï®; Ú©; Ú©; ) ARABIC LETTER KEHEH INITIAL FORM
+FB91;FB91;FB91;06A9;06A9; # (ﮑ; ﮑ; ﮑ; ک; ک; ) ARABIC LETTER KEHEH MEDIAL FORM
+FB92;FB92;FB92;06AF;06AF; # (ï®’; ï®’; ï®’; Ú¯; Ú¯; ) ARABIC LETTER GAF ISOLATED FORM
+FB93;FB93;FB93;06AF;06AF; # (ﮓ; ﮓ; ﮓ; گ; گ; ) ARABIC LETTER GAF FINAL FORM
+FB94;FB94;FB94;06AF;06AF; # (ï®”; ï®”; ï®”; Ú¯; Ú¯; ) ARABIC LETTER GAF INITIAL FORM
+FB95;FB95;FB95;06AF;06AF; # (ﮕ; ﮕ; ﮕ; گ; گ; ) ARABIC LETTER GAF MEDIAL FORM
+FB96;FB96;FB96;06B3;06B3; # (ï®–; ï®–; ï®–; Ú³; Ú³; ) ARABIC LETTER GUEH ISOLATED FORM
+FB97;FB97;FB97;06B3;06B3; # (ï®—; ï®—; ï®—; Ú³; Ú³; ) ARABIC LETTER GUEH FINAL FORM
+FB98;FB98;FB98;06B3;06B3; # (ﮘ; ﮘ; ﮘ; ڳ; ڳ; ) ARABIC LETTER GUEH INITIAL FORM
+FB99;FB99;FB99;06B3;06B3; # (ï®™; ï®™; ï®™; Ú³; Ú³; ) ARABIC LETTER GUEH MEDIAL FORM
+FB9A;FB9A;FB9A;06B1;06B1; # (ﮚ; ﮚ; ﮚ; ڱ; ڱ; ) ARABIC LETTER NGOEH ISOLATED FORM
+FB9B;FB9B;FB9B;06B1;06B1; # (ï®›; ï®›; ï®›; Ú±; Ú±; ) ARABIC LETTER NGOEH FINAL FORM
+FB9C;FB9C;FB9C;06B1;06B1; # (ﮜ; ﮜ; ﮜ; ڱ; ڱ; ) ARABIC LETTER NGOEH INITIAL FORM
+FB9D;FB9D;FB9D;06B1;06B1; # (ï®; ï®; ï®; Ú±; Ú±; ) ARABIC LETTER NGOEH MEDIAL FORM
+FB9E;FB9E;FB9E;06BA;06BA; # (ﮞ; ﮞ; ﮞ; ں; ں; ) ARABIC LETTER NOON GHUNNA ISOLATED FORM
+FB9F;FB9F;FB9F;06BA;06BA; # (ﮟ; ﮟ; ﮟ; ں; ں; ) ARABIC LETTER NOON GHUNNA FINAL FORM
+FBA0;FBA0;FBA0;06BB;06BB; # (ï® ; ï® ; ï® ; Ú»; Ú»; ) ARABIC LETTER RNOON ISOLATED FORM
+FBA1;FBA1;FBA1;06BB;06BB; # (ﮡ; ﮡ; ﮡ; ڻ; ڻ; ) ARABIC LETTER RNOON FINAL FORM
+FBA2;FBA2;FBA2;06BB;06BB; # (ﮢ; ﮢ; ﮢ; ڻ; ڻ; ) ARABIC LETTER RNOON INITIAL FORM
+FBA3;FBA3;FBA3;06BB;06BB; # (ﮣ; ﮣ; ﮣ; ڻ; ڻ; ) ARABIC LETTER RNOON MEDIAL FORM
+FBA4;FBA4;FBA4;06C0;06D5 0654; # (ﮤ; ﮤ; ﮤ; ۀ; ە◌ٔ; ) ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
+FBA5;FBA5;FBA5;06C0;06D5 0654; # (ﮥ; ﮥ; ﮥ; ۀ; ە◌ٔ; ) ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBA6;FBA6;FBA6;06C1;06C1; # (ﮦ; ﮦ; ﮦ; Û; Û; ) ARABIC LETTER HEH GOAL ISOLATED FORM
+FBA7;FBA7;FBA7;06C1;06C1; # (ﮧ; ﮧ; ﮧ; Û; Û; ) ARABIC LETTER HEH GOAL FINAL FORM
+FBA8;FBA8;FBA8;06C1;06C1; # (ﮨ; ﮨ; ﮨ; Û; Û; ) ARABIC LETTER HEH GOAL INITIAL FORM
+FBA9;FBA9;FBA9;06C1;06C1; # (ﮩ; ﮩ; ﮩ; Û; Û; ) ARABIC LETTER HEH GOAL MEDIAL FORM
+FBAA;FBAA;FBAA;06BE;06BE; # (ﮪ; ﮪ; ﮪ; ھ; ھ; ) ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+FBAB;FBAB;FBAB;06BE;06BE; # (ﮫ; ﮫ; ﮫ; ھ; ھ; ) ARABIC LETTER HEH DOACHASHMEE FINAL FORM
+FBAC;FBAC;FBAC;06BE;06BE; # (ﮬ; ﮬ; ﮬ; ھ; ھ; ) ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
+FBAD;FBAD;FBAD;06BE;06BE; # (ï®­; ï®­; ï®­; Ú¾; Ú¾; ) ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+FBAE;FBAE;FBAE;06D2;06D2; # (ï®®; ï®®; ï®®; Û’; Û’; ) ARABIC LETTER YEH BARREE ISOLATED FORM
+FBAF;FBAF;FBAF;06D2;06D2; # (ﮯ; ﮯ; ﮯ; ے; ے; ) ARABIC LETTER YEH BARREE FINAL FORM
+FBB0;FBB0;FBB0;06D3;06D2 0654; # (ﮰ; ﮰ; ﮰ; ۓ; ے◌ٔ; ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+FBB1;FBB1;FBB1;06D3;06D2 0654; # (ﮱ; ﮱ; ﮱ; ۓ; ے◌ٔ; ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3;FBD3;FBD3;06AD;06AD; # (ﯓ; ﯓ; ﯓ; ڭ; ڭ; ) ARABIC LETTER NG ISOLATED FORM
+FBD4;FBD4;FBD4;06AD;06AD; # (ﯔ; ﯔ; ﯔ; ڭ; ڭ; ) ARABIC LETTER NG FINAL FORM
+FBD5;FBD5;FBD5;06AD;06AD; # (ﯕ; ﯕ; ﯕ; ڭ; ڭ; ) ARABIC LETTER NG INITIAL FORM
+FBD6;FBD6;FBD6;06AD;06AD; # (ﯖ; ﯖ; ﯖ; ڭ; ڭ; ) ARABIC LETTER NG MEDIAL FORM
+FBD7;FBD7;FBD7;06C7;06C7; # (ﯗ; ﯗ; ﯗ; ۇ; ۇ; ) ARABIC LETTER U ISOLATED FORM
+FBD8;FBD8;FBD8;06C7;06C7; # (ﯘ; ﯘ; ﯘ; ۇ; ۇ; ) ARABIC LETTER U FINAL FORM
+FBD9;FBD9;FBD9;06C6;06C6; # (ﯙ; ﯙ; ﯙ; ۆ; ۆ; ) ARABIC LETTER OE ISOLATED FORM
+FBDA;FBDA;FBDA;06C6;06C6; # (ﯚ; ﯚ; ﯚ; ۆ; ۆ; ) ARABIC LETTER OE FINAL FORM
+FBDB;FBDB;FBDB;06C8;06C8; # (ﯛ; ﯛ; ﯛ; ۈ; ۈ; ) ARABIC LETTER YU ISOLATED FORM
+FBDC;FBDC;FBDC;06C8;06C8; # (ﯜ; ﯜ; ﯜ; ۈ; ۈ; ) ARABIC LETTER YU FINAL FORM
+FBDD;FBDD;FBDD;06C7 0674;06C7 0674; # (ï¯; ï¯; ï¯; Û‡Ù´; Û‡Ù´; ) ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBDE;FBDE;FBDE;06CB;06CB; # (ﯞ; ﯞ; ﯞ; ۋ; ۋ; ) ARABIC LETTER VE ISOLATED FORM
+FBDF;FBDF;FBDF;06CB;06CB; # (ﯟ; ﯟ; ﯟ; ۋ; ۋ; ) ARABIC LETTER VE FINAL FORM
+FBE0;FBE0;FBE0;06C5;06C5; # (ﯠ; ﯠ; ﯠ; ۅ; ۅ; ) ARABIC LETTER KIRGHIZ OE ISOLATED FORM
+FBE1;FBE1;FBE1;06C5;06C5; # (ﯡ; ﯡ; ﯡ; ۅ; ۅ; ) ARABIC LETTER KIRGHIZ OE FINAL FORM
+FBE2;FBE2;FBE2;06C9;06C9; # (ﯢ; ﯢ; ﯢ; ۉ; ۉ; ) ARABIC LETTER KIRGHIZ YU ISOLATED FORM
+FBE3;FBE3;FBE3;06C9;06C9; # (ﯣ; ﯣ; ﯣ; ۉ; ۉ; ) ARABIC LETTER KIRGHIZ YU FINAL FORM
+FBE4;FBE4;FBE4;06D0;06D0; # (ﯤ; ﯤ; ﯤ; Û; Û; ) ARABIC LETTER E ISOLATED FORM
+FBE5;FBE5;FBE5;06D0;06D0; # (ﯥ; ﯥ; ﯥ; Û; Û; ) ARABIC LETTER E FINAL FORM
+FBE6;FBE6;FBE6;06D0;06D0; # (ﯦ; ﯦ; ﯦ; Û; Û; ) ARABIC LETTER E INITIAL FORM
+FBE7;FBE7;FBE7;06D0;06D0; # (ﯧ; ﯧ; ﯧ; Û; Û; ) ARABIC LETTER E MEDIAL FORM
+FBE8;FBE8;FBE8;0649;0649; # (ﯨ; ﯨ; ﯨ; ى; ى; ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+FBE9;FBE9;FBE9;0649;0649; # (ﯩ; ﯩ; ﯩ; ى; ى; ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+FBEA;FBEA;FBEA;0626 0627;064A 0654 0627; # (ﯪ; ﯪ; ﯪ; ئا; ي◌ٔا; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
+FBEB;FBEB;FBEB;0626 0627;064A 0654 0627; # (ﯫ; ﯫ; ﯫ; ئا; ي◌ٔا; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+FBEC;FBEC;FBEC;0626 06D5;064A 0654 06D5; # (ﯬ; ﯬ; ﯬ; ئە; ي◌ٔە; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
+FBED;FBED;FBED;0626 06D5;064A 0654 06D5; # (ﯭ; ﯭ; ﯭ; ئە; ي◌ٔە; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+FBEE;FBEE;FBEE;0626 0648;064A 0654 0648; # (ﯮ; ﯮ; ﯮ; ئو; ي◌ٔو; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
+FBEF;FBEF;FBEF;0626 0648;064A 0654 0648; # (ﯯ; ﯯ; ﯯ; ئو; ي◌ٔو; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+FBF0;FBF0;FBF0;0626 06C7;064A 0654 06C7; # (ﯰ; ﯰ; ﯰ; ئۇ; ي◌ٔۇ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
+FBF1;FBF1;FBF1;0626 06C7;064A 0654 06C7; # (ﯱ; ﯱ; ﯱ; ئۇ; ي◌ٔۇ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+FBF2;FBF2;FBF2;0626 06C6;064A 0654 06C6; # (ﯲ; ﯲ; ﯲ; ئۆ; ي◌ٔۆ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
+FBF3;FBF3;FBF3;0626 06C6;064A 0654 06C6; # (ﯳ; ﯳ; ﯳ; ئۆ; ي◌ٔۆ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+FBF4;FBF4;FBF4;0626 06C8;064A 0654 06C8; # (ﯴ; ﯴ; ﯴ; ئۈ; ي◌ٔۈ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
+FBF5;FBF5;FBF5;0626 06C8;064A 0654 06C8; # (ﯵ; ﯵ; ﯵ; ئۈ; ي◌ٔۈ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+FBF6;FBF6;FBF6;0626 06D0;064A 0654 06D0; # (ﯶ; ﯶ; ﯶ; ئÛ; ي◌ٔÛ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
+FBF7;FBF7;FBF7;0626 06D0;064A 0654 06D0; # (ﯷ; ﯷ; ﯷ; ئÛ; ي◌ٔÛ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
+FBF8;FBF8;FBF8;0626 06D0;064A 0654 06D0; # (ﯸ; ﯸ; ﯸ; ئÛ; ي◌ٔÛ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+FBF9;FBF9;FBF9;0626 0649;064A 0654 0649; # (ﯹ; ﯹ; ﯹ; ئى; ي◌ٔى; ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FBFA;FBFA;FBFA;0626 0649;064A 0654 0649; # (ﯺ; ﯺ; ﯺ; ئى; ي◌ٔى; ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FBFB;FBFB;FBFB;0626 0649;064A 0654 0649; # (ﯻ; ﯻ; ﯻ; ئى; ي◌ٔى; ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FBFC;FBFC;FBFC;06CC;06CC; # (ﯼ; ﯼ; ﯼ; ی; ی; ) ARABIC LETTER FARSI YEH ISOLATED FORM
+FBFD;FBFD;FBFD;06CC;06CC; # (ﯽ; ﯽ; ﯽ; ی; ی; ) ARABIC LETTER FARSI YEH FINAL FORM
+FBFE;FBFE;FBFE;06CC;06CC; # (ﯾ; ﯾ; ﯾ; ی; ی; ) ARABIC LETTER FARSI YEH INITIAL FORM
+FBFF;FBFF;FBFF;06CC;06CC; # (ﯿ; ﯿ; ﯿ; ی; ی; ) ARABIC LETTER FARSI YEH MEDIAL FORM
+FC00;FC00;FC00;0626 062C;064A 0654 062C; # (ﰀ; ﰀ; ﰀ; ئج; ي◌ٔج; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+FC01;FC01;FC01;0626 062D;064A 0654 062D; # (ï°; ï°; ï°; ئح; ي◌ٔح; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+FC02;FC02;FC02;0626 0645;064A 0654 0645; # (ﰂ; ﰂ; ﰂ; ئم; ي◌ٔم; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+FC03;FC03;FC03;0626 0649;064A 0654 0649; # (ﰃ; ﰃ; ﰃ; ئى; ي◌ٔى; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FC04;FC04;FC04;0626 064A;064A 0654 064A; # (ﰄ; ﰄ; ﰄ; ئي; ي◌ٔي; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+FC05;FC05;FC05;0628 062C;0628 062C; # (ﰅ; ﰅ; ﰅ; بج; بج; ) ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+FC06;FC06;FC06;0628 062D;0628 062D; # (ﰆ; ﰆ; ﰆ; بح; بح; ) ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+FC07;FC07;FC07;0628 062E;0628 062E; # (ﰇ; ﰇ; ﰇ; بخ; بخ; ) ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+FC08;FC08;FC08;0628 0645;0628 0645; # (ﰈ; ﰈ; ﰈ; بم; بم; ) ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+FC09;FC09;FC09;0628 0649;0628 0649; # (ﰉ; ﰉ; ﰉ; بى; بى; ) ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+FC0A;FC0A;FC0A;0628 064A;0628 064A; # (ﰊ; ﰊ; ﰊ; بي; بي; ) ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+FC0B;FC0B;FC0B;062A 062C;062A 062C; # (ﰋ; ﰋ; ﰋ; تج; تج; ) ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+FC0C;FC0C;FC0C;062A 062D;062A 062D; # (ﰌ; ﰌ; ﰌ; تح; تح; ) ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+FC0D;FC0D;FC0D;062A 062E;062A 062E; # (ï°; ï°; ï°; تخ; تخ; ) ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+FC0E;FC0E;FC0E;062A 0645;062A 0645; # (ﰎ; ﰎ; ﰎ; تم; تم; ) ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+FC0F;FC0F;FC0F;062A 0649;062A 0649; # (ï°; ï°; ï°; تى; تى; ) ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+FC10;FC10;FC10;062A 064A;062A 064A; # (ï°; ï°; ï°; تي; تي; ) ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+FC11;FC11;FC11;062B 062C;062B 062C; # (ﰑ; ﰑ; ﰑ; ثج; ثج; ) ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+FC12;FC12;FC12;062B 0645;062B 0645; # (ﰒ; ﰒ; ﰒ; ثم; ثم; ) ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+FC13;FC13;FC13;062B 0649;062B 0649; # (ﰓ; ﰓ; ﰓ; ثى; ثى; ) ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+FC14;FC14;FC14;062B 064A;062B 064A; # (ﰔ; ﰔ; ﰔ; ثي; ثي; ) ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+FC15;FC15;FC15;062C 062D;062C 062D; # (ﰕ; ﰕ; ﰕ; جح; جح; ) ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+FC16;FC16;FC16;062C 0645;062C 0645; # (ﰖ; ﰖ; ﰖ; جم; جم; ) ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+FC17;FC17;FC17;062D 062C;062D 062C; # (ﰗ; ﰗ; ﰗ; حج; حج; ) ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+FC18;FC18;FC18;062D 0645;062D 0645; # (ﰘ; ﰘ; ﰘ; حم; حم; ) ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+FC19;FC19;FC19;062E 062C;062E 062C; # (ﰙ; ﰙ; ﰙ; خج; خج; ) ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+FC1A;FC1A;FC1A;062E 062D;062E 062D; # (ﰚ; ﰚ; ﰚ; خح; خح; ) ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+FC1B;FC1B;FC1B;062E 0645;062E 0645; # (ﰛ; ﰛ; ﰛ; خم; خم; ) ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+FC1C;FC1C;FC1C;0633 062C;0633 062C; # (ﰜ; ﰜ; ﰜ; سج; سج; ) ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+FC1D;FC1D;FC1D;0633 062D;0633 062D; # (ï°; ï°; ï°; سح; سح; ) ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+FC1E;FC1E;FC1E;0633 062E;0633 062E; # (ﰞ; ﰞ; ﰞ; سخ; سخ; ) ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+FC1F;FC1F;FC1F;0633 0645;0633 0645; # (ﰟ; ﰟ; ﰟ; سم; سم; ) ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+FC20;FC20;FC20;0635 062D;0635 062D; # (ﰠ; ﰠ; ﰠ; صح; صح; ) ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+FC21;FC21;FC21;0635 0645;0635 0645; # (ﰡ; ﰡ; ﰡ; صم; صم; ) ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+FC22;FC22;FC22;0636 062C;0636 062C; # (ﰢ; ﰢ; ﰢ; ضج; ضج; ) ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+FC23;FC23;FC23;0636 062D;0636 062D; # (ﰣ; ﰣ; ﰣ; ضح; ضح; ) ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+FC24;FC24;FC24;0636 062E;0636 062E; # (ﰤ; ﰤ; ﰤ; ضخ; ضخ; ) ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+FC25;FC25;FC25;0636 0645;0636 0645; # (ﰥ; ﰥ; ﰥ; ضم; ضم; ) ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+FC26;FC26;FC26;0637 062D;0637 062D; # (ﰦ; ﰦ; ﰦ; طح; طح; ) ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+FC27;FC27;FC27;0637 0645;0637 0645; # (ﰧ; ﰧ; ﰧ; طم; طم; ) ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+FC28;FC28;FC28;0638 0645;0638 0645; # (ﰨ; ﰨ; ﰨ; ظم; ظم; ) ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+FC29;FC29;FC29;0639 062C;0639 062C; # (ﰩ; ﰩ; ﰩ; عج; عج; ) ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+FC2A;FC2A;FC2A;0639 0645;0639 0645; # (ﰪ; ﰪ; ﰪ; عم; عم; ) ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+FC2B;FC2B;FC2B;063A 062C;063A 062C; # (ﰫ; ﰫ; ﰫ; غج; غج; ) ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+FC2C;FC2C;FC2C;063A 0645;063A 0645; # (ﰬ; ﰬ; ﰬ; غم; غم; ) ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+FC2D;FC2D;FC2D;0641 062C;0641 062C; # (ï°­; ï°­; ï°­; Ùج; Ùج; ) ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+FC2E;FC2E;FC2E;0641 062D;0641 062D; # (ï°®; ï°®; ï°®; ÙØ­; ÙØ­; ) ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+FC2F;FC2F;FC2F;0641 062E;0641 062E; # (ï°¯; ï°¯; ï°¯; ÙØ®; ÙØ®; ) ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+FC30;FC30;FC30;0641 0645;0641 0645; # (ï°°; ï°°; ï°°; ÙÙ…; ÙÙ…; ) ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+FC31;FC31;FC31;0641 0649;0641 0649; # (ï°±; ï°±; ï°±; ÙÙ‰; ÙÙ‰; ) ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+FC32;FC32;FC32;0641 064A;0641 064A; # (ï°²; ï°²; ï°²; ÙÙŠ; ÙÙŠ; ) ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+FC33;FC33;FC33;0642 062D;0642 062D; # (ﰳ; ﰳ; ﰳ; قح; قح; ) ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+FC34;FC34;FC34;0642 0645;0642 0645; # (ﰴ; ﰴ; ﰴ; قم; قم; ) ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+FC35;FC35;FC35;0642 0649;0642 0649; # (ﰵ; ﰵ; ﰵ; قى; قى; ) ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+FC36;FC36;FC36;0642 064A;0642 064A; # (ﰶ; ﰶ; ﰶ; قي; قي; ) ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+FC37;FC37;FC37;0643 0627;0643 0627; # (ﰷ; ﰷ; ﰷ; كا; كا; ) ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+FC38;FC38;FC38;0643 062C;0643 062C; # (ﰸ; ﰸ; ﰸ; كج; كج; ) ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+FC39;FC39;FC39;0643 062D;0643 062D; # (ﰹ; ﰹ; ﰹ; كح; كح; ) ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+FC3A;FC3A;FC3A;0643 062E;0643 062E; # (ﰺ; ﰺ; ﰺ; كخ; كخ; ) ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+FC3B;FC3B;FC3B;0643 0644;0643 0644; # (ﰻ; ﰻ; ﰻ; كل; كل; ) ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+FC3C;FC3C;FC3C;0643 0645;0643 0645; # (ﰼ; ﰼ; ﰼ; كم; كم; ) ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+FC3D;FC3D;FC3D;0643 0649;0643 0649; # (ﰽ; ﰽ; ﰽ; كى; كى; ) ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+FC3E;FC3E;FC3E;0643 064A;0643 064A; # (ﰾ; ﰾ; ﰾ; كي; كي; ) ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+FC3F;FC3F;FC3F;0644 062C;0644 062C; # (ﰿ; ﰿ; ﰿ; لج; لج; ) ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+FC40;FC40;FC40;0644 062D;0644 062D; # (ﱀ; ﱀ; ﱀ; لح; لح; ) ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+FC41;FC41;FC41;0644 062E;0644 062E; # (ï±; ï±; ï±; لخ; لخ; ) ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+FC42;FC42;FC42;0644 0645;0644 0645; # (ﱂ; ﱂ; ﱂ; لم; لم; ) ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+FC43;FC43;FC43;0644 0649;0644 0649; # (ﱃ; ﱃ; ﱃ; لى; لى; ) ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+FC44;FC44;FC44;0644 064A;0644 064A; # (ﱄ; ﱄ; ﱄ; لي; لي; ) ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+FC45;FC45;FC45;0645 062C;0645 062C; # (ﱅ; ﱅ; ﱅ; مج; مج; ) ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+FC46;FC46;FC46;0645 062D;0645 062D; # (ﱆ; ﱆ; ﱆ; مح; مح; ) ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+FC47;FC47;FC47;0645 062E;0645 062E; # (ﱇ; ﱇ; ﱇ; مخ; مخ; ) ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+FC48;FC48;FC48;0645 0645;0645 0645; # (ﱈ; ﱈ; ﱈ; مم; مم; ) ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+FC49;FC49;FC49;0645 0649;0645 0649; # (ﱉ; ﱉ; ﱉ; مى; مى; ) ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+FC4A;FC4A;FC4A;0645 064A;0645 064A; # (ﱊ; ﱊ; ﱊ; مي; مي; ) ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+FC4B;FC4B;FC4B;0646 062C;0646 062C; # (ﱋ; ﱋ; ﱋ; نج; نج; ) ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+FC4C;FC4C;FC4C;0646 062D;0646 062D; # (ﱌ; ﱌ; ﱌ; نح; نح; ) ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+FC4D;FC4D;FC4D;0646 062E;0646 062E; # (ï±; ï±; ï±; نخ; نخ; ) ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+FC4E;FC4E;FC4E;0646 0645;0646 0645; # (ﱎ; ﱎ; ﱎ; نم; نم; ) ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+FC4F;FC4F;FC4F;0646 0649;0646 0649; # (ï±; ï±; ï±; نى; نى; ) ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+FC50;FC50;FC50;0646 064A;0646 064A; # (ï±; ï±; ï±; ني; ني; ) ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+FC51;FC51;FC51;0647 062C;0647 062C; # (ﱑ; ﱑ; ﱑ; هج; هج; ) ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+FC52;FC52;FC52;0647 0645;0647 0645; # (ﱒ; ﱒ; ﱒ; هم; هم; ) ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+FC53;FC53;FC53;0647 0649;0647 0649; # (ﱓ; ﱓ; ﱓ; هى; هى; ) ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+FC54;FC54;FC54;0647 064A;0647 064A; # (ﱔ; ﱔ; ﱔ; هي; هي; ) ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+FC55;FC55;FC55;064A 062C;064A 062C; # (ﱕ; ﱕ; ﱕ; يج; يج; ) ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+FC56;FC56;FC56;064A 062D;064A 062D; # (ﱖ; ﱖ; ﱖ; يح; يح; ) ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+FC57;FC57;FC57;064A 062E;064A 062E; # (ﱗ; ﱗ; ﱗ; يخ; يخ; ) ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+FC58;FC58;FC58;064A 0645;064A 0645; # (ﱘ; ﱘ; ﱘ; يم; يم; ) ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+FC59;FC59;FC59;064A 0649;064A 0649; # (ﱙ; ﱙ; ﱙ; يى; يى; ) ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+FC5A;FC5A;FC5A;064A 064A;064A 064A; # (ﱚ; ﱚ; ﱚ; يي; يي; ) ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+FC5B;FC5B;FC5B;0630 0670;0630 0670; # (ﱛ; ﱛ; ﱛ; ذ◌ٰ; ذ◌ٰ; ) ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5C;FC5C;FC5C;0631 0670;0631 0670; # (ﱜ; ﱜ; ﱜ; ر◌ٰ; ر◌ٰ; ) ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5D;FC5D;FC5D;0649 0670;0649 0670; # (ï±; ï±; ï±; ى◌ٰ; ى◌ٰ; ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5E;FC5E;FC5E;0020 064C 0651;0020 064C 0651; # (ﱞ; ﱞ; ﱞ; ◌ٌ◌ّ; ◌ٌ◌ّ; ) ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+FC5F;FC5F;FC5F;0020 064D 0651;0020 064D 0651; # (ﱟ; ﱟ; ﱟ; â—ŒÙ◌ّ; â—ŒÙ◌ّ; ) ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
+FC60;FC60;FC60;0020 064E 0651;0020 064E 0651; # (ﱠ; ﱠ; ﱠ; ◌َ◌ّ; ◌َ◌ّ; ) ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
+FC61;FC61;FC61;0020 064F 0651;0020 064F 0651; # (ﱡ; ﱡ; ﱡ; â—ŒÙ◌ّ; â—ŒÙ◌ّ; ) ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
+FC62;FC62;FC62;0020 0650 0651;0020 0650 0651; # (ï±¢; ï±¢; ï±¢; â—ŒÙ◌ّ; â—ŒÙ◌ّ; ) ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
+FC63;FC63;FC63;0020 0651 0670;0020 0651 0670; # (ﱣ; ﱣ; ﱣ; ◌ّ◌ٰ; ◌ّ◌ٰ; ) ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC64;FC64;FC64;0626 0631;064A 0654 0631; # (ﱤ; ﱤ; ﱤ; ئر; ي◌ٔر; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+FC65;FC65;FC65;0626 0632;064A 0654 0632; # (ﱥ; ﱥ; ﱥ; ئز; ي◌ٔز; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+FC66;FC66;FC66;0626 0645;064A 0654 0645; # (ﱦ; ﱦ; ﱦ; ئم; ي◌ٔم; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+FC67;FC67;FC67;0626 0646;064A 0654 0646; # (ﱧ; ﱧ; ﱧ; ئن; ي◌ٔن; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+FC68;FC68;FC68;0626 0649;064A 0654 0649; # (ﱨ; ﱨ; ﱨ; ئى; ي◌ٔى; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FC69;FC69;FC69;0626 064A;064A 0654 064A; # (ﱩ; ﱩ; ﱩ; ئي; ي◌ٔي; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+FC6A;FC6A;FC6A;0628 0631;0628 0631; # (ﱪ; ﱪ; ﱪ; بر; بر; ) ARABIC LIGATURE BEH WITH REH FINAL FORM
+FC6B;FC6B;FC6B;0628 0632;0628 0632; # (ﱫ; ﱫ; ﱫ; بز; بز; ) ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+FC6C;FC6C;FC6C;0628 0645;0628 0645; # (ﱬ; ﱬ; ﱬ; بم; بم; ) ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+FC6D;FC6D;FC6D;0628 0646;0628 0646; # (ﱭ; ﱭ; ﱭ; بن; بن; ) ARABIC LIGATURE BEH WITH NOON FINAL FORM
+FC6E;FC6E;FC6E;0628 0649;0628 0649; # (ﱮ; ﱮ; ﱮ; بى; بى; ) ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+FC6F;FC6F;FC6F;0628 064A;0628 064A; # (ﱯ; ﱯ; ﱯ; بي; بي; ) ARABIC LIGATURE BEH WITH YEH FINAL FORM
+FC70;FC70;FC70;062A 0631;062A 0631; # (ﱰ; ﱰ; ﱰ; تر; تر; ) ARABIC LIGATURE TEH WITH REH FINAL FORM
+FC71;FC71;FC71;062A 0632;062A 0632; # (ﱱ; ﱱ; ﱱ; تز; تز; ) ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+FC72;FC72;FC72;062A 0645;062A 0645; # (ﱲ; ﱲ; ﱲ; تم; تم; ) ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+FC73;FC73;FC73;062A 0646;062A 0646; # (ﱳ; ﱳ; ﱳ; تن; تن; ) ARABIC LIGATURE TEH WITH NOON FINAL FORM
+FC74;FC74;FC74;062A 0649;062A 0649; # (ﱴ; ﱴ; ﱴ; تى; تى; ) ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+FC75;FC75;FC75;062A 064A;062A 064A; # (ﱵ; ﱵ; ﱵ; تي; تي; ) ARABIC LIGATURE TEH WITH YEH FINAL FORM
+FC76;FC76;FC76;062B 0631;062B 0631; # (ﱶ; ﱶ; ﱶ; ثر; ثر; ) ARABIC LIGATURE THEH WITH REH FINAL FORM
+FC77;FC77;FC77;062B 0632;062B 0632; # (ﱷ; ﱷ; ﱷ; ثز; ثز; ) ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+FC78;FC78;FC78;062B 0645;062B 0645; # (ﱸ; ﱸ; ﱸ; ثم; ثم; ) ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+FC79;FC79;FC79;062B 0646;062B 0646; # (ﱹ; ﱹ; ﱹ; ثن; ثن; ) ARABIC LIGATURE THEH WITH NOON FINAL FORM
+FC7A;FC7A;FC7A;062B 0649;062B 0649; # (ﱺ; ﱺ; ﱺ; ثى; ثى; ) ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+FC7B;FC7B;FC7B;062B 064A;062B 064A; # (ﱻ; ﱻ; ﱻ; ثي; ثي; ) ARABIC LIGATURE THEH WITH YEH FINAL FORM
+FC7C;FC7C;FC7C;0641 0649;0641 0649; # (ï±¼; ï±¼; ï±¼; ÙÙ‰; ÙÙ‰; ) ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+FC7D;FC7D;FC7D;0641 064A;0641 064A; # (ï±½; ï±½; ï±½; ÙÙŠ; ÙÙŠ; ) ARABIC LIGATURE FEH WITH YEH FINAL FORM
+FC7E;FC7E;FC7E;0642 0649;0642 0649; # (ﱾ; ﱾ; ﱾ; قى; قى; ) ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+FC7F;FC7F;FC7F;0642 064A;0642 064A; # (ﱿ; ﱿ; ﱿ; قي; قي; ) ARABIC LIGATURE QAF WITH YEH FINAL FORM
+FC80;FC80;FC80;0643 0627;0643 0627; # (ﲀ; ﲀ; ﲀ; كا; كا; ) ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+FC81;FC81;FC81;0643 0644;0643 0644; # (ï²; ï²; ï²; كل; كل; ) ARABIC LIGATURE KAF WITH LAM FINAL FORM
+FC82;FC82;FC82;0643 0645;0643 0645; # (ﲂ; ﲂ; ﲂ; كم; كم; ) ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+FC83;FC83;FC83;0643 0649;0643 0649; # (ﲃ; ﲃ; ﲃ; كى; كى; ) ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+FC84;FC84;FC84;0643 064A;0643 064A; # (ﲄ; ﲄ; ﲄ; كي; كي; ) ARABIC LIGATURE KAF WITH YEH FINAL FORM
+FC85;FC85;FC85;0644 0645;0644 0645; # (ﲅ; ﲅ; ﲅ; لم; لم; ) ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+FC86;FC86;FC86;0644 0649;0644 0649; # (ﲆ; ﲆ; ﲆ; لى; لى; ) ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+FC87;FC87;FC87;0644 064A;0644 064A; # (ﲇ; ﲇ; ﲇ; لي; لي; ) ARABIC LIGATURE LAM WITH YEH FINAL FORM
+FC88;FC88;FC88;0645 0627;0645 0627; # (ﲈ; ﲈ; ﲈ; ما; ما; ) ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+FC89;FC89;FC89;0645 0645;0645 0645; # (ﲉ; ﲉ; ﲉ; مم; مم; ) ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+FC8A;FC8A;FC8A;0646 0631;0646 0631; # (ﲊ; ﲊ; ﲊ; نر; نر; ) ARABIC LIGATURE NOON WITH REH FINAL FORM
+FC8B;FC8B;FC8B;0646 0632;0646 0632; # (ﲋ; ﲋ; ﲋ; نز; نز; ) ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+FC8C;FC8C;FC8C;0646 0645;0646 0645; # (ﲌ; ﲌ; ﲌ; نم; نم; ) ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+FC8D;FC8D;FC8D;0646 0646;0646 0646; # (ï²; ï²; ï²; نن; نن; ) ARABIC LIGATURE NOON WITH NOON FINAL FORM
+FC8E;FC8E;FC8E;0646 0649;0646 0649; # (ﲎ; ﲎ; ﲎ; نى; نى; ) ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+FC8F;FC8F;FC8F;0646 064A;0646 064A; # (ï²; ï²; ï²; ني; ني; ) ARABIC LIGATURE NOON WITH YEH FINAL FORM
+FC90;FC90;FC90;0649 0670;0649 0670; # (ï²; ï²; ï²; ى◌ٰ; ى◌ٰ; ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+FC91;FC91;FC91;064A 0631;064A 0631; # (ﲑ; ﲑ; ﲑ; ير; ير; ) ARABIC LIGATURE YEH WITH REH FINAL FORM
+FC92;FC92;FC92;064A 0632;064A 0632; # (ﲒ; ﲒ; ﲒ; يز; يز; ) ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+FC93;FC93;FC93;064A 0645;064A 0645; # (ﲓ; ﲓ; ﲓ; يم; يم; ) ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+FC94;FC94;FC94;064A 0646;064A 0646; # (ﲔ; ﲔ; ﲔ; ين; ين; ) ARABIC LIGATURE YEH WITH NOON FINAL FORM
+FC95;FC95;FC95;064A 0649;064A 0649; # (ﲕ; ﲕ; ﲕ; يى; يى; ) ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+FC96;FC96;FC96;064A 064A;064A 064A; # (ﲖ; ﲖ; ﲖ; يي; يي; ) ARABIC LIGATURE YEH WITH YEH FINAL FORM
+FC97;FC97;FC97;0626 062C;064A 0654 062C; # (ﲗ; ﲗ; ﲗ; ئج; ي◌ٔج; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+FC98;FC98;FC98;0626 062D;064A 0654 062D; # (ﲘ; ﲘ; ﲘ; ئح; ي◌ٔح; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+FC99;FC99;FC99;0626 062E;064A 0654 062E; # (ﲙ; ﲙ; ﲙ; ئخ; ي◌ٔخ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+FC9A;FC9A;FC9A;0626 0645;064A 0654 0645; # (ﲚ; ﲚ; ﲚ; ئم; ي◌ٔم; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+FC9B;FC9B;FC9B;0626 0647;064A 0654 0647; # (ﲛ; ﲛ; ﲛ; ئه; ي◌ٔه; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+FC9C;FC9C;FC9C;0628 062C;0628 062C; # (ﲜ; ﲜ; ﲜ; بج; بج; ) ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+FC9D;FC9D;FC9D;0628 062D;0628 062D; # (ï²; ï²; ï²; بح; بح; ) ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+FC9E;FC9E;FC9E;0628 062E;0628 062E; # (ﲞ; ﲞ; ﲞ; بخ; بخ; ) ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+FC9F;FC9F;FC9F;0628 0645;0628 0645; # (ﲟ; ﲟ; ﲟ; بم; بم; ) ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+FCA0;FCA0;FCA0;0628 0647;0628 0647; # (ﲠ; ﲠ; ﲠ; به; به; ) ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+FCA1;FCA1;FCA1;062A 062C;062A 062C; # (ﲡ; ﲡ; ﲡ; تج; تج; ) ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+FCA2;FCA2;FCA2;062A 062D;062A 062D; # (ﲢ; ﲢ; ﲢ; تح; تح; ) ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+FCA3;FCA3;FCA3;062A 062E;062A 062E; # (ﲣ; ﲣ; ﲣ; تخ; تخ; ) ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+FCA4;FCA4;FCA4;062A 0645;062A 0645; # (ﲤ; ﲤ; ﲤ; تم; تم; ) ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+FCA5;FCA5;FCA5;062A 0647;062A 0647; # (ﲥ; ﲥ; ﲥ; ته; ته; ) ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+FCA6;FCA6;FCA6;062B 0645;062B 0645; # (ﲦ; ﲦ; ﲦ; ثم; ثم; ) ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+FCA7;FCA7;FCA7;062C 062D;062C 062D; # (ﲧ; ﲧ; ﲧ; جح; جح; ) ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+FCA8;FCA8;FCA8;062C 0645;062C 0645; # (ﲨ; ﲨ; ﲨ; جم; جم; ) ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+FCA9;FCA9;FCA9;062D 062C;062D 062C; # (ﲩ; ﲩ; ﲩ; حج; حج; ) ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+FCAA;FCAA;FCAA;062D 0645;062D 0645; # (ﲪ; ﲪ; ﲪ; حم; حم; ) ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+FCAB;FCAB;FCAB;062E 062C;062E 062C; # (ﲫ; ﲫ; ﲫ; خج; خج; ) ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+FCAC;FCAC;FCAC;062E 0645;062E 0645; # (ﲬ; ﲬ; ﲬ; خم; خم; ) ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+FCAD;FCAD;FCAD;0633 062C;0633 062C; # (ﲭ; ﲭ; ﲭ; سج; سج; ) ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+FCAE;FCAE;FCAE;0633 062D;0633 062D; # (ﲮ; ﲮ; ﲮ; سح; سح; ) ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+FCAF;FCAF;FCAF;0633 062E;0633 062E; # (ﲯ; ﲯ; ﲯ; سخ; سخ; ) ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+FCB0;FCB0;FCB0;0633 0645;0633 0645; # (ﲰ; ﲰ; ﲰ; سم; سم; ) ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+FCB1;FCB1;FCB1;0635 062D;0635 062D; # (ﲱ; ﲱ; ﲱ; صح; صح; ) ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+FCB2;FCB2;FCB2;0635 062E;0635 062E; # (ﲲ; ﲲ; ﲲ; صخ; صخ; ) ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+FCB3;FCB3;FCB3;0635 0645;0635 0645; # (ﲳ; ﲳ; ﲳ; صم; صم; ) ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+FCB4;FCB4;FCB4;0636 062C;0636 062C; # (ﲴ; ﲴ; ﲴ; ضج; ضج; ) ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+FCB5;FCB5;FCB5;0636 062D;0636 062D; # (ﲵ; ﲵ; ﲵ; ضح; ضح; ) ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+FCB6;FCB6;FCB6;0636 062E;0636 062E; # (ﲶ; ﲶ; ﲶ; ضخ; ضخ; ) ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+FCB7;FCB7;FCB7;0636 0645;0636 0645; # (ﲷ; ﲷ; ﲷ; ضم; ضم; ) ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+FCB8;FCB8;FCB8;0637 062D;0637 062D; # (ﲸ; ﲸ; ﲸ; طح; طح; ) ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+FCB9;FCB9;FCB9;0638 0645;0638 0645; # (ﲹ; ﲹ; ﲹ; ظم; ظم; ) ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+FCBA;FCBA;FCBA;0639 062C;0639 062C; # (ﲺ; ﲺ; ﲺ; عج; عج; ) ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+FCBB;FCBB;FCBB;0639 0645;0639 0645; # (ﲻ; ﲻ; ﲻ; عم; عم; ) ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+FCBC;FCBC;FCBC;063A 062C;063A 062C; # (ﲼ; ﲼ; ﲼ; غج; غج; ) ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+FCBD;FCBD;FCBD;063A 0645;063A 0645; # (ﲽ; ﲽ; ﲽ; غم; غم; ) ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+FCBE;FCBE;FCBE;0641 062C;0641 062C; # (ï²¾; ï²¾; ï²¾; Ùج; Ùج; ) ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+FCBF;FCBF;FCBF;0641 062D;0641 062D; # (ﲿ; ﲿ; ﲿ; ÙØ­; ÙØ­; ) ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+FCC0;FCC0;FCC0;0641 062E;0641 062E; # (ï³€; ï³€; ï³€; ÙØ®; ÙØ®; ) ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+FCC1;FCC1;FCC1;0641 0645;0641 0645; # (ï³; ï³; ï³; ÙÙ…; ÙÙ…; ) ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+FCC2;FCC2;FCC2;0642 062D;0642 062D; # (ﳂ; ﳂ; ﳂ; قح; قح; ) ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+FCC3;FCC3;FCC3;0642 0645;0642 0645; # (ﳃ; ﳃ; ﳃ; قم; قم; ) ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+FCC4;FCC4;FCC4;0643 062C;0643 062C; # (ﳄ; ﳄ; ﳄ; كج; كج; ) ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+FCC5;FCC5;FCC5;0643 062D;0643 062D; # (ﳅ; ﳅ; ﳅ; كح; كح; ) ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+FCC6;FCC6;FCC6;0643 062E;0643 062E; # (ﳆ; ﳆ; ﳆ; كخ; كخ; ) ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+FCC7;FCC7;FCC7;0643 0644;0643 0644; # (ﳇ; ﳇ; ﳇ; كل; كل; ) ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+FCC8;FCC8;FCC8;0643 0645;0643 0645; # (ﳈ; ﳈ; ﳈ; كم; كم; ) ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+FCC9;FCC9;FCC9;0644 062C;0644 062C; # (ﳉ; ﳉ; ﳉ; لج; لج; ) ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+FCCA;FCCA;FCCA;0644 062D;0644 062D; # (ﳊ; ﳊ; ﳊ; لح; لح; ) ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+FCCB;FCCB;FCCB;0644 062E;0644 062E; # (ﳋ; ﳋ; ﳋ; لخ; لخ; ) ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+FCCC;FCCC;FCCC;0644 0645;0644 0645; # (ﳌ; ﳌ; ﳌ; لم; لم; ) ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+FCCD;FCCD;FCCD;0644 0647;0644 0647; # (ï³; ï³; ï³; له; له; ) ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+FCCE;FCCE;FCCE;0645 062C;0645 062C; # (ﳎ; ﳎ; ﳎ; مج; مج; ) ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+FCCF;FCCF;FCCF;0645 062D;0645 062D; # (ï³; ï³; ï³; مح; مح; ) ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+FCD0;FCD0;FCD0;0645 062E;0645 062E; # (ï³; ï³; ï³; مخ; مخ; ) ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+FCD1;FCD1;FCD1;0645 0645;0645 0645; # (ﳑ; ﳑ; ﳑ; مم; مم; ) ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+FCD2;FCD2;FCD2;0646 062C;0646 062C; # (ﳒ; ﳒ; ﳒ; نج; نج; ) ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+FCD3;FCD3;FCD3;0646 062D;0646 062D; # (ﳓ; ﳓ; ﳓ; نح; نح; ) ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+FCD4;FCD4;FCD4;0646 062E;0646 062E; # (ﳔ; ﳔ; ﳔ; نخ; نخ; ) ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+FCD5;FCD5;FCD5;0646 0645;0646 0645; # (ﳕ; ﳕ; ﳕ; نم; نم; ) ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+FCD6;FCD6;FCD6;0646 0647;0646 0647; # (ﳖ; ﳖ; ﳖ; نه; نه; ) ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+FCD7;FCD7;FCD7;0647 062C;0647 062C; # (ﳗ; ﳗ; ﳗ; هج; هج; ) ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+FCD8;FCD8;FCD8;0647 0645;0647 0645; # (ﳘ; ﳘ; ﳘ; هم; هم; ) ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+FCD9;FCD9;FCD9;0647 0670;0647 0670; # (ﳙ; ﳙ; ﳙ; ه◌ٰ; ه◌ٰ; ) ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+FCDA;FCDA;FCDA;064A 062C;064A 062C; # (ﳚ; ﳚ; ﳚ; يج; يج; ) ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+FCDB;FCDB;FCDB;064A 062D;064A 062D; # (ﳛ; ﳛ; ﳛ; يح; يح; ) ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+FCDC;FCDC;FCDC;064A 062E;064A 062E; # (ﳜ; ﳜ; ﳜ; يخ; يخ; ) ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+FCDD;FCDD;FCDD;064A 0645;064A 0645; # (ï³; ï³; ï³; يم; يم; ) ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+FCDE;FCDE;FCDE;064A 0647;064A 0647; # (ﳞ; ﳞ; ﳞ; يه; يه; ) ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+FCDF;FCDF;FCDF;0626 0645;064A 0654 0645; # (ﳟ; ﳟ; ﳟ; ئم; ي◌ٔم; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+FCE0;FCE0;FCE0;0626 0647;064A 0654 0647; # (ﳠ; ﳠ; ﳠ; ئه; ي◌ٔه; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+FCE1;FCE1;FCE1;0628 0645;0628 0645; # (ﳡ; ﳡ; ﳡ; بم; بم; ) ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+FCE2;FCE2;FCE2;0628 0647;0628 0647; # (ﳢ; ﳢ; ﳢ; به; به; ) ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+FCE3;FCE3;FCE3;062A 0645;062A 0645; # (ﳣ; ﳣ; ﳣ; تم; تم; ) ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+FCE4;FCE4;FCE4;062A 0647;062A 0647; # (ﳤ; ﳤ; ﳤ; ته; ته; ) ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+FCE5;FCE5;FCE5;062B 0645;062B 0645; # (ﳥ; ﳥ; ﳥ; ثم; ثم; ) ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+FCE6;FCE6;FCE6;062B 0647;062B 0647; # (ﳦ; ﳦ; ﳦ; ثه; ثه; ) ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+FCE7;FCE7;FCE7;0633 0645;0633 0645; # (ﳧ; ﳧ; ﳧ; سم; سم; ) ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+FCE8;FCE8;FCE8;0633 0647;0633 0647; # (ﳨ; ﳨ; ﳨ; سه; سه; ) ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+FCE9;FCE9;FCE9;0634 0645;0634 0645; # (ﳩ; ﳩ; ﳩ; شم; شم; ) ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+FCEA;FCEA;FCEA;0634 0647;0634 0647; # (ﳪ; ﳪ; ﳪ; شه; شه; ) ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+FCEB;FCEB;FCEB;0643 0644;0643 0644; # (ﳫ; ﳫ; ﳫ; كل; كل; ) ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+FCEC;FCEC;FCEC;0643 0645;0643 0645; # (ﳬ; ﳬ; ﳬ; كم; كم; ) ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+FCED;FCED;FCED;0644 0645;0644 0645; # (ﳭ; ﳭ; ﳭ; لم; لم; ) ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+FCEE;FCEE;FCEE;0646 0645;0646 0645; # (ﳮ; ﳮ; ﳮ; نم; نم; ) ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+FCEF;FCEF;FCEF;0646 0647;0646 0647; # (ﳯ; ﳯ; ﳯ; نه; نه; ) ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+FCF0;FCF0;FCF0;064A 0645;064A 0645; # (ﳰ; ﳰ; ﳰ; يم; يم; ) ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+FCF1;FCF1;FCF1;064A 0647;064A 0647; # (ﳱ; ﳱ; ﳱ; يه; يه; ) ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+FCF2;FCF2;FCF2;0640 064E 0651;0640 064E 0651; # (ﳲ; ﳲ; ﳲ; ـ◌َ◌ّ; ـ◌َ◌ّ; ) ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
+FCF3;FCF3;FCF3;0640 064F 0651;0640 064F 0651; # (ï³³; ï³³; ï³³; ـ◌Ù◌ّ; ـ◌Ù◌ّ; ) ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
+FCF4;FCF4;FCF4;0640 0650 0651;0640 0650 0651; # (ï³´; ï³´; ï³´; ـ◌Ù◌ّ; ـ◌Ù◌ّ; ) ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
+FCF5;FCF5;FCF5;0637 0649;0637 0649; # (ﳵ; ﳵ; ﳵ; طى; طى; ) ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+FCF6;FCF6;FCF6;0637 064A;0637 064A; # (ﳶ; ﳶ; ﳶ; طي; طي; ) ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+FCF7;FCF7;FCF7;0639 0649;0639 0649; # (ﳷ; ﳷ; ﳷ; عى; عى; ) ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+FCF8;FCF8;FCF8;0639 064A;0639 064A; # (ﳸ; ﳸ; ﳸ; عي; عي; ) ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+FCF9;FCF9;FCF9;063A 0649;063A 0649; # (ﳹ; ﳹ; ﳹ; غى; غى; ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+FCFA;FCFA;FCFA;063A 064A;063A 064A; # (ﳺ; ﳺ; ﳺ; غي; غي; ) ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+FCFB;FCFB;FCFB;0633 0649;0633 0649; # (ﳻ; ﳻ; ﳻ; سى; سى; ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFC;FCFC;FCFC;0633 064A;0633 064A; # (ﳼ; ﳼ; ﳼ; سي; سي; ) ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+FCFD;FCFD;FCFD;0634 0649;0634 0649; # (ﳽ; ﳽ; ﳽ; شى; شى; ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFE;FCFE;FCFE;0634 064A;0634 064A; # (ﳾ; ﳾ; ﳾ; شي; شي; ) ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+FCFF;FCFF;FCFF;062D 0649;062D 0649; # (ﳿ; ﳿ; ﳿ; حى; حى; ) ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+FD00;FD00;FD00;062D 064A;062D 064A; # (ﴀ; ﴀ; ﴀ; حي; حي; ) ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+FD01;FD01;FD01;062C 0649;062C 0649; # (ï´; ï´; ï´; جى; جى; ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+FD02;FD02;FD02;062C 064A;062C 064A; # (ﴂ; ﴂ; ﴂ; جي; جي; ) ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+FD03;FD03;FD03;062E 0649;062E 0649; # (ﴃ; ﴃ; ﴃ; خى; خى; ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+FD04;FD04;FD04;062E 064A;062E 064A; # (ﴄ; ﴄ; ﴄ; خي; خي; ) ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+FD05;FD05;FD05;0635 0649;0635 0649; # (ﴅ; ﴅ; ﴅ; صى; صى; ) ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+FD06;FD06;FD06;0635 064A;0635 064A; # (ﴆ; ﴆ; ﴆ; صي; صي; ) ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+FD07;FD07;FD07;0636 0649;0636 0649; # (ﴇ; ﴇ; ﴇ; ضى; ضى; ) ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+FD08;FD08;FD08;0636 064A;0636 064A; # (ﴈ; ﴈ; ﴈ; ضي; ضي; ) ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+FD09;FD09;FD09;0634 062C;0634 062C; # (ﴉ; ﴉ; ﴉ; شج; شج; ) ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+FD0A;FD0A;FD0A;0634 062D;0634 062D; # (ﴊ; ﴊ; ﴊ; شح; شح; ) ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+FD0B;FD0B;FD0B;0634 062E;0634 062E; # (ﴋ; ﴋ; ﴋ; شخ; شخ; ) ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+FD0C;FD0C;FD0C;0634 0645;0634 0645; # (ﴌ; ﴌ; ﴌ; شم; شم; ) ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+FD0D;FD0D;FD0D;0634 0631;0634 0631; # (ï´; ï´; ï´; شر; شر; ) ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+FD0E;FD0E;FD0E;0633 0631;0633 0631; # (ﴎ; ﴎ; ﴎ; سر; سر; ) ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+FD0F;FD0F;FD0F;0635 0631;0635 0631; # (ï´; ï´; ï´; صر; صر; ) ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+FD10;FD10;FD10;0636 0631;0636 0631; # (ï´; ï´; ï´; ضر; ضر; ) ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+FD11;FD11;FD11;0637 0649;0637 0649; # (ﴑ; ﴑ; ﴑ; طى; طى; ) ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+FD12;FD12;FD12;0637 064A;0637 064A; # (ﴒ; ﴒ; ﴒ; طي; طي; ) ARABIC LIGATURE TAH WITH YEH FINAL FORM
+FD13;FD13;FD13;0639 0649;0639 0649; # (ﴓ; ﴓ; ﴓ; عى; عى; ) ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+FD14;FD14;FD14;0639 064A;0639 064A; # (ﴔ; ﴔ; ﴔ; عي; عي; ) ARABIC LIGATURE AIN WITH YEH FINAL FORM
+FD15;FD15;FD15;063A 0649;063A 0649; # (ﴕ; ﴕ; ﴕ; غى; غى; ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+FD16;FD16;FD16;063A 064A;063A 064A; # (ﴖ; ﴖ; ﴖ; غي; غي; ) ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+FD17;FD17;FD17;0633 0649;0633 0649; # (ﴗ; ﴗ; ﴗ; سى; سى; ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+FD18;FD18;FD18;0633 064A;0633 064A; # (ﴘ; ﴘ; ﴘ; سي; سي; ) ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+FD19;FD19;FD19;0634 0649;0634 0649; # (ﴙ; ﴙ; ﴙ; شى; شى; ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+FD1A;FD1A;FD1A;0634 064A;0634 064A; # (ﴚ; ﴚ; ﴚ; شي; شي; ) ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+FD1B;FD1B;FD1B;062D 0649;062D 0649; # (ﴛ; ﴛ; ﴛ; حى; حى; ) ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+FD1C;FD1C;FD1C;062D 064A;062D 064A; # (ﴜ; ﴜ; ﴜ; حي; حي; ) ARABIC LIGATURE HAH WITH YEH FINAL FORM
+FD1D;FD1D;FD1D;062C 0649;062C 0649; # (ï´; ï´; ï´; جى; جى; ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+FD1E;FD1E;FD1E;062C 064A;062C 064A; # (ﴞ; ﴞ; ﴞ; جي; جي; ) ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+FD1F;FD1F;FD1F;062E 0649;062E 0649; # (ﴟ; ﴟ; ﴟ; خى; خى; ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+FD20;FD20;FD20;062E 064A;062E 064A; # (ﴠ; ﴠ; ﴠ; خي; خي; ) ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+FD21;FD21;FD21;0635 0649;0635 0649; # (ﴡ; ﴡ; ﴡ; صى; صى; ) ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+FD22;FD22;FD22;0635 064A;0635 064A; # (ﴢ; ﴢ; ﴢ; صي; صي; ) ARABIC LIGATURE SAD WITH YEH FINAL FORM
+FD23;FD23;FD23;0636 0649;0636 0649; # (ﴣ; ﴣ; ﴣ; ضى; ضى; ) ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+FD24;FD24;FD24;0636 064A;0636 064A; # (ﴤ; ﴤ; ﴤ; ضي; ضي; ) ARABIC LIGATURE DAD WITH YEH FINAL FORM
+FD25;FD25;FD25;0634 062C;0634 062C; # (ﴥ; ﴥ; ﴥ; شج; شج; ) ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+FD26;FD26;FD26;0634 062D;0634 062D; # (ﴦ; ﴦ; ﴦ; شح; شح; ) ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+FD27;FD27;FD27;0634 062E;0634 062E; # (ﴧ; ﴧ; ﴧ; شخ; شخ; ) ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+FD28;FD28;FD28;0634 0645;0634 0645; # (ﴨ; ﴨ; ﴨ; شم; شم; ) ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+FD29;FD29;FD29;0634 0631;0634 0631; # (ﴩ; ﴩ; ﴩ; شر; شر; ) ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+FD2A;FD2A;FD2A;0633 0631;0633 0631; # (ﴪ; ﴪ; ﴪ; سر; سر; ) ARABIC LIGATURE SEEN WITH REH FINAL FORM
+FD2B;FD2B;FD2B;0635 0631;0635 0631; # (ﴫ; ﴫ; ﴫ; صر; صر; ) ARABIC LIGATURE SAD WITH REH FINAL FORM
+FD2C;FD2C;FD2C;0636 0631;0636 0631; # (ﴬ; ﴬ; ﴬ; ضر; ضر; ) ARABIC LIGATURE DAD WITH REH FINAL FORM
+FD2D;FD2D;FD2D;0634 062C;0634 062C; # (ﴭ; ﴭ; ﴭ; شج; شج; ) ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+FD2E;FD2E;FD2E;0634 062D;0634 062D; # (ﴮ; ﴮ; ﴮ; شح; شح; ) ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+FD2F;FD2F;FD2F;0634 062E;0634 062E; # (ﴯ; ﴯ; ﴯ; شخ; شخ; ) ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+FD30;FD30;FD30;0634 0645;0634 0645; # (ﴰ; ﴰ; ﴰ; شم; شم; ) ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+FD31;FD31;FD31;0633 0647;0633 0647; # (ﴱ; ﴱ; ﴱ; سه; سه; ) ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+FD32;FD32;FD32;0634 0647;0634 0647; # (ﴲ; ﴲ; ﴲ; شه; شه; ) ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+FD33;FD33;FD33;0637 0645;0637 0645; # (ﴳ; ﴳ; ﴳ; طم; طم; ) ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+FD34;FD34;FD34;0633 062C;0633 062C; # (ﴴ; ﴴ; ﴴ; سج; سج; ) ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+FD35;FD35;FD35;0633 062D;0633 062D; # (ﴵ; ﴵ; ﴵ; سح; سح; ) ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+FD36;FD36;FD36;0633 062E;0633 062E; # (ﴶ; ﴶ; ﴶ; سخ; سخ; ) ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+FD37;FD37;FD37;0634 062C;0634 062C; # (ﴷ; ﴷ; ﴷ; شج; شج; ) ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+FD38;FD38;FD38;0634 062D;0634 062D; # (ﴸ; ﴸ; ﴸ; شح; شح; ) ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+FD39;FD39;FD39;0634 062E;0634 062E; # (ﴹ; ﴹ; ﴹ; شخ; شخ; ) ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+FD3A;FD3A;FD3A;0637 0645;0637 0645; # (ﴺ; ﴺ; ﴺ; طم; طم; ) ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+FD3B;FD3B;FD3B;0638 0645;0638 0645; # (ﴻ; ﴻ; ﴻ; ظم; ظم; ) ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+FD3C;FD3C;FD3C;0627 064B;0627 064B; # (ﴼ; ﴼ; ﴼ; ا◌ً; ا◌ً; ) ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
+FD3D;FD3D;FD3D;0627 064B;0627 064B; # (ﴽ; ﴽ; ﴽ; ا◌ً; ا◌ً; ) ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50;FD50;FD50;062A 062C 0645;062A 062C 0645; # (ïµ; ïµ; ïµ; تجم; تجم; ) ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+FD51;FD51;FD51;062A 062D 062C;062A 062D 062C; # (ﵑ; ﵑ; ﵑ; تحج; تحج; ) ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
+FD52;FD52;FD52;062A 062D 062C;062A 062D 062C; # (ﵒ; ﵒ; ﵒ; تحج; تحج; ) ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+FD53;FD53;FD53;062A 062D 0645;062A 062D 0645; # (ﵓ; ﵓ; ﵓ; تحم; تحم; ) ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+FD54;FD54;FD54;062A 062E 0645;062A 062E 0645; # (ﵔ; ﵔ; ﵔ; تخم; تخم; ) ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+FD55;FD55;FD55;062A 0645 062C;062A 0645 062C; # (ﵕ; ﵕ; ﵕ; تمج; تمج; ) ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+FD56;FD56;FD56;062A 0645 062D;062A 0645 062D; # (ﵖ; ﵖ; ﵖ; تمح; تمح; ) ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+FD57;FD57;FD57;062A 0645 062E;062A 0645 062E; # (ﵗ; ﵗ; ﵗ; تمخ; تمخ; ) ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+FD58;FD58;FD58;062C 0645 062D;062C 0645 062D; # (ﵘ; ﵘ; ﵘ; جمح; جمح; ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
+FD59;FD59;FD59;062C 0645 062D;062C 0645 062D; # (ﵙ; ﵙ; ﵙ; جمح; جمح; ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+FD5A;FD5A;FD5A;062D 0645 064A;062D 0645 064A; # (ﵚ; ﵚ; ﵚ; حمي; حمي; ) ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+FD5B;FD5B;FD5B;062D 0645 0649;062D 0645 0649; # (ﵛ; ﵛ; ﵛ; حمى; حمى; ) ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD5C;FD5C;FD5C;0633 062D 062C;0633 062D 062C; # (ﵜ; ﵜ; ﵜ; سحج; سحج; ) ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+FD5D;FD5D;FD5D;0633 062C 062D;0633 062C 062D; # (ïµ; ïµ; ïµ; سجح; سجح; ) ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+FD5E;FD5E;FD5E;0633 062C 0649;0633 062C 0649; # (ﵞ; ﵞ; ﵞ; سجى; سجى; ) ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD5F;FD5F;FD5F;0633 0645 062D;0633 0645 062D; # (ﵟ; ﵟ; ﵟ; سمح; سمح; ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
+FD60;FD60;FD60;0633 0645 062D;0633 0645 062D; # (ﵠ; ﵠ; ﵠ; سمح; سمح; ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+FD61;FD61;FD61;0633 0645 062C;0633 0645 062C; # (ﵡ; ﵡ; ﵡ; سمج; سمج; ) ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+FD62;FD62;FD62;0633 0645 0645;0633 0645 0645; # (ﵢ; ﵢ; ﵢ; سمم; سمم; ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
+FD63;FD63;FD63;0633 0645 0645;0633 0645 0645; # (ﵣ; ﵣ; ﵣ; سمم; سمم; ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+FD64;FD64;FD64;0635 062D 062D;0635 062D 062D; # (ﵤ; ﵤ; ﵤ; صحح; صحح; ) ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
+FD65;FD65;FD65;0635 062D 062D;0635 062D 062D; # (ﵥ; ﵥ; ﵥ; صحح; صحح; ) ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+FD66;FD66;FD66;0635 0645 0645;0635 0645 0645; # (ﵦ; ﵦ; ﵦ; صمم; صمم; ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+FD67;FD67;FD67;0634 062D 0645;0634 062D 0645; # (ﵧ; ﵧ; ﵧ; شحم; شحم; ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
+FD68;FD68;FD68;0634 062D 0645;0634 062D 0645; # (ﵨ; ﵨ; ﵨ; شحم; شحم; ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+FD69;FD69;FD69;0634 062C 064A;0634 062C 064A; # (ﵩ; ﵩ; ﵩ; شجي; شجي; ) ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+FD6A;FD6A;FD6A;0634 0645 062E;0634 0645 062E; # (ﵪ; ﵪ; ﵪ; شمخ; شمخ; ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
+FD6B;FD6B;FD6B;0634 0645 062E;0634 0645 062E; # (ﵫ; ﵫ; ﵫ; شمخ; شمخ; ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+FD6C;FD6C;FD6C;0634 0645 0645;0634 0645 0645; # (ﵬ; ﵬ; ﵬ; شمم; شمم; ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
+FD6D;FD6D;FD6D;0634 0645 0645;0634 0645 0645; # (ﵭ; ﵭ; ﵭ; شمم; شمم; ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+FD6E;FD6E;FD6E;0636 062D 0649;0636 062D 0649; # (ﵮ; ﵮ; ﵮ; ضحى; ضحى; ) ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD6F;FD6F;FD6F;0636 062E 0645;0636 062E 0645; # (ﵯ; ﵯ; ﵯ; ضخم; ضخم; ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
+FD70;FD70;FD70;0636 062E 0645;0636 062E 0645; # (ﵰ; ﵰ; ﵰ; ضخم; ضخم; ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+FD71;FD71;FD71;0637 0645 062D;0637 0645 062D; # (ﵱ; ﵱ; ﵱ; طمح; طمح; ) ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
+FD72;FD72;FD72;0637 0645 062D;0637 0645 062D; # (ﵲ; ﵲ; ﵲ; طمح; طمح; ) ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+FD73;FD73;FD73;0637 0645 0645;0637 0645 0645; # (ﵳ; ﵳ; ﵳ; طمم; طمم; ) ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+FD74;FD74;FD74;0637 0645 064A;0637 0645 064A; # (ﵴ; ﵴ; ﵴ; طمي; طمي; ) ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+FD75;FD75;FD75;0639 062C 0645;0639 062C 0645; # (ﵵ; ﵵ; ﵵ; عجم; عجم; ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+FD76;FD76;FD76;0639 0645 0645;0639 0645 0645; # (ﵶ; ﵶ; ﵶ; عمم; عمم; ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
+FD77;FD77;FD77;0639 0645 0645;0639 0645 0645; # (ﵷ; ﵷ; ﵷ; عمم; عمم; ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+FD78;FD78;FD78;0639 0645 0649;0639 0645 0649; # (ﵸ; ﵸ; ﵸ; عمى; عمى; ) ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD79;FD79;FD79;063A 0645 0645;063A 0645 0645; # (ﵹ; ﵹ; ﵹ; غمم; غمم; ) ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+FD7A;FD7A;FD7A;063A 0645 064A;063A 0645 064A; # (ﵺ; ﵺ; ﵺ; غمي; غمي; ) ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+FD7B;FD7B;FD7B;063A 0645 0649;063A 0645 0649; # (ﵻ; ﵻ; ﵻ; غمى; غمى; ) ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD7C;FD7C;FD7C;0641 062E 0645;0641 062E 0645; # (ïµ¼; ïµ¼; ïµ¼; Ùخم; Ùخم; ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
+FD7D;FD7D;FD7D;0641 062E 0645;0641 062E 0645; # (ïµ½; ïµ½; ïµ½; Ùخم; Ùخم; ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+FD7E;FD7E;FD7E;0642 0645 062D;0642 0645 062D; # (ﵾ; ﵾ; ﵾ; قمح; قمح; ) ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+FD7F;FD7F;FD7F;0642 0645 0645;0642 0645 0645; # (ﵿ; ﵿ; ﵿ; قمم; قمم; ) ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+FD80;FD80;FD80;0644 062D 0645;0644 062D 0645; # (ﶀ; ﶀ; ﶀ; لحم; لحم; ) ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+FD81;FD81;FD81;0644 062D 064A;0644 062D 064A; # (ï¶; ï¶; ï¶; لحي; لحي; ) ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+FD82;FD82;FD82;0644 062D 0649;0644 062D 0649; # (ﶂ; ﶂ; ﶂ; لحى; لحى; ) ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD83;FD83;FD83;0644 062C 062C;0644 062C 062C; # (ﶃ; ﶃ; ﶃ; لجج; لجج; ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
+FD84;FD84;FD84;0644 062C 062C;0644 062C 062C; # (ﶄ; ﶄ; ﶄ; لجج; لجج; ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+FD85;FD85;FD85;0644 062E 0645;0644 062E 0645; # (ﶅ; ﶅ; ﶅ; لخم; لخم; ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
+FD86;FD86;FD86;0644 062E 0645;0644 062E 0645; # (ﶆ; ﶆ; ﶆ; لخم; لخم; ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+FD87;FD87;FD87;0644 0645 062D;0644 0645 062D; # (ﶇ; ﶇ; ﶇ; لمح; لمح; ) ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
+FD88;FD88;FD88;0644 0645 062D;0644 0645 062D; # (ﶈ; ﶈ; ﶈ; لمح; لمح; ) ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+FD89;FD89;FD89;0645 062D 062C;0645 062D 062C; # (ﶉ; ﶉ; ﶉ; محج; محج; ) ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+FD8A;FD8A;FD8A;0645 062D 0645;0645 062D 0645; # (ﶊ; ﶊ; ﶊ; محم; محم; ) ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+FD8B;FD8B;FD8B;0645 062D 064A;0645 062D 064A; # (ﶋ; ﶋ; ﶋ; محي; محي; ) ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+FD8C;FD8C;FD8C;0645 062C 062D;0645 062C 062D; # (ﶌ; ﶌ; ﶌ; مجح; مجح; ) ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+FD8D;FD8D;FD8D;0645 062C 0645;0645 062C 0645; # (ï¶; ï¶; ï¶; مجم; مجم; ) ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+FD8E;FD8E;FD8E;0645 062E 062C;0645 062E 062C; # (ﶎ; ﶎ; ﶎ; مخج; مخج; ) ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+FD8F;FD8F;FD8F;0645 062E 0645;0645 062E 0645; # (ï¶; ï¶; ï¶; مخم; مخم; ) ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92;FD92;FD92;0645 062C 062E;0645 062C 062E; # (ﶒ; ﶒ; ﶒ; مجخ; مجخ; ) ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+FD93;FD93;FD93;0647 0645 062C;0647 0645 062C; # (ﶓ; ﶓ; ﶓ; همج; همج; ) ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+FD94;FD94;FD94;0647 0645 0645;0647 0645 0645; # (ﶔ; ﶔ; ﶔ; همم; همم; ) ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+FD95;FD95;FD95;0646 062D 0645;0646 062D 0645; # (ﶕ; ﶕ; ﶕ; نحم; نحم; ) ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+FD96;FD96;FD96;0646 062D 0649;0646 062D 0649; # (ﶖ; ﶖ; ﶖ; نحى; نحى; ) ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD97;FD97;FD97;0646 062C 0645;0646 062C 0645; # (ﶗ; ﶗ; ﶗ; نجم; نجم; ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
+FD98;FD98;FD98;0646 062C 0645;0646 062C 0645; # (ﶘ; ﶘ; ﶘ; نجم; نجم; ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+FD99;FD99;FD99;0646 062C 0649;0646 062C 0649; # (ﶙ; ﶙ; ﶙ; نجى; نجى; ) ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD9A;FD9A;FD9A;0646 0645 064A;0646 0645 064A; # (ﶚ; ﶚ; ﶚ; نمي; نمي; ) ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+FD9B;FD9B;FD9B;0646 0645 0649;0646 0645 0649; # (ﶛ; ﶛ; ﶛ; نمى; نمى; ) ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD9C;FD9C;FD9C;064A 0645 0645;064A 0645 0645; # (ﶜ; ﶜ; ﶜ; يمم; يمم; ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
+FD9D;FD9D;FD9D;064A 0645 0645;064A 0645 0645; # (ï¶; ï¶; ï¶; يمم; يمم; ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+FD9E;FD9E;FD9E;0628 062E 064A;0628 062E 064A; # (ﶞ; ﶞ; ﶞ; بخي; بخي; ) ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+FD9F;FD9F;FD9F;062A 062C 064A;062A 062C 064A; # (ﶟ; ﶟ; ﶟ; تجي; تجي; ) ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+FDA0;FDA0;FDA0;062A 062C 0649;062A 062C 0649; # (ﶠ; ﶠ; ﶠ; تجى; تجى; ) ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FDA1;FDA1;FDA1;062A 062E 064A;062A 062E 064A; # (ﶡ; ﶡ; ﶡ; تخي; تخي; ) ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+FDA2;FDA2;FDA2;062A 062E 0649;062A 062E 0649; # (ﶢ; ﶢ; ﶢ; تخى; تخى; ) ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA3;FDA3;FDA3;062A 0645 064A;062A 0645 064A; # (ﶣ; ﶣ; ﶣ; تمي; تمي; ) ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+FDA4;FDA4;FDA4;062A 0645 0649;062A 0645 0649; # (ﶤ; ﶤ; ﶤ; تمى; تمى; ) ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA5;FDA5;FDA5;062C 0645 064A;062C 0645 064A; # (ﶥ; ﶥ; ﶥ; جمي; جمي; ) ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+FDA6;FDA6;FDA6;062C 062D 0649;062C 062D 0649; # (ﶦ; ﶦ; ﶦ; جحى; جحى; ) ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDA7;FDA7;FDA7;062C 0645 0649;062C 0645 0649; # (ﶧ; ﶧ; ﶧ; جمى; جمى; ) ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA8;FDA8;FDA8;0633 062E 0649;0633 062E 0649; # (ﶨ; ﶨ; ﶨ; سخى; سخى; ) ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA9;FDA9;FDA9;0635 062D 064A;0635 062D 064A; # (ﶩ; ﶩ; ﶩ; صحي; صحي; ) ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+FDAA;FDAA;FDAA;0634 062D 064A;0634 062D 064A; # (ﶪ; ﶪ; ﶪ; شحي; شحي; ) ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+FDAB;FDAB;FDAB;0636 062D 064A;0636 062D 064A; # (ﶫ; ﶫ; ﶫ; ضحي; ضحي; ) ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+FDAC;FDAC;FDAC;0644 062C 064A;0644 062C 064A; # (ﶬ; ﶬ; ﶬ; لجي; لجي; ) ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+FDAD;FDAD;FDAD;0644 0645 064A;0644 0645 064A; # (ﶭ; ﶭ; ﶭ; لمي; لمي; ) ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+FDAE;FDAE;FDAE;064A 062D 064A;064A 062D 064A; # (ﶮ; ﶮ; ﶮ; يحي; يحي; ) ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+FDAF;FDAF;FDAF;064A 062C 064A;064A 062C 064A; # (ﶯ; ﶯ; ﶯ; يجي; يجي; ) ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+FDB0;FDB0;FDB0;064A 0645 064A;064A 0645 064A; # (ﶰ; ﶰ; ﶰ; يمي; يمي; ) ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+FDB1;FDB1;FDB1;0645 0645 064A;0645 0645 064A; # (ﶱ; ﶱ; ﶱ; ممي; ممي; ) ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+FDB2;FDB2;FDB2;0642 0645 064A;0642 0645 064A; # (ﶲ; ﶲ; ﶲ; قمي; قمي; ) ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+FDB3;FDB3;FDB3;0646 062D 064A;0646 062D 064A; # (ﶳ; ﶳ; ﶳ; نحي; نحي; ) ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+FDB4;FDB4;FDB4;0642 0645 062D;0642 0645 062D; # (ﶴ; ﶴ; ﶴ; قمح; قمح; ) ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+FDB5;FDB5;FDB5;0644 062D 0645;0644 062D 0645; # (ﶵ; ﶵ; ﶵ; لحم; لحم; ) ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+FDB6;FDB6;FDB6;0639 0645 064A;0639 0645 064A; # (ﶶ; ﶶ; ﶶ; عمي; عمي; ) ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+FDB7;FDB7;FDB7;0643 0645 064A;0643 0645 064A; # (ﶷ; ﶷ; ﶷ; كمي; كمي; ) ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+FDB8;FDB8;FDB8;0646 062C 062D;0646 062C 062D; # (ﶸ; ﶸ; ﶸ; نجح; نجح; ) ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+FDB9;FDB9;FDB9;0645 062E 064A;0645 062E 064A; # (ﶹ; ﶹ; ﶹ; مخي; مخي; ) ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+FDBA;FDBA;FDBA;0644 062C 0645;0644 062C 0645; # (ﶺ; ﶺ; ﶺ; لجم; لجم; ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+FDBB;FDBB;FDBB;0643 0645 0645;0643 0645 0645; # (ﶻ; ﶻ; ﶻ; كمم; كمم; ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+FDBC;FDBC;FDBC;0644 062C 0645;0644 062C 0645; # (ﶼ; ﶼ; ﶼ; لجم; لجم; ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+FDBD;FDBD;FDBD;0646 062C 062D;0646 062C 062D; # (ﶽ; ﶽ; ﶽ; نجح; نجح; ) ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+FDBE;FDBE;FDBE;062C 062D 064A;062C 062D 064A; # (ﶾ; ﶾ; ﶾ; جحي; جحي; ) ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+FDBF;FDBF;FDBF;062D 062C 064A;062D 062C 064A; # (ﶿ; ﶿ; ﶿ; حجي; حجي; ) ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+FDC0;FDC0;FDC0;0645 062C 064A;0645 062C 064A; # (ﷀ; ﷀ; ﷀ; مجي; مجي; ) ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+FDC1;FDC1;FDC1;0641 0645 064A;0641 0645 064A; # (ï·; ï·; ï·; Ùمي; Ùمي; ) ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+FDC2;FDC2;FDC2;0628 062D 064A;0628 062D 064A; # (ﷂ; ﷂ; ﷂ; بحي; بحي; ) ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+FDC3;FDC3;FDC3;0643 0645 0645;0643 0645 0645; # (ﷃ; ﷃ; ﷃ; كمم; كمم; ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+FDC4;FDC4;FDC4;0639 062C 0645;0639 062C 0645; # (ﷄ; ﷄ; ﷄ; عجم; عجم; ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+FDC5;FDC5;FDC5;0635 0645 0645;0635 0645 0645; # (ﷅ; ﷅ; ﷅ; صمم; صمم; ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+FDC6;FDC6;FDC6;0633 062E 064A;0633 062E 064A; # (ﷆ; ﷆ; ﷆ; سخي; سخي; ) ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+FDC7;FDC7;FDC7;0646 062C 064A;0646 062C 064A; # (ﷇ; ﷇ; ﷇ; نجي; نجي; ) ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0;FDF0;FDF0;0635 0644 06D2;0635 0644 06D2; # (ﷰ; ﷰ; ﷰ; صلے; صلے; ) ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF1;FDF1;FDF1;0642 0644 06D2;0642 0644 06D2; # (ﷱ; ﷱ; ﷱ; قلے; قلے; ) ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF2;FDF2;FDF2;0627 0644 0644 0647;0627 0644 0644 0647; # (ﷲ; ﷲ; ﷲ; الله; الله; ) ARABIC LIGATURE ALLAH ISOLATED FORM
+FDF3;FDF3;FDF3;0627 0643 0628 0631;0627 0643 0628 0631; # (ﷳ; ﷳ; ﷳ; اكبر; اكبر; ) ARABIC LIGATURE AKBAR ISOLATED FORM
+FDF4;FDF4;FDF4;0645 062D 0645 062F;0645 062D 0645 062F; # (ﷴ; ﷴ; ﷴ; محمد; محمد; ) ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+FDF5;FDF5;FDF5;0635 0644 0639 0645;0635 0644 0639 0645; # (ﷵ; ﷵ; ﷵ; صلعم; صلعم; ) ARABIC LIGATURE SALAM ISOLATED FORM
+FDF6;FDF6;FDF6;0631 0633 0648 0644;0631 0633 0648 0644; # (ﷶ; ﷶ; ﷶ; رسول; رسول; ) ARABIC LIGATURE RASOUL ISOLATED FORM
+FDF7;FDF7;FDF7;0639 0644 064A 0647;0639 0644 064A 0647; # (ﷷ; ﷷ; ﷷ; عليه; عليه; ) ARABIC LIGATURE ALAYHE ISOLATED FORM
+FDF8;FDF8;FDF8;0648 0633 0644 0645;0648 0633 0644 0645; # (ﷸ; ﷸ; ﷸ; وسلم; وسلم; ) ARABIC LIGATURE WASALLAM ISOLATED FORM
+FDF9;FDF9;FDF9;0635 0644 0649;0635 0644 0649; # (ﷹ; ﷹ; ﷹ; صلى; صلى; ) ARABIC LIGATURE SALLA ISOLATED FORM
+FDFA;FDFA;FDFA;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645; # (ﷺ; ﷺ; ﷺ; صلى الله عليه وسلم; صلى الله عليه وسلم; ) ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+FDFB;FDFB;FDFB;062C 0644 0020 062C 0644 0627 0644 0647;062C 0644 0020 062C 0644 0627 0644 0647; # (ﷻ; ﷻ; ﷻ; جل جلاله; جل جلاله; ) ARABIC LIGATURE JALLAJALALOUHOU
+FDFC;FDFC;FDFC;0631 06CC 0627 0644;0631 06CC 0627 0644; # (﷼; ﷼; ﷼; ریال; ریال; ) RIAL SIGN
+FE10;FE10;FE10;002C;002C; # (ï¸; ï¸; ï¸; ,; ,; ) PRESENTATION FORM FOR VERTICAL COMMA
+FE11;FE11;FE11;3001;3001; # (︑; ︑; ︑; ã€; ã€; ) PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
+FE12;FE12;FE12;3002;3002; # (︒; ︒; ︒; 。; 。; ) PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
+FE13;FE13;FE13;003A;003A; # (︓; ︓; ︓; :; :; ) PRESENTATION FORM FOR VERTICAL COLON
+FE14;FE14;FE14;003B;003B; # (︔; ︔; ︔; ;; ;; ) PRESENTATION FORM FOR VERTICAL SEMICOLON
+FE15;FE15;FE15;0021;0021; # (︕; ︕; ︕; !; !; ) PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
+FE16;FE16;FE16;003F;003F; # (︖; ︖; ︖; ?; ?; ) PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17;FE17;FE17;3016;3016; # (︗; ︗; ︗; 〖; 〖; ) PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18;FE18;FE18;3017;3017; # (︘; ︘; ︘; 〗; 〗; ) PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19;FE19;FE19;002E 002E 002E;002E 002E 002E; # (︙; ︙; ︙; ...; ...; ) PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30;FE30;FE30;002E 002E;002E 002E; # (︰; ︰; ︰; ..; ..; ) PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31;FE31;FE31;2014;2014; # (︱; ︱; ︱; —; —; ) PRESENTATION FORM FOR VERTICAL EM DASH
+FE32;FE32;FE32;2013;2013; # (︲; ︲; ︲; –; –; ) PRESENTATION FORM FOR VERTICAL EN DASH
+FE33;FE33;FE33;005F;005F; # (︳; ︳; ︳; _; _; ) PRESENTATION FORM FOR VERTICAL LOW LINE
+FE34;FE34;FE34;005F;005F; # (︴; ︴; ︴; _; _; ) PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35;FE35;FE35;0028;0028; # (︵; ︵; ︵; (; (; ) PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36;FE36;FE36;0029;0029; # (︶; ︶; ︶; ); ); ) PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37;FE37;FE37;007B;007B; # (︷; ︷; ︷; {; {; ) PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38;FE38;FE38;007D;007D; # (︸; ︸; ︸; }; }; ) PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39;FE39;FE39;3014;3014; # (︹; ︹; ︹; 〔; 〔; ) PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A;FE3A;FE3A;3015;3015; # (︺; ︺; ︺; 〕; 〕; ) PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B;FE3B;FE3B;3010;3010; # (︻; ︻; ︻; ã€; ã€; ) PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C;FE3C;FE3C;3011;3011; # (︼; ︼; ︼; 】; 】; ) PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D;FE3D;FE3D;300A;300A; # (︽; ︽; ︽; 《; 《; ) PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E;FE3E;FE3E;300B;300B; # (︾; ︾; ︾; 》; 》; ) PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F;FE3F;FE3F;3008;3008; # (︿; ︿; ︿; 〈; 〈; ) PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40;FE40;FE40;3009;3009; # (﹀; ﹀; ﹀; 〉; 〉; ) PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41;FE41;FE41;300C;300C; # (ï¹; ï¹; ï¹; 「; 「; ) PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42;FE42;FE42;300D;300D; # (﹂; ﹂; ﹂; ã€; ã€; ) PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43;FE43;FE43;300E;300E; # (﹃; ﹃; ﹃; 『; 『; ) PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44;FE44;FE44;300F;300F; # (﹄; ﹄; ﹄; ã€; ã€; ) PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE47;FE47;FE47;005B;005B; # (﹇; ﹇; ﹇; [; [; ) PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48;FE48;FE48;005D;005D; # (﹈; ﹈; ﹈; ]; ]; ) PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49;FE49;FE49;0020 0305;0020 0305; # (﹉; ﹉; ﹉; ◌̅; ◌̅; ) DASHED OVERLINE
+FE4A;FE4A;FE4A;0020 0305;0020 0305; # (﹊; ﹊; ﹊; ◌̅; ◌̅; ) CENTRELINE OVERLINE
+FE4B;FE4B;FE4B;0020 0305;0020 0305; # (﹋; ﹋; ﹋; ◌̅; ◌̅; ) WAVY OVERLINE
+FE4C;FE4C;FE4C;0020 0305;0020 0305; # (﹌; ﹌; ﹌; ◌̅; ◌̅; ) DOUBLE WAVY OVERLINE
+FE4D;FE4D;FE4D;005F;005F; # (ï¹; ï¹; ï¹; _; _; ) DASHED LOW LINE
+FE4E;FE4E;FE4E;005F;005F; # (﹎; ﹎; ﹎; _; _; ) CENTRELINE LOW LINE
+FE4F;FE4F;FE4F;005F;005F; # (ï¹; ï¹; ï¹; _; _; ) WAVY LOW LINE
+FE50;FE50;FE50;002C;002C; # (ï¹; ï¹; ï¹; ,; ,; ) SMALL COMMA
+FE51;FE51;FE51;3001;3001; # (﹑; ﹑; ﹑; ã€; ã€; ) SMALL IDEOGRAPHIC COMMA
+FE52;FE52;FE52;002E;002E; # (ï¹’; ï¹’; ï¹’; .; .; ) SMALL FULL STOP
+FE54;FE54;FE54;003B;003B; # (ï¹”; ï¹”; ï¹”; ;; ;; ) SMALL SEMICOLON
+FE55;FE55;FE55;003A;003A; # (﹕; ﹕; ﹕; :; :; ) SMALL COLON
+FE56;FE56;FE56;003F;003F; # (ï¹–; ï¹–; ï¹–; ?; ?; ) SMALL QUESTION MARK
+FE57;FE57;FE57;0021;0021; # (ï¹—; ï¹—; ï¹—; !; !; ) SMALL EXCLAMATION MARK
+FE58;FE58;FE58;2014;2014; # (﹘; ﹘; ﹘; —; —; ) SMALL EM DASH
+FE59;FE59;FE59;0028;0028; # (ï¹™; ï¹™; ï¹™; (; (; ) SMALL LEFT PARENTHESIS
+FE5A;FE5A;FE5A;0029;0029; # (﹚; ﹚; ﹚; ); ); ) SMALL RIGHT PARENTHESIS
+FE5B;FE5B;FE5B;007B;007B; # (ï¹›; ï¹›; ï¹›; {; {; ) SMALL LEFT CURLY BRACKET
+FE5C;FE5C;FE5C;007D;007D; # (﹜; ﹜; ﹜; }; }; ) SMALL RIGHT CURLY BRACKET
+FE5D;FE5D;FE5D;3014;3014; # (ï¹; ï¹; ï¹; 〔; 〔; ) SMALL LEFT TORTOISE SHELL BRACKET
+FE5E;FE5E;FE5E;3015;3015; # (﹞; ﹞; ﹞; 〕; 〕; ) SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F;FE5F;FE5F;0023;0023; # (﹟; ﹟; ﹟; #; #; ) SMALL NUMBER SIGN
+FE60;FE60;FE60;0026;0026; # (ï¹ ; ï¹ ; ï¹ ; &; &; ) SMALL AMPERSAND
+FE61;FE61;FE61;002A;002A; # (﹡; ﹡; ﹡; *; *; ) SMALL ASTERISK
+FE62;FE62;FE62;002B;002B; # (ï¹¢; ï¹¢; ï¹¢; +; +; ) SMALL PLUS SIGN
+FE63;FE63;FE63;002D;002D; # (ï¹£; ï¹£; ï¹£; -; -; ) SMALL HYPHEN-MINUS
+FE64;FE64;FE64;003C;003C; # (﹤; ﹤; ﹤; <; <; ) SMALL LESS-THAN SIGN
+FE65;FE65;FE65;003E;003E; # (ï¹¥; ï¹¥; ï¹¥; >; >; ) SMALL GREATER-THAN SIGN
+FE66;FE66;FE66;003D;003D; # (﹦; ﹦; ﹦; =; =; ) SMALL EQUALS SIGN
+FE68;FE68;FE68;005C;005C; # (﹨; ﹨; ﹨; \; \; ) SMALL REVERSE SOLIDUS
+FE69;FE69;FE69;0024;0024; # (﹩; ﹩; ﹩; $; $; ) SMALL DOLLAR SIGN
+FE6A;FE6A;FE6A;0025;0025; # (﹪; ﹪; ﹪; %; %; ) SMALL PERCENT SIGN
+FE6B;FE6B;FE6B;0040;0040; # (﹫; ﹫; ﹫; @; @; ) SMALL COMMERCIAL AT
+FE70;FE70;FE70;0020 064B;0020 064B; # (ﹰ; ﹰ; ﹰ; ◌ً; ◌ً; ) ARABIC FATHATAN ISOLATED FORM
+FE71;FE71;FE71;0640 064B;0640 064B; # (ﹱ; ﹱ; ﹱ; ـ◌ً; ـ◌ً; ) ARABIC TATWEEL WITH FATHATAN ABOVE
+FE72;FE72;FE72;0020 064C;0020 064C; # (ﹲ; ﹲ; ﹲ; ◌ٌ; ◌ٌ; ) ARABIC DAMMATAN ISOLATED FORM
+FE74;FE74;FE74;0020 064D;0020 064D; # (ï¹´; ï¹´; ï¹´; â—ŒÙ; â—ŒÙ; ) ARABIC KASRATAN ISOLATED FORM
+FE76;FE76;FE76;0020 064E;0020 064E; # (ﹶ; ﹶ; ﹶ; ◌َ; ◌َ; ) ARABIC FATHA ISOLATED FORM
+FE77;FE77;FE77;0640 064E;0640 064E; # (ﹷ; ﹷ; ﹷ; ـ◌َ; ـ◌َ; ) ARABIC FATHA MEDIAL FORM
+FE78;FE78;FE78;0020 064F;0020 064F; # (ﹸ; ﹸ; ﹸ; â—ŒÙ; â—ŒÙ; ) ARABIC DAMMA ISOLATED FORM
+FE79;FE79;FE79;0640 064F;0640 064F; # (ï¹¹; ï¹¹; ï¹¹; ـ◌Ù; ـ◌Ù; ) ARABIC DAMMA MEDIAL FORM
+FE7A;FE7A;FE7A;0020 0650;0020 0650; # (ﹺ; ﹺ; ﹺ; â—ŒÙ; â—ŒÙ; ) ARABIC KASRA ISOLATED FORM
+FE7B;FE7B;FE7B;0640 0650;0640 0650; # (ï¹»; ï¹»; ï¹»; ـ◌Ù; ـ◌Ù; ) ARABIC KASRA MEDIAL FORM
+FE7C;FE7C;FE7C;0020 0651;0020 0651; # (ﹼ; ﹼ; ﹼ; ◌ّ; ◌ّ; ) ARABIC SHADDA ISOLATED FORM
+FE7D;FE7D;FE7D;0640 0651;0640 0651; # (ﹽ; ﹽ; ﹽ; ـ◌ّ; ـ◌ّ; ) ARABIC SHADDA MEDIAL FORM
+FE7E;FE7E;FE7E;0020 0652;0020 0652; # (ﹾ; ﹾ; ﹾ; ◌ْ; ◌ْ; ) ARABIC SUKUN ISOLATED FORM
+FE7F;FE7F;FE7F;0640 0652;0640 0652; # (ﹿ; ﹿ; ﹿ; ـ◌ْ; ـ◌ْ; ) ARABIC SUKUN MEDIAL FORM
+FE80;FE80;FE80;0621;0621; # (ﺀ; ﺀ; ﺀ; ء; ء; ) ARABIC LETTER HAMZA ISOLATED FORM
+FE81;FE81;FE81;0622;0627 0653; # (ïº; ïº; ïº; Ø¢; ا◌ٓ; ) ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+FE82;FE82;FE82;0622;0627 0653; # (ﺂ; ﺂ; ﺂ; آ; ا◌ٓ; ) ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+FE83;FE83;FE83;0623;0627 0654; # (ﺃ; ﺃ; ﺃ; أ; ا◌ٔ; ) ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+FE84;FE84;FE84;0623;0627 0654; # (ﺄ; ﺄ; ﺄ; أ; ا◌ٔ; ) ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+FE85;FE85;FE85;0624;0648 0654; # (ﺅ; ﺅ; ﺅ; ؤ; و◌ٔ; ) ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+FE86;FE86;FE86;0624;0648 0654; # (ﺆ; ﺆ; ﺆ; ؤ; و◌ٔ; ) ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+FE87;FE87;FE87;0625;0627 0655; # (ﺇ; ﺇ; ﺇ; إ; ا◌ٕ; ) ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
+FE88;FE88;FE88;0625;0627 0655; # (ﺈ; ﺈ; ﺈ; إ; ا◌ٕ; ) ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+FE89;FE89;FE89;0626;064A 0654; # (ﺉ; ﺉ; ﺉ; ئ; ي◌ٔ; ) ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+FE8A;FE8A;FE8A;0626;064A 0654; # (ﺊ; ﺊ; ﺊ; ئ; ي◌ٔ; ) ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+FE8B;FE8B;FE8B;0626;064A 0654; # (ﺋ; ﺋ; ﺋ; ئ; ي◌ٔ; ) ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+FE8C;FE8C;FE8C;0626;064A 0654; # (ﺌ; ﺌ; ﺌ; ئ; ي◌ٔ; ) ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FE8D;FE8D;FE8D;0627;0627; # (ïº; ïº; ïº; ا; ا; ) ARABIC LETTER ALEF ISOLATED FORM
+FE8E;FE8E;FE8E;0627;0627; # (ﺎ; ﺎ; ﺎ; ا; ا; ) ARABIC LETTER ALEF FINAL FORM
+FE8F;FE8F;FE8F;0628;0628; # (ïº; ïº; ïº; ب; ب; ) ARABIC LETTER BEH ISOLATED FORM
+FE90;FE90;FE90;0628;0628; # (ïº; ïº; ïº; ب; ب; ) ARABIC LETTER BEH FINAL FORM
+FE91;FE91;FE91;0628;0628; # (ﺑ; ﺑ; ﺑ; ب; ب; ) ARABIC LETTER BEH INITIAL FORM
+FE92;FE92;FE92;0628;0628; # (ﺒ; ﺒ; ﺒ; ب; ب; ) ARABIC LETTER BEH MEDIAL FORM
+FE93;FE93;FE93;0629;0629; # (ﺓ; ﺓ; ﺓ; ة; ة; ) ARABIC LETTER TEH MARBUTA ISOLATED FORM
+FE94;FE94;FE94;0629;0629; # (ﺔ; ﺔ; ﺔ; ة; ة; ) ARABIC LETTER TEH MARBUTA FINAL FORM
+FE95;FE95;FE95;062A;062A; # (ﺕ; ﺕ; ﺕ; ت; ت; ) ARABIC LETTER TEH ISOLATED FORM
+FE96;FE96;FE96;062A;062A; # (ﺖ; ﺖ; ﺖ; ت; ت; ) ARABIC LETTER TEH FINAL FORM
+FE97;FE97;FE97;062A;062A; # (ﺗ; ﺗ; ﺗ; ت; ت; ) ARABIC LETTER TEH INITIAL FORM
+FE98;FE98;FE98;062A;062A; # (ﺘ; ﺘ; ﺘ; ت; ت; ) ARABIC LETTER TEH MEDIAL FORM
+FE99;FE99;FE99;062B;062B; # (ﺙ; ﺙ; ﺙ; ث; ث; ) ARABIC LETTER THEH ISOLATED FORM
+FE9A;FE9A;FE9A;062B;062B; # (ﺚ; ﺚ; ﺚ; ث; ث; ) ARABIC LETTER THEH FINAL FORM
+FE9B;FE9B;FE9B;062B;062B; # (ﺛ; ﺛ; ﺛ; ث; ث; ) ARABIC LETTER THEH INITIAL FORM
+FE9C;FE9C;FE9C;062B;062B; # (ﺜ; ﺜ; ﺜ; ث; ث; ) ARABIC LETTER THEH MEDIAL FORM
+FE9D;FE9D;FE9D;062C;062C; # (ïº; ïº; ïº; ج; ج; ) ARABIC LETTER JEEM ISOLATED FORM
+FE9E;FE9E;FE9E;062C;062C; # (ﺞ; ﺞ; ﺞ; ج; ج; ) ARABIC LETTER JEEM FINAL FORM
+FE9F;FE9F;FE9F;062C;062C; # (ﺟ; ﺟ; ﺟ; ج; ج; ) ARABIC LETTER JEEM INITIAL FORM
+FEA0;FEA0;FEA0;062C;062C; # (ﺠ; ﺠ; ﺠ; ج; ج; ) ARABIC LETTER JEEM MEDIAL FORM
+FEA1;FEA1;FEA1;062D;062D; # (ﺡ; ﺡ; ﺡ; ح; ح; ) ARABIC LETTER HAH ISOLATED FORM
+FEA2;FEA2;FEA2;062D;062D; # (ﺢ; ﺢ; ﺢ; ح; ح; ) ARABIC LETTER HAH FINAL FORM
+FEA3;FEA3;FEA3;062D;062D; # (ﺣ; ﺣ; ﺣ; ح; ح; ) ARABIC LETTER HAH INITIAL FORM
+FEA4;FEA4;FEA4;062D;062D; # (ﺤ; ﺤ; ﺤ; ح; ح; ) ARABIC LETTER HAH MEDIAL FORM
+FEA5;FEA5;FEA5;062E;062E; # (ﺥ; ﺥ; ﺥ; خ; خ; ) ARABIC LETTER KHAH ISOLATED FORM
+FEA6;FEA6;FEA6;062E;062E; # (ﺦ; ﺦ; ﺦ; خ; خ; ) ARABIC LETTER KHAH FINAL FORM
+FEA7;FEA7;FEA7;062E;062E; # (ﺧ; ﺧ; ﺧ; خ; خ; ) ARABIC LETTER KHAH INITIAL FORM
+FEA8;FEA8;FEA8;062E;062E; # (ﺨ; ﺨ; ﺨ; خ; خ; ) ARABIC LETTER KHAH MEDIAL FORM
+FEA9;FEA9;FEA9;062F;062F; # (ﺩ; ﺩ; ﺩ; د; د; ) ARABIC LETTER DAL ISOLATED FORM
+FEAA;FEAA;FEAA;062F;062F; # (ﺪ; ﺪ; ﺪ; د; د; ) ARABIC LETTER DAL FINAL FORM
+FEAB;FEAB;FEAB;0630;0630; # (ﺫ; ﺫ; ﺫ; ذ; ذ; ) ARABIC LETTER THAL ISOLATED FORM
+FEAC;FEAC;FEAC;0630;0630; # (ﺬ; ﺬ; ﺬ; ذ; ذ; ) ARABIC LETTER THAL FINAL FORM
+FEAD;FEAD;FEAD;0631;0631; # (ﺭ; ﺭ; ﺭ; ر; ر; ) ARABIC LETTER REH ISOLATED FORM
+FEAE;FEAE;FEAE;0631;0631; # (ﺮ; ﺮ; ﺮ; ر; ر; ) ARABIC LETTER REH FINAL FORM
+FEAF;FEAF;FEAF;0632;0632; # (ﺯ; ﺯ; ﺯ; ز; ز; ) ARABIC LETTER ZAIN ISOLATED FORM
+FEB0;FEB0;FEB0;0632;0632; # (ﺰ; ﺰ; ﺰ; ز; ز; ) ARABIC LETTER ZAIN FINAL FORM
+FEB1;FEB1;FEB1;0633;0633; # (ﺱ; ﺱ; ﺱ; س; س; ) ARABIC LETTER SEEN ISOLATED FORM
+FEB2;FEB2;FEB2;0633;0633; # (ﺲ; ﺲ; ﺲ; س; س; ) ARABIC LETTER SEEN FINAL FORM
+FEB3;FEB3;FEB3;0633;0633; # (ﺳ; ﺳ; ﺳ; س; س; ) ARABIC LETTER SEEN INITIAL FORM
+FEB4;FEB4;FEB4;0633;0633; # (ﺴ; ﺴ; ﺴ; س; س; ) ARABIC LETTER SEEN MEDIAL FORM
+FEB5;FEB5;FEB5;0634;0634; # (ﺵ; ﺵ; ﺵ; ش; ش; ) ARABIC LETTER SHEEN ISOLATED FORM
+FEB6;FEB6;FEB6;0634;0634; # (ﺶ; ﺶ; ﺶ; ش; ش; ) ARABIC LETTER SHEEN FINAL FORM
+FEB7;FEB7;FEB7;0634;0634; # (ﺷ; ﺷ; ﺷ; ش; ش; ) ARABIC LETTER SHEEN INITIAL FORM
+FEB8;FEB8;FEB8;0634;0634; # (ﺸ; ﺸ; ﺸ; ش; ش; ) ARABIC LETTER SHEEN MEDIAL FORM
+FEB9;FEB9;FEB9;0635;0635; # (ﺹ; ﺹ; ﺹ; ص; ص; ) ARABIC LETTER SAD ISOLATED FORM
+FEBA;FEBA;FEBA;0635;0635; # (ﺺ; ﺺ; ﺺ; ص; ص; ) ARABIC LETTER SAD FINAL FORM
+FEBB;FEBB;FEBB;0635;0635; # (ﺻ; ﺻ; ﺻ; ص; ص; ) ARABIC LETTER SAD INITIAL FORM
+FEBC;FEBC;FEBC;0635;0635; # (ﺼ; ﺼ; ﺼ; ص; ص; ) ARABIC LETTER SAD MEDIAL FORM
+FEBD;FEBD;FEBD;0636;0636; # (ﺽ; ﺽ; ﺽ; ض; ض; ) ARABIC LETTER DAD ISOLATED FORM
+FEBE;FEBE;FEBE;0636;0636; # (ﺾ; ﺾ; ﺾ; ض; ض; ) ARABIC LETTER DAD FINAL FORM
+FEBF;FEBF;FEBF;0636;0636; # (ﺿ; ﺿ; ﺿ; ض; ض; ) ARABIC LETTER DAD INITIAL FORM
+FEC0;FEC0;FEC0;0636;0636; # (ﻀ; ﻀ; ﻀ; ض; ض; ) ARABIC LETTER DAD MEDIAL FORM
+FEC1;FEC1;FEC1;0637;0637; # (ï»; ï»; ï»; Ø·; Ø·; ) ARABIC LETTER TAH ISOLATED FORM
+FEC2;FEC2;FEC2;0637;0637; # (ﻂ; ﻂ; ﻂ; ط; ط; ) ARABIC LETTER TAH FINAL FORM
+FEC3;FEC3;FEC3;0637;0637; # (ﻃ; ﻃ; ﻃ; ط; ط; ) ARABIC LETTER TAH INITIAL FORM
+FEC4;FEC4;FEC4;0637;0637; # (ﻄ; ﻄ; ﻄ; ط; ط; ) ARABIC LETTER TAH MEDIAL FORM
+FEC5;FEC5;FEC5;0638;0638; # (ﻅ; ﻅ; ﻅ; ظ; ظ; ) ARABIC LETTER ZAH ISOLATED FORM
+FEC6;FEC6;FEC6;0638;0638; # (ﻆ; ﻆ; ﻆ; ظ; ظ; ) ARABIC LETTER ZAH FINAL FORM
+FEC7;FEC7;FEC7;0638;0638; # (ﻇ; ﻇ; ﻇ; ظ; ظ; ) ARABIC LETTER ZAH INITIAL FORM
+FEC8;FEC8;FEC8;0638;0638; # (ﻈ; ﻈ; ﻈ; ظ; ظ; ) ARABIC LETTER ZAH MEDIAL FORM
+FEC9;FEC9;FEC9;0639;0639; # (ﻉ; ﻉ; ﻉ; ع; ع; ) ARABIC LETTER AIN ISOLATED FORM
+FECA;FECA;FECA;0639;0639; # (ﻊ; ﻊ; ﻊ; ع; ع; ) ARABIC LETTER AIN FINAL FORM
+FECB;FECB;FECB;0639;0639; # (ﻋ; ﻋ; ﻋ; ع; ع; ) ARABIC LETTER AIN INITIAL FORM
+FECC;FECC;FECC;0639;0639; # (ﻌ; ﻌ; ﻌ; ع; ع; ) ARABIC LETTER AIN MEDIAL FORM
+FECD;FECD;FECD;063A;063A; # (ï»; ï»; ï»; غ; غ; ) ARABIC LETTER GHAIN ISOLATED FORM
+FECE;FECE;FECE;063A;063A; # (ﻎ; ﻎ; ﻎ; غ; غ; ) ARABIC LETTER GHAIN FINAL FORM
+FECF;FECF;FECF;063A;063A; # (ï»; ï»; ï»; غ; غ; ) ARABIC LETTER GHAIN INITIAL FORM
+FED0;FED0;FED0;063A;063A; # (ï»; ï»; ï»; غ; غ; ) ARABIC LETTER GHAIN MEDIAL FORM
+FED1;FED1;FED1;0641;0641; # (ﻑ; ﻑ; ﻑ; Ù; Ù; ) ARABIC LETTER FEH ISOLATED FORM
+FED2;FED2;FED2;0641;0641; # (ï»’; ï»’; ï»’; Ù; Ù; ) ARABIC LETTER FEH FINAL FORM
+FED3;FED3;FED3;0641;0641; # (ﻓ; ﻓ; ﻓ; Ù; Ù; ) ARABIC LETTER FEH INITIAL FORM
+FED4;FED4;FED4;0641;0641; # (ï»”; ï»”; ï»”; Ù; Ù; ) ARABIC LETTER FEH MEDIAL FORM
+FED5;FED5;FED5;0642;0642; # (ﻕ; ﻕ; ﻕ; ق; ق; ) ARABIC LETTER QAF ISOLATED FORM
+FED6;FED6;FED6;0642;0642; # (ï»–; ï»–; ï»–; Ù‚; Ù‚; ) ARABIC LETTER QAF FINAL FORM
+FED7;FED7;FED7;0642;0642; # (ï»—; ï»—; ï»—; Ù‚; Ù‚; ) ARABIC LETTER QAF INITIAL FORM
+FED8;FED8;FED8;0642;0642; # (ﻘ; ﻘ; ﻘ; ق; ق; ) ARABIC LETTER QAF MEDIAL FORM
+FED9;FED9;FED9;0643;0643; # (ï»™; ï»™; ï»™; Ùƒ; Ùƒ; ) ARABIC LETTER KAF ISOLATED FORM
+FEDA;FEDA;FEDA;0643;0643; # (ﻚ; ﻚ; ﻚ; ك; ك; ) ARABIC LETTER KAF FINAL FORM
+FEDB;FEDB;FEDB;0643;0643; # (ï»›; ï»›; ï»›; Ùƒ; Ùƒ; ) ARABIC LETTER KAF INITIAL FORM
+FEDC;FEDC;FEDC;0643;0643; # (ﻜ; ﻜ; ﻜ; ك; ك; ) ARABIC LETTER KAF MEDIAL FORM
+FEDD;FEDD;FEDD;0644;0644; # (ï»; ï»; ï»; Ù„; Ù„; ) ARABIC LETTER LAM ISOLATED FORM
+FEDE;FEDE;FEDE;0644;0644; # (ﻞ; ﻞ; ﻞ; ل; ل; ) ARABIC LETTER LAM FINAL FORM
+FEDF;FEDF;FEDF;0644;0644; # (ﻟ; ﻟ; ﻟ; ل; ل; ) ARABIC LETTER LAM INITIAL FORM
+FEE0;FEE0;FEE0;0644;0644; # (ï» ; ï» ; ï» ; Ù„; Ù„; ) ARABIC LETTER LAM MEDIAL FORM
+FEE1;FEE1;FEE1;0645;0645; # (ﻡ; ﻡ; ﻡ; م; م; ) ARABIC LETTER MEEM ISOLATED FORM
+FEE2;FEE2;FEE2;0645;0645; # (ﻢ; ﻢ; ﻢ; م; م; ) ARABIC LETTER MEEM FINAL FORM
+FEE3;FEE3;FEE3;0645;0645; # (ﻣ; ﻣ; ﻣ; م; م; ) ARABIC LETTER MEEM INITIAL FORM
+FEE4;FEE4;FEE4;0645;0645; # (ﻤ; ﻤ; ﻤ; م; م; ) ARABIC LETTER MEEM MEDIAL FORM
+FEE5;FEE5;FEE5;0646;0646; # (ﻥ; ﻥ; ﻥ; ن; ن; ) ARABIC LETTER NOON ISOLATED FORM
+FEE6;FEE6;FEE6;0646;0646; # (ﻦ; ﻦ; ﻦ; ن; ن; ) ARABIC LETTER NOON FINAL FORM
+FEE7;FEE7;FEE7;0646;0646; # (ﻧ; ﻧ; ﻧ; ن; ن; ) ARABIC LETTER NOON INITIAL FORM
+FEE8;FEE8;FEE8;0646;0646; # (ﻨ; ﻨ; ﻨ; ن; ن; ) ARABIC LETTER NOON MEDIAL FORM
+FEE9;FEE9;FEE9;0647;0647; # (ﻩ; ﻩ; ﻩ; ه; ه; ) ARABIC LETTER HEH ISOLATED FORM
+FEEA;FEEA;FEEA;0647;0647; # (ﻪ; ﻪ; ﻪ; ه; ه; ) ARABIC LETTER HEH FINAL FORM
+FEEB;FEEB;FEEB;0647;0647; # (ﻫ; ﻫ; ﻫ; ه; ه; ) ARABIC LETTER HEH INITIAL FORM
+FEEC;FEEC;FEEC;0647;0647; # (ﻬ; ﻬ; ﻬ; ه; ه; ) ARABIC LETTER HEH MEDIAL FORM
+FEED;FEED;FEED;0648;0648; # (ï»­; ï»­; ï»­; Ùˆ; Ùˆ; ) ARABIC LETTER WAW ISOLATED FORM
+FEEE;FEEE;FEEE;0648;0648; # (ï»®; ï»®; ï»®; Ùˆ; Ùˆ; ) ARABIC LETTER WAW FINAL FORM
+FEEF;FEEF;FEEF;0649;0649; # (ﻯ; ﻯ; ﻯ; ى; ى; ) ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+FEF0;FEF0;FEF0;0649;0649; # (ï»°; ï»°; ï»°; Ù‰; Ù‰; ) ARABIC LETTER ALEF MAKSURA FINAL FORM
+FEF1;FEF1;FEF1;064A;064A; # (ï»±; ï»±; ï»±; ÙŠ; ÙŠ; ) ARABIC LETTER YEH ISOLATED FORM
+FEF2;FEF2;FEF2;064A;064A; # (ﻲ; ﻲ; ﻲ; ي; ي; ) ARABIC LETTER YEH FINAL FORM
+FEF3;FEF3;FEF3;064A;064A; # (ﻳ; ﻳ; ﻳ; ي; ي; ) ARABIC LETTER YEH INITIAL FORM
+FEF4;FEF4;FEF4;064A;064A; # (ï»´; ï»´; ï»´; ÙŠ; ÙŠ; ) ARABIC LETTER YEH MEDIAL FORM
+FEF5;FEF5;FEF5;0644 0622;0644 0627 0653; # (ﻵ; ﻵ; ﻵ; لآ; لا◌ٓ; ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+FEF6;FEF6;FEF6;0644 0622;0644 0627 0653; # (ﻶ; ﻶ; ﻶ; لآ; لا◌ٓ; ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+FEF7;FEF7;FEF7;0644 0623;0644 0627 0654; # (ﻷ; ﻷ; ﻷ; لأ; لا◌ٔ; ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+FEF8;FEF8;FEF8;0644 0623;0644 0627 0654; # (ﻸ; ﻸ; ﻸ; لأ; لا◌ٔ; ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+FEF9;FEF9;FEF9;0644 0625;0644 0627 0655; # (ﻹ; ﻹ; ﻹ; لإ; لا◌ٕ; ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+FEFA;FEFA;FEFA;0644 0625;0644 0627 0655; # (ﻺ; ﻺ; ﻺ; لإ; لا◌ٕ; ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+FEFB;FEFB;FEFB;0644 0627;0644 0627; # (ﻻ; ﻻ; ﻻ; لا; لا; ) ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+FEFC;FEFC;FEFC;0644 0627;0644 0627; # (ﻼ; ﻼ; ﻼ; لا; لا; ) ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF01;FF01;FF01;0021;0021; # (ï¼; ï¼; ï¼; !; !; ) FULLWIDTH EXCLAMATION MARK
+FF02;FF02;FF02;0022;0022; # ("; "; "; "; "; ) FULLWIDTH QUOTATION MARK
+FF03;FF03;FF03;0023;0023; # (#; #; #; #; #; ) FULLWIDTH NUMBER SIGN
+FF04;FF04;FF04;0024;0024; # ($; $; $; $; $; ) FULLWIDTH DOLLAR SIGN
+FF05;FF05;FF05;0025;0025; # (ï¼…; ï¼…; ï¼…; %; %; ) FULLWIDTH PERCENT SIGN
+FF06;FF06;FF06;0026;0026; # (&; &; &; &; &; ) FULLWIDTH AMPERSAND
+FF07;FF07;FF07;0027;0027; # ('; '; '; '; '; ) FULLWIDTH APOSTROPHE
+FF08;FF08;FF08;0028;0028; # ((; (; (; (; (; ) FULLWIDTH LEFT PARENTHESIS
+FF09;FF09;FF09;0029;0029; # (); ); ); ); ); ) FULLWIDTH RIGHT PARENTHESIS
+FF0A;FF0A;FF0A;002A;002A; # (*; *; *; *; *; ) FULLWIDTH ASTERISK
+FF0B;FF0B;FF0B;002B;002B; # (+; +; +; +; +; ) FULLWIDTH PLUS SIGN
+FF0C;FF0C;FF0C;002C;002C; # (,; ,; ,; ,; ,; ) FULLWIDTH COMMA
+FF0D;FF0D;FF0D;002D;002D; # (ï¼; ï¼; ï¼; -; -; ) FULLWIDTH HYPHEN-MINUS
+FF0E;FF0E;FF0E;002E;002E; # (.; .; .; .; .; ) FULLWIDTH FULL STOP
+FF0F;FF0F;FF0F;002F;002F; # (ï¼; ï¼; ï¼; /; /; ) FULLWIDTH SOLIDUS
+FF10;FF10;FF10;0030;0030; # (ï¼; ï¼; ï¼; 0; 0; ) FULLWIDTH DIGIT ZERO
+FF11;FF11;FF11;0031;0031; # (1; 1; 1; 1; 1; ) FULLWIDTH DIGIT ONE
+FF12;FF12;FF12;0032;0032; # (ï¼’; ï¼’; ï¼’; 2; 2; ) FULLWIDTH DIGIT TWO
+FF13;FF13;FF13;0033;0033; # (3; 3; 3; 3; 3; ) FULLWIDTH DIGIT THREE
+FF14;FF14;FF14;0034;0034; # (ï¼”; ï¼”; ï¼”; 4; 4; ) FULLWIDTH DIGIT FOUR
+FF15;FF15;FF15;0035;0035; # (5; 5; 5; 5; 5; ) FULLWIDTH DIGIT FIVE
+FF16;FF16;FF16;0036;0036; # (ï¼–; ï¼–; ï¼–; 6; 6; ) FULLWIDTH DIGIT SIX
+FF17;FF17;FF17;0037;0037; # (ï¼—; ï¼—; ï¼—; 7; 7; ) FULLWIDTH DIGIT SEVEN
+FF18;FF18;FF18;0038;0038; # (8; 8; 8; 8; 8; ) FULLWIDTH DIGIT EIGHT
+FF19;FF19;FF19;0039;0039; # (ï¼™; ï¼™; ï¼™; 9; 9; ) FULLWIDTH DIGIT NINE
+FF1A;FF1A;FF1A;003A;003A; # (:; :; :; :; :; ) FULLWIDTH COLON
+FF1B;FF1B;FF1B;003B;003B; # (ï¼›; ï¼›; ï¼›; ;; ;; ) FULLWIDTH SEMICOLON
+FF1C;FF1C;FF1C;003C;003C; # (<; <; <; <; <; ) FULLWIDTH LESS-THAN SIGN
+FF1D;FF1D;FF1D;003D;003D; # (ï¼; ï¼; ï¼; =; =; ) FULLWIDTH EQUALS SIGN
+FF1E;FF1E;FF1E;003E;003E; # (>; >; >; >; >; ) FULLWIDTH GREATER-THAN SIGN
+FF1F;FF1F;FF1F;003F;003F; # (?; ?; ?; ?; ?; ) FULLWIDTH QUESTION MARK
+FF20;FF20;FF20;0040;0040; # (ï¼ ; ï¼ ; ï¼ ; @; @; ) FULLWIDTH COMMERCIAL AT
+FF21;FF21;FF21;0041;0041; # (A; A; A; A; A; ) FULLWIDTH LATIN CAPITAL LETTER A
+FF22;FF22;FF22;0042;0042; # (ï¼¢; ï¼¢; ï¼¢; B; B; ) FULLWIDTH LATIN CAPITAL LETTER B
+FF23;FF23;FF23;0043;0043; # (ï¼£; ï¼£; ï¼£; C; C; ) FULLWIDTH LATIN CAPITAL LETTER C
+FF24;FF24;FF24;0044;0044; # (D; D; D; D; D; ) FULLWIDTH LATIN CAPITAL LETTER D
+FF25;FF25;FF25;0045;0045; # (ï¼¥; ï¼¥; ï¼¥; E; E; ) FULLWIDTH LATIN CAPITAL LETTER E
+FF26;FF26;FF26;0046;0046; # (F; F; F; F; F; ) FULLWIDTH LATIN CAPITAL LETTER F
+FF27;FF27;FF27;0047;0047; # (G; G; G; G; G; ) FULLWIDTH LATIN CAPITAL LETTER G
+FF28;FF28;FF28;0048;0048; # (H; H; H; H; H; ) FULLWIDTH LATIN CAPITAL LETTER H
+FF29;FF29;FF29;0049;0049; # (I; I; I; I; I; ) FULLWIDTH LATIN CAPITAL LETTER I
+FF2A;FF2A;FF2A;004A;004A; # (J; J; J; J; J; ) FULLWIDTH LATIN CAPITAL LETTER J
+FF2B;FF2B;FF2B;004B;004B; # (K; K; K; K; K; ) FULLWIDTH LATIN CAPITAL LETTER K
+FF2C;FF2C;FF2C;004C;004C; # (L; L; L; L; L; ) FULLWIDTH LATIN CAPITAL LETTER L
+FF2D;FF2D;FF2D;004D;004D; # (ï¼­; ï¼­; ï¼­; M; M; ) FULLWIDTH LATIN CAPITAL LETTER M
+FF2E;FF2E;FF2E;004E;004E; # (ï¼®; ï¼®; ï¼®; N; N; ) FULLWIDTH LATIN CAPITAL LETTER N
+FF2F;FF2F;FF2F;004F;004F; # (O; O; O; O; O; ) FULLWIDTH LATIN CAPITAL LETTER O
+FF30;FF30;FF30;0050;0050; # (ï¼°; ï¼°; ï¼°; P; P; ) FULLWIDTH LATIN CAPITAL LETTER P
+FF31;FF31;FF31;0051;0051; # (ï¼±; ï¼±; ï¼±; Q; Q; ) FULLWIDTH LATIN CAPITAL LETTER Q
+FF32;FF32;FF32;0052;0052; # (ï¼²; ï¼²; ï¼²; R; R; ) FULLWIDTH LATIN CAPITAL LETTER R
+FF33;FF33;FF33;0053;0053; # (ï¼³; ï¼³; ï¼³; S; S; ) FULLWIDTH LATIN CAPITAL LETTER S
+FF34;FF34;FF34;0054;0054; # (ï¼´; ï¼´; ï¼´; T; T; ) FULLWIDTH LATIN CAPITAL LETTER T
+FF35;FF35;FF35;0055;0055; # (ï¼µ; ï¼µ; ï¼µ; U; U; ) FULLWIDTH LATIN CAPITAL LETTER U
+FF36;FF36;FF36;0056;0056; # (V; V; V; V; V; ) FULLWIDTH LATIN CAPITAL LETTER V
+FF37;FF37;FF37;0057;0057; # (ï¼·; ï¼·; ï¼·; W; W; ) FULLWIDTH LATIN CAPITAL LETTER W
+FF38;FF38;FF38;0058;0058; # (X; X; X; X; X; ) FULLWIDTH LATIN CAPITAL LETTER X
+FF39;FF39;FF39;0059;0059; # (ï¼¹; ï¼¹; ï¼¹; Y; Y; ) FULLWIDTH LATIN CAPITAL LETTER Y
+FF3A;FF3A;FF3A;005A;005A; # (Z; Z; Z; Z; Z; ) FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B;FF3B;FF3B;005B;005B; # (ï¼»; ï¼»; ï¼»; [; [; ) FULLWIDTH LEFT SQUARE BRACKET
+FF3C;FF3C;FF3C;005C;005C; # (ï¼¼; ï¼¼; ï¼¼; \; \; ) FULLWIDTH REVERSE SOLIDUS
+FF3D;FF3D;FF3D;005D;005D; # (ï¼½; ï¼½; ï¼½; ]; ]; ) FULLWIDTH RIGHT SQUARE BRACKET
+FF3E;FF3E;FF3E;005E;005E; # (ï¼¾; ï¼¾; ï¼¾; ^; ^; ) FULLWIDTH CIRCUMFLEX ACCENT
+FF3F;FF3F;FF3F;005F;005F; # (_; _; _; _; _; ) FULLWIDTH LOW LINE
+FF40;FF40;FF40;0060;0060; # (ï½€; ï½€; ï½€; `; `; ) FULLWIDTH GRAVE ACCENT
+FF41;FF41;FF41;0061;0061; # (ï½; ï½; ï½; a; a; ) FULLWIDTH LATIN SMALL LETTER A
+FF42;FF42;FF42;0062;0062; # (b; b; b; b; b; ) FULLWIDTH LATIN SMALL LETTER B
+FF43;FF43;FF43;0063;0063; # (c; c; c; c; c; ) FULLWIDTH LATIN SMALL LETTER C
+FF44;FF44;FF44;0064;0064; # (d; d; d; d; d; ) FULLWIDTH LATIN SMALL LETTER D
+FF45;FF45;FF45;0065;0065; # (ï½…; ï½…; ï½…; e; e; ) FULLWIDTH LATIN SMALL LETTER E
+FF46;FF46;FF46;0066;0066; # (f; f; f; f; f; ) FULLWIDTH LATIN SMALL LETTER F
+FF47;FF47;FF47;0067;0067; # (g; g; g; g; g; ) FULLWIDTH LATIN SMALL LETTER G
+FF48;FF48;FF48;0068;0068; # (h; h; h; h; h; ) FULLWIDTH LATIN SMALL LETTER H
+FF49;FF49;FF49;0069;0069; # (i; i; i; i; i; ) FULLWIDTH LATIN SMALL LETTER I
+FF4A;FF4A;FF4A;006A;006A; # (j; j; j; j; j; ) FULLWIDTH LATIN SMALL LETTER J
+FF4B;FF4B;FF4B;006B;006B; # (k; k; k; k; k; ) FULLWIDTH LATIN SMALL LETTER K
+FF4C;FF4C;FF4C;006C;006C; # (l; l; l; l; l; ) FULLWIDTH LATIN SMALL LETTER L
+FF4D;FF4D;FF4D;006D;006D; # (ï½; ï½; ï½; m; m; ) FULLWIDTH LATIN SMALL LETTER M
+FF4E;FF4E;FF4E;006E;006E; # (n; n; n; n; n; ) FULLWIDTH LATIN SMALL LETTER N
+FF4F;FF4F;FF4F;006F;006F; # (ï½; ï½; ï½; o; o; ) FULLWIDTH LATIN SMALL LETTER O
+FF50;FF50;FF50;0070;0070; # (ï½; ï½; ï½; p; p; ) FULLWIDTH LATIN SMALL LETTER P
+FF51;FF51;FF51;0071;0071; # (q; q; q; q; q; ) FULLWIDTH LATIN SMALL LETTER Q
+FF52;FF52;FF52;0072;0072; # (ï½’; ï½’; ï½’; r; r; ) FULLWIDTH LATIN SMALL LETTER R
+FF53;FF53;FF53;0073;0073; # (s; s; s; s; s; ) FULLWIDTH LATIN SMALL LETTER S
+FF54;FF54;FF54;0074;0074; # (ï½”; ï½”; ï½”; t; t; ) FULLWIDTH LATIN SMALL LETTER T
+FF55;FF55;FF55;0075;0075; # (u; u; u; u; u; ) FULLWIDTH LATIN SMALL LETTER U
+FF56;FF56;FF56;0076;0076; # (ï½–; ï½–; ï½–; v; v; ) FULLWIDTH LATIN SMALL LETTER V
+FF57;FF57;FF57;0077;0077; # (ï½—; ï½—; ï½—; w; w; ) FULLWIDTH LATIN SMALL LETTER W
+FF58;FF58;FF58;0078;0078; # (x; x; x; x; x; ) FULLWIDTH LATIN SMALL LETTER X
+FF59;FF59;FF59;0079;0079; # (ï½™; ï½™; ï½™; y; y; ) FULLWIDTH LATIN SMALL LETTER Y
+FF5A;FF5A;FF5A;007A;007A; # (z; z; z; z; z; ) FULLWIDTH LATIN SMALL LETTER Z
+FF5B;FF5B;FF5B;007B;007B; # (ï½›; ï½›; ï½›; {; {; ) FULLWIDTH LEFT CURLY BRACKET
+FF5C;FF5C;FF5C;007C;007C; # (|; |; |; |; |; ) FULLWIDTH VERTICAL LINE
+FF5D;FF5D;FF5D;007D;007D; # (ï½; ï½; ï½; }; }; ) FULLWIDTH RIGHT CURLY BRACKET
+FF5E;FF5E;FF5E;007E;007E; # (~; ~; ~; ~; ~; ) FULLWIDTH TILDE
+FF5F;FF5F;FF5F;2985;2985; # (⦅; ⦅; ⦅; ⦅; ⦅; ) FULLWIDTH LEFT WHITE PARENTHESIS
+FF60;FF60;FF60;2986;2986; # (⦆; ⦆; ⦆; ⦆; ⦆; ) FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61;FF61;FF61;3002;3002; # (。; 。; 。; 。; 。; ) HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62;FF62;FF62;300C;300C; # (「; 「; 「; 「; 「; ) HALFWIDTH LEFT CORNER BRACKET
+FF63;FF63;FF63;300D;300D; # (ï½£; ï½£; ï½£; ã€; ã€; ) HALFWIDTH RIGHT CORNER BRACKET
+FF64;FF64;FF64;3001;3001; # (、; 、; 、; ã€; ã€; ) HALFWIDTH IDEOGRAPHIC COMMA
+FF65;FF65;FF65;30FB;30FB; # (・; ・; ・; ・; ・; ) HALFWIDTH KATAKANA MIDDLE DOT
+FF66;FF66;FF66;30F2;30F2; # (ヲ; ヲ; ヲ; ヲ; ヲ; ) HALFWIDTH KATAKANA LETTER WO
+FF67;FF67;FF67;30A1;30A1; # (ァ; ァ; ァ; ァ; ァ; ) HALFWIDTH KATAKANA LETTER SMALL A
+FF68;FF68;FF68;30A3;30A3; # (ィ; ィ; ィ; ィ; ィ; ) HALFWIDTH KATAKANA LETTER SMALL I
+FF69;FF69;FF69;30A5;30A5; # (ゥ; ゥ; ゥ; ゥ; ゥ; ) HALFWIDTH KATAKANA LETTER SMALL U
+FF6A;FF6A;FF6A;30A7;30A7; # (ェ; ェ; ェ; ェ; ェ; ) HALFWIDTH KATAKANA LETTER SMALL E
+FF6B;FF6B;FF6B;30A9;30A9; # (ォ; ォ; ォ; ォ; ォ; ) HALFWIDTH KATAKANA LETTER SMALL O
+FF6C;FF6C;FF6C;30E3;30E3; # (ャ; ャ; ャ; ャ; ャ; ) HALFWIDTH KATAKANA LETTER SMALL YA
+FF6D;FF6D;FF6D;30E5;30E5; # (ュ; ュ; ュ; ュ; ュ; ) HALFWIDTH KATAKANA LETTER SMALL YU
+FF6E;FF6E;FF6E;30E7;30E7; # (ョ; ョ; ョ; ョ; ョ; ) HALFWIDTH KATAKANA LETTER SMALL YO
+FF6F;FF6F;FF6F;30C3;30C3; # (ッ; ッ; ッ; ッ; ッ; ) HALFWIDTH KATAKANA LETTER SMALL TU
+FF70;FF70;FF70;30FC;30FC; # (ー; ー; ー; ー; ー; ) HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71;FF71;FF71;30A2;30A2; # (ï½±; ï½±; ï½±; ã‚¢; ã‚¢; ) HALFWIDTH KATAKANA LETTER A
+FF72;FF72;FF72;30A4;30A4; # (イ; イ; イ; イ; イ; ) HALFWIDTH KATAKANA LETTER I
+FF73;FF73;FF73;30A6;30A6; # (ウ; ウ; ウ; ウ; ウ; ) HALFWIDTH KATAKANA LETTER U
+FF74;FF74;FF74;30A8;30A8; # (エ; エ; エ; エ; エ; ) HALFWIDTH KATAKANA LETTER E
+FF75;FF75;FF75;30AA;30AA; # (オ; オ; オ; オ; オ; ) HALFWIDTH KATAKANA LETTER O
+FF76;FF76;FF76;30AB;30AB; # (カ; カ; カ; カ; カ; ) HALFWIDTH KATAKANA LETTER KA
+FF77;FF77;FF77;30AD;30AD; # (ï½·; ï½·; ï½·; ã‚­; ã‚­; ) HALFWIDTH KATAKANA LETTER KI
+FF78;FF78;FF78;30AF;30AF; # (ク; ク; ク; ク; ク; ) HALFWIDTH KATAKANA LETTER KU
+FF79;FF79;FF79;30B1;30B1; # (ケ; ケ; ケ; ケ; ケ; ) HALFWIDTH KATAKANA LETTER KE
+FF7A;FF7A;FF7A;30B3;30B3; # (コ; コ; コ; コ; コ; ) HALFWIDTH KATAKANA LETTER KO
+FF7B;FF7B;FF7B;30B5;30B5; # (サ; サ; サ; サ; サ; ) HALFWIDTH KATAKANA LETTER SA
+FF7C;FF7C;FF7C;30B7;30B7; # (ï½¼; ï½¼; ï½¼; ã‚·; ã‚·; ) HALFWIDTH KATAKANA LETTER SI
+FF7D;FF7D;FF7D;30B9;30B9; # (ス; ス; ス; ス; ス; ) HALFWIDTH KATAKANA LETTER SU
+FF7E;FF7E;FF7E;30BB;30BB; # (ï½¾; ï½¾; ï½¾; ã‚»; ã‚»; ) HALFWIDTH KATAKANA LETTER SE
+FF7F;FF7F;FF7F;30BD;30BD; # (ソ; ソ; ソ; ソ; ソ; ) HALFWIDTH KATAKANA LETTER SO
+FF80;FF80;FF80;30BF;30BF; # (ï¾€; ï¾€; ï¾€; ã‚¿; ã‚¿; ) HALFWIDTH KATAKANA LETTER TA
+FF81;FF81;FF81;30C1;30C1; # (ï¾; ï¾; ï¾; ãƒ; ãƒ; ) HALFWIDTH KATAKANA LETTER TI
+FF82;FF82;FF82;30C4;30C4; # (ツ; ツ; ツ; ツ; ツ; ) HALFWIDTH KATAKANA LETTER TU
+FF83;FF83;FF83;30C6;30C6; # (テ; テ; テ; テ; テ; ) HALFWIDTH KATAKANA LETTER TE
+FF84;FF84;FF84;30C8;30C8; # (ト; ト; ト; ト; ト; ) HALFWIDTH KATAKANA LETTER TO
+FF85;FF85;FF85;30CA;30CA; # (ナ; ナ; ナ; ナ; ナ; ) HALFWIDTH KATAKANA LETTER NA
+FF86;FF86;FF86;30CB;30CB; # (ニ; ニ; ニ; ニ; ニ; ) HALFWIDTH KATAKANA LETTER NI
+FF87;FF87;FF87;30CC;30CC; # (ヌ; ヌ; ヌ; ヌ; ヌ; ) HALFWIDTH KATAKANA LETTER NU
+FF88;FF88;FF88;30CD;30CD; # (ネ; ネ; ネ; ãƒ; ãƒ; ) HALFWIDTH KATAKANA LETTER NE
+FF89;FF89;FF89;30CE;30CE; # (ノ; ノ; ノ; ノ; ノ; ) HALFWIDTH KATAKANA LETTER NO
+FF8A;FF8A;FF8A;30CF;30CF; # (ハ; ハ; ハ; ãƒ; ãƒ; ) HALFWIDTH KATAKANA LETTER HA
+FF8B;FF8B;FF8B;30D2;30D2; # (ヒ; ヒ; ヒ; ヒ; ヒ; ) HALFWIDTH KATAKANA LETTER HI
+FF8C;FF8C;FF8C;30D5;30D5; # (フ; フ; フ; フ; フ; ) HALFWIDTH KATAKANA LETTER HU
+FF8D;FF8D;FF8D;30D8;30D8; # (ï¾; ï¾; ï¾; ヘ; ヘ; ) HALFWIDTH KATAKANA LETTER HE
+FF8E;FF8E;FF8E;30DB;30DB; # (ホ; ホ; ホ; ホ; ホ; ) HALFWIDTH KATAKANA LETTER HO
+FF8F;FF8F;FF8F;30DE;30DE; # (ï¾; ï¾; ï¾; マ; マ; ) HALFWIDTH KATAKANA LETTER MA
+FF90;FF90;FF90;30DF;30DF; # (ï¾; ï¾; ï¾; ミ; ミ; ) HALFWIDTH KATAKANA LETTER MI
+FF91;FF91;FF91;30E0;30E0; # (ム; ム; ム; ム; ム; ) HALFWIDTH KATAKANA LETTER MU
+FF92;FF92;FF92;30E1;30E1; # (メ; メ; メ; メ; メ; ) HALFWIDTH KATAKANA LETTER ME
+FF93;FF93;FF93;30E2;30E2; # (モ; モ; モ; モ; モ; ) HALFWIDTH KATAKANA LETTER MO
+FF94;FF94;FF94;30E4;30E4; # (ヤ; ヤ; ヤ; ヤ; ヤ; ) HALFWIDTH KATAKANA LETTER YA
+FF95;FF95;FF95;30E6;30E6; # (ユ; ユ; ユ; ユ; ユ; ) HALFWIDTH KATAKANA LETTER YU
+FF96;FF96;FF96;30E8;30E8; # (ヨ; ヨ; ヨ; ヨ; ヨ; ) HALFWIDTH KATAKANA LETTER YO
+FF97;FF97;FF97;30E9;30E9; # (ラ; ラ; ラ; ラ; ラ; ) HALFWIDTH KATAKANA LETTER RA
+FF98;FF98;FF98;30EA;30EA; # (リ; リ; リ; リ; リ; ) HALFWIDTH KATAKANA LETTER RI
+FF99;FF99;FF99;30EB;30EB; # (ル; ル; ル; ル; ル; ) HALFWIDTH KATAKANA LETTER RU
+FF9A;FF9A;FF9A;30EC;30EC; # (レ; レ; レ; レ; レ; ) HALFWIDTH KATAKANA LETTER RE
+FF9B;FF9B;FF9B;30ED;30ED; # (ロ; ロ; ロ; ロ; ロ; ) HALFWIDTH KATAKANA LETTER RO
+FF9C;FF9C;FF9C;30EF;30EF; # (ワ; ワ; ワ; ワ; ワ; ) HALFWIDTH KATAKANA LETTER WA
+FF9D;FF9D;FF9D;30F3;30F3; # (ï¾; ï¾; ï¾; ン; ン; ) HALFWIDTH KATAKANA LETTER N
+FF9E;FF9E;FF9E;3099;3099; # (゙; ゙; ゙; ◌゙; ◌゙; ) HALFWIDTH KATAKANA VOICED SOUND MARK
+FF9F;FF9F;FF9F;309A;309A; # (゚; ゚; ゚; ◌゚; ◌゚; ) HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0;FFA0;FFA0;1160;1160; # (ï¾ ; ï¾ ; ï¾ ; á… ; á… ; ) HALFWIDTH HANGUL FILLER
+FFA1;FFA1;FFA1;1100;1100; # (ᄀ; ᄀ; ᄀ; ᄀ; ᄀ; ) HALFWIDTH HANGUL LETTER KIYEOK
+FFA2;FFA2;FFA2;1101;1101; # (ï¾¢; ï¾¢; ï¾¢; á„; á„; ) HALFWIDTH HANGUL LETTER SSANGKIYEOK
+FFA3;FFA3;FFA3;11AA;11AA; # (ᆪ; ᆪ; ᆪ; ᆪ; ᆪ; ) HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+FFA4;FFA4;FFA4;1102;1102; # (ᄂ; ᄂ; ᄂ; ᄂ; ᄂ; ) HALFWIDTH HANGUL LETTER NIEUN
+FFA5;FFA5;FFA5;11AC;11AC; # (ᆬ; ᆬ; ᆬ; ᆬ; ᆬ; ) HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+FFA6;FFA6;FFA6;11AD;11AD; # (ᆭ; ᆭ; ᆭ; ᆭ; ᆭ; ) HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+FFA7;FFA7;FFA7;1103;1103; # (ᄃ; ᄃ; ᄃ; ᄃ; ᄃ; ) HALFWIDTH HANGUL LETTER TIKEUT
+FFA8;FFA8;FFA8;1104;1104; # (ᄄ; ᄄ; ᄄ; ᄄ; ᄄ; ) HALFWIDTH HANGUL LETTER SSANGTIKEUT
+FFA9;FFA9;FFA9;1105;1105; # (ᄅ; ᄅ; ᄅ; ᄅ; ᄅ; ) HALFWIDTH HANGUL LETTER RIEUL
+FFAA;FFAA;FFAA;11B0;11B0; # (ᆰ; ᆰ; ᆰ; ᆰ; ᆰ; ) HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+FFAB;FFAB;FFAB;11B1;11B1; # (ᆱ; ᆱ; ᆱ; ᆱ; ᆱ; ) HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+FFAC;FFAC;FFAC;11B2;11B2; # (ᆲ; ᆲ; ᆲ; ᆲ; ᆲ; ) HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+FFAD;FFAD;FFAD;11B3;11B3; # (ᆳ; ᆳ; ᆳ; ᆳ; ᆳ; ) HALFWIDTH HANGUL LETTER RIEUL-SIOS
+FFAE;FFAE;FFAE;11B4;11B4; # (ᆴ; ᆴ; ᆴ; ᆴ; ᆴ; ) HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+FFAF;FFAF;FFAF;11B5;11B5; # (ᆵ; ᆵ; ᆵ; ᆵ; ᆵ; ) HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+FFB0;FFB0;FFB0;111A;111A; # (ï¾°; ï¾°; ï¾°; á„š; á„š; ) HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+FFB1;FFB1;FFB1;1106;1106; # (ᄆ; ᄆ; ᄆ; ᄆ; ᄆ; ) HALFWIDTH HANGUL LETTER MIEUM
+FFB2;FFB2;FFB2;1107;1107; # (ᄇ; ᄇ; ᄇ; ᄇ; ᄇ; ) HALFWIDTH HANGUL LETTER PIEUP
+FFB3;FFB3;FFB3;1108;1108; # (ᄈ; ᄈ; ᄈ; ᄈ; ᄈ; ) HALFWIDTH HANGUL LETTER SSANGPIEUP
+FFB4;FFB4;FFB4;1121;1121; # (ï¾´; ï¾´; ï¾´; á„¡; á„¡; ) HALFWIDTH HANGUL LETTER PIEUP-SIOS
+FFB5;FFB5;FFB5;1109;1109; # (ᄉ; ᄉ; ᄉ; ᄉ; ᄉ; ) HALFWIDTH HANGUL LETTER SIOS
+FFB6;FFB6;FFB6;110A;110A; # (ᄊ; ᄊ; ᄊ; ᄊ; ᄊ; ) HALFWIDTH HANGUL LETTER SSANGSIOS
+FFB7;FFB7;FFB7;110B;110B; # (ï¾·; ï¾·; ï¾·; á„‹; á„‹; ) HALFWIDTH HANGUL LETTER IEUNG
+FFB8;FFB8;FFB8;110C;110C; # (ᄌ; ᄌ; ᄌ; ᄌ; ᄌ; ) HALFWIDTH HANGUL LETTER CIEUC
+FFB9;FFB9;FFB9;110D;110D; # (ï¾¹; ï¾¹; ï¾¹; á„; á„; ) HALFWIDTH HANGUL LETTER SSANGCIEUC
+FFBA;FFBA;FFBA;110E;110E; # (ᄎ; ᄎ; ᄎ; ᄎ; ᄎ; ) HALFWIDTH HANGUL LETTER CHIEUCH
+FFBB;FFBB;FFBB;110F;110F; # (ï¾»; ï¾»; ï¾»; á„; á„; ) HALFWIDTH HANGUL LETTER KHIEUKH
+FFBC;FFBC;FFBC;1110;1110; # (ï¾¼; ï¾¼; ï¾¼; á„; á„; ) HALFWIDTH HANGUL LETTER THIEUTH
+FFBD;FFBD;FFBD;1111;1111; # (ï¾½; ï¾½; ï¾½; á„‘; á„‘; ) HALFWIDTH HANGUL LETTER PHIEUPH
+FFBE;FFBE;FFBE;1112;1112; # (ï¾¾; ï¾¾; ï¾¾; á„’; á„’; ) HALFWIDTH HANGUL LETTER HIEUH
+FFC2;FFC2;FFC2;1161;1161; # (ï¿‚; ï¿‚; ï¿‚; á…¡; á…¡; ) HALFWIDTH HANGUL LETTER A
+FFC3;FFC3;FFC3;1162;1162; # (ᅢ; ᅢ; ᅢ; ᅢ; ᅢ; ) HALFWIDTH HANGUL LETTER AE
+FFC4;FFC4;FFC4;1163;1163; # (ï¿„; ï¿„; ï¿„; á…£; á…£; ) HALFWIDTH HANGUL LETTER YA
+FFC5;FFC5;FFC5;1164;1164; # (ï¿…; ï¿…; ï¿…; á…¤; á…¤; ) HALFWIDTH HANGUL LETTER YAE
+FFC6;FFC6;FFC6;1165;1165; # (ᅥ; ᅥ; ᅥ; ᅥ; ᅥ; ) HALFWIDTH HANGUL LETTER EO
+FFC7;FFC7;FFC7;1166;1166; # (ᅦ; ᅦ; ᅦ; ᅦ; ᅦ; ) HALFWIDTH HANGUL LETTER E
+FFCA;FFCA;FFCA;1167;1167; # (ï¿Š; ï¿Š; ï¿Š; á…§; á…§; ) HALFWIDTH HANGUL LETTER YEO
+FFCB;FFCB;FFCB;1168;1168; # (ï¿‹; ï¿‹; ï¿‹; á…¨; á…¨; ) HALFWIDTH HANGUL LETTER YE
+FFCC;FFCC;FFCC;1169;1169; # (ᅩ; ᅩ; ᅩ; ᅩ; ᅩ; ) HALFWIDTH HANGUL LETTER O
+FFCD;FFCD;FFCD;116A;116A; # (ï¿; ï¿; ï¿; á…ª; á…ª; ) HALFWIDTH HANGUL LETTER WA
+FFCE;FFCE;FFCE;116B;116B; # (ï¿Ž; ï¿Ž; ï¿Ž; á…«; á…«; ) HALFWIDTH HANGUL LETTER WAE
+FFCF;FFCF;FFCF;116C;116C; # (ï¿; ï¿; ï¿; á…¬; á…¬; ) HALFWIDTH HANGUL LETTER OE
+FFD2;FFD2;FFD2;116D;116D; # (ï¿’; ï¿’; ï¿’; á…­; á…­; ) HALFWIDTH HANGUL LETTER YO
+FFD3;FFD3;FFD3;116E;116E; # (ï¿“; ï¿“; ï¿“; á…®; á…®; ) HALFWIDTH HANGUL LETTER U
+FFD4;FFD4;FFD4;116F;116F; # (ï¿”; ï¿”; ï¿”; á…¯; á…¯; ) HALFWIDTH HANGUL LETTER WEO
+FFD5;FFD5;FFD5;1170;1170; # (ï¿•; ï¿•; ï¿•; á…°; á…°; ) HALFWIDTH HANGUL LETTER WE
+FFD6;FFD6;FFD6;1171;1171; # (ï¿–; ï¿–; ï¿–; á…±; á…±; ) HALFWIDTH HANGUL LETTER WI
+FFD7;FFD7;FFD7;1172;1172; # (ï¿—; ï¿—; ï¿—; á…²; á…²; ) HALFWIDTH HANGUL LETTER YU
+FFDA;FFDA;FFDA;1173;1173; # (ï¿š; ï¿š; ï¿š; á…³; á…³; ) HALFWIDTH HANGUL LETTER EU
+FFDB;FFDB;FFDB;1174;1174; # (ï¿›; ï¿›; ï¿›; á…´; á…´; ) HALFWIDTH HANGUL LETTER YI
+FFDC;FFDC;FFDC;1175;1175; # (ᅵ; ᅵ; ᅵ; ᅵ; ᅵ; ) HALFWIDTH HANGUL LETTER I
+FFE0;FFE0;FFE0;00A2;00A2; # (¢; ¢; ¢; ¢; ¢; ) FULLWIDTH CENT SIGN
+FFE1;FFE1;FFE1;00A3;00A3; # (£; £; £; £; £; ) FULLWIDTH POUND SIGN
+FFE2;FFE2;FFE2;00AC;00AC; # (¬; ¬; ¬; ¬; ¬; ) FULLWIDTH NOT SIGN
+FFE3;FFE3;FFE3;0020 0304;0020 0304; # ( ̄;  ̄;  ̄; ◌̄; ◌̄; ) FULLWIDTH MACRON
+FFE4;FFE4;FFE4;00A6;00A6; # (¦; ¦; ¦; ¦; ¦; ) FULLWIDTH BROKEN BAR
+FFE5;FFE5;FFE5;00A5;00A5; # (¥; ¥; ¥; ¥; ¥; ) FULLWIDTH YEN SIGN
+FFE6;FFE6;FFE6;20A9;20A9; # (₩; ₩; ₩; ₩; ₩; ) FULLWIDTH WON SIGN
+FFE8;FFE8;FFE8;2502;2502; # (│; │; │; │; │; ) HALFWIDTH FORMS LIGHT VERTICAL
+FFE9;FFE9;FFE9;2190;2190; # (ï¿©; ï¿©; ï¿©; â†; â†; ) HALFWIDTH LEFTWARDS ARROW
+FFEA;FFEA;FFEA;2191;2191; # (↑; ↑; ↑; ↑; ↑; ) HALFWIDTH UPWARDS ARROW
+FFEB;FFEB;FFEB;2192;2192; # (→; →; →; →; →; ) HALFWIDTH RIGHTWARDS ARROW
+FFEC;FFEC;FFEC;2193;2193; # (↓; ↓; ↓; ↓; ↓; ) HALFWIDTH DOWNWARDS ARROW
+FFED;FFED;FFED;25A0;25A0; # (ï¿­; ï¿­; ï¿­; â– ; â– ; ) HALFWIDTH BLACK SQUARE
+FFEE;FFEE;FFEE;25CB;25CB; # (ï¿®; ï¿®; ï¿®; â—‹; â—‹; ) HALFWIDTH WHITE CIRCLE
+1109A;1109A;11099 110BA;1109A;11099 110BA; # (𑂚; 𑂚; 𑂙◌𑂺; 𑂚; 𑂙◌𑂺; ) KAITHI LETTER DDDHA
+1109C;1109C;1109B 110BA;1109C;1109B 110BA; # (𑂜; 𑂜; 𑂛◌𑂺; 𑂜; 𑂛◌𑂺; ) KAITHI LETTER RHA
+110AB;110AB;110A5 110BA;110AB;110A5 110BA; # (𑂫; 𑂫; 𑂥◌𑂺; 𑂫; 𑂥◌𑂺; ) KAITHI LETTER VA
+1112E;1112E;11131 11127;1112E;11131 11127; # (◌𑄮; ◌𑄮; ◌𑄱◌𑄧; ◌𑄮; ◌𑄱◌𑄧; ) CHAKMA VOWEL SIGN O
+1112F;1112F;11132 11127;1112F;11132 11127; # (◌𑄯; ◌𑄯; ◌𑄲◌𑄧; ◌𑄯; ◌𑄲◌𑄧; ) CHAKMA VOWEL SIGN AU
+1134B;1134B;11347 1133E;1134B;11347 1133E; # (ð‘‹; ð‘‹; ð‘‡ð‘Œ¾; ð‘‹; ð‘‡ð‘Œ¾; ) GRANTHA VOWEL SIGN OO
+1134C;1134C;11347 11357;1134C;11347 11357; # (ð‘Œ; ð‘Œ; ð‘‡ð‘—; ð‘Œ; ð‘‡ð‘—; ) GRANTHA VOWEL SIGN AU
+114BB;114BB;114B9 114BA;114BB;114B9 114BA; # (𑒻; 𑒻; 𑒹◌𑒺; 𑒻; 𑒹◌𑒺; ) TIRHUTA VOWEL SIGN AI
+114BC;114BC;114B9 114B0;114BC;114B9 114B0; # (𑒼; 𑒼; 𑒼; 𑒼; 𑒼; ) TIRHUTA VOWEL SIGN O
+114BE;114BE;114B9 114BD;114BE;114B9 114BD; # (𑒾; 𑒾; 𑒾; 𑒾; 𑒾; ) TIRHUTA VOWEL SIGN AU
+115BA;115BA;115B8 115AF;115BA;115B8 115AF; # (𑖺; 𑖺; 𑖺; 𑖺; 𑖺; ) SIDDHAM VOWEL SIGN O
+115BB;115BB;115B9 115AF;115BB;115B9 115AF; # (𑖻; 𑖻; 𑖻; 𑖻; 𑖻; ) SIDDHAM VOWEL SIGN AU
+1D15E;1D157 1D165;1D157 1D165;1D157 1D165;1D157 1D165; # (ð…ž; ð…—ð…¥; ð…—ð…¥; ð…—ð…¥; ð…—ð…¥; ) MUSICAL SYMBOL HALF NOTE
+1D15F;1D158 1D165;1D158 1D165;1D158 1D165;1D158 1D165; # (ð…Ÿ; ð…˜ð…¥; ð…˜ð…¥; ð…˜ð…¥; ð…˜ð…¥; ) MUSICAL SYMBOL QUARTER NOTE
+1D160;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E; # (ð… ; ð…˜ð…¥ð…®; ð…˜ð…¥ð…®; ð…˜ð…¥ð…®; ð…˜ð…¥ð…®; ) MUSICAL SYMBOL EIGHTH NOTE
+1D161;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F; # (ð…¡; ð…˜ð…¥ð…¯; ð…˜ð…¥ð…¯; ð…˜ð…¥ð…¯; ð…˜ð…¥ð…¯; ) MUSICAL SYMBOL SIXTEENTH NOTE
+1D162;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170; # (ð…¢; ð…˜ð…¥ð…°; ð…˜ð…¥ð…°; ð…˜ð…¥ð…°; ð…˜ð…¥ð…°; ) MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171; # (ð…£; ð…˜ð…¥ð…±; ð…˜ð…¥ð…±; ð…˜ð…¥ð…±; ð…˜ð…¥ð…±; ) MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172; # (ð…¤; ð…˜ð…¥ð…²; ð…˜ð…¥ð…²; ð…˜ð…¥ð…²; ð…˜ð…¥ð…²; ) MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165; # (ð†»; ð†¹ð…¥; ð†¹ð…¥; ð†¹ð…¥; ð†¹ð…¥; ) MUSICAL SYMBOL MINIMA
+1D1BC;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165; # (ð†¼; ð†ºð…¥; ð†ºð…¥; ð†ºð…¥; ð†ºð…¥; ) MUSICAL SYMBOL MINIMA BLACK
+1D1BD;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E; # (ð†½; ð†¹ð…¥ð…®; ð†¹ð…¥ð…®; ð†¹ð…¥ð…®; ð†¹ð…¥ð…®; ) MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E; # (ð†¾; ð†ºð…¥ð…®; ð†ºð…¥ð…®; ð†ºð…¥ð…®; ð†ºð…¥ð…®; ) MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F; # (ð†¿; ð†¹ð…¥ð…¯; ð†¹ð…¥ð…¯; ð†¹ð…¥ð…¯; ð†¹ð…¥ð…¯; ) MUSICAL SYMBOL FUSA WHITE
+1D1C0;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F; # (ð‡€; ð†ºð…¥ð…¯; ð†ºð…¥ð…¯; ð†ºð…¥ð…¯; ð†ºð…¥ð…¯; ) MUSICAL SYMBOL FUSA BLACK
+1D400;1D400;1D400;0041;0041; # (ð€; ð€; ð€; A; A; ) MATHEMATICAL BOLD CAPITAL A
+1D401;1D401;1D401;0042;0042; # (ð; ð; ð; B; B; ) MATHEMATICAL BOLD CAPITAL B
+1D402;1D402;1D402;0043;0043; # (ð‚; ð‚; ð‚; C; C; ) MATHEMATICAL BOLD CAPITAL C
+1D403;1D403;1D403;0044;0044; # (ðƒ; ðƒ; ðƒ; D; D; ) MATHEMATICAL BOLD CAPITAL D
+1D404;1D404;1D404;0045;0045; # (ð„; ð„; ð„; E; E; ) MATHEMATICAL BOLD CAPITAL E
+1D405;1D405;1D405;0046;0046; # (ð…; ð…; ð…; F; F; ) MATHEMATICAL BOLD CAPITAL F
+1D406;1D406;1D406;0047;0047; # (ð†; ð†; ð†; G; G; ) MATHEMATICAL BOLD CAPITAL G
+1D407;1D407;1D407;0048;0048; # (ð‡; ð‡; ð‡; H; H; ) MATHEMATICAL BOLD CAPITAL H
+1D408;1D408;1D408;0049;0049; # (ðˆ; ðˆ; ðˆ; I; I; ) MATHEMATICAL BOLD CAPITAL I
+1D409;1D409;1D409;004A;004A; # (ð‰; ð‰; ð‰; J; J; ) MATHEMATICAL BOLD CAPITAL J
+1D40A;1D40A;1D40A;004B;004B; # (ðŠ; ðŠ; ðŠ; K; K; ) MATHEMATICAL BOLD CAPITAL K
+1D40B;1D40B;1D40B;004C;004C; # (ð‹; ð‹; ð‹; L; L; ) MATHEMATICAL BOLD CAPITAL L
+1D40C;1D40C;1D40C;004D;004D; # (ðŒ; ðŒ; ðŒ; M; M; ) MATHEMATICAL BOLD CAPITAL M
+1D40D;1D40D;1D40D;004E;004E; # (ð; ð; ð; N; N; ) MATHEMATICAL BOLD CAPITAL N
+1D40E;1D40E;1D40E;004F;004F; # (ðŽ; ðŽ; ðŽ; O; O; ) MATHEMATICAL BOLD CAPITAL O
+1D40F;1D40F;1D40F;0050;0050; # (ð; ð; ð; P; P; ) MATHEMATICAL BOLD CAPITAL P
+1D410;1D410;1D410;0051;0051; # (ð; ð; ð; Q; Q; ) MATHEMATICAL BOLD CAPITAL Q
+1D411;1D411;1D411;0052;0052; # (ð‘; ð‘; ð‘; R; R; ) MATHEMATICAL BOLD CAPITAL R
+1D412;1D412;1D412;0053;0053; # (ð’; ð’; ð’; S; S; ) MATHEMATICAL BOLD CAPITAL S
+1D413;1D413;1D413;0054;0054; # (ð“; ð“; ð“; T; T; ) MATHEMATICAL BOLD CAPITAL T
+1D414;1D414;1D414;0055;0055; # (ð”; ð”; ð”; U; U; ) MATHEMATICAL BOLD CAPITAL U
+1D415;1D415;1D415;0056;0056; # (ð•; ð•; ð•; V; V; ) MATHEMATICAL BOLD CAPITAL V
+1D416;1D416;1D416;0057;0057; # (ð–; ð–; ð–; W; W; ) MATHEMATICAL BOLD CAPITAL W
+1D417;1D417;1D417;0058;0058; # (ð—; ð—; ð—; X; X; ) MATHEMATICAL BOLD CAPITAL X
+1D418;1D418;1D418;0059;0059; # (ð˜; ð˜; ð˜; Y; Y; ) MATHEMATICAL BOLD CAPITAL Y
+1D419;1D419;1D419;005A;005A; # (ð™; ð™; ð™; Z; Z; ) MATHEMATICAL BOLD CAPITAL Z
+1D41A;1D41A;1D41A;0061;0061; # (ðš; ðš; ðš; a; a; ) MATHEMATICAL BOLD SMALL A
+1D41B;1D41B;1D41B;0062;0062; # (ð›; ð›; ð›; b; b; ) MATHEMATICAL BOLD SMALL B
+1D41C;1D41C;1D41C;0063;0063; # (ðœ; ðœ; ðœ; c; c; ) MATHEMATICAL BOLD SMALL C
+1D41D;1D41D;1D41D;0064;0064; # (ð; ð; ð; d; d; ) MATHEMATICAL BOLD SMALL D
+1D41E;1D41E;1D41E;0065;0065; # (ðž; ðž; ðž; e; e; ) MATHEMATICAL BOLD SMALL E
+1D41F;1D41F;1D41F;0066;0066; # (ðŸ; ðŸ; ðŸ; f; f; ) MATHEMATICAL BOLD SMALL F
+1D420;1D420;1D420;0067;0067; # (ð ; ð ; ð ; g; g; ) MATHEMATICAL BOLD SMALL G
+1D421;1D421;1D421;0068;0068; # (ð¡; ð¡; ð¡; h; h; ) MATHEMATICAL BOLD SMALL H
+1D422;1D422;1D422;0069;0069; # (ð¢; ð¢; ð¢; i; i; ) MATHEMATICAL BOLD SMALL I
+1D423;1D423;1D423;006A;006A; # (ð£; ð£; ð£; j; j; ) MATHEMATICAL BOLD SMALL J
+1D424;1D424;1D424;006B;006B; # (ð¤; ð¤; ð¤; k; k; ) MATHEMATICAL BOLD SMALL K
+1D425;1D425;1D425;006C;006C; # (ð¥; ð¥; ð¥; l; l; ) MATHEMATICAL BOLD SMALL L
+1D426;1D426;1D426;006D;006D; # (ð¦; ð¦; ð¦; m; m; ) MATHEMATICAL BOLD SMALL M
+1D427;1D427;1D427;006E;006E; # (ð§; ð§; ð§; n; n; ) MATHEMATICAL BOLD SMALL N
+1D428;1D428;1D428;006F;006F; # (ð¨; ð¨; ð¨; o; o; ) MATHEMATICAL BOLD SMALL O
+1D429;1D429;1D429;0070;0070; # (ð©; ð©; ð©; p; p; ) MATHEMATICAL BOLD SMALL P
+1D42A;1D42A;1D42A;0071;0071; # (ðª; ðª; ðª; q; q; ) MATHEMATICAL BOLD SMALL Q
+1D42B;1D42B;1D42B;0072;0072; # (ð«; ð«; ð«; r; r; ) MATHEMATICAL BOLD SMALL R
+1D42C;1D42C;1D42C;0073;0073; # (ð¬; ð¬; ð¬; s; s; ) MATHEMATICAL BOLD SMALL S
+1D42D;1D42D;1D42D;0074;0074; # (ð­; ð­; ð­; t; t; ) MATHEMATICAL BOLD SMALL T
+1D42E;1D42E;1D42E;0075;0075; # (ð®; ð®; ð®; u; u; ) MATHEMATICAL BOLD SMALL U
+1D42F;1D42F;1D42F;0076;0076; # (ð¯; ð¯; ð¯; v; v; ) MATHEMATICAL BOLD SMALL V
+1D430;1D430;1D430;0077;0077; # (ð°; ð°; ð°; w; w; ) MATHEMATICAL BOLD SMALL W
+1D431;1D431;1D431;0078;0078; # (ð±; ð±; ð±; x; x; ) MATHEMATICAL BOLD SMALL X
+1D432;1D432;1D432;0079;0079; # (ð²; ð²; ð²; y; y; ) MATHEMATICAL BOLD SMALL Y
+1D433;1D433;1D433;007A;007A; # (ð³; ð³; ð³; z; z; ) MATHEMATICAL BOLD SMALL Z
+1D434;1D434;1D434;0041;0041; # (ð´; ð´; ð´; A; A; ) MATHEMATICAL ITALIC CAPITAL A
+1D435;1D435;1D435;0042;0042; # (ðµ; ðµ; ðµ; B; B; ) MATHEMATICAL ITALIC CAPITAL B
+1D436;1D436;1D436;0043;0043; # (ð¶; ð¶; ð¶; C; C; ) MATHEMATICAL ITALIC CAPITAL C
+1D437;1D437;1D437;0044;0044; # (ð·; ð·; ð·; D; D; ) MATHEMATICAL ITALIC CAPITAL D
+1D438;1D438;1D438;0045;0045; # (ð¸; ð¸; ð¸; E; E; ) MATHEMATICAL ITALIC CAPITAL E
+1D439;1D439;1D439;0046;0046; # (ð¹; ð¹; ð¹; F; F; ) MATHEMATICAL ITALIC CAPITAL F
+1D43A;1D43A;1D43A;0047;0047; # (ðº; ðº; ðº; G; G; ) MATHEMATICAL ITALIC CAPITAL G
+1D43B;1D43B;1D43B;0048;0048; # (ð»; ð»; ð»; H; H; ) MATHEMATICAL ITALIC CAPITAL H
+1D43C;1D43C;1D43C;0049;0049; # (ð¼; ð¼; ð¼; I; I; ) MATHEMATICAL ITALIC CAPITAL I
+1D43D;1D43D;1D43D;004A;004A; # (ð½; ð½; ð½; J; J; ) MATHEMATICAL ITALIC CAPITAL J
+1D43E;1D43E;1D43E;004B;004B; # (ð¾; ð¾; ð¾; K; K; ) MATHEMATICAL ITALIC CAPITAL K
+1D43F;1D43F;1D43F;004C;004C; # (ð¿; ð¿; ð¿; L; L; ) MATHEMATICAL ITALIC CAPITAL L
+1D440;1D440;1D440;004D;004D; # (ð‘€; ð‘€; ð‘€; M; M; ) MATHEMATICAL ITALIC CAPITAL M
+1D441;1D441;1D441;004E;004E; # (ð‘; ð‘; ð‘; N; N; ) MATHEMATICAL ITALIC CAPITAL N
+1D442;1D442;1D442;004F;004F; # (ð‘‚; ð‘‚; ð‘‚; O; O; ) MATHEMATICAL ITALIC CAPITAL O
+1D443;1D443;1D443;0050;0050; # (ð‘ƒ; ð‘ƒ; ð‘ƒ; P; P; ) MATHEMATICAL ITALIC CAPITAL P
+1D444;1D444;1D444;0051;0051; # (ð‘„; ð‘„; ð‘„; Q; Q; ) MATHEMATICAL ITALIC CAPITAL Q
+1D445;1D445;1D445;0052;0052; # (ð‘…; ð‘…; ð‘…; R; R; ) MATHEMATICAL ITALIC CAPITAL R
+1D446;1D446;1D446;0053;0053; # (ð‘†; ð‘†; ð‘†; S; S; ) MATHEMATICAL ITALIC CAPITAL S
+1D447;1D447;1D447;0054;0054; # (ð‘‡; ð‘‡; ð‘‡; T; T; ) MATHEMATICAL ITALIC CAPITAL T
+1D448;1D448;1D448;0055;0055; # (ð‘ˆ; ð‘ˆ; ð‘ˆ; U; U; ) MATHEMATICAL ITALIC CAPITAL U
+1D449;1D449;1D449;0056;0056; # (ð‘‰; ð‘‰; ð‘‰; V; V; ) MATHEMATICAL ITALIC CAPITAL V
+1D44A;1D44A;1D44A;0057;0057; # (ð‘Š; ð‘Š; ð‘Š; W; W; ) MATHEMATICAL ITALIC CAPITAL W
+1D44B;1D44B;1D44B;0058;0058; # (ð‘‹; ð‘‹; ð‘‹; X; X; ) MATHEMATICAL ITALIC CAPITAL X
+1D44C;1D44C;1D44C;0059;0059; # (ð‘Œ; ð‘Œ; ð‘Œ; Y; Y; ) MATHEMATICAL ITALIC CAPITAL Y
+1D44D;1D44D;1D44D;005A;005A; # (ð‘; ð‘; ð‘; Z; Z; ) MATHEMATICAL ITALIC CAPITAL Z
+1D44E;1D44E;1D44E;0061;0061; # (ð‘Ž; ð‘Ž; ð‘Ž; a; a; ) MATHEMATICAL ITALIC SMALL A
+1D44F;1D44F;1D44F;0062;0062; # (ð‘; ð‘; ð‘; b; b; ) MATHEMATICAL ITALIC SMALL B
+1D450;1D450;1D450;0063;0063; # (ð‘; ð‘; ð‘; c; c; ) MATHEMATICAL ITALIC SMALL C
+1D451;1D451;1D451;0064;0064; # (ð‘‘; ð‘‘; ð‘‘; d; d; ) MATHEMATICAL ITALIC SMALL D
+1D452;1D452;1D452;0065;0065; # (ð‘’; ð‘’; ð‘’; e; e; ) MATHEMATICAL ITALIC SMALL E
+1D453;1D453;1D453;0066;0066; # (ð‘“; ð‘“; ð‘“; f; f; ) MATHEMATICAL ITALIC SMALL F
+1D454;1D454;1D454;0067;0067; # (ð‘”; ð‘”; ð‘”; g; g; ) MATHEMATICAL ITALIC SMALL G
+1D456;1D456;1D456;0069;0069; # (ð‘–; ð‘–; ð‘–; i; i; ) MATHEMATICAL ITALIC SMALL I
+1D457;1D457;1D457;006A;006A; # (ð‘—; ð‘—; ð‘—; j; j; ) MATHEMATICAL ITALIC SMALL J
+1D458;1D458;1D458;006B;006B; # (ð‘˜; ð‘˜; ð‘˜; k; k; ) MATHEMATICAL ITALIC SMALL K
+1D459;1D459;1D459;006C;006C; # (ð‘™; ð‘™; ð‘™; l; l; ) MATHEMATICAL ITALIC SMALL L
+1D45A;1D45A;1D45A;006D;006D; # (ð‘š; ð‘š; ð‘š; m; m; ) MATHEMATICAL ITALIC SMALL M
+1D45B;1D45B;1D45B;006E;006E; # (ð‘›; ð‘›; ð‘›; n; n; ) MATHEMATICAL ITALIC SMALL N
+1D45C;1D45C;1D45C;006F;006F; # (ð‘œ; ð‘œ; ð‘œ; o; o; ) MATHEMATICAL ITALIC SMALL O
+1D45D;1D45D;1D45D;0070;0070; # (ð‘; ð‘; ð‘; p; p; ) MATHEMATICAL ITALIC SMALL P
+1D45E;1D45E;1D45E;0071;0071; # (ð‘ž; ð‘ž; ð‘ž; q; q; ) MATHEMATICAL ITALIC SMALL Q
+1D45F;1D45F;1D45F;0072;0072; # (ð‘Ÿ; ð‘Ÿ; ð‘Ÿ; r; r; ) MATHEMATICAL ITALIC SMALL R
+1D460;1D460;1D460;0073;0073; # (ð‘ ; ð‘ ; ð‘ ; s; s; ) MATHEMATICAL ITALIC SMALL S
+1D461;1D461;1D461;0074;0074; # (ð‘¡; ð‘¡; ð‘¡; t; t; ) MATHEMATICAL ITALIC SMALL T
+1D462;1D462;1D462;0075;0075; # (ð‘¢; ð‘¢; ð‘¢; u; u; ) MATHEMATICAL ITALIC SMALL U
+1D463;1D463;1D463;0076;0076; # (ð‘£; ð‘£; ð‘£; v; v; ) MATHEMATICAL ITALIC SMALL V
+1D464;1D464;1D464;0077;0077; # (ð‘¤; ð‘¤; ð‘¤; w; w; ) MATHEMATICAL ITALIC SMALL W
+1D465;1D465;1D465;0078;0078; # (ð‘¥; ð‘¥; ð‘¥; x; x; ) MATHEMATICAL ITALIC SMALL X
+1D466;1D466;1D466;0079;0079; # (ð‘¦; ð‘¦; ð‘¦; y; y; ) MATHEMATICAL ITALIC SMALL Y
+1D467;1D467;1D467;007A;007A; # (ð‘§; ð‘§; ð‘§; z; z; ) MATHEMATICAL ITALIC SMALL Z
+1D468;1D468;1D468;0041;0041; # (ð‘¨; ð‘¨; ð‘¨; A; A; ) MATHEMATICAL BOLD ITALIC CAPITAL A
+1D469;1D469;1D469;0042;0042; # (ð‘©; ð‘©; ð‘©; B; B; ) MATHEMATICAL BOLD ITALIC CAPITAL B
+1D46A;1D46A;1D46A;0043;0043; # (ð‘ª; ð‘ª; ð‘ª; C; C; ) MATHEMATICAL BOLD ITALIC CAPITAL C
+1D46B;1D46B;1D46B;0044;0044; # (ð‘«; ð‘«; ð‘«; D; D; ) MATHEMATICAL BOLD ITALIC CAPITAL D
+1D46C;1D46C;1D46C;0045;0045; # (ð‘¬; ð‘¬; ð‘¬; E; E; ) MATHEMATICAL BOLD ITALIC CAPITAL E
+1D46D;1D46D;1D46D;0046;0046; # (ð‘­; ð‘­; ð‘­; F; F; ) MATHEMATICAL BOLD ITALIC CAPITAL F
+1D46E;1D46E;1D46E;0047;0047; # (ð‘®; ð‘®; ð‘®; G; G; ) MATHEMATICAL BOLD ITALIC CAPITAL G
+1D46F;1D46F;1D46F;0048;0048; # (ð‘¯; ð‘¯; ð‘¯; H; H; ) MATHEMATICAL BOLD ITALIC CAPITAL H
+1D470;1D470;1D470;0049;0049; # (ð‘°; ð‘°; ð‘°; I; I; ) MATHEMATICAL BOLD ITALIC CAPITAL I
+1D471;1D471;1D471;004A;004A; # (ð‘±; ð‘±; ð‘±; J; J; ) MATHEMATICAL BOLD ITALIC CAPITAL J
+1D472;1D472;1D472;004B;004B; # (ð‘²; ð‘²; ð‘²; K; K; ) MATHEMATICAL BOLD ITALIC CAPITAL K
+1D473;1D473;1D473;004C;004C; # (ð‘³; ð‘³; ð‘³; L; L; ) MATHEMATICAL BOLD ITALIC CAPITAL L
+1D474;1D474;1D474;004D;004D; # (ð‘´; ð‘´; ð‘´; M; M; ) MATHEMATICAL BOLD ITALIC CAPITAL M
+1D475;1D475;1D475;004E;004E; # (ð‘µ; ð‘µ; ð‘µ; N; N; ) MATHEMATICAL BOLD ITALIC CAPITAL N
+1D476;1D476;1D476;004F;004F; # (ð‘¶; ð‘¶; ð‘¶; O; O; ) MATHEMATICAL BOLD ITALIC CAPITAL O
+1D477;1D477;1D477;0050;0050; # (ð‘·; ð‘·; ð‘·; P; P; ) MATHEMATICAL BOLD ITALIC CAPITAL P
+1D478;1D478;1D478;0051;0051; # (ð‘¸; ð‘¸; ð‘¸; Q; Q; ) MATHEMATICAL BOLD ITALIC CAPITAL Q
+1D479;1D479;1D479;0052;0052; # (ð‘¹; ð‘¹; ð‘¹; R; R; ) MATHEMATICAL BOLD ITALIC CAPITAL R
+1D47A;1D47A;1D47A;0053;0053; # (ð‘º; ð‘º; ð‘º; S; S; ) MATHEMATICAL BOLD ITALIC CAPITAL S
+1D47B;1D47B;1D47B;0054;0054; # (ð‘»; ð‘»; ð‘»; T; T; ) MATHEMATICAL BOLD ITALIC CAPITAL T
+1D47C;1D47C;1D47C;0055;0055; # (ð‘¼; ð‘¼; ð‘¼; U; U; ) MATHEMATICAL BOLD ITALIC CAPITAL U
+1D47D;1D47D;1D47D;0056;0056; # (ð‘½; ð‘½; ð‘½; V; V; ) MATHEMATICAL BOLD ITALIC CAPITAL V
+1D47E;1D47E;1D47E;0057;0057; # (ð‘¾; ð‘¾; ð‘¾; W; W; ) MATHEMATICAL BOLD ITALIC CAPITAL W
+1D47F;1D47F;1D47F;0058;0058; # (ð‘¿; ð‘¿; ð‘¿; X; X; ) MATHEMATICAL BOLD ITALIC CAPITAL X
+1D480;1D480;1D480;0059;0059; # (ð’€; ð’€; ð’€; Y; Y; ) MATHEMATICAL BOLD ITALIC CAPITAL Y
+1D481;1D481;1D481;005A;005A; # (ð’; ð’; ð’; Z; Z; ) MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D482;1D482;1D482;0061;0061; # (ð’‚; ð’‚; ð’‚; a; a; ) MATHEMATICAL BOLD ITALIC SMALL A
+1D483;1D483;1D483;0062;0062; # (ð’ƒ; ð’ƒ; ð’ƒ; b; b; ) MATHEMATICAL BOLD ITALIC SMALL B
+1D484;1D484;1D484;0063;0063; # (ð’„; ð’„; ð’„; c; c; ) MATHEMATICAL BOLD ITALIC SMALL C
+1D485;1D485;1D485;0064;0064; # (ð’…; ð’…; ð’…; d; d; ) MATHEMATICAL BOLD ITALIC SMALL D
+1D486;1D486;1D486;0065;0065; # (ð’†; ð’†; ð’†; e; e; ) MATHEMATICAL BOLD ITALIC SMALL E
+1D487;1D487;1D487;0066;0066; # (ð’‡; ð’‡; ð’‡; f; f; ) MATHEMATICAL BOLD ITALIC SMALL F
+1D488;1D488;1D488;0067;0067; # (ð’ˆ; ð’ˆ; ð’ˆ; g; g; ) MATHEMATICAL BOLD ITALIC SMALL G
+1D489;1D489;1D489;0068;0068; # (ð’‰; ð’‰; ð’‰; h; h; ) MATHEMATICAL BOLD ITALIC SMALL H
+1D48A;1D48A;1D48A;0069;0069; # (ð’Š; ð’Š; ð’Š; i; i; ) MATHEMATICAL BOLD ITALIC SMALL I
+1D48B;1D48B;1D48B;006A;006A; # (ð’‹; ð’‹; ð’‹; j; j; ) MATHEMATICAL BOLD ITALIC SMALL J
+1D48C;1D48C;1D48C;006B;006B; # (ð’Œ; ð’Œ; ð’Œ; k; k; ) MATHEMATICAL BOLD ITALIC SMALL K
+1D48D;1D48D;1D48D;006C;006C; # (ð’; ð’; ð’; l; l; ) MATHEMATICAL BOLD ITALIC SMALL L
+1D48E;1D48E;1D48E;006D;006D; # (ð’Ž; ð’Ž; ð’Ž; m; m; ) MATHEMATICAL BOLD ITALIC SMALL M
+1D48F;1D48F;1D48F;006E;006E; # (ð’; ð’; ð’; n; n; ) MATHEMATICAL BOLD ITALIC SMALL N
+1D490;1D490;1D490;006F;006F; # (ð’; ð’; ð’; o; o; ) MATHEMATICAL BOLD ITALIC SMALL O
+1D491;1D491;1D491;0070;0070; # (ð’‘; ð’‘; ð’‘; p; p; ) MATHEMATICAL BOLD ITALIC SMALL P
+1D492;1D492;1D492;0071;0071; # (ð’’; ð’’; ð’’; q; q; ) MATHEMATICAL BOLD ITALIC SMALL Q
+1D493;1D493;1D493;0072;0072; # (ð’“; ð’“; ð’“; r; r; ) MATHEMATICAL BOLD ITALIC SMALL R
+1D494;1D494;1D494;0073;0073; # (ð’”; ð’”; ð’”; s; s; ) MATHEMATICAL BOLD ITALIC SMALL S
+1D495;1D495;1D495;0074;0074; # (ð’•; ð’•; ð’•; t; t; ) MATHEMATICAL BOLD ITALIC SMALL T
+1D496;1D496;1D496;0075;0075; # (ð’–; ð’–; ð’–; u; u; ) MATHEMATICAL BOLD ITALIC SMALL U
+1D497;1D497;1D497;0076;0076; # (ð’—; ð’—; ð’—; v; v; ) MATHEMATICAL BOLD ITALIC SMALL V
+1D498;1D498;1D498;0077;0077; # (ð’˜; ð’˜; ð’˜; w; w; ) MATHEMATICAL BOLD ITALIC SMALL W
+1D499;1D499;1D499;0078;0078; # (ð’™; ð’™; ð’™; x; x; ) MATHEMATICAL BOLD ITALIC SMALL X
+1D49A;1D49A;1D49A;0079;0079; # (ð’š; ð’š; ð’š; y; y; ) MATHEMATICAL BOLD ITALIC SMALL Y
+1D49B;1D49B;1D49B;007A;007A; # (ð’›; ð’›; ð’›; z; z; ) MATHEMATICAL BOLD ITALIC SMALL Z
+1D49C;1D49C;1D49C;0041;0041; # (ð’œ; ð’œ; ð’œ; A; A; ) MATHEMATICAL SCRIPT CAPITAL A
+1D49E;1D49E;1D49E;0043;0043; # (ð’ž; ð’ž; ð’ž; C; C; ) MATHEMATICAL SCRIPT CAPITAL C
+1D49F;1D49F;1D49F;0044;0044; # (ð’Ÿ; ð’Ÿ; ð’Ÿ; D; D; ) MATHEMATICAL SCRIPT CAPITAL D
+1D4A2;1D4A2;1D4A2;0047;0047; # (ð’¢; ð’¢; ð’¢; G; G; ) MATHEMATICAL SCRIPT CAPITAL G
+1D4A5;1D4A5;1D4A5;004A;004A; # (ð’¥; ð’¥; ð’¥; J; J; ) MATHEMATICAL SCRIPT CAPITAL J
+1D4A6;1D4A6;1D4A6;004B;004B; # (ð’¦; ð’¦; ð’¦; K; K; ) MATHEMATICAL SCRIPT CAPITAL K
+1D4A9;1D4A9;1D4A9;004E;004E; # (ð’©; ð’©; ð’©; N; N; ) MATHEMATICAL SCRIPT CAPITAL N
+1D4AA;1D4AA;1D4AA;004F;004F; # (ð’ª; ð’ª; ð’ª; O; O; ) MATHEMATICAL SCRIPT CAPITAL O
+1D4AB;1D4AB;1D4AB;0050;0050; # (ð’«; ð’«; ð’«; P; P; ) MATHEMATICAL SCRIPT CAPITAL P
+1D4AC;1D4AC;1D4AC;0051;0051; # (ð’¬; ð’¬; ð’¬; Q; Q; ) MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE;1D4AE;1D4AE;0053;0053; # (ð’®; ð’®; ð’®; S; S; ) MATHEMATICAL SCRIPT CAPITAL S
+1D4AF;1D4AF;1D4AF;0054;0054; # (ð’¯; ð’¯; ð’¯; T; T; ) MATHEMATICAL SCRIPT CAPITAL T
+1D4B0;1D4B0;1D4B0;0055;0055; # (ð’°; ð’°; ð’°; U; U; ) MATHEMATICAL SCRIPT CAPITAL U
+1D4B1;1D4B1;1D4B1;0056;0056; # (ð’±; ð’±; ð’±; V; V; ) MATHEMATICAL SCRIPT CAPITAL V
+1D4B2;1D4B2;1D4B2;0057;0057; # (ð’²; ð’²; ð’²; W; W; ) MATHEMATICAL SCRIPT CAPITAL W
+1D4B3;1D4B3;1D4B3;0058;0058; # (ð’³; ð’³; ð’³; X; X; ) MATHEMATICAL SCRIPT CAPITAL X
+1D4B4;1D4B4;1D4B4;0059;0059; # (ð’´; ð’´; ð’´; Y; Y; ) MATHEMATICAL SCRIPT CAPITAL Y
+1D4B5;1D4B5;1D4B5;005A;005A; # (ð’µ; ð’µ; ð’µ; Z; Z; ) MATHEMATICAL SCRIPT CAPITAL Z
+1D4B6;1D4B6;1D4B6;0061;0061; # (ð’¶; ð’¶; ð’¶; a; a; ) MATHEMATICAL SCRIPT SMALL A
+1D4B7;1D4B7;1D4B7;0062;0062; # (ð’·; ð’·; ð’·; b; b; ) MATHEMATICAL SCRIPT SMALL B
+1D4B8;1D4B8;1D4B8;0063;0063; # (ð’¸; ð’¸; ð’¸; c; c; ) MATHEMATICAL SCRIPT SMALL C
+1D4B9;1D4B9;1D4B9;0064;0064; # (ð’¹; ð’¹; ð’¹; d; d; ) MATHEMATICAL SCRIPT SMALL D
+1D4BB;1D4BB;1D4BB;0066;0066; # (ð’»; ð’»; ð’»; f; f; ) MATHEMATICAL SCRIPT SMALL F
+1D4BD;1D4BD;1D4BD;0068;0068; # (ð’½; ð’½; ð’½; h; h; ) MATHEMATICAL SCRIPT SMALL H
+1D4BE;1D4BE;1D4BE;0069;0069; # (ð’¾; ð’¾; ð’¾; i; i; ) MATHEMATICAL SCRIPT SMALL I
+1D4BF;1D4BF;1D4BF;006A;006A; # (ð’¿; ð’¿; ð’¿; j; j; ) MATHEMATICAL SCRIPT SMALL J
+1D4C0;1D4C0;1D4C0;006B;006B; # (ð“€; ð“€; ð“€; k; k; ) MATHEMATICAL SCRIPT SMALL K
+1D4C1;1D4C1;1D4C1;006C;006C; # (ð“; ð“; ð“; l; l; ) MATHEMATICAL SCRIPT SMALL L
+1D4C2;1D4C2;1D4C2;006D;006D; # (ð“‚; ð“‚; ð“‚; m; m; ) MATHEMATICAL SCRIPT SMALL M
+1D4C3;1D4C3;1D4C3;006E;006E; # (ð“ƒ; ð“ƒ; ð“ƒ; n; n; ) MATHEMATICAL SCRIPT SMALL N
+1D4C5;1D4C5;1D4C5;0070;0070; # (ð“…; ð“…; ð“…; p; p; ) MATHEMATICAL SCRIPT SMALL P
+1D4C6;1D4C6;1D4C6;0071;0071; # (ð“†; ð“†; ð“†; q; q; ) MATHEMATICAL SCRIPT SMALL Q
+1D4C7;1D4C7;1D4C7;0072;0072; # (ð“‡; ð“‡; ð“‡; r; r; ) MATHEMATICAL SCRIPT SMALL R
+1D4C8;1D4C8;1D4C8;0073;0073; # (ð“ˆ; ð“ˆ; ð“ˆ; s; s; ) MATHEMATICAL SCRIPT SMALL S
+1D4C9;1D4C9;1D4C9;0074;0074; # (ð“‰; ð“‰; ð“‰; t; t; ) MATHEMATICAL SCRIPT SMALL T
+1D4CA;1D4CA;1D4CA;0075;0075; # (ð“Š; ð“Š; ð“Š; u; u; ) MATHEMATICAL SCRIPT SMALL U
+1D4CB;1D4CB;1D4CB;0076;0076; # (ð“‹; ð“‹; ð“‹; v; v; ) MATHEMATICAL SCRIPT SMALL V
+1D4CC;1D4CC;1D4CC;0077;0077; # (ð“Œ; ð“Œ; ð“Œ; w; w; ) MATHEMATICAL SCRIPT SMALL W
+1D4CD;1D4CD;1D4CD;0078;0078; # (ð“; ð“; ð“; x; x; ) MATHEMATICAL SCRIPT SMALL X
+1D4CE;1D4CE;1D4CE;0079;0079; # (ð“Ž; ð“Ž; ð“Ž; y; y; ) MATHEMATICAL SCRIPT SMALL Y
+1D4CF;1D4CF;1D4CF;007A;007A; # (ð“; ð“; ð“; z; z; ) MATHEMATICAL SCRIPT SMALL Z
+1D4D0;1D4D0;1D4D0;0041;0041; # (ð“; ð“; ð“; A; A; ) MATHEMATICAL BOLD SCRIPT CAPITAL A
+1D4D1;1D4D1;1D4D1;0042;0042; # (ð“‘; ð“‘; ð“‘; B; B; ) MATHEMATICAL BOLD SCRIPT CAPITAL B
+1D4D2;1D4D2;1D4D2;0043;0043; # (ð“’; ð“’; ð“’; C; C; ) MATHEMATICAL BOLD SCRIPT CAPITAL C
+1D4D3;1D4D3;1D4D3;0044;0044; # (ð““; ð““; ð““; D; D; ) MATHEMATICAL BOLD SCRIPT CAPITAL D
+1D4D4;1D4D4;1D4D4;0045;0045; # (ð“”; ð“”; ð“”; E; E; ) MATHEMATICAL BOLD SCRIPT CAPITAL E
+1D4D5;1D4D5;1D4D5;0046;0046; # (ð“•; ð“•; ð“•; F; F; ) MATHEMATICAL BOLD SCRIPT CAPITAL F
+1D4D6;1D4D6;1D4D6;0047;0047; # (ð“–; ð“–; ð“–; G; G; ) MATHEMATICAL BOLD SCRIPT CAPITAL G
+1D4D7;1D4D7;1D4D7;0048;0048; # (ð“—; ð“—; ð“—; H; H; ) MATHEMATICAL BOLD SCRIPT CAPITAL H
+1D4D8;1D4D8;1D4D8;0049;0049; # (ð“˜; ð“˜; ð“˜; I; I; ) MATHEMATICAL BOLD SCRIPT CAPITAL I
+1D4D9;1D4D9;1D4D9;004A;004A; # (ð“™; ð“™; ð“™; J; J; ) MATHEMATICAL BOLD SCRIPT CAPITAL J
+1D4DA;1D4DA;1D4DA;004B;004B; # (ð“š; ð“š; ð“š; K; K; ) MATHEMATICAL BOLD SCRIPT CAPITAL K
+1D4DB;1D4DB;1D4DB;004C;004C; # (ð“›; ð“›; ð“›; L; L; ) MATHEMATICAL BOLD SCRIPT CAPITAL L
+1D4DC;1D4DC;1D4DC;004D;004D; # (ð“œ; ð“œ; ð“œ; M; M; ) MATHEMATICAL BOLD SCRIPT CAPITAL M
+1D4DD;1D4DD;1D4DD;004E;004E; # (ð“; ð“; ð“; N; N; ) MATHEMATICAL BOLD SCRIPT CAPITAL N
+1D4DE;1D4DE;1D4DE;004F;004F; # (ð“ž; ð“ž; ð“ž; O; O; ) MATHEMATICAL BOLD SCRIPT CAPITAL O
+1D4DF;1D4DF;1D4DF;0050;0050; # (ð“Ÿ; ð“Ÿ; ð“Ÿ; P; P; ) MATHEMATICAL BOLD SCRIPT CAPITAL P
+1D4E0;1D4E0;1D4E0;0051;0051; # (ð“ ; ð“ ; ð“ ; Q; Q; ) MATHEMATICAL BOLD SCRIPT CAPITAL Q
+1D4E1;1D4E1;1D4E1;0052;0052; # (ð“¡; ð“¡; ð“¡; R; R; ) MATHEMATICAL BOLD SCRIPT CAPITAL R
+1D4E2;1D4E2;1D4E2;0053;0053; # (ð“¢; ð“¢; ð“¢; S; S; ) MATHEMATICAL BOLD SCRIPT CAPITAL S
+1D4E3;1D4E3;1D4E3;0054;0054; # (ð“£; ð“£; ð“£; T; T; ) MATHEMATICAL BOLD SCRIPT CAPITAL T
+1D4E4;1D4E4;1D4E4;0055;0055; # (ð“¤; ð“¤; ð“¤; U; U; ) MATHEMATICAL BOLD SCRIPT CAPITAL U
+1D4E5;1D4E5;1D4E5;0056;0056; # (ð“¥; ð“¥; ð“¥; V; V; ) MATHEMATICAL BOLD SCRIPT CAPITAL V
+1D4E6;1D4E6;1D4E6;0057;0057; # (ð“¦; ð“¦; ð“¦; W; W; ) MATHEMATICAL BOLD SCRIPT CAPITAL W
+1D4E7;1D4E7;1D4E7;0058;0058; # (ð“§; ð“§; ð“§; X; X; ) MATHEMATICAL BOLD SCRIPT CAPITAL X
+1D4E8;1D4E8;1D4E8;0059;0059; # (ð“¨; ð“¨; ð“¨; Y; Y; ) MATHEMATICAL BOLD SCRIPT CAPITAL Y
+1D4E9;1D4E9;1D4E9;005A;005A; # (ð“©; ð“©; ð“©; Z; Z; ) MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D4EA;1D4EA;1D4EA;0061;0061; # (ð“ª; ð“ª; ð“ª; a; a; ) MATHEMATICAL BOLD SCRIPT SMALL A
+1D4EB;1D4EB;1D4EB;0062;0062; # (ð“«; ð“«; ð“«; b; b; ) MATHEMATICAL BOLD SCRIPT SMALL B
+1D4EC;1D4EC;1D4EC;0063;0063; # (ð“¬; ð“¬; ð“¬; c; c; ) MATHEMATICAL BOLD SCRIPT SMALL C
+1D4ED;1D4ED;1D4ED;0064;0064; # (ð“­; ð“­; ð“­; d; d; ) MATHEMATICAL BOLD SCRIPT SMALL D
+1D4EE;1D4EE;1D4EE;0065;0065; # (ð“®; ð“®; ð“®; e; e; ) MATHEMATICAL BOLD SCRIPT SMALL E
+1D4EF;1D4EF;1D4EF;0066;0066; # (ð“¯; ð“¯; ð“¯; f; f; ) MATHEMATICAL BOLD SCRIPT SMALL F
+1D4F0;1D4F0;1D4F0;0067;0067; # (ð“°; ð“°; ð“°; g; g; ) MATHEMATICAL BOLD SCRIPT SMALL G
+1D4F1;1D4F1;1D4F1;0068;0068; # (ð“±; ð“±; ð“±; h; h; ) MATHEMATICAL BOLD SCRIPT SMALL H
+1D4F2;1D4F2;1D4F2;0069;0069; # (ð“²; ð“²; ð“²; i; i; ) MATHEMATICAL BOLD SCRIPT SMALL I
+1D4F3;1D4F3;1D4F3;006A;006A; # (ð“³; ð“³; ð“³; j; j; ) MATHEMATICAL BOLD SCRIPT SMALL J
+1D4F4;1D4F4;1D4F4;006B;006B; # (ð“´; ð“´; ð“´; k; k; ) MATHEMATICAL BOLD SCRIPT SMALL K
+1D4F5;1D4F5;1D4F5;006C;006C; # (ð“µ; ð“µ; ð“µ; l; l; ) MATHEMATICAL BOLD SCRIPT SMALL L
+1D4F6;1D4F6;1D4F6;006D;006D; # (ð“¶; ð“¶; ð“¶; m; m; ) MATHEMATICAL BOLD SCRIPT SMALL M
+1D4F7;1D4F7;1D4F7;006E;006E; # (ð“·; ð“·; ð“·; n; n; ) MATHEMATICAL BOLD SCRIPT SMALL N
+1D4F8;1D4F8;1D4F8;006F;006F; # (ð“¸; ð“¸; ð“¸; o; o; ) MATHEMATICAL BOLD SCRIPT SMALL O
+1D4F9;1D4F9;1D4F9;0070;0070; # (ð“¹; ð“¹; ð“¹; p; p; ) MATHEMATICAL BOLD SCRIPT SMALL P
+1D4FA;1D4FA;1D4FA;0071;0071; # (ð“º; ð“º; ð“º; q; q; ) MATHEMATICAL BOLD SCRIPT SMALL Q
+1D4FB;1D4FB;1D4FB;0072;0072; # (ð“»; ð“»; ð“»; r; r; ) MATHEMATICAL BOLD SCRIPT SMALL R
+1D4FC;1D4FC;1D4FC;0073;0073; # (ð“¼; ð“¼; ð“¼; s; s; ) MATHEMATICAL BOLD SCRIPT SMALL S
+1D4FD;1D4FD;1D4FD;0074;0074; # (ð“½; ð“½; ð“½; t; t; ) MATHEMATICAL BOLD SCRIPT SMALL T
+1D4FE;1D4FE;1D4FE;0075;0075; # (ð“¾; ð“¾; ð“¾; u; u; ) MATHEMATICAL BOLD SCRIPT SMALL U
+1D4FF;1D4FF;1D4FF;0076;0076; # (ð“¿; ð“¿; ð“¿; v; v; ) MATHEMATICAL BOLD SCRIPT SMALL V
+1D500;1D500;1D500;0077;0077; # (ð”€; ð”€; ð”€; w; w; ) MATHEMATICAL BOLD SCRIPT SMALL W
+1D501;1D501;1D501;0078;0078; # (ð”; ð”; ð”; x; x; ) MATHEMATICAL BOLD SCRIPT SMALL X
+1D502;1D502;1D502;0079;0079; # (ð”‚; ð”‚; ð”‚; y; y; ) MATHEMATICAL BOLD SCRIPT SMALL Y
+1D503;1D503;1D503;007A;007A; # (ð”ƒ; ð”ƒ; ð”ƒ; z; z; ) MATHEMATICAL BOLD SCRIPT SMALL Z
+1D504;1D504;1D504;0041;0041; # (ð”„; ð”„; ð”„; A; A; ) MATHEMATICAL FRAKTUR CAPITAL A
+1D505;1D505;1D505;0042;0042; # (ð”…; ð”…; ð”…; B; B; ) MATHEMATICAL FRAKTUR CAPITAL B
+1D507;1D507;1D507;0044;0044; # (ð”‡; ð”‡; ð”‡; D; D; ) MATHEMATICAL FRAKTUR CAPITAL D
+1D508;1D508;1D508;0045;0045; # (ð”ˆ; ð”ˆ; ð”ˆ; E; E; ) MATHEMATICAL FRAKTUR CAPITAL E
+1D509;1D509;1D509;0046;0046; # (ð”‰; ð”‰; ð”‰; F; F; ) MATHEMATICAL FRAKTUR CAPITAL F
+1D50A;1D50A;1D50A;0047;0047; # (ð”Š; ð”Š; ð”Š; G; G; ) MATHEMATICAL FRAKTUR CAPITAL G
+1D50D;1D50D;1D50D;004A;004A; # (ð”; ð”; ð”; J; J; ) MATHEMATICAL FRAKTUR CAPITAL J
+1D50E;1D50E;1D50E;004B;004B; # (ð”Ž; ð”Ž; ð”Ž; K; K; ) MATHEMATICAL FRAKTUR CAPITAL K
+1D50F;1D50F;1D50F;004C;004C; # (ð”; ð”; ð”; L; L; ) MATHEMATICAL FRAKTUR CAPITAL L
+1D510;1D510;1D510;004D;004D; # (ð”; ð”; ð”; M; M; ) MATHEMATICAL FRAKTUR CAPITAL M
+1D511;1D511;1D511;004E;004E; # (ð”‘; ð”‘; ð”‘; N; N; ) MATHEMATICAL FRAKTUR CAPITAL N
+1D512;1D512;1D512;004F;004F; # (ð”’; ð”’; ð”’; O; O; ) MATHEMATICAL FRAKTUR CAPITAL O
+1D513;1D513;1D513;0050;0050; # (ð”“; ð”“; ð”“; P; P; ) MATHEMATICAL FRAKTUR CAPITAL P
+1D514;1D514;1D514;0051;0051; # (ð””; ð””; ð””; Q; Q; ) MATHEMATICAL FRAKTUR CAPITAL Q
+1D516;1D516;1D516;0053;0053; # (ð”–; ð”–; ð”–; S; S; ) MATHEMATICAL FRAKTUR CAPITAL S
+1D517;1D517;1D517;0054;0054; # (ð”—; ð”—; ð”—; T; T; ) MATHEMATICAL FRAKTUR CAPITAL T
+1D518;1D518;1D518;0055;0055; # (ð”˜; ð”˜; ð”˜; U; U; ) MATHEMATICAL FRAKTUR CAPITAL U
+1D519;1D519;1D519;0056;0056; # (ð”™; ð”™; ð”™; V; V; ) MATHEMATICAL FRAKTUR CAPITAL V
+1D51A;1D51A;1D51A;0057;0057; # (ð”š; ð”š; ð”š; W; W; ) MATHEMATICAL FRAKTUR CAPITAL W
+1D51B;1D51B;1D51B;0058;0058; # (ð”›; ð”›; ð”›; X; X; ) MATHEMATICAL FRAKTUR CAPITAL X
+1D51C;1D51C;1D51C;0059;0059; # (ð”œ; ð”œ; ð”œ; Y; Y; ) MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E;1D51E;1D51E;0061;0061; # (ð”ž; ð”ž; ð”ž; a; a; ) MATHEMATICAL FRAKTUR SMALL A
+1D51F;1D51F;1D51F;0062;0062; # (ð”Ÿ; ð”Ÿ; ð”Ÿ; b; b; ) MATHEMATICAL FRAKTUR SMALL B
+1D520;1D520;1D520;0063;0063; # (ð” ; ð” ; ð” ; c; c; ) MATHEMATICAL FRAKTUR SMALL C
+1D521;1D521;1D521;0064;0064; # (ð”¡; ð”¡; ð”¡; d; d; ) MATHEMATICAL FRAKTUR SMALL D
+1D522;1D522;1D522;0065;0065; # (ð”¢; ð”¢; ð”¢; e; e; ) MATHEMATICAL FRAKTUR SMALL E
+1D523;1D523;1D523;0066;0066; # (ð”£; ð”£; ð”£; f; f; ) MATHEMATICAL FRAKTUR SMALL F
+1D524;1D524;1D524;0067;0067; # (ð”¤; ð”¤; ð”¤; g; g; ) MATHEMATICAL FRAKTUR SMALL G
+1D525;1D525;1D525;0068;0068; # (ð”¥; ð”¥; ð”¥; h; h; ) MATHEMATICAL FRAKTUR SMALL H
+1D526;1D526;1D526;0069;0069; # (ð”¦; ð”¦; ð”¦; i; i; ) MATHEMATICAL FRAKTUR SMALL I
+1D527;1D527;1D527;006A;006A; # (ð”§; ð”§; ð”§; j; j; ) MATHEMATICAL FRAKTUR SMALL J
+1D528;1D528;1D528;006B;006B; # (ð”¨; ð”¨; ð”¨; k; k; ) MATHEMATICAL FRAKTUR SMALL K
+1D529;1D529;1D529;006C;006C; # (ð”©; ð”©; ð”©; l; l; ) MATHEMATICAL FRAKTUR SMALL L
+1D52A;1D52A;1D52A;006D;006D; # (ð”ª; ð”ª; ð”ª; m; m; ) MATHEMATICAL FRAKTUR SMALL M
+1D52B;1D52B;1D52B;006E;006E; # (ð”«; ð”«; ð”«; n; n; ) MATHEMATICAL FRAKTUR SMALL N
+1D52C;1D52C;1D52C;006F;006F; # (ð”¬; ð”¬; ð”¬; o; o; ) MATHEMATICAL FRAKTUR SMALL O
+1D52D;1D52D;1D52D;0070;0070; # (ð”­; ð”­; ð”­; p; p; ) MATHEMATICAL FRAKTUR SMALL P
+1D52E;1D52E;1D52E;0071;0071; # (ð”®; ð”®; ð”®; q; q; ) MATHEMATICAL FRAKTUR SMALL Q
+1D52F;1D52F;1D52F;0072;0072; # (ð”¯; ð”¯; ð”¯; r; r; ) MATHEMATICAL FRAKTUR SMALL R
+1D530;1D530;1D530;0073;0073; # (ð”°; ð”°; ð”°; s; s; ) MATHEMATICAL FRAKTUR SMALL S
+1D531;1D531;1D531;0074;0074; # (ð”±; ð”±; ð”±; t; t; ) MATHEMATICAL FRAKTUR SMALL T
+1D532;1D532;1D532;0075;0075; # (ð”²; ð”²; ð”²; u; u; ) MATHEMATICAL FRAKTUR SMALL U
+1D533;1D533;1D533;0076;0076; # (ð”³; ð”³; ð”³; v; v; ) MATHEMATICAL FRAKTUR SMALL V
+1D534;1D534;1D534;0077;0077; # (ð”´; ð”´; ð”´; w; w; ) MATHEMATICAL FRAKTUR SMALL W
+1D535;1D535;1D535;0078;0078; # (ð”µ; ð”µ; ð”µ; x; x; ) MATHEMATICAL FRAKTUR SMALL X
+1D536;1D536;1D536;0079;0079; # (ð”¶; ð”¶; ð”¶; y; y; ) MATHEMATICAL FRAKTUR SMALL Y
+1D537;1D537;1D537;007A;007A; # (ð”·; ð”·; ð”·; z; z; ) MATHEMATICAL FRAKTUR SMALL Z
+1D538;1D538;1D538;0041;0041; # (ð”¸; ð”¸; ð”¸; A; A; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+1D539;1D539;1D539;0042;0042; # (ð”¹; ð”¹; ð”¹; B; B; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B;1D53B;1D53B;0044;0044; # (ð”»; ð”»; ð”»; D; D; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+1D53C;1D53C;1D53C;0045;0045; # (ð”¼; ð”¼; ð”¼; E; E; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+1D53D;1D53D;1D53D;0046;0046; # (ð”½; ð”½; ð”½; F; F; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+1D53E;1D53E;1D53E;0047;0047; # (ð”¾; ð”¾; ð”¾; G; G; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540;1D540;1D540;0049;0049; # (ð•€; ð•€; ð•€; I; I; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+1D541;1D541;1D541;004A;004A; # (ð•; ð•; ð•; J; J; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+1D542;1D542;1D542;004B;004B; # (ð•‚; ð•‚; ð•‚; K; K; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+1D543;1D543;1D543;004C;004C; # (ð•ƒ; ð•ƒ; ð•ƒ; L; L; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+1D544;1D544;1D544;004D;004D; # (ð•„; ð•„; ð•„; M; M; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546;1D546;1D546;004F;004F; # (ð•†; ð•†; ð•†; O; O; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A;1D54A;1D54A;0053;0053; # (ð•Š; ð•Š; ð•Š; S; S; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+1D54B;1D54B;1D54B;0054;0054; # (ð•‹; ð•‹; ð•‹; T; T; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+1D54C;1D54C;1D54C;0055;0055; # (ð•Œ; ð•Œ; ð•Œ; U; U; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+1D54D;1D54D;1D54D;0056;0056; # (ð•; ð•; ð•; V; V; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+1D54E;1D54E;1D54E;0057;0057; # (ð•Ž; ð•Ž; ð•Ž; W; W; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+1D54F;1D54F;1D54F;0058;0058; # (ð•; ð•; ð•; X; X; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+1D550;1D550;1D550;0059;0059; # (ð•; ð•; ð•; Y; Y; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552;1D552;1D552;0061;0061; # (ð•’; ð•’; ð•’; a; a; ) MATHEMATICAL DOUBLE-STRUCK SMALL A
+1D553;1D553;1D553;0062;0062; # (ð•“; ð•“; ð•“; b; b; ) MATHEMATICAL DOUBLE-STRUCK SMALL B
+1D554;1D554;1D554;0063;0063; # (ð•”; ð•”; ð•”; c; c; ) MATHEMATICAL DOUBLE-STRUCK SMALL C
+1D555;1D555;1D555;0064;0064; # (ð••; ð••; ð••; d; d; ) MATHEMATICAL DOUBLE-STRUCK SMALL D
+1D556;1D556;1D556;0065;0065; # (ð•–; ð•–; ð•–; e; e; ) MATHEMATICAL DOUBLE-STRUCK SMALL E
+1D557;1D557;1D557;0066;0066; # (ð•—; ð•—; ð•—; f; f; ) MATHEMATICAL DOUBLE-STRUCK SMALL F
+1D558;1D558;1D558;0067;0067; # (ð•˜; ð•˜; ð•˜; g; g; ) MATHEMATICAL DOUBLE-STRUCK SMALL G
+1D559;1D559;1D559;0068;0068; # (ð•™; ð•™; ð•™; h; h; ) MATHEMATICAL DOUBLE-STRUCK SMALL H
+1D55A;1D55A;1D55A;0069;0069; # (ð•š; ð•š; ð•š; i; i; ) MATHEMATICAL DOUBLE-STRUCK SMALL I
+1D55B;1D55B;1D55B;006A;006A; # (ð•›; ð•›; ð•›; j; j; ) MATHEMATICAL DOUBLE-STRUCK SMALL J
+1D55C;1D55C;1D55C;006B;006B; # (ð•œ; ð•œ; ð•œ; k; k; ) MATHEMATICAL DOUBLE-STRUCK SMALL K
+1D55D;1D55D;1D55D;006C;006C; # (ð•; ð•; ð•; l; l; ) MATHEMATICAL DOUBLE-STRUCK SMALL L
+1D55E;1D55E;1D55E;006D;006D; # (ð•ž; ð•ž; ð•ž; m; m; ) MATHEMATICAL DOUBLE-STRUCK SMALL M
+1D55F;1D55F;1D55F;006E;006E; # (ð•Ÿ; ð•Ÿ; ð•Ÿ; n; n; ) MATHEMATICAL DOUBLE-STRUCK SMALL N
+1D560;1D560;1D560;006F;006F; # (ð• ; ð• ; ð• ; o; o; ) MATHEMATICAL DOUBLE-STRUCK SMALL O
+1D561;1D561;1D561;0070;0070; # (ð•¡; ð•¡; ð•¡; p; p; ) MATHEMATICAL DOUBLE-STRUCK SMALL P
+1D562;1D562;1D562;0071;0071; # (ð•¢; ð•¢; ð•¢; q; q; ) MATHEMATICAL DOUBLE-STRUCK SMALL Q
+1D563;1D563;1D563;0072;0072; # (ð•£; ð•£; ð•£; r; r; ) MATHEMATICAL DOUBLE-STRUCK SMALL R
+1D564;1D564;1D564;0073;0073; # (ð•¤; ð•¤; ð•¤; s; s; ) MATHEMATICAL DOUBLE-STRUCK SMALL S
+1D565;1D565;1D565;0074;0074; # (ð•¥; ð•¥; ð•¥; t; t; ) MATHEMATICAL DOUBLE-STRUCK SMALL T
+1D566;1D566;1D566;0075;0075; # (ð•¦; ð•¦; ð•¦; u; u; ) MATHEMATICAL DOUBLE-STRUCK SMALL U
+1D567;1D567;1D567;0076;0076; # (ð•§; ð•§; ð•§; v; v; ) MATHEMATICAL DOUBLE-STRUCK SMALL V
+1D568;1D568;1D568;0077;0077; # (ð•¨; ð•¨; ð•¨; w; w; ) MATHEMATICAL DOUBLE-STRUCK SMALL W
+1D569;1D569;1D569;0078;0078; # (ð•©; ð•©; ð•©; x; x; ) MATHEMATICAL DOUBLE-STRUCK SMALL X
+1D56A;1D56A;1D56A;0079;0079; # (ð•ª; ð•ª; ð•ª; y; y; ) MATHEMATICAL DOUBLE-STRUCK SMALL Y
+1D56B;1D56B;1D56B;007A;007A; # (ð•«; ð•«; ð•«; z; z; ) MATHEMATICAL DOUBLE-STRUCK SMALL Z
+1D56C;1D56C;1D56C;0041;0041; # (ð•¬; ð•¬; ð•¬; A; A; ) MATHEMATICAL BOLD FRAKTUR CAPITAL A
+1D56D;1D56D;1D56D;0042;0042; # (ð•­; ð•­; ð•­; B; B; ) MATHEMATICAL BOLD FRAKTUR CAPITAL B
+1D56E;1D56E;1D56E;0043;0043; # (ð•®; ð•®; ð•®; C; C; ) MATHEMATICAL BOLD FRAKTUR CAPITAL C
+1D56F;1D56F;1D56F;0044;0044; # (ð•¯; ð•¯; ð•¯; D; D; ) MATHEMATICAL BOLD FRAKTUR CAPITAL D
+1D570;1D570;1D570;0045;0045; # (ð•°; ð•°; ð•°; E; E; ) MATHEMATICAL BOLD FRAKTUR CAPITAL E
+1D571;1D571;1D571;0046;0046; # (ð•±; ð•±; ð•±; F; F; ) MATHEMATICAL BOLD FRAKTUR CAPITAL F
+1D572;1D572;1D572;0047;0047; # (ð•²; ð•²; ð•²; G; G; ) MATHEMATICAL BOLD FRAKTUR CAPITAL G
+1D573;1D573;1D573;0048;0048; # (ð•³; ð•³; ð•³; H; H; ) MATHEMATICAL BOLD FRAKTUR CAPITAL H
+1D574;1D574;1D574;0049;0049; # (ð•´; ð•´; ð•´; I; I; ) MATHEMATICAL BOLD FRAKTUR CAPITAL I
+1D575;1D575;1D575;004A;004A; # (ð•µ; ð•µ; ð•µ; J; J; ) MATHEMATICAL BOLD FRAKTUR CAPITAL J
+1D576;1D576;1D576;004B;004B; # (ð•¶; ð•¶; ð•¶; K; K; ) MATHEMATICAL BOLD FRAKTUR CAPITAL K
+1D577;1D577;1D577;004C;004C; # (ð•·; ð•·; ð•·; L; L; ) MATHEMATICAL BOLD FRAKTUR CAPITAL L
+1D578;1D578;1D578;004D;004D; # (ð•¸; ð•¸; ð•¸; M; M; ) MATHEMATICAL BOLD FRAKTUR CAPITAL M
+1D579;1D579;1D579;004E;004E; # (ð•¹; ð•¹; ð•¹; N; N; ) MATHEMATICAL BOLD FRAKTUR CAPITAL N
+1D57A;1D57A;1D57A;004F;004F; # (ð•º; ð•º; ð•º; O; O; ) MATHEMATICAL BOLD FRAKTUR CAPITAL O
+1D57B;1D57B;1D57B;0050;0050; # (ð•»; ð•»; ð•»; P; P; ) MATHEMATICAL BOLD FRAKTUR CAPITAL P
+1D57C;1D57C;1D57C;0051;0051; # (ð•¼; ð•¼; ð•¼; Q; Q; ) MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+1D57D;1D57D;1D57D;0052;0052; # (ð•½; ð•½; ð•½; R; R; ) MATHEMATICAL BOLD FRAKTUR CAPITAL R
+1D57E;1D57E;1D57E;0053;0053; # (ð•¾; ð•¾; ð•¾; S; S; ) MATHEMATICAL BOLD FRAKTUR CAPITAL S
+1D57F;1D57F;1D57F;0054;0054; # (ð•¿; ð•¿; ð•¿; T; T; ) MATHEMATICAL BOLD FRAKTUR CAPITAL T
+1D580;1D580;1D580;0055;0055; # (ð–€; ð–€; ð–€; U; U; ) MATHEMATICAL BOLD FRAKTUR CAPITAL U
+1D581;1D581;1D581;0056;0056; # (ð–; ð–; ð–; V; V; ) MATHEMATICAL BOLD FRAKTUR CAPITAL V
+1D582;1D582;1D582;0057;0057; # (ð–‚; ð–‚; ð–‚; W; W; ) MATHEMATICAL BOLD FRAKTUR CAPITAL W
+1D583;1D583;1D583;0058;0058; # (ð–ƒ; ð–ƒ; ð–ƒ; X; X; ) MATHEMATICAL BOLD FRAKTUR CAPITAL X
+1D584;1D584;1D584;0059;0059; # (ð–„; ð–„; ð–„; Y; Y; ) MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+1D585;1D585;1D585;005A;005A; # (ð–…; ð–…; ð–…; Z; Z; ) MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D586;1D586;1D586;0061;0061; # (ð–†; ð–†; ð–†; a; a; ) MATHEMATICAL BOLD FRAKTUR SMALL A
+1D587;1D587;1D587;0062;0062; # (ð–‡; ð–‡; ð–‡; b; b; ) MATHEMATICAL BOLD FRAKTUR SMALL B
+1D588;1D588;1D588;0063;0063; # (ð–ˆ; ð–ˆ; ð–ˆ; c; c; ) MATHEMATICAL BOLD FRAKTUR SMALL C
+1D589;1D589;1D589;0064;0064; # (ð–‰; ð–‰; ð–‰; d; d; ) MATHEMATICAL BOLD FRAKTUR SMALL D
+1D58A;1D58A;1D58A;0065;0065; # (ð–Š; ð–Š; ð–Š; e; e; ) MATHEMATICAL BOLD FRAKTUR SMALL E
+1D58B;1D58B;1D58B;0066;0066; # (ð–‹; ð–‹; ð–‹; f; f; ) MATHEMATICAL BOLD FRAKTUR SMALL F
+1D58C;1D58C;1D58C;0067;0067; # (ð–Œ; ð–Œ; ð–Œ; g; g; ) MATHEMATICAL BOLD FRAKTUR SMALL G
+1D58D;1D58D;1D58D;0068;0068; # (ð–; ð–; ð–; h; h; ) MATHEMATICAL BOLD FRAKTUR SMALL H
+1D58E;1D58E;1D58E;0069;0069; # (ð–Ž; ð–Ž; ð–Ž; i; i; ) MATHEMATICAL BOLD FRAKTUR SMALL I
+1D58F;1D58F;1D58F;006A;006A; # (ð–; ð–; ð–; j; j; ) MATHEMATICAL BOLD FRAKTUR SMALL J
+1D590;1D590;1D590;006B;006B; # (ð–; ð–; ð–; k; k; ) MATHEMATICAL BOLD FRAKTUR SMALL K
+1D591;1D591;1D591;006C;006C; # (ð–‘; ð–‘; ð–‘; l; l; ) MATHEMATICAL BOLD FRAKTUR SMALL L
+1D592;1D592;1D592;006D;006D; # (ð–’; ð–’; ð–’; m; m; ) MATHEMATICAL BOLD FRAKTUR SMALL M
+1D593;1D593;1D593;006E;006E; # (ð–“; ð–“; ð–“; n; n; ) MATHEMATICAL BOLD FRAKTUR SMALL N
+1D594;1D594;1D594;006F;006F; # (ð–”; ð–”; ð–”; o; o; ) MATHEMATICAL BOLD FRAKTUR SMALL O
+1D595;1D595;1D595;0070;0070; # (ð–•; ð–•; ð–•; p; p; ) MATHEMATICAL BOLD FRAKTUR SMALL P
+1D596;1D596;1D596;0071;0071; # (ð––; ð––; ð––; q; q; ) MATHEMATICAL BOLD FRAKTUR SMALL Q
+1D597;1D597;1D597;0072;0072; # (ð–—; ð–—; ð–—; r; r; ) MATHEMATICAL BOLD FRAKTUR SMALL R
+1D598;1D598;1D598;0073;0073; # (ð–˜; ð–˜; ð–˜; s; s; ) MATHEMATICAL BOLD FRAKTUR SMALL S
+1D599;1D599;1D599;0074;0074; # (ð–™; ð–™; ð–™; t; t; ) MATHEMATICAL BOLD FRAKTUR SMALL T
+1D59A;1D59A;1D59A;0075;0075; # (ð–š; ð–š; ð–š; u; u; ) MATHEMATICAL BOLD FRAKTUR SMALL U
+1D59B;1D59B;1D59B;0076;0076; # (ð–›; ð–›; ð–›; v; v; ) MATHEMATICAL BOLD FRAKTUR SMALL V
+1D59C;1D59C;1D59C;0077;0077; # (ð–œ; ð–œ; ð–œ; w; w; ) MATHEMATICAL BOLD FRAKTUR SMALL W
+1D59D;1D59D;1D59D;0078;0078; # (ð–; ð–; ð–; x; x; ) MATHEMATICAL BOLD FRAKTUR SMALL X
+1D59E;1D59E;1D59E;0079;0079; # (ð–ž; ð–ž; ð–ž; y; y; ) MATHEMATICAL BOLD FRAKTUR SMALL Y
+1D59F;1D59F;1D59F;007A;007A; # (ð–Ÿ; ð–Ÿ; ð–Ÿ; z; z; ) MATHEMATICAL BOLD FRAKTUR SMALL Z
+1D5A0;1D5A0;1D5A0;0041;0041; # (ð– ; ð– ; ð– ; A; A; ) MATHEMATICAL SANS-SERIF CAPITAL A
+1D5A1;1D5A1;1D5A1;0042;0042; # (ð–¡; ð–¡; ð–¡; B; B; ) MATHEMATICAL SANS-SERIF CAPITAL B
+1D5A2;1D5A2;1D5A2;0043;0043; # (ð–¢; ð–¢; ð–¢; C; C; ) MATHEMATICAL SANS-SERIF CAPITAL C
+1D5A3;1D5A3;1D5A3;0044;0044; # (ð–£; ð–£; ð–£; D; D; ) MATHEMATICAL SANS-SERIF CAPITAL D
+1D5A4;1D5A4;1D5A4;0045;0045; # (ð–¤; ð–¤; ð–¤; E; E; ) MATHEMATICAL SANS-SERIF CAPITAL E
+1D5A5;1D5A5;1D5A5;0046;0046; # (ð–¥; ð–¥; ð–¥; F; F; ) MATHEMATICAL SANS-SERIF CAPITAL F
+1D5A6;1D5A6;1D5A6;0047;0047; # (ð–¦; ð–¦; ð–¦; G; G; ) MATHEMATICAL SANS-SERIF CAPITAL G
+1D5A7;1D5A7;1D5A7;0048;0048; # (ð–§; ð–§; ð–§; H; H; ) MATHEMATICAL SANS-SERIF CAPITAL H
+1D5A8;1D5A8;1D5A8;0049;0049; # (ð–¨; ð–¨; ð–¨; I; I; ) MATHEMATICAL SANS-SERIF CAPITAL I
+1D5A9;1D5A9;1D5A9;004A;004A; # (ð–©; ð–©; ð–©; J; J; ) MATHEMATICAL SANS-SERIF CAPITAL J
+1D5AA;1D5AA;1D5AA;004B;004B; # (ð–ª; ð–ª; ð–ª; K; K; ) MATHEMATICAL SANS-SERIF CAPITAL K
+1D5AB;1D5AB;1D5AB;004C;004C; # (ð–«; ð–«; ð–«; L; L; ) MATHEMATICAL SANS-SERIF CAPITAL L
+1D5AC;1D5AC;1D5AC;004D;004D; # (ð–¬; ð–¬; ð–¬; M; M; ) MATHEMATICAL SANS-SERIF CAPITAL M
+1D5AD;1D5AD;1D5AD;004E;004E; # (ð–­; ð–­; ð–­; N; N; ) MATHEMATICAL SANS-SERIF CAPITAL N
+1D5AE;1D5AE;1D5AE;004F;004F; # (ð–®; ð–®; ð–®; O; O; ) MATHEMATICAL SANS-SERIF CAPITAL O
+1D5AF;1D5AF;1D5AF;0050;0050; # (ð–¯; ð–¯; ð–¯; P; P; ) MATHEMATICAL SANS-SERIF CAPITAL P
+1D5B0;1D5B0;1D5B0;0051;0051; # (ð–°; ð–°; ð–°; Q; Q; ) MATHEMATICAL SANS-SERIF CAPITAL Q
+1D5B1;1D5B1;1D5B1;0052;0052; # (ð–±; ð–±; ð–±; R; R; ) MATHEMATICAL SANS-SERIF CAPITAL R
+1D5B2;1D5B2;1D5B2;0053;0053; # (ð–²; ð–²; ð–²; S; S; ) MATHEMATICAL SANS-SERIF CAPITAL S
+1D5B3;1D5B3;1D5B3;0054;0054; # (ð–³; ð–³; ð–³; T; T; ) MATHEMATICAL SANS-SERIF CAPITAL T
+1D5B4;1D5B4;1D5B4;0055;0055; # (ð–´; ð–´; ð–´; U; U; ) MATHEMATICAL SANS-SERIF CAPITAL U
+1D5B5;1D5B5;1D5B5;0056;0056; # (ð–µ; ð–µ; ð–µ; V; V; ) MATHEMATICAL SANS-SERIF CAPITAL V
+1D5B6;1D5B6;1D5B6;0057;0057; # (ð–¶; ð–¶; ð–¶; W; W; ) MATHEMATICAL SANS-SERIF CAPITAL W
+1D5B7;1D5B7;1D5B7;0058;0058; # (ð–·; ð–·; ð–·; X; X; ) MATHEMATICAL SANS-SERIF CAPITAL X
+1D5B8;1D5B8;1D5B8;0059;0059; # (ð–¸; ð–¸; ð–¸; Y; Y; ) MATHEMATICAL SANS-SERIF CAPITAL Y
+1D5B9;1D5B9;1D5B9;005A;005A; # (ð–¹; ð–¹; ð–¹; Z; Z; ) MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5BA;1D5BA;1D5BA;0061;0061; # (ð–º; ð–º; ð–º; a; a; ) MATHEMATICAL SANS-SERIF SMALL A
+1D5BB;1D5BB;1D5BB;0062;0062; # (ð–»; ð–»; ð–»; b; b; ) MATHEMATICAL SANS-SERIF SMALL B
+1D5BC;1D5BC;1D5BC;0063;0063; # (ð–¼; ð–¼; ð–¼; c; c; ) MATHEMATICAL SANS-SERIF SMALL C
+1D5BD;1D5BD;1D5BD;0064;0064; # (ð–½; ð–½; ð–½; d; d; ) MATHEMATICAL SANS-SERIF SMALL D
+1D5BE;1D5BE;1D5BE;0065;0065; # (ð–¾; ð–¾; ð–¾; e; e; ) MATHEMATICAL SANS-SERIF SMALL E
+1D5BF;1D5BF;1D5BF;0066;0066; # (ð–¿; ð–¿; ð–¿; f; f; ) MATHEMATICAL SANS-SERIF SMALL F
+1D5C0;1D5C0;1D5C0;0067;0067; # (ð—€; ð—€; ð—€; g; g; ) MATHEMATICAL SANS-SERIF SMALL G
+1D5C1;1D5C1;1D5C1;0068;0068; # (ð—; ð—; ð—; h; h; ) MATHEMATICAL SANS-SERIF SMALL H
+1D5C2;1D5C2;1D5C2;0069;0069; # (ð—‚; ð—‚; ð—‚; i; i; ) MATHEMATICAL SANS-SERIF SMALL I
+1D5C3;1D5C3;1D5C3;006A;006A; # (ð—ƒ; ð—ƒ; ð—ƒ; j; j; ) MATHEMATICAL SANS-SERIF SMALL J
+1D5C4;1D5C4;1D5C4;006B;006B; # (ð—„; ð—„; ð—„; k; k; ) MATHEMATICAL SANS-SERIF SMALL K
+1D5C5;1D5C5;1D5C5;006C;006C; # (ð—…; ð—…; ð—…; l; l; ) MATHEMATICAL SANS-SERIF SMALL L
+1D5C6;1D5C6;1D5C6;006D;006D; # (ð—†; ð—†; ð—†; m; m; ) MATHEMATICAL SANS-SERIF SMALL M
+1D5C7;1D5C7;1D5C7;006E;006E; # (ð—‡; ð—‡; ð—‡; n; n; ) MATHEMATICAL SANS-SERIF SMALL N
+1D5C8;1D5C8;1D5C8;006F;006F; # (ð—ˆ; ð—ˆ; ð—ˆ; o; o; ) MATHEMATICAL SANS-SERIF SMALL O
+1D5C9;1D5C9;1D5C9;0070;0070; # (ð—‰; ð—‰; ð—‰; p; p; ) MATHEMATICAL SANS-SERIF SMALL P
+1D5CA;1D5CA;1D5CA;0071;0071; # (ð—Š; ð—Š; ð—Š; q; q; ) MATHEMATICAL SANS-SERIF SMALL Q
+1D5CB;1D5CB;1D5CB;0072;0072; # (ð—‹; ð—‹; ð—‹; r; r; ) MATHEMATICAL SANS-SERIF SMALL R
+1D5CC;1D5CC;1D5CC;0073;0073; # (ð—Œ; ð—Œ; ð—Œ; s; s; ) MATHEMATICAL SANS-SERIF SMALL S
+1D5CD;1D5CD;1D5CD;0074;0074; # (ð—; ð—; ð—; t; t; ) MATHEMATICAL SANS-SERIF SMALL T
+1D5CE;1D5CE;1D5CE;0075;0075; # (ð—Ž; ð—Ž; ð—Ž; u; u; ) MATHEMATICAL SANS-SERIF SMALL U
+1D5CF;1D5CF;1D5CF;0076;0076; # (ð—; ð—; ð—; v; v; ) MATHEMATICAL SANS-SERIF SMALL V
+1D5D0;1D5D0;1D5D0;0077;0077; # (ð—; ð—; ð—; w; w; ) MATHEMATICAL SANS-SERIF SMALL W
+1D5D1;1D5D1;1D5D1;0078;0078; # (ð—‘; ð—‘; ð—‘; x; x; ) MATHEMATICAL SANS-SERIF SMALL X
+1D5D2;1D5D2;1D5D2;0079;0079; # (ð—’; ð—’; ð—’; y; y; ) MATHEMATICAL SANS-SERIF SMALL Y
+1D5D3;1D5D3;1D5D3;007A;007A; # (ð—“; ð—“; ð—“; z; z; ) MATHEMATICAL SANS-SERIF SMALL Z
+1D5D4;1D5D4;1D5D4;0041;0041; # (ð—”; ð—”; ð—”; A; A; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+1D5D5;1D5D5;1D5D5;0042;0042; # (ð—•; ð—•; ð—•; B; B; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+1D5D6;1D5D6;1D5D6;0043;0043; # (ð—–; ð—–; ð—–; C; C; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+1D5D7;1D5D7;1D5D7;0044;0044; # (ð——; ð——; ð——; D; D; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+1D5D8;1D5D8;1D5D8;0045;0045; # (ð—˜; ð—˜; ð—˜; E; E; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+1D5D9;1D5D9;1D5D9;0046;0046; # (ð—™; ð—™; ð—™; F; F; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+1D5DA;1D5DA;1D5DA;0047;0047; # (ð—š; ð—š; ð—š; G; G; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+1D5DB;1D5DB;1D5DB;0048;0048; # (ð—›; ð—›; ð—›; H; H; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+1D5DC;1D5DC;1D5DC;0049;0049; # (ð—œ; ð—œ; ð—œ; I; I; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+1D5DD;1D5DD;1D5DD;004A;004A; # (ð—; ð—; ð—; J; J; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+1D5DE;1D5DE;1D5DE;004B;004B; # (ð—ž; ð—ž; ð—ž; K; K; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+1D5DF;1D5DF;1D5DF;004C;004C; # (ð—Ÿ; ð—Ÿ; ð—Ÿ; L; L; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+1D5E0;1D5E0;1D5E0;004D;004D; # (ð— ; ð— ; ð— ; M; M; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+1D5E1;1D5E1;1D5E1;004E;004E; # (ð—¡; ð—¡; ð—¡; N; N; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+1D5E2;1D5E2;1D5E2;004F;004F; # (ð—¢; ð—¢; ð—¢; O; O; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+1D5E3;1D5E3;1D5E3;0050;0050; # (ð—£; ð—£; ð—£; P; P; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+1D5E4;1D5E4;1D5E4;0051;0051; # (ð—¤; ð—¤; ð—¤; Q; Q; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+1D5E5;1D5E5;1D5E5;0052;0052; # (ð—¥; ð—¥; ð—¥; R; R; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+1D5E6;1D5E6;1D5E6;0053;0053; # (ð—¦; ð—¦; ð—¦; S; S; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+1D5E7;1D5E7;1D5E7;0054;0054; # (ð—§; ð—§; ð—§; T; T; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+1D5E8;1D5E8;1D5E8;0055;0055; # (ð—¨; ð—¨; ð—¨; U; U; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+1D5E9;1D5E9;1D5E9;0056;0056; # (ð—©; ð—©; ð—©; V; V; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+1D5EA;1D5EA;1D5EA;0057;0057; # (ð—ª; ð—ª; ð—ª; W; W; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+1D5EB;1D5EB;1D5EB;0058;0058; # (ð—«; ð—«; ð—«; X; X; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+1D5EC;1D5EC;1D5EC;0059;0059; # (ð—¬; ð—¬; ð—¬; Y; Y; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+1D5ED;1D5ED;1D5ED;005A;005A; # (ð—­; ð—­; ð—­; Z; Z; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D5EE;1D5EE;1D5EE;0061;0061; # (ð—®; ð—®; ð—®; a; a; ) MATHEMATICAL SANS-SERIF BOLD SMALL A
+1D5EF;1D5EF;1D5EF;0062;0062; # (ð—¯; ð—¯; ð—¯; b; b; ) MATHEMATICAL SANS-SERIF BOLD SMALL B
+1D5F0;1D5F0;1D5F0;0063;0063; # (ð—°; ð—°; ð—°; c; c; ) MATHEMATICAL SANS-SERIF BOLD SMALL C
+1D5F1;1D5F1;1D5F1;0064;0064; # (ð—±; ð—±; ð—±; d; d; ) MATHEMATICAL SANS-SERIF BOLD SMALL D
+1D5F2;1D5F2;1D5F2;0065;0065; # (ð—²; ð—²; ð—²; e; e; ) MATHEMATICAL SANS-SERIF BOLD SMALL E
+1D5F3;1D5F3;1D5F3;0066;0066; # (ð—³; ð—³; ð—³; f; f; ) MATHEMATICAL SANS-SERIF BOLD SMALL F
+1D5F4;1D5F4;1D5F4;0067;0067; # (ð—´; ð—´; ð—´; g; g; ) MATHEMATICAL SANS-SERIF BOLD SMALL G
+1D5F5;1D5F5;1D5F5;0068;0068; # (ð—µ; ð—µ; ð—µ; h; h; ) MATHEMATICAL SANS-SERIF BOLD SMALL H
+1D5F6;1D5F6;1D5F6;0069;0069; # (ð—¶; ð—¶; ð—¶; i; i; ) MATHEMATICAL SANS-SERIF BOLD SMALL I
+1D5F7;1D5F7;1D5F7;006A;006A; # (ð—·; ð—·; ð—·; j; j; ) MATHEMATICAL SANS-SERIF BOLD SMALL J
+1D5F8;1D5F8;1D5F8;006B;006B; # (ð—¸; ð—¸; ð—¸; k; k; ) MATHEMATICAL SANS-SERIF BOLD SMALL K
+1D5F9;1D5F9;1D5F9;006C;006C; # (ð—¹; ð—¹; ð—¹; l; l; ) MATHEMATICAL SANS-SERIF BOLD SMALL L
+1D5FA;1D5FA;1D5FA;006D;006D; # (ð—º; ð—º; ð—º; m; m; ) MATHEMATICAL SANS-SERIF BOLD SMALL M
+1D5FB;1D5FB;1D5FB;006E;006E; # (ð—»; ð—»; ð—»; n; n; ) MATHEMATICAL SANS-SERIF BOLD SMALL N
+1D5FC;1D5FC;1D5FC;006F;006F; # (ð—¼; ð—¼; ð—¼; o; o; ) MATHEMATICAL SANS-SERIF BOLD SMALL O
+1D5FD;1D5FD;1D5FD;0070;0070; # (ð—½; ð—½; ð—½; p; p; ) MATHEMATICAL SANS-SERIF BOLD SMALL P
+1D5FE;1D5FE;1D5FE;0071;0071; # (ð—¾; ð—¾; ð—¾; q; q; ) MATHEMATICAL SANS-SERIF BOLD SMALL Q
+1D5FF;1D5FF;1D5FF;0072;0072; # (ð—¿; ð—¿; ð—¿; r; r; ) MATHEMATICAL SANS-SERIF BOLD SMALL R
+1D600;1D600;1D600;0073;0073; # (ð˜€; ð˜€; ð˜€; s; s; ) MATHEMATICAL SANS-SERIF BOLD SMALL S
+1D601;1D601;1D601;0074;0074; # (ð˜; ð˜; ð˜; t; t; ) MATHEMATICAL SANS-SERIF BOLD SMALL T
+1D602;1D602;1D602;0075;0075; # (ð˜‚; ð˜‚; ð˜‚; u; u; ) MATHEMATICAL SANS-SERIF BOLD SMALL U
+1D603;1D603;1D603;0076;0076; # (ð˜ƒ; ð˜ƒ; ð˜ƒ; v; v; ) MATHEMATICAL SANS-SERIF BOLD SMALL V
+1D604;1D604;1D604;0077;0077; # (ð˜„; ð˜„; ð˜„; w; w; ) MATHEMATICAL SANS-SERIF BOLD SMALL W
+1D605;1D605;1D605;0078;0078; # (ð˜…; ð˜…; ð˜…; x; x; ) MATHEMATICAL SANS-SERIF BOLD SMALL X
+1D606;1D606;1D606;0079;0079; # (ð˜†; ð˜†; ð˜†; y; y; ) MATHEMATICAL SANS-SERIF BOLD SMALL Y
+1D607;1D607;1D607;007A;007A; # (ð˜‡; ð˜‡; ð˜‡; z; z; ) MATHEMATICAL SANS-SERIF BOLD SMALL Z
+1D608;1D608;1D608;0041;0041; # (ð˜ˆ; ð˜ˆ; ð˜ˆ; A; A; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+1D609;1D609;1D609;0042;0042; # (ð˜‰; ð˜‰; ð˜‰; B; B; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+1D60A;1D60A;1D60A;0043;0043; # (ð˜Š; ð˜Š; ð˜Š; C; C; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+1D60B;1D60B;1D60B;0044;0044; # (ð˜‹; ð˜‹; ð˜‹; D; D; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+1D60C;1D60C;1D60C;0045;0045; # (ð˜Œ; ð˜Œ; ð˜Œ; E; E; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+1D60D;1D60D;1D60D;0046;0046; # (ð˜; ð˜; ð˜; F; F; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+1D60E;1D60E;1D60E;0047;0047; # (ð˜Ž; ð˜Ž; ð˜Ž; G; G; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+1D60F;1D60F;1D60F;0048;0048; # (ð˜; ð˜; ð˜; H; H; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+1D610;1D610;1D610;0049;0049; # (ð˜; ð˜; ð˜; I; I; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+1D611;1D611;1D611;004A;004A; # (ð˜‘; ð˜‘; ð˜‘; J; J; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+1D612;1D612;1D612;004B;004B; # (ð˜’; ð˜’; ð˜’; K; K; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+1D613;1D613;1D613;004C;004C; # (ð˜“; ð˜“; ð˜“; L; L; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+1D614;1D614;1D614;004D;004D; # (ð˜”; ð˜”; ð˜”; M; M; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+1D615;1D615;1D615;004E;004E; # (ð˜•; ð˜•; ð˜•; N; N; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+1D616;1D616;1D616;004F;004F; # (ð˜–; ð˜–; ð˜–; O; O; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+1D617;1D617;1D617;0050;0050; # (ð˜—; ð˜—; ð˜—; P; P; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+1D618;1D618;1D618;0051;0051; # (ð˜˜; ð˜˜; ð˜˜; Q; Q; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+1D619;1D619;1D619;0052;0052; # (ð˜™; ð˜™; ð˜™; R; R; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+1D61A;1D61A;1D61A;0053;0053; # (ð˜š; ð˜š; ð˜š; S; S; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+1D61B;1D61B;1D61B;0054;0054; # (ð˜›; ð˜›; ð˜›; T; T; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+1D61C;1D61C;1D61C;0055;0055; # (ð˜œ; ð˜œ; ð˜œ; U; U; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+1D61D;1D61D;1D61D;0056;0056; # (ð˜; ð˜; ð˜; V; V; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+1D61E;1D61E;1D61E;0057;0057; # (ð˜ž; ð˜ž; ð˜ž; W; W; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+1D61F;1D61F;1D61F;0058;0058; # (ð˜Ÿ; ð˜Ÿ; ð˜Ÿ; X; X; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+1D620;1D620;1D620;0059;0059; # (ð˜ ; ð˜ ; ð˜ ; Y; Y; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+1D621;1D621;1D621;005A;005A; # (ð˜¡; ð˜¡; ð˜¡; Z; Z; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D622;1D622;1D622;0061;0061; # (ð˜¢; ð˜¢; ð˜¢; a; a; ) MATHEMATICAL SANS-SERIF ITALIC SMALL A
+1D623;1D623;1D623;0062;0062; # (ð˜£; ð˜£; ð˜£; b; b; ) MATHEMATICAL SANS-SERIF ITALIC SMALL B
+1D624;1D624;1D624;0063;0063; # (ð˜¤; ð˜¤; ð˜¤; c; c; ) MATHEMATICAL SANS-SERIF ITALIC SMALL C
+1D625;1D625;1D625;0064;0064; # (ð˜¥; ð˜¥; ð˜¥; d; d; ) MATHEMATICAL SANS-SERIF ITALIC SMALL D
+1D626;1D626;1D626;0065;0065; # (ð˜¦; ð˜¦; ð˜¦; e; e; ) MATHEMATICAL SANS-SERIF ITALIC SMALL E
+1D627;1D627;1D627;0066;0066; # (ð˜§; ð˜§; ð˜§; f; f; ) MATHEMATICAL SANS-SERIF ITALIC SMALL F
+1D628;1D628;1D628;0067;0067; # (ð˜¨; ð˜¨; ð˜¨; g; g; ) MATHEMATICAL SANS-SERIF ITALIC SMALL G
+1D629;1D629;1D629;0068;0068; # (ð˜©; ð˜©; ð˜©; h; h; ) MATHEMATICAL SANS-SERIF ITALIC SMALL H
+1D62A;1D62A;1D62A;0069;0069; # (ð˜ª; ð˜ª; ð˜ª; i; i; ) MATHEMATICAL SANS-SERIF ITALIC SMALL I
+1D62B;1D62B;1D62B;006A;006A; # (ð˜«; ð˜«; ð˜«; j; j; ) MATHEMATICAL SANS-SERIF ITALIC SMALL J
+1D62C;1D62C;1D62C;006B;006B; # (ð˜¬; ð˜¬; ð˜¬; k; k; ) MATHEMATICAL SANS-SERIF ITALIC SMALL K
+1D62D;1D62D;1D62D;006C;006C; # (ð˜­; ð˜­; ð˜­; l; l; ) MATHEMATICAL SANS-SERIF ITALIC SMALL L
+1D62E;1D62E;1D62E;006D;006D; # (ð˜®; ð˜®; ð˜®; m; m; ) MATHEMATICAL SANS-SERIF ITALIC SMALL M
+1D62F;1D62F;1D62F;006E;006E; # (ð˜¯; ð˜¯; ð˜¯; n; n; ) MATHEMATICAL SANS-SERIF ITALIC SMALL N
+1D630;1D630;1D630;006F;006F; # (ð˜°; ð˜°; ð˜°; o; o; ) MATHEMATICAL SANS-SERIF ITALIC SMALL O
+1D631;1D631;1D631;0070;0070; # (ð˜±; ð˜±; ð˜±; p; p; ) MATHEMATICAL SANS-SERIF ITALIC SMALL P
+1D632;1D632;1D632;0071;0071; # (ð˜²; ð˜²; ð˜²; q; q; ) MATHEMATICAL SANS-SERIF ITALIC SMALL Q
+1D633;1D633;1D633;0072;0072; # (ð˜³; ð˜³; ð˜³; r; r; ) MATHEMATICAL SANS-SERIF ITALIC SMALL R
+1D634;1D634;1D634;0073;0073; # (ð˜´; ð˜´; ð˜´; s; s; ) MATHEMATICAL SANS-SERIF ITALIC SMALL S
+1D635;1D635;1D635;0074;0074; # (ð˜µ; ð˜µ; ð˜µ; t; t; ) MATHEMATICAL SANS-SERIF ITALIC SMALL T
+1D636;1D636;1D636;0075;0075; # (ð˜¶; ð˜¶; ð˜¶; u; u; ) MATHEMATICAL SANS-SERIF ITALIC SMALL U
+1D637;1D637;1D637;0076;0076; # (ð˜·; ð˜·; ð˜·; v; v; ) MATHEMATICAL SANS-SERIF ITALIC SMALL V
+1D638;1D638;1D638;0077;0077; # (ð˜¸; ð˜¸; ð˜¸; w; w; ) MATHEMATICAL SANS-SERIF ITALIC SMALL W
+1D639;1D639;1D639;0078;0078; # (ð˜¹; ð˜¹; ð˜¹; x; x; ) MATHEMATICAL SANS-SERIF ITALIC SMALL X
+1D63A;1D63A;1D63A;0079;0079; # (ð˜º; ð˜º; ð˜º; y; y; ) MATHEMATICAL SANS-SERIF ITALIC SMALL Y
+1D63B;1D63B;1D63B;007A;007A; # (ð˜»; ð˜»; ð˜»; z; z; ) MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+1D63C;1D63C;1D63C;0041;0041; # (ð˜¼; ð˜¼; ð˜¼; A; A; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+1D63D;1D63D;1D63D;0042;0042; # (ð˜½; ð˜½; ð˜½; B; B; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+1D63E;1D63E;1D63E;0043;0043; # (ð˜¾; ð˜¾; ð˜¾; C; C; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+1D63F;1D63F;1D63F;0044;0044; # (ð˜¿; ð˜¿; ð˜¿; D; D; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+1D640;1D640;1D640;0045;0045; # (ð™€; ð™€; ð™€; E; E; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+1D641;1D641;1D641;0046;0046; # (ð™; ð™; ð™; F; F; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+1D642;1D642;1D642;0047;0047; # (ð™‚; ð™‚; ð™‚; G; G; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+1D643;1D643;1D643;0048;0048; # (ð™ƒ; ð™ƒ; ð™ƒ; H; H; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+1D644;1D644;1D644;0049;0049; # (ð™„; ð™„; ð™„; I; I; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+1D645;1D645;1D645;004A;004A; # (ð™…; ð™…; ð™…; J; J; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+1D646;1D646;1D646;004B;004B; # (ð™†; ð™†; ð™†; K; K; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+1D647;1D647;1D647;004C;004C; # (ð™‡; ð™‡; ð™‡; L; L; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+1D648;1D648;1D648;004D;004D; # (ð™ˆ; ð™ˆ; ð™ˆ; M; M; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+1D649;1D649;1D649;004E;004E; # (ð™‰; ð™‰; ð™‰; N; N; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+1D64A;1D64A;1D64A;004F;004F; # (ð™Š; ð™Š; ð™Š; O; O; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+1D64B;1D64B;1D64B;0050;0050; # (ð™‹; ð™‹; ð™‹; P; P; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+1D64C;1D64C;1D64C;0051;0051; # (ð™Œ; ð™Œ; ð™Œ; Q; Q; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+1D64D;1D64D;1D64D;0052;0052; # (ð™; ð™; ð™; R; R; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+1D64E;1D64E;1D64E;0053;0053; # (ð™Ž; ð™Ž; ð™Ž; S; S; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+1D64F;1D64F;1D64F;0054;0054; # (ð™; ð™; ð™; T; T; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+1D650;1D650;1D650;0055;0055; # (ð™; ð™; ð™; U; U; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+1D651;1D651;1D651;0056;0056; # (ð™‘; ð™‘; ð™‘; V; V; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+1D652;1D652;1D652;0057;0057; # (ð™’; ð™’; ð™’; W; W; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+1D653;1D653;1D653;0058;0058; # (ð™“; ð™“; ð™“; X; X; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+1D654;1D654;1D654;0059;0059; # (ð™”; ð™”; ð™”; Y; Y; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+1D655;1D655;1D655;005A;005A; # (ð™•; ð™•; ð™•; Z; Z; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D656;1D656;1D656;0061;0061; # (ð™–; ð™–; ð™–; a; a; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
+1D657;1D657;1D657;0062;0062; # (ð™—; ð™—; ð™—; b; b; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
+1D658;1D658;1D658;0063;0063; # (ð™˜; ð™˜; ð™˜; c; c; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
+1D659;1D659;1D659;0064;0064; # (ð™™; ð™™; ð™™; d; d; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
+1D65A;1D65A;1D65A;0065;0065; # (ð™š; ð™š; ð™š; e; e; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
+1D65B;1D65B;1D65B;0066;0066; # (ð™›; ð™›; ð™›; f; f; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
+1D65C;1D65C;1D65C;0067;0067; # (ð™œ; ð™œ; ð™œ; g; g; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
+1D65D;1D65D;1D65D;0068;0068; # (ð™; ð™; ð™; h; h; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
+1D65E;1D65E;1D65E;0069;0069; # (ð™ž; ð™ž; ð™ž; i; i; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
+1D65F;1D65F;1D65F;006A;006A; # (ð™Ÿ; ð™Ÿ; ð™Ÿ; j; j; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
+1D660;1D660;1D660;006B;006B; # (ð™ ; ð™ ; ð™ ; k; k; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
+1D661;1D661;1D661;006C;006C; # (ð™¡; ð™¡; ð™¡; l; l; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
+1D662;1D662;1D662;006D;006D; # (ð™¢; ð™¢; ð™¢; m; m; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
+1D663;1D663;1D663;006E;006E; # (ð™£; ð™£; ð™£; n; n; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
+1D664;1D664;1D664;006F;006F; # (ð™¤; ð™¤; ð™¤; o; o; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
+1D665;1D665;1D665;0070;0070; # (ð™¥; ð™¥; ð™¥; p; p; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
+1D666;1D666;1D666;0071;0071; # (ð™¦; ð™¦; ð™¦; q; q; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
+1D667;1D667;1D667;0072;0072; # (ð™§; ð™§; ð™§; r; r; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
+1D668;1D668;1D668;0073;0073; # (ð™¨; ð™¨; ð™¨; s; s; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
+1D669;1D669;1D669;0074;0074; # (ð™©; ð™©; ð™©; t; t; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
+1D66A;1D66A;1D66A;0075;0075; # (ð™ª; ð™ª; ð™ª; u; u; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
+1D66B;1D66B;1D66B;0076;0076; # (ð™«; ð™«; ð™«; v; v; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
+1D66C;1D66C;1D66C;0077;0077; # (ð™¬; ð™¬; ð™¬; w; w; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
+1D66D;1D66D;1D66D;0078;0078; # (ð™­; ð™­; ð™­; x; x; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
+1D66E;1D66E;1D66E;0079;0079; # (ð™®; ð™®; ð™®; y; y; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
+1D66F;1D66F;1D66F;007A;007A; # (ð™¯; ð™¯; ð™¯; z; z; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+1D670;1D670;1D670;0041;0041; # (ð™°; ð™°; ð™°; A; A; ) MATHEMATICAL MONOSPACE CAPITAL A
+1D671;1D671;1D671;0042;0042; # (ð™±; ð™±; ð™±; B; B; ) MATHEMATICAL MONOSPACE CAPITAL B
+1D672;1D672;1D672;0043;0043; # (ð™²; ð™²; ð™²; C; C; ) MATHEMATICAL MONOSPACE CAPITAL C
+1D673;1D673;1D673;0044;0044; # (ð™³; ð™³; ð™³; D; D; ) MATHEMATICAL MONOSPACE CAPITAL D
+1D674;1D674;1D674;0045;0045; # (ð™´; ð™´; ð™´; E; E; ) MATHEMATICAL MONOSPACE CAPITAL E
+1D675;1D675;1D675;0046;0046; # (ð™µ; ð™µ; ð™µ; F; F; ) MATHEMATICAL MONOSPACE CAPITAL F
+1D676;1D676;1D676;0047;0047; # (ð™¶; ð™¶; ð™¶; G; G; ) MATHEMATICAL MONOSPACE CAPITAL G
+1D677;1D677;1D677;0048;0048; # (ð™·; ð™·; ð™·; H; H; ) MATHEMATICAL MONOSPACE CAPITAL H
+1D678;1D678;1D678;0049;0049; # (ð™¸; ð™¸; ð™¸; I; I; ) MATHEMATICAL MONOSPACE CAPITAL I
+1D679;1D679;1D679;004A;004A; # (ð™¹; ð™¹; ð™¹; J; J; ) MATHEMATICAL MONOSPACE CAPITAL J
+1D67A;1D67A;1D67A;004B;004B; # (ð™º; ð™º; ð™º; K; K; ) MATHEMATICAL MONOSPACE CAPITAL K
+1D67B;1D67B;1D67B;004C;004C; # (ð™»; ð™»; ð™»; L; L; ) MATHEMATICAL MONOSPACE CAPITAL L
+1D67C;1D67C;1D67C;004D;004D; # (ð™¼; ð™¼; ð™¼; M; M; ) MATHEMATICAL MONOSPACE CAPITAL M
+1D67D;1D67D;1D67D;004E;004E; # (ð™½; ð™½; ð™½; N; N; ) MATHEMATICAL MONOSPACE CAPITAL N
+1D67E;1D67E;1D67E;004F;004F; # (ð™¾; ð™¾; ð™¾; O; O; ) MATHEMATICAL MONOSPACE CAPITAL O
+1D67F;1D67F;1D67F;0050;0050; # (ð™¿; ð™¿; ð™¿; P; P; ) MATHEMATICAL MONOSPACE CAPITAL P
+1D680;1D680;1D680;0051;0051; # (ðš€; ðš€; ðš€; Q; Q; ) MATHEMATICAL MONOSPACE CAPITAL Q
+1D681;1D681;1D681;0052;0052; # (ðš; ðš; ðš; R; R; ) MATHEMATICAL MONOSPACE CAPITAL R
+1D682;1D682;1D682;0053;0053; # (ðš‚; ðš‚; ðš‚; S; S; ) MATHEMATICAL MONOSPACE CAPITAL S
+1D683;1D683;1D683;0054;0054; # (ðšƒ; ðšƒ; ðšƒ; T; T; ) MATHEMATICAL MONOSPACE CAPITAL T
+1D684;1D684;1D684;0055;0055; # (ðš„; ðš„; ðš„; U; U; ) MATHEMATICAL MONOSPACE CAPITAL U
+1D685;1D685;1D685;0056;0056; # (ðš…; ðš…; ðš…; V; V; ) MATHEMATICAL MONOSPACE CAPITAL V
+1D686;1D686;1D686;0057;0057; # (ðš†; ðš†; ðš†; W; W; ) MATHEMATICAL MONOSPACE CAPITAL W
+1D687;1D687;1D687;0058;0058; # (ðš‡; ðš‡; ðš‡; X; X; ) MATHEMATICAL MONOSPACE CAPITAL X
+1D688;1D688;1D688;0059;0059; # (ðšˆ; ðšˆ; ðšˆ; Y; Y; ) MATHEMATICAL MONOSPACE CAPITAL Y
+1D689;1D689;1D689;005A;005A; # (ðš‰; ðš‰; ðš‰; Z; Z; ) MATHEMATICAL MONOSPACE CAPITAL Z
+1D68A;1D68A;1D68A;0061;0061; # (ðšŠ; ðšŠ; ðšŠ; a; a; ) MATHEMATICAL MONOSPACE SMALL A
+1D68B;1D68B;1D68B;0062;0062; # (ðš‹; ðš‹; ðš‹; b; b; ) MATHEMATICAL MONOSPACE SMALL B
+1D68C;1D68C;1D68C;0063;0063; # (ðšŒ; ðšŒ; ðšŒ; c; c; ) MATHEMATICAL MONOSPACE SMALL C
+1D68D;1D68D;1D68D;0064;0064; # (ðš; ðš; ðš; d; d; ) MATHEMATICAL MONOSPACE SMALL D
+1D68E;1D68E;1D68E;0065;0065; # (ðšŽ; ðšŽ; ðšŽ; e; e; ) MATHEMATICAL MONOSPACE SMALL E
+1D68F;1D68F;1D68F;0066;0066; # (ðš; ðš; ðš; f; f; ) MATHEMATICAL MONOSPACE SMALL F
+1D690;1D690;1D690;0067;0067; # (ðš; ðš; ðš; g; g; ) MATHEMATICAL MONOSPACE SMALL G
+1D691;1D691;1D691;0068;0068; # (ðš‘; ðš‘; ðš‘; h; h; ) MATHEMATICAL MONOSPACE SMALL H
+1D692;1D692;1D692;0069;0069; # (ðš’; ðš’; ðš’; i; i; ) MATHEMATICAL MONOSPACE SMALL I
+1D693;1D693;1D693;006A;006A; # (ðš“; ðš“; ðš“; j; j; ) MATHEMATICAL MONOSPACE SMALL J
+1D694;1D694;1D694;006B;006B; # (ðš”; ðš”; ðš”; k; k; ) MATHEMATICAL MONOSPACE SMALL K
+1D695;1D695;1D695;006C;006C; # (ðš•; ðš•; ðš•; l; l; ) MATHEMATICAL MONOSPACE SMALL L
+1D696;1D696;1D696;006D;006D; # (ðš–; ðš–; ðš–; m; m; ) MATHEMATICAL MONOSPACE SMALL M
+1D697;1D697;1D697;006E;006E; # (ðš—; ðš—; ðš—; n; n; ) MATHEMATICAL MONOSPACE SMALL N
+1D698;1D698;1D698;006F;006F; # (ðš˜; ðš˜; ðš˜; o; o; ) MATHEMATICAL MONOSPACE SMALL O
+1D699;1D699;1D699;0070;0070; # (ðš™; ðš™; ðš™; p; p; ) MATHEMATICAL MONOSPACE SMALL P
+1D69A;1D69A;1D69A;0071;0071; # (ðšš; ðšš; ðšš; q; q; ) MATHEMATICAL MONOSPACE SMALL Q
+1D69B;1D69B;1D69B;0072;0072; # (ðš›; ðš›; ðš›; r; r; ) MATHEMATICAL MONOSPACE SMALL R
+1D69C;1D69C;1D69C;0073;0073; # (ðšœ; ðšœ; ðšœ; s; s; ) MATHEMATICAL MONOSPACE SMALL S
+1D69D;1D69D;1D69D;0074;0074; # (ðš; ðš; ðš; t; t; ) MATHEMATICAL MONOSPACE SMALL T
+1D69E;1D69E;1D69E;0075;0075; # (ðšž; ðšž; ðšž; u; u; ) MATHEMATICAL MONOSPACE SMALL U
+1D69F;1D69F;1D69F;0076;0076; # (ðšŸ; ðšŸ; ðšŸ; v; v; ) MATHEMATICAL MONOSPACE SMALL V
+1D6A0;1D6A0;1D6A0;0077;0077; # (ðš ; ðš ; ðš ; w; w; ) MATHEMATICAL MONOSPACE SMALL W
+1D6A1;1D6A1;1D6A1;0078;0078; # (ðš¡; ðš¡; ðš¡; x; x; ) MATHEMATICAL MONOSPACE SMALL X
+1D6A2;1D6A2;1D6A2;0079;0079; # (ðš¢; ðš¢; ðš¢; y; y; ) MATHEMATICAL MONOSPACE SMALL Y
+1D6A3;1D6A3;1D6A3;007A;007A; # (ðš£; ðš£; ðš£; z; z; ) MATHEMATICAL MONOSPACE SMALL Z
+1D6A4;1D6A4;1D6A4;0131;0131; # (ðš¤; ðš¤; ðš¤; ı; ı; ) MATHEMATICAL ITALIC SMALL DOTLESS I
+1D6A5;1D6A5;1D6A5;0237;0237; # (ðš¥; ðš¥; ðš¥; È·; È·; ) MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8;1D6A8;1D6A8;0391;0391; # (ðš¨; ðš¨; ðš¨; Α; Α; ) MATHEMATICAL BOLD CAPITAL ALPHA
+1D6A9;1D6A9;1D6A9;0392;0392; # (ðš©; ðš©; ðš©; Î’; Î’; ) MATHEMATICAL BOLD CAPITAL BETA
+1D6AA;1D6AA;1D6AA;0393;0393; # (ðšª; ðšª; ðšª; Γ; Γ; ) MATHEMATICAL BOLD CAPITAL GAMMA
+1D6AB;1D6AB;1D6AB;0394;0394; # (ðš«; ðš«; ðš«; Δ; Δ; ) MATHEMATICAL BOLD CAPITAL DELTA
+1D6AC;1D6AC;1D6AC;0395;0395; # (ðš¬; ðš¬; ðš¬; Ε; Ε; ) MATHEMATICAL BOLD CAPITAL EPSILON
+1D6AD;1D6AD;1D6AD;0396;0396; # (ðš­; ðš­; ðš­; Ζ; Ζ; ) MATHEMATICAL BOLD CAPITAL ZETA
+1D6AE;1D6AE;1D6AE;0397;0397; # (ðš®; ðš®; ðš®; Η; Η; ) MATHEMATICAL BOLD CAPITAL ETA
+1D6AF;1D6AF;1D6AF;0398;0398; # (ðš¯; ðš¯; ðš¯; Θ; Θ; ) MATHEMATICAL BOLD CAPITAL THETA
+1D6B0;1D6B0;1D6B0;0399;0399; # (ðš°; ðš°; ðš°; Ι; Ι; ) MATHEMATICAL BOLD CAPITAL IOTA
+1D6B1;1D6B1;1D6B1;039A;039A; # (ðš±; ðš±; ðš±; Κ; Κ; ) MATHEMATICAL BOLD CAPITAL KAPPA
+1D6B2;1D6B2;1D6B2;039B;039B; # (ðš²; ðš²; ðš²; Λ; Λ; ) MATHEMATICAL BOLD CAPITAL LAMDA
+1D6B3;1D6B3;1D6B3;039C;039C; # (ðš³; ðš³; ðš³; Îœ; Îœ; ) MATHEMATICAL BOLD CAPITAL MU
+1D6B4;1D6B4;1D6B4;039D;039D; # (ðš´; ðš´; ðš´; Î; Î; ) MATHEMATICAL BOLD CAPITAL NU
+1D6B5;1D6B5;1D6B5;039E;039E; # (ðšµ; ðšµ; ðšµ; Ξ; Ξ; ) MATHEMATICAL BOLD CAPITAL XI
+1D6B6;1D6B6;1D6B6;039F;039F; # (ðš¶; ðš¶; ðš¶; Ο; Ο; ) MATHEMATICAL BOLD CAPITAL OMICRON
+1D6B7;1D6B7;1D6B7;03A0;03A0; # (ðš·; ðš·; ðš·; Π; Π; ) MATHEMATICAL BOLD CAPITAL PI
+1D6B8;1D6B8;1D6B8;03A1;03A1; # (ðš¸; ðš¸; ðš¸; Ρ; Ρ; ) MATHEMATICAL BOLD CAPITAL RHO
+1D6B9;1D6B9;1D6B9;0398;0398; # (ðš¹; ðš¹; ðš¹; Θ; Θ; ) MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+1D6BA;1D6BA;1D6BA;03A3;03A3; # (ðšº; ðšº; ðšº; Σ; Σ; ) MATHEMATICAL BOLD CAPITAL SIGMA
+1D6BB;1D6BB;1D6BB;03A4;03A4; # (ðš»; ðš»; ðš»; Τ; Τ; ) MATHEMATICAL BOLD CAPITAL TAU
+1D6BC;1D6BC;1D6BC;03A5;03A5; # (ðš¼; ðš¼; ðš¼; Î¥; Î¥; ) MATHEMATICAL BOLD CAPITAL UPSILON
+1D6BD;1D6BD;1D6BD;03A6;03A6; # (ðš½; ðš½; ðš½; Φ; Φ; ) MATHEMATICAL BOLD CAPITAL PHI
+1D6BE;1D6BE;1D6BE;03A7;03A7; # (ðš¾; ðš¾; ðš¾; Χ; Χ; ) MATHEMATICAL BOLD CAPITAL CHI
+1D6BF;1D6BF;1D6BF;03A8;03A8; # (ðš¿; ðš¿; ðš¿; Ψ; Ψ; ) MATHEMATICAL BOLD CAPITAL PSI
+1D6C0;1D6C0;1D6C0;03A9;03A9; # (ð›€; ð›€; ð›€; Ω; Ω; ) MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1;1D6C1;1D6C1;2207;2207; # (ð›; ð›; ð›; ∇; ∇; ) MATHEMATICAL BOLD NABLA
+1D6C2;1D6C2;1D6C2;03B1;03B1; # (ð›‚; ð›‚; ð›‚; α; α; ) MATHEMATICAL BOLD SMALL ALPHA
+1D6C3;1D6C3;1D6C3;03B2;03B2; # (ð›ƒ; ð›ƒ; ð›ƒ; β; β; ) MATHEMATICAL BOLD SMALL BETA
+1D6C4;1D6C4;1D6C4;03B3;03B3; # (ð›„; ð›„; ð›„; γ; γ; ) MATHEMATICAL BOLD SMALL GAMMA
+1D6C5;1D6C5;1D6C5;03B4;03B4; # (ð›…; ð›…; ð›…; δ; δ; ) MATHEMATICAL BOLD SMALL DELTA
+1D6C6;1D6C6;1D6C6;03B5;03B5; # (ð›†; ð›†; ð›†; ε; ε; ) MATHEMATICAL BOLD SMALL EPSILON
+1D6C7;1D6C7;1D6C7;03B6;03B6; # (ð›‡; ð›‡; ð›‡; ζ; ζ; ) MATHEMATICAL BOLD SMALL ZETA
+1D6C8;1D6C8;1D6C8;03B7;03B7; # (ð›ˆ; ð›ˆ; ð›ˆ; η; η; ) MATHEMATICAL BOLD SMALL ETA
+1D6C9;1D6C9;1D6C9;03B8;03B8; # (ð›‰; ð›‰; ð›‰; θ; θ; ) MATHEMATICAL BOLD SMALL THETA
+1D6CA;1D6CA;1D6CA;03B9;03B9; # (ð›Š; ð›Š; ð›Š; ι; ι; ) MATHEMATICAL BOLD SMALL IOTA
+1D6CB;1D6CB;1D6CB;03BA;03BA; # (ð›‹; ð›‹; ð›‹; κ; κ; ) MATHEMATICAL BOLD SMALL KAPPA
+1D6CC;1D6CC;1D6CC;03BB;03BB; # (ð›Œ; ð›Œ; ð›Œ; λ; λ; ) MATHEMATICAL BOLD SMALL LAMDA
+1D6CD;1D6CD;1D6CD;03BC;03BC; # (ð›; ð›; ð›; μ; μ; ) MATHEMATICAL BOLD SMALL MU
+1D6CE;1D6CE;1D6CE;03BD;03BD; # (ð›Ž; ð›Ž; ð›Ž; ν; ν; ) MATHEMATICAL BOLD SMALL NU
+1D6CF;1D6CF;1D6CF;03BE;03BE; # (ð›; ð›; ð›; ξ; ξ; ) MATHEMATICAL BOLD SMALL XI
+1D6D0;1D6D0;1D6D0;03BF;03BF; # (ð›; ð›; ð›; ο; ο; ) MATHEMATICAL BOLD SMALL OMICRON
+1D6D1;1D6D1;1D6D1;03C0;03C0; # (ð›‘; ð›‘; ð›‘; Ï€; Ï€; ) MATHEMATICAL BOLD SMALL PI
+1D6D2;1D6D2;1D6D2;03C1;03C1; # (ð›’; ð›’; ð›’; Ï; Ï; ) MATHEMATICAL BOLD SMALL RHO
+1D6D3;1D6D3;1D6D3;03C2;03C2; # (ð›“; ð›“; ð›“; Ï‚; Ï‚; ) MATHEMATICAL BOLD SMALL FINAL SIGMA
+1D6D4;1D6D4;1D6D4;03C3;03C3; # (ð›”; ð›”; ð›”; σ; σ; ) MATHEMATICAL BOLD SMALL SIGMA
+1D6D5;1D6D5;1D6D5;03C4;03C4; # (ð›•; ð›•; ð›•; Ï„; Ï„; ) MATHEMATICAL BOLD SMALL TAU
+1D6D6;1D6D6;1D6D6;03C5;03C5; # (ð›–; ð›–; ð›–; Ï…; Ï…; ) MATHEMATICAL BOLD SMALL UPSILON
+1D6D7;1D6D7;1D6D7;03C6;03C6; # (ð›—; ð›—; ð›—; φ; φ; ) MATHEMATICAL BOLD SMALL PHI
+1D6D8;1D6D8;1D6D8;03C7;03C7; # (ð›˜; ð›˜; ð›˜; χ; χ; ) MATHEMATICAL BOLD SMALL CHI
+1D6D9;1D6D9;1D6D9;03C8;03C8; # (ð›™; ð›™; ð›™; ψ; ψ; ) MATHEMATICAL BOLD SMALL PSI
+1D6DA;1D6DA;1D6DA;03C9;03C9; # (ð›š; ð›š; ð›š; ω; ω; ) MATHEMATICAL BOLD SMALL OMEGA
+1D6DB;1D6DB;1D6DB;2202;2202; # (ð››; ð››; ð››; ∂; ∂; ) MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC;1D6DC;1D6DC;03B5;03B5; # (ð›œ; ð›œ; ð›œ; ε; ε; ) MATHEMATICAL BOLD EPSILON SYMBOL
+1D6DD;1D6DD;1D6DD;03B8;03B8; # (ð›; ð›; ð›; θ; θ; ) MATHEMATICAL BOLD THETA SYMBOL
+1D6DE;1D6DE;1D6DE;03BA;03BA; # (ð›ž; ð›ž; ð›ž; κ; κ; ) MATHEMATICAL BOLD KAPPA SYMBOL
+1D6DF;1D6DF;1D6DF;03C6;03C6; # (ð›Ÿ; ð›Ÿ; ð›Ÿ; φ; φ; ) MATHEMATICAL BOLD PHI SYMBOL
+1D6E0;1D6E0;1D6E0;03C1;03C1; # (ð› ; ð› ; ð› ; Ï; Ï; ) MATHEMATICAL BOLD RHO SYMBOL
+1D6E1;1D6E1;1D6E1;03C0;03C0; # (ð›¡; ð›¡; ð›¡; Ï€; Ï€; ) MATHEMATICAL BOLD PI SYMBOL
+1D6E2;1D6E2;1D6E2;0391;0391; # (ð›¢; ð›¢; ð›¢; Α; Α; ) MATHEMATICAL ITALIC CAPITAL ALPHA
+1D6E3;1D6E3;1D6E3;0392;0392; # (ð›£; ð›£; ð›£; Î’; Î’; ) MATHEMATICAL ITALIC CAPITAL BETA
+1D6E4;1D6E4;1D6E4;0393;0393; # (ð›¤; ð›¤; ð›¤; Γ; Γ; ) MATHEMATICAL ITALIC CAPITAL GAMMA
+1D6E5;1D6E5;1D6E5;0394;0394; # (ð›¥; ð›¥; ð›¥; Δ; Δ; ) MATHEMATICAL ITALIC CAPITAL DELTA
+1D6E6;1D6E6;1D6E6;0395;0395; # (ð›¦; ð›¦; ð›¦; Ε; Ε; ) MATHEMATICAL ITALIC CAPITAL EPSILON
+1D6E7;1D6E7;1D6E7;0396;0396; # (ð›§; ð›§; ð›§; Ζ; Ζ; ) MATHEMATICAL ITALIC CAPITAL ZETA
+1D6E8;1D6E8;1D6E8;0397;0397; # (ð›¨; ð›¨; ð›¨; Η; Η; ) MATHEMATICAL ITALIC CAPITAL ETA
+1D6E9;1D6E9;1D6E9;0398;0398; # (ð›©; ð›©; ð›©; Θ; Θ; ) MATHEMATICAL ITALIC CAPITAL THETA
+1D6EA;1D6EA;1D6EA;0399;0399; # (ð›ª; ð›ª; ð›ª; Ι; Ι; ) MATHEMATICAL ITALIC CAPITAL IOTA
+1D6EB;1D6EB;1D6EB;039A;039A; # (ð›«; ð›«; ð›«; Κ; Κ; ) MATHEMATICAL ITALIC CAPITAL KAPPA
+1D6EC;1D6EC;1D6EC;039B;039B; # (ð›¬; ð›¬; ð›¬; Λ; Λ; ) MATHEMATICAL ITALIC CAPITAL LAMDA
+1D6ED;1D6ED;1D6ED;039C;039C; # (ð›­; ð›­; ð›­; Îœ; Îœ; ) MATHEMATICAL ITALIC CAPITAL MU
+1D6EE;1D6EE;1D6EE;039D;039D; # (ð›®; ð›®; ð›®; Î; Î; ) MATHEMATICAL ITALIC CAPITAL NU
+1D6EF;1D6EF;1D6EF;039E;039E; # (ð›¯; ð›¯; ð›¯; Ξ; Ξ; ) MATHEMATICAL ITALIC CAPITAL XI
+1D6F0;1D6F0;1D6F0;039F;039F; # (ð›°; ð›°; ð›°; Ο; Ο; ) MATHEMATICAL ITALIC CAPITAL OMICRON
+1D6F1;1D6F1;1D6F1;03A0;03A0; # (ð›±; ð›±; ð›±; Π; Π; ) MATHEMATICAL ITALIC CAPITAL PI
+1D6F2;1D6F2;1D6F2;03A1;03A1; # (ð›²; ð›²; ð›²; Ρ; Ρ; ) MATHEMATICAL ITALIC CAPITAL RHO
+1D6F3;1D6F3;1D6F3;0398;0398; # (ð›³; ð›³; ð›³; Θ; Θ; ) MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+1D6F4;1D6F4;1D6F4;03A3;03A3; # (ð›´; ð›´; ð›´; Σ; Σ; ) MATHEMATICAL ITALIC CAPITAL SIGMA
+1D6F5;1D6F5;1D6F5;03A4;03A4; # (ð›µ; ð›µ; ð›µ; Τ; Τ; ) MATHEMATICAL ITALIC CAPITAL TAU
+1D6F6;1D6F6;1D6F6;03A5;03A5; # (ð›¶; ð›¶; ð›¶; Î¥; Î¥; ) MATHEMATICAL ITALIC CAPITAL UPSILON
+1D6F7;1D6F7;1D6F7;03A6;03A6; # (ð›·; ð›·; ð›·; Φ; Φ; ) MATHEMATICAL ITALIC CAPITAL PHI
+1D6F8;1D6F8;1D6F8;03A7;03A7; # (ð›¸; ð›¸; ð›¸; Χ; Χ; ) MATHEMATICAL ITALIC CAPITAL CHI
+1D6F9;1D6F9;1D6F9;03A8;03A8; # (ð›¹; ð›¹; ð›¹; Ψ; Ψ; ) MATHEMATICAL ITALIC CAPITAL PSI
+1D6FA;1D6FA;1D6FA;03A9;03A9; # (ð›º; ð›º; ð›º; Ω; Ω; ) MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB;1D6FB;1D6FB;2207;2207; # (ð›»; ð›»; ð›»; ∇; ∇; ) MATHEMATICAL ITALIC NABLA
+1D6FC;1D6FC;1D6FC;03B1;03B1; # (ð›¼; ð›¼; ð›¼; α; α; ) MATHEMATICAL ITALIC SMALL ALPHA
+1D6FD;1D6FD;1D6FD;03B2;03B2; # (ð›½; ð›½; ð›½; β; β; ) MATHEMATICAL ITALIC SMALL BETA
+1D6FE;1D6FE;1D6FE;03B3;03B3; # (ð›¾; ð›¾; ð›¾; γ; γ; ) MATHEMATICAL ITALIC SMALL GAMMA
+1D6FF;1D6FF;1D6FF;03B4;03B4; # (ð›¿; ð›¿; ð›¿; δ; δ; ) MATHEMATICAL ITALIC SMALL DELTA
+1D700;1D700;1D700;03B5;03B5; # (ðœ€; ðœ€; ðœ€; ε; ε; ) MATHEMATICAL ITALIC SMALL EPSILON
+1D701;1D701;1D701;03B6;03B6; # (ðœ; ðœ; ðœ; ζ; ζ; ) MATHEMATICAL ITALIC SMALL ZETA
+1D702;1D702;1D702;03B7;03B7; # (ðœ‚; ðœ‚; ðœ‚; η; η; ) MATHEMATICAL ITALIC SMALL ETA
+1D703;1D703;1D703;03B8;03B8; # (ðœƒ; ðœƒ; ðœƒ; θ; θ; ) MATHEMATICAL ITALIC SMALL THETA
+1D704;1D704;1D704;03B9;03B9; # (ðœ„; ðœ„; ðœ„; ι; ι; ) MATHEMATICAL ITALIC SMALL IOTA
+1D705;1D705;1D705;03BA;03BA; # (ðœ…; ðœ…; ðœ…; κ; κ; ) MATHEMATICAL ITALIC SMALL KAPPA
+1D706;1D706;1D706;03BB;03BB; # (ðœ†; ðœ†; ðœ†; λ; λ; ) MATHEMATICAL ITALIC SMALL LAMDA
+1D707;1D707;1D707;03BC;03BC; # (ðœ‡; ðœ‡; ðœ‡; μ; μ; ) MATHEMATICAL ITALIC SMALL MU
+1D708;1D708;1D708;03BD;03BD; # (ðœˆ; ðœˆ; ðœˆ; ν; ν; ) MATHEMATICAL ITALIC SMALL NU
+1D709;1D709;1D709;03BE;03BE; # (ðœ‰; ðœ‰; ðœ‰; ξ; ξ; ) MATHEMATICAL ITALIC SMALL XI
+1D70A;1D70A;1D70A;03BF;03BF; # (ðœŠ; ðœŠ; ðœŠ; ο; ο; ) MATHEMATICAL ITALIC SMALL OMICRON
+1D70B;1D70B;1D70B;03C0;03C0; # (ðœ‹; ðœ‹; ðœ‹; Ï€; Ï€; ) MATHEMATICAL ITALIC SMALL PI
+1D70C;1D70C;1D70C;03C1;03C1; # (ðœŒ; ðœŒ; ðœŒ; Ï; Ï; ) MATHEMATICAL ITALIC SMALL RHO
+1D70D;1D70D;1D70D;03C2;03C2; # (ðœ; ðœ; ðœ; Ï‚; Ï‚; ) MATHEMATICAL ITALIC SMALL FINAL SIGMA
+1D70E;1D70E;1D70E;03C3;03C3; # (ðœŽ; ðœŽ; ðœŽ; σ; σ; ) MATHEMATICAL ITALIC SMALL SIGMA
+1D70F;1D70F;1D70F;03C4;03C4; # (ðœ; ðœ; ðœ; Ï„; Ï„; ) MATHEMATICAL ITALIC SMALL TAU
+1D710;1D710;1D710;03C5;03C5; # (ðœ; ðœ; ðœ; Ï…; Ï…; ) MATHEMATICAL ITALIC SMALL UPSILON
+1D711;1D711;1D711;03C6;03C6; # (ðœ‘; ðœ‘; ðœ‘; φ; φ; ) MATHEMATICAL ITALIC SMALL PHI
+1D712;1D712;1D712;03C7;03C7; # (ðœ’; ðœ’; ðœ’; χ; χ; ) MATHEMATICAL ITALIC SMALL CHI
+1D713;1D713;1D713;03C8;03C8; # (ðœ“; ðœ“; ðœ“; ψ; ψ; ) MATHEMATICAL ITALIC SMALL PSI
+1D714;1D714;1D714;03C9;03C9; # (ðœ”; ðœ”; ðœ”; ω; ω; ) MATHEMATICAL ITALIC SMALL OMEGA
+1D715;1D715;1D715;2202;2202; # (ðœ•; ðœ•; ðœ•; ∂; ∂; ) MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716;1D716;1D716;03B5;03B5; # (ðœ–; ðœ–; ðœ–; ε; ε; ) MATHEMATICAL ITALIC EPSILON SYMBOL
+1D717;1D717;1D717;03B8;03B8; # (ðœ—; ðœ—; ðœ—; θ; θ; ) MATHEMATICAL ITALIC THETA SYMBOL
+1D718;1D718;1D718;03BA;03BA; # (ðœ˜; ðœ˜; ðœ˜; κ; κ; ) MATHEMATICAL ITALIC KAPPA SYMBOL
+1D719;1D719;1D719;03C6;03C6; # (ðœ™; ðœ™; ðœ™; φ; φ; ) MATHEMATICAL ITALIC PHI SYMBOL
+1D71A;1D71A;1D71A;03C1;03C1; # (ðœš; ðœš; ðœš; Ï; Ï; ) MATHEMATICAL ITALIC RHO SYMBOL
+1D71B;1D71B;1D71B;03C0;03C0; # (ðœ›; ðœ›; ðœ›; Ï€; Ï€; ) MATHEMATICAL ITALIC PI SYMBOL
+1D71C;1D71C;1D71C;0391;0391; # (ðœœ; ðœœ; ðœœ; Α; Α; ) MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+1D71D;1D71D;1D71D;0392;0392; # (ðœ; ðœ; ðœ; Î’; Î’; ) MATHEMATICAL BOLD ITALIC CAPITAL BETA
+1D71E;1D71E;1D71E;0393;0393; # (ðœž; ðœž; ðœž; Γ; Γ; ) MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+1D71F;1D71F;1D71F;0394;0394; # (ðœŸ; ðœŸ; ðœŸ; Δ; Δ; ) MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+1D720;1D720;1D720;0395;0395; # (ðœ ; ðœ ; ðœ ; Ε; Ε; ) MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+1D721;1D721;1D721;0396;0396; # (ðœ¡; ðœ¡; ðœ¡; Ζ; Ζ; ) MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+1D722;1D722;1D722;0397;0397; # (ðœ¢; ðœ¢; ðœ¢; Η; Η; ) MATHEMATICAL BOLD ITALIC CAPITAL ETA
+1D723;1D723;1D723;0398;0398; # (ðœ£; ðœ£; ðœ£; Θ; Θ; ) MATHEMATICAL BOLD ITALIC CAPITAL THETA
+1D724;1D724;1D724;0399;0399; # (ðœ¤; ðœ¤; ðœ¤; Ι; Ι; ) MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+1D725;1D725;1D725;039A;039A; # (ðœ¥; ðœ¥; ðœ¥; Κ; Κ; ) MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+1D726;1D726;1D726;039B;039B; # (ðœ¦; ðœ¦; ðœ¦; Λ; Λ; ) MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+1D727;1D727;1D727;039C;039C; # (ðœ§; ðœ§; ðœ§; Îœ; Îœ; ) MATHEMATICAL BOLD ITALIC CAPITAL MU
+1D728;1D728;1D728;039D;039D; # (ðœ¨; ðœ¨; ðœ¨; Î; Î; ) MATHEMATICAL BOLD ITALIC CAPITAL NU
+1D729;1D729;1D729;039E;039E; # (ðœ©; ðœ©; ðœ©; Ξ; Ξ; ) MATHEMATICAL BOLD ITALIC CAPITAL XI
+1D72A;1D72A;1D72A;039F;039F; # (ðœª; ðœª; ðœª; Ο; Ο; ) MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+1D72B;1D72B;1D72B;03A0;03A0; # (ðœ«; ðœ«; ðœ«; Π; Π; ) MATHEMATICAL BOLD ITALIC CAPITAL PI
+1D72C;1D72C;1D72C;03A1;03A1; # (ðœ¬; ðœ¬; ðœ¬; Ρ; Ρ; ) MATHEMATICAL BOLD ITALIC CAPITAL RHO
+1D72D;1D72D;1D72D;0398;0398; # (ðœ­; ðœ­; ðœ­; Θ; Θ; ) MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+1D72E;1D72E;1D72E;03A3;03A3; # (ðœ®; ðœ®; ðœ®; Σ; Σ; ) MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+1D72F;1D72F;1D72F;03A4;03A4; # (ðœ¯; ðœ¯; ðœ¯; Τ; Τ; ) MATHEMATICAL BOLD ITALIC CAPITAL TAU
+1D730;1D730;1D730;03A5;03A5; # (ðœ°; ðœ°; ðœ°; Î¥; Î¥; ) MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+1D731;1D731;1D731;03A6;03A6; # (ðœ±; ðœ±; ðœ±; Φ; Φ; ) MATHEMATICAL BOLD ITALIC CAPITAL PHI
+1D732;1D732;1D732;03A7;03A7; # (ðœ²; ðœ²; ðœ²; Χ; Χ; ) MATHEMATICAL BOLD ITALIC CAPITAL CHI
+1D733;1D733;1D733;03A8;03A8; # (ðœ³; ðœ³; ðœ³; Ψ; Ψ; ) MATHEMATICAL BOLD ITALIC CAPITAL PSI
+1D734;1D734;1D734;03A9;03A9; # (ðœ´; ðœ´; ðœ´; Ω; Ω; ) MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735;1D735;1D735;2207;2207; # (ðœµ; ðœµ; ðœµ; ∇; ∇; ) MATHEMATICAL BOLD ITALIC NABLA
+1D736;1D736;1D736;03B1;03B1; # (ðœ¶; ðœ¶; ðœ¶; α; α; ) MATHEMATICAL BOLD ITALIC SMALL ALPHA
+1D737;1D737;1D737;03B2;03B2; # (ðœ·; ðœ·; ðœ·; β; β; ) MATHEMATICAL BOLD ITALIC SMALL BETA
+1D738;1D738;1D738;03B3;03B3; # (ðœ¸; ðœ¸; ðœ¸; γ; γ; ) MATHEMATICAL BOLD ITALIC SMALL GAMMA
+1D739;1D739;1D739;03B4;03B4; # (ðœ¹; ðœ¹; ðœ¹; δ; δ; ) MATHEMATICAL BOLD ITALIC SMALL DELTA
+1D73A;1D73A;1D73A;03B5;03B5; # (ðœº; ðœº; ðœº; ε; ε; ) MATHEMATICAL BOLD ITALIC SMALL EPSILON
+1D73B;1D73B;1D73B;03B6;03B6; # (ðœ»; ðœ»; ðœ»; ζ; ζ; ) MATHEMATICAL BOLD ITALIC SMALL ZETA
+1D73C;1D73C;1D73C;03B7;03B7; # (ðœ¼; ðœ¼; ðœ¼; η; η; ) MATHEMATICAL BOLD ITALIC SMALL ETA
+1D73D;1D73D;1D73D;03B8;03B8; # (ðœ½; ðœ½; ðœ½; θ; θ; ) MATHEMATICAL BOLD ITALIC SMALL THETA
+1D73E;1D73E;1D73E;03B9;03B9; # (ðœ¾; ðœ¾; ðœ¾; ι; ι; ) MATHEMATICAL BOLD ITALIC SMALL IOTA
+1D73F;1D73F;1D73F;03BA;03BA; # (ðœ¿; ðœ¿; ðœ¿; κ; κ; ) MATHEMATICAL BOLD ITALIC SMALL KAPPA
+1D740;1D740;1D740;03BB;03BB; # (ð€; ð€; ð€; λ; λ; ) MATHEMATICAL BOLD ITALIC SMALL LAMDA
+1D741;1D741;1D741;03BC;03BC; # (ð; ð; ð; μ; μ; ) MATHEMATICAL BOLD ITALIC SMALL MU
+1D742;1D742;1D742;03BD;03BD; # (ð‚; ð‚; ð‚; ν; ν; ) MATHEMATICAL BOLD ITALIC SMALL NU
+1D743;1D743;1D743;03BE;03BE; # (ðƒ; ðƒ; ðƒ; ξ; ξ; ) MATHEMATICAL BOLD ITALIC SMALL XI
+1D744;1D744;1D744;03BF;03BF; # (ð„; ð„; ð„; ο; ο; ) MATHEMATICAL BOLD ITALIC SMALL OMICRON
+1D745;1D745;1D745;03C0;03C0; # (ð…; ð…; ð…; Ï€; Ï€; ) MATHEMATICAL BOLD ITALIC SMALL PI
+1D746;1D746;1D746;03C1;03C1; # (ð†; ð†; ð†; Ï; Ï; ) MATHEMATICAL BOLD ITALIC SMALL RHO
+1D747;1D747;1D747;03C2;03C2; # (ð‡; ð‡; ð‡; Ï‚; Ï‚; ) MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+1D748;1D748;1D748;03C3;03C3; # (ðˆ; ðˆ; ðˆ; σ; σ; ) MATHEMATICAL BOLD ITALIC SMALL SIGMA
+1D749;1D749;1D749;03C4;03C4; # (ð‰; ð‰; ð‰; Ï„; Ï„; ) MATHEMATICAL BOLD ITALIC SMALL TAU
+1D74A;1D74A;1D74A;03C5;03C5; # (ðŠ; ðŠ; ðŠ; Ï…; Ï…; ) MATHEMATICAL BOLD ITALIC SMALL UPSILON
+1D74B;1D74B;1D74B;03C6;03C6; # (ð‹; ð‹; ð‹; φ; φ; ) MATHEMATICAL BOLD ITALIC SMALL PHI
+1D74C;1D74C;1D74C;03C7;03C7; # (ðŒ; ðŒ; ðŒ; χ; χ; ) MATHEMATICAL BOLD ITALIC SMALL CHI
+1D74D;1D74D;1D74D;03C8;03C8; # (ð; ð; ð; ψ; ψ; ) MATHEMATICAL BOLD ITALIC SMALL PSI
+1D74E;1D74E;1D74E;03C9;03C9; # (ðŽ; ðŽ; ðŽ; ω; ω; ) MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F;1D74F;1D74F;2202;2202; # (ð; ð; ð; ∂; ∂; ) MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750;1D750;1D750;03B5;03B5; # (ð; ð; ð; ε; ε; ) MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
+1D751;1D751;1D751;03B8;03B8; # (ð‘; ð‘; ð‘; θ; θ; ) MATHEMATICAL BOLD ITALIC THETA SYMBOL
+1D752;1D752;1D752;03BA;03BA; # (ð’; ð’; ð’; κ; κ; ) MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
+1D753;1D753;1D753;03C6;03C6; # (ð“; ð“; ð“; φ; φ; ) MATHEMATICAL BOLD ITALIC PHI SYMBOL
+1D754;1D754;1D754;03C1;03C1; # (ð”; ð”; ð”; Ï; Ï; ) MATHEMATICAL BOLD ITALIC RHO SYMBOL
+1D755;1D755;1D755;03C0;03C0; # (ð•; ð•; ð•; Ï€; Ï€; ) MATHEMATICAL BOLD ITALIC PI SYMBOL
+1D756;1D756;1D756;0391;0391; # (ð–; ð–; ð–; Α; Α; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+1D757;1D757;1D757;0392;0392; # (ð—; ð—; ð—; Î’; Î’; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+1D758;1D758;1D758;0393;0393; # (ð˜; ð˜; ð˜; Γ; Γ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+1D759;1D759;1D759;0394;0394; # (ð™; ð™; ð™; Δ; Δ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+1D75A;1D75A;1D75A;0395;0395; # (ðš; ðš; ðš; Ε; Ε; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+1D75B;1D75B;1D75B;0396;0396; # (ð›; ð›; ð›; Ζ; Ζ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+1D75C;1D75C;1D75C;0397;0397; # (ðœ; ðœ; ðœ; Η; Η; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+1D75D;1D75D;1D75D;0398;0398; # (ð; ð; ð; Θ; Θ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+1D75E;1D75E;1D75E;0399;0399; # (ðž; ðž; ðž; Ι; Ι; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+1D75F;1D75F;1D75F;039A;039A; # (ðŸ; ðŸ; ðŸ; Κ; Κ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+1D760;1D760;1D760;039B;039B; # (ð ; ð ; ð ; Λ; Λ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+1D761;1D761;1D761;039C;039C; # (ð¡; ð¡; ð¡; Îœ; Îœ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+1D762;1D762;1D762;039D;039D; # (ð¢; ð¢; ð¢; Î; Î; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+1D763;1D763;1D763;039E;039E; # (ð£; ð£; ð£; Ξ; Ξ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+1D764;1D764;1D764;039F;039F; # (ð¤; ð¤; ð¤; Ο; Ο; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+1D765;1D765;1D765;03A0;03A0; # (ð¥; ð¥; ð¥; Π; Π; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+1D766;1D766;1D766;03A1;03A1; # (ð¦; ð¦; ð¦; Ρ; Ρ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+1D767;1D767;1D767;0398;0398; # (ð§; ð§; ð§; Θ; Θ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+1D768;1D768;1D768;03A3;03A3; # (ð¨; ð¨; ð¨; Σ; Σ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+1D769;1D769;1D769;03A4;03A4; # (ð©; ð©; ð©; Τ; Τ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+1D76A;1D76A;1D76A;03A5;03A5; # (ðª; ðª; ðª; Î¥; Î¥; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+1D76B;1D76B;1D76B;03A6;03A6; # (ð«; ð«; ð«; Φ; Φ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+1D76C;1D76C;1D76C;03A7;03A7; # (ð¬; ð¬; ð¬; Χ; Χ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+1D76D;1D76D;1D76D;03A8;03A8; # (ð­; ð­; ð­; Ψ; Ψ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+1D76E;1D76E;1D76E;03A9;03A9; # (ð®; ð®; ð®; Ω; Ω; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F;1D76F;1D76F;2207;2207; # (ð¯; ð¯; ð¯; ∇; ∇; ) MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770;1D770;1D770;03B1;03B1; # (ð°; ð°; ð°; α; α; ) MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
+1D771;1D771;1D771;03B2;03B2; # (ð±; ð±; ð±; β; β; ) MATHEMATICAL SANS-SERIF BOLD SMALL BETA
+1D772;1D772;1D772;03B3;03B3; # (ð²; ð²; ð²; γ; γ; ) MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
+1D773;1D773;1D773;03B4;03B4; # (ð³; ð³; ð³; δ; δ; ) MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
+1D774;1D774;1D774;03B5;03B5; # (ð´; ð´; ð´; ε; ε; ) MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
+1D775;1D775;1D775;03B6;03B6; # (ðµ; ðµ; ðµ; ζ; ζ; ) MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
+1D776;1D776;1D776;03B7;03B7; # (ð¶; ð¶; ð¶; η; η; ) MATHEMATICAL SANS-SERIF BOLD SMALL ETA
+1D777;1D777;1D777;03B8;03B8; # (ð·; ð·; ð·; θ; θ; ) MATHEMATICAL SANS-SERIF BOLD SMALL THETA
+1D778;1D778;1D778;03B9;03B9; # (ð¸; ð¸; ð¸; ι; ι; ) MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
+1D779;1D779;1D779;03BA;03BA; # (ð¹; ð¹; ð¹; κ; κ; ) MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
+1D77A;1D77A;1D77A;03BB;03BB; # (ðº; ðº; ðº; λ; λ; ) MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
+1D77B;1D77B;1D77B;03BC;03BC; # (ð»; ð»; ð»; μ; μ; ) MATHEMATICAL SANS-SERIF BOLD SMALL MU
+1D77C;1D77C;1D77C;03BD;03BD; # (ð¼; ð¼; ð¼; ν; ν; ) MATHEMATICAL SANS-SERIF BOLD SMALL NU
+1D77D;1D77D;1D77D;03BE;03BE; # (ð½; ð½; ð½; ξ; ξ; ) MATHEMATICAL SANS-SERIF BOLD SMALL XI
+1D77E;1D77E;1D77E;03BF;03BF; # (ð¾; ð¾; ð¾; ο; ο; ) MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
+1D77F;1D77F;1D77F;03C0;03C0; # (ð¿; ð¿; ð¿; Ï€; Ï€; ) MATHEMATICAL SANS-SERIF BOLD SMALL PI
+1D780;1D780;1D780;03C1;03C1; # (ðž€; ðž€; ðž€; Ï; Ï; ) MATHEMATICAL SANS-SERIF BOLD SMALL RHO
+1D781;1D781;1D781;03C2;03C2; # (ðž; ðž; ðž; Ï‚; Ï‚; ) MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+1D782;1D782;1D782;03C3;03C3; # (ðž‚; ðž‚; ðž‚; σ; σ; ) MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
+1D783;1D783;1D783;03C4;03C4; # (ðžƒ; ðžƒ; ðžƒ; Ï„; Ï„; ) MATHEMATICAL SANS-SERIF BOLD SMALL TAU
+1D784;1D784;1D784;03C5;03C5; # (ðž„; ðž„; ðž„; Ï…; Ï…; ) MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
+1D785;1D785;1D785;03C6;03C6; # (ðž…; ðž…; ðž…; φ; φ; ) MATHEMATICAL SANS-SERIF BOLD SMALL PHI
+1D786;1D786;1D786;03C7;03C7; # (ðž†; ðž†; ðž†; χ; χ; ) MATHEMATICAL SANS-SERIF BOLD SMALL CHI
+1D787;1D787;1D787;03C8;03C8; # (ðž‡; ðž‡; ðž‡; ψ; ψ; ) MATHEMATICAL SANS-SERIF BOLD SMALL PSI
+1D788;1D788;1D788;03C9;03C9; # (ðžˆ; ðžˆ; ðžˆ; ω; ω; ) MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789;1D789;1D789;2202;2202; # (ðž‰; ðž‰; ðž‰; ∂; ∂; ) MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A;1D78A;1D78A;03B5;03B5; # (ðžŠ; ðžŠ; ðžŠ; ε; ε; ) MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
+1D78B;1D78B;1D78B;03B8;03B8; # (ðž‹; ðž‹; ðž‹; θ; θ; ) MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
+1D78C;1D78C;1D78C;03BA;03BA; # (ðžŒ; ðžŒ; ðžŒ; κ; κ; ) MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
+1D78D;1D78D;1D78D;03C6;03C6; # (ðž; ðž; ðž; φ; φ; ) MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
+1D78E;1D78E;1D78E;03C1;03C1; # (ðžŽ; ðžŽ; ðžŽ; Ï; Ï; ) MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
+1D78F;1D78F;1D78F;03C0;03C0; # (ðž; ðž; ðž; Ï€; Ï€; ) MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+1D790;1D790;1D790;0391;0391; # (ðž; ðž; ðž; Α; Α; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+1D791;1D791;1D791;0392;0392; # (ðž‘; ðž‘; ðž‘; Î’; Î’; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+1D792;1D792;1D792;0393;0393; # (ðž’; ðž’; ðž’; Γ; Γ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+1D793;1D793;1D793;0394;0394; # (ðž“; ðž“; ðž“; Δ; Δ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+1D794;1D794;1D794;0395;0395; # (ðž”; ðž”; ðž”; Ε; Ε; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+1D795;1D795;1D795;0396;0396; # (ðž•; ðž•; ðž•; Ζ; Ζ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+1D796;1D796;1D796;0397;0397; # (ðž–; ðž–; ðž–; Η; Η; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+1D797;1D797;1D797;0398;0398; # (ðž—; ðž—; ðž—; Θ; Θ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+1D798;1D798;1D798;0399;0399; # (ðž˜; ðž˜; ðž˜; Ι; Ι; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+1D799;1D799;1D799;039A;039A; # (ðž™; ðž™; ðž™; Κ; Κ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+1D79A;1D79A;1D79A;039B;039B; # (ðžš; ðžš; ðžš; Λ; Λ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+1D79B;1D79B;1D79B;039C;039C; # (ðž›; ðž›; ðž›; Îœ; Îœ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+1D79C;1D79C;1D79C;039D;039D; # (ðžœ; ðžœ; ðžœ; Î; Î; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+1D79D;1D79D;1D79D;039E;039E; # (ðž; ðž; ðž; Ξ; Ξ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+1D79E;1D79E;1D79E;039F;039F; # (ðžž; ðžž; ðžž; Ο; Ο; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+1D79F;1D79F;1D79F;03A0;03A0; # (ðžŸ; ðžŸ; ðžŸ; Π; Π; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+1D7A0;1D7A0;1D7A0;03A1;03A1; # (ðž ; ðž ; ðž ; Ρ; Ρ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+1D7A1;1D7A1;1D7A1;0398;0398; # (ðž¡; ðž¡; ðž¡; Θ; Θ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+1D7A2;1D7A2;1D7A2;03A3;03A3; # (ðž¢; ðž¢; ðž¢; Σ; Σ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+1D7A3;1D7A3;1D7A3;03A4;03A4; # (ðž£; ðž£; ðž£; Τ; Τ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+1D7A4;1D7A4;1D7A4;03A5;03A5; # (ðž¤; ðž¤; ðž¤; Î¥; Î¥; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+1D7A5;1D7A5;1D7A5;03A6;03A6; # (ðž¥; ðž¥; ðž¥; Φ; Φ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+1D7A6;1D7A6;1D7A6;03A7;03A7; # (ðž¦; ðž¦; ðž¦; Χ; Χ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+1D7A7;1D7A7;1D7A7;03A8;03A8; # (ðž§; ðž§; ðž§; Ψ; Ψ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+1D7A8;1D7A8;1D7A8;03A9;03A9; # (ðž¨; ðž¨; ðž¨; Ω; Ω; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9;1D7A9;1D7A9;2207;2207; # (ðž©; ðž©; ðž©; ∇; ∇; ) MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA;1D7AA;1D7AA;03B1;03B1; # (ðžª; ðžª; ðžª; α; α; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
+1D7AB;1D7AB;1D7AB;03B2;03B2; # (ðž«; ðž«; ðž«; β; β; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
+1D7AC;1D7AC;1D7AC;03B3;03B3; # (ðž¬; ðž¬; ðž¬; γ; γ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
+1D7AD;1D7AD;1D7AD;03B4;03B4; # (ðž­; ðž­; ðž­; δ; δ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
+1D7AE;1D7AE;1D7AE;03B5;03B5; # (ðž®; ðž®; ðž®; ε; ε; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
+1D7AF;1D7AF;1D7AF;03B6;03B6; # (ðž¯; ðž¯; ðž¯; ζ; ζ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
+1D7B0;1D7B0;1D7B0;03B7;03B7; # (ðž°; ðž°; ðž°; η; η; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
+1D7B1;1D7B1;1D7B1;03B8;03B8; # (ðž±; ðž±; ðž±; θ; θ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
+1D7B2;1D7B2;1D7B2;03B9;03B9; # (ðž²; ðž²; ðž²; ι; ι; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
+1D7B3;1D7B3;1D7B3;03BA;03BA; # (ðž³; ðž³; ðž³; κ; κ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
+1D7B4;1D7B4;1D7B4;03BB;03BB; # (ðž´; ðž´; ðž´; λ; λ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
+1D7B5;1D7B5;1D7B5;03BC;03BC; # (ðžµ; ðžµ; ðžµ; μ; μ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
+1D7B6;1D7B6;1D7B6;03BD;03BD; # (ðž¶; ðž¶; ðž¶; ν; ν; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
+1D7B7;1D7B7;1D7B7;03BE;03BE; # (ðž·; ðž·; ðž·; ξ; ξ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
+1D7B8;1D7B8;1D7B8;03BF;03BF; # (ðž¸; ðž¸; ðž¸; ο; ο; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
+1D7B9;1D7B9;1D7B9;03C0;03C0; # (ðž¹; ðž¹; ðž¹; Ï€; Ï€; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
+1D7BA;1D7BA;1D7BA;03C1;03C1; # (ðžº; ðžº; ðžº; Ï; Ï; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
+1D7BB;1D7BB;1D7BB;03C2;03C2; # (ðž»; ðž»; ðž»; Ï‚; Ï‚; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+1D7BC;1D7BC;1D7BC;03C3;03C3; # (ðž¼; ðž¼; ðž¼; σ; σ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
+1D7BD;1D7BD;1D7BD;03C4;03C4; # (ðž½; ðž½; ðž½; Ï„; Ï„; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
+1D7BE;1D7BE;1D7BE;03C5;03C5; # (ðž¾; ðž¾; ðž¾; Ï…; Ï…; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
+1D7BF;1D7BF;1D7BF;03C6;03C6; # (ðž¿; ðž¿; ðž¿; φ; φ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
+1D7C0;1D7C0;1D7C0;03C7;03C7; # (ðŸ€; ðŸ€; ðŸ€; χ; χ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
+1D7C1;1D7C1;1D7C1;03C8;03C8; # (ðŸ; ðŸ; ðŸ; ψ; ψ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
+1D7C2;1D7C2;1D7C2;03C9;03C9; # (ðŸ‚; ðŸ‚; ðŸ‚; ω; ω; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3;1D7C3;1D7C3;2202;2202; # (ðŸƒ; ðŸƒ; ðŸƒ; ∂; ∂; ) MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4;1D7C4;1D7C4;03B5;03B5; # (ðŸ„; ðŸ„; ðŸ„; ε; ε; ) MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
+1D7C5;1D7C5;1D7C5;03B8;03B8; # (ðŸ…; ðŸ…; ðŸ…; θ; θ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
+1D7C6;1D7C6;1D7C6;03BA;03BA; # (ðŸ†; ðŸ†; ðŸ†; κ; κ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
+1D7C7;1D7C7;1D7C7;03C6;03C6; # (ðŸ‡; ðŸ‡; ðŸ‡; φ; φ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
+1D7C8;1D7C8;1D7C8;03C1;03C1; # (ðŸˆ; ðŸˆ; ðŸˆ; Ï; Ï; ) MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
+1D7C9;1D7C9;1D7C9;03C0;03C0; # (ðŸ‰; ðŸ‰; ðŸ‰; Ï€; Ï€; ) MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+1D7CA;1D7CA;1D7CA;03DC;03DC; # (ðŸŠ; ðŸŠ; ðŸŠ; Ïœ; Ïœ; ) MATHEMATICAL BOLD CAPITAL DIGAMMA
+1D7CB;1D7CB;1D7CB;03DD;03DD; # (ðŸ‹; ðŸ‹; ðŸ‹; Ï; Ï; ) MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE;1D7CE;1D7CE;0030;0030; # (ðŸŽ; ðŸŽ; ðŸŽ; 0; 0; ) MATHEMATICAL BOLD DIGIT ZERO
+1D7CF;1D7CF;1D7CF;0031;0031; # (ðŸ; ðŸ; ðŸ; 1; 1; ) MATHEMATICAL BOLD DIGIT ONE
+1D7D0;1D7D0;1D7D0;0032;0032; # (ðŸ; ðŸ; ðŸ; 2; 2; ) MATHEMATICAL BOLD DIGIT TWO
+1D7D1;1D7D1;1D7D1;0033;0033; # (ðŸ‘; ðŸ‘; ðŸ‘; 3; 3; ) MATHEMATICAL BOLD DIGIT THREE
+1D7D2;1D7D2;1D7D2;0034;0034; # (ðŸ’; ðŸ’; ðŸ’; 4; 4; ) MATHEMATICAL BOLD DIGIT FOUR
+1D7D3;1D7D3;1D7D3;0035;0035; # (ðŸ“; ðŸ“; ðŸ“; 5; 5; ) MATHEMATICAL BOLD DIGIT FIVE
+1D7D4;1D7D4;1D7D4;0036;0036; # (ðŸ”; ðŸ”; ðŸ”; 6; 6; ) MATHEMATICAL BOLD DIGIT SIX
+1D7D5;1D7D5;1D7D5;0037;0037; # (ðŸ•; ðŸ•; ðŸ•; 7; 7; ) MATHEMATICAL BOLD DIGIT SEVEN
+1D7D6;1D7D6;1D7D6;0038;0038; # (ðŸ–; ðŸ–; ðŸ–; 8; 8; ) MATHEMATICAL BOLD DIGIT EIGHT
+1D7D7;1D7D7;1D7D7;0039;0039; # (ðŸ—; ðŸ—; ðŸ—; 9; 9; ) MATHEMATICAL BOLD DIGIT NINE
+1D7D8;1D7D8;1D7D8;0030;0030; # (ðŸ˜; ðŸ˜; ðŸ˜; 0; 0; ) MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
+1D7D9;1D7D9;1D7D9;0031;0031; # (ðŸ™; ðŸ™; ðŸ™; 1; 1; ) MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
+1D7DA;1D7DA;1D7DA;0032;0032; # (ðŸš; ðŸš; ðŸš; 2; 2; ) MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
+1D7DB;1D7DB;1D7DB;0033;0033; # (ðŸ›; ðŸ›; ðŸ›; 3; 3; ) MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
+1D7DC;1D7DC;1D7DC;0034;0034; # (ðŸœ; ðŸœ; ðŸœ; 4; 4; ) MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
+1D7DD;1D7DD;1D7DD;0035;0035; # (ðŸ; ðŸ; ðŸ; 5; 5; ) MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
+1D7DE;1D7DE;1D7DE;0036;0036; # (ðŸž; ðŸž; ðŸž; 6; 6; ) MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
+1D7DF;1D7DF;1D7DF;0037;0037; # (ðŸŸ; ðŸŸ; ðŸŸ; 7; 7; ) MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
+1D7E0;1D7E0;1D7E0;0038;0038; # (ðŸ ; ðŸ ; ðŸ ; 8; 8; ) MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
+1D7E1;1D7E1;1D7E1;0039;0039; # (ðŸ¡; ðŸ¡; ðŸ¡; 9; 9; ) MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
+1D7E2;1D7E2;1D7E2;0030;0030; # (ðŸ¢; ðŸ¢; ðŸ¢; 0; 0; ) MATHEMATICAL SANS-SERIF DIGIT ZERO
+1D7E3;1D7E3;1D7E3;0031;0031; # (ðŸ£; ðŸ£; ðŸ£; 1; 1; ) MATHEMATICAL SANS-SERIF DIGIT ONE
+1D7E4;1D7E4;1D7E4;0032;0032; # (ðŸ¤; ðŸ¤; ðŸ¤; 2; 2; ) MATHEMATICAL SANS-SERIF DIGIT TWO
+1D7E5;1D7E5;1D7E5;0033;0033; # (ðŸ¥; ðŸ¥; ðŸ¥; 3; 3; ) MATHEMATICAL SANS-SERIF DIGIT THREE
+1D7E6;1D7E6;1D7E6;0034;0034; # (ðŸ¦; ðŸ¦; ðŸ¦; 4; 4; ) MATHEMATICAL SANS-SERIF DIGIT FOUR
+1D7E7;1D7E7;1D7E7;0035;0035; # (ðŸ§; ðŸ§; ðŸ§; 5; 5; ) MATHEMATICAL SANS-SERIF DIGIT FIVE
+1D7E8;1D7E8;1D7E8;0036;0036; # (ðŸ¨; ðŸ¨; ðŸ¨; 6; 6; ) MATHEMATICAL SANS-SERIF DIGIT SIX
+1D7E9;1D7E9;1D7E9;0037;0037; # (ðŸ©; ðŸ©; ðŸ©; 7; 7; ) MATHEMATICAL SANS-SERIF DIGIT SEVEN
+1D7EA;1D7EA;1D7EA;0038;0038; # (ðŸª; ðŸª; ðŸª; 8; 8; ) MATHEMATICAL SANS-SERIF DIGIT EIGHT
+1D7EB;1D7EB;1D7EB;0039;0039; # (ðŸ«; ðŸ«; ðŸ«; 9; 9; ) MATHEMATICAL SANS-SERIF DIGIT NINE
+1D7EC;1D7EC;1D7EC;0030;0030; # (ðŸ¬; ðŸ¬; ðŸ¬; 0; 0; ) MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
+1D7ED;1D7ED;1D7ED;0031;0031; # (ðŸ­; ðŸ­; ðŸ­; 1; 1; ) MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
+1D7EE;1D7EE;1D7EE;0032;0032; # (ðŸ®; ðŸ®; ðŸ®; 2; 2; ) MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
+1D7EF;1D7EF;1D7EF;0033;0033; # (ðŸ¯; ðŸ¯; ðŸ¯; 3; 3; ) MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
+1D7F0;1D7F0;1D7F0;0034;0034; # (ðŸ°; ðŸ°; ðŸ°; 4; 4; ) MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
+1D7F1;1D7F1;1D7F1;0035;0035; # (ðŸ±; ðŸ±; ðŸ±; 5; 5; ) MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
+1D7F2;1D7F2;1D7F2;0036;0036; # (ðŸ²; ðŸ²; ðŸ²; 6; 6; ) MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
+1D7F3;1D7F3;1D7F3;0037;0037; # (ðŸ³; ðŸ³; ðŸ³; 7; 7; ) MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
+1D7F4;1D7F4;1D7F4;0038;0038; # (ðŸ´; ðŸ´; ðŸ´; 8; 8; ) MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
+1D7F5;1D7F5;1D7F5;0039;0039; # (ðŸµ; ðŸµ; ðŸµ; 9; 9; ) MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
+1D7F6;1D7F6;1D7F6;0030;0030; # (ðŸ¶; ðŸ¶; ðŸ¶; 0; 0; ) MATHEMATICAL MONOSPACE DIGIT ZERO
+1D7F7;1D7F7;1D7F7;0031;0031; # (ðŸ·; ðŸ·; ðŸ·; 1; 1; ) MATHEMATICAL MONOSPACE DIGIT ONE
+1D7F8;1D7F8;1D7F8;0032;0032; # (ðŸ¸; ðŸ¸; ðŸ¸; 2; 2; ) MATHEMATICAL MONOSPACE DIGIT TWO
+1D7F9;1D7F9;1D7F9;0033;0033; # (ðŸ¹; ðŸ¹; ðŸ¹; 3; 3; ) MATHEMATICAL MONOSPACE DIGIT THREE
+1D7FA;1D7FA;1D7FA;0034;0034; # (ðŸº; ðŸº; ðŸº; 4; 4; ) MATHEMATICAL MONOSPACE DIGIT FOUR
+1D7FB;1D7FB;1D7FB;0035;0035; # (ðŸ»; ðŸ»; ðŸ»; 5; 5; ) MATHEMATICAL MONOSPACE DIGIT FIVE
+1D7FC;1D7FC;1D7FC;0036;0036; # (ðŸ¼; ðŸ¼; ðŸ¼; 6; 6; ) MATHEMATICAL MONOSPACE DIGIT SIX
+1D7FD;1D7FD;1D7FD;0037;0037; # (ðŸ½; ðŸ½; ðŸ½; 7; 7; ) MATHEMATICAL MONOSPACE DIGIT SEVEN
+1D7FE;1D7FE;1D7FE;0038;0038; # (ðŸ¾; ðŸ¾; ðŸ¾; 8; 8; ) MATHEMATICAL MONOSPACE DIGIT EIGHT
+1D7FF;1D7FF;1D7FF;0039;0039; # (ðŸ¿; ðŸ¿; ðŸ¿; 9; 9; ) MATHEMATICAL MONOSPACE DIGIT NINE
+1EE00;1EE00;1EE00;0627;0627; # (𞸀; 𞸀; 𞸀; ا; ا; ) ARABIC MATHEMATICAL ALEF
+1EE01;1EE01;1EE01;0628;0628; # (ðž¸; ðž¸; ðž¸; ب; ب; ) ARABIC MATHEMATICAL BEH
+1EE02;1EE02;1EE02;062C;062C; # (𞸂; 𞸂; 𞸂; ج; ج; ) ARABIC MATHEMATICAL JEEM
+1EE03;1EE03;1EE03;062F;062F; # (𞸃; 𞸃; 𞸃; د; د; ) ARABIC MATHEMATICAL DAL
+1EE05;1EE05;1EE05;0648;0648; # (𞸅; 𞸅; 𞸅; و; و; ) ARABIC MATHEMATICAL WAW
+1EE06;1EE06;1EE06;0632;0632; # (𞸆; 𞸆; 𞸆; ز; ز; ) ARABIC MATHEMATICAL ZAIN
+1EE07;1EE07;1EE07;062D;062D; # (𞸇; 𞸇; 𞸇; ح; ح; ) ARABIC MATHEMATICAL HAH
+1EE08;1EE08;1EE08;0637;0637; # (𞸈; 𞸈; 𞸈; ط; ط; ) ARABIC MATHEMATICAL TAH
+1EE09;1EE09;1EE09;064A;064A; # (𞸉; 𞸉; 𞸉; ي; ي; ) ARABIC MATHEMATICAL YEH
+1EE0A;1EE0A;1EE0A;0643;0643; # (𞸊; 𞸊; 𞸊; ك; ك; ) ARABIC MATHEMATICAL KAF
+1EE0B;1EE0B;1EE0B;0644;0644; # (𞸋; 𞸋; 𞸋; ل; ل; ) ARABIC MATHEMATICAL LAM
+1EE0C;1EE0C;1EE0C;0645;0645; # (𞸌; 𞸌; 𞸌; م; م; ) ARABIC MATHEMATICAL MEEM
+1EE0D;1EE0D;1EE0D;0646;0646; # (ðž¸; ðž¸; ðž¸; Ù†; Ù†; ) ARABIC MATHEMATICAL NOON
+1EE0E;1EE0E;1EE0E;0633;0633; # (𞸎; 𞸎; 𞸎; س; س; ) ARABIC MATHEMATICAL SEEN
+1EE0F;1EE0F;1EE0F;0639;0639; # (ðž¸; ðž¸; ðž¸; ع; ع; ) ARABIC MATHEMATICAL AIN
+1EE10;1EE10;1EE10;0641;0641; # (ðž¸; ðž¸; ðž¸; Ù; Ù; ) ARABIC MATHEMATICAL FEH
+1EE11;1EE11;1EE11;0635;0635; # (𞸑; 𞸑; 𞸑; ص; ص; ) ARABIC MATHEMATICAL SAD
+1EE12;1EE12;1EE12;0642;0642; # (𞸒; 𞸒; 𞸒; ق; ق; ) ARABIC MATHEMATICAL QAF
+1EE13;1EE13;1EE13;0631;0631; # (𞸓; 𞸓; 𞸓; ر; ر; ) ARABIC MATHEMATICAL REH
+1EE14;1EE14;1EE14;0634;0634; # (𞸔; 𞸔; 𞸔; ش; ش; ) ARABIC MATHEMATICAL SHEEN
+1EE15;1EE15;1EE15;062A;062A; # (𞸕; 𞸕; 𞸕; ت; ت; ) ARABIC MATHEMATICAL TEH
+1EE16;1EE16;1EE16;062B;062B; # (𞸖; 𞸖; 𞸖; ث; ث; ) ARABIC MATHEMATICAL THEH
+1EE17;1EE17;1EE17;062E;062E; # (𞸗; 𞸗; 𞸗; خ; خ; ) ARABIC MATHEMATICAL KHAH
+1EE18;1EE18;1EE18;0630;0630; # (𞸘; 𞸘; 𞸘; ذ; ذ; ) ARABIC MATHEMATICAL THAL
+1EE19;1EE19;1EE19;0636;0636; # (𞸙; 𞸙; 𞸙; ض; ض; ) ARABIC MATHEMATICAL DAD
+1EE1A;1EE1A;1EE1A;0638;0638; # (𞸚; 𞸚; 𞸚; ظ; ظ; ) ARABIC MATHEMATICAL ZAH
+1EE1B;1EE1B;1EE1B;063A;063A; # (𞸛; 𞸛; 𞸛; غ; غ; ) ARABIC MATHEMATICAL GHAIN
+1EE1C;1EE1C;1EE1C;066E;066E; # (𞸜; 𞸜; 𞸜; ٮ; ٮ; ) ARABIC MATHEMATICAL DOTLESS BEH
+1EE1D;1EE1D;1EE1D;06BA;06BA; # (ðž¸; ðž¸; ðž¸; Úº; Úº; ) ARABIC MATHEMATICAL DOTLESS NOON
+1EE1E;1EE1E;1EE1E;06A1;06A1; # (𞸞; 𞸞; 𞸞; ڡ; ڡ; ) ARABIC MATHEMATICAL DOTLESS FEH
+1EE1F;1EE1F;1EE1F;066F;066F; # (𞸟; 𞸟; 𞸟; ٯ; ٯ; ) ARABIC MATHEMATICAL DOTLESS QAF
+1EE21;1EE21;1EE21;0628;0628; # (𞸡; 𞸡; 𞸡; ب; ب; ) ARABIC MATHEMATICAL INITIAL BEH
+1EE22;1EE22;1EE22;062C;062C; # (𞸢; 𞸢; 𞸢; ج; ج; ) ARABIC MATHEMATICAL INITIAL JEEM
+1EE24;1EE24;1EE24;0647;0647; # (𞸤; 𞸤; 𞸤; ه; ه; ) ARABIC MATHEMATICAL INITIAL HEH
+1EE27;1EE27;1EE27;062D;062D; # (𞸧; 𞸧; 𞸧; ح; ح; ) ARABIC MATHEMATICAL INITIAL HAH
+1EE29;1EE29;1EE29;064A;064A; # (𞸩; 𞸩; 𞸩; ي; ي; ) ARABIC MATHEMATICAL INITIAL YEH
+1EE2A;1EE2A;1EE2A;0643;0643; # (𞸪; 𞸪; 𞸪; ك; ك; ) ARABIC MATHEMATICAL INITIAL KAF
+1EE2B;1EE2B;1EE2B;0644;0644; # (𞸫; 𞸫; 𞸫; ل; ل; ) ARABIC MATHEMATICAL INITIAL LAM
+1EE2C;1EE2C;1EE2C;0645;0645; # (𞸬; 𞸬; 𞸬; م; م; ) ARABIC MATHEMATICAL INITIAL MEEM
+1EE2D;1EE2D;1EE2D;0646;0646; # (𞸭; 𞸭; 𞸭; ن; ن; ) ARABIC MATHEMATICAL INITIAL NOON
+1EE2E;1EE2E;1EE2E;0633;0633; # (𞸮; 𞸮; 𞸮; س; س; ) ARABIC MATHEMATICAL INITIAL SEEN
+1EE2F;1EE2F;1EE2F;0639;0639; # (𞸯; 𞸯; 𞸯; ع; ع; ) ARABIC MATHEMATICAL INITIAL AIN
+1EE30;1EE30;1EE30;0641;0641; # (𞸰; 𞸰; 𞸰; Ù; Ù; ) ARABIC MATHEMATICAL INITIAL FEH
+1EE31;1EE31;1EE31;0635;0635; # (𞸱; 𞸱; 𞸱; ص; ص; ) ARABIC MATHEMATICAL INITIAL SAD
+1EE32;1EE32;1EE32;0642;0642; # (𞸲; 𞸲; 𞸲; ق; ق; ) ARABIC MATHEMATICAL INITIAL QAF
+1EE34;1EE34;1EE34;0634;0634; # (𞸴; 𞸴; 𞸴; ش; ش; ) ARABIC MATHEMATICAL INITIAL SHEEN
+1EE35;1EE35;1EE35;062A;062A; # (𞸵; 𞸵; 𞸵; ت; ت; ) ARABIC MATHEMATICAL INITIAL TEH
+1EE36;1EE36;1EE36;062B;062B; # (𞸶; 𞸶; 𞸶; ث; ث; ) ARABIC MATHEMATICAL INITIAL THEH
+1EE37;1EE37;1EE37;062E;062E; # (𞸷; 𞸷; 𞸷; خ; خ; ) ARABIC MATHEMATICAL INITIAL KHAH
+1EE39;1EE39;1EE39;0636;0636; # (𞸹; 𞸹; 𞸹; ض; ض; ) ARABIC MATHEMATICAL INITIAL DAD
+1EE3B;1EE3B;1EE3B;063A;063A; # (𞸻; 𞸻; 𞸻; غ; غ; ) ARABIC MATHEMATICAL INITIAL GHAIN
+1EE42;1EE42;1EE42;062C;062C; # (𞹂; 𞹂; 𞹂; ج; ج; ) ARABIC MATHEMATICAL TAILED JEEM
+1EE47;1EE47;1EE47;062D;062D; # (𞹇; 𞹇; 𞹇; ح; ح; ) ARABIC MATHEMATICAL TAILED HAH
+1EE49;1EE49;1EE49;064A;064A; # (𞹉; 𞹉; 𞹉; ي; ي; ) ARABIC MATHEMATICAL TAILED YEH
+1EE4B;1EE4B;1EE4B;0644;0644; # (𞹋; 𞹋; 𞹋; ل; ل; ) ARABIC MATHEMATICAL TAILED LAM
+1EE4D;1EE4D;1EE4D;0646;0646; # (ðž¹; ðž¹; ðž¹; Ù†; Ù†; ) ARABIC MATHEMATICAL TAILED NOON
+1EE4E;1EE4E;1EE4E;0633;0633; # (𞹎; 𞹎; 𞹎; س; س; ) ARABIC MATHEMATICAL TAILED SEEN
+1EE4F;1EE4F;1EE4F;0639;0639; # (ðž¹; ðž¹; ðž¹; ع; ع; ) ARABIC MATHEMATICAL TAILED AIN
+1EE51;1EE51;1EE51;0635;0635; # (𞹑; 𞹑; 𞹑; ص; ص; ) ARABIC MATHEMATICAL TAILED SAD
+1EE52;1EE52;1EE52;0642;0642; # (ðž¹’; ðž¹’; ðž¹’; Ù‚; Ù‚; ) ARABIC MATHEMATICAL TAILED QAF
+1EE54;1EE54;1EE54;0634;0634; # (ðž¹”; ðž¹”; ðž¹”; Ø´; Ø´; ) ARABIC MATHEMATICAL TAILED SHEEN
+1EE57;1EE57;1EE57;062E;062E; # (ðž¹—; ðž¹—; ðž¹—; Ø®; Ø®; ) ARABIC MATHEMATICAL TAILED KHAH
+1EE59;1EE59;1EE59;0636;0636; # (𞹙; 𞹙; 𞹙; ض; ض; ) ARABIC MATHEMATICAL TAILED DAD
+1EE5B;1EE5B;1EE5B;063A;063A; # (𞹛; 𞹛; 𞹛; غ; غ; ) ARABIC MATHEMATICAL TAILED GHAIN
+1EE5D;1EE5D;1EE5D;06BA;06BA; # (ðž¹; ðž¹; ðž¹; Úº; Úº; ) ARABIC MATHEMATICAL TAILED DOTLESS NOON
+1EE5F;1EE5F;1EE5F;066F;066F; # (𞹟; 𞹟; 𞹟; ٯ; ٯ; ) ARABIC MATHEMATICAL TAILED DOTLESS QAF
+1EE61;1EE61;1EE61;0628;0628; # (𞹡; 𞹡; 𞹡; ب; ب; ) ARABIC MATHEMATICAL STRETCHED BEH
+1EE62;1EE62;1EE62;062C;062C; # (𞹢; 𞹢; 𞹢; ج; ج; ) ARABIC MATHEMATICAL STRETCHED JEEM
+1EE64;1EE64;1EE64;0647;0647; # (𞹤; 𞹤; 𞹤; ه; ه; ) ARABIC MATHEMATICAL STRETCHED HEH
+1EE67;1EE67;1EE67;062D;062D; # (𞹧; 𞹧; 𞹧; ح; ح; ) ARABIC MATHEMATICAL STRETCHED HAH
+1EE68;1EE68;1EE68;0637;0637; # (𞹨; 𞹨; 𞹨; ط; ط; ) ARABIC MATHEMATICAL STRETCHED TAH
+1EE69;1EE69;1EE69;064A;064A; # (𞹩; 𞹩; 𞹩; ي; ي; ) ARABIC MATHEMATICAL STRETCHED YEH
+1EE6A;1EE6A;1EE6A;0643;0643; # (𞹪; 𞹪; 𞹪; ك; ك; ) ARABIC MATHEMATICAL STRETCHED KAF
+1EE6C;1EE6C;1EE6C;0645;0645; # (𞹬; 𞹬; 𞹬; م; م; ) ARABIC MATHEMATICAL STRETCHED MEEM
+1EE6D;1EE6D;1EE6D;0646;0646; # (ðž¹­; ðž¹­; ðž¹­; Ù†; Ù†; ) ARABIC MATHEMATICAL STRETCHED NOON
+1EE6E;1EE6E;1EE6E;0633;0633; # (𞹮; 𞹮; 𞹮; س; س; ) ARABIC MATHEMATICAL STRETCHED SEEN
+1EE6F;1EE6F;1EE6F;0639;0639; # (𞹯; 𞹯; 𞹯; ع; ع; ) ARABIC MATHEMATICAL STRETCHED AIN
+1EE70;1EE70;1EE70;0641;0641; # (ðž¹°; ðž¹°; ðž¹°; Ù; Ù; ) ARABIC MATHEMATICAL STRETCHED FEH
+1EE71;1EE71;1EE71;0635;0635; # (𞹱; 𞹱; 𞹱; ص; ص; ) ARABIC MATHEMATICAL STRETCHED SAD
+1EE72;1EE72;1EE72;0642;0642; # (ðž¹²; ðž¹²; ðž¹²; Ù‚; Ù‚; ) ARABIC MATHEMATICAL STRETCHED QAF
+1EE74;1EE74;1EE74;0634;0634; # (ðž¹´; ðž¹´; ðž¹´; Ø´; Ø´; ) ARABIC MATHEMATICAL STRETCHED SHEEN
+1EE75;1EE75;1EE75;062A;062A; # (𞹵; 𞹵; 𞹵; ت; ت; ) ARABIC MATHEMATICAL STRETCHED TEH
+1EE76;1EE76;1EE76;062B;062B; # (𞹶; 𞹶; 𞹶; ث; ث; ) ARABIC MATHEMATICAL STRETCHED THEH
+1EE77;1EE77;1EE77;062E;062E; # (ðž¹·; ðž¹·; ðž¹·; Ø®; Ø®; ) ARABIC MATHEMATICAL STRETCHED KHAH
+1EE79;1EE79;1EE79;0636;0636; # (𞹹; 𞹹; 𞹹; ض; ض; ) ARABIC MATHEMATICAL STRETCHED DAD
+1EE7A;1EE7A;1EE7A;0638;0638; # (𞹺; 𞹺; 𞹺; ظ; ظ; ) ARABIC MATHEMATICAL STRETCHED ZAH
+1EE7B;1EE7B;1EE7B;063A;063A; # (𞹻; 𞹻; 𞹻; غ; غ; ) ARABIC MATHEMATICAL STRETCHED GHAIN
+1EE7C;1EE7C;1EE7C;066E;066E; # (ðž¹¼; ðž¹¼; ðž¹¼; Ù®; Ù®; ) ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+1EE7E;1EE7E;1EE7E;06A1;06A1; # (ðž¹¾; ðž¹¾; ðž¹¾; Ú¡; Ú¡; ) ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+1EE80;1EE80;1EE80;0627;0627; # (𞺀; 𞺀; 𞺀; ا; ا; ) ARABIC MATHEMATICAL LOOPED ALEF
+1EE81;1EE81;1EE81;0628;0628; # (ðžº; ðžº; ðžº; ب; ب; ) ARABIC MATHEMATICAL LOOPED BEH
+1EE82;1EE82;1EE82;062C;062C; # (𞺂; 𞺂; 𞺂; ج; ج; ) ARABIC MATHEMATICAL LOOPED JEEM
+1EE83;1EE83;1EE83;062F;062F; # (𞺃; 𞺃; 𞺃; د; د; ) ARABIC MATHEMATICAL LOOPED DAL
+1EE84;1EE84;1EE84;0647;0647; # (𞺄; 𞺄; 𞺄; ه; ه; ) ARABIC MATHEMATICAL LOOPED HEH
+1EE85;1EE85;1EE85;0648;0648; # (𞺅; 𞺅; 𞺅; و; و; ) ARABIC MATHEMATICAL LOOPED WAW
+1EE86;1EE86;1EE86;0632;0632; # (𞺆; 𞺆; 𞺆; ز; ز; ) ARABIC MATHEMATICAL LOOPED ZAIN
+1EE87;1EE87;1EE87;062D;062D; # (𞺇; 𞺇; 𞺇; ح; ح; ) ARABIC MATHEMATICAL LOOPED HAH
+1EE88;1EE88;1EE88;0637;0637; # (𞺈; 𞺈; 𞺈; ط; ط; ) ARABIC MATHEMATICAL LOOPED TAH
+1EE89;1EE89;1EE89;064A;064A; # (𞺉; 𞺉; 𞺉; ي; ي; ) ARABIC MATHEMATICAL LOOPED YEH
+1EE8B;1EE8B;1EE8B;0644;0644; # (𞺋; 𞺋; 𞺋; ل; ل; ) ARABIC MATHEMATICAL LOOPED LAM
+1EE8C;1EE8C;1EE8C;0645;0645; # (𞺌; 𞺌; 𞺌; م; م; ) ARABIC MATHEMATICAL LOOPED MEEM
+1EE8D;1EE8D;1EE8D;0646;0646; # (ðžº; ðžº; ðžº; Ù†; Ù†; ) ARABIC MATHEMATICAL LOOPED NOON
+1EE8E;1EE8E;1EE8E;0633;0633; # (𞺎; 𞺎; 𞺎; س; س; ) ARABIC MATHEMATICAL LOOPED SEEN
+1EE8F;1EE8F;1EE8F;0639;0639; # (ðžº; ðžº; ðžº; ع; ع; ) ARABIC MATHEMATICAL LOOPED AIN
+1EE90;1EE90;1EE90;0641;0641; # (ðžº; ðžº; ðžº; Ù; Ù; ) ARABIC MATHEMATICAL LOOPED FEH
+1EE91;1EE91;1EE91;0635;0635; # (𞺑; 𞺑; 𞺑; ص; ص; ) ARABIC MATHEMATICAL LOOPED SAD
+1EE92;1EE92;1EE92;0642;0642; # (𞺒; 𞺒; 𞺒; ق; ق; ) ARABIC MATHEMATICAL LOOPED QAF
+1EE93;1EE93;1EE93;0631;0631; # (𞺓; 𞺓; 𞺓; ر; ر; ) ARABIC MATHEMATICAL LOOPED REH
+1EE94;1EE94;1EE94;0634;0634; # (𞺔; 𞺔; 𞺔; ش; ش; ) ARABIC MATHEMATICAL LOOPED SHEEN
+1EE95;1EE95;1EE95;062A;062A; # (𞺕; 𞺕; 𞺕; ت; ت; ) ARABIC MATHEMATICAL LOOPED TEH
+1EE96;1EE96;1EE96;062B;062B; # (𞺖; 𞺖; 𞺖; ث; ث; ) ARABIC MATHEMATICAL LOOPED THEH
+1EE97;1EE97;1EE97;062E;062E; # (𞺗; 𞺗; 𞺗; خ; خ; ) ARABIC MATHEMATICAL LOOPED KHAH
+1EE98;1EE98;1EE98;0630;0630; # (𞺘; 𞺘; 𞺘; ذ; ذ; ) ARABIC MATHEMATICAL LOOPED THAL
+1EE99;1EE99;1EE99;0636;0636; # (𞺙; 𞺙; 𞺙; ض; ض; ) ARABIC MATHEMATICAL LOOPED DAD
+1EE9A;1EE9A;1EE9A;0638;0638; # (𞺚; 𞺚; 𞺚; ظ; ظ; ) ARABIC MATHEMATICAL LOOPED ZAH
+1EE9B;1EE9B;1EE9B;063A;063A; # (𞺛; 𞺛; 𞺛; غ; غ; ) ARABIC MATHEMATICAL LOOPED GHAIN
+1EEA1;1EEA1;1EEA1;0628;0628; # (𞺡; 𞺡; 𞺡; ب; ب; ) ARABIC MATHEMATICAL DOUBLE-STRUCK BEH
+1EEA2;1EEA2;1EEA2;062C;062C; # (𞺢; 𞺢; 𞺢; ج; ج; ) ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM
+1EEA3;1EEA3;1EEA3;062F;062F; # (𞺣; 𞺣; 𞺣; د; د; ) ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+1EEA5;1EEA5;1EEA5;0648;0648; # (𞺥; 𞺥; 𞺥; و; و; ) ARABIC MATHEMATICAL DOUBLE-STRUCK WAW
+1EEA6;1EEA6;1EEA6;0632;0632; # (𞺦; 𞺦; 𞺦; ز; ز; ) ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN
+1EEA7;1EEA7;1EEA7;062D;062D; # (𞺧; 𞺧; 𞺧; ح; ح; ) ARABIC MATHEMATICAL DOUBLE-STRUCK HAH
+1EEA8;1EEA8;1EEA8;0637;0637; # (𞺨; 𞺨; 𞺨; ط; ط; ) ARABIC MATHEMATICAL DOUBLE-STRUCK TAH
+1EEA9;1EEA9;1EEA9;064A;064A; # (𞺩; 𞺩; 𞺩; ي; ي; ) ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+1EEAB;1EEAB;1EEAB;0644;0644; # (𞺫; 𞺫; 𞺫; ل; ل; ) ARABIC MATHEMATICAL DOUBLE-STRUCK LAM
+1EEAC;1EEAC;1EEAC;0645;0645; # (𞺬; 𞺬; 𞺬; م; م; ) ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM
+1EEAD;1EEAD;1EEAD;0646;0646; # (𞺭; 𞺭; 𞺭; ن; ن; ) ARABIC MATHEMATICAL DOUBLE-STRUCK NOON
+1EEAE;1EEAE;1EEAE;0633;0633; # (𞺮; 𞺮; 𞺮; س; س; ) ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN
+1EEAF;1EEAF;1EEAF;0639;0639; # (𞺯; 𞺯; 𞺯; ع; ع; ) ARABIC MATHEMATICAL DOUBLE-STRUCK AIN
+1EEB0;1EEB0;1EEB0;0641;0641; # (𞺰; 𞺰; 𞺰; Ù; Ù; ) ARABIC MATHEMATICAL DOUBLE-STRUCK FEH
+1EEB1;1EEB1;1EEB1;0635;0635; # (𞺱; 𞺱; 𞺱; ص; ص; ) ARABIC MATHEMATICAL DOUBLE-STRUCK SAD
+1EEB2;1EEB2;1EEB2;0642;0642; # (𞺲; 𞺲; 𞺲; ق; ق; ) ARABIC MATHEMATICAL DOUBLE-STRUCK QAF
+1EEB3;1EEB3;1EEB3;0631;0631; # (𞺳; 𞺳; 𞺳; ر; ر; ) ARABIC MATHEMATICAL DOUBLE-STRUCK REH
+1EEB4;1EEB4;1EEB4;0634;0634; # (𞺴; 𞺴; 𞺴; ش; ش; ) ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN
+1EEB5;1EEB5;1EEB5;062A;062A; # (𞺵; 𞺵; 𞺵; ت; ت; ) ARABIC MATHEMATICAL DOUBLE-STRUCK TEH
+1EEB6;1EEB6;1EEB6;062B;062B; # (𞺶; 𞺶; 𞺶; ث; ث; ) ARABIC MATHEMATICAL DOUBLE-STRUCK THEH
+1EEB7;1EEB7;1EEB7;062E;062E; # (𞺷; 𞺷; 𞺷; خ; خ; ) ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH
+1EEB8;1EEB8;1EEB8;0630;0630; # (𞺸; 𞺸; 𞺸; ذ; ذ; ) ARABIC MATHEMATICAL DOUBLE-STRUCK THAL
+1EEB9;1EEB9;1EEB9;0636;0636; # (𞺹; 𞺹; 𞺹; ض; ض; ) ARABIC MATHEMATICAL DOUBLE-STRUCK DAD
+1EEBA;1EEBA;1EEBA;0638;0638; # (𞺺; 𞺺; 𞺺; ظ; ظ; ) ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH
+1EEBB;1EEBB;1EEBB;063A;063A; # (𞺻; 𞺻; 𞺻; غ; غ; ) ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+1F100;1F100;1F100;0030 002E;0030 002E; # (🄀; 🄀; 🄀; 0.; 0.; ) DIGIT ZERO FULL STOP
+1F101;1F101;1F101;0030 002C;0030 002C; # (ðŸ„; ðŸ„; ðŸ„; 0,; 0,; ) DIGIT ZERO COMMA
+1F102;1F102;1F102;0031 002C;0031 002C; # (🄂; 🄂; 🄂; 1,; 1,; ) DIGIT ONE COMMA
+1F103;1F103;1F103;0032 002C;0032 002C; # (🄃; 🄃; 🄃; 2,; 2,; ) DIGIT TWO COMMA
+1F104;1F104;1F104;0033 002C;0033 002C; # (🄄; 🄄; 🄄; 3,; 3,; ) DIGIT THREE COMMA
+1F105;1F105;1F105;0034 002C;0034 002C; # (🄅; 🄅; 🄅; 4,; 4,; ) DIGIT FOUR COMMA
+1F106;1F106;1F106;0035 002C;0035 002C; # (🄆; 🄆; 🄆; 5,; 5,; ) DIGIT FIVE COMMA
+1F107;1F107;1F107;0036 002C;0036 002C; # (🄇; 🄇; 🄇; 6,; 6,; ) DIGIT SIX COMMA
+1F108;1F108;1F108;0037 002C;0037 002C; # (🄈; 🄈; 🄈; 7,; 7,; ) DIGIT SEVEN COMMA
+1F109;1F109;1F109;0038 002C;0038 002C; # (🄉; 🄉; 🄉; 8,; 8,; ) DIGIT EIGHT COMMA
+1F10A;1F10A;1F10A;0039 002C;0039 002C; # (🄊; 🄊; 🄊; 9,; 9,; ) DIGIT NINE COMMA
+1F110;1F110;1F110;0028 0041 0029;0028 0041 0029; # (ðŸ„; ðŸ„; ðŸ„; (A); (A); ) PARENTHESIZED LATIN CAPITAL LETTER A
+1F111;1F111;1F111;0028 0042 0029;0028 0042 0029; # (🄑; 🄑; 🄑; (B); (B); ) PARENTHESIZED LATIN CAPITAL LETTER B
+1F112;1F112;1F112;0028 0043 0029;0028 0043 0029; # (🄒; 🄒; 🄒; (C); (C); ) PARENTHESIZED LATIN CAPITAL LETTER C
+1F113;1F113;1F113;0028 0044 0029;0028 0044 0029; # (🄓; 🄓; 🄓; (D); (D); ) PARENTHESIZED LATIN CAPITAL LETTER D
+1F114;1F114;1F114;0028 0045 0029;0028 0045 0029; # (🄔; 🄔; 🄔; (E); (E); ) PARENTHESIZED LATIN CAPITAL LETTER E
+1F115;1F115;1F115;0028 0046 0029;0028 0046 0029; # (🄕; 🄕; 🄕; (F); (F); ) PARENTHESIZED LATIN CAPITAL LETTER F
+1F116;1F116;1F116;0028 0047 0029;0028 0047 0029; # (🄖; 🄖; 🄖; (G); (G); ) PARENTHESIZED LATIN CAPITAL LETTER G
+1F117;1F117;1F117;0028 0048 0029;0028 0048 0029; # (🄗; 🄗; 🄗; (H); (H); ) PARENTHESIZED LATIN CAPITAL LETTER H
+1F118;1F118;1F118;0028 0049 0029;0028 0049 0029; # (🄘; 🄘; 🄘; (I); (I); ) PARENTHESIZED LATIN CAPITAL LETTER I
+1F119;1F119;1F119;0028 004A 0029;0028 004A 0029; # (🄙; 🄙; 🄙; (J); (J); ) PARENTHESIZED LATIN CAPITAL LETTER J
+1F11A;1F11A;1F11A;0028 004B 0029;0028 004B 0029; # (🄚; 🄚; 🄚; (K); (K); ) PARENTHESIZED LATIN CAPITAL LETTER K
+1F11B;1F11B;1F11B;0028 004C 0029;0028 004C 0029; # (🄛; 🄛; 🄛; (L); (L); ) PARENTHESIZED LATIN CAPITAL LETTER L
+1F11C;1F11C;1F11C;0028 004D 0029;0028 004D 0029; # (🄜; 🄜; 🄜; (M); (M); ) PARENTHESIZED LATIN CAPITAL LETTER M
+1F11D;1F11D;1F11D;0028 004E 0029;0028 004E 0029; # (ðŸ„; ðŸ„; ðŸ„; (N); (N); ) PARENTHESIZED LATIN CAPITAL LETTER N
+1F11E;1F11E;1F11E;0028 004F 0029;0028 004F 0029; # (🄞; 🄞; 🄞; (O); (O); ) PARENTHESIZED LATIN CAPITAL LETTER O
+1F11F;1F11F;1F11F;0028 0050 0029;0028 0050 0029; # (🄟; 🄟; 🄟; (P); (P); ) PARENTHESIZED LATIN CAPITAL LETTER P
+1F120;1F120;1F120;0028 0051 0029;0028 0051 0029; # (🄠; 🄠; 🄠; (Q); (Q); ) PARENTHESIZED LATIN CAPITAL LETTER Q
+1F121;1F121;1F121;0028 0052 0029;0028 0052 0029; # (🄡; 🄡; 🄡; (R); (R); ) PARENTHESIZED LATIN CAPITAL LETTER R
+1F122;1F122;1F122;0028 0053 0029;0028 0053 0029; # (🄢; 🄢; 🄢; (S); (S); ) PARENTHESIZED LATIN CAPITAL LETTER S
+1F123;1F123;1F123;0028 0054 0029;0028 0054 0029; # (🄣; 🄣; 🄣; (T); (T); ) PARENTHESIZED LATIN CAPITAL LETTER T
+1F124;1F124;1F124;0028 0055 0029;0028 0055 0029; # (🄤; 🄤; 🄤; (U); (U); ) PARENTHESIZED LATIN CAPITAL LETTER U
+1F125;1F125;1F125;0028 0056 0029;0028 0056 0029; # (🄥; 🄥; 🄥; (V); (V); ) PARENTHESIZED LATIN CAPITAL LETTER V
+1F126;1F126;1F126;0028 0057 0029;0028 0057 0029; # (🄦; 🄦; 🄦; (W); (W); ) PARENTHESIZED LATIN CAPITAL LETTER W
+1F127;1F127;1F127;0028 0058 0029;0028 0058 0029; # (🄧; 🄧; 🄧; (X); (X); ) PARENTHESIZED LATIN CAPITAL LETTER X
+1F128;1F128;1F128;0028 0059 0029;0028 0059 0029; # (🄨; 🄨; 🄨; (Y); (Y); ) PARENTHESIZED LATIN CAPITAL LETTER Y
+1F129;1F129;1F129;0028 005A 0029;0028 005A 0029; # (🄩; 🄩; 🄩; (Z); (Z); ) PARENTHESIZED LATIN CAPITAL LETTER Z
+1F12A;1F12A;1F12A;3014 0053 3015;3014 0053 3015; # (🄪; 🄪; 🄪; 〔S〕; 〔S〕; ) TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S
+1F12B;1F12B;1F12B;0043;0043; # (🄫; 🄫; 🄫; C; C; ) CIRCLED ITALIC LATIN CAPITAL LETTER C
+1F12C;1F12C;1F12C;0052;0052; # (🄬; 🄬; 🄬; R; R; ) CIRCLED ITALIC LATIN CAPITAL LETTER R
+1F12D;1F12D;1F12D;0043 0044;0043 0044; # (🄭; 🄭; 🄭; CD; CD; ) CIRCLED CD
+1F12E;1F12E;1F12E;0057 005A;0057 005A; # (🄮; 🄮; 🄮; WZ; WZ; ) CIRCLED WZ
+1F130;1F130;1F130;0041;0041; # (🄰; 🄰; 🄰; A; A; ) SQUARED LATIN CAPITAL LETTER A
+1F131;1F131;1F131;0042;0042; # (🄱; 🄱; 🄱; B; B; ) SQUARED LATIN CAPITAL LETTER B
+1F132;1F132;1F132;0043;0043; # (🄲; 🄲; 🄲; C; C; ) SQUARED LATIN CAPITAL LETTER C
+1F133;1F133;1F133;0044;0044; # (🄳; 🄳; 🄳; D; D; ) SQUARED LATIN CAPITAL LETTER D
+1F134;1F134;1F134;0045;0045; # (🄴; 🄴; 🄴; E; E; ) SQUARED LATIN CAPITAL LETTER E
+1F135;1F135;1F135;0046;0046; # (🄵; 🄵; 🄵; F; F; ) SQUARED LATIN CAPITAL LETTER F
+1F136;1F136;1F136;0047;0047; # (🄶; 🄶; 🄶; G; G; ) SQUARED LATIN CAPITAL LETTER G
+1F137;1F137;1F137;0048;0048; # (🄷; 🄷; 🄷; H; H; ) SQUARED LATIN CAPITAL LETTER H
+1F138;1F138;1F138;0049;0049; # (🄸; 🄸; 🄸; I; I; ) SQUARED LATIN CAPITAL LETTER I
+1F139;1F139;1F139;004A;004A; # (🄹; 🄹; 🄹; J; J; ) SQUARED LATIN CAPITAL LETTER J
+1F13A;1F13A;1F13A;004B;004B; # (🄺; 🄺; 🄺; K; K; ) SQUARED LATIN CAPITAL LETTER K
+1F13B;1F13B;1F13B;004C;004C; # (🄻; 🄻; 🄻; L; L; ) SQUARED LATIN CAPITAL LETTER L
+1F13C;1F13C;1F13C;004D;004D; # (🄼; 🄼; 🄼; M; M; ) SQUARED LATIN CAPITAL LETTER M
+1F13D;1F13D;1F13D;004E;004E; # (🄽; 🄽; 🄽; N; N; ) SQUARED LATIN CAPITAL LETTER N
+1F13E;1F13E;1F13E;004F;004F; # (🄾; 🄾; 🄾; O; O; ) SQUARED LATIN CAPITAL LETTER O
+1F13F;1F13F;1F13F;0050;0050; # (🄿; 🄿; 🄿; P; P; ) SQUARED LATIN CAPITAL LETTER P
+1F140;1F140;1F140;0051;0051; # (🅀; 🅀; 🅀; Q; Q; ) SQUARED LATIN CAPITAL LETTER Q
+1F141;1F141;1F141;0052;0052; # (ðŸ…; ðŸ…; ðŸ…; R; R; ) SQUARED LATIN CAPITAL LETTER R
+1F142;1F142;1F142;0053;0053; # (🅂; 🅂; 🅂; S; S; ) SQUARED LATIN CAPITAL LETTER S
+1F143;1F143;1F143;0054;0054; # (🅃; 🅃; 🅃; T; T; ) SQUARED LATIN CAPITAL LETTER T
+1F144;1F144;1F144;0055;0055; # (🅄; 🅄; 🅄; U; U; ) SQUARED LATIN CAPITAL LETTER U
+1F145;1F145;1F145;0056;0056; # (🅅; 🅅; 🅅; V; V; ) SQUARED LATIN CAPITAL LETTER V
+1F146;1F146;1F146;0057;0057; # (🅆; 🅆; 🅆; W; W; ) SQUARED LATIN CAPITAL LETTER W
+1F147;1F147;1F147;0058;0058; # (🅇; 🅇; 🅇; X; X; ) SQUARED LATIN CAPITAL LETTER X
+1F148;1F148;1F148;0059;0059; # (🅈; 🅈; 🅈; Y; Y; ) SQUARED LATIN CAPITAL LETTER Y
+1F149;1F149;1F149;005A;005A; # (🅉; 🅉; 🅉; Z; Z; ) SQUARED LATIN CAPITAL LETTER Z
+1F14A;1F14A;1F14A;0048 0056;0048 0056; # (🅊; 🅊; 🅊; HV; HV; ) SQUARED HV
+1F14B;1F14B;1F14B;004D 0056;004D 0056; # (🅋; 🅋; 🅋; MV; MV; ) SQUARED MV
+1F14C;1F14C;1F14C;0053 0044;0053 0044; # (🅌; 🅌; 🅌; SD; SD; ) SQUARED SD
+1F14D;1F14D;1F14D;0053 0053;0053 0053; # (ðŸ…; ðŸ…; ðŸ…; SS; SS; ) SQUARED SS
+1F14E;1F14E;1F14E;0050 0050 0056;0050 0050 0056; # (🅎; 🅎; 🅎; PPV; PPV; ) SQUARED PPV
+1F14F;1F14F;1F14F;0057 0043;0057 0043; # (ðŸ…; ðŸ…; ðŸ…; WC; WC; ) SQUARED WC
+1F16A;1F16A;1F16A;004D 0043;004D 0043; # (🅪; 🅪; 🅪; MC; MC; ) RAISED MC SIGN
+1F16B;1F16B;1F16B;004D 0044;004D 0044; # (🅫; 🅫; 🅫; MD; MD; ) RAISED MD SIGN
+1F190;1F190;1F190;0044 004A;0044 004A; # (ðŸ†; ðŸ†; ðŸ†; DJ; DJ; ) SQUARE DJ
+1F200;1F200;1F200;307B 304B;307B 304B; # (🈀; 🈀; 🈀; ã»ã‹; ã»ã‹; ) SQUARE HIRAGANA HOKA
+1F201;1F201;1F201;30B3 30B3;30B3 30B3; # (ðŸˆ; ðŸˆ; ðŸˆ; ココ; ココ; ) SQUARED KATAKANA KOKO
+1F202;1F202;1F202;30B5;30B5; # (🈂; 🈂; 🈂; サ; サ; ) SQUARED KATAKANA SA
+1F210;1F210;1F210;624B;624B; # (ðŸˆ; ðŸˆ; ðŸˆ; 手; 手; ) SQUARED CJK UNIFIED IDEOGRAPH-624B
+1F211;1F211;1F211;5B57;5B57; # (🈑; 🈑; 🈑; 字; 字; ) SQUARED CJK UNIFIED IDEOGRAPH-5B57
+1F212;1F212;1F212;53CC;53CC; # (🈒; 🈒; 🈒; åŒ; åŒ; ) SQUARED CJK UNIFIED IDEOGRAPH-53CC
+1F213;1F213;1F213;30C7;30C6 3099; # (🈓; 🈓; 🈓; デ; テ◌゙; ) SQUARED KATAKANA DE
+1F214;1F214;1F214;4E8C;4E8C; # (🈔; 🈔; 🈔; 二; 二; ) SQUARED CJK UNIFIED IDEOGRAPH-4E8C
+1F215;1F215;1F215;591A;591A; # (🈕; 🈕; 🈕; 多; 多; ) SQUARED CJK UNIFIED IDEOGRAPH-591A
+1F216;1F216;1F216;89E3;89E3; # (🈖; 🈖; 🈖; 解; 解; ) SQUARED CJK UNIFIED IDEOGRAPH-89E3
+1F217;1F217;1F217;5929;5929; # (🈗; 🈗; 🈗; 天; 天; ) SQUARED CJK UNIFIED IDEOGRAPH-5929
+1F218;1F218;1F218;4EA4;4EA4; # (🈘; 🈘; 🈘; 交; 交; ) SQUARED CJK UNIFIED IDEOGRAPH-4EA4
+1F219;1F219;1F219;6620;6620; # (🈙; 🈙; 🈙; 映; 映; ) SQUARED CJK UNIFIED IDEOGRAPH-6620
+1F21A;1F21A;1F21A;7121;7121; # (🈚; 🈚; 🈚; 無; 無; ) SQUARED CJK UNIFIED IDEOGRAPH-7121
+1F21B;1F21B;1F21B;6599;6599; # (🈛; 🈛; 🈛; 料; 料; ) SQUARED CJK UNIFIED IDEOGRAPH-6599
+1F21C;1F21C;1F21C;524D;524D; # (🈜; 🈜; 🈜; å‰; å‰; ) SQUARED CJK UNIFIED IDEOGRAPH-524D
+1F21D;1F21D;1F21D;5F8C;5F8C; # (ðŸˆ; ðŸˆ; ðŸˆ; 後; 後; ) SQUARED CJK UNIFIED IDEOGRAPH-5F8C
+1F21E;1F21E;1F21E;518D;518D; # (🈞; 🈞; 🈞; å†; å†; ) SQUARED CJK UNIFIED IDEOGRAPH-518D
+1F21F;1F21F;1F21F;65B0;65B0; # (🈟; 🈟; 🈟; 新; 新; ) SQUARED CJK UNIFIED IDEOGRAPH-65B0
+1F220;1F220;1F220;521D;521D; # (🈠; 🈠; 🈠; åˆ; åˆ; ) SQUARED CJK UNIFIED IDEOGRAPH-521D
+1F221;1F221;1F221;7D42;7D42; # (🈡; 🈡; 🈡; 終; 終; ) SQUARED CJK UNIFIED IDEOGRAPH-7D42
+1F222;1F222;1F222;751F;751F; # (🈢; 🈢; 🈢; 生; 生; ) SQUARED CJK UNIFIED IDEOGRAPH-751F
+1F223;1F223;1F223;8CA9;8CA9; # (🈣; 🈣; 🈣; 販; 販; ) SQUARED CJK UNIFIED IDEOGRAPH-8CA9
+1F224;1F224;1F224;58F0;58F0; # (🈤; 🈤; 🈤; 声; 声; ) SQUARED CJK UNIFIED IDEOGRAPH-58F0
+1F225;1F225;1F225;5439;5439; # (🈥; 🈥; 🈥; å¹; å¹; ) SQUARED CJK UNIFIED IDEOGRAPH-5439
+1F226;1F226;1F226;6F14;6F14; # (🈦; 🈦; 🈦; 演; 演; ) SQUARED CJK UNIFIED IDEOGRAPH-6F14
+1F227;1F227;1F227;6295;6295; # (🈧; 🈧; 🈧; 投; 投; ) SQUARED CJK UNIFIED IDEOGRAPH-6295
+1F228;1F228;1F228;6355;6355; # (🈨; 🈨; 🈨; æ•; æ•; ) SQUARED CJK UNIFIED IDEOGRAPH-6355
+1F229;1F229;1F229;4E00;4E00; # (🈩; 🈩; 🈩; 一; 一; ) SQUARED CJK UNIFIED IDEOGRAPH-4E00
+1F22A;1F22A;1F22A;4E09;4E09; # (🈪; 🈪; 🈪; 三; 三; ) SQUARED CJK UNIFIED IDEOGRAPH-4E09
+1F22B;1F22B;1F22B;904A;904A; # (🈫; 🈫; 🈫; éŠ; éŠ; ) SQUARED CJK UNIFIED IDEOGRAPH-904A
+1F22C;1F22C;1F22C;5DE6;5DE6; # (🈬; 🈬; 🈬; 左; 左; ) SQUARED CJK UNIFIED IDEOGRAPH-5DE6
+1F22D;1F22D;1F22D;4E2D;4E2D; # (🈭; 🈭; 🈭; 中; 中; ) SQUARED CJK UNIFIED IDEOGRAPH-4E2D
+1F22E;1F22E;1F22E;53F3;53F3; # (🈮; 🈮; 🈮; å³; å³; ) SQUARED CJK UNIFIED IDEOGRAPH-53F3
+1F22F;1F22F;1F22F;6307;6307; # (🈯; 🈯; 🈯; 指; 指; ) SQUARED CJK UNIFIED IDEOGRAPH-6307
+1F230;1F230;1F230;8D70;8D70; # (🈰; 🈰; 🈰; 走; 走; ) SQUARED CJK UNIFIED IDEOGRAPH-8D70
+1F231;1F231;1F231;6253;6253; # (🈱; 🈱; 🈱; 打; 打; ) SQUARED CJK UNIFIED IDEOGRAPH-6253
+1F232;1F232;1F232;7981;7981; # (🈲; 🈲; 🈲; ç¦; ç¦; ) SQUARED CJK UNIFIED IDEOGRAPH-7981
+1F233;1F233;1F233;7A7A;7A7A; # (🈳; 🈳; 🈳; 空; 空; ) SQUARED CJK UNIFIED IDEOGRAPH-7A7A
+1F234;1F234;1F234;5408;5408; # (🈴; 🈴; 🈴; åˆ; åˆ; ) SQUARED CJK UNIFIED IDEOGRAPH-5408
+1F235;1F235;1F235;6E80;6E80; # (🈵; 🈵; 🈵; 満; 満; ) SQUARED CJK UNIFIED IDEOGRAPH-6E80
+1F236;1F236;1F236;6709;6709; # (🈶; 🈶; 🈶; 有; 有; ) SQUARED CJK UNIFIED IDEOGRAPH-6709
+1F237;1F237;1F237;6708;6708; # (🈷; 🈷; 🈷; 月; 月; ) SQUARED CJK UNIFIED IDEOGRAPH-6708
+1F238;1F238;1F238;7533;7533; # (🈸; 🈸; 🈸; 申; 申; ) SQUARED CJK UNIFIED IDEOGRAPH-7533
+1F239;1F239;1F239;5272;5272; # (🈹; 🈹; 🈹; 割; 割; ) SQUARED CJK UNIFIED IDEOGRAPH-5272
+1F23A;1F23A;1F23A;55B6;55B6; # (🈺; 🈺; 🈺; 営; 営; ) SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F23B;1F23B;1F23B;914D;914D; # (🈻; 🈻; 🈻; é…; é…; ) SQUARED CJK UNIFIED IDEOGRAPH-914D
+1F240;1F240;1F240;3014 672C 3015;3014 672C 3015; # (🉀; 🉀; 🉀; 〔本〕; 〔本〕; ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
+1F241;1F241;1F241;3014 4E09 3015;3014 4E09 3015; # (ðŸ‰; ðŸ‰; ðŸ‰; 〔三〕; 〔三〕; ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09
+1F242;1F242;1F242;3014 4E8C 3015;3014 4E8C 3015; # (🉂; 🉂; 🉂; 〔二〕; 〔二〕; ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C
+1F243;1F243;1F243;3014 5B89 3015;3014 5B89 3015; # (🉃; 🉃; 🉃; 〔安〕; 〔安〕; ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89
+1F244;1F244;1F244;3014 70B9 3015;3014 70B9 3015; # (🉄; 🉄; 🉄; 〔点〕; 〔点〕; ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9
+1F245;1F245;1F245;3014 6253 3015;3014 6253 3015; # (🉅; 🉅; 🉅; 〔打〕; 〔打〕; ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253
+1F246;1F246;1F246;3014 76D7 3015;3014 76D7 3015; # (🉆; 🉆; 🉆; 〔盗〕; 〔盗〕; ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7
+1F247;1F247;1F247;3014 52DD 3015;3014 52DD 3015; # (🉇; 🉇; 🉇; 〔å‹ã€•; 〔å‹ã€•; ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD
+1F248;1F248;1F248;3014 6557 3015;3014 6557 3015; # (🉈; 🉈; 🉈; 〔敗〕; 〔敗〕; ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+1F250;1F250;1F250;5F97;5F97; # (ðŸ‰; ðŸ‰; ðŸ‰; å¾—; å¾—; ) CIRCLED IDEOGRAPH ADVANTAGE
+1F251;1F251;1F251;53EF;53EF; # (🉑; 🉑; 🉑; å¯; å¯; ) CIRCLED IDEOGRAPH ACCEPT
+2F800;4E3D;4E3D;4E3D;4E3D; # (丽; 丽; 丽; 丽; 丽; ) CJK COMPATIBILITY IDEOGRAPH-2F800
+2F801;4E38;4E38;4E38;4E38; # (ð¯ ; 丸; 丸; 丸; 丸; ) CJK COMPATIBILITY IDEOGRAPH-2F801
+2F802;4E41;4E41;4E41;4E41; # (乁; ä¹; ä¹; ä¹; ä¹; ) CJK COMPATIBILITY IDEOGRAPH-2F802
+2F803;20122;20122;20122;20122; # (𠄢; 𠄢; 𠄢; 𠄢; 𠄢; ) CJK COMPATIBILITY IDEOGRAPH-2F803
+2F804;4F60;4F60;4F60;4F60; # (你; 你; 你; 你; 你; ) CJK COMPATIBILITY IDEOGRAPH-2F804
+2F805;4FAE;4FAE;4FAE;4FAE; # (侮; 侮; 侮; 侮; 侮; ) CJK COMPATIBILITY IDEOGRAPH-2F805
+2F806;4FBB;4FBB;4FBB;4FBB; # (侻; 侻; 侻; 侻; 侻; ) CJK COMPATIBILITY IDEOGRAPH-2F806
+2F807;5002;5002;5002;5002; # (倂; 倂; 倂; 倂; 倂; ) CJK COMPATIBILITY IDEOGRAPH-2F807
+2F808;507A;507A;507A;507A; # (偺; åº; åº; åº; åº; ) CJK COMPATIBILITY IDEOGRAPH-2F808
+2F809;5099;5099;5099;5099; # (備; 備; 備; 備; 備; ) CJK COMPATIBILITY IDEOGRAPH-2F809
+2F80A;50E7;50E7;50E7;50E7; # (僧; 僧; 僧; 僧; 僧; ) CJK COMPATIBILITY IDEOGRAPH-2F80A
+2F80B;50CF;50CF;50CF;50CF; # (像; åƒ; åƒ; åƒ; åƒ; ) CJK COMPATIBILITY IDEOGRAPH-2F80B
+2F80C;349E;349E;349E;349E; # (㒞; 㒞; 㒞; 㒞; 㒞; ) CJK COMPATIBILITY IDEOGRAPH-2F80C
+2F80D;2063A;2063A;2063A;2063A; # (ð¯ ; 𠘺; 𠘺; 𠘺; 𠘺; ) CJK COMPATIBILITY IDEOGRAPH-2F80D
+2F80E;514D;514D;514D;514D; # (免; å…; å…; å…; å…; ) CJK COMPATIBILITY IDEOGRAPH-2F80E
+2F80F;5154;5154;5154;5154; # (ð¯ ; å…”; å…”; å…”; å…”; ) CJK COMPATIBILITY IDEOGRAPH-2F80F
+2F810;5164;5164;5164;5164; # (ð¯ ; å…¤; å…¤; å…¤; å…¤; ) CJK COMPATIBILITY IDEOGRAPH-2F810
+2F811;5177;5177;5177;5177; # (具; 具; 具; 具; 具; ) CJK COMPATIBILITY IDEOGRAPH-2F811
+2F812;2051C;2051C;2051C;2051C; # (𠔜; 𠔜; 𠔜; 𠔜; 𠔜; ) CJK COMPATIBILITY IDEOGRAPH-2F812
+2F813;34B9;34B9;34B9;34B9; # (㒹; 㒹; 㒹; 㒹; 㒹; ) CJK COMPATIBILITY IDEOGRAPH-2F813
+2F814;5167;5167;5167;5167; # (內; 內; 內; 內; 內; ) CJK COMPATIBILITY IDEOGRAPH-2F814
+2F815;518D;518D;518D;518D; # (再; å†; å†; å†; å†; ) CJK COMPATIBILITY IDEOGRAPH-2F815
+2F816;2054B;2054B;2054B;2054B; # (𠕋; 𠕋; 𠕋; 𠕋; 𠕋; ) CJK COMPATIBILITY IDEOGRAPH-2F816
+2F817;5197;5197;5197;5197; # (冗; 冗; 冗; 冗; 冗; ) CJK COMPATIBILITY IDEOGRAPH-2F817
+2F818;51A4;51A4;51A4;51A4; # (冤; 冤; 冤; 冤; 冤; ) CJK COMPATIBILITY IDEOGRAPH-2F818
+2F819;4ECC;4ECC;4ECC;4ECC; # (仌; 仌; 仌; 仌; 仌; ) CJK COMPATIBILITY IDEOGRAPH-2F819
+2F81A;51AC;51AC;51AC;51AC; # (冬; 冬; 冬; 冬; 冬; ) CJK COMPATIBILITY IDEOGRAPH-2F81A
+2F81B;51B5;51B5;51B5;51B5; # (况; 况; 况; 况; 况; ) CJK COMPATIBILITY IDEOGRAPH-2F81B
+2F81C;291DF;291DF;291DF;291DF; # (𩇟; 𩇟; 𩇟; 𩇟; 𩇟; ) CJK COMPATIBILITY IDEOGRAPH-2F81C
+2F81D;51F5;51F5;51F5;51F5; # (ð¯ ; 凵; 凵; 凵; 凵; ) CJK COMPATIBILITY IDEOGRAPH-2F81D
+2F81E;5203;5203;5203;5203; # (刃; 刃; 刃; 刃; 刃; ) CJK COMPATIBILITY IDEOGRAPH-2F81E
+2F81F;34DF;34DF;34DF;34DF; # (㓟; 㓟; 㓟; 㓟; 㓟; ) CJK COMPATIBILITY IDEOGRAPH-2F81F
+2F820;523B;523B;523B;523B; # (刻; 刻; 刻; 刻; 刻; ) CJK COMPATIBILITY IDEOGRAPH-2F820
+2F821;5246;5246;5246;5246; # (剆; 剆; 剆; 剆; 剆; ) CJK COMPATIBILITY IDEOGRAPH-2F821
+2F822;5272;5272;5272;5272; # (割; 割; 割; 割; 割; ) CJK COMPATIBILITY IDEOGRAPH-2F822
+2F823;5277;5277;5277;5277; # (剷; 剷; 剷; 剷; 剷; ) CJK COMPATIBILITY IDEOGRAPH-2F823
+2F824;3515;3515;3515;3515; # (㔕; 㔕; 㔕; 㔕; 㔕; ) CJK COMPATIBILITY IDEOGRAPH-2F824
+2F825;52C7;52C7;52C7;52C7; # (勇; 勇; 勇; 勇; 勇; ) CJK COMPATIBILITY IDEOGRAPH-2F825
+2F826;52C9;52C9;52C9;52C9; # (勉; 勉; 勉; 勉; 勉; ) CJK COMPATIBILITY IDEOGRAPH-2F826
+2F827;52E4;52E4;52E4;52E4; # (勤; 勤; 勤; 勤; 勤; ) CJK COMPATIBILITY IDEOGRAPH-2F827
+2F828;52FA;52FA;52FA;52FA; # (勺; 勺; 勺; 勺; 勺; ) CJK COMPATIBILITY IDEOGRAPH-2F828
+2F829;5305;5305;5305;5305; # (包; 包; 包; 包; 包; ) CJK COMPATIBILITY IDEOGRAPH-2F829
+2F82A;5306;5306;5306;5306; # (匆; 匆; 匆; 匆; 匆; ) CJK COMPATIBILITY IDEOGRAPH-2F82A
+2F82B;5317;5317;5317;5317; # (北; 北; 北; 北; 北; ) CJK COMPATIBILITY IDEOGRAPH-2F82B
+2F82C;5349;5349;5349;5349; # (卉; å‰; å‰; å‰; å‰; ) CJK COMPATIBILITY IDEOGRAPH-2F82C
+2F82D;5351;5351;5351;5351; # (卑; å‘; å‘; å‘; å‘; ) CJK COMPATIBILITY IDEOGRAPH-2F82D
+2F82E;535A;535A;535A;535A; # (博; åš; åš; åš; åš; ) CJK COMPATIBILITY IDEOGRAPH-2F82E
+2F82F;5373;5373;5373;5373; # (即; å³; å³; å³; å³; ) CJK COMPATIBILITY IDEOGRAPH-2F82F
+2F830;537D;537D;537D;537D; # (卽; å½; å½; å½; å½; ) CJK COMPATIBILITY IDEOGRAPH-2F830
+2F831;537F;537F;537F;537F; # (卿; å¿; å¿; å¿; å¿; ) CJK COMPATIBILITY IDEOGRAPH-2F831
+2F832;537F;537F;537F;537F; # (卿; å¿; å¿; å¿; å¿; ) CJK COMPATIBILITY IDEOGRAPH-2F832
+2F833;537F;537F;537F;537F; # (卿; å¿; å¿; å¿; å¿; ) CJK COMPATIBILITY IDEOGRAPH-2F833
+2F834;20A2C;20A2C;20A2C;20A2C; # (𠨬; 𠨬; 𠨬; 𠨬; 𠨬; ) CJK COMPATIBILITY IDEOGRAPH-2F834
+2F835;7070;7070;7070;7070; # (灰; ç°; ç°; ç°; ç°; ) CJK COMPATIBILITY IDEOGRAPH-2F835
+2F836;53CA;53CA;53CA;53CA; # (及; åŠ; åŠ; åŠ; åŠ; ) CJK COMPATIBILITY IDEOGRAPH-2F836
+2F837;53DF;53DF;53DF;53DF; # (叟; åŸ; åŸ; åŸ; åŸ; ) CJK COMPATIBILITY IDEOGRAPH-2F837
+2F838;20B63;20B63;20B63;20B63; # (𠭣; 𠭣; 𠭣; 𠭣; 𠭣; ) CJK COMPATIBILITY IDEOGRAPH-2F838
+2F839;53EB;53EB;53EB;53EB; # (叫; å«; å«; å«; å«; ) CJK COMPATIBILITY IDEOGRAPH-2F839
+2F83A;53F1;53F1;53F1;53F1; # (叱; å±; å±; å±; å±; ) CJK COMPATIBILITY IDEOGRAPH-2F83A
+2F83B;5406;5406;5406;5406; # (吆; å†; å†; å†; å†; ) CJK COMPATIBILITY IDEOGRAPH-2F83B
+2F83C;549E;549E;549E;549E; # (咞; 咞; 咞; 咞; 咞; ) CJK COMPATIBILITY IDEOGRAPH-2F83C
+2F83D;5438;5438;5438;5438; # (吸; å¸; å¸; å¸; å¸; ) CJK COMPATIBILITY IDEOGRAPH-2F83D
+2F83E;5448;5448;5448;5448; # (呈; 呈; 呈; 呈; 呈; ) CJK COMPATIBILITY IDEOGRAPH-2F83E
+2F83F;5468;5468;5468;5468; # (周; 周; 周; 周; 周; ) CJK COMPATIBILITY IDEOGRAPH-2F83F
+2F840;54A2;54A2;54A2;54A2; # (咢; 咢; 咢; 咢; 咢; ) CJK COMPATIBILITY IDEOGRAPH-2F840
+2F841;54F6;54F6;54F6;54F6; # (ð¯¡; 哶; 哶; 哶; 哶; ) CJK COMPATIBILITY IDEOGRAPH-2F841
+2F842;5510;5510;5510;5510; # (唐; å”; å”; å”; å”; ) CJK COMPATIBILITY IDEOGRAPH-2F842
+2F843;5553;5553;5553;5553; # (啓; 啓; 啓; 啓; 啓; ) CJK COMPATIBILITY IDEOGRAPH-2F843
+2F844;5563;5563;5563;5563; # (啣; 啣; 啣; 啣; 啣; ) CJK COMPATIBILITY IDEOGRAPH-2F844
+2F845;5584;5584;5584;5584; # (善; 善; 善; 善; 善; ) CJK COMPATIBILITY IDEOGRAPH-2F845
+2F846;5584;5584;5584;5584; # (善; 善; 善; 善; 善; ) CJK COMPATIBILITY IDEOGRAPH-2F846
+2F847;5599;5599;5599;5599; # (喙; 喙; 喙; 喙; 喙; ) CJK COMPATIBILITY IDEOGRAPH-2F847
+2F848;55AB;55AB;55AB;55AB; # (喫; 喫; 喫; 喫; 喫; ) CJK COMPATIBILITY IDEOGRAPH-2F848
+2F849;55B3;55B3;55B3;55B3; # (喳; 喳; 喳; 喳; 喳; ) CJK COMPATIBILITY IDEOGRAPH-2F849
+2F84A;55C2;55C2;55C2;55C2; # (嗂; 嗂; 嗂; 嗂; 嗂; ) CJK COMPATIBILITY IDEOGRAPH-2F84A
+2F84B;5716;5716;5716;5716; # (圖; 圖; 圖; 圖; 圖; ) CJK COMPATIBILITY IDEOGRAPH-2F84B
+2F84C;5606;5606;5606;5606; # (嘆; 嘆; 嘆; 嘆; 嘆; ) CJK COMPATIBILITY IDEOGRAPH-2F84C
+2F84D;5717;5717;5717;5717; # (ð¯¡; 圗; 圗; 圗; 圗; ) CJK COMPATIBILITY IDEOGRAPH-2F84D
+2F84E;5651;5651;5651;5651; # (噑; 噑; 噑; 噑; 噑; ) CJK COMPATIBILITY IDEOGRAPH-2F84E
+2F84F;5674;5674;5674;5674; # (ð¯¡; å™´; å™´; å™´; å™´; ) CJK COMPATIBILITY IDEOGRAPH-2F84F
+2F850;5207;5207;5207;5207; # (ð¯¡; 切; 切; 切; 切; ) CJK COMPATIBILITY IDEOGRAPH-2F850
+2F851;58EE;58EE;58EE;58EE; # (壮; 壮; 壮; 壮; 壮; ) CJK COMPATIBILITY IDEOGRAPH-2F851
+2F852;57CE;57CE;57CE;57CE; # (城; 城; 城; 城; 城; ) CJK COMPATIBILITY IDEOGRAPH-2F852
+2F853;57F4;57F4;57F4;57F4; # (埴; 埴; 埴; 埴; 埴; ) CJK COMPATIBILITY IDEOGRAPH-2F853
+2F854;580D;580D;580D;580D; # (堍; å ; å ; å ; å ; ) CJK COMPATIBILITY IDEOGRAPH-2F854
+2F855;578B;578B;578B;578B; # (型; 型; 型; 型; 型; ) CJK COMPATIBILITY IDEOGRAPH-2F855
+2F856;5832;5832;5832;5832; # (堲; 堲; 堲; 堲; 堲; ) CJK COMPATIBILITY IDEOGRAPH-2F856
+2F857;5831;5831;5831;5831; # (報; 報; 報; 報; 報; ) CJK COMPATIBILITY IDEOGRAPH-2F857
+2F858;58AC;58AC;58AC;58AC; # (墬; 墬; 墬; 墬; 墬; ) CJK COMPATIBILITY IDEOGRAPH-2F858
+2F859;214E4;214E4;214E4;214E4; # (𡓤; 𡓤; 𡓤; 𡓤; 𡓤; ) CJK COMPATIBILITY IDEOGRAPH-2F859
+2F85A;58F2;58F2;58F2;58F2; # (売; 売; 売; 売; 売; ) CJK COMPATIBILITY IDEOGRAPH-2F85A
+2F85B;58F7;58F7;58F7;58F7; # (壷; 壷; 壷; 壷; 壷; ) CJK COMPATIBILITY IDEOGRAPH-2F85B
+2F85C;5906;5906;5906;5906; # (夆; 夆; 夆; 夆; 夆; ) CJK COMPATIBILITY IDEOGRAPH-2F85C
+2F85D;591A;591A;591A;591A; # (ð¯¡; 多; 多; 多; 多; ) CJK COMPATIBILITY IDEOGRAPH-2F85D
+2F85E;5922;5922;5922;5922; # (夢; 夢; 夢; 夢; 夢; ) CJK COMPATIBILITY IDEOGRAPH-2F85E
+2F85F;5962;5962;5962;5962; # (奢; 奢; 奢; 奢; 奢; ) CJK COMPATIBILITY IDEOGRAPH-2F85F
+2F860;216A8;216A8;216A8;216A8; # (𡚨; 𡚨; 𡚨; 𡚨; 𡚨; ) CJK COMPATIBILITY IDEOGRAPH-2F860
+2F861;216EA;216EA;216EA;216EA; # (𡛪; 𡛪; 𡛪; 𡛪; 𡛪; ) CJK COMPATIBILITY IDEOGRAPH-2F861
+2F862;59EC;59EC;59EC;59EC; # (姬; 姬; 姬; 姬; 姬; ) CJK COMPATIBILITY IDEOGRAPH-2F862
+2F863;5A1B;5A1B;5A1B;5A1B; # (娛; 娛; 娛; 娛; 娛; ) CJK COMPATIBILITY IDEOGRAPH-2F863
+2F864;5A27;5A27;5A27;5A27; # (娧; 娧; 娧; 娧; 娧; ) CJK COMPATIBILITY IDEOGRAPH-2F864
+2F865;59D8;59D8;59D8;59D8; # (姘; 姘; 姘; 姘; 姘; ) CJK COMPATIBILITY IDEOGRAPH-2F865
+2F866;5A66;5A66;5A66;5A66; # (婦; 婦; 婦; 婦; 婦; ) CJK COMPATIBILITY IDEOGRAPH-2F866
+2F867;36EE;36EE;36EE;36EE; # (㛮; 㛮; 㛮; 㛮; 㛮; ) CJK COMPATIBILITY IDEOGRAPH-2F867
+2F868;36FC;36FC;36FC;36FC; # (㛼; 㛼; 㛼; 㛼; 㛼; ) CJK COMPATIBILITY IDEOGRAPH-2F868
+2F869;5B08;5B08;5B08;5B08; # (嬈; 嬈; 嬈; 嬈; 嬈; ) CJK COMPATIBILITY IDEOGRAPH-2F869
+2F86A;5B3E;5B3E;5B3E;5B3E; # (嬾; 嬾; 嬾; 嬾; 嬾; ) CJK COMPATIBILITY IDEOGRAPH-2F86A
+2F86B;5B3E;5B3E;5B3E;5B3E; # (嬾; 嬾; 嬾; 嬾; 嬾; ) CJK COMPATIBILITY IDEOGRAPH-2F86B
+2F86C;219C8;219C8;219C8;219C8; # (𡧈; 𡧈; 𡧈; 𡧈; 𡧈; ) CJK COMPATIBILITY IDEOGRAPH-2F86C
+2F86D;5BC3;5BC3;5BC3;5BC3; # (寃; 寃; 寃; 寃; 寃; ) CJK COMPATIBILITY IDEOGRAPH-2F86D
+2F86E;5BD8;5BD8;5BD8;5BD8; # (寘; 寘; 寘; 寘; 寘; ) CJK COMPATIBILITY IDEOGRAPH-2F86E
+2F86F;5BE7;5BE7;5BE7;5BE7; # (寧; 寧; 寧; 寧; 寧; ) CJK COMPATIBILITY IDEOGRAPH-2F86F
+2F870;5BF3;5BF3;5BF3;5BF3; # (寳; 寳; 寳; 寳; 寳; ) CJK COMPATIBILITY IDEOGRAPH-2F870
+2F871;21B18;21B18;21B18;21B18; # (𡬘; 𡬘; 𡬘; 𡬘; 𡬘; ) CJK COMPATIBILITY IDEOGRAPH-2F871
+2F872;5BFF;5BFF;5BFF;5BFF; # (寿; 寿; 寿; 寿; 寿; ) CJK COMPATIBILITY IDEOGRAPH-2F872
+2F873;5C06;5C06;5C06;5C06; # (将; 将; 将; 将; 将; ) CJK COMPATIBILITY IDEOGRAPH-2F873
+2F874;5F53;5F53;5F53;5F53; # (当; 当; 当; 当; 当; ) CJK COMPATIBILITY IDEOGRAPH-2F874
+2F875;5C22;5C22;5C22;5C22; # (尢; 尢; 尢; 尢; 尢; ) CJK COMPATIBILITY IDEOGRAPH-2F875
+2F876;3781;3781;3781;3781; # (㞁; ãž; ãž; ãž; ãž; ) CJK COMPATIBILITY IDEOGRAPH-2F876
+2F877;5C60;5C60;5C60;5C60; # (屠; 屠; 屠; 屠; 屠; ) CJK COMPATIBILITY IDEOGRAPH-2F877
+2F878;5C6E;5C6E;5C6E;5C6E; # (屮; 屮; 屮; 屮; 屮; ) CJK COMPATIBILITY IDEOGRAPH-2F878
+2F879;5CC0;5CC0;5CC0;5CC0; # (峀; 峀; 峀; 峀; 峀; ) CJK COMPATIBILITY IDEOGRAPH-2F879
+2F87A;5C8D;5C8D;5C8D;5C8D; # (岍; å²; å²; å²; å²; ) CJK COMPATIBILITY IDEOGRAPH-2F87A
+2F87B;21DE4;21DE4;21DE4;21DE4; # (𡷤; 𡷤; 𡷤; 𡷤; 𡷤; ) CJK COMPATIBILITY IDEOGRAPH-2F87B
+2F87C;5D43;5D43;5D43;5D43; # (嵃; 嵃; 嵃; 嵃; 嵃; ) CJK COMPATIBILITY IDEOGRAPH-2F87C
+2F87D;21DE6;21DE6;21DE6;21DE6; # (𡷦; 𡷦; 𡷦; 𡷦; 𡷦; ) CJK COMPATIBILITY IDEOGRAPH-2F87D
+2F87E;5D6E;5D6E;5D6E;5D6E; # (嵮; 嵮; 嵮; 嵮; 嵮; ) CJK COMPATIBILITY IDEOGRAPH-2F87E
+2F87F;5D6B;5D6B;5D6B;5D6B; # (嵫; 嵫; 嵫; 嵫; 嵫; ) CJK COMPATIBILITY IDEOGRAPH-2F87F
+2F880;5D7C;5D7C;5D7C;5D7C; # (嵼; 嵼; 嵼; 嵼; 嵼; ) CJK COMPATIBILITY IDEOGRAPH-2F880
+2F881;5DE1;5DE1;5DE1;5DE1; # (ð¯¢; å·¡; å·¡; å·¡; å·¡; ) CJK COMPATIBILITY IDEOGRAPH-2F881
+2F882;5DE2;5DE2;5DE2;5DE2; # (巢; 巢; 巢; 巢; 巢; ) CJK COMPATIBILITY IDEOGRAPH-2F882
+2F883;382F;382F;382F;382F; # (㠯; 㠯; 㠯; 㠯; 㠯; ) CJK COMPATIBILITY IDEOGRAPH-2F883
+2F884;5DFD;5DFD;5DFD;5DFD; # (巽; 巽; 巽; 巽; 巽; ) CJK COMPATIBILITY IDEOGRAPH-2F884
+2F885;5E28;5E28;5E28;5E28; # (帨; 帨; 帨; 帨; 帨; ) CJK COMPATIBILITY IDEOGRAPH-2F885
+2F886;5E3D;5E3D;5E3D;5E3D; # (帽; 帽; 帽; 帽; 帽; ) CJK COMPATIBILITY IDEOGRAPH-2F886
+2F887;5E69;5E69;5E69;5E69; # (幩; 幩; 幩; 幩; 幩; ) CJK COMPATIBILITY IDEOGRAPH-2F887
+2F888;3862;3862;3862;3862; # (㡢; 㡢; 㡢; 㡢; 㡢; ) CJK COMPATIBILITY IDEOGRAPH-2F888
+2F889;22183;22183;22183;22183; # (𢆃; 𢆃; 𢆃; 𢆃; 𢆃; ) CJK COMPATIBILITY IDEOGRAPH-2F889
+2F88A;387C;387C;387C;387C; # (㡼; 㡼; 㡼; 㡼; 㡼; ) CJK COMPATIBILITY IDEOGRAPH-2F88A
+2F88B;5EB0;5EB0;5EB0;5EB0; # (庰; 庰; 庰; 庰; 庰; ) CJK COMPATIBILITY IDEOGRAPH-2F88B
+2F88C;5EB3;5EB3;5EB3;5EB3; # (庳; 庳; 庳; 庳; 庳; ) CJK COMPATIBILITY IDEOGRAPH-2F88C
+2F88D;5EB6;5EB6;5EB6;5EB6; # (ð¯¢; 庶; 庶; 庶; 庶; ) CJK COMPATIBILITY IDEOGRAPH-2F88D
+2F88E;5ECA;5ECA;5ECA;5ECA; # (廊; 廊; 廊; 廊; 廊; ) CJK COMPATIBILITY IDEOGRAPH-2F88E
+2F88F;2A392;2A392;2A392;2A392; # (ð¯¢; 𪎒; 𪎒; 𪎒; 𪎒; ) CJK COMPATIBILITY IDEOGRAPH-2F88F
+2F890;5EFE;5EFE;5EFE;5EFE; # (ð¯¢; 廾; 廾; 廾; 廾; ) CJK COMPATIBILITY IDEOGRAPH-2F890
+2F891;22331;22331;22331;22331; # (𢌱; 𢌱; 𢌱; 𢌱; 𢌱; ) CJK COMPATIBILITY IDEOGRAPH-2F891
+2F892;22331;22331;22331;22331; # (𢌱; 𢌱; 𢌱; 𢌱; 𢌱; ) CJK COMPATIBILITY IDEOGRAPH-2F892
+2F893;8201;8201;8201;8201; # (舁; èˆ; èˆ; èˆ; èˆ; ) CJK COMPATIBILITY IDEOGRAPH-2F893
+2F894;5F22;5F22;5F22;5F22; # (弢; 弢; 弢; 弢; 弢; ) CJK COMPATIBILITY IDEOGRAPH-2F894
+2F895;5F22;5F22;5F22;5F22; # (弢; 弢; 弢; 弢; 弢; ) CJK COMPATIBILITY IDEOGRAPH-2F895
+2F896;38C7;38C7;38C7;38C7; # (㣇; 㣇; 㣇; 㣇; 㣇; ) CJK COMPATIBILITY IDEOGRAPH-2F896
+2F897;232B8;232B8;232B8;232B8; # (𣊸; 𣊸; 𣊸; 𣊸; 𣊸; ) CJK COMPATIBILITY IDEOGRAPH-2F897
+2F898;261DA;261DA;261DA;261DA; # (𦇚; 𦇚; 𦇚; 𦇚; 𦇚; ) CJK COMPATIBILITY IDEOGRAPH-2F898
+2F899;5F62;5F62;5F62;5F62; # (形; 形; 形; 形; 形; ) CJK COMPATIBILITY IDEOGRAPH-2F899
+2F89A;5F6B;5F6B;5F6B;5F6B; # (彫; 彫; 彫; 彫; 彫; ) CJK COMPATIBILITY IDEOGRAPH-2F89A
+2F89B;38E3;38E3;38E3;38E3; # (㣣; 㣣; 㣣; 㣣; 㣣; ) CJK COMPATIBILITY IDEOGRAPH-2F89B
+2F89C;5F9A;5F9A;5F9A;5F9A; # (徚; 徚; 徚; 徚; 徚; ) CJK COMPATIBILITY IDEOGRAPH-2F89C
+2F89D;5FCD;5FCD;5FCD;5FCD; # (ð¯¢; å¿; å¿; å¿; å¿; ) CJK COMPATIBILITY IDEOGRAPH-2F89D
+2F89E;5FD7;5FD7;5FD7;5FD7; # (志; 志; 志; 志; 志; ) CJK COMPATIBILITY IDEOGRAPH-2F89E
+2F89F;5FF9;5FF9;5FF9;5FF9; # (忹; 忹; 忹; 忹; 忹; ) CJK COMPATIBILITY IDEOGRAPH-2F89F
+2F8A0;6081;6081;6081;6081; # (悁; æ‚; æ‚; æ‚; æ‚; ) CJK COMPATIBILITY IDEOGRAPH-2F8A0
+2F8A1;393A;393A;393A;393A; # (㤺; 㤺; 㤺; 㤺; 㤺; ) CJK COMPATIBILITY IDEOGRAPH-2F8A1
+2F8A2;391C;391C;391C;391C; # (㤜; 㤜; 㤜; 㤜; 㤜; ) CJK COMPATIBILITY IDEOGRAPH-2F8A2
+2F8A3;6094;6094;6094;6094; # (悔; 悔; 悔; 悔; 悔; ) CJK COMPATIBILITY IDEOGRAPH-2F8A3
+2F8A4;226D4;226D4;226D4;226D4; # (𢛔; 𢛔; 𢛔; 𢛔; 𢛔; ) CJK COMPATIBILITY IDEOGRAPH-2F8A4
+2F8A5;60C7;60C7;60C7;60C7; # (惇; 惇; 惇; 惇; 惇; ) CJK COMPATIBILITY IDEOGRAPH-2F8A5
+2F8A6;6148;6148;6148;6148; # (慈; 慈; 慈; 慈; 慈; ) CJK COMPATIBILITY IDEOGRAPH-2F8A6
+2F8A7;614C;614C;614C;614C; # (慌; 慌; 慌; 慌; 慌; ) CJK COMPATIBILITY IDEOGRAPH-2F8A7
+2F8A8;614E;614E;614E;614E; # (慎; 慎; 慎; 慎; 慎; ) CJK COMPATIBILITY IDEOGRAPH-2F8A8
+2F8A9;614C;614C;614C;614C; # (慌; 慌; 慌; 慌; 慌; ) CJK COMPATIBILITY IDEOGRAPH-2F8A9
+2F8AA;617A;617A;617A;617A; # (慺; 慺; 慺; 慺; 慺; ) CJK COMPATIBILITY IDEOGRAPH-2F8AA
+2F8AB;618E;618E;618E;618E; # (憎; 憎; 憎; 憎; 憎; ) CJK COMPATIBILITY IDEOGRAPH-2F8AB
+2F8AC;61B2;61B2;61B2;61B2; # (憲; 憲; 憲; 憲; 憲; ) CJK COMPATIBILITY IDEOGRAPH-2F8AC
+2F8AD;61A4;61A4;61A4;61A4; # (憤; 憤; 憤; 憤; 憤; ) CJK COMPATIBILITY IDEOGRAPH-2F8AD
+2F8AE;61AF;61AF;61AF;61AF; # (憯; 憯; 憯; 憯; 憯; ) CJK COMPATIBILITY IDEOGRAPH-2F8AE
+2F8AF;61DE;61DE;61DE;61DE; # (懞; 懞; 懞; 懞; 懞; ) CJK COMPATIBILITY IDEOGRAPH-2F8AF
+2F8B0;61F2;61F2;61F2;61F2; # (懲; 懲; 懲; 懲; 懲; ) CJK COMPATIBILITY IDEOGRAPH-2F8B0
+2F8B1;61F6;61F6;61F6;61F6; # (懶; 懶; 懶; 懶; 懶; ) CJK COMPATIBILITY IDEOGRAPH-2F8B1
+2F8B2;6210;6210;6210;6210; # (成; æˆ; æˆ; æˆ; æˆ; ) CJK COMPATIBILITY IDEOGRAPH-2F8B2
+2F8B3;621B;621B;621B;621B; # (戛; 戛; 戛; 戛; 戛; ) CJK COMPATIBILITY IDEOGRAPH-2F8B3
+2F8B4;625D;625D;625D;625D; # (扝; æ‰; æ‰; æ‰; æ‰; ) CJK COMPATIBILITY IDEOGRAPH-2F8B4
+2F8B5;62B1;62B1;62B1;62B1; # (抱; 抱; 抱; 抱; 抱; ) CJK COMPATIBILITY IDEOGRAPH-2F8B5
+2F8B6;62D4;62D4;62D4;62D4; # (拔; 拔; 拔; 拔; 拔; ) CJK COMPATIBILITY IDEOGRAPH-2F8B6
+2F8B7;6350;6350;6350;6350; # (捐; æ; æ; æ; æ; ) CJK COMPATIBILITY IDEOGRAPH-2F8B7
+2F8B8;22B0C;22B0C;22B0C;22B0C; # (𢬌; 𢬌; 𢬌; 𢬌; 𢬌; ) CJK COMPATIBILITY IDEOGRAPH-2F8B8
+2F8B9;633D;633D;633D;633D; # (挽; 挽; 挽; 挽; 挽; ) CJK COMPATIBILITY IDEOGRAPH-2F8B9
+2F8BA;62FC;62FC;62FC;62FC; # (拼; 拼; 拼; 拼; 拼; ) CJK COMPATIBILITY IDEOGRAPH-2F8BA
+2F8BB;6368;6368;6368;6368; # (捨; æ¨; æ¨; æ¨; æ¨; ) CJK COMPATIBILITY IDEOGRAPH-2F8BB
+2F8BC;6383;6383;6383;6383; # (掃; 掃; 掃; 掃; 掃; ) CJK COMPATIBILITY IDEOGRAPH-2F8BC
+2F8BD;63E4;63E4;63E4;63E4; # (揤; æ¤; æ¤; æ¤; æ¤; ) CJK COMPATIBILITY IDEOGRAPH-2F8BD
+2F8BE;22BF1;22BF1;22BF1;22BF1; # (𢯱; 𢯱; 𢯱; 𢯱; 𢯱; ) CJK COMPATIBILITY IDEOGRAPH-2F8BE
+2F8BF;6422;6422;6422;6422; # (搢; æ¢; æ¢; æ¢; æ¢; ) CJK COMPATIBILITY IDEOGRAPH-2F8BF
+2F8C0;63C5;63C5;63C5;63C5; # (揅; æ…; æ…; æ…; æ…; ) CJK COMPATIBILITY IDEOGRAPH-2F8C0
+2F8C1;63A9;63A9;63A9;63A9; # (ð¯£; 掩; 掩; 掩; 掩; ) CJK COMPATIBILITY IDEOGRAPH-2F8C1
+2F8C2;3A2E;3A2E;3A2E;3A2E; # (㨮; 㨮; 㨮; 㨮; 㨮; ) CJK COMPATIBILITY IDEOGRAPH-2F8C2
+2F8C3;6469;6469;6469;6469; # (摩; 摩; 摩; 摩; 摩; ) CJK COMPATIBILITY IDEOGRAPH-2F8C3
+2F8C4;647E;647E;647E;647E; # (摾; 摾; 摾; 摾; 摾; ) CJK COMPATIBILITY IDEOGRAPH-2F8C4
+2F8C5;649D;649D;649D;649D; # (撝; æ’; æ’; æ’; æ’; ) CJK COMPATIBILITY IDEOGRAPH-2F8C5
+2F8C6;6477;6477;6477;6477; # (摷; 摷; 摷; 摷; 摷; ) CJK COMPATIBILITY IDEOGRAPH-2F8C6
+2F8C7;3A6C;3A6C;3A6C;3A6C; # (㩬; 㩬; 㩬; 㩬; 㩬; ) CJK COMPATIBILITY IDEOGRAPH-2F8C7
+2F8C8;654F;654F;654F;654F; # (敏; æ•; æ•; æ•; æ•; ) CJK COMPATIBILITY IDEOGRAPH-2F8C8
+2F8C9;656C;656C;656C;656C; # (敬; 敬; 敬; 敬; 敬; ) CJK COMPATIBILITY IDEOGRAPH-2F8C9
+2F8CA;2300A;2300A;2300A;2300A; # (𣀊; 𣀊; 𣀊; 𣀊; 𣀊; ) CJK COMPATIBILITY IDEOGRAPH-2F8CA
+2F8CB;65E3;65E3;65E3;65E3; # (旣; 旣; 旣; 旣; 旣; ) CJK COMPATIBILITY IDEOGRAPH-2F8CB
+2F8CC;66F8;66F8;66F8;66F8; # (書; 書; 書; 書; 書; ) CJK COMPATIBILITY IDEOGRAPH-2F8CC
+2F8CD;6649;6649;6649;6649; # (ð¯£; 晉; 晉; 晉; 晉; ) CJK COMPATIBILITY IDEOGRAPH-2F8CD
+2F8CE;3B19;3B19;3B19;3B19; # (㬙; 㬙; 㬙; 㬙; 㬙; ) CJK COMPATIBILITY IDEOGRAPH-2F8CE
+2F8CF;6691;6691;6691;6691; # (ð¯£; æš‘; æš‘; æš‘; æš‘; ) CJK COMPATIBILITY IDEOGRAPH-2F8CF
+2F8D0;3B08;3B08;3B08;3B08; # (ð¯£; 㬈; 㬈; 㬈; 㬈; ) CJK COMPATIBILITY IDEOGRAPH-2F8D0
+2F8D1;3AE4;3AE4;3AE4;3AE4; # (㫤; 㫤; 㫤; 㫤; 㫤; ) CJK COMPATIBILITY IDEOGRAPH-2F8D1
+2F8D2;5192;5192;5192;5192; # (冒; 冒; 冒; 冒; 冒; ) CJK COMPATIBILITY IDEOGRAPH-2F8D2
+2F8D3;5195;5195;5195;5195; # (冕; 冕; 冕; 冕; 冕; ) CJK COMPATIBILITY IDEOGRAPH-2F8D3
+2F8D4;6700;6700;6700;6700; # (最; 最; 最; 最; 最; ) CJK COMPATIBILITY IDEOGRAPH-2F8D4
+2F8D5;669C;669C;669C;669C; # (暜; 暜; 暜; 暜; 暜; ) CJK COMPATIBILITY IDEOGRAPH-2F8D5
+2F8D6;80AD;80AD;80AD;80AD; # (肭; 肭; 肭; 肭; 肭; ) CJK COMPATIBILITY IDEOGRAPH-2F8D6
+2F8D7;43D9;43D9;43D9;43D9; # (䏙; ä™; ä™; ä™; ä™; ) CJK COMPATIBILITY IDEOGRAPH-2F8D7
+2F8D8;6717;6717;6717;6717; # (朗; 朗; 朗; 朗; 朗; ) CJK COMPATIBILITY IDEOGRAPH-2F8D8
+2F8D9;671B;671B;671B;671B; # (望; 望; 望; 望; 望; ) CJK COMPATIBILITY IDEOGRAPH-2F8D9
+2F8DA;6721;6721;6721;6721; # (朡; 朡; 朡; 朡; 朡; ) CJK COMPATIBILITY IDEOGRAPH-2F8DA
+2F8DB;675E;675E;675E;675E; # (杞; æž; æž; æž; æž; ) CJK COMPATIBILITY IDEOGRAPH-2F8DB
+2F8DC;6753;6753;6753;6753; # (杓; æ“; æ“; æ“; æ“; ) CJK COMPATIBILITY IDEOGRAPH-2F8DC
+2F8DD;233C3;233C3;233C3;233C3; # (ð¯£; ð£ƒ; ð£ƒ; ð£ƒ; ð£ƒ; ) CJK COMPATIBILITY IDEOGRAPH-2F8DD
+2F8DE;3B49;3B49;3B49;3B49; # (㭉; 㭉; 㭉; 㭉; 㭉; ) CJK COMPATIBILITY IDEOGRAPH-2F8DE
+2F8DF;67FA;67FA;67FA;67FA; # (柺; 柺; 柺; 柺; 柺; ) CJK COMPATIBILITY IDEOGRAPH-2F8DF
+2F8E0;6785;6785;6785;6785; # (枅; 枅; 枅; 枅; 枅; ) CJK COMPATIBILITY IDEOGRAPH-2F8E0
+2F8E1;6852;6852;6852;6852; # (桒; 桒; 桒; 桒; 桒; ) CJK COMPATIBILITY IDEOGRAPH-2F8E1
+2F8E2;6885;6885;6885;6885; # (梅; 梅; 梅; 梅; 梅; ) CJK COMPATIBILITY IDEOGRAPH-2F8E2
+2F8E3;2346D;2346D;2346D;2346D; # (𣑭; 𣑭; 𣑭; 𣑭; 𣑭; ) CJK COMPATIBILITY IDEOGRAPH-2F8E3
+2F8E4;688E;688E;688E;688E; # (梎; 梎; 梎; 梎; 梎; ) CJK COMPATIBILITY IDEOGRAPH-2F8E4
+2F8E5;681F;681F;681F;681F; # (栟; 栟; 栟; 栟; 栟; ) CJK COMPATIBILITY IDEOGRAPH-2F8E5
+2F8E6;6914;6914;6914;6914; # (椔; 椔; 椔; 椔; 椔; ) CJK COMPATIBILITY IDEOGRAPH-2F8E6
+2F8E7;3B9D;3B9D;3B9D;3B9D; # (㮝; ã®; ã®; ã®; ã®; ) CJK COMPATIBILITY IDEOGRAPH-2F8E7
+2F8E8;6942;6942;6942;6942; # (楂; 楂; 楂; 楂; 楂; ) CJK COMPATIBILITY IDEOGRAPH-2F8E8
+2F8E9;69A3;69A3;69A3;69A3; # (榣; 榣; 榣; 榣; 榣; ) CJK COMPATIBILITY IDEOGRAPH-2F8E9
+2F8EA;69EA;69EA;69EA;69EA; # (槪; 槪; 槪; 槪; 槪; ) CJK COMPATIBILITY IDEOGRAPH-2F8EA
+2F8EB;6AA8;6AA8;6AA8;6AA8; # (檨; 檨; 檨; 檨; 檨; ) CJK COMPATIBILITY IDEOGRAPH-2F8EB
+2F8EC;236A3;236A3;236A3;236A3; # (𣚣; 𣚣; 𣚣; 𣚣; 𣚣; ) CJK COMPATIBILITY IDEOGRAPH-2F8EC
+2F8ED;6ADB;6ADB;6ADB;6ADB; # (櫛; 櫛; 櫛; 櫛; 櫛; ) CJK COMPATIBILITY IDEOGRAPH-2F8ED
+2F8EE;3C18;3C18;3C18;3C18; # (㰘; 㰘; 㰘; 㰘; 㰘; ) CJK COMPATIBILITY IDEOGRAPH-2F8EE
+2F8EF;6B21;6B21;6B21;6B21; # (次; 次; 次; 次; 次; ) CJK COMPATIBILITY IDEOGRAPH-2F8EF
+2F8F0;238A7;238A7;238A7;238A7; # (𣢧; 𣢧; 𣢧; 𣢧; 𣢧; ) CJK COMPATIBILITY IDEOGRAPH-2F8F0
+2F8F1;6B54;6B54;6B54;6B54; # (歔; 歔; 歔; 歔; 歔; ) CJK COMPATIBILITY IDEOGRAPH-2F8F1
+2F8F2;3C4E;3C4E;3C4E;3C4E; # (㱎; 㱎; 㱎; 㱎; 㱎; ) CJK COMPATIBILITY IDEOGRAPH-2F8F2
+2F8F3;6B72;6B72;6B72;6B72; # (歲; 歲; 歲; 歲; 歲; ) CJK COMPATIBILITY IDEOGRAPH-2F8F3
+2F8F4;6B9F;6B9F;6B9F;6B9F; # (殟; 殟; 殟; 殟; 殟; ) CJK COMPATIBILITY IDEOGRAPH-2F8F4
+2F8F5;6BBA;6BBA;6BBA;6BBA; # (殺; 殺; 殺; 殺; 殺; ) CJK COMPATIBILITY IDEOGRAPH-2F8F5
+2F8F6;6BBB;6BBB;6BBB;6BBB; # (殻; 殻; 殻; 殻; 殻; ) CJK COMPATIBILITY IDEOGRAPH-2F8F6
+2F8F7;23A8D;23A8D;23A8D;23A8D; # (𣪍; ð£ª; ð£ª; ð£ª; ð£ª; ) CJK COMPATIBILITY IDEOGRAPH-2F8F7
+2F8F8;21D0B;21D0B;21D0B;21D0B; # (𡴋; 𡴋; 𡴋; 𡴋; 𡴋; ) CJK COMPATIBILITY IDEOGRAPH-2F8F8
+2F8F9;23AFA;23AFA;23AFA;23AFA; # (𣫺; 𣫺; 𣫺; 𣫺; 𣫺; ) CJK COMPATIBILITY IDEOGRAPH-2F8F9
+2F8FA;6C4E;6C4E;6C4E;6C4E; # (汎; 汎; 汎; 汎; 汎; ) CJK COMPATIBILITY IDEOGRAPH-2F8FA
+2F8FB;23CBC;23CBC;23CBC;23CBC; # (𣲼; 𣲼; 𣲼; 𣲼; 𣲼; ) CJK COMPATIBILITY IDEOGRAPH-2F8FB
+2F8FC;6CBF;6CBF;6CBF;6CBF; # (沿; 沿; 沿; 沿; 沿; ) CJK COMPATIBILITY IDEOGRAPH-2F8FC
+2F8FD;6CCD;6CCD;6CCD;6CCD; # (泍; æ³; æ³; æ³; æ³; ) CJK COMPATIBILITY IDEOGRAPH-2F8FD
+2F8FE;6C67;6C67;6C67;6C67; # (汧; 汧; 汧; 汧; 汧; ) CJK COMPATIBILITY IDEOGRAPH-2F8FE
+2F8FF;6D16;6D16;6D16;6D16; # (洖; 洖; 洖; 洖; 洖; ) CJK COMPATIBILITY IDEOGRAPH-2F8FF
+2F900;6D3E;6D3E;6D3E;6D3E; # (派; 派; 派; 派; 派; ) CJK COMPATIBILITY IDEOGRAPH-2F900
+2F901;6D77;6D77;6D77;6D77; # (ð¯¤; æµ·; æµ·; æµ·; æµ·; ) CJK COMPATIBILITY IDEOGRAPH-2F901
+2F902;6D41;6D41;6D41;6D41; # (流; æµ; æµ; æµ; æµ; ) CJK COMPATIBILITY IDEOGRAPH-2F902
+2F903;6D69;6D69;6D69;6D69; # (浩; 浩; 浩; 浩; 浩; ) CJK COMPATIBILITY IDEOGRAPH-2F903
+2F904;6D78;6D78;6D78;6D78; # (浸; 浸; 浸; 浸; 浸; ) CJK COMPATIBILITY IDEOGRAPH-2F904
+2F905;6D85;6D85;6D85;6D85; # (涅; 涅; 涅; 涅; 涅; ) CJK COMPATIBILITY IDEOGRAPH-2F905
+2F906;23D1E;23D1E;23D1E;23D1E; # (𣴞; 𣴞; 𣴞; 𣴞; 𣴞; ) CJK COMPATIBILITY IDEOGRAPH-2F906
+2F907;6D34;6D34;6D34;6D34; # (洴; 洴; 洴; 洴; 洴; ) CJK COMPATIBILITY IDEOGRAPH-2F907
+2F908;6E2F;6E2F;6E2F;6E2F; # (港; 港; 港; 港; 港; ) CJK COMPATIBILITY IDEOGRAPH-2F908
+2F909;6E6E;6E6E;6E6E;6E6E; # (湮; 湮; 湮; 湮; 湮; ) CJK COMPATIBILITY IDEOGRAPH-2F909
+2F90A;3D33;3D33;3D33;3D33; # (㴳; 㴳; 㴳; 㴳; 㴳; ) CJK COMPATIBILITY IDEOGRAPH-2F90A
+2F90B;6ECB;6ECB;6ECB;6ECB; # (滋; 滋; 滋; 滋; 滋; ) CJK COMPATIBILITY IDEOGRAPH-2F90B
+2F90C;6EC7;6EC7;6EC7;6EC7; # (滇; 滇; 滇; 滇; 滇; ) CJK COMPATIBILITY IDEOGRAPH-2F90C
+2F90D;23ED1;23ED1;23ED1;23ED1; # (ð¯¤; 𣻑; 𣻑; 𣻑; 𣻑; ) CJK COMPATIBILITY IDEOGRAPH-2F90D
+2F90E;6DF9;6DF9;6DF9;6DF9; # (淹; 淹; 淹; 淹; 淹; ) CJK COMPATIBILITY IDEOGRAPH-2F90E
+2F90F;6F6E;6F6E;6F6E;6F6E; # (ð¯¤; æ½®; æ½®; æ½®; æ½®; ) CJK COMPATIBILITY IDEOGRAPH-2F90F
+2F910;23F5E;23F5E;23F5E;23F5E; # (ð¯¤; 𣽞; 𣽞; 𣽞; 𣽞; ) CJK COMPATIBILITY IDEOGRAPH-2F910
+2F911;23F8E;23F8E;23F8E;23F8E; # (𣾎; 𣾎; 𣾎; 𣾎; 𣾎; ) CJK COMPATIBILITY IDEOGRAPH-2F911
+2F912;6FC6;6FC6;6FC6;6FC6; # (濆; 濆; 濆; 濆; 濆; ) CJK COMPATIBILITY IDEOGRAPH-2F912
+2F913;7039;7039;7039;7039; # (瀹; 瀹; 瀹; 瀹; 瀹; ) CJK COMPATIBILITY IDEOGRAPH-2F913
+2F914;701E;701E;701E;701E; # (瀞; 瀞; 瀞; 瀞; 瀞; ) CJK COMPATIBILITY IDEOGRAPH-2F914
+2F915;701B;701B;701B;701B; # (瀛; 瀛; 瀛; 瀛; 瀛; ) CJK COMPATIBILITY IDEOGRAPH-2F915
+2F916;3D96;3D96;3D96;3D96; # (㶖; 㶖; 㶖; 㶖; 㶖; ) CJK COMPATIBILITY IDEOGRAPH-2F916
+2F917;704A;704A;704A;704A; # (灊; çŠ; çŠ; çŠ; çŠ; ) CJK COMPATIBILITY IDEOGRAPH-2F917
+2F918;707D;707D;707D;707D; # (災; ç½; ç½; ç½; ç½; ) CJK COMPATIBILITY IDEOGRAPH-2F918
+2F919;7077;7077;7077;7077; # (灷; ç·; ç·; ç·; ç·; ) CJK COMPATIBILITY IDEOGRAPH-2F919
+2F91A;70AD;70AD;70AD;70AD; # (炭; 炭; 炭; 炭; 炭; ) CJK COMPATIBILITY IDEOGRAPH-2F91A
+2F91B;20525;20525;20525;20525; # (𠔥; 𠔥; 𠔥; 𠔥; 𠔥; ) CJK COMPATIBILITY IDEOGRAPH-2F91B
+2F91C;7145;7145;7145;7145; # (煅; 煅; 煅; 煅; 煅; ) CJK COMPATIBILITY IDEOGRAPH-2F91C
+2F91D;24263;24263;24263;24263; # (ð¯¤; 𤉣; 𤉣; 𤉣; 𤉣; ) CJK COMPATIBILITY IDEOGRAPH-2F91D
+2F91E;719C;719C;719C;719C; # (熜; 熜; 熜; 熜; 熜; ) CJK COMPATIBILITY IDEOGRAPH-2F91E
+2F91F;243AB;243AB;243AB;243AB; # (𤎫; 𤎫; 𤎫; 𤎫; 𤎫; ) CJK COMPATIBILITY IDEOGRAPH-2F91F
+2F920;7228;7228;7228;7228; # (爨; 爨; 爨; 爨; 爨; ) CJK COMPATIBILITY IDEOGRAPH-2F920
+2F921;7235;7235;7235;7235; # (爵; 爵; 爵; 爵; 爵; ) CJK COMPATIBILITY IDEOGRAPH-2F921
+2F922;7250;7250;7250;7250; # (牐; ç‰; ç‰; ç‰; ç‰; ) CJK COMPATIBILITY IDEOGRAPH-2F922
+2F923;24608;24608;24608;24608; # (𤘈; 𤘈; 𤘈; 𤘈; 𤘈; ) CJK COMPATIBILITY IDEOGRAPH-2F923
+2F924;7280;7280;7280;7280; # (犀; 犀; 犀; 犀; 犀; ) CJK COMPATIBILITY IDEOGRAPH-2F924
+2F925;7295;7295;7295;7295; # (犕; 犕; 犕; 犕; 犕; ) CJK COMPATIBILITY IDEOGRAPH-2F925
+2F926;24735;24735;24735;24735; # (𤜵; 𤜵; 𤜵; 𤜵; 𤜵; ) CJK COMPATIBILITY IDEOGRAPH-2F926
+2F927;24814;24814;24814;24814; # (𤠔; 𤠔; 𤠔; 𤠔; 𤠔; ) CJK COMPATIBILITY IDEOGRAPH-2F927
+2F928;737A;737A;737A;737A; # (獺; çº; çº; çº; çº; ) CJK COMPATIBILITY IDEOGRAPH-2F928
+2F929;738B;738B;738B;738B; # (王; 王; 王; 王; 王; ) CJK COMPATIBILITY IDEOGRAPH-2F929
+2F92A;3EAC;3EAC;3EAC;3EAC; # (㺬; 㺬; 㺬; 㺬; 㺬; ) CJK COMPATIBILITY IDEOGRAPH-2F92A
+2F92B;73A5;73A5;73A5;73A5; # (玥; 玥; 玥; 玥; 玥; ) CJK COMPATIBILITY IDEOGRAPH-2F92B
+2F92C;3EB8;3EB8;3EB8;3EB8; # (㺸; 㺸; 㺸; 㺸; 㺸; ) CJK COMPATIBILITY IDEOGRAPH-2F92C
+2F92D;3EB8;3EB8;3EB8;3EB8; # (㺸; 㺸; 㺸; 㺸; 㺸; ) CJK COMPATIBILITY IDEOGRAPH-2F92D
+2F92E;7447;7447;7447;7447; # (瑇; 瑇; 瑇; 瑇; 瑇; ) CJK COMPATIBILITY IDEOGRAPH-2F92E
+2F92F;745C;745C;745C;745C; # (瑜; 瑜; 瑜; 瑜; 瑜; ) CJK COMPATIBILITY IDEOGRAPH-2F92F
+2F930;7471;7471;7471;7471; # (瑱; 瑱; 瑱; 瑱; 瑱; ) CJK COMPATIBILITY IDEOGRAPH-2F930
+2F931;7485;7485;7485;7485; # (璅; 璅; 璅; 璅; 璅; ) CJK COMPATIBILITY IDEOGRAPH-2F931
+2F932;74CA;74CA;74CA;74CA; # (瓊; 瓊; 瓊; 瓊; 瓊; ) CJK COMPATIBILITY IDEOGRAPH-2F932
+2F933;3F1B;3F1B;3F1B;3F1B; # (㼛; 㼛; 㼛; 㼛; 㼛; ) CJK COMPATIBILITY IDEOGRAPH-2F933
+2F934;7524;7524;7524;7524; # (甤; 甤; 甤; 甤; 甤; ) CJK COMPATIBILITY IDEOGRAPH-2F934
+2F935;24C36;24C36;24C36;24C36; # (𤰶; 𤰶; 𤰶; 𤰶; 𤰶; ) CJK COMPATIBILITY IDEOGRAPH-2F935
+2F936;753E;753E;753E;753E; # (甾; 甾; 甾; 甾; 甾; ) CJK COMPATIBILITY IDEOGRAPH-2F936
+2F937;24C92;24C92;24C92;24C92; # (𤲒; 𤲒; 𤲒; 𤲒; 𤲒; ) CJK COMPATIBILITY IDEOGRAPH-2F937
+2F938;7570;7570;7570;7570; # (異; 異; 異; 異; 異; ) CJK COMPATIBILITY IDEOGRAPH-2F938
+2F939;2219F;2219F;2219F;2219F; # (𢆟; 𢆟; 𢆟; 𢆟; 𢆟; ) CJK COMPATIBILITY IDEOGRAPH-2F939
+2F93A;7610;7610;7610;7610; # (瘐; ç˜; ç˜; ç˜; ç˜; ) CJK COMPATIBILITY IDEOGRAPH-2F93A
+2F93B;24FA1;24FA1;24FA1;24FA1; # (𤾡; 𤾡; 𤾡; 𤾡; 𤾡; ) CJK COMPATIBILITY IDEOGRAPH-2F93B
+2F93C;24FB8;24FB8;24FB8;24FB8; # (𤾸; 𤾸; 𤾸; 𤾸; 𤾸; ) CJK COMPATIBILITY IDEOGRAPH-2F93C
+2F93D;25044;25044;25044;25044; # (𥁄; ð¥„; ð¥„; ð¥„; ð¥„; ) CJK COMPATIBILITY IDEOGRAPH-2F93D
+2F93E;3FFC;3FFC;3FFC;3FFC; # (㿼; 㿼; 㿼; 㿼; 㿼; ) CJK COMPATIBILITY IDEOGRAPH-2F93E
+2F93F;4008;4008;4008;4008; # (䀈; 䀈; 䀈; 䀈; 䀈; ) CJK COMPATIBILITY IDEOGRAPH-2F93F
+2F940;76F4;76F4;76F4;76F4; # (直; 直; 直; 直; 直; ) CJK COMPATIBILITY IDEOGRAPH-2F940
+2F941;250F3;250F3;250F3;250F3; # (ð¯¥; 𥃳; 𥃳; 𥃳; 𥃳; ) CJK COMPATIBILITY IDEOGRAPH-2F941
+2F942;250F2;250F2;250F2;250F2; # (𥃲; 𥃲; 𥃲; 𥃲; 𥃲; ) CJK COMPATIBILITY IDEOGRAPH-2F942
+2F943;25119;25119;25119;25119; # (𥄙; 𥄙; 𥄙; 𥄙; 𥄙; ) CJK COMPATIBILITY IDEOGRAPH-2F943
+2F944;25133;25133;25133;25133; # (𥄳; 𥄳; 𥄳; 𥄳; 𥄳; ) CJK COMPATIBILITY IDEOGRAPH-2F944
+2F945;771E;771E;771E;771E; # (眞; 眞; 眞; 眞; 眞; ) CJK COMPATIBILITY IDEOGRAPH-2F945
+2F946;771F;771F;771F;771F; # (真; 真; 真; 真; 真; ) CJK COMPATIBILITY IDEOGRAPH-2F946
+2F947;771F;771F;771F;771F; # (真; 真; 真; 真; 真; ) CJK COMPATIBILITY IDEOGRAPH-2F947
+2F948;774A;774A;774A;774A; # (睊; çŠ; çŠ; çŠ; çŠ; ) CJK COMPATIBILITY IDEOGRAPH-2F948
+2F949;4039;4039;4039;4039; # (䀹; 䀹; 䀹; 䀹; 䀹; ) CJK COMPATIBILITY IDEOGRAPH-2F949
+2F94A;778B;778B;778B;778B; # (瞋; 瞋; 瞋; 瞋; 瞋; ) CJK COMPATIBILITY IDEOGRAPH-2F94A
+2F94B;4046;4046;4046;4046; # (䁆; ä†; ä†; ä†; ä†; ) CJK COMPATIBILITY IDEOGRAPH-2F94B
+2F94C;4096;4096;4096;4096; # (䂖; 䂖; 䂖; 䂖; 䂖; ) CJK COMPATIBILITY IDEOGRAPH-2F94C
+2F94D;2541D;2541D;2541D;2541D; # (ð¯¥; ð¥; ð¥; ð¥; ð¥; ) CJK COMPATIBILITY IDEOGRAPH-2F94D
+2F94E;784E;784E;784E;784E; # (硎; 硎; 硎; 硎; 硎; ) CJK COMPATIBILITY IDEOGRAPH-2F94E
+2F94F;788C;788C;788C;788C; # (ð¯¥; 碌; 碌; 碌; 碌; ) CJK COMPATIBILITY IDEOGRAPH-2F94F
+2F950;78CC;78CC;78CC;78CC; # (ð¯¥; 磌; 磌; 磌; 磌; ) CJK COMPATIBILITY IDEOGRAPH-2F950
+2F951;40E3;40E3;40E3;40E3; # (䃣; 䃣; 䃣; 䃣; 䃣; ) CJK COMPATIBILITY IDEOGRAPH-2F951
+2F952;25626;25626;25626;25626; # (𥘦; 𥘦; 𥘦; 𥘦; 𥘦; ) CJK COMPATIBILITY IDEOGRAPH-2F952
+2F953;7956;7956;7956;7956; # (祖; 祖; 祖; 祖; 祖; ) CJK COMPATIBILITY IDEOGRAPH-2F953
+2F954;2569A;2569A;2569A;2569A; # (𥚚; 𥚚; 𥚚; 𥚚; 𥚚; ) CJK COMPATIBILITY IDEOGRAPH-2F954
+2F955;256C5;256C5;256C5;256C5; # (𥛅; 𥛅; 𥛅; 𥛅; 𥛅; ) CJK COMPATIBILITY IDEOGRAPH-2F955
+2F956;798F;798F;798F;798F; # (福; ç¦; ç¦; ç¦; ç¦; ) CJK COMPATIBILITY IDEOGRAPH-2F956
+2F957;79EB;79EB;79EB;79EB; # (秫; 秫; 秫; 秫; 秫; ) CJK COMPATIBILITY IDEOGRAPH-2F957
+2F958;412F;412F;412F;412F; # (䄯; 䄯; 䄯; 䄯; 䄯; ) CJK COMPATIBILITY IDEOGRAPH-2F958
+2F959;7A40;7A40;7A40;7A40; # (穀; 穀; 穀; 穀; 穀; ) CJK COMPATIBILITY IDEOGRAPH-2F959
+2F95A;7A4A;7A4A;7A4A;7A4A; # (穊; 穊; 穊; 穊; 穊; ) CJK COMPATIBILITY IDEOGRAPH-2F95A
+2F95B;7A4F;7A4F;7A4F;7A4F; # (穏; ç©; ç©; ç©; ç©; ) CJK COMPATIBILITY IDEOGRAPH-2F95B
+2F95C;2597C;2597C;2597C;2597C; # (𥥼; 𥥼; 𥥼; 𥥼; 𥥼; ) CJK COMPATIBILITY IDEOGRAPH-2F95C
+2F95D;25AA7;25AA7;25AA7;25AA7; # (ð¯¥; 𥪧; 𥪧; 𥪧; 𥪧; ) CJK COMPATIBILITY IDEOGRAPH-2F95D
+2F95E;25AA7;25AA7;25AA7;25AA7; # (𥪧; 𥪧; 𥪧; 𥪧; 𥪧; ) CJK COMPATIBILITY IDEOGRAPH-2F95E
+2F95F;7AEE;7AEE;7AEE;7AEE; # (竮; 竮; 竮; 竮; 竮; ) CJK COMPATIBILITY IDEOGRAPH-2F95F
+2F960;4202;4202;4202;4202; # (䈂; 䈂; 䈂; 䈂; 䈂; ) CJK COMPATIBILITY IDEOGRAPH-2F960
+2F961;25BAB;25BAB;25BAB;25BAB; # (𥮫; 𥮫; 𥮫; 𥮫; 𥮫; ) CJK COMPATIBILITY IDEOGRAPH-2F961
+2F962;7BC6;7BC6;7BC6;7BC6; # (篆; 篆; 篆; 篆; 篆; ) CJK COMPATIBILITY IDEOGRAPH-2F962
+2F963;7BC9;7BC9;7BC9;7BC9; # (築; 築; 築; 築; 築; ) CJK COMPATIBILITY IDEOGRAPH-2F963
+2F964;4227;4227;4227;4227; # (䈧; 䈧; 䈧; 䈧; 䈧; ) CJK COMPATIBILITY IDEOGRAPH-2F964
+2F965;25C80;25C80;25C80;25C80; # (𥲀; 𥲀; 𥲀; 𥲀; 𥲀; ) CJK COMPATIBILITY IDEOGRAPH-2F965
+2F966;7CD2;7CD2;7CD2;7CD2; # (糒; 糒; 糒; 糒; 糒; ) CJK COMPATIBILITY IDEOGRAPH-2F966
+2F967;42A0;42A0;42A0;42A0; # (䊠; 䊠; 䊠; 䊠; 䊠; ) CJK COMPATIBILITY IDEOGRAPH-2F967
+2F968;7CE8;7CE8;7CE8;7CE8; # (糨; 糨; 糨; 糨; 糨; ) CJK COMPATIBILITY IDEOGRAPH-2F968
+2F969;7CE3;7CE3;7CE3;7CE3; # (糣; 糣; 糣; 糣; 糣; ) CJK COMPATIBILITY IDEOGRAPH-2F969
+2F96A;7D00;7D00;7D00;7D00; # (紀; 紀; 紀; 紀; 紀; ) CJK COMPATIBILITY IDEOGRAPH-2F96A
+2F96B;25F86;25F86;25F86;25F86; # (𥾆; 𥾆; 𥾆; 𥾆; 𥾆; ) CJK COMPATIBILITY IDEOGRAPH-2F96B
+2F96C;7D63;7D63;7D63;7D63; # (絣; 絣; 絣; 絣; 絣; ) CJK COMPATIBILITY IDEOGRAPH-2F96C
+2F96D;4301;4301;4301;4301; # (䌁; äŒ; äŒ; äŒ; äŒ; ) CJK COMPATIBILITY IDEOGRAPH-2F96D
+2F96E;7DC7;7DC7;7DC7;7DC7; # (緇; 緇; 緇; 緇; 緇; ) CJK COMPATIBILITY IDEOGRAPH-2F96E
+2F96F;7E02;7E02;7E02;7E02; # (縂; 縂; 縂; 縂; 縂; ) CJK COMPATIBILITY IDEOGRAPH-2F96F
+2F970;7E45;7E45;7E45;7E45; # (繅; 繅; 繅; 繅; 繅; ) CJK COMPATIBILITY IDEOGRAPH-2F970
+2F971;4334;4334;4334;4334; # (䌴; 䌴; 䌴; 䌴; 䌴; ) CJK COMPATIBILITY IDEOGRAPH-2F971
+2F972;26228;26228;26228;26228; # (𦈨; 𦈨; 𦈨; 𦈨; 𦈨; ) CJK COMPATIBILITY IDEOGRAPH-2F972
+2F973;26247;26247;26247;26247; # (𦉇; 𦉇; 𦉇; 𦉇; 𦉇; ) CJK COMPATIBILITY IDEOGRAPH-2F973
+2F974;4359;4359;4359;4359; # (䍙; ä™; ä™; ä™; ä™; ) CJK COMPATIBILITY IDEOGRAPH-2F974
+2F975;262D9;262D9;262D9;262D9; # (𦋙; 𦋙; 𦋙; 𦋙; 𦋙; ) CJK COMPATIBILITY IDEOGRAPH-2F975
+2F976;7F7A;7F7A;7F7A;7F7A; # (罺; 罺; 罺; 罺; 罺; ) CJK COMPATIBILITY IDEOGRAPH-2F976
+2F977;2633E;2633E;2633E;2633E; # (𦌾; 𦌾; 𦌾; 𦌾; 𦌾; ) CJK COMPATIBILITY IDEOGRAPH-2F977
+2F978;7F95;7F95;7F95;7F95; # (羕; 羕; 羕; 羕; 羕; ) CJK COMPATIBILITY IDEOGRAPH-2F978
+2F979;7FFA;7FFA;7FFA;7FFA; # (翺; 翺; 翺; 翺; 翺; ) CJK COMPATIBILITY IDEOGRAPH-2F979
+2F97A;8005;8005;8005;8005; # (者; 者; 者; 者; 者; ) CJK COMPATIBILITY IDEOGRAPH-2F97A
+2F97B;264DA;264DA;264DA;264DA; # (𦓚; 𦓚; 𦓚; 𦓚; 𦓚; ) CJK COMPATIBILITY IDEOGRAPH-2F97B
+2F97C;26523;26523;26523;26523; # (𦔣; 𦔣; 𦔣; 𦔣; 𦔣; ) CJK COMPATIBILITY IDEOGRAPH-2F97C
+2F97D;8060;8060;8060;8060; # (聠; è ; è ; è ; è ; ) CJK COMPATIBILITY IDEOGRAPH-2F97D
+2F97E;265A8;265A8;265A8;265A8; # (𦖨; 𦖨; 𦖨; 𦖨; 𦖨; ) CJK COMPATIBILITY IDEOGRAPH-2F97E
+2F97F;8070;8070;8070;8070; # (聰; è°; è°; è°; è°; ) CJK COMPATIBILITY IDEOGRAPH-2F97F
+2F980;2335F;2335F;2335F;2335F; # (𣍟; ð£Ÿ; ð£Ÿ; ð£Ÿ; ð£Ÿ; ) CJK COMPATIBILITY IDEOGRAPH-2F980
+2F981;43D5;43D5;43D5;43D5; # (ð¯¦; ä•; ä•; ä•; ä•; ) CJK COMPATIBILITY IDEOGRAPH-2F981
+2F982;80B2;80B2;80B2;80B2; # (育; 育; 育; 育; 育; ) CJK COMPATIBILITY IDEOGRAPH-2F982
+2F983;8103;8103;8103;8103; # (脃; 脃; 脃; 脃; 脃; ) CJK COMPATIBILITY IDEOGRAPH-2F983
+2F984;440B;440B;440B;440B; # (䐋; ä‹; ä‹; ä‹; ä‹; ) CJK COMPATIBILITY IDEOGRAPH-2F984
+2F985;813E;813E;813E;813E; # (脾; 脾; 脾; 脾; 脾; ) CJK COMPATIBILITY IDEOGRAPH-2F985
+2F986;5AB5;5AB5;5AB5;5AB5; # (媵; 媵; 媵; 媵; 媵; ) CJK COMPATIBILITY IDEOGRAPH-2F986
+2F987;267A7;267A7;267A7;267A7; # (𦞧; 𦞧; 𦞧; 𦞧; 𦞧; ) CJK COMPATIBILITY IDEOGRAPH-2F987
+2F988;267B5;267B5;267B5;267B5; # (𦞵; 𦞵; 𦞵; 𦞵; 𦞵; ) CJK COMPATIBILITY IDEOGRAPH-2F988
+2F989;23393;23393;23393;23393; # (𣎓; 𣎓; 𣎓; 𣎓; 𣎓; ) CJK COMPATIBILITY IDEOGRAPH-2F989
+2F98A;2339C;2339C;2339C;2339C; # (𣎜; 𣎜; 𣎜; 𣎜; 𣎜; ) CJK COMPATIBILITY IDEOGRAPH-2F98A
+2F98B;8201;8201;8201;8201; # (舁; èˆ; èˆ; èˆ; èˆ; ) CJK COMPATIBILITY IDEOGRAPH-2F98B
+2F98C;8204;8204;8204;8204; # (舄; 舄; 舄; 舄; 舄; ) CJK COMPATIBILITY IDEOGRAPH-2F98C
+2F98D;8F9E;8F9E;8F9E;8F9E; # (ð¯¦; 辞; 辞; 辞; 辞; ) CJK COMPATIBILITY IDEOGRAPH-2F98D
+2F98E;446B;446B;446B;446B; # (䑫; 䑫; 䑫; 䑫; 䑫; ) CJK COMPATIBILITY IDEOGRAPH-2F98E
+2F98F;8291;8291;8291;8291; # (ð¯¦; 芑; 芑; 芑; 芑; ) CJK COMPATIBILITY IDEOGRAPH-2F98F
+2F990;828B;828B;828B;828B; # (ð¯¦; 芋; 芋; 芋; 芋; ) CJK COMPATIBILITY IDEOGRAPH-2F990
+2F991;829D;829D;829D;829D; # (芝; èŠ; èŠ; èŠ; èŠ; ) CJK COMPATIBILITY IDEOGRAPH-2F991
+2F992;52B3;52B3;52B3;52B3; # (劳; 劳; 劳; 劳; 劳; ) CJK COMPATIBILITY IDEOGRAPH-2F992
+2F993;82B1;82B1;82B1;82B1; # (花; 花; 花; 花; 花; ) CJK COMPATIBILITY IDEOGRAPH-2F993
+2F994;82B3;82B3;82B3;82B3; # (芳; 芳; 芳; 芳; 芳; ) CJK COMPATIBILITY IDEOGRAPH-2F994
+2F995;82BD;82BD;82BD;82BD; # (芽; 芽; 芽; 芽; 芽; ) CJK COMPATIBILITY IDEOGRAPH-2F995
+2F996;82E6;82E6;82E6;82E6; # (苦; 苦; 苦; 苦; 苦; ) CJK COMPATIBILITY IDEOGRAPH-2F996
+2F997;26B3C;26B3C;26B3C;26B3C; # (𦬼; 𦬼; 𦬼; 𦬼; 𦬼; ) CJK COMPATIBILITY IDEOGRAPH-2F997
+2F998;82E5;82E5;82E5;82E5; # (若; 若; 若; 若; 若; ) CJK COMPATIBILITY IDEOGRAPH-2F998
+2F999;831D;831D;831D;831D; # (茝; èŒ; èŒ; èŒ; èŒ; ) CJK COMPATIBILITY IDEOGRAPH-2F999
+2F99A;8363;8363;8363;8363; # (荣; è£; è£; è£; è£; ) CJK COMPATIBILITY IDEOGRAPH-2F99A
+2F99B;83AD;83AD;83AD;83AD; # (莭; 莭; 莭; 莭; 莭; ) CJK COMPATIBILITY IDEOGRAPH-2F99B
+2F99C;8323;8323;8323;8323; # (茣; 茣; 茣; 茣; 茣; ) CJK COMPATIBILITY IDEOGRAPH-2F99C
+2F99D;83BD;83BD;83BD;83BD; # (ð¯¦; 莽; 莽; 莽; 莽; ) CJK COMPATIBILITY IDEOGRAPH-2F99D
+2F99E;83E7;83E7;83E7;83E7; # (菧; è§; è§; è§; è§; ) CJK COMPATIBILITY IDEOGRAPH-2F99E
+2F99F;8457;8457;8457;8457; # (著; 著; 著; 著; 著; ) CJK COMPATIBILITY IDEOGRAPH-2F99F
+2F9A0;8353;8353;8353;8353; # (荓; è“; è“; è“; è“; ) CJK COMPATIBILITY IDEOGRAPH-2F9A0
+2F9A1;83CA;83CA;83CA;83CA; # (菊; èŠ; èŠ; èŠ; èŠ; ) CJK COMPATIBILITY IDEOGRAPH-2F9A1
+2F9A2;83CC;83CC;83CC;83CC; # (菌; èŒ; èŒ; èŒ; èŒ; ) CJK COMPATIBILITY IDEOGRAPH-2F9A2
+2F9A3;83DC;83DC;83DC;83DC; # (菜; èœ; èœ; èœ; èœ; ) CJK COMPATIBILITY IDEOGRAPH-2F9A3
+2F9A4;26C36;26C36;26C36;26C36; # (𦰶; 𦰶; 𦰶; 𦰶; 𦰶; ) CJK COMPATIBILITY IDEOGRAPH-2F9A4
+2F9A5;26D6B;26D6B;26D6B;26D6B; # (𦵫; 𦵫; 𦵫; 𦵫; 𦵫; ) CJK COMPATIBILITY IDEOGRAPH-2F9A5
+2F9A6;26CD5;26CD5;26CD5;26CD5; # (𦳕; 𦳕; 𦳕; 𦳕; 𦳕; ) CJK COMPATIBILITY IDEOGRAPH-2F9A6
+2F9A7;452B;452B;452B;452B; # (䔫; 䔫; 䔫; 䔫; 䔫; ) CJK COMPATIBILITY IDEOGRAPH-2F9A7
+2F9A8;84F1;84F1;84F1;84F1; # (蓱; 蓱; 蓱; 蓱; 蓱; ) CJK COMPATIBILITY IDEOGRAPH-2F9A8
+2F9A9;84F3;84F3;84F3;84F3; # (蓳; 蓳; 蓳; 蓳; 蓳; ) CJK COMPATIBILITY IDEOGRAPH-2F9A9
+2F9AA;8516;8516;8516;8516; # (蔖; 蔖; 蔖; 蔖; 蔖; ) CJK COMPATIBILITY IDEOGRAPH-2F9AA
+2F9AB;273CA;273CA;273CA;273CA; # (𧏊; ð§Š; ð§Š; ð§Š; ð§Š; ) CJK COMPATIBILITY IDEOGRAPH-2F9AB
+2F9AC;8564;8564;8564;8564; # (蕤; 蕤; 蕤; 蕤; 蕤; ) CJK COMPATIBILITY IDEOGRAPH-2F9AC
+2F9AD;26F2C;26F2C;26F2C;26F2C; # (𦼬; 𦼬; 𦼬; 𦼬; 𦼬; ) CJK COMPATIBILITY IDEOGRAPH-2F9AD
+2F9AE;455D;455D;455D;455D; # (䕝; ä•; ä•; ä•; ä•; ) CJK COMPATIBILITY IDEOGRAPH-2F9AE
+2F9AF;4561;4561;4561;4561; # (䕡; 䕡; 䕡; 䕡; 䕡; ) CJK COMPATIBILITY IDEOGRAPH-2F9AF
+2F9B0;26FB1;26FB1;26FB1;26FB1; # (𦾱; 𦾱; 𦾱; 𦾱; 𦾱; ) CJK COMPATIBILITY IDEOGRAPH-2F9B0
+2F9B1;270D2;270D2;270D2;270D2; # (𧃒; 𧃒; 𧃒; 𧃒; 𧃒; ) CJK COMPATIBILITY IDEOGRAPH-2F9B1
+2F9B2;456B;456B;456B;456B; # (䕫; 䕫; 䕫; 䕫; 䕫; ) CJK COMPATIBILITY IDEOGRAPH-2F9B2
+2F9B3;8650;8650;8650;8650; # (虐; è™; è™; è™; è™; ) CJK COMPATIBILITY IDEOGRAPH-2F9B3
+2F9B4;865C;865C;865C;865C; # (虜; 虜; 虜; 虜; 虜; ) CJK COMPATIBILITY IDEOGRAPH-2F9B4
+2F9B5;8667;8667;8667;8667; # (虧; 虧; 虧; 虧; 虧; ) CJK COMPATIBILITY IDEOGRAPH-2F9B5
+2F9B6;8669;8669;8669;8669; # (虩; 虩; 虩; 虩; 虩; ) CJK COMPATIBILITY IDEOGRAPH-2F9B6
+2F9B7;86A9;86A9;86A9;86A9; # (蚩; 蚩; 蚩; 蚩; 蚩; ) CJK COMPATIBILITY IDEOGRAPH-2F9B7
+2F9B8;8688;8688;8688;8688; # (蚈; 蚈; 蚈; 蚈; 蚈; ) CJK COMPATIBILITY IDEOGRAPH-2F9B8
+2F9B9;870E;870E;870E;870E; # (蜎; 蜎; 蜎; 蜎; 蜎; ) CJK COMPATIBILITY IDEOGRAPH-2F9B9
+2F9BA;86E2;86E2;86E2;86E2; # (蛢; 蛢; 蛢; 蛢; 蛢; ) CJK COMPATIBILITY IDEOGRAPH-2F9BA
+2F9BB;8779;8779;8779;8779; # (蝹; è¹; è¹; è¹; è¹; ) CJK COMPATIBILITY IDEOGRAPH-2F9BB
+2F9BC;8728;8728;8728;8728; # (蜨; 蜨; 蜨; 蜨; 蜨; ) CJK COMPATIBILITY IDEOGRAPH-2F9BC
+2F9BD;876B;876B;876B;876B; # (蝫; è«; è«; è«; è«; ) CJK COMPATIBILITY IDEOGRAPH-2F9BD
+2F9BE;8786;8786;8786;8786; # (螆; 螆; 螆; 螆; 螆; ) CJK COMPATIBILITY IDEOGRAPH-2F9BE
+2F9BF;45D7;45D7;45D7;45D7; # (䗗; 䗗; 䗗; 䗗; 䗗; ) CJK COMPATIBILITY IDEOGRAPH-2F9BF
+2F9C0;87E1;87E1;87E1;87E1; # (蟡; 蟡; 蟡; 蟡; 蟡; ) CJK COMPATIBILITY IDEOGRAPH-2F9C0
+2F9C1;8801;8801;8801;8801; # (ð¯§; è ; è ; è ; è ; ) CJK COMPATIBILITY IDEOGRAPH-2F9C1
+2F9C2;45F9;45F9;45F9;45F9; # (䗹; 䗹; 䗹; 䗹; 䗹; ) CJK COMPATIBILITY IDEOGRAPH-2F9C2
+2F9C3;8860;8860;8860;8860; # (衠; 衠; 衠; 衠; 衠; ) CJK COMPATIBILITY IDEOGRAPH-2F9C3
+2F9C4;8863;8863;8863;8863; # (衣; 衣; 衣; 衣; 衣; ) CJK COMPATIBILITY IDEOGRAPH-2F9C4
+2F9C5;27667;27667;27667;27667; # (𧙧; 𧙧; 𧙧; 𧙧; 𧙧; ) CJK COMPATIBILITY IDEOGRAPH-2F9C5
+2F9C6;88D7;88D7;88D7;88D7; # (裗; 裗; 裗; 裗; 裗; ) CJK COMPATIBILITY IDEOGRAPH-2F9C6
+2F9C7;88DE;88DE;88DE;88DE; # (裞; 裞; 裞; 裞; 裞; ) CJK COMPATIBILITY IDEOGRAPH-2F9C7
+2F9C8;4635;4635;4635;4635; # (䘵; 䘵; 䘵; 䘵; 䘵; ) CJK COMPATIBILITY IDEOGRAPH-2F9C8
+2F9C9;88FA;88FA;88FA;88FA; # (裺; 裺; 裺; 裺; 裺; ) CJK COMPATIBILITY IDEOGRAPH-2F9C9
+2F9CA;34BB;34BB;34BB;34BB; # (㒻; 㒻; 㒻; 㒻; 㒻; ) CJK COMPATIBILITY IDEOGRAPH-2F9CA
+2F9CB;278AE;278AE;278AE;278AE; # (𧢮; 𧢮; 𧢮; 𧢮; 𧢮; ) CJK COMPATIBILITY IDEOGRAPH-2F9CB
+2F9CC;27966;27966;27966;27966; # (𧥦; 𧥦; 𧥦; 𧥦; 𧥦; ) CJK COMPATIBILITY IDEOGRAPH-2F9CC
+2F9CD;46BE;46BE;46BE;46BE; # (ð¯§; äš¾; äš¾; äš¾; äš¾; ) CJK COMPATIBILITY IDEOGRAPH-2F9CD
+2F9CE;46C7;46C7;46C7;46C7; # (䛇; 䛇; 䛇; 䛇; 䛇; ) CJK COMPATIBILITY IDEOGRAPH-2F9CE
+2F9CF;8AA0;8AA0;8AA0;8AA0; # (ð¯§; 誠; 誠; 誠; 誠; ) CJK COMPATIBILITY IDEOGRAPH-2F9CF
+2F9D0;8AED;8AED;8AED;8AED; # (ð¯§; è«­; è«­; è«­; è«­; ) CJK COMPATIBILITY IDEOGRAPH-2F9D0
+2F9D1;8B8A;8B8A;8B8A;8B8A; # (變; 變; 變; 變; 變; ) CJK COMPATIBILITY IDEOGRAPH-2F9D1
+2F9D2;8C55;8C55;8C55;8C55; # (豕; 豕; 豕; 豕; 豕; ) CJK COMPATIBILITY IDEOGRAPH-2F9D2
+2F9D3;27CA8;27CA8;27CA8;27CA8; # (𧲨; 𧲨; 𧲨; 𧲨; 𧲨; ) CJK COMPATIBILITY IDEOGRAPH-2F9D3
+2F9D4;8CAB;8CAB;8CAB;8CAB; # (貫; 貫; 貫; 貫; 貫; ) CJK COMPATIBILITY IDEOGRAPH-2F9D4
+2F9D5;8CC1;8CC1;8CC1;8CC1; # (賁; è³; è³; è³; è³; ) CJK COMPATIBILITY IDEOGRAPH-2F9D5
+2F9D6;8D1B;8D1B;8D1B;8D1B; # (贛; 贛; 贛; 贛; 贛; ) CJK COMPATIBILITY IDEOGRAPH-2F9D6
+2F9D7;8D77;8D77;8D77;8D77; # (起; 起; 起; 起; 起; ) CJK COMPATIBILITY IDEOGRAPH-2F9D7
+2F9D8;27F2F;27F2F;27F2F;27F2F; # (𧼯; 𧼯; 𧼯; 𧼯; 𧼯; ) CJK COMPATIBILITY IDEOGRAPH-2F9D8
+2F9D9;20804;20804;20804;20804; # (𠠄; 𠠄; 𠠄; 𠠄; 𠠄; ) CJK COMPATIBILITY IDEOGRAPH-2F9D9
+2F9DA;8DCB;8DCB;8DCB;8DCB; # (跋; 跋; 跋; 跋; 跋; ) CJK COMPATIBILITY IDEOGRAPH-2F9DA
+2F9DB;8DBC;8DBC;8DBC;8DBC; # (趼; 趼; 趼; 趼; 趼; ) CJK COMPATIBILITY IDEOGRAPH-2F9DB
+2F9DC;8DF0;8DF0;8DF0;8DF0; # (跰; 跰; 跰; 跰; 跰; ) CJK COMPATIBILITY IDEOGRAPH-2F9DC
+2F9DD;208DE;208DE;208DE;208DE; # (ð¯§; 𠣞; 𠣞; 𠣞; 𠣞; ) CJK COMPATIBILITY IDEOGRAPH-2F9DD
+2F9DE;8ED4;8ED4;8ED4;8ED4; # (軔; 軔; 軔; 軔; 軔; ) CJK COMPATIBILITY IDEOGRAPH-2F9DE
+2F9DF;8F38;8F38;8F38;8F38; # (輸; 輸; 輸; 輸; 輸; ) CJK COMPATIBILITY IDEOGRAPH-2F9DF
+2F9E0;285D2;285D2;285D2;285D2; # (𨗒; 𨗒; 𨗒; 𨗒; 𨗒; ) CJK COMPATIBILITY IDEOGRAPH-2F9E0
+2F9E1;285ED;285ED;285ED;285ED; # (𨗭; 𨗭; 𨗭; 𨗭; 𨗭; ) CJK COMPATIBILITY IDEOGRAPH-2F9E1
+2F9E2;9094;9094;9094;9094; # (邔; 邔; 邔; 邔; 邔; ) CJK COMPATIBILITY IDEOGRAPH-2F9E2
+2F9E3;90F1;90F1;90F1;90F1; # (郱; 郱; 郱; 郱; 郱; ) CJK COMPATIBILITY IDEOGRAPH-2F9E3
+2F9E4;9111;9111;9111;9111; # (鄑; 鄑; 鄑; 鄑; 鄑; ) CJK COMPATIBILITY IDEOGRAPH-2F9E4
+2F9E5;2872E;2872E;2872E;2872E; # (𨜮; 𨜮; 𨜮; 𨜮; 𨜮; ) CJK COMPATIBILITY IDEOGRAPH-2F9E5
+2F9E6;911B;911B;911B;911B; # (鄛; 鄛; 鄛; 鄛; 鄛; ) CJK COMPATIBILITY IDEOGRAPH-2F9E6
+2F9E7;9238;9238;9238;9238; # (鈸; 鈸; 鈸; 鈸; 鈸; ) CJK COMPATIBILITY IDEOGRAPH-2F9E7
+2F9E8;92D7;92D7;92D7;92D7; # (鋗; 鋗; 鋗; 鋗; 鋗; ) CJK COMPATIBILITY IDEOGRAPH-2F9E8
+2F9E9;92D8;92D8;92D8;92D8; # (鋘; 鋘; 鋘; 鋘; 鋘; ) CJK COMPATIBILITY IDEOGRAPH-2F9E9
+2F9EA;927C;927C;927C;927C; # (鉼; 鉼; 鉼; 鉼; 鉼; ) CJK COMPATIBILITY IDEOGRAPH-2F9EA
+2F9EB;93F9;93F9;93F9;93F9; # (鏹; é¹; é¹; é¹; é¹; ) CJK COMPATIBILITY IDEOGRAPH-2F9EB
+2F9EC;9415;9415;9415;9415; # (鐕; é•; é•; é•; é•; ) CJK COMPATIBILITY IDEOGRAPH-2F9EC
+2F9ED;28BFA;28BFA;28BFA;28BFA; # (𨯺; 𨯺; 𨯺; 𨯺; 𨯺; ) CJK COMPATIBILITY IDEOGRAPH-2F9ED
+2F9EE;958B;958B;958B;958B; # (開; 開; 開; 開; 開; ) CJK COMPATIBILITY IDEOGRAPH-2F9EE
+2F9EF;4995;4995;4995;4995; # (䦕; 䦕; 䦕; 䦕; 䦕; ) CJK COMPATIBILITY IDEOGRAPH-2F9EF
+2F9F0;95B7;95B7;95B7;95B7; # (閷; 閷; 閷; 閷; 閷; ) CJK COMPATIBILITY IDEOGRAPH-2F9F0
+2F9F1;28D77;28D77;28D77;28D77; # (𨵷; 𨵷; 𨵷; 𨵷; 𨵷; ) CJK COMPATIBILITY IDEOGRAPH-2F9F1
+2F9F2;49E6;49E6;49E6;49E6; # (䧦; 䧦; 䧦; 䧦; 䧦; ) CJK COMPATIBILITY IDEOGRAPH-2F9F2
+2F9F3;96C3;96C3;96C3;96C3; # (雃; 雃; 雃; 雃; 雃; ) CJK COMPATIBILITY IDEOGRAPH-2F9F3
+2F9F4;5DB2;5DB2;5DB2;5DB2; # (嶲; 嶲; 嶲; 嶲; 嶲; ) CJK COMPATIBILITY IDEOGRAPH-2F9F4
+2F9F5;9723;9723;9723;9723; # (霣; 霣; 霣; 霣; 霣; ) CJK COMPATIBILITY IDEOGRAPH-2F9F5
+2F9F6;29145;29145;29145;29145; # (𩅅; 𩅅; 𩅅; 𩅅; 𩅅; ) CJK COMPATIBILITY IDEOGRAPH-2F9F6
+2F9F7;2921A;2921A;2921A;2921A; # (𩈚; 𩈚; 𩈚; 𩈚; 𩈚; ) CJK COMPATIBILITY IDEOGRAPH-2F9F7
+2F9F8;4A6E;4A6E;4A6E;4A6E; # (䩮; 䩮; 䩮; 䩮; 䩮; ) CJK COMPATIBILITY IDEOGRAPH-2F9F8
+2F9F9;4A76;4A76;4A76;4A76; # (䩶; 䩶; 䩶; 䩶; 䩶; ) CJK COMPATIBILITY IDEOGRAPH-2F9F9
+2F9FA;97E0;97E0;97E0;97E0; # (韠; 韠; 韠; 韠; 韠; ) CJK COMPATIBILITY IDEOGRAPH-2F9FA
+2F9FB;2940A;2940A;2940A;2940A; # (𩐊; ð©Š; ð©Š; ð©Š; ð©Š; ) CJK COMPATIBILITY IDEOGRAPH-2F9FB
+2F9FC;4AB2;4AB2;4AB2;4AB2; # (䪲; 䪲; 䪲; 䪲; 䪲; ) CJK COMPATIBILITY IDEOGRAPH-2F9FC
+2F9FD;29496;29496;29496;29496; # (𩒖; 𩒖; 𩒖; 𩒖; 𩒖; ) CJK COMPATIBILITY IDEOGRAPH-2F9FD
+2F9FE;980B;980B;980B;980B; # (頋; 頋; 頋; 頋; 頋; ) CJK COMPATIBILITY IDEOGRAPH-2F9FE
+2F9FF;980B;980B;980B;980B; # (頋; 頋; 頋; 頋; 頋; ) CJK COMPATIBILITY IDEOGRAPH-2F9FF
+2FA00;9829;9829;9829;9829; # (頩; 頩; 頩; 頩; 頩; ) CJK COMPATIBILITY IDEOGRAPH-2FA00
+2FA01;295B6;295B6;295B6;295B6; # (ð¯¨; ð©–¶; ð©–¶; ð©–¶; ð©–¶; ) CJK COMPATIBILITY IDEOGRAPH-2FA01
+2FA02;98E2;98E2;98E2;98E2; # (飢; 飢; 飢; 飢; 飢; ) CJK COMPATIBILITY IDEOGRAPH-2FA02
+2FA03;4B33;4B33;4B33;4B33; # (䬳; 䬳; 䬳; 䬳; 䬳; ) CJK COMPATIBILITY IDEOGRAPH-2FA03
+2FA04;9929;9929;9929;9929; # (餩; 餩; 餩; 餩; 餩; ) CJK COMPATIBILITY IDEOGRAPH-2FA04
+2FA05;99A7;99A7;99A7;99A7; # (馧; 馧; 馧; 馧; 馧; ) CJK COMPATIBILITY IDEOGRAPH-2FA05
+2FA06;99C2;99C2;99C2;99C2; # (駂; 駂; 駂; 駂; 駂; ) CJK COMPATIBILITY IDEOGRAPH-2FA06
+2FA07;99FE;99FE;99FE;99FE; # (駾; 駾; 駾; 駾; 駾; ) CJK COMPATIBILITY IDEOGRAPH-2FA07
+2FA08;4BCE;4BCE;4BCE;4BCE; # (䯎; 䯎; 䯎; 䯎; 䯎; ) CJK COMPATIBILITY IDEOGRAPH-2FA08
+2FA09;29B30;29B30;29B30;29B30; # (𩬰; 𩬰; 𩬰; 𩬰; 𩬰; ) CJK COMPATIBILITY IDEOGRAPH-2FA09
+2FA0A;9B12;9B12;9B12;9B12; # (鬒; 鬒; 鬒; 鬒; 鬒; ) CJK COMPATIBILITY IDEOGRAPH-2FA0A
+2FA0B;9C40;9C40;9C40;9C40; # (鱀; 鱀; 鱀; 鱀; 鱀; ) CJK COMPATIBILITY IDEOGRAPH-2FA0B
+2FA0C;9CFD;9CFD;9CFD;9CFD; # (鳽; 鳽; 鳽; 鳽; 鳽; ) CJK COMPATIBILITY IDEOGRAPH-2FA0C
+2FA0D;4CCE;4CCE;4CCE;4CCE; # (ð¯¨; 䳎; 䳎; 䳎; 䳎; ) CJK COMPATIBILITY IDEOGRAPH-2FA0D
+2FA0E;4CED;4CED;4CED;4CED; # (䳭; 䳭; 䳭; 䳭; 䳭; ) CJK COMPATIBILITY IDEOGRAPH-2FA0E
+2FA0F;9D67;9D67;9D67;9D67; # (ð¯¨; 鵧; 鵧; 鵧; 鵧; ) CJK COMPATIBILITY IDEOGRAPH-2FA0F
+2FA10;2A0CE;2A0CE;2A0CE;2A0CE; # (ð¯¨; 𪃎; 𪃎; 𪃎; 𪃎; ) CJK COMPATIBILITY IDEOGRAPH-2FA10
+2FA11;4CF8;4CF8;4CF8;4CF8; # (䳸; 䳸; 䳸; 䳸; 䳸; ) CJK COMPATIBILITY IDEOGRAPH-2FA11
+2FA12;2A105;2A105;2A105;2A105; # (𪄅; 𪄅; 𪄅; 𪄅; 𪄅; ) CJK COMPATIBILITY IDEOGRAPH-2FA12
+2FA13;2A20E;2A20E;2A20E;2A20E; # (𪈎; 𪈎; 𪈎; 𪈎; 𪈎; ) CJK COMPATIBILITY IDEOGRAPH-2FA13
+2FA14;2A291;2A291;2A291;2A291; # (𪊑; 𪊑; 𪊑; 𪊑; 𪊑; ) CJK COMPATIBILITY IDEOGRAPH-2FA14
+2FA15;9EBB;9EBB;9EBB;9EBB; # (麻; 麻; 麻; 麻; 麻; ) CJK COMPATIBILITY IDEOGRAPH-2FA15
+2FA16;4D56;4D56;4D56;4D56; # (䵖; 䵖; 䵖; 䵖; 䵖; ) CJK COMPATIBILITY IDEOGRAPH-2FA16
+2FA17;9EF9;9EF9;9EF9;9EF9; # (黹; 黹; 黹; 黹; 黹; ) CJK COMPATIBILITY IDEOGRAPH-2FA17
+2FA18;9EFE;9EFE;9EFE;9EFE; # (黾; 黾; 黾; 黾; 黾; ) CJK COMPATIBILITY IDEOGRAPH-2FA18
+2FA19;9F05;9F05;9F05;9F05; # (鼅; 鼅; 鼅; 鼅; 鼅; ) CJK COMPATIBILITY IDEOGRAPH-2FA19
+2FA1A;9F0F;9F0F;9F0F;9F0F; # (鼏; é¼; é¼; é¼; é¼; ) CJK COMPATIBILITY IDEOGRAPH-2FA1A
+2FA1B;9F16;9F16;9F16;9F16; # (鼖; 鼖; 鼖; 鼖; 鼖; ) CJK COMPATIBILITY IDEOGRAPH-2FA1B
+2FA1C;9F3B;9F3B;9F3B;9F3B; # (鼻; 鼻; 鼻; 鼻; 鼻; ) CJK COMPATIBILITY IDEOGRAPH-2FA1C
+2FA1D;2A600;2A600;2A600;2A600; # (ð¯¨; 𪘀; 𪘀; 𪘀; 𪘀; ) CJK COMPATIBILITY IDEOGRAPH-2FA1D
+#
+@Part2 # Canonical Order Test
+#
+0061 0315 0300 05AE 0300 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062; # (a◌̕◌̀◌֮◌̀b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
+0061 0300 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062; # (a◌̀◌̕◌̀◌֮b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0301 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062; # (a◌̕◌̀◌֮◌Ìb; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ACUTE ACCENT, LATIN SMALL LETTER B
+0061 0301 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062; # (aâ—ŒÌ◌̕◌̀◌֮b; á◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; á◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ACUTE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0302 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062; # (a◌̕◌̀◌֮◌̂b; à◌֮◌̂◌̕b; a◌֮◌̀◌̂◌̕b; à◌֮◌̂◌̕b; a◌֮◌̀◌̂◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CIRCUMFLEX ACCENT, LATIN SMALL LETTER B
+0061 0302 0315 0300 05AE 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062; # (a◌̂◌̕◌̀◌֮b; ầ◌֮◌̕b; a◌֮◌̂◌̀◌̕b; ầ◌֮◌̕b; a◌֮◌̂◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CIRCUMFLEX ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0303 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062; # (a◌̕◌̀◌֮◌̃b; à◌֮◌̃◌̕b; a◌֮◌̀◌̃◌̕b; à◌֮◌̃◌̕b; a◌֮◌̀◌̃◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING TILDE, LATIN SMALL LETTER B
+0061 0303 0315 0300 05AE 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062; # (a◌̃◌̕◌̀◌֮b; ã◌֮◌̀◌̕b; a◌֮◌̃◌̀◌̕b; ã◌֮◌̀◌̕b; a◌֮◌̃◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING TILDE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0304 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062; # (a◌̕◌̀◌֮◌̄b; à◌֮◌̄◌̕b; a◌֮◌̀◌̄◌̕b; à◌֮◌̄◌̕b; a◌֮◌̀◌̄◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING MACRON, LATIN SMALL LETTER B
+0061 0304 0315 0300 05AE 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062; # (a◌̄◌̕◌̀◌֮b; Ä◌֮◌̀◌̕b; a◌֮◌̄◌̀◌̕b; Ä◌֮◌̀◌̕b; a◌֮◌̄◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING MACRON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0305 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062; # (a◌̕◌̀◌֮◌̅b; à◌֮◌̅◌̕b; a◌֮◌̀◌̅◌̕b; à◌֮◌̅◌̕b; a◌֮◌̀◌̅◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING OVERLINE, LATIN SMALL LETTER B
+0061 0305 0315 0300 05AE 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062; # (a◌̅◌̕◌̀◌֮b; a◌֮◌̅◌̀◌̕b; a◌֮◌̅◌̀◌̕b; a◌֮◌̅◌̀◌̕b; a◌֮◌̅◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING OVERLINE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0306 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062; # (a◌̕◌̀◌֮◌̆b; à◌֮◌̆◌̕b; a◌֮◌̀◌̆◌̕b; à◌֮◌̆◌̕b; a◌֮◌̀◌̆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING BREVE, LATIN SMALL LETTER B
+0061 0306 0315 0300 05AE 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062; # (a◌̆◌̕◌̀◌֮b; ằ◌֮◌̕b; a◌֮◌̆◌̀◌̕b; ằ◌֮◌̕b; a◌֮◌̆◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING BREVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0307 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062; # (a◌̕◌̀◌֮◌̇b; à◌֮◌̇◌̕b; a◌֮◌̀◌̇◌̕b; à◌֮◌̇◌̕b; a◌֮◌̀◌̇◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOT ABOVE, LATIN SMALL LETTER B
+0061 0307 0315 0300 05AE 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062; # (a◌̇◌̕◌̀◌֮b; ȧ◌֮◌̀◌̕b; a◌֮◌̇◌̀◌̕b; ȧ◌֮◌̀◌̕b; a◌֮◌̇◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOT ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0308 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062; # (a◌̕◌̀◌֮◌̈b; à◌֮◌̈◌̕b; a◌֮◌̀◌̈◌̕b; à◌֮◌̈◌̕b; a◌֮◌̀◌̈◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DIAERESIS, LATIN SMALL LETTER B
+0061 0308 0315 0300 05AE 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062; # (a◌̈◌̕◌̀◌֮b; ä◌֮◌̀◌̕b; a◌֮◌̈◌̀◌̕b; ä◌֮◌̀◌̕b; a◌֮◌̈◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DIAERESIS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0309 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062; # (a◌̕◌̀◌֮◌̉b; à◌֮◌̉◌̕b; a◌֮◌̀◌̉◌̕b; à◌֮◌̉◌̕b; a◌֮◌̀◌̉◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING HOOK ABOVE, LATIN SMALL LETTER B
+0061 0309 0315 0300 05AE 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062; # (a◌̉◌̕◌̀◌֮b; ả◌֮◌̀◌̕b; a◌֮◌̉◌̀◌̕b; ả◌֮◌̀◌̕b; a◌֮◌̉◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING HOOK ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030A 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062; # (a◌̕◌̀◌֮◌̊b; à◌֮◌̊◌̕b; a◌֮◌̀◌̊◌̕b; à◌֮◌̊◌̕b; a◌֮◌̀◌̊◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING RING ABOVE, LATIN SMALL LETTER B
+0061 030A 0315 0300 05AE 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062; # (a◌̊◌̕◌̀◌֮b; å◌֮◌̀◌̕b; a◌֮◌̊◌̀◌̕b; å◌֮◌̀◌̕b; a◌֮◌̊◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING RING ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030B 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062; # (a◌̕◌̀◌֮◌̋b; à◌֮◌̋◌̕b; a◌֮◌̀◌̋◌̕b; à◌֮◌̋◌̕b; a◌֮◌̀◌̋◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE ACUTE ACCENT, LATIN SMALL LETTER B
+0061 030B 0315 0300 05AE 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062; # (a◌̋◌̕◌̀◌֮b; a◌֮◌̋◌̀◌̕b; a◌֮◌̋◌̀◌̕b; a◌֮◌̋◌̀◌̕b; a◌֮◌̋◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE ACUTE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030C 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062; # (a◌̕◌̀◌֮◌̌b; à◌֮◌̌◌̕b; a◌֮◌̀◌̌◌̕b; à◌֮◌̌◌̕b; a◌֮◌̀◌̌◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CARON, LATIN SMALL LETTER B
+0061 030C 0315 0300 05AE 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062; # (a◌̌◌̕◌̀◌֮b; ǎ◌֮◌̀◌̕b; a◌֮◌̌◌̀◌̕b; ǎ◌֮◌̀◌̕b; a◌֮◌̌◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CARON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030D 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062; # (a◌̕◌̀◌֮◌Ìb; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING VERTICAL LINE ABOVE, LATIN SMALL LETTER B
+0061 030D 0315 0300 05AE 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062; # (aâ—ŒÌ◌̕◌̀◌֮b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING VERTICAL LINE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030E 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062; # (a◌̕◌̀◌֮◌̎b; à◌֮◌̎◌̕b; a◌֮◌̀◌̎◌̕b; à◌֮◌̎◌̕b; a◌֮◌̀◌̎◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE VERTICAL LINE ABOVE, LATIN SMALL LETTER B
+0061 030E 0315 0300 05AE 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062; # (a◌̎◌̕◌̀◌֮b; a◌֮◌̎◌̀◌̕b; a◌֮◌̎◌̀◌̕b; a◌֮◌̎◌̀◌̕b; a◌֮◌̎◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE VERTICAL LINE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030F 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062; # (a◌̕◌̀◌֮◌Ìb; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE GRAVE ACCENT, LATIN SMALL LETTER B
+0061 030F 0315 0300 05AE 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062; # (aâ—ŒÌ◌̕◌̀◌֮b; È◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; È◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE GRAVE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0310 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062; # (a◌̕◌̀◌֮◌Ìb; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CANDRABINDU, LATIN SMALL LETTER B
+0061 0310 0315 0300 05AE 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062; # (aâ—ŒÌ◌̕◌̀◌֮b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CANDRABINDU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0311 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062; # (a◌̕◌̀◌֮◌̑b; à◌֮◌̑◌̕b; a◌֮◌̀◌̑◌̕b; à◌֮◌̑◌̕b; a◌֮◌̀◌̑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING INVERTED BREVE, LATIN SMALL LETTER B
+0061 0311 0315 0300 05AE 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062; # (a◌̑◌̕◌̀◌֮b; ȃ◌֮◌̀◌̕b; a◌֮◌̑◌̀◌̕b; ȃ◌֮◌̀◌̕b; a◌֮◌̑◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING INVERTED BREVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0312 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062; # (a◌̕◌̀◌֮◌̒b; à◌֮◌̒◌̕b; a◌֮◌̀◌̒◌̕b; à◌֮◌̒◌̕b; a◌֮◌̀◌̒◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING TURNED COMMA ABOVE, LATIN SMALL LETTER B
+0061 0312 0315 0300 05AE 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062; # (a◌̒◌̕◌̀◌֮b; a◌֮◌̒◌̀◌̕b; a◌֮◌̒◌̀◌̕b; a◌֮◌̒◌̀◌̕b; a◌֮◌̒◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING TURNED COMMA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0313 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062; # (a◌̕◌̀◌֮◌̓b; à◌֮◌̓◌̕b; a◌֮◌̀◌̓◌̕b; à◌֮◌̓◌̕b; a◌֮◌̀◌̓◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING COMMA ABOVE, LATIN SMALL LETTER B
+0061 0313 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062; # (a◌̓◌̕◌̀◌֮b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0314 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062; # (a◌̕◌̀◌֮◌̔b; à◌֮◌̔◌̕b; a◌֮◌̀◌̔◌̕b; à◌֮◌̔◌̕b; a◌֮◌̀◌̔◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING REVERSED COMMA ABOVE, LATIN SMALL LETTER B
+0061 0314 0315 0300 05AE 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062; # (a◌̔◌̕◌̀◌֮b; a◌֮◌̔◌̀◌̕b; a◌֮◌̔◌̀◌̕b; a◌֮◌̔◌̀◌̕b; a◌֮◌̔◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING REVERSED COMMA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 035C 0315 0300 0315 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062; # (a◌͜◌̕◌̀◌̕b; à◌̕◌̕◌͜b; a◌̀◌̕◌̕◌͜b; à◌̕◌̕◌͜b; a◌̀◌̕◌̕◌͜b; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, COMBINING COMMA ABOVE RIGHT, LATIN SMALL LETTER B
+0061 0315 035C 0315 0300 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062; # (a◌̕◌͜◌̕◌̀b; à◌̕◌̕◌͜b; a◌̀◌̕◌̕◌͜b; à◌̕◌̕◌͜b; a◌̀◌̕◌̕◌͜b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
+0061 059A 0316 302A 0316 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062; # (a◌֚◌̖◌〪◌̖b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING GRAVE ACCENT BELOW, LATIN SMALL LETTER B
+0061 0316 059A 0316 302A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062; # (a◌̖◌֚◌̖◌〪b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0317 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062; # (a◌֚◌̖◌〪◌̗b; a◌〪◌̖◌̗◌֚b; a◌〪◌̖◌̗◌֚b; a◌〪◌̖◌̗◌֚b; a◌〪◌̖◌̗◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING ACUTE ACCENT BELOW, LATIN SMALL LETTER B
+0061 0317 059A 0316 302A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062; # (a◌̗◌֚◌̖◌〪b; a◌〪◌̗◌̖◌֚b; a◌〪◌̗◌̖◌֚b; a◌〪◌̗◌̖◌֚b; a◌〪◌̗◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING ACUTE ACCENT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0318 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062; # (a◌֚◌̖◌〪◌̘b; a◌〪◌̖◌̘◌֚b; a◌〪◌̖◌̘◌֚b; a◌〪◌̖◌̘◌֚b; a◌〪◌̖◌̘◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT TACK BELOW, LATIN SMALL LETTER B
+0061 0318 059A 0316 302A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062; # (a◌̘◌֚◌̖◌〪b; a◌〪◌̘◌̖◌֚b; a◌〪◌̘◌̖◌֚b; a◌〪◌̘◌̖◌֚b; a◌〪◌̘◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT TACK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0319 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062; # (a◌֚◌̖◌〪◌̙b; a◌〪◌̖◌̙◌֚b; a◌〪◌̖◌̙◌֚b; a◌〪◌̖◌̙◌֚b; a◌〪◌̖◌̙◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT TACK BELOW, LATIN SMALL LETTER B
+0061 0319 059A 0316 302A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062; # (a◌̙◌֚◌̖◌〪b; a◌〪◌̙◌̖◌֚b; a◌〪◌̙◌̖◌֚b; a◌〪◌̙◌̖◌֚b; a◌〪◌̙◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT TACK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 035C 0315 0300 031A 0062;00E0 0315 031A 035C 0062;0061 0300 0315 031A 035C 0062;00E0 0315 031A 035C 0062;0061 0300 0315 031A 035C 0062; # (a◌͜◌̕◌̀◌̚b; à◌̕◌̚◌͜b; a◌̀◌̕◌̚◌͜b; à◌̕◌̚◌͜b; a◌̀◌̕◌̚◌͜b; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, COMBINING LEFT ANGLE ABOVE, LATIN SMALL LETTER B
+0061 031A 035C 0315 0300 0062;00E0 031A 0315 035C 0062;0061 0300 031A 0315 035C 0062;00E0 031A 0315 035C 0062;0061 0300 031A 0315 035C 0062; # (a◌̚◌͜◌̕◌̀b; à◌̚◌̕◌͜b; a◌̀◌̚◌̕◌͜b; à◌̚◌̕◌͜b; a◌̀◌̚◌̕◌͜b; ) LATIN SMALL LETTER A, COMBINING LEFT ANGLE ABOVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
+0061 302A 031B 1DCE 031B 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062; # (a◌〪◌̛◌᷎◌̛b; a◌᷎◌̛◌̛◌〪b; a◌᷎◌̛◌̛◌〪b; a◌᷎◌̛◌̛◌〪b; a◌᷎◌̛◌̛◌〪b; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, COMBINING HORN, LATIN SMALL LETTER B
+0061 031B 302A 031B 1DCE 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062; # (a◌̛◌〪◌̛◌᷎b; a◌᷎◌̛◌̛◌〪b; a◌᷎◌̛◌̛◌〪b; a◌᷎◌̛◌̛◌〪b; a◌᷎◌̛◌̛◌〪b; ) LATIN SMALL LETTER A, COMBINING HORN, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
+0061 059A 0316 302A 031C 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062; # (a◌֚◌̖◌〪◌̜b; a◌〪◌̖◌̜◌֚b; a◌〪◌̖◌̜◌֚b; a◌〪◌̖◌̜◌֚b; a◌〪◌̖◌̜◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT HALF RING BELOW, LATIN SMALL LETTER B
+0061 031C 059A 0316 302A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062; # (a◌̜◌֚◌̖◌〪b; a◌〪◌̜◌̖◌֚b; a◌〪◌̜◌̖◌֚b; a◌〪◌̜◌̖◌֚b; a◌〪◌̜◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT HALF RING BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 031D 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062; # (a◌֚◌̖◌〪◌Ìb; a◌〪◌̖◌Ì◌֚b; a◌〪◌̖◌Ì◌֚b; a◌〪◌̖◌Ì◌֚b; a◌〪◌̖◌Ì◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING UP TACK BELOW, LATIN SMALL LETTER B
+0061 031D 059A 0316 302A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062; # (aâ—ŒÌ◌֚◌̖◌〪b; a◌〪◌Ì◌̖◌֚b; a◌〪◌Ì◌̖◌֚b; a◌〪◌Ì◌̖◌֚b; a◌〪◌Ì◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING UP TACK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 031E 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062; # (a◌֚◌̖◌〪◌̞b; a◌〪◌̖◌̞◌֚b; a◌〪◌̖◌̞◌֚b; a◌〪◌̖◌̞◌֚b; a◌〪◌̖◌̞◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOWN TACK BELOW, LATIN SMALL LETTER B
+0061 031E 059A 0316 302A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062; # (a◌̞◌֚◌̖◌〪b; a◌〪◌̞◌̖◌֚b; a◌〪◌̞◌̖◌֚b; a◌〪◌̞◌̖◌֚b; a◌〪◌̞◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOWN TACK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 031F 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062; # (a◌֚◌̖◌〪◌̟b; a◌〪◌̖◌̟◌֚b; a◌〪◌̖◌̟◌֚b; a◌〪◌̖◌̟◌֚b; a◌〪◌̖◌̟◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING PLUS SIGN BELOW, LATIN SMALL LETTER B
+0061 031F 059A 0316 302A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062; # (a◌̟◌֚◌̖◌〪b; a◌〪◌̟◌̖◌֚b; a◌〪◌̟◌̖◌֚b; a◌〪◌̟◌̖◌֚b; a◌〪◌̟◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING PLUS SIGN BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0320 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062; # (a◌֚◌̖◌〪◌̠b; a◌〪◌̖◌̠◌֚b; a◌〪◌̖◌̠◌֚b; a◌〪◌̖◌̠◌֚b; a◌〪◌̖◌̠◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING MINUS SIGN BELOW, LATIN SMALL LETTER B
+0061 0320 059A 0316 302A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062; # (a◌̠◌֚◌̖◌〪b; a◌〪◌̠◌̖◌֚b; a◌〪◌̠◌̖◌֚b; a◌〪◌̠◌̖◌֚b; a◌〪◌̠◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING MINUS SIGN BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 1DCE 0321 0F74 0321 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062; # (a◌᷎◌̡◌ུ◌̡b; a◌ུ◌̡◌̡◌᷎b; a◌ུ◌̡◌̡◌᷎b; a◌ུ◌̡◌̡◌᷎b; a◌ུ◌̡◌̡◌᷎b; ) LATIN SMALL LETTER A, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 0321 1DCE 0321 0F74 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062; # (a◌̡◌᷎◌̡◌ུb; a◌ུ◌̡◌̡◌᷎b; a◌ུ◌̡◌̡◌᷎b; a◌ུ◌̡◌̡◌᷎b; a◌ུ◌̡◌̡◌᷎b; ) LATIN SMALL LETTER A, COMBINING PALATALIZED HOOK BELOW, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 1DCE 0321 0F74 0322 0062;0061 0F74 0321 0322 1DCE 0062;0061 0F74 0321 0322 1DCE 0062;0061 0F74 0321 0322 1DCE 0062;0061 0F74 0321 0322 1DCE 0062; # (a◌᷎◌̡◌ུ◌̢b; a◌ུ◌̡◌̢◌᷎b; a◌ུ◌̡◌̢◌᷎b; a◌ུ◌̡◌̢◌᷎b; a◌ུ◌̡◌̢◌᷎b; ) LATIN SMALL LETTER A, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, COMBINING RETROFLEX HOOK BELOW, LATIN SMALL LETTER B
+0061 0322 1DCE 0321 0F74 0062;0061 0F74 0322 0321 1DCE 0062;0061 0F74 0322 0321 1DCE 0062;0061 0F74 0322 0321 1DCE 0062;0061 0F74 0322 0321 1DCE 0062; # (a◌̢◌᷎◌̡◌ུb; a◌ུ◌̢◌̡◌᷎b; a◌ུ◌̢◌̡◌᷎b; a◌ུ◌̢◌̡◌᷎b; a◌ུ◌̢◌̡◌᷎b; ) LATIN SMALL LETTER A, COMBINING RETROFLEX HOOK BELOW, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 059A 0316 302A 0323 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062; # (a◌֚◌̖◌〪◌̣b; a◌〪◌̖◌̣◌֚b; a◌〪◌̖◌̣◌֚b; a◌〪◌̖◌̣◌֚b; a◌〪◌̖◌̣◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOT BELOW, LATIN SMALL LETTER B
+0061 0323 059A 0316 302A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062; # (a◌̣◌֚◌̖◌〪b; ạ◌〪◌̖◌֚b; a◌〪◌̣◌̖◌֚b; ạ◌〪◌̖◌֚b; a◌〪◌̣◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0324 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062; # (a◌֚◌̖◌〪◌̤b; a◌〪◌̖◌̤◌֚b; a◌〪◌̖◌̤◌֚b; a◌〪◌̖◌̤◌֚b; a◌〪◌̖◌̤◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DIAERESIS BELOW, LATIN SMALL LETTER B
+0061 0324 059A 0316 302A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062; # (a◌̤◌֚◌̖◌〪b; a◌〪◌̤◌̖◌֚b; a◌〪◌̤◌̖◌֚b; a◌〪◌̤◌̖◌֚b; a◌〪◌̤◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DIAERESIS BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0325 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062; # (a◌֚◌̖◌〪◌̥b; a◌〪◌̖◌̥◌֚b; a◌〪◌̖◌̥◌֚b; a◌〪◌̖◌̥◌֚b; a◌〪◌̖◌̥◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RING BELOW, LATIN SMALL LETTER B
+0061 0325 059A 0316 302A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062; # (a◌̥◌֚◌̖◌〪b; á¸â—Œã€ªâ—ŒÌ–◌֚b; a◌〪◌̥◌̖◌֚b; á¸â—Œã€ªâ—ŒÌ–◌֚b; a◌〪◌̥◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RING BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0326 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062; # (a◌֚◌̖◌〪◌̦b; a◌〪◌̖◌̦◌֚b; a◌〪◌̖◌̦◌֚b; a◌〪◌̖◌̦◌֚b; a◌〪◌̖◌̦◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING COMMA BELOW, LATIN SMALL LETTER B
+0061 0326 059A 0316 302A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062; # (a◌̦◌֚◌̖◌〪b; a◌〪◌̦◌̖◌֚b; a◌〪◌̦◌̖◌֚b; a◌〪◌̦◌̖◌֚b; a◌〪◌̦◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING COMMA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 1DCE 0321 0F74 0327 0062;0061 0F74 0321 0327 1DCE 0062;0061 0F74 0321 0327 1DCE 0062;0061 0F74 0321 0327 1DCE 0062;0061 0F74 0321 0327 1DCE 0062; # (a◌᷎◌̡◌ུ◌̧b; a◌ུ◌̡◌̧◌᷎b; a◌ུ◌̡◌̧◌᷎b; a◌ུ◌̡◌̧◌᷎b; a◌ུ◌̡◌̧◌᷎b; ) LATIN SMALL LETTER A, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, COMBINING CEDILLA, LATIN SMALL LETTER B
+0061 0327 1DCE 0321 0F74 0062;0061 0F74 0327 0321 1DCE 0062;0061 0F74 0327 0321 1DCE 0062;0061 0F74 0327 0321 1DCE 0062;0061 0F74 0327 0321 1DCE 0062; # (a◌̧◌᷎◌̡◌ུb; a◌ུ◌̧◌̡◌᷎b; a◌ུ◌̧◌̡◌᷎b; a◌ུ◌̧◌̡◌᷎b; a◌ུ◌̧◌̡◌᷎b; ) LATIN SMALL LETTER A, COMBINING CEDILLA, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 1DCE 0321 0F74 0328 0062;0061 0F74 0321 0328 1DCE 0062;0061 0F74 0321 0328 1DCE 0062;0061 0F74 0321 0328 1DCE 0062;0061 0F74 0321 0328 1DCE 0062; # (a◌᷎◌̡◌ུ◌̨b; a◌ུ◌̡◌̨◌᷎b; a◌ུ◌̡◌̨◌᷎b; a◌ུ◌̡◌̨◌᷎b; a◌ུ◌̡◌̨◌᷎b; ) LATIN SMALL LETTER A, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, COMBINING OGONEK, LATIN SMALL LETTER B
+0061 0328 1DCE 0321 0F74 0062;0105 0F74 0321 1DCE 0062;0061 0F74 0328 0321 1DCE 0062;0105 0F74 0321 1DCE 0062;0061 0F74 0328 0321 1DCE 0062; # (a◌̨◌᷎◌̡◌ུb; ą◌ུ◌̡◌᷎b; a◌ུ◌̨◌̡◌᷎b; ą◌ུ◌̡◌᷎b; a◌ུ◌̨◌̡◌᷎b; ) LATIN SMALL LETTER A, COMBINING OGONEK, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 059A 0316 302A 0329 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062; # (a◌֚◌̖◌〪◌̩b; a◌〪◌̖◌̩◌֚b; a◌〪◌̖◌̩◌֚b; a◌〪◌̖◌̩◌֚b; a◌〪◌̖◌̩◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING VERTICAL LINE BELOW, LATIN SMALL LETTER B
+0061 0329 059A 0316 302A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062; # (a◌̩◌֚◌̖◌〪b; a◌〪◌̩◌̖◌֚b; a◌〪◌̩◌̖◌֚b; a◌〪◌̩◌̖◌֚b; a◌〪◌̩◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING VERTICAL LINE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062; # (a◌֚◌̖◌〪◌̪b; a◌〪◌̖◌̪◌֚b; a◌〪◌̖◌̪◌֚b; a◌〪◌̖◌̪◌֚b; a◌〪◌̖◌̪◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING BRIDGE BELOW, LATIN SMALL LETTER B
+0061 032A 059A 0316 302A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062; # (a◌̪◌֚◌̖◌〪b; a◌〪◌̪◌̖◌֚b; a◌〪◌̪◌̖◌֚b; a◌〪◌̪◌̖◌֚b; a◌〪◌̪◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING BRIDGE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032B 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062; # (a◌֚◌̖◌〪◌̫b; a◌〪◌̖◌̫◌֚b; a◌〪◌̖◌̫◌֚b; a◌〪◌̖◌̫◌֚b; a◌〪◌̖◌̫◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING INVERTED DOUBLE ARCH BELOW, LATIN SMALL LETTER B
+0061 032B 059A 0316 302A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062; # (a◌̫◌֚◌̖◌〪b; a◌〪◌̫◌̖◌֚b; a◌〪◌̫◌̖◌֚b; a◌〪◌̫◌̖◌֚b; a◌〪◌̫◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING INVERTED DOUBLE ARCH BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032C 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062; # (a◌֚◌̖◌〪◌̬b; a◌〪◌̖◌̬◌֚b; a◌〪◌̖◌̬◌֚b; a◌〪◌̖◌̬◌֚b; a◌〪◌̖◌̬◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING CARON BELOW, LATIN SMALL LETTER B
+0061 032C 059A 0316 302A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062; # (a◌̬◌֚◌̖◌〪b; a◌〪◌̬◌̖◌֚b; a◌〪◌̬◌̖◌֚b; a◌〪◌̬◌̖◌֚b; a◌〪◌̬◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING CARON BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032D 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062; # (a◌֚◌̖◌〪◌̭b; a◌〪◌̖◌̭◌֚b; a◌〪◌̖◌̭◌֚b; a◌〪◌̖◌̭◌֚b; a◌〪◌̖◌̭◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING CIRCUMFLEX ACCENT BELOW, LATIN SMALL LETTER B
+0061 032D 059A 0316 302A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062; # (a◌̭◌֚◌̖◌〪b; a◌〪◌̭◌̖◌֚b; a◌〪◌̭◌̖◌֚b; a◌〪◌̭◌̖◌֚b; a◌〪◌̭◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING CIRCUMFLEX ACCENT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032E 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062; # (a◌֚◌̖◌〪◌̮b; a◌〪◌̖◌̮◌֚b; a◌〪◌̖◌̮◌֚b; a◌〪◌̖◌̮◌֚b; a◌〪◌̖◌̮◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING BREVE BELOW, LATIN SMALL LETTER B
+0061 032E 059A 0316 302A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062; # (a◌̮◌֚◌̖◌〪b; a◌〪◌̮◌̖◌֚b; a◌〪◌̮◌̖◌֚b; a◌〪◌̮◌̖◌֚b; a◌〪◌̮◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING BREVE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032F 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062; # (a◌֚◌̖◌〪◌̯b; a◌〪◌̖◌̯◌֚b; a◌〪◌̖◌̯◌֚b; a◌〪◌̖◌̯◌֚b; a◌〪◌̖◌̯◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING INVERTED BREVE BELOW, LATIN SMALL LETTER B
+0061 032F 059A 0316 302A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062; # (a◌̯◌֚◌̖◌〪b; a◌〪◌̯◌̖◌֚b; a◌〪◌̯◌̖◌֚b; a◌〪◌̯◌̖◌֚b; a◌〪◌̯◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING INVERTED BREVE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0330 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062; # (a◌֚◌̖◌〪◌̰b; a◌〪◌̖◌̰◌֚b; a◌〪◌̖◌̰◌֚b; a◌〪◌̖◌̰◌֚b; a◌〪◌̖◌̰◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING TILDE BELOW, LATIN SMALL LETTER B
+0061 0330 059A 0316 302A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062; # (a◌̰◌֚◌̖◌〪b; a◌〪◌̰◌̖◌֚b; a◌〪◌̰◌̖◌֚b; a◌〪◌̰◌̖◌֚b; a◌〪◌̰◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING TILDE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0331 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062; # (a◌֚◌̖◌〪◌̱b; a◌〪◌̖◌̱◌֚b; a◌〪◌̖◌̱◌֚b; a◌〪◌̖◌̱◌֚b; a◌〪◌̖◌̱◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING MACRON BELOW, LATIN SMALL LETTER B
+0061 0331 059A 0316 302A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062; # (a◌̱◌֚◌̖◌〪b; a◌〪◌̱◌̖◌֚b; a◌〪◌̱◌̖◌֚b; a◌〪◌̱◌̖◌֚b; a◌〪◌̱◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING MACRON BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0332 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062; # (a◌֚◌̖◌〪◌̲b; a◌〪◌̖◌̲◌֚b; a◌〪◌̖◌̲◌֚b; a◌〪◌̖◌̲◌֚b; a◌〪◌̖◌̲◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LOW LINE, LATIN SMALL LETTER B
+0061 0332 059A 0316 302A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062; # (a◌̲◌֚◌̖◌〪b; a◌〪◌̲◌̖◌֚b; a◌〪◌̲◌̖◌֚b; a◌〪◌̲◌̖◌֚b; a◌〪◌̲◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LOW LINE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0333 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062; # (a◌֚◌̖◌〪◌̳b; a◌〪◌̖◌̳◌֚b; a◌〪◌̖◌̳◌֚b; a◌〪◌̖◌̳◌֚b; a◌〪◌̖◌̳◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOUBLE LOW LINE, LATIN SMALL LETTER B
+0061 0333 059A 0316 302A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062; # (a◌̳◌֚◌̖◌〪b; a◌〪◌̳◌̖◌֚b; a◌〪◌̳◌̖◌֚b; a◌〪◌̳◌̖◌֚b; a◌〪◌̳◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOUBLE LOW LINE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 093C 0334 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062; # (a◌़◌̴◌̴b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0334 093C 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062; # (a◌̴◌़◌̴b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING TILDE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 0335 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062; # (a◌़◌̴◌̵b; a◌̴◌̵◌़b; a◌̴◌̵◌़b; a◌̴◌̵◌़b; a◌̴◌̵◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING SHORT STROKE OVERLAY, LATIN SMALL LETTER B
+0061 0335 093C 0334 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062; # (a◌̵◌़◌̴b; a◌̵◌̴◌़b; a◌̵◌̴◌़b; a◌̵◌̴◌़b; a◌̵◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING SHORT STROKE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 0336 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062; # (a◌़◌̴◌̶b; a◌̴◌̶◌़b; a◌̴◌̶◌़b; a◌̴◌̶◌़b; a◌̴◌̶◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING LONG STROKE OVERLAY, LATIN SMALL LETTER B
+0061 0336 093C 0334 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062; # (a◌̶◌़◌̴b; a◌̶◌̴◌़b; a◌̶◌̴◌़b; a◌̶◌̴◌़b; a◌̶◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING LONG STROKE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 0337 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062; # (a◌़◌̴◌̷b; a◌̴◌̷◌़b; a◌̴◌̷◌़b; a◌̴◌̷◌़b; a◌̴◌̷◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING SHORT SOLIDUS OVERLAY, LATIN SMALL LETTER B
+0061 0337 093C 0334 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062; # (a◌̷◌़◌̴b; a◌̷◌̴◌़b; a◌̷◌̴◌़b; a◌̷◌̴◌़b; a◌̷◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING SHORT SOLIDUS OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 0338 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062; # (a◌़◌̴◌̸b; a◌̴◌̸◌़b; a◌̴◌̸◌़b; a◌̴◌̸◌़b; a◌̴◌̸◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING LONG SOLIDUS OVERLAY, LATIN SMALL LETTER B
+0061 0338 093C 0334 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062; # (a◌̸◌़◌̴b; a◌̸◌̴◌़b; a◌̸◌̴◌़b; a◌̸◌̴◌़b; a◌̸◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING LONG SOLIDUS OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 059A 0316 302A 0339 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062; # (a◌֚◌̖◌〪◌̹b; a◌〪◌̖◌̹◌֚b; a◌〪◌̖◌̹◌֚b; a◌〪◌̖◌̹◌֚b; a◌〪◌̖◌̹◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT HALF RING BELOW, LATIN SMALL LETTER B
+0061 0339 059A 0316 302A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062; # (a◌̹◌֚◌̖◌〪b; a◌〪◌̹◌̖◌֚b; a◌〪◌̹◌̖◌֚b; a◌〪◌̹◌̖◌֚b; a◌〪◌̹◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT HALF RING BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 033A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062; # (a◌֚◌̖◌〪◌̺b; a◌〪◌̖◌̺◌֚b; a◌〪◌̖◌̺◌֚b; a◌〪◌̖◌̺◌֚b; a◌〪◌̖◌̺◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING INVERTED BRIDGE BELOW, LATIN SMALL LETTER B
+0061 033A 059A 0316 302A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062; # (a◌̺◌֚◌̖◌〪b; a◌〪◌̺◌̖◌֚b; a◌〪◌̺◌̖◌֚b; a◌〪◌̺◌̖◌֚b; a◌〪◌̺◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING INVERTED BRIDGE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 033B 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062; # (a◌֚◌̖◌〪◌̻b; a◌〪◌̖◌̻◌֚b; a◌〪◌̖◌̻◌֚b; a◌〪◌̖◌̻◌֚b; a◌〪◌̖◌̻◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING SQUARE BELOW, LATIN SMALL LETTER B
+0061 033B 059A 0316 302A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062; # (a◌̻◌֚◌̖◌〪b; a◌〪◌̻◌̖◌֚b; a◌〪◌̻◌̖◌֚b; a◌〪◌̻◌̖◌֚b; a◌〪◌̻◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING SQUARE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 033C 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062; # (a◌֚◌̖◌〪◌̼b; a◌〪◌̖◌̼◌֚b; a◌〪◌̖◌̼◌֚b; a◌〪◌̖◌̼◌֚b; a◌〪◌̖◌̼◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING SEAGULL BELOW, LATIN SMALL LETTER B
+0061 033C 059A 0316 302A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062; # (a◌̼◌֚◌̖◌〪b; a◌〪◌̼◌̖◌֚b; a◌〪◌̼◌̖◌֚b; a◌〪◌̼◌̖◌֚b; a◌〪◌̼◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING SEAGULL BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 033D 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062; # (a◌̕◌̀◌֮◌̽b; à◌֮◌̽◌̕b; a◌֮◌̀◌̽◌̕b; à◌֮◌̽◌̕b; a◌֮◌̀◌̽◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING X ABOVE, LATIN SMALL LETTER B
+0061 033D 0315 0300 05AE 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062; # (a◌̽◌̕◌̀◌֮b; a◌֮◌̽◌̀◌̕b; a◌֮◌̽◌̀◌̕b; a◌֮◌̽◌̀◌̕b; a◌֮◌̽◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING X ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 033E 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062; # (a◌̕◌̀◌֮◌̾b; à◌֮◌̾◌̕b; a◌֮◌̀◌̾◌̕b; à◌֮◌̾◌̕b; a◌֮◌̀◌̾◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING VERTICAL TILDE, LATIN SMALL LETTER B
+0061 033E 0315 0300 05AE 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062; # (a◌̾◌̕◌̀◌֮b; a◌֮◌̾◌̀◌̕b; a◌֮◌̾◌̀◌̕b; a◌֮◌̾◌̀◌̕b; a◌֮◌̾◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING VERTICAL TILDE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 033F 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062; # (a◌̕◌̀◌֮◌̿b; à◌֮◌̿◌̕b; a◌֮◌̀◌̿◌̕b; à◌֮◌̿◌̕b; a◌֮◌̀◌̿◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE OVERLINE, LATIN SMALL LETTER B
+0061 033F 0315 0300 05AE 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062; # (a◌̿◌̕◌̀◌֮b; a◌֮◌̿◌̀◌̕b; a◌֮◌̿◌̀◌̕b; a◌֮◌̿◌̀◌̕b; a◌֮◌̿◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE OVERLINE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0340 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062; # (a◌̕◌̀◌֮◌̀b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRAVE TONE MARK, LATIN SMALL LETTER B
+0061 0340 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062; # (a◌̀◌̕◌̀◌֮b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GRAVE TONE MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0341 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062; # (a◌̕◌̀◌֮◌Íb; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ACUTE TONE MARK, LATIN SMALL LETTER B
+0061 0341 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062; # (aâ—ŒÍ◌̕◌̀◌֮b; á◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; á◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ACUTE TONE MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0342 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062; # (a◌̕◌̀◌֮◌͂b; à◌֮◌͂◌̕b; a◌֮◌̀◌͂◌̕b; à◌֮◌͂◌̕b; a◌֮◌̀◌͂◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK PERISPOMENI, LATIN SMALL LETTER B
+0061 0342 0315 0300 05AE 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062; # (a◌͂◌̕◌̀◌֮b; a◌֮◌͂◌̀◌̕b; a◌֮◌͂◌̀◌̕b; a◌֮◌͂◌̀◌̕b; a◌֮◌͂◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GREEK PERISPOMENI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0343 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062; # (a◌̕◌̀◌֮◌̓b; à◌֮◌̓◌̕b; a◌֮◌̀◌̓◌̕b; à◌֮◌̓◌̕b; a◌֮◌̀◌̓◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK KORONIS, LATIN SMALL LETTER B
+0061 0343 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062; # (a◌̓◌̕◌̀◌֮b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GREEK KORONIS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0344 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062; # (a◌̕◌̀◌֮◌̈́b; à◌֮◌̈◌Ì◌̕b; a◌֮◌̀◌̈◌Ì◌̕b; à◌֮◌̈◌Ì◌̕b; a◌֮◌̀◌̈◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK DIALYTIKA TONOS, LATIN SMALL LETTER B
+0061 0344 0315 0300 05AE 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062; # (a◌̈́◌̕◌̀◌֮b; ä◌֮◌Ì◌̀◌̕b; a◌֮◌̈◌Ì◌̀◌̕b; ä◌֮◌Ì◌̀◌̕b; a◌֮◌̈◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GREEK DIALYTIKA TONOS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0345 035D 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062; # (a◌ͅ◌Í◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING GREEK YPOGEGRAMMENI, LATIN SMALL LETTER B
+0061 0345 0345 035D 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062; # (a◌ͅ◌ͅ◌Íb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0346 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062; # (a◌̕◌̀◌֮◌͆b; à◌֮◌͆◌̕b; a◌֮◌̀◌͆◌̕b; à◌֮◌͆◌̕b; a◌֮◌̀◌͆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING BRIDGE ABOVE, LATIN SMALL LETTER B
+0061 0346 0315 0300 05AE 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062; # (a◌͆◌̕◌̀◌֮b; a◌֮◌͆◌̀◌̕b; a◌֮◌͆◌̀◌̕b; a◌֮◌͆◌̀◌̕b; a◌֮◌͆◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING BRIDGE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0347 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062; # (a◌֚◌̖◌〪◌͇b; a◌〪◌̖◌͇◌֚b; a◌〪◌̖◌͇◌֚b; a◌〪◌̖◌͇◌֚b; a◌〪◌̖◌͇◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING EQUALS SIGN BELOW, LATIN SMALL LETTER B
+0061 0347 059A 0316 302A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062; # (a◌͇◌֚◌̖◌〪b; a◌〪◌͇◌̖◌֚b; a◌〪◌͇◌̖◌֚b; a◌〪◌͇◌̖◌֚b; a◌〪◌͇◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING EQUALS SIGN BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0348 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062; # (a◌֚◌̖◌〪◌͈b; a◌〪◌̖◌͈◌֚b; a◌〪◌̖◌͈◌֚b; a◌〪◌̖◌͈◌֚b; a◌〪◌̖◌͈◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOUBLE VERTICAL LINE BELOW, LATIN SMALL LETTER B
+0061 0348 059A 0316 302A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062; # (a◌͈◌֚◌̖◌〪b; a◌〪◌͈◌̖◌֚b; a◌〪◌͈◌̖◌֚b; a◌〪◌͈◌̖◌֚b; a◌〪◌͈◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOUBLE VERTICAL LINE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0349 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062; # (a◌֚◌̖◌〪◌͉b; a◌〪◌̖◌͉◌֚b; a◌〪◌̖◌͉◌֚b; a◌〪◌̖◌͉◌֚b; a◌〪◌̖◌͉◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT ANGLE BELOW, LATIN SMALL LETTER B
+0061 0349 059A 0316 302A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062; # (a◌͉◌֚◌̖◌〪b; a◌〪◌͉◌̖◌֚b; a◌〪◌͉◌̖◌֚b; a◌〪◌͉◌̖◌֚b; a◌〪◌͉◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT ANGLE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 034A 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062; # (a◌̕◌̀◌֮◌͊b; à◌֮◌͊◌̕b; a◌֮◌̀◌͊◌̕b; à◌֮◌͊◌̕b; a◌֮◌̀◌͊◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING NOT TILDE ABOVE, LATIN SMALL LETTER B
+0061 034A 0315 0300 05AE 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062; # (a◌͊◌̕◌̀◌֮b; a◌֮◌͊◌̀◌̕b; a◌֮◌͊◌̀◌̕b; a◌֮◌͊◌̀◌̕b; a◌֮◌͊◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING NOT TILDE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 034B 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062; # (a◌̕◌̀◌֮◌͋b; à◌֮◌͋◌̕b; a◌֮◌̀◌͋◌̕b; à◌֮◌͋◌̕b; a◌֮◌̀◌͋◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING HOMOTHETIC ABOVE, LATIN SMALL LETTER B
+0061 034B 0315 0300 05AE 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062; # (a◌͋◌̕◌̀◌֮b; a◌֮◌͋◌̀◌̕b; a◌֮◌͋◌̀◌̕b; a◌֮◌͋◌̀◌̕b; a◌֮◌͋◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING HOMOTHETIC ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 034C 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062; # (a◌̕◌̀◌֮◌͌b; à◌֮◌͌◌̕b; a◌֮◌̀◌͌◌̕b; à◌֮◌͌◌̕b; a◌֮◌̀◌͌◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ALMOST EQUAL TO ABOVE, LATIN SMALL LETTER B
+0061 034C 0315 0300 05AE 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062; # (a◌͌◌̕◌̀◌֮b; a◌֮◌͌◌̀◌̕b; a◌֮◌͌◌̀◌̕b; a◌֮◌͌◌̀◌̕b; a◌֮◌͌◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ALMOST EQUAL TO ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 034D 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062; # (a◌֚◌̖◌〪◌Íb; a◌〪◌̖◌Í◌֚b; a◌〪◌̖◌Í◌֚b; a◌〪◌̖◌Í◌֚b; a◌〪◌̖◌Í◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT RIGHT ARROW BELOW, LATIN SMALL LETTER B
+0061 034D 059A 0316 302A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062; # (aâ—ŒÍ◌֚◌̖◌〪b; a◌〪◌Í◌̖◌֚b; a◌〪◌Í◌̖◌֚b; a◌〪◌Í◌̖◌֚b; a◌〪◌Í◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT RIGHT ARROW BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 034E 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062; # (a◌֚◌̖◌〪◌͎b; a◌〪◌̖◌͎◌֚b; a◌〪◌̖◌͎◌֚b; a◌〪◌̖◌͎◌֚b; a◌〪◌̖◌͎◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING UPWARDS ARROW BELOW, LATIN SMALL LETTER B
+0061 034E 059A 0316 302A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062; # (a◌͎◌֚◌̖◌〪b; a◌〪◌͎◌̖◌֚b; a◌〪◌͎◌̖◌֚b; a◌〪◌͎◌̖◌֚b; a◌〪◌͎◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING UPWARDS ARROW BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0350 0062;00E0 05AE 0350 0315 0062;0061 05AE 0300 0350 0315 0062;00E0 05AE 0350 0315 0062;0061 05AE 0300 0350 0315 0062; # (a◌̕◌̀◌֮◌Íb; à◌֮◌Í◌̕b; a◌֮◌̀◌Í◌̕b; à◌֮◌Í◌̕b; a◌֮◌̀◌Í◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING RIGHT ARROWHEAD ABOVE, LATIN SMALL LETTER B
+0061 0350 0315 0300 05AE 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062; # (aâ—ŒÍ◌̕◌̀◌֮b; a◌֮◌Í◌̀◌̕b; a◌֮◌Í◌̀◌̕b; a◌֮◌Í◌̀◌̕b; a◌֮◌Í◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROWHEAD ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0351 0062;00E0 05AE 0351 0315 0062;0061 05AE 0300 0351 0315 0062;00E0 05AE 0351 0315 0062;0061 05AE 0300 0351 0315 0062; # (a◌̕◌̀◌֮◌͑b; à◌֮◌͑◌̕b; a◌֮◌̀◌͑◌̕b; à◌֮◌͑◌̕b; a◌֮◌̀◌͑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LEFT HALF RING ABOVE, LATIN SMALL LETTER B
+0061 0351 0315 0300 05AE 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062; # (a◌͑◌̕◌̀◌֮b; a◌֮◌͑◌̀◌̕b; a◌֮◌͑◌̀◌̕b; a◌֮◌͑◌̀◌̕b; a◌֮◌͑◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LEFT HALF RING ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0352 0062;00E0 05AE 0352 0315 0062;0061 05AE 0300 0352 0315 0062;00E0 05AE 0352 0315 0062;0061 05AE 0300 0352 0315 0062; # (a◌̕◌̀◌֮◌͒b; à◌֮◌͒◌̕b; a◌֮◌̀◌͒◌̕b; à◌֮◌͒◌̕b; a◌֮◌̀◌͒◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING FERMATA, LATIN SMALL LETTER B
+0061 0352 0315 0300 05AE 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062; # (a◌͒◌̕◌̀◌֮b; a◌֮◌͒◌̀◌̕b; a◌֮◌͒◌̀◌̕b; a◌֮◌͒◌̀◌̕b; a◌֮◌͒◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING FERMATA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0353 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062; # (a◌֚◌̖◌〪◌͓b; a◌〪◌̖◌͓◌֚b; a◌〪◌̖◌͓◌֚b; a◌〪◌̖◌͓◌֚b; a◌〪◌̖◌͓◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING X BELOW, LATIN SMALL LETTER B
+0061 0353 059A 0316 302A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062; # (a◌͓◌֚◌̖◌〪b; a◌〪◌͓◌̖◌֚b; a◌〪◌͓◌̖◌֚b; a◌〪◌͓◌̖◌֚b; a◌〪◌͓◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING X BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0354 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062; # (a◌֚◌̖◌〪◌͔b; a◌〪◌̖◌͔◌֚b; a◌〪◌̖◌͔◌֚b; a◌〪◌̖◌͔◌֚b; a◌〪◌̖◌͔◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT ARROWHEAD BELOW, LATIN SMALL LETTER B
+0061 0354 059A 0316 302A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062; # (a◌͔◌֚◌̖◌〪b; a◌〪◌͔◌̖◌֚b; a◌〪◌͔◌̖◌֚b; a◌〪◌͔◌̖◌֚b; a◌〪◌͔◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT ARROWHEAD BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0355 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062; # (a◌֚◌̖◌〪◌͕b; a◌〪◌̖◌͕◌֚b; a◌〪◌̖◌͕◌֚b; a◌〪◌̖◌͕◌֚b; a◌〪◌̖◌͕◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT ARROWHEAD BELOW, LATIN SMALL LETTER B
+0061 0355 059A 0316 302A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062; # (a◌͕◌֚◌̖◌〪b; a◌〪◌͕◌̖◌֚b; a◌〪◌͕◌̖◌֚b; a◌〪◌͕◌̖◌֚b; a◌〪◌͕◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROWHEAD BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0356 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062; # (a◌֚◌̖◌〪◌͖b; a◌〪◌̖◌͖◌֚b; a◌〪◌̖◌͖◌֚b; a◌〪◌̖◌͖◌֚b; a◌〪◌̖◌͖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW, LATIN SMALL LETTER B
+0061 0356 059A 0316 302A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062; # (a◌͖◌֚◌̖◌〪b; a◌〪◌͖◌̖◌֚b; a◌〪◌͖◌̖◌֚b; a◌〪◌͖◌̖◌֚b; a◌〪◌͖◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0357 0062;00E0 05AE 0357 0315 0062;0061 05AE 0300 0357 0315 0062;00E0 05AE 0357 0315 0062;0061 05AE 0300 0357 0315 0062; # (a◌̕◌̀◌֮◌͗b; à◌֮◌͗◌̕b; a◌֮◌̀◌͗◌̕b; à◌֮◌͗◌̕b; a◌֮◌̀◌͗◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING RIGHT HALF RING ABOVE, LATIN SMALL LETTER B
+0061 0357 0315 0300 05AE 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062; # (a◌͗◌̕◌̀◌֮b; a◌֮◌͗◌̀◌̕b; a◌֮◌͗◌̀◌̕b; a◌֮◌͗◌̀◌̕b; a◌֮◌͗◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING RIGHT HALF RING ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 035C 0315 0300 0358 0062;00E0 0315 0358 035C 0062;0061 0300 0315 0358 035C 0062;00E0 0315 0358 035C 0062;0061 0300 0315 0358 035C 0062; # (a◌͜◌̕◌̀◌͘b; à◌̕◌͘◌͜b; a◌̀◌̕◌͘◌͜b; à◌̕◌͘◌͜b; a◌̀◌̕◌͘◌͜b; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, COMBINING DOT ABOVE RIGHT, LATIN SMALL LETTER B
+0061 0358 035C 0315 0300 0062;00E0 0358 0315 035C 0062;0061 0300 0358 0315 035C 0062;00E0 0358 0315 035C 0062;0061 0300 0358 0315 035C 0062; # (a◌͘◌͜◌̕◌̀b; à◌͘◌̕◌͜b; a◌̀◌͘◌̕◌͜b; à◌͘◌̕◌͜b; a◌̀◌͘◌̕◌͜b; ) LATIN SMALL LETTER A, COMBINING DOT ABOVE RIGHT, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
+0061 059A 0316 302A 0359 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062; # (a◌֚◌̖◌〪◌͙b; a◌〪◌̖◌͙◌֚b; a◌〪◌̖◌͙◌֚b; a◌〪◌̖◌͙◌֚b; a◌〪◌̖◌͙◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING ASTERISK BELOW, LATIN SMALL LETTER B
+0061 0359 059A 0316 302A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062; # (a◌͙◌֚◌̖◌〪b; a◌〪◌͙◌̖◌֚b; a◌〪◌͙◌̖◌֚b; a◌〪◌͙◌̖◌֚b; a◌〪◌͙◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING ASTERISK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 035A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062; # (a◌֚◌̖◌〪◌͚b; a◌〪◌̖◌͚◌֚b; a◌〪◌̖◌͚◌֚b; a◌〪◌̖◌͚◌֚b; a◌〪◌̖◌͚◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOUBLE RING BELOW, LATIN SMALL LETTER B
+0061 035A 059A 0316 302A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062; # (a◌͚◌֚◌̖◌〪b; a◌〪◌͚◌̖◌֚b; a◌〪◌͚◌̖◌֚b; a◌〪◌͚◌̖◌֚b; a◌〪◌͚◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOUBLE RING BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 035B 0062;00E0 05AE 035B 0315 0062;0061 05AE 0300 035B 0315 0062;00E0 05AE 035B 0315 0062;0061 05AE 0300 035B 0315 0062; # (a◌̕◌̀◌֮◌͛b; à◌֮◌͛◌̕b; a◌֮◌̀◌͛◌̕b; à◌֮◌͛◌̕b; a◌֮◌̀◌͛◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ZIGZAG ABOVE, LATIN SMALL LETTER B
+0061 035B 0315 0300 05AE 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062; # (a◌͛◌̕◌̀◌֮b; a◌֮◌͛◌̀◌̕b; a◌֮◌͛◌̀◌̕b; a◌֮◌͛◌̀◌̕b; a◌֮◌͛◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ZIGZAG ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 035D 035C 0315 035C 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062; # (aâ—ŒÍ◌͜◌̕◌͜b; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 035C 035D 035C 0315 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062; # (a◌͜◌Í◌͜◌̕b; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, LATIN SMALL LETTER B
+0061 0345 035D 035C 035D 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062; # (a◌ͅ◌Í◌͜◌Íb; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE BREVE, LATIN SMALL LETTER B
+0061 035D 0345 035D 035C 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062; # (aâ—ŒÍ◌ͅ◌Í◌͜b; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 0345 035D 035C 035E 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062; # (a◌ͅ◌Í◌͜◌͞b; a◌͜◌Í◌͞◌ͅb; a◌͜◌Í◌͞◌ͅb; a◌͜◌Í◌͞◌ͅb; a◌͜◌Í◌͞◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE MACRON, LATIN SMALL LETTER B
+0061 035E 0345 035D 035C 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062; # (a◌͞◌ͅ◌Í◌͜b; a◌͜◌͞◌Í◌ͅb; a◌͜◌͞◌Í◌ͅb; a◌͜◌͞◌Í◌ͅb; a◌͜◌͞◌Í◌ͅb; ) LATIN SMALL LETTER A, COMBINING DOUBLE MACRON, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 035D 035C 0315 035F 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062; # (aâ—ŒÍ◌͜◌̕◌͟b; a◌̕◌͜◌͟◌Íb; a◌̕◌͜◌͟◌Íb; a◌̕◌͜◌͟◌Íb; a◌̕◌͜◌͟◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING DOUBLE MACRON BELOW, LATIN SMALL LETTER B
+0061 035F 035D 035C 0315 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062; # (a◌͟◌Í◌͜◌̕b; a◌̕◌͟◌͜◌Íb; a◌̕◌͟◌͜◌Íb; a◌̕◌͟◌͜◌Íb; a◌̕◌͟◌͜◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE MACRON BELOW, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, LATIN SMALL LETTER B
+0061 0345 035D 035C 0360 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062; # (a◌ͅ◌Í◌͜◌͠b; a◌͜◌Í◌͠◌ͅb; a◌͜◌Í◌͠◌ͅb; a◌͜◌Í◌͠◌ͅb; a◌͜◌Í◌͠◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE TILDE, LATIN SMALL LETTER B
+0061 0360 0345 035D 035C 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062; # (a◌͠◌ͅ◌Í◌͜b; a◌͜◌͠◌Í◌ͅb; a◌͜◌͠◌Í◌ͅb; a◌͜◌͠◌Í◌ͅb; a◌͜◌͠◌Í◌ͅb; ) LATIN SMALL LETTER A, COMBINING DOUBLE TILDE, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 0345 035D 035C 0361 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062; # (a◌ͅ◌Í◌͜◌͡b; a◌͜◌Í◌͡◌ͅb; a◌͜◌Í◌͡◌ͅb; a◌͜◌Í◌͡◌ͅb; a◌͜◌Í◌͡◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE INVERTED BREVE, LATIN SMALL LETTER B
+0061 0361 0345 035D 035C 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062; # (a◌͡◌ͅ◌Í◌͜b; a◌͜◌͡◌Í◌ͅb; a◌͜◌͡◌Í◌ͅb; a◌͜◌͡◌Í◌ͅb; a◌͜◌͡◌Í◌ͅb; ) LATIN SMALL LETTER A, COMBINING DOUBLE INVERTED BREVE, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 035D 035C 0315 0362 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062; # (aâ—ŒÍ◌͜◌̕◌͢b; a◌̕◌͜◌͢◌Íb; a◌̕◌͜◌͢◌Íb; a◌̕◌͜◌͢◌Íb; a◌̕◌͜◌͢◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING DOUBLE RIGHTWARDS ARROW BELOW, LATIN SMALL LETTER B
+0061 0362 035D 035C 0315 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062; # (a◌͢◌Í◌͜◌̕b; a◌̕◌͢◌͜◌Íb; a◌̕◌͢◌͜◌Íb; a◌̕◌͢◌͜◌Íb; a◌̕◌͢◌͜◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE RIGHTWARDS ARROW BELOW, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0363 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062; # (a◌̕◌̀◌֮◌ͣb; à◌֮◌ͣ◌̕b; a◌֮◌̀◌ͣ◌̕b; à◌֮◌ͣ◌̕b; a◌֮◌̀◌ͣ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER A, LATIN SMALL LETTER B
+0061 0363 0315 0300 05AE 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062; # (a◌ͣ◌̕◌̀◌֮b; a◌֮◌ͣ◌̀◌̕b; a◌֮◌ͣ◌̀◌̕b; a◌֮◌ͣ◌̀◌̕b; a◌֮◌ͣ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0364 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062; # (a◌̕◌̀◌֮◌ͤb; à◌֮◌ͤ◌̕b; a◌֮◌̀◌ͤ◌̕b; à◌֮◌ͤ◌̕b; a◌֮◌̀◌ͤ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER E, LATIN SMALL LETTER B
+0061 0364 0315 0300 05AE 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062; # (a◌ͤ◌̕◌̀◌֮b; a◌֮◌ͤ◌̀◌̕b; a◌֮◌ͤ◌̀◌̕b; a◌֮◌ͤ◌̀◌̕b; a◌֮◌ͤ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER E, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0365 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062; # (a◌̕◌̀◌֮◌ͥb; à◌֮◌ͥ◌̕b; a◌֮◌̀◌ͥ◌̕b; à◌֮◌ͥ◌̕b; a◌֮◌̀◌ͥ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER I, LATIN SMALL LETTER B
+0061 0365 0315 0300 05AE 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062; # (a◌ͥ◌̕◌̀◌֮b; a◌֮◌ͥ◌̀◌̕b; a◌֮◌ͥ◌̀◌̕b; a◌֮◌ͥ◌̀◌̕b; a◌֮◌ͥ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER I, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0366 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062; # (a◌̕◌̀◌֮◌ͦb; à◌֮◌ͦ◌̕b; a◌֮◌̀◌ͦ◌̕b; à◌֮◌ͦ◌̕b; a◌֮◌̀◌ͦ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER O, LATIN SMALL LETTER B
+0061 0366 0315 0300 05AE 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062; # (a◌ͦ◌̕◌̀◌֮b; a◌֮◌ͦ◌̀◌̕b; a◌֮◌ͦ◌̀◌̕b; a◌֮◌ͦ◌̀◌̕b; a◌֮◌ͦ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER O, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0367 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062; # (a◌̕◌̀◌֮◌ͧb; à◌֮◌ͧ◌̕b; a◌֮◌̀◌ͧ◌̕b; à◌֮◌ͧ◌̕b; a◌֮◌̀◌ͧ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER U, LATIN SMALL LETTER B
+0061 0367 0315 0300 05AE 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062; # (a◌ͧ◌̕◌̀◌֮b; a◌֮◌ͧ◌̀◌̕b; a◌֮◌ͧ◌̀◌̕b; a◌֮◌ͧ◌̀◌̕b; a◌֮◌ͧ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER U, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0368 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062; # (a◌̕◌̀◌֮◌ͨb; à◌֮◌ͨ◌̕b; a◌֮◌̀◌ͨ◌̕b; à◌֮◌ͨ◌̕b; a◌֮◌̀◌ͨ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER C, LATIN SMALL LETTER B
+0061 0368 0315 0300 05AE 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062; # (a◌ͨ◌̕◌̀◌֮b; a◌֮◌ͨ◌̀◌̕b; a◌֮◌ͨ◌̀◌̕b; a◌֮◌ͨ◌̀◌̕b; a◌֮◌ͨ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER C, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0369 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062; # (a◌̕◌̀◌֮◌ͩb; à◌֮◌ͩ◌̕b; a◌֮◌̀◌ͩ◌̕b; à◌֮◌ͩ◌̕b; a◌֮◌̀◌ͩ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER D, LATIN SMALL LETTER B
+0061 0369 0315 0300 05AE 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062; # (a◌ͩ◌̕◌̀◌֮b; a◌֮◌ͩ◌̀◌̕b; a◌֮◌ͩ◌̀◌̕b; a◌֮◌ͩ◌̀◌̕b; a◌֮◌ͩ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER D, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036A 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062; # (a◌̕◌̀◌֮◌ͪb; à◌֮◌ͪ◌̕b; a◌֮◌̀◌ͪ◌̕b; à◌֮◌ͪ◌̕b; a◌֮◌̀◌ͪ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER H, LATIN SMALL LETTER B
+0061 036A 0315 0300 05AE 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062; # (a◌ͪ◌̕◌̀◌֮b; a◌֮◌ͪ◌̀◌̕b; a◌֮◌ͪ◌̀◌̕b; a◌֮◌ͪ◌̀◌̕b; a◌֮◌ͪ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER H, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036B 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062; # (a◌̕◌̀◌֮◌ͫb; à◌֮◌ͫ◌̕b; a◌֮◌̀◌ͫ◌̕b; à◌֮◌ͫ◌̕b; a◌֮◌̀◌ͫ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER M, LATIN SMALL LETTER B
+0061 036B 0315 0300 05AE 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062; # (a◌ͫ◌̕◌̀◌֮b; a◌֮◌ͫ◌̀◌̕b; a◌֮◌ͫ◌̀◌̕b; a◌֮◌ͫ◌̀◌̕b; a◌֮◌ͫ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER M, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036C 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062; # (a◌̕◌̀◌֮◌ͬb; à◌֮◌ͬ◌̕b; a◌֮◌̀◌ͬ◌̕b; à◌֮◌ͬ◌̕b; a◌֮◌̀◌ͬ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER R, LATIN SMALL LETTER B
+0061 036C 0315 0300 05AE 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062; # (a◌ͬ◌̕◌̀◌֮b; a◌֮◌ͬ◌̀◌̕b; a◌֮◌ͬ◌̀◌̕b; a◌֮◌ͬ◌̀◌̕b; a◌֮◌ͬ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER R, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036D 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062; # (a◌̕◌̀◌֮◌ͭb; à◌֮◌ͭ◌̕b; a◌֮◌̀◌ͭ◌̕b; à◌֮◌ͭ◌̕b; a◌֮◌̀◌ͭ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER T, LATIN SMALL LETTER B
+0061 036D 0315 0300 05AE 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062; # (a◌ͭ◌̕◌̀◌֮b; a◌֮◌ͭ◌̀◌̕b; a◌֮◌ͭ◌̀◌̕b; a◌֮◌ͭ◌̀◌̕b; a◌֮◌ͭ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER T, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036E 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062; # (a◌̕◌̀◌֮◌ͮb; à◌֮◌ͮ◌̕b; a◌֮◌̀◌ͮ◌̕b; à◌֮◌ͮ◌̕b; a◌֮◌̀◌ͮ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER V, LATIN SMALL LETTER B
+0061 036E 0315 0300 05AE 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062; # (a◌ͮ◌̕◌̀◌֮b; a◌֮◌ͮ◌̀◌̕b; a◌֮◌ͮ◌̀◌̕b; a◌֮◌ͮ◌̀◌̕b; a◌֮◌ͮ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER V, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036F 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062; # (a◌̕◌̀◌֮◌ͯb; à◌֮◌ͯ◌̕b; a◌֮◌̀◌ͯ◌̕b; à◌֮◌ͯ◌̕b; a◌֮◌̀◌ͯ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER X, LATIN SMALL LETTER B
+0061 036F 0315 0300 05AE 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062; # (a◌ͯ◌̕◌̀◌֮b; a◌֮◌ͯ◌̀◌̕b; a◌֮◌ͯ◌̀◌̕b; a◌֮◌ͯ◌̀◌̕b; a◌֮◌ͯ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER X, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0483 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062; # (a◌̕◌̀◌֮◌҃b; à◌֮◌҃◌̕b; a◌֮◌̀◌҃◌̕b; à◌֮◌҃◌̕b; a◌֮◌̀◌҃◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC TITLO, LATIN SMALL LETTER B
+0061 0483 0315 0300 05AE 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062; # (a◌҃◌̕◌̀◌֮b; a◌֮◌҃◌̀◌̕b; a◌֮◌҃◌̀◌̕b; a◌֮◌҃◌̀◌̕b; a◌֮◌҃◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC TITLO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0484 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062; # (a◌̕◌̀◌֮◌҄b; à◌֮◌҄◌̕b; a◌֮◌̀◌҄◌̕b; à◌֮◌҄◌̕b; a◌֮◌̀◌҄◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC PALATALIZATION, LATIN SMALL LETTER B
+0061 0484 0315 0300 05AE 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062; # (a◌҄◌̕◌̀◌֮b; a◌֮◌҄◌̀◌̕b; a◌֮◌҄◌̀◌̕b; a◌֮◌҄◌̀◌̕b; a◌֮◌҄◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC PALATALIZATION, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0485 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062; # (a◌̕◌̀◌֮◌҅b; à◌֮◌҅◌̕b; a◌֮◌̀◌҅◌̕b; à◌֮◌҅◌̕b; a◌֮◌̀◌҅◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC DASIA PNEUMATA, LATIN SMALL LETTER B
+0061 0485 0315 0300 05AE 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062; # (a◌҅◌̕◌̀◌֮b; a◌֮◌҅◌̀◌̕b; a◌֮◌҅◌̀◌̕b; a◌֮◌҅◌̀◌̕b; a◌֮◌҅◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC DASIA PNEUMATA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0486 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062; # (a◌̕◌̀◌֮◌҆b; à◌֮◌҆◌̕b; a◌֮◌̀◌҆◌̕b; à◌֮◌҆◌̕b; a◌֮◌̀◌҆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC PSILI PNEUMATA, LATIN SMALL LETTER B
+0061 0486 0315 0300 05AE 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062; # (a◌҆◌̕◌̀◌֮b; a◌֮◌҆◌̀◌̕b; a◌֮◌҆◌̀◌̕b; a◌֮◌҆◌̀◌̕b; a◌֮◌҆◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC PSILI PNEUMATA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0487 0062;00E0 05AE 0487 0315 0062;0061 05AE 0300 0487 0315 0062;00E0 05AE 0487 0315 0062;0061 05AE 0300 0487 0315 0062; # (a◌̕◌̀◌֮◌҇b; à◌֮◌҇◌̕b; a◌֮◌̀◌҇◌̕b; à◌֮◌҇◌̕b; a◌֮◌̀◌҇◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC POKRYTIE, LATIN SMALL LETTER B
+0061 0487 0315 0300 05AE 0062;0061 05AE 0487 0300 0315 0062;0061 05AE 0487 0300 0315 0062;0061 05AE 0487 0300 0315 0062;0061 05AE 0487 0300 0315 0062; # (a◌҇◌̕◌̀◌֮b; a◌֮◌҇◌̀◌̕b; a◌֮◌҇◌̀◌̕b; a◌֮◌҇◌̀◌̕b; a◌֮◌҇◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC POKRYTIE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0591 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062; # (a◌֚◌̖◌〪◌֑b; a◌〪◌̖◌֑◌֚b; a◌〪◌̖◌֑◌֚b; a◌〪◌̖◌֑◌֚b; a◌〪◌̖◌֑◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT ETNAHTA, LATIN SMALL LETTER B
+0061 0591 059A 0316 302A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062; # (a◌֑◌֚◌̖◌〪b; a◌〪◌֑◌̖◌֚b; a◌〪◌֑◌̖◌֚b; a◌〪◌֑◌̖◌֚b; a◌〪◌֑◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT ETNAHTA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0592 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062; # (a◌̕◌̀◌֮◌֒b; à◌֮◌֒◌̕b; a◌֮◌̀◌֒◌̕b; à◌֮◌֒◌̕b; a◌֮◌̀◌֒◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT SEGOL, LATIN SMALL LETTER B
+0061 0592 0315 0300 05AE 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062; # (a◌֒◌̕◌̀◌֮b; a◌֮◌֒◌̀◌̕b; a◌֮◌֒◌̀◌̕b; a◌֮◌֒◌̀◌̕b; a◌֮◌֒◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT SEGOL, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0593 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062; # (a◌̕◌̀◌֮◌֓b; à◌֮◌֓◌̕b; a◌֮◌̀◌֓◌̕b; à◌֮◌֓◌̕b; a◌֮◌̀◌֓◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT SHALSHELET, LATIN SMALL LETTER B
+0061 0593 0315 0300 05AE 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062; # (a◌֓◌̕◌̀◌֮b; a◌֮◌֓◌̀◌̕b; a◌֮◌֓◌̀◌̕b; a◌֮◌֓◌̀◌̕b; a◌֮◌֓◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT SHALSHELET, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0594 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062; # (a◌̕◌̀◌֮◌֔b; à◌֮◌֔◌̕b; a◌֮◌̀◌֔◌̕b; à◌֮◌֔◌̕b; a◌֮◌̀◌֔◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT ZAQEF QATAN, LATIN SMALL LETTER B
+0061 0594 0315 0300 05AE 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062; # (a◌֔◌̕◌̀◌֮b; a◌֮◌֔◌̀◌̕b; a◌֮◌֔◌̀◌̕b; a◌֮◌֔◌̀◌̕b; a◌֮◌֔◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT ZAQEF QATAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0595 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062; # (a◌̕◌̀◌֮◌֕b; à◌֮◌֕◌̕b; a◌֮◌̀◌֕◌̕b; à◌֮◌֕◌̕b; a◌֮◌̀◌֕◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT ZAQEF GADOL, LATIN SMALL LETTER B
+0061 0595 0315 0300 05AE 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062; # (a◌֕◌̕◌̀◌֮b; a◌֮◌֕◌̀◌̕b; a◌֮◌֕◌̀◌̕b; a◌֮◌֕◌̀◌̕b; a◌֮◌֕◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT ZAQEF GADOL, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0596 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062; # (a◌֚◌̖◌〪◌֖b; a◌〪◌̖◌֖◌֚b; a◌〪◌̖◌֖◌֚b; a◌〪◌̖◌֖◌֚b; a◌〪◌̖◌֖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT TIPEHA, LATIN SMALL LETTER B
+0061 0596 059A 0316 302A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062; # (a◌֖◌֚◌̖◌〪b; a◌〪◌֖◌̖◌֚b; a◌〪◌֖◌̖◌֚b; a◌〪◌֖◌̖◌֚b; a◌〪◌֖◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT TIPEHA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0597 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062; # (a◌̕◌̀◌֮◌֗b; à◌֮◌֗◌̕b; a◌֮◌̀◌֗◌̕b; à◌֮◌֗◌̕b; a◌֮◌̀◌֗◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT REVIA, LATIN SMALL LETTER B
+0061 0597 0315 0300 05AE 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062; # (a◌֗◌̕◌̀◌֮b; a◌֮◌֗◌̀◌̕b; a◌֮◌֗◌̀◌̕b; a◌֮◌֗◌̀◌̕b; a◌֮◌֗◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT REVIA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0598 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062; # (a◌̕◌̀◌֮◌֘b; à◌֮◌֘◌̕b; a◌֮◌̀◌֘◌̕b; à◌֮◌֘◌̕b; a◌֮◌̀◌֘◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT ZARQA, LATIN SMALL LETTER B
+0061 0598 0315 0300 05AE 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062; # (a◌֘◌̕◌̀◌֮b; a◌֮◌֘◌̀◌̕b; a◌֮◌֘◌̀◌̕b; a◌֮◌֘◌̀◌̕b; a◌֮◌֘◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT ZARQA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0599 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062; # (a◌̕◌̀◌֮◌֙b; à◌֮◌֙◌̕b; a◌֮◌̀◌֙◌̕b; à◌֮◌֙◌̕b; a◌֮◌̀◌֙◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT PASHTA, LATIN SMALL LETTER B
+0061 0599 0315 0300 05AE 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062; # (a◌֙◌̕◌̀◌֮b; a◌֮◌֙◌̀◌̕b; a◌֮◌֙◌̀◌̕b; a◌֮◌֙◌̀◌̕b; a◌֮◌֙◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT PASHTA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 302E 059A 0316 059A 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062; # (a〮◌֚◌̖◌֚b; a◌̖◌֚◌֚〮b; a◌̖◌֚◌֚〮b; a◌̖◌֚◌֚〮b; a◌̖◌֚◌֚〮b; ) LATIN SMALL LETTER A, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, HEBREW ACCENT YETIV, LATIN SMALL LETTER B
+0061 059A 302E 059A 0316 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062; # (a◌֚〮◌֚◌̖b; a◌̖◌֚◌֚〮b; a◌̖◌֚◌֚〮b; a◌̖◌֚◌֚〮b; a◌̖◌֚◌֚〮b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, LATIN SMALL LETTER B
+0061 059A 0316 302A 059B 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062; # (a◌֚◌̖◌〪◌֛b; a◌〪◌̖◌֛◌֚b; a◌〪◌̖◌֛◌֚b; a◌〪◌̖◌֛◌֚b; a◌〪◌̖◌֛◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT TEVIR, LATIN SMALL LETTER B
+0061 059B 059A 0316 302A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062; # (a◌֛◌֚◌̖◌〪b; a◌〪◌֛◌̖◌֚b; a◌〪◌֛◌̖◌֚b; a◌〪◌֛◌̖◌֚b; a◌〪◌֛◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT TEVIR, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 059C 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062; # (a◌̕◌̀◌֮◌֜b; à◌֮◌֜◌̕b; a◌֮◌̀◌֜◌̕b; à◌֮◌֜◌̕b; a◌֮◌̀◌֜◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT GERESH, LATIN SMALL LETTER B
+0061 059C 0315 0300 05AE 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062; # (a◌֜◌̕◌̀◌֮b; a◌֮◌֜◌̀◌̕b; a◌֮◌֜◌̀◌̕b; a◌֮◌֜◌̀◌̕b; a◌֮◌֜◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT GERESH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 059D 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062; # (a◌̕◌̀◌֮◌Öb; à◌֮◌Ö◌̕b; a◌֮◌̀◌Ö◌̕b; à◌֮◌Ö◌̕b; a◌֮◌̀◌Ö◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT GERESH MUQDAM, LATIN SMALL LETTER B
+0061 059D 0315 0300 05AE 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062; # (aâ—ŒÖ◌̕◌̀◌֮b; a◌֮◌Ö◌̀◌̕b; a◌֮◌Ö◌̀◌̕b; a◌֮◌Ö◌̀◌̕b; a◌֮◌Ö◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT GERESH MUQDAM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 059E 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062; # (a◌̕◌̀◌֮◌֞b; à◌֮◌֞◌̕b; a◌֮◌̀◌֞◌̕b; à◌֮◌֞◌̕b; a◌֮◌̀◌֞◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT GERSHAYIM, LATIN SMALL LETTER B
+0061 059E 0315 0300 05AE 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062; # (a◌֞◌̕◌̀◌֮b; a◌֮◌֞◌̀◌̕b; a◌֮◌֞◌̀◌̕b; a◌֮◌֞◌̀◌̕b; a◌֮◌֞◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT GERSHAYIM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 059F 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062; # (a◌̕◌̀◌֮◌֟b; à◌֮◌֟◌̕b; a◌֮◌̀◌֟◌̕b; à◌֮◌֟◌̕b; a◌֮◌̀◌֟◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT QARNEY PARA, LATIN SMALL LETTER B
+0061 059F 0315 0300 05AE 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062; # (a◌֟◌̕◌̀◌֮b; a◌֮◌֟◌̀◌̕b; a◌֮◌֟◌̀◌̕b; a◌֮◌֟◌̀◌̕b; a◌֮◌֟◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT QARNEY PARA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05A0 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062; # (a◌̕◌̀◌֮◌֠b; à◌֮◌֠◌̕b; a◌֮◌̀◌֠◌̕b; à◌֮◌֠◌̕b; a◌֮◌̀◌֠◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT TELISHA GEDOLA, LATIN SMALL LETTER B
+0061 05A0 0315 0300 05AE 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062; # (a◌֠◌̕◌̀◌֮b; a◌֮◌֠◌̀◌̕b; a◌֮◌֠◌̀◌̕b; a◌֮◌֠◌̀◌̕b; a◌֮◌֠◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT TELISHA GEDOLA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05A1 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062; # (a◌̕◌̀◌֮◌֡b; à◌֮◌֡◌̕b; a◌֮◌̀◌֡◌̕b; à◌֮◌֡◌̕b; a◌֮◌̀◌֡◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT PAZER, LATIN SMALL LETTER B
+0061 05A1 0315 0300 05AE 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062; # (a◌֡◌̕◌̀◌֮b; a◌֮◌֡◌̀◌̕b; a◌֮◌֡◌̀◌̕b; a◌֮◌֡◌̀◌̕b; a◌֮◌֡◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT PAZER, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A2 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062; # (a◌֚◌̖◌〪◌֢b; a◌〪◌̖◌֢◌֚b; a◌〪◌̖◌֢◌֚b; a◌〪◌̖◌֢◌֚b; a◌〪◌̖◌֢◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT ATNAH HAFUKH, LATIN SMALL LETTER B
+0061 05A2 059A 0316 302A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062; # (a◌֢◌֚◌̖◌〪b; a◌〪◌֢◌̖◌֚b; a◌〪◌֢◌̖◌֚b; a◌〪◌֢◌̖◌֚b; a◌〪◌֢◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT ATNAH HAFUKH, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A3 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062; # (a◌֚◌̖◌〪◌֣b; a◌〪◌̖◌֣◌֚b; a◌〪◌̖◌֣◌֚b; a◌〪◌̖◌֣◌֚b; a◌〪◌̖◌֣◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT MUNAH, LATIN SMALL LETTER B
+0061 05A3 059A 0316 302A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062; # (a◌֣◌֚◌̖◌〪b; a◌〪◌֣◌̖◌֚b; a◌〪◌֣◌̖◌֚b; a◌〪◌֣◌̖◌֚b; a◌〪◌֣◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT MUNAH, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A4 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062; # (a◌֚◌̖◌〪◌֤b; a◌〪◌̖◌֤◌֚b; a◌〪◌̖◌֤◌֚b; a◌〪◌̖◌֤◌֚b; a◌〪◌̖◌֤◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT MAHAPAKH, LATIN SMALL LETTER B
+0061 05A4 059A 0316 302A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062; # (a◌֤◌֚◌̖◌〪b; a◌〪◌֤◌̖◌֚b; a◌〪◌֤◌̖◌֚b; a◌〪◌֤◌̖◌֚b; a◌〪◌֤◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT MAHAPAKH, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A5 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062; # (a◌֚◌̖◌〪◌֥b; a◌〪◌̖◌֥◌֚b; a◌〪◌̖◌֥◌֚b; a◌〪◌̖◌֥◌֚b; a◌〪◌̖◌֥◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT MERKHA, LATIN SMALL LETTER B
+0061 05A5 059A 0316 302A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062; # (a◌֥◌֚◌̖◌〪b; a◌〪◌֥◌̖◌֚b; a◌〪◌֥◌̖◌֚b; a◌〪◌֥◌̖◌֚b; a◌〪◌֥◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT MERKHA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A6 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062; # (a◌֚◌̖◌〪◌֦b; a◌〪◌̖◌֦◌֚b; a◌〪◌̖◌֦◌֚b; a◌〪◌̖◌֦◌֚b; a◌〪◌̖◌֦◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT MERKHA KEFULA, LATIN SMALL LETTER B
+0061 05A6 059A 0316 302A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062; # (a◌֦◌֚◌̖◌〪b; a◌〪◌֦◌̖◌֚b; a◌〪◌֦◌̖◌֚b; a◌〪◌֦◌̖◌֚b; a◌〪◌֦◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT MERKHA KEFULA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A7 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062; # (a◌֚◌̖◌〪◌֧b; a◌〪◌̖◌֧◌֚b; a◌〪◌̖◌֧◌֚b; a◌〪◌̖◌֧◌֚b; a◌〪◌̖◌֧◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT DARGA, LATIN SMALL LETTER B
+0061 05A7 059A 0316 302A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062; # (a◌֧◌֚◌̖◌〪b; a◌〪◌֧◌̖◌֚b; a◌〪◌֧◌̖◌֚b; a◌〪◌֧◌̖◌֚b; a◌〪◌֧◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT DARGA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05A8 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062; # (a◌̕◌̀◌֮◌֨b; à◌֮◌֨◌̕b; a◌֮◌̀◌֨◌̕b; à◌֮◌֨◌̕b; a◌֮◌̀◌֨◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT QADMA, LATIN SMALL LETTER B
+0061 05A8 0315 0300 05AE 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062; # (a◌֨◌̕◌̀◌֮b; a◌֮◌֨◌̀◌̕b; a◌֮◌֨◌̀◌̕b; a◌֮◌֨◌̀◌̕b; a◌֮◌֨◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT QADMA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05A9 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062; # (a◌̕◌̀◌֮◌֩b; à◌֮◌֩◌̕b; a◌֮◌̀◌֩◌̕b; à◌֮◌֩◌̕b; a◌֮◌̀◌֩◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT TELISHA QETANA, LATIN SMALL LETTER B
+0061 05A9 0315 0300 05AE 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062; # (a◌֩◌̕◌̀◌֮b; a◌֮◌֩◌̀◌̕b; a◌֮◌֩◌̀◌̕b; a◌֮◌֩◌̀◌̕b; a◌֮◌֩◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT TELISHA QETANA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 05AA 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062; # (a◌֚◌̖◌〪◌֪b; a◌〪◌̖◌֪◌֚b; a◌〪◌̖◌֪◌֚b; a◌〪◌̖◌֪◌֚b; a◌〪◌̖◌֪◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT YERAH BEN YOMO, LATIN SMALL LETTER B
+0061 05AA 059A 0316 302A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062; # (a◌֪◌֚◌̖◌〪b; a◌〪◌֪◌̖◌֚b; a◌〪◌֪◌̖◌֚b; a◌〪◌֪◌̖◌֚b; a◌〪◌֪◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YERAH BEN YOMO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05AB 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062; # (a◌̕◌̀◌֮◌֫b; à◌֮◌֫◌̕b; a◌֮◌̀◌֫◌̕b; à◌֮◌֫◌̕b; a◌֮◌̀◌֫◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT OLE, LATIN SMALL LETTER B
+0061 05AB 0315 0300 05AE 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062; # (a◌֫◌̕◌̀◌֮b; a◌֮◌֫◌̀◌̕b; a◌֮◌֫◌̀◌̕b; a◌֮◌֫◌̀◌̕b; a◌֮◌֫◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT OLE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05AC 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062; # (a◌̕◌̀◌֮◌֬b; à◌֮◌֬◌̕b; a◌֮◌̀◌֬◌̕b; à◌֮◌֬◌̕b; a◌֮◌̀◌֬◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT ILUY, LATIN SMALL LETTER B
+0061 05AC 0315 0300 05AE 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062; # (a◌֬◌̕◌̀◌֮b; a◌֮◌֬◌̀◌̕b; a◌֮◌֬◌̀◌̕b; a◌֮◌֬◌̀◌̕b; a◌֮◌֬◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT ILUY, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 302E 059A 0316 05AD 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062; # (a〮◌֚◌̖◌֭b; a◌̖◌֚◌֭〮b; a◌̖◌֚◌֭〮b; a◌̖◌֚◌֭〮b; a◌̖◌֚◌֭〮b; ) LATIN SMALL LETTER A, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, HEBREW ACCENT DEHI, LATIN SMALL LETTER B
+0061 05AD 302E 059A 0316 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062; # (a◌֭〮◌֚◌̖b; a◌̖◌֭◌֚〮b; a◌̖◌֭◌֚〮b; a◌̖◌֭◌֚〮b; a◌̖◌֭◌֚〮b; ) LATIN SMALL LETTER A, HEBREW ACCENT DEHI, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, LATIN SMALL LETTER B
+0061 0300 05AE 1D16D 05AE 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062; # (a◌̀◌֮ð…­â—ŒÖ®b; àð…­â—ŒÖ®â—ŒÖ®b; að…­â—ŒÖ®â—ŒÖ®â—ŒÌ€b; àð…­â—ŒÖ®â—ŒÖ®b; að…­â—ŒÖ®â—ŒÖ®â—ŒÌ€b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05AE 0300 05AE 1D16D 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062; # (a◌֮◌̀◌֮ð…­b; àð…­â—ŒÖ®â—ŒÖ®b; að…­â—ŒÖ®â—ŒÖ®â—ŒÌ€b; àð…­â—ŒÖ®â—ŒÖ®b; að…­â—ŒÖ®â—ŒÖ®â—ŒÌ€b; ) LATIN SMALL LETTER A, HEBREW ACCENT ZINOR, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05AF 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062; # (a◌̕◌̀◌֮◌֯b; à◌֮◌֯◌̕b; a◌֮◌̀◌֯◌̕b; à◌֮◌֯◌̕b; a◌֮◌̀◌֯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW MARK MASORA CIRCLE, LATIN SMALL LETTER B
+0061 05AF 0315 0300 05AE 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062; # (a◌֯◌̕◌̀◌֮b; a◌֮◌֯◌̀◌̕b; a◌֮◌֯◌̀◌̕b; a◌֮◌֯◌̀◌̕b; a◌֮◌֯◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW MARK MASORA CIRCLE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B1 05B0 094D 05B0 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062; # (a◌ֱ◌ְ◌à¥â—ŒÖ°b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; ) LATIN SMALL LETTER A, HEBREW POINT HATAF SEGOL, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, HEBREW POINT SHEVA, LATIN SMALL LETTER B
+0061 05B0 05B1 05B0 094D 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062; # (a◌ְ◌ֱ◌ְ◌à¥b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, HEBREW POINT HATAF SEGOL, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 05B2 05B1 05B0 05B1 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062; # (a◌ֲ◌ֱ◌ְ◌ֱb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; ) LATIN SMALL LETTER A, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF SEGOL, HEBREW POINT SHEVA, HEBREW POINT HATAF SEGOL, LATIN SMALL LETTER B
+0061 05B1 05B2 05B1 05B0 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062; # (a◌ֱ◌ֲ◌ֱ◌ְb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; ) LATIN SMALL LETTER A, HEBREW POINT HATAF SEGOL, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF SEGOL, HEBREW POINT SHEVA, LATIN SMALL LETTER B
+0061 05B3 05B2 05B1 05B2 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062; # (a◌ֳ◌ֲ◌ֱ◌ֲb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; ) LATIN SMALL LETTER A, HEBREW POINT HATAF QAMATS, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF SEGOL, HEBREW POINT HATAF PATAH, LATIN SMALL LETTER B
+0061 05B2 05B3 05B2 05B1 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062; # (a◌ֲ◌ֳ◌ֲ◌ֱb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; ) LATIN SMALL LETTER A, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF QAMATS, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF SEGOL, LATIN SMALL LETTER B
+0061 05B4 05B3 05B2 05B3 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062; # (a◌ִ◌ֳ◌ֲ◌ֳb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; ) LATIN SMALL LETTER A, HEBREW POINT HIRIQ, HEBREW POINT HATAF QAMATS, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF QAMATS, LATIN SMALL LETTER B
+0061 05B3 05B4 05B3 05B2 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062; # (a◌ֳ◌ִ◌ֳ◌ֲb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; ) LATIN SMALL LETTER A, HEBREW POINT HATAF QAMATS, HEBREW POINT HIRIQ, HEBREW POINT HATAF QAMATS, HEBREW POINT HATAF PATAH, LATIN SMALL LETTER B
+0061 05B5 05B4 05B3 05B4 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062; # (a◌ֵ◌ִ◌ֳ◌ִb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; ) LATIN SMALL LETTER A, HEBREW POINT TSERE, HEBREW POINT HIRIQ, HEBREW POINT HATAF QAMATS, HEBREW POINT HIRIQ, LATIN SMALL LETTER B
+0061 05B4 05B5 05B4 05B3 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062; # (a◌ִ◌ֵ◌ִ◌ֳb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; ) LATIN SMALL LETTER A, HEBREW POINT HIRIQ, HEBREW POINT TSERE, HEBREW POINT HIRIQ, HEBREW POINT HATAF QAMATS, LATIN SMALL LETTER B
+0061 05B6 05B5 05B4 05B5 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062; # (a◌ֶ◌ֵ◌ִ◌ֵb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; ) LATIN SMALL LETTER A, HEBREW POINT SEGOL, HEBREW POINT TSERE, HEBREW POINT HIRIQ, HEBREW POINT TSERE, LATIN SMALL LETTER B
+0061 05B5 05B6 05B5 05B4 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062; # (a◌ֵ◌ֶ◌ֵ◌ִb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; ) LATIN SMALL LETTER A, HEBREW POINT TSERE, HEBREW POINT SEGOL, HEBREW POINT TSERE, HEBREW POINT HIRIQ, LATIN SMALL LETTER B
+0061 05B7 05B6 05B5 05B6 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062; # (a◌ַ◌ֶ◌ֵ◌ֶb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; ) LATIN SMALL LETTER A, HEBREW POINT PATAH, HEBREW POINT SEGOL, HEBREW POINT TSERE, HEBREW POINT SEGOL, LATIN SMALL LETTER B
+0061 05B6 05B7 05B6 05B5 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062; # (a◌ֶ◌ַ◌ֶ◌ֵb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; ) LATIN SMALL LETTER A, HEBREW POINT SEGOL, HEBREW POINT PATAH, HEBREW POINT SEGOL, HEBREW POINT TSERE, LATIN SMALL LETTER B
+0061 05B8 05B7 05B6 05B7 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062; # (a◌ָ◌ַ◌ֶ◌ַb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; ) LATIN SMALL LETTER A, HEBREW POINT QAMATS, HEBREW POINT PATAH, HEBREW POINT SEGOL, HEBREW POINT PATAH, LATIN SMALL LETTER B
+0061 05B7 05B8 05B7 05B6 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062; # (a◌ַ◌ָ◌ַ◌ֶb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; ) LATIN SMALL LETTER A, HEBREW POINT PATAH, HEBREW POINT QAMATS, HEBREW POINT PATAH, HEBREW POINT SEGOL, LATIN SMALL LETTER B
+0061 05B9 05B8 05B7 05B8 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062; # (a◌ֹ◌ָ◌ַ◌ָb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; ) LATIN SMALL LETTER A, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT PATAH, HEBREW POINT QAMATS, LATIN SMALL LETTER B
+0061 05B8 05B9 05B8 05B7 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062; # (a◌ָ◌ֹ◌ָ◌ַb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; ) LATIN SMALL LETTER A, HEBREW POINT QAMATS, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT PATAH, LATIN SMALL LETTER B
+0061 05BB 05B9 05B8 05B9 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062; # (a◌ֻ◌ֹ◌ָ◌ֹb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; ) LATIN SMALL LETTER A, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT HOLAM, LATIN SMALL LETTER B
+0061 05B9 05BB 05B9 05B8 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062; # (a◌ֹ◌ֻ◌ֹ◌ָb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; ) LATIN SMALL LETTER A, HEBREW POINT HOLAM, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, HEBREW POINT QAMATS, LATIN SMALL LETTER B
+0061 05BB 05B9 05B8 05BA 0062;0061 05B8 05B9 05BA 05BB 0062;0061 05B8 05B9 05BA 05BB 0062;0061 05B8 05B9 05BA 05BB 0062;0061 05B8 05B9 05BA 05BB 0062; # (a◌ֻ◌ֹ◌ָ◌ֺb; a◌ָ◌ֹ◌ֺ◌ֻb; a◌ָ◌ֹ◌ֺ◌ֻb; a◌ָ◌ֹ◌ֺ◌ֻb; a◌ָ◌ֹ◌ֺ◌ֻb; ) LATIN SMALL LETTER A, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT HOLAM HASER FOR VAV, LATIN SMALL LETTER B
+0061 05BA 05BB 05B9 05B8 0062;0061 05B8 05BA 05B9 05BB 0062;0061 05B8 05BA 05B9 05BB 0062;0061 05B8 05BA 05B9 05BB 0062;0061 05B8 05BA 05B9 05BB 0062; # (a◌ֺ◌ֻ◌ֹ◌ָb; a◌ָ◌ֺ◌ֹ◌ֻb; a◌ָ◌ֺ◌ֹ◌ֻb; a◌ָ◌ֺ◌ֹ◌ֻb; a◌ָ◌ֺ◌ֹ◌ֻb; ) LATIN SMALL LETTER A, HEBREW POINT HOLAM HASER FOR VAV, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, HEBREW POINT QAMATS, LATIN SMALL LETTER B
+0061 05BC 05BB 05B9 05BB 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062; # (a◌ּ◌ֻ◌ֹ◌ֻb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; ) LATIN SMALL LETTER A, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, HEBREW POINT QUBUTS, LATIN SMALL LETTER B
+0061 05BB 05BC 05BB 05B9 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062; # (a◌ֻ◌ּ◌ֻ◌ֹb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; ) LATIN SMALL LETTER A, HEBREW POINT QUBUTS, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, LATIN SMALL LETTER B
+0061 05BD 05BC 05BB 05BC 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062; # (a◌ֽ◌ּ◌ֻ◌ּb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; ) LATIN SMALL LETTER A, HEBREW POINT METEG, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT QUBUTS, HEBREW POINT DAGESH OR MAPIQ, LATIN SMALL LETTER B
+0061 05BC 05BD 05BC 05BB 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062; # (a◌ּ◌ֽ◌ּ◌ֻb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; ) LATIN SMALL LETTER A, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT METEG, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT QUBUTS, LATIN SMALL LETTER B
+0061 05BF 05BD 05BC 05BD 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062; # (a◌ֿ◌ֽ◌ּ◌ֽb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; ) LATIN SMALL LETTER A, HEBREW POINT RAFE, HEBREW POINT METEG, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT METEG, LATIN SMALL LETTER B
+0061 05BD 05BF 05BD 05BC 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062; # (a◌ֽ◌ֿ◌ֽ◌ּb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; ) LATIN SMALL LETTER A, HEBREW POINT METEG, HEBREW POINT RAFE, HEBREW POINT METEG, HEBREW POINT DAGESH OR MAPIQ, LATIN SMALL LETTER B
+0061 05C1 05BF 05BD 05BF 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062; # (aâ—Œ×◌ֿ◌ֽ◌ֿb; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; ) LATIN SMALL LETTER A, HEBREW POINT SHIN DOT, HEBREW POINT RAFE, HEBREW POINT METEG, HEBREW POINT RAFE, LATIN SMALL LETTER B
+0061 05BF 05C1 05BF 05BD 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062; # (a◌ֿ◌×◌ֿ◌ֽb; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; ) LATIN SMALL LETTER A, HEBREW POINT RAFE, HEBREW POINT SHIN DOT, HEBREW POINT RAFE, HEBREW POINT METEG, LATIN SMALL LETTER B
+0061 05C2 05C1 05BF 05C1 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062; # (a◌ׂ◌×◌ֿ◌×b; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; ) LATIN SMALL LETTER A, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, HEBREW POINT RAFE, HEBREW POINT SHIN DOT, LATIN SMALL LETTER B
+0061 05C1 05C2 05C1 05BF 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062; # (aâ—Œ×◌ׂ◌×◌ֿb; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; ) LATIN SMALL LETTER A, HEBREW POINT SHIN DOT, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, HEBREW POINT RAFE, LATIN SMALL LETTER B
+0061 FB1E 05C2 05C1 05C2 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062; # (a◌ﬞ◌ׂ◌×◌ׂb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; ) LATIN SMALL LETTER A, HEBREW POINT JUDEO-SPANISH VARIKA, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, HEBREW POINT SIN DOT, LATIN SMALL LETTER B
+0061 05C2 FB1E 05C2 05C1 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062; # (a◌ׂ◌ﬞ◌ׂ◌×b; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; ) LATIN SMALL LETTER A, HEBREW POINT SIN DOT, HEBREW POINT JUDEO-SPANISH VARIKA, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05C4 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062; # (a◌̕◌̀◌֮◌ׄb; à◌֮◌ׄ◌̕b; a◌֮◌̀◌ׄ◌̕b; à◌֮◌ׄ◌̕b; a◌֮◌̀◌ׄ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW MARK UPPER DOT, LATIN SMALL LETTER B
+0061 05C4 0315 0300 05AE 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062; # (a◌ׄ◌̕◌̀◌֮b; a◌֮◌ׄ◌̀◌̕b; a◌֮◌ׄ◌̀◌̕b; a◌֮◌ׄ◌̀◌̕b; a◌֮◌ׄ◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW MARK UPPER DOT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 05C5 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062; # (a◌֚◌̖◌〪◌ׅb; a◌〪◌̖◌ׅ◌֚b; a◌〪◌̖◌ׅ◌֚b; a◌〪◌̖◌ׅ◌֚b; a◌〪◌̖◌ׅ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW MARK LOWER DOT, LATIN SMALL LETTER B
+0061 05C5 059A 0316 302A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062; # (a◌ׅ◌֚◌̖◌〪b; a◌〪◌ׅ◌̖◌֚b; a◌〪◌ׅ◌̖◌֚b; a◌〪◌ׅ◌̖◌֚b; a◌〪◌ׅ◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW MARK LOWER DOT, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 05B9 05B8 05B7 05C7 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062; # (a◌ֹ◌ָ◌ַ◌ׇb; a◌ַ◌ָ◌ׇ◌ֹb; a◌ַ◌ָ◌ׇ◌ֹb; a◌ַ◌ָ◌ׇ◌ֹb; a◌ַ◌ָ◌ׇ◌ֹb; ) LATIN SMALL LETTER A, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT PATAH, HEBREW POINT QAMATS QATAN, LATIN SMALL LETTER B
+0061 05C7 05B9 05B8 05B7 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062; # (a◌ׇ◌ֹ◌ָ◌ַb; a◌ַ◌ׇ◌ָ◌ֹb; a◌ַ◌ׇ◌ָ◌ֹb; a◌ַ◌ׇ◌ָ◌ֹb; a◌ַ◌ׇ◌ָ◌ֹb; ) LATIN SMALL LETTER A, HEBREW POINT QAMATS QATAN, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT PATAH, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0610 0062;00E0 05AE 0610 0315 0062;0061 05AE 0300 0610 0315 0062;00E0 05AE 0610 0315 0062;0061 05AE 0300 0610 0315 0062; # (a◌̕◌̀◌֮◌Øb; à◌֮◌Ø◌̕b; a◌֮◌̀◌Ø◌̕b; à◌֮◌Ø◌̕b; a◌֮◌̀◌Ø◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM, LATIN SMALL LETTER B
+0061 0610 0315 0300 05AE 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062; # (aâ—ŒØ◌̕◌̀◌֮b; a◌֮◌Ø◌̀◌̕b; a◌֮◌Ø◌̀◌̕b; a◌֮◌Ø◌̀◌̕b; a◌֮◌Ø◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0611 0062;00E0 05AE 0611 0315 0062;0061 05AE 0300 0611 0315 0062;00E0 05AE 0611 0315 0062;0061 05AE 0300 0611 0315 0062; # (a◌̕◌̀◌֮◌ؑb; à◌֮◌ؑ◌̕b; a◌֮◌̀◌ؑ◌̕b; à◌֮◌ؑ◌̕b; a◌֮◌̀◌ؑ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SIGN ALAYHE ASSALLAM, LATIN SMALL LETTER B
+0061 0611 0315 0300 05AE 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062; # (a◌ؑ◌̕◌̀◌֮b; a◌֮◌ؑ◌̀◌̕b; a◌֮◌ؑ◌̀◌̕b; a◌֮◌ؑ◌̀◌̕b; a◌֮◌ؑ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SIGN ALAYHE ASSALLAM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0612 0062;00E0 05AE 0612 0315 0062;0061 05AE 0300 0612 0315 0062;00E0 05AE 0612 0315 0062;0061 05AE 0300 0612 0315 0062; # (a◌̕◌̀◌֮◌ؒb; à◌֮◌ؒ◌̕b; a◌֮◌̀◌ؒ◌̕b; à◌֮◌ؒ◌̕b; a◌֮◌̀◌ؒ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SIGN RAHMATULLAH ALAYHE, LATIN SMALL LETTER B
+0061 0612 0315 0300 05AE 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062; # (a◌ؒ◌̕◌̀◌֮b; a◌֮◌ؒ◌̀◌̕b; a◌֮◌ؒ◌̀◌̕b; a◌֮◌ؒ◌̀◌̕b; a◌֮◌ؒ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SIGN RAHMATULLAH ALAYHE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0613 0062;00E0 05AE 0613 0315 0062;0061 05AE 0300 0613 0315 0062;00E0 05AE 0613 0315 0062;0061 05AE 0300 0613 0315 0062; # (a◌̕◌̀◌֮◌ؓb; à◌֮◌ؓ◌̕b; a◌֮◌̀◌ؓ◌̕b; à◌֮◌ؓ◌̕b; a◌֮◌̀◌ؓ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SIGN RADI ALLAHOU ANHU, LATIN SMALL LETTER B
+0061 0613 0315 0300 05AE 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062; # (a◌ؓ◌̕◌̀◌֮b; a◌֮◌ؓ◌̀◌̕b; a◌֮◌ؓ◌̀◌̕b; a◌֮◌ؓ◌̀◌̕b; a◌֮◌ؓ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SIGN RADI ALLAHOU ANHU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0614 0062;00E0 05AE 0614 0315 0062;0061 05AE 0300 0614 0315 0062;00E0 05AE 0614 0315 0062;0061 05AE 0300 0614 0315 0062; # (a◌̕◌̀◌֮◌ؔb; à◌֮◌ؔ◌̕b; a◌֮◌̀◌ؔ◌̕b; à◌֮◌ؔ◌̕b; a◌֮◌̀◌ؔ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SIGN TAKHALLUS, LATIN SMALL LETTER B
+0061 0614 0315 0300 05AE 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062; # (a◌ؔ◌̕◌̀◌֮b; a◌֮◌ؔ◌̀◌̕b; a◌֮◌ؔ◌̀◌̕b; a◌֮◌ؔ◌̀◌̕b; a◌֮◌ؔ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SIGN TAKHALLUS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0615 0062;00E0 05AE 0615 0315 0062;0061 05AE 0300 0615 0315 0062;00E0 05AE 0615 0315 0062;0061 05AE 0300 0615 0315 0062; # (a◌̕◌̀◌֮◌ؕb; à◌֮◌ؕ◌̕b; a◌֮◌̀◌ؕ◌̕b; à◌֮◌ؕ◌̕b; a◌֮◌̀◌ؕ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH TAH, LATIN SMALL LETTER B
+0061 0615 0315 0300 05AE 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062; # (a◌ؕ◌̕◌̀◌֮b; a◌֮◌ؕ◌̀◌̕b; a◌֮◌ؕ◌̀◌̕b; a◌֮◌ؕ◌̀◌̕b; a◌֮◌ؕ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH TAH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0616 0062;00E0 05AE 0616 0315 0062;0061 05AE 0300 0616 0315 0062;00E0 05AE 0616 0315 0062;0061 05AE 0300 0616 0315 0062; # (a◌̕◌̀◌֮◌ؖb; à◌֮◌ؖ◌̕b; a◌֮◌̀◌ؖ◌̕b; à◌֮◌ؖ◌̕b; a◌֮◌̀◌ؖ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH, LATIN SMALL LETTER B
+0061 0616 0315 0300 05AE 0062;0061 05AE 0616 0300 0315 0062;0061 05AE 0616 0300 0315 0062;0061 05AE 0616 0300 0315 0062;0061 05AE 0616 0300 0315 0062; # (a◌ؖ◌̕◌̀◌֮b; a◌֮◌ؖ◌̀◌̕b; a◌֮◌ؖ◌̀◌̕b; a◌֮◌ؖ◌̀◌̕b; a◌֮◌ؖ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0617 0062;00E0 05AE 0617 0315 0062;0061 05AE 0300 0617 0315 0062;00E0 05AE 0617 0315 0062;0061 05AE 0300 0617 0315 0062; # (a◌̕◌̀◌֮◌ؗb; à◌֮◌ؗ◌̕b; a◌֮◌̀◌ؗ◌̕b; à◌֮◌ؗ◌̕b; a◌֮◌̀◌ؗ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH ZAIN, LATIN SMALL LETTER B
+0061 0617 0315 0300 05AE 0062;0061 05AE 0617 0300 0315 0062;0061 05AE 0617 0300 0315 0062;0061 05AE 0617 0300 0315 0062;0061 05AE 0617 0300 0315 0062; # (a◌ؗ◌̕◌̀◌֮b; a◌֮◌ؗ◌̀◌̕b; a◌֮◌ؗ◌̀◌̕b; a◌֮◌ؗ◌̀◌̕b; a◌֮◌ؗ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH ZAIN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0619 0618 064D 0618 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062; # (a◌ؙ◌ؘ◌Ù◌ؘb; aâ—ŒÙ◌ؘ◌ؘ◌ؙb; aâ—ŒÙ◌ؘ◌ؘ◌ؙb; aâ—ŒÙ◌ؘ◌ؘ◌ؙb; aâ—ŒÙ◌ؘ◌ؘ◌ؙb; ) LATIN SMALL LETTER A, ARABIC SMALL DAMMA, ARABIC SMALL FATHA, ARABIC KASRATAN, ARABIC SMALL FATHA, LATIN SMALL LETTER B
+0061 0618 0619 0618 064D 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062; # (a◌ؘ◌ؙ◌ؘ◌Ùb; aâ—ŒÙ◌ؘ◌ؘ◌ؙb; aâ—ŒÙ◌ؘ◌ؘ◌ؙb; aâ—ŒÙ◌ؘ◌ؘ◌ؙb; aâ—ŒÙ◌ؘ◌ؘ◌ؙb; ) LATIN SMALL LETTER A, ARABIC SMALL FATHA, ARABIC SMALL DAMMA, ARABIC SMALL FATHA, ARABIC KASRATAN, LATIN SMALL LETTER B
+0061 061A 0619 0618 0619 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062; # (a◌ؚ◌ؙ◌ؘ◌ؙb; a◌ؘ◌ؙ◌ؙ◌ؚb; a◌ؘ◌ؙ◌ؙ◌ؚb; a◌ؘ◌ؙ◌ؙ◌ؚb; a◌ؘ◌ؙ◌ؙ◌ؚb; ) LATIN SMALL LETTER A, ARABIC SMALL KASRA, ARABIC SMALL DAMMA, ARABIC SMALL FATHA, ARABIC SMALL DAMMA, LATIN SMALL LETTER B
+0061 0619 061A 0619 0618 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062; # (a◌ؙ◌ؚ◌ؙ◌ؘb; a◌ؘ◌ؙ◌ؙ◌ؚb; a◌ؘ◌ؙ◌ؙ◌ؚb; a◌ؘ◌ؙ◌ؙ◌ؚb; a◌ؘ◌ؙ◌ؙ◌ؚb; ) LATIN SMALL LETTER A, ARABIC SMALL DAMMA, ARABIC SMALL KASRA, ARABIC SMALL DAMMA, ARABIC SMALL FATHA, LATIN SMALL LETTER B
+0061 0651 061A 0619 061A 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062; # (a◌ّ◌ؚ◌ؙ◌ؚb; a◌ؙ◌ؚ◌ؚ◌ّb; a◌ؙ◌ؚ◌ؚ◌ّb; a◌ؙ◌ؚ◌ؚ◌ّb; a◌ؙ◌ؚ◌ؚ◌ّb; ) LATIN SMALL LETTER A, ARABIC SHADDA, ARABIC SMALL KASRA, ARABIC SMALL DAMMA, ARABIC SMALL KASRA, LATIN SMALL LETTER B
+0061 061A 0651 061A 0619 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062; # (a◌ؚ◌ّ◌ؚ◌ؙb; a◌ؙ◌ؚ◌ؚ◌ّb; a◌ؙ◌ؚ◌ؚ◌ّb; a◌ؙ◌ؚ◌ؚ◌ّb; a◌ؙ◌ؚ◌ؚ◌ّb; ) LATIN SMALL LETTER A, ARABIC SMALL KASRA, ARABIC SHADDA, ARABIC SMALL KASRA, ARABIC SMALL DAMMA, LATIN SMALL LETTER B
+0061 064C 064B FB1E 064B 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062; # (a◌ٌ◌ً◌ﬞ◌ًb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; ) LATIN SMALL LETTER A, ARABIC DAMMATAN, ARABIC FATHATAN, HEBREW POINT JUDEO-SPANISH VARIKA, ARABIC FATHATAN, LATIN SMALL LETTER B
+0061 064B 064C 064B FB1E 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062; # (a◌ً◌ٌ◌ً◌ﬞb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; ) LATIN SMALL LETTER A, ARABIC FATHATAN, ARABIC DAMMATAN, ARABIC FATHATAN, HEBREW POINT JUDEO-SPANISH VARIKA, LATIN SMALL LETTER B
+0061 064D 064C 064B 064C 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062; # (aâ—ŒÙ◌ٌ◌ً◌ٌb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; ) LATIN SMALL LETTER A, ARABIC KASRATAN, ARABIC DAMMATAN, ARABIC FATHATAN, ARABIC DAMMATAN, LATIN SMALL LETTER B
+0061 064C 064D 064C 064B 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062; # (a◌ٌ◌Ù◌ٌ◌ًb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; ) LATIN SMALL LETTER A, ARABIC DAMMATAN, ARABIC KASRATAN, ARABIC DAMMATAN, ARABIC FATHATAN, LATIN SMALL LETTER B
+0061 0618 064D 064C 064D 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062; # (a◌ؘ◌Ù◌ٌ◌Ùb; a◌ٌ◌Ùâ—ŒÙ◌ؘb; a◌ٌ◌Ùâ—ŒÙ◌ؘb; a◌ٌ◌Ùâ—ŒÙ◌ؘb; a◌ٌ◌Ùâ—ŒÙ◌ؘb; ) LATIN SMALL LETTER A, ARABIC SMALL FATHA, ARABIC KASRATAN, ARABIC DAMMATAN, ARABIC KASRATAN, LATIN SMALL LETTER B
+0061 064D 0618 064D 064C 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062; # (aâ—ŒÙ◌ؘ◌Ù◌ٌb; a◌ٌ◌Ùâ—ŒÙ◌ؘb; a◌ٌ◌Ùâ—ŒÙ◌ؘb; a◌ٌ◌Ùâ—ŒÙ◌ؘb; a◌ٌ◌Ùâ—ŒÙ◌ؘb; ) LATIN SMALL LETTER A, ARABIC KASRATAN, ARABIC SMALL FATHA, ARABIC KASRATAN, ARABIC DAMMATAN, LATIN SMALL LETTER B
+0061 0619 0618 064D 064E 0062;0061 064D 0618 064E 0619 0062;0061 064D 0618 064E 0619 0062;0061 064D 0618 064E 0619 0062;0061 064D 0618 064E 0619 0062; # (a◌ؙ◌ؘ◌Ù◌َb; aâ—ŒÙ◌ؘ◌َ◌ؙb; aâ—ŒÙ◌ؘ◌َ◌ؙb; aâ—ŒÙ◌ؘ◌َ◌ؙb; aâ—ŒÙ◌ؘ◌َ◌ؙb; ) LATIN SMALL LETTER A, ARABIC SMALL DAMMA, ARABIC SMALL FATHA, ARABIC KASRATAN, ARABIC FATHA, LATIN SMALL LETTER B
+0061 064E 0619 0618 064D 0062;0061 064D 064E 0618 0619 0062;0061 064D 064E 0618 0619 0062;0061 064D 064E 0618 0619 0062;0061 064D 064E 0618 0619 0062; # (a◌َ◌ؙ◌ؘ◌Ùb; aâ—ŒÙ◌َ◌ؘ◌ؙb; aâ—ŒÙ◌َ◌ؘ◌ؙb; aâ—ŒÙ◌َ◌ؘ◌ؙb; aâ—ŒÙ◌َ◌ؘ◌ؙb; ) LATIN SMALL LETTER A, ARABIC FATHA, ARABIC SMALL DAMMA, ARABIC SMALL FATHA, ARABIC KASRATAN, LATIN SMALL LETTER B
+0061 061A 0619 0618 064F 0062;0061 0618 0619 064F 061A 0062;0061 0618 0619 064F 061A 0062;0061 0618 0619 064F 061A 0062;0061 0618 0619 064F 061A 0062; # (a◌ؚ◌ؙ◌ؘ◌Ùb; a◌ؘ◌ؙ◌Ù◌ؚb; a◌ؘ◌ؙ◌Ù◌ؚb; a◌ؘ◌ؙ◌Ù◌ؚb; a◌ؘ◌ؙ◌Ù◌ؚb; ) LATIN SMALL LETTER A, ARABIC SMALL KASRA, ARABIC SMALL DAMMA, ARABIC SMALL FATHA, ARABIC DAMMA, LATIN SMALL LETTER B
+0061 064F 061A 0619 0618 0062;0061 0618 064F 0619 061A 0062;0061 0618 064F 0619 061A 0062;0061 0618 064F 0619 061A 0062;0061 0618 064F 0619 061A 0062; # (aâ—ŒÙ◌ؚ◌ؙ◌ؘb; a◌ؘ◌Ù◌ؙ◌ؚb; a◌ؘ◌Ù◌ؙ◌ؚb; a◌ؘ◌Ù◌ؙ◌ؚb; a◌ؘ◌Ù◌ؙ◌ؚb; ) LATIN SMALL LETTER A, ARABIC DAMMA, ARABIC SMALL KASRA, ARABIC SMALL DAMMA, ARABIC SMALL FATHA, LATIN SMALL LETTER B
+0061 0651 061A 0619 0650 0062;0061 0619 061A 0650 0651 0062;0061 0619 061A 0650 0651 0062;0061 0619 061A 0650 0651 0062;0061 0619 061A 0650 0651 0062; # (a◌ّ◌ؚ◌ؙ◌Ùb; a◌ؙ◌ؚ◌Ù◌ّb; a◌ؙ◌ؚ◌Ù◌ّb; a◌ؙ◌ؚ◌Ù◌ّb; a◌ؙ◌ؚ◌Ù◌ّb; ) LATIN SMALL LETTER A, ARABIC SHADDA, ARABIC SMALL KASRA, ARABIC SMALL DAMMA, ARABIC KASRA, LATIN SMALL LETTER B
+0061 0650 0651 061A 0619 0062;0061 0619 0650 061A 0651 0062;0061 0619 0650 061A 0651 0062;0061 0619 0650 061A 0651 0062;0061 0619 0650 061A 0651 0062; # (aâ—ŒÙ◌ّ◌ؚ◌ؙb; a◌ؙ◌Ù◌ؚ◌ّb; a◌ؙ◌Ù◌ؚ◌ّb; a◌ؙ◌Ù◌ؚ◌ّb; a◌ؙ◌Ù◌ؚ◌ّb; ) LATIN SMALL LETTER A, ARABIC KASRA, ARABIC SHADDA, ARABIC SMALL KASRA, ARABIC SMALL DAMMA, LATIN SMALL LETTER B
+0061 0652 0651 061A 0651 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062; # (a◌ْ◌ّ◌ؚ◌ّb; a◌ؚ◌ّ◌ّ◌ْb; a◌ؚ◌ّ◌ّ◌ْb; a◌ؚ◌ّ◌ّ◌ْb; a◌ؚ◌ّ◌ّ◌ْb; ) LATIN SMALL LETTER A, ARABIC SUKUN, ARABIC SHADDA, ARABIC SMALL KASRA, ARABIC SHADDA, LATIN SMALL LETTER B
+0061 0651 0652 0651 061A 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062; # (a◌ّ◌ْ◌ّ◌ؚb; a◌ؚ◌ّ◌ّ◌ْb; a◌ؚ◌ّ◌ّ◌ْb; a◌ؚ◌ّ◌ّ◌ْb; a◌ؚ◌ّ◌ّ◌ْb; ) LATIN SMALL LETTER A, ARABIC SHADDA, ARABIC SUKUN, ARABIC SHADDA, ARABIC SMALL KASRA, LATIN SMALL LETTER B
+0061 0670 0652 0651 0652 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062; # (a◌ٰ◌ْ◌ّ◌ْb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; ) LATIN SMALL LETTER A, ARABIC LETTER SUPERSCRIPT ALEF, ARABIC SUKUN, ARABIC SHADDA, ARABIC SUKUN, LATIN SMALL LETTER B
+0061 0652 0670 0652 0651 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062; # (a◌ْ◌ٰ◌ْ◌ّb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; ) LATIN SMALL LETTER A, ARABIC SUKUN, ARABIC LETTER SUPERSCRIPT ALEF, ARABIC SUKUN, ARABIC SHADDA, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0653 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062; # (a◌̕◌̀◌֮◌ٓb; à◌֮◌ٓ◌̕b; a◌֮◌̀◌ٓ◌̕b; à◌֮◌ٓ◌̕b; a◌֮◌̀◌ٓ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC MADDAH ABOVE, LATIN SMALL LETTER B
+0061 0653 0315 0300 05AE 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062; # (a◌ٓ◌̕◌̀◌֮b; a◌֮◌ٓ◌̀◌̕b; a◌֮◌ٓ◌̀◌̕b; a◌֮◌ٓ◌̀◌̕b; a◌֮◌ٓ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC MADDAH ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0654 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062; # (a◌̕◌̀◌֮◌ٔb; à◌֮◌ٔ◌̕b; a◌֮◌̀◌ٔ◌̕b; à◌֮◌ٔ◌̕b; a◌֮◌̀◌ٔ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC HAMZA ABOVE, LATIN SMALL LETTER B
+0061 0654 0315 0300 05AE 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062; # (a◌ٔ◌̕◌̀◌֮b; a◌֮◌ٔ◌̀◌̕b; a◌֮◌ٔ◌̀◌̕b; a◌֮◌ٔ◌̀◌̕b; a◌֮◌ٔ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC HAMZA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0655 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062; # (a◌֚◌̖◌〪◌ٕb; a◌〪◌̖◌ٕ◌֚b; a◌〪◌̖◌ٕ◌֚b; a◌〪◌̖◌ٕ◌֚b; a◌〪◌̖◌ٕ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC HAMZA BELOW, LATIN SMALL LETTER B
+0061 0655 059A 0316 302A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062; # (a◌ٕ◌֚◌̖◌〪b; a◌〪◌ٕ◌̖◌֚b; a◌〪◌ٕ◌̖◌֚b; a◌〪◌ٕ◌̖◌֚b; a◌〪◌ٕ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC HAMZA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0656 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062; # (a◌֚◌̖◌〪◌ٖb; a◌〪◌̖◌ٖ◌֚b; a◌〪◌̖◌ٖ◌֚b; a◌〪◌̖◌ٖ◌֚b; a◌〪◌̖◌ٖ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC SUBSCRIPT ALEF, LATIN SMALL LETTER B
+0061 0656 059A 0316 302A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062; # (a◌ٖ◌֚◌̖◌〪b; a◌〪◌ٖ◌̖◌֚b; a◌〪◌ٖ◌̖◌֚b; a◌〪◌ٖ◌̖◌֚b; a◌〪◌ٖ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC SUBSCRIPT ALEF, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0657 0062;00E0 05AE 0657 0315 0062;0061 05AE 0300 0657 0315 0062;00E0 05AE 0657 0315 0062;0061 05AE 0300 0657 0315 0062; # (a◌̕◌̀◌֮◌ٗb; à◌֮◌ٗ◌̕b; a◌֮◌̀◌ٗ◌̕b; à◌֮◌ٗ◌̕b; a◌֮◌̀◌ٗ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC INVERTED DAMMA, LATIN SMALL LETTER B
+0061 0657 0315 0300 05AE 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062; # (a◌ٗ◌̕◌̀◌֮b; a◌֮◌ٗ◌̀◌̕b; a◌֮◌ٗ◌̀◌̕b; a◌֮◌ٗ◌̀◌̕b; a◌֮◌ٗ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC INVERTED DAMMA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0658 0062;00E0 05AE 0658 0315 0062;0061 05AE 0300 0658 0315 0062;00E0 05AE 0658 0315 0062;0061 05AE 0300 0658 0315 0062; # (a◌̕◌̀◌֮◌٘b; à◌֮◌٘◌̕b; a◌֮◌̀◌٘◌̕b; à◌֮◌٘◌̕b; a◌֮◌̀◌٘◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC MARK NOON GHUNNA, LATIN SMALL LETTER B
+0061 0658 0315 0300 05AE 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062; # (a◌٘◌̕◌̀◌֮b; a◌֮◌٘◌̀◌̕b; a◌֮◌٘◌̀◌̕b; a◌֮◌٘◌̀◌̕b; a◌֮◌٘◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC MARK NOON GHUNNA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0659 0062;00E0 05AE 0659 0315 0062;0061 05AE 0300 0659 0315 0062;00E0 05AE 0659 0315 0062;0061 05AE 0300 0659 0315 0062; # (a◌̕◌̀◌֮◌ٙb; à◌֮◌ٙ◌̕b; a◌֮◌̀◌ٙ◌̕b; à◌֮◌ٙ◌̕b; a◌֮◌̀◌ٙ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC ZWARAKAY, LATIN SMALL LETTER B
+0061 0659 0315 0300 05AE 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062; # (a◌ٙ◌̕◌̀◌֮b; a◌֮◌ٙ◌̀◌̕b; a◌֮◌ٙ◌̀◌̕b; a◌֮◌ٙ◌̀◌̕b; a◌֮◌ٙ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC ZWARAKAY, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 065A 0062;00E0 05AE 065A 0315 0062;0061 05AE 0300 065A 0315 0062;00E0 05AE 065A 0315 0062;0061 05AE 0300 065A 0315 0062; # (a◌̕◌̀◌֮◌ٚb; à◌֮◌ٚ◌̕b; a◌֮◌̀◌ٚ◌̕b; à◌֮◌ٚ◌̕b; a◌֮◌̀◌ٚ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC VOWEL SIGN SMALL V ABOVE, LATIN SMALL LETTER B
+0061 065A 0315 0300 05AE 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062; # (a◌ٚ◌̕◌̀◌֮b; a◌֮◌ٚ◌̀◌̕b; a◌֮◌ٚ◌̀◌̕b; a◌֮◌ٚ◌̀◌̕b; a◌֮◌ٚ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC VOWEL SIGN SMALL V ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 065B 0062;00E0 05AE 065B 0315 0062;0061 05AE 0300 065B 0315 0062;00E0 05AE 065B 0315 0062;0061 05AE 0300 065B 0315 0062; # (a◌̕◌̀◌֮◌ٛb; à◌֮◌ٛ◌̕b; a◌֮◌̀◌ٛ◌̕b; à◌֮◌ٛ◌̕b; a◌֮◌̀◌ٛ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC VOWEL SIGN INVERTED SMALL V ABOVE, LATIN SMALL LETTER B
+0061 065B 0315 0300 05AE 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062; # (a◌ٛ◌̕◌̀◌֮b; a◌֮◌ٛ◌̀◌̕b; a◌֮◌ٛ◌̀◌̕b; a◌֮◌ٛ◌̀◌̕b; a◌֮◌ٛ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC VOWEL SIGN INVERTED SMALL V ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 065C 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062; # (a◌֚◌̖◌〪◌ٜb; a◌〪◌̖◌ٜ◌֚b; a◌〪◌̖◌ٜ◌֚b; a◌〪◌̖◌ٜ◌֚b; a◌〪◌̖◌ٜ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC VOWEL SIGN DOT BELOW, LATIN SMALL LETTER B
+0061 065C 059A 0316 302A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062; # (a◌ٜ◌֚◌̖◌〪b; a◌〪◌ٜ◌̖◌֚b; a◌〪◌ٜ◌̖◌֚b; a◌〪◌ٜ◌̖◌֚b; a◌〪◌ٜ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC VOWEL SIGN DOT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 065D 0062;00E0 05AE 065D 0315 0062;0061 05AE 0300 065D 0315 0062;00E0 05AE 065D 0315 0062;0061 05AE 0300 065D 0315 0062; # (a◌̕◌̀◌֮◌Ùb; à◌֮◌Ù◌̕b; a◌֮◌̀◌Ù◌̕b; à◌֮◌Ù◌̕b; a◌֮◌̀◌Ù◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC REVERSED DAMMA, LATIN SMALL LETTER B
+0061 065D 0315 0300 05AE 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062; # (aâ—ŒÙ◌̕◌̀◌֮b; a◌֮◌Ù◌̀◌̕b; a◌֮◌Ù◌̀◌̕b; a◌֮◌Ù◌̀◌̕b; a◌֮◌Ù◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC REVERSED DAMMA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 065E 0062;00E0 05AE 065E 0315 0062;0061 05AE 0300 065E 0315 0062;00E0 05AE 065E 0315 0062;0061 05AE 0300 065E 0315 0062; # (a◌̕◌̀◌֮◌ٞb; à◌֮◌ٞ◌̕b; a◌֮◌̀◌ٞ◌̕b; à◌֮◌ٞ◌̕b; a◌֮◌̀◌ٞ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC FATHA WITH TWO DOTS, LATIN SMALL LETTER B
+0061 065E 0315 0300 05AE 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062; # (a◌ٞ◌̕◌̀◌֮b; a◌֮◌ٞ◌̀◌̕b; a◌֮◌ٞ◌̀◌̕b; a◌֮◌ٞ◌̀◌̕b; a◌֮◌ٞ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC FATHA WITH TWO DOTS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 065F 0062;0061 302A 0316 065F 059A 0062;0061 302A 0316 065F 059A 0062;0061 302A 0316 065F 059A 0062;0061 302A 0316 065F 059A 0062; # (a◌֚◌̖◌〪◌ٟb; a◌〪◌̖◌ٟ◌֚b; a◌〪◌̖◌ٟ◌֚b; a◌〪◌̖◌ٟ◌֚b; a◌〪◌̖◌ٟ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC WAVY HAMZA BELOW, LATIN SMALL LETTER B
+0061 065F 059A 0316 302A 0062;0061 302A 065F 0316 059A 0062;0061 302A 065F 0316 059A 0062;0061 302A 065F 0316 059A 0062;0061 302A 065F 0316 059A 0062; # (a◌ٟ◌֚◌̖◌〪b; a◌〪◌ٟ◌̖◌֚b; a◌〪◌ٟ◌̖◌֚b; a◌〪◌ٟ◌̖◌֚b; a◌〪◌ٟ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC WAVY HAMZA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0711 0670 0652 0670 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062; # (a◌ܑ◌ٰ◌ْ◌ٰb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; ) LATIN SMALL LETTER A, SYRIAC LETTER SUPERSCRIPT ALAPH, ARABIC LETTER SUPERSCRIPT ALEF, ARABIC SUKUN, ARABIC LETTER SUPERSCRIPT ALEF, LATIN SMALL LETTER B
+0061 0670 0711 0670 0652 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062; # (a◌ٰ◌ܑ◌ٰ◌ْb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; ) LATIN SMALL LETTER A, ARABIC LETTER SUPERSCRIPT ALEF, SYRIAC LETTER SUPERSCRIPT ALAPH, ARABIC LETTER SUPERSCRIPT ALEF, ARABIC SUKUN, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06D6 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062; # (a◌̕◌̀◌֮◌ۖb; à◌֮◌ۖ◌̕b; a◌֮◌̀◌ۖ◌̕b; à◌֮◌ۖ◌̕b; a◌֮◌̀◌ۖ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA, LATIN SMALL LETTER B
+0061 06D6 0315 0300 05AE 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062; # (a◌ۖ◌̕◌̀◌֮b; a◌֮◌ۖ◌̀◌̕b; a◌֮◌ۖ◌̀◌̕b; a◌֮◌ۖ◌̀◌̕b; a◌֮◌ۖ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06D7 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062; # (a◌̕◌̀◌֮◌ۗb; à◌֮◌ۗ◌̕b; a◌֮◌̀◌ۗ◌̕b; à◌֮◌ۗ◌̕b; a◌֮◌̀◌ۗ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA, LATIN SMALL LETTER B
+0061 06D7 0315 0300 05AE 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062; # (a◌ۗ◌̕◌̀◌֮b; a◌֮◌ۗ◌̀◌̕b; a◌֮◌ۗ◌̀◌̕b; a◌֮◌ۗ◌̀◌̕b; a◌֮◌ۗ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06D8 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062; # (a◌̕◌̀◌֮◌ۘb; à◌֮◌ۘ◌̕b; a◌֮◌̀◌ۘ◌̕b; à◌֮◌ۘ◌̕b; a◌֮◌̀◌ۘ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH MEEM INITIAL FORM, LATIN SMALL LETTER B
+0061 06D8 0315 0300 05AE 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062; # (a◌ۘ◌̕◌̀◌֮b; a◌֮◌ۘ◌̀◌̕b; a◌֮◌ۘ◌̀◌̕b; a◌֮◌ۘ◌̀◌̕b; a◌֮◌ۘ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH MEEM INITIAL FORM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06D9 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062; # (a◌̕◌̀◌֮◌ۙb; à◌֮◌ۙ◌̕b; a◌֮◌̀◌ۙ◌̕b; à◌֮◌ۙ◌̕b; a◌֮◌̀◌ۙ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH LAM ALEF, LATIN SMALL LETTER B
+0061 06D9 0315 0300 05AE 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062; # (a◌ۙ◌̕◌̀◌֮b; a◌֮◌ۙ◌̀◌̕b; a◌֮◌ۙ◌̀◌̕b; a◌֮◌ۙ◌̀◌̕b; a◌֮◌ۙ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH LAM ALEF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06DA 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062; # (a◌̕◌̀◌֮◌ۚb; à◌֮◌ۚ◌̕b; a◌֮◌̀◌ۚ◌̕b; à◌֮◌ۚ◌̕b; a◌֮◌̀◌ۚ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH JEEM, LATIN SMALL LETTER B
+0061 06DA 0315 0300 05AE 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062; # (a◌ۚ◌̕◌̀◌֮b; a◌֮◌ۚ◌̀◌̕b; a◌֮◌ۚ◌̀◌̕b; a◌֮◌ۚ◌̀◌̕b; a◌֮◌ۚ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH JEEM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06DB 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062; # (a◌̕◌̀◌֮◌ۛb; à◌֮◌ۛ◌̕b; a◌֮◌̀◌ۛ◌̕b; à◌֮◌ۛ◌̕b; a◌֮◌̀◌ۛ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH THREE DOTS, LATIN SMALL LETTER B
+0061 06DB 0315 0300 05AE 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062; # (a◌ۛ◌̕◌̀◌֮b; a◌֮◌ۛ◌̀◌̕b; a◌֮◌ۛ◌̀◌̕b; a◌֮◌ۛ◌̀◌̕b; a◌֮◌ۛ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH THREE DOTS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06DC 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062; # (a◌̕◌̀◌֮◌ۜb; à◌֮◌ۜ◌̕b; a◌֮◌̀◌ۜ◌̕b; à◌֮◌ۜ◌̕b; a◌֮◌̀◌ۜ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH SEEN, LATIN SMALL LETTER B
+0061 06DC 0315 0300 05AE 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062; # (a◌ۜ◌̕◌̀◌֮b; a◌֮◌ۜ◌̀◌̕b; a◌֮◌ۜ◌̀◌̕b; a◌֮◌ۜ◌̀◌̕b; a◌֮◌ۜ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH SEEN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06DF 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062; # (a◌̕◌̀◌֮◌۟b; à◌֮◌۟◌̕b; a◌֮◌̀◌۟◌̕b; à◌֮◌۟◌̕b; a◌֮◌̀◌۟◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH ROUNDED ZERO, LATIN SMALL LETTER B
+0061 06DF 0315 0300 05AE 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062; # (a◌۟◌̕◌̀◌֮b; a◌֮◌۟◌̀◌̕b; a◌֮◌۟◌̀◌̕b; a◌֮◌۟◌̀◌̕b; a◌֮◌۟◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH ROUNDED ZERO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E0 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062; # (a◌̕◌̀◌֮◌۠b; à◌֮◌۠◌̕b; a◌֮◌̀◌۠◌̕b; à◌֮◌۠◌̕b; a◌֮◌̀◌۠◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO, LATIN SMALL LETTER B
+0061 06E0 0315 0300 05AE 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062; # (a◌۠◌̕◌̀◌֮b; a◌֮◌۠◌̀◌̕b; a◌֮◌۠◌̀◌̕b; a◌֮◌۠◌̀◌̕b; a◌֮◌۠◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E1 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062; # (a◌̕◌̀◌֮◌ۡb; à◌֮◌ۡ◌̕b; a◌֮◌̀◌ۡ◌̕b; à◌֮◌ۡ◌̕b; a◌֮◌̀◌ۡ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH DOTLESS HEAD OF KHAH, LATIN SMALL LETTER B
+0061 06E1 0315 0300 05AE 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062; # (a◌ۡ◌̕◌̀◌֮b; a◌֮◌ۡ◌̀◌̕b; a◌֮◌ۡ◌̀◌̕b; a◌֮◌ۡ◌̀◌̕b; a◌֮◌ۡ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH DOTLESS HEAD OF KHAH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E2 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062; # (a◌̕◌̀◌֮◌ۢb; à◌֮◌ۢ◌̕b; a◌֮◌̀◌ۢ◌̕b; à◌֮◌ۢ◌̕b; a◌֮◌̀◌ۢ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH MEEM ISOLATED FORM, LATIN SMALL LETTER B
+0061 06E2 0315 0300 05AE 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062; # (a◌ۢ◌̕◌̀◌֮b; a◌֮◌ۢ◌̀◌̕b; a◌֮◌ۢ◌̀◌̕b; a◌֮◌ۢ◌̀◌̕b; a◌֮◌ۢ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH MEEM ISOLATED FORM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 06E3 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062; # (a◌֚◌̖◌〪◌ۣb; a◌〪◌̖◌ۣ◌֚b; a◌〪◌̖◌ۣ◌֚b; a◌〪◌̖◌ۣ◌֚b; a◌〪◌̖◌ۣ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC SMALL LOW SEEN, LATIN SMALL LETTER B
+0061 06E3 059A 0316 302A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062; # (a◌ۣ◌֚◌̖◌〪b; a◌〪◌ۣ◌̖◌֚b; a◌〪◌ۣ◌̖◌֚b; a◌〪◌ۣ◌̖◌֚b; a◌〪◌ۣ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC SMALL LOW SEEN, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E4 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062; # (a◌̕◌̀◌֮◌ۤb; à◌֮◌ۤ◌̕b; a◌֮◌̀◌ۤ◌̕b; à◌֮◌ۤ◌̕b; a◌֮◌̀◌ۤ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH MADDA, LATIN SMALL LETTER B
+0061 06E4 0315 0300 05AE 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062; # (a◌ۤ◌̕◌̀◌֮b; a◌֮◌ۤ◌̀◌̕b; a◌֮◌ۤ◌̀◌̕b; a◌֮◌ۤ◌̀◌̕b; a◌֮◌ۤ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH MADDA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E7 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062; # (a◌̕◌̀◌֮◌ۧb; à◌֮◌ۧ◌̕b; a◌֮◌̀◌ۧ◌̕b; à◌֮◌ۧ◌̕b; a◌֮◌̀◌ۧ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH YEH, LATIN SMALL LETTER B
+0061 06E7 0315 0300 05AE 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062; # (a◌ۧ◌̕◌̀◌֮b; a◌֮◌ۧ◌̀◌̕b; a◌֮◌ۧ◌̀◌̕b; a◌֮◌ۧ◌̀◌̕b; a◌֮◌ۧ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH YEH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E8 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062; # (a◌̕◌̀◌֮◌ۨb; à◌֮◌ۨ◌̕b; a◌֮◌̀◌ۨ◌̕b; à◌֮◌ۨ◌̕b; a◌֮◌̀◌ۨ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH NOON, LATIN SMALL LETTER B
+0061 06E8 0315 0300 05AE 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062; # (a◌ۨ◌̕◌̀◌֮b; a◌֮◌ۨ◌̀◌̕b; a◌֮◌ۨ◌̀◌̕b; a◌֮◌ۨ◌̀◌̕b; a◌֮◌ۨ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH NOON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 06EA 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062; # (a◌֚◌̖◌〪◌۪b; a◌〪◌̖◌۪◌֚b; a◌〪◌̖◌۪◌֚b; a◌〪◌̖◌۪◌֚b; a◌〪◌̖◌۪◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC EMPTY CENTRE LOW STOP, LATIN SMALL LETTER B
+0061 06EA 059A 0316 302A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062; # (a◌۪◌֚◌̖◌〪b; a◌〪◌۪◌̖◌֚b; a◌〪◌۪◌̖◌֚b; a◌〪◌۪◌̖◌֚b; a◌〪◌۪◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC EMPTY CENTRE LOW STOP, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06EB 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062; # (a◌̕◌̀◌֮◌۫b; à◌֮◌۫◌̕b; a◌֮◌̀◌۫◌̕b; à◌֮◌۫◌̕b; a◌֮◌̀◌۫◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC EMPTY CENTRE HIGH STOP, LATIN SMALL LETTER B
+0061 06EB 0315 0300 05AE 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062; # (a◌۫◌̕◌̀◌֮b; a◌֮◌۫◌̀◌̕b; a◌֮◌۫◌̀◌̕b; a◌֮◌۫◌̀◌̕b; a◌֮◌۫◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC EMPTY CENTRE HIGH STOP, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06EC 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062; # (a◌̕◌̀◌֮◌۬b; à◌֮◌۬◌̕b; a◌֮◌̀◌۬◌̕b; à◌֮◌۬◌̕b; a◌֮◌̀◌۬◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE, LATIN SMALL LETTER B
+0061 06EC 0315 0300 05AE 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062; # (a◌۬◌̕◌̀◌֮b; a◌֮◌۬◌̀◌̕b; a◌֮◌۬◌̀◌̕b; a◌֮◌۬◌̀◌̕b; a◌֮◌۬◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 06ED 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062; # (a◌֚◌̖◌〪◌ۭb; a◌〪◌̖◌ۭ◌֚b; a◌〪◌̖◌ۭ◌֚b; a◌〪◌̖◌ۭ◌֚b; a◌〪◌̖◌ۭ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC SMALL LOW MEEM, LATIN SMALL LETTER B
+0061 06ED 059A 0316 302A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062; # (a◌ۭ◌֚◌̖◌〪b; a◌〪◌ۭ◌̖◌֚b; a◌〪◌ۭ◌̖◌֚b; a◌〪◌ۭ◌̖◌֚b; a◌〪◌ۭ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC SMALL LOW MEEM, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0C55 0711 0670 0711 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062; # (a◌ౕ◌ܑ◌ٰ◌ܑb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; ) LATIN SMALL LETTER A, TELUGU LENGTH MARK, SYRIAC LETTER SUPERSCRIPT ALAPH, ARABIC LETTER SUPERSCRIPT ALEF, SYRIAC LETTER SUPERSCRIPT ALAPH, LATIN SMALL LETTER B
+0061 0711 0C55 0711 0670 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062; # (a◌ܑ◌ౕ◌ܑ◌ٰb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; ) LATIN SMALL LETTER A, SYRIAC LETTER SUPERSCRIPT ALAPH, TELUGU LENGTH MARK, SYRIAC LETTER SUPERSCRIPT ALAPH, ARABIC LETTER SUPERSCRIPT ALEF, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0730 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062; # (a◌̕◌̀◌֮◌ܰb; à◌֮◌ܰ◌̕b; a◌֮◌̀◌ܰ◌̕b; à◌֮◌ܰ◌̕b; a◌֮◌̀◌ܰ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC PTHAHA ABOVE, LATIN SMALL LETTER B
+0061 0730 0315 0300 05AE 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062; # (a◌ܰ◌̕◌̀◌֮b; a◌֮◌ܰ◌̀◌̕b; a◌֮◌ܰ◌̀◌̕b; a◌֮◌ܰ◌̀◌̕b; a◌֮◌ܰ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC PTHAHA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0731 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062; # (a◌֚◌̖◌〪◌ܱb; a◌〪◌̖◌ܱ◌֚b; a◌〪◌̖◌ܱ◌֚b; a◌〪◌̖◌ܱ◌֚b; a◌〪◌̖◌ܱ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC PTHAHA BELOW, LATIN SMALL LETTER B
+0061 0731 059A 0316 302A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062; # (a◌ܱ◌֚◌̖◌〪b; a◌〪◌ܱ◌̖◌֚b; a◌〪◌ܱ◌̖◌֚b; a◌〪◌ܱ◌̖◌֚b; a◌〪◌ܱ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC PTHAHA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0732 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062; # (a◌̕◌̀◌֮◌ܲb; à◌֮◌ܲ◌̕b; a◌֮◌̀◌ܲ◌̕b; à◌֮◌ܲ◌̕b; a◌֮◌̀◌ܲ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC PTHAHA DOTTED, LATIN SMALL LETTER B
+0061 0732 0315 0300 05AE 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062; # (a◌ܲ◌̕◌̀◌֮b; a◌֮◌ܲ◌̀◌̕b; a◌֮◌ܲ◌̀◌̕b; a◌֮◌ܲ◌̀◌̕b; a◌֮◌ܲ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC PTHAHA DOTTED, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0733 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062; # (a◌̕◌̀◌֮◌ܳb; à◌֮◌ܳ◌̕b; a◌֮◌̀◌ܳ◌̕b; à◌֮◌ܳ◌̕b; a◌֮◌̀◌ܳ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC ZQAPHA ABOVE, LATIN SMALL LETTER B
+0061 0733 0315 0300 05AE 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062; # (a◌ܳ◌̕◌̀◌֮b; a◌֮◌ܳ◌̀◌̕b; a◌֮◌ܳ◌̀◌̕b; a◌֮◌ܳ◌̀◌̕b; a◌֮◌ܳ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC ZQAPHA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0734 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062; # (a◌֚◌̖◌〪◌ܴb; a◌〪◌̖◌ܴ◌֚b; a◌〪◌̖◌ܴ◌֚b; a◌〪◌̖◌ܴ◌֚b; a◌〪◌̖◌ܴ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC ZQAPHA BELOW, LATIN SMALL LETTER B
+0061 0734 059A 0316 302A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062; # (a◌ܴ◌֚◌̖◌〪b; a◌〪◌ܴ◌̖◌֚b; a◌〪◌ܴ◌̖◌֚b; a◌〪◌ܴ◌̖◌֚b; a◌〪◌ܴ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC ZQAPHA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0735 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062; # (a◌̕◌̀◌֮◌ܵb; à◌֮◌ܵ◌̕b; a◌֮◌̀◌ܵ◌̕b; à◌֮◌ܵ◌̕b; a◌֮◌̀◌ܵ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC ZQAPHA DOTTED, LATIN SMALL LETTER B
+0061 0735 0315 0300 05AE 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062; # (a◌ܵ◌̕◌̀◌֮b; a◌֮◌ܵ◌̀◌̕b; a◌֮◌ܵ◌̀◌̕b; a◌֮◌ܵ◌̀◌̕b; a◌֮◌ܵ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC ZQAPHA DOTTED, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0736 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062; # (a◌̕◌̀◌֮◌ܶb; à◌֮◌ܶ◌̕b; a◌֮◌̀◌ܶ◌̕b; à◌֮◌ܶ◌̕b; a◌֮◌̀◌ܶ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC RBASA ABOVE, LATIN SMALL LETTER B
+0061 0736 0315 0300 05AE 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062; # (a◌ܶ◌̕◌̀◌֮b; a◌֮◌ܶ◌̀◌̕b; a◌֮◌ܶ◌̀◌̕b; a◌֮◌ܶ◌̀◌̕b; a◌֮◌ܶ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC RBASA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0737 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062; # (a◌֚◌̖◌〪◌ܷb; a◌〪◌̖◌ܷ◌֚b; a◌〪◌̖◌ܷ◌֚b; a◌〪◌̖◌ܷ◌֚b; a◌〪◌̖◌ܷ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC RBASA BELOW, LATIN SMALL LETTER B
+0061 0737 059A 0316 302A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062; # (a◌ܷ◌֚◌̖◌〪b; a◌〪◌ܷ◌̖◌֚b; a◌〪◌ܷ◌̖◌֚b; a◌〪◌ܷ◌̖◌֚b; a◌〪◌ܷ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC RBASA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0738 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062; # (a◌֚◌̖◌〪◌ܸb; a◌〪◌̖◌ܸ◌֚b; a◌〪◌̖◌ܸ◌֚b; a◌〪◌̖◌ܸ◌֚b; a◌〪◌̖◌ܸ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC DOTTED ZLAMA HORIZONTAL, LATIN SMALL LETTER B
+0061 0738 059A 0316 302A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062; # (a◌ܸ◌֚◌̖◌〪b; a◌〪◌ܸ◌̖◌֚b; a◌〪◌ܸ◌̖◌֚b; a◌〪◌ܸ◌̖◌֚b; a◌〪◌ܸ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC DOTTED ZLAMA HORIZONTAL, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0739 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062; # (a◌֚◌̖◌〪◌ܹb; a◌〪◌̖◌ܹ◌֚b; a◌〪◌̖◌ܹ◌֚b; a◌〪◌̖◌ܹ◌֚b; a◌〪◌̖◌ܹ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC DOTTED ZLAMA ANGULAR, LATIN SMALL LETTER B
+0061 0739 059A 0316 302A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062; # (a◌ܹ◌֚◌̖◌〪b; a◌〪◌ܹ◌̖◌֚b; a◌〪◌ܹ◌̖◌֚b; a◌〪◌ܹ◌̖◌֚b; a◌〪◌ܹ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC DOTTED ZLAMA ANGULAR, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 073A 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062; # (a◌̕◌̀◌֮◌ܺb; à◌֮◌ܺ◌̕b; a◌֮◌̀◌ܺ◌̕b; à◌֮◌ܺ◌̕b; a◌֮◌̀◌ܺ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC HBASA ABOVE, LATIN SMALL LETTER B
+0061 073A 0315 0300 05AE 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062; # (a◌ܺ◌̕◌̀◌֮b; a◌֮◌ܺ◌̀◌̕b; a◌֮◌ܺ◌̀◌̕b; a◌֮◌ܺ◌̀◌̕b; a◌֮◌ܺ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC HBASA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 073B 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062; # (a◌֚◌̖◌〪◌ܻb; a◌〪◌̖◌ܻ◌֚b; a◌〪◌̖◌ܻ◌֚b; a◌〪◌̖◌ܻ◌֚b; a◌〪◌̖◌ܻ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC HBASA BELOW, LATIN SMALL LETTER B
+0061 073B 059A 0316 302A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062; # (a◌ܻ◌֚◌̖◌〪b; a◌〪◌ܻ◌̖◌֚b; a◌〪◌ܻ◌̖◌֚b; a◌〪◌ܻ◌̖◌֚b; a◌〪◌ܻ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC HBASA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 073C 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062; # (a◌֚◌̖◌〪◌ܼb; a◌〪◌̖◌ܼ◌֚b; a◌〪◌̖◌ܼ◌֚b; a◌〪◌̖◌ܼ◌֚b; a◌〪◌̖◌ܼ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC HBASA-ESASA DOTTED, LATIN SMALL LETTER B
+0061 073C 059A 0316 302A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062; # (a◌ܼ◌֚◌̖◌〪b; a◌〪◌ܼ◌̖◌֚b; a◌〪◌ܼ◌̖◌֚b; a◌〪◌ܼ◌̖◌֚b; a◌〪◌ܼ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC HBASA-ESASA DOTTED, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 073D 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062; # (a◌̕◌̀◌֮◌ܽb; à◌֮◌ܽ◌̕b; a◌֮◌̀◌ܽ◌̕b; à◌֮◌ܽ◌̕b; a◌֮◌̀◌ܽ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC ESASA ABOVE, LATIN SMALL LETTER B
+0061 073D 0315 0300 05AE 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062; # (a◌ܽ◌̕◌̀◌֮b; a◌֮◌ܽ◌̀◌̕b; a◌֮◌ܽ◌̀◌̕b; a◌֮◌ܽ◌̀◌̕b; a◌֮◌ܽ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC ESASA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 073E 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062; # (a◌֚◌̖◌〪◌ܾb; a◌〪◌̖◌ܾ◌֚b; a◌〪◌̖◌ܾ◌֚b; a◌〪◌̖◌ܾ◌֚b; a◌〪◌̖◌ܾ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC ESASA BELOW, LATIN SMALL LETTER B
+0061 073E 059A 0316 302A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062; # (a◌ܾ◌֚◌̖◌〪b; a◌〪◌ܾ◌̖◌֚b; a◌〪◌ܾ◌̖◌֚b; a◌〪◌ܾ◌̖◌֚b; a◌〪◌ܾ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC ESASA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 073F 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062; # (a◌̕◌̀◌֮◌ܿb; à◌֮◌ܿ◌̕b; a◌֮◌̀◌ܿ◌̕b; à◌֮◌ܿ◌̕b; a◌֮◌̀◌ܿ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC RWAHA, LATIN SMALL LETTER B
+0061 073F 0315 0300 05AE 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062; # (a◌ܿ◌̕◌̀◌֮b; a◌֮◌ܿ◌̀◌̕b; a◌֮◌ܿ◌̀◌̕b; a◌֮◌ܿ◌̀◌̕b; a◌֮◌ܿ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC RWAHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0740 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062; # (a◌̕◌̀◌֮◌݀b; à◌֮◌݀◌̕b; a◌֮◌̀◌݀◌̕b; à◌֮◌݀◌̕b; a◌֮◌̀◌݀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC FEMININE DOT, LATIN SMALL LETTER B
+0061 0740 0315 0300 05AE 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062; # (a◌݀◌̕◌̀◌֮b; a◌֮◌݀◌̀◌̕b; a◌֮◌݀◌̀◌̕b; a◌֮◌݀◌̀◌̕b; a◌֮◌݀◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC FEMININE DOT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0741 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062; # (a◌̕◌̀◌֮◌Ýb; à◌֮◌Ý◌̕b; a◌֮◌̀◌Ý◌̕b; à◌֮◌Ý◌̕b; a◌֮◌̀◌Ý◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC QUSHSHAYA, LATIN SMALL LETTER B
+0061 0741 0315 0300 05AE 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062; # (aâ—ŒÝ◌̕◌̀◌֮b; a◌֮◌Ý◌̀◌̕b; a◌֮◌Ý◌̀◌̕b; a◌֮◌Ý◌̀◌̕b; a◌֮◌Ý◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC QUSHSHAYA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0742 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062; # (a◌֚◌̖◌〪◌݂b; a◌〪◌̖◌݂◌֚b; a◌〪◌̖◌݂◌֚b; a◌〪◌̖◌݂◌֚b; a◌〪◌̖◌݂◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC RUKKAKHA, LATIN SMALL LETTER B
+0061 0742 059A 0316 302A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062; # (a◌݂◌֚◌̖◌〪b; a◌〪◌݂◌̖◌֚b; a◌〪◌݂◌̖◌֚b; a◌〪◌݂◌̖◌֚b; a◌〪◌݂◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC RUKKAKHA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0743 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062; # (a◌̕◌̀◌֮◌݃b; à◌֮◌݃◌̕b; a◌֮◌̀◌݃◌̕b; à◌֮◌݃◌̕b; a◌֮◌̀◌݃◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC TWO VERTICAL DOTS ABOVE, LATIN SMALL LETTER B
+0061 0743 0315 0300 05AE 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062; # (a◌݃◌̕◌̀◌֮b; a◌֮◌݃◌̀◌̕b; a◌֮◌݃◌̀◌̕b; a◌֮◌݃◌̀◌̕b; a◌֮◌݃◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC TWO VERTICAL DOTS ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0744 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062; # (a◌֚◌̖◌〪◌݄b; a◌〪◌̖◌݄◌֚b; a◌〪◌̖◌݄◌֚b; a◌〪◌̖◌݄◌֚b; a◌〪◌̖◌݄◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC TWO VERTICAL DOTS BELOW, LATIN SMALL LETTER B
+0061 0744 059A 0316 302A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062; # (a◌݄◌֚◌̖◌〪b; a◌〪◌݄◌̖◌֚b; a◌〪◌݄◌̖◌֚b; a◌〪◌݄◌̖◌֚b; a◌〪◌݄◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC TWO VERTICAL DOTS BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0745 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062; # (a◌̕◌̀◌֮◌݅b; à◌֮◌݅◌̕b; a◌֮◌̀◌݅◌̕b; à◌֮◌݅◌̕b; a◌֮◌̀◌݅◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC THREE DOTS ABOVE, LATIN SMALL LETTER B
+0061 0745 0315 0300 05AE 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062; # (a◌݅◌̕◌̀◌֮b; a◌֮◌݅◌̀◌̕b; a◌֮◌݅◌̀◌̕b; a◌֮◌݅◌̀◌̕b; a◌֮◌݅◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC THREE DOTS ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0746 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062; # (a◌֚◌̖◌〪◌݆b; a◌〪◌̖◌݆◌֚b; a◌〪◌̖◌݆◌֚b; a◌〪◌̖◌݆◌֚b; a◌〪◌̖◌݆◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC THREE DOTS BELOW, LATIN SMALL LETTER B
+0061 0746 059A 0316 302A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062; # (a◌݆◌֚◌̖◌〪b; a◌〪◌݆◌̖◌֚b; a◌〪◌݆◌̖◌֚b; a◌〪◌݆◌̖◌֚b; a◌〪◌݆◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC THREE DOTS BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0747 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062; # (a◌̕◌̀◌֮◌݇b; à◌֮◌݇◌̕b; a◌֮◌̀◌݇◌̕b; à◌֮◌݇◌̕b; a◌֮◌̀◌݇◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC OBLIQUE LINE ABOVE, LATIN SMALL LETTER B
+0061 0747 0315 0300 05AE 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062; # (a◌݇◌̕◌̀◌֮b; a◌֮◌݇◌̀◌̕b; a◌֮◌݇◌̀◌̕b; a◌֮◌݇◌̀◌̕b; a◌֮◌݇◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC OBLIQUE LINE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0748 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062; # (a◌֚◌̖◌〪◌݈b; a◌〪◌̖◌݈◌֚b; a◌〪◌̖◌݈◌֚b; a◌〪◌̖◌݈◌֚b; a◌〪◌̖◌݈◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC OBLIQUE LINE BELOW, LATIN SMALL LETTER B
+0061 0748 059A 0316 302A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062; # (a◌݈◌֚◌̖◌〪b; a◌〪◌݈◌̖◌֚b; a◌〪◌݈◌̖◌֚b; a◌〪◌݈◌̖◌֚b; a◌〪◌݈◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC OBLIQUE LINE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0749 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062; # (a◌̕◌̀◌֮◌݉b; à◌֮◌݉◌̕b; a◌֮◌̀◌݉◌̕b; à◌֮◌݉◌̕b; a◌֮◌̀◌݉◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC MUSIC, LATIN SMALL LETTER B
+0061 0749 0315 0300 05AE 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062; # (a◌݉◌̕◌̀◌֮b; a◌֮◌݉◌̀◌̕b; a◌֮◌݉◌̀◌̕b; a◌֮◌݉◌̀◌̕b; a◌֮◌݉◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC MUSIC, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 074A 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062; # (a◌̕◌̀◌֮◌݊b; à◌֮◌݊◌̕b; a◌֮◌̀◌݊◌̕b; à◌֮◌݊◌̕b; a◌֮◌̀◌݊◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC BARREKH, LATIN SMALL LETTER B
+0061 074A 0315 0300 05AE 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062; # (a◌݊◌̕◌̀◌֮b; a◌֮◌݊◌̀◌̕b; a◌֮◌݊◌̀◌̕b; a◌֮◌݊◌̀◌̕b; a◌֮◌݊◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC BARREKH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07EB 0062;00E0 05AE 07EB 0315 0062;0061 05AE 0300 07EB 0315 0062;00E0 05AE 07EB 0315 0062;0061 05AE 0300 07EB 0315 0062; # (a◌̕◌̀◌֮◌߫b; à◌֮◌߫◌̕b; a◌֮◌̀◌߫◌̕b; à◌֮◌߫◌̕b; a◌֮◌̀◌߫◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING SHORT HIGH TONE, LATIN SMALL LETTER B
+0061 07EB 0315 0300 05AE 0062;0061 05AE 07EB 0300 0315 0062;0061 05AE 07EB 0300 0315 0062;0061 05AE 07EB 0300 0315 0062;0061 05AE 07EB 0300 0315 0062; # (a◌߫◌̕◌̀◌֮b; a◌֮◌߫◌̀◌̕b; a◌֮◌߫◌̀◌̕b; a◌֮◌߫◌̀◌̕b; a◌֮◌߫◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING SHORT HIGH TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07EC 0062;00E0 05AE 07EC 0315 0062;0061 05AE 0300 07EC 0315 0062;00E0 05AE 07EC 0315 0062;0061 05AE 0300 07EC 0315 0062; # (a◌̕◌̀◌֮◌߬b; à◌֮◌߬◌̕b; a◌֮◌̀◌߬◌̕b; à◌֮◌߬◌̕b; a◌֮◌̀◌߬◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING SHORT LOW TONE, LATIN SMALL LETTER B
+0061 07EC 0315 0300 05AE 0062;0061 05AE 07EC 0300 0315 0062;0061 05AE 07EC 0300 0315 0062;0061 05AE 07EC 0300 0315 0062;0061 05AE 07EC 0300 0315 0062; # (a◌߬◌̕◌̀◌֮b; a◌֮◌߬◌̀◌̕b; a◌֮◌߬◌̀◌̕b; a◌֮◌߬◌̀◌̕b; a◌֮◌߬◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING SHORT LOW TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07ED 0062;00E0 05AE 07ED 0315 0062;0061 05AE 0300 07ED 0315 0062;00E0 05AE 07ED 0315 0062;0061 05AE 0300 07ED 0315 0062; # (a◌̕◌̀◌֮◌߭b; à◌֮◌߭◌̕b; a◌֮◌̀◌߭◌̕b; à◌֮◌߭◌̕b; a◌֮◌̀◌߭◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING SHORT RISING TONE, LATIN SMALL LETTER B
+0061 07ED 0315 0300 05AE 0062;0061 05AE 07ED 0300 0315 0062;0061 05AE 07ED 0300 0315 0062;0061 05AE 07ED 0300 0315 0062;0061 05AE 07ED 0300 0315 0062; # (a◌߭◌̕◌̀◌֮b; a◌֮◌߭◌̀◌̕b; a◌֮◌߭◌̀◌̕b; a◌֮◌߭◌̀◌̕b; a◌֮◌߭◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING SHORT RISING TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07EE 0062;00E0 05AE 07EE 0315 0062;0061 05AE 0300 07EE 0315 0062;00E0 05AE 07EE 0315 0062;0061 05AE 0300 07EE 0315 0062; # (a◌̕◌̀◌֮◌߮b; à◌֮◌߮◌̕b; a◌֮◌̀◌߮◌̕b; à◌֮◌߮◌̕b; a◌֮◌̀◌߮◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING LONG DESCENDING TONE, LATIN SMALL LETTER B
+0061 07EE 0315 0300 05AE 0062;0061 05AE 07EE 0300 0315 0062;0061 05AE 07EE 0300 0315 0062;0061 05AE 07EE 0300 0315 0062;0061 05AE 07EE 0300 0315 0062; # (a◌߮◌̕◌̀◌֮b; a◌֮◌߮◌̀◌̕b; a◌֮◌߮◌̀◌̕b; a◌֮◌߮◌̀◌̕b; a◌֮◌߮◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING LONG DESCENDING TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07EF 0062;00E0 05AE 07EF 0315 0062;0061 05AE 0300 07EF 0315 0062;00E0 05AE 07EF 0315 0062;0061 05AE 0300 07EF 0315 0062; # (a◌̕◌̀◌֮◌߯b; à◌֮◌߯◌̕b; a◌֮◌̀◌߯◌̕b; à◌֮◌߯◌̕b; a◌֮◌̀◌߯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING LONG HIGH TONE, LATIN SMALL LETTER B
+0061 07EF 0315 0300 05AE 0062;0061 05AE 07EF 0300 0315 0062;0061 05AE 07EF 0300 0315 0062;0061 05AE 07EF 0300 0315 0062;0061 05AE 07EF 0300 0315 0062; # (a◌߯◌̕◌̀◌֮b; a◌֮◌߯◌̀◌̕b; a◌֮◌߯◌̀◌̕b; a◌֮◌߯◌̀◌̕b; a◌֮◌߯◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING LONG HIGH TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07F0 0062;00E0 05AE 07F0 0315 0062;0061 05AE 0300 07F0 0315 0062;00E0 05AE 07F0 0315 0062;0061 05AE 0300 07F0 0315 0062; # (a◌̕◌̀◌֮◌߰b; à◌֮◌߰◌̕b; a◌֮◌̀◌߰◌̕b; à◌֮◌߰◌̕b; a◌֮◌̀◌߰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING LONG LOW TONE, LATIN SMALL LETTER B
+0061 07F0 0315 0300 05AE 0062;0061 05AE 07F0 0300 0315 0062;0061 05AE 07F0 0300 0315 0062;0061 05AE 07F0 0300 0315 0062;0061 05AE 07F0 0300 0315 0062; # (a◌߰◌̕◌̀◌֮b; a◌֮◌߰◌̀◌̕b; a◌֮◌߰◌̀◌̕b; a◌֮◌߰◌̀◌̕b; a◌֮◌߰◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING LONG LOW TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07F1 0062;00E0 05AE 07F1 0315 0062;0061 05AE 0300 07F1 0315 0062;00E0 05AE 07F1 0315 0062;0061 05AE 0300 07F1 0315 0062; # (a◌̕◌̀◌֮◌߱b; à◌֮◌߱◌̕b; a◌֮◌̀◌߱◌̕b; à◌֮◌߱◌̕b; a◌֮◌̀◌߱◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING LONG RISING TONE, LATIN SMALL LETTER B
+0061 07F1 0315 0300 05AE 0062;0061 05AE 07F1 0300 0315 0062;0061 05AE 07F1 0300 0315 0062;0061 05AE 07F1 0300 0315 0062;0061 05AE 07F1 0300 0315 0062; # (a◌߱◌̕◌̀◌֮b; a◌֮◌߱◌̀◌̕b; a◌֮◌߱◌̀◌̕b; a◌֮◌߱◌̀◌̕b; a◌֮◌߱◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING LONG RISING TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 07F2 0062;0061 302A 0316 07F2 059A 0062;0061 302A 0316 07F2 059A 0062;0061 302A 0316 07F2 059A 0062;0061 302A 0316 07F2 059A 0062; # (a◌֚◌̖◌〪◌߲b; a◌〪◌̖◌߲◌֚b; a◌〪◌̖◌߲◌֚b; a◌〪◌̖◌߲◌֚b; a◌〪◌̖◌߲◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, NKO COMBINING NASALIZATION MARK, LATIN SMALL LETTER B
+0061 07F2 059A 0316 302A 0062;0061 302A 07F2 0316 059A 0062;0061 302A 07F2 0316 059A 0062;0061 302A 07F2 0316 059A 0062;0061 302A 07F2 0316 059A 0062; # (a◌߲◌֚◌̖◌〪b; a◌〪◌߲◌̖◌֚b; a◌〪◌߲◌̖◌֚b; a◌〪◌߲◌̖◌֚b; a◌〪◌߲◌̖◌֚b; ) LATIN SMALL LETTER A, NKO COMBINING NASALIZATION MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07F3 0062;00E0 05AE 07F3 0315 0062;0061 05AE 0300 07F3 0315 0062;00E0 05AE 07F3 0315 0062;0061 05AE 0300 07F3 0315 0062; # (a◌̕◌̀◌֮◌߳b; à◌֮◌߳◌̕b; a◌֮◌̀◌߳◌̕b; à◌֮◌߳◌̕b; a◌֮◌̀◌߳◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING DOUBLE DOT ABOVE, LATIN SMALL LETTER B
+0061 07F3 0315 0300 05AE 0062;0061 05AE 07F3 0300 0315 0062;0061 05AE 07F3 0300 0315 0062;0061 05AE 07F3 0300 0315 0062;0061 05AE 07F3 0300 0315 0062; # (a◌߳◌̕◌̀◌֮b; a◌֮◌߳◌̀◌̕b; a◌֮◌߳◌̀◌̕b; a◌֮◌߳◌̀◌̕b; a◌֮◌߳◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING DOUBLE DOT ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0816 0062;00E0 05AE 0816 0315 0062;0061 05AE 0300 0816 0315 0062;00E0 05AE 0816 0315 0062;0061 05AE 0300 0816 0315 0062; # (a◌̕◌̀◌֮◌ࠖb; à◌֮◌ࠖ◌̕b; a◌֮◌̀◌ࠖ◌̕b; à◌֮◌ࠖ◌̕b; a◌֮◌̀◌ࠖ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN MARK IN, LATIN SMALL LETTER B
+0061 0816 0315 0300 05AE 0062;0061 05AE 0816 0300 0315 0062;0061 05AE 0816 0300 0315 0062;0061 05AE 0816 0300 0315 0062;0061 05AE 0816 0300 0315 0062; # (a◌ࠖ◌̕◌̀◌֮b; a◌֮◌ࠖ◌̀◌̕b; a◌֮◌ࠖ◌̀◌̕b; a◌֮◌ࠖ◌̀◌̕b; a◌֮◌ࠖ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN MARK IN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0817 0062;00E0 05AE 0817 0315 0062;0061 05AE 0300 0817 0315 0062;00E0 05AE 0817 0315 0062;0061 05AE 0300 0817 0315 0062; # (a◌̕◌̀◌֮◌ࠗb; à◌֮◌ࠗ◌̕b; a◌֮◌̀◌ࠗ◌̕b; à◌֮◌ࠗ◌̕b; a◌֮◌̀◌ࠗ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN MARK IN-ALAF, LATIN SMALL LETTER B
+0061 0817 0315 0300 05AE 0062;0061 05AE 0817 0300 0315 0062;0061 05AE 0817 0300 0315 0062;0061 05AE 0817 0300 0315 0062;0061 05AE 0817 0300 0315 0062; # (a◌ࠗ◌̕◌̀◌֮b; a◌֮◌ࠗ◌̀◌̕b; a◌֮◌ࠗ◌̀◌̕b; a◌֮◌ࠗ◌̀◌̕b; a◌֮◌ࠗ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN MARK IN-ALAF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0818 0062;00E0 05AE 0818 0315 0062;0061 05AE 0300 0818 0315 0062;00E0 05AE 0818 0315 0062;0061 05AE 0300 0818 0315 0062; # (a◌̕◌̀◌֮◌࠘b; à◌֮◌࠘◌̕b; a◌֮◌̀◌࠘◌̕b; à◌֮◌࠘◌̕b; a◌֮◌̀◌࠘◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN MARK OCCLUSION, LATIN SMALL LETTER B
+0061 0818 0315 0300 05AE 0062;0061 05AE 0818 0300 0315 0062;0061 05AE 0818 0300 0315 0062;0061 05AE 0818 0300 0315 0062;0061 05AE 0818 0300 0315 0062; # (a◌࠘◌̕◌̀◌֮b; a◌֮◌࠘◌̀◌̕b; a◌֮◌࠘◌̀◌̕b; a◌֮◌࠘◌̀◌̕b; a◌֮◌࠘◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN MARK OCCLUSION, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0819 0062;00E0 05AE 0819 0315 0062;0061 05AE 0300 0819 0315 0062;00E0 05AE 0819 0315 0062;0061 05AE 0300 0819 0315 0062; # (a◌̕◌̀◌֮◌࠙b; à◌֮◌࠙◌̕b; a◌֮◌̀◌࠙◌̕b; à◌֮◌࠙◌̕b; a◌֮◌̀◌࠙◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN MARK DAGESH, LATIN SMALL LETTER B
+0061 0819 0315 0300 05AE 0062;0061 05AE 0819 0300 0315 0062;0061 05AE 0819 0300 0315 0062;0061 05AE 0819 0300 0315 0062;0061 05AE 0819 0300 0315 0062; # (a◌࠙◌̕◌̀◌֮b; a◌֮◌࠙◌̀◌̕b; a◌֮◌࠙◌̀◌̕b; a◌֮◌࠙◌̀◌̕b; a◌֮◌࠙◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN MARK DAGESH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 081B 0062;00E0 05AE 081B 0315 0062;0061 05AE 0300 081B 0315 0062;00E0 05AE 081B 0315 0062;0061 05AE 0300 081B 0315 0062; # (a◌̕◌̀◌֮◌ࠛb; à◌֮◌ࠛ◌̕b; a◌֮◌̀◌ࠛ◌̕b; à◌֮◌ࠛ◌̕b; a◌֮◌̀◌ࠛ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN MARK EPENTHETIC YUT, LATIN SMALL LETTER B
+0061 081B 0315 0300 05AE 0062;0061 05AE 081B 0300 0315 0062;0061 05AE 081B 0300 0315 0062;0061 05AE 081B 0300 0315 0062;0061 05AE 081B 0300 0315 0062; # (a◌ࠛ◌̕◌̀◌֮b; a◌֮◌ࠛ◌̀◌̕b; a◌֮◌ࠛ◌̀◌̕b; a◌֮◌ࠛ◌̀◌̕b; a◌֮◌ࠛ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN MARK EPENTHETIC YUT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 081C 0062;00E0 05AE 081C 0315 0062;0061 05AE 0300 081C 0315 0062;00E0 05AE 081C 0315 0062;0061 05AE 0300 081C 0315 0062; # (a◌̕◌̀◌֮◌ࠜb; à◌֮◌ࠜ◌̕b; a◌֮◌̀◌ࠜ◌̕b; à◌֮◌ࠜ◌̕b; a◌֮◌̀◌ࠜ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN LONG E, LATIN SMALL LETTER B
+0061 081C 0315 0300 05AE 0062;0061 05AE 081C 0300 0315 0062;0061 05AE 081C 0300 0315 0062;0061 05AE 081C 0300 0315 0062;0061 05AE 081C 0300 0315 0062; # (a◌ࠜ◌̕◌̀◌֮b; a◌֮◌ࠜ◌̀◌̕b; a◌֮◌ࠜ◌̀◌̕b; a◌֮◌ࠜ◌̀◌̕b; a◌֮◌ࠜ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN LONG E, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 081D 0062;00E0 05AE 081D 0315 0062;0061 05AE 0300 081D 0315 0062;00E0 05AE 081D 0315 0062;0061 05AE 0300 081D 0315 0062; # (a◌̕◌̀◌֮◌à b; à◌֮◌à â—ŒÌ•b; a◌֮◌̀◌à â—ŒÌ•b; à◌֮◌à â—ŒÌ•b; a◌֮◌̀◌à â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN E, LATIN SMALL LETTER B
+0061 081D 0315 0300 05AE 0062;0061 05AE 081D 0300 0315 0062;0061 05AE 081D 0300 0315 0062;0061 05AE 081D 0300 0315 0062;0061 05AE 081D 0300 0315 0062; # (aâ—Œà â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌à â—ŒÌ€â—ŒÌ•b; a◌֮◌à â—ŒÌ€â—ŒÌ•b; a◌֮◌à â—ŒÌ€â—ŒÌ•b; a◌֮◌à â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN E, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 081E 0062;00E0 05AE 081E 0315 0062;0061 05AE 0300 081E 0315 0062;00E0 05AE 081E 0315 0062;0061 05AE 0300 081E 0315 0062; # (a◌̕◌̀◌֮◌ࠞb; à◌֮◌ࠞ◌̕b; a◌֮◌̀◌ࠞ◌̕b; à◌֮◌ࠞ◌̕b; a◌֮◌̀◌ࠞ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN OVERLONG AA, LATIN SMALL LETTER B
+0061 081E 0315 0300 05AE 0062;0061 05AE 081E 0300 0315 0062;0061 05AE 081E 0300 0315 0062;0061 05AE 081E 0300 0315 0062;0061 05AE 081E 0300 0315 0062; # (a◌ࠞ◌̕◌̀◌֮b; a◌֮◌ࠞ◌̀◌̕b; a◌֮◌ࠞ◌̀◌̕b; a◌֮◌ࠞ◌̀◌̕b; a◌֮◌ࠞ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN OVERLONG AA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 081F 0062;00E0 05AE 081F 0315 0062;0061 05AE 0300 081F 0315 0062;00E0 05AE 081F 0315 0062;0061 05AE 0300 081F 0315 0062; # (a◌̕◌̀◌֮◌ࠟb; à◌֮◌ࠟ◌̕b; a◌֮◌̀◌ࠟ◌̕b; à◌֮◌ࠟ◌̕b; a◌֮◌̀◌ࠟ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN LONG AA, LATIN SMALL LETTER B
+0061 081F 0315 0300 05AE 0062;0061 05AE 081F 0300 0315 0062;0061 05AE 081F 0300 0315 0062;0061 05AE 081F 0300 0315 0062;0061 05AE 081F 0300 0315 0062; # (a◌ࠟ◌̕◌̀◌֮b; a◌֮◌ࠟ◌̀◌̕b; a◌֮◌ࠟ◌̀◌̕b; a◌֮◌ࠟ◌̀◌̕b; a◌֮◌ࠟ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN LONG AA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0820 0062;00E0 05AE 0820 0315 0062;0061 05AE 0300 0820 0315 0062;00E0 05AE 0820 0315 0062;0061 05AE 0300 0820 0315 0062; # (a◌̕◌̀◌֮◌ࠠb; à◌֮◌ࠠ◌̕b; a◌֮◌̀◌ࠠ◌̕b; à◌֮◌ࠠ◌̕b; a◌֮◌̀◌ࠠ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0820 0315 0300 05AE 0062;0061 05AE 0820 0300 0315 0062;0061 05AE 0820 0300 0315 0062;0061 05AE 0820 0300 0315 0062;0061 05AE 0820 0300 0315 0062; # (a◌ࠠ◌̕◌̀◌֮b; a◌֮◌ࠠ◌̀◌̕b; a◌֮◌ࠠ◌̀◌̕b; a◌֮◌ࠠ◌̀◌̕b; a◌֮◌ࠠ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN AA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0821 0062;00E0 05AE 0821 0315 0062;0061 05AE 0300 0821 0315 0062;00E0 05AE 0821 0315 0062;0061 05AE 0300 0821 0315 0062; # (a◌̕◌̀◌֮◌ࠡb; à◌֮◌ࠡ◌̕b; a◌֮◌̀◌ࠡ◌̕b; à◌֮◌ࠡ◌̕b; a◌֮◌̀◌ࠡ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN OVERLONG A, LATIN SMALL LETTER B
+0061 0821 0315 0300 05AE 0062;0061 05AE 0821 0300 0315 0062;0061 05AE 0821 0300 0315 0062;0061 05AE 0821 0300 0315 0062;0061 05AE 0821 0300 0315 0062; # (a◌ࠡ◌̕◌̀◌֮b; a◌֮◌ࠡ◌̀◌̕b; a◌֮◌ࠡ◌̀◌̕b; a◌֮◌ࠡ◌̀◌̕b; a◌֮◌ࠡ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN OVERLONG A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0822 0062;00E0 05AE 0822 0315 0062;0061 05AE 0300 0822 0315 0062;00E0 05AE 0822 0315 0062;0061 05AE 0300 0822 0315 0062; # (a◌̕◌̀◌֮◌ࠢb; à◌֮◌ࠢ◌̕b; a◌֮◌̀◌ࠢ◌̕b; à◌֮◌ࠢ◌̕b; a◌֮◌̀◌ࠢ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN LONG A, LATIN SMALL LETTER B
+0061 0822 0315 0300 05AE 0062;0061 05AE 0822 0300 0315 0062;0061 05AE 0822 0300 0315 0062;0061 05AE 0822 0300 0315 0062;0061 05AE 0822 0300 0315 0062; # (a◌ࠢ◌̕◌̀◌֮b; a◌֮◌ࠢ◌̀◌̕b; a◌֮◌ࠢ◌̀◌̕b; a◌֮◌ࠢ◌̀◌̕b; a◌֮◌ࠢ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN LONG A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0823 0062;00E0 05AE 0823 0315 0062;0061 05AE 0300 0823 0315 0062;00E0 05AE 0823 0315 0062;0061 05AE 0300 0823 0315 0062; # (a◌̕◌̀◌֮◌ࠣb; à◌֮◌ࠣ◌̕b; a◌֮◌̀◌ࠣ◌̕b; à◌֮◌ࠣ◌̕b; a◌֮◌̀◌ࠣ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN A, LATIN SMALL LETTER B
+0061 0823 0315 0300 05AE 0062;0061 05AE 0823 0300 0315 0062;0061 05AE 0823 0300 0315 0062;0061 05AE 0823 0300 0315 0062;0061 05AE 0823 0300 0315 0062; # (a◌ࠣ◌̕◌̀◌֮b; a◌֮◌ࠣ◌̀◌̕b; a◌֮◌ࠣ◌̀◌̕b; a◌֮◌ࠣ◌̀◌̕b; a◌֮◌ࠣ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0825 0062;00E0 05AE 0825 0315 0062;0061 05AE 0300 0825 0315 0062;00E0 05AE 0825 0315 0062;0061 05AE 0300 0825 0315 0062; # (a◌̕◌̀◌֮◌ࠥb; à◌֮◌ࠥ◌̕b; a◌֮◌̀◌ࠥ◌̕b; à◌֮◌ࠥ◌̕b; a◌֮◌̀◌ࠥ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN SHORT A, LATIN SMALL LETTER B
+0061 0825 0315 0300 05AE 0062;0061 05AE 0825 0300 0315 0062;0061 05AE 0825 0300 0315 0062;0061 05AE 0825 0300 0315 0062;0061 05AE 0825 0300 0315 0062; # (a◌ࠥ◌̕◌̀◌֮b; a◌֮◌ࠥ◌̀◌̕b; a◌֮◌ࠥ◌̀◌̕b; a◌֮◌ࠥ◌̀◌̕b; a◌֮◌ࠥ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN SHORT A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0826 0062;00E0 05AE 0826 0315 0062;0061 05AE 0300 0826 0315 0062;00E0 05AE 0826 0315 0062;0061 05AE 0300 0826 0315 0062; # (a◌̕◌̀◌֮◌ࠦb; à◌֮◌ࠦ◌̕b; a◌֮◌̀◌ࠦ◌̕b; à◌֮◌ࠦ◌̕b; a◌֮◌̀◌ࠦ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN LONG U, LATIN SMALL LETTER B
+0061 0826 0315 0300 05AE 0062;0061 05AE 0826 0300 0315 0062;0061 05AE 0826 0300 0315 0062;0061 05AE 0826 0300 0315 0062;0061 05AE 0826 0300 0315 0062; # (a◌ࠦ◌̕◌̀◌֮b; a◌֮◌ࠦ◌̀◌̕b; a◌֮◌ࠦ◌̀◌̕b; a◌֮◌ࠦ◌̀◌̕b; a◌֮◌ࠦ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN LONG U, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0827 0062;00E0 05AE 0827 0315 0062;0061 05AE 0300 0827 0315 0062;00E0 05AE 0827 0315 0062;0061 05AE 0300 0827 0315 0062; # (a◌̕◌̀◌֮◌ࠧb; à◌֮◌ࠧ◌̕b; a◌֮◌̀◌ࠧ◌̕b; à◌֮◌ࠧ◌̕b; a◌֮◌̀◌ࠧ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0827 0315 0300 05AE 0062;0061 05AE 0827 0300 0315 0062;0061 05AE 0827 0300 0315 0062;0061 05AE 0827 0300 0315 0062;0061 05AE 0827 0300 0315 0062; # (a◌ࠧ◌̕◌̀◌֮b; a◌֮◌ࠧ◌̀◌̕b; a◌֮◌ࠧ◌̀◌̕b; a◌֮◌ࠧ◌̀◌̕b; a◌֮◌ࠧ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN U, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0829 0062;00E0 05AE 0829 0315 0062;0061 05AE 0300 0829 0315 0062;00E0 05AE 0829 0315 0062;0061 05AE 0300 0829 0315 0062; # (a◌̕◌̀◌֮◌ࠩb; à◌֮◌ࠩ◌̕b; a◌֮◌̀◌ࠩ◌̕b; à◌֮◌ࠩ◌̕b; a◌֮◌̀◌ࠩ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN LONG I, LATIN SMALL LETTER B
+0061 0829 0315 0300 05AE 0062;0061 05AE 0829 0300 0315 0062;0061 05AE 0829 0300 0315 0062;0061 05AE 0829 0300 0315 0062;0061 05AE 0829 0300 0315 0062; # (a◌ࠩ◌̕◌̀◌֮b; a◌֮◌ࠩ◌̀◌̕b; a◌֮◌ࠩ◌̀◌̕b; a◌֮◌ࠩ◌̀◌̕b; a◌֮◌ࠩ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN LONG I, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 082A 0062;00E0 05AE 082A 0315 0062;0061 05AE 0300 082A 0315 0062;00E0 05AE 082A 0315 0062;0061 05AE 0300 082A 0315 0062; # (a◌̕◌̀◌֮◌ࠪb; à◌֮◌ࠪ◌̕b; a◌֮◌̀◌ࠪ◌̕b; à◌֮◌ࠪ◌̕b; a◌֮◌̀◌ࠪ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN I, LATIN SMALL LETTER B
+0061 082A 0315 0300 05AE 0062;0061 05AE 082A 0300 0315 0062;0061 05AE 082A 0300 0315 0062;0061 05AE 082A 0300 0315 0062;0061 05AE 082A 0300 0315 0062; # (a◌ࠪ◌̕◌̀◌֮b; a◌֮◌ࠪ◌̀◌̕b; a◌֮◌ࠪ◌̀◌̕b; a◌֮◌ࠪ◌̀◌̕b; a◌֮◌ࠪ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN I, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 082B 0062;00E0 05AE 082B 0315 0062;0061 05AE 0300 082B 0315 0062;00E0 05AE 082B 0315 0062;0061 05AE 0300 082B 0315 0062; # (a◌̕◌̀◌֮◌ࠫb; à◌֮◌ࠫ◌̕b; a◌֮◌̀◌ࠫ◌̕b; à◌֮◌ࠫ◌̕b; a◌֮◌̀◌ࠫ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN O, LATIN SMALL LETTER B
+0061 082B 0315 0300 05AE 0062;0061 05AE 082B 0300 0315 0062;0061 05AE 082B 0300 0315 0062;0061 05AE 082B 0300 0315 0062;0061 05AE 082B 0300 0315 0062; # (a◌ࠫ◌̕◌̀◌֮b; a◌֮◌ࠫ◌̀◌̕b; a◌֮◌ࠫ◌̀◌̕b; a◌֮◌ࠫ◌̀◌̕b; a◌֮◌ࠫ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN O, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 082C 0062;00E0 05AE 082C 0315 0062;0061 05AE 0300 082C 0315 0062;00E0 05AE 082C 0315 0062;0061 05AE 0300 082C 0315 0062; # (a◌̕◌̀◌֮◌ࠬb; à◌֮◌ࠬ◌̕b; a◌֮◌̀◌ࠬ◌̕b; à◌֮◌ࠬ◌̕b; a◌֮◌̀◌ࠬ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN VOWEL SIGN SUKUN, LATIN SMALL LETTER B
+0061 082C 0315 0300 05AE 0062;0061 05AE 082C 0300 0315 0062;0061 05AE 082C 0300 0315 0062;0061 05AE 082C 0300 0315 0062;0061 05AE 082C 0300 0315 0062; # (a◌ࠬ◌̕◌̀◌֮b; a◌֮◌ࠬ◌̀◌̕b; a◌֮◌ࠬ◌̀◌̕b; a◌֮◌ࠬ◌̀◌̕b; a◌֮◌ࠬ◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN VOWEL SIGN SUKUN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 082D 0062;00E0 05AE 082D 0315 0062;0061 05AE 0300 082D 0315 0062;00E0 05AE 082D 0315 0062;0061 05AE 0300 082D 0315 0062; # (a◌̕◌̀◌֮◌࠭b; à◌֮◌࠭◌̕b; a◌֮◌̀◌࠭◌̕b; à◌֮◌࠭◌̕b; a◌֮◌̀◌࠭◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SAMARITAN MARK NEQUDAA, LATIN SMALL LETTER B
+0061 082D 0315 0300 05AE 0062;0061 05AE 082D 0300 0315 0062;0061 05AE 082D 0300 0315 0062;0061 05AE 082D 0300 0315 0062;0061 05AE 082D 0300 0315 0062; # (a◌࠭◌̕◌̀◌֮b; a◌֮◌࠭◌̀◌̕b; a◌֮◌࠭◌̀◌̕b; a◌֮◌࠭◌̀◌̕b; a◌֮◌࠭◌̀◌̕b; ) LATIN SMALL LETTER A, SAMARITAN MARK NEQUDAA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0859 0062;0061 302A 0316 0859 059A 0062;0061 302A 0316 0859 059A 0062;0061 302A 0316 0859 059A 0062;0061 302A 0316 0859 059A 0062; # (a◌֚◌̖◌〪◌࡙b; a◌〪◌̖◌࡙◌֚b; a◌〪◌̖◌࡙◌֚b; a◌〪◌̖◌࡙◌֚b; a◌〪◌̖◌࡙◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MANDAIC AFFRICATION MARK, LATIN SMALL LETTER B
+0061 0859 059A 0316 302A 0062;0061 302A 0859 0316 059A 0062;0061 302A 0859 0316 059A 0062;0061 302A 0859 0316 059A 0062;0061 302A 0859 0316 059A 0062; # (a◌࡙◌֚◌̖◌〪b; a◌〪◌࡙◌̖◌֚b; a◌〪◌࡙◌̖◌֚b; a◌〪◌࡙◌̖◌֚b; a◌〪◌࡙◌̖◌֚b; ) LATIN SMALL LETTER A, MANDAIC AFFRICATION MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 085A 0062;0061 302A 0316 085A 059A 0062;0061 302A 0316 085A 059A 0062;0061 302A 0316 085A 059A 0062;0061 302A 0316 085A 059A 0062; # (a◌֚◌̖◌〪◌࡚b; a◌〪◌̖◌࡚◌֚b; a◌〪◌̖◌࡚◌֚b; a◌〪◌̖◌࡚◌֚b; a◌〪◌̖◌࡚◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MANDAIC VOCALIZATION MARK, LATIN SMALL LETTER B
+0061 085A 059A 0316 302A 0062;0061 302A 085A 0316 059A 0062;0061 302A 085A 0316 059A 0062;0061 302A 085A 0316 059A 0062;0061 302A 085A 0316 059A 0062; # (a◌࡚◌֚◌̖◌〪b; a◌〪◌࡚◌̖◌֚b; a◌〪◌࡚◌̖◌֚b; a◌〪◌࡚◌̖◌֚b; a◌〪◌࡚◌̖◌֚b; ) LATIN SMALL LETTER A, MANDAIC VOCALIZATION MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 085B 0062;0061 302A 0316 085B 059A 0062;0061 302A 0316 085B 059A 0062;0061 302A 0316 085B 059A 0062;0061 302A 0316 085B 059A 0062; # (a◌֚◌̖◌〪◌࡛b; a◌〪◌̖◌࡛◌֚b; a◌〪◌̖◌࡛◌֚b; a◌〪◌̖◌࡛◌֚b; a◌〪◌̖◌࡛◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MANDAIC GEMINATION MARK, LATIN SMALL LETTER B
+0061 085B 059A 0316 302A 0062;0061 302A 085B 0316 059A 0062;0061 302A 085B 0316 059A 0062;0061 302A 085B 0316 059A 0062;0061 302A 085B 0316 059A 0062; # (a◌࡛◌֚◌̖◌〪b; a◌〪◌࡛◌̖◌֚b; a◌〪◌࡛◌̖◌֚b; a◌〪◌࡛◌̖◌֚b; a◌〪◌࡛◌̖◌֚b; ) LATIN SMALL LETTER A, MANDAIC GEMINATION MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08D4 0062;00E0 05AE 08D4 0315 0062;0061 05AE 0300 08D4 0315 0062;00E0 05AE 08D4 0315 0062;0061 05AE 0300 08D4 0315 0062; # (a◌̕◌̀◌֮◌ࣔb; à◌֮◌ࣔ◌̕b; a◌֮◌̀◌ࣔ◌̕b; à◌֮◌ࣔ◌̕b; a◌֮◌̀◌ࣔ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH WORD AR-RUB, LATIN SMALL LETTER B
+0061 08D4 0315 0300 05AE 0062;0061 05AE 08D4 0300 0315 0062;0061 05AE 08D4 0300 0315 0062;0061 05AE 08D4 0300 0315 0062;0061 05AE 08D4 0300 0315 0062; # (a◌ࣔ◌̕◌̀◌֮b; a◌֮◌ࣔ◌̀◌̕b; a◌֮◌ࣔ◌̀◌̕b; a◌֮◌ࣔ◌̀◌̕b; a◌֮◌ࣔ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH WORD AR-RUB, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08D5 0062;00E0 05AE 08D5 0315 0062;0061 05AE 0300 08D5 0315 0062;00E0 05AE 08D5 0315 0062;0061 05AE 0300 08D5 0315 0062; # (a◌̕◌̀◌֮◌ࣕb; à◌֮◌ࣕ◌̕b; a◌֮◌̀◌ࣕ◌̕b; à◌֮◌ࣕ◌̕b; a◌֮◌̀◌ࣕ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH SAD, LATIN SMALL LETTER B
+0061 08D5 0315 0300 05AE 0062;0061 05AE 08D5 0300 0315 0062;0061 05AE 08D5 0300 0315 0062;0061 05AE 08D5 0300 0315 0062;0061 05AE 08D5 0300 0315 0062; # (a◌ࣕ◌̕◌̀◌֮b; a◌֮◌ࣕ◌̀◌̕b; a◌֮◌ࣕ◌̀◌̕b; a◌֮◌ࣕ◌̀◌̕b; a◌֮◌ࣕ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH SAD, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08D6 0062;00E0 05AE 08D6 0315 0062;0061 05AE 0300 08D6 0315 0062;00E0 05AE 08D6 0315 0062;0061 05AE 0300 08D6 0315 0062; # (a◌̕◌̀◌֮◌ࣖb; à◌֮◌ࣖ◌̕b; a◌֮◌̀◌ࣖ◌̕b; à◌֮◌ࣖ◌̕b; a◌֮◌̀◌ࣖ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH AIN, LATIN SMALL LETTER B
+0061 08D6 0315 0300 05AE 0062;0061 05AE 08D6 0300 0315 0062;0061 05AE 08D6 0300 0315 0062;0061 05AE 08D6 0300 0315 0062;0061 05AE 08D6 0300 0315 0062; # (a◌ࣖ◌̕◌̀◌֮b; a◌֮◌ࣖ◌̀◌̕b; a◌֮◌ࣖ◌̀◌̕b; a◌֮◌ࣖ◌̀◌̕b; a◌֮◌ࣖ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH AIN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08D7 0062;00E0 05AE 08D7 0315 0062;0061 05AE 0300 08D7 0315 0062;00E0 05AE 08D7 0315 0062;0061 05AE 0300 08D7 0315 0062; # (a◌̕◌̀◌֮◌ࣗb; à◌֮◌ࣗ◌̕b; a◌֮◌̀◌ࣗ◌̕b; à◌֮◌ࣗ◌̕b; a◌֮◌̀◌ࣗ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH QAF, LATIN SMALL LETTER B
+0061 08D7 0315 0300 05AE 0062;0061 05AE 08D7 0300 0315 0062;0061 05AE 08D7 0300 0315 0062;0061 05AE 08D7 0300 0315 0062;0061 05AE 08D7 0300 0315 0062; # (a◌ࣗ◌̕◌̀◌֮b; a◌֮◌ࣗ◌̀◌̕b; a◌֮◌ࣗ◌̀◌̕b; a◌֮◌ࣗ◌̀◌̕b; a◌֮◌ࣗ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH QAF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08D8 0062;00E0 05AE 08D8 0315 0062;0061 05AE 0300 08D8 0315 0062;00E0 05AE 08D8 0315 0062;0061 05AE 0300 08D8 0315 0062; # (a◌̕◌̀◌֮◌ࣘb; à◌֮◌ࣘ◌̕b; a◌֮◌̀◌ࣘ◌̕b; à◌֮◌ࣘ◌̕b; a◌֮◌̀◌ࣘ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH NOON WITH KASRA, LATIN SMALL LETTER B
+0061 08D8 0315 0300 05AE 0062;0061 05AE 08D8 0300 0315 0062;0061 05AE 08D8 0300 0315 0062;0061 05AE 08D8 0300 0315 0062;0061 05AE 08D8 0300 0315 0062; # (a◌ࣘ◌̕◌̀◌֮b; a◌֮◌ࣘ◌̀◌̕b; a◌֮◌ࣘ◌̀◌̕b; a◌֮◌ࣘ◌̀◌̕b; a◌֮◌ࣘ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH NOON WITH KASRA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08D9 0062;00E0 05AE 08D9 0315 0062;0061 05AE 0300 08D9 0315 0062;00E0 05AE 08D9 0315 0062;0061 05AE 0300 08D9 0315 0062; # (a◌̕◌̀◌֮◌ࣙb; à◌֮◌ࣙ◌̕b; a◌֮◌̀◌ࣙ◌̕b; à◌֮◌ࣙ◌̕b; a◌֮◌̀◌ࣙ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL LOW NOON WITH KASRA, LATIN SMALL LETTER B
+0061 08D9 0315 0300 05AE 0062;0061 05AE 08D9 0300 0315 0062;0061 05AE 08D9 0300 0315 0062;0061 05AE 08D9 0300 0315 0062;0061 05AE 08D9 0300 0315 0062; # (a◌ࣙ◌̕◌̀◌֮b; a◌֮◌ࣙ◌̀◌̕b; a◌֮◌ࣙ◌̀◌̕b; a◌֮◌ࣙ◌̀◌̕b; a◌֮◌ࣙ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL LOW NOON WITH KASRA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08DA 0062;00E0 05AE 08DA 0315 0062;0061 05AE 0300 08DA 0315 0062;00E0 05AE 08DA 0315 0062;0061 05AE 0300 08DA 0315 0062; # (a◌̕◌̀◌֮◌ࣚb; à◌֮◌ࣚ◌̕b; a◌֮◌̀◌ࣚ◌̕b; à◌֮◌ࣚ◌̕b; a◌֮◌̀◌ࣚ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH WORD ATH-THALATHA, LATIN SMALL LETTER B
+0061 08DA 0315 0300 05AE 0062;0061 05AE 08DA 0300 0315 0062;0061 05AE 08DA 0300 0315 0062;0061 05AE 08DA 0300 0315 0062;0061 05AE 08DA 0300 0315 0062; # (a◌ࣚ◌̕◌̀◌֮b; a◌֮◌ࣚ◌̀◌̕b; a◌֮◌ࣚ◌̀◌̕b; a◌֮◌ࣚ◌̀◌̕b; a◌֮◌ࣚ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH WORD ATH-THALATHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08DB 0062;00E0 05AE 08DB 0315 0062;0061 05AE 0300 08DB 0315 0062;00E0 05AE 08DB 0315 0062;0061 05AE 0300 08DB 0315 0062; # (a◌̕◌̀◌֮◌ࣛb; à◌֮◌ࣛ◌̕b; a◌֮◌̀◌ࣛ◌̕b; à◌֮◌ࣛ◌̕b; a◌֮◌̀◌ࣛ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH WORD AS-SAJDA, LATIN SMALL LETTER B
+0061 08DB 0315 0300 05AE 0062;0061 05AE 08DB 0300 0315 0062;0061 05AE 08DB 0300 0315 0062;0061 05AE 08DB 0300 0315 0062;0061 05AE 08DB 0300 0315 0062; # (a◌ࣛ◌̕◌̀◌֮b; a◌֮◌ࣛ◌̀◌̕b; a◌֮◌ࣛ◌̀◌̕b; a◌֮◌ࣛ◌̀◌̕b; a◌֮◌ࣛ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH WORD AS-SAJDA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08DC 0062;00E0 05AE 08DC 0315 0062;0061 05AE 0300 08DC 0315 0062;00E0 05AE 08DC 0315 0062;0061 05AE 0300 08DC 0315 0062; # (a◌̕◌̀◌֮◌ࣜb; à◌֮◌ࣜ◌̕b; a◌֮◌̀◌ࣜ◌̕b; à◌֮◌ࣜ◌̕b; a◌֮◌̀◌ࣜ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH WORD AN-NISF, LATIN SMALL LETTER B
+0061 08DC 0315 0300 05AE 0062;0061 05AE 08DC 0300 0315 0062;0061 05AE 08DC 0300 0315 0062;0061 05AE 08DC 0300 0315 0062;0061 05AE 08DC 0300 0315 0062; # (a◌ࣜ◌̕◌̀◌֮b; a◌֮◌ࣜ◌̀◌̕b; a◌֮◌ࣜ◌̀◌̕b; a◌֮◌ࣜ◌̀◌̕b; a◌֮◌ࣜ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH WORD AN-NISF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08DD 0062;00E0 05AE 08DD 0315 0062;0061 05AE 0300 08DD 0315 0062;00E0 05AE 08DD 0315 0062;0061 05AE 0300 08DD 0315 0062; # (a◌̕◌̀◌֮◌à£b; à◌֮◌à£â—ŒÌ•b; a◌֮◌̀◌à£â—ŒÌ•b; à◌֮◌à£â—ŒÌ•b; a◌֮◌̀◌à£â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH WORD SAKTA, LATIN SMALL LETTER B
+0061 08DD 0315 0300 05AE 0062;0061 05AE 08DD 0300 0315 0062;0061 05AE 08DD 0300 0315 0062;0061 05AE 08DD 0300 0315 0062;0061 05AE 08DD 0300 0315 0062; # (aâ—Œà£â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌à£â—ŒÌ€â—ŒÌ•b; a◌֮◌à£â—ŒÌ€â—ŒÌ•b; a◌֮◌à£â—ŒÌ€â—ŒÌ•b; a◌֮◌à£â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH WORD SAKTA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08DE 0062;00E0 05AE 08DE 0315 0062;0061 05AE 0300 08DE 0315 0062;00E0 05AE 08DE 0315 0062;0061 05AE 0300 08DE 0315 0062; # (a◌̕◌̀◌֮◌ࣞb; à◌֮◌ࣞ◌̕b; a◌֮◌̀◌ࣞ◌̕b; à◌֮◌ࣞ◌̕b; a◌֮◌̀◌ࣞ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH WORD QIF, LATIN SMALL LETTER B
+0061 08DE 0315 0300 05AE 0062;0061 05AE 08DE 0300 0315 0062;0061 05AE 08DE 0300 0315 0062;0061 05AE 08DE 0300 0315 0062;0061 05AE 08DE 0300 0315 0062; # (a◌ࣞ◌̕◌̀◌֮b; a◌֮◌ࣞ◌̀◌̕b; a◌֮◌ࣞ◌̀◌̕b; a◌֮◌ࣞ◌̀◌̕b; a◌֮◌ࣞ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH WORD QIF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08DF 0062;00E0 05AE 08DF 0315 0062;0061 05AE 0300 08DF 0315 0062;00E0 05AE 08DF 0315 0062;0061 05AE 0300 08DF 0315 0062; # (a◌̕◌̀◌֮◌ࣟb; à◌֮◌ࣟ◌̕b; a◌֮◌̀◌ࣟ◌̕b; à◌֮◌ࣟ◌̕b; a◌֮◌̀◌ࣟ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH WORD WAQFA, LATIN SMALL LETTER B
+0061 08DF 0315 0300 05AE 0062;0061 05AE 08DF 0300 0315 0062;0061 05AE 08DF 0300 0315 0062;0061 05AE 08DF 0300 0315 0062;0061 05AE 08DF 0300 0315 0062; # (a◌ࣟ◌̕◌̀◌֮b; a◌֮◌ࣟ◌̀◌̕b; a◌֮◌ࣟ◌̀◌̕b; a◌֮◌ࣟ◌̀◌̕b; a◌֮◌ࣟ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH WORD WAQFA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08E0 0062;00E0 05AE 08E0 0315 0062;0061 05AE 0300 08E0 0315 0062;00E0 05AE 08E0 0315 0062;0061 05AE 0300 08E0 0315 0062; # (a◌̕◌̀◌֮◌࣠b; à◌֮◌࣠◌̕b; a◌֮◌̀◌࣠◌̕b; à◌֮◌࣠◌̕b; a◌֮◌̀◌࣠◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH FOOTNOTE MARKER, LATIN SMALL LETTER B
+0061 08E0 0315 0300 05AE 0062;0061 05AE 08E0 0300 0315 0062;0061 05AE 08E0 0300 0315 0062;0061 05AE 08E0 0300 0315 0062;0061 05AE 08E0 0300 0315 0062; # (a◌࣠◌̕◌̀◌֮b; a◌֮◌࣠◌̀◌̕b; a◌֮◌࣠◌̀◌̕b; a◌֮◌࣠◌̀◌̕b; a◌֮◌࣠◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH FOOTNOTE MARKER, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08E1 0062;00E0 05AE 08E1 0315 0062;0061 05AE 0300 08E1 0315 0062;00E0 05AE 08E1 0315 0062;0061 05AE 0300 08E1 0315 0062; # (a◌̕◌̀◌֮◌࣡b; à◌֮◌࣡◌̕b; a◌֮◌̀◌࣡◌̕b; à◌֮◌࣡◌̕b; a◌֮◌̀◌࣡◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH SIGN SAFHA, LATIN SMALL LETTER B
+0061 08E1 0315 0300 05AE 0062;0061 05AE 08E1 0300 0315 0062;0061 05AE 08E1 0300 0315 0062;0061 05AE 08E1 0300 0315 0062;0061 05AE 08E1 0300 0315 0062; # (a◌࣡◌̕◌̀◌֮b; a◌֮◌࣡◌̀◌̕b; a◌֮◌࣡◌̀◌̕b; a◌֮◌࣡◌̀◌̕b; a◌֮◌࣡◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH SIGN SAFHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 08E3 0062;0061 302A 0316 08E3 059A 0062;0061 302A 0316 08E3 059A 0062;0061 302A 0316 08E3 059A 0062;0061 302A 0316 08E3 059A 0062; # (a◌֚◌̖◌〪◌ࣣb; a◌〪◌̖◌ࣣ◌֚b; a◌〪◌̖◌ࣣ◌֚b; a◌〪◌̖◌ࣣ◌֚b; a◌〪◌̖◌ࣣ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC TURNED DAMMA BELOW, LATIN SMALL LETTER B
+0061 08E3 059A 0316 302A 0062;0061 302A 08E3 0316 059A 0062;0061 302A 08E3 0316 059A 0062;0061 302A 08E3 0316 059A 0062;0061 302A 08E3 0316 059A 0062; # (a◌ࣣ◌֚◌̖◌〪b; a◌〪◌ࣣ◌̖◌֚b; a◌〪◌ࣣ◌̖◌֚b; a◌〪◌ࣣ◌̖◌֚b; a◌〪◌ࣣ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC TURNED DAMMA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08E4 0062;00E0 05AE 08E4 0315 0062;0061 05AE 0300 08E4 0315 0062;00E0 05AE 08E4 0315 0062;0061 05AE 0300 08E4 0315 0062; # (a◌̕◌̀◌֮◌ࣤb; à◌֮◌ࣤ◌̕b; a◌֮◌̀◌ࣤ◌̕b; à◌֮◌ࣤ◌̕b; a◌֮◌̀◌ࣤ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC CURLY FATHA, LATIN SMALL LETTER B
+0061 08E4 0315 0300 05AE 0062;0061 05AE 08E4 0300 0315 0062;0061 05AE 08E4 0300 0315 0062;0061 05AE 08E4 0300 0315 0062;0061 05AE 08E4 0300 0315 0062; # (a◌ࣤ◌̕◌̀◌֮b; a◌֮◌ࣤ◌̀◌̕b; a◌֮◌ࣤ◌̀◌̕b; a◌֮◌ࣤ◌̀◌̕b; a◌֮◌ࣤ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC CURLY FATHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08E5 0062;00E0 05AE 08E5 0315 0062;0061 05AE 0300 08E5 0315 0062;00E0 05AE 08E5 0315 0062;0061 05AE 0300 08E5 0315 0062; # (a◌̕◌̀◌֮◌ࣥb; à◌֮◌ࣥ◌̕b; a◌֮◌̀◌ࣥ◌̕b; à◌֮◌ࣥ◌̕b; a◌֮◌̀◌ࣥ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC CURLY DAMMA, LATIN SMALL LETTER B
+0061 08E5 0315 0300 05AE 0062;0061 05AE 08E5 0300 0315 0062;0061 05AE 08E5 0300 0315 0062;0061 05AE 08E5 0300 0315 0062;0061 05AE 08E5 0300 0315 0062; # (a◌ࣥ◌̕◌̀◌֮b; a◌֮◌ࣥ◌̀◌̕b; a◌֮◌ࣥ◌̀◌̕b; a◌֮◌ࣥ◌̀◌̕b; a◌֮◌ࣥ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC CURLY DAMMA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 08E6 0062;0061 302A 0316 08E6 059A 0062;0061 302A 0316 08E6 059A 0062;0061 302A 0316 08E6 059A 0062;0061 302A 0316 08E6 059A 0062; # (a◌֚◌̖◌〪◌ࣦb; a◌〪◌̖◌ࣦ◌֚b; a◌〪◌̖◌ࣦ◌֚b; a◌〪◌̖◌ࣦ◌֚b; a◌〪◌̖◌ࣦ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC CURLY KASRA, LATIN SMALL LETTER B
+0061 08E6 059A 0316 302A 0062;0061 302A 08E6 0316 059A 0062;0061 302A 08E6 0316 059A 0062;0061 302A 08E6 0316 059A 0062;0061 302A 08E6 0316 059A 0062; # (a◌ࣦ◌֚◌̖◌〪b; a◌〪◌ࣦ◌̖◌֚b; a◌〪◌ࣦ◌̖◌֚b; a◌〪◌ࣦ◌̖◌֚b; a◌〪◌ࣦ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC CURLY KASRA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08E7 0062;00E0 05AE 08E7 0315 0062;0061 05AE 0300 08E7 0315 0062;00E0 05AE 08E7 0315 0062;0061 05AE 0300 08E7 0315 0062; # (a◌̕◌̀◌֮◌ࣧb; à◌֮◌ࣧ◌̕b; a◌֮◌̀◌ࣧ◌̕b; à◌֮◌ࣧ◌̕b; a◌֮◌̀◌ࣧ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC CURLY FATHATAN, LATIN SMALL LETTER B
+0061 08E7 0315 0300 05AE 0062;0061 05AE 08E7 0300 0315 0062;0061 05AE 08E7 0300 0315 0062;0061 05AE 08E7 0300 0315 0062;0061 05AE 08E7 0300 0315 0062; # (a◌ࣧ◌̕◌̀◌֮b; a◌֮◌ࣧ◌̀◌̕b; a◌֮◌ࣧ◌̀◌̕b; a◌֮◌ࣧ◌̀◌̕b; a◌֮◌ࣧ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC CURLY FATHATAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08E8 0062;00E0 05AE 08E8 0315 0062;0061 05AE 0300 08E8 0315 0062;00E0 05AE 08E8 0315 0062;0061 05AE 0300 08E8 0315 0062; # (a◌̕◌̀◌֮◌ࣨb; à◌֮◌ࣨ◌̕b; a◌֮◌̀◌ࣨ◌̕b; à◌֮◌ࣨ◌̕b; a◌֮◌̀◌ࣨ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC CURLY DAMMATAN, LATIN SMALL LETTER B
+0061 08E8 0315 0300 05AE 0062;0061 05AE 08E8 0300 0315 0062;0061 05AE 08E8 0300 0315 0062;0061 05AE 08E8 0300 0315 0062;0061 05AE 08E8 0300 0315 0062; # (a◌ࣨ◌̕◌̀◌֮b; a◌֮◌ࣨ◌̀◌̕b; a◌֮◌ࣨ◌̀◌̕b; a◌֮◌ࣨ◌̀◌̕b; a◌֮◌ࣨ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC CURLY DAMMATAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 08E9 0062;0061 302A 0316 08E9 059A 0062;0061 302A 0316 08E9 059A 0062;0061 302A 0316 08E9 059A 0062;0061 302A 0316 08E9 059A 0062; # (a◌֚◌̖◌〪◌ࣩb; a◌〪◌̖◌ࣩ◌֚b; a◌〪◌̖◌ࣩ◌֚b; a◌〪◌̖◌ࣩ◌֚b; a◌〪◌̖◌ࣩ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC CURLY KASRATAN, LATIN SMALL LETTER B
+0061 08E9 059A 0316 302A 0062;0061 302A 08E9 0316 059A 0062;0061 302A 08E9 0316 059A 0062;0061 302A 08E9 0316 059A 0062;0061 302A 08E9 0316 059A 0062; # (a◌ࣩ◌֚◌̖◌〪b; a◌〪◌ࣩ◌̖◌֚b; a◌〪◌ࣩ◌̖◌֚b; a◌〪◌ࣩ◌̖◌֚b; a◌〪◌ࣩ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC CURLY KASRATAN, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08EA 0062;00E0 05AE 08EA 0315 0062;0061 05AE 0300 08EA 0315 0062;00E0 05AE 08EA 0315 0062;0061 05AE 0300 08EA 0315 0062; # (a◌̕◌̀◌֮◌࣪b; à◌֮◌࣪◌̕b; a◌֮◌̀◌࣪◌̕b; à◌֮◌࣪◌̕b; a◌֮◌̀◌࣪◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC TONE ONE DOT ABOVE, LATIN SMALL LETTER B
+0061 08EA 0315 0300 05AE 0062;0061 05AE 08EA 0300 0315 0062;0061 05AE 08EA 0300 0315 0062;0061 05AE 08EA 0300 0315 0062;0061 05AE 08EA 0300 0315 0062; # (a◌࣪◌̕◌̀◌֮b; a◌֮◌࣪◌̀◌̕b; a◌֮◌࣪◌̀◌̕b; a◌֮◌࣪◌̀◌̕b; a◌֮◌࣪◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC TONE ONE DOT ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08EB 0062;00E0 05AE 08EB 0315 0062;0061 05AE 0300 08EB 0315 0062;00E0 05AE 08EB 0315 0062;0061 05AE 0300 08EB 0315 0062; # (a◌̕◌̀◌֮◌࣫b; à◌֮◌࣫◌̕b; a◌֮◌̀◌࣫◌̕b; à◌֮◌࣫◌̕b; a◌֮◌̀◌࣫◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC TONE TWO DOTS ABOVE, LATIN SMALL LETTER B
+0061 08EB 0315 0300 05AE 0062;0061 05AE 08EB 0300 0315 0062;0061 05AE 08EB 0300 0315 0062;0061 05AE 08EB 0300 0315 0062;0061 05AE 08EB 0300 0315 0062; # (a◌࣫◌̕◌̀◌֮b; a◌֮◌࣫◌̀◌̕b; a◌֮◌࣫◌̀◌̕b; a◌֮◌࣫◌̀◌̕b; a◌֮◌࣫◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC TONE TWO DOTS ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08EC 0062;00E0 05AE 08EC 0315 0062;0061 05AE 0300 08EC 0315 0062;00E0 05AE 08EC 0315 0062;0061 05AE 0300 08EC 0315 0062; # (a◌̕◌̀◌֮◌࣬b; à◌֮◌࣬◌̕b; a◌֮◌̀◌࣬◌̕b; à◌֮◌࣬◌̕b; a◌֮◌̀◌࣬◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC TONE LOOP ABOVE, LATIN SMALL LETTER B
+0061 08EC 0315 0300 05AE 0062;0061 05AE 08EC 0300 0315 0062;0061 05AE 08EC 0300 0315 0062;0061 05AE 08EC 0300 0315 0062;0061 05AE 08EC 0300 0315 0062; # (a◌࣬◌̕◌̀◌֮b; a◌֮◌࣬◌̀◌̕b; a◌֮◌࣬◌̀◌̕b; a◌֮◌࣬◌̀◌̕b; a◌֮◌࣬◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC TONE LOOP ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 08ED 0062;0061 302A 0316 08ED 059A 0062;0061 302A 0316 08ED 059A 0062;0061 302A 0316 08ED 059A 0062;0061 302A 0316 08ED 059A 0062; # (a◌֚◌̖◌〪◌࣭b; a◌〪◌̖◌࣭◌֚b; a◌〪◌̖◌࣭◌֚b; a◌〪◌̖◌࣭◌֚b; a◌〪◌̖◌࣭◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC TONE ONE DOT BELOW, LATIN SMALL LETTER B
+0061 08ED 059A 0316 302A 0062;0061 302A 08ED 0316 059A 0062;0061 302A 08ED 0316 059A 0062;0061 302A 08ED 0316 059A 0062;0061 302A 08ED 0316 059A 0062; # (a◌࣭◌֚◌̖◌〪b; a◌〪◌࣭◌̖◌֚b; a◌〪◌࣭◌̖◌֚b; a◌〪◌࣭◌̖◌֚b; a◌〪◌࣭◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC TONE ONE DOT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 08EE 0062;0061 302A 0316 08EE 059A 0062;0061 302A 0316 08EE 059A 0062;0061 302A 0316 08EE 059A 0062;0061 302A 0316 08EE 059A 0062; # (a◌֚◌̖◌〪◌࣮b; a◌〪◌̖◌࣮◌֚b; a◌〪◌̖◌࣮◌֚b; a◌〪◌̖◌࣮◌֚b; a◌〪◌̖◌࣮◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC TONE TWO DOTS BELOW, LATIN SMALL LETTER B
+0061 08EE 059A 0316 302A 0062;0061 302A 08EE 0316 059A 0062;0061 302A 08EE 0316 059A 0062;0061 302A 08EE 0316 059A 0062;0061 302A 08EE 0316 059A 0062; # (a◌࣮◌֚◌̖◌〪b; a◌〪◌࣮◌̖◌֚b; a◌〪◌࣮◌̖◌֚b; a◌〪◌࣮◌̖◌֚b; a◌〪◌࣮◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC TONE TWO DOTS BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 08EF 0062;0061 302A 0316 08EF 059A 0062;0061 302A 0316 08EF 059A 0062;0061 302A 0316 08EF 059A 0062;0061 302A 0316 08EF 059A 0062; # (a◌֚◌̖◌〪◌࣯b; a◌〪◌̖◌࣯◌֚b; a◌〪◌̖◌࣯◌֚b; a◌〪◌̖◌࣯◌֚b; a◌〪◌̖◌࣯◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC TONE LOOP BELOW, LATIN SMALL LETTER B
+0061 08EF 059A 0316 302A 0062;0061 302A 08EF 0316 059A 0062;0061 302A 08EF 0316 059A 0062;0061 302A 08EF 0316 059A 0062;0061 302A 08EF 0316 059A 0062; # (a◌࣯◌֚◌̖◌〪b; a◌〪◌࣯◌̖◌֚b; a◌〪◌࣯◌̖◌֚b; a◌〪◌࣯◌̖◌֚b; a◌〪◌࣯◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC TONE LOOP BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 064C 064B FB1E 08F0 0062;0061 FB1E 064B 08F0 064C 0062;0061 FB1E 064B 08F0 064C 0062;0061 FB1E 064B 08F0 064C 0062;0061 FB1E 064B 08F0 064C 0062; # (a◌ٌ◌ً◌ﬞ◌ࣰb; a◌ﬞ◌ً◌ࣰ◌ٌb; a◌ﬞ◌ً◌ࣰ◌ٌb; a◌ﬞ◌ً◌ࣰ◌ٌb; a◌ﬞ◌ً◌ࣰ◌ٌb; ) LATIN SMALL LETTER A, ARABIC DAMMATAN, ARABIC FATHATAN, HEBREW POINT JUDEO-SPANISH VARIKA, ARABIC OPEN FATHATAN, LATIN SMALL LETTER B
+0061 08F0 064C 064B FB1E 0062;0061 FB1E 08F0 064B 064C 0062;0061 FB1E 08F0 064B 064C 0062;0061 FB1E 08F0 064B 064C 0062;0061 FB1E 08F0 064B 064C 0062; # (a◌ࣰ◌ٌ◌ً◌ﬞb; a◌ﬞ◌ࣰ◌ً◌ٌb; a◌ﬞ◌ࣰ◌ً◌ٌb; a◌ﬞ◌ࣰ◌ً◌ٌb; a◌ﬞ◌ࣰ◌ً◌ٌb; ) LATIN SMALL LETTER A, ARABIC OPEN FATHATAN, ARABIC DAMMATAN, ARABIC FATHATAN, HEBREW POINT JUDEO-SPANISH VARIKA, LATIN SMALL LETTER B
+0061 064D 064C 064B 08F1 0062;0061 064B 064C 08F1 064D 0062;0061 064B 064C 08F1 064D 0062;0061 064B 064C 08F1 064D 0062;0061 064B 064C 08F1 064D 0062; # (aâ—ŒÙ◌ٌ◌ً◌ࣱb; a◌ً◌ٌ◌ࣱ◌Ùb; a◌ً◌ٌ◌ࣱ◌Ùb; a◌ً◌ٌ◌ࣱ◌Ùb; a◌ً◌ٌ◌ࣱ◌Ùb; ) LATIN SMALL LETTER A, ARABIC KASRATAN, ARABIC DAMMATAN, ARABIC FATHATAN, ARABIC OPEN DAMMATAN, LATIN SMALL LETTER B
+0061 08F1 064D 064C 064B 0062;0061 064B 08F1 064C 064D 0062;0061 064B 08F1 064C 064D 0062;0061 064B 08F1 064C 064D 0062;0061 064B 08F1 064C 064D 0062; # (a◌ࣱ◌Ù◌ٌ◌ًb; a◌ً◌ࣱ◌ٌ◌Ùb; a◌ً◌ࣱ◌ٌ◌Ùb; a◌ً◌ࣱ◌ٌ◌Ùb; a◌ً◌ࣱ◌ٌ◌Ùb; ) LATIN SMALL LETTER A, ARABIC OPEN DAMMATAN, ARABIC KASRATAN, ARABIC DAMMATAN, ARABIC FATHATAN, LATIN SMALL LETTER B
+0061 0618 064D 064C 08F2 0062;0061 064C 064D 08F2 0618 0062;0061 064C 064D 08F2 0618 0062;0061 064C 064D 08F2 0618 0062;0061 064C 064D 08F2 0618 0062; # (a◌ؘ◌Ù◌ٌ◌ࣲb; a◌ٌ◌Ù◌ࣲ◌ؘb; a◌ٌ◌Ù◌ࣲ◌ؘb; a◌ٌ◌Ù◌ࣲ◌ؘb; a◌ٌ◌Ù◌ࣲ◌ؘb; ) LATIN SMALL LETTER A, ARABIC SMALL FATHA, ARABIC KASRATAN, ARABIC DAMMATAN, ARABIC OPEN KASRATAN, LATIN SMALL LETTER B
+0061 08F2 0618 064D 064C 0062;0061 064C 08F2 064D 0618 0062;0061 064C 08F2 064D 0618 0062;0061 064C 08F2 064D 0618 0062;0061 064C 08F2 064D 0618 0062; # (a◌ࣲ◌ؘ◌Ù◌ٌb; a◌ٌ◌ࣲ◌Ù◌ؘb; a◌ٌ◌ࣲ◌Ù◌ؘb; a◌ٌ◌ࣲ◌Ù◌ؘb; a◌ٌ◌ࣲ◌Ù◌ؘb; ) LATIN SMALL LETTER A, ARABIC OPEN KASRATAN, ARABIC SMALL FATHA, ARABIC KASRATAN, ARABIC DAMMATAN, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08F3 0062;00E0 05AE 08F3 0315 0062;0061 05AE 0300 08F3 0315 0062;00E0 05AE 08F3 0315 0062;0061 05AE 0300 08F3 0315 0062; # (a◌̕◌̀◌֮◌ࣳb; à◌֮◌ࣳ◌̕b; a◌֮◌̀◌ࣳ◌̕b; à◌֮◌ࣳ◌̕b; a◌֮◌̀◌ࣳ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH WAW, LATIN SMALL LETTER B
+0061 08F3 0315 0300 05AE 0062;0061 05AE 08F3 0300 0315 0062;0061 05AE 08F3 0300 0315 0062;0061 05AE 08F3 0300 0315 0062;0061 05AE 08F3 0300 0315 0062; # (a◌ࣳ◌̕◌̀◌֮b; a◌֮◌ࣳ◌̀◌̕b; a◌֮◌ࣳ◌̀◌̕b; a◌֮◌ࣳ◌̀◌̕b; a◌֮◌ࣳ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH WAW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08F4 0062;00E0 05AE 08F4 0315 0062;0061 05AE 0300 08F4 0315 0062;00E0 05AE 08F4 0315 0062;0061 05AE 0300 08F4 0315 0062; # (a◌̕◌̀◌֮◌ࣴb; à◌֮◌ࣴ◌̕b; a◌֮◌̀◌ࣴ◌̕b; à◌֮◌ࣴ◌̕b; a◌֮◌̀◌ࣴ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC FATHA WITH RING, LATIN SMALL LETTER B
+0061 08F4 0315 0300 05AE 0062;0061 05AE 08F4 0300 0315 0062;0061 05AE 08F4 0300 0315 0062;0061 05AE 08F4 0300 0315 0062;0061 05AE 08F4 0300 0315 0062; # (a◌ࣴ◌̕◌̀◌֮b; a◌֮◌ࣴ◌̀◌̕b; a◌֮◌ࣴ◌̀◌̕b; a◌֮◌ࣴ◌̀◌̕b; a◌֮◌ࣴ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC FATHA WITH RING, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08F5 0062;00E0 05AE 08F5 0315 0062;0061 05AE 0300 08F5 0315 0062;00E0 05AE 08F5 0315 0062;0061 05AE 0300 08F5 0315 0062; # (a◌̕◌̀◌֮◌ࣵb; à◌֮◌ࣵ◌̕b; a◌֮◌̀◌ࣵ◌̕b; à◌֮◌ࣵ◌̕b; a◌֮◌̀◌ࣵ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC FATHA WITH DOT ABOVE, LATIN SMALL LETTER B
+0061 08F5 0315 0300 05AE 0062;0061 05AE 08F5 0300 0315 0062;0061 05AE 08F5 0300 0315 0062;0061 05AE 08F5 0300 0315 0062;0061 05AE 08F5 0300 0315 0062; # (a◌ࣵ◌̕◌̀◌֮b; a◌֮◌ࣵ◌̀◌̕b; a◌֮◌ࣵ◌̀◌̕b; a◌֮◌ࣵ◌̀◌̕b; a◌֮◌ࣵ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC FATHA WITH DOT ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 08F6 0062;0061 302A 0316 08F6 059A 0062;0061 302A 0316 08F6 059A 0062;0061 302A 0316 08F6 059A 0062;0061 302A 0316 08F6 059A 0062; # (a◌֚◌̖◌〪◌ࣶb; a◌〪◌̖◌ࣶ◌֚b; a◌〪◌̖◌ࣶ◌֚b; a◌〪◌̖◌ࣶ◌֚b; a◌〪◌̖◌ࣶ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC KASRA WITH DOT BELOW, LATIN SMALL LETTER B
+0061 08F6 059A 0316 302A 0062;0061 302A 08F6 0316 059A 0062;0061 302A 08F6 0316 059A 0062;0061 302A 08F6 0316 059A 0062;0061 302A 08F6 0316 059A 0062; # (a◌ࣶ◌֚◌̖◌〪b; a◌〪◌ࣶ◌̖◌֚b; a◌〪◌ࣶ◌̖◌֚b; a◌〪◌ࣶ◌̖◌֚b; a◌〪◌ࣶ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC KASRA WITH DOT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08F7 0062;00E0 05AE 08F7 0315 0062;0061 05AE 0300 08F7 0315 0062;00E0 05AE 08F7 0315 0062;0061 05AE 0300 08F7 0315 0062; # (a◌̕◌̀◌֮◌ࣷb; à◌֮◌ࣷ◌̕b; a◌֮◌̀◌ࣷ◌̕b; à◌֮◌ࣷ◌̕b; a◌֮◌̀◌ࣷ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC LEFT ARROWHEAD ABOVE, LATIN SMALL LETTER B
+0061 08F7 0315 0300 05AE 0062;0061 05AE 08F7 0300 0315 0062;0061 05AE 08F7 0300 0315 0062;0061 05AE 08F7 0300 0315 0062;0061 05AE 08F7 0300 0315 0062; # (a◌ࣷ◌̕◌̀◌֮b; a◌֮◌ࣷ◌̀◌̕b; a◌֮◌ࣷ◌̀◌̕b; a◌֮◌ࣷ◌̀◌̕b; a◌֮◌ࣷ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC LEFT ARROWHEAD ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08F8 0062;00E0 05AE 08F8 0315 0062;0061 05AE 0300 08F8 0315 0062;00E0 05AE 08F8 0315 0062;0061 05AE 0300 08F8 0315 0062; # (a◌̕◌̀◌֮◌ࣸb; à◌֮◌ࣸ◌̕b; a◌֮◌̀◌ࣸ◌̕b; à◌֮◌ࣸ◌̕b; a◌֮◌̀◌ࣸ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC RIGHT ARROWHEAD ABOVE, LATIN SMALL LETTER B
+0061 08F8 0315 0300 05AE 0062;0061 05AE 08F8 0300 0315 0062;0061 05AE 08F8 0300 0315 0062;0061 05AE 08F8 0300 0315 0062;0061 05AE 08F8 0300 0315 0062; # (a◌ࣸ◌̕◌̀◌֮b; a◌֮◌ࣸ◌̀◌̕b; a◌֮◌ࣸ◌̀◌̕b; a◌֮◌ࣸ◌̀◌̕b; a◌֮◌ࣸ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC RIGHT ARROWHEAD ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 08F9 0062;0061 302A 0316 08F9 059A 0062;0061 302A 0316 08F9 059A 0062;0061 302A 0316 08F9 059A 0062;0061 302A 0316 08F9 059A 0062; # (a◌֚◌̖◌〪◌ࣹb; a◌〪◌̖◌ࣹ◌֚b; a◌〪◌̖◌ࣹ◌֚b; a◌〪◌̖◌ࣹ◌֚b; a◌〪◌̖◌ࣹ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC LEFT ARROWHEAD BELOW, LATIN SMALL LETTER B
+0061 08F9 059A 0316 302A 0062;0061 302A 08F9 0316 059A 0062;0061 302A 08F9 0316 059A 0062;0061 302A 08F9 0316 059A 0062;0061 302A 08F9 0316 059A 0062; # (a◌ࣹ◌֚◌̖◌〪b; a◌〪◌ࣹ◌̖◌֚b; a◌〪◌ࣹ◌̖◌֚b; a◌〪◌ࣹ◌̖◌֚b; a◌〪◌ࣹ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC LEFT ARROWHEAD BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 08FA 0062;0061 302A 0316 08FA 059A 0062;0061 302A 0316 08FA 059A 0062;0061 302A 0316 08FA 059A 0062;0061 302A 0316 08FA 059A 0062; # (a◌֚◌̖◌〪◌ࣺb; a◌〪◌̖◌ࣺ◌֚b; a◌〪◌̖◌ࣺ◌֚b; a◌〪◌̖◌ࣺ◌֚b; a◌〪◌̖◌ࣺ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC RIGHT ARROWHEAD BELOW, LATIN SMALL LETTER B
+0061 08FA 059A 0316 302A 0062;0061 302A 08FA 0316 059A 0062;0061 302A 08FA 0316 059A 0062;0061 302A 08FA 0316 059A 0062;0061 302A 08FA 0316 059A 0062; # (a◌ࣺ◌֚◌̖◌〪b; a◌〪◌ࣺ◌̖◌֚b; a◌〪◌ࣺ◌̖◌֚b; a◌〪◌ࣺ◌̖◌֚b; a◌〪◌ࣺ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC RIGHT ARROWHEAD BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08FB 0062;00E0 05AE 08FB 0315 0062;0061 05AE 0300 08FB 0315 0062;00E0 05AE 08FB 0315 0062;0061 05AE 0300 08FB 0315 0062; # (a◌̕◌̀◌֮◌ࣻb; à◌֮◌ࣻ◌̕b; a◌֮◌̀◌ࣻ◌̕b; à◌֮◌ࣻ◌̕b; a◌֮◌̀◌ࣻ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC DOUBLE RIGHT ARROWHEAD ABOVE, LATIN SMALL LETTER B
+0061 08FB 0315 0300 05AE 0062;0061 05AE 08FB 0300 0315 0062;0061 05AE 08FB 0300 0315 0062;0061 05AE 08FB 0300 0315 0062;0061 05AE 08FB 0300 0315 0062; # (a◌ࣻ◌̕◌̀◌֮b; a◌֮◌ࣻ◌̀◌̕b; a◌֮◌ࣻ◌̀◌̕b; a◌֮◌ࣻ◌̀◌̕b; a◌֮◌ࣻ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC DOUBLE RIGHT ARROWHEAD ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08FC 0062;00E0 05AE 08FC 0315 0062;0061 05AE 0300 08FC 0315 0062;00E0 05AE 08FC 0315 0062;0061 05AE 0300 08FC 0315 0062; # (a◌̕◌̀◌֮◌ࣼb; à◌֮◌ࣼ◌̕b; a◌֮◌̀◌ࣼ◌̕b; à◌֮◌ࣼ◌̕b; a◌֮◌̀◌ࣼ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC DOUBLE RIGHT ARROWHEAD ABOVE WITH DOT, LATIN SMALL LETTER B
+0061 08FC 0315 0300 05AE 0062;0061 05AE 08FC 0300 0315 0062;0061 05AE 08FC 0300 0315 0062;0061 05AE 08FC 0300 0315 0062;0061 05AE 08FC 0300 0315 0062; # (a◌ࣼ◌̕◌̀◌֮b; a◌֮◌ࣼ◌̀◌̕b; a◌֮◌ࣼ◌̀◌̕b; a◌֮◌ࣼ◌̀◌̕b; a◌֮◌ࣼ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC DOUBLE RIGHT ARROWHEAD ABOVE WITH DOT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08FD 0062;00E0 05AE 08FD 0315 0062;0061 05AE 0300 08FD 0315 0062;00E0 05AE 08FD 0315 0062;0061 05AE 0300 08FD 0315 0062; # (a◌̕◌̀◌֮◌ࣽb; à◌֮◌ࣽ◌̕b; a◌֮◌̀◌ࣽ◌̕b; à◌֮◌ࣽ◌̕b; a◌֮◌̀◌ࣽ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC RIGHT ARROWHEAD ABOVE WITH DOT, LATIN SMALL LETTER B
+0061 08FD 0315 0300 05AE 0062;0061 05AE 08FD 0300 0315 0062;0061 05AE 08FD 0300 0315 0062;0061 05AE 08FD 0300 0315 0062;0061 05AE 08FD 0300 0315 0062; # (a◌ࣽ◌̕◌̀◌֮b; a◌֮◌ࣽ◌̀◌̕b; a◌֮◌ࣽ◌̀◌̕b; a◌֮◌ࣽ◌̀◌̕b; a◌֮◌ࣽ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC RIGHT ARROWHEAD ABOVE WITH DOT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08FE 0062;00E0 05AE 08FE 0315 0062;0061 05AE 0300 08FE 0315 0062;00E0 05AE 08FE 0315 0062;0061 05AE 0300 08FE 0315 0062; # (a◌̕◌̀◌֮◌ࣾb; à◌֮◌ࣾ◌̕b; a◌֮◌̀◌ࣾ◌̕b; à◌֮◌ࣾ◌̕b; a◌֮◌̀◌ࣾ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC DAMMA WITH DOT, LATIN SMALL LETTER B
+0061 08FE 0315 0300 05AE 0062;0061 05AE 08FE 0300 0315 0062;0061 05AE 08FE 0300 0315 0062;0061 05AE 08FE 0300 0315 0062;0061 05AE 08FE 0300 0315 0062; # (a◌ࣾ◌̕◌̀◌֮b; a◌֮◌ࣾ◌̀◌̕b; a◌֮◌ࣾ◌̀◌̕b; a◌֮◌ࣾ◌̀◌̕b; a◌֮◌ࣾ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC DAMMA WITH DOT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 08FF 0062;00E0 05AE 08FF 0315 0062;0061 05AE 0300 08FF 0315 0062;00E0 05AE 08FF 0315 0062;0061 05AE 0300 08FF 0315 0062; # (a◌̕◌̀◌֮◌ࣿb; à◌֮◌ࣿ◌̕b; a◌֮◌̀◌ࣿ◌̕b; à◌֮◌ࣿ◌̕b; a◌֮◌̀◌ࣿ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC MARK SIDEWAYS NOON GHUNNA, LATIN SMALL LETTER B
+0061 08FF 0315 0300 05AE 0062;0061 05AE 08FF 0300 0315 0062;0061 05AE 08FF 0300 0315 0062;0061 05AE 08FF 0300 0315 0062;0061 05AE 08FF 0300 0315 0062; # (a◌ࣿ◌̕◌̀◌֮b; a◌֮◌ࣿ◌̀◌̕b; a◌֮◌ࣿ◌̀◌̕b; a◌֮◌ࣿ◌̀◌̕b; a◌֮◌ࣿ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC MARK SIDEWAYS NOON GHUNNA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 3099 093C 0334 093C 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062; # (a◌゙◌़◌̴◌़b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, DEVANAGARI SIGN NUKTA, LATIN SMALL LETTER B
+0061 093C 3099 093C 0334 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062; # (a◌़◌゙◌़◌̴b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 094D 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà¥b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 094D 05B0 094D 3099 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062; # (aâ—Œà¥â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0951 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062; # (a◌̕◌̀◌֮◌॑b; à◌֮◌॑◌̕b; a◌֮◌̀◌॑◌̕b; à◌֮◌॑◌̕b; a◌֮◌̀◌॑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, DEVANAGARI STRESS SIGN UDATTA, LATIN SMALL LETTER B
+0061 0951 0315 0300 05AE 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062; # (a◌॑◌̕◌̀◌֮b; a◌֮◌॑◌̀◌̕b; a◌֮◌॑◌̀◌̕b; a◌֮◌॑◌̀◌̕b; a◌֮◌॑◌̀◌̕b; ) LATIN SMALL LETTER A, DEVANAGARI STRESS SIGN UDATTA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0952 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062; # (a◌֚◌̖◌〪◌॒b; a◌〪◌̖◌॒◌֚b; a◌〪◌̖◌॒◌֚b; a◌〪◌̖◌॒◌֚b; a◌〪◌̖◌॒◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, DEVANAGARI STRESS SIGN ANUDATTA, LATIN SMALL LETTER B
+0061 0952 059A 0316 302A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062; # (a◌॒◌֚◌̖◌〪b; a◌〪◌॒◌̖◌֚b; a◌〪◌॒◌̖◌֚b; a◌〪◌॒◌̖◌֚b; a◌〪◌॒◌̖◌֚b; ) LATIN SMALL LETTER A, DEVANAGARI STRESS SIGN ANUDATTA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0953 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062; # (a◌̕◌̀◌֮◌॓b; à◌֮◌॓◌̕b; a◌֮◌̀◌॓◌̕b; à◌֮◌॓◌̕b; a◌֮◌̀◌॓◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, DEVANAGARI GRAVE ACCENT, LATIN SMALL LETTER B
+0061 0953 0315 0300 05AE 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062; # (a◌॓◌̕◌̀◌֮b; a◌֮◌॓◌̀◌̕b; a◌֮◌॓◌̀◌̕b; a◌֮◌॓◌̀◌̕b; a◌֮◌॓◌̀◌̕b; ) LATIN SMALL LETTER A, DEVANAGARI GRAVE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0954 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062; # (a◌̕◌̀◌֮◌॔b; à◌֮◌॔◌̕b; a◌֮◌̀◌॔◌̕b; à◌֮◌॔◌̕b; a◌֮◌̀◌॔◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, DEVANAGARI ACUTE ACCENT, LATIN SMALL LETTER B
+0061 0954 0315 0300 05AE 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062; # (a◌॔◌̕◌̀◌֮b; a◌֮◌॔◌̀◌̕b; a◌֮◌॔◌̀◌̕b; a◌֮◌॔◌̀◌̕b; a◌֮◌॔◌̀◌̕b; ) LATIN SMALL LETTER A, DEVANAGARI ACUTE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 3099 093C 0334 09BC 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062; # (a◌゙◌़◌̴◌়b; a◌̴◌़◌়◌゙b; a◌̴◌़◌়◌゙b; a◌̴◌़◌়◌゙b; a◌̴◌़◌়◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BENGALI SIGN NUKTA, LATIN SMALL LETTER B
+0061 09BC 3099 093C 0334 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062; # (a◌়◌゙◌़◌̴b; a◌̴◌়◌़◌゙b; a◌̴◌়◌़◌゙b; a◌̴◌়◌़◌゙b; a◌̴◌়◌़◌゙b; ) LATIN SMALL LETTER A, BENGALI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 09CD 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà§b; a◌゙◌à¥â—Œà§â—ŒÖ°b; a◌゙◌à¥â—Œà§â—ŒÖ°b; a◌゙◌à¥â—Œà§â—ŒÖ°b; a◌゙◌à¥â—Œà§â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, BENGALI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 09CD 05B0 094D 3099 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062; # (aâ—Œà§â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à§â—Œà¥â—ŒÖ°b; a◌゙◌à§â—Œà¥â—ŒÖ°b; a◌゙◌à§â—Œà¥â—ŒÖ°b; a◌゙◌à§â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, BENGALI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 0A3C 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062; # (a◌゙◌़◌̴◌਼b; a◌̴◌़◌਼◌゙b; a◌̴◌़◌਼◌゙b; a◌̴◌़◌਼◌゙b; a◌̴◌़◌਼◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, GURMUKHI SIGN NUKTA, LATIN SMALL LETTER B
+0061 0A3C 3099 093C 0334 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062; # (a◌਼◌゙◌़◌̴b; a◌̴◌਼◌़◌゙b; a◌̴◌਼◌़◌゙b; a◌̴◌਼◌़◌゙b; a◌̴◌਼◌़◌゙b; ) LATIN SMALL LETTER A, GURMUKHI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0A4D 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà©b; a◌゙◌à¥â—Œà©â—ŒÖ°b; a◌゙◌à¥â—Œà©â—ŒÖ°b; a◌゙◌à¥â—Œà©â—ŒÖ°b; a◌゙◌à¥â—Œà©â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, GURMUKHI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0A4D 05B0 094D 3099 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062; # (aâ—Œà©â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à©â—Œà¥â—ŒÖ°b; a◌゙◌à©â—Œà¥â—ŒÖ°b; a◌゙◌à©â—Œà¥â—ŒÖ°b; a◌゙◌à©â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, GURMUKHI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 0ABC 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062; # (a◌゙◌़◌̴◌઼b; a◌̴◌़◌઼◌゙b; a◌̴◌़◌઼◌゙b; a◌̴◌़◌઼◌゙b; a◌̴◌़◌઼◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, GUJARATI SIGN NUKTA, LATIN SMALL LETTER B
+0061 0ABC 3099 093C 0334 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062; # (a◌઼◌゙◌़◌̴b; a◌̴◌઼◌़◌゙b; a◌̴◌઼◌़◌゙b; a◌̴◌઼◌़◌゙b; a◌̴◌઼◌़◌゙b; ) LATIN SMALL LETTER A, GUJARATI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0ACD 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà«b; a◌゙◌à¥â—Œà«â—ŒÖ°b; a◌゙◌à¥â—Œà«â—ŒÖ°b; a◌゙◌à¥â—Œà«â—ŒÖ°b; a◌゙◌à¥â—Œà«â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, GUJARATI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0ACD 05B0 094D 3099 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062; # (aâ—Œà«â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à«â—Œà¥â—ŒÖ°b; a◌゙◌à«â—Œà¥â—ŒÖ°b; a◌゙◌à«â—Œà¥â—ŒÖ°b; a◌゙◌à«â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, GUJARATI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 0B3C 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062; # (a◌゙◌़◌̴◌଼b; a◌̴◌़◌଼◌゙b; a◌̴◌़◌଼◌゙b; a◌̴◌़◌଼◌゙b; a◌̴◌़◌଼◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, ORIYA SIGN NUKTA, LATIN SMALL LETTER B
+0061 0B3C 3099 093C 0334 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062; # (a◌଼◌゙◌़◌̴b; a◌̴◌଼◌़◌゙b; a◌̴◌଼◌़◌゙b; a◌̴◌଼◌़◌゙b; a◌̴◌଼◌़◌゙b; ) LATIN SMALL LETTER A, ORIYA SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0B4D 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà­b; a◌゙◌à¥â—Œà­â—ŒÖ°b; a◌゙◌à¥â—Œà­â—ŒÖ°b; a◌゙◌à¥â—Œà­â—ŒÖ°b; a◌゙◌à¥â—Œà­â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, ORIYA SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0B4D 05B0 094D 3099 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062; # (aâ—Œà­â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à­â—Œà¥â—ŒÖ°b; a◌゙◌à­â—Œà¥â—ŒÖ°b; a◌゙◌à­â—Œà¥â—ŒÖ°b; a◌゙◌à­â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, ORIYA SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0BCD 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà¯b; a◌゙◌à¥â—Œà¯â—ŒÖ°b; a◌゙◌à¥â—Œà¯â—ŒÖ°b; a◌゙◌à¥â—Œà¯â—ŒÖ°b; a◌゙◌à¥â—Œà¯â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TAMIL SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0BCD 05B0 094D 3099 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062; # (aâ—Œà¯â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à¯â—Œà¥â—ŒÖ°b; a◌゙◌à¯â—Œà¥â—ŒÖ°b; a◌゙◌à¯â—Œà¥â—ŒÖ°b; a◌゙◌à¯â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TAMIL SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0C4D 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà±b; a◌゙◌à¥â—Œà±â—ŒÖ°b; a◌゙◌à¥â—Œà±â—ŒÖ°b; a◌゙◌à¥â—Œà±â—ŒÖ°b; a◌゙◌à¥â—Œà±â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TELUGU SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0C4D 05B0 094D 3099 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062; # (aâ—Œà±â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à±â—Œà¥â—ŒÖ°b; a◌゙◌à±â—Œà¥â—ŒÖ°b; a◌゙◌à±â—Œà¥â—ŒÖ°b; a◌゙◌à±â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TELUGU SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0C56 0C55 0711 0C55 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062; # (a◌ౖ◌ౕ◌ܑ◌ౕb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; ) LATIN SMALL LETTER A, TELUGU AI LENGTH MARK, TELUGU LENGTH MARK, SYRIAC LETTER SUPERSCRIPT ALAPH, TELUGU LENGTH MARK, LATIN SMALL LETTER B
+0061 0C55 0C56 0C55 0711 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062; # (a◌ౕ◌ౖ◌ౕ◌ܑb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; ) LATIN SMALL LETTER A, TELUGU LENGTH MARK, TELUGU AI LENGTH MARK, TELUGU LENGTH MARK, SYRIAC LETTER SUPERSCRIPT ALAPH, LATIN SMALL LETTER B
+0061 0E38 0C56 0C55 0C56 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062; # (a◌ุ◌ౖ◌ౕ◌ౖb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; ) LATIN SMALL LETTER A, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, TELUGU LENGTH MARK, TELUGU AI LENGTH MARK, LATIN SMALL LETTER B
+0061 0C56 0E38 0C56 0C55 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062; # (a◌ౖ◌ุ◌ౖ◌ౕb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; ) LATIN SMALL LETTER A, TELUGU AI LENGTH MARK, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, TELUGU LENGTH MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 0CBC 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062; # (a◌゙◌़◌̴◌಼b; a◌̴◌़◌಼◌゙b; a◌̴◌़◌಼◌゙b; a◌̴◌़◌಼◌゙b; a◌̴◌़◌಼◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, KANNADA SIGN NUKTA, LATIN SMALL LETTER B
+0061 0CBC 3099 093C 0334 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062; # (a◌಼◌゙◌़◌̴b; a◌̴◌಼◌़◌゙b; a◌̴◌಼◌़◌゙b; a◌̴◌಼◌़◌゙b; a◌̴◌಼◌़◌゙b; ) LATIN SMALL LETTER A, KANNADA SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0CCD 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà³b; a◌゙◌à¥â—Œà³â—ŒÖ°b; a◌゙◌à¥â—Œà³â—ŒÖ°b; a◌゙◌à¥â—Œà³â—ŒÖ°b; a◌゙◌à¥â—Œà³â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KANNADA SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0CCD 05B0 094D 3099 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062; # (aâ—Œà³â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à³â—Œà¥â—ŒÖ°b; a◌゙◌à³â—Œà¥â—ŒÖ°b; a◌゙◌à³â—Œà¥â—ŒÖ°b; a◌゙◌à³â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, KANNADA SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0D4D 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œàµb; a◌゙◌à¥â—Œàµâ—ŒÖ°b; a◌゙◌à¥â—Œàµâ—ŒÖ°b; a◌゙◌à¥â—Œàµâ—ŒÖ°b; a◌゙◌à¥â—Œàµâ—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, MALAYALAM SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0D4D 05B0 094D 3099 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062; # (aâ—Œàµâ—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌àµâ—Œà¥â—ŒÖ°b; a◌゙◌àµâ—Œà¥â—ŒÖ°b; a◌゙◌àµâ—Œà¥â—ŒÖ°b; a◌゙◌àµâ—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, MALAYALAM SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0DCA 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà·Šb; a◌゙◌à¥â—Œà·Šâ—ŒÖ°b; a◌゙◌à¥â—Œà·Šâ—ŒÖ°b; a◌゙◌à¥â—Œà·Šâ—ŒÖ°b; a◌゙◌à¥â—Œà·Šâ—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, SINHALA SIGN AL-LAKUNA, LATIN SMALL LETTER B
+0061 0DCA 05B0 094D 3099 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062; # (a◌්◌ְ◌à¥â—Œã‚™b; a◌゙◌්◌à¥â—ŒÖ°b; a◌゙◌්◌à¥â—ŒÖ°b; a◌゙◌්◌à¥â—ŒÖ°b; a◌゙◌්◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, SINHALA SIGN AL-LAKUNA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0E48 0E38 0C56 0E38 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062; # (a◌่◌ุ◌ౖ◌ุb; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; ) LATIN SMALL LETTER A, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, THAI CHARACTER SARA U, LATIN SMALL LETTER B
+0061 0E38 0E48 0E38 0C56 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062; # (a◌ุ◌่◌ุ◌ౖb; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; ) LATIN SMALL LETTER A, THAI CHARACTER SARA U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, LATIN SMALL LETTER B
+0061 0E48 0E38 0C56 0E39 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062; # (a◌่◌ุ◌ౖ◌ูb; a◌ౖ◌ุ◌ู◌่b; a◌ౖ◌ุ◌ู◌่b; a◌ౖ◌ุ◌ู◌่b; a◌ౖ◌ุ◌ู◌่b; ) LATIN SMALL LETTER A, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, THAI CHARACTER SARA UU, LATIN SMALL LETTER B
+0061 0E39 0E48 0E38 0C56 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062; # (a◌ู◌่◌ุ◌ౖb; a◌ౖ◌ู◌ุ◌่b; a◌ౖ◌ู◌ุ◌่b; a◌ౖ◌ู◌ุ◌่b; a◌ౖ◌ู◌ุ◌่b; ) LATIN SMALL LETTER A, THAI CHARACTER SARA UU, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0E3A 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà¸ºb; a◌゙◌à¥â—Œà¸ºâ—ŒÖ°b; a◌゙◌à¥â—Œà¸ºâ—ŒÖ°b; a◌゙◌à¥â—Œà¸ºâ—ŒÖ°b; a◌゙◌à¥â—Œà¸ºâ—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, THAI CHARACTER PHINTHU, LATIN SMALL LETTER B
+0061 0E3A 05B0 094D 3099 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062; # (a◌ฺ◌ְ◌à¥â—Œã‚™b; a◌゙◌ฺ◌à¥â—ŒÖ°b; a◌゙◌ฺ◌à¥â—ŒÖ°b; a◌゙◌ฺ◌à¥â—ŒÖ°b; a◌゙◌ฺ◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, THAI CHARACTER PHINTHU, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0EB8 0E48 0E38 0E48 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062; # (a◌ຸ◌่◌ุ◌่b; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; ) LATIN SMALL LETTER A, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, THAI CHARACTER MAI EK, LATIN SMALL LETTER B
+0061 0E48 0EB8 0E48 0E38 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062; # (a◌่◌ຸ◌่◌ุb; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; ) LATIN SMALL LETTER A, THAI CHARACTER MAI EK, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, LATIN SMALL LETTER B
+0061 0EB8 0E48 0E38 0E49 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062; # (a◌ຸ◌่◌ุ◌้b; a◌ุ◌่◌้◌ຸb; a◌ุ◌่◌้◌ຸb; a◌ุ◌่◌้◌ຸb; a◌ุ◌่◌้◌ຸb; ) LATIN SMALL LETTER A, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, THAI CHARACTER MAI THO, LATIN SMALL LETTER B
+0061 0E49 0EB8 0E48 0E38 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062; # (a◌้◌ຸ◌่◌ุb; a◌ุ◌้◌่◌ຸb; a◌ุ◌้◌่◌ຸb; a◌ุ◌้◌่◌ຸb; a◌ุ◌้◌่◌ຸb; ) LATIN SMALL LETTER A, THAI CHARACTER MAI THO, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, LATIN SMALL LETTER B
+0061 0EB8 0E48 0E38 0E4A 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062; # (a◌ຸ◌่◌ุ◌๊b; a◌ุ◌่◌๊◌ຸb; a◌ุ◌่◌๊◌ຸb; a◌ุ◌่◌๊◌ຸb; a◌ุ◌่◌๊◌ຸb; ) LATIN SMALL LETTER A, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, THAI CHARACTER MAI TRI, LATIN SMALL LETTER B
+0061 0E4A 0EB8 0E48 0E38 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062; # (a◌๊◌ຸ◌่◌ุb; a◌ุ◌๊◌่◌ຸb; a◌ุ◌๊◌่◌ຸb; a◌ุ◌๊◌่◌ຸb; a◌ุ◌๊◌่◌ຸb; ) LATIN SMALL LETTER A, THAI CHARACTER MAI TRI, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, LATIN SMALL LETTER B
+0061 0EB8 0E48 0E38 0E4B 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062; # (a◌ຸ◌่◌ุ◌๋b; a◌ุ◌่◌๋◌ຸb; a◌ุ◌่◌๋◌ຸb; a◌ุ◌่◌๋◌ຸb; a◌ุ◌่◌๋◌ຸb; ) LATIN SMALL LETTER A, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, THAI CHARACTER MAI CHATTAWA, LATIN SMALL LETTER B
+0061 0E4B 0EB8 0E48 0E38 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062; # (a◌๋◌ຸ◌่◌ุb; a◌ุ◌๋◌่◌ຸb; a◌ุ◌๋◌่◌ຸb; a◌ุ◌๋◌่◌ຸb; a◌ุ◌๋◌่◌ຸb; ) LATIN SMALL LETTER A, THAI CHARACTER MAI CHATTAWA, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, LATIN SMALL LETTER B
+0061 0EC8 0EB8 0E48 0EB8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062; # (a◌່◌ຸ◌่◌ຸb; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; ) LATIN SMALL LETTER A, LAO TONE MAI EK, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, LAO VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0EB8 0EC8 0EB8 0E48 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062; # (a◌ຸ◌່◌ຸ◌่b; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; ) LATIN SMALL LETTER A, LAO VOWEL SIGN U, LAO TONE MAI EK, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, LATIN SMALL LETTER B
+0061 0EC8 0EB8 0E48 0EB9 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062; # (a◌່◌ຸ◌่◌ູb; a◌่◌ຸ◌ູ◌່b; a◌่◌ຸ◌ູ◌່b; a◌่◌ຸ◌ູ◌່b; a◌่◌ຸ◌ູ◌່b; ) LATIN SMALL LETTER A, LAO TONE MAI EK, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, LAO VOWEL SIGN UU, LATIN SMALL LETTER B
+0061 0EB9 0EC8 0EB8 0E48 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062; # (a◌ູ◌່◌ຸ◌่b; a◌่◌ູ◌ຸ◌່b; a◌่◌ູ◌ຸ◌່b; a◌่◌ູ◌ຸ◌່b; a◌่◌ູ◌ຸ◌່b; ) LATIN SMALL LETTER A, LAO VOWEL SIGN UU, LAO TONE MAI EK, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, LATIN SMALL LETTER B
+0061 0F71 0EC8 0EB8 0EC8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062; # (a◌ཱ◌່◌ຸ◌່b; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LAO TONE MAI EK, LATIN SMALL LETTER B
+0061 0EC8 0F71 0EC8 0EB8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062; # (a◌່◌ཱ◌່◌ຸb; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; ) LATIN SMALL LETTER A, LAO TONE MAI EK, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0F71 0EC8 0EB8 0EC9 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062; # (a◌ཱ◌່◌ຸ◌້b; a◌ຸ◌່◌້◌ཱb; a◌ຸ◌່◌້◌ཱb; a◌ຸ◌່◌້◌ཱb; a◌ຸ◌່◌້◌ཱb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LAO TONE MAI THO, LATIN SMALL LETTER B
+0061 0EC9 0F71 0EC8 0EB8 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062; # (a◌້◌ཱ◌່◌ຸb; a◌ຸ◌້◌່◌ཱb; a◌ຸ◌້◌່◌ཱb; a◌ຸ◌້◌່◌ཱb; a◌ຸ◌້◌່◌ཱb; ) LATIN SMALL LETTER A, LAO TONE MAI THO, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0F71 0EC8 0EB8 0ECA 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062; # (a◌ཱ◌່◌ຸ◌໊b; a◌ຸ◌່◌໊◌ཱb; a◌ຸ◌່◌໊◌ཱb; a◌ຸ◌່◌໊◌ཱb; a◌ຸ◌່◌໊◌ཱb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LAO TONE MAI TI, LATIN SMALL LETTER B
+0061 0ECA 0F71 0EC8 0EB8 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062; # (a◌໊◌ཱ◌່◌ຸb; a◌ຸ◌໊◌່◌ཱb; a◌ຸ◌໊◌່◌ཱb; a◌ຸ◌໊◌່◌ཱb; a◌ຸ◌໊◌່◌ཱb; ) LATIN SMALL LETTER A, LAO TONE MAI TI, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0F71 0EC8 0EB8 0ECB 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062; # (a◌ཱ◌່◌ຸ◌໋b; a◌ຸ◌່◌໋◌ཱb; a◌ຸ◌່◌໋◌ཱb; a◌ຸ◌່◌໋◌ཱb; a◌ຸ◌່◌໋◌ཱb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LAO TONE MAI CATAWA, LATIN SMALL LETTER B
+0061 0ECB 0F71 0EC8 0EB8 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062; # (a◌໋◌ཱ◌່◌ຸb; a◌ຸ◌໋◌່◌ཱb; a◌ຸ◌໋◌່◌ཱb; a◌ຸ◌໋◌່◌ཱb; a◌ຸ◌໋◌່◌ཱb; ) LATIN SMALL LETTER A, LAO TONE MAI CATAWA, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LATIN SMALL LETTER B
+0061 059A 0316 302A 0F18 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062; # (a◌֚◌̖◌〪◌༘b; a◌〪◌̖◌༘◌֚b; a◌〪◌̖◌༘◌֚b; a◌〪◌̖◌༘◌֚b; a◌〪◌̖◌༘◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TIBETAN ASTROLOGICAL SIGN -KHYUD PA, LATIN SMALL LETTER B
+0061 0F18 059A 0316 302A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062; # (a◌༘◌֚◌̖◌〪b; a◌〪◌༘◌̖◌֚b; a◌〪◌༘◌̖◌֚b; a◌〪◌༘◌̖◌֚b; a◌〪◌༘◌̖◌֚b; ) LATIN SMALL LETTER A, TIBETAN ASTROLOGICAL SIGN -KHYUD PA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0F19 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062; # (a◌֚◌̖◌〪◌༙b; a◌〪◌̖◌༙◌֚b; a◌〪◌̖◌༙◌֚b; a◌〪◌̖◌༙◌֚b; a◌〪◌̖◌༙◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS, LATIN SMALL LETTER B
+0061 0F19 059A 0316 302A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062; # (a◌༙◌֚◌̖◌〪b; a◌〪◌༙◌̖◌֚b; a◌〪◌༙◌̖◌֚b; a◌〪◌༙◌̖◌֚b; a◌〪◌༙◌̖◌֚b; ) LATIN SMALL LETTER A, TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0F35 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062; # (a◌֚◌̖◌〪◌༵b; a◌〪◌̖◌༵◌֚b; a◌〪◌̖◌༵◌֚b; a◌〪◌̖◌༵◌֚b; a◌〪◌̖◌༵◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TIBETAN MARK NGAS BZUNG NYI ZLA, LATIN SMALL LETTER B
+0061 0F35 059A 0316 302A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062; # (a◌༵◌֚◌̖◌〪b; a◌〪◌༵◌̖◌֚b; a◌〪◌༵◌̖◌֚b; a◌〪◌༵◌̖◌֚b; a◌〪◌༵◌̖◌֚b; ) LATIN SMALL LETTER A, TIBETAN MARK NGAS BZUNG NYI ZLA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0F37 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062; # (a◌֚◌̖◌〪◌༷b; a◌〪◌̖◌༷◌֚b; a◌〪◌̖◌༷◌֚b; a◌〪◌̖◌༷◌֚b; a◌〪◌̖◌༷◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TIBETAN MARK NGAS BZUNG SGOR RTAGS, LATIN SMALL LETTER B
+0061 0F37 059A 0316 302A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062; # (a◌༷◌֚◌̖◌〪b; a◌〪◌༷◌̖◌֚b; a◌〪◌༷◌̖◌֚b; a◌〪◌༷◌̖◌֚b; a◌〪◌༷◌̖◌֚b; ) LATIN SMALL LETTER A, TIBETAN MARK NGAS BZUNG SGOR RTAGS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 302A 031B 1DCE 0F39 0062;0061 1DCE 031B 0F39 302A 0062;0061 1DCE 031B 0F39 302A 0062;0061 1DCE 031B 0F39 302A 0062;0061 1DCE 031B 0F39 302A 0062; # (a◌〪◌̛◌᷎◌༹b; a◌᷎◌̛◌༹◌〪b; a◌᷎◌̛◌༹◌〪b; a◌᷎◌̛◌༹◌〪b; a◌᷎◌̛◌༹◌〪b; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, TIBETAN MARK TSA -PHRU, LATIN SMALL LETTER B
+0061 0F39 302A 031B 1DCE 0062;0061 1DCE 0F39 031B 302A 0062;0061 1DCE 0F39 031B 302A 0062;0061 1DCE 0F39 031B 302A 0062;0061 1DCE 0F39 031B 302A 0062; # (a◌༹◌〪◌̛◌᷎b; a◌᷎◌༹◌̛◌〪b; a◌᷎◌༹◌̛◌〪b; a◌᷎◌༹◌̛◌〪b; a◌᷎◌༹◌̛◌〪b; ) LATIN SMALL LETTER A, TIBETAN MARK TSA -PHRU, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
+0061 0F72 0F71 0EC8 0F71 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062; # (a◌ི◌ཱ◌່◌ཱb; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0F71 0F72 0F71 0EC8 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062; # (a◌ཱ◌ི◌ཱ◌່b; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F72 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062; # (a◌ུ◌ི◌ཱ◌ིb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN I, LATIN SMALL LETTER B
+0061 0F72 0F74 0F72 0F71 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062; # (a◌ི◌ུ◌ི◌ཱb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0321 0F74 0F72 0F74 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062; # (a◌̡◌ུ◌ི◌ུb; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; ) LATIN SMALL LETTER A, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0F74 0321 0F74 0F72 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062; # (a◌ུ◌̡◌ུ◌ིb; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F7A 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062; # (a◌ུ◌ི◌ཱ◌ེb; a◌ཱ◌ི◌ེ◌ུb; a◌ཱ◌ི◌ེ◌ུb; a◌ཱ◌ི◌ེ◌ུb; a◌ཱ◌ི◌ེ◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN E, LATIN SMALL LETTER B
+0061 0F7A 0F74 0F72 0F71 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062; # (a◌ེ◌ུ◌ི◌ཱb; a◌ཱ◌ེ◌ི◌ུb; a◌ཱ◌ེ◌ི◌ུb; a◌ཱ◌ེ◌ི◌ུb; a◌ཱ◌ེ◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN E, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F7B 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062; # (a◌ུ◌ི◌ཱ◌ཻb; a◌ཱ◌ི◌ཻ◌ུb; a◌ཱ◌ི◌ཻ◌ུb; a◌ཱ◌ི◌ཻ◌ུb; a◌ཱ◌ི◌ཻ◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN EE, LATIN SMALL LETTER B
+0061 0F7B 0F74 0F72 0F71 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062; # (a◌ཻ◌ུ◌ི◌ཱb; a◌ཱ◌ཻ◌ི◌ུb; a◌ཱ◌ཻ◌ི◌ུb; a◌ཱ◌ཻ◌ི◌ུb; a◌ཱ◌ཻ◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN EE, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F7C 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062; # (a◌ུ◌ི◌ཱ◌ོb; a◌ཱ◌ི◌ོ◌ུb; a◌ཱ◌ི◌ོ◌ུb; a◌ཱ◌ི◌ོ◌ུb; a◌ཱ◌ི◌ོ◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN O, LATIN SMALL LETTER B
+0061 0F7C 0F74 0F72 0F71 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062; # (a◌ོ◌ུ◌ི◌ཱb; a◌ཱ◌ོ◌ི◌ུb; a◌ཱ◌ོ◌ི◌ུb; a◌ཱ◌ོ◌ི◌ུb; a◌ཱ◌ོ◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN O, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F7D 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062; # (a◌ུ◌ི◌ཱ◌ཽb; a◌ཱ◌ི◌ཽ◌ུb; a◌ཱ◌ི◌ཽ◌ུb; a◌ཱ◌ི◌ཽ◌ུb; a◌ཱ◌ི◌ཽ◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN OO, LATIN SMALL LETTER B
+0061 0F7D 0F74 0F72 0F71 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062; # (a◌ཽ◌ུ◌ི◌ཱb; a◌ཱ◌ཽ◌ི◌ུb; a◌ཱ◌ཽ◌ི◌ུb; a◌ཱ◌ཽ◌ི◌ུb; a◌ཱ◌ཽ◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN OO, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F80 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062; # (a◌ུ◌ི◌ཱ◌ྀb; a◌ཱ◌ི◌ྀ◌ུb; a◌ཱ◌ི◌ྀ◌ུb; a◌ཱ◌ི◌ྀ◌ུb; a◌ཱ◌ི◌ྀ◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN REVERSED I, LATIN SMALL LETTER B
+0061 0F80 0F74 0F72 0F71 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062; # (a◌ྀ◌ུ◌ི◌ཱb; a◌ཱ◌ྀ◌ི◌ུb; a◌ཱ◌ྀ◌ི◌ུb; a◌ཱ◌ྀ◌ི◌ུb; a◌ཱ◌ྀ◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN REVERSED I, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0F82 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062; # (a◌̕◌̀◌֮◌ྂb; à◌֮◌ྂ◌̕b; a◌֮◌̀◌ྂ◌̕b; à◌֮◌ྂ◌̕b; a◌֮◌̀◌ྂ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TIBETAN SIGN NYI ZLA NAA DA, LATIN SMALL LETTER B
+0061 0F82 0315 0300 05AE 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062; # (a◌ྂ◌̕◌̀◌֮b; a◌֮◌ྂ◌̀◌̕b; a◌֮◌ྂ◌̀◌̕b; a◌֮◌ྂ◌̀◌̕b; a◌֮◌ྂ◌̀◌̕b; ) LATIN SMALL LETTER A, TIBETAN SIGN NYI ZLA NAA DA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0F83 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062; # (a◌̕◌̀◌֮◌ྃb; à◌֮◌ྃ◌̕b; a◌֮◌̀◌ྃ◌̕b; à◌֮◌ྃ◌̕b; a◌֮◌̀◌ྃ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TIBETAN SIGN SNA LDAN, LATIN SMALL LETTER B
+0061 0F83 0315 0300 05AE 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062; # (a◌ྃ◌̕◌̀◌֮b; a◌֮◌ྃ◌̀◌̕b; a◌֮◌ྃ◌̀◌̕b; a◌֮◌ྃ◌̀◌̕b; a◌֮◌ྃ◌̀◌̕b; ) LATIN SMALL LETTER A, TIBETAN SIGN SNA LDAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0F84 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà¾„b; a◌゙◌à¥â—Œà¾„◌ְb; a◌゙◌à¥â—Œà¾„◌ְb; a◌゙◌à¥â—Œà¾„◌ְb; a◌゙◌à¥â—Œà¾„◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TIBETAN MARK HALANTA, LATIN SMALL LETTER B
+0061 0F84 05B0 094D 3099 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062; # (a◌྄◌ְ◌à¥â—Œã‚™b; a◌゙◌྄◌à¥â—ŒÖ°b; a◌゙◌྄◌à¥â—ŒÖ°b; a◌゙◌྄◌à¥â—ŒÖ°b; a◌゙◌྄◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TIBETAN MARK HALANTA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0F86 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062; # (a◌̕◌̀◌֮◌྆b; à◌֮◌྆◌̕b; a◌֮◌̀◌྆◌̕b; à◌֮◌྆◌̕b; a◌֮◌̀◌྆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TIBETAN SIGN LCI RTAGS, LATIN SMALL LETTER B
+0061 0F86 0315 0300 05AE 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062; # (a◌྆◌̕◌̀◌֮b; a◌֮◌྆◌̀◌̕b; a◌֮◌྆◌̀◌̕b; a◌֮◌྆◌̀◌̕b; a◌֮◌྆◌̀◌̕b; ) LATIN SMALL LETTER A, TIBETAN SIGN LCI RTAGS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0F87 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062; # (a◌̕◌̀◌֮◌྇b; à◌֮◌྇◌̕b; a◌֮◌̀◌྇◌̕b; à◌֮◌྇◌̕b; a◌֮◌̀◌྇◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TIBETAN SIGN YANG RTAGS, LATIN SMALL LETTER B
+0061 0F87 0315 0300 05AE 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062; # (a◌྇◌̕◌̀◌֮b; a◌֮◌྇◌̀◌̕b; a◌֮◌྇◌̀◌̕b; a◌֮◌྇◌̀◌̕b; a◌֮◌྇◌̀◌̕b; ) LATIN SMALL LETTER A, TIBETAN SIGN YANG RTAGS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0FC6 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062; # (a◌֚◌̖◌〪◌࿆b; a◌〪◌̖◌࿆◌֚b; a◌〪◌̖◌࿆◌֚b; a◌〪◌̖◌࿆◌֚b; a◌〪◌̖◌࿆◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TIBETAN SYMBOL PADMA GDAN, LATIN SMALL LETTER B
+0061 0FC6 059A 0316 302A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062; # (a◌࿆◌֚◌̖◌〪b; a◌〪◌࿆◌̖◌֚b; a◌〪◌࿆◌̖◌֚b; a◌〪◌࿆◌̖◌֚b; a◌〪◌࿆◌̖◌֚b; ) LATIN SMALL LETTER A, TIBETAN SYMBOL PADMA GDAN, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 1037 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062; # (a◌゙◌़◌̴◌့b; a◌̴◌़◌့◌゙b; a◌̴◌़◌့◌゙b; a◌̴◌़◌့◌゙b; a◌̴◌़◌့◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, MYANMAR SIGN DOT BELOW, LATIN SMALL LETTER B
+0061 1037 3099 093C 0334 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062; # (a◌့◌゙◌़◌̴b; a◌̴◌့◌़◌゙b; a◌̴◌့◌़◌゙b; a◌̴◌့◌़◌゙b; a◌̴◌့◌़◌゙b; ) LATIN SMALL LETTER A, MYANMAR SIGN DOT BELOW, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1039 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œá€¹b; a◌゙◌à¥â—Œá€¹â—ŒÖ°b; a◌゙◌à¥â—Œá€¹â—ŒÖ°b; a◌゙◌à¥â—Œá€¹â—ŒÖ°b; a◌゙◌à¥â—Œá€¹â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, MYANMAR SIGN VIRAMA, LATIN SMALL LETTER B
+0061 1039 05B0 094D 3099 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062; # (a◌္◌ְ◌à¥â—Œã‚™b; a◌゙◌္◌à¥â—ŒÖ°b; a◌゙◌္◌à¥â—ŒÖ°b; a◌゙◌္◌à¥â—ŒÖ°b; a◌゙◌္◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, MYANMAR SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 103A 0062;0061 3099 094D 103A 05B0 0062;0061 3099 094D 103A 05B0 0062;0061 3099 094D 103A 05B0 0062;0061 3099 094D 103A 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œá€ºb; a◌゙◌à¥â—Œá€ºâ—ŒÖ°b; a◌゙◌à¥â—Œá€ºâ—ŒÖ°b; a◌゙◌à¥â—Œá€ºâ—ŒÖ°b; a◌゙◌à¥â—Œá€ºâ—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, MYANMAR SIGN ASAT, LATIN SMALL LETTER B
+0061 103A 05B0 094D 3099 0062;0061 3099 103A 094D 05B0 0062;0061 3099 103A 094D 05B0 0062;0061 3099 103A 094D 05B0 0062;0061 3099 103A 094D 05B0 0062; # (a◌်◌ְ◌à¥â—Œã‚™b; a◌゙◌်◌à¥â—ŒÖ°b; a◌゙◌်◌à¥â—ŒÖ°b; a◌゙◌်◌à¥â—ŒÖ°b; a◌゙◌်◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, MYANMAR SIGN ASAT, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 108D 0062;0061 302A 0316 108D 059A 0062;0061 302A 0316 108D 059A 0062;0061 302A 0316 108D 059A 0062;0061 302A 0316 108D 059A 0062; # (a◌֚◌̖◌〪◌á‚b; a◌〪◌̖◌á‚◌֚b; a◌〪◌̖◌á‚◌֚b; a◌〪◌̖◌á‚◌֚b; a◌〪◌̖◌á‚◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE, LATIN SMALL LETTER B
+0061 108D 059A 0316 302A 0062;0061 302A 108D 0316 059A 0062;0061 302A 108D 0316 059A 0062;0061 302A 108D 0316 059A 0062;0061 302A 108D 0316 059A 0062; # (aâ—Œá‚◌֚◌̖◌〪b; a◌〪◌á‚◌̖◌֚b; a◌〪◌á‚◌̖◌֚b; a◌〪◌á‚◌̖◌֚b; a◌〪◌á‚◌̖◌֚b; ) LATIN SMALL LETTER A, MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 135D 0062;00E0 05AE 135D 0315 0062;0061 05AE 0300 135D 0315 0062;00E0 05AE 135D 0315 0062;0061 05AE 0300 135D 0315 0062; # (a◌̕◌̀◌֮◌áb; à◌֮◌á◌̕b; a◌֮◌̀◌á◌̕b; à◌֮◌á◌̕b; a◌֮◌̀◌á◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK, LATIN SMALL LETTER B
+0061 135D 0315 0300 05AE 0062;0061 05AE 135D 0300 0315 0062;0061 05AE 135D 0300 0315 0062;0061 05AE 135D 0300 0315 0062;0061 05AE 135D 0300 0315 0062; # (aâ—Œá◌̕◌̀◌֮b; a◌֮◌á◌̀◌̕b; a◌֮◌á◌̀◌̕b; a◌֮◌á◌̀◌̕b; a◌֮◌á◌̀◌̕b; ) LATIN SMALL LETTER A, ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 135E 0062;00E0 05AE 135E 0315 0062;0061 05AE 0300 135E 0315 0062;00E0 05AE 135E 0315 0062;0061 05AE 0300 135E 0315 0062; # (a◌̕◌̀◌֮◌ážb; à◌֮◌ážâ—ŒÌ•b; a◌֮◌̀◌ážâ—ŒÌ•b; à◌֮◌ážâ—ŒÌ•b; a◌֮◌̀◌ážâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ETHIOPIC COMBINING VOWEL LENGTH MARK, LATIN SMALL LETTER B
+0061 135E 0315 0300 05AE 0062;0061 05AE 135E 0300 0315 0062;0061 05AE 135E 0300 0315 0062;0061 05AE 135E 0300 0315 0062;0061 05AE 135E 0300 0315 0062; # (aâ—Œážâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ážâ—ŒÌ€â—ŒÌ•b; a◌֮◌ážâ—ŒÌ€â—ŒÌ•b; a◌֮◌ážâ—ŒÌ€â—ŒÌ•b; a◌֮◌ážâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, ETHIOPIC COMBINING VOWEL LENGTH MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 135F 0062;00E0 05AE 135F 0315 0062;0061 05AE 0300 135F 0315 0062;00E0 05AE 135F 0315 0062;0061 05AE 0300 135F 0315 0062; # (a◌̕◌̀◌֮◌áŸb; à◌֮◌áŸâ—ŒÌ•b; a◌֮◌̀◌áŸâ—ŒÌ•b; à◌֮◌áŸâ—ŒÌ•b; a◌֮◌̀◌áŸâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ETHIOPIC COMBINING GEMINATION MARK, LATIN SMALL LETTER B
+0061 135F 0315 0300 05AE 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062; # (aâ—ŒáŸâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, ETHIOPIC COMBINING GEMINATION MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1714 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œáœ”b; a◌゙◌à¥â—Œáœ”◌ְb; a◌゙◌à¥â—Œáœ”◌ְb; a◌゙◌à¥â—Œáœ”◌ְb; a◌゙◌à¥â—Œáœ”◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TAGALOG SIGN VIRAMA, LATIN SMALL LETTER B
+0061 1714 05B0 094D 3099 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062; # (a◌᜔◌ְ◌à¥â—Œã‚™b; a◌゙◌᜔◌à¥â—ŒÖ°b; a◌゙◌᜔◌à¥â—ŒÖ°b; a◌゙◌᜔◌à¥â—ŒÖ°b; a◌゙◌᜔◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TAGALOG SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1734 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œáœ´b; a◌゙◌à¥â—Œáœ´â—ŒÖ°b; a◌゙◌à¥â—Œáœ´â—ŒÖ°b; a◌゙◌à¥â—Œáœ´â—ŒÖ°b; a◌゙◌à¥â—Œáœ´â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HANUNOO SIGN PAMUDPOD, LATIN SMALL LETTER B
+0061 1734 05B0 094D 3099 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062; # (a◌᜴◌ְ◌à¥â—Œã‚™b; a◌゙◌᜴◌à¥â—ŒÖ°b; a◌゙◌᜴◌à¥â—ŒÖ°b; a◌゙◌᜴◌à¥â—ŒÖ°b; a◌゙◌᜴◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, HANUNOO SIGN PAMUDPOD, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 17D2 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—ŒáŸ’b; a◌゙◌à¥â—ŒáŸ’◌ְb; a◌゙◌à¥â—ŒáŸ’◌ְb; a◌゙◌à¥â—ŒáŸ’◌ְb; a◌゙◌à¥â—ŒáŸ’◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KHMER SIGN COENG, LATIN SMALL LETTER B
+0061 17D2 05B0 094D 3099 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062; # (a◌្◌ְ◌à¥â—Œã‚™b; a◌゙◌្◌à¥â—ŒÖ°b; a◌゙◌្◌à¥â—ŒÖ°b; a◌゙◌្◌à¥â—ŒÖ°b; a◌゙◌្◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, KHMER SIGN COENG, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 17DD 0062;00E0 05AE 17DD 0315 0062;0061 05AE 0300 17DD 0315 0062;00E0 05AE 17DD 0315 0062;0061 05AE 0300 17DD 0315 0062; # (a◌̕◌̀◌֮◌áŸb; à◌֮◌áŸâ—ŒÌ•b; a◌֮◌̀◌áŸâ—ŒÌ•b; à◌֮◌áŸâ—ŒÌ•b; a◌֮◌̀◌áŸâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, KHMER SIGN ATTHACAN, LATIN SMALL LETTER B
+0061 17DD 0315 0300 05AE 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062; # (aâ—ŒáŸâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, KHMER SIGN ATTHACAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0300 05AE 1D16D 18A9 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062; # (a◌̀◌֮ð…­â—Œá¢©b; àð…­â—ŒÖ®â—Œá¢©b; að…­â—ŒÖ®â—Œá¢©â—ŒÌ€b; àð…­â—ŒÖ®â—Œá¢©b; að…­â—ŒÖ®â—Œá¢©â—ŒÌ€b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, MONGOLIAN LETTER ALI GALI DAGALGA, LATIN SMALL LETTER B
+0061 18A9 0300 05AE 1D16D 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062; # (a◌ᢩ◌̀◌֮ð…­b; àð…­â—Œá¢©â—ŒÖ®b; að…­â—Œá¢©â—ŒÖ®â—ŒÌ€b; àð…­â—Œá¢©â—ŒÖ®b; að…­â—Œá¢©â—ŒÖ®â—ŒÌ€b; ) LATIN SMALL LETTER A, MONGOLIAN LETTER ALI GALI DAGALGA, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, LATIN SMALL LETTER B
+0061 302E 059A 0316 1939 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062; # (a〮◌֚◌̖◌᤹b; a◌̖◌֚◌᤹〮b; a◌̖◌֚◌᤹〮b; a◌̖◌֚◌᤹〮b; a◌̖◌֚◌᤹〮b; ) LATIN SMALL LETTER A, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, LIMBU SIGN MUKPHRENG, LATIN SMALL LETTER B
+0061 1939 302E 059A 0316 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062; # (a◌᤹〮◌֚◌̖b; a◌̖◌᤹◌֚〮b; a◌̖◌᤹◌֚〮b; a◌̖◌᤹◌֚〮b; a◌̖◌᤹◌֚〮b; ) LATIN SMALL LETTER A, LIMBU SIGN MUKPHRENG, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, LATIN SMALL LETTER B
+0061 0315 0300 05AE 193A 0062;00E0 05AE 193A 0315 0062;0061 05AE 0300 193A 0315 0062;00E0 05AE 193A 0315 0062;0061 05AE 0300 193A 0315 0062; # (a◌̕◌̀◌֮◌᤺b; à◌֮◌᤺◌̕b; a◌֮◌̀◌᤺◌̕b; à◌֮◌᤺◌̕b; a◌֮◌̀◌᤺◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LIMBU SIGN KEMPHRENG, LATIN SMALL LETTER B
+0061 193A 0315 0300 05AE 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062; # (a◌᤺◌̕◌̀◌֮b; a◌֮◌᤺◌̀◌̕b; a◌֮◌᤺◌̀◌̕b; a◌֮◌᤺◌̀◌̕b; a◌֮◌᤺◌̀◌̕b; ) LATIN SMALL LETTER A, LIMBU SIGN KEMPHRENG, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 193B 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062; # (a◌֚◌̖◌〪◌᤻b; a◌〪◌̖◌᤻◌֚b; a◌〪◌̖◌᤻◌֚b; a◌〪◌̖◌᤻◌֚b; a◌〪◌̖◌᤻◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LIMBU SIGN SA-I, LATIN SMALL LETTER B
+0061 193B 059A 0316 302A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062; # (a◌᤻◌֚◌̖◌〪b; a◌〪◌᤻◌̖◌֚b; a◌〪◌᤻◌̖◌֚b; a◌〪◌᤻◌̖◌֚b; a◌〪◌᤻◌̖◌֚b; ) LATIN SMALL LETTER A, LIMBU SIGN SA-I, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1A17 0062;00E0 05AE 1A17 0315 0062;0061 05AE 0300 1A17 0315 0062;00E0 05AE 1A17 0315 0062;0061 05AE 0300 1A17 0315 0062; # (a◌̕◌̀◌֮◌ᨗb; à◌֮◌ᨗ◌̕b; a◌֮◌̀◌ᨗ◌̕b; à◌֮◌ᨗ◌̕b; a◌֮◌̀◌ᨗ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BUGINESE VOWEL SIGN I, LATIN SMALL LETTER B
+0061 1A17 0315 0300 05AE 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062; # (a◌ᨗ◌̕◌̀◌֮b; a◌֮◌ᨗ◌̀◌̕b; a◌֮◌ᨗ◌̀◌̕b; a◌֮◌ᨗ◌̀◌̕b; a◌֮◌ᨗ◌̀◌̕b; ) LATIN SMALL LETTER A, BUGINESE VOWEL SIGN I, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1A18 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062; # (a◌֚◌̖◌〪◌ᨘb; a◌〪◌̖◌ᨘ◌֚b; a◌〪◌̖◌ᨘ◌֚b; a◌〪◌̖◌ᨘ◌֚b; a◌〪◌̖◌ᨘ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, BUGINESE VOWEL SIGN U, LATIN SMALL LETTER B
+0061 1A18 059A 0316 302A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062; # (a◌ᨘ◌֚◌̖◌〪b; a◌〪◌ᨘ◌̖◌֚b; a◌〪◌ᨘ◌̖◌֚b; a◌〪◌ᨘ◌̖◌֚b; a◌〪◌ᨘ◌̖◌֚b; ) LATIN SMALL LETTER A, BUGINESE VOWEL SIGN U, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1A60 0062;0061 3099 094D 1A60 05B0 0062;0061 3099 094D 1A60 05B0 0062;0061 3099 094D 1A60 05B0 0062;0061 3099 094D 1A60 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œá© b; a◌゙◌à¥â—Œá© â—ŒÖ°b; a◌゙◌à¥â—Œá© â—ŒÖ°b; a◌゙◌à¥â—Œá© â—ŒÖ°b; a◌゙◌à¥â—Œá© â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TAI THAM SIGN SAKOT, LATIN SMALL LETTER B
+0061 1A60 05B0 094D 3099 0062;0061 3099 1A60 094D 05B0 0062;0061 3099 1A60 094D 05B0 0062;0061 3099 1A60 094D 05B0 0062;0061 3099 1A60 094D 05B0 0062; # (a◌᩠◌ְ◌à¥â—Œã‚™b; a◌゙◌᩠◌à¥â—ŒÖ°b; a◌゙◌᩠◌à¥â—ŒÖ°b; a◌゙◌᩠◌à¥â—ŒÖ°b; a◌゙◌᩠◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TAI THAM SIGN SAKOT, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1A75 0062;00E0 05AE 1A75 0315 0062;0061 05AE 0300 1A75 0315 0062;00E0 05AE 1A75 0315 0062;0061 05AE 0300 1A75 0315 0062; # (a◌̕◌̀◌֮◌᩵b; à◌֮◌᩵◌̕b; a◌֮◌̀◌᩵◌̕b; à◌֮◌᩵◌̕b; a◌֮◌̀◌᩵◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI THAM SIGN TONE-1, LATIN SMALL LETTER B
+0061 1A75 0315 0300 05AE 0062;0061 05AE 1A75 0300 0315 0062;0061 05AE 1A75 0300 0315 0062;0061 05AE 1A75 0300 0315 0062;0061 05AE 1A75 0300 0315 0062; # (a◌᩵◌̕◌̀◌֮b; a◌֮◌᩵◌̀◌̕b; a◌֮◌᩵◌̀◌̕b; a◌֮◌᩵◌̀◌̕b; a◌֮◌᩵◌̀◌̕b; ) LATIN SMALL LETTER A, TAI THAM SIGN TONE-1, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1A76 0062;00E0 05AE 1A76 0315 0062;0061 05AE 0300 1A76 0315 0062;00E0 05AE 1A76 0315 0062;0061 05AE 0300 1A76 0315 0062; # (a◌̕◌̀◌֮◌᩶b; à◌֮◌᩶◌̕b; a◌֮◌̀◌᩶◌̕b; à◌֮◌᩶◌̕b; a◌֮◌̀◌᩶◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI THAM SIGN TONE-2, LATIN SMALL LETTER B
+0061 1A76 0315 0300 05AE 0062;0061 05AE 1A76 0300 0315 0062;0061 05AE 1A76 0300 0315 0062;0061 05AE 1A76 0300 0315 0062;0061 05AE 1A76 0300 0315 0062; # (a◌᩶◌̕◌̀◌֮b; a◌֮◌᩶◌̀◌̕b; a◌֮◌᩶◌̀◌̕b; a◌֮◌᩶◌̀◌̕b; a◌֮◌᩶◌̀◌̕b; ) LATIN SMALL LETTER A, TAI THAM SIGN TONE-2, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1A77 0062;00E0 05AE 1A77 0315 0062;0061 05AE 0300 1A77 0315 0062;00E0 05AE 1A77 0315 0062;0061 05AE 0300 1A77 0315 0062; # (a◌̕◌̀◌֮◌᩷b; à◌֮◌᩷◌̕b; a◌֮◌̀◌᩷◌̕b; à◌֮◌᩷◌̕b; a◌֮◌̀◌᩷◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI THAM SIGN KHUEN TONE-3, LATIN SMALL LETTER B
+0061 1A77 0315 0300 05AE 0062;0061 05AE 1A77 0300 0315 0062;0061 05AE 1A77 0300 0315 0062;0061 05AE 1A77 0300 0315 0062;0061 05AE 1A77 0300 0315 0062; # (a◌᩷◌̕◌̀◌֮b; a◌֮◌᩷◌̀◌̕b; a◌֮◌᩷◌̀◌̕b; a◌֮◌᩷◌̀◌̕b; a◌֮◌᩷◌̀◌̕b; ) LATIN SMALL LETTER A, TAI THAM SIGN KHUEN TONE-3, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1A78 0062;00E0 05AE 1A78 0315 0062;0061 05AE 0300 1A78 0315 0062;00E0 05AE 1A78 0315 0062;0061 05AE 0300 1A78 0315 0062; # (a◌̕◌̀◌֮◌᩸b; à◌֮◌᩸◌̕b; a◌֮◌̀◌᩸◌̕b; à◌֮◌᩸◌̕b; a◌֮◌̀◌᩸◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI THAM SIGN KHUEN TONE-4, LATIN SMALL LETTER B
+0061 1A78 0315 0300 05AE 0062;0061 05AE 1A78 0300 0315 0062;0061 05AE 1A78 0300 0315 0062;0061 05AE 1A78 0300 0315 0062;0061 05AE 1A78 0300 0315 0062; # (a◌᩸◌̕◌̀◌֮b; a◌֮◌᩸◌̀◌̕b; a◌֮◌᩸◌̀◌̕b; a◌֮◌᩸◌̀◌̕b; a◌֮◌᩸◌̀◌̕b; ) LATIN SMALL LETTER A, TAI THAM SIGN KHUEN TONE-4, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1A79 0062;00E0 05AE 1A79 0315 0062;0061 05AE 0300 1A79 0315 0062;00E0 05AE 1A79 0315 0062;0061 05AE 0300 1A79 0315 0062; # (a◌̕◌̀◌֮◌᩹b; à◌֮◌᩹◌̕b; a◌֮◌̀◌᩹◌̕b; à◌֮◌᩹◌̕b; a◌֮◌̀◌᩹◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI THAM SIGN KHUEN TONE-5, LATIN SMALL LETTER B
+0061 1A79 0315 0300 05AE 0062;0061 05AE 1A79 0300 0315 0062;0061 05AE 1A79 0300 0315 0062;0061 05AE 1A79 0300 0315 0062;0061 05AE 1A79 0300 0315 0062; # (a◌᩹◌̕◌̀◌֮b; a◌֮◌᩹◌̀◌̕b; a◌֮◌᩹◌̀◌̕b; a◌֮◌᩹◌̀◌̕b; a◌֮◌᩹◌̀◌̕b; ) LATIN SMALL LETTER A, TAI THAM SIGN KHUEN TONE-5, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1A7A 0062;00E0 05AE 1A7A 0315 0062;0061 05AE 0300 1A7A 0315 0062;00E0 05AE 1A7A 0315 0062;0061 05AE 0300 1A7A 0315 0062; # (a◌̕◌̀◌֮◌᩺b; à◌֮◌᩺◌̕b; a◌֮◌̀◌᩺◌̕b; à◌֮◌᩺◌̕b; a◌֮◌̀◌᩺◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI THAM SIGN RA HAAM, LATIN SMALL LETTER B
+0061 1A7A 0315 0300 05AE 0062;0061 05AE 1A7A 0300 0315 0062;0061 05AE 1A7A 0300 0315 0062;0061 05AE 1A7A 0300 0315 0062;0061 05AE 1A7A 0300 0315 0062; # (a◌᩺◌̕◌̀◌֮b; a◌֮◌᩺◌̀◌̕b; a◌֮◌᩺◌̀◌̕b; a◌֮◌᩺◌̀◌̕b; a◌֮◌᩺◌̀◌̕b; ) LATIN SMALL LETTER A, TAI THAM SIGN RA HAAM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1A7B 0062;00E0 05AE 1A7B 0315 0062;0061 05AE 0300 1A7B 0315 0062;00E0 05AE 1A7B 0315 0062;0061 05AE 0300 1A7B 0315 0062; # (a◌̕◌̀◌֮◌᩻b; à◌֮◌᩻◌̕b; a◌֮◌̀◌᩻◌̕b; à◌֮◌᩻◌̕b; a◌֮◌̀◌᩻◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI THAM SIGN MAI SAM, LATIN SMALL LETTER B
+0061 1A7B 0315 0300 05AE 0062;0061 05AE 1A7B 0300 0315 0062;0061 05AE 1A7B 0300 0315 0062;0061 05AE 1A7B 0300 0315 0062;0061 05AE 1A7B 0300 0315 0062; # (a◌᩻◌̕◌̀◌֮b; a◌֮◌᩻◌̀◌̕b; a◌֮◌᩻◌̀◌̕b; a◌֮◌᩻◌̀◌̕b; a◌֮◌᩻◌̀◌̕b; ) LATIN SMALL LETTER A, TAI THAM SIGN MAI SAM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1A7C 0062;00E0 05AE 1A7C 0315 0062;0061 05AE 0300 1A7C 0315 0062;00E0 05AE 1A7C 0315 0062;0061 05AE 0300 1A7C 0315 0062; # (a◌̕◌̀◌֮◌᩼b; à◌֮◌᩼◌̕b; a◌֮◌̀◌᩼◌̕b; à◌֮◌᩼◌̕b; a◌֮◌̀◌᩼◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI THAM SIGN KHUEN-LUE KARAN, LATIN SMALL LETTER B
+0061 1A7C 0315 0300 05AE 0062;0061 05AE 1A7C 0300 0315 0062;0061 05AE 1A7C 0300 0315 0062;0061 05AE 1A7C 0300 0315 0062;0061 05AE 1A7C 0300 0315 0062; # (a◌᩼◌̕◌̀◌֮b; a◌֮◌᩼◌̀◌̕b; a◌֮◌᩼◌̀◌̕b; a◌֮◌᩼◌̀◌̕b; a◌֮◌᩼◌̀◌̕b; ) LATIN SMALL LETTER A, TAI THAM SIGN KHUEN-LUE KARAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1A7F 0062;0061 302A 0316 1A7F 059A 0062;0061 302A 0316 1A7F 059A 0062;0061 302A 0316 1A7F 059A 0062;0061 302A 0316 1A7F 059A 0062; # (a◌֚◌̖◌〪◌᩿b; a◌〪◌̖◌᩿◌֚b; a◌〪◌̖◌᩿◌֚b; a◌〪◌̖◌᩿◌֚b; a◌〪◌̖◌᩿◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TAI THAM COMBINING CRYPTOGRAMMIC DOT, LATIN SMALL LETTER B
+0061 1A7F 059A 0316 302A 0062;0061 302A 1A7F 0316 059A 0062;0061 302A 1A7F 0316 059A 0062;0061 302A 1A7F 0316 059A 0062;0061 302A 1A7F 0316 059A 0062; # (a◌᩿◌֚◌̖◌〪b; a◌〪◌᩿◌̖◌֚b; a◌〪◌᩿◌̖◌֚b; a◌〪◌᩿◌̖◌֚b; a◌〪◌᩿◌̖◌֚b; ) LATIN SMALL LETTER A, TAI THAM COMBINING CRYPTOGRAMMIC DOT, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1AB0 0062;00E0 05AE 1AB0 0315 0062;0061 05AE 0300 1AB0 0315 0062;00E0 05AE 1AB0 0315 0062;0061 05AE 0300 1AB0 0315 0062; # (a◌̕◌̀◌֮◌᪰b; à◌֮◌᪰◌̕b; a◌֮◌̀◌᪰◌̕b; à◌֮◌᪰◌̕b; a◌֮◌̀◌᪰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLED CIRCUMFLEX ACCENT, LATIN SMALL LETTER B
+0061 1AB0 0315 0300 05AE 0062;0061 05AE 1AB0 0300 0315 0062;0061 05AE 1AB0 0300 0315 0062;0061 05AE 1AB0 0300 0315 0062;0061 05AE 1AB0 0300 0315 0062; # (a◌᪰◌̕◌̀◌֮b; a◌֮◌᪰◌̀◌̕b; a◌֮◌᪰◌̀◌̕b; a◌֮◌᪰◌̀◌̕b; a◌֮◌᪰◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLED CIRCUMFLEX ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1AB1 0062;00E0 05AE 1AB1 0315 0062;0061 05AE 0300 1AB1 0315 0062;00E0 05AE 1AB1 0315 0062;0061 05AE 0300 1AB1 0315 0062; # (a◌̕◌̀◌֮◌᪱b; à◌֮◌᪱◌̕b; a◌֮◌̀◌᪱◌̕b; à◌֮◌᪱◌̕b; a◌֮◌̀◌᪱◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DIAERESIS-RING, LATIN SMALL LETTER B
+0061 1AB1 0315 0300 05AE 0062;0061 05AE 1AB1 0300 0315 0062;0061 05AE 1AB1 0300 0315 0062;0061 05AE 1AB1 0300 0315 0062;0061 05AE 1AB1 0300 0315 0062; # (a◌᪱◌̕◌̀◌֮b; a◌֮◌᪱◌̀◌̕b; a◌֮◌᪱◌̀◌̕b; a◌֮◌᪱◌̀◌̕b; a◌֮◌᪱◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DIAERESIS-RING, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1AB2 0062;00E0 05AE 1AB2 0315 0062;0061 05AE 0300 1AB2 0315 0062;00E0 05AE 1AB2 0315 0062;0061 05AE 0300 1AB2 0315 0062; # (a◌̕◌̀◌֮◌᪲b; à◌֮◌᪲◌̕b; a◌֮◌̀◌᪲◌̕b; à◌֮◌᪲◌̕b; a◌֮◌̀◌᪲◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING INFINITY, LATIN SMALL LETTER B
+0061 1AB2 0315 0300 05AE 0062;0061 05AE 1AB2 0300 0315 0062;0061 05AE 1AB2 0300 0315 0062;0061 05AE 1AB2 0300 0315 0062;0061 05AE 1AB2 0300 0315 0062; # (a◌᪲◌̕◌̀◌֮b; a◌֮◌᪲◌̀◌̕b; a◌֮◌᪲◌̀◌̕b; a◌֮◌᪲◌̀◌̕b; a◌֮◌᪲◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING INFINITY, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1AB3 0062;00E0 05AE 1AB3 0315 0062;0061 05AE 0300 1AB3 0315 0062;00E0 05AE 1AB3 0315 0062;0061 05AE 0300 1AB3 0315 0062; # (a◌̕◌̀◌֮◌᪳b; à◌֮◌᪳◌̕b; a◌֮◌̀◌᪳◌̕b; à◌֮◌᪳◌̕b; a◌֮◌̀◌᪳◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOWNWARDS ARROW, LATIN SMALL LETTER B
+0061 1AB3 0315 0300 05AE 0062;0061 05AE 1AB3 0300 0315 0062;0061 05AE 1AB3 0300 0315 0062;0061 05AE 1AB3 0300 0315 0062;0061 05AE 1AB3 0300 0315 0062; # (a◌᪳◌̕◌̀◌֮b; a◌֮◌᪳◌̀◌̕b; a◌֮◌᪳◌̀◌̕b; a◌֮◌᪳◌̀◌̕b; a◌֮◌᪳◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOWNWARDS ARROW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1AB4 0062;00E0 05AE 1AB4 0315 0062;0061 05AE 0300 1AB4 0315 0062;00E0 05AE 1AB4 0315 0062;0061 05AE 0300 1AB4 0315 0062; # (a◌̕◌̀◌֮◌᪴b; à◌֮◌᪴◌̕b; a◌֮◌̀◌᪴◌̕b; à◌֮◌᪴◌̕b; a◌֮◌̀◌᪴◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING TRIPLE DOT, LATIN SMALL LETTER B
+0061 1AB4 0315 0300 05AE 0062;0061 05AE 1AB4 0300 0315 0062;0061 05AE 1AB4 0300 0315 0062;0061 05AE 1AB4 0300 0315 0062;0061 05AE 1AB4 0300 0315 0062; # (a◌᪴◌̕◌̀◌֮b; a◌֮◌᪴◌̀◌̕b; a◌֮◌᪴◌̀◌̕b; a◌֮◌᪴◌̀◌̕b; a◌֮◌᪴◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING TRIPLE DOT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1AB5 0062;0061 302A 0316 1AB5 059A 0062;0061 302A 0316 1AB5 059A 0062;0061 302A 0316 1AB5 059A 0062;0061 302A 0316 1AB5 059A 0062; # (a◌֚◌̖◌〪◌᪵b; a◌〪◌̖◌᪵◌֚b; a◌〪◌̖◌᪵◌֚b; a◌〪◌̖◌᪵◌֚b; a◌〪◌̖◌᪵◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING X-X BELOW, LATIN SMALL LETTER B
+0061 1AB5 059A 0316 302A 0062;0061 302A 1AB5 0316 059A 0062;0061 302A 1AB5 0316 059A 0062;0061 302A 1AB5 0316 059A 0062;0061 302A 1AB5 0316 059A 0062; # (a◌᪵◌֚◌̖◌〪b; a◌〪◌᪵◌̖◌֚b; a◌〪◌᪵◌̖◌֚b; a◌〪◌᪵◌̖◌֚b; a◌〪◌᪵◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING X-X BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1AB6 0062;0061 302A 0316 1AB6 059A 0062;0061 302A 0316 1AB6 059A 0062;0061 302A 0316 1AB6 059A 0062;0061 302A 0316 1AB6 059A 0062; # (a◌֚◌̖◌〪◌᪶b; a◌〪◌̖◌᪶◌֚b; a◌〪◌̖◌᪶◌֚b; a◌〪◌̖◌᪶◌֚b; a◌〪◌̖◌᪶◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING WIGGLY LINE BELOW, LATIN SMALL LETTER B
+0061 1AB6 059A 0316 302A 0062;0061 302A 1AB6 0316 059A 0062;0061 302A 1AB6 0316 059A 0062;0061 302A 1AB6 0316 059A 0062;0061 302A 1AB6 0316 059A 0062; # (a◌᪶◌֚◌̖◌〪b; a◌〪◌᪶◌̖◌֚b; a◌〪◌᪶◌̖◌֚b; a◌〪◌᪶◌̖◌֚b; a◌〪◌᪶◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING WIGGLY LINE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1AB7 0062;0061 302A 0316 1AB7 059A 0062;0061 302A 0316 1AB7 059A 0062;0061 302A 0316 1AB7 059A 0062;0061 302A 0316 1AB7 059A 0062; # (a◌֚◌̖◌〪◌᪷b; a◌〪◌̖◌᪷◌֚b; a◌〪◌̖◌᪷◌֚b; a◌〪◌̖◌᪷◌֚b; a◌〪◌̖◌᪷◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING OPEN MARK BELOW, LATIN SMALL LETTER B
+0061 1AB7 059A 0316 302A 0062;0061 302A 1AB7 0316 059A 0062;0061 302A 1AB7 0316 059A 0062;0061 302A 1AB7 0316 059A 0062;0061 302A 1AB7 0316 059A 0062; # (a◌᪷◌֚◌̖◌〪b; a◌〪◌᪷◌̖◌֚b; a◌〪◌᪷◌̖◌֚b; a◌〪◌᪷◌̖◌֚b; a◌〪◌᪷◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING OPEN MARK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1AB8 0062;0061 302A 0316 1AB8 059A 0062;0061 302A 0316 1AB8 059A 0062;0061 302A 0316 1AB8 059A 0062;0061 302A 0316 1AB8 059A 0062; # (a◌֚◌̖◌〪◌᪸b; a◌〪◌̖◌᪸◌֚b; a◌〪◌̖◌᪸◌֚b; a◌〪◌̖◌᪸◌֚b; a◌〪◌̖◌᪸◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOUBLE OPEN MARK BELOW, LATIN SMALL LETTER B
+0061 1AB8 059A 0316 302A 0062;0061 302A 1AB8 0316 059A 0062;0061 302A 1AB8 0316 059A 0062;0061 302A 1AB8 0316 059A 0062;0061 302A 1AB8 0316 059A 0062; # (a◌᪸◌֚◌̖◌〪b; a◌〪◌᪸◌̖◌֚b; a◌〪◌᪸◌̖◌֚b; a◌〪◌᪸◌̖◌֚b; a◌〪◌᪸◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOUBLE OPEN MARK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1AB9 0062;0061 302A 0316 1AB9 059A 0062;0061 302A 0316 1AB9 059A 0062;0061 302A 0316 1AB9 059A 0062;0061 302A 0316 1AB9 059A 0062; # (a◌֚◌̖◌〪◌᪹b; a◌〪◌̖◌᪹◌֚b; a◌〪◌̖◌᪹◌֚b; a◌〪◌̖◌᪹◌֚b; a◌〪◌̖◌᪹◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LIGHT CENTRALIZATION STROKE BELOW, LATIN SMALL LETTER B
+0061 1AB9 059A 0316 302A 0062;0061 302A 1AB9 0316 059A 0062;0061 302A 1AB9 0316 059A 0062;0061 302A 1AB9 0316 059A 0062;0061 302A 1AB9 0316 059A 0062; # (a◌᪹◌֚◌̖◌〪b; a◌〪◌᪹◌̖◌֚b; a◌〪◌᪹◌̖◌֚b; a◌〪◌᪹◌̖◌֚b; a◌〪◌᪹◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LIGHT CENTRALIZATION STROKE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1ABA 0062;0061 302A 0316 1ABA 059A 0062;0061 302A 0316 1ABA 059A 0062;0061 302A 0316 1ABA 059A 0062;0061 302A 0316 1ABA 059A 0062; # (a◌֚◌̖◌〪◌᪺b; a◌〪◌̖◌᪺◌֚b; a◌〪◌̖◌᪺◌֚b; a◌〪◌̖◌᪺◌֚b; a◌〪◌̖◌᪺◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING STRONG CENTRALIZATION STROKE BELOW, LATIN SMALL LETTER B
+0061 1ABA 059A 0316 302A 0062;0061 302A 1ABA 0316 059A 0062;0061 302A 1ABA 0316 059A 0062;0061 302A 1ABA 0316 059A 0062;0061 302A 1ABA 0316 059A 0062; # (a◌᪺◌֚◌̖◌〪b; a◌〪◌᪺◌̖◌֚b; a◌〪◌᪺◌̖◌֚b; a◌〪◌᪺◌̖◌֚b; a◌〪◌᪺◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING STRONG CENTRALIZATION STROKE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1ABB 0062;00E0 05AE 1ABB 0315 0062;0061 05AE 0300 1ABB 0315 0062;00E0 05AE 1ABB 0315 0062;0061 05AE 0300 1ABB 0315 0062; # (a◌̕◌̀◌֮◌᪻b; à◌֮◌᪻◌̕b; a◌֮◌̀◌᪻◌̕b; à◌֮◌᪻◌̕b; a◌֮◌̀◌᪻◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING PARENTHESES ABOVE, LATIN SMALL LETTER B
+0061 1ABB 0315 0300 05AE 0062;0061 05AE 1ABB 0300 0315 0062;0061 05AE 1ABB 0300 0315 0062;0061 05AE 1ABB 0300 0315 0062;0061 05AE 1ABB 0300 0315 0062; # (a◌᪻◌̕◌̀◌֮b; a◌֮◌᪻◌̀◌̕b; a◌֮◌᪻◌̀◌̕b; a◌֮◌᪻◌̀◌̕b; a◌֮◌᪻◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING PARENTHESES ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1ABC 0062;00E0 05AE 1ABC 0315 0062;0061 05AE 0300 1ABC 0315 0062;00E0 05AE 1ABC 0315 0062;0061 05AE 0300 1ABC 0315 0062; # (a◌̕◌̀◌֮◌᪼b; à◌֮◌᪼◌̕b; a◌֮◌̀◌᪼◌̕b; à◌֮◌᪼◌̕b; a◌֮◌̀◌᪼◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE PARENTHESES ABOVE, LATIN SMALL LETTER B
+0061 1ABC 0315 0300 05AE 0062;0061 05AE 1ABC 0300 0315 0062;0061 05AE 1ABC 0300 0315 0062;0061 05AE 1ABC 0300 0315 0062;0061 05AE 1ABC 0300 0315 0062; # (a◌᪼◌̕◌̀◌֮b; a◌֮◌᪼◌̀◌̕b; a◌֮◌᪼◌̀◌̕b; a◌֮◌᪼◌̀◌̕b; a◌֮◌᪼◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE PARENTHESES ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1ABD 0062;0061 302A 0316 1ABD 059A 0062;0061 302A 0316 1ABD 059A 0062;0061 302A 0316 1ABD 059A 0062;0061 302A 0316 1ABD 059A 0062; # (a◌֚◌̖◌〪◌᪽b; a◌〪◌̖◌᪽◌֚b; a◌〪◌̖◌᪽◌֚b; a◌〪◌̖◌᪽◌֚b; a◌〪◌̖◌᪽◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING PARENTHESES BELOW, LATIN SMALL LETTER B
+0061 1ABD 059A 0316 302A 0062;0061 302A 1ABD 0316 059A 0062;0061 302A 1ABD 0316 059A 0062;0061 302A 1ABD 0316 059A 0062;0061 302A 1ABD 0316 059A 0062; # (a◌᪽◌֚◌̖◌〪b; a◌〪◌᪽◌̖◌֚b; a◌〪◌᪽◌̖◌֚b; a◌〪◌᪽◌̖◌֚b; a◌〪◌᪽◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING PARENTHESES BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 1B34 0062;0061 0334 093C 1B34 3099 0062;0061 0334 093C 1B34 3099 0062;0061 0334 093C 1B34 3099 0062;0061 0334 093C 1B34 3099 0062; # (a◌゙◌़◌̴◌᬴b; a◌̴◌़◌᬴◌゙b; a◌̴◌़◌᬴◌゙b; a◌̴◌़◌᬴◌゙b; a◌̴◌़◌᬴◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BALINESE SIGN REREKAN, LATIN SMALL LETTER B
+0061 1B34 3099 093C 0334 0062;0061 0334 1B34 093C 3099 0062;0061 0334 1B34 093C 3099 0062;0061 0334 1B34 093C 3099 0062;0061 0334 1B34 093C 3099 0062; # (a◌᬴◌゙◌़◌̴b; a◌̴◌᬴◌़◌゙b; a◌̴◌᬴◌़◌゙b; a◌̴◌᬴◌़◌゙b; a◌̴◌᬴◌़◌゙b; ) LATIN SMALL LETTER A, BALINESE SIGN REREKAN, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1B44 0062;0061 3099 094D 1B44 05B0 0062;0061 3099 094D 1B44 05B0 0062;0061 3099 094D 1B44 05B0 0062;0061 3099 094D 1B44 05B0 0062; # (a◌ְ◌à¥â—Œã‚™á­„b; a◌゙◌à¥á­„◌ְb; a◌゙◌à¥á­„◌ְb; a◌゙◌à¥á­„◌ְb; a◌゙◌à¥á­„◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, BALINESE ADEG ADEG, LATIN SMALL LETTER B
+0061 1B44 05B0 094D 3099 0062;0061 3099 1B44 094D 05B0 0062;0061 3099 1B44 094D 05B0 0062;0061 3099 1B44 094D 05B0 0062;0061 3099 1B44 094D 05B0 0062; # (a᭄◌ְ◌à¥â—Œã‚™b; a◌゙᭄◌à¥â—ŒÖ°b; a◌゙᭄◌à¥â—ŒÖ°b; a◌゙᭄◌à¥â—ŒÖ°b; a◌゙᭄◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, BALINESE ADEG ADEG, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B6B 0062;00E0 05AE 1B6B 0315 0062;0061 05AE 0300 1B6B 0315 0062;00E0 05AE 1B6B 0315 0062;0061 05AE 0300 1B6B 0315 0062; # (a◌̕◌̀◌֮◌᭫b; à◌֮◌᭫◌̕b; a◌֮◌̀◌᭫◌̕b; à◌֮◌᭫◌̕b; a◌֮◌̀◌᭫◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING TEGEH, LATIN SMALL LETTER B
+0061 1B6B 0315 0300 05AE 0062;0061 05AE 1B6B 0300 0315 0062;0061 05AE 1B6B 0300 0315 0062;0061 05AE 1B6B 0300 0315 0062;0061 05AE 1B6B 0300 0315 0062; # (a◌᭫◌̕◌̀◌֮b; a◌֮◌᭫◌̀◌̕b; a◌֮◌᭫◌̀◌̕b; a◌֮◌᭫◌̀◌̕b; a◌֮◌᭫◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING TEGEH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1B6C 0062;0061 302A 0316 1B6C 059A 0062;0061 302A 0316 1B6C 059A 0062;0061 302A 0316 1B6C 059A 0062;0061 302A 0316 1B6C 059A 0062; # (a◌֚◌̖◌〪◌᭬b; a◌〪◌̖◌᭬◌֚b; a◌〪◌̖◌᭬◌֚b; a◌〪◌̖◌᭬◌֚b; a◌〪◌̖◌᭬◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, BALINESE MUSICAL SYMBOL COMBINING ENDEP, LATIN SMALL LETTER B
+0061 1B6C 059A 0316 302A 0062;0061 302A 1B6C 0316 059A 0062;0061 302A 1B6C 0316 059A 0062;0061 302A 1B6C 0316 059A 0062;0061 302A 1B6C 0316 059A 0062; # (a◌᭬◌֚◌̖◌〪b; a◌〪◌᭬◌̖◌֚b; a◌〪◌᭬◌̖◌֚b; a◌〪◌᭬◌̖◌֚b; a◌〪◌᭬◌̖◌֚b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING ENDEP, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B6D 0062;00E0 05AE 1B6D 0315 0062;0061 05AE 0300 1B6D 0315 0062;00E0 05AE 1B6D 0315 0062;0061 05AE 0300 1B6D 0315 0062; # (a◌̕◌̀◌֮◌᭭b; à◌֮◌᭭◌̕b; a◌֮◌̀◌᭭◌̕b; à◌֮◌᭭◌̕b; a◌֮◌̀◌᭭◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING KEMPUL, LATIN SMALL LETTER B
+0061 1B6D 0315 0300 05AE 0062;0061 05AE 1B6D 0300 0315 0062;0061 05AE 1B6D 0300 0315 0062;0061 05AE 1B6D 0300 0315 0062;0061 05AE 1B6D 0300 0315 0062; # (a◌᭭◌̕◌̀◌֮b; a◌֮◌᭭◌̀◌̕b; a◌֮◌᭭◌̀◌̕b; a◌֮◌᭭◌̀◌̕b; a◌֮◌᭭◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING KEMPUL, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B6E 0062;00E0 05AE 1B6E 0315 0062;0061 05AE 0300 1B6E 0315 0062;00E0 05AE 1B6E 0315 0062;0061 05AE 0300 1B6E 0315 0062; # (a◌̕◌̀◌֮◌᭮b; à◌֮◌᭮◌̕b; a◌֮◌̀◌᭮◌̕b; à◌֮◌᭮◌̕b; a◌֮◌̀◌᭮◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING KEMPLI, LATIN SMALL LETTER B
+0061 1B6E 0315 0300 05AE 0062;0061 05AE 1B6E 0300 0315 0062;0061 05AE 1B6E 0300 0315 0062;0061 05AE 1B6E 0300 0315 0062;0061 05AE 1B6E 0300 0315 0062; # (a◌᭮◌̕◌̀◌֮b; a◌֮◌᭮◌̀◌̕b; a◌֮◌᭮◌̀◌̕b; a◌֮◌᭮◌̀◌̕b; a◌֮◌᭮◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING KEMPLI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B6F 0062;00E0 05AE 1B6F 0315 0062;0061 05AE 0300 1B6F 0315 0062;00E0 05AE 1B6F 0315 0062;0061 05AE 0300 1B6F 0315 0062; # (a◌̕◌̀◌֮◌᭯b; à◌֮◌᭯◌̕b; a◌֮◌̀◌᭯◌̕b; à◌֮◌᭯◌̕b; a◌֮◌̀◌᭯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING JEGOGAN, LATIN SMALL LETTER B
+0061 1B6F 0315 0300 05AE 0062;0061 05AE 1B6F 0300 0315 0062;0061 05AE 1B6F 0300 0315 0062;0061 05AE 1B6F 0300 0315 0062;0061 05AE 1B6F 0300 0315 0062; # (a◌᭯◌̕◌̀◌֮b; a◌֮◌᭯◌̀◌̕b; a◌֮◌᭯◌̀◌̕b; a◌֮◌᭯◌̀◌̕b; a◌֮◌᭯◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING JEGOGAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B70 0062;00E0 05AE 1B70 0315 0062;0061 05AE 0300 1B70 0315 0062;00E0 05AE 1B70 0315 0062;0061 05AE 0300 1B70 0315 0062; # (a◌̕◌̀◌֮◌᭰b; à◌֮◌᭰◌̕b; a◌֮◌̀◌᭰◌̕b; à◌֮◌᭰◌̕b; a◌֮◌̀◌᭰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN, LATIN SMALL LETTER B
+0061 1B70 0315 0300 05AE 0062;0061 05AE 1B70 0300 0315 0062;0061 05AE 1B70 0300 0315 0062;0061 05AE 1B70 0300 0315 0062;0061 05AE 1B70 0300 0315 0062; # (a◌᭰◌̕◌̀◌֮b; a◌֮◌᭰◌̀◌̕b; a◌֮◌᭰◌̀◌̕b; a◌֮◌᭰◌̀◌̕b; a◌֮◌᭰◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B71 0062;00E0 05AE 1B71 0315 0062;0061 05AE 0300 1B71 0315 0062;00E0 05AE 1B71 0315 0062;0061 05AE 0300 1B71 0315 0062; # (a◌̕◌̀◌֮◌᭱b; à◌֮◌᭱◌̕b; a◌֮◌̀◌᭱◌̕b; à◌֮◌᭱◌̕b; a◌֮◌̀◌᭱◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN, LATIN SMALL LETTER B
+0061 1B71 0315 0300 05AE 0062;0061 05AE 1B71 0300 0315 0062;0061 05AE 1B71 0300 0315 0062;0061 05AE 1B71 0300 0315 0062;0061 05AE 1B71 0300 0315 0062; # (a◌᭱◌̕◌̀◌֮b; a◌֮◌᭱◌̀◌̕b; a◌֮◌᭱◌̀◌̕b; a◌֮◌᭱◌̀◌̕b; a◌֮◌᭱◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B72 0062;00E0 05AE 1B72 0315 0062;0061 05AE 0300 1B72 0315 0062;00E0 05AE 1B72 0315 0062;0061 05AE 0300 1B72 0315 0062; # (a◌̕◌̀◌֮◌᭲b; à◌֮◌᭲◌̕b; a◌֮◌̀◌᭲◌̕b; à◌֮◌᭲◌̕b; a◌֮◌̀◌᭲◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING BENDE, LATIN SMALL LETTER B
+0061 1B72 0315 0300 05AE 0062;0061 05AE 1B72 0300 0315 0062;0061 05AE 1B72 0300 0315 0062;0061 05AE 1B72 0300 0315 0062;0061 05AE 1B72 0300 0315 0062; # (a◌᭲◌̕◌̀◌֮b; a◌֮◌᭲◌̀◌̕b; a◌֮◌᭲◌̀◌̕b; a◌֮◌᭲◌̀◌̕b; a◌֮◌᭲◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING BENDE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B73 0062;00E0 05AE 1B73 0315 0062;0061 05AE 0300 1B73 0315 0062;00E0 05AE 1B73 0315 0062;0061 05AE 0300 1B73 0315 0062; # (a◌̕◌̀◌֮◌᭳b; à◌֮◌᭳◌̕b; a◌֮◌̀◌᭳◌̕b; à◌֮◌᭳◌̕b; a◌֮◌̀◌᭳◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING GONG, LATIN SMALL LETTER B
+0061 1B73 0315 0300 05AE 0062;0061 05AE 1B73 0300 0315 0062;0061 05AE 1B73 0300 0315 0062;0061 05AE 1B73 0300 0315 0062;0061 05AE 1B73 0300 0315 0062; # (a◌᭳◌̕◌̀◌֮b; a◌֮◌᭳◌̀◌̕b; a◌֮◌᭳◌̀◌̕b; a◌֮◌᭳◌̀◌̕b; a◌֮◌᭳◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING GONG, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1BAA 0062;0061 3099 094D 1BAA 05B0 0062;0061 3099 094D 1BAA 05B0 0062;0061 3099 094D 1BAA 05B0 0062;0061 3099 094D 1BAA 05B0 0062; # (a◌ְ◌à¥â—Œã‚™á®ªb; a◌゙◌à¥á®ªâ—ŒÖ°b; a◌゙◌à¥á®ªâ—ŒÖ°b; a◌゙◌à¥á®ªâ—ŒÖ°b; a◌゙◌à¥á®ªâ—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, SUNDANESE SIGN PAMAAEH, LATIN SMALL LETTER B
+0061 1BAA 05B0 094D 3099 0062;0061 3099 1BAA 094D 05B0 0062;0061 3099 1BAA 094D 05B0 0062;0061 3099 1BAA 094D 05B0 0062;0061 3099 1BAA 094D 05B0 0062; # (a᮪◌ְ◌à¥â—Œã‚™b; a◌゙᮪◌à¥â—ŒÖ°b; a◌゙᮪◌à¥â—ŒÖ°b; a◌゙᮪◌à¥â—ŒÖ°b; a◌゙᮪◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, SUNDANESE SIGN PAMAAEH, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1BAB 0062;0061 3099 094D 1BAB 05B0 0062;0061 3099 094D 1BAB 05B0 0062;0061 3099 094D 1BAB 05B0 0062;0061 3099 094D 1BAB 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œá®«b; a◌゙◌à¥â—Œá®«â—ŒÖ°b; a◌゙◌à¥â—Œá®«â—ŒÖ°b; a◌゙◌à¥â—Œá®«â—ŒÖ°b; a◌゙◌à¥â—Œá®«â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, SUNDANESE SIGN VIRAMA, LATIN SMALL LETTER B
+0061 1BAB 05B0 094D 3099 0062;0061 3099 1BAB 094D 05B0 0062;0061 3099 1BAB 094D 05B0 0062;0061 3099 1BAB 094D 05B0 0062;0061 3099 1BAB 094D 05B0 0062; # (a◌᮫◌ְ◌à¥â—Œã‚™b; a◌゙◌᮫◌à¥â—ŒÖ°b; a◌゙◌᮫◌à¥â—ŒÖ°b; a◌゙◌᮫◌à¥â—ŒÖ°b; a◌゙◌᮫◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, SUNDANESE SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 1BE6 0062;0061 0334 093C 1BE6 3099 0062;0061 0334 093C 1BE6 3099 0062;0061 0334 093C 1BE6 3099 0062;0061 0334 093C 1BE6 3099 0062; # (a◌゙◌़◌̴◌᯦b; a◌̴◌़◌᯦◌゙b; a◌̴◌़◌᯦◌゙b; a◌̴◌़◌᯦◌゙b; a◌̴◌़◌᯦◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BATAK SIGN TOMPI, LATIN SMALL LETTER B
+0061 1BE6 3099 093C 0334 0062;0061 0334 1BE6 093C 3099 0062;0061 0334 1BE6 093C 3099 0062;0061 0334 1BE6 093C 3099 0062;0061 0334 1BE6 093C 3099 0062; # (a◌᯦◌゙◌़◌̴b; a◌̴◌᯦◌़◌゙b; a◌̴◌᯦◌़◌゙b; a◌̴◌᯦◌़◌゙b; a◌̴◌᯦◌़◌゙b; ) LATIN SMALL LETTER A, BATAK SIGN TOMPI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1BF2 0062;0061 3099 094D 1BF2 05B0 0062;0061 3099 094D 1BF2 05B0 0062;0061 3099 094D 1BF2 05B0 0062;0061 3099 094D 1BF2 05B0 0062; # (a◌ְ◌à¥â—Œã‚™á¯²b; a◌゙◌à¥á¯²â—ŒÖ°b; a◌゙◌à¥á¯²â—ŒÖ°b; a◌゙◌à¥á¯²â—ŒÖ°b; a◌゙◌à¥á¯²â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, BATAK PANGOLAT, LATIN SMALL LETTER B
+0061 1BF2 05B0 094D 3099 0062;0061 3099 1BF2 094D 05B0 0062;0061 3099 1BF2 094D 05B0 0062;0061 3099 1BF2 094D 05B0 0062;0061 3099 1BF2 094D 05B0 0062; # (a᯲◌ְ◌à¥â—Œã‚™b; a◌゙᯲◌à¥â—ŒÖ°b; a◌゙᯲◌à¥â—ŒÖ°b; a◌゙᯲◌à¥â—ŒÖ°b; a◌゙᯲◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, BATAK PANGOLAT, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1BF3 0062;0061 3099 094D 1BF3 05B0 0062;0061 3099 094D 1BF3 05B0 0062;0061 3099 094D 1BF3 05B0 0062;0061 3099 094D 1BF3 05B0 0062; # (a◌ְ◌à¥â—Œã‚™á¯³b; a◌゙◌à¥á¯³â—ŒÖ°b; a◌゙◌à¥á¯³â—ŒÖ°b; a◌゙◌à¥á¯³â—ŒÖ°b; a◌゙◌à¥á¯³â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, BATAK PANONGONAN, LATIN SMALL LETTER B
+0061 1BF3 05B0 094D 3099 0062;0061 3099 1BF3 094D 05B0 0062;0061 3099 1BF3 094D 05B0 0062;0061 3099 1BF3 094D 05B0 0062;0061 3099 1BF3 094D 05B0 0062; # (a᯳◌ְ◌à¥â—Œã‚™b; a◌゙᯳◌à¥â—ŒÖ°b; a◌゙᯳◌à¥â—ŒÖ°b; a◌゙᯳◌à¥â—ŒÖ°b; a◌゙᯳◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, BATAK PANONGONAN, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 1C37 0062;0061 0334 093C 1C37 3099 0062;0061 0334 093C 1C37 3099 0062;0061 0334 093C 1C37 3099 0062;0061 0334 093C 1C37 3099 0062; # (a◌゙◌़◌̴◌᰷b; a◌̴◌़◌᰷◌゙b; a◌̴◌़◌᰷◌゙b; a◌̴◌़◌᰷◌゙b; a◌̴◌़◌᰷◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LEPCHA SIGN NUKTA, LATIN SMALL LETTER B
+0061 1C37 3099 093C 0334 0062;0061 0334 1C37 093C 3099 0062;0061 0334 1C37 093C 3099 0062;0061 0334 1C37 093C 3099 0062;0061 0334 1C37 093C 3099 0062; # (a◌᰷◌゙◌़◌̴b; a◌̴◌᰷◌़◌゙b; a◌̴◌᰷◌़◌゙b; a◌̴◌᰷◌़◌゙b; a◌̴◌᰷◌़◌゙b; ) LATIN SMALL LETTER A, LEPCHA SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1CD0 0062;00E0 05AE 1CD0 0315 0062;0061 05AE 0300 1CD0 0315 0062;00E0 05AE 1CD0 0315 0062;0061 05AE 0300 1CD0 0315 0062; # (a◌̕◌̀◌֮◌á³b; à◌֮◌á³â—ŒÌ•b; a◌֮◌̀◌á³â—ŒÌ•b; à◌֮◌á³â—ŒÌ•b; a◌֮◌̀◌á³â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, VEDIC TONE KARSHANA, LATIN SMALL LETTER B
+0061 1CD0 0315 0300 05AE 0062;0061 05AE 1CD0 0300 0315 0062;0061 05AE 1CD0 0300 0315 0062;0061 05AE 1CD0 0300 0315 0062;0061 05AE 1CD0 0300 0315 0062; # (aâ—Œá³â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌á³â—ŒÌ€â—ŒÌ•b; a◌֮◌á³â—ŒÌ€â—ŒÌ•b; a◌֮◌á³â—ŒÌ€â—ŒÌ•b; a◌֮◌á³â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, VEDIC TONE KARSHANA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1CD1 0062;00E0 05AE 1CD1 0315 0062;0061 05AE 0300 1CD1 0315 0062;00E0 05AE 1CD1 0315 0062;0061 05AE 0300 1CD1 0315 0062; # (a◌̕◌̀◌֮◌᳑b; à◌֮◌᳑◌̕b; a◌֮◌̀◌᳑◌̕b; à◌֮◌᳑◌̕b; a◌֮◌̀◌᳑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, VEDIC TONE SHARA, LATIN SMALL LETTER B
+0061 1CD1 0315 0300 05AE 0062;0061 05AE 1CD1 0300 0315 0062;0061 05AE 1CD1 0300 0315 0062;0061 05AE 1CD1 0300 0315 0062;0061 05AE 1CD1 0300 0315 0062; # (a◌᳑◌̕◌̀◌֮b; a◌֮◌᳑◌̀◌̕b; a◌֮◌᳑◌̀◌̕b; a◌֮◌᳑◌̀◌̕b; a◌֮◌᳑◌̀◌̕b; ) LATIN SMALL LETTER A, VEDIC TONE SHARA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1CD2 0062;00E0 05AE 1CD2 0315 0062;0061 05AE 0300 1CD2 0315 0062;00E0 05AE 1CD2 0315 0062;0061 05AE 0300 1CD2 0315 0062; # (a◌̕◌̀◌֮◌᳒b; à◌֮◌᳒◌̕b; a◌֮◌̀◌᳒◌̕b; à◌֮◌᳒◌̕b; a◌֮◌̀◌᳒◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, VEDIC TONE PRENKHA, LATIN SMALL LETTER B
+0061 1CD2 0315 0300 05AE 0062;0061 05AE 1CD2 0300 0315 0062;0061 05AE 1CD2 0300 0315 0062;0061 05AE 1CD2 0300 0315 0062;0061 05AE 1CD2 0300 0315 0062; # (a◌᳒◌̕◌̀◌֮b; a◌֮◌᳒◌̀◌̕b; a◌֮◌᳒◌̀◌̕b; a◌֮◌᳒◌̀◌̕b; a◌֮◌᳒◌̀◌̕b; ) LATIN SMALL LETTER A, VEDIC TONE PRENKHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 1CD4 0062;0061 0334 1CD4 093C 0062;0061 0334 1CD4 093C 0062;0061 0334 1CD4 093C 0062;0061 0334 1CD4 093C 0062; # (a◌़◌̴◌᳔b; a◌̴◌᳔◌़b; a◌̴◌᳔◌़b; a◌̴◌᳔◌़b; a◌̴◌᳔◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, VEDIC SIGN YAJURVEDIC MIDLINE SVARITA, LATIN SMALL LETTER B
+0061 1CD4 093C 0334 0062;0061 1CD4 0334 093C 0062;0061 1CD4 0334 093C 0062;0061 1CD4 0334 093C 0062;0061 1CD4 0334 093C 0062; # (a◌᳔◌़◌̴b; a◌᳔◌̴◌़b; a◌᳔◌̴◌़b; a◌᳔◌̴◌़b; a◌᳔◌̴◌़b; ) LATIN SMALL LETTER A, VEDIC SIGN YAJURVEDIC MIDLINE SVARITA, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 059A 0316 302A 1CD5 0062;0061 302A 0316 1CD5 059A 0062;0061 302A 0316 1CD5 059A 0062;0061 302A 0316 1CD5 059A 0062;0061 302A 0316 1CD5 059A 0062; # (a◌֚◌̖◌〪◌᳕b; a◌〪◌̖◌᳕◌֚b; a◌〪◌̖◌᳕◌֚b; a◌〪◌̖◌᳕◌֚b; a◌〪◌̖◌᳕◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA, LATIN SMALL LETTER B
+0061 1CD5 059A 0316 302A 0062;0061 302A 1CD5 0316 059A 0062;0061 302A 1CD5 0316 059A 0062;0061 302A 1CD5 0316 059A 0062;0061 302A 1CD5 0316 059A 0062; # (a◌᳕◌֚◌̖◌〪b; a◌〪◌᳕◌̖◌֚b; a◌〪◌᳕◌̖◌֚b; a◌〪◌᳕◌̖◌֚b; a◌〪◌᳕◌̖◌֚b; ) LATIN SMALL LETTER A, VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1CD6 0062;0061 302A 0316 1CD6 059A 0062;0061 302A 0316 1CD6 059A 0062;0061 302A 0316 1CD6 059A 0062;0061 302A 0316 1CD6 059A 0062; # (a◌֚◌̖◌〪◌᳖b; a◌〪◌̖◌᳖◌֚b; a◌〪◌̖◌᳖◌֚b; a◌〪◌̖◌᳖◌֚b; a◌〪◌̖◌᳖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA, LATIN SMALL LETTER B
+0061 1CD6 059A 0316 302A 0062;0061 302A 1CD6 0316 059A 0062;0061 302A 1CD6 0316 059A 0062;0061 302A 1CD6 0316 059A 0062;0061 302A 1CD6 0316 059A 0062; # (a◌᳖◌֚◌̖◌〪b; a◌〪◌᳖◌̖◌֚b; a◌〪◌᳖◌̖◌֚b; a◌〪◌᳖◌̖◌֚b; a◌〪◌᳖◌̖◌֚b; ) LATIN SMALL LETTER A, VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1CD7 0062;0061 302A 0316 1CD7 059A 0062;0061 302A 0316 1CD7 059A 0062;0061 302A 0316 1CD7 059A 0062;0061 302A 0316 1CD7 059A 0062; # (a◌֚◌̖◌〪◌᳗b; a◌〪◌̖◌᳗◌֚b; a◌〪◌̖◌᳗◌֚b; a◌〪◌̖◌᳗◌֚b; a◌〪◌̖◌᳗◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA, LATIN SMALL LETTER B
+0061 1CD7 059A 0316 302A 0062;0061 302A 1CD7 0316 059A 0062;0061 302A 1CD7 0316 059A 0062;0061 302A 1CD7 0316 059A 0062;0061 302A 1CD7 0316 059A 0062; # (a◌᳗◌֚◌̖◌〪b; a◌〪◌᳗◌̖◌֚b; a◌〪◌᳗◌̖◌֚b; a◌〪◌᳗◌̖◌֚b; a◌〪◌᳗◌̖◌֚b; ) LATIN SMALL LETTER A, VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1CD8 0062;0061 302A 0316 1CD8 059A 0062;0061 302A 0316 1CD8 059A 0062;0061 302A 0316 1CD8 059A 0062;0061 302A 0316 1CD8 059A 0062; # (a◌֚◌̖◌〪◌᳘b; a◌〪◌̖◌᳘◌֚b; a◌〪◌̖◌᳘◌֚b; a◌〪◌̖◌᳘◌֚b; a◌〪◌̖◌᳘◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, VEDIC TONE CANDRA BELOW, LATIN SMALL LETTER B
+0061 1CD8 059A 0316 302A 0062;0061 302A 1CD8 0316 059A 0062;0061 302A 1CD8 0316 059A 0062;0061 302A 1CD8 0316 059A 0062;0061 302A 1CD8 0316 059A 0062; # (a◌᳘◌֚◌̖◌〪b; a◌〪◌᳘◌̖◌֚b; a◌〪◌᳘◌̖◌֚b; a◌〪◌᳘◌̖◌֚b; a◌〪◌᳘◌̖◌֚b; ) LATIN SMALL LETTER A, VEDIC TONE CANDRA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1CD9 0062;0061 302A 0316 1CD9 059A 0062;0061 302A 0316 1CD9 059A 0062;0061 302A 0316 1CD9 059A 0062;0061 302A 0316 1CD9 059A 0062; # (a◌֚◌̖◌〪◌᳙b; a◌〪◌̖◌᳙◌֚b; a◌〪◌̖◌᳙◌֚b; a◌〪◌̖◌᳙◌֚b; a◌〪◌̖◌᳙◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER, LATIN SMALL LETTER B
+0061 1CD9 059A 0316 302A 0062;0061 302A 1CD9 0316 059A 0062;0061 302A 1CD9 0316 059A 0062;0061 302A 1CD9 0316 059A 0062;0061 302A 1CD9 0316 059A 0062; # (a◌᳙◌֚◌̖◌〪b; a◌〪◌᳙◌̖◌֚b; a◌〪◌᳙◌̖◌֚b; a◌〪◌᳙◌̖◌֚b; a◌〪◌᳙◌̖◌֚b; ) LATIN SMALL LETTER A, VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1CDA 0062;00E0 05AE 1CDA 0315 0062;0061 05AE 0300 1CDA 0315 0062;00E0 05AE 1CDA 0315 0062;0061 05AE 0300 1CDA 0315 0062; # (a◌̕◌̀◌֮◌᳚b; à◌֮◌᳚◌̕b; a◌֮◌̀◌᳚◌̕b; à◌֮◌᳚◌̕b; a◌֮◌̀◌᳚◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, VEDIC TONE DOUBLE SVARITA, LATIN SMALL LETTER B
+0061 1CDA 0315 0300 05AE 0062;0061 05AE 1CDA 0300 0315 0062;0061 05AE 1CDA 0300 0315 0062;0061 05AE 1CDA 0300 0315 0062;0061 05AE 1CDA 0300 0315 0062; # (a◌᳚◌̕◌̀◌֮b; a◌֮◌᳚◌̀◌̕b; a◌֮◌᳚◌̀◌̕b; a◌֮◌᳚◌̀◌̕b; a◌֮◌᳚◌̀◌̕b; ) LATIN SMALL LETTER A, VEDIC TONE DOUBLE SVARITA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1CDB 0062;00E0 05AE 1CDB 0315 0062;0061 05AE 0300 1CDB 0315 0062;00E0 05AE 1CDB 0315 0062;0061 05AE 0300 1CDB 0315 0062; # (a◌̕◌̀◌֮◌᳛b; à◌֮◌᳛◌̕b; a◌֮◌̀◌᳛◌̕b; à◌֮◌᳛◌̕b; a◌֮◌̀◌᳛◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, VEDIC TONE TRIPLE SVARITA, LATIN SMALL LETTER B
+0061 1CDB 0315 0300 05AE 0062;0061 05AE 1CDB 0300 0315 0062;0061 05AE 1CDB 0300 0315 0062;0061 05AE 1CDB 0300 0315 0062;0061 05AE 1CDB 0300 0315 0062; # (a◌᳛◌̕◌̀◌֮b; a◌֮◌᳛◌̀◌̕b; a◌֮◌᳛◌̀◌̕b; a◌֮◌᳛◌̀◌̕b; a◌֮◌᳛◌̀◌̕b; ) LATIN SMALL LETTER A, VEDIC TONE TRIPLE SVARITA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1CDC 0062;0061 302A 0316 1CDC 059A 0062;0061 302A 0316 1CDC 059A 0062;0061 302A 0316 1CDC 059A 0062;0061 302A 0316 1CDC 059A 0062; # (a◌֚◌̖◌〪◌᳜b; a◌〪◌̖◌᳜◌֚b; a◌〪◌̖◌᳜◌֚b; a◌〪◌̖◌᳜◌֚b; a◌〪◌̖◌᳜◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, VEDIC TONE KATHAKA ANUDATTA, LATIN SMALL LETTER B
+0061 1CDC 059A 0316 302A 0062;0061 302A 1CDC 0316 059A 0062;0061 302A 1CDC 0316 059A 0062;0061 302A 1CDC 0316 059A 0062;0061 302A 1CDC 0316 059A 0062; # (a◌᳜◌֚◌̖◌〪b; a◌〪◌᳜◌̖◌֚b; a◌〪◌᳜◌̖◌֚b; a◌〪◌᳜◌̖◌֚b; a◌〪◌᳜◌̖◌֚b; ) LATIN SMALL LETTER A, VEDIC TONE KATHAKA ANUDATTA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1CDD 0062;0061 302A 0316 1CDD 059A 0062;0061 302A 0316 1CDD 059A 0062;0061 302A 0316 1CDD 059A 0062;0061 302A 0316 1CDD 059A 0062; # (a◌֚◌̖◌〪◌á³b; a◌〪◌̖◌á³â—ŒÖšb; a◌〪◌̖◌á³â—ŒÖšb; a◌〪◌̖◌á³â—ŒÖšb; a◌〪◌̖◌á³â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, VEDIC TONE DOT BELOW, LATIN SMALL LETTER B
+0061 1CDD 059A 0316 302A 0062;0061 302A 1CDD 0316 059A 0062;0061 302A 1CDD 0316 059A 0062;0061 302A 1CDD 0316 059A 0062;0061 302A 1CDD 0316 059A 0062; # (aâ—Œá³â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌á³â—ŒÌ–◌֚b; a◌〪◌á³â—ŒÌ–◌֚b; a◌〪◌á³â—ŒÌ–◌֚b; a◌〪◌á³â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, VEDIC TONE DOT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1CDE 0062;0061 302A 0316 1CDE 059A 0062;0061 302A 0316 1CDE 059A 0062;0061 302A 0316 1CDE 059A 0062;0061 302A 0316 1CDE 059A 0062; # (a◌֚◌̖◌〪◌᳞b; a◌〪◌̖◌᳞◌֚b; a◌〪◌̖◌᳞◌֚b; a◌〪◌̖◌᳞◌֚b; a◌〪◌̖◌᳞◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, VEDIC TONE TWO DOTS BELOW, LATIN SMALL LETTER B
+0061 1CDE 059A 0316 302A 0062;0061 302A 1CDE 0316 059A 0062;0061 302A 1CDE 0316 059A 0062;0061 302A 1CDE 0316 059A 0062;0061 302A 1CDE 0316 059A 0062; # (a◌᳞◌֚◌̖◌〪b; a◌〪◌᳞◌̖◌֚b; a◌〪◌᳞◌̖◌֚b; a◌〪◌᳞◌̖◌֚b; a◌〪◌᳞◌̖◌֚b; ) LATIN SMALL LETTER A, VEDIC TONE TWO DOTS BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1CDF 0062;0061 302A 0316 1CDF 059A 0062;0061 302A 0316 1CDF 059A 0062;0061 302A 0316 1CDF 059A 0062;0061 302A 0316 1CDF 059A 0062; # (a◌֚◌̖◌〪◌᳟b; a◌〪◌̖◌᳟◌֚b; a◌〪◌̖◌᳟◌֚b; a◌〪◌̖◌᳟◌֚b; a◌〪◌̖◌᳟◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, VEDIC TONE THREE DOTS BELOW, LATIN SMALL LETTER B
+0061 1CDF 059A 0316 302A 0062;0061 302A 1CDF 0316 059A 0062;0061 302A 1CDF 0316 059A 0062;0061 302A 1CDF 0316 059A 0062;0061 302A 1CDF 0316 059A 0062; # (a◌᳟◌֚◌̖◌〪b; a◌〪◌᳟◌̖◌֚b; a◌〪◌᳟◌̖◌֚b; a◌〪◌᳟◌̖◌֚b; a◌〪◌᳟◌̖◌֚b; ) LATIN SMALL LETTER A, VEDIC TONE THREE DOTS BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1CE0 0062;00E0 05AE 1CE0 0315 0062;0061 05AE 0300 1CE0 0315 0062;00E0 05AE 1CE0 0315 0062;0061 05AE 0300 1CE0 0315 0062; # (a◌̕◌̀◌֮◌᳠b; à◌֮◌᳠◌̕b; a◌֮◌̀◌᳠◌̕b; à◌֮◌᳠◌̕b; a◌֮◌̀◌᳠◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA, LATIN SMALL LETTER B
+0061 1CE0 0315 0300 05AE 0062;0061 05AE 1CE0 0300 0315 0062;0061 05AE 1CE0 0300 0315 0062;0061 05AE 1CE0 0300 0315 0062;0061 05AE 1CE0 0300 0315 0062; # (a◌᳠◌̕◌̀◌֮b; a◌֮◌᳠◌̀◌̕b; a◌֮◌᳠◌̀◌̕b; a◌֮◌᳠◌̀◌̕b; a◌֮◌᳠◌̀◌̕b; ) LATIN SMALL LETTER A, VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 1CE2 0062;0061 0334 1CE2 093C 0062;0061 0334 1CE2 093C 0062;0061 0334 1CE2 093C 0062;0061 0334 1CE2 093C 0062; # (a◌़◌̴◌᳢b; a◌̴◌᳢◌़b; a◌̴◌᳢◌़b; a◌̴◌᳢◌़b; a◌̴◌᳢◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, VEDIC SIGN VISARGA SVARITA, LATIN SMALL LETTER B
+0061 1CE2 093C 0334 0062;0061 1CE2 0334 093C 0062;0061 1CE2 0334 093C 0062;0061 1CE2 0334 093C 0062;0061 1CE2 0334 093C 0062; # (a◌᳢◌़◌̴b; a◌᳢◌̴◌़b; a◌᳢◌̴◌़b; a◌᳢◌̴◌़b; a◌᳢◌̴◌़b; ) LATIN SMALL LETTER A, VEDIC SIGN VISARGA SVARITA, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 1CE3 0062;0061 0334 1CE3 093C 0062;0061 0334 1CE3 093C 0062;0061 0334 1CE3 093C 0062;0061 0334 1CE3 093C 0062; # (a◌़◌̴◌᳣b; a◌̴◌᳣◌़b; a◌̴◌᳣◌़b; a◌̴◌᳣◌़b; a◌̴◌᳣◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, VEDIC SIGN VISARGA UDATTA, LATIN SMALL LETTER B
+0061 1CE3 093C 0334 0062;0061 1CE3 0334 093C 0062;0061 1CE3 0334 093C 0062;0061 1CE3 0334 093C 0062;0061 1CE3 0334 093C 0062; # (a◌᳣◌़◌̴b; a◌᳣◌̴◌़b; a◌᳣◌̴◌़b; a◌᳣◌̴◌़b; a◌᳣◌̴◌़b; ) LATIN SMALL LETTER A, VEDIC SIGN VISARGA UDATTA, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 1CE4 0062;0061 0334 1CE4 093C 0062;0061 0334 1CE4 093C 0062;0061 0334 1CE4 093C 0062;0061 0334 1CE4 093C 0062; # (a◌़◌̴◌᳤b; a◌̴◌᳤◌़b; a◌̴◌᳤◌़b; a◌̴◌᳤◌़b; a◌̴◌᳤◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, VEDIC SIGN REVERSED VISARGA UDATTA, LATIN SMALL LETTER B
+0061 1CE4 093C 0334 0062;0061 1CE4 0334 093C 0062;0061 1CE4 0334 093C 0062;0061 1CE4 0334 093C 0062;0061 1CE4 0334 093C 0062; # (a◌᳤◌़◌̴b; a◌᳤◌̴◌़b; a◌᳤◌̴◌़b; a◌᳤◌̴◌़b; a◌᳤◌̴◌़b; ) LATIN SMALL LETTER A, VEDIC SIGN REVERSED VISARGA UDATTA, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 1CE5 0062;0061 0334 1CE5 093C 0062;0061 0334 1CE5 093C 0062;0061 0334 1CE5 093C 0062;0061 0334 1CE5 093C 0062; # (a◌़◌̴◌᳥b; a◌̴◌᳥◌़b; a◌̴◌᳥◌़b; a◌̴◌᳥◌़b; a◌̴◌᳥◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, VEDIC SIGN VISARGA ANUDATTA, LATIN SMALL LETTER B
+0061 1CE5 093C 0334 0062;0061 1CE5 0334 093C 0062;0061 1CE5 0334 093C 0062;0061 1CE5 0334 093C 0062;0061 1CE5 0334 093C 0062; # (a◌᳥◌़◌̴b; a◌᳥◌̴◌़b; a◌᳥◌̴◌़b; a◌᳥◌̴◌़b; a◌᳥◌̴◌़b; ) LATIN SMALL LETTER A, VEDIC SIGN VISARGA ANUDATTA, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 1CE6 0062;0061 0334 1CE6 093C 0062;0061 0334 1CE6 093C 0062;0061 0334 1CE6 093C 0062;0061 0334 1CE6 093C 0062; # (a◌़◌̴◌᳦b; a◌̴◌᳦◌़b; a◌̴◌᳦◌़b; a◌̴◌᳦◌़b; a◌̴◌᳦◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, VEDIC SIGN REVERSED VISARGA ANUDATTA, LATIN SMALL LETTER B
+0061 1CE6 093C 0334 0062;0061 1CE6 0334 093C 0062;0061 1CE6 0334 093C 0062;0061 1CE6 0334 093C 0062;0061 1CE6 0334 093C 0062; # (a◌᳦◌़◌̴b; a◌᳦◌̴◌़b; a◌᳦◌̴◌़b; a◌᳦◌̴◌़b; a◌᳦◌̴◌़b; ) LATIN SMALL LETTER A, VEDIC SIGN REVERSED VISARGA ANUDATTA, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 1CE7 0062;0061 0334 1CE7 093C 0062;0061 0334 1CE7 093C 0062;0061 0334 1CE7 093C 0062;0061 0334 1CE7 093C 0062; # (a◌़◌̴◌᳧b; a◌̴◌᳧◌़b; a◌̴◌᳧◌़b; a◌̴◌᳧◌़b; a◌̴◌᳧◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, VEDIC SIGN VISARGA UDATTA WITH TAIL, LATIN SMALL LETTER B
+0061 1CE7 093C 0334 0062;0061 1CE7 0334 093C 0062;0061 1CE7 0334 093C 0062;0061 1CE7 0334 093C 0062;0061 1CE7 0334 093C 0062; # (a◌᳧◌़◌̴b; a◌᳧◌̴◌़b; a◌᳧◌̴◌़b; a◌᳧◌̴◌़b; a◌᳧◌̴◌़b; ) LATIN SMALL LETTER A, VEDIC SIGN VISARGA UDATTA WITH TAIL, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 1CE8 0062;0061 0334 1CE8 093C 0062;0061 0334 1CE8 093C 0062;0061 0334 1CE8 093C 0062;0061 0334 1CE8 093C 0062; # (a◌़◌̴◌᳨b; a◌̴◌᳨◌़b; a◌̴◌᳨◌़b; a◌̴◌᳨◌़b; a◌̴◌᳨◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, VEDIC SIGN VISARGA ANUDATTA WITH TAIL, LATIN SMALL LETTER B
+0061 1CE8 093C 0334 0062;0061 1CE8 0334 093C 0062;0061 1CE8 0334 093C 0062;0061 1CE8 0334 093C 0062;0061 1CE8 0334 093C 0062; # (a◌᳨◌़◌̴b; a◌᳨◌̴◌़b; a◌᳨◌̴◌़b; a◌᳨◌̴◌़b; a◌᳨◌̴◌़b; ) LATIN SMALL LETTER A, VEDIC SIGN VISARGA ANUDATTA WITH TAIL, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 059A 0316 302A 1CED 0062;0061 302A 0316 1CED 059A 0062;0061 302A 0316 1CED 059A 0062;0061 302A 0316 1CED 059A 0062;0061 302A 0316 1CED 059A 0062; # (a◌֚◌̖◌〪◌᳭b; a◌〪◌̖◌᳭◌֚b; a◌〪◌̖◌᳭◌֚b; a◌〪◌̖◌᳭◌֚b; a◌〪◌̖◌᳭◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, VEDIC SIGN TIRYAK, LATIN SMALL LETTER B
+0061 1CED 059A 0316 302A 0062;0061 302A 1CED 0316 059A 0062;0061 302A 1CED 0316 059A 0062;0061 302A 1CED 0316 059A 0062;0061 302A 1CED 0316 059A 0062; # (a◌᳭◌֚◌̖◌〪b; a◌〪◌᳭◌̖◌֚b; a◌〪◌᳭◌̖◌֚b; a◌〪◌᳭◌̖◌֚b; a◌〪◌᳭◌̖◌֚b; ) LATIN SMALL LETTER A, VEDIC SIGN TIRYAK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1CF4 0062;00E0 05AE 1CF4 0315 0062;0061 05AE 0300 1CF4 0315 0062;00E0 05AE 1CF4 0315 0062;0061 05AE 0300 1CF4 0315 0062; # (a◌̕◌̀◌֮◌᳴b; à◌֮◌᳴◌̕b; a◌֮◌̀◌᳴◌̕b; à◌֮◌᳴◌̕b; a◌֮◌̀◌᳴◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, VEDIC TONE CANDRA ABOVE, LATIN SMALL LETTER B
+0061 1CF4 0315 0300 05AE 0062;0061 05AE 1CF4 0300 0315 0062;0061 05AE 1CF4 0300 0315 0062;0061 05AE 1CF4 0300 0315 0062;0061 05AE 1CF4 0300 0315 0062; # (a◌᳴◌̕◌̀◌֮b; a◌֮◌᳴◌̀◌̕b; a◌֮◌᳴◌̀◌̕b; a◌֮◌᳴◌̀◌̕b; a◌֮◌᳴◌̀◌̕b; ) LATIN SMALL LETTER A, VEDIC TONE CANDRA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1CF8 0062;00E0 05AE 1CF8 0315 0062;0061 05AE 0300 1CF8 0315 0062;00E0 05AE 1CF8 0315 0062;0061 05AE 0300 1CF8 0315 0062; # (a◌̕◌̀◌֮◌᳸b; à◌֮◌᳸◌̕b; a◌֮◌̀◌᳸◌̕b; à◌֮◌᳸◌̕b; a◌֮◌̀◌᳸◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, VEDIC TONE RING ABOVE, LATIN SMALL LETTER B
+0061 1CF8 0315 0300 05AE 0062;0061 05AE 1CF8 0300 0315 0062;0061 05AE 1CF8 0300 0315 0062;0061 05AE 1CF8 0300 0315 0062;0061 05AE 1CF8 0300 0315 0062; # (a◌᳸◌̕◌̀◌֮b; a◌֮◌᳸◌̀◌̕b; a◌֮◌᳸◌̀◌̕b; a◌֮◌᳸◌̀◌̕b; a◌֮◌᳸◌̀◌̕b; ) LATIN SMALL LETTER A, VEDIC TONE RING ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1CF9 0062;00E0 05AE 1CF9 0315 0062;0061 05AE 0300 1CF9 0315 0062;00E0 05AE 1CF9 0315 0062;0061 05AE 0300 1CF9 0315 0062; # (a◌̕◌̀◌֮◌᳹b; à◌֮◌᳹◌̕b; a◌֮◌̀◌᳹◌̕b; à◌֮◌᳹◌̕b; a◌֮◌̀◌᳹◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, VEDIC TONE DOUBLE RING ABOVE, LATIN SMALL LETTER B
+0061 1CF9 0315 0300 05AE 0062;0061 05AE 1CF9 0300 0315 0062;0061 05AE 1CF9 0300 0315 0062;0061 05AE 1CF9 0300 0315 0062;0061 05AE 1CF9 0300 0315 0062; # (a◌᳹◌̕◌̀◌֮b; a◌֮◌᳹◌̀◌̕b; a◌֮◌᳹◌̀◌̕b; a◌֮◌᳹◌̀◌̕b; a◌֮◌᳹◌̀◌̕b; ) LATIN SMALL LETTER A, VEDIC TONE DOUBLE RING ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC0 0062;00E0 05AE 1DC0 0315 0062;0061 05AE 0300 1DC0 0315 0062;00E0 05AE 1DC0 0315 0062;0061 05AE 0300 1DC0 0315 0062; # (a◌̕◌̀◌֮◌᷀b; à◌֮◌᷀◌̕b; a◌֮◌̀◌᷀◌̕b; à◌֮◌᷀◌̕b; a◌֮◌̀◌᷀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOTTED GRAVE ACCENT, LATIN SMALL LETTER B
+0061 1DC0 0315 0300 05AE 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062; # (a◌᷀◌̕◌̀◌֮b; a◌֮◌᷀◌̀◌̕b; a◌֮◌᷀◌̀◌̕b; a◌֮◌᷀◌̀◌̕b; a◌֮◌᷀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOTTED GRAVE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC1 0062;00E0 05AE 1DC1 0315 0062;0061 05AE 0300 1DC1 0315 0062;00E0 05AE 1DC1 0315 0062;0061 05AE 0300 1DC1 0315 0062; # (a◌̕◌̀◌֮◌á·b; à◌֮◌á·â—ŒÌ•b; a◌֮◌̀◌á·â—ŒÌ•b; à◌֮◌á·â—ŒÌ•b; a◌֮◌̀◌á·â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOTTED ACUTE ACCENT, LATIN SMALL LETTER B
+0061 1DC1 0315 0300 05AE 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062; # (aâ—Œá·â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING DOTTED ACUTE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1DC2 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062; # (a◌֚◌̖◌〪◌᷂b; a◌〪◌̖◌᷂◌֚b; a◌〪◌̖◌᷂◌֚b; a◌〪◌̖◌᷂◌֚b; a◌〪◌̖◌᷂◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING SNAKE BELOW, LATIN SMALL LETTER B
+0061 1DC2 059A 0316 302A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062; # (a◌᷂◌֚◌̖◌〪b; a◌〪◌᷂◌̖◌֚b; a◌〪◌᷂◌̖◌֚b; a◌〪◌᷂◌̖◌֚b; a◌〪◌᷂◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING SNAKE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC3 0062;00E0 05AE 1DC3 0315 0062;0061 05AE 0300 1DC3 0315 0062;00E0 05AE 1DC3 0315 0062;0061 05AE 0300 1DC3 0315 0062; # (a◌̕◌̀◌֮◌᷃b; à◌֮◌᷃◌̕b; a◌֮◌̀◌᷃◌̕b; à◌֮◌᷃◌̕b; a◌֮◌̀◌᷃◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING SUSPENSION MARK, LATIN SMALL LETTER B
+0061 1DC3 0315 0300 05AE 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062; # (a◌᷃◌̕◌̀◌֮b; a◌֮◌᷃◌̀◌̕b; a◌֮◌᷃◌̀◌̕b; a◌֮◌᷃◌̀◌̕b; a◌֮◌᷃◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING SUSPENSION MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC4 0062;00E0 05AE 1DC4 0315 0062;0061 05AE 0300 1DC4 0315 0062;00E0 05AE 1DC4 0315 0062;0061 05AE 0300 1DC4 0315 0062; # (a◌̕◌̀◌֮◌᷄b; à◌֮◌᷄◌̕b; a◌֮◌̀◌᷄◌̕b; à◌֮◌᷄◌̕b; a◌֮◌̀◌᷄◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING MACRON-ACUTE, LATIN SMALL LETTER B
+0061 1DC4 0315 0300 05AE 0062;0061 05AE 1DC4 0300 0315 0062;0061 05AE 1DC4 0300 0315 0062;0061 05AE 1DC4 0300 0315 0062;0061 05AE 1DC4 0300 0315 0062; # (a◌᷄◌̕◌̀◌֮b; a◌֮◌᷄◌̀◌̕b; a◌֮◌᷄◌̀◌̕b; a◌֮◌᷄◌̀◌̕b; a◌֮◌᷄◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING MACRON-ACUTE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC5 0062;00E0 05AE 1DC5 0315 0062;0061 05AE 0300 1DC5 0315 0062;00E0 05AE 1DC5 0315 0062;0061 05AE 0300 1DC5 0315 0062; # (a◌̕◌̀◌֮◌᷅b; à◌֮◌᷅◌̕b; a◌֮◌̀◌᷅◌̕b; à◌֮◌᷅◌̕b; a◌֮◌̀◌᷅◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRAVE-MACRON, LATIN SMALL LETTER B
+0061 1DC5 0315 0300 05AE 0062;0061 05AE 1DC5 0300 0315 0062;0061 05AE 1DC5 0300 0315 0062;0061 05AE 1DC5 0300 0315 0062;0061 05AE 1DC5 0300 0315 0062; # (a◌᷅◌̕◌̀◌֮b; a◌֮◌᷅◌̀◌̕b; a◌֮◌᷅◌̀◌̕b; a◌֮◌᷅◌̀◌̕b; a◌֮◌᷅◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GRAVE-MACRON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC6 0062;00E0 05AE 1DC6 0315 0062;0061 05AE 0300 1DC6 0315 0062;00E0 05AE 1DC6 0315 0062;0061 05AE 0300 1DC6 0315 0062; # (a◌̕◌̀◌֮◌᷆b; à◌֮◌᷆◌̕b; a◌֮◌̀◌᷆◌̕b; à◌֮◌᷆◌̕b; a◌֮◌̀◌᷆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING MACRON-GRAVE, LATIN SMALL LETTER B
+0061 1DC6 0315 0300 05AE 0062;0061 05AE 1DC6 0300 0315 0062;0061 05AE 1DC6 0300 0315 0062;0061 05AE 1DC6 0300 0315 0062;0061 05AE 1DC6 0300 0315 0062; # (a◌᷆◌̕◌̀◌֮b; a◌֮◌᷆◌̀◌̕b; a◌֮◌᷆◌̀◌̕b; a◌֮◌᷆◌̀◌̕b; a◌֮◌᷆◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING MACRON-GRAVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC7 0062;00E0 05AE 1DC7 0315 0062;0061 05AE 0300 1DC7 0315 0062;00E0 05AE 1DC7 0315 0062;0061 05AE 0300 1DC7 0315 0062; # (a◌̕◌̀◌֮◌᷇b; à◌֮◌᷇◌̕b; a◌֮◌̀◌᷇◌̕b; à◌֮◌᷇◌̕b; a◌֮◌̀◌᷇◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ACUTE-MACRON, LATIN SMALL LETTER B
+0061 1DC7 0315 0300 05AE 0062;0061 05AE 1DC7 0300 0315 0062;0061 05AE 1DC7 0300 0315 0062;0061 05AE 1DC7 0300 0315 0062;0061 05AE 1DC7 0300 0315 0062; # (a◌᷇◌̕◌̀◌֮b; a◌֮◌᷇◌̀◌̕b; a◌֮◌᷇◌̀◌̕b; a◌֮◌᷇◌̀◌̕b; a◌֮◌᷇◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ACUTE-MACRON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC8 0062;00E0 05AE 1DC8 0315 0062;0061 05AE 0300 1DC8 0315 0062;00E0 05AE 1DC8 0315 0062;0061 05AE 0300 1DC8 0315 0062; # (a◌̕◌̀◌֮◌᷈b; à◌֮◌᷈◌̕b; a◌֮◌̀◌᷈◌̕b; à◌֮◌᷈◌̕b; a◌֮◌̀◌᷈◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRAVE-ACUTE-GRAVE, LATIN SMALL LETTER B
+0061 1DC8 0315 0300 05AE 0062;0061 05AE 1DC8 0300 0315 0062;0061 05AE 1DC8 0300 0315 0062;0061 05AE 1DC8 0300 0315 0062;0061 05AE 1DC8 0300 0315 0062; # (a◌᷈◌̕◌̀◌֮b; a◌֮◌᷈◌̀◌̕b; a◌֮◌᷈◌̀◌̕b; a◌֮◌᷈◌̀◌̕b; a◌֮◌᷈◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GRAVE-ACUTE-GRAVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC9 0062;00E0 05AE 1DC9 0315 0062;0061 05AE 0300 1DC9 0315 0062;00E0 05AE 1DC9 0315 0062;0061 05AE 0300 1DC9 0315 0062; # (a◌̕◌̀◌֮◌᷉b; à◌֮◌᷉◌̕b; a◌֮◌̀◌᷉◌̕b; à◌֮◌᷉◌̕b; a◌֮◌̀◌᷉◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ACUTE-GRAVE-ACUTE, LATIN SMALL LETTER B
+0061 1DC9 0315 0300 05AE 0062;0061 05AE 1DC9 0300 0315 0062;0061 05AE 1DC9 0300 0315 0062;0061 05AE 1DC9 0300 0315 0062;0061 05AE 1DC9 0300 0315 0062; # (a◌᷉◌̕◌̀◌֮b; a◌֮◌᷉◌̀◌̕b; a◌֮◌᷉◌̀◌̕b; a◌֮◌᷉◌̀◌̕b; a◌֮◌᷉◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ACUTE-GRAVE-ACUTE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1DCA 0062;0061 302A 0316 1DCA 059A 0062;0061 302A 0316 1DCA 059A 0062;0061 302A 0316 1DCA 059A 0062;0061 302A 0316 1DCA 059A 0062; # (a◌֚◌̖◌〪◌᷊b; a◌〪◌̖◌᷊◌֚b; a◌〪◌̖◌᷊◌֚b; a◌〪◌̖◌᷊◌֚b; a◌〪◌̖◌᷊◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LATIN SMALL LETTER R BELOW, LATIN SMALL LETTER B
+0061 1DCA 059A 0316 302A 0062;0061 302A 1DCA 0316 059A 0062;0061 302A 1DCA 0316 059A 0062;0061 302A 1DCA 0316 059A 0062;0061 302A 1DCA 0316 059A 0062; # (a◌᷊◌֚◌̖◌〪b; a◌〪◌᷊◌̖◌֚b; a◌〪◌᷊◌̖◌֚b; a◌〪◌᷊◌̖◌֚b; a◌〪◌᷊◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER R BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DCB 0062;00E0 05AE 1DCB 0315 0062;0061 05AE 0300 1DCB 0315 0062;00E0 05AE 1DCB 0315 0062;0061 05AE 0300 1DCB 0315 0062; # (a◌̕◌̀◌֮◌᷋b; à◌֮◌᷋◌̕b; a◌֮◌̀◌᷋◌̕b; à◌֮◌᷋◌̕b; a◌֮◌̀◌᷋◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING BREVE-MACRON, LATIN SMALL LETTER B
+0061 1DCB 0315 0300 05AE 0062;0061 05AE 1DCB 0300 0315 0062;0061 05AE 1DCB 0300 0315 0062;0061 05AE 1DCB 0300 0315 0062;0061 05AE 1DCB 0300 0315 0062; # (a◌᷋◌̕◌̀◌֮b; a◌֮◌᷋◌̀◌̕b; a◌֮◌᷋◌̀◌̕b; a◌֮◌᷋◌̀◌̕b; a◌֮◌᷋◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING BREVE-MACRON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DCC 0062;00E0 05AE 1DCC 0315 0062;0061 05AE 0300 1DCC 0315 0062;00E0 05AE 1DCC 0315 0062;0061 05AE 0300 1DCC 0315 0062; # (a◌̕◌̀◌֮◌᷌b; à◌֮◌᷌◌̕b; a◌֮◌̀◌᷌◌̕b; à◌֮◌᷌◌̕b; a◌֮◌̀◌᷌◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING MACRON-BREVE, LATIN SMALL LETTER B
+0061 1DCC 0315 0300 05AE 0062;0061 05AE 1DCC 0300 0315 0062;0061 05AE 1DCC 0300 0315 0062;0061 05AE 1DCC 0300 0315 0062;0061 05AE 1DCC 0300 0315 0062; # (a◌᷌◌̕◌̀◌֮b; a◌֮◌᷌◌̀◌̕b; a◌֮◌᷌◌̀◌̕b; a◌֮◌᷌◌̀◌̕b; a◌֮◌᷌◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING MACRON-BREVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0345 035D 035C 1DCD 0062;0061 035C 035D 1DCD 0345 0062;0061 035C 035D 1DCD 0345 0062;0061 035C 035D 1DCD 0345 0062;0061 035C 035D 1DCD 0345 0062; # (a◌ͅ◌Í◌͜◌á·b; a◌͜◌Íâ—Œá·â—ŒÍ…b; a◌͜◌Íâ—Œá·â—ŒÍ…b; a◌͜◌Íâ—Œá·â—ŒÍ…b; a◌͜◌Íâ—Œá·â—ŒÍ…b; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE CIRCUMFLEX ABOVE, LATIN SMALL LETTER B
+0061 1DCD 0345 035D 035C 0062;0061 035C 1DCD 035D 0345 0062;0061 035C 1DCD 035D 0345 0062;0061 035C 1DCD 035D 0345 0062;0061 035C 1DCD 035D 0345 0062; # (aâ—Œá·â—ŒÍ…â—ŒÍ◌͜b; a◌͜◌á·â—ŒÍ◌ͅb; a◌͜◌á·â—ŒÍ◌ͅb; a◌͜◌á·â—ŒÍ◌ͅb; a◌͜◌á·â—ŒÍ◌ͅb; ) LATIN SMALL LETTER A, COMBINING DOUBLE CIRCUMFLEX ABOVE, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 031B 1DCE 0321 1DCE 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062; # (a◌̛◌᷎◌̡◌᷎b; a◌̡◌᷎◌᷎◌̛b; a◌̡◌᷎◌᷎◌̛b; a◌̡◌᷎◌᷎◌̛b; a◌̡◌᷎◌᷎◌̛b; ) LATIN SMALL LETTER A, COMBINING HORN, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
+0061 1DCE 031B 1DCE 0321 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062; # (a◌᷎◌̛◌᷎◌̡b; a◌̡◌᷎◌᷎◌̛b; a◌̡◌᷎◌᷎◌̛b; a◌̡◌᷎◌᷎◌̛b; a◌̡◌᷎◌᷎◌̛b; ) LATIN SMALL LETTER A, COMBINING OGONEK ABOVE, COMBINING HORN, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 059A 0316 302A 1DCF 0062;0061 302A 0316 1DCF 059A 0062;0061 302A 0316 1DCF 059A 0062;0061 302A 0316 1DCF 059A 0062;0061 302A 0316 1DCF 059A 0062; # (a◌֚◌̖◌〪◌á·b; a◌〪◌̖◌á·â—ŒÖšb; a◌〪◌̖◌á·â—ŒÖšb; a◌〪◌̖◌á·â—ŒÖšb; a◌〪◌̖◌á·â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING ZIGZAG BELOW, LATIN SMALL LETTER B
+0061 1DCF 059A 0316 302A 0062;0061 302A 1DCF 0316 059A 0062;0061 302A 1DCF 0316 059A 0062;0061 302A 1DCF 0316 059A 0062;0061 302A 1DCF 0316 059A 0062; # (aâ—Œá·â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌á·â—ŒÌ–◌֚b; a◌〪◌á·â—ŒÌ–◌֚b; a◌〪◌á·â—ŒÌ–◌֚b; a◌〪◌á·â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, COMBINING ZIGZAG BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 1DCE 0321 0F74 1DD0 0062;0061 0F74 0321 1DD0 1DCE 0062;0061 0F74 0321 1DD0 1DCE 0062;0061 0F74 0321 1DD0 1DCE 0062;0061 0F74 0321 1DD0 1DCE 0062; # (a◌᷎◌̡◌ུ◌á·b; a◌ུ◌̡◌á·â—Œá·Žb; a◌ུ◌̡◌á·â—Œá·Žb; a◌ུ◌̡◌á·â—Œá·Žb; a◌ུ◌̡◌á·â—Œá·Žb; ) LATIN SMALL LETTER A, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, COMBINING IS BELOW, LATIN SMALL LETTER B
+0061 1DD0 1DCE 0321 0F74 0062;0061 0F74 1DD0 0321 1DCE 0062;0061 0F74 1DD0 0321 1DCE 0062;0061 0F74 1DD0 0321 1DCE 0062;0061 0F74 1DD0 0321 1DCE 0062; # (aâ—Œá·â—Œá·Žâ—ŒÌ¡â—Œà½´b; a◌ུ◌á·â—ŒÌ¡â—Œá·Žb; a◌ུ◌á·â—ŒÌ¡â—Œá·Žb; a◌ུ◌á·â—ŒÌ¡â—Œá·Žb; a◌ུ◌á·â—ŒÌ¡â—Œá·Žb; ) LATIN SMALL LETTER A, COMBINING IS BELOW, COMBINING OGONEK ABOVE, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DD1 0062;00E0 05AE 1DD1 0315 0062;0061 05AE 0300 1DD1 0315 0062;00E0 05AE 1DD1 0315 0062;0061 05AE 0300 1DD1 0315 0062; # (a◌̕◌̀◌֮◌᷑b; à◌֮◌᷑◌̕b; a◌֮◌̀◌᷑◌̕b; à◌֮◌᷑◌̕b; a◌֮◌̀◌᷑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING UR ABOVE, LATIN SMALL LETTER B
+0061 1DD1 0315 0300 05AE 0062;0061 05AE 1DD1 0300 0315 0062;0061 05AE 1DD1 0300 0315 0062;0061 05AE 1DD1 0300 0315 0062;0061 05AE 1DD1 0300 0315 0062; # (a◌᷑◌̕◌̀◌֮b; a◌֮◌᷑◌̀◌̕b; a◌֮◌᷑◌̀◌̕b; a◌֮◌᷑◌̀◌̕b; a◌֮◌᷑◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING UR ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DD2 0062;00E0 05AE 1DD2 0315 0062;0061 05AE 0300 1DD2 0315 0062;00E0 05AE 1DD2 0315 0062;0061 05AE 0300 1DD2 0315 0062; # (a◌̕◌̀◌֮◌᷒b; à◌֮◌᷒◌̕b; a◌֮◌̀◌᷒◌̕b; à◌֮◌᷒◌̕b; a◌֮◌̀◌᷒◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING US ABOVE, LATIN SMALL LETTER B
+0061 1DD2 0315 0300 05AE 0062;0061 05AE 1DD2 0300 0315 0062;0061 05AE 1DD2 0300 0315 0062;0061 05AE 1DD2 0300 0315 0062;0061 05AE 1DD2 0300 0315 0062; # (a◌᷒◌̕◌̀◌֮b; a◌֮◌᷒◌̀◌̕b; a◌֮◌᷒◌̀◌̕b; a◌֮◌᷒◌̀◌̕b; a◌֮◌᷒◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING US ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DD3 0062;00E0 05AE 1DD3 0315 0062;0061 05AE 0300 1DD3 0315 0062;00E0 05AE 1DD3 0315 0062;0061 05AE 0300 1DD3 0315 0062; # (a◌̕◌̀◌֮◌ᷓb; à◌֮◌ᷓ◌̕b; a◌֮◌̀◌ᷓ◌̕b; à◌֮◌ᷓ◌̕b; a◌֮◌̀◌ᷓ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE, LATIN SMALL LETTER B
+0061 1DD3 0315 0300 05AE 0062;0061 05AE 1DD3 0300 0315 0062;0061 05AE 1DD3 0300 0315 0062;0061 05AE 1DD3 0300 0315 0062;0061 05AE 1DD3 0300 0315 0062; # (a◌ᷓ◌̕◌̀◌֮b; a◌֮◌ᷓ◌̀◌̕b; a◌֮◌ᷓ◌̀◌̕b; a◌֮◌ᷓ◌̀◌̕b; a◌֮◌ᷓ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DD4 0062;00E0 05AE 1DD4 0315 0062;0061 05AE 0300 1DD4 0315 0062;00E0 05AE 1DD4 0315 0062;0061 05AE 0300 1DD4 0315 0062; # (a◌̕◌̀◌֮◌ᷔb; à◌֮◌ᷔ◌̕b; a◌֮◌̀◌ᷔ◌̕b; à◌֮◌ᷔ◌̕b; a◌֮◌̀◌ᷔ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER AE, LATIN SMALL LETTER B
+0061 1DD4 0315 0300 05AE 0062;0061 05AE 1DD4 0300 0315 0062;0061 05AE 1DD4 0300 0315 0062;0061 05AE 1DD4 0300 0315 0062;0061 05AE 1DD4 0300 0315 0062; # (a◌ᷔ◌̕◌̀◌֮b; a◌֮◌ᷔ◌̀◌̕b; a◌֮◌ᷔ◌̀◌̕b; a◌֮◌ᷔ◌̀◌̕b; a◌֮◌ᷔ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER AE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DD5 0062;00E0 05AE 1DD5 0315 0062;0061 05AE 0300 1DD5 0315 0062;00E0 05AE 1DD5 0315 0062;0061 05AE 0300 1DD5 0315 0062; # (a◌̕◌̀◌֮◌ᷕb; à◌֮◌ᷕ◌̕b; a◌֮◌̀◌ᷕ◌̕b; à◌֮◌ᷕ◌̕b; a◌֮◌̀◌ᷕ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER AO, LATIN SMALL LETTER B
+0061 1DD5 0315 0300 05AE 0062;0061 05AE 1DD5 0300 0315 0062;0061 05AE 1DD5 0300 0315 0062;0061 05AE 1DD5 0300 0315 0062;0061 05AE 1DD5 0300 0315 0062; # (a◌ᷕ◌̕◌̀◌֮b; a◌֮◌ᷕ◌̀◌̕b; a◌֮◌ᷕ◌̀◌̕b; a◌֮◌ᷕ◌̀◌̕b; a◌֮◌ᷕ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER AO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DD6 0062;00E0 05AE 1DD6 0315 0062;0061 05AE 0300 1DD6 0315 0062;00E0 05AE 1DD6 0315 0062;0061 05AE 0300 1DD6 0315 0062; # (a◌̕◌̀◌֮◌ᷖb; à◌֮◌ᷖ◌̕b; a◌֮◌̀◌ᷖ◌̕b; à◌֮◌ᷖ◌̕b; a◌֮◌̀◌ᷖ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER AV, LATIN SMALL LETTER B
+0061 1DD6 0315 0300 05AE 0062;0061 05AE 1DD6 0300 0315 0062;0061 05AE 1DD6 0300 0315 0062;0061 05AE 1DD6 0300 0315 0062;0061 05AE 1DD6 0300 0315 0062; # (a◌ᷖ◌̕◌̀◌֮b; a◌֮◌ᷖ◌̀◌̕b; a◌֮◌ᷖ◌̀◌̕b; a◌֮◌ᷖ◌̀◌̕b; a◌֮◌ᷖ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER AV, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DD7 0062;00E0 05AE 1DD7 0315 0062;0061 05AE 0300 1DD7 0315 0062;00E0 05AE 1DD7 0315 0062;0061 05AE 0300 1DD7 0315 0062; # (a◌̕◌̀◌֮◌ᷗb; à◌֮◌ᷗ◌̕b; a◌֮◌̀◌ᷗ◌̕b; à◌֮◌ᷗ◌̕b; a◌֮◌̀◌ᷗ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER C CEDILLA, LATIN SMALL LETTER B
+0061 1DD7 0315 0300 05AE 0062;0061 05AE 1DD7 0300 0315 0062;0061 05AE 1DD7 0300 0315 0062;0061 05AE 1DD7 0300 0315 0062;0061 05AE 1DD7 0300 0315 0062; # (a◌ᷗ◌̕◌̀◌֮b; a◌֮◌ᷗ◌̀◌̕b; a◌֮◌ᷗ◌̀◌̕b; a◌֮◌ᷗ◌̀◌̕b; a◌֮◌ᷗ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER C CEDILLA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DD8 0062;00E0 05AE 1DD8 0315 0062;0061 05AE 0300 1DD8 0315 0062;00E0 05AE 1DD8 0315 0062;0061 05AE 0300 1DD8 0315 0062; # (a◌̕◌̀◌֮◌ᷘb; à◌֮◌ᷘ◌̕b; a◌֮◌̀◌ᷘ◌̕b; à◌֮◌ᷘ◌̕b; a◌֮◌̀◌ᷘ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER INSULAR D, LATIN SMALL LETTER B
+0061 1DD8 0315 0300 05AE 0062;0061 05AE 1DD8 0300 0315 0062;0061 05AE 1DD8 0300 0315 0062;0061 05AE 1DD8 0300 0315 0062;0061 05AE 1DD8 0300 0315 0062; # (a◌ᷘ◌̕◌̀◌֮b; a◌֮◌ᷘ◌̀◌̕b; a◌֮◌ᷘ◌̀◌̕b; a◌֮◌ᷘ◌̀◌̕b; a◌֮◌ᷘ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER INSULAR D, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DD9 0062;00E0 05AE 1DD9 0315 0062;0061 05AE 0300 1DD9 0315 0062;00E0 05AE 1DD9 0315 0062;0061 05AE 0300 1DD9 0315 0062; # (a◌̕◌̀◌֮◌ᷙb; à◌֮◌ᷙ◌̕b; a◌֮◌̀◌ᷙ◌̕b; à◌֮◌ᷙ◌̕b; a◌֮◌̀◌ᷙ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER ETH, LATIN SMALL LETTER B
+0061 1DD9 0315 0300 05AE 0062;0061 05AE 1DD9 0300 0315 0062;0061 05AE 1DD9 0300 0315 0062;0061 05AE 1DD9 0300 0315 0062;0061 05AE 1DD9 0300 0315 0062; # (a◌ᷙ◌̕◌̀◌֮b; a◌֮◌ᷙ◌̀◌̕b; a◌֮◌ᷙ◌̀◌̕b; a◌֮◌ᷙ◌̀◌̕b; a◌֮◌ᷙ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER ETH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DDA 0062;00E0 05AE 1DDA 0315 0062;0061 05AE 0300 1DDA 0315 0062;00E0 05AE 1DDA 0315 0062;0061 05AE 0300 1DDA 0315 0062; # (a◌̕◌̀◌֮◌ᷚb; à◌֮◌ᷚ◌̕b; a◌֮◌̀◌ᷚ◌̕b; à◌֮◌ᷚ◌̕b; a◌֮◌̀◌ᷚ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER G, LATIN SMALL LETTER B
+0061 1DDA 0315 0300 05AE 0062;0061 05AE 1DDA 0300 0315 0062;0061 05AE 1DDA 0300 0315 0062;0061 05AE 1DDA 0300 0315 0062;0061 05AE 1DDA 0300 0315 0062; # (a◌ᷚ◌̕◌̀◌֮b; a◌֮◌ᷚ◌̀◌̕b; a◌֮◌ᷚ◌̀◌̕b; a◌֮◌ᷚ◌̀◌̕b; a◌֮◌ᷚ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER G, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DDB 0062;00E0 05AE 1DDB 0315 0062;0061 05AE 0300 1DDB 0315 0062;00E0 05AE 1DDB 0315 0062;0061 05AE 0300 1DDB 0315 0062; # (a◌̕◌̀◌֮◌ᷛb; à◌֮◌ᷛ◌̕b; a◌֮◌̀◌ᷛ◌̕b; à◌֮◌ᷛ◌̕b; a◌֮◌̀◌ᷛ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN LETTER SMALL CAPITAL G, LATIN SMALL LETTER B
+0061 1DDB 0315 0300 05AE 0062;0061 05AE 1DDB 0300 0315 0062;0061 05AE 1DDB 0300 0315 0062;0061 05AE 1DDB 0300 0315 0062;0061 05AE 1DDB 0300 0315 0062; # (a◌ᷛ◌̕◌̀◌֮b; a◌֮◌ᷛ◌̀◌̕b; a◌֮◌ᷛ◌̀◌̕b; a◌֮◌ᷛ◌̀◌̕b; a◌֮◌ᷛ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN LETTER SMALL CAPITAL G, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DDC 0062;00E0 05AE 1DDC 0315 0062;0061 05AE 0300 1DDC 0315 0062;00E0 05AE 1DDC 0315 0062;0061 05AE 0300 1DDC 0315 0062; # (a◌̕◌̀◌֮◌ᷜb; à◌֮◌ᷜ◌̕b; a◌֮◌̀◌ᷜ◌̕b; à◌֮◌ᷜ◌̕b; a◌֮◌̀◌ᷜ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER K, LATIN SMALL LETTER B
+0061 1DDC 0315 0300 05AE 0062;0061 05AE 1DDC 0300 0315 0062;0061 05AE 1DDC 0300 0315 0062;0061 05AE 1DDC 0300 0315 0062;0061 05AE 1DDC 0300 0315 0062; # (a◌ᷜ◌̕◌̀◌֮b; a◌֮◌ᷜ◌̀◌̕b; a◌֮◌ᷜ◌̀◌̕b; a◌֮◌ᷜ◌̀◌̕b; a◌֮◌ᷜ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER K, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DDD 0062;00E0 05AE 1DDD 0315 0062;0061 05AE 0300 1DDD 0315 0062;00E0 05AE 1DDD 0315 0062;0061 05AE 0300 1DDD 0315 0062; # (a◌̕◌̀◌֮◌á·b; à◌֮◌á·â—ŒÌ•b; a◌֮◌̀◌á·â—ŒÌ•b; à◌֮◌á·â—ŒÌ•b; a◌֮◌̀◌á·â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER L, LATIN SMALL LETTER B
+0061 1DDD 0315 0300 05AE 0062;0061 05AE 1DDD 0300 0315 0062;0061 05AE 1DDD 0300 0315 0062;0061 05AE 1DDD 0300 0315 0062;0061 05AE 1DDD 0300 0315 0062; # (aâ—Œá·â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER L, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DDE 0062;00E0 05AE 1DDE 0315 0062;0061 05AE 0300 1DDE 0315 0062;00E0 05AE 1DDE 0315 0062;0061 05AE 0300 1DDE 0315 0062; # (a◌̕◌̀◌֮◌ᷞb; à◌֮◌ᷞ◌̕b; a◌֮◌̀◌ᷞ◌̕b; à◌֮◌ᷞ◌̕b; a◌֮◌̀◌ᷞ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN LETTER SMALL CAPITAL L, LATIN SMALL LETTER B
+0061 1DDE 0315 0300 05AE 0062;0061 05AE 1DDE 0300 0315 0062;0061 05AE 1DDE 0300 0315 0062;0061 05AE 1DDE 0300 0315 0062;0061 05AE 1DDE 0300 0315 0062; # (a◌ᷞ◌̕◌̀◌֮b; a◌֮◌ᷞ◌̀◌̕b; a◌֮◌ᷞ◌̀◌̕b; a◌֮◌ᷞ◌̀◌̕b; a◌֮◌ᷞ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN LETTER SMALL CAPITAL L, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DDF 0062;00E0 05AE 1DDF 0315 0062;0061 05AE 0300 1DDF 0315 0062;00E0 05AE 1DDF 0315 0062;0061 05AE 0300 1DDF 0315 0062; # (a◌̕◌̀◌֮◌ᷟb; à◌֮◌ᷟ◌̕b; a◌֮◌̀◌ᷟ◌̕b; à◌֮◌ᷟ◌̕b; a◌֮◌̀◌ᷟ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN LETTER SMALL CAPITAL M, LATIN SMALL LETTER B
+0061 1DDF 0315 0300 05AE 0062;0061 05AE 1DDF 0300 0315 0062;0061 05AE 1DDF 0300 0315 0062;0061 05AE 1DDF 0300 0315 0062;0061 05AE 1DDF 0300 0315 0062; # (a◌ᷟ◌̕◌̀◌֮b; a◌֮◌ᷟ◌̀◌̕b; a◌֮◌ᷟ◌̀◌̕b; a◌֮◌ᷟ◌̀◌̕b; a◌֮◌ᷟ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN LETTER SMALL CAPITAL M, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DE0 0062;00E0 05AE 1DE0 0315 0062;0061 05AE 0300 1DE0 0315 0062;00E0 05AE 1DE0 0315 0062;0061 05AE 0300 1DE0 0315 0062; # (a◌̕◌̀◌֮◌ᷠb; à◌֮◌ᷠ◌̕b; a◌֮◌̀◌ᷠ◌̕b; à◌֮◌ᷠ◌̕b; a◌֮◌̀◌ᷠ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER N, LATIN SMALL LETTER B
+0061 1DE0 0315 0300 05AE 0062;0061 05AE 1DE0 0300 0315 0062;0061 05AE 1DE0 0300 0315 0062;0061 05AE 1DE0 0300 0315 0062;0061 05AE 1DE0 0300 0315 0062; # (a◌ᷠ◌̕◌̀◌֮b; a◌֮◌ᷠ◌̀◌̕b; a◌֮◌ᷠ◌̀◌̕b; a◌֮◌ᷠ◌̀◌̕b; a◌֮◌ᷠ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER N, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DE1 0062;00E0 05AE 1DE1 0315 0062;0061 05AE 0300 1DE1 0315 0062;00E0 05AE 1DE1 0315 0062;0061 05AE 0300 1DE1 0315 0062; # (a◌̕◌̀◌֮◌ᷡb; à◌֮◌ᷡ◌̕b; a◌֮◌̀◌ᷡ◌̕b; à◌֮◌ᷡ◌̕b; a◌֮◌̀◌ᷡ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN LETTER SMALL CAPITAL N, LATIN SMALL LETTER B
+0061 1DE1 0315 0300 05AE 0062;0061 05AE 1DE1 0300 0315 0062;0061 05AE 1DE1 0300 0315 0062;0061 05AE 1DE1 0300 0315 0062;0061 05AE 1DE1 0300 0315 0062; # (a◌ᷡ◌̕◌̀◌֮b; a◌֮◌ᷡ◌̀◌̕b; a◌֮◌ᷡ◌̀◌̕b; a◌֮◌ᷡ◌̀◌̕b; a◌֮◌ᷡ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN LETTER SMALL CAPITAL N, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DE2 0062;00E0 05AE 1DE2 0315 0062;0061 05AE 0300 1DE2 0315 0062;00E0 05AE 1DE2 0315 0062;0061 05AE 0300 1DE2 0315 0062; # (a◌̕◌̀◌֮◌ᷢb; à◌֮◌ᷢ◌̕b; a◌֮◌̀◌ᷢ◌̕b; à◌֮◌ᷢ◌̕b; a◌֮◌̀◌ᷢ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN LETTER SMALL CAPITAL R, LATIN SMALL LETTER B
+0061 1DE2 0315 0300 05AE 0062;0061 05AE 1DE2 0300 0315 0062;0061 05AE 1DE2 0300 0315 0062;0061 05AE 1DE2 0300 0315 0062;0061 05AE 1DE2 0300 0315 0062; # (a◌ᷢ◌̕◌̀◌֮b; a◌֮◌ᷢ◌̀◌̕b; a◌֮◌ᷢ◌̀◌̕b; a◌֮◌ᷢ◌̀◌̕b; a◌֮◌ᷢ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN LETTER SMALL CAPITAL R, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DE3 0062;00E0 05AE 1DE3 0315 0062;0061 05AE 0300 1DE3 0315 0062;00E0 05AE 1DE3 0315 0062;0061 05AE 0300 1DE3 0315 0062; # (a◌̕◌̀◌֮◌ᷣb; à◌֮◌ᷣ◌̕b; a◌֮◌̀◌ᷣ◌̕b; à◌֮◌ᷣ◌̕b; a◌֮◌̀◌ᷣ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER R ROTUNDA, LATIN SMALL LETTER B
+0061 1DE3 0315 0300 05AE 0062;0061 05AE 1DE3 0300 0315 0062;0061 05AE 1DE3 0300 0315 0062;0061 05AE 1DE3 0300 0315 0062;0061 05AE 1DE3 0300 0315 0062; # (a◌ᷣ◌̕◌̀◌֮b; a◌֮◌ᷣ◌̀◌̕b; a◌֮◌ᷣ◌̀◌̕b; a◌֮◌ᷣ◌̀◌̕b; a◌֮◌ᷣ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER R ROTUNDA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DE4 0062;00E0 05AE 1DE4 0315 0062;0061 05AE 0300 1DE4 0315 0062;00E0 05AE 1DE4 0315 0062;0061 05AE 0300 1DE4 0315 0062; # (a◌̕◌̀◌֮◌ᷤb; à◌֮◌ᷤ◌̕b; a◌֮◌̀◌ᷤ◌̕b; à◌֮◌ᷤ◌̕b; a◌֮◌̀◌ᷤ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER S, LATIN SMALL LETTER B
+0061 1DE4 0315 0300 05AE 0062;0061 05AE 1DE4 0300 0315 0062;0061 05AE 1DE4 0300 0315 0062;0061 05AE 1DE4 0300 0315 0062;0061 05AE 1DE4 0300 0315 0062; # (a◌ᷤ◌̕◌̀◌֮b; a◌֮◌ᷤ◌̀◌̕b; a◌֮◌ᷤ◌̀◌̕b; a◌֮◌ᷤ◌̀◌̕b; a◌֮◌ᷤ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER S, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DE5 0062;00E0 05AE 1DE5 0315 0062;0061 05AE 0300 1DE5 0315 0062;00E0 05AE 1DE5 0315 0062;0061 05AE 0300 1DE5 0315 0062; # (a◌̕◌̀◌֮◌ᷥb; à◌֮◌ᷥ◌̕b; a◌֮◌̀◌ᷥ◌̕b; à◌֮◌ᷥ◌̕b; a◌֮◌̀◌ᷥ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER LONG S, LATIN SMALL LETTER B
+0061 1DE5 0315 0300 05AE 0062;0061 05AE 1DE5 0300 0315 0062;0061 05AE 1DE5 0300 0315 0062;0061 05AE 1DE5 0300 0315 0062;0061 05AE 1DE5 0300 0315 0062; # (a◌ᷥ◌̕◌̀◌֮b; a◌֮◌ᷥ◌̀◌̕b; a◌֮◌ᷥ◌̀◌̕b; a◌֮◌ᷥ◌̀◌̕b; a◌֮◌ᷥ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER LONG S, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DE6 0062;00E0 05AE 1DE6 0315 0062;0061 05AE 0300 1DE6 0315 0062;00E0 05AE 1DE6 0315 0062;0061 05AE 0300 1DE6 0315 0062; # (a◌̕◌̀◌֮◌ᷦb; à◌֮◌ᷦ◌̕b; a◌֮◌̀◌ᷦ◌̕b; à◌֮◌ᷦ◌̕b; a◌֮◌̀◌ᷦ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER Z, LATIN SMALL LETTER B
+0061 1DE6 0315 0300 05AE 0062;0061 05AE 1DE6 0300 0315 0062;0061 05AE 1DE6 0300 0315 0062;0061 05AE 1DE6 0300 0315 0062;0061 05AE 1DE6 0300 0315 0062; # (a◌ᷦ◌̕◌̀◌֮b; a◌֮◌ᷦ◌̀◌̕b; a◌֮◌ᷦ◌̀◌̕b; a◌֮◌ᷦ◌̀◌̕b; a◌֮◌ᷦ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER Z, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DE7 0062;00E0 05AE 1DE7 0315 0062;0061 05AE 0300 1DE7 0315 0062;00E0 05AE 1DE7 0315 0062;0061 05AE 0300 1DE7 0315 0062; # (a◌̕◌̀◌֮◌ᷧb; à◌֮◌ᷧ◌̕b; a◌֮◌̀◌ᷧ◌̕b; à◌֮◌ᷧ◌̕b; a◌֮◌̀◌ᷧ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER ALPHA, LATIN SMALL LETTER B
+0061 1DE7 0315 0300 05AE 0062;0061 05AE 1DE7 0300 0315 0062;0061 05AE 1DE7 0300 0315 0062;0061 05AE 1DE7 0300 0315 0062;0061 05AE 1DE7 0300 0315 0062; # (a◌ᷧ◌̕◌̀◌֮b; a◌֮◌ᷧ◌̀◌̕b; a◌֮◌ᷧ◌̀◌̕b; a◌֮◌ᷧ◌̀◌̕b; a◌֮◌ᷧ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER ALPHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DE8 0062;00E0 05AE 1DE8 0315 0062;0061 05AE 0300 1DE8 0315 0062;00E0 05AE 1DE8 0315 0062;0061 05AE 0300 1DE8 0315 0062; # (a◌̕◌̀◌֮◌ᷨb; à◌֮◌ᷨ◌̕b; a◌֮◌̀◌ᷨ◌̕b; à◌֮◌ᷨ◌̕b; a◌֮◌̀◌ᷨ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER B, LATIN SMALL LETTER B
+0061 1DE8 0315 0300 05AE 0062;0061 05AE 1DE8 0300 0315 0062;0061 05AE 1DE8 0300 0315 0062;0061 05AE 1DE8 0300 0315 0062;0061 05AE 1DE8 0300 0315 0062; # (a◌ᷨ◌̕◌̀◌֮b; a◌֮◌ᷨ◌̀◌̕b; a◌֮◌ᷨ◌̀◌̕b; a◌֮◌ᷨ◌̀◌̕b; a◌֮◌ᷨ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER B, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DE9 0062;00E0 05AE 1DE9 0315 0062;0061 05AE 0300 1DE9 0315 0062;00E0 05AE 1DE9 0315 0062;0061 05AE 0300 1DE9 0315 0062; # (a◌̕◌̀◌֮◌ᷩb; à◌֮◌ᷩ◌̕b; a◌֮◌̀◌ᷩ◌̕b; à◌֮◌ᷩ◌̕b; a◌֮◌̀◌ᷩ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER BETA, LATIN SMALL LETTER B
+0061 1DE9 0315 0300 05AE 0062;0061 05AE 1DE9 0300 0315 0062;0061 05AE 1DE9 0300 0315 0062;0061 05AE 1DE9 0300 0315 0062;0061 05AE 1DE9 0300 0315 0062; # (a◌ᷩ◌̕◌̀◌֮b; a◌֮◌ᷩ◌̀◌̕b; a◌֮◌ᷩ◌̀◌̕b; a◌֮◌ᷩ◌̀◌̕b; a◌֮◌ᷩ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER BETA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DEA 0062;00E0 05AE 1DEA 0315 0062;0061 05AE 0300 1DEA 0315 0062;00E0 05AE 1DEA 0315 0062;0061 05AE 0300 1DEA 0315 0062; # (a◌̕◌̀◌֮◌ᷪb; à◌֮◌ᷪ◌̕b; a◌֮◌̀◌ᷪ◌̕b; à◌֮◌ᷪ◌̕b; a◌֮◌̀◌ᷪ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER SCHWA, LATIN SMALL LETTER B
+0061 1DEA 0315 0300 05AE 0062;0061 05AE 1DEA 0300 0315 0062;0061 05AE 1DEA 0300 0315 0062;0061 05AE 1DEA 0300 0315 0062;0061 05AE 1DEA 0300 0315 0062; # (a◌ᷪ◌̕◌̀◌֮b; a◌֮◌ᷪ◌̀◌̕b; a◌֮◌ᷪ◌̀◌̕b; a◌֮◌ᷪ◌̀◌̕b; a◌֮◌ᷪ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER SCHWA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DEB 0062;00E0 05AE 1DEB 0315 0062;0061 05AE 0300 1DEB 0315 0062;00E0 05AE 1DEB 0315 0062;0061 05AE 0300 1DEB 0315 0062; # (a◌̕◌̀◌֮◌ᷫb; à◌֮◌ᷫ◌̕b; a◌֮◌̀◌ᷫ◌̕b; à◌֮◌ᷫ◌̕b; a◌֮◌̀◌ᷫ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER F, LATIN SMALL LETTER B
+0061 1DEB 0315 0300 05AE 0062;0061 05AE 1DEB 0300 0315 0062;0061 05AE 1DEB 0300 0315 0062;0061 05AE 1DEB 0300 0315 0062;0061 05AE 1DEB 0300 0315 0062; # (a◌ᷫ◌̕◌̀◌֮b; a◌֮◌ᷫ◌̀◌̕b; a◌֮◌ᷫ◌̀◌̕b; a◌֮◌ᷫ◌̀◌̕b; a◌֮◌ᷫ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER F, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DEC 0062;00E0 05AE 1DEC 0315 0062;0061 05AE 0300 1DEC 0315 0062;00E0 05AE 1DEC 0315 0062;0061 05AE 0300 1DEC 0315 0062; # (a◌̕◌̀◌֮◌ᷬb; à◌֮◌ᷬ◌̕b; a◌֮◌̀◌ᷬ◌̕b; à◌֮◌ᷬ◌̕b; a◌֮◌̀◌ᷬ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE, LATIN SMALL LETTER B
+0061 1DEC 0315 0300 05AE 0062;0061 05AE 1DEC 0300 0315 0062;0061 05AE 1DEC 0300 0315 0062;0061 05AE 1DEC 0300 0315 0062;0061 05AE 1DEC 0300 0315 0062; # (a◌ᷬ◌̕◌̀◌֮b; a◌֮◌ᷬ◌̀◌̕b; a◌֮◌ᷬ◌̀◌̕b; a◌֮◌ᷬ◌̀◌̕b; a◌֮◌ᷬ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DED 0062;00E0 05AE 1DED 0315 0062;0061 05AE 0300 1DED 0315 0062;00E0 05AE 1DED 0315 0062;0061 05AE 0300 1DED 0315 0062; # (a◌̕◌̀◌֮◌ᷭb; à◌֮◌ᷭ◌̕b; a◌֮◌̀◌ᷭ◌̕b; à◌֮◌ᷭ◌̕b; a◌֮◌̀◌ᷭ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE, LATIN SMALL LETTER B
+0061 1DED 0315 0300 05AE 0062;0061 05AE 1DED 0300 0315 0062;0061 05AE 1DED 0300 0315 0062;0061 05AE 1DED 0300 0315 0062;0061 05AE 1DED 0300 0315 0062; # (a◌ᷭ◌̕◌̀◌֮b; a◌֮◌ᷭ◌̀◌̕b; a◌֮◌ᷭ◌̀◌̕b; a◌֮◌ᷭ◌̀◌̕b; a◌֮◌ᷭ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DEE 0062;00E0 05AE 1DEE 0315 0062;0061 05AE 0300 1DEE 0315 0062;00E0 05AE 1DEE 0315 0062;0061 05AE 0300 1DEE 0315 0062; # (a◌̕◌̀◌֮◌ᷮb; à◌֮◌ᷮ◌̕b; a◌֮◌̀◌ᷮ◌̕b; à◌֮◌ᷮ◌̕b; a◌֮◌̀◌ᷮ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER P, LATIN SMALL LETTER B
+0061 1DEE 0315 0300 05AE 0062;0061 05AE 1DEE 0300 0315 0062;0061 05AE 1DEE 0300 0315 0062;0061 05AE 1DEE 0300 0315 0062;0061 05AE 1DEE 0300 0315 0062; # (a◌ᷮ◌̕◌̀◌֮b; a◌֮◌ᷮ◌̀◌̕b; a◌֮◌ᷮ◌̀◌̕b; a◌֮◌ᷮ◌̀◌̕b; a◌֮◌ᷮ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER P, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DEF 0062;00E0 05AE 1DEF 0315 0062;0061 05AE 0300 1DEF 0315 0062;00E0 05AE 1DEF 0315 0062;0061 05AE 0300 1DEF 0315 0062; # (a◌̕◌̀◌֮◌ᷯb; à◌֮◌ᷯ◌̕b; a◌֮◌̀◌ᷯ◌̕b; à◌֮◌ᷯ◌̕b; a◌֮◌̀◌ᷯ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER ESH, LATIN SMALL LETTER B
+0061 1DEF 0315 0300 05AE 0062;0061 05AE 1DEF 0300 0315 0062;0061 05AE 1DEF 0300 0315 0062;0061 05AE 1DEF 0300 0315 0062;0061 05AE 1DEF 0300 0315 0062; # (a◌ᷯ◌̕◌̀◌֮b; a◌֮◌ᷯ◌̀◌̕b; a◌֮◌ᷯ◌̀◌̕b; a◌֮◌ᷯ◌̀◌̕b; a◌֮◌ᷯ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER ESH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DF0 0062;00E0 05AE 1DF0 0315 0062;0061 05AE 0300 1DF0 0315 0062;00E0 05AE 1DF0 0315 0062;0061 05AE 0300 1DF0 0315 0062; # (a◌̕◌̀◌֮◌ᷰb; à◌֮◌ᷰ◌̕b; a◌֮◌̀◌ᷰ◌̕b; à◌֮◌ᷰ◌̕b; a◌֮◌̀◌ᷰ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE, LATIN SMALL LETTER B
+0061 1DF0 0315 0300 05AE 0062;0061 05AE 1DF0 0300 0315 0062;0061 05AE 1DF0 0300 0315 0062;0061 05AE 1DF0 0300 0315 0062;0061 05AE 1DF0 0300 0315 0062; # (a◌ᷰ◌̕◌̀◌֮b; a◌֮◌ᷰ◌̀◌̕b; a◌֮◌ᷰ◌̀◌̕b; a◌֮◌ᷰ◌̀◌̕b; a◌֮◌ᷰ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DF1 0062;00E0 05AE 1DF1 0315 0062;0061 05AE 0300 1DF1 0315 0062;00E0 05AE 1DF1 0315 0062;0061 05AE 0300 1DF1 0315 0062; # (a◌̕◌̀◌֮◌ᷱb; à◌֮◌ᷱ◌̕b; a◌֮◌̀◌ᷱ◌̕b; à◌֮◌ᷱ◌̕b; a◌֮◌̀◌ᷱ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER W, LATIN SMALL LETTER B
+0061 1DF1 0315 0300 05AE 0062;0061 05AE 1DF1 0300 0315 0062;0061 05AE 1DF1 0300 0315 0062;0061 05AE 1DF1 0300 0315 0062;0061 05AE 1DF1 0300 0315 0062; # (a◌ᷱ◌̕◌̀◌֮b; a◌֮◌ᷱ◌̀◌̕b; a◌֮◌ᷱ◌̀◌̕b; a◌֮◌ᷱ◌̀◌̕b; a◌֮◌ᷱ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER W, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DF2 0062;00E0 05AE 1DF2 0315 0062;0061 05AE 0300 1DF2 0315 0062;00E0 05AE 1DF2 0315 0062;0061 05AE 0300 1DF2 0315 0062; # (a◌̕◌̀◌֮◌ᷲb; à◌֮◌ᷲ◌̕b; a◌֮◌̀◌ᷲ◌̕b; à◌֮◌ᷲ◌̕b; a◌֮◌̀◌ᷲ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER A WITH DIAERESIS, LATIN SMALL LETTER B
+0061 1DF2 0315 0300 05AE 0062;0061 05AE 1DF2 0300 0315 0062;0061 05AE 1DF2 0300 0315 0062;0061 05AE 1DF2 0300 0315 0062;0061 05AE 1DF2 0300 0315 0062; # (a◌ᷲ◌̕◌̀◌֮b; a◌֮◌ᷲ◌̀◌̕b; a◌֮◌ᷲ◌̀◌̕b; a◌֮◌ᷲ◌̀◌̕b; a◌֮◌ᷲ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER A WITH DIAERESIS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DF3 0062;00E0 05AE 1DF3 0315 0062;0061 05AE 0300 1DF3 0315 0062;00E0 05AE 1DF3 0315 0062;0061 05AE 0300 1DF3 0315 0062; # (a◌̕◌̀◌֮◌ᷳb; à◌֮◌ᷳ◌̕b; a◌֮◌̀◌ᷳ◌̕b; à◌֮◌ᷳ◌̕b; a◌֮◌̀◌ᷳ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER O WITH DIAERESIS, LATIN SMALL LETTER B
+0061 1DF3 0315 0300 05AE 0062;0061 05AE 1DF3 0300 0315 0062;0061 05AE 1DF3 0300 0315 0062;0061 05AE 1DF3 0300 0315 0062;0061 05AE 1DF3 0300 0315 0062; # (a◌ᷳ◌̕◌̀◌֮b; a◌֮◌ᷳ◌̀◌̕b; a◌֮◌ᷳ◌̀◌̕b; a◌֮◌ᷳ◌̀◌̕b; a◌֮◌ᷳ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER O WITH DIAERESIS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DF4 0062;00E0 05AE 1DF4 0315 0062;0061 05AE 0300 1DF4 0315 0062;00E0 05AE 1DF4 0315 0062;0061 05AE 0300 1DF4 0315 0062; # (a◌̕◌̀◌֮◌ᷴb; à◌֮◌ᷴ◌̕b; a◌֮◌̀◌ᷴ◌̕b; à◌֮◌ᷴ◌̕b; a◌֮◌̀◌ᷴ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER U WITH DIAERESIS, LATIN SMALL LETTER B
+0061 1DF4 0315 0300 05AE 0062;0061 05AE 1DF4 0300 0315 0062;0061 05AE 1DF4 0300 0315 0062;0061 05AE 1DF4 0300 0315 0062;0061 05AE 1DF4 0300 0315 0062; # (a◌ᷴ◌̕◌̀◌֮b; a◌֮◌ᷴ◌̀◌̕b; a◌֮◌ᷴ◌̀◌̕b; a◌֮◌ᷴ◌̀◌̕b; a◌֮◌ᷴ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER U WITH DIAERESIS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DF5 0062;00E0 05AE 1DF5 0315 0062;0061 05AE 0300 1DF5 0315 0062;00E0 05AE 1DF5 0315 0062;0061 05AE 0300 1DF5 0315 0062; # (a◌̕◌̀◌֮◌᷵b; à◌֮◌᷵◌̕b; a◌֮◌̀◌᷵◌̕b; à◌֮◌᷵◌̕b; a◌֮◌̀◌᷵◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING UP TACK ABOVE, LATIN SMALL LETTER B
+0061 1DF5 0315 0300 05AE 0062;0061 05AE 1DF5 0300 0315 0062;0061 05AE 1DF5 0300 0315 0062;0061 05AE 1DF5 0300 0315 0062;0061 05AE 1DF5 0300 0315 0062; # (a◌᷵◌̕◌̀◌֮b; a◌֮◌᷵◌̀◌̕b; a◌֮◌᷵◌̀◌̕b; a◌֮◌᷵◌̀◌̕b; a◌֮◌᷵◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING UP TACK ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DFB 0062;00E0 05AE 1DFB 0315 0062;0061 05AE 0300 1DFB 0315 0062;00E0 05AE 1DFB 0315 0062;0061 05AE 0300 1DFB 0315 0062; # (a◌̕◌̀◌֮◌᷻b; à◌֮◌᷻◌̕b; a◌֮◌̀◌᷻◌̕b; à◌֮◌᷻◌̕b; a◌֮◌̀◌᷻◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DELETION MARK, LATIN SMALL LETTER B
+0061 1DFB 0315 0300 05AE 0062;0061 05AE 1DFB 0300 0315 0062;0061 05AE 1DFB 0300 0315 0062;0061 05AE 1DFB 0300 0315 0062;0061 05AE 1DFB 0300 0315 0062; # (a◌᷻◌̕◌̀◌֮b; a◌֮◌᷻◌̀◌̕b; a◌֮◌᷻◌̀◌̕b; a◌֮◌᷻◌̀◌̕b; a◌֮◌᷻◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DELETION MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 035D 035C 0315 1DFC 0062;0061 0315 035C 1DFC 035D 0062;0061 0315 035C 1DFC 035D 0062;0061 0315 035C 1DFC 035D 0062;0061 0315 035C 1DFC 035D 0062; # (aâ—ŒÍ◌͜◌̕◌᷼b; a◌̕◌͜◌᷼◌Íb; a◌̕◌͜◌᷼◌Íb; a◌̕◌͜◌᷼◌Íb; a◌̕◌͜◌᷼◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING DOUBLE INVERTED BREVE BELOW, LATIN SMALL LETTER B
+0061 1DFC 035D 035C 0315 0062;0061 0315 1DFC 035C 035D 0062;0061 0315 1DFC 035C 035D 0062;0061 0315 1DFC 035C 035D 0062;0061 0315 1DFC 035C 035D 0062; # (a◌᷼◌Í◌͜◌̕b; a◌̕◌᷼◌͜◌Íb; a◌̕◌᷼◌͜◌Íb; a◌̕◌᷼◌͜◌Íb; a◌̕◌᷼◌͜◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE INVERTED BREVE BELOW, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, LATIN SMALL LETTER B
+0061 059A 0316 302A 1DFD 0062;0061 302A 0316 1DFD 059A 0062;0061 302A 0316 1DFD 059A 0062;0061 302A 0316 1DFD 059A 0062;0061 302A 0316 1DFD 059A 0062; # (a◌֚◌̖◌〪◌᷽b; a◌〪◌̖◌᷽◌֚b; a◌〪◌̖◌᷽◌֚b; a◌〪◌̖◌᷽◌֚b; a◌〪◌̖◌᷽◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING ALMOST EQUAL TO BELOW, LATIN SMALL LETTER B
+0061 1DFD 059A 0316 302A 0062;0061 302A 1DFD 0316 059A 0062;0061 302A 1DFD 0316 059A 0062;0061 302A 1DFD 0316 059A 0062;0061 302A 1DFD 0316 059A 0062; # (a◌᷽◌֚◌̖◌〪b; a◌〪◌᷽◌̖◌֚b; a◌〪◌᷽◌̖◌֚b; a◌〪◌᷽◌̖◌֚b; a◌〪◌᷽◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING ALMOST EQUAL TO BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DFE 0062;00E0 05AE 1DFE 0315 0062;0061 05AE 0300 1DFE 0315 0062;00E0 05AE 1DFE 0315 0062;0061 05AE 0300 1DFE 0315 0062; # (a◌̕◌̀◌֮◌᷾b; à◌֮◌᷾◌̕b; a◌֮◌̀◌᷾◌̕b; à◌֮◌᷾◌̕b; a◌֮◌̀◌᷾◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LEFT ARROWHEAD ABOVE, LATIN SMALL LETTER B
+0061 1DFE 0315 0300 05AE 0062;0061 05AE 1DFE 0300 0315 0062;0061 05AE 1DFE 0300 0315 0062;0061 05AE 1DFE 0300 0315 0062;0061 05AE 1DFE 0300 0315 0062; # (a◌᷾◌̕◌̀◌֮b; a◌֮◌᷾◌̀◌̕b; a◌֮◌᷾◌̀◌̕b; a◌֮◌᷾◌̀◌̕b; a◌֮◌᷾◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LEFT ARROWHEAD ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1DFF 0062;0061 302A 0316 1DFF 059A 0062;0061 302A 0316 1DFF 059A 0062;0061 302A 0316 1DFF 059A 0062;0061 302A 0316 1DFF 059A 0062; # (a◌֚◌̖◌〪◌᷿b; a◌〪◌̖◌᷿◌֚b; a◌〪◌̖◌᷿◌֚b; a◌〪◌̖◌᷿◌֚b; a◌〪◌̖◌᷿◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW, LATIN SMALL LETTER B
+0061 1DFF 059A 0316 302A 0062;0061 302A 1DFF 0316 059A 0062;0061 302A 1DFF 0316 059A 0062;0061 302A 1DFF 0316 059A 0062;0061 302A 1DFF 0316 059A 0062; # (a◌᷿◌֚◌̖◌〪b; a◌〪◌᷿◌̖◌֚b; a◌〪◌᷿◌̖◌֚b; a◌〪◌᷿◌̖◌֚b; a◌〪◌᷿◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D0 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062; # (a◌̕◌̀◌֮◌âƒb; à◌֮◌âƒâ—ŒÌ•b; a◌֮◌̀◌âƒâ—ŒÌ•b; à◌֮◌âƒâ—ŒÌ•b; a◌֮◌̀◌âƒâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LEFT HARPOON ABOVE, LATIN SMALL LETTER B
+0061 20D0 0315 0300 05AE 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062; # (aâ—Œâƒâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌âƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌âƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌âƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌âƒâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING LEFT HARPOON ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D1 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062; # (a◌̕◌̀◌֮◌⃑b; à◌֮◌⃑◌̕b; a◌֮◌̀◌⃑◌̕b; à◌֮◌⃑◌̕b; a◌֮◌̀◌⃑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING RIGHT HARPOON ABOVE, LATIN SMALL LETTER B
+0061 20D1 0315 0300 05AE 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062; # (a◌⃑◌̕◌̀◌֮b; a◌֮◌⃑◌̀◌̕b; a◌֮◌⃑◌̀◌̕b; a◌֮◌⃑◌̀◌̕b; a◌֮◌⃑◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING RIGHT HARPOON ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 20D2 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062; # (a◌़◌̴◌⃒b; a◌̴◌⃒◌़b; a◌̴◌⃒◌़b; a◌̴◌⃒◌़b; a◌̴◌⃒◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING LONG VERTICAL LINE OVERLAY, LATIN SMALL LETTER B
+0061 20D2 093C 0334 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062; # (a◌⃒◌़◌̴b; a◌⃒◌̴◌़b; a◌⃒◌̴◌़b; a◌⃒◌̴◌़b; a◌⃒◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING LONG VERTICAL LINE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 20D3 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062; # (a◌़◌̴◌⃓b; a◌̴◌⃓◌़b; a◌̴◌⃓◌़b; a◌̴◌⃓◌़b; a◌̴◌⃓◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING SHORT VERTICAL LINE OVERLAY, LATIN SMALL LETTER B
+0061 20D3 093C 0334 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062; # (a◌⃓◌़◌̴b; a◌⃓◌̴◌़b; a◌⃓◌̴◌़b; a◌⃓◌̴◌़b; a◌⃓◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING SHORT VERTICAL LINE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D4 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062; # (a◌̕◌̀◌֮◌⃔b; à◌֮◌⃔◌̕b; a◌֮◌̀◌⃔◌̕b; à◌֮◌⃔◌̕b; a◌֮◌̀◌⃔◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ANTICLOCKWISE ARROW ABOVE, LATIN SMALL LETTER B
+0061 20D4 0315 0300 05AE 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062; # (a◌⃔◌̕◌̀◌֮b; a◌֮◌⃔◌̀◌̕b; a◌֮◌⃔◌̀◌̕b; a◌֮◌⃔◌̀◌̕b; a◌֮◌⃔◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ANTICLOCKWISE ARROW ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D5 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062; # (a◌̕◌̀◌֮◌⃕b; à◌֮◌⃕◌̕b; a◌֮◌̀◌⃕◌̕b; à◌֮◌⃕◌̕b; a◌֮◌̀◌⃕◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CLOCKWISE ARROW ABOVE, LATIN SMALL LETTER B
+0061 20D5 0315 0300 05AE 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062; # (a◌⃕◌̕◌̀◌֮b; a◌֮◌⃕◌̀◌̕b; a◌֮◌⃕◌̀◌̕b; a◌֮◌⃕◌̀◌̕b; a◌֮◌⃕◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CLOCKWISE ARROW ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D6 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062; # (a◌̕◌̀◌֮◌⃖b; à◌֮◌⃖◌̕b; a◌֮◌̀◌⃖◌̕b; à◌֮◌⃖◌̕b; a◌֮◌̀◌⃖◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LEFT ARROW ABOVE, LATIN SMALL LETTER B
+0061 20D6 0315 0300 05AE 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062; # (a◌⃖◌̕◌̀◌֮b; a◌֮◌⃖◌̀◌̕b; a◌֮◌⃖◌̀◌̕b; a◌֮◌⃖◌̀◌̕b; a◌֮◌⃖◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LEFT ARROW ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D7 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062; # (a◌̕◌̀◌֮◌⃗b; à◌֮◌⃗◌̕b; a◌֮◌̀◌⃗◌̕b; à◌֮◌⃗◌̕b; a◌֮◌̀◌⃗◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING RIGHT ARROW ABOVE, LATIN SMALL LETTER B
+0061 20D7 0315 0300 05AE 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062; # (a◌⃗◌̕◌̀◌֮b; a◌֮◌⃗◌̀◌̕b; a◌֮◌⃗◌̀◌̕b; a◌֮◌⃗◌̀◌̕b; a◌֮◌⃗◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROW ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 20D8 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062; # (a◌़◌̴◌⃘b; a◌̴◌⃘◌़b; a◌̴◌⃘◌़b; a◌̴◌⃘◌़b; a◌̴◌⃘◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING RING OVERLAY, LATIN SMALL LETTER B
+0061 20D8 093C 0334 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062; # (a◌⃘◌़◌̴b; a◌⃘◌̴◌़b; a◌⃘◌̴◌़b; a◌⃘◌̴◌़b; a◌⃘◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING RING OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 20D9 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062; # (a◌़◌̴◌⃙b; a◌̴◌⃙◌़b; a◌̴◌⃙◌़b; a◌̴◌⃙◌़b; a◌̴◌⃙◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING CLOCKWISE RING OVERLAY, LATIN SMALL LETTER B
+0061 20D9 093C 0334 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062; # (a◌⃙◌़◌̴b; a◌⃙◌̴◌़b; a◌⃙◌̴◌़b; a◌⃙◌̴◌़b; a◌⃙◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING CLOCKWISE RING OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 20DA 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062; # (a◌़◌̴◌⃚b; a◌̴◌⃚◌़b; a◌̴◌⃚◌़b; a◌̴◌⃚◌़b; a◌̴◌⃚◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING ANTICLOCKWISE RING OVERLAY, LATIN SMALL LETTER B
+0061 20DA 093C 0334 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062; # (a◌⃚◌़◌̴b; a◌⃚◌̴◌़b; a◌⃚◌̴◌़b; a◌⃚◌̴◌़b; a◌⃚◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING ANTICLOCKWISE RING OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20DB 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062; # (a◌̕◌̀◌֮◌⃛b; à◌֮◌⃛◌̕b; a◌֮◌̀◌⃛◌̕b; à◌֮◌⃛◌̕b; a◌֮◌̀◌⃛◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING THREE DOTS ABOVE, LATIN SMALL LETTER B
+0061 20DB 0315 0300 05AE 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062; # (a◌⃛◌̕◌̀◌֮b; a◌֮◌⃛◌̀◌̕b; a◌֮◌⃛◌̀◌̕b; a◌֮◌⃛◌̀◌̕b; a◌֮◌⃛◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING THREE DOTS ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20DC 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062; # (a◌̕◌̀◌֮◌⃜b; à◌֮◌⃜◌̕b; a◌֮◌̀◌⃜◌̕b; à◌֮◌⃜◌̕b; a◌֮◌̀◌⃜◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING FOUR DOTS ABOVE, LATIN SMALL LETTER B
+0061 20DC 0315 0300 05AE 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062; # (a◌⃜◌̕◌̀◌֮b; a◌֮◌⃜◌̀◌̕b; a◌֮◌⃜◌̀◌̕b; a◌֮◌⃜◌̀◌̕b; a◌֮◌⃜◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING FOUR DOTS ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20E1 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062; # (a◌̕◌̀◌֮◌⃡b; à◌֮◌⃡◌̕b; a◌֮◌̀◌⃡◌̕b; à◌֮◌⃡◌̕b; a◌֮◌̀◌⃡◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LEFT RIGHT ARROW ABOVE, LATIN SMALL LETTER B
+0061 20E1 0315 0300 05AE 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062; # (a◌⃡◌̕◌̀◌֮b; a◌֮◌⃡◌̀◌̕b; a◌֮◌⃡◌̀◌̕b; a◌֮◌⃡◌̀◌̕b; a◌֮◌⃡◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LEFT RIGHT ARROW ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 20E5 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062; # (a◌़◌̴◌⃥b; a◌̴◌⃥◌़b; a◌̴◌⃥◌़b; a◌̴◌⃥◌़b; a◌̴◌⃥◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING REVERSE SOLIDUS OVERLAY, LATIN SMALL LETTER B
+0061 20E5 093C 0334 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062; # (a◌⃥◌़◌̴b; a◌⃥◌̴◌़b; a◌⃥◌̴◌़b; a◌⃥◌̴◌़b; a◌⃥◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING REVERSE SOLIDUS OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 20E6 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062; # (a◌़◌̴◌⃦b; a◌̴◌⃦◌़b; a◌̴◌⃦◌़b; a◌̴◌⃦◌़b; a◌̴◌⃦◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING DOUBLE VERTICAL STROKE OVERLAY, LATIN SMALL LETTER B
+0061 20E6 093C 0334 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062; # (a◌⃦◌़◌̴b; a◌⃦◌̴◌़b; a◌⃦◌̴◌़b; a◌⃦◌̴◌़b; a◌⃦◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING DOUBLE VERTICAL STROKE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20E7 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062; # (a◌̕◌̀◌֮◌⃧b; à◌֮◌⃧◌̕b; a◌֮◌̀◌⃧◌̕b; à◌֮◌⃧◌̕b; a◌֮◌̀◌⃧◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ANNUITY SYMBOL, LATIN SMALL LETTER B
+0061 20E7 0315 0300 05AE 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062; # (a◌⃧◌̕◌̀◌֮b; a◌֮◌⃧◌̀◌̕b; a◌֮◌⃧◌̀◌̕b; a◌֮◌⃧◌̀◌̕b; a◌֮◌⃧◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ANNUITY SYMBOL, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 20E8 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062; # (a◌֚◌̖◌〪◌⃨b; a◌〪◌̖◌⃨◌֚b; a◌〪◌̖◌⃨◌֚b; a◌〪◌̖◌⃨◌֚b; a◌〪◌̖◌⃨◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING TRIPLE UNDERDOT, LATIN SMALL LETTER B
+0061 20E8 059A 0316 302A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062; # (a◌⃨◌֚◌̖◌〪b; a◌〪◌⃨◌̖◌֚b; a◌〪◌⃨◌̖◌֚b; a◌〪◌⃨◌̖◌֚b; a◌〪◌⃨◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING TRIPLE UNDERDOT, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20E9 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062; # (a◌̕◌̀◌֮◌⃩b; à◌֮◌⃩◌̕b; a◌֮◌̀◌⃩◌̕b; à◌֮◌⃩◌̕b; a◌֮◌̀◌⃩◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING WIDE BRIDGE ABOVE, LATIN SMALL LETTER B
+0061 20E9 0315 0300 05AE 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062; # (a◌⃩◌̕◌̀◌֮b; a◌֮◌⃩◌̀◌̕b; a◌֮◌⃩◌̀◌̕b; a◌֮◌⃩◌̀◌̕b; a◌֮◌⃩◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING WIDE BRIDGE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 20EA 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062; # (a◌़◌̴◌⃪b; a◌̴◌⃪◌़b; a◌̴◌⃪◌़b; a◌̴◌⃪◌़b; a◌̴◌⃪◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING LEFTWARDS ARROW OVERLAY, LATIN SMALL LETTER B
+0061 20EA 093C 0334 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062; # (a◌⃪◌़◌̴b; a◌⃪◌̴◌़b; a◌⃪◌̴◌़b; a◌⃪◌̴◌़b; a◌⃪◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING LEFTWARDS ARROW OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 20EB 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062; # (a◌़◌̴◌⃫b; a◌̴◌⃫◌़b; a◌̴◌⃫◌़b; a◌̴◌⃫◌़b; a◌̴◌⃫◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING LONG DOUBLE SOLIDUS OVERLAY, LATIN SMALL LETTER B
+0061 20EB 093C 0334 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062; # (a◌⃫◌़◌̴b; a◌⃫◌̴◌़b; a◌⃫◌̴◌़b; a◌⃫◌̴◌़b; a◌⃫◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING LONG DOUBLE SOLIDUS OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 059A 0316 302A 20EC 0062;0061 302A 0316 20EC 059A 0062;0061 302A 0316 20EC 059A 0062;0061 302A 0316 20EC 059A 0062;0061 302A 0316 20EC 059A 0062; # (a◌֚◌̖◌〪◌⃬b; a◌〪◌̖◌⃬◌֚b; a◌〪◌̖◌⃬◌֚b; a◌〪◌̖◌⃬◌֚b; a◌〪◌̖◌⃬◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS, LATIN SMALL LETTER B
+0061 20EC 059A 0316 302A 0062;0061 302A 20EC 0316 059A 0062;0061 302A 20EC 0316 059A 0062;0061 302A 20EC 0316 059A 0062;0061 302A 20EC 0316 059A 0062; # (a◌⃬◌֚◌̖◌〪b; a◌〪◌⃬◌̖◌֚b; a◌〪◌⃬◌̖◌֚b; a◌〪◌⃬◌̖◌֚b; a◌〪◌⃬◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 20ED 0062;0061 302A 0316 20ED 059A 0062;0061 302A 0316 20ED 059A 0062;0061 302A 0316 20ED 059A 0062;0061 302A 0316 20ED 059A 0062; # (a◌֚◌̖◌〪◌⃭b; a◌〪◌̖◌⃭◌֚b; a◌〪◌̖◌⃭◌֚b; a◌〪◌̖◌⃭◌֚b; a◌〪◌̖◌⃭◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS, LATIN SMALL LETTER B
+0061 20ED 059A 0316 302A 0062;0061 302A 20ED 0316 059A 0062;0061 302A 20ED 0316 059A 0062;0061 302A 20ED 0316 059A 0062;0061 302A 20ED 0316 059A 0062; # (a◌⃭◌֚◌̖◌〪b; a◌〪◌⃭◌̖◌֚b; a◌〪◌⃭◌̖◌֚b; a◌〪◌⃭◌̖◌֚b; a◌〪◌⃭◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 20EE 0062;0061 302A 0316 20EE 059A 0062;0061 302A 0316 20EE 059A 0062;0061 302A 0316 20EE 059A 0062;0061 302A 0316 20EE 059A 0062; # (a◌֚◌̖◌〪◌⃮b; a◌〪◌̖◌⃮◌֚b; a◌〪◌̖◌⃮◌֚b; a◌〪◌̖◌⃮◌֚b; a◌〪◌̖◌⃮◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT ARROW BELOW, LATIN SMALL LETTER B
+0061 20EE 059A 0316 302A 0062;0061 302A 20EE 0316 059A 0062;0061 302A 20EE 0316 059A 0062;0061 302A 20EE 0316 059A 0062;0061 302A 20EE 0316 059A 0062; # (a◌⃮◌֚◌̖◌〪b; a◌〪◌⃮◌̖◌֚b; a◌〪◌⃮◌̖◌֚b; a◌〪◌⃮◌̖◌֚b; a◌〪◌⃮◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT ARROW BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 20EF 0062;0061 302A 0316 20EF 059A 0062;0061 302A 0316 20EF 059A 0062;0061 302A 0316 20EF 059A 0062;0061 302A 0316 20EF 059A 0062; # (a◌֚◌̖◌〪◌⃯b; a◌〪◌̖◌⃯◌֚b; a◌〪◌̖◌⃯◌֚b; a◌〪◌̖◌⃯◌֚b; a◌〪◌̖◌⃯◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT ARROW BELOW, LATIN SMALL LETTER B
+0061 20EF 059A 0316 302A 0062;0061 302A 20EF 0316 059A 0062;0061 302A 20EF 0316 059A 0062;0061 302A 20EF 0316 059A 0062;0061 302A 20EF 0316 059A 0062; # (a◌⃯◌֚◌̖◌〪b; a◌〪◌⃯◌̖◌֚b; a◌〪◌⃯◌̖◌֚b; a◌〪◌⃯◌̖◌֚b; a◌〪◌⃯◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROW BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20F0 0062;00E0 05AE 20F0 0315 0062;0061 05AE 0300 20F0 0315 0062;00E0 05AE 20F0 0315 0062;0061 05AE 0300 20F0 0315 0062; # (a◌̕◌̀◌֮◌⃰b; à◌֮◌⃰◌̕b; a◌֮◌̀◌⃰◌̕b; à◌֮◌⃰◌̕b; a◌֮◌̀◌⃰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ASTERISK ABOVE, LATIN SMALL LETTER B
+0061 20F0 0315 0300 05AE 0062;0061 05AE 20F0 0300 0315 0062;0061 05AE 20F0 0300 0315 0062;0061 05AE 20F0 0300 0315 0062;0061 05AE 20F0 0300 0315 0062; # (a◌⃰◌̕◌̀◌֮b; a◌֮◌⃰◌̀◌̕b; a◌֮◌⃰◌̀◌̕b; a◌֮◌⃰◌̀◌̕b; a◌֮◌⃰◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ASTERISK ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2CEF 0062;00E0 05AE 2CEF 0315 0062;0061 05AE 0300 2CEF 0315 0062;00E0 05AE 2CEF 0315 0062;0061 05AE 0300 2CEF 0315 0062; # (a◌̕◌̀◌֮◌⳯b; à◌֮◌⳯◌̕b; a◌֮◌̀◌⳯◌̕b; à◌֮◌⳯◌̕b; a◌֮◌̀◌⳯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COPTIC COMBINING NI ABOVE, LATIN SMALL LETTER B
+0061 2CEF 0315 0300 05AE 0062;0061 05AE 2CEF 0300 0315 0062;0061 05AE 2CEF 0300 0315 0062;0061 05AE 2CEF 0300 0315 0062;0061 05AE 2CEF 0300 0315 0062; # (a◌⳯◌̕◌̀◌֮b; a◌֮◌⳯◌̀◌̕b; a◌֮◌⳯◌̀◌̕b; a◌֮◌⳯◌̀◌̕b; a◌֮◌⳯◌̀◌̕b; ) LATIN SMALL LETTER A, COPTIC COMBINING NI ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2CF0 0062;00E0 05AE 2CF0 0315 0062;0061 05AE 0300 2CF0 0315 0062;00E0 05AE 2CF0 0315 0062;0061 05AE 0300 2CF0 0315 0062; # (a◌̕◌̀◌֮◌⳰b; à◌֮◌⳰◌̕b; a◌֮◌̀◌⳰◌̕b; à◌֮◌⳰◌̕b; a◌֮◌̀◌⳰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COPTIC COMBINING SPIRITUS ASPER, LATIN SMALL LETTER B
+0061 2CF0 0315 0300 05AE 0062;0061 05AE 2CF0 0300 0315 0062;0061 05AE 2CF0 0300 0315 0062;0061 05AE 2CF0 0300 0315 0062;0061 05AE 2CF0 0300 0315 0062; # (a◌⳰◌̕◌̀◌֮b; a◌֮◌⳰◌̀◌̕b; a◌֮◌⳰◌̀◌̕b; a◌֮◌⳰◌̀◌̕b; a◌֮◌⳰◌̀◌̕b; ) LATIN SMALL LETTER A, COPTIC COMBINING SPIRITUS ASPER, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2CF1 0062;00E0 05AE 2CF1 0315 0062;0061 05AE 0300 2CF1 0315 0062;00E0 05AE 2CF1 0315 0062;0061 05AE 0300 2CF1 0315 0062; # (a◌̕◌̀◌֮◌⳱b; à◌֮◌⳱◌̕b; a◌֮◌̀◌⳱◌̕b; à◌֮◌⳱◌̕b; a◌֮◌̀◌⳱◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COPTIC COMBINING SPIRITUS LENIS, LATIN SMALL LETTER B
+0061 2CF1 0315 0300 05AE 0062;0061 05AE 2CF1 0300 0315 0062;0061 05AE 2CF1 0300 0315 0062;0061 05AE 2CF1 0300 0315 0062;0061 05AE 2CF1 0300 0315 0062; # (a◌⳱◌̕◌̀◌֮b; a◌֮◌⳱◌̀◌̕b; a◌֮◌⳱◌̀◌̕b; a◌֮◌⳱◌̀◌̕b; a◌֮◌⳱◌̀◌̕b; ) LATIN SMALL LETTER A, COPTIC COMBINING SPIRITUS LENIS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B0 094D 3099 2D7F 0062;0061 3099 094D 2D7F 05B0 0062;0061 3099 094D 2D7F 05B0 0062;0061 3099 094D 2D7F 05B0 0062;0061 3099 094D 2D7F 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œâµ¿b; a◌゙◌à¥â—Œâµ¿â—ŒÖ°b; a◌゙◌à¥â—Œâµ¿â—ŒÖ°b; a◌゙◌à¥â—Œâµ¿â—ŒÖ°b; a◌゙◌à¥â—Œâµ¿â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TIFINAGH CONSONANT JOINER, LATIN SMALL LETTER B
+0061 2D7F 05B0 094D 3099 0062;0061 3099 2D7F 094D 05B0 0062;0061 3099 2D7F 094D 05B0 0062;0061 3099 2D7F 094D 05B0 0062;0061 3099 2D7F 094D 05B0 0062; # (a◌⵿◌ְ◌à¥â—Œã‚™b; a◌゙◌⵿◌à¥â—ŒÖ°b; a◌゙◌⵿◌à¥â—ŒÖ°b; a◌゙◌⵿◌à¥â—ŒÖ°b; a◌゙◌⵿◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TIFINAGH CONSONANT JOINER, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DE0 0062;00E0 05AE 2DE0 0315 0062;0061 05AE 0300 2DE0 0315 0062;00E0 05AE 2DE0 0315 0062;0061 05AE 0300 2DE0 0315 0062; # (a◌̕◌̀◌֮◌ⷠb; à◌֮◌ⷠ◌̕b; a◌֮◌̀◌ⷠ◌̕b; à◌֮◌ⷠ◌̕b; a◌֮◌̀◌ⷠ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER BE, LATIN SMALL LETTER B
+0061 2DE0 0315 0300 05AE 0062;0061 05AE 2DE0 0300 0315 0062;0061 05AE 2DE0 0300 0315 0062;0061 05AE 2DE0 0300 0315 0062;0061 05AE 2DE0 0300 0315 0062; # (a◌ⷠ◌̕◌̀◌֮b; a◌֮◌ⷠ◌̀◌̕b; a◌֮◌ⷠ◌̀◌̕b; a◌֮◌ⷠ◌̀◌̕b; a◌֮◌ⷠ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER BE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DE1 0062;00E0 05AE 2DE1 0315 0062;0061 05AE 0300 2DE1 0315 0062;00E0 05AE 2DE1 0315 0062;0061 05AE 0300 2DE1 0315 0062; # (a◌̕◌̀◌֮◌ⷡb; à◌֮◌ⷡ◌̕b; a◌֮◌̀◌ⷡ◌̕b; à◌֮◌ⷡ◌̕b; a◌֮◌̀◌ⷡ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER VE, LATIN SMALL LETTER B
+0061 2DE1 0315 0300 05AE 0062;0061 05AE 2DE1 0300 0315 0062;0061 05AE 2DE1 0300 0315 0062;0061 05AE 2DE1 0300 0315 0062;0061 05AE 2DE1 0300 0315 0062; # (a◌ⷡ◌̕◌̀◌֮b; a◌֮◌ⷡ◌̀◌̕b; a◌֮◌ⷡ◌̀◌̕b; a◌֮◌ⷡ◌̀◌̕b; a◌֮◌ⷡ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER VE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DE2 0062;00E0 05AE 2DE2 0315 0062;0061 05AE 0300 2DE2 0315 0062;00E0 05AE 2DE2 0315 0062;0061 05AE 0300 2DE2 0315 0062; # (a◌̕◌̀◌֮◌ⷢb; à◌֮◌ⷢ◌̕b; a◌֮◌̀◌ⷢ◌̕b; à◌֮◌ⷢ◌̕b; a◌֮◌̀◌ⷢ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER GHE, LATIN SMALL LETTER B
+0061 2DE2 0315 0300 05AE 0062;0061 05AE 2DE2 0300 0315 0062;0061 05AE 2DE2 0300 0315 0062;0061 05AE 2DE2 0300 0315 0062;0061 05AE 2DE2 0300 0315 0062; # (a◌ⷢ◌̕◌̀◌֮b; a◌֮◌ⷢ◌̀◌̕b; a◌֮◌ⷢ◌̀◌̕b; a◌֮◌ⷢ◌̀◌̕b; a◌֮◌ⷢ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER GHE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DE3 0062;00E0 05AE 2DE3 0315 0062;0061 05AE 0300 2DE3 0315 0062;00E0 05AE 2DE3 0315 0062;0061 05AE 0300 2DE3 0315 0062; # (a◌̕◌̀◌֮◌ⷣb; à◌֮◌ⷣ◌̕b; a◌֮◌̀◌ⷣ◌̕b; à◌֮◌ⷣ◌̕b; a◌֮◌̀◌ⷣ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER DE, LATIN SMALL LETTER B
+0061 2DE3 0315 0300 05AE 0062;0061 05AE 2DE3 0300 0315 0062;0061 05AE 2DE3 0300 0315 0062;0061 05AE 2DE3 0300 0315 0062;0061 05AE 2DE3 0300 0315 0062; # (a◌ⷣ◌̕◌̀◌֮b; a◌֮◌ⷣ◌̀◌̕b; a◌֮◌ⷣ◌̀◌̕b; a◌֮◌ⷣ◌̀◌̕b; a◌֮◌ⷣ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER DE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DE4 0062;00E0 05AE 2DE4 0315 0062;0061 05AE 0300 2DE4 0315 0062;00E0 05AE 2DE4 0315 0062;0061 05AE 0300 2DE4 0315 0062; # (a◌̕◌̀◌֮◌ⷤb; à◌֮◌ⷤ◌̕b; a◌֮◌̀◌ⷤ◌̕b; à◌֮◌ⷤ◌̕b; a◌֮◌̀◌ⷤ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER ZHE, LATIN SMALL LETTER B
+0061 2DE4 0315 0300 05AE 0062;0061 05AE 2DE4 0300 0315 0062;0061 05AE 2DE4 0300 0315 0062;0061 05AE 2DE4 0300 0315 0062;0061 05AE 2DE4 0300 0315 0062; # (a◌ⷤ◌̕◌̀◌֮b; a◌֮◌ⷤ◌̀◌̕b; a◌֮◌ⷤ◌̀◌̕b; a◌֮◌ⷤ◌̀◌̕b; a◌֮◌ⷤ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER ZHE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DE5 0062;00E0 05AE 2DE5 0315 0062;0061 05AE 0300 2DE5 0315 0062;00E0 05AE 2DE5 0315 0062;0061 05AE 0300 2DE5 0315 0062; # (a◌̕◌̀◌֮◌ⷥb; à◌֮◌ⷥ◌̕b; a◌֮◌̀◌ⷥ◌̕b; à◌֮◌ⷥ◌̕b; a◌֮◌̀◌ⷥ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER ZE, LATIN SMALL LETTER B
+0061 2DE5 0315 0300 05AE 0062;0061 05AE 2DE5 0300 0315 0062;0061 05AE 2DE5 0300 0315 0062;0061 05AE 2DE5 0300 0315 0062;0061 05AE 2DE5 0300 0315 0062; # (a◌ⷥ◌̕◌̀◌֮b; a◌֮◌ⷥ◌̀◌̕b; a◌֮◌ⷥ◌̀◌̕b; a◌֮◌ⷥ◌̀◌̕b; a◌֮◌ⷥ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER ZE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DE6 0062;00E0 05AE 2DE6 0315 0062;0061 05AE 0300 2DE6 0315 0062;00E0 05AE 2DE6 0315 0062;0061 05AE 0300 2DE6 0315 0062; # (a◌̕◌̀◌֮◌ⷦb; à◌֮◌ⷦ◌̕b; a◌֮◌̀◌ⷦ◌̕b; à◌֮◌ⷦ◌̕b; a◌֮◌̀◌ⷦ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER KA, LATIN SMALL LETTER B
+0061 2DE6 0315 0300 05AE 0062;0061 05AE 2DE6 0300 0315 0062;0061 05AE 2DE6 0300 0315 0062;0061 05AE 2DE6 0300 0315 0062;0061 05AE 2DE6 0300 0315 0062; # (a◌ⷦ◌̕◌̀◌֮b; a◌֮◌ⷦ◌̀◌̕b; a◌֮◌ⷦ◌̀◌̕b; a◌֮◌ⷦ◌̀◌̕b; a◌֮◌ⷦ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER KA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DE7 0062;00E0 05AE 2DE7 0315 0062;0061 05AE 0300 2DE7 0315 0062;00E0 05AE 2DE7 0315 0062;0061 05AE 0300 2DE7 0315 0062; # (a◌̕◌̀◌֮◌ⷧb; à◌֮◌ⷧ◌̕b; a◌֮◌̀◌ⷧ◌̕b; à◌֮◌ⷧ◌̕b; a◌֮◌̀◌ⷧ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER EL, LATIN SMALL LETTER B
+0061 2DE7 0315 0300 05AE 0062;0061 05AE 2DE7 0300 0315 0062;0061 05AE 2DE7 0300 0315 0062;0061 05AE 2DE7 0300 0315 0062;0061 05AE 2DE7 0300 0315 0062; # (a◌ⷧ◌̕◌̀◌֮b; a◌֮◌ⷧ◌̀◌̕b; a◌֮◌ⷧ◌̀◌̕b; a◌֮◌ⷧ◌̀◌̕b; a◌֮◌ⷧ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER EL, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DE8 0062;00E0 05AE 2DE8 0315 0062;0061 05AE 0300 2DE8 0315 0062;00E0 05AE 2DE8 0315 0062;0061 05AE 0300 2DE8 0315 0062; # (a◌̕◌̀◌֮◌ⷨb; à◌֮◌ⷨ◌̕b; a◌֮◌̀◌ⷨ◌̕b; à◌֮◌ⷨ◌̕b; a◌֮◌̀◌ⷨ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER EM, LATIN SMALL LETTER B
+0061 2DE8 0315 0300 05AE 0062;0061 05AE 2DE8 0300 0315 0062;0061 05AE 2DE8 0300 0315 0062;0061 05AE 2DE8 0300 0315 0062;0061 05AE 2DE8 0300 0315 0062; # (a◌ⷨ◌̕◌̀◌֮b; a◌֮◌ⷨ◌̀◌̕b; a◌֮◌ⷨ◌̀◌̕b; a◌֮◌ⷨ◌̀◌̕b; a◌֮◌ⷨ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER EM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DE9 0062;00E0 05AE 2DE9 0315 0062;0061 05AE 0300 2DE9 0315 0062;00E0 05AE 2DE9 0315 0062;0061 05AE 0300 2DE9 0315 0062; # (a◌̕◌̀◌֮◌ⷩb; à◌֮◌ⷩ◌̕b; a◌֮◌̀◌ⷩ◌̕b; à◌֮◌ⷩ◌̕b; a◌֮◌̀◌ⷩ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER EN, LATIN SMALL LETTER B
+0061 2DE9 0315 0300 05AE 0062;0061 05AE 2DE9 0300 0315 0062;0061 05AE 2DE9 0300 0315 0062;0061 05AE 2DE9 0300 0315 0062;0061 05AE 2DE9 0300 0315 0062; # (a◌ⷩ◌̕◌̀◌֮b; a◌֮◌ⷩ◌̀◌̕b; a◌֮◌ⷩ◌̀◌̕b; a◌֮◌ⷩ◌̀◌̕b; a◌֮◌ⷩ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER EN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DEA 0062;00E0 05AE 2DEA 0315 0062;0061 05AE 0300 2DEA 0315 0062;00E0 05AE 2DEA 0315 0062;0061 05AE 0300 2DEA 0315 0062; # (a◌̕◌̀◌֮◌ⷪb; à◌֮◌ⷪ◌̕b; a◌֮◌̀◌ⷪ◌̕b; à◌֮◌ⷪ◌̕b; a◌֮◌̀◌ⷪ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER O, LATIN SMALL LETTER B
+0061 2DEA 0315 0300 05AE 0062;0061 05AE 2DEA 0300 0315 0062;0061 05AE 2DEA 0300 0315 0062;0061 05AE 2DEA 0300 0315 0062;0061 05AE 2DEA 0300 0315 0062; # (a◌ⷪ◌̕◌̀◌֮b; a◌֮◌ⷪ◌̀◌̕b; a◌֮◌ⷪ◌̀◌̕b; a◌֮◌ⷪ◌̀◌̕b; a◌֮◌ⷪ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER O, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DEB 0062;00E0 05AE 2DEB 0315 0062;0061 05AE 0300 2DEB 0315 0062;00E0 05AE 2DEB 0315 0062;0061 05AE 0300 2DEB 0315 0062; # (a◌̕◌̀◌֮◌ⷫb; à◌֮◌ⷫ◌̕b; a◌֮◌̀◌ⷫ◌̕b; à◌֮◌ⷫ◌̕b; a◌֮◌̀◌ⷫ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER PE, LATIN SMALL LETTER B
+0061 2DEB 0315 0300 05AE 0062;0061 05AE 2DEB 0300 0315 0062;0061 05AE 2DEB 0300 0315 0062;0061 05AE 2DEB 0300 0315 0062;0061 05AE 2DEB 0300 0315 0062; # (a◌ⷫ◌̕◌̀◌֮b; a◌֮◌ⷫ◌̀◌̕b; a◌֮◌ⷫ◌̀◌̕b; a◌֮◌ⷫ◌̀◌̕b; a◌֮◌ⷫ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER PE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DEC 0062;00E0 05AE 2DEC 0315 0062;0061 05AE 0300 2DEC 0315 0062;00E0 05AE 2DEC 0315 0062;0061 05AE 0300 2DEC 0315 0062; # (a◌̕◌̀◌֮◌ⷬb; à◌֮◌ⷬ◌̕b; a◌֮◌̀◌ⷬ◌̕b; à◌֮◌ⷬ◌̕b; a◌֮◌̀◌ⷬ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER ER, LATIN SMALL LETTER B
+0061 2DEC 0315 0300 05AE 0062;0061 05AE 2DEC 0300 0315 0062;0061 05AE 2DEC 0300 0315 0062;0061 05AE 2DEC 0300 0315 0062;0061 05AE 2DEC 0300 0315 0062; # (a◌ⷬ◌̕◌̀◌֮b; a◌֮◌ⷬ◌̀◌̕b; a◌֮◌ⷬ◌̀◌̕b; a◌֮◌ⷬ◌̀◌̕b; a◌֮◌ⷬ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER ER, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DED 0062;00E0 05AE 2DED 0315 0062;0061 05AE 0300 2DED 0315 0062;00E0 05AE 2DED 0315 0062;0061 05AE 0300 2DED 0315 0062; # (a◌̕◌̀◌֮◌ⷭb; à◌֮◌ⷭ◌̕b; a◌֮◌̀◌ⷭ◌̕b; à◌֮◌ⷭ◌̕b; a◌֮◌̀◌ⷭ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER ES, LATIN SMALL LETTER B
+0061 2DED 0315 0300 05AE 0062;0061 05AE 2DED 0300 0315 0062;0061 05AE 2DED 0300 0315 0062;0061 05AE 2DED 0300 0315 0062;0061 05AE 2DED 0300 0315 0062; # (a◌ⷭ◌̕◌̀◌֮b; a◌֮◌ⷭ◌̀◌̕b; a◌֮◌ⷭ◌̀◌̕b; a◌֮◌ⷭ◌̀◌̕b; a◌֮◌ⷭ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER ES, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DEE 0062;00E0 05AE 2DEE 0315 0062;0061 05AE 0300 2DEE 0315 0062;00E0 05AE 2DEE 0315 0062;0061 05AE 0300 2DEE 0315 0062; # (a◌̕◌̀◌֮◌ⷮb; à◌֮◌ⷮ◌̕b; a◌֮◌̀◌ⷮ◌̕b; à◌֮◌ⷮ◌̕b; a◌֮◌̀◌ⷮ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER TE, LATIN SMALL LETTER B
+0061 2DEE 0315 0300 05AE 0062;0061 05AE 2DEE 0300 0315 0062;0061 05AE 2DEE 0300 0315 0062;0061 05AE 2DEE 0300 0315 0062;0061 05AE 2DEE 0300 0315 0062; # (a◌ⷮ◌̕◌̀◌֮b; a◌֮◌ⷮ◌̀◌̕b; a◌֮◌ⷮ◌̀◌̕b; a◌֮◌ⷮ◌̀◌̕b; a◌֮◌ⷮ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER TE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DEF 0062;00E0 05AE 2DEF 0315 0062;0061 05AE 0300 2DEF 0315 0062;00E0 05AE 2DEF 0315 0062;0061 05AE 0300 2DEF 0315 0062; # (a◌̕◌̀◌֮◌ⷯb; à◌֮◌ⷯ◌̕b; a◌֮◌̀◌ⷯ◌̕b; à◌֮◌ⷯ◌̕b; a◌֮◌̀◌ⷯ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER HA, LATIN SMALL LETTER B
+0061 2DEF 0315 0300 05AE 0062;0061 05AE 2DEF 0300 0315 0062;0061 05AE 2DEF 0300 0315 0062;0061 05AE 2DEF 0300 0315 0062;0061 05AE 2DEF 0300 0315 0062; # (a◌ⷯ◌̕◌̀◌֮b; a◌֮◌ⷯ◌̀◌̕b; a◌֮◌ⷯ◌̀◌̕b; a◌֮◌ⷯ◌̀◌̕b; a◌֮◌ⷯ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER HA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DF0 0062;00E0 05AE 2DF0 0315 0062;0061 05AE 0300 2DF0 0315 0062;00E0 05AE 2DF0 0315 0062;0061 05AE 0300 2DF0 0315 0062; # (a◌̕◌̀◌֮◌ⷰb; à◌֮◌ⷰ◌̕b; a◌֮◌̀◌ⷰ◌̕b; à◌֮◌ⷰ◌̕b; a◌֮◌̀◌ⷰ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER TSE, LATIN SMALL LETTER B
+0061 2DF0 0315 0300 05AE 0062;0061 05AE 2DF0 0300 0315 0062;0061 05AE 2DF0 0300 0315 0062;0061 05AE 2DF0 0300 0315 0062;0061 05AE 2DF0 0300 0315 0062; # (a◌ⷰ◌̕◌̀◌֮b; a◌֮◌ⷰ◌̀◌̕b; a◌֮◌ⷰ◌̀◌̕b; a◌֮◌ⷰ◌̀◌̕b; a◌֮◌ⷰ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER TSE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DF1 0062;00E0 05AE 2DF1 0315 0062;0061 05AE 0300 2DF1 0315 0062;00E0 05AE 2DF1 0315 0062;0061 05AE 0300 2DF1 0315 0062; # (a◌̕◌̀◌֮◌ⷱb; à◌֮◌ⷱ◌̕b; a◌֮◌̀◌ⷱ◌̕b; à◌֮◌ⷱ◌̕b; a◌֮◌̀◌ⷱ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER CHE, LATIN SMALL LETTER B
+0061 2DF1 0315 0300 05AE 0062;0061 05AE 2DF1 0300 0315 0062;0061 05AE 2DF1 0300 0315 0062;0061 05AE 2DF1 0300 0315 0062;0061 05AE 2DF1 0300 0315 0062; # (a◌ⷱ◌̕◌̀◌֮b; a◌֮◌ⷱ◌̀◌̕b; a◌֮◌ⷱ◌̀◌̕b; a◌֮◌ⷱ◌̀◌̕b; a◌֮◌ⷱ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER CHE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DF2 0062;00E0 05AE 2DF2 0315 0062;0061 05AE 0300 2DF2 0315 0062;00E0 05AE 2DF2 0315 0062;0061 05AE 0300 2DF2 0315 0062; # (a◌̕◌̀◌֮◌ⷲb; à◌֮◌ⷲ◌̕b; a◌֮◌̀◌ⷲ◌̕b; à◌֮◌ⷲ◌̕b; a◌֮◌̀◌ⷲ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER SHA, LATIN SMALL LETTER B
+0061 2DF2 0315 0300 05AE 0062;0061 05AE 2DF2 0300 0315 0062;0061 05AE 2DF2 0300 0315 0062;0061 05AE 2DF2 0300 0315 0062;0061 05AE 2DF2 0300 0315 0062; # (a◌ⷲ◌̕◌̀◌֮b; a◌֮◌ⷲ◌̀◌̕b; a◌֮◌ⷲ◌̀◌̕b; a◌֮◌ⷲ◌̀◌̕b; a◌֮◌ⷲ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER SHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DF3 0062;00E0 05AE 2DF3 0315 0062;0061 05AE 0300 2DF3 0315 0062;00E0 05AE 2DF3 0315 0062;0061 05AE 0300 2DF3 0315 0062; # (a◌̕◌̀◌֮◌ⷳb; à◌֮◌ⷳ◌̕b; a◌֮◌̀◌ⷳ◌̕b; à◌֮◌ⷳ◌̕b; a◌֮◌̀◌ⷳ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER SHCHA, LATIN SMALL LETTER B
+0061 2DF3 0315 0300 05AE 0062;0061 05AE 2DF3 0300 0315 0062;0061 05AE 2DF3 0300 0315 0062;0061 05AE 2DF3 0300 0315 0062;0061 05AE 2DF3 0300 0315 0062; # (a◌ⷳ◌̕◌̀◌֮b; a◌֮◌ⷳ◌̀◌̕b; a◌֮◌ⷳ◌̀◌̕b; a◌֮◌ⷳ◌̀◌̕b; a◌֮◌ⷳ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER SHCHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DF4 0062;00E0 05AE 2DF4 0315 0062;0061 05AE 0300 2DF4 0315 0062;00E0 05AE 2DF4 0315 0062;0061 05AE 0300 2DF4 0315 0062; # (a◌̕◌̀◌֮◌ⷴb; à◌֮◌ⷴ◌̕b; a◌֮◌̀◌ⷴ◌̕b; à◌֮◌ⷴ◌̕b; a◌֮◌̀◌ⷴ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER FITA, LATIN SMALL LETTER B
+0061 2DF4 0315 0300 05AE 0062;0061 05AE 2DF4 0300 0315 0062;0061 05AE 2DF4 0300 0315 0062;0061 05AE 2DF4 0300 0315 0062;0061 05AE 2DF4 0300 0315 0062; # (a◌ⷴ◌̕◌̀◌֮b; a◌֮◌ⷴ◌̀◌̕b; a◌֮◌ⷴ◌̀◌̕b; a◌֮◌ⷴ◌̀◌̕b; a◌֮◌ⷴ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER FITA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DF5 0062;00E0 05AE 2DF5 0315 0062;0061 05AE 0300 2DF5 0315 0062;00E0 05AE 2DF5 0315 0062;0061 05AE 0300 2DF5 0315 0062; # (a◌̕◌̀◌֮◌ⷵb; à◌֮◌ⷵ◌̕b; a◌֮◌̀◌ⷵ◌̕b; à◌֮◌ⷵ◌̕b; a◌֮◌̀◌ⷵ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER ES-TE, LATIN SMALL LETTER B
+0061 2DF5 0315 0300 05AE 0062;0061 05AE 2DF5 0300 0315 0062;0061 05AE 2DF5 0300 0315 0062;0061 05AE 2DF5 0300 0315 0062;0061 05AE 2DF5 0300 0315 0062; # (a◌ⷵ◌̕◌̀◌֮b; a◌֮◌ⷵ◌̀◌̕b; a◌֮◌ⷵ◌̀◌̕b; a◌֮◌ⷵ◌̀◌̕b; a◌֮◌ⷵ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER ES-TE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DF6 0062;00E0 05AE 2DF6 0315 0062;0061 05AE 0300 2DF6 0315 0062;00E0 05AE 2DF6 0315 0062;0061 05AE 0300 2DF6 0315 0062; # (a◌̕◌̀◌֮◌ⷶb; à◌֮◌ⷶ◌̕b; a◌֮◌̀◌ⷶ◌̕b; à◌֮◌ⷶ◌̕b; a◌֮◌̀◌ⷶ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER A, LATIN SMALL LETTER B
+0061 2DF6 0315 0300 05AE 0062;0061 05AE 2DF6 0300 0315 0062;0061 05AE 2DF6 0300 0315 0062;0061 05AE 2DF6 0300 0315 0062;0061 05AE 2DF6 0300 0315 0062; # (a◌ⷶ◌̕◌̀◌֮b; a◌֮◌ⷶ◌̀◌̕b; a◌֮◌ⷶ◌̀◌̕b; a◌֮◌ⷶ◌̀◌̕b; a◌֮◌ⷶ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DF7 0062;00E0 05AE 2DF7 0315 0062;0061 05AE 0300 2DF7 0315 0062;00E0 05AE 2DF7 0315 0062;0061 05AE 0300 2DF7 0315 0062; # (a◌̕◌̀◌֮◌ⷷb; à◌֮◌ⷷ◌̕b; a◌֮◌̀◌ⷷ◌̕b; à◌֮◌ⷷ◌̕b; a◌֮◌̀◌ⷷ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER IE, LATIN SMALL LETTER B
+0061 2DF7 0315 0300 05AE 0062;0061 05AE 2DF7 0300 0315 0062;0061 05AE 2DF7 0300 0315 0062;0061 05AE 2DF7 0300 0315 0062;0061 05AE 2DF7 0300 0315 0062; # (a◌ⷷ◌̕◌̀◌֮b; a◌֮◌ⷷ◌̀◌̕b; a◌֮◌ⷷ◌̀◌̕b; a◌֮◌ⷷ◌̀◌̕b; a◌֮◌ⷷ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER IE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DF8 0062;00E0 05AE 2DF8 0315 0062;0061 05AE 0300 2DF8 0315 0062;00E0 05AE 2DF8 0315 0062;0061 05AE 0300 2DF8 0315 0062; # (a◌̕◌̀◌֮◌ⷸb; à◌֮◌ⷸ◌̕b; a◌֮◌̀◌ⷸ◌̕b; à◌֮◌ⷸ◌̕b; a◌֮◌̀◌ⷸ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER DJERV, LATIN SMALL LETTER B
+0061 2DF8 0315 0300 05AE 0062;0061 05AE 2DF8 0300 0315 0062;0061 05AE 2DF8 0300 0315 0062;0061 05AE 2DF8 0300 0315 0062;0061 05AE 2DF8 0300 0315 0062; # (a◌ⷸ◌̕◌̀◌֮b; a◌֮◌ⷸ◌̀◌̕b; a◌֮◌ⷸ◌̀◌̕b; a◌֮◌ⷸ◌̀◌̕b; a◌֮◌ⷸ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER DJERV, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DF9 0062;00E0 05AE 2DF9 0315 0062;0061 05AE 0300 2DF9 0315 0062;00E0 05AE 2DF9 0315 0062;0061 05AE 0300 2DF9 0315 0062; # (a◌̕◌̀◌֮◌ⷹb; à◌֮◌ⷹ◌̕b; a◌֮◌̀◌ⷹ◌̕b; à◌֮◌ⷹ◌̕b; a◌֮◌̀◌ⷹ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER MONOGRAPH UK, LATIN SMALL LETTER B
+0061 2DF9 0315 0300 05AE 0062;0061 05AE 2DF9 0300 0315 0062;0061 05AE 2DF9 0300 0315 0062;0061 05AE 2DF9 0300 0315 0062;0061 05AE 2DF9 0300 0315 0062; # (a◌ⷹ◌̕◌̀◌֮b; a◌֮◌ⷹ◌̀◌̕b; a◌֮◌ⷹ◌̀◌̕b; a◌֮◌ⷹ◌̀◌̕b; a◌֮◌ⷹ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER MONOGRAPH UK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DFA 0062;00E0 05AE 2DFA 0315 0062;0061 05AE 0300 2DFA 0315 0062;00E0 05AE 2DFA 0315 0062;0061 05AE 0300 2DFA 0315 0062; # (a◌̕◌̀◌֮◌ⷺb; à◌֮◌ⷺ◌̕b; a◌֮◌̀◌ⷺ◌̕b; à◌֮◌ⷺ◌̕b; a◌֮◌̀◌ⷺ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER YAT, LATIN SMALL LETTER B
+0061 2DFA 0315 0300 05AE 0062;0061 05AE 2DFA 0300 0315 0062;0061 05AE 2DFA 0300 0315 0062;0061 05AE 2DFA 0300 0315 0062;0061 05AE 2DFA 0300 0315 0062; # (a◌ⷺ◌̕◌̀◌֮b; a◌֮◌ⷺ◌̀◌̕b; a◌֮◌ⷺ◌̀◌̕b; a◌֮◌ⷺ◌̀◌̕b; a◌֮◌ⷺ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER YAT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DFB 0062;00E0 05AE 2DFB 0315 0062;0061 05AE 0300 2DFB 0315 0062;00E0 05AE 2DFB 0315 0062;0061 05AE 0300 2DFB 0315 0062; # (a◌̕◌̀◌֮◌ⷻb; à◌֮◌ⷻ◌̕b; a◌֮◌̀◌ⷻ◌̕b; à◌֮◌ⷻ◌̕b; a◌֮◌̀◌ⷻ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER YU, LATIN SMALL LETTER B
+0061 2DFB 0315 0300 05AE 0062;0061 05AE 2DFB 0300 0315 0062;0061 05AE 2DFB 0300 0315 0062;0061 05AE 2DFB 0300 0315 0062;0061 05AE 2DFB 0300 0315 0062; # (a◌ⷻ◌̕◌̀◌֮b; a◌֮◌ⷻ◌̀◌̕b; a◌֮◌ⷻ◌̀◌̕b; a◌֮◌ⷻ◌̀◌̕b; a◌֮◌ⷻ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER YU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DFC 0062;00E0 05AE 2DFC 0315 0062;0061 05AE 0300 2DFC 0315 0062;00E0 05AE 2DFC 0315 0062;0061 05AE 0300 2DFC 0315 0062; # (a◌̕◌̀◌֮◌ⷼb; à◌֮◌ⷼ◌̕b; a◌֮◌̀◌ⷼ◌̕b; à◌֮◌ⷼ◌̕b; a◌֮◌̀◌ⷼ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER IOTIFIED A, LATIN SMALL LETTER B
+0061 2DFC 0315 0300 05AE 0062;0061 05AE 2DFC 0300 0315 0062;0061 05AE 2DFC 0300 0315 0062;0061 05AE 2DFC 0300 0315 0062;0061 05AE 2DFC 0300 0315 0062; # (a◌ⷼ◌̕◌̀◌֮b; a◌֮◌ⷼ◌̀◌̕b; a◌֮◌ⷼ◌̀◌̕b; a◌֮◌ⷼ◌̀◌̕b; a◌֮◌ⷼ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER IOTIFIED A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DFD 0062;00E0 05AE 2DFD 0315 0062;0061 05AE 0300 2DFD 0315 0062;00E0 05AE 2DFD 0315 0062;0061 05AE 0300 2DFD 0315 0062; # (a◌̕◌̀◌֮◌ⷽb; à◌֮◌ⷽ◌̕b; a◌֮◌̀◌ⷽ◌̕b; à◌֮◌ⷽ◌̕b; a◌֮◌̀◌ⷽ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER LITTLE YUS, LATIN SMALL LETTER B
+0061 2DFD 0315 0300 05AE 0062;0061 05AE 2DFD 0300 0315 0062;0061 05AE 2DFD 0300 0315 0062;0061 05AE 2DFD 0300 0315 0062;0061 05AE 2DFD 0300 0315 0062; # (a◌ⷽ◌̕◌̀◌֮b; a◌֮◌ⷽ◌̀◌̕b; a◌֮◌ⷽ◌̀◌̕b; a◌֮◌ⷽ◌̀◌̕b; a◌֮◌ⷽ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER LITTLE YUS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DFE 0062;00E0 05AE 2DFE 0315 0062;0061 05AE 0300 2DFE 0315 0062;00E0 05AE 2DFE 0315 0062;0061 05AE 0300 2DFE 0315 0062; # (a◌̕◌̀◌֮◌ⷾb; à◌֮◌ⷾ◌̕b; a◌֮◌̀◌ⷾ◌̕b; à◌֮◌ⷾ◌̕b; a◌֮◌̀◌ⷾ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER BIG YUS, LATIN SMALL LETTER B
+0061 2DFE 0315 0300 05AE 0062;0061 05AE 2DFE 0300 0315 0062;0061 05AE 2DFE 0300 0315 0062;0061 05AE 2DFE 0300 0315 0062;0061 05AE 2DFE 0300 0315 0062; # (a◌ⷾ◌̕◌̀◌֮b; a◌֮◌ⷾ◌̀◌̕b; a◌֮◌ⷾ◌̀◌̕b; a◌֮◌ⷾ◌̀◌̕b; a◌֮◌ⷾ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER BIG YUS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 2DFF 0062;00E0 05AE 2DFF 0315 0062;0061 05AE 0300 2DFF 0315 0062;00E0 05AE 2DFF 0315 0062;0061 05AE 0300 2DFF 0315 0062; # (a◌̕◌̀◌֮◌ⷿb; à◌֮◌ⷿ◌̕b; a◌֮◌̀◌ⷿ◌̕b; à◌֮◌ⷿ◌̕b; a◌֮◌̀◌ⷿ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER IOTIFIED BIG YUS, LATIN SMALL LETTER B
+0061 2DFF 0315 0300 05AE 0062;0061 05AE 2DFF 0300 0315 0062;0061 05AE 2DFF 0300 0315 0062;0061 05AE 2DFF 0300 0315 0062;0061 05AE 2DFF 0300 0315 0062; # (a◌ⷿ◌̕◌̀◌֮b; a◌֮◌ⷿ◌̀◌̕b; a◌֮◌ⷿ◌̀◌̕b; a◌֮◌ⷿ◌̀◌̕b; a◌֮◌ⷿ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER IOTIFIED BIG YUS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0316 302A 031B 302A 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062; # (a◌̖◌〪◌̛◌〪b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 302A 0316 302A 031B 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062; # (a◌〪◌̖◌〪◌̛b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, LATIN SMALL LETTER B
+0061 0300 05AE 1D16D 302B 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062; # (a◌̀◌֮ð…­â—Œã€«b; àð…­â—ŒÖ®â—Œã€«b; að…­â—ŒÖ®â—Œã€«â—ŒÌ€b; àð…­â—ŒÖ®â—Œã€«b; að…­â—ŒÖ®â—Œã€«â—ŒÌ€b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, IDEOGRAPHIC RISING TONE MARK, LATIN SMALL LETTER B
+0061 302B 0300 05AE 1D16D 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062; # (a◌〫◌̀◌֮ð…­b; àð…­â—Œã€«â—ŒÖ®b; að…­â—Œã€«â—ŒÖ®â—ŒÌ€b; àð…­â—Œã€«â—ŒÖ®b; að…­â—Œã€«â—ŒÖ®â—ŒÌ€b; ) LATIN SMALL LETTER A, IDEOGRAPHIC RISING TONE MARK, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, LATIN SMALL LETTER B
+0061 035C 0315 0300 302C 0062;00E0 0315 302C 035C 0062;0061 0300 0315 302C 035C 0062;00E0 0315 302C 035C 0062;0061 0300 0315 302C 035C 0062; # (a◌͜◌̕◌̀◌〬b; à◌̕◌〬◌͜b; a◌̀◌̕◌〬◌͜b; à◌̕◌〬◌͜b; a◌̀◌̕◌〬◌͜b; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, IDEOGRAPHIC DEPARTING TONE MARK, LATIN SMALL LETTER B
+0061 302C 035C 0315 0300 0062;00E0 302C 0315 035C 0062;0061 0300 302C 0315 035C 0062;00E0 302C 0315 035C 0062;0061 0300 302C 0315 035C 0062; # (a◌〬◌͜◌̕◌̀b; à◌〬◌̕◌͜b; a◌̀◌〬◌̕◌͜b; à◌〬◌̕◌͜b; a◌̀◌〬◌̕◌͜b; ) LATIN SMALL LETTER A, IDEOGRAPHIC DEPARTING TONE MARK, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
+0061 302E 059A 0316 302D 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062; # (a〮◌֚◌̖◌〭b; a◌̖◌֚◌〭〮b; a◌̖◌֚◌〭〮b; a◌̖◌֚◌〭〮b; a◌̖◌֚◌〭〮b; ) LATIN SMALL LETTER A, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC ENTERING TONE MARK, LATIN SMALL LETTER B
+0061 302D 302E 059A 0316 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062; # (a◌〭〮◌֚◌̖b; a◌̖◌〭◌֚〮b; a◌̖◌〭◌֚〮b; a◌̖◌〭◌֚〮b; a◌̖◌〭◌֚〮b; ) LATIN SMALL LETTER A, IDEOGRAPHIC ENTERING TONE MARK, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, LATIN SMALL LETTER B
+0061 1D16D 302E 059A 302E 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062; # (að…­ã€®â—ŒÖšã€®b; a◌֚〮〮ð…­b; a◌֚〮〮ð…­b; a◌֚〮〮ð…­b; a◌֚〮〮ð…­b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, HANGUL SINGLE DOT TONE MARK, LATIN SMALL LETTER B
+0061 302E 1D16D 302E 059A 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062; # (a〮ð…­ã€®â—ŒÖšb; a◌֚〮〮ð…­b; a◌֚〮〮ð…­b; a◌֚〮〮ð…­b; a◌֚〮〮ð…­b; ) LATIN SMALL LETTER A, HANGUL SINGLE DOT TONE MARK, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, LATIN SMALL LETTER B
+0061 1D16D 302E 059A 302F 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062; # (að…­ã€®â—ŒÖšã€¯b; a◌֚〮〯ð…­b; a◌֚〮〯ð…­b; a◌֚〮〯ð…­b; a◌֚〮〯ð…­b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, HANGUL DOUBLE DOT TONE MARK, LATIN SMALL LETTER B
+0061 302F 1D16D 302E 059A 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062; # (a〯ð…­ã€®â—ŒÖšb; a◌֚〯〮ð…­b; a◌֚〯〮ð…­b; a◌֚〯〮ð…­b; a◌֚〯〮ð…­b; ) LATIN SMALL LETTER A, HANGUL DOUBLE DOT TONE MARK, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, LATIN SMALL LETTER B
+0061 094D 3099 093C 3099 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062; # (aâ—Œà¥â—Œã‚™â—Œà¤¼â—Œã‚™b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 094D 3099 093C 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062; # (a◌゙◌à¥â—Œã‚™â—Œà¤¼b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, LATIN SMALL LETTER B
+0061 094D 3099 093C 309A 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062; # (aâ—Œà¥â—Œã‚™â—Œà¤¼â—Œã‚šb; a◌़◌゙◌゚◌à¥b; a◌़◌゙◌゚◌à¥b; a◌़◌゙◌゚◌à¥b; a◌़◌゙◌゚◌à¥b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 309A 094D 3099 093C 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062; # (a◌゚◌à¥â—Œã‚™â—Œà¤¼b; a◌़◌゚◌゙◌à¥b; a◌़◌゚◌゙◌à¥b; a◌़◌゚◌゙◌à¥b; a◌़◌゚◌゙◌à¥b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, LATIN SMALL LETTER B
+0061 0315 0300 05AE A66F 0062;00E0 05AE A66F 0315 0062;0061 05AE 0300 A66F 0315 0062;00E0 05AE A66F 0315 0062;0061 05AE 0300 A66F 0315 0062; # (a◌̕◌̀◌֮◌꙯b; à◌֮◌꙯◌̕b; a◌֮◌̀◌꙯◌̕b; à◌֮◌꙯◌̕b; a◌֮◌̀◌꙯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC VZMET, LATIN SMALL LETTER B
+0061 A66F 0315 0300 05AE 0062;0061 05AE A66F 0300 0315 0062;0061 05AE A66F 0300 0315 0062;0061 05AE A66F 0300 0315 0062;0061 05AE A66F 0300 0315 0062; # (a◌꙯◌̕◌̀◌֮b; a◌֮◌꙯◌̀◌̕b; a◌֮◌꙯◌̀◌̕b; a◌֮◌꙯◌̀◌̕b; a◌֮◌꙯◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC VZMET, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A674 0062;00E0 05AE A674 0315 0062;0061 05AE 0300 A674 0315 0062;00E0 05AE A674 0315 0062;0061 05AE 0300 A674 0315 0062; # (a◌̕◌̀◌֮◌ꙴb; à◌֮◌ꙴ◌̕b; a◌֮◌̀◌ꙴ◌̕b; à◌֮◌ꙴ◌̕b; a◌֮◌̀◌ꙴ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER UKRAINIAN IE, LATIN SMALL LETTER B
+0061 A674 0315 0300 05AE 0062;0061 05AE A674 0300 0315 0062;0061 05AE A674 0300 0315 0062;0061 05AE A674 0300 0315 0062;0061 05AE A674 0300 0315 0062; # (a◌ꙴ◌̕◌̀◌֮b; a◌֮◌ꙴ◌̀◌̕b; a◌֮◌ꙴ◌̀◌̕b; a◌֮◌ꙴ◌̀◌̕b; a◌֮◌ꙴ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER UKRAINIAN IE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A675 0062;00E0 05AE A675 0315 0062;0061 05AE 0300 A675 0315 0062;00E0 05AE A675 0315 0062;0061 05AE 0300 A675 0315 0062; # (a◌̕◌̀◌֮◌ꙵb; à◌֮◌ꙵ◌̕b; a◌֮◌̀◌ꙵ◌̕b; à◌֮◌ꙵ◌̕b; a◌֮◌̀◌ꙵ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER I, LATIN SMALL LETTER B
+0061 A675 0315 0300 05AE 0062;0061 05AE A675 0300 0315 0062;0061 05AE A675 0300 0315 0062;0061 05AE A675 0300 0315 0062;0061 05AE A675 0300 0315 0062; # (a◌ꙵ◌̕◌̀◌֮b; a◌֮◌ꙵ◌̀◌̕b; a◌֮◌ꙵ◌̀◌̕b; a◌֮◌ꙵ◌̀◌̕b; a◌֮◌ꙵ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER I, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A676 0062;00E0 05AE A676 0315 0062;0061 05AE 0300 A676 0315 0062;00E0 05AE A676 0315 0062;0061 05AE 0300 A676 0315 0062; # (a◌̕◌̀◌֮◌ꙶb; à◌֮◌ꙶ◌̕b; a◌֮◌̀◌ꙶ◌̕b; à◌֮◌ꙶ◌̕b; a◌֮◌̀◌ꙶ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER YI, LATIN SMALL LETTER B
+0061 A676 0315 0300 05AE 0062;0061 05AE A676 0300 0315 0062;0061 05AE A676 0300 0315 0062;0061 05AE A676 0300 0315 0062;0061 05AE A676 0300 0315 0062; # (a◌ꙶ◌̕◌̀◌֮b; a◌֮◌ꙶ◌̀◌̕b; a◌֮◌ꙶ◌̀◌̕b; a◌֮◌ꙶ◌̀◌̕b; a◌֮◌ꙶ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER YI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A677 0062;00E0 05AE A677 0315 0062;0061 05AE 0300 A677 0315 0062;00E0 05AE A677 0315 0062;0061 05AE 0300 A677 0315 0062; # (a◌̕◌̀◌֮◌ꙷb; à◌֮◌ꙷ◌̕b; a◌֮◌̀◌ꙷ◌̕b; à◌֮◌ꙷ◌̕b; a◌֮◌̀◌ꙷ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER U, LATIN SMALL LETTER B
+0061 A677 0315 0300 05AE 0062;0061 05AE A677 0300 0315 0062;0061 05AE A677 0300 0315 0062;0061 05AE A677 0300 0315 0062;0061 05AE A677 0300 0315 0062; # (a◌ꙷ◌̕◌̀◌֮b; a◌֮◌ꙷ◌̀◌̕b; a◌֮◌ꙷ◌̀◌̕b; a◌֮◌ꙷ◌̀◌̕b; a◌֮◌ꙷ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER U, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A678 0062;00E0 05AE A678 0315 0062;0061 05AE 0300 A678 0315 0062;00E0 05AE A678 0315 0062;0061 05AE 0300 A678 0315 0062; # (a◌̕◌̀◌֮◌ꙸb; à◌֮◌ꙸ◌̕b; a◌֮◌̀◌ꙸ◌̕b; à◌֮◌ꙸ◌̕b; a◌֮◌̀◌ꙸ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER HARD SIGN, LATIN SMALL LETTER B
+0061 A678 0315 0300 05AE 0062;0061 05AE A678 0300 0315 0062;0061 05AE A678 0300 0315 0062;0061 05AE A678 0300 0315 0062;0061 05AE A678 0300 0315 0062; # (a◌ꙸ◌̕◌̀◌֮b; a◌֮◌ꙸ◌̀◌̕b; a◌֮◌ꙸ◌̀◌̕b; a◌֮◌ꙸ◌̀◌̕b; a◌֮◌ꙸ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER HARD SIGN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A679 0062;00E0 05AE A679 0315 0062;0061 05AE 0300 A679 0315 0062;00E0 05AE A679 0315 0062;0061 05AE 0300 A679 0315 0062; # (a◌̕◌̀◌֮◌ꙹb; à◌֮◌ꙹ◌̕b; a◌֮◌̀◌ꙹ◌̕b; à◌֮◌ꙹ◌̕b; a◌֮◌̀◌ꙹ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER YERU, LATIN SMALL LETTER B
+0061 A679 0315 0300 05AE 0062;0061 05AE A679 0300 0315 0062;0061 05AE A679 0300 0315 0062;0061 05AE A679 0300 0315 0062;0061 05AE A679 0300 0315 0062; # (a◌ꙹ◌̕◌̀◌֮b; a◌֮◌ꙹ◌̀◌̕b; a◌֮◌ꙹ◌̀◌̕b; a◌֮◌ꙹ◌̀◌̕b; a◌֮◌ꙹ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER YERU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A67A 0062;00E0 05AE A67A 0315 0062;0061 05AE 0300 A67A 0315 0062;00E0 05AE A67A 0315 0062;0061 05AE 0300 A67A 0315 0062; # (a◌̕◌̀◌֮◌ꙺb; à◌֮◌ꙺ◌̕b; a◌֮◌̀◌ꙺ◌̕b; à◌֮◌ꙺ◌̕b; a◌֮◌̀◌ꙺ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER SOFT SIGN, LATIN SMALL LETTER B
+0061 A67A 0315 0300 05AE 0062;0061 05AE A67A 0300 0315 0062;0061 05AE A67A 0300 0315 0062;0061 05AE A67A 0300 0315 0062;0061 05AE A67A 0300 0315 0062; # (a◌ꙺ◌̕◌̀◌֮b; a◌֮◌ꙺ◌̀◌̕b; a◌֮◌ꙺ◌̀◌̕b; a◌֮◌ꙺ◌̀◌̕b; a◌֮◌ꙺ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER SOFT SIGN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A67B 0062;00E0 05AE A67B 0315 0062;0061 05AE 0300 A67B 0315 0062;00E0 05AE A67B 0315 0062;0061 05AE 0300 A67B 0315 0062; # (a◌̕◌̀◌֮◌ꙻb; à◌֮◌ꙻ◌̕b; a◌֮◌̀◌ꙻ◌̕b; à◌֮◌ꙻ◌̕b; a◌֮◌̀◌ꙻ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER OMEGA, LATIN SMALL LETTER B
+0061 A67B 0315 0300 05AE 0062;0061 05AE A67B 0300 0315 0062;0061 05AE A67B 0300 0315 0062;0061 05AE A67B 0300 0315 0062;0061 05AE A67B 0300 0315 0062; # (a◌ꙻ◌̕◌̀◌֮b; a◌֮◌ꙻ◌̀◌̕b; a◌֮◌ꙻ◌̀◌̕b; a◌֮◌ꙻ◌̀◌̕b; a◌֮◌ꙻ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER OMEGA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A67C 0062;00E0 05AE A67C 0315 0062;0061 05AE 0300 A67C 0315 0062;00E0 05AE A67C 0315 0062;0061 05AE 0300 A67C 0315 0062; # (a◌̕◌̀◌֮◌꙼b; à◌֮◌꙼◌̕b; a◌֮◌̀◌꙼◌̕b; à◌֮◌꙼◌̕b; a◌֮◌̀◌꙼◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC KAVYKA, LATIN SMALL LETTER B
+0061 A67C 0315 0300 05AE 0062;0061 05AE A67C 0300 0315 0062;0061 05AE A67C 0300 0315 0062;0061 05AE A67C 0300 0315 0062;0061 05AE A67C 0300 0315 0062; # (a◌꙼◌̕◌̀◌֮b; a◌֮◌꙼◌̀◌̕b; a◌֮◌꙼◌̀◌̕b; a◌֮◌꙼◌̀◌̕b; a◌֮◌꙼◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC KAVYKA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A67D 0062;00E0 05AE A67D 0315 0062;0061 05AE 0300 A67D 0315 0062;00E0 05AE A67D 0315 0062;0061 05AE 0300 A67D 0315 0062; # (a◌̕◌̀◌֮◌꙽b; à◌֮◌꙽◌̕b; a◌֮◌̀◌꙽◌̕b; à◌֮◌꙽◌̕b; a◌֮◌̀◌꙽◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC PAYEROK, LATIN SMALL LETTER B
+0061 A67D 0315 0300 05AE 0062;0061 05AE A67D 0300 0315 0062;0061 05AE A67D 0300 0315 0062;0061 05AE A67D 0300 0315 0062;0061 05AE A67D 0300 0315 0062; # (a◌꙽◌̕◌̀◌֮b; a◌֮◌꙽◌̀◌̕b; a◌֮◌꙽◌̀◌̕b; a◌֮◌꙽◌̀◌̕b; a◌֮◌꙽◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC PAYEROK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A69E 0062;00E0 05AE A69E 0315 0062;0061 05AE 0300 A69E 0315 0062;00E0 05AE A69E 0315 0062;0061 05AE 0300 A69E 0315 0062; # (a◌̕◌̀◌֮◌ꚞb; à◌֮◌ꚞ◌̕b; a◌֮◌̀◌ꚞ◌̕b; à◌֮◌ꚞ◌̕b; a◌֮◌̀◌ꚞ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER EF, LATIN SMALL LETTER B
+0061 A69E 0315 0300 05AE 0062;0061 05AE A69E 0300 0315 0062;0061 05AE A69E 0300 0315 0062;0061 05AE A69E 0300 0315 0062;0061 05AE A69E 0300 0315 0062; # (a◌ꚞ◌̕◌̀◌֮b; a◌֮◌ꚞ◌̀◌̕b; a◌֮◌ꚞ◌̀◌̕b; a◌֮◌ꚞ◌̀◌̕b; a◌֮◌ꚞ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER EF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A69F 0062;00E0 05AE A69F 0315 0062;0061 05AE 0300 A69F 0315 0062;00E0 05AE A69F 0315 0062;0061 05AE 0300 A69F 0315 0062; # (a◌̕◌̀◌֮◌ꚟb; à◌֮◌ꚟ◌̕b; a◌֮◌̀◌ꚟ◌̕b; à◌֮◌ꚟ◌̕b; a◌֮◌̀◌ꚟ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER IOTIFIED E, LATIN SMALL LETTER B
+0061 A69F 0315 0300 05AE 0062;0061 05AE A69F 0300 0315 0062;0061 05AE A69F 0300 0315 0062;0061 05AE A69F 0300 0315 0062;0061 05AE A69F 0300 0315 0062; # (a◌ꚟ◌̕◌̀◌֮b; a◌֮◌ꚟ◌̀◌̕b; a◌֮◌ꚟ◌̀◌̕b; a◌֮◌ꚟ◌̀◌̕b; a◌֮◌ꚟ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER IOTIFIED E, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A6F0 0062;00E0 05AE A6F0 0315 0062;0061 05AE 0300 A6F0 0315 0062;00E0 05AE A6F0 0315 0062;0061 05AE 0300 A6F0 0315 0062; # (a◌̕◌̀◌֮◌꛰b; à◌֮◌꛰◌̕b; a◌֮◌̀◌꛰◌̕b; à◌֮◌꛰◌̕b; a◌֮◌̀◌꛰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BAMUM COMBINING MARK KOQNDON, LATIN SMALL LETTER B
+0061 A6F0 0315 0300 05AE 0062;0061 05AE A6F0 0300 0315 0062;0061 05AE A6F0 0300 0315 0062;0061 05AE A6F0 0300 0315 0062;0061 05AE A6F0 0300 0315 0062; # (a◌꛰◌̕◌̀◌֮b; a◌֮◌꛰◌̀◌̕b; a◌֮◌꛰◌̀◌̕b; a◌֮◌꛰◌̀◌̕b; a◌֮◌꛰◌̀◌̕b; ) LATIN SMALL LETTER A, BAMUM COMBINING MARK KOQNDON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A6F1 0062;00E0 05AE A6F1 0315 0062;0061 05AE 0300 A6F1 0315 0062;00E0 05AE A6F1 0315 0062;0061 05AE 0300 A6F1 0315 0062; # (a◌̕◌̀◌֮◌꛱b; à◌֮◌꛱◌̕b; a◌֮◌̀◌꛱◌̕b; à◌֮◌꛱◌̕b; a◌֮◌̀◌꛱◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BAMUM COMBINING MARK TUKWENTIS, LATIN SMALL LETTER B
+0061 A6F1 0315 0300 05AE 0062;0061 05AE A6F1 0300 0315 0062;0061 05AE A6F1 0300 0315 0062;0061 05AE A6F1 0300 0315 0062;0061 05AE A6F1 0300 0315 0062; # (a◌꛱◌̕◌̀◌֮b; a◌֮◌꛱◌̀◌̕b; a◌֮◌꛱◌̀◌̕b; a◌֮◌꛱◌̀◌̕b; a◌֮◌꛱◌̀◌̕b; ) LATIN SMALL LETTER A, BAMUM COMBINING MARK TUKWENTIS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B0 094D 3099 A806 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œê †b; a◌゙◌à¥â—Œê †â—ŒÖ°b; a◌゙◌à¥â—Œê †â—ŒÖ°b; a◌゙◌à¥â—Œê †â—ŒÖ°b; a◌゙◌à¥â—Œê †â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, SYLOTI NAGRI SIGN HASANTA, LATIN SMALL LETTER B
+0061 A806 05B0 094D 3099 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062; # (a◌꠆◌ְ◌à¥â—Œã‚™b; a◌゙◌꠆◌à¥â—ŒÖ°b; a◌゙◌꠆◌à¥â—ŒÖ°b; a◌゙◌꠆◌à¥â—ŒÖ°b; a◌゙◌꠆◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, SYLOTI NAGRI SIGN HASANTA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 A8C4 0062;0061 3099 094D A8C4 05B0 0062;0061 3099 094D A8C4 05B0 0062;0061 3099 094D A8C4 05B0 0062;0061 3099 094D A8C4 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œê£„b; a◌゙◌à¥â—Œê£„◌ְb; a◌゙◌à¥â—Œê£„◌ְb; a◌゙◌à¥â—Œê£„◌ְb; a◌゙◌à¥â—Œê£„◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, SAURASHTRA SIGN VIRAMA, LATIN SMALL LETTER B
+0061 A8C4 05B0 094D 3099 0062;0061 3099 A8C4 094D 05B0 0062;0061 3099 A8C4 094D 05B0 0062;0061 3099 A8C4 094D 05B0 0062;0061 3099 A8C4 094D 05B0 0062; # (a◌꣄◌ְ◌à¥â—Œã‚™b; a◌゙◌꣄◌à¥â—ŒÖ°b; a◌゙◌꣄◌à¥â—ŒÖ°b; a◌゙◌꣄◌à¥â—ŒÖ°b; a◌゙◌꣄◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, SAURASHTRA SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8E0 0062;00E0 05AE A8E0 0315 0062;0061 05AE 0300 A8E0 0315 0062;00E0 05AE A8E0 0315 0062;0061 05AE 0300 A8E0 0315 0062; # (a◌̕◌̀◌֮◌꣠b; à◌֮◌꣠◌̕b; a◌֮◌̀◌꣠◌̕b; à◌֮◌꣠◌̕b; a◌֮◌̀◌꣠◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI DIGIT ZERO, LATIN SMALL LETTER B
+0061 A8E0 0315 0300 05AE 0062;0061 05AE A8E0 0300 0315 0062;0061 05AE A8E0 0300 0315 0062;0061 05AE A8E0 0300 0315 0062;0061 05AE A8E0 0300 0315 0062; # (a◌꣠◌̕◌̀◌֮b; a◌֮◌꣠◌̀◌̕b; a◌֮◌꣠◌̀◌̕b; a◌֮◌꣠◌̀◌̕b; a◌֮◌꣠◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI DIGIT ZERO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8E1 0062;00E0 05AE A8E1 0315 0062;0061 05AE 0300 A8E1 0315 0062;00E0 05AE A8E1 0315 0062;0061 05AE 0300 A8E1 0315 0062; # (a◌̕◌̀◌֮◌꣡b; à◌֮◌꣡◌̕b; a◌֮◌̀◌꣡◌̕b; à◌֮◌꣡◌̕b; a◌֮◌̀◌꣡◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI DIGIT ONE, LATIN SMALL LETTER B
+0061 A8E1 0315 0300 05AE 0062;0061 05AE A8E1 0300 0315 0062;0061 05AE A8E1 0300 0315 0062;0061 05AE A8E1 0300 0315 0062;0061 05AE A8E1 0300 0315 0062; # (a◌꣡◌̕◌̀◌֮b; a◌֮◌꣡◌̀◌̕b; a◌֮◌꣡◌̀◌̕b; a◌֮◌꣡◌̀◌̕b; a◌֮◌꣡◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI DIGIT ONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8E2 0062;00E0 05AE A8E2 0315 0062;0061 05AE 0300 A8E2 0315 0062;00E0 05AE A8E2 0315 0062;0061 05AE 0300 A8E2 0315 0062; # (a◌̕◌̀◌֮◌꣢b; à◌֮◌꣢◌̕b; a◌֮◌̀◌꣢◌̕b; à◌֮◌꣢◌̕b; a◌֮◌̀◌꣢◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI DIGIT TWO, LATIN SMALL LETTER B
+0061 A8E2 0315 0300 05AE 0062;0061 05AE A8E2 0300 0315 0062;0061 05AE A8E2 0300 0315 0062;0061 05AE A8E2 0300 0315 0062;0061 05AE A8E2 0300 0315 0062; # (a◌꣢◌̕◌̀◌֮b; a◌֮◌꣢◌̀◌̕b; a◌֮◌꣢◌̀◌̕b; a◌֮◌꣢◌̀◌̕b; a◌֮◌꣢◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI DIGIT TWO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8E3 0062;00E0 05AE A8E3 0315 0062;0061 05AE 0300 A8E3 0315 0062;00E0 05AE A8E3 0315 0062;0061 05AE 0300 A8E3 0315 0062; # (a◌̕◌̀◌֮◌꣣b; à◌֮◌꣣◌̕b; a◌֮◌̀◌꣣◌̕b; à◌֮◌꣣◌̕b; a◌֮◌̀◌꣣◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI DIGIT THREE, LATIN SMALL LETTER B
+0061 A8E3 0315 0300 05AE 0062;0061 05AE A8E3 0300 0315 0062;0061 05AE A8E3 0300 0315 0062;0061 05AE A8E3 0300 0315 0062;0061 05AE A8E3 0300 0315 0062; # (a◌꣣◌̕◌̀◌֮b; a◌֮◌꣣◌̀◌̕b; a◌֮◌꣣◌̀◌̕b; a◌֮◌꣣◌̀◌̕b; a◌֮◌꣣◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI DIGIT THREE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8E4 0062;00E0 05AE A8E4 0315 0062;0061 05AE 0300 A8E4 0315 0062;00E0 05AE A8E4 0315 0062;0061 05AE 0300 A8E4 0315 0062; # (a◌̕◌̀◌֮◌꣤b; à◌֮◌꣤◌̕b; a◌֮◌̀◌꣤◌̕b; à◌֮◌꣤◌̕b; a◌֮◌̀◌꣤◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI DIGIT FOUR, LATIN SMALL LETTER B
+0061 A8E4 0315 0300 05AE 0062;0061 05AE A8E4 0300 0315 0062;0061 05AE A8E4 0300 0315 0062;0061 05AE A8E4 0300 0315 0062;0061 05AE A8E4 0300 0315 0062; # (a◌꣤◌̕◌̀◌֮b; a◌֮◌꣤◌̀◌̕b; a◌֮◌꣤◌̀◌̕b; a◌֮◌꣤◌̀◌̕b; a◌֮◌꣤◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI DIGIT FOUR, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8E5 0062;00E0 05AE A8E5 0315 0062;0061 05AE 0300 A8E5 0315 0062;00E0 05AE A8E5 0315 0062;0061 05AE 0300 A8E5 0315 0062; # (a◌̕◌̀◌֮◌꣥b; à◌֮◌꣥◌̕b; a◌֮◌̀◌꣥◌̕b; à◌֮◌꣥◌̕b; a◌֮◌̀◌꣥◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI DIGIT FIVE, LATIN SMALL LETTER B
+0061 A8E5 0315 0300 05AE 0062;0061 05AE A8E5 0300 0315 0062;0061 05AE A8E5 0300 0315 0062;0061 05AE A8E5 0300 0315 0062;0061 05AE A8E5 0300 0315 0062; # (a◌꣥◌̕◌̀◌֮b; a◌֮◌꣥◌̀◌̕b; a◌֮◌꣥◌̀◌̕b; a◌֮◌꣥◌̀◌̕b; a◌֮◌꣥◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI DIGIT FIVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8E6 0062;00E0 05AE A8E6 0315 0062;0061 05AE 0300 A8E6 0315 0062;00E0 05AE A8E6 0315 0062;0061 05AE 0300 A8E6 0315 0062; # (a◌̕◌̀◌֮◌꣦b; à◌֮◌꣦◌̕b; a◌֮◌̀◌꣦◌̕b; à◌֮◌꣦◌̕b; a◌֮◌̀◌꣦◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI DIGIT SIX, LATIN SMALL LETTER B
+0061 A8E6 0315 0300 05AE 0062;0061 05AE A8E6 0300 0315 0062;0061 05AE A8E6 0300 0315 0062;0061 05AE A8E6 0300 0315 0062;0061 05AE A8E6 0300 0315 0062; # (a◌꣦◌̕◌̀◌֮b; a◌֮◌꣦◌̀◌̕b; a◌֮◌꣦◌̀◌̕b; a◌֮◌꣦◌̀◌̕b; a◌֮◌꣦◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI DIGIT SIX, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8E7 0062;00E0 05AE A8E7 0315 0062;0061 05AE 0300 A8E7 0315 0062;00E0 05AE A8E7 0315 0062;0061 05AE 0300 A8E7 0315 0062; # (a◌̕◌̀◌֮◌꣧b; à◌֮◌꣧◌̕b; a◌֮◌̀◌꣧◌̕b; à◌֮◌꣧◌̕b; a◌֮◌̀◌꣧◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI DIGIT SEVEN, LATIN SMALL LETTER B
+0061 A8E7 0315 0300 05AE 0062;0061 05AE A8E7 0300 0315 0062;0061 05AE A8E7 0300 0315 0062;0061 05AE A8E7 0300 0315 0062;0061 05AE A8E7 0300 0315 0062; # (a◌꣧◌̕◌̀◌֮b; a◌֮◌꣧◌̀◌̕b; a◌֮◌꣧◌̀◌̕b; a◌֮◌꣧◌̀◌̕b; a◌֮◌꣧◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI DIGIT SEVEN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8E8 0062;00E0 05AE A8E8 0315 0062;0061 05AE 0300 A8E8 0315 0062;00E0 05AE A8E8 0315 0062;0061 05AE 0300 A8E8 0315 0062; # (a◌̕◌̀◌֮◌꣨b; à◌֮◌꣨◌̕b; a◌֮◌̀◌꣨◌̕b; à◌֮◌꣨◌̕b; a◌֮◌̀◌꣨◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI DIGIT EIGHT, LATIN SMALL LETTER B
+0061 A8E8 0315 0300 05AE 0062;0061 05AE A8E8 0300 0315 0062;0061 05AE A8E8 0300 0315 0062;0061 05AE A8E8 0300 0315 0062;0061 05AE A8E8 0300 0315 0062; # (a◌꣨◌̕◌̀◌֮b; a◌֮◌꣨◌̀◌̕b; a◌֮◌꣨◌̀◌̕b; a◌֮◌꣨◌̀◌̕b; a◌֮◌꣨◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI DIGIT EIGHT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8E9 0062;00E0 05AE A8E9 0315 0062;0061 05AE 0300 A8E9 0315 0062;00E0 05AE A8E9 0315 0062;0061 05AE 0300 A8E9 0315 0062; # (a◌̕◌̀◌֮◌꣩b; à◌֮◌꣩◌̕b; a◌֮◌̀◌꣩◌̕b; à◌֮◌꣩◌̕b; a◌֮◌̀◌꣩◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI DIGIT NINE, LATIN SMALL LETTER B
+0061 A8E9 0315 0300 05AE 0062;0061 05AE A8E9 0300 0315 0062;0061 05AE A8E9 0300 0315 0062;0061 05AE A8E9 0300 0315 0062;0061 05AE A8E9 0300 0315 0062; # (a◌꣩◌̕◌̀◌֮b; a◌֮◌꣩◌̀◌̕b; a◌֮◌꣩◌̀◌̕b; a◌֮◌꣩◌̀◌̕b; a◌֮◌꣩◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI DIGIT NINE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8EA 0062;00E0 05AE A8EA 0315 0062;0061 05AE 0300 A8EA 0315 0062;00E0 05AE A8EA 0315 0062;0061 05AE 0300 A8EA 0315 0062; # (a◌̕◌̀◌֮◌꣪b; à◌֮◌꣪◌̕b; a◌֮◌̀◌꣪◌̕b; à◌֮◌꣪◌̕b; a◌֮◌̀◌꣪◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI LETTER A, LATIN SMALL LETTER B
+0061 A8EA 0315 0300 05AE 0062;0061 05AE A8EA 0300 0315 0062;0061 05AE A8EA 0300 0315 0062;0061 05AE A8EA 0300 0315 0062;0061 05AE A8EA 0300 0315 0062; # (a◌꣪◌̕◌̀◌֮b; a◌֮◌꣪◌̀◌̕b; a◌֮◌꣪◌̀◌̕b; a◌֮◌꣪◌̀◌̕b; a◌֮◌꣪◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8EB 0062;00E0 05AE A8EB 0315 0062;0061 05AE 0300 A8EB 0315 0062;00E0 05AE A8EB 0315 0062;0061 05AE 0300 A8EB 0315 0062; # (a◌̕◌̀◌֮◌꣫b; à◌֮◌꣫◌̕b; a◌֮◌̀◌꣫◌̕b; à◌֮◌꣫◌̕b; a◌֮◌̀◌꣫◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI LETTER U, LATIN SMALL LETTER B
+0061 A8EB 0315 0300 05AE 0062;0061 05AE A8EB 0300 0315 0062;0061 05AE A8EB 0300 0315 0062;0061 05AE A8EB 0300 0315 0062;0061 05AE A8EB 0300 0315 0062; # (a◌꣫◌̕◌̀◌֮b; a◌֮◌꣫◌̀◌̕b; a◌֮◌꣫◌̀◌̕b; a◌֮◌꣫◌̀◌̕b; a◌֮◌꣫◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI LETTER U, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8EC 0062;00E0 05AE A8EC 0315 0062;0061 05AE 0300 A8EC 0315 0062;00E0 05AE A8EC 0315 0062;0061 05AE 0300 A8EC 0315 0062; # (a◌̕◌̀◌֮◌꣬b; à◌֮◌꣬◌̕b; a◌֮◌̀◌꣬◌̕b; à◌֮◌꣬◌̕b; a◌֮◌̀◌꣬◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI LETTER KA, LATIN SMALL LETTER B
+0061 A8EC 0315 0300 05AE 0062;0061 05AE A8EC 0300 0315 0062;0061 05AE A8EC 0300 0315 0062;0061 05AE A8EC 0300 0315 0062;0061 05AE A8EC 0300 0315 0062; # (a◌꣬◌̕◌̀◌֮b; a◌֮◌꣬◌̀◌̕b; a◌֮◌꣬◌̀◌̕b; a◌֮◌꣬◌̀◌̕b; a◌֮◌꣬◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI LETTER KA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8ED 0062;00E0 05AE A8ED 0315 0062;0061 05AE 0300 A8ED 0315 0062;00E0 05AE A8ED 0315 0062;0061 05AE 0300 A8ED 0315 0062; # (a◌̕◌̀◌֮◌꣭b; à◌֮◌꣭◌̕b; a◌֮◌̀◌꣭◌̕b; à◌֮◌꣭◌̕b; a◌֮◌̀◌꣭◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI LETTER NA, LATIN SMALL LETTER B
+0061 A8ED 0315 0300 05AE 0062;0061 05AE A8ED 0300 0315 0062;0061 05AE A8ED 0300 0315 0062;0061 05AE A8ED 0300 0315 0062;0061 05AE A8ED 0300 0315 0062; # (a◌꣭◌̕◌̀◌֮b; a◌֮◌꣭◌̀◌̕b; a◌֮◌꣭◌̀◌̕b; a◌֮◌꣭◌̀◌̕b; a◌֮◌꣭◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI LETTER NA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8EE 0062;00E0 05AE A8EE 0315 0062;0061 05AE 0300 A8EE 0315 0062;00E0 05AE A8EE 0315 0062;0061 05AE 0300 A8EE 0315 0062; # (a◌̕◌̀◌֮◌꣮b; à◌֮◌꣮◌̕b; a◌֮◌̀◌꣮◌̕b; à◌֮◌꣮◌̕b; a◌֮◌̀◌꣮◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI LETTER PA, LATIN SMALL LETTER B
+0061 A8EE 0315 0300 05AE 0062;0061 05AE A8EE 0300 0315 0062;0061 05AE A8EE 0300 0315 0062;0061 05AE A8EE 0300 0315 0062;0061 05AE A8EE 0300 0315 0062; # (a◌꣮◌̕◌̀◌֮b; a◌֮◌꣮◌̀◌̕b; a◌֮◌꣮◌̀◌̕b; a◌֮◌꣮◌̀◌̕b; a◌֮◌꣮◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI LETTER PA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8EF 0062;00E0 05AE A8EF 0315 0062;0061 05AE 0300 A8EF 0315 0062;00E0 05AE A8EF 0315 0062;0061 05AE 0300 A8EF 0315 0062; # (a◌̕◌̀◌֮◌꣯b; à◌֮◌꣯◌̕b; a◌֮◌̀◌꣯◌̕b; à◌֮◌꣯◌̕b; a◌֮◌̀◌꣯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI LETTER RA, LATIN SMALL LETTER B
+0061 A8EF 0315 0300 05AE 0062;0061 05AE A8EF 0300 0315 0062;0061 05AE A8EF 0300 0315 0062;0061 05AE A8EF 0300 0315 0062;0061 05AE A8EF 0300 0315 0062; # (a◌꣯◌̕◌̀◌֮b; a◌֮◌꣯◌̀◌̕b; a◌֮◌꣯◌̀◌̕b; a◌֮◌꣯◌̀◌̕b; a◌֮◌꣯◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI LETTER RA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8F0 0062;00E0 05AE A8F0 0315 0062;0061 05AE 0300 A8F0 0315 0062;00E0 05AE A8F0 0315 0062;0061 05AE 0300 A8F0 0315 0062; # (a◌̕◌̀◌֮◌꣰b; à◌֮◌꣰◌̕b; a◌֮◌̀◌꣰◌̕b; à◌֮◌꣰◌̕b; a◌֮◌̀◌꣰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI LETTER VI, LATIN SMALL LETTER B
+0061 A8F0 0315 0300 05AE 0062;0061 05AE A8F0 0300 0315 0062;0061 05AE A8F0 0300 0315 0062;0061 05AE A8F0 0300 0315 0062;0061 05AE A8F0 0300 0315 0062; # (a◌꣰◌̕◌̀◌֮b; a◌֮◌꣰◌̀◌̕b; a◌֮◌꣰◌̀◌̕b; a◌֮◌꣰◌̀◌̕b; a◌֮◌꣰◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI LETTER VI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE A8F1 0062;00E0 05AE A8F1 0315 0062;0061 05AE 0300 A8F1 0315 0062;00E0 05AE A8F1 0315 0062;0061 05AE 0300 A8F1 0315 0062; # (a◌̕◌̀◌֮◌꣱b; à◌֮◌꣱◌̕b; a◌֮◌̀◌꣱◌̕b; à◌֮◌꣱◌̕b; a◌֮◌̀◌꣱◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DEVANAGARI SIGN AVAGRAHA, LATIN SMALL LETTER B
+0061 A8F1 0315 0300 05AE 0062;0061 05AE A8F1 0300 0315 0062;0061 05AE A8F1 0300 0315 0062;0061 05AE A8F1 0300 0315 0062;0061 05AE A8F1 0300 0315 0062; # (a◌꣱◌̕◌̀◌֮b; a◌֮◌꣱◌̀◌̕b; a◌֮◌꣱◌̀◌̕b; a◌֮◌꣱◌̀◌̕b; a◌֮◌꣱◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DEVANAGARI SIGN AVAGRAHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A A92B 0062;0061 302A 0316 A92B 059A 0062;0061 302A 0316 A92B 059A 0062;0061 302A 0316 A92B 059A 0062;0061 302A 0316 A92B 059A 0062; # (a◌֚◌̖◌〪◌꤫b; a◌〪◌̖◌꤫◌֚b; a◌〪◌̖◌꤫◌֚b; a◌〪◌̖◌꤫◌֚b; a◌〪◌̖◌꤫◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, KAYAH LI TONE PLOPHU, LATIN SMALL LETTER B
+0061 A92B 059A 0316 302A 0062;0061 302A A92B 0316 059A 0062;0061 302A A92B 0316 059A 0062;0061 302A A92B 0316 059A 0062;0061 302A A92B 0316 059A 0062; # (a◌꤫◌֚◌̖◌〪b; a◌〪◌꤫◌̖◌֚b; a◌〪◌꤫◌̖◌֚b; a◌〪◌꤫◌̖◌֚b; a◌〪◌꤫◌̖◌֚b; ) LATIN SMALL LETTER A, KAYAH LI TONE PLOPHU, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A A92C 0062;0061 302A 0316 A92C 059A 0062;0061 302A 0316 A92C 059A 0062;0061 302A 0316 A92C 059A 0062;0061 302A 0316 A92C 059A 0062; # (a◌֚◌̖◌〪◌꤬b; a◌〪◌̖◌꤬◌֚b; a◌〪◌̖◌꤬◌֚b; a◌〪◌̖◌꤬◌֚b; a◌〪◌̖◌꤬◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, KAYAH LI TONE CALYA, LATIN SMALL LETTER B
+0061 A92C 059A 0316 302A 0062;0061 302A A92C 0316 059A 0062;0061 302A A92C 0316 059A 0062;0061 302A A92C 0316 059A 0062;0061 302A A92C 0316 059A 0062; # (a◌꤬◌֚◌̖◌〪b; a◌〪◌꤬◌̖◌֚b; a◌〪◌꤬◌̖◌֚b; a◌〪◌꤬◌̖◌֚b; a◌〪◌꤬◌̖◌֚b; ) LATIN SMALL LETTER A, KAYAH LI TONE CALYA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A A92D 0062;0061 302A 0316 A92D 059A 0062;0061 302A 0316 A92D 059A 0062;0061 302A 0316 A92D 059A 0062;0061 302A 0316 A92D 059A 0062; # (a◌֚◌̖◌〪◌꤭b; a◌〪◌̖◌꤭◌֚b; a◌〪◌̖◌꤭◌֚b; a◌〪◌̖◌꤭◌֚b; a◌〪◌̖◌꤭◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, KAYAH LI TONE CALYA PLOPHU, LATIN SMALL LETTER B
+0061 A92D 059A 0316 302A 0062;0061 302A A92D 0316 059A 0062;0061 302A A92D 0316 059A 0062;0061 302A A92D 0316 059A 0062;0061 302A A92D 0316 059A 0062; # (a◌꤭◌֚◌̖◌〪b; a◌〪◌꤭◌̖◌֚b; a◌〪◌꤭◌̖◌֚b; a◌〪◌꤭◌̖◌֚b; a◌〪◌꤭◌̖◌֚b; ) LATIN SMALL LETTER A, KAYAH LI TONE CALYA PLOPHU, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 A953 0062;0061 3099 094D A953 05B0 0062;0061 3099 094D A953 05B0 0062;0061 3099 094D A953 05B0 0062;0061 3099 094D A953 05B0 0062; # (a◌ְ◌à¥â—Œã‚™ê¥“b; a◌゙◌à¥ê¥“◌ְb; a◌゙◌à¥ê¥“◌ְb; a◌゙◌à¥ê¥“◌ְb; a◌゙◌à¥ê¥“◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, REJANG VIRAMA, LATIN SMALL LETTER B
+0061 A953 05B0 094D 3099 0062;0061 3099 A953 094D 05B0 0062;0061 3099 A953 094D 05B0 0062;0061 3099 A953 094D 05B0 0062;0061 3099 A953 094D 05B0 0062; # (a꥓◌ְ◌à¥â—Œã‚™b; a◌゙꥓◌à¥â—ŒÖ°b; a◌゙꥓◌à¥â—ŒÖ°b; a◌゙꥓◌à¥â—ŒÖ°b; a◌゙꥓◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, REJANG VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 A9B3 0062;0061 0334 093C A9B3 3099 0062;0061 0334 093C A9B3 3099 0062;0061 0334 093C A9B3 3099 0062;0061 0334 093C A9B3 3099 0062; # (a◌゙◌़◌̴◌꦳b; a◌̴◌़◌꦳◌゙b; a◌̴◌़◌꦳◌゙b; a◌̴◌़◌꦳◌゙b; a◌̴◌़◌꦳◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, JAVANESE SIGN CECAK TELU, LATIN SMALL LETTER B
+0061 A9B3 3099 093C 0334 0062;0061 0334 A9B3 093C 3099 0062;0061 0334 A9B3 093C 3099 0062;0061 0334 A9B3 093C 3099 0062;0061 0334 A9B3 093C 3099 0062; # (a◌꦳◌゙◌़◌̴b; a◌̴◌꦳◌़◌゙b; a◌̴◌꦳◌़◌゙b; a◌̴◌꦳◌़◌゙b; a◌̴◌꦳◌़◌゙b; ) LATIN SMALL LETTER A, JAVANESE SIGN CECAK TELU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 A9C0 0062;0061 3099 094D A9C0 05B0 0062;0061 3099 094D A9C0 05B0 0062;0061 3099 094D A9C0 05B0 0062;0061 3099 094D A9C0 05B0 0062; # (a◌ְ◌à¥â—Œã‚™ê§€b; a◌゙◌à¥ê§€â—ŒÖ°b; a◌゙◌à¥ê§€â—ŒÖ°b; a◌゙◌à¥ê§€â—ŒÖ°b; a◌゙◌à¥ê§€â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, JAVANESE PANGKON, LATIN SMALL LETTER B
+0061 A9C0 05B0 094D 3099 0062;0061 3099 A9C0 094D 05B0 0062;0061 3099 A9C0 094D 05B0 0062;0061 3099 A9C0 094D 05B0 0062;0061 3099 A9C0 094D 05B0 0062; # (a꧀◌ְ◌à¥â—Œã‚™b; a◌゙꧀◌à¥â—ŒÖ°b; a◌゙꧀◌à¥â—ŒÖ°b; a◌゙꧀◌à¥â—ŒÖ°b; a◌゙꧀◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, JAVANESE PANGKON, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE AAB0 0062;00E0 05AE AAB0 0315 0062;0061 05AE 0300 AAB0 0315 0062;00E0 05AE AAB0 0315 0062;0061 05AE 0300 AAB0 0315 0062; # (a◌̕◌̀◌֮◌ꪰb; à◌֮◌ꪰ◌̕b; a◌֮◌̀◌ꪰ◌̕b; à◌֮◌ꪰ◌̕b; a◌֮◌̀◌ꪰ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI VIET MAI KANG, LATIN SMALL LETTER B
+0061 AAB0 0315 0300 05AE 0062;0061 05AE AAB0 0300 0315 0062;0061 05AE AAB0 0300 0315 0062;0061 05AE AAB0 0300 0315 0062;0061 05AE AAB0 0300 0315 0062; # (a◌ꪰ◌̕◌̀◌֮b; a◌֮◌ꪰ◌̀◌̕b; a◌֮◌ꪰ◌̀◌̕b; a◌֮◌ꪰ◌̀◌̕b; a◌֮◌ꪰ◌̀◌̕b; ) LATIN SMALL LETTER A, TAI VIET MAI KANG, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE AAB2 0062;00E0 05AE AAB2 0315 0062;0061 05AE 0300 AAB2 0315 0062;00E0 05AE AAB2 0315 0062;0061 05AE 0300 AAB2 0315 0062; # (a◌̕◌̀◌֮◌ꪲb; à◌֮◌ꪲ◌̕b; a◌֮◌̀◌ꪲ◌̕b; à◌֮◌ꪲ◌̕b; a◌֮◌̀◌ꪲ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI VIET VOWEL I, LATIN SMALL LETTER B
+0061 AAB2 0315 0300 05AE 0062;0061 05AE AAB2 0300 0315 0062;0061 05AE AAB2 0300 0315 0062;0061 05AE AAB2 0300 0315 0062;0061 05AE AAB2 0300 0315 0062; # (a◌ꪲ◌̕◌̀◌֮b; a◌֮◌ꪲ◌̀◌̕b; a◌֮◌ꪲ◌̀◌̕b; a◌֮◌ꪲ◌̀◌̕b; a◌֮◌ꪲ◌̀◌̕b; ) LATIN SMALL LETTER A, TAI VIET VOWEL I, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE AAB3 0062;00E0 05AE AAB3 0315 0062;0061 05AE 0300 AAB3 0315 0062;00E0 05AE AAB3 0315 0062;0061 05AE 0300 AAB3 0315 0062; # (a◌̕◌̀◌֮◌ꪳb; à◌֮◌ꪳ◌̕b; a◌֮◌̀◌ꪳ◌̕b; à◌֮◌ꪳ◌̕b; a◌֮◌̀◌ꪳ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI VIET VOWEL UE, LATIN SMALL LETTER B
+0061 AAB3 0315 0300 05AE 0062;0061 05AE AAB3 0300 0315 0062;0061 05AE AAB3 0300 0315 0062;0061 05AE AAB3 0300 0315 0062;0061 05AE AAB3 0300 0315 0062; # (a◌ꪳ◌̕◌̀◌֮b; a◌֮◌ꪳ◌̀◌̕b; a◌֮◌ꪳ◌̀◌̕b; a◌֮◌ꪳ◌̀◌̕b; a◌֮◌ꪳ◌̀◌̕b; ) LATIN SMALL LETTER A, TAI VIET VOWEL UE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A AAB4 0062;0061 302A 0316 AAB4 059A 0062;0061 302A 0316 AAB4 059A 0062;0061 302A 0316 AAB4 059A 0062;0061 302A 0316 AAB4 059A 0062; # (a◌֚◌̖◌〪◌ꪴb; a◌〪◌̖◌ꪴ◌֚b; a◌〪◌̖◌ꪴ◌֚b; a◌〪◌̖◌ꪴ◌֚b; a◌〪◌̖◌ꪴ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TAI VIET VOWEL U, LATIN SMALL LETTER B
+0061 AAB4 059A 0316 302A 0062;0061 302A AAB4 0316 059A 0062;0061 302A AAB4 0316 059A 0062;0061 302A AAB4 0316 059A 0062;0061 302A AAB4 0316 059A 0062; # (a◌ꪴ◌֚◌̖◌〪b; a◌〪◌ꪴ◌̖◌֚b; a◌〪◌ꪴ◌̖◌֚b; a◌〪◌ꪴ◌̖◌֚b; a◌〪◌ꪴ◌̖◌֚b; ) LATIN SMALL LETTER A, TAI VIET VOWEL U, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE AAB7 0062;00E0 05AE AAB7 0315 0062;0061 05AE 0300 AAB7 0315 0062;00E0 05AE AAB7 0315 0062;0061 05AE 0300 AAB7 0315 0062; # (a◌̕◌̀◌֮◌ꪷb; à◌֮◌ꪷ◌̕b; a◌֮◌̀◌ꪷ◌̕b; à◌֮◌ꪷ◌̕b; a◌֮◌̀◌ꪷ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI VIET MAI KHIT, LATIN SMALL LETTER B
+0061 AAB7 0315 0300 05AE 0062;0061 05AE AAB7 0300 0315 0062;0061 05AE AAB7 0300 0315 0062;0061 05AE AAB7 0300 0315 0062;0061 05AE AAB7 0300 0315 0062; # (a◌ꪷ◌̕◌̀◌֮b; a◌֮◌ꪷ◌̀◌̕b; a◌֮◌ꪷ◌̀◌̕b; a◌֮◌ꪷ◌̀◌̕b; a◌֮◌ꪷ◌̀◌̕b; ) LATIN SMALL LETTER A, TAI VIET MAI KHIT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE AAB8 0062;00E0 05AE AAB8 0315 0062;0061 05AE 0300 AAB8 0315 0062;00E0 05AE AAB8 0315 0062;0061 05AE 0300 AAB8 0315 0062; # (a◌̕◌̀◌֮◌ꪸb; à◌֮◌ꪸ◌̕b; a◌֮◌̀◌ꪸ◌̕b; à◌֮◌ꪸ◌̕b; a◌֮◌̀◌ꪸ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI VIET VOWEL IA, LATIN SMALL LETTER B
+0061 AAB8 0315 0300 05AE 0062;0061 05AE AAB8 0300 0315 0062;0061 05AE AAB8 0300 0315 0062;0061 05AE AAB8 0300 0315 0062;0061 05AE AAB8 0300 0315 0062; # (a◌ꪸ◌̕◌̀◌֮b; a◌֮◌ꪸ◌̀◌̕b; a◌֮◌ꪸ◌̀◌̕b; a◌֮◌ꪸ◌̀◌̕b; a◌֮◌ꪸ◌̀◌̕b; ) LATIN SMALL LETTER A, TAI VIET VOWEL IA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE AABE 0062;00E0 05AE AABE 0315 0062;0061 05AE 0300 AABE 0315 0062;00E0 05AE AABE 0315 0062;0061 05AE 0300 AABE 0315 0062; # (a◌̕◌̀◌֮◌ꪾb; à◌֮◌ꪾ◌̕b; a◌֮◌̀◌ꪾ◌̕b; à◌֮◌ꪾ◌̕b; a◌֮◌̀◌ꪾ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI VIET VOWEL AM, LATIN SMALL LETTER B
+0061 AABE 0315 0300 05AE 0062;0061 05AE AABE 0300 0315 0062;0061 05AE AABE 0300 0315 0062;0061 05AE AABE 0300 0315 0062;0061 05AE AABE 0300 0315 0062; # (a◌ꪾ◌̕◌̀◌֮b; a◌֮◌ꪾ◌̀◌̕b; a◌֮◌ꪾ◌̀◌̕b; a◌֮◌ꪾ◌̀◌̕b; a◌֮◌ꪾ◌̀◌̕b; ) LATIN SMALL LETTER A, TAI VIET VOWEL AM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE AABF 0062;00E0 05AE AABF 0315 0062;0061 05AE 0300 AABF 0315 0062;00E0 05AE AABF 0315 0062;0061 05AE 0300 AABF 0315 0062; # (a◌̕◌̀◌֮◌꪿b; à◌֮◌꪿◌̕b; a◌֮◌̀◌꪿◌̕b; à◌֮◌꪿◌̕b; a◌֮◌̀◌꪿◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI VIET TONE MAI EK, LATIN SMALL LETTER B
+0061 AABF 0315 0300 05AE 0062;0061 05AE AABF 0300 0315 0062;0061 05AE AABF 0300 0315 0062;0061 05AE AABF 0300 0315 0062;0061 05AE AABF 0300 0315 0062; # (a◌꪿◌̕◌̀◌֮b; a◌֮◌꪿◌̀◌̕b; a◌֮◌꪿◌̀◌̕b; a◌֮◌꪿◌̀◌̕b; a◌֮◌꪿◌̀◌̕b; ) LATIN SMALL LETTER A, TAI VIET TONE MAI EK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE AAC1 0062;00E0 05AE AAC1 0315 0062;0061 05AE 0300 AAC1 0315 0062;00E0 05AE AAC1 0315 0062;0061 05AE 0300 AAC1 0315 0062; # (a◌̕◌̀◌֮◌ê«b; à◌֮◌ê«â—ŒÌ•b; a◌֮◌̀◌ê«â—ŒÌ•b; à◌֮◌ê«â—ŒÌ•b; a◌֮◌̀◌ê«â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TAI VIET TONE MAI THO, LATIN SMALL LETTER B
+0061 AAC1 0315 0300 05AE 0062;0061 05AE AAC1 0300 0315 0062;0061 05AE AAC1 0300 0315 0062;0061 05AE AAC1 0300 0315 0062;0061 05AE AAC1 0300 0315 0062; # (aâ—Œê«â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ê«â—ŒÌ€â—ŒÌ•b; a◌֮◌ê«â—ŒÌ€â—ŒÌ•b; a◌֮◌ê«â—ŒÌ€â—ŒÌ•b; a◌֮◌ê«â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, TAI VIET TONE MAI THO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B0 094D 3099 AAF6 0062;0061 3099 094D AAF6 05B0 0062;0061 3099 094D AAF6 05B0 0062;0061 3099 094D AAF6 05B0 0062;0061 3099 094D AAF6 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œê«¶b; a◌゙◌à¥â—Œê«¶â—ŒÖ°b; a◌゙◌à¥â—Œê«¶â—ŒÖ°b; a◌゙◌à¥â—Œê«¶â—ŒÖ°b; a◌゙◌à¥â—Œê«¶â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, MEETEI MAYEK VIRAMA, LATIN SMALL LETTER B
+0061 AAF6 05B0 094D 3099 0062;0061 3099 AAF6 094D 05B0 0062;0061 3099 AAF6 094D 05B0 0062;0061 3099 AAF6 094D 05B0 0062;0061 3099 AAF6 094D 05B0 0062; # (a◌꫶◌ְ◌à¥â—Œã‚™b; a◌゙◌꫶◌à¥â—ŒÖ°b; a◌゙◌꫶◌à¥â—ŒÖ°b; a◌゙◌꫶◌à¥â—ŒÖ°b; a◌゙◌꫶◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, MEETEI MAYEK VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 ABED 0062;0061 3099 094D ABED 05B0 0062;0061 3099 094D ABED 05B0 0062;0061 3099 094D ABED 05B0 0062;0061 3099 094D ABED 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œê¯­b; a◌゙◌à¥â—Œê¯­â—ŒÖ°b; a◌゙◌à¥â—Œê¯­â—ŒÖ°b; a◌゙◌à¥â—Œê¯­â—ŒÖ°b; a◌゙◌à¥â—Œê¯­â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, MEETEI MAYEK APUN IYEK, LATIN SMALL LETTER B
+0061 ABED 05B0 094D 3099 0062;0061 3099 ABED 094D 05B0 0062;0061 3099 ABED 094D 05B0 0062;0061 3099 ABED 094D 05B0 0062;0061 3099 ABED 094D 05B0 0062; # (a◌꯭◌ְ◌à¥â—Œã‚™b; a◌゙◌꯭◌à¥â—ŒÖ°b; a◌゙◌꯭◌à¥â—ŒÖ°b; a◌゙◌꯭◌à¥â—ŒÖ°b; a◌゙◌꯭◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, MEETEI MAYEK APUN IYEK, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 064B FB1E 05C2 FB1E 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062; # (a◌ً◌ﬞ◌ׂ◌ﬞb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; ) LATIN SMALL LETTER A, ARABIC FATHATAN, HEBREW POINT JUDEO-SPANISH VARIKA, HEBREW POINT SIN DOT, HEBREW POINT JUDEO-SPANISH VARIKA, LATIN SMALL LETTER B
+0061 FB1E 064B FB1E 05C2 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062; # (a◌ﬞ◌ً◌ﬞ◌ׂb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; ) LATIN SMALL LETTER A, HEBREW POINT JUDEO-SPANISH VARIKA, ARABIC FATHATAN, HEBREW POINT JUDEO-SPANISH VARIKA, HEBREW POINT SIN DOT, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE20 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062; # (a◌̕◌̀◌֮◌︠b; à◌֮◌︠◌̕b; a◌֮◌̀◌︠◌̕b; à◌֮◌︠◌̕b; a◌֮◌̀◌︠◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LIGATURE LEFT HALF, LATIN SMALL LETTER B
+0061 FE20 0315 0300 05AE 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062; # (a◌︠◌̕◌̀◌֮b; a◌֮◌︠◌̀◌̕b; a◌֮◌︠◌̀◌̕b; a◌֮◌︠◌̀◌̕b; a◌֮◌︠◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LIGATURE LEFT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE21 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062; # (a◌̕◌̀◌֮◌︡b; à◌֮◌︡◌̕b; a◌֮◌̀◌︡◌̕b; à◌֮◌︡◌̕b; a◌֮◌̀◌︡◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LIGATURE RIGHT HALF, LATIN SMALL LETTER B
+0061 FE21 0315 0300 05AE 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062; # (a◌︡◌̕◌̀◌֮b; a◌֮◌︡◌̀◌̕b; a◌֮◌︡◌̀◌̕b; a◌֮◌︡◌̀◌̕b; a◌֮◌︡◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LIGATURE RIGHT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE22 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062; # (a◌̕◌̀◌֮◌︢b; à◌֮◌︢◌̕b; a◌֮◌̀◌︢◌̕b; à◌֮◌︢◌̕b; a◌֮◌̀◌︢◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE TILDE LEFT HALF, LATIN SMALL LETTER B
+0061 FE22 0315 0300 05AE 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062; # (a◌︢◌̕◌̀◌֮b; a◌֮◌︢◌̀◌̕b; a◌֮◌︢◌̀◌̕b; a◌֮◌︢◌̀◌̕b; a◌֮◌︢◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE TILDE LEFT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE23 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062; # (a◌̕◌̀◌֮◌︣b; à◌֮◌︣◌̕b; a◌֮◌̀◌︣◌̕b; à◌֮◌︣◌̕b; a◌֮◌̀◌︣◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE TILDE RIGHT HALF, LATIN SMALL LETTER B
+0061 FE23 0315 0300 05AE 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062; # (a◌︣◌̕◌̀◌֮b; a◌֮◌︣◌̀◌̕b; a◌֮◌︣◌̀◌̕b; a◌֮◌︣◌̀◌̕b; a◌֮◌︣◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE TILDE RIGHT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE24 0062;00E0 05AE FE24 0315 0062;0061 05AE 0300 FE24 0315 0062;00E0 05AE FE24 0315 0062;0061 05AE 0300 FE24 0315 0062; # (a◌̕◌̀◌֮◌︤b; à◌֮◌︤◌̕b; a◌֮◌̀◌︤◌̕b; à◌֮◌︤◌̕b; a◌֮◌̀◌︤◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING MACRON LEFT HALF, LATIN SMALL LETTER B
+0061 FE24 0315 0300 05AE 0062;0061 05AE FE24 0300 0315 0062;0061 05AE FE24 0300 0315 0062;0061 05AE FE24 0300 0315 0062;0061 05AE FE24 0300 0315 0062; # (a◌︤◌̕◌̀◌֮b; a◌֮◌︤◌̀◌̕b; a◌֮◌︤◌̀◌̕b; a◌֮◌︤◌̀◌̕b; a◌֮◌︤◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING MACRON LEFT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE25 0062;00E0 05AE FE25 0315 0062;0061 05AE 0300 FE25 0315 0062;00E0 05AE FE25 0315 0062;0061 05AE 0300 FE25 0315 0062; # (a◌̕◌̀◌֮◌︥b; à◌֮◌︥◌̕b; a◌֮◌̀◌︥◌̕b; à◌֮◌︥◌̕b; a◌֮◌̀◌︥◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING MACRON RIGHT HALF, LATIN SMALL LETTER B
+0061 FE25 0315 0300 05AE 0062;0061 05AE FE25 0300 0315 0062;0061 05AE FE25 0300 0315 0062;0061 05AE FE25 0300 0315 0062;0061 05AE FE25 0300 0315 0062; # (a◌︥◌̕◌̀◌֮b; a◌֮◌︥◌̀◌̕b; a◌֮◌︥◌̀◌̕b; a◌֮◌︥◌̀◌̕b; a◌֮◌︥◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING MACRON RIGHT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE26 0062;00E0 05AE FE26 0315 0062;0061 05AE 0300 FE26 0315 0062;00E0 05AE FE26 0315 0062;0061 05AE 0300 FE26 0315 0062; # (a◌̕◌̀◌֮◌︦b; à◌֮◌︦◌̕b; a◌֮◌̀◌︦◌̕b; à◌֮◌︦◌̕b; a◌֮◌̀◌︦◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CONJOINING MACRON, LATIN SMALL LETTER B
+0061 FE26 0315 0300 05AE 0062;0061 05AE FE26 0300 0315 0062;0061 05AE FE26 0300 0315 0062;0061 05AE FE26 0300 0315 0062;0061 05AE FE26 0300 0315 0062; # (a◌︦◌̕◌̀◌֮b; a◌֮◌︦◌̀◌̕b; a◌֮◌︦◌̀◌̕b; a◌֮◌︦◌̀◌̕b; a◌֮◌︦◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CONJOINING MACRON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A FE27 0062;0061 302A 0316 FE27 059A 0062;0061 302A 0316 FE27 059A 0062;0061 302A 0316 FE27 059A 0062;0061 302A 0316 FE27 059A 0062; # (a◌֚◌̖◌〪◌︧b; a◌〪◌̖◌︧◌֚b; a◌〪◌̖◌︧◌֚b; a◌〪◌̖◌︧◌֚b; a◌〪◌̖◌︧◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LIGATURE LEFT HALF BELOW, LATIN SMALL LETTER B
+0061 FE27 059A 0316 302A 0062;0061 302A FE27 0316 059A 0062;0061 302A FE27 0316 059A 0062;0061 302A FE27 0316 059A 0062;0061 302A FE27 0316 059A 0062; # (a◌︧◌֚◌̖◌〪b; a◌〪◌︧◌̖◌֚b; a◌〪◌︧◌̖◌֚b; a◌〪◌︧◌̖◌֚b; a◌〪◌︧◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LIGATURE LEFT HALF BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A FE28 0062;0061 302A 0316 FE28 059A 0062;0061 302A 0316 FE28 059A 0062;0061 302A 0316 FE28 059A 0062;0061 302A 0316 FE28 059A 0062; # (a◌֚◌̖◌〪◌︨b; a◌〪◌̖◌︨◌֚b; a◌〪◌̖◌︨◌֚b; a◌〪◌̖◌︨◌֚b; a◌〪◌̖◌︨◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LIGATURE RIGHT HALF BELOW, LATIN SMALL LETTER B
+0061 FE28 059A 0316 302A 0062;0061 302A FE28 0316 059A 0062;0061 302A FE28 0316 059A 0062;0061 302A FE28 0316 059A 0062;0061 302A FE28 0316 059A 0062; # (a◌︨◌֚◌̖◌〪b; a◌〪◌︨◌̖◌֚b; a◌〪◌︨◌̖◌֚b; a◌〪◌︨◌̖◌֚b; a◌〪◌︨◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LIGATURE RIGHT HALF BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A FE29 0062;0061 302A 0316 FE29 059A 0062;0061 302A 0316 FE29 059A 0062;0061 302A 0316 FE29 059A 0062;0061 302A 0316 FE29 059A 0062; # (a◌֚◌̖◌〪◌︩b; a◌〪◌̖◌︩◌֚b; a◌〪◌̖◌︩◌֚b; a◌〪◌̖◌︩◌֚b; a◌〪◌̖◌︩◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING TILDE LEFT HALF BELOW, LATIN SMALL LETTER B
+0061 FE29 059A 0316 302A 0062;0061 302A FE29 0316 059A 0062;0061 302A FE29 0316 059A 0062;0061 302A FE29 0316 059A 0062;0061 302A FE29 0316 059A 0062; # (a◌︩◌֚◌̖◌〪b; a◌〪◌︩◌̖◌֚b; a◌〪◌︩◌̖◌֚b; a◌〪◌︩◌̖◌֚b; a◌〪◌︩◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING TILDE LEFT HALF BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A FE2A 0062;0061 302A 0316 FE2A 059A 0062;0061 302A 0316 FE2A 059A 0062;0061 302A 0316 FE2A 059A 0062;0061 302A 0316 FE2A 059A 0062; # (a◌֚◌̖◌〪◌︪b; a◌〪◌̖◌︪◌֚b; a◌〪◌̖◌︪◌֚b; a◌〪◌̖◌︪◌֚b; a◌〪◌̖◌︪◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING TILDE RIGHT HALF BELOW, LATIN SMALL LETTER B
+0061 FE2A 059A 0316 302A 0062;0061 302A FE2A 0316 059A 0062;0061 302A FE2A 0316 059A 0062;0061 302A FE2A 0316 059A 0062;0061 302A FE2A 0316 059A 0062; # (a◌︪◌֚◌̖◌〪b; a◌〪◌︪◌̖◌֚b; a◌〪◌︪◌̖◌֚b; a◌〪◌︪◌̖◌֚b; a◌〪◌︪◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING TILDE RIGHT HALF BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A FE2B 0062;0061 302A 0316 FE2B 059A 0062;0061 302A 0316 FE2B 059A 0062;0061 302A 0316 FE2B 059A 0062;0061 302A 0316 FE2B 059A 0062; # (a◌֚◌̖◌〪◌︫b; a◌〪◌̖◌︫◌֚b; a◌〪◌̖◌︫◌֚b; a◌〪◌̖◌︫◌֚b; a◌〪◌̖◌︫◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING MACRON LEFT HALF BELOW, LATIN SMALL LETTER B
+0061 FE2B 059A 0316 302A 0062;0061 302A FE2B 0316 059A 0062;0061 302A FE2B 0316 059A 0062;0061 302A FE2B 0316 059A 0062;0061 302A FE2B 0316 059A 0062; # (a◌︫◌֚◌̖◌〪b; a◌〪◌︫◌̖◌֚b; a◌〪◌︫◌̖◌֚b; a◌〪◌︫◌̖◌֚b; a◌〪◌︫◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING MACRON LEFT HALF BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A FE2C 0062;0061 302A 0316 FE2C 059A 0062;0061 302A 0316 FE2C 059A 0062;0061 302A 0316 FE2C 059A 0062;0061 302A 0316 FE2C 059A 0062; # (a◌֚◌̖◌〪◌︬b; a◌〪◌̖◌︬◌֚b; a◌〪◌̖◌︬◌֚b; a◌〪◌̖◌︬◌֚b; a◌〪◌̖◌︬◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING MACRON RIGHT HALF BELOW, LATIN SMALL LETTER B
+0061 FE2C 059A 0316 302A 0062;0061 302A FE2C 0316 059A 0062;0061 302A FE2C 0316 059A 0062;0061 302A FE2C 0316 059A 0062;0061 302A FE2C 0316 059A 0062; # (a◌︬◌֚◌̖◌〪b; a◌〪◌︬◌̖◌֚b; a◌〪◌︬◌̖◌֚b; a◌〪◌︬◌̖◌֚b; a◌〪◌︬◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING MACRON RIGHT HALF BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A FE2D 0062;0061 302A 0316 FE2D 059A 0062;0061 302A 0316 FE2D 059A 0062;0061 302A 0316 FE2D 059A 0062;0061 302A 0316 FE2D 059A 0062; # (a◌֚◌̖◌〪◌︭b; a◌〪◌̖◌︭◌֚b; a◌〪◌̖◌︭◌֚b; a◌〪◌̖◌︭◌֚b; a◌〪◌̖◌︭◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING CONJOINING MACRON BELOW, LATIN SMALL LETTER B
+0061 FE2D 059A 0316 302A 0062;0061 302A FE2D 0316 059A 0062;0061 302A FE2D 0316 059A 0062;0061 302A FE2D 0316 059A 0062;0061 302A FE2D 0316 059A 0062; # (a◌︭◌֚◌̖◌〪b; a◌〪◌︭◌̖◌֚b; a◌〪◌︭◌̖◌֚b; a◌〪◌︭◌̖◌֚b; a◌〪◌︭◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING CONJOINING MACRON BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE2E 0062;00E0 05AE FE2E 0315 0062;0061 05AE 0300 FE2E 0315 0062;00E0 05AE FE2E 0315 0062;0061 05AE 0300 FE2E 0315 0062; # (a◌̕◌̀◌֮◌︮b; à◌֮◌︮◌̕b; a◌֮◌̀◌︮◌̕b; à◌֮◌︮◌̕b; a◌֮◌̀◌︮◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC TITLO LEFT HALF, LATIN SMALL LETTER B
+0061 FE2E 0315 0300 05AE 0062;0061 05AE FE2E 0300 0315 0062;0061 05AE FE2E 0300 0315 0062;0061 05AE FE2E 0300 0315 0062;0061 05AE FE2E 0300 0315 0062; # (a◌︮◌̕◌̀◌֮b; a◌֮◌︮◌̀◌̕b; a◌֮◌︮◌̀◌̕b; a◌֮◌︮◌̀◌̕b; a◌֮◌︮◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC TITLO LEFT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE2F 0062;00E0 05AE FE2F 0315 0062;0061 05AE 0300 FE2F 0315 0062;00E0 05AE FE2F 0315 0062;0061 05AE 0300 FE2F 0315 0062; # (a◌̕◌̀◌֮◌︯b; à◌֮◌︯◌̕b; a◌֮◌̀◌︯◌̕b; à◌֮◌︯◌̕b; a◌֮◌̀◌︯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC TITLO RIGHT HALF, LATIN SMALL LETTER B
+0061 FE2F 0315 0300 05AE 0062;0061 05AE FE2F 0300 0315 0062;0061 05AE FE2F 0300 0315 0062;0061 05AE FE2F 0300 0315 0062;0061 05AE FE2F 0300 0315 0062; # (a◌︯◌̕◌̀◌֮b; a◌֮◌︯◌̀◌̕b; a◌֮◌︯◌̀◌̕b; a◌֮◌︯◌̀◌̕b; a◌֮◌︯◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC TITLO RIGHT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 101FD 0062;0061 302A 0316 101FD 059A 0062;0061 302A 0316 101FD 059A 0062;0061 302A 0316 101FD 059A 0062;0061 302A 0316 101FD 059A 0062; # (a◌֚◌̖◌〪◌ð‡½b; a◌〪◌̖◌ð‡½â—ŒÖšb; a◌〪◌̖◌ð‡½â—ŒÖšb; a◌〪◌̖◌ð‡½â—ŒÖšb; a◌〪◌̖◌ð‡½â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE, LATIN SMALL LETTER B
+0061 101FD 059A 0316 302A 0062;0061 302A 101FD 0316 059A 0062;0061 302A 101FD 0316 059A 0062;0061 302A 101FD 0316 059A 0062;0061 302A 101FD 0316 059A 0062; # (aâ—Œð‡½â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð‡½â—ŒÌ–◌֚b; a◌〪◌ð‡½â—ŒÌ–◌֚b; a◌〪◌ð‡½â—ŒÌ–◌֚b; a◌〪◌ð‡½â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 102E0 0062;0061 302A 0316 102E0 059A 0062;0061 302A 0316 102E0 059A 0062;0061 302A 0316 102E0 059A 0062;0061 302A 0316 102E0 059A 0062; # (a◌֚◌̖◌〪◌ð‹ b; a◌〪◌̖◌ð‹ â—ŒÖšb; a◌〪◌̖◌ð‹ â—ŒÖšb; a◌〪◌̖◌ð‹ â—ŒÖšb; a◌〪◌̖◌ð‹ â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COPTIC EPACT THOUSANDS MARK, LATIN SMALL LETTER B
+0061 102E0 059A 0316 302A 0062;0061 302A 102E0 0316 059A 0062;0061 302A 102E0 0316 059A 0062;0061 302A 102E0 0316 059A 0062;0061 302A 102E0 0316 059A 0062; # (aâ—Œð‹ â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð‹ â—ŒÌ–◌֚b; a◌〪◌ð‹ â—ŒÌ–◌֚b; a◌〪◌ð‹ â—ŒÌ–◌֚b; a◌〪◌ð‹ â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, COPTIC EPACT THOUSANDS MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 10376 0062;00E0 05AE 10376 0315 0062;0061 05AE 0300 10376 0315 0062;00E0 05AE 10376 0315 0062;0061 05AE 0300 10376 0315 0062; # (a◌̕◌̀◌֮◌ð¶b; à◌֮◌ð¶â—ŒÌ•b; a◌֮◌̀◌ð¶â—ŒÌ•b; à◌֮◌ð¶â—ŒÌ•b; a◌֮◌̀◌ð¶â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING OLD PERMIC LETTER AN, LATIN SMALL LETTER B
+0061 10376 0315 0300 05AE 0062;0061 05AE 10376 0300 0315 0062;0061 05AE 10376 0300 0315 0062;0061 05AE 10376 0300 0315 0062;0061 05AE 10376 0300 0315 0062; # (aâ—Œð¶â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð¶â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¶â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¶â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¶â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING OLD PERMIC LETTER AN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 10377 0062;00E0 05AE 10377 0315 0062;0061 05AE 0300 10377 0315 0062;00E0 05AE 10377 0315 0062;0061 05AE 0300 10377 0315 0062; # (a◌̕◌̀◌֮◌ð·b; à◌֮◌ð·â—ŒÌ•b; a◌֮◌̀◌ð·â—ŒÌ•b; à◌֮◌ð·â—ŒÌ•b; a◌֮◌̀◌ð·â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING OLD PERMIC LETTER DOI, LATIN SMALL LETTER B
+0061 10377 0315 0300 05AE 0062;0061 05AE 10377 0300 0315 0062;0061 05AE 10377 0300 0315 0062;0061 05AE 10377 0300 0315 0062;0061 05AE 10377 0300 0315 0062; # (aâ—Œð·â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð·â—ŒÌ€â—ŒÌ•b; a◌֮◌ð·â—ŒÌ€â—ŒÌ•b; a◌֮◌ð·â—ŒÌ€â—ŒÌ•b; a◌֮◌ð·â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING OLD PERMIC LETTER DOI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 10378 0062;00E0 05AE 10378 0315 0062;0061 05AE 0300 10378 0315 0062;00E0 05AE 10378 0315 0062;0061 05AE 0300 10378 0315 0062; # (a◌̕◌̀◌֮◌ð¸b; à◌֮◌ð¸â—ŒÌ•b; a◌֮◌̀◌ð¸â—ŒÌ•b; à◌֮◌ð¸â—ŒÌ•b; a◌֮◌̀◌ð¸â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING OLD PERMIC LETTER ZATA, LATIN SMALL LETTER B
+0061 10378 0315 0300 05AE 0062;0061 05AE 10378 0300 0315 0062;0061 05AE 10378 0300 0315 0062;0061 05AE 10378 0300 0315 0062;0061 05AE 10378 0300 0315 0062; # (aâ—Œð¸â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð¸â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¸â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¸â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¸â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING OLD PERMIC LETTER ZATA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 10379 0062;00E0 05AE 10379 0315 0062;0061 05AE 0300 10379 0315 0062;00E0 05AE 10379 0315 0062;0061 05AE 0300 10379 0315 0062; # (a◌̕◌̀◌֮◌ð¹b; à◌֮◌ð¹â—ŒÌ•b; a◌֮◌̀◌ð¹â—ŒÌ•b; à◌֮◌ð¹â—ŒÌ•b; a◌֮◌̀◌ð¹â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING OLD PERMIC LETTER NENOE, LATIN SMALL LETTER B
+0061 10379 0315 0300 05AE 0062;0061 05AE 10379 0300 0315 0062;0061 05AE 10379 0300 0315 0062;0061 05AE 10379 0300 0315 0062;0061 05AE 10379 0300 0315 0062; # (aâ—Œð¹â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð¹â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¹â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¹â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¹â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING OLD PERMIC LETTER NENOE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1037A 0062;00E0 05AE 1037A 0315 0062;0061 05AE 0300 1037A 0315 0062;00E0 05AE 1037A 0315 0062;0061 05AE 0300 1037A 0315 0062; # (a◌̕◌̀◌֮◌ðºb; à◌֮◌ðºâ—ŒÌ•b; a◌֮◌̀◌ðºâ—ŒÌ•b; à◌֮◌ðºâ—ŒÌ•b; a◌֮◌̀◌ðºâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING OLD PERMIC LETTER SII, LATIN SMALL LETTER B
+0061 1037A 0315 0300 05AE 0062;0061 05AE 1037A 0300 0315 0062;0061 05AE 1037A 0300 0315 0062;0061 05AE 1037A 0300 0315 0062;0061 05AE 1037A 0300 0315 0062; # (aâ—Œðºâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ðºâ—ŒÌ€â—ŒÌ•b; a◌֮◌ðºâ—ŒÌ€â—ŒÌ•b; a◌֮◌ðºâ—ŒÌ€â—ŒÌ•b; a◌֮◌ðºâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING OLD PERMIC LETTER SII, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 10A0D 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062; # (a◌֚◌̖◌〪◌ð¨b; a◌〪◌̖◌ð¨â—ŒÖšb; a◌〪◌̖◌ð¨â—ŒÖšb; a◌〪◌̖◌ð¨â—ŒÖšb; a◌〪◌̖◌ð¨â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, KHAROSHTHI SIGN DOUBLE RING BELOW, LATIN SMALL LETTER B
+0061 10A0D 059A 0316 302A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062; # (aâ—Œð¨â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð¨â—ŒÌ–◌֚b; a◌〪◌ð¨â—ŒÌ–◌֚b; a◌〪◌ð¨â—ŒÌ–◌֚b; a◌〪◌ð¨â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, KHAROSHTHI SIGN DOUBLE RING BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 10A0F 0062;00E0 05AE 10A0F 0315 0062;0061 05AE 0300 10A0F 0315 0062;00E0 05AE 10A0F 0315 0062;0061 05AE 0300 10A0F 0315 0062; # (a◌̕◌̀◌֮◌ð¨b; à◌֮◌ð¨â—ŒÌ•b; a◌֮◌̀◌ð¨â—ŒÌ•b; à◌֮◌ð¨â—ŒÌ•b; a◌֮◌̀◌ð¨â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, KHAROSHTHI SIGN VISARGA, LATIN SMALL LETTER B
+0061 10A0F 0315 0300 05AE 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062; # (aâ—Œð¨â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð¨â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, KHAROSHTHI SIGN VISARGA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 10A38 0062;00E0 05AE 10A38 0315 0062;0061 05AE 0300 10A38 0315 0062;00E0 05AE 10A38 0315 0062;0061 05AE 0300 10A38 0315 0062; # (a◌̕◌̀◌֮◌ð¨¸b; à◌֮◌ð¨¸â—ŒÌ•b; a◌֮◌̀◌ð¨¸â—ŒÌ•b; à◌֮◌ð¨¸â—ŒÌ•b; a◌֮◌̀◌ð¨¸â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, KHAROSHTHI SIGN BAR ABOVE, LATIN SMALL LETTER B
+0061 10A38 0315 0300 05AE 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062; # (aâ—Œð¨¸â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð¨¸â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨¸â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨¸â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨¸â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, KHAROSHTHI SIGN BAR ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 10A39 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062; # (a◌़◌̴◌ð¨¹b; a◌̴◌ð¨¹â—Œà¤¼b; a◌̴◌ð¨¹â—Œà¤¼b; a◌̴◌ð¨¹â—Œà¤¼b; a◌̴◌ð¨¹â—Œà¤¼b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, KHAROSHTHI SIGN CAUDA, LATIN SMALL LETTER B
+0061 10A39 093C 0334 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062; # (aâ—Œð¨¹â—Œà¤¼â—ŒÌ´b; aâ—Œð¨¹â—ŒÌ´â—Œà¤¼b; aâ—Œð¨¹â—ŒÌ´â—Œà¤¼b; aâ—Œð¨¹â—ŒÌ´â—Œà¤¼b; aâ—Œð¨¹â—ŒÌ´â—Œà¤¼b; ) LATIN SMALL LETTER A, KHAROSHTHI SIGN CAUDA, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 059A 0316 302A 10A3A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062; # (a◌֚◌̖◌〪◌ð¨ºb; a◌〪◌̖◌ð¨ºâ—ŒÖšb; a◌〪◌̖◌ð¨ºâ—ŒÖšb; a◌〪◌̖◌ð¨ºâ—ŒÖšb; a◌〪◌̖◌ð¨ºâ—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, KHAROSHTHI SIGN DOT BELOW, LATIN SMALL LETTER B
+0061 10A3A 059A 0316 302A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062; # (aâ—Œð¨ºâ—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð¨ºâ—ŒÌ–◌֚b; a◌〪◌ð¨ºâ—ŒÌ–◌֚b; a◌〪◌ð¨ºâ—ŒÌ–◌֚b; a◌〪◌ð¨ºâ—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, KHAROSHTHI SIGN DOT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 10A3F 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð¨¿b; a◌゙◌à¥â—Œð¨¿â—ŒÖ°b; a◌゙◌à¥â—Œð¨¿â—ŒÖ°b; a◌゙◌à¥â—Œð¨¿â—ŒÖ°b; a◌゙◌à¥â—Œð¨¿â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KHAROSHTHI VIRAMA, LATIN SMALL LETTER B
+0061 10A3F 05B0 094D 3099 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062; # (aâ—Œð¨¿â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌ð¨¿â—Œà¥â—ŒÖ°b; a◌゙◌ð¨¿â—Œà¥â—ŒÖ°b; a◌゙◌ð¨¿â—Œà¥â—ŒÖ°b; a◌゙◌ð¨¿â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, KHAROSHTHI VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 10AE5 0062;00E0 05AE 10AE5 0315 0062;0061 05AE 0300 10AE5 0315 0062;00E0 05AE 10AE5 0315 0062;0061 05AE 0300 10AE5 0315 0062; # (a◌̕◌̀◌֮◌ð«¥b; à◌֮◌ð«¥â—ŒÌ•b; a◌֮◌̀◌ð«¥â—ŒÌ•b; à◌֮◌ð«¥â—ŒÌ•b; a◌֮◌̀◌ð«¥â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MANICHAEAN ABBREVIATION MARK ABOVE, LATIN SMALL LETTER B
+0061 10AE5 0315 0300 05AE 0062;0061 05AE 10AE5 0300 0315 0062;0061 05AE 10AE5 0300 0315 0062;0061 05AE 10AE5 0300 0315 0062;0061 05AE 10AE5 0300 0315 0062; # (aâ—Œð«¥â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð«¥â—ŒÌ€â—ŒÌ•b; a◌֮◌ð«¥â—ŒÌ€â—ŒÌ•b; a◌֮◌ð«¥â—ŒÌ€â—ŒÌ•b; a◌֮◌ð«¥â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MANICHAEAN ABBREVIATION MARK ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 10AE6 0062;0061 302A 0316 10AE6 059A 0062;0061 302A 0316 10AE6 059A 0062;0061 302A 0316 10AE6 059A 0062;0061 302A 0316 10AE6 059A 0062; # (a◌֚◌̖◌〪◌ð«¦b; a◌〪◌̖◌ð«¦â—ŒÖšb; a◌〪◌̖◌ð«¦â—ŒÖšb; a◌〪◌̖◌ð«¦â—ŒÖšb; a◌〪◌̖◌ð«¦â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MANICHAEAN ABBREVIATION MARK BELOW, LATIN SMALL LETTER B
+0061 10AE6 059A 0316 302A 0062;0061 302A 10AE6 0316 059A 0062;0061 302A 10AE6 0316 059A 0062;0061 302A 10AE6 0316 059A 0062;0061 302A 10AE6 0316 059A 0062; # (aâ—Œð«¦â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð«¦â—ŒÌ–◌֚b; a◌〪◌ð«¦â—ŒÌ–◌֚b; a◌〪◌ð«¦â—ŒÌ–◌֚b; a◌〪◌ð«¦â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MANICHAEAN ABBREVIATION MARK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 11046 0062;0061 3099 094D 11046 05B0 0062;0061 3099 094D 11046 05B0 0062;0061 3099 094D 11046 05B0 0062;0061 3099 094D 11046 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘†b; a◌゙◌à¥â—Œð‘†â—ŒÖ°b; a◌゙◌à¥â—Œð‘†â—ŒÖ°b; a◌゙◌à¥â—Œð‘†â—ŒÖ°b; a◌゙◌à¥â—Œð‘†â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, BRAHMI VIRAMA, LATIN SMALL LETTER B
+0061 11046 05B0 094D 3099 0062;0061 3099 11046 094D 05B0 0062;0061 3099 11046 094D 05B0 0062;0061 3099 11046 094D 05B0 0062;0061 3099 11046 094D 05B0 0062; # (aâ—Œð‘†â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌ð‘†â—Œà¥â—ŒÖ°b; a◌゙◌ð‘†â—Œà¥â—ŒÖ°b; a◌゙◌ð‘†â—Œà¥â—ŒÖ°b; a◌゙◌ð‘†â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, BRAHMI VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1107F 0062;0061 3099 094D 1107F 05B0 0062;0061 3099 094D 1107F 05B0 0062;0061 3099 094D 1107F 05B0 0062;0061 3099 094D 1107F 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘¿b; a◌゙◌à¥â—Œð‘¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘¿â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, BRAHMI NUMBER JOINER, LATIN SMALL LETTER B
+0061 1107F 05B0 094D 3099 0062;0061 3099 1107F 094D 05B0 0062;0061 3099 1107F 094D 05B0 0062;0061 3099 1107F 094D 05B0 0062;0061 3099 1107F 094D 05B0 0062; # (aâ—Œð‘¿â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌ð‘¿â—Œà¥â—ŒÖ°b; a◌゙◌ð‘¿â—Œà¥â—ŒÖ°b; a◌゙◌ð‘¿â—Œà¥â—ŒÖ°b; a◌゙◌ð‘¿â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, BRAHMI NUMBER JOINER, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 110B9 0062;0061 3099 094D 110B9 05B0 0062;0061 3099 094D 110B9 05B0 0062;0061 3099 094D 110B9 05B0 0062;0061 3099 094D 110B9 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘‚¹b; a◌゙◌à¥â—Œð‘‚¹â—ŒÖ°b; a◌゙◌à¥â—Œð‘‚¹â—ŒÖ°b; a◌゙◌à¥â—Œð‘‚¹â—ŒÖ°b; a◌゙◌à¥â—Œð‘‚¹â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KAITHI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 110B9 05B0 094D 3099 0062;0061 3099 110B9 094D 05B0 0062;0061 3099 110B9 094D 05B0 0062;0061 3099 110B9 094D 05B0 0062;0061 3099 110B9 094D 05B0 0062; # (a◌𑂹◌ְ◌à¥â—Œã‚™b; a◌゙◌𑂹◌à¥â—ŒÖ°b; a◌゙◌𑂹◌à¥â—ŒÖ°b; a◌゙◌𑂹◌à¥â—ŒÖ°b; a◌゙◌𑂹◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, KAITHI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 110BA 0062;0061 0334 093C 110BA 3099 0062;0061 0334 093C 110BA 3099 0062;0061 0334 093C 110BA 3099 0062;0061 0334 093C 110BA 3099 0062; # (a◌゙◌़◌̴◌𑂺b; a◌̴◌़◌𑂺◌゙b; a◌̴◌़◌𑂺◌゙b; a◌̴◌़◌𑂺◌゙b; a◌̴◌़◌𑂺◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, KAITHI SIGN NUKTA, LATIN SMALL LETTER B
+0061 110BA 3099 093C 0334 0062;0061 0334 110BA 093C 3099 0062;0061 0334 110BA 093C 3099 0062;0061 0334 110BA 093C 3099 0062;0061 0334 110BA 093C 3099 0062; # (a◌𑂺◌゙◌़◌̴b; a◌̴◌𑂺◌़◌゙b; a◌̴◌𑂺◌़◌゙b; a◌̴◌𑂺◌़◌゙b; a◌̴◌𑂺◌़◌゙b; ) LATIN SMALL LETTER A, KAITHI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11100 0062;00E0 05AE 11100 0315 0062;0061 05AE 0300 11100 0315 0062;00E0 05AE 11100 0315 0062;0061 05AE 0300 11100 0315 0062; # (a◌̕◌̀◌֮◌𑄀b; à◌֮◌𑄀◌̕b; a◌֮◌̀◌𑄀◌̕b; à◌֮◌𑄀◌̕b; a◌֮◌̀◌𑄀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, CHAKMA SIGN CANDRABINDU, LATIN SMALL LETTER B
+0061 11100 0315 0300 05AE 0062;0061 05AE 11100 0300 0315 0062;0061 05AE 11100 0300 0315 0062;0061 05AE 11100 0300 0315 0062;0061 05AE 11100 0300 0315 0062; # (a◌𑄀◌̕◌̀◌֮b; a◌֮◌𑄀◌̀◌̕b; a◌֮◌𑄀◌̀◌̕b; a◌֮◌𑄀◌̀◌̕b; a◌֮◌𑄀◌̀◌̕b; ) LATIN SMALL LETTER A, CHAKMA SIGN CANDRABINDU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11101 0062;00E0 05AE 11101 0315 0062;0061 05AE 0300 11101 0315 0062;00E0 05AE 11101 0315 0062;0061 05AE 0300 11101 0315 0062; # (a◌̕◌̀◌֮◌ð‘„b; à◌֮◌ð‘„◌̕b; a◌֮◌̀◌ð‘„◌̕b; à◌֮◌ð‘„◌̕b; a◌֮◌̀◌ð‘„◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, CHAKMA SIGN ANUSVARA, LATIN SMALL LETTER B
+0061 11101 0315 0300 05AE 0062;0061 05AE 11101 0300 0315 0062;0061 05AE 11101 0300 0315 0062;0061 05AE 11101 0300 0315 0062;0061 05AE 11101 0300 0315 0062; # (aâ—Œð‘„◌̕◌̀◌֮b; a◌֮◌ð‘„◌̀◌̕b; a◌֮◌ð‘„◌̀◌̕b; a◌֮◌ð‘„◌̀◌̕b; a◌֮◌ð‘„◌̀◌̕b; ) LATIN SMALL LETTER A, CHAKMA SIGN ANUSVARA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11102 0062;00E0 05AE 11102 0315 0062;0061 05AE 0300 11102 0315 0062;00E0 05AE 11102 0315 0062;0061 05AE 0300 11102 0315 0062; # (a◌̕◌̀◌֮◌𑄂b; à◌֮◌𑄂◌̕b; a◌֮◌̀◌𑄂◌̕b; à◌֮◌𑄂◌̕b; a◌֮◌̀◌𑄂◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, CHAKMA SIGN VISARGA, LATIN SMALL LETTER B
+0061 11102 0315 0300 05AE 0062;0061 05AE 11102 0300 0315 0062;0061 05AE 11102 0300 0315 0062;0061 05AE 11102 0300 0315 0062;0061 05AE 11102 0300 0315 0062; # (a◌𑄂◌̕◌̀◌֮b; a◌֮◌𑄂◌̀◌̕b; a◌֮◌𑄂◌̀◌̕b; a◌֮◌𑄂◌̀◌̕b; a◌֮◌𑄂◌̀◌̕b; ) LATIN SMALL LETTER A, CHAKMA SIGN VISARGA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B0 094D 3099 11133 0062;0061 3099 094D 11133 05B0 0062;0061 3099 094D 11133 05B0 0062;0061 3099 094D 11133 05B0 0062;0061 3099 094D 11133 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘„³b; a◌゙◌à¥â—Œð‘„³â—ŒÖ°b; a◌゙◌à¥â—Œð‘„³â—ŒÖ°b; a◌゙◌à¥â—Œð‘„³â—ŒÖ°b; a◌゙◌à¥â—Œð‘„³â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, CHAKMA VIRAMA, LATIN SMALL LETTER B
+0061 11133 05B0 094D 3099 0062;0061 3099 11133 094D 05B0 0062;0061 3099 11133 094D 05B0 0062;0061 3099 11133 094D 05B0 0062;0061 3099 11133 094D 05B0 0062; # (a◌𑄳◌ְ◌à¥â—Œã‚™b; a◌゙◌𑄳◌à¥â—ŒÖ°b; a◌゙◌𑄳◌à¥â—ŒÖ°b; a◌゙◌𑄳◌à¥â—ŒÖ°b; a◌゙◌𑄳◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, CHAKMA VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 11134 0062;0061 3099 094D 11134 05B0 0062;0061 3099 094D 11134 05B0 0062;0061 3099 094D 11134 05B0 0062;0061 3099 094D 11134 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘„´b; a◌゙◌à¥â—Œð‘„´â—ŒÖ°b; a◌゙◌à¥â—Œð‘„´â—ŒÖ°b; a◌゙◌à¥â—Œð‘„´â—ŒÖ°b; a◌゙◌à¥â—Œð‘„´â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, CHAKMA MAAYYAA, LATIN SMALL LETTER B
+0061 11134 05B0 094D 3099 0062;0061 3099 11134 094D 05B0 0062;0061 3099 11134 094D 05B0 0062;0061 3099 11134 094D 05B0 0062;0061 3099 11134 094D 05B0 0062; # (a◌𑄴◌ְ◌à¥â—Œã‚™b; a◌゙◌𑄴◌à¥â—ŒÖ°b; a◌゙◌𑄴◌à¥â—ŒÖ°b; a◌゙◌𑄴◌à¥â—ŒÖ°b; a◌゙◌𑄴◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, CHAKMA MAAYYAA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 11173 0062;0061 0334 093C 11173 3099 0062;0061 0334 093C 11173 3099 0062;0061 0334 093C 11173 3099 0062;0061 0334 093C 11173 3099 0062; # (a◌゙◌़◌̴◌𑅳b; a◌̴◌़◌𑅳◌゙b; a◌̴◌़◌𑅳◌゙b; a◌̴◌़◌𑅳◌゙b; a◌̴◌़◌𑅳◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, MAHAJANI SIGN NUKTA, LATIN SMALL LETTER B
+0061 11173 3099 093C 0334 0062;0061 0334 11173 093C 3099 0062;0061 0334 11173 093C 3099 0062;0061 0334 11173 093C 3099 0062;0061 0334 11173 093C 3099 0062; # (a◌𑅳◌゙◌़◌̴b; a◌̴◌𑅳◌़◌゙b; a◌̴◌𑅳◌़◌゙b; a◌̴◌𑅳◌़◌゙b; a◌̴◌𑅳◌़◌゙b; ) LATIN SMALL LETTER A, MAHAJANI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 111C0 0062;0061 3099 094D 111C0 05B0 0062;0061 3099 094D 111C0 05B0 0062;0061 3099 094D 111C0 05B0 0062;0061 3099 094D 111C0 05B0 0062; # (a◌ְ◌à¥â—Œã‚™ð‘‡€b; a◌゙◌à¥ð‘‡€â—ŒÖ°b; a◌゙◌à¥ð‘‡€â—ŒÖ°b; a◌゙◌à¥ð‘‡€â—ŒÖ°b; a◌゙◌à¥ð‘‡€â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, SHARADA SIGN VIRAMA, LATIN SMALL LETTER B
+0061 111C0 05B0 094D 3099 0062;0061 3099 111C0 094D 05B0 0062;0061 3099 111C0 094D 05B0 0062;0061 3099 111C0 094D 05B0 0062;0061 3099 111C0 094D 05B0 0062; # (a𑇀◌ְ◌à¥â—Œã‚™b; a◌゙𑇀◌à¥â—ŒÖ°b; a◌゙𑇀◌à¥â—ŒÖ°b; a◌゙𑇀◌à¥â—ŒÖ°b; a◌゙𑇀◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, SHARADA SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 111CA 0062;0061 0334 093C 111CA 3099 0062;0061 0334 093C 111CA 3099 0062;0061 0334 093C 111CA 3099 0062;0061 0334 093C 111CA 3099 0062; # (a◌゙◌़◌̴◌𑇊b; a◌̴◌़◌𑇊◌゙b; a◌̴◌़◌𑇊◌゙b; a◌̴◌़◌𑇊◌゙b; a◌̴◌़◌𑇊◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, SHARADA SIGN NUKTA, LATIN SMALL LETTER B
+0061 111CA 3099 093C 0334 0062;0061 0334 111CA 093C 3099 0062;0061 0334 111CA 093C 3099 0062;0061 0334 111CA 093C 3099 0062;0061 0334 111CA 093C 3099 0062; # (a◌𑇊◌゙◌़◌̴b; a◌̴◌𑇊◌़◌゙b; a◌̴◌𑇊◌़◌゙b; a◌̴◌𑇊◌़◌゙b; a◌̴◌𑇊◌़◌゙b; ) LATIN SMALL LETTER A, SHARADA SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 11235 0062;0061 3099 094D 11235 05B0 0062;0061 3099 094D 11235 05B0 0062;0061 3099 094D 11235 05B0 0062;0061 3099 094D 11235 05B0 0062; # (a◌ְ◌à¥â—Œã‚™ð‘ˆµb; a◌゙◌à¥ð‘ˆµâ—ŒÖ°b; a◌゙◌à¥ð‘ˆµâ—ŒÖ°b; a◌゙◌à¥ð‘ˆµâ—ŒÖ°b; a◌゙◌à¥ð‘ˆµâ—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KHOJKI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 11235 05B0 094D 3099 0062;0061 3099 11235 094D 05B0 0062;0061 3099 11235 094D 05B0 0062;0061 3099 11235 094D 05B0 0062;0061 3099 11235 094D 05B0 0062; # (a𑈵◌ְ◌à¥â—Œã‚™b; a◌゙𑈵◌à¥â—ŒÖ°b; a◌゙𑈵◌à¥â—ŒÖ°b; a◌゙𑈵◌à¥â—ŒÖ°b; a◌゙𑈵◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, KHOJKI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 11236 0062;0061 0334 093C 11236 3099 0062;0061 0334 093C 11236 3099 0062;0061 0334 093C 11236 3099 0062;0061 0334 093C 11236 3099 0062; # (a◌゙◌़◌̴◌𑈶b; a◌̴◌़◌𑈶◌゙b; a◌̴◌़◌𑈶◌゙b; a◌̴◌़◌𑈶◌゙b; a◌̴◌़◌𑈶◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, KHOJKI SIGN NUKTA, LATIN SMALL LETTER B
+0061 11236 3099 093C 0334 0062;0061 0334 11236 093C 3099 0062;0061 0334 11236 093C 3099 0062;0061 0334 11236 093C 3099 0062;0061 0334 11236 093C 3099 0062; # (a◌𑈶◌゙◌़◌̴b; a◌̴◌𑈶◌़◌゙b; a◌̴◌𑈶◌़◌゙b; a◌̴◌𑈶◌़◌゙b; a◌̴◌𑈶◌़◌゙b; ) LATIN SMALL LETTER A, KHOJKI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 3099 093C 0334 112E9 0062;0061 0334 093C 112E9 3099 0062;0061 0334 093C 112E9 3099 0062;0061 0334 093C 112E9 3099 0062;0061 0334 093C 112E9 3099 0062; # (a◌゙◌़◌̴◌𑋩b; a◌̴◌़◌𑋩◌゙b; a◌̴◌़◌𑋩◌゙b; a◌̴◌़◌𑋩◌゙b; a◌̴◌़◌𑋩◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, KHUDAWADI SIGN NUKTA, LATIN SMALL LETTER B
+0061 112E9 3099 093C 0334 0062;0061 0334 112E9 093C 3099 0062;0061 0334 112E9 093C 3099 0062;0061 0334 112E9 093C 3099 0062;0061 0334 112E9 093C 3099 0062; # (a◌𑋩◌゙◌़◌̴b; a◌̴◌𑋩◌़◌゙b; a◌̴◌𑋩◌़◌゙b; a◌̴◌𑋩◌़◌゙b; a◌̴◌𑋩◌़◌゙b; ) LATIN SMALL LETTER A, KHUDAWADI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 112EA 0062;0061 3099 094D 112EA 05B0 0062;0061 3099 094D 112EA 05B0 0062;0061 3099 094D 112EA 05B0 0062;0061 3099 094D 112EA 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘‹ªb; a◌゙◌à¥â—Œð‘‹ªâ—ŒÖ°b; a◌゙◌à¥â—Œð‘‹ªâ—ŒÖ°b; a◌゙◌à¥â—Œð‘‹ªâ—ŒÖ°b; a◌゙◌à¥â—Œð‘‹ªâ—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KHUDAWADI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 112EA 05B0 094D 3099 0062;0061 3099 112EA 094D 05B0 0062;0061 3099 112EA 094D 05B0 0062;0061 3099 112EA 094D 05B0 0062;0061 3099 112EA 094D 05B0 0062; # (a◌𑋪◌ְ◌à¥â—Œã‚™b; a◌゙◌𑋪◌à¥â—ŒÖ°b; a◌゙◌𑋪◌à¥â—ŒÖ°b; a◌゙◌𑋪◌à¥â—ŒÖ°b; a◌゙◌𑋪◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, KHUDAWADI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 1133C 0062;0061 0334 093C 1133C 3099 0062;0061 0334 093C 1133C 3099 0062;0061 0334 093C 1133C 3099 0062;0061 0334 093C 1133C 3099 0062; # (a◌゙◌़◌̴◌𑌼b; a◌̴◌़◌𑌼◌゙b; a◌̴◌़◌𑌼◌゙b; a◌̴◌़◌𑌼◌゙b; a◌̴◌़◌𑌼◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, GRANTHA SIGN NUKTA, LATIN SMALL LETTER B
+0061 1133C 3099 093C 0334 0062;0061 0334 1133C 093C 3099 0062;0061 0334 1133C 093C 3099 0062;0061 0334 1133C 093C 3099 0062;0061 0334 1133C 093C 3099 0062; # (a◌𑌼◌゙◌़◌̴b; a◌̴◌𑌼◌़◌゙b; a◌̴◌𑌼◌़◌゙b; a◌̴◌𑌼◌़◌゙b; a◌̴◌𑌼◌़◌゙b; ) LATIN SMALL LETTER A, GRANTHA SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1134D 0062;0061 3099 094D 1134D 05B0 0062;0061 3099 094D 1134D 05B0 0062;0061 3099 094D 1134D 05B0 0062;0061 3099 094D 1134D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™ð‘b; a◌゙◌à¥ð‘◌ְb; a◌゙◌à¥ð‘◌ְb; a◌゙◌à¥ð‘◌ְb; a◌゙◌à¥ð‘◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, GRANTHA SIGN VIRAMA, LATIN SMALL LETTER B
+0061 1134D 05B0 094D 3099 0062;0061 3099 1134D 094D 05B0 0062;0061 3099 1134D 094D 05B0 0062;0061 3099 1134D 094D 05B0 0062;0061 3099 1134D 094D 05B0 0062; # (að‘◌ְ◌à¥â—Œã‚™b; a◌゙ð‘â—Œà¥â—ŒÖ°b; a◌゙ð‘â—Œà¥â—ŒÖ°b; a◌゙ð‘â—Œà¥â—ŒÖ°b; a◌゙ð‘â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, GRANTHA SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11366 0062;00E0 05AE 11366 0315 0062;0061 05AE 0300 11366 0315 0062;00E0 05AE 11366 0315 0062;0061 05AE 0300 11366 0315 0062; # (a◌̕◌̀◌֮◌ð‘¦b; à◌֮◌ð‘¦â—ŒÌ•b; a◌֮◌̀◌ð‘¦â—ŒÌ•b; à◌֮◌ð‘¦â—ŒÌ•b; a◌֮◌̀◌ð‘¦â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA DIGIT ZERO, LATIN SMALL LETTER B
+0061 11366 0315 0300 05AE 0062;0061 05AE 11366 0300 0315 0062;0061 05AE 11366 0300 0315 0062;0061 05AE 11366 0300 0315 0062;0061 05AE 11366 0300 0315 0062; # (aâ—Œð‘¦â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘¦â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘¦â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘¦â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘¦â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA DIGIT ZERO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11367 0062;00E0 05AE 11367 0315 0062;0061 05AE 0300 11367 0315 0062;00E0 05AE 11367 0315 0062;0061 05AE 0300 11367 0315 0062; # (a◌̕◌̀◌֮◌ð‘§b; à◌֮◌ð‘§â—ŒÌ•b; a◌֮◌̀◌ð‘§â—ŒÌ•b; à◌֮◌ð‘§â—ŒÌ•b; a◌֮◌̀◌ð‘§â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA DIGIT ONE, LATIN SMALL LETTER B
+0061 11367 0315 0300 05AE 0062;0061 05AE 11367 0300 0315 0062;0061 05AE 11367 0300 0315 0062;0061 05AE 11367 0300 0315 0062;0061 05AE 11367 0300 0315 0062; # (aâ—Œð‘§â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘§â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘§â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘§â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘§â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA DIGIT ONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11368 0062;00E0 05AE 11368 0315 0062;0061 05AE 0300 11368 0315 0062;00E0 05AE 11368 0315 0062;0061 05AE 0300 11368 0315 0062; # (a◌̕◌̀◌֮◌ð‘¨b; à◌֮◌ð‘¨â—ŒÌ•b; a◌֮◌̀◌ð‘¨â—ŒÌ•b; à◌֮◌ð‘¨â—ŒÌ•b; a◌֮◌̀◌ð‘¨â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA DIGIT TWO, LATIN SMALL LETTER B
+0061 11368 0315 0300 05AE 0062;0061 05AE 11368 0300 0315 0062;0061 05AE 11368 0300 0315 0062;0061 05AE 11368 0300 0315 0062;0061 05AE 11368 0300 0315 0062; # (aâ—Œð‘¨â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘¨â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘¨â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘¨â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘¨â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA DIGIT TWO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11369 0062;00E0 05AE 11369 0315 0062;0061 05AE 0300 11369 0315 0062;00E0 05AE 11369 0315 0062;0061 05AE 0300 11369 0315 0062; # (a◌̕◌̀◌֮◌ð‘©b; à◌֮◌ð‘©â—ŒÌ•b; a◌֮◌̀◌ð‘©â—ŒÌ•b; à◌֮◌ð‘©â—ŒÌ•b; a◌֮◌̀◌ð‘©â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA DIGIT THREE, LATIN SMALL LETTER B
+0061 11369 0315 0300 05AE 0062;0061 05AE 11369 0300 0315 0062;0061 05AE 11369 0300 0315 0062;0061 05AE 11369 0300 0315 0062;0061 05AE 11369 0300 0315 0062; # (aâ—Œð‘©â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘©â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘©â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘©â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘©â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA DIGIT THREE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1136A 0062;00E0 05AE 1136A 0315 0062;0061 05AE 0300 1136A 0315 0062;00E0 05AE 1136A 0315 0062;0061 05AE 0300 1136A 0315 0062; # (a◌̕◌̀◌֮◌ð‘ªb; à◌֮◌ð‘ªâ—ŒÌ•b; a◌֮◌̀◌ð‘ªâ—ŒÌ•b; à◌֮◌ð‘ªâ—ŒÌ•b; a◌֮◌̀◌ð‘ªâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA DIGIT FOUR, LATIN SMALL LETTER B
+0061 1136A 0315 0300 05AE 0062;0061 05AE 1136A 0300 0315 0062;0061 05AE 1136A 0300 0315 0062;0061 05AE 1136A 0300 0315 0062;0061 05AE 1136A 0300 0315 0062; # (aâ—Œð‘ªâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘ªâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘ªâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘ªâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘ªâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA DIGIT FOUR, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1136B 0062;00E0 05AE 1136B 0315 0062;0061 05AE 0300 1136B 0315 0062;00E0 05AE 1136B 0315 0062;0061 05AE 0300 1136B 0315 0062; # (a◌̕◌̀◌֮◌ð‘«b; à◌֮◌ð‘«â—ŒÌ•b; a◌֮◌̀◌ð‘«â—ŒÌ•b; à◌֮◌ð‘«â—ŒÌ•b; a◌֮◌̀◌ð‘«â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA DIGIT FIVE, LATIN SMALL LETTER B
+0061 1136B 0315 0300 05AE 0062;0061 05AE 1136B 0300 0315 0062;0061 05AE 1136B 0300 0315 0062;0061 05AE 1136B 0300 0315 0062;0061 05AE 1136B 0300 0315 0062; # (aâ—Œð‘«â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘«â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘«â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘«â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘«â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA DIGIT FIVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1136C 0062;00E0 05AE 1136C 0315 0062;0061 05AE 0300 1136C 0315 0062;00E0 05AE 1136C 0315 0062;0061 05AE 0300 1136C 0315 0062; # (a◌̕◌̀◌֮◌ð‘¬b; à◌֮◌ð‘¬â—ŒÌ•b; a◌֮◌̀◌ð‘¬â—ŒÌ•b; à◌֮◌ð‘¬â—ŒÌ•b; a◌֮◌̀◌ð‘¬â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA DIGIT SIX, LATIN SMALL LETTER B
+0061 1136C 0315 0300 05AE 0062;0061 05AE 1136C 0300 0315 0062;0061 05AE 1136C 0300 0315 0062;0061 05AE 1136C 0300 0315 0062;0061 05AE 1136C 0300 0315 0062; # (aâ—Œð‘¬â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘¬â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘¬â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘¬â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘¬â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA DIGIT SIX, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11370 0062;00E0 05AE 11370 0315 0062;0061 05AE 0300 11370 0315 0062;00E0 05AE 11370 0315 0062;0061 05AE 0300 11370 0315 0062; # (a◌̕◌̀◌֮◌ð‘°b; à◌֮◌ð‘°â—ŒÌ•b; a◌֮◌̀◌ð‘°â—ŒÌ•b; à◌֮◌ð‘°â—ŒÌ•b; a◌֮◌̀◌ð‘°â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA LETTER A, LATIN SMALL LETTER B
+0061 11370 0315 0300 05AE 0062;0061 05AE 11370 0300 0315 0062;0061 05AE 11370 0300 0315 0062;0061 05AE 11370 0300 0315 0062;0061 05AE 11370 0300 0315 0062; # (aâ—Œð‘°â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘°â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘°â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘°â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘°â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11371 0062;00E0 05AE 11371 0315 0062;0061 05AE 0300 11371 0315 0062;00E0 05AE 11371 0315 0062;0061 05AE 0300 11371 0315 0062; # (a◌̕◌̀◌֮◌ð‘±b; à◌֮◌ð‘±â—ŒÌ•b; a◌֮◌̀◌ð‘±â—ŒÌ•b; à◌֮◌ð‘±â—ŒÌ•b; a◌֮◌̀◌ð‘±â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA LETTER KA, LATIN SMALL LETTER B
+0061 11371 0315 0300 05AE 0062;0061 05AE 11371 0300 0315 0062;0061 05AE 11371 0300 0315 0062;0061 05AE 11371 0300 0315 0062;0061 05AE 11371 0300 0315 0062; # (aâ—Œð‘±â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘±â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘±â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘±â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘±â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA LETTER KA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11372 0062;00E0 05AE 11372 0315 0062;0061 05AE 0300 11372 0315 0062;00E0 05AE 11372 0315 0062;0061 05AE 0300 11372 0315 0062; # (a◌̕◌̀◌֮◌ð‘²b; à◌֮◌ð‘²â—ŒÌ•b; a◌֮◌̀◌ð‘²â—ŒÌ•b; à◌֮◌ð‘²â—ŒÌ•b; a◌֮◌̀◌ð‘²â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA LETTER NA, LATIN SMALL LETTER B
+0061 11372 0315 0300 05AE 0062;0061 05AE 11372 0300 0315 0062;0061 05AE 11372 0300 0315 0062;0061 05AE 11372 0300 0315 0062;0061 05AE 11372 0300 0315 0062; # (aâ—Œð‘²â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘²â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘²â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘²â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘²â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA LETTER NA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11373 0062;00E0 05AE 11373 0315 0062;0061 05AE 0300 11373 0315 0062;00E0 05AE 11373 0315 0062;0061 05AE 0300 11373 0315 0062; # (a◌̕◌̀◌֮◌ð‘³b; à◌֮◌ð‘³â—ŒÌ•b; a◌֮◌̀◌ð‘³â—ŒÌ•b; à◌֮◌ð‘³â—ŒÌ•b; a◌֮◌̀◌ð‘³â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA LETTER VI, LATIN SMALL LETTER B
+0061 11373 0315 0300 05AE 0062;0061 05AE 11373 0300 0315 0062;0061 05AE 11373 0300 0315 0062;0061 05AE 11373 0300 0315 0062;0061 05AE 11373 0300 0315 0062; # (aâ—Œð‘³â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘³â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘³â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘³â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘³â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA LETTER VI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 11374 0062;00E0 05AE 11374 0315 0062;0061 05AE 0300 11374 0315 0062;00E0 05AE 11374 0315 0062;0061 05AE 0300 11374 0315 0062; # (a◌̕◌̀◌֮◌ð‘´b; à◌֮◌ð‘´â—ŒÌ•b; a◌֮◌̀◌ð‘´â—ŒÌ•b; à◌֮◌ð‘´â—ŒÌ•b; a◌֮◌̀◌ð‘´â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRANTHA LETTER PA, LATIN SMALL LETTER B
+0061 11374 0315 0300 05AE 0062;0061 05AE 11374 0300 0315 0062;0061 05AE 11374 0300 0315 0062;0061 05AE 11374 0300 0315 0062;0061 05AE 11374 0300 0315 0062; # (aâ—Œð‘´â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‘´â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘´â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘´â—ŒÌ€â—ŒÌ•b; a◌֮◌ð‘´â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GRANTHA LETTER PA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B0 094D 3099 11442 0062;0061 3099 094D 11442 05B0 0062;0061 3099 094D 11442 05B0 0062;0061 3099 094D 11442 05B0 0062;0061 3099 094D 11442 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘‘‚b; a◌゙◌à¥â—Œð‘‘‚◌ְb; a◌゙◌à¥â—Œð‘‘‚◌ְb; a◌゙◌à¥â—Œð‘‘‚◌ְb; a◌゙◌à¥â—Œð‘‘‚◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, NEWA SIGN VIRAMA, LATIN SMALL LETTER B
+0061 11442 05B0 094D 3099 0062;0061 3099 11442 094D 05B0 0062;0061 3099 11442 094D 05B0 0062;0061 3099 11442 094D 05B0 0062;0061 3099 11442 094D 05B0 0062; # (a◌𑑂◌ְ◌à¥â—Œã‚™b; a◌゙◌𑑂◌à¥â—ŒÖ°b; a◌゙◌𑑂◌à¥â—ŒÖ°b; a◌゙◌𑑂◌à¥â—ŒÖ°b; a◌゙◌𑑂◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, NEWA SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 11446 0062;0061 0334 093C 11446 3099 0062;0061 0334 093C 11446 3099 0062;0061 0334 093C 11446 3099 0062;0061 0334 093C 11446 3099 0062; # (a◌゙◌़◌̴◌𑑆b; a◌̴◌़◌𑑆◌゙b; a◌̴◌़◌𑑆◌゙b; a◌̴◌़◌𑑆◌゙b; a◌̴◌़◌𑑆◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, NEWA SIGN NUKTA, LATIN SMALL LETTER B
+0061 11446 3099 093C 0334 0062;0061 0334 11446 093C 3099 0062;0061 0334 11446 093C 3099 0062;0061 0334 11446 093C 3099 0062;0061 0334 11446 093C 3099 0062; # (a◌𑑆◌゙◌़◌̴b; a◌̴◌𑑆◌़◌゙b; a◌̴◌𑑆◌़◌゙b; a◌̴◌𑑆◌़◌゙b; a◌̴◌𑑆◌़◌゙b; ) LATIN SMALL LETTER A, NEWA SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 114C2 0062;0061 3099 094D 114C2 05B0 0062;0061 3099 094D 114C2 05B0 0062;0061 3099 094D 114C2 05B0 0062;0061 3099 094D 114C2 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘“‚b; a◌゙◌à¥â—Œð‘“‚◌ְb; a◌゙◌à¥â—Œð‘“‚◌ְb; a◌゙◌à¥â—Œð‘“‚◌ְb; a◌゙◌à¥â—Œð‘“‚◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TIRHUTA SIGN VIRAMA, LATIN SMALL LETTER B
+0061 114C2 05B0 094D 3099 0062;0061 3099 114C2 094D 05B0 0062;0061 3099 114C2 094D 05B0 0062;0061 3099 114C2 094D 05B0 0062;0061 3099 114C2 094D 05B0 0062; # (a◌𑓂◌ְ◌à¥â—Œã‚™b; a◌゙◌𑓂◌à¥â—ŒÖ°b; a◌゙◌𑓂◌à¥â—ŒÖ°b; a◌゙◌𑓂◌à¥â—ŒÖ°b; a◌゙◌𑓂◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TIRHUTA SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 114C3 0062;0061 0334 093C 114C3 3099 0062;0061 0334 093C 114C3 3099 0062;0061 0334 093C 114C3 3099 0062;0061 0334 093C 114C3 3099 0062; # (a◌゙◌़◌̴◌𑓃b; a◌̴◌़◌𑓃◌゙b; a◌̴◌़◌𑓃◌゙b; a◌̴◌़◌𑓃◌゙b; a◌̴◌़◌𑓃◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, TIRHUTA SIGN NUKTA, LATIN SMALL LETTER B
+0061 114C3 3099 093C 0334 0062;0061 0334 114C3 093C 3099 0062;0061 0334 114C3 093C 3099 0062;0061 0334 114C3 093C 3099 0062;0061 0334 114C3 093C 3099 0062; # (a◌𑓃◌゙◌़◌̴b; a◌̴◌𑓃◌़◌゙b; a◌̴◌𑓃◌़◌゙b; a◌̴◌𑓃◌़◌゙b; a◌̴◌𑓃◌़◌゙b; ) LATIN SMALL LETTER A, TIRHUTA SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 115BF 0062;0061 3099 094D 115BF 05B0 0062;0061 3099 094D 115BF 05B0 0062;0061 3099 094D 115BF 05B0 0062;0061 3099 094D 115BF 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘–¿b; a◌゙◌à¥â—Œð‘–¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘–¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘–¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘–¿â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, SIDDHAM SIGN VIRAMA, LATIN SMALL LETTER B
+0061 115BF 05B0 094D 3099 0062;0061 3099 115BF 094D 05B0 0062;0061 3099 115BF 094D 05B0 0062;0061 3099 115BF 094D 05B0 0062;0061 3099 115BF 094D 05B0 0062; # (a◌𑖿◌ְ◌à¥â—Œã‚™b; a◌゙◌𑖿◌à¥â—ŒÖ°b; a◌゙◌𑖿◌à¥â—ŒÖ°b; a◌゙◌𑖿◌à¥â—ŒÖ°b; a◌゙◌𑖿◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, SIDDHAM SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 115C0 0062;0061 0334 093C 115C0 3099 0062;0061 0334 093C 115C0 3099 0062;0061 0334 093C 115C0 3099 0062;0061 0334 093C 115C0 3099 0062; # (a◌゙◌़◌̴◌𑗀b; a◌̴◌़◌𑗀◌゙b; a◌̴◌़◌𑗀◌゙b; a◌̴◌़◌𑗀◌゙b; a◌̴◌़◌𑗀◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, SIDDHAM SIGN NUKTA, LATIN SMALL LETTER B
+0061 115C0 3099 093C 0334 0062;0061 0334 115C0 093C 3099 0062;0061 0334 115C0 093C 3099 0062;0061 0334 115C0 093C 3099 0062;0061 0334 115C0 093C 3099 0062; # (a◌𑗀◌゙◌़◌̴b; a◌̴◌𑗀◌़◌゙b; a◌̴◌𑗀◌़◌゙b; a◌̴◌𑗀◌़◌゙b; a◌̴◌𑗀◌़◌゙b; ) LATIN SMALL LETTER A, SIDDHAM SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1163F 0062;0061 3099 094D 1163F 05B0 0062;0061 3099 094D 1163F 05B0 0062;0061 3099 094D 1163F 05B0 0062;0061 3099 094D 1163F 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘˜¿b; a◌゙◌à¥â—Œð‘˜¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘˜¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘˜¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘˜¿â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, MODI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 1163F 05B0 094D 3099 0062;0061 3099 1163F 094D 05B0 0062;0061 3099 1163F 094D 05B0 0062;0061 3099 1163F 094D 05B0 0062;0061 3099 1163F 094D 05B0 0062; # (a◌𑘿◌ְ◌à¥â—Œã‚™b; a◌゙◌𑘿◌à¥â—ŒÖ°b; a◌゙◌𑘿◌à¥â—ŒÖ°b; a◌゙◌𑘿◌à¥â—ŒÖ°b; a◌゙◌𑘿◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, MODI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 116B6 0062;0061 3099 094D 116B6 05B0 0062;0061 3099 094D 116B6 05B0 0062;0061 3099 094D 116B6 05B0 0062;0061 3099 094D 116B6 05B0 0062; # (a◌ְ◌à¥â—Œã‚™ð‘š¶b; a◌゙◌à¥ð‘š¶â—ŒÖ°b; a◌゙◌à¥ð‘š¶â—ŒÖ°b; a◌゙◌à¥ð‘š¶â—ŒÖ°b; a◌゙◌à¥ð‘š¶â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TAKRI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 116B6 05B0 094D 3099 0062;0061 3099 116B6 094D 05B0 0062;0061 3099 116B6 094D 05B0 0062;0061 3099 116B6 094D 05B0 0062;0061 3099 116B6 094D 05B0 0062; # (a𑚶◌ְ◌à¥â—Œã‚™b; a◌゙𑚶◌à¥â—ŒÖ°b; a◌゙𑚶◌à¥â—ŒÖ°b; a◌゙𑚶◌à¥â—ŒÖ°b; a◌゙𑚶◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TAKRI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 116B7 0062;0061 0334 093C 116B7 3099 0062;0061 0334 093C 116B7 3099 0062;0061 0334 093C 116B7 3099 0062;0061 0334 093C 116B7 3099 0062; # (a◌゙◌़◌̴◌𑚷b; a◌̴◌़◌𑚷◌゙b; a◌̴◌़◌𑚷◌゙b; a◌̴◌़◌𑚷◌゙b; a◌̴◌़◌𑚷◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, TAKRI SIGN NUKTA, LATIN SMALL LETTER B
+0061 116B7 3099 093C 0334 0062;0061 0334 116B7 093C 3099 0062;0061 0334 116B7 093C 3099 0062;0061 0334 116B7 093C 3099 0062;0061 0334 116B7 093C 3099 0062; # (a◌𑚷◌゙◌़◌̴b; a◌̴◌𑚷◌़◌゙b; a◌̴◌𑚷◌़◌゙b; a◌̴◌𑚷◌़◌゙b; a◌̴◌𑚷◌़◌゙b; ) LATIN SMALL LETTER A, TAKRI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1172B 0062;0061 3099 094D 1172B 05B0 0062;0061 3099 094D 1172B 05B0 0062;0061 3099 094D 1172B 05B0 0062;0061 3099 094D 1172B 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘œ«b; a◌゙◌à¥â—Œð‘œ«â—ŒÖ°b; a◌゙◌à¥â—Œð‘œ«â—ŒÖ°b; a◌゙◌à¥â—Œð‘œ«â—ŒÖ°b; a◌゙◌à¥â—Œð‘œ«â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, AHOM SIGN KILLER, LATIN SMALL LETTER B
+0061 1172B 05B0 094D 3099 0062;0061 3099 1172B 094D 05B0 0062;0061 3099 1172B 094D 05B0 0062;0061 3099 1172B 094D 05B0 0062;0061 3099 1172B 094D 05B0 0062; # (a◌𑜫◌ְ◌à¥â—Œã‚™b; a◌゙◌𑜫◌à¥â—ŒÖ°b; a◌゙◌𑜫◌à¥â—ŒÖ°b; a◌゙◌𑜫◌à¥â—ŒÖ°b; a◌゙◌𑜫◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, AHOM SIGN KILLER, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 11C3F 0062;0061 3099 094D 11C3F 05B0 0062;0061 3099 094D 11C3F 05B0 0062;0061 3099 094D 11C3F 05B0 0062;0061 3099 094D 11C3F 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð‘°¿b; a◌゙◌à¥â—Œð‘°¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘°¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘°¿â—ŒÖ°b; a◌゙◌à¥â—Œð‘°¿â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, BHAIKSUKI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 11C3F 05B0 094D 3099 0062;0061 3099 11C3F 094D 05B0 0062;0061 3099 11C3F 094D 05B0 0062;0061 3099 11C3F 094D 05B0 0062;0061 3099 11C3F 094D 05B0 0062; # (a◌𑰿◌ְ◌à¥â—Œã‚™b; a◌゙◌𑰿◌à¥â—ŒÖ°b; a◌゙◌𑰿◌à¥â—ŒÖ°b; a◌゙◌𑰿◌à¥â—ŒÖ°b; a◌゙◌𑰿◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, BHAIKSUKI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 093C 0334 16AF0 0062;0061 0334 16AF0 093C 0062;0061 0334 16AF0 093C 0062;0061 0334 16AF0 093C 0062;0061 0334 16AF0 093C 0062; # (a◌़◌̴◌𖫰b; a◌̴◌𖫰◌़b; a◌̴◌𖫰◌़b; a◌̴◌𖫰◌़b; a◌̴◌𖫰◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BASSA VAH COMBINING HIGH TONE, LATIN SMALL LETTER B
+0061 16AF0 093C 0334 0062;0061 16AF0 0334 093C 0062;0061 16AF0 0334 093C 0062;0061 16AF0 0334 093C 0062;0061 16AF0 0334 093C 0062; # (a◌𖫰◌़◌̴b; a◌𖫰◌̴◌़b; a◌𖫰◌̴◌़b; a◌𖫰◌̴◌़b; a◌𖫰◌̴◌़b; ) LATIN SMALL LETTER A, BASSA VAH COMBINING HIGH TONE, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 16AF1 0062;0061 0334 16AF1 093C 0062;0061 0334 16AF1 093C 0062;0061 0334 16AF1 093C 0062;0061 0334 16AF1 093C 0062; # (a◌़◌̴◌𖫱b; a◌̴◌𖫱◌़b; a◌̴◌𖫱◌़b; a◌̴◌𖫱◌़b; a◌̴◌𖫱◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BASSA VAH COMBINING LOW TONE, LATIN SMALL LETTER B
+0061 16AF1 093C 0334 0062;0061 16AF1 0334 093C 0062;0061 16AF1 0334 093C 0062;0061 16AF1 0334 093C 0062;0061 16AF1 0334 093C 0062; # (a◌𖫱◌़◌̴b; a◌𖫱◌̴◌़b; a◌𖫱◌̴◌़b; a◌𖫱◌̴◌़b; a◌𖫱◌̴◌़b; ) LATIN SMALL LETTER A, BASSA VAH COMBINING LOW TONE, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 16AF2 0062;0061 0334 16AF2 093C 0062;0061 0334 16AF2 093C 0062;0061 0334 16AF2 093C 0062;0061 0334 16AF2 093C 0062; # (a◌़◌̴◌𖫲b; a◌̴◌𖫲◌़b; a◌̴◌𖫲◌़b; a◌̴◌𖫲◌़b; a◌̴◌𖫲◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BASSA VAH COMBINING MID TONE, LATIN SMALL LETTER B
+0061 16AF2 093C 0334 0062;0061 16AF2 0334 093C 0062;0061 16AF2 0334 093C 0062;0061 16AF2 0334 093C 0062;0061 16AF2 0334 093C 0062; # (a◌𖫲◌़◌̴b; a◌𖫲◌̴◌़b; a◌𖫲◌̴◌़b; a◌𖫲◌̴◌़b; a◌𖫲◌̴◌़b; ) LATIN SMALL LETTER A, BASSA VAH COMBINING MID TONE, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 16AF3 0062;0061 0334 16AF3 093C 0062;0061 0334 16AF3 093C 0062;0061 0334 16AF3 093C 0062;0061 0334 16AF3 093C 0062; # (a◌़◌̴◌𖫳b; a◌̴◌𖫳◌़b; a◌̴◌𖫳◌़b; a◌̴◌𖫳◌़b; a◌̴◌𖫳◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BASSA VAH COMBINING LOW-MID TONE, LATIN SMALL LETTER B
+0061 16AF3 093C 0334 0062;0061 16AF3 0334 093C 0062;0061 16AF3 0334 093C 0062;0061 16AF3 0334 093C 0062;0061 16AF3 0334 093C 0062; # (a◌𖫳◌़◌̴b; a◌𖫳◌̴◌़b; a◌𖫳◌̴◌़b; a◌𖫳◌̴◌़b; a◌𖫳◌̴◌़b; ) LATIN SMALL LETTER A, BASSA VAH COMBINING LOW-MID TONE, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 16AF4 0062;0061 0334 16AF4 093C 0062;0061 0334 16AF4 093C 0062;0061 0334 16AF4 093C 0062;0061 0334 16AF4 093C 0062; # (a◌़◌̴◌𖫴b; a◌̴◌𖫴◌़b; a◌̴◌𖫴◌़b; a◌̴◌𖫴◌़b; a◌̴◌𖫴◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BASSA VAH COMBINING HIGH-LOW TONE, LATIN SMALL LETTER B
+0061 16AF4 093C 0334 0062;0061 16AF4 0334 093C 0062;0061 16AF4 0334 093C 0062;0061 16AF4 0334 093C 0062;0061 16AF4 0334 093C 0062; # (a◌𖫴◌़◌̴b; a◌𖫴◌̴◌़b; a◌𖫴◌̴◌़b; a◌𖫴◌̴◌़b; a◌𖫴◌̴◌़b; ) LATIN SMALL LETTER A, BASSA VAH COMBINING HIGH-LOW TONE, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0315 0300 05AE 16B30 0062;00E0 05AE 16B30 0315 0062;0061 05AE 0300 16B30 0315 0062;00E0 05AE 16B30 0315 0062;0061 05AE 0300 16B30 0315 0062; # (a◌̕◌̀◌֮◌𖬰b; à◌֮◌𖬰◌̕b; a◌֮◌̀◌𖬰◌̕b; à◌֮◌𖬰◌̕b; a◌֮◌̀◌𖬰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, PAHAWH HMONG MARK CIM TUB, LATIN SMALL LETTER B
+0061 16B30 0315 0300 05AE 0062;0061 05AE 16B30 0300 0315 0062;0061 05AE 16B30 0300 0315 0062;0061 05AE 16B30 0300 0315 0062;0061 05AE 16B30 0300 0315 0062; # (a◌𖬰◌̕◌̀◌֮b; a◌֮◌𖬰◌̀◌̕b; a◌֮◌𖬰◌̀◌̕b; a◌֮◌𖬰◌̀◌̕b; a◌֮◌𖬰◌̀◌̕b; ) LATIN SMALL LETTER A, PAHAWH HMONG MARK CIM TUB, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 16B31 0062;00E0 05AE 16B31 0315 0062;0061 05AE 0300 16B31 0315 0062;00E0 05AE 16B31 0315 0062;0061 05AE 0300 16B31 0315 0062; # (a◌̕◌̀◌֮◌𖬱b; à◌֮◌𖬱◌̕b; a◌֮◌̀◌𖬱◌̕b; à◌֮◌𖬱◌̕b; a◌֮◌̀◌𖬱◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, PAHAWH HMONG MARK CIM SO, LATIN SMALL LETTER B
+0061 16B31 0315 0300 05AE 0062;0061 05AE 16B31 0300 0315 0062;0061 05AE 16B31 0300 0315 0062;0061 05AE 16B31 0300 0315 0062;0061 05AE 16B31 0300 0315 0062; # (a◌𖬱◌̕◌̀◌֮b; a◌֮◌𖬱◌̀◌̕b; a◌֮◌𖬱◌̀◌̕b; a◌֮◌𖬱◌̀◌̕b; a◌֮◌𖬱◌̀◌̕b; ) LATIN SMALL LETTER A, PAHAWH HMONG MARK CIM SO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 16B32 0062;00E0 05AE 16B32 0315 0062;0061 05AE 0300 16B32 0315 0062;00E0 05AE 16B32 0315 0062;0061 05AE 0300 16B32 0315 0062; # (a◌̕◌̀◌֮◌𖬲b; à◌֮◌𖬲◌̕b; a◌֮◌̀◌𖬲◌̕b; à◌֮◌𖬲◌̕b; a◌֮◌̀◌𖬲◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, PAHAWH HMONG MARK CIM KES, LATIN SMALL LETTER B
+0061 16B32 0315 0300 05AE 0062;0061 05AE 16B32 0300 0315 0062;0061 05AE 16B32 0300 0315 0062;0061 05AE 16B32 0300 0315 0062;0061 05AE 16B32 0300 0315 0062; # (a◌𖬲◌̕◌̀◌֮b; a◌֮◌𖬲◌̀◌̕b; a◌֮◌𖬲◌̀◌̕b; a◌֮◌𖬲◌̀◌̕b; a◌֮◌𖬲◌̀◌̕b; ) LATIN SMALL LETTER A, PAHAWH HMONG MARK CIM KES, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 16B33 0062;00E0 05AE 16B33 0315 0062;0061 05AE 0300 16B33 0315 0062;00E0 05AE 16B33 0315 0062;0061 05AE 0300 16B33 0315 0062; # (a◌̕◌̀◌֮◌𖬳b; à◌֮◌𖬳◌̕b; a◌֮◌̀◌𖬳◌̕b; à◌֮◌𖬳◌̕b; a◌֮◌̀◌𖬳◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, PAHAWH HMONG MARK CIM KHAV, LATIN SMALL LETTER B
+0061 16B33 0315 0300 05AE 0062;0061 05AE 16B33 0300 0315 0062;0061 05AE 16B33 0300 0315 0062;0061 05AE 16B33 0300 0315 0062;0061 05AE 16B33 0300 0315 0062; # (a◌𖬳◌̕◌̀◌֮b; a◌֮◌𖬳◌̀◌̕b; a◌֮◌𖬳◌̀◌̕b; a◌֮◌𖬳◌̀◌̕b; a◌֮◌𖬳◌̀◌̕b; ) LATIN SMALL LETTER A, PAHAWH HMONG MARK CIM KHAV, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 16B34 0062;00E0 05AE 16B34 0315 0062;0061 05AE 0300 16B34 0315 0062;00E0 05AE 16B34 0315 0062;0061 05AE 0300 16B34 0315 0062; # (a◌̕◌̀◌֮◌𖬴b; à◌֮◌𖬴◌̕b; a◌֮◌̀◌𖬴◌̕b; à◌֮◌𖬴◌̕b; a◌֮◌̀◌𖬴◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, PAHAWH HMONG MARK CIM SUAM, LATIN SMALL LETTER B
+0061 16B34 0315 0300 05AE 0062;0061 05AE 16B34 0300 0315 0062;0061 05AE 16B34 0300 0315 0062;0061 05AE 16B34 0300 0315 0062;0061 05AE 16B34 0300 0315 0062; # (a◌𖬴◌̕◌̀◌֮b; a◌֮◌𖬴◌̀◌̕b; a◌֮◌𖬴◌̀◌̕b; a◌֮◌𖬴◌̀◌̕b; a◌֮◌𖬴◌̀◌̕b; ) LATIN SMALL LETTER A, PAHAWH HMONG MARK CIM SUAM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 16B35 0062;00E0 05AE 16B35 0315 0062;0061 05AE 0300 16B35 0315 0062;00E0 05AE 16B35 0315 0062;0061 05AE 0300 16B35 0315 0062; # (a◌̕◌̀◌֮◌𖬵b; à◌֮◌𖬵◌̕b; a◌֮◌̀◌𖬵◌̕b; à◌֮◌𖬵◌̕b; a◌֮◌̀◌𖬵◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, PAHAWH HMONG MARK CIM HOM, LATIN SMALL LETTER B
+0061 16B35 0315 0300 05AE 0062;0061 05AE 16B35 0300 0315 0062;0061 05AE 16B35 0300 0315 0062;0061 05AE 16B35 0300 0315 0062;0061 05AE 16B35 0300 0315 0062; # (a◌𖬵◌̕◌̀◌֮b; a◌֮◌𖬵◌̀◌̕b; a◌֮◌𖬵◌̀◌̕b; a◌֮◌𖬵◌̀◌̕b; a◌֮◌𖬵◌̀◌̕b; ) LATIN SMALL LETTER A, PAHAWH HMONG MARK CIM HOM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 16B36 0062;00E0 05AE 16B36 0315 0062;0061 05AE 0300 16B36 0315 0062;00E0 05AE 16B36 0315 0062;0061 05AE 0300 16B36 0315 0062; # (a◌̕◌̀◌֮◌𖬶b; à◌֮◌𖬶◌̕b; a◌֮◌̀◌𖬶◌̕b; à◌֮◌𖬶◌̕b; a◌֮◌̀◌𖬶◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, PAHAWH HMONG MARK CIM TAUM, LATIN SMALL LETTER B
+0061 16B36 0315 0300 05AE 0062;0061 05AE 16B36 0300 0315 0062;0061 05AE 16B36 0300 0315 0062;0061 05AE 16B36 0300 0315 0062;0061 05AE 16B36 0300 0315 0062; # (a◌𖬶◌̕◌̀◌֮b; a◌֮◌𖬶◌̀◌̕b; a◌֮◌𖬶◌̀◌̕b; a◌֮◌𖬶◌̀◌̕b; a◌֮◌𖬶◌̀◌̕b; ) LATIN SMALL LETTER A, PAHAWH HMONG MARK CIM TAUM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 1BC9E 0062;0061 0334 1BC9E 093C 0062;0061 0334 1BC9E 093C 0062;0061 0334 1BC9E 093C 0062;0061 0334 1BC9E 093C 0062; # (a◌़◌̴◌𛲞b; a◌̴◌𛲞◌़b; a◌̴◌𛲞◌़b; a◌̴◌𛲞◌़b; a◌̴◌𛲞◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, DUPLOYAN DOUBLE MARK, LATIN SMALL LETTER B
+0061 1BC9E 093C 0334 0062;0061 1BC9E 0334 093C 0062;0061 1BC9E 0334 093C 0062;0061 1BC9E 0334 093C 0062;0061 1BC9E 0334 093C 0062; # (a◌𛲞◌़◌̴b; a◌𛲞◌̴◌़b; a◌𛲞◌̴◌़b; a◌𛲞◌̴◌़b; a◌𛲞◌̴◌़b; ) LATIN SMALL LETTER A, DUPLOYAN DOUBLE MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 302A 031B 1DCE 1D165 0062;0061 1DCE 031B 1D165 302A 0062;0061 1DCE 031B 1D165 302A 0062;0061 1DCE 031B 1D165 302A 0062;0061 1DCE 031B 1D165 302A 0062; # (a◌〪◌̛◌᷎ð…¥b; a◌᷎◌̛ð…¥â—Œã€ªb; a◌᷎◌̛ð…¥â—Œã€ªb; a◌᷎◌̛ð…¥â—Œã€ªb; a◌᷎◌̛ð…¥â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, MUSICAL SYMBOL COMBINING STEM, LATIN SMALL LETTER B
+0061 1D165 302A 031B 1DCE 0062;0061 1DCE 1D165 031B 302A 0062;0061 1DCE 1D165 031B 302A 0062;0061 1DCE 1D165 031B 302A 0062;0061 1DCE 1D165 031B 302A 0062; # (að…¥â—Œã€ªâ—ŒÌ›â—Œá·Žb; a◌᷎ð…¥â—ŒÌ›â—Œã€ªb; a◌᷎ð…¥â—ŒÌ›â—Œã€ªb; a◌᷎ð…¥â—ŒÌ›â—Œã€ªb; a◌᷎ð…¥â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING STEM, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
+0061 302A 031B 1DCE 1D166 0062;0061 1DCE 031B 1D166 302A 0062;0061 1DCE 031B 1D166 302A 0062;0061 1DCE 031B 1D166 302A 0062;0061 1DCE 031B 1D166 302A 0062; # (a◌〪◌̛◌᷎ð…¦b; a◌᷎◌̛ð…¦â—Œã€ªb; a◌᷎◌̛ð…¦â—Œã€ªb; a◌᷎◌̛ð…¦â—Œã€ªb; a◌᷎◌̛ð…¦â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, MUSICAL SYMBOL COMBINING SPRECHGESANG STEM, LATIN SMALL LETTER B
+0061 1D166 302A 031B 1DCE 0062;0061 1DCE 1D166 031B 302A 0062;0061 1DCE 1D166 031B 302A 0062;0061 1DCE 1D166 031B 302A 0062;0061 1DCE 1D166 031B 302A 0062; # (að…¦â—Œã€ªâ—ŒÌ›â—Œá·Žb; a◌᷎ð…¦â—ŒÌ›â—Œã€ªb; a◌᷎ð…¦â—ŒÌ›â—Œã€ªb; a◌᷎ð…¦â—ŒÌ›â—Œã€ªb; a◌᷎ð…¦â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING SPRECHGESANG STEM, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
+0061 093C 0334 1D167 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062; # (a◌़◌̴◌ð…§b; a◌̴◌ð…§â—Œà¤¼b; a◌̴◌ð…§â—Œà¤¼b; a◌̴◌ð…§â—Œà¤¼b; a◌̴◌ð…§â—Œà¤¼b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, MUSICAL SYMBOL COMBINING TREMOLO-1, LATIN SMALL LETTER B
+0061 1D167 093C 0334 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062; # (aâ—Œð…§â—Œà¤¼â—ŒÌ´b; aâ—Œð…§â—ŒÌ´â—Œà¤¼b; aâ—Œð…§â—ŒÌ´â—Œà¤¼b; aâ—Œð…§â—ŒÌ´â—Œà¤¼b; aâ—Œð…§â—ŒÌ´â—Œà¤¼b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING TREMOLO-1, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 1D168 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062; # (a◌़◌̴◌ð…¨b; a◌̴◌ð…¨â—Œà¤¼b; a◌̴◌ð…¨â—Œà¤¼b; a◌̴◌ð…¨â—Œà¤¼b; a◌̴◌ð…¨â—Œà¤¼b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, MUSICAL SYMBOL COMBINING TREMOLO-2, LATIN SMALL LETTER B
+0061 1D168 093C 0334 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062; # (aâ—Œð…¨â—Œà¤¼â—ŒÌ´b; aâ—Œð…¨â—ŒÌ´â—Œà¤¼b; aâ—Œð…¨â—ŒÌ´â—Œà¤¼b; aâ—Œð…¨â—ŒÌ´â—Œà¤¼b; aâ—Œð…¨â—ŒÌ´â—Œà¤¼b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING TREMOLO-2, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 1D169 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062; # (a◌़◌̴◌ð…©b; a◌̴◌ð…©â—Œà¤¼b; a◌̴◌ð…©â—Œà¤¼b; a◌̴◌ð…©â—Œà¤¼b; a◌̴◌ð…©â—Œà¤¼b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, MUSICAL SYMBOL COMBINING TREMOLO-3, LATIN SMALL LETTER B
+0061 1D169 093C 0334 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062; # (aâ—Œð…©â—Œà¤¼â—ŒÌ´b; aâ—Œð…©â—ŒÌ´â—Œà¤¼b; aâ—Œð…©â—ŒÌ´â—Œà¤¼b; aâ—Œð…©â—ŒÌ´â—Œà¤¼b; aâ—Œð…©â—ŒÌ´â—Œà¤¼b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING TREMOLO-3, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05AE 1D16D 302E 1D16D 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062; # (a◌֮ð…­ã€®ð…­b; a〮ð…­ð…­â—ŒÖ®b; a〮ð…­ð…­â—ŒÖ®b; a〮ð…­ð…­â—ŒÖ®b; a〮ð…­ð…­â—ŒÖ®b; ) LATIN SMALL LETTER A, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, LATIN SMALL LETTER B
+0061 1D16D 05AE 1D16D 302E 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062; # (að…­â—ŒÖ®ð…­ã€®b; a〮ð…­ð…­â—ŒÖ®b; a〮ð…­ð…­â—ŒÖ®b; a〮ð…­ð…­â—ŒÖ®b; a〮ð…­ð…­â—ŒÖ®b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, LATIN SMALL LETTER B
+0061 302A 031B 1DCE 1D16E 0062;0061 1DCE 031B 1D16E 302A 0062;0061 1DCE 031B 1D16E 302A 0062;0061 1DCE 031B 1D16E 302A 0062;0061 1DCE 031B 1D16E 302A 0062; # (a◌〪◌̛◌᷎ð…®b; a◌᷎◌̛ð…®â—Œã€ªb; a◌᷎◌̛ð…®â—Œã€ªb; a◌᷎◌̛ð…®â—Œã€ªb; a◌᷎◌̛ð…®â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, MUSICAL SYMBOL COMBINING FLAG-1, LATIN SMALL LETTER B
+0061 1D16E 302A 031B 1DCE 0062;0061 1DCE 1D16E 031B 302A 0062;0061 1DCE 1D16E 031B 302A 0062;0061 1DCE 1D16E 031B 302A 0062;0061 1DCE 1D16E 031B 302A 0062; # (að…®â—Œã€ªâ—ŒÌ›â—Œá·Žb; a◌᷎ð…®â—ŒÌ›â—Œã€ªb; a◌᷎ð…®â—ŒÌ›â—Œã€ªb; a◌᷎ð…®â—ŒÌ›â—Œã€ªb; a◌᷎ð…®â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-1, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
+0061 302A 031B 1DCE 1D16F 0062;0061 1DCE 031B 1D16F 302A 0062;0061 1DCE 031B 1D16F 302A 0062;0061 1DCE 031B 1D16F 302A 0062;0061 1DCE 031B 1D16F 302A 0062; # (a◌〪◌̛◌᷎ð…¯b; a◌᷎◌̛ð…¯â—Œã€ªb; a◌᷎◌̛ð…¯â—Œã€ªb; a◌᷎◌̛ð…¯â—Œã€ªb; a◌᷎◌̛ð…¯â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, MUSICAL SYMBOL COMBINING FLAG-2, LATIN SMALL LETTER B
+0061 1D16F 302A 031B 1DCE 0062;0061 1DCE 1D16F 031B 302A 0062;0061 1DCE 1D16F 031B 302A 0062;0061 1DCE 1D16F 031B 302A 0062;0061 1DCE 1D16F 031B 302A 0062; # (að…¯â—Œã€ªâ—ŒÌ›â—Œá·Žb; a◌᷎ð…¯â—ŒÌ›â—Œã€ªb; a◌᷎ð…¯â—ŒÌ›â—Œã€ªb; a◌᷎ð…¯â—ŒÌ›â—Œã€ªb; a◌᷎ð…¯â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-2, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
+0061 302A 031B 1DCE 1D170 0062;0061 1DCE 031B 1D170 302A 0062;0061 1DCE 031B 1D170 302A 0062;0061 1DCE 031B 1D170 302A 0062;0061 1DCE 031B 1D170 302A 0062; # (a◌〪◌̛◌᷎ð…°b; a◌᷎◌̛ð…°â—Œã€ªb; a◌᷎◌̛ð…°â—Œã€ªb; a◌᷎◌̛ð…°â—Œã€ªb; a◌᷎◌̛ð…°â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, MUSICAL SYMBOL COMBINING FLAG-3, LATIN SMALL LETTER B
+0061 1D170 302A 031B 1DCE 0062;0061 1DCE 1D170 031B 302A 0062;0061 1DCE 1D170 031B 302A 0062;0061 1DCE 1D170 031B 302A 0062;0061 1DCE 1D170 031B 302A 0062; # (að…°â—Œã€ªâ—ŒÌ›â—Œá·Žb; a◌᷎ð…°â—ŒÌ›â—Œã€ªb; a◌᷎ð…°â—ŒÌ›â—Œã€ªb; a◌᷎ð…°â—ŒÌ›â—Œã€ªb; a◌᷎ð…°â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-3, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
+0061 302A 031B 1DCE 1D171 0062;0061 1DCE 031B 1D171 302A 0062;0061 1DCE 031B 1D171 302A 0062;0061 1DCE 031B 1D171 302A 0062;0061 1DCE 031B 1D171 302A 0062; # (a◌〪◌̛◌᷎ð…±b; a◌᷎◌̛ð…±â—Œã€ªb; a◌᷎◌̛ð…±â—Œã€ªb; a◌᷎◌̛ð…±â—Œã€ªb; a◌᷎◌̛ð…±â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, MUSICAL SYMBOL COMBINING FLAG-4, LATIN SMALL LETTER B
+0061 1D171 302A 031B 1DCE 0062;0061 1DCE 1D171 031B 302A 0062;0061 1DCE 1D171 031B 302A 0062;0061 1DCE 1D171 031B 302A 0062;0061 1DCE 1D171 031B 302A 0062; # (að…±â—Œã€ªâ—ŒÌ›â—Œá·Žb; a◌᷎ð…±â—ŒÌ›â—Œã€ªb; a◌᷎ð…±â—ŒÌ›â—Œã€ªb; a◌᷎ð…±â—ŒÌ›â—Œã€ªb; a◌᷎ð…±â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-4, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
+0061 302A 031B 1DCE 1D172 0062;0061 1DCE 031B 1D172 302A 0062;0061 1DCE 031B 1D172 302A 0062;0061 1DCE 031B 1D172 302A 0062;0061 1DCE 031B 1D172 302A 0062; # (a◌〪◌̛◌᷎ð…²b; a◌᷎◌̛ð…²â—Œã€ªb; a◌᷎◌̛ð…²â—Œã€ªb; a◌᷎◌̛ð…²â—Œã€ªb; a◌᷎◌̛ð…²â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, MUSICAL SYMBOL COMBINING FLAG-5, LATIN SMALL LETTER B
+0061 1D172 302A 031B 1DCE 0062;0061 1DCE 1D172 031B 302A 0062;0061 1DCE 1D172 031B 302A 0062;0061 1DCE 1D172 031B 302A 0062;0061 1DCE 1D172 031B 302A 0062; # (að…²â—Œã€ªâ—ŒÌ›â—Œá·Žb; a◌᷎ð…²â—ŒÌ›â—Œã€ªb; a◌᷎ð…²â—ŒÌ›â—Œã€ªb; a◌᷎ð…²â—ŒÌ›â—Œã€ªb; a◌᷎ð…²â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-5, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D17B 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062; # (a◌֚◌̖◌〪◌ð…»b; a◌〪◌̖◌ð…»â—ŒÖšb; a◌〪◌̖◌ð…»â—ŒÖšb; a◌〪◌̖◌ð…»â—ŒÖšb; a◌〪◌̖◌ð…»â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING ACCENT, LATIN SMALL LETTER B
+0061 1D17B 059A 0316 302A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062; # (aâ—Œð…»â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð…»â—ŒÌ–◌֚b; a◌〪◌ð…»â—ŒÌ–◌֚b; a◌〪◌ð…»â—ŒÌ–◌֚b; a◌〪◌ð…»â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING ACCENT, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D17C 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062; # (a◌֚◌̖◌〪◌ð…¼b; a◌〪◌̖◌ð…¼â—ŒÖšb; a◌〪◌̖◌ð…¼â—ŒÖšb; a◌〪◌̖◌ð…¼â—ŒÖšb; a◌〪◌̖◌ð…¼â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING STACCATO, LATIN SMALL LETTER B
+0061 1D17C 059A 0316 302A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062; # (aâ—Œð…¼â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð…¼â—ŒÌ–◌֚b; a◌〪◌ð…¼â—ŒÌ–◌֚b; a◌〪◌ð…¼â—ŒÌ–◌֚b; a◌〪◌ð…¼â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING STACCATO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D17D 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062; # (a◌֚◌̖◌〪◌ð…½b; a◌〪◌̖◌ð…½â—ŒÖšb; a◌〪◌̖◌ð…½â—ŒÖšb; a◌〪◌̖◌ð…½â—ŒÖšb; a◌〪◌̖◌ð…½â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING TENUTO, LATIN SMALL LETTER B
+0061 1D17D 059A 0316 302A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062; # (aâ—Œð…½â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð…½â—ŒÌ–◌֚b; a◌〪◌ð…½â—ŒÌ–◌֚b; a◌〪◌ð…½â—ŒÌ–◌֚b; a◌〪◌ð…½â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING TENUTO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D17E 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062; # (a◌֚◌̖◌〪◌ð…¾b; a◌〪◌̖◌ð…¾â—ŒÖšb; a◌〪◌̖◌ð…¾â—ŒÖšb; a◌〪◌̖◌ð…¾â—ŒÖšb; a◌〪◌̖◌ð…¾â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING STACCATISSIMO, LATIN SMALL LETTER B
+0061 1D17E 059A 0316 302A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062; # (aâ—Œð…¾â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð…¾â—ŒÌ–◌֚b; a◌〪◌ð…¾â—ŒÌ–◌֚b; a◌〪◌ð…¾â—ŒÌ–◌֚b; a◌〪◌ð…¾â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING STACCATISSIMO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D17F 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062; # (a◌֚◌̖◌〪◌ð…¿b; a◌〪◌̖◌ð…¿â—ŒÖšb; a◌〪◌̖◌ð…¿â—ŒÖšb; a◌〪◌̖◌ð…¿â—ŒÖšb; a◌〪◌̖◌ð…¿â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING MARCATO, LATIN SMALL LETTER B
+0061 1D17F 059A 0316 302A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062; # (aâ—Œð…¿â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð…¿â—ŒÌ–◌֚b; a◌〪◌ð…¿â—ŒÌ–◌֚b; a◌〪◌ð…¿â—ŒÌ–◌֚b; a◌〪◌ð…¿â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING MARCATO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D180 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062; # (a◌֚◌̖◌〪◌ð†€b; a◌〪◌̖◌ð†€â—ŒÖšb; a◌〪◌̖◌ð†€â—ŒÖšb; a◌〪◌̖◌ð†€â—ŒÖšb; a◌〪◌̖◌ð†€â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING MARCATO-STACCATO, LATIN SMALL LETTER B
+0061 1D180 059A 0316 302A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062; # (aâ—Œð†€â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð†€â—ŒÌ–◌֚b; a◌〪◌ð†€â—ŒÌ–◌֚b; a◌〪◌ð†€â—ŒÌ–◌֚b; a◌〪◌ð†€â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING MARCATO-STACCATO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D181 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062; # (a◌֚◌̖◌〪◌ð†b; a◌〪◌̖◌ð†â—ŒÖšb; a◌〪◌̖◌ð†â—ŒÖšb; a◌〪◌̖◌ð†â—ŒÖšb; a◌〪◌̖◌ð†â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING ACCENT-STACCATO, LATIN SMALL LETTER B
+0061 1D181 059A 0316 302A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062; # (aâ—Œð†â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð†â—ŒÌ–◌֚b; a◌〪◌ð†â—ŒÌ–◌֚b; a◌〪◌ð†â—ŒÌ–◌֚b; a◌〪◌ð†â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING ACCENT-STACCATO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D182 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062; # (a◌֚◌̖◌〪◌ð†‚b; a◌〪◌̖◌ð†‚◌֚b; a◌〪◌̖◌ð†‚◌֚b; a◌〪◌̖◌ð†‚◌֚b; a◌〪◌̖◌ð†‚◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING LOURE, LATIN SMALL LETTER B
+0061 1D182 059A 0316 302A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062; # (aâ—Œð†‚◌֚◌̖◌〪b; a◌〪◌ð†‚◌̖◌֚b; a◌〪◌ð†‚◌̖◌֚b; a◌〪◌ð†‚◌̖◌֚b; a◌〪◌ð†‚◌̖◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING LOURE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D185 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062; # (a◌̕◌̀◌֮◌ð†…b; à◌֮◌ð†…◌̕b; a◌֮◌̀◌ð†…◌̕b; à◌֮◌ð†…◌̕b; a◌֮◌̀◌ð†…◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING DOIT, LATIN SMALL LETTER B
+0061 1D185 0315 0300 05AE 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062; # (aâ—Œð†…◌̕◌̀◌֮b; a◌֮◌ð†…◌̀◌̕b; a◌֮◌ð†…◌̀◌̕b; a◌֮◌ð†…◌̀◌̕b; a◌֮◌ð†…◌̀◌̕b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING DOIT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D186 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062; # (a◌̕◌̀◌֮◌ð††b; à◌֮◌ð††â—ŒÌ•b; a◌֮◌̀◌ð††â—ŒÌ•b; à◌֮◌ð††â—ŒÌ•b; a◌֮◌̀◌ð††â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING RIP, LATIN SMALL LETTER B
+0061 1D186 0315 0300 05AE 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062; # (aâ—Œð††â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð††â—ŒÌ€â—ŒÌ•b; a◌֮◌ð††â—ŒÌ€â—ŒÌ•b; a◌֮◌ð††â—ŒÌ€â—ŒÌ•b; a◌֮◌ð††â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING RIP, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D187 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062; # (a◌̕◌̀◌֮◌ð†‡b; à◌֮◌ð†‡â—ŒÌ•b; a◌֮◌̀◌ð†‡â—ŒÌ•b; à◌֮◌ð†‡â—ŒÌ•b; a◌֮◌̀◌ð†‡â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING FLIP, LATIN SMALL LETTER B
+0061 1D187 0315 0300 05AE 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062; # (aâ—Œð†‡â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†‡â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‡â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‡â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‡â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLIP, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D188 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062; # (a◌̕◌̀◌֮◌ð†ˆb; à◌֮◌ð†ˆâ—ŒÌ•b; a◌֮◌̀◌ð†ˆâ—ŒÌ•b; à◌֮◌ð†ˆâ—ŒÌ•b; a◌֮◌̀◌ð†ˆâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING SMEAR, LATIN SMALL LETTER B
+0061 1D188 0315 0300 05AE 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062; # (aâ—Œð†ˆâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†ˆâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ˆâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ˆâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ˆâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING SMEAR, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D189 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062; # (a◌̕◌̀◌֮◌ð†‰b; à◌֮◌ð†‰â—ŒÌ•b; a◌֮◌̀◌ð†‰â—ŒÌ•b; à◌֮◌ð†‰â—ŒÌ•b; a◌֮◌̀◌ð†‰â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING BEND, LATIN SMALL LETTER B
+0061 1D189 0315 0300 05AE 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062; # (aâ—Œð†‰â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†‰â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‰â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‰â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‰â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING BEND, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D18A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062; # (a◌֚◌̖◌〪◌ð†Šb; a◌〪◌̖◌ð†Šâ—ŒÖšb; a◌〪◌̖◌ð†Šâ—ŒÖšb; a◌〪◌̖◌ð†Šâ—ŒÖšb; a◌〪◌̖◌ð†Šâ—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING DOUBLE TONGUE, LATIN SMALL LETTER B
+0061 1D18A 059A 0316 302A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062; # (aâ—Œð†Šâ—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð†Šâ—ŒÌ–◌֚b; a◌〪◌ð†Šâ—ŒÌ–◌֚b; a◌〪◌ð†Šâ—ŒÌ–◌֚b; a◌〪◌ð†Šâ—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING DOUBLE TONGUE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D18B 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062; # (a◌֚◌̖◌〪◌ð†‹b; a◌〪◌̖◌ð†‹â—ŒÖšb; a◌〪◌̖◌ð†‹â—ŒÖšb; a◌〪◌̖◌ð†‹â—ŒÖšb; a◌〪◌̖◌ð†‹â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING TRIPLE TONGUE, LATIN SMALL LETTER B
+0061 1D18B 059A 0316 302A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062; # (aâ—Œð†‹â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð†‹â—ŒÌ–◌֚b; a◌〪◌ð†‹â—ŒÌ–◌֚b; a◌〪◌ð†‹â—ŒÌ–◌֚b; a◌〪◌ð†‹â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING TRIPLE TONGUE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D1AA 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062; # (a◌̕◌̀◌֮◌ð†ªb; à◌֮◌ð†ªâ—ŒÌ•b; a◌֮◌̀◌ð†ªâ—ŒÌ•b; à◌֮◌ð†ªâ—ŒÌ•b; a◌֮◌̀◌ð†ªâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING DOWN BOW, LATIN SMALL LETTER B
+0061 1D1AA 0315 0300 05AE 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062; # (aâ—Œð†ªâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†ªâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ªâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ªâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ªâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING DOWN BOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D1AB 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062; # (a◌̕◌̀◌֮◌ð†«b; à◌֮◌ð†«â—ŒÌ•b; a◌֮◌̀◌ð†«â—ŒÌ•b; à◌֮◌ð†«â—ŒÌ•b; a◌֮◌̀◌ð†«â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING UP BOW, LATIN SMALL LETTER B
+0061 1D1AB 0315 0300 05AE 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062; # (aâ—Œð†«â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†«â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†«â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†«â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†«â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING UP BOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D1AC 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062; # (a◌̕◌̀◌֮◌ð†¬b; à◌֮◌ð†¬â—ŒÌ•b; a◌֮◌̀◌ð†¬â—ŒÌ•b; à◌֮◌ð†¬â—ŒÌ•b; a◌֮◌̀◌ð†¬â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING HARMONIC, LATIN SMALL LETTER B
+0061 1D1AC 0315 0300 05AE 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062; # (aâ—Œð†¬â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†¬â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†¬â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†¬â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†¬â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING HARMONIC, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D1AD 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062; # (a◌̕◌̀◌֮◌ð†­b; à◌֮◌ð†­â—ŒÌ•b; a◌֮◌̀◌ð†­â—ŒÌ•b; à◌֮◌ð†­â—ŒÌ•b; a◌֮◌̀◌ð†­â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING SNAP PIZZICATO, LATIN SMALL LETTER B
+0061 1D1AD 0315 0300 05AE 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062; # (aâ—Œð†­â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†­â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†­â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†­â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†­â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING SNAP PIZZICATO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D242 0062;00E0 05AE 1D242 0315 0062;0061 05AE 0300 1D242 0315 0062;00E0 05AE 1D242 0315 0062;0061 05AE 0300 1D242 0315 0062; # (a◌̕◌̀◌֮◌ð‰‚b; à◌֮◌ð‰‚◌̕b; a◌֮◌̀◌ð‰‚◌̕b; à◌֮◌ð‰‚◌̕b; a◌֮◌̀◌ð‰‚◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK MUSICAL TRISEME, LATIN SMALL LETTER B
+0061 1D242 0315 0300 05AE 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062; # (aâ—Œð‰‚◌̕◌̀◌֮b; a◌֮◌ð‰‚◌̀◌̕b; a◌֮◌ð‰‚◌̀◌̕b; a◌֮◌ð‰‚◌̀◌̕b; a◌֮◌ð‰‚◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GREEK MUSICAL TRISEME, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D243 0062;00E0 05AE 1D243 0315 0062;0061 05AE 0300 1D243 0315 0062;00E0 05AE 1D243 0315 0062;0061 05AE 0300 1D243 0315 0062; # (a◌̕◌̀◌֮◌ð‰ƒb; à◌֮◌ð‰ƒâ—ŒÌ•b; a◌֮◌̀◌ð‰ƒâ—ŒÌ•b; à◌֮◌ð‰ƒâ—ŒÌ•b; a◌֮◌̀◌ð‰ƒâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK MUSICAL TETRASEME, LATIN SMALL LETTER B
+0061 1D243 0315 0300 05AE 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062; # (aâ—Œð‰ƒâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‰ƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð‰ƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð‰ƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð‰ƒâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GREEK MUSICAL TETRASEME, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D244 0062;00E0 05AE 1D244 0315 0062;0061 05AE 0300 1D244 0315 0062;00E0 05AE 1D244 0315 0062;0061 05AE 0300 1D244 0315 0062; # (a◌̕◌̀◌֮◌ð‰„b; à◌֮◌ð‰„◌̕b; a◌֮◌̀◌ð‰„◌̕b; à◌֮◌ð‰„◌̕b; a◌֮◌̀◌ð‰„◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK MUSICAL PENTASEME, LATIN SMALL LETTER B
+0061 1D244 0315 0300 05AE 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062; # (aâ—Œð‰„◌̕◌̀◌֮b; a◌֮◌ð‰„◌̀◌̕b; a◌֮◌ð‰„◌̀◌̕b; a◌֮◌ð‰„◌̀◌̕b; a◌֮◌ð‰„◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GREEK MUSICAL PENTASEME, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E000 0062;00E0 05AE 1E000 0315 0062;0061 05AE 0300 1E000 0315 0062;00E0 05AE 1E000 0315 0062;0061 05AE 0300 1E000 0315 0062; # (a◌̕◌̀◌֮◌𞀀b; à◌֮◌𞀀◌̕b; a◌֮◌̀◌𞀀◌̕b; à◌֮◌𞀀◌̕b; a◌֮◌̀◌𞀀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER AZU, LATIN SMALL LETTER B
+0061 1E000 0315 0300 05AE 0062;0061 05AE 1E000 0300 0315 0062;0061 05AE 1E000 0300 0315 0062;0061 05AE 1E000 0300 0315 0062;0061 05AE 1E000 0300 0315 0062; # (a◌𞀀◌̕◌̀◌֮b; a◌֮◌𞀀◌̀◌̕b; a◌֮◌𞀀◌̀◌̕b; a◌֮◌𞀀◌̀◌̕b; a◌֮◌𞀀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER AZU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E001 0062;00E0 05AE 1E001 0315 0062;0061 05AE 0300 1E001 0315 0062;00E0 05AE 1E001 0315 0062;0061 05AE 0300 1E001 0315 0062; # (a◌̕◌̀◌֮◌ðž€b; à◌֮◌ðž€â—ŒÌ•b; a◌֮◌̀◌ðž€â—ŒÌ•b; à◌֮◌ðž€â—ŒÌ•b; a◌֮◌̀◌ðž€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER BUKY, LATIN SMALL LETTER B
+0061 1E001 0315 0300 05AE 0062;0061 05AE 1E001 0300 0315 0062;0061 05AE 1E001 0300 0315 0062;0061 05AE 1E001 0300 0315 0062;0061 05AE 1E001 0300 0315 0062; # (aâ—Œðž€â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER BUKY, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E002 0062;00E0 05AE 1E002 0315 0062;0061 05AE 0300 1E002 0315 0062;00E0 05AE 1E002 0315 0062;0061 05AE 0300 1E002 0315 0062; # (a◌̕◌̀◌֮◌𞀂b; à◌֮◌𞀂◌̕b; a◌֮◌̀◌𞀂◌̕b; à◌֮◌𞀂◌̕b; a◌֮◌̀◌𞀂◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER VEDE, LATIN SMALL LETTER B
+0061 1E002 0315 0300 05AE 0062;0061 05AE 1E002 0300 0315 0062;0061 05AE 1E002 0300 0315 0062;0061 05AE 1E002 0300 0315 0062;0061 05AE 1E002 0300 0315 0062; # (a◌𞀂◌̕◌̀◌֮b; a◌֮◌𞀂◌̀◌̕b; a◌֮◌𞀂◌̀◌̕b; a◌֮◌𞀂◌̀◌̕b; a◌֮◌𞀂◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER VEDE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E003 0062;00E0 05AE 1E003 0315 0062;0061 05AE 0300 1E003 0315 0062;00E0 05AE 1E003 0315 0062;0061 05AE 0300 1E003 0315 0062; # (a◌̕◌̀◌֮◌𞀃b; à◌֮◌𞀃◌̕b; a◌֮◌̀◌𞀃◌̕b; à◌֮◌𞀃◌̕b; a◌֮◌̀◌𞀃◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER GLAGOLI, LATIN SMALL LETTER B
+0061 1E003 0315 0300 05AE 0062;0061 05AE 1E003 0300 0315 0062;0061 05AE 1E003 0300 0315 0062;0061 05AE 1E003 0300 0315 0062;0061 05AE 1E003 0300 0315 0062; # (a◌𞀃◌̕◌̀◌֮b; a◌֮◌𞀃◌̀◌̕b; a◌֮◌𞀃◌̀◌̕b; a◌֮◌𞀃◌̀◌̕b; a◌֮◌𞀃◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER GLAGOLI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E004 0062;00E0 05AE 1E004 0315 0062;0061 05AE 0300 1E004 0315 0062;00E0 05AE 1E004 0315 0062;0061 05AE 0300 1E004 0315 0062; # (a◌̕◌̀◌֮◌𞀄b; à◌֮◌𞀄◌̕b; a◌֮◌̀◌𞀄◌̕b; à◌֮◌𞀄◌̕b; a◌֮◌̀◌𞀄◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER DOBRO, LATIN SMALL LETTER B
+0061 1E004 0315 0300 05AE 0062;0061 05AE 1E004 0300 0315 0062;0061 05AE 1E004 0300 0315 0062;0061 05AE 1E004 0300 0315 0062;0061 05AE 1E004 0300 0315 0062; # (a◌𞀄◌̕◌̀◌֮b; a◌֮◌𞀄◌̀◌̕b; a◌֮◌𞀄◌̀◌̕b; a◌֮◌𞀄◌̀◌̕b; a◌֮◌𞀄◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER DOBRO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E005 0062;00E0 05AE 1E005 0315 0062;0061 05AE 0300 1E005 0315 0062;00E0 05AE 1E005 0315 0062;0061 05AE 0300 1E005 0315 0062; # (a◌̕◌̀◌֮◌𞀅b; à◌֮◌𞀅◌̕b; a◌֮◌̀◌𞀅◌̕b; à◌֮◌𞀅◌̕b; a◌֮◌̀◌𞀅◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER YESTU, LATIN SMALL LETTER B
+0061 1E005 0315 0300 05AE 0062;0061 05AE 1E005 0300 0315 0062;0061 05AE 1E005 0300 0315 0062;0061 05AE 1E005 0300 0315 0062;0061 05AE 1E005 0300 0315 0062; # (a◌𞀅◌̕◌̀◌֮b; a◌֮◌𞀅◌̀◌̕b; a◌֮◌𞀅◌̀◌̕b; a◌֮◌𞀅◌̀◌̕b; a◌֮◌𞀅◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER YESTU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E006 0062;00E0 05AE 1E006 0315 0062;0061 05AE 0300 1E006 0315 0062;00E0 05AE 1E006 0315 0062;0061 05AE 0300 1E006 0315 0062; # (a◌̕◌̀◌֮◌𞀆b; à◌֮◌𞀆◌̕b; a◌֮◌̀◌𞀆◌̕b; à◌֮◌𞀆◌̕b; a◌֮◌̀◌𞀆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER ZHIVETE, LATIN SMALL LETTER B
+0061 1E006 0315 0300 05AE 0062;0061 05AE 1E006 0300 0315 0062;0061 05AE 1E006 0300 0315 0062;0061 05AE 1E006 0300 0315 0062;0061 05AE 1E006 0300 0315 0062; # (a◌𞀆◌̕◌̀◌֮b; a◌֮◌𞀆◌̀◌̕b; a◌֮◌𞀆◌̀◌̕b; a◌֮◌𞀆◌̀◌̕b; a◌֮◌𞀆◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER ZHIVETE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E008 0062;00E0 05AE 1E008 0315 0062;0061 05AE 0300 1E008 0315 0062;00E0 05AE 1E008 0315 0062;0061 05AE 0300 1E008 0315 0062; # (a◌̕◌̀◌֮◌𞀈b; à◌֮◌𞀈◌̕b; a◌֮◌̀◌𞀈◌̕b; à◌֮◌𞀈◌̕b; a◌֮◌̀◌𞀈◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER ZEMLJA, LATIN SMALL LETTER B
+0061 1E008 0315 0300 05AE 0062;0061 05AE 1E008 0300 0315 0062;0061 05AE 1E008 0300 0315 0062;0061 05AE 1E008 0300 0315 0062;0061 05AE 1E008 0300 0315 0062; # (a◌𞀈◌̕◌̀◌֮b; a◌֮◌𞀈◌̀◌̕b; a◌֮◌𞀈◌̀◌̕b; a◌֮◌𞀈◌̀◌̕b; a◌֮◌𞀈◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER ZEMLJA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E009 0062;00E0 05AE 1E009 0315 0062;0061 05AE 0300 1E009 0315 0062;00E0 05AE 1E009 0315 0062;0061 05AE 0300 1E009 0315 0062; # (a◌̕◌̀◌֮◌𞀉b; à◌֮◌𞀉◌̕b; a◌֮◌̀◌𞀉◌̕b; à◌֮◌𞀉◌̕b; a◌֮◌̀◌𞀉◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER IZHE, LATIN SMALL LETTER B
+0061 1E009 0315 0300 05AE 0062;0061 05AE 1E009 0300 0315 0062;0061 05AE 1E009 0300 0315 0062;0061 05AE 1E009 0300 0315 0062;0061 05AE 1E009 0300 0315 0062; # (a◌𞀉◌̕◌̀◌֮b; a◌֮◌𞀉◌̀◌̕b; a◌֮◌𞀉◌̀◌̕b; a◌֮◌𞀉◌̀◌̕b; a◌֮◌𞀉◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER IZHE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E00A 0062;00E0 05AE 1E00A 0315 0062;0061 05AE 0300 1E00A 0315 0062;00E0 05AE 1E00A 0315 0062;0061 05AE 0300 1E00A 0315 0062; # (a◌̕◌̀◌֮◌𞀊b; à◌֮◌𞀊◌̕b; a◌֮◌̀◌𞀊◌̕b; à◌֮◌𞀊◌̕b; a◌֮◌̀◌𞀊◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER INITIAL IZHE, LATIN SMALL LETTER B
+0061 1E00A 0315 0300 05AE 0062;0061 05AE 1E00A 0300 0315 0062;0061 05AE 1E00A 0300 0315 0062;0061 05AE 1E00A 0300 0315 0062;0061 05AE 1E00A 0300 0315 0062; # (a◌𞀊◌̕◌̀◌֮b; a◌֮◌𞀊◌̀◌̕b; a◌֮◌𞀊◌̀◌̕b; a◌֮◌𞀊◌̀◌̕b; a◌֮◌𞀊◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER INITIAL IZHE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E00B 0062;00E0 05AE 1E00B 0315 0062;0061 05AE 0300 1E00B 0315 0062;00E0 05AE 1E00B 0315 0062;0061 05AE 0300 1E00B 0315 0062; # (a◌̕◌̀◌֮◌𞀋b; à◌֮◌𞀋◌̕b; a◌֮◌̀◌𞀋◌̕b; à◌֮◌𞀋◌̕b; a◌֮◌̀◌𞀋◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER I, LATIN SMALL LETTER B
+0061 1E00B 0315 0300 05AE 0062;0061 05AE 1E00B 0300 0315 0062;0061 05AE 1E00B 0300 0315 0062;0061 05AE 1E00B 0300 0315 0062;0061 05AE 1E00B 0300 0315 0062; # (a◌𞀋◌̕◌̀◌֮b; a◌֮◌𞀋◌̀◌̕b; a◌֮◌𞀋◌̀◌̕b; a◌֮◌𞀋◌̀◌̕b; a◌֮◌𞀋◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER I, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E00C 0062;00E0 05AE 1E00C 0315 0062;0061 05AE 0300 1E00C 0315 0062;00E0 05AE 1E00C 0315 0062;0061 05AE 0300 1E00C 0315 0062; # (a◌̕◌̀◌֮◌𞀌b; à◌֮◌𞀌◌̕b; a◌֮◌̀◌𞀌◌̕b; à◌֮◌𞀌◌̕b; a◌֮◌̀◌𞀌◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER DJERVI, LATIN SMALL LETTER B
+0061 1E00C 0315 0300 05AE 0062;0061 05AE 1E00C 0300 0315 0062;0061 05AE 1E00C 0300 0315 0062;0061 05AE 1E00C 0300 0315 0062;0061 05AE 1E00C 0300 0315 0062; # (a◌𞀌◌̕◌̀◌֮b; a◌֮◌𞀌◌̀◌̕b; a◌֮◌𞀌◌̀◌̕b; a◌֮◌𞀌◌̀◌̕b; a◌֮◌𞀌◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER DJERVI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E00D 0062;00E0 05AE 1E00D 0315 0062;0061 05AE 0300 1E00D 0315 0062;00E0 05AE 1E00D 0315 0062;0061 05AE 0300 1E00D 0315 0062; # (a◌̕◌̀◌֮◌ðž€b; à◌֮◌ðž€â—ŒÌ•b; a◌֮◌̀◌ðž€â—ŒÌ•b; à◌֮◌ðž€â—ŒÌ•b; a◌֮◌̀◌ðž€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER KAKO, LATIN SMALL LETTER B
+0061 1E00D 0315 0300 05AE 0062;0061 05AE 1E00D 0300 0315 0062;0061 05AE 1E00D 0300 0315 0062;0061 05AE 1E00D 0300 0315 0062;0061 05AE 1E00D 0300 0315 0062; # (aâ—Œðž€â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER KAKO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E00E 0062;00E0 05AE 1E00E 0315 0062;0061 05AE 0300 1E00E 0315 0062;00E0 05AE 1E00E 0315 0062;0061 05AE 0300 1E00E 0315 0062; # (a◌̕◌̀◌֮◌𞀎b; à◌֮◌𞀎◌̕b; a◌֮◌̀◌𞀎◌̕b; à◌֮◌𞀎◌̕b; a◌֮◌̀◌𞀎◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER LJUDIJE, LATIN SMALL LETTER B
+0061 1E00E 0315 0300 05AE 0062;0061 05AE 1E00E 0300 0315 0062;0061 05AE 1E00E 0300 0315 0062;0061 05AE 1E00E 0300 0315 0062;0061 05AE 1E00E 0300 0315 0062; # (a◌𞀎◌̕◌̀◌֮b; a◌֮◌𞀎◌̀◌̕b; a◌֮◌𞀎◌̀◌̕b; a◌֮◌𞀎◌̀◌̕b; a◌֮◌𞀎◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER LJUDIJE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E00F 0062;00E0 05AE 1E00F 0315 0062;0061 05AE 0300 1E00F 0315 0062;00E0 05AE 1E00F 0315 0062;0061 05AE 0300 1E00F 0315 0062; # (a◌̕◌̀◌֮◌ðž€b; à◌֮◌ðž€â—ŒÌ•b; a◌֮◌̀◌ðž€â—ŒÌ•b; à◌֮◌ðž€â—ŒÌ•b; a◌֮◌̀◌ðž€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER MYSLITE, LATIN SMALL LETTER B
+0061 1E00F 0315 0300 05AE 0062;0061 05AE 1E00F 0300 0315 0062;0061 05AE 1E00F 0300 0315 0062;0061 05AE 1E00F 0300 0315 0062;0061 05AE 1E00F 0300 0315 0062; # (aâ—Œðž€â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER MYSLITE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E010 0062;00E0 05AE 1E010 0315 0062;0061 05AE 0300 1E010 0315 0062;00E0 05AE 1E010 0315 0062;0061 05AE 0300 1E010 0315 0062; # (a◌̕◌̀◌֮◌ðž€b; à◌֮◌ðž€â—ŒÌ•b; a◌֮◌̀◌ðž€â—ŒÌ•b; à◌֮◌ðž€â—ŒÌ•b; a◌֮◌̀◌ðž€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER NASHI, LATIN SMALL LETTER B
+0061 1E010 0315 0300 05AE 0062;0061 05AE 1E010 0300 0315 0062;0061 05AE 1E010 0300 0315 0062;0061 05AE 1E010 0300 0315 0062;0061 05AE 1E010 0300 0315 0062; # (aâ—Œðž€â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER NASHI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E011 0062;00E0 05AE 1E011 0315 0062;0061 05AE 0300 1E011 0315 0062;00E0 05AE 1E011 0315 0062;0061 05AE 0300 1E011 0315 0062; # (a◌̕◌̀◌֮◌𞀑b; à◌֮◌𞀑◌̕b; a◌֮◌̀◌𞀑◌̕b; à◌֮◌𞀑◌̕b; a◌֮◌̀◌𞀑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER ONU, LATIN SMALL LETTER B
+0061 1E011 0315 0300 05AE 0062;0061 05AE 1E011 0300 0315 0062;0061 05AE 1E011 0300 0315 0062;0061 05AE 1E011 0300 0315 0062;0061 05AE 1E011 0300 0315 0062; # (a◌𞀑◌̕◌̀◌֮b; a◌֮◌𞀑◌̀◌̕b; a◌֮◌𞀑◌̀◌̕b; a◌֮◌𞀑◌̀◌̕b; a◌֮◌𞀑◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER ONU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E012 0062;00E0 05AE 1E012 0315 0062;0061 05AE 0300 1E012 0315 0062;00E0 05AE 1E012 0315 0062;0061 05AE 0300 1E012 0315 0062; # (a◌̕◌̀◌֮◌𞀒b; à◌֮◌𞀒◌̕b; a◌֮◌̀◌𞀒◌̕b; à◌֮◌𞀒◌̕b; a◌֮◌̀◌𞀒◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER POKOJI, LATIN SMALL LETTER B
+0061 1E012 0315 0300 05AE 0062;0061 05AE 1E012 0300 0315 0062;0061 05AE 1E012 0300 0315 0062;0061 05AE 1E012 0300 0315 0062;0061 05AE 1E012 0300 0315 0062; # (a◌𞀒◌̕◌̀◌֮b; a◌֮◌𞀒◌̀◌̕b; a◌֮◌𞀒◌̀◌̕b; a◌֮◌𞀒◌̀◌̕b; a◌֮◌𞀒◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER POKOJI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E013 0062;00E0 05AE 1E013 0315 0062;0061 05AE 0300 1E013 0315 0062;00E0 05AE 1E013 0315 0062;0061 05AE 0300 1E013 0315 0062; # (a◌̕◌̀◌֮◌𞀓b; à◌֮◌𞀓◌̕b; a◌֮◌̀◌𞀓◌̕b; à◌֮◌𞀓◌̕b; a◌֮◌̀◌𞀓◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER RITSI, LATIN SMALL LETTER B
+0061 1E013 0315 0300 05AE 0062;0061 05AE 1E013 0300 0315 0062;0061 05AE 1E013 0300 0315 0062;0061 05AE 1E013 0300 0315 0062;0061 05AE 1E013 0300 0315 0062; # (a◌𞀓◌̕◌̀◌֮b; a◌֮◌𞀓◌̀◌̕b; a◌֮◌𞀓◌̀◌̕b; a◌֮◌𞀓◌̀◌̕b; a◌֮◌𞀓◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER RITSI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E014 0062;00E0 05AE 1E014 0315 0062;0061 05AE 0300 1E014 0315 0062;00E0 05AE 1E014 0315 0062;0061 05AE 0300 1E014 0315 0062; # (a◌̕◌̀◌֮◌𞀔b; à◌֮◌𞀔◌̕b; a◌֮◌̀◌𞀔◌̕b; à◌֮◌𞀔◌̕b; a◌֮◌̀◌𞀔◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER SLOVO, LATIN SMALL LETTER B
+0061 1E014 0315 0300 05AE 0062;0061 05AE 1E014 0300 0315 0062;0061 05AE 1E014 0300 0315 0062;0061 05AE 1E014 0300 0315 0062;0061 05AE 1E014 0300 0315 0062; # (a◌𞀔◌̕◌̀◌֮b; a◌֮◌𞀔◌̀◌̕b; a◌֮◌𞀔◌̀◌̕b; a◌֮◌𞀔◌̀◌̕b; a◌֮◌𞀔◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER SLOVO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E015 0062;00E0 05AE 1E015 0315 0062;0061 05AE 0300 1E015 0315 0062;00E0 05AE 1E015 0315 0062;0061 05AE 0300 1E015 0315 0062; # (a◌̕◌̀◌֮◌𞀕b; à◌֮◌𞀕◌̕b; a◌֮◌̀◌𞀕◌̕b; à◌֮◌𞀕◌̕b; a◌֮◌̀◌𞀕◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER TVRIDO, LATIN SMALL LETTER B
+0061 1E015 0315 0300 05AE 0062;0061 05AE 1E015 0300 0315 0062;0061 05AE 1E015 0300 0315 0062;0061 05AE 1E015 0300 0315 0062;0061 05AE 1E015 0300 0315 0062; # (a◌𞀕◌̕◌̀◌֮b; a◌֮◌𞀕◌̀◌̕b; a◌֮◌𞀕◌̀◌̕b; a◌֮◌𞀕◌̀◌̕b; a◌֮◌𞀕◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER TVRIDO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E016 0062;00E0 05AE 1E016 0315 0062;0061 05AE 0300 1E016 0315 0062;00E0 05AE 1E016 0315 0062;0061 05AE 0300 1E016 0315 0062; # (a◌̕◌̀◌֮◌𞀖b; à◌֮◌𞀖◌̕b; a◌֮◌̀◌𞀖◌̕b; à◌֮◌𞀖◌̕b; a◌֮◌̀◌𞀖◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER UKU, LATIN SMALL LETTER B
+0061 1E016 0315 0300 05AE 0062;0061 05AE 1E016 0300 0315 0062;0061 05AE 1E016 0300 0315 0062;0061 05AE 1E016 0300 0315 0062;0061 05AE 1E016 0300 0315 0062; # (a◌𞀖◌̕◌̀◌֮b; a◌֮◌𞀖◌̀◌̕b; a◌֮◌𞀖◌̀◌̕b; a◌֮◌𞀖◌̀◌̕b; a◌֮◌𞀖◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER UKU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E017 0062;00E0 05AE 1E017 0315 0062;0061 05AE 0300 1E017 0315 0062;00E0 05AE 1E017 0315 0062;0061 05AE 0300 1E017 0315 0062; # (a◌̕◌̀◌֮◌𞀗b; à◌֮◌𞀗◌̕b; a◌֮◌̀◌𞀗◌̕b; à◌֮◌𞀗◌̕b; a◌֮◌̀◌𞀗◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER FRITU, LATIN SMALL LETTER B
+0061 1E017 0315 0300 05AE 0062;0061 05AE 1E017 0300 0315 0062;0061 05AE 1E017 0300 0315 0062;0061 05AE 1E017 0300 0315 0062;0061 05AE 1E017 0300 0315 0062; # (a◌𞀗◌̕◌̀◌֮b; a◌֮◌𞀗◌̀◌̕b; a◌֮◌𞀗◌̀◌̕b; a◌֮◌𞀗◌̀◌̕b; a◌֮◌𞀗◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER FRITU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E018 0062;00E0 05AE 1E018 0315 0062;0061 05AE 0300 1E018 0315 0062;00E0 05AE 1E018 0315 0062;0061 05AE 0300 1E018 0315 0062; # (a◌̕◌̀◌֮◌𞀘b; à◌֮◌𞀘◌̕b; a◌֮◌̀◌𞀘◌̕b; à◌֮◌𞀘◌̕b; a◌֮◌̀◌𞀘◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER HERU, LATIN SMALL LETTER B
+0061 1E018 0315 0300 05AE 0062;0061 05AE 1E018 0300 0315 0062;0061 05AE 1E018 0300 0315 0062;0061 05AE 1E018 0300 0315 0062;0061 05AE 1E018 0300 0315 0062; # (a◌𞀘◌̕◌̀◌֮b; a◌֮◌𞀘◌̀◌̕b; a◌֮◌𞀘◌̀◌̕b; a◌֮◌𞀘◌̀◌̕b; a◌֮◌𞀘◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER HERU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E01B 0062;00E0 05AE 1E01B 0315 0062;0061 05AE 0300 1E01B 0315 0062;00E0 05AE 1E01B 0315 0062;0061 05AE 0300 1E01B 0315 0062; # (a◌̕◌̀◌֮◌𞀛b; à◌֮◌𞀛◌̕b; a◌֮◌̀◌𞀛◌̕b; à◌֮◌𞀛◌̕b; a◌֮◌̀◌𞀛◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER SHTA, LATIN SMALL LETTER B
+0061 1E01B 0315 0300 05AE 0062;0061 05AE 1E01B 0300 0315 0062;0061 05AE 1E01B 0300 0315 0062;0061 05AE 1E01B 0300 0315 0062;0061 05AE 1E01B 0300 0315 0062; # (a◌𞀛◌̕◌̀◌֮b; a◌֮◌𞀛◌̀◌̕b; a◌֮◌𞀛◌̀◌̕b; a◌֮◌𞀛◌̀◌̕b; a◌֮◌𞀛◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER SHTA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E01C 0062;00E0 05AE 1E01C 0315 0062;0061 05AE 0300 1E01C 0315 0062;00E0 05AE 1E01C 0315 0062;0061 05AE 0300 1E01C 0315 0062; # (a◌̕◌̀◌֮◌𞀜b; à◌֮◌𞀜◌̕b; a◌֮◌̀◌𞀜◌̕b; à◌֮◌𞀜◌̕b; a◌֮◌̀◌𞀜◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER TSI, LATIN SMALL LETTER B
+0061 1E01C 0315 0300 05AE 0062;0061 05AE 1E01C 0300 0315 0062;0061 05AE 1E01C 0300 0315 0062;0061 05AE 1E01C 0300 0315 0062;0061 05AE 1E01C 0300 0315 0062; # (a◌𞀜◌̕◌̀◌֮b; a◌֮◌𞀜◌̀◌̕b; a◌֮◌𞀜◌̀◌̕b; a◌֮◌𞀜◌̀◌̕b; a◌֮◌𞀜◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER TSI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E01D 0062;00E0 05AE 1E01D 0315 0062;0061 05AE 0300 1E01D 0315 0062;00E0 05AE 1E01D 0315 0062;0061 05AE 0300 1E01D 0315 0062; # (a◌̕◌̀◌֮◌ðž€b; à◌֮◌ðž€â—ŒÌ•b; a◌֮◌̀◌ðž€â—ŒÌ•b; à◌֮◌ðž€â—ŒÌ•b; a◌֮◌̀◌ðž€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER CHRIVI, LATIN SMALL LETTER B
+0061 1E01D 0315 0300 05AE 0062;0061 05AE 1E01D 0300 0315 0062;0061 05AE 1E01D 0300 0315 0062;0061 05AE 1E01D 0300 0315 0062;0061 05AE 1E01D 0300 0315 0062; # (aâ—Œðž€â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; a◌֮◌ðž€â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER CHRIVI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E01E 0062;00E0 05AE 1E01E 0315 0062;0061 05AE 0300 1E01E 0315 0062;00E0 05AE 1E01E 0315 0062;0061 05AE 0300 1E01E 0315 0062; # (a◌̕◌̀◌֮◌𞀞b; à◌֮◌𞀞◌̕b; a◌֮◌̀◌𞀞◌̕b; à◌֮◌𞀞◌̕b; a◌֮◌̀◌𞀞◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER SHA, LATIN SMALL LETTER B
+0061 1E01E 0315 0300 05AE 0062;0061 05AE 1E01E 0300 0315 0062;0061 05AE 1E01E 0300 0315 0062;0061 05AE 1E01E 0300 0315 0062;0061 05AE 1E01E 0300 0315 0062; # (a◌𞀞◌̕◌̀◌֮b; a◌֮◌𞀞◌̀◌̕b; a◌֮◌𞀞◌̀◌̕b; a◌֮◌𞀞◌̀◌̕b; a◌֮◌𞀞◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER SHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E01F 0062;00E0 05AE 1E01F 0315 0062;0061 05AE 0300 1E01F 0315 0062;00E0 05AE 1E01F 0315 0062;0061 05AE 0300 1E01F 0315 0062; # (a◌̕◌̀◌֮◌𞀟b; à◌֮◌𞀟◌̕b; a◌֮◌̀◌𞀟◌̕b; à◌֮◌𞀟◌̕b; a◌֮◌̀◌𞀟◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER YERU, LATIN SMALL LETTER B
+0061 1E01F 0315 0300 05AE 0062;0061 05AE 1E01F 0300 0315 0062;0061 05AE 1E01F 0300 0315 0062;0061 05AE 1E01F 0300 0315 0062;0061 05AE 1E01F 0300 0315 0062; # (a◌𞀟◌̕◌̀◌֮b; a◌֮◌𞀟◌̀◌̕b; a◌֮◌𞀟◌̀◌̕b; a◌֮◌𞀟◌̀◌̕b; a◌֮◌𞀟◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER YERU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E020 0062;00E0 05AE 1E020 0315 0062;0061 05AE 0300 1E020 0315 0062;00E0 05AE 1E020 0315 0062;0061 05AE 0300 1E020 0315 0062; # (a◌̕◌̀◌֮◌𞀠b; à◌֮◌𞀠◌̕b; a◌֮◌̀◌𞀠◌̕b; à◌֮◌𞀠◌̕b; a◌֮◌̀◌𞀠◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER YERI, LATIN SMALL LETTER B
+0061 1E020 0315 0300 05AE 0062;0061 05AE 1E020 0300 0315 0062;0061 05AE 1E020 0300 0315 0062;0061 05AE 1E020 0300 0315 0062;0061 05AE 1E020 0300 0315 0062; # (a◌𞀠◌̕◌̀◌֮b; a◌֮◌𞀠◌̀◌̕b; a◌֮◌𞀠◌̀◌̕b; a◌֮◌𞀠◌̀◌̕b; a◌֮◌𞀠◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER YERI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E021 0062;00E0 05AE 1E021 0315 0062;0061 05AE 0300 1E021 0315 0062;00E0 05AE 1E021 0315 0062;0061 05AE 0300 1E021 0315 0062; # (a◌̕◌̀◌֮◌𞀡b; à◌֮◌𞀡◌̕b; a◌֮◌̀◌𞀡◌̕b; à◌֮◌𞀡◌̕b; a◌֮◌̀◌𞀡◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER YATI, LATIN SMALL LETTER B
+0061 1E021 0315 0300 05AE 0062;0061 05AE 1E021 0300 0315 0062;0061 05AE 1E021 0300 0315 0062;0061 05AE 1E021 0300 0315 0062;0061 05AE 1E021 0300 0315 0062; # (a◌𞀡◌̕◌̀◌֮b; a◌֮◌𞀡◌̀◌̕b; a◌֮◌𞀡◌̀◌̕b; a◌֮◌𞀡◌̀◌̕b; a◌֮◌𞀡◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER YATI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E023 0062;00E0 05AE 1E023 0315 0062;0061 05AE 0300 1E023 0315 0062;00E0 05AE 1E023 0315 0062;0061 05AE 0300 1E023 0315 0062; # (a◌̕◌̀◌֮◌𞀣b; à◌֮◌𞀣◌̕b; a◌֮◌̀◌𞀣◌̕b; à◌֮◌𞀣◌̕b; a◌֮◌̀◌𞀣◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER YU, LATIN SMALL LETTER B
+0061 1E023 0315 0300 05AE 0062;0061 05AE 1E023 0300 0315 0062;0061 05AE 1E023 0300 0315 0062;0061 05AE 1E023 0300 0315 0062;0061 05AE 1E023 0300 0315 0062; # (a◌𞀣◌̕◌̀◌֮b; a◌֮◌𞀣◌̀◌̕b; a◌֮◌𞀣◌̀◌̕b; a◌֮◌𞀣◌̀◌̕b; a◌֮◌𞀣◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER YU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E024 0062;00E0 05AE 1E024 0315 0062;0061 05AE 0300 1E024 0315 0062;00E0 05AE 1E024 0315 0062;0061 05AE 0300 1E024 0315 0062; # (a◌̕◌̀◌֮◌𞀤b; à◌֮◌𞀤◌̕b; a◌֮◌̀◌𞀤◌̕b; à◌֮◌𞀤◌̕b; a◌֮◌̀◌𞀤◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER SMALL YUS, LATIN SMALL LETTER B
+0061 1E024 0315 0300 05AE 0062;0061 05AE 1E024 0300 0315 0062;0061 05AE 1E024 0300 0315 0062;0061 05AE 1E024 0300 0315 0062;0061 05AE 1E024 0300 0315 0062; # (a◌𞀤◌̕◌̀◌֮b; a◌֮◌𞀤◌̀◌̕b; a◌֮◌𞀤◌̀◌̕b; a◌֮◌𞀤◌̀◌̕b; a◌֮◌𞀤◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER SMALL YUS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E026 0062;00E0 05AE 1E026 0315 0062;0061 05AE 0300 1E026 0315 0062;00E0 05AE 1E026 0315 0062;0061 05AE 0300 1E026 0315 0062; # (a◌̕◌̀◌֮◌𞀦b; à◌֮◌𞀦◌̕b; a◌֮◌̀◌𞀦◌̕b; à◌֮◌𞀦◌̕b; a◌֮◌̀◌𞀦◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER YO, LATIN SMALL LETTER B
+0061 1E026 0315 0300 05AE 0062;0061 05AE 1E026 0300 0315 0062;0061 05AE 1E026 0300 0315 0062;0061 05AE 1E026 0300 0315 0062;0061 05AE 1E026 0300 0315 0062; # (a◌𞀦◌̕◌̀◌֮b; a◌֮◌𞀦◌̀◌̕b; a◌֮◌𞀦◌̀◌̕b; a◌֮◌𞀦◌̀◌̕b; a◌֮◌𞀦◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER YO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E027 0062;00E0 05AE 1E027 0315 0062;0061 05AE 0300 1E027 0315 0062;00E0 05AE 1E027 0315 0062;0061 05AE 0300 1E027 0315 0062; # (a◌̕◌̀◌֮◌𞀧b; à◌֮◌𞀧◌̕b; a◌֮◌̀◌𞀧◌̕b; à◌֮◌𞀧◌̕b; a◌֮◌̀◌𞀧◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS, LATIN SMALL LETTER B
+0061 1E027 0315 0300 05AE 0062;0061 05AE 1E027 0300 0315 0062;0061 05AE 1E027 0300 0315 0062;0061 05AE 1E027 0300 0315 0062;0061 05AE 1E027 0300 0315 0062; # (a◌𞀧◌̕◌̀◌֮b; a◌֮◌𞀧◌̀◌̕b; a◌֮◌𞀧◌̀◌̕b; a◌֮◌𞀧◌̀◌̕b; a◌֮◌𞀧◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E028 0062;00E0 05AE 1E028 0315 0062;0061 05AE 0300 1E028 0315 0062;00E0 05AE 1E028 0315 0062;0061 05AE 0300 1E028 0315 0062; # (a◌̕◌̀◌֮◌𞀨b; à◌֮◌𞀨◌̕b; a◌֮◌̀◌𞀨◌̕b; à◌֮◌𞀨◌̕b; a◌֮◌̀◌𞀨◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER BIG YUS, LATIN SMALL LETTER B
+0061 1E028 0315 0300 05AE 0062;0061 05AE 1E028 0300 0315 0062;0061 05AE 1E028 0300 0315 0062;0061 05AE 1E028 0300 0315 0062;0061 05AE 1E028 0300 0315 0062; # (a◌𞀨◌̕◌̀◌֮b; a◌֮◌𞀨◌̀◌̕b; a◌֮◌𞀨◌̀◌̕b; a◌֮◌𞀨◌̀◌̕b; a◌֮◌𞀨◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER BIG YUS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E029 0062;00E0 05AE 1E029 0315 0062;0061 05AE 0300 1E029 0315 0062;00E0 05AE 1E029 0315 0062;0061 05AE 0300 1E029 0315 0062; # (a◌̕◌̀◌֮◌𞀩b; à◌֮◌𞀩◌̕b; a◌֮◌̀◌𞀩◌̕b; à◌֮◌𞀩◌̕b; a◌֮◌̀◌𞀩◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER IOTATED BIG YUS, LATIN SMALL LETTER B
+0061 1E029 0315 0300 05AE 0062;0061 05AE 1E029 0300 0315 0062;0061 05AE 1E029 0300 0315 0062;0061 05AE 1E029 0300 0315 0062;0061 05AE 1E029 0300 0315 0062; # (a◌𞀩◌̕◌̀◌֮b; a◌֮◌𞀩◌̀◌̕b; a◌֮◌𞀩◌̀◌̕b; a◌֮◌𞀩◌̀◌̕b; a◌֮◌𞀩◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER IOTATED BIG YUS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E02A 0062;00E0 05AE 1E02A 0315 0062;0061 05AE 0300 1E02A 0315 0062;00E0 05AE 1E02A 0315 0062;0061 05AE 0300 1E02A 0315 0062; # (a◌̕◌̀◌֮◌𞀪b; à◌֮◌𞀪◌̕b; a◌֮◌̀◌𞀪◌̕b; à◌֮◌𞀪◌̕b; a◌֮◌̀◌𞀪◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GLAGOLITIC LETTER FITA, LATIN SMALL LETTER B
+0061 1E02A 0315 0300 05AE 0062;0061 05AE 1E02A 0300 0315 0062;0061 05AE 1E02A 0300 0315 0062;0061 05AE 1E02A 0300 0315 0062;0061 05AE 1E02A 0300 0315 0062; # (a◌𞀪◌̕◌̀◌֮b; a◌֮◌𞀪◌̀◌̕b; a◌֮◌𞀪◌̀◌̕b; a◌֮◌𞀪◌̀◌̕b; a◌֮◌𞀪◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GLAGOLITIC LETTER FITA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1E8D0 0062;0061 302A 0316 1E8D0 059A 0062;0061 302A 0316 1E8D0 059A 0062;0061 302A 0316 1E8D0 059A 0062;0061 302A 0316 1E8D0 059A 0062; # (a◌֚◌̖◌〪◌ðž£b; a◌〪◌̖◌ðž£â—ŒÖšb; a◌〪◌̖◌ðž£â—ŒÖšb; a◌〪◌̖◌ðž£â—ŒÖšb; a◌〪◌̖◌ðž£â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MENDE KIKAKUI COMBINING NUMBER TEENS, LATIN SMALL LETTER B
+0061 1E8D0 059A 0316 302A 0062;0061 302A 1E8D0 0316 059A 0062;0061 302A 1E8D0 0316 059A 0062;0061 302A 1E8D0 0316 059A 0062;0061 302A 1E8D0 0316 059A 0062; # (aâ—Œðž£â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ðž£â—ŒÌ–◌֚b; a◌〪◌ðž£â—ŒÌ–◌֚b; a◌〪◌ðž£â—ŒÌ–◌֚b; a◌〪◌ðž£â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MENDE KIKAKUI COMBINING NUMBER TEENS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1E8D1 0062;0061 302A 0316 1E8D1 059A 0062;0061 302A 0316 1E8D1 059A 0062;0061 302A 0316 1E8D1 059A 0062;0061 302A 0316 1E8D1 059A 0062; # (a◌֚◌̖◌〪◌𞣑b; a◌〪◌̖◌𞣑◌֚b; a◌〪◌̖◌𞣑◌֚b; a◌〪◌̖◌𞣑◌֚b; a◌〪◌̖◌𞣑◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MENDE KIKAKUI COMBINING NUMBER TENS, LATIN SMALL LETTER B
+0061 1E8D1 059A 0316 302A 0062;0061 302A 1E8D1 0316 059A 0062;0061 302A 1E8D1 0316 059A 0062;0061 302A 1E8D1 0316 059A 0062;0061 302A 1E8D1 0316 059A 0062; # (a◌𞣑◌֚◌̖◌〪b; a◌〪◌𞣑◌̖◌֚b; a◌〪◌𞣑◌̖◌֚b; a◌〪◌𞣑◌̖◌֚b; a◌〪◌𞣑◌̖◌֚b; ) LATIN SMALL LETTER A, MENDE KIKAKUI COMBINING NUMBER TENS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1E8D2 0062;0061 302A 0316 1E8D2 059A 0062;0061 302A 0316 1E8D2 059A 0062;0061 302A 0316 1E8D2 059A 0062;0061 302A 0316 1E8D2 059A 0062; # (a◌֚◌̖◌〪◌𞣒b; a◌〪◌̖◌𞣒◌֚b; a◌〪◌̖◌𞣒◌֚b; a◌〪◌̖◌𞣒◌֚b; a◌〪◌̖◌𞣒◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MENDE KIKAKUI COMBINING NUMBER HUNDREDS, LATIN SMALL LETTER B
+0061 1E8D2 059A 0316 302A 0062;0061 302A 1E8D2 0316 059A 0062;0061 302A 1E8D2 0316 059A 0062;0061 302A 1E8D2 0316 059A 0062;0061 302A 1E8D2 0316 059A 0062; # (a◌𞣒◌֚◌̖◌〪b; a◌〪◌𞣒◌̖◌֚b; a◌〪◌𞣒◌̖◌֚b; a◌〪◌𞣒◌̖◌֚b; a◌〪◌𞣒◌̖◌֚b; ) LATIN SMALL LETTER A, MENDE KIKAKUI COMBINING NUMBER HUNDREDS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1E8D3 0062;0061 302A 0316 1E8D3 059A 0062;0061 302A 0316 1E8D3 059A 0062;0061 302A 0316 1E8D3 059A 0062;0061 302A 0316 1E8D3 059A 0062; # (a◌֚◌̖◌〪◌𞣓b; a◌〪◌̖◌𞣓◌֚b; a◌〪◌̖◌𞣓◌֚b; a◌〪◌̖◌𞣓◌֚b; a◌〪◌̖◌𞣓◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MENDE KIKAKUI COMBINING NUMBER THOUSANDS, LATIN SMALL LETTER B
+0061 1E8D3 059A 0316 302A 0062;0061 302A 1E8D3 0316 059A 0062;0061 302A 1E8D3 0316 059A 0062;0061 302A 1E8D3 0316 059A 0062;0061 302A 1E8D3 0316 059A 0062; # (a◌𞣓◌֚◌̖◌〪b; a◌〪◌𞣓◌̖◌֚b; a◌〪◌𞣓◌̖◌֚b; a◌〪◌𞣓◌̖◌֚b; a◌〪◌𞣓◌̖◌֚b; ) LATIN SMALL LETTER A, MENDE KIKAKUI COMBINING NUMBER THOUSANDS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1E8D4 0062;0061 302A 0316 1E8D4 059A 0062;0061 302A 0316 1E8D4 059A 0062;0061 302A 0316 1E8D4 059A 0062;0061 302A 0316 1E8D4 059A 0062; # (a◌֚◌̖◌〪◌𞣔b; a◌〪◌̖◌𞣔◌֚b; a◌〪◌̖◌𞣔◌֚b; a◌〪◌̖◌𞣔◌֚b; a◌〪◌̖◌𞣔◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS, LATIN SMALL LETTER B
+0061 1E8D4 059A 0316 302A 0062;0061 302A 1E8D4 0316 059A 0062;0061 302A 1E8D4 0316 059A 0062;0061 302A 1E8D4 0316 059A 0062;0061 302A 1E8D4 0316 059A 0062; # (a◌𞣔◌֚◌̖◌〪b; a◌〪◌𞣔◌̖◌֚b; a◌〪◌𞣔◌̖◌֚b; a◌〪◌𞣔◌̖◌֚b; a◌〪◌𞣔◌̖◌֚b; ) LATIN SMALL LETTER A, MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1E8D5 0062;0061 302A 0316 1E8D5 059A 0062;0061 302A 0316 1E8D5 059A 0062;0061 302A 0316 1E8D5 059A 0062;0061 302A 0316 1E8D5 059A 0062; # (a◌֚◌̖◌〪◌𞣕b; a◌〪◌̖◌𞣕◌֚b; a◌〪◌̖◌𞣕◌֚b; a◌〪◌̖◌𞣕◌֚b; a◌〪◌̖◌𞣕◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS, LATIN SMALL LETTER B
+0061 1E8D5 059A 0316 302A 0062;0061 302A 1E8D5 0316 059A 0062;0061 302A 1E8D5 0316 059A 0062;0061 302A 1E8D5 0316 059A 0062;0061 302A 1E8D5 0316 059A 0062; # (a◌𞣕◌֚◌̖◌〪b; a◌〪◌𞣕◌̖◌֚b; a◌〪◌𞣕◌̖◌֚b; a◌〪◌𞣕◌̖◌֚b; a◌〪◌𞣕◌̖◌֚b; ) LATIN SMALL LETTER A, MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1E8D6 0062;0061 302A 0316 1E8D6 059A 0062;0061 302A 0316 1E8D6 059A 0062;0061 302A 0316 1E8D6 059A 0062;0061 302A 0316 1E8D6 059A 0062; # (a◌֚◌̖◌〪◌𞣖b; a◌〪◌̖◌𞣖◌֚b; a◌〪◌̖◌𞣖◌֚b; a◌〪◌̖◌𞣖◌֚b; a◌〪◌̖◌𞣖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MENDE KIKAKUI COMBINING NUMBER MILLIONS, LATIN SMALL LETTER B
+0061 1E8D6 059A 0316 302A 0062;0061 302A 1E8D6 0316 059A 0062;0061 302A 1E8D6 0316 059A 0062;0061 302A 1E8D6 0316 059A 0062;0061 302A 1E8D6 0316 059A 0062; # (a◌𞣖◌֚◌̖◌〪b; a◌〪◌𞣖◌̖◌֚b; a◌〪◌𞣖◌̖◌֚b; a◌〪◌𞣖◌̖◌֚b; a◌〪◌𞣖◌̖◌֚b; ) LATIN SMALL LETTER A, MENDE KIKAKUI COMBINING NUMBER MILLIONS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E944 0062;00E0 05AE 1E944 0315 0062;0061 05AE 0300 1E944 0315 0062;00E0 05AE 1E944 0315 0062;0061 05AE 0300 1E944 0315 0062; # (a◌̕◌̀◌֮◌𞥄b; à◌֮◌𞥄◌̕b; a◌֮◌̀◌𞥄◌̕b; à◌֮◌𞥄◌̕b; a◌֮◌̀◌𞥄◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ADLAM ALIF LENGTHENER, LATIN SMALL LETTER B
+0061 1E944 0315 0300 05AE 0062;0061 05AE 1E944 0300 0315 0062;0061 05AE 1E944 0300 0315 0062;0061 05AE 1E944 0300 0315 0062;0061 05AE 1E944 0300 0315 0062; # (a◌𞥄◌̕◌̀◌֮b; a◌֮◌𞥄◌̀◌̕b; a◌֮◌𞥄◌̀◌̕b; a◌֮◌𞥄◌̀◌̕b; a◌֮◌𞥄◌̀◌̕b; ) LATIN SMALL LETTER A, ADLAM ALIF LENGTHENER, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E945 0062;00E0 05AE 1E945 0315 0062;0061 05AE 0300 1E945 0315 0062;00E0 05AE 1E945 0315 0062;0061 05AE 0300 1E945 0315 0062; # (a◌̕◌̀◌֮◌𞥅b; à◌֮◌𞥅◌̕b; a◌֮◌̀◌𞥅◌̕b; à◌֮◌𞥅◌̕b; a◌֮◌̀◌𞥅◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ADLAM VOWEL LENGTHENER, LATIN SMALL LETTER B
+0061 1E945 0315 0300 05AE 0062;0061 05AE 1E945 0300 0315 0062;0061 05AE 1E945 0300 0315 0062;0061 05AE 1E945 0300 0315 0062;0061 05AE 1E945 0300 0315 0062; # (a◌𞥅◌̕◌̀◌֮b; a◌֮◌𞥅◌̀◌̕b; a◌֮◌𞥅◌̀◌̕b; a◌֮◌𞥅◌̀◌̕b; a◌֮◌𞥅◌̀◌̕b; ) LATIN SMALL LETTER A, ADLAM VOWEL LENGTHENER, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E946 0062;00E0 05AE 1E946 0315 0062;0061 05AE 0300 1E946 0315 0062;00E0 05AE 1E946 0315 0062;0061 05AE 0300 1E946 0315 0062; # (a◌̕◌̀◌֮◌𞥆b; à◌֮◌𞥆◌̕b; a◌֮◌̀◌𞥆◌̕b; à◌֮◌𞥆◌̕b; a◌֮◌̀◌𞥆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ADLAM GEMINATION MARK, LATIN SMALL LETTER B
+0061 1E946 0315 0300 05AE 0062;0061 05AE 1E946 0300 0315 0062;0061 05AE 1E946 0300 0315 0062;0061 05AE 1E946 0300 0315 0062;0061 05AE 1E946 0300 0315 0062; # (a◌𞥆◌̕◌̀◌֮b; a◌֮◌𞥆◌̀◌̕b; a◌֮◌𞥆◌̀◌̕b; a◌֮◌𞥆◌̀◌̕b; a◌֮◌𞥆◌̀◌̕b; ) LATIN SMALL LETTER A, ADLAM GEMINATION MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E947 0062;00E0 05AE 1E947 0315 0062;0061 05AE 0300 1E947 0315 0062;00E0 05AE 1E947 0315 0062;0061 05AE 0300 1E947 0315 0062; # (a◌̕◌̀◌֮◌𞥇b; à◌֮◌𞥇◌̕b; a◌֮◌̀◌𞥇◌̕b; à◌֮◌𞥇◌̕b; a◌֮◌̀◌𞥇◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ADLAM HAMZA, LATIN SMALL LETTER B
+0061 1E947 0315 0300 05AE 0062;0061 05AE 1E947 0300 0315 0062;0061 05AE 1E947 0300 0315 0062;0061 05AE 1E947 0300 0315 0062;0061 05AE 1E947 0300 0315 0062; # (a◌𞥇◌̕◌̀◌֮b; a◌֮◌𞥇◌̀◌̕b; a◌֮◌𞥇◌̀◌̕b; a◌֮◌𞥇◌̀◌̕b; a◌֮◌𞥇◌̀◌̕b; ) LATIN SMALL LETTER A, ADLAM HAMZA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E948 0062;00E0 05AE 1E948 0315 0062;0061 05AE 0300 1E948 0315 0062;00E0 05AE 1E948 0315 0062;0061 05AE 0300 1E948 0315 0062; # (a◌̕◌̀◌֮◌𞥈b; à◌֮◌𞥈◌̕b; a◌֮◌̀◌𞥈◌̕b; à◌֮◌𞥈◌̕b; a◌֮◌̀◌𞥈◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ADLAM CONSONANT MODIFIER, LATIN SMALL LETTER B
+0061 1E948 0315 0300 05AE 0062;0061 05AE 1E948 0300 0315 0062;0061 05AE 1E948 0300 0315 0062;0061 05AE 1E948 0300 0315 0062;0061 05AE 1E948 0300 0315 0062; # (a◌𞥈◌̕◌̀◌֮b; a◌֮◌𞥈◌̀◌̕b; a◌֮◌𞥈◌̀◌̕b; a◌֮◌𞥈◌̀◌̕b; a◌֮◌𞥈◌̀◌̕b; ) LATIN SMALL LETTER A, ADLAM CONSONANT MODIFIER, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1E949 0062;00E0 05AE 1E949 0315 0062;0061 05AE 0300 1E949 0315 0062;00E0 05AE 1E949 0315 0062;0061 05AE 0300 1E949 0315 0062; # (a◌̕◌̀◌֮◌𞥉b; à◌֮◌𞥉◌̕b; a◌֮◌̀◌𞥉◌̕b; à◌֮◌𞥉◌̕b; a◌֮◌̀◌𞥉◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ADLAM GEMINATE CONSONANT MODIFIER, LATIN SMALL LETTER B
+0061 1E949 0315 0300 05AE 0062;0061 05AE 1E949 0300 0315 0062;0061 05AE 1E949 0300 0315 0062;0061 05AE 1E949 0300 0315 0062;0061 05AE 1E949 0300 0315 0062; # (a◌𞥉◌̕◌̀◌֮b; a◌֮◌𞥉◌̀◌̕b; a◌֮◌𞥉◌̀◌̕b; a◌֮◌𞥉◌̀◌̕b; a◌֮◌𞥉◌̀◌̕b; ) LATIN SMALL LETTER A, ADLAM GEMINATE CONSONANT MODIFIER, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 3099 093C 0334 1E94A 0062;0061 0334 093C 1E94A 3099 0062;0061 0334 093C 1E94A 3099 0062;0061 0334 093C 1E94A 3099 0062;0061 0334 093C 1E94A 3099 0062; # (a◌゙◌़◌̴◌𞥊b; a◌̴◌़◌𞥊◌゙b; a◌̴◌़◌𞥊◌゙b; a◌̴◌़◌𞥊◌゙b; a◌̴◌़◌𞥊◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, ADLAM NUKTA, LATIN SMALL LETTER B
+0061 1E94A 3099 093C 0334 0062;0061 0334 1E94A 093C 3099 0062;0061 0334 1E94A 093C 3099 0062;0061 0334 1E94A 093C 3099 0062;0061 0334 1E94A 093C 3099 0062; # (a◌𞥊◌゙◌़◌̴b; a◌̴◌𞥊◌़◌゙b; a◌̴◌𞥊◌़◌゙b; a◌̴◌𞥊◌़◌゙b; a◌̴◌𞥊◌़◌゙b; ) LATIN SMALL LETTER A, ADLAM NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+#
+@Part3 # PRI #29 Test
+#
+09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE; # (ে◌̴া; ে◌̴া; ে◌̴া; ে◌̴া; ে◌̴া; ) BENGALI VOWEL SIGN E, COMBINING TILDE OVERLAY, BENGALI VOWEL SIGN AA
+09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7; # (ে◌̴ৗ; ে◌̴ৗ; ে◌̴ৗ; ে◌̴ৗ; ে◌̴ৗ; ) BENGALI VOWEL SIGN E, COMBINING TILDE OVERLAY, BENGALI AU LENGTH MARK
+0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E; # (େ◌̴ା; େ◌̴ା; େ◌̴ା; େ◌̴ା; େ◌̴ା; ) ORIYA VOWEL SIGN E, COMBINING TILDE OVERLAY, ORIYA VOWEL SIGN AA
+0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56; # (େ◌̴◌ୖ; େ◌̴◌ୖ; େ◌̴◌ୖ; େ◌̴◌ୖ; େ◌̴◌ୖ; ) ORIYA VOWEL SIGN E, COMBINING TILDE OVERLAY, ORIYA AI LENGTH MARK
+0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57; # (େ◌̴ୗ; େ◌̴ୗ; େ◌̴ୗ; େ◌̴ୗ; େ◌̴ୗ; ) ORIYA VOWEL SIGN E, COMBINING TILDE OVERLAY, ORIYA AU LENGTH MARK
+0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7; # (ஒ◌̴ௗ; ஒ◌̴ௗ; ஒ◌̴ௗ; ஒ◌̴ௗ; ஒ◌̴ௗ; ) TAMIL LETTER O, COMBINING TILDE OVERLAY, TAMIL AU LENGTH MARK
+0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE; # (ெ◌̴ா; ெ◌̴ா; ெ◌̴ா; ெ◌̴ா; ெ◌̴ா; ) TAMIL VOWEL SIGN E, COMBINING TILDE OVERLAY, TAMIL VOWEL SIGN AA
+0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7; # (ெ◌̴ௗ; ெ◌̴ௗ; ெ◌̴ௗ; ெ◌̴ௗ; ெ◌̴ௗ; ) TAMIL VOWEL SIGN E, COMBINING TILDE OVERLAY, TAMIL AU LENGTH MARK
+0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE; # (ே◌̴ா; ே◌̴ா; ே◌̴ா; ே◌̴ா; ே◌̴ா; ) TAMIL VOWEL SIGN EE, COMBINING TILDE OVERLAY, TAMIL VOWEL SIGN AA
+0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5; # (◌ಿ◌̴ೕ; ◌ಿ◌̴ೕ; ◌ಿ◌̴ೕ; ◌ಿ◌̴ೕ; ◌ಿ◌̴ೕ; ) KANNADA VOWEL SIGN I, COMBINING TILDE OVERLAY, KANNADA LENGTH MARK
+0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2; # (◌ೆ◌̴ೂ; ◌ೆ◌̴ೂ; ◌ೆ◌̴ೂ; ◌ೆ◌̴ೂ; ◌ೆ◌̴ೂ; ) KANNADA VOWEL SIGN E, COMBINING TILDE OVERLAY, KANNADA VOWEL SIGN UU
+0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5; # (◌ೆ◌̴ೕ; ◌ೆ◌̴ೕ; ◌ೆ◌̴ೕ; ◌ೆ◌̴ೕ; ◌ೆ◌̴ೕ; ) KANNADA VOWEL SIGN E, COMBINING TILDE OVERLAY, KANNADA LENGTH MARK
+0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6; # (◌ೆ◌̴ೖ; ◌ೆ◌̴ೖ; ◌ೆ◌̴ೖ; ◌ೆ◌̴ೖ; ◌ೆ◌̴ೖ; ) KANNADA VOWEL SIGN E, COMBINING TILDE OVERLAY, KANNADA AI LENGTH MARK
+0CCA 0334 0CD5;0CCA 0334 0CD5;0CC6 0CC2 0334 0CD5;0CCA 0334 0CD5;0CC6 0CC2 0334 0CD5; # (ೊ◌̴ೕ; ೊ◌̴ೕ; ◌ೊ◌̴ೕ; ೊ◌̴ೕ; ◌ೊ◌̴ೕ; ) KANNADA VOWEL SIGN O, COMBINING TILDE OVERLAY, KANNADA LENGTH MARK
+0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E; # (െ◌̴ാ; െ◌̴ാ; െ◌̴ാ; െ◌̴ാ; െ◌̴ാ; ) MALAYALAM VOWEL SIGN E, COMBINING TILDE OVERLAY, MALAYALAM VOWEL SIGN AA
+0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57; # (െ◌̴ൗ; െ◌̴ൗ; െ◌̴ൗ; െ◌̴ൗ; െ◌̴ൗ; ) MALAYALAM VOWEL SIGN E, COMBINING TILDE OVERLAY, MALAYALAM AU LENGTH MARK
+0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E; # (േ◌̴ാ; േ◌̴ാ; േ◌̴ാ; േ◌̴ാ; േ◌̴ാ; ) MALAYALAM VOWEL SIGN EE, COMBINING TILDE OVERLAY, MALAYALAM VOWEL SIGN AA
+0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF; # (ෙ◌̴à·; ෙ◌̴à·; ෙ◌̴à·; ෙ◌̴à·; ෙ◌̴à·; ) SINHALA VOWEL SIGN KOMBUVA, COMBINING TILDE OVERLAY, SINHALA VOWEL SIGN AELA-PILLA
+0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF; # (ෙ◌̴ෟ; ෙ◌̴ෟ; ෙ◌̴ෟ; ෙ◌̴ෟ; ෙ◌̴ෟ; ) SINHALA VOWEL SIGN KOMBUVA, COMBINING TILDE OVERLAY, SINHALA VOWEL SIGN GAYANUKITTA
+0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5; # (ཀ◌̴◌ྵ; ཀ◌̴◌ྵ; ཀ◌̴◌ྵ; ཀ◌̴◌ྵ; ཀ◌̴◌ྵ; ) TIBETAN LETTER KA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER SSA
+0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7; # (ག◌̴◌ྷ; ག◌̴◌ྷ; ག◌̴◌ྷ; ག◌̴◌ྷ; ག◌̴◌ྷ; ) TIBETAN LETTER GA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7; # (ཌ◌̴◌ྷ; ཌ◌̴◌ྷ; ཌ◌̴◌ྷ; ཌ◌̴◌ྷ; ཌ◌̴◌ྷ; ) TIBETAN LETTER DDA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7; # (ད◌̴◌ྷ; ད◌̴◌ྷ; ད◌̴◌ྷ; ད◌̴◌ྷ; ད◌̴◌ྷ; ) TIBETAN LETTER DA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7; # (བ◌̴◌ྷ; བ◌̴◌ྷ; བ◌̴◌ྷ; བ◌̴◌ྷ; བ◌̴◌ྷ; ) TIBETAN LETTER BA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7; # (ཛ◌̴◌ྷ; ཛ◌̴◌ྷ; ཛ◌̴◌ྷ; ཛ◌̴◌ྷ; ཛ◌̴◌ྷ; ) TIBETAN LETTER DZA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5; # (â—Œà¾â—ŒÌ´â—Œà¾µ; â—Œà¾â—ŒÌ´â—Œà¾µ; â—Œà¾â—ŒÌ´â—Œà¾µ; â—Œà¾â—ŒÌ´â—Œà¾µ; â—Œà¾â—ŒÌ´â—Œà¾µ; ) TIBETAN SUBJOINED LETTER KA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER SSA
+0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7; # (◌ྒ◌̴◌ྷ; ◌ྒ◌̴◌ྷ; ◌ྒ◌̴◌ྷ; ◌ྒ◌̴◌ྷ; ◌ྒ◌̴◌ྷ; ) TIBETAN SUBJOINED LETTER GA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7; # (◌ྜ◌̴◌ྷ; ◌ྜ◌̴◌ྷ; ◌ྜ◌̴◌ྷ; ◌ྜ◌̴◌ྷ; ◌ྜ◌̴◌ྷ; ) TIBETAN SUBJOINED LETTER DDA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7; # (◌ྡ◌̴◌ྷ; ◌ྡ◌̴◌ྷ; ◌ྡ◌̴◌ྷ; ◌ྡ◌̴◌ྷ; ◌ྡ◌̴◌ྷ; ) TIBETAN SUBJOINED LETTER DA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7; # (◌ྦ◌̴◌ྷ; ◌ྦ◌̴◌ྷ; ◌ྦ◌̴◌ྷ; ◌ྦ◌̴◌ྷ; ◌ྦ◌̴◌ྷ; ) TIBETAN SUBJOINED LETTER BA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7; # (◌ྫ◌̴◌ྷ; ◌ྫ◌̴◌ྷ; ◌ྫ◌̴◌ྷ; ◌ྫ◌̴◌ྷ; ◌ྫ◌̴◌ྷ; ) TIBETAN SUBJOINED LETTER DZA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+1025 0334 102E;1025 0334 102E;1025 0334 102E;1025 0334 102E;1025 0334 102E; # (ဥ◌̴◌ီ; ဥ◌̴◌ီ; ဥ◌̴◌ီ; ဥ◌̴◌ီ; ဥ◌̴◌ီ; ) MYANMAR LETTER U, COMBINING TILDE OVERLAY, MYANMAR VOWEL SIGN II
+1100 0334 1161;1100 0334 1161;1100 0334 1161;1100 0334 1161;1100 0334 1161; # (ᄀ◌̴ᅡ; ᄀ◌̴ᅡ; ᄀ◌̴ᅡ; ᄀ◌̴ᅡ; ᄀ◌̴ᅡ; ) HANGUL CHOSEONG KIYEOK, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG A
+1100 0334 116E;1100 0334 116E;1100 0334 116E;1100 0334 116E;1100 0334 116E; # (ᄀ◌̴ᅮ; ᄀ◌̴ᅮ; ᄀ◌̴ᅮ; ᄀ◌̴ᅮ; ᄀ◌̴ᅮ; ) HANGUL CHOSEONG KIYEOK, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG U
+1101 0334 1166;1101 0334 1166;1101 0334 1166;1101 0334 1166;1101 0334 1166; # (á„◌̴ᅦ; á„◌̴ᅦ; á„◌̴ᅦ; á„◌̴ᅦ; á„◌̴ᅦ; ) HANGUL CHOSEONG SSANGKIYEOK, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG E
+1101 0334 1173;1101 0334 1173;1101 0334 1173;1101 0334 1173;1101 0334 1173; # (á„◌̴ᅳ; á„◌̴ᅳ; á„◌̴ᅳ; á„◌̴ᅳ; á„◌̴ᅳ; ) HANGUL CHOSEONG SSANGKIYEOK, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG EU
+1102 0334 116B;1102 0334 116B;1102 0334 116B;1102 0334 116B;1102 0334 116B; # (ᄂ◌̴ᅫ; ᄂ◌̴ᅫ; ᄂ◌̴ᅫ; ᄂ◌̴ᅫ; ᄂ◌̴ᅫ; ) HANGUL CHOSEONG NIEUN, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WAE
+1103 0334 1163;1103 0334 1163;1103 0334 1163;1103 0334 1163;1103 0334 1163; # (ᄃ◌̴ᅣ; ᄃ◌̴ᅣ; ᄃ◌̴ᅣ; ᄃ◌̴ᅣ; ᄃ◌̴ᅣ; ) HANGUL CHOSEONG TIKEUT, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YA
+1103 0334 1170;1103 0334 1170;1103 0334 1170;1103 0334 1170;1103 0334 1170; # (ᄃ◌̴ᅰ; ᄃ◌̴ᅰ; ᄃ◌̴ᅰ; ᄃ◌̴ᅰ; ᄃ◌̴ᅰ; ) HANGUL CHOSEONG TIKEUT, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WE
+1104 0334 1168;1104 0334 1168;1104 0334 1168;1104 0334 1168;1104 0334 1168; # (ᄄ◌̴ᅨ; ᄄ◌̴ᅨ; ᄄ◌̴ᅨ; ᄄ◌̴ᅨ; ᄄ◌̴ᅨ; ) HANGUL CHOSEONG SSANGTIKEUT, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YE
+1104 0334 1175;1104 0334 1175;1104 0334 1175;1104 0334 1175;1104 0334 1175; # (ᄄ◌̴ᅵ; ᄄ◌̴ᅵ; ᄄ◌̴ᅵ; ᄄ◌̴ᅵ; ᄄ◌̴ᅵ; ) HANGUL CHOSEONG SSANGTIKEUT, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG I
+1105 0334 116D;1105 0334 116D;1105 0334 116D;1105 0334 116D;1105 0334 116D; # (ᄅ◌̴ᅭ; ᄅ◌̴ᅭ; ᄅ◌̴ᅭ; ᄅ◌̴ᅭ; ᄅ◌̴ᅭ; ) HANGUL CHOSEONG RIEUL, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YO
+1106 0334 1165;1106 0334 1165;1106 0334 1165;1106 0334 1165;1106 0334 1165; # (ᄆ◌̴ᅥ; ᄆ◌̴ᅥ; ᄆ◌̴ᅥ; ᄆ◌̴ᅥ; ᄆ◌̴ᅥ; ) HANGUL CHOSEONG MIEUM, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG EO
+1106 0334 1172;1106 0334 1172;1106 0334 1172;1106 0334 1172;1106 0334 1172; # (ᄆ◌̴ᅲ; ᄆ◌̴ᅲ; ᄆ◌̴ᅲ; ᄆ◌̴ᅲ; ᄆ◌̴ᅲ; ) HANGUL CHOSEONG MIEUM, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YU
+1107 0334 116A;1107 0334 116A;1107 0334 116A;1107 0334 116A;1107 0334 116A; # (ᄇ◌̴ᅪ; ᄇ◌̴ᅪ; ᄇ◌̴ᅪ; ᄇ◌̴ᅪ; ᄇ◌̴ᅪ; ) HANGUL CHOSEONG PIEUP, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WA
+1108 0334 1162;1108 0334 1162;1108 0334 1162;1108 0334 1162;1108 0334 1162; # (ᄈ◌̴ᅢ; ᄈ◌̴ᅢ; ᄈ◌̴ᅢ; ᄈ◌̴ᅢ; ᄈ◌̴ᅢ; ) HANGUL CHOSEONG SSANGPIEUP, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG AE
+1108 0334 116F;1108 0334 116F;1108 0334 116F;1108 0334 116F;1108 0334 116F; # (ᄈ◌̴ᅯ; ᄈ◌̴ᅯ; ᄈ◌̴ᅯ; ᄈ◌̴ᅯ; ᄈ◌̴ᅯ; ) HANGUL CHOSEONG SSANGPIEUP, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WEO
+1109 0334 1167;1109 0334 1167;1109 0334 1167;1109 0334 1167;1109 0334 1167; # (ᄉ◌̴ᅧ; ᄉ◌̴ᅧ; ᄉ◌̴ᅧ; ᄉ◌̴ᅧ; ᄉ◌̴ᅧ; ) HANGUL CHOSEONG SIOS, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YEO
+1109 0334 1174;1109 0334 1174;1109 0334 1174;1109 0334 1174;1109 0334 1174; # (ᄉ◌̴ᅴ; ᄉ◌̴ᅴ; ᄉ◌̴ᅴ; ᄉ◌̴ᅴ; ᄉ◌̴ᅴ; ) HANGUL CHOSEONG SIOS, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YI
+110A 0334 116C;110A 0334 116C;110A 0334 116C;110A 0334 116C;110A 0334 116C; # (ᄊ◌̴ᅬ; ᄊ◌̴ᅬ; ᄊ◌̴ᅬ; ᄊ◌̴ᅬ; ᄊ◌̴ᅬ; ) HANGUL CHOSEONG SSANGSIOS, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG OE
+110B 0334 1164;110B 0334 1164;110B 0334 1164;110B 0334 1164;110B 0334 1164; # (ᄋ◌̴ᅤ; ᄋ◌̴ᅤ; ᄋ◌̴ᅤ; ᄋ◌̴ᅤ; ᄋ◌̴ᅤ; ) HANGUL CHOSEONG IEUNG, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YAE
+110B 0334 1171;110B 0334 1171;110B 0334 1171;110B 0334 1171;110B 0334 1171; # (ᄋ◌̴ᅱ; ᄋ◌̴ᅱ; ᄋ◌̴ᅱ; ᄋ◌̴ᅱ; ᄋ◌̴ᅱ; ) HANGUL CHOSEONG IEUNG, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WI
+110C 0334 1169;110C 0334 1169;110C 0334 1169;110C 0334 1169;110C 0334 1169; # (ᄌ◌̴ᅩ; ᄌ◌̴ᅩ; ᄌ◌̴ᅩ; ᄌ◌̴ᅩ; ᄌ◌̴ᅩ; ) HANGUL CHOSEONG CIEUC, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG O
+110D 0334 1161;110D 0334 1161;110D 0334 1161;110D 0334 1161;110D 0334 1161; # (á„◌̴ᅡ; á„◌̴ᅡ; á„◌̴ᅡ; á„◌̴ᅡ; á„◌̴ᅡ; ) HANGUL CHOSEONG SSANGCIEUC, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG A
+110D 0334 116E;110D 0334 116E;110D 0334 116E;110D 0334 116E;110D 0334 116E; # (á„◌̴ᅮ; á„◌̴ᅮ; á„◌̴ᅮ; á„◌̴ᅮ; á„◌̴ᅮ; ) HANGUL CHOSEONG SSANGCIEUC, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG U
+110E 0334 1166;110E 0334 1166;110E 0334 1166;110E 0334 1166;110E 0334 1166; # (ᄎ◌̴ᅦ; ᄎ◌̴ᅦ; ᄎ◌̴ᅦ; ᄎ◌̴ᅦ; ᄎ◌̴ᅦ; ) HANGUL CHOSEONG CHIEUCH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG E
+110E 0334 1173;110E 0334 1173;110E 0334 1173;110E 0334 1173;110E 0334 1173; # (ᄎ◌̴ᅳ; ᄎ◌̴ᅳ; ᄎ◌̴ᅳ; ᄎ◌̴ᅳ; ᄎ◌̴ᅳ; ) HANGUL CHOSEONG CHIEUCH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG EU
+110F 0334 116B;110F 0334 116B;110F 0334 116B;110F 0334 116B;110F 0334 116B; # (á„◌̴ᅫ; á„◌̴ᅫ; á„◌̴ᅫ; á„◌̴ᅫ; á„◌̴ᅫ; ) HANGUL CHOSEONG KHIEUKH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WAE
+1110 0334 1163;1110 0334 1163;1110 0334 1163;1110 0334 1163;1110 0334 1163; # (á„◌̴ᅣ; á„◌̴ᅣ; á„◌̴ᅣ; á„◌̴ᅣ; á„◌̴ᅣ; ) HANGUL CHOSEONG THIEUTH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YA
+1110 0334 1170;1110 0334 1170;1110 0334 1170;1110 0334 1170;1110 0334 1170; # (á„◌̴ᅰ; á„◌̴ᅰ; á„◌̴ᅰ; á„◌̴ᅰ; á„◌̴ᅰ; ) HANGUL CHOSEONG THIEUTH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WE
+1111 0334 1168;1111 0334 1168;1111 0334 1168;1111 0334 1168;1111 0334 1168; # (ᄑ◌̴ᅨ; ᄑ◌̴ᅨ; ᄑ◌̴ᅨ; ᄑ◌̴ᅨ; ᄑ◌̴ᅨ; ) HANGUL CHOSEONG PHIEUPH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YE
+1111 0334 1175;1111 0334 1175;1111 0334 1175;1111 0334 1175;1111 0334 1175; # (ᄑ◌̴ᅵ; ᄑ◌̴ᅵ; ᄑ◌̴ᅵ; ᄑ◌̴ᅵ; ᄑ◌̴ᅵ; ) HANGUL CHOSEONG PHIEUPH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG I
+1112 0334 116D;1112 0334 116D;1112 0334 116D;1112 0334 116D;1112 0334 116D; # (ᄒ◌̴ᅭ; ᄒ◌̴ᅭ; ᄒ◌̴ᅭ; ᄒ◌̴ᅭ; ᄒ◌̴ᅭ; ) HANGUL CHOSEONG HIEUH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YO
+1B05 0334 1B35;1B05 0334 1B35;1B05 0334 1B35;1B05 0334 1B35;1B05 0334 1B35; # (ᬅ◌̴ᬵ; ᬅ◌̴ᬵ; ᬅ◌̴ᬵ; ᬅ◌̴ᬵ; ᬅ◌̴ᬵ; ) BALINESE LETTER AKARA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B07 0334 1B35;1B07 0334 1B35;1B07 0334 1B35;1B07 0334 1B35;1B07 0334 1B35; # (ᬇ◌̴ᬵ; ᬇ◌̴ᬵ; ᬇ◌̴ᬵ; ᬇ◌̴ᬵ; ᬇ◌̴ᬵ; ) BALINESE LETTER IKARA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B09 0334 1B35;1B09 0334 1B35;1B09 0334 1B35;1B09 0334 1B35;1B09 0334 1B35; # (ᬉ◌̴ᬵ; ᬉ◌̴ᬵ; ᬉ◌̴ᬵ; ᬉ◌̴ᬵ; ᬉ◌̴ᬵ; ) BALINESE LETTER UKARA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B0B 0334 1B35;1B0B 0334 1B35;1B0B 0334 1B35;1B0B 0334 1B35;1B0B 0334 1B35; # (ᬋ◌̴ᬵ; ᬋ◌̴ᬵ; ᬋ◌̴ᬵ; ᬋ◌̴ᬵ; ᬋ◌̴ᬵ; ) BALINESE LETTER RA REPA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B0D 0334 1B35;1B0D 0334 1B35;1B0D 0334 1B35;1B0D 0334 1B35;1B0D 0334 1B35; # (á¬â—ŒÌ´á¬µ; á¬â—ŒÌ´á¬µ; á¬â—ŒÌ´á¬µ; á¬â—ŒÌ´á¬µ; á¬â—ŒÌ´á¬µ; ) BALINESE LETTER LA LENGA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B11 0334 1B35;1B11 0334 1B35;1B11 0334 1B35;1B11 0334 1B35;1B11 0334 1B35; # (ᬑ◌̴ᬵ; ᬑ◌̴ᬵ; ᬑ◌̴ᬵ; ᬑ◌̴ᬵ; ᬑ◌̴ᬵ; ) BALINESE LETTER OKARA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B3A 0334 1B35;1B3A 0334 1B35;1B3A 0334 1B35;1B3A 0334 1B35;1B3A 0334 1B35; # (◌ᬺ◌̴ᬵ; ◌ᬺ◌̴ᬵ; ◌ᬺ◌̴ᬵ; ◌ᬺ◌̴ᬵ; ◌ᬺ◌̴ᬵ; ) BALINESE VOWEL SIGN RA REPA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B3C 0334 1B35;1B3C 0334 1B35;1B3C 0334 1B35;1B3C 0334 1B35;1B3C 0334 1B35; # (◌ᬼ◌̴ᬵ; ◌ᬼ◌̴ᬵ; ◌ᬼ◌̴ᬵ; ◌ᬼ◌̴ᬵ; ◌ᬼ◌̴ᬵ; ) BALINESE VOWEL SIGN LA LENGA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B3E 0334 1B35;1B3E 0334 1B35;1B3E 0334 1B35;1B3E 0334 1B35;1B3E 0334 1B35; # (ᬾ◌̴ᬵ; ᬾ◌̴ᬵ; ᬾ◌̴ᬵ; ᬾ◌̴ᬵ; ᬾ◌̴ᬵ; ) BALINESE VOWEL SIGN TALING, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B3F 0334 1B35;1B3F 0334 1B35;1B3F 0334 1B35;1B3F 0334 1B35;1B3F 0334 1B35; # (ᬿ◌̴ᬵ; ᬿ◌̴ᬵ; ᬿ◌̴ᬵ; ᬿ◌̴ᬵ; ᬿ◌̴ᬵ; ) BALINESE VOWEL SIGN TALING REPA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B42 0334 1B35;1B42 0334 1B35;1B42 0334 1B35;1B42 0334 1B35;1B42 0334 1B35; # (◌ᭂ◌̴ᬵ; ◌ᭂ◌̴ᬵ; ◌ᭂ◌̴ᬵ; ◌ᭂ◌̴ᬵ; ◌ᭂ◌̴ᬵ; ) BALINESE VOWEL SIGN PEPET, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+AC54 0334 11AE;AC54 0334 11AE;1100 1164 0334 11AE;AC54 0334 11AE;1100 1164 0334 11AE; # (걔◌̴ᆮ; 걔◌̴ᆮ; 걔◌̴ᆮ; 걔◌̴ᆮ; 걔◌̴ᆮ; ) HANGUL SYLLABLE GYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+ACA8 0334 11B5;ACA8 0334 11B5;1100 1167 0334 11B5;ACA8 0334 11B5;1100 1167 0334 11B5; # (겨◌̴ᆵ; 겨◌̴ᆵ; 겨◌̴ᆵ; 겨◌̴ᆵ; 겨◌̴ᆵ; ) HANGUL SYLLABLE GYEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+ACFC 0334 11BC;ACFC 0334 11BC;1100 116A 0334 11BC;ACFC 0334 11BC;1100 116A 0334 11BC; # (과◌̴ᆼ; 과◌̴ᆼ; 과◌̴ᆼ; 과◌̴ᆼ; 과◌̴ᆼ; ) HANGUL SYLLABLE GWA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+ADC0 0334 11AE;ADC0 0334 11AE;1100 1171 0334 11AE;ADC0 0334 11AE;1100 1171 0334 11AE; # (귀◌̴ᆮ; 귀◌̴ᆮ; 귀◌̴ᆮ; 귀◌̴ᆮ; 귀◌̴ᆮ; ) HANGUL SYLLABLE GWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+AE14 0334 11B5;AE14 0334 11B5;1100 1174 0334 11B5;AE14 0334 11B5;1100 1174 0334 11B5; # (긔◌̴ᆵ; 긔◌̴ᆵ; 긔◌̴ᆵ; 긔◌̴ᆵ; 긔◌̴ᆵ; ) HANGUL SYLLABLE GYI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+AE68 0334 11BC;AE68 0334 11BC;1101 1162 0334 11BC;AE68 0334 11BC;1101 1162 0334 11BC; # (깨◌̴ᆼ; 깨◌̴ᆼ; á„ᅢ◌̴ᆼ; 깨◌̴ᆼ; á„ᅢ◌̴ᆼ; ) HANGUL SYLLABLE GGAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+AF2C 0334 11AE;AF2C 0334 11AE;1101 1169 0334 11AE;AF2C 0334 11AE;1101 1169 0334 11AE; # (꼬◌̴ᆮ; 꼬◌̴ᆮ; á„ᅩ◌̴ᆮ; 꼬◌̴ᆮ; á„ᅩ◌̴ᆮ; ) HANGUL SYLLABLE GGO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+AF80 0334 11B5;AF80 0334 11B5;1101 116C 0334 11B5;AF80 0334 11B5;1101 116C 0334 11B5; # (꾀◌̴ᆵ; 꾀◌̴ᆵ; á„ᅬ◌̴ᆵ; 꾀◌̴ᆵ; á„ᅬ◌̴ᆵ; ) HANGUL SYLLABLE GGOE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+AFD4 0334 11BC;AFD4 0334 11BC;1101 116F 0334 11BC;AFD4 0334 11BC;1101 116F 0334 11BC; # (꿔◌̴ᆼ; 꿔◌̴ᆼ; á„ᅯ◌̴ᆼ; 꿔◌̴ᆼ; á„ᅯ◌̴ᆼ; ) HANGUL SYLLABLE GGWEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B098 0334 11AE;B098 0334 11AE;1102 1161 0334 11AE;B098 0334 11AE;1102 1161 0334 11AE; # (나◌̴ᆮ; 나◌̴ᆮ; 나◌̴ᆮ; 나◌̴ᆮ; 나◌̴ᆮ; ) HANGUL SYLLABLE NA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B0EC 0334 11B5;B0EC 0334 11B5;1102 1164 0334 11B5;B0EC 0334 11B5;1102 1164 0334 11B5; # (냬◌̴ᆵ; 냬◌̴ᆵ; 냬◌̴ᆵ; 냬◌̴ᆵ; 냬◌̴ᆵ; ) HANGUL SYLLABLE NYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B140 0334 11BC;B140 0334 11BC;1102 1167 0334 11BC;B140 0334 11BC;1102 1167 0334 11BC; # (녀◌̴ᆼ; 녀◌̴ᆼ; 녀◌̴ᆼ; 녀◌̴ᆼ; 녀◌̴ᆼ; ) HANGUL SYLLABLE NYEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B204 0334 11AE;B204 0334 11AE;1102 116E 0334 11AE;B204 0334 11AE;1102 116E 0334 11AE; # (누◌̴ᆮ; 누◌̴ᆮ; 누◌̴ᆮ; 누◌̴ᆮ; 누◌̴ᆮ; ) HANGUL SYLLABLE NU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B258 0334 11B5;B258 0334 11B5;1102 1171 0334 11B5;B258 0334 11B5;1102 1171 0334 11B5; # (뉘◌̴ᆵ; 뉘◌̴ᆵ; 뉘◌̴ᆵ; 뉘◌̴ᆵ; 뉘◌̴ᆵ; ) HANGUL SYLLABLE NWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B2AC 0334 11BC;B2AC 0334 11BC;1102 1174 0334 11BC;B2AC 0334 11BC;1102 1174 0334 11BC; # (늬◌̴ᆼ; 늬◌̴ᆼ; 늬◌̴ᆼ; 늬◌̴ᆼ; 늬◌̴ᆼ; ) HANGUL SYLLABLE NYI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B370 0334 11AE;B370 0334 11AE;1103 1166 0334 11AE;B370 0334 11AE;1103 1166 0334 11AE; # (ë°â—ŒÌ´á†®; ë°â—ŒÌ´á†®; 데◌̴ᆮ; ë°â—ŒÌ´á†®; 데◌̴ᆮ; ) HANGUL SYLLABLE DE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B3C4 0334 11B5;B3C4 0334 11B5;1103 1169 0334 11B5;B3C4 0334 11B5;1103 1169 0334 11B5; # (ë„◌̴ᆵ; ë„◌̴ᆵ; 도◌̴ᆵ; ë„◌̴ᆵ; 도◌̴ᆵ; ) HANGUL SYLLABLE DO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B418 0334 11BC;B418 0334 11BC;1103 116C 0334 11BC;B418 0334 11BC;1103 116C 0334 11BC; # (ë˜â—ŒÌ´á†¼; ë˜â—ŒÌ´á†¼; 되◌̴ᆼ; ë˜â—ŒÌ´á†¼; 되◌̴ᆼ; ) HANGUL SYLLABLE DOE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B4DC 0334 11AE;B4DC 0334 11AE;1103 1173 0334 11AE;B4DC 0334 11AE;1103 1173 0334 11AE; # (드◌̴ᆮ; 드◌̴ᆮ; 드◌̴ᆮ; 드◌̴ᆮ; 드◌̴ᆮ; ) HANGUL SYLLABLE DEU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B530 0334 11B5;B530 0334 11B5;1104 1161 0334 11B5;B530 0334 11B5;1104 1161 0334 11B5; # (따◌̴ᆵ; 따◌̴ᆵ; 따◌̴ᆵ; 따◌̴ᆵ; 따◌̴ᆵ; ) HANGUL SYLLABLE DDA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B584 0334 11BC;B584 0334 11BC;1104 1164 0334 11BC;B584 0334 11BC;1104 1164 0334 11BC; # (떄◌̴ᆼ; 떄◌̴ᆼ; 떄◌̴ᆼ; 떄◌̴ᆼ; 떄◌̴ᆼ; ) HANGUL SYLLABLE DDYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B648 0334 11AE;B648 0334 11AE;1104 116B 0334 11AE;B648 0334 11AE;1104 116B 0334 11AE; # (뙈◌̴ᆮ; 뙈◌̴ᆮ; 뙈◌̴ᆮ; 뙈◌̴ᆮ; 뙈◌̴ᆮ; ) HANGUL SYLLABLE DDWAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B69C 0334 11B5;B69C 0334 11B5;1104 116E 0334 11B5;B69C 0334 11B5;1104 116E 0334 11B5; # (뚜◌̴ᆵ; 뚜◌̴ᆵ; 뚜◌̴ᆵ; 뚜◌̴ᆵ; 뚜◌̴ᆵ; ) HANGUL SYLLABLE DDU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B6F0 0334 11BC;B6F0 0334 11BC;1104 1171 0334 11BC;B6F0 0334 11BC;1104 1171 0334 11BC; # (뛰◌̴ᆼ; 뛰◌̴ᆼ; 뛰◌̴ᆼ; 뛰◌̴ᆼ; 뛰◌̴ᆼ; ) HANGUL SYLLABLE DDWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B7B4 0334 11AE;B7B4 0334 11AE;1105 1163 0334 11AE;B7B4 0334 11AE;1105 1163 0334 11AE; # (랴◌̴ᆮ; 랴◌̴ᆮ; 랴◌̴ᆮ; 랴◌̴ᆮ; 랴◌̴ᆮ; ) HANGUL SYLLABLE RYA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B808 0334 11B5;B808 0334 11B5;1105 1166 0334 11B5;B808 0334 11B5;1105 1166 0334 11B5; # (레◌̴ᆵ; 레◌̴ᆵ; 레◌̴ᆵ; 레◌̴ᆵ; 레◌̴ᆵ; ) HANGUL SYLLABLE RE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B85C 0334 11BC;B85C 0334 11BC;1105 1169 0334 11BC;B85C 0334 11BC;1105 1169 0334 11BC; # (로◌̴ᆼ; 로◌̴ᆼ; 로◌̴ᆼ; 로◌̴ᆼ; 로◌̴ᆼ; ) HANGUL SYLLABLE RO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B920 0334 11AE;B920 0334 11AE;1105 1170 0334 11AE;B920 0334 11AE;1105 1170 0334 11AE; # (뤠◌̴ᆮ; 뤠◌̴ᆮ; 뤠◌̴ᆮ; 뤠◌̴ᆮ; 뤠◌̴ᆮ; ) HANGUL SYLLABLE RWE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B974 0334 11B5;B974 0334 11B5;1105 1173 0334 11B5;B974 0334 11B5;1105 1173 0334 11B5; # (르◌̴ᆵ; 르◌̴ᆵ; 르◌̴ᆵ; 르◌̴ᆵ; 르◌̴ᆵ; ) HANGUL SYLLABLE REU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B9C8 0334 11BC;B9C8 0334 11BC;1106 1161 0334 11BC;B9C8 0334 11BC;1106 1161 0334 11BC; # (마◌̴ᆼ; 마◌̴ᆼ; 마◌̴ᆼ; 마◌̴ᆼ; 마◌̴ᆼ; ) HANGUL SYLLABLE MA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+BA8C 0334 11AE;BA8C 0334 11AE;1106 1168 0334 11AE;BA8C 0334 11AE;1106 1168 0334 11AE; # (몌◌̴ᆮ; 몌◌̴ᆮ; 몌◌̴ᆮ; 몌◌̴ᆮ; 몌◌̴ᆮ; ) HANGUL SYLLABLE MYE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+BAE0 0334 11B5;BAE0 0334 11B5;1106 116B 0334 11B5;BAE0 0334 11B5;1106 116B 0334 11B5; # (뫠◌̴ᆵ; 뫠◌̴ᆵ; 뫠◌̴ᆵ; 뫠◌̴ᆵ; 뫠◌̴ᆵ; ) HANGUL SYLLABLE MWAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+BB34 0334 11BC;BB34 0334 11BC;1106 116E 0334 11BC;BB34 0334 11BC;1106 116E 0334 11BC; # (무◌̴ᆼ; 무◌̴ᆼ; 무◌̴ᆼ; 무◌̴ᆼ; 무◌̴ᆼ; ) HANGUL SYLLABLE MU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+BBF8 0334 11AE;BBF8 0334 11AE;1106 1175 0334 11AE;BBF8 0334 11AE;1106 1175 0334 11AE; # (미◌̴ᆮ; 미◌̴ᆮ; 미◌̴ᆮ; 미◌̴ᆮ; 미◌̴ᆮ; ) HANGUL SYLLABLE MI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+BC4C 0334 11B5;BC4C 0334 11B5;1107 1163 0334 11B5;BC4C 0334 11B5;1107 1163 0334 11B5; # (뱌◌̴ᆵ; 뱌◌̴ᆵ; 뱌◌̴ᆵ; 뱌◌̴ᆵ; 뱌◌̴ᆵ; ) HANGUL SYLLABLE BYA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+BCA0 0334 11BC;BCA0 0334 11BC;1107 1166 0334 11BC;BCA0 0334 11BC;1107 1166 0334 11BC; # (베◌̴ᆼ; 베◌̴ᆼ; 베◌̴ᆼ; 베◌̴ᆼ; 베◌̴ᆼ; ) HANGUL SYLLABLE BE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+BD64 0334 11AE;BD64 0334 11AE;1107 116D 0334 11AE;BD64 0334 11AE;1107 116D 0334 11AE; # (뵤◌̴ᆮ; 뵤◌̴ᆮ; 뵤◌̴ᆮ; 뵤◌̴ᆮ; 뵤◌̴ᆮ; ) HANGUL SYLLABLE BYO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+BDB8 0334 11B5;BDB8 0334 11B5;1107 1170 0334 11B5;BDB8 0334 11B5;1107 1170 0334 11B5; # (붸◌̴ᆵ; 붸◌̴ᆵ; 붸◌̴ᆵ; 붸◌̴ᆵ; 붸◌̴ᆵ; ) HANGUL SYLLABLE BWE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+BE0C 0334 11BC;BE0C 0334 11BC;1107 1173 0334 11BC;BE0C 0334 11BC;1107 1173 0334 11BC; # (브◌̴ᆼ; 브◌̴ᆼ; 브◌̴ᆼ; 브◌̴ᆼ; 브◌̴ᆼ; ) HANGUL SYLLABLE BEU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+BED0 0334 11AE;BED0 0334 11AE;1108 1165 0334 11AE;BED0 0334 11AE;1108 1165 0334 11AE; # (ë»â—ŒÌ´á†®; ë»â—ŒÌ´á†®; 뻐◌̴ᆮ; ë»â—ŒÌ´á†®; 뻐◌̴ᆮ; ) HANGUL SYLLABLE BBEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+BF24 0334 11B5;BF24 0334 11B5;1108 1168 0334 11B5;BF24 0334 11B5;1108 1168 0334 11B5; # (뼤◌̴ᆵ; 뼤◌̴ᆵ; 뼤◌̴ᆵ; 뼤◌̴ᆵ; 뼤◌̴ᆵ; ) HANGUL SYLLABLE BBYE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+BF78 0334 11BC;BF78 0334 11BC;1108 116B 0334 11BC;BF78 0334 11BC;1108 116B 0334 11BC; # (뽸◌̴ᆼ; 뽸◌̴ᆼ; 뽸◌̴ᆼ; 뽸◌̴ᆼ; 뽸◌̴ᆼ; ) HANGUL SYLLABLE BBWAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C03C 0334 11AE;C03C 0334 11AE;1108 1172 0334 11AE;C03C 0334 11AE;1108 1172 0334 11AE; # (쀼◌̴ᆮ; 쀼◌̴ᆮ; 쀼◌̴ᆮ; 쀼◌̴ᆮ; 쀼◌̴ᆮ; ) HANGUL SYLLABLE BBYU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C090 0334 11B5;C090 0334 11B5;1108 1175 0334 11B5;C090 0334 11B5;1108 1175 0334 11B5; # (ì‚◌̴ᆵ; ì‚◌̴ᆵ; 삐◌̴ᆵ; ì‚◌̴ᆵ; 삐◌̴ᆵ; ) HANGUL SYLLABLE BBI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C0E4 0334 11BC;C0E4 0334 11BC;1109 1163 0334 11BC;C0E4 0334 11BC;1109 1163 0334 11BC; # (샤◌̴ᆼ; 샤◌̴ᆼ; 샤◌̴ᆼ; 샤◌̴ᆼ; 샤◌̴ᆼ; ) HANGUL SYLLABLE SYA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C1A8 0334 11AE;C1A8 0334 11AE;1109 116A 0334 11AE;C1A8 0334 11AE;1109 116A 0334 11AE; # (솨◌̴ᆮ; 솨◌̴ᆮ; 솨◌̴ᆮ; 솨◌̴ᆮ; 솨◌̴ᆮ; ) HANGUL SYLLABLE SWA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C1FC 0334 11B5;C1FC 0334 11B5;1109 116D 0334 11B5;C1FC 0334 11B5;1109 116D 0334 11B5; # (쇼◌̴ᆵ; 쇼◌̴ᆵ; 쇼◌̴ᆵ; 쇼◌̴ᆵ; 쇼◌̴ᆵ; ) HANGUL SYLLABLE SYO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C250 0334 11BC;C250 0334 11BC;1109 1170 0334 11BC;C250 0334 11BC;1109 1170 0334 11BC; # (ì‰â—ŒÌ´á†¼; ì‰â—ŒÌ´á†¼; 쉐◌̴ᆼ; ì‰â—ŒÌ´á†¼; 쉐◌̴ᆼ; ) HANGUL SYLLABLE SWE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C314 0334 11AE;C314 0334 11AE;110A 1162 0334 11AE;C314 0334 11AE;110A 1162 0334 11AE; # (쌔◌̴ᆮ; 쌔◌̴ᆮ; 쌔◌̴ᆮ; 쌔◌̴ᆮ; 쌔◌̴ᆮ; ) HANGUL SYLLABLE SSAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C368 0334 11B5;C368 0334 11B5;110A 1165 0334 11B5;C368 0334 11B5;110A 1165 0334 11B5; # (ì¨â—ŒÌ´á†µ; ì¨â—ŒÌ´á†µ; 써◌̴ᆵ; ì¨â—ŒÌ´á†µ; 써◌̴ᆵ; ) HANGUL SYLLABLE SSEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C3BC 0334 11BC;C3BC 0334 11BC;110A 1168 0334 11BC;C3BC 0334 11BC;110A 1168 0334 11BC; # (쎼◌̴ᆼ; 쎼◌̴ᆼ; 쎼◌̴ᆼ; 쎼◌̴ᆼ; 쎼◌̴ᆼ; ) HANGUL SYLLABLE SSYE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C480 0334 11AE;C480 0334 11AE;110A 116F 0334 11AE;C480 0334 11AE;110A 116F 0334 11AE; # (쒀◌̴ᆮ; 쒀◌̴ᆮ; 쒀◌̴ᆮ; 쒀◌̴ᆮ; 쒀◌̴ᆮ; ) HANGUL SYLLABLE SSWEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C4D4 0334 11B5;C4D4 0334 11B5;110A 1172 0334 11B5;C4D4 0334 11B5;110A 1172 0334 11B5; # (쓔◌̴ᆵ; 쓔◌̴ᆵ; 쓔◌̴ᆵ; 쓔◌̴ᆵ; 쓔◌̴ᆵ; ) HANGUL SYLLABLE SSYU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C528 0334 11BC;C528 0334 11BC;110A 1175 0334 11BC;C528 0334 11BC;110A 1175 0334 11BC; # (씨◌̴ᆼ; 씨◌̴ᆼ; 씨◌̴ᆼ; 씨◌̴ᆼ; 씨◌̴ᆼ; ) HANGUL SYLLABLE SSI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C5EC 0334 11AE;C5EC 0334 11AE;110B 1167 0334 11AE;C5EC 0334 11AE;110B 1167 0334 11AE; # (여◌̴ᆮ; 여◌̴ᆮ; 여◌̴ᆮ; 여◌̴ᆮ; 여◌̴ᆮ; ) HANGUL SYLLABLE YEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C640 0334 11B5;C640 0334 11B5;110B 116A 0334 11B5;C640 0334 11B5;110B 116A 0334 11B5; # (와◌̴ᆵ; 와◌̴ᆵ; 와◌̴ᆵ; 와◌̴ᆵ; 와◌̴ᆵ; ) HANGUL SYLLABLE WA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C694 0334 11BC;C694 0334 11BC;110B 116D 0334 11BC;C694 0334 11BC;110B 116D 0334 11BC; # (요◌̴ᆼ; 요◌̴ᆼ; 요◌̴ᆼ; 요◌̴ᆼ; 요◌̴ᆼ; ) HANGUL SYLLABLE YO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C758 0334 11AE;C758 0334 11AE;110B 1174 0334 11AE;C758 0334 11AE;110B 1174 0334 11AE; # (ì˜â—ŒÌ´á†®; ì˜â—ŒÌ´á†®; 의◌̴ᆮ; ì˜â—ŒÌ´á†®; 의◌̴ᆮ; ) HANGUL SYLLABLE YI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C7AC 0334 11B5;C7AC 0334 11B5;110C 1162 0334 11B5;C7AC 0334 11B5;110C 1162 0334 11B5; # (재◌̴ᆵ; 재◌̴ᆵ; 재◌̴ᆵ; 재◌̴ᆵ; 재◌̴ᆵ; ) HANGUL SYLLABLE JAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C800 0334 11BC;C800 0334 11BC;110C 1165 0334 11BC;C800 0334 11BC;110C 1165 0334 11BC; # (저◌̴ᆼ; 저◌̴ᆼ; 저◌̴ᆼ; 저◌̴ᆼ; 저◌̴ᆼ; ) HANGUL SYLLABLE JEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C8C4 0334 11AE;C8C4 0334 11AE;110C 116C 0334 11AE;C8C4 0334 11AE;110C 116C 0334 11AE; # (죄◌̴ᆮ; 죄◌̴ᆮ; 죄◌̴ᆮ; 죄◌̴ᆮ; 죄◌̴ᆮ; ) HANGUL SYLLABLE JOE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C918 0334 11B5;C918 0334 11B5;110C 116F 0334 11B5;C918 0334 11B5;110C 116F 0334 11B5; # (줘◌̴ᆵ; 줘◌̴ᆵ; 줘◌̴ᆵ; 줘◌̴ᆵ; 줘◌̴ᆵ; ) HANGUL SYLLABLE JWEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C96C 0334 11BC;C96C 0334 11BC;110C 1172 0334 11BC;C96C 0334 11BC;110C 1172 0334 11BC; # (쥬◌̴ᆼ; 쥬◌̴ᆼ; 쥬◌̴ᆼ; 쥬◌̴ᆼ; 쥬◌̴ᆼ; ) HANGUL SYLLABLE JYU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+CA30 0334 11AE;CA30 0334 11AE;110D 1164 0334 11AE;CA30 0334 11AE;110D 1164 0334 11AE; # (쨰◌̴ᆮ; 쨰◌̴ᆮ; á„ᅤ◌̴ᆮ; 쨰◌̴ᆮ; á„ᅤ◌̴ᆮ; ) HANGUL SYLLABLE JJYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+CA84 0334 11B5;CA84 0334 11B5;110D 1167 0334 11B5;CA84 0334 11B5;110D 1167 0334 11B5; # (쪄◌̴ᆵ; 쪄◌̴ᆵ; á„ᅧ◌̴ᆵ; 쪄◌̴ᆵ; á„ᅧ◌̴ᆵ; ) HANGUL SYLLABLE JJYEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+CAD8 0334 11BC;CAD8 0334 11BC;110D 116A 0334 11BC;CAD8 0334 11BC;110D 116A 0334 11BC; # (쫘◌̴ᆼ; 쫘◌̴ᆼ; á„ᅪ◌̴ᆼ; 쫘◌̴ᆼ; á„ᅪ◌̴ᆼ; ) HANGUL SYLLABLE JJWA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+CB9C 0334 11AE;CB9C 0334 11AE;110D 1171 0334 11AE;CB9C 0334 11AE;110D 1171 0334 11AE; # (쮜◌̴ᆮ; 쮜◌̴ᆮ; á„ᅱ◌̴ᆮ; 쮜◌̴ᆮ; á„ᅱ◌̴ᆮ; ) HANGUL SYLLABLE JJWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+CBF0 0334 11B5;CBF0 0334 11B5;110D 1174 0334 11B5;CBF0 0334 11B5;110D 1174 0334 11B5; # (쯰◌̴ᆵ; 쯰◌̴ᆵ; á„ᅴ◌̴ᆵ; 쯰◌̴ᆵ; á„ᅴ◌̴ᆵ; ) HANGUL SYLLABLE JJYI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+CC44 0334 11BC;CC44 0334 11BC;110E 1162 0334 11BC;CC44 0334 11BC;110E 1162 0334 11BC; # (채◌̴ᆼ; 채◌̴ᆼ; 채◌̴ᆼ; 채◌̴ᆼ; 채◌̴ᆼ; ) HANGUL SYLLABLE CAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+CD08 0334 11AE;CD08 0334 11AE;110E 1169 0334 11AE;CD08 0334 11AE;110E 1169 0334 11AE; # (초◌̴ᆮ; 초◌̴ᆮ; 초◌̴ᆮ; 초◌̴ᆮ; 초◌̴ᆮ; ) HANGUL SYLLABLE CO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+CD5C 0334 11B5;CD5C 0334 11B5;110E 116C 0334 11B5;CD5C 0334 11B5;110E 116C 0334 11B5; # (최◌̴ᆵ; 최◌̴ᆵ; 최◌̴ᆵ; 최◌̴ᆵ; 최◌̴ᆵ; ) HANGUL SYLLABLE COE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+CDB0 0334 11BC;CDB0 0334 11BC;110E 116F 0334 11BC;CDB0 0334 11BC;110E 116F 0334 11BC; # (춰◌̴ᆼ; 춰◌̴ᆼ; 춰◌̴ᆼ; 춰◌̴ᆼ; 춰◌̴ᆼ; ) HANGUL SYLLABLE CWEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+CE74 0334 11AE;CE74 0334 11AE;110F 1161 0334 11AE;CE74 0334 11AE;110F 1161 0334 11AE; # (카◌̴ᆮ; 카◌̴ᆮ; á„ᅡ◌̴ᆮ; 카◌̴ᆮ; á„ᅡ◌̴ᆮ; ) HANGUL SYLLABLE KA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+CEC8 0334 11B5;CEC8 0334 11B5;110F 1164 0334 11B5;CEC8 0334 11B5;110F 1164 0334 11B5; # (컈◌̴ᆵ; 컈◌̴ᆵ; á„ᅤ◌̴ᆵ; 컈◌̴ᆵ; á„ᅤ◌̴ᆵ; ) HANGUL SYLLABLE KYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+CF1C 0334 11BC;CF1C 0334 11BC;110F 1167 0334 11BC;CF1C 0334 11BC;110F 1167 0334 11BC; # (켜◌̴ᆼ; 켜◌̴ᆼ; á„ᅧ◌̴ᆼ; 켜◌̴ᆼ; á„ᅧ◌̴ᆼ; ) HANGUL SYLLABLE KYEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+CFE0 0334 11AE;CFE0 0334 11AE;110F 116E 0334 11AE;CFE0 0334 11AE;110F 116E 0334 11AE; # (쿠◌̴ᆮ; 쿠◌̴ᆮ; á„ᅮ◌̴ᆮ; 쿠◌̴ᆮ; á„ᅮ◌̴ᆮ; ) HANGUL SYLLABLE KU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D034 0334 11B5;D034 0334 11B5;110F 1171 0334 11B5;D034 0334 11B5;110F 1171 0334 11B5; # (퀴◌̴ᆵ; 퀴◌̴ᆵ; á„ᅱ◌̴ᆵ; 퀴◌̴ᆵ; á„ᅱ◌̴ᆵ; ) HANGUL SYLLABLE KWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+D088 0334 11BC;D088 0334 11BC;110F 1174 0334 11BC;D088 0334 11BC;110F 1174 0334 11BC; # (킈◌̴ᆼ; 킈◌̴ᆼ; á„ᅴ◌̴ᆼ; 킈◌̴ᆼ; á„ᅴ◌̴ᆼ; ) HANGUL SYLLABLE KYI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+D14C 0334 11AE;D14C 0334 11AE;1110 1166 0334 11AE;D14C 0334 11AE;1110 1166 0334 11AE; # (테◌̴ᆮ; 테◌̴ᆮ; á„ᅦ◌̴ᆮ; 테◌̴ᆮ; á„ᅦ◌̴ᆮ; ) HANGUL SYLLABLE TE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D1A0 0334 11B5;D1A0 0334 11B5;1110 1169 0334 11B5;D1A0 0334 11B5;1110 1169 0334 11B5; # (토◌̴ᆵ; 토◌̴ᆵ; á„ᅩ◌̴ᆵ; 토◌̴ᆵ; á„ᅩ◌̴ᆵ; ) HANGUL SYLLABLE TO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+D1F4 0334 11BC;D1F4 0334 11BC;1110 116C 0334 11BC;D1F4 0334 11BC;1110 116C 0334 11BC; # (퇴◌̴ᆼ; 퇴◌̴ᆼ; á„ᅬ◌̴ᆼ; 퇴◌̴ᆼ; á„ᅬ◌̴ᆼ; ) HANGUL SYLLABLE TOE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+D2B8 0334 11AE;D2B8 0334 11AE;1110 1173 0334 11AE;D2B8 0334 11AE;1110 1173 0334 11AE; # (트◌̴ᆮ; 트◌̴ᆮ; á„ᅳ◌̴ᆮ; 트◌̴ᆮ; á„ᅳ◌̴ᆮ; ) HANGUL SYLLABLE TEU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D30C 0334 11B5;D30C 0334 11B5;1111 1161 0334 11B5;D30C 0334 11B5;1111 1161 0334 11B5; # (파◌̴ᆵ; 파◌̴ᆵ; 파◌̴ᆵ; 파◌̴ᆵ; 파◌̴ᆵ; ) HANGUL SYLLABLE PA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+D360 0334 11BC;D360 0334 11BC;1111 1164 0334 11BC;D360 0334 11BC;1111 1164 0334 11BC; # (í â—ŒÌ´á†¼; í â—ŒÌ´á†¼; 퍠◌̴ᆼ; í â—ŒÌ´á†¼; 퍠◌̴ᆼ; ) HANGUL SYLLABLE PYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+D424 0334 11AE;D424 0334 11AE;1111 116B 0334 11AE;D424 0334 11AE;1111 116B 0334 11AE; # (í¤â—ŒÌ´á†®; í¤â—ŒÌ´á†®; 퐤◌̴ᆮ; í¤â—ŒÌ´á†®; 퐤◌̴ᆮ; ) HANGUL SYLLABLE PWAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D478 0334 11B5;D478 0334 11B5;1111 116E 0334 11B5;D478 0334 11B5;1111 116E 0334 11B5; # (푸◌̴ᆵ; 푸◌̴ᆵ; 푸◌̴ᆵ; 푸◌̴ᆵ; 푸◌̴ᆵ; ) HANGUL SYLLABLE PU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+D4CC 0334 11BC;D4CC 0334 11BC;1111 1171 0334 11BC;D4CC 0334 11BC;1111 1171 0334 11BC; # (퓌◌̴ᆼ; 퓌◌̴ᆼ; 퓌◌̴ᆼ; 퓌◌̴ᆼ; 퓌◌̴ᆼ; ) HANGUL SYLLABLE PWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+D590 0334 11AE;D590 0334 11AE;1112 1163 0334 11AE;D590 0334 11AE;1112 1163 0334 11AE; # (í–◌̴ᆮ; í–◌̴ᆮ; 햐◌̴ᆮ; í–◌̴ᆮ; 햐◌̴ᆮ; ) HANGUL SYLLABLE HYA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D5E4 0334 11B5;D5E4 0334 11B5;1112 1166 0334 11B5;D5E4 0334 11B5;1112 1166 0334 11B5; # (헤◌̴ᆵ; 헤◌̴ᆵ; 헤◌̴ᆵ; 헤◌̴ᆵ; 헤◌̴ᆵ; ) HANGUL SYLLABLE HE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+D638 0334 11BC;D638 0334 11BC;1112 1169 0334 11BC;D638 0334 11BC;1112 1169 0334 11BC; # (호◌̴ᆼ; 호◌̴ᆼ; 호◌̴ᆼ; 호◌̴ᆼ; 호◌̴ᆼ; ) HANGUL SYLLABLE HO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+D6FC 0334 11AE;D6FC 0334 11AE;1112 1170 0334 11AE;D6FC 0334 11AE;1112 1170 0334 11AE; # (훼◌̴ᆮ; 훼◌̴ᆮ; 훼◌̴ᆮ; 훼◌̴ᆮ; 훼◌̴ᆮ; ) HANGUL SYLLABLE HWE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D750 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5; # (í◌̴ᆵ; í◌̴ᆵ; 흐◌̴ᆵ; í◌̴ᆵ; 흐◌̴ᆵ; ) HANGUL SYLLABLE HEU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+11131 0334 11127;11131 0334 11127;11131 0334 11127;11131 0334 11127;11131 0334 11127; # (◌𑄱◌̴◌𑄧; ◌𑄱◌̴◌𑄧; ◌𑄱◌̴◌𑄧; ◌𑄱◌̴◌𑄧; ◌𑄱◌̴◌𑄧; ) CHAKMA O MARK, COMBINING TILDE OVERLAY, CHAKMA VOWEL SIGN A
+11132 0334 11127;11132 0334 11127;11132 0334 11127;11132 0334 11127;11132 0334 11127; # (◌𑄲◌̴◌𑄧; ◌𑄲◌̴◌𑄧; ◌𑄲◌̴◌𑄧; ◌𑄲◌̴◌𑄧; ◌𑄲◌̴◌𑄧; ) CHAKMA AU MARK, COMBINING TILDE OVERLAY, CHAKMA VOWEL SIGN A
+11347 0334 1133E;11347 0334 1133E;11347 0334 1133E;11347 0334 1133E;11347 0334 1133E; # (ð‘‡â—ŒÌ´ð‘Œ¾; ð‘‡â—ŒÌ´ð‘Œ¾; ð‘‡â—ŒÌ´ð‘Œ¾; ð‘‡â—ŒÌ´ð‘Œ¾; ð‘‡â—ŒÌ´ð‘Œ¾; ) GRANTHA VOWEL SIGN EE, COMBINING TILDE OVERLAY, GRANTHA VOWEL SIGN AA
+11347 0334 11357;11347 0334 11357;11347 0334 11357;11347 0334 11357;11347 0334 11357; # (ð‘‡â—ŒÌ´ð‘—; ð‘‡â—ŒÌ´ð‘—; ð‘‡â—ŒÌ´ð‘—; ð‘‡â—ŒÌ´ð‘—; ð‘‡â—ŒÌ´ð‘—; ) GRANTHA VOWEL SIGN EE, COMBINING TILDE OVERLAY, GRANTHA AU LENGTH MARK
+114B9 0334 114B0;114B9 0334 114B0;114B9 0334 114B0;114B9 0334 114B0;114B9 0334 114B0; # (𑒹◌̴𑒰; 𑒹◌̴𑒰; 𑒹◌̴𑒰; 𑒹◌̴𑒰; 𑒹◌̴𑒰; ) TIRHUTA VOWEL SIGN E, COMBINING TILDE OVERLAY, TIRHUTA VOWEL SIGN AA
+114B9 0334 114BA;114B9 0334 114BA;114B9 0334 114BA;114B9 0334 114BA;114B9 0334 114BA; # (𑒹◌̴◌𑒺; 𑒹◌̴◌𑒺; 𑒹◌̴◌𑒺; 𑒹◌̴◌𑒺; 𑒹◌̴◌𑒺; ) TIRHUTA VOWEL SIGN E, COMBINING TILDE OVERLAY, TIRHUTA VOWEL SIGN SHORT E
+114B9 0334 114BD;114B9 0334 114BD;114B9 0334 114BD;114B9 0334 114BD;114B9 0334 114BD; # (𑒹◌̴𑒽; 𑒹◌̴𑒽; 𑒹◌̴𑒽; 𑒹◌̴𑒽; 𑒹◌̴𑒽; ) TIRHUTA VOWEL SIGN E, COMBINING TILDE OVERLAY, TIRHUTA VOWEL SIGN SHORT O
+115B8 0334 115AF;115B8 0334 115AF;115B8 0334 115AF;115B8 0334 115AF;115B8 0334 115AF; # (𑖸◌̴𑖯; 𑖸◌̴𑖯; 𑖸◌̴𑖯; 𑖸◌̴𑖯; 𑖸◌̴𑖯; ) SIDDHAM VOWEL SIGN E, COMBINING TILDE OVERLAY, SIDDHAM VOWEL SIGN AA
+115B9 0334 115AF;115B9 0334 115AF;115B9 0334 115AF;115B9 0334 115AF;115B9 0334 115AF; # (𑖹◌̴𑖯; 𑖹◌̴𑖯; 𑖹◌̴𑖯; 𑖹◌̴𑖯; 𑖹◌̴𑖯; ) SIDDHAM VOWEL SIGN AI, COMBINING TILDE OVERLAY, SIDDHAM VOWEL SIGN AA
+#
+# EOF
diff --git a/admin/unidata/README b/admin/unidata/README
index 8ad0a12d72..534670ce6d 100644
--- a/admin/unidata/README
+++ b/admin/unidata/README
@@ -20,3 +20,7 @@ http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
Blocks.txt
http://www.unicode.org/Public/8.0.0/ucd/Blocks.txt
2014-11-10
+
+NormalizationTest.txt
+http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt
+2016-07-16
diff --git a/admin/unidata/UnicodeData.txt b/admin/unidata/UnicodeData.txt
index caf087b47d..a756976461 100644
--- a/admin/unidata/UnicodeData.txt
+++ b/admin/unidata/UnicodeData.txt
@@ -20179,10 +20179,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11C34;BHAIKSUKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
11C35;BHAIKSUKI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
11C36;BHAIKSUKI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-11C38;BHAIKSUKI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-11C39;BHAIKSUKI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-11C3A;BHAIKSUKI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-11C3B;BHAIKSUKI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+11C38;BHAIKSUKI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+11C39;BHAIKSUKI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+11C3A;BHAIKSUKI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+11C3B;BHAIKSUKI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
11C3C;BHAIKSUKI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
11C3D;BHAIKSUKI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
11C3E;BHAIKSUKI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
diff --git a/admin/unidata/copyright.html b/admin/unidata/copyright.html
index 966ad1eb45..85bbf504b3 100644
--- a/admin/unidata/copyright.html
+++ b/admin/unidata/copyright.html
@@ -76,7 +76,7 @@ pre {
<td valign="top" class="navColCell"><a href="#7">Miscellaneous</a></td>
</tr>
<tr>
- <td valign="top" class="navColCell"><a href="#Exhibit1">Data Files and
+ <td valign="top" class="navColCell"><a href="#License">Data Files and
Software License Agreement (Exhibit 1)</a></td>
</tr>
<tr>
@@ -108,7 +108,7 @@ pre {
<td>
<blockquote>
- <h1>Unicode Terms of Use</h1>
+ <h1>Unicode® Terms of Use</h1>
<p>For the general privacy policy governing access to this site, see
the&nbsp;
@@ -131,7 +131,7 @@ pre {
<ol type="A">
<li><u><a name="1"></a>Unicode Copyright.</u>
<ol>
- <li>Copyright © 1991-2014 Unicode, Inc. All rights reserved.</li>
+ <li>Copyright © 1991-2016 Unicode, Inc. All rights reserved.</li>
<li>Certain documents and files on this website contain a legend
indicating that &quot;Modification is permitted.&quot; Any person is
hereby authorized, without fee, to modify such documents and
@@ -139,13 +139,13 @@ pre {
Standard, subject to Terms and Conditions herein.</li>
<li>Any person is hereby authorized, without fee, to view, use,
reproduce, and distribute all documents and files solely for
- informational purposes in the creation of products supporting
+ informational purposes and in the creation of products supporting
the Unicode Standard, subject to the Terms and Conditions
herein.</li>
<li>Further specifications of rights and restrictions pertaining
to the use of the particular set of data files known as the
- &quot;Unicode Character Database&quot; can be found in <a href="#Exhibit1">
- Exhibit 1</a>.</li>
+ &quot;Unicode Character Database&quot; can be found in the
+ <a href="#License">License</a>.</li>
<li>Each version of the Unicode Standard has further
specifications of rights and restrictions of use. For the book
editions (Unicode 5.0 and earlier), these are found on the back
@@ -247,35 +247,35 @@ pre {
<blockquote>
<h3 align="center"><a name="Exhibit1">EXHIBIT 1</a><br>
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE</h3>
+<a name="License">UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE</a></h3>
+<pre>
+Unicode Data Files include all data files under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/,
+http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
+http://www.unicode.org/utility/trac/browser/.
-<p>Unicode Data Files include all data files under the directories
-<a href="http://www.unicode.org/Public/">http://www.unicode.org/Public/</a>, <a href="http://www.unicode.org/reports/">http://www.unicode.org/reports/</a>, and <a title="http://www.unicode.org/cldr/data/" onClick="return top.js.OpenExtLink(window,event,this)" target="_blank" href="http://www.unicode.org/cldr/data/">
-http://www.unicode.org/cldr/data/</a>.
Unicode Data Files do not include PDF online code charts under the
-directory <a href="http://www.unicode.org/Public/">http://www.unicode.org/Public/</a>.
+directory http://www.unicode.org/Public/.
+
Software includes any source code published in the Unicode Standard
-or under the directories <a href="http://www.unicode.org/Public/">http://www.unicode.org/Public/</a>,
-<a href="http://www.unicode.org/reports/">http://www.unicode.org/reports/</a>, and <a title="http://www.unicode.org/cldr/data/" onClick="return top.js.OpenExtLink(window,event,this)" target="_blank" href="http://www.unicode.org/cldr/data/">
-http://www.unicode.org/cldr/data/</a>.</p>
+or under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/,
+http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
+http://www.unicode.org/utility/trac/browser/.
-<p>NOTICE TO USER: Carefully read the following legal agreement.
+NOTICE TO USER: Carefully read the following legal agreement.
BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
TERMS AND CONDITIONS OF THIS AGREEMENT.
IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.</p>
-
-<div align="center">
+THE DATA FILES OR SOFTWARE.
-<table class="simple"><tr><td>
-<pre>COPYRIGHT AND PERMISSION NOTICE
+COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2014 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in
-<a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a>.
+Copyright © 1991-2016 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Unicode data files and any associated documentation
@@ -284,14 +284,11 @@ a copy of the Unicode data files and any associated documentation
without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, and/or sell copies of
the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software,
-(b) this copyright and permission notice appear in associated
-documentation, and
-(c) there is clear notice in each modified Data File or in the Software
-as well as in the documentation associated with the Data File(s) or
-Software that the data or software has been modified.
+or Software are furnished to do so, provided that either
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software, or
+(b) this copyright and permission notice appear in associated
+Documentation.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
@@ -307,10 +304,8 @@ PERFORMANCE OF THE DATA FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder
shall not be used in advertising or otherwise to promote the sale,
use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.</pre>
-</td></tr></table>
-</div>
-
+written authorization of the copyright holder.
+</pre>
</blockquote>
diff --git a/admin/update_autogen b/admin/update_autogen
index 82ad622c64..f27bfe0d14 100755
--- a/admin/update_autogen
+++ b/admin/update_autogen
@@ -49,7 +49,7 @@ cd ../
if [ -d .bzr ]; then
vcs=bzr
-elif [ -d .git ]; then
+elif [ -e .git ]; then
vcs=git
else
die "Cannot determine vcs"
diff --git a/autogen.sh b/autogen.sh
index a63c53c903..b1bd86b461 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -103,16 +103,37 @@ check_version ()
return 2
}
+do_autoconf=false
+test $# -eq 0 && do_autoconf=true
+do_git=false
+
+for arg; do
+ case $arg in
+ --help)
+ exec echo "$0: usage: $0 [all|autoconf|git]";;
+ all)
+ do_autoconf=true
+ test -e .git && do_git=true;;
+ autoconf)
+ do_autoconf=true;;
+ git)
+ do_git=true;;
+ *)
+ echo >&2 "$0: $arg: unknown argument"; exit 1;;
+ esac
+done
+
+
+# Generate Autoconf and Automake related files, if requested.
-cat <<EOF
-Checking whether you have the necessary tools...
-(Read INSTALL.REPO for more details on building Emacs)
+if $do_autoconf; then
-EOF
+ echo 'Checking whether you have the necessary tools...
+(Read INSTALL.REPO for more details on building Emacs)'
-missing=
+ missing=
-for prog in $progs; do
+ for prog in $progs; do
sprog=`echo "$prog" | sed 's/-/_/g'`
@@ -138,15 +159,13 @@ for prog in $progs; do
eval ${sprog}_why=\""$stat"\"
fi
-done
-
+ done
-if [ x"$missing" != x ]; then
- cat <<EOF
+ if [ x"$missing" != x ]; then
-Building Emacs from the repository requires the following specialized programs:
-EOF
+ echo '
+Building Emacs from the repository requires the following specialized programs:'
for prog in $progs; do
sprog=`echo "$prog" | sed 's/-/_/g'`
@@ -157,10 +176,8 @@ EOF
done
- cat <<EOF
-
-Your system seems to be missing the following tool(s):
-EOF
+ echo '
+Your system seems to be missing the following tool(s):'
for prog in $missing; do
sprog=`echo "$prog" | sed 's/-/_/g'`
@@ -170,8 +187,7 @@ EOF
echo "$prog ($why)"
done
- cat <<EOF
-
+ echo '
If you think you have the required tools, please add them to your PATH
and re-run this script.
@@ -198,78 +214,139 @@ autoreconf -fi -I m4
instead of this script.
-Please report any problems with this script to bug-gnu-emacs@gnu.org .
-EOF
+Please report any problems with this script to bug-gnu-emacs@gnu.org .'
exit 1
+ fi
+
+ echo 'Your system has the required tools.'
+ echo "Running 'autoreconf -fi -I m4' ..."
+
+
+ ## Let autoreconf figure out what, if anything, needs doing.
+ ## Use autoreconf's -f option in case autoreconf itself has changed.
+ autoreconf -fi -I m4 || exit $?
+
+ ## Create a timestamp, so that './autogen.sh; make' doesn't
+ ## cause 'make' to needlessly run 'autoheader'.
+ echo timestamp > src/stamp-h.in || exit
+fi
+
+
+# True if the Git setup was OK before autogen.sh was run.
+
+git_was_ok=true
+
+if $do_git; then
+ case `cp --help 2>/dev/null` in
+ *--backup*--verbose*)
+ cp_options='--backup=numbered --verbose';;
+ *)
+ cp_options='-f';;
+ esac
fi
-echo 'Your system has the required tools.'
-echo "Running 'autoreconf -fi -I m4' ..."
+# Like 'git config NAME VALUE' but verbose on change and exiting on failure.
+# Also, do not configure unless requested.
+
+git_config ()
+{
+ name=$1
+ value=$2
+
+ ovalue=`git config --get "$name"` && test "$ovalue" = "$value" || {
+ if $do_git; then
+ if $git_was_ok; then
+ echo 'Configuring local git repository...'
+ case $cp_options in
+ --backup=*)
+ config=$git_common_dir/config
+ cp $cp_options --force -- "$config" "$config" || exit;;
+ esac
+ fi
+ echo "git config $name '$value'"
+ git config "$name" "$value" || exit
+ fi
+ git_was_ok=false
+ }
+}
+
+## Configure Git, if requested.
-## Let autoreconf figure out what, if anything, needs doing.
-## Use autoreconf's -f option in case autoreconf itself has changed.
-autoreconf -fi -I m4 || exit $?
+# Get location of Git's common configuration directory. For older Git
+# versions this is just '.git'. Newer Git versions support worktrees.
-## Create a timestamp, so that './autogen.sh; make' doesn't
-## cause 'make' to needlessly run 'autoheader'.
-echo timestamp > src/stamp-h.in || exit
+{ test -e .git &&
+ git_common_dir=`git rev-parse --no-flags --git-common-dir 2>/dev/null` &&
+ test -n "$git_common_dir"
+} || git_common_dir=.git
+hooks=$git_common_dir/hooks
+# Check hashes when transferring objects among repositories.
-## Configure Git, if using Git.
-if test -d .git && (git status -s) >/dev/null 2>&1; then
+git_config transfer.fsckObjects true
- # Configure 'git diff' hunk header format.
- git config 'diff.elisp.xfuncname' \
- '^\(def[^[:space:]]+[[:space:]]+([^()[:space:]]+)' || exit
- git config 'diff.texinfo.xfuncname' \
- '^@node[[:space:]]+([^,[:space:]][^,]+)' || exit
+# Configure 'git diff' hunk header format.
+git_config diff.elisp.xfuncname \
+ '^\(def[^[:space:]]+[[:space:]]+([^()[:space:]]+)'
+git_config 'diff.m4.xfuncname' '^((m4_)?define|A._DEFUN(_ONCE)?)\([^),]*'
+git_config 'diff.make.xfuncname' \
+ '^([$.[:alnum:]_].*:|[[:alnum:]_]+[[:space:]]*([*:+]?[:?]?|!?)=|define .*)'
+git_config 'diff.shell.xfuncname' \
+ '^([[:space:]]*[[:alpha:]_][[:alnum:]_]*[[:space:]]*\(\)|[[:alpha:]_][[:alnum:]_]*=)'
+git_config diff.texinfo.xfuncname \
+ '^@node[[:space:]]+([^,[:space:]][^,]+)'
- # Install Git hooks.
- tailored_hooks=
- sample_hooks=
+# Install Git hooks.
- for hook in commit-msg pre-commit; do
- cmp build-aux/git-hooks/$hook .git/hooks/$hook >/dev/null 2>&1 ||
+tailored_hooks=
+sample_hooks=
+
+for hook in commit-msg pre-commit; do
+ cmp -- build-aux/git-hooks/$hook "$hooks/$hook" >/dev/null 2>&1 ||
tailored_hooks="$tailored_hooks $hook"
- done
- for hook in applypatch-msg pre-applypatch; do
- test ! -r .git/hooks/$hook.sample ||
- cmp .git/hooks/$hook.sample .git/hooks/$hook >/dev/null 2>&1 ||
+done
+for hook in applypatch-msg pre-applypatch; do
+ cmp -- "$hooks/$hook.sample" "$hooks/$hook" >/dev/null 2>&1 ||
sample_hooks="$sample_hooks $hook"
- done
+done
- if test -n "$tailored_hooks$sample_hooks"; then
+if test -n "$tailored_hooks$sample_hooks"; then
+ if $do_git; then
echo "Installing git hooks..."
- case `cp --help 2>/dev/null` in
- *--backup*--verbose*)
- cp_options='--backup=numbered --verbose';;
- *)
- cp_options='-f';;
- esac
-
if test -n "$tailored_hooks"; then
for hook in $tailored_hooks; do
- cp $cp_options build-aux/git-hooks/$hook .git/hooks || exit
- chmod a-w .git/hooks/$hook || exit
+ dst=$hooks/$hook
+ cp $cp_options -- build-aux/git-hooks/$hook "$dst" || exit
+ chmod -- a-w "$dst" || exit
done
fi
if test -n "$sample_hooks"; then
for hook in $sample_hooks; do
- cp $cp_options .git/hooks/$hook.sample .git/hooks/$hook || exit
- chmod a-w .git/hooks/$hook || exit
+ dst=$hooks/$hook
+ cp $cp_options -- "$dst.sample" "$dst" || exit
+ chmod -- a-w "$dst" || exit
done
fi
+ else
+ git_was_ok=false
fi
fi
-echo "You can now run './configure'."
+if test ! -f configure; then
+ echo "You can now run '$0 autoconf'."
+elif test -e .git && test $git_was_ok = false && test $do_git = false; then
+ echo "You can now run '$0 git'."
+elif test ! -f config.status ||
+ test -n "`find src/stamp-h.in -newer config.status`"; then
+ echo "You can now run './configure'."
+fi
exit 0
diff --git a/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog
index 345c37f63d..085d2c2512 100755
--- a/build-aux/gitlog-to-emacslog
+++ b/build-aux/gitlog-to-emacslog
@@ -68,7 +68,7 @@ if [ -f "$output" ]; then
fi
# If this is not a Git repository, just generate an empty ChangeLog.
-test -d .git || {
+test -e .git || {
>"$output"
exit
}
diff --git a/configure.ac b/configure.ac
index cd4d1c0f8e..e8aeae266f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
AC_PREREQ(2.65)
dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
-AC_INIT(GNU Emacs, 25.1, bug-gnu-emacs@gnu.org)
+AC_INIT(GNU Emacs, 25.1.50, bug-gnu-emacs@gnu.org)
dnl Set emacs_config_options to the options of 'configure', quoted for the shell,
dnl and then quoted again for a C string. Separate options with spaces.
@@ -330,6 +330,7 @@ OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
+OPTION_DEFAULT_ON([libsystemd],[don't compile with libsystemd support])
OPTION_DEFAULT_OFF([cairo],[compile with Cairo drawing (experimental)])
OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
@@ -546,6 +547,14 @@ AC_ARG_ENABLE(gtk-deprecation-warnings,
[Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])],
[ac_enable_gtk_deprecation_warnings="${enableval}"],[])
+BUILD_DETAILS=
+AC_ARG_ENABLE([build-details],
+ [AS_HELP_STRING([--disable-build-details],
+ [Make the build more deterministic by omitting host
+ names, time stamps, etc. from the output.])],
+ [test "$enableval" = no && BUILD_DETAILS=--no-build-details])
+AC_SUBST([BUILD_DETAILS])
+
dnl This used to use changequote, but, apart from 'changequote is evil'
dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
dnl the great gob of text. Thus it's not processed for possible expansion.
@@ -607,12 +616,7 @@ case "${canonical}" in
* ) unported=yes ;;
esac
opsys=darwin
- ## Use fink packages if available.
- ## FIXME find a better way to do this: http://debbugs.gnu.org/11507
-## if test -d /sw/include && test -d /sw/lib; then
-## GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib"
-## NON_GCC_TEST_OPTIONS=${GCC_TEST_OPTIONS}
-## fi
+ ## FIXME: Find a way to use Fink if available (Bug#11507).
;;
## Chromium Native Client
@@ -648,16 +652,6 @@ case "${canonical}" in
opsys=aix4-2
;;
- ## Silicon Graphics machines
- ## Iris 4D
- mips-sgi-irix6.5 )
- opsys=irix6-5
- # Without defining _LANGUAGE_C, things get masked out in the headers
- # so that, for instance, grepping for 'free' in stdlib.h fails and
- # AC_HEADER_STD_C fails. (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
- NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
- ;;
-
## Suns
*-sun-solaris* \
| i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
@@ -774,8 +768,6 @@ AM_PROG_CC_C_O
if test x$GCC = xyes; then
test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
-else
- test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
fi
dnl This is used in lib/Makefile.am to use nt/gnulib.mk, the
@@ -851,17 +843,45 @@ if test "$ac_test_CFLAGS" != set; then
esac
fi
+# gl_GCC_VERSION_IFELSE([major], [minor], [run-if-found], [run-if-not-found])
+# ---------------------------------------------------------------------------
+# If $CPP is gcc-MAJOR.MINOR or newer, then run RUN-IF-FOUND.
+# Otherwise, run RUN-IF-NOT-FOUND.
+AC_DEFUN([gl_GCC_VERSION_IFELSE],
+ [AC_PREPROC_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#if ($1) < __GNUC__ || (($1) == __GNUC__ && ($2) <= __GNUC_MINOR__)
+/* ok */
+#else
+# error "your version of gcc is older than $1.$2"
+#endif
+ ]]),
+ ], [$3], [$4])
+ ]
+)
+
AC_ARG_ENABLE([gcc-warnings],
- [AS_HELP_STRING([--enable-gcc-warnings],
- [turn on lots of GCC warnings/errors. This is intended for
- developers, and may generate false alarms when used
- with older or non-GNU development tools.])],
+ [AS_HELP_STRING([--enable-gcc-warnings@<:@=TYPE@:>@],
+ [control generation of GCC warnings. The TYPE 'yes'
+ means to fail if any warnings are issued; 'warn-only'
+ means issue warnings without failing (default for
+ developer builds); 'no' means disable warnings
+ (default for non-developer builds).])],
[case $enableval in
- yes|no) ;;
+ yes|no|warn-only) ;;
*) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
esac
gl_gcc_warnings=$enableval],
- [gl_gcc_warnings=no]
+ [# By default, use 'warn-only' if it looks like the invoker of 'configure'
+ # is a developer as opposed to a builder. This is most likely true
+ # if GCC is recent enough and there is a .git directory or file;
+ # however, if there is also a .tarball-version file it is probably
+ # just a release imported into Git for patch management.
+ gl_gcc_warnings=no
+ if test -e "$srcdir"/.git && test ! -f "$srcdir"/.tarball-version; then
+ gl_GCC_VERSION_IFELSE([5], [3], [gl_gcc_warnings=warn-only])]
+ fi
)
# clang is unduly picky about some things.
@@ -877,7 +897,7 @@ AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang],
# When compiling with GCC, prefer -isystem to -I when including system
# include files, to avoid generating useless diagnostics for the files.
-AS_IF([test "$gl_gcc_warnings" != yes],
+AS_IF([test $gl_gcc_warnings = no],
[
isystem='-I'
AS_IF([test "$emacs_cv_clang" = yes],
@@ -901,7 +921,7 @@ AS_IF([test "$gl_gcc_warnings" != yes],
nw="$nw -Wwrite-strings"
;;
esac
- AS_IF([test -z "$nw"],
+ AS_IF([test $gl_gcc_warnings = yes],
[gl_WARN_ADD([-Werror], [WERROR_CFLAGS])])
AC_SUBST([WERROR_CFLAGS])
@@ -910,8 +930,8 @@ AS_IF([test "$gl_gcc_warnings" != yes],
nw="$nw -Wformat-nonliteral" # we do this a lot
nw="$nw -Wvla" # Emacs uses <vla.h>.
nw="$nw -Wswitch-default" # Too many warnings for now
+ nw="$nw -Wunused-const-variable=2" # lisp.h declares const objects.
nw="$nw -Winline" # OK to ignore 'inline'
- nw="$nw -Wjump-misses-init" # We sometimes safely jump over init.
nw="$nw -Wstrict-overflow" # OK to optimize assuming that
# signed overflow has undefined behavior
nw="$nw -Wsync-nand" # irrelevant here, and provokes ObjC warning
@@ -947,6 +967,11 @@ AS_IF([test "$gl_gcc_warnings" != yes],
nw="$nw -Wcast-align"
fi
+ # This causes too much noise in the MinGW build
+ if test $opsys = mingw32; then
+ nw="$nw -Wpointer-sign"
+ fi
+
gl_MANYWARN_ALL_GCC([ws])
gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
for w in $ws; do
@@ -961,13 +986,16 @@ AS_IF([test "$gl_gcc_warnings" != yes],
# More things that clang is unduly picky about.
if test $emacs_cv_clang = yes; then
- gl_WARN_ADD([-Wno-format-extra-args])
+ gl_WARN_ADD([-Wno-tautological-compare])
gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
- gl_WARN_ADD([-Wno-unused-command-line-argument])
- gl_WARN_ADD([-Wno-unused-value])
fi
- AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
+ # This causes too much noise in the MinGW build
+ if test $opsys = mingw32; then
+ gl_WARN_ADD([-Wno-pointer-sign])
+ fi
+
+ AC_DEFINE([GCC_LINT], [1], [Define to 1 if --enable-gcc-warnings.])
AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
AH_VERBATIM([GNULIB_PORTCHECK_FORTIFY_SOURCE],
[/* Enable compile-time and run-time bounds-checking, and some warnings,
@@ -1246,7 +1274,6 @@ fi
dnl We need -znocombreloc if we're using a relatively recent GNU ld.
dnl If we can link with the flag, it shouldn't do any harm anyhow.
-dnl (Don't use '-z nocombreloc' as -z takes no arg on Irix.)
dnl Treat GCC specially since it just gives a non-fatal 'unrecognized option'
dnl if not built to support GNU ld.
@@ -1475,7 +1502,7 @@ LIBS=$OLD_LIBS
dnl Current possibilities handled by sed (aix4-2 -> aix,
dnl gnu-linux -> gnu/linux, etc.):
-dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux, irix.
+dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux.
dnl And special cases: berkeley-unix, usg-unix-v, ms-dos, windows-nt.
SYSTEM_TYPE=`echo $opsys | sed -e 's/[[0-9]].*//' -e 's|-|/|'`
@@ -1609,21 +1636,24 @@ fi
dnl checks for header files
AC_CHECK_HEADERS_ONCE(
+ malloc.h
sys/systeminfo.h
sys/sysinfo.h
coff.h pty.h
sys/resource.h
sys/utsname.h pwd.h utmp.h util.h)
-AC_MSG_CHECKING(if personality LINUX32 can be set)
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]], [[personality (PER_LINUX32)]])],
- emacs_cv_personality_linux32=yes,
- emacs_cv_personality_linux32=no)
-AC_MSG_RESULT($emacs_cv_personality_linux32)
-
-if test $emacs_cv_personality_linux32 = yes; then
- AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
- [Define to 1 if personality LINUX32 can be set.])
+AC_CACHE_CHECK([for ADDR_NO_RANDOMIZE],
+ [emacs_cv_personality_addr_no_randomize],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <sys/personality.h>]],
+ [[personality (personality (0xffffffff)
+ | ADDR_NO_RANDOMIZE)]])],
+ [emacs_cv_personality_addr_no_randomize=yes],
+ [emacs_cv_personality_addr_no_randomize=no])])
+if test $emacs_cv_personality_addr_no_randomize = yes; then
+ AC_DEFINE([HAVE_PERSONALITY_ADDR_NO_RANDOMIZE], [1],
+ [Define to 1 if personality flag ADDR_NO_RANDOMIZE exists.])
fi
# Note that Solaris has sys/sysinfo.h which defines struct
@@ -2041,17 +2071,6 @@ fi
## $window_system is now set to the window system we will
## ultimately use.
-if test "$window_system" = none && test "$gl_gcc_warnings" = yes; then
- # Too many warnings for now.
- nw=
- nw="$nw -Wsuggest-attribute=noreturn"
- gl_MANYWARN_COMPLEMENT([WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
-
- gl_WARN_ADD([-Wno-unused-variable])
- gl_WARN_ADD([-Wno-unused-but-set-variable])
- gl_WARN_ADD([-Wno-unused-but-set-parameter])
-fi
-
term_header=
HAVE_X_WINDOWS=no
HAVE_X11=no
@@ -2141,7 +2160,13 @@ case "$opsys" in
cygwin) hybrid_malloc=yes;;
esac
+if test "${system_malloc}" != yes && test "${doug_lea_malloc}" != yes \
+ && test "${UNEXEC_OBJ}" = unexelf.o; then
+ hybrid_malloc=yes
+fi
+
GMALLOC_OBJ=
+HYBRID_MALLOC=
if test "${system_malloc}" = "yes"; then
AC_DEFINE([SYSTEM_MALLOC], 1,
[Define to 1 to use the system memory allocator, even if it is not
@@ -2153,8 +2178,9 @@ if test "${system_malloc}" = "yes"; then
elif test "$hybrid_malloc" = yes; then
AC_DEFINE(HYBRID_MALLOC, 1,
[Define to use gmalloc before dumping and the system malloc after.])
- GNU_MALLOC=
- GNU_MALLOC_reason="only before dumping"
+ HYBRID_MALLOC=1
+ GNU_MALLOC=no
+ GNU_MALLOC_reason=" (only before dumping)"
GMALLOC_OBJ=gmalloc.o
VMLIMIT_OBJ=
else
@@ -2175,10 +2201,12 @@ else
of the main data segment.])
fi
fi
+AC_SUBST([HYBRID_MALLOC])
+AM_CONDITIONAL([HYBRID_MALLOC_LIB], [test -n "$HYBRID_MALLOC"])
AC_SUBST(GMALLOC_OBJ)
AC_SUBST(VMLIMIT_OBJ)
-if test "$doug_lea_malloc" = "yes" ; then
+if test "$doug_lea_malloc" = "yes" && test "$hybrid_malloc" != yes; then
if test "$GNU_MALLOC" = yes ; then
GNU_MALLOC_reason="
(Using Doug Lea's new malloc from the GNU C Library.)"
@@ -2202,7 +2230,7 @@ fi
use_mmap_for_buffers=no
case "$opsys" in
- cygwin|mingw32|freebsd|irix6-5) use_mmap_for_buffers=yes ;;
+ cygwin|mingw32) use_mmap_for_buffers=yes ;;
esac
AC_FUNC_MMAP
@@ -2424,13 +2452,20 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}"
OLD_LIBS=$LIBS
CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
LIBS="$IMAGEMAGICK_LIBS $LIBS"
- AC_CHECK_FUNCS(MagickExportImagePixels MagickMergeImageLayers)
+ AC_CHECK_FUNCS(MagickExportImagePixels MagickMergeImageLayers MagickAutoOrientImage)
CFLAGS=$OLD_CFLAGS
LIBS=$OLD_LIBS
fi
fi
fi
+AC_CHECK_LIB(anl, getaddrinfo_a, HAVE_GETADDRINFO_A=yes)
+if test "${HAVE_GETADDRINFO_A}" = "yes"; then
+ AC_DEFINE(HAVE_GETADDRINFO_A, 1,
+[Define to 1 if you have getaddrinfo_a for asynchronous DNS resolution.])
+ GETADDRINFO_A_LIBS="-lanl"
+ AC_SUBST(GETADDRINFO_A_LIBS)
+fi
HAVE_GTK=no
GTK_OBJ=
@@ -2713,7 +2748,7 @@ AC_SUBST(LIBSELINUX_LIBS)
HAVE_GNUTLS=no
if test "${with_gnutls}" = "yes" ; then
- EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6],
+ EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.12.2],
[HAVE_GNUTLS=yes], [HAVE_GNUTLS=no])
if test "${HAVE_GNUTLS}" = "yes"; then
AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
@@ -2730,6 +2765,21 @@ fi
AC_SUBST(LIBGNUTLS_LIBS)
AC_SUBST(LIBGNUTLS_CFLAGS)
+HAVE_LIBSYSTEMD=no
+if test "${with_libsystemd}" = "yes" ; then
+ dnl This code has been tested with libsystemd 222 and later.
+ dnl FIXME: Find the earliest version number for which Emacs should work,
+ dnl and change '222' to that number.
+ EMACS_CHECK_MODULES([LIBSYSTEMD], [libsystemd >= 222],
+ [HAVE_LIBSYSTEMD=yes], [HAVE_LIBSYSTEMD=no])
+ if test "${HAVE_LIBSYSTEMD}" = "yes"; then
+ AC_DEFINE(HAVE_LIBSYSTEMD, 1, [Define if using libsystemd.])
+ fi
+fi
+
+AC_SUBST(LIBSYSTEMD_LIBS)
+AC_SUBST(LIBSYSTEMD_CFLAGS)
+
NOTIFY_OBJ=
NOTIFY_SUMMARY=no
@@ -3197,34 +3247,29 @@ fi
### Use -lXpm if available, unless '--with-xpm=no'.
### mingw32 doesn't use -lXpm, since it loads the library dynamically.
-### In the Cygwin-w32 build, we need to use /usr/include/noX/X11/xpm.h
-### rather than /usr/include/X11/xpm.h, so we set CPPFLAGS (and
-### LDFLAGS) accordingly.
+### The Cygwin-w32 build uses <noX/xpm.h> instead of <X11/xpm.h>, so
+### we need to set LDFLAGS accordingly.
HAVE_XPM=no
LIBXPM=
if test "${HAVE_W32}" = "yes" && test "${opsys}" = "cygwin"; then
if test "${with_xpm}" != "no"; then
- SAVE_CPPFLAGS="$CPPFLAGS"
SAVE_LDFLAGS="$LDFLAGS"
- CPPFLAGS="$CPPFLAGS -I/usr/include/noX"
LDFLAGS="$LDFLAGS -L/usr/lib/noX"
- AC_CHECK_HEADER(X11/xpm.h,
+ AC_CHECK_HEADER(noX/xpm.h,
[AC_CHECK_LIB(Xpm, XpmReadFileToImage, HAVE_XPM=yes)])
if test "${HAVE_XPM}" = "yes"; then
AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
AC_EGREP_CPP(no_return_alloc_pixels,
- [#include "X11/xpm.h"
+ [#include "noX/xpm.h"
#ifndef XpmReturnAllocPixels
no_return_alloc_pixels
#endif
], HAVE_XPM=no, HAVE_XPM=yes)
if test "${HAVE_XPM}" = "yes"; then
- REAL_CPPFLAGS="$REAL_CPPFLAGS -I/usr/include/noX"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
- CPPFLAGS="$SAVE_CPPFLAGS"
LDFLAGS="$SAVE_LDFLAGS"
fi
fi
@@ -3523,9 +3568,9 @@ fi
AC_SUBST(LIBGIF)
dnl Check for required libraries.
+MISSING=
+WITH_NO=
if test "${HAVE_X11}" = "yes"; then
- MISSING=""
- WITH_NO=""
test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
MISSING="libXpm" && WITH_NO="--with-xpm=no"
test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
@@ -3536,15 +3581,16 @@ if test "${HAVE_X11}" = "yes"; then
MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
-
- if test "X${MISSING}" != X; then
- AC_MSG_ERROR([The following required libraries were not found:
+fi
+test "${with_gnutls}" != "no" && test "${HAVE_GNUTLS}" != "yes" &&
+ MISSING="$MISSING gnutls" && WITH_NO="$WITH_NO --with-gnutls=no"
+if test "X${MISSING}" != X; then
+ AC_MSG_ERROR([The following required libraries were not found:
$MISSING
Maybe some development libraries/packages are missing?
If you don't want to link with them give
$WITH_NO
as options to configure])
- fi
fi
### Use -lgpm if available, unless '--with-gpm=no'.
@@ -3710,20 +3756,6 @@ fi
AC_SUBST(LIBXML2_LIBS)
AC_SUBST(LIBXML2_CFLAGS)
-# If netdb.h doesn't declare h_errno, we must declare it by hand.
-# On MinGW, that is provided by nt/inc/sys/socket.h and w32.c.
-if test "${opsys}" = "mingw32"; then
- emacs_cv_netdb_declares_h_errno=yes
-fi
-AC_CACHE_CHECK(whether netdb declares h_errno,
- emacs_cv_netdb_declares_h_errno,
-[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
- [[return h_errno;]])],
- emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
-if test $emacs_cv_netdb_declares_h_errno = yes; then
- AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
-fi
-
# Check for mail-locking functions in a "mail" library. Probably this should
# have the same check as for liblockfile below.
AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
@@ -3767,7 +3799,7 @@ mail_lock=no
case "$opsys" in
aix4-2) mail_lock="lockf" ;;
- gnu|freebsd|dragonfly|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
+ gnu|freebsd|dragonfly|netbsd|openbsd|darwin) mail_lock="flock" ;;
## On GNU/Linux systems, both methods are used by various mail programs.
## I assume most people are using newer mailers that have heard of flock.
@@ -3812,9 +3844,9 @@ AC_CHECK_FUNCS(accept4 fchdir gethostname \
getrusage get_current_dir_name \
lrand48 random rint \
select getpagesize setlocale newlocale \
-getrlimit setrlimit shutdown getaddrinfo \
+getrlimit setrlimit shutdown \
pthread_sigmask strsignal setitimer \
-sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
+sendto recvfrom getsockname getifaddrs freeifaddrs \
gai_strerror sync \
getpwent endpwent getgrent endgrent \
cfmakeraw cfsetspeed copysign __executable_start log2)
@@ -3822,6 +3854,7 @@ LIBS=$OLD_LIBS
dnl No need to check for posix_memalign if aligned_alloc works.
AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
+AC_CHECK_DECLS([aligned_alloc], [], [], [[#include <stdlib.h>]])
dnl Cannot use AC_CHECK_FUNCS
AC_CACHE_CHECK([for __builtin_unwind_init],
@@ -3998,44 +4031,13 @@ AC_CACHE_CHECK([whether signals can be handled on alternate stack],
[emacs_cv_alternate_stack=yes],
[emacs_cv_alternate_stack=no])])
-# Do we have res_init, for detecting changes in /etc/resolv.conf?
-# On Darwin, res_init appears not to be useful: see bug#562 and
-# http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01467.html
-resolv=no
-
-if test $opsys != darwin; then
-
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
-#include <arpa/nameser.h>
-#include <resolv.h>]],
- [[return res_init();]])],
- have_res_init=yes, have_res_init=no)
- if test "$have_res_init" = no; then
- OLIBS="$LIBS"
- LIBS="$LIBS -lresolv"
- AC_MSG_CHECKING(for res_init with -lresolv)
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
-#include <arpa/nameser.h>
-#include <resolv.h>]],
- [[return res_init();]])],
- have_res_init=yes, have_res_init=no)
- AC_MSG_RESULT($have_res_init)
- if test "$have_res_init" = yes ; then
- resolv=yes
- fi
- LIBS="$OLIBS"
- fi
-
- if test "$have_res_init" = yes; then
- AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
- fi
-fi dnl !darwin
-
# Do we need the Hesiod library to provide the support routines?
dnl FIXME? Should we be skipping this on Darwin too?
LIBHESIOD=
+LIBRESOLV=
if test "$with_hesiod" != no ; then
# Don't set $LIBS here -- see comments above. FIXME which comments?
+ resolv=no
AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
[AC_CHECK_LIB(resolv, res_send, resolv=yes,
[AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
@@ -4044,21 +4046,16 @@ if test "$with_hesiod" != no ; then
else
RESOLVLIB=
fi
+ hesiod=no
AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
hesiod=yes, :, $RESOLVLIB)])
if test x"$hesiod" = xyes; then
LIBHESIOD=-lhesiod
+ LIBRESOLV=$RESOLVLIB
fi
fi
AC_SUBST(LIBHESIOD)
-
-# Do we need libresolv (due to res_init or Hesiod)?
-if test "$resolv" = yes && test $opsys != darwin; then
- LIBRESOLV=-lresolv
-else
- LIBRESOLV=
-fi
AC_SUBST(LIBRESOLV)
# These tell us which Kerberos-related libraries to use.
@@ -4253,7 +4250,7 @@ else
SEPCHAR=':'
fi
AC_DEFINE_UNQUOTED(SEPCHAR, ['$SEPCHAR'], [Character that separates PATH elements.])
-dnl This is for MinGW, and is used in test/automated/Makefile.in.
+dnl This is for MinGW, and is used in test/Makefile.in.
dnl The MSYS Bash has heuristics for replacing ':' with ';' when it
dnl decides that a command-line argument to be passed to a MinGW program
dnl is a PATH-style list of directories. But that heuristics plays it
@@ -4293,26 +4290,35 @@ else
[Returns true if character is any form of separator.])
fi
-AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
-
-case $opsys in
- aix4-2)
- dnl Unfortunately without libXmu we cannot support EditRes.
- if test "x$ac_cv_search_XmuConvertStandardSelection" = xno; then
- AC_DEFINE(NO_EDITRES, 1)
- fi
- ;;
-
- hpux*)
- dnl Assar Westerlund <assar@sics.se> says this is necessary for
- dnl HP-UX 10.20, and that it works for HP-UX 0 as well.
- AC_DEFINE(NO_EDITRES, 1)
+if test "$USE_X_TOOLKIT" != "none"; then
+ have_editres=yes
+ case $opsys in
+ hpux*)
+ dnl Assar Westerlund <assar@sics.se> says this is necessary
+ dnl for HP-UX 10.20, and that it works for HP-UX 0 as well.
+ have_editres=no
;;
-esac
-
+ esac
+ if test "$have_editres" != no && test ! -z "$LIBXMU"; then
+ OLDLIBS="$LIBS"
+ dnl See libXmu.a check above.
+ if test x$HAVE_X11XTR6 = xyes; then
+ LIBS="-lXt -lSM -lICE $LIBXMU"
+ else
+ OTHERLIBS="-lXt -$LIBXMU"
+ fi
+ AC_TRY_LINK(
+ [#include <X11/Intrinsic.h>
+ #include <X11/Xmu/Editres.h>],
+ [_XEditResCheckMessages (0, 0, 0, 0);],
+ [AC_DEFINE([X_TOOLKIT_EDITRES], 1,
+ [Define to 1 if we should use XEditRes.])])
+ LIBS=$OLDLIBS
+ fi
+fi
case $opsys in
- irix6-5 | sol2* | unixware )
+ sol2* | unixware )
dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
dnl instead, there's a system variable _sys_nsig. Unfortunately, we
dnl need the constant to dimension an array. So wire in the appropriate
@@ -4326,7 +4332,7 @@ emacs_broken_SIGIO=no
case $opsys in
dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
dnl See eg <http://article.gmane.org/gmane.os.openbsd.ports/46831>.
- hpux* | irix6-5 | nacl | openbsd | sol2* | unixware )
+ hpux* | nacl | openbsd | sol2* | unixware )
emacs_broken_SIGIO=yes
;;
@@ -4434,7 +4440,7 @@ dnl generated in the Makefile generated by 'xmkmf'. If we don't define
dnl NARROWPROTO, we will see the wrong function prototypes for X functions
dnl taking float or double parameters.
case $opsys in
- cygwin|gnu|gnu-linux|gnu-kfreebsd|irix6-5|freebsd|netbsd|openbsd)
+ cygwin|gnu|gnu-linux|gnu-kfreebsd|freebsd|netbsd|openbsd)
AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
file defines 'NeedWidePrototypes' as 'NO'.])
;;
@@ -4442,7 +4448,6 @@ esac
dnl Used in process.c, this must be a loop, even if it only runs once.
-dnl (Except on SGI; see below. Take that, clarity and consistency!)
AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.])
dnl Only used if !PTY_ITERATION. Iterate from FIRST_PTY_LETTER to z,
dnl trying suffixes 0-16.
@@ -4505,27 +4510,6 @@ case $opsys in
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
;;
- irix6-5 )
- dnl It looks like this cannot be right, because it is not a loop.
- dnl However, process.c actually does this:
- dnl # ifndef __sgi
- dnl continue;
- dnl # else
- dnl return -1;
- dnl # endif
- dnl which presumably makes it OK, since irix == sgi (?).
- dnl FIXME it seems like this special treatment is unnecessary?
- dnl Why can't irix use a single-trip loop like eg cygwin?
- AC_DEFINE(PTY_ITERATION, [])
- dnl Not used, because PTY_ITERATION is defined.
- AC_DEFINE(FIRST_PTY_LETTER, ['q'])
- AC_DEFINE(PTY_OPEN, [ { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCHLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCHLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }])
- dnl No need to get the pty name at all.
- AC_DEFINE(PTY_NAME_SPRINTF, [])
- dnl No need to use sprintf to get the tty name--we get that from _getpty.
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
- ;;
-
sol2* )
dnl On SysVr4, grantpt(3) forks a subprocess, so do not use
dnl O_CLOEXEC when opening the pty, and keep the SIGCHLD handler
@@ -4560,8 +4544,7 @@ AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
case $opsys in
dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX.
- dnl thomas@mathematik.uni-bremen.de says this is needed for IRIX.
- aix4-2 | cygwin | gnu | irix6-5 | dragonfly | freebsd | netbsd | openbsd | darwin )
+ aix4-2 | cygwin | gnu | dragonfly | freebsd | netbsd | openbsd | darwin )
AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
;;
@@ -4641,8 +4624,7 @@ if test x$GCC = xyes; then
AC_DEFINE(GC_SETJMP_WORKS, 1)
else
case $opsys in
- dnl irix: Tested on Irix 6.5. SCM worked on earlier versions.
- aix* | dragonfly | freebsd | netbsd | openbsd | irix6-5 | sol2* )
+ aix* | dragonfly | freebsd | netbsd | openbsd | sol2* )
AC_DEFINE(GC_SETJMP_WORKS, 1)
;;
esac
@@ -4746,12 +4728,6 @@ case $opsys in
AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
;;
- irix6-5)
- AC_DEFINE(USG, [])
- AC_DEFINE(USG5_4, [])
- AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
- ;;
-
mingw32)
AC_DEFINE(DOS_NT, [])
AC_DEFINE(WINDOWSNT, 1, [Define if compiling for native MS Windows.])
@@ -4825,11 +4801,6 @@ case $opsys in
reopen it in the child.])
;;
- irix6-5)
- AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
- use VSUSP instead of VSWTCH.])
- ;;
-
sol2-10)
AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
on Solaris.])
@@ -5043,7 +5014,7 @@ fi
AC_SUBST(RALLOC_OBJ)
if test "$opsys" = "cygwin"; then
- CYGWIN_OBJ="sheap.o cygw32.o"
+ CYGWIN_OBJ="cygw32.o"
## Cygwin differs because of its unexec().
PRE_ALLOC_OBJ=
POST_ALLOC_OBJ=lastfile.o
@@ -5272,9 +5243,10 @@ emacs_config_features=
for opt in XAW3D XPM JPEG TIFF GIF PNG RSVG CAIRO IMAGEMAGICK SOUND GPM DBUS \
GCONF GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT \
LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS X_TOOLKIT X11 NS MODULES \
- XWIDGETS; do
+ XWIDGETS LIBSYSTEMD CANNOT_DUMP; do
case $opt in
+ CANNOT_DUMP) eval val=\${$opt} ;;
NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
TOOLKIT_SCROLL_BARS|X_TOOLKIT) eval val=\${USE_$opt} ;;
*) eval val=\${HAVE_$opt} ;;
@@ -5319,6 +5291,7 @@ AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D
Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}
Does Emacs use -lotf? ${HAVE_LIBOTF}
Does Emacs use -lxft? ${HAVE_XFT}
+ Does Emacs use -lsystemd? ${HAVE_LIBSYSTEMD}
Does Emacs directly use zlib? ${HAVE_ZLIB}
Does Emacs have dynamic modules support? ${HAVE_MODULES}
Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}
@@ -5397,13 +5370,13 @@ AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
leim/Makefile nextstep/Makefile nt/Makefile])
dnl test/ is not present in release tarfiles.
-opt_makefile=test/automated/Makefile
+opt_makefile=test/Makefile
if test -f "$srcdir/$opt_makefile.in"; then
SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
dnl Again, it's best not to use a variable. Though you can add
dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
- AC_CONFIG_FILES([test/automated/Makefile])
+ AC_CONFIG_FILES([test/Makefile])
fi
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index df0764ee6b..a416734d40 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -382,6 +382,14 @@ use of this feature by setting @code{grep-highlight-matches} to
@code{t}. When displaying a match in the source buffer, the exact
match will be highlighted, instead of the entire source line.
+ The @command{grep} commands will offer to save buffers before
+running. This is controlled by the @code{grep-save-buffers} variable.
+The possible values are either @code{nil} (don't save), @code{ask}
+(ask before saving), a function which will be used as a predicate (and
+is called with the file name as the parameter and should return
+non-nil if the buffer is to be saved), and any other non-@code{nil}
+value means that all buffers should be saved without asking.
+
@findex grep-find
@findex find-grep
The command @kbd{M-x grep-find} (also available as @kbd{M-x
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index f0f686f855..444d30527f 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -283,6 +283,13 @@ which will invoke Emacs with @samp{--script} and supply the name of
the script file as @var{file}. Emacs Lisp then treats the @samp{#!}
on this first line as a comment delimiter.
+@item --no-build-details
+@opindex --no-build-details
+@cindex build details
+@cindex deterministic build
+Omit details like system name and build time from the Emacs executable,
+so that builds are more deterministic.
+
@item -q
@opindex -q
@itemx --no-init-file
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index c109335375..01637ae98a 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -1037,9 +1037,10 @@ explicitly. For example, here's how to obtain the default value of
@cindex file local variables
A file can specify local variable values to use when editing the
-file with Emacs. Visiting the file checks for local variable
-specifications; it automatically makes these variables local to the
-buffer, and sets them to the values specified in the file.
+file with Emacs. Visiting the file or setting a major mode checks for
+local variable specifications; it automatically makes these variables
+local to the buffer, and sets them to the values specified in the
+file.
@menu
* Specifying File Variables:: Specifying file local variables.
@@ -1298,7 +1299,11 @@ accomplished with @dfn{directory-local variables}.
named @file{.dir-locals.el}@footnote{ On MS-DOS, the name of this file
should be @file{_dir-locals.el}, due to limitations of the DOS
filesystems. If the filesystem is limited to 8+3 file names, the name
-of the file will be truncated by the OS to @file{_dir-loc.el}. } in a
+of the file will be truncated by the OS to @file{_dir-loc.el}.
+}@footnote{ You can also use @file{.dir-locals-2.el}, which
+is loaded in addition. This is useful when @file{.dir-locals.el} is
+under version control in a shared repository and can't be used for
+personal customizations. } in a
directory. Whenever Emacs visits any file in that directory or any of
its subdirectories, it will apply the directory-local variables
specified in @file{.dir-locals.el}, as though they had been defined as
@@ -1340,6 +1345,12 @@ be applied in the current directory, not in any subdirectories.
Finally, it specifies a different @file{ChangeLog} file name for any
file in the @file{src/imported} subdirectory.
+You can specify the variables @code{mode}, @code{eval}, and
+@code{unibyte} in your @file{.dir-locals.el}, and they have the same
+meanings as they would have in file local variables. @code{coding}
+cannot be specified as a directory local variable. @xref{File
+Variables}.
+
@findex add-dir-local-variable
@findex delete-dir-local-variable
@findex copy-file-locals-to-dir-locals
@@ -1396,7 +1407,7 @@ init file (@pxref{Init Rebinding}).
* Minibuffer Maps:: The minibuffer uses its own local keymaps.
* Rebinding:: How to redefine one key's meaning conveniently.
* Init Rebinding:: Rebinding keys with your initialization file.
-* Modifier Keys:: Using modifier keys in key bindings.
+* Modifier Keys:: Using modifier keys.
* Function Keys:: Rebinding terminal function keys.
* Named ASCII Chars:: Distinguishing @key{TAB} from @kbd{C-i}, and so on.
* Mouse Buttons:: Rebinding mouse buttons in Emacs.
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 1b10ebc875..2cda51a82f 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -550,13 +550,16 @@ Mark (with @samp{*}) all files whose @emph{contents} contain a match for
the regular expression @var{regexp}
(@code{dired-mark-files-containing-regexp}). This command is like
@kbd{% m}, except that it searches the file contents instead of the file
-name. Note that if a file is visited in an Emacs buffer, this command
-will look in the buffer without revisiting the file, so the results
+name. Note that if a file is visited in an Emacs buffer,
+and @code{dired-always-read-filesystem} is @code{nil} (the default), this
+command will look in the buffer without revisiting the file, so the results
might be inconsistent with the file on disk if its contents has changed
since it was last visited. If you don't want this, you may wish
reverting the files you have visited in your buffers, or turning on
the @code{auto-revert} mode in those buffers, before invoking this
-command. @xref{Reverting}.
+command. @xref{Reverting}. If you prefer that this command always revisit
+the file, without having to revert the file or enable @code{auto-revert}
+mode, you might want to set @code{dired-always-read-filesystem} to non-@code{nil}.
@item C-/
@itemx C-x u
@@ -1314,6 +1317,10 @@ relative). To mark a file for deletion, delete the entire file name.
To change the target of a symbolic link, edit the link target name
which appears next to the link name.
+ If you edit the file names to create a new subdirectory, Wdired will
+automatically create these new directories. To inhibit this behavior,
+set @code{wdired-create-parent-directories} to @code{nil}.
+
The rest of the text in the buffer, such as the file sizes and
modification dates, is marked read-only, so you can't edit it.
However, if you set @code{wdired-allow-to-change-permissions} to
@@ -1438,6 +1445,13 @@ names into arguments for other Emacs commands. It also displays what
it added to the kill ring, so you can use it to display the list of
currently marked files in the echo area.
+@kindex W @r{(Dired)}
+@findex browse-url-of-dired-file
+ If you have an HTML file in the file listing, it can be useful to
+view that file with a browser. The @kbd{W}
+(@code{browse-url-of-dired-file}) command will use the standard
+configured browser to view that file.
+
@kindex ( @r{(Dired)}
@findex dired-hide-details-mode
@vindex dired-hide-details-hide-symlink-targets
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index 56b643becf..738d72d046 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -613,6 +613,9 @@ This face underlines text.
This face forces use of a fixed-width font. It's reasonable to
customize this face to use a different fixed-width font, if you like,
but you should not make it a variable-width font.
+@item fixed-pitch-serif
+This face is like @code{fixed-pitch}, except the font has serifs and
+looks more like traditional typewriting.
@cindex variable-pitch face
@item variable-pitch
This face forces use of a variable-width font.
@@ -657,6 +660,9 @@ The face for displaying control characters and escape sequences
@item nobreak-space
The face for displaying no-break space characters (@pxref{Text
Display}).
+@item nobreak-hyphen
+The face for displaying no-break hyphen characters (@pxref{Text
+Display}).
@end table
The following faces control the appearance of parts of the Emacs
@@ -1487,7 +1493,7 @@ characters. To deal with this problem, Emacs displays such characters
specially: it displays @code{U+00A0} (no-break space) with the
@code{nobreak-space} face, and it displays @code{U+00AD} (soft
hyphen), @code{U+2010} (hyphen), and @code{U+2011} (non-breaking
-hyphen) with the @code{escape-glyph} face. To disable this, change
+hyphen) with the @code{nobreak-hyphen} face. To disable this, change
the variable @code{nobreak-char-display} to @code{nil}. If you give
this variable a non-@code{nil} and non-@code{t} value, Emacs instead
displays such characters as a highlighted backslash followed by a
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index fc46ef7879..f195a41d54 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -1968,6 +1968,9 @@ point. Partial Completion mode offers other features extending
major mode, you can type @kbd{C-c C-c} (@code{image-toggle-display})
to toggle between displaying the file as an image in the Emacs buffer,
and displaying its underlying text (or raw byte) representation.
+Additionally you can type @kbd{C-c C-x} (@code{image-toggle-hex-display})
+to toggle between displaying the file as an image in the Emacs buffer,
+and displaying it in hex representation.
Displaying the file as an image works only if Emacs is compiled with
support for displaying such images. If the displayed image is wider
or taller than the frame, the usual point motion keys (@kbd{C-f},
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index 7e6006262c..03172b62cf 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -97,7 +97,8 @@ ring; on a second click, kill it (@code{mouse-save-then-kill}).
invoked by clicking with the left mouse button, @kbd{mouse-1}, in the
text area of a window. This moves point to the position where you
clicked. If that window was not the selected window, it becomes the
-selected window.
+selected window. You can also activate a region by double-clicking
+mouse-1 (@pxref{Word and Line Mouse}).
@vindex x-mouse-click-focus-ignore-position
Normally, if the frame you clicked in was not the selected frame, it
@@ -215,7 +216,7 @@ also copied to the kill ring.
@table @kbd
@item Double-mouse-1
-Select the text around the word which you click on.
+Select the text around the word or character which you click on.
Double-clicking on a character with symbol syntax (such as
underscore, in C mode) selects the symbol surrounding that character.
@@ -226,6 +227,17 @@ ends. Double-clicking on a character with string-delimiter syntax
constant (Emacs uses heuristics to figure out whether that character
is the beginning or the end of it).
+Double-clicking on the beginning of a parenthetical grouping or
+beginning string-delimiter moves point to the end of the region,
+scrolling the buffer display forward if necessary to show the new
+location of point. Double-clicking on the end of a parenthetical
+grouping or end string-delimiter keeps point at the end of the region
+by default, so the beginning of the region will not be visible if it
+is above the top of the window; setting the user option
+@code{mouse-select-region-move-to-beginning} to non-nil changes this
+to move point to the beginning of the region, scrolling the display
+backward if necessary.
+
@item Double-Drag-mouse-1
Select the text you drag across, in the form of whole words.
diff --git a/doc/emacs/m-x.texi b/doc/emacs/m-x.texi
index 9e5f50b5e9..4b1165a113 100644
--- a/doc/emacs/m-x.texi
+++ b/doc/emacs/m-x.texi
@@ -69,11 +69,13 @@ number, in which case Emacs will show the binding for that many
seconds before removing it from display. The default behavior is to
display the binding for 2 seconds.
+@vindex extended-command-suggest-shorter
Commands that don't have key bindings, can still be invoked after
typing less than their full name at the @samp{M-x} prompt. Emacs
mentions such shorthands in the echo area if they are significantly
-shorter than the full command name. The setting of
-@code{suggest-key-bindings} affects these hints as well.
+shorter than the full command name, and
+@code{extended-command-suggest-shorter} is non-@code{nil}. The
+setting of @code{suggest-key-bindings} affects these hints as well.
In this manual, when we speak of running a command by name, we often
omit the @key{RET} that terminates the name. Thus we might say
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index aca29910b7..1037bd1fdd 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -1590,6 +1590,13 @@ also creates a new item for the current file. For many languages, it
can even guess the name of the function or other object that was
changed.
+@c Not worth it.
+@c @vindex change-log-directory-files
+To find the change log file, Emacs searches up the directory tree from
+the file you are editing. By default, it stops if it finds a
+directory that seems to be the root of a version-control repository.
+To change this, customize @code{change-log-directory-files}.
+
@vindex add-log-keep-changes-together
When the variable @code{add-log-keep-changes-together} is
non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 853b978492..acddb7a8f7 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -771,6 +771,14 @@ the output buffer. But if you change the value of the variable
@code{shell-command-default-error-buffer} to a string, error output is
inserted into a buffer of that name.
+@vindex shell-command-not-erase-buffer
+ By default, the output buffer is erased between shell commands.
+If you change the value of the variable
+@code{shell-command-not-erase-buffer} to a non-@code{nil} value,
+the output buffer is not erased. This variable also controls where to
+set the point in the output buffer after the command completes; see the
+documentation of the variable for details.
+
@node Interactive Shell
@subsection Interactive Subshell
@@ -1580,6 +1588,44 @@ option. @xref{Initial Options}. When Emacs is started this way, it
calls @code{server-start} after initialization, and returns control to
the calling terminal instead of opening an initial frame; it then
waits in the background, listening for edit requests.
+
+@cindex socket activation, systemd, Emacs
+@item
+An external process can invoke the Emacs server when a connection
+event occurs upon a specified socket and pass the socket to the new
+Emacs server process. An instance of this is @command{systemd}'s
+socket functionality: the @command{systemd} service creates a socket and
+listens for connections on it; when @command{emacsclient} connects to
+it for the first time, @command{systemd} can launch the Emacs server
+and hand over the socket to it for servicing @command{emacsclient}
+connections. A setup to use this functionality could be:
+
+@file{~/.config/systemd/user/emacs.service}:
+@example
+[Unit]
+Description=Emacs
+
+[Service]
+Type=forking
+ExecStart=/path/to/emacs --daemon
+ExecStop=/path/to/emacsclient --eval "(kill-emacs)"
+Restart=always
+
+[Install]
+WantedBy=default.target
+@end example
+
+@file{~/.config/systemd/user/emacs.socket}:
+@example
+[Socket]
+ListenStream=/path/to/.emacs.socket
+
+[Install]
+WantedBy=sockets.target
+@end example
+
+The @code{ListenStream} path will be the path that Emacs listens for
+connections from @command{emacsclient}; this is a file of your choice.
@end itemize
@cindex @env{TEXEDIT} environment variable
diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi
index 6ad12d646a..a87561ccf1 100644
--- a/doc/emacs/msdos.texi
+++ b/doc/emacs/msdos.texi
@@ -507,32 +507,64 @@ the variable @code{w32-alt-is-meta} to a @code{nil} value.
@findex w32-register-hot-key
@findex w32-unregister-hot-key
MS-Windows reserves certain key combinations, such as
-@kbd{@key{Alt}-@key{TAB}}, for its own use. These key combinations are
-intercepted by the system before Emacs can see them. You can use the
-@code{w32-register-hot-key} function to allow a key sequence to be
-seen by Emacs instead of being grabbed by Windows. This function
-registers a key sequence as a @dfn{hot key}, overriding the special
-meaning of that key sequence for Windows. (MS-Windows is told that
-the key sequence is a hot key only when one of the Emacs windows has
-focus, so that the special keys still have their usual meaning for
-other Windows applications.)
-
- The argument to @code{w32-register-hot-key} must be a single key,
-with or without modifiers, in vector form that would be acceptable to
-@code{define-key}. The meta modifier is interpreted as the @key{Alt}
-key if @code{w32-alt-is-meta} is @code{t} (the default), and the hyper
-modifier is always interpreted as the Windows key (usually labeled
-with @key{start} and the Windows logo). If the function succeeds in
-registering the key sequence, it returns the hotkey ID, a number;
-otherwise it returns @code{nil}.
+@kbd{@key{Alt}-@key{TAB}} and a number of Windows key combinations,
+for its own use. These key combinations are intercepted by the system
+before Emacs can see them. Also, on Windows 10, all Windows key
+combinations are reserved by the system in such a way that they are
+never propagated to applications, even if the system does not
+currently define a hotkey on the specific combination. You can use
+the @code{w32-register-hot-key} function to allow a key sequence to be
+seen by Emacs instead of being grabbed by Windows. When registered as
+a hot key, the key combination is pulled out of the system's input
+queue before it is handled by Windows, effectively overriding the
+special meaning of that key sequence for Windows. The override is
+only effective when Emacs is active; with other applications on the
+foreground the keys behave normally.
+
+ The argument to @code{w32-register-hot-key} must be a single key with a
+single modifier, in vector form that would be acceptable to
+@code{define-key}. The control and shift modifiers have no effect on the
+argument. The meta modifier is interpreted as the @key{Alt} key if
+@code{w32-alt-is-meta} is @code{t} (the default), and the super and hyper
+modifiers are interpreted according to the bindings of
+@code{w32-lwindow-modifier} and @code{w32-rwindow-modifier}. Additionally, a
+modifier with the trailing dash but with no key indicates that all
+Windows defined hotkeys for that modifier are to be overridden in the
+favor of Emacs.
@kindex M-TAB@r{, (MS-Windows)}
@cindex @kbd{M-@key{TAB}} vs @kbd{@key{Alt}-@key{TAB}} (MS-Windows)
@cindex @kbd{@key{Alt}-@key{TAB}} vs @kbd{M-@key{TAB}} (MS-Windows)
For example, @code{(w32-register-hot-key [M-tab])} lets you use
-@kbd{M-@key{TAB}} normally in Emacs; for instance, to complete the word or
-symbol at point at top level, or to complete the current search string
-against previously sought strings during incremental search.
+@kbd{M-@key{TAB}} normally in Emacs; for instance, to complete the
+word or symbol at point at top level, or to complete the current
+search string against previously sought strings during incremental
+search. @code{(w32-register-hot-key [s-])} with
+@code{w32-lwindow-modifier} bound to @code{super} disables all the
+Windows' own Windows key based shortcuts.@footnote{There is one known
+exception: The combination @kbd{@key{Windows}-@key{L}} that locks the
+workstation is handled by the system on a lower level. For this
+reason, @code{w32-register-hot-key} cannot override this key
+combination - it always locks the computer.}
+
+ Note that @code{w32-register-hot-key} checks the
+@code{w32-[lr]window-modifier} values at the time of the function
+call. Thus, you can set @code{w32-lwindow-modifier} as @code{super},
+then call @code{(w32-register-hot-key [s-r])}, and finally set
+@code{w32-rwindow-modifier} as @code{super} as well. The result is
+that the left Windows key together with @key{R} invokes whichever
+function you have bound for the combination in Emacs, and the right
+Windows key and @key{R} opens the Windows @code{Run} dialog.
+
+ The hotkey registrations always also include all the shift and
+control modifier combinations for the given hotkey; that is,
+registering @kbd{s-@key{a}} as a hotkey gives you @kbd{S-s-@key{a}},
+@kbd{C-s-@key{a}} and @kbd{C-S-s-@key{a}} as well.
+
+ On Windows 98 and ME, the hotkey registration is more restricted.
+The desired hotkey must always be fully specified, and
+@code{w32-phantom-key-code} can be customized to achieve desired
+results.
The function @code{w32-unregister-hot-key} reverses the effect of
@code{w32-register-hot-key} for its argument key sequence.
@@ -607,12 +639,7 @@ keys are passed to Windows or swallowed by Emacs. If the value is
otherwise it is passed to Windows. The default is @code{t} for both
of these variables. Passing each of these keys to Windows produces
its normal effect: for example, @kbd{@key{Lwindow}} opens the
-@code{Start} menu, etc.@footnote{
-Some combinations of the ``Windows'' keys with other keys are caught
-by Windows at a low level in a way that Emacs currently cannot prevent.
-For example, @kbd{@key{Lwindow} r} always pops up the Windows
-@samp{Run} dialog. Customizing the value of
-@code{w32-phantom-key-code} might help in some cases, though.}
+@code{Start} menu, etc.
@vindex w32-recognize-altgr
@kindex AltGr @r{(MS-Windows)}
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 7a5defabf0..fbd13c8a58 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -417,19 +417,22 @@ first @kbd{C-g} properly, then the second one will get you back to the
shell.
When you resume Emacs after a suspension caused by emergency escape,
-it asks two questions before going back to what it had been doing:
+it reports the resumption and asks a question or two before going back
+to what it had been doing:
@example
+Emacs is resuming after an emergency escape.
Auto-save? (y or n)
Abort (and dump core)? (y or n)
@end example
@noindent
-Answer each one with @kbd{y} or @kbd{n} followed by @key{RET}.
+Answer each question with @kbd{y} or @kbd{n} followed by @key{RET}.
Saying @kbd{y} to @samp{Auto-save?} causes immediate auto-saving of
all modified buffers in which auto-saving is enabled. Saying @kbd{n}
-skips this.
+skips this. This question is omitted if Emacs is in a state where
+auto-saving cannot be done safely.
Saying @kbd{y} to @samp{Abort (and dump core)?} causes Emacs to
crash, dumping core. This is to enable a wizard to figure out why
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 6e83659f63..46756d0ddd 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -2618,6 +2618,31 @@ causes it to evaluate @code{help-form} and display the result. It
then continues to wait for a valid input character, or keyboard-quit.
@end defun
+@defun read-multiple-choice prompt choices
+Ask user a multiple choice question. @var{prompt} should be a string
+that will be displayed as the prompt.
+
+@var{choices} is an alist where the first element in each entry is a
+character to be entered, the second element is a short name for the
+entry to be displayed while prompting (if there's room, it might be
+shortened), and the third, optional entry is a longer explanation that
+will be displayed in a help buffer if the user requests more help.
+
+The return value is the matching value from @var{choices}.
+
+@lisp
+(read-multiple-choice
+ "Continue connecting?"
+ '((?a "always" "Accept this certificate this session and for all future sessions.")
+ (?s "session only" "Accept this certificate this session only.")
+ (?n "no" "Refuse to use this certificate, and close the connection.")))
+@end lisp
+
+The @code{read-multiple-choice-face} face is used to highlight the
+matching characters in the name string on graphical terminals.
+
+@end defun
+
@node Event Mod
@subsection Modifying and Translating Input Events
@cindex modifiers of events
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 0d0ec671f7..93b84a0f20 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -2094,7 +2094,7 @@ is equivalent to a Lisp symbol with the same name.}. Named faces are
defined using the @code{defface} macro (@pxref{Defining Faces}).
Emacs comes with several standard named faces (@pxref{Basic Faces}).
- Many parts of Emacs required named faces, and do not accept
+ Many parts of Emacs require named faces, and do not accept
anonymous faces. These include the functions documented in
@ref{Attribute Functions}, and the variable @code{font-lock-keywords}
(@pxref{Search-based Fontification}). Unless otherwise stated, we
@@ -3020,6 +3020,7 @@ attribute on this face (@pxref{Face Attributes}).
@itemx bold-italic
@itemx underline
@itemx fixed-pitch
+@itemx fixed-pitch-serif
@itemx variable-pitch
These have the attributes indicated by their names (e.g., @code{bold}
has a bold @code{:weight} attribute), with all other attributes
@@ -4772,6 +4773,7 @@ displayed (@pxref{Display Feature Testing}).
* XPM Images:: Special features for XPM format.
* PostScript Images:: Special features for PostScript format.
* ImageMagick Images:: Special features available through ImageMagick.
+* SVG Images:: Creating and manipulating SVG images.
* Other Image Types:: Various other formats are supported.
* Defining Images:: Convenient ways to define an image for later use.
* Showing Images:: Convenient ways to display an image once it is defined.
@@ -5144,12 +5146,18 @@ specifying the bounding box of the PostScript image, analogous to the
@cindex ImageMagick images
@cindex images, support for more formats
- If you build Emacs with ImageMagick support, you can use the
+ If your Emacs build has ImageMagick support, you can use the
ImageMagick library to load many image formats (@pxref{File
Conveniences,,, emacs, The GNU Emacs Manual}). The image type symbol
for images loaded via ImageMagick is @code{imagemagick}, regardless of
the actual underlying image format.
+To check for ImageMagick support, use the following:
+
+@lisp
+(image-type-available-p 'imagemagick)
+@end lisp
+
@defun imagemagick-types
This function returns a list of image file extensions supported by the
current ImageMagick installation. Each list element is a symbol
@@ -5209,6 +5217,16 @@ and if @code{:height} is set it will have precedence over
wish. @code{:max-width} and @code{:max-height} will always preserve
the aspect ratio.
+@item :scale @var{scale}
+This should be a number, where values higher than 1 means to increase
+the size, and lower means to decrease the size. For instance, a value
+of 0.25 will make the image a quarter size of what it originally was.
+If the scaling makes the image larger than specified by
+@code{:max-width} or @code{:max-height}, the resulting size will not
+exceed those two values. If both @code{:scale} and
+@code{:height}/@code{:width} are specified, the height/width will be
+adjusted by the specified scaling factor.
+
@item :format @var{type}
The value, @var{type}, should be a symbol specifying the type of the
image data, as found in @code{image-format-suffixes}. This is used
@@ -5223,6 +5241,163 @@ Specifies a rotation angle in degrees.
@xref{Multi-Frame Images}.
@end table
+@node SVG Images
+@subsection SVG Images
+@cindex SVG images
+
+SVG (Scalable Vector Graphics) is an XML format for specifying images.
+If your Emacs build has with SVG support, you can create and manipulate
+these images with the following commands.
+
+@defun svg-create width height &rest args
+Create a new, empty SVG image with the specified dimensions.
+@var{args} is an argument plist with you can specify following:
+
+@table @code
+@item :stroke-width
+The default width (in pixels) of any lines created.
+
+@item :stroke
+The default stroke color on any lines created.
+@end table
+
+This function returns an SVG structure, and all the following commands
+work on that structure.
+@end defun
+
+@defun svg-gradient svg id type stops
+Create a gradient in @var{svg} with identifier @var{id}. @var{type}
+specifies the gradient type, and can be either @code{linear} or
+@code{radial}. @var{stops} is a list of percentage/color pairs.
+
+The following will create a linear gradient that goes from red at the
+start, to green 25% of the way, to blue at the end:
+
+@lisp
+(svg-gradient svg "gradient1" 'linear
+ '((0 . "red") (25 . "green") (100 . "blue")))
+@end lisp
+
+The gradient created (and inserted into the SVG object) can later be
+used by all functions that create shapes.
+@end defun
+
+All the following functions take an optional list of keyword
+parameters that alter the various attributes from their default
+values. Valid attributes include:
+
+@table @code
+@item :stroke-width
+The width (in pixels) of lines drawn, and outlines around solid
+shapes.
+
+@item :stroke-color
+The color of lines drawn, and outlines around solid shapes.
+
+@item :fill-color
+The color used for solid shapes.
+
+@item :id
+The identified of the shape.
+
+@item :gradient
+If given, this should be the identifier of a previously defined
+gradient object.
+@end table
+
+@defun svg-rectangle svg x y width height &rest args
+Add a rectangle to @var{svg} where the upper left corner is at
+position @var{x}/@var{y} and is of size @var{width}/@var{height}.
+
+@lisp
+(svg-rectangle svg 100 100 500 500 :gradient "gradient1")
+@end lisp
+@end defun
+
+@defun svg-circle svg x y radius &rest args
+Add a circle to @var{svg} where the center is at @var{x}/@var{y}
+and the radius is @var{radius}.
+@end defun
+
+@defun svg-ellipse svg x y x-radius y-radius &rest args
+Add a circle to @var{svg} where the center is at @var{x}/@var{y} and
+the horizontal radius is @var{x-radius} and the vertical radius is
+@var{y-radius}.
+@end defun
+
+@defun svg-line svg x1 y1 x2 y2 &rest args
+Add a line to @var{svg} that starts at @var{x1}/@var{y1} and extends
+to @var{x2}/@var{y2}.
+@end defun
+
+@defun svg-polyline svg points &rest args
+Add a multiple segment line to @var{svg} that goes through
+@var{points}, which is a list of X/Y position pairs.
+
+@lisp
+(svg-polyline svg '((200 . 100) (500 . 450) (80 . 100))
+ :stroke-color "green")
+@end lisp
+@end defun
+
+@defun svg-polygon svg points &rest args
+Add a polygon to @var{svg} where @var{points} is a list of X/Y pairs
+that describe the outer circumference of the polygon.
+
+@lisp
+(svg-polygon svg '((100 . 100) (200 . 150) (150 . 90))
+ :stroke-color "blue" :fill-color "red"")
+@end lisp
+@end defun
+
+@defun svg-text svg text &rest args
+Add a text to @var{svg}.
+
+@lisp
+(svg-text
+ svg "This is a text"
+ :font-size "40"
+ :font-weight "bold"
+ :stroke "black"
+ :fill "white"
+ :font-family "impact"
+ :letter-spacing "4pt"
+ :x 300
+ :y 400
+ :stroke-width 1)
+@end lisp
+@end defun
+
+@defun svg-embed svg image image-type datap &rest args
+Add an embedded (raster) image to @var{svg}. If @var{datap} is
+@code{nil}, @var{IMAGE} should be a file name; if not, it should be a
+binary string containing the image data. @var{image-type} should be a
+@acronym{MIME} image type, for instance @samp{"image/jpeg"}.
+
+@lisp
+(svg-embed svg "~/rms.jpg" "image/jpeg" nil
+ :width "100px" :height "100px"
+ :x "50px" :y "75px")
+@end lisp
+@end defun
+
+@defun svg-remove svg id
+Remove the element with identifier @code{id} from the @code{svg}.
+@end defun
+
+Finally, the @code{svg-image} takes an SVG object as its parameter and
+returns an image object suitable for use in functions like
+@code{insert-image}. Here's a complete example that creates and
+inserts an image with a circle:
+
+@lisp
+(let ((svg (svg-create 400 400 :stroke-width 10)))
+ (svg-gradient svg "gradient1" 'linear '((0 . "red") (100 . "blue")))
+ (svg-circle svg 200 200 100 :gradient "gradient1" :stroke-color "green")
+ (insert-image (svg-image svg)))
+@end lisp
+
+
@node Other Image Types
@subsection Other Image Types
@cindex PBM
@@ -5259,9 +5434,6 @@ Image type @code{jpeg}.
@item PNG
Image type @code{png}.
-@item SVG
-Image type @code{svg}.
-
@item TIFF
Image type @code{tiff}.
Supports the @code{:index} property. @xref{Multi-Frame Images}.
@@ -5325,6 +5497,12 @@ If none of the alternatives will work, then @var{symbol} is defined
as @code{nil}.
@end defmac
+@defun image-property image property
+Return the value of @var{property} in @var{image}. Properties can be
+set by using @code{setf}. Setting a property to @code{nil} will
+remove the property from the image.
+@end defun
+
@defun find-image specs
This function provides a convenient way to find an image satisfying one
of a list of image specifications @var{specs}.
@@ -5395,6 +5573,13 @@ Here is an example of using @code{image-load-path-for-library}:
@end example
@end defun
+@vindex image-scaling-factor
+Images are automatically scaled when created based on the
+@code{image-scaling-factor} variable. The value is either a floating
+point number (where numbers higher than 1 means to increase the size
+and lower means to shrink the size), or the symbol @code{auto}, which
+will compute a scaling factor based on the font pixel size.
+
@node Showing Images
@subsection Showing Images
@cindex show image
@@ -5504,6 +5689,26 @@ cache, it can always be displayed, even if the value of
@code{max-image-size} is subsequently changed (@pxref{Image Cache}).
@end defvar
+Images inserted with the insertion functions above also get a local
+keymap installed in the text properties (or overlays) that span the
+displayed image. This keymap defines the following commands:
+
+@table @kbd
+@item +
+Increase the image size (@code{image-increase-size}). A prefix value
+of @samp{4} means to increase the size by 40%. The default is 20%.
+
+@item -
+Decrease the image size (@code{image-increase-size}). A prefix value
+of @samp{4} means to decrease the size by 40%. The default is 20%.
+
+@item r
+Rotate the image by 90 degrees (@code{image-rotate}).
+
+@item o
+Save the image to a file (@code{image-save}).
+@end table
+
@node Multi-Frame Images
@subsection Multi-Frame Images
@cindex multi-frame images
diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi
index 47fe02a4a5..65ccb64690 100644
--- a/doc/lispref/edebug.texi
+++ b/doc/lispref/edebug.texi
@@ -384,6 +384,11 @@ now, it returns from the function and then stops. In other words, this
command does not exit the currently executing function unless you are
positioned after the last sexp.
+Normally, the @kbd{h}, @kbd{f}, and @kbd{o} commands display ``Break''
+and pause for @code{edebug-sit-for-seconds} before showing the result
+of the form just evaluated. You can avoid this pause by setting
+@code{edebug-sit-on-break} to @code{nil}. @xref{Edebug Options}.
+
The @kbd{i} command steps into the function or macro called by the list
form after point, and stops at its first stop point. Note that the form
need not be the one about to be evaluated. But if the form is a
@@ -1543,6 +1548,14 @@ Use the command @kbd{M-x edebug-all-forms} to toggle the value of this
option. @xref{Instrumenting}.
@end defopt
+@defopt edebug-eval-macro-args
+When this is non-@code{nil}, all macro arguments will be instrumented
+in the generated code. For any macro, an @code{edebug-form-spec}
+overrides this option. So to specify exceptions for macros that have
+some arguments evaluated and some not, use @code{def-edebug-spec} to
+specify an @code{edebug-form-spec}.
+@end defopt
+
@defopt edebug-save-windows
If this is non-@code{nil}, Edebug saves and restores the window
configuration. That takes some time, so if your program does not care
@@ -1601,6 +1614,21 @@ debugged.
@xref{Edebug Execution Modes}.
@end defopt
+@defopt edebug-print-length
+If non-@code{nil}, the default value of @code{print-length} for
+printing results in Edebug. @xref{Output Variables}.
+@end defopt
+
+@defopt edebug-print-level
+If non-@code{nil}, the default value of @code{print-level} for
+printing results in Edebug. @xref{Output Variables}.
+@end defopt
+
+@defopt edebug-print-circle
+If non-@code{nil}, the default value of @code{print-circle} for
+printing results in Edebug. @xref{Output Variables}.
+@end defopt
+
@defopt edebug-unwrap-results
If non-@code{nil}, Edebug tries to remove any of its own
instrumentation when showing the results of expressions. This is
@@ -1647,3 +1675,14 @@ If non-@code{nil}, an expression to test for at every stop point. If
the result is non-@code{nil}, then break. Errors are ignored.
@xref{Global Break Condition}.
@end defopt
+
+@defopt edebug-sit-for-seconds
+Number of seconds to pause when a breakpoint is reached and the execution
+mode is trace or continue. @xref{Edebug Execution Modes}.
+@end defopt
+
+@defopt edebug-sit-on-break
+Whether or not to pause for @code{edebug-sit-for-seconds} on reaching
+a breakpoint. Set to @code{nil} to prevent the pause, non-@code{nil}
+to allow it.
+@end defopt
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index 6b7ee19d5f..0aea1dfd9a 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -1195,73 +1195,83 @@ the default, but we plan to change that, so you should specify a
non-@code{nil} value for @var{id-format} if you use the returned
@acronym{UID} or @acronym{GID}.
+Accessor functions are provided to access the elements in this list.
+The accessors are mentioned along with the descriptions of the
+elements below.
+
The elements of the list, in order, are:
@enumerate 0
@item
@code{t} for a directory, a string for a symbolic link (the name
-linked to), or @code{nil} for a text file.
+linked to), or @code{nil} for a text file
+(@code{file-attribute-type}).
@c Wordy so as to prevent an overfull hbox. --rjc 15mar92
@item
-The number of names the file has. Alternate names, also known as hard
-links, can be created by using the @code{add-name-to-file} function
-(@pxref{Changing Files}).
+The number of names the file has (@code{file-attribute-link-number}).
+Alternate names, also known as hard links, can be created by using the
+@code{add-name-to-file} function (@pxref{Changing Files}).
@item
-The file's @acronym{UID}, normally as a string. However, if it does
-not correspond to a named user, the value is a number.
+The file's @acronym{UID}, normally as a string
+(@code{file-attribute-user-id}). However, if it does not correspond
+to a named user, the value is a number.
@item
-The file's @acronym{GID}, likewise.
+The file's @acronym{GID}, likewise (@code{file-attribute-group-id}).
@item
-The time of last access, as a list of four integers @code{(@var{sec-high}
-@var{sec-low} @var{microsec} @var{picosec})}. (This is similar to the
-value of @code{current-time}; see @ref{Time of Day}.) Note that on
-some FAT-based filesystems, only the date of last access is recorded,
-so this time will always hold the midnight of the day of last access.
+The time of last access, as a list of four integers
+@code{(@var{sec-high} @var{sec-low} @var{microsec} @var{picosec})}
+(@code{file-attribute-access-time}). (This is similar to the value of
+@code{current-time}; see @ref{Time of Day}.) Note that on some
+FAT-based filesystems, only the date of last access is recorded, so
+this time will always hold the midnight of the day of last access.
@cindex modification time of file
@item
-The time of last modification as a list of four integers (as above).
-This is the last time when the file's contents were modified.
+The time of last modification as a list of four integers (as above)
+(@code{file-attribute-modification-time}). This is the last time when
+the file's contents were modified.
@item
-The time of last status change as a list of four integers (as above).
-This is the time of the last change to the file's access mode bits,
-its owner and group, and other information recorded in the filesystem
-for the file, beyond the file's contents.
+The time of last status change as a list of four integers (as above)
+(@code{file-attribute-status-change-time}). This is the time of the
+last change to the file's access mode bits, its owner and group, and
+other information recorded in the filesystem for the file, beyond the
+file's contents.
@item
-The size of the file in bytes. This is floating point if the size is
-too large to fit in a Lisp integer.
+The size of the file in bytes (@code{file-attribute-size}). This is
+floating point if the size is too large to fit in a Lisp integer.
@item
-The file's modes, as a string of ten letters or dashes,
-as in @samp{ls -l}.
+The file's modes, as a string of ten letters or dashes, as in
+@samp{ls -l} (@code{file-attribute-modes}).
@item
An unspecified value, present for backward compatibility.
@item
-The file's inode number. If possible, this is an integer. If the
-inode number is too large to be represented as an integer in Emacs
-Lisp but dividing it by @math{2^{16}} yields a representable integer,
-then the value has the
+The file's inode number (@code{file-attribute-inode-number}). If
+possible, this is an integer. If the inode number is too large to be
+represented as an integer in Emacs Lisp but dividing it by
+@math{2^{16}} yields a representable integer, then the value has the
form @code{(@var{high} . @var{low})}, where @var{low} holds the low 16
-bits. If the inode number is too wide for even that, the value is of the form
-@code{(@var{high} @var{middle} . @var{low})}, where @code{high} holds
-the high bits, @var{middle} the middle 24 bits, and @var{low} the low
-16 bits.
+bits. If the inode number is too wide for even that, the value is of
+the form @code{(@var{high} @var{middle} . @var{low})}, where
+@code{high} holds the high bits, @var{middle} the middle 24 bits, and
+@var{low} the low 16 bits.
@item
-The filesystem number of the device that the file is on. Depending on
-the magnitude of the value, this can be either an integer or a cons
-cell, in the same manner as the inode number. This element and the
-file's inode number together give enough information to distinguish
-any two files on the system---no two files can have the same values
-for both of these numbers.
+The filesystem number of the device that the file is on
+@code{file-attribute-device-number}). Depending on the magnitude of
+the value, this can be either an integer or a cons cell, in the same
+manner as the inode number. This element and the file's inode number
+together give enough information to distinguish any two files on the
+system---no two files can have the same values for both of these
+numbers.
@end enumerate
For example, here are the file attributes for @file{files.texi}:
@@ -2430,6 +2440,50 @@ condition, between the @code{make-temp-name} call and the creation of
the file, which in some cases may cause a security hole.
@end defun
+Sometimes, it is necessary to create a temporary file on a remote host
+or a mounted directory. The following two functions support this.
+
+@defun make-nearby-temp-file prefix &optional dir-flag suffix
+This function is similar to @code{make-temp-file}, but it creates a
+temporary file as close as possible to @code{default-directory}. If
+@var{prefix} is a relative file name, and @code{default-directory} is
+a remote file name or located on a mounted file systems, the temporary
+file is created in the directory returned by the function
+@code{temporary-file-directory}. Otherwise, the function
+@code{make-temp-file} is used. @var{prefix}, @var{dir-flag} and
+@var{suffix} have the same meaning as in @code{make-temp-file}.
+
+@example
+@group
+(let ((default-directory "/ssh:remotehost:"))
+ (make-nearby-temp-file "foo"))
+ @result{} "/ssh:remotehost:/tmp/foo232J6v"
+@end group
+@end example
+@end defun
+
+@defun temporary-file-directory
+The directory for writing temporary files via
+@code{make-nearby-temp-file}. In case of a remote
+@code{default-directory}, this is a directory for temporary files on
+that remote host. If such a directory does not exist, or
+@code{default-directory} ought to be located on a mounted file system
+(see @code{mounted-file-systems}), the function returns
+@code{default-directory}. For a non-remote and non-mounted
+@code{default-directory}, the value of the variable
+@code{temporary-file-directory} is returned.
+@end defun
+
+In order to extract the local part of the path name from a temporary
+file, the following code could be used:
+
+@example
+@group
+(let ((tmpfile (make-nearby-temp-file "foo")))
+ (or (file-remote-p tmpfile 'localname) tmpfile))
+@end group
+@end example
+
@node File Name Completion
@subsection File Name Completion
@cindex file name completion subroutines
@@ -2893,6 +2947,7 @@ first, before handlers for jobs such as remote file access.
@code{make-auto-save-file-name},
@code{make-directory},
@code{make-directory-internal},
+@code{make-nearby-temp-file},
@code{make-symbolic-link},@*
@code{process-file},
@code{rename-file}, @code{set-file-acl}, @code{set-file-modes},
@@ -2900,6 +2955,7 @@ first, before handlers for jobs such as remote file access.
@code{set-visited-file-modtime}, @code{shell-command},
@code{start-file-process},
@code{substitute-in-file-name},@*
+@code{temporary-file-directory},
@code{unhandled-file-name-directory},
@code{vc-registered},
@code{verify-visited-file-modtime},@*
@@ -3228,7 +3284,9 @@ end position.
One responsibility of @var{from-fn} is to make sure that the beginning
of the file no longer matches @var{regexp}. Otherwise it is likely to
-get called again.
+get called again. Also, @var{from-fn} must not involve buffers or
+files other than the one being decoded, otherwise the internal buffer
+used for formatting might be overwritten.
@item to-fn
A shell command or function to encode data in this format---that is, to
@@ -3259,6 +3317,10 @@ file, it intermixes the specified annotations at the corresponding
positions. All this takes place without modifying the buffer.
@end itemize
+@var{to-fn} must not involve buffers or files other than the one being
+encoded, otherwise the internal buffer used for formatting might be
+overwritten.
+
@item modify
A flag, @code{t} if the encoding function modifies the buffer, and
@code{nil} if it works by returning a list of annotations.
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index a2e94c34b6..fff4ac0ee8 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -143,6 +143,37 @@ function, i.e., can be passed to @code{funcall}. Note that
and returns @code{nil} for special forms.
@end defun
+ It is also possible to find out how many arguments an arbitrary
+function expects:
+
+@defun func-arity function
+This function provides information about the argument list of the
+specified @var{function}. The returned value is a cons cell of the
+form @w{@code{(@var{min} . @var{max})}}, where @var{min} is the
+minimum number of arguments, and @var{max} is either the maximum
+number of arguments, or the symbol @code{many} for functions with
+@code{&rest} arguments, or the symbol @code{unevalled} if
+@var{function} is a special form.
+
+Note that this function might return inaccurate results in some
+situations, such as the following:
+
+@itemize @minus
+@item
+Functions defined using @code{apply-partially} (@pxref{Calling
+Functions, apply-partially}).
+
+@item
+Functions that are advised using @code{advice-add} (@pxref{Advising
+Named Functions}).
+
+@item
+Functions that determine the argument list dynamically, as part of
+their code.
+@end itemize
+
+@end defun
+
@noindent
Unlike @code{functionp}, the next three functions do @emph{not} treat
a symbol as its function definition.
@@ -176,12 +207,9 @@ function. For example:
@end defun
@defun subr-arity subr
-This function provides information about the argument list of a
-primitive, @var{subr}. The returned value is a pair
-@code{(@var{min} . @var{max})}. @var{min} is the minimum number of
-args. @var{max} is the maximum number or the symbol @code{many}, for a
-function with @code{&rest} arguments, or the symbol @code{unevalled} if
-@var{subr} is a special form.
+This works like @code{func-arity}, but only for built-in functions and
+without symbol indirection. It signals an error for non-built-in
+functions. We recommend to use @code{func-arity} instead.
@end defun
@node Lambda Expressions
@@ -2144,44 +2172,48 @@ Byte-compiling a file often produces warnings about functions that the
compiler doesn't know about (@pxref{Compiler Errors}). Sometimes this
indicates a real problem, but usually the functions in question are
defined in other files which would be loaded if that code is run. For
-example, byte-compiling @file{fortran.el} used to warn:
+example, byte-compiling @file{simple.el} used to warn:
@example
-In end of data:
-fortran.el:2152:1:Warning: the function ‘gud-find-c-expr’ is not
- known to be defined.
+simple.el:8727:1:Warning: the function ‘shell-mode’ is not known to be
+ defined.
@end example
-In fact, @code{gud-find-c-expr} is only used in the function that
-Fortran mode uses for the local value of
-@code{gud-find-expr-function}, which is a callback from GUD; if it is
-called, the GUD functions will be loaded. When you know that such a
-warning does not indicate a real problem, it is good to suppress the
-warning. That makes new warnings which might mean real problems more
-visible. You do that with @code{declare-function}.
+In fact, @code{shell-mode} is used only in a function that executes
+@code{(require 'shell)} before calling @code{shell-mode}, so
+@code{shell-mode} will be defined properly at run-time. When you know
+that such a warning does not indicate a real problem, it is good to
+suppress the warning. That makes new warnings which might mean real
+problems more visible. You do that with @code{declare-function}.
All you need to do is add a @code{declare-function} statement before the
first use of the function in question:
@example
-(declare-function gud-find-c-expr "gud.el" nil)
+(declare-function shell-mode "shell" ())
@end example
-This says that @code{gud-find-c-expr} is defined in @file{gud.el} (the
+This says that @code{shell-mode} is defined in @file{shell.el} (the
@samp{.el} can be omitted). The compiler takes for granted that that file
really defines the function, and does not check.
The optional third argument specifies the argument list of
-@code{gud-find-c-expr}. In this case, it takes no arguments
+@code{shell-mode}. In this case, it takes no arguments
(@code{nil} is different from not specifying a value). In other
cases, this might be something like @code{(file &optional overwrite)}.
You don't have to specify the argument list, but if you do the
byte compiler can check that the calls match the declaration.
@defmac declare-function function file &optional arglist fileonly
-Tell the byte compiler to assume that @var{function} is defined, with
-arguments @var{arglist}, and that the definition should come from the
-file @var{file}. @var{fileonly} non-@code{nil} means only check that
+Tell the byte compiler to assume that @var{function} is defined in the
+file @var{file}. The optional third argument @var{arglist} is either
+@code{t}, meaning the argument list is unspecified, or a list of
+formal parameters in the same style as @code{defun}. An omitted
+@var{arglist} defaults to @code{t}, not @code{nil}; this is atypical
+behavior for omitted arguments, and it means that to supply a fourth
+but not third argument one must specify @code{t} for the third-argument
+placeholder instead of the usual @code{nil}. The optional fourth
+argument @var{fileonly} non-@code{nil} means check only that
@var{file} exists, not that it actually defines @var{function}.
@end defmac
diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi
index 8389c21470..4607bb0a0d 100644
--- a/doc/lispref/hash.texi
+++ b/doc/lispref/hash.texi
@@ -268,18 +268,43 @@ under the property @code{hash-table-test}; the property value's form is
@code{(@var{test-fn} @var{hash-fn})}.
@end defun
-@defun sxhash obj
+@defun sxhash-equal obj
This function returns a hash code for Lisp object @var{obj}.
This is an integer which reflects the contents of @var{obj}
and the other Lisp objects it points to.
-If two objects @var{obj1} and @var{obj2} are equal, then @code{(sxhash
-@var{obj1})} and @code{(sxhash @var{obj2})} are the same integer.
+If two objects @var{obj1} and @var{obj2} are @code{equal}, then
+@code{(sxhash-equal @var{obj1})} and @code{(sxhash-equal @var{obj2})}
+are the same integer.
-If the two objects are not equal, the values returned by @code{sxhash}
-are usually different, but not always; once in a rare while, by luck,
-you will encounter two distinct-looking objects that give the same
-result from @code{sxhash}.
+If the two objects are not @code{equal}, the values returned by
+@code{sxhash-equal} are usually different, but not always; once in a
+rare while, by luck, you will encounter two distinct-looking objects
+that give the same result from @code{sxhash-equal}.
+
+@b{Common Lisp note:} In Common Lisp a similar function is called
+@code{sxhash}. Emacs provides this name as a compatibility alias for
+@code{sxhash-equal}.
+@end defun
+
+@defun sxhash-eq obj
+This function returns a hash code for Lisp object @var{obj}. Its
+result reflects identity of @var{obj}, but not its contents.
+
+If two objects @var{obj1} and @var{obj2} are @code{eq}, then
+@code{(xhash @var{obj1})} and @code{(xhash @var{obj2})} are the same
+integer.
+@end defun
+
+@defun sxhash-eql obj
+This function returns a hash code for Lisp object @var{obj} suitable
+for @code{eql} comparison. I.e. it reflects identity of @var{obj}
+except for the case where the object is a float number, in which case
+hash code is generated for the value.
+
+If two objects @var{obj1} and @var{obj2} are @code{eql}, then
+@code{(xhash @var{obj1})} and @code{(xhash @var{obj2})} are the same
+integer.
@end defun
This example creates a hash table whose keys are strings that are
@@ -289,7 +314,7 @@ compared case-insensitively.
(defun case-fold-string= (a b)
(eq t (compare-strings a nil nil b nil nil t)))
(defun case-fold-string-hash (a)
- (sxhash (upcase a)))
+ (sxhash-equal (upcase a)))
(define-hash-table-test 'case-fold
'case-fold-string= 'case-fold-string-hash)
@@ -302,7 +327,7 @@ predefined test value @code{equal}. The keys can be any Lisp object,
and equal-looking objects are considered the same key.
@example
-(define-hash-table-test 'contents-hash 'equal 'sxhash)
+(define-hash-table-test 'contents-hash 'equal 'sxhash-equal)
(make-hash-table :test 'contents-hash)
@end example
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index b945e438f5..1bb2c7c4d0 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -332,15 +332,13 @@ stands for no text itself. It is used only for a side effect: it
specifies @var{mapvar}'s value as the keymap for any following
@samp{\[@var{command}]} sequences in this documentation string.
-@item ‘
-@itemx `
-(left single quotation mark and grave accent) both stand for a left quote.
+@item `
+(grave accent) stands for a left quote.
This generates a left single quotation mark, an apostrophe, or a grave
accent depending on the value of @code{text-quoting-style}.
-@item ’
-@itemx '
-(right single quotation mark and apostrophe) both stand for a right quote.
+@item '
+(apostrophe) stands for a right quote.
This generates a right single quotation mark or an apostrophe
depending on the value of @code{text-quoting-style}.
@@ -361,7 +359,8 @@ should use for single quotes in the wording of help and messages.
If the variable's value is @code{curve}, the style is
@t{‘like this’} with curved single quotes. If the value is
@code{straight}, the style is @t{'like this'} with straight
-apostrophes. If the value is @code{grave}, the style is @t{`like
+apostrophes. If the value is @code{grave},
+quotes are not translated and the style is @t{`like
this'} with grave accent and apostrophe, the standard style
before Emacs version 25. The default value @code{nil}
acts like @code{curve} if curved single quotes are displayable, and
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index 41064df5a2..fedef3d7f4 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -66,6 +66,16 @@ into the dumped Emacs. If you port Emacs to a new operating system,
and are not able to implement dumping, then Emacs must load
@file{loadup.el} each time it starts.
+@cindex build details
+@cindex deterministic build
+@cindex @option{--disable-build-details} option to @command{configure}
+ By default the dumped @file{emacs} executable records details such
+as the build time and host name. Use the
+@option{--disable-build-details} option of @command{configure} to
+suppress these details, so that building and installing Emacs twice
+from the same sources is more likely to result in identical copies of
+Emacs.
+
@cindex @file{site-load.el}
You can specify additional files to preload by writing a library named
@file{site-load.el} that loads them. You may need to rebuild Emacs
diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi
index 0f42d4d8a7..2f84aeee39 100644
--- a/doc/lispref/intro.texi
+++ b/doc/lispref/intro.texi
@@ -494,7 +494,8 @@ giving a prefix argument makes @var{here} non-@code{nil}.
@defvar emacs-build-time
The value of this variable indicates the time at which Emacs was
built. It is a list of four integers, like the value of
-@code{current-time} (@pxref{Time of Day}).
+@code{current-time} (@pxref{Time of Day}), or is @code{nil}
+if the information is not available.
@example
@group
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 2641ad0b6a..29f2c422cb 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -350,7 +350,21 @@ lots of bindings; for just a few, the sparse keymap is better.
@end defun
@defun copy-keymap keymap
-This function returns a copy of @var{keymap}. Any keymaps that
+This function returns a copy of @var{keymap}. This is almost never
+needed. If you want a keymap that's like another yet with a few
+changes, you should use map inheritance rather than copying.
+I.e., something like:
+
+@example
+@group
+(let ((map (make-sparse-keymap)))
+ (set-keymap-parent map <theirmap>)
+ (define-key map ...)
+ ...)
+@end group
+@end example
+
+When performing @code{copy-keymap}, any keymaps that
appear directly as bindings in @var{keymap} are also copied recursively,
and so on to any number of levels. However, recursive copying does not
take place when the definition of a character is a symbol whose function
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 1fa2536db4..8d5347556e 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -170,6 +170,23 @@ non-@code{nil}, then the string that is returned includes whatever text
properties were present in the minibuffer. Otherwise all the text
properties are stripped when the value is returned.
+@vindex minibuffer-prompt-properties
+The text properties in @code{minibuffer-prompt-properties} are applied
+to the prompt. By default, this property list defines a face to use
+for the prompt. This face, if present, is applied to the end of the
+face list and merged before display.
+
+If the user wants to completely control the look of the prompt, the
+most convenient way to do that is to specify the @code{default} face
+at the end of all face lists. For instance:
+
+@lisp
+(read-from-minibuffer
+ (concat
+ (propertize "Bold" 'face '(bold default))
+ (propertize " and normal: " 'face '(default))))
+@end lisp
+
If the argument @var{inherit-input-method} is non-@code{nil}, then the
minibuffer inherits the current input method (@pxref{Input Methods}) and
the setting of @code{enable-multibyte-characters} (@pxref{Text
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 32baa27147..368d882a4b 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -445,7 +445,8 @@ other packages would interfere with them.
Each major mode should have a normal @dfn{mode hook} named
@code{@var{modename}-mode-hook}. The very last thing the major mode command
should do is to call @code{run-mode-hooks}. This runs the normal
-hook @code{change-major-mode-after-body-hook}, the mode hook,
+hook @code{change-major-mode-after-body-hook}, the mode hook, the
+function @code{hack-local-variables} (when the buffer is visiting a file),
and then the normal hook @code{after-change-major-mode-hook}.
@xref{Mode Hooks}.
@@ -525,11 +526,12 @@ the buffer based on information in the file name or in the file itself.
It also processes local variables specified in the file text.
@deffn Command normal-mode &optional find-file
-This function establishes the proper major mode and buffer-local variable
-bindings for the current buffer. First it calls @code{set-auto-mode}
-(see below), then it runs @code{hack-local-variables} to parse, and
-bind or evaluate as appropriate, the file's local variables
-(@pxref{File Local Variables}).
+This function establishes the proper major mode and buffer-local
+variable bindings for the current buffer. It calls
+@code{set-auto-mode} (see below). As from Emacs 25.2, it no longer
+runs @code{hack-local-variables}, this now being done in
+@code{run-mode-hooks} at the initialization of major modes
+(@pxref{Mode Hooks}).
If the @var{find-file} argument to @code{normal-mode} is non-@code{nil},
@code{normal-mode} assumes that the @code{find-file} function is calling
@@ -543,9 +545,9 @@ If you run @code{normal-mode} interactively, the argument
@var{find-file} is normally @code{nil}. In this case,
@code{normal-mode} unconditionally processes any file local variables.
-The function calls @code{set-auto-mode} to choose a major mode. If this
-does not specify a mode, the buffer stays in the major mode determined
-by the default value of @code{major-mode} (see below).
+The function calls @code{set-auto-mode} to choose and set a major
+mode. If this does not specify a mode, the buffer stays in the major
+mode determined by the default value of @code{major-mode} (see below).
@cindex file mode specification error
@code{normal-mode} uses @code{condition-case} around the call to the
@@ -555,16 +557,17 @@ mode specification error}, followed by the original error message.
@defun set-auto-mode &optional keep-mode-if-same
@cindex visited file mode
- This function selects the major mode that is appropriate for the
-current buffer. It bases its decision (in order of precedence) on the
-@w{@samp{-*-}} line, on any @samp{mode:} local variable near the end of
-a file, on the @w{@samp{#!}} line (using @code{interpreter-mode-alist}),
-on the text at the beginning of the buffer (using
-@code{magic-mode-alist}), and finally on the visited file name (using
-@code{auto-mode-alist}). @xref{Choosing Modes, , How Major Modes are
-Chosen, emacs, The GNU Emacs Manual}. If @code{enable-local-variables}
-is @code{nil}, @code{set-auto-mode} does not check the @w{@samp{-*-}}
-line, or near the end of the file, for any mode tag.
+ This function selects and sets the major mode that is appropriate
+for the current buffer. It bases its decision (in order of
+precedence) on the @w{@samp{-*-}} line, on any @samp{mode:} local
+variable near the end of a file, on the @w{@samp{#!}} line (using
+@code{interpreter-mode-alist}), on the text at the beginning of the
+buffer (using @code{magic-mode-alist}), and finally on the visited
+file name (using @code{auto-mode-alist}). @xref{Choosing Modes, , How
+Major Modes are Chosen, emacs, The GNU Emacs Manual}. If
+@code{enable-local-variables} is @code{nil}, @code{set-auto-mode} does
+not check the @w{@samp{-*-}} line, or near the end of the file, for
+any mode tag.
@vindex inhibit-local-variables-regexps
There are some file types where it is not appropriate to scan the file
@@ -749,7 +752,8 @@ The new mode has its own abbrev table, kept in the variable
@item
The new mode has its own mode hook, @code{@var{variant}-hook}. It
runs this hook, after running the hooks of its ancestor modes, with
-@code{run-mode-hooks}, as the last thing it does. @xref{Mode Hooks}.
+@code{run-mode-hooks}, as the last thing it does, apart from running
+any @code{:after-hook} form it may have. @xref{Mode Hooks}.
@end itemize
In addition, you can specify how to override other aspects of
@@ -773,8 +777,9 @@ about the mode's hook, followed by the mode's keymap, at the end of this
documentation string. If you omit @var{docstring},
@code{define-derived-mode} generates a documentation string.
-The @var{keyword-args} are pairs of keywords and values. The values
-are evaluated. The following keywords are currently supported:
+The @var{keyword-args} are pairs of keywords and values. The values,
+except for @code{:after-hook}'s, are evaluated. The following
+keywords are currently supported:
@table @code
@item :syntax-table
@@ -797,6 +802,15 @@ If this is specified, the value should be the customization group for
this mode. (Not all major modes have one.) The command
@code{customize-mode} uses this. @code{define-derived-mode} does
@emph{not} automatically define the specified customization group.
+
+@item :after-hook
+This optional keyword specifies a single Lisp form to evaluate as the
+final act of the mode function, after the mode hooks have been run.
+It should not be quoted. Since the form might be evaluated after the
+mode function has terminated, it should not access any element of the
+mode function's local state. An @code{:after-hook} form is useful for
+setting up aspects of the mode which depend on the user's settings,
+which in turn may have been changed in a mode hook.
@end table
Here is a hypothetical example:
@@ -906,11 +920,15 @@ use the following functions to handle these conventions automatically.
@defun run-mode-hooks &rest hookvars
Major modes should run their mode hook using this function. It is
similar to @code{run-hooks} (@pxref{Hooks}), but it also runs
-@code{change-major-mode-after-body-hook} and
-@code{after-change-major-mode-hook}.
+@code{change-major-mode-after-body-hook}, @code{hack-local-variables}
+(when the buffer is visiting a file) (@pxref{File Local Variables}),
+and @code{after-change-major-mode-hook}. The last thing it does is to
+evaluate any @code{:after-hook} forms declared by parent modes
+(@pxref{Derived Modes}).
When this function is called during the execution of a
-@code{delay-mode-hooks} form, it does not run the hooks immediately.
+@code{delay-mode-hooks} form, it does not run the hooks or
+@code{hack-local-variables} or evaluate the forms immediately.
Instead, it arranges for the next call to @code{run-mode-hooks} to run
them.
@end defun
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index 9cf3b5750f..fd2ce3248f 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -420,6 +420,18 @@ codepoint can have.
@end example
@end defun
+@defun char-from-name string &optional ignore-case
+This function returns the character whose Unicode name is @var{string}.
+If @var{ignore-case} is non-@code{nil}, case is ignored in @var{string}.
+This function returns @code{nil} if @var{string} does not name a character.
+
+@example
+;; U+03A3
+(= (char-from-name "GREEK CAPITAL LETTER SIGMA") #x03A3)
+ @result{} t
+@end example
+@end defun
+
@defun get-byte &optional pos string
This function returns the byte at character position @var{pos} in the
current buffer. If the current buffer is unibyte, this is literally
@@ -622,18 +634,21 @@ This function returns the value of @var{char}'s @var{propname} property.
@result{} Nd
@end group
@group
-;; U+2084 SUBSCRIPT FOUR
-(get-char-code-property ?\u2084 'digit-value)
+;; U+2084
+(get-char-code-property ?\N@{SUBSCRIPT FOUR@}
+ 'digit-value)
@result{} 4
@end group
@group
-;; U+2155 VULGAR FRACTION ONE FIFTH
-(get-char-code-property ?\u2155 'numeric-value)
+;; U+2155
+(get-char-code-property ?\N@{VULGAR FRACTION ONE FIFTH@}
+ 'numeric-value)
@result{} 0.2
@end group
@group
-;; U+2163 ROMAN NUMERAL FOUR
-(get-char-code-property ?\u2163 'numeric-value)
+;; U+2163
+(get-char-code-property ?\N@{ROMAN NUMERAL FOUR@}
+ 'numeric-value)
@result{} 4
@end group
@group
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 324593068d..54894b8e24 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -353,25 +353,32 @@ following text.)
control characters, Emacs provides several types of escape syntax that
you can use to specify non-@acronym{ASCII} text characters.
+@enumerate
+@item
@cindex @samp{\} in character constant
@cindex backslash in character constants
@cindex unicode character escape
- Firstly, you can specify characters by their Unicode values.
-@code{?\u@var{nnnn}} represents a character with Unicode code point
-@samp{U+@var{nnnn}}, where @var{nnnn} is (by convention) a hexadecimal
-number with exactly four digits. The backslash indicates that the
-subsequent characters form an escape sequence, and the @samp{u}
-specifies a Unicode escape sequence.
-
- There is a slightly different syntax for specifying Unicode
-characters with code points higher than @code{U+@var{ffff}}:
-@code{?\U00@var{nnnnnn}} represents the character with code point
-@samp{U+@var{nnnnnn}}, where @var{nnnnnn} is a six-digit hexadecimal
-number. The Unicode Standard only defines code points up to
-@samp{U+@var{10ffff}}, so if you specify a code point higher than
-that, Emacs signals an error.
-
- Secondly, you can specify characters by their hexadecimal character
+You can specify characters by their Unicode names, if any.
+@code{?\N@{@var{NAME}@}} represents the Unicode character named
+@var{NAME}. Thus, @samp{?\N@{LATIN SMALL LETTER A WITH GRAVE@}} is
+equivalent to @code{?à} and denotes the Unicode character U+00E0. To
+simplify entering multi-line strings, you can replace spaces in the
+names by non-empty sequences of whitespace (e.g., newlines).
+
+@item
+You can specify characters by their Unicode values.
+@code{?\N@{U+@var{X}@}} represents a character with Unicode code point
+@var{X}, where @var{X} is a hexadecimal number. Also,
+@code{?\u@var{xxxx}} and @code{?\U@var{xxxxxxxx}} represent code
+points @var{xxxx} and @var{xxxxxxxx}, respectively, where each @var{x}
+is a single hexadecimal digit. For example, @code{?\N@{U+E0@}},
+@code{?\u00e0} and @code{?\U000000E0} are all equivalent to @code{?à}
+and to @samp{?\N@{LATIN SMALL LETTER A WITH GRAVE@}}. The Unicode
+Standard defines code points only up to @samp{U+@var{10ffff}}, so if
+you specify a code point higher than that, Emacs signals an error.
+
+@item
+You can specify characters by their hexadecimal character
codes. A hexadecimal escape sequence consists of a backslash,
@samp{x}, and the hexadecimal character code. Thus, @samp{?\x41} is
the character @kbd{A}, @samp{?\x1} is the character @kbd{C-a}, and
@@ -379,14 +386,17 @@ the character @kbd{A}, @samp{?\x1} is the character @kbd{C-a}, and
You can use any number of hex digits, so you can represent any
character code in this way.
+@item
@cindex octal character code
- Thirdly, you can specify characters by their character code in
+You can specify characters by their character code in
octal. An octal escape sequence consists of a backslash followed by
up to three octal digits; thus, @samp{?\101} for the character
@kbd{A}, @samp{?\001} for the character @kbd{C-a}, and @code{?\002}
for the character @kbd{C-b}. Only characters up to octal code 777 can
be specified this way.
+@end enumerate
+
These escape sequences may also be used in strings. @xref{Non-ASCII
in Strings}.
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index ec14b014e5..08c69d37c5 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -904,9 +904,6 @@ A GNU (glibc-based) system with a FreeBSD kernel.
@item hpux
Hewlett-Packard HPUX operating system.
-@item irix
-Silicon Graphics Irix system.
-
@item nacl
Google Native Client (@acronym{NaCl}) sandboxing system.
@@ -1332,7 +1329,13 @@ omitted or @code{nil}, the conversion uses Emacs's default time zone.
If it is @code{t}, the conversion uses Universal Time. If it is
@code{wall}, the conversion uses the system wall clock time. If it is
a string, the conversion uses the time zone rule equivalent to setting
-@env{TZ} to that string.
+@env{TZ} to that string. If it is an integer @var{offset}, the
+conversion uses a fixed time zone with the given offset and a numeric
+abbreviation on POSIX-compatible platforms and an unspecified abbreviation
+on MS-Windows. If it is a list (@var{offset} @var{abbr}), where
+@var{offset} is an integer number of seconds east of Universal Time
+and @var{abbr} is a string, the conversion uses a fixed time zone with
+the given offset and abbreviation.
@defun current-time-zone &optional time zone
@cindex time zone, current
@@ -1430,10 +1433,6 @@ yourself before you call @code{encode-time}.
The optional argument @var{zone} defaults to the current time zone rule.
@xref{Time Zone Rules}.
-In addition to the usual time zone rule values, it can also be a list
-(as you would get from @code{current-time-zone}) or an integer (as
-from @code{decode-time}), applied without any further alteration for
-daylight saving time.
If you pass more than seven arguments to @code{encode-time}, the first
six are used as @var{seconds} through @var{year}, the last argument is
@@ -1866,6 +1865,12 @@ one of these functions; the arrival of the specified time will not
cause anything special to happen.
@end defun
+@findex timer-list
+The @code{timer-list} command lists all the currently active timers.
+There's only one command available in the buffer displayed: @kbd{c}
+(@code{timer-list-cancel}) that will cancel the timer on the line
+under point.
+
@node Idle Timers
@section Idle Timers
@cindex idle timers
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index b6133dc7e2..a56ab5ef30 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -593,10 +593,12 @@ any buffer, whether or not it is currently displayed in some window.
@deffn Command move-to-window-line count
This function moves point with respect to the text currently displayed
in the selected window. It moves point to the beginning of the screen
-line @var{count} screen lines from the top of the window. If
-@var{count} is negative, that specifies a position
-@w{@minus{}@var{count}} lines from the bottom (or the last line of the
-buffer, if the buffer ends above the specified screen position).
+line @var{count} screen lines from the top of the window; zero means
+the topmost line. If @var{count} is negative, that specifies a
+position @w{@minus{}@var{count}} lines from the bottom (or the last
+line of the buffer, if the buffer ends above the specified screen
+position); thus, @var{count} of -1 specifies the last fully visible
+screen line of the window.
If @var{count} is @code{nil}, then point moves to the beginning of the
line in the middle of the window. If the absolute value of @var{count}
@@ -607,8 +609,8 @@ location onto the screen.
In an interactive call, @var{count} is the numeric prefix argument.
-The value returned is the window line number point has moved to, with
-the top line in the window numbered 0.
+The value returned is the screen line number point has moved to,
+relative to the top line of the window.
@end deffn
@vindex move-to-window-group-line-function
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index b4542f65cc..cd1201276e 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -2185,7 +2185,8 @@ associated with any buffer.
The arguments @var{host} and @var{service} specify where to connect to;
@var{host} is the host name (a string), and @var{service} is the name of
-a defined network service (a string) or a port number (an integer).
+a defined network service (a string) or a port number (an integer like
+@code{80} or an integer string like @code{"80"}).
The remaining arguments @var{parameters} are keyword/argument pairs
that are mainly relevant to encrypted connections:
@@ -2409,8 +2410,9 @@ connecting to that address will be accepted.
@item :service @var{service}
@var{service} specifies a port number to connect to; or, for a server,
-the port number to listen on. It should be a service name that
-translates to a port number, or an integer specifying the port number
+the port number to listen on. It should be a service name like
+@samp{"http"} that translates to a port number, or an integer like @samp{80}
+or an integer string like @samp{"80"} that specifies the port number
directly. For a server, it can also be @code{t}, which means to let
the system select an unused port number.
@@ -2422,6 +2424,12 @@ automatically for the given @var{host} and @var{service}.
ignored. @code{ipv4} and @code{ipv6} specify to use IPv4 and IPv6,
respectively.
+@item :use-external-socket @var{use-external-socket}
+If @var{use-external-socket} is non-@code{nil} use any sockets passed
+to Emacs on invocation instead of allocating one. This is used by the
+Emacs server code to allow on-demand socket activation. If Emacs
+wasn't passed a socket, this option is silently ignored.
+
@item :local @var{local-address}
For a server process, @var{local-address} is the address to listen on.
It overrides @var{family}, @var{host} and @var{service}, so you
@@ -2472,8 +2480,33 @@ without waiting for the connection to complete. When the connection
succeeds or fails, Emacs will call the sentinel function, with a
second argument matching @code{"open"} (if successful) or
@code{"failed"}. The default is to block, so that
-@code{make-network-process} does not return until the connection
-has succeeded or failed.
+@code{make-network-process} does not return until the connection has
+succeeded or failed.
+
+If you're setting up an asynchronous TLS connection, you have to also
+provide the @code{:tls-parameters} parameter (see below).
+
+Depending on the capabilities of Emacs, how asynchronous
+@code{:nowait} is may vary. The three elements that may (or may not)
+be done asynchronously are domain name resolution, socket setup, and
+(for TLS connections) TLS negotiation.
+
+Many functions that interact with process objects, (for instance,
+@code{process-datagram-address}) rely on them at least having a socket
+before they can return a useful value. These functions will block
+until the socket has achieved the desired status. The recommended way
+of interacting with asynchronous sockets is to place a sentinel on the
+process, and not try to interact with it before it has changed status
+to @samp{"run"}. That way, none of these functions will block.
+
+@item :tls-parameters
+When opening a TLS connection, this should be where the first element
+is the TLS type (which should either be @code{gnutls-x509pki} or
+@code{gnutls-anon}, and the remaining elements should form a keyword
+list acceptable for @code{gnutls-boot}. (This keyword list can be
+obtained from the @code{gnutls-boot-parameters} function.) The TLS
+connection will then be negotiated after completing the connection to
+the host.
@item :stop @var{stopped}
If @var{stopped} is non-@code{nil}, start the network connection or
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index acf3d0e984..a04e6938ce 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -1818,6 +1818,14 @@ Answer this question and all subsequent questions in the series with
@item backup
Move back to the previous place that a question was asked about.
+@item undo
+Undo last replacement and move back to the place where that
+replacement was performed.
+
+@item undo-all
+Undo all replacements and move back to the place where the first
+replacement was performed.
+
@item edit
Enter a recursive edit to deal with this question---instead of any
other action that would normally be taken.
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index a54ab104ab..08e5e3ae35 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -576,6 +576,21 @@ element of @var{sequence}. The returned value is a list.
@end example
@end defun
+@defun seq-map-indexed function sequence
+ This function returns the result of applying @var{function} to each
+element of @var{sequence} and its index within @var{seq}. The
+returned value is a list.
+
+@example
+@group
+(seq-map-indexed (lambda (elt idx)
+ (list idx elt))
+ '(a b c))
+@result{} ((0 a) (b 1) (c 2))
+@end group
+@end example
+@end defun
+
@defun seq-mapn function &rest sequences
This function returns the result of applying @var{function} to each
element of @var{sequences}. The arity (@pxref{What Is a Function,
@@ -748,6 +763,18 @@ according to @var{function}, a function of two arguments that returns
non-@code{nil} if the first argument should sort before the second.
@end defun
+@defun seq-sort-by function predicate sequence
+ This function is similar to @code{seq-sort}, but the elements of
+@var{sequence} are transformed by applying @var{function} on them
+before being sorted. @var{function} is a function of one argument.
+
+@example
+(seq-sort-by #'seq-length #'> ["a" "ab" "abc"])
+@result{} ["abc" "ab" "a"]
+@end example
+@end defun
+
+
@defun seq-contains sequence elt &optional function
This function returns the first element in @var{sequence} that is equal to
@var{elt}. If the optional argument @var{function} is non-@code{nil},
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index febe3212ba..0b9529460f 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -634,6 +634,14 @@ If your system does not support a locale environment, this function
behaves like @code{string-lessp}.
@end defun
+@defun string-version-lessp string1 string2
+This function compares strings lexicographically, except it treats
+sequences of numerical characters as if they comprised a base-ten
+number, and then compares the numbers. So @samp{foo2.png} is
+``smaller'' than @samp{foo12.png} according to this predicate, even if
+@samp{12} is lexicographically ``smaller'' than @samp{2}.
+@end defun
+
@defun string-prefix-p string1 string2 &optional ignore-case
This function returns non-@code{nil} if @var{string1} is a prefix of
@var{string2}; i.e., if @var{string2} starts with @var{string1}. If
@@ -827,16 +835,16 @@ arguments @var{objects} are the computed values to be formatted.
The characters in @var{string}, other than the format specifications,
are copied directly into the output, including their text properties,
-if any.
+if any. Any text properties of the format specifications are copied
+to the produced string representations of the argument @var{objects}.
@end defun
@defun format-message string &rest objects
@cindex curved quotes
@cindex curly quotes
This function acts like @code{format}, except it also converts any
-curved single quotes in @var{string} as per the value of
-@code{text-quoting-style}, and treats grave accent (@t{`}) and
-apostrophe (@t{'}) as if they were curved single quotes.
+grave accents (@t{`}) and apostrophes (@t{'}) in @var{string} as per the
+value of @code{text-quoting-style}.
A format that quotes with grave accents and apostrophes @t{`like
this'} typically generates curved quotes @t{‘like this’}. In
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index 19782d0fbd..f81c1643c2 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -331,10 +331,10 @@ alternative ``c'' comment style. For a two-character comment
delimiter, @samp{c} on either character makes it of style ``c''.
@item
-@samp{n} on a comment delimiter character specifies
-that this kind of comment can be nested. For a two-character
-comment delimiter, @samp{n} on either character makes it
-nestable.
+@samp{n} on a comment delimiter character specifies that this kind of
+comment can be nested. Inside such a comment, only comments of the
+same style will be recognized. For a two-character comment delimiter,
+@samp{n} on either character makes it nestable.
@cindex comment style
Emacs supports several comment styles simultaneously in any one syntax
@@ -791,10 +791,10 @@ Hooks}).
@subsection Parser State
@cindex parser state
- A @dfn{parser state} is a list of ten elements describing the state
-of the syntactic parser, after it parses the text between a specified
-starting point and a specified end point in the buffer. Parsing
-functions such as @code{syntax-ppss}
+ A @dfn{parser state} is a list of (currently) eleven elements
+describing the state of the syntactic parser, after it parses the text
+between a specified starting point and a specified end point in the
+buffer. Parsing functions such as @code{syntax-ppss}
@ifnottex
(@pxref{Position Parse})
@end ifnottex
@@ -851,15 +851,20 @@ position where the string began. When outside of strings and comments,
this element is @code{nil}.
@item
-Internal data for continuing the parsing. The meaning of this
-data is subject to change; it is used if you pass this list
-as the @var{state} argument to another call.
+The list of the positions of the currently open parentheses, starting
+with the outermost.
+
+@item
+When the last buffer position scanned was the (potential) first
+character of a two character construct (comment delimiter or
+escaped/char-quoted character pair), the @var{syntax-code}
+(@pxref{Syntax Table Internals}) of that position. Otherwise
+@code{nil}.
@end enumerate
Elements 1, 2, and 6 are ignored in a state which you pass as an
-argument to continue parsing, and elements 8 and 9 are used only in
-trivial cases. Those elements are mainly used internally by the
-parser code.
+argument to continue parsing. Elements 9 and 10 are mainly used
+internally by the parser code.
One additional piece of useful information is available from a
parser state using this function:
@@ -898,10 +903,11 @@ The depth starts at 0, or at whatever is given in @var{state}.
If the fourth argument @var{stop-before} is non-@code{nil}, parsing
stops when it comes to any character that starts a sexp. If
-@var{stop-comment} is non-@code{nil}, parsing stops when it comes to the
-start of a comment. If @var{stop-comment} is the symbol
-@code{syntax-table}, parsing stops after the start of a comment or a
-string, or the end of a comment or a string, whichever comes first.
+@var{stop-comment} is non-@code{nil}, parsing stops after the start of
+an unnested comment. If @var{stop-comment} is the symbol
+@code{syntax-table}, parsing stops after the start of an unnested
+comment or a string, or after the end of an unnested comment or a
+string, whichever comes first.
If @var{state} is @code{nil}, @var{start} is assumed to be at the top
level of parenthesis structure, such as the beginning of a function
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 0445d68ef9..213eec9d3c 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -2362,6 +2362,83 @@ already indented, it calls @code{completion-at-point} to complete the
text at point (@pxref{Completion in Buffers}).
@end defopt
+@cindex literate programming
+@cindex multi-mode indentation
+ Some major modes need to support embedded regions of text whose
+syntax belongs to a different major mode. Examples include
+@dfn{literate programming} source files that combine documentation and
+snippets of source code, Yacc/Bison programs that include snippets of
+plain C code, etc. To correctly indent the embedded chunks, the major
+mode needs to delegate the indentation to another mode's indentation
+engine (e.g., call @code{c-indent-defun} for C code or
+@code{python-indent-line} for Python), while providing it with some
+context to guide the indentation. The following facilities support
+such multi-mode indentation.
+
+@defvar prog-indentation-context
+This variable, when non-@code{nil}, holds the indentation context for
+the sub-mode's indentation engine provided by the superior major mode.
+The value should be a list of the form @code{(@var{first-column}
+@w{(@var{start} . @var{end})} @code{prev-chunk})}. The members of the
+list have the following meaning:
+
+@table @var
+@item first-column
+The column to be used for top-level constructs. This replaces the
+default value of the top-level column used by the sub-mode, usually
+zero.
+@item start
+@itemx end
+The region of the code chunk to be indented by the sub-mode. The
+value of @var{end} can be @code{nil}, which stands for the value of
+@code{point-max}.
+@item prev-chunk
+If this is non-@code{nil}, it should provide the sub-mode's
+indentation engine with a virtual context of the code chunk. Valid
+values include:
+
+@itemize @minus
+@item
+A string whose contents is the text the sub-mode's indentation engine
+should consider to precede the code chunk. The sub-mode's indentation
+engine can add text properties to that string, to be reused in
+repeated calls with the same string, thus using it as a cache. An
+example where this is useful is code chunks that need to be indented
+as function bodies, but lack the function's preamble---the string
+could then include that missing preamble.
+@item
+A function. It is expected to be called with the start position of
+the current chunk, and should return a cons cell
+@w{@code{(@var{prev-start} . @var{prev-end})}} that specifies the
+region of the previous code chunk, or @code{nil} if there is no previous
+chunk. This is useful in literate-programming sources, where code is
+split into chunks, and correct indentation needs to access previous
+chunks.
+@end itemize
+@end table
+@end defvar
+
+The following convenience functions should be used by major mode's
+indentation engine in support of invocations as sub-modes of another
+major mode.
+
+@defun prog-first-column
+Call this function instead of using a literal value (usually, zero) of
+the column number for indenting top-level program constructs. The
+function's value is the column number to use for top-level constructs.
+When no superior mode is in effect, this function returns zero.
+@end defun
+
+@defun prog-widen
+Call this function instead of @code{widen} to remove any restrictions
+imposed by the mode's indentation engine and restore the restrictions
+recorded in @code{prog-indentation-context}. This prevents the
+indentation engine of a sub-mode from inadvertently operating on text
+outside of the chunk it was supposed to indent, and preserves the
+restriction imposed by the superior mode. When no superior mode is in
+effect, this function just calls @code{widen}.
+@end defun
+
@node Region Indent
@subsection Indenting an Entire Region
@@ -4394,6 +4471,20 @@ using the specified or chosen coding system. However, if
coding instead.
@end defun
+@defun buffer-hash &optional buffer-or-name
+Return a hash of @var{buffer-or-name}. If @code{nil}, this defaults
+to the current buffer. As opposed to @code{secure-hash}, this
+function computes the hash based on the internal representation of the
+buffer, disregarding any coding systems. It's therefore only useful
+when comparing two buffers running in the same Emacs, and is not
+guaranteed to return the same hash between different Emacs versions.
+It should be somewhat more efficient on larger buffers than
+@code{secure-hash} is, and should not allocate more memory.
+@c Note that we do not document what hashing function we're using, or
+@c even whether it's a cryptographic hash, since that may change
+@c according to what we find useful.
+@end defun
+
@node Parsing HTML/XML
@section Parsing HTML and XML
@cindex parsing html
@@ -4525,6 +4616,9 @@ to be inserted between the textual elements.
@item dom-parent @var{dom} @var{node}
Return the parent of @var{node} in @var{dom}.
+
+@item dom-remove @var{dom} @var{node}
+Remove @var{node} from @var{dom}.
@end table
The following are functions for altering the @acronym{DOM}.
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index d12de7aee2..a8589df031 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -679,8 +679,7 @@ which quotes symbols with grave accent @t{`} and apostrophe
@t{'}: @t{`like-this'} rather than @t{‘like-this’}. This
older convention was designed for now-obsolete displays in which grave
accent and apostrophe were mirror images.
-
-Documentation using either convention is converted to the user's
+Documentation using this convention is converted to the user's
preferred format when it is copied into a help buffer. @xref{Keys in
Documentation}.
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index a2d64815d9..418a4161a7 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1615,7 +1615,7 @@ any form of file-local variable. For examples of why you might want
to use this, @pxref{Auto Major Mode}.
@end defvar
-@defun hack-local-variables &optional mode-only
+@defun hack-local-variables &optional handle-mode
This function parses, and binds or evaluates as appropriate, any local
variables specified by the contents of the current buffer. The variable
@code{enable-local-variables} has its effect here. However, this
@@ -1632,11 +1632,15 @@ is non-@code{nil}; it always calls the other hook. This
function ignores a @samp{mode} element if it specifies the same major
mode as the buffer already has.
-If the optional argument @var{mode-only} is non-@code{nil}, then all
-this function does is return a symbol specifying the major mode,
-if the @w{@samp{-*-}} line or the local variables list specifies one,
-and @code{nil} otherwise. It does not set the mode nor any other
-file-local variable.
+If the optional argument @var{handle-mode} is @code{t}, then all this
+function does is return a symbol specifying the major mode, if the
+@w{@samp{-*-}} line or the local variables list specifies one, and
+@code{nil} otherwise. It does not set the mode or any other
+file-local variable. If @var{handle-mode} has any value other than
+@code{nil} or @code{t}, any settings of @samp{mode} in the
+@w{@samp{-*-}} line or the local variables list are ignored, and the
+other settings are applied. If @var{handle-mode} is @code{nil}, all
+the file local variables are set.
@end defun
@defvar file-local-variables-alist
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 78094e95f4..36bccdd30a 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -545,6 +545,12 @@ its pixel height is the pixel height of the screen areas spanned by its
children.
@end defun
+@defun window-pixel-height-before-size-change &optional Lisp_Object &optional window
+This function returns the height of window @var{window} in pixels at the
+time @code{window-size-change-functions} was run for the last time on
+@var{window}'s frame (@pxref{Window Hooks}).
+@end defun
+
@cindex window pixel width
@cindex pixel width of a window
@cindex total pixel width of a window
@@ -559,6 +565,12 @@ If @var{window} is an internal window, its pixel width is the width of
the screen areas spanned by its children.
@end defun
+@defun window-pixel-width-before-size-change &optional Lisp_Object &optional window
+This function returns the width of window @var{window} in pixels at the
+time @code{window-size-change-functions} was run for the last time on
+@var{window}'s frame (@pxref{Window Hooks}).
+@end defun
+
@cindex full-width window
@cindex full-height window
The following functions can be used to determine whether a given
@@ -2159,8 +2171,9 @@ This option does not affect non-interactive calls of
@code{switch-to-buffer}.
@end defopt
-By default, @code{switch-to-buffer} shows the buffer at its position of
-@code{point}. This behavior can be tuned using the following option.
+By default, @code{switch-to-buffer} tries to preserve
+@code{window-point}. This behavior can be tuned using the following
+option.
@defopt switch-to-buffer-preserve-window-point
If this variable is @code{nil}, @code{switch-to-buffer} displays the
@@ -2403,6 +2416,23 @@ visible and, unless @var{alist} contains an @code{inhibit-switch-frame}
entry (@pxref{Choosing Window Options}), raises that frame if necessary.
@end defun
+@defun display-buffer-reuse-mode-window buffer alist
+This function tries to display @var{buffer} by finding a window
+that is displaying a buffer in a given mode.
+
+If @var{alist} contains a @code{mode} entry, its value is a major mode
+(a symbol) or a list of major modes. If @var{alist} contains no
+@code{mode} entry, the current major mode of @var{buffer} is used. A
+window is a candidate if it displays a buffer that derives from one of
+the given modes.
+
+The behavior is also controlled by entries for
+@code{inhibit-same-window}, @code{reusable-frames} and
+@code{inhibit-switch-frame} as is done in the function
+@code{display-buffer-reuse-window}.
+
+@end defun
+
@defun display-buffer-pop-up-frame buffer alist
This function creates a new frame, and displays the buffer in that
frame's window. It actually performs the frame creation by calling
@@ -2494,10 +2524,17 @@ parameter; @pxref{Buffer Parameters}).
@defun display-buffer-below-selected buffer alist
This function tries to display @var{buffer} in a window below the
-selected window. This means to either split the selected window or use
-the window below the selected one. If it does create a new window, it
-will also adjust its size provided @var{alist} contains a suitable
+selected window. If there is a window below the selected one and that
+window already displays @var{buffer}, it reuses that window.
+
+If there is no such window, this function tries to create a new window
+by splitting the selected one and display @var{buffer} there. It will
+also adjust that window's size provided @var{alist} contains a suitable
@code{window-height} or @code{window-width} entry, see above.
+
+If splitting the selected window fails and there is a non-dedicated
+window below the selected one showing some other buffer, it uses that
+window for showing @var{buffer}.
@end defun
@defun display-buffer-in-previous-window buffer alist
@@ -4093,11 +4130,11 @@ was created for.
The argument @var{configuration} must be a value that was previously
returned by @code{current-window-configuration}. The configuration is
restored in the frame from which @var{configuration} was made, whether
-that frame is selected or not. This always counts as a window size
-change and triggers execution of the @code{window-size-change-functions}
-(@pxref{Window Hooks}), because @code{set-window-configuration} doesn't
-know how to tell whether the new configuration actually differs from the
-old one.
+that frame is selected or not. In some rare cases this may trigger
+execution of the @code{window-size-change-functions} (@pxref{Window
+Hooks}) even if the size of windows did not change at all. The
+@code{window-configuration-change-hook} functions will be called if and
+only if at least one window was added to or deleted from the frame.
If the frame from which @var{configuration} was saved is dead, all this
function does is restore the three variables @code{window-min-height},
@@ -4405,33 +4442,38 @@ work.
@end defvar
@defvar window-size-change-functions
-This variable holds a list of functions to be called if the size of
-any window changes for any reason. The functions are called at the
-beginning of a redisplay cycle, and just once for each frame on which
-size changes have occurred.
-
-Each function receives the frame as its sole argument. There is no
-direct way to find out which windows on that frame have changed size, or
-precisely how. However, if a size-change function records, at each
-call, the existing windows and their sizes, it can also compare the
-present sizes and the previous sizes.
-
-Creating or deleting windows counts as a size change, and therefore
-causes these functions to be called. Changing the frame size also
-counts, because it changes the sizes of the existing windows.
+This variable holds a list of functions to be called if the size of any
+window changes for any reason. The functions are called once per
+redisplay, and once for each frame on which size changes have occurred.
+
+Each function receives the frame as its sole argument. To find out
+whether a specific window has changed size, compare the return values of
+@code{window-pixel-width-before-size-change} and
+@code{window-pixel-width} respectively
+@code{window-pixel-height-before-size-change} and
+@code{window-pixel-height} for that window (@pxref{Window Sizes}).
+
+These function are usually only called when at least one window was
+added or has changed size since the last time this hook was run for the
+associated frame. In some rare cases this hook also runs when a window
+that was added intermittently has been deleted afterwards. In these
+cases none of the windows on the frame will appear to have changed its
+size.
You may use @code{save-selected-window} in these functions
(@pxref{Selecting Windows}). However, do not use
@code{save-window-excursion} (@pxref{Window Configurations}); exiting
-that macro counts as a size change, which would cause these functions
-to be called over and over.
+that macro counts as a size change, which would cause these functions to
+be called again.
@end defvar
@defvar window-configuration-change-hook
-A normal hook that is run every time you change the window configuration
-of an existing frame. This includes splitting or deleting windows,
-changing the sizes of windows, or displaying a different buffer in a
-window.
+A normal hook that is run every time the window configuration of a frame
+changes. Window configuration changes include splitting and deleting
+windows and the display of a different buffer in a window. Resizing the
+frame or individual windows do not count as configuration changes. Use
+@code{window-size-change-functions}, see above, when you want to track
+size changes that are not caused by the deletion or creation of windows.
The buffer-local part of this hook is run once for each window on the
affected frame, with the relevant window selected and its buffer
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
index 4dffeafb1d..eca74a0c64 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -218,7 +218,6 @@ gnus.pdf: $(gnus_deps)
cp gnustmppdf.pdf $@
rm gnustmppdf.*
-${buildinfodir}/tramp.info tramp.html: EXTRA_OPTS = -D emacs
${buildinfodir}/tramp.info tramp.html: ${srcdir}/trampver.texi
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 459369ed9c..f311ec8a3a 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -338,14 +338,15 @@ Line-Up Functions
* Comment Line-Up::
* Misc Line-Up::
+
Customizing Macros
* Macro Backslashes::
* Macros with ;::
+* Noise Macros::
@end detailmenu
@end menu
-
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@node Introduction, Overview, Top, Top
@comment node-name, next, previous, up
@@ -6654,15 +6655,18 @@ Because a macro can expand into anything at all, near where one is
invoked @ccmode{} can only indent and fontify code heuristically.
Sometimes it gets it wrong. Usually you should try to design your
macros so that they ''look like ordinary code'' when you invoke them.
-However, one situation is so common that @ccmode{} handles it
+However, two situations are so common that @ccmode{} handles them
specially: that is when certain macros needn't (or mustn't) be
-followed by a @samp{;}. You need to configure @ccmode{} to handle
-these macros properly, see @ref{Macros with ;}.
+followed by a @samp{;}, and when certain macros (or compiler
+directives) expand to nothing. You need to configure @ccmode{} to
+handle these macros properly, see @ref{Macros with ;} and @ref{Noise
+Macros}.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@menu
* Macro Backslashes::
* Macros with ;::
+* Noise Macros::
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6714,7 +6718,7 @@ get aligned only when you explicitly invoke the command
@end defopt
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Macros with ;, , Macro Backslashes, Custom Macros
+@node Macros with ;, Noise Macros, Macro Backslashes, Custom Macros
@comment node-name, next, previous, up
@section Macros with semicolons
@cindex macros with semicolons
@@ -6723,9 +6727,11 @@ Macros which needn't (or mustn't) be followed by a semicolon when you
invoke them, @dfn{macros with semicolons}, are very common. These can
cause @ccmode{} to parse the next line wrongly as a
@code{statement-cont} (@pxref{Function Symbols}) and thus mis-indent
-it.
+it. At the top level, a macro invocation before a defun start can
+cause, for example, @code{c-beginning-of-defun} (@kbd{C-M-a}) not to
+find the correct start of the current function.
-You can prevent this by specifying which macros have semicolons. It
+You can prevent these by specifying which macros have semicolons. It
doesn't matter whether or not such a macro has a parameter list:
@defopt c-macro-names-with-semicolon
@@ -6763,10 +6769,65 @@ example:
@defun c-make-macro-with-semi-re
@findex make-macro-with-semi-re (c-)
Call this (non-interactive) function, which sets internal variables,
-each time you change the value of
-@code{c-macro-names-with-semicolon}. It takes no arguments, and its
+each time you change the value of @code{c-macro-names-with-semicolon}
+after the major mode function has run. It takes no arguments, and its
return value has no meaning. This function is called by @ccmode{}'s
-initialization code.
+initialization code, after the mode hooks have run.
+@end defun
+
+@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+@node Noise Macros, , Macros with ;, Custom Macros
+@comment node-name, next, previous, up
+@section Noise Macros
+@cindex noise macros
+@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+In @ccmode{}, @dfn{noise macros} are macros which expand to nothing,
+or compiler directives (such as GCC's @code{__attribute__}) which play
+no part in the syntax of the C (etc.) language. Some noise macros are
+followed by arguments in parentheses (possibly optionally), others
+are not.
+
+Noise macros can easily confuse @ccmode{}'s analysis of function
+headers, causing them to be mis-fontified, or even mis-indented. You
+can prevent this confusion by specifying the identifiers which
+constitute noise macros.
+
+@defopt c-noise-macro-names
+@vindex noise-macro-names (c-)
+This variable is a list of names of noise macros which never have
+parenthesized arguments. Each element is a string, and must be a
+valid identifier. An element in @code{c-noise-macro-names} must not
+also be in @code{c-noise-macro-with-parens-names}. Such an element is
+treated as whitespace by @ccmode{}.
+@end defopt
+
+@defopt c-noise-macro-with-parens-names
+@vindex noise-macro-with-parens-names (c-)
+This variable is a list of names of noise macros which optionally have
+arguments in parentheses. Each element of the list is a string, and
+must be a valid identifier. An element in
+@code{c-noise-macro-with-parens-names} must not also be in
+@code{c-noise-macro-names}. For performance reasons, such an element,
+together with the optional parenthesized arguments, is specially
+handled, but it is only handled when used in declaration
+contexts@footnote{If this restriction causes your project
+difficulties, please get in touch with @email{bug-cc-mode@@gnu.org}.}.
+
+The two compiler directives @code{__attribute__} and @code{__declspec}
+have traditionally been handled specially in @ccmode{}; for example
+they are fontified with font-lock-keyword-face. You don't need to
+include these directives in @code{c-noise-macro-with-parens-names},
+but doing so is OK.
+@end defopt
+
+@defun c-make-noise-macro-regexps
+@findex make-noise-macro-regexps (c-)
+Call this (non-interactive) function, which sets internal variables,
+on changing the value of @code{c-noise-macro-names} or
+@code{c-noise-macro-with-parens-names} after the major mode's function
+has run. This function is called by @ccmode{}'s initialization code,
+after the mode hooks have run.
@end defun
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/doc/misc/emacs-gnutls.texi b/doc/misc/emacs-gnutls.texi
index 1a850c6823..9d52508b64 100644
--- a/doc/misc/emacs-gnutls.texi
+++ b/doc/misc/emacs-gnutls.texi
@@ -173,7 +173,7 @@ Just use @code{open-protocol-stream} or @code{open-network-stream}
You should not have to use the @file{gnutls.el} functions directly.
But you can test them with @code{open-gnutls-stream}.
-@defun open-gnutls-stream name buffer host service
+@defun open-gnutls-stream name buffer host service &optional nowait
This function creates a buffer connected to a specific @var{host} and
@var{service} (port number or service name). The parameters and their
syntax are the same as those given to @code{open-network-stream}
@@ -181,6 +181,10 @@ syntax are the same as those given to @code{open-network-stream}
Manual}). The connection process is called @var{name} (made unique if
necessary). This function returns the connection process.
+The @var{nowait} parameter means that the socket should be
+asynchronous, and the connection process will be returned to the
+caller before TLS negotiation has happened.
+
@lisp
;; open a HTTPS connection
(open-gnutls-stream "tls" "tls-buffer" "yourserver.com" "https")
@@ -191,6 +195,12 @@ necessary). This function returns the connection process.
@end defun
+@findex gnutls-asynchronous-parameters
+If called with @var{nowait}, the process is returned immediately
+(before connecting to the server). In that case, the process object
+is told what parameters to use when negotiating the connection
+by using the @code{gnutls-asynchronous-parameters} function.
+
The function @code{gnutls-negotiate} is not generally useful and it
may change as needed, so please see @file{gnutls.el} for the details.
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 4d68246bba..2b935870da 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -1826,6 +1826,11 @@ matching types.
@vindex mailcap-mime-data
This variable is an alist of alists containing backup viewing rules.
+@item mailcap-user-mime-data
+@vindex mailcap-user-mime-data
+A customizable list of viewers that take preference over
+@code{mailcap-mime-data}.
+
@end table
Interface functions:
diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi
index 7726a8d3dc..81f97a9db8 100644
--- a/doc/misc/eww.texi
+++ b/doc/misc/eww.texi
@@ -109,6 +109,12 @@ only display this part. This usually gets rid of menus and the like.
The @kbd{F} command (@code{eww-toggle-fonts}) toggles whether to use
variable-pitch fonts or not. This sets the @code{shr-use-fonts} variable.
+@findex eww-toggle-colors
+@findex shr-use-colors
+@kindex F
+ The @kbd{C} command (@code{eww-toggle-colors}) toggles whether to use
+HTML-specified colors or not. This sets the @code{shr-use-colors} variable.
+
@findex eww-download
@vindex eww-download-directory
@kindex d
@@ -158,12 +164,16 @@ You can view stored bookmarks with @kbd{B}
(@code{eww-list-bookmarks}). This will open the bookmark buffer
@file{*eww bookmarks*}.
+@findex eww-switch-to-buffer
@findex eww-list-buffers
+@kindex s
@kindex S
@cindex Multiple Buffers
To get summary of currently opened EWW buffers, press @kbd{S}
(@code{eww-list-buffers}). The @file{*eww buffers*} buffer allows you
-to quickly kill, flip through and switch to specific EWW buffer.
+to quickly kill, flip through and switch to specific EWW buffer. To
+switch EWW buffers through a minibuffer prompt, press @kbd{s}
+(@code{eww-switch-to-buffer}).
@findex eww-browse-with-external-browser
@vindex shr-external-browser
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 08067b0c73..2473d26cc1 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -828,6 +828,7 @@ Various
* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
* Spam Package:: A package for filtering and processing spam.
* The Gnus Registry:: A package for tracking messages by Message-ID.
+* The Gnus Cloud:: A package for synchronizing Gnus marks.
* Other modes:: Interaction with other modes.
* Various Various:: Things that are really various.
@@ -5042,11 +5043,12 @@ access the @code{X-Newsreader} header:
@item
@vindex gnus-ignored-from-addresses
-The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
-summary line spec returns the @code{To}, @code{Newsreader} or
-@code{From} header. If this regexp matches the contents of the
-@code{From} header, the value of the @code{To} or @code{Newsreader}
-headers are used instead.
+The @code{gnus-ignored-from-addresses} variable says when the
+@samp{%f} summary line spec returns the @code{To}, @code{Newsreader}
+or @code{From} header. The variable may be a regexp or a predicate
+function. If this matches the contents of the @code{From}
+header, the value of the @code{To} or @code{Newsreader} headers are
+used instead.
To distinguish regular articles from those where the @code{From} field
has been swapped, a string is prefixed to the @code{To} or
@@ -22207,6 +22209,7 @@ to you, using @kbd{G b u} and updating the group will usually fix this.
* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
* Spam Package:: A package for filtering and processing spam.
* The Gnus Registry:: A package for tracking messages by Message-ID.
+* The Gnus Cloud:: A package for synchronizing Gnus marks.
* Other modes:: Interaction with other modes.
* Various Various:: Things that are really various.
@end menu
@@ -26165,6 +26168,100 @@ default this is just @code{(marks)} so the custom registry marks are
precious.
@end defvar
+@node The Gnus Cloud
+@section The Gnus Cloud
+@cindex cloud
+@cindex gnus-cloud
+@cindex synchronization
+@cindex sync
+@cindex synch
+
+The Gnus Cloud is a way to synchronize marks and general files and
+data across multiple machines.
+
+Very often, you want all your marks (what articles you've read, which
+ones were important, and so on) to be synchronized between several
+machines. With IMAP, that's built into the protocol, so you can read
+nnimap groups from many machines and they are automatically
+synchronized. But NNTP, nnrss, and many other backends do not store
+marks, so you have to do it locally.
+
+The Gnus Cloud package stores the marks, plus any files you choose, on
+an IMAP server in a special folder. It's like a
+DropTorrentSyncBoxOakTree(TM).
+
+@menu
+* Gnus Cloud Setup::
+* Gnus Cloud Usage::
+@end menu
+
+@node Gnus Cloud Setup
+@subsection Gnus Cloud Setup
+
+Setting up the Gnus Cloud takes less than a minute. From the Group
+buffer:
+
+Press @kbd{^} to go to the Server buffer. Here you'll see all the
+servers that Gnus knows. @xref{Server Buffer}.
+
+Then press @kbd{i} to mark any servers as cloud-synchronized (their marks are synchronized).
+
+Then press @kbd{I} to mark a single server as the cloud host (it must
+be an IMAP server, and will host a special IMAP folder with all the
+synchronization data). This will set the variable
+@code{gnus-cloud-method} (using the Customize facilities), then ask
+you to optionally upload your first CloudSynchronizationDataPack(TM).
+
+@node Gnus Cloud Usage
+@subsection Gnus Cloud Usage
+
+After setting up, you can use these shortcuts from the Group buffer:
+
+@table @kbd
+@item ~ RET
+@item ~ d
+@findex gnus-cloud-download-all-data
+@cindex cloud, download
+Download the latest Gnus Cloud data.
+
+@item ~ u
+@item ~ ~
+@findex gnus-cloud-upload-all-data
+@cindex cloud, download
+Upload the local Gnus Cloud data. Creates a new
+CloudSynchronizationDataPack(TM).
+
+@end table
+
+But wait, there's more. Of course there's more. So much more. You can
+customize all of the following.
+
+@defvar gnus-cloud-synced-files
+These are the files that will be part of every
+CloudSynchronizationDataPack(TM). They are included in every upload,
+so don't synchronize a lot of large files. Files under 100Kb are best.
+@end defvar
+
+@defvar gnus-cloud-storage-method
+This is a choice from several storage methods. It's highly recommended
+to use the EPG facilities. It will be automatic if have GnuPG
+installed and EPG loaded. Otherwise, you could use Base64+gzip,
+Base64, or no encoding.
+@end defvar
+
+@defvar gnus-cloud-interactive
+When this is set, and by default it is, the Gnus Cloud package will
+ask you for confirmation here and there. Leave it on until you're
+comfortable with the package.
+@end defvar
+
+
+@defvar gnus-cloud-method
+The name of the IMAP server to store the
+CloudSynchronizationDataPack(TM)s. It's easiest to set this from the
+Server buffer (@pxref{Gnus Cloud Setup}).
+@end defvar
+
@node Other modes
@section Interaction with other modes
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 761fb772f4..048990d53a 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -67,7 +67,6 @@ Message mode buffers.
* Interface:: Setting up message buffers.
* Commands:: Commands you can execute in message mode buffers.
* Variables:: Customizing the message buffers.
-* Compatibility:: Making Message backwards compatible.
* Appendices:: More technical things.
* GNU Free Documentation License:: The license for this documentation.
* Index:: Variable, function and concept index.
@@ -185,8 +184,9 @@ but you can change the behavior to suit your needs by fiddling with the
@vindex message-dont-reply-to-names
Addresses that match the @code{message-dont-reply-to-names} regular
-expression (or list of regular expressions) will be removed from the
-@code{Cc} header. A value of @code{nil} means exclude your name only.
+expression (or list of regular expressions or a predicate function)
+will be removed from the @code{Cc} header. A value of @code{nil} means
+exclude your name only.
@vindex message-prune-recipient-rules
@code{message-prune-recipient-rules} is used to prune the addresses
@@ -1672,10 +1672,10 @@ trailing old subject. In this case,
@item message-alternative-emails
@vindex message-alternative-emails
-Regexp matching alternative email addresses. The first address in the
-To, Cc or From headers of the original article matching this variable is
-used as the From field of outgoing messages, replacing the default From
-value.
+Regexp or predicate function matching alternative email addresses.
+The first address in the To, Cc or From headers of the original
+article matching this variable is used as the From field of outgoing
+messages, replacing the default From value.
For example, if you have two secondary email addresses john@@home.net
and john.doe@@work.com and want to use them in the From field when
@@ -2586,22 +2586,6 @@ An @dfn{action} can be either: a normal function, or a list where the
a form to be @code{eval}ed.
-@node Compatibility
-@chapter Compatibility
-@cindex compatibility
-
-Message uses virtually only its own variables---older @code{mail-}
-variables aren't consulted. To force Message to take those variables
-into account, you can put the following in your @file{.emacs} file:
-
-@lisp
-(require 'messcompat)
-@end lisp
-
-This will initialize many Message variables from the values in the
-corresponding mail variables.
-
-
@node Appendices
@chapter Appendices
diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi
index 58f9ba8ccf..ba10be9bfa 100644
--- a/doc/misc/ses.texi
+++ b/doc/misc/ses.texi
@@ -187,6 +187,14 @@ the end-points, e.g.:
(The @code{apply} is necessary because @code{ses-range} produces a
@emph{list} of values. This allows for more complex possibilities.)
+Alternatively you can use the @code{!} modifier of @code{ses-range} to
+remove blank cells from the returned list, which allows to use
+@code{+} instead of @code{ses+}:
+
+@lisp
+(apply '+ (ses-range A2 A5 !))
+@end lisp
+
@c ===================================================================
@node The Basics
@@ -374,26 +382,62 @@ Undo previous action (@code{(undo)}).
@cindex printer functions
@cindex cell formatting
@cindex formatting cells
-@findex ses-read-cell-printer
-@findex ses-read-column-printer
-@findex ses-read-default-printer
-@findex ses-define-local-printer
-@findex ses-center
-@findex ses-center-span
-@findex ses-dashfill
-@findex ses-dashfill-span
-@findex ses-tildefill-span
-
Printer functions convert binary cell values into the print forms that
Emacs will display on the screen.
-A printer can be a format string, like @samp{"$%.2f"}. The result
+@menu
+* Various kinds of printer functions::
+* Configuring what printer function applies::
+* Standard printer functions::
+* Local printer functions::
+* Writing a lambda printer function::
+@end menu
+
+@node Various kinds of printer functions
+@subsection Various kinds of printer functions
+
+When configuring what printer function applies (@pxref{Configuring
+what printer function applies}), you can enter a printer function as
+one of the following:
+
+@itemize
+@item
+A format string, like @samp{"$%.2f"}. The result
string is right-aligned within the print cell. To get left-alignment,
-use parentheses: @samp{("$%.2f")}. A printer can also be a
-one-argument function (a symbol or a lambda), whose result is a string
-(right-aligned) or list of one string (left-aligned). While typing in
-a lambda, you can use @kbd{M-@key{TAB}} to complete the names of symbols.
+use parentheses: @samp{("$%.2f")}.
+@item
+A printer can also be a one-argument function, the result of which is
+a string (right-aligned) or list of one string (left-aligned). Such a
+function can be in turn configured as:
+@itemize
+@item
+A lambda expression, for instance:
+
+@lisp
+(lambda (x)
+ (cond
+ ((null x) "")
+ ((numberp x) (format "%.2f" x))
+ (t (ses-center-span x ?# 'ses-prin1))))
+@end lisp
+
+While typing in a lambda, you can use @kbd{M-@key{TAB}} to complete
+the names of symbols.
+@item
+A symbol referring to a standard printer function (@pxref{Standard
+printer functions}).
+@item
+A symbol referring to a local printer function (@pxref{Local printer
+functions}).
+@end itemize
+
+
+@end itemize
+
+
+@node Configuring what printer function applies
+@subsection Configuring what printer function applies
Each cell has a printer. If @code{nil}, the column-printer for the cell's
column is used. If that is also @code{nil}, the default-printer for the
@@ -401,25 +445,35 @@ spreadsheet is used.
@table @kbd
@item p
+@findex ses-read-cell-printer
Enter a printer for current cell or range (@code{ses-read-cell-printer}).
@item M-p
+@findex ses-read-column-printer
Enter a printer for the current column (@code{ses-read-column-printer}).
@item C-c C-p
+@findex ses-read-default-printer
Enter the default printer for the spreadsheet
(@code{ses-read-default-printer}).
@end table
-The @code{ses-read-@r{XXX}-printer} commands have their own minibuffer
-history, which is preloaded with the set of all printers used in this
-spreadsheet, plus the standard printers.
+The @code{ses-read-@var{xxx}-printer} commands have their own
+minibuffer history, which is preloaded with the set of all printers
+used in this spreadsheet, plus the standard printers (@pxref{Standard
+printer functions}) and the local printers (@pxref{Local printer
+functions}).
-The standard printers are suitable only for cells, not columns or
-default, because they format the value using the column-printer (or
-default-printer if @code{nil}) and then center the result:
+@node Standard printer functions
+@subsection Standard printer functions
-@table @code
+
+Except for @code{ses-prin1}, the other standard printers are suitable
+only for cells, not columns or default, because they format the value
+using the column-printer (or default-printer if @code{nil}) and then
+center the result:
+
+@ftable @code
@item ses-center
Just centering.
@@ -434,8 +488,16 @@ Centering with dashes and spill-over.
@item ses-tildefill-span
Centering with tildes (~) and spill-over.
-@end table
+@item ses-prin1
+This is the fallback printer, used when calling the configured printer
+throws some error.
+@end ftable
+
+@node Local printer functions
+@subsection Local printer functions
+
+@findex ses-define-local-printer
You can define printer function local to a sheet with the command
@code{ses-define-local-printer}. For instance, define a printer
@samp{foo} to @code{"%.2f"}, and then use symbol @samp{foo} as a
@@ -444,6 +506,113 @@ printer function. Then, if you call again
@code{"%.3f"}, all the cells using printer @samp{foo} will be
reprinted accordingly.
+Sometimes there are local printers that you want to define or
+re-define automatically every time you open a sheet. For instance
+imagine that you want to define/re-define automatically a local
+printer @code{euro} to display a number like an amount of euros, that
+is to say number @code{3.1} would be displayed as
+@code{3.10@dmn{}@euro{}}. To do so in any non read-only SES buffer,
+you can add some code like this to your @file{.emacs} init file:
+
+@lisp
+(defun my-ses-mode-hook ()
+ (unless buffer-read-only
+ (ses-define-local-printer
+ 'euro
+ (lambda (x)
+ (cond
+ ((null x) "")
+ ((numberp x) (format "%.2f€" x))
+ (t (ses-center-span x ?# 'ses-prin1)))))))
+(add-hook 'ses-mode-hook 'my-ses-mode-hook)
+@end lisp
+
+If you replace command @code{ses-define-local-printer} by function
+@code{ses-define-if-new-local-printer}
+@findex ses-define-if-new-local-printer
+the definition will occur only if a local printer with the same name
+in not already defined.
+
+
+@node Writing a lambda printer function
+@subsection Writing a lambda printer function
+
+You can write a printer function with a lambda expression taking one
+argument in two cases:
+
+@itemize
+@item
+when you configure the printer function applying to a cell or column, or
+@item
+when you define a local printer function with command
+@code{ses-define-local-printer}.
+@end itemize
+
+When doing so, please take care that the returned value is a string,
+or a list containing a string, even when the input argument has an
+unexpected value. Here is an example:
+
+@example
+(lambda (val)
+ (cond
+ ((null val) "")
+ ((and (numberp val) (>= val 0)) (format "%.1f" val))
+ (t (ses-center-span val ?# 'ses-prin1))))
+@end example
+
+This example will:
+
+@itemize
+@item
+When the cell is empty (ie.@: when @code{val} is @code{nil}), print an
+empty string @code{""}
+@item
+When the cell value is a non negative number, format the the value in
+fixed-point notation with one decimal after point
+@item
+Otherwise, handle the value as erroneous by printing it as an
+s-expression (using @code{ses-prin1}), centered and surrounded by
+@code{#} filling.
+@end itemize
+
+Another precaution to take is to avoid stack overflow due to a
+printer function calling itself indefinitely. This mistake can
+happen when you use a local printer as a column printer,
+and this local printer implicitly calls the current column printer, so it
+will call itself recursively. Imagine for instance that you want to
+create some local printer @code{=fill} that would center the content
+of a cell and surround it by equal signs @code{=}, and you do it this
+way:
+
+@lisp
+(lambda (x)
+ (cond
+ ((null x) "")
+ (t (ses-center x 0 ?=))))
+@end lisp
+
+Because @code{=fill} uses the standard printer @code{ses-center} without
+explicitly passing any printer to it, @code{ses-center} will call the
+current column printer if any, or the spreadsheet default printer
+otherwise. So using @code{=fill} as a column printer will result in a
+stack overflow in this column. SES does not check for that;
+you just have to be careful. For instance, re-write @code{=fill} like
+this:
+
+@lisp
+(lambda (x)
+ (cond
+ ((null x) "")
+ ((stringp x) (ses-center x 0 ?= " %s "))
+ (t (ses-center-span x ?# 'ses-prin1))))
+@end lisp
+
+The code above applies the @code{=} filling only to strings; it also
+surrounds the string by one space on each side before filling with
+@code{=} signs. So the string @samp{Foo} will be displayed like @samp{@w{===
+Foo ===}} in an 11 character wide column. Anything other than an empty cell
+or a non-string is displayed as an error by using @code{#} filling.
+
@node Clearing cells
@section Clearing cells
@cindex clearing commands
@@ -595,8 +764,8 @@ Pops up a menu to set the current row as the header, or revert to
column letters.
@item M-x ses-rename-cell
@findex ses-rename-cell
-Rename a cell from a standard A1-like name to any
-string.
+Rename a cell from a standard A1-like name to any string that can be a
+valid local variable name (See also @ref{Nonrelocatable references}).
@item M-x ses-repair-cell-reference-all
@findex ses-repair-cell-reference-all
When you interrupt a cell formula update by clicking @kbd{C-g}, then
@@ -791,8 +960,17 @@ are some useful functions to call from your formulas:
@table @code
@item (ses-delete-blanks &rest @var{args})
-Returns a list from which all blank cells (value is either @code{nil} or
-'*skip*) have been deleted.
+Returns a list from which all blank cells (value is either @code{nil}
+or '*skip*) have been deleted. Order of args is reverted. Please note
+that @code{ses-range} has a @code{!} modifier that allows to remove
+blanks, so it is possible to write:
+@lisp
+(ses-range A1 A5 !)
+@end lisp
+instead of
+@lisp
+(apply 'ses-delete-blanks (ses-range A1 A5 <))
+@end lisp
@item (ses+ &rest @var{args})
Sum of non-blank arguments.
@@ -842,9 +1020,10 @@ this to undo the effect of @kbd{t}.
@end table
When a printer function signals an error, the fallback printer
-@samp{"%s"} is substituted. This is useful when your column printer
+@findex ses-prin1
+@code{ses-prin1} is substituted. This is useful when your column printer
is numeric-only and you use a string as a cell value. Note that the
-standard default printer is ``%.7g'' which is numeric-only, so cells
+standard default printer is @samp{"%.7g"} which is numeric-only, so cells
that are empty of contain strings will use the fallback printer.
@kbd{c} on such cells will display ``Format specifier doesn't match
argument type''.
@@ -986,7 +1165,18 @@ can type ahead without worrying about the glitch.
@kbd{C-u C-y} relocates none of the cell-references. What about mixed
cases?
-You can use
+The best way is to rename cells that you do not want to be relocatable
+by using @code{ses-rename-cell}.
+@findex ses-rename-cell
+Cells that do not have an A1-like name style are not relocated on
+yank. Using this method, the concerned cells won't be relocated
+whatever formula they appear in. Please note however that when a
+formula contains some range @code{(ses-range @var{cell1} @var{cell2})}
+then in the yanked formula each range bound @var{cell1} and
+@var{cell2} are relocated, or not, independently, depending on whether
+they are A1-like or renamed.
+
+An alternative method is to use
@lisp
(symbol-value 'B3)
@end lisp
@@ -994,7 +1184,8 @@ to make an @dfn{absolute reference}. The formula relocator skips over
quoted things, so this will not be relocated when pasted or when
rows/columns are inserted/deleted. However, B3 will not be recorded
as a dependency of this cell, so this cell will not be updated
-automatically when B3 is changed.
+automatically when B3 is changed, this is why using
+@code{ses-rename-cell} is most of the time preferable.
The variables @code{row} and @code{col} are dynamically bound while a
cell formula is being evaluated. You can use
@@ -1011,12 +1202,13 @@ kind of dependency is also not recorded.
@findex ses-reconstruct-all
Begins with an 014 character, followed by sets of cell-definition
-macros for each row, followed by column-widths, column-printers,
+macros for each row, followed by the set of local printer
+definitions, followed by column-widths, column-printers,
default-printer, and header-row. Then there's the global parameters
-(file-format ID, numrows, numcols) and the local variables (specifying
-@acronym{SES} mode for the buffer, etc.).
+(file-format ID, row count, column count, local printer count) and the
+local variables (specifying @acronym{SES} mode for the buffer, etc.).
-When a @acronym{SES} file is loaded, first the numrows and numcols values are
+When a @acronym{SES} file is loaded, first the global parameters are
loaded, then the entire data area is @code{eval}ed, and finally the local
variables are processed.
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 37e2de896e..5e260ed8f9 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2016-04-14.07}
+\def\texinfoversion{2016-08-16.20}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -67,6 +67,10 @@
\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
+% LaTeX's \typeout. This ensures that the messages it is used for
+% are identical in format to the corresponding ones from latex/pdflatex.
+\def\typeout{\immediate\write17}%
+
\chardef\other=12
% We never want plain's \outer definition of \+ in Texinfo.
@@ -1104,9 +1108,14 @@ where each line of input produces a line of output.}
% For LuaTeX
%
+\newif\iftxiuseunicodedestname
+\txiuseunicodedestnamefalse % For pdfTeX etc.
+
\ifx\luatexversion\thisisundefined
\else
- % Escape PDF strings UTF-8 to UTF-16
+ % Use Unicode destination names
+ \txiuseunicodedestnametrue
+ % Escape PDF strings with converting UTF-16 from UTF-8
\begingroup
\catcode`\%=12
\directlua{
@@ -1134,7 +1143,24 @@ where each line of input produces a line of output.}
end
}
\endgroup
- \def\pdfescapestring#1{\directlua{UTF16oct('\luaescapestring{#1}')}}
+ \def\pdfescapestrutfsixteen#1{\directlua{UTF16oct('\luaescapestring{#1}')}}
+ % Escape PDF strings without converting
+ \begingroup
+ \directlua{
+ function PDFescstr(str)
+ for c in string.bytes(str) do
+ if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then
+ tex.sprint(
+ string.format(string.char(0x5c) .. string.char(0x25) .. '03o',
+ c))
+ else
+ tex.sprint(string.char(c))
+ end
+ end
+ end
+ }
+ \endgroup
+ \def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}}
\ifnum\luatexversion>84
% For LuaTeX >= 0.85
\def\pdfdest{\pdfextension dest}
@@ -1188,12 +1214,21 @@ where each line of input produces a line of output.}
\ifx\pdfescapestring\thisisundefined
% No primitive available; should we give a warning or log?
% Many times it won't matter.
+ \xdef#1{#1}%
\else
% The expandable \pdfescapestring primitive escapes parentheses,
% backslashes, and other special chars.
\xdef#1{\pdfescapestring{#1}}%
\fi
}
+\def\txiescapepdfutfsixteen#1{%
+ \ifx\pdfescapestrutfsixteen\thisisundefined
+ % No UTF-16 converting macro available.
+ \txiescapepdf{#1}%
+ \else
+ \xdef#1{\pdfescapestrutfsixteen{#1}}%
+ \fi
+}
\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
with PDF output, and none of those formats could be found. (.eps cannot
@@ -1303,17 +1338,77 @@ output) for that.)}
\pdfrefximage \pdflastximage
\fi}
%
- \def\pdfmkdest#1{{%
+ \def\setpdfdestname#1{{%
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
\indexnofonts
- \turnoffactive
\makevalueexpandable
+ \turnoffactive
+ \iftxiuseunicodedestname
+ \ifx \declaredencoding \latone
+ % Pass through Latin-1 characters.
+ % LuaTeX with byte wise I/O converts Latin-1 characters to Unicode.
+ \else
+ \ifx \declaredencoding \utfeight
+ % Pass through Unicode characters.
+ \else
+ % Use ASCII approximations in destination names.
+ \passthroughcharsfalse
+ \fi
+ \fi
+ \else
+ % Use ASCII approximations in destination names.
+ \passthroughcharsfalse
+ \fi
\def\pdfdestname{#1}%
\txiescapepdf\pdfdestname
- \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
%
+ \def\setpdfoutlinetext#1{{%
+ \indexnofonts
+ \makevalueexpandable
+ \turnoffactive
+ \ifx \declaredencoding \latone
+ % The PDF format can use an extended form of Latin-1 in bookmark
+ % strings. See Appendix D of the PDF Reference, Sixth Edition, for
+ % the "PDFDocEncoding".
+ \passthroughcharstrue
+ % Pass through Latin-1 characters.
+ % LuaTeX: Convert to Unicode
+ % pdfTeX: Use Latin-1 as PDFDocEncoding
+ \def\pdfoutlinetext{#1}%
+ \else
+ \ifx \declaredencoding \utfeight
+ \ifx\luatexversion\thisisundefined
+ % For pdfTeX with UTF-8.
+ % TODO: the PDF format can use UTF-16 in bookmark strings,
+ % but the code for this isn't done yet.
+ % Use ASCII approximations.
+ \passthroughcharsfalse
+ \def\pdfoutlinetext{#1}%
+ \else
+ % For LuaTeX with UTF-8.
+ % Pass through Unicode characters for title texts.
+ \passthroughcharstrue
+ \def\pdfoutlinetext{#1}%
+ \fi
+ \else
+ % For non-Latin-1 or non-UTF-8 encodings.
+ % Use ASCII approximations.
+ \passthroughcharsfalse
+ \def\pdfoutlinetext{#1}%
+ \fi
+ \fi
+ % LuaTeX: Convert to UTF-16
+ % pdfTeX: Use Latin-1 as PDFDocEncoding
+ \txiescapepdfutfsixteen\pdfoutlinetext
+ }}
+ %
+ \def\pdfmkdest#1{%
+ \setpdfdestname{#1}%
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }
+ %
% used to mark target names; must be expandable.
\def\pdfmkpgn#1{#1}
%
@@ -1341,23 +1436,13 @@ output) for that.)}
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
% seem worth the trouble, since most documents are normally structured.
- {
- \ifx\luatexversion\thisisundefined \else
- \turnoffactive % LuaTeX can use Unicode strings for PDF
- \fi
- \edef\pdfoutlinedest{#3}%
- \ifx\pdfoutlinedest\empty
- \def\pdfoutlinedest{#4}%
- \else
- \txiescapepdf\pdfoutlinedest
- \fi
- %
- % Also escape PDF chars in the display string.
- \edef\pdfoutlinetext{#1}%
- \txiescapepdf\pdfoutlinetext
- %
- \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
- }
+ \setpdfoutlinetext{#1}
+ \setpdfdestname{#3}
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{#4}%
+ \fi
+ %
+ \pdfoutline goto name{\pdfmkpgn{\pdfdestname}}#2{\pdfoutlinetext}%
}
%
\def\pdfmakeoutlines{%
@@ -1515,72 +1600,132 @@ output) for that.)}
%
% For XeTeX
%
-\newif\iftxiuseunicodedestname
\ifx\XeTeXrevision\thisisundefined
\else
%
% XeTeX version check
%
- \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99995}>-1
- % XeTeX 0.99995+ contains xdvipdfmx 20160307+.
- % It can handle Unicode destination name for PDF.
+ \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1
+ % TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307.
+ % It can use the `dvipdfmx:config' special (from TeX Live SVN r40941).
+ % For avoiding PDF destination name replacement, we use this special
+ % instead of xdvipdfmx's command line option `-C 0x0010'.
+ \special{dvipdfmx:config C 0x0010}
+ % XeTeX 0.99995+ comes with xdvipdfmx 20160307+.
+ % It can handle Unicode destination names for PDF.
\txiuseunicodedestnametrue
\else
- % XeTeX < 0.99995 can not handle Unicode destination name for PDF
- % because xdvipdfmx 20150315 has UTF-16 convert issue.
- % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
+ % XeTeX < 0.99996 (TeX Live < 2016) cannot use the
+ % `dvipdfmx:config' special.
+ % So for avoiding PDF destination name replacement,
+ % xdvipdfmx's command line option `-C 0x0010' is necessary.
+ %
+ % XeTeX < 0.99995 can not handle Unicode destination names for PDF
+ % because xdvipdfmx 20150315 has a UTF-16 conversion issue.
+ % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
\txiuseunicodedestnamefalse
\fi
%
+ % Color support
+ %
+ \def\rgbDarkRed{0.50 0.09 0.12}
+ \def\rgbBlack{0 0 0}
+ %
+ \def\pdfsetcolor#1{\special{pdf:scolor [#1]}}
+ %
+ % Set color, and create a mark which defines \thiscolor accordingly,
+ % so that \makeheadline knows which color to restore.
+ \def\setcolor#1{%
+ \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \domark
+ \pdfsetcolor{#1}%
+ }
+ %
+ \def\maincolor{\rgbBlack}
+ \pdfsetcolor{\maincolor}
+ \edef\thiscolor{\maincolor}
+ \def\lastcolordefs{}
+ %
+ \def\makefootline{%
+ \baselineskip24pt
+ \line{\pdfsetcolor{\maincolor}\the\footline}%
+ }
+ %
+ \def\makeheadline{%
+ \vbox to 0pt{%
+ \vskip-22.5pt
+ \line{%
+ \vbox to8.5pt{}%
+ % Extract \thiscolor definition from the marks.
+ \getcolormarks
+ % Typeset the headline with \maincolor, then restore the color.
+ \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+ }%
+ \vss
+ }%
+ \nointerlineskip
+ }
+ %
% PDF outline support
%
- \pdfmakepagedesttrue \relax
- % Emulate the primitive of pdfTeX
+ % Emulate pdfTeX primitive
\def\pdfdest name#1 xyz{%
- \special{pdf:dest (name#1) [@thispage /XYZ @xpos @ypos]}%
+ \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}%
}
- \def\pdfmkdest#1{{%
+ %
+ \def\setpdfdestname#1{{%
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
\indexnofonts
+ \makevalueexpandable
+ \turnoffactive
\iftxiuseunicodedestname
- \def\pdfdestname{#1}% Pass through Unicode characters.
+ % Pass through Unicode characters.
\else
- \edef\pdfdestname{#1}% Replace Unicode characters to ASCII.
+ % Use ASCII approximations in destination names.
+ \passthroughcharsfalse
\fi
- \turnoffactive
- \makevalueexpandable
+ \def\pdfdestname{#1}%
\txiescapepdf\pdfdestname
- \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
%
+ \def\setpdfoutlinetext#1{{%
+ \turnoffactive
+ % Always use Unicode characters in title texts.
+ \def\pdfoutlinetext{#1}%
+ % For XeTeX, xdvipdfmx converts to UTF-16.
+ % So we do not convert.
+ \txiescapepdf\pdfoutlinetext
+ }}
+ %
+ \def\pdfmkdest#1{%
+ \setpdfdestname{#1}%
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }
+ %
+ % by default, use black for everything.
+ \def\urlcolor{\rgbBlack}
+ \def\linkcolor{\rgbBlack}
+ \def\endlink{\setcolor{\maincolor}\pdfendlink}
+ %
\def\dopdfoutline#1#2#3#4{%
- \iftxiuseunicodedestname
- \def\pdfoutlinedest{#3}% Pass through Unicode characters.
- \else
- \edef\pdfoutlinedest{#3}% Replace Unicode characters to ASCII.
+ \setpdfoutlinetext{#1}
+ \setpdfdestname{#3}
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{#4}%
\fi
- \ifx\pdfoutlinedest\empty
- \def\pdfoutlinedest{#4}%
- \fi
- {
- \turnoffactive
- \txiescapepdf\pdfoutlinedest
- \edef\pdfoutlinetext{#1}%
- \txiescapepdf\pdfoutlinetext
- %
- \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A
- << /S /GoTo /D (name\pdfoutlinedest) >> >> }%
- }
+ %
+ \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A
+ << /S /GoTo /D (\pdfdestname) >> >> }%
}
%
\def\pdfmakeoutlines{%
\begingroup
%
- % In the case of XeTeX, counts of subentries is not necesary.
- % Therefore, read toc only once.
+ % For XeTeX, counts of subentries are not necessary.
+ % Therefore, we read toc only once.
%
- % We use the node names as the destinations.
+ % We use node names as destinations.
\def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
\dopdfoutline{##1}{1}{##3}{##4}}%
@@ -1600,7 +1745,7 @@ output) for that.)}
\let\unnsubsecentry\numsubsecentry%
\let\unnsubsubsecentry\numsubsubsecentry%
%
- % In the case of XeTeX, xdvipdfmx converts strings to UTF-16.
+ % For XeTeX, xdvipdfmx converts strings to UTF-16.
% Therefore, the encoding and the language may not be considered.
%
\indexnofonts
@@ -1622,9 +1767,9 @@ output) for that.)}
\special{pdf:docview << /PageMode /UseOutlines >> }
% ``\special{pdf:tounicode ...}'' is not necessary
% because xdvipdfmx converts strings from UTF-8 to UTF-16 without it.
- % However, due to UTF-16 convert issue of xdvipdfmx 20150315,
- % ``\special{pdf:dest ...}'' can not handle non-ASCII strings.
- % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
+ % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315,
+ % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings.
+ % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
%
\def\skipspaces#1{\def\PP{#1}\def\D{|}%
\ifx\PP\D\let\nextsp\relax
@@ -1684,7 +1829,7 @@ output) for that.)}
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
\def\pdflink#1{%
\special{pdf:bann << /Border [0 0 0]
- /Type /Annot /Subtype /Link /A << /S /GoTo /D (name#1) >> >>}%
+ /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}%
\setcolor{\linkcolor}#1\endlink}
\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
%
@@ -1696,7 +1841,7 @@ output) for that.)}
\def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
\def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
%
- % XeTeX (and the PDF format) support .pdf, .png, .jpg (among
+ % XeTeX (and the PDF format) supports .pdf, .png, .jpg (among
% others). Let's try in that order, PDF first since if
% someone has a scalable image, presumably better to use that than a
% bitmap.
@@ -3268,23 +3413,10 @@ end
\let\atchar=\@
% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
-% Unless we're in typewriter, use \ecfont because the CM text fonts do
-% not have braces, and we don't want to switch into math.
-\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
-\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
-\let\{=\mylbrace \let\lbracechar=\{
-\let\}=\myrbrace \let\rbracechar=\}
-\begingroup
- % Definitions to produce \{ and \} commands for indices,
- % and @{ and @} for the aux/toc files.
- \catcode`\{ = \other \catcode`\} = \other
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\! = 0 \catcode`\\ = \other
- !gdef!lbracecmd[\{]%
- !gdef!rbracecmd[\}]%
- !gdef!lbraceatcmd[@{]%
- !gdef!rbraceatcmd[@}]%
-!endgroup
+\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}}
+\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}}
+\let\{=\lbracechar
+\let\}=\rbracechar
% @comma{} to avoid , parsing problems.
\let\comma = ,
@@ -4603,6 +4735,31 @@ end
\fi
}
+% Like \expandablevalue, but completely expandable (the \message in the
+% definition above operates at the execution level of TeX). Used when
+% writing to auxiliary files, due to the expansion that \write does.
+% If flag is undefined, pass through an unexpanded @value command: maybe it
+% will be set by the time it is read back in.
+%
+% NB flag names containing - or _ may not work here.
+\def\dummyvalue#1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ \noexpand\value{#1}%
+ \else
+ \csname SET#1\endcsname
+ \fi
+}
+
+% Used for @value's in index entries to form the sort key: expand the @value
+% if possible, otherwise sort late.
+\def\indexnofontsvalue#1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ ZZZZZZZ
+ \else
+ \csname SET#1\endcsname
+ \fi
+}
+
% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
% with @set.
%
@@ -4727,14 +4884,7 @@ end
% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
% #3 the target index (bar).
\def\dosynindex#1#2#3{%
- % Only do \closeout if we haven't already done it, else we'll end up
- % closing the target index.
- \expandafter \ifx\csname donesynindex#2\endcsname \relax
- % The \closeout helps reduce unnecessary open files; the limit on the
- % Acorn RISC OS is a mere 16 files.
- \expandafter\closeout\csname#2indfile\endcsname
- \expandafter\let\csname donesynindex#2\endcsname = 1
- \fi
+ \requireopenindexfile{#3}%
% redefine \fooindfile:
\expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
\expandafter\let\csname#2indfile\endcsname=\temp
@@ -4744,7 +4894,7 @@ end
% Define \doindex, the driver for all index macros.
% Argument #1 is generated by the calling \fooindex macro,
-% and it the two-letter name of the index.
+% and it is the two-letter name of the index.
\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx}
\def\doindexxxx #1{\doind{\indexname}{#1}}
@@ -4753,63 +4903,61 @@ end
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
-% Used when writing an index entry out to an index file, to prevent
+
+% Used when writing an index entry out to an index file to prevent
% expansion of Texinfo commands that can appear in an index entry.
%
\def\indexdummies{%
\escapechar = `\\ % use backslash in output files.
- \def\@{@}% change to @@ when we switch to @ as escape char in index files.
- \def\ {\realbackslash\space }%
- %
- % Need these unexpandable (because we define \tt as a dummy)
- % definitions when @{ or @} appear in index entry text. Also, more
- % complicated, when \tex is in effect and \{ is a \delimiter again.
- % We can't use \lbracecmd and \rbracecmd because texindex assumes
- % braces and backslashes are used only as delimiters. Perhaps we
- % should use @lbracechar and @rbracechar?
- \def\{{{\tt\char123}}%
- \def\}{{\tt\char125}}%
+ \definedummyletter\@%
+ \definedummyletter\ %
+ %
+ % For texindex which always views { and } as separators.
+ \def\{{\lbracechar{}}%
+ \def\}{\rbracechar{}}%
%
% Do the redefinitions.
- \commondummies
+ \definedummies
}
-% For the aux and toc files, @ is the escape character. So we want to
-% redefine everything using @ as the escape character (instead of
-% \realbackslash, still used for index files). When everything uses @,
-% this will be simpler.
+% Used for the aux and toc files, where @ is the escape character.
%
\def\atdummies{%
- \def\@{@@}%
- \def\ {@ }%
- \let\{ = \lbraceatcmd
- \let\} = \rbraceatcmd
+ \definedummyletter\@%
+ \definedummyletter\ %
+ \definedummyletter\{%
+ \definedummyletter\}%
%
% Do the redefinitions.
- \commondummies
+ \definedummies
\otherbackslash
}
-% Called from \indexdummies and \atdummies.
+% \definedummyword defines \#1 as \string\#1\space, thus effectively
+% preventing its expansion. This is used only for control words,
+% not control letters, because the \space would be incorrect for
+% control characters, but is needed to separate the control word
+% from whatever follows.
%
-\def\commondummies{%
- % \definedummyword defines \#1 as \string\#1\space, thus effectively
- % preventing its expansion. This is used only for control words,
- % not control letters, because the \space would be incorrect for
- % control characters, but is needed to separate the control word
- % from whatever follows.
- %
- % For control letters, we have \definedummyletter, which omits the
- % space.
- %
- % These can be used both for control words that take an argument and
- % those that do not. If it is followed by {arg} in the input, then
- % that will dutifully get written to the index (or wherever).
- %
- \def\definedummyword ##1{\def##1{\string##1\space}}%
- \def\definedummyletter##1{\def##1{\string##1}}%
- \let\definedummyaccent\definedummyletter
+% These can be used both for control words that take an argument and
+% those that do not. If it is followed by {arg} in the input, then
+% that will dutifully get written to the index (or wherever).
+%
+% For control letters, we have \definedummyletter, which omits the
+% space.
+%
+\def\definedummyword #1{\def#1{\string#1\space}}%
+\def\definedummyletter#1{\def#1{\string#1}}%
+\let\definedummyaccent\definedummyletter
+
+% Called from \indexdummies and \atdummies, to effectively prevent
+% the expansion of commands.
+%
+\def\definedummies{%
%
+ \let\commondummyword\definedummyword
+ \let\commondummyletter\definedummyletter
+ \let\commondummyaccent\definedummyaccent
\commondummiesnofonts
%
\definedummyletter\_%
@@ -4850,6 +4998,7 @@ end
\definedummyword\TeX
%
% Assorted special characters.
+ \definedummyword\atchar
\definedummyword\arrow
\definedummyword\bullet
\definedummyword\comma
@@ -4889,85 +5038,82 @@ end
%
% We want to disable all macros so that they are not expanded by \write.
\macrolist
+ \let\value\dummyvalue
%
\normalturnoffactive
- %
- % Handle some cases of @value -- where it does not contain any
- % (non-fully-expandable) commands.
- \makevalueexpandable
}
-% \commondummiesnofonts: common to \commondummies and \indexnofonts.
-% Define \definedumyletter, \definedummyaccent and \definedummyword before
-% using.
+% \commondummiesnofonts: common to \definedummies and \indexnofonts.
+% Define \commondummyletter, \commondummyaccent and \commondummyword before
+% using. Used for accents, font commands, and various control letters.
%
\def\commondummiesnofonts{%
% Control letters and accents.
- \definedummyletter\!%
- \definedummyaccent\"%
- \definedummyaccent\'%
- \definedummyletter\*%
- \definedummyaccent\,%
- \definedummyletter\.%
- \definedummyletter\/%
- \definedummyletter\:%
- \definedummyaccent\=%
- \definedummyletter\?%
- \definedummyaccent\^%
- \definedummyaccent\`%
- \definedummyaccent\~%
- \definedummyword\u
- \definedummyword\v
- \definedummyword\H
- \definedummyword\dotaccent
- \definedummyword\ogonek
- \definedummyword\ringaccent
- \definedummyword\tieaccent
- \definedummyword\ubaraccent
- \definedummyword\udotaccent
- \definedummyword\dotless
+ \commondummyletter\!%
+ \commondummyaccent\"%
+ \commondummyaccent\'%
+ \commondummyletter\*%
+ \commondummyaccent\,%
+ \commondummyletter\.%
+ \commondummyletter\/%
+ \commondummyletter\:%
+ \commondummyaccent\=%
+ \commondummyletter\?%
+ \commondummyaccent\^%
+ \commondummyaccent\`%
+ \commondummyaccent\~%
+ \commondummyword\u
+ \commondummyword\v
+ \commondummyword\H
+ \commondummyword\dotaccent
+ \commondummyword\ogonek
+ \commondummyword\ringaccent
+ \commondummyword\tieaccent
+ \commondummyword\ubaraccent
+ \commondummyword\udotaccent
+ \commondummyword\dotless
%
% Texinfo font commands.
- \definedummyword\b
- \definedummyword\i
- \definedummyword\r
- \definedummyword\sansserif
- \definedummyword\sc
- \definedummyword\slanted
- \definedummyword\t
+ \commondummyword\b
+ \commondummyword\i
+ \commondummyword\r
+ \commondummyword\sansserif
+ \commondummyword\sc
+ \commondummyword\slanted
+ \commondummyword\t
%
% Commands that take arguments.
- \definedummyword\abbr
- \definedummyword\acronym
- \definedummyword\anchor
- \definedummyword\cite
- \definedummyword\code
- \definedummyword\command
- \definedummyword\dfn
- \definedummyword\dmn
- \definedummyword\email
- \definedummyword\emph
- \definedummyword\env
- \definedummyword\file
- \definedummyword\image
- \definedummyword\indicateurl
- \definedummyword\inforef
- \definedummyword\kbd
- \definedummyword\key
- \definedummyword\math
- \definedummyword\option
- \definedummyword\pxref
- \definedummyword\ref
- \definedummyword\samp
- \definedummyword\strong
- \definedummyword\tie
- \definedummyword\U
- \definedummyword\uref
- \definedummyword\url
- \definedummyword\var
- \definedummyword\verb
- \definedummyword\w
- \definedummyword\xref
+ \commondummyword\abbr
+ \commondummyword\acronym
+ \commondummyword\anchor
+ \commondummyword\cite
+ \commondummyword\code
+ \commondummyword\command
+ \commondummyword\dfn
+ \commondummyword\dmn
+ \commondummyword\email
+ \commondummyword\emph
+ \commondummyword\env
+ \commondummyword\file
+ \commondummyword\image
+ \commondummyword\indicateurl
+ \commondummyword\inforef
+ \commondummyword\kbd
+ \commondummyword\key
+ \commondummyword\math
+ \commondummyword\option
+ \commondummyword\pxref
+ \commondummyword\ref
+ \commondummyword\samp
+ \commondummyword\strong
+ \commondummyword\tie
+ \commondummyword\U
+ \commondummyword\uref
+ \commondummyword\url
+ \commondummyword\var
+ \commondummyword\verb
+ \commondummyword\w
+ \commondummyword\xref
}
% For testing: output @{ and @} in index sort strings as \{ and \}.
@@ -5023,11 +5169,11 @@ end
%
\def\indexnofonts{%
% Accent commands should become @asis.
- \def\definedummyaccent##1{\let##1\asis}%
+ \def\commondummyaccent##1{\let##1\asis}%
% We can just ignore other control letters.
- \def\definedummyletter##1{\let##1\empty}%
+ \def\commondummyletter##1{\let##1\empty}%
% All control words become @asis by default; overrides below.
- \let\definedummyword\definedummyaccent
+ \let\commondummyword\commondummyaccent
\commondummiesnofonts
%
% Don't no-op \tt, since it isn't a user-level command
@@ -5069,37 +5215,40 @@ end
\def\LaTeX{LaTeX}%
\def\TeX{TeX}%
%
- % Assorted special characters.
- % (The following {} will end up in the sort string, but that's ok.)
- \def\arrow{->}%
- \def\bullet{bullet}%
- \def\comma{,}%
- \def\copyright{copyright}%
- \def\dots{...}%
- \def\enddots{...}%
- \def\equiv{==}%
- \def\error{error}%
- \def\euro{euro}%
- \def\expansion{==>}%
- \def\geq{>=}%
- \def\guillemetleft{<<}%
- \def\guillemetright{>>}%
- \def\guilsinglleft{<}%
- \def\guilsinglright{>}%
- \def\leq{<=}%
- \def\minus{-}%
- \def\point{.}%
- \def\pounds{pounds}%
- \def\print{-|}%
- \def\quotedblbase{"}%
- \def\quotedblleft{"}%
- \def\quotedblright{"}%
- \def\quoteleft{`}%
- \def\quoteright{'}%
- \def\quotesinglbase{,}%
- \def\registeredsymbol{R}%
- \def\result{=>}%
- \def\textdegree{o}%
+ % Assorted special characters. \defglyph gives the control sequence a
+ % definition that removes the {} that follows its use.
+ \defglyph\atchar{@}%
+ \defglyph\arrow{->}%
+ \defglyph\bullet{bullet}%
+ \defglyph\comma{,}%
+ \defglyph\copyright{copyright}%
+ \defglyph\dots{...}%
+ \defglyph\enddots{...}%
+ \defglyph\equiv{==}%
+ \defglyph\error{error}%
+ \defglyph\euro{euro}%
+ \defglyph\expansion{==>}%
+ \defglyph\geq{>=}%
+ \defglyph\guillemetleft{<<}%
+ \defglyph\guillemetright{>>}%
+ \defglyph\guilsinglleft{<}%
+ \defglyph\guilsinglright{>}%
+ \defglyph\leq{<=}%
+ \defglyph\lbracechar{\{}%
+ \defglyph\minus{-}%
+ \defglyph\point{.}%
+ \defglyph\pounds{pounds}%
+ \defglyph\print{-|}%
+ \defglyph\quotedblbase{"}%
+ \defglyph\quotedblleft{"}%
+ \defglyph\quotedblright{"}%
+ \defglyph\quoteleft{`}%
+ \defglyph\quoteright{'}%
+ \defglyph\quotesinglbase{,}%
+ \defglyph\rbracechar{\}}%
+ \defglyph\registeredsymbol{R}%
+ \defglyph\result{=>}%
+ \defglyph\textdegree{o}%
%
% We need to get rid of all macros, leaving only the arguments (if present).
% Of course this is not nearly correct, but it is the best we can do for now.
@@ -5112,7 +5261,11 @@ end
% goes to end-of-line is not handled.
%
\macrolist
+ \let\value\indexnofontsvalue
}
+\def\defglyph#1#2{\def#1##1{#2}} % see above
+
+
\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
@@ -5159,9 +5312,10 @@ end
\ifx\suffix\indexisfl\def\suffix{f1}\fi
% Open the file
\immediate\openout\csname#1indfile\endcsname \jobname.\suffix
- % Using \immediate here prevents an object entering into the current box,
- % which could confound checks such as those in \safewhatsit for preceding
- % skips.
+ % Using \immediate above here prevents an object entering into the current
+ % box, which could confound checks such as those in \safewhatsit for
+ % preceding skips.
+ \typeout{Writing index file \jobname.\suffix}%
\fi}
\def\indexisfl{fl}
@@ -5359,7 +5513,7 @@ end
% \initial {@}
% as its first line, TeX doesn't complain about mismatched braces
% (because it thinks @} is a control sequence).
- \catcode`\@ = 11
+ \catcode`\@ = 12
% See comment in \requireopenindexfile.
\def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi
\openin 1 \jobname.\indexname s
@@ -5369,6 +5523,7 @@ end
% index. The easiest way to prevent this problem is to make sure
% there is some text.
\putwordIndexNonexistent
+ \typeout{No file \jobname.\indexname s.}%
\else
\catcode`\\ = 0
%
@@ -5386,7 +5541,7 @@ end
\let\indexlbrace\{ % Likewise, set these sequences for braces
\let\indexrbrace\} % used in the sort key.
\begindoublecolumns
- \let\entryorphanpenalty=\indexorphanpenalty
+ \let\entrywidowpenalty=\indexwidowpenalty
%
% Read input from the index file line by line.
\loopdo
@@ -5487,6 +5642,12 @@ end
\def\entry{%
\begingroup
%
+ % For pdfTeX and XeTeX.
+ % The redefinition of \domark stops marks being added in \pdflink to
+ % preserve coloured links across page boundaries. Otherwise the marks
+ % would get in the way of \lastbox in \insertindexentrybox.
+ \let\domark\relax
+ %
% Start a new paragraph if necessary, so our assignments below can't
% affect previous text.
\par
@@ -5500,10 +5661,6 @@ end
\def\*{\unskip\space\ignorespaces}%
\def\entrybreak{\hfil\break}% An undocumented command
%
- % A bit of stretch before each entry for the benefit of balancing
- % columns.
- \vskip 0pt plus0.5pt
- %
% Swallow the left brace of the text (first parameter):
\afterassignment\doentry
\let\temp =
@@ -5537,20 +5694,13 @@ end
%
\ifpdf
\pdfgettoks#1.%
- \bgroup\let\domark\relax
- \hskip\skip\thinshrinkable\the\toksA
- \egroup
- % The redefinion of \domark stops marks being added in \pdflink to
- % preserve coloured links across page boundaries. Otherwise the marks
- % would get in the way of \lastbox in \insertindexentrybox.
+ \hskip\skip\thinshrinkable\the\toksA
\else
\ifx\XeTeXrevision\thisisundefined
\hskip\skip\thinshrinkable #1%
\else
\pdfgettoks#1.%
- \bgroup\let\domark\relax
- \hskip\skip\thinshrinkable\the\toksA
- \egroup
+ \hskip\skip\thinshrinkable\the\toksA
\fi
\fi
\fi
@@ -5559,11 +5709,10 @@ end
\global\setbox\entryindexbox=\vbox{\unhbox\boxA}%
\else
\global\setbox\entryindexbox=\vbox\bgroup
- \prevdepth=\entrylinedepth
- \noindent
% We want the text of the entries to be aligned to the left, and the
% page numbers to be aligned to the right.
%
+ \parindent = 0pt
\advance\leftskip by 0pt plus 1fil
\advance\leftskip by 0pt plus -1fill
\rightskip = 0pt plus -1fil
@@ -5572,8 +5721,6 @@ end
% if the list of page numbers is long, to be aligned to the right.
\parfillskip=0pt plus -1fill
%
- \hangindent=1em
- %
\advance\rightskip by \entryrightmargin
% Determine how far we can stretch into the margin.
% This allows, e.g., "Appendix H GNU Free Documentation License" to
@@ -5593,17 +5740,21 @@ end
\ifdim\dimen@ > 0.8\dimen@ii % due to long index text
\dimen@ = 0.7\dimen@ % Try to split the text roughly evenly
\dimen@ii = \hsize
- \advance \dimen@ii by -1em
\ifnum\dimen@>\dimen@ii
% If the entry is too long, use the whole line
\dimen@ = \dimen@ii
\fi
\advance\leftskip by 0pt plus 1fill % ragged right
\advance \dimen@ by 1\rightskip
- \parshape = 2 0pt \dimen@ 1em \dimen@ii
- % Ideally we'd add a finite glue at the end of the first line only, but
- % TeX doesn't seem to provide a way to do such a thing.
+ \parshape = 2 0pt \dimen@ 0em \dimen@ii
+ % Ideally we'd add a finite glue at the end of the first line only,
+ % instead of using \parshape with explicit line lengths, but TeX
+ % doesn't seem to provide a way to do such a thing.
+ %
+ \leftskip = 1em
+ \parindent = -1em
\fi\fi
+ \indent % start paragraph
\unhbox\boxA
%
% Do not prefer a separate line ending with a hyphen to fewer lines.
@@ -5621,7 +5772,7 @@ end
\endgroup
% delay text of entry until after penalty
\bgroup\aftergroup\insertindexentrybox
- \entryorphanpenalty
+ \entrywidowpenalty
}}
\newskip\thinshrinkable
@@ -5629,40 +5780,43 @@ end
\newbox\entryindexbox
\def\insertindexentrybox{%
- \copy\entryindexbox
- % The following gets the depth of the last box. This is for even
- % line spacing when entries span several lines.
- \setbox\dummybox\vbox{%
- \unvbox\entryindexbox
- \nointerlineskip
- \lastbox
- \global\entrylinedepth=\prevdepth
+ \ourunvbox\entryindexbox
+}
+
+% Use \lastbox to take apart vbox box by box, and add each sub-box
+% to the current vertical list.
+\def\ourunvbox#1{%
+\bgroup % for local binding of \delayedbox
+ % Remove the last box from box #1
+ \global\setbox#1=\vbox{%
+ \unvbox#1%
+ \unskip % remove any glue
+ \unpenalty
+ \global\setbox\interbox=\lastbox
}%
- % Note that we couldn't simply \unvbox\entryindexbox followed by
- % \nointerlineskip\lastbox to remove the last box and then reinstate it,
- % because this resets how far the box has been \moveleft'ed to 0. \unvbox
- % doesn't affect \prevdepth either.
+ \setbox\delayedbox=\box\interbox
+ \ifdim\ht#1=0pt\else
+ \ourunvbox#1 % Repeat on what's left of the box
+ \nobreak
+ \fi
+ \box\delayedbox
+\egroup
}
-\newdimen\entrylinedepth
+\newbox\delayedbox
+\newbox\interbox
% Default is no penalty
-\let\entryorphanpenalty\egroup
+\let\entrywidowpenalty\egroup
% Used from \printindex. \firsttoken should be the first token
% after the \entry. If it's not another \entry, we are at the last
% line of a group of index entries, so insert a penalty to discourage
-% orphaned index entries.
-\long\def\indexorphanpenalty{%
+% widowed index entries.
+\long\def\indexwidowpenalty{%
\def\isentry{\entry}%
\ifx\firsttoken\isentry
\else
- \unskip\penalty 9000
- % The \unskip here stops breaking before the glue. It relies on the
- % \vskip above being there, otherwise there is an error
- % "You can't use `\unskip' in vertical mode". There has to be glue
- % in the current vertical list that hasn't been added to the
- % "current page". See Chapter 24 of the TeXbook. This contradicts
- % Section 8.3.7 in "TeX by Topic," though.
+ \penalty 9000
\fi
\egroup % now comes the box added with \aftergroup
}
@@ -5702,8 +5856,6 @@ end
\newbox\partialpage
\newdimen\doublecolumnhsize
-\newdimen\doublecolumntopgap
-\doublecolumntopgap = 0pt
% Use inside an output routine to save \topmark and \firstmark
\def\savemarks{%
@@ -5786,12 +5938,10 @@ end
%
% Double the \vsize as well. (We don't need a separate register here,
% since nobody clobbers \vsize.)
- \global\doublecolumntopgap = \topskip
- \global\advance\doublecolumntopgap by -1\baselineskip
- \advance\vsize by -1\doublecolumntopgap
\vsize = 2\vsize
- \topskip=0pt
- \global\entrylinedepth=0pt\relax
+ %
+ % For the benefit of balancing columns
+ \advance\baselineskip by 0pt plus 0.5pt
}
% The double-column output routine for all double-column pages except
@@ -5821,9 +5971,7 @@ end
%
\hsize = \doublecolumnhsize
\wd0=\hsize \wd2=\hsize
- \vbox{%
- \vskip\doublecolumntopgap
- \hbox to\txipagewidth{\box0\hfil\box2}}%
+ \hbox to\txipagewidth{\box0\hfil\box2}%
}
@@ -5890,38 +6038,45 @@ end
\dimen@ = \ht0
\advance\dimen@ by \topskip
\advance\dimen@ by-\baselineskip
- \ifdim\dimen@<14\baselineskip
+ \ifdim\dimen@<5\baselineskip
% Don't split a short final column in two.
\setbox2=\vbox{}%
\else
\divide\dimen@ by 2 % target to split to
\dimen@ii = \dimen@
\splittopskip = \topskip
- % Loop until the second column is no higher than the first
+ % Loop until left column is at least as high as the right column.
{%
\vbadness = 10000
\loop
\global\setbox3 = \copy0
\global\setbox1 = \vsplit3 to \dimen@
- % Remove glue from bottom of first column to
- % make sure it is higher than the second.
- \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}%
- \ifdim\ht3>\ht1
+ \ifdim\ht1<\ht3
\global\advance\dimen@ by 1pt
\repeat
}%
- \multiply\dimen@ii by 4
- \divide\dimen@ii by 5
- \ifdim\ht3<\dimen@ii
- % Column heights are too different, so don't make their bottoms
- % flush with each other. The glue at the end of the second column
- % allows a second column to stretch, reducing the difference in
- % height between the two.
- \setbox0=\vbox to\dimen@{\unvbox1\vfill}%
- \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
+ % Now the left column is in box 1, and the right column in box 3.
+ % Check whether the left column has come out higher than the page itself.
+ % (Note that we have doubled \vsize for the double columns, so
+ % the actual height of the page is 0.5\vsize).
+ \ifdim2\ht1>\vsize
+ % Just split the last of the double column material roughly in half.
+ \setbox2=\box0
+ \setbox0 = \vsplit2 to \dimen@ii
+ \setbox0=\vbox to \dimen@ii {\unvbox0\vfill}%
+ \setbox2=\vbox to \dimen@ii {\unvbox2\vfill}%
\else
- \setbox0=\vbox to\dimen@{\unvbox1}%
- \setbox2=\vbox to\dimen@{\unvbox3}%
+ % Compare the heights of the two columns.
+ \ifdim4\ht1>5\ht3
+ % Column heights are too different, so don't make their bottoms
+ % flush with each other.
+ \setbox2=\vbox to \ht1 {\unvbox3\vfill}%
+ \setbox0=\vbox to \ht1 {\unvbox1\vfill}%
+ \else
+ % Make column bottoms flush with each other.
+ \setbox2=\vbox to\ht1{\unvbox3\unskip}%
+ \setbox0=\vbox to\ht1{\unvbox1\unskip}%
+ \fi
\fi
\fi
%
@@ -6682,7 +6837,14 @@ end
% 1 and 2 (the page numbers aren't printed), and so are the first
% two pages of the document. Thus, we'd have two destinations named
% `1', and two named `2'.
- \ifpdf \global\pdfmakepagedesttrue \fi
+ \ifpdf
+ \global\pdfmakepagedesttrue
+ \else
+ \ifx\XeTeXrevision\thisisundefined
+ \else
+ \global\pdfmakepagedesttrue
+ \fi
+ \fi
}
@@ -7963,7 +8125,7 @@ end
\newif\ifrecursive % Is it recursive?
% List of all defined macros in the form
-% \definedummyword\macro1\definedummyword\macro2...
+% \commondummyword\macro1\commondummyword\macro2...
% Currently is also contains all @aliases; the list can be split
% if there is a need.
\def\macrolist{}
@@ -7971,7 +8133,7 @@ end
% Add the macro to \macrolist
\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
\def\addtomacrolistxxx#1{%
- \toks0 = \expandafter{\macrolist\definedummyword#1}%
+ \toks0 = \expandafter{\macrolist\commondummyword#1}%
\xdef\macrolist{\the\toks0}%
}
@@ -8112,7 +8274,7 @@ end
% Remove the macro name from \macrolist:
\begingroup
\expandafter\let\csname#1\endcsname \relax
- \let\definedummyword\unmacrodo
+ \let\commondummyword\unmacrodo
\xdef\macrolist{\macrolist}%
\endgroup
\else
@@ -8127,7 +8289,7 @@ end
\ifx #1\relax
% remove this
\else
- \noexpand\definedummyword \noexpand#1%
+ \noexpand\commondummyword \noexpand#1%
\fi
}
@@ -8402,8 +8564,7 @@ end
% its parameters, looking like "\xeatspaces{\hash 1}".
% \paramno is the number of parameters
% \paramlist is a TeX parameter text, e.g. "#1,#2,#3,"
-% There are eight cases: recursive and nonrecursive macros of zero, one,
-% up to nine, and many arguments.
+% There are four cases: macros of zero, one, up to nine, and many arguments.
% \xdef is used so that macro definitions will survive the file
% they're defined in: @include reads the file inside a group.
%
@@ -8418,91 +8579,48 @@ end
\else
\let\xeatspaces\relax % suppress expansion
\fi
- \ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\scanmacro{\macrobody}}%
- \or % 1
+ \ifcase\paramno
+ % 0
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\scanmacro{\macrobody}}%
+ \or % 1
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+ \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+ \egroup
+ \noexpand\scanmacro{\macrobody}%
+ }%
+ \else % at most 9
+ \ifnum\paramno<10\relax
+ % @MACNAME sets the context for reading the macro argument
+ % @MACNAME@@ gets the argument, processes backslashes and appends a
+ % comma.
+ % @MACNAME@@@ removes braces surrounding the argument list.
+ % @MACNAME@@@@ scans the macro body with arguments substituted.
\expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+ \bgroup
+ \noexpand\expandafter % This \expandafter skip any spaces after the
+ \noexpand\macroargctxt % macro before we change the catcode of space.
+ \noexpand\expandafter
+ \expandafter\noexpand\csname\the\macname @@\endcsname}%
+ \expandafter\xdef\csname\the\macname @@\endcsname##1{%
+ \noexpand\passargtomacro
+ \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
\expandafter\xdef\csname\the\macname @@@\endcsname##1{%
- \egroup
- \noexpand\scanmacro{\macrobody}%
- }%
- \else
- \ifnum\paramno<10\relax % at most 9
- % See non-recursive section below for comments
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup
- \noexpand\expandafter
- \noexpand\macroargctxt
- \noexpand\expandafter
- \expandafter\noexpand\csname\the\macname @@\endcsname}%
- \expandafter\xdef\csname\the\macname @@\endcsname##1{%
- \noexpand\passargtomacro
- \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
- \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
- \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname @@@@\endcsname\paramlist{%
- \egroup\noexpand\scanmacro{\macrobody}}%
- \else % 10 or more
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\getargvals@{\the\macname}{\argl}%
- }%
- \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
- \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
- \fi
- \fi
- \else %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%%
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\scanmacro{\macrobody}}%
- \or % 1
+ \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname @@@@\endcsname\paramlist{%
+ \egroup\noexpand\scanmacro{\macrobody}}%
+ \else % 10 or more:
\expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname @@@\endcsname}%
- \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
- \egroup
- \noexpand\scanmacro{\macrobody}%
- }%
- \else % at most 9
- \ifnum\paramno<10\relax
- % @MACNAME sets the context for reading the macro argument
- % @MACNAME@@ gets the argument, processes backslashes and appends a
- % comma.
- % @MACNAME@@@ removes braces surrounding the argument list.
- % @MACNAME@@@@ scans the macro body with arguments substituted.
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup
- \noexpand\expandafter % This \expandafter skip any spaces after the
- \noexpand\macroargctxt % macro before we change the catcode of space.
- \noexpand\expandafter
- \expandafter\noexpand\csname\the\macname @@\endcsname}%
- \expandafter\xdef\csname\the\macname @@\endcsname##1{%
- \noexpand\passargtomacro
- \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
- \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
- \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname @@@@\endcsname\paramlist{%
- \egroup\noexpand\scanmacro{\macrobody}}%
- \else % 10 or more:
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\getargvals@{\the\macname}{\argl}%
- }%
- \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
- \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
- \fi
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
\fi
\fi}
@@ -8698,6 +8816,8 @@ end
{%
\requireauxfile
\atdummies % preserve commands, but don't expand them
+ % match definition in \xrdef, \refx, \xrefX.
+ \def\value##1{##1}%
\edef\writexrdef##1##2{%
\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
##1}{##2}}% these are parameters of \writexrdef
@@ -8790,8 +8910,8 @@ end
\ifpdf
% For pdfTeX and LuaTeX
{\indexnofonts
- \turnoffactive
\makevalueexpandable
+ \turnoffactive
% This expands tokens, so do it after making catcode changes, so _
% etc. don't get their TeX definitions. This ignores all spaces in
% #4, including (wrongly) those in the middle of the filename.
@@ -8799,19 +8919,18 @@ end
%
% This (wrongly) does not take account of leading or trailing
% spaces in #1, which should be ignored.
- \edef\pdfxrefdest{#1}%
- \ifx\pdfxrefdest\empty
- \def\pdfxrefdest{Top}% no empty targets
- \else
- \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \setpdfdestname{#1}%
+ %
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{Top}% no empty targets
\fi
%
\leavevmode
\startlink attr{/Border [0 0 0]}%
\ifnum\filenamelength>0
- goto file{\the\filename.pdf} name{\pdfxrefdest}%
+ goto file{\the\filename.pdf} name{\pdfdestname}%
\else
- goto name{\pdfmkpgn{\pdfxrefdest}}%
+ goto name{\pdfmkpgn{\pdfdestname}}%
\fi
}%
\setcolor{\linkcolor}%
@@ -8820,8 +8939,8 @@ end
\else
% For XeTeX
{\indexnofonts
- \turnoffactive
\makevalueexpandable
+ \turnoffactive
% This expands tokens, so do it after making catcode changes, so _
% etc. don't get their TeX definitions. This ignores all spaces in
% #4, including (wrongly) those in the middle of the filename.
@@ -8829,29 +8948,27 @@ end
%
% This (wrongly) does not take account of leading or trailing
% spaces in #1, which should be ignored.
- \iftxiuseunicodedestname
- \def\pdfxrefdest{#1}% Pass through Unicode characters.
- \else
- \edef\pdfxrefdest{#1}% Replace Unicode characters to ASCII.
- \fi
- \ifx\pdfxrefdest\empty
- \def\pdfxrefdest{Top}% no empty targets
- \else
- \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \setpdfdestname{#1}%
+ %
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{Top}% no empty targets
\fi
%
\leavevmode
\ifnum\filenamelength>0
- % By the default settings,
+ % With default settings,
% XeTeX (xdvipdfmx) replaces link destination names with integers.
% In this case, the replaced destination names of
- % remote PDF cannot be known. In order to avoid replacement,
- % you can use commandline option `-C 0x0010' for xdvipdfmx.
+ % remote PDFs are no longer known. In order to avoid a replacement,
+ % you can use xdvipdfmx's command line option `-C 0x0010'.
+ % If you use XeTeX 0.99996+ (TeX Live 2016+),
+ % this command line option is no longer necessary
+ % because we can use the `dvipdfmx:config' special.
\special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
- << /S /GoToR /F (\the\filename.pdf) /D (name\pdfxrefdest) >> >>}%
+ << /S /GoToR /F (\the\filename.pdf) /D (\pdfdestname) >> >>}%
\else
\special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
- << /S /GoTo /D (name\pdfxrefdest) >> >>}%
+ << /S /GoTo /D (\pdfdestname) >> >>}%
\fi
}%
\setcolor{\linkcolor}%
@@ -8862,6 +8979,7 @@ end
% include an _ in the xref name, etc.
\indexnofonts
\turnoffactive
+ \def\value##1{##1}%
\expandafter\global\expandafter\let\expandafter\Xthisreftitle
\csname XR#1-title\endcsname
}%
@@ -9002,14 +9120,14 @@ end
\fi\fi\fi
}
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-%
+% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX
+% is output afterwards if non-empty.
\def\refx#1#2{%
\requireauxfile
{%
\indexnofonts
\otherbackslash
+ \def\value##1{##1}%
\expandafter\global\expandafter\let\expandafter\thisrefX
\csname XR#1\endcsname
}%
@@ -9034,16 +9152,18 @@ end
#2% Output the suffix in any case.
}
-% This is the macro invoked by entries in the aux file. Usually it's
-% just a \def (we prepend XR to the control sequence name to avoid
-% collisions). But if this is a float type, we have more work to do.
+% This is the macro invoked by entries in the aux file. Define a control
+% sequence for a cross-reference target (we prepend XR to the control sequence
+% name to avoid collisions). The value is the page number. If this is a float
+% type, we have more work to do.
%
\def\xrdef#1#2{%
- {% The node name might contain 8-bit characters, which in our current
- % implementation are changed to commands like @'e. Don't let these
- % mess up the control sequence name.
+ {% Expand the node or anchor name to remove control sequences.
+ % \turnoffactive stops 8-bit characters being changed to commands
+ % like @'e. \refx does the same to retrieve the value in the definition.
\indexnofonts
\turnoffactive
+ \def\value##1{##1}%
\xdef\safexrefname{#1}%
}%
%
@@ -9755,9 +9875,9 @@ directory should work if nowhere else does.}
\global\righthyphenmin = #3\relax
}
-% XeTeX and LuaTeX can handle native Unicode.
-% Their default I/O is UTF-8 sequence instead of byte-wise.
-% Other TeX engine (pdfTeX etc.) I/O is byte-wise.
+% XeTeX and LuaTeX can handle Unicode natively.
+% Their default I/O uses UTF-8 sequences instead of a byte-wise operation.
+% Other TeX engines' I/O (pdfTeX, etc.) is byte-wise.
%
\newif\iftxinativeunicodecapable
\newif\iftxiusebytewiseio
@@ -9881,14 +10001,15 @@ directory should work if nowhere else does.}
%
\else \ifx \declaredencoding \utfeight
\iftxinativeunicodecapable
- % For native Unicode (XeTeX and LuaTeX)
+ % For native Unicode handling (XeTeX and LuaTeX)
\nativeunicodechardefs
\else
- % For UTF-8 byte sequence (TeX, eTeX and pdfTeX)
+ % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX)
\setnonasciicharscatcode\active
% since we already invoked \utfeightchardefs at the top level
- % (below), do not re-invoke it, then our check for duplicated
- % definitions triggers. Making non-ascii chars active is enough.
+ % (below), do not re-invoke it, otherwise our check for duplicated
+ % definitions gets triggered. Making non-ascii chars active is
+ % sufficient.
\fi
%
\else
@@ -9899,6 +10020,18 @@ directory should work if nowhere else does.}
\fi % latone
\fi % lattwo
\fi % ascii
+ %
+ \ifx\XeTeXrevision\thisisundefined
+ \else
+ \ifx \declaredencoding \utfeight
+ \else
+ \ifx \declaredencoding \ascii
+ \else
+ \message{Warning: XeTeX with non-UTF-8 encodings cannot handle %
+ non-ASCII characters in auxiliary files.}%
+ \fi
+ \fi
+ \fi
}
% emacs-page
@@ -10200,7 +10333,7 @@ directory should work if nowhere else does.}
\countUTFx = "80
\countUTFy = "C2
\def\UTFviiiTmp{%
- \gdef~{
+ \gdef~{%
\ifpassthroughchars $\fi}}%
\UTFviiiLoop
@@ -10236,8 +10369,9 @@ directory should work if nowhere else does.}
\def\U#1{%
\expandafter\ifx\csname uni:#1\endcsname \relax
\iftxinativeunicodecapable
- % Any Unicode characters can be used by native Unicode.
- % However, if the font does not have the glyph, the letter will miss.
+ % All Unicode characters can be used if native Unicode handling is
+ % active. However, if the font does not have the glyph,
+ % letters are missing.
\begingroup
\uccode`\.="#1\relax
\uppercase{.}
@@ -10251,9 +10385,18 @@ directory should work if nowhere else does.}
\fi
}
-% For UTF-8 byte sequence (TeX, e-TeX and pdfTeX)
-% Definition macro to replace the Unicode character
-% Definition macro that is used by @U command
+% These macros are used here to construct the name of a control
+% sequence to be defined.
+\def\UTFviiiTwoOctetsName#1#2{%
+ \csname u8:#1\string #2\endcsname}%
+\def\UTFviiiThreeOctetsName#1#2#3{%
+ \csname u8:#1\string #2\string #3\endcsname}%
+\def\UTFviiiFourOctetsName#1#2#3#4{%
+ \csname u8:#1\string #2\string #3\string #4\endcsname}%
+
+% For UTF-8 byte sequences (TeX, e-TeX and pdfTeX),
+% provide a definition macro to replace a Unicode character;
+% this gets used by the @U command
%
\begingroup
\catcode`\"=12
@@ -10267,17 +10410,18 @@ directory should work if nowhere else does.}
\countUTFz = "#1\relax
\begingroup
\parseXMLCharref
+
+ % Give \u8:... its definition. The sequence of seven \expandafter's
+ % expands after the \gdef three times, e.g.
+ %
+ % 1. \UTFviiTwoOctetsName B1 B2
+ % 2. \csname u8:B1 \string B2 \endcsname
+ % 3. \u8: B1 B2 (a single control sequence token)
%
- % Access definitions of characters given UTF-8 sequences
- \def\UTFviiiTwoOctets##1##2{%
- \csname u8:##1\string ##2\endcsname}%
- \def\UTFviiiThreeOctets##1##2##3{%
- \csname u8:##1\string ##2\string ##3\endcsname}%
- \def\UTFviiiFourOctets##1##2##3##4{%
- \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter
- \gdef\UTFviiiTmp{#2}%
+ \expandafter\expandafter
+ \expandafter\expandafter
+ \expandafter\expandafter
+ \expandafter\gdef \UTFviiiTmp{#2}%
%
\expandafter\ifx\csname uni:#1\endcsname \relax \else
\message{Internal error, already defined: #1}%
@@ -10287,45 +10431,61 @@ directory should work if nowhere else does.}
\expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp
\endgroup}
%
- % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp.
+ % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp
+ % to the corresponding UTF-8 sequence.
\gdef\parseXMLCharref{%
\ifnum\countUTFz < "A0\relax
\errhelp = \EMsimple
\errmessage{Cannot define Unicode char value < 00A0}%
\else\ifnum\countUTFz < "800\relax
\parseUTFviiiA,%
- \parseUTFviiiB C\UTFviiiTwoOctets.,%
+ \parseUTFviiiB C\UTFviiiTwoOctetsName.,%
\else\ifnum\countUTFz < "10000\relax
\parseUTFviiiA;%
\parseUTFviiiA,%
- \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+ \parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}%
\else
\parseUTFviiiA;%
\parseUTFviiiA,%
\parseUTFviiiA!%
- \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+ \parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}%
\fi\fi\fi
}
+ % Extract a byte from the end of the UTF-8 representation of \countUTFx.
+ % It must be a non-initial byte in the sequence.
+ % Change \uccode of #1 for it to be used in \parseUTFviiiB as one
+ % of the bytes.
\gdef\parseUTFviiiA#1{%
\countUTFx = \countUTFz
\divide\countUTFz by 64
- \countUTFy = \countUTFz
+ \countUTFy = \countUTFz % Save to be the future value of \countUTFz.
\multiply\countUTFz by 64
+
+ % \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract
+ % in order to get the last five bits.
\advance\countUTFx by -\countUTFz
+
+ % Convert this to the byte in the UTF-8 sequence.
\advance\countUTFx by 128
\uccode `#1\countUTFx
\countUTFz = \countUTFy}
- % Used to set \UTFviiiTmp to a UTF-8 byte sequence
+ % Used to put a UTF-8 byte sequence into \UTFviiiTmp
+ % #1 is the increment for \countUTFz to yield a the first byte of the UTF-8
+ % sequence.
+ % #2 is one of the \UTFviii*OctetsName macros.
+ % #3 is always a full stop (.)
+ % #4 is a template for the other bytes in the sequence. The values for these
+ % bytes is substituted in here with \uppercase using the \uccode's.
\gdef\parseUTFviiiB#1#2#3#4{%
\advance\countUTFz by "#10\relax
\uccode `#3\countUTFz
\uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
\endgroup
-% For native Unicode (XeTeX and LuaTeX)
-% Definition macro that is set catcode other non global
+% For native Unicode handling (XeTeX and LuaTeX),
+% provide a definition macro that sets a catcode to `other' non-globally
%
\def\DeclareUnicodeCharacterNativeOther#1#2{%
\catcode"#1=\other
@@ -11031,8 +11191,8 @@ directory should work if nowhere else does.}
\newif\ifpassthroughchars
\passthroughcharsfalse
-% For native Unicode (XeTeX and LuaTeX)
-% Definition macro to replace / pass-through the Unicode character
+% For native Unicode handling (XeTeX and LuaTeX),
+% provide a definition macro to replace/pass-through a Unicode character
%
\def\DeclareUnicodeCharacterNative#1#2{%
\catcode"#1=\active
@@ -11055,21 +11215,22 @@ directory should work if nowhere else does.}
\endgroup
}
-% Native Unicode (XeTeX and LuaTeX) character replacing definitions
-% It makes the setting that replace the Unicode characters.
+% Native Unicode handling (XeTeX and LuaTeX) character replacing definition.
+% It activates the setting that replaces Unicode characters.
\def\nativeunicodechardefs{%
\let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative
\unicodechardefs
}
-% For native Unicode (XeTeX and LuaTeX). Make the character token expand
+% For native Unicode handling (XeTeX and LuaTeX),
+% make the character token expand
% to the sequences given in \unicodechardefs for printing.
\def\DeclareUnicodeCharacterNativeAtU#1#2{%
\def\UTFAtUTmp{#2}
\expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp
}
-% Native Unicode (XeTeX and LuaTeX) @U command definitions
+% @U command definitions for native Unicode handling (XeTeX and LuaTeX).
\def\nativeunicodechardefsatu{%
\let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU
\unicodechardefs
@@ -11080,7 +11241,7 @@ directory should work if nowhere else does.}
\relax
}
-% define all the unicode characters we know about, for the sake of @U.
+% define all Unicode characters we know about, for the sake of @U.
\iftxinativeunicodecapable
\nativeunicodechardefsatu
\else
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 5ce10d298c..4dc5e750bc 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -12,14 +12,11 @@
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
-@c Additionally, flags are set with respect to the Emacs flavor; and
-@c depending whether Tramp is packaged into (X)Emacs, or standalone.
-
@include trampver.texi
-@c Macro for formatting a file name according to the respective syntax.
-@c Macro arguments should not have any leading or
-@c trailing whitespace. Not very elegant, but I don't know it better.
+@c Macro for formatting a file name according to the respective
+@c syntax. Macro arguments should not have any leading or trailing
+@c whitespace. Not very elegant, but I don't know it better.
@macro trampfn {method, userhost, localname}
@value{prefix}@c
@@ -51,56 +48,39 @@ copy and modify this GNU manual.''
@end copying
@c Entries for @command{install-info} to use
-@dircategory @value{emacsname} network features
+@dircategory Emacs network features
@direntry
* TRAMP: (tramp). Transparent Remote Access, Multiple Protocol
- @value{emacsname} remote file access via ssh and scp.
+ Emacs remote file access via ssh and scp.
@end direntry
@titlepage
@title @value{tramp} version @value{trampver} User Manual
@author by Daniel Pittman
@author based on documentation by Kai Großjohann
-@page
-@insertcopying
@end titlepage
@contents
-@ifnottex
@node Top, Overview, (dir), (dir)
@top @value{tramp} version @value{trampver} User Manual
This file documents @value{tramp} version @value{trampver}, a remote file
-editing package for @value{emacsname}.
+editing package for Emacs.
@value{tramp} stands for ``Transparent Remote (file) Access, Multiple
Protocol''. This package provides remote file editing, similar to
-@value{ftppackagename}.
+Ange FTP.
-The difference is that @value{ftppackagename} uses FTP to transfer
-files between the local and the remote host, whereas @value{tramp} uses a
-combination of @command{rsh} and @command{rcp} or other work-alike
-programs, such as @command{ssh}/@command{scp}.
+The difference is that Ange FTP uses FTP to transfer files between the
+local and the remote host, whereas @value{tramp} uses a combination of
+@command{rsh} and @command{rcp} or other work-alike programs, such as
+@command{ssh}/@command{scp}.
You can find the latest version of this document on the web at
@uref{http://www.gnu.org/software/tramp/}.
-@c Pointer to the other Emacs flavor is necessary only in case of
-@c standalone installation.
-@ifset installchapter
-The manual has been generated for @value{emacsname}.
-@ifinfo
-If you want to read the info pages for @value{emacsothername}, you
-should read in @ref{Installation} how to create them.
-@end ifinfo
-@ifhtml
-If you're using the other Emacs flavor, you should read the
-@uref{@value{emacsotherfilename}, @value{emacsothername}} pages.
-@end ifhtml
-@end ifset
-
@ifhtml
The latest release of @value{tramp} is available for
@uref{ftp://ftp.gnu.org/gnu/tramp/, download}, or you may see
@@ -115,20 +95,10 @@ There is a mailing list for @value{tramp}, available at
@email{tramp-devel@@gnu.org}, and archived at
@uref{http://lists.gnu.org/archive/html/tramp-devel/, the
@value{tramp} Mail Archive}.
-@ifhtml
-Older archives are located at
-@uref{http://sourceforge.net/mailarchive/forum.php?forum=tramp-devel,
-SourceForge Mail Archive} and
-@uref{http://www.mail-archive.com/emacs-rcp@@ls6.cs.uni-dortmund.de/,
-The Mail Archive}.
-@c in HTML output, there's no new paragraph.
-@*@*
-@end ifhtml
+@page
@insertcopying
-@end ifnottex
-
@menu
* Overview:: What @value{tramp} can and cannot do.
@@ -137,7 +107,7 @@ For the end user:
* Obtaining Tramp:: How to obtain @value{tramp}.
* History:: History of @value{tramp}.
@ifset installchapter
-* Installation:: Installing @value{tramp} with your @value{emacsname}.
+* Installation:: Installing @value{tramp} with your Emacs.
@end ifset
* Configuration:: Configuring @value{tramp} for use.
* Usage:: An overview of the operation of @value{tramp}.
@@ -150,7 +120,6 @@ For the developer:
How file names, directories and localnames
are mangled and managed.
* Traces and Profiles:: How to Customize Traces.
-* Issues:: Debatable Issues and What Was Decided.
* GNU Free Documentation License:: The license for this documentation.
* Function Index:: @value{tramp} functions.
@@ -161,7 +130,7 @@ For the developer:
--- The Detailed Node Listing ---
@c
@ifset installchapter
-Installing @value{tramp} with your @value{emacsname}
+Installing @value{tramp} with your Emacs
* Installation parameters:: Parameters in order to control installation.
* Load paths:: How to plug-in @value{tramp} into your environment.
@@ -173,12 +142,8 @@ Configuring @value{tramp} for use
* Connection types:: Types of connections to remote hosts.
* Inline methods:: Inline methods.
* External methods:: External methods.
-@ifset emacsgvfs
* GVFS based methods:: GVFS based external methods.
-@end ifset
-@ifset emacsgw
* Gateway methods:: Gateway methods.
-@end ifset
* Default Method:: Selecting a default method.
* Default User:: Selecting a default user.
* Default Host:: Selecting a default host.
@@ -200,15 +165,13 @@ Using @value{tramp}
* File name Syntax:: @value{tramp} file name conventions.
* File name completion:: File name completion.
* Ad-hoc multi-hops:: Declaring multiple hops in the file name.
-* Remote processes:: Integration with other @value{emacsname} packages.
+* Remote processes:: Integration with other Emacs packages.
* Cleanup remote connections:: Cleanup remote connections.
How file names, directories and localnames are mangled and managed
* Localname deconstruction:: Breaking a localname into its components.
-@ifset emacs
* External packages:: Integration with external Lisp packages.
-@end ifset
@end detailmenu
@end menu
@@ -219,10 +182,9 @@ How file names, directories and localnames are mangled and managed
@cindex overview
@value{tramp} is for transparently accessing remote files from within
-@value{emacsname}. @value{tramp} enables an easy, convenient, and
-consistent interface to remote files as if they are local files.
-@value{tramp}'s transparency extends to editing, version control, and
-@code{dired}.
+Emacs. @value{tramp} enables an easy, convenient, and consistent
+interface to remote files as if they are local files. @value{tramp}'s
+transparency extends to editing, version control, and @code{dired}.
@value{tramp} can access remote hosts using any number of access
methods, such as @command{rsh}, @command{rlogin}, @command{telnet},
@@ -245,7 +207,7 @@ and transparent access.
@value{tramp} temporarily transfers a remote file's contents to the
local host editing and related operations. @value{tramp} can also
transfer files between hosts using standard Emacs interfaces, a
-benefit of direct integration of @value{tramp} in @value{emacsname}.
+benefit of direct integration of @value{tramp} in Emacs.
@value{tramp} can transfer files using any number of available host
programs for remote files, such as @command{rcp}, @command{scp},
@@ -279,8 +241,7 @@ first time connection to that host, here's what happens:
@value{tramp} invokes @samp{telnet @var{host}} or @samp{rsh @var{host}
-l @var{user}} and establishes an external process to connect to the
remote host. @value{tramp} communicates with the process through an
-@value{emacsname} buffer, which also shows output from the remote
-host.
+Emacs buffer, which also shows output from the remote host.
@item
The remote host may prompt for a login name (for @command{telnet}, for
@@ -358,7 +319,7 @@ behind the scenes when you open a file with @value{tramp}.
@c For the end user
@node Obtaining Tramp
-@chapter Obtaining Tramp.
+@chapter Obtaining @value{tramp}
@cindex obtaining Tramp
@value{tramp} is included as part of Emacs (since Emacs version 22.1).
@@ -380,16 +341,20 @@ navigation bar at the top.
Another way is to follow the terminal session below:
@example
-] @strong{cd ~/@value{emacsdir}}
+@group
+] @strong{cd ~/emacs}
] @strong{git clone git://git.savannah.gnu.org/tramp.git}
+@end group
@end example
@noindent
From behind a firewall:
@example
+@group
] @strong{git config --global http.proxy http://user:pwd@@proxy.server.com:8080}
] @strong{git clone http://git.savannah.gnu.org/r/tramp.git}
+@end group
@end example
@noindent
@@ -400,15 +365,17 @@ Tramp developers:
@end example
@noindent
-After one of the above commands, @file{~/@value{emacsdir}/tramp} will
+After one of the above commands, @file{~/emacs/tramp} will
containing the latest version of @value{tramp}.
@noindent
To fetch updates from the repository, use git pull:
@example
-] @strong{cd ~/@value{emacsdir}/tramp}
+@group
+] @strong{cd ~/emacs/tramp}
] @strong{git pull}
+@end group
@end example
@noindent
@@ -416,8 +383,10 @@ Run @command{autoconf} as follows to generate an up-to-date
@file{configure} script:
@example
-] @strong{cd ~/@value{emacsdir}/tramp}
+@group
+] @strong{cd ~/emacs/tramp}
] @strong{autoconf}
+@end group
@end example
@@ -436,23 +405,13 @@ for version control.
April 2000 was the first time when multi-hop methods were added. In
July 2002, @value{tramp} unified file names with Ange-FTP@. In July
2004, proxy hosts replaced multi-hop methods. Running commands on
-remote hosts was introduced in December 2005.
-@ifset emacsgw
-Support for gateways since April 2007.
-@end ifset
-@ifset emacsgvfs
-GVFS integration started in February 2009.
-@end ifset
-@ifset emacs
-Remote commands on Windows hosts since September 2011.
-@end ifset
-Ad-hoc multi-hop methods (with a changed syntax) re-enabled in November
-2011.
-
-In November 2012, added Juergen Hoetzel's @file{tramp-adb.el}.
-
-In December 2001, XEmacs package repository adds @value{tramp}.
+remote hosts was introduced in December 2005. Support for gateways
+since April 2007. GVFS integration started in February 2009. Remote
+commands on Windows hosts since September 2011. Ad-hoc multi-hop
+methods (with a changed syntax) re-enabled in November 2011. In
+November 2012, added Juergen Hoetzel's @file{tramp-adb.el}.
+XEmacs support has been stopped in January 2016.
@c Installation chapter is necessary only in case of standalone
@c installation. Text taken from trampinst.texi.
@@ -469,21 +428,23 @@ In December 2001, XEmacs package repository adds @value{tramp}.
@value{tramp} is initially configured to use the @command{scp} program
to connect to the remote host. Just type @kbd{C-x C-f} and then enter
file name @file{@trampf{user@@host,/path/to.file}}. For details,
-see @xref{Default Method}.
+@xref{Default Method}, @xref{Default User}, @xref{Default Host}.
-For problems related to the behavior of remote shell, see @ref{Remote
-shell setup} for details.
+For problems related to the behavior of the remote shell, @xref{Remote
+shell setup}.
For changing the connection type and file access method from the
-defaults to one of several other options, see (@pxref{Connection
-types}).
+defaults to one of several other options, @xref{Connection types}.
-@strong{Note} that some user options and variables described in these
-examples are not auto loaded by @value{emacsname}. All examples
-require @value{tramp} is installed and loaded:
+@strong{Note} that some user options described in these examples are
+not auto loaded by Emacs. All examples require @value{tramp} is
+installed and loaded:
@lisp
-(require 'tramp)
+@group
+(custom-set-variables
+ '(tramp-verbose 6 nil (tramp) "Enable remote command traces"))
+@end group
@end lisp
@@ -491,12 +452,8 @@ require @value{tramp} is installed and loaded:
* Connection types:: Types of connections to remote hosts.
* Inline methods:: Inline methods.
* External methods:: External methods.
-@ifset emacsgvfs
* GVFS based methods:: GVFS based external methods.
-@end ifset
-@ifset emacsgw
* Gateway methods:: Gateway methods.
-@end ifset
* Default Method:: Selecting a default method.
Here we also try to help those who
don't have the foggiest which method
@@ -529,11 +486,6 @@ they differ in the file access methods. Choosing the right method
becomes important for editing files, transferring large files, or
operating on a large number of files.
-@cindex inline methods
-@cindex external methods
-@cindex methods, inline
-@cindex methods, external
-
The performance of the external methods is generally better than that
of the inline methods, at least for large files. This is caused by
the need to encode and decode the data when transferring inline.
@@ -561,7 +513,7 @@ Inline methods use the same login connection to transfer file
contents. Inline methods are quick and easy for small files. They
depend on the availability of suitable encoding and decoding programs
on the remote host. For local source and destination, @value{tramp}
-may use built-in equivalents of such programs in @value{emacsname}.
+may use built-in equivalents of such programs in Emacs.
Inline methods can work in situations where an external transfer
program is unavailable. Inline methods also work when transferring
@@ -582,8 +534,9 @@ unavailable, @value{tramp} first transfers a small Perl program to the
remote host, and then tries that program for encoding and decoding.
To increase transfer speeds for large text files, use compression
-before encoding. The variable @var{tramp-inline-compress-start-size}
-specifies the file size for such optimization.
+before encoding. The user option
+@option{tramp-inline-compress-start-size} specifies the file size for
+such optimization.
@table @asis
@item @option{rsh}
@@ -593,7 +546,6 @@ specifies the file size for such optimization.
@command{rsh} is an option for connecting to hosts within local
networks since @command{rsh} is not as secure as other methods.
-
@item @option{ssh}
@cindex method ssh
@cindex ssh method
@@ -604,7 +556,7 @@ remote host.
@command{ssh} can also take extra parameters as port numbers. For
example, a host on port 42 is specified as @file{host#42} (the real
host name, a hash sign, then a port number). It is the same as passing
-@code{-p 42} to the @command{ssh} command.
+@samp{-p 42} to the @command{ssh} command.
@item @option{telnet}
@cindex method telnet
@@ -613,7 +565,6 @@ host name, a hash sign, then a port number). It is the same as passing
Connecting to a remote host with @command{telnet} is as insecure
as the @option{rsh} method.
-
@item @option{su}
@cindex method su
@cindex su method
@@ -630,6 +581,22 @@ the host returned by the function @command{(system-name)}. See
Similar to @option{su} method, @option{sudo} uses @command{sudo}.
@command{sudo} must have sufficient rights to start a shell.
+@item @option{doas}
+@cindex method doas
+@cindex doas method
+
+This method is used on OpenBSD like the @command{sudo} command.
+
+@item @option{sg}
+@cindex method sg
+@cindex sg method
+
+The @command{sg} program allows editing as different group. The host
+can be either @samp{localhost} or the host returned by the function
+@command{(system-name)}. The user name must be specified, but it
+denotes a group name. See @ref{Multi-hops} for an exception to this
+behavior.
+
@item @option{sshx}
@cindex method sshx
@cindex sshx method
@@ -666,7 +633,6 @@ This method is also similar to @option{ssh}. It uses the
This is another method from the Kerberos suite. It behaves like @option{su}.
-
@item @option{plink}
@cindex method plink
@cindex plink method
@@ -680,7 +646,6 @@ session.
@option{plink} method supports the @samp{-P} argument.
-
@item @option{plinkx}
@cindex method plinkx
@cindex plinkx method
@@ -757,7 +722,6 @@ is lost if the file exists only on one side of the connection.
This method supports the @samp{-p} argument.
-
@item @option{scpx}---@command{ssh} and @command{scp}
@cindex method scpx
@cindex scpx method
@@ -774,7 +738,6 @@ shell prompts that confuses @value{tramp}.
This method supports the @samp{-p} argument.
-
@item @option{pscp}---@command{plink} and @command{pscp}
@item @option{psftp}---@command{plink} and @command{psftp}
@cindex method pscp
@@ -798,7 +761,6 @@ session.
These methods support the @samp{-P} argument.
-
@item @option{fcp}---@command{fsh} and @command{fcp}
@cindex method fcp
@cindex fcp method
@@ -839,13 +801,8 @@ decode programs.
@cindex ftp method
When @value{tramp} uses @option{ftp}, it forwards requests to whatever
-ftp program is specified by @value{ftppackagename}. This external
-program must be capable of servicing requests from @value{tramp}.
-
-@ifset xemacs
-This method works only for unified file names, see @ref{Issues}.
-@end ifset
-
+ftp program is specified by Ange FTP. This external program must be
+capable of servicing requests from @value{tramp}.
@item @option{smb}---@command{smbclient}
@cindex method smb
@@ -866,7 +823,7 @@ Since SMB shares end in the @code{$} character, @value{tramp} must use
substitutions.
When @value{tramp} is not specific about the share name or uses the
-generic remote directory @code{/}, @command{smbclient} returns all
+generic remote directory @file{/}, @command{smbclient} returns all
available shares.
Since SMB authentication is based on each SMB share, @value{tramp}
@@ -905,9 +862,9 @@ uses the anonymous user (without prompting for password). This
behavior is unlike other @value{tramp} methods, where local user name
is substituted.
-The @option{smb} method is unavailable if @value{emacsname} is run under a
-local user authentication context in MS Windows. However such users
-can still access remote files using UNC file names instead of @value{tramp}:
+The @option{smb} method is unavailable if Emacs is run under a local
+user authentication context in MS Windows. However such users can
+still access remote files using UNC file names instead of @value{tramp}:
@example
//melancholia/daniel$$/.emacs
@@ -925,20 +882,20 @@ can.
This method uses Android Debug Bridge program for accessing Android
devices. The Android Debug Bridge must be installed locally for
@value{tramp} to work. Some GNU/Linux distributions provide Android
-Debug Bridge as an installation package. Alternatively, the program is
-installed as part of the Android SDK@. @value{tramp} finds the
+Debug Bridge as an installation package. Alternatively, the program
+is installed as part of the Android SDK@. @value{tramp} finds the
@command{adb} program either via the @env{PATH} environment variable
-or the absolute path set in the variable @var{tramp-adb-program}.
+or the absolute path set in the user option @option{tramp-adb-program}.
@value{tramp} connects to Android devices with @option{adb} only when
-the custom option @option{tramp-adb-connect-if-not-connected} is not
+the user option @option{tramp-adb-connect-if-not-connected} is not
@code{nil}. Otherwise, the connection must be established outside
-@value{emacsname}.
+Emacs.
@value{tramp} does not require a host name part of the remote file
name when a single Android device is connected to @command{adb}.
-@value{tramp} instead uses @file{@trampfn{adb,,}} as the default
-name. @command{adb devices} shows available host names.
+@value{tramp} instead uses @file{@trampfn{adb,,}} as the default name.
+@command{adb devices} shows available host names.
@option{adb} method normally does not need user name to authenticate
on the Android device because it runs under the @command{adbd}
@@ -955,7 +912,6 @@ numbers are not applicable to Android devices connected through USB@.
@end table
-@ifset emacsgvfs
@node GVFS based methods
@section GVFS based external methods
@cindex methods, gvfs
@@ -967,9 +923,9 @@ GVFS is the virtual file system for the Gnome Desktop,
mounted locally through FUSE and @value{tramp} uses this locally
mounted directory internally.
-@value{emacsname} uses the D-Bus mechanism to communicate with GVFS@.
-@value{emacsname} must have the message bus system, D-Bus integration
-active, @pxref{Top, , D-Bus, dbus}.
+Emacs uses the D-Bus mechanism to communicate with GVFS@. Emacs must
+have the message bus system, D-Bus integration active, @pxref{Top, ,
+D-Bus, dbus}.
@table @asis
@item @option{afp}
@@ -992,6 +948,22 @@ syntax requires a leading volume (share) name, for example:
based on standard protocols, such as HTTP@. @option{davs} does the same
but with SSL encryption. Both methods support the port numbers.
+@item @option{gdrive}
+@cindex method gdrive
+@cindex gdrive method
+@cindex Google Drive
+
+Via the @option{gdrive} method it is possible to access your Google
+Drive online storage. User and host name of the remote file name are
+your email address of the Google Drive credentials, like
+@file{@trampfn{gdrive,john.doe@@gmail.com,/}}. These credentials must
+be populated in your @command{Online Accounts} application outside Emacs.
+
+Since Google Drive uses cryptic blob file names internally,
+@value{tramp} works with the @code{display-name} of the files. This
+could produce unexpected behavior in case two files in the same
+directory have the same @code{display-name}, such a situation must be avoided.
+
@item @option{obex}
@cindex method obex
@cindex obex method
@@ -999,7 +971,6 @@ but with SSL encryption. Both methods support the port numbers.
OBEX is an FTP-like access protocol for cell phones and similar simple
devices. @value{tramp} supports OBEX over Bluetooth.
-
@item @option{sftp}
@cindex method sftp
@cindex sftp method
@@ -1019,16 +990,13 @@ requires the SYNCE-GVFS plugin.
@end table
@defopt tramp-gvfs-methods
-@vindex tramp-gvfs-methods
-This custom option is a list of external methods for GVFS@. By
-default, this list includes @option{afp}, @option{dav}, @option{davs},
-@option{obex}, @option{sftp} and @option{synce}. Other methods to
-include are: @option{ftp} and @option{smb}.
+This user option is a list of external methods for GVFS@. By default,
+this list includes @option{afp}, @option{dav}, @option{davs},
+@option{gdrive}, @option{obex}, @option{sftp} and @option{synce}.
+Other methods to include are: @option{ftp} and @option{smb}.
@end defopt
-@end ifset
-@ifset emacsgw
@node Gateway methods
@section Gateway methods
@cindex methods, gateway
@@ -1061,7 +1029,6 @@ For authentication, this protocol uses only @option{Basic
Authentication} (see RFC 2617). When no port number is specified, this
protocol defaults to @option{8080}.
-
@item @option{socks}
@cindex method socks
@cindex socks method
@@ -1073,27 +1040,27 @@ The default port number for the socks server is @option{1080}, if not
specified otherwise.
@end table
-@end ifset
@node Default Method
@section Selecting a default method
@cindex default method
-@vindex tramp-default-method
-@vindex tramp-default-method-alist
-Default method is for transferring files. The variable
-@code{tramp-default-method} sets it. @value{tramp} uses this variable
-to determine the default method for tramp file names that do not have
-one specified.
+@defopt tramp-default-method
+Default method is for transferring files. The user option
+@option{tramp-default-method} sets it. @value{tramp} uses this user
+option to determine the default method for remote file names that do
+not have one specified.
@lisp
-(setq tramp-default-method "ssh")
+(custom-set-variables '(tramp-default-method "ssh" nil (tramp)))
@end lisp
+@end defopt
+@defopt tramp-default-method-alist
Default methods for transferring files can be customized for specific
-user and host combinations through the alist variable
-@code{tramp-default-method-alist}.
+user and host combinations through the user option
+@option{tramp-default-method-alist}.
For example, the following two lines specify to use the @option{ssh}
method for all user names matching @samp{john} and the @option{rsync}
@@ -1102,22 +1069,18 @@ specifies to use the @option{su} method for the user @samp{root} on
the host @samp{localhost}.
@lisp
+@group
(add-to-list 'tramp-default-method-alist '("" "john" "ssh"))
(add-to-list 'tramp-default-method-alist '("lily" "" "rsync"))
(add-to-list 'tramp-default-method-alist
'("\\`localhost\\'" "\\`root\\'" "su"))
+@end group
@end lisp
+@end defopt
@noindent
-See the documentation for the variable
-@code{tramp-default-method-alist} for details.
-
-@noindent
-External methods performance faster for large files.
-
-@noindent
-@xref{Inline methods}.
-@xref{External methods}.
+External methods performance faster for large files. @pxref{Inline
+methods}. @pxref{External methods}.
Choosing the access method also depends on the security environment.
For example, @option{rsh} and @option{telnet} methods that use clear
@@ -1169,85 +1132,91 @@ improvement is not always true.
@node Default User
@section Selecting a default user
@cindex default user
-@vindex tramp-default-user
-@vindex tramp-default-user-alist
+@defopt tramp-default-user
@value{tramp} file name can omit the user name part since
@value{tramp} substitutes the currently logged-in user name. However
-this substitution can be overridden with @code{tramp-default-user}.
+this substitution can be overridden with @option{tramp-default-user}.
For example:
@lisp
-(setq tramp-default-user "root")
+(custom-set-variables'(tramp-default-user "root" nil (tramp)))
@end lisp
+@end defopt
-Instead of a single default user, @code{tramp-default-user-alist}
+@defopt tramp-default-user-alist
+Instead of a single default user, @option{tramp-default-user-alist}
allows multiple default user values based on access method or host
name combinations. The alist can hold multiple values. For example, to
use the @samp{john} as the default user for the domain
@samp{somewhere.else} only:
@lisp
+@group
(add-to-list 'tramp-default-user-alist
'("ssh" ".*\\.somewhere\\.else\\'" "john"))
+@end group
@end lisp
-@noindent
-See the documentation for the variable @code{tramp-default-user-alist}
-for more details.
-
A Caution: @value{tramp} will override any default user specified in
-the configuration files outside @value{emacsname}, such as
-@file{~/.ssh/config}. To stop @value{tramp} from applying the default
-value, set the corresponding alist entry to nil:
+the configuration files outside Emacs, such as @file{~/.ssh/config}.
+To stop @value{tramp} from applying the default value, set the
+corresponding alist entry to nil:
@lisp
+@group
(add-to-list 'tramp-default-user-alist
'("ssh" "\\`here\\.somewhere\\.else\\'" nil))
+@end group
@end lisp
-The last entry in @code{tramp-default-user-alist} should be reserved
+The last entry in @option{tramp-default-user-alist} should be reserved
for catch-all or most often used login.
@lisp
+@group
(add-to-list 'tramp-default-user-alist
'(nil nil "jonas") t)
+@end group
@end lisp
+@end defopt
@node Default Host
@section Selecting a default host
@cindex default host
-@vindex tramp-default-host
-@vindex tramp-default-host-alist
+@defopt tramp-default-host
When host name is omitted, @value{tramp} substitutes the value from
-the @code{tramp-default-host} variable. It is initially populated with
-the local hostname where @value{emacsname} is running. Both the
+the @option{tramp-default-host} user option. It is initially
+populated with the local hostname where Emacs is running. Both the
default user and default host can be overridden as follows:
@lisp
-(setq tramp-default-user "john"
- tramp-default-host "target")
+@group
+(custom-set-variables
+ '(tramp-default-user "john" nil (tramp))
+ '(tramp-default-host "target" nil (tramp)))
+@end group
@end lisp
With both defaults set, @samp{@trampfn{ssh,,}} will connect
-@value{tramp} to John's home directory on target.
+@value{tramp} to John's home directory on @code{target}.
-@ifset emacs
@strong{Note} @samp{/::} won't work, because @samp{/:} is the prefix
for quoted file names.
-@end ifset
+@ifinfo
+@pxref{Quoted File Names, , , emacs}.
+@end ifinfo
+@end defopt
-Instead of a single default host, @code{tramp-default-host-alist}
+@defopt tramp-default-host-alist
+Instead of a single default host, @option{tramp-default-host-alist}
allows multiple default host values based on access method or user
name combinations. The alist can hold multiple values. While
-@code{tramp-default-host} is sufficient in most cases, some methods,
+@option{tramp-default-host} is sufficient in most cases, some methods,
like @option{adb}, require defaults overwritten.
-
-@noindent
-See the documentation for the variable @code{tramp-default-host-alist}
-for more details.
+@end defopt
@node Multi-hops
@@ -1263,10 +1232,9 @@ hop kind, where the start and end points of the connection did not
have intermediate check points.
@defopt tramp-default-proxies-alist
-@vindex tramp-default-proxies-alist
@option{tramp-default-proxies-alist} specifies proxy hosts to pass
-through. This variable is list of triples consisting of (@var{host}
-@var{user} @var{proxy}).
+through. This user option is list of triples consisting of
+@code{(@var{host} @var{user} @var{proxy})}.
The first match is the proxy host through which passes the file name
and the target host matching @var{user}@@@var{host}. @var{host} and
@@ -1276,13 +1244,8 @@ regular expression which always matches.
@var{proxy} is a literal @value{tramp} file name whose local name part
is ignored, and the method and user name parts are optional.
-@ifset emacsgw
The method must be an inline or gateway method (@pxref{Inline
methods}, @pxref{Gateway methods}).
-@end ifset
-@ifclear emacsgw
-The method must be an inline method (@pxref{Inline methods}).
-@end ifclear
If @var{proxy} is @code{nil}, no additional hop is required reaching
@var{user}@@@var{host}.
@@ -1290,10 +1253,12 @@ For example, to pass through the host @samp{bastion.your.domain} as
user @samp{bird} to reach remote hosts outside the local domain:
@lisp
+@group
(add-to-list 'tramp-default-proxies-alist
'("\\." nil "@trampfn{ssh,bird@@bastion.your.domain,}"))
(add-to-list 'tramp-default-proxies-alist
'("\\.your\\.domain\\'" nil nil))
+@end group
@end lisp
@strong{Note}: @code{add-to-list} adds elements at the beginning of a
@@ -1304,10 +1269,12 @@ called @samp{jump.your.domain}, which is the only host allowed to
connect to @samp{bastion.your.domain}, then:
@lisp
+@group
(add-to-list 'tramp-default-proxies-alist
'("\\`bastion\\.your\\.domain\\'"
"\\`bird\\'"
"@trampfn{ssh,jump.your.domain,}"))
+@end group
@end lisp
@var{proxy} can take patterns @code{%h} or @code{%u} for @var{host} or
@@ -1318,13 +1285,15 @@ To login as @samp{root} on remote hosts in the domain
access, then use this alist entry:
@lisp
+@group
(add-to-list 'tramp-default-proxies-alist
'("\\.your\\.domain\\'" "\\`root\\'" "@trampfn{ssh,%h,}"))
+@end group
@end lisp
-Opening @file{@trampfn{sudo,randomhost.your.domain,}} first
-connects to @samp{randomhost.your.domain} via @code{ssh} under your
-account name, and then perform @code{sudo -u root} on that host.
+Opening @file{@trampfn{sudo,randomhost.your.domain,}} first connects
+to @samp{randomhost.your.domain} via @code{ssh} under your account
+name, and then perform @code{sudo -u root} on that host.
It is key for the sudo method in the above example to be applied on
the host after reaching it and not on the local host.
@@ -1337,17 +1306,18 @@ local one, first connect via @command{ssh}, and then apply
@command{sudo -u root}:
@lisp
+@group
(add-to-list 'tramp-default-proxies-alist
'(nil "\\`root\\'" "@trampfn{ssh,%h,}"))
(add-to-list 'tramp-default-proxies-alist
'((regexp-quote (system-name)) nil nil))
+@end group
@end lisp
The above configuration allows @value{tramp} connection as @samp{root}
to remote Ubuntu hosts.
-@ifset emacsgw
-@code{tramp-default-proxies-alist} is also used for passing through
+@option{tramp-default-proxies-alist} is also used for passing through
firewalls or proxy servers.
For example, the local host @samp{proxy.your.domain} on port 3128
@@ -1361,13 +1331,14 @@ such a port, like 443 (https). See
discussion of ethical issues.} Then the configuration is:
@lisp
+@group
(add-to-list 'tramp-default-proxies-alist
'("\\`host\\.other\\.domain\\'" nil
"@trampfn{tunnel,proxy.your.domain#3128,}"))
+@end group
@end lisp
Gateway methods in a multiple hop chain can be declared only as the first hop.
-@end ifset
@end defopt
Passing through hops involves dealing with restricted shells, such as
@@ -1375,7 +1346,6 @@ Passing through hops involves dealing with restricted shells, such as
them for proxies only.
@defopt tramp-restricted-shell-hosts-alist
-@vindex tramp-restricted-shell-hosts-alist
An alist of regular expressions of hosts running restricted shells,
such as @command{rbash}. @value{tramp} will then use them only as
proxies.
@@ -1384,8 +1354,10 @@ To specify the bastion host from the example above as running a
restricted shell:
@lisp
+@group
(add-to-list 'tramp-restricted-shell-hosts-alist
"\\`bastion\\.your\\.domain\\'")
+@end group
@end lisp
@end defopt
@@ -1424,10 +1396,12 @@ This function returns the list of completion functions for @var{method}.
Example:
@example
+@group
(tramp-get-completion-function "rsh")
@result{} ((tramp-parse-rhosts "/etc/hosts.equiv")
(tramp-parse-rhosts "~/.rhosts"))
+@end group
@end example
@end defun
@@ -1437,12 +1411,14 @@ for @var{method}.
Example:
@example
+@group
(tramp-set-completion-function "ssh"
'((tramp-parse-sconfig "/etc/ssh_config")
(tramp-parse-sconfig "~/.ssh/config")))
@result{} ((tramp-parse-sconfig "/etc/ssh_config")
(tramp-parse-sconfig "~/.ssh/config"))
+@end group
@end example
@end defun
@@ -1464,7 +1440,7 @@ This function parses files which are syntactical equivalent to
in such files, it can return host names only.
@item @code{tramp-parse-sconfig}
-@findex tramp-parse-shosts
+@findex tramp-parse-sconfig
This function returns the host nicknames defined by @code{Host} entries
in @file{~/.ssh/config} style files.
@@ -1478,7 +1454,7 @@ SSH2 parsing of directories @file{/etc/ssh2/hostkeys/*} and
are always @code{nil}.
@item @code{tramp-parse-sknownhosts}
-@findex tramp-parse-shostkeys
+@findex tramp-parse-sknownhosts
Another SSH2 style parsing of directories like
@file{/etc/ssh2/knownhosts/*} and @file{~/ssh2/knownhosts/*}. This
@@ -1495,6 +1471,11 @@ A function dedicated to @file{/etc/hosts} for host names.
A function which parses @file{/etc/passwd} files for user names.
+@item @code{tramp-parse-etc-group}
+@findex tramp-parse-etc-group
+
+A function which parses @file{/etc/group} files for group names.
+
@item @code{tramp-parse-netrc}
@findex tramp-parse-netrc
@@ -1513,9 +1494,11 @@ taken as candidates for completion for user and host names.
Example:
@example
+@group
(my-tramp-parse "~/.my-tramp-hosts")
@result{} ((nil "toto") ("daniel" "melancholia"))
+@end group
@end example
@end defun
@@ -1563,27 +1546,14 @@ Setting @code{auth-source-debug} to @code{t} to debug messages.
the same user or host name independent of the access method.
@vindex password-cache-expiry
-
@code{password-cache-expiry} sets the duration (in seconds) the
passwords are remembered. Passwords are never saved permanently nor
-can they extend beyond the lifetime of the current @value{emacsname}
-session. Set @code{password-cache-expiry} to @code{nil} to disable
-expiration.
+can they extend beyond the lifetime of the current Emacs session. Set
+@code{password-cache-expiry} to @code{nil} to disable expiration.
@vindex password-cache
-
Set @code{password-cache} to @code{nil} to disable password caching.
-@strong{Implementation Note}: password caching depends on
-@file{password-cache.el} package. @value{tramp} activates password
-caching only if @value{tramp} can discover, while @value{emacsname} is
-loading, the package through @code{load-path}.
-
-@ifset installchapter
-@file{password.el} is available from No Gnus or from the @value{tramp}
-@file{contrib} directory, see @ref{Installation parameters}.
-@end ifset
-
@node Connection caching
@section Reusing connection related information
@@ -1591,22 +1561,17 @@ loading, the package through @code{load-path}.
@vindex tramp-persistency-file-name
For faster initial connection times, @value{tramp} stores previous
-connection properties in a file specified by the variable
-@code{tramp-persistency-file-name}.
+connection properties in a file specified by the user option
+@option{tramp-persistency-file-name}.
-The default file name for @code{tramp-persistency-file-name} is:
-@ifset emacs
+The default file name for @option{tramp-persistency-file-name} is
@file{~/.emacs.d/tramp}.
-@end ifset
-@ifset xemacs
-@file{~/.xemacs/tramp}.
-@end ifset
-@value{tramp} reads this file during @value{emacsname} startup, and
-writes to it when exiting @value{emacsname}. Delete this file for
-@value{tramp} to recreate a new one on next @value{emacsname} startup.
+@value{tramp} reads this file during Emacs startup, and writes to it
+when exiting Emacs. Delete this file for @value{tramp} to recreate a
+new one on next Emacs startup.
-Set @code{tramp-persistency-file-name} to @code{nil} to disable
+Set @option{tramp-persistency-file-name} to @code{nil} to disable
storing connections persistently.
To reuse connection information from the persistent list,
@@ -1633,11 +1598,12 @@ connection related information for that host and creates a new entry.
For more precise customization, parameters specified by
@code{tramp-methods} can be overwritten manually.
-Set @code{tramp-connection-properties} to manually override
+Set @option{tramp-connection-properties} to manually override
@code{tramp-methods}. Properties in this list are in the form
-@code{(@var{regexp} @var{property} @var{value})}. @var{regexp} matches
-remote file names. Use @code{nil} to match all. @var{property} is the
-property's name, and @var{value} is the property's value.
+@code{(@var{regexp} @var{property} @var{value})}. @var{regexp}
+matches remote file names. Use @code{nil} to match all.
+@var{property} is the property's name, and @var{value} is the
+property's value.
@var{property} is any method specific parameter contained in
@code{tramp-methods}. The parameter key in @code{tramp-methods} is a
@@ -1646,12 +1612,17 @@ string @samp{<foo>} for @var{property}. For example, this changes the
remote shell:
@lisp
+@group
(add-to-list 'tramp-connection-properties
(list (regexp-quote "@trampfn{ssh,user@@randomhost.your.domain,}")
"remote-shell" "/bin/ksh"))
+@end group
+
+@group
(add-to-list 'tramp-connection-properties
(list (regexp-quote "@trampfn{ssh,user@@randomhost.your.domain,}")
"remote-shell-login" '("-")))
+@end group
@end lisp
The parameters @code{tramp-remote-shell} and
@@ -1659,15 +1630,17 @@ The parameters @code{tramp-remote-shell} and
values for the remote host.
@var{property} could also be any property found in
-@code{tramp-persistency-file-name}.
+@option{tramp-persistency-file-name}.
To get around how restricted shells randomly drop connections, set the
special property @samp{busybox}. For example:
@lisp
+@group
(add-to-list 'tramp-connection-properties
(list (regexp-quote "@trampfn{ssh,user@@randomhost.your.domain,}")
"busybox" t))
+@end group
@end lisp
@@ -1686,12 +1659,10 @@ To improve performance and accuracy of remote file access,
@command{grep} when available.
@defopt tramp-remote-path
-@vindex tramp-remote-path
-@vindex tramp-default-remote-path
-@vindex tramp-own-remote-path
@option{tramp-remote-path} specifies which remote directory paths
@value{tramp} can search for @ref{Remote programs}.
+@vindex tramp-default-remote-path
@value{tramp} uses standard defaults, such as @file{/bin} and
@file{/usr/bin}, which are reasonable for most hosts. To accommodate
differences in hosts and paths, for example, @file{/bin:/usr/bin} on
@@ -1708,21 +1679,25 @@ shown below for @value{tramp} to use when connecting.
(add-to-list 'tramp-remote-path "/usr/local/perl/bin")
@end lisp
+@vindex tramp-own-remote-path
Another way to find the remote path is to use the path assigned to the
remote user by the remote host. @value{tramp} does not normally retain
-this remote path after logging. However, @code{tramp-own-remote-path}
+this remote path after login. However, @code{tramp-own-remote-path}
preserves the path value, which can be used to update
-@code{tramp-remote-path}.
+@option{tramp-remote-path}.
@lisp
(add-to-list 'tramp-remote-path 'tramp-own-remote-path)
@end lisp
+
+@strong{Note} that this works only if your remote @command{/bin/sh}
+shell supports the login argument @samp{-l}.
@end defopt
When remote search paths are changed, local @value{tramp} caches must
be recomputed. To force @value{tramp} to recompute afresh, exit
-@value{emacsname}, remove the persistent file (@pxref{Connection
-caching}), and restart @value{emacsname}.
+Emacs, remove the persistent file (@pxref{Connection caching}), and
+restart Emacs.
@node Remote shell setup
@@ -1753,42 +1728,47 @@ login security, especially not the exotic ones. However, @value{tramp}
provides a few tweaks to address the most common ones.
@table @asis
-@item @var{tramp-shell-prompt-pattern}
+@item @option{tramp-shell-prompt-pattern}
@vindex tramp-shell-prompt-pattern
-@code{tramp-shell-prompt-pattern} is for remote login shell prompt,
+@option{tramp-shell-prompt-pattern} is for remote login shell prompt,
which may not be the same as the local login shell prompt,
@code{shell-prompt-pattern}. Since most hosts use identical prompts,
@value{tramp} sets a similar default value for both prompts.
-@item @var{tramp-password-prompt-regexp}
-@item @var{tramp-wrong-passwd-regexp}
+@item @option{tramp-password-prompt-regexp}
+@item @option{tramp-wrong-passwd-regexp}
@vindex tramp-password-prompt-regexp
@vindex tramp-wrong-passwd-regexp
-@value{tramp} uses @var{tramp-password-prompt-regexp} to distinguish
-between prompts for passwords and prompts for passphrases. By default,
-@var{tramp-password-prompt-regexp} handles the detection in English
-language environments. See a localization example below:
+@value{tramp} uses @option{tramp-password-prompt-regexp} to
+distinguish between prompts for passwords and prompts for passphrases.
+By default, @option{tramp-password-prompt-regexp} handles the
+detection in English language environments. See a localization
+example below:
@lisp
-(setq
- tramp-password-prompt-regexp
- (concat
- "^.*"
- (regexp-opt
- '("passphrase" "Passphrase"
- ;; English
- "password" "Password"
- ;; Deutsch
- "passwort" "Passwort"
- ;; Français
- "mot de passe" "Mot de passe") t)
- ".*:\0? *"))
+@group
+(custom-set-variables
+ '(tramp-password-prompt-regexp
+ (concat
+ "^.*"
+ (regexp-opt
+ '("passphrase" "Passphrase"
+ ;; English
+ "password" "Password"
+ ;; Deutsch
+ "passwort" "Passwort"
+ ;; Français
+ "mot de passe" "Mot de passe")
+ t)
+ ".*:\0? *")
+ nil (tramp)))
+@end group
@end lisp
Similar localization may be necessary for handling wrong password
-prompts, for which @value{tramp} uses @var{tramp-wrong-passwd-regexp}.
+prompts, for which @value{tramp} uses @option{tramp-wrong-passwd-regexp}.
@item @command{tset} and other questions
@cindex Unix command tset
@@ -1797,8 +1777,8 @@ prompts, for which @value{tramp} uses @var{tramp-wrong-passwd-regexp}.
To suppress inappropriate prompts for terminal type, @value{tramp}
sets the @env{TERM} to @code{dumb} before the remote login process
-begins via the variable @code{tramp-terminal-type}. This will silence
-common @command{tset} related prompts.
+begins via the user option @option{tramp-terminal-type}. This will
+silence common @command{tset} related prompts.
@value{tramp}'s strategy for handling such prompts (commonly triggered
from login scripts on remote hosts) is to set the environment
@@ -1806,26 +1786,31 @@ variables so that no prompts interrupt the shell initialization
process.
@vindex tramp-actions-before-shell
-
An alternative approach is to configure @value{tramp} with strings
that can identify such questions using
@code{tramp-actions-before-shell}. Example:
@lisp
+@group
(defconst my-tramp-prompt-regexp
(concat (regexp-opt '("Enter the birth date of your mother:") t)
"\\s-*")
"Regular expression matching my login prompt question.")
+@end group
+@group
(defun my-tramp-action (proc vec)
"Enter \"19000101\" in order to give a correct answer."
(save-window-excursion
(with-current-buffer (tramp-get-connection-buffer vec)
(tramp-message vec 6 "\n%s" (buffer-string))
(tramp-send-string vec "19000101"))))
+@end group
+@group
(add-to-list 'tramp-actions-before-shell
'(my-tramp-prompt-regexp my-tramp-action))
+@end group
@end lisp
@@ -1886,16 +1871,16 @@ follows:
Then re-set the prompt string in @file{~/.emacs_SHELLNAME} as follows:
@example
+@group
# Reset the prompt for remote Tramp shells.
if [ "$@{INSIDE_EMACS/*tramp*/tramp@}" == "tramp" ] ; then
PS1="[\u@@\h \w]$ "
fi
+@end group
@end example
@ifinfo
-@ifset emacs
-@xref{Interactive Shell, , , @value{emacsdir}}.
-@end ifset
+@xref{Interactive Shell, , , emacs}.
@end ifinfo
@item @command{busybox} / @command{nc}
@@ -1910,13 +1895,16 @@ install and execute a listener as follows (see @code{tramp-methods}):
@end example
The above command-line syntax has changed with @command{busybox}
-versions. If @command{nc} refuses the @command{-p} parameter, then
+versions. If @command{nc} refuses the @samp{-p} parameter, then
overwrite as follows:
@lisp
+@group
(add-to-list
'tramp-connection-properties
- `(,(regexp-quote "192.168.0.1") "remote-copy-args" (("-l") ("%r"))))
+ `(,(regexp-quote "192.168.0.1")
+ "remote-copy-args" (("-l") ("%r"))))
+@end group
@end lisp
@noindent
@@ -1938,13 +1926,15 @@ Applications such as @code{SSHDroid} that run @command{sshd} process
on the Android device can accept any @option{ssh}-based methods
provided these settings are adjusted:
-@code{sh} must be specified for remote shell since Android devices do
-not provide @code{/bin/sh}. @code{sh} will then invoke whatever shell is
-installed on the device with this setting:
+@command{sh} must be specified for remote shell since Android devices
+do not provide @command{/bin/sh}. @command{sh} will then invoke
+whatever shell is installed on the device with this setting:
@lisp
+@group
(add-to-list 'tramp-connection-properties
(list (regexp-quote "192.168.0.26") "remote-shell" "sh"))
+@end group
@end lisp
@noindent
@@ -1956,8 +1946,10 @@ user settings. Android devices prefer @file{/system/xbin} path over
@file{/system/bin}. Both of these are set as follows:
@lisp
+@group
(add-to-list 'tramp-remote-path 'tramp-own-remote-path)
(add-to-list 'tramp-remote-path "/system/xbin")
+@end group
@end lisp
@noindent
@@ -1970,17 +1962,19 @@ directory for temporary files:
@noindent
Open a remote connection with the command @kbd{C-x C-f
-@trampfn{ssh,192.168.0.26#2222,}}, where @command{sshd} is listening on port
-@samp{2222}.
+@trampfn{ssh,192.168.0.26#2222,}}, where @command{sshd} is listening
+on port @samp{2222}.
To add a corresponding entry to the @file{~/.ssh/config} file
(recommended), use this:
@example
+@group
Host android
HostName 192.168.0.26
User root
Port 2222
+@end group
@end example
@noindent
@@ -1988,8 +1982,10 @@ To use the host name @samp{android} instead of the IP address shown in
the previous example, fix the connection properties as follows:
@lisp
+@group
(add-to-list 'tramp-connection-properties
(list (regexp-quote "android") "remote-shell" "sh"))
+@end group
@end lisp
@noindent
@@ -2001,64 +1997,40 @@ Open a remote connection with a more concise command @kbd{C-x C-f
@section Auto-save and Backup configuration
@cindex auto-save
@cindex backup
-@ifset emacs
@vindex backup-directory-alist
-@end ifset
-@ifset xemacs
-@vindex bkup-backup-directory-info
-@end ifset
-To avoid @value{tramp} from saving backup files owned by root to
-locations accessible to others, default backup settings in
-@ifset emacs
-@code{backup-directory-alist}
-@end ifset
-@ifset xemacs
-@code{bkup-backup-directory-info}
-@end ifset
-have to be altered.
+To avoid @value{tramp} from saving backup files owned by @samp{root}
+to locations accessible to others, default backup settings in
+@option{backup-directory-alist} have to be altered.
-Here's a scenario where files could be inadvertently
-exposed. @value{emacsname} by default writes backup files to the same
-directory as the original files unless changed to another location,
-such as @file{~/.emacs.d/backups/}. Such a directory will also be used
-by default by @value{tramp} when using, say, a restricted file
+Here's a scenario where files could be inadvertently exposed. Emacs
+by default writes backup files to the same directory as the original
+files unless changed to another location, such as
+@file{~/.emacs.d/backups/}. Such a directory will also be used by
+default by @value{tramp} when using, say, a restricted file
@file{@trampfn{su,root@@localhost,/etc/secretfile}}. The backup file
-of the secretfile is now owned by the user logged in from tramp and
-not root.
+of the secretfile is now owned by the user logged in from
+@value{tramp} and not @samp{root}.
-When
-@ifset emacs
-@code{backup-directory-alist}
-@end ifset
-@ifset xemacs
-@code{bkup-backup-directory-info}
-@end ifset
-is @code{nil} (the default), such problems do not occur.
+When @option{backup-directory-alist} is @code{nil} (the default), such
+problems do not occur.
To ``turn off'' the backup feature for @value{tramp} files and stop
@value{tramp} from saving to the backup directory, use this:
-@ifset emacs
@lisp
+@group
(add-to-list 'backup-directory-alist
(cons tramp-file-name-regexp nil))
+@end group
@end lisp
-@end ifset
-@ifset xemacs
-@lisp
-(require 'backup-dir)
-(add-to-list 'bkup-backup-directory-info
- (list tramp-file-name-regexp ""))
-@end lisp
-@end ifset
-@ifset emacs
@noindent
Disabling backups can be targeted to just the @option{su} and
@option{sudo} methods:
@lisp
+@group
(setq backup-enable-predicate
(lambda (name)
(and (normal-backup-enable-predicate name)
@@ -2066,27 +2038,15 @@ Disabling backups can be targeted to just the @option{su} and
(let ((method (file-remote-p name 'method)))
(when (stringp method)
(member method '("su" "sudo"))))))))
+@end group
@end lisp
-@end ifset
Another option is to create better backup file naming with user and
host names prefixed to the file name. For example, transforming
@file{/etc/secretfile} to
@file{~/.emacs.d/backups/!su:root@@localhost:!etc!secretfile}, set the
-@value{tramp} variable
-@ifset emacs
-@code{tramp-backup-directory-alist}
-@end ifset
-@ifset xemacs
-@code{tramp-bkup-backup-directory-info}
-@end ifset
-from the existing variable
-@ifset emacs
-@code{backup-directory-alist}.
-@end ifset
-@ifset xemacs
-@code{bkup-backup-directory-info}.
-@end ifset
+@value{tramp} user option @option{tramp-backup-directory-alist} from
+the existing user option @option{backup-directory-alist}.
Then @value{tramp} backs up to a file name that is transformed with a
prefix consisting of the DIRECTORY name. This file name prefixing
@@ -2095,51 +2055,38 @@ happens only when the DIRECTORY is an absolute local file name.
@noindent
Example:
-@ifset emacs
@lisp
+@group
(add-to-list 'backup-directory-alist
(cons "." "~/.emacs.d/backups/"))
-(setq tramp-backup-directory-alist backup-directory-alist)
-@end lisp
-@end ifset
-@ifset xemacs
-@lisp
-(require 'backup-dir)
-(add-to-list 'bkup-backup-directory-info
- (list "." "~/.emacs.d/backups/" 'full-path))
-(setq tramp-bkup-backup-directory-info bkup-backup-directory-info)
+(custom-set-variables
+ '(tramp-backup-directory-alist backup-directory-alist 6 nil (tramp)))
+@end group
@end lisp
-@end ifset
@noindent
The backup file name of
@file{@trampfn{su,root@@localhost,/etc/secretfile}} would be
-@ifset emacs
+@ifset unified
@file{@trampfn{su,root@@localhost,~/.emacs.d/backups/!su:root@@localhost:!etc!secretfile~}}
@end ifset
-@ifset xemacs
+@ifset separate
@file{@trampfn{su,root@@localhost,~/.emacs.d/backups/![su!root@@localhost]!etc!secretfile~}}
@end ifset
Just as for backup files, similar issues of file naming affect
-auto-saving @value{tramp} files.
-@ifset emacs
-Auto-saved files are saved in the directory specified by the variable
-@code{auto-save-file-name-transforms}. By default this is set to the
-local temporary directory. But in some versions of Debian GNU/Linux,
-this points to the source directory where the @value{emacsname} was
-compiled. Reset such values to a valid directory.
-
-Set @code{auto-save-file-name-transforms} to @code{nil} to save
+auto-saving @value{tramp} files. Auto-saved files are saved in the
+directory specified by the user option
+@option{auto-save-file-name-transforms}. By default this is set to
+the local temporary directory. But in some versions of Debian
+GNU/Linux, this points to the source directory where the Emacs was
+compiled. Reset such values to a valid directory.
+
+Set @option{auto-save-file-name-transforms} to @code{nil} to save
auto-saved files to the same directory as the original file.
-Alternatively, set the variable @code{tramp-auto-save-directory} to
-direct all auto saves to that location.
-@end ifset
-@ifset xemacs
-@code{auto-save-directory} can also be used here instead of other
-locations specified above.
-@end ifset
+Alternatively, set the user option @option{tramp-auto-save-directory}
+to direct all auto saves to that location.
@node Windows setup hints
@section Issues with Cygwin ssh
@@ -2150,9 +2097,9 @@ This section is incomplete. Please share your solutions.
@cindex method sshx with Cygwin
@cindex sshx method with Cygwin
-Cygwin's @command{ssh} works only with a Cygwin version of
-@value{emacsname}. To check for compatibility: type @kbd{M-x eshell}, and
-start @kbd{ssh test.host}. Incompatibilities trigger this message:
+Cygwin's @command{ssh} works only with a Cygwin version of Emacs. To
+check for compatibility: type @kbd{M-x eshell}, and start @kbd{ssh
+test.host}. Incompatibilities trigger this message:
@example
Pseudo-terminal will not be allocated because stdin is not a terminal.
@@ -2166,7 +2113,7 @@ Some older versions of Cygwin's @command{ssh} work with the
@cindex method scpx with Cygwin
@cindex scpx method with Cygwin
-When using the @option{scpx} access method, @value{emacsname} may call
+When using the @option{scpx} access method, Emacs may call
@command{scp} with Windows file naming, such as @code{c:/foo}. But
the version of @command{scp} that is installed with Cygwin does not
know about Windows file naming, which causes it to incorrectly look
@@ -2176,18 +2123,17 @@ A workaround: write a wrapper script for @option{scp} to convert
Windows file names to Cygwin file names.
@cindex Cygwin and ssh-agent
-@cindex SSH_AUTH_SOCK and @value{emacsname} on Windows
+@cindex SSH_AUTH_SOCK and Emacs on Windows
When using the @command{ssh-agent} on Windows for password-less
interaction, @option{ssh} methods depend on the environment variable
-@env{SSH_AUTH_SOCK}. But this variable is not set when
-@value{emacsname} is started from a Desktop shortcut and
-authentication fails.
+@env{SSH_AUTH_SOCK}. But this variable is not set when Emacs is
+started from a Desktop shortcut and authentication fails.
One workaround is to use a Windows based SSH Agent, such as
Pageant. It is part of the Putty Suite of tools.
-The fallback is to start @value{emacsname} from a shell.
+The fallback is to start Emacs from a shell.
@node Usage
@@ -2198,27 +2144,24 @@ The fallback is to start @value{emacsname} from a shell.
they are local. However, @value{tramp} employs a formalized remote
file naming syntax to perform its functions transparently. This
syntax consists of many parts specifying access methods,
-authentication, host names, and file names.
-@ifset emacs
-@value{ftppackagename} uses a similar syntax.
-@end ifset
+authentication, host names, and file names. Ange FTP uses a similar
+syntax.
@cindex type-ahead
-Unlike opening local files in @value{emacsname}, which are
-instantaneous, opening remote files in @value{tramp} is slower at
-first. Sometimes there is a noticeable delay before the prompts for
-passwords or authentication appear in the minibuffer. Hitting
-@kbd{@key{RET}} or other keys during this gap will be processed by
-@value{emacsname}. This type-ahead facility is a feature of
-@value{emacsname} that may cause missed prompts when using
+Unlike opening local files in Emacs, which are instantaneous, opening
+remote files in @value{tramp} is slower at first. Sometimes there is
+a noticeable delay before the prompts for passwords or authentication
+appear in the minibuffer. Hitting @kbd{@key{RET}} or other keys
+during this gap will be processed by Emacs. This type-ahead facility
+is a feature of Emacs that may cause missed prompts when using
@value{tramp}.
@menu
* File name Syntax:: @value{tramp} file name conventions.
* File name completion:: File name completion.
* Ad-hoc multi-hops:: Declaring multiple hops in the file name.
-* Remote processes:: Integration with other @value{emacsname} packages.
+* Remote processes:: Integration with other Emacs packages.
* Cleanup remote connections:: Cleanup remote connections.
@end menu
@@ -2228,9 +2171,9 @@ passwords or authentication appear in the minibuffer. Hitting
@cindex file name syntax
@cindex file name examples
-@file{@trampf{host,localfilename}}
-opens file @var{localfilename} on the remote host @var{host}, using
-the default method. @xref{Default Method}.
+@file{@trampf{host,localfilename}} opens file @var{localfilename} on
+the remote host @var{host}, using the default method. @xref{Default
+Method}.
@table @file
@item @value{prefix}melancholia@value{postfix}.emacs
@@ -2257,7 +2200,7 @@ For the file @file{/etc/squid.conf} on the host @code{melancholia}.
@var{host} can take IPv4 or IPv6 address, as in
@file{@trampf{127.0.0.1,.emacs}} or
@file{@trampf{@value{ipv6prefix}::1@value{ipv6postfix},.emacs}}.
-@ifset emacs
+@ifset unified
For syntactical reasons, IPv6 addresses must be embedded in square
brackets @file{@value{ipv6prefix}} and @file{@value{ipv6postfix}}.
@end ifset
@@ -2270,24 +2213,16 @@ name using the proper syntax will override this default behavior:
@trampf{user@@host,path/to.file}
@end example
-@file{@trampf{daniel@@melancholia,.emacs}} is for file
-@file{.emacs} in @code{daniel}'s home directory on the host,
-@code{melancholia}.
+@file{@trampf{daniel@@melancholia,.emacs}} is for file @file{.emacs}
+in @code{daniel}'s home directory on the host, @code{melancholia}.
Specify other file access methods (@pxref{Inline methods},
@pxref{External methods}) as part of the file name.
-@ifset emacs
Method name comes before user name, as in
@file{@value{prefix}@var{method}@value{postfixhop}} (Note the trailing
-colon).
-@end ifset
-@ifset xemacs
-This is done by replacing the initial @file{@value{prefix}} with
-@file{@value{prefix}@var{method}@value{postfixhop}} (Note the trailing
-slash!).
-@end ifset
-The syntax specifications for user, host, and file do not change.
+colon). The syntax specifications for user, host, and file do not
+change.
To connect to the host @code{melancholia} as @code{daniel}, using
@option{ssh} method for @file{.emacs} in @code{daniel}'s home
@@ -2307,44 +2242,38 @@ name. For example: @file{@trampfn{ssh,daniel@@melancholia#42,.emacs}}.
@value{tramp} can complete the following @value{tramp} file name
components: method names, user names, host names, and file names
-located on remote hosts.
-@ifset emacs
-Enable this by activating partial completion in @file{.emacs}.
+located on remote hosts. Enable this by activating partial completion
+in @file{.emacs}.
@ifinfo
-@xref{Completion Options, , , @value{emacsdir}}.
+@xref{Completion Options, , , emacs}.
@end ifinfo
-@end ifset
For example, type @kbd{C-x C-f @value{prefix}t @key{TAB}},
@value{tramp} completion choices show up as
@example
+@group
@c @multitable {@trampfn{telnet,melancholia.danann.net,}} {@trampfn{telnet,192.168.0.1,}}
@multitable @columnfractions .5 .5
-@ifset emacs
@item @value{prefixhop}telnet@value{postfixhop} @tab tmp/
@item @value{prefixhop}toto@value{postfix} @tab
-@end ifset
-@ifset xemacs
-@item @value{prefixhop}telnet@value{postfixhop} @tab @value{prefixhop}toto@value{postfix}
-@end ifset
@end multitable
+@end group
@end example
-@samp{@value{prefixhop}telnet@value{postfixhop}}
-is a possible completion for the respective method,
-@ifset emacs
-@samp{tmp/} stands for the directory @file{/tmp} on your local host,
-@end ifset
-and @samp{@value{prefixhop}toto@value{postfix}}
-might be a host @value{tramp} has detected in your @file{~/.ssh/known_hosts}
-file (when using @option{ssh} as default method).
+@samp{@value{prefixhop}telnet@value{postfixhop}} is a possible
+completion for the respective method, @samp{tmp/} stands for the
+directory @file{/tmp} on your local host, and
+@samp{@value{prefixhop}toto@value{postfix}} might be a host
+@value{tramp} has detected in your @file{~/.ssh/known_hosts} file
+(when using @option{ssh} as default method).
Type @kbd{e @key{TAB}} for the minibuffer completion to
@samp{@value{prefix}telnet@value{postfixhop}}. Typing @kbd{@key{TAB}}
shows host names @value{tramp} from @file{/etc/hosts} file, for example.
@example
+@group
@multitable @columnfractions .5 .5
@c @multitable {@trampfn{telnet,melancholia.danann.net,}} {@trampfn{telnet,192.168.0.1,}}
@item @trampfn{telnet,127.0.0.1,} @tab @trampfn{telnet,192.168.0.1,}
@@ -2352,6 +2281,7 @@ shows host names @value{tramp} from @file{/etc/hosts} file, for example.
@item @value{prefix}telnet@value{postfixhop}@value{ipv6prefix}::1@value{ipv6postfix}@value{postfix} @tab @trampfn{telnet,localhost,}
@item @trampfn{telnet,melancholia.danann.net,} @tab @trampfn{telnet,melancholia,}
@end multitable
+@end group
@end example
Choose a host from the above list and then continue to complete file
@@ -2365,21 +2295,19 @@ persistently (@pxref{Connection caching}) will be included in the
completion lists.
After remote host name completion comes completion of file names on
-the remote host. It works the same as with local host file completion,
+the remote host. It works the same as with local host file completion
except that killing with double-slash @file{//} kills only the file
-name part of the @value{tramp} file name syntax.
-@ifset emacs
-A triple-slash stands for the default behavior.
-@end ifset
+name part of the @value{tramp} file name syntax. A triple-slash
+stands for the default behavior.
@ifinfo
-@xref{Minibuffer File, , , @value{emacsdir}}.
+@xref{Minibuffer File, , , emacs}.
@end ifinfo
@noindent
Example:
@example
-@ifset emacs
+@group
@kbd{C-x C-f @trampfn{telnet,melancholia,/usr/local/bin//etc} @key{TAB}}
@print{} @trampfn{telnet,melancholia,/etc}
@@ -2388,28 +2316,20 @@ Example:
@kbd{C-x C-f @trampfn{telnet,melancholia,/usr/local/bin///etc} @key{TAB}}
@print{} /etc
-@end ifset
-
-@ifset xemacs
-@kbd{C-x C-f @trampfn{telnet,melancholia,/usr/local/bin//}}
- @print{} @trampfn{telnet,melancholia,/}
-
-@kbd{C-x C-f @trampfn{telnet,melancholia,//}}
- @print{} /
-@end ifset
+@end group
@end example
During file name completion, remote directory contents are re-read
regularly to account for any changes in the filesystem that may affect
the completion candidates. Such re-reads can account for changes to
-the file system by applications outside @value{emacsname}
-(@pxref{Connection caching}).
+the file system by applications outside Emacs (@pxref{Connection
+caching}).
@defopt tramp-completion-reread-directory-timeout
-@vindex tramp-completion-reread-directory-timeout
The timeout is number of seconds since last remote command for
-rereading remote directory contents. 0 re-reads immediately during
-file name completion, @code{nil} uses cached directory contents.
+rereading remote directory contents. A value of 0 re-reads
+immediately during file name completion, @code{nil} uses cached
+directory contents.
@end defopt
@@ -2419,7 +2339,7 @@ file name completion, @code{nil} uses cached directory contents.
@cindex proxy hosts, ad-hoc
@value{tramp} file name syntax can accommodate ad hoc specification of
-multiple proxies without using @code{tramp-default-proxies-alist}
+multiple proxies without using @option{tramp-default-proxies-alist}
configuration setup(@pxref{Multi-hops}).
Each proxy is specified using the same syntax as the remote host
@@ -2436,32 +2356,30 @@ proxy @samp{bird@@bastion} to a remote file on @samp{you@@remotehost}:
Proxies can take patterns @code{%h} or @code{%u}.
@value{tramp} adds the ad-hoc definitions on the fly to
-@code{tramp-default-proxies-alist} and is available for re-use during
-that @value{emacsname} session. Subsequent @value{tramp} connections
-to the same remote host can then use the shortcut form:
+@option{tramp-default-proxies-alist} and is available for re-use
+during that Emacs session. Subsequent @value{tramp} connections to
+the same remote host can then use the shortcut form:
@samp{@trampfn{ssh,you@@remotehost,/path}}.
@defopt tramp-save-ad-hoc-proxies
-@vindex tramp-save-ad-hoc-proxies
For ad-hoc definitions to be saved automatically in
-@option{tramp-default-proxies-alist} for future @value{emacsname}
-sessions, set @option{tramp-save-ad-hoc-proxies}.
+@option{tramp-default-proxies-alist} for future Emacs sessions, set
+@option{tramp-save-ad-hoc-proxies} to non-@code{nil}.
@lisp
-(setq tramp-save-ad-hoc-proxies t)
+(custom-set-variables '(tramp-save-ad-hoc-proxies t nil (tramp)))
@end lisp
@end defopt
@node Remote processes
-@section Integration with other @value{emacsname} packages
+@section Integration with other Emacs packages
@cindex compile
@cindex recompile
@value{tramp} supports starting new running processes on the remote
-host for discovering remote file names. @value{emacsname} packages on
-the remote host need no specific modifications for @value{tramp}'s
-use.
+host for discovering remote file names. Emacs packages on the remote
+host need no specific modifications for @value{tramp}'s use.
This type of integration does not work with the @option{ftp} method,
and does not support the pty association as specified in
@@ -2471,17 +2389,16 @@ and does not support the pty association as specified in
host when the variable @code{default-directory} is remote:
@lisp
+@group
(let ((default-directory "/ssh:remote.host:"))
(start-file-process "grep" (get-buffer-create "*grep*")
"/bin/sh" "-c" "grep -e tramp *"))
+@end group
@end lisp
-
-@ifset emacsgvfs
Remote processes do not apply to GVFS (see @ref{GVFS based methods})
because the remote file system is mounted on the local host and
@value{tramp} just accesses by changing the @code{default-directory}.
-@end ifset
@value{tramp} starts a remote process when a command is executed in a
remote file or directory buffer. As of now, these packages have been
@@ -2492,22 +2409,24 @@ like @code{compile} and @code{grep}) and @file{gud.el} (@code{gdb} or
For @value{tramp} to find the command on the remote, it must be
accessible through the default search path as setup by @value{tramp}
upon first connection. Alternatively, use an absolute path or extend
-@code{tramp-remote-path} (see @ref{Remote programs}):
+@option{tramp-remote-path} (see @ref{Remote programs}):
@lisp
+@group
(add-to-list 'tramp-remote-path "~/bin")
(add-to-list 'tramp-remote-path "/appli/pub/bin")
+@end group
@end lisp
-Customize @code{tramp-remote-process-environment} to suit the remote
-program's environment for the remote host.
-@code{tramp-remote-process-environment} is a list of strings
+Customize user option @option{tramp-remote-process-environment} to
+suit the remote program's environment for the remote host.
+@option{tramp-remote-process-environment} is a list of strings
structured similar to @code{process-environment}, where each element
is a string of the form @samp{ENVVARNAME=VALUE}.
-To avoid any conflicts with local host variables set through local
-configuration files, such as @file{~/.profile}, use @samp{ENVVARNAME=}
-to unset them for the remote environment.
+To avoid any conflicts with local host environment variables set
+through local configuration files, such as @file{~/.profile}, use
+@samp{ENVVARNAME=} to unset them for the remote environment.
@noindent
Use @code{add-to-list} to add entries:
@@ -2517,17 +2436,31 @@ Use @code{add-to-list} to add entries:
@end lisp
Modifying or deleting already existing values in the
-@code{tramp-remote-process-environment} list may not be feasible on
+@option{tramp-remote-process-environment} list may not be feasible on
restricted remote hosts. For example, some system administrators
-disallow changing @env{HISTORY} variable. To accommodate such
-restrictions when using @value{tramp}, fix the
-@code{tramp-remote-process-environment} by the following code in the
+disallow changing @env{HISTORY} environment variable. To accommodate
+such restrictions when using @value{tramp}, fix the
+@option{tramp-remote-process-environment} by the following code in the
local @file{.emacs} file:
@lisp
+@group
(let ((process-environment tramp-remote-process-environment))
(setenv "HISTORY" nil)
(setq tramp-remote-process-environment process-environment))
+@end group
+@end lisp
+
+Setting the @env{ENV} environment variable instructs some shells to
+read an initialization file. Per default, @value{tramp} has disabled
+this. You could overwrite this behaviour by evaluating
+
+@lisp
+@group
+(let ((process-environment tramp-remote-process-environment))
+ (setenv "ENV" "$HOME/.profile")
+ (setq tramp-remote-process-environment process-environment))
+@end group
@end lisp
@value{tramp} does not use the defaults specified in
@@ -2537,15 +2470,17 @@ local @file{.emacs} file:
them as follows:
@lisp
+@group
(let ((process-environment (cons "HGPLAIN=1" process-environment)))
(process-file @dots{}))
+@end group
@end lisp
This works only for environment variables not already set in the
@code{process-environment}.
-For integrating other @value{emacsname} packages so @value{tramp} can
-execute remotely, please file a bug report. @xref{Bug Reports}.
+For integrating other Emacs packages so @value{tramp} can execute
+remotely, please file a bug report. @xref{Bug Reports}.
@subsection Running remote programs that create local X11 windows
@@ -2555,8 +2490,10 @@ set the @env{DISPLAY} environment variable for the remote host as
follows in the local @file{.emacs} file:
@lisp
+@group
(add-to-list 'tramp-remote-process-environment
(format "DISPLAY=%s" (getenv "DISPLAY")))
+@end group
@end lisp
@noindent
@@ -2580,11 +2517,9 @@ when using @value{tramp} between two hosts with different operating
systems, such as @samp{windows-nt} and @samp{gnu/linux}. This option
ensures the correct name of the remote shell program.
-@ifset emacs
Starting with Emacs 24, when @option{explicit-shell-file-name} is
equal to @code{nil}, calling @code{shell} interactively will prompt
for a shell name.
-@end ifset
@subsection Running @code{shell-command} on a remote host
@@ -2595,16 +2530,16 @@ on remote hosts and displays output in buffers on the local
host. Example:
@example
+@group
@kbd{C-x C-f @trampfn{sudo,,} @key{RET}}
@kbd{M-! tail -f /var/log/syslog.log & @key{RET}}
+@end group
@end example
@command{tail} command outputs continuously to the local buffer,
@file{*Async Shell Command*}
-@ifset emacs
@kbd{M-x auto-revert-tail-mode} runs similarly showing continuous output.
-@end ifset
@subsection Running @code{eshell} on a remote host
@@ -2617,6 +2552,7 @@ You must add the module @code{eshell-tramp} to
@kbd{M-x eshell} on a remote host:
@example
+@group
@b{~ $} cd @trampfn{sudo,,/etc} @key{RET}
@b{@trampfn{sudo,root@@host,/etc} $} hostname @key{RET}
host
@@ -2625,28 +2561,31 @@ uid=0(root) gid=0(root) groups=0(root)
@b{@trampfn{sudo,root@@host,/etc} $} find-file shadow @key{RET}
#<buffer shadow>
@b{@trampfn{sudo,root@@host,/etc} $}
+@end group
@end example
-@ifset emacs
-@code{eshell} in @value{emacsname} 23.2 added custom @code{su} and
-@code{sudo} commands that set the default directory correctly for the
+@code{eshell} in Emacs 23.2 added custom @code{su} and @code{sudo}
+commands that set the default directory correctly for the
@file{*eshell*} buffer. @value{tramp} silently updates
-@code{tramp-default-proxies-alist} with an entry for this directory
+@option{tramp-default-proxies-alist} with an entry for this directory
(@pxref{Multi-hops}):
@example
+@group
@b{~ $} cd @trampfn{ssh,user@@remotehost,/etc} @key{RET}
@b{@trampfn{ssh,user@@remotehost,/etc} $} find-file shadow @key{RET}
File is not readable: @trampfn{ssh,user@@remotehost,/etc/shadow}
@b{@trampfn{ssh,user@@remotehost,/etc} $} sudo find-file shadow @key{RET}
#<buffer shadow>
+@end group
+@group
@b{@trampfn{ssh,user@@remotehost,/etc} $} su - @key{RET}
@b{@trampfn{su,root@@remotehost,/root} $} id @key{RET}
uid=0(root) gid=0(root) groups=0(root)
@b{@trampfn{su,root@@remotehost,/root} $}
+@end group
@end example
-@end ifset
@anchor{Running a debugger on a remote host}
@@ -2656,26 +2595,36 @@ uid=0(root) gid=0(root) groups=0(root)
@cindex perldb
@file{gud.el} provides a unified interface to symbolic debuggers
-@ifset emacs
@ifinfo
-(@ref{Debuggers, , , @value{emacsdir}}).
+(@ref{Debuggers, , , emacs}).
@end ifinfo
-@end ifset
@value{tramp} can run debug on remote hosts by calling @code{gdb}
with a remote file name:
@example
+@group
@kbd{M-x gdb @key{RET}}
-@b{Run gdb (like this):} gdb --annotate=3 @trampfn{ssh,host,~/myprog} @key{RET}
+@b{Run gdb (like this):} gdb -i=mi @trampfn{ssh,host,~/myprog} @key{RET}
+@end group
+@end example
+
+Since the remote @code{gdb} and @code{gdb-inferior} processes do not
+belong to the same process group on the remote host, there will be a
+warning, which can be ignored:
+
+@example
+&"warning: GDB: Failed to set controlling terminal: Operation not permitted\n"
@end example
Relative file names are based on the remote default directory. When
-@file{myprog.pl} exists in @file{@trampfn{ssh,host,/home/user}},
-valid calls include:
+@file{myprog.pl} exists in @file{@trampfn{ssh,host,/home/user}}, valid
+calls include:
@example
+@group
@kbd{M-x perldb @key{RET}}
@b{Run perldb (like this):} perl -d myprog.pl @key{RET}
+@end group
@end example
Just the local part of a remote file name, such as @kbd{perl -d
@@ -2702,16 +2651,20 @@ be set properly so @kbd{M-x shell} can open a proper remote shell on a
Windows host. To open @command{cmd}, set it as follows:
@lisp
+@group
(setq explicit-shell-file-name "cmd"
explicit-cmd-args '("/q"))
+@end group
@end lisp
@noindent
To open @command{powershell} as a remote shell, use this:
@lisp
+@group
(setq explicit-shell-file-name "powershell"
explicit-powershell-args '("-file" "-"))
+@end group
@end lisp
@@ -2727,9 +2680,8 @@ the internal representation of a remote connection. When called
interactively, this command lists active remote connections in the
minibuffer. Each connection is of the format
@file{@trampfn{method,user@@host,}}. Flushing remote connections also
-cleans the password
-cache (@pxref{Password handling}), file cache, connection cache
-(@pxref{Connection caching}), and connection buffers.
+cleans the password cache (@pxref{Password handling}), file cache,
+connection cache (@pxref{Connection caching}), and connection buffers.
@end deffn
@deffn Command tramp-cleanup-this-connection
@@ -2772,11 +2724,9 @@ To subscribe to the mailing list, visit:
@uref{http://lists.gnu.org/mailman/listinfo/tramp-devel/, the
@value{tramp} Mail Subscription Page}.
-@ifset emacs
@ifset installchapter
Before sending a bug report, run the test suite first @ref{Testing}.
@end ifset
-@end ifset
@findex tramp-bug
Check if the bug or problem is already addressed in @xref{Frequently
@@ -2835,8 +2785,7 @@ Where is the latest @value{tramp}?
@item
Which systems does it work on?
-The package works successfully on Emacs 22, Emacs 23, Emacs 24, Emacs
-25, XEmacs 21 (starting with 21.4), and SXEmacs 22.
+The package works successfully on Emacs 23, Emacs 24, and Emacs 25.
While Unix and Unix-like systems are the primary remote targets,
@value{tramp} has equal success connecting to other platforms, such as
@@ -2855,7 +2804,7 @@ responsiveness slows down. Some suggestions within the scope of
Use an external method, such as @option{scp}, which are faster than
internal methods.
-Keep the file @code{tramp-persistency-file-name}, which is where
+Keep the file @option{tramp-persistency-file-name}, which is where
@value{tramp} caches remote information about hosts and files. Caching
is enabled by default. Don't disable it.
@@ -2864,16 +2813,18 @@ files are not independently updated outside @value{tramp}'s control.
That cache cleanup will be necessary if the remote directories or
files are updated independent of @value{tramp}.
-Set @code{tramp-completion-reread-directory-timeout} to @code{nil} to
+Set @option{tramp-completion-reread-directory-timeout} to @code{nil} to
speed up completions, @ref{File name completion}.
Disable version control to avoid delays:
@lisp
+@group
(setq vc-ignore-dir-regexp
(format "\\(%s\\)\\|\\(%s\\)"
vc-ignore-dir-regexp
tramp-file-name-regexp))
+@end group
@end lisp
Disable excessive traces. Set @code{tramp-verbose} to 3 or lower,
@@ -2918,6 +2869,7 @@ When using fish shell on remote hosts, disable fancy formatting by
adding the following to @file{~/.config/fish/config.fish}:
@example
+@group
function fish_prompt
if test $TERM = "dumb"
echo "\$ "
@@ -2925,6 +2877,7 @@ function fish_prompt
@dots{}
end
end
+@end group
@end example
When using WinSSHD on remote hosts, @value{tramp} do not recognize the
@@ -2956,11 +2909,13 @@ first saving to a temporary file.
@end ifinfo
@lisp
+@group
(add-hook
'find-file-hook
(lambda ()
(when (file-remote-p default-directory)
(set (make-local-variable 'file-precious-flag) t))))
+@end group
@end lisp
@end itemize
@@ -2974,8 +2929,10 @@ configuration for @command{ssh} can be configured to kill such hangs
with the following command in the @file{~/.ssh/config}:
@example
+@group
Host *
ServerAliveInterval 5
+@end group
@end example
@@ -2984,30 +2941,37 @@ Host *
@value{tramp} overwrites @code{ControlPath} settings when initiating
@command{ssh} sessions. @value{tramp} does this to fend off a stall
-if a master session opened outside the @value{emacsname} session is no
-longer open. That is why @value{tramp} prompts for the password again
-even if there is an @command{ssh} already open.
+if a master session opened outside the Emacs session is no longer
+open. That is why @value{tramp} prompts for the password again even
+if there is an @command{ssh} already open.
+@vindex tramp-ssh-controlmaster-options
Some @command{ssh} versions support a @code{ControlPersist} option,
which allows you to set the @code{ControlPath} provided the variable
@code{tramp-ssh-controlmaster-options} is customized as follows:
@lisp
+@group
(setq tramp-ssh-controlmaster-options
(concat
"-o ControlPath=/tmp/ssh-ControlPath-%%r@@%%h:%%p "
"-o ControlMaster=auto -o ControlPersist=yes"))
+@end group
@end lisp
Note how "%r", "%h" and "%p" must be encoded as "%%r", "%%h" and
"%%p".
+@vindex tramp-use-ssh-controlmaster-options
If the @file{~/.ssh/config} is configured appropriately for the above
behavior, then any changes to @command{ssh} can be suppressed with
this @code{nil} setting:
@lisp
-(setq tramp-use-ssh-controlmaster-options nil)
+@group
+(custom-set-variables
+ '(tramp-use-ssh-controlmaster-options nil nil (tramp)))
+@end group
@end lisp
@@ -3021,9 +2985,9 @@ To test if this is the case, open a remote shell and check if the output
of @command{ls} is in color.
To disable @acronym{ANSI} escape sequences from the remote hosts,
-disable @option{--color=yes} or @option{--color=auto} in the remote
-host's @file{.bashrc} or @file{.profile}. Turn this alias on and off
-to see if file name completion works.
+disable @samp{--color=yes} or @samp{--color=auto} in the remote host's
+@file{.bashrc} or @file{.profile}. Turn this alias on and off to see
+if file name completion works.
@item
File name completion does not work in directories with large number of
@@ -3036,7 +3000,7 @@ shell's limit on length of command lines and hang. @value{tramp} uses
globbing.
To test if globbing hangs, open a shell on the remote host and then
-run @samp{ls -d * ..?* > /dev/null}.
+run @command{ls -d * ..?* > /dev/null}.
When testing, ensure the remote shell is the same shell
(@command{/bin/sh}, @command{ksh} or @command{bash}), that
@@ -3046,117 +3010,62 @@ When testing, ensure the remote shell is the same shell
@item
How to get notified after @value{tramp} completes file transfers?
-Make @value{emacsname} beep after reading from or writing to the
-remote host with the following code in @file{~/.emacs} file.
+Make Emacs beep after reading from or writing to the remote host with
+the following code in @file{~/.emacs} file.
@lisp
+@group
(defadvice tramp-handle-write-region
(after tramp-write-beep-advice activate)
"Make tramp beep after writing a file."
(interactive)
(beep))
+@end group
+@group
(defadvice tramp-handle-do-copy-or-rename-file
(after tramp-copy-beep-advice activate)
"Make tramp beep after copying a file."
(interactive)
(beep))
+@end group
+@group
(defadvice tramp-handle-insert-file-contents
(after tramp-insert-beep-advice activate)
"Make tramp beep after inserting a file."
(interactive)
(beep))
+@end group
@end lisp
-@ifset emacs
@item
-How to get a Visual Warning when working with @samp{root} privileges
+How to get a Visual Warning when working with @samp{root} privileges?
+Host indication in the mode line?
-Get a modeline indication when working with @samp{root} privileges
-with the following code (tested with @value{emacsname} 22.1) in
-@file{~/.emacs} file:
+Install @file{tramp-theme} from GNU ELPA via Emacs' Package Manager.
+Enable it via @kbd{M-x load-theme @key{RET} tramp}. Further
+customization is explained in user option
+@option{tramp-theme-face-remapping-alist}.
-@lisp
-(defun my-mode-line-function ()
- (when (string-match "^/su\\(do\\)?:" default-directory)
- (setq mode-line-format
- (format-mode-line mode-line-format 'font-lock-warning-face))))
-(add-hook 'find-file-hook 'my-mode-line-function)
-(add-hook 'dired-mode-hook 'my-mode-line-function)
-@end lisp
-@end ifset
-
-
-@ifset emacs
-@item
-How to get host indication in the mode line?
-
-The following code (tested with @value{emacsname} 22.1) in
-@file{~/.emacs} file shows it:
-
-@lisp
-(defconst my-mode-line-buffer-identification
- (list
- '(:eval
- (let ((host-name
- (if (file-remote-p default-directory)
- (tramp-file-name-host
- (tramp-dissect-file-name default-directory))
- (system-name))))
- (if (string-match "^[^0-9][^.]*\\(\\..*\\)" host-name)
- (substring host-name 0 (match-beginning 1))
- host-name)))
- ": %12b"))
-
-(setq-default
- mode-line-buffer-identification
- my-mode-line-buffer-identification)
-
-(add-hook
- 'dired-mode-hook
- (lambda ()
- (setq
- mode-line-buffer-identification
- my-mode-line-buffer-identification)))
-@end lisp
-
-The mode line in @value{emacsname} 23.1 and later versions now
-contains an indication if @code{default-directory} for the current
-buffer is on a remote host. Moreover, the corresponding tool-tip
-shows the remote host name. The above @code{:eval} clause can also be
-simplified to show the host name in the mode line:
-
-@lisp
- '(:eval
- (let ((host-name
- (or (file-remote-p default-directory 'host)
- (system-name))))
- (if (string-match "^[^0-9][^.]*\\(\\..*\\)" host-name)
- (substring host-name 0 (match-beginning 1))
- host-name)))
-@end lisp
-@end ifset
-
-
-@ifset emacs
@item
Remote host does not understand default options for directory listing
-@value{emacsname} computes the @command{dired} options based on the
-local host but if the remote host cannot understand the same
-@command{ls} command, then set them with a hook as follows:
+Emacs computes the @command{dired} options based on the local host but
+if the remote host cannot understand the same @command{ls} command,
+then set them with a hook as follows:
@lisp
+@group
(add-hook
'dired-before-readin-hook
(lambda ()
(when (file-remote-p default-directory)
(setq dired-actual-switches "-al"))))
+@end group
@end lisp
-@end ifset
@item
@@ -3168,6 +3077,7 @@ turn off saving history by putting this shell code in the
@file{.kshrc} file:
@example
+@group
if [ -f $HOME/.sh_history ] ; then
/bin/rm $HOME/.sh_history
fi
@@ -3177,6 +3087,7 @@ fi
if [ "$@{HISTSIZE-unset@}" != "unset" ] ; then
unset HISTSIZE
fi
+@end group
@end example
For @option{ssh}-based method, add the following line to your
@@ -3202,8 +3113,11 @@ You can define default methods and user names for hosts,
(@pxref{Default Method}, @pxref{Default User}):
@lisp
-(setq tramp-default-method "ssh"
- tramp-default-user "news")
+@group
+(custom-set-variables
+ '(tramp-default-method "ssh" nil (tramp))
+ '(tramp-default-user "news" nil (tramp)))
+@end group
@end lisp
The reduced typing: @kbd{C-x C-f @trampf{news.my.domain,/opt/news/etc}}.
@@ -3220,9 +3134,11 @@ Programs used for access methods already offer powerful configurations
file @file{~/.ssh/config}:
@example
+@group
Host xy
HostName news.my.domain
User news
+@end group
@end example
The reduced typing: @kbd{C-x C-f @trampfn{ssh,xy,/opt/news/etc}}.
@@ -3235,8 +3151,8 @@ completion can further reduce key strokes: @kbd{C-x C-f
Use environment variables to expand long strings
For long file names, set up environment variables that are expanded in
-the minibuffer. Environment variables are set either outside
-@value{emacsname} or inside @value{emacsname} with Lisp:
+the minibuffer. Environment variables are set either outside Emacs or
+inside Emacs with Lisp:
@lisp
(setenv "xy" "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}")
@@ -3250,9 +3166,10 @@ minibuffer.
@item Define own keys:
-Redefine another key sequence in @value{emacsname} for @kbd{C-x C-f}:
+Redefine another key sequence in Emacs for @kbd{C-x C-f}:
@lisp
+@group
(global-set-key
[(control x) (control y)]
(lambda ()
@@ -3261,6 +3178,7 @@ Redefine another key sequence in @value{emacsname} for @kbd{C-x C-f}:
(read-file-name
"Find Tramp file: "
"@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}"))))
+@end group
@end lisp
Simply typing @kbd{C-x C-y} would prepare minibuffer editing of file
@@ -3275,9 +3193,11 @@ Define own abbreviation (1):
Abbreviation list expansion can be used to reduce typing long file names:
@lisp
+@group
(add-to-list
'directory-abbrev-alist
'("^/xy" . "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}"))
+@end group
@end lisp
The reduced typing: @kbd{C-x C-f /xy @key{RET}}.
@@ -3293,23 +3213,31 @@ The @code{abbrev-mode} gives additional flexibility for editing in the
minibuffer:
@lisp
+@group
(define-abbrev-table 'my-tramp-abbrev-table
'(("xy" "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}")))
+@end group
+@group
(add-hook
'minibuffer-setup-hook
(lambda ()
(abbrev-mode 1)
(setq local-abbrev-table my-tramp-abbrev-table)))
+@end group
+@group
(defadvice minibuffer-complete
(before my-minibuffer-complete activate)
(expand-abbrev))
+@end group
+@group
;; If you use partial-completion-mode
(defadvice PC-do-completion
(before my-PC-do-completion activate)
(expand-abbrev))
+@end group
@end lisp
The reduced typing: @kbd{C-x C-f xy @key{TAB}}.
@@ -3320,157 +3248,118 @@ The minibuffer expands for further editing.
Use bookmarks to save Tramp file names.
@ifinfo
-@pxref{Bookmarks, , , @value{emacsdir}}.
+@pxref{Bookmarks, , , emacs}.
@end ifinfo
Upon visiting a location with @value{tramp}, save it as a bookmark with
-@ifset emacs
@kbd{@key{menu-bar} @key{edit} @key{bookmarks} @key{set}}.
-@end ifset
-@ifset xemacs
-@kbd{@key{menu-bar} @key{view} @key{bookmarks} @key{set}}.
-@end ifset
To revisit that bookmark:
-@ifset emacs
@kbd{@key{menu-bar} @key{edit} @key{bookmarks} @key{jump}}.
-@end ifset
-@ifset xemacs
-@kbd{@key{menu-bar} @key{view} @key{bookmarks} @key{jump}}.
-@end ifset
@item Use recent files:
-@ifset emacs
-@file{recentf}
-@end ifset
-@ifset xemacs
-@file{recent-files}
-@end ifset
-remembers visited places.
+@file{recentf} remembers visited places.
@ifinfo
-@ifset emacs
-@pxref{File Conveniences, , , @value{emacsdir}}.
-@end ifset
-@ifset xemacs
-@pxref{recent-files, , , edit-utils}.
-@end ifset
+@pxref{File Conveniences, , , emacs}.
@end ifinfo
Keep remote file names in the recent list without have to check for
their accessibility through remote access:
@lisp
-@ifset emacs
(recentf-mode 1)
-@end ifset
-@ifset xemacs
-(recent-files-initialize)
-(add-hook
- 'find-file-hook
- (lambda ()
- (when (file-remote-p (buffer-file-name))
- (recent-files-make-permanent)))
- 'append)
-@end ifset
@end lisp
-Reaching recently opened files:
-@ifset emacs
-@kbd{@key{menu-bar} @key{file} @key{Open Recent}}.
-@end ifset
-@ifset xemacs
-@kbd{@key{menu-bar} @key{Recent Files}}.
-@end ifset
+Reaching recently opened files: @kbd{@key{menu-bar} @key{file}
+@key{Open Recent}}.
-@ifset emacs
@item Use filecache:
Since @file{filecache} remembers visited places, add the remote
directory to the cache:
@lisp
+@group
@c `with-eval-after-load' has been introduced with Emacs 24.4. Shall
@c be used when appropriate.
(eval-after-load "filecache"
'(file-cache-add-directory
"@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}"))
+@end group
@end lisp
Then use directory completion in the minibuffer with @kbd{C-x C-f
C-@key{TAB}}.
-@end ifset
-@ifset emacs
@item Use bbdb:
-@file{bbdb} has a built-in feature for @value{ftppackagename} files,
-which also works for @value{tramp} file names.
+@file{bbdb} has a built-in feature for Ange FTP files, which also
+works for @value{tramp} file names.
@ifinfo
@pxref{bbdb-ftp, Storing FTP sites in the BBDB, , bbdb}.
@end ifinfo
-Load @file{bbdb} in @value{emacs}:
+Load @file{bbdb} in Emacs:
@lisp
+@group
(require 'bbdb)
(bbdb-initialize)
+@end group
@end lisp
Create a BBDB entry with @kbd{M-x bbdb-create-ftp-site}. Then specify
a method and user name where needed. Examples:
@example
+@group
@kbd{M-x bbdb-create-ftp-site @key{RET}}
@b{Ftp Site:} news.my.domain @key{RET}
@b{Ftp Directory:} /opt/news/etc/ @key{RET}
@b{Ftp Username:} ssh@value{postfixhop}news @key{RET}
@b{Company:} @key{RET}
@b{Additional Comments:} @key{RET}
+@end group
@end example
In BBDB buffer, access an entry by pressing the key @key{F}.
-@end ifset
@end enumerate
Thanks to @value{tramp} users for contributing to these recipes.
@item
-Why saved multi-hop file names do not work in a new @value{emacsname}
-session?
+Why saved multi-hop file names do not work in a new Emacs session?
When saving ad-hoc multi-hop @value{tramp} file names (@pxref{Ad-hoc
-multi-hops}) via bookmarks, recent files,
-@ifset emacs
-filecache, bbdb,
-@end ifset
-or another package, use the full ad-hoc file name including all hops,
-like
+multi-hops}) via bookmarks, recent files, filecache, bbdb, or another
+package, use the full ad-hoc file name including all hops, like
@file{@trampfn{ssh,bird@@bastion|ssh@value{postfixhop}news.my.domain,/opt/news/etc}}.
Alternatively, when saving abbreviated multi-hop file names
-@file{@trampfn{ssh,news@@news.my.domain,/opt/news/etc}}, the custom
-option @code{tramp-save-ad-hoc-proxies} must be set non-@code{nil}
+@file{@trampfn{ssh,news@@news.my.domain,/opt/news/etc}}, the user
+option @option{tramp-save-ad-hoc-proxies} must be set non-@code{nil}
value.
-@ifset emacs
@item
-How to connect to a remote @value{emacsname} session using @value{tramp}?
+How to connect to a remote Emacs session using @value{tramp}?
Configure Emacs Client
@ifinfo
-(@pxref{Emacs Server, , , @value{emacsdir}}).
+(@pxref{Emacs Server, , , emacs}).
@end ifinfo
Then on the remote host, start the Emacs Server:
@lisp
+@group
(require 'server)
(setq server-host (system-name)
server-use-tcp t)
(server-start)
+@end group
@end lisp
If @code{(system-name)} of the remote host cannot be resolved on the
@@ -3492,8 +3381,10 @@ To make Emacs Client an editor for other programs, use a wrapper
script @file{emacsclient.sh}:
@example
+@group
#!/bin/sh
emacsclient @trampfn{ssh,$(whoami)@@$(hostname --fqdn),$1}
+@end group
@end example
Then change the environment variable @env{EDITOR} to point to the
@@ -3502,7 +3393,6 @@ wrapper script:
@example
export EDITOR=/path/to/emacsclient.sh
@end example
-@end ifset
@item
@@ -3520,8 +3410,7 @@ disable such features.
Disable @value{tramp} file name completion:
@lisp
-(custom-set-variables
- '(ido-enable-tramp-completion nil))
+(custom-set-variables '(ido-enable-tramp-completion nil))
@end lisp
@item
@@ -3539,35 +3428,25 @@ Disable remote directory tracking mode:
How to disable @value{tramp}?
@itemize @minus
-@ifset emacs
@item
-To keep @value{ftppackagename} as default the remote files access
-package, set this in @file{.emacs}:
+To keep Ange FTP as default the remote files access package, set this
+in @file{.emacs}:
@lisp
-(setq tramp-default-method "ftp")
+(custom-set-variables '(tramp-default-method "ftp" nil (tramp)))
@end lisp
-@end ifset
@item
-To disable both
-@ifset emacs
-@value{tramp} (and @value{ftppackagename}),
-@end ifset
-@ifset xemacs
-@value{tramp},
-@end ifset
-set @code{tramp-mode} to @code{nil} in @file{.emacs}.
+To disable both @value{tramp} (and Ange FTP), set @code{tramp-mode} to
+@code{nil} in @file{.emacs}.
@lisp
-(setq tramp-mode nil)
+(custom-set-variables '(tramp-mode nil nil (tramp)))
@end lisp
@item
-To unload @value{tramp}, type @kbd{M-x tramp-unload-tramp}.
-@ifset emacs
-Unloading @value{tramp} resets @value{ftppackagename} plugins also.
-@end ifset
+To unload @value{tramp}, type @kbd{M-x tramp-unload-tramp}. Unloading
+@value{tramp} resets Ange FTP plugins also.
@end itemize
@end itemize
@@ -3578,9 +3457,7 @@ Unloading @value{tramp} resets @value{ftppackagename} plugins also.
@menu
* Localname deconstruction:: Splitting a localname into its component parts.
-@ifset emacs
* External packages:: Integrating with external Lisp packages.
-@end ifset
@end menu
@@ -3598,7 +3475,6 @@ file name. By relying on the original handlers for localnames,
handlers.
-@ifset emacs
@node External packages
@section Integrating with external Lisp packages
@subsection File name completion.
@@ -3617,8 +3493,10 @@ the variable @code{non-essential} temporarily and bind it to
non-@code{nil} value.
@lisp
+@group
(let ((non-essential t))
@dots{})
+@end group
@end lisp
@@ -3636,8 +3514,10 @@ situations where callers to @code{process-file} know there are no file
attribute changes. The let-bind form to accomplish this:
@lisp
+@group
(let (process-file-side-effects)
@dots{})
+@end group
@end lisp
For asynchronous processes, @value{tramp} uses a process sentinel to
@@ -3649,14 +3529,15 @@ sentinel is overwritten. The caller can still flush the file
attributes cache in its process sentinel with this code:
@lisp
+@group
(unless (memq (process-status proc) '(run open))
(dired-uncache remote-directory))
+@end group
@end lisp
Since @value{tramp} traverses subdirectories starting with the
root-directory, it is most likely sufficient to make the
@code{default-directory} of the process buffer as the root directory.
-@end ifset
@node Traces and Profiles
@@ -3687,7 +3568,7 @@ set the @code{tramp-verbose} level to 6 (@pxref{Bug Reports}).
The debug buffer is in
@ifinfo
-@ref{Outline Mode, , , @value{emacsdir}}.
+@ref{Outline Mode, , , emacs}.
@end ifinfo
@ifnotinfo
Outline Mode.
@@ -3696,26 +3577,30 @@ In this buffer, messages can be filtered by their level. To see
messages up to verbosity level 5, enter @kbd{C-u 6 C-c C-q}.
@ifinfo
Other navigation keys are described in
-@ref{Outline Visibility, , , @value{emacsdir}}.
+@ref{Outline Visibility, , , emacs}.
@end ifinfo
@value{tramp} handles errors internally. But to get a Lisp backtrace,
both the error and the signal have to be set as follows:
@lisp
+@group
(setq debug-on-error t
debug-on-signal t)
+@end group
@end lisp
To enable stepping through @value{tramp} function call traces, they
have to be specifically enabled as shown in this code:
@lisp
+@group
(require 'trace)
(dolist (elt (all-completions "tramp-" obarray 'functionp))
(trace-function-background (intern elt)))
(untrace-function 'tramp-read-passwd)
(untrace-function 'tramp-gw-basic-authentication)
+@end group
@end lisp
The buffer @file{*trace-output*} contains the output from the function
@@ -3724,62 +3609,6 @@ call traces. Disable @code{tramp-read-passwd} and
being written to @file{*trace-output*}.
-@node Issues
-@chapter Debatable Issues and What Was Decided
-
-@itemize @bullet
-@item The uuencode method does not always work.
-
-@command{uudecode} on some systems cannot write to stdout, but
-@value{tramp} depends on encoding and decoding programs to be able to
-read from stdin and write to stdout.
-
-We can find ways to circumvent @command{uudecode}'s ability to write
-to stdout, such as writing to a temporary file and then piping that to
-stdout.
-
-But I have decided not to implement workarounds as they are too
-fragile to work reliably. Some on systems, @value{tramp} will not have
-uuencode method.
-
-@item The @value{tramp} file name syntax differs between Emacs and XEmacs.
-
-The Emacs maintainers wish to use a unified file name syntax for
-Ange-FTP and @value{tramp} so that users don't have to learn yet
-another syntax though it is okay to learn new extensions.
-
-For the XEmacs maintainers, the disruption from a unified file name
-syntax are not worth the gains. Firstly, the XEmacs package system
-relies on EFS for downloading new packages and therefore is already
-installed. On the other hand, @value{tramp} is not installed by
-default in XEmacs. Unifying will require @value{tramp} installed from
-the start.
-
-@ifset xemacs
-@strong{Note:} To make the syntax similar to @value{ftppackagename},
-make this change to the init file:
-
-@lisp
-(setq tramp-unified-filenames t)
-(require 'tramp)
-@end lisp
-
-To disable auto loading @value{emacsname} @value{tramp} package, set
-file permissions of
-@file{@dots{}/xemacs-packages/lisp/tramp/auto-autoloads.el*} to
-@code{000}.
-
-When using unified file names, @value{emacsname} download sites are
-added to @code{tramp-default-method-alist} with default method of
-@option{ftp} @xref{Default Method} for proper working of the
-@value{emacsname} package system.
-
-The syntax for unified file names is described in the @value{tramp} manual
-for @value{emacsothername}.
-@end ifset
-@end itemize
-
-
@node GNU Free Documentation License
@appendix GNU Free Documentation License
@include doclicense.texi
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi
index 0cdf08daee..3101dc0de8 100644
--- a/doc/misc/trampver.texi
+++ b/doc/misc/trampver.texi
@@ -8,7 +8,7 @@
@c In the Tramp GIT, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
-@set trampver 2.2.13.25.1
+@set trampver 2.3.1-pre
@c Other flags from configuration
@set instprefix /usr/local
@@ -16,54 +16,29 @@
@set infodir /usr/local/share/info
@c Formatting of the tramp program name consistent.
-@set tramp @sc{tramp}
+@set tramp @sc{Tramp}
-@c Whether or not describe GVFS integration.
-@ifclear noemacsgvfs
-@set emacsgvfs
-@end ifclear
-
-@c Whether or not describe gateway methods.
-@ifclear noemacsgw
-@set emacsgw
-@end ifclear
-
-@c Some flags which make the text independent on the (X)Emacs flavor.
-@c "emacs" resp "xemacs" are set in the Makefile. Default is "emacs".
-@ifclear emacs
-@ifclear xemacs
-@set emacs
+@c Some flags which define the remote file name syntax.
+@ifclear unified
+@ifclear separate
+@set unified
@end ifclear
@end ifclear
-@c Emacs values.
-@ifset emacs
-@set emacsname Emacs
-@set emacsdir emacs
-@set ftppackagename Ange-FTP
+@ifset unified
@set prefix /
@set prefixhop
@set postfix :
@set postfixhop :
@set ipv6prefix [
@set ipv6postfix ]
-@set emacsothername XEmacs
-@set emacsotherdir xemacs
-@set emacsotherfilename tramp-xemacs.html
@end ifset
-@c XEmacs counterparts.
-@ifset xemacs
-@set emacsname XEmacs
-@set emacsdir xemacs
-@set ftppackagename EFS
+@ifset separate
@set prefix /[
@set prefixhop [
@set postfix ]
@set postfixhop /
@set ipv6prefix
@set ipv6postfix
-@set emacsothername Emacs
-@set emacsotherdir emacs
-@set emacsotherfilename tramp-emacs.html
@end ifset
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index 91cb6b54a8..06d2e559c3 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -289,7 +289,7 @@ string or a parsed URL structure. If it is a string, that string is
passed through @code{url-encode-url} before using it, to ensure that
it is properly URI-encoded (@pxref{URI Encoding}).
-@defun url-retrieve-synchronously url silent no-cookies
+@defun url-retrieve-synchronously url &optional silent no-cookies timeout
This function synchronously retrieves the data specified by @var{url},
and returns a buffer containing the data. The return value is
@code{nil} if there is no data associated with the URL (as is the case
@@ -297,7 +297,9 @@ for @code{dired}, @code{info}, and @code{mailto} URLs).
If the optional argument @var{silent} is non-@code{nil}, progress
messages are suppressed. If the optional argument @var{no-cookies} is
-non-@code{nil}, cookies are not stored or sent.
+non-@code{nil}, cookies are not stored or sent. If the optional
+argument @var{timeout} is non-@code{nil}, it should be a number that
+says (in seconds) how long to wait for a response before giving up.
@end defun
@defun url-retrieve url callback &optional cbargs silent no-cookies
@@ -421,6 +423,12 @@ cookies, if there are any. You can remove a cookie using the
@kbd{C-k} (@code{url-cookie-delete}) command.
@end defun
+@defun url-cookie-delete-cookies &optional regexp
+This function takes a regular expression as its parameters and deletes
+all cookies from that domain. If @var{regexp} is @code{nil}, delete
+all cookies.
+@end defun
+
@defopt url-cookie-file
The file in which cookies are stored, defaulting to @file{cookies} in
the directory specified by @code{url-configuration-directory}.
@@ -1335,10 +1343,16 @@ Connect directly.
@end defopt
@defopt url-user-agent
-The User Agent string used for sending HTTP/HTTPS requests. The value
-should be a string or a function of no arguments that returns a
-string. The default value is @w{@samp{User-Agent: @var{package-name}
-URL/Emacs}}, where @var{package-name} is the value of
+The User Agent string used for sending @acronym{HTTP}/@acronym{HTTPS}
+requests. The value should be @code{nil}, which means that no
+@samp{User-Agent} header is generated, @code{default}, which means
+that a string is generated based on the setting of
+@code{url-privacy-leve}, a string or a function of no arguments that
+returns a string.
+
+The default is @code{default}, which means that the
+@w{@samp{User-Agent: @var{package-name} URL/Emacs}} string will be
+generated, where @var{package-name} is the value of
@code{url-package-name} and its version, if they are non-@code{nil}.
@end defopt
diff --git a/etc/DEBUG b/etc/DEBUG
index eef67dad50..656e29a8b7 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -144,8 +144,8 @@ These are displayed as integer values (or structures, if you used the
"--enable-check-lisp-object-type" option at configure time) that are
hard to interpret, especially if they represent long lists. You can
use the 'pp' command to display them in their Lisp form. That command
-displays its output on the standard error stream (on GNU/Linux, you
-can redirect that to a file using "M-x redirect-debugging-output").
+displays its output on the standard error stream, which you
+can redirect to a file using "M-x redirect-debugging-output".
This means that if you attach GDB to a running Emacs that was invoked
from a desktop icon, chances are you will not see the output at all,
or it will wind up in an obscure place (check the documentation of
@@ -250,8 +250,8 @@ To see the current value of a Lisp Variable, use 'pv variable'.
These commands send their output to stderr; if that is closed or
redirected to some file you don't know, you won't see their output.
This is particularly so for Emacs invoked on MS-Windows from the
-desktop shortcut. On GNU/Linux, you can use the command
-'redirect-debugging-output' to redirect stderr to a file.
+desktop shortcut. You can use the command 'redirect-debugging-output'
+to redirect stderr to a file.
Note: It is not a good idea to try 'pr', 'pp', or 'pv' if you know that Emacs
is in deep trouble: its stack smashed (e.g., if it encountered SIGSEGV
@@ -282,7 +282,7 @@ type. Here are these commands:
xbufobjfwd xkbobjfwd xbuflocal xbuffer xsymbol xstring xvector xframe
xwinconfig xcompiled xcons xcar xcdr xsubr xprocess xfloat xscrollbar
xchartable xsubchartable xboolvector xhashtable xlist xcoding
- xcharset xfontset xfont xbytecode
+ xcharset xfontset xfont
Each one of them applies to a certain type or class of types.
(Some of these types are not visible in Lisp, because they exist only
diff --git a/etc/MACHINES b/etc/MACHINES
index 085f169e85..5562dc2603 100644
--- a/etc/MACHINES
+++ b/etc/MACHINES
@@ -105,12 +105,10 @@ the list at the end of this file.
Emacs versions later than 24.4 will not compile on Irix by default.
(Note that SGI stopped supporting Irix in December 2013.)
- You should be able to work around the problem either by porting the
- Emacs undumping code to GCC under Irix, or by configuring --with-wide-int.
Older versions of Emacs 24 (and 23?) also had problems on Irix.
It *may* be possible to build Emacs <= 24.4 on Irix 6.5 with an old
version (3.1) of gcc. Newer versions of gcc may not work.
- See <http://debbugs.gnu.org/9684>.
+ See <http://bugs.gnu.org/9684>.
* Obsolete platforms
diff --git a/etc/NEWS b/etc/NEWS
index 9f97d764ae..694a0eadff 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -16,6 +16,590 @@ You can narrow news to a specific version by calling 'view-emacs-news'
with a prefix argument or by typing C-u C-h C-n.
+* Installation Changes in Emacs 25.2
+
+** By default libgnutls is now required when building Emacs.
+Use 'configure --with-gnutls=no' to build even when GnuTLS is missing.
+
+** GnuTLS version 2.12.2 or later is now required, instead of merely
+version 2.6.6 or later.
+
+** The new option 'configure --enable-gcc-warnings=warn-only' causes
+GCC to issue warnings without stopping the build. This behavior is
+now the default in developer builds. As before, use
+'--disable-gcc-warnings' to suppress GCC's warnings, and
+'--enable-gcc-warnings' to stop the build if GCC issues warnings.
+
++++
+** The Emacs server now has socket-launching support. This allows
+socket based activation, where an external process like systemd can
+invoke the Emacs server process upon a socket connection event and
+hand the socket over to Emacs. Emacs uses this socket to service
+emacsclient commands. This new functionality can be disabled with the
+configure option '--disable-libsystemd'.
+
+** New configure option '--disable-build-details' attempts to build an
+Emacs that is more likely to be reproducible; that is, if you build
+and install Emacs twice, the second Emacs is a copy of the first.
+Deterministic builds omit the build date from the output of the
+emacs-version and erc-cmd-SV functions, and the leave the following
+variables nil: emacs-build-system, emacs-build-time,
+erc-emacs-build-time.
+
+** Emacs no longer works on IRIX. We expect that Emacs users are not
+affected by this, as SGI stopped supporting IRIX in December 2013.
+
+
+* Startup Changes in Emacs 25.2
+
+
+* Changes in Emacs 25.2
+
++++
+** The new user option 'shell-command-not-erase-buffer' controls
+if the output buffer is erased between shell commands; if non-nil,
+the output buffer is not erased; this variable also controls where
+to set the point in the output buffer: beginning of the output,
+end of the buffer or save the point.
+When 'shell-command-not-erase-buffer' is nil, the default value,
+the behaviour of 'shell-command', 'shell-command-on-region' and
+'async-shell-command' is as usual.
+
++++
+** The new user option 'mouse-select-region-move-to-beginning'
+controls the position of point when double-clicking mouse-1 on the end
+of a parenthetical grouping or string-delimiter: the default value nil
+keeps point at the end of the region, setting it to non-nil moves
+point to the beginning of the region.
+
+---
+** 'find-library-name' will now fall back on looking at 'load-history'
+to try to locate libraries that have been loaded with an explicit path
+outside 'load-path'.
+
++++
+** Faces in 'minibuffer-prompt-properties' no longer overwrite properties
+in the text in functions like 'read-from-minibuffer', but instead are
+added to the end of the face list. This allows users to say things
+like '(read-from-minibuffer (propertize "Enter something: " 'face 'bold))'.
+
++++
+** The new variable 'extended-command-suggest-shorter' has been added
+to control whether to suggest shorter 'M-x' commands or not.
+
+---
+** icomplete now respects 'completion-ignored-extensions'.
+
++++
+** Non-breaking hyphens are now displayed with the 'nobreak-hyphen'
+face instead of the 'escape-glyph' face.
+
+---
+** 'C-x h' ('mark-whole-buffer') will now avoid marking the prompt
+part of minibuffers.
+
+---
+** 'find-library' now takes a prefix argument to pop to a different
+window.
+
+** 'find-library', 'help-function-def' and 'help-variable-def' now run
+'find-function-after-hook'.
+
+---
+** 'process-attributes' on Darwin systems now returns more information.
+
++++
+** Several accessors for the value returned by 'file-attributes'
+have been added. They are: 'file-attribute-type',
+'file-attribute-link-number', 'file-attribute-user-id',
+'file-attribute-group-id', 'file-attribute-access-time',
+'file-attribute-modification-time',
+'file-attribute-status-change-time', 'file-attribute-size',
+'file-attribute-modes', 'file-attribute-inode-number',
+'file-attribute-device-number' and 'file-attribute-collect'.
+
++++
+** The new function 'buffer-hash' computes a fast, non-consing hash of
+a buffer's contents.
+
+---
+** 'fill-paragraph' no longer marks the buffer as changed unless it
+actually changed something.
+
+---
+** The locale language name 'ca' is now mapped to the language
+environment 'Catalan', which has been added.
+
+---
+** 'align-regexp' has a separate history for its interactive argument.
+'align-regexp' no longer shares its history with all other
+history-less functions that use 'read-string'.
+
++++
+** The networking code has been reworked so that it's more
+asynchronous than it was (when specifying :nowait t in
+'make-network-process'). How asynchronous it is varies based on the
+capabilities of the system, but on a typical GNU/Linux system the DNS
+resolution, the connection, and (for TLS streams) the TLS negotiation
+are all done without blocking the main Emacs thread. To get
+asynchronous TLS, the TLS boot parameters have to be passed in (see
+the manual for details).
+
+Certain process oriented functions (like 'process-datagram-address')
+will block until socket setup has been performed. The recommended way
+to deal with asynchronous sockets is to avoid interacting with them
+until they have changed status to "run". This is most easily done
+from a process sentinel.
+
+** 'make-network-process' and 'open-network-stream' sometimes allowed
+:service to be an integer string (e.g., :service "993") and sometimes
+required an integer (e.g., :service 993). This difference has been
+eliminated, and integer strings work everywhere.
+
+** It is possible to disable attempted recovery on fatal signals.
+
+Two new variables support disabling attempts to recover from stack
+overflow and to avoid automatic auto-save when Emacs is delivered a
+fatal signal. 'attempt-stack-overflow-recovery', if set to 'nil',
+will disable attempts to recover from C stack overflows; Emacs will
+then crash as with any other fatal signal.
+'attempt-orderly-shutdown-on-fatal-signal', if set to 'nil', will
+disable attempts to auto-save the session and shut down in an orderly
+fashion when Emacs receives a fatal signal; instead, Emacs will
+terminate immediately. Both variables are non-'nil' by default.
+These variables are for users who would like to avoid the small
+probability of data corruption due to techniques Emacs uses to recover
+in these situations.
+
++++
+** File local and directory local variables are now initialized each
+time the major mode is set, not just when the file is first visited.
+These local variables will thus not vanish on setting a major mode.
+
++++
+** A second dir-local file (.dir-locals-2.el) is now accepted.
+See the variable 'dir-locals-file-2' for more information.
+
+---
+** International domain names (IDNA) are now encoded via the new
+puny.el library, so that one can visit web sites with non-ASCII URLs.
+
++++
+** The new 'timer-list' command lists all active timers in a buffer,
+where you can cancel them with the 'c' command.
+
++++
+** The new function 'read-multiple-choice' prompts for multiple-choice
+questions, with a handy way to display help texts.
+
++++
+** 'switch-to-buffer-preserve-window-point' now defaults to t.
+
+
+* Editing Changes in Emacs 25.2
+
++++
+** New bindings for 'query-replace-map'.
+'undo', undo the last replacement; bound to 'u'.
+'undo-all', undo all replacements; bound to 'U'.
+
+** 'delete-trailing-whitespace' deletes whitespace after form feed.
+In modes where form feed was treated as a whitespace character,
+'delete-trailing-whitespace' would keep lines containing it unchanged.
+It now deletes whitespace after the last form feed thus behaving the
+same as in modes where the character is not whitespace.
+
+
+* Changes in Specialized Modes and Packages in Emacs 25.2
+
+** Ibuffer
+
+---
+*** A new command 'ibuffer-copy-buffername-as-kill'; bound
+to 'B'.
+
+---
+*** New command 'ibuffer-change-marks'; bound to '* c'.
+
+---
+*** A new command 'ibuffer-mark-by-locked' to mark
+all locked buffers; bound to '% L'.
+
+---
+*** A new option 'ibuffer-locked-char' to indicate
+locked buffers; Ibuffer shows a new column displaying
+'ibuffer-locked-char' for locked buffers.
+
+---
+*** A new command 'ibuffer-unmark-all-marks' to unmark
+all buffers without asking confirmation; bound to
+'U'; 'ibuffer-do-replace-regexp' bound to 'r'.
+
+---
+*** A new command `ibuffer-mark-by-content-regexp' to mark buffers
+whose content matches a regexp; bound to '% g'.
+
+---
+*** Two new options `ibuffer-never-search-content-name' and
+`ibuffer-never-search-content-mode' used by
+`ibuffer-mark-by-content-regexp'.
+
+** Compilation mode
+
+---
+*** Messages from CMake are now recognized.
+
+** Dired
+
++++
+*** A New option 'dired-always-read-filesystem' default to nil.
+If non-nil, buffers visiting files are reverted before search them;
+for instance, in 'dired-mark-files-containing-regexp' a non-nil value
+of this option means the file is revisited in a temporary buffer;
+this temporary buffer is the actual buffer searched: the original buffer
+visiting the file is not modified.
+
++++
+*** In wdired, when editing files to contain slash characters,
+the resulting directories are automatically created. Whether to do
+this is controlled by the 'wdired-create-parent-directories' variable.
+
++++
+*** 'W' is now bound to 'browse-url-of-dired-file', and is useful for
+viewing HTML files and the like.
+
+** Ediff
+
+*** Ediff can be prevented from pausing 1 second after reaching a
+breakpoint (e.g. with "f" and "o") by customizing the new option
+'edebug-sit-on-break'.
+
+** eww
+
++++
+*** A new 's' command for switching to another eww buffer via the minibuffer.
+
+---
+*** The 'o' command ('shr-save-contents') has moved to 'O' to avoid collision
+with the 'o' command from 'image-map'.
+
++++
+*** A new command 'C' ('eww-toggle-colors') can be used to toggle
+whether to use the HTML-specified colors or not. The user can also
+customize the 'shr-use-colors' variable.
+
+---
+*** Images that are being loaded are now marked with gray
+"placeholder" images of the size specified by the HTML. They are then
+replaced by the real images asynchronously, which will also now
+respect width/height HTML specs (unless they specify widths/heights
+bigger than the current window).
+
+** Images
+
++++
+*** Images are automatically scaled before displaying based on the
+'image-scaling-factor' variable (if Emacs supports scaling the images
+in question).
+
++++
+*** Images inserted with 'insert-image' and related functions get a
+keymap put into the text properties (or overlays) that span the
+image. This keymap binds keystrokes for manipulating size and
+rotation, as well as saving the image to a file. These commands are
+also available in 'image-mode'.
+
++++
+*** A new library for creating and manipulating SVG images has been
+added. See the "SVG Images" section in the lispref manual for
+details.
+
++++
+*** New setf-able function to access and set image parameters is
+provided: 'image-property'.
+
+---
+** The default 'Info-default-directory-list' no longer checks some obsolete
+directory suffixes (gnu, gnu/lib, gnu/lib/emacs, emacs, lib, lib/emacs)
+when searching for info directories.
+
++++
+** The commands that add ChangeLog entries now prefer a VCS root directory
+for the ChangeLog file, if none already exists. Customize
+'change-log-directory-files' to nil for the old behavior.
+
+---
+** Support for non-string values of 'time-stamp-format' has been removed.
+
+** Message
+
+---
+*** 'message-use-idna' now defaults to t (because Emacs comes with
+built-in IDNA support now).
+
+---
+*** When sending HTML messages with embedded images, and you have
+exiftool installed, and you rotate images with EXIF data (i.e.,
+JPEGs), the rotational information will be inserted into the outgoing
+image in the message. (The original image will not have its
+orientation affected.)
+
+---
+*** The 'message-valid-fqdn-regexp' variable has been removed, since
+there are now top-level domains added all the time. Message will no
+longer warn about sending emails to top-level domains it hasn't heard
+about.
+
+*** 'message-beginning-of-line' (bound to C-a) understands folded headers.
+In 'visual-line-mode' it will look for the true beginning of a header
+while in non-'visual-line-mode' it will move the point to the indented
+header's value.
+
+** Tramp
+
++++
+*** New connection method "sg", which supports editing files under a
+different group ID.
+
++++
+*** New connection method "doas" for OpenBSD hosts.
+
++++
+*** New connection method "gdrive", which allows to access Google
+Drive onsite repositories.
+
++++
+Setting the "ENV" environment variable in `tramp-remote-process-environment'
+enables reading of shell initialization files.
+
+---
+** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
+
+** CSS mode
+
+---
+*** Support for completing attribute values, at-rules, bang-rules, and
+HTML tags using the 'completion-at-point' command.
+
++++
+** Emacs now supports character name escape sequences in character and
+string literals. The syntax variants \N{character name} and
+\N{U+code} are supported.
+
++++
+** Prog mode has some support for multi-mode indentation.
+This allows better indentation support in modes that support multiple
+programming languages in the same buffer, like literate programming
+environments or ANTLR programs with embedded Python code.
+
+A major mode can provide indentation context for a sub-mode through
+the 'prog-indentation-context' variable. To support this, modes that
+provide indentation should use 'prog-widen' instead of 'widen' and
+'prog-first-column' instead of a literal zero. See the node
+"Mode-Specific Indent" in the ELisp manual for more details.
+
+** ERC
+
+*** New variable 'erc-default-port-tls' used to connect to TLS IRC
+servers.
+
+** URL
+
++++
+*** The new function 'url-cookie-delete-cookie' can be used to
+programmatically delete all cookies, or cookies from a specific
+domain.
+
++++
+*** 'url-retrieve-synchronously' now takes an optional timeout parameter.
+
+---
+*** The URL package now support HTTPS over proxies supporting CONNECT.
+
++++
+*** 'url-user-agent' now defaults to 'default', and the User-Agent
+string is computed dynamically based on 'url-privacy-level'.
+
+** VC and related modes
+
+---
+*** The VC state indicator in the mode line now defaults to more
+colorful faces to make it more obvious to the user what the state is.
+See the 'vc-faces' customization group.
+
+** CC mode
+
+*** Opening a .h file will turn C or C++ mode depending on language used.
+This is done with the help of 'c-or-c++-mode' function which analyses
+contents of the buffer to determine whether it's a C or C++ source
+file.
+
+
+* New Modes and Packages in Emacs 25.2
+
+** New Elisp data-structure library `radix-tree'.
+
+
+* Incompatible Lisp Changes in Emacs 25.2
+
++++
+** Resizing a frame no longer runs 'window-configuration-change-hook'.
+Put your function on 'window-size-change-functions' instead.
+
+** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term
+mode to send the same escape sequences that xterm does. This makes
+things like forward-word in readline work.
+
+---
+** hideshow mode got four key bindings that are analogous to outline
+mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e.'
+
+** The grep/rgrep/lgrep functions will now ask about saving files
+before running. This is controlled by the 'grep-save-buffers'
+variable.
+
++++
+** The variable 'text-quoting-style' no longer affects the treatment
+of curved quotes in format arguments to functions like 'message' and
+'format-message'. In particular, when this variable's value is
+'grave', all quotes in formats are output as-is.
+
+** Functions like 'check-declare-file' and 'check-declare-directory'
+now generate less chatter and more-compact diagnostics. The auxiliary
+function 'check-declare-errmsg' has been removed.
+
+
+* Lisp Changes in Emacs 25.2
+
+** New function undo-amalgamate-change-group to get rid of undo-boundaries
+between two states.
+
+** New var `definition-prefixes' is a hashtable mapping prefixes to the
+files where corresponding definitions can be found. This can be used
+to fetch definitions that are not yet loaded, for example for `C-h f'.
+
+** New var syntax-ppss-table to control the syntax-table used in syntax-ppss.
+
++++
+** 'define-derived-mode' can now specify an :after-hook form, which
+gets evaluated after the new mode's hook has run. This can be used to
+incorporate configuration changes made in the mode hook into the
+mode's setup.
+
+** Autoload files can be generated without timestamps,
+by setting 'autoload-timestamps' to nil.
+FIXME As an experiment, nil is the current default.
+If no insurmountable problems before next release, it can stay that way.
+
+---
+** 'gnutls-boot' now takes a parameter :complete-negotiation that says
+that negotiation should complete even on non-blocking sockets.
+
++++
+** New functions 'window-pixel-width-before-size-change' and
+'window-pixel-height-before-size-change' support detecting which
+window changed size when 'window-size-change-functions' are run.
+
++++
+** New function 'display-buffer-reuse-mode-window' is an action function
+suitable for use in 'display-buffer-alist'. For example, to avoid creating
+a new window when opening man pages when there's already one, use
+(add-to-list 'display-buffer-alist
+ '("\\`\\*Man .*\\*\\'" .
+ (display-buffer-reuse-mode-window
+ (inhibit-same-window . nil)
+ (mode . Man-mode))))
+
+---
+** There is now a new variable 'flyspell-sort-corrections-function'
+that allows changing the way corrections are sorted.
+
+---
+** The new command 'fortune-message' has been added, which displays
+fortunes in the echo area.
+
++++
+** New function 'func-arity' returns information about the argument list
+of an arbitrary function. This generalizes 'subr-arity' for functions
+that are not built-in primitives. We recommend using this new
+function instead of 'subr-arity'.
+
++++
+** 'parse-partial-sexp' state has a new element. Element 10 is
+non-nil when the last character scanned might be the first character
+of a two character construct, i.e., a comment delimiter or escaped
+character. Its value is the syntax of that last character.
+
++++
+** 'parse-partial-sexp''s state, element 9, has now been confirmed as
+permanent and documented, and may be used by Lisp programs. Its value
+is a list of currently open parenthesis positions, starting with the
+outermost parenthesis.
+
+---
+** 'read-color' will now display the color names using the color itself
+as the background color.
+
+** The function 'redirect-debugging-output' now works on platforms
+other than GNU/Linux.
+
++++
+** The new function 'string-version-lessp' compares strings by
+interpreting consecutive runs of numerical characters as numbers, and
+compares their numerical values. According to this predicate,
+"foo2.png" is smaller than "foo12.png".
+
++++
+** The new function 'char-from-name' converts a Unicode name string
+to the corresponding character code.
+
++++
+** New functions 'sxhash-eq' and 'sxhash-eql' return hash codes of a
+Lisp object suitable for use with 'eq' and 'eql' correspondingly. If
+two objects are 'eq' ('eql'), then the result of 'sxhash-eq'
+('sxhash-eql') on them will be the same.
+
++++
+** Function 'sxhash' has been renamed to 'sxhash-equal' for
+consistency with the new functions. For compatibility, 'sxhash'
+remains as an alias to 'sxhash-equal'.
+
++++
+** Time conversion functions that accept a time zone rule argument now
+allow it to be OFFSET or a list (OFFSET ABBR), where the integer
+OFFSET is a count of seconds east of Universal Time, and the string
+ABBR is a time zone abbreviation. The affected functions are
+'current-time-string', 'current-time-zone', 'decode-time',
+'format-time-string', and 'set-time-zone-rule'.
+
++++
+*** New basic face 'fixed-pitch-serif', for a fixed-width font with serifs.
+The Info-quoted and tex-verbatim faces now default to inheriting from it.
+
+** New built-in function `mapcan' which avoids unnecessary consing (and garbage
+collection).
+
++++
+** The new functions `make-nearby-temp-file' and `temporary-file-directory'
+can be used for creation of temporary files of remote or mounted directories.
+
+
+* Changes in Emacs 25.2 on Non-Free Operating Systems
+
+** Intercepting hotkeys on Windows 7 and later now works better.
+The new keyboard hooking code properly grabs system hotkeys such as
+Win-* and Alt-TAB, in a way that Emacs can get at them before the
+system. This makes the 'w32-register-hot-key' functionality work
+again on all versions of MS-Windows starting with Windows 7. On
+Windows NT and later you can now register any hotkey combination. (On
+Windows 9X, the previous limitations, spelled out in the Emacs manual,
+still apply.)
+
+** 'convert-standard-filename' no longer mirrors slashes on MS-Windows.
+Previously, on MS-Windows this function converted slash characters in
+file names into backslashes. It no longer does that.
+
+
* Installation Changes in Emacs 25.1
** Building Emacs now requires C99 or later.
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 496c7df811..11532832c3 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -542,26 +542,6 @@ Other systems allow to set LD_RUN_PATH in a similar way, but before
Emacs is linked. With LD_RUN_PATH set, the linker will include a
specified run-time search path in the executable.
-On some systems, Emacs can crash due to problems with dynamic
-linking. Specifically, on SGI Irix 6.5, crashes were reported with
-backtraces like this:
-
- (dbx) where
- 0 strcmp(0xf49239d, 0x4031184, 0x40302b4, 0x12, 0xf0000000, 0xf4923aa, 0x0, 0x492ddb2) ["/xlv22/ficus-jan23/work/irix/lib/libc/libc_n32_M3_ns/strings/strcmp.s":35, 0xfb7e480]
- 1 general_find_symbol(0xf49239d, 0x0, 0x0, 0x0, 0xf0000000, 0xf4923aa, 0x0, 0x492ddb2)
- ["/comp2/mtibuild/v73/workarea/v7.3/rld/rld.c":2140, 0xfb65a98]
- 2 resolve_symbol(0xf49239d, 0x4031184, 0x0, 0xfbdd438, 0x0, 0xf4923aa, 0x0, 0x492ddb2)
- ["/comp2/mtibuild/v73/workarea/v7.3/rld/rld.c":1947, 0xfb657e4]
- 3 lazy_text_resolve(0xd18, 0x1a3, 0x40302b4, 0x12, 0xf0000000, 0xf4923aa, 0x0, 0x492ddb2)
- ["/comp2/mtibuild/v73/workarea/v7.3/rld/rld.c":997, 0xfb64d44]
- 4 _rld_text_resolve(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
- ["/comp2/mtibuild/v73/workarea/v7.3/rld/rld_bridge.s":175, 0xfb6032c]
-
-('rld' is the dynamic linker.) We don't know why this
-happens, but setting the environment variable LD_BIND_NOW to 1 (which
-forces the dynamic linker to bind all shared objects early on) seems
-to work around the problem.
-
Please refer to the documentation of your dynamic linker for details.
*** When you run Ispell from Emacs, it reports a "misalignment" error.
@@ -598,17 +578,6 @@ you have a personal configuration file (normally ~/.aspell.conf), it
can cause this error. Remove that file, execute 'ispell-kill-ispell'
in Emacs, and then try spell-checking again.
-*** Emacs eats all file descriptors when using kqueue file notifications.
-See <http://debbugs.gnu.org/22814>.
-
-When you have a large number of buffers running auto-revert-mode, and
-Emacs is configured to use the kqueue file notification library, it
-uses an own file descriptor for every watched file. On systems with a
-small limit of file descriptors allowed per process, like OS X, you
-could run out of file descriptors. You won't be able to open new files.
-
-auto-revert-use-notify is set to nil in global-auto-revert-mode, therefore.
-
* Runtime problems related to font handling
** Characters are displayed as empty boxes or with wrong font under X.
@@ -2024,14 +1993,6 @@ This seems to be a GCC optimization bug that occurs for GCC 4.1.2 (-g
and -g -O2) and GCC 4.2.3 (-g -O and -g -O2). You can fix this by
compiling with GCC 4.2.3 or CC 5.7, with no optimizations.
-** Irix
-
-*** Irix: Trouble using ptys, or running out of ptys.
-
-The program mkpts (which may be in '/usr/adm' or '/usr/sbin') needs to
-be set-UID to root, or non-root programs like Emacs will not be able
-to allocate ptys reliably.
-
* Runtime problems specific to MS-Windows
** Emacs on Windows 9X requires UNICOWS.DLL
diff --git a/etc/compilation.txt b/etc/compilation.txt
index d26af20985..4e4ba38b55 100644
--- a/etc/compilation.txt
+++ b/etc/compilation.txt
@@ -84,6 +84,32 @@ Warning: this expression should have type unit.
File "/tmp/foo.py", line 10
+* CMake
+
+symbols: cmake cmake-info
+
+CMake Error at CMakeLists.txt:19 (hurz):
+ Unknown CMake command "hurz".
+CMake Warning at cmake/modules/UseUG.cmake:73 (find_package):
+ Could not find a package configuration file provided by "UG" (requested
+ version 3.11.0) with any of the following names:
+
+ UGConfig.cmake
+ ug-config.cmake
+
+ Add the installation prefix of "UG" to CMAKE_PREFIX_PATH or set "UG_DIR" to
+ a directory containing one of the above files. If "UG" provides a separate
+ development package or SDK, be sure it has been installed.
+Call Stack (most recent call first):
+ cmake/modules/DuneGridMacros.cmake:19 (include)
+ /home/joe/Project/EXA-DUNE/patches/dune-common/cmake/modules/DuneMacros.cmake:556 (include)
+ /home/joe/Project/EXA-DUNE/patches/dune-common/cmake/modules/DuneMacros.cmake:694 (dune_process_dependency_macros)
+ CMakeLists.txt:22 (dune_project)
+
+
+-- Could NOT find UG (missing: UG_DIR HAVE_UG)
+
+
* Apollo cc, 4.3BSD fc & IBM RS6000/AIX xlc compiler & Microtec mcc68k & GNAT (July 94)
symbol: comma
diff --git a/etc/nxml/00000-0007F.el b/etc/nxml/00000-0007F.el
deleted file mode 100644
index 4fc236b53f..0000000000
--- a/etc/nxml/00000-0007F.el
+++ /dev/null
@@ -1,98 +0,0 @@
-(nxml-define-char-name-set 'basic-latin
- '(("SPACE" #x0020)
- ("EXCLAMATION MARK" #x0021)
- ("QUOTATION MARK" #x0022)
- ("NUMBER SIGN" #x0023)
- ("DOLLAR SIGN" #x0024)
- ("PERCENT SIGN" #x0025)
- ("AMPERSAND" #x0026)
- ("APOSTROPHE" #x0027)
- ("LEFT PARENTHESIS" #x0028)
- ("RIGHT PARENTHESIS" #x0029)
- ("ASTERISK" #x002A)
- ("PLUS SIGN" #x002B)
- ("COMMA" #x002C)
- ("HYPHEN-MINUS" #x002D)
- ("FULL STOP" #x002E)
- ("SOLIDUS" #x002F)
- ("DIGIT ZERO" #x0030)
- ("DIGIT ONE" #x0031)
- ("DIGIT TWO" #x0032)
- ("DIGIT THREE" #x0033)
- ("DIGIT FOUR" #x0034)
- ("DIGIT FIVE" #x0035)
- ("DIGIT SIX" #x0036)
- ("DIGIT SEVEN" #x0037)
- ("DIGIT EIGHT" #x0038)
- ("DIGIT NINE" #x0039)
- ("COLON" #x003A)
- ("SEMICOLON" #x003B)
- ("LESS-THAN SIGN" #x003C)
- ("EQUALS SIGN" #x003D)
- ("GREATER-THAN SIGN" #x003E)
- ("QUESTION MARK" #x003F)
- ("COMMERCIAL AT" #x0040)
- ("LATIN CAPITAL LETTER A" #x0041)
- ("LATIN CAPITAL LETTER B" #x0042)
- ("LATIN CAPITAL LETTER C" #x0043)
- ("LATIN CAPITAL LETTER D" #x0044)
- ("LATIN CAPITAL LETTER E" #x0045)
- ("LATIN CAPITAL LETTER F" #x0046)
- ("LATIN CAPITAL LETTER G" #x0047)
- ("LATIN CAPITAL LETTER H" #x0048)
- ("LATIN CAPITAL LETTER I" #x0049)
- ("LATIN CAPITAL LETTER J" #x004A)
- ("LATIN CAPITAL LETTER K" #x004B)
- ("LATIN CAPITAL LETTER L" #x004C)
- ("LATIN CAPITAL LETTER M" #x004D)
- ("LATIN CAPITAL LETTER N" #x004E)
- ("LATIN CAPITAL LETTER O" #x004F)
- ("LATIN CAPITAL LETTER P" #x0050)
- ("LATIN CAPITAL LETTER Q" #x0051)
- ("LATIN CAPITAL LETTER R" #x0052)
- ("LATIN CAPITAL LETTER S" #x0053)
- ("LATIN CAPITAL LETTER T" #x0054)
- ("LATIN CAPITAL LETTER U" #x0055)
- ("LATIN CAPITAL LETTER V" #x0056)
- ("LATIN CAPITAL LETTER W" #x0057)
- ("LATIN CAPITAL LETTER X" #x0058)
- ("LATIN CAPITAL LETTER Y" #x0059)
- ("LATIN CAPITAL LETTER Z" #x005A)
- ("LEFT SQUARE BRACKET" #x005B)
- ("REVERSE SOLIDUS" #x005C)
- ("RIGHT SQUARE BRACKET" #x005D)
- ("CIRCUMFLEX ACCENT" #x005E)
- ("LOW LINE" #x005F)
- ("GRAVE ACCENT" #x0060)
- ("LATIN SMALL LETTER A" #x0061)
- ("LATIN SMALL LETTER B" #x0062)
- ("LATIN SMALL LETTER C" #x0063)
- ("LATIN SMALL LETTER D" #x0064)
- ("LATIN SMALL LETTER E" #x0065)
- ("LATIN SMALL LETTER F" #x0066)
- ("LATIN SMALL LETTER G" #x0067)
- ("LATIN SMALL LETTER H" #x0068)
- ("LATIN SMALL LETTER I" #x0069)
- ("LATIN SMALL LETTER J" #x006A)
- ("LATIN SMALL LETTER K" #x006B)
- ("LATIN SMALL LETTER L" #x006C)
- ("LATIN SMALL LETTER M" #x006D)
- ("LATIN SMALL LETTER N" #x006E)
- ("LATIN SMALL LETTER O" #x006F)
- ("LATIN SMALL LETTER P" #x0070)
- ("LATIN SMALL LETTER Q" #x0071)
- ("LATIN SMALL LETTER R" #x0072)
- ("LATIN SMALL LETTER S" #x0073)
- ("LATIN SMALL LETTER T" #x0074)
- ("LATIN SMALL LETTER U" #x0075)
- ("LATIN SMALL LETTER V" #x0076)
- ("LATIN SMALL LETTER W" #x0077)
- ("LATIN SMALL LETTER X" #x0078)
- ("LATIN SMALL LETTER Y" #x0079)
- ("LATIN SMALL LETTER Z" #x007A)
- ("LEFT CURLY BRACKET" #x007B)
- ("VERTICAL LINE" #x007C)
- ("RIGHT CURLY BRACKET" #x007D)
- ("TILDE" #x007E)
- ))
-
diff --git a/etc/nxml/00080-000FF.el b/etc/nxml/00080-000FF.el
deleted file mode 100644
index 8f00b10afa..0000000000
--- a/etc/nxml/00080-000FF.el
+++ /dev/null
@@ -1,99 +0,0 @@
-(nxml-define-char-name-set 'latin-1-supplement
- '(("NO-BREAK SPACE" #x00A0)
- ("INVERTED EXCLAMATION MARK" #x00A1)
- ("CENT SIGN" #x00A2)
- ("POUND SIGN" #x00A3)
- ("CURRENCY SIGN" #x00A4)
- ("YEN SIGN" #x00A5)
- ("BROKEN BAR" #x00A6)
- ("SECTION SIGN" #x00A7)
- ("DIAERESIS" #x00A8)
- ("COPYRIGHT SIGN" #x00A9)
- ("FEMININE ORDINAL INDICATOR" #x00AA)
- ("LEFT-POINTING DOUBLE ANGLE QUOTATION MARK" #x00AB)
- ("NOT SIGN" #x00AC)
- ("SOFT HYPHEN" #x00AD)
- ("REGISTERED SIGN" #x00AE)
- ("MACRON" #x00AF)
- ("DEGREE SIGN" #x00B0)
- ("PLUS-MINUS SIGN" #x00B1)
- ("SUPERSCRIPT TWO" #x00B2)
- ("SUPERSCRIPT THREE" #x00B3)
- ("ACUTE ACCENT" #x00B4)
- ("MICRO SIGN" #x00B5)
- ("PILCROW SIGN" #x00B6)
- ("MIDDLE DOT" #x00B7)
- ("CEDILLA" #x00B8)
- ("SUPERSCRIPT ONE" #x00B9)
- ("MASCULINE ORDINAL INDICATOR" #x00BA)
- ("RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK" #x00BB)
- ("VULGAR FRACTION ONE QUARTER" #x00BC)
- ("VULGAR FRACTION ONE HALF" #x00BD)
- ("VULGAR FRACTION THREE QUARTERS" #x00BE)
- ("INVERTED QUESTION MARK" #x00BF)
- ("LATIN CAPITAL LETTER A WITH GRAVE" #x00C0)
- ("LATIN CAPITAL LETTER A WITH ACUTE" #x00C1)
- ("LATIN CAPITAL LETTER A WITH CIRCUMFLEX" #x00C2)
- ("LATIN CAPITAL LETTER A WITH TILDE" #x00C3)
- ("LATIN CAPITAL LETTER A WITH DIAERESIS" #x00C4)
- ("LATIN CAPITAL LETTER A WITH RING ABOVE" #x00C5)
- ("LATIN CAPITAL LETTER AE" #x00C6)
- ("LATIN CAPITAL LETTER C WITH CEDILLA" #x00C7)
- ("LATIN CAPITAL LETTER E WITH GRAVE" #x00C8)
- ("LATIN CAPITAL LETTER E WITH ACUTE" #x00C9)
- ("LATIN CAPITAL LETTER E WITH CIRCUMFLEX" #x00CA)
- ("LATIN CAPITAL LETTER E WITH DIAERESIS" #x00CB)
- ("LATIN CAPITAL LETTER I WITH GRAVE" #x00CC)
- ("LATIN CAPITAL LETTER I WITH ACUTE" #x00CD)
- ("LATIN CAPITAL LETTER I WITH CIRCUMFLEX" #x00CE)
- ("LATIN CAPITAL LETTER I WITH DIAERESIS" #x00CF)
- ("LATIN CAPITAL LETTER ETH" #x00D0)
- ("LATIN CAPITAL LETTER N WITH TILDE" #x00D1)
- ("LATIN CAPITAL LETTER O WITH GRAVE" #x00D2)
- ("LATIN CAPITAL LETTER O WITH ACUTE" #x00D3)
- ("LATIN CAPITAL LETTER O WITH CIRCUMFLEX" #x00D4)
- ("LATIN CAPITAL LETTER O WITH TILDE" #x00D5)
- ("LATIN CAPITAL LETTER O WITH DIAERESIS" #x00D6)
- ("MULTIPLICATION SIGN" #x00D7)
- ("LATIN CAPITAL LETTER O WITH STROKE" #x00D8)
- ("LATIN CAPITAL LETTER U WITH GRAVE" #x00D9)
- ("LATIN CAPITAL LETTER U WITH ACUTE" #x00DA)
- ("LATIN CAPITAL LETTER U WITH CIRCUMFLEX" #x00DB)
- ("LATIN CAPITAL LETTER U WITH DIAERESIS" #x00DC)
- ("LATIN CAPITAL LETTER Y WITH ACUTE" #x00DD)
- ("LATIN CAPITAL LETTER THORN" #x00DE)
- ("LATIN SMALL LETTER SHARP S" #x00DF)
- ("LATIN SMALL LETTER A WITH GRAVE" #x00E0)
- ("LATIN SMALL LETTER A WITH ACUTE" #x00E1)
- ("LATIN SMALL LETTER A WITH CIRCUMFLEX" #x00E2)
- ("LATIN SMALL LETTER A WITH TILDE" #x00E3)
- ("LATIN SMALL LETTER A WITH DIAERESIS" #x00E4)
- ("LATIN SMALL LETTER A WITH RING ABOVE" #x00E5)
- ("LATIN SMALL LETTER AE" #x00E6)
- ("LATIN SMALL LETTER C WITH CEDILLA" #x00E7)
- ("LATIN SMALL LETTER E WITH GRAVE" #x00E8)
- ("LATIN SMALL LETTER E WITH ACUTE" #x00E9)
- ("LATIN SMALL LETTER E WITH CIRCUMFLEX" #x00EA)
- ("LATIN SMALL LETTER E WITH DIAERESIS" #x00EB)
- ("LATIN SMALL LETTER I WITH GRAVE" #x00EC)
- ("LATIN SMALL LETTER I WITH ACUTE" #x00ED)
- ("LATIN SMALL LETTER I WITH CIRCUMFLEX" #x00EE)
- ("LATIN SMALL LETTER I WITH DIAERESIS" #x00EF)
- ("LATIN SMALL LETTER ETH" #x00F0)
- ("LATIN SMALL LETTER N WITH TILDE" #x00F1)
- ("LATIN SMALL LETTER O WITH GRAVE" #x00F2)
- ("LATIN SMALL LETTER O WITH ACUTE" #x00F3)
- ("LATIN SMALL LETTER O WITH CIRCUMFLEX" #x00F4)
- ("LATIN SMALL LETTER O WITH TILDE" #x00F5)
- ("LATIN SMALL LETTER O WITH DIAERESIS" #x00F6)
- ("DIVISION SIGN" #x00F7)
- ("LATIN SMALL LETTER O WITH STROKE" #x00F8)
- ("LATIN SMALL LETTER U WITH GRAVE" #x00F9)
- ("LATIN SMALL LETTER U WITH ACUTE" #x00FA)
- ("LATIN SMALL LETTER U WITH CIRCUMFLEX" #x00FB)
- ("LATIN SMALL LETTER U WITH DIAERESIS" #x00FC)
- ("LATIN SMALL LETTER Y WITH ACUTE" #x00FD)
- ("LATIN SMALL LETTER THORN" #x00FE)
- ("LATIN SMALL LETTER Y WITH DIAERESIS" #x00FF)
- ))
-
diff --git a/etc/nxml/00100-0017F.el b/etc/nxml/00100-0017F.el
deleted file mode 100644
index f78006615e..0000000000
--- a/etc/nxml/00100-0017F.el
+++ /dev/null
@@ -1,131 +0,0 @@
-(nxml-define-char-name-set 'latin-extended-a
- '(("LATIN CAPITAL LETTER A WITH MACRON" #x0100)
- ("LATIN SMALL LETTER A WITH MACRON" #x0101)
- ("LATIN CAPITAL LETTER A WITH BREVE" #x0102)
- ("LATIN SMALL LETTER A WITH BREVE" #x0103)
- ("LATIN CAPITAL LETTER A WITH OGONEK" #x0104)
- ("LATIN SMALL LETTER A WITH OGONEK" #x0105)
- ("LATIN CAPITAL LETTER C WITH ACUTE" #x0106)
- ("LATIN SMALL LETTER C WITH ACUTE" #x0107)
- ("LATIN CAPITAL LETTER C WITH CIRCUMFLEX" #x0108)
- ("LATIN SMALL LETTER C WITH CIRCUMFLEX" #x0109)
- ("LATIN CAPITAL LETTER C WITH DOT ABOVE" #x010A)
- ("LATIN SMALL LETTER C WITH DOT ABOVE" #x010B)
- ("LATIN CAPITAL LETTER C WITH CARON" #x010C)
- ("LATIN SMALL LETTER C WITH CARON" #x010D)
- ("LATIN CAPITAL LETTER D WITH CARON" #x010E)
- ("LATIN SMALL LETTER D WITH CARON" #x010F)
- ("LATIN CAPITAL LETTER D WITH STROKE" #x0110)
- ("LATIN SMALL LETTER D WITH STROKE" #x0111)
- ("LATIN CAPITAL LETTER E WITH MACRON" #x0112)
- ("LATIN SMALL LETTER E WITH MACRON" #x0113)
- ("LATIN CAPITAL LETTER E WITH BREVE" #x0114)
- ("LATIN SMALL LETTER E WITH BREVE" #x0115)
- ("LATIN CAPITAL LETTER E WITH DOT ABOVE" #x0116)
- ("LATIN SMALL LETTER E WITH DOT ABOVE" #x0117)
- ("LATIN CAPITAL LETTER E WITH OGONEK" #x0118)
- ("LATIN SMALL LETTER E WITH OGONEK" #x0119)
- ("LATIN CAPITAL LETTER E WITH CARON" #x011A)
- ("LATIN SMALL LETTER E WITH CARON" #x011B)
- ("LATIN CAPITAL LETTER G WITH CIRCUMFLEX" #x011C)
- ("LATIN SMALL LETTER G WITH CIRCUMFLEX" #x011D)
- ("LATIN CAPITAL LETTER G WITH BREVE" #x011E)
- ("LATIN SMALL LETTER G WITH BREVE" #x011F)
- ("LATIN CAPITAL LETTER G WITH DOT ABOVE" #x0120)
- ("LATIN SMALL LETTER G WITH DOT ABOVE" #x0121)
- ("LATIN CAPITAL LETTER G WITH CEDILLA" #x0122)
- ("LATIN SMALL LETTER G WITH CEDILLA" #x0123)
- ("LATIN CAPITAL LETTER H WITH CIRCUMFLEX" #x0124)
- ("LATIN SMALL LETTER H WITH CIRCUMFLEX" #x0125)
- ("LATIN CAPITAL LETTER H WITH STROKE" #x0126)
- ("LATIN SMALL LETTER H WITH STROKE" #x0127)
- ("LATIN CAPITAL LETTER I WITH TILDE" #x0128)
- ("LATIN SMALL LETTER I WITH TILDE" #x0129)
- ("LATIN CAPITAL LETTER I WITH MACRON" #x012A)
- ("LATIN SMALL LETTER I WITH MACRON" #x012B)
- ("LATIN CAPITAL LETTER I WITH BREVE" #x012C)
- ("LATIN SMALL LETTER I WITH BREVE" #x012D)
- ("LATIN CAPITAL LETTER I WITH OGONEK" #x012E)
- ("LATIN SMALL LETTER I WITH OGONEK" #x012F)
- ("LATIN CAPITAL LETTER I WITH DOT ABOVE" #x0130)
- ("LATIN SMALL LETTER DOTLESS I" #x0131)
- ("LATIN CAPITAL LIGATURE IJ" #x0132)
- ("LATIN SMALL LIGATURE IJ" #x0133)
- ("LATIN CAPITAL LETTER J WITH CIRCUMFLEX" #x0134)
- ("LATIN SMALL LETTER J WITH CIRCUMFLEX" #x0135)
- ("LATIN CAPITAL LETTER K WITH CEDILLA" #x0136)
- ("LATIN SMALL LETTER K WITH CEDILLA" #x0137)
- ("LATIN SMALL LETTER KRA" #x0138)
- ("LATIN CAPITAL LETTER L WITH ACUTE" #x0139)
- ("LATIN SMALL LETTER L WITH ACUTE" #x013A)
- ("LATIN CAPITAL LETTER L WITH CEDILLA" #x013B)
- ("LATIN SMALL LETTER L WITH CEDILLA" #x013C)
- ("LATIN CAPITAL LETTER L WITH CARON" #x013D)
- ("LATIN SMALL LETTER L WITH CARON" #x013E)
- ("LATIN CAPITAL LETTER L WITH MIDDLE DOT" #x013F)
- ("LATIN SMALL LETTER L WITH MIDDLE DOT" #x0140)
- ("LATIN CAPITAL LETTER L WITH STROKE" #x0141)
- ("LATIN SMALL LETTER L WITH STROKE" #x0142)
- ("LATIN CAPITAL LETTER N WITH ACUTE" #x0143)
- ("LATIN SMALL LETTER N WITH ACUTE" #x0144)
- ("LATIN CAPITAL LETTER N WITH CEDILLA" #x0145)
- ("LATIN SMALL LETTER N WITH CEDILLA" #x0146)
- ("LATIN CAPITAL LETTER N WITH CARON" #x0147)
- ("LATIN SMALL LETTER N WITH CARON" #x0148)
- ("LATIN SMALL LETTER N PRECEDED BY APOSTROPHE" #x0149)
- ("LATIN CAPITAL LETTER ENG" #x014A)
- ("LATIN SMALL LETTER ENG" #x014B)
- ("LATIN CAPITAL LETTER O WITH MACRON" #x014C)
- ("LATIN SMALL LETTER O WITH MACRON" #x014D)
- ("LATIN CAPITAL LETTER O WITH BREVE" #x014E)
- ("LATIN SMALL LETTER O WITH BREVE" #x014F)
- ("LATIN CAPITAL LETTER O WITH DOUBLE ACUTE" #x0150)
- ("LATIN SMALL LETTER O WITH DOUBLE ACUTE" #x0151)
- ("LATIN CAPITAL LIGATURE OE" #x0152)
- ("LATIN SMALL LIGATURE OE" #x0153)
- ("LATIN CAPITAL LETTER R WITH ACUTE" #x0154)
- ("LATIN SMALL LETTER R WITH ACUTE" #x0155)
- ("LATIN CAPITAL LETTER R WITH CEDILLA" #x0156)
- ("LATIN SMALL LETTER R WITH CEDILLA" #x0157)
- ("LATIN CAPITAL LETTER R WITH CARON" #x0158)
- ("LATIN SMALL LETTER R WITH CARON" #x0159)
- ("LATIN CAPITAL LETTER S WITH ACUTE" #x015A)
- ("LATIN SMALL LETTER S WITH ACUTE" #x015B)
- ("LATIN CAPITAL LETTER S WITH CIRCUMFLEX" #x015C)
- ("LATIN SMALL LETTER S WITH CIRCUMFLEX" #x015D)
- ("LATIN CAPITAL LETTER S WITH CEDILLA" #x015E)
- ("LATIN SMALL LETTER S WITH CEDILLA" #x015F)
- ("LATIN CAPITAL LETTER S WITH CARON" #x0160)
- ("LATIN SMALL LETTER S WITH CARON" #x0161)
- ("LATIN CAPITAL LETTER T WITH CEDILLA" #x0162)
- ("LATIN SMALL LETTER T WITH CEDILLA" #x0163)
- ("LATIN CAPITAL LETTER T WITH CARON" #x0164)
- ("LATIN SMALL LETTER T WITH CARON" #x0165)
- ("LATIN CAPITAL LETTER T WITH STROKE" #x0166)
- ("LATIN SMALL LETTER T WITH STROKE" #x0167)
- ("LATIN CAPITAL LETTER U WITH TILDE" #x0168)
- ("LATIN SMALL LETTER U WITH TILDE" #x0169)
- ("LATIN CAPITAL LETTER U WITH MACRON" #x016A)
- ("LATIN SMALL LETTER U WITH MACRON" #x016B)
- ("LATIN CAPITAL LETTER U WITH BREVE" #x016C)
- ("LATIN SMALL LETTER U WITH BREVE" #x016D)
- ("LATIN CAPITAL LETTER U WITH RING ABOVE" #x016E)
- ("LATIN SMALL LETTER U WITH RING ABOVE" #x016F)
- ("LATIN CAPITAL LETTER U WITH DOUBLE ACUTE" #x0170)
- ("LATIN SMALL LETTER U WITH DOUBLE ACUTE" #x0171)
- ("LATIN CAPITAL LETTER U WITH OGONEK" #x0172)
- ("LATIN SMALL LETTER U WITH OGONEK" #x0173)
- ("LATIN CAPITAL LETTER W WITH CIRCUMFLEX" #x0174)
- ("LATIN SMALL LETTER W WITH CIRCUMFLEX" #x0175)
- ("LATIN CAPITAL LETTER Y WITH CIRCUMFLEX" #x0176)
- ("LATIN SMALL LETTER Y WITH CIRCUMFLEX" #x0177)
- ("LATIN CAPITAL LETTER Y WITH DIAERESIS" #x0178)
- ("LATIN CAPITAL LETTER Z WITH ACUTE" #x0179)
- ("LATIN SMALL LETTER Z WITH ACUTE" #x017A)
- ("LATIN CAPITAL LETTER Z WITH DOT ABOVE" #x017B)
- ("LATIN SMALL LETTER Z WITH DOT ABOVE" #x017C)
- ("LATIN CAPITAL LETTER Z WITH CARON" #x017D)
- ("LATIN SMALL LETTER Z WITH CARON" #x017E)
- ("LATIN SMALL LETTER LONG S" #x017F)
- ))
-
diff --git a/etc/nxml/00180-0024F.el b/etc/nxml/00180-0024F.el
deleted file mode 100644
index fe99beef0e..0000000000
--- a/etc/nxml/00180-0024F.el
+++ /dev/null
@@ -1,182 +0,0 @@
-(nxml-define-char-name-set 'latin-extended-b
- '(("LATIN SMALL LETTER B WITH STROKE" #x0180)
- ("LATIN CAPITAL LETTER B WITH HOOK" #x0181)
- ("LATIN CAPITAL LETTER B WITH TOPBAR" #x0182)
- ("LATIN SMALL LETTER B WITH TOPBAR" #x0183)
- ("LATIN CAPITAL LETTER TONE SIX" #x0184)
- ("LATIN SMALL LETTER TONE SIX" #x0185)
- ("LATIN CAPITAL LETTER OPEN O" #x0186)
- ("LATIN CAPITAL LETTER C WITH HOOK" #x0187)
- ("LATIN SMALL LETTER C WITH HOOK" #x0188)
- ("LATIN CAPITAL LETTER AFRICAN D" #x0189)
- ("LATIN CAPITAL LETTER D WITH HOOK" #x018A)
- ("LATIN CAPITAL LETTER D WITH TOPBAR" #x018B)
- ("LATIN SMALL LETTER D WITH TOPBAR" #x018C)
- ("LATIN SMALL LETTER TURNED DELTA" #x018D)
- ("LATIN CAPITAL LETTER REVERSED E" #x018E)
- ("LATIN CAPITAL LETTER SCHWA" #x018F)
- ("LATIN CAPITAL LETTER OPEN E" #x0190)
- ("LATIN CAPITAL LETTER F WITH HOOK" #x0191)
- ("LATIN SMALL LETTER F WITH HOOK" #x0192)
- ("LATIN CAPITAL LETTER G WITH HOOK" #x0193)
- ("LATIN CAPITAL LETTER GAMMA" #x0194)
- ("LATIN SMALL LETTER HV" #x0195)
- ("LATIN CAPITAL LETTER IOTA" #x0196)
- ("LATIN CAPITAL LETTER I WITH STROKE" #x0197)
- ("LATIN CAPITAL LETTER K WITH HOOK" #x0198)
- ("LATIN SMALL LETTER K WITH HOOK" #x0199)
- ("LATIN SMALL LETTER L WITH BAR" #x019A)
- ("LATIN SMALL LETTER LAMBDA WITH STROKE" #x019B)
- ("LATIN CAPITAL LETTER TURNED M" #x019C)
- ("LATIN CAPITAL LETTER N WITH LEFT HOOK" #x019D)
- ("LATIN SMALL LETTER N WITH LONG RIGHT LEG" #x019E)
- ("LATIN CAPITAL LETTER O WITH MIDDLE TILDE" #x019F)
- ("LATIN CAPITAL LETTER O WITH HORN" #x01A0)
- ("LATIN SMALL LETTER O WITH HORN" #x01A1)
- ("LATIN CAPITAL LETTER OI" #x01A2)
- ("LATIN SMALL LETTER OI" #x01A3)
- ("LATIN CAPITAL LETTER P WITH HOOK" #x01A4)
- ("LATIN SMALL LETTER P WITH HOOK" #x01A5)
- ("LATIN LETTER YR" #x01A6)
- ("LATIN CAPITAL LETTER TONE TWO" #x01A7)
- ("LATIN SMALL LETTER TONE TWO" #x01A8)
- ("LATIN CAPITAL LETTER ESH" #x01A9)
- ("LATIN LETTER REVERSED ESH LOOP" #x01AA)
- ("LATIN SMALL LETTER T WITH PALATAL HOOK" #x01AB)
- ("LATIN CAPITAL LETTER T WITH HOOK" #x01AC)
- ("LATIN SMALL LETTER T WITH HOOK" #x01AD)
- ("LATIN CAPITAL LETTER T WITH RETROFLEX HOOK" #x01AE)
- ("LATIN CAPITAL LETTER U WITH HORN" #x01AF)
- ("LATIN SMALL LETTER U WITH HORN" #x01B0)
- ("LATIN CAPITAL LETTER UPSILON" #x01B1)
- ("LATIN CAPITAL LETTER V WITH HOOK" #x01B2)
- ("LATIN CAPITAL LETTER Y WITH HOOK" #x01B3)
- ("LATIN SMALL LETTER Y WITH HOOK" #x01B4)
- ("LATIN CAPITAL LETTER Z WITH STROKE" #x01B5)
- ("LATIN SMALL LETTER Z WITH STROKE" #x01B6)
- ("LATIN CAPITAL LETTER EZH" #x01B7)
- ("LATIN CAPITAL LETTER EZH REVERSED" #x01B8)
- ("LATIN SMALL LETTER EZH REVERSED" #x01B9)
- ("LATIN SMALL LETTER EZH WITH TAIL" #x01BA)
- ("LATIN LETTER TWO WITH STROKE" #x01BB)
- ("LATIN CAPITAL LETTER TONE FIVE" #x01BC)
- ("LATIN SMALL LETTER TONE FIVE" #x01BD)
- ("LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE" #x01BE)
- ("LATIN LETTER WYNN" #x01BF)
- ("LATIN LETTER DENTAL CLICK" #x01C0)
- ("LATIN LETTER LATERAL CLICK" #x01C1)
- ("LATIN LETTER ALVEOLAR CLICK" #x01C2)
- ("LATIN LETTER RETROFLEX CLICK" #x01C3)
- ("LATIN CAPITAL LETTER DZ WITH CARON" #x01C4)
- ("LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON" #x01C5)
- ("LATIN SMALL LETTER DZ WITH CARON" #x01C6)
- ("LATIN CAPITAL LETTER LJ" #x01C7)
- ("LATIN CAPITAL LETTER L WITH SMALL LETTER J" #x01C8)
- ("LATIN SMALL LETTER LJ" #x01C9)
- ("LATIN CAPITAL LETTER NJ" #x01CA)
- ("LATIN CAPITAL LETTER N WITH SMALL LETTER J" #x01CB)
- ("LATIN SMALL LETTER NJ" #x01CC)
- ("LATIN CAPITAL LETTER A WITH CARON" #x01CD)
- ("LATIN SMALL LETTER A WITH CARON" #x01CE)
- ("LATIN CAPITAL LETTER I WITH CARON" #x01CF)
- ("LATIN SMALL LETTER I WITH CARON" #x01D0)
- ("LATIN CAPITAL LETTER O WITH CARON" #x01D1)
- ("LATIN SMALL LETTER O WITH CARON" #x01D2)
- ("LATIN CAPITAL LETTER U WITH CARON" #x01D3)
- ("LATIN SMALL LETTER U WITH CARON" #x01D4)
- ("LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON" #x01D5)
- ("LATIN SMALL LETTER U WITH DIAERESIS AND MACRON" #x01D6)
- ("LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE" #x01D7)
- ("LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE" #x01D8)
- ("LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON" #x01D9)
- ("LATIN SMALL LETTER U WITH DIAERESIS AND CARON" #x01DA)
- ("LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE" #x01DB)
- ("LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE" #x01DC)
- ("LATIN SMALL LETTER TURNED E" #x01DD)
- ("LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON" #x01DE)
- ("LATIN SMALL LETTER A WITH DIAERESIS AND MACRON" #x01DF)
- ("LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON" #x01E0)
- ("LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON" #x01E1)
- ("LATIN CAPITAL LETTER AE WITH MACRON" #x01E2)
- ("LATIN SMALL LETTER AE WITH MACRON" #x01E3)
- ("LATIN CAPITAL LETTER G WITH STROKE" #x01E4)
- ("LATIN SMALL LETTER G WITH STROKE" #x01E5)
- ("LATIN CAPITAL LETTER G WITH CARON" #x01E6)
- ("LATIN SMALL LETTER G WITH CARON" #x01E7)
- ("LATIN CAPITAL LETTER K WITH CARON" #x01E8)
- ("LATIN SMALL LETTER K WITH CARON" #x01E9)
- ("LATIN CAPITAL LETTER O WITH OGONEK" #x01EA)
- ("LATIN SMALL LETTER O WITH OGONEK" #x01EB)
- ("LATIN CAPITAL LETTER O WITH OGONEK AND MACRON" #x01EC)
- ("LATIN SMALL LETTER O WITH OGONEK AND MACRON" #x01ED)
- ("LATIN CAPITAL LETTER EZH WITH CARON" #x01EE)
- ("LATIN SMALL LETTER EZH WITH CARON" #x01EF)
- ("LATIN SMALL LETTER J WITH CARON" #x01F0)
- ("LATIN CAPITAL LETTER DZ" #x01F1)
- ("LATIN CAPITAL LETTER D WITH SMALL LETTER Z" #x01F2)
- ("LATIN SMALL LETTER DZ" #x01F3)
- ("LATIN CAPITAL LETTER G WITH ACUTE" #x01F4)
- ("LATIN SMALL LETTER G WITH ACUTE" #x01F5)
- ("LATIN CAPITAL LETTER HWAIR" #x01F6)
- ("LATIN CAPITAL LETTER WYNN" #x01F7)
- ("LATIN CAPITAL LETTER N WITH GRAVE" #x01F8)
- ("LATIN SMALL LETTER N WITH GRAVE" #x01F9)
- ("LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE" #x01FA)
- ("LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE" #x01FB)
- ("LATIN CAPITAL LETTER AE WITH ACUTE" #x01FC)
- ("LATIN SMALL LETTER AE WITH ACUTE" #x01FD)
- ("LATIN CAPITAL LETTER O WITH STROKE AND ACUTE" #x01FE)
- ("LATIN SMALL LETTER O WITH STROKE AND ACUTE" #x01FF)
- ("LATIN CAPITAL LETTER A WITH DOUBLE GRAVE" #x0200)
- ("LATIN SMALL LETTER A WITH DOUBLE GRAVE" #x0201)
- ("LATIN CAPITAL LETTER A WITH INVERTED BREVE" #x0202)
- ("LATIN SMALL LETTER A WITH INVERTED BREVE" #x0203)
- ("LATIN CAPITAL LETTER E WITH DOUBLE GRAVE" #x0204)
- ("LATIN SMALL LETTER E WITH DOUBLE GRAVE" #x0205)
- ("LATIN CAPITAL LETTER E WITH INVERTED BREVE" #x0206)
- ("LATIN SMALL LETTER E WITH INVERTED BREVE" #x0207)
- ("LATIN CAPITAL LETTER I WITH DOUBLE GRAVE" #x0208)
- ("LATIN SMALL LETTER I WITH DOUBLE GRAVE" #x0209)
- ("LATIN CAPITAL LETTER I WITH INVERTED BREVE" #x020A)
- ("LATIN SMALL LETTER I WITH INVERTED BREVE" #x020B)
- ("LATIN CAPITAL LETTER O WITH DOUBLE GRAVE" #x020C)
- ("LATIN SMALL LETTER O WITH DOUBLE GRAVE" #x020D)
- ("LATIN CAPITAL LETTER O WITH INVERTED BREVE" #x020E)
- ("LATIN SMALL LETTER O WITH INVERTED BREVE" #x020F)
- ("LATIN CAPITAL LETTER R WITH DOUBLE GRAVE" #x0210)
- ("LATIN SMALL LETTER R WITH DOUBLE GRAVE" #x0211)
- ("LATIN CAPITAL LETTER R WITH INVERTED BREVE" #x0212)
- ("LATIN SMALL LETTER R WITH INVERTED BREVE" #x0213)
- ("LATIN CAPITAL LETTER U WITH DOUBLE GRAVE" #x0214)
- ("LATIN SMALL LETTER U WITH DOUBLE GRAVE" #x0215)
- ("LATIN CAPITAL LETTER U WITH INVERTED BREVE" #x0216)
- ("LATIN SMALL LETTER U WITH INVERTED BREVE" #x0217)
- ("LATIN CAPITAL LETTER S WITH COMMA BELOW" #x0218)
- ("LATIN SMALL LETTER S WITH COMMA BELOW" #x0219)
- ("LATIN CAPITAL LETTER T WITH COMMA BELOW" #x021A)
- ("LATIN SMALL LETTER T WITH COMMA BELOW" #x021B)
- ("LATIN CAPITAL LETTER YOGH" #x021C)
- ("LATIN SMALL LETTER YOGH" #x021D)
- ("LATIN CAPITAL LETTER H WITH CARON" #x021E)
- ("LATIN SMALL LETTER H WITH CARON" #x021F)
- ("LATIN CAPITAL LETTER N WITH LONG RIGHT LEG" #x0220)
- ("LATIN CAPITAL LETTER OU" #x0222)
- ("LATIN SMALL LETTER OU" #x0223)
- ("LATIN CAPITAL LETTER Z WITH HOOK" #x0224)
- ("LATIN SMALL LETTER Z WITH HOOK" #x0225)
- ("LATIN CAPITAL LETTER A WITH DOT ABOVE" #x0226)
- ("LATIN SMALL LETTER A WITH DOT ABOVE" #x0227)
- ("LATIN CAPITAL LETTER E WITH CEDILLA" #x0228)
- ("LATIN SMALL LETTER E WITH CEDILLA" #x0229)
- ("LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON" #x022A)
- ("LATIN SMALL LETTER O WITH DIAERESIS AND MACRON" #x022B)
- ("LATIN CAPITAL LETTER O WITH TILDE AND MACRON" #x022C)
- ("LATIN SMALL LETTER O WITH TILDE AND MACRON" #x022D)
- ("LATIN CAPITAL LETTER O WITH DOT ABOVE" #x022E)
- ("LATIN SMALL LETTER O WITH DOT ABOVE" #x022F)
- ("LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON" #x0230)
- ("LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON" #x0231)
- ("LATIN CAPITAL LETTER Y WITH MACRON" #x0232)
- ("LATIN SMALL LETTER Y WITH MACRON" #x0233)
- ))
-
diff --git a/etc/nxml/00250-002AF.el b/etc/nxml/00250-002AF.el
deleted file mode 100644
index 63c474c63d..0000000000
--- a/etc/nxml/00250-002AF.el
+++ /dev/null
@@ -1,97 +0,0 @@
-(nxml-define-char-name-set 'ipa-extensions
- '(("LATIN SMALL LETTER TURNED A" #x0250)
- ("LATIN SMALL LETTER ALPHA" #x0251)
- ("LATIN SMALL LETTER TURNED ALPHA" #x0252)
- ("LATIN SMALL LETTER B WITH HOOK" #x0253)
- ("LATIN SMALL LETTER OPEN O" #x0254)
- ("LATIN SMALL LETTER C WITH CURL" #x0255)
- ("LATIN SMALL LETTER D WITH TAIL" #x0256)
- ("LATIN SMALL LETTER D WITH HOOK" #x0257)
- ("LATIN SMALL LETTER REVERSED E" #x0258)
- ("LATIN SMALL LETTER SCHWA" #x0259)
- ("LATIN SMALL LETTER SCHWA WITH HOOK" #x025A)
- ("LATIN SMALL LETTER OPEN E" #x025B)
- ("LATIN SMALL LETTER REVERSED OPEN E" #x025C)
- ("LATIN SMALL LETTER REVERSED OPEN E WITH HOOK" #x025D)
- ("LATIN SMALL LETTER CLOSED REVERSED OPEN E" #x025E)
- ("LATIN SMALL LETTER DOTLESS J WITH STROKE" #x025F)
- ("LATIN SMALL LETTER G WITH HOOK" #x0260)
- ("LATIN SMALL LETTER SCRIPT G" #x0261)
- ("LATIN LETTER SMALL CAPITAL G" #x0262)
- ("LATIN SMALL LETTER GAMMA" #x0263)
- ("LATIN SMALL LETTER RAMS HORN" #x0264)
- ("LATIN SMALL LETTER TURNED H" #x0265)
- ("LATIN SMALL LETTER H WITH HOOK" #x0266)
- ("LATIN SMALL LETTER HENG WITH HOOK" #x0267)
- ("LATIN SMALL LETTER I WITH STROKE" #x0268)
- ("LATIN SMALL LETTER IOTA" #x0269)
- ("LATIN LETTER SMALL CAPITAL I" #x026A)
- ("LATIN SMALL LETTER L WITH MIDDLE TILDE" #x026B)
- ("LATIN SMALL LETTER L WITH BELT" #x026C)
- ("LATIN SMALL LETTER L WITH RETROFLEX HOOK" #x026D)
- ("LATIN SMALL LETTER LEZH" #x026E)
- ("LATIN SMALL LETTER TURNED M" #x026F)
- ("LATIN SMALL LETTER TURNED M WITH LONG LEG" #x0270)
- ("LATIN SMALL LETTER M WITH HOOK" #x0271)
- ("LATIN SMALL LETTER N WITH LEFT HOOK" #x0272)
- ("LATIN SMALL LETTER N WITH RETROFLEX HOOK" #x0273)
- ("LATIN LETTER SMALL CAPITAL N" #x0274)
- ("LATIN SMALL LETTER BARRED O" #x0275)
- ("LATIN LETTER SMALL CAPITAL OE" #x0276)
- ("LATIN SMALL LETTER CLOSED OMEGA" #x0277)
- ("LATIN SMALL LETTER PHI" #x0278)
- ("LATIN SMALL LETTER TURNED R" #x0279)
- ("LATIN SMALL LETTER TURNED R WITH LONG LEG" #x027A)
- ("LATIN SMALL LETTER TURNED R WITH HOOK" #x027B)
- ("LATIN SMALL LETTER R WITH LONG LEG" #x027C)
- ("LATIN SMALL LETTER R WITH TAIL" #x027D)
- ("LATIN SMALL LETTER R WITH FISHHOOK" #x027E)
- ("LATIN SMALL LETTER REVERSED R WITH FISHHOOK" #x027F)
- ("LATIN LETTER SMALL CAPITAL R" #x0280)
- ("LATIN LETTER SMALL CAPITAL INVERTED R" #x0281)
- ("LATIN SMALL LETTER S WITH HOOK" #x0282)
- ("LATIN SMALL LETTER ESH" #x0283)
- ("LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK" #x0284)
- ("LATIN SMALL LETTER SQUAT REVERSED ESH" #x0285)
- ("LATIN SMALL LETTER ESH WITH CURL" #x0286)
- ("LATIN SMALL LETTER TURNED T" #x0287)
- ("LATIN SMALL LETTER T WITH RETROFLEX HOOK" #x0288)
- ("LATIN SMALL LETTER U BAR" #x0289)
- ("LATIN SMALL LETTER UPSILON" #x028A)
- ("LATIN SMALL LETTER V WITH HOOK" #x028B)
- ("LATIN SMALL LETTER TURNED V" #x028C)
- ("LATIN SMALL LETTER TURNED W" #x028D)
- ("LATIN SMALL LETTER TURNED Y" #x028E)
- ("LATIN LETTER SMALL CAPITAL Y" #x028F)
- ("LATIN SMALL LETTER Z WITH RETROFLEX HOOK" #x0290)
- ("LATIN SMALL LETTER Z WITH CURL" #x0291)
- ("LATIN SMALL LETTER EZH" #x0292)
- ("LATIN SMALL LETTER EZH WITH CURL" #x0293)
- ("LATIN LETTER GLOTTAL STOP" #x0294)
- ("LATIN LETTER PHARYNGEAL VOICED FRICATIVE" #x0295)
- ("LATIN LETTER INVERTED GLOTTAL STOP" #x0296)
- ("LATIN LETTER STRETCHED C" #x0297)
- ("LATIN LETTER BILABIAL CLICK" #x0298)
- ("LATIN LETTER SMALL CAPITAL B" #x0299)
- ("LATIN SMALL LETTER CLOSED OPEN E" #x029A)
- ("LATIN LETTER SMALL CAPITAL G WITH HOOK" #x029B)
- ("LATIN LETTER SMALL CAPITAL H" #x029C)
- ("LATIN SMALL LETTER J WITH CROSSED-TAIL" #x029D)
- ("LATIN SMALL LETTER TURNED K" #x029E)
- ("LATIN LETTER SMALL CAPITAL L" #x029F)
- ("LATIN SMALL LETTER Q WITH HOOK" #x02A0)
- ("LATIN LETTER GLOTTAL STOP WITH STROKE" #x02A1)
- ("LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE" #x02A2)
- ("LATIN SMALL LETTER DZ DIGRAPH" #x02A3)
- ("LATIN SMALL LETTER DEZH DIGRAPH" #x02A4)
- ("LATIN SMALL LETTER DZ DIGRAPH WITH CURL" #x02A5)
- ("LATIN SMALL LETTER TS DIGRAPH" #x02A6)
- ("LATIN SMALL LETTER TESH DIGRAPH" #x02A7)
- ("LATIN SMALL LETTER TC DIGRAPH WITH CURL" #x02A8)
- ("LATIN SMALL LETTER FENG DIGRAPH" #x02A9)
- ("LATIN SMALL LETTER LS DIGRAPH" #x02AA)
- ("LATIN SMALL LETTER LZ DIGRAPH" #x02AB)
- ("LATIN LETTER BILABIAL PERCUSSIVE" #x02AC)
- ("LATIN LETTER BIDENTAL PERCUSSIVE" #x02AD)
- ))
-
diff --git a/etc/nxml/002B0-002FF.el b/etc/nxml/002B0-002FF.el
deleted file mode 100644
index e72339e44a..0000000000
--- a/etc/nxml/002B0-002FF.el
+++ /dev/null
@@ -1,66 +0,0 @@
-(nxml-define-char-name-set 'spacing-modifier-letters
- '(("MODIFIER LETTER SMALL H" #x02B0)
- ("MODIFIER LETTER SMALL H WITH HOOK" #x02B1)
- ("MODIFIER LETTER SMALL J" #x02B2)
- ("MODIFIER LETTER SMALL R" #x02B3)
- ("MODIFIER LETTER SMALL TURNED R" #x02B4)
- ("MODIFIER LETTER SMALL TURNED R WITH HOOK" #x02B5)
- ("MODIFIER LETTER SMALL CAPITAL INVERTED R" #x02B6)
- ("MODIFIER LETTER SMALL W" #x02B7)
- ("MODIFIER LETTER SMALL Y" #x02B8)
- ("MODIFIER LETTER PRIME" #x02B9)
- ("MODIFIER LETTER DOUBLE PRIME" #x02BA)
- ("MODIFIER LETTER TURNED COMMA" #x02BB)
- ("MODIFIER LETTER APOSTROPHE" #x02BC)
- ("MODIFIER LETTER REVERSED COMMA" #x02BD)
- ("MODIFIER LETTER RIGHT HALF RING" #x02BE)
- ("MODIFIER LETTER LEFT HALF RING" #x02BF)
- ("MODIFIER LETTER GLOTTAL STOP" #x02C0)
- ("MODIFIER LETTER REVERSED GLOTTAL STOP" #x02C1)
- ("MODIFIER LETTER LEFT ARROWHEAD" #x02C2)
- ("MODIFIER LETTER RIGHT ARROWHEAD" #x02C3)
- ("MODIFIER LETTER UP ARROWHEAD" #x02C4)
- ("MODIFIER LETTER DOWN ARROWHEAD" #x02C5)
- ("MODIFIER LETTER CIRCUMFLEX ACCENT" #x02C6)
- ("CARON" #x02C7)
- ("MODIFIER LETTER VERTICAL LINE" #x02C8)
- ("MODIFIER LETTER MACRON" #x02C9)
- ("MODIFIER LETTER ACUTE ACCENT" #x02CA)
- ("MODIFIER LETTER GRAVE ACCENT" #x02CB)
- ("MODIFIER LETTER LOW VERTICAL LINE" #x02CC)
- ("MODIFIER LETTER LOW MACRON" #x02CD)
- ("MODIFIER LETTER LOW GRAVE ACCENT" #x02CE)
- ("MODIFIER LETTER LOW ACUTE ACCENT" #x02CF)
- ("MODIFIER LETTER TRIANGULAR COLON" #x02D0)
- ("MODIFIER LETTER HALF TRIANGULAR COLON" #x02D1)
- ("MODIFIER LETTER CENTRED RIGHT HALF RING" #x02D2)
- ("MODIFIER LETTER CENTRED LEFT HALF RING" #x02D3)
- ("MODIFIER LETTER UP TACK" #x02D4)
- ("MODIFIER LETTER DOWN TACK" #x02D5)
- ("MODIFIER LETTER PLUS SIGN" #x02D6)
- ("MODIFIER LETTER MINUS SIGN" #x02D7)
- ("BREVE" #x02D8)
- ("DOT ABOVE" #x02D9)
- ("RING ABOVE" #x02DA)
- ("OGONEK" #x02DB)
- ("SMALL TILDE" #x02DC)
- ("DOUBLE ACUTE ACCENT" #x02DD)
- ("MODIFIER LETTER RHOTIC HOOK" #x02DE)
- ("MODIFIER LETTER CROSS ACCENT" #x02DF)
- ("MODIFIER LETTER SMALL GAMMA" #x02E0)
- ("MODIFIER LETTER SMALL L" #x02E1)
- ("MODIFIER LETTER SMALL S" #x02E2)
- ("MODIFIER LETTER SMALL X" #x02E3)
- ("MODIFIER LETTER SMALL REVERSED GLOTTAL STOP" #x02E4)
- ("MODIFIER LETTER EXTRA-HIGH TONE BAR" #x02E5)
- ("MODIFIER LETTER HIGH TONE BAR" #x02E6)
- ("MODIFIER LETTER MID TONE BAR" #x02E7)
- ("MODIFIER LETTER LOW TONE BAR" #x02E8)
- ("MODIFIER LETTER EXTRA-LOW TONE BAR" #x02E9)
- ("MODIFIER LETTER YIN DEPARTING TONE MARK" #x02EA)
- ("MODIFIER LETTER YANG DEPARTING TONE MARK" #x02EB)
- ("MODIFIER LETTER VOICING" #x02EC)
- ("MODIFIER LETTER UNASPIRATED" #x02ED)
- ("MODIFIER LETTER DOUBLE APOSTROPHE" #x02EE)
- ))
-
diff --git a/etc/nxml/00300-0036F.el b/etc/nxml/00300-0036F.el
deleted file mode 100644
index 09024c92ec..0000000000
--- a/etc/nxml/00300-0036F.el
+++ /dev/null
@@ -1,99 +0,0 @@
-(nxml-define-char-name-set 'combining-diacritical-marks
- '(("COMBINING GRAVE ACCENT" #x0300)
- ("COMBINING ACUTE ACCENT" #x0301)
- ("COMBINING CIRCUMFLEX ACCENT" #x0302)
- ("COMBINING TILDE" #x0303)
- ("COMBINING MACRON" #x0304)
- ("COMBINING OVERLINE" #x0305)
- ("COMBINING BREVE" #x0306)
- ("COMBINING DOT ABOVE" #x0307)
- ("COMBINING DIAERESIS" #x0308)
- ("COMBINING HOOK ABOVE" #x0309)
- ("COMBINING RING ABOVE" #x030A)
- ("COMBINING DOUBLE ACUTE ACCENT" #x030B)
- ("COMBINING CARON" #x030C)
- ("COMBINING VERTICAL LINE ABOVE" #x030D)
- ("COMBINING DOUBLE VERTICAL LINE ABOVE" #x030E)
- ("COMBINING DOUBLE GRAVE ACCENT" #x030F)
- ("COMBINING CANDRABINDU" #x0310)
- ("COMBINING INVERTED BREVE" #x0311)
- ("COMBINING TURNED COMMA ABOVE" #x0312)
- ("COMBINING COMMA ABOVE" #x0313)
- ("COMBINING REVERSED COMMA ABOVE" #x0314)
- ("COMBINING COMMA ABOVE RIGHT" #x0315)
- ("COMBINING GRAVE ACCENT BELOW" #x0316)
- ("COMBINING ACUTE ACCENT BELOW" #x0317)
- ("COMBINING LEFT TACK BELOW" #x0318)
- ("COMBINING RIGHT TACK BELOW" #x0319)
- ("COMBINING LEFT ANGLE ABOVE" #x031A)
- ("COMBINING HORN" #x031B)
- ("COMBINING LEFT HALF RING BELOW" #x031C)
- ("COMBINING UP TACK BELOW" #x031D)
- ("COMBINING DOWN TACK BELOW" #x031E)
- ("COMBINING PLUS SIGN BELOW" #x031F)
- ("COMBINING MINUS SIGN BELOW" #x0320)
- ("COMBINING PALATALIZED HOOK BELOW" #x0321)
- ("COMBINING RETROFLEX HOOK BELOW" #x0322)
- ("COMBINING DOT BELOW" #x0323)
- ("COMBINING DIAERESIS BELOW" #x0324)
- ("COMBINING RING BELOW" #x0325)
- ("COMBINING COMMA BELOW" #x0326)
- ("COMBINING CEDILLA" #x0327)
- ("COMBINING OGONEK" #x0328)
- ("COMBINING VERTICAL LINE BELOW" #x0329)
- ("COMBINING BRIDGE BELOW" #x032A)
- ("COMBINING INVERTED DOUBLE ARCH BELOW" #x032B)
- ("COMBINING CARON BELOW" #x032C)
- ("COMBINING CIRCUMFLEX ACCENT BELOW" #x032D)
- ("COMBINING BREVE BELOW" #x032E)
- ("COMBINING INVERTED BREVE BELOW" #x032F)
- ("COMBINING TILDE BELOW" #x0330)
- ("COMBINING MACRON BELOW" #x0331)
- ("COMBINING LOW LINE" #x0332)
- ("COMBINING DOUBLE LOW LINE" #x0333)
- ("COMBINING TILDE OVERLAY" #x0334)
- ("COMBINING SHORT STROKE OVERLAY" #x0335)
- ("COMBINING LONG STROKE OVERLAY" #x0336)
- ("COMBINING SHORT SOLIDUS OVERLAY" #x0337)
- ("COMBINING LONG SOLIDUS OVERLAY" #x0338)
- ("COMBINING RIGHT HALF RING BELOW" #x0339)
- ("COMBINING INVERTED BRIDGE BELOW" #x033A)
- ("COMBINING SQUARE BELOW" #x033B)
- ("COMBINING SEAGULL BELOW" #x033C)
- ("COMBINING X ABOVE" #x033D)
- ("COMBINING VERTICAL TILDE" #x033E)
- ("COMBINING DOUBLE OVERLINE" #x033F)
- ("COMBINING GRAVE TONE MARK" #x0340)
- ("COMBINING ACUTE TONE MARK" #x0341)
- ("COMBINING GREEK PERISPOMENI" #x0342)
- ("COMBINING GREEK KORONIS" #x0343)
- ("COMBINING GREEK DIALYTIKA TONOS" #x0344)
- ("COMBINING GREEK YPOGEGRAMMENI" #x0345)
- ("COMBINING BRIDGE ABOVE" #x0346)
- ("COMBINING EQUALS SIGN BELOW" #x0347)
- ("COMBINING DOUBLE VERTICAL LINE BELOW" #x0348)
- ("COMBINING LEFT ANGLE BELOW" #x0349)
- ("COMBINING NOT TILDE ABOVE" #x034A)
- ("COMBINING HOMOTHETIC ABOVE" #x034B)
- ("COMBINING ALMOST EQUAL TO ABOVE" #x034C)
- ("COMBINING LEFT RIGHT ARROW BELOW" #x034D)
- ("COMBINING UPWARDS ARROW BELOW" #x034E)
- ("COMBINING GRAPHEME JOINER" #x034F)
- ("COMBINING DOUBLE TILDE" #x0360)
- ("COMBINING DOUBLE INVERTED BREVE" #x0361)
- ("COMBINING DOUBLE RIGHTWARDS ARROW BELOW" #x0362)
- ("COMBINING LATIN SMALL LETTER A" #x0363)
- ("COMBINING LATIN SMALL LETTER E" #x0364)
- ("COMBINING LATIN SMALL LETTER I" #x0365)
- ("COMBINING LATIN SMALL LETTER O" #x0366)
- ("COMBINING LATIN SMALL LETTER U" #x0367)
- ("COMBINING LATIN SMALL LETTER C" #x0368)
- ("COMBINING LATIN SMALL LETTER D" #x0369)
- ("COMBINING LATIN SMALL LETTER H" #x036A)
- ("COMBINING LATIN SMALL LETTER M" #x036B)
- ("COMBINING LATIN SMALL LETTER R" #x036C)
- ("COMBINING LATIN SMALL LETTER T" #x036D)
- ("COMBINING LATIN SMALL LETTER V" #x036E)
- ("COMBINING LATIN SMALL LETTER X" #x036F)
- ))
-
diff --git a/etc/nxml/00370-003FF.el b/etc/nxml/00370-003FF.el
deleted file mode 100644
index e127ea137a..0000000000
--- a/etc/nxml/00370-003FF.el
+++ /dev/null
@@ -1,118 +0,0 @@
-(nxml-define-char-name-set 'greek-and-coptic
- '(("GREEK NUMERAL SIGN" #x0374)
- ("GREEK LOWER NUMERAL SIGN" #x0375)
- ("GREEK YPOGEGRAMMENI" #x037A)
- ("GREEK QUESTION MARK" #x037E)
- ("GREEK TONOS" #x0384)
- ("GREEK DIALYTIKA TONOS" #x0385)
- ("GREEK CAPITAL LETTER ALPHA WITH TONOS" #x0386)
- ("GREEK ANO TELEIA" #x0387)
- ("GREEK CAPITAL LETTER EPSILON WITH TONOS" #x0388)
- ("GREEK CAPITAL LETTER ETA WITH TONOS" #x0389)
- ("GREEK CAPITAL LETTER IOTA WITH TONOS" #x038A)
- ("GREEK CAPITAL LETTER OMICRON WITH TONOS" #x038C)
- ("GREEK CAPITAL LETTER UPSILON WITH TONOS" #x038E)
- ("GREEK CAPITAL LETTER OMEGA WITH TONOS" #x038F)
- ("GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS" #x0390)
- ("GREEK CAPITAL LETTER ALPHA" #x0391)
- ("GREEK CAPITAL LETTER BETA" #x0392)
- ("GREEK CAPITAL LETTER GAMMA" #x0393)
- ("GREEK CAPITAL LETTER DELTA" #x0394)
- ("GREEK CAPITAL LETTER EPSILON" #x0395)
- ("GREEK CAPITAL LETTER ZETA" #x0396)
- ("GREEK CAPITAL LETTER ETA" #x0397)
- ("GREEK CAPITAL LETTER THETA" #x0398)
- ("GREEK CAPITAL LETTER IOTA" #x0399)
- ("GREEK CAPITAL LETTER KAPPA" #x039A)
- ("GREEK CAPITAL LETTER LAMDA" #x039B)
- ("GREEK CAPITAL LETTER MU" #x039C)
- ("GREEK CAPITAL LETTER NU" #x039D)
- ("GREEK CAPITAL LETTER XI" #x039E)
- ("GREEK CAPITAL LETTER OMICRON" #x039F)
- ("GREEK CAPITAL LETTER PI" #x03A0)
- ("GREEK CAPITAL LETTER RHO" #x03A1)
- ("GREEK CAPITAL LETTER SIGMA" #x03A3)
- ("GREEK CAPITAL LETTER TAU" #x03A4)
- ("GREEK CAPITAL LETTER UPSILON" #x03A5)
- ("GREEK CAPITAL LETTER PHI" #x03A6)
- ("GREEK CAPITAL LETTER CHI" #x03A7)
- ("GREEK CAPITAL LETTER PSI" #x03A8)
- ("GREEK CAPITAL LETTER OMEGA" #x03A9)
- ("GREEK CAPITAL LETTER IOTA WITH DIALYTIKA" #x03AA)
- ("GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA" #x03AB)
- ("GREEK SMALL LETTER ALPHA WITH TONOS" #x03AC)
- ("GREEK SMALL LETTER EPSILON WITH TONOS" #x03AD)
- ("GREEK SMALL LETTER ETA WITH TONOS" #x03AE)
- ("GREEK SMALL LETTER IOTA WITH TONOS" #x03AF)
- ("GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS" #x03B0)
- ("GREEK SMALL LETTER ALPHA" #x03B1)
- ("GREEK SMALL LETTER BETA" #x03B2)
- ("GREEK SMALL LETTER GAMMA" #x03B3)
- ("GREEK SMALL LETTER DELTA" #x03B4)
- ("GREEK SMALL LETTER EPSILON" #x03B5)
- ("GREEK SMALL LETTER ZETA" #x03B6)
- ("GREEK SMALL LETTER ETA" #x03B7)
- ("GREEK SMALL LETTER THETA" #x03B8)
- ("GREEK SMALL LETTER IOTA" #x03B9)
- ("GREEK SMALL LETTER KAPPA" #x03BA)
- ("GREEK SMALL LETTER LAMDA" #x03BB)
- ("GREEK SMALL LETTER MU" #x03BC)
- ("GREEK SMALL LETTER NU" #x03BD)
- ("GREEK SMALL LETTER XI" #x03BE)
- ("GREEK SMALL LETTER OMICRON" #x03BF)
- ("GREEK SMALL LETTER PI" #x03C0)
- ("GREEK SMALL LETTER RHO" #x03C1)
- ("GREEK SMALL LETTER FINAL SIGMA" #x03C2)
- ("GREEK SMALL LETTER SIGMA" #x03C3)
- ("GREEK SMALL LETTER TAU" #x03C4)
- ("GREEK SMALL LETTER UPSILON" #x03C5)
- ("GREEK SMALL LETTER PHI" #x03C6)
- ("GREEK SMALL LETTER CHI" #x03C7)
- ("GREEK SMALL LETTER PSI" #x03C8)
- ("GREEK SMALL LETTER OMEGA" #x03C9)
- ("GREEK SMALL LETTER IOTA WITH DIALYTIKA" #x03CA)
- ("GREEK SMALL LETTER UPSILON WITH DIALYTIKA" #x03CB)
- ("GREEK SMALL LETTER OMICRON WITH TONOS" #x03CC)
- ("GREEK SMALL LETTER UPSILON WITH TONOS" #x03CD)
- ("GREEK SMALL LETTER OMEGA WITH TONOS" #x03CE)
- ("GREEK BETA SYMBOL" #x03D0)
- ("GREEK THETA SYMBOL" #x03D1)
- ("GREEK UPSILON WITH HOOK SYMBOL" #x03D2)
- ("GREEK UPSILON WITH ACUTE AND HOOK SYMBOL" #x03D3)
- ("GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL" #x03D4)
- ("GREEK PHI SYMBOL" #x03D5)
- ("GREEK PI SYMBOL" #x03D6)
- ("GREEK KAI SYMBOL" #x03D7)
- ("GREEK LETTER ARCHAIC KOPPA" #x03D8)
- ("GREEK SMALL LETTER ARCHAIC KOPPA" #x03D9)
- ("GREEK LETTER STIGMA" #x03DA)
- ("GREEK SMALL LETTER STIGMA" #x03DB)
- ("GREEK LETTER DIGAMMA" #x03DC)
- ("GREEK SMALL LETTER DIGAMMA" #x03DD)
- ("GREEK LETTER KOPPA" #x03DE)
- ("GREEK SMALL LETTER KOPPA" #x03DF)
- ("GREEK LETTER SAMPI" #x03E0)
- ("GREEK SMALL LETTER SAMPI" #x03E1)
- ("COPTIC CAPITAL LETTER SHEI" #x03E2)
- ("COPTIC SMALL LETTER SHEI" #x03E3)
- ("COPTIC CAPITAL LETTER FEI" #x03E4)
- ("COPTIC SMALL LETTER FEI" #x03E5)
- ("COPTIC CAPITAL LETTER KHEI" #x03E6)
- ("COPTIC SMALL LETTER KHEI" #x03E7)
- ("COPTIC CAPITAL LETTER HORI" #x03E8)
- ("COPTIC SMALL LETTER HORI" #x03E9)
- ("COPTIC CAPITAL LETTER GANGIA" #x03EA)
- ("COPTIC SMALL LETTER GANGIA" #x03EB)
- ("COPTIC CAPITAL LETTER SHIMA" #x03EC)
- ("COPTIC SMALL LETTER SHIMA" #x03ED)
- ("COPTIC CAPITAL LETTER DEI" #x03EE)
- ("COPTIC SMALL LETTER DEI" #x03EF)
- ("GREEK KAPPA SYMBOL" #x03F0)
- ("GREEK RHO SYMBOL" #x03F1)
- ("GREEK LUNATE SIGMA SYMBOL" #x03F2)
- ("GREEK LETTER YOT" #x03F3)
- ("GREEK CAPITAL THETA SYMBOL" #x03F4)
- ("GREEK LUNATE EPSILON SYMBOL" #x03F5)
- ("GREEK REVERSED LUNATE EPSILON SYMBOL" #x03F6)
- ))
-
diff --git a/etc/nxml/00400-004FF.el b/etc/nxml/00400-004FF.el
deleted file mode 100644
index e93109913a..0000000000
--- a/etc/nxml/00400-004FF.el
+++ /dev/null
@@ -1,249 +0,0 @@
-(nxml-define-char-name-set 'cyrillic
- '(("CYRILLIC CAPITAL LETTER IE WITH GRAVE" #x0400)
- ("CYRILLIC CAPITAL LETTER IO" #x0401)
- ("CYRILLIC CAPITAL LETTER DJE" #x0402)
- ("CYRILLIC CAPITAL LETTER GJE" #x0403)
- ("CYRILLIC CAPITAL LETTER UKRAINIAN IE" #x0404)
- ("CYRILLIC CAPITAL LETTER DZE" #x0405)
- ("CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I" #x0406)
- ("CYRILLIC CAPITAL LETTER YI" #x0407)
- ("CYRILLIC CAPITAL LETTER JE" #x0408)
- ("CYRILLIC CAPITAL LETTER LJE" #x0409)
- ("CYRILLIC CAPITAL LETTER NJE" #x040A)
- ("CYRILLIC CAPITAL LETTER TSHE" #x040B)
- ("CYRILLIC CAPITAL LETTER KJE" #x040C)
- ("CYRILLIC CAPITAL LETTER I WITH GRAVE" #x040D)
- ("CYRILLIC CAPITAL LETTER SHORT U" #x040E)
- ("CYRILLIC CAPITAL LETTER DZHE" #x040F)
- ("CYRILLIC CAPITAL LETTER A" #x0410)
- ("CYRILLIC CAPITAL LETTER BE" #x0411)
- ("CYRILLIC CAPITAL LETTER VE" #x0412)
- ("CYRILLIC CAPITAL LETTER GHE" #x0413)
- ("CYRILLIC CAPITAL LETTER DE" #x0414)
- ("CYRILLIC CAPITAL LETTER IE" #x0415)
- ("CYRILLIC CAPITAL LETTER ZHE" #x0416)
- ("CYRILLIC CAPITAL LETTER ZE" #x0417)
- ("CYRILLIC CAPITAL LETTER I" #x0418)
- ("CYRILLIC CAPITAL LETTER SHORT I" #x0419)
- ("CYRILLIC CAPITAL LETTER KA" #x041A)
- ("CYRILLIC CAPITAL LETTER EL" #x041B)
- ("CYRILLIC CAPITAL LETTER EM" #x041C)
- ("CYRILLIC CAPITAL LETTER EN" #x041D)
- ("CYRILLIC CAPITAL LETTER O" #x041E)
- ("CYRILLIC CAPITAL LETTER PE" #x041F)
- ("CYRILLIC CAPITAL LETTER ER" #x0420)
- ("CYRILLIC CAPITAL LETTER ES" #x0421)
- ("CYRILLIC CAPITAL LETTER TE" #x0422)
- ("CYRILLIC CAPITAL LETTER U" #x0423)
- ("CYRILLIC CAPITAL LETTER EF" #x0424)
- ("CYRILLIC CAPITAL LETTER HA" #x0425)
- ("CYRILLIC CAPITAL LETTER TSE" #x0426)
- ("CYRILLIC CAPITAL LETTER CHE" #x0427)
- ("CYRILLIC CAPITAL LETTER SHA" #x0428)
- ("CYRILLIC CAPITAL LETTER SHCHA" #x0429)
- ("CYRILLIC CAPITAL LETTER HARD SIGN" #x042A)
- ("CYRILLIC CAPITAL LETTER YERU" #x042B)
- ("CYRILLIC CAPITAL LETTER SOFT SIGN" #x042C)
- ("CYRILLIC CAPITAL LETTER E" #x042D)
- ("CYRILLIC CAPITAL LETTER YU" #x042E)
- ("CYRILLIC CAPITAL LETTER YA" #x042F)
- ("CYRILLIC SMALL LETTER A" #x0430)
- ("CYRILLIC SMALL LETTER BE" #x0431)
- ("CYRILLIC SMALL LETTER VE" #x0432)
- ("CYRILLIC SMALL LETTER GHE" #x0433)
- ("CYRILLIC SMALL LETTER DE" #x0434)
- ("CYRILLIC SMALL LETTER IE" #x0435)
- ("CYRILLIC SMALL LETTER ZHE" #x0436)
- ("CYRILLIC SMALL LETTER ZE" #x0437)
- ("CYRILLIC SMALL LETTER I" #x0438)
- ("CYRILLIC SMALL LETTER SHORT I" #x0439)
- ("CYRILLIC SMALL LETTER KA" #x043A)
- ("CYRILLIC SMALL LETTER EL" #x043B)
- ("CYRILLIC SMALL LETTER EM" #x043C)
- ("CYRILLIC SMALL LETTER EN" #x043D)
- ("CYRILLIC SMALL LETTER O" #x043E)
- ("CYRILLIC SMALL LETTER PE" #x043F)
- ("CYRILLIC SMALL LETTER ER" #x0440)
- ("CYRILLIC SMALL LETTER ES" #x0441)
- ("CYRILLIC SMALL LETTER TE" #x0442)
- ("CYRILLIC SMALL LETTER U" #x0443)
- ("CYRILLIC SMALL LETTER EF" #x0444)
- ("CYRILLIC SMALL LETTER HA" #x0445)
- ("CYRILLIC SMALL LETTER TSE" #x0446)
- ("CYRILLIC SMALL LETTER CHE" #x0447)
- ("CYRILLIC SMALL LETTER SHA" #x0448)
- ("CYRILLIC SMALL LETTER SHCHA" #x0449)
- ("CYRILLIC SMALL LETTER HARD SIGN" #x044A)
- ("CYRILLIC SMALL LETTER YERU" #x044B)
- ("CYRILLIC SMALL LETTER SOFT SIGN" #x044C)
- ("CYRILLIC SMALL LETTER E" #x044D)
- ("CYRILLIC SMALL LETTER YU" #x044E)
- ("CYRILLIC SMALL LETTER YA" #x044F)
- ("CYRILLIC SMALL LETTER IE WITH GRAVE" #x0450)
- ("CYRILLIC SMALL LETTER IO" #x0451)
- ("CYRILLIC SMALL LETTER DJE" #x0452)
- ("CYRILLIC SMALL LETTER GJE" #x0453)
- ("CYRILLIC SMALL LETTER UKRAINIAN IE" #x0454)
- ("CYRILLIC SMALL LETTER DZE" #x0455)
- ("CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I" #x0456)
- ("CYRILLIC SMALL LETTER YI" #x0457)
- ("CYRILLIC SMALL LETTER JE" #x0458)
- ("CYRILLIC SMALL LETTER LJE" #x0459)
- ("CYRILLIC SMALL LETTER NJE" #x045A)
- ("CYRILLIC SMALL LETTER TSHE" #x045B)
- ("CYRILLIC SMALL LETTER KJE" #x045C)
- ("CYRILLIC SMALL LETTER I WITH GRAVE" #x045D)
- ("CYRILLIC SMALL LETTER SHORT U" #x045E)
- ("CYRILLIC SMALL LETTER DZHE" #x045F)
- ("CYRILLIC CAPITAL LETTER OMEGA" #x0460)
- ("CYRILLIC SMALL LETTER OMEGA" #x0461)
- ("CYRILLIC CAPITAL LETTER YAT" #x0462)
- ("CYRILLIC SMALL LETTER YAT" #x0463)
- ("CYRILLIC CAPITAL LETTER IOTIFIED E" #x0464)
- ("CYRILLIC SMALL LETTER IOTIFIED E" #x0465)
- ("CYRILLIC CAPITAL LETTER LITTLE YUS" #x0466)
- ("CYRILLIC SMALL LETTER LITTLE YUS" #x0467)
- ("CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS" #x0468)
- ("CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS" #x0469)
- ("CYRILLIC CAPITAL LETTER BIG YUS" #x046A)
- ("CYRILLIC SMALL LETTER BIG YUS" #x046B)
- ("CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS" #x046C)
- ("CYRILLIC SMALL LETTER IOTIFIED BIG YUS" #x046D)
- ("CYRILLIC CAPITAL LETTER KSI" #x046E)
- ("CYRILLIC SMALL LETTER KSI" #x046F)
- ("CYRILLIC CAPITAL LETTER PSI" #x0470)
- ("CYRILLIC SMALL LETTER PSI" #x0471)
- ("CYRILLIC CAPITAL LETTER FITA" #x0472)
- ("CYRILLIC SMALL LETTER FITA" #x0473)
- ("CYRILLIC CAPITAL LETTER IZHITSA" #x0474)
- ("CYRILLIC SMALL LETTER IZHITSA" #x0475)
- ("CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT" #x0476)
- ("CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT" #x0477)
- ("CYRILLIC CAPITAL LETTER UK" #x0478)
- ("CYRILLIC SMALL LETTER UK" #x0479)
- ("CYRILLIC CAPITAL LETTER ROUND OMEGA" #x047A)
- ("CYRILLIC SMALL LETTER ROUND OMEGA" #x047B)
- ("CYRILLIC CAPITAL LETTER OMEGA WITH TITLO" #x047C)
- ("CYRILLIC SMALL LETTER OMEGA WITH TITLO" #x047D)
- ("CYRILLIC CAPITAL LETTER OT" #x047E)
- ("CYRILLIC SMALL LETTER OT" #x047F)
- ("CYRILLIC CAPITAL LETTER KOPPA" #x0480)
- ("CYRILLIC SMALL LETTER KOPPA" #x0481)
- ("CYRILLIC THOUSANDS SIGN" #x0482)
- ("COMBINING CYRILLIC TITLO" #x0483)
- ("COMBINING CYRILLIC PALATALIZATION" #x0484)
- ("COMBINING CYRILLIC DASIA PNEUMATA" #x0485)
- ("COMBINING CYRILLIC PSILI PNEUMATA" #x0486)
- ("COMBINING CYRILLIC HUNDRED THOUSANDS SIGN" #x0488)
- ("COMBINING CYRILLIC MILLIONS SIGN" #x0489)
- ("CYRILLIC CAPITAL LETTER SHORT I WITH TAIL" #x048A)
- ("CYRILLIC SMALL LETTER SHORT I WITH TAIL" #x048B)
- ("CYRILLIC CAPITAL LETTER SEMISOFT SIGN" #x048C)
- ("CYRILLIC SMALL LETTER SEMISOFT SIGN" #x048D)
- ("CYRILLIC CAPITAL LETTER ER WITH TICK" #x048E)
- ("CYRILLIC SMALL LETTER ER WITH TICK" #x048F)
- ("CYRILLIC CAPITAL LETTER GHE WITH UPTURN" #x0490)
- ("CYRILLIC SMALL LETTER GHE WITH UPTURN" #x0491)
- ("CYRILLIC CAPITAL LETTER GHE WITH STROKE" #x0492)
- ("CYRILLIC SMALL LETTER GHE WITH STROKE" #x0493)
- ("CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK" #x0494)
- ("CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK" #x0495)
- ("CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER" #x0496)
- ("CYRILLIC SMALL LETTER ZHE WITH DESCENDER" #x0497)
- ("CYRILLIC CAPITAL LETTER ZE WITH DESCENDER" #x0498)
- ("CYRILLIC SMALL LETTER ZE WITH DESCENDER" #x0499)
- ("CYRILLIC CAPITAL LETTER KA WITH DESCENDER" #x049A)
- ("CYRILLIC SMALL LETTER KA WITH DESCENDER" #x049B)
- ("CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE" #x049C)
- ("CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE" #x049D)
- ("CYRILLIC CAPITAL LETTER KA WITH STROKE" #x049E)
- ("CYRILLIC SMALL LETTER KA WITH STROKE" #x049F)
- ("CYRILLIC CAPITAL LETTER BASHKIR KA" #x04A0)
- ("CYRILLIC SMALL LETTER BASHKIR KA" #x04A1)
- ("CYRILLIC CAPITAL LETTER EN WITH DESCENDER" #x04A2)
- ("CYRILLIC SMALL LETTER EN WITH DESCENDER" #x04A3)
- ("CYRILLIC CAPITAL LIGATURE EN GHE" #x04A4)
- ("CYRILLIC SMALL LIGATURE EN GHE" #x04A5)
- ("CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK" #x04A6)
- ("CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK" #x04A7)
- ("CYRILLIC CAPITAL LETTER ABKHASIAN HA" #x04A8)
- ("CYRILLIC SMALL LETTER ABKHASIAN HA" #x04A9)
- ("CYRILLIC CAPITAL LETTER ES WITH DESCENDER" #x04AA)
- ("CYRILLIC SMALL LETTER ES WITH DESCENDER" #x04AB)
- ("CYRILLIC CAPITAL LETTER TE WITH DESCENDER" #x04AC)
- ("CYRILLIC SMALL LETTER TE WITH DESCENDER" #x04AD)
- ("CYRILLIC CAPITAL LETTER STRAIGHT U" #x04AE)
- ("CYRILLIC SMALL LETTER STRAIGHT U" #x04AF)
- ("CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE" #x04B0)
- ("CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE" #x04B1)
- ("CYRILLIC CAPITAL LETTER HA WITH DESCENDER" #x04B2)
- ("CYRILLIC SMALL LETTER HA WITH DESCENDER" #x04B3)
- ("CYRILLIC CAPITAL LIGATURE TE TSE" #x04B4)
- ("CYRILLIC SMALL LIGATURE TE TSE" #x04B5)
- ("CYRILLIC CAPITAL LETTER CHE WITH DESCENDER" #x04B6)
- ("CYRILLIC SMALL LETTER CHE WITH DESCENDER" #x04B7)
- ("CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE" #x04B8)
- ("CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE" #x04B9)
- ("CYRILLIC CAPITAL LETTER SHHA" #x04BA)
- ("CYRILLIC SMALL LETTER SHHA" #x04BB)
- ("CYRILLIC CAPITAL LETTER ABKHASIAN CHE" #x04BC)
- ("CYRILLIC SMALL LETTER ABKHASIAN CHE" #x04BD)
- ("CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER" #x04BE)
- ("CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER" #x04BF)
- ("CYRILLIC LETTER PALOCHKA" #x04C0)
- ("CYRILLIC CAPITAL LETTER ZHE WITH BREVE" #x04C1)
- ("CYRILLIC SMALL LETTER ZHE WITH BREVE" #x04C2)
- ("CYRILLIC CAPITAL LETTER KA WITH HOOK" #x04C3)
- ("CYRILLIC SMALL LETTER KA WITH HOOK" #x04C4)
- ("CYRILLIC CAPITAL LETTER EL WITH TAIL" #x04C5)
- ("CYRILLIC SMALL LETTER EL WITH TAIL" #x04C6)
- ("CYRILLIC CAPITAL LETTER EN WITH HOOK" #x04C7)
- ("CYRILLIC SMALL LETTER EN WITH HOOK" #x04C8)
- ("CYRILLIC CAPITAL LETTER EN WITH TAIL" #x04C9)
- ("CYRILLIC SMALL LETTER EN WITH TAIL" #x04CA)
- ("CYRILLIC CAPITAL LETTER KHAKASSIAN CHE" #x04CB)
- ("CYRILLIC SMALL LETTER KHAKASSIAN CHE" #x04CC)
- ("CYRILLIC CAPITAL LETTER EM WITH TAIL" #x04CD)
- ("CYRILLIC SMALL LETTER EM WITH TAIL" #x04CE)
- ("CYRILLIC CAPITAL LETTER A WITH BREVE" #x04D0)
- ("CYRILLIC SMALL LETTER A WITH BREVE" #x04D1)
- ("CYRILLIC CAPITAL LETTER A WITH DIAERESIS" #x04D2)
- ("CYRILLIC SMALL LETTER A WITH DIAERESIS" #x04D3)
- ("CYRILLIC CAPITAL LIGATURE A IE" #x04D4)
- ("CYRILLIC SMALL LIGATURE A IE" #x04D5)
- ("CYRILLIC CAPITAL LETTER IE WITH BREVE" #x04D6)
- ("CYRILLIC SMALL LETTER IE WITH BREVE" #x04D7)
- ("CYRILLIC CAPITAL LETTER SCHWA" #x04D8)
- ("CYRILLIC SMALL LETTER SCHWA" #x04D9)
- ("CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS" #x04DA)
- ("CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS" #x04DB)
- ("CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS" #x04DC)
- ("CYRILLIC SMALL LETTER ZHE WITH DIAERESIS" #x04DD)
- ("CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS" #x04DE)
- ("CYRILLIC SMALL LETTER ZE WITH DIAERESIS" #x04DF)
- ("CYRILLIC CAPITAL LETTER ABKHASIAN DZE" #x04E0)
- ("CYRILLIC SMALL LETTER ABKHASIAN DZE" #x04E1)
- ("CYRILLIC CAPITAL LETTER I WITH MACRON" #x04E2)
- ("CYRILLIC SMALL LETTER I WITH MACRON" #x04E3)
- ("CYRILLIC CAPITAL LETTER I WITH DIAERESIS" #x04E4)
- ("CYRILLIC SMALL LETTER I WITH DIAERESIS" #x04E5)
- ("CYRILLIC CAPITAL LETTER O WITH DIAERESIS" #x04E6)
- ("CYRILLIC SMALL LETTER O WITH DIAERESIS" #x04E7)
- ("CYRILLIC CAPITAL LETTER BARRED O" #x04E8)
- ("CYRILLIC SMALL LETTER BARRED O" #x04E9)
- ("CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS" #x04EA)
- ("CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS" #x04EB)
- ("CYRILLIC CAPITAL LETTER E WITH DIAERESIS" #x04EC)
- ("CYRILLIC SMALL LETTER E WITH DIAERESIS" #x04ED)
- ("CYRILLIC CAPITAL LETTER U WITH MACRON" #x04EE)
- ("CYRILLIC SMALL LETTER U WITH MACRON" #x04EF)
- ("CYRILLIC CAPITAL LETTER U WITH DIAERESIS" #x04F0)
- ("CYRILLIC SMALL LETTER U WITH DIAERESIS" #x04F1)
- ("CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE" #x04F2)
- ("CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE" #x04F3)
- ("CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS" #x04F4)
- ("CYRILLIC SMALL LETTER CHE WITH DIAERESIS" #x04F5)
- ("CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS" #x04F8)
- ("CYRILLIC SMALL LETTER YERU WITH DIAERESIS" #x04F9)
- ))
-
diff --git a/etc/nxml/00500-0052F.el b/etc/nxml/00500-0052F.el
deleted file mode 100644
index ba1587a43c..0000000000
--- a/etc/nxml/00500-0052F.el
+++ /dev/null
@@ -1,19 +0,0 @@
-(nxml-define-char-name-set 'cyrillic-supplementary
- '(("CYRILLIC CAPITAL LETTER KOMI DE" #x0500)
- ("CYRILLIC SMALL LETTER KOMI DE" #x0501)
- ("CYRILLIC CAPITAL LETTER KOMI DJE" #x0502)
- ("CYRILLIC SMALL LETTER KOMI DJE" #x0503)
- ("CYRILLIC CAPITAL LETTER KOMI ZJE" #x0504)
- ("CYRILLIC SMALL LETTER KOMI ZJE" #x0505)
- ("CYRILLIC CAPITAL LETTER KOMI DZJE" #x0506)
- ("CYRILLIC SMALL LETTER KOMI DZJE" #x0507)
- ("CYRILLIC CAPITAL LETTER KOMI LJE" #x0508)
- ("CYRILLIC SMALL LETTER KOMI LJE" #x0509)
- ("CYRILLIC CAPITAL LETTER KOMI NJE" #x050A)
- ("CYRILLIC SMALL LETTER KOMI NJE" #x050B)
- ("CYRILLIC CAPITAL LETTER KOMI SJE" #x050C)
- ("CYRILLIC SMALL LETTER KOMI SJE" #x050D)
- ("CYRILLIC CAPITAL LETTER KOMI TJE" #x050E)
- ("CYRILLIC SMALL LETTER KOMI TJE" #x050F)
- ))
-
diff --git a/etc/nxml/00530-0058F.el b/etc/nxml/00530-0058F.el
deleted file mode 100644
index 83b5bdff20..0000000000
--- a/etc/nxml/00530-0058F.el
+++ /dev/null
@@ -1,89 +0,0 @@
-(nxml-define-char-name-set 'armenian
- '(("ARMENIAN CAPITAL LETTER AYB" #x0531)
- ("ARMENIAN CAPITAL LETTER BEN" #x0532)
- ("ARMENIAN CAPITAL LETTER GIM" #x0533)
- ("ARMENIAN CAPITAL LETTER DA" #x0534)
- ("ARMENIAN CAPITAL LETTER ECH" #x0535)
- ("ARMENIAN CAPITAL LETTER ZA" #x0536)
- ("ARMENIAN CAPITAL LETTER EH" #x0537)
- ("ARMENIAN CAPITAL LETTER ET" #x0538)
- ("ARMENIAN CAPITAL LETTER TO" #x0539)
- ("ARMENIAN CAPITAL LETTER ZHE" #x053A)
- ("ARMENIAN CAPITAL LETTER INI" #x053B)
- ("ARMENIAN CAPITAL LETTER LIWN" #x053C)
- ("ARMENIAN CAPITAL LETTER XEH" #x053D)
- ("ARMENIAN CAPITAL LETTER CA" #x053E)
- ("ARMENIAN CAPITAL LETTER KEN" #x053F)
- ("ARMENIAN CAPITAL LETTER HO" #x0540)
- ("ARMENIAN CAPITAL LETTER JA" #x0541)
- ("ARMENIAN CAPITAL LETTER GHAD" #x0542)
- ("ARMENIAN CAPITAL LETTER CHEH" #x0543)
- ("ARMENIAN CAPITAL LETTER MEN" #x0544)
- ("ARMENIAN CAPITAL LETTER YI" #x0545)
- ("ARMENIAN CAPITAL LETTER NOW" #x0546)
- ("ARMENIAN CAPITAL LETTER SHA" #x0547)
- ("ARMENIAN CAPITAL LETTER VO" #x0548)
- ("ARMENIAN CAPITAL LETTER CHA" #x0549)
- ("ARMENIAN CAPITAL LETTER PEH" #x054A)
- ("ARMENIAN CAPITAL LETTER JHEH" #x054B)
- ("ARMENIAN CAPITAL LETTER RA" #x054C)
- ("ARMENIAN CAPITAL LETTER SEH" #x054D)
- ("ARMENIAN CAPITAL LETTER VEW" #x054E)
- ("ARMENIAN CAPITAL LETTER TIWN" #x054F)
- ("ARMENIAN CAPITAL LETTER REH" #x0550)
- ("ARMENIAN CAPITAL LETTER CO" #x0551)
- ("ARMENIAN CAPITAL LETTER YIWN" #x0552)
- ("ARMENIAN CAPITAL LETTER PIWR" #x0553)
- ("ARMENIAN CAPITAL LETTER KEH" #x0554)
- ("ARMENIAN CAPITAL LETTER OH" #x0555)
- ("ARMENIAN CAPITAL LETTER FEH" #x0556)
- ("ARMENIAN MODIFIER LETTER LEFT HALF RING" #x0559)
- ("ARMENIAN APOSTROPHE" #x055A)
- ("ARMENIAN EMPHASIS MARK" #x055B)
- ("ARMENIAN EXCLAMATION MARK" #x055C)
- ("ARMENIAN COMMA" #x055D)
- ("ARMENIAN QUESTION MARK" #x055E)
- ("ARMENIAN ABBREVIATION MARK" #x055F)
- ("ARMENIAN SMALL LETTER AYB" #x0561)
- ("ARMENIAN SMALL LETTER BEN" #x0562)
- ("ARMENIAN SMALL LETTER GIM" #x0563)
- ("ARMENIAN SMALL LETTER DA" #x0564)
- ("ARMENIAN SMALL LETTER ECH" #x0565)
- ("ARMENIAN SMALL LETTER ZA" #x0566)
- ("ARMENIAN SMALL LETTER EH" #x0567)
- ("ARMENIAN SMALL LETTER ET" #x0568)
- ("ARMENIAN SMALL LETTER TO" #x0569)
- ("ARMENIAN SMALL LETTER ZHE" #x056A)
- ("ARMENIAN SMALL LETTER INI" #x056B)
- ("ARMENIAN SMALL LETTER LIWN" #x056C)
- ("ARMENIAN SMALL LETTER XEH" #x056D)
- ("ARMENIAN SMALL LETTER CA" #x056E)
- ("ARMENIAN SMALL LETTER KEN" #x056F)
- ("ARMENIAN SMALL LETTER HO" #x0570)
- ("ARMENIAN SMALL LETTER JA" #x0571)
- ("ARMENIAN SMALL LETTER GHAD" #x0572)
- ("ARMENIAN SMALL LETTER CHEH" #x0573)
- ("ARMENIAN SMALL LETTER MEN" #x0574)
- ("ARMENIAN SMALL LETTER YI" #x0575)
- ("ARMENIAN SMALL LETTER NOW" #x0576)
- ("ARMENIAN SMALL LETTER SHA" #x0577)
- ("ARMENIAN SMALL LETTER VO" #x0578)
- ("ARMENIAN SMALL LETTER CHA" #x0579)
- ("ARMENIAN SMALL LETTER PEH" #x057A)
- ("ARMENIAN SMALL LETTER JHEH" #x057B)
- ("ARMENIAN SMALL LETTER RA" #x057C)
- ("ARMENIAN SMALL LETTER SEH" #x057D)
- ("ARMENIAN SMALL LETTER VEW" #x057E)
- ("ARMENIAN SMALL LETTER TIWN" #x057F)
- ("ARMENIAN SMALL LETTER REH" #x0580)
- ("ARMENIAN SMALL LETTER CO" #x0581)
- ("ARMENIAN SMALL LETTER YIWN" #x0582)
- ("ARMENIAN SMALL LETTER PIWR" #x0583)
- ("ARMENIAN SMALL LETTER KEH" #x0584)
- ("ARMENIAN SMALL LETTER OH" #x0585)
- ("ARMENIAN SMALL LETTER FEH" #x0586)
- ("ARMENIAN SMALL LIGATURE ECH YIWN" #x0587)
- ("ARMENIAN FULL STOP" #x0589)
- ("ARMENIAN HYPHEN" #x058A)
- ))
-
diff --git a/etc/nxml/00590-005FF.el b/etc/nxml/00590-005FF.el
deleted file mode 100644
index ecd07b12cf..0000000000
--- a/etc/nxml/00590-005FF.el
+++ /dev/null
@@ -1,85 +0,0 @@
-(nxml-define-char-name-set 'hebrew
- '(("HEBREW ACCENT ETNAHTA" #x0591)
- ("HEBREW ACCENT SEGOL" #x0592)
- ("HEBREW ACCENT SHALSHELET" #x0593)
- ("HEBREW ACCENT ZAQEF QATAN" #x0594)
- ("HEBREW ACCENT ZAQEF GADOL" #x0595)
- ("HEBREW ACCENT TIPEHA" #x0596)
- ("HEBREW ACCENT REVIA" #x0597)
- ("HEBREW ACCENT ZARQA" #x0598)
- ("HEBREW ACCENT PASHTA" #x0599)
- ("HEBREW ACCENT YETIV" #x059A)
- ("HEBREW ACCENT TEVIR" #x059B)
- ("HEBREW ACCENT GERESH" #x059C)
- ("HEBREW ACCENT GERESH MUQDAM" #x059D)
- ("HEBREW ACCENT GERSHAYIM" #x059E)
- ("HEBREW ACCENT QARNEY PARA" #x059F)
- ("HEBREW ACCENT TELISHA GEDOLA" #x05A0)
- ("HEBREW ACCENT PAZER" #x05A1)
- ("HEBREW ACCENT MUNAH" #x05A3)
- ("HEBREW ACCENT MAHAPAKH" #x05A4)
- ("HEBREW ACCENT MERKHA" #x05A5)
- ("HEBREW ACCENT MERKHA KEFULA" #x05A6)
- ("HEBREW ACCENT DARGA" #x05A7)
- ("HEBREW ACCENT QADMA" #x05A8)
- ("HEBREW ACCENT TELISHA QETANA" #x05A9)
- ("HEBREW ACCENT YERAH BEN YOMO" #x05AA)
- ("HEBREW ACCENT OLE" #x05AB)
- ("HEBREW ACCENT ILUY" #x05AC)
- ("HEBREW ACCENT DEHI" #x05AD)
- ("HEBREW ACCENT ZINOR" #x05AE)
- ("HEBREW MARK MASORA CIRCLE" #x05AF)
- ("HEBREW POINT SHEVA" #x05B0)
- ("HEBREW POINT HATAF SEGOL" #x05B1)
- ("HEBREW POINT HATAF PATAH" #x05B2)
- ("HEBREW POINT HATAF QAMATS" #x05B3)
- ("HEBREW POINT HIRIQ" #x05B4)
- ("HEBREW POINT TSERE" #x05B5)
- ("HEBREW POINT SEGOL" #x05B6)
- ("HEBREW POINT PATAH" #x05B7)
- ("HEBREW POINT QAMATS" #x05B8)
- ("HEBREW POINT HOLAM" #x05B9)
- ("HEBREW POINT QUBUTS" #x05BB)
- ("HEBREW POINT DAGESH OR MAPIQ" #x05BC)
- ("HEBREW POINT METEG" #x05BD)
- ("HEBREW PUNCTUATION MAQAF" #x05BE)
- ("HEBREW POINT RAFE" #x05BF)
- ("HEBREW PUNCTUATION PASEQ" #x05C0)
- ("HEBREW POINT SHIN DOT" #x05C1)
- ("HEBREW POINT SIN DOT" #x05C2)
- ("HEBREW PUNCTUATION SOF PASUQ" #x05C3)
- ("HEBREW MARK UPPER DOT" #x05C4)
- ("HEBREW LETTER ALEF" #x05D0)
- ("HEBREW LETTER BET" #x05D1)
- ("HEBREW LETTER GIMEL" #x05D2)
- ("HEBREW LETTER DALET" #x05D3)
- ("HEBREW LETTER HE" #x05D4)
- ("HEBREW LETTER VAV" #x05D5)
- ("HEBREW LETTER ZAYIN" #x05D6)
- ("HEBREW LETTER HET" #x05D7)
- ("HEBREW LETTER TET" #x05D8)
- ("HEBREW LETTER YOD" #x05D9)
- ("HEBREW LETTER FINAL KAF" #x05DA)
- ("HEBREW LETTER KAF" #x05DB)
- ("HEBREW LETTER LAMED" #x05DC)
- ("HEBREW LETTER FINAL MEM" #x05DD)
- ("HEBREW LETTER MEM" #x05DE)
- ("HEBREW LETTER FINAL NUN" #x05DF)
- ("HEBREW LETTER NUN" #x05E0)
- ("HEBREW LETTER SAMEKH" #x05E1)
- ("HEBREW LETTER AYIN" #x05E2)
- ("HEBREW LETTER FINAL PE" #x05E3)
- ("HEBREW LETTER PE" #x05E4)
- ("HEBREW LETTER FINAL TSADI" #x05E5)
- ("HEBREW LETTER TSADI" #x05E6)
- ("HEBREW LETTER QOF" #x05E7)
- ("HEBREW LETTER RESH" #x05E8)
- ("HEBREW LETTER SHIN" #x05E9)
- ("HEBREW LETTER TAV" #x05EA)
- ("HEBREW LIGATURE YIDDISH DOUBLE VAV" #x05F0)
- ("HEBREW LIGATURE YIDDISH VAV YOD" #x05F1)
- ("HEBREW LIGATURE YIDDISH DOUBLE YOD" #x05F2)
- ("HEBREW PUNCTUATION GERESH" #x05F3)
- ("HEBREW PUNCTUATION GERSHAYIM" #x05F4)
- ))
-
diff --git a/etc/nxml/00600-006FF.el b/etc/nxml/00600-006FF.el
deleted file mode 100644
index a3b997f755..0000000000
--- a/etc/nxml/00600-006FF.el
+++ /dev/null
@@ -1,211 +0,0 @@
-(nxml-define-char-name-set 'arabic
- '(("ARABIC COMMA" #x060C)
- ("ARABIC SEMICOLON" #x061B)
- ("ARABIC QUESTION MARK" #x061F)
- ("ARABIC LETTER HAMZA" #x0621)
- ("ARABIC LETTER ALEF WITH MADDA ABOVE" #x0622)
- ("ARABIC LETTER ALEF WITH HAMZA ABOVE" #x0623)
- ("ARABIC LETTER WAW WITH HAMZA ABOVE" #x0624)
- ("ARABIC LETTER ALEF WITH HAMZA BELOW" #x0625)
- ("ARABIC LETTER YEH WITH HAMZA ABOVE" #x0626)
- ("ARABIC LETTER ALEF" #x0627)
- ("ARABIC LETTER BEH" #x0628)
- ("ARABIC LETTER TEH MARBUTA" #x0629)
- ("ARABIC LETTER TEH" #x062A)
- ("ARABIC LETTER THEH" #x062B)
- ("ARABIC LETTER JEEM" #x062C)
- ("ARABIC LETTER HAH" #x062D)
- ("ARABIC LETTER KHAH" #x062E)
- ("ARABIC LETTER DAL" #x062F)
- ("ARABIC LETTER THAL" #x0630)
- ("ARABIC LETTER REH" #x0631)
- ("ARABIC LETTER ZAIN" #x0632)
- ("ARABIC LETTER SEEN" #x0633)
- ("ARABIC LETTER SHEEN" #x0634)
- ("ARABIC LETTER SAD" #x0635)
- ("ARABIC LETTER DAD" #x0636)
- ("ARABIC LETTER TAH" #x0637)
- ("ARABIC LETTER ZAH" #x0638)
- ("ARABIC LETTER AIN" #x0639)
- ("ARABIC LETTER GHAIN" #x063A)
- ("ARABIC TATWEEL" #x0640)
- ("ARABIC LETTER FEH" #x0641)
- ("ARABIC LETTER QAF" #x0642)
- ("ARABIC LETTER KAF" #x0643)
- ("ARABIC LETTER LAM" #x0644)
- ("ARABIC LETTER MEEM" #x0645)
- ("ARABIC LETTER NOON" #x0646)
- ("ARABIC LETTER HEH" #x0647)
- ("ARABIC LETTER WAW" #x0648)
- ("ARABIC LETTER ALEF MAKSURA" #x0649)
- ("ARABIC LETTER YEH" #x064A)
- ("ARABIC FATHATAN" #x064B)
- ("ARABIC DAMMATAN" #x064C)
- ("ARABIC KASRATAN" #x064D)
- ("ARABIC FATHA" #x064E)
- ("ARABIC DAMMA" #x064F)
- ("ARABIC KASRA" #x0650)
- ("ARABIC SHADDA" #x0651)
- ("ARABIC SUKUN" #x0652)
- ("ARABIC MADDAH ABOVE" #x0653)
- ("ARABIC HAMZA ABOVE" #x0654)
- ("ARABIC HAMZA BELOW" #x0655)
- ("ARABIC-INDIC DIGIT ZERO" #x0660)
- ("ARABIC-INDIC DIGIT ONE" #x0661)
- ("ARABIC-INDIC DIGIT TWO" #x0662)
- ("ARABIC-INDIC DIGIT THREE" #x0663)
- ("ARABIC-INDIC DIGIT FOUR" #x0664)
- ("ARABIC-INDIC DIGIT FIVE" #x0665)
- ("ARABIC-INDIC DIGIT SIX" #x0666)
- ("ARABIC-INDIC DIGIT SEVEN" #x0667)
- ("ARABIC-INDIC DIGIT EIGHT" #x0668)
- ("ARABIC-INDIC DIGIT NINE" #x0669)
- ("ARABIC PERCENT SIGN" #x066A)
- ("ARABIC DECIMAL SEPARATOR" #x066B)
- ("ARABIC THOUSANDS SEPARATOR" #x066C)
- ("ARABIC FIVE POINTED STAR" #x066D)
- ("ARABIC LETTER DOTLESS BEH" #x066E)
- ("ARABIC LETTER DOTLESS QAF" #x066F)
- ("ARABIC LETTER SUPERSCRIPT ALEF" #x0670)
- ("ARABIC LETTER ALEF WASLA" #x0671)
- ("ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE" #x0672)
- ("ARABIC LETTER ALEF WITH WAVY HAMZA BELOW" #x0673)
- ("ARABIC LETTER HIGH HAMZA" #x0674)
- ("ARABIC LETTER HIGH HAMZA ALEF" #x0675)
- ("ARABIC LETTER HIGH HAMZA WAW" #x0676)
- ("ARABIC LETTER U WITH HAMZA ABOVE" #x0677)
- ("ARABIC LETTER HIGH HAMZA YEH" #x0678)
- ("ARABIC LETTER TTEH" #x0679)
- ("ARABIC LETTER TTEHEH" #x067A)
- ("ARABIC LETTER BEEH" #x067B)
- ("ARABIC LETTER TEH WITH RING" #x067C)
- ("ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS" #x067D)
- ("ARABIC LETTER PEH" #x067E)
- ("ARABIC LETTER TEHEH" #x067F)
- ("ARABIC LETTER BEHEH" #x0680)
- ("ARABIC LETTER HAH WITH HAMZA ABOVE" #x0681)
- ("ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE" #x0682)
- ("ARABIC LETTER NYEH" #x0683)
- ("ARABIC LETTER DYEH" #x0684)
- ("ARABIC LETTER HAH WITH THREE DOTS ABOVE" #x0685)
- ("ARABIC LETTER TCHEH" #x0686)
- ("ARABIC LETTER TCHEHEH" #x0687)
- ("ARABIC LETTER DDAL" #x0688)
- ("ARABIC LETTER DAL WITH RING" #x0689)
- ("ARABIC LETTER DAL WITH DOT BELOW" #x068A)
- ("ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH" #x068B)
- ("ARABIC LETTER DAHAL" #x068C)
- ("ARABIC LETTER DDAHAL" #x068D)
- ("ARABIC LETTER DUL" #x068E)
- ("ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS" #x068F)
- ("ARABIC LETTER DAL WITH FOUR DOTS ABOVE" #x0690)
- ("ARABIC LETTER RREH" #x0691)
- ("ARABIC LETTER REH WITH SMALL V" #x0692)
- ("ARABIC LETTER REH WITH RING" #x0693)
- ("ARABIC LETTER REH WITH DOT BELOW" #x0694)
- ("ARABIC LETTER REH WITH SMALL V BELOW" #x0695)
- ("ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE" #x0696)
- ("ARABIC LETTER REH WITH TWO DOTS ABOVE" #x0697)
- ("ARABIC LETTER JEH" #x0698)
- ("ARABIC LETTER REH WITH FOUR DOTS ABOVE" #x0699)
- ("ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE" #x069A)
- ("ARABIC LETTER SEEN WITH THREE DOTS BELOW" #x069B)
- ("ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE" #x069C)
- ("ARABIC LETTER SAD WITH TWO DOTS BELOW" #x069D)
- ("ARABIC LETTER SAD WITH THREE DOTS ABOVE" #x069E)
- ("ARABIC LETTER TAH WITH THREE DOTS ABOVE" #x069F)
- ("ARABIC LETTER AIN WITH THREE DOTS ABOVE" #x06A0)
- ("ARABIC LETTER DOTLESS FEH" #x06A1)
- ("ARABIC LETTER FEH WITH DOT MOVED BELOW" #x06A2)
- ("ARABIC LETTER FEH WITH DOT BELOW" #x06A3)
- ("ARABIC LETTER VEH" #x06A4)
- ("ARABIC LETTER FEH WITH THREE DOTS BELOW" #x06A5)
- ("ARABIC LETTER PEHEH" #x06A6)
- ("ARABIC LETTER QAF WITH DOT ABOVE" #x06A7)
- ("ARABIC LETTER QAF WITH THREE DOTS ABOVE" #x06A8)
- ("ARABIC LETTER KEHEH" #x06A9)
- ("ARABIC LETTER SWASH KAF" #x06AA)
- ("ARABIC LETTER KAF WITH RING" #x06AB)
- ("ARABIC LETTER KAF WITH DOT ABOVE" #x06AC)
- ("ARABIC LETTER NG" #x06AD)
- ("ARABIC LETTER KAF WITH THREE DOTS BELOW" #x06AE)
- ("ARABIC LETTER GAF" #x06AF)
- ("ARABIC LETTER GAF WITH RING" #x06B0)
- ("ARABIC LETTER NGOEH" #x06B1)
- ("ARABIC LETTER GAF WITH TWO DOTS BELOW" #x06B2)
- ("ARABIC LETTER GUEH" #x06B3)
- ("ARABIC LETTER GAF WITH THREE DOTS ABOVE" #x06B4)
- ("ARABIC LETTER LAM WITH SMALL V" #x06B5)
- ("ARABIC LETTER LAM WITH DOT ABOVE" #x06B6)
- ("ARABIC LETTER LAM WITH THREE DOTS ABOVE" #x06B7)
- ("ARABIC LETTER LAM WITH THREE DOTS BELOW" #x06B8)
- ("ARABIC LETTER NOON WITH DOT BELOW" #x06B9)
- ("ARABIC LETTER NOON GHUNNA" #x06BA)
- ("ARABIC LETTER RNOON" #x06BB)
- ("ARABIC LETTER NOON WITH RING" #x06BC)
- ("ARABIC LETTER NOON WITH THREE DOTS ABOVE" #x06BD)
- ("ARABIC LETTER HEH DOACHASHMEE" #x06BE)
- ("ARABIC LETTER TCHEH WITH DOT ABOVE" #x06BF)
- ("ARABIC LETTER HEH WITH YEH ABOVE" #x06C0)
- ("ARABIC LETTER HEH GOAL" #x06C1)
- ("ARABIC LETTER HEH GOAL WITH HAMZA ABOVE" #x06C2)
- ("ARABIC LETTER TEH MARBUTA GOAL" #x06C3)
- ("ARABIC LETTER WAW WITH RING" #x06C4)
- ("ARABIC LETTER KIRGHIZ OE" #x06C5)
- ("ARABIC LETTER OE" #x06C6)
- ("ARABIC LETTER U" #x06C7)
- ("ARABIC LETTER YU" #x06C8)
- ("ARABIC LETTER KIRGHIZ YU" #x06C9)
- ("ARABIC LETTER WAW WITH TWO DOTS ABOVE" #x06CA)
- ("ARABIC LETTER VE" #x06CB)
- ("ARABIC LETTER FARSI YEH" #x06CC)
- ("ARABIC LETTER YEH WITH TAIL" #x06CD)
- ("ARABIC LETTER YEH WITH SMALL V" #x06CE)
- ("ARABIC LETTER WAW WITH DOT ABOVE" #x06CF)
- ("ARABIC LETTER E" #x06D0)
- ("ARABIC LETTER YEH WITH THREE DOTS BELOW" #x06D1)
- ("ARABIC LETTER YEH BARREE" #x06D2)
- ("ARABIC LETTER YEH BARREE WITH HAMZA ABOVE" #x06D3)
- ("ARABIC FULL STOP" #x06D4)
- ("ARABIC LETTER AE" #x06D5)
- ("ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA" #x06D6)
- ("ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA" #x06D7)
- ("ARABIC SMALL HIGH MEEM INITIAL FORM" #x06D8)
- ("ARABIC SMALL HIGH LAM ALEF" #x06D9)
- ("ARABIC SMALL HIGH JEEM" #x06DA)
- ("ARABIC SMALL HIGH THREE DOTS" #x06DB)
- ("ARABIC SMALL HIGH SEEN" #x06DC)
- ("ARABIC END OF AYAH" #x06DD)
- ("ARABIC START OF RUB EL HIZB" #x06DE)
- ("ARABIC SMALL HIGH ROUNDED ZERO" #x06DF)
- ("ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO" #x06E0)
- ("ARABIC SMALL HIGH DOTLESS HEAD OF KHAH" #x06E1)
- ("ARABIC SMALL HIGH MEEM ISOLATED FORM" #x06E2)
- ("ARABIC SMALL LOW SEEN" #x06E3)
- ("ARABIC SMALL HIGH MADDA" #x06E4)
- ("ARABIC SMALL WAW" #x06E5)
- ("ARABIC SMALL YEH" #x06E6)
- ("ARABIC SMALL HIGH YEH" #x06E7)
- ("ARABIC SMALL HIGH NOON" #x06E8)
- ("ARABIC PLACE OF SAJDAH" #x06E9)
- ("ARABIC EMPTY CENTRE LOW STOP" #x06EA)
- ("ARABIC EMPTY CENTRE HIGH STOP" #x06EB)
- ("ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE" #x06EC)
- ("ARABIC SMALL LOW MEEM" #x06ED)
- ("EXTENDED ARABIC-INDIC DIGIT ZERO" #x06F0)
- ("EXTENDED ARABIC-INDIC DIGIT ONE" #x06F1)
- ("EXTENDED ARABIC-INDIC DIGIT TWO" #x06F2)
- ("EXTENDED ARABIC-INDIC DIGIT THREE" #x06F3)
- ("EXTENDED ARABIC-INDIC DIGIT FOUR" #x06F4)
- ("EXTENDED ARABIC-INDIC DIGIT FIVE" #x06F5)
- ("EXTENDED ARABIC-INDIC DIGIT SIX" #x06F6)
- ("EXTENDED ARABIC-INDIC DIGIT SEVEN" #x06F7)
- ("EXTENDED ARABIC-INDIC DIGIT EIGHT" #x06F8)
- ("EXTENDED ARABIC-INDIC DIGIT NINE" #x06F9)
- ("ARABIC LETTER SHEEN WITH DOT BELOW" #x06FA)
- ("ARABIC LETTER DAD WITH DOT BELOW" #x06FB)
- ("ARABIC LETTER GHAIN WITH DOT BELOW" #x06FC)
- ("ARABIC SIGN SINDHI AMPERSAND" #x06FD)
- ("ARABIC SIGN SINDHI POSTPOSITION MEN" #x06FE)
- ))
-
diff --git a/etc/nxml/00700-0074F.el b/etc/nxml/00700-0074F.el
deleted file mode 100644
index 16bc7ae7f5..0000000000
--- a/etc/nxml/00700-0074F.el
+++ /dev/null
@@ -1,74 +0,0 @@
-(nxml-define-char-name-set 'syriac
- '(("SYRIAC END OF PARAGRAPH" #x0700)
- ("SYRIAC SUPRALINEAR FULL STOP" #x0701)
- ("SYRIAC SUBLINEAR FULL STOP" #x0702)
- ("SYRIAC SUPRALINEAR COLON" #x0703)
- ("SYRIAC SUBLINEAR COLON" #x0704)
- ("SYRIAC HORIZONTAL COLON" #x0705)
- ("SYRIAC COLON SKEWED LEFT" #x0706)
- ("SYRIAC COLON SKEWED RIGHT" #x0707)
- ("SYRIAC SUPRALINEAR COLON SKEWED LEFT" #x0708)
- ("SYRIAC SUBLINEAR COLON SKEWED RIGHT" #x0709)
- ("SYRIAC CONTRACTION" #x070A)
- ("SYRIAC HARKLEAN OBELUS" #x070B)
- ("SYRIAC HARKLEAN METOBELUS" #x070C)
- ("SYRIAC HARKLEAN ASTERISCUS" #x070D)
- ("SYRIAC ABBREVIATION MARK" #x070F)
- ("SYRIAC LETTER ALAPH" #x0710)
- ("SYRIAC LETTER SUPERSCRIPT ALAPH" #x0711)
- ("SYRIAC LETTER BETH" #x0712)
- ("SYRIAC LETTER GAMAL" #x0713)
- ("SYRIAC LETTER GAMAL GARSHUNI" #x0714)
- ("SYRIAC LETTER DALATH" #x0715)
- ("SYRIAC LETTER DOTLESS DALATH RISH" #x0716)
- ("SYRIAC LETTER HE" #x0717)
- ("SYRIAC LETTER WAW" #x0718)
- ("SYRIAC LETTER ZAIN" #x0719)
- ("SYRIAC LETTER HETH" #x071A)
- ("SYRIAC LETTER TETH" #x071B)
- ("SYRIAC LETTER TETH GARSHUNI" #x071C)
- ("SYRIAC LETTER YUDH" #x071D)
- ("SYRIAC LETTER YUDH HE" #x071E)
- ("SYRIAC LETTER KAPH" #x071F)
- ("SYRIAC LETTER LAMADH" #x0720)
- ("SYRIAC LETTER MIM" #x0721)
- ("SYRIAC LETTER NUN" #x0722)
- ("SYRIAC LETTER SEMKATH" #x0723)
- ("SYRIAC LETTER FINAL SEMKATH" #x0724)
- ("SYRIAC LETTER E" #x0725)
- ("SYRIAC LETTER PE" #x0726)
- ("SYRIAC LETTER REVERSED PE" #x0727)
- ("SYRIAC LETTER SADHE" #x0728)
- ("SYRIAC LETTER QAPH" #x0729)
- ("SYRIAC LETTER RISH" #x072A)
- ("SYRIAC LETTER SHIN" #x072B)
- ("SYRIAC LETTER TAW" #x072C)
- ("SYRIAC PTHAHA ABOVE" #x0730)
- ("SYRIAC PTHAHA BELOW" #x0731)
- ("SYRIAC PTHAHA DOTTED" #x0732)
- ("SYRIAC ZQAPHA ABOVE" #x0733)
- ("SYRIAC ZQAPHA BELOW" #x0734)
- ("SYRIAC ZQAPHA DOTTED" #x0735)
- ("SYRIAC RBASA ABOVE" #x0736)
- ("SYRIAC RBASA BELOW" #x0737)
- ("SYRIAC DOTTED ZLAMA HORIZONTAL" #x0738)
- ("SYRIAC DOTTED ZLAMA ANGULAR" #x0739)
- ("SYRIAC HBASA ABOVE" #x073A)
- ("SYRIAC HBASA BELOW" #x073B)
- ("SYRIAC HBASA-ESASA DOTTED" #x073C)
- ("SYRIAC ESASA ABOVE" #x073D)
- ("SYRIAC ESASA BELOW" #x073E)
- ("SYRIAC RWAHA" #x073F)
- ("SYRIAC FEMININE DOT" #x0740)
- ("SYRIAC QUSHSHAYA" #x0741)
- ("SYRIAC RUKKAKHA" #x0742)
- ("SYRIAC TWO VERTICAL DOTS ABOVE" #x0743)
- ("SYRIAC TWO VERTICAL DOTS BELOW" #x0744)
- ("SYRIAC THREE DOTS ABOVE" #x0745)
- ("SYRIAC THREE DOTS BELOW" #x0746)
- ("SYRIAC OBLIQUE LINE ABOVE" #x0747)
- ("SYRIAC OBLIQUE LINE BELOW" #x0748)
- ("SYRIAC MUSIC" #x0749)
- ("SYRIAC BARREKH" #x074A)
- ))
-
diff --git a/etc/nxml/00780-007BF.el b/etc/nxml/00780-007BF.el
deleted file mode 100644
index 8d54fd5c22..0000000000
--- a/etc/nxml/00780-007BF.el
+++ /dev/null
@@ -1,53 +0,0 @@
-(nxml-define-char-name-set 'thaana
- '(("THAANA LETTER HAA" #x0780)
- ("THAANA LETTER SHAVIYANI" #x0781)
- ("THAANA LETTER NOONU" #x0782)
- ("THAANA LETTER RAA" #x0783)
- ("THAANA LETTER BAA" #x0784)
- ("THAANA LETTER LHAVIYANI" #x0785)
- ("THAANA LETTER KAAFU" #x0786)
- ("THAANA LETTER ALIFU" #x0787)
- ("THAANA LETTER VAAVU" #x0788)
- ("THAANA LETTER MEEMU" #x0789)
- ("THAANA LETTER FAAFU" #x078A)
- ("THAANA LETTER DHAALU" #x078B)
- ("THAANA LETTER THAA" #x078C)
- ("THAANA LETTER LAAMU" #x078D)
- ("THAANA LETTER GAAFU" #x078E)
- ("THAANA LETTER GNAVIYANI" #x078F)
- ("THAANA LETTER SEENU" #x0790)
- ("THAANA LETTER DAVIYANI" #x0791)
- ("THAANA LETTER ZAVIYANI" #x0792)
- ("THAANA LETTER TAVIYANI" #x0793)
- ("THAANA LETTER YAA" #x0794)
- ("THAANA LETTER PAVIYANI" #x0795)
- ("THAANA LETTER JAVIYANI" #x0796)
- ("THAANA LETTER CHAVIYANI" #x0797)
- ("THAANA LETTER TTAA" #x0798)
- ("THAANA LETTER HHAA" #x0799)
- ("THAANA LETTER KHAA" #x079A)
- ("THAANA LETTER THAALU" #x079B)
- ("THAANA LETTER ZAA" #x079C)
- ("THAANA LETTER SHEENU" #x079D)
- ("THAANA LETTER SAADHU" #x079E)
- ("THAANA LETTER DAADHU" #x079F)
- ("THAANA LETTER TO" #x07A0)
- ("THAANA LETTER ZO" #x07A1)
- ("THAANA LETTER AINU" #x07A2)
- ("THAANA LETTER GHAINU" #x07A3)
- ("THAANA LETTER QAAFU" #x07A4)
- ("THAANA LETTER WAAVU" #x07A5)
- ("THAANA ABAFILI" #x07A6)
- ("THAANA AABAAFILI" #x07A7)
- ("THAANA IBIFILI" #x07A8)
- ("THAANA EEBEEFILI" #x07A9)
- ("THAANA UBUFILI" #x07AA)
- ("THAANA OOBOOFILI" #x07AB)
- ("THAANA EBEFILI" #x07AC)
- ("THAANA EYBEYFILI" #x07AD)
- ("THAANA OBOFILI" #x07AE)
- ("THAANA OABOAFILI" #x07AF)
- ("THAANA SUKUN" #x07B0)
- ("THAANA LETTER NAA" #x07B1)
- ))
-
diff --git a/etc/nxml/00900-0097F.el b/etc/nxml/00900-0097F.el
deleted file mode 100644
index 3a253f67b1..0000000000
--- a/etc/nxml/00900-0097F.el
+++ /dev/null
@@ -1,107 +0,0 @@
-(nxml-define-char-name-set 'devanagari
- '(("DEVANAGARI SIGN CANDRABINDU" #x0901)
- ("DEVANAGARI SIGN ANUSVARA" #x0902)
- ("DEVANAGARI SIGN VISARGA" #x0903)
- ("DEVANAGARI LETTER A" #x0905)
- ("DEVANAGARI LETTER AA" #x0906)
- ("DEVANAGARI LETTER I" #x0907)
- ("DEVANAGARI LETTER II" #x0908)
- ("DEVANAGARI LETTER U" #x0909)
- ("DEVANAGARI LETTER UU" #x090A)
- ("DEVANAGARI LETTER VOCALIC R" #x090B)
- ("DEVANAGARI LETTER VOCALIC L" #x090C)
- ("DEVANAGARI LETTER CANDRA E" #x090D)
- ("DEVANAGARI LETTER SHORT E" #x090E)
- ("DEVANAGARI LETTER E" #x090F)
- ("DEVANAGARI LETTER AI" #x0910)
- ("DEVANAGARI LETTER CANDRA O" #x0911)
- ("DEVANAGARI LETTER SHORT O" #x0912)
- ("DEVANAGARI LETTER O" #x0913)
- ("DEVANAGARI LETTER AU" #x0914)
- ("DEVANAGARI LETTER KA" #x0915)
- ("DEVANAGARI LETTER KHA" #x0916)
- ("DEVANAGARI LETTER GA" #x0917)
- ("DEVANAGARI LETTER GHA" #x0918)
- ("DEVANAGARI LETTER NGA" #x0919)
- ("DEVANAGARI LETTER CA" #x091A)
- ("DEVANAGARI LETTER CHA" #x091B)
- ("DEVANAGARI LETTER JA" #x091C)
- ("DEVANAGARI LETTER JHA" #x091D)
- ("DEVANAGARI LETTER NYA" #x091E)
- ("DEVANAGARI LETTER TTA" #x091F)
- ("DEVANAGARI LETTER TTHA" #x0920)
- ("DEVANAGARI LETTER DDA" #x0921)
- ("DEVANAGARI LETTER DDHA" #x0922)
- ("DEVANAGARI LETTER NNA" #x0923)
- ("DEVANAGARI LETTER TA" #x0924)
- ("DEVANAGARI LETTER THA" #x0925)
- ("DEVANAGARI LETTER DA" #x0926)
- ("DEVANAGARI LETTER DHA" #x0927)
- ("DEVANAGARI LETTER NA" #x0928)
- ("DEVANAGARI LETTER NNNA" #x0929)
- ("DEVANAGARI LETTER PA" #x092A)
- ("DEVANAGARI LETTER PHA" #x092B)
- ("DEVANAGARI LETTER BA" #x092C)
- ("DEVANAGARI LETTER BHA" #x092D)
- ("DEVANAGARI LETTER MA" #x092E)
- ("DEVANAGARI LETTER YA" #x092F)
- ("DEVANAGARI LETTER RA" #x0930)
- ("DEVANAGARI LETTER RRA" #x0931)
- ("DEVANAGARI LETTER LA" #x0932)
- ("DEVANAGARI LETTER LLA" #x0933)
- ("DEVANAGARI LETTER LLLA" #x0934)
- ("DEVANAGARI LETTER VA" #x0935)
- ("DEVANAGARI LETTER SHA" #x0936)
- ("DEVANAGARI LETTER SSA" #x0937)
- ("DEVANAGARI LETTER SA" #x0938)
- ("DEVANAGARI LETTER HA" #x0939)
- ("DEVANAGARI SIGN NUKTA" #x093C)
- ("DEVANAGARI SIGN AVAGRAHA" #x093D)
- ("DEVANAGARI VOWEL SIGN AA" #x093E)
- ("DEVANAGARI VOWEL SIGN I" #x093F)
- ("DEVANAGARI VOWEL SIGN II" #x0940)
- ("DEVANAGARI VOWEL SIGN U" #x0941)
- ("DEVANAGARI VOWEL SIGN UU" #x0942)
- ("DEVANAGARI VOWEL SIGN VOCALIC R" #x0943)
- ("DEVANAGARI VOWEL SIGN VOCALIC RR" #x0944)
- ("DEVANAGARI VOWEL SIGN CANDRA E" #x0945)
- ("DEVANAGARI VOWEL SIGN SHORT E" #x0946)
- ("DEVANAGARI VOWEL SIGN E" #x0947)
- ("DEVANAGARI VOWEL SIGN AI" #x0948)
- ("DEVANAGARI VOWEL SIGN CANDRA O" #x0949)
- ("DEVANAGARI VOWEL SIGN SHORT O" #x094A)
- ("DEVANAGARI VOWEL SIGN O" #x094B)
- ("DEVANAGARI VOWEL SIGN AU" #x094C)
- ("DEVANAGARI SIGN VIRAMA" #x094D)
- ("DEVANAGARI OM" #x0950)
- ("DEVANAGARI STRESS SIGN UDATTA" #x0951)
- ("DEVANAGARI STRESS SIGN ANUDATTA" #x0952)
- ("DEVANAGARI GRAVE ACCENT" #x0953)
- ("DEVANAGARI ACUTE ACCENT" #x0954)
- ("DEVANAGARI LETTER QA" #x0958)
- ("DEVANAGARI LETTER KHHA" #x0959)
- ("DEVANAGARI LETTER GHHA" #x095A)
- ("DEVANAGARI LETTER ZA" #x095B)
- ("DEVANAGARI LETTER DDDHA" #x095C)
- ("DEVANAGARI LETTER RHA" #x095D)
- ("DEVANAGARI LETTER FA" #x095E)
- ("DEVANAGARI LETTER YYA" #x095F)
- ("DEVANAGARI LETTER VOCALIC RR" #x0960)
- ("DEVANAGARI LETTER VOCALIC LL" #x0961)
- ("DEVANAGARI VOWEL SIGN VOCALIC L" #x0962)
- ("DEVANAGARI VOWEL SIGN VOCALIC LL" #x0963)
- ("DEVANAGARI DANDA" #x0964)
- ("DEVANAGARI DOUBLE DANDA" #x0965)
- ("DEVANAGARI DIGIT ZERO" #x0966)
- ("DEVANAGARI DIGIT ONE" #x0967)
- ("DEVANAGARI DIGIT TWO" #x0968)
- ("DEVANAGARI DIGIT THREE" #x0969)
- ("DEVANAGARI DIGIT FOUR" #x096A)
- ("DEVANAGARI DIGIT FIVE" #x096B)
- ("DEVANAGARI DIGIT SIX" #x096C)
- ("DEVANAGARI DIGIT SEVEN" #x096D)
- ("DEVANAGARI DIGIT EIGHT" #x096E)
- ("DEVANAGARI DIGIT NINE" #x096F)
- ("DEVANAGARI ABBREVIATION SIGN" #x0970)
- ))
-
diff --git a/etc/nxml/00980-009FF.el b/etc/nxml/00980-009FF.el
deleted file mode 100644
index 5cec96eceb..0000000000
--- a/etc/nxml/00980-009FF.el
+++ /dev/null
@@ -1,92 +0,0 @@
-(nxml-define-char-name-set 'bengali
- '(("BENGALI SIGN CANDRABINDU" #x0981)
- ("BENGALI SIGN ANUSVARA" #x0982)
- ("BENGALI SIGN VISARGA" #x0983)
- ("BENGALI LETTER A" #x0985)
- ("BENGALI LETTER AA" #x0986)
- ("BENGALI LETTER I" #x0987)
- ("BENGALI LETTER II" #x0988)
- ("BENGALI LETTER U" #x0989)
- ("BENGALI LETTER UU" #x098A)
- ("BENGALI LETTER VOCALIC R" #x098B)
- ("BENGALI LETTER VOCALIC L" #x098C)
- ("BENGALI LETTER E" #x098F)
- ("BENGALI LETTER AI" #x0990)
- ("BENGALI LETTER O" #x0993)
- ("BENGALI LETTER AU" #x0994)
- ("BENGALI LETTER KA" #x0995)
- ("BENGALI LETTER KHA" #x0996)
- ("BENGALI LETTER GA" #x0997)
- ("BENGALI LETTER GHA" #x0998)
- ("BENGALI LETTER NGA" #x0999)
- ("BENGALI LETTER CA" #x099A)
- ("BENGALI LETTER CHA" #x099B)
- ("BENGALI LETTER JA" #x099C)
- ("BENGALI LETTER JHA" #x099D)
- ("BENGALI LETTER NYA" #x099E)
- ("BENGALI LETTER TTA" #x099F)
- ("BENGALI LETTER TTHA" #x09A0)
- ("BENGALI LETTER DDA" #x09A1)
- ("BENGALI LETTER DDHA" #x09A2)
- ("BENGALI LETTER NNA" #x09A3)
- ("BENGALI LETTER TA" #x09A4)
- ("BENGALI LETTER THA" #x09A5)
- ("BENGALI LETTER DA" #x09A6)
- ("BENGALI LETTER DHA" #x09A7)
- ("BENGALI LETTER NA" #x09A8)
- ("BENGALI LETTER PA" #x09AA)
- ("BENGALI LETTER PHA" #x09AB)
- ("BENGALI LETTER BA" #x09AC)
- ("BENGALI LETTER BHA" #x09AD)
- ("BENGALI LETTER MA" #x09AE)
- ("BENGALI LETTER YA" #x09AF)
- ("BENGALI LETTER RA" #x09B0)
- ("BENGALI LETTER LA" #x09B2)
- ("BENGALI LETTER SHA" #x09B6)
- ("BENGALI LETTER SSA" #x09B7)
- ("BENGALI LETTER SA" #x09B8)
- ("BENGALI LETTER HA" #x09B9)
- ("BENGALI SIGN NUKTA" #x09BC)
- ("BENGALI VOWEL SIGN AA" #x09BE)
- ("BENGALI VOWEL SIGN I" #x09BF)
- ("BENGALI VOWEL SIGN II" #x09C0)
- ("BENGALI VOWEL SIGN U" #x09C1)
- ("BENGALI VOWEL SIGN UU" #x09C2)
- ("BENGALI VOWEL SIGN VOCALIC R" #x09C3)
- ("BENGALI VOWEL SIGN VOCALIC RR" #x09C4)
- ("BENGALI VOWEL SIGN E" #x09C7)
- ("BENGALI VOWEL SIGN AI" #x09C8)
- ("BENGALI VOWEL SIGN O" #x09CB)
- ("BENGALI VOWEL SIGN AU" #x09CC)
- ("BENGALI SIGN VIRAMA" #x09CD)
- ("BENGALI AU LENGTH MARK" #x09D7)
- ("BENGALI LETTER RRA" #x09DC)
- ("BENGALI LETTER RHA" #x09DD)
- ("BENGALI LETTER YYA" #x09DF)
- ("BENGALI LETTER VOCALIC RR" #x09E0)
- ("BENGALI LETTER VOCALIC LL" #x09E1)
- ("BENGALI VOWEL SIGN VOCALIC L" #x09E2)
- ("BENGALI VOWEL SIGN VOCALIC LL" #x09E3)
- ("BENGALI DIGIT ZERO" #x09E6)
- ("BENGALI DIGIT ONE" #x09E7)
- ("BENGALI DIGIT TWO" #x09E8)
- ("BENGALI DIGIT THREE" #x09E9)
- ("BENGALI DIGIT FOUR" #x09EA)
- ("BENGALI DIGIT FIVE" #x09EB)
- ("BENGALI DIGIT SIX" #x09EC)
- ("BENGALI DIGIT SEVEN" #x09ED)
- ("BENGALI DIGIT EIGHT" #x09EE)
- ("BENGALI DIGIT NINE" #x09EF)
- ("BENGALI LETTER RA WITH MIDDLE DIAGONAL" #x09F0)
- ("BENGALI LETTER RA WITH LOWER DIAGONAL" #x09F1)
- ("BENGALI RUPEE MARK" #x09F2)
- ("BENGALI RUPEE SIGN" #x09F3)
- ("BENGALI CURRENCY NUMERATOR ONE" #x09F4)
- ("BENGALI CURRENCY NUMERATOR TWO" #x09F5)
- ("BENGALI CURRENCY NUMERATOR THREE" #x09F6)
- ("BENGALI CURRENCY NUMERATOR FOUR" #x09F7)
- ("BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR" #x09F8)
- ("BENGALI CURRENCY DENOMINATOR SIXTEEN" #x09F9)
- ("BENGALI ISSHAR" #x09FA)
- ))
-
diff --git a/etc/nxml/00A00-00A7F.el b/etc/nxml/00A00-00A7F.el
deleted file mode 100644
index be542ff3eb..0000000000
--- a/etc/nxml/00A00-00A7F.el
+++ /dev/null
@@ -1,78 +0,0 @@
-(nxml-define-char-name-set 'gurmukhi
- '(("GURMUKHI SIGN BINDI" #x0A02)
- ("GURMUKHI LETTER A" #x0A05)
- ("GURMUKHI LETTER AA" #x0A06)
- ("GURMUKHI LETTER I" #x0A07)
- ("GURMUKHI LETTER II" #x0A08)
- ("GURMUKHI LETTER U" #x0A09)
- ("GURMUKHI LETTER UU" #x0A0A)
- ("GURMUKHI LETTER EE" #x0A0F)
- ("GURMUKHI LETTER AI" #x0A10)
- ("GURMUKHI LETTER OO" #x0A13)
- ("GURMUKHI LETTER AU" #x0A14)
- ("GURMUKHI LETTER KA" #x0A15)
- ("GURMUKHI LETTER KHA" #x0A16)
- ("GURMUKHI LETTER GA" #x0A17)
- ("GURMUKHI LETTER GHA" #x0A18)
- ("GURMUKHI LETTER NGA" #x0A19)
- ("GURMUKHI LETTER CA" #x0A1A)
- ("GURMUKHI LETTER CHA" #x0A1B)
- ("GURMUKHI LETTER JA" #x0A1C)
- ("GURMUKHI LETTER JHA" #x0A1D)
- ("GURMUKHI LETTER NYA" #x0A1E)
- ("GURMUKHI LETTER TTA" #x0A1F)
- ("GURMUKHI LETTER TTHA" #x0A20)
- ("GURMUKHI LETTER DDA" #x0A21)
- ("GURMUKHI LETTER DDHA" #x0A22)
- ("GURMUKHI LETTER NNA" #x0A23)
- ("GURMUKHI LETTER TA" #x0A24)
- ("GURMUKHI LETTER THA" #x0A25)
- ("GURMUKHI LETTER DA" #x0A26)
- ("GURMUKHI LETTER DHA" #x0A27)
- ("GURMUKHI LETTER NA" #x0A28)
- ("GURMUKHI LETTER PA" #x0A2A)
- ("GURMUKHI LETTER PHA" #x0A2B)
- ("GURMUKHI LETTER BA" #x0A2C)
- ("GURMUKHI LETTER BHA" #x0A2D)
- ("GURMUKHI LETTER MA" #x0A2E)
- ("GURMUKHI LETTER YA" #x0A2F)
- ("GURMUKHI LETTER RA" #x0A30)
- ("GURMUKHI LETTER LA" #x0A32)
- ("GURMUKHI LETTER LLA" #x0A33)
- ("GURMUKHI LETTER VA" #x0A35)
- ("GURMUKHI LETTER SHA" #x0A36)
- ("GURMUKHI LETTER SA" #x0A38)
- ("GURMUKHI LETTER HA" #x0A39)
- ("GURMUKHI SIGN NUKTA" #x0A3C)
- ("GURMUKHI VOWEL SIGN AA" #x0A3E)
- ("GURMUKHI VOWEL SIGN I" #x0A3F)
- ("GURMUKHI VOWEL SIGN II" #x0A40)
- ("GURMUKHI VOWEL SIGN U" #x0A41)
- ("GURMUKHI VOWEL SIGN UU" #x0A42)
- ("GURMUKHI VOWEL SIGN EE" #x0A47)
- ("GURMUKHI VOWEL SIGN AI" #x0A48)
- ("GURMUKHI VOWEL SIGN OO" #x0A4B)
- ("GURMUKHI VOWEL SIGN AU" #x0A4C)
- ("GURMUKHI SIGN VIRAMA" #x0A4D)
- ("GURMUKHI LETTER KHHA" #x0A59)
- ("GURMUKHI LETTER GHHA" #x0A5A)
- ("GURMUKHI LETTER ZA" #x0A5B)
- ("GURMUKHI LETTER RRA" #x0A5C)
- ("GURMUKHI LETTER FA" #x0A5E)
- ("GURMUKHI DIGIT ZERO" #x0A66)
- ("GURMUKHI DIGIT ONE" #x0A67)
- ("GURMUKHI DIGIT TWO" #x0A68)
- ("GURMUKHI DIGIT THREE" #x0A69)
- ("GURMUKHI DIGIT FOUR" #x0A6A)
- ("GURMUKHI DIGIT FIVE" #x0A6B)
- ("GURMUKHI DIGIT SIX" #x0A6C)
- ("GURMUKHI DIGIT SEVEN" #x0A6D)
- ("GURMUKHI DIGIT EIGHT" #x0A6E)
- ("GURMUKHI DIGIT NINE" #x0A6F)
- ("GURMUKHI TIPPI" #x0A70)
- ("GURMUKHI ADDAK" #x0A71)
- ("GURMUKHI IRI" #x0A72)
- ("GURMUKHI URA" #x0A73)
- ("GURMUKHI EK ONKAR" #x0A74)
- ))
-
diff --git a/etc/nxml/00A80-00AFF.el b/etc/nxml/00A80-00AFF.el
deleted file mode 100644
index 029c3519f6..0000000000
--- a/etc/nxml/00A80-00AFF.el
+++ /dev/null
@@ -1,81 +0,0 @@
-(nxml-define-char-name-set 'gujarati
- '(("GUJARATI SIGN CANDRABINDU" #x0A81)
- ("GUJARATI SIGN ANUSVARA" #x0A82)
- ("GUJARATI SIGN VISARGA" #x0A83)
- ("GUJARATI LETTER A" #x0A85)
- ("GUJARATI LETTER AA" #x0A86)
- ("GUJARATI LETTER I" #x0A87)
- ("GUJARATI LETTER II" #x0A88)
- ("GUJARATI LETTER U" #x0A89)
- ("GUJARATI LETTER UU" #x0A8A)
- ("GUJARATI LETTER VOCALIC R" #x0A8B)
- ("GUJARATI VOWEL CANDRA E" #x0A8D)
- ("GUJARATI LETTER E" #x0A8F)
- ("GUJARATI LETTER AI" #x0A90)
- ("GUJARATI VOWEL CANDRA O" #x0A91)
- ("GUJARATI LETTER O" #x0A93)
- ("GUJARATI LETTER AU" #x0A94)
- ("GUJARATI LETTER KA" #x0A95)
- ("GUJARATI LETTER KHA" #x0A96)
- ("GUJARATI LETTER GA" #x0A97)
- ("GUJARATI LETTER GHA" #x0A98)
- ("GUJARATI LETTER NGA" #x0A99)
- ("GUJARATI LETTER CA" #x0A9A)
- ("GUJARATI LETTER CHA" #x0A9B)
- ("GUJARATI LETTER JA" #x0A9C)
- ("GUJARATI LETTER JHA" #x0A9D)
- ("GUJARATI LETTER NYA" #x0A9E)
- ("GUJARATI LETTER TTA" #x0A9F)
- ("GUJARATI LETTER TTHA" #x0AA0)
- ("GUJARATI LETTER DDA" #x0AA1)
- ("GUJARATI LETTER DDHA" #x0AA2)
- ("GUJARATI LETTER NNA" #x0AA3)
- ("GUJARATI LETTER TA" #x0AA4)
- ("GUJARATI LETTER THA" #x0AA5)
- ("GUJARATI LETTER DA" #x0AA6)
- ("GUJARATI LETTER DHA" #x0AA7)
- ("GUJARATI LETTER NA" #x0AA8)
- ("GUJARATI LETTER PA" #x0AAA)
- ("GUJARATI LETTER PHA" #x0AAB)
- ("GUJARATI LETTER BA" #x0AAC)
- ("GUJARATI LETTER BHA" #x0AAD)
- ("GUJARATI LETTER MA" #x0AAE)
- ("GUJARATI LETTER YA" #x0AAF)
- ("GUJARATI LETTER RA" #x0AB0)
- ("GUJARATI LETTER LA" #x0AB2)
- ("GUJARATI LETTER LLA" #x0AB3)
- ("GUJARATI LETTER VA" #x0AB5)
- ("GUJARATI LETTER SHA" #x0AB6)
- ("GUJARATI LETTER SSA" #x0AB7)
- ("GUJARATI LETTER SA" #x0AB8)
- ("GUJARATI LETTER HA" #x0AB9)
- ("GUJARATI SIGN NUKTA" #x0ABC)
- ("GUJARATI SIGN AVAGRAHA" #x0ABD)
- ("GUJARATI VOWEL SIGN AA" #x0ABE)
- ("GUJARATI VOWEL SIGN I" #x0ABF)
- ("GUJARATI VOWEL SIGN II" #x0AC0)
- ("GUJARATI VOWEL SIGN U" #x0AC1)
- ("GUJARATI VOWEL SIGN UU" #x0AC2)
- ("GUJARATI VOWEL SIGN VOCALIC R" #x0AC3)
- ("GUJARATI VOWEL SIGN VOCALIC RR" #x0AC4)
- ("GUJARATI VOWEL SIGN CANDRA E" #x0AC5)
- ("GUJARATI VOWEL SIGN E" #x0AC7)
- ("GUJARATI VOWEL SIGN AI" #x0AC8)
- ("GUJARATI VOWEL SIGN CANDRA O" #x0AC9)
- ("GUJARATI VOWEL SIGN O" #x0ACB)
- ("GUJARATI VOWEL SIGN AU" #x0ACC)
- ("GUJARATI SIGN VIRAMA" #x0ACD)
- ("GUJARATI OM" #x0AD0)
- ("GUJARATI LETTER VOCALIC RR" #x0AE0)
- ("GUJARATI DIGIT ZERO" #x0AE6)
- ("GUJARATI DIGIT ONE" #x0AE7)
- ("GUJARATI DIGIT TWO" #x0AE8)
- ("GUJARATI DIGIT THREE" #x0AE9)
- ("GUJARATI DIGIT FOUR" #x0AEA)
- ("GUJARATI DIGIT FIVE" #x0AEB)
- ("GUJARATI DIGIT SIX" #x0AEC)
- ("GUJARATI DIGIT SEVEN" #x0AED)
- ("GUJARATI DIGIT EIGHT" #x0AEE)
- ("GUJARATI DIGIT NINE" #x0AEF)
- ))
-
diff --git a/etc/nxml/00B00-00B7F.el b/etc/nxml/00B00-00B7F.el
deleted file mode 100644
index 5f32f4fb2c..0000000000
--- a/etc/nxml/00B00-00B7F.el
+++ /dev/null
@@ -1,82 +0,0 @@
-(nxml-define-char-name-set 'oriya
- '(("ORIYA SIGN CANDRABINDU" #x0B01)
- ("ORIYA SIGN ANUSVARA" #x0B02)
- ("ORIYA SIGN VISARGA" #x0B03)
- ("ORIYA LETTER A" #x0B05)
- ("ORIYA LETTER AA" #x0B06)
- ("ORIYA LETTER I" #x0B07)
- ("ORIYA LETTER II" #x0B08)
- ("ORIYA LETTER U" #x0B09)
- ("ORIYA LETTER UU" #x0B0A)
- ("ORIYA LETTER VOCALIC R" #x0B0B)
- ("ORIYA LETTER VOCALIC L" #x0B0C)
- ("ORIYA LETTER E" #x0B0F)
- ("ORIYA LETTER AI" #x0B10)
- ("ORIYA LETTER O" #x0B13)
- ("ORIYA LETTER AU" #x0B14)
- ("ORIYA LETTER KA" #x0B15)
- ("ORIYA LETTER KHA" #x0B16)
- ("ORIYA LETTER GA" #x0B17)
- ("ORIYA LETTER GHA" #x0B18)
- ("ORIYA LETTER NGA" #x0B19)
- ("ORIYA LETTER CA" #x0B1A)
- ("ORIYA LETTER CHA" #x0B1B)
- ("ORIYA LETTER JA" #x0B1C)
- ("ORIYA LETTER JHA" #x0B1D)
- ("ORIYA LETTER NYA" #x0B1E)
- ("ORIYA LETTER TTA" #x0B1F)
- ("ORIYA LETTER TTHA" #x0B20)
- ("ORIYA LETTER DDA" #x0B21)
- ("ORIYA LETTER DDHA" #x0B22)
- ("ORIYA LETTER NNA" #x0B23)
- ("ORIYA LETTER TA" #x0B24)
- ("ORIYA LETTER THA" #x0B25)
- ("ORIYA LETTER DA" #x0B26)
- ("ORIYA LETTER DHA" #x0B27)
- ("ORIYA LETTER NA" #x0B28)
- ("ORIYA LETTER PA" #x0B2A)
- ("ORIYA LETTER PHA" #x0B2B)
- ("ORIYA LETTER BA" #x0B2C)
- ("ORIYA LETTER BHA" #x0B2D)
- ("ORIYA LETTER MA" #x0B2E)
- ("ORIYA LETTER YA" #x0B2F)
- ("ORIYA LETTER RA" #x0B30)
- ("ORIYA LETTER LA" #x0B32)
- ("ORIYA LETTER LLA" #x0B33)
- ("ORIYA LETTER SHA" #x0B36)
- ("ORIYA LETTER SSA" #x0B37)
- ("ORIYA LETTER SA" #x0B38)
- ("ORIYA LETTER HA" #x0B39)
- ("ORIYA SIGN NUKTA" #x0B3C)
- ("ORIYA SIGN AVAGRAHA" #x0B3D)
- ("ORIYA VOWEL SIGN AA" #x0B3E)
- ("ORIYA VOWEL SIGN I" #x0B3F)
- ("ORIYA VOWEL SIGN II" #x0B40)
- ("ORIYA VOWEL SIGN U" #x0B41)
- ("ORIYA VOWEL SIGN UU" #x0B42)
- ("ORIYA VOWEL SIGN VOCALIC R" #x0B43)
- ("ORIYA VOWEL SIGN E" #x0B47)
- ("ORIYA VOWEL SIGN AI" #x0B48)
- ("ORIYA VOWEL SIGN O" #x0B4B)
- ("ORIYA VOWEL SIGN AU" #x0B4C)
- ("ORIYA SIGN VIRAMA" #x0B4D)
- ("ORIYA AI LENGTH MARK" #x0B56)
- ("ORIYA AU LENGTH MARK" #x0B57)
- ("ORIYA LETTER RRA" #x0B5C)
- ("ORIYA LETTER RHA" #x0B5D)
- ("ORIYA LETTER YYA" #x0B5F)
- ("ORIYA LETTER VOCALIC RR" #x0B60)
- ("ORIYA LETTER VOCALIC LL" #x0B61)
- ("ORIYA DIGIT ZERO" #x0B66)
- ("ORIYA DIGIT ONE" #x0B67)
- ("ORIYA DIGIT TWO" #x0B68)
- ("ORIYA DIGIT THREE" #x0B69)
- ("ORIYA DIGIT FOUR" #x0B6A)
- ("ORIYA DIGIT FIVE" #x0B6B)
- ("ORIYA DIGIT SIX" #x0B6C)
- ("ORIYA DIGIT SEVEN" #x0B6D)
- ("ORIYA DIGIT EIGHT" #x0B6E)
- ("ORIYA DIGIT NINE" #x0B6F)
- ("ORIYA ISSHAR" #x0B70)
- ))
-
diff --git a/etc/nxml/00B80-00BFF.el b/etc/nxml/00B80-00BFF.el
deleted file mode 100644
index 5258288dbe..0000000000
--- a/etc/nxml/00B80-00BFF.el
+++ /dev/null
@@ -1,64 +0,0 @@
-(nxml-define-char-name-set 'tamil
- '(("TAMIL SIGN ANUSVARA" #x0B82)
- ("TAMIL SIGN VISARGA" #x0B83)
- ("TAMIL LETTER A" #x0B85)
- ("TAMIL LETTER AA" #x0B86)
- ("TAMIL LETTER I" #x0B87)
- ("TAMIL LETTER II" #x0B88)
- ("TAMIL LETTER U" #x0B89)
- ("TAMIL LETTER UU" #x0B8A)
- ("TAMIL LETTER E" #x0B8E)
- ("TAMIL LETTER EE" #x0B8F)
- ("TAMIL LETTER AI" #x0B90)
- ("TAMIL LETTER O" #x0B92)
- ("TAMIL LETTER OO" #x0B93)
- ("TAMIL LETTER AU" #x0B94)
- ("TAMIL LETTER KA" #x0B95)
- ("TAMIL LETTER NGA" #x0B99)
- ("TAMIL LETTER CA" #x0B9A)
- ("TAMIL LETTER JA" #x0B9C)
- ("TAMIL LETTER NYA" #x0B9E)
- ("TAMIL LETTER TTA" #x0B9F)
- ("TAMIL LETTER NNA" #x0BA3)
- ("TAMIL LETTER TA" #x0BA4)
- ("TAMIL LETTER NA" #x0BA8)
- ("TAMIL LETTER NNNA" #x0BA9)
- ("TAMIL LETTER PA" #x0BAA)
- ("TAMIL LETTER MA" #x0BAE)
- ("TAMIL LETTER YA" #x0BAF)
- ("TAMIL LETTER RA" #x0BB0)
- ("TAMIL LETTER RRA" #x0BB1)
- ("TAMIL LETTER LA" #x0BB2)
- ("TAMIL LETTER LLA" #x0BB3)
- ("TAMIL LETTER LLLA" #x0BB4)
- ("TAMIL LETTER VA" #x0BB5)
- ("TAMIL LETTER SSA" #x0BB7)
- ("TAMIL LETTER SA" #x0BB8)
- ("TAMIL LETTER HA" #x0BB9)
- ("TAMIL VOWEL SIGN AA" #x0BBE)
- ("TAMIL VOWEL SIGN I" #x0BBF)
- ("TAMIL VOWEL SIGN II" #x0BC0)
- ("TAMIL VOWEL SIGN U" #x0BC1)
- ("TAMIL VOWEL SIGN UU" #x0BC2)
- ("TAMIL VOWEL SIGN E" #x0BC6)
- ("TAMIL VOWEL SIGN EE" #x0BC7)
- ("TAMIL VOWEL SIGN AI" #x0BC8)
- ("TAMIL VOWEL SIGN O" #x0BCA)
- ("TAMIL VOWEL SIGN OO" #x0BCB)
- ("TAMIL VOWEL SIGN AU" #x0BCC)
- ("TAMIL SIGN VIRAMA" #x0BCD)
- ("TAMIL AU LENGTH MARK" #x0BD7)
- ("TAMIL DIGIT ONE" #x0BE7)
- ("TAMIL DIGIT TWO" #x0BE8)
- ("TAMIL DIGIT THREE" #x0BE9)
- ("TAMIL DIGIT FOUR" #x0BEA)
- ("TAMIL DIGIT FIVE" #x0BEB)
- ("TAMIL DIGIT SIX" #x0BEC)
- ("TAMIL DIGIT SEVEN" #x0BED)
- ("TAMIL DIGIT EIGHT" #x0BEE)
- ("TAMIL DIGIT NINE" #x0BEF)
- ("TAMIL NUMBER TEN" #x0BF0)
- ("TAMIL NUMBER ONE HUNDRED" #x0BF1)
- ("TAMIL NUMBER ONE THOUSAND" #x0BF2)
- ))
-
diff --git a/etc/nxml/00C00-00C7F.el b/etc/nxml/00C00-00C7F.el
deleted file mode 100644
index f33086da5d..0000000000
--- a/etc/nxml/00C00-00C7F.el
+++ /dev/null
@@ -1,83 +0,0 @@
-(nxml-define-char-name-set 'telugu
- '(("TELUGU SIGN CANDRABINDU" #x0C01)
- ("TELUGU SIGN ANUSVARA" #x0C02)
- ("TELUGU SIGN VISARGA" #x0C03)
- ("TELUGU LETTER A" #x0C05)
- ("TELUGU LETTER AA" #x0C06)
- ("TELUGU LETTER I" #x0C07)
- ("TELUGU LETTER II" #x0C08)
- ("TELUGU LETTER U" #x0C09)
- ("TELUGU LETTER UU" #x0C0A)
- ("TELUGU LETTER VOCALIC R" #x0C0B)
- ("TELUGU LETTER VOCALIC L" #x0C0C)
- ("TELUGU LETTER E" #x0C0E)
- ("TELUGU LETTER EE" #x0C0F)
- ("TELUGU LETTER AI" #x0C10)
- ("TELUGU LETTER O" #x0C12)
- ("TELUGU LETTER OO" #x0C13)
- ("TELUGU LETTER AU" #x0C14)
- ("TELUGU LETTER KA" #x0C15)
- ("TELUGU LETTER KHA" #x0C16)
- ("TELUGU LETTER GA" #x0C17)
- ("TELUGU LETTER GHA" #x0C18)
- ("TELUGU LETTER NGA" #x0C19)
- ("TELUGU LETTER CA" #x0C1A)
- ("TELUGU LETTER CHA" #x0C1B)
- ("TELUGU LETTER JA" #x0C1C)
- ("TELUGU LETTER JHA" #x0C1D)
- ("TELUGU LETTER NYA" #x0C1E)
- ("TELUGU LETTER TTA" #x0C1F)
- ("TELUGU LETTER TTHA" #x0C20)
- ("TELUGU LETTER DDA" #x0C21)
- ("TELUGU LETTER DDHA" #x0C22)
- ("TELUGU LETTER NNA" #x0C23)
- ("TELUGU LETTER TA" #x0C24)
- ("TELUGU LETTER THA" #x0C25)
- ("TELUGU LETTER DA" #x0C26)
- ("TELUGU LETTER DHA" #x0C27)
- ("TELUGU LETTER NA" #x0C28)
- ("TELUGU LETTER PA" #x0C2A)
- ("TELUGU LETTER PHA" #x0C2B)
- ("TELUGU LETTER BA" #x0C2C)
- ("TELUGU LETTER BHA" #x0C2D)
- ("TELUGU LETTER MA" #x0C2E)
- ("TELUGU LETTER YA" #x0C2F)
- ("TELUGU LETTER RA" #x0C30)
- ("TELUGU LETTER RRA" #x0C31)
- ("TELUGU LETTER LA" #x0C32)
- ("TELUGU LETTER LLA" #x0C33)
- ("TELUGU LETTER VA" #x0C35)
- ("TELUGU LETTER SHA" #x0C36)
- ("TELUGU LETTER SSA" #x0C37)
- ("TELUGU LETTER SA" #x0C38)
- ("TELUGU LETTER HA" #x0C39)
- ("TELUGU VOWEL SIGN AA" #x0C3E)
- ("TELUGU VOWEL SIGN I" #x0C3F)
- ("TELUGU VOWEL SIGN II" #x0C40)
- ("TELUGU VOWEL SIGN U" #x0C41)
- ("TELUGU VOWEL SIGN UU" #x0C42)
- ("TELUGU VOWEL SIGN VOCALIC R" #x0C43)
- ("TELUGU VOWEL SIGN VOCALIC RR" #x0C44)
- ("TELUGU VOWEL SIGN E" #x0C46)
- ("TELUGU VOWEL SIGN EE" #x0C47)
- ("TELUGU VOWEL SIGN AI" #x0C48)
- ("TELUGU VOWEL SIGN O" #x0C4A)
- ("TELUGU VOWEL SIGN OO" #x0C4B)
- ("TELUGU VOWEL SIGN AU" #x0C4C)
- ("TELUGU SIGN VIRAMA" #x0C4D)
- ("TELUGU LENGTH MARK" #x0C55)
- ("TELUGU AI LENGTH MARK" #x0C56)
- ("TELUGU LETTER VOCALIC RR" #x0C60)
- ("TELUGU LETTER VOCALIC LL" #x0C61)
- ("TELUGU DIGIT ZERO" #x0C66)
- ("TELUGU DIGIT ONE" #x0C67)
- ("TELUGU DIGIT TWO" #x0C68)
- ("TELUGU DIGIT THREE" #x0C69)
- ("TELUGU DIGIT FOUR" #x0C6A)
- ("TELUGU DIGIT FIVE" #x0C6B)
- ("TELUGU DIGIT SIX" #x0C6C)
- ("TELUGU DIGIT SEVEN" #x0C6D)
- ("TELUGU DIGIT EIGHT" #x0C6E)
- ("TELUGU DIGIT NINE" #x0C6F)
- ))
-
diff --git a/etc/nxml/00C80-00CFF.el b/etc/nxml/00C80-00CFF.el
deleted file mode 100644
index 459b253275..0000000000
--- a/etc/nxml/00C80-00CFF.el
+++ /dev/null
@@ -1,83 +0,0 @@
-(nxml-define-char-name-set 'kannada
- '(("KANNADA SIGN ANUSVARA" #x0C82)
- ("KANNADA SIGN VISARGA" #x0C83)
- ("KANNADA LETTER A" #x0C85)
- ("KANNADA LETTER AA" #x0C86)
- ("KANNADA LETTER I" #x0C87)
- ("KANNADA LETTER II" #x0C88)
- ("KANNADA LETTER U" #x0C89)
- ("KANNADA LETTER UU" #x0C8A)
- ("KANNADA LETTER VOCALIC R" #x0C8B)
- ("KANNADA LETTER VOCALIC L" #x0C8C)
- ("KANNADA LETTER E" #x0C8E)
- ("KANNADA LETTER EE" #x0C8F)
- ("KANNADA LETTER AI" #x0C90)
- ("KANNADA LETTER O" #x0C92)
- ("KANNADA LETTER OO" #x0C93)
- ("KANNADA LETTER AU" #x0C94)
- ("KANNADA LETTER KA" #x0C95)
- ("KANNADA LETTER KHA" #x0C96)
- ("KANNADA LETTER GA" #x0C97)
- ("KANNADA LETTER GHA" #x0C98)
- ("KANNADA LETTER NGA" #x0C99)
- ("KANNADA LETTER CA" #x0C9A)
- ("KANNADA LETTER CHA" #x0C9B)
- ("KANNADA LETTER JA" #x0C9C)
- ("KANNADA LETTER JHA" #x0C9D)
- ("KANNADA LETTER NYA" #x0C9E)
- ("KANNADA LETTER TTA" #x0C9F)
- ("KANNADA LETTER TTHA" #x0CA0)
- ("KANNADA LETTER DDA" #x0CA1)
- ("KANNADA LETTER DDHA" #x0CA2)
- ("KANNADA LETTER NNA" #x0CA3)
- ("KANNADA LETTER TA" #x0CA4)
- ("KANNADA LETTER THA" #x0CA5)
- ("KANNADA LETTER DA" #x0CA6)
- ("KANNADA LETTER DHA" #x0CA7)
- ("KANNADA LETTER NA" #x0CA8)
- ("KANNADA LETTER PA" #x0CAA)
- ("KANNADA LETTER PHA" #x0CAB)
- ("KANNADA LETTER BA" #x0CAC)
- ("KANNADA LETTER BHA" #x0CAD)
- ("KANNADA LETTER MA" #x0CAE)
- ("KANNADA LETTER YA" #x0CAF)
- ("KANNADA LETTER RA" #x0CB0)
- ("KANNADA LETTER RRA" #x0CB1)
- ("KANNADA LETTER LA" #x0CB2)
- ("KANNADA LETTER LLA" #x0CB3)
- ("KANNADA LETTER VA" #x0CB5)
- ("KANNADA LETTER SHA" #x0CB6)
- ("KANNADA LETTER SSA" #x0CB7)
- ("KANNADA LETTER SA" #x0CB8)
- ("KANNADA LETTER HA" #x0CB9)
- ("KANNADA VOWEL SIGN AA" #x0CBE)
- ("KANNADA VOWEL SIGN I" #x0CBF)
- ("KANNADA VOWEL SIGN II" #x0CC0)
- ("KANNADA VOWEL SIGN U" #x0CC1)
- ("KANNADA VOWEL SIGN UU" #x0CC2)
- ("KANNADA VOWEL SIGN VOCALIC R" #x0CC3)
- ("KANNADA VOWEL SIGN VOCALIC RR" #x0CC4)
- ("KANNADA VOWEL SIGN E" #x0CC6)
- ("KANNADA VOWEL SIGN EE" #x0CC7)
- ("KANNADA VOWEL SIGN AI" #x0CC8)
- ("KANNADA VOWEL SIGN O" #x0CCA)
- ("KANNADA VOWEL SIGN OO" #x0CCB)
- ("KANNADA VOWEL SIGN AU" #x0CCC)
- ("KANNADA SIGN VIRAMA" #x0CCD)
- ("KANNADA LENGTH MARK" #x0CD5)
- ("KANNADA AI LENGTH MARK" #x0CD6)
- ("KANNADA LETTER FA" #x0CDE)
- ("KANNADA LETTER VOCALIC RR" #x0CE0)
- ("KANNADA LETTER VOCALIC LL" #x0CE1)
- ("KANNADA DIGIT ZERO" #x0CE6)
- ("KANNADA DIGIT ONE" #x0CE7)
- ("KANNADA DIGIT TWO" #x0CE8)
- ("KANNADA DIGIT THREE" #x0CE9)
- ("KANNADA DIGIT FOUR" #x0CEA)
- ("KANNADA DIGIT FIVE" #x0CEB)
- ("KANNADA DIGIT SIX" #x0CEC)
- ("KANNADA DIGIT SEVEN" #x0CED)
- ("KANNADA DIGIT EIGHT" #x0CEE)
- ("KANNADA DIGIT NINE" #x0CEF)
- ))
-
diff --git a/etc/nxml/00D00-00D7F.el b/etc/nxml/00D00-00D7F.el
deleted file mode 100644
index 80001ac8f7..0000000000
--- a/etc/nxml/00D00-00D7F.el
+++ /dev/null
@@ -1,81 +0,0 @@
-(nxml-define-char-name-set 'malayalam
- '(("MALAYALAM SIGN ANUSVARA" #x0D02)
- ("MALAYALAM SIGN VISARGA" #x0D03)
- ("MALAYALAM LETTER A" #x0D05)
- ("MALAYALAM LETTER AA" #x0D06)
- ("MALAYALAM LETTER I" #x0D07)
- ("MALAYALAM LETTER II" #x0D08)
- ("MALAYALAM LETTER U" #x0D09)
- ("MALAYALAM LETTER UU" #x0D0A)
- ("MALAYALAM LETTER VOCALIC R" #x0D0B)
- ("MALAYALAM LETTER VOCALIC L" #x0D0C)
- ("MALAYALAM LETTER E" #x0D0E)
- ("MALAYALAM LETTER EE" #x0D0F)
- ("MALAYALAM LETTER AI" #x0D10)
- ("MALAYALAM LETTER O" #x0D12)
- ("MALAYALAM LETTER OO" #x0D13)
- ("MALAYALAM LETTER AU" #x0D14)
- ("MALAYALAM LETTER KA" #x0D15)
- ("MALAYALAM LETTER KHA" #x0D16)
- ("MALAYALAM LETTER GA" #x0D17)
- ("MALAYALAM LETTER GHA" #x0D18)
- ("MALAYALAM LETTER NGA" #x0D19)
- ("MALAYALAM LETTER CA" #x0D1A)
- ("MALAYALAM LETTER CHA" #x0D1B)
- ("MALAYALAM LETTER JA" #x0D1C)
- ("MALAYALAM LETTER JHA" #x0D1D)
- ("MALAYALAM LETTER NYA" #x0D1E)
- ("MALAYALAM LETTER TTA" #x0D1F)
- ("MALAYALAM LETTER TTHA" #x0D20)
- ("MALAYALAM LETTER DDA" #x0D21)
- ("MALAYALAM LETTER DDHA" #x0D22)
- ("MALAYALAM LETTER NNA" #x0D23)
- ("MALAYALAM LETTER TA" #x0D24)
- ("MALAYALAM LETTER THA" #x0D25)
- ("MALAYALAM LETTER DA" #x0D26)
- ("MALAYALAM LETTER DHA" #x0D27)
- ("MALAYALAM LETTER NA" #x0D28)
- ("MALAYALAM LETTER PA" #x0D2A)
- ("MALAYALAM LETTER PHA" #x0D2B)
- ("MALAYALAM LETTER BA" #x0D2C)
- ("MALAYALAM LETTER BHA" #x0D2D)
- ("MALAYALAM LETTER MA" #x0D2E)
- ("MALAYALAM LETTER YA" #x0D2F)
- ("MALAYALAM LETTER RA" #x0D30)
- ("MALAYALAM LETTER RRA" #x0D31)
- ("MALAYALAM LETTER LA" #x0D32)
- ("MALAYALAM LETTER LLA" #x0D33)
- ("MALAYALAM LETTER LLLA" #x0D34)
- ("MALAYALAM LETTER VA" #x0D35)
- ("MALAYALAM LETTER SHA" #x0D36)
- ("MALAYALAM LETTER SSA" #x0D37)
- ("MALAYALAM LETTER SA" #x0D38)
- ("MALAYALAM LETTER HA" #x0D39)
- ("MALAYALAM VOWEL SIGN AA" #x0D3E)
- ("MALAYALAM VOWEL SIGN I" #x0D3F)
- ("MALAYALAM VOWEL SIGN II" #x0D40)
- ("MALAYALAM VOWEL SIGN U" #x0D41)
- ("MALAYALAM VOWEL SIGN UU" #x0D42)
- ("MALAYALAM VOWEL SIGN VOCALIC R" #x0D43)
- ("MALAYALAM VOWEL SIGN E" #x0D46)
- ("MALAYALAM VOWEL SIGN EE" #x0D47)
- ("MALAYALAM VOWEL SIGN AI" #x0D48)
- ("MALAYALAM VOWEL SIGN O" #x0D4A)
- ("MALAYALAM VOWEL SIGN OO" #x0D4B)
- ("MALAYALAM VOWEL SIGN AU" #x0D4C)
- ("MALAYALAM SIGN VIRAMA" #x0D4D)
- ("MALAYALAM AU LENGTH MARK" #x0D57)
- ("MALAYALAM LETTER VOCALIC RR" #x0D60)
- ("MALAYALAM LETTER VOCALIC LL" #x0D61)
- ("MALAYALAM DIGIT ZERO" #x0D66)
- ("MALAYALAM DIGIT ONE" #x0D67)
- ("MALAYALAM DIGIT TWO" #x0D68)
- ("MALAYALAM DIGIT THREE" #x0D69)
- ("MALAYALAM DIGIT FOUR" #x0D6A)
- ("MALAYALAM DIGIT FIVE" #x0D6B)
- ("MALAYALAM DIGIT SIX" #x0D6C)
- ("MALAYALAM DIGIT SEVEN" #x0D6D)
- ("MALAYALAM DIGIT EIGHT" #x0D6E)
- ("MALAYALAM DIGIT NINE" #x0D6F)
- ))
-
diff --git a/etc/nxml/00D80-00DFF.el b/etc/nxml/00D80-00DFF.el
deleted file mode 100644
index 98068983f2..0000000000
--- a/etc/nxml/00D80-00DFF.el
+++ /dev/null
@@ -1,83 +0,0 @@
-(nxml-define-char-name-set 'sinhala
- '(("SINHALA SIGN ANUSVARAYA" #x0D82)
- ("SINHALA SIGN VISARGAYA" #x0D83)
- ("SINHALA LETTER AYANNA" #x0D85)
- ("SINHALA LETTER AAYANNA" #x0D86)
- ("SINHALA LETTER AEYANNA" #x0D87)
- ("SINHALA LETTER AEEYANNA" #x0D88)
- ("SINHALA LETTER IYANNA" #x0D89)
- ("SINHALA LETTER IIYANNA" #x0D8A)
- ("SINHALA LETTER UYANNA" #x0D8B)
- ("SINHALA LETTER UUYANNA" #x0D8C)
- ("SINHALA LETTER IRUYANNA" #x0D8D)
- ("SINHALA LETTER IRUUYANNA" #x0D8E)
- ("SINHALA LETTER ILUYANNA" #x0D8F)
- ("SINHALA LETTER ILUUYANNA" #x0D90)
- ("SINHALA LETTER EYANNA" #x0D91)
- ("SINHALA LETTER EEYANNA" #x0D92)
- ("SINHALA LETTER AIYANNA" #x0D93)
- ("SINHALA LETTER OYANNA" #x0D94)
- ("SINHALA LETTER OOYANNA" #x0D95)
- ("SINHALA LETTER AUYANNA" #x0D96)
- ("SINHALA LETTER ALPAPRAANA KAYANNA" #x0D9A)
- ("SINHALA LETTER MAHAAPRAANA KAYANNA" #x0D9B)
- ("SINHALA LETTER ALPAPRAANA GAYANNA" #x0D9C)
- ("SINHALA LETTER MAHAAPRAANA GAYANNA" #x0D9D)
- ("SINHALA LETTER KANTAJA NAASIKYAYA" #x0D9E)
- ("SINHALA LETTER SANYAKA GAYANNA" #x0D9F)
- ("SINHALA LETTER ALPAPRAANA CAYANNA" #x0DA0)
- ("SINHALA LETTER MAHAAPRAANA CAYANNA" #x0DA1)
- ("SINHALA LETTER ALPAPRAANA JAYANNA" #x0DA2)
- ("SINHALA LETTER MAHAAPRAANA JAYANNA" #x0DA3)
- ("SINHALA LETTER TAALUJA NAASIKYAYA" #x0DA4)
- ("SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA" #x0DA5)
- ("SINHALA LETTER SANYAKA JAYANNA" #x0DA6)
- ("SINHALA LETTER ALPAPRAANA TTAYANNA" #x0DA7)
- ("SINHALA LETTER MAHAAPRAANA TTAYANNA" #x0DA8)
- ("SINHALA LETTER ALPAPRAANA DDAYANNA" #x0DA9)
- ("SINHALA LETTER MAHAAPRAANA DDAYANNA" #x0DAA)
- ("SINHALA LETTER MUURDHAJA NAYANNA" #x0DAB)
- ("SINHALA LETTER SANYAKA DDAYANNA" #x0DAC)
- ("SINHALA LETTER ALPAPRAANA TAYANNA" #x0DAD)
- ("SINHALA LETTER MAHAAPRAANA TAYANNA" #x0DAE)
- ("SINHALA LETTER ALPAPRAANA DAYANNA" #x0DAF)
- ("SINHALA LETTER MAHAAPRAANA DAYANNA" #x0DB0)
- ("SINHALA LETTER DANTAJA NAYANNA" #x0DB1)
- ("SINHALA LETTER SANYAKA DAYANNA" #x0DB3)
- ("SINHALA LETTER ALPAPRAANA PAYANNA" #x0DB4)
- ("SINHALA LETTER MAHAAPRAANA PAYANNA" #x0DB5)
- ("SINHALA LETTER ALPAPRAANA BAYANNA" #x0DB6)
- ("SINHALA LETTER MAHAAPRAANA BAYANNA" #x0DB7)
- ("SINHALA LETTER MAYANNA" #x0DB8)
- ("SINHALA LETTER AMBA BAYANNA" #x0DB9)
- ("SINHALA LETTER YAYANNA" #x0DBA)
- ("SINHALA LETTER RAYANNA" #x0DBB)
- ("SINHALA LETTER DANTAJA LAYANNA" #x0DBD)
- ("SINHALA LETTER VAYANNA" #x0DC0)
- ("SINHALA LETTER TAALUJA SAYANNA" #x0DC1)
- ("SINHALA LETTER MUURDHAJA SAYANNA" #x0DC2)
- ("SINHALA LETTER DANTAJA SAYANNA" #x0DC3)
- ("SINHALA LETTER HAYANNA" #x0DC4)
- ("SINHALA LETTER MUURDHAJA LAYANNA" #x0DC5)
- ("SINHALA LETTER FAYANNA" #x0DC6)
- ("SINHALA SIGN AL-LAKUNA" #x0DCA)
- ("SINHALA VOWEL SIGN AELA-PILLA" #x0DCF)
- ("SINHALA VOWEL SIGN KETTI AEDA-PILLA" #x0DD0)
- ("SINHALA VOWEL SIGN DIGA AEDA-PILLA" #x0DD1)
- ("SINHALA VOWEL SIGN KETTI IS-PILLA" #x0DD2)
- ("SINHALA VOWEL SIGN DIGA IS-PILLA" #x0DD3)
- ("SINHALA VOWEL SIGN KETTI PAA-PILLA" #x0DD4)
- ("SINHALA VOWEL SIGN DIGA PAA-PILLA" #x0DD6)
- ("SINHALA VOWEL SIGN GAETTA-PILLA" #x0DD8)
- ("SINHALA VOWEL SIGN KOMBUVA" #x0DD9)
- ("SINHALA VOWEL SIGN DIGA KOMBUVA" #x0DDA)
- ("SINHALA VOWEL SIGN KOMBU DEKA" #x0DDB)
- ("SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA" #x0DDC)
- ("SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA" #x0DDD)
- ("SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA" #x0DDE)
- ("SINHALA VOWEL SIGN GAYANUKITTA" #x0DDF)
- ("SINHALA VOWEL SIGN DIGA GAETTA-PILLA" #x0DF2)
- ("SINHALA VOWEL SIGN DIGA GAYANUKITTA" #x0DF3)
- ("SINHALA PUNCTUATION KUNDDALIYA" #x0DF4)
- ))
-
diff --git a/etc/nxml/00E00-00E7F.el b/etc/nxml/00E00-00E7F.el
deleted file mode 100644
index 992ee9a46d..0000000000
--- a/etc/nxml/00E00-00E7F.el
+++ /dev/null
@@ -1,90 +0,0 @@
-(nxml-define-char-name-set 'thai
- '(("THAI CHARACTER KO KAI" #x0E01)
- ("THAI CHARACTER KHO KHAI" #x0E02)
- ("THAI CHARACTER KHO KHUAT" #x0E03)
- ("THAI CHARACTER KHO KHWAI" #x0E04)
- ("THAI CHARACTER KHO KHON" #x0E05)
- ("THAI CHARACTER KHO RAKHANG" #x0E06)
- ("THAI CHARACTER NGO NGU" #x0E07)
- ("THAI CHARACTER CHO CHAN" #x0E08)
- ("THAI CHARACTER CHO CHING" #x0E09)
- ("THAI CHARACTER CHO CHANG" #x0E0A)
- ("THAI CHARACTER SO SO" #x0E0B)
- ("THAI CHARACTER CHO CHOE" #x0E0C)
- ("THAI CHARACTER YO YING" #x0E0D)
- ("THAI CHARACTER DO CHADA" #x0E0E)
- ("THAI CHARACTER TO PATAK" #x0E0F)
- ("THAI CHARACTER THO THAN" #x0E10)
- ("THAI CHARACTER THO NANGMONTHO" #x0E11)
- ("THAI CHARACTER THO PHUTHAO" #x0E12)
- ("THAI CHARACTER NO NEN" #x0E13)
- ("THAI CHARACTER DO DEK" #x0E14)
- ("THAI CHARACTER TO TAO" #x0E15)
- ("THAI CHARACTER THO THUNG" #x0E16)
- ("THAI CHARACTER THO THAHAN" #x0E17)
- ("THAI CHARACTER THO THONG" #x0E18)
- ("THAI CHARACTER NO NU" #x0E19)
- ("THAI CHARACTER BO BAIMAI" #x0E1A)
- ("THAI CHARACTER PO PLA" #x0E1B)
- ("THAI CHARACTER PHO PHUNG" #x0E1C)
- ("THAI CHARACTER FO FA" #x0E1D)
- ("THAI CHARACTER PHO PHAN" #x0E1E)
- ("THAI CHARACTER FO FAN" #x0E1F)
- ("THAI CHARACTER PHO SAMPHAO" #x0E20)
- ("THAI CHARACTER MO MA" #x0E21)
- ("THAI CHARACTER YO YAK" #x0E22)
- ("THAI CHARACTER RO RUA" #x0E23)
- ("THAI CHARACTER RU" #x0E24)
- ("THAI CHARACTER LO LING" #x0E25)
- ("THAI CHARACTER LU" #x0E26)
- ("THAI CHARACTER WO WAEN" #x0E27)
- ("THAI CHARACTER SO SALA" #x0E28)
- ("THAI CHARACTER SO RUSI" #x0E29)
- ("THAI CHARACTER SO SUA" #x0E2A)
- ("THAI CHARACTER HO HIP" #x0E2B)
- ("THAI CHARACTER LO CHULA" #x0E2C)
- ("THAI CHARACTER O ANG" #x0E2D)
- ("THAI CHARACTER HO NOKHUK" #x0E2E)
- ("THAI CHARACTER PAIYANNOI" #x0E2F)
- ("THAI CHARACTER SARA A" #x0E30)
- ("THAI CHARACTER MAI HAN-AKAT" #x0E31)
- ("THAI CHARACTER SARA AA" #x0E32)
- ("THAI CHARACTER SARA AM" #x0E33)
- ("THAI CHARACTER SARA I" #x0E34)
- ("THAI CHARACTER SARA II" #x0E35)
- ("THAI CHARACTER SARA UE" #x0E36)
- ("THAI CHARACTER SARA UEE" #x0E37)
- ("THAI CHARACTER SARA U" #x0E38)
- ("THAI CHARACTER SARA UU" #x0E39)
- ("THAI CHARACTER PHINTHU" #x0E3A)
- ("THAI CURRENCY SYMBOL BAHT" #x0E3F)
- ("THAI CHARACTER SARA E" #x0E40)
- ("THAI CHARACTER SARA AE" #x0E41)
- ("THAI CHARACTER SARA O" #x0E42)
- ("THAI CHARACTER SARA AI MAIMUAN" #x0E43)
- ("THAI CHARACTER SARA AI MAIMALAI" #x0E44)
- ("THAI CHARACTER LAKKHANGYAO" #x0E45)
- ("THAI CHARACTER MAIYAMOK" #x0E46)
- ("THAI CHARACTER MAITAIKHU" #x0E47)
- ("THAI CHARACTER MAI EK" #x0E48)
- ("THAI CHARACTER MAI THO" #x0E49)
- ("THAI CHARACTER MAI TRI" #x0E4A)
- ("THAI CHARACTER MAI CHATTAWA" #x0E4B)
- ("THAI CHARACTER THANTHAKHAT" #x0E4C)
- ("THAI CHARACTER NIKHAHIT" #x0E4D)
- ("THAI CHARACTER YAMAKKAN" #x0E4E)
- ("THAI CHARACTER FONGMAN" #x0E4F)
- ("THAI DIGIT ZERO" #x0E50)
- ("THAI DIGIT ONE" #x0E51)
- ("THAI DIGIT TWO" #x0E52)
- ("THAI DIGIT THREE" #x0E53)
- ("THAI DIGIT FOUR" #x0E54)
- ("THAI DIGIT FIVE" #x0E55)
- ("THAI DIGIT SIX" #x0E56)
- ("THAI DIGIT SEVEN" #x0E57)
- ("THAI DIGIT EIGHT" #x0E58)
- ("THAI DIGIT NINE" #x0E59)
- ("THAI CHARACTER ANGKHANKHU" #x0E5A)
- ("THAI CHARACTER KHOMUT" #x0E5B)
- ))
-
diff --git a/etc/nxml/00E80-00EFF.el b/etc/nxml/00E80-00EFF.el
deleted file mode 100644
index 8ef8a304d1..0000000000
--- a/etc/nxml/00E80-00EFF.el
+++ /dev/null
@@ -1,68 +0,0 @@
-(nxml-define-char-name-set 'lao
- '(("LAO LETTER KO" #x0E81)
- ("LAO LETTER KHO SUNG" #x0E82)
- ("LAO LETTER KHO TAM" #x0E84)
- ("LAO LETTER NGO" #x0E87)
- ("LAO LETTER CO" #x0E88)
- ("LAO LETTER SO TAM" #x0E8A)
- ("LAO LETTER NYO" #x0E8D)
- ("LAO LETTER DO" #x0E94)
- ("LAO LETTER TO" #x0E95)
- ("LAO LETTER THO SUNG" #x0E96)
- ("LAO LETTER THO TAM" #x0E97)
- ("LAO LETTER NO" #x0E99)
- ("LAO LETTER BO" #x0E9A)
- ("LAO LETTER PO" #x0E9B)
- ("LAO LETTER PHO SUNG" #x0E9C)
- ("LAO LETTER FO TAM" #x0E9D)
- ("LAO LETTER PHO TAM" #x0E9E)
- ("LAO LETTER FO SUNG" #x0E9F)
- ("LAO LETTER MO" #x0EA1)
- ("LAO LETTER YO" #x0EA2)
- ("LAO LETTER LO LING" #x0EA3)
- ("LAO LETTER LO LOOT" #x0EA5)
- ("LAO LETTER WO" #x0EA7)
- ("LAO LETTER SO SUNG" #x0EAA)
- ("LAO LETTER HO SUNG" #x0EAB)
- ("LAO LETTER O" #x0EAD)
- ("LAO LETTER HO TAM" #x0EAE)
- ("LAO ELLIPSIS" #x0EAF)
- ("LAO VOWEL SIGN A" #x0EB0)
- ("LAO VOWEL SIGN MAI KAN" #x0EB1)
- ("LAO VOWEL SIGN AA" #x0EB2)
- ("LAO VOWEL SIGN AM" #x0EB3)
- ("LAO VOWEL SIGN I" #x0EB4)
- ("LAO VOWEL SIGN II" #x0EB5)
- ("LAO VOWEL SIGN Y" #x0EB6)
- ("LAO VOWEL SIGN YY" #x0EB7)
- ("LAO VOWEL SIGN U" #x0EB8)
- ("LAO VOWEL SIGN UU" #x0EB9)
- ("LAO VOWEL SIGN MAI KON" #x0EBB)
- ("LAO SEMIVOWEL SIGN LO" #x0EBC)
- ("LAO SEMIVOWEL SIGN NYO" #x0EBD)
- ("LAO VOWEL SIGN E" #x0EC0)
- ("LAO VOWEL SIGN EI" #x0EC1)
- ("LAO VOWEL SIGN O" #x0EC2)
- ("LAO VOWEL SIGN AY" #x0EC3)
- ("LAO VOWEL SIGN AI" #x0EC4)
- ("LAO KO LA" #x0EC6)
- ("LAO TONE MAI EK" #x0EC8)
- ("LAO TONE MAI THO" #x0EC9)
- ("LAO TONE MAI TI" #x0ECA)
- ("LAO TONE MAI CATAWA" #x0ECB)
- ("LAO CANCELLATION MARK" #x0ECC)
- ("LAO NIGGAHITA" #x0ECD)
- ("LAO DIGIT ZERO" #x0ED0)
- ("LAO DIGIT ONE" #x0ED1)
- ("LAO DIGIT TWO" #x0ED2)
- ("LAO DIGIT THREE" #x0ED3)
- ("LAO DIGIT FOUR" #x0ED4)
- ("LAO DIGIT FIVE" #x0ED5)
- ("LAO DIGIT SIX" #x0ED6)
- ("LAO DIGIT SEVEN" #x0ED7)
- ("LAO DIGIT EIGHT" #x0ED8)
- ("LAO DIGIT NINE" #x0ED9)
- ("LAO HO NO" #x0EDC)
- ("LAO HO MO" #x0EDD)
- ))
-
diff --git a/etc/nxml/00F00-00FFF.el b/etc/nxml/00F00-00FFF.el
deleted file mode 100644
index adc8fecfa9..0000000000
--- a/etc/nxml/00F00-00FFF.el
+++ /dev/null
@@ -1,196 +0,0 @@
-(nxml-define-char-name-set 'tibetan
- '(("TIBETAN SYLLABLE OM" #x0F00)
- ("TIBETAN MARK GTER YIG MGO TRUNCATED A" #x0F01)
- ("TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA" #x0F02)
- ("TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA" #x0F03)
- ("TIBETAN MARK INITIAL YIG MGO MDUN MA" #x0F04)
- ("TIBETAN MARK CLOSING YIG MGO SGAB MA" #x0F05)
- ("TIBETAN MARK CARET YIG MGO PHUR SHAD MA" #x0F06)
- ("TIBETAN MARK YIG MGO TSHEG SHAD MA" #x0F07)
- ("TIBETAN MARK SBRUL SHAD" #x0F08)
- ("TIBETAN MARK BSKUR YIG MGO" #x0F09)
- ("TIBETAN MARK BKA- SHOG YIG MGO" #x0F0A)
- ("TIBETAN MARK INTERSYLLABIC TSHEG" #x0F0B)
- ("TIBETAN MARK DELIMITER TSHEG BSTAR" #x0F0C)
- ("TIBETAN MARK SHAD" #x0F0D)
- ("TIBETAN MARK NYIS SHAD" #x0F0E)
- ("TIBETAN MARK TSHEG SHAD" #x0F0F)
- ("TIBETAN MARK NYIS TSHEG SHAD" #x0F10)
- ("TIBETAN MARK RIN CHEN SPUNGS SHAD" #x0F11)
- ("TIBETAN MARK RGYA GRAM SHAD" #x0F12)
- ("TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN" #x0F13)
- ("TIBETAN MARK GTER TSHEG" #x0F14)
- ("TIBETAN LOGOTYPE SIGN CHAD RTAGS" #x0F15)
- ("TIBETAN LOGOTYPE SIGN LHAG RTAGS" #x0F16)
- ("TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS" #x0F17)
- ("TIBETAN ASTROLOGICAL SIGN -KHYUD PA" #x0F18)
- ("TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS" #x0F19)
- ("TIBETAN SIGN RDEL DKAR GCIG" #x0F1A)
- ("TIBETAN SIGN RDEL DKAR GNYIS" #x0F1B)
- ("TIBETAN SIGN RDEL DKAR GSUM" #x0F1C)
- ("TIBETAN SIGN RDEL NAG GCIG" #x0F1D)
- ("TIBETAN SIGN RDEL NAG GNYIS" #x0F1E)
- ("TIBETAN SIGN RDEL DKAR RDEL NAG" #x0F1F)
- ("TIBETAN DIGIT ZERO" #x0F20)
- ("TIBETAN DIGIT ONE" #x0F21)
- ("TIBETAN DIGIT TWO" #x0F22)
- ("TIBETAN DIGIT THREE" #x0F23)
- ("TIBETAN DIGIT FOUR" #x0F24)
- ("TIBETAN DIGIT FIVE" #x0F25)
- ("TIBETAN DIGIT SIX" #x0F26)
- ("TIBETAN DIGIT SEVEN" #x0F27)
- ("TIBETAN DIGIT EIGHT" #x0F28)
- ("TIBETAN DIGIT NINE" #x0F29)
- ("TIBETAN DIGIT HALF ONE" #x0F2A)
- ("TIBETAN DIGIT HALF TWO" #x0F2B)
- ("TIBETAN DIGIT HALF THREE" #x0F2C)
- ("TIBETAN DIGIT HALF FOUR" #x0F2D)
- ("TIBETAN DIGIT HALF FIVE" #x0F2E)
- ("TIBETAN DIGIT HALF SIX" #x0F2F)
- ("TIBETAN DIGIT HALF SEVEN" #x0F30)
- ("TIBETAN DIGIT HALF EIGHT" #x0F31)
- ("TIBETAN DIGIT HALF NINE" #x0F32)
- ("TIBETAN DIGIT HALF ZERO" #x0F33)
- ("TIBETAN MARK BSDUS RTAGS" #x0F34)
- ("TIBETAN MARK NGAS BZUNG NYI ZLA" #x0F35)
- ("TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN" #x0F36)
- ("TIBETAN MARK NGAS BZUNG SGOR RTAGS" #x0F37)
- ("TIBETAN MARK CHE MGO" #x0F38)
- ("TIBETAN MARK TSA -PHRU" #x0F39)
- ("TIBETAN MARK GUG RTAGS GYON" #x0F3A)
- ("TIBETAN MARK GUG RTAGS GYAS" #x0F3B)
- ("TIBETAN MARK ANG KHANG GYON" #x0F3C)
- ("TIBETAN MARK ANG KHANG GYAS" #x0F3D)
- ("TIBETAN SIGN YAR TSHES" #x0F3E)
- ("TIBETAN SIGN MAR TSHES" #x0F3F)
- ("TIBETAN LETTER KA" #x0F40)
- ("TIBETAN LETTER KHA" #x0F41)
- ("TIBETAN LETTER GA" #x0F42)
- ("TIBETAN LETTER GHA" #x0F43)
- ("TIBETAN LETTER NGA" #x0F44)
- ("TIBETAN LETTER CA" #x0F45)
- ("TIBETAN LETTER CHA" #x0F46)
- ("TIBETAN LETTER JA" #x0F47)
- ("TIBETAN LETTER NYA" #x0F49)
- ("TIBETAN LETTER TTA" #x0F4A)
- ("TIBETAN LETTER TTHA" #x0F4B)
- ("TIBETAN LETTER DDA" #x0F4C)
- ("TIBETAN LETTER DDHA" #x0F4D)
- ("TIBETAN LETTER NNA" #x0F4E)
- ("TIBETAN LETTER TA" #x0F4F)
- ("TIBETAN LETTER THA" #x0F50)
- ("TIBETAN LETTER DA" #x0F51)
- ("TIBETAN LETTER DHA" #x0F52)
- ("TIBETAN LETTER NA" #x0F53)
- ("TIBETAN LETTER PA" #x0F54)
- ("TIBETAN LETTER PHA" #x0F55)
- ("TIBETAN LETTER BA" #x0F56)
- ("TIBETAN LETTER BHA" #x0F57)
- ("TIBETAN LETTER MA" #x0F58)
- ("TIBETAN LETTER TSA" #x0F59)
- ("TIBETAN LETTER TSHA" #x0F5A)
- ("TIBETAN LETTER DZA" #x0F5B)
- ("TIBETAN LETTER DZHA" #x0F5C)
- ("TIBETAN LETTER WA" #x0F5D)
- ("TIBETAN LETTER ZHA" #x0F5E)
- ("TIBETAN LETTER ZA" #x0F5F)
- ("TIBETAN LETTER -A" #x0F60)
- ("TIBETAN LETTER YA" #x0F61)
- ("TIBETAN LETTER RA" #x0F62)
- ("TIBETAN LETTER LA" #x0F63)
- ("TIBETAN LETTER SHA" #x0F64)
- ("TIBETAN LETTER SSA" #x0F65)
- ("TIBETAN LETTER SA" #x0F66)
- ("TIBETAN LETTER HA" #x0F67)
- ("TIBETAN LETTER A" #x0F68)
- ("TIBETAN LETTER KSSA" #x0F69)
- ("TIBETAN LETTER FIXED-FORM RA" #x0F6A)
- ("TIBETAN VOWEL SIGN AA" #x0F71)
- ("TIBETAN VOWEL SIGN I" #x0F72)
- ("TIBETAN VOWEL SIGN II" #x0F73)
- ("TIBETAN VOWEL SIGN U" #x0F74)
- ("TIBETAN VOWEL SIGN UU" #x0F75)
- ("TIBETAN VOWEL SIGN VOCALIC R" #x0F76)
- ("TIBETAN VOWEL SIGN VOCALIC RR" #x0F77)
- ("TIBETAN VOWEL SIGN VOCALIC L" #x0F78)
- ("TIBETAN VOWEL SIGN VOCALIC LL" #x0F79)
- ("TIBETAN VOWEL SIGN E" #x0F7A)
- ("TIBETAN VOWEL SIGN EE" #x0F7B)
- ("TIBETAN VOWEL SIGN O" #x0F7C)
- ("TIBETAN VOWEL SIGN OO" #x0F7D)
- ("TIBETAN SIGN RJES SU NGA RO" #x0F7E)
- ("TIBETAN SIGN RNAM BCAD" #x0F7F)
- ("TIBETAN VOWEL SIGN REVERSED I" #x0F80)
- ("TIBETAN VOWEL SIGN REVERSED II" #x0F81)
- ("TIBETAN SIGN NYI ZLA NAA DA" #x0F82)
- ("TIBETAN SIGN SNA LDAN" #x0F83)
- ("TIBETAN MARK HALANTA" #x0F84)
- ("TIBETAN MARK PALUTA" #x0F85)
- ("TIBETAN SIGN LCI RTAGS" #x0F86)
- ("TIBETAN SIGN YANG RTAGS" #x0F87)
- ("TIBETAN SIGN LCE TSA CAN" #x0F88)
- ("TIBETAN SIGN MCHU CAN" #x0F89)
- ("TIBETAN SIGN GRU CAN RGYINGS" #x0F8A)
- ("TIBETAN SIGN GRU MED RGYINGS" #x0F8B)
- ("TIBETAN SUBJOINED LETTER KA" #x0F90)
- ("TIBETAN SUBJOINED LETTER KHA" #x0F91)
- ("TIBETAN SUBJOINED LETTER GA" #x0F92)
- ("TIBETAN SUBJOINED LETTER GHA" #x0F93)
- ("TIBETAN SUBJOINED LETTER NGA" #x0F94)
- ("TIBETAN SUBJOINED LETTER CA" #x0F95)
- ("TIBETAN SUBJOINED LETTER CHA" #x0F96)
- ("TIBETAN SUBJOINED LETTER JA" #x0F97)
- ("TIBETAN SUBJOINED LETTER NYA" #x0F99)
- ("TIBETAN SUBJOINED LETTER TTA" #x0F9A)
- ("TIBETAN SUBJOINED LETTER TTHA" #x0F9B)
- ("TIBETAN SUBJOINED LETTER DDA" #x0F9C)
- ("TIBETAN SUBJOINED LETTER DDHA" #x0F9D)
- ("TIBETAN SUBJOINED LETTER NNA" #x0F9E)
- ("TIBETAN SUBJOINED LETTER TA" #x0F9F)
- ("TIBETAN SUBJOINED LETTER THA" #x0FA0)
- ("TIBETAN SUBJOINED LETTER DA" #x0FA1)
- ("TIBETAN SUBJOINED LETTER DHA" #x0FA2)
- ("TIBETAN SUBJOINED LETTER NA" #x0FA3)
- ("TIBETAN SUBJOINED LETTER PA" #x0FA4)
- ("TIBETAN SUBJOINED LETTER PHA" #x0FA5)
- ("TIBETAN SUBJOINED LETTER BA" #x0FA6)
- ("TIBETAN SUBJOINED LETTER BHA" #x0FA7)
- ("TIBETAN SUBJOINED LETTER MA" #x0FA8)
- ("TIBETAN SUBJOINED LETTER TSA" #x0FA9)
- ("TIBETAN SUBJOINED LETTER TSHA" #x0FAA)
- ("TIBETAN SUBJOINED LETTER DZA" #x0FAB)
- ("TIBETAN SUBJOINED LETTER DZHA" #x0FAC)
- ("TIBETAN SUBJOINED LETTER WA" #x0FAD)
- ("TIBETAN SUBJOINED LETTER ZHA" #x0FAE)
- ("TIBETAN SUBJOINED LETTER ZA" #x0FAF)
- ("TIBETAN SUBJOINED LETTER -A" #x0FB0)
- ("TIBETAN SUBJOINED LETTER YA" #x0FB1)
- ("TIBETAN SUBJOINED LETTER RA" #x0FB2)
- ("TIBETAN SUBJOINED LETTER LA" #x0FB3)
- ("TIBETAN SUBJOINED LETTER SHA" #x0FB4)
- ("TIBETAN SUBJOINED LETTER SSA" #x0FB5)
- ("TIBETAN SUBJOINED LETTER SA" #x0FB6)
- ("TIBETAN SUBJOINED LETTER HA" #x0FB7)
- ("TIBETAN SUBJOINED LETTER A" #x0FB8)
- ("TIBETAN SUBJOINED LETTER KSSA" #x0FB9)
- ("TIBETAN SUBJOINED LETTER FIXED-FORM WA" #x0FBA)
- ("TIBETAN SUBJOINED LETTER FIXED-FORM YA" #x0FBB)
- ("TIBETAN SUBJOINED LETTER FIXED-FORM RA" #x0FBC)
- ("TIBETAN KU RU KHA" #x0FBE)
- ("TIBETAN KU RU KHA BZHI MIG CAN" #x0FBF)
- ("TIBETAN CANTILLATION SIGN HEAVY BEAT" #x0FC0)
- ("TIBETAN CANTILLATION SIGN LIGHT BEAT" #x0FC1)
- ("TIBETAN CANTILLATION SIGN CANG TE-U" #x0FC2)
- ("TIBETAN CANTILLATION SIGN SBUB -CHAL" #x0FC3)
- ("TIBETAN SYMBOL DRIL BU" #x0FC4)
- ("TIBETAN SYMBOL RDO RJE" #x0FC5)
- ("TIBETAN SYMBOL PADMA GDAN" #x0FC6)
- ("TIBETAN SYMBOL RDO RJE RGYA GRAM" #x0FC7)
- ("TIBETAN SYMBOL PHUR PA" #x0FC8)
- ("TIBETAN SYMBOL NOR BU" #x0FC9)
- ("TIBETAN SYMBOL NOR BU NYIS -KHYIL" #x0FCA)
- ("TIBETAN SYMBOL NOR BU GSUM -KHYIL" #x0FCB)
- ("TIBETAN SYMBOL NOR BU BZHI -KHYIL" #x0FCC)
- ("TIBETAN SIGN RDEL NAG GSUM" #x0FCF)
- ))
-
diff --git a/etc/nxml/01000-0109F.el b/etc/nxml/01000-0109F.el
deleted file mode 100644
index 56c6310415..0000000000
--- a/etc/nxml/01000-0109F.el
+++ /dev/null
@@ -1,81 +0,0 @@
-(nxml-define-char-name-set 'myanmar
- '(("MYANMAR LETTER KA" #x1000)
- ("MYANMAR LETTER KHA" #x1001)
- ("MYANMAR LETTER GA" #x1002)
- ("MYANMAR LETTER GHA" #x1003)
- ("MYANMAR LETTER NGA" #x1004)
- ("MYANMAR LETTER CA" #x1005)
- ("MYANMAR LETTER CHA" #x1006)
- ("MYANMAR LETTER JA" #x1007)
- ("MYANMAR LETTER JHA" #x1008)
- ("MYANMAR LETTER NYA" #x1009)
- ("MYANMAR LETTER NNYA" #x100A)
- ("MYANMAR LETTER TTA" #x100B)
- ("MYANMAR LETTER TTHA" #x100C)
- ("MYANMAR LETTER DDA" #x100D)
- ("MYANMAR LETTER DDHA" #x100E)
- ("MYANMAR LETTER NNA" #x100F)
- ("MYANMAR LETTER TA" #x1010)
- ("MYANMAR LETTER THA" #x1011)
- ("MYANMAR LETTER DA" #x1012)
- ("MYANMAR LETTER DHA" #x1013)
- ("MYANMAR LETTER NA" #x1014)
- ("MYANMAR LETTER PA" #x1015)
- ("MYANMAR LETTER PHA" #x1016)
- ("MYANMAR LETTER BA" #x1017)
- ("MYANMAR LETTER BHA" #x1018)
- ("MYANMAR LETTER MA" #x1019)
- ("MYANMAR LETTER YA" #x101A)
- ("MYANMAR LETTER RA" #x101B)
- ("MYANMAR LETTER LA" #x101C)
- ("MYANMAR LETTER WA" #x101D)
- ("MYANMAR LETTER SA" #x101E)
- ("MYANMAR LETTER HA" #x101F)
- ("MYANMAR LETTER LLA" #x1020)
- ("MYANMAR LETTER A" #x1021)
- ("MYANMAR LETTER I" #x1023)
- ("MYANMAR LETTER II" #x1024)
- ("MYANMAR LETTER U" #x1025)
- ("MYANMAR LETTER UU" #x1026)
- ("MYANMAR LETTER E" #x1027)
- ("MYANMAR LETTER O" #x1029)
- ("MYANMAR LETTER AU" #x102A)
- ("MYANMAR VOWEL SIGN AA" #x102C)
- ("MYANMAR VOWEL SIGN I" #x102D)
- ("MYANMAR VOWEL SIGN II" #x102E)
- ("MYANMAR VOWEL SIGN U" #x102F)
- ("MYANMAR VOWEL SIGN UU" #x1030)
- ("MYANMAR VOWEL SIGN E" #x1031)
- ("MYANMAR VOWEL SIGN AI" #x1032)
- ("MYANMAR SIGN ANUSVARA" #x1036)
- ("MYANMAR SIGN DOT BELOW" #x1037)
- ("MYANMAR SIGN VISARGA" #x1038)
- ("MYANMAR SIGN VIRAMA" #x1039)
- ("MYANMAR DIGIT ZERO" #x1040)
- ("MYANMAR DIGIT ONE" #x1041)
- ("MYANMAR DIGIT TWO" #x1042)
- ("MYANMAR DIGIT THREE" #x1043)
- ("MYANMAR DIGIT FOUR" #x1044)
- ("MYANMAR DIGIT FIVE" #x1045)
- ("MYANMAR DIGIT SIX" #x1046)
- ("MYANMAR DIGIT SEVEN" #x1047)
- ("MYANMAR DIGIT EIGHT" #x1048)
- ("MYANMAR DIGIT NINE" #x1049)
- ("MYANMAR SIGN LITTLE SECTION" #x104A)
- ("MYANMAR SIGN SECTION" #x104B)
- ("MYANMAR SYMBOL LOCATIVE" #x104C)
- ("MYANMAR SYMBOL COMPLETED" #x104D)
- ("MYANMAR SYMBOL AFOREMENTIONED" #x104E)
- ("MYANMAR SYMBOL GENITIVE" #x104F)
- ("MYANMAR LETTER SHA" #x1050)
- ("MYANMAR LETTER SSA" #x1051)
- ("MYANMAR LETTER VOCALIC R" #x1052)
- ("MYANMAR LETTER VOCALIC RR" #x1053)
- ("MYANMAR LETTER VOCALIC L" #x1054)
- ("MYANMAR LETTER VOCALIC LL" #x1055)
- ("MYANMAR VOWEL SIGN VOCALIC R" #x1056)
- ("MYANMAR VOWEL SIGN VOCALIC RR" #x1057)
- ("MYANMAR VOWEL SIGN VOCALIC L" #x1058)
- ("MYANMAR VOWEL SIGN VOCALIC LL" #x1059)
- ))
-
diff --git a/etc/nxml/010A0-010FF.el b/etc/nxml/010A0-010FF.el
deleted file mode 100644
index e7b5916f1c..0000000000
--- a/etc/nxml/010A0-010FF.el
+++ /dev/null
@@ -1,83 +0,0 @@
-(nxml-define-char-name-set 'georgian
- '(("GEORGIAN CAPITAL LETTER AN" #x10A0)
- ("GEORGIAN CAPITAL LETTER BAN" #x10A1)
- ("GEORGIAN CAPITAL LETTER GAN" #x10A2)
- ("GEORGIAN CAPITAL LETTER DON" #x10A3)
- ("GEORGIAN CAPITAL LETTER EN" #x10A4)
- ("GEORGIAN CAPITAL LETTER VIN" #x10A5)
- ("GEORGIAN CAPITAL LETTER ZEN" #x10A6)
- ("GEORGIAN CAPITAL LETTER TAN" #x10A7)
- ("GEORGIAN CAPITAL LETTER IN" #x10A8)
- ("GEORGIAN CAPITAL LETTER KAN" #x10A9)
- ("GEORGIAN CAPITAL LETTER LAS" #x10AA)
- ("GEORGIAN CAPITAL LETTER MAN" #x10AB)
- ("GEORGIAN CAPITAL LETTER NAR" #x10AC)
- ("GEORGIAN CAPITAL LETTER ON" #x10AD)
- ("GEORGIAN CAPITAL LETTER PAR" #x10AE)
- ("GEORGIAN CAPITAL LETTER ZHAR" #x10AF)
- ("GEORGIAN CAPITAL LETTER RAE" #x10B0)
- ("GEORGIAN CAPITAL LETTER SAN" #x10B1)
- ("GEORGIAN CAPITAL LETTER TAR" #x10B2)
- ("GEORGIAN CAPITAL LETTER UN" #x10B3)
- ("GEORGIAN CAPITAL LETTER PHAR" #x10B4)
- ("GEORGIAN CAPITAL LETTER KHAR" #x10B5)
- ("GEORGIAN CAPITAL LETTER GHAN" #x10B6)
- ("GEORGIAN CAPITAL LETTER QAR" #x10B7)
- ("GEORGIAN CAPITAL LETTER SHIN" #x10B8)
- ("GEORGIAN CAPITAL LETTER CHIN" #x10B9)
- ("GEORGIAN CAPITAL LETTER CAN" #x10BA)
- ("GEORGIAN CAPITAL LETTER JIL" #x10BB)
- ("GEORGIAN CAPITAL LETTER CIL" #x10BC)
- ("GEORGIAN CAPITAL LETTER CHAR" #x10BD)
- ("GEORGIAN CAPITAL LETTER XAN" #x10BE)
- ("GEORGIAN CAPITAL LETTER JHAN" #x10BF)
- ("GEORGIAN CAPITAL LETTER HAE" #x10C0)
- ("GEORGIAN CAPITAL LETTER HE" #x10C1)
- ("GEORGIAN CAPITAL LETTER HIE" #x10C2)
- ("GEORGIAN CAPITAL LETTER WE" #x10C3)
- ("GEORGIAN CAPITAL LETTER HAR" #x10C4)
- ("GEORGIAN CAPITAL LETTER HOE" #x10C5)
- ("GEORGIAN LETTER AN" #x10D0)
- ("GEORGIAN LETTER BAN" #x10D1)
- ("GEORGIAN LETTER GAN" #x10D2)
- ("GEORGIAN LETTER DON" #x10D3)
- ("GEORGIAN LETTER EN" #x10D4)
- ("GEORGIAN LETTER VIN" #x10D5)
- ("GEORGIAN LETTER ZEN" #x10D6)
- ("GEORGIAN LETTER TAN" #x10D7)
- ("GEORGIAN LETTER IN" #x10D8)
- ("GEORGIAN LETTER KAN" #x10D9)
- ("GEORGIAN LETTER LAS" #x10DA)
- ("GEORGIAN LETTER MAN" #x10DB)
- ("GEORGIAN LETTER NAR" #x10DC)
- ("GEORGIAN LETTER ON" #x10DD)
- ("GEORGIAN LETTER PAR" #x10DE)
- ("GEORGIAN LETTER ZHAR" #x10DF)
- ("GEORGIAN LETTER RAE" #x10E0)
- ("GEORGIAN LETTER SAN" #x10E1)
- ("GEORGIAN LETTER TAR" #x10E2)
- ("GEORGIAN LETTER UN" #x10E3)
- ("GEORGIAN LETTER PHAR" #x10E4)
- ("GEORGIAN LETTER KHAR" #x10E5)
- ("GEORGIAN LETTER GHAN" #x10E6)
- ("GEORGIAN LETTER QAR" #x10E7)
- ("GEORGIAN LETTER SHIN" #x10E8)
- ("GEORGIAN LETTER CHIN" #x10E9)
- ("GEORGIAN LETTER CAN" #x10EA)
- ("GEORGIAN LETTER JIL" #x10EB)
- ("GEORGIAN LETTER CIL" #x10EC)
- ("GEORGIAN LETTER CHAR" #x10ED)
- ("GEORGIAN LETTER XAN" #x10EE)
- ("GEORGIAN LETTER JHAN" #x10EF)
- ("GEORGIAN LETTER HAE" #x10F0)
- ("GEORGIAN LETTER HE" #x10F1)
- ("GEORGIAN LETTER HIE" #x10F2)
- ("GEORGIAN LETTER WE" #x10F3)
- ("GEORGIAN LETTER HAR" #x10F4)
- ("GEORGIAN LETTER HOE" #x10F5)
- ("GEORGIAN LETTER FI" #x10F6)
- ("GEORGIAN LETTER YN" #x10F7)
- ("GEORGIAN LETTER ELIFI" #x10F8)
- ("GEORGIAN PARAGRAPH SEPARATOR" #x10FB)
- ))
-
diff --git a/etc/nxml/01100-011FF.el b/etc/nxml/01100-011FF.el
deleted file mode 100644
index dbaa621275..0000000000
--- a/etc/nxml/01100-011FF.el
+++ /dev/null
@@ -1,243 +0,0 @@
-(nxml-define-char-name-set 'hangul-jamo
- '(("HANGUL CHOSEONG KIYEOK" #x1100)
- ("HANGUL CHOSEONG SSANGKIYEOK" #x1101)
- ("HANGUL CHOSEONG NIEUN" #x1102)
- ("HANGUL CHOSEONG TIKEUT" #x1103)
- ("HANGUL CHOSEONG SSANGTIKEUT" #x1104)
- ("HANGUL CHOSEONG RIEUL" #x1105)
- ("HANGUL CHOSEONG MIEUM" #x1106)
- ("HANGUL CHOSEONG PIEUP" #x1107)
- ("HANGUL CHOSEONG SSANGPIEUP" #x1108)
- ("HANGUL CHOSEONG SIOS" #x1109)
- ("HANGUL CHOSEONG SSANGSIOS" #x110A)
- ("HANGUL CHOSEONG IEUNG" #x110B)
- ("HANGUL CHOSEONG CIEUC" #x110C)
- ("HANGUL CHOSEONG SSANGCIEUC" #x110D)
- ("HANGUL CHOSEONG CHIEUCH" #x110E)
- ("HANGUL CHOSEONG KHIEUKH" #x110F)
- ("HANGUL CHOSEONG THIEUTH" #x1110)
- ("HANGUL CHOSEONG PHIEUPH" #x1111)
- ("HANGUL CHOSEONG HIEUH" #x1112)
- ("HANGUL CHOSEONG NIEUN-KIYEOK" #x1113)
- ("HANGUL CHOSEONG SSANGNIEUN" #x1114)
- ("HANGUL CHOSEONG NIEUN-TIKEUT" #x1115)
- ("HANGUL CHOSEONG NIEUN-PIEUP" #x1116)
- ("HANGUL CHOSEONG TIKEUT-KIYEOK" #x1117)
- ("HANGUL CHOSEONG RIEUL-NIEUN" #x1118)
- ("HANGUL CHOSEONG SSANGRIEUL" #x1119)
- ("HANGUL CHOSEONG RIEUL-HIEUH" #x111A)
- ("HANGUL CHOSEONG KAPYEOUNRIEUL" #x111B)
- ("HANGUL CHOSEONG MIEUM-PIEUP" #x111C)
- ("HANGUL CHOSEONG KAPYEOUNMIEUM" #x111D)
- ("HANGUL CHOSEONG PIEUP-KIYEOK" #x111E)
- ("HANGUL CHOSEONG PIEUP-NIEUN" #x111F)
- ("HANGUL CHOSEONG PIEUP-TIKEUT" #x1120)
- ("HANGUL CHOSEONG PIEUP-SIOS" #x1121)
- ("HANGUL CHOSEONG PIEUP-SIOS-KIYEOK" #x1122)
- ("HANGUL CHOSEONG PIEUP-SIOS-TIKEUT" #x1123)
- ("HANGUL CHOSEONG PIEUP-SIOS-PIEUP" #x1124)
- ("HANGUL CHOSEONG PIEUP-SSANGSIOS" #x1125)
- ("HANGUL CHOSEONG PIEUP-SIOS-CIEUC" #x1126)
- ("HANGUL CHOSEONG PIEUP-CIEUC" #x1127)
- ("HANGUL CHOSEONG PIEUP-CHIEUCH" #x1128)
- ("HANGUL CHOSEONG PIEUP-THIEUTH" #x1129)
- ("HANGUL CHOSEONG PIEUP-PHIEUPH" #x112A)
- ("HANGUL CHOSEONG KAPYEOUNPIEUP" #x112B)
- ("HANGUL CHOSEONG KAPYEOUNSSANGPIEUP" #x112C)
- ("HANGUL CHOSEONG SIOS-KIYEOK" #x112D)
- ("HANGUL CHOSEONG SIOS-NIEUN" #x112E)
- ("HANGUL CHOSEONG SIOS-TIKEUT" #x112F)
- ("HANGUL CHOSEONG SIOS-RIEUL" #x1130)
- ("HANGUL CHOSEONG SIOS-MIEUM" #x1131)
- ("HANGUL CHOSEONG SIOS-PIEUP" #x1132)
- ("HANGUL CHOSEONG SIOS-PIEUP-KIYEOK" #x1133)
- ("HANGUL CHOSEONG SIOS-SSANGSIOS" #x1134)
- ("HANGUL CHOSEONG SIOS-IEUNG" #x1135)
- ("HANGUL CHOSEONG SIOS-CIEUC" #x1136)
- ("HANGUL CHOSEONG SIOS-CHIEUCH" #x1137)
- ("HANGUL CHOSEONG SIOS-KHIEUKH" #x1138)
- ("HANGUL CHOSEONG SIOS-THIEUTH" #x1139)
- ("HANGUL CHOSEONG SIOS-PHIEUPH" #x113A)
- ("HANGUL CHOSEONG SIOS-HIEUH" #x113B)
- ("HANGUL CHOSEONG CHITUEUMSIOS" #x113C)
- ("HANGUL CHOSEONG CHITUEUMSSANGSIOS" #x113D)
- ("HANGUL CHOSEONG CEONGCHIEUMSIOS" #x113E)
- ("HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS" #x113F)
- ("HANGUL CHOSEONG PANSIOS" #x1140)
- ("HANGUL CHOSEONG IEUNG-KIYEOK" #x1141)
- ("HANGUL CHOSEONG IEUNG-TIKEUT" #x1142)
- ("HANGUL CHOSEONG IEUNG-MIEUM" #x1143)
- ("HANGUL CHOSEONG IEUNG-PIEUP" #x1144)
- ("HANGUL CHOSEONG IEUNG-SIOS" #x1145)
- ("HANGUL CHOSEONG IEUNG-PANSIOS" #x1146)
- ("HANGUL CHOSEONG SSANGIEUNG" #x1147)
- ("HANGUL CHOSEONG IEUNG-CIEUC" #x1148)
- ("HANGUL CHOSEONG IEUNG-CHIEUCH" #x1149)
- ("HANGUL CHOSEONG IEUNG-THIEUTH" #x114A)
- ("HANGUL CHOSEONG IEUNG-PHIEUPH" #x114B)
- ("HANGUL CHOSEONG YESIEUNG" #x114C)
- ("HANGUL CHOSEONG CIEUC-IEUNG" #x114D)
- ("HANGUL CHOSEONG CHITUEUMCIEUC" #x114E)
- ("HANGUL CHOSEONG CHITUEUMSSANGCIEUC" #x114F)
- ("HANGUL CHOSEONG CEONGCHIEUMCIEUC" #x1150)
- ("HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC" #x1151)
- ("HANGUL CHOSEONG CHIEUCH-KHIEUKH" #x1152)
- ("HANGUL CHOSEONG CHIEUCH-HIEUH" #x1153)
- ("HANGUL CHOSEONG CHITUEUMCHIEUCH" #x1154)
- ("HANGUL CHOSEONG CEONGCHIEUMCHIEUCH" #x1155)
- ("HANGUL CHOSEONG PHIEUPH-PIEUP" #x1156)
- ("HANGUL CHOSEONG KAPYEOUNPHIEUPH" #x1157)
- ("HANGUL CHOSEONG SSANGHIEUH" #x1158)
- ("HANGUL CHOSEONG YEORINHIEUH" #x1159)
- ("HANGUL CHOSEONG FILLER" #x115F)
- ("HANGUL JUNGSEONG FILLER" #x1160)
- ("HANGUL JUNGSEONG A" #x1161)
- ("HANGUL JUNGSEONG AE" #x1162)
- ("HANGUL JUNGSEONG YA" #x1163)
- ("HANGUL JUNGSEONG YAE" #x1164)
- ("HANGUL JUNGSEONG EO" #x1165)
- ("HANGUL JUNGSEONG E" #x1166)
- ("HANGUL JUNGSEONG YEO" #x1167)
- ("HANGUL JUNGSEONG YE" #x1168)
- ("HANGUL JUNGSEONG O" #x1169)
- ("HANGUL JUNGSEONG WA" #x116A)
- ("HANGUL JUNGSEONG WAE" #x116B)
- ("HANGUL JUNGSEONG OE" #x116C)
- ("HANGUL JUNGSEONG YO" #x116D)
- ("HANGUL JUNGSEONG U" #x116E)
- ("HANGUL JUNGSEONG WEO" #x116F)
- ("HANGUL JUNGSEONG WE" #x1170)
- ("HANGUL JUNGSEONG WI" #x1171)
- ("HANGUL JUNGSEONG YU" #x1172)
- ("HANGUL JUNGSEONG EU" #x1173)
- ("HANGUL JUNGSEONG YI" #x1174)
- ("HANGUL JUNGSEONG I" #x1175)
- ("HANGUL JUNGSEONG A-O" #x1176)
- ("HANGUL JUNGSEONG A-U" #x1177)
- ("HANGUL JUNGSEONG YA-O" #x1178)
- ("HANGUL JUNGSEONG YA-YO" #x1179)
- ("HANGUL JUNGSEONG EO-O" #x117A)
- ("HANGUL JUNGSEONG EO-U" #x117B)
- ("HANGUL JUNGSEONG EO-EU" #x117C)
- ("HANGUL JUNGSEONG YEO-O" #x117D)
- ("HANGUL JUNGSEONG YEO-U" #x117E)
- ("HANGUL JUNGSEONG O-EO" #x117F)
- ("HANGUL JUNGSEONG O-E" #x1180)
- ("HANGUL JUNGSEONG O-YE" #x1181)
- ("HANGUL JUNGSEONG O-O" #x1182)
- ("HANGUL JUNGSEONG O-U" #x1183)
- ("HANGUL JUNGSEONG YO-YA" #x1184)
- ("HANGUL JUNGSEONG YO-YAE" #x1185)
- ("HANGUL JUNGSEONG YO-YEO" #x1186)
- ("HANGUL JUNGSEONG YO-O" #x1187)
- ("HANGUL JUNGSEONG YO-I" #x1188)
- ("HANGUL JUNGSEONG U-A" #x1189)
- ("HANGUL JUNGSEONG U-AE" #x118A)
- ("HANGUL JUNGSEONG U-EO-EU" #x118B)
- ("HANGUL JUNGSEONG U-YE" #x118C)
- ("HANGUL JUNGSEONG U-U" #x118D)
- ("HANGUL JUNGSEONG YU-A" #x118E)
- ("HANGUL JUNGSEONG YU-EO" #x118F)
- ("HANGUL JUNGSEONG YU-E" #x1190)
- ("HANGUL JUNGSEONG YU-YEO" #x1191)
- ("HANGUL JUNGSEONG YU-YE" #x1192)
- ("HANGUL JUNGSEONG YU-U" #x1193)
- ("HANGUL JUNGSEONG YU-I" #x1194)
- ("HANGUL JUNGSEONG EU-U" #x1195)
- ("HANGUL JUNGSEONG EU-EU" #x1196)
- ("HANGUL JUNGSEONG YI-U" #x1197)
- ("HANGUL JUNGSEONG I-A" #x1198)
- ("HANGUL JUNGSEONG I-YA" #x1199)
- ("HANGUL JUNGSEONG I-O" #x119A)
- ("HANGUL JUNGSEONG I-U" #x119B)
- ("HANGUL JUNGSEONG I-EU" #x119C)
- ("HANGUL JUNGSEONG I-ARAEA" #x119D)
- ("HANGUL JUNGSEONG ARAEA" #x119E)
- ("HANGUL JUNGSEONG ARAEA-EO" #x119F)
- ("HANGUL JUNGSEONG ARAEA-U" #x11A0)
- ("HANGUL JUNGSEONG ARAEA-I" #x11A1)
- ("HANGUL JUNGSEONG SSANGARAEA" #x11A2)
- ("HANGUL JONGSEONG KIYEOK" #x11A8)
- ("HANGUL JONGSEONG SSANGKIYEOK" #x11A9)
- ("HANGUL JONGSEONG KIYEOK-SIOS" #x11AA)
- ("HANGUL JONGSEONG NIEUN" #x11AB)
- ("HANGUL JONGSEONG NIEUN-CIEUC" #x11AC)
- ("HANGUL JONGSEONG NIEUN-HIEUH" #x11AD)
- ("HANGUL JONGSEONG TIKEUT" #x11AE)
- ("HANGUL JONGSEONG RIEUL" #x11AF)
- ("HANGUL JONGSEONG RIEUL-KIYEOK" #x11B0)
- ("HANGUL JONGSEONG RIEUL-MIEUM" #x11B1)
- ("HANGUL JONGSEONG RIEUL-PIEUP" #x11B2)
- ("HANGUL JONGSEONG RIEUL-SIOS" #x11B3)
- ("HANGUL JONGSEONG RIEUL-THIEUTH" #x11B4)
- ("HANGUL JONGSEONG RIEUL-PHIEUPH" #x11B5)
- ("HANGUL JONGSEONG RIEUL-HIEUH" #x11B6)
- ("HANGUL JONGSEONG MIEUM" #x11B7)
- ("HANGUL JONGSEONG PIEUP" #x11B8)
- ("HANGUL JONGSEONG PIEUP-SIOS" #x11B9)
- ("HANGUL JONGSEONG SIOS" #x11BA)
- ("HANGUL JONGSEONG SSANGSIOS" #x11BB)
- ("HANGUL JONGSEONG IEUNG" #x11BC)
- ("HANGUL JONGSEONG CIEUC" #x11BD)
- ("HANGUL JONGSEONG CHIEUCH" #x11BE)
- ("HANGUL JONGSEONG KHIEUKH" #x11BF)
- ("HANGUL JONGSEONG THIEUTH" #x11C0)
- ("HANGUL JONGSEONG PHIEUPH" #x11C1)
- ("HANGUL JONGSEONG HIEUH" #x11C2)
- ("HANGUL JONGSEONG KIYEOK-RIEUL" #x11C3)
- ("HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK" #x11C4)
- ("HANGUL JONGSEONG NIEUN-KIYEOK" #x11C5)
- ("HANGUL JONGSEONG NIEUN-TIKEUT" #x11C6)
- ("HANGUL JONGSEONG NIEUN-SIOS" #x11C7)
- ("HANGUL JONGSEONG NIEUN-PANSIOS" #x11C8)
- ("HANGUL JONGSEONG NIEUN-THIEUTH" #x11C9)
- ("HANGUL JONGSEONG TIKEUT-KIYEOK" #x11CA)
- ("HANGUL JONGSEONG TIKEUT-RIEUL" #x11CB)
- ("HANGUL JONGSEONG RIEUL-KIYEOK-SIOS" #x11CC)
- ("HANGUL JONGSEONG RIEUL-NIEUN" #x11CD)
- ("HANGUL JONGSEONG RIEUL-TIKEUT" #x11CE)
- ("HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH" #x11CF)
- ("HANGUL JONGSEONG SSANGRIEUL" #x11D0)
- ("HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK" #x11D1)
- ("HANGUL JONGSEONG RIEUL-MIEUM-SIOS" #x11D2)
- ("HANGUL JONGSEONG RIEUL-PIEUP-SIOS" #x11D3)
- ("HANGUL JONGSEONG RIEUL-PIEUP-HIEUH" #x11D4)
- ("HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP" #x11D5)
- ("HANGUL JONGSEONG RIEUL-SSANGSIOS" #x11D6)
- ("HANGUL JONGSEONG RIEUL-PANSIOS" #x11D7)
- ("HANGUL JONGSEONG RIEUL-KHIEUKH" #x11D8)
- ("HANGUL JONGSEONG RIEUL-YEORINHIEUH" #x11D9)
- ("HANGUL JONGSEONG MIEUM-KIYEOK" #x11DA)
- ("HANGUL JONGSEONG MIEUM-RIEUL" #x11DB)
- ("HANGUL JONGSEONG MIEUM-PIEUP" #x11DC)
- ("HANGUL JONGSEONG MIEUM-SIOS" #x11DD)
- ("HANGUL JONGSEONG MIEUM-SSANGSIOS" #x11DE)
- ("HANGUL JONGSEONG MIEUM-PANSIOS" #x11DF)
- ("HANGUL JONGSEONG MIEUM-CHIEUCH" #x11E0)
- ("HANGUL JONGSEONG MIEUM-HIEUH" #x11E1)
- ("HANGUL JONGSEONG KAPYEOUNMIEUM" #x11E2)
- ("HANGUL JONGSEONG PIEUP-RIEUL" #x11E3)
- ("HANGUL JONGSEONG PIEUP-PHIEUPH" #x11E4)
- ("HANGUL JONGSEONG PIEUP-HIEUH" #x11E5)
- ("HANGUL JONGSEONG KAPYEOUNPIEUP" #x11E6)
- ("HANGUL JONGSEONG SIOS-KIYEOK" #x11E7)
- ("HANGUL JONGSEONG SIOS-TIKEUT" #x11E8)
- ("HANGUL JONGSEONG SIOS-RIEUL" #x11E9)
- ("HANGUL JONGSEONG SIOS-PIEUP" #x11EA)
- ("HANGUL JONGSEONG PANSIOS" #x11EB)
- ("HANGUL JONGSEONG IEUNG-KIYEOK" #x11EC)
- ("HANGUL JONGSEONG IEUNG-SSANGKIYEOK" #x11ED)
- ("HANGUL JONGSEONG SSANGIEUNG" #x11EE)
- ("HANGUL JONGSEONG IEUNG-KHIEUKH" #x11EF)
- ("HANGUL JONGSEONG YESIEUNG" #x11F0)
- ("HANGUL JONGSEONG YESIEUNG-SIOS" #x11F1)
- ("HANGUL JONGSEONG YESIEUNG-PANSIOS" #x11F2)
- ("HANGUL JONGSEONG PHIEUPH-PIEUP" #x11F3)
- ("HANGUL JONGSEONG KAPYEOUNPHIEUPH" #x11F4)
- ("HANGUL JONGSEONG HIEUH-NIEUN" #x11F5)
- ("HANGUL JONGSEONG HIEUH-RIEUL" #x11F6)
- ("HANGUL JONGSEONG HIEUH-MIEUM" #x11F7)
- ("HANGUL JONGSEONG HIEUH-PIEUP" #x11F8)
- ("HANGUL JONGSEONG YEORINHIEUH" #x11F9)
- ))
-
diff --git a/etc/nxml/01200-0137F.el b/etc/nxml/01200-0137F.el
deleted file mode 100644
index c7ac4e0ddb..0000000000
--- a/etc/nxml/01200-0137F.el
+++ /dev/null
@@ -1,348 +0,0 @@
-(nxml-define-char-name-set 'ethiopic
- '(("ETHIOPIC SYLLABLE HA" #x1200)
- ("ETHIOPIC SYLLABLE HU" #x1201)
- ("ETHIOPIC SYLLABLE HI" #x1202)
- ("ETHIOPIC SYLLABLE HAA" #x1203)
- ("ETHIOPIC SYLLABLE HEE" #x1204)
- ("ETHIOPIC SYLLABLE HE" #x1205)
- ("ETHIOPIC SYLLABLE HO" #x1206)
- ("ETHIOPIC SYLLABLE LA" #x1208)
- ("ETHIOPIC SYLLABLE LU" #x1209)
- ("ETHIOPIC SYLLABLE LI" #x120A)
- ("ETHIOPIC SYLLABLE LAA" #x120B)
- ("ETHIOPIC SYLLABLE LEE" #x120C)
- ("ETHIOPIC SYLLABLE LE" #x120D)
- ("ETHIOPIC SYLLABLE LO" #x120E)
- ("ETHIOPIC SYLLABLE LWA" #x120F)
- ("ETHIOPIC SYLLABLE HHA" #x1210)
- ("ETHIOPIC SYLLABLE HHU" #x1211)
- ("ETHIOPIC SYLLABLE HHI" #x1212)
- ("ETHIOPIC SYLLABLE HHAA" #x1213)
- ("ETHIOPIC SYLLABLE HHEE" #x1214)
- ("ETHIOPIC SYLLABLE HHE" #x1215)
- ("ETHIOPIC SYLLABLE HHO" #x1216)
- ("ETHIOPIC SYLLABLE HHWA" #x1217)
- ("ETHIOPIC SYLLABLE MA" #x1218)
- ("ETHIOPIC SYLLABLE MU" #x1219)
- ("ETHIOPIC SYLLABLE MI" #x121A)
- ("ETHIOPIC SYLLABLE MAA" #x121B)
- ("ETHIOPIC SYLLABLE MEE" #x121C)
- ("ETHIOPIC SYLLABLE ME" #x121D)
- ("ETHIOPIC SYLLABLE MO" #x121E)
- ("ETHIOPIC SYLLABLE MWA" #x121F)
- ("ETHIOPIC SYLLABLE SZA" #x1220)
- ("ETHIOPIC SYLLABLE SZU" #x1221)
- ("ETHIOPIC SYLLABLE SZI" #x1222)
- ("ETHIOPIC SYLLABLE SZAA" #x1223)
- ("ETHIOPIC SYLLABLE SZEE" #x1224)
- ("ETHIOPIC SYLLABLE SZE" #x1225)
- ("ETHIOPIC SYLLABLE SZO" #x1226)
- ("ETHIOPIC SYLLABLE SZWA" #x1227)
- ("ETHIOPIC SYLLABLE RA" #x1228)
- ("ETHIOPIC SYLLABLE RU" #x1229)
- ("ETHIOPIC SYLLABLE RI" #x122A)
- ("ETHIOPIC SYLLABLE RAA" #x122B)
- ("ETHIOPIC SYLLABLE REE" #x122C)
- ("ETHIOPIC SYLLABLE RE" #x122D)
- ("ETHIOPIC SYLLABLE RO" #x122E)
- ("ETHIOPIC SYLLABLE RWA" #x122F)
- ("ETHIOPIC SYLLABLE SA" #x1230)
- ("ETHIOPIC SYLLABLE SU" #x1231)
- ("ETHIOPIC SYLLABLE SI" #x1232)
- ("ETHIOPIC SYLLABLE SAA" #x1233)
- ("ETHIOPIC SYLLABLE SEE" #x1234)
- ("ETHIOPIC SYLLABLE SE" #x1235)
- ("ETHIOPIC SYLLABLE SO" #x1236)
- ("ETHIOPIC SYLLABLE SWA" #x1237)
- ("ETHIOPIC SYLLABLE SHA" #x1238)
- ("ETHIOPIC SYLLABLE SHU" #x1239)
- ("ETHIOPIC SYLLABLE SHI" #x123A)
- ("ETHIOPIC SYLLABLE SHAA" #x123B)
- ("ETHIOPIC SYLLABLE SHEE" #x123C)
- ("ETHIOPIC SYLLABLE SHE" #x123D)
- ("ETHIOPIC SYLLABLE SHO" #x123E)
- ("ETHIOPIC SYLLABLE SHWA" #x123F)
- ("ETHIOPIC SYLLABLE QA" #x1240)
- ("ETHIOPIC SYLLABLE QU" #x1241)
- ("ETHIOPIC SYLLABLE QI" #x1242)
- ("ETHIOPIC SYLLABLE QAA" #x1243)
- ("ETHIOPIC SYLLABLE QEE" #x1244)
- ("ETHIOPIC SYLLABLE QE" #x1245)
- ("ETHIOPIC SYLLABLE QO" #x1246)
- ("ETHIOPIC SYLLABLE QWA" #x1248)
- ("ETHIOPIC SYLLABLE QWI" #x124A)
- ("ETHIOPIC SYLLABLE QWAA" #x124B)
- ("ETHIOPIC SYLLABLE QWEE" #x124C)
- ("ETHIOPIC SYLLABLE QWE" #x124D)
- ("ETHIOPIC SYLLABLE QHA" #x1250)
- ("ETHIOPIC SYLLABLE QHU" #x1251)
- ("ETHIOPIC SYLLABLE QHI" #x1252)
- ("ETHIOPIC SYLLABLE QHAA" #x1253)
- ("ETHIOPIC SYLLABLE QHEE" #x1254)
- ("ETHIOPIC SYLLABLE QHE" #x1255)
- ("ETHIOPIC SYLLABLE QHO" #x1256)
- ("ETHIOPIC SYLLABLE QHWA" #x1258)
- ("ETHIOPIC SYLLABLE QHWI" #x125A)
- ("ETHIOPIC SYLLABLE QHWAA" #x125B)
- ("ETHIOPIC SYLLABLE QHWEE" #x125C)
- ("ETHIOPIC SYLLABLE QHWE" #x125D)
- ("ETHIOPIC SYLLABLE BA" #x1260)
- ("ETHIOPIC SYLLABLE BU" #x1261)
- ("ETHIOPIC SYLLABLE BI" #x1262)
- ("ETHIOPIC SYLLABLE BAA" #x1263)
- ("ETHIOPIC SYLLABLE BEE" #x1264)
- ("ETHIOPIC SYLLABLE BE" #x1265)
- ("ETHIOPIC SYLLABLE BO" #x1266)
- ("ETHIOPIC SYLLABLE BWA" #x1267)
- ("ETHIOPIC SYLLABLE VA" #x1268)
- ("ETHIOPIC SYLLABLE VU" #x1269)
- ("ETHIOPIC SYLLABLE VI" #x126A)
- ("ETHIOPIC SYLLABLE VAA" #x126B)
- ("ETHIOPIC SYLLABLE VEE" #x126C)
- ("ETHIOPIC SYLLABLE VE" #x126D)
- ("ETHIOPIC SYLLABLE VO" #x126E)
- ("ETHIOPIC SYLLABLE VWA" #x126F)
- ("ETHIOPIC SYLLABLE TA" #x1270)
- ("ETHIOPIC SYLLABLE TU" #x1271)
- ("ETHIOPIC SYLLABLE TI" #x1272)
- ("ETHIOPIC SYLLABLE TAA" #x1273)
- ("ETHIOPIC SYLLABLE TEE" #x1274)
- ("ETHIOPIC SYLLABLE TE" #x1275)
- ("ETHIOPIC SYLLABLE TO" #x1276)
- ("ETHIOPIC SYLLABLE TWA" #x1277)
- ("ETHIOPIC SYLLABLE CA" #x1278)
- ("ETHIOPIC SYLLABLE CU" #x1279)
- ("ETHIOPIC SYLLABLE CI" #x127A)
- ("ETHIOPIC SYLLABLE CAA" #x127B)
- ("ETHIOPIC SYLLABLE CEE" #x127C)
- ("ETHIOPIC SYLLABLE CE" #x127D)
- ("ETHIOPIC SYLLABLE CO" #x127E)
- ("ETHIOPIC SYLLABLE CWA" #x127F)
- ("ETHIOPIC SYLLABLE XA" #x1280)
- ("ETHIOPIC SYLLABLE XU" #x1281)
- ("ETHIOPIC SYLLABLE XI" #x1282)
- ("ETHIOPIC SYLLABLE XAA" #x1283)
- ("ETHIOPIC SYLLABLE XEE" #x1284)
- ("ETHIOPIC SYLLABLE XE" #x1285)
- ("ETHIOPIC SYLLABLE XO" #x1286)
- ("ETHIOPIC SYLLABLE XWA" #x1288)
- ("ETHIOPIC SYLLABLE XWI" #x128A)
- ("ETHIOPIC SYLLABLE XWAA" #x128B)
- ("ETHIOPIC SYLLABLE XWEE" #x128C)
- ("ETHIOPIC SYLLABLE XWE" #x128D)
- ("ETHIOPIC SYLLABLE NA" #x1290)
- ("ETHIOPIC SYLLABLE NU" #x1291)
- ("ETHIOPIC SYLLABLE NI" #x1292)
- ("ETHIOPIC SYLLABLE NAA" #x1293)
- ("ETHIOPIC SYLLABLE NEE" #x1294)
- ("ETHIOPIC SYLLABLE NE" #x1295)
- ("ETHIOPIC SYLLABLE NO" #x1296)
- ("ETHIOPIC SYLLABLE NWA" #x1297)
- ("ETHIOPIC SYLLABLE NYA" #x1298)
- ("ETHIOPIC SYLLABLE NYU" #x1299)
- ("ETHIOPIC SYLLABLE NYI" #x129A)
- ("ETHIOPIC SYLLABLE NYAA" #x129B)
- ("ETHIOPIC SYLLABLE NYEE" #x129C)
- ("ETHIOPIC SYLLABLE NYE" #x129D)
- ("ETHIOPIC SYLLABLE NYO" #x129E)
- ("ETHIOPIC SYLLABLE NYWA" #x129F)
- ("ETHIOPIC SYLLABLE GLOTTAL A" #x12A0)
- ("ETHIOPIC SYLLABLE GLOTTAL U" #x12A1)
- ("ETHIOPIC SYLLABLE GLOTTAL I" #x12A2)
- ("ETHIOPIC SYLLABLE GLOTTAL AA" #x12A3)
- ("ETHIOPIC SYLLABLE GLOTTAL EE" #x12A4)
- ("ETHIOPIC SYLLABLE GLOTTAL E" #x12A5)
- ("ETHIOPIC SYLLABLE GLOTTAL O" #x12A6)
- ("ETHIOPIC SYLLABLE GLOTTAL WA" #x12A7)
- ("ETHIOPIC SYLLABLE KA" #x12A8)
- ("ETHIOPIC SYLLABLE KU" #x12A9)
- ("ETHIOPIC SYLLABLE KI" #x12AA)
- ("ETHIOPIC SYLLABLE KAA" #x12AB)
- ("ETHIOPIC SYLLABLE KEE" #x12AC)
- ("ETHIOPIC SYLLABLE KE" #x12AD)
- ("ETHIOPIC SYLLABLE KO" #x12AE)
- ("ETHIOPIC SYLLABLE KWA" #x12B0)
- ("ETHIOPIC SYLLABLE KWI" #x12B2)
- ("ETHIOPIC SYLLABLE KWAA" #x12B3)
- ("ETHIOPIC SYLLABLE KWEE" #x12B4)
- ("ETHIOPIC SYLLABLE KWE" #x12B5)
- ("ETHIOPIC SYLLABLE KXA" #x12B8)
- ("ETHIOPIC SYLLABLE KXU" #x12B9)
- ("ETHIOPIC SYLLABLE KXI" #x12BA)
- ("ETHIOPIC SYLLABLE KXAA" #x12BB)
- ("ETHIOPIC SYLLABLE KXEE" #x12BC)
- ("ETHIOPIC SYLLABLE KXE" #x12BD)
- ("ETHIOPIC SYLLABLE KXO" #x12BE)
- ("ETHIOPIC SYLLABLE KXWA" #x12C0)
- ("ETHIOPIC SYLLABLE KXWI" #x12C2)
- ("ETHIOPIC SYLLABLE KXWAA" #x12C3)
- ("ETHIOPIC SYLLABLE KXWEE" #x12C4)
- ("ETHIOPIC SYLLABLE KXWE" #x12C5)
- ("ETHIOPIC SYLLABLE WA" #x12C8)
- ("ETHIOPIC SYLLABLE WU" #x12C9)
- ("ETHIOPIC SYLLABLE WI" #x12CA)
- ("ETHIOPIC SYLLABLE WAA" #x12CB)
- ("ETHIOPIC SYLLABLE WEE" #x12CC)
- ("ETHIOPIC SYLLABLE WE" #x12CD)
- ("ETHIOPIC SYLLABLE WO" #x12CE)
- ("ETHIOPIC SYLLABLE PHARYNGEAL A" #x12D0)
- ("ETHIOPIC SYLLABLE PHARYNGEAL U" #x12D1)
- ("ETHIOPIC SYLLABLE PHARYNGEAL I" #x12D2)
- ("ETHIOPIC SYLLABLE PHARYNGEAL AA" #x12D3)
- ("ETHIOPIC SYLLABLE PHARYNGEAL EE" #x12D4)
- ("ETHIOPIC SYLLABLE PHARYNGEAL E" #x12D5)
- ("ETHIOPIC SYLLABLE PHARYNGEAL O" #x12D6)
- ("ETHIOPIC SYLLABLE ZA" #x12D8)
- ("ETHIOPIC SYLLABLE ZU" #x12D9)
- ("ETHIOPIC SYLLABLE ZI" #x12DA)
- ("ETHIOPIC SYLLABLE ZAA" #x12DB)
- ("ETHIOPIC SYLLABLE ZEE" #x12DC)
- ("ETHIOPIC SYLLABLE ZE" #x12DD)
- ("ETHIOPIC SYLLABLE ZO" #x12DE)
- ("ETHIOPIC SYLLABLE ZWA" #x12DF)
- ("ETHIOPIC SYLLABLE ZHA" #x12E0)
- ("ETHIOPIC SYLLABLE ZHU" #x12E1)
- ("ETHIOPIC SYLLABLE ZHI" #x12E2)
- ("ETHIOPIC SYLLABLE ZHAA" #x12E3)
- ("ETHIOPIC SYLLABLE ZHEE" #x12E4)
- ("ETHIOPIC SYLLABLE ZHE" #x12E5)
- ("ETHIOPIC SYLLABLE ZHO" #x12E6)
- ("ETHIOPIC SYLLABLE ZHWA" #x12E7)
- ("ETHIOPIC SYLLABLE YA" #x12E8)
- ("ETHIOPIC SYLLABLE YU" #x12E9)
- ("ETHIOPIC SYLLABLE YI" #x12EA)
- ("ETHIOPIC SYLLABLE YAA" #x12EB)
- ("ETHIOPIC SYLLABLE YEE" #x12EC)
- ("ETHIOPIC SYLLABLE YE" #x12ED)
- ("ETHIOPIC SYLLABLE YO" #x12EE)
- ("ETHIOPIC SYLLABLE DA" #x12F0)
- ("ETHIOPIC SYLLABLE DU" #x12F1)
- ("ETHIOPIC SYLLABLE DI" #x12F2)
- ("ETHIOPIC SYLLABLE DAA" #x12F3)
- ("ETHIOPIC SYLLABLE DEE" #x12F4)
- ("ETHIOPIC SYLLABLE DE" #x12F5)
- ("ETHIOPIC SYLLABLE DO" #x12F6)
- ("ETHIOPIC SYLLABLE DWA" #x12F7)
- ("ETHIOPIC SYLLABLE DDA" #x12F8)
- ("ETHIOPIC SYLLABLE DDU" #x12F9)
- ("ETHIOPIC SYLLABLE DDI" #x12FA)
- ("ETHIOPIC SYLLABLE DDAA" #x12FB)
- ("ETHIOPIC SYLLABLE DDEE" #x12FC)
- ("ETHIOPIC SYLLABLE DDE" #x12FD)
- ("ETHIOPIC SYLLABLE DDO" #x12FE)
- ("ETHIOPIC SYLLABLE DDWA" #x12FF)
- ("ETHIOPIC SYLLABLE JA" #x1300)
- ("ETHIOPIC SYLLABLE JU" #x1301)
- ("ETHIOPIC SYLLABLE JI" #x1302)
- ("ETHIOPIC SYLLABLE JAA" #x1303)
- ("ETHIOPIC SYLLABLE JEE" #x1304)
- ("ETHIOPIC SYLLABLE JE" #x1305)
- ("ETHIOPIC SYLLABLE JO" #x1306)
- ("ETHIOPIC SYLLABLE JWA" #x1307)
- ("ETHIOPIC SYLLABLE GA" #x1308)
- ("ETHIOPIC SYLLABLE GU" #x1309)
- ("ETHIOPIC SYLLABLE GI" #x130A)
- ("ETHIOPIC SYLLABLE GAA" #x130B)
- ("ETHIOPIC SYLLABLE GEE" #x130C)
- ("ETHIOPIC SYLLABLE GE" #x130D)
- ("ETHIOPIC SYLLABLE GO" #x130E)
- ("ETHIOPIC SYLLABLE GWA" #x1310)
- ("ETHIOPIC SYLLABLE GWI" #x1312)
- ("ETHIOPIC SYLLABLE GWAA" #x1313)
- ("ETHIOPIC SYLLABLE GWEE" #x1314)
- ("ETHIOPIC SYLLABLE GWE" #x1315)
- ("ETHIOPIC SYLLABLE GGA" #x1318)
- ("ETHIOPIC SYLLABLE GGU" #x1319)
- ("ETHIOPIC SYLLABLE GGI" #x131A)
- ("ETHIOPIC SYLLABLE GGAA" #x131B)
- ("ETHIOPIC SYLLABLE GGEE" #x131C)
- ("ETHIOPIC SYLLABLE GGE" #x131D)
- ("ETHIOPIC SYLLABLE GGO" #x131E)
- ("ETHIOPIC SYLLABLE THA" #x1320)
- ("ETHIOPIC SYLLABLE THU" #x1321)
- ("ETHIOPIC SYLLABLE THI" #x1322)
- ("ETHIOPIC SYLLABLE THAA" #x1323)
- ("ETHIOPIC SYLLABLE THEE" #x1324)
- ("ETHIOPIC SYLLABLE THE" #x1325)
- ("ETHIOPIC SYLLABLE THO" #x1326)
- ("ETHIOPIC SYLLABLE THWA" #x1327)
- ("ETHIOPIC SYLLABLE CHA" #x1328)
- ("ETHIOPIC SYLLABLE CHU" #x1329)
- ("ETHIOPIC SYLLABLE CHI" #x132A)
- ("ETHIOPIC SYLLABLE CHAA" #x132B)
- ("ETHIOPIC SYLLABLE CHEE" #x132C)
- ("ETHIOPIC SYLLABLE CHE" #x132D)
- ("ETHIOPIC SYLLABLE CHO" #x132E)
- ("ETHIOPIC SYLLABLE CHWA" #x132F)
- ("ETHIOPIC SYLLABLE PHA" #x1330)
- ("ETHIOPIC SYLLABLE PHU" #x1331)
- ("ETHIOPIC SYLLABLE PHI" #x1332)
- ("ETHIOPIC SYLLABLE PHAA" #x1333)
- ("ETHIOPIC SYLLABLE PHEE" #x1334)
- ("ETHIOPIC SYLLABLE PHE" #x1335)
- ("ETHIOPIC SYLLABLE PHO" #x1336)
- ("ETHIOPIC SYLLABLE PHWA" #x1337)
- ("ETHIOPIC SYLLABLE TSA" #x1338)
- ("ETHIOPIC SYLLABLE TSU" #x1339)
- ("ETHIOPIC SYLLABLE TSI" #x133A)
- ("ETHIOPIC SYLLABLE TSAA" #x133B)
- ("ETHIOPIC SYLLABLE TSEE" #x133C)
- ("ETHIOPIC SYLLABLE TSE" #x133D)
- ("ETHIOPIC SYLLABLE TSO" #x133E)
- ("ETHIOPIC SYLLABLE TSWA" #x133F)
- ("ETHIOPIC SYLLABLE TZA" #x1340)
- ("ETHIOPIC SYLLABLE TZU" #x1341)
- ("ETHIOPIC SYLLABLE TZI" #x1342)
- ("ETHIOPIC SYLLABLE TZAA" #x1343)
- ("ETHIOPIC SYLLABLE TZEE" #x1344)
- ("ETHIOPIC SYLLABLE TZE" #x1345)
- ("ETHIOPIC SYLLABLE TZO" #x1346)
- ("ETHIOPIC SYLLABLE FA" #x1348)
- ("ETHIOPIC SYLLABLE FU" #x1349)
- ("ETHIOPIC SYLLABLE FI" #x134A)
- ("ETHIOPIC SYLLABLE FAA" #x134B)
- ("ETHIOPIC SYLLABLE FEE" #x134C)
- ("ETHIOPIC SYLLABLE FE" #x134D)
- ("ETHIOPIC SYLLABLE FO" #x134E)
- ("ETHIOPIC SYLLABLE FWA" #x134F)
- ("ETHIOPIC SYLLABLE PA" #x1350)
- ("ETHIOPIC SYLLABLE PU" #x1351)
- ("ETHIOPIC SYLLABLE PI" #x1352)
- ("ETHIOPIC SYLLABLE PAA" #x1353)
- ("ETHIOPIC SYLLABLE PEE" #x1354)
- ("ETHIOPIC SYLLABLE PE" #x1355)
- ("ETHIOPIC SYLLABLE PO" #x1356)
- ("ETHIOPIC SYLLABLE PWA" #x1357)
- ("ETHIOPIC SYLLABLE RYA" #x1358)
- ("ETHIOPIC SYLLABLE MYA" #x1359)
- ("ETHIOPIC SYLLABLE FYA" #x135A)
- ("ETHIOPIC WORDSPACE" #x1361)
- ("ETHIOPIC FULL STOP" #x1362)
- ("ETHIOPIC COMMA" #x1363)
- ("ETHIOPIC SEMICOLON" #x1364)
- ("ETHIOPIC COLON" #x1365)
- ("ETHIOPIC PREFACE COLON" #x1366)
- ("ETHIOPIC QUESTION MARK" #x1367)
- ("ETHIOPIC PARAGRAPH SEPARATOR" #x1368)
- ("ETHIOPIC DIGIT ONE" #x1369)
- ("ETHIOPIC DIGIT TWO" #x136A)
- ("ETHIOPIC DIGIT THREE" #x136B)
- ("ETHIOPIC DIGIT FOUR" #x136C)
- ("ETHIOPIC DIGIT FIVE" #x136D)
- ("ETHIOPIC DIGIT SIX" #x136E)
- ("ETHIOPIC DIGIT SEVEN" #x136F)
- ("ETHIOPIC DIGIT EIGHT" #x1370)
- ("ETHIOPIC DIGIT NINE" #x1371)
- ("ETHIOPIC NUMBER TEN" #x1372)
- ("ETHIOPIC NUMBER TWENTY" #x1373)
- ("ETHIOPIC NUMBER THIRTY" #x1374)
- ("ETHIOPIC NUMBER FORTY" #x1375)
- ("ETHIOPIC NUMBER FIFTY" #x1376)
- ("ETHIOPIC NUMBER SIXTY" #x1377)
- ("ETHIOPIC NUMBER SEVENTY" #x1378)
- ("ETHIOPIC NUMBER EIGHTY" #x1379)
- ("ETHIOPIC NUMBER NINETY" #x137A)
- ("ETHIOPIC NUMBER HUNDRED" #x137B)
- ("ETHIOPIC NUMBER TEN THOUSAND" #x137C)
- ))
-
diff --git a/etc/nxml/013A0-013FF.el b/etc/nxml/013A0-013FF.el
deleted file mode 100644
index 392b4f267a..0000000000
--- a/etc/nxml/013A0-013FF.el
+++ /dev/null
@@ -1,88 +0,0 @@
-(nxml-define-char-name-set 'cherokee
- '(("CHEROKEE LETTER A" #x13A0)
- ("CHEROKEE LETTER E" #x13A1)
- ("CHEROKEE LETTER I" #x13A2)
- ("CHEROKEE LETTER O" #x13A3)
- ("CHEROKEE LETTER U" #x13A4)
- ("CHEROKEE LETTER V" #x13A5)
- ("CHEROKEE LETTER GA" #x13A6)
- ("CHEROKEE LETTER KA" #x13A7)
- ("CHEROKEE LETTER GE" #x13A8)
- ("CHEROKEE LETTER GI" #x13A9)
- ("CHEROKEE LETTER GO" #x13AA)
- ("CHEROKEE LETTER GU" #x13AB)
- ("CHEROKEE LETTER GV" #x13AC)
- ("CHEROKEE LETTER HA" #x13AD)
- ("CHEROKEE LETTER HE" #x13AE)
- ("CHEROKEE LETTER HI" #x13AF)
- ("CHEROKEE LETTER HO" #x13B0)
- ("CHEROKEE LETTER HU" #x13B1)
- ("CHEROKEE LETTER HV" #x13B2)
- ("CHEROKEE LETTER LA" #x13B3)
- ("CHEROKEE LETTER LE" #x13B4)
- ("CHEROKEE LETTER LI" #x13B5)
- ("CHEROKEE LETTER LO" #x13B6)
- ("CHEROKEE LETTER LU" #x13B7)
- ("CHEROKEE LETTER LV" #x13B8)
- ("CHEROKEE LETTER MA" #x13B9)
- ("CHEROKEE LETTER ME" #x13BA)
- ("CHEROKEE LETTER MI" #x13BB)
- ("CHEROKEE LETTER MO" #x13BC)
- ("CHEROKEE LETTER MU" #x13BD)
- ("CHEROKEE LETTER NA" #x13BE)
- ("CHEROKEE LETTER HNA" #x13BF)
- ("CHEROKEE LETTER NAH" #x13C0)
- ("CHEROKEE LETTER NE" #x13C1)
- ("CHEROKEE LETTER NI" #x13C2)
- ("CHEROKEE LETTER NO" #x13C3)
- ("CHEROKEE LETTER NU" #x13C4)
- ("CHEROKEE LETTER NV" #x13C5)
- ("CHEROKEE LETTER QUA" #x13C6)
- ("CHEROKEE LETTER QUE" #x13C7)
- ("CHEROKEE LETTER QUI" #x13C8)
- ("CHEROKEE LETTER QUO" #x13C9)
- ("CHEROKEE LETTER QUU" #x13CA)
- ("CHEROKEE LETTER QUV" #x13CB)
- ("CHEROKEE LETTER SA" #x13CC)
- ("CHEROKEE LETTER S" #x13CD)
- ("CHEROKEE LETTER SE" #x13CE)
- ("CHEROKEE LETTER SI" #x13CF)
- ("CHEROKEE LETTER SO" #x13D0)
- ("CHEROKEE LETTER SU" #x13D1)
- ("CHEROKEE LETTER SV" #x13D2)
- ("CHEROKEE LETTER DA" #x13D3)
- ("CHEROKEE LETTER TA" #x13D4)
- ("CHEROKEE LETTER DE" #x13D5)
- ("CHEROKEE LETTER TE" #x13D6)
- ("CHEROKEE LETTER DI" #x13D7)
- ("CHEROKEE LETTER TI" #x13D8)
- ("CHEROKEE LETTER DO" #x13D9)
- ("CHEROKEE LETTER DU" #x13DA)
- ("CHEROKEE LETTER DV" #x13DB)
- ("CHEROKEE LETTER DLA" #x13DC)
- ("CHEROKEE LETTER TLA" #x13DD)
- ("CHEROKEE LETTER TLE" #x13DE)
- ("CHEROKEE LETTER TLI" #x13DF)
- ("CHEROKEE LETTER TLO" #x13E0)
- ("CHEROKEE LETTER TLU" #x13E1)
- ("CHEROKEE LETTER TLV" #x13E2)
- ("CHEROKEE LETTER TSA" #x13E3)
- ("CHEROKEE LETTER TSE" #x13E4)
- ("CHEROKEE LETTER TSI" #x13E5)
- ("CHEROKEE LETTER TSO" #x13E6)
- ("CHEROKEE LETTER TSU" #x13E7)
- ("CHEROKEE LETTER TSV" #x13E8)
- ("CHEROKEE LETTER WA" #x13E9)
- ("CHEROKEE LETTER WE" #x13EA)
- ("CHEROKEE LETTER WI" #x13EB)
- ("CHEROKEE LETTER WO" #x13EC)
- ("CHEROKEE LETTER WU" #x13ED)
- ("CHEROKEE LETTER WV" #x13EE)
- ("CHEROKEE LETTER YA" #x13EF)
- ("CHEROKEE LETTER YE" #x13F0)
- ("CHEROKEE LETTER YI" #x13F1)
- ("CHEROKEE LETTER YO" #x13F2)
- ("CHEROKEE LETTER YU" #x13F3)
- ("CHEROKEE LETTER YV" #x13F4)
- ))
-
diff --git a/etc/nxml/01400-0167F.el b/etc/nxml/01400-0167F.el
deleted file mode 100644
index 996d5b46d6..0000000000
--- a/etc/nxml/01400-0167F.el
+++ /dev/null
@@ -1,633 +0,0 @@
-(nxml-define-char-name-set 'unified-canadian-aboriginal-syllabics
- '(("CANADIAN SYLLABICS E" #x1401)
- ("CANADIAN SYLLABICS AAI" #x1402)
- ("CANADIAN SYLLABICS I" #x1403)
- ("CANADIAN SYLLABICS II" #x1404)
- ("CANADIAN SYLLABICS O" #x1405)
- ("CANADIAN SYLLABICS OO" #x1406)
- ("CANADIAN SYLLABICS Y-CREE OO" #x1407)
- ("CANADIAN SYLLABICS CARRIER EE" #x1408)
- ("CANADIAN SYLLABICS CARRIER I" #x1409)
- ("CANADIAN SYLLABICS A" #x140A)
- ("CANADIAN SYLLABICS AA" #x140B)
- ("CANADIAN SYLLABICS WE" #x140C)
- ("CANADIAN SYLLABICS WEST-CREE WE" #x140D)
- ("CANADIAN SYLLABICS WI" #x140E)
- ("CANADIAN SYLLABICS WEST-CREE WI" #x140F)
- ("CANADIAN SYLLABICS WII" #x1410)
- ("CANADIAN SYLLABICS WEST-CREE WII" #x1411)
- ("CANADIAN SYLLABICS WO" #x1412)
- ("CANADIAN SYLLABICS WEST-CREE WO" #x1413)
- ("CANADIAN SYLLABICS WOO" #x1414)
- ("CANADIAN SYLLABICS WEST-CREE WOO" #x1415)
- ("CANADIAN SYLLABICS NASKAPI WOO" #x1416)
- ("CANADIAN SYLLABICS WA" #x1417)
- ("CANADIAN SYLLABICS WEST-CREE WA" #x1418)
- ("CANADIAN SYLLABICS WAA" #x1419)
- ("CANADIAN SYLLABICS WEST-CREE WAA" #x141A)
- ("CANADIAN SYLLABICS NASKAPI WAA" #x141B)
- ("CANADIAN SYLLABICS AI" #x141C)
- ("CANADIAN SYLLABICS Y-CREE W" #x141D)
- ("CANADIAN SYLLABICS GLOTTAL STOP" #x141E)
- ("CANADIAN SYLLABICS FINAL ACUTE" #x141F)
- ("CANADIAN SYLLABICS FINAL GRAVE" #x1420)
- ("CANADIAN SYLLABICS FINAL BOTTOM HALF RING" #x1421)
- ("CANADIAN SYLLABICS FINAL TOP HALF RING" #x1422)
- ("CANADIAN SYLLABICS FINAL RIGHT HALF RING" #x1423)
- ("CANADIAN SYLLABICS FINAL RING" #x1424)
- ("CANADIAN SYLLABICS FINAL DOUBLE ACUTE" #x1425)
- ("CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES" #x1426)
- ("CANADIAN SYLLABICS FINAL MIDDLE DOT" #x1427)
- ("CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE" #x1428)
- ("CANADIAN SYLLABICS FINAL PLUS" #x1429)
- ("CANADIAN SYLLABICS FINAL DOWN TACK" #x142A)
- ("CANADIAN SYLLABICS EN" #x142B)
- ("CANADIAN SYLLABICS IN" #x142C)
- ("CANADIAN SYLLABICS ON" #x142D)
- ("CANADIAN SYLLABICS AN" #x142E)
- ("CANADIAN SYLLABICS PE" #x142F)
- ("CANADIAN SYLLABICS PAAI" #x1430)
- ("CANADIAN SYLLABICS PI" #x1431)
- ("CANADIAN SYLLABICS PII" #x1432)
- ("CANADIAN SYLLABICS PO" #x1433)
- ("CANADIAN SYLLABICS POO" #x1434)
- ("CANADIAN SYLLABICS Y-CREE POO" #x1435)
- ("CANADIAN SYLLABICS CARRIER HEE" #x1436)
- ("CANADIAN SYLLABICS CARRIER HI" #x1437)
- ("CANADIAN SYLLABICS PA" #x1438)
- ("CANADIAN SYLLABICS PAA" #x1439)
- ("CANADIAN SYLLABICS PWE" #x143A)
- ("CANADIAN SYLLABICS WEST-CREE PWE" #x143B)
- ("CANADIAN SYLLABICS PWI" #x143C)
- ("CANADIAN SYLLABICS WEST-CREE PWI" #x143D)
- ("CANADIAN SYLLABICS PWII" #x143E)
- ("CANADIAN SYLLABICS WEST-CREE PWII" #x143F)
- ("CANADIAN SYLLABICS PWO" #x1440)
- ("CANADIAN SYLLABICS WEST-CREE PWO" #x1441)
- ("CANADIAN SYLLABICS PWOO" #x1442)
- ("CANADIAN SYLLABICS WEST-CREE PWOO" #x1443)
- ("CANADIAN SYLLABICS PWA" #x1444)
- ("CANADIAN SYLLABICS WEST-CREE PWA" #x1445)
- ("CANADIAN SYLLABICS PWAA" #x1446)
- ("CANADIAN SYLLABICS WEST-CREE PWAA" #x1447)
- ("CANADIAN SYLLABICS Y-CREE PWAA" #x1448)
- ("CANADIAN SYLLABICS P" #x1449)
- ("CANADIAN SYLLABICS WEST-CREE P" #x144A)
- ("CANADIAN SYLLABICS CARRIER H" #x144B)
- ("CANADIAN SYLLABICS TE" #x144C)
- ("CANADIAN SYLLABICS TAAI" #x144D)
- ("CANADIAN SYLLABICS TI" #x144E)
- ("CANADIAN SYLLABICS TII" #x144F)
- ("CANADIAN SYLLABICS TO" #x1450)
- ("CANADIAN SYLLABICS TOO" #x1451)
- ("CANADIAN SYLLABICS Y-CREE TOO" #x1452)
- ("CANADIAN SYLLABICS CARRIER DEE" #x1453)
- ("CANADIAN SYLLABICS CARRIER DI" #x1454)
- ("CANADIAN SYLLABICS TA" #x1455)
- ("CANADIAN SYLLABICS TAA" #x1456)
- ("CANADIAN SYLLABICS TWE" #x1457)
- ("CANADIAN SYLLABICS WEST-CREE TWE" #x1458)
- ("CANADIAN SYLLABICS TWI" #x1459)
- ("CANADIAN SYLLABICS WEST-CREE TWI" #x145A)
- ("CANADIAN SYLLABICS TWII" #x145B)
- ("CANADIAN SYLLABICS WEST-CREE TWII" #x145C)
- ("CANADIAN SYLLABICS TWO" #x145D)
- ("CANADIAN SYLLABICS WEST-CREE TWO" #x145E)
- ("CANADIAN SYLLABICS TWOO" #x145F)
- ("CANADIAN SYLLABICS WEST-CREE TWOO" #x1460)
- ("CANADIAN SYLLABICS TWA" #x1461)
- ("CANADIAN SYLLABICS WEST-CREE TWA" #x1462)
- ("CANADIAN SYLLABICS TWAA" #x1463)
- ("CANADIAN SYLLABICS WEST-CREE TWAA" #x1464)
- ("CANADIAN SYLLABICS NASKAPI TWAA" #x1465)
- ("CANADIAN SYLLABICS T" #x1466)
- ("CANADIAN SYLLABICS TTE" #x1467)
- ("CANADIAN SYLLABICS TTI" #x1468)
- ("CANADIAN SYLLABICS TTO" #x1469)
- ("CANADIAN SYLLABICS TTA" #x146A)
- ("CANADIAN SYLLABICS KE" #x146B)
- ("CANADIAN SYLLABICS KAAI" #x146C)
- ("CANADIAN SYLLABICS KI" #x146D)
- ("CANADIAN SYLLABICS KII" #x146E)
- ("CANADIAN SYLLABICS KO" #x146F)
- ("CANADIAN SYLLABICS KOO" #x1470)
- ("CANADIAN SYLLABICS Y-CREE KOO" #x1471)
- ("CANADIAN SYLLABICS KA" #x1472)
- ("CANADIAN SYLLABICS KAA" #x1473)
- ("CANADIAN SYLLABICS KWE" #x1474)
- ("CANADIAN SYLLABICS WEST-CREE KWE" #x1475)
- ("CANADIAN SYLLABICS KWI" #x1476)
- ("CANADIAN SYLLABICS WEST-CREE KWI" #x1477)
- ("CANADIAN SYLLABICS KWII" #x1478)
- ("CANADIAN SYLLABICS WEST-CREE KWII" #x1479)
- ("CANADIAN SYLLABICS KWO" #x147A)
- ("CANADIAN SYLLABICS WEST-CREE KWO" #x147B)
- ("CANADIAN SYLLABICS KWOO" #x147C)
- ("CANADIAN SYLLABICS WEST-CREE KWOO" #x147D)
- ("CANADIAN SYLLABICS KWA" #x147E)
- ("CANADIAN SYLLABICS WEST-CREE KWA" #x147F)
- ("CANADIAN SYLLABICS KWAA" #x1480)
- ("CANADIAN SYLLABICS WEST-CREE KWAA" #x1481)
- ("CANADIAN SYLLABICS NASKAPI KWAA" #x1482)
- ("CANADIAN SYLLABICS K" #x1483)
- ("CANADIAN SYLLABICS KW" #x1484)
- ("CANADIAN SYLLABICS SOUTH-SLAVEY KEH" #x1485)
- ("CANADIAN SYLLABICS SOUTH-SLAVEY KIH" #x1486)
- ("CANADIAN SYLLABICS SOUTH-SLAVEY KOH" #x1487)
- ("CANADIAN SYLLABICS SOUTH-SLAVEY KAH" #x1488)
- ("CANADIAN SYLLABICS CE" #x1489)
- ("CANADIAN SYLLABICS CAAI" #x148A)
- ("CANADIAN SYLLABICS CI" #x148B)
- ("CANADIAN SYLLABICS CII" #x148C)
- ("CANADIAN SYLLABICS CO" #x148D)
- ("CANADIAN SYLLABICS COO" #x148E)
- ("CANADIAN SYLLABICS Y-CREE COO" #x148F)
- ("CANADIAN SYLLABICS CA" #x1490)
- ("CANADIAN SYLLABICS CAA" #x1491)
- ("CANADIAN SYLLABICS CWE" #x1492)
- ("CANADIAN SYLLABICS WEST-CREE CWE" #x1493)
- ("CANADIAN SYLLABICS CWI" #x1494)
- ("CANADIAN SYLLABICS WEST-CREE CWI" #x1495)
- ("CANADIAN SYLLABICS CWII" #x1496)
- ("CANADIAN SYLLABICS WEST-CREE CWII" #x1497)
- ("CANADIAN SYLLABICS CWO" #x1498)
- ("CANADIAN SYLLABICS WEST-CREE CWO" #x1499)
- ("CANADIAN SYLLABICS CWOO" #x149A)
- ("CANADIAN SYLLABICS WEST-CREE CWOO" #x149B)
- ("CANADIAN SYLLABICS CWA" #x149C)
- ("CANADIAN SYLLABICS WEST-CREE CWA" #x149D)
- ("CANADIAN SYLLABICS CWAA" #x149E)
- ("CANADIAN SYLLABICS WEST-CREE CWAA" #x149F)
- ("CANADIAN SYLLABICS NASKAPI CWAA" #x14A0)
- ("CANADIAN SYLLABICS C" #x14A1)
- ("CANADIAN SYLLABICS SAYISI TH" #x14A2)
- ("CANADIAN SYLLABICS ME" #x14A3)
- ("CANADIAN SYLLABICS MAAI" #x14A4)
- ("CANADIAN SYLLABICS MI" #x14A5)
- ("CANADIAN SYLLABICS MII" #x14A6)
- ("CANADIAN SYLLABICS MO" #x14A7)
- ("CANADIAN SYLLABICS MOO" #x14A8)
- ("CANADIAN SYLLABICS Y-CREE MOO" #x14A9)
- ("CANADIAN SYLLABICS MA" #x14AA)
- ("CANADIAN SYLLABICS MAA" #x14AB)
- ("CANADIAN SYLLABICS MWE" #x14AC)
- ("CANADIAN SYLLABICS WEST-CREE MWE" #x14AD)
- ("CANADIAN SYLLABICS MWI" #x14AE)
- ("CANADIAN SYLLABICS WEST-CREE MWI" #x14AF)
- ("CANADIAN SYLLABICS MWII" #x14B0)
- ("CANADIAN SYLLABICS WEST-CREE MWII" #x14B1)
- ("CANADIAN SYLLABICS MWO" #x14B2)
- ("CANADIAN SYLLABICS WEST-CREE MWO" #x14B3)
- ("CANADIAN SYLLABICS MWOO" #x14B4)
- ("CANADIAN SYLLABICS WEST-CREE MWOO" #x14B5)
- ("CANADIAN SYLLABICS MWA" #x14B6)
- ("CANADIAN SYLLABICS WEST-CREE MWA" #x14B7)
- ("CANADIAN SYLLABICS MWAA" #x14B8)
- ("CANADIAN SYLLABICS WEST-CREE MWAA" #x14B9)
- ("CANADIAN SYLLABICS NASKAPI MWAA" #x14BA)
- ("CANADIAN SYLLABICS M" #x14BB)
- ("CANADIAN SYLLABICS WEST-CREE M" #x14BC)
- ("CANADIAN SYLLABICS MH" #x14BD)
- ("CANADIAN SYLLABICS ATHAPASCAN M" #x14BE)
- ("CANADIAN SYLLABICS SAYISI M" #x14BF)
- ("CANADIAN SYLLABICS NE" #x14C0)
- ("CANADIAN SYLLABICS NAAI" #x14C1)
- ("CANADIAN SYLLABICS NI" #x14C2)
- ("CANADIAN SYLLABICS NII" #x14C3)
- ("CANADIAN SYLLABICS NO" #x14C4)
- ("CANADIAN SYLLABICS NOO" #x14C5)
- ("CANADIAN SYLLABICS Y-CREE NOO" #x14C6)
- ("CANADIAN SYLLABICS NA" #x14C7)
- ("CANADIAN SYLLABICS NAA" #x14C8)
- ("CANADIAN SYLLABICS NWE" #x14C9)
- ("CANADIAN SYLLABICS WEST-CREE NWE" #x14CA)
- ("CANADIAN SYLLABICS NWA" #x14CB)
- ("CANADIAN SYLLABICS WEST-CREE NWA" #x14CC)
- ("CANADIAN SYLLABICS NWAA" #x14CD)
- ("CANADIAN SYLLABICS WEST-CREE NWAA" #x14CE)
- ("CANADIAN SYLLABICS NASKAPI NWAA" #x14CF)
- ("CANADIAN SYLLABICS N" #x14D0)
- ("CANADIAN SYLLABICS CARRIER NG" #x14D1)
- ("CANADIAN SYLLABICS NH" #x14D2)
- ("CANADIAN SYLLABICS LE" #x14D3)
- ("CANADIAN SYLLABICS LAAI" #x14D4)
- ("CANADIAN SYLLABICS LI" #x14D5)
- ("CANADIAN SYLLABICS LII" #x14D6)
- ("CANADIAN SYLLABICS LO" #x14D7)
- ("CANADIAN SYLLABICS LOO" #x14D8)
- ("CANADIAN SYLLABICS Y-CREE LOO" #x14D9)
- ("CANADIAN SYLLABICS LA" #x14DA)
- ("CANADIAN SYLLABICS LAA" #x14DB)
- ("CANADIAN SYLLABICS LWE" #x14DC)
- ("CANADIAN SYLLABICS WEST-CREE LWE" #x14DD)
- ("CANADIAN SYLLABICS LWI" #x14DE)
- ("CANADIAN SYLLABICS WEST-CREE LWI" #x14DF)
- ("CANADIAN SYLLABICS LWII" #x14E0)
- ("CANADIAN SYLLABICS WEST-CREE LWII" #x14E1)
- ("CANADIAN SYLLABICS LWO" #x14E2)
- ("CANADIAN SYLLABICS WEST-CREE LWO" #x14E3)
- ("CANADIAN SYLLABICS LWOO" #x14E4)
- ("CANADIAN SYLLABICS WEST-CREE LWOO" #x14E5)
- ("CANADIAN SYLLABICS LWA" #x14E6)
- ("CANADIAN SYLLABICS WEST-CREE LWA" #x14E7)
- ("CANADIAN SYLLABICS LWAA" #x14E8)
- ("CANADIAN SYLLABICS WEST-CREE LWAA" #x14E9)
- ("CANADIAN SYLLABICS L" #x14EA)
- ("CANADIAN SYLLABICS WEST-CREE L" #x14EB)
- ("CANADIAN SYLLABICS MEDIAL L" #x14EC)
- ("CANADIAN SYLLABICS SE" #x14ED)
- ("CANADIAN SYLLABICS SAAI" #x14EE)
- ("CANADIAN SYLLABICS SI" #x14EF)
- ("CANADIAN SYLLABICS SII" #x14F0)
- ("CANADIAN SYLLABICS SO" #x14F1)
- ("CANADIAN SYLLABICS SOO" #x14F2)
- ("CANADIAN SYLLABICS Y-CREE SOO" #x14F3)
- ("CANADIAN SYLLABICS SA" #x14F4)
- ("CANADIAN SYLLABICS SAA" #x14F5)
- ("CANADIAN SYLLABICS SWE" #x14F6)
- ("CANADIAN SYLLABICS WEST-CREE SWE" #x14F7)
- ("CANADIAN SYLLABICS SWI" #x14F8)
- ("CANADIAN SYLLABICS WEST-CREE SWI" #x14F9)
- ("CANADIAN SYLLABICS SWII" #x14FA)
- ("CANADIAN SYLLABICS WEST-CREE SWII" #x14FB)
- ("CANADIAN SYLLABICS SWO" #x14FC)
- ("CANADIAN SYLLABICS WEST-CREE SWO" #x14FD)
- ("CANADIAN SYLLABICS SWOO" #x14FE)
- ("CANADIAN SYLLABICS WEST-CREE SWOO" #x14FF)
- ("CANADIAN SYLLABICS SWA" #x1500)
- ("CANADIAN SYLLABICS WEST-CREE SWA" #x1501)
- ("CANADIAN SYLLABICS SWAA" #x1502)
- ("CANADIAN SYLLABICS WEST-CREE SWAA" #x1503)
- ("CANADIAN SYLLABICS NASKAPI SWAA" #x1504)
- ("CANADIAN SYLLABICS S" #x1505)
- ("CANADIAN SYLLABICS ATHAPASCAN S" #x1506)
- ("CANADIAN SYLLABICS SW" #x1507)
- ("CANADIAN SYLLABICS BLACKFOOT S" #x1508)
- ("CANADIAN SYLLABICS MOOSE-CREE SK" #x1509)
- ("CANADIAN SYLLABICS NASKAPI SKW" #x150A)
- ("CANADIAN SYLLABICS NASKAPI S-W" #x150B)
- ("CANADIAN SYLLABICS NASKAPI SPWA" #x150C)
- ("CANADIAN SYLLABICS NASKAPI STWA" #x150D)
- ("CANADIAN SYLLABICS NASKAPI SKWA" #x150E)
- ("CANADIAN SYLLABICS NASKAPI SCWA" #x150F)
- ("CANADIAN SYLLABICS SHE" #x1510)
- ("CANADIAN SYLLABICS SHI" #x1511)
- ("CANADIAN SYLLABICS SHII" #x1512)
- ("CANADIAN SYLLABICS SHO" #x1513)
- ("CANADIAN SYLLABICS SHOO" #x1514)
- ("CANADIAN SYLLABICS SHA" #x1515)
- ("CANADIAN SYLLABICS SHAA" #x1516)
- ("CANADIAN SYLLABICS SHWE" #x1517)
- ("CANADIAN SYLLABICS WEST-CREE SHWE" #x1518)
- ("CANADIAN SYLLABICS SHWI" #x1519)
- ("CANADIAN SYLLABICS WEST-CREE SHWI" #x151A)
- ("CANADIAN SYLLABICS SHWII" #x151B)
- ("CANADIAN SYLLABICS WEST-CREE SHWII" #x151C)
- ("CANADIAN SYLLABICS SHWO" #x151D)
- ("CANADIAN SYLLABICS WEST-CREE SHWO" #x151E)
- ("CANADIAN SYLLABICS SHWOO" #x151F)
- ("CANADIAN SYLLABICS WEST-CREE SHWOO" #x1520)
- ("CANADIAN SYLLABICS SHWA" #x1521)
- ("CANADIAN SYLLABICS WEST-CREE SHWA" #x1522)
- ("CANADIAN SYLLABICS SHWAA" #x1523)
- ("CANADIAN SYLLABICS WEST-CREE SHWAA" #x1524)
- ("CANADIAN SYLLABICS SH" #x1525)
- ("CANADIAN SYLLABICS YE" #x1526)
- ("CANADIAN SYLLABICS YAAI" #x1527)
- ("CANADIAN SYLLABICS YI" #x1528)
- ("CANADIAN SYLLABICS YII" #x1529)
- ("CANADIAN SYLLABICS YO" #x152A)
- ("CANADIAN SYLLABICS YOO" #x152B)
- ("CANADIAN SYLLABICS Y-CREE YOO" #x152C)
- ("CANADIAN SYLLABICS YA" #x152D)
- ("CANADIAN SYLLABICS YAA" #x152E)
- ("CANADIAN SYLLABICS YWE" #x152F)
- ("CANADIAN SYLLABICS WEST-CREE YWE" #x1530)
- ("CANADIAN SYLLABICS YWI" #x1531)
- ("CANADIAN SYLLABICS WEST-CREE YWI" #x1532)
- ("CANADIAN SYLLABICS YWII" #x1533)
- ("CANADIAN SYLLABICS WEST-CREE YWII" #x1534)
- ("CANADIAN SYLLABICS YWO" #x1535)
- ("CANADIAN SYLLABICS WEST-CREE YWO" #x1536)
- ("CANADIAN SYLLABICS YWOO" #x1537)
- ("CANADIAN SYLLABICS WEST-CREE YWOO" #x1538)
- ("CANADIAN SYLLABICS YWA" #x1539)
- ("CANADIAN SYLLABICS WEST-CREE YWA" #x153A)
- ("CANADIAN SYLLABICS YWAA" #x153B)
- ("CANADIAN SYLLABICS WEST-CREE YWAA" #x153C)
- ("CANADIAN SYLLABICS NASKAPI YWAA" #x153D)
- ("CANADIAN SYLLABICS Y" #x153E)
- ("CANADIAN SYLLABICS BIBLE-CREE Y" #x153F)
- ("CANADIAN SYLLABICS WEST-CREE Y" #x1540)
- ("CANADIAN SYLLABICS SAYISI YI" #x1541)
- ("CANADIAN SYLLABICS RE" #x1542)
- ("CANADIAN SYLLABICS R-CREE RE" #x1543)
- ("CANADIAN SYLLABICS WEST-CREE LE" #x1544)
- ("CANADIAN SYLLABICS RAAI" #x1545)
- ("CANADIAN SYLLABICS RI" #x1546)
- ("CANADIAN SYLLABICS RII" #x1547)
- ("CANADIAN SYLLABICS RO" #x1548)
- ("CANADIAN SYLLABICS ROO" #x1549)
- ("CANADIAN SYLLABICS WEST-CREE LO" #x154A)
- ("CANADIAN SYLLABICS RA" #x154B)
- ("CANADIAN SYLLABICS RAA" #x154C)
- ("CANADIAN SYLLABICS WEST-CREE LA" #x154D)
- ("CANADIAN SYLLABICS RWAA" #x154E)
- ("CANADIAN SYLLABICS WEST-CREE RWAA" #x154F)
- ("CANADIAN SYLLABICS R" #x1550)
- ("CANADIAN SYLLABICS WEST-CREE R" #x1551)
- ("CANADIAN SYLLABICS MEDIAL R" #x1552)
- ("CANADIAN SYLLABICS FE" #x1553)
- ("CANADIAN SYLLABICS FAAI" #x1554)
- ("CANADIAN SYLLABICS FI" #x1555)
- ("CANADIAN SYLLABICS FII" #x1556)
- ("CANADIAN SYLLABICS FO" #x1557)
- ("CANADIAN SYLLABICS FOO" #x1558)
- ("CANADIAN SYLLABICS FA" #x1559)
- ("CANADIAN SYLLABICS FAA" #x155A)
- ("CANADIAN SYLLABICS FWAA" #x155B)
- ("CANADIAN SYLLABICS WEST-CREE FWAA" #x155C)
- ("CANADIAN SYLLABICS F" #x155D)
- ("CANADIAN SYLLABICS THE" #x155E)
- ("CANADIAN SYLLABICS N-CREE THE" #x155F)
- ("CANADIAN SYLLABICS THI" #x1560)
- ("CANADIAN SYLLABICS N-CREE THI" #x1561)
- ("CANADIAN SYLLABICS THII" #x1562)
- ("CANADIAN SYLLABICS N-CREE THII" #x1563)
- ("CANADIAN SYLLABICS THO" #x1564)
- ("CANADIAN SYLLABICS THOO" #x1565)
- ("CANADIAN SYLLABICS THA" #x1566)
- ("CANADIAN SYLLABICS THAA" #x1567)
- ("CANADIAN SYLLABICS THWAA" #x1568)
- ("CANADIAN SYLLABICS WEST-CREE THWAA" #x1569)
- ("CANADIAN SYLLABICS TH" #x156A)
- ("CANADIAN SYLLABICS TTHE" #x156B)
- ("CANADIAN SYLLABICS TTHI" #x156C)
- ("CANADIAN SYLLABICS TTHO" #x156D)
- ("CANADIAN SYLLABICS TTHA" #x156E)
- ("CANADIAN SYLLABICS TTH" #x156F)
- ("CANADIAN SYLLABICS TYE" #x1570)
- ("CANADIAN SYLLABICS TYI" #x1571)
- ("CANADIAN SYLLABICS TYO" #x1572)
- ("CANADIAN SYLLABICS TYA" #x1573)
- ("CANADIAN SYLLABICS NUNAVIK HE" #x1574)
- ("CANADIAN SYLLABICS NUNAVIK HI" #x1575)
- ("CANADIAN SYLLABICS NUNAVIK HII" #x1576)
- ("CANADIAN SYLLABICS NUNAVIK HO" #x1577)
- ("CANADIAN SYLLABICS NUNAVIK HOO" #x1578)
- ("CANADIAN SYLLABICS NUNAVIK HA" #x1579)
- ("CANADIAN SYLLABICS NUNAVIK HAA" #x157A)
- ("CANADIAN SYLLABICS NUNAVIK H" #x157B)
- ("CANADIAN SYLLABICS NUNAVUT H" #x157C)
- ("CANADIAN SYLLABICS HK" #x157D)
- ("CANADIAN SYLLABICS QAAI" #x157E)
- ("CANADIAN SYLLABICS QI" #x157F)
- ("CANADIAN SYLLABICS QII" #x1580)
- ("CANADIAN SYLLABICS QO" #x1581)
- ("CANADIAN SYLLABICS QOO" #x1582)
- ("CANADIAN SYLLABICS QA" #x1583)
- ("CANADIAN SYLLABICS QAA" #x1584)
- ("CANADIAN SYLLABICS Q" #x1585)
- ("CANADIAN SYLLABICS TLHE" #x1586)
- ("CANADIAN SYLLABICS TLHI" #x1587)
- ("CANADIAN SYLLABICS TLHO" #x1588)
- ("CANADIAN SYLLABICS TLHA" #x1589)
- ("CANADIAN SYLLABICS WEST-CREE RE" #x158A)
- ("CANADIAN SYLLABICS WEST-CREE RI" #x158B)
- ("CANADIAN SYLLABICS WEST-CREE RO" #x158C)
- ("CANADIAN SYLLABICS WEST-CREE RA" #x158D)
- ("CANADIAN SYLLABICS NGAAI" #x158E)
- ("CANADIAN SYLLABICS NGI" #x158F)
- ("CANADIAN SYLLABICS NGII" #x1590)
- ("CANADIAN SYLLABICS NGO" #x1591)
- ("CANADIAN SYLLABICS NGOO" #x1592)
- ("CANADIAN SYLLABICS NGA" #x1593)
- ("CANADIAN SYLLABICS NGAA" #x1594)
- ("CANADIAN SYLLABICS NG" #x1595)
- ("CANADIAN SYLLABICS NNG" #x1596)
- ("CANADIAN SYLLABICS SAYISI SHE" #x1597)
- ("CANADIAN SYLLABICS SAYISI SHI" #x1598)
- ("CANADIAN SYLLABICS SAYISI SHO" #x1599)
- ("CANADIAN SYLLABICS SAYISI SHA" #x159A)
- ("CANADIAN SYLLABICS WOODS-CREE THE" #x159B)
- ("CANADIAN SYLLABICS WOODS-CREE THI" #x159C)
- ("CANADIAN SYLLABICS WOODS-CREE THO" #x159D)
- ("CANADIAN SYLLABICS WOODS-CREE THA" #x159E)
- ("CANADIAN SYLLABICS WOODS-CREE TH" #x159F)
- ("CANADIAN SYLLABICS LHI" #x15A0)
- ("CANADIAN SYLLABICS LHII" #x15A1)
- ("CANADIAN SYLLABICS LHO" #x15A2)
- ("CANADIAN SYLLABICS LHOO" #x15A3)
- ("CANADIAN SYLLABICS LHA" #x15A4)
- ("CANADIAN SYLLABICS LHAA" #x15A5)
- ("CANADIAN SYLLABICS LH" #x15A6)
- ("CANADIAN SYLLABICS TH-CREE THE" #x15A7)
- ("CANADIAN SYLLABICS TH-CREE THI" #x15A8)
- ("CANADIAN SYLLABICS TH-CREE THII" #x15A9)
- ("CANADIAN SYLLABICS TH-CREE THO" #x15AA)
- ("CANADIAN SYLLABICS TH-CREE THOO" #x15AB)
- ("CANADIAN SYLLABICS TH-CREE THA" #x15AC)
- ("CANADIAN SYLLABICS TH-CREE THAA" #x15AD)
- ("CANADIAN SYLLABICS TH-CREE TH" #x15AE)
- ("CANADIAN SYLLABICS AIVILIK B" #x15AF)
- ("CANADIAN SYLLABICS BLACKFOOT E" #x15B0)
- ("CANADIAN SYLLABICS BLACKFOOT I" #x15B1)
- ("CANADIAN SYLLABICS BLACKFOOT O" #x15B2)
- ("CANADIAN SYLLABICS BLACKFOOT A" #x15B3)
- ("CANADIAN SYLLABICS BLACKFOOT WE" #x15B4)
- ("CANADIAN SYLLABICS BLACKFOOT WI" #x15B5)
- ("CANADIAN SYLLABICS BLACKFOOT WO" #x15B6)
- ("CANADIAN SYLLABICS BLACKFOOT WA" #x15B7)
- ("CANADIAN SYLLABICS BLACKFOOT NE" #x15B8)
- ("CANADIAN SYLLABICS BLACKFOOT NI" #x15B9)
- ("CANADIAN SYLLABICS BLACKFOOT NO" #x15BA)
- ("CANADIAN SYLLABICS BLACKFOOT NA" #x15BB)
- ("CANADIAN SYLLABICS BLACKFOOT KE" #x15BC)
- ("CANADIAN SYLLABICS BLACKFOOT KI" #x15BD)
- ("CANADIAN SYLLABICS BLACKFOOT KO" #x15BE)
- ("CANADIAN SYLLABICS BLACKFOOT KA" #x15BF)
- ("CANADIAN SYLLABICS SAYISI HE" #x15C0)
- ("CANADIAN SYLLABICS SAYISI HI" #x15C1)
- ("CANADIAN SYLLABICS SAYISI HO" #x15C2)
- ("CANADIAN SYLLABICS SAYISI HA" #x15C3)
- ("CANADIAN SYLLABICS CARRIER GHU" #x15C4)
- ("CANADIAN SYLLABICS CARRIER GHO" #x15C5)
- ("CANADIAN SYLLABICS CARRIER GHE" #x15C6)
- ("CANADIAN SYLLABICS CARRIER GHEE" #x15C7)
- ("CANADIAN SYLLABICS CARRIER GHI" #x15C8)
- ("CANADIAN SYLLABICS CARRIER GHA" #x15C9)
- ("CANADIAN SYLLABICS CARRIER RU" #x15CA)
- ("CANADIAN SYLLABICS CARRIER RO" #x15CB)
- ("CANADIAN SYLLABICS CARRIER RE" #x15CC)
- ("CANADIAN SYLLABICS CARRIER REE" #x15CD)
- ("CANADIAN SYLLABICS CARRIER RI" #x15CE)
- ("CANADIAN SYLLABICS CARRIER RA" #x15CF)
- ("CANADIAN SYLLABICS CARRIER WU" #x15D0)
- ("CANADIAN SYLLABICS CARRIER WO" #x15D1)
- ("CANADIAN SYLLABICS CARRIER WE" #x15D2)
- ("CANADIAN SYLLABICS CARRIER WEE" #x15D3)
- ("CANADIAN SYLLABICS CARRIER WI" #x15D4)
- ("CANADIAN SYLLABICS CARRIER WA" #x15D5)
- ("CANADIAN SYLLABICS CARRIER HWU" #x15D6)
- ("CANADIAN SYLLABICS CARRIER HWO" #x15D7)
- ("CANADIAN SYLLABICS CARRIER HWE" #x15D8)
- ("CANADIAN SYLLABICS CARRIER HWEE" #x15D9)
- ("CANADIAN SYLLABICS CARRIER HWI" #x15DA)
- ("CANADIAN SYLLABICS CARRIER HWA" #x15DB)
- ("CANADIAN SYLLABICS CARRIER THU" #x15DC)
- ("CANADIAN SYLLABICS CARRIER THO" #x15DD)
- ("CANADIAN SYLLABICS CARRIER THE" #x15DE)
- ("CANADIAN SYLLABICS CARRIER THEE" #x15DF)
- ("CANADIAN SYLLABICS CARRIER THI" #x15E0)
- ("CANADIAN SYLLABICS CARRIER THA" #x15E1)
- ("CANADIAN SYLLABICS CARRIER TTU" #x15E2)
- ("CANADIAN SYLLABICS CARRIER TTO" #x15E3)
- ("CANADIAN SYLLABICS CARRIER TTE" #x15E4)
- ("CANADIAN SYLLABICS CARRIER TTEE" #x15E5)
- ("CANADIAN SYLLABICS CARRIER TTI" #x15E6)
- ("CANADIAN SYLLABICS CARRIER TTA" #x15E7)
- ("CANADIAN SYLLABICS CARRIER PU" #x15E8)
- ("CANADIAN SYLLABICS CARRIER PO" #x15E9)
- ("CANADIAN SYLLABICS CARRIER PE" #x15EA)
- ("CANADIAN SYLLABICS CARRIER PEE" #x15EB)
- ("CANADIAN SYLLABICS CARRIER PI" #x15EC)
- ("CANADIAN SYLLABICS CARRIER PA" #x15ED)
- ("CANADIAN SYLLABICS CARRIER P" #x15EE)
- ("CANADIAN SYLLABICS CARRIER GU" #x15EF)
- ("CANADIAN SYLLABICS CARRIER GO" #x15F0)
- ("CANADIAN SYLLABICS CARRIER GE" #x15F1)
- ("CANADIAN SYLLABICS CARRIER GEE" #x15F2)
- ("CANADIAN SYLLABICS CARRIER GI" #x15F3)
- ("CANADIAN SYLLABICS CARRIER GA" #x15F4)
- ("CANADIAN SYLLABICS CARRIER KHU" #x15F5)
- ("CANADIAN SYLLABICS CARRIER KHO" #x15F6)
- ("CANADIAN SYLLABICS CARRIER KHE" #x15F7)
- ("CANADIAN SYLLABICS CARRIER KHEE" #x15F8)
- ("CANADIAN SYLLABICS CARRIER KHI" #x15F9)
- ("CANADIAN SYLLABICS CARRIER KHA" #x15FA)
- ("CANADIAN SYLLABICS CARRIER KKU" #x15FB)
- ("CANADIAN SYLLABICS CARRIER KKO" #x15FC)
- ("CANADIAN SYLLABICS CARRIER KKE" #x15FD)
- ("CANADIAN SYLLABICS CARRIER KKEE" #x15FE)
- ("CANADIAN SYLLABICS CARRIER KKI" #x15FF)
- ("CANADIAN SYLLABICS CARRIER KKA" #x1600)
- ("CANADIAN SYLLABICS CARRIER KK" #x1601)
- ("CANADIAN SYLLABICS CARRIER NU" #x1602)
- ("CANADIAN SYLLABICS CARRIER NO" #x1603)
- ("CANADIAN SYLLABICS CARRIER NE" #x1604)
- ("CANADIAN SYLLABICS CARRIER NEE" #x1605)
- ("CANADIAN SYLLABICS CARRIER NI" #x1606)
- ("CANADIAN SYLLABICS CARRIER NA" #x1607)
- ("CANADIAN SYLLABICS CARRIER MU" #x1608)
- ("CANADIAN SYLLABICS CARRIER MO" #x1609)
- ("CANADIAN SYLLABICS CARRIER ME" #x160A)
- ("CANADIAN SYLLABICS CARRIER MEE" #x160B)
- ("CANADIAN SYLLABICS CARRIER MI" #x160C)
- ("CANADIAN SYLLABICS CARRIER MA" #x160D)
- ("CANADIAN SYLLABICS CARRIER YU" #x160E)
- ("CANADIAN SYLLABICS CARRIER YO" #x160F)
- ("CANADIAN SYLLABICS CARRIER YE" #x1610)
- ("CANADIAN SYLLABICS CARRIER YEE" #x1611)
- ("CANADIAN SYLLABICS CARRIER YI" #x1612)
- ("CANADIAN SYLLABICS CARRIER YA" #x1613)
- ("CANADIAN SYLLABICS CARRIER JU" #x1614)
- ("CANADIAN SYLLABICS SAYISI JU" #x1615)
- ("CANADIAN SYLLABICS CARRIER JO" #x1616)
- ("CANADIAN SYLLABICS CARRIER JE" #x1617)
- ("CANADIAN SYLLABICS CARRIER JEE" #x1618)
- ("CANADIAN SYLLABICS CARRIER JI" #x1619)
- ("CANADIAN SYLLABICS SAYISI JI" #x161A)
- ("CANADIAN SYLLABICS CARRIER JA" #x161B)
- ("CANADIAN SYLLABICS CARRIER JJU" #x161C)
- ("CANADIAN SYLLABICS CARRIER JJO" #x161D)
- ("CANADIAN SYLLABICS CARRIER JJE" #x161E)
- ("CANADIAN SYLLABICS CARRIER JJEE" #x161F)
- ("CANADIAN SYLLABICS CARRIER JJI" #x1620)
- ("CANADIAN SYLLABICS CARRIER JJA" #x1621)
- ("CANADIAN SYLLABICS CARRIER LU" #x1622)
- ("CANADIAN SYLLABICS CARRIER LO" #x1623)
- ("CANADIAN SYLLABICS CARRIER LE" #x1624)
- ("CANADIAN SYLLABICS CARRIER LEE" #x1625)
- ("CANADIAN SYLLABICS CARRIER LI" #x1626)
- ("CANADIAN SYLLABICS CARRIER LA" #x1627)
- ("CANADIAN SYLLABICS CARRIER DLU" #x1628)
- ("CANADIAN SYLLABICS CARRIER DLO" #x1629)
- ("CANADIAN SYLLABICS CARRIER DLE" #x162A)
- ("CANADIAN SYLLABICS CARRIER DLEE" #x162B)
- ("CANADIAN SYLLABICS CARRIER DLI" #x162C)
- ("CANADIAN SYLLABICS CARRIER DLA" #x162D)
- ("CANADIAN SYLLABICS CARRIER LHU" #x162E)
- ("CANADIAN SYLLABICS CARRIER LHO" #x162F)
- ("CANADIAN SYLLABICS CARRIER LHE" #x1630)
- ("CANADIAN SYLLABICS CARRIER LHEE" #x1631)
- ("CANADIAN SYLLABICS CARRIER LHI" #x1632)
- ("CANADIAN SYLLABICS CARRIER LHA" #x1633)
- ("CANADIAN SYLLABICS CARRIER TLHU" #x1634)
- ("CANADIAN SYLLABICS CARRIER TLHO" #x1635)
- ("CANADIAN SYLLABICS CARRIER TLHE" #x1636)
- ("CANADIAN SYLLABICS CARRIER TLHEE" #x1637)
- ("CANADIAN SYLLABICS CARRIER TLHI" #x1638)
- ("CANADIAN SYLLABICS CARRIER TLHA" #x1639)
- ("CANADIAN SYLLABICS CARRIER TLU" #x163A)
- ("CANADIAN SYLLABICS CARRIER TLO" #x163B)
- ("CANADIAN SYLLABICS CARRIER TLE" #x163C)
- ("CANADIAN SYLLABICS CARRIER TLEE" #x163D)
- ("CANADIAN SYLLABICS CARRIER TLI" #x163E)
- ("CANADIAN SYLLABICS CARRIER TLA" #x163F)
- ("CANADIAN SYLLABICS CARRIER ZU" #x1640)
- ("CANADIAN SYLLABICS CARRIER ZO" #x1641)
- ("CANADIAN SYLLABICS CARRIER ZE" #x1642)
- ("CANADIAN SYLLABICS CARRIER ZEE" #x1643)
- ("CANADIAN SYLLABICS CARRIER ZI" #x1644)
- ("CANADIAN SYLLABICS CARRIER ZA" #x1645)
- ("CANADIAN SYLLABICS CARRIER Z" #x1646)
- ("CANADIAN SYLLABICS CARRIER INITIAL Z" #x1647)
- ("CANADIAN SYLLABICS CARRIER DZU" #x1648)
- ("CANADIAN SYLLABICS CARRIER DZO" #x1649)
- ("CANADIAN SYLLABICS CARRIER DZE" #x164A)
- ("CANADIAN SYLLABICS CARRIER DZEE" #x164B)
- ("CANADIAN SYLLABICS CARRIER DZI" #x164C)
- ("CANADIAN SYLLABICS CARRIER DZA" #x164D)
- ("CANADIAN SYLLABICS CARRIER SU" #x164E)
- ("CANADIAN SYLLABICS CARRIER SO" #x164F)
- ("CANADIAN SYLLABICS CARRIER SE" #x1650)
- ("CANADIAN SYLLABICS CARRIER SEE" #x1651)
- ("CANADIAN SYLLABICS CARRIER SI" #x1652)
- ("CANADIAN SYLLABICS CARRIER SA" #x1653)
- ("CANADIAN SYLLABICS CARRIER SHU" #x1654)
- ("CANADIAN SYLLABICS CARRIER SHO" #x1655)
- ("CANADIAN SYLLABICS CARRIER SHE" #x1656)
- ("CANADIAN SYLLABICS CARRIER SHEE" #x1657)
- ("CANADIAN SYLLABICS CARRIER SHI" #x1658)
- ("CANADIAN SYLLABICS CARRIER SHA" #x1659)
- ("CANADIAN SYLLABICS CARRIER SH" #x165A)
- ("CANADIAN SYLLABICS CARRIER TSU" #x165B)
- ("CANADIAN SYLLABICS CARRIER TSO" #x165C)
- ("CANADIAN SYLLABICS CARRIER TSE" #x165D)
- ("CANADIAN SYLLABICS CARRIER TSEE" #x165E)
- ("CANADIAN SYLLABICS CARRIER TSI" #x165F)
- ("CANADIAN SYLLABICS CARRIER TSA" #x1660)
- ("CANADIAN SYLLABICS CARRIER CHU" #x1661)
- ("CANADIAN SYLLABICS CARRIER CHO" #x1662)
- ("CANADIAN SYLLABICS CARRIER CHE" #x1663)
- ("CANADIAN SYLLABICS CARRIER CHEE" #x1664)
- ("CANADIAN SYLLABICS CARRIER CHI" #x1665)
- ("CANADIAN SYLLABICS CARRIER CHA" #x1666)
- ("CANADIAN SYLLABICS CARRIER TTSU" #x1667)
- ("CANADIAN SYLLABICS CARRIER TTSO" #x1668)
- ("CANADIAN SYLLABICS CARRIER TTSE" #x1669)
- ("CANADIAN SYLLABICS CARRIER TTSEE" #x166A)
- ("CANADIAN SYLLABICS CARRIER TTSI" #x166B)
- ("CANADIAN SYLLABICS CARRIER TTSA" #x166C)
- ("CANADIAN SYLLABICS CHI SIGN" #x166D)
- ("CANADIAN SYLLABICS FULL STOP" #x166E)
- ("CANADIAN SYLLABICS QAI" #x166F)
- ("CANADIAN SYLLABICS NGAI" #x1670)
- ("CANADIAN SYLLABICS NNGI" #x1671)
- ("CANADIAN SYLLABICS NNGII" #x1672)
- ("CANADIAN SYLLABICS NNGO" #x1673)
- ("CANADIAN SYLLABICS NNGOO" #x1674)
- ("CANADIAN SYLLABICS NNGA" #x1675)
- ("CANADIAN SYLLABICS NNGAA" #x1676)
- ))
-
diff --git a/etc/nxml/01680-0169F.el b/etc/nxml/01680-0169F.el
deleted file mode 100644
index ef59332874..0000000000
--- a/etc/nxml/01680-0169F.el
+++ /dev/null
@@ -1,32 +0,0 @@
-(nxml-define-char-name-set 'ogham
- '(("OGHAM SPACE MARK" #x1680)
- ("OGHAM LETTER BEITH" #x1681)
- ("OGHAM LETTER LUIS" #x1682)
- ("OGHAM LETTER FEARN" #x1683)
- ("OGHAM LETTER SAIL" #x1684)
- ("OGHAM LETTER NION" #x1685)
- ("OGHAM LETTER UATH" #x1686)
- ("OGHAM LETTER DAIR" #x1687)
- ("OGHAM LETTER TINNE" #x1688)
- ("OGHAM LETTER COLL" #x1689)
- ("OGHAM LETTER CEIRT" #x168A)
- ("OGHAM LETTER MUIN" #x168B)
- ("OGHAM LETTER GORT" #x168C)
- ("OGHAM LETTER NGEADAL" #x168D)
- ("OGHAM LETTER STRAIF" #x168E)
- ("OGHAM LETTER RUIS" #x168F)
- ("OGHAM LETTER AILM" #x1690)
- ("OGHAM LETTER ONN" #x1691)
- ("OGHAM LETTER UR" #x1692)
- ("OGHAM LETTER EADHADH" #x1693)
- ("OGHAM LETTER IODHADH" #x1694)
- ("OGHAM LETTER EABHADH" #x1695)
- ("OGHAM LETTER OR" #x1696)
- ("OGHAM LETTER UILLEANN" #x1697)
- ("OGHAM LETTER IFIN" #x1698)
- ("OGHAM LETTER EAMHANCHOLL" #x1699)
- ("OGHAM LETTER PEITH" #x169A)
- ("OGHAM FEATHER MARK" #x169B)
- ("OGHAM REVERSED FEATHER MARK" #x169C)
- ))
-
diff --git a/etc/nxml/016A0-016FF.el b/etc/nxml/016A0-016FF.el
deleted file mode 100644
index b194a0ca0d..0000000000
--- a/etc/nxml/016A0-016FF.el
+++ /dev/null
@@ -1,84 +0,0 @@
-(nxml-define-char-name-set 'runic
- '(("RUNIC LETTER FEHU FEOH FE F" #x16A0)
- ("RUNIC LETTER V" #x16A1)
- ("RUNIC LETTER URUZ UR U" #x16A2)
- ("RUNIC LETTER YR" #x16A3)
- ("RUNIC LETTER Y" #x16A4)
- ("RUNIC LETTER W" #x16A5)
- ("RUNIC LETTER THURISAZ THURS THORN" #x16A6)
- ("RUNIC LETTER ETH" #x16A7)
- ("RUNIC LETTER ANSUZ A" #x16A8)
- ("RUNIC LETTER OS O" #x16A9)
- ("RUNIC LETTER AC A" #x16AA)
- ("RUNIC LETTER AESC" #x16AB)
- ("RUNIC LETTER LONG-BRANCH-OSS O" #x16AC)
- ("RUNIC LETTER SHORT-TWIG-OSS O" #x16AD)
- ("RUNIC LETTER O" #x16AE)
- ("RUNIC LETTER OE" #x16AF)
- ("RUNIC LETTER ON" #x16B0)
- ("RUNIC LETTER RAIDO RAD REID R" #x16B1)
- ("RUNIC LETTER KAUNA" #x16B2)
- ("RUNIC LETTER CEN" #x16B3)
- ("RUNIC LETTER KAUN K" #x16B4)
- ("RUNIC LETTER G" #x16B5)
- ("RUNIC LETTER ENG" #x16B6)
- ("RUNIC LETTER GEBO GYFU G" #x16B7)
- ("RUNIC LETTER GAR" #x16B8)
- ("RUNIC LETTER WUNJO WYNN W" #x16B9)
- ("RUNIC LETTER HAGLAZ H" #x16BA)
- ("RUNIC LETTER HAEGL H" #x16BB)
- ("RUNIC LETTER LONG-BRANCH-HAGALL H" #x16BC)
- ("RUNIC LETTER SHORT-TWIG-HAGALL H" #x16BD)
- ("RUNIC LETTER NAUDIZ NYD NAUD N" #x16BE)
- ("RUNIC LETTER SHORT-TWIG-NAUD N" #x16BF)
- ("RUNIC LETTER DOTTED-N" #x16C0)
- ("RUNIC LETTER ISAZ IS ISS I" #x16C1)
- ("RUNIC LETTER E" #x16C2)
- ("RUNIC LETTER JERAN J" #x16C3)
- ("RUNIC LETTER GER" #x16C4)
- ("RUNIC LETTER LONG-BRANCH-AR AE" #x16C5)
- ("RUNIC LETTER SHORT-TWIG-AR A" #x16C6)
- ("RUNIC LETTER IWAZ EOH" #x16C7)
- ("RUNIC LETTER PERTHO PEORTH P" #x16C8)
- ("RUNIC LETTER ALGIZ EOLHX" #x16C9)
- ("RUNIC LETTER SOWILO S" #x16CA)
- ("RUNIC LETTER SIGEL LONG-BRANCH-SOL S" #x16CB)
- ("RUNIC LETTER SHORT-TWIG-SOL S" #x16CC)
- ("RUNIC LETTER C" #x16CD)
- ("RUNIC LETTER Z" #x16CE)
- ("RUNIC LETTER TIWAZ TIR TYR T" #x16CF)
- ("RUNIC LETTER SHORT-TWIG-TYR T" #x16D0)
- ("RUNIC LETTER D" #x16D1)
- ("RUNIC LETTER BERKANAN BEORC BJARKAN B" #x16D2)
- ("RUNIC LETTER SHORT-TWIG-BJARKAN B" #x16D3)
- ("RUNIC LETTER DOTTED-P" #x16D4)
- ("RUNIC LETTER OPEN-P" #x16D5)
- ("RUNIC LETTER EHWAZ EH E" #x16D6)
- ("RUNIC LETTER MANNAZ MAN M" #x16D7)
- ("RUNIC LETTER LONG-BRANCH-MADR M" #x16D8)
- ("RUNIC LETTER SHORT-TWIG-MADR M" #x16D9)
- ("RUNIC LETTER LAUKAZ LAGU LOGR L" #x16DA)
- ("RUNIC LETTER DOTTED-L" #x16DB)
- ("RUNIC LETTER INGWAZ" #x16DC)
- ("RUNIC LETTER ING" #x16DD)
- ("RUNIC LETTER DAGAZ DAEG D" #x16DE)
- ("RUNIC LETTER OTHALAN ETHEL O" #x16DF)
- ("RUNIC LETTER EAR" #x16E0)
- ("RUNIC LETTER IOR" #x16E1)
- ("RUNIC LETTER CWEORTH" #x16E2)
- ("RUNIC LETTER CALC" #x16E3)
- ("RUNIC LETTER CEALC" #x16E4)
- ("RUNIC LETTER STAN" #x16E5)
- ("RUNIC LETTER LONG-BRANCH-YR" #x16E6)
- ("RUNIC LETTER SHORT-TWIG-YR" #x16E7)
- ("RUNIC LETTER ICELANDIC-YR" #x16E8)
- ("RUNIC LETTER Q" #x16E9)
- ("RUNIC LETTER X" #x16EA)
- ("RUNIC SINGLE PUNCTUATION" #x16EB)
- ("RUNIC MULTIPLE PUNCTUATION" #x16EC)
- ("RUNIC CROSS PUNCTUATION" #x16ED)
- ("RUNIC ARLAUG SYMBOL" #x16EE)
- ("RUNIC TVIMADUR SYMBOL" #x16EF)
- ("RUNIC BELGTHOR SYMBOL" #x16F0)
- ))
-
diff --git a/etc/nxml/01700-0171F.el b/etc/nxml/01700-0171F.el
deleted file mode 100644
index 2b1238c814..0000000000
--- a/etc/nxml/01700-0171F.el
+++ /dev/null
@@ -1,23 +0,0 @@
-(nxml-define-char-name-set 'tagalog
- '(("TAGALOG LETTER A" #x1700)
- ("TAGALOG LETTER I" #x1701)
- ("TAGALOG LETTER U" #x1702)
- ("TAGALOG LETTER KA" #x1703)
- ("TAGALOG LETTER GA" #x1704)
- ("TAGALOG LETTER NGA" #x1705)
- ("TAGALOG LETTER TA" #x1706)
- ("TAGALOG LETTER DA" #x1707)
- ("TAGALOG LETTER NA" #x1708)
- ("TAGALOG LETTER PA" #x1709)
- ("TAGALOG LETTER BA" #x170A)
- ("TAGALOG LETTER MA" #x170B)
- ("TAGALOG LETTER YA" #x170C)
- ("TAGALOG LETTER LA" #x170E)
- ("TAGALOG LETTER WA" #x170F)
- ("TAGALOG LETTER SA" #x1710)
- ("TAGALOG LETTER HA" #x1711)
- ("TAGALOG VOWEL SIGN I" #x1712)
- ("TAGALOG VOWEL SIGN U" #x1713)
- ("TAGALOG SIGN VIRAMA" #x1714)
- ))
-
diff --git a/etc/nxml/01720-0173F.el b/etc/nxml/01720-0173F.el
deleted file mode 100644
index 7fb9c228b5..0000000000
--- a/etc/nxml/01720-0173F.el
+++ /dev/null
@@ -1,26 +0,0 @@
-(nxml-define-char-name-set 'hanunoo
- '(("HANUNOO LETTER A" #x1720)
- ("HANUNOO LETTER I" #x1721)
- ("HANUNOO LETTER U" #x1722)
- ("HANUNOO LETTER KA" #x1723)
- ("HANUNOO LETTER GA" #x1724)
- ("HANUNOO LETTER NGA" #x1725)
- ("HANUNOO LETTER TA" #x1726)
- ("HANUNOO LETTER DA" #x1727)
- ("HANUNOO LETTER NA" #x1728)
- ("HANUNOO LETTER PA" #x1729)
- ("HANUNOO LETTER BA" #x172A)
- ("HANUNOO LETTER MA" #x172B)
- ("HANUNOO LETTER YA" #x172C)
- ("HANUNOO LETTER RA" #x172D)
- ("HANUNOO LETTER LA" #x172E)
- ("HANUNOO LETTER WA" #x172F)
- ("HANUNOO LETTER SA" #x1730)
- ("HANUNOO LETTER HA" #x1731)
- ("HANUNOO VOWEL SIGN I" #x1732)
- ("HANUNOO VOWEL SIGN U" #x1733)
- ("HANUNOO SIGN PAMUDPOD" #x1734)
- ("PHILIPPINE SINGLE PUNCTUATION" #x1735)
- ("PHILIPPINE DOUBLE PUNCTUATION" #x1736)
- ))
-
diff --git a/etc/nxml/01740-0175F.el b/etc/nxml/01740-0175F.el
deleted file mode 100644
index 26f8f6ed7d..0000000000
--- a/etc/nxml/01740-0175F.el
+++ /dev/null
@@ -1,23 +0,0 @@
-(nxml-define-char-name-set 'buhid
- '(("BUHID LETTER A" #x1740)
- ("BUHID LETTER I" #x1741)
- ("BUHID LETTER U" #x1742)
- ("BUHID LETTER KA" #x1743)
- ("BUHID LETTER GA" #x1744)
- ("BUHID LETTER NGA" #x1745)
- ("BUHID LETTER TA" #x1746)
- ("BUHID LETTER DA" #x1747)
- ("BUHID LETTER NA" #x1748)
- ("BUHID LETTER PA" #x1749)
- ("BUHID LETTER BA" #x174A)
- ("BUHID LETTER MA" #x174B)
- ("BUHID LETTER YA" #x174C)
- ("BUHID LETTER RA" #x174D)
- ("BUHID LETTER LA" #x174E)
- ("BUHID LETTER WA" #x174F)
- ("BUHID LETTER SA" #x1750)
- ("BUHID LETTER HA" #x1751)
- ("BUHID VOWEL SIGN I" #x1752)
- ("BUHID VOWEL SIGN U" #x1753)
- ))
-
diff --git a/etc/nxml/01760-0177F.el b/etc/nxml/01760-0177F.el
deleted file mode 100644
index 2097b4f52e..0000000000
--- a/etc/nxml/01760-0177F.el
+++ /dev/null
@@ -1,21 +0,0 @@
-(nxml-define-char-name-set 'tagbanwa
- '(("TAGBANWA LETTER A" #x1760)
- ("TAGBANWA LETTER I" #x1761)
- ("TAGBANWA LETTER U" #x1762)
- ("TAGBANWA LETTER KA" #x1763)
- ("TAGBANWA LETTER GA" #x1764)
- ("TAGBANWA LETTER NGA" #x1765)
- ("TAGBANWA LETTER TA" #x1766)
- ("TAGBANWA LETTER DA" #x1767)
- ("TAGBANWA LETTER NA" #x1768)
- ("TAGBANWA LETTER PA" #x1769)
- ("TAGBANWA LETTER BA" #x176A)
- ("TAGBANWA LETTER MA" #x176B)
- ("TAGBANWA LETTER YA" #x176C)
- ("TAGBANWA LETTER LA" #x176E)
- ("TAGBANWA LETTER WA" #x176F)
- ("TAGBANWA LETTER SA" #x1770)
- ("TAGBANWA VOWEL SIGN I" #x1772)
- ("TAGBANWA VOWEL SIGN U" #x1773)
- ))
-
diff --git a/etc/nxml/01780-017FF.el b/etc/nxml/01780-017FF.el
deleted file mode 100644
index 762fd463d3..0000000000
--- a/etc/nxml/01780-017FF.el
+++ /dev/null
@@ -1,106 +0,0 @@
-(nxml-define-char-name-set 'khmer
- '(("KHMER LETTER KA" #x1780)
- ("KHMER LETTER KHA" #x1781)
- ("KHMER LETTER KO" #x1782)
- ("KHMER LETTER KHO" #x1783)
- ("KHMER LETTER NGO" #x1784)
- ("KHMER LETTER CA" #x1785)
- ("KHMER LETTER CHA" #x1786)
- ("KHMER LETTER CO" #x1787)
- ("KHMER LETTER CHO" #x1788)
- ("KHMER LETTER NYO" #x1789)
- ("KHMER LETTER DA" #x178A)
- ("KHMER LETTER TTHA" #x178B)
- ("KHMER LETTER DO" #x178C)
- ("KHMER LETTER TTHO" #x178D)
- ("KHMER LETTER NNO" #x178E)
- ("KHMER LETTER TA" #x178F)
- ("KHMER LETTER THA" #x1790)
- ("KHMER LETTER TO" #x1791)
- ("KHMER LETTER THO" #x1792)
- ("KHMER LETTER NO" #x1793)
- ("KHMER LETTER BA" #x1794)
- ("KHMER LETTER PHA" #x1795)
- ("KHMER LETTER PO" #x1796)
- ("KHMER LETTER PHO" #x1797)
- ("KHMER LETTER MO" #x1798)
- ("KHMER LETTER YO" #x1799)
- ("KHMER LETTER RO" #x179A)
- ("KHMER LETTER LO" #x179B)
- ("KHMER LETTER VO" #x179C)
- ("KHMER LETTER SHA" #x179D)
- ("KHMER LETTER SSO" #x179E)
- ("KHMER LETTER SA" #x179F)
- ("KHMER LETTER HA" #x17A0)
- ("KHMER LETTER LA" #x17A1)
- ("KHMER LETTER QA" #x17A2)
- ("KHMER INDEPENDENT VOWEL QAQ" #x17A3)
- ("KHMER INDEPENDENT VOWEL QAA" #x17A4)
- ("KHMER INDEPENDENT VOWEL QI" #x17A5)
- ("KHMER INDEPENDENT VOWEL QII" #x17A6)
- ("KHMER INDEPENDENT VOWEL QU" #x17A7)
- ("KHMER INDEPENDENT VOWEL QUK" #x17A8)
- ("KHMER INDEPENDENT VOWEL QUU" #x17A9)
- ("KHMER INDEPENDENT VOWEL QUUV" #x17AA)
- ("KHMER INDEPENDENT VOWEL RY" #x17AB)
- ("KHMER INDEPENDENT VOWEL RYY" #x17AC)
- ("KHMER INDEPENDENT VOWEL LY" #x17AD)
- ("KHMER INDEPENDENT VOWEL LYY" #x17AE)
- ("KHMER INDEPENDENT VOWEL QE" #x17AF)
- ("KHMER INDEPENDENT VOWEL QAI" #x17B0)
- ("KHMER INDEPENDENT VOWEL QOO TYPE ONE" #x17B1)
- ("KHMER INDEPENDENT VOWEL QOO TYPE TWO" #x17B2)
- ("KHMER INDEPENDENT VOWEL QAU" #x17B3)
- ("KHMER VOWEL INHERENT AQ" #x17B4)
- ("KHMER VOWEL INHERENT AA" #x17B5)
- ("KHMER VOWEL SIGN AA" #x17B6)
- ("KHMER VOWEL SIGN I" #x17B7)
- ("KHMER VOWEL SIGN II" #x17B8)
- ("KHMER VOWEL SIGN Y" #x17B9)
- ("KHMER VOWEL SIGN YY" #x17BA)
- ("KHMER VOWEL SIGN U" #x17BB)
- ("KHMER VOWEL SIGN UU" #x17BC)
- ("KHMER VOWEL SIGN UA" #x17BD)
- ("KHMER VOWEL SIGN OE" #x17BE)
- ("KHMER VOWEL SIGN YA" #x17BF)
- ("KHMER VOWEL SIGN IE" #x17C0)
- ("KHMER VOWEL SIGN E" #x17C1)
- ("KHMER VOWEL SIGN AE" #x17C2)
- ("KHMER VOWEL SIGN AI" #x17C3)
- ("KHMER VOWEL SIGN OO" #x17C4)
- ("KHMER VOWEL SIGN AU" #x17C5)
- ("KHMER SIGN NIKAHIT" #x17C6)
- ("KHMER SIGN REAHMUK" #x17C7)
- ("KHMER SIGN YUUKALEAPINTU" #x17C8)
- ("KHMER SIGN MUUSIKATOAN" #x17C9)
- ("KHMER SIGN TRIISAP" #x17CA)
- ("KHMER SIGN BANTOC" #x17CB)
- ("KHMER SIGN ROBAT" #x17CC)
- ("KHMER SIGN TOANDAKHIAT" #x17CD)
- ("KHMER SIGN KAKABAT" #x17CE)
- ("KHMER SIGN AHSDA" #x17CF)
- ("KHMER SIGN SAMYOK SANNYA" #x17D0)
- ("KHMER SIGN VIRIAM" #x17D1)
- ("KHMER SIGN COENG" #x17D2)
- ("KHMER SIGN BATHAMASAT" #x17D3)
- ("KHMER SIGN KHAN" #x17D4)
- ("KHMER SIGN BARIYOOSAN" #x17D5)
- ("KHMER SIGN CAMNUC PII KUUH" #x17D6)
- ("KHMER SIGN LEK TOO" #x17D7)
- ("KHMER SIGN BEYYAL" #x17D8)
- ("KHMER SIGN PHNAEK MUAN" #x17D9)
- ("KHMER SIGN KOOMUUT" #x17DA)
- ("KHMER CURRENCY SYMBOL RIEL" #x17DB)
- ("KHMER SIGN AVAKRAHASANYA" #x17DC)
- ("KHMER DIGIT ZERO" #x17E0)
- ("KHMER DIGIT ONE" #x17E1)
- ("KHMER DIGIT TWO" #x17E2)
- ("KHMER DIGIT THREE" #x17E3)
- ("KHMER DIGIT FOUR" #x17E4)
- ("KHMER DIGIT FIVE" #x17E5)
- ("KHMER DIGIT SIX" #x17E6)
- ("KHMER DIGIT SEVEN" #x17E7)
- ("KHMER DIGIT EIGHT" #x17E8)
- ("KHMER DIGIT NINE" #x17E9)
- ))
-
diff --git a/etc/nxml/01800-018AF.el b/etc/nxml/01800-018AF.el
deleted file mode 100644
index b3701d4596..0000000000
--- a/etc/nxml/01800-018AF.el
+++ /dev/null
@@ -1,158 +0,0 @@
-(nxml-define-char-name-set 'mongolian
- '(("MONGOLIAN BIRGA" #x1800)
- ("MONGOLIAN ELLIPSIS" #x1801)
- ("MONGOLIAN COMMA" #x1802)
- ("MONGOLIAN FULL STOP" #x1803)
- ("MONGOLIAN COLON" #x1804)
- ("MONGOLIAN FOUR DOTS" #x1805)
- ("MONGOLIAN TODO SOFT HYPHEN" #x1806)
- ("MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER" #x1807)
- ("MONGOLIAN MANCHU COMMA" #x1808)
- ("MONGOLIAN MANCHU FULL STOP" #x1809)
- ("MONGOLIAN NIRUGU" #x180A)
- ("MONGOLIAN FREE VARIATION SELECTOR ONE" #x180B)
- ("MONGOLIAN FREE VARIATION SELECTOR TWO" #x180C)
- ("MONGOLIAN FREE VARIATION SELECTOR THREE" #x180D)
- ("MONGOLIAN VOWEL SEPARATOR" #x180E)
- ("MONGOLIAN DIGIT ZERO" #x1810)
- ("MONGOLIAN DIGIT ONE" #x1811)
- ("MONGOLIAN DIGIT TWO" #x1812)
- ("MONGOLIAN DIGIT THREE" #x1813)
- ("MONGOLIAN DIGIT FOUR" #x1814)
- ("MONGOLIAN DIGIT FIVE" #x1815)
- ("MONGOLIAN DIGIT SIX" #x1816)
- ("MONGOLIAN DIGIT SEVEN" #x1817)
- ("MONGOLIAN DIGIT EIGHT" #x1818)
- ("MONGOLIAN DIGIT NINE" #x1819)
- ("MONGOLIAN LETTER A" #x1820)
- ("MONGOLIAN LETTER E" #x1821)
- ("MONGOLIAN LETTER I" #x1822)
- ("MONGOLIAN LETTER O" #x1823)
- ("MONGOLIAN LETTER U" #x1824)
- ("MONGOLIAN LETTER OE" #x1825)
- ("MONGOLIAN LETTER UE" #x1826)
- ("MONGOLIAN LETTER EE" #x1827)
- ("MONGOLIAN LETTER NA" #x1828)
- ("MONGOLIAN LETTER ANG" #x1829)
- ("MONGOLIAN LETTER BA" #x182A)
- ("MONGOLIAN LETTER PA" #x182B)
- ("MONGOLIAN LETTER QA" #x182C)
- ("MONGOLIAN LETTER GA" #x182D)
- ("MONGOLIAN LETTER MA" #x182E)
- ("MONGOLIAN LETTER LA" #x182F)
- ("MONGOLIAN LETTER SA" #x1830)
- ("MONGOLIAN LETTER SHA" #x1831)
- ("MONGOLIAN LETTER TA" #x1832)
- ("MONGOLIAN LETTER DA" #x1833)
- ("MONGOLIAN LETTER CHA" #x1834)
- ("MONGOLIAN LETTER JA" #x1835)
- ("MONGOLIAN LETTER YA" #x1836)
- ("MONGOLIAN LETTER RA" #x1837)
- ("MONGOLIAN LETTER WA" #x1838)
- ("MONGOLIAN LETTER FA" #x1839)
- ("MONGOLIAN LETTER KA" #x183A)
- ("MONGOLIAN LETTER KHA" #x183B)
- ("MONGOLIAN LETTER TSA" #x183C)
- ("MONGOLIAN LETTER ZA" #x183D)
- ("MONGOLIAN LETTER HAA" #x183E)
- ("MONGOLIAN LETTER ZRA" #x183F)
- ("MONGOLIAN LETTER LHA" #x1840)
- ("MONGOLIAN LETTER ZHI" #x1841)
- ("MONGOLIAN LETTER CHI" #x1842)
- ("MONGOLIAN LETTER TODO LONG VOWEL SIGN" #x1843)
- ("MONGOLIAN LETTER TODO E" #x1844)
- ("MONGOLIAN LETTER TODO I" #x1845)
- ("MONGOLIAN LETTER TODO O" #x1846)
- ("MONGOLIAN LETTER TODO U" #x1847)
- ("MONGOLIAN LETTER TODO OE" #x1848)
- ("MONGOLIAN LETTER TODO UE" #x1849)
- ("MONGOLIAN LETTER TODO ANG" #x184A)
- ("MONGOLIAN LETTER TODO BA" #x184B)
- ("MONGOLIAN LETTER TODO PA" #x184C)
- ("MONGOLIAN LETTER TODO QA" #x184D)
- ("MONGOLIAN LETTER TODO GA" #x184E)
- ("MONGOLIAN LETTER TODO MA" #x184F)
- ("MONGOLIAN LETTER TODO TA" #x1850)
- ("MONGOLIAN LETTER TODO DA" #x1851)
- ("MONGOLIAN LETTER TODO CHA" #x1852)
- ("MONGOLIAN LETTER TODO JA" #x1853)
- ("MONGOLIAN LETTER TODO TSA" #x1854)
- ("MONGOLIAN LETTER TODO YA" #x1855)
- ("MONGOLIAN LETTER TODO WA" #x1856)
- ("MONGOLIAN LETTER TODO KA" #x1857)
- ("MONGOLIAN LETTER TODO GAA" #x1858)
- ("MONGOLIAN LETTER TODO HAA" #x1859)
- ("MONGOLIAN LETTER TODO JIA" #x185A)
- ("MONGOLIAN LETTER TODO NIA" #x185B)
- ("MONGOLIAN LETTER TODO DZA" #x185C)
- ("MONGOLIAN LETTER SIBE E" #x185D)
- ("MONGOLIAN LETTER SIBE I" #x185E)
- ("MONGOLIAN LETTER SIBE IY" #x185F)
- ("MONGOLIAN LETTER SIBE UE" #x1860)
- ("MONGOLIAN LETTER SIBE U" #x1861)
- ("MONGOLIAN LETTER SIBE ANG" #x1862)
- ("MONGOLIAN LETTER SIBE KA" #x1863)
- ("MONGOLIAN LETTER SIBE GA" #x1864)
- ("MONGOLIAN LETTER SIBE HA" #x1865)
- ("MONGOLIAN LETTER SIBE PA" #x1866)
- ("MONGOLIAN LETTER SIBE SHA" #x1867)
- ("MONGOLIAN LETTER SIBE TA" #x1868)
- ("MONGOLIAN LETTER SIBE DA" #x1869)
- ("MONGOLIAN LETTER SIBE JA" #x186A)
- ("MONGOLIAN LETTER SIBE FA" #x186B)
- ("MONGOLIAN LETTER SIBE GAA" #x186C)
- ("MONGOLIAN LETTER SIBE HAA" #x186D)
- ("MONGOLIAN LETTER SIBE TSA" #x186E)
- ("MONGOLIAN LETTER SIBE ZA" #x186F)
- ("MONGOLIAN LETTER SIBE RAA" #x1870)
- ("MONGOLIAN LETTER SIBE CHA" #x1871)
- ("MONGOLIAN LETTER SIBE ZHA" #x1872)
- ("MONGOLIAN LETTER MANCHU I" #x1873)
- ("MONGOLIAN LETTER MANCHU KA" #x1874)
- ("MONGOLIAN LETTER MANCHU RA" #x1875)
- ("MONGOLIAN LETTER MANCHU FA" #x1876)
- ("MONGOLIAN LETTER MANCHU ZHA" #x1877)
- ("MONGOLIAN LETTER ALI GALI ANUSVARA ONE" #x1880)
- ("MONGOLIAN LETTER ALI GALI VISARGA ONE" #x1881)
- ("MONGOLIAN LETTER ALI GALI DAMARU" #x1882)
- ("MONGOLIAN LETTER ALI GALI UBADAMA" #x1883)
- ("MONGOLIAN LETTER ALI GALI INVERTED UBADAMA" #x1884)
- ("MONGOLIAN LETTER ALI GALI BALUDA" #x1885)
- ("MONGOLIAN LETTER ALI GALI THREE BALUDA" #x1886)
- ("MONGOLIAN LETTER ALI GALI A" #x1887)
- ("MONGOLIAN LETTER ALI GALI I" #x1888)
- ("MONGOLIAN LETTER ALI GALI KA" #x1889)
- ("MONGOLIAN LETTER ALI GALI NGA" #x188A)
- ("MONGOLIAN LETTER ALI GALI CA" #x188B)
- ("MONGOLIAN LETTER ALI GALI TTA" #x188C)
- ("MONGOLIAN LETTER ALI GALI TTHA" #x188D)
- ("MONGOLIAN LETTER ALI GALI DDA" #x188E)
- ("MONGOLIAN LETTER ALI GALI NNA" #x188F)
- ("MONGOLIAN LETTER ALI GALI TA" #x1890)
- ("MONGOLIAN LETTER ALI GALI DA" #x1891)
- ("MONGOLIAN LETTER ALI GALI PA" #x1892)
- ("MONGOLIAN LETTER ALI GALI PHA" #x1893)
- ("MONGOLIAN LETTER ALI GALI SSA" #x1894)
- ("MONGOLIAN LETTER ALI GALI ZHA" #x1895)
- ("MONGOLIAN LETTER ALI GALI ZA" #x1896)
- ("MONGOLIAN LETTER ALI GALI AH" #x1897)
- ("MONGOLIAN LETTER TODO ALI GALI TA" #x1898)
- ("MONGOLIAN LETTER TODO ALI GALI ZHA" #x1899)
- ("MONGOLIAN LETTER MANCHU ALI GALI GHA" #x189A)
- ("MONGOLIAN LETTER MANCHU ALI GALI NGA" #x189B)
- ("MONGOLIAN LETTER MANCHU ALI GALI CA" #x189C)
- ("MONGOLIAN LETTER MANCHU ALI GALI JHA" #x189D)
- ("MONGOLIAN LETTER MANCHU ALI GALI TTA" #x189E)
- ("MONGOLIAN LETTER MANCHU ALI GALI DDHA" #x189F)
- ("MONGOLIAN LETTER MANCHU ALI GALI TA" #x18A0)
- ("MONGOLIAN LETTER MANCHU ALI GALI DHA" #x18A1)
- ("MONGOLIAN LETTER MANCHU ALI GALI SSA" #x18A2)
- ("MONGOLIAN LETTER MANCHU ALI GALI CYA" #x18A3)
- ("MONGOLIAN LETTER MANCHU ALI GALI ZHA" #x18A4)
- ("MONGOLIAN LETTER MANCHU ALI GALI ZA" #x18A5)
- ("MONGOLIAN LETTER ALI GALI HALF U" #x18A6)
- ("MONGOLIAN LETTER ALI GALI HALF YA" #x18A7)
- ("MONGOLIAN LETTER MANCHU ALI GALI BHA" #x18A8)
- ("MONGOLIAN LETTER ALI GALI DAGALGA" #x18A9)
- ))
-
diff --git a/etc/nxml/01E00-01EFF.el b/etc/nxml/01E00-01EFF.el
deleted file mode 100644
index 2f86f03995..0000000000
--- a/etc/nxml/01E00-01EFF.el
+++ /dev/null
@@ -1,249 +0,0 @@
-(nxml-define-char-name-set 'latin-extended-additional
- '(("LATIN CAPITAL LETTER A WITH RING BELOW" #x1E00)
- ("LATIN SMALL LETTER A WITH RING BELOW" #x1E01)
- ("LATIN CAPITAL LETTER B WITH DOT ABOVE" #x1E02)
- ("LATIN SMALL LETTER B WITH DOT ABOVE" #x1E03)
- ("LATIN CAPITAL LETTER B WITH DOT BELOW" #x1E04)
- ("LATIN SMALL LETTER B WITH DOT BELOW" #x1E05)
- ("LATIN CAPITAL LETTER B WITH LINE BELOW" #x1E06)
- ("LATIN SMALL LETTER B WITH LINE BELOW" #x1E07)
- ("LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE" #x1E08)
- ("LATIN SMALL LETTER C WITH CEDILLA AND ACUTE" #x1E09)
- ("LATIN CAPITAL LETTER D WITH DOT ABOVE" #x1E0A)
- ("LATIN SMALL LETTER D WITH DOT ABOVE" #x1E0B)
- ("LATIN CAPITAL LETTER D WITH DOT BELOW" #x1E0C)
- ("LATIN SMALL LETTER D WITH DOT BELOW" #x1E0D)
- ("LATIN CAPITAL LETTER D WITH LINE BELOW" #x1E0E)
- ("LATIN SMALL LETTER D WITH LINE BELOW" #x1E0F)
- ("LATIN CAPITAL LETTER D WITH CEDILLA" #x1E10)
- ("LATIN SMALL LETTER D WITH CEDILLA" #x1E11)
- ("LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW" #x1E12)
- ("LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW" #x1E13)
- ("LATIN CAPITAL LETTER E WITH MACRON AND GRAVE" #x1E14)
- ("LATIN SMALL LETTER E WITH MACRON AND GRAVE" #x1E15)
- ("LATIN CAPITAL LETTER E WITH MACRON AND ACUTE" #x1E16)
- ("LATIN SMALL LETTER E WITH MACRON AND ACUTE" #x1E17)
- ("LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW" #x1E18)
- ("LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW" #x1E19)
- ("LATIN CAPITAL LETTER E WITH TILDE BELOW" #x1E1A)
- ("LATIN SMALL LETTER E WITH TILDE BELOW" #x1E1B)
- ("LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE" #x1E1C)
- ("LATIN SMALL LETTER E WITH CEDILLA AND BREVE" #x1E1D)
- ("LATIN CAPITAL LETTER F WITH DOT ABOVE" #x1E1E)
- ("LATIN SMALL LETTER F WITH DOT ABOVE" #x1E1F)
- ("LATIN CAPITAL LETTER G WITH MACRON" #x1E20)
- ("LATIN SMALL LETTER G WITH MACRON" #x1E21)
- ("LATIN CAPITAL LETTER H WITH DOT ABOVE" #x1E22)
- ("LATIN SMALL LETTER H WITH DOT ABOVE" #x1E23)
- ("LATIN CAPITAL LETTER H WITH DOT BELOW" #x1E24)
- ("LATIN SMALL LETTER H WITH DOT BELOW" #x1E25)
- ("LATIN CAPITAL LETTER H WITH DIAERESIS" #x1E26)
- ("LATIN SMALL LETTER H WITH DIAERESIS" #x1E27)
- ("LATIN CAPITAL LETTER H WITH CEDILLA" #x1E28)
- ("LATIN SMALL LETTER H WITH CEDILLA" #x1E29)
- ("LATIN CAPITAL LETTER H WITH BREVE BELOW" #x1E2A)
- ("LATIN SMALL LETTER H WITH BREVE BELOW" #x1E2B)
- ("LATIN CAPITAL LETTER I WITH TILDE BELOW" #x1E2C)
- ("LATIN SMALL LETTER I WITH TILDE BELOW" #x1E2D)
- ("LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE" #x1E2E)
- ("LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE" #x1E2F)
- ("LATIN CAPITAL LETTER K WITH ACUTE" #x1E30)
- ("LATIN SMALL LETTER K WITH ACUTE" #x1E31)
- ("LATIN CAPITAL LETTER K WITH DOT BELOW" #x1E32)
- ("LATIN SMALL LETTER K WITH DOT BELOW" #x1E33)
- ("LATIN CAPITAL LETTER K WITH LINE BELOW" #x1E34)
- ("LATIN SMALL LETTER K WITH LINE BELOW" #x1E35)
- ("LATIN CAPITAL LETTER L WITH DOT BELOW" #x1E36)
- ("LATIN SMALL LETTER L WITH DOT BELOW" #x1E37)
- ("LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON" #x1E38)
- ("LATIN SMALL LETTER L WITH DOT BELOW AND MACRON" #x1E39)
- ("LATIN CAPITAL LETTER L WITH LINE BELOW" #x1E3A)
- ("LATIN SMALL LETTER L WITH LINE BELOW" #x1E3B)
- ("LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW" #x1E3C)
- ("LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW" #x1E3D)
- ("LATIN CAPITAL LETTER M WITH ACUTE" #x1E3E)
- ("LATIN SMALL LETTER M WITH ACUTE" #x1E3F)
- ("LATIN CAPITAL LETTER M WITH DOT ABOVE" #x1E40)
- ("LATIN SMALL LETTER M WITH DOT ABOVE" #x1E41)
- ("LATIN CAPITAL LETTER M WITH DOT BELOW" #x1E42)
- ("LATIN SMALL LETTER M WITH DOT BELOW" #x1E43)
- ("LATIN CAPITAL LETTER N WITH DOT ABOVE" #x1E44)
- ("LATIN SMALL LETTER N WITH DOT ABOVE" #x1E45)
- ("LATIN CAPITAL LETTER N WITH DOT BELOW" #x1E46)
- ("LATIN SMALL LETTER N WITH DOT BELOW" #x1E47)
- ("LATIN CAPITAL LETTER N WITH LINE BELOW" #x1E48)
- ("LATIN SMALL LETTER N WITH LINE BELOW" #x1E49)
- ("LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW" #x1E4A)
- ("LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW" #x1E4B)
- ("LATIN CAPITAL LETTER O WITH TILDE AND ACUTE" #x1E4C)
- ("LATIN SMALL LETTER O WITH TILDE AND ACUTE" #x1E4D)
- ("LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS" #x1E4E)
- ("LATIN SMALL LETTER O WITH TILDE AND DIAERESIS" #x1E4F)
- ("LATIN CAPITAL LETTER O WITH MACRON AND GRAVE" #x1E50)
- ("LATIN SMALL LETTER O WITH MACRON AND GRAVE" #x1E51)
- ("LATIN CAPITAL LETTER O WITH MACRON AND ACUTE" #x1E52)
- ("LATIN SMALL LETTER O WITH MACRON AND ACUTE" #x1E53)
- ("LATIN CAPITAL LETTER P WITH ACUTE" #x1E54)
- ("LATIN SMALL LETTER P WITH ACUTE" #x1E55)
- ("LATIN CAPITAL LETTER P WITH DOT ABOVE" #x1E56)
- ("LATIN SMALL LETTER P WITH DOT ABOVE" #x1E57)
- ("LATIN CAPITAL LETTER R WITH DOT ABOVE" #x1E58)
- ("LATIN SMALL LETTER R WITH DOT ABOVE" #x1E59)
- ("LATIN CAPITAL LETTER R WITH DOT BELOW" #x1E5A)
- ("LATIN SMALL LETTER R WITH DOT BELOW" #x1E5B)
- ("LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON" #x1E5C)
- ("LATIN SMALL LETTER R WITH DOT BELOW AND MACRON" #x1E5D)
- ("LATIN CAPITAL LETTER R WITH LINE BELOW" #x1E5E)
- ("LATIN SMALL LETTER R WITH LINE BELOW" #x1E5F)
- ("LATIN CAPITAL LETTER S WITH DOT ABOVE" #x1E60)
- ("LATIN SMALL LETTER S WITH DOT ABOVE" #x1E61)
- ("LATIN CAPITAL LETTER S WITH DOT BELOW" #x1E62)
- ("LATIN SMALL LETTER S WITH DOT BELOW" #x1E63)
- ("LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE" #x1E64)
- ("LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE" #x1E65)
- ("LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE" #x1E66)
- ("LATIN SMALL LETTER S WITH CARON AND DOT ABOVE" #x1E67)
- ("LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE" #x1E68)
- ("LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE" #x1E69)
- ("LATIN CAPITAL LETTER T WITH DOT ABOVE" #x1E6A)
- ("LATIN SMALL LETTER T WITH DOT ABOVE" #x1E6B)
- ("LATIN CAPITAL LETTER T WITH DOT BELOW" #x1E6C)
- ("LATIN SMALL LETTER T WITH DOT BELOW" #x1E6D)
- ("LATIN CAPITAL LETTER T WITH LINE BELOW" #x1E6E)
- ("LATIN SMALL LETTER T WITH LINE BELOW" #x1E6F)
- ("LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW" #x1E70)
- ("LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW" #x1E71)
- ("LATIN CAPITAL LETTER U WITH DIAERESIS BELOW" #x1E72)
- ("LATIN SMALL LETTER U WITH DIAERESIS BELOW" #x1E73)
- ("LATIN CAPITAL LETTER U WITH TILDE BELOW" #x1E74)
- ("LATIN SMALL LETTER U WITH TILDE BELOW" #x1E75)
- ("LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW" #x1E76)
- ("LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW" #x1E77)
- ("LATIN CAPITAL LETTER U WITH TILDE AND ACUTE" #x1E78)
- ("LATIN SMALL LETTER U WITH TILDE AND ACUTE" #x1E79)
- ("LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS" #x1E7A)
- ("LATIN SMALL LETTER U WITH MACRON AND DIAERESIS" #x1E7B)
- ("LATIN CAPITAL LETTER V WITH TILDE" #x1E7C)
- ("LATIN SMALL LETTER V WITH TILDE" #x1E7D)
- ("LATIN CAPITAL LETTER V WITH DOT BELOW" #x1E7E)
- ("LATIN SMALL LETTER V WITH DOT BELOW" #x1E7F)
- ("LATIN CAPITAL LETTER W WITH GRAVE" #x1E80)
- ("LATIN SMALL LETTER W WITH GRAVE" #x1E81)
- ("LATIN CAPITAL LETTER W WITH ACUTE" #x1E82)
- ("LATIN SMALL LETTER W WITH ACUTE" #x1E83)
- ("LATIN CAPITAL LETTER W WITH DIAERESIS" #x1E84)
- ("LATIN SMALL LETTER W WITH DIAERESIS" #x1E85)
- ("LATIN CAPITAL LETTER W WITH DOT ABOVE" #x1E86)
- ("LATIN SMALL LETTER W WITH DOT ABOVE" #x1E87)
- ("LATIN CAPITAL LETTER W WITH DOT BELOW" #x1E88)
- ("LATIN SMALL LETTER W WITH DOT BELOW" #x1E89)
- ("LATIN CAPITAL LETTER X WITH DOT ABOVE" #x1E8A)
- ("LATIN SMALL LETTER X WITH DOT ABOVE" #x1E8B)
- ("LATIN CAPITAL LETTER X WITH DIAERESIS" #x1E8C)
- ("LATIN SMALL LETTER X WITH DIAERESIS" #x1E8D)
- ("LATIN CAPITAL LETTER Y WITH DOT ABOVE" #x1E8E)
- ("LATIN SMALL LETTER Y WITH DOT ABOVE" #x1E8F)
- ("LATIN CAPITAL LETTER Z WITH CIRCUMFLEX" #x1E90)
- ("LATIN SMALL LETTER Z WITH CIRCUMFLEX" #x1E91)
- ("LATIN CAPITAL LETTER Z WITH DOT BELOW" #x1E92)
- ("LATIN SMALL LETTER Z WITH DOT BELOW" #x1E93)
- ("LATIN CAPITAL LETTER Z WITH LINE BELOW" #x1E94)
- ("LATIN SMALL LETTER Z WITH LINE BELOW" #x1E95)
- ("LATIN SMALL LETTER H WITH LINE BELOW" #x1E96)
- ("LATIN SMALL LETTER T WITH DIAERESIS" #x1E97)
- ("LATIN SMALL LETTER W WITH RING ABOVE" #x1E98)
- ("LATIN SMALL LETTER Y WITH RING ABOVE" #x1E99)
- ("LATIN SMALL LETTER A WITH RIGHT HALF RING" #x1E9A)
- ("LATIN SMALL LETTER LONG S WITH DOT ABOVE" #x1E9B)
- ("LATIN CAPITAL LETTER A WITH DOT BELOW" #x1EA0)
- ("LATIN SMALL LETTER A WITH DOT BELOW" #x1EA1)
- ("LATIN CAPITAL LETTER A WITH HOOK ABOVE" #x1EA2)
- ("LATIN SMALL LETTER A WITH HOOK ABOVE" #x1EA3)
- ("LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE" #x1EA4)
- ("LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE" #x1EA5)
- ("LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE" #x1EA6)
- ("LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE" #x1EA7)
- ("LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE" #x1EA8)
- ("LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE" #x1EA9)
- ("LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE" #x1EAA)
- ("LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE" #x1EAB)
- ("LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW" #x1EAC)
- ("LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW" #x1EAD)
- ("LATIN CAPITAL LETTER A WITH BREVE AND ACUTE" #x1EAE)
- ("LATIN SMALL LETTER A WITH BREVE AND ACUTE" #x1EAF)
- ("LATIN CAPITAL LETTER A WITH BREVE AND GRAVE" #x1EB0)
- ("LATIN SMALL LETTER A WITH BREVE AND GRAVE" #x1EB1)
- ("LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE" #x1EB2)
- ("LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE" #x1EB3)
- ("LATIN CAPITAL LETTER A WITH BREVE AND TILDE" #x1EB4)
- ("LATIN SMALL LETTER A WITH BREVE AND TILDE" #x1EB5)
- ("LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW" #x1EB6)
- ("LATIN SMALL LETTER A WITH BREVE AND DOT BELOW" #x1EB7)
- ("LATIN CAPITAL LETTER E WITH DOT BELOW" #x1EB8)
- ("LATIN SMALL LETTER E WITH DOT BELOW" #x1EB9)
- ("LATIN CAPITAL LETTER E WITH HOOK ABOVE" #x1EBA)
- ("LATIN SMALL LETTER E WITH HOOK ABOVE" #x1EBB)
- ("LATIN CAPITAL LETTER E WITH TILDE" #x1EBC)
- ("LATIN SMALL LETTER E WITH TILDE" #x1EBD)
- ("LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE" #x1EBE)
- ("LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE" #x1EBF)
- ("LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE" #x1EC0)
- ("LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE" #x1EC1)
- ("LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE" #x1EC2)
- ("LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE" #x1EC3)
- ("LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE" #x1EC4)
- ("LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE" #x1EC5)
- ("LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW" #x1EC6)
- ("LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW" #x1EC7)
- ("LATIN CAPITAL LETTER I WITH HOOK ABOVE" #x1EC8)
- ("LATIN SMALL LETTER I WITH HOOK ABOVE" #x1EC9)
- ("LATIN CAPITAL LETTER I WITH DOT BELOW" #x1ECA)
- ("LATIN SMALL LETTER I WITH DOT BELOW" #x1ECB)
- ("LATIN CAPITAL LETTER O WITH DOT BELOW" #x1ECC)
- ("LATIN SMALL LETTER O WITH DOT BELOW" #x1ECD)
- ("LATIN CAPITAL LETTER O WITH HOOK ABOVE" #x1ECE)
- ("LATIN SMALL LETTER O WITH HOOK ABOVE" #x1ECF)
- ("LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE" #x1ED0)
- ("LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE" #x1ED1)
- ("LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE" #x1ED2)
- ("LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE" #x1ED3)
- ("LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE" #x1ED4)
- ("LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE" #x1ED5)
- ("LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE" #x1ED6)
- ("LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE" #x1ED7)
- ("LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW" #x1ED8)
- ("LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW" #x1ED9)
- ("LATIN CAPITAL LETTER O WITH HORN AND ACUTE" #x1EDA)
- ("LATIN SMALL LETTER O WITH HORN AND ACUTE" #x1EDB)
- ("LATIN CAPITAL LETTER O WITH HORN AND GRAVE" #x1EDC)
- ("LATIN SMALL LETTER O WITH HORN AND GRAVE" #x1EDD)
- ("LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE" #x1EDE)
- ("LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE" #x1EDF)
- ("LATIN CAPITAL LETTER O WITH HORN AND TILDE" #x1EE0)
- ("LATIN SMALL LETTER O WITH HORN AND TILDE" #x1EE1)
- ("LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW" #x1EE2)
- ("LATIN SMALL LETTER O WITH HORN AND DOT BELOW" #x1EE3)
- ("LATIN CAPITAL LETTER U WITH DOT BELOW" #x1EE4)
- ("LATIN SMALL LETTER U WITH DOT BELOW" #x1EE5)
- ("LATIN CAPITAL LETTER U WITH HOOK ABOVE" #x1EE6)
- ("LATIN SMALL LETTER U WITH HOOK ABOVE" #x1EE7)
- ("LATIN CAPITAL LETTER U WITH HORN AND ACUTE" #x1EE8)
- ("LATIN SMALL LETTER U WITH HORN AND ACUTE" #x1EE9)
- ("LATIN CAPITAL LETTER U WITH HORN AND GRAVE" #x1EEA)
- ("LATIN SMALL LETTER U WITH HORN AND GRAVE" #x1EEB)
- ("LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE" #x1EEC)
- ("LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE" #x1EED)
- ("LATIN CAPITAL LETTER U WITH HORN AND TILDE" #x1EEE)
- ("LATIN SMALL LETTER U WITH HORN AND TILDE" #x1EEF)
- ("LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW" #x1EF0)
- ("LATIN SMALL LETTER U WITH HORN AND DOT BELOW" #x1EF1)
- ("LATIN CAPITAL LETTER Y WITH GRAVE" #x1EF2)
- ("LATIN SMALL LETTER Y WITH GRAVE" #x1EF3)
- ("LATIN CAPITAL LETTER Y WITH DOT BELOW" #x1EF4)
- ("LATIN SMALL LETTER Y WITH DOT BELOW" #x1EF5)
- ("LATIN CAPITAL LETTER Y WITH HOOK ABOVE" #x1EF6)
- ("LATIN SMALL LETTER Y WITH HOOK ABOVE" #x1EF7)
- ("LATIN CAPITAL LETTER Y WITH TILDE" #x1EF8)
- ("LATIN SMALL LETTER Y WITH TILDE" #x1EF9)
- ))
-
diff --git a/etc/nxml/01F00-01FFF.el b/etc/nxml/01F00-01FFF.el
deleted file mode 100644
index 64e5f26c46..0000000000
--- a/etc/nxml/01F00-01FFF.el
+++ /dev/null
@@ -1,236 +0,0 @@
-(nxml-define-char-name-set 'greek-extended
- '(("GREEK SMALL LETTER ALPHA WITH PSILI" #x1F00)
- ("GREEK SMALL LETTER ALPHA WITH DASIA" #x1F01)
- ("GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA" #x1F02)
- ("GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA" #x1F03)
- ("GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA" #x1F04)
- ("GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA" #x1F05)
- ("GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI" #x1F06)
- ("GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI" #x1F07)
- ("GREEK CAPITAL LETTER ALPHA WITH PSILI" #x1F08)
- ("GREEK CAPITAL LETTER ALPHA WITH DASIA" #x1F09)
- ("GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA" #x1F0A)
- ("GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA" #x1F0B)
- ("GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA" #x1F0C)
- ("GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA" #x1F0D)
- ("GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI" #x1F0E)
- ("GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI" #x1F0F)
- ("GREEK SMALL LETTER EPSILON WITH PSILI" #x1F10)
- ("GREEK SMALL LETTER EPSILON WITH DASIA" #x1F11)
- ("GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA" #x1F12)
- ("GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA" #x1F13)
- ("GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA" #x1F14)
- ("GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA" #x1F15)
- ("GREEK CAPITAL LETTER EPSILON WITH PSILI" #x1F18)
- ("GREEK CAPITAL LETTER EPSILON WITH DASIA" #x1F19)
- ("GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA" #x1F1A)
- ("GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA" #x1F1B)
- ("GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA" #x1F1C)
- ("GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA" #x1F1D)
- ("GREEK SMALL LETTER ETA WITH PSILI" #x1F20)
- ("GREEK SMALL LETTER ETA WITH DASIA" #x1F21)
- ("GREEK SMALL LETTER ETA WITH PSILI AND VARIA" #x1F22)
- ("GREEK SMALL LETTER ETA WITH DASIA AND VARIA" #x1F23)
- ("GREEK SMALL LETTER ETA WITH PSILI AND OXIA" #x1F24)
- ("GREEK SMALL LETTER ETA WITH DASIA AND OXIA" #x1F25)
- ("GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI" #x1F26)
- ("GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI" #x1F27)
- ("GREEK CAPITAL LETTER ETA WITH PSILI" #x1F28)
- ("GREEK CAPITAL LETTER ETA WITH DASIA" #x1F29)
- ("GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA" #x1F2A)
- ("GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA" #x1F2B)
- ("GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA" #x1F2C)
- ("GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA" #x1F2D)
- ("GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI" #x1F2E)
- ("GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI" #x1F2F)
- ("GREEK SMALL LETTER IOTA WITH PSILI" #x1F30)
- ("GREEK SMALL LETTER IOTA WITH DASIA" #x1F31)
- ("GREEK SMALL LETTER IOTA WITH PSILI AND VARIA" #x1F32)
- ("GREEK SMALL LETTER IOTA WITH DASIA AND VARIA" #x1F33)
- ("GREEK SMALL LETTER IOTA WITH PSILI AND OXIA" #x1F34)
- ("GREEK SMALL LETTER IOTA WITH DASIA AND OXIA" #x1F35)
- ("GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI" #x1F36)
- ("GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI" #x1F37)
- ("GREEK CAPITAL LETTER IOTA WITH PSILI" #x1F38)
- ("GREEK CAPITAL LETTER IOTA WITH DASIA" #x1F39)
- ("GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA" #x1F3A)
- ("GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA" #x1F3B)
- ("GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA" #x1F3C)
- ("GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA" #x1F3D)
- ("GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI" #x1F3E)
- ("GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI" #x1F3F)
- ("GREEK SMALL LETTER OMICRON WITH PSILI" #x1F40)
- ("GREEK SMALL LETTER OMICRON WITH DASIA" #x1F41)
- ("GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA" #x1F42)
- ("GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA" #x1F43)
- ("GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA" #x1F44)
- ("GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA" #x1F45)
- ("GREEK CAPITAL LETTER OMICRON WITH PSILI" #x1F48)
- ("GREEK CAPITAL LETTER OMICRON WITH DASIA" #x1F49)
- ("GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA" #x1F4A)
- ("GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA" #x1F4B)
- ("GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA" #x1F4C)
- ("GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA" #x1F4D)
- ("GREEK SMALL LETTER UPSILON WITH PSILI" #x1F50)
- ("GREEK SMALL LETTER UPSILON WITH DASIA" #x1F51)
- ("GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA" #x1F52)
- ("GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA" #x1F53)
- ("GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA" #x1F54)
- ("GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA" #x1F55)
- ("GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI" #x1F56)
- ("GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI" #x1F57)
- ("GREEK CAPITAL LETTER UPSILON WITH DASIA" #x1F59)
- ("GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA" #x1F5B)
- ("GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA" #x1F5D)
- ("GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI" #x1F5F)
- ("GREEK SMALL LETTER OMEGA WITH PSILI" #x1F60)
- ("GREEK SMALL LETTER OMEGA WITH DASIA" #x1F61)
- ("GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA" #x1F62)
- ("GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA" #x1F63)
- ("GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA" #x1F64)
- ("GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA" #x1F65)
- ("GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI" #x1F66)
- ("GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI" #x1F67)
- ("GREEK CAPITAL LETTER OMEGA WITH PSILI" #x1F68)
- ("GREEK CAPITAL LETTER OMEGA WITH DASIA" #x1F69)
- ("GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA" #x1F6A)
- ("GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA" #x1F6B)
- ("GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA" #x1F6C)
- ("GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA" #x1F6D)
- ("GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI" #x1F6E)
- ("GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI" #x1F6F)
- ("GREEK SMALL LETTER ALPHA WITH VARIA" #x1F70)
- ("GREEK SMALL LETTER ALPHA WITH OXIA" #x1F71)
- ("GREEK SMALL LETTER EPSILON WITH VARIA" #x1F72)
- ("GREEK SMALL LETTER EPSILON WITH OXIA" #x1F73)
- ("GREEK SMALL LETTER ETA WITH VARIA" #x1F74)
- ("GREEK SMALL LETTER ETA WITH OXIA" #x1F75)
- ("GREEK SMALL LETTER IOTA WITH VARIA" #x1F76)
- ("GREEK SMALL LETTER IOTA WITH OXIA" #x1F77)
- ("GREEK SMALL LETTER OMICRON WITH VARIA" #x1F78)
- ("GREEK SMALL LETTER OMICRON WITH OXIA" #x1F79)
- ("GREEK SMALL LETTER UPSILON WITH VARIA" #x1F7A)
- ("GREEK SMALL LETTER UPSILON WITH OXIA" #x1F7B)
- ("GREEK SMALL LETTER OMEGA WITH VARIA" #x1F7C)
- ("GREEK SMALL LETTER OMEGA WITH OXIA" #x1F7D)
- ("GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI" #x1F80)
- ("GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI" #x1F81)
- ("GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI" #x1F82)
- ("GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI" #x1F83)
- ("GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI" #x1F84)
- ("GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI" #x1F85)
- ("GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI" #x1F86)
- ("GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI" #x1F87)
- ("GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI" #x1F88)
- ("GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI" #x1F89)
- ("GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI" #x1F8A)
- ("GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI" #x1F8B)
- ("GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI" #x1F8C)
- ("GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI" #x1F8D)
- ("GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI" #x1F8E)
- ("GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI" #x1F8F)
- ("GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI" #x1F90)
- ("GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI" #x1F91)
- ("GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI" #x1F92)
- ("GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI" #x1F93)
- ("GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI" #x1F94)
- ("GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI" #x1F95)
- ("GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI" #x1F96)
- ("GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI" #x1F97)
- ("GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI" #x1F98)
- ("GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI" #x1F99)
- ("GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI" #x1F9A)
- ("GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI" #x1F9B)
- ("GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI" #x1F9C)
- ("GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI" #x1F9D)
- ("GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI" #x1F9E)
- ("GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI" #x1F9F)
- ("GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI" #x1FA0)
- ("GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI" #x1FA1)
- ("GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI" #x1FA2)
- ("GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI" #x1FA3)
- ("GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI" #x1FA4)
- ("GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI" #x1FA5)
- ("GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI" #x1FA6)
- ("GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI" #x1FA7)
- ("GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI" #x1FA8)
- ("GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI" #x1FA9)
- ("GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI" #x1FAA)
- ("GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI" #x1FAB)
- ("GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI" #x1FAC)
- ("GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI" #x1FAD)
- ("GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI" #x1FAE)
- ("GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI" #x1FAF)
- ("GREEK SMALL LETTER ALPHA WITH VRACHY" #x1FB0)
- ("GREEK SMALL LETTER ALPHA WITH MACRON" #x1FB1)
- ("GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI" #x1FB2)
- ("GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI" #x1FB3)
- ("GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI" #x1FB4)
- ("GREEK SMALL LETTER ALPHA WITH PERISPOMENI" #x1FB6)
- ("GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI" #x1FB7)
- ("GREEK CAPITAL LETTER ALPHA WITH VRACHY" #x1FB8)
- ("GREEK CAPITAL LETTER ALPHA WITH MACRON" #x1FB9)
- ("GREEK CAPITAL LETTER ALPHA WITH VARIA" #x1FBA)
- ("GREEK CAPITAL LETTER ALPHA WITH OXIA" #x1FBB)
- ("GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI" #x1FBC)
- ("GREEK KORONIS" #x1FBD)
- ("GREEK PROSGEGRAMMENI" #x1FBE)
- ("GREEK PSILI" #x1FBF)
- ("GREEK PERISPOMENI" #x1FC0)
- ("GREEK DIALYTIKA AND PERISPOMENI" #x1FC1)
- ("GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI" #x1FC2)
- ("GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI" #x1FC3)
- ("GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI" #x1FC4)
- ("GREEK SMALL LETTER ETA WITH PERISPOMENI" #x1FC6)
- ("GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI" #x1FC7)
- ("GREEK CAPITAL LETTER EPSILON WITH VARIA" #x1FC8)
- ("GREEK CAPITAL LETTER EPSILON WITH OXIA" #x1FC9)
- ("GREEK CAPITAL LETTER ETA WITH VARIA" #x1FCA)
- ("GREEK CAPITAL LETTER ETA WITH OXIA" #x1FCB)
- ("GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI" #x1FCC)
- ("GREEK PSILI AND VARIA" #x1FCD)
- ("GREEK PSILI AND OXIA" #x1FCE)
- ("GREEK PSILI AND PERISPOMENI" #x1FCF)
- ("GREEK SMALL LETTER IOTA WITH VRACHY" #x1FD0)
- ("GREEK SMALL LETTER IOTA WITH MACRON" #x1FD1)
- ("GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA" #x1FD2)
- ("GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA" #x1FD3)
- ("GREEK SMALL LETTER IOTA WITH PERISPOMENI" #x1FD6)
- ("GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI" #x1FD7)
- ("GREEK CAPITAL LETTER IOTA WITH VRACHY" #x1FD8)
- ("GREEK CAPITAL LETTER IOTA WITH MACRON" #x1FD9)
- ("GREEK CAPITAL LETTER IOTA WITH VARIA" #x1FDA)
- ("GREEK CAPITAL LETTER IOTA WITH OXIA" #x1FDB)
- ("GREEK DASIA AND VARIA" #x1FDD)
- ("GREEK DASIA AND OXIA" #x1FDE)
- ("GREEK DASIA AND PERISPOMENI" #x1FDF)
- ("GREEK SMALL LETTER UPSILON WITH VRACHY" #x1FE0)
- ("GREEK SMALL LETTER UPSILON WITH MACRON" #x1FE1)
- ("GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA" #x1FE2)
- ("GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA" #x1FE3)
- ("GREEK SMALL LETTER RHO WITH PSILI" #x1FE4)
- ("GREEK SMALL LETTER RHO WITH DASIA" #x1FE5)
- ("GREEK SMALL LETTER UPSILON WITH PERISPOMENI" #x1FE6)
- ("GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI" #x1FE7)
- ("GREEK CAPITAL LETTER UPSILON WITH VRACHY" #x1FE8)
- ("GREEK CAPITAL LETTER UPSILON WITH MACRON" #x1FE9)
- ("GREEK CAPITAL LETTER UPSILON WITH VARIA" #x1FEA)
- ("GREEK CAPITAL LETTER UPSILON WITH OXIA" #x1FEB)
- ("GREEK CAPITAL LETTER RHO WITH DASIA" #x1FEC)
- ("GREEK DIALYTIKA AND VARIA" #x1FED)
- ("GREEK DIALYTIKA AND OXIA" #x1FEE)
- ("GREEK VARIA" #x1FEF)
- ("GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI" #x1FF2)
- ("GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI" #x1FF3)
- ("GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI" #x1FF4)
- ("GREEK SMALL LETTER OMEGA WITH PERISPOMENI" #x1FF6)
- ("GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI" #x1FF7)
- ("GREEK CAPITAL LETTER OMICRON WITH VARIA" #x1FF8)
- ("GREEK CAPITAL LETTER OMICRON WITH OXIA" #x1FF9)
- ("GREEK CAPITAL LETTER OMEGA WITH VARIA" #x1FFA)
- ("GREEK CAPITAL LETTER OMEGA WITH OXIA" #x1FFB)
- ("GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI" #x1FFC)
- ("GREEK OXIA" #x1FFD)
- ("GREEK DASIA" #x1FFE)
- ))
-
diff --git a/etc/nxml/02000-0206F.el b/etc/nxml/02000-0206F.el
deleted file mode 100644
index 36dedde38e..0000000000
--- a/etc/nxml/02000-0206F.el
+++ /dev/null
@@ -1,98 +0,0 @@
-(nxml-define-char-name-set 'general-punctuation
- '(("EN QUAD" #x2000)
- ("EM QUAD" #x2001)
- ("EN SPACE" #x2002)
- ("EM SPACE" #x2003)
- ("THREE-PER-EM SPACE" #x2004)
- ("FOUR-PER-EM SPACE" #x2005)
- ("SIX-PER-EM SPACE" #x2006)
- ("FIGURE SPACE" #x2007)
- ("PUNCTUATION SPACE" #x2008)
- ("THIN SPACE" #x2009)
- ("HAIR SPACE" #x200A)
- ("ZERO WIDTH SPACE" #x200B)
- ("ZERO WIDTH NON-JOINER" #x200C)
- ("ZERO WIDTH JOINER" #x200D)
- ("LEFT-TO-RIGHT MARK" #x200E)
- ("RIGHT-TO-LEFT MARK" #x200F)
- ("HYPHEN" #x2010)
- ("NON-BREAKING HYPHEN" #x2011)
- ("FIGURE DASH" #x2012)
- ("EN DASH" #x2013)
- ("EM DASH" #x2014)
- ("HORIZONTAL BAR" #x2015)
- ("DOUBLE VERTICAL LINE" #x2016)
- ("DOUBLE LOW LINE" #x2017)
- ("LEFT SINGLE QUOTATION MARK" #x2018)
- ("RIGHT SINGLE QUOTATION MARK" #x2019)
- ("SINGLE LOW-9 QUOTATION MARK" #x201A)
- ("SINGLE HIGH-REVERSED-9 QUOTATION MARK" #x201B)
- ("LEFT DOUBLE QUOTATION MARK" #x201C)
- ("RIGHT DOUBLE QUOTATION MARK" #x201D)
- ("DOUBLE LOW-9 QUOTATION MARK" #x201E)
- ("DOUBLE HIGH-REVERSED-9 QUOTATION MARK" #x201F)
- ("DAGGER" #x2020)
- ("DOUBLE DAGGER" #x2021)
- ("BULLET" #x2022)
- ("TRIANGULAR BULLET" #x2023)
- ("ONE DOT LEADER" #x2024)
- ("TWO DOT LEADER" #x2025)
- ("HORIZONTAL ELLIPSIS" #x2026)
- ("HYPHENATION POINT" #x2027)
- ("LINE SEPARATOR" #x2028)
- ("PARAGRAPH SEPARATOR" #x2029)
- ("LEFT-TO-RIGHT EMBEDDING" #x202A)
- ("RIGHT-TO-LEFT EMBEDDING" #x202B)
- ("POP DIRECTIONAL FORMATTING" #x202C)
- ("LEFT-TO-RIGHT OVERRIDE" #x202D)
- ("RIGHT-TO-LEFT OVERRIDE" #x202E)
- ("NARROW NO-BREAK SPACE" #x202F)
- ("PER MILLE SIGN" #x2030)
- ("PER TEN THOUSAND SIGN" #x2031)
- ("PRIME" #x2032)
- ("DOUBLE PRIME" #x2033)
- ("TRIPLE PRIME" #x2034)
- ("REVERSED PRIME" #x2035)
- ("REVERSED DOUBLE PRIME" #x2036)
- ("REVERSED TRIPLE PRIME" #x2037)
- ("CARET" #x2038)
- ("SINGLE LEFT-POINTING ANGLE QUOTATION MARK" #x2039)
- ("SINGLE RIGHT-POINTING ANGLE QUOTATION MARK" #x203A)
- ("REFERENCE MARK" #x203B)
- ("DOUBLE EXCLAMATION MARK" #x203C)
- ("INTERROBANG" #x203D)
- ("OVERLINE" #x203E)
- ("UNDERTIE" #x203F)
- ("CHARACTER TIE" #x2040)
- ("CARET INSERTION POINT" #x2041)
- ("ASTERISM" #x2042)
- ("HYPHEN BULLET" #x2043)
- ("FRACTION SLASH" #x2044)
- ("LEFT SQUARE BRACKET WITH QUILL" #x2045)
- ("RIGHT SQUARE BRACKET WITH QUILL" #x2046)
- ("DOUBLE QUESTION MARK" #x2047)
- ("QUESTION EXCLAMATION MARK" #x2048)
- ("EXCLAMATION QUESTION MARK" #x2049)
- ("TIRONIAN SIGN ET" #x204A)
- ("REVERSED PILCROW SIGN" #x204B)
- ("BLACK LEFTWARDS BULLET" #x204C)
- ("BLACK RIGHTWARDS BULLET" #x204D)
- ("LOW ASTERISK" #x204E)
- ("REVERSED SEMICOLON" #x204F)
- ("CLOSE UP" #x2050)
- ("TWO ASTERISKS ALIGNED VERTICALLY" #x2051)
- ("COMMERCIAL MINUS SIGN" #x2052)
- ("QUADRUPLE PRIME" #x2057)
- ("MEDIUM MATHEMATICAL SPACE" #x205F)
- ("WORD JOINER" #x2060)
- ("FUNCTION APPLICATION" #x2061)
- ("INVISIBLE TIMES" #x2062)
- ("INVISIBLE SEPARATOR" #x2063)
- ("INHIBIT SYMMETRIC SWAPPING" #x206A)
- ("ACTIVATE SYMMETRIC SWAPPING" #x206B)
- ("INHIBIT ARABIC FORM SHAPING" #x206C)
- ("ACTIVATE ARABIC FORM SHAPING" #x206D)
- ("NATIONAL DIGIT SHAPES" #x206E)
- ("NOMINAL DIGIT SHAPES" #x206F)
- ))
-
diff --git a/etc/nxml/02070-0209F.el b/etc/nxml/02070-0209F.el
deleted file mode 100644
index e7c3f215ce..0000000000
--- a/etc/nxml/02070-0209F.el
+++ /dev/null
@@ -1,32 +0,0 @@
-(nxml-define-char-name-set 'superscripts-and-subscripts
- '(("SUPERSCRIPT ZERO" #x2070)
- ("SUPERSCRIPT LATIN SMALL LETTER I" #x2071)
- ("SUPERSCRIPT FOUR" #x2074)
- ("SUPERSCRIPT FIVE" #x2075)
- ("SUPERSCRIPT SIX" #x2076)
- ("SUPERSCRIPT SEVEN" #x2077)
- ("SUPERSCRIPT EIGHT" #x2078)
- ("SUPERSCRIPT NINE" #x2079)
- ("SUPERSCRIPT PLUS SIGN" #x207A)
- ("SUPERSCRIPT MINUS" #x207B)
- ("SUPERSCRIPT EQUALS SIGN" #x207C)
- ("SUPERSCRIPT LEFT PARENTHESIS" #x207D)
- ("SUPERSCRIPT RIGHT PARENTHESIS" #x207E)
- ("SUPERSCRIPT LATIN SMALL LETTER N" #x207F)
- ("SUBSCRIPT ZERO" #x2080)
- ("SUBSCRIPT ONE" #x2081)
- ("SUBSCRIPT TWO" #x2082)
- ("SUBSCRIPT THREE" #x2083)
- ("SUBSCRIPT FOUR" #x2084)
- ("SUBSCRIPT FIVE" #x2085)
- ("SUBSCRIPT SIX" #x2086)
- ("SUBSCRIPT SEVEN" #x2087)
- ("SUBSCRIPT EIGHT" #x2088)
- ("SUBSCRIPT NINE" #x2089)
- ("SUBSCRIPT PLUS SIGN" #x208A)
- ("SUBSCRIPT MINUS" #x208B)
- ("SUBSCRIPT EQUALS SIGN" #x208C)
- ("SUBSCRIPT LEFT PARENTHESIS" #x208D)
- ("SUBSCRIPT RIGHT PARENTHESIS" #x208E)
- ))
-
diff --git a/etc/nxml/020A0-020CF.el b/etc/nxml/020A0-020CF.el
deleted file mode 100644
index a1df8bc204..0000000000
--- a/etc/nxml/020A0-020CF.el
+++ /dev/null
@@ -1,21 +0,0 @@
-(nxml-define-char-name-set 'currency-symbols
- '(("EURO-CURRENCY SIGN" #x20A0)
- ("COLON SIGN" #x20A1)
- ("CRUZEIRO SIGN" #x20A2)
- ("FRENCH FRANC SIGN" #x20A3)
- ("LIRA SIGN" #x20A4)
- ("MILL SIGN" #x20A5)
- ("NAIRA SIGN" #x20A6)
- ("PESETA SIGN" #x20A7)
- ("RUPEE SIGN" #x20A8)
- ("WON SIGN" #x20A9)
- ("NEW SHEQEL SIGN" #x20AA)
- ("DONG SIGN" #x20AB)
- ("EURO SIGN" #x20AC)
- ("KIP SIGN" #x20AD)
- ("TUGRIK SIGN" #x20AE)
- ("DRACHMA SIGN" #x20AF)
- ("GERMAN PENNY SIGN" #x20B0)
- ("PESO SIGN" #x20B1)
- ))
-
diff --git a/etc/nxml/020D0-020FF.el b/etc/nxml/020D0-020FF.el
deleted file mode 100644
index 7dcc145e84..0000000000
--- a/etc/nxml/020D0-020FF.el
+++ /dev/null
@@ -1,30 +0,0 @@
-(nxml-define-char-name-set 'combining-diacritical-marks-for-symbols
- '(("COMBINING LEFT HARPOON ABOVE" #x20D0)
- ("COMBINING RIGHT HARPOON ABOVE" #x20D1)
- ("COMBINING LONG VERTICAL LINE OVERLAY" #x20D2)
- ("COMBINING SHORT VERTICAL LINE OVERLAY" #x20D3)
- ("COMBINING ANTICLOCKWISE ARROW ABOVE" #x20D4)
- ("COMBINING CLOCKWISE ARROW ABOVE" #x20D5)
- ("COMBINING LEFT ARROW ABOVE" #x20D6)
- ("COMBINING RIGHT ARROW ABOVE" #x20D7)
- ("COMBINING RING OVERLAY" #x20D8)
- ("COMBINING CLOCKWISE RING OVERLAY" #x20D9)
- ("COMBINING ANTICLOCKWISE RING OVERLAY" #x20DA)
- ("COMBINING THREE DOTS ABOVE" #x20DB)
- ("COMBINING FOUR DOTS ABOVE" #x20DC)
- ("COMBINING ENCLOSING CIRCLE" #x20DD)
- ("COMBINING ENCLOSING SQUARE" #x20DE)
- ("COMBINING ENCLOSING DIAMOND" #x20DF)
- ("COMBINING ENCLOSING CIRCLE BACKSLASH" #x20E0)
- ("COMBINING LEFT RIGHT ARROW ABOVE" #x20E1)
- ("COMBINING ENCLOSING SCREEN" #x20E2)
- ("COMBINING ENCLOSING KEYCAP" #x20E3)
- ("COMBINING ENCLOSING UPWARD POINTING TRIANGLE" #x20E4)
- ("COMBINING REVERSE SOLIDUS OVERLAY" #x20E5)
- ("COMBINING DOUBLE VERTICAL STROKE OVERLAY" #x20E6)
- ("COMBINING ANNUITY SYMBOL" #x20E7)
- ("COMBINING TRIPLE UNDERDOT" #x20E8)
- ("COMBINING WIDE BRIDGE ABOVE" #x20E9)
- ("COMBINING LEFTWARDS ARROW OVERLAY" #x20EA)
- ))
-
diff --git a/etc/nxml/02100-0214F.el b/etc/nxml/02100-0214F.el
deleted file mode 100644
index df92477cf6..0000000000
--- a/etc/nxml/02100-0214F.el
+++ /dev/null
@@ -1,77 +0,0 @@
-(nxml-define-char-name-set 'letterlike-symbols
- '(("ACCOUNT OF" #x2100)
- ("ADDRESSED TO THE SUBJECT" #x2101)
- ("DOUBLE-STRUCK CAPITAL C" #x2102)
- ("DEGREE CELSIUS" #x2103)
- ("CENTRE LINE SYMBOL" #x2104)
- ("CARE OF" #x2105)
- ("CADA UNA" #x2106)
- ("EULER CONSTANT" #x2107)
- ("SCRUPLE" #x2108)
- ("DEGREE FAHRENHEIT" #x2109)
- ("SCRIPT SMALL G" #x210A)
- ("SCRIPT CAPITAL H" #x210B)
- ("BLACK-LETTER CAPITAL H" #x210C)
- ("DOUBLE-STRUCK CAPITAL H" #x210D)
- ("PLANCK CONSTANT" #x210E)
- ("PLANCK CONSTANT OVER TWO PI" #x210F)
- ("SCRIPT CAPITAL I" #x2110)
- ("BLACK-LETTER CAPITAL I" #x2111)
- ("SCRIPT CAPITAL L" #x2112)
- ("SCRIPT SMALL L" #x2113)
- ("L B BAR SYMBOL" #x2114)
- ("DOUBLE-STRUCK CAPITAL N" #x2115)
- ("NUMERO SIGN" #x2116)
- ("SOUND RECORDING COPYRIGHT" #x2117)
- ("SCRIPT CAPITAL P" #x2118)
- ("DOUBLE-STRUCK CAPITAL P" #x2119)
- ("DOUBLE-STRUCK CAPITAL Q" #x211A)
- ("SCRIPT CAPITAL R" #x211B)
- ("BLACK-LETTER CAPITAL R" #x211C)
- ("DOUBLE-STRUCK CAPITAL R" #x211D)
- ("PRESCRIPTION TAKE" #x211E)
- ("RESPONSE" #x211F)
- ("SERVICE MARK" #x2120)
- ("TELEPHONE SIGN" #x2121)
- ("TRADE MARK SIGN" #x2122)
- ("VERSICLE" #x2123)
- ("DOUBLE-STRUCK CAPITAL Z" #x2124)
- ("OUNCE SIGN" #x2125)
- ("OHM SIGN" #x2126)
- ("INVERTED OHM SIGN" #x2127)
- ("BLACK-LETTER CAPITAL Z" #x2128)
- ("TURNED GREEK SMALL LETTER IOTA" #x2129)
- ("KELVIN SIGN" #x212A)
- ("ANGSTROM SIGN" #x212B)
- ("SCRIPT CAPITAL B" #x212C)
- ("BLACK-LETTER CAPITAL C" #x212D)
- ("ESTIMATED SYMBOL" #x212E)
- ("SCRIPT SMALL E" #x212F)
- ("SCRIPT CAPITAL E" #x2130)
- ("SCRIPT CAPITAL F" #x2131)
- ("TURNED CAPITAL F" #x2132)
- ("SCRIPT CAPITAL M" #x2133)
- ("SCRIPT SMALL O" #x2134)
- ("ALEF SYMBOL" #x2135)
- ("BET SYMBOL" #x2136)
- ("GIMEL SYMBOL" #x2137)
- ("DALET SYMBOL" #x2138)
- ("INFORMATION SOURCE" #x2139)
- ("ROTATED CAPITAL Q" #x213A)
- ("DOUBLE-STRUCK SMALL GAMMA" #x213D)
- ("DOUBLE-STRUCK CAPITAL GAMMA" #x213E)
- ("DOUBLE-STRUCK CAPITAL PI" #x213F)
- ("DOUBLE-STRUCK N-ARY SUMMATION" #x2140)
- ("TURNED SANS-SERIF CAPITAL G" #x2141)
- ("TURNED SANS-SERIF CAPITAL L" #x2142)
- ("REVERSED SANS-SERIF CAPITAL L" #x2143)
- ("TURNED SANS-SERIF CAPITAL Y" #x2144)
- ("DOUBLE-STRUCK ITALIC CAPITAL D" #x2145)
- ("DOUBLE-STRUCK ITALIC SMALL D" #x2146)
- ("DOUBLE-STRUCK ITALIC SMALL E" #x2147)
- ("DOUBLE-STRUCK ITALIC SMALL I" #x2148)
- ("DOUBLE-STRUCK ITALIC SMALL J" #x2149)
- ("PROPERTY LINE" #x214A)
- ("TURNED AMPERSAND" #x214B)
- ))
-
diff --git a/etc/nxml/02150-0218F.el b/etc/nxml/02150-0218F.el
deleted file mode 100644
index e4b7bcbac7..0000000000
--- a/etc/nxml/02150-0218F.el
+++ /dev/null
@@ -1,52 +0,0 @@
-(nxml-define-char-name-set 'number-forms
- '(("VULGAR FRACTION ONE THIRD" #x2153)
- ("VULGAR FRACTION TWO THIRDS" #x2154)
- ("VULGAR FRACTION ONE FIFTH" #x2155)
- ("VULGAR FRACTION TWO FIFTHS" #x2156)
- ("VULGAR FRACTION THREE FIFTHS" #x2157)
- ("VULGAR FRACTION FOUR FIFTHS" #x2158)
- ("VULGAR FRACTION ONE SIXTH" #x2159)
- ("VULGAR FRACTION FIVE SIXTHS" #x215A)
- ("VULGAR FRACTION ONE EIGHTH" #x215B)
- ("VULGAR FRACTION THREE EIGHTHS" #x215C)
- ("VULGAR FRACTION FIVE EIGHTHS" #x215D)
- ("VULGAR FRACTION SEVEN EIGHTHS" #x215E)
- ("FRACTION NUMERATOR ONE" #x215F)
- ("ROMAN NUMERAL ONE" #x2160)
- ("ROMAN NUMERAL TWO" #x2161)
- ("ROMAN NUMERAL THREE" #x2162)
- ("ROMAN NUMERAL FOUR" #x2163)
- ("ROMAN NUMERAL FIVE" #x2164)
- ("ROMAN NUMERAL SIX" #x2165)
- ("ROMAN NUMERAL SEVEN" #x2166)
- ("ROMAN NUMERAL EIGHT" #x2167)
- ("ROMAN NUMERAL NINE" #x2168)
- ("ROMAN NUMERAL TEN" #x2169)
- ("ROMAN NUMERAL ELEVEN" #x216A)
- ("ROMAN NUMERAL TWELVE" #x216B)
- ("ROMAN NUMERAL FIFTY" #x216C)
- ("ROMAN NUMERAL ONE HUNDRED" #x216D)
- ("ROMAN NUMERAL FIVE HUNDRED" #x216E)
- ("ROMAN NUMERAL ONE THOUSAND" #x216F)
- ("SMALL ROMAN NUMERAL ONE" #x2170)
- ("SMALL ROMAN NUMERAL TWO" #x2171)
- ("SMALL ROMAN NUMERAL THREE" #x2172)
- ("SMALL ROMAN NUMERAL FOUR" #x2173)
- ("SMALL ROMAN NUMERAL FIVE" #x2174)
- ("SMALL ROMAN NUMERAL SIX" #x2175)
- ("SMALL ROMAN NUMERAL SEVEN" #x2176)
- ("SMALL ROMAN NUMERAL EIGHT" #x2177)
- ("SMALL ROMAN NUMERAL NINE" #x2178)
- ("SMALL ROMAN NUMERAL TEN" #x2179)
- ("SMALL ROMAN NUMERAL ELEVEN" #x217A)
- ("SMALL ROMAN NUMERAL TWELVE" #x217B)
- ("SMALL ROMAN NUMERAL FIFTY" #x217C)
- ("SMALL ROMAN NUMERAL ONE HUNDRED" #x217D)
- ("SMALL ROMAN NUMERAL FIVE HUNDRED" #x217E)
- ("SMALL ROMAN NUMERAL ONE THOUSAND" #x217F)
- ("ROMAN NUMERAL ONE THOUSAND C D" #x2180)
- ("ROMAN NUMERAL FIVE THOUSAND" #x2181)
- ("ROMAN NUMERAL TEN THOUSAND" #x2182)
- ("ROMAN NUMERAL REVERSED ONE HUNDRED" #x2183)
- ))
-
diff --git a/etc/nxml/02190-021FF.el b/etc/nxml/02190-021FF.el
deleted file mode 100644
index e8b6861b07..0000000000
--- a/etc/nxml/02190-021FF.el
+++ /dev/null
@@ -1,115 +0,0 @@
-(nxml-define-char-name-set 'arrows
- '(("LEFTWARDS ARROW" #x2190)
- ("UPWARDS ARROW" #x2191)
- ("RIGHTWARDS ARROW" #x2192)
- ("DOWNWARDS ARROW" #x2193)
- ("LEFT RIGHT ARROW" #x2194)
- ("UP DOWN ARROW" #x2195)
- ("NORTH WEST ARROW" #x2196)
- ("NORTH EAST ARROW" #x2197)
- ("SOUTH EAST ARROW" #x2198)
- ("SOUTH WEST ARROW" #x2199)
- ("LEFTWARDS ARROW WITH STROKE" #x219A)
- ("RIGHTWARDS ARROW WITH STROKE" #x219B)
- ("LEFTWARDS WAVE ARROW" #x219C)
- ("RIGHTWARDS WAVE ARROW" #x219D)
- ("LEFTWARDS TWO HEADED ARROW" #x219E)
- ("UPWARDS TWO HEADED ARROW" #x219F)
- ("RIGHTWARDS TWO HEADED ARROW" #x21A0)
- ("DOWNWARDS TWO HEADED ARROW" #x21A1)
- ("LEFTWARDS ARROW WITH TAIL" #x21A2)
- ("RIGHTWARDS ARROW WITH TAIL" #x21A3)
- ("LEFTWARDS ARROW FROM BAR" #x21A4)
- ("UPWARDS ARROW FROM BAR" #x21A5)
- ("RIGHTWARDS ARROW FROM BAR" #x21A6)
- ("DOWNWARDS ARROW FROM BAR" #x21A7)
- ("UP DOWN ARROW WITH BASE" #x21A8)
- ("LEFTWARDS ARROW WITH HOOK" #x21A9)
- ("RIGHTWARDS ARROW WITH HOOK" #x21AA)
- ("LEFTWARDS ARROW WITH LOOP" #x21AB)
- ("RIGHTWARDS ARROW WITH LOOP" #x21AC)
- ("LEFT RIGHT WAVE ARROW" #x21AD)
- ("LEFT RIGHT ARROW WITH STROKE" #x21AE)
- ("DOWNWARDS ZIGZAG ARROW" #x21AF)
- ("UPWARDS ARROW WITH TIP LEFTWARDS" #x21B0)
- ("UPWARDS ARROW WITH TIP RIGHTWARDS" #x21B1)
- ("DOWNWARDS ARROW WITH TIP LEFTWARDS" #x21B2)
- ("DOWNWARDS ARROW WITH TIP RIGHTWARDS" #x21B3)
- ("RIGHTWARDS ARROW WITH CORNER DOWNWARDS" #x21B4)
- ("DOWNWARDS ARROW WITH CORNER LEFTWARDS" #x21B5)
- ("ANTICLOCKWISE TOP SEMICIRCLE ARROW" #x21B6)
- ("CLOCKWISE TOP SEMICIRCLE ARROW" #x21B7)
- ("NORTH WEST ARROW TO LONG BAR" #x21B8)
- ("LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR" #x21B9)
- ("ANTICLOCKWISE OPEN CIRCLE ARROW" #x21BA)
- ("CLOCKWISE OPEN CIRCLE ARROW" #x21BB)
- ("LEFTWARDS HARPOON WITH BARB UPWARDS" #x21BC)
- ("LEFTWARDS HARPOON WITH BARB DOWNWARDS" #x21BD)
- ("UPWARDS HARPOON WITH BARB RIGHTWARDS" #x21BE)
- ("UPWARDS HARPOON WITH BARB LEFTWARDS" #x21BF)
- ("RIGHTWARDS HARPOON WITH BARB UPWARDS" #x21C0)
- ("RIGHTWARDS HARPOON WITH BARB DOWNWARDS" #x21C1)
- ("DOWNWARDS HARPOON WITH BARB RIGHTWARDS" #x21C2)
- ("DOWNWARDS HARPOON WITH BARB LEFTWARDS" #x21C3)
- ("RIGHTWARDS ARROW OVER LEFTWARDS ARROW" #x21C4)
- ("UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW" #x21C5)
- ("LEFTWARDS ARROW OVER RIGHTWARDS ARROW" #x21C6)
- ("LEFTWARDS PAIRED ARROWS" #x21C7)
- ("UPWARDS PAIRED ARROWS" #x21C8)
- ("RIGHTWARDS PAIRED ARROWS" #x21C9)
- ("DOWNWARDS PAIRED ARROWS" #x21CA)
- ("LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON" #x21CB)
- ("RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON" #x21CC)
- ("LEFTWARDS DOUBLE ARROW WITH STROKE" #x21CD)
- ("LEFT RIGHT DOUBLE ARROW WITH STROKE" #x21CE)
- ("RIGHTWARDS DOUBLE ARROW WITH STROKE" #x21CF)
- ("LEFTWARDS DOUBLE ARROW" #x21D0)
- ("UPWARDS DOUBLE ARROW" #x21D1)
- ("RIGHTWARDS DOUBLE ARROW" #x21D2)
- ("DOWNWARDS DOUBLE ARROW" #x21D3)
- ("LEFT RIGHT DOUBLE ARROW" #x21D4)
- ("UP DOWN DOUBLE ARROW" #x21D5)
- ("NORTH WEST DOUBLE ARROW" #x21D6)
- ("NORTH EAST DOUBLE ARROW" #x21D7)
- ("SOUTH EAST DOUBLE ARROW" #x21D8)
- ("SOUTH WEST DOUBLE ARROW" #x21D9)
- ("LEFTWARDS TRIPLE ARROW" #x21DA)
- ("RIGHTWARDS TRIPLE ARROW" #x21DB)
- ("LEFTWARDS SQUIGGLE ARROW" #x21DC)
- ("RIGHTWARDS SQUIGGLE ARROW" #x21DD)
- ("UPWARDS ARROW WITH DOUBLE STROKE" #x21DE)
- ("DOWNWARDS ARROW WITH DOUBLE STROKE" #x21DF)
- ("LEFTWARDS DASHED ARROW" #x21E0)
- ("UPWARDS DASHED ARROW" #x21E1)
- ("RIGHTWARDS DASHED ARROW" #x21E2)
- ("DOWNWARDS DASHED ARROW" #x21E3)
- ("LEFTWARDS ARROW TO BAR" #x21E4)
- ("RIGHTWARDS ARROW TO BAR" #x21E5)
- ("LEFTWARDS WHITE ARROW" #x21E6)
- ("UPWARDS WHITE ARROW" #x21E7)
- ("RIGHTWARDS WHITE ARROW" #x21E8)
- ("DOWNWARDS WHITE ARROW" #x21E9)
- ("UPWARDS WHITE ARROW FROM BAR" #x21EA)
- ("UPWARDS WHITE ARROW ON PEDESTAL" #x21EB)
- ("UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR" #x21EC)
- ("UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR" #x21ED)
- ("UPWARDS WHITE DOUBLE ARROW" #x21EE)
- ("UPWARDS WHITE DOUBLE ARROW ON PEDESTAL" #x21EF)
- ("RIGHTWARDS WHITE ARROW FROM WALL" #x21F0)
- ("NORTH WEST ARROW TO CORNER" #x21F1)
- ("SOUTH EAST ARROW TO CORNER" #x21F2)
- ("UP DOWN WHITE ARROW" #x21F3)
- ("RIGHT ARROW WITH SMALL CIRCLE" #x21F4)
- ("DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW" #x21F5)
- ("THREE RIGHTWARDS ARROWS" #x21F6)
- ("LEFTWARDS ARROW WITH VERTICAL STROKE" #x21F7)
- ("RIGHTWARDS ARROW WITH VERTICAL STROKE" #x21F8)
- ("LEFT RIGHT ARROW WITH VERTICAL STROKE" #x21F9)
- ("LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE" #x21FA)
- ("RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE" #x21FB)
- ("LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE" #x21FC)
- ("LEFTWARDS OPEN-HEADED ARROW" #x21FD)
- ("RIGHTWARDS OPEN-HEADED ARROW" #x21FE)
- ("LEFT RIGHT OPEN-HEADED ARROW" #x21FF)
- ))
-
diff --git a/etc/nxml/02200-022FF.el b/etc/nxml/02200-022FF.el
deleted file mode 100644
index 2889a1c956..0000000000
--- a/etc/nxml/02200-022FF.el
+++ /dev/null
@@ -1,259 +0,0 @@
-(nxml-define-char-name-set 'mathematical-operators
- '(("FOR ALL" #x2200)
- ("COMPLEMENT" #x2201)
- ("PARTIAL DIFFERENTIAL" #x2202)
- ("THERE EXISTS" #x2203)
- ("THERE DOES NOT EXIST" #x2204)
- ("EMPTY SET" #x2205)
- ("INCREMENT" #x2206)
- ("NABLA" #x2207)
- ("ELEMENT OF" #x2208)
- ("NOT AN ELEMENT OF" #x2209)
- ("SMALL ELEMENT OF" #x220A)
- ("CONTAINS AS MEMBER" #x220B)
- ("DOES NOT CONTAIN AS MEMBER" #x220C)
- ("SMALL CONTAINS AS MEMBER" #x220D)
- ("END OF PROOF" #x220E)
- ("N-ARY PRODUCT" #x220F)
- ("N-ARY COPRODUCT" #x2210)
- ("N-ARY SUMMATION" #x2211)
- ("MINUS SIGN" #x2212)
- ("MINUS-OR-PLUS SIGN" #x2213)
- ("DOT PLUS" #x2214)
- ("DIVISION SLASH" #x2215)
- ("SET MINUS" #x2216)
- ("ASTERISK OPERATOR" #x2217)
- ("RING OPERATOR" #x2218)
- ("BULLET OPERATOR" #x2219)
- ("SQUARE ROOT" #x221A)
- ("CUBE ROOT" #x221B)
- ("FOURTH ROOT" #x221C)
- ("PROPORTIONAL TO" #x221D)
- ("INFINITY" #x221E)
- ("RIGHT ANGLE" #x221F)
- ("ANGLE" #x2220)
- ("MEASURED ANGLE" #x2221)
- ("SPHERICAL ANGLE" #x2222)
- ("DIVIDES" #x2223)
- ("DOES NOT DIVIDE" #x2224)
- ("PARALLEL TO" #x2225)
- ("NOT PARALLEL TO" #x2226)
- ("LOGICAL AND" #x2227)
- ("LOGICAL OR" #x2228)
- ("INTERSECTION" #x2229)
- ("UNION" #x222A)
- ("INTEGRAL" #x222B)
- ("DOUBLE INTEGRAL" #x222C)
- ("TRIPLE INTEGRAL" #x222D)
- ("CONTOUR INTEGRAL" #x222E)
- ("SURFACE INTEGRAL" #x222F)
- ("VOLUME INTEGRAL" #x2230)
- ("CLOCKWISE INTEGRAL" #x2231)
- ("CLOCKWISE CONTOUR INTEGRAL" #x2232)
- ("ANTICLOCKWISE CONTOUR INTEGRAL" #x2233)
- ("THEREFORE" #x2234)
- ("BECAUSE" #x2235)
- ("RATIO" #x2236)
- ("PROPORTION" #x2237)
- ("DOT MINUS" #x2238)
- ("EXCESS" #x2239)
- ("GEOMETRIC PROPORTION" #x223A)
- ("HOMOTHETIC" #x223B)
- ("TILDE OPERATOR" #x223C)
- ("REVERSED TILDE" #x223D)
- ("INVERTED LAZY S" #x223E)
- ("SINE WAVE" #x223F)
- ("WREATH PRODUCT" #x2240)
- ("NOT TILDE" #x2241)
- ("MINUS TILDE" #x2242)
- ("ASYMPTOTICALLY EQUAL TO" #x2243)
- ("NOT ASYMPTOTICALLY EQUAL TO" #x2244)
- ("APPROXIMATELY EQUAL TO" #x2245)
- ("APPROXIMATELY BUT NOT ACTUALLY EQUAL TO" #x2246)
- ("NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO" #x2247)
- ("ALMOST EQUAL TO" #x2248)
- ("NOT ALMOST EQUAL TO" #x2249)
- ("ALMOST EQUAL OR EQUAL TO" #x224A)
- ("TRIPLE TILDE" #x224B)
- ("ALL EQUAL TO" #x224C)
- ("EQUIVALENT TO" #x224D)
- ("GEOMETRICALLY EQUIVALENT TO" #x224E)
- ("DIFFERENCE BETWEEN" #x224F)
- ("APPROACHES THE LIMIT" #x2250)
- ("GEOMETRICALLY EQUAL TO" #x2251)
- ("APPROXIMATELY EQUAL TO OR THE IMAGE OF" #x2252)
- ("IMAGE OF OR APPROXIMATELY EQUAL TO" #x2253)
- ("COLON EQUALS" #x2254)
- ("EQUALS COLON" #x2255)
- ("RING IN EQUAL TO" #x2256)
- ("RING EQUAL TO" #x2257)
- ("CORRESPONDS TO" #x2258)
- ("ESTIMATES" #x2259)
- ("EQUIANGULAR TO" #x225A)
- ("STAR EQUALS" #x225B)
- ("DELTA EQUAL TO" #x225C)
- ("EQUAL TO BY DEFINITION" #x225D)
- ("MEASURED BY" #x225E)
- ("QUESTIONED EQUAL TO" #x225F)
- ("NOT EQUAL TO" #x2260)
- ("IDENTICAL TO" #x2261)
- ("NOT IDENTICAL TO" #x2262)
- ("STRICTLY EQUIVALENT TO" #x2263)
- ("LESS-THAN OR EQUAL TO" #x2264)
- ("GREATER-THAN OR EQUAL TO" #x2265)
- ("LESS-THAN OVER EQUAL TO" #x2266)
- ("GREATER-THAN OVER EQUAL TO" #x2267)
- ("LESS-THAN BUT NOT EQUAL TO" #x2268)
- ("GREATER-THAN BUT NOT EQUAL TO" #x2269)
- ("MUCH LESS-THAN" #x226A)
- ("MUCH GREATER-THAN" #x226B)
- ("BETWEEN" #x226C)
- ("NOT EQUIVALENT TO" #x226D)
- ("NOT LESS-THAN" #x226E)
- ("NOT GREATER-THAN" #x226F)
- ("NEITHER LESS-THAN NOR EQUAL TO" #x2270)
- ("NEITHER GREATER-THAN NOR EQUAL TO" #x2271)
- ("LESS-THAN OR EQUIVALENT TO" #x2272)
- ("GREATER-THAN OR EQUIVALENT TO" #x2273)
- ("NEITHER LESS-THAN NOR EQUIVALENT TO" #x2274)
- ("NEITHER GREATER-THAN NOR EQUIVALENT TO" #x2275)
- ("LESS-THAN OR GREATER-THAN" #x2276)
- ("GREATER-THAN OR LESS-THAN" #x2277)
- ("NEITHER LESS-THAN NOR GREATER-THAN" #x2278)
- ("NEITHER GREATER-THAN NOR LESS-THAN" #x2279)
- ("PRECEDES" #x227A)
- ("SUCCEEDS" #x227B)
- ("PRECEDES OR EQUAL TO" #x227C)
- ("SUCCEEDS OR EQUAL TO" #x227D)
- ("PRECEDES OR EQUIVALENT TO" #x227E)
- ("SUCCEEDS OR EQUIVALENT TO" #x227F)
- ("DOES NOT PRECEDE" #x2280)
- ("DOES NOT SUCCEED" #x2281)
- ("SUBSET OF" #x2282)
- ("SUPERSET OF" #x2283)
- ("NOT A SUBSET OF" #x2284)
- ("NOT A SUPERSET OF" #x2285)
- ("SUBSET OF OR EQUAL TO" #x2286)
- ("SUPERSET OF OR EQUAL TO" #x2287)
- ("NEITHER A SUBSET OF NOR EQUAL TO" #x2288)
- ("NEITHER A SUPERSET OF NOR EQUAL TO" #x2289)
- ("SUBSET OF WITH NOT EQUAL TO" #x228A)
- ("SUPERSET OF WITH NOT EQUAL TO" #x228B)
- ("MULTISET" #x228C)
- ("MULTISET MULTIPLICATION" #x228D)
- ("MULTISET UNION" #x228E)
- ("SQUARE IMAGE OF" #x228F)
- ("SQUARE ORIGINAL OF" #x2290)
- ("SQUARE IMAGE OF OR EQUAL TO" #x2291)
- ("SQUARE ORIGINAL OF OR EQUAL TO" #x2292)
- ("SQUARE CAP" #x2293)
- ("SQUARE CUP" #x2294)
- ("CIRCLED PLUS" #x2295)
- ("CIRCLED MINUS" #x2296)
- ("CIRCLED TIMES" #x2297)
- ("CIRCLED DIVISION SLASH" #x2298)
- ("CIRCLED DOT OPERATOR" #x2299)
- ("CIRCLED RING OPERATOR" #x229A)
- ("CIRCLED ASTERISK OPERATOR" #x229B)
- ("CIRCLED EQUALS" #x229C)
- ("CIRCLED DASH" #x229D)
- ("SQUARED PLUS" #x229E)
- ("SQUARED MINUS" #x229F)
- ("SQUARED TIMES" #x22A0)
- ("SQUARED DOT OPERATOR" #x22A1)
- ("RIGHT TACK" #x22A2)
- ("LEFT TACK" #x22A3)
- ("DOWN TACK" #x22A4)
- ("UP TACK" #x22A5)
- ("ASSERTION" #x22A6)
- ("MODELS" #x22A7)
- ("TRUE" #x22A8)
- ("FORCES" #x22A9)
- ("TRIPLE VERTICAL BAR RIGHT TURNSTILE" #x22AA)
- ("DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE" #x22AB)
- ("DOES NOT PROVE" #x22AC)
- ("NOT TRUE" #x22AD)
- ("DOES NOT FORCE" #x22AE)
- ("NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE" #x22AF)
- ("PRECEDES UNDER RELATION" #x22B0)
- ("SUCCEEDS UNDER RELATION" #x22B1)
- ("NORMAL SUBGROUP OF" #x22B2)
- ("CONTAINS AS NORMAL SUBGROUP" #x22B3)
- ("NORMAL SUBGROUP OF OR EQUAL TO" #x22B4)
- ("CONTAINS AS NORMAL SUBGROUP OR EQUAL TO" #x22B5)
- ("ORIGINAL OF" #x22B6)
- ("IMAGE OF" #x22B7)
- ("MULTIMAP" #x22B8)
- ("HERMITIAN CONJUGATE MATRIX" #x22B9)
- ("INTERCALATE" #x22BA)
- ("XOR" #x22BB)
- ("NAND" #x22BC)
- ("NOR" #x22BD)
- ("RIGHT ANGLE WITH ARC" #x22BE)
- ("RIGHT TRIANGLE" #x22BF)
- ("N-ARY LOGICAL AND" #x22C0)
- ("N-ARY LOGICAL OR" #x22C1)
- ("N-ARY INTERSECTION" #x22C2)
- ("N-ARY UNION" #x22C3)
- ("DIAMOND OPERATOR" #x22C4)
- ("DOT OPERATOR" #x22C5)
- ("STAR OPERATOR" #x22C6)
- ("DIVISION TIMES" #x22C7)
- ("BOWTIE" #x22C8)
- ("LEFT NORMAL FACTOR SEMIDIRECT PRODUCT" #x22C9)
- ("RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT" #x22CA)
- ("LEFT SEMIDIRECT PRODUCT" #x22CB)
- ("RIGHT SEMIDIRECT PRODUCT" #x22CC)
- ("REVERSED TILDE EQUALS" #x22CD)
- ("CURLY LOGICAL OR" #x22CE)
- ("CURLY LOGICAL AND" #x22CF)
- ("DOUBLE SUBSET" #x22D0)
- ("DOUBLE SUPERSET" #x22D1)
- ("DOUBLE INTERSECTION" #x22D2)
- ("DOUBLE UNION" #x22D3)
- ("PITCHFORK" #x22D4)
- ("EQUAL AND PARALLEL TO" #x22D5)
- ("LESS-THAN WITH DOT" #x22D6)
- ("GREATER-THAN WITH DOT" #x22D7)
- ("VERY MUCH LESS-THAN" #x22D8)
- ("VERY MUCH GREATER-THAN" #x22D9)
- ("LESS-THAN EQUAL TO OR GREATER-THAN" #x22DA)
- ("GREATER-THAN EQUAL TO OR LESS-THAN" #x22DB)
- ("EQUAL TO OR LESS-THAN" #x22DC)
- ("EQUAL TO OR GREATER-THAN" #x22DD)
- ("EQUAL TO OR PRECEDES" #x22DE)
- ("EQUAL TO OR SUCCEEDS" #x22DF)
- ("DOES NOT PRECEDE OR EQUAL" #x22E0)
- ("DOES NOT SUCCEED OR EQUAL" #x22E1)
- ("NOT SQUARE IMAGE OF OR EQUAL TO" #x22E2)
- ("NOT SQUARE ORIGINAL OF OR EQUAL TO" #x22E3)
- ("SQUARE IMAGE OF OR NOT EQUAL TO" #x22E4)
- ("SQUARE ORIGINAL OF OR NOT EQUAL TO" #x22E5)
- ("LESS-THAN BUT NOT EQUIVALENT TO" #x22E6)
- ("GREATER-THAN BUT NOT EQUIVALENT TO" #x22E7)
- ("PRECEDES BUT NOT EQUIVALENT TO" #x22E8)
- ("SUCCEEDS BUT NOT EQUIVALENT TO" #x22E9)
- ("NOT NORMAL SUBGROUP OF" #x22EA)
- ("DOES NOT CONTAIN AS NORMAL SUBGROUP" #x22EB)
- ("NOT NORMAL SUBGROUP OF OR EQUAL TO" #x22EC)
- ("DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL" #x22ED)
- ("VERTICAL ELLIPSIS" #x22EE)
- ("MIDLINE HORIZONTAL ELLIPSIS" #x22EF)
- ("UP RIGHT DIAGONAL ELLIPSIS" #x22F0)
- ("DOWN RIGHT DIAGONAL ELLIPSIS" #x22F1)
- ("ELEMENT OF WITH LONG HORIZONTAL STROKE" #x22F2)
- ("ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE" #x22F3)
- ("SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE" #x22F4)
- ("ELEMENT OF WITH DOT ABOVE" #x22F5)
- ("ELEMENT OF WITH OVERBAR" #x22F6)
- ("SMALL ELEMENT OF WITH OVERBAR" #x22F7)
- ("ELEMENT OF WITH UNDERBAR" #x22F8)
- ("ELEMENT OF WITH TWO HORIZONTAL STROKES" #x22F9)
- ("CONTAINS WITH LONG HORIZONTAL STROKE" #x22FA)
- ("CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE" #x22FB)
- ("SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE" #x22FC)
- ("CONTAINS WITH OVERBAR" #x22FD)
- ("SMALL CONTAINS WITH OVERBAR" #x22FE)
- ("Z NOTATION BAG MEMBERSHIP" #x22FF)
- ))
-
diff --git a/etc/nxml/02300-023FF.el b/etc/nxml/02300-023FF.el
deleted file mode 100644
index 2e7cd88ca6..0000000000
--- a/etc/nxml/02300-023FF.el
+++ /dev/null
@@ -1,210 +0,0 @@
-(nxml-define-char-name-set 'miscellaneous-technical
- '(("DIAMETER SIGN" #x2300)
- ("ELECTRIC ARROW" #x2301)
- ("HOUSE" #x2302)
- ("UP ARROWHEAD" #x2303)
- ("DOWN ARROWHEAD" #x2304)
- ("PROJECTIVE" #x2305)
- ("PERSPECTIVE" #x2306)
- ("WAVY LINE" #x2307)
- ("LEFT CEILING" #x2308)
- ("RIGHT CEILING" #x2309)
- ("LEFT FLOOR" #x230A)
- ("RIGHT FLOOR" #x230B)
- ("BOTTOM RIGHT CROP" #x230C)
- ("BOTTOM LEFT CROP" #x230D)
- ("TOP RIGHT CROP" #x230E)
- ("TOP LEFT CROP" #x230F)
- ("REVERSED NOT SIGN" #x2310)
- ("SQUARE LOZENGE" #x2311)
- ("ARC" #x2312)
- ("SEGMENT" #x2313)
- ("SECTOR" #x2314)
- ("TELEPHONE RECORDER" #x2315)
- ("POSITION INDICATOR" #x2316)
- ("VIEWDATA SQUARE" #x2317)
- ("PLACE OF INTEREST SIGN" #x2318)
- ("TURNED NOT SIGN" #x2319)
- ("WATCH" #x231A)
- ("HOURGLASS" #x231B)
- ("TOP LEFT CORNER" #x231C)
- ("TOP RIGHT CORNER" #x231D)
- ("BOTTOM LEFT CORNER" #x231E)
- ("BOTTOM RIGHT CORNER" #x231F)
- ("TOP HALF INTEGRAL" #x2320)
- ("BOTTOM HALF INTEGRAL" #x2321)
- ("FROWN" #x2322)
- ("SMILE" #x2323)
- ("UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS" #x2324)
- ("OPTION KEY" #x2325)
- ("ERASE TO THE RIGHT" #x2326)
- ("X IN A RECTANGLE BOX" #x2327)
- ("KEYBOARD" #x2328)
- ("LEFT-POINTING ANGLE BRACKET" #x2329)
- ("RIGHT-POINTING ANGLE BRACKET" #x232A)
- ("ERASE TO THE LEFT" #x232B)
- ("BENZENE RING" #x232C)
- ("CYLINDRICITY" #x232D)
- ("ALL AROUND-PROFILE" #x232E)
- ("SYMMETRY" #x232F)
- ("TOTAL RUNOUT" #x2330)
- ("DIMENSION ORIGIN" #x2331)
- ("CONICAL TAPER" #x2332)
- ("SLOPE" #x2333)
- ("COUNTERBORE" #x2334)
- ("COUNTERSINK" #x2335)
- ("APL FUNCTIONAL SYMBOL I-BEAM" #x2336)
- ("APL FUNCTIONAL SYMBOL SQUISH QUAD" #x2337)
- ("APL FUNCTIONAL SYMBOL QUAD EQUAL" #x2338)
- ("APL FUNCTIONAL SYMBOL QUAD DIVIDE" #x2339)
- ("APL FUNCTIONAL SYMBOL QUAD DIAMOND" #x233A)
- ("APL FUNCTIONAL SYMBOL QUAD JOT" #x233B)
- ("APL FUNCTIONAL SYMBOL QUAD CIRCLE" #x233C)
- ("APL FUNCTIONAL SYMBOL CIRCLE STILE" #x233D)
- ("APL FUNCTIONAL SYMBOL CIRCLE JOT" #x233E)
- ("APL FUNCTIONAL SYMBOL SLASH BAR" #x233F)
- ("APL FUNCTIONAL SYMBOL BACKSLASH BAR" #x2340)
- ("APL FUNCTIONAL SYMBOL QUAD SLASH" #x2341)
- ("APL FUNCTIONAL SYMBOL QUAD BACKSLASH" #x2342)
- ("APL FUNCTIONAL SYMBOL QUAD LESS-THAN" #x2343)
- ("APL FUNCTIONAL SYMBOL QUAD GREATER-THAN" #x2344)
- ("APL FUNCTIONAL SYMBOL LEFTWARDS VANE" #x2345)
- ("APL FUNCTIONAL SYMBOL RIGHTWARDS VANE" #x2346)
- ("APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW" #x2347)
- ("APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW" #x2348)
- ("APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH" #x2349)
- ("APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR" #x234A)
- ("APL FUNCTIONAL SYMBOL DELTA STILE" #x234B)
- ("APL FUNCTIONAL SYMBOL QUAD DOWN CARET" #x234C)
- ("APL FUNCTIONAL SYMBOL QUAD DELTA" #x234D)
- ("APL FUNCTIONAL SYMBOL DOWN TACK JOT" #x234E)
- ("APL FUNCTIONAL SYMBOL UPWARDS VANE" #x234F)
- ("APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW" #x2350)
- ("APL FUNCTIONAL SYMBOL UP TACK OVERBAR" #x2351)
- ("APL FUNCTIONAL SYMBOL DEL STILE" #x2352)
- ("APL FUNCTIONAL SYMBOL QUAD UP CARET" #x2353)
- ("APL FUNCTIONAL SYMBOL QUAD DEL" #x2354)
- ("APL FUNCTIONAL SYMBOL UP TACK JOT" #x2355)
- ("APL FUNCTIONAL SYMBOL DOWNWARDS VANE" #x2356)
- ("APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW" #x2357)
- ("APL FUNCTIONAL SYMBOL QUOTE UNDERBAR" #x2358)
- ("APL FUNCTIONAL SYMBOL DELTA UNDERBAR" #x2359)
- ("APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR" #x235A)
- ("APL FUNCTIONAL SYMBOL JOT UNDERBAR" #x235B)
- ("APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR" #x235C)
- ("APL FUNCTIONAL SYMBOL UP SHOE JOT" #x235D)
- ("APL FUNCTIONAL SYMBOL QUOTE QUAD" #x235E)
- ("APL FUNCTIONAL SYMBOL CIRCLE STAR" #x235F)
- ("APL FUNCTIONAL SYMBOL QUAD COLON" #x2360)
- ("APL FUNCTIONAL SYMBOL UP TACK DIAERESIS" #x2361)
- ("APL FUNCTIONAL SYMBOL DEL DIAERESIS" #x2362)
- ("APL FUNCTIONAL SYMBOL STAR DIAERESIS" #x2363)
- ("APL FUNCTIONAL SYMBOL JOT DIAERESIS" #x2364)
- ("APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS" #x2365)
- ("APL FUNCTIONAL SYMBOL DOWN SHOE STILE" #x2366)
- ("APL FUNCTIONAL SYMBOL LEFT SHOE STILE" #x2367)
- ("APL FUNCTIONAL SYMBOL TILDE DIAERESIS" #x2368)
- ("APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS" #x2369)
- ("APL FUNCTIONAL SYMBOL COMMA BAR" #x236A)
- ("APL FUNCTIONAL SYMBOL DEL TILDE" #x236B)
- ("APL FUNCTIONAL SYMBOL ZILDE" #x236C)
- ("APL FUNCTIONAL SYMBOL STILE TILDE" #x236D)
- ("APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR" #x236E)
- ("APL FUNCTIONAL SYMBOL QUAD NOT EQUAL" #x236F)
- ("APL FUNCTIONAL SYMBOL QUAD QUESTION" #x2370)
- ("APL FUNCTIONAL SYMBOL DOWN CARET TILDE" #x2371)
- ("APL FUNCTIONAL SYMBOL UP CARET TILDE" #x2372)
- ("APL FUNCTIONAL SYMBOL IOTA" #x2373)
- ("APL FUNCTIONAL SYMBOL RHO" #x2374)
- ("APL FUNCTIONAL SYMBOL OMEGA" #x2375)
- ("APL FUNCTIONAL SYMBOL ALPHA UNDERBAR" #x2376)
- ("APL FUNCTIONAL SYMBOL EPSILON UNDERBAR" #x2377)
- ("APL FUNCTIONAL SYMBOL IOTA UNDERBAR" #x2378)
- ("APL FUNCTIONAL SYMBOL OMEGA UNDERBAR" #x2379)
- ("APL FUNCTIONAL SYMBOL ALPHA" #x237A)
- ("NOT CHECK MARK" #x237B)
- ("RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW" #x237C)
- ("SHOULDERED OPEN BOX" #x237D)
- ("BELL SYMBOL" #x237E)
- ("VERTICAL LINE WITH MIDDLE DOT" #x237F)
- ("INSERTION SYMBOL" #x2380)
- ("CONTINUOUS UNDERLINE SYMBOL" #x2381)
- ("DISCONTINUOUS UNDERLINE SYMBOL" #x2382)
- ("EMPHASIS SYMBOL" #x2383)
- ("COMPOSITION SYMBOL" #x2384)
- ("WHITE SQUARE WITH CENTRE VERTICAL LINE" #x2385)
- ("ENTER SYMBOL" #x2386)
- ("ALTERNATIVE KEY SYMBOL" #x2387)
- ("HELM SYMBOL" #x2388)
- ("CIRCLED HORIZONTAL BAR WITH NOTCH" #x2389)
- ("CIRCLED TRIANGLE DOWN" #x238A)
- ("BROKEN CIRCLE WITH NORTHWEST ARROW" #x238B)
- ("UNDO SYMBOL" #x238C)
- ("MONOSTABLE SYMBOL" #x238D)
- ("HYSTERESIS SYMBOL" #x238E)
- ("OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL" #x238F)
- ("OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL" #x2390)
- ("PASSIVE-PULL-DOWN-OUTPUT SYMBOL" #x2391)
- ("PASSIVE-PULL-UP-OUTPUT SYMBOL" #x2392)
- ("DIRECT CURRENT SYMBOL FORM TWO" #x2393)
- ("SOFTWARE-FUNCTION SYMBOL" #x2394)
- ("APL FUNCTIONAL SYMBOL QUAD" #x2395)
- ("DECIMAL SEPARATOR KEY SYMBOL" #x2396)
- ("PREVIOUS PAGE" #x2397)
- ("NEXT PAGE" #x2398)
- ("PRINT SCREEN SYMBOL" #x2399)
- ("CLEAR SCREEN SYMBOL" #x239A)
- ("LEFT PARENTHESIS UPPER HOOK" #x239B)
- ("LEFT PARENTHESIS EXTENSION" #x239C)
- ("LEFT PARENTHESIS LOWER HOOK" #x239D)
- ("RIGHT PARENTHESIS UPPER HOOK" #x239E)
- ("RIGHT PARENTHESIS EXTENSION" #x239F)
- ("RIGHT PARENTHESIS LOWER HOOK" #x23A0)
- ("LEFT SQUARE BRACKET UPPER CORNER" #x23A1)
- ("LEFT SQUARE BRACKET EXTENSION" #x23A2)
- ("LEFT SQUARE BRACKET LOWER CORNER" #x23A3)
- ("RIGHT SQUARE BRACKET UPPER CORNER" #x23A4)
- ("RIGHT SQUARE BRACKET EXTENSION" #x23A5)
- ("RIGHT SQUARE BRACKET LOWER CORNER" #x23A6)
- ("LEFT CURLY BRACKET UPPER HOOK" #x23A7)
- ("LEFT CURLY BRACKET MIDDLE PIECE" #x23A8)
- ("LEFT CURLY BRACKET LOWER HOOK" #x23A9)
- ("CURLY BRACKET EXTENSION" #x23AA)
- ("RIGHT CURLY BRACKET UPPER HOOK" #x23AB)
- ("RIGHT CURLY BRACKET MIDDLE PIECE" #x23AC)
- ("RIGHT CURLY BRACKET LOWER HOOK" #x23AD)
- ("INTEGRAL EXTENSION" #x23AE)
- ("HORIZONTAL LINE EXTENSION" #x23AF)
- ("UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION" #x23B0)
- ("UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION" #x23B1)
- ("SUMMATION TOP" #x23B2)
- ("SUMMATION BOTTOM" #x23B3)
- ("TOP SQUARE BRACKET" #x23B4)
- ("BOTTOM SQUARE BRACKET" #x23B5)
- ("BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET" #x23B6)
- ("RADICAL SYMBOL BOTTOM" #x23B7)
- ("LEFT VERTICAL BOX LINE" #x23B8)
- ("RIGHT VERTICAL BOX LINE" #x23B9)
- ("HORIZONTAL SCAN LINE-1" #x23BA)
- ("HORIZONTAL SCAN LINE-3" #x23BB)
- ("HORIZONTAL SCAN LINE-7" #x23BC)
- ("HORIZONTAL SCAN LINE-9" #x23BD)
- ("DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT" #x23BE)
- ("DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT" #x23BF)
- ("DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE" #x23C0)
- ("DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE" #x23C1)
- ("DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE" #x23C2)
- ("DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE" #x23C3)
- ("DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE" #x23C4)
- ("DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE" #x23C5)
- ("DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE" #x23C6)
- ("DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE" #x23C7)
- ("DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE" #x23C8)
- ("DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL" #x23C9)
- ("DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL" #x23CA)
- ("DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT" #x23CB)
- ("DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT" #x23CC)
- ("SQUARE FOOT" #x23CD)
- ("RETURN SYMBOL" #x23CE)
- ))
-
diff --git a/etc/nxml/02400-0243F.el b/etc/nxml/02400-0243F.el
deleted file mode 100644
index 798a795c0c..0000000000
--- a/etc/nxml/02400-0243F.el
+++ /dev/null
@@ -1,42 +0,0 @@
-(nxml-define-char-name-set 'control-pictures
- '(("SYMBOL FOR NULL" #x2400)
- ("SYMBOL FOR START OF HEADING" #x2401)
- ("SYMBOL FOR START OF TEXT" #x2402)
- ("SYMBOL FOR END OF TEXT" #x2403)
- ("SYMBOL FOR END OF TRANSMISSION" #x2404)
- ("SYMBOL FOR ENQUIRY" #x2405)
- ("SYMBOL FOR ACKNOWLEDGE" #x2406)
- ("SYMBOL FOR BELL" #x2407)
- ("SYMBOL FOR BACKSPACE" #x2408)
- ("SYMBOL FOR HORIZONTAL TABULATION" #x2409)
- ("SYMBOL FOR LINE FEED" #x240A)
- ("SYMBOL FOR VERTICAL TABULATION" #x240B)
- ("SYMBOL FOR FORM FEED" #x240C)
- ("SYMBOL FOR CARRIAGE RETURN" #x240D)
- ("SYMBOL FOR SHIFT OUT" #x240E)
- ("SYMBOL FOR SHIFT IN" #x240F)
- ("SYMBOL FOR DATA LINK ESCAPE" #x2410)
- ("SYMBOL FOR DEVICE CONTROL ONE" #x2411)
- ("SYMBOL FOR DEVICE CONTROL TWO" #x2412)
- ("SYMBOL FOR DEVICE CONTROL THREE" #x2413)
- ("SYMBOL FOR DEVICE CONTROL FOUR" #x2414)
- ("SYMBOL FOR NEGATIVE ACKNOWLEDGE" #x2415)
- ("SYMBOL FOR SYNCHRONOUS IDLE" #x2416)
- ("SYMBOL FOR END OF TRANSMISSION BLOCK" #x2417)
- ("SYMBOL FOR CANCEL" #x2418)
- ("SYMBOL FOR END OF MEDIUM" #x2419)
- ("SYMBOL FOR SUBSTITUTE" #x241A)
- ("SYMBOL FOR ESCAPE" #x241B)
- ("SYMBOL FOR FILE SEPARATOR" #x241C)
- ("SYMBOL FOR GROUP SEPARATOR" #x241D)
- ("SYMBOL FOR RECORD SEPARATOR" #x241E)
- ("SYMBOL FOR UNIT SEPARATOR" #x241F)
- ("SYMBOL FOR SPACE" #x2420)
- ("SYMBOL FOR DELETE" #x2421)
- ("BLANK SYMBOL" #x2422)
- ("OPEN BOX" #x2423)
- ("SYMBOL FOR NEWLINE" #x2424)
- ("SYMBOL FOR DELETE FORM TWO" #x2425)
- ("SYMBOL FOR SUBSTITUTE FORM TWO" #x2426)
- ))
-
diff --git a/etc/nxml/02440-0245F.el b/etc/nxml/02440-0245F.el
deleted file mode 100644
index 019d6baecc..0000000000
--- a/etc/nxml/02440-0245F.el
+++ /dev/null
@@ -1,14 +0,0 @@
-(nxml-define-char-name-set 'optical-character-recognition
- '(("OCR HOOK" #x2440)
- ("OCR CHAIR" #x2441)
- ("OCR FORK" #x2442)
- ("OCR INVERTED FORK" #x2443)
- ("OCR BELT BUCKLE" #x2444)
- ("OCR BOW TIE" #x2445)
- ("OCR BRANCH BANK IDENTIFICATION" #x2446)
- ("OCR AMOUNT OF CHECK" #x2447)
- ("OCR DASH" #x2448)
- ("OCR CUSTOMER ACCOUNT NUMBER" #x2449)
- ("OCR DOUBLE BACKSLASH" #x244A)
- ))
-
diff --git a/etc/nxml/02460-024FF.el b/etc/nxml/02460-024FF.el
deleted file mode 100644
index 736ff0b937..0000000000
--- a/etc/nxml/02460-024FF.el
+++ /dev/null
@@ -1,162 +0,0 @@
-(nxml-define-char-name-set 'enclosed-alphanumerics
- '(("CIRCLED DIGIT ONE" #x2460)
- ("CIRCLED DIGIT TWO" #x2461)
- ("CIRCLED DIGIT THREE" #x2462)
- ("CIRCLED DIGIT FOUR" #x2463)
- ("CIRCLED DIGIT FIVE" #x2464)
- ("CIRCLED DIGIT SIX" #x2465)
- ("CIRCLED DIGIT SEVEN" #x2466)
- ("CIRCLED DIGIT EIGHT" #x2467)
- ("CIRCLED DIGIT NINE" #x2468)
- ("CIRCLED NUMBER TEN" #x2469)
- ("CIRCLED NUMBER ELEVEN" #x246A)
- ("CIRCLED NUMBER TWELVE" #x246B)
- ("CIRCLED NUMBER THIRTEEN" #x246C)
- ("CIRCLED NUMBER FOURTEEN" #x246D)
- ("CIRCLED NUMBER FIFTEEN" #x246E)
- ("CIRCLED NUMBER SIXTEEN" #x246F)
- ("CIRCLED NUMBER SEVENTEEN" #x2470)
- ("CIRCLED NUMBER EIGHTEEN" #x2471)
- ("CIRCLED NUMBER NINETEEN" #x2472)
- ("CIRCLED NUMBER TWENTY" #x2473)
- ("PARENTHESIZED DIGIT ONE" #x2474)
- ("PARENTHESIZED DIGIT TWO" #x2475)
- ("PARENTHESIZED DIGIT THREE" #x2476)
- ("PARENTHESIZED DIGIT FOUR" #x2477)
- ("PARENTHESIZED DIGIT FIVE" #x2478)
- ("PARENTHESIZED DIGIT SIX" #x2479)
- ("PARENTHESIZED DIGIT SEVEN" #x247A)
- ("PARENTHESIZED DIGIT EIGHT" #x247B)
- ("PARENTHESIZED DIGIT NINE" #x247C)
- ("PARENTHESIZED NUMBER TEN" #x247D)
- ("PARENTHESIZED NUMBER ELEVEN" #x247E)
- ("PARENTHESIZED NUMBER TWELVE" #x247F)
- ("PARENTHESIZED NUMBER THIRTEEN" #x2480)
- ("PARENTHESIZED NUMBER FOURTEEN" #x2481)
- ("PARENTHESIZED NUMBER FIFTEEN" #x2482)
- ("PARENTHESIZED NUMBER SIXTEEN" #x2483)
- ("PARENTHESIZED NUMBER SEVENTEEN" #x2484)
- ("PARENTHESIZED NUMBER EIGHTEEN" #x2485)
- ("PARENTHESIZED NUMBER NINETEEN" #x2486)
- ("PARENTHESIZED NUMBER TWENTY" #x2487)
- ("DIGIT ONE FULL STOP" #x2488)
- ("DIGIT TWO FULL STOP" #x2489)
- ("DIGIT THREE FULL STOP" #x248A)
- ("DIGIT FOUR FULL STOP" #x248B)
- ("DIGIT FIVE FULL STOP" #x248C)
- ("DIGIT SIX FULL STOP" #x248D)
- ("DIGIT SEVEN FULL STOP" #x248E)
- ("DIGIT EIGHT FULL STOP" #x248F)
- ("DIGIT NINE FULL STOP" #x2490)
- ("NUMBER TEN FULL STOP" #x2491)
- ("NUMBER ELEVEN FULL STOP" #x2492)
- ("NUMBER TWELVE FULL STOP" #x2493)
- ("NUMBER THIRTEEN FULL STOP" #x2494)
- ("NUMBER FOURTEEN FULL STOP" #x2495)
- ("NUMBER FIFTEEN FULL STOP" #x2496)
- ("NUMBER SIXTEEN FULL STOP" #x2497)
- ("NUMBER SEVENTEEN FULL STOP" #x2498)
- ("NUMBER EIGHTEEN FULL STOP" #x2499)
- ("NUMBER NINETEEN FULL STOP" #x249A)
- ("NUMBER TWENTY FULL STOP" #x249B)
- ("PARENTHESIZED LATIN SMALL LETTER A" #x249C)
- ("PARENTHESIZED LATIN SMALL LETTER B" #x249D)
- ("PARENTHESIZED LATIN SMALL LETTER C" #x249E)
- ("PARENTHESIZED LATIN SMALL LETTER D" #x249F)
- ("PARENTHESIZED LATIN SMALL LETTER E" #x24A0)
- ("PARENTHESIZED LATIN SMALL LETTER F" #x24A1)
- ("PARENTHESIZED LATIN SMALL LETTER G" #x24A2)
- ("PARENTHESIZED LATIN SMALL LETTER H" #x24A3)
- ("PARENTHESIZED LATIN SMALL LETTER I" #x24A4)
- ("PARENTHESIZED LATIN SMALL LETTER J" #x24A5)
- ("PARENTHESIZED LATIN SMALL LETTER K" #x24A6)
- ("PARENTHESIZED LATIN SMALL LETTER L" #x24A7)
- ("PARENTHESIZED LATIN SMALL LETTER M" #x24A8)
- ("PARENTHESIZED LATIN SMALL LETTER N" #x24A9)
- ("PARENTHESIZED LATIN SMALL LETTER O" #x24AA)
- ("PARENTHESIZED LATIN SMALL LETTER P" #x24AB)
- ("PARENTHESIZED LATIN SMALL LETTER Q" #x24AC)
- ("PARENTHESIZED LATIN SMALL LETTER R" #x24AD)
- ("PARENTHESIZED LATIN SMALL LETTER S" #x24AE)
- ("PARENTHESIZED LATIN SMALL LETTER T" #x24AF)
- ("PARENTHESIZED LATIN SMALL LETTER U" #x24B0)
- ("PARENTHESIZED LATIN SMALL LETTER V" #x24B1)
- ("PARENTHESIZED LATIN SMALL LETTER W" #x24B2)
- ("PARENTHESIZED LATIN SMALL LETTER X" #x24B3)
- ("PARENTHESIZED LATIN SMALL LETTER Y" #x24B4)
- ("PARENTHESIZED LATIN SMALL LETTER Z" #x24B5)
- ("CIRCLED LATIN CAPITAL LETTER A" #x24B6)
- ("CIRCLED LATIN CAPITAL LETTER B" #x24B7)
- ("CIRCLED LATIN CAPITAL LETTER C" #x24B8)
- ("CIRCLED LATIN CAPITAL LETTER D" #x24B9)
- ("CIRCLED LATIN CAPITAL LETTER E" #x24BA)
- ("CIRCLED LATIN CAPITAL LETTER F" #x24BB)
- ("CIRCLED LATIN CAPITAL LETTER G" #x24BC)
- ("CIRCLED LATIN CAPITAL LETTER H" #x24BD)
- ("CIRCLED LATIN CAPITAL LETTER I" #x24BE)
- ("CIRCLED LATIN CAPITAL LETTER J" #x24BF)
- ("CIRCLED LATIN CAPITAL LETTER K" #x24C0)
- ("CIRCLED LATIN CAPITAL LETTER L" #x24C1)
- ("CIRCLED LATIN CAPITAL LETTER M" #x24C2)
- ("CIRCLED LATIN CAPITAL LETTER N" #x24C3)
- ("CIRCLED LATIN CAPITAL LETTER O" #x24C4)
- ("CIRCLED LATIN CAPITAL LETTER P" #x24C5)
- ("CIRCLED LATIN CAPITAL LETTER Q" #x24C6)
- ("CIRCLED LATIN CAPITAL LETTER R" #x24C7)
- ("CIRCLED LATIN CAPITAL LETTER S" #x24C8)
- ("CIRCLED LATIN CAPITAL LETTER T" #x24C9)
- ("CIRCLED LATIN CAPITAL LETTER U" #x24CA)
- ("CIRCLED LATIN CAPITAL LETTER V" #x24CB)
- ("CIRCLED LATIN CAPITAL LETTER W" #x24CC)
- ("CIRCLED LATIN CAPITAL LETTER X" #x24CD)
- ("CIRCLED LATIN CAPITAL LETTER Y" #x24CE)
- ("CIRCLED LATIN CAPITAL LETTER Z" #x24CF)
- ("CIRCLED LATIN SMALL LETTER A" #x24D0)
- ("CIRCLED LATIN SMALL LETTER B" #x24D1)
- ("CIRCLED LATIN SMALL LETTER C" #x24D2)
- ("CIRCLED LATIN SMALL LETTER D" #x24D3)
- ("CIRCLED LATIN SMALL LETTER E" #x24D4)
- ("CIRCLED LATIN SMALL LETTER F" #x24D5)
- ("CIRCLED LATIN SMALL LETTER G" #x24D6)
- ("CIRCLED LATIN SMALL LETTER H" #x24D7)
- ("CIRCLED LATIN SMALL LETTER I" #x24D8)
- ("CIRCLED LATIN SMALL LETTER J" #x24D9)
- ("CIRCLED LATIN SMALL LETTER K" #x24DA)
- ("CIRCLED LATIN SMALL LETTER L" #x24DB)
- ("CIRCLED LATIN SMALL LETTER M" #x24DC)
- ("CIRCLED LATIN SMALL LETTER N" #x24DD)
- ("CIRCLED LATIN SMALL LETTER O" #x24DE)
- ("CIRCLED LATIN SMALL LETTER P" #x24DF)
- ("CIRCLED LATIN SMALL LETTER Q" #x24E0)
- ("CIRCLED LATIN SMALL LETTER R" #x24E1)
- ("CIRCLED LATIN SMALL LETTER S" #x24E2)
- ("CIRCLED LATIN SMALL LETTER T" #x24E3)
- ("CIRCLED LATIN SMALL LETTER U" #x24E4)
- ("CIRCLED LATIN SMALL LETTER V" #x24E5)
- ("CIRCLED LATIN SMALL LETTER W" #x24E6)
- ("CIRCLED LATIN SMALL LETTER X" #x24E7)
- ("CIRCLED LATIN SMALL LETTER Y" #x24E8)
- ("CIRCLED LATIN SMALL LETTER Z" #x24E9)
- ("CIRCLED DIGIT ZERO" #x24EA)
- ("NEGATIVE CIRCLED NUMBER ELEVEN" #x24EB)
- ("NEGATIVE CIRCLED NUMBER TWELVE" #x24EC)
- ("NEGATIVE CIRCLED NUMBER THIRTEEN" #x24ED)
- ("NEGATIVE CIRCLED NUMBER FOURTEEN" #x24EE)
- ("NEGATIVE CIRCLED NUMBER FIFTEEN" #x24EF)
- ("NEGATIVE CIRCLED NUMBER SIXTEEN" #x24F0)
- ("NEGATIVE CIRCLED NUMBER SEVENTEEN" #x24F1)
- ("NEGATIVE CIRCLED NUMBER EIGHTEEN" #x24F2)
- ("NEGATIVE CIRCLED NUMBER NINETEEN" #x24F3)
- ("NEGATIVE CIRCLED NUMBER TWENTY" #x24F4)
- ("DOUBLE CIRCLED DIGIT ONE" #x24F5)
- ("DOUBLE CIRCLED DIGIT TWO" #x24F6)
- ("DOUBLE CIRCLED DIGIT THREE" #x24F7)
- ("DOUBLE CIRCLED DIGIT FOUR" #x24F8)
- ("DOUBLE CIRCLED DIGIT FIVE" #x24F9)
- ("DOUBLE CIRCLED DIGIT SIX" #x24FA)
- ("DOUBLE CIRCLED DIGIT SEVEN" #x24FB)
- ("DOUBLE CIRCLED DIGIT EIGHT" #x24FC)
- ("DOUBLE CIRCLED DIGIT NINE" #x24FD)
- ("DOUBLE CIRCLED NUMBER TEN" #x24FE)
- ))
-
diff --git a/etc/nxml/02500-0257F.el b/etc/nxml/02500-0257F.el
deleted file mode 100644
index a8cc739c28..0000000000
--- a/etc/nxml/02500-0257F.el
+++ /dev/null
@@ -1,131 +0,0 @@
-(nxml-define-char-name-set 'box-drawing
- '(("BOX DRAWINGS LIGHT HORIZONTAL" #x2500)
- ("BOX DRAWINGS HEAVY HORIZONTAL" #x2501)
- ("BOX DRAWINGS LIGHT VERTICAL" #x2502)
- ("BOX DRAWINGS HEAVY VERTICAL" #x2503)
- ("BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL" #x2504)
- ("BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL" #x2505)
- ("BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL" #x2506)
- ("BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL" #x2507)
- ("BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL" #x2508)
- ("BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL" #x2509)
- ("BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL" #x250A)
- ("BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL" #x250B)
- ("BOX DRAWINGS LIGHT DOWN AND RIGHT" #x250C)
- ("BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY" #x250D)
- ("BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT" #x250E)
- ("BOX DRAWINGS HEAVY DOWN AND RIGHT" #x250F)
- ("BOX DRAWINGS LIGHT DOWN AND LEFT" #x2510)
- ("BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY" #x2511)
- ("BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT" #x2512)
- ("BOX DRAWINGS HEAVY DOWN AND LEFT" #x2513)
- ("BOX DRAWINGS LIGHT UP AND RIGHT" #x2514)
- ("BOX DRAWINGS UP LIGHT AND RIGHT HEAVY" #x2515)
- ("BOX DRAWINGS UP HEAVY AND RIGHT LIGHT" #x2516)
- ("BOX DRAWINGS HEAVY UP AND RIGHT" #x2517)
- ("BOX DRAWINGS LIGHT UP AND LEFT" #x2518)
- ("BOX DRAWINGS UP LIGHT AND LEFT HEAVY" #x2519)
- ("BOX DRAWINGS UP HEAVY AND LEFT LIGHT" #x251A)
- ("BOX DRAWINGS HEAVY UP AND LEFT" #x251B)
- ("BOX DRAWINGS LIGHT VERTICAL AND RIGHT" #x251C)
- ("BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY" #x251D)
- ("BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT" #x251E)
- ("BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT" #x251F)
- ("BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT" #x2520)
- ("BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY" #x2521)
- ("BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY" #x2522)
- ("BOX DRAWINGS HEAVY VERTICAL AND RIGHT" #x2523)
- ("BOX DRAWINGS LIGHT VERTICAL AND LEFT" #x2524)
- ("BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY" #x2525)
- ("BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT" #x2526)
- ("BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT" #x2527)
- ("BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT" #x2528)
- ("BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY" #x2529)
- ("BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY" #x252A)
- ("BOX DRAWINGS HEAVY VERTICAL AND LEFT" #x252B)
- ("BOX DRAWINGS LIGHT DOWN AND HORIZONTAL" #x252C)
- ("BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT" #x252D)
- ("BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT" #x252E)
- ("BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY" #x252F)
- ("BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT" #x2530)
- ("BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY" #x2531)
- ("BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY" #x2532)
- ("BOX DRAWINGS HEAVY DOWN AND HORIZONTAL" #x2533)
- ("BOX DRAWINGS LIGHT UP AND HORIZONTAL" #x2534)
- ("BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT" #x2535)
- ("BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT" #x2536)
- ("BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY" #x2537)
- ("BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT" #x2538)
- ("BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY" #x2539)
- ("BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY" #x253A)
- ("BOX DRAWINGS HEAVY UP AND HORIZONTAL" #x253B)
- ("BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL" #x253C)
- ("BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT" #x253D)
- ("BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT" #x253E)
- ("BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY" #x253F)
- ("BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT" #x2540)
- ("BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT" #x2541)
- ("BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT" #x2542)
- ("BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT" #x2543)
- ("BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT" #x2544)
- ("BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT" #x2545)
- ("BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT" #x2546)
- ("BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY" #x2547)
- ("BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY" #x2548)
- ("BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY" #x2549)
- ("BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY" #x254A)
- ("BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL" #x254B)
- ("BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL" #x254C)
- ("BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL" #x254D)
- ("BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL" #x254E)
- ("BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL" #x254F)
- ("BOX DRAWINGS DOUBLE HORIZONTAL" #x2550)
- ("BOX DRAWINGS DOUBLE VERTICAL" #x2551)
- ("BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE" #x2552)
- ("BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE" #x2553)
- ("BOX DRAWINGS DOUBLE DOWN AND RIGHT" #x2554)
- ("BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE" #x2555)
- ("BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE" #x2556)
- ("BOX DRAWINGS DOUBLE DOWN AND LEFT" #x2557)
- ("BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE" #x2558)
- ("BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE" #x2559)
- ("BOX DRAWINGS DOUBLE UP AND RIGHT" #x255A)
- ("BOX DRAWINGS UP SINGLE AND LEFT DOUBLE" #x255B)
- ("BOX DRAWINGS UP DOUBLE AND LEFT SINGLE" #x255C)
- ("BOX DRAWINGS DOUBLE UP AND LEFT" #x255D)
- ("BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE" #x255E)
- ("BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE" #x255F)
- ("BOX DRAWINGS DOUBLE VERTICAL AND RIGHT" #x2560)
- ("BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE" #x2561)
- ("BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE" #x2562)
- ("BOX DRAWINGS DOUBLE VERTICAL AND LEFT" #x2563)
- ("BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE" #x2564)
- ("BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE" #x2565)
- ("BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL" #x2566)
- ("BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE" #x2567)
- ("BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE" #x2568)
- ("BOX DRAWINGS DOUBLE UP AND HORIZONTAL" #x2569)
- ("BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE" #x256A)
- ("BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE" #x256B)
- ("BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL" #x256C)
- ("BOX DRAWINGS LIGHT ARC DOWN AND RIGHT" #x256D)
- ("BOX DRAWINGS LIGHT ARC DOWN AND LEFT" #x256E)
- ("BOX DRAWINGS LIGHT ARC UP AND LEFT" #x256F)
- ("BOX DRAWINGS LIGHT ARC UP AND RIGHT" #x2570)
- ("BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT" #x2571)
- ("BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT" #x2572)
- ("BOX DRAWINGS LIGHT DIAGONAL CROSS" #x2573)
- ("BOX DRAWINGS LIGHT LEFT" #x2574)
- ("BOX DRAWINGS LIGHT UP" #x2575)
- ("BOX DRAWINGS LIGHT RIGHT" #x2576)
- ("BOX DRAWINGS LIGHT DOWN" #x2577)
- ("BOX DRAWINGS HEAVY LEFT" #x2578)
- ("BOX DRAWINGS HEAVY UP" #x2579)
- ("BOX DRAWINGS HEAVY RIGHT" #x257A)
- ("BOX DRAWINGS HEAVY DOWN" #x257B)
- ("BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT" #x257C)
- ("BOX DRAWINGS LIGHT UP AND HEAVY DOWN" #x257D)
- ("BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT" #x257E)
- ("BOX DRAWINGS HEAVY UP AND LIGHT DOWN" #x257F)
- ))
-
diff --git a/etc/nxml/02580-0259F.el b/etc/nxml/02580-0259F.el
deleted file mode 100644
index 0c7220971f..0000000000
--- a/etc/nxml/02580-0259F.el
+++ /dev/null
@@ -1,35 +0,0 @@
-(nxml-define-char-name-set 'block-elements
- '(("UPPER HALF BLOCK" #x2580)
- ("LOWER ONE EIGHTH BLOCK" #x2581)
- ("LOWER ONE QUARTER BLOCK" #x2582)
- ("LOWER THREE EIGHTHS BLOCK" #x2583)
- ("LOWER HALF BLOCK" #x2584)
- ("LOWER FIVE EIGHTHS BLOCK" #x2585)
- ("LOWER THREE QUARTERS BLOCK" #x2586)
- ("LOWER SEVEN EIGHTHS BLOCK" #x2587)
- ("FULL BLOCK" #x2588)
- ("LEFT SEVEN EIGHTHS BLOCK" #x2589)
- ("LEFT THREE QUARTERS BLOCK" #x258A)
- ("LEFT FIVE EIGHTHS BLOCK" #x258B)
- ("LEFT HALF BLOCK" #x258C)
- ("LEFT THREE EIGHTHS BLOCK" #x258D)
- ("LEFT ONE QUARTER BLOCK" #x258E)
- ("LEFT ONE EIGHTH BLOCK" #x258F)
- ("RIGHT HALF BLOCK" #x2590)
- ("LIGHT SHADE" #x2591)
- ("MEDIUM SHADE" #x2592)
- ("DARK SHADE" #x2593)
- ("UPPER ONE EIGHTH BLOCK" #x2594)
- ("RIGHT ONE EIGHTH BLOCK" #x2595)
- ("QUADRANT LOWER LEFT" #x2596)
- ("QUADRANT LOWER RIGHT" #x2597)
- ("QUADRANT UPPER LEFT" #x2598)
- ("QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT" #x2599)
- ("QUADRANT UPPER LEFT AND LOWER RIGHT" #x259A)
- ("QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT" #x259B)
- ("QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT" #x259C)
- ("QUADRANT UPPER RIGHT" #x259D)
- ("QUADRANT UPPER RIGHT AND LOWER LEFT" #x259E)
- ("QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT" #x259F)
- ))
-
diff --git a/etc/nxml/025A0-025FF.el b/etc/nxml/025A0-025FF.el
deleted file mode 100644
index b9fbe6f95d..0000000000
--- a/etc/nxml/025A0-025FF.el
+++ /dev/null
@@ -1,99 +0,0 @@
-(nxml-define-char-name-set 'geometric-shapes
- '(("BLACK SQUARE" #x25A0)
- ("WHITE SQUARE" #x25A1)
- ("WHITE SQUARE WITH ROUNDED CORNERS" #x25A2)
- ("WHITE SQUARE CONTAINING BLACK SMALL SQUARE" #x25A3)
- ("SQUARE WITH HORIZONTAL FILL" #x25A4)
- ("SQUARE WITH VERTICAL FILL" #x25A5)
- ("SQUARE WITH ORTHOGONAL CROSSHATCH FILL" #x25A6)
- ("SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL" #x25A7)
- ("SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL" #x25A8)
- ("SQUARE WITH DIAGONAL CROSSHATCH FILL" #x25A9)
- ("BLACK SMALL SQUARE" #x25AA)
- ("WHITE SMALL SQUARE" #x25AB)
- ("BLACK RECTANGLE" #x25AC)
- ("WHITE RECTANGLE" #x25AD)
- ("BLACK VERTICAL RECTANGLE" #x25AE)
- ("WHITE VERTICAL RECTANGLE" #x25AF)
- ("BLACK PARALLELOGRAM" #x25B0)
- ("WHITE PARALLELOGRAM" #x25B1)
- ("BLACK UP-POINTING TRIANGLE" #x25B2)
- ("WHITE UP-POINTING TRIANGLE" #x25B3)
- ("BLACK UP-POINTING SMALL TRIANGLE" #x25B4)
- ("WHITE UP-POINTING SMALL TRIANGLE" #x25B5)
- ("BLACK RIGHT-POINTING TRIANGLE" #x25B6)
- ("WHITE RIGHT-POINTING TRIANGLE" #x25B7)
- ("BLACK RIGHT-POINTING SMALL TRIANGLE" #x25B8)
- ("WHITE RIGHT-POINTING SMALL TRIANGLE" #x25B9)
- ("BLACK RIGHT-POINTING POINTER" #x25BA)
- ("WHITE RIGHT-POINTING POINTER" #x25BB)
- ("BLACK DOWN-POINTING TRIANGLE" #x25BC)
- ("WHITE DOWN-POINTING TRIANGLE" #x25BD)
- ("BLACK DOWN-POINTING SMALL TRIANGLE" #x25BE)
- ("WHITE DOWN-POINTING SMALL TRIANGLE" #x25BF)
- ("BLACK LEFT-POINTING TRIANGLE" #x25C0)
- ("WHITE LEFT-POINTING TRIANGLE" #x25C1)
- ("BLACK LEFT-POINTING SMALL TRIANGLE" #x25C2)
- ("WHITE LEFT-POINTING SMALL TRIANGLE" #x25C3)
- ("BLACK LEFT-POINTING POINTER" #x25C4)
- ("WHITE LEFT-POINTING POINTER" #x25C5)
- ("BLACK DIAMOND" #x25C6)
- ("WHITE DIAMOND" #x25C7)
- ("WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND" #x25C8)
- ("FISHEYE" #x25C9)
- ("LOZENGE" #x25CA)
- ("WHITE CIRCLE" #x25CB)
- ("DOTTED CIRCLE" #x25CC)
- ("CIRCLE WITH VERTICAL FILL" #x25CD)
- ("BULLSEYE" #x25CE)
- ("BLACK CIRCLE" #x25CF)
- ("CIRCLE WITH LEFT HALF BLACK" #x25D0)
- ("CIRCLE WITH RIGHT HALF BLACK" #x25D1)
- ("CIRCLE WITH LOWER HALF BLACK" #x25D2)
- ("CIRCLE WITH UPPER HALF BLACK" #x25D3)
- ("CIRCLE WITH UPPER RIGHT QUADRANT BLACK" #x25D4)
- ("CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK" #x25D5)
- ("LEFT HALF BLACK CIRCLE" #x25D6)
- ("RIGHT HALF BLACK CIRCLE" #x25D7)
- ("INVERSE BULLET" #x25D8)
- ("INVERSE WHITE CIRCLE" #x25D9)
- ("UPPER HALF INVERSE WHITE CIRCLE" #x25DA)
- ("LOWER HALF INVERSE WHITE CIRCLE" #x25DB)
- ("UPPER LEFT QUADRANT CIRCULAR ARC" #x25DC)
- ("UPPER RIGHT QUADRANT CIRCULAR ARC" #x25DD)
- ("LOWER RIGHT QUADRANT CIRCULAR ARC" #x25DE)
- ("LOWER LEFT QUADRANT CIRCULAR ARC" #x25DF)
- ("UPPER HALF CIRCLE" #x25E0)
- ("LOWER HALF CIRCLE" #x25E1)
- ("BLACK LOWER RIGHT TRIANGLE" #x25E2)
- ("BLACK LOWER LEFT TRIANGLE" #x25E3)
- ("BLACK UPPER LEFT TRIANGLE" #x25E4)
- ("BLACK UPPER RIGHT TRIANGLE" #x25E5)
- ("WHITE BULLET" #x25E6)
- ("SQUARE WITH LEFT HALF BLACK" #x25E7)
- ("SQUARE WITH RIGHT HALF BLACK" #x25E8)
- ("SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK" #x25E9)
- ("SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK" #x25EA)
- ("WHITE SQUARE WITH VERTICAL BISECTING LINE" #x25EB)
- ("WHITE UP-POINTING TRIANGLE WITH DOT" #x25EC)
- ("UP-POINTING TRIANGLE WITH LEFT HALF BLACK" #x25ED)
- ("UP-POINTING TRIANGLE WITH RIGHT HALF BLACK" #x25EE)
- ("LARGE CIRCLE" #x25EF)
- ("WHITE SQUARE WITH UPPER LEFT QUADRANT" #x25F0)
- ("WHITE SQUARE WITH LOWER LEFT QUADRANT" #x25F1)
- ("WHITE SQUARE WITH LOWER RIGHT QUADRANT" #x25F2)
- ("WHITE SQUARE WITH UPPER RIGHT QUADRANT" #x25F3)
- ("WHITE CIRCLE WITH UPPER LEFT QUADRANT" #x25F4)
- ("WHITE CIRCLE WITH LOWER LEFT QUADRANT" #x25F5)
- ("WHITE CIRCLE WITH LOWER RIGHT QUADRANT" #x25F6)
- ("WHITE CIRCLE WITH UPPER RIGHT QUADRANT" #x25F7)
- ("UPPER LEFT TRIANGLE" #x25F8)
- ("UPPER RIGHT TRIANGLE" #x25F9)
- ("LOWER LEFT TRIANGLE" #x25FA)
- ("WHITE MEDIUM SQUARE" #x25FB)
- ("BLACK MEDIUM SQUARE" #x25FC)
- ("WHITE MEDIUM SMALL SQUARE" #x25FD)
- ("BLACK MEDIUM SMALL SQUARE" #x25FE)
- ("LOWER RIGHT TRIANGLE" #x25FF)
- ))
-
diff --git a/etc/nxml/02600-026FF.el b/etc/nxml/02600-026FF.el
deleted file mode 100644
index 72ae5c3772..0000000000
--- a/etc/nxml/02600-026FF.el
+++ /dev/null
@@ -1,136 +0,0 @@
-(nxml-define-char-name-set 'miscellaneous-symbols
- '(("BLACK SUN WITH RAYS" #x2600)
- ("CLOUD" #x2601)
- ("UMBRELLA" #x2602)
- ("SNOWMAN" #x2603)
- ("COMET" #x2604)
- ("BLACK STAR" #x2605)
- ("WHITE STAR" #x2606)
- ("LIGHTNING" #x2607)
- ("THUNDERSTORM" #x2608)
- ("SUN" #x2609)
- ("ASCENDING NODE" #x260A)
- ("DESCENDING NODE" #x260B)
- ("CONJUNCTION" #x260C)
- ("OPPOSITION" #x260D)
- ("BLACK TELEPHONE" #x260E)
- ("WHITE TELEPHONE" #x260F)
- ("BALLOT BOX" #x2610)
- ("BALLOT BOX WITH CHECK" #x2611)
- ("BALLOT BOX WITH X" #x2612)
- ("SALTIRE" #x2613)
- ("WHITE SHOGI PIECE" #x2616)
- ("BLACK SHOGI PIECE" #x2617)
- ("REVERSED ROTATED FLORAL HEART BULLET" #x2619)
- ("BLACK LEFT POINTING INDEX" #x261A)
- ("BLACK RIGHT POINTING INDEX" #x261B)
- ("WHITE LEFT POINTING INDEX" #x261C)
- ("WHITE UP POINTING INDEX" #x261D)
- ("WHITE RIGHT POINTING INDEX" #x261E)
- ("WHITE DOWN POINTING INDEX" #x261F)
- ("SKULL AND CROSSBONES" #x2620)
- ("CAUTION SIGN" #x2621)
- ("RADIOACTIVE SIGN" #x2622)
- ("BIOHAZARD SIGN" #x2623)
- ("CADUCEUS" #x2624)
- ("ANKH" #x2625)
- ("ORTHODOX CROSS" #x2626)
- ("CHI RHO" #x2627)
- ("CROSS OF LORRAINE" #x2628)
- ("CROSS OF JERUSALEM" #x2629)
- ("STAR AND CRESCENT" #x262A)
- ("FARSI SYMBOL" #x262B)
- ("ADI SHAKTI" #x262C)
- ("HAMMER AND SICKLE" #x262D)
- ("PEACE SYMBOL" #x262E)
- ("YIN YANG" #x262F)
- ("TRIGRAM FOR HEAVEN" #x2630)
- ("TRIGRAM FOR LAKE" #x2631)
- ("TRIGRAM FOR FIRE" #x2632)
- ("TRIGRAM FOR THUNDER" #x2633)
- ("TRIGRAM FOR WIND" #x2634)
- ("TRIGRAM FOR WATER" #x2635)
- ("TRIGRAM FOR MOUNTAIN" #x2636)
- ("TRIGRAM FOR EARTH" #x2637)
- ("WHEEL OF DHARMA" #x2638)
- ("WHITE FROWNING FACE" #x2639)
- ("WHITE SMILING FACE" #x263A)
- ("BLACK SMILING FACE" #x263B)
- ("WHITE SUN WITH RAYS" #x263C)
- ("FIRST QUARTER MOON" #x263D)
- ("LAST QUARTER MOON" #x263E)
- ("MERCURY" #x263F)
- ("FEMALE SIGN" #x2640)
- ("EARTH" #x2641)
- ("MALE SIGN" #x2642)
- ("JUPITER" #x2643)
- ("SATURN" #x2644)
- ("URANUS" #x2645)
- ("NEPTUNE" #x2646)
- ("PLUTO" #x2647)
- ("ARIES" #x2648)
- ("TAURUS" #x2649)
- ("GEMINI" #x264A)
- ("CANCER" #x264B)
- ("LEO" #x264C)
- ("VIRGO" #x264D)
- ("LIBRA" #x264E)
- ("SCORPIUS" #x264F)
- ("SAGITTARIUS" #x2650)
- ("CAPRICORN" #x2651)
- ("AQUARIUS" #x2652)
- ("PISCES" #x2653)
- ("WHITE CHESS KING" #x2654)
- ("WHITE CHESS QUEEN" #x2655)
- ("WHITE CHESS ROOK" #x2656)
- ("WHITE CHESS BISHOP" #x2657)
- ("WHITE CHESS KNIGHT" #x2658)
- ("WHITE CHESS PAWN" #x2659)
- ("BLACK CHESS KING" #x265A)
- ("BLACK CHESS QUEEN" #x265B)
- ("BLACK CHESS ROOK" #x265C)
- ("BLACK CHESS BISHOP" #x265D)
- ("BLACK CHESS KNIGHT" #x265E)
- ("BLACK CHESS PAWN" #x265F)
- ("BLACK SPADE SUIT" #x2660)
- ("WHITE HEART SUIT" #x2661)
- ("WHITE DIAMOND SUIT" #x2662)
- ("BLACK CLUB SUIT" #x2663)
- ("WHITE SPADE SUIT" #x2664)
- ("BLACK HEART SUIT" #x2665)
- ("BLACK DIAMOND SUIT" #x2666)
- ("WHITE CLUB SUIT" #x2667)
- ("HOT SPRINGS" #x2668)
- ("QUARTER NOTE" #x2669)
- ("EIGHTH NOTE" #x266A)
- ("BEAMED EIGHTH NOTES" #x266B)
- ("BEAMED SIXTEENTH NOTES" #x266C)
- ("MUSIC FLAT SIGN" #x266D)
- ("MUSIC NATURAL SIGN" #x266E)
- ("MUSIC SHARP SIGN" #x266F)
- ("WEST SYRIAC CROSS" #x2670)
- ("EAST SYRIAC CROSS" #x2671)
- ("UNIVERSAL RECYCLING SYMBOL" #x2672)
- ("RECYCLING SYMBOL FOR TYPE-1 PLASTICS" #x2673)
- ("RECYCLING SYMBOL FOR TYPE-2 PLASTICS" #x2674)
- ("RECYCLING SYMBOL FOR TYPE-3 PLASTICS" #x2675)
- ("RECYCLING SYMBOL FOR TYPE-4 PLASTICS" #x2676)
- ("RECYCLING SYMBOL FOR TYPE-5 PLASTICS" #x2677)
- ("RECYCLING SYMBOL FOR TYPE-6 PLASTICS" #x2678)
- ("RECYCLING SYMBOL FOR TYPE-7 PLASTICS" #x2679)
- ("RECYCLING SYMBOL FOR GENERIC MATERIALS" #x267A)
- ("BLACK UNIVERSAL RECYCLING SYMBOL" #x267B)
- ("RECYCLED PAPER SYMBOL" #x267C)
- ("PARTIALLY-RECYCLED PAPER SYMBOL" #x267D)
- ("DIE FACE-1" #x2680)
- ("DIE FACE-2" #x2681)
- ("DIE FACE-3" #x2682)
- ("DIE FACE-4" #x2683)
- ("DIE FACE-5" #x2684)
- ("DIE FACE-6" #x2685)
- ("WHITE CIRCLE WITH DOT RIGHT" #x2686)
- ("WHITE CIRCLE WITH TWO DOTS" #x2687)
- ("BLACK CIRCLE WITH WHITE DOT RIGHT" #x2688)
- ("BLACK CIRCLE WITH TWO WHITE DOTS" #x2689)
- ))
-
diff --git a/etc/nxml/02700-027BF.el b/etc/nxml/02700-027BF.el
deleted file mode 100644
index 5ca5d8fe4f..0000000000
--- a/etc/nxml/02700-027BF.el
+++ /dev/null
@@ -1,177 +0,0 @@
-(nxml-define-char-name-set 'dingbats
- '(("UPPER BLADE SCISSORS" #x2701)
- ("BLACK SCISSORS" #x2702)
- ("LOWER BLADE SCISSORS" #x2703)
- ("WHITE SCISSORS" #x2704)
- ("TELEPHONE LOCATION SIGN" #x2706)
- ("TAPE DRIVE" #x2707)
- ("AIRPLANE" #x2708)
- ("ENVELOPE" #x2709)
- ("VICTORY HAND" #x270C)
- ("WRITING HAND" #x270D)
- ("LOWER RIGHT PENCIL" #x270E)
- ("PENCIL" #x270F)
- ("UPPER RIGHT PENCIL" #x2710)
- ("WHITE NIB" #x2711)
- ("BLACK NIB" #x2712)
- ("CHECK MARK" #x2713)
- ("HEAVY CHECK MARK" #x2714)
- ("MULTIPLICATION X" #x2715)
- ("HEAVY MULTIPLICATION X" #x2716)
- ("BALLOT X" #x2717)
- ("HEAVY BALLOT X" #x2718)
- ("OUTLINED GREEK CROSS" #x2719)
- ("HEAVY GREEK CROSS" #x271A)
- ("OPEN CENTRE CROSS" #x271B)
- ("HEAVY OPEN CENTRE CROSS" #x271C)
- ("LATIN CROSS" #x271D)
- ("SHADOWED WHITE LATIN CROSS" #x271E)
- ("OUTLINED LATIN CROSS" #x271F)
- ("MALTESE CROSS" #x2720)
- ("STAR OF DAVID" #x2721)
- ("FOUR TEARDROP-SPOKED ASTERISK" #x2722)
- ("FOUR BALLOON-SPOKED ASTERISK" #x2723)
- ("HEAVY FOUR BALLOON-SPOKED ASTERISK" #x2724)
- ("FOUR CLUB-SPOKED ASTERISK" #x2725)
- ("BLACK FOUR POINTED STAR" #x2726)
- ("WHITE FOUR POINTED STAR" #x2727)
- ("STRESS OUTLINED WHITE STAR" #x2729)
- ("CIRCLED WHITE STAR" #x272A)
- ("OPEN CENTRE BLACK STAR" #x272B)
- ("BLACK CENTRE WHITE STAR" #x272C)
- ("OUTLINED BLACK STAR" #x272D)
- ("HEAVY OUTLINED BLACK STAR" #x272E)
- ("PINWHEEL STAR" #x272F)
- ("SHADOWED WHITE STAR" #x2730)
- ("HEAVY ASTERISK" #x2731)
- ("OPEN CENTRE ASTERISK" #x2732)
- ("EIGHT SPOKED ASTERISK" #x2733)
- ("EIGHT POINTED BLACK STAR" #x2734)
- ("EIGHT POINTED PINWHEEL STAR" #x2735)
- ("SIX POINTED BLACK STAR" #x2736)
- ("EIGHT POINTED RECTILINEAR BLACK STAR" #x2737)
- ("HEAVY EIGHT POINTED RECTILINEAR BLACK STAR" #x2738)
- ("TWELVE POINTED BLACK STAR" #x2739)
- ("SIXTEEN POINTED ASTERISK" #x273A)
- ("TEARDROP-SPOKED ASTERISK" #x273B)
- ("OPEN CENTRE TEARDROP-SPOKED ASTERISK" #x273C)
- ("HEAVY TEARDROP-SPOKED ASTERISK" #x273D)
- ("SIX PETALLED BLACK AND WHITE FLORETTE" #x273E)
- ("BLACK FLORETTE" #x273F)
- ("WHITE FLORETTE" #x2740)
- ("EIGHT PETALLED OUTLINED BLACK FLORETTE" #x2741)
- ("CIRCLED OPEN CENTRE EIGHT POINTED STAR" #x2742)
- ("HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK" #x2743)
- ("SNOWFLAKE" #x2744)
- ("TIGHT TRIFOLIATE SNOWFLAKE" #x2745)
- ("HEAVY CHEVRON SNOWFLAKE" #x2746)
- ("SPARKLE" #x2747)
- ("HEAVY SPARKLE" #x2748)
- ("BALLOON-SPOKED ASTERISK" #x2749)
- ("EIGHT TEARDROP-SPOKED PROPELLER ASTERISK" #x274A)
- ("HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK" #x274B)
- ("SHADOWED WHITE CIRCLE" #x274D)
- ("LOWER RIGHT DROP-SHADOWED WHITE SQUARE" #x274F)
- ("UPPER RIGHT DROP-SHADOWED WHITE SQUARE" #x2750)
- ("LOWER RIGHT SHADOWED WHITE SQUARE" #x2751)
- ("UPPER RIGHT SHADOWED WHITE SQUARE" #x2752)
- ("BLACK DIAMOND MINUS WHITE X" #x2756)
- ("LIGHT VERTICAL BAR" #x2758)
- ("MEDIUM VERTICAL BAR" #x2759)
- ("HEAVY VERTICAL BAR" #x275A)
- ("HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT" #x275B)
- ("HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT" #x275C)
- ("HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT" #x275D)
- ("HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT" #x275E)
- ("CURVED STEM PARAGRAPH SIGN ORNAMENT" #x2761)
- ("HEAVY EXCLAMATION MARK ORNAMENT" #x2762)
- ("HEAVY HEART EXCLAMATION MARK ORNAMENT" #x2763)
- ("HEAVY BLACK HEART" #x2764)
- ("ROTATED HEAVY BLACK HEART BULLET" #x2765)
- ("FLORAL HEART" #x2766)
- ("ROTATED FLORAL HEART BULLET" #x2767)
- ("MEDIUM LEFT PARENTHESIS ORNAMENT" #x2768)
- ("MEDIUM RIGHT PARENTHESIS ORNAMENT" #x2769)
- ("MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT" #x276A)
- ("MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT" #x276B)
- ("MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT" #x276C)
- ("MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT" #x276D)
- ("HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT" #x276E)
- ("HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT" #x276F)
- ("HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT" #x2770)
- ("HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT" #x2771)
- ("LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT" #x2772)
- ("LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT" #x2773)
- ("MEDIUM LEFT CURLY BRACKET ORNAMENT" #x2774)
- ("MEDIUM RIGHT CURLY BRACKET ORNAMENT" #x2775)
- ("DINGBAT NEGATIVE CIRCLED DIGIT ONE" #x2776)
- ("DINGBAT NEGATIVE CIRCLED DIGIT TWO" #x2777)
- ("DINGBAT NEGATIVE CIRCLED DIGIT THREE" #x2778)
- ("DINGBAT NEGATIVE CIRCLED DIGIT FOUR" #x2779)
- ("DINGBAT NEGATIVE CIRCLED DIGIT FIVE" #x277A)
- ("DINGBAT NEGATIVE CIRCLED DIGIT SIX" #x277B)
- ("DINGBAT NEGATIVE CIRCLED DIGIT SEVEN" #x277C)
- ("DINGBAT NEGATIVE CIRCLED DIGIT EIGHT" #x277D)
- ("DINGBAT NEGATIVE CIRCLED DIGIT NINE" #x277E)
- ("DINGBAT NEGATIVE CIRCLED NUMBER TEN" #x277F)
- ("DINGBAT CIRCLED SANS-SERIF DIGIT ONE" #x2780)
- ("DINGBAT CIRCLED SANS-SERIF DIGIT TWO" #x2781)
- ("DINGBAT CIRCLED SANS-SERIF DIGIT THREE" #x2782)
- ("DINGBAT CIRCLED SANS-SERIF DIGIT FOUR" #x2783)
- ("DINGBAT CIRCLED SANS-SERIF DIGIT FIVE" #x2784)
- ("DINGBAT CIRCLED SANS-SERIF DIGIT SIX" #x2785)
- ("DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN" #x2786)
- ("DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT" #x2787)
- ("DINGBAT CIRCLED SANS-SERIF DIGIT NINE" #x2788)
- ("DINGBAT CIRCLED SANS-SERIF NUMBER TEN" #x2789)
- ("DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE" #x278A)
- ("DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO" #x278B)
- ("DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE" #x278C)
- ("DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR" #x278D)
- ("DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE" #x278E)
- ("DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX" #x278F)
- ("DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN" #x2790)
- ("DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT" #x2791)
- ("DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE" #x2792)
- ("DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN" #x2793)
- ("HEAVY WIDE-HEADED RIGHTWARDS ARROW" #x2794)
- ("HEAVY SOUTH EAST ARROW" #x2798)
- ("HEAVY RIGHTWARDS ARROW" #x2799)
- ("HEAVY NORTH EAST ARROW" #x279A)
- ("DRAFTING POINT RIGHTWARDS ARROW" #x279B)
- ("HEAVY ROUND-TIPPED RIGHTWARDS ARROW" #x279C)
- ("TRIANGLE-HEADED RIGHTWARDS ARROW" #x279D)
- ("HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW" #x279E)
- ("DASHED TRIANGLE-HEADED RIGHTWARDS ARROW" #x279F)
- ("HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW" #x27A0)
- ("BLACK RIGHTWARDS ARROW" #x27A1)
- ("THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD" #x27A2)
- ("THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD" #x27A3)
- ("BLACK RIGHTWARDS ARROWHEAD" #x27A4)
- ("HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW" #x27A5)
- ("HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW" #x27A6)
- ("SQUAT BLACK RIGHTWARDS ARROW" #x27A7)
- ("HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW" #x27A8)
- ("RIGHT-SHADED WHITE RIGHTWARDS ARROW" #x27A9)
- ("LEFT-SHADED WHITE RIGHTWARDS ARROW" #x27AA)
- ("BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW" #x27AB)
- ("FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW" #x27AC)
- ("HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW" #x27AD)
- ("HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW" #x27AE)
- ("NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW" #x27AF)
- ("NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW" #x27B1)
- ("CIRCLED HEAVY WHITE RIGHTWARDS ARROW" #x27B2)
- ("WHITE-FEATHERED RIGHTWARDS ARROW" #x27B3)
- ("BLACK-FEATHERED SOUTH EAST ARROW" #x27B4)
- ("BLACK-FEATHERED RIGHTWARDS ARROW" #x27B5)
- ("BLACK-FEATHERED NORTH EAST ARROW" #x27B6)
- ("HEAVY BLACK-FEATHERED SOUTH EAST ARROW" #x27B7)
- ("HEAVY BLACK-FEATHERED RIGHTWARDS ARROW" #x27B8)
- ("HEAVY BLACK-FEATHERED NORTH EAST ARROW" #x27B9)
- ("TEARDROP-BARBED RIGHTWARDS ARROW" #x27BA)
- ("HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW" #x27BB)
- ("WEDGE-TAILED RIGHTWARDS ARROW" #x27BC)
- ("HEAVY WEDGE-TAILED RIGHTWARDS ARROW" #x27BD)
- ("OPEN-OUTLINED RIGHTWARDS ARROW" #x27BE)
- ))
-
diff --git a/etc/nxml/027C0-027EF.el b/etc/nxml/027C0-027EF.el
deleted file mode 100644
index 04e9d5c048..0000000000
--- a/etc/nxml/027C0-027EF.el
+++ /dev/null
@@ -1,31 +0,0 @@
-(nxml-define-char-name-set 'miscellaneous-mathematical-symbols-a
- '(("WHITE DIAMOND WITH CENTRED DOT" #x27D0)
- ("AND WITH DOT" #x27D1)
- ("ELEMENT OF OPENING UPWARDS" #x27D2)
- ("LOWER RIGHT CORNER WITH DOT" #x27D3)
- ("UPPER LEFT CORNER WITH DOT" #x27D4)
- ("LEFT OUTER JOIN" #x27D5)
- ("RIGHT OUTER JOIN" #x27D6)
- ("FULL OUTER JOIN" #x27D7)
- ("LARGE UP TACK" #x27D8)
- ("LARGE DOWN TACK" #x27D9)
- ("LEFT AND RIGHT DOUBLE TURNSTILE" #x27DA)
- ("LEFT AND RIGHT TACK" #x27DB)
- ("LEFT MULTIMAP" #x27DC)
- ("LONG RIGHT TACK" #x27DD)
- ("LONG LEFT TACK" #x27DE)
- ("UP TACK WITH CIRCLE ABOVE" #x27DF)
- ("LOZENGE DIVIDED BY HORIZONTAL RULE" #x27E0)
- ("WHITE CONCAVE-SIDED DIAMOND" #x27E1)
- ("WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK" #x27E2)
- ("WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK" #x27E3)
- ("WHITE SQUARE WITH LEFTWARDS TICK" #x27E4)
- ("WHITE SQUARE WITH RIGHTWARDS TICK" #x27E5)
- ("MATHEMATICAL LEFT WHITE SQUARE BRACKET" #x27E6)
- ("MATHEMATICAL RIGHT WHITE SQUARE BRACKET" #x27E7)
- ("MATHEMATICAL LEFT ANGLE BRACKET" #x27E8)
- ("MATHEMATICAL RIGHT ANGLE BRACKET" #x27E9)
- ("MATHEMATICAL LEFT DOUBLE ANGLE BRACKET" #x27EA)
- ("MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET" #x27EB)
- ))
-
diff --git a/etc/nxml/027F0-027FF.el b/etc/nxml/027F0-027FF.el
deleted file mode 100644
index dce4f7f867..0000000000
--- a/etc/nxml/027F0-027FF.el
+++ /dev/null
@@ -1,19 +0,0 @@
-(nxml-define-char-name-set 'supplemental-arrows-a
- '(("UPWARDS QUADRUPLE ARROW" #x27F0)
- ("DOWNWARDS QUADRUPLE ARROW" #x27F1)
- ("ANTICLOCKWISE GAPPED CIRCLE ARROW" #x27F2)
- ("CLOCKWISE GAPPED CIRCLE ARROW" #x27F3)
- ("RIGHT ARROW WITH CIRCLED PLUS" #x27F4)
- ("LONG LEFTWARDS ARROW" #x27F5)
- ("LONG RIGHTWARDS ARROW" #x27F6)
- ("LONG LEFT RIGHT ARROW" #x27F7)
- ("LONG LEFTWARDS DOUBLE ARROW" #x27F8)
- ("LONG RIGHTWARDS DOUBLE ARROW" #x27F9)
- ("LONG LEFT RIGHT DOUBLE ARROW" #x27FA)
- ("LONG LEFTWARDS ARROW FROM BAR" #x27FB)
- ("LONG RIGHTWARDS ARROW FROM BAR" #x27FC)
- ("LONG LEFTWARDS DOUBLE ARROW FROM BAR" #x27FD)
- ("LONG RIGHTWARDS DOUBLE ARROW FROM BAR" #x27FE)
- ("LONG RIGHTWARDS SQUIGGLE ARROW" #x27FF)
- ))
-
diff --git a/etc/nxml/02800-028FF.el b/etc/nxml/02800-028FF.el
deleted file mode 100644
index efcf879669..0000000000
--- a/etc/nxml/02800-028FF.el
+++ /dev/null
@@ -1,259 +0,0 @@
-(nxml-define-char-name-set 'braille-patterns
- '(("BRAILLE PATTERN BLANK" #x2800)
- ("BRAILLE PATTERN DOTS-1" #x2801)
- ("BRAILLE PATTERN DOTS-2" #x2802)
- ("BRAILLE PATTERN DOTS-12" #x2803)
- ("BRAILLE PATTERN DOTS-3" #x2804)
- ("BRAILLE PATTERN DOTS-13" #x2805)
- ("BRAILLE PATTERN DOTS-23" #x2806)
- ("BRAILLE PATTERN DOTS-123" #x2807)
- ("BRAILLE PATTERN DOTS-4" #x2808)
- ("BRAILLE PATTERN DOTS-14" #x2809)
- ("BRAILLE PATTERN DOTS-24" #x280A)
- ("BRAILLE PATTERN DOTS-124" #x280B)
- ("BRAILLE PATTERN DOTS-34" #x280C)
- ("BRAILLE PATTERN DOTS-134" #x280D)
- ("BRAILLE PATTERN DOTS-234" #x280E)
- ("BRAILLE PATTERN DOTS-1234" #x280F)
- ("BRAILLE PATTERN DOTS-5" #x2810)
- ("BRAILLE PATTERN DOTS-15" #x2811)
- ("BRAILLE PATTERN DOTS-25" #x2812)
- ("BRAILLE PATTERN DOTS-125" #x2813)
- ("BRAILLE PATTERN DOTS-35" #x2814)
- ("BRAILLE PATTERN DOTS-135" #x2815)
- ("BRAILLE PATTERN DOTS-235" #x2816)
- ("BRAILLE PATTERN DOTS-1235" #x2817)
- ("BRAILLE PATTERN DOTS-45" #x2818)
- ("BRAILLE PATTERN DOTS-145" #x2819)
- ("BRAILLE PATTERN DOTS-245" #x281A)
- ("BRAILLE PATTERN DOTS-1245" #x281B)
- ("BRAILLE PATTERN DOTS-345" #x281C)
- ("BRAILLE PATTERN DOTS-1345" #x281D)
- ("BRAILLE PATTERN DOTS-2345" #x281E)
- ("BRAILLE PATTERN DOTS-12345" #x281F)
- ("BRAILLE PATTERN DOTS-6" #x2820)
- ("BRAILLE PATTERN DOTS-16" #x2821)
- ("BRAILLE PATTERN DOTS-26" #x2822)
- ("BRAILLE PATTERN DOTS-126" #x2823)
- ("BRAILLE PATTERN DOTS-36" #x2824)
- ("BRAILLE PATTERN DOTS-136" #x2825)
- ("BRAILLE PATTERN DOTS-236" #x2826)
- ("BRAILLE PATTERN DOTS-1236" #x2827)
- ("BRAILLE PATTERN DOTS-46" #x2828)
- ("BRAILLE PATTERN DOTS-146" #x2829)
- ("BRAILLE PATTERN DOTS-246" #x282A)
- ("BRAILLE PATTERN DOTS-1246" #x282B)
- ("BRAILLE PATTERN DOTS-346" #x282C)
- ("BRAILLE PATTERN DOTS-1346" #x282D)
- ("BRAILLE PATTERN DOTS-2346" #x282E)
- ("BRAILLE PATTERN DOTS-12346" #x282F)
- ("BRAILLE PATTERN DOTS-56" #x2830)
- ("BRAILLE PATTERN DOTS-156" #x2831)
- ("BRAILLE PATTERN DOTS-256" #x2832)
- ("BRAILLE PATTERN DOTS-1256" #x2833)
- ("BRAILLE PATTERN DOTS-356" #x2834)
- ("BRAILLE PATTERN DOTS-1356" #x2835)
- ("BRAILLE PATTERN DOTS-2356" #x2836)
- ("BRAILLE PATTERN DOTS-12356" #x2837)
- ("BRAILLE PATTERN DOTS-456" #x2838)
- ("BRAILLE PATTERN DOTS-1456" #x2839)
- ("BRAILLE PATTERN DOTS-2456" #x283A)
- ("BRAILLE PATTERN DOTS-12456" #x283B)
- ("BRAILLE PATTERN DOTS-3456" #x283C)
- ("BRAILLE PATTERN DOTS-13456" #x283D)
- ("BRAILLE PATTERN DOTS-23456" #x283E)
- ("BRAILLE PATTERN DOTS-123456" #x283F)
- ("BRAILLE PATTERN DOTS-7" #x2840)
- ("BRAILLE PATTERN DOTS-17" #x2841)
- ("BRAILLE PATTERN DOTS-27" #x2842)
- ("BRAILLE PATTERN DOTS-127" #x2843)
- ("BRAILLE PATTERN DOTS-37" #x2844)
- ("BRAILLE PATTERN DOTS-137" #x2845)
- ("BRAILLE PATTERN DOTS-237" #x2846)
- ("BRAILLE PATTERN DOTS-1237" #x2847)
- ("BRAILLE PATTERN DOTS-47" #x2848)
- ("BRAILLE PATTERN DOTS-147" #x2849)
- ("BRAILLE PATTERN DOTS-247" #x284A)
- ("BRAILLE PATTERN DOTS-1247" #x284B)
- ("BRAILLE PATTERN DOTS-347" #x284C)
- ("BRAILLE PATTERN DOTS-1347" #x284D)
- ("BRAILLE PATTERN DOTS-2347" #x284E)
- ("BRAILLE PATTERN DOTS-12347" #x284F)
- ("BRAILLE PATTERN DOTS-57" #x2850)
- ("BRAILLE PATTERN DOTS-157" #x2851)
- ("BRAILLE PATTERN DOTS-257" #x2852)
- ("BRAILLE PATTERN DOTS-1257" #x2853)
- ("BRAILLE PATTERN DOTS-357" #x2854)
- ("BRAILLE PATTERN DOTS-1357" #x2855)
- ("BRAILLE PATTERN DOTS-2357" #x2856)
- ("BRAILLE PATTERN DOTS-12357" #x2857)
- ("BRAILLE PATTERN DOTS-457" #x2858)
- ("BRAILLE PATTERN DOTS-1457" #x2859)
- ("BRAILLE PATTERN DOTS-2457" #x285A)
- ("BRAILLE PATTERN DOTS-12457" #x285B)
- ("BRAILLE PATTERN DOTS-3457" #x285C)
- ("BRAILLE PATTERN DOTS-13457" #x285D)
- ("BRAILLE PATTERN DOTS-23457" #x285E)
- ("BRAILLE PATTERN DOTS-123457" #x285F)
- ("BRAILLE PATTERN DOTS-67" #x2860)
- ("BRAILLE PATTERN DOTS-167" #x2861)
- ("BRAILLE PATTERN DOTS-267" #x2862)
- ("BRAILLE PATTERN DOTS-1267" #x2863)
- ("BRAILLE PATTERN DOTS-367" #x2864)
- ("BRAILLE PATTERN DOTS-1367" #x2865)
- ("BRAILLE PATTERN DOTS-2367" #x2866)
- ("BRAILLE PATTERN DOTS-12367" #x2867)
- ("BRAILLE PATTERN DOTS-467" #x2868)
- ("BRAILLE PATTERN DOTS-1467" #x2869)
- ("BRAILLE PATTERN DOTS-2467" #x286A)
- ("BRAILLE PATTERN DOTS-12467" #x286B)
- ("BRAILLE PATTERN DOTS-3467" #x286C)
- ("BRAILLE PATTERN DOTS-13467" #x286D)
- ("BRAILLE PATTERN DOTS-23467" #x286E)
- ("BRAILLE PATTERN DOTS-123467" #x286F)
- ("BRAILLE PATTERN DOTS-567" #x2870)
- ("BRAILLE PATTERN DOTS-1567" #x2871)
- ("BRAILLE PATTERN DOTS-2567" #x2872)
- ("BRAILLE PATTERN DOTS-12567" #x2873)
- ("BRAILLE PATTERN DOTS-3567" #x2874)
- ("BRAILLE PATTERN DOTS-13567" #x2875)
- ("BRAILLE PATTERN DOTS-23567" #x2876)
- ("BRAILLE PATTERN DOTS-123567" #x2877)
- ("BRAILLE PATTERN DOTS-4567" #x2878)
- ("BRAILLE PATTERN DOTS-14567" #x2879)
- ("BRAILLE PATTERN DOTS-24567" #x287A)
- ("BRAILLE PATTERN DOTS-124567" #x287B)
- ("BRAILLE PATTERN DOTS-34567" #x287C)
- ("BRAILLE PATTERN DOTS-134567" #x287D)
- ("BRAILLE PATTERN DOTS-234567" #x287E)
- ("BRAILLE PATTERN DOTS-1234567" #x287F)
- ("BRAILLE PATTERN DOTS-8" #x2880)
- ("BRAILLE PATTERN DOTS-18" #x2881)
- ("BRAILLE PATTERN DOTS-28" #x2882)
- ("BRAILLE PATTERN DOTS-128" #x2883)
- ("BRAILLE PATTERN DOTS-38" #x2884)
- ("BRAILLE PATTERN DOTS-138" #x2885)
- ("BRAILLE PATTERN DOTS-238" #x2886)
- ("BRAILLE PATTERN DOTS-1238" #x2887)
- ("BRAILLE PATTERN DOTS-48" #x2888)
- ("BRAILLE PATTERN DOTS-148" #x2889)
- ("BRAILLE PATTERN DOTS-248" #x288A)
- ("BRAILLE PATTERN DOTS-1248" #x288B)
- ("BRAILLE PATTERN DOTS-348" #x288C)
- ("BRAILLE PATTERN DOTS-1348" #x288D)
- ("BRAILLE PATTERN DOTS-2348" #x288E)
- ("BRAILLE PATTERN DOTS-12348" #x288F)
- ("BRAILLE PATTERN DOTS-58" #x2890)
- ("BRAILLE PATTERN DOTS-158" #x2891)
- ("BRAILLE PATTERN DOTS-258" #x2892)
- ("BRAILLE PATTERN DOTS-1258" #x2893)
- ("BRAILLE PATTERN DOTS-358" #x2894)
- ("BRAILLE PATTERN DOTS-1358" #x2895)
- ("BRAILLE PATTERN DOTS-2358" #x2896)
- ("BRAILLE PATTERN DOTS-12358" #x2897)
- ("BRAILLE PATTERN DOTS-458" #x2898)
- ("BRAILLE PATTERN DOTS-1458" #x2899)
- ("BRAILLE PATTERN DOTS-2458" #x289A)
- ("BRAILLE PATTERN DOTS-12458" #x289B)
- ("BRAILLE PATTERN DOTS-3458" #x289C)
- ("BRAILLE PATTERN DOTS-13458" #x289D)
- ("BRAILLE PATTERN DOTS-23458" #x289E)
- ("BRAILLE PATTERN DOTS-123458" #x289F)
- ("BRAILLE PATTERN DOTS-68" #x28A0)
- ("BRAILLE PATTERN DOTS-168" #x28A1)
- ("BRAILLE PATTERN DOTS-268" #x28A2)
- ("BRAILLE PATTERN DOTS-1268" #x28A3)
- ("BRAILLE PATTERN DOTS-368" #x28A4)
- ("BRAILLE PATTERN DOTS-1368" #x28A5)
- ("BRAILLE PATTERN DOTS-2368" #x28A6)
- ("BRAILLE PATTERN DOTS-12368" #x28A7)
- ("BRAILLE PATTERN DOTS-468" #x28A8)
- ("BRAILLE PATTERN DOTS-1468" #x28A9)
- ("BRAILLE PATTERN DOTS-2468" #x28AA)
- ("BRAILLE PATTERN DOTS-12468" #x28AB)
- ("BRAILLE PATTERN DOTS-3468" #x28AC)
- ("BRAILLE PATTERN DOTS-13468" #x28AD)
- ("BRAILLE PATTERN DOTS-23468" #x28AE)
- ("BRAILLE PATTERN DOTS-123468" #x28AF)
- ("BRAILLE PATTERN DOTS-568" #x28B0)
- ("BRAILLE PATTERN DOTS-1568" #x28B1)
- ("BRAILLE PATTERN DOTS-2568" #x28B2)
- ("BRAILLE PATTERN DOTS-12568" #x28B3)
- ("BRAILLE PATTERN DOTS-3568" #x28B4)
- ("BRAILLE PATTERN DOTS-13568" #x28B5)
- ("BRAILLE PATTERN DOTS-23568" #x28B6)
- ("BRAILLE PATTERN DOTS-123568" #x28B7)
- ("BRAILLE PATTERN DOTS-4568" #x28B8)
- ("BRAILLE PATTERN DOTS-14568" #x28B9)
- ("BRAILLE PATTERN DOTS-24568" #x28BA)
- ("BRAILLE PATTERN DOTS-124568" #x28BB)
- ("BRAILLE PATTERN DOTS-34568" #x28BC)
- ("BRAILLE PATTERN DOTS-134568" #x28BD)
- ("BRAILLE PATTERN DOTS-234568" #x28BE)
- ("BRAILLE PATTERN DOTS-1234568" #x28BF)
- ("BRAILLE PATTERN DOTS-78" #x28C0)
- ("BRAILLE PATTERN DOTS-178" #x28C1)
- ("BRAILLE PATTERN DOTS-278" #x28C2)
- ("BRAILLE PATTERN DOTS-1278" #x28C3)
- ("BRAILLE PATTERN DOTS-378" #x28C4)
- ("BRAILLE PATTERN DOTS-1378" #x28C5)
- ("BRAILLE PATTERN DOTS-2378" #x28C6)
- ("BRAILLE PATTERN DOTS-12378" #x28C7)
- ("BRAILLE PATTERN DOTS-478" #x28C8)
- ("BRAILLE PATTERN DOTS-1478" #x28C9)
- ("BRAILLE PATTERN DOTS-2478" #x28CA)
- ("BRAILLE PATTERN DOTS-12478" #x28CB)
- ("BRAILLE PATTERN DOTS-3478" #x28CC)
- ("BRAILLE PATTERN DOTS-13478" #x28CD)
- ("BRAILLE PATTERN DOTS-23478" #x28CE)
- ("BRAILLE PATTERN DOTS-123478" #x28CF)
- ("BRAILLE PATTERN DOTS-578" #x28D0)
- ("BRAILLE PATTERN DOTS-1578" #x28D1)
- ("BRAILLE PATTERN DOTS-2578" #x28D2)
- ("BRAILLE PATTERN DOTS-12578" #x28D3)
- ("BRAILLE PATTERN DOTS-3578" #x28D4)
- ("BRAILLE PATTERN DOTS-13578" #x28D5)
- ("BRAILLE PATTERN DOTS-23578" #x28D6)
- ("BRAILLE PATTERN DOTS-123578" #x28D7)
- ("BRAILLE PATTERN DOTS-4578" #x28D8)
- ("BRAILLE PATTERN DOTS-14578" #x28D9)
- ("BRAILLE PATTERN DOTS-24578" #x28DA)
- ("BRAILLE PATTERN DOTS-124578" #x28DB)
- ("BRAILLE PATTERN DOTS-34578" #x28DC)
- ("BRAILLE PATTERN DOTS-134578" #x28DD)
- ("BRAILLE PATTERN DOTS-234578" #x28DE)
- ("BRAILLE PATTERN DOTS-1234578" #x28DF)
- ("BRAILLE PATTERN DOTS-678" #x28E0)
- ("BRAILLE PATTERN DOTS-1678" #x28E1)
- ("BRAILLE PATTERN DOTS-2678" #x28E2)
- ("BRAILLE PATTERN DOTS-12678" #x28E3)
- ("BRAILLE PATTERN DOTS-3678" #x28E4)
- ("BRAILLE PATTERN DOTS-13678" #x28E5)
- ("BRAILLE PATTERN DOTS-23678" #x28E6)
- ("BRAILLE PATTERN DOTS-123678" #x28E7)
- ("BRAILLE PATTERN DOTS-4678" #x28E8)
- ("BRAILLE PATTERN DOTS-14678" #x28E9)
- ("BRAILLE PATTERN DOTS-24678" #x28EA)
- ("BRAILLE PATTERN DOTS-124678" #x28EB)
- ("BRAILLE PATTERN DOTS-34678" #x28EC)
- ("BRAILLE PATTERN DOTS-134678" #x28ED)
- ("BRAILLE PATTERN DOTS-234678" #x28EE)
- ("BRAILLE PATTERN DOTS-1234678" #x28EF)
- ("BRAILLE PATTERN DOTS-5678" #x28F0)
- ("BRAILLE PATTERN DOTS-15678" #x28F1)
- ("BRAILLE PATTERN DOTS-25678" #x28F2)
- ("BRAILLE PATTERN DOTS-125678" #x28F3)
- ("BRAILLE PATTERN DOTS-35678" #x28F4)
- ("BRAILLE PATTERN DOTS-135678" #x28F5)
- ("BRAILLE PATTERN DOTS-235678" #x28F6)
- ("BRAILLE PATTERN DOTS-1235678" #x28F7)
- ("BRAILLE PATTERN DOTS-45678" #x28F8)
- ("BRAILLE PATTERN DOTS-145678" #x28F9)
- ("BRAILLE PATTERN DOTS-245678" #x28FA)
- ("BRAILLE PATTERN DOTS-1245678" #x28FB)
- ("BRAILLE PATTERN DOTS-345678" #x28FC)
- ("BRAILLE PATTERN DOTS-1345678" #x28FD)
- ("BRAILLE PATTERN DOTS-2345678" #x28FE)
- ("BRAILLE PATTERN DOTS-12345678" #x28FF)
- ))
-
diff --git a/etc/nxml/02900-0297F.el b/etc/nxml/02900-0297F.el
deleted file mode 100644
index bf8c2002c8..0000000000
--- a/etc/nxml/02900-0297F.el
+++ /dev/null
@@ -1,131 +0,0 @@
-(nxml-define-char-name-set 'supplemental-arrows-b
- '(("RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE" #x2900)
- ("RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE" #x2901)
- ("LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE" #x2902)
- ("RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE" #x2903)
- ("LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE" #x2904)
- ("RIGHTWARDS TWO-HEADED ARROW FROM BAR" #x2905)
- ("LEFTWARDS DOUBLE ARROW FROM BAR" #x2906)
- ("RIGHTWARDS DOUBLE ARROW FROM BAR" #x2907)
- ("DOWNWARDS ARROW WITH HORIZONTAL STROKE" #x2908)
- ("UPWARDS ARROW WITH HORIZONTAL STROKE" #x2909)
- ("UPWARDS TRIPLE ARROW" #x290A)
- ("DOWNWARDS TRIPLE ARROW" #x290B)
- ("LEFTWARDS DOUBLE DASH ARROW" #x290C)
- ("RIGHTWARDS DOUBLE DASH ARROW" #x290D)
- ("LEFTWARDS TRIPLE DASH ARROW" #x290E)
- ("RIGHTWARDS TRIPLE DASH ARROW" #x290F)
- ("RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW" #x2910)
- ("RIGHTWARDS ARROW WITH DOTTED STEM" #x2911)
- ("UPWARDS ARROW TO BAR" #x2912)
- ("DOWNWARDS ARROW TO BAR" #x2913)
- ("RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE" #x2914)
- ("RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE" #x2915)
- ("RIGHTWARDS TWO-HEADED ARROW WITH TAIL" #x2916)
- ("RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE" #x2917)
- ("RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE" #x2918)
- ("LEFTWARDS ARROW-TAIL" #x2919)
- ("RIGHTWARDS ARROW-TAIL" #x291A)
- ("LEFTWARDS DOUBLE ARROW-TAIL" #x291B)
- ("RIGHTWARDS DOUBLE ARROW-TAIL" #x291C)
- ("LEFTWARDS ARROW TO BLACK DIAMOND" #x291D)
- ("RIGHTWARDS ARROW TO BLACK DIAMOND" #x291E)
- ("LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND" #x291F)
- ("RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND" #x2920)
- ("NORTH WEST AND SOUTH EAST ARROW" #x2921)
- ("NORTH EAST AND SOUTH WEST ARROW" #x2922)
- ("NORTH WEST ARROW WITH HOOK" #x2923)
- ("NORTH EAST ARROW WITH HOOK" #x2924)
- ("SOUTH EAST ARROW WITH HOOK" #x2925)
- ("SOUTH WEST ARROW WITH HOOK" #x2926)
- ("NORTH WEST ARROW AND NORTH EAST ARROW" #x2927)
- ("NORTH EAST ARROW AND SOUTH EAST ARROW" #x2928)
- ("SOUTH EAST ARROW AND SOUTH WEST ARROW" #x2929)
- ("SOUTH WEST ARROW AND NORTH WEST ARROW" #x292A)
- ("RISING DIAGONAL CROSSING FALLING DIAGONAL" #x292B)
- ("FALLING DIAGONAL CROSSING RISING DIAGONAL" #x292C)
- ("SOUTH EAST ARROW CROSSING NORTH EAST ARROW" #x292D)
- ("NORTH EAST ARROW CROSSING SOUTH EAST ARROW" #x292E)
- ("FALLING DIAGONAL CROSSING NORTH EAST ARROW" #x292F)
- ("RISING DIAGONAL CROSSING SOUTH EAST ARROW" #x2930)
- ("NORTH EAST ARROW CROSSING NORTH WEST ARROW" #x2931)
- ("NORTH WEST ARROW CROSSING NORTH EAST ARROW" #x2932)
- ("WAVE ARROW POINTING DIRECTLY RIGHT" #x2933)
- ("ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS" #x2934)
- ("ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS" #x2935)
- ("ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS" #x2936)
- ("ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS" #x2937)
- ("RIGHT-SIDE ARC CLOCKWISE ARROW" #x2938)
- ("LEFT-SIDE ARC ANTICLOCKWISE ARROW" #x2939)
- ("TOP ARC ANTICLOCKWISE ARROW" #x293A)
- ("BOTTOM ARC ANTICLOCKWISE ARROW" #x293B)
- ("TOP ARC CLOCKWISE ARROW WITH MINUS" #x293C)
- ("TOP ARC ANTICLOCKWISE ARROW WITH PLUS" #x293D)
- ("LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW" #x293E)
- ("LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW" #x293F)
- ("ANTICLOCKWISE CLOSED CIRCLE ARROW" #x2940)
- ("CLOCKWISE CLOSED CIRCLE ARROW" #x2941)
- ("RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW" #x2942)
- ("LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW" #x2943)
- ("SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW" #x2944)
- ("RIGHTWARDS ARROW WITH PLUS BELOW" #x2945)
- ("LEFTWARDS ARROW WITH PLUS BELOW" #x2946)
- ("RIGHTWARDS ARROW THROUGH X" #x2947)
- ("LEFT RIGHT ARROW THROUGH SMALL CIRCLE" #x2948)
- ("UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE" #x2949)
- ("LEFT BARB UP RIGHT BARB DOWN HARPOON" #x294A)
- ("LEFT BARB DOWN RIGHT BARB UP HARPOON" #x294B)
- ("UP BARB RIGHT DOWN BARB LEFT HARPOON" #x294C)
- ("UP BARB LEFT DOWN BARB RIGHT HARPOON" #x294D)
- ("LEFT BARB UP RIGHT BARB UP HARPOON" #x294E)
- ("UP BARB RIGHT DOWN BARB RIGHT HARPOON" #x294F)
- ("LEFT BARB DOWN RIGHT BARB DOWN HARPOON" #x2950)
- ("UP BARB LEFT DOWN BARB LEFT HARPOON" #x2951)
- ("LEFTWARDS HARPOON WITH BARB UP TO BAR" #x2952)
- ("RIGHTWARDS HARPOON WITH BARB UP TO BAR" #x2953)
- ("UPWARDS HARPOON WITH BARB RIGHT TO BAR" #x2954)
- ("DOWNWARDS HARPOON WITH BARB RIGHT TO BAR" #x2955)
- ("LEFTWARDS HARPOON WITH BARB DOWN TO BAR" #x2956)
- ("RIGHTWARDS HARPOON WITH BARB DOWN TO BAR" #x2957)
- ("UPWARDS HARPOON WITH BARB LEFT TO BAR" #x2958)
- ("DOWNWARDS HARPOON WITH BARB LEFT TO BAR" #x2959)
- ("LEFTWARDS HARPOON WITH BARB UP FROM BAR" #x295A)
- ("RIGHTWARDS HARPOON WITH BARB UP FROM BAR" #x295B)
- ("UPWARDS HARPOON WITH BARB RIGHT FROM BAR" #x295C)
- ("DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR" #x295D)
- ("LEFTWARDS HARPOON WITH BARB DOWN FROM BAR" #x295E)
- ("RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR" #x295F)
- ("UPWARDS HARPOON WITH BARB LEFT FROM BAR" #x2960)
- ("DOWNWARDS HARPOON WITH BARB LEFT FROM BAR" #x2961)
- ("LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN" #x2962)
- ("UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT" #x2963)
- ("RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN" #x2964)
- ("DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT" #x2965)
- ("LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP" #x2966)
- ("LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN" #x2967)
- ("RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP" #x2968)
- ("RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN" #x2969)
- ("LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH" #x296A)
- ("LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH" #x296B)
- ("RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH" #x296C)
- ("RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH" #x296D)
- ("UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT" #x296E)
- ("DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT" #x296F)
- ("RIGHT DOUBLE ARROW WITH ROUNDED HEAD" #x2970)
- ("EQUALS SIGN ABOVE RIGHTWARDS ARROW" #x2971)
- ("TILDE OPERATOR ABOVE RIGHTWARDS ARROW" #x2972)
- ("LEFTWARDS ARROW ABOVE TILDE OPERATOR" #x2973)
- ("RIGHTWARDS ARROW ABOVE TILDE OPERATOR" #x2974)
- ("RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO" #x2975)
- ("LESS-THAN ABOVE LEFTWARDS ARROW" #x2976)
- ("LEFTWARDS ARROW THROUGH LESS-THAN" #x2977)
- ("GREATER-THAN ABOVE RIGHTWARDS ARROW" #x2978)
- ("SUBSET ABOVE RIGHTWARDS ARROW" #x2979)
- ("LEFTWARDS ARROW THROUGH SUBSET" #x297A)
- ("SUPERSET ABOVE LEFTWARDS ARROW" #x297B)
- ("LEFT FISH TAIL" #x297C)
- ("RIGHT FISH TAIL" #x297D)
- ("UP FISH TAIL" #x297E)
- ("DOWN FISH TAIL" #x297F)
- ))
-
diff --git a/etc/nxml/02980-029FF.el b/etc/nxml/02980-029FF.el
deleted file mode 100644
index 9751a03c36..0000000000
--- a/etc/nxml/02980-029FF.el
+++ /dev/null
@@ -1,131 +0,0 @@
-(nxml-define-char-name-set 'miscellaneous-mathematical-symbols-b
- '(("TRIPLE VERTICAL BAR DELIMITER" #x2980)
- ("Z NOTATION SPOT" #x2981)
- ("Z NOTATION TYPE COLON" #x2982)
- ("LEFT WHITE CURLY BRACKET" #x2983)
- ("RIGHT WHITE CURLY BRACKET" #x2984)
- ("LEFT WHITE PARENTHESIS" #x2985)
- ("RIGHT WHITE PARENTHESIS" #x2986)
- ("Z NOTATION LEFT IMAGE BRACKET" #x2987)
- ("Z NOTATION RIGHT IMAGE BRACKET" #x2988)
- ("Z NOTATION LEFT BINDING BRACKET" #x2989)
- ("Z NOTATION RIGHT BINDING BRACKET" #x298A)
- ("LEFT SQUARE BRACKET WITH UNDERBAR" #x298B)
- ("RIGHT SQUARE BRACKET WITH UNDERBAR" #x298C)
- ("LEFT SQUARE BRACKET WITH TICK IN TOP CORNER" #x298D)
- ("RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER" #x298E)
- ("LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER" #x298F)
- ("RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER" #x2990)
- ("LEFT ANGLE BRACKET WITH DOT" #x2991)
- ("RIGHT ANGLE BRACKET WITH DOT" #x2992)
- ("LEFT ARC LESS-THAN BRACKET" #x2993)
- ("RIGHT ARC GREATER-THAN BRACKET" #x2994)
- ("DOUBLE LEFT ARC GREATER-THAN BRACKET" #x2995)
- ("DOUBLE RIGHT ARC LESS-THAN BRACKET" #x2996)
- ("LEFT BLACK TORTOISE SHELL BRACKET" #x2997)
- ("RIGHT BLACK TORTOISE SHELL BRACKET" #x2998)
- ("DOTTED FENCE" #x2999)
- ("VERTICAL ZIGZAG LINE" #x299A)
- ("MEASURED ANGLE OPENING LEFT" #x299B)
- ("RIGHT ANGLE VARIANT WITH SQUARE" #x299C)
- ("MEASURED RIGHT ANGLE WITH DOT" #x299D)
- ("ANGLE WITH S INSIDE" #x299E)
- ("ACUTE ANGLE" #x299F)
- ("SPHERICAL ANGLE OPENING LEFT" #x29A0)
- ("SPHERICAL ANGLE OPENING UP" #x29A1)
- ("TURNED ANGLE" #x29A2)
- ("REVERSED ANGLE" #x29A3)
- ("ANGLE WITH UNDERBAR" #x29A4)
- ("REVERSED ANGLE WITH UNDERBAR" #x29A5)
- ("OBLIQUE ANGLE OPENING UP" #x29A6)
- ("OBLIQUE ANGLE OPENING DOWN" #x29A7)
- ("MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT" #x29A8)
- ("MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT" #x29A9)
- ("MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT" #x29AA)
- ("MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT" #x29AB)
- ("MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP" #x29AC)
- ("MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP" #x29AD)
- ("MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN" #x29AE)
- ("MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN" #x29AF)
- ("REVERSED EMPTY SET" #x29B0)
- ("EMPTY SET WITH OVERBAR" #x29B1)
- ("EMPTY SET WITH SMALL CIRCLE ABOVE" #x29B2)
- ("EMPTY SET WITH RIGHT ARROW ABOVE" #x29B3)
- ("EMPTY SET WITH LEFT ARROW ABOVE" #x29B4)
- ("CIRCLE WITH HORIZONTAL BAR" #x29B5)
- ("CIRCLED VERTICAL BAR" #x29B6)
- ("CIRCLED PARALLEL" #x29B7)
- ("CIRCLED REVERSE SOLIDUS" #x29B8)
- ("CIRCLED PERPENDICULAR" #x29B9)
- ("CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR" #x29BA)
- ("CIRCLE WITH SUPERIMPOSED X" #x29BB)
- ("CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN" #x29BC)
- ("UP ARROW THROUGH CIRCLE" #x29BD)
- ("CIRCLED WHITE BULLET" #x29BE)
- ("CIRCLED BULLET" #x29BF)
- ("CIRCLED LESS-THAN" #x29C0)
- ("CIRCLED GREATER-THAN" #x29C1)
- ("CIRCLE WITH SMALL CIRCLE TO THE RIGHT" #x29C2)
- ("CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT" #x29C3)
- ("SQUARED RISING DIAGONAL SLASH" #x29C4)
- ("SQUARED FALLING DIAGONAL SLASH" #x29C5)
- ("SQUARED ASTERISK" #x29C6)
- ("SQUARED SMALL CIRCLE" #x29C7)
- ("SQUARED SQUARE" #x29C8)
- ("TWO JOINED SQUARES" #x29C9)
- ("TRIANGLE WITH DOT ABOVE" #x29CA)
- ("TRIANGLE WITH UNDERBAR" #x29CB)
- ("S IN TRIANGLE" #x29CC)
- ("TRIANGLE WITH SERIFS AT BOTTOM" #x29CD)
- ("RIGHT TRIANGLE ABOVE LEFT TRIANGLE" #x29CE)
- ("LEFT TRIANGLE BESIDE VERTICAL BAR" #x29CF)
- ("VERTICAL BAR BESIDE RIGHT TRIANGLE" #x29D0)
- ("BOWTIE WITH LEFT HALF BLACK" #x29D1)
- ("BOWTIE WITH RIGHT HALF BLACK" #x29D2)
- ("BLACK BOWTIE" #x29D3)
- ("TIMES WITH LEFT HALF BLACK" #x29D4)
- ("TIMES WITH RIGHT HALF BLACK" #x29D5)
- ("WHITE HOURGLASS" #x29D6)
- ("BLACK HOURGLASS" #x29D7)
- ("LEFT WIGGLY FENCE" #x29D8)
- ("RIGHT WIGGLY FENCE" #x29D9)
- ("LEFT DOUBLE WIGGLY FENCE" #x29DA)
- ("RIGHT DOUBLE WIGGLY FENCE" #x29DB)
- ("INCOMPLETE INFINITY" #x29DC)
- ("TIE OVER INFINITY" #x29DD)
- ("INFINITY NEGATED WITH VERTICAL BAR" #x29DE)
- ("DOUBLE-ENDED MULTIMAP" #x29DF)
- ("SQUARE WITH CONTOURED OUTLINE" #x29E0)
- ("INCREASES AS" #x29E1)
- ("SHUFFLE PRODUCT" #x29E2)
- ("EQUALS SIGN AND SLANTED PARALLEL" #x29E3)
- ("EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE" #x29E4)
- ("IDENTICAL TO AND SLANTED PARALLEL" #x29E5)
- ("GLEICH STARK" #x29E6)
- ("THERMODYNAMIC" #x29E7)
- ("DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK" #x29E8)
- ("DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK" #x29E9)
- ("BLACK DIAMOND WITH DOWN ARROW" #x29EA)
- ("BLACK LOZENGE" #x29EB)
- ("WHITE CIRCLE WITH DOWN ARROW" #x29EC)
- ("BLACK CIRCLE WITH DOWN ARROW" #x29ED)
- ("ERROR-BARRED WHITE SQUARE" #x29EE)
- ("ERROR-BARRED BLACK SQUARE" #x29EF)
- ("ERROR-BARRED WHITE DIAMOND" #x29F0)
- ("ERROR-BARRED BLACK DIAMOND" #x29F1)
- ("ERROR-BARRED WHITE CIRCLE" #x29F2)
- ("ERROR-BARRED BLACK CIRCLE" #x29F3)
- ("RULE-DELAYED" #x29F4)
- ("REVERSE SOLIDUS OPERATOR" #x29F5)
- ("SOLIDUS WITH OVERBAR" #x29F6)
- ("REVERSE SOLIDUS WITH HORIZONTAL STROKE" #x29F7)
- ("BIG SOLIDUS" #x29F8)
- ("BIG REVERSE SOLIDUS" #x29F9)
- ("DOUBLE PLUS" #x29FA)
- ("TRIPLE PLUS" #x29FB)
- ("LEFT-POINTING CURVED ANGLE BRACKET" #x29FC)
- ("RIGHT-POINTING CURVED ANGLE BRACKET" #x29FD)
- ("TINY" #x29FE)
- ("MINY" #x29FF)
- ))
-
diff --git a/etc/nxml/02A00-02AFF.el b/etc/nxml/02A00-02AFF.el
deleted file mode 100644
index 6e7cdf2e64..0000000000
--- a/etc/nxml/02A00-02AFF.el
+++ /dev/null
@@ -1,259 +0,0 @@
-(nxml-define-char-name-set 'supplemental-mathematical-operators
- '(("N-ARY CIRCLED DOT OPERATOR" #x2A00)
- ("N-ARY CIRCLED PLUS OPERATOR" #x2A01)
- ("N-ARY CIRCLED TIMES OPERATOR" #x2A02)
- ("N-ARY UNION OPERATOR WITH DOT" #x2A03)
- ("N-ARY UNION OPERATOR WITH PLUS" #x2A04)
- ("N-ARY SQUARE INTERSECTION OPERATOR" #x2A05)
- ("N-ARY SQUARE UNION OPERATOR" #x2A06)
- ("TWO LOGICAL AND OPERATOR" #x2A07)
- ("TWO LOGICAL OR OPERATOR" #x2A08)
- ("N-ARY TIMES OPERATOR" #x2A09)
- ("MODULO TWO SUM" #x2A0A)
- ("SUMMATION WITH INTEGRAL" #x2A0B)
- ("QUADRUPLE INTEGRAL OPERATOR" #x2A0C)
- ("FINITE PART INTEGRAL" #x2A0D)
- ("INTEGRAL WITH DOUBLE STROKE" #x2A0E)
- ("INTEGRAL AVERAGE WITH SLASH" #x2A0F)
- ("CIRCULATION FUNCTION" #x2A10)
- ("ANTICLOCKWISE INTEGRATION" #x2A11)
- ("LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE" #x2A12)
- ("LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE" #x2A13)
- ("LINE INTEGRATION NOT INCLUDING THE POLE" #x2A14)
- ("INTEGRAL AROUND A POINT OPERATOR" #x2A15)
- ("QUATERNION INTEGRAL OPERATOR" #x2A16)
- ("INTEGRAL WITH LEFTWARDS ARROW WITH HOOK" #x2A17)
- ("INTEGRAL WITH TIMES SIGN" #x2A18)
- ("INTEGRAL WITH INTERSECTION" #x2A19)
- ("INTEGRAL WITH UNION" #x2A1A)
- ("INTEGRAL WITH OVERBAR" #x2A1B)
- ("INTEGRAL WITH UNDERBAR" #x2A1C)
- ("JOIN" #x2A1D)
- ("LARGE LEFT TRIANGLE OPERATOR" #x2A1E)
- ("Z NOTATION SCHEMA COMPOSITION" #x2A1F)
- ("Z NOTATION SCHEMA PIPING" #x2A20)
- ("Z NOTATION SCHEMA PROJECTION" #x2A21)
- ("PLUS SIGN WITH SMALL CIRCLE ABOVE" #x2A22)
- ("PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE" #x2A23)
- ("PLUS SIGN WITH TILDE ABOVE" #x2A24)
- ("PLUS SIGN WITH DOT BELOW" #x2A25)
- ("PLUS SIGN WITH TILDE BELOW" #x2A26)
- ("PLUS SIGN WITH SUBSCRIPT TWO" #x2A27)
- ("PLUS SIGN WITH BLACK TRIANGLE" #x2A28)
- ("MINUS SIGN WITH COMMA ABOVE" #x2A29)
- ("MINUS SIGN WITH DOT BELOW" #x2A2A)
- ("MINUS SIGN WITH FALLING DOTS" #x2A2B)
- ("MINUS SIGN WITH RISING DOTS" #x2A2C)
- ("PLUS SIGN IN LEFT HALF CIRCLE" #x2A2D)
- ("PLUS SIGN IN RIGHT HALF CIRCLE" #x2A2E)
- ("VECTOR OR CROSS PRODUCT" #x2A2F)
- ("MULTIPLICATION SIGN WITH DOT ABOVE" #x2A30)
- ("MULTIPLICATION SIGN WITH UNDERBAR" #x2A31)
- ("SEMIDIRECT PRODUCT WITH BOTTOM CLOSED" #x2A32)
- ("SMASH PRODUCT" #x2A33)
- ("MULTIPLICATION SIGN IN LEFT HALF CIRCLE" #x2A34)
- ("MULTIPLICATION SIGN IN RIGHT HALF CIRCLE" #x2A35)
- ("CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT" #x2A36)
- ("MULTIPLICATION SIGN IN DOUBLE CIRCLE" #x2A37)
- ("CIRCLED DIVISION SIGN" #x2A38)
- ("PLUS SIGN IN TRIANGLE" #x2A39)
- ("MINUS SIGN IN TRIANGLE" #x2A3A)
- ("MULTIPLICATION SIGN IN TRIANGLE" #x2A3B)
- ("INTERIOR PRODUCT" #x2A3C)
- ("RIGHTHAND INTERIOR PRODUCT" #x2A3D)
- ("Z NOTATION RELATIONAL COMPOSITION" #x2A3E)
- ("AMALGAMATION OR COPRODUCT" #x2A3F)
- ("INTERSECTION WITH DOT" #x2A40)
- ("UNION WITH MINUS SIGN" #x2A41)
- ("UNION WITH OVERBAR" #x2A42)
- ("INTERSECTION WITH OVERBAR" #x2A43)
- ("INTERSECTION WITH LOGICAL AND" #x2A44)
- ("UNION WITH LOGICAL OR" #x2A45)
- ("UNION ABOVE INTERSECTION" #x2A46)
- ("INTERSECTION ABOVE UNION" #x2A47)
- ("UNION ABOVE BAR ABOVE INTERSECTION" #x2A48)
- ("INTERSECTION ABOVE BAR ABOVE UNION" #x2A49)
- ("UNION BESIDE AND JOINED WITH UNION" #x2A4A)
- ("INTERSECTION BESIDE AND JOINED WITH INTERSECTION" #x2A4B)
- ("CLOSED UNION WITH SERIFS" #x2A4C)
- ("CLOSED INTERSECTION WITH SERIFS" #x2A4D)
- ("DOUBLE SQUARE INTERSECTION" #x2A4E)
- ("DOUBLE SQUARE UNION" #x2A4F)
- ("CLOSED UNION WITH SERIFS AND SMASH PRODUCT" #x2A50)
- ("LOGICAL AND WITH DOT ABOVE" #x2A51)
- ("LOGICAL OR WITH DOT ABOVE" #x2A52)
- ("DOUBLE LOGICAL AND" #x2A53)
- ("DOUBLE LOGICAL OR" #x2A54)
- ("TWO INTERSECTING LOGICAL AND" #x2A55)
- ("TWO INTERSECTING LOGICAL OR" #x2A56)
- ("SLOPING LARGE OR" #x2A57)
- ("SLOPING LARGE AND" #x2A58)
- ("LOGICAL OR OVERLAPPING LOGICAL AND" #x2A59)
- ("LOGICAL AND WITH MIDDLE STEM" #x2A5A)
- ("LOGICAL OR WITH MIDDLE STEM" #x2A5B)
- ("LOGICAL AND WITH HORIZONTAL DASH" #x2A5C)
- ("LOGICAL OR WITH HORIZONTAL DASH" #x2A5D)
- ("LOGICAL AND WITH DOUBLE OVERBAR" #x2A5E)
- ("LOGICAL AND WITH UNDERBAR" #x2A5F)
- ("LOGICAL AND WITH DOUBLE UNDERBAR" #x2A60)
- ("SMALL VEE WITH UNDERBAR" #x2A61)
- ("LOGICAL OR WITH DOUBLE OVERBAR" #x2A62)
- ("LOGICAL OR WITH DOUBLE UNDERBAR" #x2A63)
- ("Z NOTATION DOMAIN ANTIRESTRICTION" #x2A64)
- ("Z NOTATION RANGE ANTIRESTRICTION" #x2A65)
- ("EQUALS SIGN WITH DOT BELOW" #x2A66)
- ("IDENTICAL WITH DOT ABOVE" #x2A67)
- ("TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE" #x2A68)
- ("TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE" #x2A69)
- ("TILDE OPERATOR WITH DOT ABOVE" #x2A6A)
- ("TILDE OPERATOR WITH RISING DOTS" #x2A6B)
- ("SIMILAR MINUS SIMILAR" #x2A6C)
- ("CONGRUENT WITH DOT ABOVE" #x2A6D)
- ("EQUALS WITH ASTERISK" #x2A6E)
- ("ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT" #x2A6F)
- ("APPROXIMATELY EQUAL OR EQUAL TO" #x2A70)
- ("EQUALS SIGN ABOVE PLUS SIGN" #x2A71)
- ("PLUS SIGN ABOVE EQUALS SIGN" #x2A72)
- ("EQUALS SIGN ABOVE TILDE OPERATOR" #x2A73)
- ("DOUBLE COLON EQUAL" #x2A74)
- ("TWO CONSECUTIVE EQUALS SIGNS" #x2A75)
- ("THREE CONSECUTIVE EQUALS SIGNS" #x2A76)
- ("EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW" #x2A77)
- ("EQUIVALENT WITH FOUR DOTS ABOVE" #x2A78)
- ("LESS-THAN WITH CIRCLE INSIDE" #x2A79)
- ("GREATER-THAN WITH CIRCLE INSIDE" #x2A7A)
- ("LESS-THAN WITH QUESTION MARK ABOVE" #x2A7B)
- ("GREATER-THAN WITH QUESTION MARK ABOVE" #x2A7C)
- ("LESS-THAN OR SLANTED EQUAL TO" #x2A7D)
- ("GREATER-THAN OR SLANTED EQUAL TO" #x2A7E)
- ("LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE" #x2A7F)
- ("GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE" #x2A80)
- ("LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE" #x2A81)
- ("GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE" #x2A82)
- ("LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT" #x2A83)
- ("GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT" #x2A84)
- ("LESS-THAN OR APPROXIMATE" #x2A85)
- ("GREATER-THAN OR APPROXIMATE" #x2A86)
- ("LESS-THAN AND SINGLE-LINE NOT EQUAL TO" #x2A87)
- ("GREATER-THAN AND SINGLE-LINE NOT EQUAL TO" #x2A88)
- ("LESS-THAN AND NOT APPROXIMATE" #x2A89)
- ("GREATER-THAN AND NOT APPROXIMATE" #x2A8A)
- ("LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN" #x2A8B)
- ("GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN" #x2A8C)
- ("LESS-THAN ABOVE SIMILAR OR EQUAL" #x2A8D)
- ("GREATER-THAN ABOVE SIMILAR OR EQUAL" #x2A8E)
- ("LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN" #x2A8F)
- ("GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN" #x2A90)
- ("LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL" #x2A91)
- ("GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL" #x2A92)
- ("LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL" #x2A93)
- ("GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL" #x2A94)
- ("SLANTED EQUAL TO OR LESS-THAN" #x2A95)
- ("SLANTED EQUAL TO OR GREATER-THAN" #x2A96)
- ("SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE" #x2A97)
- ("SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE" #x2A98)
- ("DOUBLE-LINE EQUAL TO OR LESS-THAN" #x2A99)
- ("DOUBLE-LINE EQUAL TO OR GREATER-THAN" #x2A9A)
- ("DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN" #x2A9B)
- ("DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN" #x2A9C)
- ("SIMILAR OR LESS-THAN" #x2A9D)
- ("SIMILAR OR GREATER-THAN" #x2A9E)
- ("SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN" #x2A9F)
- ("SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN" #x2AA0)
- ("DOUBLE NESTED LESS-THAN" #x2AA1)
- ("DOUBLE NESTED GREATER-THAN" #x2AA2)
- ("DOUBLE NESTED LESS-THAN WITH UNDERBAR" #x2AA3)
- ("GREATER-THAN OVERLAPPING LESS-THAN" #x2AA4)
- ("GREATER-THAN BESIDE LESS-THAN" #x2AA5)
- ("LESS-THAN CLOSED BY CURVE" #x2AA6)
- ("GREATER-THAN CLOSED BY CURVE" #x2AA7)
- ("LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL" #x2AA8)
- ("GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL" #x2AA9)
- ("SMALLER THAN" #x2AAA)
- ("LARGER THAN" #x2AAB)
- ("SMALLER THAN OR EQUAL TO" #x2AAC)
- ("LARGER THAN OR EQUAL TO" #x2AAD)
- ("EQUALS SIGN WITH BUMPY ABOVE" #x2AAE)
- ("PRECEDES ABOVE SINGLE-LINE EQUALS SIGN" #x2AAF)
- ("SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN" #x2AB0)
- ("PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO" #x2AB1)
- ("SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO" #x2AB2)
- ("PRECEDES ABOVE EQUALS SIGN" #x2AB3)
- ("SUCCEEDS ABOVE EQUALS SIGN" #x2AB4)
- ("PRECEDES ABOVE NOT EQUAL TO" #x2AB5)
- ("SUCCEEDS ABOVE NOT EQUAL TO" #x2AB6)
- ("PRECEDES ABOVE ALMOST EQUAL TO" #x2AB7)
- ("SUCCEEDS ABOVE ALMOST EQUAL TO" #x2AB8)
- ("PRECEDES ABOVE NOT ALMOST EQUAL TO" #x2AB9)
- ("SUCCEEDS ABOVE NOT ALMOST EQUAL TO" #x2ABA)
- ("DOUBLE PRECEDES" #x2ABB)
- ("DOUBLE SUCCEEDS" #x2ABC)
- ("SUBSET WITH DOT" #x2ABD)
- ("SUPERSET WITH DOT" #x2ABE)
- ("SUBSET WITH PLUS SIGN BELOW" #x2ABF)
- ("SUPERSET WITH PLUS SIGN BELOW" #x2AC0)
- ("SUBSET WITH MULTIPLICATION SIGN BELOW" #x2AC1)
- ("SUPERSET WITH MULTIPLICATION SIGN BELOW" #x2AC2)
- ("SUBSET OF OR EQUAL TO WITH DOT ABOVE" #x2AC3)
- ("SUPERSET OF OR EQUAL TO WITH DOT ABOVE" #x2AC4)
- ("SUBSET OF ABOVE EQUALS SIGN" #x2AC5)
- ("SUPERSET OF ABOVE EQUALS SIGN" #x2AC6)
- ("SUBSET OF ABOVE TILDE OPERATOR" #x2AC7)
- ("SUPERSET OF ABOVE TILDE OPERATOR" #x2AC8)
- ("SUBSET OF ABOVE ALMOST EQUAL TO" #x2AC9)
- ("SUPERSET OF ABOVE ALMOST EQUAL TO" #x2ACA)
- ("SUBSET OF ABOVE NOT EQUAL TO" #x2ACB)
- ("SUPERSET OF ABOVE NOT EQUAL TO" #x2ACC)
- ("SQUARE LEFT OPEN BOX OPERATOR" #x2ACD)
- ("SQUARE RIGHT OPEN BOX OPERATOR" #x2ACE)
- ("CLOSED SUBSET" #x2ACF)
- ("CLOSED SUPERSET" #x2AD0)
- ("CLOSED SUBSET OR EQUAL TO" #x2AD1)
- ("CLOSED SUPERSET OR EQUAL TO" #x2AD2)
- ("SUBSET ABOVE SUPERSET" #x2AD3)
- ("SUPERSET ABOVE SUBSET" #x2AD4)
- ("SUBSET ABOVE SUBSET" #x2AD5)
- ("SUPERSET ABOVE SUPERSET" #x2AD6)
- ("SUPERSET BESIDE SUBSET" #x2AD7)
- ("SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET" #x2AD8)
- ("ELEMENT OF OPENING DOWNWARDS" #x2AD9)
- ("PITCHFORK WITH TEE TOP" #x2ADA)
- ("TRANSVERSAL INTERSECTION" #x2ADB)
- ("FORKING" #x2ADC)
- ("NONFORKING" #x2ADD)
- ("SHORT LEFT TACK" #x2ADE)
- ("SHORT DOWN TACK" #x2ADF)
- ("SHORT UP TACK" #x2AE0)
- ("PERPENDICULAR WITH S" #x2AE1)
- ("VERTICAL BAR TRIPLE RIGHT TURNSTILE" #x2AE2)
- ("DOUBLE VERTICAL BAR LEFT TURNSTILE" #x2AE3)
- ("VERTICAL BAR DOUBLE LEFT TURNSTILE" #x2AE4)
- ("DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE" #x2AE5)
- ("LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL" #x2AE6)
- ("SHORT DOWN TACK WITH OVERBAR" #x2AE7)
- ("SHORT UP TACK WITH UNDERBAR" #x2AE8)
- ("SHORT UP TACK ABOVE SHORT DOWN TACK" #x2AE9)
- ("DOUBLE DOWN TACK" #x2AEA)
- ("DOUBLE UP TACK" #x2AEB)
- ("DOUBLE STROKE NOT SIGN" #x2AEC)
- ("REVERSED DOUBLE STROKE NOT SIGN" #x2AED)
- ("DOES NOT DIVIDE WITH REVERSED NEGATION SLASH" #x2AEE)
- ("VERTICAL LINE WITH CIRCLE ABOVE" #x2AEF)
- ("VERTICAL LINE WITH CIRCLE BELOW" #x2AF0)
- ("DOWN TACK WITH CIRCLE BELOW" #x2AF1)
- ("PARALLEL WITH HORIZONTAL STROKE" #x2AF2)
- ("PARALLEL WITH TILDE OPERATOR" #x2AF3)
- ("TRIPLE VERTICAL BAR BINARY RELATION" #x2AF4)
- ("TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE" #x2AF5)
- ("TRIPLE COLON OPERATOR" #x2AF6)
- ("TRIPLE NESTED LESS-THAN" #x2AF7)
- ("TRIPLE NESTED GREATER-THAN" #x2AF8)
- ("DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO" #x2AF9)
- ("DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO" #x2AFA)
- ("TRIPLE SOLIDUS BINARY RELATION" #x2AFB)
- ("LARGE TRIPLE VERTICAL BAR OPERATOR" #x2AFC)
- ("DOUBLE SOLIDUS OPERATOR" #x2AFD)
- ("WHITE VERTICAL BAR" #x2AFE)
- ("N-ARY WHITE VERTICAL BAR" #x2AFF)
- ))
-
diff --git a/etc/nxml/02E80-02EFF.el b/etc/nxml/02E80-02EFF.el
deleted file mode 100644
index aca68f2027..0000000000
--- a/etc/nxml/02E80-02EFF.el
+++ /dev/null
@@ -1,118 +0,0 @@
-(nxml-define-char-name-set 'cjk-radicals-supplement
- '(("CJK RADICAL REPEAT" #x2E80)
- ("CJK RADICAL CLIFF" #x2E81)
- ("CJK RADICAL SECOND ONE" #x2E82)
- ("CJK RADICAL SECOND TWO" #x2E83)
- ("CJK RADICAL SECOND THREE" #x2E84)
- ("CJK RADICAL PERSON" #x2E85)
- ("CJK RADICAL BOX" #x2E86)
- ("CJK RADICAL TABLE" #x2E87)
- ("CJK RADICAL KNIFE ONE" #x2E88)
- ("CJK RADICAL KNIFE TWO" #x2E89)
- ("CJK RADICAL DIVINATION" #x2E8A)
- ("CJK RADICAL SEAL" #x2E8B)
- ("CJK RADICAL SMALL ONE" #x2E8C)
- ("CJK RADICAL SMALL TWO" #x2E8D)
- ("CJK RADICAL LAME ONE" #x2E8E)
- ("CJK RADICAL LAME TWO" #x2E8F)
- ("CJK RADICAL LAME THREE" #x2E90)
- ("CJK RADICAL LAME FOUR" #x2E91)
- ("CJK RADICAL SNAKE" #x2E92)
- ("CJK RADICAL THREAD" #x2E93)
- ("CJK RADICAL SNOUT ONE" #x2E94)
- ("CJK RADICAL SNOUT TWO" #x2E95)
- ("CJK RADICAL HEART ONE" #x2E96)
- ("CJK RADICAL HEART TWO" #x2E97)
- ("CJK RADICAL HAND" #x2E98)
- ("CJK RADICAL RAP" #x2E99)
- ("CJK RADICAL CHOKE" #x2E9B)
- ("CJK RADICAL SUN" #x2E9C)
- ("CJK RADICAL MOON" #x2E9D)
- ("CJK RADICAL DEATH" #x2E9E)
- ("CJK RADICAL MOTHER" #x2E9F)
- ("CJK RADICAL CIVILIAN" #x2EA0)
- ("CJK RADICAL WATER ONE" #x2EA1)
- ("CJK RADICAL WATER TWO" #x2EA2)
- ("CJK RADICAL FIRE" #x2EA3)
- ("CJK RADICAL PAW ONE" #x2EA4)
- ("CJK RADICAL PAW TWO" #x2EA5)
- ("CJK RADICAL SIMPLIFIED HALF TREE TRUNK" #x2EA6)
- ("CJK RADICAL COW" #x2EA7)
- ("CJK RADICAL DOG" #x2EA8)
- ("CJK RADICAL JADE" #x2EA9)
- ("CJK RADICAL BOLT OF CLOTH" #x2EAA)
- ("CJK RADICAL EYE" #x2EAB)
- ("CJK RADICAL SPIRIT ONE" #x2EAC)
- ("CJK RADICAL SPIRIT TWO" #x2EAD)
- ("CJK RADICAL BAMBOO" #x2EAE)
- ("CJK RADICAL SILK" #x2EAF)
- ("CJK RADICAL C-SIMPLIFIED SILK" #x2EB0)
- ("CJK RADICAL NET ONE" #x2EB1)
- ("CJK RADICAL NET TWO" #x2EB2)
- ("CJK RADICAL NET THREE" #x2EB3)
- ("CJK RADICAL NET FOUR" #x2EB4)
- ("CJK RADICAL MESH" #x2EB5)
- ("CJK RADICAL SHEEP" #x2EB6)
- ("CJK RADICAL RAM" #x2EB7)
- ("CJK RADICAL EWE" #x2EB8)
- ("CJK RADICAL OLD" #x2EB9)
- ("CJK RADICAL BRUSH ONE" #x2EBA)
- ("CJK RADICAL BRUSH TWO" #x2EBB)
- ("CJK RADICAL MEAT" #x2EBC)
- ("CJK RADICAL MORTAR" #x2EBD)
- ("CJK RADICAL GRASS ONE" #x2EBE)
- ("CJK RADICAL GRASS TWO" #x2EBF)
- ("CJK RADICAL GRASS THREE" #x2EC0)
- ("CJK RADICAL TIGER" #x2EC1)
- ("CJK RADICAL CLOTHES" #x2EC2)
- ("CJK RADICAL WEST ONE" #x2EC3)
- ("CJK RADICAL WEST TWO" #x2EC4)
- ("CJK RADICAL C-SIMPLIFIED SEE" #x2EC5)
- ("CJK RADICAL SIMPLIFIED HORN" #x2EC6)
- ("CJK RADICAL HORN" #x2EC7)
- ("CJK RADICAL C-SIMPLIFIED SPEECH" #x2EC8)
- ("CJK RADICAL C-SIMPLIFIED SHELL" #x2EC9)
- ("CJK RADICAL FOOT" #x2ECA)
- ("CJK RADICAL C-SIMPLIFIED CART" #x2ECB)
- ("CJK RADICAL SIMPLIFIED WALK" #x2ECC)
- ("CJK RADICAL WALK ONE" #x2ECD)
- ("CJK RADICAL WALK TWO" #x2ECE)
- ("CJK RADICAL CITY" #x2ECF)
- ("CJK RADICAL C-SIMPLIFIED GOLD" #x2ED0)
- ("CJK RADICAL LONG ONE" #x2ED1)
- ("CJK RADICAL LONG TWO" #x2ED2)
- ("CJK RADICAL C-SIMPLIFIED LONG" #x2ED3)
- ("CJK RADICAL C-SIMPLIFIED GATE" #x2ED4)
- ("CJK RADICAL MOUND ONE" #x2ED5)
- ("CJK RADICAL MOUND TWO" #x2ED6)
- ("CJK RADICAL RAIN" #x2ED7)
- ("CJK RADICAL BLUE" #x2ED8)
- ("CJK RADICAL C-SIMPLIFIED TANNED LEATHER" #x2ED9)
- ("CJK RADICAL C-SIMPLIFIED LEAF" #x2EDA)
- ("CJK RADICAL C-SIMPLIFIED WIND" #x2EDB)
- ("CJK RADICAL C-SIMPLIFIED FLY" #x2EDC)
- ("CJK RADICAL EAT ONE" #x2EDD)
- ("CJK RADICAL EAT TWO" #x2EDE)
- ("CJK RADICAL EAT THREE" #x2EDF)
- ("CJK RADICAL C-SIMPLIFIED EAT" #x2EE0)
- ("CJK RADICAL HEAD" #x2EE1)
- ("CJK RADICAL C-SIMPLIFIED HORSE" #x2EE2)
- ("CJK RADICAL BONE" #x2EE3)
- ("CJK RADICAL GHOST" #x2EE4)
- ("CJK RADICAL C-SIMPLIFIED FISH" #x2EE5)
- ("CJK RADICAL C-SIMPLIFIED BIRD" #x2EE6)
- ("CJK RADICAL C-SIMPLIFIED SALT" #x2EE7)
- ("CJK RADICAL SIMPLIFIED WHEAT" #x2EE8)
- ("CJK RADICAL SIMPLIFIED YELLOW" #x2EE9)
- ("CJK RADICAL C-SIMPLIFIED FROG" #x2EEA)
- ("CJK RADICAL J-SIMPLIFIED EVEN" #x2EEB)
- ("CJK RADICAL C-SIMPLIFIED EVEN" #x2EEC)
- ("CJK RADICAL J-SIMPLIFIED TOOTH" #x2EED)
- ("CJK RADICAL C-SIMPLIFIED TOOTH" #x2EEE)
- ("CJK RADICAL J-SIMPLIFIED DRAGON" #x2EEF)
- ("CJK RADICAL C-SIMPLIFIED DRAGON" #x2EF0)
- ("CJK RADICAL TURTLE" #x2EF1)
- ("CJK RADICAL J-SIMPLIFIED TURTLE" #x2EF2)
- ("CJK RADICAL C-SIMPLIFIED TURTLE" #x2EF3)
- ))
-
diff --git a/etc/nxml/02F00-02FDF.el b/etc/nxml/02F00-02FDF.el
deleted file mode 100644
index 63ad5b758b..0000000000
--- a/etc/nxml/02F00-02FDF.el
+++ /dev/null
@@ -1,217 +0,0 @@
-(nxml-define-char-name-set 'kangxi-radicals
- '(("KANGXI RADICAL ONE" #x2F00)
- ("KANGXI RADICAL LINE" #x2F01)
- ("KANGXI RADICAL DOT" #x2F02)
- ("KANGXI RADICAL SLASH" #x2F03)
- ("KANGXI RADICAL SECOND" #x2F04)
- ("KANGXI RADICAL HOOK" #x2F05)
- ("KANGXI RADICAL TWO" #x2F06)
- ("KANGXI RADICAL LID" #x2F07)
- ("KANGXI RADICAL MAN" #x2F08)
- ("KANGXI RADICAL LEGS" #x2F09)
- ("KANGXI RADICAL ENTER" #x2F0A)
- ("KANGXI RADICAL EIGHT" #x2F0B)
- ("KANGXI RADICAL DOWN BOX" #x2F0C)
- ("KANGXI RADICAL COVER" #x2F0D)
- ("KANGXI RADICAL ICE" #x2F0E)
- ("KANGXI RADICAL TABLE" #x2F0F)
- ("KANGXI RADICAL OPEN BOX" #x2F10)
- ("KANGXI RADICAL KNIFE" #x2F11)
- ("KANGXI RADICAL POWER" #x2F12)
- ("KANGXI RADICAL WRAP" #x2F13)
- ("KANGXI RADICAL SPOON" #x2F14)
- ("KANGXI RADICAL RIGHT OPEN BOX" #x2F15)
- ("KANGXI RADICAL HIDING ENCLOSURE" #x2F16)
- ("KANGXI RADICAL TEN" #x2F17)
- ("KANGXI RADICAL DIVINATION" #x2F18)
- ("KANGXI RADICAL SEAL" #x2F19)
- ("KANGXI RADICAL CLIFF" #x2F1A)
- ("KANGXI RADICAL PRIVATE" #x2F1B)
- ("KANGXI RADICAL AGAIN" #x2F1C)
- ("KANGXI RADICAL MOUTH" #x2F1D)
- ("KANGXI RADICAL ENCLOSURE" #x2F1E)
- ("KANGXI RADICAL EARTH" #x2F1F)
- ("KANGXI RADICAL SCHOLAR" #x2F20)
- ("KANGXI RADICAL GO" #x2F21)
- ("KANGXI RADICAL GO SLOWLY" #x2F22)
- ("KANGXI RADICAL EVENING" #x2F23)
- ("KANGXI RADICAL BIG" #x2F24)
- ("KANGXI RADICAL WOMAN" #x2F25)
- ("KANGXI RADICAL CHILD" #x2F26)
- ("KANGXI RADICAL ROOF" #x2F27)
- ("KANGXI RADICAL INCH" #x2F28)
- ("KANGXI RADICAL SMALL" #x2F29)
- ("KANGXI RADICAL LAME" #x2F2A)
- ("KANGXI RADICAL CORPSE" #x2F2B)
- ("KANGXI RADICAL SPROUT" #x2F2C)
- ("KANGXI RADICAL MOUNTAIN" #x2F2D)
- ("KANGXI RADICAL RIVER" #x2F2E)
- ("KANGXI RADICAL WORK" #x2F2F)
- ("KANGXI RADICAL ONESELF" #x2F30)
- ("KANGXI RADICAL TURBAN" #x2F31)
- ("KANGXI RADICAL DRY" #x2F32)
- ("KANGXI RADICAL SHORT THREAD" #x2F33)
- ("KANGXI RADICAL DOTTED CLIFF" #x2F34)
- ("KANGXI RADICAL LONG STRIDE" #x2F35)
- ("KANGXI RADICAL TWO HANDS" #x2F36)
- ("KANGXI RADICAL SHOOT" #x2F37)
- ("KANGXI RADICAL BOW" #x2F38)
- ("KANGXI RADICAL SNOUT" #x2F39)
- ("KANGXI RADICAL BRISTLE" #x2F3A)
- ("KANGXI RADICAL STEP" #x2F3B)
- ("KANGXI RADICAL HEART" #x2F3C)
- ("KANGXI RADICAL HALBERD" #x2F3D)
- ("KANGXI RADICAL DOOR" #x2F3E)
- ("KANGXI RADICAL HAND" #x2F3F)
- ("KANGXI RADICAL BRANCH" #x2F40)
- ("KANGXI RADICAL RAP" #x2F41)
- ("KANGXI RADICAL SCRIPT" #x2F42)
- ("KANGXI RADICAL DIPPER" #x2F43)
- ("KANGXI RADICAL AXE" #x2F44)
- ("KANGXI RADICAL SQUARE" #x2F45)
- ("KANGXI RADICAL NOT" #x2F46)
- ("KANGXI RADICAL SUN" #x2F47)
- ("KANGXI RADICAL SAY" #x2F48)
- ("KANGXI RADICAL MOON" #x2F49)
- ("KANGXI RADICAL TREE" #x2F4A)
- ("KANGXI RADICAL LACK" #x2F4B)
- ("KANGXI RADICAL STOP" #x2F4C)
- ("KANGXI RADICAL DEATH" #x2F4D)
- ("KANGXI RADICAL WEAPON" #x2F4E)
- ("KANGXI RADICAL DO NOT" #x2F4F)
- ("KANGXI RADICAL COMPARE" #x2F50)
- ("KANGXI RADICAL FUR" #x2F51)
- ("KANGXI RADICAL CLAN" #x2F52)
- ("KANGXI RADICAL STEAM" #x2F53)
- ("KANGXI RADICAL WATER" #x2F54)
- ("KANGXI RADICAL FIRE" #x2F55)
- ("KANGXI RADICAL CLAW" #x2F56)
- ("KANGXI RADICAL FATHER" #x2F57)
- ("KANGXI RADICAL DOUBLE X" #x2F58)
- ("KANGXI RADICAL HALF TREE TRUNK" #x2F59)
- ("KANGXI RADICAL SLICE" #x2F5A)
- ("KANGXI RADICAL FANG" #x2F5B)
- ("KANGXI RADICAL COW" #x2F5C)
- ("KANGXI RADICAL DOG" #x2F5D)
- ("KANGXI RADICAL PROFOUND" #x2F5E)
- ("KANGXI RADICAL JADE" #x2F5F)
- ("KANGXI RADICAL MELON" #x2F60)
- ("KANGXI RADICAL TILE" #x2F61)
- ("KANGXI RADICAL SWEET" #x2F62)
- ("KANGXI RADICAL LIFE" #x2F63)
- ("KANGXI RADICAL USE" #x2F64)
- ("KANGXI RADICAL FIELD" #x2F65)
- ("KANGXI RADICAL BOLT OF CLOTH" #x2F66)
- ("KANGXI RADICAL SICKNESS" #x2F67)
- ("KANGXI RADICAL DOTTED TENT" #x2F68)
- ("KANGXI RADICAL WHITE" #x2F69)
- ("KANGXI RADICAL SKIN" #x2F6A)
- ("KANGXI RADICAL DISH" #x2F6B)
- ("KANGXI RADICAL EYE" #x2F6C)
- ("KANGXI RADICAL SPEAR" #x2F6D)
- ("KANGXI RADICAL ARROW" #x2F6E)
- ("KANGXI RADICAL STONE" #x2F6F)
- ("KANGXI RADICAL SPIRIT" #x2F70)
- ("KANGXI RADICAL TRACK" #x2F71)
- ("KANGXI RADICAL GRAIN" #x2F72)
- ("KANGXI RADICAL CAVE" #x2F73)
- ("KANGXI RADICAL STAND" #x2F74)
- ("KANGXI RADICAL BAMBOO" #x2F75)
- ("KANGXI RADICAL RICE" #x2F76)
- ("KANGXI RADICAL SILK" #x2F77)
- ("KANGXI RADICAL JAR" #x2F78)
- ("KANGXI RADICAL NET" #x2F79)
- ("KANGXI RADICAL SHEEP" #x2F7A)
- ("KANGXI RADICAL FEATHER" #x2F7B)
- ("KANGXI RADICAL OLD" #x2F7C)
- ("KANGXI RADICAL AND" #x2F7D)
- ("KANGXI RADICAL PLOW" #x2F7E)
- ("KANGXI RADICAL EAR" #x2F7F)
- ("KANGXI RADICAL BRUSH" #x2F80)
- ("KANGXI RADICAL MEAT" #x2F81)
- ("KANGXI RADICAL MINISTER" #x2F82)
- ("KANGXI RADICAL SELF" #x2F83)
- ("KANGXI RADICAL ARRIVE" #x2F84)
- ("KANGXI RADICAL MORTAR" #x2F85)
- ("KANGXI RADICAL TONGUE" #x2F86)
- ("KANGXI RADICAL OPPOSE" #x2F87)
- ("KANGXI RADICAL BOAT" #x2F88)
- ("KANGXI RADICAL STOPPING" #x2F89)
- ("KANGXI RADICAL COLOR" #x2F8A)
- ("KANGXI RADICAL GRASS" #x2F8B)
- ("KANGXI RADICAL TIGER" #x2F8C)
- ("KANGXI RADICAL INSECT" #x2F8D)
- ("KANGXI RADICAL BLOOD" #x2F8E)
- ("KANGXI RADICAL WALK ENCLOSURE" #x2F8F)
- ("KANGXI RADICAL CLOTHES" #x2F90)
- ("KANGXI RADICAL WEST" #x2F91)
- ("KANGXI RADICAL SEE" #x2F92)
- ("KANGXI RADICAL HORN" #x2F93)
- ("KANGXI RADICAL SPEECH" #x2F94)
- ("KANGXI RADICAL VALLEY" #x2F95)
- ("KANGXI RADICAL BEAN" #x2F96)
- ("KANGXI RADICAL PIG" #x2F97)
- ("KANGXI RADICAL BADGER" #x2F98)
- ("KANGXI RADICAL SHELL" #x2F99)
- ("KANGXI RADICAL RED" #x2F9A)
- ("KANGXI RADICAL RUN" #x2F9B)
- ("KANGXI RADICAL FOOT" #x2F9C)
- ("KANGXI RADICAL BODY" #x2F9D)
- ("KANGXI RADICAL CART" #x2F9E)
- ("KANGXI RADICAL BITTER" #x2F9F)
- ("KANGXI RADICAL MORNING" #x2FA0)
- ("KANGXI RADICAL WALK" #x2FA1)
- ("KANGXI RADICAL CITY" #x2FA2)
- ("KANGXI RADICAL WINE" #x2FA3)
- ("KANGXI RADICAL DISTINGUISH" #x2FA4)
- ("KANGXI RADICAL VILLAGE" #x2FA5)
- ("KANGXI RADICAL GOLD" #x2FA6)
- ("KANGXI RADICAL LONG" #x2FA7)
- ("KANGXI RADICAL GATE" #x2FA8)
- ("KANGXI RADICAL MOUND" #x2FA9)
- ("KANGXI RADICAL SLAVE" #x2FAA)
- ("KANGXI RADICAL SHORT TAILED BIRD" #x2FAB)
- ("KANGXI RADICAL RAIN" #x2FAC)
- ("KANGXI RADICAL BLUE" #x2FAD)
- ("KANGXI RADICAL WRONG" #x2FAE)
- ("KANGXI RADICAL FACE" #x2FAF)
- ("KANGXI RADICAL LEATHER" #x2FB0)
- ("KANGXI RADICAL TANNED LEATHER" #x2FB1)
- ("KANGXI RADICAL LEEK" #x2FB2)
- ("KANGXI RADICAL SOUND" #x2FB3)
- ("KANGXI RADICAL LEAF" #x2FB4)
- ("KANGXI RADICAL WIND" #x2FB5)
- ("KANGXI RADICAL FLY" #x2FB6)
- ("KANGXI RADICAL EAT" #x2FB7)
- ("KANGXI RADICAL HEAD" #x2FB8)
- ("KANGXI RADICAL FRAGRANT" #x2FB9)
- ("KANGXI RADICAL HORSE" #x2FBA)
- ("KANGXI RADICAL BONE" #x2FBB)
- ("KANGXI RADICAL TALL" #x2FBC)
- ("KANGXI RADICAL HAIR" #x2FBD)
- ("KANGXI RADICAL FIGHT" #x2FBE)
- ("KANGXI RADICAL SACRIFICIAL WINE" #x2FBF)
- ("KANGXI RADICAL CAULDRON" #x2FC0)
- ("KANGXI RADICAL GHOST" #x2FC1)
- ("KANGXI RADICAL FISH" #x2FC2)
- ("KANGXI RADICAL BIRD" #x2FC3)
- ("KANGXI RADICAL SALT" #x2FC4)
- ("KANGXI RADICAL DEER" #x2FC5)
- ("KANGXI RADICAL WHEAT" #x2FC6)
- ("KANGXI RADICAL HEMP" #x2FC7)
- ("KANGXI RADICAL YELLOW" #x2FC8)
- ("KANGXI RADICAL MILLET" #x2FC9)
- ("KANGXI RADICAL BLACK" #x2FCA)
- ("KANGXI RADICAL EMBROIDERY" #x2FCB)
- ("KANGXI RADICAL FROG" #x2FCC)
- ("KANGXI RADICAL TRIPOD" #x2FCD)
- ("KANGXI RADICAL DRUM" #x2FCE)
- ("KANGXI RADICAL RAT" #x2FCF)
- ("KANGXI RADICAL NOSE" #x2FD0)
- ("KANGXI RADICAL EVEN" #x2FD1)
- ("KANGXI RADICAL TOOTH" #x2FD2)
- ("KANGXI RADICAL DRAGON" #x2FD3)
- ("KANGXI RADICAL TURTLE" #x2FD4)
- ("KANGXI RADICAL FLUTE" #x2FD5)
- ))
-
diff --git a/etc/nxml/02FF0-02FFF.el b/etc/nxml/02FF0-02FFF.el
deleted file mode 100644
index fc1eafb11e..0000000000
--- a/etc/nxml/02FF0-02FFF.el
+++ /dev/null
@@ -1,15 +0,0 @@
-(nxml-define-char-name-set 'ideographic-description-characters
- '(("IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT" #x2FF0)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW" #x2FF1)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT" #x2FF2)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW" #x2FF3)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND" #x2FF4)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE" #x2FF5)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW" #x2FF6)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT" #x2FF7)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT" #x2FF8)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT" #x2FF9)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT" #x2FFA)
- ("IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID" #x2FFB)
- ))
-
diff --git a/etc/nxml/03000-0303F.el b/etc/nxml/03000-0303F.el
deleted file mode 100644
index a2f6435cdf..0000000000
--- a/etc/nxml/03000-0303F.el
+++ /dev/null
@@ -1,67 +0,0 @@
-(nxml-define-char-name-set 'cjk-symbols-and-punctuation
- '(("IDEOGRAPHIC SPACE" #x3000)
- ("IDEOGRAPHIC COMMA" #x3001)
- ("IDEOGRAPHIC FULL STOP" #x3002)
- ("DITTO MARK" #x3003)
- ("JAPANESE INDUSTRIAL STANDARD SYMBOL" #x3004)
- ("IDEOGRAPHIC ITERATION MARK" #x3005)
- ("IDEOGRAPHIC CLOSING MARK" #x3006)
- ("IDEOGRAPHIC NUMBER ZERO" #x3007)
- ("LEFT ANGLE BRACKET" #x3008)
- ("RIGHT ANGLE BRACKET" #x3009)
- ("LEFT DOUBLE ANGLE BRACKET" #x300A)
- ("RIGHT DOUBLE ANGLE BRACKET" #x300B)
- ("LEFT CORNER BRACKET" #x300C)
- ("RIGHT CORNER BRACKET" #x300D)
- ("LEFT WHITE CORNER BRACKET" #x300E)
- ("RIGHT WHITE CORNER BRACKET" #x300F)
- ("LEFT BLACK LENTICULAR BRACKET" #x3010)
- ("RIGHT BLACK LENTICULAR BRACKET" #x3011)
- ("POSTAL MARK" #x3012)
- ("GETA MARK" #x3013)
- ("LEFT TORTOISE SHELL BRACKET" #x3014)
- ("RIGHT TORTOISE SHELL BRACKET" #x3015)
- ("LEFT WHITE LENTICULAR BRACKET" #x3016)
- ("RIGHT WHITE LENTICULAR BRACKET" #x3017)
- ("LEFT WHITE TORTOISE SHELL BRACKET" #x3018)
- ("RIGHT WHITE TORTOISE SHELL BRACKET" #x3019)
- ("LEFT WHITE SQUARE BRACKET" #x301A)
- ("RIGHT WHITE SQUARE BRACKET" #x301B)
- ("WAVE DASH" #x301C)
- ("REVERSED DOUBLE PRIME QUOTATION MARK" #x301D)
- ("DOUBLE PRIME QUOTATION MARK" #x301E)
- ("LOW DOUBLE PRIME QUOTATION MARK" #x301F)
- ("POSTAL MARK FACE" #x3020)
- ("HANGZHOU NUMERAL ONE" #x3021)
- ("HANGZHOU NUMERAL TWO" #x3022)
- ("HANGZHOU NUMERAL THREE" #x3023)
- ("HANGZHOU NUMERAL FOUR" #x3024)
- ("HANGZHOU NUMERAL FIVE" #x3025)
- ("HANGZHOU NUMERAL SIX" #x3026)
- ("HANGZHOU NUMERAL SEVEN" #x3027)
- ("HANGZHOU NUMERAL EIGHT" #x3028)
- ("HANGZHOU NUMERAL NINE" #x3029)
- ("IDEOGRAPHIC LEVEL TONE MARK" #x302A)
- ("IDEOGRAPHIC RISING TONE MARK" #x302B)
- ("IDEOGRAPHIC DEPARTING TONE MARK" #x302C)
- ("IDEOGRAPHIC ENTERING TONE MARK" #x302D)
- ("HANGUL SINGLE DOT TONE MARK" #x302E)
- ("HANGUL DOUBLE DOT TONE MARK" #x302F)
- ("WAVY DASH" #x3030)
- ("VERTICAL KANA REPEAT MARK" #x3031)
- ("VERTICAL KANA REPEAT WITH VOICED SOUND MARK" #x3032)
- ("VERTICAL KANA REPEAT MARK UPPER HALF" #x3033)
- ("VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF" #x3034)
- ("VERTICAL KANA REPEAT MARK LOWER HALF" #x3035)
- ("CIRCLED POSTAL MARK" #x3036)
- ("IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL" #x3037)
- ("HANGZHOU NUMERAL TEN" #x3038)
- ("HANGZHOU NUMERAL TWENTY" #x3039)
- ("HANGZHOU NUMERAL THIRTY" #x303A)
- ("VERTICAL IDEOGRAPHIC ITERATION MARK" #x303B)
- ("MASU MARK" #x303C)
- ("PART ALTERNATION MARK" #x303D)
- ("IDEOGRAPHIC VARIATION INDICATOR" #x303E)
- ("IDEOGRAPHIC HALF FILL SPACE" #x303F)
- ))
-
diff --git a/etc/nxml/03040-0309F.el b/etc/nxml/03040-0309F.el
deleted file mode 100644
index 2484d11b95..0000000000
--- a/etc/nxml/03040-0309F.el
+++ /dev/null
@@ -1,96 +0,0 @@
-(nxml-define-char-name-set 'hiragana
- '(("HIRAGANA LETTER SMALL A" #x3041)
- ("HIRAGANA LETTER A" #x3042)
- ("HIRAGANA LETTER SMALL I" #x3043)
- ("HIRAGANA LETTER I" #x3044)
- ("HIRAGANA LETTER SMALL U" #x3045)
- ("HIRAGANA LETTER U" #x3046)
- ("HIRAGANA LETTER SMALL E" #x3047)
- ("HIRAGANA LETTER E" #x3048)
- ("HIRAGANA LETTER SMALL O" #x3049)
- ("HIRAGANA LETTER O" #x304A)
- ("HIRAGANA LETTER KA" #x304B)
- ("HIRAGANA LETTER GA" #x304C)
- ("HIRAGANA LETTER KI" #x304D)
- ("HIRAGANA LETTER GI" #x304E)
- ("HIRAGANA LETTER KU" #x304F)
- ("HIRAGANA LETTER GU" #x3050)
- ("HIRAGANA LETTER KE" #x3051)
- ("HIRAGANA LETTER GE" #x3052)
- ("HIRAGANA LETTER KO" #x3053)
- ("HIRAGANA LETTER GO" #x3054)
- ("HIRAGANA LETTER SA" #x3055)
- ("HIRAGANA LETTER ZA" #x3056)
- ("HIRAGANA LETTER SI" #x3057)
- ("HIRAGANA LETTER ZI" #x3058)
- ("HIRAGANA LETTER SU" #x3059)
- ("HIRAGANA LETTER ZU" #x305A)
- ("HIRAGANA LETTER SE" #x305B)
- ("HIRAGANA LETTER ZE" #x305C)
- ("HIRAGANA LETTER SO" #x305D)
- ("HIRAGANA LETTER ZO" #x305E)
- ("HIRAGANA LETTER TA" #x305F)
- ("HIRAGANA LETTER DA" #x3060)
- ("HIRAGANA LETTER TI" #x3061)
- ("HIRAGANA LETTER DI" #x3062)
- ("HIRAGANA LETTER SMALL TU" #x3063)
- ("HIRAGANA LETTER TU" #x3064)
- ("HIRAGANA LETTER DU" #x3065)
- ("HIRAGANA LETTER TE" #x3066)
- ("HIRAGANA LETTER DE" #x3067)
- ("HIRAGANA LETTER TO" #x3068)
- ("HIRAGANA LETTER DO" #x3069)
- ("HIRAGANA LETTER NA" #x306A)
- ("HIRAGANA LETTER NI" #x306B)
- ("HIRAGANA LETTER NU" #x306C)
- ("HIRAGANA LETTER NE" #x306D)
- ("HIRAGANA LETTER NO" #x306E)
- ("HIRAGANA LETTER HA" #x306F)
- ("HIRAGANA LETTER BA" #x3070)
- ("HIRAGANA LETTER PA" #x3071)
- ("HIRAGANA LETTER HI" #x3072)
- ("HIRAGANA LETTER BI" #x3073)
- ("HIRAGANA LETTER PI" #x3074)
- ("HIRAGANA LETTER HU" #x3075)
- ("HIRAGANA LETTER BU" #x3076)
- ("HIRAGANA LETTER PU" #x3077)
- ("HIRAGANA LETTER HE" #x3078)
- ("HIRAGANA LETTER BE" #x3079)
- ("HIRAGANA LETTER PE" #x307A)
- ("HIRAGANA LETTER HO" #x307B)
- ("HIRAGANA LETTER BO" #x307C)
- ("HIRAGANA LETTER PO" #x307D)
- ("HIRAGANA LETTER MA" #x307E)
- ("HIRAGANA LETTER MI" #x307F)
- ("HIRAGANA LETTER MU" #x3080)
- ("HIRAGANA LETTER ME" #x3081)
- ("HIRAGANA LETTER MO" #x3082)
- ("HIRAGANA LETTER SMALL YA" #x3083)
- ("HIRAGANA LETTER YA" #x3084)
- ("HIRAGANA LETTER SMALL YU" #x3085)
- ("HIRAGANA LETTER YU" #x3086)
- ("HIRAGANA LETTER SMALL YO" #x3087)
- ("HIRAGANA LETTER YO" #x3088)
- ("HIRAGANA LETTER RA" #x3089)
- ("HIRAGANA LETTER RI" #x308A)
- ("HIRAGANA LETTER RU" #x308B)
- ("HIRAGANA LETTER RE" #x308C)
- ("HIRAGANA LETTER RO" #x308D)
- ("HIRAGANA LETTER SMALL WA" #x308E)
- ("HIRAGANA LETTER WA" #x308F)
- ("HIRAGANA LETTER WI" #x3090)
- ("HIRAGANA LETTER WE" #x3091)
- ("HIRAGANA LETTER WO" #x3092)
- ("HIRAGANA LETTER N" #x3093)
- ("HIRAGANA LETTER VU" #x3094)
- ("HIRAGANA LETTER SMALL KA" #x3095)
- ("HIRAGANA LETTER SMALL KE" #x3096)
- ("COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK" #x3099)
- ("COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK" #x309A)
- ("KATAKANA-HIRAGANA VOICED SOUND MARK" #x309B)
- ("KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK" #x309C)
- ("HIRAGANA ITERATION MARK" #x309D)
- ("HIRAGANA VOICED ITERATION MARK" #x309E)
- ("HIRAGANA DIGRAPH YORI" #x309F)
- ))
-
diff --git a/etc/nxml/030A0-030FF.el b/etc/nxml/030A0-030FF.el
deleted file mode 100644
index 4507ed4083..0000000000
--- a/etc/nxml/030A0-030FF.el
+++ /dev/null
@@ -1,99 +0,0 @@
-(nxml-define-char-name-set 'katakana
- '(("KATAKANA-HIRAGANA DOUBLE HYPHEN" #x30A0)
- ("KATAKANA LETTER SMALL A" #x30A1)
- ("KATAKANA LETTER A" #x30A2)
- ("KATAKANA LETTER SMALL I" #x30A3)
- ("KATAKANA LETTER I" #x30A4)
- ("KATAKANA LETTER SMALL U" #x30A5)
- ("KATAKANA LETTER U" #x30A6)
- ("KATAKANA LETTER SMALL E" #x30A7)
- ("KATAKANA LETTER E" #x30A8)
- ("KATAKANA LETTER SMALL O" #x30A9)
- ("KATAKANA LETTER O" #x30AA)
- ("KATAKANA LETTER KA" #x30AB)
- ("KATAKANA LETTER GA" #x30AC)
- ("KATAKANA LETTER KI" #x30AD)
- ("KATAKANA LETTER GI" #x30AE)
- ("KATAKANA LETTER KU" #x30AF)
- ("KATAKANA LETTER GU" #x30B0)
- ("KATAKANA LETTER KE" #x30B1)
- ("KATAKANA LETTER GE" #x30B2)
- ("KATAKANA LETTER KO" #x30B3)
- ("KATAKANA LETTER GO" #x30B4)
- ("KATAKANA LETTER SA" #x30B5)
- ("KATAKANA LETTER ZA" #x30B6)
- ("KATAKANA LETTER SI" #x30B7)
- ("KATAKANA LETTER ZI" #x30B8)
- ("KATAKANA LETTER SU" #x30B9)
- ("KATAKANA LETTER ZU" #x30BA)
- ("KATAKANA LETTER SE" #x30BB)
- ("KATAKANA LETTER ZE" #x30BC)
- ("KATAKANA LETTER SO" #x30BD)
- ("KATAKANA LETTER ZO" #x30BE)
- ("KATAKANA LETTER TA" #x30BF)
- ("KATAKANA LETTER DA" #x30C0)
- ("KATAKANA LETTER TI" #x30C1)
- ("KATAKANA LETTER DI" #x30C2)
- ("KATAKANA LETTER SMALL TU" #x30C3)
- ("KATAKANA LETTER TU" #x30C4)
- ("KATAKANA LETTER DU" #x30C5)
- ("KATAKANA LETTER TE" #x30C6)
- ("KATAKANA LETTER DE" #x30C7)
- ("KATAKANA LETTER TO" #x30C8)
- ("KATAKANA LETTER DO" #x30C9)
- ("KATAKANA LETTER NA" #x30CA)
- ("KATAKANA LETTER NI" #x30CB)
- ("KATAKANA LETTER NU" #x30CC)
- ("KATAKANA LETTER NE" #x30CD)
- ("KATAKANA LETTER NO" #x30CE)
- ("KATAKANA LETTER HA" #x30CF)
- ("KATAKANA LETTER BA" #x30D0)
- ("KATAKANA LETTER PA" #x30D1)
- ("KATAKANA LETTER HI" #x30D2)
- ("KATAKANA LETTER BI" #x30D3)
- ("KATAKANA LETTER PI" #x30D4)
- ("KATAKANA LETTER HU" #x30D5)
- ("KATAKANA LETTER BU" #x30D6)
- ("KATAKANA LETTER PU" #x30D7)
- ("KATAKANA LETTER HE" #x30D8)
- ("KATAKANA LETTER BE" #x30D9)
- ("KATAKANA LETTER PE" #x30DA)
- ("KATAKANA LETTER HO" #x30DB)
- ("KATAKANA LETTER BO" #x30DC)
- ("KATAKANA LETTER PO" #x30DD)
- ("KATAKANA LETTER MA" #x30DE)
- ("KATAKANA LETTER MI" #x30DF)
- ("KATAKANA LETTER MU" #x30E0)
- ("KATAKANA LETTER ME" #x30E1)
- ("KATAKANA LETTER MO" #x30E2)
- ("KATAKANA LETTER SMALL YA" #x30E3)
- ("KATAKANA LETTER YA" #x30E4)
- ("KATAKANA LETTER SMALL YU" #x30E5)
- ("KATAKANA LETTER YU" #x30E6)
- ("KATAKANA LETTER SMALL YO" #x30E7)
- ("KATAKANA LETTER YO" #x30E8)
- ("KATAKANA LETTER RA" #x30E9)
- ("KATAKANA LETTER RI" #x30EA)
- ("KATAKANA LETTER RU" #x30EB)
- ("KATAKANA LETTER RE" #x30EC)
- ("KATAKANA LETTER RO" #x30ED)
- ("KATAKANA LETTER SMALL WA" #x30EE)
- ("KATAKANA LETTER WA" #x30EF)
- ("KATAKANA LETTER WI" #x30F0)
- ("KATAKANA LETTER WE" #x30F1)
- ("KATAKANA LETTER WO" #x30F2)
- ("KATAKANA LETTER N" #x30F3)
- ("KATAKANA LETTER VU" #x30F4)
- ("KATAKANA LETTER SMALL KA" #x30F5)
- ("KATAKANA LETTER SMALL KE" #x30F6)
- ("KATAKANA LETTER VA" #x30F7)
- ("KATAKANA LETTER VI" #x30F8)
- ("KATAKANA LETTER VE" #x30F9)
- ("KATAKANA LETTER VO" #x30FA)
- ("KATAKANA MIDDLE DOT" #x30FB)
- ("KATAKANA-HIRAGANA PROLONGED SOUND MARK" #x30FC)
- ("KATAKANA ITERATION MARK" #x30FD)
- ("KATAKANA VOICED ITERATION MARK" #x30FE)
- ("KATAKANA DIGRAPH KOTO" #x30FF)
- ))
-
diff --git a/etc/nxml/03100-0312F.el b/etc/nxml/03100-0312F.el
deleted file mode 100644
index 6ab50b1dbb..0000000000
--- a/etc/nxml/03100-0312F.el
+++ /dev/null
@@ -1,43 +0,0 @@
-(nxml-define-char-name-set 'bopomofo
- '(("BOPOMOFO LETTER B" #x3105)
- ("BOPOMOFO LETTER P" #x3106)
- ("BOPOMOFO LETTER M" #x3107)
- ("BOPOMOFO LETTER F" #x3108)
- ("BOPOMOFO LETTER D" #x3109)
- ("BOPOMOFO LETTER T" #x310A)
- ("BOPOMOFO LETTER N" #x310B)
- ("BOPOMOFO LETTER L" #x310C)
- ("BOPOMOFO LETTER G" #x310D)
- ("BOPOMOFO LETTER K" #x310E)
- ("BOPOMOFO LETTER H" #x310F)
- ("BOPOMOFO LETTER J" #x3110)
- ("BOPOMOFO LETTER Q" #x3111)
- ("BOPOMOFO LETTER X" #x3112)
- ("BOPOMOFO LETTER ZH" #x3113)
- ("BOPOMOFO LETTER CH" #x3114)
- ("BOPOMOFO LETTER SH" #x3115)
- ("BOPOMOFO LETTER R" #x3116)
- ("BOPOMOFO LETTER Z" #x3117)
- ("BOPOMOFO LETTER C" #x3118)
- ("BOPOMOFO LETTER S" #x3119)
- ("BOPOMOFO LETTER A" #x311A)
- ("BOPOMOFO LETTER O" #x311B)
- ("BOPOMOFO LETTER E" #x311C)
- ("BOPOMOFO LETTER EH" #x311D)
- ("BOPOMOFO LETTER AI" #x311E)
- ("BOPOMOFO LETTER EI" #x311F)
- ("BOPOMOFO LETTER AU" #x3120)
- ("BOPOMOFO LETTER OU" #x3121)
- ("BOPOMOFO LETTER AN" #x3122)
- ("BOPOMOFO LETTER EN" #x3123)
- ("BOPOMOFO LETTER ANG" #x3124)
- ("BOPOMOFO LETTER ENG" #x3125)
- ("BOPOMOFO LETTER ER" #x3126)
- ("BOPOMOFO LETTER I" #x3127)
- ("BOPOMOFO LETTER U" #x3128)
- ("BOPOMOFO LETTER IU" #x3129)
- ("BOPOMOFO LETTER V" #x312A)
- ("BOPOMOFO LETTER NG" #x312B)
- ("BOPOMOFO LETTER GN" #x312C)
- ))
-
diff --git a/etc/nxml/03130-0318F.el b/etc/nxml/03130-0318F.el
deleted file mode 100644
index 3aabfb76cf..0000000000
--- a/etc/nxml/03130-0318F.el
+++ /dev/null
@@ -1,97 +0,0 @@
-(nxml-define-char-name-set 'hangul-compatibility-jamo
- '(("HANGUL LETTER KIYEOK" #x3131)
- ("HANGUL LETTER SSANGKIYEOK" #x3132)
- ("HANGUL LETTER KIYEOK-SIOS" #x3133)
- ("HANGUL LETTER NIEUN" #x3134)
- ("HANGUL LETTER NIEUN-CIEUC" #x3135)
- ("HANGUL LETTER NIEUN-HIEUH" #x3136)
- ("HANGUL LETTER TIKEUT" #x3137)
- ("HANGUL LETTER SSANGTIKEUT" #x3138)
- ("HANGUL LETTER RIEUL" #x3139)
- ("HANGUL LETTER RIEUL-KIYEOK" #x313A)
- ("HANGUL LETTER RIEUL-MIEUM" #x313B)
- ("HANGUL LETTER RIEUL-PIEUP" #x313C)
- ("HANGUL LETTER RIEUL-SIOS" #x313D)
- ("HANGUL LETTER RIEUL-THIEUTH" #x313E)
- ("HANGUL LETTER RIEUL-PHIEUPH" #x313F)
- ("HANGUL LETTER RIEUL-HIEUH" #x3140)
- ("HANGUL LETTER MIEUM" #x3141)
- ("HANGUL LETTER PIEUP" #x3142)
- ("HANGUL LETTER SSANGPIEUP" #x3143)
- ("HANGUL LETTER PIEUP-SIOS" #x3144)
- ("HANGUL LETTER SIOS" #x3145)
- ("HANGUL LETTER SSANGSIOS" #x3146)
- ("HANGUL LETTER IEUNG" #x3147)
- ("HANGUL LETTER CIEUC" #x3148)
- ("HANGUL LETTER SSANGCIEUC" #x3149)
- ("HANGUL LETTER CHIEUCH" #x314A)
- ("HANGUL LETTER KHIEUKH" #x314B)
- ("HANGUL LETTER THIEUTH" #x314C)
- ("HANGUL LETTER PHIEUPH" #x314D)
- ("HANGUL LETTER HIEUH" #x314E)
- ("HANGUL LETTER A" #x314F)
- ("HANGUL LETTER AE" #x3150)
- ("HANGUL LETTER YA" #x3151)
- ("HANGUL LETTER YAE" #x3152)
- ("HANGUL LETTER EO" #x3153)
- ("HANGUL LETTER E" #x3154)
- ("HANGUL LETTER YEO" #x3155)
- ("HANGUL LETTER YE" #x3156)
- ("HANGUL LETTER O" #x3157)
- ("HANGUL LETTER WA" #x3158)
- ("HANGUL LETTER WAE" #x3159)
- ("HANGUL LETTER OE" #x315A)
- ("HANGUL LETTER YO" #x315B)
- ("HANGUL LETTER U" #x315C)
- ("HANGUL LETTER WEO" #x315D)
- ("HANGUL LETTER WE" #x315E)
- ("HANGUL LETTER WI" #x315F)
- ("HANGUL LETTER YU" #x3160)
- ("HANGUL LETTER EU" #x3161)
- ("HANGUL LETTER YI" #x3162)
- ("HANGUL LETTER I" #x3163)
- ("HANGUL FILLER" #x3164)
- ("HANGUL LETTER SSANGNIEUN" #x3165)
- ("HANGUL LETTER NIEUN-TIKEUT" #x3166)
- ("HANGUL LETTER NIEUN-SIOS" #x3167)
- ("HANGUL LETTER NIEUN-PANSIOS" #x3168)
- ("HANGUL LETTER RIEUL-KIYEOK-SIOS" #x3169)
- ("HANGUL LETTER RIEUL-TIKEUT" #x316A)
- ("HANGUL LETTER RIEUL-PIEUP-SIOS" #x316B)
- ("HANGUL LETTER RIEUL-PANSIOS" #x316C)
- ("HANGUL LETTER RIEUL-YEORINHIEUH" #x316D)
- ("HANGUL LETTER MIEUM-PIEUP" #x316E)
- ("HANGUL LETTER MIEUM-SIOS" #x316F)
- ("HANGUL LETTER MIEUM-PANSIOS" #x3170)
- ("HANGUL LETTER KAPYEOUNMIEUM" #x3171)
- ("HANGUL LETTER PIEUP-KIYEOK" #x3172)
- ("HANGUL LETTER PIEUP-TIKEUT" #x3173)
- ("HANGUL LETTER PIEUP-SIOS-KIYEOK" #x3174)
- ("HANGUL LETTER PIEUP-SIOS-TIKEUT" #x3175)
- ("HANGUL LETTER PIEUP-CIEUC" #x3176)
- ("HANGUL LETTER PIEUP-THIEUTH" #x3177)
- ("HANGUL LETTER KAPYEOUNPIEUP" #x3178)
- ("HANGUL LETTER KAPYEOUNSSANGPIEUP" #x3179)
- ("HANGUL LETTER SIOS-KIYEOK" #x317A)
- ("HANGUL LETTER SIOS-NIEUN" #x317B)
- ("HANGUL LETTER SIOS-TIKEUT" #x317C)
- ("HANGUL LETTER SIOS-PIEUP" #x317D)
- ("HANGUL LETTER SIOS-CIEUC" #x317E)
- ("HANGUL LETTER PANSIOS" #x317F)
- ("HANGUL LETTER SSANGIEUNG" #x3180)
- ("HANGUL LETTER YESIEUNG" #x3181)
- ("HANGUL LETTER YESIEUNG-SIOS" #x3182)
- ("HANGUL LETTER YESIEUNG-PANSIOS" #x3183)
- ("HANGUL LETTER KAPYEOUNPHIEUPH" #x3184)
- ("HANGUL LETTER SSANGHIEUH" #x3185)
- ("HANGUL LETTER YEORINHIEUH" #x3186)
- ("HANGUL LETTER YO-YA" #x3187)
- ("HANGUL LETTER YO-YAE" #x3188)
- ("HANGUL LETTER YO-I" #x3189)
- ("HANGUL LETTER YU-YEO" #x318A)
- ("HANGUL LETTER YU-YE" #x318B)
- ("HANGUL LETTER YU-I" #x318C)
- ("HANGUL LETTER ARAEA" #x318D)
- ("HANGUL LETTER ARAEAE" #x318E)
- ))
-
diff --git a/etc/nxml/03190-0319F.el b/etc/nxml/03190-0319F.el
deleted file mode 100644
index 6dce50e469..0000000000
--- a/etc/nxml/03190-0319F.el
+++ /dev/null
@@ -1,19 +0,0 @@
-(nxml-define-char-name-set 'kanbun
- '(("IDEOGRAPHIC ANNOTATION LINKING MARK" #x3190)
- ("IDEOGRAPHIC ANNOTATION REVERSE MARK" #x3191)
- ("IDEOGRAPHIC ANNOTATION ONE MARK" #x3192)
- ("IDEOGRAPHIC ANNOTATION TWO MARK" #x3193)
- ("IDEOGRAPHIC ANNOTATION THREE MARK" #x3194)
- ("IDEOGRAPHIC ANNOTATION FOUR MARK" #x3195)
- ("IDEOGRAPHIC ANNOTATION TOP MARK" #x3196)
- ("IDEOGRAPHIC ANNOTATION MIDDLE MARK" #x3197)
- ("IDEOGRAPHIC ANNOTATION BOTTOM MARK" #x3198)
- ("IDEOGRAPHIC ANNOTATION FIRST MARK" #x3199)
- ("IDEOGRAPHIC ANNOTATION SECOND MARK" #x319A)
- ("IDEOGRAPHIC ANNOTATION THIRD MARK" #x319B)
- ("IDEOGRAPHIC ANNOTATION FOURTH MARK" #x319C)
- ("IDEOGRAPHIC ANNOTATION HEAVEN MARK" #x319D)
- ("IDEOGRAPHIC ANNOTATION EARTH MARK" #x319E)
- ("IDEOGRAPHIC ANNOTATION MAN MARK" #x319F)
- ))
-
diff --git a/etc/nxml/031A0-031BF.el b/etc/nxml/031A0-031BF.el
deleted file mode 100644
index 54d2f54b80..0000000000
--- a/etc/nxml/031A0-031BF.el
+++ /dev/null
@@ -1,27 +0,0 @@
-(nxml-define-char-name-set 'bopomofo-extended
- '(("BOPOMOFO LETTER BU" #x31A0)
- ("BOPOMOFO LETTER ZI" #x31A1)
- ("BOPOMOFO LETTER JI" #x31A2)
- ("BOPOMOFO LETTER GU" #x31A3)
- ("BOPOMOFO LETTER EE" #x31A4)
- ("BOPOMOFO LETTER ENN" #x31A5)
- ("BOPOMOFO LETTER OO" #x31A6)
- ("BOPOMOFO LETTER ONN" #x31A7)
- ("BOPOMOFO LETTER IR" #x31A8)
- ("BOPOMOFO LETTER ANN" #x31A9)
- ("BOPOMOFO LETTER INN" #x31AA)
- ("BOPOMOFO LETTER UNN" #x31AB)
- ("BOPOMOFO LETTER IM" #x31AC)
- ("BOPOMOFO LETTER NGG" #x31AD)
- ("BOPOMOFO LETTER AINN" #x31AE)
- ("BOPOMOFO LETTER AUNN" #x31AF)
- ("BOPOMOFO LETTER AM" #x31B0)
- ("BOPOMOFO LETTER OM" #x31B1)
- ("BOPOMOFO LETTER ONG" #x31B2)
- ("BOPOMOFO LETTER INNN" #x31B3)
- ("BOPOMOFO FINAL LETTER P" #x31B4)
- ("BOPOMOFO FINAL LETTER T" #x31B5)
- ("BOPOMOFO FINAL LETTER K" #x31B6)
- ("BOPOMOFO FINAL LETTER H" #x31B7)
- ))
-
diff --git a/etc/nxml/031F0-031FF.el b/etc/nxml/031F0-031FF.el
deleted file mode 100644
index d447c3b0be..0000000000
--- a/etc/nxml/031F0-031FF.el
+++ /dev/null
@@ -1,19 +0,0 @@
-(nxml-define-char-name-set 'katakana-phonetic-extensions
- '(("KATAKANA LETTER SMALL KU" #x31F0)
- ("KATAKANA LETTER SMALL SI" #x31F1)
- ("KATAKANA LETTER SMALL SU" #x31F2)
- ("KATAKANA LETTER SMALL TO" #x31F3)
- ("KATAKANA LETTER SMALL NU" #x31F4)
- ("KATAKANA LETTER SMALL HA" #x31F5)
- ("KATAKANA LETTER SMALL HI" #x31F6)
- ("KATAKANA LETTER SMALL HU" #x31F7)
- ("KATAKANA LETTER SMALL HE" #x31F8)
- ("KATAKANA LETTER SMALL HO" #x31F9)
- ("KATAKANA LETTER SMALL MU" #x31FA)
- ("KATAKANA LETTER SMALL RA" #x31FB)
- ("KATAKANA LETTER SMALL RI" #x31FC)
- ("KATAKANA LETTER SMALL RU" #x31FD)
- ("KATAKANA LETTER SMALL RE" #x31FE)
- ("KATAKANA LETTER SMALL RO" #x31FF)
- ))
-
diff --git a/etc/nxml/03200-032FF.el b/etc/nxml/03200-032FF.el
deleted file mode 100644
index eb05e9d2f3..0000000000
--- a/etc/nxml/03200-032FF.el
+++ /dev/null
@@ -1,235 +0,0 @@
-(nxml-define-char-name-set 'enclosed-cjk-letters-and-months
- '(("PARENTHESIZED HANGUL KIYEOK" #x3200)
- ("PARENTHESIZED HANGUL NIEUN" #x3201)
- ("PARENTHESIZED HANGUL TIKEUT" #x3202)
- ("PARENTHESIZED HANGUL RIEUL" #x3203)
- ("PARENTHESIZED HANGUL MIEUM" #x3204)
- ("PARENTHESIZED HANGUL PIEUP" #x3205)
- ("PARENTHESIZED HANGUL SIOS" #x3206)
- ("PARENTHESIZED HANGUL IEUNG" #x3207)
- ("PARENTHESIZED HANGUL CIEUC" #x3208)
- ("PARENTHESIZED HANGUL CHIEUCH" #x3209)
- ("PARENTHESIZED HANGUL KHIEUKH" #x320A)
- ("PARENTHESIZED HANGUL THIEUTH" #x320B)
- ("PARENTHESIZED HANGUL PHIEUPH" #x320C)
- ("PARENTHESIZED HANGUL HIEUH" #x320D)
- ("PARENTHESIZED HANGUL KIYEOK A" #x320E)
- ("PARENTHESIZED HANGUL NIEUN A" #x320F)
- ("PARENTHESIZED HANGUL TIKEUT A" #x3210)
- ("PARENTHESIZED HANGUL RIEUL A" #x3211)
- ("PARENTHESIZED HANGUL MIEUM A" #x3212)
- ("PARENTHESIZED HANGUL PIEUP A" #x3213)
- ("PARENTHESIZED HANGUL SIOS A" #x3214)
- ("PARENTHESIZED HANGUL IEUNG A" #x3215)
- ("PARENTHESIZED HANGUL CIEUC A" #x3216)
- ("PARENTHESIZED HANGUL CHIEUCH A" #x3217)
- ("PARENTHESIZED HANGUL KHIEUKH A" #x3218)
- ("PARENTHESIZED HANGUL THIEUTH A" #x3219)
- ("PARENTHESIZED HANGUL PHIEUPH A" #x321A)
- ("PARENTHESIZED HANGUL HIEUH A" #x321B)
- ("PARENTHESIZED HANGUL CIEUC U" #x321C)
- ("PARENTHESIZED IDEOGRAPH ONE" #x3220)
- ("PARENTHESIZED IDEOGRAPH TWO" #x3221)
- ("PARENTHESIZED IDEOGRAPH THREE" #x3222)
- ("PARENTHESIZED IDEOGRAPH FOUR" #x3223)
- ("PARENTHESIZED IDEOGRAPH FIVE" #x3224)
- ("PARENTHESIZED IDEOGRAPH SIX" #x3225)
- ("PARENTHESIZED IDEOGRAPH SEVEN" #x3226)
- ("PARENTHESIZED IDEOGRAPH EIGHT" #x3227)
- ("PARENTHESIZED IDEOGRAPH NINE" #x3228)
- ("PARENTHESIZED IDEOGRAPH TEN" #x3229)
- ("PARENTHESIZED IDEOGRAPH MOON" #x322A)
- ("PARENTHESIZED IDEOGRAPH FIRE" #x322B)
- ("PARENTHESIZED IDEOGRAPH WATER" #x322C)
- ("PARENTHESIZED IDEOGRAPH WOOD" #x322D)
- ("PARENTHESIZED IDEOGRAPH METAL" #x322E)
- ("PARENTHESIZED IDEOGRAPH EARTH" #x322F)
- ("PARENTHESIZED IDEOGRAPH SUN" #x3230)
- ("PARENTHESIZED IDEOGRAPH STOCK" #x3231)
- ("PARENTHESIZED IDEOGRAPH HAVE" #x3232)
- ("PARENTHESIZED IDEOGRAPH SOCIETY" #x3233)
- ("PARENTHESIZED IDEOGRAPH NAME" #x3234)
- ("PARENTHESIZED IDEOGRAPH SPECIAL" #x3235)
- ("PARENTHESIZED IDEOGRAPH FINANCIAL" #x3236)
- ("PARENTHESIZED IDEOGRAPH CONGRATULATION" #x3237)
- ("PARENTHESIZED IDEOGRAPH LABOR" #x3238)
- ("PARENTHESIZED IDEOGRAPH REPRESENT" #x3239)
- ("PARENTHESIZED IDEOGRAPH CALL" #x323A)
- ("PARENTHESIZED IDEOGRAPH STUDY" #x323B)
- ("PARENTHESIZED IDEOGRAPH SUPERVISE" #x323C)
- ("PARENTHESIZED IDEOGRAPH ENTERPRISE" #x323D)
- ("PARENTHESIZED IDEOGRAPH RESOURCE" #x323E)
- ("PARENTHESIZED IDEOGRAPH ALLIANCE" #x323F)
- ("PARENTHESIZED IDEOGRAPH FESTIVAL" #x3240)
- ("PARENTHESIZED IDEOGRAPH REST" #x3241)
- ("PARENTHESIZED IDEOGRAPH SELF" #x3242)
- ("PARENTHESIZED IDEOGRAPH REACH" #x3243)
- ("CIRCLED NUMBER TWENTY ONE" #x3251)
- ("CIRCLED NUMBER TWENTY TWO" #x3252)
- ("CIRCLED NUMBER TWENTY THREE" #x3253)
- ("CIRCLED NUMBER TWENTY FOUR" #x3254)
- ("CIRCLED NUMBER TWENTY FIVE" #x3255)
- ("CIRCLED NUMBER TWENTY SIX" #x3256)
- ("CIRCLED NUMBER TWENTY SEVEN" #x3257)
- ("CIRCLED NUMBER TWENTY EIGHT" #x3258)
- ("CIRCLED NUMBER TWENTY NINE" #x3259)
- ("CIRCLED NUMBER THIRTY" #x325A)
- ("CIRCLED NUMBER THIRTY ONE" #x325B)
- ("CIRCLED NUMBER THIRTY TWO" #x325C)
- ("CIRCLED NUMBER THIRTY THREE" #x325D)
- ("CIRCLED NUMBER THIRTY FOUR" #x325E)
- ("CIRCLED NUMBER THIRTY FIVE" #x325F)
- ("CIRCLED HANGUL KIYEOK" #x3260)
- ("CIRCLED HANGUL NIEUN" #x3261)
- ("CIRCLED HANGUL TIKEUT" #x3262)
- ("CIRCLED HANGUL RIEUL" #x3263)
- ("CIRCLED HANGUL MIEUM" #x3264)
- ("CIRCLED HANGUL PIEUP" #x3265)
- ("CIRCLED HANGUL SIOS" #x3266)
- ("CIRCLED HANGUL IEUNG" #x3267)
- ("CIRCLED HANGUL CIEUC" #x3268)
- ("CIRCLED HANGUL CHIEUCH" #x3269)
- ("CIRCLED HANGUL KHIEUKH" #x326A)
- ("CIRCLED HANGUL THIEUTH" #x326B)
- ("CIRCLED HANGUL PHIEUPH" #x326C)
- ("CIRCLED HANGUL HIEUH" #x326D)
- ("CIRCLED HANGUL KIYEOK A" #x326E)
- ("CIRCLED HANGUL NIEUN A" #x326F)
- ("CIRCLED HANGUL TIKEUT A" #x3270)
- ("CIRCLED HANGUL RIEUL A" #x3271)
- ("CIRCLED HANGUL MIEUM A" #x3272)
- ("CIRCLED HANGUL PIEUP A" #x3273)
- ("CIRCLED HANGUL SIOS A" #x3274)
- ("CIRCLED HANGUL IEUNG A" #x3275)
- ("CIRCLED HANGUL CIEUC A" #x3276)
- ("CIRCLED HANGUL CHIEUCH A" #x3277)
- ("CIRCLED HANGUL KHIEUKH A" #x3278)
- ("CIRCLED HANGUL THIEUTH A" #x3279)
- ("CIRCLED HANGUL PHIEUPH A" #x327A)
- ("CIRCLED HANGUL HIEUH A" #x327B)
- ("KOREAN STANDARD SYMBOL" #x327F)
- ("CIRCLED IDEOGRAPH ONE" #x3280)
- ("CIRCLED IDEOGRAPH TWO" #x3281)
- ("CIRCLED IDEOGRAPH THREE" #x3282)
- ("CIRCLED IDEOGRAPH FOUR" #x3283)
- ("CIRCLED IDEOGRAPH FIVE" #x3284)
- ("CIRCLED IDEOGRAPH SIX" #x3285)
- ("CIRCLED IDEOGRAPH SEVEN" #x3286)
- ("CIRCLED IDEOGRAPH EIGHT" #x3287)
- ("CIRCLED IDEOGRAPH NINE" #x3288)
- ("CIRCLED IDEOGRAPH TEN" #x3289)
- ("CIRCLED IDEOGRAPH MOON" #x328A)
- ("CIRCLED IDEOGRAPH FIRE" #x328B)
- ("CIRCLED IDEOGRAPH WATER" #x328C)
- ("CIRCLED IDEOGRAPH WOOD" #x328D)
- ("CIRCLED IDEOGRAPH METAL" #x328E)
- ("CIRCLED IDEOGRAPH EARTH" #x328F)
- ("CIRCLED IDEOGRAPH SUN" #x3290)
- ("CIRCLED IDEOGRAPH STOCK" #x3291)
- ("CIRCLED IDEOGRAPH HAVE" #x3292)
- ("CIRCLED IDEOGRAPH SOCIETY" #x3293)
- ("CIRCLED IDEOGRAPH NAME" #x3294)
- ("CIRCLED IDEOGRAPH SPECIAL" #x3295)
- ("CIRCLED IDEOGRAPH FINANCIAL" #x3296)
- ("CIRCLED IDEOGRAPH CONGRATULATION" #x3297)
- ("CIRCLED IDEOGRAPH LABOR" #x3298)
- ("CIRCLED IDEOGRAPH SECRET" #x3299)
- ("CIRCLED IDEOGRAPH MALE" #x329A)
- ("CIRCLED IDEOGRAPH FEMALE" #x329B)
- ("CIRCLED IDEOGRAPH SUITABLE" #x329C)
- ("CIRCLED IDEOGRAPH EXCELLENT" #x329D)
- ("CIRCLED IDEOGRAPH PRINT" #x329E)
- ("CIRCLED IDEOGRAPH ATTENTION" #x329F)
- ("CIRCLED IDEOGRAPH ITEM" #x32A0)
- ("CIRCLED IDEOGRAPH REST" #x32A1)
- ("CIRCLED IDEOGRAPH COPY" #x32A2)
- ("CIRCLED IDEOGRAPH CORRECT" #x32A3)
- ("CIRCLED IDEOGRAPH HIGH" #x32A4)
- ("CIRCLED IDEOGRAPH CENTRE" #x32A5)
- ("CIRCLED IDEOGRAPH LOW" #x32A6)
- ("CIRCLED IDEOGRAPH LEFT" #x32A7)
- ("CIRCLED IDEOGRAPH RIGHT" #x32A8)
- ("CIRCLED IDEOGRAPH MEDICINE" #x32A9)
- ("CIRCLED IDEOGRAPH RELIGION" #x32AA)
- ("CIRCLED IDEOGRAPH STUDY" #x32AB)
- ("CIRCLED IDEOGRAPH SUPERVISE" #x32AC)
- ("CIRCLED IDEOGRAPH ENTERPRISE" #x32AD)
- ("CIRCLED IDEOGRAPH RESOURCE" #x32AE)
- ("CIRCLED IDEOGRAPH ALLIANCE" #x32AF)
- ("CIRCLED IDEOGRAPH NIGHT" #x32B0)
- ("CIRCLED NUMBER THIRTY SIX" #x32B1)
- ("CIRCLED NUMBER THIRTY SEVEN" #x32B2)
- ("CIRCLED NUMBER THIRTY EIGHT" #x32B3)
- ("CIRCLED NUMBER THIRTY NINE" #x32B4)
- ("CIRCLED NUMBER FORTY" #x32B5)
- ("CIRCLED NUMBER FORTY ONE" #x32B6)
- ("CIRCLED NUMBER FORTY TWO" #x32B7)
- ("CIRCLED NUMBER FORTY THREE" #x32B8)
- ("CIRCLED NUMBER FORTY FOUR" #x32B9)
- ("CIRCLED NUMBER FORTY FIVE" #x32BA)
- ("CIRCLED NUMBER FORTY SIX" #x32BB)
- ("CIRCLED NUMBER FORTY SEVEN" #x32BC)
- ("CIRCLED NUMBER FORTY EIGHT" #x32BD)
- ("CIRCLED NUMBER FORTY NINE" #x32BE)
- ("CIRCLED NUMBER FIFTY" #x32BF)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY" #x32C0)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY" #x32C1)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH" #x32C2)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL" #x32C3)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY" #x32C4)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE" #x32C5)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY" #x32C6)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST" #x32C7)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER" #x32C8)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER" #x32C9)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER" #x32CA)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER" #x32CB)
- ("CIRCLED KATAKANA A" #x32D0)
- ("CIRCLED KATAKANA I" #x32D1)
- ("CIRCLED KATAKANA U" #x32D2)
- ("CIRCLED KATAKANA E" #x32D3)
- ("CIRCLED KATAKANA O" #x32D4)
- ("CIRCLED KATAKANA KA" #x32D5)
- ("CIRCLED KATAKANA KI" #x32D6)
- ("CIRCLED KATAKANA KU" #x32D7)
- ("CIRCLED KATAKANA KE" #x32D8)
- ("CIRCLED KATAKANA KO" #x32D9)
- ("CIRCLED KATAKANA SA" #x32DA)
- ("CIRCLED KATAKANA SI" #x32DB)
- ("CIRCLED KATAKANA SU" #x32DC)
- ("CIRCLED KATAKANA SE" #x32DD)
- ("CIRCLED KATAKANA SO" #x32DE)
- ("CIRCLED KATAKANA TA" #x32DF)
- ("CIRCLED KATAKANA TI" #x32E0)
- ("CIRCLED KATAKANA TU" #x32E1)
- ("CIRCLED KATAKANA TE" #x32E2)
- ("CIRCLED KATAKANA TO" #x32E3)
- ("CIRCLED KATAKANA NA" #x32E4)
- ("CIRCLED KATAKANA NI" #x32E5)
- ("CIRCLED KATAKANA NU" #x32E6)
- ("CIRCLED KATAKANA NE" #x32E7)
- ("CIRCLED KATAKANA NO" #x32E8)
- ("CIRCLED KATAKANA HA" #x32E9)
- ("CIRCLED KATAKANA HI" #x32EA)
- ("CIRCLED KATAKANA HU" #x32EB)
- ("CIRCLED KATAKANA HE" #x32EC)
- ("CIRCLED KATAKANA HO" #x32ED)
- ("CIRCLED KATAKANA MA" #x32EE)
- ("CIRCLED KATAKANA MI" #x32EF)
- ("CIRCLED KATAKANA MU" #x32F0)
- ("CIRCLED KATAKANA ME" #x32F1)
- ("CIRCLED KATAKANA MO" #x32F2)
- ("CIRCLED KATAKANA YA" #x32F3)
- ("CIRCLED KATAKANA YU" #x32F4)
- ("CIRCLED KATAKANA YO" #x32F5)
- ("CIRCLED KATAKANA RA" #x32F6)
- ("CIRCLED KATAKANA RI" #x32F7)
- ("CIRCLED KATAKANA RU" #x32F8)
- ("CIRCLED KATAKANA RE" #x32F9)
- ("CIRCLED KATAKANA RO" #x32FA)
- ("CIRCLED KATAKANA WA" #x32FB)
- ("CIRCLED KATAKANA WI" #x32FC)
- ("CIRCLED KATAKANA WE" #x32FD)
- ("CIRCLED KATAKANA WO" #x32FE)
- ))
-
diff --git a/etc/nxml/03300-033FF.el b/etc/nxml/03300-033FF.el
deleted file mode 100644
index 7d5820e08a..0000000000
--- a/etc/nxml/03300-033FF.el
+++ /dev/null
@@ -1,252 +0,0 @@
-(nxml-define-char-name-set 'cjk-compatibility
- '(("SQUARE APAATO" #x3300)
- ("SQUARE ARUHUA" #x3301)
- ("SQUARE ANPEA" #x3302)
- ("SQUARE AARU" #x3303)
- ("SQUARE ININGU" #x3304)
- ("SQUARE INTI" #x3305)
- ("SQUARE UON" #x3306)
- ("SQUARE ESUKUUDO" #x3307)
- ("SQUARE EEKAA" #x3308)
- ("SQUARE ONSU" #x3309)
- ("SQUARE OOMU" #x330A)
- ("SQUARE KAIRI" #x330B)
- ("SQUARE KARATTO" #x330C)
- ("SQUARE KARORII" #x330D)
- ("SQUARE GARON" #x330E)
- ("SQUARE GANMA" #x330F)
- ("SQUARE GIGA" #x3310)
- ("SQUARE GINII" #x3311)
- ("SQUARE KYURII" #x3312)
- ("SQUARE GIRUDAA" #x3313)
- ("SQUARE KIRO" #x3314)
- ("SQUARE KIROGURAMU" #x3315)
- ("SQUARE KIROMEETORU" #x3316)
- ("SQUARE KIROWATTO" #x3317)
- ("SQUARE GURAMU" #x3318)
- ("SQUARE GURAMUTON" #x3319)
- ("SQUARE KURUZEIRO" #x331A)
- ("SQUARE KUROONE" #x331B)
- ("SQUARE KEESU" #x331C)
- ("SQUARE KORUNA" #x331D)
- ("SQUARE KOOPO" #x331E)
- ("SQUARE SAIKURU" #x331F)
- ("SQUARE SANTIIMU" #x3320)
- ("SQUARE SIRINGU" #x3321)
- ("SQUARE SENTI" #x3322)
- ("SQUARE SENTO" #x3323)
- ("SQUARE DAASU" #x3324)
- ("SQUARE DESI" #x3325)
- ("SQUARE DORU" #x3326)
- ("SQUARE TON" #x3327)
- ("SQUARE NANO" #x3328)
- ("SQUARE NOTTO" #x3329)
- ("SQUARE HAITU" #x332A)
- ("SQUARE PAASENTO" #x332B)
- ("SQUARE PAATU" #x332C)
- ("SQUARE BAARERU" #x332D)
- ("SQUARE PIASUTORU" #x332E)
- ("SQUARE PIKURU" #x332F)
- ("SQUARE PIKO" #x3330)
- ("SQUARE BIRU" #x3331)
- ("SQUARE HUARADDO" #x3332)
- ("SQUARE HUIITO" #x3333)
- ("SQUARE BUSSYERU" #x3334)
- ("SQUARE HURAN" #x3335)
- ("SQUARE HEKUTAARU" #x3336)
- ("SQUARE PESO" #x3337)
- ("SQUARE PENIHI" #x3338)
- ("SQUARE HERUTU" #x3339)
- ("SQUARE PENSU" #x333A)
- ("SQUARE PEEZI" #x333B)
- ("SQUARE BEETA" #x333C)
- ("SQUARE POINTO" #x333D)
- ("SQUARE BORUTO" #x333E)
- ("SQUARE HON" #x333F)
- ("SQUARE PONDO" #x3340)
- ("SQUARE HOORU" #x3341)
- ("SQUARE HOON" #x3342)
- ("SQUARE MAIKURO" #x3343)
- ("SQUARE MAIRU" #x3344)
- ("SQUARE MAHHA" #x3345)
- ("SQUARE MARUKU" #x3346)
- ("SQUARE MANSYON" #x3347)
- ("SQUARE MIKURON" #x3348)
- ("SQUARE MIRI" #x3349)
- ("SQUARE MIRIBAARU" #x334A)
- ("SQUARE MEGA" #x334B)
- ("SQUARE MEGATON" #x334C)
- ("SQUARE MEETORU" #x334D)
- ("SQUARE YAADO" #x334E)
- ("SQUARE YAARU" #x334F)
- ("SQUARE YUAN" #x3350)
- ("SQUARE RITTORU" #x3351)
- ("SQUARE RIRA" #x3352)
- ("SQUARE RUPII" #x3353)
- ("SQUARE RUUBURU" #x3354)
- ("SQUARE REMU" #x3355)
- ("SQUARE RENTOGEN" #x3356)
- ("SQUARE WATTO" #x3357)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO" #x3358)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE" #x3359)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO" #x335A)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE" #x335B)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR" #x335C)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE" #x335D)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX" #x335E)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN" #x335F)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT" #x3360)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE" #x3361)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN" #x3362)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN" #x3363)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE" #x3364)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN" #x3365)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN" #x3366)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN" #x3367)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN" #x3368)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN" #x3369)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN" #x336A)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN" #x336B)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY" #x336C)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE" #x336D)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO" #x336E)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE" #x336F)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR" #x3370)
- ("SQUARE HPA" #x3371)
- ("SQUARE DA" #x3372)
- ("SQUARE AU" #x3373)
- ("SQUARE BAR" #x3374)
- ("SQUARE OV" #x3375)
- ("SQUARE PC" #x3376)
- ("SQUARE ERA NAME HEISEI" #x337B)
- ("SQUARE ERA NAME SYOUWA" #x337C)
- ("SQUARE ERA NAME TAISYOU" #x337D)
- ("SQUARE ERA NAME MEIZI" #x337E)
- ("SQUARE CORPORATION" #x337F)
- ("SQUARE PA AMPS" #x3380)
- ("SQUARE NA" #x3381)
- ("SQUARE MU A" #x3382)
- ("SQUARE MA" #x3383)
- ("SQUARE KA" #x3384)
- ("SQUARE KB" #x3385)
- ("SQUARE MB" #x3386)
- ("SQUARE GB" #x3387)
- ("SQUARE CAL" #x3388)
- ("SQUARE KCAL" #x3389)
- ("SQUARE PF" #x338A)
- ("SQUARE NF" #x338B)
- ("SQUARE MU F" #x338C)
- ("SQUARE MU G" #x338D)
- ("SQUARE MG" #x338E)
- ("SQUARE KG" #x338F)
- ("SQUARE HZ" #x3390)
- ("SQUARE KHZ" #x3391)
- ("SQUARE MHZ" #x3392)
- ("SQUARE GHZ" #x3393)
- ("SQUARE THZ" #x3394)
- ("SQUARE MU L" #x3395)
- ("SQUARE ML" #x3396)
- ("SQUARE DL" #x3397)
- ("SQUARE KL" #x3398)
- ("SQUARE FM" #x3399)
- ("SQUARE NM" #x339A)
- ("SQUARE MU M" #x339B)
- ("SQUARE MM" #x339C)
- ("SQUARE CM" #x339D)
- ("SQUARE KM" #x339E)
- ("SQUARE MM SQUARED" #x339F)
- ("SQUARE CM SQUARED" #x33A0)
- ("SQUARE M SQUARED" #x33A1)
- ("SQUARE KM SQUARED" #x33A2)
- ("SQUARE MM CUBED" #x33A3)
- ("SQUARE CM CUBED" #x33A4)
- ("SQUARE M CUBED" #x33A5)
- ("SQUARE KM CUBED" #x33A6)
- ("SQUARE M OVER S" #x33A7)
- ("SQUARE M OVER S SQUARED" #x33A8)
- ("SQUARE PA" #x33A9)
- ("SQUARE KPA" #x33AA)
- ("SQUARE MPA" #x33AB)
- ("SQUARE GPA" #x33AC)
- ("SQUARE RAD" #x33AD)
- ("SQUARE RAD OVER S" #x33AE)
- ("SQUARE RAD OVER S SQUARED" #x33AF)
- ("SQUARE PS" #x33B0)
- ("SQUARE NS" #x33B1)
- ("SQUARE MU S" #x33B2)
- ("SQUARE MS" #x33B3)
- ("SQUARE PV" #x33B4)
- ("SQUARE NV" #x33B5)
- ("SQUARE MU V" #x33B6)
- ("SQUARE MV" #x33B7)
- ("SQUARE KV" #x33B8)
- ("SQUARE MV MEGA" #x33B9)
- ("SQUARE PW" #x33BA)
- ("SQUARE NW" #x33BB)
- ("SQUARE MU W" #x33BC)
- ("SQUARE MW" #x33BD)
- ("SQUARE KW" #x33BE)
- ("SQUARE MW MEGA" #x33BF)
- ("SQUARE K OHM" #x33C0)
- ("SQUARE M OHM" #x33C1)
- ("SQUARE AM" #x33C2)
- ("SQUARE BQ" #x33C3)
- ("SQUARE CC" #x33C4)
- ("SQUARE CD" #x33C5)
- ("SQUARE C OVER KG" #x33C6)
- ("SQUARE CO" #x33C7)
- ("SQUARE DB" #x33C8)
- ("SQUARE GY" #x33C9)
- ("SQUARE HA" #x33CA)
- ("SQUARE HP" #x33CB)
- ("SQUARE IN" #x33CC)
- ("SQUARE KK" #x33CD)
- ("SQUARE KM CAPITAL" #x33CE)
- ("SQUARE KT" #x33CF)
- ("SQUARE LM" #x33D0)
- ("SQUARE LN" #x33D1)
- ("SQUARE LOG" #x33D2)
- ("SQUARE LX" #x33D3)
- ("SQUARE MB SMALL" #x33D4)
- ("SQUARE MIL" #x33D5)
- ("SQUARE MOL" #x33D6)
- ("SQUARE PH" #x33D7)
- ("SQUARE PM" #x33D8)
- ("SQUARE PPM" #x33D9)
- ("SQUARE PR" #x33DA)
- ("SQUARE SR" #x33DB)
- ("SQUARE SV" #x33DC)
- ("SQUARE WB" #x33DD)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE" #x33E0)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO" #x33E1)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE" #x33E2)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR" #x33E3)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE" #x33E4)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX" #x33E5)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN" #x33E6)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT" #x33E7)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE" #x33E8)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN" #x33E9)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN" #x33EA)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE" #x33EB)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN" #x33EC)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN" #x33ED)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN" #x33EE)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN" #x33EF)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN" #x33F0)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN" #x33F1)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN" #x33F2)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY" #x33F3)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE" #x33F4)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO" #x33F5)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE" #x33F6)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR" #x33F7)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE" #x33F8)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX" #x33F9)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN" #x33FA)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT" #x33FB)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE" #x33FC)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY" #x33FD)
- ("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE" #x33FE)
- ))
-
diff --git a/etc/nxml/03400-04DBF.el b/etc/nxml/03400-04DBF.el
deleted file mode 100644
index 6bae106687..0000000000
--- a/etc/nxml/03400-04DBF.el
+++ /dev/null
@@ -1,3 +0,0 @@
-(nxml-define-char-name-set 'cjk-unified-ideographs-extension-a
- '())
-
diff --git a/etc/nxml/0A000-0A48F.el b/etc/nxml/0A000-0A48F.el
deleted file mode 100644
index e797cf13b0..0000000000
--- a/etc/nxml/0A000-0A48F.el
+++ /dev/null
@@ -1,1168 +0,0 @@
-(nxml-define-char-name-set 'yi-syllables
- '(("YI SYLLABLE IT" #xA000)
- ("YI SYLLABLE IX" #xA001)
- ("YI SYLLABLE I" #xA002)
- ("YI SYLLABLE IP" #xA003)
- ("YI SYLLABLE IET" #xA004)
- ("YI SYLLABLE IEX" #xA005)
- ("YI SYLLABLE IE" #xA006)
- ("YI SYLLABLE IEP" #xA007)
- ("YI SYLLABLE AT" #xA008)
- ("YI SYLLABLE AX" #xA009)
- ("YI SYLLABLE A" #xA00A)
- ("YI SYLLABLE AP" #xA00B)
- ("YI SYLLABLE UOX" #xA00C)
- ("YI SYLLABLE UO" #xA00D)
- ("YI SYLLABLE UOP" #xA00E)
- ("YI SYLLABLE OT" #xA00F)
- ("YI SYLLABLE OX" #xA010)
- ("YI SYLLABLE O" #xA011)
- ("YI SYLLABLE OP" #xA012)
- ("YI SYLLABLE EX" #xA013)
- ("YI SYLLABLE E" #xA014)
- ("YI SYLLABLE WU" #xA015)
- ("YI SYLLABLE BIT" #xA016)
- ("YI SYLLABLE BIX" #xA017)
- ("YI SYLLABLE BI" #xA018)
- ("YI SYLLABLE BIP" #xA019)
- ("YI SYLLABLE BIET" #xA01A)
- ("YI SYLLABLE BIEX" #xA01B)
- ("YI SYLLABLE BIE" #xA01C)
- ("YI SYLLABLE BIEP" #xA01D)
- ("YI SYLLABLE BAT" #xA01E)
- ("YI SYLLABLE BAX" #xA01F)
- ("YI SYLLABLE BA" #xA020)
- ("YI SYLLABLE BAP" #xA021)
- ("YI SYLLABLE BUOX" #xA022)
- ("YI SYLLABLE BUO" #xA023)
- ("YI SYLLABLE BUOP" #xA024)
- ("YI SYLLABLE BOT" #xA025)
- ("YI SYLLABLE BOX" #xA026)
- ("YI SYLLABLE BO" #xA027)
- ("YI SYLLABLE BOP" #xA028)
- ("YI SYLLABLE BEX" #xA029)
- ("YI SYLLABLE BE" #xA02A)
- ("YI SYLLABLE BEP" #xA02B)
- ("YI SYLLABLE BUT" #xA02C)
- ("YI SYLLABLE BUX" #xA02D)
- ("YI SYLLABLE BU" #xA02E)
- ("YI SYLLABLE BUP" #xA02F)
- ("YI SYLLABLE BURX" #xA030)
- ("YI SYLLABLE BUR" #xA031)
- ("YI SYLLABLE BYT" #xA032)
- ("YI SYLLABLE BYX" #xA033)
- ("YI SYLLABLE BY" #xA034)
- ("YI SYLLABLE BYP" #xA035)
- ("YI SYLLABLE BYRX" #xA036)
- ("YI SYLLABLE BYR" #xA037)
- ("YI SYLLABLE PIT" #xA038)
- ("YI SYLLABLE PIX" #xA039)
- ("YI SYLLABLE PI" #xA03A)
- ("YI SYLLABLE PIP" #xA03B)
- ("YI SYLLABLE PIEX" #xA03C)
- ("YI SYLLABLE PIE" #xA03D)
- ("YI SYLLABLE PIEP" #xA03E)
- ("YI SYLLABLE PAT" #xA03F)
- ("YI SYLLABLE PAX" #xA040)
- ("YI SYLLABLE PA" #xA041)
- ("YI SYLLABLE PAP" #xA042)
- ("YI SYLLABLE PUOX" #xA043)
- ("YI SYLLABLE PUO" #xA044)
- ("YI SYLLABLE PUOP" #xA045)
- ("YI SYLLABLE POT" #xA046)
- ("YI SYLLABLE POX" #xA047)
- ("YI SYLLABLE PO" #xA048)
- ("YI SYLLABLE POP" #xA049)
- ("YI SYLLABLE PUT" #xA04A)
- ("YI SYLLABLE PUX" #xA04B)
- ("YI SYLLABLE PU" #xA04C)
- ("YI SYLLABLE PUP" #xA04D)
- ("YI SYLLABLE PURX" #xA04E)
- ("YI SYLLABLE PUR" #xA04F)
- ("YI SYLLABLE PYT" #xA050)
- ("YI SYLLABLE PYX" #xA051)
- ("YI SYLLABLE PY" #xA052)
- ("YI SYLLABLE PYP" #xA053)
- ("YI SYLLABLE PYRX" #xA054)
- ("YI SYLLABLE PYR" #xA055)
- ("YI SYLLABLE BBIT" #xA056)
- ("YI SYLLABLE BBIX" #xA057)
- ("YI SYLLABLE BBI" #xA058)
- ("YI SYLLABLE BBIP" #xA059)
- ("YI SYLLABLE BBIET" #xA05A)
- ("YI SYLLABLE BBIEX" #xA05B)
- ("YI SYLLABLE BBIE" #xA05C)
- ("YI SYLLABLE BBIEP" #xA05D)
- ("YI SYLLABLE BBAT" #xA05E)
- ("YI SYLLABLE BBAX" #xA05F)
- ("YI SYLLABLE BBA" #xA060)
- ("YI SYLLABLE BBAP" #xA061)
- ("YI SYLLABLE BBUOX" #xA062)
- ("YI SYLLABLE BBUO" #xA063)
- ("YI SYLLABLE BBUOP" #xA064)
- ("YI SYLLABLE BBOT" #xA065)
- ("YI SYLLABLE BBOX" #xA066)
- ("YI SYLLABLE BBO" #xA067)
- ("YI SYLLABLE BBOP" #xA068)
- ("YI SYLLABLE BBEX" #xA069)
- ("YI SYLLABLE BBE" #xA06A)
- ("YI SYLLABLE BBEP" #xA06B)
- ("YI SYLLABLE BBUT" #xA06C)
- ("YI SYLLABLE BBUX" #xA06D)
- ("YI SYLLABLE BBU" #xA06E)
- ("YI SYLLABLE BBUP" #xA06F)
- ("YI SYLLABLE BBURX" #xA070)
- ("YI SYLLABLE BBUR" #xA071)
- ("YI SYLLABLE BBYT" #xA072)
- ("YI SYLLABLE BBYX" #xA073)
- ("YI SYLLABLE BBY" #xA074)
- ("YI SYLLABLE BBYP" #xA075)
- ("YI SYLLABLE NBIT" #xA076)
- ("YI SYLLABLE NBIX" #xA077)
- ("YI SYLLABLE NBI" #xA078)
- ("YI SYLLABLE NBIP" #xA079)
- ("YI SYLLABLE NBIEX" #xA07A)
- ("YI SYLLABLE NBIE" #xA07B)
- ("YI SYLLABLE NBIEP" #xA07C)
- ("YI SYLLABLE NBAT" #xA07D)
- ("YI SYLLABLE NBAX" #xA07E)
- ("YI SYLLABLE NBA" #xA07F)
- ("YI SYLLABLE NBAP" #xA080)
- ("YI SYLLABLE NBOT" #xA081)
- ("YI SYLLABLE NBOX" #xA082)
- ("YI SYLLABLE NBO" #xA083)
- ("YI SYLLABLE NBOP" #xA084)
- ("YI SYLLABLE NBUT" #xA085)
- ("YI SYLLABLE NBUX" #xA086)
- ("YI SYLLABLE NBU" #xA087)
- ("YI SYLLABLE NBUP" #xA088)
- ("YI SYLLABLE NBURX" #xA089)
- ("YI SYLLABLE NBUR" #xA08A)
- ("YI SYLLABLE NBYT" #xA08B)
- ("YI SYLLABLE NBYX" #xA08C)
- ("YI SYLLABLE NBY" #xA08D)
- ("YI SYLLABLE NBYP" #xA08E)
- ("YI SYLLABLE NBYRX" #xA08F)
- ("YI SYLLABLE NBYR" #xA090)
- ("YI SYLLABLE HMIT" #xA091)
- ("YI SYLLABLE HMIX" #xA092)
- ("YI SYLLABLE HMI" #xA093)
- ("YI SYLLABLE HMIP" #xA094)
- ("YI SYLLABLE HMIEX" #xA095)
- ("YI SYLLABLE HMIE" #xA096)
- ("YI SYLLABLE HMIEP" #xA097)
- ("YI SYLLABLE HMAT" #xA098)
- ("YI SYLLABLE HMAX" #xA099)
- ("YI SYLLABLE HMA" #xA09A)
- ("YI SYLLABLE HMAP" #xA09B)
- ("YI SYLLABLE HMUOX" #xA09C)
- ("YI SYLLABLE HMUO" #xA09D)
- ("YI SYLLABLE HMUOP" #xA09E)
- ("YI SYLLABLE HMOT" #xA09F)
- ("YI SYLLABLE HMOX" #xA0A0)
- ("YI SYLLABLE HMO" #xA0A1)
- ("YI SYLLABLE HMOP" #xA0A2)
- ("YI SYLLABLE HMUT" #xA0A3)
- ("YI SYLLABLE HMUX" #xA0A4)
- ("YI SYLLABLE HMU" #xA0A5)
- ("YI SYLLABLE HMUP" #xA0A6)
- ("YI SYLLABLE HMURX" #xA0A7)
- ("YI SYLLABLE HMUR" #xA0A8)
- ("YI SYLLABLE HMYX" #xA0A9)
- ("YI SYLLABLE HMY" #xA0AA)
- ("YI SYLLABLE HMYP" #xA0AB)
- ("YI SYLLABLE HMYRX" #xA0AC)
- ("YI SYLLABLE HMYR" #xA0AD)
- ("YI SYLLABLE MIT" #xA0AE)
- ("YI SYLLABLE MIX" #xA0AF)
- ("YI SYLLABLE MI" #xA0B0)
- ("YI SYLLABLE MIP" #xA0B1)
- ("YI SYLLABLE MIEX" #xA0B2)
- ("YI SYLLABLE MIE" #xA0B3)
- ("YI SYLLABLE MIEP" #xA0B4)
- ("YI SYLLABLE MAT" #xA0B5)
- ("YI SYLLABLE MAX" #xA0B6)
- ("YI SYLLABLE MA" #xA0B7)
- ("YI SYLLABLE MAP" #xA0B8)
- ("YI SYLLABLE MUOT" #xA0B9)
- ("YI SYLLABLE MUOX" #xA0BA)
- ("YI SYLLABLE MUO" #xA0BB)
- ("YI SYLLABLE MUOP" #xA0BC)
- ("YI SYLLABLE MOT" #xA0BD)
- ("YI SYLLABLE MOX" #xA0BE)
- ("YI SYLLABLE MO" #xA0BF)
- ("YI SYLLABLE MOP" #xA0C0)
- ("YI SYLLABLE MEX" #xA0C1)
- ("YI SYLLABLE ME" #xA0C2)
- ("YI SYLLABLE MUT" #xA0C3)
- ("YI SYLLABLE MUX" #xA0C4)
- ("YI SYLLABLE MU" #xA0C5)
- ("YI SYLLABLE MUP" #xA0C6)
- ("YI SYLLABLE MURX" #xA0C7)
- ("YI SYLLABLE MUR" #xA0C8)
- ("YI SYLLABLE MYT" #xA0C9)
- ("YI SYLLABLE MYX" #xA0CA)
- ("YI SYLLABLE MY" #xA0CB)
- ("YI SYLLABLE MYP" #xA0CC)
- ("YI SYLLABLE FIT" #xA0CD)
- ("YI SYLLABLE FIX" #xA0CE)
- ("YI SYLLABLE FI" #xA0CF)
- ("YI SYLLABLE FIP" #xA0D0)
- ("YI SYLLABLE FAT" #xA0D1)
- ("YI SYLLABLE FAX" #xA0D2)
- ("YI SYLLABLE FA" #xA0D3)
- ("YI SYLLABLE FAP" #xA0D4)
- ("YI SYLLABLE FOX" #xA0D5)
- ("YI SYLLABLE FO" #xA0D6)
- ("YI SYLLABLE FOP" #xA0D7)
- ("YI SYLLABLE FUT" #xA0D8)
- ("YI SYLLABLE FUX" #xA0D9)
- ("YI SYLLABLE FU" #xA0DA)
- ("YI SYLLABLE FUP" #xA0DB)
- ("YI SYLLABLE FURX" #xA0DC)
- ("YI SYLLABLE FUR" #xA0DD)
- ("YI SYLLABLE FYT" #xA0DE)
- ("YI SYLLABLE FYX" #xA0DF)
- ("YI SYLLABLE FY" #xA0E0)
- ("YI SYLLABLE FYP" #xA0E1)
- ("YI SYLLABLE VIT" #xA0E2)
- ("YI SYLLABLE VIX" #xA0E3)
- ("YI SYLLABLE VI" #xA0E4)
- ("YI SYLLABLE VIP" #xA0E5)
- ("YI SYLLABLE VIET" #xA0E6)
- ("YI SYLLABLE VIEX" #xA0E7)
- ("YI SYLLABLE VIE" #xA0E8)
- ("YI SYLLABLE VIEP" #xA0E9)
- ("YI SYLLABLE VAT" #xA0EA)
- ("YI SYLLABLE VAX" #xA0EB)
- ("YI SYLLABLE VA" #xA0EC)
- ("YI SYLLABLE VAP" #xA0ED)
- ("YI SYLLABLE VOT" #xA0EE)
- ("YI SYLLABLE VOX" #xA0EF)
- ("YI SYLLABLE VO" #xA0F0)
- ("YI SYLLABLE VOP" #xA0F1)
- ("YI SYLLABLE VEX" #xA0F2)
- ("YI SYLLABLE VEP" #xA0F3)
- ("YI SYLLABLE VUT" #xA0F4)
- ("YI SYLLABLE VUX" #xA0F5)
- ("YI SYLLABLE VU" #xA0F6)
- ("YI SYLLABLE VUP" #xA0F7)
- ("YI SYLLABLE VURX" #xA0F8)
- ("YI SYLLABLE VUR" #xA0F9)
- ("YI SYLLABLE VYT" #xA0FA)
- ("YI SYLLABLE VYX" #xA0FB)
- ("YI SYLLABLE VY" #xA0FC)
- ("YI SYLLABLE VYP" #xA0FD)
- ("YI SYLLABLE VYRX" #xA0FE)
- ("YI SYLLABLE VYR" #xA0FF)
- ("YI SYLLABLE DIT" #xA100)
- ("YI SYLLABLE DIX" #xA101)
- ("YI SYLLABLE DI" #xA102)
- ("YI SYLLABLE DIP" #xA103)
- ("YI SYLLABLE DIEX" #xA104)
- ("YI SYLLABLE DIE" #xA105)
- ("YI SYLLABLE DIEP" #xA106)
- ("YI SYLLABLE DAT" #xA107)
- ("YI SYLLABLE DAX" #xA108)
- ("YI SYLLABLE DA" #xA109)
- ("YI SYLLABLE DAP" #xA10A)
- ("YI SYLLABLE DUOX" #xA10B)
- ("YI SYLLABLE DUO" #xA10C)
- ("YI SYLLABLE DOT" #xA10D)
- ("YI SYLLABLE DOX" #xA10E)
- ("YI SYLLABLE DO" #xA10F)
- ("YI SYLLABLE DOP" #xA110)
- ("YI SYLLABLE DEX" #xA111)
- ("YI SYLLABLE DE" #xA112)
- ("YI SYLLABLE DEP" #xA113)
- ("YI SYLLABLE DUT" #xA114)
- ("YI SYLLABLE DUX" #xA115)
- ("YI SYLLABLE DU" #xA116)
- ("YI SYLLABLE DUP" #xA117)
- ("YI SYLLABLE DURX" #xA118)
- ("YI SYLLABLE DUR" #xA119)
- ("YI SYLLABLE TIT" #xA11A)
- ("YI SYLLABLE TIX" #xA11B)
- ("YI SYLLABLE TI" #xA11C)
- ("YI SYLLABLE TIP" #xA11D)
- ("YI SYLLABLE TIEX" #xA11E)
- ("YI SYLLABLE TIE" #xA11F)
- ("YI SYLLABLE TIEP" #xA120)
- ("YI SYLLABLE TAT" #xA121)
- ("YI SYLLABLE TAX" #xA122)
- ("YI SYLLABLE TA" #xA123)
- ("YI SYLLABLE TAP" #xA124)
- ("YI SYLLABLE TUOT" #xA125)
- ("YI SYLLABLE TUOX" #xA126)
- ("YI SYLLABLE TUO" #xA127)
- ("YI SYLLABLE TUOP" #xA128)
- ("YI SYLLABLE TOT" #xA129)
- ("YI SYLLABLE TOX" #xA12A)
- ("YI SYLLABLE TO" #xA12B)
- ("YI SYLLABLE TOP" #xA12C)
- ("YI SYLLABLE TEX" #xA12D)
- ("YI SYLLABLE TE" #xA12E)
- ("YI SYLLABLE TEP" #xA12F)
- ("YI SYLLABLE TUT" #xA130)
- ("YI SYLLABLE TUX" #xA131)
- ("YI SYLLABLE TU" #xA132)
- ("YI SYLLABLE TUP" #xA133)
- ("YI SYLLABLE TURX" #xA134)
- ("YI SYLLABLE TUR" #xA135)
- ("YI SYLLABLE DDIT" #xA136)
- ("YI SYLLABLE DDIX" #xA137)
- ("YI SYLLABLE DDI" #xA138)
- ("YI SYLLABLE DDIP" #xA139)
- ("YI SYLLABLE DDIEX" #xA13A)
- ("YI SYLLABLE DDIE" #xA13B)
- ("YI SYLLABLE DDIEP" #xA13C)
- ("YI SYLLABLE DDAT" #xA13D)
- ("YI SYLLABLE DDAX" #xA13E)
- ("YI SYLLABLE DDA" #xA13F)
- ("YI SYLLABLE DDAP" #xA140)
- ("YI SYLLABLE DDUOX" #xA141)
- ("YI SYLLABLE DDUO" #xA142)
- ("YI SYLLABLE DDUOP" #xA143)
- ("YI SYLLABLE DDOT" #xA144)
- ("YI SYLLABLE DDOX" #xA145)
- ("YI SYLLABLE DDO" #xA146)
- ("YI SYLLABLE DDOP" #xA147)
- ("YI SYLLABLE DDEX" #xA148)
- ("YI SYLLABLE DDE" #xA149)
- ("YI SYLLABLE DDEP" #xA14A)
- ("YI SYLLABLE DDUT" #xA14B)
- ("YI SYLLABLE DDUX" #xA14C)
- ("YI SYLLABLE DDU" #xA14D)
- ("YI SYLLABLE DDUP" #xA14E)
- ("YI SYLLABLE DDURX" #xA14F)
- ("YI SYLLABLE DDUR" #xA150)
- ("YI SYLLABLE NDIT" #xA151)
- ("YI SYLLABLE NDIX" #xA152)
- ("YI SYLLABLE NDI" #xA153)
- ("YI SYLLABLE NDIP" #xA154)
- ("YI SYLLABLE NDIEX" #xA155)
- ("YI SYLLABLE NDIE" #xA156)
- ("YI SYLLABLE NDAT" #xA157)
- ("YI SYLLABLE NDAX" #xA158)
- ("YI SYLLABLE NDA" #xA159)
- ("YI SYLLABLE NDAP" #xA15A)
- ("YI SYLLABLE NDOT" #xA15B)
- ("YI SYLLABLE NDOX" #xA15C)
- ("YI SYLLABLE NDO" #xA15D)
- ("YI SYLLABLE NDOP" #xA15E)
- ("YI SYLLABLE NDEX" #xA15F)
- ("YI SYLLABLE NDE" #xA160)
- ("YI SYLLABLE NDEP" #xA161)
- ("YI SYLLABLE NDUT" #xA162)
- ("YI SYLLABLE NDUX" #xA163)
- ("YI SYLLABLE NDU" #xA164)
- ("YI SYLLABLE NDUP" #xA165)
- ("YI SYLLABLE NDURX" #xA166)
- ("YI SYLLABLE NDUR" #xA167)
- ("YI SYLLABLE HNIT" #xA168)
- ("YI SYLLABLE HNIX" #xA169)
- ("YI SYLLABLE HNI" #xA16A)
- ("YI SYLLABLE HNIP" #xA16B)
- ("YI SYLLABLE HNIET" #xA16C)
- ("YI SYLLABLE HNIEX" #xA16D)
- ("YI SYLLABLE HNIE" #xA16E)
- ("YI SYLLABLE HNIEP" #xA16F)
- ("YI SYLLABLE HNAT" #xA170)
- ("YI SYLLABLE HNAX" #xA171)
- ("YI SYLLABLE HNA" #xA172)
- ("YI SYLLABLE HNAP" #xA173)
- ("YI SYLLABLE HNUOX" #xA174)
- ("YI SYLLABLE HNUO" #xA175)
- ("YI SYLLABLE HNOT" #xA176)
- ("YI SYLLABLE HNOX" #xA177)
- ("YI SYLLABLE HNOP" #xA178)
- ("YI SYLLABLE HNEX" #xA179)
- ("YI SYLLABLE HNE" #xA17A)
- ("YI SYLLABLE HNEP" #xA17B)
- ("YI SYLLABLE HNUT" #xA17C)
- ("YI SYLLABLE NIT" #xA17D)
- ("YI SYLLABLE NIX" #xA17E)
- ("YI SYLLABLE NI" #xA17F)
- ("YI SYLLABLE NIP" #xA180)
- ("YI SYLLABLE NIEX" #xA181)
- ("YI SYLLABLE NIE" #xA182)
- ("YI SYLLABLE NIEP" #xA183)
- ("YI SYLLABLE NAX" #xA184)
- ("YI SYLLABLE NA" #xA185)
- ("YI SYLLABLE NAP" #xA186)
- ("YI SYLLABLE NUOX" #xA187)
- ("YI SYLLABLE NUO" #xA188)
- ("YI SYLLABLE NUOP" #xA189)
- ("YI SYLLABLE NOT" #xA18A)
- ("YI SYLLABLE NOX" #xA18B)
- ("YI SYLLABLE NO" #xA18C)
- ("YI SYLLABLE NOP" #xA18D)
- ("YI SYLLABLE NEX" #xA18E)
- ("YI SYLLABLE NE" #xA18F)
- ("YI SYLLABLE NEP" #xA190)
- ("YI SYLLABLE NUT" #xA191)
- ("YI SYLLABLE NUX" #xA192)
- ("YI SYLLABLE NU" #xA193)
- ("YI SYLLABLE NUP" #xA194)
- ("YI SYLLABLE NURX" #xA195)
- ("YI SYLLABLE NUR" #xA196)
- ("YI SYLLABLE HLIT" #xA197)
- ("YI SYLLABLE HLIX" #xA198)
- ("YI SYLLABLE HLI" #xA199)
- ("YI SYLLABLE HLIP" #xA19A)
- ("YI SYLLABLE HLIEX" #xA19B)
- ("YI SYLLABLE HLIE" #xA19C)
- ("YI SYLLABLE HLIEP" #xA19D)
- ("YI SYLLABLE HLAT" #xA19E)
- ("YI SYLLABLE HLAX" #xA19F)
- ("YI SYLLABLE HLA" #xA1A0)
- ("YI SYLLABLE HLAP" #xA1A1)
- ("YI SYLLABLE HLUOX" #xA1A2)
- ("YI SYLLABLE HLUO" #xA1A3)
- ("YI SYLLABLE HLUOP" #xA1A4)
- ("YI SYLLABLE HLOX" #xA1A5)
- ("YI SYLLABLE HLO" #xA1A6)
- ("YI SYLLABLE HLOP" #xA1A7)
- ("YI SYLLABLE HLEX" #xA1A8)
- ("YI SYLLABLE HLE" #xA1A9)
- ("YI SYLLABLE HLEP" #xA1AA)
- ("YI SYLLABLE HLUT" #xA1AB)
- ("YI SYLLABLE HLUX" #xA1AC)
- ("YI SYLLABLE HLU" #xA1AD)
- ("YI SYLLABLE HLUP" #xA1AE)
- ("YI SYLLABLE HLURX" #xA1AF)
- ("YI SYLLABLE HLUR" #xA1B0)
- ("YI SYLLABLE HLYT" #xA1B1)
- ("YI SYLLABLE HLYX" #xA1B2)
- ("YI SYLLABLE HLY" #xA1B3)
- ("YI SYLLABLE HLYP" #xA1B4)
- ("YI SYLLABLE HLYRX" #xA1B5)
- ("YI SYLLABLE HLYR" #xA1B6)
- ("YI SYLLABLE LIT" #xA1B7)
- ("YI SYLLABLE LIX" #xA1B8)
- ("YI SYLLABLE LI" #xA1B9)
- ("YI SYLLABLE LIP" #xA1BA)
- ("YI SYLLABLE LIET" #xA1BB)
- ("YI SYLLABLE LIEX" #xA1BC)
- ("YI SYLLABLE LIE" #xA1BD)
- ("YI SYLLABLE LIEP" #xA1BE)
- ("YI SYLLABLE LAT" #xA1BF)
- ("YI SYLLABLE LAX" #xA1C0)
- ("YI SYLLABLE LA" #xA1C1)
- ("YI SYLLABLE LAP" #xA1C2)
- ("YI SYLLABLE LUOT" #xA1C3)
- ("YI SYLLABLE LUOX" #xA1C4)
- ("YI SYLLABLE LUO" #xA1C5)
- ("YI SYLLABLE LUOP" #xA1C6)
- ("YI SYLLABLE LOT" #xA1C7)
- ("YI SYLLABLE LOX" #xA1C8)
- ("YI SYLLABLE LO" #xA1C9)
- ("YI SYLLABLE LOP" #xA1CA)
- ("YI SYLLABLE LEX" #xA1CB)
- ("YI SYLLABLE LE" #xA1CC)
- ("YI SYLLABLE LEP" #xA1CD)
- ("YI SYLLABLE LUT" #xA1CE)
- ("YI SYLLABLE LUX" #xA1CF)
- ("YI SYLLABLE LU" #xA1D0)
- ("YI SYLLABLE LUP" #xA1D1)
- ("YI SYLLABLE LURX" #xA1D2)
- ("YI SYLLABLE LUR" #xA1D3)
- ("YI SYLLABLE LYT" #xA1D4)
- ("YI SYLLABLE LYX" #xA1D5)
- ("YI SYLLABLE LY" #xA1D6)
- ("YI SYLLABLE LYP" #xA1D7)
- ("YI SYLLABLE LYRX" #xA1D8)
- ("YI SYLLABLE LYR" #xA1D9)
- ("YI SYLLABLE GIT" #xA1DA)
- ("YI SYLLABLE GIX" #xA1DB)
- ("YI SYLLABLE GI" #xA1DC)
- ("YI SYLLABLE GIP" #xA1DD)
- ("YI SYLLABLE GIET" #xA1DE)
- ("YI SYLLABLE GIEX" #xA1DF)
- ("YI SYLLABLE GIE" #xA1E0)
- ("YI SYLLABLE GIEP" #xA1E1)
- ("YI SYLLABLE GAT" #xA1E2)
- ("YI SYLLABLE GAX" #xA1E3)
- ("YI SYLLABLE GA" #xA1E4)
- ("YI SYLLABLE GAP" #xA1E5)
- ("YI SYLLABLE GUOT" #xA1E6)
- ("YI SYLLABLE GUOX" #xA1E7)
- ("YI SYLLABLE GUO" #xA1E8)
- ("YI SYLLABLE GUOP" #xA1E9)
- ("YI SYLLABLE GOT" #xA1EA)
- ("YI SYLLABLE GOX" #xA1EB)
- ("YI SYLLABLE GO" #xA1EC)
- ("YI SYLLABLE GOP" #xA1ED)
- ("YI SYLLABLE GET" #xA1EE)
- ("YI SYLLABLE GEX" #xA1EF)
- ("YI SYLLABLE GE" #xA1F0)
- ("YI SYLLABLE GEP" #xA1F1)
- ("YI SYLLABLE GUT" #xA1F2)
- ("YI SYLLABLE GUX" #xA1F3)
- ("YI SYLLABLE GU" #xA1F4)
- ("YI SYLLABLE GUP" #xA1F5)
- ("YI SYLLABLE GURX" #xA1F6)
- ("YI SYLLABLE GUR" #xA1F7)
- ("YI SYLLABLE KIT" #xA1F8)
- ("YI SYLLABLE KIX" #xA1F9)
- ("YI SYLLABLE KI" #xA1FA)
- ("YI SYLLABLE KIP" #xA1FB)
- ("YI SYLLABLE KIEX" #xA1FC)
- ("YI SYLLABLE KIE" #xA1FD)
- ("YI SYLLABLE KIEP" #xA1FE)
- ("YI SYLLABLE KAT" #xA1FF)
- ("YI SYLLABLE KAX" #xA200)
- ("YI SYLLABLE KA" #xA201)
- ("YI SYLLABLE KAP" #xA202)
- ("YI SYLLABLE KUOX" #xA203)
- ("YI SYLLABLE KUO" #xA204)
- ("YI SYLLABLE KUOP" #xA205)
- ("YI SYLLABLE KOT" #xA206)
- ("YI SYLLABLE KOX" #xA207)
- ("YI SYLLABLE KO" #xA208)
- ("YI SYLLABLE KOP" #xA209)
- ("YI SYLLABLE KET" #xA20A)
- ("YI SYLLABLE KEX" #xA20B)
- ("YI SYLLABLE KE" #xA20C)
- ("YI SYLLABLE KEP" #xA20D)
- ("YI SYLLABLE KUT" #xA20E)
- ("YI SYLLABLE KUX" #xA20F)
- ("YI SYLLABLE KU" #xA210)
- ("YI SYLLABLE KUP" #xA211)
- ("YI SYLLABLE KURX" #xA212)
- ("YI SYLLABLE KUR" #xA213)
- ("YI SYLLABLE GGIT" #xA214)
- ("YI SYLLABLE GGIX" #xA215)
- ("YI SYLLABLE GGI" #xA216)
- ("YI SYLLABLE GGIEX" #xA217)
- ("YI SYLLABLE GGIE" #xA218)
- ("YI SYLLABLE GGIEP" #xA219)
- ("YI SYLLABLE GGAT" #xA21A)
- ("YI SYLLABLE GGAX" #xA21B)
- ("YI SYLLABLE GGA" #xA21C)
- ("YI SYLLABLE GGAP" #xA21D)
- ("YI SYLLABLE GGUOT" #xA21E)
- ("YI SYLLABLE GGUOX" #xA21F)
- ("YI SYLLABLE GGUO" #xA220)
- ("YI SYLLABLE GGUOP" #xA221)
- ("YI SYLLABLE GGOT" #xA222)
- ("YI SYLLABLE GGOX" #xA223)
- ("YI SYLLABLE GGO" #xA224)
- ("YI SYLLABLE GGOP" #xA225)
- ("YI SYLLABLE GGET" #xA226)
- ("YI SYLLABLE GGEX" #xA227)
- ("YI SYLLABLE GGE" #xA228)
- ("YI SYLLABLE GGEP" #xA229)
- ("YI SYLLABLE GGUT" #xA22A)
- ("YI SYLLABLE GGUX" #xA22B)
- ("YI SYLLABLE GGU" #xA22C)
- ("YI SYLLABLE GGUP" #xA22D)
- ("YI SYLLABLE GGURX" #xA22E)
- ("YI SYLLABLE GGUR" #xA22F)
- ("YI SYLLABLE MGIEX" #xA230)
- ("YI SYLLABLE MGIE" #xA231)
- ("YI SYLLABLE MGAT" #xA232)
- ("YI SYLLABLE MGAX" #xA233)
- ("YI SYLLABLE MGA" #xA234)
- ("YI SYLLABLE MGAP" #xA235)
- ("YI SYLLABLE MGUOX" #xA236)
- ("YI SYLLABLE MGUO" #xA237)
- ("YI SYLLABLE MGUOP" #xA238)
- ("YI SYLLABLE MGOT" #xA239)
- ("YI SYLLABLE MGOX" #xA23A)
- ("YI SYLLABLE MGO" #xA23B)
- ("YI SYLLABLE MGOP" #xA23C)
- ("YI SYLLABLE MGEX" #xA23D)
- ("YI SYLLABLE MGE" #xA23E)
- ("YI SYLLABLE MGEP" #xA23F)
- ("YI SYLLABLE MGUT" #xA240)
- ("YI SYLLABLE MGUX" #xA241)
- ("YI SYLLABLE MGU" #xA242)
- ("YI SYLLABLE MGUP" #xA243)
- ("YI SYLLABLE MGURX" #xA244)
- ("YI SYLLABLE MGUR" #xA245)
- ("YI SYLLABLE HXIT" #xA246)
- ("YI SYLLABLE HXIX" #xA247)
- ("YI SYLLABLE HXI" #xA248)
- ("YI SYLLABLE HXIP" #xA249)
- ("YI SYLLABLE HXIET" #xA24A)
- ("YI SYLLABLE HXIEX" #xA24B)
- ("YI SYLLABLE HXIE" #xA24C)
- ("YI SYLLABLE HXIEP" #xA24D)
- ("YI SYLLABLE HXAT" #xA24E)
- ("YI SYLLABLE HXAX" #xA24F)
- ("YI SYLLABLE HXA" #xA250)
- ("YI SYLLABLE HXAP" #xA251)
- ("YI SYLLABLE HXUOT" #xA252)
- ("YI SYLLABLE HXUOX" #xA253)
- ("YI SYLLABLE HXUO" #xA254)
- ("YI SYLLABLE HXUOP" #xA255)
- ("YI SYLLABLE HXOT" #xA256)
- ("YI SYLLABLE HXOX" #xA257)
- ("YI SYLLABLE HXO" #xA258)
- ("YI SYLLABLE HXOP" #xA259)
- ("YI SYLLABLE HXEX" #xA25A)
- ("YI SYLLABLE HXE" #xA25B)
- ("YI SYLLABLE HXEP" #xA25C)
- ("YI SYLLABLE NGIEX" #xA25D)
- ("YI SYLLABLE NGIE" #xA25E)
- ("YI SYLLABLE NGIEP" #xA25F)
- ("YI SYLLABLE NGAT" #xA260)
- ("YI SYLLABLE NGAX" #xA261)
- ("YI SYLLABLE NGA" #xA262)
- ("YI SYLLABLE NGAP" #xA263)
- ("YI SYLLABLE NGUOT" #xA264)
- ("YI SYLLABLE NGUOX" #xA265)
- ("YI SYLLABLE NGUO" #xA266)
- ("YI SYLLABLE NGOT" #xA267)
- ("YI SYLLABLE NGOX" #xA268)
- ("YI SYLLABLE NGO" #xA269)
- ("YI SYLLABLE NGOP" #xA26A)
- ("YI SYLLABLE NGEX" #xA26B)
- ("YI SYLLABLE NGE" #xA26C)
- ("YI SYLLABLE NGEP" #xA26D)
- ("YI SYLLABLE HIT" #xA26E)
- ("YI SYLLABLE HIEX" #xA26F)
- ("YI SYLLABLE HIE" #xA270)
- ("YI SYLLABLE HAT" #xA271)
- ("YI SYLLABLE HAX" #xA272)
- ("YI SYLLABLE HA" #xA273)
- ("YI SYLLABLE HAP" #xA274)
- ("YI SYLLABLE HUOT" #xA275)
- ("YI SYLLABLE HUOX" #xA276)
- ("YI SYLLABLE HUO" #xA277)
- ("YI SYLLABLE HUOP" #xA278)
- ("YI SYLLABLE HOT" #xA279)
- ("YI SYLLABLE HOX" #xA27A)
- ("YI SYLLABLE HO" #xA27B)
- ("YI SYLLABLE HOP" #xA27C)
- ("YI SYLLABLE HEX" #xA27D)
- ("YI SYLLABLE HE" #xA27E)
- ("YI SYLLABLE HEP" #xA27F)
- ("YI SYLLABLE WAT" #xA280)
- ("YI SYLLABLE WAX" #xA281)
- ("YI SYLLABLE WA" #xA282)
- ("YI SYLLABLE WAP" #xA283)
- ("YI SYLLABLE WUOX" #xA284)
- ("YI SYLLABLE WUO" #xA285)
- ("YI SYLLABLE WUOP" #xA286)
- ("YI SYLLABLE WOX" #xA287)
- ("YI SYLLABLE WO" #xA288)
- ("YI SYLLABLE WOP" #xA289)
- ("YI SYLLABLE WEX" #xA28A)
- ("YI SYLLABLE WE" #xA28B)
- ("YI SYLLABLE WEP" #xA28C)
- ("YI SYLLABLE ZIT" #xA28D)
- ("YI SYLLABLE ZIX" #xA28E)
- ("YI SYLLABLE ZI" #xA28F)
- ("YI SYLLABLE ZIP" #xA290)
- ("YI SYLLABLE ZIEX" #xA291)
- ("YI SYLLABLE ZIE" #xA292)
- ("YI SYLLABLE ZIEP" #xA293)
- ("YI SYLLABLE ZAT" #xA294)
- ("YI SYLLABLE ZAX" #xA295)
- ("YI SYLLABLE ZA" #xA296)
- ("YI SYLLABLE ZAP" #xA297)
- ("YI SYLLABLE ZUOX" #xA298)
- ("YI SYLLABLE ZUO" #xA299)
- ("YI SYLLABLE ZUOP" #xA29A)
- ("YI SYLLABLE ZOT" #xA29B)
- ("YI SYLLABLE ZOX" #xA29C)
- ("YI SYLLABLE ZO" #xA29D)
- ("YI SYLLABLE ZOP" #xA29E)
- ("YI SYLLABLE ZEX" #xA29F)
- ("YI SYLLABLE ZE" #xA2A0)
- ("YI SYLLABLE ZEP" #xA2A1)
- ("YI SYLLABLE ZUT" #xA2A2)
- ("YI SYLLABLE ZUX" #xA2A3)
- ("YI SYLLABLE ZU" #xA2A4)
- ("YI SYLLABLE ZUP" #xA2A5)
- ("YI SYLLABLE ZURX" #xA2A6)
- ("YI SYLLABLE ZUR" #xA2A7)
- ("YI SYLLABLE ZYT" #xA2A8)
- ("YI SYLLABLE ZYX" #xA2A9)
- ("YI SYLLABLE ZY" #xA2AA)
- ("YI SYLLABLE ZYP" #xA2AB)
- ("YI SYLLABLE ZYRX" #xA2AC)
- ("YI SYLLABLE ZYR" #xA2AD)
- ("YI SYLLABLE CIT" #xA2AE)
- ("YI SYLLABLE CIX" #xA2AF)
- ("YI SYLLABLE CI" #xA2B0)
- ("YI SYLLABLE CIP" #xA2B1)
- ("YI SYLLABLE CIET" #xA2B2)
- ("YI SYLLABLE CIEX" #xA2B3)
- ("YI SYLLABLE CIE" #xA2B4)
- ("YI SYLLABLE CIEP" #xA2B5)
- ("YI SYLLABLE CAT" #xA2B6)
- ("YI SYLLABLE CAX" #xA2B7)
- ("YI SYLLABLE CA" #xA2B8)
- ("YI SYLLABLE CAP" #xA2B9)
- ("YI SYLLABLE CUOX" #xA2BA)
- ("YI SYLLABLE CUO" #xA2BB)
- ("YI SYLLABLE CUOP" #xA2BC)
- ("YI SYLLABLE COT" #xA2BD)
- ("YI SYLLABLE COX" #xA2BE)
- ("YI SYLLABLE CO" #xA2BF)
- ("YI SYLLABLE COP" #xA2C0)
- ("YI SYLLABLE CEX" #xA2C1)
- ("YI SYLLABLE CE" #xA2C2)
- ("YI SYLLABLE CEP" #xA2C3)
- ("YI SYLLABLE CUT" #xA2C4)
- ("YI SYLLABLE CUX" #xA2C5)
- ("YI SYLLABLE CU" #xA2C6)
- ("YI SYLLABLE CUP" #xA2C7)
- ("YI SYLLABLE CURX" #xA2C8)
- ("YI SYLLABLE CUR" #xA2C9)
- ("YI SYLLABLE CYT" #xA2CA)
- ("YI SYLLABLE CYX" #xA2CB)
- ("YI SYLLABLE CY" #xA2CC)
- ("YI SYLLABLE CYP" #xA2CD)
- ("YI SYLLABLE CYRX" #xA2CE)
- ("YI SYLLABLE CYR" #xA2CF)
- ("YI SYLLABLE ZZIT" #xA2D0)
- ("YI SYLLABLE ZZIX" #xA2D1)
- ("YI SYLLABLE ZZI" #xA2D2)
- ("YI SYLLABLE ZZIP" #xA2D3)
- ("YI SYLLABLE ZZIET" #xA2D4)
- ("YI SYLLABLE ZZIEX" #xA2D5)
- ("YI SYLLABLE ZZIE" #xA2D6)
- ("YI SYLLABLE ZZIEP" #xA2D7)
- ("YI SYLLABLE ZZAT" #xA2D8)
- ("YI SYLLABLE ZZAX" #xA2D9)
- ("YI SYLLABLE ZZA" #xA2DA)
- ("YI SYLLABLE ZZAP" #xA2DB)
- ("YI SYLLABLE ZZOX" #xA2DC)
- ("YI SYLLABLE ZZO" #xA2DD)
- ("YI SYLLABLE ZZOP" #xA2DE)
- ("YI SYLLABLE ZZEX" #xA2DF)
- ("YI SYLLABLE ZZE" #xA2E0)
- ("YI SYLLABLE ZZEP" #xA2E1)
- ("YI SYLLABLE ZZUX" #xA2E2)
- ("YI SYLLABLE ZZU" #xA2E3)
- ("YI SYLLABLE ZZUP" #xA2E4)
- ("YI SYLLABLE ZZURX" #xA2E5)
- ("YI SYLLABLE ZZUR" #xA2E6)
- ("YI SYLLABLE ZZYT" #xA2E7)
- ("YI SYLLABLE ZZYX" #xA2E8)
- ("YI SYLLABLE ZZY" #xA2E9)
- ("YI SYLLABLE ZZYP" #xA2EA)
- ("YI SYLLABLE ZZYRX" #xA2EB)
- ("YI SYLLABLE ZZYR" #xA2EC)
- ("YI SYLLABLE NZIT" #xA2ED)
- ("YI SYLLABLE NZIX" #xA2EE)
- ("YI SYLLABLE NZI" #xA2EF)
- ("YI SYLLABLE NZIP" #xA2F0)
- ("YI SYLLABLE NZIEX" #xA2F1)
- ("YI SYLLABLE NZIE" #xA2F2)
- ("YI SYLLABLE NZIEP" #xA2F3)
- ("YI SYLLABLE NZAT" #xA2F4)
- ("YI SYLLABLE NZAX" #xA2F5)
- ("YI SYLLABLE NZA" #xA2F6)
- ("YI SYLLABLE NZAP" #xA2F7)
- ("YI SYLLABLE NZUOX" #xA2F8)
- ("YI SYLLABLE NZUO" #xA2F9)
- ("YI SYLLABLE NZOX" #xA2FA)
- ("YI SYLLABLE NZOP" #xA2FB)
- ("YI SYLLABLE NZEX" #xA2FC)
- ("YI SYLLABLE NZE" #xA2FD)
- ("YI SYLLABLE NZUX" #xA2FE)
- ("YI SYLLABLE NZU" #xA2FF)
- ("YI SYLLABLE NZUP" #xA300)
- ("YI SYLLABLE NZURX" #xA301)
- ("YI SYLLABLE NZUR" #xA302)
- ("YI SYLLABLE NZYT" #xA303)
- ("YI SYLLABLE NZYX" #xA304)
- ("YI SYLLABLE NZY" #xA305)
- ("YI SYLLABLE NZYP" #xA306)
- ("YI SYLLABLE NZYRX" #xA307)
- ("YI SYLLABLE NZYR" #xA308)
- ("YI SYLLABLE SIT" #xA309)
- ("YI SYLLABLE SIX" #xA30A)
- ("YI SYLLABLE SI" #xA30B)
- ("YI SYLLABLE SIP" #xA30C)
- ("YI SYLLABLE SIEX" #xA30D)
- ("YI SYLLABLE SIE" #xA30E)
- ("YI SYLLABLE SIEP" #xA30F)
- ("YI SYLLABLE SAT" #xA310)
- ("YI SYLLABLE SAX" #xA311)
- ("YI SYLLABLE SA" #xA312)
- ("YI SYLLABLE SAP" #xA313)
- ("YI SYLLABLE SUOX" #xA314)
- ("YI SYLLABLE SUO" #xA315)
- ("YI SYLLABLE SUOP" #xA316)
- ("YI SYLLABLE SOT" #xA317)
- ("YI SYLLABLE SOX" #xA318)
- ("YI SYLLABLE SO" #xA319)
- ("YI SYLLABLE SOP" #xA31A)
- ("YI SYLLABLE SEX" #xA31B)
- ("YI SYLLABLE SE" #xA31C)
- ("YI SYLLABLE SEP" #xA31D)
- ("YI SYLLABLE SUT" #xA31E)
- ("YI SYLLABLE SUX" #xA31F)
- ("YI SYLLABLE SU" #xA320)
- ("YI SYLLABLE SUP" #xA321)
- ("YI SYLLABLE SURX" #xA322)
- ("YI SYLLABLE SUR" #xA323)
- ("YI SYLLABLE SYT" #xA324)
- ("YI SYLLABLE SYX" #xA325)
- ("YI SYLLABLE SY" #xA326)
- ("YI SYLLABLE SYP" #xA327)
- ("YI SYLLABLE SYRX" #xA328)
- ("YI SYLLABLE SYR" #xA329)
- ("YI SYLLABLE SSIT" #xA32A)
- ("YI SYLLABLE SSIX" #xA32B)
- ("YI SYLLABLE SSI" #xA32C)
- ("YI SYLLABLE SSIP" #xA32D)
- ("YI SYLLABLE SSIEX" #xA32E)
- ("YI SYLLABLE SSIE" #xA32F)
- ("YI SYLLABLE SSIEP" #xA330)
- ("YI SYLLABLE SSAT" #xA331)
- ("YI SYLLABLE SSAX" #xA332)
- ("YI SYLLABLE SSA" #xA333)
- ("YI SYLLABLE SSAP" #xA334)
- ("YI SYLLABLE SSOT" #xA335)
- ("YI SYLLABLE SSOX" #xA336)
- ("YI SYLLABLE SSO" #xA337)
- ("YI SYLLABLE SSOP" #xA338)
- ("YI SYLLABLE SSEX" #xA339)
- ("YI SYLLABLE SSE" #xA33A)
- ("YI SYLLABLE SSEP" #xA33B)
- ("YI SYLLABLE SSUT" #xA33C)
- ("YI SYLLABLE SSUX" #xA33D)
- ("YI SYLLABLE SSU" #xA33E)
- ("YI SYLLABLE SSUP" #xA33F)
- ("YI SYLLABLE SSYT" #xA340)
- ("YI SYLLABLE SSYX" #xA341)
- ("YI SYLLABLE SSY" #xA342)
- ("YI SYLLABLE SSYP" #xA343)
- ("YI SYLLABLE SSYRX" #xA344)
- ("YI SYLLABLE SSYR" #xA345)
- ("YI SYLLABLE ZHAT" #xA346)
- ("YI SYLLABLE ZHAX" #xA347)
- ("YI SYLLABLE ZHA" #xA348)
- ("YI SYLLABLE ZHAP" #xA349)
- ("YI SYLLABLE ZHUOX" #xA34A)
- ("YI SYLLABLE ZHUO" #xA34B)
- ("YI SYLLABLE ZHUOP" #xA34C)
- ("YI SYLLABLE ZHOT" #xA34D)
- ("YI SYLLABLE ZHOX" #xA34E)
- ("YI SYLLABLE ZHO" #xA34F)
- ("YI SYLLABLE ZHOP" #xA350)
- ("YI SYLLABLE ZHET" #xA351)
- ("YI SYLLABLE ZHEX" #xA352)
- ("YI SYLLABLE ZHE" #xA353)
- ("YI SYLLABLE ZHEP" #xA354)
- ("YI SYLLABLE ZHUT" #xA355)
- ("YI SYLLABLE ZHUX" #xA356)
- ("YI SYLLABLE ZHU" #xA357)
- ("YI SYLLABLE ZHUP" #xA358)
- ("YI SYLLABLE ZHURX" #xA359)
- ("YI SYLLABLE ZHUR" #xA35A)
- ("YI SYLLABLE ZHYT" #xA35B)
- ("YI SYLLABLE ZHYX" #xA35C)
- ("YI SYLLABLE ZHY" #xA35D)
- ("YI SYLLABLE ZHYP" #xA35E)
- ("YI SYLLABLE ZHYRX" #xA35F)
- ("YI SYLLABLE ZHYR" #xA360)
- ("YI SYLLABLE CHAT" #xA361)
- ("YI SYLLABLE CHAX" #xA362)
- ("YI SYLLABLE CHA" #xA363)
- ("YI SYLLABLE CHAP" #xA364)
- ("YI SYLLABLE CHUOT" #xA365)
- ("YI SYLLABLE CHUOX" #xA366)
- ("YI SYLLABLE CHUO" #xA367)
- ("YI SYLLABLE CHUOP" #xA368)
- ("YI SYLLABLE CHOT" #xA369)
- ("YI SYLLABLE CHOX" #xA36A)
- ("YI SYLLABLE CHO" #xA36B)
- ("YI SYLLABLE CHOP" #xA36C)
- ("YI SYLLABLE CHET" #xA36D)
- ("YI SYLLABLE CHEX" #xA36E)
- ("YI SYLLABLE CHE" #xA36F)
- ("YI SYLLABLE CHEP" #xA370)
- ("YI SYLLABLE CHUX" #xA371)
- ("YI SYLLABLE CHU" #xA372)
- ("YI SYLLABLE CHUP" #xA373)
- ("YI SYLLABLE CHURX" #xA374)
- ("YI SYLLABLE CHUR" #xA375)
- ("YI SYLLABLE CHYT" #xA376)
- ("YI SYLLABLE CHYX" #xA377)
- ("YI SYLLABLE CHY" #xA378)
- ("YI SYLLABLE CHYP" #xA379)
- ("YI SYLLABLE CHYRX" #xA37A)
- ("YI SYLLABLE CHYR" #xA37B)
- ("YI SYLLABLE RRAX" #xA37C)
- ("YI SYLLABLE RRA" #xA37D)
- ("YI SYLLABLE RRUOX" #xA37E)
- ("YI SYLLABLE RRUO" #xA37F)
- ("YI SYLLABLE RROT" #xA380)
- ("YI SYLLABLE RROX" #xA381)
- ("YI SYLLABLE RRO" #xA382)
- ("YI SYLLABLE RROP" #xA383)
- ("YI SYLLABLE RRET" #xA384)
- ("YI SYLLABLE RREX" #xA385)
- ("YI SYLLABLE RRE" #xA386)
- ("YI SYLLABLE RREP" #xA387)
- ("YI SYLLABLE RRUT" #xA388)
- ("YI SYLLABLE RRUX" #xA389)
- ("YI SYLLABLE RRU" #xA38A)
- ("YI SYLLABLE RRUP" #xA38B)
- ("YI SYLLABLE RRURX" #xA38C)
- ("YI SYLLABLE RRUR" #xA38D)
- ("YI SYLLABLE RRYT" #xA38E)
- ("YI SYLLABLE RRYX" #xA38F)
- ("YI SYLLABLE RRY" #xA390)
- ("YI SYLLABLE RRYP" #xA391)
- ("YI SYLLABLE RRYRX" #xA392)
- ("YI SYLLABLE RRYR" #xA393)
- ("YI SYLLABLE NRAT" #xA394)
- ("YI SYLLABLE NRAX" #xA395)
- ("YI SYLLABLE NRA" #xA396)
- ("YI SYLLABLE NRAP" #xA397)
- ("YI SYLLABLE NROX" #xA398)
- ("YI SYLLABLE NRO" #xA399)
- ("YI SYLLABLE NROP" #xA39A)
- ("YI SYLLABLE NRET" #xA39B)
- ("YI SYLLABLE NREX" #xA39C)
- ("YI SYLLABLE NRE" #xA39D)
- ("YI SYLLABLE NREP" #xA39E)
- ("YI SYLLABLE NRUT" #xA39F)
- ("YI SYLLABLE NRUX" #xA3A0)
- ("YI SYLLABLE NRU" #xA3A1)
- ("YI SYLLABLE NRUP" #xA3A2)
- ("YI SYLLABLE NRURX" #xA3A3)
- ("YI SYLLABLE NRUR" #xA3A4)
- ("YI SYLLABLE NRYT" #xA3A5)
- ("YI SYLLABLE NRYX" #xA3A6)
- ("YI SYLLABLE NRY" #xA3A7)
- ("YI SYLLABLE NRYP" #xA3A8)
- ("YI SYLLABLE NRYRX" #xA3A9)
- ("YI SYLLABLE NRYR" #xA3AA)
- ("YI SYLLABLE SHAT" #xA3AB)
- ("YI SYLLABLE SHAX" #xA3AC)
- ("YI SYLLABLE SHA" #xA3AD)
- ("YI SYLLABLE SHAP" #xA3AE)
- ("YI SYLLABLE SHUOX" #xA3AF)
- ("YI SYLLABLE SHUO" #xA3B0)
- ("YI SYLLABLE SHUOP" #xA3B1)
- ("YI SYLLABLE SHOT" #xA3B2)
- ("YI SYLLABLE SHOX" #xA3B3)
- ("YI SYLLABLE SHO" #xA3B4)
- ("YI SYLLABLE SHOP" #xA3B5)
- ("YI SYLLABLE SHET" #xA3B6)
- ("YI SYLLABLE SHEX" #xA3B7)
- ("YI SYLLABLE SHE" #xA3B8)
- ("YI SYLLABLE SHEP" #xA3B9)
- ("YI SYLLABLE SHUT" #xA3BA)
- ("YI SYLLABLE SHUX" #xA3BB)
- ("YI SYLLABLE SHU" #xA3BC)
- ("YI SYLLABLE SHUP" #xA3BD)
- ("YI SYLLABLE SHURX" #xA3BE)
- ("YI SYLLABLE SHUR" #xA3BF)
- ("YI SYLLABLE SHYT" #xA3C0)
- ("YI SYLLABLE SHYX" #xA3C1)
- ("YI SYLLABLE SHY" #xA3C2)
- ("YI SYLLABLE SHYP" #xA3C3)
- ("YI SYLLABLE SHYRX" #xA3C4)
- ("YI SYLLABLE SHYR" #xA3C5)
- ("YI SYLLABLE RAT" #xA3C6)
- ("YI SYLLABLE RAX" #xA3C7)
- ("YI SYLLABLE RA" #xA3C8)
- ("YI SYLLABLE RAP" #xA3C9)
- ("YI SYLLABLE RUOX" #xA3CA)
- ("YI SYLLABLE RUO" #xA3CB)
- ("YI SYLLABLE RUOP" #xA3CC)
- ("YI SYLLABLE ROT" #xA3CD)
- ("YI SYLLABLE ROX" #xA3CE)
- ("YI SYLLABLE RO" #xA3CF)
- ("YI SYLLABLE ROP" #xA3D0)
- ("YI SYLLABLE REX" #xA3D1)
- ("YI SYLLABLE RE" #xA3D2)
- ("YI SYLLABLE REP" #xA3D3)
- ("YI SYLLABLE RUT" #xA3D4)
- ("YI SYLLABLE RUX" #xA3D5)
- ("YI SYLLABLE RU" #xA3D6)
- ("YI SYLLABLE RUP" #xA3D7)
- ("YI SYLLABLE RURX" #xA3D8)
- ("YI SYLLABLE RUR" #xA3D9)
- ("YI SYLLABLE RYT" #xA3DA)
- ("YI SYLLABLE RYX" #xA3DB)
- ("YI SYLLABLE RY" #xA3DC)
- ("YI SYLLABLE RYP" #xA3DD)
- ("YI SYLLABLE RYRX" #xA3DE)
- ("YI SYLLABLE RYR" #xA3DF)
- ("YI SYLLABLE JIT" #xA3E0)
- ("YI SYLLABLE JIX" #xA3E1)
- ("YI SYLLABLE JI" #xA3E2)
- ("YI SYLLABLE JIP" #xA3E3)
- ("YI SYLLABLE JIET" #xA3E4)
- ("YI SYLLABLE JIEX" #xA3E5)
- ("YI SYLLABLE JIE" #xA3E6)
- ("YI SYLLABLE JIEP" #xA3E7)
- ("YI SYLLABLE JUOT" #xA3E8)
- ("YI SYLLABLE JUOX" #xA3E9)
- ("YI SYLLABLE JUO" #xA3EA)
- ("YI SYLLABLE JUOP" #xA3EB)
- ("YI SYLLABLE JOT" #xA3EC)
- ("YI SYLLABLE JOX" #xA3ED)
- ("YI SYLLABLE JO" #xA3EE)
- ("YI SYLLABLE JOP" #xA3EF)
- ("YI SYLLABLE JUT" #xA3F0)
- ("YI SYLLABLE JUX" #xA3F1)
- ("YI SYLLABLE JU" #xA3F2)
- ("YI SYLLABLE JUP" #xA3F3)
- ("YI SYLLABLE JURX" #xA3F4)
- ("YI SYLLABLE JUR" #xA3F5)
- ("YI SYLLABLE JYT" #xA3F6)
- ("YI SYLLABLE JYX" #xA3F7)
- ("YI SYLLABLE JY" #xA3F8)
- ("YI SYLLABLE JYP" #xA3F9)
- ("YI SYLLABLE JYRX" #xA3FA)
- ("YI SYLLABLE JYR" #xA3FB)
- ("YI SYLLABLE QIT" #xA3FC)
- ("YI SYLLABLE QIX" #xA3FD)
- ("YI SYLLABLE QI" #xA3FE)
- ("YI SYLLABLE QIP" #xA3FF)
- ("YI SYLLABLE QIET" #xA400)
- ("YI SYLLABLE QIEX" #xA401)
- ("YI SYLLABLE QIE" #xA402)
- ("YI SYLLABLE QIEP" #xA403)
- ("YI SYLLABLE QUOT" #xA404)
- ("YI SYLLABLE QUOX" #xA405)
- ("YI SYLLABLE QUO" #xA406)
- ("YI SYLLABLE QUOP" #xA407)
- ("YI SYLLABLE QOT" #xA408)
- ("YI SYLLABLE QOX" #xA409)
- ("YI SYLLABLE QO" #xA40A)
- ("YI SYLLABLE QOP" #xA40B)
- ("YI SYLLABLE QUT" #xA40C)
- ("YI SYLLABLE QUX" #xA40D)
- ("YI SYLLABLE QU" #xA40E)
- ("YI SYLLABLE QUP" #xA40F)
- ("YI SYLLABLE QURX" #xA410)
- ("YI SYLLABLE QUR" #xA411)
- ("YI SYLLABLE QYT" #xA412)
- ("YI SYLLABLE QYX" #xA413)
- ("YI SYLLABLE QY" #xA414)
- ("YI SYLLABLE QYP" #xA415)
- ("YI SYLLABLE QYRX" #xA416)
- ("YI SYLLABLE QYR" #xA417)
- ("YI SYLLABLE JJIT" #xA418)
- ("YI SYLLABLE JJIX" #xA419)
- ("YI SYLLABLE JJI" #xA41A)
- ("YI SYLLABLE JJIP" #xA41B)
- ("YI SYLLABLE JJIET" #xA41C)
- ("YI SYLLABLE JJIEX" #xA41D)
- ("YI SYLLABLE JJIE" #xA41E)
- ("YI SYLLABLE JJIEP" #xA41F)
- ("YI SYLLABLE JJUOX" #xA420)
- ("YI SYLLABLE JJUO" #xA421)
- ("YI SYLLABLE JJUOP" #xA422)
- ("YI SYLLABLE JJOT" #xA423)
- ("YI SYLLABLE JJOX" #xA424)
- ("YI SYLLABLE JJO" #xA425)
- ("YI SYLLABLE JJOP" #xA426)
- ("YI SYLLABLE JJUT" #xA427)
- ("YI SYLLABLE JJUX" #xA428)
- ("YI SYLLABLE JJU" #xA429)
- ("YI SYLLABLE JJUP" #xA42A)
- ("YI SYLLABLE JJURX" #xA42B)
- ("YI SYLLABLE JJUR" #xA42C)
- ("YI SYLLABLE JJYT" #xA42D)
- ("YI SYLLABLE JJYX" #xA42E)
- ("YI SYLLABLE JJY" #xA42F)
- ("YI SYLLABLE JJYP" #xA430)
- ("YI SYLLABLE NJIT" #xA431)
- ("YI SYLLABLE NJIX" #xA432)
- ("YI SYLLABLE NJI" #xA433)
- ("YI SYLLABLE NJIP" #xA434)
- ("YI SYLLABLE NJIET" #xA435)
- ("YI SYLLABLE NJIEX" #xA436)
- ("YI SYLLABLE NJIE" #xA437)
- ("YI SYLLABLE NJIEP" #xA438)
- ("YI SYLLABLE NJUOX" #xA439)
- ("YI SYLLABLE NJUO" #xA43A)
- ("YI SYLLABLE NJOT" #xA43B)
- ("YI SYLLABLE NJOX" #xA43C)
- ("YI SYLLABLE NJO" #xA43D)
- ("YI SYLLABLE NJOP" #xA43E)
- ("YI SYLLABLE NJUX" #xA43F)
- ("YI SYLLABLE NJU" #xA440)
- ("YI SYLLABLE NJUP" #xA441)
- ("YI SYLLABLE NJURX" #xA442)
- ("YI SYLLABLE NJUR" #xA443)
- ("YI SYLLABLE NJYT" #xA444)
- ("YI SYLLABLE NJYX" #xA445)
- ("YI SYLLABLE NJY" #xA446)
- ("YI SYLLABLE NJYP" #xA447)
- ("YI SYLLABLE NJYRX" #xA448)
- ("YI SYLLABLE NJYR" #xA449)
- ("YI SYLLABLE NYIT" #xA44A)
- ("YI SYLLABLE NYIX" #xA44B)
- ("YI SYLLABLE NYI" #xA44C)
- ("YI SYLLABLE NYIP" #xA44D)
- ("YI SYLLABLE NYIET" #xA44E)
- ("YI SYLLABLE NYIEX" #xA44F)
- ("YI SYLLABLE NYIE" #xA450)
- ("YI SYLLABLE NYIEP" #xA451)
- ("YI SYLLABLE NYUOX" #xA452)
- ("YI SYLLABLE NYUO" #xA453)
- ("YI SYLLABLE NYUOP" #xA454)
- ("YI SYLLABLE NYOT" #xA455)
- ("YI SYLLABLE NYOX" #xA456)
- ("YI SYLLABLE NYO" #xA457)
- ("YI SYLLABLE NYOP" #xA458)
- ("YI SYLLABLE NYUT" #xA459)
- ("YI SYLLABLE NYUX" #xA45A)
- ("YI SYLLABLE NYU" #xA45B)
- ("YI SYLLABLE NYUP" #xA45C)
- ("YI SYLLABLE XIT" #xA45D)
- ("YI SYLLABLE XIX" #xA45E)
- ("YI SYLLABLE XI" #xA45F)
- ("YI SYLLABLE XIP" #xA460)
- ("YI SYLLABLE XIET" #xA461)
- ("YI SYLLABLE XIEX" #xA462)
- ("YI SYLLABLE XIE" #xA463)
- ("YI SYLLABLE XIEP" #xA464)
- ("YI SYLLABLE XUOX" #xA465)
- ("YI SYLLABLE XUO" #xA466)
- ("YI SYLLABLE XOT" #xA467)
- ("YI SYLLABLE XOX" #xA468)
- ("YI SYLLABLE XO" #xA469)
- ("YI SYLLABLE XOP" #xA46A)
- ("YI SYLLABLE XYT" #xA46B)
- ("YI SYLLABLE XYX" #xA46C)
- ("YI SYLLABLE XY" #xA46D)
- ("YI SYLLABLE XYP" #xA46E)
- ("YI SYLLABLE XYRX" #xA46F)
- ("YI SYLLABLE XYR" #xA470)
- ("YI SYLLABLE YIT" #xA471)
- ("YI SYLLABLE YIX" #xA472)
- ("YI SYLLABLE YI" #xA473)
- ("YI SYLLABLE YIP" #xA474)
- ("YI SYLLABLE YIET" #xA475)
- ("YI SYLLABLE YIEX" #xA476)
- ("YI SYLLABLE YIE" #xA477)
- ("YI SYLLABLE YIEP" #xA478)
- ("YI SYLLABLE YUOT" #xA479)
- ("YI SYLLABLE YUOX" #xA47A)
- ("YI SYLLABLE YUO" #xA47B)
- ("YI SYLLABLE YUOP" #xA47C)
- ("YI SYLLABLE YOT" #xA47D)
- ("YI SYLLABLE YOX" #xA47E)
- ("YI SYLLABLE YO" #xA47F)
- ("YI SYLLABLE YOP" #xA480)
- ("YI SYLLABLE YUT" #xA481)
- ("YI SYLLABLE YUX" #xA482)
- ("YI SYLLABLE YU" #xA483)
- ("YI SYLLABLE YUP" #xA484)
- ("YI SYLLABLE YURX" #xA485)
- ("YI SYLLABLE YUR" #xA486)
- ("YI SYLLABLE YYT" #xA487)
- ("YI SYLLABLE YYX" #xA488)
- ("YI SYLLABLE YY" #xA489)
- ("YI SYLLABLE YYP" #xA48A)
- ("YI SYLLABLE YYRX" #xA48B)
- ("YI SYLLABLE YYR" #xA48C)
- ))
-
diff --git a/etc/nxml/0A490-0A4CF.el b/etc/nxml/0A490-0A4CF.el
deleted file mode 100644
index 3052371a12..0000000000
--- a/etc/nxml/0A490-0A4CF.el
+++ /dev/null
@@ -1,58 +0,0 @@
-(nxml-define-char-name-set 'yi-radicals
- '(("YI RADICAL QOT" #xA490)
- ("YI RADICAL LI" #xA491)
- ("YI RADICAL KIT" #xA492)
- ("YI RADICAL NYIP" #xA493)
- ("YI RADICAL CYP" #xA494)
- ("YI RADICAL SSI" #xA495)
- ("YI RADICAL GGOP" #xA496)
- ("YI RADICAL GEP" #xA497)
- ("YI RADICAL MI" #xA498)
- ("YI RADICAL HXIT" #xA499)
- ("YI RADICAL LYR" #xA49A)
- ("YI RADICAL BBUT" #xA49B)
- ("YI RADICAL MOP" #xA49C)
- ("YI RADICAL YO" #xA49D)
- ("YI RADICAL PUT" #xA49E)
- ("YI RADICAL HXUO" #xA49F)
- ("YI RADICAL TAT" #xA4A0)
- ("YI RADICAL GA" #xA4A1)
- ("YI RADICAL ZUP" #xA4A2)
- ("YI RADICAL CYT" #xA4A3)
- ("YI RADICAL DDUR" #xA4A4)
- ("YI RADICAL BUR" #xA4A5)
- ("YI RADICAL GGUO" #xA4A6)
- ("YI RADICAL NYOP" #xA4A7)
- ("YI RADICAL TU" #xA4A8)
- ("YI RADICAL OP" #xA4A9)
- ("YI RADICAL JJUT" #xA4AA)
- ("YI RADICAL ZOT" #xA4AB)
- ("YI RADICAL PYT" #xA4AC)
- ("YI RADICAL HMO" #xA4AD)
- ("YI RADICAL YIT" #xA4AE)
- ("YI RADICAL VUR" #xA4AF)
- ("YI RADICAL SHY" #xA4B0)
- ("YI RADICAL VEP" #xA4B1)
- ("YI RADICAL ZA" #xA4B2)
- ("YI RADICAL JO" #xA4B3)
- ("YI RADICAL NZUP" #xA4B4)
- ("YI RADICAL JJY" #xA4B5)
- ("YI RADICAL GOT" #xA4B6)
- ("YI RADICAL JJIE" #xA4B7)
- ("YI RADICAL WO" #xA4B8)
- ("YI RADICAL DU" #xA4B9)
- ("YI RADICAL SHUR" #xA4BA)
- ("YI RADICAL LIE" #xA4BB)
- ("YI RADICAL CY" #xA4BC)
- ("YI RADICAL CUOP" #xA4BD)
- ("YI RADICAL CIP" #xA4BE)
- ("YI RADICAL HXOP" #xA4BF)
- ("YI RADICAL SHAT" #xA4C0)
- ("YI RADICAL ZUR" #xA4C1)
- ("YI RADICAL SHOP" #xA4C2)
- ("YI RADICAL CHE" #xA4C3)
- ("YI RADICAL ZZIET" #xA4C4)
- ("YI RADICAL NBIE" #xA4C5)
- ("YI RADICAL KE" #xA4C6)
- ))
-
diff --git a/etc/nxml/0FB00-0FB4F.el b/etc/nxml/0FB00-0FB4F.el
deleted file mode 100644
index 20b19e19ff..0000000000
--- a/etc/nxml/0FB00-0FB4F.el
+++ /dev/null
@@ -1,61 +0,0 @@
-(nxml-define-char-name-set 'alphabetic-presentation-forms
- '(("LATIN SMALL LIGATURE FF" #xFB00)
- ("LATIN SMALL LIGATURE FI" #xFB01)
- ("LATIN SMALL LIGATURE FL" #xFB02)
- ("LATIN SMALL LIGATURE FFI" #xFB03)
- ("LATIN SMALL LIGATURE FFL" #xFB04)
- ("LATIN SMALL LIGATURE LONG S T" #xFB05)
- ("LATIN SMALL LIGATURE ST" #xFB06)
- ("ARMENIAN SMALL LIGATURE MEN NOW" #xFB13)
- ("ARMENIAN SMALL LIGATURE MEN ECH" #xFB14)
- ("ARMENIAN SMALL LIGATURE MEN INI" #xFB15)
- ("ARMENIAN SMALL LIGATURE VEW NOW" #xFB16)
- ("ARMENIAN SMALL LIGATURE MEN XEH" #xFB17)
- ("HEBREW LETTER YOD WITH HIRIQ" #xFB1D)
- ("HEBREW POINT JUDEO-SPANISH VARIKA" #xFB1E)
- ("HEBREW LIGATURE YIDDISH YOD YOD PATAH" #xFB1F)
- ("HEBREW LETTER ALTERNATIVE AYIN" #xFB20)
- ("HEBREW LETTER WIDE ALEF" #xFB21)
- ("HEBREW LETTER WIDE DALET" #xFB22)
- ("HEBREW LETTER WIDE HE" #xFB23)
- ("HEBREW LETTER WIDE KAF" #xFB24)
- ("HEBREW LETTER WIDE LAMED" #xFB25)
- ("HEBREW LETTER WIDE FINAL MEM" #xFB26)
- ("HEBREW LETTER WIDE RESH" #xFB27)
- ("HEBREW LETTER WIDE TAV" #xFB28)
- ("HEBREW LETTER ALTERNATIVE PLUS SIGN" #xFB29)
- ("HEBREW LETTER SHIN WITH SHIN DOT" #xFB2A)
- ("HEBREW LETTER SHIN WITH SIN DOT" #xFB2B)
- ("HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT" #xFB2C)
- ("HEBREW LETTER SHIN WITH DAGESH AND SIN DOT" #xFB2D)
- ("HEBREW LETTER ALEF WITH PATAH" #xFB2E)
- ("HEBREW LETTER ALEF WITH QAMATS" #xFB2F)
- ("HEBREW LETTER ALEF WITH MAPIQ" #xFB30)
- ("HEBREW LETTER BET WITH DAGESH" #xFB31)
- ("HEBREW LETTER GIMEL WITH DAGESH" #xFB32)
- ("HEBREW LETTER DALET WITH DAGESH" #xFB33)
- ("HEBREW LETTER HE WITH MAPIQ" #xFB34)
- ("HEBREW LETTER VAV WITH DAGESH" #xFB35)
- ("HEBREW LETTER ZAYIN WITH DAGESH" #xFB36)
- ("HEBREW LETTER TET WITH DAGESH" #xFB38)
- ("HEBREW LETTER YOD WITH DAGESH" #xFB39)
- ("HEBREW LETTER FINAL KAF WITH DAGESH" #xFB3A)
- ("HEBREW LETTER KAF WITH DAGESH" #xFB3B)
- ("HEBREW LETTER LAMED WITH DAGESH" #xFB3C)
- ("HEBREW LETTER MEM WITH DAGESH" #xFB3E)
- ("HEBREW LETTER NUN WITH DAGESH" #xFB40)
- ("HEBREW LETTER SAMEKH WITH DAGESH" #xFB41)
- ("HEBREW LETTER FINAL PE WITH DAGESH" #xFB43)
- ("HEBREW LETTER PE WITH DAGESH" #xFB44)
- ("HEBREW LETTER TSADI WITH DAGESH" #xFB46)
- ("HEBREW LETTER QOF WITH DAGESH" #xFB47)
- ("HEBREW LETTER RESH WITH DAGESH" #xFB48)
- ("HEBREW LETTER SHIN WITH DAGESH" #xFB49)
- ("HEBREW LETTER TAV WITH DAGESH" #xFB4A)
- ("HEBREW LETTER VAV WITH HOLAM" #xFB4B)
- ("HEBREW LETTER BET WITH RAFE" #xFB4C)
- ("HEBREW LETTER KAF WITH RAFE" #xFB4D)
- ("HEBREW LETTER PE WITH RAFE" #xFB4E)
- ("HEBREW LIGATURE ALEF LAMED" #xFB4F)
- ))
-
diff --git a/etc/nxml/0FB50-0FDFF.el b/etc/nxml/0FB50-0FDFF.el
deleted file mode 100644
index 9feea5e918..0000000000
--- a/etc/nxml/0FB50-0FDFF.el
+++ /dev/null
@@ -1,597 +0,0 @@
-(nxml-define-char-name-set 'arabic-presentation-forms-a
- '(("ARABIC LETTER ALEF WASLA ISOLATED FORM" #xFB50)
- ("ARABIC LETTER ALEF WASLA FINAL FORM" #xFB51)
- ("ARABIC LETTER BEEH ISOLATED FORM" #xFB52)
- ("ARABIC LETTER BEEH FINAL FORM" #xFB53)
- ("ARABIC LETTER BEEH INITIAL FORM" #xFB54)
- ("ARABIC LETTER BEEH MEDIAL FORM" #xFB55)
- ("ARABIC LETTER PEH ISOLATED FORM" #xFB56)
- ("ARABIC LETTER PEH FINAL FORM" #xFB57)
- ("ARABIC LETTER PEH INITIAL FORM" #xFB58)
- ("ARABIC LETTER PEH MEDIAL FORM" #xFB59)
- ("ARABIC LETTER BEHEH ISOLATED FORM" #xFB5A)
- ("ARABIC LETTER BEHEH FINAL FORM" #xFB5B)
- ("ARABIC LETTER BEHEH INITIAL FORM" #xFB5C)
- ("ARABIC LETTER BEHEH MEDIAL FORM" #xFB5D)
- ("ARABIC LETTER TTEHEH ISOLATED FORM" #xFB5E)
- ("ARABIC LETTER TTEHEH FINAL FORM" #xFB5F)
- ("ARABIC LETTER TTEHEH INITIAL FORM" #xFB60)
- ("ARABIC LETTER TTEHEH MEDIAL FORM" #xFB61)
- ("ARABIC LETTER TEHEH ISOLATED FORM" #xFB62)
- ("ARABIC LETTER TEHEH FINAL FORM" #xFB63)
- ("ARABIC LETTER TEHEH INITIAL FORM" #xFB64)
- ("ARABIC LETTER TEHEH MEDIAL FORM" #xFB65)
- ("ARABIC LETTER TTEH ISOLATED FORM" #xFB66)
- ("ARABIC LETTER TTEH FINAL FORM" #xFB67)
- ("ARABIC LETTER TTEH INITIAL FORM" #xFB68)
- ("ARABIC LETTER TTEH MEDIAL FORM" #xFB69)
- ("ARABIC LETTER VEH ISOLATED FORM" #xFB6A)
- ("ARABIC LETTER VEH FINAL FORM" #xFB6B)
- ("ARABIC LETTER VEH INITIAL FORM" #xFB6C)
- ("ARABIC LETTER VEH MEDIAL FORM" #xFB6D)
- ("ARABIC LETTER PEHEH ISOLATED FORM" #xFB6E)
- ("ARABIC LETTER PEHEH FINAL FORM" #xFB6F)
- ("ARABIC LETTER PEHEH INITIAL FORM" #xFB70)
- ("ARABIC LETTER PEHEH MEDIAL FORM" #xFB71)
- ("ARABIC LETTER DYEH ISOLATED FORM" #xFB72)
- ("ARABIC LETTER DYEH FINAL FORM" #xFB73)
- ("ARABIC LETTER DYEH INITIAL FORM" #xFB74)
- ("ARABIC LETTER DYEH MEDIAL FORM" #xFB75)
- ("ARABIC LETTER NYEH ISOLATED FORM" #xFB76)
- ("ARABIC LETTER NYEH FINAL FORM" #xFB77)
- ("ARABIC LETTER NYEH INITIAL FORM" #xFB78)
- ("ARABIC LETTER NYEH MEDIAL FORM" #xFB79)
- ("ARABIC LETTER TCHEH ISOLATED FORM" #xFB7A)
- ("ARABIC LETTER TCHEH FINAL FORM" #xFB7B)
- ("ARABIC LETTER TCHEH INITIAL FORM" #xFB7C)
- ("ARABIC LETTER TCHEH MEDIAL FORM" #xFB7D)
- ("ARABIC LETTER TCHEHEH ISOLATED FORM" #xFB7E)
- ("ARABIC LETTER TCHEHEH FINAL FORM" #xFB7F)
- ("ARABIC LETTER TCHEHEH INITIAL FORM" #xFB80)
- ("ARABIC LETTER TCHEHEH MEDIAL FORM" #xFB81)
- ("ARABIC LETTER DDAHAL ISOLATED FORM" #xFB82)
- ("ARABIC LETTER DDAHAL FINAL FORM" #xFB83)
- ("ARABIC LETTER DAHAL ISOLATED FORM" #xFB84)
- ("ARABIC LETTER DAHAL FINAL FORM" #xFB85)
- ("ARABIC LETTER DUL ISOLATED FORM" #xFB86)
- ("ARABIC LETTER DUL FINAL FORM" #xFB87)
- ("ARABIC LETTER DDAL ISOLATED FORM" #xFB88)
- ("ARABIC LETTER DDAL FINAL FORM" #xFB89)
- ("ARABIC LETTER JEH ISOLATED FORM" #xFB8A)
- ("ARABIC LETTER JEH FINAL FORM" #xFB8B)
- ("ARABIC LETTER RREH ISOLATED FORM" #xFB8C)
- ("ARABIC LETTER RREH FINAL FORM" #xFB8D)
- ("ARABIC LETTER KEHEH ISOLATED FORM" #xFB8E)
- ("ARABIC LETTER KEHEH FINAL FORM" #xFB8F)
- ("ARABIC LETTER KEHEH INITIAL FORM" #xFB90)
- ("ARABIC LETTER KEHEH MEDIAL FORM" #xFB91)
- ("ARABIC LETTER GAF ISOLATED FORM" #xFB92)
- ("ARABIC LETTER GAF FINAL FORM" #xFB93)
- ("ARABIC LETTER GAF INITIAL FORM" #xFB94)
- ("ARABIC LETTER GAF MEDIAL FORM" #xFB95)
- ("ARABIC LETTER GUEH ISOLATED FORM" #xFB96)
- ("ARABIC LETTER GUEH FINAL FORM" #xFB97)
- ("ARABIC LETTER GUEH INITIAL FORM" #xFB98)
- ("ARABIC LETTER GUEH MEDIAL FORM" #xFB99)
- ("ARABIC LETTER NGOEH ISOLATED FORM" #xFB9A)
- ("ARABIC LETTER NGOEH FINAL FORM" #xFB9B)
- ("ARABIC LETTER NGOEH INITIAL FORM" #xFB9C)
- ("ARABIC LETTER NGOEH MEDIAL FORM" #xFB9D)
- ("ARABIC LETTER NOON GHUNNA ISOLATED FORM" #xFB9E)
- ("ARABIC LETTER NOON GHUNNA FINAL FORM" #xFB9F)
- ("ARABIC LETTER RNOON ISOLATED FORM" #xFBA0)
- ("ARABIC LETTER RNOON FINAL FORM" #xFBA1)
- ("ARABIC LETTER RNOON INITIAL FORM" #xFBA2)
- ("ARABIC LETTER RNOON MEDIAL FORM" #xFBA3)
- ("ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM" #xFBA4)
- ("ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM" #xFBA5)
- ("ARABIC LETTER HEH GOAL ISOLATED FORM" #xFBA6)
- ("ARABIC LETTER HEH GOAL FINAL FORM" #xFBA7)
- ("ARABIC LETTER HEH GOAL INITIAL FORM" #xFBA8)
- ("ARABIC LETTER HEH GOAL MEDIAL FORM" #xFBA9)
- ("ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM" #xFBAA)
- ("ARABIC LETTER HEH DOACHASHMEE FINAL FORM" #xFBAB)
- ("ARABIC LETTER HEH DOACHASHMEE INITIAL FORM" #xFBAC)
- ("ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM" #xFBAD)
- ("ARABIC LETTER YEH BARREE ISOLATED FORM" #xFBAE)
- ("ARABIC LETTER YEH BARREE FINAL FORM" #xFBAF)
- ("ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM" #xFBB0)
- ("ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM" #xFBB1)
- ("ARABIC LETTER NG ISOLATED FORM" #xFBD3)
- ("ARABIC LETTER NG FINAL FORM" #xFBD4)
- ("ARABIC LETTER NG INITIAL FORM" #xFBD5)
- ("ARABIC LETTER NG MEDIAL FORM" #xFBD6)
- ("ARABIC LETTER U ISOLATED FORM" #xFBD7)
- ("ARABIC LETTER U FINAL FORM" #xFBD8)
- ("ARABIC LETTER OE ISOLATED FORM" #xFBD9)
- ("ARABIC LETTER OE FINAL FORM" #xFBDA)
- ("ARABIC LETTER YU ISOLATED FORM" #xFBDB)
- ("ARABIC LETTER YU FINAL FORM" #xFBDC)
- ("ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM" #xFBDD)
- ("ARABIC LETTER VE ISOLATED FORM" #xFBDE)
- ("ARABIC LETTER VE FINAL FORM" #xFBDF)
- ("ARABIC LETTER KIRGHIZ OE ISOLATED FORM" #xFBE0)
- ("ARABIC LETTER KIRGHIZ OE FINAL FORM" #xFBE1)
- ("ARABIC LETTER KIRGHIZ YU ISOLATED FORM" #xFBE2)
- ("ARABIC LETTER KIRGHIZ YU FINAL FORM" #xFBE3)
- ("ARABIC LETTER E ISOLATED FORM" #xFBE4)
- ("ARABIC LETTER E FINAL FORM" #xFBE5)
- ("ARABIC LETTER E INITIAL FORM" #xFBE6)
- ("ARABIC LETTER E MEDIAL FORM" #xFBE7)
- ("ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM" #xFBE8)
- ("ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM" #xFBE9)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM" #xFBEA)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM" #xFBEB)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM" #xFBEC)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM" #xFBED)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM" #xFBEE)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM" #xFBEF)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM" #xFBF0)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM" #xFBF1)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM" #xFBF2)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM" #xFBF3)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM" #xFBF4)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM" #xFBF5)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM" #xFBF6)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM" #xFBF7)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM" #xFBF8)
- ("ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM" #xFBF9)
- ("ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM" #xFBFA)
- ("ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM" #xFBFB)
- ("ARABIC LETTER FARSI YEH ISOLATED FORM" #xFBFC)
- ("ARABIC LETTER FARSI YEH FINAL FORM" #xFBFD)
- ("ARABIC LETTER FARSI YEH INITIAL FORM" #xFBFE)
- ("ARABIC LETTER FARSI YEH MEDIAL FORM" #xFBFF)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM" #xFC00)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM" #xFC01)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM" #xFC02)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM" #xFC03)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM" #xFC04)
- ("ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM" #xFC05)
- ("ARABIC LIGATURE BEH WITH HAH ISOLATED FORM" #xFC06)
- ("ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM" #xFC07)
- ("ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM" #xFC08)
- ("ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM" #xFC09)
- ("ARABIC LIGATURE BEH WITH YEH ISOLATED FORM" #xFC0A)
- ("ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM" #xFC0B)
- ("ARABIC LIGATURE TEH WITH HAH ISOLATED FORM" #xFC0C)
- ("ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM" #xFC0D)
- ("ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM" #xFC0E)
- ("ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM" #xFC0F)
- ("ARABIC LIGATURE TEH WITH YEH ISOLATED FORM" #xFC10)
- ("ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM" #xFC11)
- ("ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM" #xFC12)
- ("ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM" #xFC13)
- ("ARABIC LIGATURE THEH WITH YEH ISOLATED FORM" #xFC14)
- ("ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM" #xFC15)
- ("ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM" #xFC16)
- ("ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM" #xFC17)
- ("ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM" #xFC18)
- ("ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM" #xFC19)
- ("ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM" #xFC1A)
- ("ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM" #xFC1B)
- ("ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM" #xFC1C)
- ("ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM" #xFC1D)
- ("ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM" #xFC1E)
- ("ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM" #xFC1F)
- ("ARABIC LIGATURE SAD WITH HAH ISOLATED FORM" #xFC20)
- ("ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM" #xFC21)
- ("ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM" #xFC22)
- ("ARABIC LIGATURE DAD WITH HAH ISOLATED FORM" #xFC23)
- ("ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM" #xFC24)
- ("ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM" #xFC25)
- ("ARABIC LIGATURE TAH WITH HAH ISOLATED FORM" #xFC26)
- ("ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM" #xFC27)
- ("ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM" #xFC28)
- ("ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM" #xFC29)
- ("ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM" #xFC2A)
- ("ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM" #xFC2B)
- ("ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM" #xFC2C)
- ("ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM" #xFC2D)
- ("ARABIC LIGATURE FEH WITH HAH ISOLATED FORM" #xFC2E)
- ("ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM" #xFC2F)
- ("ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM" #xFC30)
- ("ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM" #xFC31)
- ("ARABIC LIGATURE FEH WITH YEH ISOLATED FORM" #xFC32)
- ("ARABIC LIGATURE QAF WITH HAH ISOLATED FORM" #xFC33)
- ("ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM" #xFC34)
- ("ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM" #xFC35)
- ("ARABIC LIGATURE QAF WITH YEH ISOLATED FORM" #xFC36)
- ("ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM" #xFC37)
- ("ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM" #xFC38)
- ("ARABIC LIGATURE KAF WITH HAH ISOLATED FORM" #xFC39)
- ("ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM" #xFC3A)
- ("ARABIC LIGATURE KAF WITH LAM ISOLATED FORM" #xFC3B)
- ("ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM" #xFC3C)
- ("ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM" #xFC3D)
- ("ARABIC LIGATURE KAF WITH YEH ISOLATED FORM" #xFC3E)
- ("ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM" #xFC3F)
- ("ARABIC LIGATURE LAM WITH HAH ISOLATED FORM" #xFC40)
- ("ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM" #xFC41)
- ("ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM" #xFC42)
- ("ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM" #xFC43)
- ("ARABIC LIGATURE LAM WITH YEH ISOLATED FORM" #xFC44)
- ("ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM" #xFC45)
- ("ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM" #xFC46)
- ("ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM" #xFC47)
- ("ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM" #xFC48)
- ("ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM" #xFC49)
- ("ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM" #xFC4A)
- ("ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM" #xFC4B)
- ("ARABIC LIGATURE NOON WITH HAH ISOLATED FORM" #xFC4C)
- ("ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM" #xFC4D)
- ("ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM" #xFC4E)
- ("ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM" #xFC4F)
- ("ARABIC LIGATURE NOON WITH YEH ISOLATED FORM" #xFC50)
- ("ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM" #xFC51)
- ("ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM" #xFC52)
- ("ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM" #xFC53)
- ("ARABIC LIGATURE HEH WITH YEH ISOLATED FORM" #xFC54)
- ("ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM" #xFC55)
- ("ARABIC LIGATURE YEH WITH HAH ISOLATED FORM" #xFC56)
- ("ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM" #xFC57)
- ("ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM" #xFC58)
- ("ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM" #xFC59)
- ("ARABIC LIGATURE YEH WITH YEH ISOLATED FORM" #xFC5A)
- ("ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM" #xFC5B)
- ("ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM" #xFC5C)
- ("ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM" #xFC5D)
- ("ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM" #xFC5E)
- ("ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM" #xFC5F)
- ("ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM" #xFC60)
- ("ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM" #xFC61)
- ("ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM" #xFC62)
- ("ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM" #xFC63)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM" #xFC64)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM" #xFC65)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM" #xFC66)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM" #xFC67)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM" #xFC68)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM" #xFC69)
- ("ARABIC LIGATURE BEH WITH REH FINAL FORM" #xFC6A)
- ("ARABIC LIGATURE BEH WITH ZAIN FINAL FORM" #xFC6B)
- ("ARABIC LIGATURE BEH WITH MEEM FINAL FORM" #xFC6C)
- ("ARABIC LIGATURE BEH WITH NOON FINAL FORM" #xFC6D)
- ("ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM" #xFC6E)
- ("ARABIC LIGATURE BEH WITH YEH FINAL FORM" #xFC6F)
- ("ARABIC LIGATURE TEH WITH REH FINAL FORM" #xFC70)
- ("ARABIC LIGATURE TEH WITH ZAIN FINAL FORM" #xFC71)
- ("ARABIC LIGATURE TEH WITH MEEM FINAL FORM" #xFC72)
- ("ARABIC LIGATURE TEH WITH NOON FINAL FORM" #xFC73)
- ("ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM" #xFC74)
- ("ARABIC LIGATURE TEH WITH YEH FINAL FORM" #xFC75)
- ("ARABIC LIGATURE THEH WITH REH FINAL FORM" #xFC76)
- ("ARABIC LIGATURE THEH WITH ZAIN FINAL FORM" #xFC77)
- ("ARABIC LIGATURE THEH WITH MEEM FINAL FORM" #xFC78)
- ("ARABIC LIGATURE THEH WITH NOON FINAL FORM" #xFC79)
- ("ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM" #xFC7A)
- ("ARABIC LIGATURE THEH WITH YEH FINAL FORM" #xFC7B)
- ("ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM" #xFC7C)
- ("ARABIC LIGATURE FEH WITH YEH FINAL FORM" #xFC7D)
- ("ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM" #xFC7E)
- ("ARABIC LIGATURE QAF WITH YEH FINAL FORM" #xFC7F)
- ("ARABIC LIGATURE KAF WITH ALEF FINAL FORM" #xFC80)
- ("ARABIC LIGATURE KAF WITH LAM FINAL FORM" #xFC81)
- ("ARABIC LIGATURE KAF WITH MEEM FINAL FORM" #xFC82)
- ("ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM" #xFC83)
- ("ARABIC LIGATURE KAF WITH YEH FINAL FORM" #xFC84)
- ("ARABIC LIGATURE LAM WITH MEEM FINAL FORM" #xFC85)
- ("ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM" #xFC86)
- ("ARABIC LIGATURE LAM WITH YEH FINAL FORM" #xFC87)
- ("ARABIC LIGATURE MEEM WITH ALEF FINAL FORM" #xFC88)
- ("ARABIC LIGATURE MEEM WITH MEEM FINAL FORM" #xFC89)
- ("ARABIC LIGATURE NOON WITH REH FINAL FORM" #xFC8A)
- ("ARABIC LIGATURE NOON WITH ZAIN FINAL FORM" #xFC8B)
- ("ARABIC LIGATURE NOON WITH MEEM FINAL FORM" #xFC8C)
- ("ARABIC LIGATURE NOON WITH NOON FINAL FORM" #xFC8D)
- ("ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM" #xFC8E)
- ("ARABIC LIGATURE NOON WITH YEH FINAL FORM" #xFC8F)
- ("ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM" #xFC90)
- ("ARABIC LIGATURE YEH WITH REH FINAL FORM" #xFC91)
- ("ARABIC LIGATURE YEH WITH ZAIN FINAL FORM" #xFC92)
- ("ARABIC LIGATURE YEH WITH MEEM FINAL FORM" #xFC93)
- ("ARABIC LIGATURE YEH WITH NOON FINAL FORM" #xFC94)
- ("ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM" #xFC95)
- ("ARABIC LIGATURE YEH WITH YEH FINAL FORM" #xFC96)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM" #xFC97)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM" #xFC98)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM" #xFC99)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM" #xFC9A)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM" #xFC9B)
- ("ARABIC LIGATURE BEH WITH JEEM INITIAL FORM" #xFC9C)
- ("ARABIC LIGATURE BEH WITH HAH INITIAL FORM" #xFC9D)
- ("ARABIC LIGATURE BEH WITH KHAH INITIAL FORM" #xFC9E)
- ("ARABIC LIGATURE BEH WITH MEEM INITIAL FORM" #xFC9F)
- ("ARABIC LIGATURE BEH WITH HEH INITIAL FORM" #xFCA0)
- ("ARABIC LIGATURE TEH WITH JEEM INITIAL FORM" #xFCA1)
- ("ARABIC LIGATURE TEH WITH HAH INITIAL FORM" #xFCA2)
- ("ARABIC LIGATURE TEH WITH KHAH INITIAL FORM" #xFCA3)
- ("ARABIC LIGATURE TEH WITH MEEM INITIAL FORM" #xFCA4)
- ("ARABIC LIGATURE TEH WITH HEH INITIAL FORM" #xFCA5)
- ("ARABIC LIGATURE THEH WITH MEEM INITIAL FORM" #xFCA6)
- ("ARABIC LIGATURE JEEM WITH HAH INITIAL FORM" #xFCA7)
- ("ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM" #xFCA8)
- ("ARABIC LIGATURE HAH WITH JEEM INITIAL FORM" #xFCA9)
- ("ARABIC LIGATURE HAH WITH MEEM INITIAL FORM" #xFCAA)
- ("ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM" #xFCAB)
- ("ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM" #xFCAC)
- ("ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM" #xFCAD)
- ("ARABIC LIGATURE SEEN WITH HAH INITIAL FORM" #xFCAE)
- ("ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM" #xFCAF)
- ("ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM" #xFCB0)
- ("ARABIC LIGATURE SAD WITH HAH INITIAL FORM" #xFCB1)
- ("ARABIC LIGATURE SAD WITH KHAH INITIAL FORM" #xFCB2)
- ("ARABIC LIGATURE SAD WITH MEEM INITIAL FORM" #xFCB3)
- ("ARABIC LIGATURE DAD WITH JEEM INITIAL FORM" #xFCB4)
- ("ARABIC LIGATURE DAD WITH HAH INITIAL FORM" #xFCB5)
- ("ARABIC LIGATURE DAD WITH KHAH INITIAL FORM" #xFCB6)
- ("ARABIC LIGATURE DAD WITH MEEM INITIAL FORM" #xFCB7)
- ("ARABIC LIGATURE TAH WITH HAH INITIAL FORM" #xFCB8)
- ("ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM" #xFCB9)
- ("ARABIC LIGATURE AIN WITH JEEM INITIAL FORM" #xFCBA)
- ("ARABIC LIGATURE AIN WITH MEEM INITIAL FORM" #xFCBB)
- ("ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM" #xFCBC)
- ("ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM" #xFCBD)
- ("ARABIC LIGATURE FEH WITH JEEM INITIAL FORM" #xFCBE)
- ("ARABIC LIGATURE FEH WITH HAH INITIAL FORM" #xFCBF)
- ("ARABIC LIGATURE FEH WITH KHAH INITIAL FORM" #xFCC0)
- ("ARABIC LIGATURE FEH WITH MEEM INITIAL FORM" #xFCC1)
- ("ARABIC LIGATURE QAF WITH HAH INITIAL FORM" #xFCC2)
- ("ARABIC LIGATURE QAF WITH MEEM INITIAL FORM" #xFCC3)
- ("ARABIC LIGATURE KAF WITH JEEM INITIAL FORM" #xFCC4)
- ("ARABIC LIGATURE KAF WITH HAH INITIAL FORM" #xFCC5)
- ("ARABIC LIGATURE KAF WITH KHAH INITIAL FORM" #xFCC6)
- ("ARABIC LIGATURE KAF WITH LAM INITIAL FORM" #xFCC7)
- ("ARABIC LIGATURE KAF WITH MEEM INITIAL FORM" #xFCC8)
- ("ARABIC LIGATURE LAM WITH JEEM INITIAL FORM" #xFCC9)
- ("ARABIC LIGATURE LAM WITH HAH INITIAL FORM" #xFCCA)
- ("ARABIC LIGATURE LAM WITH KHAH INITIAL FORM" #xFCCB)
- ("ARABIC LIGATURE LAM WITH MEEM INITIAL FORM" #xFCCC)
- ("ARABIC LIGATURE LAM WITH HEH INITIAL FORM" #xFCCD)
- ("ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM" #xFCCE)
- ("ARABIC LIGATURE MEEM WITH HAH INITIAL FORM" #xFCCF)
- ("ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM" #xFCD0)
- ("ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM" #xFCD1)
- ("ARABIC LIGATURE NOON WITH JEEM INITIAL FORM" #xFCD2)
- ("ARABIC LIGATURE NOON WITH HAH INITIAL FORM" #xFCD3)
- ("ARABIC LIGATURE NOON WITH KHAH INITIAL FORM" #xFCD4)
- ("ARABIC LIGATURE NOON WITH MEEM INITIAL FORM" #xFCD5)
- ("ARABIC LIGATURE NOON WITH HEH INITIAL FORM" #xFCD6)
- ("ARABIC LIGATURE HEH WITH JEEM INITIAL FORM" #xFCD7)
- ("ARABIC LIGATURE HEH WITH MEEM INITIAL FORM" #xFCD8)
- ("ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM" #xFCD9)
- ("ARABIC LIGATURE YEH WITH JEEM INITIAL FORM" #xFCDA)
- ("ARABIC LIGATURE YEH WITH HAH INITIAL FORM" #xFCDB)
- ("ARABIC LIGATURE YEH WITH KHAH INITIAL FORM" #xFCDC)
- ("ARABIC LIGATURE YEH WITH MEEM INITIAL FORM" #xFCDD)
- ("ARABIC LIGATURE YEH WITH HEH INITIAL FORM" #xFCDE)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM" #xFCDF)
- ("ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM" #xFCE0)
- ("ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM" #xFCE1)
- ("ARABIC LIGATURE BEH WITH HEH MEDIAL FORM" #xFCE2)
- ("ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM" #xFCE3)
- ("ARABIC LIGATURE TEH WITH HEH MEDIAL FORM" #xFCE4)
- ("ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM" #xFCE5)
- ("ARABIC LIGATURE THEH WITH HEH MEDIAL FORM" #xFCE6)
- ("ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM" #xFCE7)
- ("ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM" #xFCE8)
- ("ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM" #xFCE9)
- ("ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM" #xFCEA)
- ("ARABIC LIGATURE KAF WITH LAM MEDIAL FORM" #xFCEB)
- ("ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM" #xFCEC)
- ("ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM" #xFCED)
- ("ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM" #xFCEE)
- ("ARABIC LIGATURE NOON WITH HEH MEDIAL FORM" #xFCEF)
- ("ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM" #xFCF0)
- ("ARABIC LIGATURE YEH WITH HEH MEDIAL FORM" #xFCF1)
- ("ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM" #xFCF2)
- ("ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM" #xFCF3)
- ("ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM" #xFCF4)
- ("ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM" #xFCF5)
- ("ARABIC LIGATURE TAH WITH YEH ISOLATED FORM" #xFCF6)
- ("ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM" #xFCF7)
- ("ARABIC LIGATURE AIN WITH YEH ISOLATED FORM" #xFCF8)
- ("ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM" #xFCF9)
- ("ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM" #xFCFA)
- ("ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM" #xFCFB)
- ("ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM" #xFCFC)
- ("ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM" #xFCFD)
- ("ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM" #xFCFE)
- ("ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM" #xFCFF)
- ("ARABIC LIGATURE HAH WITH YEH ISOLATED FORM" #xFD00)
- ("ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM" #xFD01)
- ("ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM" #xFD02)
- ("ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM" #xFD03)
- ("ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM" #xFD04)
- ("ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM" #xFD05)
- ("ARABIC LIGATURE SAD WITH YEH ISOLATED FORM" #xFD06)
- ("ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM" #xFD07)
- ("ARABIC LIGATURE DAD WITH YEH ISOLATED FORM" #xFD08)
- ("ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM" #xFD09)
- ("ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM" #xFD0A)
- ("ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM" #xFD0B)
- ("ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM" #xFD0C)
- ("ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM" #xFD0D)
- ("ARABIC LIGATURE SEEN WITH REH ISOLATED FORM" #xFD0E)
- ("ARABIC LIGATURE SAD WITH REH ISOLATED FORM" #xFD0F)
- ("ARABIC LIGATURE DAD WITH REH ISOLATED FORM" #xFD10)
- ("ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM" #xFD11)
- ("ARABIC LIGATURE TAH WITH YEH FINAL FORM" #xFD12)
- ("ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM" #xFD13)
- ("ARABIC LIGATURE AIN WITH YEH FINAL FORM" #xFD14)
- ("ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM" #xFD15)
- ("ARABIC LIGATURE GHAIN WITH YEH FINAL FORM" #xFD16)
- ("ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM" #xFD17)
- ("ARABIC LIGATURE SEEN WITH YEH FINAL FORM" #xFD18)
- ("ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM" #xFD19)
- ("ARABIC LIGATURE SHEEN WITH YEH FINAL FORM" #xFD1A)
- ("ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM" #xFD1B)
- ("ARABIC LIGATURE HAH WITH YEH FINAL FORM" #xFD1C)
- ("ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM" #xFD1D)
- ("ARABIC LIGATURE JEEM WITH YEH FINAL FORM" #xFD1E)
- ("ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM" #xFD1F)
- ("ARABIC LIGATURE KHAH WITH YEH FINAL FORM" #xFD20)
- ("ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM" #xFD21)
- ("ARABIC LIGATURE SAD WITH YEH FINAL FORM" #xFD22)
- ("ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM" #xFD23)
- ("ARABIC LIGATURE DAD WITH YEH FINAL FORM" #xFD24)
- ("ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM" #xFD25)
- ("ARABIC LIGATURE SHEEN WITH HAH FINAL FORM" #xFD26)
- ("ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM" #xFD27)
- ("ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM" #xFD28)
- ("ARABIC LIGATURE SHEEN WITH REH FINAL FORM" #xFD29)
- ("ARABIC LIGATURE SEEN WITH REH FINAL FORM" #xFD2A)
- ("ARABIC LIGATURE SAD WITH REH FINAL FORM" #xFD2B)
- ("ARABIC LIGATURE DAD WITH REH FINAL FORM" #xFD2C)
- ("ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM" #xFD2D)
- ("ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM" #xFD2E)
- ("ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM" #xFD2F)
- ("ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM" #xFD30)
- ("ARABIC LIGATURE SEEN WITH HEH INITIAL FORM" #xFD31)
- ("ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM" #xFD32)
- ("ARABIC LIGATURE TAH WITH MEEM INITIAL FORM" #xFD33)
- ("ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM" #xFD34)
- ("ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM" #xFD35)
- ("ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM" #xFD36)
- ("ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM" #xFD37)
- ("ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM" #xFD38)
- ("ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM" #xFD39)
- ("ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM" #xFD3A)
- ("ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM" #xFD3B)
- ("ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM" #xFD3C)
- ("ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM" #xFD3D)
- ("ORNATE LEFT PARENTHESIS" #xFD3E)
- ("ORNATE RIGHT PARENTHESIS" #xFD3F)
- ("ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM" #xFD50)
- ("ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM" #xFD51)
- ("ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM" #xFD52)
- ("ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM" #xFD53)
- ("ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM" #xFD54)
- ("ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM" #xFD55)
- ("ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM" #xFD56)
- ("ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM" #xFD57)
- ("ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM" #xFD58)
- ("ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM" #xFD59)
- ("ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM" #xFD5A)
- ("ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM" #xFD5B)
- ("ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM" #xFD5C)
- ("ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM" #xFD5D)
- ("ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM" #xFD5E)
- ("ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM" #xFD5F)
- ("ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM" #xFD60)
- ("ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM" #xFD61)
- ("ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM" #xFD62)
- ("ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM" #xFD63)
- ("ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM" #xFD64)
- ("ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM" #xFD65)
- ("ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM" #xFD66)
- ("ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM" #xFD67)
- ("ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM" #xFD68)
- ("ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM" #xFD69)
- ("ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM" #xFD6A)
- ("ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM" #xFD6B)
- ("ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM" #xFD6C)
- ("ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM" #xFD6D)
- ("ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM" #xFD6E)
- ("ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM" #xFD6F)
- ("ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM" #xFD70)
- ("ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM" #xFD71)
- ("ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM" #xFD72)
- ("ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM" #xFD73)
- ("ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM" #xFD74)
- ("ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM" #xFD75)
- ("ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM" #xFD76)
- ("ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM" #xFD77)
- ("ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM" #xFD78)
- ("ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM" #xFD79)
- ("ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM" #xFD7A)
- ("ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM" #xFD7B)
- ("ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM" #xFD7C)
- ("ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM" #xFD7D)
- ("ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM" #xFD7E)
- ("ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM" #xFD7F)
- ("ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM" #xFD80)
- ("ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM" #xFD81)
- ("ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM" #xFD82)
- ("ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM" #xFD83)
- ("ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM" #xFD84)
- ("ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM" #xFD85)
- ("ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM" #xFD86)
- ("ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM" #xFD87)
- ("ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM" #xFD88)
- ("ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM" #xFD89)
- ("ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM" #xFD8A)
- ("ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM" #xFD8B)
- ("ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM" #xFD8C)
- ("ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM" #xFD8D)
- ("ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM" #xFD8E)
- ("ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM" #xFD8F)
- ("ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM" #xFD92)
- ("ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM" #xFD93)
- ("ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM" #xFD94)
- ("ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM" #xFD95)
- ("ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM" #xFD96)
- ("ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM" #xFD97)
- ("ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM" #xFD98)
- ("ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM" #xFD99)
- ("ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM" #xFD9A)
- ("ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM" #xFD9B)
- ("ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM" #xFD9C)
- ("ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM" #xFD9D)
- ("ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM" #xFD9E)
- ("ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM" #xFD9F)
- ("ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM" #xFDA0)
- ("ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM" #xFDA1)
- ("ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM" #xFDA2)
- ("ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM" #xFDA3)
- ("ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM" #xFDA4)
- ("ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM" #xFDA5)
- ("ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM" #xFDA6)
- ("ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM" #xFDA7)
- ("ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM" #xFDA8)
- ("ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM" #xFDA9)
- ("ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM" #xFDAA)
- ("ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM" #xFDAB)
- ("ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM" #xFDAC)
- ("ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM" #xFDAD)
- ("ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM" #xFDAE)
- ("ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM" #xFDAF)
- ("ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM" #xFDB0)
- ("ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM" #xFDB1)
- ("ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM" #xFDB2)
- ("ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM" #xFDB3)
- ("ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM" #xFDB4)
- ("ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM" #xFDB5)
- ("ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM" #xFDB6)
- ("ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM" #xFDB7)
- ("ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM" #xFDB8)
- ("ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM" #xFDB9)
- ("ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM" #xFDBA)
- ("ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM" #xFDBB)
- ("ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM" #xFDBC)
- ("ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM" #xFDBD)
- ("ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM" #xFDBE)
- ("ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM" #xFDBF)
- ("ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM" #xFDC0)
- ("ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM" #xFDC1)
- ("ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM" #xFDC2)
- ("ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM" #xFDC3)
- ("ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM" #xFDC4)
- ("ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM" #xFDC5)
- ("ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM" #xFDC6)
- ("ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM" #xFDC7)
- ("ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM" #xFDF0)
- ("ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM" #xFDF1)
- ("ARABIC LIGATURE ALLAH ISOLATED FORM" #xFDF2)
- ("ARABIC LIGATURE AKBAR ISOLATED FORM" #xFDF3)
- ("ARABIC LIGATURE MOHAMMAD ISOLATED FORM" #xFDF4)
- ("ARABIC LIGATURE SALAM ISOLATED FORM" #xFDF5)
- ("ARABIC LIGATURE RASOUL ISOLATED FORM" #xFDF6)
- ("ARABIC LIGATURE ALAYHE ISOLATED FORM" #xFDF7)
- ("ARABIC LIGATURE WASALLAM ISOLATED FORM" #xFDF8)
- ("ARABIC LIGATURE SALLA ISOLATED FORM" #xFDF9)
- ("ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM" #xFDFA)
- ("ARABIC LIGATURE JALLAJALALOUHOU" #xFDFB)
- ("RIAL SIGN" #xFDFC)
- ))
-
diff --git a/etc/nxml/0FE00-0FE0F.el b/etc/nxml/0FE00-0FE0F.el
deleted file mode 100644
index 04d855e560..0000000000
--- a/etc/nxml/0FE00-0FE0F.el
+++ /dev/null
@@ -1,19 +0,0 @@
-(nxml-define-char-name-set 'variation-selectors
- '(("VARIATION SELECTOR-1" #xFE00)
- ("VARIATION SELECTOR-2" #xFE01)
- ("VARIATION SELECTOR-3" #xFE02)
- ("VARIATION SELECTOR-4" #xFE03)
- ("VARIATION SELECTOR-5" #xFE04)
- ("VARIATION SELECTOR-6" #xFE05)
- ("VARIATION SELECTOR-7" #xFE06)
- ("VARIATION SELECTOR-8" #xFE07)
- ("VARIATION SELECTOR-9" #xFE08)
- ("VARIATION SELECTOR-10" #xFE09)
- ("VARIATION SELECTOR-11" #xFE0A)
- ("VARIATION SELECTOR-12" #xFE0B)
- ("VARIATION SELECTOR-13" #xFE0C)
- ("VARIATION SELECTOR-14" #xFE0D)
- ("VARIATION SELECTOR-15" #xFE0E)
- ("VARIATION SELECTOR-16" #xFE0F)
- ))
-
diff --git a/etc/nxml/0FE20-0FE2F.el b/etc/nxml/0FE20-0FE2F.el
deleted file mode 100644
index f2c9ae8a72..0000000000
--- a/etc/nxml/0FE20-0FE2F.el
+++ /dev/null
@@ -1,7 +0,0 @@
-(nxml-define-char-name-set 'combining-half-marks
- '(("COMBINING LIGATURE LEFT HALF" #xFE20)
- ("COMBINING LIGATURE RIGHT HALF" #xFE21)
- ("COMBINING DOUBLE TILDE LEFT HALF" #xFE22)
- ("COMBINING DOUBLE TILDE RIGHT HALF" #xFE23)
- ))
-
diff --git a/etc/nxml/0FE30-0FE4F.el b/etc/nxml/0FE30-0FE4F.el
deleted file mode 100644
index cef6a39c83..0000000000
--- a/etc/nxml/0FE30-0FE4F.el
+++ /dev/null
@@ -1,33 +0,0 @@
-(nxml-define-char-name-set 'cjk-compatibility-forms
- '(("PRESENTATION FORM FOR VERTICAL TWO DOT LEADER" #xFE30)
- ("PRESENTATION FORM FOR VERTICAL EM DASH" #xFE31)
- ("PRESENTATION FORM FOR VERTICAL EN DASH" #xFE32)
- ("PRESENTATION FORM FOR VERTICAL LOW LINE" #xFE33)
- ("PRESENTATION FORM FOR VERTICAL WAVY LOW LINE" #xFE34)
- ("PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS" #xFE35)
- ("PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS" #xFE36)
- ("PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET" #xFE37)
- ("PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET" #xFE38)
- ("PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET" #xFE39)
- ("PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET" #xFE3A)
- ("PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET" #xFE3B)
- ("PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET" #xFE3C)
- ("PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET" #xFE3D)
- ("PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET" #xFE3E)
- ("PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET" #xFE3F)
- ("PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET" #xFE40)
- ("PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET" #xFE41)
- ("PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET" #xFE42)
- ("PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET" #xFE43)
- ("PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET" #xFE44)
- ("SESAME DOT" #xFE45)
- ("WHITE SESAME DOT" #xFE46)
- ("DASHED OVERLINE" #xFE49)
- ("CENTRELINE OVERLINE" #xFE4A)
- ("WAVY OVERLINE" #xFE4B)
- ("DOUBLE WAVY OVERLINE" #xFE4C)
- ("DASHED LOW LINE" #xFE4D)
- ("CENTRELINE LOW LINE" #xFE4E)
- ("WAVY LOW LINE" #xFE4F)
- ))
-
diff --git a/etc/nxml/0FE50-0FE6F.el b/etc/nxml/0FE50-0FE6F.el
deleted file mode 100644
index eda9e89630..0000000000
--- a/etc/nxml/0FE50-0FE6F.el
+++ /dev/null
@@ -1,29 +0,0 @@
-(nxml-define-char-name-set 'small-form-variants
- '(("SMALL COMMA" #xFE50)
- ("SMALL IDEOGRAPHIC COMMA" #xFE51)
- ("SMALL FULL STOP" #xFE52)
- ("SMALL SEMICOLON" #xFE54)
- ("SMALL COLON" #xFE55)
- ("SMALL QUESTION MARK" #xFE56)
- ("SMALL EXCLAMATION MARK" #xFE57)
- ("SMALL EM DASH" #xFE58)
- ("SMALL LEFT PARENTHESIS" #xFE59)
- ("SMALL RIGHT PARENTHESIS" #xFE5A)
- ("SMALL LEFT CURLY BRACKET" #xFE5B)
- ("SMALL RIGHT CURLY BRACKET" #xFE5C)
- ("SMALL LEFT TORTOISE SHELL BRACKET" #xFE5D)
- ("SMALL RIGHT TORTOISE SHELL BRACKET" #xFE5E)
- ("SMALL NUMBER SIGN" #xFE5F)
- ("SMALL AMPERSAND" #xFE60)
- ("SMALL ASTERISK" #xFE61)
- ("SMALL PLUS SIGN" #xFE62)
- ("SMALL HYPHEN-MINUS" #xFE63)
- ("SMALL LESS-THAN SIGN" #xFE64)
- ("SMALL GREATER-THAN SIGN" #xFE65)
- ("SMALL EQUALS SIGN" #xFE66)
- ("SMALL REVERSE SOLIDUS" #xFE68)
- ("SMALL DOLLAR SIGN" #xFE69)
- ("SMALL PERCENT SIGN" #xFE6A)
- ("SMALL COMMERCIAL AT" #xFE6B)
- ))
-
diff --git a/etc/nxml/0FE70-0FEFF.el b/etc/nxml/0FE70-0FEFF.el
deleted file mode 100644
index 4de14be73c..0000000000
--- a/etc/nxml/0FE70-0FEFF.el
+++ /dev/null
@@ -1,144 +0,0 @@
-(nxml-define-char-name-set 'arabic-presentation-forms-b
- '(("ARABIC FATHATAN ISOLATED FORM" #xFE70)
- ("ARABIC TATWEEL WITH FATHATAN ABOVE" #xFE71)
- ("ARABIC DAMMATAN ISOLATED FORM" #xFE72)
- ("ARABIC TAIL FRAGMENT" #xFE73)
- ("ARABIC KASRATAN ISOLATED FORM" #xFE74)
- ("ARABIC FATHA ISOLATED FORM" #xFE76)
- ("ARABIC FATHA MEDIAL FORM" #xFE77)
- ("ARABIC DAMMA ISOLATED FORM" #xFE78)
- ("ARABIC DAMMA MEDIAL FORM" #xFE79)
- ("ARABIC KASRA ISOLATED FORM" #xFE7A)
- ("ARABIC KASRA MEDIAL FORM" #xFE7B)
- ("ARABIC SHADDA ISOLATED FORM" #xFE7C)
- ("ARABIC SHADDA MEDIAL FORM" #xFE7D)
- ("ARABIC SUKUN ISOLATED FORM" #xFE7E)
- ("ARABIC SUKUN MEDIAL FORM" #xFE7F)
- ("ARABIC LETTER HAMZA ISOLATED FORM" #xFE80)
- ("ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM" #xFE81)
- ("ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM" #xFE82)
- ("ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM" #xFE83)
- ("ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM" #xFE84)
- ("ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM" #xFE85)
- ("ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM" #xFE86)
- ("ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM" #xFE87)
- ("ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM" #xFE88)
- ("ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM" #xFE89)
- ("ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM" #xFE8A)
- ("ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM" #xFE8B)
- ("ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM" #xFE8C)
- ("ARABIC LETTER ALEF ISOLATED FORM" #xFE8D)
- ("ARABIC LETTER ALEF FINAL FORM" #xFE8E)
- ("ARABIC LETTER BEH ISOLATED FORM" #xFE8F)
- ("ARABIC LETTER BEH FINAL FORM" #xFE90)
- ("ARABIC LETTER BEH INITIAL FORM" #xFE91)
- ("ARABIC LETTER BEH MEDIAL FORM" #xFE92)
- ("ARABIC LETTER TEH MARBUTA ISOLATED FORM" #xFE93)
- ("ARABIC LETTER TEH MARBUTA FINAL FORM" #xFE94)
- ("ARABIC LETTER TEH ISOLATED FORM" #xFE95)
- ("ARABIC LETTER TEH FINAL FORM" #xFE96)
- ("ARABIC LETTER TEH INITIAL FORM" #xFE97)
- ("ARABIC LETTER TEH MEDIAL FORM" #xFE98)
- ("ARABIC LETTER THEH ISOLATED FORM" #xFE99)
- ("ARABIC LETTER THEH FINAL FORM" #xFE9A)
- ("ARABIC LETTER THEH INITIAL FORM" #xFE9B)
- ("ARABIC LETTER THEH MEDIAL FORM" #xFE9C)
- ("ARABIC LETTER JEEM ISOLATED FORM" #xFE9D)
- ("ARABIC LETTER JEEM FINAL FORM" #xFE9E)
- ("ARABIC LETTER JEEM INITIAL FORM" #xFE9F)
- ("ARABIC LETTER JEEM MEDIAL FORM" #xFEA0)
- ("ARABIC LETTER HAH ISOLATED FORM" #xFEA1)
- ("ARABIC LETTER HAH FINAL FORM" #xFEA2)
- ("ARABIC LETTER HAH INITIAL FORM" #xFEA3)
- ("ARABIC LETTER HAH MEDIAL FORM" #xFEA4)
- ("ARABIC LETTER KHAH ISOLATED FORM" #xFEA5)
- ("ARABIC LETTER KHAH FINAL FORM" #xFEA6)
- ("ARABIC LETTER KHAH INITIAL FORM" #xFEA7)
- ("ARABIC LETTER KHAH MEDIAL FORM" #xFEA8)
- ("ARABIC LETTER DAL ISOLATED FORM" #xFEA9)
- ("ARABIC LETTER DAL FINAL FORM" #xFEAA)
- ("ARABIC LETTER THAL ISOLATED FORM" #xFEAB)
- ("ARABIC LETTER THAL FINAL FORM" #xFEAC)
- ("ARABIC LETTER REH ISOLATED FORM" #xFEAD)
- ("ARABIC LETTER REH FINAL FORM" #xFEAE)
- ("ARABIC LETTER ZAIN ISOLATED FORM" #xFEAF)
- ("ARABIC LETTER ZAIN FINAL FORM" #xFEB0)
- ("ARABIC LETTER SEEN ISOLATED FORM" #xFEB1)
- ("ARABIC LETTER SEEN FINAL FORM" #xFEB2)
- ("ARABIC LETTER SEEN INITIAL FORM" #xFEB3)
- ("ARABIC LETTER SEEN MEDIAL FORM" #xFEB4)
- ("ARABIC LETTER SHEEN ISOLATED FORM" #xFEB5)
- ("ARABIC LETTER SHEEN FINAL FORM" #xFEB6)
- ("ARABIC LETTER SHEEN INITIAL FORM" #xFEB7)
- ("ARABIC LETTER SHEEN MEDIAL FORM" #xFEB8)
- ("ARABIC LETTER SAD ISOLATED FORM" #xFEB9)
- ("ARABIC LETTER SAD FINAL FORM" #xFEBA)
- ("ARABIC LETTER SAD INITIAL FORM" #xFEBB)
- ("ARABIC LETTER SAD MEDIAL FORM" #xFEBC)
- ("ARABIC LETTER DAD ISOLATED FORM" #xFEBD)
- ("ARABIC LETTER DAD FINAL FORM" #xFEBE)
- ("ARABIC LETTER DAD INITIAL FORM" #xFEBF)
- ("ARABIC LETTER DAD MEDIAL FORM" #xFEC0)
- ("ARABIC LETTER TAH ISOLATED FORM" #xFEC1)
- ("ARABIC LETTER TAH FINAL FORM" #xFEC2)
- ("ARABIC LETTER TAH INITIAL FORM" #xFEC3)
- ("ARABIC LETTER TAH MEDIAL FORM" #xFEC4)
- ("ARABIC LETTER ZAH ISOLATED FORM" #xFEC5)
- ("ARABIC LETTER ZAH FINAL FORM" #xFEC6)
- ("ARABIC LETTER ZAH INITIAL FORM" #xFEC7)
- ("ARABIC LETTER ZAH MEDIAL FORM" #xFEC8)
- ("ARABIC LETTER AIN ISOLATED FORM" #xFEC9)
- ("ARABIC LETTER AIN FINAL FORM" #xFECA)
- ("ARABIC LETTER AIN INITIAL FORM" #xFECB)
- ("ARABIC LETTER AIN MEDIAL FORM" #xFECC)
- ("ARABIC LETTER GHAIN ISOLATED FORM" #xFECD)
- ("ARABIC LETTER GHAIN FINAL FORM" #xFECE)
- ("ARABIC LETTER GHAIN INITIAL FORM" #xFECF)
- ("ARABIC LETTER GHAIN MEDIAL FORM" #xFED0)
- ("ARABIC LETTER FEH ISOLATED FORM" #xFED1)
- ("ARABIC LETTER FEH FINAL FORM" #xFED2)
- ("ARABIC LETTER FEH INITIAL FORM" #xFED3)
- ("ARABIC LETTER FEH MEDIAL FORM" #xFED4)
- ("ARABIC LETTER QAF ISOLATED FORM" #xFED5)
- ("ARABIC LETTER QAF FINAL FORM" #xFED6)
- ("ARABIC LETTER QAF INITIAL FORM" #xFED7)
- ("ARABIC LETTER QAF MEDIAL FORM" #xFED8)
- ("ARABIC LETTER KAF ISOLATED FORM" #xFED9)
- ("ARABIC LETTER KAF FINAL FORM" #xFEDA)
- ("ARABIC LETTER KAF INITIAL FORM" #xFEDB)
- ("ARABIC LETTER KAF MEDIAL FORM" #xFEDC)
- ("ARABIC LETTER LAM ISOLATED FORM" #xFEDD)
- ("ARABIC LETTER LAM FINAL FORM" #xFEDE)
- ("ARABIC LETTER LAM INITIAL FORM" #xFEDF)
- ("ARABIC LETTER LAM MEDIAL FORM" #xFEE0)
- ("ARABIC LETTER MEEM ISOLATED FORM" #xFEE1)
- ("ARABIC LETTER MEEM FINAL FORM" #xFEE2)
- ("ARABIC LETTER MEEM INITIAL FORM" #xFEE3)
- ("ARABIC LETTER MEEM MEDIAL FORM" #xFEE4)
- ("ARABIC LETTER NOON ISOLATED FORM" #xFEE5)
- ("ARABIC LETTER NOON FINAL FORM" #xFEE6)
- ("ARABIC LETTER NOON INITIAL FORM" #xFEE7)
- ("ARABIC LETTER NOON MEDIAL FORM" #xFEE8)
- ("ARABIC LETTER HEH ISOLATED FORM" #xFEE9)
- ("ARABIC LETTER HEH FINAL FORM" #xFEEA)
- ("ARABIC LETTER HEH INITIAL FORM" #xFEEB)
- ("ARABIC LETTER HEH MEDIAL FORM" #xFEEC)
- ("ARABIC LETTER WAW ISOLATED FORM" #xFEED)
- ("ARABIC LETTER WAW FINAL FORM" #xFEEE)
- ("ARABIC LETTER ALEF MAKSURA ISOLATED FORM" #xFEEF)
- ("ARABIC LETTER ALEF MAKSURA FINAL FORM" #xFEF0)
- ("ARABIC LETTER YEH ISOLATED FORM" #xFEF1)
- ("ARABIC LETTER YEH FINAL FORM" #xFEF2)
- ("ARABIC LETTER YEH INITIAL FORM" #xFEF3)
- ("ARABIC LETTER YEH MEDIAL FORM" #xFEF4)
- ("ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM" #xFEF5)
- ("ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM" #xFEF6)
- ("ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM" #xFEF7)
- ("ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM" #xFEF8)
- ("ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM" #xFEF9)
- ("ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM" #xFEFA)
- ("ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM" #xFEFB)
- ("ARABIC LIGATURE LAM WITH ALEF FINAL FORM" #xFEFC)
- ("ZERO WIDTH NO-BREAK SPACE" #xFEFF)
- ))
-
diff --git a/etc/nxml/0FF00-0FFEF.el b/etc/nxml/0FF00-0FFEF.el
deleted file mode 100644
index a2134af9ac..0000000000
--- a/etc/nxml/0FF00-0FFEF.el
+++ /dev/null
@@ -1,228 +0,0 @@
-(nxml-define-char-name-set 'halfwidth-and-fullwidth-forms
- '(("FULLWIDTH EXCLAMATION MARK" #xFF01)
- ("FULLWIDTH QUOTATION MARK" #xFF02)
- ("FULLWIDTH NUMBER SIGN" #xFF03)
- ("FULLWIDTH DOLLAR SIGN" #xFF04)
- ("FULLWIDTH PERCENT SIGN" #xFF05)
- ("FULLWIDTH AMPERSAND" #xFF06)
- ("FULLWIDTH APOSTROPHE" #xFF07)
- ("FULLWIDTH LEFT PARENTHESIS" #xFF08)
- ("FULLWIDTH RIGHT PARENTHESIS" #xFF09)
- ("FULLWIDTH ASTERISK" #xFF0A)
- ("FULLWIDTH PLUS SIGN" #xFF0B)
- ("FULLWIDTH COMMA" #xFF0C)
- ("FULLWIDTH HYPHEN-MINUS" #xFF0D)
- ("FULLWIDTH FULL STOP" #xFF0E)
- ("FULLWIDTH SOLIDUS" #xFF0F)
- ("FULLWIDTH DIGIT ZERO" #xFF10)
- ("FULLWIDTH DIGIT ONE" #xFF11)
- ("FULLWIDTH DIGIT TWO" #xFF12)
- ("FULLWIDTH DIGIT THREE" #xFF13)
- ("FULLWIDTH DIGIT FOUR" #xFF14)
- ("FULLWIDTH DIGIT FIVE" #xFF15)
- ("FULLWIDTH DIGIT SIX" #xFF16)
- ("FULLWIDTH DIGIT SEVEN" #xFF17)
- ("FULLWIDTH DIGIT EIGHT" #xFF18)
- ("FULLWIDTH DIGIT NINE" #xFF19)
- ("FULLWIDTH COLON" #xFF1A)
- ("FULLWIDTH SEMICOLON" #xFF1B)
- ("FULLWIDTH LESS-THAN SIGN" #xFF1C)
- ("FULLWIDTH EQUALS SIGN" #xFF1D)
- ("FULLWIDTH GREATER-THAN SIGN" #xFF1E)
- ("FULLWIDTH QUESTION MARK" #xFF1F)
- ("FULLWIDTH COMMERCIAL AT" #xFF20)
- ("FULLWIDTH LATIN CAPITAL LETTER A" #xFF21)
- ("FULLWIDTH LATIN CAPITAL LETTER B" #xFF22)
- ("FULLWIDTH LATIN CAPITAL LETTER C" #xFF23)
- ("FULLWIDTH LATIN CAPITAL LETTER D" #xFF24)
- ("FULLWIDTH LATIN CAPITAL LETTER E" #xFF25)
- ("FULLWIDTH LATIN CAPITAL LETTER F" #xFF26)
- ("FULLWIDTH LATIN CAPITAL LETTER G" #xFF27)
- ("FULLWIDTH LATIN CAPITAL LETTER H" #xFF28)
- ("FULLWIDTH LATIN CAPITAL LETTER I" #xFF29)
- ("FULLWIDTH LATIN CAPITAL LETTER J" #xFF2A)
- ("FULLWIDTH LATIN CAPITAL LETTER K" #xFF2B)
- ("FULLWIDTH LATIN CAPITAL LETTER L" #xFF2C)
- ("FULLWIDTH LATIN CAPITAL LETTER M" #xFF2D)
- ("FULLWIDTH LATIN CAPITAL LETTER N" #xFF2E)
- ("FULLWIDTH LATIN CAPITAL LETTER O" #xFF2F)
- ("FULLWIDTH LATIN CAPITAL LETTER P" #xFF30)
- ("FULLWIDTH LATIN CAPITAL LETTER Q" #xFF31)
- ("FULLWIDTH LATIN CAPITAL LETTER R" #xFF32)
- ("FULLWIDTH LATIN CAPITAL LETTER S" #xFF33)
- ("FULLWIDTH LATIN CAPITAL LETTER T" #xFF34)
- ("FULLWIDTH LATIN CAPITAL LETTER U" #xFF35)
- ("FULLWIDTH LATIN CAPITAL LETTER V" #xFF36)
- ("FULLWIDTH LATIN CAPITAL LETTER W" #xFF37)
- ("FULLWIDTH LATIN CAPITAL LETTER X" #xFF38)
- ("FULLWIDTH LATIN CAPITAL LETTER Y" #xFF39)
- ("FULLWIDTH LATIN CAPITAL LETTER Z" #xFF3A)
- ("FULLWIDTH LEFT SQUARE BRACKET" #xFF3B)
- ("FULLWIDTH REVERSE SOLIDUS" #xFF3C)
- ("FULLWIDTH RIGHT SQUARE BRACKET" #xFF3D)
- ("FULLWIDTH CIRCUMFLEX ACCENT" #xFF3E)
- ("FULLWIDTH LOW LINE" #xFF3F)
- ("FULLWIDTH GRAVE ACCENT" #xFF40)
- ("FULLWIDTH LATIN SMALL LETTER A" #xFF41)
- ("FULLWIDTH LATIN SMALL LETTER B" #xFF42)
- ("FULLWIDTH LATIN SMALL LETTER C" #xFF43)
- ("FULLWIDTH LATIN SMALL LETTER D" #xFF44)
- ("FULLWIDTH LATIN SMALL LETTER E" #xFF45)
- ("FULLWIDTH LATIN SMALL LETTER F" #xFF46)
- ("FULLWIDTH LATIN SMALL LETTER G" #xFF47)
- ("FULLWIDTH LATIN SMALL LETTER H" #xFF48)
- ("FULLWIDTH LATIN SMALL LETTER I" #xFF49)
- ("FULLWIDTH LATIN SMALL LETTER J" #xFF4A)
- ("FULLWIDTH LATIN SMALL LETTER K" #xFF4B)
- ("FULLWIDTH LATIN SMALL LETTER L" #xFF4C)
- ("FULLWIDTH LATIN SMALL LETTER M" #xFF4D)
- ("FULLWIDTH LATIN SMALL LETTER N" #xFF4E)
- ("FULLWIDTH LATIN SMALL LETTER O" #xFF4F)
- ("FULLWIDTH LATIN SMALL LETTER P" #xFF50)
- ("FULLWIDTH LATIN SMALL LETTER Q" #xFF51)
- ("FULLWIDTH LATIN SMALL LETTER R" #xFF52)
- ("FULLWIDTH LATIN SMALL LETTER S" #xFF53)
- ("FULLWIDTH LATIN SMALL LETTER T" #xFF54)
- ("FULLWIDTH LATIN SMALL LETTER U" #xFF55)
- ("FULLWIDTH LATIN SMALL LETTER V" #xFF56)
- ("FULLWIDTH LATIN SMALL LETTER W" #xFF57)
- ("FULLWIDTH LATIN SMALL LETTER X" #xFF58)
- ("FULLWIDTH LATIN SMALL LETTER Y" #xFF59)
- ("FULLWIDTH LATIN SMALL LETTER Z" #xFF5A)
- ("FULLWIDTH LEFT CURLY BRACKET" #xFF5B)
- ("FULLWIDTH VERTICAL LINE" #xFF5C)
- ("FULLWIDTH RIGHT CURLY BRACKET" #xFF5D)
- ("FULLWIDTH TILDE" #xFF5E)
- ("FULLWIDTH LEFT WHITE PARENTHESIS" #xFF5F)
- ("FULLWIDTH RIGHT WHITE PARENTHESIS" #xFF60)
- ("HALFWIDTH IDEOGRAPHIC FULL STOP" #xFF61)
- ("HALFWIDTH LEFT CORNER BRACKET" #xFF62)
- ("HALFWIDTH RIGHT CORNER BRACKET" #xFF63)
- ("HALFWIDTH IDEOGRAPHIC COMMA" #xFF64)
- ("HALFWIDTH KATAKANA MIDDLE DOT" #xFF65)
- ("HALFWIDTH KATAKANA LETTER WO" #xFF66)
- ("HALFWIDTH KATAKANA LETTER SMALL A" #xFF67)
- ("HALFWIDTH KATAKANA LETTER SMALL I" #xFF68)
- ("HALFWIDTH KATAKANA LETTER SMALL U" #xFF69)
- ("HALFWIDTH KATAKANA LETTER SMALL E" #xFF6A)
- ("HALFWIDTH KATAKANA LETTER SMALL O" #xFF6B)
- ("HALFWIDTH KATAKANA LETTER SMALL YA" #xFF6C)
- ("HALFWIDTH KATAKANA LETTER SMALL YU" #xFF6D)
- ("HALFWIDTH KATAKANA LETTER SMALL YO" #xFF6E)
- ("HALFWIDTH KATAKANA LETTER SMALL TU" #xFF6F)
- ("HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK" #xFF70)
- ("HALFWIDTH KATAKANA LETTER A" #xFF71)
- ("HALFWIDTH KATAKANA LETTER I" #xFF72)
- ("HALFWIDTH KATAKANA LETTER U" #xFF73)
- ("HALFWIDTH KATAKANA LETTER E" #xFF74)
- ("HALFWIDTH KATAKANA LETTER O" #xFF75)
- ("HALFWIDTH KATAKANA LETTER KA" #xFF76)
- ("HALFWIDTH KATAKANA LETTER KI" #xFF77)
- ("HALFWIDTH KATAKANA LETTER KU" #xFF78)
- ("HALFWIDTH KATAKANA LETTER KE" #xFF79)
- ("HALFWIDTH KATAKANA LETTER KO" #xFF7A)
- ("HALFWIDTH KATAKANA LETTER SA" #xFF7B)
- ("HALFWIDTH KATAKANA LETTER SI" #xFF7C)
- ("HALFWIDTH KATAKANA LETTER SU" #xFF7D)
- ("HALFWIDTH KATAKANA LETTER SE" #xFF7E)
- ("HALFWIDTH KATAKANA LETTER SO" #xFF7F)
- ("HALFWIDTH KATAKANA LETTER TA" #xFF80)
- ("HALFWIDTH KATAKANA LETTER TI" #xFF81)
- ("HALFWIDTH KATAKANA LETTER TU" #xFF82)
- ("HALFWIDTH KATAKANA LETTER TE" #xFF83)
- ("HALFWIDTH KATAKANA LETTER TO" #xFF84)
- ("HALFWIDTH KATAKANA LETTER NA" #xFF85)
- ("HALFWIDTH KATAKANA LETTER NI" #xFF86)
- ("HALFWIDTH KATAKANA LETTER NU" #xFF87)
- ("HALFWIDTH KATAKANA LETTER NE" #xFF88)
- ("HALFWIDTH KATAKANA LETTER NO" #xFF89)
- ("HALFWIDTH KATAKANA LETTER HA" #xFF8A)
- ("HALFWIDTH KATAKANA LETTER HI" #xFF8B)
- ("HALFWIDTH KATAKANA LETTER HU" #xFF8C)
- ("HALFWIDTH KATAKANA LETTER HE" #xFF8D)
- ("HALFWIDTH KATAKANA LETTER HO" #xFF8E)
- ("HALFWIDTH KATAKANA LETTER MA" #xFF8F)
- ("HALFWIDTH KATAKANA LETTER MI" #xFF90)
- ("HALFWIDTH KATAKANA LETTER MU" #xFF91)
- ("HALFWIDTH KATAKANA LETTER ME" #xFF92)
- ("HALFWIDTH KATAKANA LETTER MO" #xFF93)
- ("HALFWIDTH KATAKANA LETTER YA" #xFF94)
- ("HALFWIDTH KATAKANA LETTER YU" #xFF95)
- ("HALFWIDTH KATAKANA LETTER YO" #xFF96)
- ("HALFWIDTH KATAKANA LETTER RA" #xFF97)
- ("HALFWIDTH KATAKANA LETTER RI" #xFF98)
- ("HALFWIDTH KATAKANA LETTER RU" #xFF99)
- ("HALFWIDTH KATAKANA LETTER RE" #xFF9A)
- ("HALFWIDTH KATAKANA LETTER RO" #xFF9B)
- ("HALFWIDTH KATAKANA LETTER WA" #xFF9C)
- ("HALFWIDTH KATAKANA LETTER N" #xFF9D)
- ("HALFWIDTH KATAKANA VOICED SOUND MARK" #xFF9E)
- ("HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK" #xFF9F)
- ("HALFWIDTH HANGUL FILLER" #xFFA0)
- ("HALFWIDTH HANGUL LETTER KIYEOK" #xFFA1)
- ("HALFWIDTH HANGUL LETTER SSANGKIYEOK" #xFFA2)
- ("HALFWIDTH HANGUL LETTER KIYEOK-SIOS" #xFFA3)
- ("HALFWIDTH HANGUL LETTER NIEUN" #xFFA4)
- ("HALFWIDTH HANGUL LETTER NIEUN-CIEUC" #xFFA5)
- ("HALFWIDTH HANGUL LETTER NIEUN-HIEUH" #xFFA6)
- ("HALFWIDTH HANGUL LETTER TIKEUT" #xFFA7)
- ("HALFWIDTH HANGUL LETTER SSANGTIKEUT" #xFFA8)
- ("HALFWIDTH HANGUL LETTER RIEUL" #xFFA9)
- ("HALFWIDTH HANGUL LETTER RIEUL-KIYEOK" #xFFAA)
- ("HALFWIDTH HANGUL LETTER RIEUL-MIEUM" #xFFAB)
- ("HALFWIDTH HANGUL LETTER RIEUL-PIEUP" #xFFAC)
- ("HALFWIDTH HANGUL LETTER RIEUL-SIOS" #xFFAD)
- ("HALFWIDTH HANGUL LETTER RIEUL-THIEUTH" #xFFAE)
- ("HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH" #xFFAF)
- ("HALFWIDTH HANGUL LETTER RIEUL-HIEUH" #xFFB0)
- ("HALFWIDTH HANGUL LETTER MIEUM" #xFFB1)
- ("HALFWIDTH HANGUL LETTER PIEUP" #xFFB2)
- ("HALFWIDTH HANGUL LETTER SSANGPIEUP" #xFFB3)
- ("HALFWIDTH HANGUL LETTER PIEUP-SIOS" #xFFB4)
- ("HALFWIDTH HANGUL LETTER SIOS" #xFFB5)
- ("HALFWIDTH HANGUL LETTER SSANGSIOS" #xFFB6)
- ("HALFWIDTH HANGUL LETTER IEUNG" #xFFB7)
- ("HALFWIDTH HANGUL LETTER CIEUC" #xFFB8)
- ("HALFWIDTH HANGUL LETTER SSANGCIEUC" #xFFB9)
- ("HALFWIDTH HANGUL LETTER CHIEUCH" #xFFBA)
- ("HALFWIDTH HANGUL LETTER KHIEUKH" #xFFBB)
- ("HALFWIDTH HANGUL LETTER THIEUTH" #xFFBC)
- ("HALFWIDTH HANGUL LETTER PHIEUPH" #xFFBD)
- ("HALFWIDTH HANGUL LETTER HIEUH" #xFFBE)
- ("HALFWIDTH HANGUL LETTER A" #xFFC2)
- ("HALFWIDTH HANGUL LETTER AE" #xFFC3)
- ("HALFWIDTH HANGUL LETTER YA" #xFFC4)
- ("HALFWIDTH HANGUL LETTER YAE" #xFFC5)
- ("HALFWIDTH HANGUL LETTER EO" #xFFC6)
- ("HALFWIDTH HANGUL LETTER E" #xFFC7)
- ("HALFWIDTH HANGUL LETTER YEO" #xFFCA)
- ("HALFWIDTH HANGUL LETTER YE" #xFFCB)
- ("HALFWIDTH HANGUL LETTER O" #xFFCC)
- ("HALFWIDTH HANGUL LETTER WA" #xFFCD)
- ("HALFWIDTH HANGUL LETTER WAE" #xFFCE)
- ("HALFWIDTH HANGUL LETTER OE" #xFFCF)
- ("HALFWIDTH HANGUL LETTER YO" #xFFD2)
- ("HALFWIDTH HANGUL LETTER U" #xFFD3)
- ("HALFWIDTH HANGUL LETTER WEO" #xFFD4)
- ("HALFWIDTH HANGUL LETTER WE" #xFFD5)
- ("HALFWIDTH HANGUL LETTER WI" #xFFD6)
- ("HALFWIDTH HANGUL LETTER YU" #xFFD7)
- ("HALFWIDTH HANGUL LETTER EU" #xFFDA)
- ("HALFWIDTH HANGUL LETTER YI" #xFFDB)
- ("HALFWIDTH HANGUL LETTER I" #xFFDC)
- ("FULLWIDTH CENT SIGN" #xFFE0)
- ("FULLWIDTH POUND SIGN" #xFFE1)
- ("FULLWIDTH NOT SIGN" #xFFE2)
- ("FULLWIDTH MACRON" #xFFE3)
- ("FULLWIDTH BROKEN BAR" #xFFE4)
- ("FULLWIDTH YEN SIGN" #xFFE5)
- ("FULLWIDTH WON SIGN" #xFFE6)
- ("HALFWIDTH FORMS LIGHT VERTICAL" #xFFE8)
- ("HALFWIDTH LEFTWARDS ARROW" #xFFE9)
- ("HALFWIDTH UPWARDS ARROW" #xFFEA)
- ("HALFWIDTH RIGHTWARDS ARROW" #xFFEB)
- ("HALFWIDTH DOWNWARDS ARROW" #xFFEC)
- ("HALFWIDTH BLACK SQUARE" #xFFED)
- ("HALFWIDTH WHITE CIRCLE" #xFFEE)
- ))
-
diff --git a/etc/nxml/0FFF0-0FFFF.el b/etc/nxml/0FFF0-0FFFF.el
deleted file mode 100644
index e7366549d5..0000000000
--- a/etc/nxml/0FFF0-0FFFF.el
+++ /dev/null
@@ -1,8 +0,0 @@
-(nxml-define-char-name-set 'specials
- '(("INTERLINEAR ANNOTATION ANCHOR" #xFFF9)
- ("INTERLINEAR ANNOTATION SEPARATOR" #xFFFA)
- ("INTERLINEAR ANNOTATION TERMINATOR" #xFFFB)
- ("OBJECT REPLACEMENT CHARACTER" #xFFFC)
- ("REPLACEMENT CHARACTER" #xFFFD)
- ))
-
diff --git a/etc/nxml/10300-1032F.el b/etc/nxml/10300-1032F.el
deleted file mode 100644
index cf394b58ee..0000000000
--- a/etc/nxml/10300-1032F.el
+++ /dev/null
@@ -1,38 +0,0 @@
-(nxml-define-char-name-set 'old-italic
- '(("OLD ITALIC LETTER A" #x10300)
- ("OLD ITALIC LETTER BE" #x10301)
- ("OLD ITALIC LETTER KE" #x10302)
- ("OLD ITALIC LETTER DE" #x10303)
- ("OLD ITALIC LETTER E" #x10304)
- ("OLD ITALIC LETTER VE" #x10305)
- ("OLD ITALIC LETTER ZE" #x10306)
- ("OLD ITALIC LETTER HE" #x10307)
- ("OLD ITALIC LETTER THE" #x10308)
- ("OLD ITALIC LETTER I" #x10309)
- ("OLD ITALIC LETTER KA" #x1030A)
- ("OLD ITALIC LETTER EL" #x1030B)
- ("OLD ITALIC LETTER EM" #x1030C)
- ("OLD ITALIC LETTER EN" #x1030D)
- ("OLD ITALIC LETTER ESH" #x1030E)
- ("OLD ITALIC LETTER O" #x1030F)
- ("OLD ITALIC LETTER PE" #x10310)
- ("OLD ITALIC LETTER SHE" #x10311)
- ("OLD ITALIC LETTER KU" #x10312)
- ("OLD ITALIC LETTER ER" #x10313)
- ("OLD ITALIC LETTER ES" #x10314)
- ("OLD ITALIC LETTER TE" #x10315)
- ("OLD ITALIC LETTER U" #x10316)
- ("OLD ITALIC LETTER EKS" #x10317)
- ("OLD ITALIC LETTER PHE" #x10318)
- ("OLD ITALIC LETTER KHE" #x10319)
- ("OLD ITALIC LETTER EF" #x1031A)
- ("OLD ITALIC LETTER ERS" #x1031B)
- ("OLD ITALIC LETTER CHE" #x1031C)
- ("OLD ITALIC LETTER II" #x1031D)
- ("OLD ITALIC LETTER UU" #x1031E)
- ("OLD ITALIC NUMERAL ONE" #x10320)
- ("OLD ITALIC NUMERAL FIVE" #x10321)
- ("OLD ITALIC NUMERAL TEN" #x10322)
- ("OLD ITALIC NUMERAL FIFTY" #x10323)
- ))
-
diff --git a/etc/nxml/10330-1034F.el b/etc/nxml/10330-1034F.el
deleted file mode 100644
index 9c6dfb6ead..0000000000
--- a/etc/nxml/10330-1034F.el
+++ /dev/null
@@ -1,30 +0,0 @@
-(nxml-define-char-name-set 'gothic
- '(("GOTHIC LETTER AHSA" #x10330)
- ("GOTHIC LETTER BAIRKAN" #x10331)
- ("GOTHIC LETTER GIBA" #x10332)
- ("GOTHIC LETTER DAGS" #x10333)
- ("GOTHIC LETTER AIHVUS" #x10334)
- ("GOTHIC LETTER QAIRTHRA" #x10335)
- ("GOTHIC LETTER IUJA" #x10336)
- ("GOTHIC LETTER HAGL" #x10337)
- ("GOTHIC LETTER THIUTH" #x10338)
- ("GOTHIC LETTER EIS" #x10339)
- ("GOTHIC LETTER KUSMA" #x1033A)
- ("GOTHIC LETTER LAGUS" #x1033B)
- ("GOTHIC LETTER MANNA" #x1033C)
- ("GOTHIC LETTER NAUTHS" #x1033D)
- ("GOTHIC LETTER JER" #x1033E)
- ("GOTHIC LETTER URUS" #x1033F)
- ("GOTHIC LETTER PAIRTHRA" #x10340)
- ("GOTHIC LETTER NINETY" #x10341)
- ("GOTHIC LETTER RAIDA" #x10342)
- ("GOTHIC LETTER SAUIL" #x10343)
- ("GOTHIC LETTER TEIWS" #x10344)
- ("GOTHIC LETTER WINJA" #x10345)
- ("GOTHIC LETTER FAIHU" #x10346)
- ("GOTHIC LETTER IGGWS" #x10347)
- ("GOTHIC LETTER HWAIR" #x10348)
- ("GOTHIC LETTER OTHAL" #x10349)
- ("GOTHIC LETTER NINE HUNDRED" #x1034A)
- ))
-
diff --git a/etc/nxml/10400-1044F.el b/etc/nxml/10400-1044F.el
deleted file mode 100644
index 8aea9e3d72..0000000000
--- a/etc/nxml/10400-1044F.el
+++ /dev/null
@@ -1,79 +0,0 @@
-(nxml-define-char-name-set 'deseret
- '(("DESERET CAPITAL LETTER LONG I" #x10400)
- ("DESERET CAPITAL LETTER LONG E" #x10401)
- ("DESERET CAPITAL LETTER LONG A" #x10402)
- ("DESERET CAPITAL LETTER LONG AH" #x10403)
- ("DESERET CAPITAL LETTER LONG O" #x10404)
- ("DESERET CAPITAL LETTER LONG OO" #x10405)
- ("DESERET CAPITAL LETTER SHORT I" #x10406)
- ("DESERET CAPITAL LETTER SHORT E" #x10407)
- ("DESERET CAPITAL LETTER SHORT A" #x10408)
- ("DESERET CAPITAL LETTER SHORT AH" #x10409)
- ("DESERET CAPITAL LETTER SHORT O" #x1040A)
- ("DESERET CAPITAL LETTER SHORT OO" #x1040B)
- ("DESERET CAPITAL LETTER AY" #x1040C)
- ("DESERET CAPITAL LETTER OW" #x1040D)
- ("DESERET CAPITAL LETTER WU" #x1040E)
- ("DESERET CAPITAL LETTER YEE" #x1040F)
- ("DESERET CAPITAL LETTER H" #x10410)
- ("DESERET CAPITAL LETTER PEE" #x10411)
- ("DESERET CAPITAL LETTER BEE" #x10412)
- ("DESERET CAPITAL LETTER TEE" #x10413)
- ("DESERET CAPITAL LETTER DEE" #x10414)
- ("DESERET CAPITAL LETTER CHEE" #x10415)
- ("DESERET CAPITAL LETTER JEE" #x10416)
- ("DESERET CAPITAL LETTER KAY" #x10417)
- ("DESERET CAPITAL LETTER GAY" #x10418)
- ("DESERET CAPITAL LETTER EF" #x10419)
- ("DESERET CAPITAL LETTER VEE" #x1041A)
- ("DESERET CAPITAL LETTER ETH" #x1041B)
- ("DESERET CAPITAL LETTER THEE" #x1041C)
- ("DESERET CAPITAL LETTER ES" #x1041D)
- ("DESERET CAPITAL LETTER ZEE" #x1041E)
- ("DESERET CAPITAL LETTER ESH" #x1041F)
- ("DESERET CAPITAL LETTER ZHEE" #x10420)
- ("DESERET CAPITAL LETTER ER" #x10421)
- ("DESERET CAPITAL LETTER EL" #x10422)
- ("DESERET CAPITAL LETTER EM" #x10423)
- ("DESERET CAPITAL LETTER EN" #x10424)
- ("DESERET CAPITAL LETTER ENG" #x10425)
- ("DESERET SMALL LETTER LONG I" #x10428)
- ("DESERET SMALL LETTER LONG E" #x10429)
- ("DESERET SMALL LETTER LONG A" #x1042A)
- ("DESERET SMALL LETTER LONG AH" #x1042B)
- ("DESERET SMALL LETTER LONG O" #x1042C)
- ("DESERET SMALL LETTER LONG OO" #x1042D)
- ("DESERET SMALL LETTER SHORT I" #x1042E)
- ("DESERET SMALL LETTER SHORT E" #x1042F)
- ("DESERET SMALL LETTER SHORT A" #x10430)
- ("DESERET SMALL LETTER SHORT AH" #x10431)
- ("DESERET SMALL LETTER SHORT O" #x10432)
- ("DESERET SMALL LETTER SHORT OO" #x10433)
- ("DESERET SMALL LETTER AY" #x10434)
- ("DESERET SMALL LETTER OW" #x10435)
- ("DESERET SMALL LETTER WU" #x10436)
- ("DESERET SMALL LETTER YEE" #x10437)
- ("DESERET SMALL LETTER H" #x10438)
- ("DESERET SMALL LETTER PEE" #x10439)
- ("DESERET SMALL LETTER BEE" #x1043A)
- ("DESERET SMALL LETTER TEE" #x1043B)
- ("DESERET SMALL LETTER DEE" #x1043C)
- ("DESERET SMALL LETTER CHEE" #x1043D)
- ("DESERET SMALL LETTER JEE" #x1043E)
- ("DESERET SMALL LETTER KAY" #x1043F)
- ("DESERET SMALL LETTER GAY" #x10440)
- ("DESERET SMALL LETTER EF" #x10441)
- ("DESERET SMALL LETTER VEE" #x10442)
- ("DESERET SMALL LETTER ETH" #x10443)
- ("DESERET SMALL LETTER THEE" #x10444)
- ("DESERET SMALL LETTER ES" #x10445)
- ("DESERET SMALL LETTER ZEE" #x10446)
- ("DESERET SMALL LETTER ESH" #x10447)
- ("DESERET SMALL LETTER ZHEE" #x10448)
- ("DESERET SMALL LETTER ER" #x10449)
- ("DESERET SMALL LETTER EL" #x1044A)
- ("DESERET SMALL LETTER EM" #x1044B)
- ("DESERET SMALL LETTER EN" #x1044C)
- ("DESERET SMALL LETTER ENG" #x1044D)
- ))
-
diff --git a/etc/nxml/1D000-1D0FF.el b/etc/nxml/1D000-1D0FF.el
deleted file mode 100644
index 5d2eb237be..0000000000
--- a/etc/nxml/1D000-1D0FF.el
+++ /dev/null
@@ -1,249 +0,0 @@
-(nxml-define-char-name-set 'byzantine-musical-symbols
- '(("BYZANTINE MUSICAL SYMBOL PSILI" #x1D000)
- ("BYZANTINE MUSICAL SYMBOL DASEIA" #x1D001)
- ("BYZANTINE MUSICAL SYMBOL PERISPOMENI" #x1D002)
- ("BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON" #x1D003)
- ("BYZANTINE MUSICAL SYMBOL OXEIA DIPLI" #x1D004)
- ("BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON" #x1D005)
- ("BYZANTINE MUSICAL SYMBOL VAREIA DIPLI" #x1D006)
- ("BYZANTINE MUSICAL SYMBOL KATHISTI" #x1D007)
- ("BYZANTINE MUSICAL SYMBOL SYRMATIKI" #x1D008)
- ("BYZANTINE MUSICAL SYMBOL PARAKLITIKI" #x1D009)
- ("BYZANTINE MUSICAL SYMBOL YPOKRISIS" #x1D00A)
- ("BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI" #x1D00B)
- ("BYZANTINE MUSICAL SYMBOL KREMASTI" #x1D00C)
- ("BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON" #x1D00D)
- ("BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON" #x1D00E)
- ("BYZANTINE MUSICAL SYMBOL TELEIA" #x1D00F)
- ("BYZANTINE MUSICAL SYMBOL KENTIMATA" #x1D010)
- ("BYZANTINE MUSICAL SYMBOL APOSTROFOS" #x1D011)
- ("BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI" #x1D012)
- ("BYZANTINE MUSICAL SYMBOL SYNEVMA" #x1D013)
- ("BYZANTINE MUSICAL SYMBOL THITA" #x1D014)
- ("BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION" #x1D015)
- ("BYZANTINE MUSICAL SYMBOL GORGON ARCHAION" #x1D016)
- ("BYZANTINE MUSICAL SYMBOL PSILON" #x1D017)
- ("BYZANTINE MUSICAL SYMBOL CHAMILON" #x1D018)
- ("BYZANTINE MUSICAL SYMBOL VATHY" #x1D019)
- ("BYZANTINE MUSICAL SYMBOL ISON ARCHAION" #x1D01A)
- ("BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION" #x1D01B)
- ("BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION" #x1D01C)
- ("BYZANTINE MUSICAL SYMBOL SAXIMATA" #x1D01D)
- ("BYZANTINE MUSICAL SYMBOL PARICHON" #x1D01E)
- ("BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA" #x1D01F)
- ("BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION" #x1D020)
- ("BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION" #x1D021)
- ("BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION" #x1D022)
- ("BYZANTINE MUSICAL SYMBOL APOTHEMA" #x1D023)
- ("BYZANTINE MUSICAL SYMBOL KLASMA" #x1D024)
- ("BYZANTINE MUSICAL SYMBOL REVMA" #x1D025)
- ("BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION" #x1D026)
- ("BYZANTINE MUSICAL SYMBOL TINAGMA" #x1D027)
- ("BYZANTINE MUSICAL SYMBOL ANATRICHISMA" #x1D028)
- ("BYZANTINE MUSICAL SYMBOL SEISMA" #x1D029)
- ("BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION" #x1D02A)
- ("BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU" #x1D02B)
- ("BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION" #x1D02C)
- ("BYZANTINE MUSICAL SYMBOL THEMA" #x1D02D)
- ("BYZANTINE MUSICAL SYMBOL LEMOI" #x1D02E)
- ("BYZANTINE MUSICAL SYMBOL DYO" #x1D02F)
- ("BYZANTINE MUSICAL SYMBOL TRIA" #x1D030)
- ("BYZANTINE MUSICAL SYMBOL TESSERA" #x1D031)
- ("BYZANTINE MUSICAL SYMBOL KRATIMATA" #x1D032)
- ("BYZANTINE MUSICAL SYMBOL APESO EXO NEO" #x1D033)
- ("BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION" #x1D034)
- ("BYZANTINE MUSICAL SYMBOL IMIFTHORA" #x1D035)
- ("BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION" #x1D036)
- ("BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON" #x1D037)
- ("BYZANTINE MUSICAL SYMBOL PELASTON" #x1D038)
- ("BYZANTINE MUSICAL SYMBOL PSIFISTON" #x1D039)
- ("BYZANTINE MUSICAL SYMBOL KONTEVMA" #x1D03A)
- ("BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION" #x1D03B)
- ("BYZANTINE MUSICAL SYMBOL RAPISMA" #x1D03C)
- ("BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION" #x1D03D)
- ("BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION" #x1D03E)
- ("BYZANTINE MUSICAL SYMBOL ICHADIN" #x1D03F)
- ("BYZANTINE MUSICAL SYMBOL NANA" #x1D040)
- ("BYZANTINE MUSICAL SYMBOL PETASMA" #x1D041)
- ("BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO" #x1D042)
- ("BYZANTINE MUSICAL SYMBOL TROMIKON ALLO" #x1D043)
- ("BYZANTINE MUSICAL SYMBOL STRAGGISMATA" #x1D044)
- ("BYZANTINE MUSICAL SYMBOL GRONTHISMATA" #x1D045)
- ("BYZANTINE MUSICAL SYMBOL ISON NEO" #x1D046)
- ("BYZANTINE MUSICAL SYMBOL OLIGON NEO" #x1D047)
- ("BYZANTINE MUSICAL SYMBOL OXEIA NEO" #x1D048)
- ("BYZANTINE MUSICAL SYMBOL PETASTI" #x1D049)
- ("BYZANTINE MUSICAL SYMBOL KOUFISMA" #x1D04A)
- ("BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA" #x1D04B)
- ("BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA" #x1D04C)
- ("BYZANTINE MUSICAL SYMBOL PELASTON NEO" #x1D04D)
- ("BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO" #x1D04E)
- ("BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO" #x1D04F)
- ("BYZANTINE MUSICAL SYMBOL YPSILI" #x1D050)
- ("BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO" #x1D051)
- ("BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO" #x1D052)
- ("BYZANTINE MUSICAL SYMBOL YPORROI" #x1D053)
- ("BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON" #x1D054)
- ("BYZANTINE MUSICAL SYMBOL ELAFRON" #x1D055)
- ("BYZANTINE MUSICAL SYMBOL CHAMILI" #x1D056)
- ("BYZANTINE MUSICAL SYMBOL MIKRON ISON" #x1D057)
- ("BYZANTINE MUSICAL SYMBOL VAREIA NEO" #x1D058)
- ("BYZANTINE MUSICAL SYMBOL PIASMA NEO" #x1D059)
- ("BYZANTINE MUSICAL SYMBOL PSIFISTON NEO" #x1D05A)
- ("BYZANTINE MUSICAL SYMBOL OMALON" #x1D05B)
- ("BYZANTINE MUSICAL SYMBOL ANTIKENOMA" #x1D05C)
- ("BYZANTINE MUSICAL SYMBOL LYGISMA" #x1D05D)
- ("BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO" #x1D05E)
- ("BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO" #x1D05F)
- ("BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA" #x1D060)
- ("BYZANTINE MUSICAL SYMBOL KYLISMA" #x1D061)
- ("BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA" #x1D062)
- ("BYZANTINE MUSICAL SYMBOL TROMIKON NEO" #x1D063)
- ("BYZANTINE MUSICAL SYMBOL EKSTREPTON" #x1D064)
- ("BYZANTINE MUSICAL SYMBOL SYNAGMA NEO" #x1D065)
- ("BYZANTINE MUSICAL SYMBOL SYRMA" #x1D066)
- ("BYZANTINE MUSICAL SYMBOL CHOREVMA NEO" #x1D067)
- ("BYZANTINE MUSICAL SYMBOL EPEGERMA" #x1D068)
- ("BYZANTINE MUSICAL SYMBOL SEISMA NEO" #x1D069)
- ("BYZANTINE MUSICAL SYMBOL XIRON KLASMA" #x1D06A)
- ("BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON" #x1D06B)
- ("BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA" #x1D06C)
- ("BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA" #x1D06D)
- ("BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA" #x1D06E)
- ("BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA" #x1D06F)
- ("BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA" #x1D070)
- ("BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA" #x1D071)
- ("BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON" #x1D072)
- ("BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON" #x1D073)
- ("BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON" #x1D074)
- ("BYZANTINE MUSICAL SYMBOL OYRANISMA NEO" #x1D075)
- ("BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO" #x1D076)
- ("BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO" #x1D077)
- ("BYZANTINE MUSICAL SYMBOL THEMA APLOUN" #x1D078)
- ("BYZANTINE MUSICAL SYMBOL THES KAI APOTHES" #x1D079)
- ("BYZANTINE MUSICAL SYMBOL KATAVASMA" #x1D07A)
- ("BYZANTINE MUSICAL SYMBOL ENDOFONON" #x1D07B)
- ("BYZANTINE MUSICAL SYMBOL YFEN KATO" #x1D07C)
- ("BYZANTINE MUSICAL SYMBOL YFEN ANO" #x1D07D)
- ("BYZANTINE MUSICAL SYMBOL STAVROS" #x1D07E)
- ("BYZANTINE MUSICAL SYMBOL KLASMA ANO" #x1D07F)
- ("BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION" #x1D080)
- ("BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION" #x1D081)
- ("BYZANTINE MUSICAL SYMBOL KRATIMA ALLO" #x1D082)
- ("BYZANTINE MUSICAL SYMBOL KRATIMA NEO" #x1D083)
- ("BYZANTINE MUSICAL SYMBOL APODERMA NEO" #x1D084)
- ("BYZANTINE MUSICAL SYMBOL APLI" #x1D085)
- ("BYZANTINE MUSICAL SYMBOL DIPLI" #x1D086)
- ("BYZANTINE MUSICAL SYMBOL TRIPLI" #x1D087)
- ("BYZANTINE MUSICAL SYMBOL TETRAPLI" #x1D088)
- ("BYZANTINE MUSICAL SYMBOL KORONIS" #x1D089)
- ("BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU" #x1D08A)
- ("BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON" #x1D08B)
- ("BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON" #x1D08C)
- ("BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON" #x1D08D)
- ("BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU" #x1D08E)
- ("BYZANTINE MUSICAL SYMBOL GORGON NEO ANO" #x1D08F)
- ("BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA" #x1D090)
- ("BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA" #x1D091)
- ("BYZANTINE MUSICAL SYMBOL DIGORGON" #x1D092)
- ("BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO" #x1D093)
- ("BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO" #x1D094)
- ("BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA" #x1D095)
- ("BYZANTINE MUSICAL SYMBOL TRIGORGON" #x1D096)
- ("BYZANTINE MUSICAL SYMBOL ARGON" #x1D097)
- ("BYZANTINE MUSICAL SYMBOL IMIDIARGON" #x1D098)
- ("BYZANTINE MUSICAL SYMBOL DIARGON" #x1D099)
- ("BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI" #x1D09A)
- ("BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI" #x1D09B)
- ("BYZANTINE MUSICAL SYMBOL AGOGI ARGI" #x1D09C)
- ("BYZANTINE MUSICAL SYMBOL AGOGI METRIA" #x1D09D)
- ("BYZANTINE MUSICAL SYMBOL AGOGI MESI" #x1D09E)
- ("BYZANTINE MUSICAL SYMBOL AGOGI GORGI" #x1D09F)
- ("BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI" #x1D0A0)
- ("BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI" #x1D0A1)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS" #x1D0A2)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS" #x1D0A3)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS" #x1D0A4)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS" #x1D0A5)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS" #x1D0A6)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS" #x1D0A7)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS" #x1D0A8)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS" #x1D0A9)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS" #x1D0AA)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS" #x1D0AB)
- ("BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS" #x1D0AC)
- ("BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS" #x1D0AD)
- ("BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS" #x1D0AE)
- ("BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS" #x1D0AF)
- ("BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS" #x1D0B0)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS" #x1D0B1)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS" #x1D0B2)
- ("BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS" #x1D0B3)
- ("BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN" #x1D0B4)
- ("BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN" #x1D0B5)
- ("BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU" #x1D0B6)
- ("BYZANTINE MUSICAL SYMBOL IMIFONON" #x1D0B7)
- ("BYZANTINE MUSICAL SYMBOL IMIFTHORON" #x1D0B8)
- ("BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU" #x1D0B9)
- ("BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA" #x1D0BA)
- ("BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA" #x1D0BB)
- ("BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS" #x1D0BC)
- ("BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI" #x1D0BD)
- ("BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI" #x1D0BE)
- ("BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE" #x1D0BF)
- ("BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO" #x1D0C0)
- ("BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO" #x1D0C1)
- ("BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO" #x1D0C2)
- ("BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS" #x1D0C3)
- ("BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS" #x1D0C4)
- ("BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS" #x1D0C5)
- ("BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI" #x1D0C6)
- ("BYZANTINE MUSICAL SYMBOL FTHORA NENANO" #x1D0C7)
- ("BYZANTINE MUSICAL SYMBOL CHROA ZYGOS" #x1D0C8)
- ("BYZANTINE MUSICAL SYMBOL CHROA KLITON" #x1D0C9)
- ("BYZANTINE MUSICAL SYMBOL CHROA SPATHI" #x1D0CA)
- ("BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION" #x1D0CB)
- ("BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA" #x1D0CC)
- ("BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION" #x1D0CD)
- ("BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION" #x1D0CE)
- ("BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION" #x1D0CF)
- ("BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA" #x1D0D0)
- ("BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA" #x1D0D1)
- ("BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA" #x1D0D2)
- ("BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA" #x1D0D3)
- ("BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA" #x1D0D4)
- ("BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA" #x1D0D5)
- ("BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA" #x1D0D6)
- ("BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA" #x1D0D7)
- ("BYZANTINE MUSICAL SYMBOL GENIKI DIESIS" #x1D0D8)
- ("BYZANTINE MUSICAL SYMBOL GENIKI YFESIS" #x1D0D9)
- ("BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI" #x1D0DA)
- ("BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI" #x1D0DB)
- ("BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI" #x1D0DC)
- ("BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS" #x1D0DD)
- ("BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS" #x1D0DE)
- ("BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU" #x1D0DF)
- ("BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU" #x1D0E0)
- ("BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU" #x1D0E1)
- ("BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS" #x1D0E2)
- ("BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU" #x1D0E3)
- ("BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU" #x1D0E4)
- ("BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU" #x1D0E5)
- ("BYZANTINE MUSICAL SYMBOL DIGRAMMA GG" #x1D0E6)
- ("BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU" #x1D0E7)
- ("BYZANTINE MUSICAL SYMBOL STIGMA" #x1D0E8)
- ("BYZANTINE MUSICAL SYMBOL ARKTIKO PA" #x1D0E9)
- ("BYZANTINE MUSICAL SYMBOL ARKTIKO VOU" #x1D0EA)
- ("BYZANTINE MUSICAL SYMBOL ARKTIKO GA" #x1D0EB)
- ("BYZANTINE MUSICAL SYMBOL ARKTIKO DI" #x1D0EC)
- ("BYZANTINE MUSICAL SYMBOL ARKTIKO KE" #x1D0ED)
- ("BYZANTINE MUSICAL SYMBOL ARKTIKO ZO" #x1D0EE)
- ("BYZANTINE MUSICAL SYMBOL ARKTIKO NI" #x1D0EF)
- ("BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO" #x1D0F0)
- ("BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO" #x1D0F1)
- ("BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO" #x1D0F2)
- ("BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO" #x1D0F3)
- ("BYZANTINE MUSICAL SYMBOL KLASMA KATO" #x1D0F4)
- ("BYZANTINE MUSICAL SYMBOL GORGON NEO KATO" #x1D0F5)
- ))
-
diff --git a/etc/nxml/1D100-1D1FF.el b/etc/nxml/1D100-1D1FF.el
deleted file mode 100644
index 9c71f5ca78..0000000000
--- a/etc/nxml/1D100-1D1FF.el
+++ /dev/null
@@ -1,222 +0,0 @@
-(nxml-define-char-name-set 'musical-symbols
- '(("MUSICAL SYMBOL SINGLE BARLINE" #x1D100)
- ("MUSICAL SYMBOL DOUBLE BARLINE" #x1D101)
- ("MUSICAL SYMBOL FINAL BARLINE" #x1D102)
- ("MUSICAL SYMBOL REVERSE FINAL BARLINE" #x1D103)
- ("MUSICAL SYMBOL DASHED BARLINE" #x1D104)
- ("MUSICAL SYMBOL SHORT BARLINE" #x1D105)
- ("MUSICAL SYMBOL LEFT REPEAT SIGN" #x1D106)
- ("MUSICAL SYMBOL RIGHT REPEAT SIGN" #x1D107)
- ("MUSICAL SYMBOL REPEAT DOTS" #x1D108)
- ("MUSICAL SYMBOL DAL SEGNO" #x1D109)
- ("MUSICAL SYMBOL DA CAPO" #x1D10A)
- ("MUSICAL SYMBOL SEGNO" #x1D10B)
- ("MUSICAL SYMBOL CODA" #x1D10C)
- ("MUSICAL SYMBOL REPEATED FIGURE-1" #x1D10D)
- ("MUSICAL SYMBOL REPEATED FIGURE-2" #x1D10E)
- ("MUSICAL SYMBOL REPEATED FIGURE-3" #x1D10F)
- ("MUSICAL SYMBOL FERMATA" #x1D110)
- ("MUSICAL SYMBOL FERMATA BELOW" #x1D111)
- ("MUSICAL SYMBOL BREATH MARK" #x1D112)
- ("MUSICAL SYMBOL CAESURA" #x1D113)
- ("MUSICAL SYMBOL BRACE" #x1D114)
- ("MUSICAL SYMBOL BRACKET" #x1D115)
- ("MUSICAL SYMBOL ONE-LINE STAFF" #x1D116)
- ("MUSICAL SYMBOL TWO-LINE STAFF" #x1D117)
- ("MUSICAL SYMBOL THREE-LINE STAFF" #x1D118)
- ("MUSICAL SYMBOL FOUR-LINE STAFF" #x1D119)
- ("MUSICAL SYMBOL FIVE-LINE STAFF" #x1D11A)
- ("MUSICAL SYMBOL SIX-LINE STAFF" #x1D11B)
- ("MUSICAL SYMBOL SIX-STRING FRETBOARD" #x1D11C)
- ("MUSICAL SYMBOL FOUR-STRING FRETBOARD" #x1D11D)
- ("MUSICAL SYMBOL G CLEF" #x1D11E)
- ("MUSICAL SYMBOL G CLEF OTTAVA ALTA" #x1D11F)
- ("MUSICAL SYMBOL G CLEF OTTAVA BASSA" #x1D120)
- ("MUSICAL SYMBOL C CLEF" #x1D121)
- ("MUSICAL SYMBOL F CLEF" #x1D122)
- ("MUSICAL SYMBOL F CLEF OTTAVA ALTA" #x1D123)
- ("MUSICAL SYMBOL F CLEF OTTAVA BASSA" #x1D124)
- ("MUSICAL SYMBOL DRUM CLEF-1" #x1D125)
- ("MUSICAL SYMBOL DRUM CLEF-2" #x1D126)
- ("MUSICAL SYMBOL DOUBLE SHARP" #x1D12A)
- ("MUSICAL SYMBOL DOUBLE FLAT" #x1D12B)
- ("MUSICAL SYMBOL FLAT UP" #x1D12C)
- ("MUSICAL SYMBOL FLAT DOWN" #x1D12D)
- ("MUSICAL SYMBOL NATURAL UP" #x1D12E)
- ("MUSICAL SYMBOL NATURAL DOWN" #x1D12F)
- ("MUSICAL SYMBOL SHARP UP" #x1D130)
- ("MUSICAL SYMBOL SHARP DOWN" #x1D131)
- ("MUSICAL SYMBOL QUARTER TONE SHARP" #x1D132)
- ("MUSICAL SYMBOL QUARTER TONE FLAT" #x1D133)
- ("MUSICAL SYMBOL COMMON TIME" #x1D134)
- ("MUSICAL SYMBOL CUT TIME" #x1D135)
- ("MUSICAL SYMBOL OTTAVA ALTA" #x1D136)
- ("MUSICAL SYMBOL OTTAVA BASSA" #x1D137)
- ("MUSICAL SYMBOL QUINDICESIMA ALTA" #x1D138)
- ("MUSICAL SYMBOL QUINDICESIMA BASSA" #x1D139)
- ("MUSICAL SYMBOL MULTI REST" #x1D13A)
- ("MUSICAL SYMBOL WHOLE REST" #x1D13B)
- ("MUSICAL SYMBOL HALF REST" #x1D13C)
- ("MUSICAL SYMBOL QUARTER REST" #x1D13D)
- ("MUSICAL SYMBOL EIGHTH REST" #x1D13E)
- ("MUSICAL SYMBOL SIXTEENTH REST" #x1D13F)
- ("MUSICAL SYMBOL THIRTY-SECOND REST" #x1D140)
- ("MUSICAL SYMBOL SIXTY-FOURTH REST" #x1D141)
- ("MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST" #x1D142)
- ("MUSICAL SYMBOL X NOTEHEAD" #x1D143)
- ("MUSICAL SYMBOL PLUS NOTEHEAD" #x1D144)
- ("MUSICAL SYMBOL CIRCLE X NOTEHEAD" #x1D145)
- ("MUSICAL SYMBOL SQUARE NOTEHEAD WHITE" #x1D146)
- ("MUSICAL SYMBOL SQUARE NOTEHEAD BLACK" #x1D147)
- ("MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE" #x1D148)
- ("MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK" #x1D149)
- ("MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE" #x1D14A)
- ("MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK" #x1D14B)
- ("MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE" #x1D14C)
- ("MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK" #x1D14D)
- ("MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE" #x1D14E)
- ("MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK" #x1D14F)
- ("MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE" #x1D150)
- ("MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK" #x1D151)
- ("MUSICAL SYMBOL MOON NOTEHEAD WHITE" #x1D152)
- ("MUSICAL SYMBOL MOON NOTEHEAD BLACK" #x1D153)
- ("MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE" #x1D154)
- ("MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK" #x1D155)
- ("MUSICAL SYMBOL PARENTHESIS NOTEHEAD" #x1D156)
- ("MUSICAL SYMBOL VOID NOTEHEAD" #x1D157)
- ("MUSICAL SYMBOL NOTEHEAD BLACK" #x1D158)
- ("MUSICAL SYMBOL NULL NOTEHEAD" #x1D159)
- ("MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE" #x1D15A)
- ("MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK" #x1D15B)
- ("MUSICAL SYMBOL BREVE" #x1D15C)
- ("MUSICAL SYMBOL WHOLE NOTE" #x1D15D)
- ("MUSICAL SYMBOL HALF NOTE" #x1D15E)
- ("MUSICAL SYMBOL QUARTER NOTE" #x1D15F)
- ("MUSICAL SYMBOL EIGHTH NOTE" #x1D160)
- ("MUSICAL SYMBOL SIXTEENTH NOTE" #x1D161)
- ("MUSICAL SYMBOL THIRTY-SECOND NOTE" #x1D162)
- ("MUSICAL SYMBOL SIXTY-FOURTH NOTE" #x1D163)
- ("MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE" #x1D164)
- ("MUSICAL SYMBOL COMBINING STEM" #x1D165)
- ("MUSICAL SYMBOL COMBINING SPRECHGESANG STEM" #x1D166)
- ("MUSICAL SYMBOL COMBINING TREMOLO-1" #x1D167)
- ("MUSICAL SYMBOL COMBINING TREMOLO-2" #x1D168)
- ("MUSICAL SYMBOL COMBINING TREMOLO-3" #x1D169)
- ("MUSICAL SYMBOL FINGERED TREMOLO-1" #x1D16A)
- ("MUSICAL SYMBOL FINGERED TREMOLO-2" #x1D16B)
- ("MUSICAL SYMBOL FINGERED TREMOLO-3" #x1D16C)
- ("MUSICAL SYMBOL COMBINING AUGMENTATION DOT" #x1D16D)
- ("MUSICAL SYMBOL COMBINING FLAG-1" #x1D16E)
- ("MUSICAL SYMBOL COMBINING FLAG-2" #x1D16F)
- ("MUSICAL SYMBOL COMBINING FLAG-3" #x1D170)
- ("MUSICAL SYMBOL COMBINING FLAG-4" #x1D171)
- ("MUSICAL SYMBOL COMBINING FLAG-5" #x1D172)
- ("MUSICAL SYMBOL BEGIN BEAM" #x1D173)
- ("MUSICAL SYMBOL END BEAM" #x1D174)
- ("MUSICAL SYMBOL BEGIN TIE" #x1D175)
- ("MUSICAL SYMBOL END TIE" #x1D176)
- ("MUSICAL SYMBOL BEGIN SLUR" #x1D177)
- ("MUSICAL SYMBOL END SLUR" #x1D178)
- ("MUSICAL SYMBOL BEGIN PHRASE" #x1D179)
- ("MUSICAL SYMBOL END PHRASE" #x1D17A)
- ("MUSICAL SYMBOL COMBINING ACCENT" #x1D17B)
- ("MUSICAL SYMBOL COMBINING STACCATO" #x1D17C)
- ("MUSICAL SYMBOL COMBINING TENUTO" #x1D17D)
- ("MUSICAL SYMBOL COMBINING STACCATISSIMO" #x1D17E)
- ("MUSICAL SYMBOL COMBINING MARCATO" #x1D17F)
- ("MUSICAL SYMBOL COMBINING MARCATO-STACCATO" #x1D180)
- ("MUSICAL SYMBOL COMBINING ACCENT-STACCATO" #x1D181)
- ("MUSICAL SYMBOL COMBINING LOURE" #x1D182)
- ("MUSICAL SYMBOL ARPEGGIATO UP" #x1D183)
- ("MUSICAL SYMBOL ARPEGGIATO DOWN" #x1D184)
- ("MUSICAL SYMBOL COMBINING DOIT" #x1D185)
- ("MUSICAL SYMBOL COMBINING RIP" #x1D186)
- ("MUSICAL SYMBOL COMBINING FLIP" #x1D187)
- ("MUSICAL SYMBOL COMBINING SMEAR" #x1D188)
- ("MUSICAL SYMBOL COMBINING BEND" #x1D189)
- ("MUSICAL SYMBOL COMBINING DOUBLE TONGUE" #x1D18A)
- ("MUSICAL SYMBOL COMBINING TRIPLE TONGUE" #x1D18B)
- ("MUSICAL SYMBOL RINFORZANDO" #x1D18C)
- ("MUSICAL SYMBOL SUBITO" #x1D18D)
- ("MUSICAL SYMBOL Z" #x1D18E)
- ("MUSICAL SYMBOL PIANO" #x1D18F)
- ("MUSICAL SYMBOL MEZZO" #x1D190)
- ("MUSICAL SYMBOL FORTE" #x1D191)
- ("MUSICAL SYMBOL CRESCENDO" #x1D192)
- ("MUSICAL SYMBOL DECRESCENDO" #x1D193)
- ("MUSICAL SYMBOL GRACE NOTE SLASH" #x1D194)
- ("MUSICAL SYMBOL GRACE NOTE NO SLASH" #x1D195)
- ("MUSICAL SYMBOL TR" #x1D196)
- ("MUSICAL SYMBOL TURN" #x1D197)
- ("MUSICAL SYMBOL INVERTED TURN" #x1D198)
- ("MUSICAL SYMBOL TURN SLASH" #x1D199)
- ("MUSICAL SYMBOL TURN UP" #x1D19A)
- ("MUSICAL SYMBOL ORNAMENT STROKE-1" #x1D19B)
- ("MUSICAL SYMBOL ORNAMENT STROKE-2" #x1D19C)
- ("MUSICAL SYMBOL ORNAMENT STROKE-3" #x1D19D)
- ("MUSICAL SYMBOL ORNAMENT STROKE-4" #x1D19E)
- ("MUSICAL SYMBOL ORNAMENT STROKE-5" #x1D19F)
- ("MUSICAL SYMBOL ORNAMENT STROKE-6" #x1D1A0)
- ("MUSICAL SYMBOL ORNAMENT STROKE-7" #x1D1A1)
- ("MUSICAL SYMBOL ORNAMENT STROKE-8" #x1D1A2)
- ("MUSICAL SYMBOL ORNAMENT STROKE-9" #x1D1A3)
- ("MUSICAL SYMBOL ORNAMENT STROKE-10" #x1D1A4)
- ("MUSICAL SYMBOL ORNAMENT STROKE-11" #x1D1A5)
- ("MUSICAL SYMBOL HAUPTSTIMME" #x1D1A6)
- ("MUSICAL SYMBOL NEBENSTIMME" #x1D1A7)
- ("MUSICAL SYMBOL END OF STIMME" #x1D1A8)
- ("MUSICAL SYMBOL DEGREE SLASH" #x1D1A9)
- ("MUSICAL SYMBOL COMBINING DOWN BOW" #x1D1AA)
- ("MUSICAL SYMBOL COMBINING UP BOW" #x1D1AB)
- ("MUSICAL SYMBOL COMBINING HARMONIC" #x1D1AC)
- ("MUSICAL SYMBOL COMBINING SNAP PIZZICATO" #x1D1AD)
- ("MUSICAL SYMBOL PEDAL MARK" #x1D1AE)
- ("MUSICAL SYMBOL PEDAL UP MARK" #x1D1AF)
- ("MUSICAL SYMBOL HALF PEDAL MARK" #x1D1B0)
- ("MUSICAL SYMBOL GLISSANDO UP" #x1D1B1)
- ("MUSICAL SYMBOL GLISSANDO DOWN" #x1D1B2)
- ("MUSICAL SYMBOL WITH FINGERNAILS" #x1D1B3)
- ("MUSICAL SYMBOL DAMP" #x1D1B4)
- ("MUSICAL SYMBOL DAMP ALL" #x1D1B5)
- ("MUSICAL SYMBOL MAXIMA" #x1D1B6)
- ("MUSICAL SYMBOL LONGA" #x1D1B7)
- ("MUSICAL SYMBOL BREVIS" #x1D1B8)
- ("MUSICAL SYMBOL SEMIBREVIS WHITE" #x1D1B9)
- ("MUSICAL SYMBOL SEMIBREVIS BLACK" #x1D1BA)
- ("MUSICAL SYMBOL MINIMA" #x1D1BB)
- ("MUSICAL SYMBOL MINIMA BLACK" #x1D1BC)
- ("MUSICAL SYMBOL SEMIMINIMA WHITE" #x1D1BD)
- ("MUSICAL SYMBOL SEMIMINIMA BLACK" #x1D1BE)
- ("MUSICAL SYMBOL FUSA WHITE" #x1D1BF)
- ("MUSICAL SYMBOL FUSA BLACK" #x1D1C0)
- ("MUSICAL SYMBOL LONGA PERFECTA REST" #x1D1C1)
- ("MUSICAL SYMBOL LONGA IMPERFECTA REST" #x1D1C2)
- ("MUSICAL SYMBOL BREVIS REST" #x1D1C3)
- ("MUSICAL SYMBOL SEMIBREVIS REST" #x1D1C4)
- ("MUSICAL SYMBOL MINIMA REST" #x1D1C5)
- ("MUSICAL SYMBOL SEMIMINIMA REST" #x1D1C6)
- ("MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA" #x1D1C7)
- ("MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA" #x1D1C8)
- ("MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1" #x1D1C9)
- ("MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA" #x1D1CA)
- ("MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA" #x1D1CB)
- ("MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1" #x1D1CC)
- ("MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2" #x1D1CD)
- ("MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3" #x1D1CE)
- ("MUSICAL SYMBOL CROIX" #x1D1CF)
- ("MUSICAL SYMBOL GREGORIAN C CLEF" #x1D1D0)
- ("MUSICAL SYMBOL GREGORIAN F CLEF" #x1D1D1)
- ("MUSICAL SYMBOL SQUARE B" #x1D1D2)
- ("MUSICAL SYMBOL VIRGA" #x1D1D3)
- ("MUSICAL SYMBOL PODATUS" #x1D1D4)
- ("MUSICAL SYMBOL CLIVIS" #x1D1D5)
- ("MUSICAL SYMBOL SCANDICUS" #x1D1D6)
- ("MUSICAL SYMBOL CLIMACUS" #x1D1D7)
- ("MUSICAL SYMBOL TORCULUS" #x1D1D8)
- ("MUSICAL SYMBOL PORRECTUS" #x1D1D9)
- ("MUSICAL SYMBOL PORRECTUS FLEXUS" #x1D1DA)
- ("MUSICAL SYMBOL SCANDICUS FLEXUS" #x1D1DB)
- ("MUSICAL SYMBOL TORCULUS RESUPINUS" #x1D1DC)
- ("MUSICAL SYMBOL PES SUBPUNCTIS" #x1D1DD)
- ))
-
diff --git a/etc/nxml/1D400-1D7FF.el b/etc/nxml/1D400-1D7FF.el
deleted file mode 100644
index 5d4f159300..0000000000
--- a/etc/nxml/1D400-1D7FF.el
+++ /dev/null
@@ -1,994 +0,0 @@
-(nxml-define-char-name-set 'mathematical-alphanumeric-symbols
- '(("MATHEMATICAL BOLD CAPITAL A" #x1D400)
- ("MATHEMATICAL BOLD CAPITAL B" #x1D401)
- ("MATHEMATICAL BOLD CAPITAL C" #x1D402)
- ("MATHEMATICAL BOLD CAPITAL D" #x1D403)
- ("MATHEMATICAL BOLD CAPITAL E" #x1D404)
- ("MATHEMATICAL BOLD CAPITAL F" #x1D405)
- ("MATHEMATICAL BOLD CAPITAL G" #x1D406)
- ("MATHEMATICAL BOLD CAPITAL H" #x1D407)
- ("MATHEMATICAL BOLD CAPITAL I" #x1D408)
- ("MATHEMATICAL BOLD CAPITAL J" #x1D409)
- ("MATHEMATICAL BOLD CAPITAL K" #x1D40A)
- ("MATHEMATICAL BOLD CAPITAL L" #x1D40B)
- ("MATHEMATICAL BOLD CAPITAL M" #x1D40C)
- ("MATHEMATICAL BOLD CAPITAL N" #x1D40D)
- ("MATHEMATICAL BOLD CAPITAL O" #x1D40E)
- ("MATHEMATICAL BOLD CAPITAL P" #x1D40F)
- ("MATHEMATICAL BOLD CAPITAL Q" #x1D410)
- ("MATHEMATICAL BOLD CAPITAL R" #x1D411)
- ("MATHEMATICAL BOLD CAPITAL S" #x1D412)
- ("MATHEMATICAL BOLD CAPITAL T" #x1D413)
- ("MATHEMATICAL BOLD CAPITAL U" #x1D414)
- ("MATHEMATICAL BOLD CAPITAL V" #x1D415)
- ("MATHEMATICAL BOLD CAPITAL W" #x1D416)
- ("MATHEMATICAL BOLD CAPITAL X" #x1D417)
- ("MATHEMATICAL BOLD CAPITAL Y" #x1D418)
- ("MATHEMATICAL BOLD CAPITAL Z" #x1D419)
- ("MATHEMATICAL BOLD SMALL A" #x1D41A)
- ("MATHEMATICAL BOLD SMALL B" #x1D41B)
- ("MATHEMATICAL BOLD SMALL C" #x1D41C)
- ("MATHEMATICAL BOLD SMALL D" #x1D41D)
- ("MATHEMATICAL BOLD SMALL E" #x1D41E)
- ("MATHEMATICAL BOLD SMALL F" #x1D41F)
- ("MATHEMATICAL BOLD SMALL G" #x1D420)
- ("MATHEMATICAL BOLD SMALL H" #x1D421)
- ("MATHEMATICAL BOLD SMALL I" #x1D422)
- ("MATHEMATICAL BOLD SMALL J" #x1D423)
- ("MATHEMATICAL BOLD SMALL K" #x1D424)
- ("MATHEMATICAL BOLD SMALL L" #x1D425)
- ("MATHEMATICAL BOLD SMALL M" #x1D426)
- ("MATHEMATICAL BOLD SMALL N" #x1D427)
- ("MATHEMATICAL BOLD SMALL O" #x1D428)
- ("MATHEMATICAL BOLD SMALL P" #x1D429)
- ("MATHEMATICAL BOLD SMALL Q" #x1D42A)
- ("MATHEMATICAL BOLD SMALL R" #x1D42B)
- ("MATHEMATICAL BOLD SMALL S" #x1D42C)
- ("MATHEMATICAL BOLD SMALL T" #x1D42D)
- ("MATHEMATICAL BOLD SMALL U" #x1D42E)
- ("MATHEMATICAL BOLD SMALL V" #x1D42F)
- ("MATHEMATICAL BOLD SMALL W" #x1D430)
- ("MATHEMATICAL BOLD SMALL X" #x1D431)
- ("MATHEMATICAL BOLD SMALL Y" #x1D432)
- ("MATHEMATICAL BOLD SMALL Z" #x1D433)
- ("MATHEMATICAL ITALIC CAPITAL A" #x1D434)
- ("MATHEMATICAL ITALIC CAPITAL B" #x1D435)
- ("MATHEMATICAL ITALIC CAPITAL C" #x1D436)
- ("MATHEMATICAL ITALIC CAPITAL D" #x1D437)
- ("MATHEMATICAL ITALIC CAPITAL E" #x1D438)
- ("MATHEMATICAL ITALIC CAPITAL F" #x1D439)
- ("MATHEMATICAL ITALIC CAPITAL G" #x1D43A)
- ("MATHEMATICAL ITALIC CAPITAL H" #x1D43B)
- ("MATHEMATICAL ITALIC CAPITAL I" #x1D43C)
- ("MATHEMATICAL ITALIC CAPITAL J" #x1D43D)
- ("MATHEMATICAL ITALIC CAPITAL K" #x1D43E)
- ("MATHEMATICAL ITALIC CAPITAL L" #x1D43F)
- ("MATHEMATICAL ITALIC CAPITAL M" #x1D440)
- ("MATHEMATICAL ITALIC CAPITAL N" #x1D441)
- ("MATHEMATICAL ITALIC CAPITAL O" #x1D442)
- ("MATHEMATICAL ITALIC CAPITAL P" #x1D443)
- ("MATHEMATICAL ITALIC CAPITAL Q" #x1D444)
- ("MATHEMATICAL ITALIC CAPITAL R" #x1D445)
- ("MATHEMATICAL ITALIC CAPITAL S" #x1D446)
- ("MATHEMATICAL ITALIC CAPITAL T" #x1D447)
- ("MATHEMATICAL ITALIC CAPITAL U" #x1D448)
- ("MATHEMATICAL ITALIC CAPITAL V" #x1D449)
- ("MATHEMATICAL ITALIC CAPITAL W" #x1D44A)
- ("MATHEMATICAL ITALIC CAPITAL X" #x1D44B)
- ("MATHEMATICAL ITALIC CAPITAL Y" #x1D44C)
- ("MATHEMATICAL ITALIC CAPITAL Z" #x1D44D)
- ("MATHEMATICAL ITALIC SMALL A" #x1D44E)
- ("MATHEMATICAL ITALIC SMALL B" #x1D44F)
- ("MATHEMATICAL ITALIC SMALL C" #x1D450)
- ("MATHEMATICAL ITALIC SMALL D" #x1D451)
- ("MATHEMATICAL ITALIC SMALL E" #x1D452)
- ("MATHEMATICAL ITALIC SMALL F" #x1D453)
- ("MATHEMATICAL ITALIC SMALL G" #x1D454)
- ("MATHEMATICAL ITALIC SMALL I" #x1D456)
- ("MATHEMATICAL ITALIC SMALL J" #x1D457)
- ("MATHEMATICAL ITALIC SMALL K" #x1D458)
- ("MATHEMATICAL ITALIC SMALL L" #x1D459)
- ("MATHEMATICAL ITALIC SMALL M" #x1D45A)
- ("MATHEMATICAL ITALIC SMALL N" #x1D45B)
- ("MATHEMATICAL ITALIC SMALL O" #x1D45C)
- ("MATHEMATICAL ITALIC SMALL P" #x1D45D)
- ("MATHEMATICAL ITALIC SMALL Q" #x1D45E)
- ("MATHEMATICAL ITALIC SMALL R" #x1D45F)
- ("MATHEMATICAL ITALIC SMALL S" #x1D460)
- ("MATHEMATICAL ITALIC SMALL T" #x1D461)
- ("MATHEMATICAL ITALIC SMALL U" #x1D462)
- ("MATHEMATICAL ITALIC SMALL V" #x1D463)
- ("MATHEMATICAL ITALIC SMALL W" #x1D464)
- ("MATHEMATICAL ITALIC SMALL X" #x1D465)
- ("MATHEMATICAL ITALIC SMALL Y" #x1D466)
- ("MATHEMATICAL ITALIC SMALL Z" #x1D467)
- ("MATHEMATICAL BOLD ITALIC CAPITAL A" #x1D468)
- ("MATHEMATICAL BOLD ITALIC CAPITAL B" #x1D469)
- ("MATHEMATICAL BOLD ITALIC CAPITAL C" #x1D46A)
- ("MATHEMATICAL BOLD ITALIC CAPITAL D" #x1D46B)
- ("MATHEMATICAL BOLD ITALIC CAPITAL E" #x1D46C)
- ("MATHEMATICAL BOLD ITALIC CAPITAL F" #x1D46D)
- ("MATHEMATICAL BOLD ITALIC CAPITAL G" #x1D46E)
- ("MATHEMATICAL BOLD ITALIC CAPITAL H" #x1D46F)
- ("MATHEMATICAL BOLD ITALIC CAPITAL I" #x1D470)
- ("MATHEMATICAL BOLD ITALIC CAPITAL J" #x1D471)
- ("MATHEMATICAL BOLD ITALIC CAPITAL K" #x1D472)
- ("MATHEMATICAL BOLD ITALIC CAPITAL L" #x1D473)
- ("MATHEMATICAL BOLD ITALIC CAPITAL M" #x1D474)
- ("MATHEMATICAL BOLD ITALIC CAPITAL N" #x1D475)
- ("MATHEMATICAL BOLD ITALIC CAPITAL O" #x1D476)
- ("MATHEMATICAL BOLD ITALIC CAPITAL P" #x1D477)
- ("MATHEMATICAL BOLD ITALIC CAPITAL Q" #x1D478)
- ("MATHEMATICAL BOLD ITALIC CAPITAL R" #x1D479)
- ("MATHEMATICAL BOLD ITALIC CAPITAL S" #x1D47A)
- ("MATHEMATICAL BOLD ITALIC CAPITAL T" #x1D47B)
- ("MATHEMATICAL BOLD ITALIC CAPITAL U" #x1D47C)
- ("MATHEMATICAL BOLD ITALIC CAPITAL V" #x1D47D)
- ("MATHEMATICAL BOLD ITALIC CAPITAL W" #x1D47E)
- ("MATHEMATICAL BOLD ITALIC CAPITAL X" #x1D47F)
- ("MATHEMATICAL BOLD ITALIC CAPITAL Y" #x1D480)
- ("MATHEMATICAL BOLD ITALIC CAPITAL Z" #x1D481)
- ("MATHEMATICAL BOLD ITALIC SMALL A" #x1D482)
- ("MATHEMATICAL BOLD ITALIC SMALL B" #x1D483)
- ("MATHEMATICAL BOLD ITALIC SMALL C" #x1D484)
- ("MATHEMATICAL BOLD ITALIC SMALL D" #x1D485)
- ("MATHEMATICAL BOLD ITALIC SMALL E" #x1D486)
- ("MATHEMATICAL BOLD ITALIC SMALL F" #x1D487)
- ("MATHEMATICAL BOLD ITALIC SMALL G" #x1D488)
- ("MATHEMATICAL BOLD ITALIC SMALL H" #x1D489)
- ("MATHEMATICAL BOLD ITALIC SMALL I" #x1D48A)
- ("MATHEMATICAL BOLD ITALIC SMALL J" #x1D48B)
- ("MATHEMATICAL BOLD ITALIC SMALL K" #x1D48C)
- ("MATHEMATICAL BOLD ITALIC SMALL L" #x1D48D)
- ("MATHEMATICAL BOLD ITALIC SMALL M" #x1D48E)
- ("MATHEMATICAL BOLD ITALIC SMALL N" #x1D48F)
- ("MATHEMATICAL BOLD ITALIC SMALL O" #x1D490)
- ("MATHEMATICAL BOLD ITALIC SMALL P" #x1D491)
- ("MATHEMATICAL BOLD ITALIC SMALL Q" #x1D492)
- ("MATHEMATICAL BOLD ITALIC SMALL R" #x1D493)
- ("MATHEMATICAL BOLD ITALIC SMALL S" #x1D494)
- ("MATHEMATICAL BOLD ITALIC SMALL T" #x1D495)
- ("MATHEMATICAL BOLD ITALIC SMALL U" #x1D496)
- ("MATHEMATICAL BOLD ITALIC SMALL V" #x1D497)
- ("MATHEMATICAL BOLD ITALIC SMALL W" #x1D498)
- ("MATHEMATICAL BOLD ITALIC SMALL X" #x1D499)
- ("MATHEMATICAL BOLD ITALIC SMALL Y" #x1D49A)
- ("MATHEMATICAL BOLD ITALIC SMALL Z" #x1D49B)
- ("MATHEMATICAL SCRIPT CAPITAL A" #x1D49C)
- ("MATHEMATICAL SCRIPT CAPITAL C" #x1D49E)
- ("MATHEMATICAL SCRIPT CAPITAL D" #x1D49F)
- ("MATHEMATICAL SCRIPT CAPITAL G" #x1D4A2)
- ("MATHEMATICAL SCRIPT CAPITAL J" #x1D4A5)
- ("MATHEMATICAL SCRIPT CAPITAL K" #x1D4A6)
- ("MATHEMATICAL SCRIPT CAPITAL N" #x1D4A9)
- ("MATHEMATICAL SCRIPT CAPITAL O" #x1D4AA)
- ("MATHEMATICAL SCRIPT CAPITAL P" #x1D4AB)
- ("MATHEMATICAL SCRIPT CAPITAL Q" #x1D4AC)
- ("MATHEMATICAL SCRIPT CAPITAL S" #x1D4AE)
- ("MATHEMATICAL SCRIPT CAPITAL T" #x1D4AF)
- ("MATHEMATICAL SCRIPT CAPITAL U" #x1D4B0)
- ("MATHEMATICAL SCRIPT CAPITAL V" #x1D4B1)
- ("MATHEMATICAL SCRIPT CAPITAL W" #x1D4B2)
- ("MATHEMATICAL SCRIPT CAPITAL X" #x1D4B3)
- ("MATHEMATICAL SCRIPT CAPITAL Y" #x1D4B4)
- ("MATHEMATICAL SCRIPT CAPITAL Z" #x1D4B5)
- ("MATHEMATICAL SCRIPT SMALL A" #x1D4B6)
- ("MATHEMATICAL SCRIPT SMALL B" #x1D4B7)
- ("MATHEMATICAL SCRIPT SMALL C" #x1D4B8)
- ("MATHEMATICAL SCRIPT SMALL D" #x1D4B9)
- ("MATHEMATICAL SCRIPT SMALL F" #x1D4BB)
- ("MATHEMATICAL SCRIPT SMALL H" #x1D4BD)
- ("MATHEMATICAL SCRIPT SMALL I" #x1D4BE)
- ("MATHEMATICAL SCRIPT SMALL J" #x1D4BF)
- ("MATHEMATICAL SCRIPT SMALL K" #x1D4C0)
- ("MATHEMATICAL SCRIPT SMALL M" #x1D4C2)
- ("MATHEMATICAL SCRIPT SMALL N" #x1D4C3)
- ("MATHEMATICAL SCRIPT SMALL P" #x1D4C5)
- ("MATHEMATICAL SCRIPT SMALL Q" #x1D4C6)
- ("MATHEMATICAL SCRIPT SMALL R" #x1D4C7)
- ("MATHEMATICAL SCRIPT SMALL S" #x1D4C8)
- ("MATHEMATICAL SCRIPT SMALL T" #x1D4C9)
- ("MATHEMATICAL SCRIPT SMALL U" #x1D4CA)
- ("MATHEMATICAL SCRIPT SMALL V" #x1D4CB)
- ("MATHEMATICAL SCRIPT SMALL W" #x1D4CC)
- ("MATHEMATICAL SCRIPT SMALL X" #x1D4CD)
- ("MATHEMATICAL SCRIPT SMALL Y" #x1D4CE)
- ("MATHEMATICAL SCRIPT SMALL Z" #x1D4CF)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL A" #x1D4D0)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL B" #x1D4D1)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL C" #x1D4D2)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL D" #x1D4D3)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL E" #x1D4D4)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL F" #x1D4D5)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL G" #x1D4D6)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL H" #x1D4D7)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL I" #x1D4D8)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL J" #x1D4D9)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL K" #x1D4DA)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL L" #x1D4DB)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL M" #x1D4DC)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL N" #x1D4DD)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL O" #x1D4DE)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL P" #x1D4DF)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL Q" #x1D4E0)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL R" #x1D4E1)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL S" #x1D4E2)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL T" #x1D4E3)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL U" #x1D4E4)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL V" #x1D4E5)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL W" #x1D4E6)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL X" #x1D4E7)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL Y" #x1D4E8)
- ("MATHEMATICAL BOLD SCRIPT CAPITAL Z" #x1D4E9)
- ("MATHEMATICAL BOLD SCRIPT SMALL A" #x1D4EA)
- ("MATHEMATICAL BOLD SCRIPT SMALL B" #x1D4EB)
- ("MATHEMATICAL BOLD SCRIPT SMALL C" #x1D4EC)
- ("MATHEMATICAL BOLD SCRIPT SMALL D" #x1D4ED)
- ("MATHEMATICAL BOLD SCRIPT SMALL E" #x1D4EE)
- ("MATHEMATICAL BOLD SCRIPT SMALL F" #x1D4EF)
- ("MATHEMATICAL BOLD SCRIPT SMALL G" #x1D4F0)
- ("MATHEMATICAL BOLD SCRIPT SMALL H" #x1D4F1)
- ("MATHEMATICAL BOLD SCRIPT SMALL I" #x1D4F2)
- ("MATHEMATICAL BOLD SCRIPT SMALL J" #x1D4F3)
- ("MATHEMATICAL BOLD SCRIPT SMALL K" #x1D4F4)
- ("MATHEMATICAL BOLD SCRIPT SMALL L" #x1D4F5)
- ("MATHEMATICAL BOLD SCRIPT SMALL M" #x1D4F6)
- ("MATHEMATICAL BOLD SCRIPT SMALL N" #x1D4F7)
- ("MATHEMATICAL BOLD SCRIPT SMALL O" #x1D4F8)
- ("MATHEMATICAL BOLD SCRIPT SMALL P" #x1D4F9)
- ("MATHEMATICAL BOLD SCRIPT SMALL Q" #x1D4FA)
- ("MATHEMATICAL BOLD SCRIPT SMALL R" #x1D4FB)
- ("MATHEMATICAL BOLD SCRIPT SMALL S" #x1D4FC)
- ("MATHEMATICAL BOLD SCRIPT SMALL T" #x1D4FD)
- ("MATHEMATICAL BOLD SCRIPT SMALL U" #x1D4FE)
- ("MATHEMATICAL BOLD SCRIPT SMALL V" #x1D4FF)
- ("MATHEMATICAL BOLD SCRIPT SMALL W" #x1D500)
- ("MATHEMATICAL BOLD SCRIPT SMALL X" #x1D501)
- ("MATHEMATICAL BOLD SCRIPT SMALL Y" #x1D502)
- ("MATHEMATICAL BOLD SCRIPT SMALL Z" #x1D503)
- ("MATHEMATICAL FRAKTUR CAPITAL A" #x1D504)
- ("MATHEMATICAL FRAKTUR CAPITAL B" #x1D505)
- ("MATHEMATICAL FRAKTUR CAPITAL D" #x1D507)
- ("MATHEMATICAL FRAKTUR CAPITAL E" #x1D508)
- ("MATHEMATICAL FRAKTUR CAPITAL F" #x1D509)
- ("MATHEMATICAL FRAKTUR CAPITAL G" #x1D50A)
- ("MATHEMATICAL FRAKTUR CAPITAL J" #x1D50D)
- ("MATHEMATICAL FRAKTUR CAPITAL K" #x1D50E)
- ("MATHEMATICAL FRAKTUR CAPITAL L" #x1D50F)
- ("MATHEMATICAL FRAKTUR CAPITAL M" #x1D510)
- ("MATHEMATICAL FRAKTUR CAPITAL N" #x1D511)
- ("MATHEMATICAL FRAKTUR CAPITAL O" #x1D512)
- ("MATHEMATICAL FRAKTUR CAPITAL P" #x1D513)
- ("MATHEMATICAL FRAKTUR CAPITAL Q" #x1D514)
- ("MATHEMATICAL FRAKTUR CAPITAL S" #x1D516)
- ("MATHEMATICAL FRAKTUR CAPITAL T" #x1D517)
- ("MATHEMATICAL FRAKTUR CAPITAL U" #x1D518)
- ("MATHEMATICAL FRAKTUR CAPITAL V" #x1D519)
- ("MATHEMATICAL FRAKTUR CAPITAL W" #x1D51A)
- ("MATHEMATICAL FRAKTUR CAPITAL X" #x1D51B)
- ("MATHEMATICAL FRAKTUR CAPITAL Y" #x1D51C)
- ("MATHEMATICAL FRAKTUR SMALL A" #x1D51E)
- ("MATHEMATICAL FRAKTUR SMALL B" #x1D51F)
- ("MATHEMATICAL FRAKTUR SMALL C" #x1D520)
- ("MATHEMATICAL FRAKTUR SMALL D" #x1D521)
- ("MATHEMATICAL FRAKTUR SMALL E" #x1D522)
- ("MATHEMATICAL FRAKTUR SMALL F" #x1D523)
- ("MATHEMATICAL FRAKTUR SMALL G" #x1D524)
- ("MATHEMATICAL FRAKTUR SMALL H" #x1D525)
- ("MATHEMATICAL FRAKTUR SMALL I" #x1D526)
- ("MATHEMATICAL FRAKTUR SMALL J" #x1D527)
- ("MATHEMATICAL FRAKTUR SMALL K" #x1D528)
- ("MATHEMATICAL FRAKTUR SMALL L" #x1D529)
- ("MATHEMATICAL FRAKTUR SMALL M" #x1D52A)
- ("MATHEMATICAL FRAKTUR SMALL N" #x1D52B)
- ("MATHEMATICAL FRAKTUR SMALL O" #x1D52C)
- ("MATHEMATICAL FRAKTUR SMALL P" #x1D52D)
- ("MATHEMATICAL FRAKTUR SMALL Q" #x1D52E)
- ("MATHEMATICAL FRAKTUR SMALL R" #x1D52F)
- ("MATHEMATICAL FRAKTUR SMALL S" #x1D530)
- ("MATHEMATICAL FRAKTUR SMALL T" #x1D531)
- ("MATHEMATICAL FRAKTUR SMALL U" #x1D532)
- ("MATHEMATICAL FRAKTUR SMALL V" #x1D533)
- ("MATHEMATICAL FRAKTUR SMALL W" #x1D534)
- ("MATHEMATICAL FRAKTUR SMALL X" #x1D535)
- ("MATHEMATICAL FRAKTUR SMALL Y" #x1D536)
- ("MATHEMATICAL FRAKTUR SMALL Z" #x1D537)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL A" #x1D538)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL B" #x1D539)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL D" #x1D53B)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL E" #x1D53C)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL F" #x1D53D)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL G" #x1D53E)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL I" #x1D540)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL J" #x1D541)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL K" #x1D542)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL L" #x1D543)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL M" #x1D544)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL O" #x1D546)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL S" #x1D54A)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL T" #x1D54B)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL U" #x1D54C)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL V" #x1D54D)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL W" #x1D54E)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL X" #x1D54F)
- ("MATHEMATICAL DOUBLE-STRUCK CAPITAL Y" #x1D550)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL A" #x1D552)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL B" #x1D553)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL C" #x1D554)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL D" #x1D555)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL E" #x1D556)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL F" #x1D557)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL G" #x1D558)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL H" #x1D559)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL I" #x1D55A)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL J" #x1D55B)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL K" #x1D55C)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL L" #x1D55D)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL M" #x1D55E)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL N" #x1D55F)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL O" #x1D560)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL P" #x1D561)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL Q" #x1D562)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL R" #x1D563)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL S" #x1D564)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL T" #x1D565)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL U" #x1D566)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL V" #x1D567)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL W" #x1D568)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL X" #x1D569)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL Y" #x1D56A)
- ("MATHEMATICAL DOUBLE-STRUCK SMALL Z" #x1D56B)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL A" #x1D56C)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL B" #x1D56D)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL C" #x1D56E)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL D" #x1D56F)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL E" #x1D570)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL F" #x1D571)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL G" #x1D572)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL H" #x1D573)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL I" #x1D574)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL J" #x1D575)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL K" #x1D576)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL L" #x1D577)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL M" #x1D578)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL N" #x1D579)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL O" #x1D57A)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL P" #x1D57B)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL Q" #x1D57C)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL R" #x1D57D)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL S" #x1D57E)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL T" #x1D57F)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL U" #x1D580)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL V" #x1D581)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL W" #x1D582)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL X" #x1D583)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL Y" #x1D584)
- ("MATHEMATICAL BOLD FRAKTUR CAPITAL Z" #x1D585)
- ("MATHEMATICAL BOLD FRAKTUR SMALL A" #x1D586)
- ("MATHEMATICAL BOLD FRAKTUR SMALL B" #x1D587)
- ("MATHEMATICAL BOLD FRAKTUR SMALL C" #x1D588)
- ("MATHEMATICAL BOLD FRAKTUR SMALL D" #x1D589)
- ("MATHEMATICAL BOLD FRAKTUR SMALL E" #x1D58A)
- ("MATHEMATICAL BOLD FRAKTUR SMALL F" #x1D58B)
- ("MATHEMATICAL BOLD FRAKTUR SMALL G" #x1D58C)
- ("MATHEMATICAL BOLD FRAKTUR SMALL H" #x1D58D)
- ("MATHEMATICAL BOLD FRAKTUR SMALL I" #x1D58E)
- ("MATHEMATICAL BOLD FRAKTUR SMALL J" #x1D58F)
- ("MATHEMATICAL BOLD FRAKTUR SMALL K" #x1D590)
- ("MATHEMATICAL BOLD FRAKTUR SMALL L" #x1D591)
- ("MATHEMATICAL BOLD FRAKTUR SMALL M" #x1D592)
- ("MATHEMATICAL BOLD FRAKTUR SMALL N" #x1D593)
- ("MATHEMATICAL BOLD FRAKTUR SMALL O" #x1D594)
- ("MATHEMATICAL BOLD FRAKTUR SMALL P" #x1D595)
- ("MATHEMATICAL BOLD FRAKTUR SMALL Q" #x1D596)
- ("MATHEMATICAL BOLD FRAKTUR SMALL R" #x1D597)
- ("MATHEMATICAL BOLD FRAKTUR SMALL S" #x1D598)
- ("MATHEMATICAL BOLD FRAKTUR SMALL T" #x1D599)
- ("MATHEMATICAL BOLD FRAKTUR SMALL U" #x1D59A)
- ("MATHEMATICAL BOLD FRAKTUR SMALL V" #x1D59B)
- ("MATHEMATICAL BOLD FRAKTUR SMALL W" #x1D59C)
- ("MATHEMATICAL BOLD FRAKTUR SMALL X" #x1D59D)
- ("MATHEMATICAL BOLD FRAKTUR SMALL Y" #x1D59E)
- ("MATHEMATICAL BOLD FRAKTUR SMALL Z" #x1D59F)
- ("MATHEMATICAL SANS-SERIF CAPITAL A" #x1D5A0)
- ("MATHEMATICAL SANS-SERIF CAPITAL B" #x1D5A1)
- ("MATHEMATICAL SANS-SERIF CAPITAL C" #x1D5A2)
- ("MATHEMATICAL SANS-SERIF CAPITAL D" #x1D5A3)
- ("MATHEMATICAL SANS-SERIF CAPITAL E" #x1D5A4)
- ("MATHEMATICAL SANS-SERIF CAPITAL F" #x1D5A5)
- ("MATHEMATICAL SANS-SERIF CAPITAL G" #x1D5A6)
- ("MATHEMATICAL SANS-SERIF CAPITAL H" #x1D5A7)
- ("MATHEMATICAL SANS-SERIF CAPITAL I" #x1D5A8)
- ("MATHEMATICAL SANS-SERIF CAPITAL J" #x1D5A9)
- ("MATHEMATICAL SANS-SERIF CAPITAL K" #x1D5AA)
- ("MATHEMATICAL SANS-SERIF CAPITAL L" #x1D5AB)
- ("MATHEMATICAL SANS-SERIF CAPITAL M" #x1D5AC)
- ("MATHEMATICAL SANS-SERIF CAPITAL N" #x1D5AD)
- ("MATHEMATICAL SANS-SERIF CAPITAL O" #x1D5AE)
- ("MATHEMATICAL SANS-SERIF CAPITAL P" #x1D5AF)
- ("MATHEMATICAL SANS-SERIF CAPITAL Q" #x1D5B0)
- ("MATHEMATICAL SANS-SERIF CAPITAL R" #x1D5B1)
- ("MATHEMATICAL SANS-SERIF CAPITAL S" #x1D5B2)
- ("MATHEMATICAL SANS-SERIF CAPITAL T" #x1D5B3)
- ("MATHEMATICAL SANS-SERIF CAPITAL U" #x1D5B4)
- ("MATHEMATICAL SANS-SERIF CAPITAL V" #x1D5B5)
- ("MATHEMATICAL SANS-SERIF CAPITAL W" #x1D5B6)
- ("MATHEMATICAL SANS-SERIF CAPITAL X" #x1D5B7)
- ("MATHEMATICAL SANS-SERIF CAPITAL Y" #x1D5B8)
- ("MATHEMATICAL SANS-SERIF CAPITAL Z" #x1D5B9)
- ("MATHEMATICAL SANS-SERIF SMALL A" #x1D5BA)
- ("MATHEMATICAL SANS-SERIF SMALL B" #x1D5BB)
- ("MATHEMATICAL SANS-SERIF SMALL C" #x1D5BC)
- ("MATHEMATICAL SANS-SERIF SMALL D" #x1D5BD)
- ("MATHEMATICAL SANS-SERIF SMALL E" #x1D5BE)
- ("MATHEMATICAL SANS-SERIF SMALL F" #x1D5BF)
- ("MATHEMATICAL SANS-SERIF SMALL G" #x1D5C0)
- ("MATHEMATICAL SANS-SERIF SMALL H" #x1D5C1)
- ("MATHEMATICAL SANS-SERIF SMALL I" #x1D5C2)
- ("MATHEMATICAL SANS-SERIF SMALL J" #x1D5C3)
- ("MATHEMATICAL SANS-SERIF SMALL K" #x1D5C4)
- ("MATHEMATICAL SANS-SERIF SMALL L" #x1D5C5)
- ("MATHEMATICAL SANS-SERIF SMALL M" #x1D5C6)
- ("MATHEMATICAL SANS-SERIF SMALL N" #x1D5C7)
- ("MATHEMATICAL SANS-SERIF SMALL O" #x1D5C8)
- ("MATHEMATICAL SANS-SERIF SMALL P" #x1D5C9)
- ("MATHEMATICAL SANS-SERIF SMALL Q" #x1D5CA)
- ("MATHEMATICAL SANS-SERIF SMALL R" #x1D5CB)
- ("MATHEMATICAL SANS-SERIF SMALL S" #x1D5CC)
- ("MATHEMATICAL SANS-SERIF SMALL T" #x1D5CD)
- ("MATHEMATICAL SANS-SERIF SMALL U" #x1D5CE)
- ("MATHEMATICAL SANS-SERIF SMALL V" #x1D5CF)
- ("MATHEMATICAL SANS-SERIF SMALL W" #x1D5D0)
- ("MATHEMATICAL SANS-SERIF SMALL X" #x1D5D1)
- ("MATHEMATICAL SANS-SERIF SMALL Y" #x1D5D2)
- ("MATHEMATICAL SANS-SERIF SMALL Z" #x1D5D3)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL A" #x1D5D4)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL B" #x1D5D5)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL C" #x1D5D6)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL D" #x1D5D7)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL E" #x1D5D8)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL F" #x1D5D9)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL G" #x1D5DA)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL H" #x1D5DB)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL I" #x1D5DC)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL J" #x1D5DD)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL K" #x1D5DE)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL L" #x1D5DF)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL M" #x1D5E0)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL N" #x1D5E1)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL O" #x1D5E2)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL P" #x1D5E3)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL Q" #x1D5E4)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL R" #x1D5E5)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL S" #x1D5E6)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL T" #x1D5E7)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL U" #x1D5E8)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL V" #x1D5E9)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL W" #x1D5EA)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL X" #x1D5EB)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL Y" #x1D5EC)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL Z" #x1D5ED)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL A" #x1D5EE)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL B" #x1D5EF)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL C" #x1D5F0)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL D" #x1D5F1)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL E" #x1D5F2)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL F" #x1D5F3)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL G" #x1D5F4)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL H" #x1D5F5)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL I" #x1D5F6)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL J" #x1D5F7)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL K" #x1D5F8)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL L" #x1D5F9)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL M" #x1D5FA)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL N" #x1D5FB)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL O" #x1D5FC)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL P" #x1D5FD)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL Q" #x1D5FE)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL R" #x1D5FF)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL S" #x1D600)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL T" #x1D601)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL U" #x1D602)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL V" #x1D603)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL W" #x1D604)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL X" #x1D605)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL Y" #x1D606)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL Z" #x1D607)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL A" #x1D608)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL B" #x1D609)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL C" #x1D60A)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL D" #x1D60B)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL E" #x1D60C)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL F" #x1D60D)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL G" #x1D60E)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL H" #x1D60F)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL I" #x1D610)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL J" #x1D611)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL K" #x1D612)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL L" #x1D613)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL M" #x1D614)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL N" #x1D615)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL O" #x1D616)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL P" #x1D617)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q" #x1D618)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL R" #x1D619)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL S" #x1D61A)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL T" #x1D61B)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL U" #x1D61C)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL V" #x1D61D)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL W" #x1D61E)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL X" #x1D61F)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y" #x1D620)
- ("MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z" #x1D621)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL A" #x1D622)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL B" #x1D623)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL C" #x1D624)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL D" #x1D625)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL E" #x1D626)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL F" #x1D627)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL G" #x1D628)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL H" #x1D629)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL I" #x1D62A)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL J" #x1D62B)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL K" #x1D62C)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL L" #x1D62D)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL M" #x1D62E)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL N" #x1D62F)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL O" #x1D630)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL P" #x1D631)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL Q" #x1D632)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL R" #x1D633)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL S" #x1D634)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL T" #x1D635)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL U" #x1D636)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL V" #x1D637)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL W" #x1D638)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL X" #x1D639)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL Y" #x1D63A)
- ("MATHEMATICAL SANS-SERIF ITALIC SMALL Z" #x1D63B)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A" #x1D63C)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B" #x1D63D)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C" #x1D63E)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D" #x1D63F)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E" #x1D640)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F" #x1D641)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G" #x1D642)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H" #x1D643)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I" #x1D644)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J" #x1D645)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K" #x1D646)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L" #x1D647)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M" #x1D648)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N" #x1D649)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O" #x1D64A)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P" #x1D64B)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q" #x1D64C)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R" #x1D64D)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S" #x1D64E)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T" #x1D64F)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U" #x1D650)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V" #x1D651)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W" #x1D652)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X" #x1D653)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y" #x1D654)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z" #x1D655)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A" #x1D656)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B" #x1D657)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C" #x1D658)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D" #x1D659)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E" #x1D65A)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F" #x1D65B)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G" #x1D65C)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H" #x1D65D)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I" #x1D65E)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J" #x1D65F)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K" #x1D660)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L" #x1D661)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M" #x1D662)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N" #x1D663)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O" #x1D664)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P" #x1D665)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q" #x1D666)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R" #x1D667)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S" #x1D668)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T" #x1D669)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U" #x1D66A)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V" #x1D66B)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W" #x1D66C)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X" #x1D66D)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y" #x1D66E)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z" #x1D66F)
- ("MATHEMATICAL MONOSPACE CAPITAL A" #x1D670)
- ("MATHEMATICAL MONOSPACE CAPITAL B" #x1D671)
- ("MATHEMATICAL MONOSPACE CAPITAL C" #x1D672)
- ("MATHEMATICAL MONOSPACE CAPITAL D" #x1D673)
- ("MATHEMATICAL MONOSPACE CAPITAL E" #x1D674)
- ("MATHEMATICAL MONOSPACE CAPITAL F" #x1D675)
- ("MATHEMATICAL MONOSPACE CAPITAL G" #x1D676)
- ("MATHEMATICAL MONOSPACE CAPITAL H" #x1D677)
- ("MATHEMATICAL MONOSPACE CAPITAL I" #x1D678)
- ("MATHEMATICAL MONOSPACE CAPITAL J" #x1D679)
- ("MATHEMATICAL MONOSPACE CAPITAL K" #x1D67A)
- ("MATHEMATICAL MONOSPACE CAPITAL L" #x1D67B)
- ("MATHEMATICAL MONOSPACE CAPITAL M" #x1D67C)
- ("MATHEMATICAL MONOSPACE CAPITAL N" #x1D67D)
- ("MATHEMATICAL MONOSPACE CAPITAL O" #x1D67E)
- ("MATHEMATICAL MONOSPACE CAPITAL P" #x1D67F)
- ("MATHEMATICAL MONOSPACE CAPITAL Q" #x1D680)
- ("MATHEMATICAL MONOSPACE CAPITAL R" #x1D681)
- ("MATHEMATICAL MONOSPACE CAPITAL S" #x1D682)
- ("MATHEMATICAL MONOSPACE CAPITAL T" #x1D683)
- ("MATHEMATICAL MONOSPACE CAPITAL U" #x1D684)
- ("MATHEMATICAL MONOSPACE CAPITAL V" #x1D685)
- ("MATHEMATICAL MONOSPACE CAPITAL W" #x1D686)
- ("MATHEMATICAL MONOSPACE CAPITAL X" #x1D687)
- ("MATHEMATICAL MONOSPACE CAPITAL Y" #x1D688)
- ("MATHEMATICAL MONOSPACE CAPITAL Z" #x1D689)
- ("MATHEMATICAL MONOSPACE SMALL A" #x1D68A)
- ("MATHEMATICAL MONOSPACE SMALL B" #x1D68B)
- ("MATHEMATICAL MONOSPACE SMALL C" #x1D68C)
- ("MATHEMATICAL MONOSPACE SMALL D" #x1D68D)
- ("MATHEMATICAL MONOSPACE SMALL E" #x1D68E)
- ("MATHEMATICAL MONOSPACE SMALL F" #x1D68F)
- ("MATHEMATICAL MONOSPACE SMALL G" #x1D690)
- ("MATHEMATICAL MONOSPACE SMALL H" #x1D691)
- ("MATHEMATICAL MONOSPACE SMALL I" #x1D692)
- ("MATHEMATICAL MONOSPACE SMALL J" #x1D693)
- ("MATHEMATICAL MONOSPACE SMALL K" #x1D694)
- ("MATHEMATICAL MONOSPACE SMALL L" #x1D695)
- ("MATHEMATICAL MONOSPACE SMALL M" #x1D696)
- ("MATHEMATICAL MONOSPACE SMALL N" #x1D697)
- ("MATHEMATICAL MONOSPACE SMALL O" #x1D698)
- ("MATHEMATICAL MONOSPACE SMALL P" #x1D699)
- ("MATHEMATICAL MONOSPACE SMALL Q" #x1D69A)
- ("MATHEMATICAL MONOSPACE SMALL R" #x1D69B)
- ("MATHEMATICAL MONOSPACE SMALL S" #x1D69C)
- ("MATHEMATICAL MONOSPACE SMALL T" #x1D69D)
- ("MATHEMATICAL MONOSPACE SMALL U" #x1D69E)
- ("MATHEMATICAL MONOSPACE SMALL V" #x1D69F)
- ("MATHEMATICAL MONOSPACE SMALL W" #x1D6A0)
- ("MATHEMATICAL MONOSPACE SMALL X" #x1D6A1)
- ("MATHEMATICAL MONOSPACE SMALL Y" #x1D6A2)
- ("MATHEMATICAL MONOSPACE SMALL Z" #x1D6A3)
- ("MATHEMATICAL BOLD CAPITAL ALPHA" #x1D6A8)
- ("MATHEMATICAL BOLD CAPITAL BETA" #x1D6A9)
- ("MATHEMATICAL BOLD CAPITAL GAMMA" #x1D6AA)
- ("MATHEMATICAL BOLD CAPITAL DELTA" #x1D6AB)
- ("MATHEMATICAL BOLD CAPITAL EPSILON" #x1D6AC)
- ("MATHEMATICAL BOLD CAPITAL ZETA" #x1D6AD)
- ("MATHEMATICAL BOLD CAPITAL ETA" #x1D6AE)
- ("MATHEMATICAL BOLD CAPITAL THETA" #x1D6AF)
- ("MATHEMATICAL BOLD CAPITAL IOTA" #x1D6B0)
- ("MATHEMATICAL BOLD CAPITAL KAPPA" #x1D6B1)
- ("MATHEMATICAL BOLD CAPITAL LAMDA" #x1D6B2)
- ("MATHEMATICAL BOLD CAPITAL MU" #x1D6B3)
- ("MATHEMATICAL BOLD CAPITAL NU" #x1D6B4)
- ("MATHEMATICAL BOLD CAPITAL XI" #x1D6B5)
- ("MATHEMATICAL BOLD CAPITAL OMICRON" #x1D6B6)
- ("MATHEMATICAL BOLD CAPITAL PI" #x1D6B7)
- ("MATHEMATICAL BOLD CAPITAL RHO" #x1D6B8)
- ("MATHEMATICAL BOLD CAPITAL THETA SYMBOL" #x1D6B9)
- ("MATHEMATICAL BOLD CAPITAL SIGMA" #x1D6BA)
- ("MATHEMATICAL BOLD CAPITAL TAU" #x1D6BB)
- ("MATHEMATICAL BOLD CAPITAL UPSILON" #x1D6BC)
- ("MATHEMATICAL BOLD CAPITAL PHI" #x1D6BD)
- ("MATHEMATICAL BOLD CAPITAL CHI" #x1D6BE)
- ("MATHEMATICAL BOLD CAPITAL PSI" #x1D6BF)
- ("MATHEMATICAL BOLD CAPITAL OMEGA" #x1D6C0)
- ("MATHEMATICAL BOLD NABLA" #x1D6C1)
- ("MATHEMATICAL BOLD SMALL ALPHA" #x1D6C2)
- ("MATHEMATICAL BOLD SMALL BETA" #x1D6C3)
- ("MATHEMATICAL BOLD SMALL GAMMA" #x1D6C4)
- ("MATHEMATICAL BOLD SMALL DELTA" #x1D6C5)
- ("MATHEMATICAL BOLD SMALL EPSILON" #x1D6C6)
- ("MATHEMATICAL BOLD SMALL ZETA" #x1D6C7)
- ("MATHEMATICAL BOLD SMALL ETA" #x1D6C8)
- ("MATHEMATICAL BOLD SMALL THETA" #x1D6C9)
- ("MATHEMATICAL BOLD SMALL IOTA" #x1D6CA)
- ("MATHEMATICAL BOLD SMALL KAPPA" #x1D6CB)
- ("MATHEMATICAL BOLD SMALL LAMDA" #x1D6CC)
- ("MATHEMATICAL BOLD SMALL MU" #x1D6CD)
- ("MATHEMATICAL BOLD SMALL NU" #x1D6CE)
- ("MATHEMATICAL BOLD SMALL XI" #x1D6CF)
- ("MATHEMATICAL BOLD SMALL OMICRON" #x1D6D0)
- ("MATHEMATICAL BOLD SMALL PI" #x1D6D1)
- ("MATHEMATICAL BOLD SMALL RHO" #x1D6D2)
- ("MATHEMATICAL BOLD SMALL FINAL SIGMA" #x1D6D3)
- ("MATHEMATICAL BOLD SMALL SIGMA" #x1D6D4)
- ("MATHEMATICAL BOLD SMALL TAU" #x1D6D5)
- ("MATHEMATICAL BOLD SMALL UPSILON" #x1D6D6)
- ("MATHEMATICAL BOLD SMALL PHI" #x1D6D7)
- ("MATHEMATICAL BOLD SMALL CHI" #x1D6D8)
- ("MATHEMATICAL BOLD SMALL PSI" #x1D6D9)
- ("MATHEMATICAL BOLD SMALL OMEGA" #x1D6DA)
- ("MATHEMATICAL BOLD PARTIAL DIFFERENTIAL" #x1D6DB)
- ("MATHEMATICAL BOLD EPSILON SYMBOL" #x1D6DC)
- ("MATHEMATICAL BOLD THETA SYMBOL" #x1D6DD)
- ("MATHEMATICAL BOLD KAPPA SYMBOL" #x1D6DE)
- ("MATHEMATICAL BOLD PHI SYMBOL" #x1D6DF)
- ("MATHEMATICAL BOLD RHO SYMBOL" #x1D6E0)
- ("MATHEMATICAL BOLD PI SYMBOL" #x1D6E1)
- ("MATHEMATICAL ITALIC CAPITAL ALPHA" #x1D6E2)
- ("MATHEMATICAL ITALIC CAPITAL BETA" #x1D6E3)
- ("MATHEMATICAL ITALIC CAPITAL GAMMA" #x1D6E4)
- ("MATHEMATICAL ITALIC CAPITAL DELTA" #x1D6E5)
- ("MATHEMATICAL ITALIC CAPITAL EPSILON" #x1D6E6)
- ("MATHEMATICAL ITALIC CAPITAL ZETA" #x1D6E7)
- ("MATHEMATICAL ITALIC CAPITAL ETA" #x1D6E8)
- ("MATHEMATICAL ITALIC CAPITAL THETA" #x1D6E9)
- ("MATHEMATICAL ITALIC CAPITAL IOTA" #x1D6EA)
- ("MATHEMATICAL ITALIC CAPITAL KAPPA" #x1D6EB)
- ("MATHEMATICAL ITALIC CAPITAL LAMDA" #x1D6EC)
- ("MATHEMATICAL ITALIC CAPITAL MU" #x1D6ED)
- ("MATHEMATICAL ITALIC CAPITAL NU" #x1D6EE)
- ("MATHEMATICAL ITALIC CAPITAL XI" #x1D6EF)
- ("MATHEMATICAL ITALIC CAPITAL OMICRON" #x1D6F0)
- ("MATHEMATICAL ITALIC CAPITAL PI" #x1D6F1)
- ("MATHEMATICAL ITALIC CAPITAL RHO" #x1D6F2)
- ("MATHEMATICAL ITALIC CAPITAL THETA SYMBOL" #x1D6F3)
- ("MATHEMATICAL ITALIC CAPITAL SIGMA" #x1D6F4)
- ("MATHEMATICAL ITALIC CAPITAL TAU" #x1D6F5)
- ("MATHEMATICAL ITALIC CAPITAL UPSILON" #x1D6F6)
- ("MATHEMATICAL ITALIC CAPITAL PHI" #x1D6F7)
- ("MATHEMATICAL ITALIC CAPITAL CHI" #x1D6F8)
- ("MATHEMATICAL ITALIC CAPITAL PSI" #x1D6F9)
- ("MATHEMATICAL ITALIC CAPITAL OMEGA" #x1D6FA)
- ("MATHEMATICAL ITALIC NABLA" #x1D6FB)
- ("MATHEMATICAL ITALIC SMALL ALPHA" #x1D6FC)
- ("MATHEMATICAL ITALIC SMALL BETA" #x1D6FD)
- ("MATHEMATICAL ITALIC SMALL GAMMA" #x1D6FE)
- ("MATHEMATICAL ITALIC SMALL DELTA" #x1D6FF)
- ("MATHEMATICAL ITALIC SMALL EPSILON" #x1D700)
- ("MATHEMATICAL ITALIC SMALL ZETA" #x1D701)
- ("MATHEMATICAL ITALIC SMALL ETA" #x1D702)
- ("MATHEMATICAL ITALIC SMALL THETA" #x1D703)
- ("MATHEMATICAL ITALIC SMALL IOTA" #x1D704)
- ("MATHEMATICAL ITALIC SMALL KAPPA" #x1D705)
- ("MATHEMATICAL ITALIC SMALL LAMDA" #x1D706)
- ("MATHEMATICAL ITALIC SMALL MU" #x1D707)
- ("MATHEMATICAL ITALIC SMALL NU" #x1D708)
- ("MATHEMATICAL ITALIC SMALL XI" #x1D709)
- ("MATHEMATICAL ITALIC SMALL OMICRON" #x1D70A)
- ("MATHEMATICAL ITALIC SMALL PI" #x1D70B)
- ("MATHEMATICAL ITALIC SMALL RHO" #x1D70C)
- ("MATHEMATICAL ITALIC SMALL FINAL SIGMA" #x1D70D)
- ("MATHEMATICAL ITALIC SMALL SIGMA" #x1D70E)
- ("MATHEMATICAL ITALIC SMALL TAU" #x1D70F)
- ("MATHEMATICAL ITALIC SMALL UPSILON" #x1D710)
- ("MATHEMATICAL ITALIC SMALL PHI" #x1D711)
- ("MATHEMATICAL ITALIC SMALL CHI" #x1D712)
- ("MATHEMATICAL ITALIC SMALL PSI" #x1D713)
- ("MATHEMATICAL ITALIC SMALL OMEGA" #x1D714)
- ("MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL" #x1D715)
- ("MATHEMATICAL ITALIC EPSILON SYMBOL" #x1D716)
- ("MATHEMATICAL ITALIC THETA SYMBOL" #x1D717)
- ("MATHEMATICAL ITALIC KAPPA SYMBOL" #x1D718)
- ("MATHEMATICAL ITALIC PHI SYMBOL" #x1D719)
- ("MATHEMATICAL ITALIC RHO SYMBOL" #x1D71A)
- ("MATHEMATICAL ITALIC PI SYMBOL" #x1D71B)
- ("MATHEMATICAL BOLD ITALIC CAPITAL ALPHA" #x1D71C)
- ("MATHEMATICAL BOLD ITALIC CAPITAL BETA" #x1D71D)
- ("MATHEMATICAL BOLD ITALIC CAPITAL GAMMA" #x1D71E)
- ("MATHEMATICAL BOLD ITALIC CAPITAL DELTA" #x1D71F)
- ("MATHEMATICAL BOLD ITALIC CAPITAL EPSILON" #x1D720)
- ("MATHEMATICAL BOLD ITALIC CAPITAL ZETA" #x1D721)
- ("MATHEMATICAL BOLD ITALIC CAPITAL ETA" #x1D722)
- ("MATHEMATICAL BOLD ITALIC CAPITAL THETA" #x1D723)
- ("MATHEMATICAL BOLD ITALIC CAPITAL IOTA" #x1D724)
- ("MATHEMATICAL BOLD ITALIC CAPITAL KAPPA" #x1D725)
- ("MATHEMATICAL BOLD ITALIC CAPITAL LAMDA" #x1D726)
- ("MATHEMATICAL BOLD ITALIC CAPITAL MU" #x1D727)
- ("MATHEMATICAL BOLD ITALIC CAPITAL NU" #x1D728)
- ("MATHEMATICAL BOLD ITALIC CAPITAL XI" #x1D729)
- ("MATHEMATICAL BOLD ITALIC CAPITAL OMICRON" #x1D72A)
- ("MATHEMATICAL BOLD ITALIC CAPITAL PI" #x1D72B)
- ("MATHEMATICAL BOLD ITALIC CAPITAL RHO" #x1D72C)
- ("MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL" #x1D72D)
- ("MATHEMATICAL BOLD ITALIC CAPITAL SIGMA" #x1D72E)
- ("MATHEMATICAL BOLD ITALIC CAPITAL TAU" #x1D72F)
- ("MATHEMATICAL BOLD ITALIC CAPITAL UPSILON" #x1D730)
- ("MATHEMATICAL BOLD ITALIC CAPITAL PHI" #x1D731)
- ("MATHEMATICAL BOLD ITALIC CAPITAL CHI" #x1D732)
- ("MATHEMATICAL BOLD ITALIC CAPITAL PSI" #x1D733)
- ("MATHEMATICAL BOLD ITALIC CAPITAL OMEGA" #x1D734)
- ("MATHEMATICAL BOLD ITALIC NABLA" #x1D735)
- ("MATHEMATICAL BOLD ITALIC SMALL ALPHA" #x1D736)
- ("MATHEMATICAL BOLD ITALIC SMALL BETA" #x1D737)
- ("MATHEMATICAL BOLD ITALIC SMALL GAMMA" #x1D738)
- ("MATHEMATICAL BOLD ITALIC SMALL DELTA" #x1D739)
- ("MATHEMATICAL BOLD ITALIC SMALL EPSILON" #x1D73A)
- ("MATHEMATICAL BOLD ITALIC SMALL ZETA" #x1D73B)
- ("MATHEMATICAL BOLD ITALIC SMALL ETA" #x1D73C)
- ("MATHEMATICAL BOLD ITALIC SMALL THETA" #x1D73D)
- ("MATHEMATICAL BOLD ITALIC SMALL IOTA" #x1D73E)
- ("MATHEMATICAL BOLD ITALIC SMALL KAPPA" #x1D73F)
- ("MATHEMATICAL BOLD ITALIC SMALL LAMDA" #x1D740)
- ("MATHEMATICAL BOLD ITALIC SMALL MU" #x1D741)
- ("MATHEMATICAL BOLD ITALIC SMALL NU" #x1D742)
- ("MATHEMATICAL BOLD ITALIC SMALL XI" #x1D743)
- ("MATHEMATICAL BOLD ITALIC SMALL OMICRON" #x1D744)
- ("MATHEMATICAL BOLD ITALIC SMALL PI" #x1D745)
- ("MATHEMATICAL BOLD ITALIC SMALL RHO" #x1D746)
- ("MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA" #x1D747)
- ("MATHEMATICAL BOLD ITALIC SMALL SIGMA" #x1D748)
- ("MATHEMATICAL BOLD ITALIC SMALL TAU" #x1D749)
- ("MATHEMATICAL BOLD ITALIC SMALL UPSILON" #x1D74A)
- ("MATHEMATICAL BOLD ITALIC SMALL PHI" #x1D74B)
- ("MATHEMATICAL BOLD ITALIC SMALL CHI" #x1D74C)
- ("MATHEMATICAL BOLD ITALIC SMALL PSI" #x1D74D)
- ("MATHEMATICAL BOLD ITALIC SMALL OMEGA" #x1D74E)
- ("MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL" #x1D74F)
- ("MATHEMATICAL BOLD ITALIC EPSILON SYMBOL" #x1D750)
- ("MATHEMATICAL BOLD ITALIC THETA SYMBOL" #x1D751)
- ("MATHEMATICAL BOLD ITALIC KAPPA SYMBOL" #x1D752)
- ("MATHEMATICAL BOLD ITALIC PHI SYMBOL" #x1D753)
- ("MATHEMATICAL BOLD ITALIC RHO SYMBOL" #x1D754)
- ("MATHEMATICAL BOLD ITALIC PI SYMBOL" #x1D755)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA" #x1D756)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA" #x1D757)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA" #x1D758)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA" #x1D759)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON" #x1D75A)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA" #x1D75B)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA" #x1D75C)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA" #x1D75D)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA" #x1D75E)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA" #x1D75F)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA" #x1D760)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL MU" #x1D761)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL NU" #x1D762)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL XI" #x1D763)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON" #x1D764)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL PI" #x1D765)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO" #x1D766)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL" #x1D767)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA" #x1D768)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU" #x1D769)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON" #x1D76A)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI" #x1D76B)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI" #x1D76C)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI" #x1D76D)
- ("MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA" #x1D76E)
- ("MATHEMATICAL SANS-SERIF BOLD NABLA" #x1D76F)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA" #x1D770)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL BETA" #x1D771)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA" #x1D772)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL DELTA" #x1D773)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON" #x1D774)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL ZETA" #x1D775)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL ETA" #x1D776)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL THETA" #x1D777)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL IOTA" #x1D778)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA" #x1D779)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA" #x1D77A)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL MU" #x1D77B)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL NU" #x1D77C)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL XI" #x1D77D)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON" #x1D77E)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL PI" #x1D77F)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL RHO" #x1D780)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA" #x1D781)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA" #x1D782)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL TAU" #x1D783)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON" #x1D784)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL PHI" #x1D785)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL CHI" #x1D786)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL PSI" #x1D787)
- ("MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA" #x1D788)
- ("MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL" #x1D789)
- ("MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL" #x1D78A)
- ("MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL" #x1D78B)
- ("MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL" #x1D78C)
- ("MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL" #x1D78D)
- ("MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL" #x1D78E)
- ("MATHEMATICAL SANS-SERIF BOLD PI SYMBOL" #x1D78F)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA" #x1D790)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA" #x1D791)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA" #x1D792)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA" #x1D793)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON" #x1D794)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA" #x1D795)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA" #x1D796)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA" #x1D797)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA" #x1D798)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA" #x1D799)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA" #x1D79A)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU" #x1D79B)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU" #x1D79C)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI" #x1D79D)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON" #x1D79E)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI" #x1D79F)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO" #x1D7A0)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL" #x1D7A1)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA" #x1D7A2)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU" #x1D7A3)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON" #x1D7A4)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI" #x1D7A5)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI" #x1D7A6)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI" #x1D7A7)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA" #x1D7A8)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA" #x1D7A9)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA" #x1D7AA)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA" #x1D7AB)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA" #x1D7AC)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA" #x1D7AD)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON" #x1D7AE)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA" #x1D7AF)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA" #x1D7B0)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA" #x1D7B1)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA" #x1D7B2)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA" #x1D7B3)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA" #x1D7B4)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU" #x1D7B5)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU" #x1D7B6)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI" #x1D7B7)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON" #x1D7B8)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI" #x1D7B9)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO" #x1D7BA)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA" #x1D7BB)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA" #x1D7BC)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU" #x1D7BD)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON" #x1D7BE)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI" #x1D7BF)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI" #x1D7C0)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI" #x1D7C1)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA" #x1D7C2)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL" #x1D7C3)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL" #x1D7C4)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL" #x1D7C5)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL" #x1D7C6)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL" #x1D7C7)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL" #x1D7C8)
- ("MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL" #x1D7C9)
- ("MATHEMATICAL BOLD DIGIT ZERO" #x1D7CE)
- ("MATHEMATICAL BOLD DIGIT ONE" #x1D7CF)
- ("MATHEMATICAL BOLD DIGIT TWO" #x1D7D0)
- ("MATHEMATICAL BOLD DIGIT THREE" #x1D7D1)
- ("MATHEMATICAL BOLD DIGIT FOUR" #x1D7D2)
- ("MATHEMATICAL BOLD DIGIT FIVE" #x1D7D3)
- ("MATHEMATICAL BOLD DIGIT SIX" #x1D7D4)
- ("MATHEMATICAL BOLD DIGIT SEVEN" #x1D7D5)
- ("MATHEMATICAL BOLD DIGIT EIGHT" #x1D7D6)
- ("MATHEMATICAL BOLD DIGIT NINE" #x1D7D7)
- ("MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO" #x1D7D8)
- ("MATHEMATICAL DOUBLE-STRUCK DIGIT ONE" #x1D7D9)
- ("MATHEMATICAL DOUBLE-STRUCK DIGIT TWO" #x1D7DA)
- ("MATHEMATICAL DOUBLE-STRUCK DIGIT THREE" #x1D7DB)
- ("MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR" #x1D7DC)
- ("MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE" #x1D7DD)
- ("MATHEMATICAL DOUBLE-STRUCK DIGIT SIX" #x1D7DE)
- ("MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN" #x1D7DF)
- ("MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT" #x1D7E0)
- ("MATHEMATICAL DOUBLE-STRUCK DIGIT NINE" #x1D7E1)
- ("MATHEMATICAL SANS-SERIF DIGIT ZERO" #x1D7E2)
- ("MATHEMATICAL SANS-SERIF DIGIT ONE" #x1D7E3)
- ("MATHEMATICAL SANS-SERIF DIGIT TWO" #x1D7E4)
- ("MATHEMATICAL SANS-SERIF DIGIT THREE" #x1D7E5)
- ("MATHEMATICAL SANS-SERIF DIGIT FOUR" #x1D7E6)
- ("MATHEMATICAL SANS-SERIF DIGIT FIVE" #x1D7E7)
- ("MATHEMATICAL SANS-SERIF DIGIT SIX" #x1D7E8)
- ("MATHEMATICAL SANS-SERIF DIGIT SEVEN" #x1D7E9)
- ("MATHEMATICAL SANS-SERIF DIGIT EIGHT" #x1D7EA)
- ("MATHEMATICAL SANS-SERIF DIGIT NINE" #x1D7EB)
- ("MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO" #x1D7EC)
- ("MATHEMATICAL SANS-SERIF BOLD DIGIT ONE" #x1D7ED)
- ("MATHEMATICAL SANS-SERIF BOLD DIGIT TWO" #x1D7EE)
- ("MATHEMATICAL SANS-SERIF BOLD DIGIT THREE" #x1D7EF)
- ("MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR" #x1D7F0)
- ("MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE" #x1D7F1)
- ("MATHEMATICAL SANS-SERIF BOLD DIGIT SIX" #x1D7F2)
- ("MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN" #x1D7F3)
- ("MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT" #x1D7F4)
- ("MATHEMATICAL SANS-SERIF BOLD DIGIT NINE" #x1D7F5)
- ("MATHEMATICAL MONOSPACE DIGIT ZERO" #x1D7F6)
- ("MATHEMATICAL MONOSPACE DIGIT ONE" #x1D7F7)
- ("MATHEMATICAL MONOSPACE DIGIT TWO" #x1D7F8)
- ("MATHEMATICAL MONOSPACE DIGIT THREE" #x1D7F9)
- ("MATHEMATICAL MONOSPACE DIGIT FOUR" #x1D7FA)
- ("MATHEMATICAL MONOSPACE DIGIT FIVE" #x1D7FB)
- ("MATHEMATICAL MONOSPACE DIGIT SIX" #x1D7FC)
- ("MATHEMATICAL MONOSPACE DIGIT SEVEN" #x1D7FD)
- ("MATHEMATICAL MONOSPACE DIGIT EIGHT" #x1D7FE)
- ("MATHEMATICAL MONOSPACE DIGIT NINE" #x1D7FF)
- ))
-
diff --git a/etc/nxml/E0000-E007F.el b/etc/nxml/E0000-E007F.el
deleted file mode 100644
index db1d8ad9a3..0000000000
--- a/etc/nxml/E0000-E007F.el
+++ /dev/null
@@ -1,100 +0,0 @@
-(nxml-define-char-name-set 'tags
- '(("LANGUAGE TAG" #xE0001)
- ("TAG SPACE" #xE0020)
- ("TAG EXCLAMATION MARK" #xE0021)
- ("TAG QUOTATION MARK" #xE0022)
- ("TAG NUMBER SIGN" #xE0023)
- ("TAG DOLLAR SIGN" #xE0024)
- ("TAG PERCENT SIGN" #xE0025)
- ("TAG AMPERSAND" #xE0026)
- ("TAG APOSTROPHE" #xE0027)
- ("TAG LEFT PARENTHESIS" #xE0028)
- ("TAG RIGHT PARENTHESIS" #xE0029)
- ("TAG ASTERISK" #xE002A)
- ("TAG PLUS SIGN" #xE002B)
- ("TAG COMMA" #xE002C)
- ("TAG HYPHEN-MINUS" #xE002D)
- ("TAG FULL STOP" #xE002E)
- ("TAG SOLIDUS" #xE002F)
- ("TAG DIGIT ZERO" #xE0030)
- ("TAG DIGIT ONE" #xE0031)
- ("TAG DIGIT TWO" #xE0032)
- ("TAG DIGIT THREE" #xE0033)
- ("TAG DIGIT FOUR" #xE0034)
- ("TAG DIGIT FIVE" #xE0035)
- ("TAG DIGIT SIX" #xE0036)
- ("TAG DIGIT SEVEN" #xE0037)
- ("TAG DIGIT EIGHT" #xE0038)
- ("TAG DIGIT NINE" #xE0039)
- ("TAG COLON" #xE003A)
- ("TAG SEMICOLON" #xE003B)
- ("TAG LESS-THAN SIGN" #xE003C)
- ("TAG EQUALS SIGN" #xE003D)
- ("TAG GREATER-THAN SIGN" #xE003E)
- ("TAG QUESTION MARK" #xE003F)
- ("TAG COMMERCIAL AT" #xE0040)
- ("TAG LATIN CAPITAL LETTER A" #xE0041)
- ("TAG LATIN CAPITAL LETTER B" #xE0042)
- ("TAG LATIN CAPITAL LETTER C" #xE0043)
- ("TAG LATIN CAPITAL LETTER D" #xE0044)
- ("TAG LATIN CAPITAL LETTER E" #xE0045)
- ("TAG LATIN CAPITAL LETTER F" #xE0046)
- ("TAG LATIN CAPITAL LETTER G" #xE0047)
- ("TAG LATIN CAPITAL LETTER H" #xE0048)
- ("TAG LATIN CAPITAL LETTER I" #xE0049)
- ("TAG LATIN CAPITAL LETTER J" #xE004A)
- ("TAG LATIN CAPITAL LETTER K" #xE004B)
- ("TAG LATIN CAPITAL LETTER L" #xE004C)
- ("TAG LATIN CAPITAL LETTER M" #xE004D)
- ("TAG LATIN CAPITAL LETTER N" #xE004E)
- ("TAG LATIN CAPITAL LETTER O" #xE004F)
- ("TAG LATIN CAPITAL LETTER P" #xE0050)
- ("TAG LATIN CAPITAL LETTER Q" #xE0051)
- ("TAG LATIN CAPITAL LETTER R" #xE0052)
- ("TAG LATIN CAPITAL LETTER S" #xE0053)
- ("TAG LATIN CAPITAL LETTER T" #xE0054)
- ("TAG LATIN CAPITAL LETTER U" #xE0055)
- ("TAG LATIN CAPITAL LETTER V" #xE0056)
- ("TAG LATIN CAPITAL LETTER W" #xE0057)
- ("TAG LATIN CAPITAL LETTER X" #xE0058)
- ("TAG LATIN CAPITAL LETTER Y" #xE0059)
- ("TAG LATIN CAPITAL LETTER Z" #xE005A)
- ("TAG LEFT SQUARE BRACKET" #xE005B)
- ("TAG REVERSE SOLIDUS" #xE005C)
- ("TAG RIGHT SQUARE BRACKET" #xE005D)
- ("TAG CIRCUMFLEX ACCENT" #xE005E)
- ("TAG LOW LINE" #xE005F)
- ("TAG GRAVE ACCENT" #xE0060)
- ("TAG LATIN SMALL LETTER A" #xE0061)
- ("TAG LATIN SMALL LETTER B" #xE0062)
- ("TAG LATIN SMALL LETTER C" #xE0063)
- ("TAG LATIN SMALL LETTER D" #xE0064)
- ("TAG LATIN SMALL LETTER E" #xE0065)
- ("TAG LATIN SMALL LETTER F" #xE0066)
- ("TAG LATIN SMALL LETTER G" #xE0067)
- ("TAG LATIN SMALL LETTER H" #xE0068)
- ("TAG LATIN SMALL LETTER I" #xE0069)
- ("TAG LATIN SMALL LETTER J" #xE006A)
- ("TAG LATIN SMALL LETTER K" #xE006B)
- ("TAG LATIN SMALL LETTER L" #xE006C)
- ("TAG LATIN SMALL LETTER M" #xE006D)
- ("TAG LATIN SMALL LETTER N" #xE006E)
- ("TAG LATIN SMALL LETTER O" #xE006F)
- ("TAG LATIN SMALL LETTER P" #xE0070)
- ("TAG LATIN SMALL LETTER Q" #xE0071)
- ("TAG LATIN SMALL LETTER R" #xE0072)
- ("TAG LATIN SMALL LETTER S" #xE0073)
- ("TAG LATIN SMALL LETTER T" #xE0074)
- ("TAG LATIN SMALL LETTER U" #xE0075)
- ("TAG LATIN SMALL LETTER V" #xE0076)
- ("TAG LATIN SMALL LETTER W" #xE0077)
- ("TAG LATIN SMALL LETTER X" #xE0078)
- ("TAG LATIN SMALL LETTER Y" #xE0079)
- ("TAG LATIN SMALL LETTER Z" #xE007A)
- ("TAG LEFT CURLY BRACKET" #xE007B)
- ("TAG VERTICAL LINE" #xE007C)
- ("TAG RIGHT CURLY BRACKET" #xE007D)
- ("TAG TILDE" #xE007E)
- ("CANCEL TAG" #xE007F)
- ))
-
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index 5fa152ae5b..150d943b7e 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -345,9 +345,12 @@ extraclean: maintainer-clean
check:
@echo "We don't have any tests for the lib-src/ directory yet."
+tagsfiles = $(wildcard ${srcdir}/*.[ch])
+
+.PHONY: tags
tags: TAGS
-TAGS: etags${EXEEXT}
- etags *.[ch]
+TAGS: etags${EXEEXT} ${tagsfiles}
+ ./etags ${tagsfiles}
../lib/libgnu.a: $(config_h)
$(MAKE) -C ../lib all
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index dd66d34da7..1991aaa9c0 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -39,7 +39,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
# define CLOSE_SOCKET closesocket
# define INITIALIZE() (initialize_sockets ())
-char *w32_getenv (char *);
+char *w32_getenv (const char *);
#define egetenv(VAR) w32_getenv(VAR)
#else /* !WINDOWSNT */
@@ -254,6 +254,7 @@ get_current_dir_name (void)
#ifdef WINDOWSNT
/* Like strdup but get a fatal error if memory is exhausted. */
+char *xstrdup (const char *);
char *
xstrdup (const char *s)
@@ -269,11 +270,13 @@ xstrdup (const char *s)
#define REG_ROOT "SOFTWARE\\GNU\\Emacs"
+char *w32_get_resource (HKEY, const char *, LPDWORD);
+
/* Retrieve an environment variable from the Emacs subkeys of the registry.
Return NULL if the variable was not found, or it was empty.
This code is based on w32_get_resource (w32.c). */
char *
-w32_get_resource (HKEY predefined, char *key, LPDWORD type)
+w32_get_resource (HKEY predefined, const char *key, LPDWORD type)
{
HKEY hrootkey = NULL;
char *result = NULL;
@@ -285,7 +288,7 @@ w32_get_resource (HKEY predefined, char *key, LPDWORD type)
{
result = (char *) xmalloc (cbData);
- if ((RegQueryValueEx (hrootkey, key, NULL, type, result, &cbData) != ERROR_SUCCESS)
+ if ((RegQueryValueEx (hrootkey, key, NULL, type, (LPBYTE)result, &cbData) != ERROR_SUCCESS)
|| (*result == 0))
{
free (result);
@@ -308,7 +311,7 @@ w32_get_resource (HKEY predefined, char *key, LPDWORD type)
environment variables in the registry if they don't appear in the
environment. */
char *
-w32_getenv (char *envvar)
+w32_getenv (const char *envvar)
{
char *value;
DWORD dwType;
@@ -356,6 +359,7 @@ w32_getenv (char *envvar)
return NULL;
}
+int w32_window_app (void);
int
w32_window_app (void)
@@ -383,11 +387,12 @@ w32_window_app (void)
predictably bad results. By contrast, POSIX execvp passes the arguments
directly into the argv array of the child process. */
+int w32_execvp (const char *, char **);
+
int
w32_execvp (const char *path, char **argv)
{
int i;
- extern int execvp (const char*, char **);
/* Required to allow a .BAT script as alternate editor. */
argv[0] = (char *) alternate_editor;
@@ -407,7 +412,8 @@ w32_execvp (const char *path, char **argv)
#define execvp w32_execvp
/* Emulation of ttyname for Windows. */
-char *
+const char *ttyname (int);
+const char *
ttyname (int fd)
{
return "CONOUT$";
@@ -852,6 +858,7 @@ file_name_absolute_p (const char *filename)
#ifdef WINDOWSNT
/* Wrapper to make WSACleanup a cdecl, as required by atexit. */
+void __cdecl close_winsock (void);
void __cdecl
close_winsock (void)
{
@@ -859,6 +866,7 @@ close_winsock (void)
}
/* Initialize the WinSock2 library. */
+void initialize_sockets (void);
void
initialize_sockets (void)
{
@@ -1186,7 +1194,7 @@ set_local_socket (const char *local_socket_name)
int use_tmpdir = 0;
int saved_errno;
const char *server_name = local_socket_name;
- const char *tmpdir IF_LINT ( = NULL);
+ const char *tmpdir;
char *tmpdir_storage = NULL;
char *socket_name_storage = NULL;
@@ -1380,11 +1388,13 @@ set_socket (int no_exit_if_error)
FARPROC set_fg; /* Pointer to AllowSetForegroundWindow. */
FARPROC get_wc; /* Pointer to RealGetWindowClassA. */
+void w32_set_user_model_id (void);
+
void
w32_set_user_model_id (void)
{
HMODULE shell;
- HRESULT (WINAPI * set_user_model) (wchar_t * id);
+ HRESULT (WINAPI * set_user_model) (const wchar_t * id);
/* On Windows 7 and later, we need to set the user model ID
to associate emacsclient launched files with Emacs frames
@@ -1407,6 +1417,8 @@ w32_set_user_model_id (void)
}
}
+BOOL CALLBACK w32_find_emacs_process (HWND, LPARAM);
+
BOOL CALLBACK
w32_find_emacs_process (HWND hWnd, LPARAM lParam)
{
@@ -1433,6 +1445,7 @@ w32_find_emacs_process (HWND hWnd, LPARAM lParam)
/* Search for a window of class "Emacs" and owned by a process with
process id = emacs_pid. If found, allow it to grab the focus. */
+void w32_give_focus (void);
void
w32_give_focus (void)
@@ -1526,7 +1539,7 @@ start_daemon_and_retry_set_socket (void)
it is ready to accept client connections, by asserting an event
whose name is known to the daemon (defined by nt/inc/ms-w32.h). */
- if (!CreateProcess (NULL, "emacs --daemon", NULL, NULL, FALSE,
+ if (!CreateProcess (NULL, (LPSTR)"emacs --daemon", NULL, NULL, FALSE,
CREATE_NO_WINDOW, NULL, NULL, &si, &pi))
{
char* msg = NULL;
@@ -1548,7 +1561,7 @@ start_daemon_and_retry_set_socket (void)
if ((wait_result = WaitForSingleObject (w32_daemon_event, INFINITE))
!= WAIT_OBJECT_0)
{
- char *msg = NULL;
+ const char *msg = NULL;
switch (wait_result)
{
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 01e230206a..1c85a79289 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -112,7 +112,6 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
#ifdef WINDOWSNT
# include <direct.h>
-# define MAXPATHLEN _MAX_PATH
# undef HAVE_NTGUI
# undef DOS_NT
# define DOS_NT
@@ -1343,7 +1342,7 @@ main (int argc, char **argv)
{
char *cmd =
xmalloc (strlen (tagfile) + whatlen_max +
- sizeof "mv..OTAGS;fgrep -v '\t\t' OTAGS >;rm OTAGS");
+ sizeof "mv..OTAGS;grep -Fv '\t\t' OTAGS >;rm OTAGS");
for (i = 0; i < current_arg; ++i)
{
switch (argbuffer[i].arg_type)
@@ -1356,7 +1355,7 @@ main (int argc, char **argv)
}
char *z = stpcpy (cmd, "mv ");
z = stpcpy (z, tagfile);
- z = stpcpy (z, " OTAGS;fgrep -v '\t");
+ z = stpcpy (z, " OTAGS;grep -Fv '\t");
z = stpcpy (z, argbuffer[i].what);
z = stpcpy (z, "\t' OTAGS >");
z = stpcpy (z, tagfile);
@@ -4070,13 +4069,13 @@ Yacc_entries (FILE *inf)
((assert ("" kw), true) /* syntax error if not a literal string */ \
&& strneq ((cp), kw, sizeof (kw)-1) /* cp points at kw */ \
&& notinname ((cp)[sizeof (kw)-1]) /* end of kw */ \
- && ((cp) = skip_spaces ((cp)+sizeof (kw)-1))) /* skip spaces */
+ && ((cp) = skip_spaces ((cp) + sizeof (kw) - 1), true)) /* skip spaces */
/* Similar to LOOKING_AT but does not use notinname, does not skip */
#define LOOKING_AT_NOCASE(cp, kw) /* the keyword is a literal string */ \
((assert ("" kw), true) /* syntax error if not a literal string */ \
&& strncaseeq ((cp), kw, sizeof (kw)-1) /* cp points at kw */ \
- && ((cp) += sizeof (kw)-1)) /* skip spaces */
+ && ((cp) += sizeof (kw) - 1, true)) /* skip spaces */
/*
* Read a file, but do no processing. This is used to do regexp
diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c
index 32e3817a46..f463f13699 100644
--- a/lib-src/make-docfile.c
+++ b/lib-src/make-docfile.c
@@ -491,7 +491,7 @@ write_c_args (char *func, char *buf, int minargs, int maxargs)
{
char *p;
bool in_ident = false;
- char *ident_start IF_LINT (= NULL);
+ char *ident_start UNINIT;
ptrdiff_t ident_length = 0;
fputs ("(fn", stdout);
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index 90e683ed85..45779dae5c 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -338,7 +338,7 @@ main (int argc, char **argv)
int lockcount = 0;
int status = 0;
#if defined (MAIL_USE_MAILLOCK) && defined (HAVE_TOUCHLOCK)
- time_t touched_lock IF_LINT (= 0);
+ time_t touched_lock;
#endif
if (setuid (getuid ()) < 0 || setregid (-1, real_gid) < 0)
diff --git a/lib-src/ntlib.c b/lib-src/ntlib.c
index 4b25796830..2ac021936a 100644
--- a/lib-src/ntlib.c
+++ b/lib-src/ntlib.c
@@ -34,6 +34,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "ntlib.h"
+char *sys_ctime (const time_t *);
+FILE *sys_fopen (const char *, const char *);
+int sys_chdir (const char *);
+int mkostemp (char *, int);
+int sys_rename (const char *, const char *);
+
/* MinGW64 defines _TIMEZONE_DEFINED and defines 'struct timespec' in
its system headers. */
#ifndef _TIMEZONE_DEFINED
@@ -44,6 +50,8 @@ struct timezone
};
#endif
+void gettimeofday (struct timeval *, struct timezone *);
+
#define MAXPATHLEN _MAX_PATH
/* Emulate sleep...we could have done this with a define, but that
@@ -90,7 +98,7 @@ getppid (void)
getppid_parent = OpenProcess (SYNCHRONIZE, FALSE, atoi (ppid));
if (!getppid_parent)
{
- printf ("Failed to open handle to parent process: %d\n",
+ printf ("Failed to open handle to parent process: %lu\n",
GetLastError ());
exit (1);
}
@@ -107,7 +115,7 @@ getppid (void)
return 1;
case WAIT_FAILED:
default:
- printf ("Checking parent status failed: %d\n", GetLastError ());
+ printf ("Checking parent status failed: %lu\n", GetLastError ());
exit (1);
}
}
@@ -250,16 +258,6 @@ fchown (int fd, unsigned uid, unsigned gid)
return 0;
}
-/* Place a wrapper around the MSVC version of ctime. It returns NULL
- on network directories, so we handle that case here.
- (Ulrich Leodolter, 1/11/95). */
-char *
-sys_ctime (const time_t *t)
-{
- char *str = (char *) ctime (t);
- return (str ? str : "Sun Jan 01 00:00:00 1970");
-}
-
FILE *
sys_fopen (const char * path, const char * mode)
{
diff --git a/lib-src/ntlib.h b/lib-src/ntlib.h
index b49da79f32..4849dccb03 100644
--- a/lib-src/ntlib.h
+++ b/lib-src/ntlib.h
@@ -34,15 +34,12 @@ char *getwd (char *dir);
int getppid (void);
char * getlogin (void);
char * cuserid (char * s);
-unsigned getuid (void);
-unsigned geteuid (void);
unsigned getegid (void);
unsigned getgid (void);
int setuid (unsigned uid);
int setregid (unsigned rgid, unsigned gid);
char * getpass (const char * prompt);
int fchown (int fd, unsigned uid, unsigned gid);
-int mkostemp (char * template, int flags);
/* redirect or undo interceptions created by config.h */
#undef access
diff --git a/lib-src/pop.c b/lib-src/pop.c
index 6e3b6a9a77..74a6fc151a 100644
--- a/lib-src/pop.c
+++ b/lib-src/pop.c
@@ -28,7 +28,17 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <sys/types.h>
#ifdef WINDOWSNT
#include "ntlib.h"
-#include <winsock.h>
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501 /* for getaddrinfo stuff */
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#undef getaddrinfo
+#define getaddrinfo sys_getaddrinfo
+#undef freeaddrinfo
+#define freeaddrinfo sys_freeaddrinfo
+int sys_getaddrinfo (const char * node, const char * service,
+ const struct addrinfo * hints, struct addrinfo ** res);
+void sys_freeaddrinfo (struct addrinfo * ai);
#undef SOCKET_ERROR
#define RECV(s,buf,len,flags) recv (s,buf,len,flags)
#define SEND(s,buf,len,flags) send (s,buf,len,flags)
@@ -92,12 +102,6 @@ extern char *krb_realmofhost (/* char * */);
#endif /* ! KERBEROS5 */
#endif /* KERBEROS */
-#ifndef WINDOWSNT
-#ifndef HAVE_H_ERRNO
-extern int h_errno;
-#endif
-#endif
-
static int socket_connection (char *, int);
static int pop_getline (popserver, char **);
static int sendline (popserver, const char *);
@@ -962,13 +966,9 @@ static int have_winsock = 0;
static int
socket_connection (char *host, int flags)
{
-#ifdef HAVE_GETADDRINFO
struct addrinfo *res, *it;
struct addrinfo hints;
int ret;
-#else /* !HAVE_GETADDRINFO */
- struct hostent *hostent;
-#endif
struct servent *servent;
struct sockaddr_in addr;
char found_port = 0;
@@ -1055,7 +1055,6 @@ socket_connection (char *host, int flags)
}
-#ifdef HAVE_GETADDRINFO
memset (&hints, 0, sizeof (hints));
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME;
@@ -1087,34 +1086,6 @@ socket_connection (char *host, int flags)
}
freeaddrinfo (res);
-#else /* !HAVE_GETADDRINFO */
- do
- {
- hostent = gethostbyname (host);
- try_count++;
- if ((! hostent) && ((h_errno != TRY_AGAIN) || (try_count == 5)))
- {
- strcpy (pop_error, "Could not determine POP server's address");
- return (-1);
- }
- } while (! hostent);
-
- while (*hostent->h_addr_list)
- {
- memcpy (&addr.sin_addr, *hostent->h_addr_list, hostent->h_length);
- if (! connect (sock, (struct sockaddr *) &addr, sizeof (addr)))
- break;
- hostent->h_addr_list++;
- }
- connect_ok = *hostent->h_addr_list != NULL;
- if (! connect_ok)
- {
- realhost = alloca (strlen (hostent->h_name) + 1);
- strcpy (realhost, hostent->h_name);
- }
-
-#endif /* !HAVE_GETADDRINFO */
-
#define CONNECT_ERROR "Could not connect to POP server: "
if (! connect_ok)
@@ -1581,4 +1552,143 @@ find_crlf (char *in_string, int len)
return (0);
}
+#ifdef WINDOWSNT
+/* The following 2 functions are only available since XP, so we load
+ them dynamically and provide fallbacks. */
+
+int (WINAPI *pfn_getaddrinfo) (const char *, const char *,
+ const struct addrinfo *, struct addrinfo **);
+void (WINAPI *pfn_freeaddrinfo) (struct addrinfo *);
+
+static int
+load_ws2 (void)
+{
+ static int ws2_loaded = 0;
+
+ if (!ws2_loaded)
+ {
+ HANDLE ws2_lib = LoadLibrary ("Ws2_32.dll");
+
+ if (ws2_lib != NULL)
+ {
+ ws2_loaded = 1;
+ pfn_getaddrinfo = (void *) GetProcAddress (ws2_lib, "getaddrinfo");
+ pfn_freeaddrinfo = (void *) GetProcAddress (ws2_lib, "freeaddrinfo");
+ /* Paranoia: these two functions should go together, so if
+ one is absent, we cannot use the other. */
+ if (pfn_getaddrinfo == NULL)
+ pfn_freeaddrinfo = NULL;
+ else if (pfn_freeaddrinfo == NULL)
+ pfn_getaddrinfo = NULL;
+ }
+ }
+ if (!ws2_loaded)
+ {
+ errno = ENETDOWN;
+ return -1;
+ }
+ return 0;
+}
+
+
+int
+sys_getaddrinfo (const char *node, const char *service,
+ const struct addrinfo *hints, struct addrinfo **res)
+{
+ int rc;
+
+ if (load_ws2 () != 0)
+ {
+ errno = ENETDOWN;
+ return WSANO_RECOVERY;
+ }
+
+ if (pfn_getaddrinfo)
+ rc = pfn_getaddrinfo (node, service, hints, res);
+ else
+ {
+ int port = 0;
+ struct hostent *host_info;
+ struct gai_storage {
+ struct addrinfo addrinfo;
+ struct sockaddr_in sockaddr_in;
+ } *gai_storage;
+
+ /* We don't support any flags besides AI_CANONNAME. */
+ if (hints && (hints->ai_flags & ~(AI_CANONNAME)) != 0)
+ return WSAEINVAL;
+ /* NODE cannot be NULL, since pop.c has fallbacks for that. */
+ if (!node)
+ return WSAHOST_NOT_FOUND;
+
+ if (service)
+ {
+ const char *protocol =
+ (hints && hints->ai_socktype == SOCK_DGRAM) ? "udp" : "tcp";
+ struct servent *srv = getservbyname (service, protocol);
+
+ if (srv)
+ port = srv->s_port;
+ else
+ return WSAHOST_NOT_FOUND;
+ }
+
+ gai_storage = calloc (1, sizeof *gai_storage);
+ gai_storage->sockaddr_in.sin_port = port;
+ host_info = gethostbyname (node);
+ if (host_info)
+ {
+ memcpy (&gai_storage->sockaddr_in.sin_addr,
+ host_info->h_addr, host_info->h_length);
+ gai_storage->sockaddr_in.sin_family = host_info->h_addrtype;
+ }
+ else
+ {
+ free (gai_storage);
+ return WSAHOST_NOT_FOUND;
+ }
+
+ gai_storage->addrinfo.ai_addr =
+ (struct sockaddr *)&gai_storage->sockaddr_in;
+ gai_storage->addrinfo.ai_addrlen = sizeof (gai_storage->sockaddr_in);
+ if (hints && (hints->ai_flags & AI_CANONNAME) != 0)
+ {
+ gai_storage->addrinfo.ai_canonname = strdup (host_info->h_name);
+ if (!gai_storage->addrinfo.ai_canonname)
+ {
+ free (gai_storage);
+ return WSA_NOT_ENOUGH_MEMORY;
+ }
+ }
+ gai_storage->addrinfo.ai_protocol = (hints) ? hints->ai_protocol : 0;
+ gai_storage->addrinfo.ai_socktype = (hints) ? hints->ai_socktype : 0;
+ gai_storage->addrinfo.ai_family = gai_storage->sockaddr_in.sin_family;
+ gai_storage->addrinfo.ai_next = NULL;
+
+ *res = &gai_storage->addrinfo;
+ rc = 0;
+ }
+
+ return rc;
+}
+
+void
+sys_freeaddrinfo (struct addrinfo *ai)
+{
+ if (load_ws2 () != 0)
+ {
+ errno = ENETDOWN;
+ return;
+ }
+
+ if (pfn_freeaddrinfo)
+ pfn_freeaddrinfo (ai);
+ else
+ {
+ if (ai->ai_canonname)
+ free (ai->ai_canonname);
+ free (ai);
+ }
+}
+#endif /* WINDOWSNT */
#endif /* MAIL_USE_POP */
diff --git a/lib/Makefile.am b/lib/Makefile.am
index cda96811eb..316c63725a 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1,3 +1,23 @@
+# Copyright 2016 Free Software Foundation, Inc.
+
+# This file is part of GNU Emacs.
+
+# GNU Emacs 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 3 of the License, or
+# (at your option) any later version.
+
+# GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+# GNU Emacs assumes GNU Make.
+AUTOMAKE_OPTIONS = -Wno-portability
+
BUILT_SOURCES =
CLEANFILES =
EXTRA_DIST =
@@ -17,6 +37,17 @@ include gnulib.mk
libgnu_a_SOURCES += openat-die.c save-cwd.c
endif
+if HYBRID_MALLOC_LIB
+noinst_LIBRARIES += libegnu.a
+endif
+
+libegnu_a_SOURCES = $(libgnu_a_SOURCES)
+libegnu_a_LIBADD = $(patsubst %.o,e-%.o,$(libgnu_a_LIBADD))
+EXTRA_libegnu_a_SOURCES = $(EXTRA_libgnu_a_SOURCES)
+libegnu_a_SHORTNAME = e
+libegnu_a_CPPFLAGS = -Demacs
+MOSTLYCLEANFILES += libegnu.a
+
.PHONY: bootstrap-clean
bootstrap-clean: maintainer-clean
diff --git a/lib/alloca.in.h b/lib/alloca.in.h
index d457ebb476..6a25ecdb7b 100644
--- a/lib/alloca.in.h
+++ b/lib/alloca.in.h
@@ -51,6 +51,8 @@ extern "C"
void *_alloca (unsigned short);
# pragma intrinsic (_alloca)
# define alloca _alloca
+# elif defined __MVS__
+# include <stdlib.h>
# else
# include <stddef.h>
# ifdef __cplusplus
diff --git a/lib/filevercmp.c b/lib/filevercmp.c
new file mode 100644
index 0000000000..a75c9468e3
--- /dev/null
+++ b/lib/filevercmp.c
@@ -0,0 +1,181 @@
+/*
+ Copyright (C) 1995 Ian Jackson <iwj10@cus.cam.ac.uk>
+ Copyright (C) 2001 Anthony Towns <aj@azure.humbug.org.au>
+ Copyright (C) 2008-2016 Free Software Foundation, Inc.
+
+ This program 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 3 of the License, or
+ (at your option) any later version.
+
+ This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include "filevercmp.h"
+
+#include <sys/types.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+#include <c-ctype.h>
+#include <limits.h>
+
+/* Match a file suffix defined by this regular expression:
+ /(\.[A-Za-z~][A-Za-z0-9~]*)*$/
+ Scan the string *STR and return a pointer to the matching suffix, or
+ NULL if not found. Upon return, *STR points to terminating NUL. */
+static const char *
+match_suffix (const char **str)
+{
+ const char *match = NULL;
+ bool read_alpha = false;
+ while (**str)
+ {
+ if (read_alpha)
+ {
+ read_alpha = false;
+ if (!c_isalpha (**str) && '~' != **str)
+ match = NULL;
+ }
+ else if ('.' == **str)
+ {
+ read_alpha = true;
+ if (!match)
+ match = *str;
+ }
+ else if (!c_isalnum (**str) && '~' != **str)
+ match = NULL;
+ (*str)++;
+ }
+ return match;
+}
+
+/* verrevcmp helper function */
+static int
+order (unsigned char c)
+{
+ if (c_isdigit (c))
+ return 0;
+ else if (c_isalpha (c))
+ return c;
+ else if (c == '~')
+ return -1;
+ else
+ return (int) c + UCHAR_MAX + 1;
+}
+
+/* slightly modified verrevcmp function from dpkg
+ S1, S2 - compared string
+ S1_LEN, S2_LEN - length of strings to be scanned
+
+ This implements the algorithm for comparison of version strings
+ specified by Debian and now widely adopted. The detailed
+ specification can be found in the Debian Policy Manual in the
+ section on the 'Version' control field. This version of the code
+ implements that from s5.6.12 of Debian Policy v3.8.0.1
+ http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version */
+static int _GL_ATTRIBUTE_PURE
+verrevcmp (const char *s1, size_t s1_len, const char *s2, size_t s2_len)
+{
+ size_t s1_pos = 0;
+ size_t s2_pos = 0;
+ while (s1_pos < s1_len || s2_pos < s2_len)
+ {
+ int first_diff = 0;
+ while ((s1_pos < s1_len && !c_isdigit (s1[s1_pos]))
+ || (s2_pos < s2_len && !c_isdigit (s2[s2_pos])))
+ {
+ int s1_c = (s1_pos == s1_len) ? 0 : order (s1[s1_pos]);
+ int s2_c = (s2_pos == s2_len) ? 0 : order (s2[s2_pos]);
+ if (s1_c != s2_c)
+ return s1_c - s2_c;
+ s1_pos++;
+ s2_pos++;
+ }
+ while (s1[s1_pos] == '0')
+ s1_pos++;
+ while (s2[s2_pos] == '0')
+ s2_pos++;
+ while (c_isdigit (s1[s1_pos]) && c_isdigit (s2[s2_pos]))
+ {
+ if (!first_diff)
+ first_diff = s1[s1_pos] - s2[s2_pos];
+ s1_pos++;
+ s2_pos++;
+ }
+ if (c_isdigit (s1[s1_pos]))
+ return 1;
+ if (c_isdigit (s2[s2_pos]))
+ return -1;
+ if (first_diff)
+ return first_diff;
+ }
+ return 0;
+}
+
+/* Compare version strings S1 and S2.
+ See filevercmp.h for function description. */
+int
+filevercmp (const char *s1, const char *s2)
+{
+ const char *s1_pos;
+ const char *s2_pos;
+ const char *s1_suffix, *s2_suffix;
+ size_t s1_len, s2_len;
+ int result;
+
+ /* easy comparison to see if strings are identical */
+ int simple_cmp = strcmp (s1, s2);
+ if (simple_cmp == 0)
+ return 0;
+
+ /* special handle for "", "." and ".." */
+ if (!*s1)
+ return -1;
+ if (!*s2)
+ return 1;
+ if (0 == strcmp (".", s1))
+ return -1;
+ if (0 == strcmp (".", s2))
+ return 1;
+ if (0 == strcmp ("..", s1))
+ return -1;
+ if (0 == strcmp ("..", s2))
+ return 1;
+
+ /* special handle for other hidden files */
+ if (*s1 == '.' && *s2 != '.')
+ return -1;
+ if (*s1 != '.' && *s2 == '.')
+ return 1;
+ if (*s1 == '.' && *s2 == '.')
+ {
+ s1++;
+ s2++;
+ }
+
+ /* "cut" file suffixes */
+ s1_pos = s1;
+ s2_pos = s2;
+ s1_suffix = match_suffix (&s1_pos);
+ s2_suffix = match_suffix (&s2_pos);
+ s1_len = (s1_suffix ? s1_suffix : s1_pos) - s1;
+ s2_len = (s2_suffix ? s2_suffix : s2_pos) - s2;
+
+ /* restore file suffixes if strings are identical after "cut" */
+ if ((s1_suffix || s2_suffix) && (s1_len == s2_len)
+ && 0 == strncmp (s1, s2, s1_len))
+ {
+ s1_len = s1_pos - s1;
+ s2_len = s2_pos - s2;
+ }
+
+ result = verrevcmp (s1, s1_len, s2, s2_len);
+ return result == 0 ? simple_cmp : result;
+}
diff --git a/lib/filevercmp.h b/lib/filevercmp.h
new file mode 100644
index 0000000000..220b71b579
--- /dev/null
+++ b/lib/filevercmp.h
@@ -0,0 +1,42 @@
+/*
+ Copyright (C) 1995 Ian Jackson <iwj10@cus.cam.ac.uk>
+ Copyright (C) 2001 Anthony Towns <aj@azure.humbug.org.au>
+ Copyright (C) 2008-2016 Free Software Foundation, Inc.
+
+ This program 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 3 of the License, or
+ (at your option) any later version.
+
+ This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef FILEVERCMP_H
+#define FILEVERCMP_H
+
+/* Compare version strings:
+
+ This function compares strings S1 and S2:
+ 1) By PREFIX in the same way as strcmp.
+ 2) Then by VERSION (most similarly to version compare of Debian's dpkg).
+ Leading zeros in version numbers are ignored.
+ 3) If both (PREFIX and VERSION) are equal, strcmp function is used for
+ comparison. So this function can return 0 if (and only if) strings S1
+ and S2 are identical.
+
+ It returns number >0 for S1 > S2, 0 for S1 == S2 and number <0 for S1 < S2.
+
+ This function compares strings, in a way that if VER1 and VER2 are version
+ numbers and PREFIX and SUFFIX (SUFFIX defined as (\.[A-Za-z~][A-Za-z0-9~]*)*)
+ are strings then VER1 < VER2 implies filevercmp (PREFIX VER1 SUFFIX,
+ PREFIX VER2 SUFFIX) < 0.
+
+ This function is intended to be a replacement for strverscmp. */
+int filevercmp (const char *s1, const char *s2) _GL_ATTRIBUTE_PURE;
+
+#endif /* FILEVERCMP_H */
diff --git a/lib/gettext.h b/lib/gettext.h
index 00af87265b..9a232cc3a8 100644
--- a/lib/gettext.h
+++ b/lib/gettext.h
@@ -225,15 +225,17 @@ dcpgettext_expr (const char *domain,
if (msg_ctxt_id != NULL)
#endif
{
+ int found_translation;
memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
msg_ctxt_id[msgctxt_len - 1] = '\004';
memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
translation = dcgettext (domain, msg_ctxt_id, category);
+ found_translation = (translation != msg_ctxt_id);
#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
if (msg_ctxt_id != buf)
free (msg_ctxt_id);
#endif
- if (translation != msg_ctxt_id)
+ if (found_translation)
return translation;
}
return msgid;
@@ -271,15 +273,17 @@ dcnpgettext_expr (const char *domain,
if (msg_ctxt_id != NULL)
#endif
{
+ int found_translation;
memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
msg_ctxt_id[msgctxt_len - 1] = '\004';
memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+ found_translation = !(translation == msg_ctxt_id || translation == msgid_plural);
#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
if (msg_ctxt_id != buf)
free (msg_ctxt_id);
#endif
- if (!(translation == msg_ctxt_id || translation == msgid_plural))
+ if (found_translation)
return translation;
}
return (n == 1 ? msgid : msgid_plural);
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
index b920cbbc9b..cc8429658e 100644
--- a/lib/gnulib.mk
+++ b/lib/gnulib.mk
@@ -21,7 +21,7 @@
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=flexmember --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=setenv --avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib --avoid=unsetenv --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt binary-io byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog ignore-value intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qcopy-acl readlink readlinkat sig2str socklen stat-time stdalign stddef stdio stpcpy strftime strtoimax strtoumax symlink sys_stat sys_time time time_r time_rz timegm timer-time timespec-add timespec-sub unsetenv update-copyright utimens vla warnings
+# Reproduce by: gnulib-tool --import --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=flexmember --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=setenv --avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib --avoid=unsetenv --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt binary-io byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode filevercmp fstatat fsync getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog ignore-value intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qcopy-acl readlink readlinkat sig2str socklen stat-time std-gnu11 stdalign stddef stdio stpcpy strftime strtoimax strtoumax symlink sys_stat sys_time time time_r time_rz timegm timer-time timespec-add timespec-sub unsetenv update-copyright utimens vla warnings
MOSTLYCLEANFILES += core *.stackdump
@@ -441,6 +441,14 @@ EXTRA_DIST += filemode.h
## end gnulib module filemode
+## begin gnulib module filevercmp
+
+libgnu_a_SOURCES += filevercmp.c
+
+EXTRA_DIST += filevercmp.h
+
+## end gnulib module filevercmp
+
## begin gnulib module fpending
diff --git a/lib/intprops.h b/lib/intprops.h
index a278497b74..e1fce5c96a 100644
--- a/lib/intprops.h
+++ b/lib/intprops.h
@@ -21,6 +21,7 @@
#define _GL_INTPROPS_H
#include <limits.h>
+#include <verify.h>
/* Return a value with the common real type of E and V and the value of V. */
#define _GL_INT_CONVERT(e, v) (0 * (e) + (v))
@@ -36,17 +37,6 @@
an integer. */
#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
-/* True if negative values of the signed integer type T use two's
- complement, ones' complement, or signed magnitude representation,
- respectively. Much GNU code assumes two's complement, but some
- people like to be portable to all possible C hosts. */
-#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
-#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
-#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
-
-/* True if the signed integer expression E uses two's complement. */
-#define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1)
-
/* True if the real type T is signed. */
#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
@@ -55,18 +45,10 @@
#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)
-/* Minimum and maximum values for integer types and expressions. These
- macros have undefined behavior if T is signed and has padding bits.
- If this is a problem for you, please let us know how to fix it for
- your host. */
+/* Minimum and maximum values for integer types and expressions. */
/* The maximum and minimum values for the integer type T. */
-#define TYPE_MINIMUM(t) \
- ((t) (! TYPE_SIGNED (t) \
- ? (t) 0 \
- : TYPE_SIGNED_MAGNITUDE (t) \
- ? ~ (t) 0 \
- : ~ TYPE_MAXIMUM (t)))
+#define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t))
#define TYPE_MAXIMUM(t) \
((t) (! TYPE_SIGNED (t) \
? (t) -1 \
@@ -76,7 +58,7 @@
after integer promotion. E should not have side effects. */
#define _GL_INT_MINIMUM(e) \
(EXPR_SIGNED (e) \
- ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e) \
+ ? ~ _GL_SIGNED_INT_MAXIMUM (e) \
: _GL_INT_CONVERT (e, 0))
#define _GL_INT_MAXIMUM(e) \
(EXPR_SIGNED (e) \
@@ -85,8 +67,25 @@
#define _GL_SIGNED_INT_MAXIMUM(e) \
(((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1)
+/* This include file assumes that signed types are two's complement without
+ padding bits; the above macros have undefined behavior otherwise.
+ If this is a problem for you, please let us know how to fix it for your host.
+ As a sanity check, test the assumption for some signed types that
+ <limits.h> bounds. */
+verify (TYPE_MINIMUM (signed char) == SCHAR_MIN);
+verify (TYPE_MAXIMUM (signed char) == SCHAR_MAX);
+verify (TYPE_MINIMUM (short int) == SHRT_MIN);
+verify (TYPE_MAXIMUM (short int) == SHRT_MAX);
+verify (TYPE_MINIMUM (int) == INT_MIN);
+verify (TYPE_MAXIMUM (int) == INT_MAX);
+verify (TYPE_MINIMUM (long int) == LONG_MIN);
+verify (TYPE_MAXIMUM (long int) == LONG_MAX);
+#ifdef LLONG_MAX
+verify (TYPE_MINIMUM (long long int) == LLONG_MIN);
+verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
+#endif
-/* Return 1 if the __typeof__ keyword works. This could be done by
+/* Does the __typeof__ keyword work? This could be done by
'configure', but for now it's easier to do it by hand. */
#if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
|| (0x5110 <= __SUNPRO_C && !__STDC__))
@@ -223,24 +222,35 @@
? (a) < (min) >> (b) \
: (max) >> (b) < (a))
+/* True if __builtin_add_overflow (A, B, P) works when P is null. */
+#define _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL (7 <= __GNUC__)
/* The _GL*_OVERFLOW macros have the same restrictions as the
*_RANGE_OVERFLOW macros, except that they do not assume that operands
(e.g., A and B) have the same type as MIN and MAX. Instead, they assume
that the result (e.g., A + B) has that type. */
-#define _GL_ADD_OVERFLOW(a, b, min, max) \
- ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \
- : (a) < 0 ? (b) <= (a) + (b) \
- : (b) < 0 ? (a) <= (a) + (b) \
- : (a) + (b) < (b))
-#define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
- ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \
- : (a) < 0 ? 1 \
- : (b) < 0 ? (a) - (b) <= (a) \
- : (a) < (b))
-#define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
- (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \
- || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max))
+#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL
+# define _GL_ADD_OVERFLOW(a, b, min, max)
+ __builtin_add_overflow (a, b, (__typeof__ ((a) + (b)) *) 0)
+# define _GL_SUBTRACT_OVERFLOW(a, b, min, max)
+ __builtin_sub_overflow (a, b, (__typeof__ ((a) - (b)) *) 0)
+# define _GL_MULTIPLY_OVERFLOW(a, b, min, max)
+ __builtin_mul_overflow (a, b, (__typeof__ ((a) * (b)) *) 0)
+#else
+# define _GL_ADD_OVERFLOW(a, b, min, max) \
+ ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \
+ : (a) < 0 ? (b) <= (a) + (b) \
+ : (b) < 0 ? (a) <= (a) + (b) \
+ : (a) + (b) < (b))
+# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
+ ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \
+ : (a) < 0 ? 1 \
+ : (b) < 0 ? (a) - (b) <= (a) \
+ : (a) < (b))
+# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
+ (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \
+ || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max))
+#endif
#define _GL_DIVIDE_OVERFLOW(a, b, min, max) \
((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \
: (a) < 0 ? (b) <= (a) + (b) - 1 \
@@ -305,8 +315,12 @@
_GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
#define INT_SUBTRACT_OVERFLOW(a, b) \
_GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
-#define INT_NEGATE_OVERFLOW(a) \
- INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
+#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL
+# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a)
+#else
+# define INT_NEGATE_OVERFLOW(a) \
+ INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
+#endif
#define INT_MULTIPLY_OVERFLOW(a, b) \
_GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW)
#define INT_DIVIDE_OVERFLOW(a, b) \
@@ -326,7 +340,7 @@
_GL_INT_MINIMUM (0 * (b) + (a)), \
_GL_INT_MAXIMUM (0 * (b) + (a)))
-/* Compute A + B, A - B, A * B, respectively, storing the result into *R.
+/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R.
Return 1 if the result overflows. See above for restrictions. */
#define INT_ADD_WRAPV(a, b, r) \
_GL_INT_OP_WRAPV (a, b, r, +, __builtin_add_overflow, INT_ADD_OVERFLOW)
@@ -351,9 +365,10 @@
# define _GL__GENERIC_BOGUS 0
#endif
-/* Store A <op> B into *R, where OP specifies the operation.
- BUILTIN is the builtin operation, and OVERFLOW the overflow predicate.
- See above for restrictions. */
+/* Store the low-order bits of A <op> B into *R, where OP specifies
+ the operation. BUILTIN is the builtin operation, and OVERFLOW the
+ overflow predicate. Return 1 if the result overflows. See above
+ for restrictions. */
#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow)
# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r)
#elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS
@@ -404,7 +419,8 @@
/* Store the low-order bits of A <op> B into *R, where the operation
is given by OP. Use the unsigned type UT for calculation to avoid
overflow problems. *R's type is T, with extremal values TMIN and
- TMAX. T must be a signed integer type. */
+ TMAX. T must be a signed integer type. Return 1 if the result
+ overflows. */
#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \
(sizeof ((a) op (b)) < sizeof (t) \
? _GL_INT_OP_CALC1 ((t) (a), (t) (b), r, op, overflow, ut, t, tmin, tmax) \
diff --git a/lib/mktime-internal.h b/lib/mktime-internal.h
index 4287acf4ac..2f586aef64 100644
--- a/lib/mktime-internal.h
+++ b/lib/mktime-internal.h
@@ -1,4 +1,37 @@
+/* mktime variant that also uses an offset guess
+
+ Copyright 2016 Free Software Foundation, Inc.
+
+ This program 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 3 of the License, or (at your option) any later version.
+
+ This program 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 this program; if not, see
+ <http://www.gnu.org/licenses/>. */
+
#include <time.h>
+
+/* mktime_offset_t is a signed type wide enough to hold a UTC offset
+ in seconds, and used as part of the type of the offset-guess
+ argument to mktime_internal. Use time_t on platforms where time_t
+ is signed, to be compatible with platforms like BeOS that export
+ this implementation detail of mktime. On platforms where time_t is
+ unsigned, GNU and POSIX code can assume 'int' is at least 32 bits
+ which is wide enough for a UTC offset. */
+
+#if TIME_T_IS_SIGNED
+typedef time_t mktime_offset_t;
+#else
+typedef int mktime_offset_t;
+#endif
+
time_t mktime_internal (struct tm *,
struct tm * (*) (time_t const *, struct tm *),
- time_t *);
+ mktime_offset_t *);
diff --git a/lib/mktime.c b/lib/mktime.c
index c9738d0daf..8ee4e5ecab 100644
--- a/lib/mktime.c
+++ b/lib/mktime.c
@@ -17,11 +17,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-/* Define this to have a standalone program to test this implementation of
+/* Define this to 1 to have a standalone program to test this implementation of
mktime. */
-/* #define DEBUG_MKTIME 1 */
+#ifndef DEBUG_MKTIME
+# define DEBUG_MKTIME 0
+#endif
-#ifndef _LIBC
+#if !defined _LIBC && !DEBUG_MKTIME
# include <config.h>
#endif
@@ -35,114 +37,76 @@
#include <time.h>
#include <limits.h>
+#include <stdbool.h>
-#include <string.h> /* For the real memcpy prototype. */
+#include <intprops.h>
+#include <verify.h>
-#if defined DEBUG_MKTIME && DEBUG_MKTIME
+#if DEBUG_MKTIME
# include <stdio.h>
# include <stdlib.h>
+# include <string.h>
/* Make it work even if the system's libc has its own mktime routine. */
# undef mktime
# define mktime my_mktime
-#endif /* DEBUG_MKTIME */
-
-/* Some of the code in this file assumes that signed integer overflow
- silently wraps around. This assumption can't easily be programmed
- around, nor can it be checked for portably at compile-time or
- easily eliminated at run-time.
-
- Define WRAPV to 1 if the assumption is valid and if
- #pragma GCC optimize ("wrapv")
- does not trigger GCC bug 51793
- <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51793>.
- Otherwise, define it to 0; this forces the use of slower code that,
- while not guaranteed by the C Standard, works on all production
- platforms that we know about. */
-#ifndef WRAPV
-# if (((__GNUC__ == 4 && 4 <= __GNUC_MINOR__) || 4 < __GNUC__) \
- && defined __GLIBC__)
-# pragma GCC optimize ("wrapv")
-# define WRAPV 1
-# else
-# define WRAPV 0
-# endif
#endif
-/* Verify a requirement at compile-time (unlike assert, which is runtime). */
-#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; }
+/* A signed type that can represent an integer number of years
+ multiplied by three times the number of seconds in a year. It is
+ needed when converting a tm_year value times the number of seconds
+ in a year. The factor of three comes because these products need
+ to be subtracted from each other, and sometimes with an offset
+ added to them, without worrying about overflow.
-/* A signed type that is at least one bit wider than int. */
-#if INT_MAX <= LONG_MAX / 2
+ Much of the code uses long_int to represent time_t values, to
+ lessen the hassle of dealing with platforms where time_t is
+ unsigned, and because long_int should suffice to represent all
+ time_t values that mktime can generate even on platforms where
+ time_t is excessively wide. */
+
+#if INT_MAX <= LONG_MAX / 3 / 366 / 24 / 60 / 60
typedef long int long_int;
#else
typedef long long int long_int;
#endif
-verify (long_int_is_wide_enough, INT_MAX == INT_MAX * (long_int) 2 / 2);
+verify (INT_MAX <= TYPE_MAXIMUM (long_int) / 3 / 366 / 24 / 60 / 60);
/* Shift A right by B bits portably, by dividing A by 2**B and
- truncating towards minus infinity. A and B should be free of side
- effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
- INT_BITS is the number of useful bits in an int. GNU code can
- assume that INT_BITS is at least 32.
+ truncating towards minus infinity. B should be in the range 0 <= B
+ <= LONG_INT_BITS - 2, where LONG_INT_BITS is the number of useful
+ bits in a long_int. LONG_INT_BITS is at least 32.
ISO C99 says that A >> B is implementation-defined if A < 0. Some
implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
right in the usual way when A < 0, so SHR falls back on division if
ordinary A >> B doesn't seem to be the usual signed shift. */
-#define SHR(a, b) \
- ((-1 >> 1 == -1 \
- && (long_int) -1 >> 1 == -1 \
- && ((time_t) -1 >> 1 == -1 || ! TYPE_SIGNED (time_t))) \
- ? (a) >> (b) \
- : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
-
-/* The extra casts in the following macros work around compiler bugs,
- e.g., in Cray C 5.0.3.0. */
-
-/* True if the arithmetic type T is an integer type. bool counts as
- an integer. */
-#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
-
-/* True if negative values of the signed integer type T use two's
- complement, or if T is an unsigned integer type. */
-#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
-
-/* True if the arithmetic type T is signed. */
-#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
-
-/* The maximum and minimum values for the integer type T. These
- macros have undefined behavior if T is signed and has padding bits.
- If this is a problem for you, please let us know how to fix it for
- your host. */
-#define TYPE_MINIMUM(t) \
- ((t) (! TYPE_SIGNED (t) \
- ? (t) 0 \
- : ~ TYPE_MAXIMUM (t)))
-#define TYPE_MAXIMUM(t) \
- ((t) (! TYPE_SIGNED (t) \
- ? (t) -1 \
- : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
-
-#ifndef TIME_T_MIN
-# define TIME_T_MIN TYPE_MINIMUM (time_t)
-#endif
-#ifndef TIME_T_MAX
-# define TIME_T_MAX TYPE_MAXIMUM (time_t)
-#endif
-#define TIME_T_MIDPOINT (SHR (TIME_T_MIN + TIME_T_MAX, 1) + 1)
-verify (time_t_is_integer, TYPE_IS_INTEGER (time_t));
-verify (twos_complement_arithmetic,
- (TYPE_TWOS_COMPLEMENT (int)
- && TYPE_TWOS_COMPLEMENT (long_int)
- && TYPE_TWOS_COMPLEMENT (time_t)));
+static long_int
+shr (long_int a, int b)
+{
+ long_int one = 1;
+ return (-one >> 1 == -1
+ ? a >> b
+ : a / (one << b) - (a % (one << b) < 0));
+}
+
+/* Bounds for the intersection of time_t and long_int. */
+
+static long_int const mktime_min
+ = ((TYPE_SIGNED (time_t) && TYPE_MINIMUM (time_t) < TYPE_MINIMUM (long_int))
+ ? TYPE_MINIMUM (long_int) : TYPE_MINIMUM (time_t));
+static long_int const mktime_max
+ = (TYPE_MAXIMUM (long_int) < TYPE_MAXIMUM (time_t)
+ ? TYPE_MAXIMUM (long_int) : TYPE_MAXIMUM (time_t));
+
+verify (TYPE_IS_INTEGER (time_t));
#define EPOCH_YEAR 1970
#define TM_YEAR_BASE 1900
-verify (base_year_is_a_multiple_of_100, TM_YEAR_BASE % 100 == 0);
+verify (TM_YEAR_BASE % 100 == 0);
-/* Return 1 if YEAR + TM_YEAR_BASE is a leap year. */
-static int
+/* Is YEAR + TM_YEAR_BASE a leap year? */
+static bool
leapyear (long_int year)
{
/* Don't add YEAR to TM_YEAR_BASE, as that might overflow.
@@ -166,7 +130,9 @@ const unsigned short int __mon_yday[2][13] =
};
-#ifndef _LIBC
+#ifdef _LIBC
+typedef time_t mktime_offset_t;
+#else
/* Portable standalone applications should supply a <time.h> that
declares a POSIX-compliant localtime_r, for the benefit of older
implementations that lack localtime_r or have a nonstandard one.
@@ -177,9 +143,9 @@ const unsigned short int __mon_yday[2][13] =
# include "mktime-internal.h"
#endif
-/* Return 1 if the values A and B differ according to the rules for
- tm_isdst: A and B differ if one is zero and the other positive. */
-static int
+/* Do the values A and B differ according to the rules for tm_isdst?
+ A and B differ if one is zero and the other positive. */
+static bool
isdst_differ (int a, int b)
{
return (!a != !b) && (0 <= a) && (0 <= b);
@@ -190,104 +156,65 @@ isdst_differ (int a, int b)
were not adjusted between the time stamps.
The YEAR values uses the same numbering as TP->tm_year. Values
- need not be in the usual range. However, YEAR1 must not be less
- than 2 * INT_MIN or greater than 2 * INT_MAX.
+ need not be in the usual range. However, YEAR1 must not overflow
+ when multiplied by three times the number of seconds in a year, and
+ likewise for YDAY1 and three times the number of seconds in a day. */
- The result may overflow. It is the caller's responsibility to
- detect overflow. */
-
-static time_t
+static long_int
ydhms_diff (long_int year1, long_int yday1, int hour1, int min1, int sec1,
int year0, int yday0, int hour0, int min0, int sec0)
{
- verify (C99_integer_division, -1 / 2 == 0);
+ verify (-1 / 2 == 0);
/* Compute intervening leap days correctly even if year is negative.
Take care to avoid integer overflow here. */
- int a4 = SHR (year1, 2) + SHR (TM_YEAR_BASE, 2) - ! (year1 & 3);
- int b4 = SHR (year0, 2) + SHR (TM_YEAR_BASE, 2) - ! (year0 & 3);
+ int a4 = shr (year1, 2) + shr (TM_YEAR_BASE, 2) - ! (year1 & 3);
+ int b4 = shr (year0, 2) + shr (TM_YEAR_BASE, 2) - ! (year0 & 3);
int a100 = a4 / 25 - (a4 % 25 < 0);
int b100 = b4 / 25 - (b4 % 25 < 0);
- int a400 = SHR (a100, 2);
- int b400 = SHR (b100, 2);
+ int a400 = shr (a100, 2);
+ int b400 = shr (b100, 2);
int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
- /* Compute the desired time in time_t precision. Overflow might
- occur here. */
- time_t tyear1 = year1;
- time_t years = tyear1 - year0;
- time_t days = 365 * years + yday1 - yday0 + intervening_leap_days;
- time_t hours = 24 * days + hour1 - hour0;
- time_t minutes = 60 * hours + min1 - min0;
- time_t seconds = 60 * minutes + sec1 - sec0;
+ /* Compute the desired time without overflowing. */
+ long_int years = year1 - year0;
+ long_int days = 365 * years + yday1 - yday0 + intervening_leap_days;
+ long_int hours = 24 * days + hour1 - hour0;
+ long_int minutes = 60 * hours + min1 - min0;
+ long_int seconds = 60 * minutes + sec1 - sec0;
return seconds;
}
-/* Return the average of A and B, even if A + B would overflow. */
-static time_t
-time_t_avg (time_t a, time_t b)
+/* Return the average of A and B, even if A + B would overflow.
+ Round toward positive infinity. */
+static long_int
+long_int_avg (long_int a, long_int b)
{
- return SHR (a, 1) + SHR (b, 1) + (a & b & 1);
-}
-
-/* Return 1 if A + B does not overflow. If time_t is unsigned and if
- B's top bit is set, assume that the sum represents A - -B, and
- return 1 if the subtraction does not wrap around. */
-static int
-time_t_add_ok (time_t a, time_t b)
-{
- if (! TYPE_SIGNED (time_t))
- {
- time_t sum = a + b;
- return (sum < a) == (TIME_T_MIDPOINT <= b);
- }
- else if (WRAPV)
- {
- time_t sum = a + b;
- return (sum < a) == (b < 0);
- }
- else
- {
- time_t avg = time_t_avg (a, b);
- return TIME_T_MIN / 2 <= avg && avg <= TIME_T_MAX / 2;
- }
-}
-
-/* Return 1 if A + B does not overflow. */
-static int
-time_t_int_add_ok (time_t a, int b)
-{
- verify (int_no_wider_than_time_t, INT_MAX <= TIME_T_MAX);
- if (WRAPV)
- {
- time_t sum = a + b;
- return (sum < a) == (b < 0);
- }
- else
- {
- int a_odd = a & 1;
- time_t avg = SHR (a, 1) + (SHR (b, 1) + (a_odd & b));
- return TIME_T_MIN / 2 <= avg && avg <= TIME_T_MAX / 2;
- }
+ return shr (a, 1) + shr (b, 1) + ((a | b) & 1);
}
/* Return a time_t value corresponding to (YEAR-YDAY HOUR:MIN:SEC),
- assuming that *T corresponds to *TP and that no clock adjustments
+ assuming that T corresponds to *TP and that no clock adjustments
occurred between *TP and the desired time.
- If TP is null, return a value not equal to *T; this avoids false matches.
- If overflow occurs, yield the minimal or maximal value, except do not
- yield a value equal to *T. */
-static time_t
+ Although T and the returned value are of type long_int,
+ they represent time_t values and must be in time_t range.
+ If TP is null, return a value not equal to T; this avoids false matches.
+ YEAR and YDAY must not be so large that multiplying them by three times the
+ number of seconds in a year (or day, respectively) would overflow long_int.
+ If the returned value would be out of range, yield the minimal or
+ maximal in-range value, except do not yield a value equal to T. */
+static long_int
guess_time_tm (long_int year, long_int yday, int hour, int min, int sec,
- const time_t *t, const struct tm *tp)
+ long_int t, const struct tm *tp)
{
if (tp)
{
- time_t d = ydhms_diff (year, yday, hour, min, sec,
- tp->tm_year, tp->tm_yday,
- tp->tm_hour, tp->tm_min, tp->tm_sec);
- if (time_t_add_ok (*t, d))
- return *t + d;
+ long_int result;
+ long_int d = ydhms_diff (year, yday, hour, min, sec,
+ tp->tm_year, tp->tm_yday,
+ tp->tm_hour, tp->tm_min, tp->tm_sec);
+ if (! INT_ADD_WRAPV (t, d, &result))
+ return result;
}
/* Overflow occurred one way or another. Return the nearest result
@@ -295,32 +222,51 @@ guess_time_tm (long_int year, long_int yday, int hour, int min, int sec,
if the actual difference is nonzero, as that would cause a false
match; and don't oscillate between two values, as that would
confuse the spring-forward gap detector. */
- return (*t < TIME_T_MIDPOINT
- ? (*t <= TIME_T_MIN + 1 ? *t + 1 : TIME_T_MIN)
- : (TIME_T_MAX - 1 <= *t ? *t - 1 : TIME_T_MAX));
+ return (t < long_int_avg (mktime_min, mktime_max)
+ ? (t <= mktime_min + 1 ? t + 1 : mktime_min)
+ : (mktime_max - 1 <= t ? t - 1 : mktime_max));
+}
+
+/* Use CONVERT to convert T to a struct tm value in *TM. T must be in
+ range for time_t. Return TM if successful, NULL if T is out of
+ range for CONVERT. */
+static struct tm *
+convert_time (struct tm *(*convert) (const time_t *, struct tm *),
+ long_int t, struct tm *tm)
+{
+ time_t x = t;
+ return convert (&x, tm);
}
/* Use CONVERT to convert *T to a broken down time in *TP.
If *T is out of range for conversion, adjust it so that
- it is the nearest in-range value and then convert that. */
+ it is the nearest in-range value and then convert that.
+ A value is in range if it fits in both time_t and long_int. */
static struct tm *
ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
- time_t *t, struct tm *tp)
+ long_int *t, struct tm *tp)
{
- struct tm *r = convert (t, tp);
+ struct tm *r;
+ if (*t < mktime_min)
+ *t = mktime_min;
+ else if (mktime_max < *t)
+ *t = mktime_max;
+ r = convert_time (convert, *t, tp);
if (!r && *t)
{
- time_t bad = *t;
- time_t ok = 0;
+ long_int bad = *t;
+ long_int ok = 0;
- /* BAD is a known unconvertible time_t, and OK is a known good one.
+ /* BAD is a known unconvertible value, and OK is a known good one.
Use binary search to narrow the range between BAD and OK until
they differ by 1. */
- while (bad != ok + (bad < 0 ? -1 : 1))
+ while (true)
{
- time_t mid = *t = time_t_avg (ok, bad);
- r = convert (t, tp);
+ long_int mid = long_int_avg (ok, bad);
+ if (mid != ok && mid != bad)
+ break;
+ r = convert_time (convert, mid, tp);
if (r)
ok = mid;
else
@@ -331,15 +277,13 @@ ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
{
/* The last conversion attempt failed;
revert to the most recent successful attempt. */
- *t = ok;
- r = convert (t, tp);
+ r = convert_time (convert, ok, tp);
}
}
return r;
}
-
/* Convert *TP to a time_t value, inverting
the monotonic and mostly-unit-linear conversion function CONVERT.
Use *OFFSET to keep track of a guess at the offset of the result,
@@ -349,9 +293,9 @@ ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
time_t
__mktime_internal (struct tm *tp,
struct tm *(*convert) (const time_t *, struct tm *),
- time_t *offset)
+ mktime_offset_t *offset)
{
- time_t t, gt, t0, t1, t2;
+ long_int t, gt, t0, t1, t2, dt;
struct tm tm;
/* The maximum number of probes (calls to CONVERT) should be enough
@@ -381,9 +325,7 @@ __mktime_internal (struct tm *tp,
long_int year = lyear_requested + mon_years;
/* The other values need not be in range:
- the remaining code handles minor overflows correctly,
- assuming int and time_t arithmetic wraps around.
- Major overflows are caught at the end. */
+ the remaining code handles overflows correctly. */
/* Calculate day of year from year, month, and day of month.
The result need not be in range. */
@@ -393,7 +335,7 @@ __mktime_internal (struct tm *tp,
long_int lmday = mday;
long_int yday = mon_yday + lmday;
- time_t guessed_offset = *offset;
+ int negative_offset_guess;
int sec_requested = sec;
@@ -410,71 +352,14 @@ __mktime_internal (struct tm *tp,
/* Invert CONVERT by probing. First assume the same offset as last
time. */
+ INT_SUBTRACT_WRAPV (0, *offset, &negative_offset_guess);
t0 = ydhms_diff (year, yday, hour, min, sec,
- EPOCH_YEAR - TM_YEAR_BASE, 0, 0, 0, - guessed_offset);
-
- if (TIME_T_MAX / INT_MAX / 366 / 24 / 60 / 60 < 3)
- {
- /* time_t isn't large enough to rule out overflows, so check
- for major overflows. A gross check suffices, since if t0
- has overflowed, it is off by a multiple of TIME_T_MAX -
- TIME_T_MIN + 1. So ignore any component of the difference
- that is bounded by a small value. */
-
- /* Approximate log base 2 of the number of time units per
- biennium. A biennium is 2 years; use this unit instead of
- years to avoid integer overflow. For example, 2 average
- Gregorian years are 2 * 365.2425 * 24 * 60 * 60 seconds,
- which is 63113904 seconds, and rint (log2 (63113904)) is
- 26. */
- int ALOG2_SECONDS_PER_BIENNIUM = 26;
- int ALOG2_MINUTES_PER_BIENNIUM = 20;
- int ALOG2_HOURS_PER_BIENNIUM = 14;
- int ALOG2_DAYS_PER_BIENNIUM = 10;
- int LOG2_YEARS_PER_BIENNIUM = 1;
-
- int approx_requested_biennia =
- (SHR (year_requested, LOG2_YEARS_PER_BIENNIUM)
- - SHR (EPOCH_YEAR - TM_YEAR_BASE, LOG2_YEARS_PER_BIENNIUM)
- + SHR (mday, ALOG2_DAYS_PER_BIENNIUM)
- + SHR (hour, ALOG2_HOURS_PER_BIENNIUM)
- + SHR (min, ALOG2_MINUTES_PER_BIENNIUM)
- + (LEAP_SECONDS_POSSIBLE
- ? 0
- : SHR (sec, ALOG2_SECONDS_PER_BIENNIUM)));
-
- int approx_biennia = SHR (t0, ALOG2_SECONDS_PER_BIENNIUM);
- int diff = approx_biennia - approx_requested_biennia;
- int approx_abs_diff = diff < 0 ? -1 - diff : diff;
-
- /* IRIX 4.0.5 cc miscalculates TIME_T_MIN / 3: it erroneously
- gives a positive value of 715827882. Setting a variable
- first then doing math on it seems to work.
- (ghazi@caip.rutgers.edu) */
- time_t time_t_max = TIME_T_MAX;
- time_t time_t_min = TIME_T_MIN;
- time_t overflow_threshold =
- (time_t_max / 3 - time_t_min / 3) >> ALOG2_SECONDS_PER_BIENNIUM;
-
- if (overflow_threshold < approx_abs_diff)
- {
- /* Overflow occurred. Try repairing it; this might work if
- the time zone offset is enough to undo the overflow. */
- time_t repaired_t0 = -1 - t0;
- approx_biennia = SHR (repaired_t0, ALOG2_SECONDS_PER_BIENNIUM);
- diff = approx_biennia - approx_requested_biennia;
- approx_abs_diff = diff < 0 ? -1 - diff : diff;
- if (overflow_threshold < approx_abs_diff)
- return -1;
- guessed_offset += repaired_t0 - t0;
- t0 = repaired_t0;
- }
- }
+ EPOCH_YEAR - TM_YEAR_BASE, 0, 0, 0, negative_offset_guess);
/* Repeatedly use the error to improve the guess. */
for (t = t1 = t2 = t0, dst2 = 0;
- (gt = guess_time_tm (year, yday, hour, min, sec, &t,
+ (gt = guess_time_tm (year, yday, hour, min, sec, t,
ranged_convert (convert, &t, &tm)),
t != gt);
t1 = t2, t2 = t, t = gt, dst2 = tm.tm_isdst != 0)
@@ -531,39 +416,42 @@ __mktime_internal (struct tm *tp,
for (delta = stride; delta < delta_bound; delta += stride)
for (direction = -1; direction <= 1; direction += 2)
- if (time_t_int_add_ok (t, delta * direction))
- {
- time_t ot = t + delta * direction;
- struct tm otm;
- ranged_convert (convert, &ot, &otm);
- if (! isdst_differ (isdst, otm.tm_isdst))
- {
- /* We found the desired tm_isdst.
- Extrapolate back to the desired time. */
- t = guess_time_tm (year, yday, hour, min, sec, &ot, &otm);
- ranged_convert (convert, &t, &tm);
- goto offset_found;
- }
- }
+ {
+ long_int ot;
+ if (! INT_ADD_WRAPV (t, delta * direction, &ot))
+ {
+ struct tm otm;
+ ranged_convert (convert, &ot, &otm);
+ if (! isdst_differ (isdst, otm.tm_isdst))
+ {
+ /* We found the desired tm_isdst.
+ Extrapolate back to the desired time. */
+ t = guess_time_tm (year, yday, hour, min, sec, ot, &otm);
+ ranged_convert (convert, &t, &tm);
+ goto offset_found;
+ }
+ }
+ }
}
offset_found:
- *offset = guessed_offset + t - t0;
+ /* Set *OFFSET to the low-order bits of T - T0 - NEGATIVE_OFFSET_GUESS.
+ This is just a heuristic to speed up the next mktime call, and
+ correctness is unaffected if integer overflow occurs here. */
+ INT_SUBTRACT_WRAPV (t, t0, &dt);
+ INT_SUBTRACT_WRAPV (dt, negative_offset_guess, offset);
if (LEAP_SECONDS_POSSIBLE && sec_requested != tm.tm_sec)
{
/* Adjust time to reflect the tm_sec requested, not the normalized value.
Also, repair any damage from a false match due to a leap second. */
- int sec_adjustment = (sec == 0 && tm.tm_sec == 60) - sec;
- if (! time_t_int_add_ok (t, sec_requested))
+ long_int sec_adjustment = sec == 0 && tm.tm_sec == 60;
+ sec_adjustment -= sec;
+ sec_adjustment += sec_requested;
+ if (INT_ADD_WRAPV (t, sec_adjustment, &t)
+ || ! (mktime_min <= t && t <= mktime_max)
+ || ! convert_time (convert, t, &tm))
return -1;
- t1 = t + sec_requested;
- if (! time_t_int_add_ok (t1, sec_adjustment))
- return -1;
- t2 = t1 + sec_adjustment;
- if (! convert (&t2, &tm))
- return -1;
- t = t2;
}
*tp = tm;
@@ -571,11 +459,7 @@ __mktime_internal (struct tm *tp,
}
-/* FIXME: This should use a signed type wide enough to hold any UTC
- offset in seconds. 'int' should be good enough for GNU code. We
- can't fix this unilaterally though, as other modules invoke
- __mktime_internal. */
-static time_t localtime_offset;
+static mktime_offset_t localtime_offset;
/* Convert *TP to a time_t value. */
time_t
@@ -586,6 +470,8 @@ mktime (struct tm *tp)
time zone names contained in the external variable 'tzname' shall
be set as if the tzset() function had been called. */
__tzset ();
+#elif HAVE_TZSET
+ tzset ();
#endif
return __mktime_internal (tp, __localtime_r, &localtime_offset);
@@ -600,7 +486,7 @@ libc_hidden_def (mktime)
libc_hidden_weak (timelocal)
#endif
-#if defined DEBUG_MKTIME && DEBUG_MKTIME
+#if DEBUG_MKTIME
static int
not_equal_tm (const struct tm *a, const struct tm *b)
@@ -652,6 +538,14 @@ main (int argc, char **argv)
time_t tk, tl, tl1;
char trailer;
+ /* Sanity check, plus call tzset. */
+ tl = 0;
+ if (! localtime (&tl))
+ {
+ printf ("localtime (0) fails\n");
+ status = 1;
+ }
+
if ((argc == 3 || argc == 4)
&& (sscanf (argv[1], "%d-%d-%d%c",
&tm.tm_year, &tm.tm_mon, &tm.tm_mday, &trailer)
@@ -665,12 +559,7 @@ main (int argc, char **argv)
tm.tm_isdst = argc == 3 ? -1 : atoi (argv[3]);
tmk = tm;
tl = mktime (&tmk);
- lt = localtime (&tl);
- if (lt)
- {
- tml = *lt;
- lt = &tml;
- }
+ lt = localtime_r (&tl, &tml);
printf ("mktime returns %ld == ", (long int) tl);
print_tm (&tmk);
printf ("\n");
@@ -685,16 +574,16 @@ main (int argc, char **argv)
if (argc == 4)
for (tl = from; by < 0 ? to <= tl : tl <= to; tl = tl1)
{
- lt = localtime (&tl);
+ lt = localtime_r (&tl, &tml);
if (lt)
{
- tmk = tml = *lt;
+ tmk = tml;
tk = mktime (&tmk);
status |= check_result (tk, tmk, tl, &tml);
}
else
{
- printf ("localtime (%ld) yields 0\n", (long int) tl);
+ printf ("localtime_r (%ld) yields 0\n", (long int) tl);
status = 1;
}
tl1 = tl + by;
@@ -705,16 +594,16 @@ main (int argc, char **argv)
for (tl = from; by < 0 ? to <= tl : tl <= to; tl = tl1)
{
/* Null benchmark. */
- lt = localtime (&tl);
+ lt = localtime_r (&tl, &tml);
if (lt)
{
- tmk = tml = *lt;
+ tmk = tml;
tk = tl;
status |= check_result (tk, tmk, tl, &tml);
}
else
{
- printf ("localtime (%ld) yields 0\n", (long int) tl);
+ printf ("localtime_r (%ld) yields 0\n", (long int) tl);
status = 1;
}
tl1 = tl + by;
diff --git a/lib/secure_getenv.c b/lib/secure_getenv.c
index f359ab2173..88a60dc33c 100644
--- a/lib/secure_getenv.c
+++ b/lib/secure_getenv.c
@@ -1,4 +1,4 @@
-/* Look up an environment variable more securely.
+/* Look up an environment variable, returning NULL in insecure situations.
Copyright 2013-2016 Free Software Foundation, Inc.
@@ -20,22 +20,35 @@
#include <stdlib.h>
#if !HAVE___SECURE_GETENV
-# if HAVE_ISSETUGID
+# if HAVE_ISSETUGID || (HAVE_GETUID && HAVE_GETEUID && HAVE_GETGID && HAVE_GETEGID)
# include <unistd.h>
-# else
-# undef issetugid
-# define issetugid() 1
# endif
#endif
char *
secure_getenv (char const *name)
{
-#if HAVE___SECURE_GETENV
+#if HAVE___SECURE_GETENV /* glibc */
return __secure_getenv (name);
-#else
+#elif HAVE_ISSETUGID /* OS X, FreeBSD, NetBSD, OpenBSD */
if (issetugid ())
- return 0;
+ return NULL;
+ return getenv (name);
+#elif HAVE_GETUID && HAVE_GETEUID && HAVE_GETGID && HAVE_GETEGID /* other Unix */
+ if (geteuid () != getuid () || getegid () != getgid ())
+ return NULL;
return getenv (name);
+#elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* native Windows */
+ /* On native Windows, there is no such concept as setuid or setgid binaries.
+ - Programs launched as system services have high privileges, but they don't
+ inherit environment variables from a user.
+ - Programs launched by a user with "Run as Administrator" have high
+ privileges and use the environment variables, but the user has been asked
+ whether he agrees.
+ - Programs launched by a user without "Run as Administrator" cannot gain
+ high privileges, therefore there is no risk. */
+ return getenv (name);
+#else
+ return NULL;
#endif
}
diff --git a/lib/string.in.h b/lib/string.in.h
index 7fb00c1c53..b3213c4c1a 100644
--- a/lib/string.in.h
+++ b/lib/string.in.h
@@ -416,15 +416,15 @@ _GL_WARN_ON_USE (strncat, "strncat is unportable - "
# undef strndup
# define strndup rpl_strndup
# endif
-_GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n)
+_GL_FUNCDECL_RPL (strndup, char *, (char const *__s, size_t __n)
_GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n));
+_GL_CXXALIAS_RPL (strndup, char *, (char const *__s, size_t __n));
# else
# if ! @HAVE_DECL_STRNDUP@
-_GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n)
+_GL_FUNCDECL_SYS (strndup, char *, (char const *__s, size_t __n)
_GL_ARG_NONNULL ((1)));
# endif
-_GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n));
+_GL_CXXALIAS_SYS (strndup, char *, (char const *__s, size_t __n));
# endif
_GL_CXXALIASWARN (strndup);
#elif defined GNULIB_POSIXCHECK
@@ -444,17 +444,17 @@ _GL_WARN_ON_USE (strndup, "strndup is unportable - "
# undef strnlen
# define strnlen rpl_strnlen
# endif
-_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)
+_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__s, size_t __maxlen)
_GL_ATTRIBUTE_PURE
_GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen));
+_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__s, size_t __maxlen));
# else
# if ! @HAVE_DECL_STRNLEN@
-_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)
+_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__s, size_t __maxlen)
_GL_ATTRIBUTE_PURE
_GL_ARG_NONNULL ((1)));
# endif
-_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen));
+_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__s, size_t __maxlen));
# endif
_GL_CXXALIASWARN (strnlen);
#elif defined GNULIB_POSIXCHECK
diff --git a/lib/strtol.c b/lib/strtol.c
index b0215fce76..6ef8a9624c 100644
--- a/lib/strtol.c
+++ b/lib/strtol.c
@@ -121,30 +121,19 @@
/* The extra casts in the following macros work around compiler bugs,
e.g., in Cray C 5.0.3.0. */
-/* True if negative values of the signed integer type T use two's
- complement, ones' complement, or signed magnitude representation,
- respectively. Much GNU code assumes two's complement, but some
- people like to be portable to all possible C hosts. */
-# define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
-# define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
-# define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
-
/* True if the arithmetic type T is signed. */
# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
-/* The maximum and minimum values for the integer type T. These
- macros have undefined behavior if T is signed and has padding bits.
- If this is a problem for you, please let us know how to fix it for
- your host. */
-# define TYPE_MINIMUM(t) \
- ((t) (! TYPE_SIGNED (t) \
- ? (t) 0 \
- : TYPE_SIGNED_MAGNITUDE (t) \
- ? ~ (t) 0 \
- : ~ TYPE_MAXIMUM (t)))
-# define TYPE_MAXIMUM(t) \
- ((t) (! TYPE_SIGNED (t) \
- ? (t) -1 \
+/* Minimum and maximum values for integer types.
+ These macros have undefined behavior for signed types that either
+ have padding bits or do not use two's complement. If this is a
+ problem for you, please let us know how to fix it for your host. */
+
+/* The maximum and minimum values for the integer type T. */
+# define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t))
+# define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
: ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
# ifndef ULLONG_MAX
diff --git a/lib/timegm.c b/lib/timegm.c
index 86bdac3f43..bf61244acd 100644
--- a/lib/timegm.c
+++ b/lib/timegm.c
@@ -22,7 +22,9 @@
#include <time.h>
-#ifndef _LIBC
+#ifdef _LIBC
+typedef time_t mktime_offset_t;
+#else
# undef __gmtime_r
# define __gmtime_r gmtime_r
# define __mktime_internal mktime_internal
@@ -32,7 +34,7 @@
time_t
timegm (struct tm *tmp)
{
- static time_t gmtime_offset;
+ static mktime_offset_t gmtime_offset;
tmp->tm_isdst = 0;
return __mktime_internal (tmp, __gmtime_r, &gmtime_offset);
}
diff --git a/lib/verify.h b/lib/verify.h
index 2f4383743b..5c8381d290 100644
--- a/lib/verify.h
+++ b/lib/verify.h
@@ -263,7 +263,7 @@ template <int w>
# define assume(R) ((R) ? (void) 0 : __builtin_unreachable ())
#elif 1200 <= _MSC_VER
# define assume(R) __assume (R)
-#elif (defined lint \
+#elif ((defined GCC_LINT || defined lint) \
&& (__has_builtin (__builtin_trap) \
|| 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))))
/* Doing it this way helps various packages when configured with
diff --git a/lib/xalloc-oversized.h b/lib/xalloc-oversized.h
index d81a8471d3..44f16441c7 100644
--- a/lib/xalloc-oversized.h
+++ b/lib/xalloc-oversized.h
@@ -20,15 +20,13 @@
#include <stddef.h>
+/* Default for (non-Clang) compilers that lack __has_builtin. */
#ifndef __has_builtin
# define __has_builtin(x) 0
#endif
-/* Return 1 if an array of N objects, each of size S, cannot exist due
- to size arithmetic overflow. S must be positive and N must be
- nonnegative. This is a macro, not a function, so that it
- works correctly even when SIZE_MAX < N.
-
+/* True if N * S would overflow in a size calculation.
+ This expands to a constant expression if N and S are both constants.
By gnulib convention, SIZE_MAX represents overflow in size
calculations, so the conservative dividend to use here is
SIZE_MAX - 1, since SIZE_MAX might represent an overflowed value.
@@ -36,12 +34,38 @@
sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for
exactly-SIZE_MAX allocations on such hosts; this avoids a test and
branch when S is known to be 1. */
-#if 5 <= __GNUC__ || __has_builtin (__builtin_mul_overflow)
+#define __xalloc_oversized(n, s) \
+ ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n))
+
+
+/* Return 1 if an array of N objects, each of size S, cannot exist due
+ to size arithmetic overflow. S must be positive and N must be
+ nonnegative. This is a macro, not a function, so that it
+ works correctly even when SIZE_MAX < N. */
+
+/* GCC 7 __builtin_mul_overflow should easily compute this. See:
+ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68120 */
+#if 7 <= __GNUC__
+# define xalloc_oversized(n, s) __builtin_mul_overflow (n, s, (size_t *) NULL)
+
+/* GCC 5 and Clang __builtin_mul_overflow needs a temporary, and
+ should be used only for non-constant operands, so that
+ xalloc_oversized is a constant expression if both arguments are.
+ Do not use this if pedantic, since pedantic GCC issues a diagnostic
+ for ({ ... }). */
+#elif ((5 <= __GNUC__ \
+ || (__has_builtin (__builtin_mul_overflow) \
+ && __has_builtin (__builtin_constant_p))) \
+ && !__STRICT_ANSI__)
# define xalloc_oversized(n, s) \
- ({ size_t __xalloc_size; __builtin_mul_overflow (n, s, &__xalloc_size); })
+ (__builtin_constant_p (n) && __builtin_constant_p (s) \
+ ? __xalloc_oversized (n, s) \
+ : ({ size_t __xalloc_size; __builtin_mul_overflow (n, s, &__xalloc_size); }))
+
+/* Other compilers use integer division; this may be slower but is
+ more portable. */
#else
-# define xalloc_oversized(n, s) \
- ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n))
+# define xalloc_oversized(n, s) __xalloc_oversized (n, s)
#endif
#endif /* !XALLOC_OVERSIZED_H_ */
diff --git a/lisp/ChangeLog.17 b/lisp/ChangeLog.17
index 296e98e859..bbf25b6048 100644
--- a/lisp/ChangeLog.17
+++ b/lisp/ChangeLog.17
@@ -1254,7 +1254,7 @@
2015-03-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
* net/shr.el (shr-insert): Remove soft hyphens.
- (shr-insert): Also remove soft hypens from non-folded text.
+ (shr-insert): Also remove soft hyphens from non-folded text.
2015-02-28 Eli Zaretskii <eliz@gnu.org>
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index f33dd011ed..12bb9c7a3c 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -81,23 +81,23 @@ AUTOGENEL = loaddefs.el \
cus-load.el \
finder-inf.el \
subdirs.el \
+ ps-print-loaddefs.el \
emacs-lisp/cl-loaddefs.el \
calc/calc-loaddefs.el \
eshell/esh-groups.el \
cedet/semantic/loaddefs.el \
cedet/ede/loaddefs.el \
cedet/srecode/loaddefs.el \
- org/org-loaddefs.el
-
-# Value of max-lisp-eval-depth when compiling initially.
-# During bootstrapping the byte-compiler is run interpreted when compiling
-# itself, and uses more stack than usual.
-#
-BIG_STACK_DEPTH = 2200
-BIG_STACK_OPTS = --eval "(setq max-lisp-eval-depth $(BIG_STACK_DEPTH))"
+ org/org-loaddefs.el \
+ textmodes/reftex-loaddefs.el \
+ mail/rmail-loaddefs.el \
+ ibuffer-loaddefs.el \
+ htmlfontify-loaddefs \
+ emacs-lisp/eieio-loaddefs.el \
+ dired-loaddefs.el
# Set load-prefer-newer for the benefit of the non-bootstrappers.
-BYTE_COMPILE_FLAGS = $(BIG_STACK_OPTS) \
+BYTE_COMPILE_FLAGS = \
--eval '(setq load-prefer-newer t)' $(BYTE_COMPILE_EXTRA_FLAGS)
# Files to compile before others during a bootstrap. This is done to
@@ -185,6 +185,13 @@ $(lisp)/loaddefs.el: $(LOADDEFS)
--eval '(setq generated-autoload-file (expand-file-name (unmsys--file-name "$@")))' \
-f batch-update-autoloads ${SUBDIRS_ALMOST}
+# autoloads only runs when loaddefs.el is nonexistent, although it
+# generates a number of different files. Provide a force option to enable
+# regeneration of all these files.
+autoloads-force .PHONY:
+ rm loaddefs.el
+ $(MAKE) autoloads
+
# This is required by the bootstrap-emacs target in ../src/Makefile, so
# we know that if we have an emacs executable, we also have a subdirs.el.
$(lisp)/subdirs.el:
@@ -218,25 +225,28 @@ update-gnus-news:
"$(top_srcdir)/doc/misc/gnus-news.texi" \
"$(top_srcdir)/etc/GNUS-NEWS"
-ETAGS = ../lib-src/etags
+FORCE:
+.PHONY: FORCE
+
+tagsfiles = $(shell find ${srcdir} -name '*.el')
+tagsfiles := $(filter-out ${srcdir}/%loaddefs.el,${tagsfiles})
+tagsfiles := $(filter-out ${srcdir}/ldefs-boot.el,${tagsfiles})
+tagsfiles := $(filter-out ${srcdir}/eshell/esh-groups.el,${tagsfiles})
+
+ETAGS = ../lib-src/etags${EXEEXT}
-lisptagsfiles1 = $(srcdir)/*.el
-lisptagsfiles2 = $(srcdir)/*/*.el
-lisptagsfiles3 = $(srcdir)/*/*/*.el
-lisptagsfiles4 = $(srcdir)/*/*/*/*.el
+${ETAGS}: FORCE
+ ${MAKE} -C ../lib-src $(notdir $@)
-## The ls | sed | xargs is to stop the command line getting too long
+## The use of xargs is to stop the command line getting too long
## on MS Windows, when the MSYS Bash passes it to a MinGW compiled
## etags. It might be better to use find in a similar way to
## compile-main. But maybe this is not even necessary any more now
## that this uses relative filenames.
-TAGS: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
+TAGS: ${ETAGS} ${tagsfiles}
rm -f $@
touch $@
- ls $(lisptagsfiles1) $(lisptagsfiles2) \
- $(lisptagsfiles3) $(lisptagsfiles4) | \
- sed -e '/loaddefs/d; /\/ldefs-boot/d; /esh-groups\.el/d' | \
- xargs $(XARGS_LIMIT) "$(ETAGS)" -a -o $@
+ ls ${tagsfiles} | xargs $(XARGS_LIMIT) "${ETAGS}" -a -o $@
# The src/Makefile.in has its own set of dependencies and when they decide
@@ -399,7 +409,7 @@ $(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC)
CAL_DIR = $(lisp)/calendar
## Those files that may contain internal calendar autoload cookies.
CAL_SRC = $(addprefix ${CAL_DIR}/,diary-lib.el holidays.el lunar.el solar.el)
-CAL_SRC := $(sort ${CAL_SRC} $(wildcard ${CAL_DIR}/cal*.el))
+CAL_SRC := $(sort ${CAL_SRC} $(wildcard ${CAL_DIR}/cal-*.el))
CAL_SRC := $(filter-out ${CAL_DIR}/cal-loaddefs.el,${CAL_SRC})
$(CAL_DIR)/cal-loaddefs.el: $(CAL_SRC)
diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index d181d97703..163dc8e572 100644
--- a/lisp/abbrev.el
+++ b/lisp/abbrev.el
@@ -33,6 +33,7 @@
;;; Code:
(eval-when-compile (require 'cl-lib))
+(require 'obarray)
(defgroup abbrev-mode nil
"Word abbreviations mode."
@@ -87,7 +88,7 @@ be replaced by its expansion."
"Make a new abbrev-table with the same abbrevs as TABLE.
Does not copy property lists."
(let ((new-table (make-abbrev-table)))
- (mapatoms
+ (obarray-map
(lambda (symbol)
(define-abbrev new-table
(symbol-name symbol)
@@ -406,12 +407,12 @@ A prefix argument means don't query; expand all abbrevs."
(defun abbrev-table-get (table prop)
"Get the PROP property of abbrev table TABLE."
- (let ((sym (intern-soft "" table)))
+ (let ((sym (obarray-get table "")))
(if sym (get sym prop))))
(defun abbrev-table-put (table prop val)
"Set the PROP property of abbrev table TABLE to VAL."
- (let ((sym (intern "" table)))
+ (let ((sym (obarray-put table "")))
(set sym nil) ; Make sure it won't be confused for an abbrev.
(put sym prop val)))
@@ -435,8 +436,7 @@ See `define-abbrev' for the effect of some special properties.
(defun make-abbrev-table (&optional props)
"Create a new, empty abbrev table object.
PROPS is a list of properties."
- ;; The value 59 is an arbitrary prime number.
- (let ((table (make-vector 59 0)))
+ (let ((table (obarray-make)))
;; Each abbrev-table has a `modiff' counter which can be used to detect
;; when an abbreviation was added. An example of use would be to
;; construct :regexp dynamically as the union of all abbrev names, so
@@ -451,7 +451,7 @@ PROPS is a list of properties."
(defun abbrev-table-p (object)
"Return non-nil if OBJECT is an abbrev table."
- (and (vectorp object)
+ (and (obarrayp object)
(numberp (abbrev-table-get object :abbrev-table-modiff))))
(defun abbrev-table-empty-p (object &optional ignore-system)
@@ -460,12 +460,12 @@ If IGNORE-SYSTEM is non-nil, system definitions are ignored."
(unless (abbrev-table-p object)
(error "Non abbrev table object"))
(not (catch 'some
- (mapatoms (lambda (abbrev)
- (unless (or (zerop (length (symbol-name abbrev)))
- (and ignore-system
- (abbrev-get abbrev :system)))
- (throw 'some t)))
- object))))
+ (obarray-map (lambda (abbrev)
+ (unless (or (zerop (length (symbol-name abbrev)))
+ (and ignore-system
+ (abbrev-get abbrev :system)))
+ (throw 'some t)))
+ object))))
(defvar global-abbrev-table (make-abbrev-table)
"The abbrev table whose abbrevs affect all buffers.
@@ -529,12 +529,12 @@ the current abbrev table before abbrev lookup happens."
(defun clear-abbrev-table (table)
"Undefine all abbrevs in abbrev table TABLE, leaving it empty."
(setq abbrevs-changed t)
- (let* ((sym (intern-soft "" table)))
+ (let* ((sym (obarray-get table "")))
(dotimes (i (length table))
(aset table i 0))
;; Preserve the table's properties.
(cl-assert sym)
- (let ((newsym (intern "" table)))
+ (let ((newsym (obarray-put table "")))
(set newsym nil) ; Make sure it won't be confused for an abbrev.
(setplist newsym (symbol-plist sym)))
(abbrev-table-put table :abbrev-table-modiff
@@ -583,7 +583,7 @@ An obsolete but still supported calling form is:
(setq props (plist-put props :abbrev-table-modiff
(abbrev-table-get table :abbrev-table-modiff)))
(let ((system-flag (plist-get props :system))
- (sym (intern name table)))
+ (sym (obarray-put table name)))
;; Don't override a prior user-defined abbrev with a system abbrev,
;; unless system-flag is `force'.
(unless (and (not (memq system-flag '(nil force)))
@@ -673,10 +673,10 @@ The value is nil if that abbrev is not defined."
;; abbrevs do, we have to be careful.
(sym
;; First try without case-folding.
- (or (intern-soft abbrev table)
+ (or (obarray-get table abbrev)
(when case-fold
;; We didn't find any abbrev, try case-folding.
- (let ((sym (intern-soft (downcase abbrev) table)))
+ (let ((sym (obarray-get table (downcase abbrev))))
;; Only use it if it doesn't require :case-fixed.
(and sym (not (abbrev-get sym :case-fixed))
sym))))))
@@ -848,7 +848,7 @@ if expansion occurred, else nil.)"
"Default function to use for `abbrev-expand-function'.
This respects the wrapper hook `abbrev-expand-functions'.
Calls `abbrev-insert' to insert any expansion, and returns what it does."
- (with-wrapper-hook abbrev-expand-functions ()
+ (subr--with-wrapper-hook-no-warnings abbrev-expand-functions ()
(pcase-let ((`(,sym ,name ,wordstart ,wordend) (abbrev--before-point)))
(when sym
(let ((startpos (copy-marker (point) t))
@@ -1005,17 +1005,17 @@ PROMPT is the prompt to use for the keymap.
SORTFUN is passed to `sort' to change the default ordering."
(unless sortfun (setq sortfun 'string-lessp))
(let ((entries ()))
- (mapatoms (lambda (abbrev)
- (when (symbol-value abbrev)
- (let ((name (symbol-name abbrev)))
- (push `(,(intern name) menu-item ,name
- (lambda () (interactive)
- (abbrev-insert ',abbrev)))
- entries))))
- table)
+ (obarray-map (lambda (abbrev)
+ (when (symbol-value abbrev)
+ (let ((name (symbol-name abbrev)))
+ (push `(,(intern name) menu-item ,name
+ (lambda () (interactive)
+ (abbrev-insert ',abbrev)))
+ entries))))
+ table)
(nconc (make-sparse-keymap prompt)
(sort entries (lambda (x y)
- (funcall sortfun (nth 2 x) (nth 2 y)))))))
+ (funcall sortfun (nth 2 x) (nth 2 y)))))))
;; Keep it after define-abbrev-table, since define-derived-mode uses
;; define-abbrev-table.
diff --git a/lisp/align.el b/lisp/align.el
index f09f57032d..866aaadaf4 100644
--- a/lisp/align.el
+++ b/lisp/align.el
@@ -577,7 +577,7 @@ The possible settings for `align-region-separate' are:
(eq '- current-prefix-arg)))))
(css-declaration
- (regexp . "^\\s-*\\w+:\\(\\s-*\\).*;")
+ (regexp . "^\\s-*\\(?:\\w-?\\)+:\\(\\s-*\\).*;")
(group . (1))
(modes . '(css-mode html-mode))))
"A list describing all of the available alignment rules.
@@ -802,6 +802,9 @@ See the variable `align-exclude-rules-list' for more details.")
(defvar align-highlight-overlays nil
"The current overlays highlighting the text matched by a rule.")
+(defvar align-regexp-history nil
+ "Input history for the full user-entered regex in `align-regexp'")
+
;; Sample extension rule set, for vhdl-mode. This should properly be
;; in vhdl-mode.el itself.
@@ -946,7 +949,7 @@ construct a rule to pass to `align-region', which does the real work."
(list (region-beginning) (region-end))
(if current-prefix-arg
(list (read-string "Complex align using regexp: "
- "\\(\\s-*\\)")
+ "\\(\\s-*\\)" 'align-regexp-history)
(string-to-number
(read-string
"Parenthesis group to modify (justify if negative): " "1"))
diff --git a/lisp/allout.el b/lisp/allout.el
index 49bdc06fbb..3a7b6e64d1 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -592,7 +592,7 @@ software. By default:
See `allout-plain-bullets-string' for the standard, alternating
bullets.
-You must run `set-allout-regexp' in order for outline mode to
+You must run `allout-set-regexp' in order for outline mode to
adopt changes of this value.
DO NOT include the close-square-bracket, `]', on either of the bullet
@@ -947,13 +947,13 @@ case the value of `allout-default-layout' is used.")
Any line whose beginning matches this regexp is considered a
heading. This var is set according to the user configuration vars
-by `set-allout-regexp'.")
+by `allout-set-regexp'.")
(make-variable-buffer-local 'allout-regexp)
;;;_ = allout-bullets-string
(defvar allout-bullets-string ""
"A string dictating the valid set of outline topic bullets.
-This var should *not* be set by the user -- it is set by `set-allout-regexp',
+This var should *not* be set by the user -- it is set by `allout-set-regexp',
and is produced from the elements of `allout-plain-bullets-string'
and `allout-distinctive-bullets-string'.")
(make-variable-buffer-local 'allout-bullets-string)
@@ -970,7 +970,7 @@ headers at depth 2 and greater. Use `allout-depth-one-regexp'
for to seek topics at depth one.
This var is set according to the user configuration vars by
-`set-allout-regexp'. It is prepared with format strings for two
+`allout-set-regexp'. It is prepared with format strings for two
decimal numbers, which should each be one less than the depth of the
topic prefix to be matched.")
(make-variable-buffer-local 'allout-depth-specific-regexp)
@@ -979,7 +979,7 @@ topic prefix to be matched.")
"Regular expression to match a heading line prefix for depth one.
This var is set according to the user configuration vars by
-`set-allout-regexp'. It is prepared with format strings for two
+`allout-set-regexp'. It is prepared with format strings for two
decimal numbers, which should each be one less than the depth of the
topic prefix to be matched.")
(make-variable-buffer-local 'allout-depth-one-regexp)
@@ -987,7 +987,7 @@ topic prefix to be matched.")
(defvar allout-line-boundary-regexp ()
"`allout-regexp' prepended with a newline for the search target.
-This is properly set by `set-allout-regexp'.")
+This is properly set by `allout-set-regexp'.")
(make-variable-buffer-local 'allout-line-boundary-regexp)
;;;_ = allout-bob-regexp
(defvar allout-bob-regexp ()
@@ -999,7 +999,7 @@ This is properly set by `set-allout-regexp'.")
(make-variable-buffer-local 'allout-header-subtraction)
;;;_ = allout-plain-bullets-string-len
(defvar allout-plain-bullets-string-len (length allout-plain-bullets-string)
- "Length of `allout-plain-bullets-string', updated by `set-allout-regexp'.")
+ "Length of `allout-plain-bullets-string', updated by `allout-set-regexp'.")
(make-variable-buffer-local 'allout-plain-bullets-string-len)
;;;_ = allout-doublecheck-at-and-shallower
@@ -1034,7 +1034,7 @@ suitably economical.")
(interactive "sNew lead string: ")
(setq allout-header-prefix header-lead)
(setq allout-header-subtraction (1- (length allout-header-prefix)))
- (set-allout-regexp))
+ (allout-set-regexp))
;;;_ X allout-lead-with-comment-string (header-lead)
(defun allout-lead-with-comment-string (&optional header-lead)
"Set the topic-header leading string to specified string.
@@ -1114,8 +1114,8 @@ file is programming code."
comment-start
(not (eq 'force allout-reindent-bodies)))
(setq allout-reindent-bodies nil)))
-;;;_ > set-allout-regexp ()
-(defun set-allout-regexp ()
+;;;_ > allout-set-regexp ()
+(defun allout-set-regexp ()
"Generate proper topic-header regexp form for outline functions.
Works with respect to `allout-plain-bullets-string' and
@@ -1242,12 +1242,13 @@ Also refresh various data structures that hinge on the regexp."
"[^" allout-primary-bullet "]"))
"\\)"
))))
+(define-obsolete-function-alias 'set-allout-regexp 'allout-set-regexp "25.2")
;;;_ : Menu bar
(defvar allout-mode-exposure-menu)
(defvar allout-mode-editing-menu)
(defvar allout-mode-navigation-menu)
(defvar allout-mode-misc-menu)
-(defun produce-allout-mode-menubar-entries ()
+(defun allout-produce-mode-menubar-entries ()
(require 'easymenu)
(easy-menu-define allout-mode-exposure-menu
allout-mode-map-value
@@ -2029,7 +2030,7 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
(allout-infer-header-lead-and-primary-bullet)
(allout-infer-body-reindent)
- (set-allout-regexp)
+ (allout-set-regexp)
(allout-add-resumptions '(allout-encryption-ciphertext-rejection-regexps
allout-line-boundary-regexp
extend)
@@ -2038,7 +2039,7 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
extend))
(allout-compose-and-institute-keymap)
- (produce-allout-mode-menubar-entries)
+ (allout-produce-mode-menubar-entries)
(add-to-invisibility-spec '(allout . t))
@@ -2245,8 +2246,8 @@ the new value of `allout-recent-prefix-beginning'."
allout-recent-prefix-beginning
allout-header-subtraction)))
allout-recent-prefix-beginning)
-;;;_ > nullify-allout-prefix-data ()
-(defsubst nullify-allout-prefix-data ()
+;;;_ > allout-nullify-prefix-data ()
+(defsubst allout-nullify-prefix-data ()
"Mark allout prefix data as being uninformative."
(setq allout-recent-prefix-end (point)
allout-recent-prefix-beginning (point)
@@ -2381,7 +2382,7 @@ Like `allout-current-depth', but respects hidden as well as visible topics."
allout-recent-depth
(progn
;; Oops, no prefix, nullify it:
- (nullify-allout-prefix-data)
+ (allout-nullify-prefix-data)
;; ... and return 0:
0)))))
;;;_ > allout-current-depth ()
@@ -3478,11 +3479,11 @@ Offer one suitable for current depth DEPTH as default."
(let* ((default-bullet (or (and (stringp current-bullet) current-bullet)
(allout-bullet-for-depth depth)))
- (sans-escapes (regexp-sans-escapes allout-bullets-string))
+ (sans-escapes (allout-regexp-sans-escapes allout-bullets-string))
choice)
(save-excursion
(goto-char (allout-current-bullet-pos))
- (setq choice (solicit-char-in-string
+ (setq choice (allout-solicit-char-in-string
(format-message
"Select bullet: %s (`%s' default): "
sans-escapes
@@ -6341,7 +6342,7 @@ save. See `allout-encrypt-unencrypted-on-saves' for more info."
;; we had to wait for this 'til now so prior topics are
;; encrypted, any relevant text shifts are in place:
editing-point (- current-mark-position
- (count-trailing-whitespace-region
+ (allout-count-trailing-whitespace-region
bo-subtree current-mark-position))))
(allout-toggle-subtree-encryption)
(if (not was-modified)
@@ -6507,8 +6508,8 @@ not its value."
(allout-end-of-current-subtree)
(exchange-point-and-mark))
;;;_ : UI:
-;;;_ > solicit-char-in-string (prompt string &optional do-defaulting)
-(defun solicit-char-in-string (prompt string &optional do-defaulting)
+;;;_ > allout-solicit-char-in-string (prompt string &optional do-defaulting)
+(defun allout-solicit-char-in-string (prompt string &optional do-defaulting)
"Solicit (with first arg PROMPT) choice of a character from string STRING.
Optional arg DO-DEFAULTING indicates to accept empty input (CR)."
@@ -6541,8 +6542,8 @@ Optional arg DO-DEFAULTING indicates to accept empty input (CR)."
got)
)
;;;_ : Strings:
-;;;_ > regexp-sans-escapes (string)
-(defun regexp-sans-escapes (regexp &optional successive-backslashes)
+;;;_ > allout-regexp-sans-escapes (string)
+(defun allout-regexp-sans-escapes (regexp &optional successive-backslashes)
"Return a copy of REGEXP with all character escapes stripped out.
Representations of actual backslashes -- `\\\\\\\\' -- are left as a
@@ -6561,11 +6562,11 @@ Optional arg SUCCESSIVE-BACKSLASHES is used internally for recursion."
(if (or (not successive-backslashes) (= 2 successive-backslashes))
;; Include first char:
(concat (substring regexp 0 1)
- (regexp-sans-escapes (substring regexp 1)))
+ (allout-regexp-sans-escapes (substring regexp 1)))
;; Exclude first char, but maintain count:
- (regexp-sans-escapes (substring regexp 1) successive-backslashes))))
-;;;_ > count-trailing-whitespace-region (beg end)
-(defun count-trailing-whitespace-region (beg end)
+ (allout-regexp-sans-escapes (substring regexp 1) successive-backslashes))))
+;;;_ > allout-count-trailing-whitespace-region (beg end)
+(defun allout-count-trailing-whitespace-region (beg end)
"Return number of trailing whitespace chars between BEG and END.
If BEG is bigger than END we return 0."
@@ -6797,9 +6798,9 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
"Isearch (regexp) for topic with bullet BULLET."
(interactive)
(if (not bullet)
- (setq bullet (solicit-char-in-string
+ (setq bullet (allout-solicit-char-in-string
"ISearch for topic with bullet: "
- (regexp-sans-escapes allout-bullets-string))))
+ (allout-regexp-sans-escapes allout-bullets-string))))
(let ((isearch-regexp t)
(isearch-string (concat "^"
diff --git a/lisp/apropos.el b/lisp/apropos.el
index 72357742b6..7c9ec12c2e 100644
--- a/lisp/apropos.el
+++ b/lisp/apropos.el
@@ -867,19 +867,23 @@ Returns list of symbols and documentation found."
symbol)))))
(defun apropos-documentation-internal (doc)
- (if (consp doc)
- (apropos-documentation-check-elc-file (car doc))
- (if (and doc
- (string-match apropos-all-words-regexp doc)
- (apropos-true-hit-doc doc))
- (when apropos-match-face
- (setq doc (substitute-command-keys (copy-sequence doc)))
- (if (or (string-match apropos-pattern-quoted doc)
- (string-match apropos-all-words-regexp doc))
- (put-text-property (match-beginning 0)
- (match-end 0)
- 'face apropos-match-face doc))
- doc))))
+ (cond
+ ((consp doc)
+ (apropos-documentation-check-elc-file (car doc)))
+ ((and doc
+ ;; Sanity check in case bad data sneaked into the
+ ;; documentation slot.
+ (stringp doc)
+ (string-match apropos-all-words-regexp doc)
+ (apropos-true-hit-doc doc))
+ (when apropos-match-face
+ (setq doc (substitute-command-keys (copy-sequence doc)))
+ (if (or (string-match apropos-pattern-quoted doc)
+ (string-match apropos-all-words-regexp doc))
+ (put-text-property (match-beginning 0)
+ (match-end 0)
+ 'face apropos-match-face doc))
+ doc))))
(defun apropos-format-plist (pl sep &optional compare)
(setq pl (symbol-plist pl))
diff --git a/lisp/gnus/auth-source.el b/lisp/auth-source.el
index 52765ce6b3..97059fa5bd 100644
--- a/lisp/gnus/auth-source.el
+++ b/lisp/auth-source.el
@@ -40,8 +40,6 @@
;;; Code:
(require 'password-cache)
-(require 'mm-util)
-(require 'gnus-util)
(eval-when-compile (require 'cl))
(require 'eieio)
@@ -372,11 +370,7 @@ with \"[a/b/c] \" if CHOICES is \(?a ?b ?c)."
k)
(while (not (memq k choices))
- (setq k (cond
- ((fboundp 'read-char-choice)
- (read-char-choice full-prompt choices))
- (t (message "%s" full-prompt)
- (setq k (read-char))))))
+ (setq k (read-char-choice full-prompt choices)))
k)))
;; (auth-source-pick nil :host "any" :port 'imap :user "joe")
@@ -1092,12 +1086,10 @@ Note that the MAX parameter is used so we can exit the parse early."
(when (setq item2 (auth-source-netrc-parse-one))
;; Did we get a "machine" value?
(if (equal item2 "machine")
- (progn
- (gnus-error 1
- "%s: Unexpected `machine' token at line %d"
- "auth-source-netrc-parse-entries"
- (auth-source-current-line))
- (forward-line 1))
+ (error
+ "%s: Unexpected `machine' token at line %d"
+ "auth-source-netrc-parse-entries"
+ (auth-source-current-line))
(push (cons item item2) alist)))))
;; Clean up: if there's an entry left over, use it.
@@ -1163,7 +1155,7 @@ FILE is the file from which we obtained this token."
(point-min)
(point-max))))))
-(defun auto-source--symbol-keyword (symbol)
+(defun auth-source--symbol-keyword (symbol)
(intern (format ":%s" symbol)))
(defun auth-source-netrc-normalize (alist filename)
@@ -1199,7 +1191,7 @@ FILE is the file from which we obtained this token."
(setq lexv (funcall token-decoder lexv)))
lexv))))
(setq ret (plist-put ret
- (auto-source--symbol-keyword k)
+ (auth-source--symbol-keyword k)
v))))
ret))
alist))
@@ -1276,7 +1268,7 @@ See `auth-source-search' for details on SPEC."
;; fill in the valist with whatever data we may have from the search
;; we complete the first value if it's a list and use the value otherwise
(dolist (br base-required)
- (let ((val (plist-get spec (auto-source--symbol-keyword br))))
+ (let ((val (plist-get spec (auth-source--symbol-keyword br))))
(when val
(let ((br-choice (cond
;; all-accepting choice (predicate is t)
@@ -1288,7 +1280,7 @@ See `auth-source-search' for details on SPEC."
;; for extra required elements, see if the spec includes a value for them
(dolist (er create-extra)
- (let ((k (auto-source--symbol-keyword er))
+ (let ((k (auth-source--symbol-keyword er))
(keys (loop for i below (length spec) by 2
collect (nth i spec))))
(when (memq k keys)
@@ -1300,7 +1292,7 @@ See `auth-source-search' for details on SPEC."
;; take the first element if the data is a list
(data (or (auth-source-netrc-element-or-first data)
(plist-get current-data
- (auto-source--symbol-keyword r))))
+ (auth-source--symbol-keyword r))))
;; this is the default to be offered
(given-default (auth-source--aget
auth-source-creation-defaults r))
@@ -1390,7 +1382,7 @@ See `auth-source-search' for details on SPEC."
(when data
(setq artificial (plist-put artificial
- (auto-source--symbol-keyword r)
+ (auth-source--symbol-keyword r)
(if (eq r 'secret)
(lexical-let ((data data))
(lambda () data))
@@ -1601,9 +1593,9 @@ authentication tokens:
(list k (plist-get spec k))))
search-keys))))
;; needed keys (always including host, login, port, and secret)
- (returned-keys (mm-delete-duplicates (append
- '(:host :login :port :secret)
- search-keys)))
+ (returned-keys (delete-dups (append
+ '(:host :login :port :secret)
+ search-keys)))
(items
(loop for search-spec in search-specs
nconc
@@ -1715,12 +1707,13 @@ entries for git.gnus.org:
(let* ((coll (oref backend source))
(max (or max 5000)) ; sanity check: default to stop at 5K
- (ignored-keys '(:create :delete :max :backend :label))
+ ;; Filter out ignored keys from the spec
+ (ignored-keys '(:create :delete :max :backend :label :host :port))
+ ;; Build a search spec without the ignored keys
(search-keys (loop for i below (length spec) by 2
unless (memq (nth i spec) ignored-keys)
collect (nth i spec)))
- ;; build a search spec without the ignored keys
- ;; if a search key is nil or t (match anything), we skip it
+ ;; If a search key value is nil or t (match anything), we skip it
(search-spec (apply #'append (mapcar
(lambda (k)
(if (or (null (plist-get spec k))
@@ -1729,14 +1722,28 @@ entries for git.gnus.org:
(list k (plist-get spec k))))
search-keys)))
;; needed keys (always including host, login, port, and secret)
- (returned-keys (mm-delete-duplicates (append
- '(:host :login :port :secret)
- search-keys)))
- (items (apply #'auth-source-macos-keychain-search-items
- coll
- type
- max
- search-spec))
+ (returned-keys (delete-dups (append
+ '(:host :login :port :secret)
+ search-keys)))
+ ;; Extract host and port from spec
+ (hosts (plist-get spec :host))
+ (hosts (if (and hosts (listp hosts)) hosts `(,hosts)))
+ (ports (plist-get spec :port))
+ (ports (if (and ports (listp ports)) ports `(,ports)))
+ ;; Loop through all combinations of host/port and pass each of these to
+ ;; auth-source-macos-keychain-search-items
+ (items (catch 'match
+ (dolist (host hosts)
+ (dolist (port ports)
+ (let* ((port (if port (format "%S" port)))
+ (items (apply #'auth-source-macos-keychain-search-items
+ coll
+ type
+ max
+ host port
+ search-spec)))
+ (when items
+ (throw 'match items)))))))
;; ensure each item has each key in `returned-keys'
(items (mapcar (lambda (plist)
@@ -1751,11 +1758,28 @@ entries for git.gnus.org:
items)))
items))
+
+(defun auth-source--decode-octal-string (string)
+ "Convert octal string to utf-8 string. E.g: 'a\134b' to 'a\b'"
+ (let ((list (string-to-list string))
+ (size (length string)))
+ (decode-coding-string
+ (apply #'unibyte-string
+ (loop for i = 0 then (+ i (if (eq (nth i list) ?\\) 4 1))
+ for var = (nth i list)
+ while (< i size)
+ if (eq var ?\\)
+ collect (string-to-number
+ (concat (cl-subseq list (+ i 1) (+ i 4))) 8)
+ else
+ collect var))
+ 'utf-8)))
+
(defun* auth-source-macos-keychain-search-items (coll _type _max
+ host port
&key label type
- host user port
+ user
&allow-other-keys)
-
(let* ((keychain-generic (eq type 'macos-keychain-generic))
(args `(,(if keychain-generic
"find-generic-password"
@@ -1784,36 +1808,39 @@ entries for git.gnus.org:
(goto-char (point-min))
(while (not (eobp))
(cond
- ((looking-at "^password: \"\\(.+\\)\"$")
+ ((looking-at "^password: \\(?:0x[0-9A-F]+\\)? *\"\\(.+\\)\"")
(setq ret (auth-source-macos-keychain-result-append
ret
keychain-generic
"secret"
- (lexical-let ((v (match-string 1)))
+ (lexical-let ((v (auth-source--decode-octal-string
+ (match-string 1))))
(lambda () v)))))
;; TODO: check if this is really the label
;; match 0x00000007 <blob>="AppleID"
- ((looking-at "^[ ]+0x00000007 <blob>=\"\\(.+\\)\"")
+ ((looking-at
+ "^[ ]+0x00000007 <blob>=\\(?:0x[0-9A-F]+\\)? *\"\\(.+\\)\"")
(setq ret (auth-source-macos-keychain-result-append
ret
keychain-generic
"label"
- (match-string 1))))
+ (auth-source--decode-octal-string (match-string 1)))))
;; match "crtr"<uint32>="aapl"
;; match "svce"<blob>="AppleID"
- ((looking-at "^[ ]+\"\\([a-z]+\\)\"[^=]+=\"\\(.+\\)\"")
+ ((looking-at
+ "^[ ]+\"\\([a-z]+\\)\"[^=]+=\\(?:0x[0-9A-F]+\\)? *\"\\(.+\\)\"")
(setq ret (auth-source-macos-keychain-result-append
ret
keychain-generic
- (match-string 1)
- (match-string 2)))))
+ (auth-source--decode-octal-string (match-string 1))
+ (auth-source--decode-octal-string (match-string 2))))))
(forward-line)))
;; return `ret' iff it has the :secret key
(and (plist-get ret :secret) (list ret))))
(defun auth-source-macos-keychain-result-append (result generic k v)
(push v result)
- (push (auto-source--symbol-keyword
+ (push (auth-source--symbol-keyword
(cond
((equal k "acct") "user")
;; for generic keychains, creator is host, service is port
@@ -1856,9 +1883,9 @@ entries for git.gnus.org:
(list k v))))
search-keys)))
;; needed keys (always including host, login, port, and secret)
- (returned-keys (mm-delete-duplicates (append
- '(:host :login :port :secret)
- search-keys)))
+ (returned-keys (delete-dups (append
+ '(:host :login :port :secret)
+ search-keys)))
(items (plstore-find store search-spec))
(item-names (mapcar #'car items))
(items (butlast items (- (length items) max)))
@@ -1930,7 +1957,7 @@ entries for git.gnus.org:
;; fill in the valist with whatever data we may have from the search
;; we complete the first value if it's a list and use the value otherwise
(dolist (br base-required)
- (let ((val (plist-get spec (auto-source--symbol-keyword br))))
+ (let ((val (plist-get spec (auth-source--symbol-keyword br))))
(when val
(let ((br-choice (cond
;; all-accepting choice (predicate is t)
@@ -1942,7 +1969,7 @@ entries for git.gnus.org:
;; for extra required elements, see if the spec includes a value for them
(dolist (er create-extra)
- (let ((k (auto-source--symbol-keyword er))
+ (let ((k (auth-source--symbol-keyword er))
(keys (loop for i below (length spec) by 2
collect (nth i spec))))
(when (memq k keys)
@@ -1954,7 +1981,7 @@ entries for git.gnus.org:
;; take the first element if the data is a list
(data (or (auth-source-netrc-element-or-first data)
(plist-get current-data
- (auto-source--symbol-keyword r))))
+ (auth-source--symbol-keyword r))))
;; this is the default to be offered
(given-default (auth-source--aget
auth-source-creation-defaults r))
@@ -2014,10 +2041,10 @@ entries for git.gnus.org:
(if (member r base-secret)
(setq secret-artificial
(plist-put secret-artificial
- (auto-source--symbol-keyword r)
+ (auth-source--symbol-keyword r)
data))
(setq artificial (plist-put artificial
- (auto-source--symbol-keyword r)
+ (auth-source--symbol-keyword r)
data))))))
(plstore-put (oref backend data)
(sha1 (format "%s@%s:%s"
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index b8693dfb21..1129af8a2f 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -51,6 +51,12 @@
;; Emacs. You should never even notice that this package is active
;; (except that your buffers will be reverted, of course).
;;
+;; If the file exists, Auto-Revert Mode updates the buffer based on
+;; its (possibly empty) contents. If the file no longer exists, then
+;; there is nothing to revert, so it does not modify the buffer. Once
+;; a deleted file corresponding to a buffer in Auto-Revert Mode
+;; reappears, Auto-Revert Mode continues to work.
+;;
;; If Emacs is compiled with file notification support, notifications
;; are used instead of checking the time stamp of the files. You can
;; disable this by setting the user option `auto-revert-use-notify' to
@@ -58,19 +64,19 @@
;; excluded from file notifications can be specified by
;; `auto-revert-notify-exclude-dir-regexp'.
;;
-;; After reverting a file buffer, Auto Revert Mode normally puts point
+;; After reverting a file buffer, Auto-Revert Mode normally puts point
;; at the same position that a regular manual revert would. However,
;; there is one exception to this rule. If point is at the end of the
;; buffer before reverting, it stays at the end. Similarly if point
;; is displayed at the end of a file buffer in any window, it will stay
;; at the end of the buffer in that window, even if the window is not
-;; selected. This way, you can use Auto Revert Mode to `tail' a file.
+;; selected. This way, you can use Auto-Revert Mode to `tail' a file.
;; Just put point at the end of the buffer and it will stay there.
;; These rules apply to file buffers. For non-file buffers, the
;; behavior may be mode dependent.
;;
-;; While you can use Auto Revert Mode to tail a file, this package
-;; contains a third minor mode, Auto Revert Tail Mode, which does so
+;; While you can use Auto-Revert Mode to tail a file, this package
+;; contains a third minor mode, Auto-Revert Tail Mode, which does so
;; more efficiently, as long as you are sure that the file will only
;; change by growing at the end. It only appends the new output,
;; instead of reverting the entire buffer. It does so even if the
@@ -112,8 +118,8 @@
(defgroup auto-revert nil
"Revert individual buffers when files on disk change.
-Auto-Revert mode enables auto-revert in individual buffers.
-Global Auto-Revert mode does so in all buffers."
+Auto-Revert Mode enables auto-revert in individual buffers.
+Global Auto-Revert Mode does so in all buffers."
:group 'files
:group 'convenience)
@@ -144,7 +150,7 @@ If a timer is already active, there are two ways to make sure
that the new value will take effect immediately. You can set
this variable through Custom or you can call the command
`auto-revert-set-timer' after setting the variable. Otherwise,
-the new value will take effect the first time Auto Revert Mode
+the new value will take effect the first time Auto-Revert Mode
calls `auto-revert-set-timer' for internal reasons or in your
next editing session."
:group 'auto-revert
@@ -176,7 +182,7 @@ When non-nil, a message is generated whenever a file is reverted."
"String to display in the mode line when Auto-Revert Mode is active.
\(When the string is not empty, make sure that it has a leading space.)"
- :tag "Auto Revert Mode Text" ; To separate it from `global-...'
+ :tag "Auto-Revert Mode Text" ; To separate it from `global-...'
:group 'auto-revert
:type 'string)
@@ -190,7 +196,7 @@ When non-nil, a message is generated whenever a file is reverted."
(defcustom auto-revert-mode-hook nil
"Functions to run when Auto-Revert Mode is activated."
- :tag "Auto Revert Mode Hook" ; To separate it from `global-...'
+ :tag "Auto-Revert Mode Hook" ; To separate it from `global-...'
:group 'auto-revert
:type 'hook)
@@ -209,11 +215,11 @@ would only waste precious space."
:type 'hook)
(defcustom global-auto-revert-non-file-buffers nil
- "When nil, Global Auto-Revert mode operates only on file-visiting buffers.
+ "When nil, Global Auto-Revert Mode operates only on file-visiting buffers.
When non-nil, both file buffers and buffers with a custom
`revert-buffer-function' and a `buffer-stale-function' are
-reverted by Global Auto-Revert mode. These include the Buffer
+reverted by Global Auto-Revert Mode. These include the Buffer
List buffer displayed by `buffer-menu', and Dired buffers showing
complete local directories. The Buffer List buffer reverts every
`auto-revert-interval' seconds; Dired buffers when the file list of
@@ -240,8 +246,8 @@ For more information, see Info node `(emacs)Autorevert'."
:type 'hook)
(defcustom auto-revert-check-vc-info nil
- "If non-nil Auto Revert Mode reliably updates version control info.
-Auto Revert Mode updates version control info whenever the buffer
+ "If non-nil Auto-Revert Mode reliably updates version control info.
+Auto-Revert Mode updates version control info whenever the buffer
needs reverting, regardless of the value of this variable.
However, the version control state can change without changes to
the work file. If the change is made from the current Emacs
@@ -271,7 +277,7 @@ This variable becomes buffer local when set in any fashion.")
:version "24.4")
(defcustom auto-revert-use-notify t
- "If non-nil Auto Revert Mode uses file notification functions.
+ "If non-nil Auto-Revert Mode uses file notification functions.
You should set this variable through Custom."
:group 'auto-revert
:type 'boolean
@@ -337,12 +343,12 @@ This has been reported by a file notification event.")
;;;###autoload
(define-minor-mode auto-revert-mode
- "Toggle reverting buffer when the file changes (Auto Revert mode).
-With a prefix argument ARG, enable Auto Revert mode if ARG is
+ "Toggle reverting buffer when the file changes (Auto-Revert Mode).
+With a prefix argument ARG, enable Auto-Revert Mode if ARG is
positive, and disable it otherwise. If called from Lisp, enable
the mode if ARG is omitted or nil.
-Auto Revert mode is a minor mode that affects only the current
+Auto-Revert Mode is a minor mode that affects only the current
buffer. When enabled, it reverts the buffer when the file on
disk changes.
@@ -351,8 +357,14 @@ Use `auto-revert-tail-mode' if you know that the file will only grow
without being changed in the part that is already in the buffer."
:group 'auto-revert :lighter auto-revert-mode-text
(if auto-revert-mode
- (if (not (memq (current-buffer) auto-revert-buffer-list))
- (push (current-buffer) auto-revert-buffer-list))
+ (when (not (memq (current-buffer) auto-revert-buffer-list))
+ (push (current-buffer) auto-revert-buffer-list)
+ (add-hook
+ 'kill-buffer-hook
+ (lambda ()
+ (setq auto-revert-buffer-list
+ (delq (current-buffer) auto-revert-buffer-list)))
+ nil t))
(when auto-revert-use-notify (auto-revert-notify-rm-watch))
(setq auto-revert-buffer-list
(delq (current-buffer) auto-revert-buffer-list)))
@@ -374,11 +386,11 @@ This function is designed to be added to hooks, for example:
;;;###autoload
(define-minor-mode auto-revert-tail-mode
"Toggle reverting tail of buffer when the file grows.
-With a prefix argument ARG, enable Auto-Revert Tail mode if ARG
+With a prefix argument ARG, enable Auto-Revert Tail Mode if ARG
is positive, and disable it otherwise. If called from Lisp,
enable the mode if ARG is omitted or nil.
-When Auto Revert Tail mode is enabled, the tail of the file is
+When Auto-Revert Tail Mode is enabled, the tail of the file is
constantly followed, as with the shell command `tail -f'. This
means that whenever the file grows on disk (presumably because
some background process is appending to it from time to time),
@@ -428,7 +440,7 @@ Perform a full revert? ")
;;;###autoload
(defun turn-on-auto-revert-tail-mode ()
- "Turn on Auto-Revert Tail mode.
+ "Turn on Auto-Revert Tail Mode.
This function is designed to be added to hooks, for example:
(add-hook \\='my-logfile-mode-hook #\\='turn-on-auto-revert-tail-mode)"
@@ -437,12 +449,12 @@ This function is designed to be added to hooks, for example:
;;;###autoload
(define-minor-mode global-auto-revert-mode
- "Toggle Global Auto Revert mode.
-With a prefix argument ARG, enable Global Auto Revert mode if ARG
+ "Toggle Global Auto-Revert Mode.
+With a prefix argument ARG, enable Global Auto-Revert Mode if ARG
is positive, and disable it otherwise. If called from Lisp,
enable the mode if ARG is omitted or nil.
-Global Auto Revert mode is a global minor mode that reverts any
+Global Auto-Revert Mode is a global minor mode that reverts any
buffer associated with a file when the file changes on disk. Use
`auto-revert-mode' to revert a particular buffer.
@@ -458,11 +470,7 @@ specifies in the mode line."
:global t :group 'auto-revert :lighter global-auto-revert-mode-text
(auto-revert-set-timer)
(if global-auto-revert-mode
- (progn
- ;; Disable file notification because it could use too many resources.
- ;; See Bug#22814.
- (setq auto-revert-use-notify nil)
- (auto-revert-buffers))
+ (auto-revert-buffers)
(dolist (buf (buffer-list))
(with-current-buffer buf
(when auto-revert-use-notify
@@ -577,16 +585,19 @@ no more reverts are possible until the next call of
(if (eq action 'stopped)
;; File notification has stopped. Continue with polling.
- (cl-dolist (buffer buffers)
+ (cl-dolist (buffer
+ (if global-auto-revert-mode
+ (buffer-list) auto-revert-buffer-list))
(with-current-buffer buffer
- (when (or
- ;; A buffer associated with a file.
- (and (stringp buffer-file-name)
- (string-equal
- (file-name-nondirectory file)
- (file-name-nondirectory buffer-file-name)))
- ;; A buffer w/o a file, like dired.
- (null buffer-file-name))
+ (when (and (equal descriptor auto-revert-notify-watch-descriptor)
+ (or
+ ;; A buffer associated with a file.
+ (and (stringp buffer-file-name)
+ (string-equal
+ (file-name-nondirectory file)
+ (file-name-nondirectory buffer-file-name)))
+ ;; A buffer w/o a file, like dired.
+ (null buffer-file-name)))
(auto-revert-notify-rm-watch)
(setq-local auto-revert-use-notify nil))))
@@ -740,7 +751,7 @@ To avoid starvation, the buffers in `auto-revert-remaining-buffers'
are checked first the next time this function is called.
This function is also responsible for removing buffers no longer in
-Auto-Revert mode from `auto-revert-buffer-list', and for canceling
+Auto-Revert Mode from `auto-revert-buffer-list', and for canceling
the timer when no buffers need to be checked."
(setq auto-revert-buffers-counter
diff --git a/lisp/battery.el b/lisp/battery.el
index b5e312f6c3..1b58489161 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -38,8 +38,12 @@
:prefix "battery-"
:group 'hardware)
-;; Either BATn or yeeloong-bat, basically.
-(defconst battery--linux-sysfs-regexp "[bB][aA][tT][0-9]?$")
+(defcustom battery-linux-sysfs-regexp "[bB][aA][tT][0-9]?$"
+ "Regexp for folder names to be searched under
+ /sys/class/power_supply/ that contain battery information."
+ :version "25.2"
+ :type 'regexp
+ :group 'battery)
(defcustom battery-status-function
(cond ((and (eq system-type 'gnu/linux)
@@ -51,7 +55,7 @@
((and (eq system-type 'gnu/linux)
(file-directory-p "/sys/class/power_supply/")
(directory-files "/sys/class/power_supply/" nil
- battery--linux-sysfs-regexp))
+ battery-linux-sysfs-regexp))
#'battery-linux-sysfs)
((and (eq system-type 'berkeley-unix)
(file-executable-p "/usr/sbin/apm"))
@@ -445,7 +449,7 @@ The following %-sequences are provided:
(dolist (dir (ignore-errors
(directory-files
"/sys/class/power_supply/" t
- battery--linux-sysfs-regexp)))
+ battery-linux-sysfs-regexp)))
(erase-buffer)
(ignore-errors (insert-file-contents
(expand-file-name "uevent" dir)))
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 9e8e745ec6..c13f4b156a 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -338,6 +338,10 @@ mouse-3: Toggle minor modes"
(defvar mode-line-column-line-number-mode-map
(let ((map (make-sparse-keymap))
(menu-map (make-sparse-keymap "Toggle Line and Column Number Display")))
+ (bindings--define-key menu-map [size-indication-mode]
+ '(menu-item "Display Size Indication" size-indication-mode
+ :help "Toggle displaying a size indication in the mode-line"
+ :button (:toggle . size-indication-mode)))
(bindings--define-key menu-map [line-number-mode]
'(menu-item "Display Line Numbers" line-number-mode
:help "Toggle displaying line numbers in the mode-line"
@@ -430,11 +434,9 @@ Major modes that edit things other than ordinary files may change this
(make-variable-buffer-local 'mode-line-buffer-identification)
(defvar mode-line-misc-info
- '((which-func-mode ("" which-func-format " "))
- (global-mode-string ("" global-mode-string " ")))
+ '((global-mode-string ("" global-mode-string " ")))
"Mode line construct for miscellaneous information.
-By default, this shows the information specified by
-`which-func-mode' and `global-mode-string'.")
+By default, this shows the information specified by `global-mode-string'.")
(put 'mode-line-misc-info 'risky-local-variable t)
(defvar mode-line-end-spaces '(:eval (unless (display-graphic-p) "-%-"))
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index 3cafd96212..cc0972e477 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -1633,6 +1633,7 @@ calc-kill calc-kill-region calc-yank))))
(not (equal var '(calc-mode-save-mode)))
(calc-save-modes))))
(if calc-embedded-info (calc-embedded-modes-change var))
+ (calc-set-mode-line)
(symbol-value (car var)))))
(defun calc-toggle-banner ()
diff --git a/lisp/calc/calc-forms.el b/lisp/calc/calc-forms.el
index c94b89d6b1..153b90429e 100644
--- a/lisp/calc/calc-forms.el
+++ b/lisp/calc/calc-forms.el
@@ -317,7 +317,9 @@
(list 'calcFunc-hms a))
((math-negp a)
(math-neg (math-to-hms (math-neg a) ang)))
- ((eq (or ang calc-angle-mode) 'rad)
+ ((eq (or ang
+ (and (not math-simplifying-units) calc-angle-mode))
+ 'rad)
(math-to-hms (math-div a (math-pi-over-180)) 'deg))
((memq (car-safe a) '(cplx polar)) a)
(t
@@ -354,12 +356,16 @@
(if (eq (car-safe a) 'sdev)
(math-make-sdev (math-from-hms (nth 1 a) ang)
(math-from-hms (nth 2 a) ang))
- (if (eq (or ang calc-angle-mode) 'rad)
+ (if (eq (or ang
+ (and (not math-simplifying-units) calc-angle-mode))
+ 'rad)
(list 'calcFunc-rad a)
(list 'calcFunc-deg a)))))
((math-negp a)
(math-neg (math-from-hms (math-neg a) ang)))
- ((eq (or ang calc-angle-mode) 'rad)
+ ((eq (or ang
+ (and (not math-simplifying-units) calc-angle-mode))
+ 'rad)
(math-mul (math-from-hms a 'deg) (math-pi-over-180)))
(t
(math-add (math-div (math-add (math-div (nth 3 a)
diff --git a/lisp/calc/calc-math.el b/lisp/calc/calc-math.el
index 699ef6f49a..567635eb65 100644
--- a/lisp/calc/calc-math.el
+++ b/lisp/calc/calc-math.el
@@ -763,12 +763,14 @@ If this can't be done, return NIL."
(defun math-to-radians (a) ; [N N]
(cond ((eq (car-safe a) 'hms)
(math-from-hms a 'rad))
- ((memq calc-angle-mode '(deg hms))
+ ((and (not math-simplifying-units)
+ (memq calc-angle-mode '(deg hms)))
(math-mul a (math-pi-over-180)))
(t a)))
(defun math-from-radians (a) ; [N N]
- (cond ((eq calc-angle-mode 'deg)
+ (cond ((and (not math-simplifying-units)
+ (eq calc-angle-mode 'deg))
(if (math-constp a)
(math-div a (math-pi-over-180))
(list 'calcFunc-deg a)))
@@ -779,14 +781,16 @@ If this can't be done, return NIL."
(defun math-to-radians-2 (a &optional force-symbolic) ; [N N]
(cond ((eq (car-safe a) 'hms)
(math-from-hms a 'rad))
- ((memq calc-angle-mode '(deg hms))
+ ((and (not math-simplifying-units)
+ (memq calc-angle-mode '(deg hms)))
(if (or calc-symbolic-mode force-symbolic)
(math-div (math-mul a '(var pi var-pi)) 180)
(math-mul a (math-pi-over-180))))
(t a)))
(defun math-from-radians-2 (a &optional force-symbolic) ; [N N]
- (cond ((memq calc-angle-mode '(deg hms))
+ (cond ((and (not math-simplifying-units)
+ (memq calc-angle-mode '(deg hms)))
(if (or calc-symbolic-mode force-symbolic)
(math-div (math-mul 180 a) '(var pi var-pi))
(math-div a (math-pi-over-180))))
diff --git a/lisp/calculator.el b/lisp/calculator.el
index bba52e2254..523bf98180 100644
--- a/lisp/calculator.el
+++ b/lisp/calculator.el
@@ -161,6 +161,8 @@ This makes it possible to paste big integers since they will be read as
floats, otherwise the Emacs reader will fail on them."
:type 'boolean
:group 'calculator)
+(make-obsolete-variable 'calculator-paste-decimals
+ "it is no longer used." nil)
(defcustom calculator-copy-displayer nil
"If non-nil, this is any value that can be used for
@@ -195,9 +197,9 @@ For example, use this to define the golden ratio number:
before you load calculator."
:type '(repeat (cons character number))
:set (lambda (_ val)
- (and (boundp 'calculator-registers)
- (setq calculator-registers
- (append val calculator-registers)))
+ (when (boundp 'calculator-registers)
+ (setq calculator-registers
+ (append val calculator-registers)))
(setq calculator-user-registers val))
:group 'calculator)
@@ -221,10 +223,10 @@ Examples:
(\"tF\" mt-to-ft (/ X 0.3048) 1)
(\"tM\" ft-to-mt (* X 0.3048) 1)))
-* Using a function-like form is very simple: use `X' for the argument
- (`Y' for the second in case of a binary operator), `TX' is a truncated
+* Using a function-like form is simple: use `X' for the argument (`Y'
+ for a second one in case of a binary operator), `TX' is a truncated
version of `X' and `F' for a recursive call. Here is a [very
- inefficient] Fibonacci number calculation:
+ inefficient] Fibonacci number operator:
(add-to-list \\='calculator-user-operators
\\='(\"F\" fib
@@ -290,7 +292,8 @@ user-defined operators, use `calculator-user-operators' instead.")
(defvar calculator-operators nil
"The calculator operators, each a list with:
-1. The key that is bound to for this operation (usually a string);
+1. The key(s) that is bound to for this operation, a string that is
+ used with `kbd';
2. The displayed symbol for this function;
@@ -312,8 +315,8 @@ user-defined operators, use `calculator-user-operators' instead.")
It it possible have a unary prefix version of a binary operator if it
comes later in this list. If the list begins with the symbol `nobind',
-then no key binding will take place -- this is only useful for
-predefined keys.
+then no key binding will take place -- this is only used for predefined
+keys.
Use `calculator-user-operators' to add operators to this list, see its
documentation for an example.")
@@ -370,73 +373,96 @@ Used for repeating operations in calculator-repR/L.")
(list (cons ?e float-e) (cons ?p float-pi)))
"The association list of calculator register values.")
-(defvar calculator-saved-global-map nil
- "Saved global key map.")
-
(defvar calculator-restart-other-mode nil
"Used to hack restarting with the electric mode changed.")
;;;---------------------------------------------------------------------
;;; Key bindings
+(defun calculator-define-key (key cmd map)
+ ;; Arranges for unbound alphabetic keys to be used as their un/shifted
+ ;; versions if those are bound (mimics the usual Emacs global bindings).
+ ;; FIXME: We should adjust Emacs's native "fallback to unshifted binding"
+ ;; such that it can also be used here, rather than having to use a hack like
+ ;; this one.
+ (let* ((key (if (stringp key) (kbd key) key))
+ (omap (keymap-parent map)))
+ (define-key map key cmd)
+ ;; "other" map, used for case-flipped bindings
+ (unless omap
+ (setq omap (make-sparse-keymap))
+ (suppress-keymap omap t)
+ (set-keymap-parent map omap))
+ (let ((m omap))
+ ;; Bind all case-flipped versions.
+ (dotimes (i (length key))
+ (let* ((c (aref key i))
+ (k (vector c))
+ (b (lookup-key m k))
+ (defkey (lambda (x)
+ (define-key m k x)
+ (when (and (characterp c)
+ (or (<= ?A c ?Z) (<= ?a c ?z)))
+ (define-key m (vector (logxor 32 c)) x)))))
+ (cond ((= i (1- (length key)))
+ ;; Prefer longer sequences.
+ (unless (keymapp b) (funcall defkey cmd)))
+ ((keymapp b) (setq m b))
+ (t (let ((sub (make-sparse-keymap)))
+ (funcall defkey sub)
+ (setq m sub)))))))))
+
(defvar calculator-mode-map
(let ((map (make-sparse-keymap)))
(suppress-keymap map t)
- (define-key map "i" nil)
- (define-key map "o" nil)
- (let ((p
- '((calculator-open-paren "[")
- (calculator-close-paren "]")
- (calculator-op-or-exp "+" "-" [kp-add] [kp-subtract])
- (calculator-digit "0" "1" "2" "3" "4" "5" "6" "7" "8"
- "9" "a" "b" "c" "d" "f"
- [kp-0] [kp-1] [kp-2] [kp-3] [kp-4]
- [kp-5] [kp-6] [kp-7] [kp-8] [kp-9])
- (calculator-op [kp-divide] [kp-multiply])
- (calculator-decimal "." [kp-decimal])
- (calculator-exp "e" "E")
- (calculator-dec/deg-mode "D")
- (calculator-set-register "s")
- (calculator-get-register "g")
- (calculator-radix-mode "H" "X" "O" "B")
- (calculator-radix-input-mode "id" "ih" "ix" "io" "ib"
- "iD" "iH" "iX" "iO" "iB")
- (calculator-radix-output-mode "od" "oh" "ox" "oo" "ob"
- "oD" "oH" "oX" "oO" "oB")
- (calculator-rotate-displayer "'")
- (calculator-rotate-displayer-back "\"")
- (calculator-displayer-prev "{")
- (calculator-displayer-next "}")
- (calculator-saved-up [up] [?\C-p])
- (calculator-saved-down [down] [?\C-n])
- (calculator-quit "q" [?\C-g])
- (calculator-enter [enter] [linefeed] [kp-enter]
- [return] [?\r] [?\n])
- (calculator-save-on-list " " [space])
- (calculator-clear-saved [?\C-c] [(control delete)])
- (calculator-save-and-quit [(control return)]
- [(control kp-enter)])
- (calculator-paste [insert] [(shift insert)]
- [paste] [mouse-2] [?\C-y])
- (calculator-clear [delete] [?\C-?] [?\C-d])
- (calculator-help [?h] [??] [f1] [help])
- (calculator-copy [(control insert)] [copy])
- (calculator-backspace [backspace])
- )))
- (while p
- ;; reverse the keys so earlier definitions come last -- makes
- ;; the more sensible bindings visible in the menu
- (let ((func (caar p)) (keys (reverse (cdar p))))
- (while keys
- (define-key map (car keys) func)
- (setq keys (cdr keys))))
- (setq p (cdr p))))
+ (dolist (x '((calculator-digit
+ "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "a" "b" "c"
+ "d" "f" "<kp-0>" "<kp-1>" "<kp-2>" "<kp-3>" "<kp-4>"
+ "<kp-5>" "<kp-6>" "<kp-7>" "<kp-8>" "<kp-9>")
+ (calculator-open-paren "[")
+ (calculator-close-paren "]")
+ (calculator-op-or-exp "+" "-"
+ "<kp-add>" "<kp-subtract>")
+ (calculator-op "<kp-divide>" "<kp-multiply>")
+ (calculator-decimal "." "<kp-decimal>")
+ (calculator-exp "e")
+ (calculator-dec/deg-mode "D")
+ (calculator-set-register "s")
+ (calculator-get-register "g")
+ (calculator-radix-mode "H" "X" "O" "B")
+ (calculator-radix-input-mode "iD" "iH" "iX" "iO" "iB")
+ (calculator-radix-output-mode "oD" "oH" "oX" "oO" "oB")
+ (calculator-rotate-displayer "'")
+ (calculator-rotate-displayer-back "\"")
+ (calculator-displayer-prev "{")
+ (calculator-displayer-next "}")
+ (calculator-saved-up "<up>" "C-p")
+ (calculator-saved-down "<down>" "C-n")
+ (calculator-quit "q" "C-g")
+ (calculator-enter "<enter>" "<linefeed>"
+ "<kp-enter>" "<return>"
+ "RET" "LFD")
+ (calculator-save-on-list "SPC" "<space>")
+ (calculator-clear-saved "C-c" "<C-delete>")
+ (calculator-save-and-quit "<C-return>" "<C-kp-enter>")
+ (calculator-paste "<insert>" "<S-insert>"
+ "<paste>" "<mouse-2>" "C-y")
+ (calculator-clear "<delete>" "DEL" "C-d")
+ (calculator-help "h" "?" "<f1>" "<help>")
+ (calculator-copy "<C-insert>" "<copy>")
+ (calculator-backspace "<backspace>")
+ ))
+ ;; reverse the keys so earlier definitions come last -- makes the
+ ;; more sensible bindings visible in the menu
+ (dolist (k (reverse (cdr x)))
+ (calculator-define-key k (car x) map)))
(if calculator-bind-escape
- (progn (define-key map [?\e] 'calculator-quit)
- (define-key map [escape] 'calculator-quit))
- (define-key map [?\e ?\e ?\e] 'calculator-quit))
+ (progn (calculator-define-key "ESC" 'calculator-quit map)
+ (calculator-define-key "<escape>" 'calculator-quit map))
+ (calculator-define-key "ESC ESC ESC" 'calculator-quit map))
;; make C-h work in text-mode
- (or window-system (define-key map [?\C-h] 'calculator-backspace))
+ (unless window-system
+ (calculator-define-key "C-h" 'calculator-backspace map))
;; set up a menu
(when (and calculator-use-menu (not (boundp 'calculator-menu)))
(let ((radix-selectors
@@ -530,9 +556,9 @@ Used for repeating operations in calculator-repR/L.")
("Modes"
["Radians"
(progn
- (and (or calculator-input-radix calculator-output-radix)
- (calculator-radix-mode "D"))
- (and calculator-deg (calculator-dec/deg-mode)))
+ (when (or calculator-input-radix calculator-output-radix)
+ (calculator-radix-mode "D"))
+ (when calculator-deg (calculator-dec/deg-mode)))
:keys "D"
:style radio
:selected (not (or calculator-input-radix
@@ -540,9 +566,9 @@ Used for repeating operations in calculator-repR/L.")
calculator-deg))]
["Degrees"
(progn
- (and (or calculator-input-radix calculator-output-radix)
- (calculator-radix-mode "D"))
- (or calculator-deg (calculator-dec/deg-mode)))
+ (when (or calculator-input-radix calculator-output-radix)
+ (calculator-radix-mode "D"))
+ (unless calculator-deg (calculator-dec/deg-mode)))
:keys "D"
:style radio
:selected (and calculator-deg
@@ -619,16 +645,17 @@ argument.
hex/oct/bin modes can be set for input and for display separately.
Another toggle-able mode is for using degrees instead of radians for
trigonometric functions.
-The keys to switch modes are (`X' is shortcut for `H'):
+The keys to switch modes are (both `H' and `X' are for hex):
* `D' switch to all-decimal mode, or toggle degrees/radians
* `B' `O' `H' `X' binary/octal/hexadecimal modes for input & display
* `i' `o' followed by one of `D' `B' `O' `H' `X' (case
insensitive) sets only the input or display radix mode
The prompt indicates the current modes:
-* \"D=\": degrees mode;
-* \"?=\": (? is B/O/H) this is the radix for both input and output;
-* \"=?\": (? is B/O/H) the display radix (when input is decimal);
-* \"??\": (? is D/B/O/H) 1st char for input radix, 2nd for display.
+* \"==\": decimal mode (using radians);
+* \"D=\": decimal mode using degrees;
+* \"?=\": ? is B/O/H, the radix for both input and output;
+* \"=?\": ? is B/O/H, the display radix (with decimal input);
+* \"??\": ? is D/B/O/H, 1st char for input radix, 2nd for display.
Also, the quote key can be used to switch display modes for decimal
numbers (double-quote rotates back), and the two brace characters
@@ -688,19 +715,14 @@ See the documentation for `calculator-mode' for more information."
(if calculator-electric-mode
(save-window-excursion
(require 'electric) (message nil) ; hide load message
- (let (old-g-map old-l-map
- (old-buf (window-buffer (minibuffer-window)))
+ (let ((old-buf (window-buffer (minibuffer-window)))
(echo-keystrokes 0)
(garbage-collection-messages nil)) ; no gc msg when electric
(set-window-buffer (minibuffer-window) calculator-buffer)
(select-window (minibuffer-window))
(calculator-reset)
(calculator-update-display)
- (setq old-l-map (current-local-map))
- (setq old-g-map (current-global-map))
- (setq calculator-saved-global-map (current-global-map))
- (use-local-map nil)
- (use-global-map calculator-mode-map)
+ (use-local-map calculator-mode-map)
(run-hooks 'calculator-mode-hook)
(unwind-protect
(catch 'calculator-done
@@ -711,9 +733,7 @@ See the documentation for `calculator-mode' for more information."
nil
(lambda (_x _y) (calculator-update-display))))
(set-window-buffer (minibuffer-window) old-buf)
- (kill-buffer calculator-buffer)
- (use-local-map old-l-map)
- (use-global-map old-g-map))))
+ (kill-buffer calculator-buffer))))
(progn
(cond
((not (get-buffer-window calculator-buffer))
@@ -780,25 +800,11 @@ Defaults to 1."
Adds MORE-OPS to `calculator-operator', called initially to handle
`calculator-initial-operators' and `calculator-user-operators'."
(let ((added-ops nil))
- (while more-ops
- (or (eq (caar more-ops) 'nobind)
- (let ((i -1) (key (caar more-ops)))
- ;; make sure the key is undefined, so it's easy to define
- ;; prefix keys
- (while (< (setq i (1+ i)) (length key))
- (or (keymapp
- (lookup-key calculator-mode-map
- (substring key 0 (1+ i))))
- (progn
- (define-key
- calculator-mode-map (substring key 0 (1+ i)) nil)
- (setq i (length key)))))
- (define-key calculator-mode-map key 'calculator-op)))
- (setq added-ops (cons (if (eq (caar more-ops) 'nobind)
- (cdar more-ops)
- (car more-ops))
- added-ops))
- (setq more-ops (cdr more-ops)))
+ (dolist (op more-ops)
+ (unless (eq (car op) 'nobind)
+ (calculator-define-key (car op) 'calculator-op calculator-mode-map))
+ (push (if (eq (car op) 'nobind) (cdr op) op)
+ added-ops))
;; added-ops come first, but in correct order
(setq calculator-operators
(append (nreverse added-ops) calculator-operators))))
@@ -808,11 +814,11 @@ Adds MORE-OPS to `calculator-operator', called initially to handle
(defun calculator-reset ()
"Reset calculator variables."
- (or calculator-restart-other-mode
- (setq calculator-stack nil
- calculator-curnum nil
- calculator-stack-display nil
- calculator-display-fragile nil))
+ (unless calculator-restart-other-mode
+ (setq calculator-stack nil
+ calculator-curnum nil
+ calculator-stack-display nil
+ calculator-display-fragile nil))
(setq calculator-restart-other-mode nil)
(calculator-update-display))
@@ -831,7 +837,7 @@ The result should not exceed the screen width."
(cond ((or in-r out-r)
(concat (or in-r "=")
(if (equal in-r out-r) "="
- (or out-r "="))))
+ (or out-r "D"))))
(calculator-deg "D=")
(t "=="))))
(expr
@@ -852,39 +858,13 @@ The result should not exceed the screen width."
"Convert the given STR to a number, according to the value of
`calculator-input-radix'."
(if calculator-input-radix
- (let ((radix
- (cdr (assq calculator-input-radix
- '((bin . 2) (oct . 8) (hex . 16)))))
- (i -1) (value 0) (new-value 0))
- ;; assume mostly valid input (e.g., characters in range)
- (while (< (setq i (1+ i)) (length str))
- (setq new-value
- (let* ((ch (upcase (aref str i)))
- (n (cond ((< ch ?0) nil)
- ((<= ch ?9) (- ch ?0))
- ((< ch ?A) nil)
- ((<= ch ?Z) (- ch (- ?A 10)))
- (t nil))))
- (if (and n (<= 0 n) (< n radix))
- (+ n (* radix value))
- (progn
- (calculator-message
- "Warning: Ignoring bad input character `%c'." ch)
- (sit-for 1)
- value))))
- (when (if (< new-value 0) (> value 0) (< value 0))
- (calculator-message "Warning: Overflow in input."))
- (setq value new-value))
- value)
- (car (read-from-string
- (cond ((equal "." str) "0.0")
- ((string-match-p "[eE][+-]?$" str) (concat str "0"))
- ((string-match-p "\\.[0-9]\\|[eE]" str) str)
- ((string-match-p "\\." str)
- ;; do this because Emacs reads "23." as an integer
- (concat str "0"))
- ((stringp str) (concat str ".0"))
- (t "0.0"))))))
+ (string-to-number str (cadr (assq calculator-input-radix
+ '((bin 2) (oct 8) (hex 16)))))
+ (let* ((str (replace-regexp-in-string
+ "\\.\\([^0-9].*\\)?$" ".0\\1" str))
+ (str (replace-regexp-in-string
+ "[eE][+-]?\\([^0-9].*\\)?$" "e0\\1" str)))
+ (string-to-number str))))
(defun calculator-push-curnum ()
"Push the numeric value of the displayed number to the stack."
@@ -911,9 +891,7 @@ If radix output mode is active, toggle digit grouping."
(if (and new-disp (memq new-disp calculator-displayers))
(let ((tmp nil))
(while (not (eq (car calculator-displayers) new-disp))
- (setq tmp (cons (car calculator-displayers) tmp))
- (setq calculator-displayers
- (cdr calculator-displayers)))
+ (push (pop calculator-displayers) tmp))
(setq calculator-displayers
(nconc calculator-displayers (nreverse tmp))))
(nconc (cdr calculator-displayers)
@@ -938,11 +916,11 @@ If radix output mode is active, increase the grouping size."
(progn (setq calculator-radix-grouping-digits
(1+ calculator-radix-grouping-digits))
(calculator-enter))
- (and (car calculator-displayers)
- (let ((disp (caar calculator-displayers)))
- (cond ((symbolp disp) (funcall disp 'left))
- ((and (consp disp) (eq 'std (car disp)))
- (calculator-standard-displayer 'left)))))))
+ (when (car calculator-displayers)
+ (let ((disp (caar calculator-displayers)))
+ (cond ((symbolp disp) (funcall disp 'left))
+ ((and (consp disp) (eq 'std (car disp)))
+ (calculator-standard-displayer 'left)))))))
(defun calculator-displayer-next ()
"Send the current displayer function a `right' argument.
@@ -954,11 +932,11 @@ If radix output mode is active, decrease the grouping size."
(progn (setq calculator-radix-grouping-digits
(max 2 (1- calculator-radix-grouping-digits)))
(calculator-enter))
- (and (car calculator-displayers)
- (let ((disp (caar calculator-displayers)))
- (cond ((symbolp disp) (funcall disp 'right))
- ((and (consp disp) (eq 'std (car disp)))
- (calculator-standard-displayer 'right)))))))
+ (when (car calculator-displayers)
+ (let ((disp (caar calculator-displayers)))
+ (cond ((symbolp disp) (funcall disp 'right))
+ ((and (consp disp) (eq 'std (car disp)))
+ (calculator-standard-displayer 'right)))))))
(defun calculator-remove-zeros (numstr)
"Get a number string NUMSTR and remove unnecessary zeros.
@@ -1003,10 +981,10 @@ The special `left' and `right' symbols will make it change the current
number of digits displayed (`calculator-number-digits')."
(if (symbolp num)
(cond ((eq num 'left)
- (and (> calculator-number-digits 0)
- (setq calculator-number-digits
- (1- calculator-number-digits))
- (calculator-enter)))
+ (when (> calculator-number-digits 0)
+ (setq calculator-number-digits
+ (1- calculator-number-digits))
+ (calculator-enter)))
((eq num 'right)
(setq calculator-number-digits
(1+ calculator-number-digits))
@@ -1054,7 +1032,7 @@ the `left' or `right' when one of the standard modes is used."
(while (< i 0)
(setq num (/ num 1000.0)) (setq exp (+ exp 3))
(setq i (1+ i))))))
- (or calculator-eng-tmp-show (setq calculator-eng-extra nil))
+ (unless calculator-eng-tmp-show (setq calculator-eng-extra nil))
(let ((str (format (format "%%.%sf" calculator-number-digits)
num)))
(concat (let ((calculator-remove-zeros
@@ -1206,7 +1184,7 @@ arguments."
(DX (if (and X calculator-deg) (degrees-to-radians X) X))
(L calculator-saved-list)
(fF `(calculator-funcall ',f x y))
- (fD `(if calculator-deg (* radians-to-degrees x) x)))
+ (fD `(if calculator-deg (radians-to-degrees x) x)))
(eval `(cl-flet ((F (&optional x y) ,fF) (D (x) ,fD))
(let ((X ,X) (Y ,Y) (DX ,DX) (TX ,TX) (TY ,TY) (L ',L))
,f))
@@ -1216,19 +1194,20 @@ arguments."
;;; Input interaction
(defun calculator-last-input (&optional keys)
- "Last char (or event or event sequence) that was read.
-Use KEYS if given, otherwise use `this-command-keys'."
- (let ((inp (or keys (this-command-keys))))
- (if (or (stringp inp) (not (arrayp inp)) (member inp '([f1] [help])))
+ "Return the last key sequence that was used to invoke this command, or
+the input KEYS. Uses the `function-key-map' translate keypad numbers to
+plain ones."
+ (let* ((inp (or keys (this-command-keys)))
+ (inp (or (and (arrayp inp) (not (stringp inp))
+ (lookup-key function-key-map inp))
+ inp)))
+ (if (or (not inp) (stringp inp) (not (arrayp inp))
+ (catch 'done ; any non-chars?
+ (dotimes (i (length inp))
+ (unless (characterp (aref inp i)) (throw 'done t)))
+ nil))
inp
- ;; Translates kp-x to x and [tries to] create a string to lookup
- ;; operators; assume all symbols are translatable via
- ;; `function-key-map'. This is needed because we have key
- ;; bindings for kp-* (which might be the wrong thing to do) so
- ;; they don't get translated in `this-command-keys'.
- (concat (mapcar (lambda (k)
- (if (numberp k) k (error "??bad key?? (%S)" k)))
- (or (lookup-key function-key-map inp) inp))))))
+ (concat inp))))
(defun calculator-clear-fragile (&optional op)
"Clear the fragile flag if it was set, then maybe reset all.
@@ -1270,7 +1249,7 @@ OP is the operator (if any) that caused this call."
(calculator-update-display)))
(defun calculator-exp ()
- "Enter an `E' exponent character, or a digit in hex input mode."
+ "Enter an exponent, or an \"E\" digit in hex input mode."
(interactive)
(cond
(calculator-input-radix (calculator-digit))
@@ -1312,18 +1291,13 @@ Optional string argument KEYS will force using it as the keys entered."
(throw 'op-error nil))
(push op calculator-stack)
(calculator-reduce-stack (calculator-op-prec op))
- (and (= (length calculator-stack) 1)
- (numberp (car calculator-stack))
- ;; the display is fragile if it contains only one number
- (setq calculator-display-fragile t)
- ;; add number to the saved-list
- calculator-add-saved
- (if (= 0 calculator-saved-ptr)
- (setq calculator-saved-list
- (cons (car calculator-stack) calculator-saved-list))
- (let ((p (nthcdr (1- calculator-saved-ptr)
- calculator-saved-list)))
- (setcdr p (cons (car calculator-stack) (cdr p))))))
+ (when (and (= (length calculator-stack) 1)
+ (numberp (car calculator-stack)))
+ ;; the display is fragile if it contains only one number
+ (setq calculator-display-fragile t)
+ (when calculator-add-saved ; add number to the saved-list
+ (push (car calculator-stack)
+ (nthcdr calculator-saved-ptr calculator-saved-list))))
(calculator-update-display))))
(defun calculator-op-or-exp ()
@@ -1332,7 +1306,8 @@ Used with +/- for entering them as digits in numbers like 1e-3 (there is
no need for negative numbers since these are handled by unary
operators)."
(interactive)
- (if (and (not calculator-display-fragile)
+ (if (and (not calculator-input-radix)
+ (not calculator-display-fragile)
calculator-curnum
(string-match-p "[eE]$" calculator-curnum))
(calculator-digit)
@@ -1346,8 +1321,8 @@ operators)."
(interactive)
(calculator-push-curnum)
(if (or calculator-input-radix calculator-output-radix)
- (progn (setq calculator-input-radix nil)
- (setq calculator-output-radix nil))
+ (setq calculator-input-radix nil
+ calculator-output-radix nil)
;; already decimal -- toggle degrees mode
(setq calculator-deg (not calculator-deg)))
(calculator-update-display t))
@@ -1393,8 +1368,8 @@ Optional string argument KEYS will force using it as the keys entered."
(defun calculator-clear-saved ()
"Clear the list of saved values in `calculator-saved-list'."
(interactive)
- (setq calculator-saved-list nil)
- (setq calculator-saved-ptr 0)
+ (setq calculator-saved-list nil
+ calculator-saved-ptr 0)
(calculator-update-display t))
(defun calculator-saved-move (n)
@@ -1492,21 +1467,6 @@ Optional string argument KEYS will force using it as the keys entered."
(kill-new (replace-regexp-in-string
"^\\([^ ]+\\) *\\(\\[[0-9/]+\\]\\)? *$" "\\1" s))))))
-(defun calculator-set-register (reg)
- "Set a register value for REG."
- ;; FIXME: this should use `register-read-with-preview', but it uses
- ;; calculator-registers rather than `register-alist'. (Maybe
- ;; dynamically rebinding it will get blessed?) Also in to
- ;; `calculator-get-register'.
- (interactive "cRegister to store into: ")
- (let* ((as (assq reg calculator-registers))
- (val (progn (calculator-enter) (car calculator-stack))))
- (if as
- (setcdr as val)
- (setq calculator-registers
- (cons (cons reg val) calculator-registers)))
- (calculator-message "[%c] := %S" reg val)))
-
(defun calculator-put-value (val)
"Paste VAL as if entered.
Used by `calculator-paste' and `get-register'."
@@ -1515,31 +1475,55 @@ Used by `calculator-paste' and `get-register'."
(or calculator-display-fragile
(not (numberp (car calculator-stack)))))
(calculator-clear-fragile)
- (setq calculator-curnum (let ((calculator-displayer "%S"))
- (calculator-number-to-string val)))
+ (setq calculator-curnum
+ (let ((calculator-displayer "%S")
+ (calculator-radix-grouping-mode nil)
+ (calculator-output-radix calculator-input-radix))
+ (calculator-number-to-string val)))
(calculator-update-display)))
-(defun calculator-paste ()
- "Paste a value from the `kill-ring'."
- (interactive)
- (calculator-put-value
- (let ((str (replace-regexp-in-string
- "^ *\\(.+[^ ]\\) *$" "\\1" (current-kill 0))))
- (and (not calculator-input-radix)
- calculator-paste-decimals
- (string-match "\\([0-9]+\\)\\(\\.[0-9]+\\)?\\(e[0-9]+\\)?"
- str)
- (or (match-string 1 str)
- (match-string 2 str)
- (match-string 3 str))
- (setq str (concat (or (match-string 1 str) "0")
- (or (match-string 2 str) ".0")
- (or (match-string 3 str) ""))))
- (ignore-errors (calculator-string-to-number str)))))
+(defun calculator-paste (arg)
+ "Paste a value from the `kill-ring'.
+
+With a prefix argument, paste the raw string as a sequence of key
+presses, which can be used to paste expressions. Note that this
+is literal; examples: spaces will store values, pasting \"1+2\"
+will not produce 3 if it's done you're entering a number or after
+a multiplication."
+ (interactive "P")
+ (let ((str (current-kill 0)))
+ (if arg
+ (setq unread-command-events
+ `(,@(listify-key-sequence str) ,@unread-command-events))
+ (calculator-put-value (calculator-string-to-number str)))))
+
+(defun calculator-register-read-with-preview (prompt)
+ "Similar to `register-read-with-preview' but for calculator
+registers."
+ (let ((register-alist calculator-registers)
+ (register-preview-delay 1)
+ (register-preview-function
+ (lambda (r)
+ (format "%s: %s\n"
+ (single-key-description (car r))
+ (calculator-number-to-string (cdr r))))))
+ (register-read-with-preview prompt)))
+
+(defun calculator-set-register (reg)
+ "Set a register value for REG."
+ (interactive (list (calculator-register-read-with-preview
+ "Register to store value into: ")))
+ (let* ((as (assq reg calculator-registers))
+ (val (progn (calculator-enter) (car calculator-stack))))
+ (if as
+ (setcdr as val)
+ (push (cons reg val) calculator-registers))
+ (calculator-message "[%c] := %S" reg val)))
(defun calculator-get-register (reg)
"Get a value from a register REG."
- (interactive "cRegister to get value from: ")
+ (interactive (list (calculator-register-read-with-preview
+ "Register to get value from: ")))
(calculator-put-value (cdr (assq reg calculator-registers))))
(declare-function electric-describe-mode "ehelp" ())
@@ -1551,10 +1535,11 @@ Used by `calculator-paste' and `get-register'."
+ - * / \\(div) %(rem) _(-X,postfix) ;(1/X,postfix) ^(exp) L(og)
Q(sqrt) !(fact) S(in) C(os) T(an) |(or) #(xor) &(and) ~(not)
* >/< repeats last binary operation with its 2nd (1st) arg as postfix op
-* I inverses next trig function * \\='/\"/{} - display/display args
+* I inverse the next trig function \
+* \\='/\"/{/} - display/display args
* D - switch to all-decimal, or toggle deg/rad mode
-* B/O/H/X - binary/octal/hex mode for i/o (X is a shortcut for H)
-* i/o - prefix for d/b/o/x - set only input/output modes
+* B/O/H/X - binary/octal/hex mode for i/o (both H and X are for hex)
+* i/o - prefix for D/B/O/X - set only input/output modes
* enter/= - evaluate current expr. * s/g - set/get a register
* space - evaluate & save on list * l/v - list total/average
* up/down/C-p/C-n - browse saved * C-delete - clear all saved
@@ -1566,15 +1551,11 @@ Used by `calculator-paste' and `get-register'."
(if (eq last-command 'calculator-help)
(let ((mode-name "Calculator")
(major-mode 'calculator-mode)
- (g-map (current-global-map))
(win (selected-window)))
(require 'ehelp)
- (when calculator-electric-mode
- (use-global-map calculator-saved-global-map))
- (if calculator-electric-mode
- (electric-describe-mode)
- (describe-mode))
- (when calculator-electric-mode (use-global-map g-map))
+ (if (not calculator-electric-mode)
+ (describe-mode)
+ (electric-describe-mode))
(select-window win)
(message nil))
(let ((one (one-window-p t))
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index fff63d3b15..36ebd2d881 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -482,7 +482,9 @@ Usually just deletes the appointment buffer."
(and window
(or (eq window (frame-root-window (window-frame window)))
(delete-window window))))
- (kill-buffer appt-buffer-name)
+ (let ((buffer (get-buffer appt-buffer-name)))
+ (when buffer
+ (kill-buffer buffer)))
(if appt-audible
(beep 1)))
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index acb6368bec..48221439e1 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -595,7 +595,7 @@ Hebrew date diary entries must be prefaced by `diary-hebrew-entry-symbol'
of the Hebrew calendar entries, except that the Hebrew month
names cannot be abbreviated. The Hebrew months are numbered
from 1 to 13 with Nisan being 1, 12 being Adar I and 13 being
-Adar II; you must use `Adar I' if you want Adar of a common
+Adar II; you must use \"Adar I\" if you want Adar of a common
Hebrew year. If a Hebrew date diary entry begins with
`diary-nonmarking-symbol', the entry will appear in the diary
listing, but will not be marked in the calendar. This function
diff --git a/lisp/calendar/cal-iso.el b/lisp/calendar/cal-iso.el
index d2680828fe..d7c9a6d9e9 100644
--- a/lisp/calendar/cal-iso.el
+++ b/lisp/calendar/cal-iso.el
@@ -33,7 +33,7 @@
(defun calendar-iso-to-absolute (date)
"The number of days elapsed between the Gregorian date 12/31/1 BC and DATE.
-The `ISO year' corresponds approximately to the Gregorian year, but
+The \"ISO year\" corresponds approximately to the Gregorian year, but
weeks start on Monday and end on Sunday. The first week of the ISO year is
the first such week in which at least 4 days are in a year. The ISO
commercial DATE has the form (week day year) in which week is in the range
@@ -49,7 +49,7 @@ Sunday). The Gregorian date Sunday, December 31, 1 BC is imaginary."
;;;###cal-autoload
(defun calendar-iso-from-absolute (date)
- "Compute the `ISO commercial date' corresponding to the absolute DATE.
+ "Compute the \"ISO commercial date\" corresponding to the absolute DATE.
The ISO year corresponds approximately to the Gregorian year, but weeks
start on Monday and end on Sunday. The first week of the ISO year is the
first such week in which at least 4 days are in a year. The ISO commercial
diff --git a/lisp/calendar/cal-tex.el b/lisp/calendar/cal-tex.el
index 4f2eb98901..c7729dc942 100644
--- a/lisp/calendar/cal-tex.el
+++ b/lisp/calendar/cal-tex.el
@@ -1710,8 +1710,8 @@ non-nil, means add to end of buffer without erasing current contents."
(cal-tex-cmd "\\hspace*" space))
(defun cal-tex-comment (&optional comment)
- "Insert `% ', followed by optional string COMMENT, followed by newline.
-COMMENT may contain newlines, which are prefixed by `% ' in the output."
+ "Insert \"% \", followed by optional string COMMENT, followed by newline.
+COMMENT may contain newlines, which are prefixed by \"% \" in the output."
(insert (format "%% %s\n"
(if comment
(replace-regexp-in-string "\n" "\n% " comment)
diff --git a/lisp/calendar/parse-time.el b/lisp/calendar/parse-time.el
index 6ba26a4a00..b62f9fa794 100644
--- a/lisp/calendar/parse-time.el
+++ b/lisp/calendar/parse-time.el
@@ -48,7 +48,9 @@
((eq char ?:) ?d)))
(defun parse-time-tokenize (string)
- "Tokenize STRING into substrings."
+ "Tokenize STRING into substrings.
+Each substring is a run of \"valid\" characters, i.e., lowercase
+letters, digits, plus or minus signs or colons."
(let ((start nil)
(end (length string))
(all-digits nil)
@@ -59,7 +61,8 @@
(while (and (< index end) ;Skip invalid characters.
(not (setq c (parse-time-string-chars (aref string index)))))
(cl-incf index))
- (setq start index all-digits (eq c ?0))
+ (setq start index
+ all-digits (eq c ?0))
(while (and (< (cl-incf index) end) ;Scan valid characters.
(setq c (parse-time-string-chars (aref string index))))
(setq all-digits (and all-digits (eq c ?0))))
@@ -143,8 +146,12 @@
;;;###autoload
(defun parse-time-string (string)
"Parse the time-string STRING into (SEC MIN HOUR DAY MON YEAR DOW DST TZ).
-The values are identical to those of `decode-time', but any values that are
-unknown are returned as nil."
+STRING should be on something resembling an RFC2822 string, a la
+\"Fri, 25 Mar 2016 16:24:56 +0100\", but this function is
+somewhat liberal in what format it accepts, and will attempt to
+return a \"likely\" value even for somewhat malformed strings.
+The values returned are identical to those of `decode-time', but
+any values that are unknown are returned as nil."
(let ((time (list nil nil nil nil nil nil nil nil nil))
(temp (parse-time-tokenize (downcase string))))
(while temp
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el
index c78d2bbf51..6fec805531 100644
--- a/lisp/calendar/solar.el
+++ b/lisp/calendar/solar.el
@@ -65,10 +65,10 @@ and `am-pm' and `time-zone', both alphabetic strings.
For example, the form
- '(24-hours \":\" minutes
+ (24-hours \":\" minutes
(if time-zone \" (\") time-zone (if time-zone \")\"))
-would give military-style times like `21:07 (UTC)'."
+would give military-style times like \"21:07 (UTC)\"."
:type 'sexp
:risky t
:group 'calendar)
diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index da3e2a267d..20ad372b05 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -126,16 +126,17 @@ type 2 is (HIGH LOW MICRO), and type 3 is (HIGH LOW MICRO PICO).
For backward compatibility, if only four arguments are given,
it is assumed that PICO was omitted and should be treated as zero."
+ (when (null type)
+ (setq type pico)
+ (setq pico 0))
(cond
((eq type 0) (cons high low))
((eq type 1) (list high low))
((eq type 2) (list high low micro))
- ((eq type 3) (list high low micro pico))
- ((null type) (encode-time-value high low micro 0 pico))))
+ ((eq type 3) (list high low micro pico))))
-(when (and (fboundp 'time-add) (subrp (symbol-function 'time-add)))
- (make-obsolete 'encode-time-value nil "25.1")
- (make-obsolete 'with-decoded-time-value nil "25.1"))
+(make-obsolete 'encode-time-value nil "25.1")
+(make-obsolete 'with-decoded-time-value nil "25.1")
(autoload 'parse-time-string "parse-time")
(autoload 'timezone-make-date-arpa-standard "timezone")
@@ -163,27 +164,8 @@ If DATE lacks timezone information, GMT is assumed."
(apply 'signal err)
(error "Invalid date: %s" date)))))))))
-;; Bit of a mess. Emacs has float-time since at least 21.1.
-;; This file is synced to Gnus, and XEmacs packages may have been written
-;; using time-to-seconds from the Gnus library.
-;;;###autoload(if (or (featurep 'emacs)
-;;;###autoload (and (fboundp 'float-time)
-;;;###autoload (subrp (symbol-function 'float-time))))
-;;;###autoload (defalias 'time-to-seconds 'float-time)
-;;;###autoload (autoload 'time-to-seconds "time-date"))
-
-(eval-when-compile
- (or (featurep 'emacs)
- (and (fboundp 'float-time)
- (subrp (symbol-function 'float-time)))
- (defun time-to-seconds (&optional time)
- "Convert optional value TIME to a floating point number.
-TIME defaults to the current time."
- (with-decoded-time-value ((high low micro pico _type
- (or time (current-time))))
- (+ (* high 65536.0)
- low
- (/ (+ (* micro 1e6) pico) 1e12))))))
+;;;###autoload
+(defalias 'time-to-seconds 'float-time)
;;;###autoload
(defun seconds-to-time (seconds)
@@ -209,68 +191,7 @@ TIME should be either a time value or a date-time string."
(time-subtract nil time))
;;;###autoload
-(defalias 'subtract-time 'time-subtract)
-
-;; These autoloads do nothing in Emacs 25, where the functions are builtin.
-;;;###autoload(autoload 'time-add "time-date")
-;;;###autoload(autoload 'time-subtract "time-date")
-;;;###autoload(autoload 'time-less-p "time-date")
-
-(eval-and-compile
- (when (not (and (fboundp 'time-add) (subrp (symbol-function 'time-add))))
-
- (defun time-add (t1 t2)
- "Add two time values T1 and T2. One should represent a time difference."
- (with-decoded-time-value ((high low micro pico type t1)
- (high2 low2 micro2 pico2 type2 t2))
- (setq high (+ high high2)
- low (+ low low2)
- micro (+ micro micro2)
- pico (+ pico pico2)
- type (max type type2))
- (when (>= pico 1000000)
- (setq micro (1+ micro)
- pico (- pico 1000000)))
- (when (>= micro 1000000)
- (setq low (1+ low)
- micro (- micro 1000000)))
- (when (>= low 65536)
- (setq high (1+ high)
- low (- low 65536)))
- (encode-time-value high low micro pico type)))
-
- (defun time-subtract (t1 t2)
- "Subtract two time values, T1 minus T2.
-Return the difference in the format of a time value."
- (with-decoded-time-value ((high low micro pico type t1)
- (high2 low2 micro2 pico2 type2 t2))
- (setq high (- high high2)
- low (- low low2)
- micro (- micro micro2)
- pico (- pico pico2)
- type (max type type2))
- (when (< pico 0)
- (setq micro (1- micro)
- pico (+ pico 1000000)))
- (when (< micro 0)
- (setq low (1- low)
- micro (+ micro 1000000)))
- (when (< low 0)
- (setq high (1- high)
- low (+ low 65536)))
- (encode-time-value high low micro pico type)))
-
- (defun time-less-p (t1 t2)
- "Return non-nil if time value T1 is earlier than time value T2."
- (with-decoded-time-value ((high1 low1 micro1 pico1 _type1 t1)
- (high2 low2 micro2 pico2 _type2 t2))
- (or (< high1 high2)
- (and (= high1 high2)
- (or (< low1 low2)
- (and (= low1 low2)
- (or (< micro1 micro2)
- (and (= micro1 micro2)
- (< pico1 pico2)))))))))))
+(define-obsolete-function-alias 'subtract-time 'time-subtract "25.2")
;;;###autoload
(defun date-to-day (date)
@@ -324,12 +245,7 @@ The Gregorian date Sunday, December 31, 1bce is imaginary."
(defun time-to-number-of-days (time)
"Return the number of days represented by TIME.
Returns a floating point number."
- (/ (funcall (eval-when-compile
- (if (or (featurep 'emacs)
- (and (fboundp 'float-time)
- (subrp (symbol-function 'float-time))))
- 'float-time
- 'time-to-seconds)) time) (* 60 60 24)))
+ (/ (float-time time) (* 60 60 24)))
;;;###autoload
(defun safe-date-to-time (date)
diff --git a/lisp/calendar/timeclock.el b/lisp/calendar/timeclock.el
index 2bdfd98344..f1f48e9995 100644
--- a/lisp/calendar/timeclock.el
+++ b/lisp/calendar/timeclock.el
@@ -532,18 +532,17 @@ non-nil, the amount returned will be relative to past time worked."
(message "%s" string)
string)))
-(defalias 'timeclock-time-to-seconds (if (fboundp 'float-time) 'float-time
- 'time-to-seconds))
-
-(defalias 'timeclock-seconds-to-time 'seconds-to-time)
+(define-obsolete-function-alias 'timeclock-time-to-seconds 'float-time "25.2")
+(define-obsolete-function-alias 'timeclock-seconds-to-time 'seconds-to-time
+ "25.2")
;; Should today-only be removed in favor of timeclock-relative? - gm
(defsubst timeclock-when-to-leave (&optional today-only)
"Return a time value representing the end of today's workday.
If TODAY-ONLY is non-nil, the value returned will be relative only to
the time worked today, and not to past time."
- (timeclock-seconds-to-time
- (- (timeclock-time-to-seconds)
+ (seconds-to-time
+ (- (float-time)
(let ((discrep (timeclock-find-discrep)))
(if discrep
(if today-only
@@ -686,9 +685,8 @@ being logged for. Normally only \"in\" events specify a project."
"\n")
(if (equal (downcase code) "o")
(setq timeclock-last-period
- (- (timeclock-time-to-seconds now)
- (timeclock-time-to-seconds
- (cadr timeclock-last-event)))
+ (- (float-time now)
+ (float-time (cadr timeclock-last-event)))
timeclock-discrepancy
(+ timeclock-discrepancy
timeclock-last-period)))
@@ -723,14 +721,14 @@ recorded to disk. If MOMENT is non-nil, use that as the current time.
This is only provided for coherency when used by
`timeclock-discrepancy'."
(if (equal (car timeclock-last-event) "i")
- (- (timeclock-time-to-seconds moment)
- (timeclock-time-to-seconds (cadr timeclock-last-event)))
+ (- (float-time moment)
+ (float-time (cadr timeclock-last-event)))
timeclock-last-period))
(defsubst timeclock-entry-length (entry)
"Return the length of ENTRY in seconds."
- (- (timeclock-time-to-seconds (cadr entry))
- (timeclock-time-to-seconds (car entry))))
+ (- (float-time (cadr entry))
+ (float-time (car entry))))
(defsubst timeclock-entry-begin (entry)
"Return the start time of ENTRY."
@@ -765,8 +763,8 @@ This is only provided for coherency when used by
(defsubst timeclock-entry-list-span (entry-list)
"Return the total time in seconds spanned by ENTRY-LIST."
- (- (timeclock-time-to-seconds (timeclock-entry-list-end entry-list))
- (timeclock-time-to-seconds (timeclock-entry-list-begin entry-list))))
+ (- (float-time (timeclock-entry-list-end entry-list))
+ (float-time (timeclock-entry-list-begin entry-list))))
(defsubst timeclock-entry-list-break (entry-list)
"Return the total break time (span - length) in ENTRY-LIST."
@@ -1137,7 +1135,7 @@ discrepancy, today's discrepancy, and the time worked today."
last-date-limited nil)
(if beg
(error "Error in format of timelog file!")
- (setq beg (timeclock-time-to-seconds (cadr event))))))
+ (setq beg (float-time (cadr event))))))
((equal (downcase (car event)) "o")
(if (and (nth 2 event)
(> (length (nth 2 event)) 0))
@@ -1145,7 +1143,7 @@ discrepancy, today's discrepancy, and the time worked today."
(if (not beg)
(error "Error in format of timelog file!")
(setq timeclock-last-period
- (- (timeclock-time-to-seconds (cadr event)) beg)
+ (- (float-time (cadr event)) beg)
accum (+ timeclock-last-period accum)
beg nil))
(if (equal last-date todays-date)
@@ -1225,8 +1223,8 @@ HTML-P is non-nil, HTML markup is added."
(insert project "</b><br>\n")
(insert project "*\n"))
(let ((proj-data (cdr (assoc project (timeclock-project-alist log))))
- (two-weeks-ago (timeclock-seconds-to-time
- (- (timeclock-time-to-seconds today)
+ (two-weeks-ago (seconds-to-time
+ (- (float-time today)
(* 2 7 24 60 60))))
two-week-len today-len)
(while proj-data
@@ -1278,17 +1276,17 @@ HTML-P is non-nil, HTML markup is added."
<th>-1 year</th>
</tr>")
(let* ((day-list (timeclock-day-list))
- (thirty-days-ago (timeclock-seconds-to-time
- (- (timeclock-time-to-seconds today)
+ (thirty-days-ago (seconds-to-time
+ (- (float-time today)
(* 30 24 60 60))))
- (three-months-ago (timeclock-seconds-to-time
- (- (timeclock-time-to-seconds today)
+ (three-months-ago (seconds-to-time
+ (- (float-time today)
(* 90 24 60 60))))
- (six-months-ago (timeclock-seconds-to-time
- (- (timeclock-time-to-seconds today)
+ (six-months-ago (seconds-to-time
+ (- (float-time today)
(* 180 24 60 60))))
- (one-year-ago (timeclock-seconds-to-time
- (- (timeclock-time-to-seconds today)
+ (one-year-ago (seconds-to-time
+ (- (float-time today)
(* 365 24 60 60))))
(time-in (vector (list t) (list t) (list t) (list t) (list t)))
(time-out (vector (list t) (list t) (list t) (list t) (list t)))
@@ -1303,12 +1301,11 @@ HTML-P is non-nil, HTML markup is added."
(unless (time-less-p
(timeclock-day-begin day)
(aref lengths i))
- (let ((base (timeclock-time-to-seconds
+ (let ((base (float-time
(timeclock-day-base
(timeclock-day-begin day)))))
(nconc (aref time-in i)
- (list (- (timeclock-time-to-seconds
- (timeclock-day-begin day))
+ (list (- (float-time (timeclock-day-begin day))
base)))
(let ((span (timeclock-day-span day))
(len (timeclock-day-length day))
@@ -1320,8 +1317,7 @@ HTML-P is non-nil, HTML markup is added."
(when (and (> span 0)
(> (/ (float len) (float span)) 0.70))
(nconc (aref time-out i)
- (list (- (timeclock-time-to-seconds
- (timeclock-day-end day))
+ (list (- (float-time (timeclock-day-end day))
base)))
(nconc (aref breaks i) (list (- span len))))
(if req
diff --git a/lisp/cedet/ede/linux.el b/lisp/cedet/ede/linux.el
index 010bfde54d..d7ea35a43f 100644
--- a/lisp/cedet/ede/linux.el
+++ b/lisp/cedet/ede/linux.el
@@ -64,12 +64,12 @@
(defcustom project-linux-compile-target-command (concat ede-make-command " -k -C %s SUBDIRS=%s")
- "*Default command used to compile a target."
+ "Default command used to compile a target."
:group 'project-linux
:type 'string)
(defcustom project-linux-compile-project-command (concat ede-make-command " -k -C %s")
- "*Default command used to compile a project."
+ "Default command used to compile a project."
:group 'project-linux
:type 'string)
diff --git a/lisp/cedet/ede/project-am.el b/lisp/cedet/ede/project-am.el
index 715f3cf46d..72c0bc6010 100644
--- a/lisp/cedet/ede/project-am.el
+++ b/lisp/cedet/ede/project-am.el
@@ -53,17 +53,17 @@
)
(defcustom project-am-compile-project-command nil
- "*Default command used to compile a project."
+ "Default command used to compile a project."
:group 'project-am
:type '(choice (const nil) string))
(defcustom project-am-compile-target-command (concat ede-make-command " -k %s")
- "*Default command used to compile a project."
+ "Default command used to compile a project."
:group 'project-am
:type 'string)
(defcustom project-am-debug-target-function 'gdb
- "*Default Emacs command used to debug a target."
+ "Default Emacs command used to debug a target."
:group 'project-am
:type 'function) ; make this be a list some day
diff --git a/lisp/cedet/ede/simple.el b/lisp/cedet/ede/simple.el
index 380c8dbc58..74b6e056a2 100644
--- a/lisp/cedet/ede/simple.el
+++ b/lisp/cedet/ede/simple.el
@@ -55,12 +55,12 @@
t)
(defcustom ede-simple-save-directory "~/.ede"
- "*Directory where simple EDE project overlays are saved."
+ "Directory where simple EDE project overlays are saved."
:group 'ede
:type 'directory)
(defcustom ede-simple-save-file-name "ProjSimple.ede"
- "*File name used for simple project wrappers."
+ "File name used for simple project wrappers."
:group 'ede
:type 'string)
diff --git a/lisp/cedet/semantic/bovine/c.el b/lisp/cedet/semantic/bovine/c.el
index 821f05a573..904410f6cf 100644
--- a/lisp/cedet/semantic/bovine/c.el
+++ b/lisp/cedet/semantic/bovine/c.el
@@ -296,7 +296,7 @@ Return the defined symbol as a special spp lex token."
;;; Conditional Skipping
;;
(defcustom semantic-c-obey-conditional-section-parsing-flag t
- "*Non-nil means to interpret preprocessor #if sections.
+ "Non-nil means to interpret preprocessor #if sections.
This implies that some blocks of code will not be parsed based on the
values of the conditions in the #if blocks."
:group 'c
diff --git a/lisp/cedet/semantic/bovine/el.el b/lisp/cedet/semantic/bovine/el.el
index 6f41ba3064..93796bd96d 100644
--- a/lisp/cedet/semantic/bovine/el.el
+++ b/lisp/cedet/semantic/bovine/el.el
@@ -149,8 +149,10 @@ compound strings."
(nth 1 form))
(t nil)))
-(defvar semantic-elisp-store-documentation-in-tag nil
- "*When non-nil, store documentation strings in the created tags.")
+(defcustom semantic-elisp-store-documentation-in-tag nil
+ "When non-nil, store documentation strings in the created tags."
+ :type 'boolean
+ :group 'semantic)
(defun semantic-elisp-do-doc (str)
"Return STR as a documentation string IF they are enabled."
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index de762326c3..14b5f3f016 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -568,7 +568,7 @@ if INLINE, then completion is happening inline in a buffer."
(:underline "yellow"))
(((class color) (background light))
(:underline "brown")))
- "*Face used to show the region being completed inline.
+ "Face used to show the region being completed inline.
The face is used in `semantic-complete-inline-tag-engine'."
:group 'semantic-faces)
@@ -1370,7 +1370,7 @@ This object type doesn't do focus, so will never have a focus object."
;; Traditional displayor
(defcustom semantic-completion-displayor-format-tag-function
#'semantic-format-tag-name
- "*A Tag format function to use when showing completions."
+ "A Tag format function to use when showing completions."
:group 'semantic
:type semantic-format-tag-custom-list)
@@ -1871,7 +1871,7 @@ Use this to enable custom editing.")
(defcustom semantic-complete-inline-analyzer-displayor-class
'semantic-displayor-traditional
- "*Class for displayor to use with inline completion."
+ "Class for displayor to use with inline completion."
:group 'semantic
:type semantic-complete-inline-custom-type
)
@@ -2075,7 +2075,7 @@ completion works."
(defcustom semantic-complete-inline-analyzer-idle-displayor-class
'semantic-displayor-ghost
- "*Class for displayor to use with inline completion at idle time."
+ "Class for displayor to use with inline completion at idle time."
:group 'semantic
:type semantic-complete-inline-custom-type
)
diff --git a/lisp/cedet/semantic/db-el.el b/lisp/cedet/semantic/db-el.el
index a85b9024eb..413996a5e8 100644
--- a/lisp/cedet/semantic/db-el.el
+++ b/lisp/cedet/semantic/db-el.el
@@ -44,19 +44,19 @@
)
"A table for returning search results from Emacs.")
-(cl-defmethod semanticdb-refresh-table ((obj semanticdb-table-emacs-lisp) &optional force)
+(cl-defmethod semanticdb-refresh-table ((_obj semanticdb-table-emacs-lisp) &optional _force)
"Do not refresh Emacs Lisp table.
It does not need refreshing."
nil)
-(cl-defmethod semanticdb-needs-refresh-p ((obj semanticdb-table-emacs-lisp))
+(cl-defmethod semanticdb-needs-refresh-p ((_obj semanticdb-table-emacs-lisp))
"Return nil, we never need a refresh."
nil)
(cl-defmethod object-print ((obj semanticdb-table-emacs-lisp) &rest strings)
"Pretty printer extension for `semanticdb-table-emacs-lisp'.
Adds the number of tags in this file to the object print name."
- (apply 'call-next-method obj (cons " (proxy)" strings)))
+ (apply #'cl-call-next-method obj (cons " (proxy)" strings)))
(defclass semanticdb-project-database-emacs-lisp
(semanticdb-project-database eieio-singleton)
@@ -71,15 +71,15 @@ Adds the number of tags in this file to the object print name."
"Pretty printer extension for `semanticdb-table-emacs-lisp'.
Adds the number of tags in this file to the object print name."
(let ((count 0))
- (mapatoms (lambda (sym) (setq count (1+ count))))
- (apply 'call-next-method obj (cons
- (format " (%d known syms)" count)
- strings))))
+ (mapatoms (lambda (_sym) (setq count (1+ count))))
+ (apply #'cl-call-next-method obj (cons
+ (format " (%d known syms)" count)
+ strings))))
;; Create the database, and add it to searchable databases for Emacs Lisp mode.
(defvar-mode-local emacs-lisp-mode semanticdb-project-system-databases
(list
- (semanticdb-project-database-emacs-lisp "Emacs"))
+ (make-instance 'semanticdb-project-database-emacs-lisp))
"Search Emacs core for symbols.")
(defvar-mode-local emacs-lisp-mode semanticdb-find-default-throttle
@@ -96,32 +96,32 @@ Create one of our special tables that can act as an intermediary."
;; We need to return something since there is always the "master table"
;; The table can then answer file name type questions.
(when (not (slot-boundp obj 'tables))
- (let ((newtable (semanticdb-table-emacs-lisp "Emacs System Table")))
+ (let ((newtable (make-instance 'semanticdb-table-emacs-lisp)))
(oset obj tables (list newtable))
(oset newtable parent-db obj)
(oset newtable tags nil)
))
(cl-call-next-method))
-(cl-defmethod semanticdb-file-table ((obj semanticdb-project-database-emacs-lisp) filename)
+(cl-defmethod semanticdb-file-table ((obj semanticdb-project-database-emacs-lisp) _filename)
"From OBJ, return FILENAME's associated table object.
For Emacs Lisp, creates a specialized table."
(car (semanticdb-get-database-tables obj))
)
-(cl-defmethod semanticdb-get-tags ((table semanticdb-table-emacs-lisp ))
+(cl-defmethod semanticdb-get-tags ((_table semanticdb-table-emacs-lisp ))
"Return the list of tags belonging to TABLE."
;; specialty table ? Probably derive tags at request time.
nil)
-(cl-defmethod semanticdb-equivalent-mode ((table semanticdb-table-emacs-lisp) &optional buffer)
+(cl-defmethod semanticdb-equivalent-mode ((_table semanticdb-table-emacs-lisp) &optional buffer)
"Return non-nil if TABLE's mode is equivalent to BUFFER.
Equivalent modes are specified by the `semantic-equivalent-major-modes'
local variable."
(with-current-buffer buffer
(eq (or mode-local-active-mode major-mode) 'emacs-lisp-mode)))
-(cl-defmethod semanticdb-full-filename ((obj semanticdb-table-emacs-lisp))
+(cl-defmethod semanticdb-full-filename ((_obj semanticdb-table-emacs-lisp))
"Fetch the full filename that OBJ refers to.
For Emacs Lisp system DB, there isn't one."
nil)
@@ -151,7 +151,7 @@ If Emacs cannot resolve this symbol to a particular file, then return nil."
'defvar)
))
(sym (intern (semantic-tag-name tag)))
- (file (condition-case err
+ (file (condition-case nil
(symbol-file sym type)
;; Older [X]Emacs don't have a 2nd argument.
(error (symbol-file sym))))
@@ -169,7 +169,6 @@ If Emacs cannot resolve this symbol to a particular file, then return nil."
(setq file (concat file ".gz"))))
(let* ((tab (semanticdb-file-table-object file))
- (alltags (when tab (semanticdb-get-tags tab)))
(newtags (when tab (semanticdb-find-tags-by-name-method
tab (semantic-tag-name tag))))
(match nil))
@@ -248,7 +247,7 @@ TOKTYPE is a hint to the type of tag desired."
"Variable used to collect `mapatoms' output.")
(cl-defmethod semanticdb-find-tags-by-name-method
- ((table semanticdb-table-emacs-lisp) name &optional tags)
+ ((_table semanticdb-table-emacs-lisp) name &optional tags)
"Find all tags named NAME in TABLE.
Uses `intern-soft' to match NAME to Emacs symbols.
Return a list of tags."
@@ -269,26 +268,26 @@ Return a list of tags."
))))
(cl-defmethod semanticdb-find-tags-by-name-regexp-method
- ((table semanticdb-table-emacs-lisp) regex &optional tags)
+ ((_table semanticdb-table-emacs-lisp) regex &optional tags)
"Find all tags with name matching REGEX in TABLE.
Optional argument TAGS is a list of tags to search.
Uses `apropos-internal' to find matches.
Return a list of tags."
(if tags (cl-call-next-method)
- (delq nil (mapcar 'semanticdb-elisp-sym->tag
+ (delq nil (mapcar #'semanticdb-elisp-sym->tag
(apropos-internal regex)))))
(cl-defmethod semanticdb-find-tags-for-completion-method
- ((table semanticdb-table-emacs-lisp) prefix &optional tags)
+ ((_table semanticdb-table-emacs-lisp) prefix &optional tags)
"In TABLE, find all occurrences of tags matching PREFIX.
Optional argument TAGS is a list of tags to search.
Returns a table of all matching tags."
(if tags (cl-call-next-method)
- (delq nil (mapcar 'semanticdb-elisp-sym->tag
+ (delq nil (mapcar #'semanticdb-elisp-sym->tag
(all-completions prefix obarray)))))
(cl-defmethod semanticdb-find-tags-by-class-method
- ((table semanticdb-table-emacs-lisp) class &optional tags)
+ ((_table semanticdb-table-emacs-lisp) _class &optional tags)
"In TABLE, find all occurrences of tags of CLASS.
Optional argument TAGS is a list of tags to search.
Returns a table of all matching tags."
@@ -323,7 +322,7 @@ Like `semanticdb-find-tags-for-completion-method' for Emacs Lisp."
;;; Advanced Searches
;;
(cl-defmethod semanticdb-find-tags-external-children-of-type-method
- ((table semanticdb-table-emacs-lisp) type &optional tags)
+ ((_table semanticdb-table-emacs-lisp) type &optional tags)
"Find all nonterminals which are child elements of TYPE
Optional argument TAGS is a list of tags to search.
Return a list of tags."
@@ -333,7 +332,7 @@ Return a list of tags."
(let* ((class (intern-soft type))
(taglst (when class
(delq nil
- (mapcar 'semanticdb-elisp-sym->tag
+ (mapcar #'semanticdb-elisp-sym->tag
;; Fancy eieio function that knows all about
;; built in methods belonging to CLASS.
(cl-generic-all-functions class)))))
diff --git a/lisp/cedet/semantic/db-find.el b/lisp/cedet/semantic/db-find.el
index d6635a9dce..cd951804db 100644
--- a/lisp/cedet/semantic/db-find.el
+++ b/lisp/cedet/semantic/db-find.el
@@ -902,7 +902,7 @@ instead."
This makes it appear more like the results of a `semantic-find-' call.
This is like `semanticdb-strip-find-results', except the input list RESULTS
will be changed."
- (apply #'nconc (mapcar #'cdr results)))
+ (mapcan #'cdr results))
(defun semanticdb-find-results-p (resultp)
"Non-nil if RESULTP is in the form of a semanticdb search result.
diff --git a/lisp/cedet/semantic/db.el b/lisp/cedet/semantic/db.el
index a72e78402e..1b3f07aa0f 100644
--- a/lisp/cedet/semantic/db.el
+++ b/lisp/cedet/semantic/db.el
@@ -814,7 +814,7 @@ local variable."
;; associated databases.
(defcustom semanticdb-project-roots nil
- "*List of directories, where each directory is the root of some project.
+ "List of directories, where each directory is the root of some project.
All subdirectories of a root project are considered a part of one project.
Values in this string can be overridden by project management programs
via the `semanticdb-project-root-functions' variable."
diff --git a/lisp/cedet/semantic/decorate/include.el b/lisp/cedet/semantic/decorate/include.el
index e12fff1a2a..3ea2a48a9f 100644
--- a/lisp/cedet/semantic/decorate/include.el
+++ b/lisp/cedet/semantic/decorate/include.el
@@ -49,7 +49,7 @@
;;
(defface semantic-decoration-on-includes
nil
- "*Overlay Face used on includes that are not in some other state.
+ "Overlay Face used on includes that are not in some other state.
Used by the decoration style: `semantic-decoration-on-includes'."
:group 'semantic-faces)
@@ -119,7 +119,7 @@ Used by the decoration style: `semantic-decoration-on-includes'."
(:background "#900000"))
(((class color) (background light))
(:background "#fff0f0")))
- "*Face used to show includes that cannot be found.
+ "Face used to show includes that cannot be found.
Used by the decoration style: `semantic-decoration-on-unknown-includes'."
:group 'semantic-faces)
@@ -182,7 +182,7 @@ Used by the decoration style: `semantic-decoration-on-unknown-includes'."
(:background "#009000"))
(((class color) (background light))
(:background "#f0fdf0")))
- "*Face used to show includes that have no file, but do have a DB table.
+ "Face used to show includes that have no file, but do have a DB table.
Used by the decoration style: `semantic-decoration-on-fileless-includes'."
:group 'semantic-faces)
@@ -245,7 +245,7 @@ Used by the decoration style: `semantic-decoration-on-fileless-includes'."
(:background "#555500"))
(((class color) (background light))
(:background "#ffff55")))
- "*Face used to show includes that have not yet been parsed.
+ "Face used to show includes that have not yet been parsed.
Used by the decoration style: `semantic-decoration-on-unparsed-includes'."
:group 'semantic-faces)
diff --git a/lisp/cedet/semantic/decorate/mode.el b/lisp/cedet/semantic/decorate/mode.el
index fca9c3c465..d4385e165c 100644
--- a/lisp/cedet/semantic/decorate/mode.el
+++ b/lisp/cedet/semantic/decorate/mode.el
@@ -455,7 +455,7 @@ Does not provide overlines for prototypes.")
(:overline "cyan"))
(((class color) (background light))
(:overline "blue")))
- "*Face used to show long tags in.
+ "Face used to show long tags in.
Used by decoration style: `semantic-tag-boundary'."
:group 'semantic-faces)
@@ -504,7 +504,7 @@ Used by decoration style: `semantic-tag-boundary'."
(:background "#200000"))
(((class color) (background light))
(:background "#8fffff")))
- "*Face used to show privately scoped tags in.
+ "Face used to show privately scoped tags in.
Used by the decoration style: `semantic-decoration-on-private-members'."
:group 'semantic-faces)
@@ -526,7 +526,7 @@ Use a primary decoration."
(:background "#000020"))
(((class color) (background light))
(:background "#fffff8")))
- "*Face used to show protected scoped tags in.
+ "Face used to show protected scoped tags in.
Used by the decoration style: `semantic-decoration-on-protected-members'."
:group 'semantic-faces)
diff --git a/lisp/cedet/semantic/format.el b/lisp/cedet/semantic/format.el
index 1fe703fd09..0a984ebb32 100644
--- a/lisp/cedet/semantic/format.el
+++ b/lisp/cedet/semantic/format.el
@@ -559,14 +559,14 @@ Optional argument COLOR means highlight the prototype with font-lock colors."
;;; UML display styles
;;
(defcustom semantic-uml-colon-string " : "
- "*String used as a color separator between parts of a UML string.
+ "String used as a color separator between parts of a UML string.
In UML, a variable may appear as `varname : type'.
Change this variable to change the output separator."
:group 'semantic
:type 'string)
(defcustom semantic-uml-no-protection-string ""
- "*String used to describe when no protection is specified.
+ "String used to describe when no protection is specified.
Used by `semantic-format-tag-uml-protection-to-string'."
:group 'semantic
:type 'string)
diff --git a/lisp/cedet/semantic/ia.el b/lisp/cedet/semantic/ia.el
index 214fbb50f9..a4dabe6608 100644
--- a/lisp/cedet/semantic/ia.el
+++ b/lisp/cedet/semantic/ia.el
@@ -146,7 +146,7 @@ Completion options are calculated with `semantic-analyze-possible-completions'."
(defcustom semantic-ia-completion-menu-format-tag-function
'semantic-format-tag-uml-concise-prototype
- "*Function used to convert a tag to a string during completion."
+ "Function used to convert a tag to a string during completion."
:group 'semantic
:type semantic-format-tag-custom-list)
diff --git a/lisp/cedet/semantic/idle.el b/lisp/cedet/semantic/idle.el
index 549a30ac0b..5f902622ac 100644
--- a/lisp/cedet/semantic/idle.el
+++ b/lisp/cedet/semantic/idle.el
@@ -141,7 +141,7 @@ Use the command `semantic-idle-scheduler-mode' to change this variable.")
(make-variable-buffer-local 'semantic-idle-scheduler-mode)
(defcustom semantic-idle-scheduler-max-buffer-size 0
- "*Maximum size in bytes of buffers where idle-scheduler is enabled.
+ "Maximum size in bytes of buffers where idle-scheduler is enabled.
If this value is less than or equal to 0, idle-scheduler is enabled in
all buffers regardless of their size."
:group 'semantic
@@ -303,13 +303,13 @@ call additional functions registered with the timer calls."
;; Unlike the shorter timer, the WORK timer will kick of tasks that
;; may take a long time to complete.
(defcustom semantic-idle-work-parse-neighboring-files-flag nil
- "*Non-nil means to parse files in the same dir as the current buffer.
+ "Non-nil means to parse files in the same dir as the current buffer.
Disable to prevent lots of excessive parsing in idle time."
:group 'semantic
:type 'boolean)
(defcustom semantic-idle-work-update-headers-flag nil
- "*Non-nil means to parse through header files in idle time.
+ "Non-nil means to parse through header files in idle time.
Disable to prevent idle time parsing of many files. If completion
is called that work will be done then instead."
:group 'semantic
diff --git a/lisp/cedet/semantic/imenu.el b/lisp/cedet/semantic/imenu.el
index 4983d6c9f4..cfff253a79 100644
--- a/lisp/cedet/semantic/imenu.el
+++ b/lisp/cedet/semantic/imenu.el
@@ -57,7 +57,7 @@
;;;###autoload
(defcustom semantic-imenu-summary-function 'semantic-format-tag-abbreviate
- "*Function to use when creating items in Imenu.
+ "Function to use when creating items in Imenu.
Some useful functions are found in `semantic-format-tag-functions'."
:group 'semantic-imenu
:type semantic-format-tag-custom-list)
@@ -65,20 +65,20 @@ Some useful functions are found in `semantic-format-tag-functions'."
;;;###autoload
(defcustom semantic-imenu-bucketize-file t
- "*Non-nil if tags in a file are to be grouped into buckets."
+ "Non-nil if tags in a file are to be grouped into buckets."
:group 'semantic-imenu
:type 'boolean)
(make-variable-buffer-local 'semantic-imenu-bucketize-file)
(defcustom semantic-imenu-adopt-external-members t
- "*Non-nil if types in a file should adopt externally defined members.
+ "Non-nil if types in a file should adopt externally defined members.
C++ and CLOS can define methods that are not in the body of a class
definition."
:group 'semantic-imenu
:type 'boolean)
(defcustom semantic-imenu-buckets-to-submenu t
- "*Non-nil if buckets of tags are to be turned into submenus.
+ "Non-nil if buckets of tags are to be turned into submenus.
This option is ignored if `semantic-imenu-bucketize-file' is nil."
:group 'semantic-imenu
:type 'boolean)
@@ -86,7 +86,7 @@ This option is ignored if `semantic-imenu-bucketize-file' is nil."
;;;###autoload
(defcustom semantic-imenu-expand-type-members t
- "*Non-nil if types should have submenus with members in them."
+ "Non-nil if types should have submenus with members in them."
:group 'semantic-imenu
:type 'boolean)
(make-variable-buffer-local 'semantic-imenu-expand-type-members)
@@ -94,7 +94,7 @@ This option is ignored if `semantic-imenu-bucketize-file' is nil."
'semantic-imenu-expand-type-members "23.2")
(defcustom semantic-imenu-bucketize-type-members t
- "*Non-nil if members of a type should be grouped into buckets.
+ "Non-nil if members of a type should be grouped into buckets.
A nil value means to keep them in the same order.
Overridden to nil if `semantic-imenu-bucketize-file' is nil."
:group 'semantic-imenu
@@ -104,7 +104,7 @@ Overridden to nil if `semantic-imenu-bucketize-file' is nil."
'semantic-imenu-bucketize-type-members "23.2")
(defcustom semantic-imenu-sort-bucket-function nil
- "*Function to use when sorting tags in the buckets of functions.
+ "Function to use when sorting tags in the buckets of functions.
See `semantic-bucketize' and the FILTER argument for more details on this function."
:group 'semantic-imenu
:type '(radio (const :tag "No Sorting" nil)
@@ -120,7 +120,7 @@ See `semantic-bucketize' and the FILTER argument for more details on this functi
(make-variable-buffer-local 'semantic-imenu-sort-bucket-function)
(defcustom semantic-imenu-index-directory nil
- "*Non nil to index the entire directory for tags.
+ "Non nil to index the entire directory for tags.
Doesn't actually parse the entire directory, but displays tags for all files
currently listed in the current Semantic database.
This variable has no meaning if semanticdb is not active."
@@ -128,7 +128,7 @@ This variable has no meaning if semanticdb is not active."
:type 'boolean)
(defcustom semantic-imenu-auto-rebuild-directory-indexes nil
- "*If non-nil automatically rebuild directory index imenus.
+ "If non-nil automatically rebuild directory index imenus.
That is when a directory index imenu is updated, automatically rebuild
other buffer local ones based on the same semanticdb."
:group 'semantic-imenu
@@ -498,7 +498,7 @@ Clears all imenu menus that may be depending on the database."
"Function to convert semantic tags into `which-function' text.")
(defcustom semantic-which-function-use-color nil
- "*Use color when displaying the current function with `which-function'."
+ "Use color when displaying the current function with `which-function'."
:group 'semantic-imenu
:type 'boolean)
diff --git a/lisp/cedet/semantic/lex-spp.el b/lisp/cedet/semantic/lex-spp.el
index b48f5aedd6..b960e7a4d9 100644
--- a/lisp/cedet/semantic/lex-spp.el
+++ b/lisp/cedet/semantic/lex-spp.el
@@ -1239,7 +1239,7 @@ of type `spp-macro-undef' is to be created."
;; written yet.
;;
(defcustom semantic-lex-spp-use-headers-flag nil
- "*Non-nil means to pre-parse headers as we go.
+ "Non-nil means to pre-parse headers as we go.
For languages that use the Semantic pre-processor, this can
improve the accuracy of parsed files where include files
can change the state of what's parsed in the current file.
@@ -1306,8 +1306,10 @@ where a valid symbol is 'system, or nil."
;;
;; These routines are for saving macro lists into an EIEIO persistent
;; file.
-(defvar semantic-lex-spp-macro-max-length-to-save 200
- "*Maximum length of an SPP macro before we opt to not save it.")
+(defcustom semantic-lex-spp-macro-max-length-to-save 200
+ "Maximum length of an SPP macro before we opt to not save it."
+ :type 'integer
+ :group 'semantic)
;;;###autoload
(defun semantic-lex-spp-table-write-slot-value (value)
diff --git a/lisp/cedet/semantic/lex.el b/lisp/cedet/semantic/lex.el
index c827fabb34..f8372e6878 100644
--- a/lisp/cedet/semantic/lex.el
+++ b/lisp/cedet/semantic/lex.el
@@ -739,8 +739,10 @@ a LOCAL option.")
;; Stack of nested blocks.
(defvar semantic-lex-block-stack nil)
-;;(defvar semantic-lex-timeout 5
-;; "*Number of sections of lexing before giving up.")
+;;(defcustom semantic-lex-timeout 5
+;; "Number of sections of lexing before giving up."
+;; :type 'integer
+;; :group 'semantic)
(defsubst semantic-lex-debug-break (token)
"Break during lexical analysis at TOKEN."
diff --git a/lisp/cedet/semantic/mru-bookmark.el b/lisp/cedet/semantic/mru-bookmark.el
index 4146b4e5b2..1e15773952 100644
--- a/lisp/cedet/semantic/mru-bookmark.el
+++ b/lisp/cedet/semantic/mru-bookmark.el
@@ -263,7 +263,7 @@ If ARG is positive or nil, enable, if it is negative, disable."
'semantic-mru-bookmark-mode (if global-semantic-mru-bookmark-mode 1 -1)))
(defcustom semantic-mru-bookmark-mode-hook nil
- "*Hook run at the end of function `semantic-mru-bookmark-mode'."
+ "Hook run at the end of function `semantic-mru-bookmark-mode'."
:group 'semantic
:type 'hook)
diff --git a/lisp/cedet/semantic/sb.el b/lisp/cedet/semantic/sb.el
index 7eac255fe3..a06955067d 100644
--- a/lisp/cedet/semantic/sb.el
+++ b/lisp/cedet/semantic/sb.el
@@ -38,7 +38,7 @@
(declare-function semanticdb-file-stream "semantic/db")
(defcustom semantic-sb-autoexpand-length 1
- "*Length of a semantic bucket to autoexpand in place.
+ "Length of a semantic bucket to autoexpand in place.
This will replace the named bucket that would have usually occurred here."
:group 'speedbar
:type 'integer)
@@ -49,12 +49,12 @@ Make this buffer local for modes that have different types of tags
that should be ignored.")
(defcustom semantic-sb-button-format-tag-function 'semantic-format-tag-abbreviate
- "*Function called to create the text for a but from a token."
+ "Function called to create the text for a but from a token."
:group 'speedbar
:type semantic-format-tag-custom-list)
(defcustom semantic-sb-info-format-tag-function 'semantic-format-tag-summarize
- "*Function called to create the text for info display from a token."
+ "Function called to create the text for info display from a token."
:group 'speedbar
:type semantic-format-tag-custom-list)
diff --git a/lisp/cedet/semantic/symref.el b/lisp/cedet/semantic/symref.el
index 516a4f3041..854b72fcfd 100644
--- a/lisp/cedet/semantic/symref.el
+++ b/lisp/cedet/semantic/symref.el
@@ -65,6 +65,8 @@
;; Your tool should then create an instance of `semantic-symref-result'.
(require 'semantic)
+(eval-when-compile (require 'semantic/find)) ;For semantic-find-tags-*
+(eval-when-compile (require 'ede/proj)) ;For `metasubproject' warning.
(defvar ede-minor-mode)
(declare-function data-debug-new-buffer "data-debug")
@@ -74,10 +76,12 @@
(declare-function ede-up-directory "ede/files")
;;; Code:
-(defvar semantic-symref-tool 'detect
- "*The active symbol reference tool name.
+(defcustom semantic-symref-tool 'detect
+ "The active symbol reference tool name.
The tool symbol can be 'detect, or a symbol that is the name of
-a tool that can be used for symbol referencing.")
+a tool that can be used for symbol referencing."
+ :type 'symbol
+ :group 'semantic)
(make-variable-buffer-local 'semantic-symref-tool)
;;; TOOL SETUP
@@ -109,7 +113,7 @@ Start with an EDE project, or use the default directory."
default-directory)))
(if (and rootproj (condition-case nil
;; Hack for subprojects.
- (oref rootproj :metasubproject)
+ (oref rootproj metasubproject)
(error nil)))
(ede-up-directory rootdirbase)
rootdirbase)))
@@ -271,7 +275,7 @@ Optional SCOPE specifies which file set to search. Defaults to `project'.
Refers to `semantic-symref-tool', to determine the reference tool to use
for the current buffer.
Returns an object of class `semantic-symref-result'."
- (interactive "sEgrep style Regexp: ")
+ (interactive "sGrep -E style Regexp: ")
(let* ((inst (semantic-symref-instantiate
:searchfor text
:searchtype 'regexp
@@ -284,6 +288,80 @@ Returns an object of class `semantic-symref-result'."
(semantic-symref-data-debug-last-result))))
)
+;;; SYMREF TOOLS
+;;
+;; The base symref tool provides something to hang new tools off of
+;; for finding symbol references.
+(defclass semantic-symref-tool-baseclass ()
+ ((searchfor :initarg :searchfor
+ :type string
+ :documentation "The thing to search for.")
+ (searchtype :initarg :searchtype
+ :type symbol
+ :documentation "The type of search to do.
+Values could be 'symbol, 'regexp, 'tagname, or 'completion.")
+ (searchscope :initarg :searchscope
+ :type symbol
+ :documentation
+ "The scope to search for.
+Can be 'project, 'target, or 'file.")
+ (resulttype :initarg :resulttype
+ :type symbol
+ :documentation
+ "The kind of search results desired.
+Can be 'line, 'file, or 'tag.
+The type of result can be converted from 'line to 'file, or 'line to 'tag,
+but not from 'file to 'line or 'tag.")
+ )
+ "Baseclass for all symbol references tools.
+A symbol reference tool supplies functionality to identify the locations of
+where different symbols are used.
+
+Subclasses should be named `semantic-symref-tool-NAME', where
+NAME is the name of the tool used in the configuration variable
+`semantic-symref-tool'"
+ :abstract t)
+
+(cl-defmethod semantic-symref-get-result ((tool semantic-symref-tool-baseclass))
+ "Calculate the results of a search based on TOOL.
+The symref TOOL should already contain the search criteria."
+ (let ((answer (semantic-symref-perform-search tool))
+ )
+ (when answer
+ (let ((answersym (if (eq (oref tool resulttype) 'file)
+ :hit-files
+ (if (stringp (car answer))
+ :hit-text
+ :hit-lines))))
+ (semantic-symref-result (oref tool searchfor)
+ answersym
+ answer
+ :created-by tool))
+ )
+ ))
+
+(cl-defmethod semantic-symref-perform-search ((_tool semantic-symref-tool-baseclass))
+ "Base search for symref tools should throw an error."
+ (error "Symref tool objects must implement `semantic-symref-perform-search'"))
+
+(cl-defmethod semantic-symref-parse-tool-output ((tool semantic-symref-tool-baseclass)
+ outputbuffer)
+ "Parse the entire OUTPUTBUFFER of a symref tool.
+Calls the method `semantic-symref-parse-tool-output-one-line' over and
+over until it returns nil."
+ (with-current-buffer outputbuffer
+ (goto-char (point-min))
+ (let ((result nil)
+ (hit nil))
+ (while (setq hit (semantic-symref-parse-tool-output-one-line tool))
+ (setq result (cons hit result)))
+ (nreverse result)))
+ )
+
+(cl-defmethod semantic-symref-parse-tool-output-one-line ((_tool semantic-symref-tool-baseclass))
+ "Base tool output parser is not implemented."
+ (error "Symref tool objects must implement `semantic-symref-parse-tool-output-one-line'"))
+
;;; RESULTS
;;
;; The results class and methods provide features for accessing hits.
@@ -316,9 +394,9 @@ Use the `semantic-symref-hit-tags' method to get this list.")
(cl-defmethod semantic-symref-result-get-files ((result semantic-symref-result))
"Get the list of files from the symref result RESULT."
- (if (slot-boundp result :hit-files)
+ (if (slot-boundp result 'hit-files)
(oref result hit-files)
- (let* ((lines (oref result :hit-lines))
+ (let* ((lines (oref result hit-lines))
(files (mapcar (lambda (a) (cdr a)) lines))
(ans nil))
(setq ans (list (car files))
@@ -359,12 +437,12 @@ Optional OPEN-BUFFERS indicates that the buffers that the hits are
in should remain open after scanning.
Note: This can be quite slow if most of the hits are not in buffers
already."
- (if (and (slot-boundp result :hit-tags) (oref result hit-tags))
+ (if (and (slot-boundp result 'hit-tags) (oref result hit-tags))
(oref result hit-tags)
;; Calculate the tags.
- (let ((lines (oref result :hit-lines))
- (txt (oref (oref result :created-by) :searchfor))
- (searchtype (oref (oref result :created-by) :searchtype))
+ (let ((lines (oref result hit-lines))
+ (txt (oref (oref result created-by) searchfor))
+ (searchtype (oref (oref result created-by) searchtype))
(ans nil)
(out nil))
(save-excursion
@@ -390,7 +468,7 @@ already."
(semantic--tag-put-property (car out) :hit lines)))
))
;; Out is reversed... twice
- (oset result :hit-tags (nreverse out)))))
+ (oset result hit-tags (nreverse out)))))
(defun semantic-symref-hit-to-tag-via-db (hit searchtxt searchtype)
"Convert the symref HIT into a TAG by looking up the tag via a database.
@@ -403,20 +481,18 @@ If there is no database, of if the searchtype is wrong, return nil."
;; tagname, tagregexp, tagcompletions
(if (not (memq searchtype '(tagname tagregexp tagcompletions)))
nil
- (let* ((line (car hit))
- (file (cdr hit))
+ (let* ((file (cdr hit))
;; FAIL here vv - don't load is not obeyed if no table found.
(db (semanticdb-file-table-object file t))
- (found nil)
+ (found
+ (cond ((eq searchtype 'tagname)
+ (semantic-find-tags-by-name searchtxt db))
+ ((eq searchtype 'tagregexp)
+ (semantic-find-tags-by-name-regexp searchtxt db))
+ ((eq searchtype 'tagcompletions)
+ (semantic-find-tags-for-completion searchtxt db))))
(hit nil)
)
- (cond ((eq searchtype 'tagname)
- (setq found (semantic-find-tags-by-name searchtxt db)))
- ((eq searchtype 'tagregexp)
- (setq found (semantic-find-tags-by-name-regexp searchtxt db)))
- ((eq searchtype 'tagcompletions)
- (setq found (semantic-find-tags-for-completion searchtxt db)))
- )
;; Loop over FOUND to see if we can line up a match with a line number.
(when (= (length found) 1)
(setq hit (car found)))
@@ -501,80 +577,6 @@ buffers that were opened."
(semantic--tag-put-property tag :hit (list line)))
tag))
-;;; SYMREF TOOLS
-;;
-;; The base symref tool provides something to hang new tools off of
-;; for finding symbol references.
-(defclass semantic-symref-tool-baseclass ()
- ((searchfor :initarg :searchfor
- :type string
- :documentation "The thing to search for.")
- (searchtype :initarg :searchtype
- :type symbol
- :documentation "The type of search to do.
-Values could be 'symbol, 'regexp, 'tagname, or 'completion.")
- (searchscope :initarg :searchscope
- :type symbol
- :documentation
- "The scope to search for.
-Can be 'project, 'target, or 'file.")
- (resulttype :initarg :resulttype
- :type symbol
- :documentation
- "The kind of search results desired.
-Can be 'line, 'file, or 'tag.
-The type of result can be converted from 'line to 'file, or 'line to 'tag,
-but not from 'file to 'line or 'tag.")
- )
- "Baseclass for all symbol references tools.
-A symbol reference tool supplies functionality to identify the locations of
-where different symbols are used.
-
-Subclasses should be named `semantic-symref-tool-NAME', where
-NAME is the name of the tool used in the configuration variable
-`semantic-symref-tool'"
- :abstract t)
-
-(cl-defmethod semantic-symref-get-result ((tool semantic-symref-tool-baseclass))
- "Calculate the results of a search based on TOOL.
-The symref TOOL should already contain the search criteria."
- (let ((answer (semantic-symref-perform-search tool))
- )
- (when answer
- (let ((answersym (if (eq (oref tool :resulttype) 'file)
- :hit-files
- (if (stringp (car answer))
- :hit-text
- :hit-lines))))
- (semantic-symref-result (oref tool searchfor)
- answersym
- answer
- :created-by tool))
- )
- ))
-
-(cl-defmethod semantic-symref-perform-search ((tool semantic-symref-tool-baseclass))
- "Base search for symref tools should throw an error."
- (error "Symref tool objects must implement `semantic-symref-perform-search'"))
-
-(cl-defmethod semantic-symref-parse-tool-output ((tool semantic-symref-tool-baseclass)
- outputbuffer)
- "Parse the entire OUTPUTBUFFER of a symref tool.
-Calls the method `semantic-symref-parse-tool-output-one-line' over and
-over until it returns nil."
- (with-current-buffer outputbuffer
- (goto-char (point-min))
- (let ((result nil)
- (hit nil))
- (while (setq hit (semantic-symref-parse-tool-output-one-line tool))
- (setq result (cons hit result)))
- (nreverse result)))
- )
-
-(cl-defmethod semantic-symref-parse-tool-output-one-line ((tool semantic-symref-tool-baseclass))
- "Base tool output parser is not implemented."
- (error "Symref tool objects must implement `semantic-symref-parse-tool-output-one-line'"))
-
(provide 'semantic/symref)
;; Local variables:
diff --git a/lisp/cedet/semantic/symref/grep.el b/lisp/cedet/semantic/symref/grep.el
index 36e97da818..b232e0fb61 100644
--- a/lisp/cedet/semantic/symref/grep.el
+++ b/lisp/cedet/semantic/symref/grep.el
@@ -81,7 +81,7 @@ Optional argument MODE specifies the `major-mode' to test."
(if (null (cdr args))
args
`("(" ,@args
- ,@(apply #'nconc (mapcar (lambda (s) `("-o" "-name" ,s)) pat))
+ ,@(mapcan (lambda (s) `("-o" "-name" ,s)) pat)
")"))))))
(defvar grepflags)
diff --git a/lisp/cedet/semantic/wisent/comp.el b/lisp/cedet/semantic/wisent/comp.el
index 86058cf698..3e46f351e1 100644
--- a/lisp/cedet/semantic/wisent/comp.el
+++ b/lisp/cedet/semantic/wisent/comp.el
@@ -187,8 +187,10 @@ If optional LEFT is non-nil insert spaces on left."
(defvar wisent-new-log-flag nil
"Non-nil means to start a new report.")
-(defvar wisent-verbose-flag nil
- "*Non-nil means to report verbose information on generated parser.")
+(defcustom wisent-verbose-flag nil
+ "Non-nil means to report verbose information on generated parser."
+ :group 'wisent
+ :type 'boolean)
(defun wisent-toggle-verbose-flag ()
"Toggle whether to report verbose information on generated parser."
@@ -2261,12 +2263,14 @@ tables so that there is no longer a conflict."
(setq i (1+ i))))
rrc-count))
-(defvar wisent-expected-conflicts nil
- "*If non-nil suppress the warning about shift/reduce conflicts.
+(defcustom wisent-expected-conflicts nil
+ "If non-nil suppress the warning about shift/reduce conflicts.
It is a decimal integer N that says there should be no warning if
there are N shift/reduce conflicts and no reduce/reduce conflicts. A
warning is given if there are either more or fewer conflicts, or if
-there are any reduce/reduce conflicts.")
+there are any reduce/reduce conflicts."
+ :group 'wisent
+ :type '(choice (const nil) integer))
(defun wisent-total-conflicts ()
"Report the total number of conflicts."
diff --git a/lisp/cedet/semantic/wisent/wisent.el b/lisp/cedet/semantic/wisent/wisent.el
index 9eab860421..2b22573251 100644
--- a/lisp/cedet/semantic/wisent/wisent.el
+++ b/lisp/cedet/semantic/wisent/wisent.el
@@ -127,8 +127,9 @@ POSITIONS are available."
(apply #'max (mapcar #'cdr pl))))))
;;; Reporting
-(defvar wisent-parse-verbose-flag nil
- "*Non-nil means to issue more messages while parsing.")
+(defcustom wisent-parse-verbose-flag nil
+ "Non-nil means to issue more messages while parsing."
+ :type 'boolean)
(defun wisent-parse-toggle-verbose-flag ()
"Toggle whether to issue more messages while parsing."
diff --git a/lisp/cedet/srecode/fields.el b/lisp/cedet/srecode/fields.el
index 1b7715c39d..e4b54b8364 100644
--- a/lisp/cedet/srecode/fields.el
+++ b/lisp/cedet/srecode/fields.el
@@ -55,7 +55,7 @@ Once an insertion set is done, these fields will be activated.")
(:underline "green"))
(((class color) (background light))
(:underline "green4")))
- "*Face used to specify editable fields from a template."
+ "Face used to specify editable fields from a template."
:group 'semantic-faces)
(defcustom srecode-fields-exit-confirmation nil
diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el
index 19999a6fd9..66c4b7d23a 100644
--- a/lisp/cedet/srecode/insert.el
+++ b/lisp/cedet/srecode/insert.el
@@ -194,9 +194,10 @@ Buffer based features related to change hooks is handled one level up."
;; area. Return value is not important.
))
-(declare-function data-debug-new-buffer "data-debug")
-(declare-function data-debug-insert-stuff-list "data-debug")
-(declare-function data-debug-insert-thing dictionary "data-debug")
+(declare-function data-debug-new-buffer "data-debug" (name))
+(declare-function data-debug-insert-stuff-list "data-debug" (stufflist prefix))
+(declare-function data-debug-insert-thing "data-debug"
+ (thing prefix prebuttontext &optional parent))
(defun srecode-insert-show-error-report (dictionary format &rest args)
"Display an error report based on DICTIONARY, FORMAT and ARGS.
diff --git a/lisp/comint.el b/lisp/comint.el
index dcd4a5ae4c..0319eeb80c 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -345,14 +345,16 @@ This variable is buffer-local."
(regexp-opt
'("Enter" "enter" "Enter same" "enter same" "Enter the" "enter the"
"Old" "old" "New" "new" "'s" "login"
- "Kerberos" "CVS" "UNIX" " SMB" "LDAP" "[sudo]" "Repeat" "Bad") t)
+ "Kerberos" "CVS" "UNIX" " SMB" "LDAP" "PEM"
+ "[sudo]" "Repeat" "Bad" "Retype")
+ t)
" +\\)"
"\\(?:" (regexp-opt password-word-equivalents) "\\|Response\\)"
- "\\(?:\\(?:, try\\)? *again\\| (empty for no passphrase)\\| (again)\\)?\
-\\(?: for [^::៖]+\\)?[::៖]\\s *\\'")
+ "\\(?:\\(?:, try\\)? *again\\| (empty for no passphrase)\\| (again)\\)?"
+ "\\(?: for .+\\)?[::៖]\\s *\\'")
"Regexp matching prompts for passwords in the inferior process.
This is used by `comint-watch-for-password-prompt'."
- :version "24.4"
+ :version "25.2"
:type 'regexp
:group 'comint)
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 7826506cc4..2e39514cac 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -197,10 +197,6 @@
:link '(custom-manual "(emacs)Emulation")
:group 'editing)
-(defgroup mouse nil
- "Mouse support."
- :group 'editing)
-
(defgroup outlines nil
"Support for hierarchical outlining."
:group 'wp)
@@ -406,10 +402,6 @@
"Input from the keyboard."
:group 'environment)
-(defgroup mouse nil
- "Input from the mouse."
- :group 'environment)
-
(defgroup menu nil
"Input from the menus."
:group 'environment)
@@ -1165,7 +1157,7 @@ Show the buffer in another window, but don't select it."
(unless (eq symbol basevar)
(message "`%s' is an alias for `%s'" symbol basevar))))
-(defvar customize-changed-options-previous-release "24.1"
+(defvar customize-changed-options-previous-release "24.5"
"Version for `customize-changed-options' to refer back to by default.")
;; Packages will update this variable, so make it available.
@@ -1545,27 +1537,29 @@ not for everybody."
buf))))
;;;###autoload
-(defun custom-buffer-create (options &optional name description)
+(defun custom-buffer-create (options &optional name _description)
"Create a buffer containing OPTIONS.
Optional NAME is the name of the buffer.
OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
SYMBOL is a customization option, and WIDGET is a widget for editing
that option.
DESCRIPTION is unused."
- (pop-to-buffer-same-window (custom-get-fresh-buffer (or name "*Customization*")))
- (custom-buffer-create-internal options description))
+ (pop-to-buffer-same-window
+ (custom-get-fresh-buffer (or name "*Customization*")))
+ (custom-buffer-create-internal options))
;;;###autoload
-(defun custom-buffer-create-other-window (options &optional name description)
+(defun custom-buffer-create-other-window (options &optional name _description)
"Create a buffer containing OPTIONS, and display it in another window.
The result includes selecting that window.
Optional NAME is the name of the buffer.
OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
SYMBOL is a customization option, and WIDGET is a widget for editing
-that option."
+that option.
+DESCRIPTION is unused."
(unless name (setq name "*Customization*"))
(switch-to-buffer-other-window (custom-get-fresh-buffer name))
- (custom-buffer-create-internal options description))
+ (custom-buffer-create-internal options))
(defcustom custom-reset-button-menu t
"If non-nil, only show a single reset button in customize buffers.
@@ -1623,7 +1617,9 @@ Otherwise use brackets."
;; Insert verbose help at the top of the custom buffer.
(when custom-buffer-verbose-help
(unless init-file
- (widget-insert "Custom settings cannot be saved; maybe you started Emacs with `-q'.\n"))
+ (widget-insert
+ (format-message
+ "Custom settings cannot be saved; maybe you started Emacs with `-q'.\n")))
(widget-insert "For help using this buffer, see ")
(widget-create 'custom-manual
:tag "Easy Customization"
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 001d638ca1..2b79bbbfda 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -312,6 +312,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
(const :tag "Always" t)
(repeat (symbol :tag "Parameter")))
"25.1")
+ (tooltip-reuse-hidden-frame tooltip boolean "25.2")
;; fringe.c
(overflow-newline-into-fringe fringe boolean)
;; image.c
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 528820876e..6c7983a177 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -277,12 +277,12 @@ This function is semi-obsolete. Use `get-char-code-property'."
'general-category (intern val))
val)))
(list "Combining class"
- (let ((val (nth 1 fields)))
+ (let ((val (nth 2 fields)))
(or (char-code-property-description
'canonical-combining-class (intern val))
val)))
(list "Bidi category"
- (let ((val (nth 1 fields)))
+ (let ((val (nth 3 fields)))
(or (char-code-property-description
'bidi-class (intern val))
val)))
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 1f460b7a3e..df4ff551c2 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -1402,7 +1402,7 @@ after that many seconds of idle time."
(or coding-system-for-read
(cdr (assq 'buffer-file-coding-system
desktop-buffer-locals))))
- (buf (find-file-noselect buffer-filename)))
+ (buf (find-file-noselect buffer-filename :nowarn)))
(condition-case nil
(switch-to-buffer buf)
(error (pop-to-buffer buf)))
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index b9111a8d5b..4bdded35fe 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -54,19 +54,23 @@ into this list; they also should call `dired-log' to log the errors.")
;;;###autoload
(defun dired-diff (file &optional switches)
- "Compare file at point with file FILE using `diff'.
-If called interactively, prompt for FILE. If the file at point
-has a backup file, use that as the default. If the file at point
-is a backup file, use its original. If the mark is active
-in Transient Mark mode, use the file at the mark as the default.
-\(That's the mark set by \\[set-mark-command], not by Dired's
-\\[dired-mark] command.)
-
-FILE is the first file given to `diff'. The file at point
-is the second file given to `diff'.
+ "Compare file at point with FILE using `diff'.
+If called interactively, prompt for FILE.
+If the mark is active in Transient Mark mode, use the file at the mark
+as the default for FILE. (That's the mark set by \\[set-mark-command],
+not by Dired's \\[dired-mark] command.)
+If the file at point has a backup file, use that as the default FILE.
+If the file at point is a backup file, use its original, if that exists
+and can be found. Note that customizations of `backup-directory-alist'
+and `make-backup-file-name-function' change where this function searches
+for the backup file, and affect its ability to find the original of a
+backup file.
+
+FILE is the first argument given to the `diff' function. The file at
+point is the second argument given to `diff'.
With prefix arg, prompt for second argument SWITCHES, which is
-the string of command switches for the third argument of `diff'."
+the string of command switches used as the third argument of `diff'."
(interactive
(let* ((current (dired-get-filename t))
;; Get the latest existing backup file or its original.
@@ -77,8 +81,20 @@ the string of command switches for the third argument of `diff'."
(file-at-mark (if (and transient-mark-mode mark-active)
(save-excursion (goto-char (mark t))
(dired-get-filename t t))))
+ (separate-dir (and oldf
+ (not (equal (file-name-directory oldf)
+ (dired-current-directory)))))
(default-file (or file-at-mark
- (and oldf (file-name-nondirectory oldf))))
+ ;; If the file with which to compare
+ ;; doesn't exist, or we cannot intuit it,
+ ;; we forget that name and don't show it
+ ;; as the default, as an indication to the
+ ;; user that she should type the file
+ ;; name.
+ (and (if (and oldf (file-readable-p oldf)) oldf)
+ (if separate-dir
+ oldf
+ (file-name-nondirectory oldf)))))
;; Use it as default if it's not the same as the current file,
;; and the target dir is current or there is a default file.
(default (if (and (not (equal default-file current))
@@ -87,7 +103,9 @@ the string of command switches for the third argument of `diff'."
default-file))
default-file))
(target-dir (if default
- (dired-current-directory)
+ (if separate-dir
+ (file-name-directory default)
+ (dired-current-directory))
(dired-dwim-target-directory)))
(defaults (dired-dwim-target-defaults (list current) target-dir)))
(list
@@ -279,6 +297,14 @@ List has a form of (file-name full-file-name (attribute-list))."
((eq op-symbol 'chgrp)
(system-groups)))))
(operation (concat program " " new-attribute))
+ ;; When file-name-coding-system is set to something different
+ ;; from locale-coding-system, leaving the encoding
+ ;; determination to call-process will do the wrong thing,
+ ;; because the arguments in this case are file names, not
+ ;; just some arbitrary text. (This must be bound last, to
+ ;; avoid adverse effects on any of the preceding forms.)
+ (coding-system-for-write (or file-name-coding-system
+ default-file-name-coding-system))
failures)
(setq failures
(dired-bunch-files 10000
@@ -729,26 +755,52 @@ can be produced by `dired-get-marked-files', for example."
(command (if sequentially
(substring command 0 (match-beginning 0))
command))
+ (parallel-in-background
+ (and in-background (not sequentially) (not (eq system-type 'ms-dos))))
+ (w32-shell (and (fboundp 'w32-shell-dos-semantics)
+ (w32-shell-dos-semantics)))
+ ;; The way to run a command in background in Windows shells
+ ;; is to use the START command. The /B switch means not to
+ ;; create a new window for the command.
+ (cmd-prefix (if w32-shell "start /b " ""))
+ ;; Windows shells don't support chaining with ";", they use
+ ;; "&" instead.
+ (cmd-sep (if (and (not w32-shell) (not parallel-in-background))
+ ";"
+ "&"))
(stuff-it
(if (or (string-match-p dired-star-subst-regexp command)
(string-match-p dired-quark-subst-regexp command))
(lambda (x)
- (let ((retval command))
+ (let ((retval (concat cmd-prefix command)))
(while (string-match
"\\(^\\|[ \t]\\)\\([*?]\\)\\([ \t]\\|$\\)" retval)
(setq retval (replace-match x t t retval 2)))
retval))
- (lambda (x) (concat command dired-mark-separator x)))))
+ (lambda (x) (concat cmd-prefix command dired-mark-separator x)))))
(concat
- (if on-each
- (mapconcat stuff-it (mapcar 'shell-quote-argument file-list)
- (if (and in-background (not sequentially)) "&" ";"))
- (let ((files (mapconcat 'shell-quote-argument
- file-list dired-mark-separator)))
- (if (> (length file-list) 1)
- (setq files (concat dired-mark-prefix files dired-mark-postfix)))
- (funcall stuff-it files)))
- (if in-background "&" ""))))
+ (cond (on-each
+ (format "%s%s"
+ (mapconcat stuff-it (mapcar 'shell-quote-argument file-list)
+ cmd-sep)
+ ;; POSIX shells running a list of commands in the background
+ ;; (LIST = cmd_1 & [cmd_2 & ... cmd_i & ... cmd_N &])
+ ;; return once cmd_N ends, i.e., the shell does not
+ ;; wait for cmd_i to finish before executing cmd_i+1.
+ ;; That means, running (shell-command LIST) may not show
+ ;; the output of all the commands (Bug#23206).
+ ;; Add 'wait' to force those POSIX shells to wait until
+ ;; all commands finish.
+ (or (and parallel-in-background (not w32-shell)
+ "&wait")
+ "")))
+ (t
+ (let ((files (mapconcat 'shell-quote-argument
+ file-list dired-mark-separator)))
+ (when (cdr file-list)
+ (setq files (concat dired-mark-prefix files dired-mark-postfix)))
+ (funcall stuff-it files))))
+ (or (and in-background "&") ""))))
;; This is an extra function so that it can be redefined by ange-ftp.
;;;###autoload
@@ -890,8 +942,8 @@ command with a prefix argument (the value does not matter)."
;; Solaris10 version of tar. Solaris10 becomes obsolete in 2021.
;; Same thing on AIX 7.1.
("\\.tar\\.gz\\'" "" "gzip -dc %i | tar -xv")
+ ("\\.tgz\\'" "" "gzip -dc %i | tar -xv")
("\\.gz\\'" "" "gunzip")
- ("\\.tgz\\'" ".tar" "gunzip")
("\\.Z\\'" "" "uncompress")
;; For .z, try gunzip. It might be an old gzip file,
;; or it might be from compact? pack? (which?) but gunzip handles both.
@@ -901,6 +953,7 @@ command with a prefix argument (the value does not matter)."
("\\.bz2\\'" "" "bunzip2")
("\\.xz\\'" "" "unxz")
("\\.zip\\'" "" "unzip -o -d %o %i")
+ ("\\.7z\\'" "" "7z x -aoa -o%o %i")
;; This item controls naming for compression.
("\\.tar\\'" ".tgz" nil)
;; This item controls the compression of directories
@@ -2735,7 +2788,7 @@ REGEXP should use constructs supported by your local `grep' command."
(lambda (s) (concat s "/"))
grep-find-ignored-directories)
grep-find-ignored-files))
- (xrefs (cl-mapcan
+ (xrefs (mapcan
(lambda (file)
(xref-collect-matches regexp "*" file
(and (file-directory-p file)
@@ -2785,7 +2838,7 @@ instead."
;; Local Variables:
;; byte-compile-dynamic: t
-;; generated-autoload-file: "dired.el"
+;; generated-autoload-file: "dired-loaddefs.el"
;; End:
;;; dired-aux.el ends here
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 088ca81ed8..be762e6e30 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -1666,7 +1666,7 @@ If `current-prefix-arg' is non-nil, uses name at point as guess."
;; Local Variables:
;; byte-compile-dynamic: t
-;; generated-autoload-file: "dired.el"
+;; generated-autoload-file: "dired-loaddefs.el"
;; End:
;;; dired-x.el ends here
diff --git a/lisp/dired.el b/lisp/dired.el
index b838e64984..7ead0876fc 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -34,6 +34,9 @@
;;; Code:
+;; When bootstrapping dired-loaddefs has not been generated.
+(require 'dired-loaddefs nil t)
+
(declare-function dired-buffer-more-recently-used-p
"dired-x" (buffer1 buffer2))
@@ -252,6 +255,18 @@ new Dired buffers."
:version "24.4"
:group 'dired)
+(defcustom dired-always-read-filesystem nil
+ "Non-nil means revert buffers visiting files before searching them.
+ By default, commands like `dired-mark-files-containing-regexp' will
+ search any buffers visiting the marked files without reverting them,
+ even if they were changed on disk. When this option is non-nil, such
+ buffers are always reverted in a temporary buffer before searching
+ them: the search is performed on the temporary buffer, the original
+ buffer visiting the file is not modified."
+ :type 'boolean
+ :version "25.2"
+ :group 'dired)
+
;; Internal variables
(defvar dired-marker-char ?* ; the answer is 42
@@ -300,7 +315,7 @@ The directory name must be absolute, but need not be fully expanded.")
(put 'dired-actual-switches 'safe-local-variable 'dired-safe-switches-p)
-(defvar dired-re-inode-size "[0-9 \t]*"
+(defvar dired-re-inode-size "[0-9 \t]*[.,0-9]*[BkKMGTPEZY]?[ \t]*"
"Regexp for optional initial inode and file size as made by `ls -i -s'.")
;; These regexps must be tested at beginning-of-line, but are also
@@ -1535,6 +1550,7 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
(define-key map "u" 'dired-unmark)
(define-key map "v" 'dired-view-file)
(define-key map "w" 'dired-copy-filename-as-kill)
+ (define-key map "W" 'browse-url-of-dired-file)
(define-key map "x" 'dired-do-flagged-delete)
(define-key map "y" 'dired-show-file-type)
(define-key map "+" 'dired-create-directory)
@@ -2451,10 +2467,11 @@ You can then feed the file name(s) to other commands with \\[yank]."
'no-dir (prefix-numeric-value arg))))
(dired-get-marked-files 'no-dir))
" "))))
- (if (eq last-command 'kill-region)
- (kill-append string nil)
- (kill-new string))
- (message "%s" string)))
+ (unless (string= string "")
+ (if (eq last-command 'kill-region)
+ (kill-append string nil)
+ (kill-new string))
+ (message "%s" string))))
;; Keeping Dired buffers in sync with the filesystem and with each other
@@ -3355,7 +3372,8 @@ object files--just `.o' will mark more than you might think."
A prefix argument means to unmark them instead.
`.' and `..' are never marked.
-Note that if a file is visited in an Emacs buffer, this command will
+Note that if a file is visited in an Emacs buffer, and
+`dired-always-read-filesystem' is nil, this command will
look in the buffer without revisiting the file, so the results might
be inconsistent with the file on disk if its contents has changed
since it was last visited."
@@ -3375,7 +3393,7 @@ since it was last visited."
(message "Checking %s" fn)
;; For now we do it inside emacs
;; Grep might be better if there are a lot of files
- (if prebuf
+ (if (and prebuf (not dired-always-read-filesystem))
(with-current-buffer prebuf
(save-excursion
(goto-char (point-min))
@@ -3916,583 +3934,6 @@ Ask means pop up a menu for the user to select one of copy, move or link."
(add-to-list 'desktop-buffer-mode-handlers
'(dired-mode . dired-restore-desktop-buffer))
-
-;;; Start of automatically extracted autoloads.
-
-;;;### (autoloads nil "dired-aux" "dired-aux.el" "8346506b9ef7167fd55b5eac7e6617a1")
-;;; Generated autoloads from dired-aux.el
-
-(autoload 'dired-diff "dired-aux" "\
-Compare file at point with file FILE using `diff'.
-If called interactively, prompt for FILE. If the file at point
-has a backup file, use that as the default. If the file at point
-is a backup file, use its original. If the mark is active
-in Transient Mark mode, use the file at the mark as the default.
-\(That's the mark set by \\[set-mark-command], not by Dired's
-\\[dired-mark] command.)
-
-FILE is the first file given to `diff'. The file at point
-is the second file given to `diff'.
-
-With prefix arg, prompt for second argument SWITCHES, which is
-the string of command switches for the third argument of `diff'.
-
-\(fn FILE &optional SWITCHES)" t nil)
-
-(autoload 'dired-backup-diff "dired-aux" "\
-Diff this file with its backup file or vice versa.
-Uses the latest backup, if there are several numerical backups.
-If this file is a backup, diff it with its original.
-The backup file is the first file given to `diff'.
-With prefix arg, prompt for argument SWITCHES which is options for `diff'.
-
-\(fn &optional SWITCHES)" t nil)
-
-(autoload 'dired-compare-directories "dired-aux" "\
-Mark files with different file attributes in two dired buffers.
-Compare file attributes of files in the current directory
-with file attributes in directory DIR2 using PREDICATE on pairs of files
-with the same name. Mark files for which PREDICATE returns non-nil.
-Mark files with different names if PREDICATE is nil (or interactively
-with empty input at the predicate prompt).
-
-PREDICATE is a Lisp expression that can refer to the following variables:
-
- size1, size2 - file size in bytes
- mtime1, mtime2 - last modification time in seconds, as a float
- fa1, fa2 - list of file attributes
- returned by function `file-attributes'
-
- where 1 refers to attribute of file in the current dired buffer
- and 2 to attribute of file in second dired buffer.
-
-Examples of PREDICATE:
-
- (> mtime1 mtime2) - mark newer files
- (not (= size1 size2)) - mark files with different sizes
- (not (string= (nth 8 fa1) (nth 8 fa2))) - mark files with different modes
- (not (and (= (nth 2 fa1) (nth 2 fa2)) - mark files with different UID
- (= (nth 3 fa1) (nth 3 fa2)))) and GID.
-
-\(fn DIR2 PREDICATE)" t nil)
-
-(autoload 'dired-do-chmod "dired-aux" "\
-Change the mode of the marked (or next ARG) files.
-Symbolic modes like `g+w' are allowed.
-Type M-n to pull the file attributes of the file at point
-into the minibuffer.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-chgrp "dired-aux" "\
-Change the group of the marked (or next ARG) files.
-Type M-n to pull the file attributes of the file at point
-into the minibuffer.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-chown "dired-aux" "\
-Change the owner of the marked (or next ARG) files.
-Type M-n to pull the file attributes of the file at point
-into the minibuffer.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-touch "dired-aux" "\
-Change the timestamp of the marked (or next ARG) files.
-This calls touch.
-Type M-n to pull the file attributes of the file at point
-into the minibuffer.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-print "dired-aux" "\
-Print the marked (or next ARG) files.
-Uses the shell command coming from variables `lpr-command' and
-`lpr-switches' as default.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-clean-directory "dired-aux" "\
-Flag numerical backups for deletion.
-Spares `dired-kept-versions' latest versions, and `kept-old-versions' oldest.
-Positive prefix arg KEEP overrides `dired-kept-versions';
-Negative prefix arg KEEP overrides `kept-old-versions' with KEEP made positive.
-
-To clear the flags on these files, you can use \\[dired-flag-backup-files]
-with a prefix argument.
-
-\(fn KEEP)" t nil)
-
-(autoload 'dired-do-async-shell-command "dired-aux" "\
-Run a shell command COMMAND on the marked files asynchronously.
-
-Like `dired-do-shell-command', but adds `&' at the end of COMMAND
-to execute it asynchronously.
-
-When operating on multiple files, asynchronous commands
-are executed in the background on each file in parallel.
-In shell syntax this means separating the individual commands
-with `&'. However, when COMMAND ends in `;' or `;&' then commands
-are executed in the background on each file sequentially waiting
-for each command to terminate before running the next command.
-In shell syntax this means separating the individual commands with `;'.
-
-The output appears in the buffer `*Async Shell Command*'.
-
-\(fn COMMAND &optional ARG FILE-LIST)" t nil)
-
-(autoload 'dired-do-shell-command "dired-aux" "\
-Run a shell command COMMAND on the marked files.
-If no files are marked or a numeric prefix arg is given,
-the next ARG files are used. Just \\[universal-argument] means the current file.
-The prompt mentions the file(s) or the marker, as appropriate.
-
-If there is a `*' in COMMAND, surrounded by whitespace, this runs
-COMMAND just once with the entire file list substituted there.
-
-If there is no `*', but there is a `?' in COMMAND, surrounded by
-whitespace, this runs COMMAND on each file individually with the
-file name substituted for `?'.
-
-Otherwise, this runs COMMAND on each file individually with the
-file name added at the end of COMMAND (separated by a space).
-
-`*' and `?' when not surrounded by whitespace have no special
-significance for `dired-do-shell-command', and are passed through
-normally to the shell, but you must confirm first.
-
-If you want to use `*' as a shell wildcard with whitespace around
-it, write `*\"\"' in place of just `*'. This is equivalent to just
-`*' in the shell, but avoids Dired's special handling.
-
-If COMMAND ends in `&', `;', or `;&', it is executed in the
-background asynchronously, and the output appears in the buffer
-`*Async Shell Command*'. When operating on multiple files and COMMAND
-ends in `&', the shell command is executed on each file in parallel.
-However, when COMMAND ends in `;' or `;&' then commands are executed
-in the background on each file sequentially waiting for each command
-to terminate before running the next command. You can also use
-`dired-do-async-shell-command' that automatically adds `&'.
-
-Otherwise, COMMAND is executed synchronously, and the output
-appears in the buffer `*Shell Command Output*'.
-
-This feature does not try to redisplay Dired buffers afterward, as
-there's no telling what files COMMAND may have changed.
-Type \\[dired-do-redisplay] to redisplay the marked files.
-
-When COMMAND runs, its working directory is the top-level directory
-of the Dired buffer, so output files usually are created there
-instead of in a subdir.
-
-In a noninteractive call (from Lisp code), you must specify
-the list of file names explicitly with the FILE-LIST argument, which
-can be produced by `dired-get-marked-files', for example.
-
-\(fn COMMAND &optional ARG FILE-LIST)" t nil)
-
-(autoload 'dired-run-shell-command "dired-aux" "\
-
-
-\(fn COMMAND)" nil nil)
-
-(autoload 'dired-do-kill-lines "dired-aux" "\
-Kill all marked lines (not the files).
-With a prefix argument, kill that many lines starting with the current line.
-\(A negative argument kills backward.)
-If you use this command with a prefix argument to kill the line
-for a file that is a directory, which you have inserted in the
-Dired buffer as a subdirectory, then it deletes that subdirectory
-from the buffer as well.
-To kill an entire subdirectory (without killing its line in the
-parent directory), go to its directory header line and use this
-command with a prefix argument (the value does not matter).
-
-\(fn &optional ARG FMT)" t nil)
-
-(autoload 'dired-do-compress-to "dired-aux" "\
-Compress selected files and directories to an archive.
-You are prompted for the archive name.
-The archiving command is chosen based on the archive name extension and
-`dired-compress-files-alist'.
-
-\(fn)" t nil)
-
-(autoload 'dired-compress-file "dired-aux" "\
-Compress or uncompress FILE.
-Return the name of the compressed or uncompressed file.
-Return nil if no change in files.
-
-\(fn FILE)" nil nil)
-
-(autoload 'dired-query "dired-aux" "\
-Format PROMPT with ARGS, query user, and store the result in SYM.
-The return value is either nil or t.
-
-The user may type y or SPC to accept once; n or DEL to skip once;
-! to accept this and subsequent queries; or q or ESC to decline
-this and subsequent queries.
-
-If SYM is already bound to a non-nil value, this function may
-return automatically without querying the user. If SYM is !,
-return t; if SYM is q or ESC, return nil.
-
-\(fn SYM PROMPT &rest ARGS)" nil nil)
-
-(autoload 'dired-do-compress "dired-aux" "\
-Compress or uncompress marked (or next ARG) files.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-byte-compile "dired-aux" "\
-Byte compile marked (or next ARG) Emacs Lisp files.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-load "dired-aux" "\
-Load the marked (or next ARG) Emacs Lisp files.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-redisplay "dired-aux" "\
-Redisplay all marked (or next ARG) files.
-If on a subdir line, redisplay that subdirectory. In that case,
-a prefix arg lets you edit the `ls' switches used for the new listing.
-
-Dired remembers switches specified with a prefix arg, so that reverting
-the buffer will not reset them. However, using `dired-undo' to re-insert
-or delete subdirectories can bypass this machinery. Hence, you sometimes
-may have to reset some subdirectory switches after a `dired-undo'.
-You can reset all subdirectory switches to the default using
-\\<dired-mode-map>\\[dired-reset-subdir-switches].
-See Info node `(emacs)Subdir switches' for more details.
-
-\(fn &optional ARG TEST-FOR-SUBDIR)" t nil)
-
-(autoload 'dired-add-file "dired-aux" "\
-
-
-\(fn FILENAME &optional MARKER-CHAR)" nil nil)
-
-(autoload 'dired-remove-file "dired-aux" "\
-
-
-\(fn FILE)" nil nil)
-
-(autoload 'dired-relist-file "dired-aux" "\
-Create or update the line for FILE in all Dired buffers it would belong in.
-
-\(fn FILE)" nil nil)
-
-(autoload 'dired-copy-file "dired-aux" "\
-
-
-\(fn FROM TO OK-FLAG)" nil nil)
-
-(autoload 'dired-rename-file "dired-aux" "\
-
-
-\(fn FILE NEWNAME OK-IF-ALREADY-EXISTS)" nil nil)
-
-(autoload 'dired-create-directory "dired-aux" "\
-Create a directory called DIRECTORY.
-If DIRECTORY already exists, signal an error.
-
-\(fn DIRECTORY)" t nil)
-
-(autoload 'dired-do-copy "dired-aux" "\
-Copy all marked (or next ARG) files, or copy the current file.
-When operating on just the current file, prompt for the new name.
-
-When operating on multiple or marked files, prompt for a target
-directory, and make the new copies in that directory, with the
-same names as the original files. The initial suggestion for the
-target directory is the Dired buffer's current directory (or, if
-`dired-dwim-target' is non-nil, the current directory of a
-neighboring Dired window).
-
-If `dired-copy-preserve-time' is non-nil, this command preserves
-the modification time of each old file in the copy, similar to
-the \"-p\" option for the \"cp\" shell command.
-
-This command copies symbolic links by creating new ones, similar
-to the \"-d\" option for the \"cp\" shell command.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-symlink "dired-aux" "\
-Make symbolic links to current file or all marked (or next ARG) files.
-When operating on just the current file, you specify the new name.
-When operating on multiple or marked files, you specify a directory
-and new symbolic links are made in that directory
-with the same names that the files currently have. The default
-suggested for the target directory depends on the value of
-`dired-dwim-target', which see.
-
-For relative symlinks, use \\[dired-do-relsymlink].
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-hardlink "dired-aux" "\
-Add names (hard links) current file or all marked (or next ARG) files.
-When operating on just the current file, you specify the new name.
-When operating on multiple or marked files, you specify a directory
-and new hard links are made in that directory
-with the same names that the files currently have. The default
-suggested for the target directory depends on the value of
-`dired-dwim-target', which see.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-rename "dired-aux" "\
-Rename current file or all marked (or next ARG) files.
-When renaming just the current file, you specify the new name.
-When renaming multiple or marked files, you specify a directory.
-This command also renames any buffers that are visiting the files.
-The default suggested for the target directory depends on the value
-of `dired-dwim-target', which see.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-do-rename-regexp "dired-aux" "\
-Rename selected files whose names match REGEXP to NEWNAME.
-
-With non-zero prefix argument ARG, the command operates on the next ARG
-files. Otherwise, it operates on all the marked files, or the current
-file if none are marked.
-
-As each match is found, the user must type a character saying
- what to do with it. For directions, type \\[help-command] at that time.
-NEWNAME may contain \\=\\<n> or \\& as in `query-replace-regexp'.
-REGEXP defaults to the last regexp used.
-
-With a zero prefix arg, renaming by regexp affects the absolute file name.
-Normally, only the non-directory part of the file name is used and changed.
-
-\(fn REGEXP NEWNAME &optional ARG WHOLE-NAME)" t nil)
-
-(autoload 'dired-do-copy-regexp "dired-aux" "\
-Copy selected files whose names match REGEXP to NEWNAME.
-See function `dired-do-rename-regexp' for more info.
-
-\(fn REGEXP NEWNAME &optional ARG WHOLE-NAME)" t nil)
-
-(autoload 'dired-do-hardlink-regexp "dired-aux" "\
-Hardlink selected files whose names match REGEXP to NEWNAME.
-See function `dired-do-rename-regexp' for more info.
-
-\(fn REGEXP NEWNAME &optional ARG WHOLE-NAME)" t nil)
-
-(autoload 'dired-do-symlink-regexp "dired-aux" "\
-Symlink selected files whose names match REGEXP to NEWNAME.
-See function `dired-do-rename-regexp' for more info.
-
-\(fn REGEXP NEWNAME &optional ARG WHOLE-NAME)" t nil)
-
-(autoload 'dired-upcase "dired-aux" "\
-Rename all marked (or next ARG) files to upper case.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-downcase "dired-aux" "\
-Rename all marked (or next ARG) files to lower case.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'dired-maybe-insert-subdir "dired-aux" "\
-Insert this subdirectory into the same dired buffer.
-If it is already present, just move to it (type \\[dired-do-redisplay] to refresh),
- else inserts it at its natural place (as `ls -lR' would have done).
-With a prefix arg, you may edit the ls switches used for this listing.
- You can add `R' to the switches to expand the whole tree starting at
- this subdirectory.
-This function takes some pains to conform to `ls -lR' output.
-
-Dired remembers switches specified with a prefix arg, so that reverting
-the buffer will not reset them. However, using `dired-undo' to re-insert
-or delete subdirectories can bypass this machinery. Hence, you sometimes
-may have to reset some subdirectory switches after a `dired-undo'.
-You can reset all subdirectory switches to the default using
-\\<dired-mode-map>\\[dired-reset-subdir-switches].
-See Info node `(emacs)Subdir switches' for more details.
-
-\(fn DIRNAME &optional SWITCHES NO-ERROR-IF-NOT-DIR-P)" t nil)
-
-(autoload 'dired-insert-subdir "dired-aux" "\
-Insert this subdirectory into the same Dired buffer.
-If it is already present, overwrite the previous entry;
- otherwise, insert it at its natural place (as `ls -lR' would
- have done).
-With a prefix arg, you may edit the `ls' switches used for this listing.
- You can add `R' to the switches to expand the whole tree starting at
- this subdirectory.
-This function takes some pains to conform to `ls -lR' output.
-
-\(fn DIRNAME &optional SWITCHES NO-ERROR-IF-NOT-DIR-P)" t nil)
-
-(autoload 'dired-prev-subdir "dired-aux" "\
-Go to previous subdirectory, regardless of level.
-When called interactively and not on a subdir line, go to this subdir's line.
-
-\(fn ARG &optional NO-ERROR-IF-NOT-FOUND NO-SKIP)" t nil)
-
-(autoload 'dired-goto-subdir "dired-aux" "\
-Go to end of header line of DIR in this dired buffer.
-Return value of point on success, otherwise return nil.
-The next char is either \\n, or \\r if DIR is hidden.
-
-\(fn DIR)" t nil)
-
-(autoload 'dired-mark-subdir-files "dired-aux" "\
-Mark all files except `.' and `..' in current subdirectory.
-If the Dired buffer shows multiple directories, this command
-marks the files listed in the subdirectory that point is in.
-
-\(fn)" t nil)
-
-(autoload 'dired-kill-subdir "dired-aux" "\
-Remove all lines of current subdirectory.
-Lower levels are unaffected.
-
-\(fn &optional REMEMBER-MARKS)" t nil)
-
-(autoload 'dired-tree-up "dired-aux" "\
-Go up ARG levels in the dired tree.
-
-\(fn ARG)" t nil)
-
-(autoload 'dired-tree-down "dired-aux" "\
-Go down in the dired tree.
-
-\(fn)" t nil)
-
-(autoload 'dired-hide-subdir "dired-aux" "\
-Hide or unhide the current subdirectory and move to next directory.
-Optional prefix arg is a repeat factor.
-Use \\[dired-hide-all] to (un)hide all directories.
-
-\(fn ARG)" t nil)
-
-(autoload 'dired-hide-all "dired-aux" "\
-Hide all subdirectories, leaving only their header lines.
-If there is already something hidden, make everything visible again.
-Use \\[dired-hide-subdir] to (un)hide a particular subdirectory.
-
-\(fn &optional IGNORED)" t nil)
-
-(autoload 'dired-isearch-filenames-setup "dired-aux" "\
-Set up isearch to search in Dired file names.
-Intended to be added to `isearch-mode-hook'.
-
-\(fn)" nil nil)
-
-(autoload 'dired-isearch-filenames "dired-aux" "\
-Search for a string using Isearch only in file names in the Dired buffer.
-
-\(fn)" t nil)
-
-(autoload 'dired-isearch-filenames-regexp "dired-aux" "\
-Search for a regexp using Isearch only in file names in the Dired buffer.
-
-\(fn)" t nil)
-
-(autoload 'dired-do-isearch "dired-aux" "\
-Search for a string through all marked files using Isearch.
-
-\(fn)" t nil)
-
-(autoload 'dired-do-isearch-regexp "dired-aux" "\
-Search for a regexp through all marked files using Isearch.
-
-\(fn)" t nil)
-
-(autoload 'dired-do-search "dired-aux" "\
-Search through all marked files for a match for REGEXP.
-Stops when a match is found.
-To continue searching for next match, use command \\[tags-loop-continue].
-
-\(fn REGEXP)" t nil)
-
-(autoload 'dired-do-query-replace-regexp "dired-aux" "\
-Do `query-replace-regexp' of FROM with TO, on all marked files.
-Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
-If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
-with the command \\[tags-loop-continue].
-
-\(fn FROM TO &optional DELIMITED)" t nil)
-
-(autoload 'dired-do-find-regexp "dired-aux" "\
-Find all matches for REGEXP in all marked files.
-For any marked directory, all of its files are searched recursively.
-However, files matching `grep-find-ignored-files' and subdirectories
-matching `grep-find-ignored-directories' are skipped in the marked
-directories.
-
-REGEXP should use constructs supported by your local `grep' command.
-
-\(fn REGEXP)" t nil)
-
-(autoload 'dired-do-find-regexp-and-replace "dired-aux" "\
-Replace matches of FROM with TO, in all marked files.
-For any marked directory, matches in all of its files are replaced,
-recursively. However, files matching `grep-find-ignored-files'
-and subdirectories matching `grep-find-ignored-directories' are skipped
-in the marked directories.
-
-REGEXP should use constructs supported by your local `grep' command.
-
-\(fn FROM TO)" t nil)
-
-(autoload 'dired-show-file-type "dired-aux" "\
-Print the type of FILE, according to the `file' command.
-If you give a prefix to this command, and FILE is a symbolic
-link, then the type of the file linked to by FILE is printed
-instead.
-
-\(fn FILE &optional DEREF-SYMLINKS)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "dired-x" "dired-x.el" "f00ad5ec7383d017263855ad8add60a3")
-;;; Generated autoloads from dired-x.el
-
-(autoload 'dired-jump "dired-x" "\
-Jump to Dired buffer corresponding to current buffer.
-If in a file, Dired the current directory and move to file's line.
-If in Dired already, pop up a level and goto old directory's line.
-In case the proper Dired file line cannot be found, refresh the dired
-buffer and try again.
-When OTHER-WINDOW is non-nil, jump to Dired buffer in other window.
-Interactively with prefix argument, read FILE-NAME and
-move to its line in dired.
-
-\(fn &optional OTHER-WINDOW FILE-NAME)" t nil)
-
-(autoload 'dired-jump-other-window "dired-x" "\
-Like \\[dired-jump] (`dired-jump') but in other window.
-
-\(fn &optional FILE-NAME)" t nil)
-
-(autoload 'dired-do-relsymlink "dired-x" "\
-Relative symlink all marked (or next ARG) files into a directory.
-Otherwise make a relative symbolic link to the current file.
-This creates relative symbolic links like
-
- foo -> ../bar/foo
-
-not absolute ones like
-
- foo -> /ugly/file/name/that/may/change/any/day/bar/foo
-
-For absolute symlinks, use \\[dired-do-symlink].
-
-\(fn &optional ARG)" t nil)
-
-;;;***
-
-;;; End of automatically extracted autoloads.
-
(provide 'dired)
(run-hooks 'dired-load-hook) ; for your customizations
diff --git a/lisp/dom.el b/lisp/dom.el
index 03fe75975a..cf3a02a51d 100644
--- a/lisp/dom.el
+++ b/lisp/dom.el
@@ -139,6 +139,16 @@ ATTRIBUTE would typically be `class', `id' or the like."
(cons dom matches)
matches)))
+(defun dom-remove-node (dom node)
+ "Remove NODE from DOM."
+ ;; If we're removing the top level node, just return nil.
+ (dolist (child (dom-children dom))
+ (cond
+ ((eq node child)
+ (delq node dom))
+ ((not (stringp child))
+ (dom-remove-node child node)))))
+
(defun dom-parent (dom node)
"Return the parent of NODE in DOM."
(if (memq node (dom-children dom))
@@ -151,6 +161,7 @@ ATTRIBUTE would typically be `class', `id' or the like."
result)))
(defun dom-previous-sibling (dom node)
+ "Return the previous sibling of NODE in DOM."
(when-let (parent (dom-parent dom node))
(let ((siblings (dom-children parent))
(previous nil))
diff --git a/lisp/gnus/ecomplete.el b/lisp/ecomplete.el
index 084895c32a..b9f4b1ab84 100644
--- a/lisp/gnus/ecomplete.el
+++ b/lisp/ecomplete.el
@@ -27,17 +27,12 @@
(eval-when-compile
(require 'cl))
-(eval-when-compile
- (when (featurep 'xemacs)
- ;; The `kbd' macro requires that the `read-kbd-macro' macro is available.
- (require 'edmacro)))
-
(defgroup ecomplete nil
"Electric completion of email addresses and the like."
:group 'mail)
(defcustom ecomplete-database-file "~/.ecompleterc"
- "*The name of the file to store the ecomplete data."
+ "The name of the file to store the ecomplete data."
:group 'ecomplete
:type 'file)
@@ -60,11 +55,7 @@
(defun ecomplete-add-item (type key text)
(let ((elems (assq type ecomplete-database))
- (now (string-to-number
- (format "%.0f" (if (featurep 'emacs)
- (float-time)
- (require 'gnus-util)
- (gnus-float-time)))))
+ (now (string-to-number (format "%.0f" (float-time))))
entry)
(unless elems
(push (setq elems (list type)) ecomplete-database))
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el
index ea01253d1e..c0da59c81c 100644
--- a/lisp/emacs-lisp/advice.el
+++ b/lisp/emacs-lisp/advice.el
@@ -1832,7 +1832,7 @@ Redefining advices affect the construction of an advised definition."
;; @@ Interactive input functions:
;; ===============================
-(declare-function 'function-called-at-point "help")
+(declare-function function-called-at-point "help")
(defun ad-read-advised-function (&optional prompt predicate default)
"Read name of advised function with completion from the minibuffer.
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index eb6b746bd8..aa58f7b27f 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -87,6 +87,29 @@ that text will be copied verbatim to `generated-autoload-file'.")
(defconst generate-autoload-section-continuation ";;;;;; "
"String to add on each continuation of the section header form.")
+;; In some ways it would be nicer to use a value that is recognizably
+;; not a time-value, eg t, but that can cause issues if an older Emacs
+;; that does not expect non-time-values loads the file.
+(defconst autoload--non-timestamp '(0 0 0 0)
+ "Value to insert when `autoload-timestamps' is nil.")
+
+(defvar autoload-timestamps nil ; experimental, see bug#22213
+ "Non-nil means insert a timestamp for each input file into the output.
+We use these in incremental updates of the output file to decide
+if we need to rescan an input file. If you set this to nil,
+then we use the timestamp of the output file instead. As a result:
+ - for fixed inputs, the output will be the same every time
+ - incremental updates of the output file might not be correct if:
+ i) the timestamp of the output file cannot be trusted (at least
+ relative to that of the input files)
+ ii) any of the input files can be modified during the time it takes
+ to create the output
+ iii) only a subset of the input files are scanned
+ These issues are unlikely to happen in practice, and would arguably
+ represent bugs in the build system. Item iii) will happen if you
+ use a command like `update-file-autoloads', though, since it only
+ checks a single input file.")
+
(defvar autoload-modified-buffers) ;Dynamically scoped var.
(defun make-autoload (form file &optional expansion)
@@ -160,10 +183,12 @@ expression, in which case we want to handle forms differently."
(args (pcase car
((or `defun `defmacro
`defun* `defmacro* `cl-defun `cl-defmacro
- `define-overloadable-function) (nth 2 form))
+ `define-overloadable-function)
+ (nth 2 form))
(`define-skeleton '(&optional str arg))
((or `define-generic-mode `define-derived-mode
- `define-compilation-mode) nil)
+ `define-compilation-mode)
+ nil)
(_ t)))
(body (nthcdr (or (function-get car 'doc-string-elt) 3) form))
(doc (if (stringp (car body)) (pop body))))
@@ -179,7 +204,8 @@ expression, in which case we want to handle forms differently."
define-global-minor-mode
define-globalized-minor-mode
easy-mmode-define-minor-mode
- define-minor-mode)) t)
+ define-minor-mode))
+ t)
(eq (car-safe (car body)) 'interactive))
,(if macrop ''macro nil))))
@@ -234,9 +260,22 @@ If a buffer is visiting the desired autoload file, return it."
(enable-local-eval nil))
;; We used to use `raw-text' to read this file, but this causes
;; problems when the file contains non-ASCII characters.
- (let ((delay-mode-hooks t))
- (find-file-noselect
- (autoload-ensure-default-file (autoload-generated-file))))))
+ (let* ((delay-mode-hooks t)
+ (file (autoload-generated-file))
+ (file-missing (not (file-exists-p file))))
+ (when file-missing
+ (autoload-ensure-default-file file))
+ (with-current-buffer
+ (find-file-noselect
+ (autoload-ensure-file-writeable
+ file))
+ ;; block backups when the file has just been created, since
+ ;; the backups will just be the auto-generated headers.
+ ;; bug#23203
+ (when file-missing
+ (setq buffer-backed-up t)
+ (save-buffer))
+ (current-buffer)))))
(defun autoload-generated-file ()
(expand-file-name generated-autoload-file
@@ -277,7 +316,7 @@ The variable `autoload-print-form-outbuf' specifies the buffer to
put the output in."
(cond
;; If the form is a sequence, recurse.
- ((eq (car form) 'progn) (mapcar 'autoload-print-form (cdr form)))
+ ((eq (car form) 'progn) (mapcar #'autoload-print-form (cdr form)))
;; Symbols at the toplevel are meaningless.
((symbolp form) nil)
(t
@@ -357,25 +396,36 @@ not be relied upon."
;;;###autoload
(put 'autoload-ensure-writable 'risky-local-variable t)
+(defun autoload-ensure-file-writeable (file)
+ ;; Probably pointless, but replaces the old AUTOGEN_VCS in lisp/Makefile,
+ ;; which was designed to handle CVSREAD=1 and equivalent.
+ (and autoload-ensure-writable
+ (let ((modes (file-modes file)))
+ (if (zerop (logand modes #o0200))
+ ;; Ignore any errors here, and let subsequent attempts
+ ;; to write the file raise any real error.
+ (ignore-errors (set-file-modes file (logior modes #o0200))))))
+ file)
+
(defun autoload-ensure-default-file (file)
"Make sure that the autoload file FILE exists, creating it if needed.
If the file already exists and `autoload-ensure-writable' is non-nil,
make it writable."
- (if (file-exists-p file)
- ;; Probably pointless, but replaces the old AUTOGEN_VCS in lisp/Makefile,
- ;; which was designed to handle CVSREAD=1 and equivalent.
- (and autoload-ensure-writable
- (let ((modes (file-modes file)))
- (if (zerop (logand modes #o0200))
- ;; Ignore any errors here, and let subsequent attempts
- ;; to write the file raise any real error.
- (ignore-errors (set-file-modes file (logior modes #o0200))))))
- (write-region (autoload-rubric file) nil file))
- file)
+ (write-region (autoload-rubric file) nil file))
(defun autoload-insert-section-header (outbuf autoloads load-name file time)
"Insert the section-header line,
which lists the file name and which functions are in it, etc."
+ ;; (cl-assert ;Make sure we don't insert it in the middle of another section.
+ ;; (save-excursion
+ ;; (or (not (re-search-backward
+ ;; (concat "\\("
+ ;; (regexp-quote generate-autoload-section-header)
+ ;; "\\)\\|\\("
+ ;; (regexp-quote generate-autoload-section-trailer)
+ ;; "\\)")
+ ;; nil t))
+ ;; (match-end 2))))
(insert generate-autoload-section-header)
(prin1 `(autoloads ,autoloads ,load-name ,file ,time)
outbuf)
@@ -434,7 +484,7 @@ which lists the file name and which functions are in it, etc."
;; without checking its content. This makes it generate wrong load
;; names for cases like lisp/term which is not added to load-path.
(setq dir (expand-file-name (pop names) dir)))
- (t (setq name (mapconcat 'identity names "/")))))
+ (t (setq name (mapconcat #'identity names "/")))))
(if (string-match "\\.elc?\\(\\.\\|\\'\\)" name)
(substring name 0 (match-beginning 0))
name)))
@@ -450,8 +500,116 @@ Return non-nil in the case where no autoloads were added at point."
(let ((generated-autoload-file buffer-file-name))
(autoload-generate-file-autoloads file (current-buffer))))
-(defvar print-readably)
-
+(defvar autoload-compute-prefixes t
+ "If non-nil, autoload will add code to register the prefixes used in a file.
+Standard prefixes won't be registered anyway. I.e. if a file \"foo.el\" defines
+variables or functions that use \"foo-\" as prefix, that will not be registered.
+But all other prefixes will be included.")
+
+(defconst autoload-def-prefixes-max-entries 5
+ "Target length of the list of definition prefixes per file.
+If set too small, the prefixes will be too generic (i.e. they'll use little
+memory, we'll end up looking in too many files when we need a particular
+prefix), and if set too large, they will be too specific (i.e. they will
+cost more memory use).")
+
+(defconst autoload-def-prefixes-max-length 12
+ "Target size of definition prefixes.
+Don't try to split prefixes that are already longer than that.")
+
+(require 'radix-tree)
+
+(defun autoload--make-defs-autoload (defs file)
+
+ ;; Remove the defs that obey the rule that file foo.el (or
+ ;; foo-mode.el) uses "foo-" as prefix.
+ ;; FIXME: help--symbol-completion-table still doesn't know how to use
+ ;; the rule that file foo.el (or foo-mode.el) uses "foo-" as prefix.
+ ;;(let ((prefix
+ ;; (concat (substring file 0 (string-match "-mode\\'" file)) "-")))
+ ;; (dolist (def (prog1 defs (setq defs nil)))
+ ;; (unless (string-prefix-p prefix def)
+ ;; (push def defs))))
+
+ ;; Then compute a small set of prefixes that cover all the
+ ;; remaining definitions.
+ (let* ((tree (let ((tree radix-tree-empty))
+ (dolist (def defs)
+ (setq tree (radix-tree-insert tree def t)))
+ tree))
+ (prefixes nil))
+ ;; Get the root prefixes, that we should include in any case.
+ (radix-tree-iter-subtrees
+ tree (lambda (prefix subtree)
+ (push (cons prefix subtree) prefixes)))
+ ;; In some cases, the root prefixes are too short, e.g. if you define
+ ;; "cc-helper" and "c-mode", you'll get "c" in the root prefixes.
+ (dolist (pair (prog1 prefixes (setq prefixes nil)))
+ (let ((s (car pair)))
+ (if (or (> (length s) 2) ;Long enough!
+ (string-match ".[[:punct:]]\\'" s) ;A real (tho short) prefix?
+ (radix-tree-lookup (cdr pair) "")) ;Nothing to expand!
+ (push pair prefixes) ;Keep it as is.
+ (radix-tree-iter-subtrees
+ (cdr pair) (lambda (prefix subtree)
+ (push (cons (concat s prefix) subtree) prefixes))))))
+ ;; FIXME: The expansions done below are mostly pointless, such as
+ ;; for `yenc', where we replace "yenc-" with an exhaustive list (5
+ ;; elements).
+ ;; (while
+ ;; (let ((newprefixes nil)
+ ;; (changes nil))
+ ;; (dolist (pair prefixes)
+ ;; (let ((prefix (car pair)))
+ ;; (if (or (> (length prefix) autoload-def-prefixes-max-length)
+ ;; (radix-tree-lookup (cdr pair) ""))
+ ;; ;; No point splitting it any further.
+ ;; (push pair newprefixes)
+ ;; (setq changes t)
+ ;; (radix-tree-iter-subtrees
+ ;; (cdr pair) (lambda (sprefix subtree)
+ ;; (push (cons (concat prefix sprefix) subtree)
+ ;; newprefixes))))))
+ ;; (and changes
+ ;; (<= (length newprefixes)
+ ;; autoload-def-prefixes-max-entries)
+ ;; (let ((new nil)
+ ;; (old nil))
+ ;; (dolist (pair prefixes)
+ ;; (unless (memq pair newprefixes) ;Not old
+ ;; (push pair old)))
+ ;; (dolist (pair newprefixes)
+ ;; (unless (memq pair prefixes) ;Not new
+ ;; (push pair new)))
+ ;; (cl-assert new)
+ ;; (message "Expanding %S to %S"
+ ;; (mapcar #'car old) (mapcar #'car new))
+ ;; t)
+ ;; (setq prefixes newprefixes)
+ ;; (< (length prefixes) autoload-def-prefixes-max-entries))))
+
+ ;; (message "Final prefixes %s : %S" file (mapcar #'car prefixes))
+ (when prefixes
+ (let ((strings
+ (mapcar
+ (lambda (x)
+ (let ((prefix (car x)))
+ (if (or (> (length prefix) 2) ;Long enough!
+ (string-match ".[[:punct:]]\\'" prefix))
+ prefix
+ ;; Some packages really don't follow the rules.
+ ;; Drop the most egregious cases such as the
+ ;; one-letter prefixes.
+ (let ((dropped ()))
+ (radix-tree-iter-mappings
+ (cdr x) (lambda (s _)
+ (push (concat prefix s) dropped)))
+ (message "Not registering prefix \"%s\" from %s. Affects: %S"
+ prefix file dropped)
+ nil))))
+ prefixes)))
+ `(if (fboundp 'register-definition-prefixes)
+ (register-definition-prefixes ,file ',(delq nil strings)))))))
(defun autoload--setup-output (otherbuf outbuf absfile load-name)
(let ((outbuf
@@ -529,11 +687,11 @@ FILE's modification time."
(let (load-name
(print-length nil)
(print-level nil)
- (print-readably t) ; This does something in Lucid Emacs.
(float-output-format nil)
(visited (get-file-buffer file))
(otherbuf nil)
(absfile (expand-file-name file))
+ (defs '())
;; nil until we found a cookie.
output-start)
(when
@@ -578,27 +736,93 @@ FILE's modification time."
package--builtin-versions))
(princ "\n")))))
- (goto-char (point-min))
- (while (not (eobp))
- (skip-chars-forward " \t\n\f")
- (cond
- ((looking-at (regexp-quote generate-autoload-cookie))
- ;; If not done yet, figure out where to insert this text.
- (unless output-start
- (setq output-start (autoload--setup-output
- otherbuf outbuf absfile load-name)))
- (autoload--print-cookie-text output-start load-name file))
- ((looking-at ";")
- ;; Don't read the comment.
- (forward-line 1))
- (t
- (forward-sexp 1)
- (forward-line 1))))))
+ ;; Do not insert autoload entries for excluded files.
+ (unless (member absfile autoload-excludes)
+ (goto-char (point-min))
+ (while (not (eobp))
+ (skip-chars-forward " \t\n\f")
+ (cond
+ ((looking-at (regexp-quote generate-autoload-cookie))
+ ;; If not done yet, figure out where to insert this text.
+ (unless output-start
+ (setq output-start (autoload--setup-output
+ otherbuf outbuf absfile load-name)))
+ (autoload--print-cookie-text output-start load-name file))
+ ((looking-at ";")
+ ;; Don't read the comment.
+ (forward-line 1))
+ (t
+ ;; Avoid (defvar <foo>) by requiring a trailing space.
+ ;; Also, ignore this prefix business
+ ;; for ;;;###tramp-autoload and friends.
+ (when (and (equal generate-autoload-cookie ";;;###autoload")
+ (looking-at "(\\(def[^ ]+\\) ['(]*\\([^' ()\"\n]+\\)[\n \t]")
+ (not (member
+ (match-string 1)
+ '("define-obsolete-function-alias"
+ "define-obsolete-variable-alias"
+ "define-category" "define-key"
+ "defgroup" "defface" "defadvice"
+ "def-edebug-spec"
+ ;; Hmm... this is getting ugly:
+ "define-widget"
+ "define-erc-response-handler"
+ "defun-rcirc-command"))))
+ (push (match-string 2) defs))
+ (forward-sexp 1)
+ (forward-line 1)))))))
+
+ (when (and autoload-compute-prefixes defs)
+ ;; This output needs to always go in the main loaddefs.el,
+ ;; regardless of generated-autoload-file.
+ ;; FIXME: the files that don't have autoload cookies but
+ ;; do have definitions end up listed twice in loaddefs.el:
+ ;; once for their register-definition-prefixes and once in
+ ;; the list of "files without any autoloads".
+ (let ((form (autoload--make-defs-autoload defs load-name)))
+ (cond
+ ((null form)) ;All defs obey the default rule, yay!
+ ((not otherbuf)
+ (unless output-start
+ (setq output-start (autoload--setup-output
+ nil outbuf absfile load-name)))
+ (let ((autoload-print-form-outbuf
+ (marker-buffer output-start)))
+ (autoload-print-form form)))
+ (t
+ (let* ((other-output-start
+ ;; To force the output to go to the main loaddefs.el
+ ;; rather than to generated-autoload-file,
+ ;; there are two cases: if outbuf is non-nil,
+ ;; then passing otherbuf=nil is enough, but if
+ ;; outbuf is nil, that won't cut it, so we
+ ;; locally bind generated-autoload-file.
+ (let ((generated-autoload-file
+ (default-value 'generated-autoload-file)))
+ (autoload--setup-output nil outbuf absfile load-name)))
+ (autoload-print-form-outbuf
+ (marker-buffer other-output-start)))
+ (autoload-print-form form)
+ (with-current-buffer (marker-buffer other-output-start)
+ (save-excursion
+ ;; Insert the section-header line which lists
+ ;; the file name and which functions are in it, etc.
+ (goto-char other-output-start)
+ (let ((relfile (file-relative-name absfile)))
+ (autoload-insert-section-header
+ (marker-buffer other-output-start)
+ "actual autoloads are elsewhere" load-name relfile
+ (if autoload-timestamps
+ (nth 5 (file-attributes absfile))
+ autoload--non-timestamp))
+ (insert ";;; Generated autoloads from " relfile "\n")))
+ (insert generate-autoload-section-trailer)))))))
(when output-start
(let ((secondary-autoloads-file-buf
(if otherbuf (current-buffer))))
(with-current-buffer (marker-buffer output-start)
+ (cl-assert (> (point) output-start))
(save-excursion
;; Insert the section-header line which lists the file name
;; and which functions are in it, etc.
@@ -624,7 +848,9 @@ FILE's modification time."
;; We'd really want to just use
;; `emacs-internal' instead.
nil nil 'emacs-mule-unix)
- (nth 5 (file-attributes relfile))))
+ (if autoload-timestamps
+ (nth 5 (file-attributes relfile))
+ autoload--non-timestamp)))
(insert ";;; Generated autoloads from " relfile "\n")))
(insert generate-autoload-section-trailer))))
(or noninteractive
@@ -655,6 +881,8 @@ FILE's modification time."
(let ((version-control 'never))
(save-buffer)))))
+;; FIXME This command should be deprecated.
+;; See http://debbugs.gnu.org/22213#41
;;;###autoload
(defun update-file-autoloads (file &optional save-after outfile)
"Update the autoloads for FILE.
@@ -672,6 +900,9 @@ Return FILE if there was no autoload cookie in it, else nil."
(read-file-name "Write autoload definitions to file: ")))
(let* ((generated-autoload-file (or outfile generated-autoload-file))
(autoload-modified-buffers nil)
+ ;; We need this only if the output file handles more than one input.
+ ;; See http://debbugs.gnu.org/22213#38 and subsequent.
+ (autoload-timestamps t)
(no-autoloads (autoload-generate-file-autoloads file)))
(if autoload-modified-buffers
(if save-after (autoload-save-buffers))
@@ -689,6 +920,9 @@ removes any prior now out-of-date autoload entries."
(catch 'up-to-date
(let* ((buf (current-buffer))
(existing-buffer (if buffer-file-name buf))
+ (output-file (autoload-generated-file))
+ (output-time (if (file-exists-p output-file)
+ (nth 5 (file-attributes output-file))))
(found nil))
(with-current-buffer (autoload-find-generated-file)
;; This is to make generated-autoload-file have Unix EOLs, so
@@ -713,16 +947,28 @@ removes any prior now out-of-date autoload entries."
(file-time (nth 5 (file-attributes file))))
(if (and (or (null existing-buffer)
(not (buffer-modified-p existing-buffer)))
- (or
+ (cond
+ ;; FIXME? Arguably we should throw a
+ ;; user error, or some kind of warning,
+ ;; if we were called from update-file-autoloads,
+ ;; which can update only a single input file.
+ ;; It's not appropriate to use the output
+ ;; file modtime in such a case,
+ ;; if there are multiple input files
+ ;; contributing to the output.
+ ((and output-time
+ (member last-time
+ (list t autoload--non-timestamp)))
+ (not (time-less-p output-time file-time)))
;; last-time is the time-stamp (specifying
;; the last time we looked at the file) and
;; the file hasn't been changed since.
- (and (listp last-time)
- (not (time-less-p last-time file-time)))
+ ((listp last-time)
+ (not (time-less-p last-time file-time)))
;; last-time is an MD5 checksum instead.
- (and (stringp last-time)
- (equal last-time
- (md5 buf nil nil 'emacs-mule)))))
+ ((stringp last-time)
+ (equal last-time
+ (md5 buf nil nil 'emacs-mule)))))
(throw 'up-to-date nil)
(autoload-remove-section begin)
(setq found t))))
@@ -768,12 +1014,13 @@ write its autoloads into the specified file instead."
(dolist (suf (get-load-suffixes))
(unless (string-match "\\.elc" suf) (push suf tmp)))
(concat "^[^=.].*" (regexp-opt tmp t) "\\'")))
- (files (apply 'nconc
+ (files (apply #'nconc
(mapcar (lambda (dir)
(directory-files (expand-file-name dir)
t files-re))
dirs)))
- (done ())
+ (done ()) ;Files processed; to remove duplicates.
+ (changed nil) ;Non-nil if some change occurred.
(last-time)
;; Files with no autoload cookies or whose autoloads go to other
;; files because of file-local autoload-generated-file settings.
@@ -782,13 +1029,16 @@ write its autoloads into the specified file instead."
(generated-autoload-file
(if (called-interactively-p 'interactive)
(read-file-name "Write autoload definitions to file: ")
- generated-autoload-file)))
+ generated-autoload-file))
+ (output-time
+ (if (file-exists-p generated-autoload-file)
+ (nth 5 (file-attributes generated-autoload-file)))))
(with-current-buffer (autoload-find-generated-file)
(save-excursion
;; Canonicalize file names and remove the autoload file itself.
(setq files (delete (file-relative-name buffer-file-name)
- (mapcar 'file-relative-name files)))
+ (mapcar #'file-relative-name files)))
(goto-char (point-min))
(while (search-forward generate-autoload-section-header nil t)
@@ -800,28 +1050,33 @@ write its autoloads into the specified file instead."
;; Remove the obsolete section.
(autoload-remove-section (match-beginning 0))
(setq last-time (nth 4 form))
- (when (listp last-time)
- (dolist (file file)
- (let ((file-time (nth 5 (file-attributes file))))
- (when (and file-time
- (not (time-less-p last-time file-time)))
- ;; file unchanged
- (push file no-autoloads)
- (setq files (delete file files)))))))
+ (if (member last-time (list t autoload--non-timestamp))
+ (setq last-time output-time))
+ (dolist (file file)
+ (let ((file-time (nth 5 (file-attributes file))))
+ (when (and file-time
+ (not (time-less-p last-time file-time)))
+ ;; file unchanged
+ (push file no-autoloads)
+ (setq files (delete file files))))))
((not (stringp file)))
((or (not (file-exists-p file))
;; Remove duplicates as well, just in case.
- (member file done)
- ;; If the file is actually excluded.
- (member (expand-file-name file) autoload-excludes))
+ (member file done))
;; Remove the obsolete section.
+ (setq changed t)
(autoload-remove-section (match-beginning 0)))
- ((and (listp (nth 4 form))
- (not (time-less-p (nth 4 form)
- (nth 5 (file-attributes file)))))
+ ((not (time-less-p (let ((oldtime (nth 4 form)))
+ (if (member oldtime
+ (list
+ t autoload--non-timestamp))
+ output-time
+ oldtime))
+ (nth 5 (file-attributes file))))
;; File hasn't changed.
nil)
(t
+ (setq changed t)
(autoload-remove-section (match-beginning 0))
(if (autoload-generate-file-autoloads
;; Passing `current-buffer' makes it insert at point.
@@ -833,7 +1088,6 @@ write its autoloads into the specified file instead."
(let ((no-autoloads-time (or last-time '(0 0 0 0))) file-time)
(dolist (file files)
(cond
- ((member (expand-file-name file) autoload-excludes) nil)
;; Passing nil as second argument forces
;; autoload-generate-file-autoloads to look for the right
;; spot where to insert each autoloads section.
@@ -841,7 +1095,8 @@ write its autoloads into the specified file instead."
(autoload-generate-file-autoloads file nil buffer-file-name))
(push file no-autoloads)
(if (time-less-p no-autoloads-time file-time)
- (setq no-autoloads-time file-time)))))
+ (setq no-autoloads-time file-time)))
+ (t (setq changed t))))
(when no-autoloads
;; Sort them for better readability.
@@ -850,11 +1105,17 @@ write its autoloads into the specified file instead."
(goto-char (point-max))
(search-backward "\f" nil t)
(autoload-insert-section-header
- (current-buffer) nil nil no-autoloads no-autoloads-time)
+ (current-buffer) nil nil no-autoloads (if autoload-timestamps
+ no-autoloads-time
+ autoload--non-timestamp))
(insert generate-autoload-section-trailer)))
- (let ((version-control 'never))
- (save-buffer))
+ ;; Don't modify the file if its content has not been changed, so `make'
+ ;; dependencies don't trigger unnecessarily.
+ (when changed
+ (let ((version-control 'never))
+ (save-buffer)))
+
;; In case autoload entries were added to other files because of
;; file-local autoload-generated-file settings.
(autoload-save-buffers))))
@@ -886,7 +1147,7 @@ should be non-nil)."
(push (expand-file-name file) autoload-excludes)))))))
(let ((args command-line-args-left))
(setq command-line-args-left nil)
- (apply 'update-directory-autoloads args)))
+ (apply #'update-directory-autoloads args)))
(provide 'autoload)
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index b3bf4a5884..dbaf2bc6f6 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -1209,8 +1209,9 @@
radians-to-degrees rassq rassoc read-from-string regexp-quote
region-beginning region-end reverse round
sin sqrt string string< string= string-equal string-lessp string-to-char
- string-to-int string-to-number substring sxhash symbol-function
- symbol-name symbol-plist symbol-value string-make-unibyte
+ string-to-int string-to-number substring
+ sxhash sxhash-equal sxhash-eq sxhash-eql
+ symbol-function symbol-name symbol-plist symbol-value string-make-unibyte
string-make-multibyte string-as-multibyte string-as-unibyte
string-to-multibyte
tan truncate
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 1526e2fdeb..175690af3e 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1360,31 +1360,33 @@ extra args."
(dolist (elt '(format message error))
(put elt 'byte-compile-format-like t))
-;; Warn if a custom definition fails to specify :group.
+;; Warn if a custom definition fails to specify :group, or :type.
(defun byte-compile-nogroup-warn (form)
- (if (and (memq (car form) '(custom-declare-face custom-declare-variable))
- byte-compile-current-group)
- ;; The group will be provided implicitly.
- nil
- (let ((keyword-args (cdr (cdr (cdr (cdr form)))))
- (name (cadr form)))
- (or (not (eq (car-safe name) 'quote))
- (and (eq (car form) 'custom-declare-group)
- (equal name ''emacs))
- (plist-get keyword-args :group)
- (not (and (consp name) (eq (car name) 'quote)))
- (byte-compile-warn
- "%s for `%s' fails to specify containing group"
- (cdr (assq (car form)
- '((custom-declare-group . defgroup)
- (custom-declare-face . defface)
- (custom-declare-variable . defcustom))))
- (cadr name)))
- ;; Update the current group, if needed.
- (if (and byte-compile-current-file ;Only when compiling a whole file.
- (eq (car form) 'custom-declare-group)
- (eq (car-safe name) 'quote))
- (setq byte-compile-current-group (cadr name))))))
+ (let ((keyword-args (cdr (cdr (cdr (cdr form)))))
+ (name (cadr form)))
+ (when (eq (car-safe name) 'quote)
+ (or (not (eq (car form) 'custom-declare-variable))
+ (plist-get keyword-args :type)
+ (byte-compile-warn
+ "defcustom for `%s' fails to specify type" (cadr name)))
+ (if (and (memq (car form) '(custom-declare-face custom-declare-variable))
+ byte-compile-current-group)
+ ;; The group will be provided implicitly.
+ nil
+ (or (and (eq (car form) 'custom-declare-group)
+ (equal name ''emacs))
+ (plist-get keyword-args :group)
+ (byte-compile-warn
+ "%s for `%s' fails to specify containing group"
+ (cdr (assq (car form)
+ '((custom-declare-group . defgroup)
+ (custom-declare-face . defface)
+ (custom-declare-variable . defcustom))))
+ (cadr name)))
+ ;; Update the current group, if needed.
+ (if (and byte-compile-current-file ;Only when compiling a whole file.
+ (eq (car form) 'custom-declare-group))
+ (setq byte-compile-current-group (cadr name)))))))
;; Warn if the function or macro is being redefined with a different
;; number of arguments.
@@ -2580,7 +2582,13 @@ FUN should be either a `lambda' value or a `closure' value."
(pcase-let* (((or (and `(lambda ,args . ,body) (let env nil))
`(closure ,env ,args . ,body))
fun)
+ (preamble nil)
(renv ()))
+ ;; Split docstring and `interactive' form from body.
+ (when (stringp (car body))
+ (push (pop body) preamble))
+ (when (eq (car-safe (car body)) 'interactive)
+ (push (pop body) preamble))
;; Turn the function's closed vars (if any) into local let bindings.
(dolist (binding env)
(cond
@@ -2593,8 +2601,8 @@ FUN should be either a `lambda' value or a `closure' value."
((eq binding t))
(t (push `(defvar ,binding) body))))
(if (null renv)
- `(lambda ,args ,@body)
- `(lambda ,args (let ,(nreverse renv) ,@body)))))
+ `(lambda ,args ,@preamble ,@body)
+ `(lambda ,args ,@preamble (let ,(nreverse renv) ,@body)))))
;;;###autoload
(defun byte-compile (form)
@@ -2957,6 +2965,8 @@ for symbols generated by the byte compiler itself."
;; Special macro-expander used during byte-compilation.
(defun byte-compile-macroexpand-declare-function (fn file &rest args)
+ (declare (advertised-calling-convention
+ (fn file &optional arglist fileonly) nil))
(let ((gotargs (and (consp args) (listp (car args))))
(unresolved (assq fn byte-compile-unresolved-functions)))
(when unresolved ; function was called before declaration
diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el
index 50b1fe3266..9f84367635 100644
--- a/lisp/emacs-lisp/cconv.el
+++ b/lisp/emacs-lisp/cconv.el
@@ -253,6 +253,32 @@ Returns a form where all lambdas don't have any free variables."
`(internal-make-closure
,args ,envector ,docstring . ,body-new)))))
+(defun cconv--remap-llv (new-env var closedsym)
+ ;; In a case such as:
+ ;; (let* ((fun (lambda (x) (+ x y))) (y 1)) (funcall fun 1))
+ ;; A naive lambda-lifting would return
+ ;; (let* ((fun (lambda (y x) (+ x y))) (y 1)) (funcall fun y 1))
+ ;; Where the external `y' is mistakenly captured by the inner one.
+ ;; So when we detect that case, we rewrite it to:
+ ;; (let* ((closed-y y) (fun (lambda (y x) (+ x y))) (y 1))
+ ;; (funcall fun closed-y 1))
+ ;; We do that even if there's no `funcall' that uses `fun' in the scope
+ ;; where `y' is shadowed by another variable because, to treat
+ ;; this case better, we'd need to traverse the tree one more time to
+ ;; collect this data, and I think that it's not worth it.
+ (mapcar (lambda (mapping)
+ (if (not (eq (cadr mapping) 'apply-partially))
+ mapping
+ (cl-assert (eq (car mapping) (nth 2 mapping)))
+ `(,(car mapping)
+ apply-partially
+ ,(car mapping)
+ ,@(mapcar (lambda (arg)
+ (if (eq var arg)
+ closedsym arg))
+ (nthcdr 3 mapping)))))
+ new-env))
+
(defun cconv-convert (form env extend)
;; This function actually rewrites the tree.
"Return FORM with all its lambdas changed so they are closed.
@@ -350,34 +376,13 @@ places where they originally did not directly appear."
(if (assq var new-env) (push `(,var) new-env))
(cconv-convert value env extend)))))
- ;; The piece of code below letbinds free variables of a λ-lifted
- ;; function if they are redefined in this let, example:
- ;; (let* ((fun (lambda (x) (+ x y))) (y 1)) (funcall fun 1))
- ;; Here we can not pass y as parameter because it is redefined.
- ;; So we add a (closed-y y) declaration. We do that even if the
- ;; function is not used inside this let(*). The reason why we
- ;; ignore this case is that we can't "look forward" to see if the
- ;; function is called there or not. To treat this case better we'd
- ;; need to traverse the tree one more time to collect this data, and
- ;; I think that it's not worth it.
- (when (memq var new-extend)
- (let ((closedsym
- (make-symbol (concat "closed-" (symbol-name var)))))
- (setq new-env
- (mapcar (lambda (mapping)
- (if (not (eq (cadr mapping) 'apply-partially))
- mapping
- (cl-assert (eq (car mapping) (nth 2 mapping)))
- `(,(car mapping)
- apply-partially
- ,(car mapping)
- ,@(mapcar (lambda (arg)
- (if (eq var arg)
- closedsym arg))
- (nthcdr 3 mapping)))))
- new-env))
- (setq new-extend (remq var new-extend))
- (push closedsym new-extend)
+ (when (and (eq letsym 'let*) (memq var new-extend))
+ ;; One of the lambda-lifted vars is shadowed, so add
+ ;; a reference to the outside binding and arrange to use
+ ;; that reference.
+ (let ((closedsym (make-symbol (format "closed-%s" var))))
+ (setq new-env (cconv--remap-llv new-env var closedsym))
+ (setq new-extend (cons closedsym (remq var new-extend)))
(push `(,closedsym ,var) binders-new)))
;; We push the element after redefined free variables are
@@ -390,6 +395,21 @@ places where they originally did not directly appear."
(setq extend new-extend))
)) ; end of dolist over binders
+ (when (not (eq letsym 'let*))
+ ;; We can't do the cconv--remap-llv at the same place for let and
+ ;; let* because in the case of `let', the shadowing may occur
+ ;; before we know that the var will be in `new-extend' (bug#24171).
+ (dolist (binder binders-new)
+ (when (memq (car-safe binder) new-extend)
+ ;; One of the lambda-lifted vars is shadowed, so add
+ ;; a reference to the outside binding and arrange to use
+ ;; that reference.
+ (let* ((var (car-safe binder))
+ (closedsym (make-symbol (format "closed-%s" var))))
+ (setq new-env (cconv--remap-llv new-env var closedsym))
+ (setq new-extend (cons closedsym (remq var new-extend)))
+ (push `(,closedsym ,var) binders-new)))))
+
`(,letsym ,(nreverse binders-new)
. ,(mapcar (lambda (form)
(cconv-convert
diff --git a/lisp/emacs-lisp/check-declare.el b/lisp/emacs-lisp/check-declare.el
index b6fa054608..e1e756be07 100644
--- a/lisp/emacs-lisp/check-declare.el
+++ b/lisp/emacs-lisp/check-declare.el
@@ -43,7 +43,7 @@
"Name of buffer used to display any `check-declare' warnings.")
(defun check-declare-locate (file basefile)
- "Return the full path of FILE.
+ "Return the relative name of FILE.
Expands files with a \".c\" or \".m\" extension relative to the Emacs
\"src/\" directory. Otherwise, `locate-library' searches for FILE.
If that fails, expands FILE relative to BASEFILE's directory part.
@@ -70,6 +70,7 @@ the result."
(string-match "\\.el\\'" tfile))
tfile
(concat tfile ".el")))))
+ (setq file (file-relative-name file))
(if ext (concat "ext:" file)
file)))
@@ -80,49 +81,40 @@ where only the first two elements need be present. This claims that FNFILE
defines FN, with ARGLIST. FILEONLY non-nil means only check that FNFILE
exists, not that it defines FN. This is for function definitions that we
don't know how to recognize (e.g. some macros)."
- (let ((m (format "Scanning %s..." file))
- alist form len fn fnfile arglist fileonly)
- (message "%s" m)
+ (let (alist)
(with-temp-buffer
(insert-file-contents file)
;; FIXME we could theoretically be inside a string.
(while (re-search-forward "^[ \t]*\\((declare-function\\)[ \t\n]" nil t)
- (goto-char (match-beginning 1))
- (if (and (setq form (ignore-errors (read (current-buffer))))
+ (let ((pos (match-beginning 1)))
+ (goto-char pos)
+ (let ((form (ignore-errors (read (current-buffer))))
+ len fn formfile fnfile arglist fileonly)
+ (if (and
;; Exclude element of byte-compile-initial-macro-environment.
(or (listp (cdr form)) (setq form nil))
(> (setq len (length form)) 2)
(< len 6)
+ (setq formfile (nth 2 form))
(symbolp (setq fn (cadr form)))
(setq fn (symbol-name fn)) ; later we use as a search string
- (stringp (setq fnfile (nth 2 form)))
- (setq fnfile (check-declare-locate fnfile
- (expand-file-name file)))
+ (stringp formfile)
+ (setq fnfile (check-declare-locate formfile file))
;; Use t to distinguish unspecified arglist from empty one.
(or (eq t (setq arglist (if (> len 3)
(nth 3 form)
t)))
(listp arglist))
(symbolp (setq fileonly (nth 4 form))))
- (setq alist (cons (list fnfile fn arglist fileonly) alist))
- ;; FIXME make this more noticeable.
- (if form (message "Malformed declaration for `%s'" (cadr form))))))
- (message "%sdone" m)
+ (setq alist (cons (list fnfile fn arglist fileonly) alist))
+ (when form
+ (check-declare-warn file (or fn "unknown function")
+ (if (stringp formfile) formfile
+ "unknown file")
+ "Malformed declaration"
+ (line-number-at-pos pos))))))))
alist))
-(defun check-declare-errmsg (errlist &optional full)
- "Return a string with the number of errors in ERRLIST, if any.
-Normally just counts the number of elements in ERRLIST.
-With optional argument FULL, sums the number of elements in each element."
- (if errlist
- (let ((l (length errlist)))
- (when full
- (setq l 0)
- (dolist (e errlist)
- (setq l (+ l (1- (length e))))))
- (format "%d problem%s found" l (if (= l 1) "" "s")))
- "OK"))
-
(autoload 'byte-compile-arglist-signature "bytecomp")
(defgroup check-declare nil
@@ -144,11 +136,9 @@ to only check that FNFILE exists, not that it actually defines FN.
Returns nil if all claims are found to be true, otherwise a list
of errors with elements of the form \(FILE FN TYPE), where TYPE
is a string giving details of the error."
- (let ((m (format "Checking %s..." fnfile))
- (cflag (member (file-name-extension fnfile) '("c" "m")))
+ (let ((cflag (member (file-name-extension fnfile) '("c" "m")))
(ext (string-match "^ext:" fnfile))
re fn sig siglist arglist type errlist minargs maxargs)
- (message "%s" m)
(if ext
(setq fnfile (substring fnfile 4)))
(if (file-regular-p fnfile)
@@ -216,7 +206,8 @@ fset\\|\\(?:cl-\\)?defmethod\\)\\>" type)
(setq arglist (nth 2 e)
type
(if (not re)
- "file not found"
+ (when (or check-declare-ext-errors (not ext))
+ "file not found")
(if (not (setq sig (assoc (cadr e) siglist)))
(unless (nth 3 e) ; fileonly
"function not found")
@@ -235,13 +226,6 @@ fset\\|\\(?:cl-\\)?defmethod\\)\\>" type)
"arglist mismatch")))))
(when type
(setq errlist (cons (list (car e) (cadr e) type) errlist))))
- (message "%s%s" m
- (if (or re (or check-declare-ext-errors
- (not ext)))
- (check-declare-errmsg errlist)
- (progn
- (setq errlist nil)
- "skipping external file")))
errlist))
(defun check-declare-sort (alist)
@@ -258,30 +242,27 @@ Returned list has elements FNFILE (FILE ...)."
(setq sort (cons (list fnfile (cons file rest)) sort)))))
sort))
-(defun check-declare-warn (file fn fnfile type)
+(defun check-declare-warn (file fn fnfile type &optional line)
"Warn that FILE made a false claim about FN in FNFILE.
-TYPE is a string giving the nature of the error. Warning is displayed in
-`check-declare-warning-buffer'."
+TYPE is a string giving the nature of the error.
+Optional LINE is the claim's line number; otherwise, search for the claim.
+Display warning in `check-declare-warning-buffer'."
(let ((warning-prefix-function
(lambda (level entry)
- (let ((line 0)
- (col 0))
- (insert
- (with-current-buffer (find-file-noselect file)
- (goto-char (point-min))
- (when (re-search-forward
- (format "(declare-function[ \t\n]+%s" fn) nil t)
- (goto-char (match-beginning 0))
- (setq line (line-number-at-pos))
- (setq col (1+ (current-column))))
- (format "%s:%d:%d:"
- (file-name-nondirectory file)
- line col))))
+ (insert (format "%s:%d:" (file-relative-name file) (or line 0)))
entry))
(warning-fill-prefix " "))
+ (unless line
+ (with-current-buffer (find-file-noselect file)
+ (goto-char (point-min))
+ (when (and (not line)
+ (re-search-forward
+ (format "(declare-function[ \t\n]+%s" fn) nil t))
+ (goto-char (match-beginning 0))
+ (setq line (line-number-at-pos)))))
(display-warning 'check-declare
(format-message "said `%s' was defined in %s: %s"
- fn (file-name-nondirectory fnfile) type)
+ fn (file-relative-name fnfile) type)
nil check-declare-warning-buffer)))
(declare-function compilation-forget-errors "compile" ())
@@ -289,7 +270,18 @@ TYPE is a string giving the nature of the error. Warning is displayed in
(defun check-declare-files (&rest files)
"Check veracity of all `declare-function' statements in FILES.
Return a list of any errors found."
- (let (alist err errlist)
+ (if (get-buffer check-declare-warning-buffer)
+ (kill-buffer check-declare-warning-buffer))
+ (let ((buf (get-buffer-create check-declare-warning-buffer))
+ alist err errlist)
+ (with-current-buffer buf
+ (unless (derived-mode-p 'compilation-mode)
+ (compilation-mode))
+ (setq mode-line-process
+ '(:propertize ":run" face compilation-mode-line-run))
+ (let ((inhibit-read-only t))
+ (insert "\f\n"))
+ (compilation-forget-errors))
(dolist (file files)
(setq alist (cons (cons file (check-declare-scan file)) alist)))
;; Sort so that things are ordered by the files supposed to
@@ -298,19 +290,15 @@ Return a list of any errors found."
(if (setq err (check-declare-verify (car e) (cdr e)))
(setq errlist (cons (cons (car e) err) errlist))))
(setq errlist (nreverse errlist))
- (if (get-buffer check-declare-warning-buffer)
- (kill-buffer check-declare-warning-buffer))
- (with-current-buffer (get-buffer-create check-declare-warning-buffer)
- (unless (derived-mode-p 'compilation-mode)
- (compilation-mode))
- (let ((inhibit-read-only t))
- (insert "\f\n"))
- (compilation-forget-errors))
;; Sort back again so that errors are ordered by the files
;; containing the declare-function statements.
(dolist (e (check-declare-sort errlist))
(dolist (f (cdr e))
(check-declare-warn (car e) (cadr f) (car f) (nth 2 f))))
+ (with-current-buffer buf
+ (setq mode-line-process
+ '(:propertize ":exit" face compilation-mode-line-run))
+ (force-mode-line-update))
errlist))
;;;###autoload
@@ -320,34 +308,22 @@ See `check-declare-directory' for more information."
(interactive "fFile to check: ")
(or (file-exists-p file)
(error "File `%s' not found" file))
- (let ((m (format "Checking %s..." file))
- errlist)
- (message "%s" m)
- (setq errlist (check-declare-files file))
- (message "%s%s" m (check-declare-errmsg errlist))
- errlist))
+ (check-declare-files file))
;;;###autoload
(defun check-declare-directory (root)
"Check veracity of all `declare-function' statements under directory ROOT.
Returns non-nil if any false statements are found."
(interactive "DDirectory to check: ")
- (or (file-directory-p (setq root (expand-file-name root)))
+ (setq root (directory-file-name (file-relative-name root)))
+ (or (file-directory-p root)
(error "Directory `%s' not found" root))
- (let ((m "Checking `declare-function' statements...")
- (m2 "Finding files with declarations...")
- errlist files)
- (message "%s" m)
- (message "%s" m2)
- (setq files (process-lines find-program root
- "-name" "*.el"
- "-exec" grep-program
- "-l" "^[ \t]*(declare-function" "{}" ";"))
- (message "%s%d found" m2 (length files))
+ (let ((files (process-lines find-program root
+ "-name" "*.el"
+ "-exec" grep-program
+ "-l" "^[ \t]*(declare-function" "{}" "+")))
(when files
- (setq errlist (apply 'check-declare-files files))
- (message "%s%s" m (check-declare-errmsg errlist t))
- errlist)))
+ (apply #'check-declare-files files))))
(provide 'check-declare)
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index fd8f108a54..3a81adeb6a 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -1638,6 +1638,17 @@ function,command,variable,option or symbol." ms1))))))
;; * If a user option variable records a true-or-false
;; condition, give it a name that ends in `-flag'.
+ ;; "True ..." should be "Non-nil ..."
+ (when (looking-at "\"\\*?\\(True\\)\\b")
+ (if (checkdoc-autofix-ask-replace
+ (match-beginning 1) (match-end 1)
+ "Say \"Non-nil\" instead of \"True\"? "
+ "Non-nil")
+ nil
+ (checkdoc-create-error
+ "\"True\" should usually be \"Non-nil\""
+ (match-beginning 1) (match-end 1))))
+
;; If the variable has -flag in the name, make sure
(if (and (string-match "-flag$" (car fp))
(not (looking-at "\"\\*?Non-nil\\s-+means\\s-+")))
@@ -1798,6 +1809,16 @@ Replace with \"%s\"? " original replace)
"Probably \"%s\" should be imperative \"%s\""
original replace)
(match-beginning 1) (match-end 1))))))
+ ;; "Return true ..." should be "Return non-nil ..."
+ (when (looking-at "\"Return \\(true\\)\\b")
+ (if (checkdoc-autofix-ask-replace
+ (match-beginning 1) (match-end 1)
+ "Say \"non-nil\" instead of \"true\"? "
+ "non-nil")
+ nil
+ (checkdoc-create-error
+ "\"true\" should usually be \"non-nil\""
+ (match-beginning 1) (match-end 1))))
;; Done with functions
)))
;;* When a documentation string refers to a Lisp symbol, write it as
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 8bf0675f54..0033a94fb5 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -173,7 +173,9 @@ the elements themselves.
(defun cl-mapcan (cl-func cl-seq &rest cl-rest)
"Like `cl-mapcar', but nconc's together the values returned by the function.
\n(fn FUNCTION SEQUENCE...)"
- (apply 'nconc (apply 'cl-mapcar cl-func cl-seq cl-rest)))
+ (if cl-rest
+ (apply 'nconc (apply 'cl-mapcar cl-func cl-seq cl-rest))
+ (mapcan cl-func cl-seq)))
;;;###autoload
(defun cl-mapcon (cl-func cl-list &rest cl-rest)
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index 4f263c6bb8..61186e1a88 100644
--- a/lisp/emacs-lisp/cl-generic.el
+++ b/lisp/emacs-lisp/cl-generic.el
@@ -358,6 +358,26 @@ the specializer used will be the one returned by BODY."
,nbody))))))
(f (error "Unexpected macroexpansion result: %S" f))))))
+(put 'cl-defmethod 'function-documentation
+ '(cl--generic-make-defmethod-docstring))
+
+(defun cl--generic-make-defmethod-docstring ()
+ ;; FIXME: Copy&paste from pcase--make-docstring.
+ (let* ((main (documentation (symbol-function 'cl-defmethod) 'raw))
+ (ud (help-split-fundoc main 'cl-defmethod)))
+ ;; So that eg emacs -Q -l cl-lib --eval "(documentation 'pcase)" works,
+ ;; where cl-lib is anything using pcase-defmacro.
+ (require 'help-fns)
+ (with-temp-buffer
+ (insert (or (cdr ud) main))
+ (insert "\n\n\tCurrently supported forms for TYPE:\n\n")
+ (dolist (method (reverse (cl--generic-method-table
+ (cl--generic 'cl-generic-generalizers))))
+ (let* ((info (cl--generic-method-info method)))
+ (when (nth 2 info)
+ (insert (nth 2 info) "\n\n"))))
+ (let ((combined-doc (buffer-string)))
+ (if ud (help-add-fundoc-usage combined-doc (car ud)) combined-doc)))))
;;;###autoload
(defmacro cl-defmethod (name args &rest body)
@@ -375,15 +395,17 @@ modifies how the method is combined with other methods, including:
:after - Method will be called after the primary
:around - Method will be called around everything else
The absence of QUALIFIER means this is a \"primary\" method.
+The set of acceptable qualifiers and their meaning is defined
+\(and can be extended) by the methods of `cl-generic-combine-methods'.
-TYPE can be one of the basic types (see the full list and their
-hierarchy in `cl--generic-typeof-types'), CL struct type, or an
-EIEIO class.
+ARGS can also include so-called context specializers, introduced by
+`&context' (which should appear right after the mandatory arguments,
+before any &optional or &rest). They have the form (EXPR TYPE) where
+EXPR is an Elisp expression whose value should match TYPE for the
+method to be applicable.
-Other than that, TYPE can also be of the form `(eql VAL)' in
-which case this method will be invoked when the argument is `eql'
-to VAL, or `(head VAL)', in which case the argument is required
-to be a cons with VAL as its head.
+The set of acceptable TYPEs (also called \"specializers\") is defined
+\(and can be extended) by the various methods of `cl-generic-generalizers'.
\(fn NAME [QUALIFIER] ARGS &rest [DOCSTRING] BODY)"
(declare (doc-string 3) (indent 2)
@@ -415,7 +437,8 @@ to be a cons with VAL as its head.
;; function, so warnings like "not known to be defined" are fair game.
;; But in practice, it's common to use `cl-defmethod'
;; without a previous `cl-defgeneric'.
- (declare-function ,name "")
+ ;; The ",'" is a no-op that pacifies check-declare.
+ (,'declare-function ,name "")
(cl-generic-define-method ',name ',(nreverse qualifiers) ',args
,uses-cnm ,fun)))))
@@ -428,6 +451,12 @@ to be a cons with VAL as its head.
(setq methods (cdr methods)))
methods)
+(defun cl--generic-load-hist-format (name qualifiers specializers)
+ ;; FIXME: This function is used in elisp-mode.el and
+ ;; elisp-mode-tests.el, but I still decided to use an internal name
+ ;; because these uses should be removed or moved into cl-generic.el.
+ `(,name ,qualifiers . ,specializers))
+
;;;###autoload
(defun cl-generic-define-method (name qualifiers args uses-cnm function)
(pcase-let*
@@ -468,7 +497,9 @@ to be a cons with VAL as its head.
(cons method mt)
;; Keep the ordering; important for methods with :extra qualifiers.
(mapcar (lambda (x) (if (eq x (car me)) method x)) mt)))
- (cl-pushnew `(cl-defmethod . (,(cl--generic-name generic) . ,specializers))
+ (cl-pushnew `(cl-defmethod . ,(cl--generic-load-hist-format
+ (cl--generic-name generic)
+ qualifiers specializers))
current-load-list :test #'equal)
;; FIXME: Try to avoid re-constructing a new function if the old one
;; is still valid (e.g. still empty method cache)?
@@ -750,7 +781,7 @@ methods.")
(fset 'cl-generic-combine-methods #'cl--generic-standard-method-combination))
(cl-defmethod cl-generic-generalizers (specializer)
- "Support for the catch-all t specializer."
+ "Support for the catch-all t specializer which always matches."
(if (eq specializer t) (list cl--generic-t-generalizer)
(error "Unknown specializer %S" specializer)))
@@ -854,18 +885,22 @@ Can only be used from within the lexical body of a primary or around method."
(defun cl--generic-search-method (met-name)
"For `find-function-regexp-alist'. Searches for a cl-defmethod.
-MET-NAME is a cons (SYMBOL . SPECIALIZERS)."
+MET-NAME is as returned by `cl--generic-load-hist-format'."
(let ((base-re (concat "(\\(?:cl-\\)?defmethod[ \t]+"
(regexp-quote (format "%s" (car met-name)))
"\\_>")))
(or
(re-search-forward
(concat base-re "[^&\"\n]*"
+ (mapconcat (lambda (qualifier)
+ (regexp-quote (format "%S" qualifier)))
+ (cadr met-name)
+ "[ \t\n]*")
(mapconcat (lambda (specializer)
(regexp-quote
(format "%S" (if (consp specializer)
(nth 1 specializer) specializer))))
- (remq t (cdr met-name))
+ (remq t (cddr met-name))
"[ \t\n]*)[^&\"\n]*"))
nil t)
(re-search-forward base-re nil t))))
@@ -922,8 +957,10 @@ MET-NAME is a cons (SYMBOL . SPECIALIZERS)."
(let* ((info (cl--generic-method-info method)))
;; FIXME: Add hyperlinks for the types as well.
(insert (format "%s%S" (nth 0 info) (nth 1 info)))
- (let* ((met-name (cons function
- (cl--generic-method-specializers method)))
+ (let* ((met-name (cl--generic-load-hist-format
+ function
+ (cl--generic-method-qualifiers method)
+ (cl--generic-method-specializers method)))
(file (find-lisp-object-file-name met-name 'cl-defmethod)))
(when file
(insert (substitute-command-keys " in `"))
@@ -1007,7 +1044,8 @@ The value returned is a list of elements of the form
(lambda (tag &rest _) (if (eq (car-safe tag) 'head) (list tag))))
(cl-defmethod cl-generic-generalizers :extra "head" (specializer)
- "Support for the `(head VAL)' specializers."
+ "Support for (head VAL) specializers.
+These match if the argument is a cons cell whose car is `eql' to VAL."
;; We have to implement `head' here using the :extra qualifier,
;; since we can't use the `head' specializer to implement itself.
(if (not (eq (car-safe specializer) 'head))
@@ -1027,7 +1065,8 @@ The value returned is a list of elements of the form
(lambda (tag &rest _) (if (eq (car-safe tag) 'eql) (list tag))))
(cl-defmethod cl-generic-generalizers ((specializer (head eql)))
- "Support for the `(eql VAL)' specializers."
+ "Support for (eql VAL) specializers.
+These match if the argument is `eql' to VAL."
(puthash (cadr specializer) specializer cl--generic-eql-used)
(list cl--generic-eql-generalizer))
@@ -1082,7 +1121,7 @@ The value returned is a list of elements of the form
#'cl--generic-struct-specializers)
(cl-defmethod cl-generic-generalizers :extra "cl-struct" (type)
- "Support for dispatch on cl-struct types."
+ "Support for dispatch on types defined by `cl-defstruct'."
(or
(when (symbolp type)
;; Use the "cl--struct-class*" (inlinable) functions/macros rather than
@@ -1126,7 +1165,8 @@ The value returned is a list of elements of the form
(and (symbolp tag) (assq tag cl--generic-typeof-types))))
(cl-defmethod cl-generic-generalizers :extra "typeof" (type)
- "Support for dispatch on builtin types."
+ "Support for dispatch on builtin types.
+See the full list and their hierarchy in `cl--generic-typeof-types'."
;; FIXME: Add support for other types accepted by `cl-typep' such
;; as `character', `atom', `face', `function', ...
(or
@@ -1164,7 +1204,8 @@ The value returned is a list of elements of the form
#'cl--generic-derived-specializers)
(cl-defmethod cl-generic-generalizers ((_specializer (head derived-mode)))
- "Support for the `(derived-mode MODE)' specializers."
+ "Support for (derived-mode MODE) specializers.
+Used internally for the (major-mode MODE) context specializers."
(list cl--generic-derived-generalizer))
(cl-generic-define-context-rewriter major-mode (mode &rest modes)
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index c51ed9d877..9a599391e6 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1837,6 +1837,27 @@ Labels have lexical scope and dynamic extent."
`(throw ',catch-tag ',label))))
,@macroexpand-all-environment)))))
+(defun cl--prog (binder bindings body)
+ (let (decls)
+ (while (eq 'declare (car-safe (car body)))
+ (push (pop body) decls))
+ `(cl-block nil
+ (,binder ,bindings
+ ,@(nreverse decls)
+ (cl-tagbody . ,body)))))
+
+;;;###autoload
+(defmacro cl-prog (bindings &rest body)
+ "Run BODY like a `cl-tagbody' after setting up the BINDINGS.
+Shorthand for (cl-block nil (let BINDINGS (cl-tagbody BODY)))"
+ (cl--prog 'let bindings body))
+
+;;;###autoload
+(defmacro cl-prog* (bindings &rest body)
+ "Run BODY like a `cl-tagbody' after setting up the BINDINGS.
+Shorthand for (cl-block nil (let* BINDINGS (cl-tagbody BODY)))"
+ (cl--prog 'let* bindings body))
+
;;;###autoload
(defmacro cl-do-symbols (spec &rest body)
"Loop over all symbols.
@@ -2701,7 +2722,11 @@ non-nil value, that slot cannot be set via `setf'.
(let ((accessor (intern (format "%s%s" conc-name slot))))
(push slot slots)
(push (nth 1 desc) defaults)
+ ;; The arg "cl-x" is referenced by name in eg pred-form
+ ;; and pred-check, so changing it is not straightforward.
(push `(cl-defsubst ,accessor (cl-x)
+ ,(format "Access slot \"%s\" of `%s' struct CL-X."
+ slot struct)
(declare (side-effect-free t))
,@(and pred-check
(list `(or ,pred-check
@@ -3003,7 +3028,7 @@ omitted, a default message listing FORM itself is used."
(delq nil (mapcar (lambda (x)
(unless (macroexp-const-p x)
x))
- (cdr form))))))
+ (cdr-safe form))))))
`(progn
(or ,form
(cl--assertion-failed
diff --git a/lisp/emacs-lisp/cl-seq.el b/lisp/emacs-lisp/cl-seq.el
index 21aec6cdfc..ed27b7c7d0 100644
--- a/lisp/emacs-lisp/cl-seq.el
+++ b/lisp/emacs-lisp/cl-seq.el
@@ -116,6 +116,16 @@
(defun cl-reduce (cl-func cl-seq &rest cl-keys)
"Reduce two-argument FUNCTION across SEQ.
\nKeywords supported: :start :end :from-end :initial-value :key
+
+Return the result of calling FUNCTION with the first and the
+second element of SEQ, then calling FUNCTION with that result and
+the third element of SEQ, then with that result and the fourth
+element of SEQ, etc.
+
+If :INITIAL-VALUE is specified, it is added to the front of SEQ.
+If SEQ is empty, return :INITIAL-VALUE and FUNCTION is not
+called.
+
\n(fn FUNCTION SEQ [KEYWORD VALUE]...)"
(cl--parsing-keywords (:from-end (:start 0) :end :initial-value :key) ()
(or (listp cl-seq) (setq cl-seq (append cl-seq nil)))
@@ -134,24 +144,24 @@
cl-accum)))
;;;###autoload
-(defun cl-fill (seq item &rest cl-keys)
+(defun cl-fill (cl-seq cl-item &rest cl-keys)
"Fill the elements of SEQ with ITEM.
\nKeywords supported: :start :end
\n(fn SEQ ITEM [KEYWORD VALUE]...)"
(cl--parsing-keywords ((:start 0) :end) ()
- (if (listp seq)
- (let ((p (nthcdr cl-start seq))
+ (if (listp cl-seq)
+ (let ((p (nthcdr cl-start cl-seq))
(n (if cl-end (- cl-end cl-start) 8000000)))
(while (and p (>= (setq n (1- n)) 0))
- (setcar p item)
+ (setcar p cl-item)
(setq p (cdr p))))
- (or cl-end (setq cl-end (length seq)))
- (if (and (= cl-start 0) (= cl-end (length seq)))
- (fillarray seq item)
+ (or cl-end (setq cl-end (length cl-seq)))
+ (if (and (= cl-start 0) (= cl-end (length cl-seq)))
+ (fillarray cl-seq cl-item)
(while (< cl-start cl-end)
- (aset seq cl-start item)
+ (aset cl-seq cl-start cl-item)
(setq cl-start (1+ cl-start)))))
- seq))
+ cl-seq))
;;;###autoload
(defun cl-replace (cl-seq1 cl-seq2 &rest cl-keys)
@@ -337,6 +347,7 @@ This is a destructive function; it reuses the storage of SEQ whenever possible.
(defun cl--delete-duplicates (cl-seq cl-keys cl-copy)
(if (listp cl-seq)
(cl--parsing-keywords
+ ;; We need to parse :if, otherwise `cl-if' is unbound.
(:test :test-not :key (:start 0) :end :from-end :if)
()
(if cl-from-end
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index e48376bbab..c3d3feae87 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -154,7 +154,6 @@
every
some
mapcon
- mapcan
mapl
maplist
map
@@ -365,7 +364,7 @@ The two cases that are handled are:
`(list 'lambda '(&rest --cl-rest--)
,@(cl-sublis sub (nreverse decls))
(list 'apply
- (list 'quote
+ (list 'function
#'(lambda ,(append new (cadr f))
,@(cl-sublis sub body)))
,@(nconc (mapcar (lambda (x) `(list 'quote ,x))
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el
index a615f9a585..0f7691af0f 100644
--- a/lisp/emacs-lisp/derived.el
+++ b/lisp/emacs-lisp/derived.el
@@ -137,6 +137,9 @@ BODY can start with a bunch of keyword arguments. The following keyword
:abbrev-table TABLE
Use TABLE instead of the default (CHILD-abbrev-table).
A nil value means to simply use the same abbrev-table as the parent.
+:after-hook FORM
+ A single lisp form which is evaluated after the mode hooks have been
+ run. It should not be quoted.
Here is how you could define LaTeX-Thesis mode as a variant of LaTeX mode:
@@ -184,7 +187,8 @@ See Info node `(elisp)Derived Modes' for more details."
(declare-abbrev t)
(declare-syntax t)
(hook (derived-mode-hook-name child))
- (group nil))
+ (group nil)
+ (after-hook nil))
;; Process the keyword args.
(while (keywordp (car body))
@@ -192,6 +196,7 @@ See Info node `(elisp)Derived Modes' for more details."
(`:group (setq group (pop body)))
(`:abbrev-table (setq abbrev (pop body)) (setq declare-abbrev nil))
(`:syntax-table (setq syntax (pop body)) (setq declare-syntax nil))
+ (`:after-hook (setq after-hook (pop body)))
(_ (pop body))))
(setq docstring (derived-mode-make-docstring
@@ -272,7 +277,11 @@ No problems result if this variable is not bound.
,@body
)
;; Run the hooks, if any.
- (run-mode-hooks ',hook)))))
+ (run-mode-hooks ',hook)
+ ,@(when after-hook
+ `((if delay-mode-hooks
+ (push ',after-hook delayed-after-hook-forms)
+ ,after-hook)))))))
;; PUBLIC: find the ultimate class of a derived mode.
@@ -344,7 +353,7 @@ which more-or-less shadow%s %s's corresponding table%s."
(format "`%s' " parent))
"might have run,\nthis mode "))
(format "runs the hook `%s'" hook)
- ", as the final step\nduring initialization.")))
+ ", as the final or penultimate step\nduring initialization.")))
(unless (string-match "\\\\[{[]" docstring)
;; And don't forget to put the mode's keymap.
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 05229d2df0..38295c302e 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -108,9 +108,10 @@ Optional LIGHTER is displayed in the mode line when the mode is on.
Optional KEYMAP is the default keymap bound to the mode keymap.
If non-nil, it should be a variable name (whose value is a keymap),
or an expression that returns either a keymap or a list of
- arguments for `easy-mmode-define-keymap'. If you supply a KEYMAP
- argument that is not a symbol, this macro defines the variable
- MODE-map and gives it the value that KEYMAP specifies.
+ (KEY . BINDING) pairs where KEY and BINDING are suitable for
+ `define-key'. If you supply a KEYMAP argument that is not a
+ symbol, this macro defines the variable MODE-map and gives it
+ the value that KEYMAP specifies.
BODY contains code to execute each time the mode is enabled or disabled.
It is executed after toggling the mode, and before running MODE-hook.
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index e8484fa1f9..c283c168b5 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -233,6 +233,12 @@ If the result is non-nil, then break. Errors are ignored."
:type 'number
:group 'edebug)
+(defcustom edebug-sit-on-break t
+ "Whether or not to pause for `edebug-sit-for-seconds' on reaching a break."
+ :type 'boolean
+ :group 'edebug
+ :version "25.2")
+
;;; Form spec utilities.
(defun get-edebug-spec (symbol)
@@ -2489,6 +2495,7 @@ MSG is printed after `::::} '."
(progn
;; Display result of previous evaluation.
(if (and edebug-break
+ edebug-sit-on-break
(not (eq edebug-execution-mode 'Continue-fast)))
(sit-for edebug-sit-for-seconds)) ; Show message.
(edebug-previous-result)))
diff --git a/lisp/emacs-lisp/eieio-compat.el b/lisp/emacs-lisp/eieio-compat.el
index 6aba8a3acb..413b94f01a 100644
--- a/lisp/emacs-lisp/eieio-compat.el
+++ b/lisp/emacs-lisp/eieio-compat.el
@@ -266,7 +266,7 @@ Summary:
;; Local Variables:
-;; generated-autoload-file: "eieio-core.el"
+;; generated-autoload-file: "eieio-loaddefs.el"
;; End:
(provide 'eieio-compat)
diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el
index 223c2a69a6..52577adefa 100644
--- a/lisp/emacs-lisp/eieio-core.el
+++ b/lisp/emacs-lisp/eieio-core.el
@@ -33,6 +33,7 @@
(require 'cl-lib)
(require 'pcase)
+(require 'eieio-loaddefs)
;;;
;; A few functions that are better in the official EIEIO src, but
@@ -756,9 +757,7 @@ Argument FN is the function calling this verifier."
;; The slot-missing method is a cool way of allowing an object author
;; to intercept missing slot definitions. Since it is also the LAST
;; thing called in this fn, its return value would be retrieved.
- (slot-missing obj slot 'oref)
- ;;(signal 'invalid-slot-name (list (eieio-object-name obj) slot))
- )
+ (slot-missing obj slot 'oref))
(cl-check-type obj eieio-object)
(eieio-barf-if-slot-unbound (aref obj c) obj slot 'oref))))
@@ -780,9 +779,7 @@ Fills in OBJ's SLOT with its default value."
;; Oref that slot.
(aref (eieio--class-class-allocation-values cl)
c)
- (slot-missing obj slot 'oref-default)
- ;;(signal 'invalid-slot-name (list (class-name cl) slot))
- )
+ (slot-missing obj slot 'oref-default))
(eieio-barf-if-slot-unbound
(let ((val (cl--slot-descriptor-initform
(aref (eieio--class-slots cl)
@@ -822,9 +819,7 @@ Fills in OBJ's SLOT with VALUE."
(aset (eieio--class-class-allocation-values class)
c value))
;; See oref for comment on `slot-missing'
- (slot-missing obj slot 'oset value)
- ;;(signal 'invalid-slot-name (list (eieio-object-name obj) slot))
- )
+ (slot-missing obj slot 'oset value))
(eieio--validate-slot-value class c value slot)
(aset obj c value))))
@@ -1070,6 +1065,7 @@ method invocation orders of the involved classes."
(eieio--class-precedence-list (symbol-value tag))))))
(cl-defmethod cl-generic-generalizers :extra "class" (specializer)
+ "Support for dispatch on types defined by EIEIO's `defclass'."
;; CLHS says:
;; A class must be defined before it can be used as a parameter
;; specializer in a defmethod form.
@@ -1098,100 +1094,10 @@ method invocation orders of the involved classes."
#'eieio--generic-subclass-specializers)
(cl-defmethod cl-generic-generalizers ((_specializer (head subclass)))
+ "Support for (subclass CLASS) specializers.
+These match if the argument is the name of a subclass of CLASS."
(list eieio--generic-subclass-generalizer))
-
-;;;### (autoloads nil "eieio-compat" "eieio-compat.el" "dba4205b1a0d7133f1311d975b4d0ebe")
-;;; Generated autoloads from eieio-compat.el
-
-(autoload 'eieio--defalias "eieio-compat" "\
-Like `defalias', but with less side-effects.
-More specifically, it has no side-effects at all when the new function
-definition is the same (`eq') as the old one.
-
-\(fn NAME BODY)" nil nil)
-
-(autoload 'defgeneric "eieio-compat" "\
-Create a generic function METHOD.
-DOC-STRING is the base documentation for this class. A generic
-function has no body, as its purpose is to decide which method body
-is appropriate to use. Uses `defmethod' to create methods, and calls
-`defgeneric' for you. With this implementation the ARGS are
-currently ignored. You can use `defgeneric' to apply specialized
-top level documentation to a method.
-
-\(fn METHOD ARGS &optional DOC-STRING)" nil t)
-
-(function-put 'defgeneric 'doc-string-elt '3)
-
-(make-obsolete 'defgeneric 'cl-defgeneric '"25.1")
-
-(autoload 'defmethod "eieio-compat" "\
-Create a new METHOD through `defgeneric' with ARGS.
-
-The optional second argument KEY is a specifier that
-modifies how the method is called, including:
- :before - Method will be called before the :primary
- :primary - The default if not specified
- :after - Method will be called after the :primary
- :static - First arg could be an object or class
-The next argument is the ARGLIST. The ARGLIST specifies the arguments
-to the method as with `defun'. The first argument can have a type
-specifier, such as:
- ((VARNAME CLASS) ARG2 ...)
-where VARNAME is the name of the local variable for the method being
-created. The CLASS is a class symbol for a class made with `defclass'.
-A DOCSTRING comes after the ARGLIST, and is optional.
-All the rest of the args are the BODY of the method. A method will
-return the value of the last form in the BODY.
-
-Summary:
-
- (defmethod mymethod [:before | :primary | :after | :static]
- ((typearg class-name) arg2 &optional opt &rest rest)
- \"doc-string\"
- body)
-
-\(fn METHOD &rest ARGS)" nil t)
-
-(function-put 'defmethod 'doc-string-elt '3)
-
-(make-obsolete 'defmethod 'cl-defmethod '"25.1")
-
-(autoload 'eieio--defgeneric-init-form "eieio-compat" "\
-
-
-\(fn METHOD DOC-STRING)" nil nil)
-
-(autoload 'eieio--defmethod "eieio-compat" "\
-
-
-\(fn METHOD KIND ARGCLASS CODE)" nil nil)
-
-(autoload 'eieio-defmethod "eieio-compat" "\
-Obsolete work part of an old version of the `defmethod' macro.
-
-\(fn METHOD ARGS)" nil nil)
-
-(make-obsolete 'eieio-defmethod 'cl-defmethod '"24.1")
-
-(autoload 'eieio-defgeneric "eieio-compat" "\
-Obsolete work part of an old version of the `defgeneric' macro.
-
-\(fn METHOD DOC-STRING)" nil nil)
-
-(make-obsolete 'eieio-defgeneric 'cl-defgeneric '"24.1")
-
-(autoload 'eieio-defclass "eieio-compat" "\
-
-
-\(fn CNAME SUPERCLASSES SLOTS OPTIONS)" nil nil)
-
-(make-obsolete 'eieio-defclass 'eieio-defclass-internal '"25.1")
-
-;;;***
-
-
(provide 'eieio-core)
;;; eieio-core.el ends here
diff --git a/lisp/emacs-lisp/eieio-custom.el b/lisp/emacs-lisp/eieio-custom.el
index 0ba1eba4f4..d2d87ea153 100644
--- a/lisp/emacs-lisp/eieio-custom.el
+++ b/lisp/emacs-lisp/eieio-custom.el
@@ -473,7 +473,7 @@ Return the symbol for the group, or nil"
(provide 'eieio-custom)
;; Local variables:
-;; generated-autoload-file: "eieio.el"
+;; generated-autoload-file: "eieio-loaddefs.el"
;; End:
;;; eieio-custom.el ends here
diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el
index c1f8297b4a..2f1d69f78f 100644
--- a/lisp/emacs-lisp/eieio-opt.el
+++ b/lisp/emacs-lisp/eieio-opt.el
@@ -349,7 +349,7 @@ INDENT is the current indentation level."
(provide 'eieio-opt)
;; Local variables:
-;; generated-autoload-file: "eieio.el"
+;; generated-autoload-file: "eieio-loaddefs.el"
;; End:
;;; eieio-opt.el ends here
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index f045e267ff..80ac8eff32 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -678,7 +678,8 @@ This class is not stored in the `parent' slot of a class vector."
(setq eieio-default-superclass (cl--find-class 'eieio-default-superclass))
-(defalias 'standard-class 'eieio-default-superclass)
+(define-obsolete-function-alias 'standard-class
+ 'eieio-default-superclass "25.2")
(cl-defgeneric make-instance (class &rest initargs)
"Make a new instance of CLASS based on INITARGS.
@@ -765,11 +766,7 @@ dynamically set from SLOTS."
;; Shared initialize will parse our slots for us.
(shared-initialize this slots))
-(cl-defgeneric slot-missing (object slot-name operation &optional new-value)
- "Method invoked when an attempt to access a slot in OBJECT fails.")
-
-(cl-defmethod slot-missing ((object eieio-default-superclass) slot-name
- _operation &optional _new-value)
+(cl-defgeneric slot-missing (object slot-name _operation &optional _new-value)
"Method invoked when an attempt to access a slot in OBJECT fails.
SLOT-NAME is the name of the failed slot, OPERATION is the type of access
that was requested, and optional NEW-VALUE is the value that was desired
@@ -777,8 +774,9 @@ to be set.
This method is called from `oref', `oset', and other functions which
directly reference slots in EIEIO objects."
- (signal 'invalid-slot-name (list (eieio-object-name object)
- slot-name)))
+ (signal 'invalid-slot-name
+ (list (if (eieio-object-p object) (eieio-object-name object) object)
+ slot-name)))
(cl-defgeneric slot-unbound (object class slot-name fn)
"Slot unbound is invoked during an attempt to reference an unbound slot.")
@@ -815,22 +813,19 @@ first and modify the returned object.")
(if params (shared-initialize nobj params))
nobj))
-(cl-defgeneric destructor (this &rest params)
- "Destructor for cleaning up any dynamic links to our object.")
-
-(cl-defmethod destructor ((_this eieio-default-superclass) &rest _params)
- "Destructor for cleaning up any dynamic links to our object.
-Argument THIS is the object being destroyed. PARAMS are additional
-ignored parameters."
+(cl-defgeneric destructor (_this &rest _params)
+ "Destructor for cleaning up any dynamic links to our object."
+ (declare (obsolete nil "25.2"))
;; No cleanup... yet.
- )
+ nil)
-(cl-defgeneric object-print (this &rest strings)
- "Pretty printer for object THIS. Call function `object-name' with STRINGS.
+(cl-defgeneric object-print (this &rest _strings)
+ "Pretty printer for object THIS.
It is sometimes useful to put a summary of the object into the
default #<notation> string when using EIEIO browsing tools.
-Implement this method to customize the summary.")
+Implement this method to customize the summary."
+ (format "%S" this))
(cl-defmethod object-print ((this eieio-default-superclass) &rest strings)
"Pretty printer for object THIS. Call function `object-name' with STRINGS.
@@ -938,11 +933,12 @@ this object."
;;; Unimplemented functions from CLOS
;;
-(defun change-class (_obj _class)
+(defun eieio-change-class (_obj _class)
"Change the class of OBJ to type CLASS.
This may create or delete slots, but does not affect the return value
of `eq'."
(error "EIEIO: `change-class' is unimplemented"))
+(define-obsolete-function-alias 'change-class 'eieio-change-class "25.2")
;; Hook ourselves into help system for describing classes and methods.
;; FIXME: This is not actually needed any more since we can click on the
@@ -970,41 +966,6 @@ variable PRINT-FUNCTION. Optional argument NOESCAPE is passed to
(advice-add 'edebug-prin1-to-string
:around #'eieio-edebug-prin1-to-string)
-
-;;; Start of automatically extracted autoloads.
-
-;;;### (autoloads nil "eieio-custom" "eieio-custom.el" "e8d466f8eee341f3da967c2931b28043")
-;;; Generated autoloads from eieio-custom.el
-
-(autoload 'customize-object "eieio-custom" "\
-Customize OBJ in a custom buffer.
-Optional argument GROUP is the sub-group of slots to display.
-
-\(fn OBJ &optional GROUP)" nil nil)
-
-;;;***
-
-;;;### (autoloads nil "eieio-opt" "eieio-opt.el" "0b9c6be48520da2085812f6e7fed9792")
-;;; Generated autoloads from eieio-opt.el
-
-(autoload 'eieio-browse "eieio-opt" "\
-Create an object browser window to show all objects.
-If optional ROOT-CLASS, then start with that, otherwise start with
-variable `eieio-default-superclass'.
-
-\(fn &optional ROOT-CLASS)" t nil)
-
-(define-obsolete-function-alias 'eieio-help-class 'cl--describe-class "25.1")
-
-(autoload 'eieio-help-constructor "eieio-opt" "\
-Describe CTR if it is a class constructor.
-
-\(fn CTR)" nil nil)
-
-;;;***
-
-;;; End of automatically extracted autoloads.
-
(provide 'eieio)
;;; eieio ends here
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index 096102ae7e..6c2f869f26 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -197,7 +197,10 @@ expression point is on."
(t
(kill-local-variable 'eldoc-message-commands)
(remove-hook 'post-command-hook 'eldoc-schedule-timer t)
- (remove-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area t))))
+ (remove-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area t)
+ (when eldoc-timer
+ (cancel-timer eldoc-timer)
+ (setq eldoc-timer nil)))))
;;;###autoload
(define-minor-mode global-eldoc-mode
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index 7a914da397..0308c9cd37 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -1470,7 +1470,7 @@ this exits Emacs, with status as per `ert-run-tests-batch-and-exit'."
(user-error "This function is only for use in batch mode"))
(let ((nlogs (length command-line-args-left))
(ntests 0) (nrun 0) (nexpected 0) (nunexpected 0) (nskipped 0)
- nnotrun logfile notests badtests unexpected)
+ nnotrun logfile notests badtests unexpected skipped)
(with-temp-buffer
(while (setq logfile (pop command-line-args-left))
(erase-buffer)
@@ -1490,9 +1490,10 @@ Ran \\([0-9]+\\) tests, \\([0-9]+\\) results as expected\
(push logfile unexpected)
(setq nunexpected (+ nunexpected
(string-to-number (match-string 4)))))
- (if (match-string 5)
- (setq nskipped (+ nskipped
- (string-to-number (match-string 5)))))))))
+ (when (match-string 5)
+ (push logfile skipped)
+ (setq nskipped (+ nskipped
+ (string-to-number (match-string 5)))))))))
(setq nnotrun (- ntests nrun))
(message "\nSUMMARY OF TEST RESULTS")
(message "-----------------------")
@@ -1516,6 +1517,26 @@ Ran \\([0-9]+\\) tests, \\([0-9]+\\) results as expected\
(when unexpected
(message "%d files contained unexpected results:" (length unexpected))
(mapc (lambda (l) (message " %s" l)) unexpected))
+ ;; More details on hydra, where the logs are harder to get to.
+ (when (and (getenv "NIX_STORE")
+ (not (zerop (+ nunexpected nskipped))))
+ (message "\nDETAILS")
+ (message "-------")
+ (with-temp-buffer
+ (dolist (x (list (list skipped "skipped" "SKIPPED")
+ (list unexpected "unexpected" "FAILED")))
+ (mapc (lambda (l)
+ (erase-buffer)
+ (insert-file-contents l)
+ (message "%s:" l)
+ (when (re-search-forward (format "^[ \t]*[0-9]+ %s results:"
+ (nth 1 x))
+ nil t)
+ (while (and (zerop (forward-line 1))
+ (looking-at (format "^[ \t]*%s" (nth 2 x))))
+ (message "%s" (buffer-substring (line-beginning-position)
+ (line-end-position))))))
+ (car x)))))
(kill-emacs (cond ((or notests badtests (not (zerop nnotrun))) 2)
(unexpected 1)
(t 0)))))
@@ -2460,7 +2481,7 @@ To be used in the ERT results buffer."
stats)
for end-time across (ert--stats-test-end-times stats)
collect (list test
- (float-time (subtract-time
+ (float-time (time-subtract
end-time start-time))))))
(setq data (sort data (lambda (a b)
(> (cl-second a) (cl-second b)))))
diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el
index 43bcb420c3..cbb134e95d 100644
--- a/lisp/emacs-lisp/find-func.el
+++ b/lisp/emacs-lisp/find-func.el
@@ -43,6 +43,8 @@
;;; Code:
+(require 'seq)
+
;;; User variables:
(defgroup find-function nil
@@ -182,15 +184,15 @@ See the functions `find-function' and `find-variable'."
LIBRARY should be a string (the name of the library)."
;; If the library is byte-compiled, try to find a source library by
;; the same name.
- (if (string-match "\\.el\\(c\\(\\..*\\)?\\)\\'" library)
- (setq library (replace-match "" t t library)))
+ (when (string-match "\\.el\\(c\\(\\..*\\)?\\)\\'" library)
+ (setq library (replace-match "" t t library)))
(or
(locate-file library
- (or find-function-source-path load-path)
- (find-library-suffixes))
+ (or find-function-source-path load-path)
+ (find-library-suffixes))
(locate-file library
- (or find-function-source-path load-path)
- load-file-rep-suffixes)
+ (or find-function-source-path load-path)
+ load-file-rep-suffixes)
(when (file-name-absolute-p library)
(let ((rel (find-library--load-name library)))
(when rel
@@ -201,8 +203,44 @@ LIBRARY should be a string (the name of the library)."
(locate-file rel
(or find-function-source-path load-path)
load-file-rep-suffixes)))))
+ (find-library--from-load-path library)
(error "Can't find library %s" library)))
+(defun find-library--from-load-path (library)
+ ;; In `load-history', the file may be ".elc", ".el", ".el.gz", and
+ ;; LIBRARY may be "foo.el" or "foo", so make sure that we get all
+ ;; potential matches, and then see whether any of them lead us to an
+ ;; ".el" or an ".el.gz" file.
+ (let* ((elc-regexp "\\.el\\(c\\(\\..*\\)?\\)\\'")
+ (suffix-regexp
+ (concat "\\("
+ (mapconcat 'regexp-quote (find-library-suffixes) "\\'\\|")
+ "\\|" elc-regexp "\\)\\'"))
+ (potentials
+ (mapcar
+ (lambda (entry)
+ (if (string-match suffix-regexp (car entry))
+ (replace-match "" t t (car entry))
+ (car entry)))
+ (seq-filter
+ (lambda (entry)
+ (string-match
+ (concat "\\`"
+ (regexp-quote
+ (replace-regexp-in-string suffix-regexp "" library))
+ suffix-regexp)
+ (file-name-nondirectory (car entry))))
+ load-history)))
+ result)
+ (dolist (file potentials)
+ (dolist (suffix (find-library-suffixes))
+ (when (not result)
+ (cond ((file-exists-p file)
+ (setq result file))
+ ((file-exists-p (concat file suffix))
+ (setq result (concat file suffix)))))))
+ result))
+
(defvar find-function-C-source-directory
(let ((dir (expand-file-name "src" source-directory)))
(if (file-accessible-directory-p dir) dir))
@@ -255,9 +293,12 @@ TYPE should be nil to find a function, or `defvar' to find a variable."
(cons (current-buffer) (match-beginning 0))))
;;;###autoload
-(defun find-library (library)
+(defun find-library (library &optional other-window)
"Find the Emacs Lisp source of LIBRARY.
-LIBRARY should be a string (the name of the library)."
+LIBRARY should be a string (the name of the library). If the
+optional OTHER-WINDOW argument (i.e., the command argument) is
+specified, pop to a different window before displaying the
+buffer."
(interactive
(let* ((dirs (or find-function-source-path load-path))
(suffixes (find-library-suffixes))
@@ -279,11 +320,17 @@ LIBRARY should be a string (the name of the library)."
(when (and def (not (test-completion def table)))
(setq def nil))
(list
- (completing-read (if def (format "Library name (default %s): " def)
+ (completing-read (if def
+ (format "Library name (default %s): " def)
"Library name: ")
- table nil nil nil nil def))))
- (let ((buf (find-file-noselect (find-library-name library))))
- (condition-case nil (switch-to-buffer buf) (error (pop-to-buffer buf)))))
+ table nil nil nil nil def)
+ current-prefix-arg)))
+ (prog1
+ (funcall (if other-window
+ 'pop-to-buffer
+ 'pop-to-buffer-same-window)
+ (find-file-noselect (find-library-name library)))
+ (run-hooks 'find-function-after-hook)))
;;;###autoload
(defun find-function-search-for-symbol (symbol type library)
diff --git a/lisp/emacs-lisp/let-alist.el b/lisp/emacs-lisp/let-alist.el
index e400b49903..3507a39543 100644
--- a/lisp/emacs-lisp/let-alist.el
+++ b/lisp/emacs-lisp/let-alist.el
@@ -2,13 +2,16 @@
;; Copyright (C) 2014-2016 Free Software Foundation, Inc.
-;; Author: Artur Malabarba <bruce.connor.am@gmail.com>
-;; Maintainer: Artur Malabarba <bruce.connor.am@gmail.com>
+;; Author: Artur Malabarba <emacs@endlessparentheses.com>
+;; Package-Requires: ((emacs "24.1"))
;; Version: 1.0.4
;; Keywords: extensions lisp
;; Prefix: let-alist
;; Separator: -
+;; This is an Elpa :core package. Don't use functionality that is not
+;; compatible with Emacs 24.1.
+
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
@@ -134,7 +137,7 @@ displayed in the example above."
(let ((var (make-symbol "alist")))
`(let ((,var ,alist))
(let ,(mapcar (lambda (x) `(,(car x) ,(let-alist--access-sexp (car x) var)))
- (delete-dups (let-alist--deep-dot-search body)))
+ (delete-dups (let-alist--deep-dot-search body)))
,@body))))
(provide 'let-alist)
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index cfec05cd01..a277d7a668 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -168,6 +168,8 @@
(defvar lisp-doc-string-elt-property 'doc-string-elt
"The symbol property that holds the docstring position info.")
+(defconst lisp-prettify-symbols-alist '(("lambda" . ?λ))
+ "Alist of symbol/\"pretty\" characters to be displayed.")
;;;; Font-lock support.
@@ -594,7 +596,7 @@ font-lock keywords will not be case sensitive."
(font-lock-extra-managed-props help-echo)
(font-lock-syntactic-face-function
. lisp-font-lock-syntactic-face-function)))
- (setq-local prettify-symbols-alist lisp--prettify-symbols-alist)
+ (setq-local prettify-symbols-alist lisp-prettify-symbols-alist)
(setq-local electric-pair-skip-whitespace 'chomp)
(setq-local electric-pair-open-newline-between-pairs nil))
@@ -655,9 +657,6 @@ font-lock keywords will not be case sensitive."
:type 'hook
:group 'lisp)
-(defconst lisp--prettify-symbols-alist
- '(("lambda" . ?λ)))
-
;;; Generic Lisp mode.
(defvar lisp-mode-map
@@ -1217,8 +1216,15 @@ and initial semicolons."
;;
;; The `fill-column' is temporarily bound to
;; `emacs-lisp-docstring-fill-column' if that value is an integer.
- (let ((paragraph-start (concat paragraph-start
- "\\|\\s-*\\([(;:\"]\\|`(\\|#'(\\)"))
+ (let ((paragraph-start
+ (concat paragraph-start
+ (format "\\|\\s-*\\([(;%s\"]\\|`(\\|#'(\\)"
+ ;; If we're inside a string (like the doc
+ ;; string), don't consider a colon to be
+ ;; a paragraph-start character.
+ (if (nth 3 (syntax-ppss))
+ ""
+ ":"))))
(paragraph-separate
(concat paragraph-separate "\\|\\s-*\".*[,\\.]$"))
(fill-column (if (and (integerp emacs-lisp-docstring-fill-column)
diff --git a/lisp/emacs-lisp/map.el b/lisp/emacs-lisp/map.el
index ba15a65f5e..0a0f64a076 100644
--- a/lisp/emacs-lisp/map.el
+++ b/lisp/emacs-lisp/map.el
@@ -4,7 +4,7 @@
;; Author: Nicolas Petton <nicolas@petton.fr>
;; Keywords: convenience, map, hash-table, alist, array
-;; Version: 1.0
+;; Version: 1.1
;; Package: map
;; Maintainer: emacs-devel@gnu.org
@@ -43,6 +43,7 @@
;;; Code:
(require 'seq)
+(eval-when-compile (require 'cl-lib))
(pcase-defmacro map (&rest args)
"Build a `pcase' pattern matching map elements.
@@ -78,14 +79,14 @@ MAP can be a list, hash-table or array."
(eval-when-compile
(defmacro map--dispatch (map-var &rest args)
- "Evaluate one of the forms specified by ARGS based on the type of MAP.
+ "Evaluate one of the forms specified by ARGS based on the type of MAP-VAR.
The following keyword types are meaningful: `:list',
`:hash-table' and `:array'.
-An error is thrown if MAP is neither a list, hash-table nor array.
+An error is thrown if MAP-VAR is neither a list, hash-table nor array.
-Return RESULT if non-nil or the result of evaluation of the form."
+Returns the result of evaluating the form associated with MAP-VAR's type."
(declare (debug t) (indent 1))
`(cond ((listp ,map-var) ,(plist-get args :list))
((hash-table-p ,map-var) ,(plist-get args :hash-table))
@@ -200,6 +201,16 @@ MAP can be a list, hash-table or array."
function
map))
+(defun map-do (function map)
+ "Apply FUNCTION to each element of MAP and return nil.
+FUNCTION.is called with two arguments, the key and the value."
+ (funcall (map--dispatch map
+ :list #'map--do-alist
+ :hash-table #'maphash
+ :array #'map--do-array)
+ function
+ map))
+
(defun map-keys-apply (function map)
"Return the result of applying FUNCTION to each key of MAP.
@@ -249,7 +260,7 @@ MAP can be a list, hash-table or array."
:hash-table (zerop (hash-table-count map))))
(defun map-contains-key (map key &optional testfn)
- "Return non-nil if MAP contain KEY, nil otherwise.
+ "If MAP contain KEY return KEY, nil otherwise.
Equality is defined by TESTFN if non-nil or by `equal' if nil.
MAP can be a list, hash-table or array."
@@ -282,27 +293,33 @@ MAP can be a list, hash-table or array."
"Merge into a map of type TYPE all the key/value pairs in MAPS.
MAP can be a list, hash-table or array."
- (let (result)
+ (let ((result (map-into (pop maps) type)))
(while maps
+ ;; FIXME: When `type' is `list', we get an O(N^2) behavior.
+ ;; For small tables, this is fine, but for large tables, we
+ ;; should probably use a hash-table internally which we convert
+ ;; to an alist in the end.
(map-apply (lambda (key value)
- (setf (map-elt result key) value))
- (pop maps)))
- (map-into result type)))
+ (setf (map-elt result key) value))
+ (pop maps)))
+ result))
(defun map-merge-with (type function &rest maps)
"Merge into a map of type TYPE all the key/value pairs in MAPS.
When two maps contain the same key, call FUNCTION on the two
values and use the value returned by it.
MAP can be a list, hash-table or array."
- (let (result)
+ (let ((result (map-into (pop maps) type))
+ (not-found (cons nil nil)))
(while maps
(map-apply (lambda (key value)
- (setf (map-elt result key)
- (if (map-contains-key result key)
- (funcall function (map-elt result key) value)
- value)))
- (pop maps)))
- (map-into result type)))
+ (cl-callf (lambda (old)
+ (if (eq old not-found)
+ value
+ (funcall function old value)))
+ (map-elt result key not-found)))
+ (pop maps)))
+ result))
(defun map-into (map type)
"Convert the map MAP into a map of type TYPE.
@@ -347,6 +364,20 @@ MAP can be a list, hash-table or array."
(setq index (1+ index))))
map)))
+(defun map--do-alist (function alist)
+ "Private function used to iterate over ALIST using FUNCTION."
+ (seq-do (lambda (pair)
+ (funcall function
+ (car pair)
+ (cdr pair)))
+ alist))
+
+(defun map--do-array (function array)
+ "Private function used to iterate over ARRAY using FUNCTION."
+ (seq-do-indexed (lambda (elt index)
+ (funcall function index elt))
+ array))
+
(defun map--into-hash-table (map)
"Convert MAP into a hash-table."
(let ((ht (make-hash-table :size (map-length map)
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index e4bb561a87..f669c31e79 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -150,6 +150,7 @@
(require 'tabulated-list)
(require 'macroexp)
+(require 'url-handlers)
(defgroup package nil
"Manager for Emacs Lisp packages."
@@ -302,7 +303,7 @@ contrast, `package-user-dir' contains packages for personal use."
:version "24.1")
(declare-function epg-find-configuration "epg-config"
- (protocol &optional force))
+ (protocol &optional no-cache program-alist))
(defcustom package-check-signature
(if (and (require 'epg-config)
@@ -907,12 +908,15 @@ untar into a directory named DIR; otherwise, signal an error."
file)
(defvar generated-autoload-file)
+(defvar autoload-timestamps)
(defvar version-control)
(defun package-generate-autoloads (name pkg-dir)
(let* ((auto-name (format "%s-autoloads.el" name))
;;(ignore-name (concat name "-pkg.el"))
(generated-autoload-file (expand-file-name auto-name pkg-dir))
+ ;; We don't need 'em, and this makes the output reproducible.
+ (autoload-timestamps nil)
;; Silence `autoload-generate-file-autoloads'.
(noninteractive inhibit-message)
(backup-inhibited t)
@@ -1077,6 +1081,8 @@ The return result is a `package-desc'."
(setq files nil)
;; set the 'dir kind,
(setf (package-desc-kind info) 'dir))))
+ (unless info
+ (error "No .el files with package headers in `%s'" default-directory))
;; and return the info.
info))))
@@ -2304,7 +2310,7 @@ Otherwise no newline is inserted."
(insert "\n")
(unless (and pkg-dir (not archive)) ; Installed pkgs don't have archive.
(package--print-help-section "Archive"
- (or archive "n/a") "\n"))
+ (or archive "n/a")))
(and version
(package--print-help-section "Version"
(package-version-join version)))
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 7e164c0fe5..0b8dddfacc 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -509,6 +509,7 @@ MATCH is the pattern that needs to be matched, of the form:
(numberp . stringp)
(numberp . byte-code-function-p)
(consp . arrayp)
+ (consp . atom)
(consp . vectorp)
(consp . stringp)
(consp . byte-code-function-p)
diff --git a/lisp/emacs-lisp/radix-tree.el b/lisp/emacs-lisp/radix-tree.el
new file mode 100644
index 0000000000..8146bb3c28
--- /dev/null
+++ b/lisp/emacs-lisp/radix-tree.el
@@ -0,0 +1,246 @@
+;;; radix-tree.el --- A simple library of radix trees -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+;; Keywords:
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; There are many different options for how to represent radix trees
+;; in Elisp. Here I chose a very simple one. A radix-tree can be either:
+;; - a node, of the form ((PREFIX . PTREE) . RTREE) where PREFIX is a string
+;; meaning that everything that starts with PREFIX is in PTREE,
+;; and everything else in RTREE. It also has the property that
+;; everything that starts with the first letter of PREFIX but not with
+;; that whole PREFIX is not in RTREE (i.e. is not in the tree at all).
+;; - anything else is taken as the value to associate with the empty string.
+;; So every node is basically an (improper) alist where each mapping applies
+;; to a different leading letter.
+;;
+;; The main downside of this representation is that the lookup operation
+;; is slower because each level of the tree is an alist rather than some kind
+;; of array, so every level's lookup is O(N) rather than O(1). We could easily
+;; solve this by using char-tables instead of alists, but that would make every
+;; level take up a lot more memory, and it would make the resulting
+;; data structure harder to read (by a human) when printed out.
+
+;;; Code:
+
+(defun radix-tree--insert (tree key val i)
+ (pcase tree
+ (`((,prefix . ,ptree) . ,rtree)
+ (let* ((ni (+ i (length prefix)))
+ (cmp (compare-strings prefix nil nil key i ni)))
+ (if (eq t cmp)
+ (let ((nptree (radix-tree--insert ptree key val ni)))
+ `((,prefix . ,nptree) . ,rtree))
+ (let ((n (if (< cmp 0) (- -1 cmp) (- cmp 1))))
+ (if (zerop n)
+ (let ((nrtree (radix-tree--insert rtree key val i)))
+ `((,prefix . ,ptree) . ,nrtree))
+ (let* ((nprefix (substring prefix 0 n))
+ (kprefix (substring key (+ i n)))
+ (pprefix (substring prefix n))
+ (ktree (if (equal kprefix "") val
+ `((,kprefix . ,val)))))
+ `((,nprefix
+ . ((,pprefix . ,ptree) . ,ktree))
+ . ,rtree)))))))
+ (_
+ (if (= (length key) i) val
+ (let ((prefix (substring key i)))
+ `((,prefix . ,val) . ,tree))))))
+
+(defun radix-tree--remove (tree key i)
+ (pcase tree
+ (`((,prefix . ,ptree) . ,rtree)
+ (let* ((ni (+ i (length prefix)))
+ (cmp (compare-strings prefix nil nil key i ni)))
+ (if (eq t cmp)
+ (pcase (radix-tree--remove ptree key ni)
+ (`nil rtree)
+ (`((,pprefix . ,pptree))
+ `((,(concat prefix pprefix) . ,pptree) . ,rtree))
+ (nptree `((,prefix . ,nptree) . ,rtree)))
+ (let ((n (if (< cmp 0) (- -1 cmp) (- cmp 1))))
+ (if (zerop n)
+ (let ((nrtree (radix-tree--remove rtree key i)))
+ `((,prefix . ,ptree) . ,nrtree))
+ tree)))))
+ (_
+ (if (= (length key) i) nil tree))))
+
+
+(defun radix-tree--lookup (tree string i)
+ (pcase tree
+ (`((,prefix . ,ptree) . ,rtree)
+ (let* ((ni (+ i (length prefix)))
+ (cmp (compare-strings prefix nil nil string i ni)))
+ (if (eq t cmp)
+ (radix-tree--lookup ptree string ni)
+ (let ((n (if (< cmp 0) (- -1 cmp) (- cmp 1))))
+ (if (zerop n)
+ (radix-tree--lookup rtree string i)
+ (+ i n))))))
+ (val
+ (if (and val (equal (length string) i))
+ (if (integerp val) `(t . ,val) val)
+ i))))
+
+;; (defun radix-tree--trim (tree string i)
+;; (if (= i (length string))
+;; tree
+;; (pcase tree
+;; (`((,prefix . ,ptree) . ,rtree)
+;; (let* ((ni (+ i (length prefix)))
+;; (cmp (compare-strings prefix nil nil string i ni))
+;; ;; FIXME: We could compute nrtree more efficiently
+;; ;; whenever cmp is not -1 or 1.
+;; (nrtree (radix-tree--trim rtree string i)))
+;; (if (eq t cmp)
+;; (pcase (radix-tree--trim ptree string ni)
+;; (`nil nrtree)
+;; (`((,pprefix . ,pptree))
+;; `((,(concat prefix pprefix) . ,pptree) . ,nrtree))
+;; (nptree `((,prefix . ,nptree) . ,nrtree)))
+;; (let ((n (if (< cmp 0) (- -1 cmp) (- cmp 1))))
+;; (cond
+;; ((equal (+ n i) (length string))
+;; `((,prefix . ,ptree) . ,nrtree))
+;; (t nrtree))))))
+;; (val val))))
+
+(defun radix-tree--prefixes (tree string i prefixes)
+ (pcase tree
+ (`((,prefix . ,ptree) . ,rtree)
+ (let* ((ni (+ i (length prefix)))
+ (cmp (compare-strings prefix nil nil string i ni))
+ ;; FIXME: We could compute prefixes more efficiently
+ ;; whenever cmp is not -1 or 1.
+ (prefixes (radix-tree--prefixes rtree string i prefixes)))
+ (if (eq t cmp)
+ (radix-tree--prefixes ptree string ni prefixes)
+ prefixes)))
+ (val
+ (if (null val)
+ prefixes
+ (cons (cons (substring string 0 i)
+ (if (eq (car-safe val) t) (cdr val) val))
+ prefixes)))))
+
+(defun radix-tree--subtree (tree string i)
+ (if (equal (length string) i) tree
+ (pcase tree
+ (`((,prefix . ,ptree) . ,rtree)
+ (let* ((ni (+ i (length prefix)))
+ (cmp (compare-strings prefix nil nil string i ni)))
+ (if (eq t cmp)
+ (radix-tree--subtree ptree string ni)
+ (let ((n (if (< cmp 0) (- -1 cmp) (- cmp 1))))
+ (cond
+ ((zerop n) (radix-tree--subtree rtree string i))
+ ((equal (+ n i) (length string))
+ (let ((nprefix (substring prefix n)))
+ `((,nprefix . ,ptree))))
+ (t nil))))))
+ (_ nil))))
+
+;;; Entry points
+
+(defconst radix-tree-empty nil
+ "The empty radix-tree.")
+
+(defun radix-tree-insert (tree key val)
+ "Insert a mapping from KEY to VAL in radix TREE."
+ (when (consp val) (setq val `(t . ,val)))
+ (if val (radix-tree--insert tree key val 0)
+ (radix-tree--remove tree key 0)))
+
+(defun radix-tree-lookup (tree key)
+ "Return the value associated to KEY in radix TREE.
+If not found, return nil."
+ (pcase (radix-tree--lookup tree key 0)
+ (`(t . ,val) val)
+ ((pred numberp) nil)
+ (val val)))
+
+(defun radix-tree-subtree (tree string)
+ "Return the subtree of TREE rooted at the prefix STRING."
+ (radix-tree--subtree tree string 0))
+
+;; (defun radix-tree-trim (tree string)
+;; "Return a TREE which only holds entries \"related\" to STRING.
+;; \"Related\" is here defined as entries where there's a `string-prefix-p' relation
+;; between STRING and the key."
+;; (radix-tree-trim tree string 0))
+
+(defun radix-tree-prefixes (tree string)
+ "Return an alist of all bindings in TREE for prefixes of STRING."
+ (radix-tree--prefixes tree string 0 nil))
+
+(eval-and-compile
+ (pcase-defmacro radix-tree-leaf (vpat)
+ ;; FIXME: We'd like to use a negative pattern (not consp), but pcase
+ ;; doesn't support it. Using `atom' works but generates sub-optimal code.
+ `(or `(t . ,,vpat) (and (pred atom) ,vpat))))
+
+(defun radix-tree-iter-subtrees (tree fun)
+ "Apply FUN to every immediate subtree of radix TREE.
+FUN is called with two arguments: PREFIX and SUBTREE.
+You can test if SUBTREE is a leaf (and extract its value) with the
+pcase pattern (radix-tree-leaf PAT)."
+ (while tree
+ (pcase tree
+ (`((,prefix . ,ptree) . ,rtree)
+ (funcall fun prefix ptree)
+ (setq tree rtree))
+ (_ (funcall fun "" tree)
+ (setq tree nil)))))
+
+(defun radix-tree-iter-mappings (tree fun &optional prefix)
+ "Apply FUN to every mapping in TREE.
+FUN is called with two arguments: KEY and VAL.
+PREFIX is only used internally."
+ (radix-tree-iter-subtrees
+ tree
+ (lambda (p s)
+ (let ((nprefix (concat prefix p)))
+ (pcase s
+ ((radix-tree-leaf v) (funcall fun nprefix v))
+ (_ (radix-tree-iter-mappings s fun nprefix)))))))
+
+;; (defun radix-tree->alist (tree)
+;; (let ((al nil))
+;; (radix-tree-iter-mappings tree (lambda (p v) (push (cons p v) al)))
+;; al))
+
+(defun radix-tree-count (tree)
+ (let ((i 0))
+ (radix-tree-iter-mappings tree (lambda (_k _v) (setq i (1+ i))))
+ i))
+
+(defun radix-tree-from-map (map)
+ ;; Aka (cl-defmethod map-into (map (type (eql radix-tree)))) ...)
+ (require 'map)
+ (let ((rt nil))
+ (map-apply (lambda (k v) (setq rt (radix-tree-insert rt k v))) map)
+ rt))
+
+(provide 'radix-tree)
+;;; radix-tree.el ends here
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index 8362ddafd3..e5004f8cda 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -4,7 +4,7 @@
;; Author: Nicolas Petton <nicolas@petton.fr>
;; Keywords: sequences
-;; Version: 2.3
+;; Version: 2.18
;; Package: seq
;; Maintainer: emacs-devel@gnu.org
@@ -117,6 +117,16 @@ Return SEQUENCE."
(defalias 'seq-each #'seq-do)
+(defun seq-do-indexed (function sequence)
+ "Apply FUNCTION to each element of SEQUENCE and return nil.
+Unlike `seq-map', FUNCTION takes two arguments: the element of
+the sequence, and its index within the sequence."
+ (let ((index 0))
+ (seq-do (lambda (elt)
+ (funcall function elt index)
+ (setq index (1+ index)))
+ sequence)))
+
(cl-defgeneric seqp (sequence)
"Return non-nil if SEQUENCE is a sequence, nil otherwise."
(sequencep sequence))
@@ -144,6 +154,18 @@ if positive or too small if negative)."
sequence)
(nreverse result)))
+(defun seq-map-indexed (function sequence)
+ "Return the result of applying FUNCTION to each element of SEQUENCE.
+Unlike `seq-map', FUNCTION takes two arguments: the element of
+the sequence, and its index within the sequence."
+ (let ((index 0))
+ (seq-map (lambda (elt)
+ (prog1
+ (funcall function elt index)
+ (setq index (1+ index))))
+ sequence)))
+
+
;; faster implementation for sequences (sequencep)
(cl-defmethod seq-map (function (sequence sequence))
(mapcar function sequence))
@@ -206,6 +228,16 @@ The result is a sequence of the same type as SEQUENCE."
(cl-defmethod seq-sort (pred (list list))
(sort (seq-copy list) pred))
+(defun seq-sort-by (function pred sequence)
+ "Sort SEQUENCE using PRED as a comparison function.
+Elements of SEQUENCE are transformed by FUNCTION before being
+sorted. FUNCTION must be a function of one argument."
+ (seq-sort (lambda (a b)
+ (funcall pred
+ (funcall function a)
+ (funcall function b)))
+ sequence))
+
(cl-defgeneric seq-reverse (sequence)
"Return a sequence with elements of SEQUENCE in reverse order."
(let ((result '()))
@@ -317,7 +349,8 @@ found or not."
"Return the first element in SEQUENCE that is equal to ELT.
Equality is defined by TESTFN if non-nil or by `equal' if nil."
(seq-some (lambda (e)
- (funcall (or testfn #'equal) elt e))
+ (when (funcall (or testfn #'equal) elt e)
+ e))
sequence))
(cl-defgeneric seq-position (sequence elt &optional testfn)
@@ -449,10 +482,7 @@ If no element is found, return nil."
(cl-defmethod seq-drop ((list list) n)
"Optimized implementation of `seq-drop' for lists."
- (while (and list (> n 0))
- (setq list (cdr list)
- n (1- n)))
- list)
+ (nthcdr n list))
(cl-defmethod seq-take ((list list) n)
"Optimized implementation of `seq-take' for lists."
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el
index e8d1939865..173cd11fba 100644
--- a/lisp/emacs-lisp/subr-x.el
+++ b/lisp/emacs-lisp/subr-x.el
@@ -198,6 +198,171 @@ to bind a single value, BINDINGS can just be a plain tuple."
(substring string 0 (- (length string) (length suffix)))
string))
+(defun read-multiple-choice (prompt choices)
+ "Ask user a multiple choice question.
+PROMPT should be a string that will be displayed as the prompt.
+
+CHOICES is an alist where the first element in each entry is a
+character to be entered, the second element is a short name for
+the entry to be displayed while prompting (if there's room, it
+might be shortened), and the third, optional entry is a longer
+explanation that will be displayed in a help buffer if the user
+requests more help.
+
+This function translates user input into responses by consulting
+the bindings in `query-replace-map'; see the documentation of
+that variable for more information. In this case, the useful
+bindings are `recenter', `scroll-up', and `scroll-down'. If the
+user enters `recenter', `scroll-up', or `scroll-down' responses,
+perform the requested window recentering or scrolling and ask
+again.
+
+The return value is the matching entry from the CHOICES list.
+
+Usage example:
+
+\(read-multiple-choice \"Continue connecting?\"
+ '((?a \"always\")
+ (?s \"session only\")
+ (?n \"no\")))"
+ (let* ((altered-names nil)
+ (full-prompt
+ (format
+ "%s (%s): "
+ prompt
+ (mapconcat
+ (lambda (elem)
+ (let* ((name (cadr elem))
+ (pos (seq-position name (car elem)))
+ (altered-name
+ (cond
+ ;; Not in the name string.
+ ((not pos)
+ (format "[%c] %s" (car elem) name))
+ ;; The prompt character is in the name, so highlight
+ ;; it on graphical terminals...
+ ((display-supports-face-attributes-p
+ '(:underline t) (window-frame))
+ (setq name (copy-sequence name))
+ (put-text-property pos (1+ pos)
+ 'face 'read-multiple-choice-face
+ name)
+ name)
+ ;; And put it in [bracket] on non-graphical terminals.
+ (t
+ (concat
+ (substring name 0 pos)
+ "["
+ (upcase (substring name pos (1+ pos)))
+ "]"
+ (substring name (1+ pos)))))))
+ (push (cons (car elem) altered-name)
+ altered-names)
+ altered-name))
+ (append choices '((?? "?")))
+ ", ")))
+ tchar buf wrong-char answer)
+ (save-window-excursion
+ (save-excursion
+ (while (not tchar)
+ (message "%s%s"
+ (if wrong-char
+ "Invalid choice. "
+ "")
+ full-prompt)
+ (setq tchar
+ (if (and (display-popup-menus-p)
+ last-input-event ; not during startup
+ (listp last-nonmenu-event)
+ use-dialog-box)
+ (x-popup-dialog
+ t
+ (cons prompt
+ (mapcar
+ (lambda (elem)
+ (cons (capitalize (cadr elem))
+ (car elem)))
+ choices)))
+ (condition-case nil
+ (let ((cursor-in-echo-area t))
+ (read-char))
+ (error nil))))
+ (setq answer (lookup-key query-replace-map (vector tchar) t))
+ (setq tchar
+ (cond
+ ((eq answer 'recenter)
+ (recenter) t)
+ ((eq answer 'scroll-up)
+ (ignore-errors (scroll-up-command)) t)
+ ((eq answer 'scroll-down)
+ (ignore-errors (scroll-down-command)) t)
+ ((eq answer 'scroll-other-window)
+ (ignore-errors (scroll-other-window)) t)
+ ((eq answer 'scroll-other-window-down)
+ (ignore-errors (scroll-other-window-down)) t)
+ (t tchar)))
+ (when (eq tchar t)
+ (setq wrong-char nil
+ tchar nil))
+ ;; The user has entered an invalid choice, so display the
+ ;; help messages.
+ (when (and (not (eq tchar nil))
+ (not (assq tchar choices)))
+ (setq wrong-char (not (memq tchar '(?? ?\C-h)))
+ tchar nil)
+ (when wrong-char
+ (ding))
+ (with-help-window (setq buf (get-buffer-create
+ "*Multiple Choice Help*"))
+ (with-current-buffer buf
+ (erase-buffer)
+ (pop-to-buffer buf)
+ (insert prompt "\n\n")
+ (let* ((columns (/ (window-width) 25))
+ (fill-column 21)
+ (times 0)
+ (start (point)))
+ (dolist (elem choices)
+ (goto-char start)
+ (unless (zerop times)
+ (if (zerop (mod times columns))
+ ;; Go to the next "line".
+ (goto-char (setq start (point-max)))
+ ;; Add padding.
+ (while (not (eobp))
+ (end-of-line)
+ (insert (make-string (max (- (* (mod times columns)
+ (+ fill-column 4))
+ (current-column))
+ 0)
+ ?\s))
+ (forward-line 1))))
+ (setq times (1+ times))
+ (let ((text
+ (with-temp-buffer
+ (insert (format
+ "%c: %s\n"
+ (car elem)
+ (cdr (assq (car elem) altered-names))))
+ (fill-region (point-min) (point-max))
+ (when (nth 2 elem)
+ (let ((start (point)))
+ (insert (nth 2 elem))
+ (unless (bolp)
+ (insert "\n"))
+ (fill-region start (point-max))))
+ (buffer-string))))
+ (goto-char start)
+ (dolist (line (split-string text "\n"))
+ (end-of-line)
+ (if (bolp)
+ (insert line "\n")
+ (insert line))
+ (forward-line 1)))))))))))
+ (when (buffer-live-p buf)
+ (kill-buffer buf))
+ (assq tchar choices)))
+
(provide 'subr-x)
;;; subr-x.el ends here
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el
index 654f234fa6..ac509b3465 100644
--- a/lisp/emacs-lisp/syntax.el
+++ b/lisp/emacs-lisp/syntax.el
@@ -316,6 +316,9 @@ END) suitable for `syntax-propertize-function'."
(unless (eq funs
(cdr syntax-propertize-extend-region-functions))
(setq funs syntax-propertize-extend-region-functions)))))
+ ;; Flush ppss cache between the original value of `start' and that
+ ;; set above by syntax-propertize-extend-region-functions.
+ (syntax-ppss-flush-cache start)
;; Move the limit before calling the function, so the function
;; can use syntax-ppss.
(setq syntax-propertize--done end)
@@ -417,6 +420,9 @@ point (where the PPSS is equivalent to nil).")
(error nil)))
syntax-ppss-stats))
+(defvar-local syntax-ppss-table nil
+ "Syntax-table to use during `syntax-ppss', if any.")
+
(defun syntax-ppss (&optional pos)
"Parse-Partial-Sexp State at POS, defaulting to point.
The returned value is the same as that of `parse-partial-sexp'
@@ -432,6 +438,7 @@ running the hook."
(unless pos (setq pos (point)))
(syntax-propertize pos)
;;
+ (with-syntax-table (or syntax-ppss-table (syntax-table))
(let ((old-ppss (cdr syntax-ppss-last))
(old-pos (car syntax-ppss-last))
(ppss nil)
@@ -568,7 +575,7 @@ running the hook."
;; we may end up calling parse-partial-sexp with a position before
;; point-min. In that case, just parse from point-min assuming
;; a nil state.
- (parse-partial-sexp (point-min) pos)))))
+ (parse-partial-sexp (point-min) pos))))))
;; Debugging functions
diff --git a/lisp/emacs-lisp/timer-list.el b/lisp/emacs-lisp/timer-list.el
new file mode 100644
index 0000000000..9b13e52dd7
--- /dev/null
+++ b/lisp/emacs-lisp/timer-list.el
@@ -0,0 +1,112 @@
+;;; timer-list.el --- list active timers in a buffer
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Maintainer: emacs-devel@gnu.org
+;; Package: emacs
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+;;;###autoload
+(defun timer-list (&optional _ignore-auto _nonconfirm)
+ "List all timers in a buffer."
+ (interactive)
+ (pop-to-buffer-same-window (get-buffer-create "*timer-list*"))
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (timer-list-mode)
+ (dolist (timer (append timer-list timer-idle-list))
+ (insert (format "%4s %10s %8s %s"
+ ;; Idle.
+ (if (aref timer 7)
+ "*"
+ " ")
+ ;; Next time.
+ (let ((time (float-time (list (aref timer 1)
+ (aref timer 2)
+ (aref timer 3)))))
+ (format "%.2f"
+ (if (aref timer 7)
+ time
+ (- (float-time (list (aref timer 1)
+ (aref timer 2)
+ (aref timer 3)))
+ (float-time)))))
+ ;; Repeat.
+ (let ((repeat (aref timer 4)))
+ (cond
+ ((numberp repeat)
+ (format "%.2f" (/ repeat 60)))
+ ((null repeat)
+ "-")
+ (t
+ (format "%s" repeat))))
+ ;; Function.
+ (let ((function (aref timer 5)))
+ (replace-regexp-in-string
+ "\n" " "
+ (cond
+ ((byte-code-function-p function)
+ (replace-regexp-in-string
+ "[^-A-Za-z0-9 ]" ""
+ (format "%s" function)))
+ (t
+ (format "%s" function)))))))
+ (put-text-property (line-beginning-position)
+ (1+ (line-beginning-position))
+ 'timer timer)
+ (insert "\n")))
+ (goto-char (point-min)))
+;; This command can be destructive if they don't know what they are
+;; doing. Kids, don't try this at home!
+;;;###autoload (put 'timer-list 'disabled "Beware: manually canceling timers can ruin your Emacs session.")
+
+(defvar timer-list-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "c" 'timer-list-cancel)
+ (easy-menu-define nil map ""
+ '("Timers"
+ ["Cancel" timer-list-cancel t]))
+ map))
+
+(define-derived-mode timer-list-mode special-mode "timer-list"
+ "Mode for listing and controlling timers."
+ (setq truncate-lines t)
+ (buffer-disable-undo)
+ (setq-local revert-buffer-function 'timer-list)
+ (setq buffer-read-only t)
+ (setq header-line-format
+ (format "%4s %10s %8s %s"
+ "Idle" "Next" "Repeat" "Function")))
+
+(defun timer-list-cancel ()
+ "Cancel the timer on the line under point."
+ (interactive)
+ (let ((timer (get-text-property (line-beginning-position) 'timer))
+ (inhibit-read-only t))
+ (unless timer
+ (error "No timer on the current line"))
+ (cancel-timer timer)
+ (delete-region (line-beginning-position)
+ (line-beginning-position 2))))
+
+(provide 'timer-list)
+
+;;; timer-list.el ends here
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index 4bd819ab82..3ce1b4d6a7 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -1,4 +1,4 @@
-;;; viper-cmd.el --- Vi command support for Viper
+;;; viper-cmd.el --- Vi command support for Viper -*- lexical-binding:t -*-
;; Copyright (C) 1997-2016 Free Software Foundation, Inc.
@@ -40,13 +40,13 @@
(defvar quail-mode)
(defvar quail-current-str)
(defvar mark-even-if-inactive)
-(defvar init-message)
+(defvar viper--init-message)
(defvar viper-initial)
(defvar undo-beg-posn)
(defvar undo-end-posn)
(eval-and-compile
- (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
+ (unless (fboundp 'declare-function) (defmacro declare-function (&rest _))))
;; end pacifier
@@ -608,7 +608,7 @@
;; This also takes care of the annoying incomplete lines in files.
;; Also, this fixes `undo' to work vi-style for complex commands.
-(defun viper-change-state-to-vi ()
+(defun viper-change-state-to-vi (&rest _)
"Change Viper state to Vi."
(interactive)
(if (and viper-first-time (not (viper-is-in-minibuffer)))
@@ -694,7 +694,7 @@
)
-(defun viper-change-state-to-emacs ()
+(defun viper-change-state-to-emacs (&rest _)
"Change Viper state to Emacs."
(interactive)
(or (viper-overlay-p viper-replace-overlay)
@@ -1294,7 +1294,7 @@ as a Meta key and any number of multiple escapes are allowed."
;; define functions to be executed
;; invoked by the `C' command
-(defun viper-exec-change (m-com com)
+(defun viper-exec-change (m-com _com)
(or (and (markerp viper-com-point) (marker-position viper-com-point))
(set-marker viper-com-point (point) (current-buffer)))
;; handle C cmd at the eol and at eob.
@@ -1316,7 +1316,7 @@ as a Meta key and any number of multiple escapes are allowed."
(viper-change (mark t) (point))))
;; this is invoked by viper-substitute-line
-(defun viper-exec-Change (m-com com)
+(defun viper-exec-Change (_m-com _com)
(save-excursion
(set-mark viper-com-point)
(viper-enlarge-region (mark t) (point))
@@ -1338,7 +1338,7 @@ as a Meta key and any number of multiple escapes are allowed."
(viper-change-state-to-insert)
))
-(defun viper-exec-delete (m-com com)
+(defun viper-exec-delete (_m-com _com)
(or (and (markerp viper-com-point) (marker-position viper-com-point))
(set-marker viper-com-point (point) (current-buffer)))
(let (chars-deleted)
@@ -1364,7 +1364,7 @@ as a Meta key and any number of multiple escapes are allowed."
(if viper-ex-style-motion
(if (and (eolp) (not (bolp))) (backward-char 1)))))
-(defun viper-exec-Delete (m-com com)
+(defun viper-exec-Delete (m-com _com)
(save-excursion
(set-mark viper-com-point)
(viper-enlarge-region (mark t) (point))
@@ -1391,7 +1391,7 @@ as a Meta key and any number of multiple escapes are allowed."
(back-to-indentation)))
;; save region
-(defun viper-exec-yank (m-com com)
+(defun viper-exec-yank (_m-com _com)
(or (and (markerp viper-com-point) (marker-position viper-com-point))
(set-marker viper-com-point (point) (current-buffer)))
(let (chars-saved)
@@ -1415,7 +1415,7 @@ as a Meta key and any number of multiple escapes are allowed."
(goto-char viper-com-point)))
;; save lines
-(defun viper-exec-Yank (m-com com)
+(defun viper-exec-Yank (_m-com _com)
(save-excursion
(set-mark viper-com-point)
(viper-enlarge-region (mark t) (point))
@@ -1440,7 +1440,7 @@ as a Meta key and any number of multiple escapes are allowed."
(viper-deactivate-mark)
(goto-char viper-com-point))
-(defun viper-exec-bang (m-com com)
+(defun viper-exec-bang (_m-com com)
(save-excursion
(set-mark viper-com-point)
(viper-enlarge-region (mark t) (point))
@@ -1458,14 +1458,14 @@ as a Meta key and any number of multiple escapes are allowed."
viper-last-shell-com)
t t)))
-(defun viper-exec-equals (m-com com)
+(defun viper-exec-equals (_m-com _com)
(save-excursion
(set-mark viper-com-point)
(viper-enlarge-region (mark t) (point))
(if (> (mark t) (point)) (exchange-point-and-mark))
(indent-region (mark t) (point) nil)))
-(defun viper-exec-shift (m-com com)
+(defun viper-exec-shift (_m-com com)
(save-excursion
(set-mark viper-com-point)
(viper-enlarge-region (mark t) (point))
@@ -1479,10 +1479,10 @@ as a Meta key and any number of multiple escapes are allowed."
;; this is needed because some commands fake com by setting it to ?r, which
;; denotes repeated insert command.
-(defsubst viper-exec-dummy (m-com com)
+(defsubst viper-exec-dummy (_m-com _com)
nil)
-(defun viper-exec-buffer-search (m-com com)
+(defun viper-exec-buffer-search (_m-com _com)
(setq viper-s-string
(regexp-quote (buffer-substring (point) viper-com-point)))
(setq viper-s-forward t)
@@ -1648,7 +1648,7 @@ invokes the command before that, etc."
(add-hook 'after-change-functions 'viper-undo-sentinel)
;; Hook used in viper-undo
-(defun viper-after-change-undo-hook (beg end len)
+(defun viper-after-change-undo-hook (beg end _len)
(if (and (boundp 'undo-in-progress) undo-in-progress)
(setq undo-beg-posn beg
undo-end-posn (or end beg))
@@ -1662,8 +1662,7 @@ invokes the command before that, etc."
"Undo previous change."
(interactive)
(message "undo!")
- (let ((modified (buffer-modified-p))
- (before-undo-pt (point-marker))
+ (let ((before-undo-pt (point-marker))
undo-beg-posn undo-end-posn)
;; the viper-after-change-undo-hook removes itself after the 1st invocation
@@ -1710,40 +1709,20 @@ invokes the command before that, etc."
;; The following two functions are used to set up undo properly.
;; In VI, unlike Emacs, if you open a line, say, and add a bunch of lines,
;; they are undone all at once.
-(defun viper-adjust-undo ()
- (if viper-undo-needs-adjustment
- (let ((inhibit-quit t)
- tmp tmp2)
- (setq viper-undo-needs-adjustment nil)
- (when (listp buffer-undo-list)
- (let ((had-boundary (null (car buffer-undo-list))))
- (if (setq tmp (memq viper-buffer-undo-list-mark buffer-undo-list))
- (progn
- (setq tmp2 (cdr tmp)) ; the part after mark
-
- ;; cut tail from buffer-undo-list temporarily by direct
- ;; manipulation with pointers in buffer-undo-list
- (setcdr tmp nil)
-
- (setq buffer-undo-list (delq nil buffer-undo-list))
- (setq buffer-undo-list
- (delq viper-buffer-undo-list-mark buffer-undo-list))
- ;; restore tail of buffer-undo-list
- (setq buffer-undo-list (nconc buffer-undo-list tmp2)))
- (setq buffer-undo-list (delq nil buffer-undo-list)))
- ;; The top-level loop only adds boundaries if there has been
- ;; modifications in the buffer, so make sure we don't accidentally
- ;; drop the "final" boundary (bug#22295).
- (if had-boundary (undo-boundary)))))))
+(viper-deflocalvar viper--undo-change-group-handle nil)
+(put 'viper--undo-change-group-handle 'permanent-local t)
+(defun viper-adjust-undo ()
+ (when viper--undo-change-group-handle
+ (undo-amalgamate-change-group
+ (prog1 viper--undo-change-group-handle
+ (setq viper--undo-change-group-handle nil)))))
(defun viper-set-complex-command-for-undo ()
- (if (listp buffer-undo-list)
- (if (not viper-undo-needs-adjustment)
- (let ((inhibit-quit t))
- (setq buffer-undo-list
- (cons viper-buffer-undo-list-mark buffer-undo-list))
- (setq viper-undo-needs-adjustment t)))))
+ (and (listp buffer-undo-list)
+ (not viper--undo-change-group-handle)
+ (setq viper--undo-change-group-handle
+ (prepare-change-group))))
;;; Viper's destructive Command ring utilities
@@ -1907,6 +1886,7 @@ Undo previous insertion and inserts new."
"Quote string: "
nil
'viper-quote-region-history
+ ;; FIXME: Use comment-region.
(cond ((string-match "tex.*-mode" (symbol-name major-mode)) "%%")
((string-match "java.*-mode" (symbol-name major-mode)) "//")
((string-match "perl.*-mode" (symbol-name major-mode)) "#")
@@ -1988,13 +1968,13 @@ Undo previous insertion and inserts new."
(funcall hook)
))
-;; This is a temp hook that uses free variables init-message and viper-initial.
+;; This is a temp hook that uses free variables viper--init-message and viper-initial.
;; A dirty feature, but it is the simplest way to have it do the right thing.
-;; The INIT-MESSAGE and VIPER-INITIAL vars come from the scope set by
+;; The VIPER--INIT-MESSAGE and VIPER-INITIAL vars come from the scope set by
;; viper-read-string-with-history
(defun viper-minibuffer-standard-hook ()
- (if (stringp init-message)
- (viper-tmp-insert-at-eob init-message))
+ (if (stringp viper--init-message)
+ (viper-tmp-insert-at-eob viper--init-message))
(when (stringp viper-initial)
;; don't wait if we have unread events or in kbd macro
(or unread-command-events
@@ -2058,7 +2038,7 @@ To turn this feature off, set this variable to nil."
(viper-minibuffer-real-start) (point-max)))
found key cmd suff)
(goto-char (point-max))
- (if (and viper-smart-suffix-list (string-match "\\.$" file))
+ (if (and viper-smart-suffix-list (string-match "\\.\\'" file))
(progn
(while (and (not found) (< count len))
(setq suff (nth count viper-smart-suffix-list)
@@ -2102,10 +2082,10 @@ problems."
;;; Reading string with history
-(defun viper-read-string-with-history (prompt &optional viper-initial
+(defun viper-read-string-with-history (prompt &optional initial
history-var default keymap
init-message)
- ;; Read string, prompting with PROMPT and inserting the VIPER-INITIAL
+ ;; Read string, prompting with PROMPT and inserting the INITIAL
;; value. Uses HISTORY-VAR. DEFAULT is the default value to accept if the
;; input is an empty string.
;; Default value is displayed until the user types something in the
@@ -2113,14 +2093,16 @@ problems."
;; KEYMAP is used, if given, instead of minibuffer-local-map.
;; INIT-MESSAGE is the message temporarily displayed after entering the
;; minibuffer.
- (let ((minibuffer-setup-hook
+ (let ((viper-initial initial)
+ (viper--init-message init-message)
+ (minibuffer-setup-hook
;; stolen from add-hook
(let ((old
(if (boundp 'minibuffer-setup-hook)
minibuffer-setup-hook
nil)))
(cons
- 'viper-minibuffer-standard-hook
+ #'viper-minibuffer-standard-hook
(if (or (not (listp old)) (eq (car old) 'lambda))
(list old) old))))
(val "")
@@ -2128,14 +2110,15 @@ problems."
temp-msg)
(setq keymap (or keymap minibuffer-local-map)
- viper-initial (or viper-initial "")
+ initial (or initial "")
+ viper-initial initial
temp-msg (if default
(format "(default %s) " default)
""))
(setq viper-incomplete-ex-cmd nil)
(setq val (read-from-minibuffer prompt
- (concat temp-msg viper-initial val padding)
+ (concat temp-msg initial val padding)
keymap nil history-var))
(setq minibuffer-setup-hook nil
padding (viper-array-to-string (this-command-keys))
@@ -2836,7 +2819,7 @@ On reaching beginning of line, stop and signal error."
(viper-looking-at-alphasep))))))
-(defun viper-end-of-word (arg &optional careful)
+(defun viper-end-of-word (arg &optional _careful)
"Move point to end of current word."
(interactive "P")
(viper-leave-region-active)
@@ -3672,17 +3655,14 @@ the Emacs binding of `/'."
(setq msg "Search style remains unchanged")))
(princ msg t)))
-(defun viper-set-searchstyle-toggling-macros (unset &optional major-mode)
+(defun viper-set-searchstyle-toggling-macros (unset &optional mode)
"Set the macros for toggling the search style in Viper's vi-state.
The macro that toggles case sensitivity is bound to `//', and the one that
toggles regexp search is bound to `///'.
With a prefix argument, this function unsets the macros.
-If MAJOR-MODE is set, set the macros only in that major mode."
+If MODE is set, set the macros only in that major mode."
(interactive "P")
- (let (scope)
- (if (and major-mode (symbolp major-mode))
- (setq scope major-mode)
- (setq scope 't))
+ (let ((scope (if (and mode (symbolp mode)) mode t)))
(or noninteractive
(if (not unset)
(progn
@@ -4875,33 +4855,36 @@ Please, specify your level now: "))
;;; Bug Report
+(defvar reporter-prompt-for-summary-p)
+
(defun viper-submit-report ()
"Submit bug report on Viper."
(interactive)
+ (defvar viper-device-type)
+ (defvar viper-color-display-p)
+ (defvar viper-frame-parameters)
+ (defvar viper-minibuffer-emacs-face)
+ (defvar viper-minibuffer-vi-face)
+ (defvar viper-minibuffer-insert-face)
(let ((reporter-prompt-for-summary-p t)
(viper-device-type (viper-device-type))
- color-display-p frame-parameters
- minibuffer-emacs-face minibuffer-vi-face minibuffer-insert-face
- varlist salutation window-config)
-
- ;; If mode info is needed, add variable to `let' and then set it below,
- ;; like we did with color-display-p.
- (setq color-display-p (if (viper-window-display-p)
+ (viper-color-display-p (if (viper-window-display-p)
(viper-color-display-p)
- 'non-x)
- minibuffer-vi-face (if (viper-has-face-support-p)
- (viper-get-face viper-minibuffer-vi-face)
- 'non-x)
- minibuffer-insert-face (if (viper-has-face-support-p)
- (viper-get-face
- viper-minibuffer-insert-face)
- 'non-x)
- minibuffer-emacs-face (if (viper-has-face-support-p)
- (viper-get-face
- viper-minibuffer-emacs-face)
- 'non-x)
- frame-parameters (if (fboundp 'frame-parameters)
- (frame-parameters (selected-frame))))
+ 'non-x))
+ (viper-frame-parameters (if (fboundp 'frame-parameters)
+ (frame-parameters (selected-frame))))
+ (viper-minibuffer-emacs-face (if (viper-has-face-support-p)
+ (viper-get-face
+ viper-minibuffer-emacs-face)
+ 'non-x))
+ (viper-minibuffer-vi-face (if (viper-has-face-support-p)
+ (viper-get-face viper-minibuffer-vi-face)
+ 'non-x))
+ (viper-minibuffer-insert-face (if (viper-has-face-support-p)
+ (viper-get-face
+ viper-minibuffer-insert-face)
+ 'non-x))
+ varlist salutation window-config)
(setq varlist (list 'viper-vi-minibuffer-minor-mode
'viper-insert-minibuffer-minor-mode
@@ -4946,11 +4929,11 @@ Please, specify your level now: "))
'viper-expert-level
'major-mode
'viper-device-type
- 'color-display-p
- 'frame-parameters
- 'minibuffer-vi-face
- 'minibuffer-insert-face
- 'minibuffer-emacs-face
+ 'viper-color-display-p
+ 'viper-frame-parameters
+ 'viper-minibuffer-vi-face
+ 'viper-minibuffer-insert-face
+ 'viper-minibuffer-emacs-face
))
(setq salutation "
Congratulations! You may have unearthed a bug in Viper!
diff --git a/lisp/emulation/viper-ex.el b/lisp/emulation/viper-ex.el
index 2c422cb953..9c9cd681bf 100644
--- a/lisp/emulation/viper-ex.el
+++ b/lisp/emulation/viper-ex.el
@@ -1250,7 +1250,7 @@ reversed."
(kill-region (point) (mark t))))))
-(declare-function viper-change-state-to-vi "viper-cmd" ())
+(declare-function viper-change-state-to-vi "viper-cmd" (&rest _))
;; Ex edit command
;; In Viper, `e' and `e!' behave identically. In both cases, the user is
@@ -1998,7 +1998,7 @@ Please contact your system administrator. "
(beginning-of-line)
(if opt-c (message "done"))))
-(declare-function viper-change-state-to-emacs "viper-cmd" ())
+(declare-function viper-change-state-to-emacs "viper-cmd" (&rest _))
;; Ex tag command
(defun ex-tag ()
diff --git a/lisp/emulation/viper-init.el b/lisp/emulation/viper-init.el
index 104245b757..ee09390677 100644
--- a/lisp/emulation/viper-init.el
+++ b/lisp/emulation/viper-init.el
@@ -369,15 +369,6 @@ Use `\\[viper-set-expert-level]' to change this.")
;; VI-style Undo
-;; Used to 'undo' complex commands, such as replace and insert commands.
-(viper-deflocalvar viper-undo-needs-adjustment nil)
-(put 'viper-undo-needs-adjustment 'permanent-local t)
-
-;; A mark that Viper puts on buffer-undo-list. Marks the beginning of a
-;; complex command that must be undone atomically. If inserted, it is
-;; erased by viper-change-state-to-vi and viper-repeat.
-(defconst viper-buffer-undo-list-mark 'viper)
-
(defcustom viper-keep-point-on-undo nil
"Non-nil means not to move point while undoing commands.
This style is different from Emacs and Vi. Try it to see if
@@ -786,7 +777,7 @@ Related buffers can be cycled through via :R and :P commands."
"^@end \\|" ; texinfo
")\n\n[ \t\n]*\\|" ; lisp
"\\.\\s-*$") ; prolog
- "*Regexps to end Headings/Sections. Used by [].")
+ "Regexps to end Headings/Sections. Used by [].")
;; These two vars control the interaction of jumps performed by ' and `.
diff --git a/lisp/emulation/viper-macs.el b/lisp/emulation/viper-macs.el
index fd6b22231a..c8626e412b 100644
--- a/lisp/emulation/viper-macs.el
+++ b/lisp/emulation/viper-macs.el
@@ -274,7 +274,7 @@ a key is a symbol, e.g., `a', `\\1', `f2', etc., or a list, e.g.,
))
-(declare-function viper-change-state-to-vi "viper-cmd" ())
+(declare-function viper-change-state-to-vi "viper-cmd" (&rest _))
;; Terminate a Vi kbd macro.
;; optional argument IGNORE, if t, indicates that we are dealing with an
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el
index b24f1c4ee2..1ee1464ac7 100644
--- a/lisp/emulation/viper.el
+++ b/lisp/emulation/viper.el
@@ -1,4 +1,4 @@
-;;; viper.el --- A full-featured Vi emulator for Emacs and XEmacs,
+;;; viper.el --- A full-featured Vi emulator for Emacs and XEmacs, -*-lexical-binding:t -*-
;; a VI Plan for Emacs Rescue,
;; and a venomous VI PERil.
;; Viper Is also a Package for Emacs Rebels.
@@ -126,9 +126,9 @@
;; As an immediate solution, you can hit C-z to bring about the right mode.
;; An interim solution is to add an appropriate hook to the mode like this:
;;
-;; (add-hook 'your-favorite-mode 'viper-mode)
+;; (add-hook 'your-favorite-mode #'viper-mode)
;; or
-;; (add-hook 'your-favorite-mode 'viper-change-state-to-emacs)
+;; (add-hook 'your-favorite-mode #'viper-change-state-to-emacs)
;;
;; whichever applies. The right thing to do, however, is to complain to the
;; author of the respective package. (Sometimes they also neglect to equip
@@ -308,7 +308,6 @@
(defvar viper-major-mode-modifier-list)
;; end pacifier
-(require 'advice)
(require 'viper-init)
(require 'viper-keym)
@@ -337,8 +336,7 @@ This is different from `viper-mode' variable in that `viper-mode' determines
whether to use Viper in the first place, while `viper-always', if nil, lets
user decide when to invoke Viper in a major mode."
:type 'boolean
- :tag "Always Invoke Viper"
- :group 'viper-misc)
+ :tag "Always Invoke Viper")
;; Non-viper variables that need to be saved in case the user decides to
;; de-viperize emacs.
@@ -354,8 +352,7 @@ Must be set in your init file before Viper is loaded.
DO NOT set this variable interactively, unless you are using the customization
widget."
:type '(choice (const nil) (const t) (const ask))
- :tag "Set Viper Mode on Loading"
- :group 'viper-misc)
+ :tag "Set Viper Mode on Loading")
(defcustom viper-vi-state-mode-list
'(fundamental-mode
@@ -401,8 +398,7 @@ widget."
mh-show-mode
)
"Major modes that require Vi command state."
- :type '(repeat symbol)
- :group 'viper-misc)
+ :type '(repeat symbol))
(defcustom viper-emacs-state-mode-list
'(Custom-mode
@@ -440,8 +436,7 @@ Normally, Viper would bring buffers up in Emacs state, unless the corresponding
major mode has been placed on `viper-vi-state-mode-list' or
`viper-insert-state-mode-list'. So, don't place a new mode on this list,
unless it is coming up in a wrong Viper state."
- :type '(repeat symbol)
- :group 'viper-misc)
+ :type '(repeat symbol))
(defcustom viper-insert-state-mode-list
'(internal-ange-ftp-mode
@@ -452,18 +447,17 @@ unless it is coming up in a wrong Viper state."
eshell-mode
shell-mode)
"A list of major modes that should come up in Vi Insert state."
- :type '(repeat symbol)
- :group 'viper-misc)
+ :type '(repeat symbol))
;; used to set viper-major-mode-modifier-list in defcustom
(defun viper-apply-major-mode-modifiers (&optional symbol value)
(if symbol
(set symbol value))
- (mapcar (lambda (triple)
- (viper-modify-major-mode
- (nth 0 triple) (nth 1 triple) (eval (nth 2 triple))))
- viper-major-mode-modifier-list))
+ (mapc (lambda (triple)
+ (viper-modify-major-mode
+ (nth 0 triple) (nth 1 triple) (symbol-value (nth 2 triple))))
+ viper-major-mode-modifier-list))
;; We change standard bindings in some major modes, making them slightly
;; different than in "normal" vi/insert/emacs states
@@ -504,10 +498,7 @@ existing triple."
(const vi-state)
(const insert-state))
symbol))
- :set 'viper-apply-major-mode-modifiers
- :group 'viper-misc)
-
-
+ :set #'viper-apply-major-mode-modifiers)
@@ -632,17 +623,17 @@ This startup message appears whenever you load Viper, unless you type `y' now."
;; remove viper hooks from SYMBOL
(defun viper-remove-hooks (symbol)
(cond ((not (boundp symbol)) nil)
- ((not (listp (eval symbol))) nil)
+ ((not (listp (symbol-value symbol))) nil)
((string-match "-hook" (symbol-name symbol))
- (remove-hook symbol 'viper-mode)
- (remove-hook symbol 'viper-change-state-to-emacs)
- (remove-hook symbol 'viper-change-state-to-insert)
- (remove-hook symbol 'viper-change-state-to-vi)
- (remove-hook symbol 'viper-minibuffer-post-command-hook)
- (remove-hook symbol 'viper-minibuffer-setup-sentinel)
- (remove-hook symbol 'viper-major-mode-change-sentinel)
- (remove-hook symbol 'set-viper-state-in-major-mode)
- (remove-hook symbol 'viper-post-command-sentinel)
+ (remove-hook symbol #'viper-mode)
+ (remove-hook symbol #'viper-change-state-to-emacs)
+ (remove-hook symbol #'viper-change-state-to-insert)
+ (remove-hook symbol #'viper-change-state-to-vi)
+ (remove-hook symbol #'viper-minibuffer-post-command-hook)
+ (remove-hook symbol #'viper-minibuffer-setup-sentinel)
+ (remove-hook symbol #'viper-major-mode-change-sentinel)
+ (remove-hook symbol #'set-viper-state-in-major-mode)
+ (remove-hook symbol #'viper-post-command-sentinel)
)))
;; Remove local value in all existing buffers
@@ -652,6 +643,19 @@ This startup message appears whenever you load Viper, unless you type `y' now."
(with-current-buffer buf
(kill-local-variable symbol))))
+(defvar viper--advice-list nil)
+
+(defun viper--advice-add (function where advice)
+ (advice-add function where advice)
+ (push (cons function advice) viper--advice-list))
+
+(defun viper--deactivate-advice-list ()
+ (mapc (lambda (n)
+ (advice-remove
+ (car n)
+ (cdr n)))
+ viper--advice-list)
+ (setq viper--advice-list nil))
(defun viper-go-away ()
"De-Viperize Emacs.
@@ -697,7 +701,7 @@ It also can't undo some Viper settings."
;; deactivate all advices done by Viper.
- (ad-deactivate-regexp "viper-")
+ (viper--deactivate-advice-list)
(setq viper-mode nil)
@@ -769,10 +773,10 @@ It also can't undo some Viper settings."
)
;; remove all hooks set by viper
- (mapatoms 'viper-remove-hooks)
- (remove-hook 'comint-mode-hook 'viper-comint-mode-hook)
- (remove-hook 'erc-mode-hook 'viper-comint-mode-hook)
- (remove-hook 'change-major-mode-hook 'viper-major-mode-change-sentinel)
+ (mapatoms #'viper-remove-hooks)
+ (remove-hook 'comint-mode-hook #'viper-comint-mode-hook)
+ (remove-hook 'erc-mode-hook #'viper-comint-mode-hook)
+ (remove-hook 'change-major-mode-hook #'viper-major-mode-change-sentinel)
;; unbind Viper mouse bindings
(viper-unbind-mouse-search-key)
@@ -781,7 +785,7 @@ It also can't undo some Viper settings."
;; This advice is undone earlier, when all advices matching "viper-" are
;; deactivated.
(if (featurep 'xemacs)
- (remove-hook 'mouse-leave-frame-hook 'viper-remember-current-frame))
+ (remove-hook 'mouse-leave-frame-hook #'viper-remember-current-frame))
) ; end viper-go-away
@@ -813,7 +817,7 @@ It also can't undo some Viper settings."
;; clear the list of bufs that changed major mode
(setq viper-new-major-mode-buffer-list nil)
;; change the global value of hook
- (remove-hook 'viper-post-command-hooks 'set-viper-state-in-major-mode))
+ (remove-hook 'viper-post-command-hooks #'set-viper-state-in-major-mode))
;; sets up post-command-hook to turn viper-mode, if the current mode is
;; fundamental
@@ -823,7 +827,7 @@ It also can't undo some Viper settings."
(setq viper-new-major-mode-buffer-list
(cons (current-buffer) viper-new-major-mode-buffer-list))))
;; change the global value of hook
- (add-hook 'viper-post-command-hooks 'set-viper-state-in-major-mode t))
+ (add-hook 'viper-post-command-hooks #'set-viper-state-in-major-mode t))
;;; Handling of tty's ESC event
@@ -869,8 +873,8 @@ Two differences:
(defun viper-setup-ESC-to-escape (enable)
(if enable
- (add-hook 'tty-setup-hook 'viper-catch-tty-ESC)
- (remove-hook 'tty-setup-hook 'viper-catch-tty-ESC))
+ (add-hook 'tty-setup-hook #'viper-catch-tty-ESC)
+ (remove-hook 'tty-setup-hook #'viper-catch-tty-ESC))
(let ((seen ()))
(dolist (frame (frame-list))
(let ((terminal (frame-terminal frame)))
@@ -887,21 +891,21 @@ Two differences:
;; in Fundamental Mode and Vi state.
;; When viper-mode is executed in such a case, it will set the major mode
;; back to fundamental-mode.
- (if (eq (default-value 'major-mode) 'fundamental-mode)
+ (if (eq (default-value 'major-mode) #'fundamental-mode)
;; FIXME: We should use after-change-major-mode-hook instead!
- (setq-default major-mode 'viper-mode))
+ (setq-default major-mode #'viper-mode))
(viper-setup-ESC-to-escape t)
- (add-hook 'change-major-mode-hook 'viper-major-mode-change-sentinel)
- (add-hook 'find-file-hooks 'set-viper-state-in-major-mode)
+ (add-hook 'change-major-mode-hook #'viper-major-mode-change-sentinel)
+ (add-hook 'find-file-hooks #'set-viper-state-in-major-mode)
;; keep this because many modes we don't know about use this hook
(defvar text-mode-hook)
- (add-hook 'text-mode-hook 'viper-mode)
+ (add-hook 'text-mode-hook #'viper-mode)
(defvar emerge-startup-hook)
- (add-hook 'emerge-startup-hook 'viper-change-state-to-emacs)
+ (add-hook 'emerge-startup-hook #'viper-change-state-to-emacs)
;; if viper is started from .emacs, it might be impossible to get certain
;; info about the display and windows until emacs initialization is complete
@@ -916,28 +920,15 @@ Two differences:
))
;; Tell vc-diff to put *vc* in Vi mode
- (eval-after-load
- "vc"
- '(defadvice vc-diff (after viper-vc-ad activate)
- "Force Vi state in VC diff buffer."
- (viper-change-state-to-vi)))
-
- (eval-after-load
- "emerge"
- '(defadvice emerge-quit (after viper-emerge-advice activate)
- "Run `viper-change-state-to-vi' after quitting emerge."
- (viper-change-state-to-vi)))
+ (viper--advice-add 'vc-diff :after #'viper-change-state-to-vi)
+ (viper--advice-add 'emerge-quit :after #'viper-change-state-to-vi)
;; passwd.el sets up its own buffer, which turns up in Vi mode,
;; thus overriding the local map. We don't need Vi mode here.
- (eval-after-load
- "passwd"
- '(defadvice read-passwd-1 (before viper-passwd-ad activate)
- "Switch to Emacs state while reading password."
- (viper-change-state-to-emacs)))
-
- (defadvice self-insert-command (around viper-self-insert-ad activate)
- "Ignore all self-inserting keys in the vi-state."
+ (viper--advice-add 'read-passwd-1 :before #'viper-change-state-to-emacs)
+
+ (viper--advice-add 'self-insert-command :around
+ (lambda (orig-fun &rest args)
;; FIXME: Use remapping?
(if (and (eq viper-current-state 'vi-state)
;; Do not use called-interactively-p here. XEmacs does not have it
@@ -945,16 +936,16 @@ Two differences:
;; (called-interactively-p 'interactive))
(interactive-p))
(beep 1)
- ad-do-it
- ))
+ (apply orig-fun args))))
- (defadvice set-cursor-color (after viper-set-cursor-color-ad activate)
+ (viper--advice-add 'set-cursor-color :after
+ (lambda (color-name)
"Change cursor color in VI state."
(modify-frame-parameters
- (selected-frame)
- (list (cons 'viper-vi-state-cursor-color (ad-get-arg 0))))
- (setq viper-vi-state-cursor-color (ad-get-arg 0))
- )
+ (selected-frame)
+ (list (cons 'viper-vi-state-cursor-color color-name)))
+ (setq viper-vi-state-cursor-color color-name)))
+
(when (and (fboundp 'add-to-ordered-list) (boundp 'emulation-mode-map-alists))
;; needs to be as early as possible
@@ -965,8 +956,8 @@ Two differences:
)
;; Emacs shell, ange-ftp, and comint-based modes
- (add-hook 'comint-mode-hook 'viper-comint-mode-hook) ; comint
- (add-hook 'erc-mode-hook 'viper-comint-mode-hook) ; ERC
+ (add-hook 'comint-mode-hook #'viper-comint-mode-hook) ; comint
+ (add-hook 'erc-mode-hook #'viper-comint-mode-hook) ; ERC
(add-hook 'eshell-mode-hook
(lambda () (setq viper-auto-indent nil)))
@@ -984,22 +975,14 @@ Two differences:
;; For RMAIL users.
;; Put buf in Emacs state after edit.
- (eval-after-load
- "rmailedit"
- '(defadvice rmail-cease-edit (after viper-rmail-advice activate)
- "Switch to Emacs state when done editing message."
- (viper-change-state-to-emacs)))
-
- ;; ISO accents
- ;; Need to do it after loading iso-acc, or else this loading will wipe out
- ;; the advice.
- (eval-after-load
- "iso-acc"
- '(defadvice iso-accents-mode (around viper-iso-accents-advice activate)
+ (viper--advice-add 'rmail-cease-edit :after #'viper-change-state-to-emacs)
+
+ ;; ISO accents.
+ (viper--advice-add 'iso-accents-mode :after
+ (lambda (arg &rest _)
"Set viper-automatic-iso-accents to iso-accents-mode."
- (let ((arg (ad-get-arg 0)))
- ad-do-it
- (setq viper-automatic-iso-accents
+ (defvar iso-accents-mode)
+ (setq viper-automatic-iso-accents
(if (eq viper-current-state 'vi-state)
(if arg
;; if iso-accents-mode was called with positive arg, turn
@@ -1015,35 +998,31 @@ Two differences:
(if (memq viper-current-state '(vi-state insert-state replace-state))
(message "Viper ISO accents mode: %s"
(if viper-automatic-iso-accents "on" "off")))
- )))
+ ))
;; International input methods
- (if (featurep 'emacs)
- (eval-after-load "mule-cmds"
- '(progn
- (defadvice deactivate-input-method (after viper-mule-advice activate)
- "Set viper-special-input-method to disable intl. input methods."
- (viper-deactivate-input-method-action))
- (defadvice activate-input-method (after viper-mule-advice activate)
- "Set viper-special-input-method to enable intl. input methods."
- (viper-activate-input-method-action))
- ))
+ (if nil ;; (featurep 'emacs) ;;The hooks should now work!
+ (progn
+ (viper--advice-add 'deactivate-input-method :after
+ #'viper-deactivate-input-method-action)
+ (viper--advice-add 'activate-input-method :after
+ #'viper-activate-input-method-action))
;; XEmacs Although these hooks exist in Emacs, they don't seem to be always
;; called on input-method activation/deactivation, so we the above advise
;; functions instead.
(eval-after-load "mule-cmds"
'(progn
(add-hook 'input-method-activate-hook
- 'viper-activate-input-method-action t)
+ #'viper-activate-input-method-action t)
(add-hook 'input-method-deactivate-hook
- 'viper-deactivate-input-method-action t)))
+ #'viper-deactivate-input-method-action t)))
)
- (eval-after-load "mule-cmds"
- '(defadvice toggle-input-method (around viper-mule-advice activate)
+ (viper--advice-add 'toggle-input-method :around
+ (lambda (orig-fun &rest args)
"Adjust input-method toggling in vi-state."
(if (and viper-special-input-method (eq viper-current-state 'vi-state))
- (viper-deactivate-input-method)
- ad-do-it)))
+ (viper-deactivate-input-method)
+ (apply orig-fun args))))
) ; viper-set-hooks
@@ -1075,11 +1054,11 @@ Two differences:
"Force to read key via `viper-read-key-sequence'."
(interactive (list (viper-read-key-sequence "Describe key: "))))
;; Emacs
- (defadvice describe-key (before viper-describe-key-ad protect activate)
+ (viper--advice-add 'describe-key :before
+ (lambda (&rest _)
"Force to read key via `viper-read-key-sequence'."
- (interactive (let (key)
- (setq key (viper-read-key-sequence
- "Describe key (or click or menu item): "))
+ (interactive (let ((key (viper-read-key-sequence
+ "Describe key (or click or menu item): ")))
(list key
(prefix-numeric-value current-prefix-arg)
;; If KEY is a down-event, read also the
@@ -1098,7 +1077,9 @@ Two differences:
(and (> (length key) 1)
(eventp (aref key 1))
(memq 'down (event-modifiers (aref key 1)))))
- (read-event))))))
+ (read-event)))))
+ nil))
+
) ; (if (featurep 'xemacs)
(if (featurep 'xemacs)
@@ -1108,12 +1089,11 @@ Two differences:
"Force to read key via `viper-read-key-sequence'."
(interactive (list (viper-read-key-sequence "Describe key briefly: "))))
;; Emacs
- (defadvice describe-key-briefly
- (before viper-describe-key-briefly-ad protect activate)
+ (viper--advice-add 'describe-key-briefly :before
+ (lambda (&rest _)
"Force to read key via `viper-read-key-sequence'."
- (interactive (let (key)
- (setq key (viper-read-key-sequence
- "Describe key (or click or menu item): "))
+ (interactive (let ((key (viper-read-key-sequence
+ "Describe key (or click or menu item): ")))
;; If KEY is a down-event, read and discard the
;; corresponding up-event.
(and (vectorp key)
@@ -1124,84 +1104,85 @@ Two differences:
(list key
(if current-prefix-arg
(prefix-numeric-value current-prefix-arg))
- 1))))
+ 1)))
+ nil))
) ; (if (featurep 'xemacs)
- (defadvice find-file (before viper-add-suffix-advice activate)
- "Use `read-file-name' for reading arguments."
- (interactive (cons (read-file-name "Find file: " nil default-directory)
- ;; XEmacs: if Mule & prefix arg, ask for coding system
- (cond ((and (featurep 'xemacs) (featurep 'mule))
- (list
- (and current-prefix-arg
- (read-coding-system "Coding-system: "))))
- ;; Emacs: do wildcards
- ((and (featurep 'emacs) (boundp 'find-file-wildcards))
- (list find-file-wildcards))))
- ))
-
- (defadvice find-file-other-window (before viper-add-suffix-advice activate)
- "Use `read-file-name' for reading arguments."
- (interactive (cons (read-file-name "Find file in other window: "
- nil default-directory)
- ;; XEmacs: if Mule & prefix arg, ask for coding system
- (cond ((and (featurep 'xemacs) (featurep 'mule))
- (list
- (and current-prefix-arg
- (read-coding-system "Coding-system: "))))
- ;; Emacs: do wildcards
- ((and (featurep 'emacs) (boundp 'find-file-wildcards))
- (list find-file-wildcards))))
- ))
-
-
- (defadvice find-file-other-frame (before viper-add-suffix-advice activate)
- "Use `read-file-name' for reading arguments."
- (interactive (cons (read-file-name "Find file in other frame: "
- nil default-directory)
- ;; XEmacs: if Mule & prefix arg, ask for coding system
- (cond ((and (featurep 'xemacs) (featurep 'mule))
- (list
- (and current-prefix-arg
- (read-coding-system "Coding-system: "))))
- ;; Emacs: do wildcards
- ((and (featurep 'emacs) (boundp 'find-file-wildcards))
- (list find-file-wildcards))))
- ))
-
-
- (defadvice read-file-name (around viper-suffix-advice activate)
+ ;; FIXME: The default already uses read-file-name, so it looks like this
+ ;; advice is not needed any more.
+ ;; (defadvice find-file (before viper-add-suffix-advice activate)
+ ;; "Use `read-file-name' for reading arguments."
+ ;; (interactive (cons (read-file-name "Find file: " nil default-directory)
+ ;; ;; XEmacs: if Mule & prefix arg, ask for coding system
+ ;; (cond ((and (featurep 'xemacs) (featurep 'mule))
+ ;; (list
+ ;; (and current-prefix-arg
+ ;; (read-coding-system "Coding-system: "))))
+ ;; ;; Emacs: do wildcards
+ ;; ((and (featurep 'emacs) (boundp 'find-file-wildcards))
+ ;; (list find-file-wildcards))))
+ ;; ))
+ ;; (defadvice find-file-other-window (before viper-add-suffix-advice activate)
+ ;; "Use `read-file-name' for reading arguments."
+ ;; (interactive (cons (read-file-name "Find file in other window: "
+ ;; nil default-directory)
+ ;; ;; XEmacs: if Mule & prefix arg, ask for coding system
+ ;; (cond ((and (featurep 'xemacs) (featurep 'mule))
+ ;; (list
+ ;; (and current-prefix-arg
+ ;; (read-coding-system "Coding-system: "))))
+ ;; ;; Emacs: do wildcards
+ ;; ((and (featurep 'emacs) (boundp 'find-file-wildcards))
+ ;; (list find-file-wildcards))))
+ ;; ))
+ ;; (defadvice find-file-other-frame (before viper-add-suffix-advice activate)
+ ;; "Use `read-file-name' for reading arguments."
+ ;; (interactive (cons (read-file-name "Find file in other frame: "
+ ;; nil default-directory)
+ ;; ;; XEmacs: if Mule & prefix arg, ask for coding system
+ ;; (cond ((and (featurep 'xemacs) (featurep 'mule))
+ ;; (list
+ ;; (and current-prefix-arg
+ ;; (read-coding-system "Coding-system: "))))
+ ;; ;; Emacs: do wildcards
+ ;; ((and (featurep 'emacs) (boundp 'find-file-wildcards))
+ ;; (list find-file-wildcards))))
+ ;; ))
+
+
+ (viper--advice-add 'read-file-name :around
+ (lambda (orig-fun &rest args)
"Tell `exit-minibuffer' to run `viper-file-add-suffix' as a hook."
(let ((viper-minibuffer-exit-hook
(append viper-minibuffer-exit-hook
'(viper-minibuffer-trim-tail viper-file-add-suffix))))
- ad-do-it))
+ (apply orig-fun args))))
- (defadvice start-kbd-macro (after viper-kbd-advice activate)
+ (viper--advice-add 'start-kbd-macro :after
+ (lambda (&rest _)
"Remove Viper's intercepting bindings for C-x ).
- This may be needed if the previous `:map' command terminated abnormally."
+This may be needed if the previous `:map' command terminated abnormally."
(define-key viper-vi-intercept-map "\C-x)" nil)
(define-key viper-insert-intercept-map "\C-x)" nil)
- (define-key viper-emacs-intercept-map "\C-x)" nil))
+ (define-key viper-emacs-intercept-map "\C-x)" nil)))
- (defadvice add-minor-mode (after
- viper-advice-add-minor-mode
- (toggle name &optional keymap after toggle-fun)
- activate)
+ (viper--advice-add 'add-minor-mode :after
+ (lambda (&rest _)
"Run viper-normalize-minor-mode-map-alist after adding a minor mode."
(viper-normalize-minor-mode-map-alist)
(unless
(and (fboundp 'add-to-ordered-list) (boundp 'emulation-mode-map-alists))
- (setq-default minor-mode-map-alist minor-mode-map-alist)))
+ (setq-default minor-mode-map-alist minor-mode-map-alist))))
;; catch frame switching event
(if (viper-window-display-p)
(if (featurep 'xemacs)
- (add-hook 'mouse-leave-frame-hook
- 'viper-remember-current-frame)
- (defadvice handle-switch-frame (before viper-frame-advice activate)
- "Remember the selected frame before the switch-frame event."
- (viper-remember-current-frame (selected-frame)))) )
+ (add-hook 'mouse-leave-frame-hook
+ #'viper-remember-current-frame)
+ (viper--advice-add 'handle-switch-frame :before
+ (lambda (&rest _)
+ "Remember the selected frame before the switch-frame event."
+ (viper-remember-current-frame (selected-frame))))))
) ; end viper-non-hook-settings
@@ -1318,97 +1299,83 @@ These two lines must come in the order given."))
(cons 'viper-re-search (list viper-re-search)))))
-(if viper-mode
- (progn
- (viper-set-minibuffer-style)
- (if viper-buffer-search-char
- (viper-buffer-search-enable))
- (viper-update-syntax-classes 'set-default)
- ))
-
-;;; Familiarize Viper with some minor modes that have their own keymaps
-(if viper-mode
- (progn
- (viper-harness-minor-mode "compile")
- (viper-harness-minor-mode "outline")
- (viper-harness-minor-mode "allout")
- (viper-harness-minor-mode "xref")
- (viper-harness-minor-mode "lmenu")
- (viper-harness-minor-mode "vc")
- (viper-harness-minor-mode "ltx-math") ; LaTeX-math-mode in AUC-TeX, which
- (viper-harness-minor-mode "latex") ; sits in one of these two files
- (viper-harness-minor-mode "cyrillic")
- (viper-harness-minor-mode "russian")
- (viper-harness-minor-mode "view-less")
- (viper-harness-minor-mode "view")
- (viper-harness-minor-mode "reftex")
- (viper-harness-minor-mode "flyspell")
- ))
-
-
;; Intercept maps could go in viper-keym.el
;; We keep them here in case someone redefines them in viper-custom-file-name
-(define-key viper-vi-intercept-map viper-ESC-key 'viper-intercept-ESC-key)
-(define-key viper-insert-intercept-map viper-ESC-key 'viper-intercept-ESC-key)
+(define-key viper-vi-intercept-map viper-ESC-key #'viper-intercept-ESC-key)
+(define-key viper-insert-intercept-map viper-ESC-key #'viper-intercept-ESC-key)
;; This is taken care of by viper-insert-global-user-map.
-;;(define-key viper-replace-map viper-ESC-key 'viper-intercept-ESC-key)
+;;(define-key viper-replace-map viper-ESC-key #'viper-intercept-ESC-key)
;; The default viper-toggle-key is \C-z; for the novice, it suspends or
;; iconifies Emacs
(define-key viper-vi-intercept-map viper-toggle-key 'viper-toggle-key-action)
(define-key
- viper-emacs-intercept-map viper-toggle-key 'viper-change-state-to-vi)
+ viper-emacs-intercept-map viper-toggle-key #'viper-change-state-to-vi)
-;;; Removed to avoid bad interaction with cua-mode.
-;;; Escape from Emacs and Insert modes to Vi for one command
+;; Removed to avoid bad interaction with cua-mode.
+;; Escape from Emacs and Insert modes to Vi for one command
;;(define-key viper-emacs-intercept-map "\C-c\\" 'viper-escape-to-vi)
;;(define-key viper-insert-intercept-map "\C-c\\" 'viper-escape-to-vi)
-(if viper-mode
- (setq-default viper-emacs-intercept-minor-mode t
- viper-emacs-local-user-minor-mode t
- viper-emacs-global-user-minor-mode t
- viper-emacs-kbd-minor-mode t
- viper-emacs-state-modifier-minor-mode t))
-(if (and viper-mode (eq viper-current-state 'emacs-state))
- (setq viper-emacs-intercept-minor-mode t
- viper-emacs-local-user-minor-mode t
- viper-emacs-global-user-minor-mode t
- viper-emacs-kbd-minor-mode t
- viper-emacs-state-modifier-minor-mode t))
-
-
-(if (and viper-mode
- (or viper-always
- (and (< viper-expert-level 5) (> viper-expert-level 0))))
- (viper-set-hooks))
-
-;; Let all minor modes take effect after loading.
-;; This may not be enough, so we also set default minor-mode-alist.
-;; Without setting the default, new buffers that come up in emacs mode have
-;; minor-mode-map-alist = nil, unless we call viper-change-state-*
-(if (and viper-mode (eq viper-current-state 'emacs-state))
- (progn
- (viper-change-state-to-emacs)
- (unless
- (and (fboundp 'add-to-ordered-list)
- (boundp 'emulation-mode-map-alists))
- (setq-default minor-mode-map-alist minor-mode-map-alist))
- ))
+(when viper-mode
+ (viper-set-minibuffer-style)
+ (if viper-buffer-search-char
+ (viper-buffer-search-enable))
+ (viper-update-syntax-classes 'set-default)
+
+ ;; Familiarize Viper with some minor modes that have their own keymaps
+ (viper-harness-minor-mode "compile")
+ (viper-harness-minor-mode "outline")
+ (viper-harness-minor-mode "allout")
+ (viper-harness-minor-mode "xref")
+ (viper-harness-minor-mode "lmenu")
+ (viper-harness-minor-mode "vc")
+ (viper-harness-minor-mode "ltx-math") ; LaTeX-math-mode in AUC-TeX, which
+ (viper-harness-minor-mode "latex") ; sits in one of these two files
+ (viper-harness-minor-mode "cyrillic")
+ (viper-harness-minor-mode "russian")
+ (viper-harness-minor-mode "view-less")
+ (viper-harness-minor-mode "view")
+ (viper-harness-minor-mode "reftex")
+ (viper-harness-minor-mode "flyspell")
+
+ (setq-default viper-emacs-intercept-minor-mode t
+ viper-emacs-local-user-minor-mode t
+ viper-emacs-global-user-minor-mode t
+ viper-emacs-kbd-minor-mode t
+ viper-emacs-state-modifier-minor-mode t)
+ (if (eq viper-current-state 'emacs-state)
+ (setq viper-emacs-intercept-minor-mode t
+ viper-emacs-local-user-minor-mode t
+ viper-emacs-global-user-minor-mode t
+ viper-emacs-kbd-minor-mode t
+ viper-emacs-state-modifier-minor-mode t))
+
+
+ (if (or viper-always
+ (and (< viper-expert-level 5) (> viper-expert-level 0)))
+ (viper-set-hooks))
+
+ ;; Let all minor modes take effect after loading.
+ ;; This may not be enough, so we also set default minor-mode-alist.
+ ;; Without setting the default, new buffers that come up in emacs mode have
+ ;; minor-mode-map-alist = nil, unless we call viper-change-state-*
+ (when (eq viper-current-state 'emacs-state)
+ (viper-change-state-to-emacs)
+ (unless
+ (and (fboundp 'add-to-ordered-list)
+ (boundp 'emulation-mode-map-alists))
+ (setq-default minor-mode-map-alist minor-mode-map-alist))
+ )
-(if (and viper-mode (this-major-mode-requires-vi-state major-mode))
- (viper-mode))
+ (if (this-major-mode-requires-vi-state major-mode)
+ (viper-mode))
-(if viper-mode
- (setq initial-major-mode
- `(lambda ()
- (funcall (quote ,initial-major-mode))
- (set-viper-state-in-major-mode))
- ))
+ (add-function :after initial-major-mode #'set-viper-state-in-major-mode))
diff --git a/lisp/epa.el b/lisp/epa.el
index b0b016b706..170744026e 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -34,6 +34,17 @@
:link '(custom-manual "(epa) Top")
:group 'epg)
+(defcustom epa-replace-original-text 'ask
+ "Whether the original text shall be replaced by the decrypted.
+
+If t, replace the original text without any confirmation.
+If nil, don't replace the original text and show the result in a new buffer.
+If neither t nor nil, ask user for confirmation."
+ :type '(choice (const :tag "Never" nil)
+ (const :tag "Ask the user" ask)
+ (const :tag "Always" t))
+ :group 'epa)
+
(defcustom epa-popup-info-window t
"If non-nil, display status information from epa commands in another window."
:type 'boolean
@@ -872,7 +883,9 @@ For example:
(with-current-buffer (funcall make-buffer-function)
(let ((inhibit-read-only t))
(insert plain)))
- (if (y-or-n-p "Replace the original text? ")
+ (if (or (eq epa-replace-original-text t)
+ (and epa-replace-original-text
+ (y-or-n-p "Replace the original text? ")))
(let ((inhibit-read-only t))
(delete-region start end)
(goto-char start)
@@ -968,7 +981,9 @@ For example:
(or coding-system-for-read
(get-text-property start 'epa-coding-system-used)
'undecided)))
- (if (y-or-n-p "Replace the original text? ")
+ (if (or (eq epa-replace-original-text t)
+ (and epa-replace-original-text
+ (y-or-n-p "Replace the original text? ")))
(let ((inhibit-read-only t)
buffer-read-only)
(delete-region start end)
diff --git a/lisp/epg-config.el b/lisp/epg-config.el
index 8a208044cb..02b9e45c9b 100644
--- a/lisp/epg-config.el
+++ b/lisp/epg-config.el
@@ -44,13 +44,17 @@
(defcustom epg-gpg-program (if (executable-find "gpg2")
"gpg2"
"gpg")
- "The `gpg' executable."
+ "The `gpg' executable.
+Setting this variable directly does not take effect;
+instead use \\[customize] (see the info node `Easy Customization')."
:version "25.1"
:group 'epg
:type 'string)
(defcustom epg-gpgsm-program "gpgsm"
- "The `gpgsm' executable."
+ "The `gpgsm' executable.
+Setting this variable directly does not take effect;
+instead use \\[customize] (see the info node `Easy Customization')."
:group 'epg
:type 'string)
@@ -81,57 +85,69 @@ Note that the buffer name starts with a space."
(defconst epg-config--program-alist
'((OpenPGP
epg-gpg-program
- epg-config--make-gpg-configuration
("gpg2" . "2.1.6") ("gpg" . "1.4.3"))
(CMS
epg-gpgsm-program
- epg-config--make-gpgsm-configuration
("gpgsm" . "2.0.4")))
"Alist used to obtain the usable configuration of executables.
The first element of each entry is protocol symbol, which is
either `OpenPGP' or `CMS'. The second element is a symbol where
-the executable name is remembered. The third element is a
-function which constructs a configuration object (actually a
-plist). The rest of the entry is an alist mapping executable
-names to the minimum required version suitable for the use with
-Emacs.")
+the executable name is remembered. The rest of the entry is an
+alist mapping executable names to the minimum required version
+suitable for the use with Emacs.")
+
+(defconst epg-config--configuration-constructor-alist
+ '((OpenPGP . epg-config--make-gpg-configuration)
+ (CMS . epg-config--make-gpgsm-configuration))
+ "Alist used to obtain the usable configuration of executables.
+The first element of each entry is protocol symbol, which is
+either `OpenPGP' or `CMS'. The second element is a function
+which constructs a configuration object (actually a plist).")
(defvar epg--configurations nil)
;;;###autoload
-(defun epg-find-configuration (protocol &optional force)
+(defun epg-find-configuration (protocol &optional no-cache program-alist)
"Find or create a usable configuration to handle PROTOCOL.
This function first looks at the existing configuration found by
-the previous invocation of this function, unless FORCE is non-nil.
-
-Then it walks through `epg-config--program-alist'. If
-`epg-gpg-program' or `epg-gpgsm-program' is already set with
-custom, use it. Otherwise, it tries the programs listed in the
-entry until the version requirement is met."
- (let ((entry (assq protocol epg-config--program-alist)))
+the previous invocation of this function, unless NO-CACHE is non-nil.
+
+Then it walks through PROGRAM-ALIST or
+`epg-config--program-alist'. If `epg-gpg-program' or
+`epg-gpgsm-program' is already set with custom, use it.
+Otherwise, it tries the programs listed in the entry until the
+version requirement is met."
+ (unless program-alist
+ (setq program-alist epg-config--program-alist))
+ (let ((entry (assq protocol program-alist)))
(unless entry
(error "Unknown protocol %S" protocol))
- (cl-destructuring-bind (symbol constructor . alist)
+ (cl-destructuring-bind (symbol . alist)
(cdr entry)
- (or (and (not force) (alist-get protocol epg--configurations))
- ;; If the executable value is already set with M-x
- ;; customize, use it without checking.
- (if (get symbol 'saved-value)
- (let ((configuration (funcall constructor (symbol-value symbol))))
- (push (cons protocol configuration) epg--configurations)
- configuration)
- (catch 'found
- (dolist (program-version alist)
- (let ((executable (executable-find (car program-version))))
- (when executable
- (let ((configuration
- (funcall constructor executable)))
- (when (ignore-errors
- (epg-check-configuration configuration
- (cdr program-version))
- t)
- (push (cons protocol configuration) epg--configurations)
- (throw 'found configuration))))))))))))
+ (let ((constructor
+ (alist-get protocol epg-config--configuration-constructor-alist)))
+ (or (and (not no-cache) (alist-get protocol epg--configurations))
+ ;; If the executable value is already set with M-x
+ ;; customize, use it without checking.
+ (if (and symbol (get symbol 'saved-value))
+ (let ((configuration
+ (funcall constructor (symbol-value symbol))))
+ (push (cons protocol configuration) epg--configurations)
+ configuration)
+ (catch 'found
+ (dolist (program-version alist)
+ (let ((executable (executable-find (car program-version))))
+ (when executable
+ (let ((configuration
+ (funcall constructor executable)))
+ (when (ignore-errors
+ (epg-check-configuration configuration
+ (cdr program-version))
+ t)
+ (unless no-cache
+ (push (cons protocol configuration)
+ epg--configurations))
+ (throw 'found configuration)))))))))))))
;; Create an `epg-configuration' object for `gpg', using PROGRAM.
(defun epg-config--make-gpg-configuration (program)
diff --git a/lisp/epg.el b/lisp/epg.el
index f4058ed35a..315eb40f0a 100644
--- a/lisp/epg.el
+++ b/lisp/epg.el
@@ -604,9 +604,13 @@ callback data (if any)."
(setq process-environment
(cons (concat "GPG_TTY=" terminal-name)
(cons "TERM=xterm" process-environment))))
- ;; Start the Emacs Pinentry server if allow-emacs-pinentry is set
- ;; in ~/.gnupg/gpg-agent.conf.
+ ;; Automatically start the Emacs Pinentry server if appropriate.
(when (and (fboundp 'pinentry-start)
+ ;; Emacs Pinentry is useless if Emacs has no interactive session.
+ (not noninteractive)
+ ;; Prefer pinentry-mode over Emacs Pinentry.
+ (null (epg-context-pinentry-mode context))
+ ;; Check if the allow-emacs-pinentry option is set.
(executable-find epg-gpgconf-program)
(with-temp-buffer
(when (= (call-process epg-gpgconf-program nil t nil
@@ -1749,12 +1753,7 @@ If optional 3rd argument MODE is t or `detached', it makes a detached signature.
If it is nil or `normal', it makes a normal signature.
Otherwise, it makes a cleartext signature."
(let ((input-file
- (unless (or (eq (epg-context-protocol context) 'CMS)
- (condition-case nil
- (progn
- (epg-check-configuration (epg-configuration))
- t)
- (error)))
+ (unless (eq (epg-context-protocol context) 'CMS)
(epg--make-temp-file "epg-input")))
(coding-system-for-write 'binary))
(unwind-protect
@@ -1861,12 +1860,7 @@ If RECIPIENTS is nil, it performs symmetric encryption."
If RECIPIENTS is nil, it performs symmetric encryption."
(let ((input-file
(unless (or (not sign)
- (eq (epg-context-protocol context) 'CMS)
- (condition-case nil
- (progn
- (epg-check-configuration (epg-configuration))
- t)
- (error)))
+ (eq (epg-context-protocol context) 'CMS))
(epg--make-temp-file "epg-input")))
(coding-system-for-write 'binary))
(unwind-protect
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 6d508e203f..bbb7ccbc99 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -1,4 +1,4 @@
-;;; erc-backend.el --- Backend network communication for ERC
+;;; erc-backend.el --- Backend network communication for ERC -*- lexical-binding:t -*-
;; Copyright (C) 2004-2016 Free Software Foundation, Inc.
@@ -376,7 +376,7 @@ alist."
:type '(repeat (cons (string :tag "Target")
coding-system)))
-(defcustom erc-server-connect-function 'erc-open-network-stream
+(defcustom erc-server-connect-function #'erc-open-network-stream
"Function used to initiate a connection.
It should take same arguments as `open-network-stream' does."
:group 'erc-server
@@ -549,47 +549,45 @@ The current buffer is given by BUFFER."
(defun erc-server-connect (server port buffer)
"Perform the connection and login using the specified SERVER and PORT.
We will store server variables in the buffer given by BUFFER."
- (let ((msg (erc-format-message 'connect ?S server ?p port)))
+ (let ((msg (erc-format-message 'connect ?S server ?p port)) process)
(message "%s" msg)
- (let ((process (funcall erc-server-connect-function
- (format "erc-%s-%s" server port)
- nil server port)))
- (unless (processp process)
- (error "Connection attempt failed"))
+ (setq process (funcall erc-server-connect-function
+ (format "erc-%s-%s" server port) nil server port))
+ (unless (processp process)
+ (error "Connection attempt failed"))
+ ;; Misc server variables
+ (with-current-buffer buffer
+ (setq erc-server-process process)
+ (setq erc-server-quitting nil)
+ (setq erc-server-reconnecting nil)
+ (setq erc-server-timed-out nil)
+ (setq erc-server-banned nil)
+ (setq erc-server-error-occurred nil)
+ (let ((time (erc-current-time)))
+ (setq erc-server-last-sent-time time)
+ (setq erc-server-last-ping-time time)
+ (setq erc-server-last-received-time time))
+ (setq erc-server-lines-sent 0)
+ ;; last peers (sender and receiver)
+ (setq erc-server-last-peers '(nil . nil)))
+ ;; we do our own encoding and decoding
+ (when (fboundp 'set-process-coding-system)
+ (set-process-coding-system process 'raw-text))
+ ;; process handlers
+ (set-process-sentinel process #'erc-process-sentinel)
+ (set-process-filter process #'erc-server-filter-function)
+ (set-process-buffer process buffer)
+ (erc-log "\n\n\n********************************************\n")
+ (message "%s" (erc-format-message
+ 'login ?n
+ (with-current-buffer buffer (erc-current-nick))))
+ ;; wait with script loading until we receive a confirmation (first
+ ;; MOTD line)
+ (if (eq (process-status process) 'connect)
+ ;; waiting for a non-blocking connect - keep the user informed
+ (erc-display-message nil nil buffer "Opening connection..\n")
(message "%s...done" msg)
- ;; Misc server variables
- (with-current-buffer buffer
- (setq erc-server-process process)
- (setq erc-server-quitting nil)
- (setq erc-server-reconnecting nil)
- (setq erc-server-timed-out nil)
- (setq erc-server-banned nil)
- (setq erc-server-error-occurred nil)
- (let ((time (erc-current-time)))
- (setq erc-server-last-sent-time time)
- (setq erc-server-last-ping-time time)
- (setq erc-server-last-received-time time))
- (setq erc-server-lines-sent 0)
- ;; last peers (sender and receiver)
- (setq erc-server-last-peers '(nil . nil)))
- ;; we do our own encoding and decoding
- (when (fboundp 'set-process-coding-system)
- (set-process-coding-system process 'raw-text))
- ;; process handlers
- (set-process-sentinel process 'erc-process-sentinel)
- (set-process-filter process 'erc-server-filter-function)
- (set-process-buffer process buffer)))
- (erc-log "\n\n\n********************************************\n")
- (message "%s" (erc-format-message
- 'login ?n
- (with-current-buffer buffer (erc-current-nick))))
- ;; wait with script loading until we receive a confirmation (first
- ;; MOTD line)
- (if (eq erc-server-connect-function 'open-network-stream-nowait)
- ;; it's a bit unclear otherwise that it's attempting to establish a
- ;; connection
- (erc-display-message nil nil buffer "Opening connection..\n")
- (erc-login)))
+ (erc-login)) ))
(defun erc-server-reconnect ()
"Reestablish the current IRC connection.
@@ -605,11 +603,11 @@ Make sure you are in an ERC buffer when running this."
(setq erc-server-last-sent-time 0)
(setq erc-server-lines-sent 0)
(let ((erc-server-connect-function (or erc-session-connector
- 'erc-open-network-stream)))
+ #'erc-open-network-stream)))
(erc-open erc-session-server erc-session-port erc-server-current-nick
erc-session-user-full-name t erc-session-password)))))
-(defun erc-server-delayed-reconnect (event buffer)
+(defun erc-server-delayed-reconnect (buffer)
(if (buffer-live-p buffer)
(with-current-buffer buffer
(erc-server-reconnect))))
@@ -650,7 +648,6 @@ EVENT is the message received from the closed connection process."
(or erc-server-reconnecting
(and erc-server-auto-reconnect
(not erc-server-banned)
- (not erc-server-error-occurred)
;; make sure we don't infinitely try to reconnect, unless the
;; user wants that
(or (eq erc-server-reconnect-attempts t)
@@ -679,18 +676,18 @@ EVENT is the message received from the closed connection process."
(erc-update-mode-line)
(set-buffer-modified-p nil))
;; reconnect
- (condition-case err
+ (condition-case nil
(progn
(setq erc-server-reconnecting nil
erc-server-reconnect-count (1+ erc-server-reconnect-count))
(setq delay erc-server-reconnect-timeout)
(run-at-time delay nil
- #'erc-server-delayed-reconnect event buffer))
+ #'erc-server-delayed-reconnect buffer))
(error (unless (integerp erc-server-reconnect-attempts)
(message "%s ... %s"
"Reconnecting until we succeed"
"kill the ERC server buffer to stop"))
- (erc-server-delayed-reconnect event buffer))))))))
+ (erc-server-delayed-reconnect buffer))))))))
(defun erc-process-sentinel-1 (event buffer)
"Called when `erc-process-sentinel' has decided that we're disconnecting.
@@ -813,7 +810,7 @@ protection algorithm."
(+ erc-server-flood-penalty
erc-server-flood-last-message))
(erc-log-irc-protocol str 'outbound)
- (condition-case err
+ (condition-case nil
(progn
;; Set encoding just before sending the string
(when (fboundp 'set-process-coding-system)
@@ -880,7 +877,7 @@ protection algorithm."
(erc-log (concat "erc-server-send-queue: "
msg "(" (buffer-name buffer) ")"))
(when (erc-server-process-alive)
- (condition-case err
+ (condition-case nil
;; Set encoding just before sending the string
(progn
(when (fboundp 'set-process-coding-system)
@@ -1071,7 +1068,7 @@ Finds hooks by looking in the `erc-server-responses' hashtable."
(erc-with-server-buffer
(run-hook-with-args 'erc-timer-hook (erc-current-time)))))
-(add-hook 'erc-default-server-functions 'erc-handle-unknown-server-response)
+(add-hook 'erc-default-server-functions #'erc-handle-unknown-server-response)
(defun erc-handle-unknown-server-response (proc parsed)
"Display unknown server response's message."
@@ -1079,7 +1076,7 @@ Finds hooks by looking in the `erc-server-responses' hashtable."
" "
(erc-response.command parsed)
" "
- (mapconcat 'identity (erc-response.command-args parsed)
+ (mapconcat #'identity (erc-response.command-args parsed)
" "))))
(erc-display-message parsed 'notice proc line)))
@@ -1210,10 +1207,11 @@ add things to `%s' instead."
;; value at this point, so I default to nil, and (add-hook)
;; unconditionally
(defvar ,hook-name nil ,(format hook-doc name))
- (add-to-list ',hook-name ',fn-name)
+ (add-hook ',hook-name #',fn-name)
;; Handler function
(defun ,fn-name (proc parsed)
,fn-doc
+ (ignore proc parsed)
,@fn-body)
;; Make find-function and find-variable find them
@@ -1326,7 +1324,7 @@ add things to `%s' instead."
(define-erc-response-handler (MODE)
"Handle server mode changes." nil
(let ((tgt (car (erc-response.command-args parsed)))
- (mode (mapconcat 'identity (cdr (erc-response.command-args parsed))
+ (mode (mapconcat #'identity (cdr (erc-response.command-args parsed))
" ")))
(pcase-let ((`(,nick ,login ,host)
(erc-parse-user (erc-response.sender parsed))))
@@ -1368,11 +1366,11 @@ add things to `%s' instead."
(cons nn (cdr erc-default-recipients)))
(rename-buffer nn t) ; bug#12002
(erc-update-mode-line)
- (add-to-list 'bufs (current-buffer)))))
+ (cl-pushnew (current-buffer) bufs))))
(erc-update-user-nick nick nn host nil nil login)
(cond
((string= nick (erc-current-nick))
- (add-to-list 'bufs (erc-server-buffer))
+ (cl-pushnew (erc-server-buffer) bufs)
(erc-set-current-nick nn)
(erc-update-mode-line)
(setq erc-nick-change-attempt-count 0)
@@ -1493,7 +1491,7 @@ add things to `%s' instead."
;; FIXME: need clean way of specifying extra hooks in
;; define-erc-response-handler.
-(add-hook 'erc-server-PRIVMSG-functions 'erc-auto-query)
+(add-hook 'erc-server-PRIVMSG-functions #'erc-auto-query)
(define-erc-response-handler (QUIT)
"Another user has quit IRC." nil
@@ -1524,7 +1522,7 @@ add things to `%s' instead."
(define-erc-response-handler (WALLOPS)
"Display a WALLOPS message." nil
(let ((message (erc-response.contents parsed)))
- (pcase-let ((`(,nick ,login ,host)
+ (pcase-let ((`(,nick ,_login ,_host)
(erc-parse-user (erc-response.sender parsed))))
(erc-display-message
parsed 'notice nil
@@ -1576,7 +1574,7 @@ certain commands are accepted and more. See documentation for
A server may send more than one 005 message."
nil
- (let ((line (mapconcat 'identity
+ (let ((line (mapconcat #'identity
(setf (erc-response.command-args parsed)
(cdr (erc-response.command-args parsed)))
" ")))
@@ -1595,7 +1593,7 @@ A server may send more than one 005 message."
(define-erc-response-handler (221)
"Display the current user modes." nil
(let* ((nick (car (erc-response.command-args parsed)))
- (modes (mapconcat 'identity
+ (modes (mapconcat #'identity
(cdr (erc-response.command-args parsed)) " ")))
(erc-set-modes nick modes)
(erc-display-message parsed 'notice 'active 's221 ?n nick ?m modes)))
@@ -1623,12 +1621,12 @@ See `erc-display-server-message'." nil
(define-erc-response-handler (275)
"Display secure connection message." nil
- (pcase-let ((`(,nick ,user ,message)
+ (pcase-let ((`(,nick ,_user ,_message)
(cdr (erc-response.command-args parsed))))
(erc-display-message
parsed 'notice 'active 's275
?n nick
- ?m (mapconcat 'identity (cddr (erc-response.command-args parsed))
+ ?m (mapconcat #'identity (cddr (erc-response.command-args parsed))
" "))))
(define-erc-response-handler (290)
@@ -1659,12 +1657,12 @@ See `erc-display-server-message'." nil
(define-erc-response-handler (307)
"Display nick-identified message." nil
- (pcase-let ((`(,nick ,user ,message)
+ (pcase-let ((`(,nick ,_user ,_message)
(cdr (erc-response.command-args parsed))))
(erc-display-message
parsed 'notice 'active 's307
?n nick
- ?m (mapconcat 'identity (cddr (erc-response.command-args parsed))
+ ?m (mapconcat #'identity (cddr (erc-response.command-args parsed))
" "))))
(define-erc-response-handler (311 314)
@@ -1738,12 +1736,12 @@ See `erc-display-server-message'." nil
"Display a message for the 321 event."
(erc-display-message parsed 'notice proc 's321)
nil)
-(add-hook 'erc-server-321-functions 'erc-server-321-message t)
+(add-hook 'erc-server-321-functions #'erc-server-321-message t)
(define-erc-response-handler (322)
"LIST notice." nil
(let ((topic (erc-response.contents parsed)))
- (pcase-let ((`(,channel ,num-users)
+ (pcase-let ((`(,channel ,_num-users)
(cdr (erc-response.command-args parsed))))
(add-to-list 'erc-channel-list (list channel))
(erc-update-channel-topic channel topic))))
@@ -1756,12 +1754,12 @@ See `erc-display-server-message'." nil
(erc-display-message
parsed 'notice proc 's322
?c channel ?u num-users ?t (or topic "")))))
-(add-hook 'erc-server-322-functions 'erc-server-322-message t)
+(add-hook 'erc-server-322-functions #'erc-server-322-message t)
(define-erc-response-handler (324)
"Channel or nick modes." nil
(let ((channel (cadr (erc-response.command-args parsed)))
- (modes (mapconcat 'identity (cddr (erc-response.command-args parsed))
+ (modes (mapconcat #'identity (cddr (erc-response.command-args parsed))
" ")))
(erc-set-modes channel modes)
(erc-display-message
@@ -1803,8 +1801,7 @@ See `erc-display-server-message'." nil
(define-erc-response-handler (331)
"No topic set for channel." nil
- (let ((channel (cadr (erc-response.command-args parsed)))
- (topic (erc-response.contents parsed)))
+ (let ((channel (cadr (erc-response.command-args parsed))))
(erc-display-message parsed 'notice (erc-get-buffer channel proc)
's331 ?c channel)))
@@ -1838,12 +1835,10 @@ See `erc-display-server-message'." nil
(define-erc-response-handler (352)
"WHO notice." nil
- (pcase-let ((`(,channel ,user ,host ,server ,nick ,away-flag)
+ (pcase-let ((`(,channel ,user ,host ,_server ,nick ,away-flag)
(cdr (erc-response.command-args parsed))))
- (let ((full-name (erc-response.contents parsed))
- hopcount)
+ (let ((full-name (erc-response.contents parsed)))
(when (string-match "\\(^[0-9]+ \\)\\(.*\\)$" full-name)
- (setq hopcount (match-string 1 full-name))
(setq full-name (match-string 2 full-name)))
(erc-update-channel-member channel nick nick nil nil nil nil nil nil host user full-name)
(erc-display-message parsed 'notice 'active 's352
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 7d50919633..f63ac17ab4 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -390,9 +390,9 @@ REGEXP is the regular expression which matched for this button."
;; merged correctly. If we use overlays, then redisplay will be
;; very slow with lots of buttons. This is why we manually merge
;; face text properties.
- (let ((old (erc-list (get-text-property from 'face)))
+ (let ((old (erc-list (get-text-property from 'font-lock-face)))
(pos from)
- (end (next-single-property-change from 'face nil to))
+ (end (next-single-property-change from 'font-lock-face nil to))
new)
;; old is the face at pos, in list form. It is nil if there is no
;; face at pos. If nil, the new face is FACE. If not nil, the
@@ -400,10 +400,10 @@ REGEXP is the regular expression which matched for this button."
;; where this face changes.
(while (< pos to)
(setq new (if old (cons face old) face))
- (put-text-property pos end 'face new)
+ (put-text-property pos end 'font-lock-face new)
(setq pos end
- old (erc-list (get-text-property pos 'face))
- end (next-single-property-change pos 'face nil to)))))
+ old (erc-list (get-text-property pos 'font-lock-face))
+ end (next-single-property-change pos 'font-lock-face nil to)))))
;; widget-button-click calls with two args, we ignore the first.
;; Since Emacs runs this directly, rather than with
diff --git a/lisp/erc/erc-capab.el b/lisp/erc/erc-capab.el
index 4b956cc01a..1a93e21210 100644
--- a/lisp/erc/erc-capab.el
+++ b/lisp/erc/erc-capab.el
@@ -191,7 +191,8 @@ PARSED is an `erc-parsed' response struct."
(re-search-forward (regexp-quote nickname) nil t))
(goto-char (match-beginning 0))
(insert (erc-propertize erc-capab-identify-prefix
- 'face 'erc-capab-identify-unidentified))))))
+ 'font-lock-face
+ 'erc-capab-identify-unidentified))))))
(defun erc-capab-identify-get-unidentified-nickname (parsed)
"Return the nickname of the user if unidentified.
diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el
index 5e03d30bf9..e5e63092df 100644
--- a/lisp/erc/erc-compat.el
+++ b/lisp/erc/erc-compat.el
@@ -54,10 +54,10 @@ See `erc-encoding-coding-alist'."
(set (make-local-variable 'write-file-functions) new-val))
(defvar erc-emacs-build-time
- (if (stringp emacs-build-time)
+ (if (or (stringp emacs-build-time) (not emacs-build-time))
emacs-build-time
(format-time-string "%Y-%m-%d" emacs-build-time))
- "Time at which Emacs was dumped out.")
+ "Time at which Emacs was dumped out, or nil if not available.")
;; Emacs 21 and XEmacs do not have user-emacs-directory, but XEmacs
;; has user-init-directory.
@@ -164,4 +164,3 @@ If START or END is negative, it counts from the end."
;; indent-tabs-mode: t
;; tab-width: 8
;; End:
-
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index 1bf380d47d..9152527d4b 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -1205,7 +1205,7 @@ other client."
(setq posn (match-end 0))
(erc-display-message
nil nil proc
- 'dcc-chat-privmsg ?n (erc-propertize erc-dcc-from 'face
+ 'dcc-chat-privmsg ?n (erc-propertize erc-dcc-from 'font-lock-face
'erc-nick-default-face) ?m line))
(setq erc-dcc-unprocessed-output (substring str posn)))))
diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el
index 2a1d18720a..afe8c555ce 100644
--- a/lisp/erc/erc-goodies.el
+++ b/lisp/erc/erc-goodies.el
@@ -475,7 +475,7 @@ to a region in the current buffer."
(font-lock-prepend-text-property
from
to
- 'face
+ 'font-lock-face
(append (if boldp
'(erc-bold-face)
nil)
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 1313ecc607..4104a43399 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -486,7 +486,7 @@ Use this defun with `erc-insert-modify-hook'."
nick-end)
(erc-put-text-property
nick-beg nick-end
- 'face match-face (current-buffer)))
+ 'font-lock-face match-face (current-buffer)))
;; Highlight the nick of the message, or the current
;; nick if there's no nick in the message (e.g. /NAMES
;; output)
@@ -495,17 +495,17 @@ Use this defun with `erc-insert-modify-hook'."
(if nick-end
(erc-put-text-property
nick-beg nick-end
- 'face match-face (current-buffer))
+ 'font-lock-face match-face (current-buffer))
(goto-char (+ 2 (or nick-end
(point-min))))
(while (re-search-forward match-regex nil t)
(erc-put-text-property (match-beginning 0) (match-end 0)
- 'face match-face))))
+ 'font-lock-face match-face))))
;; Highlight the whole message
((eq match-htype 'all)
(erc-put-text-property
(point-min) (point-max)
- 'face match-face (current-buffer)))
+ 'font-lock-face match-face (current-buffer)))
;; Highlight all occurrences of the word to be
;; highlighted.
((and (string= match-type "keyword")
@@ -521,7 +521,7 @@ Use this defun with `erc-insert-modify-hook'."
(while (re-search-forward regex nil t)
(erc-put-text-property
(match-beginning 0) (match-end 0)
- 'face face))))
+ 'font-lock-face face))))
match-regex))
;; Highlight all occurrences of our nick.
((and (string= match-type "current-nick")
@@ -530,7 +530,7 @@ Use this defun with `erc-insert-modify-hook'."
(point-min))))
(while (re-search-forward match-regex nil t)
(erc-put-text-property (match-beginning 0) (match-end 0)
- 'face match-face)))
+ 'font-lock-face match-face)))
;; Else twiddle your thumbs.
(t nil))
(run-hook-with-args
diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el
index a4c91ca9fb..ee4e1d2fb6 100644
--- a/lisp/erc/erc-stamp.el
+++ b/lisp/erc/erc-stamp.el
@@ -347,7 +347,8 @@ changed, it will then print it off to the right."
Return the empty string if FORMAT is nil."
(if format
(let ((ts (format-time-string format time)))
- (erc-put-text-property 0 (length ts) 'face 'erc-timestamp-face ts)
+ (erc-put-text-property 0 (length ts)
+ 'font-lock-face 'erc-timestamp-face ts)
(erc-put-text-property 0 (length ts) 'invisible 'timestamp ts)
(erc-put-text-property 0 (length ts)
'isearch-open-invisible 'timestamp ts)
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 4d8feb5275..a6d72d07d1 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -480,99 +480,6 @@ START is the minimum length of the name used."
(setq result other)))
result))
-;;; Test:
-
-(cl-assert
- (and
- ;; verify examples from the doc strings
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("#emacs" "#vi" "#electronica" "#folk")
- '("#emacs" "#vi")))
- '("#em" "#vi")) ; emacs is different from electronica
- (equal (let ((erc-track-shorten-aggressively t))
- (erc-unique-channel-names
- '("#emacs" "#vi" "#electronica" "#folk")
- '("#emacs" "#vi")))
- '("#em" "#v")) ; vi is shortened by one letter
- (equal (let ((erc-track-shorten-aggressively 'max))
- (erc-unique-channel-names
- '("#emacs" "#vi" "#electronica" "#folk")
- '("#emacs" "#vi")))
- '("#e" "#v")) ; emacs need not be different from electronica
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("#linux-de" "#linux-fr")
- '("#linux-de" "#linux-fr")))
- '("#linux-de" "#linux-fr")) ; shortening by one letter is too aggressive
- (equal (let ((erc-track-shorten-aggressively t))
- (erc-unique-channel-names
- '("#linux-de" "#linux-fr")
- '("#linux-de" "#linux-fr")))
- '("#linux-d" "#linux-f")); now we want to be aggressive
- ;; specific problems
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("#dunnet" "#lisp" "#sawfish" "#fsf" "#guile"
- "#testgnome" "#gnu" "#fsbot" "#hurd" "#hurd-bunny"
- "#emacs")
- '("#hurd-bunny" "#hurd" "#sawfish" "#lisp")))
- '("#hurd-" "#hurd" "#s" "#l"))
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-substrings
- '("#emacs" "#vi" "#electronica" "#folk")))
- '("#em" "#vi" "#el" "#f"))
- (equal (let ((erc-track-shorten-aggressively t))
- (erc-unique-substrings
- '("#emacs" "#vi" "#electronica" "#folk")))
- '("#em" "#v" "#el" "#f"))
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("#emacs" "#burse" "+linux.de" "#starwars"
- "#bitlbee" "+burse" "#ratpoison")
- '("+linux.de" "#starwars" "#burse")))
- '("+l" "#s" "#bu"))
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("fsbot" "#emacs" "deego")
- '("fsbot")))
- '("fs"))
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("fsbot" "#emacs" "deego")
- '("fsbot")
- (lambda (s)
- (> (length s) 4))
- 1))
- '("f"))
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("fsbot" "#emacs" "deego")
- '("fsbot")
- (lambda (s)
- (> (length s) 4))
- 2))
- '("fs"))
- (let ((erc-track-shorten-aggressively nil))
- (equal (erc-unique-channel-names '("deego" "#hurd" "#hurd-bunny" "#emacs")
- '("#hurd" "#hurd-bunny"))
- '("#hurd" "#hurd-")))
- ;; general examples
- (let ((erc-track-shorten-aggressively t))
- (and (equal (erc-unique-substring-1 "abc" '("ab" "abcd")) "abcd")
- (not (erc-unique-substring-1 "a" '("xyz" "xab")))
- (equal (erc-unique-substrings '("abc" "xyz" "xab"))
- '("ab" "xy" "xa"))
- (equal (erc-unique-substrings '("abc" "abcdefg"))
- '("abc" "abcd"))))
- (let ((erc-track-shorten-aggressively nil))
- (and (equal (erc-unique-substring-1 "abc" '("ab" "abcd")) "abcd")
- (not (erc-unique-substring-1 "a" '("xyz" "xab")))
- (equal (erc-unique-substrings '("abc" "xyz" "xab"))
- '("abc" "xyz" "xab"))
- (equal (erc-unique-substrings '("abc" "abcdefg"))
- '("abc" "abcd"))))))
-
;;; Minor mode
;; Play nice with other IRC clients (and Emacs development rules) by
@@ -981,13 +888,6 @@ is in `erc-mode'."
(push cur faces)))
faces))
-(cl-assert
- (let ((str "is bold"))
- (put-text-property 3 (length str)
- 'face '(bold erc-current-nick-face)
- str)
- (erc-faces-in str)))
-
;;; Buffer switching
(defvar erc-track-last-non-erc-buffer nil
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 1a126a8034..8501e2cba7 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1474,6 +1474,10 @@ Defaults to the server buffer."
(defconst erc-default-port 6667
"IRC port to use if it cannot be detected otherwise.")
+(defconst erc-default-port-tls 6697
+ "IRC port to use for encrypted connections if it cannot be
+ detected otherwise.")
+
(defcustom erc-join-buffer 'buffer
"Determines how to display a newly created IRC buffer.
@@ -2200,7 +2204,8 @@ be invoked for the values of the other parameters."
(defun erc-tls (&rest r)
"Interactively select TLS connection parameters and run ERC.
Arguments are the same as for `erc'."
- (interactive (erc-select-read-args))
+ (interactive (let ((erc-default-port erc-default-port-tls))
+ (erc-select-read-args)))
(let ((erc-server-connect-function 'erc-open-tls-stream))
(apply #'erc r)))
@@ -2271,7 +2276,7 @@ and appears in face `erc-input-face' in the buffer."
(aref string
(1- (length string))))
"\n"))
- 'face 'erc-input-face)))))
+ 'font-lock-face 'erc-input-face)))))
(let ((orig-win (selected-window))
(debug-buffer-window (get-buffer-window (current-buffer) t)))
(when debug-buffer-window
@@ -2461,9 +2466,9 @@ See also `erc-make-notice'."
(t
(erc-put-text-property
0 (length string)
- 'face (or (intern-soft
- (concat "erc-" (symbol-name type) "-face"))
- "erc-default-face")
+ 'font-lock-face (or (intern-soft
+ (concat "erc-" (symbol-name type) "-face"))
+ "erc-default-face")
string)
string)))
@@ -3576,7 +3581,7 @@ the message given by REASON."
(defun erc-cmd-SV ()
"Say the current ERC and Emacs version into channel."
- (erc-send-message (format "I'm using ERC with %s %s (%s%s) of %s."
+ (erc-send-message (format "I'm using ERC with %s %s (%s%s)%s."
(if (featurep 'xemacs) "XEmacs" "GNU Emacs")
emacs-version
system-configuration
@@ -3597,7 +3602,9 @@ the message given by REASON."
x-toolkit-scroll-bars)))
"")
(if (featurep 'multi-tty) ", multi-tty" ""))
- erc-emacs-build-time))
+ (if erc-emacs-build-time
+ (concat " of " erc-emacs-build-time)
+ "")))
t)
(defun erc-cmd-SM ()
@@ -3890,7 +3897,7 @@ If FACE is non-nil, it will be used to propertize the prompt. If it is nil,
'front-sticky t
'read-only t))
(erc-put-text-property 0 (1- (length prompt))
- 'face (or face 'erc-prompt-face)
+ 'font-lock-face (or face 'erc-prompt-face)
prompt)
(insert prompt))
;; Set the input marker
@@ -4253,11 +4260,11 @@ and as second argument the event parsed as a vector."
(nick-face (if privp 'erc-nick-msg-face 'erc-nick-default-face))
(msg-face (if privp 'erc-direct-msg-face 'erc-default-face)))
;; add text properties to text before the nick, the nick and after the nick
- (erc-put-text-property 0 (length mark-s) 'face msg-face str)
+ (erc-put-text-property 0 (length mark-s) 'font-lock-face msg-face str)
(erc-put-text-property (length mark-s) (+ (length mark-s) (length nick))
- 'face nick-face str)
+ 'font-lock-face nick-face str)
(erc-put-text-property (+ (length mark-s) (length nick)) (length str)
- 'face msg-face str)
+ 'font-lock-face msg-face str)
str))
(defcustom erc-format-nick-function 'erc-format-nick
@@ -4294,7 +4301,7 @@ also `erc-format-nick-function'."
(let ((nick (erc-server-user-nickname user)))
(concat (erc-propertize
(erc-get-user-mode-prefix nick)
- 'face 'erc-nick-prefix-face)
+ 'font-lock-face 'erc-nick-prefix-face)
nick))))
(defun erc-format-my-nick ()
@@ -4305,12 +4312,12 @@ also `erc-format-nick-function'."
(nick (erc-current-nick))
(mode (erc-get-user-mode-prefix nick)))
(concat
- (erc-propertize open 'face 'erc-default-face)
- (erc-propertize mode 'face 'erc-my-nick-prefix-face)
- (erc-propertize nick 'face 'erc-my-nick-face)
- (erc-propertize close 'face 'erc-default-face)))
+ (erc-propertize open 'font-lock-face 'erc-default-face)
+ (erc-propertize mode 'font-lock-face 'erc-my-nick-prefix-face)
+ (erc-propertize nick 'font-lock-face 'erc-my-nick-face)
+ (erc-propertize close 'font-lock-face 'erc-default-face)))
(let ((prefix "> "))
- (erc-propertize prefix 'face 'erc-default-face))))
+ (erc-propertize prefix 'font-lock-face 'erc-default-face))))
(defun erc-echo-notice-in-default-buffer (s parsed buffer _sender)
"Echos a private notice in the default buffer, namely the
@@ -5231,10 +5238,10 @@ See also variable `erc-notice-highlight-type'."
(cond
((eq erc-notice-highlight-type 'prefix)
(erc-put-text-property 0 (length erc-notice-prefix)
- 'face 'erc-notice-face s)
+ 'font-lock-face 'erc-notice-face s)
s)
((eq erc-notice-highlight-type 'all)
- (erc-put-text-property 0 (length s) 'face 'erc-notice-face s)
+ (erc-put-text-property 0 (length s) 'font-lock-face 'erc-notice-face s)
s)
(t s)))
@@ -5246,7 +5253,7 @@ See also variable `erc-notice-highlight-type'."
(defun erc-highlight-error (s)
"Highlight error message S and return it."
- (erc-put-text-property 0 (length s) 'face 'erc-error-face s)
+ (erc-put-text-property 0 (length s) 'font-lock-face 'erc-error-face s)
s)
(defun erc-put-text-property (start end property value &optional object)
@@ -5436,7 +5443,7 @@ This returns non-nil only if we actually send anything."
(let ((beg (point)))
(insert line)
(erc-put-text-property beg (point)
- 'face 'erc-command-indicator-face)
+ 'font-lock-face 'erc-command-indicator-face)
(insert "\n"))
(when (processp erc-server-process)
(set-marker (process-mark erc-server-process) (point)))
@@ -5456,7 +5463,7 @@ current position."
(let ((beg (point)))
(insert line)
(erc-put-text-property beg (point)
- 'face 'erc-input-face))
+ 'font-lock-face 'erc-input-face))
(insert "\n")
(when (processp erc-server-process)
(set-marker (process-mark erc-server-process) (point)))
@@ -5880,7 +5887,7 @@ user input."
(setq args (substring args 1)))
;; prepare the prompt string for echo
(erc-put-text-property 0 (length sp)
- 'face 'erc-command-indicator-face sp)
+ 'font-lock-face 'erc-command-indicator-face sp)
(while lines
(setq s (car lines))
(erc-log (concat "erc-load-script: CMD: " s))
@@ -5890,7 +5897,7 @@ user input."
erc-script-echo)
(progn
(erc-put-text-property 0 (length line)
- 'face 'erc-input-face line)
+ 'font-lock-face 'erc-input-face line)
(erc-display-line (concat sp line) cb)))))
(setq lines (cdr lines)))))
@@ -6000,10 +6007,8 @@ Returns a list of the form (HIGH LOW), compatible with Emacs time format."
(list (truncate (/ n 65536))
(truncate (mod n 65536)))))
-(defalias 'erc-emacs-time-to-erc-time
- (if (featurep 'xemacs) 'time-to-seconds 'float-time))
-
-(defalias 'erc-current-time 'erc-emacs-time-to-erc-time)
+(defalias 'erc-emacs-time-to-erc-time 'float-time)
+(defalias 'erc-current-time 'float-time)
(defun erc-time-diff (t1 t2)
"Return the time difference in seconds between T1 and T2."
diff --git a/lisp/eshell/em-ls.el b/lisp/eshell/em-ls.el
index cf6609ff72..8616dd2479 100644
--- a/lisp/eshell/em-ls.el
+++ b/lisp/eshell/em-ls.el
@@ -101,46 +101,36 @@ faster and conserves more memory."
(((class color) (background dark)) (:foreground "SkyBlue" :weight bold))
(t (:weight bold)))
"The face used for highlighting directories.")
-(define-obsolete-face-alias 'eshell-ls-directory-face
- 'eshell-ls-directory "22.1")
(defface eshell-ls-symlink
'((((class color) (background light)) (:foreground "Dark Cyan" :weight bold))
(((class color) (background dark)) (:foreground "Cyan" :weight bold)))
"The face used for highlighting symbolic links.")
-(define-obsolete-face-alias 'eshell-ls-symlink-face 'eshell-ls-symlink "22.1")
(defface eshell-ls-executable
'((((class color) (background light)) (:foreground "ForestGreen" :weight bold))
(((class color) (background dark)) (:foreground "Green" :weight bold)))
"The face used for highlighting executables (not directories, though).")
-(define-obsolete-face-alias 'eshell-ls-executable-face
- 'eshell-ls-executable "22.1")
(defface eshell-ls-readonly
'((((class color) (background light)) (:foreground "Brown"))
(((class color) (background dark)) (:foreground "Pink")))
"The face used for highlighting read-only files.")
-(define-obsolete-face-alias 'eshell-ls-readonly-face 'eshell-ls-readonly "22.1")
(defface eshell-ls-unreadable
'((((class color) (background light)) (:foreground "Grey30"))
(((class color) (background dark)) (:foreground "DarkGrey")))
"The face used for highlighting unreadable files.")
-(define-obsolete-face-alias 'eshell-ls-unreadable-face
- 'eshell-ls-unreadable "22.1")
(defface eshell-ls-special
'((((class color) (background light)) (:foreground "Magenta" :weight bold))
(((class color) (background dark)) (:foreground "Magenta" :weight bold)))
"The face used for highlighting non-regular files.")
-(define-obsolete-face-alias 'eshell-ls-special-face 'eshell-ls-special "22.1")
(defface eshell-ls-missing
'((((class color) (background light)) (:foreground "Red" :weight bold))
(((class color) (background dark)) (:foreground "Red" :weight bold)))
"The face used for highlighting non-existent file names.")
-(define-obsolete-face-alias 'eshell-ls-missing-face 'eshell-ls-missing "22.1")
(defcustom eshell-ls-archive-regexp
(concat "\\.\\(t\\(a[rz]\\|gz\\)\\|arj\\|lzh\\|"
@@ -155,7 +145,6 @@ files."
'((((class color) (background light)) (:foreground "Orchid" :weight bold))
(((class color) (background dark)) (:foreground "Orchid" :weight bold)))
"The face used for highlighting archived and compressed file names.")
-(define-obsolete-face-alias 'eshell-ls-archive-face 'eshell-ls-archive "22.1")
(defcustom eshell-ls-backup-regexp
"\\(\\`\\.?#\\|\\(\\.bak\\|~\\)\\'\\)"
@@ -166,7 +155,6 @@ files."
'((((class color) (background light)) (:foreground "OrangeRed"))
(((class color) (background dark)) (:foreground "LightSalmon")))
"The face used for highlighting backup file names.")
-(define-obsolete-face-alias 'eshell-ls-backup-face 'eshell-ls-backup "22.1")
(defcustom eshell-ls-product-regexp
"\\.\\(elc\\|o\\(bj\\)?\\|a\\|lib\\|res\\)\\'"
@@ -179,7 +167,6 @@ ought to be recreatable if they are deleted."
'((((class color) (background light)) (:foreground "OrangeRed"))
(((class color) (background dark)) (:foreground "LightSalmon")))
"The face used for highlighting files that are build products.")
-(define-obsolete-face-alias 'eshell-ls-product-face 'eshell-ls-product "22.1")
(defcustom eshell-ls-clutter-regexp
"\\(^texput\\.log\\|^core\\)\\'"
@@ -192,7 +179,6 @@ really need to stick around for very long."
'((((class color) (background light)) (:foreground "OrangeRed" :weight bold))
(((class color) (background dark)) (:foreground "OrangeRed" :weight bold)))
"The face used for highlighting junk file names.")
-(define-obsolete-face-alias 'eshell-ls-clutter-face 'eshell-ls-clutter "22.1")
(defsubst eshell-ls-filetype-p (attrs type)
"Test whether ATTRS specifies a directory."
diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el
index c27c18c52b..e40dbded60 100644
--- a/lisp/eshell/em-unix.el
+++ b/lisp/eshell/em-unix.el
@@ -748,7 +748,12 @@ external command."
(cmd (progn
(set-text-properties 0 (length args)
'(invisible t) args)
- (format "%s -n %s" command args)))
+ (format "%s -n %s"
+ (pcase command
+ ("egrep" "grep -E")
+ ("fgrep" "grep -F")
+ (x x))
+ args)))
compilation-scroll-output)
(grep cmd)))))
@@ -757,11 +762,11 @@ external command."
(eshell-grep "grep" args t))
(defun eshell/egrep (&rest args)
- "Use Emacs grep facility instead of calling external egrep."
+ "Use Emacs grep facility instead of calling external grep -E."
(eshell-grep "egrep" args t))
(defun eshell/fgrep (&rest args)
- "Use Emacs grep facility instead of calling external fgrep."
+ "Use Emacs grep facility instead of calling external grep -F."
(eshell-grep "fgrep" args t))
(defun eshell/agrep (&rest args)
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index 388bc74736..104841d999 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -296,7 +296,7 @@ and the hook `eshell-exit-hook'."
(run-hooks 'eshell-exit-hook))
;;;###autoload
-(define-derived-mode eshell-mode fundamental-mode "EShell"
+(define-derived-mode eshell-mode fundamental-mode "Eshell"
"Emacs shell interactive mode."
(setq-local eshell-mode t)
@@ -380,6 +380,11 @@ and the hook `eshell-exit-hook'."
(make-local-variable 'eshell-modules-list)
(setq eshell-modules-list modules-list))
+ ;; This is to avoid making the paragraph base direction
+ ;; right-to-left if the first word just happens to start with a
+ ;; strong R2L character.
+ (setq bidi-paragraph-direction 'left-to-right)
+
;; load extension modules into memory. This will cause any global
;; variables they define to be visible, since some of the core
;; modules sometimes take advantage of their functionality if used.
diff --git a/lisp/eshell/esh-var.el b/lisp/eshell/esh-var.el
index 7213ad70e8..5915efbac1 100644
--- a/lisp/eshell/esh-var.el
+++ b/lisp/eshell/esh-var.el
@@ -530,7 +530,7 @@ Integers imply a direct index, and names, an associate lookup using
For example, to retrieve the second element of a user's record in
'/etc/passwd', the variable reference would look like:
- ${egrep johnw /etc/passwd}[: 2]"
+ ${grep johnw /etc/passwd}[: 2]"
(while indices
(let ((refs (car indices)))
(when (stringp value)
diff --git a/lisp/eshell/eshell.el b/lisp/eshell/eshell.el
index 8b21730ef3..54281a72c7 100644
--- a/lisp/eshell/eshell.el
+++ b/lisp/eshell/eshell.el
@@ -308,9 +308,9 @@ With prefix ARG, insert output into the current buffer at point."
(eshell-parse-command command))))
intr
(bufname (if (and proc (listp proc))
- "*EShell Async Command Output*"
+ "*Eshell Async Command Output*"
(setq intr t)
- "*EShell Command Output*")))
+ "*Eshell Command Output*")))
(if (buffer-live-p (get-buffer bufname))
(kill-buffer bufname))
(rename-buffer bufname)
diff --git a/lisp/faces.el b/lisp/faces.el
index fddc036c13..a7c4cce741 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -98,7 +98,31 @@ a font height that isn't optimal."
(defcustom face-font-family-alternatives
(mapcar (lambda (arg) (mapcar 'purecopy arg))
'(("Monospace" "courier" "fixed")
+
+ ;; Monospace Serif is an Emacs invention, intended to work around
+ ;; portability problems when using Courier. It should work well
+ ;; when combined with Monospaced and with other standard fonts.
+ ("Monospace Serif"
+
+ ;; This looks good on GNU/Linux.
+ "Courier 10 Pitch"
+ ;; This looks good on MS-Windows and OS X.
+ "Consolas"
+ ;; This looks good on OS X. "Courier" looks good too, but is
+ ;; jagged on GNU/Linux and so is listed later as "courier".
+ "Courier Std"
+ ;; Although these are anti-aliased, they are a bit faint compared
+ ;; to the above.
+ "FreeMono" "Nimbus Mono L"
+ ;; These are aliased and look jagged.
+ "courier" "fixed"
+ ;; Omit Courier New, as it is the default MS-Windows font and so
+ ;; would look no different, and is pretty faint on other platforms.
+ )
+
+ ;; This is present for backward compatibility.
("courier" "CMU Typewriter Text" "fixed")
+
("Sans Serif" "helv" "helvetica" "arial" "fixed")
("helv" "helvetica" "arial" "fixed")))
"Alist of alternative font family names.
@@ -979,31 +1003,41 @@ of the default face. Value is FACE."
"Read one or more face names, prompting with PROMPT.
PROMPT should not end in a space or a colon.
-Return DEFAULT if the user enters the empty string.
-If DEFAULT is non-nil, it should be a single face or a list of face names
-\(symbols or strings). In the latter case, return the `car' of DEFAULT
-\(if MULTIPLE is nil, see below), or DEFAULT (if MULTIPLE is non-nil).
-
-If MULTIPLE is non-nil, this function uses `completing-read-multiple'
-to read multiple faces with \"[ \\t]*,[ \\t]*\" as the separator regexp
-and it returns a list of face names. Otherwise, it reads and returns
-a single face name."
- (if (and default (not (stringp default)))
- (setq default
- (cond ((symbolp default)
- (symbol-name default))
- (multiple
- (mapconcat (lambda (f) (if (symbolp f) (symbol-name f) f))
- default ", "))
- ;; If we only want one, and the default is more than one,
- ;; discard the unwanted ones.
- (t (symbol-name (car default))))))
+If DEFAULT is non-nil, it should be a face (a symbol) or a face
+name (a string). It can also be a list of faces or face names.
+
+If MULTIPLE is non-nil, the return value from this function is a
+list of faces. Otherwise a single face is returned.
+
+If the user enter the empty string at the prompt, DEFAULT is
+returned after a possible transformation according to MULTIPLE.
+That is, if DEFAULT is a list and MULTIPLE is nil, the first
+element of DEFAULT is returned. If DEFAULT isn't a list, but
+MULTIPLE is non-nil, a one-element list containing DEFAULT is
+returned. Otherwise, DEFAULT is returned verbatim."
+ (unless (listp default)
+ (setq default (list default)))
+ (when default
+ (setq default
+ (if multiple
+ (mapconcat (lambda (f) (if (symbolp f) (symbol-name f) f))
+ default ", ")
+ ;; If we only want one, and the default is more than one,
+ ;; discard the unwanted ones.
+ (setq default (car default))
+ (if (symbolp default)
+ (symbol-name default)
+ default))))
(when (and default (not multiple))
(require 'crm)
;; For compatibility with `completing-read-multiple' use `crm-separator'
;; to define DEFAULT if MULTIPLE is nil.
(setq default (car (split-string default crm-separator t))))
+ ;; Older versions of `read-face-name' did not append ": " to the
+ ;; prompt, so there are third party libraries that have that in the
+ ;; prompt. If so, remove it.
+ (setq prompt (replace-regexp-in-string ": ?\\'" "" prompt))
(let ((prompt (if default
(format-message "%s (default `%s'): " prompt default)
(format "%s: " prompt)))
@@ -1792,6 +1826,32 @@ If FRAME is nil, that stands for the selected frame."
(mapcar 'car (tty-color-alist frame))))
(defalias 'x-defined-colors 'defined-colors)
+(defun defined-colors-with-face-attributes (&optional frame)
+ "Return a list of colors supported for a particular frame.
+See `defined-colors' for arguments and return value. In contrast
+to `define-colors' the elements of the returned list are color
+strings with text properties, that make the color names render
+with the color they represent as background color."
+ (mapcar
+ (lambda (color-name)
+ (let ((foreground (readable-foreground-color color-name))
+ (color (copy-sequence color-name)))
+ (propertize color 'face (list :foreground foreground
+ :background color))))
+ (defined-colors frame)))
+
+(defun readable-foreground-color (color)
+ "Return a readable foreground color for background COLOR."
+ (let* ((rgb (color-values color))
+ (max (apply #'max rgb))
+ (black (car (color-values "black")))
+ (white (car (color-values "white"))))
+ ;; Select black or white depending on which one is less similar to
+ ;; the brightest component.
+ (if (> (abs (- max black)) (abs (- max white)))
+ "black"
+ "white")))
+
(declare-function xw-color-defined-p "xfns.c" (color &optional frame))
(defun color-defined-p (color &optional frame)
@@ -1896,22 +1956,24 @@ resulting color name in the echo area."
(colors (or facemenu-color-alist
(append '("foreground at point" "background at point")
(if allow-empty-name '(""))
- (defined-colors))))
+ (if (display-color-p)
+ (defined-colors-with-face-attributes)
+ (defined-colors)))))
(color (completing-read
(or prompt "Color (name or #RGB triplet): ")
;; Completing function for reading colors, accepting
;; both color names and RGB triplets.
(lambda (string pred flag)
(cond
- ((null flag) ; Try completion.
+ ((null flag) ; Try completion.
(or (try-completion string colors pred)
(if (color-defined-p string)
string)))
- ((eq flag t) ; List all completions.
+ ((eq flag t) ; List all completions.
(or (all-completions string colors pred)
(if (color-defined-p string)
(list string))))
- ((eq flag 'lambda) ; Test completion.
+ ((eq flag 'lambda) ; Test completion.
(or (member string colors)
(color-defined-p string)))))
nil t)))
@@ -2280,6 +2342,11 @@ If you set `term-file-prefix' to nil, this function does nothing."
"The basic fixed-pitch face."
:group 'basic-faces)
+(defface fixed-pitch-serif
+ '((t :family "Monospace Serif"))
+ "The basic fixed-pitch face with serifs."
+ :group 'basic-faces)
+
(defface variable-pitch
'((((type w32))
;; This is a kludgy workaround for an issue discussed in
@@ -2411,6 +2478,14 @@ If you set `term-file-prefix' to nil, this function does nothing."
:group 'basic-faces
:version "22.1")
+(defface nobreak-hyphen
+ '((((background dark)) :foreground "cyan")
+ (((type pc)) :foreground "magenta")
+ (t :foreground "brown"))
+ "Face for displaying nobreak hyphens."
+ :group 'basic-faces
+ :version "25.2")
+
(defgroup mode-line-faces nil
"Faces used in the mode line."
:group 'mode-line
@@ -2443,7 +2518,6 @@ If you set `term-file-prefix' to nil, this function does nothing."
:version "22.1"
:group 'mode-line-faces
:group 'basic-faces)
-(define-obsolete-face-alias 'modeline-inactive 'mode-line-inactive "22.1")
(defface mode-line-highlight
'((((class color) (min-colors 88))
@@ -2454,7 +2528,6 @@ If you set `term-file-prefix' to nil, this function does nothing."
:version "22.1"
:group 'mode-line-faces
:group 'basic-faces)
-(define-obsolete-face-alias 'modeline-highlight 'mode-line-highlight "22.1")
(defface mode-line-emphasis
'((t (:weight bold)))
@@ -2470,7 +2543,6 @@ Use the face `mode-line-highlight' for features that can be selected."
:version "22.1"
:group 'mode-line-faces
:group 'basic-faces)
-(define-obsolete-face-alias 'modeline-buffer-id 'mode-line-buffer-id "22.1")
(defface header-line
'((default
@@ -2674,6 +2746,13 @@ It is used for characters of no fonts too."
:version "24.1"
:group 'basic-faces)
+(defface read-multiple-choice-face
+ '((t (:inherit underline
+ :weight bold)))
+ "Face for the symbol name in `read-multiple-choice' output."
+ :group 'basic-faces
+ :version "25.2")
+
;; Faces for TTY menus.
(defface tty-menu-enabled-face
'((t
@@ -2802,7 +2881,7 @@ also the same size as FACE on FRAME, or fail."
pattern face)))
(error "No fonts match `%s'" pattern)))
(car fonts))
- (cdr (assq 'font (frame-parameters (selected-frame))))))
+ (frame-parameter nil 'font)))
(defcustom font-list-limit 100
"This variable is obsolete and has no effect."
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 8343b475c1..7013e6e8ba 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -570,7 +570,7 @@ Looks at `ffap-ftp-default-user', returns \"\" for \"localhost\"."
(defvaralias 'ffap-newsgroup-heads 'thing-at-point-newsgroup-heads)
(defalias 'ffap-newsgroup-p 'thing-at-point-newsgroup-p)
-(defsubst ffap-url-p (string)
+(defun ffap-url-p (string)
"If STRING looks like an URL, return it (maybe improved), else nil."
(when (and (stringp string) ffap-url-regexp)
(let* ((case-fold-search t)
diff --git a/lisp/files-x.el b/lisp/files-x.el
index f0102fd83a..05ad7f57c5 100644
--- a/lisp/files-x.el
+++ b/lisp/files-x.el
@@ -429,18 +429,24 @@ from the MODE alist ignoring the input argument VALUE."
(catch 'exit
(unless enable-local-variables
(throw 'exit (message "Directory-local variables are disabled")))
- (let ((variables-file (or (and (buffer-file-name)
- (not (file-remote-p (buffer-file-name)))
- (dir-locals-find-file (buffer-file-name)))
- dir-locals-file))
- variables)
- (if (consp variables-file) ; result from cache
- ;; If cache element has an mtime, assume it came from a file.
- ;; Otherwise, assume it was set directly.
- (setq variables-file (if (nth 2 variables-file)
- (expand-file-name dir-locals-file
- (car variables-file))
- (cadr variables-file))))
+ (let* ((dir-or-cache (and (buffer-file-name)
+ (not (file-remote-p (buffer-file-name)))
+ (dir-locals-find-file (buffer-file-name))))
+ (variables-file
+ ;; If there are several .dir-locals, the user probably
+ ;; wants to edit the last one (the highest priority).
+ (cond ((stringp dir-or-cache)
+ (car (last (dir-locals--all-files dir-or-cache))))
+ ((consp dir-or-cache) ; result from cache
+ ;; If cache element has an mtime, assume it came
+ ;; from a file. Otherwise, assume it was set
+ ;; directly.
+ (if (nth 2 dir-or-cache)
+ (car (last (dir-locals--all-files (car dir-or-cache))))
+ (cadr dir-or-cache)))
+ ;; Try to make a proper file-name.
+ (t (expand-file-name dir-locals-file))))
+ variables)
;; I can't be bothered to handle this case right now.
;; Dir locals were set directly from a class. You need to
;; directly modify the class in dir-locals-class-alist.
diff --git a/lisp/files.el b/lisp/files.el
index fa630731b8..ff39008cdb 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -277,8 +277,7 @@ The value `never' means do not make them."
:type '(choice (const :tag "Never" never)
(const :tag "If existing" nil)
(other :tag "Always" t))
- :group 'backup
- :group 'vc)
+ :group 'backup)
(put 'version-control 'safe-local-variable
(lambda (x) (or (booleanp x) (equal x 'never))))
@@ -1315,6 +1314,36 @@ Optional second argument FLAVOR controls the units and the display format:
(car post-fixes))
(if (eq flavor 'iec) "iB" ""))))
+(defcustom mounted-file-systems
+ (if (memq system-type '(windows-nt cygwin))
+ "^//[^/]+/"
+ ;; regexp-opt.el is not dumped into emacs binary.
+ ;;(concat
+ ;; "^" (regexp-opt '("/afs/" "/media/" "/mnt" "/net/" "/tmp_mnt/"))))
+ "^\\(?:/\\(?:afs/\\|m\\(?:edia/\\|nt\\)\\|\\(?:ne\\|tmp_mn\\)t/\\)\\)")
+ "File systems which ought to be mounted."
+ :group 'files
+ :version "25.2"
+ :require 'regexp-opt
+ :type 'regexp)
+
+(defun temporary-file-directory ()
+ "The directory for writing temporary files.
+In case of a remote `default-directory', this is a directory for
+temporary files on that remote host. If such a directory does
+not exist, or `default-directory' ought to be located on a
+mounted file system (see `mounted-file-systems'), the function
+returns `default-directory'.
+For a non-remote and non-mounted `default-directory', the value of
+the variable `temporary-file-directory' is returned."
+ (let ((handler (find-file-name-handler
+ default-directory 'temporary-file-directory)))
+ (if handler
+ (funcall handler 'temporary-file-directory)
+ (if (string-match mounted-file-systems default-directory)
+ default-directory
+ temporary-file-directory))))
+
(defun make-temp-file (prefix &optional dir-flag suffix)
"Create a temporary file.
The returned file name (created by appending some random characters at the end
@@ -1351,6 +1380,21 @@ If SUFFIX is non-nil, add that at the end of the file name."
nil)
file)))
+(defun make-nearby-temp-file (prefix &optional dir-flag suffix)
+ "Create a temporary file as close as possible to `default-directory'.
+If PREFIX is a relative file name, and `default-directory' is a
+remote file name or located on a mounted file systems, the
+temporary file is created in the directory returned by the
+function `temporary-file-directory'. Otherwise, the function
+`make-temp-file' is used. PREFIX, DIR-FLAG and SUFFIX have the
+same meaning as in `make-temp-file'."
+ (let ((handler (find-file-name-handler
+ default-directory 'make-nearby-temp-file)))
+ (if (and handler (not (file-name-absolute-p default-directory)))
+ (funcall handler 'make-nearby-temp-file prefix dir-flag suffix)
+ (let ((temporary-file-directory (temporary-file-directory)))
+ (make-temp-file prefix dir-flag suffix)))))
+
(defun recode-file-name (file coding new-coding &optional ok-if-already-exists)
"Change the encoding of FILE's name from CODING to NEW-CODING.
The value is a new name of FILE.
@@ -2316,14 +2360,21 @@ not set local variables (though we do notice a mode specified with -*-.)
or from Lisp without specifying the optional argument FIND-FILE;
in that case, this function acts as if `enable-local-variables' were t."
(interactive)
- (fundamental-mode)
+ (kill-all-local-variables)
+ (unless delay-mode-hooks
+ (run-hooks 'change-major-mode-after-body-hook
+ 'after-change-major-mode-hook))
(let ((enable-local-variables (or (not find-file) enable-local-variables)))
;; FIXME this is less efficient than it could be, since both
;; s-a-m and h-l-v may parse the same regions, looking for "mode:".
(with-demoted-errors "File mode specification error: %s"
(set-auto-mode))
- (with-demoted-errors "File local-variables error: %s"
- (hack-local-variables)))
+ ;; `delay-mode-hooks' being non-nil will have prevented the major
+ ;; mode's call to `run-mode-hooks' from calling
+ ;; `hack-local-variables'. In that case, call it now.
+ (when delay-mode-hooks
+ (with-demoted-errors "File local-variables error: %s"
+ (hack-local-variables 'no-mode))))
;; Turn font lock off and on, to make sure it takes account of
;; whatever file local variables are relevant to it.
(when (and font-lock-mode
@@ -3172,16 +3223,21 @@ n -- to ignore the local variables list.")
(defconst hack-local-variable-regexp
"[ \t]*\\([^][;\"'?()\\ \t\n]+\\)[ \t]*:[ \t]*")
-(defun hack-local-variables-prop-line (&optional mode-only)
+(defun hack-local-variables-prop-line (&optional handle-mode)
"Return local variables specified in the -*- line.
-Returns an alist of elements (VAR . VAL), where VAR is a variable
-and VAL is the specified value. Ignores any specification for
-`mode:' and `coding:' (which should have already been handled
-by `set-auto-mode' and `set-auto-coding', respectively).
-Return nil if the -*- line is malformed.
-
-If MODE-ONLY is non-nil, just returns the symbol specifying the
-mode, if there is one, otherwise nil."
+Usually returns an alist of elements (VAR . VAL), where VAR is a
+variable and VAL is the specified value. Ignores any
+specification for `coding:', and sometimes for `mode' (which
+should have already been handled by `set-auto-coding' and
+`set-auto-mode', respectively). Return nil if the -*- line is
+malformed.
+
+If HANDLE-MODE is nil, we return the alist of all the local
+variables in the line except `coding' as described above. If it
+is neither nil nor t, we do the same, except that any settings of
+`mode' and `coding' are ignored. If HANDLE-MODE is t, we ignore
+all settings in the line except for `mode', which \(if present) we
+return as the symbol specifying the mode."
(catch 'malformed-line
(save-excursion
(goto-char (point-min))
@@ -3191,14 +3247,14 @@ mode, if there is one, otherwise nil."
nil)
((looking-at "[ \t]*\\([^ \t\n\r:;]+\\)\\([ \t]*-\\*-\\)")
;; Simple form: "-*- MODENAME -*-".
- (if mode-only
+ (if (memq handle-mode '(nil t))
(intern (concat (match-string 1) "-mode"))))
(t
;; Hairy form: '-*-' [ <variable> ':' <value> ';' ]* '-*-'
;; (last ";" is optional).
- ;; If MODE-ONLY, just check for `mode'.
+ ;; If HANDLE-MODE is t, just check for `mode'.
;; Otherwise, parse the -*- line into the RESULT alist.
- (while (not (or (and mode-only result)
+ (while (not (or (and (eq handle-mode t) result)
(>= (point) end)))
(unless (looking-at hack-local-variable-regexp)
(message "Malformed mode-line: %S"
@@ -3219,19 +3275,24 @@ mode, if there is one, otherwise nil."
;; That is inconsistent, but we're stuck with it.
;; The same can be said for `coding' in set-auto-coding.
(keyname (downcase (symbol-name key))))
- (if mode-only
- (and (equal keyname "mode")
- (setq result
- (intern (concat (downcase (symbol-name val))
- "-mode"))))
- (or (equal keyname "coding")
- (condition-case nil
- (push (cons (cond ((eq key 'eval) 'eval)
- ;; Downcase "Mode:".
- ((equal keyname "mode") 'mode)
- (t (indirect-variable key)))
- val) result)
- (error nil))))
+ (cond
+ ((eq handle-mode t)
+ (and (equal keyname "mode")
+ (setq result
+ (intern (concat (downcase (symbol-name val))
+ "-mode")))))
+ ((equal keyname "coding"))
+ (t
+ (when (or (not handle-mode)
+ (not (equal keyname "mode")))
+ (condition-case nil
+ (push (cons (cond ((eq key 'eval) 'eval)
+ ;; Downcase "Mode:".
+ ((equal keyname "mode") 'mode)
+ (t (indirect-variable key)))
+ val)
+ result)
+ (error nil)))))
(skip-chars-forward " \t;")))
result))))))
@@ -3297,11 +3358,15 @@ DIR-NAME is the name of the associated directory. Otherwise it is nil."
;; TODO? Warn once per file rather than once per session?
(defvar hack-local-variables--warned-lexical nil)
-(defun hack-local-variables (&optional mode-only)
+(defun hack-local-variables (&optional handle-mode)
"Parse and put into effect this buffer's local variables spec.
Uses `hack-local-variables-apply' to apply the variables.
-If MODE-ONLY is non-nil, all we do is check whether a \"mode:\"
+If HANDLE-MODE is nil, we apply all the specified local
+variables. If HANDLE-MODE is neither nil nor t, we do the same,
+except that any settings of `mode' are ignored.
+
+If HANDLE-MODE is t, all we do is check whether a \"mode:\"
is specified, and return the corresponding mode symbol, or nil.
In this case, we try to ignore minor-modes, and only return a
major-mode.
@@ -3319,7 +3384,7 @@ local variables, but directory-local variables may still be applied."
(let ((enable-local-variables
(and local-enable-local-variables enable-local-variables))
result)
- (unless mode-only
+ (unless (eq handle-mode t)
(setq file-local-variables-alist nil)
(with-demoted-errors "Directory-local variables error: %s"
;; Note this is a no-op if enable-local-variables is nil.
@@ -3327,18 +3392,19 @@ local variables, but directory-local variables may still be applied."
;; This entire function is basically a no-op if enable-local-variables
;; is nil. All it does is set file-local-variables-alist to nil.
(when enable-local-variables
- ;; This part used to ignore enable-local-variables when mode-only
- ;; was non-nil. That was inappropriate, eg consider the
+ ;; This part used to ignore enable-local-variables when handle-mode
+ ;; was t. That was inappropriate, eg consider the
;; (artificial) example of:
;; (setq local-enable-local-variables nil)
;; Open a file foo.txt that contains "mode: sh".
;; It correctly opens in text-mode.
;; M-x set-visited-file name foo.c, and it incorrectly stays in text-mode.
(unless (or (inhibit-local-variables-p)
- ;; If MODE-ONLY is non-nil, and the prop line specifies a
+ ;; If HANDLE-MODE is t, and the prop line specifies a
;; mode, then we're done, and have no need to scan further.
- (and (setq result (hack-local-variables-prop-line mode-only))
- mode-only))
+ (and (setq result (hack-local-variables-prop-line
+ handle-mode))
+ (eq handle-mode t)))
;; Look for "Local variables:" line in last page.
(save-excursion
(goto-char (point-max))
@@ -3393,7 +3459,7 @@ local variables, but directory-local variables may still be applied."
(goto-char (point-min))
(while (not (or (eobp)
- (and mode-only result)))
+ (and (eq handle-mode t) result)))
;; Find the variable name;
(unless (looking-at hack-local-variable-regexp)
(error "Malformed local variable line: %S"
@@ -3410,7 +3476,7 @@ local variables, but directory-local variables may still be applied."
(forward-char 1)
(let ((read-circle nil))
(setq val (read (current-buffer))))
- (if mode-only
+ (if (eq handle-mode t)
(and (eq var 'mode)
;; Specifying minor-modes via mode: is
;; deprecated, but try to reject them anyway.
@@ -3432,6 +3498,7 @@ local variables, but directory-local variables may still be applied."
;; to use 'thisbuf's name in the
;; warning message.
(or (buffer-file-name thisbuf) ""))))))
+ ((and (eq var 'mode) handle-mode))
(t
(ignore-errors
(push (cons (if (eq var 'eval)
@@ -3440,8 +3507,8 @@ local variables, but directory-local variables may still be applied."
val) result))))))
(forward-line 1))))))))
;; Now we've read all the local variables.
- ;; If MODE-ONLY is non-nil, return whether the mode was specified.
- (if mode-only result
+ ;; If HANDLE-MODE is t, return whether the mode was specified.
+ (if (eq handle-mode t) result
;; Otherwise, set the variables.
(hack-local-variables-filter result nil)
(hack-local-variables-apply)))))
@@ -3668,7 +3735,7 @@ Return the new variables list."
(error
;; The file's content might be invalid (e.g. have a merge conflict), but
;; that shouldn't prevent the user from opening the file.
- (message ".dir-locals error: %s" (error-message-string err))
+ (message "%s error: %s" dir-locals-file (error-message-string err))
nil))))
(defun dir-locals-set-directory-class (directory class &optional mtime)
@@ -3720,8 +3787,41 @@ VARIABLES list of the class. The list is processed in order.
(defconst dir-locals-file ".dir-locals.el"
"File that contains directory-local variables.
-It has to be constant to enforce uniform values
-across different environments and users.")
+It has to be constant to enforce uniform values across different
+environments and users.
+See also `dir-locals-file-2', whose values override this one's.
+See Info node `(elisp)Directory Local Variables' for details.")
+
+(defconst dir-locals-file-2 ".dir-locals-2.el"
+ "File that contains directory-local variables.
+This essentially a second file that can be used like
+`dir-locals-file', so that users can have specify their personal
+dir-local variables even if the current directory already has a
+`dir-locals-file' that is shared with other users (such as in a
+git repository).
+See Info node `(elisp)Directory Local Variables' for details.")
+
+(defun dir-locals--all-files (directory)
+ "Return a list of all readable dir-locals files in DIRECTORY.
+The returned list is sorted by increasing priority. That is,
+values specified in the last file should take precedence over
+those in the first."
+ (when (file-readable-p directory)
+ (let* ((file-1 (expand-file-name (if (eq system-type 'ms-dos)
+ (dosified-file-name dir-locals-file)
+ dir-locals-file)
+ directory))
+ (file-2 (when (string-match "\\.el\\'" file-1)
+ (replace-match "-2.el" t nil file-1)))
+ (out nil))
+ ;; The order here is important.
+ (dolist (f (list file-2 file-1))
+ (when (and f
+ (file-readable-p f)
+ (file-regular-p f)
+ (not (file-directory-p f)))
+ (push f out)))
+ out)))
(defun dir-locals-find-file (file)
"Find the directory-local variables for FILE.
@@ -3736,78 +3836,95 @@ A cache entry based on a `dir-locals-file' is valid if the modification
time stored in the cache matches the current file modification time.
If not, the cache entry is cleared so that the file will be re-read.
-This function returns either nil (no directory local variables found),
-or the matching entry from `dir-locals-directory-cache' (a list),
-or the full path to the `dir-locals-file' (a string) in the case
-of no valid cache entry."
+This function returns either:
+ - nil (no directory local variables found),
+ - the matching entry from `dir-locals-directory-cache' (a list),
+ - or the full path to the directory (a string) containing at
+ least one `dir-locals-file' in the case of no valid cache
+ entry."
(setq file (expand-file-name file))
- (let* ((dir-locals-file-name
- (if (eq system-type 'ms-dos)
- (dosified-file-name dir-locals-file)
- dir-locals-file))
- (locals-file (locate-dominating-file file dir-locals-file-name))
- (dir-elt nil))
+ (let* ((locals-dir (locate-dominating-file (file-name-directory file)
+ #'dir-locals--all-files))
+ dir-elt)
;; `locate-dominating-file' may have abbreviated the name.
- (and locals-file
- (setq locals-file (expand-file-name dir-locals-file-name locals-file)))
- ;; Let dir-locals-read-from-file inform us via demoted-errors
- ;; about unreadable files, etc.
- ;; Maybe we'd want to keep searching though - that is
- ;; a locate-dominating-file issue.
-;;; (or (not (file-readable-p locals-file))
-;;; (not (file-regular-p locals-file)))
-;;; (setq locals-file nil))
+ (when locals-dir
+ (setq locals-dir (expand-file-name locals-dir)))
;; Find the best cached value in `dir-locals-directory-cache'.
(dolist (elt dir-locals-directory-cache)
(when (and (string-prefix-p (car elt) file
- (memq system-type
- '(windows-nt cygwin ms-dos)))
- (> (length (car elt)) (length (car dir-elt))))
- (setq dir-elt elt)))
+ (memq system-type
+ '(windows-nt cygwin ms-dos)))
+ (> (length (car elt)) (length (car dir-elt))))
+ (setq dir-elt elt)))
(if (and dir-elt
- (or (null locals-file)
- (<= (length (file-name-directory locals-file))
- (length (car dir-elt)))))
- ;; Found a potential cache entry. Check validity.
- ;; A cache entry with no MTIME is assumed to always be valid
- ;; (ie, set directly, not from a dir-locals file).
- ;; Note, we don't bother to check that there is a matching class
- ;; element in dir-locals-class-alist, since that's done by
- ;; dir-locals-set-directory-class.
- (if (or (null (nth 2 dir-elt))
- (let ((cached-file (expand-file-name dir-locals-file-name
- (car dir-elt))))
- (and (file-readable-p cached-file)
- (equal (nth 2 dir-elt)
- (nth 5 (file-attributes cached-file))))))
- ;; This cache entry is OK.
- dir-elt
- ;; This cache entry is invalid; clear it.
- (setq dir-locals-directory-cache
- (delq dir-elt dir-locals-directory-cache))
- ;; Return the first existing dir-locals file. Might be the same
- ;; as dir-elt's, might not (eg latter might have been deleted).
- locals-file)
+ (or (null locals-dir)
+ (<= (length locals-dir)
+ (length (car dir-elt)))))
+ ;; Found a potential cache entry. Check validity.
+ ;; A cache entry with no MTIME is assumed to always be valid
+ ;; (ie, set directly, not from a dir-locals file).
+ ;; Note, we don't bother to check that there is a matching class
+ ;; element in dir-locals-class-alist, since that's done by
+ ;; dir-locals-set-directory-class.
+ (if (or (null (nth 2 dir-elt))
+ (let ((cached-files (dir-locals--all-files (car dir-elt))))
+ ;; The entry MTIME should match the most recent
+ ;; MTIME among matching files.
+ (and cached-files
+ (= (float-time (nth 2 dir-elt))
+ (apply #'max (mapcar (lambda (f)
+ (float-time
+ (nth 5 (file-attributes f))))
+ cached-files))))))
+ ;; This cache entry is OK.
+ dir-elt
+ ;; This cache entry is invalid; clear it.
+ (setq dir-locals-directory-cache
+ (delq dir-elt dir-locals-directory-cache))
+ ;; Return the first existing dir-locals file. Might be the same
+ ;; as dir-elt's, might not (eg latter might have been deleted).
+ locals-dir)
;; No cache entry.
- locals-file)))
-
-(defun dir-locals-read-from-file (file)
- "Load a variables FILE and register a new class and instance.
-FILE is the name of the file holding the variables to apply.
-The new class name is the same as the directory in which FILE
-is found. Returns the new class name."
- (with-temp-buffer
+ locals-dir)))
+
+(defun dir-locals-read-from-dir (dir)
+ "Load all variables files in DIR and register a new class and instance.
+DIR is the absolute name of a directory which must contain at
+least one dir-local file (which is a file holding variables to
+apply).
+Return the new class name, which is a symbol named DIR."
+ (require 'map)
+ (let* ((class-name (intern dir))
+ (files (dir-locals--all-files dir))
+ (read-circle nil)
+ (success nil)
+ (variables))
(with-demoted-errors "Error reading dir-locals: %S"
- (insert-file-contents file)
- (unless (zerop (buffer-size))
- (let* ((dir-name (file-name-directory file))
- (class-name (intern dir-name))
- (variables (let ((read-circle nil))
- (read (current-buffer)))))
- (dir-locals-set-class-variables class-name variables)
- (dir-locals-set-directory-class dir-name class-name
- (nth 5 (file-attributes file)))
- class-name)))))
+ (dolist (file files)
+ (with-temp-buffer
+ (insert-file-contents file)
+ (condition-case-unless-debug nil
+ (setq variables
+ (map-merge-with 'list (lambda (a b) (map-merge 'list a b))
+ variables
+ (read (current-buffer))))
+ (end-of-file nil))))
+ (setq success t))
+ (dir-locals-set-class-variables class-name variables)
+ (dir-locals-set-directory-class
+ dir class-name
+ (seconds-to-time
+ (if success
+ (apply #'max (mapcar (lambda (file)
+ (float-time (nth 5 (file-attributes file))))
+ files))
+ ;; If there was a problem, use the values we could get but
+ ;; don't let the cache prevent future reads.
+ 0)))
+ class-name))
+
+(define-obsolete-function-alias 'dir-locals-read-from-file
+ 'dir-locals-read-from-dir "25.1")
(defcustom enable-remote-dir-locals nil
"Non-nil means dir-local variables will be applied to remote files."
@@ -3830,17 +3947,17 @@ This does nothing if either `enable-local-variables' or
(not (file-remote-p (or (buffer-file-name)
default-directory)))))
;; Find the variables file.
- (let ((variables-file (dir-locals-find-file
- (or (buffer-file-name) default-directory)))
+ (let ((dir-or-cache (dir-locals-find-file
+ (or (buffer-file-name) default-directory)))
(class nil)
(dir-name nil))
(cond
- ((stringp variables-file)
- (setq dir-name (file-name-directory variables-file)
- class (dir-locals-read-from-file variables-file)))
- ((consp variables-file)
- (setq dir-name (nth 0 variables-file))
- (setq class (nth 1 variables-file))))
+ ((stringp dir-or-cache)
+ (setq dir-name dir-or-cache
+ class (dir-locals-read-from-dir dir-or-cache)))
+ ((consp dir-or-cache)
+ (setq dir-name (nth 0 dir-or-cache))
+ (setq class (nth 1 dir-or-cache))))
(when class
(let ((variables
(dir-locals-collect-variables
@@ -4218,8 +4335,7 @@ See also `file-name-version-regexp'."
(defun file-ownership-preserved-p (file &optional group)
"Return t if deleting FILE and rewriting it would preserve the owner.
-Return nil if FILE does not exist, or if deleting and recreating it
-might not preserve the owner. If GROUP is non-nil, check whether
+Return also t if FILE does not exist. If GROUP is non-nil, check whether
the group would be preserved too."
(let ((handler (find-file-name-handler file 'file-ownership-preserved-p)))
(if handler
@@ -4342,7 +4458,7 @@ ignored."
(defun normal-backup-enable-predicate (name)
"Default `backup-enable-predicate' function.
Checks for files in `temporary-file-directory',
-`small-temporary-file-directory', and /tmp."
+`small-temporary-file-directory', and \"/tmp\"."
(let ((temporary-file-directory temporary-file-directory)
caseless)
;; On MS-Windows, file-truename will convert short 8+3 aliases to
@@ -6623,11 +6739,14 @@ message to that effect instead of signaling an error."
;; Simulate the message printed by `ls'.
(insert (format "%s: No such file or directory\n" file))))
-(defvar kill-emacs-query-functions nil
+(defcustom kill-emacs-query-functions nil
"Functions to call with no arguments to query about killing Emacs.
If any of these functions returns nil, killing Emacs is canceled.
`save-buffers-kill-emacs' calls these functions, but `kill-emacs',
-the low level primitive, does not. See also `kill-emacs-hook'.")
+the low level primitive, does not. See also `kill-emacs-hook'."
+ :type 'hook
+ :version "25.2"
+ :group 'convenience)
(defcustom confirm-kill-emacs nil
"How to ask for confirmation when leaving Emacs.
@@ -6686,7 +6805,8 @@ if any returns nil. If `confirm-kill-emacs' is non-nil, calls it."
(defun save-buffers-kill-terminal (&optional arg)
"Offer to save each buffer, then kill the current connection.
-If the current frame has no client, kill Emacs itself.
+If the current frame has no client, kill Emacs itself using
+`save-buffers-kill-emacs'.
With prefix ARG, silently save all file-visiting buffers, then kill.
@@ -7043,6 +7163,98 @@ Otherwise, trash FILENAME using the freedesktop.org conventions,
(let ((delete-by-moving-to-trash nil))
(rename-file fn new-fn)))))))))
+(defsubst file-attribute-type (attributes)
+ "The type field in ATTRIBUTES returned by `file-attributes'.
+The value is either t for directory, string (name linked to) for
+symbolic link, or nil."
+ (nth 0 attributes))
+
+(defsubst file-attribute-link-number (attributes)
+ "Return the number of links in ATTRIBUTES returned by `file-attributes'."
+ (nth 1 attributes))
+
+(defsubst file-attribute-user-id (attributes)
+ "The UID field in ATTRIBUTES returned by `file-attributes'.
+This is either a string or a number. If a string value cannot be
+looked up, a numeric value, either an integer or a float, is
+returned."
+ (nth 2 attributes))
+
+(defsubst file-attribute-group-id (attributes)
+ "The GID field in ATTRIBUTES returned by `file-attributes'.
+This is either a string or a number. If a string value cannot be
+looked up, a numeric value, either an integer or a float, is
+returned."
+ (nth 3 attributes))
+
+(defsubst file-attribute-access-time (attributes)
+ "The last access time in ATTRIBUTES returned by `file-attributes'.
+This a list of integers (HIGH LOW USEC PSEC) in the same style
+as (current-time)."
+ (nth 4 attributes))
+
+(defsubst file-attribute-modification-time (attributes)
+ "The modification time in ATTRIBUTES returned by `file-attributes'.
+This is the time of the last change to the file's contents, and
+is a list of integers (HIGH LOW USEC PSEC) in the same style
+as (current-time)."
+ (nth 5 attributes))
+
+(defsubst file-attribute-status-change-time (attributes)
+ "The status modification time in ATTRIBUTES returned by `file-attributes'.
+This is the time of last change to the file's attributes: owner
+and group, access mode bits, etc, and is a list of integers (HIGH
+LOW USEC PSEC) in the same style as (current-time)."
+ (nth 6 attributes))
+
+(defsubst file-attribute-size (attributes)
+ "The size (in bytes) in ATTRIBUTES returned by `file-attributes'.
+This is a floating point number if the size is too large for an integer."
+ (nth 7 attributes))
+
+(defsubst file-attribute-modes (attributes)
+ "The file modes in ATTRIBUTES returned by `file-attributes'.
+This is a string of ten letters or dashes as in ls -l."
+ (nth 8 attributes))
+
+(defsubst file-attribute-inode-number (attributes)
+ "The inode number in ATTRIBUTES returned by `file-attributes'.
+If it is larger than what an Emacs integer can hold, this is of
+the form (HIGH . LOW): first the high bits, then the low 16 bits.
+If even HIGH is too large for an Emacs integer, this is instead
+of the form (HIGH MIDDLE . LOW): first the high bits, then the
+middle 24 bits, and finally the low 16 bits."
+ (nth 10 attributes))
+
+(defsubst file-attribute-device-number (attributes)
+ "The file system device number in ATTRIBUTES returned by `file-attributes'.
+If it is larger than what an Emacs integer can hold, this is of
+the form (HIGH . LOW): first the high bits, then the low 16 bits.
+If even HIGH is too large for an Emacs integer, this is instead
+of the form (HIGH MIDDLE . LOW): first the high bits, then the
+middle 24 bits, and finally the low 16 bits."
+ (nth 11 attributes))
+
+(defun file-attribute-collect (attributes &rest attr-names)
+ "Return a sublist of ATTRIBUTES returned by `file-attributes'.
+ATTR-NAMES are symbols with the selected attribute names.
+
+Valid attribute names are: type, link-number, user-id, group-id,
+access-time, modification-time, status-change-time, size, modes,
+inode-number and device-number."
+ (let ((all '(type link-number user-id group-id access-time
+ modification-time status-change-time
+ size modes inode-number device-number))
+ result)
+ (while attr-names
+ (let ((attr (pop attr-names)))
+ (if (memq attr all)
+ (push (funcall
+ (intern (format "file-attribute-%s" (symbol-name attr)))
+ attributes)
+ result)
+ (error "Wrong attribute name '%S'" attr))))
+ (nreverse result)))
(define-key ctl-x-map "\C-f" 'find-file)
(define-key ctl-x-map "\C-r" 'find-file-read-only)
diff --git a/lisp/find-dired.el b/lisp/find-dired.el
index 7bfdbe7346..b1b33ac23e 100644
--- a/lisp/find-dired.el
+++ b/lisp/find-dired.el
@@ -97,7 +97,7 @@ them for `find-ls-option'."
(defcustom find-grep-options
(if (or (eq system-type 'berkeley-unix)
- (string-match "solaris2\\|irix" system-configuration))
+ (string-match "solaris2" system-configuration))
"-s" "-q")
"Option to grep to be as silent as possible.
On Berkeley systems, this is `-s'; on Posix, and with GNU grep, `-q' does it.
diff --git a/lisp/find-file.el b/lisp/find-file.el
index 8bd810f2c4..3c3d860488 100644
--- a/lisp/find-file.el
+++ b/lisp/find-file.el
@@ -378,6 +378,15 @@ Variables of interest include:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Support functions
+(defun ff-buffer-file-name (&optional buf)
+ "Like `buffer-file-name' but works with indirect buffers as well.
+If BUF is nil, uses the current buffer."
+ (unless buf
+ (setq buf (current-buffer)))
+ (or (buffer-file-name buf)
+ (when (buffer-base-buffer buf)
+ (buffer-file-name (buffer-base-buffer buf)))))
+
(defun ff-find-the-other-file (&optional in-other-window)
"Find the header or source file corresponding to the current file.
Being on a `#include' line pulls in that file, but see the help on
@@ -420,9 +429,7 @@ If optional IN-OTHER-WINDOW is non-nil, find the file in another window."
(setq alist (if (symbolp ff-other-file-alist)
(symbol-value ff-other-file-alist)
ff-other-file-alist)
- pathname (if (buffer-file-name)
- (buffer-file-name)
- "/none.none"))
+ pathname (or (ff-buffer-file-name) "/none.none"))
(setq fname (file-name-nondirectory pathname)
no-match nil
@@ -448,7 +455,7 @@ If optional IN-OTHER-WINDOW is non-nil, find the file in another window."
;; invoke it with the name of the current file
(if (and (atom action) (fboundp action))
(progn
- (setq suffixes (funcall action (buffer-file-name))
+ (setq suffixes (funcall action (ff-buffer-file-name))
match (cons (car match) (list suffixes))
stub nil
default-name (car suffixes)))
@@ -550,9 +557,7 @@ the `ff-ignore-include' variable."
(setq alist (if (symbolp ff-other-file-alist)
(symbol-value ff-other-file-alist)
ff-other-file-alist)
- pathname (if (buffer-file-name)
- (buffer-file-name)
- "/none.none"))
+ pathname (or (ff-buffer-file-name) "/none.none"))
(setq fname (file-name-nondirectory pathname)
match (car alist))
@@ -576,7 +581,7 @@ the `ff-ignore-include' variable."
;; invoke it with the name of the current file
(if (and (atom action) (fboundp action))
(progn
- (setq suffixes (funcall action (buffer-file-name))
+ (setq suffixes (funcall action (ff-buffer-file-name))
match (cons (car match) (list suffixes))
stub nil))
@@ -655,14 +660,14 @@ name of the first file found."
(message "Finding buffer %s..." filename))
(if (bufferp (get-file-buffer filename))
- (setq found (buffer-file-name (get-file-buffer filename))))
+ (setq found (ff-buffer-file-name (get-file-buffer filename))))
(setq blist (buffer-list))
(setq buf (buffer-name (car blist)))
(while (and blist (not found))
(if (string-match-p (concat filename "<[0-9]+>") buf)
- (setq found (buffer-file-name (car blist))))
+ (setq found (ff-buffer-file-name (car blist))))
(setq blist (cdr blist))
(setq buf (buffer-name (car blist))))
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 8ee9f69fc1..b5ff5cfd0a 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -39,7 +39,7 @@
;;
;; To turn Font Lock mode on automatically, add this to your init file:
;;
-;; (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
+;; (add-hook 'emacs-lisp-mode-hook #'turn-on-font-lock)
;;
;; Or if you want to turn Font Lock mode on in many modes:
;;
@@ -582,11 +582,11 @@ When called with no args it should leave point at the beginning of any
enclosing textual block and mark at the end.
This is normally set via `font-lock-defaults'.")
-(defvar font-lock-fontify-buffer-function 'font-lock-default-fontify-buffer
+(defvar font-lock-fontify-buffer-function #'font-lock-default-fontify-buffer
"Function to use for fontifying the buffer.
This is normally set via `font-lock-defaults'.")
-(defvar font-lock-unfontify-buffer-function 'font-lock-default-unfontify-buffer
+(defvar font-lock-unfontify-buffer-function #'font-lock-default-unfontify-buffer
"Function to use for unfontifying the buffer.
This is used when turning off Font Lock mode.
This is normally set via `font-lock-defaults'.")
@@ -600,7 +600,7 @@ If it fontifies a larger region, it should ideally return a list of the form
\(jit-lock-bounds BEG . END) indicating the bounds of the region actually
fontified.")
-(defvar font-lock-unfontify-region-function 'font-lock-default-unfontify-region
+(defvar font-lock-unfontify-region-function #'font-lock-default-unfontify-region
"Function to use for unfontifying a region.
It should take two args, the beginning and end of the region.
This is normally set via `font-lock-defaults'.")
@@ -667,12 +667,12 @@ be enabled."
(defun font-lock-mode-internal (arg)
;; Turn on Font Lock mode.
(when arg
- (add-hook 'after-change-functions 'font-lock-after-change-function t t)
+ (add-hook 'after-change-functions #'font-lock-after-change-function t t)
(font-lock-set-defaults)
(font-lock-turn-on-thing-lock))
;; Turn off Font Lock mode.
(unless font-lock-mode
- (remove-hook 'after-change-functions 'font-lock-after-change-function t)
+ (remove-hook 'after-change-functions #'font-lock-after-change-function t)
(font-lock-unfontify-buffer)
(font-lock-turn-off-thing-lock)))
@@ -934,17 +934,17 @@ The value of this variable is used when Font Lock mode is turned on."
(`jit-lock-mode
;; Prepare for jit-lock
(remove-hook 'after-change-functions
- 'font-lock-after-change-function t)
+ #'font-lock-after-change-function t)
(set (make-local-variable 'font-lock-flush-function)
- 'jit-lock-refontify)
+ #'jit-lock-refontify)
(set (make-local-variable 'font-lock-ensure-function)
- 'jit-lock-fontify-now)
+ #'jit-lock-fontify-now)
;; Prevent font-lock-fontify-buffer from fontifying eagerly the whole
;; buffer. This is important for things like CWarn mode which
;; adds/removes a few keywords and does a refontify (which takes ages on
;; large files).
(set (make-local-variable 'font-lock-fontify-buffer-function)
- 'jit-lock-refontify)
+ #'jit-lock-refontify)
;; Don't fontify eagerly (and don't abort if the buffer is large).
(set (make-local-variable 'font-lock-fontified) t)
;; Use jit-lock.
@@ -952,7 +952,7 @@ The value of this variable is used when Font Lock mode is turned on."
(not font-lock-keywords-only))
;; Tell jit-lock how we extend the region to refontify.
(add-hook 'jit-lock-after-change-extend-region-functions
- 'font-lock-extend-jit-lock-region-after-change
+ #'font-lock-extend-jit-lock-region-after-change
nil t))))
(defun font-lock-turn-off-thing-lock ()
@@ -1593,6 +1593,7 @@ START should be at the beginning of a line."
"Put proper face on each string and comment between START and END.
START should be at the beginning of a line."
(syntax-propertize end) ; Apply any needed syntax-table properties.
+ (with-syntax-table (or syntax-ppss-table (syntax-table))
(let ((comment-end-regexp
(or font-lock-comment-end-skip
(regexp-quote
@@ -1627,7 +1628,7 @@ START should be at the beginning of a line."
font-lock-comment-delimiter-face))))
(< (point) end))
(setq state (parse-partial-sexp (point) end nil nil state
- 'syntax-table)))))
+ 'syntax-table))))))
;;; End of Syntactic fontification functions.
@@ -1787,7 +1788,7 @@ If SYNTACTIC-KEYWORDS is non-nil, it means these keywords are used for
(mapcar #'font-lock-compile-keyword keywords))))
(if (and (not syntactic-keywords)
(let ((beg-function syntax-begin-function))
- (or (eq beg-function 'beginning-of-defun)
+ (or (eq beg-function #'beginning-of-defun)
(if (symbolp beg-function)
(get beg-function 'font-lock-syntax-paren-check))))
(not beginning-of-defun-function))
@@ -1908,7 +1909,7 @@ Sets various variables using `font-lock-defaults' and
(let ((syntax (cdr selem)))
(dolist (char (if (numberp (car selem))
(list (car selem))
- (mapcar 'identity (car selem))))
+ (mapcar #'identity (car selem))))
(modify-syntax-entry char syntax font-lock-syntax-table)))))
;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
;; but that was removed in 25.1, so if it's a cons cell, we assume that
@@ -2171,7 +2172,7 @@ Sets various variables using `font-lock-defaults' and
;; ;; The default level is usually, but not necessarily, level 1.
;; (setq level (- (length keywords)
;; (length (member (eval (car keywords))
-;; (mapcar 'eval (cdr keywords))))))))
+;; (mapcar #'eval (cdr keywords))))))))
;; (setq font-lock-fontify-level (list level (> level 1)
;; (< level (1- (length keywords))))))))
;;
diff --git a/lisp/frameset.el b/lisp/frameset.el
index 2453f57e22..9a7a8bcf8b 100644
--- a/lisp/frameset.el
+++ b/lisp/frameset.el
@@ -572,7 +572,7 @@ see `frameset-filter-alist'."
(defun frameset-filter-minibuffer (current filtered _parameters saving)
"Force the minibuffer parameter to have a sensible value.
-When saving, convert (minibuffer . #<window>) to (minibuffer . t).
+When saving, convert (minibuffer . #<window>) to (minibuffer . nil).
When restoring, if there are two copies, keep the one pointing to
a live window.
@@ -580,7 +580,12 @@ For the meaning of CURRENT, FILTERED, PARAMETERS and SAVING,
see `frameset-filter-alist'."
(let ((value (cdr current)) mini)
(cond (saving
- (if (windowp value) '(minibuffer . t) t))
+ ;; "Fix semantics of 'minibuffer' frame parameter" change:
+ ;; When the cdr of the parameter is a minibuffer window, save
+ ;; (minibuffer . nil) instead of (minibuffer . t).
+ (if (windowp value)
+ '(minibuffer . nil)
+ t))
((setq mini (assq 'minibuffer filtered))
(when (windowp value) (setcdr mini value))
nil)
@@ -906,12 +911,12 @@ is the parameter alist of the frame being restored. Internal use only."
;; If it has not been loaded, and it is not a minibuffer-only frame,
;; let's look for an existing non-minibuffer-only frame to reuse.
(unless (or frame (eq (cdr (assq 'minibuffer parameters)) 'only))
+ ;; "Fix semantics of 'minibuffer' frame parameter" change:
+ ;; The 'minibuffer' frame parameter of a non-minibuffer-only
+ ;; frame is t instead of that frame's minibuffer window.
(setq frame (frameset--find-frame-if
(lambda (f)
- (let ((w (frame-parameter f 'minibuffer)))
- (and (window-live-p w)
- (window-minibuffer-p w)
- (eq (window-frame w) f))))
+ (eq (frame-parameter f 'minibuffer) t))
display))))
(mini
;; For minibufferless frames, check whether they already exist,
@@ -1027,8 +1032,11 @@ For the meaning of FORCE-DISPLAY, see `frameset-restore'."
(t (not force-display))))
(defun frameset-minibufferless-first-p (frame1 _frame2)
- "Predicate to sort minibufferless frames before other frames."
- (not (frame-parameter frame1 'minibuffer)))
+ "Predicate to sort minibuffer-less frames before other frames."
+ ;; "Fix semantics of 'minibuffer' frame parameter" change: The
+ ;; 'minibuffer' frame parameter of a minibuffer-less frame is that
+ ;; frame's minibuffer window instead of nil.
+ (windowp (frame-parameter frame1 'minibuffer)))
;;;###autoload
(cl-defun frameset-restore (frameset
diff --git a/lisp/generic-x.el b/lisp/generic-x.el
index 71ba1f7d00..1e3a6e183b 100644
--- a/lisp/generic-x.el
+++ b/lisp/generic-x.el
@@ -215,6 +215,7 @@ This hook will be installed if the variable
(defconst generic-unix-modes
'(alias-generic-mode
+ ansible-inventory-generic-mode
etc-fstab-generic-mode
etc-modules-conf-generic-mode
etc-passwd-generic-mode
@@ -646,6 +647,30 @@ like an INI file. You can add this hook to `find-file-hook'."
'((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2))))))
"Generic mode for C Shell alias files."))
+;; Ansible inventory files
+(when (memq 'ansible-inventory-generic-mode generic-extras-enable-list)
+
+(define-generic-mode ansible-inventory-generic-mode
+ '(?#)
+ nil
+ '(("^\\s-*\\(\\[.*\\]\\)" 1 font-lock-constant-face)
+ ("^\\s-*\\([^ \n\r]*\\)" 1 font-lock-function-name-face)
+ ;; Variable assignments must be x=y, so highlight as warning if
+ ;; the value is missing.
+ ("\\s-\\([^ =\n\r]+\\)[\n\r ]" 1 font-lock-warning-face)
+ ;; Variable assignments: x=y
+ ("\\([^ =\n\r]+\\)=\\([^ \n\r]*\\)"
+ (1 font-lock-variable-name-face)
+ (2 font-lock-keyword-face)))
+ '("inventory")
+ (list
+ (function
+ (lambda ()
+ (setq imenu-generic-expression
+ '((nil "^\\s-*\\[\\(.*\\)\\]" 1)
+ ("*Variables*" "\\s-+\\([^ =\n\r]+\\)=" 1))))))
+ "Generic mode for Ansible inventory files."))
+
;;; Windows RC files
;; Contributed by ACorreir@pervasive-sw.com (Alfred Correira)
(when (memq 'rc-generic-mode generic-extras-enable-list)
diff --git a/lisp/gnus/ChangeLog.1 b/lisp/gnus/ChangeLog.1
index 47eb34ee69..475af051a6 100644
--- a/lisp/gnus/ChangeLog.1
+++ b/lisp/gnus/ChangeLog.1
@@ -3230,7 +3230,7 @@
* gnus-picon.el (gnus-picons-display-pairs): Don't add two bars.
(gnus-picons-try-face): Set the foreground color on the bar.
- (gnus-picons-group-exluded-groups): New variable.
+ (gnus-picons-group-excluded-groups): New variable.
(gnus-group-display-picons): Use it.
1997-10-13 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
diff --git a/lisp/gnus/ChangeLog.2 b/lisp/gnus/ChangeLog.2
index 73f5f09965..ed0e81f0eb 100644
--- a/lisp/gnus/ChangeLog.2
+++ b/lisp/gnus/ChangeLog.2
@@ -4705,7 +4705,7 @@
illegible and invisible text.
* gnus-util.el (gnus-multiple-choice): Separate choices with
- ", ". Suggested by Dan Jacobson <jidanni@dman.ddts.net>.
+ ", ". Suggested by Dan Jacobson <jidanni@dman.ddts.net>.
2003-02-18 Jesper Harder <harder@ifa.au.dk>
diff --git a/lisp/gnus/ChangeLog.3 b/lisp/gnus/ChangeLog.3
index e6cbe0458b..f734e6e697 100644
--- a/lisp/gnus/ChangeLog.3
+++ b/lisp/gnus/ChangeLog.3
@@ -9090,7 +9090,7 @@
(shr-kinsoku-shorten): New internal variable.
(shr-find-fill-point): Make kinsoku shorten text line if
shr-kinsoku-shorten is bound to non-nil.
- (shr-tag-table): Bild shr-kinsoku-shorten to t; refer to
+ (shr-tag-table): Bind shr-kinsoku-shorten to t; refer to
shr-indentation too when testing if table is wider than frame width.
(shr-insert-table): Use `string-width' instead of `length' to measure
text width.
diff --git a/lisp/gnus/canlock.el b/lisp/gnus/canlock.el
index b73d863f1c..27b00da1e2 100644
--- a/lisp/gnus/canlock.el
+++ b/lisp/gnus/canlock.el
@@ -70,13 +70,6 @@ buffer does not look like a news message."
:type 'boolean
:group 'canlock)
-(eval-when-compile
- (defmacro canlock-string-as-unibyte (string)
- "Return a unibyte string with the same individual bytes as STRING."
- (if (fboundp 'string-as-unibyte)
- (list 'string-as-unibyte string)
- string)))
-
(defun canlock-sha1 (message)
"Make a SHA-1 digest of MESSAGE as a unibyte string of length 20 bytes."
(let (sha1-maximum-internal-length)
@@ -97,7 +90,7 @@ buffer does not look like a news message."
(canlock-sha1
(concat opad
(canlock-sha1
- (concat ipad (canlock-string-as-unibyte message-id))))))))
+ (concat ipad (string-as-unibyte message-id))))))))
(defun canlock-narrow-to-header ()
"Narrow the buffer to the head of the message."
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index fca2394cbc..7aa52794e4 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -97,34 +97,6 @@ ARGS are passed to `message'."
(autoload 'widget-convert "wid-edit")
(autoload 'widget-default-get "wid-edit")
-;; Copy of the `nnmail-lazy' code from `nnmail.el':
-(define-widget 'gmm-lazy 'default
- "Base widget for recursive data structures.
-
-This is a copy of the `lazy' widget in Emacs 22.1 provided for compatibility."
- :format "%{%t%}: %v"
- :convert-widget 'widget-value-convert-widget
- :value-create (lambda (widget)
- (let ((value (widget-get widget :value))
- (type (widget-get widget :type)))
- (widget-put widget :children
- (list (widget-create-child-value
- widget (widget-convert type) value)))))
- :value-delete 'widget-children-value-delete
- :value-get (lambda (widget)
- (widget-value (car (widget-get widget :children))))
- :value-inline (lambda (widget)
- (widget-apply (car (widget-get widget :children))
- :value-inline))
- :default-get (lambda (widget)
- (widget-default-get
- (widget-convert (widget-get widget :type))))
- :match (lambda (widget value)
- (widget-apply (widget-convert (widget-get widget :type))
- :match value))
- :validate (lambda (widget)
- (widget-apply (car (widget-get widget :children)) :validate)))
-
;; Note: The format of `gmm-tool-bar-item' may change if some future Emacs
;; version will provide customizable tool bar buttons using a different
;; interface.
@@ -144,7 +116,7 @@ This is a copy of the `lazy' widget in Emacs 22.1 provided for compatibility."
;;
;; Then use (plist-get rs-command :none), (plist-get rs-command :shift)
-(define-widget 'gmm-tool-bar-item (if (gmm-widget-p 'lazy) 'lazy 'gmm-lazy)
+(define-widget 'gmm-tool-bar-item 'lazy
"Tool bar list item."
:tag "Tool bar item"
:type '(choice
@@ -163,7 +135,7 @@ This is a copy of the `lazy' widget in Emacs 22.1 provided for compatibility."
(const :tag "No map")
(plist :inline t :tag "Properties"))))
-(define-widget 'gmm-tool-bar-zap-list (if (gmm-widget-p 'lazy) 'lazy 'gmm-lazy)
+(define-widget 'gmm-tool-bar-zap-list 'lazy
"Tool bar zap list."
:tag "Tool bar zap list"
:type '(choice (const :tag "Zap all" t)
@@ -193,28 +165,12 @@ This is a copy of the `lazy' widget in Emacs 22.1 provided for compatibility."
:tag "Other"
(symbol :tag "Icon item")))))
-;; (defun gmm-color-cells (&optional display)
-;; "Return the number of color cells supported by DISPLAY.
-;; Compatibility function."
-;; ;; `display-color-cells' doesn't return more than 256 even if color depth is
-;; ;; > 8 in Emacs 21.
-;; ;;
-;; ;; Feel free to add proper XEmacs support.
-;; (let* ((cells (and (fboundp 'display-color-cells)
-;; (display-color-cells display)))
-;; (plane (and (fboundp 'x-display-planes)
-;; (ash 1 (x-display-planes))))
-;; (none -1))
-;; (max (if (integerp cells) cells none)
-;; (if (integerp plane) plane none))))
-
(defcustom gmm-tool-bar-style
(if (and (boundp 'tool-bar-mode)
tool-bar-mode
- (and (fboundp 'display-visual-class)
- (not (memq (display-visual-class)
- (list 'static-gray 'gray-scale
- 'static-color 'pseudo-color)))))
+ (memq (display-visual-class)
+ (list 'static-gray 'gray-scale
+ 'static-color 'pseudo-color)))
'gnome
'retro)
"Preferred tool bar style."
@@ -242,15 +198,13 @@ item. When \\[describe-key] <icon> shows \"<tool-bar> <new-file>
runs the command find-file\", then use `new-file' in ZAP-LIST.
DEFAULT-MAP specifies the default key map for ICON-LIST."
- (let (;; For Emacs 21, we must let-bind `tool-bar-map'. In Emacs 22, we
- ;; could use some other local variable.
- (tool-bar-map (if (eq zap-list t)
- (make-sparse-keymap)
- (copy-keymap tool-bar-map))))
+ (let ((map (if (eq zap-list t)
+ (make-sparse-keymap)
+ (copy-keymap tool-bar-map))))
(when (listp zap-list)
;; Zap some items which aren't relevant for this mode and take up space.
(dolist (key zap-list)
- (define-key tool-bar-map (vector key) nil)))
+ (define-key map (vector key) nil)))
(mapc (lambda (el)
(let ((command (car el))
(icon (nth 1 el))
@@ -262,7 +216,7 @@ DEFAULT-MAP specifies the default key map for ICON-LIST."
;; widget. Suppress tooltip by adding `:enable nil'.
(if (fboundp 'tool-bar-local-item)
(apply 'tool-bar-local-item icon nil nil
- tool-bar-map :enable nil props)
+ map :enable nil props)
;; (tool-bar-local-item ICON DEF KEY MAP &rest PROPS)
;; (tool-bar-add-item ICON DEF KEY &rest PROPS)
(apply 'tool-bar-add-item icon nil nil :enable nil props)))
@@ -270,18 +224,18 @@ DEFAULT-MAP specifies the default key map for ICON-LIST."
(apply 'tool-bar-local-item
icon command
(intern icon) ;; reuse icon or fmap here?
- tool-bar-map props))
+ map props))
(t ;; A menu command
(apply 'tool-bar-local-item-from-menu
;; (apply 'tool-bar-local-item icon def key
;; tool-bar-map props)
- command icon tool-bar-map (symbol-value fmap)
+ command icon map (symbol-value fmap)
props)))
t))
(if (symbolp icon-list)
(eval icon-list)
icon-list))
- tool-bar-map))
+ map))
(defmacro defun-gmm (name function arg-list &rest body)
"Create function NAME.
@@ -292,109 +246,6 @@ Otherwise, create function NAME with ARG-LIST and BODY."
`(defalias ',name ',function)
`(defun ,name ,arg-list ,@body))))
-(defun-gmm gmm-image-search-load-path
- image-search-load-path (file &optional path)
- "Emacs 21 and XEmacs don't have `image-search-load-path'.
-This function returns nil on those systems."
- nil)
-
-;; Cf. `mh-image-load-path-for-library' in `mh-compat.el'.
-
-(defun-gmm gmm-image-load-path-for-library
- image-load-path-for-library (library image &optional path no-error)
- "Return a suitable search path for images used by LIBRARY.
-
-It searches for IMAGE in `image-load-path' (excluding
-\"`data-directory'/images\") and `load-path', followed by a path
-suitable for LIBRARY, which includes \"../../etc/images\" and
-\"../etc/images\" relative to the library file itself, and then
-in \"`data-directory'/images\".
-
-Then this function returns a list of directories which contains
-first the directory in which IMAGE was found, followed by the
-value of `load-path'. If PATH is given, it is used instead of
-`load-path'.
-
-If NO-ERROR is non-nil and a suitable path can't be found, don't
-signal an error. Instead, return a list of directories as before,
-except that nil appears in place of the image directory.
-
-Here is an example that uses a common idiom to provide
-compatibility with versions of Emacs that lack the variable
-`image-load-path':
-
- ;; Shush compiler.
- (defvar image-load-path)
-
- (let* ((load-path (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\"))
- (image-load-path (cons (car load-path)
- (when (boundp \\='image-load-path)
- image-load-path))))
- (mh-tool-bar-folder-buttons-init))"
- (unless library (error "No library specified"))
- (unless image (error "No image specified"))
- (let (image-directory image-directory-load-path)
- ;; Check for images in image-load-path or load-path.
- (let ((img image)
- (dir (or
- ;; Images in image-load-path.
- (gmm-image-search-load-path image) ;; "gmm-" prefix!
- ;; Images in load-path.
- (locate-library image)))
- parent)
- ;; Since the image might be in a nested directory (for
- ;; example, mail/attach.pbm), adjust `image-directory'
- ;; accordingly.
- (when dir
- (setq dir (file-name-directory dir))
- (while (setq parent (file-name-directory img))
- (setq img (directory-file-name parent)
- dir (expand-file-name "../" dir))))
- (setq image-directory-load-path dir))
-
- ;; If `image-directory-load-path' isn't Emacs's image directory,
- ;; it's probably a user preference, so use it. Then use a
- ;; relative setting if possible; otherwise, use
- ;; `image-directory-load-path'.
- (cond
- ;; User-modified image-load-path?
- ((and image-directory-load-path
- (not (equal image-directory-load-path
- (file-name-as-directory
- (expand-file-name "images" data-directory)))))
- (setq image-directory image-directory-load-path))
- ;; Try relative setting.
- ((let (library-name d1ei d2ei)
- ;; First, find library in the load-path.
- (setq library-name (locate-library library))
- (if (not library-name)
- (error "Cannot find library %s in load-path" library))
- ;; And then set image-directory relative to that.
- (setq
- ;; Go down 2 levels.
- d2ei (file-name-as-directory
- (expand-file-name
- (concat (file-name-directory library-name) "../../etc/images")))
- ;; Go down 1 level.
- d1ei (file-name-as-directory
- (expand-file-name
- (concat (file-name-directory library-name) "../etc/images"))))
- (setq image-directory
- ;; Set it to nil if image is not found.
- (cond ((file-exists-p (expand-file-name image d2ei)) d2ei)
- ((file-exists-p (expand-file-name image d1ei)) d1ei)))))
- ;; Use Emacs's image directory.
- (image-directory-load-path
- (setq image-directory image-directory-load-path))
- (no-error
- (message "Could not find image %s for library %s" image library))
- (t
- (error "Could not find image %s for library %s" image library)))
-
- ;; Return an augmented `path' or `load-path'.
- (nconc (list image-directory)
- (delete image-directory (copy-sequence (or path load-path))))))
-
(defun gmm-customize-mode (&optional mode)
"Customize customization group for MODE.
If mode is nil, use `major-mode' of the current buffer."
@@ -405,75 +256,8 @@ If mode is nil, use `major-mode' of the current buffer."
(string-match "^\\(.+\\)-mode$" mode)
(match-string 1 mode))))))
-(defun gmm-write-region (start end filename &optional append visit
- lockname mustbenew)
- "Compatibility function for `write-region'.
-
-In XEmacs, the seventh argument of `write-region' specifies the
-coding-system."
- (if (and mustbenew (featurep 'xemacs))
- (if (file-exists-p filename)
- (signal 'file-already-exists (list "File exists" filename))
- (write-region start end filename append visit lockname))
- (write-region start end filename append visit lockname mustbenew)))
-
-;; `interactive-p' is obsolete since Emacs 23.2.
-(defmacro gmm-called-interactively-p (kind)
- (condition-case nil
- (progn
- (eval '(called-interactively-p 'any))
- ;; Emacs >=23.2
- `(called-interactively-p ,kind))
- ;; Emacs <23.2
- (wrong-number-of-arguments '(called-interactively-p))
- ;; XEmacs
- (void-function '(interactive-p))))
-
-;; `labels' is obsolete since Emacs 24.3.
-(defmacro gmm-labels (bindings &rest body)
- "Make temporary function bindings.
-The bindings can be recursive and the scoping is lexical, but capturing
-them in closures will only work if `lexical-binding' is in use. But in
-Emacs 24.2 and older, the lexical scoping is handled via `lexical-let'
-rather than relying on `lexical-binding'.
-
-\(fn ((FUNC ARGLIST BODY...) ...) FORM...)"
- `(,(progn (require 'cl) (if (fboundp 'cl-labels) 'cl-labels 'labels))
- ,bindings ,@body))
-(put 'gmm-labels 'lisp-indent-function 1)
-(put 'gmm-labels 'edebug-form-spec '((&rest (sexp sexp &rest form)) &rest form))
-
-(defun gmm-format-time-string (format-string &optional time tz)
- "Use FORMAT-STRING to format the time TIME, or now if omitted.
-The optional TZ specifies the time zone in a number of seconds; any
-other non-nil value will be treated as 0. Note that both the format
-specifiers `%Z' and `%z' will be replaced with a numeric form. "
-;; FIXME: is there a smart way to replace %Z with a time zone name?
- (if (and (numberp tz) (not (zerop tz)))
- (let ((st 0)
- (case-fold-search t)
- ls nd rest)
- (setq time (if time
- (copy-sequence time)
- (current-time)))
- (if (>= (setq ls (- (cadr time) (car (current-time-zone)) (- tz))) 0)
- (setcar (cdr time) ls)
- (setcar (cdr time) (+ ls 65536))
- (setcar time (1- (car time))))
- (setq tz (format "%s%02d%02d"
- (if (>= tz 0) "+" "-")
- (/ (abs tz) 3600)
- (/ (% (abs tz) 3600) 60)))
- (while (string-match "%+z" format-string st)
- (if (zerop (% (- (setq nd (match-end 0)) (match-beginning 0)) 2))
- (progn
- (push (substring format-string st (- nd 2)) rest)
- (push tz rest))
- (push (substring format-string st nd) rest))
- (setq st nd))
- (push (substring format-string st) rest)
- (format-time-string (apply 'concat (nreverse rest)) time))
- (format-time-string format-string time t)))
+(define-obsolete-function-alias 'gmm-format-time-string 'format-time-string
+ "25.2")
(provide 'gmm-utils)
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 80753c1181..e6356b1d12 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -30,10 +30,8 @@
(require 'gnus-score)
(require 'gnus-srvr)
(require 'gnus-util)
+(require 'timer)
(eval-when-compile
- (if (featurep 'xemacs)
- (require 'itimer)
- (require 'timer))
(require 'cl))
(autoload 'gnus-server-update-server "gnus-srvr")
@@ -82,28 +80,16 @@ If nil, only read articles will be expired."
:group 'gnus-agent
:type 'hook)
-;; Extracted from gnus-xmas-redefine in order to preserve user settings
-(when (featurep 'xemacs)
- (add-hook 'gnus-agent-group-mode-hook 'gnus-xmas-agent-group-menu-add))
-
(defcustom gnus-agent-summary-mode-hook nil
"Hook run in Agent summary minor modes."
:group 'gnus-agent
:type 'hook)
-;; Extracted from gnus-xmas-redefine in order to preserve user settings
-(when (featurep 'xemacs)
- (add-hook 'gnus-agent-summary-mode-hook 'gnus-xmas-agent-summary-menu-add))
-
(defcustom gnus-agent-server-mode-hook nil
"Hook run in Agent summary minor modes."
:group 'gnus-agent
:type 'hook)
-;; Extracted from gnus-xmas-redefine in order to preserve user settings
-(when (featurep 'xemacs)
- (add-hook 'gnus-agent-server-mode-hook 'gnus-xmas-agent-server-menu-add))
-
(defcustom gnus-agent-confirmation-function 'y-or-n-p
"Function to confirm when error happens."
:version "21.1"
@@ -175,7 +161,7 @@ enable expiration per categories, topics, and groups."
(const :format "Disable " DISABLE)))
(defcustom gnus-agent-expire-unagentized-dirs t
- "*Whether expiration should expire in unagentized directories.
+ "Whether expiration should expire in unagentized directories.
Have gnus-agent-expire scan the directories under
\(gnus-agent-directory) for groups that are no longer agentized.
When found, offer to remove them."
@@ -252,16 +238,6 @@ NOTES:
(defvar gnus-headers)
(defvar gnus-score)
-;; Added to support XEmacs
-(eval-and-compile
- (unless (fboundp 'directory-files-and-attributes)
- (defun directory-files-and-attributes (directory
- &optional full match nosort)
- (let (result)
- (dolist (file (directory-files directory full match nosort))
- (push (cons file (file-attributes file)) result))
- (nreverse result)))))
-
;;;
;;; Setup
;;;
@@ -571,19 +547,9 @@ manipulated as follows:
["Remove" gnus-agent-remove-server t]))))
(defun gnus-agent-make-mode-line-string (string mouse-button mouse-func)
- (if (and (fboundp 'propertize)
- (fboundp 'make-mode-line-mouse-map))
- (propertize string 'local-map
- (make-mode-line-mouse-map mouse-button mouse-func)
- 'mouse-face
- (if (and (featurep 'xemacs)
- ;; XEmacs's `facep' only checks for a face
- ;; object, not for a face name, so it's useless
- ;; to check with `facep'.
- (find-face 'modeline))
- 'modeline
- 'mode-line-highlight))
- string))
+ (propertize string 'local-map
+ (make-mode-line-mouse-map mouse-button mouse-func)
+ 'mouse-face 'mode-line-highlight))
(defun gnus-agent-toggle-plugged (set-to)
"Toggle whether Gnus is unplugged or not."
@@ -868,7 +834,7 @@ be a select method."
(not (eq gnus-agent-synchronize-flags 'ask)))
(and (eq gnus-agent-synchronize-flags 'ask)
(gnus-y-or-n-p
- (gnus-format-message
+ (format-message
"Synchronize flags on server `%s'? "
(cadr method))))))
(gnus-agent-synchronize-flags-server method)))
@@ -2667,8 +2633,10 @@ General format specifiers can also be used. See Info node
"\C-c\C-i" gnus-info-find-node
"\C-c\C-b" gnus-bug))
-(defvar gnus-category-menu-hook nil
- "*Hook run after the creation of the menu.")
+(defcustom gnus-category-menu-hook nil
+ "Hook run after the creation of the menu."
+ :group 'gnus-agent
+ :type 'hook)
(defun gnus-category-make-menu-bar ()
(gnus-turn-off-edit-menu 'category)
@@ -2713,7 +2681,7 @@ The following commands are available:
(let* ((gnus-tmp-name (format "%s" (car category)))
(gnus-tmp-groups (length (gnus-agent-cat-groups category))))
(beginning-of-line)
- (gnus-add-text-properties
+ (add-text-properties
(point)
(prog1 (1+ (point))
;; Insert the text.
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 66b1e38da2..d7737cef4a 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -158,7 +158,7 @@
"Envelope-To" "X-Spam-Score" "System-Type" "X-Injected-Via-Gmane"
"X-Gmane-NNTP-Posting-Host" "Jabber-ID" "Archived-At"
"Envelope-Sender" "Envelope-Recipients"))
- "*All headers that start with this regexp will be hidden.
+ "All headers that start with this regexp will be hidden.
This variable can also be a list of regexps of headers to be ignored.
If `gnus-visible-headers' is non-nil, this variable will be ignored."
:type '(choice regexp
@@ -167,7 +167,7 @@ If `gnus-visible-headers' is non-nil, this variable will be ignored."
(defcustom gnus-visible-headers
"^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^[BGF]?Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Mail-Followup-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-From:"
- "*All headers that do not match this regexp will be hidden.
+ "All headers that do not match this regexp will be hidden.
This variable can also be a list of regexp of headers to remain visible.
If this variable is non-nil, `gnus-ignored-headers' will be ignored."
:type '(choice
@@ -184,7 +184,7 @@ If this variable is non-nil, `gnus-ignored-headers' will be ignored."
(defcustom gnus-sorted-header-list
'("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Newsgroups:"
"^Followup-To:" "^To:" "^Cc:" "^Date:" "^Organization:")
- "*This variable is a list of regular expressions.
+ "This variable is a list of regular expressions.
If it is non-nil, headers that match the regular expressions will
be placed first in the article buffer in the sequence specified by
this list."
@@ -266,19 +266,12 @@ This can also be a list of the above values."
;; Fixme: This isn't the right thing for mixed graphical and non-graphical
;; frames in a session.
(defcustom gnus-article-x-face-command
- (if (featurep 'xemacs)
- (if (or (gnus-image-type-available-p 'xface)
- (gnus-image-type-available-p 'pbm))
- 'gnus-display-x-face-in-from
- "{ echo \
+ (if (gnus-image-type-available-p 'pbm)
+ 'gnus-display-x-face-in-from
+ "{ echo \
'/* Format_version=1, Width=48, Height=48, Depth=1, Valid_bits_per_item=16 */'\
-; uncompface; } | icontopbm | ee -")
- (if (gnus-image-type-available-p 'pbm)
- 'gnus-display-x-face-in-from
- "{ echo \
-'/* Format_version=1, Width=48, Height=48, Depth=1, Valid_bits_per_item=16 */'\
-; uncompface; } | icontopbm | display -"))
- "*String or function to be executed to display an X-Face header.
+; uncompface; } | icontopbm | display -")
+ "String or function to be executed to display an X-Face header.
If it is a string, the command will be executed in a sub-shell
asynchronously. The compressed face will be piped to this command."
:type `(choice string
@@ -396,7 +389,7 @@ advertisements. For example:
;; 2 3 gnus-emphasis-strikethru)
("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)"
2 3 gnus-emphasis-underline))))
- "*Alist that says how to fontify certain phrases.
+ "Alist that says how to fontify certain phrases.
Each item looks like this:
(\"_\\\\(\\\\w+\\\\)_\" 0 1 \\='underline)
@@ -484,9 +477,7 @@ and the latter avoids underlining any whitespace at all."
Example: (_/*word*/_)."
:group 'gnus-article-emphasis)
-(defface gnus-emphasis-strikethru (if (featurep 'xemacs)
- '((t (:strikethru t)))
- '((t (:strike-through t))))
+(defface gnus-emphasis-strikethru '((t (:strike-through t)))
"Face used for displaying strike-through text (-word-)."
:group 'gnus-article-emphasis)
@@ -507,7 +498,7 @@ be fed to `format-time-string'."
:group 'gnus-article-washing)
(defcustom gnus-save-all-headers t
- "*If non-nil, don't remove any headers before saving.
+ "If non-nil, don't remove any headers before saving.
This will be overridden by the `:headers' property that the symbol of
the saver function, which is specified by `gnus-default-article-saver',
might have."
@@ -515,7 +506,7 @@ might have."
:type 'boolean)
(defcustom gnus-prompt-before-saving 'always
- "*This variable says how much prompting is to be done when saving articles.
+ "This variable says how much prompting is to be done when saving articles.
If it is nil, no prompting will be done, and the articles will be
saved to the default files. If this variable is `always', each and
every article that is saved will be preceded by a prompt, even when
@@ -662,7 +653,7 @@ LAST-FILE."
(defcustom gnus-split-methods
'((gnus-article-archive-name)
(gnus-article-nndoc-name))
- "*Variable used to suggest where articles are to be saved.
+ "Variable used to suggest where articles are to be saved.
For instance, if you would like to save articles related to Gnus in
the file \"gnus-stuff\", and articles related to VM in \"vm-stuff\",
you could set this variable to something like:
@@ -688,14 +679,14 @@ used as possible file names."
(sexp :value nil))))
(defcustom gnus-page-delimiter "^\^L"
- "*Regexp describing what to use as article page delimiters.
+ "Regexp describing what to use as article page delimiters.
The default value is \"^\^L\", which is a form linefeed at the
beginning of a line."
:type 'regexp
:group 'gnus-article-various)
(defcustom gnus-article-mode-line-format "Gnus: %g %S%m"
- "*The format specification for the article mode line.
+ "The format specification for the article mode line.
See `gnus-summary-mode-line-format' for a closer description.
The following additional specs are available:
@@ -707,24 +698,17 @@ The following additional specs are available:
:group 'gnus-article-various)
(defcustom gnus-article-mode-hook nil
- "*A hook for Gnus article mode."
+ "A hook for Gnus article mode."
:type 'hook
:group 'gnus-article-various)
-(when (featurep 'xemacs)
- ;; Extracted from gnus-xmas-define in order to preserve user settings
- (when (fboundp 'turn-off-scroll-in-place)
- (add-hook 'gnus-article-mode-hook 'turn-off-scroll-in-place))
- ;; Extracted from gnus-xmas-redefine in order to preserve user settings
- (add-hook 'gnus-article-mode-hook 'gnus-xmas-article-menu-add))
-
(defcustom gnus-article-menu-hook nil
- "*Hook run after the creation of the article mode menu."
+ "Hook run after the creation of the article mode menu."
:type 'hook
:group 'gnus-article-various)
(defcustom gnus-article-prepare-hook nil
- "*A hook called after an article has been prepared in the article buffer."
+ "A hook called after an article has been prepared in the article buffer."
:type 'hook
:group 'gnus-article-various)
@@ -862,7 +846,7 @@ articles."
("Subject" nil gnus-header-subject)
("Newsgroups:.*," nil gnus-header-newsgroups)
("" gnus-header-name gnus-header-content))
- "*Controls highlighting of article headers.
+ "Controls highlighting of article headers.
An alist of the form (HEADER NAME CONTENT).
@@ -883,10 +867,8 @@ be displayed by the first non-nil matching CONTENT face."
(item :tag "skip" nil)
(face :value default)))))
-(defcustom gnus-face-properties-alist (if (featurep 'xemacs)
- '((xface . (:face gnus-x-face)))
- '((pbm . (:face gnus-x-face))
- (png . nil)))
+(defcustom gnus-face-properties-alist '((pbm . (:face gnus-x-face))
+ (png . nil))
"Alist of image types and properties applied to Face and X-Face images.
Here are examples:
@@ -902,8 +884,7 @@ Here are examples:
See the manual for the valid properties for various image types.
Currently, `pbm' is used for X-Face images and `png' is used for Face
-images in Emacs. Only the `:face' property is effective on the `xface'
-image type in XEmacs if it is built with the libcompface library."
+images in Emacs."
:version "23.1" ;; No Gnus
:group 'gnus-article-headers
:type '(repeat (cons :format "%v" (symbol :tag "Image type") plist)))
@@ -911,7 +892,7 @@ image type in XEmacs if it is built with the libcompface library."
(defcustom gnus-article-decode-hook
'(article-decode-charset article-decode-encoded-words
article-decode-group-name article-decode-idna-rhs)
- "*Hook run to decode charsets in articles."
+ "Hook run to decode charsets in articles."
:group 'gnus-article-headers
:type 'hook)
@@ -1412,7 +1393,7 @@ predicate. See Info node `(gnus)Customizing Articles'."
:type gnus-article-treat-custom)
(put 'gnus-treat-overstrike 'highlight t)
-(defcustom gnus-treat-ansi-sequences (if (locate-library "ansi-color") t)
+(defcustom gnus-treat-ansi-sequences t
"Treat ANSI SGR control sequences.
Valid values are nil, t, `head', `first', `last', an integer or a
predicate. See Info node `(gnus)Customizing Articles'."
@@ -1426,14 +1407,12 @@ predicate. See Info node `(gnus)Customizing Articles'."
(defcustom gnus-treat-display-x-face
(and (not noninteractive)
(gnus-image-type-available-p 'xbm)
- (if (featurep 'xemacs)
- (featurep 'xface)
- (condition-case nil
- (and (string-match "^0x" (shell-command-to-string "uncompface"))
- (executable-find "icontopbm"))
- ;; shell-command-to-string may signal an error, e.g. if
- ;; shell-file-name is not found.
- (error nil)))
+ (condition-case nil
+ (and (string-match "^0x" (shell-command-to-string "uncompface"))
+ (executable-find "icontopbm"))
+ ;; shell-command-to-string may signal an error, e.g. if
+ ;; shell-file-name is not found.
+ (error nil))
'head)
"Display X-Face headers.
Valid values are nil and `head'.
@@ -1631,18 +1610,9 @@ It is a string, such as \"PGP\". If nil, ask user."
:type 'string
:group 'mime-security)
-(defvar idna-program)
-
-(defcustom gnus-use-idna (and (mm-coding-system-p 'utf-8)
- (condition-case nil
- (require 'idna)
- (file-error)
- (invalid-operation))
- idna-program
- (executable-find idna-program))
- "Whether IDNA decoding of headers is used when viewing messages.
-This requires GNU Libidn, and by default only enabled if it is found."
- :version "22.1"
+(defcustom gnus-use-idna t
+ "Whether IDNA decoding of headers is used when viewing messages."
+ :version "25.2"
:group 'gnus-article-headers
:type 'boolean)
@@ -2087,7 +2057,7 @@ always hide."
(- gnus-article-normalized-header-length column)
? )))
((> column gnus-article-normalized-header-length)
- (gnus-put-text-property
+ (put-text-property
(progn
(forward-char gnus-article-normalized-header-length)
(point))
@@ -2117,21 +2087,17 @@ try this wash."
"Translate many Unicode characters into their ASCII equivalents."
(interactive)
(require 'org-entities)
- (let ((table (make-char-table (if (featurep 'xemacs) 'generic))))
+ (let ((table (make-char-table nil)))
(dolist (elem org-entities)
(when (and (listp elem)
(= (length (nth 6 elem)) 1))
- (if (featurep 'xemacs)
- (put-char-table (aref (nth 6 elem) 0) (nth 4 elem) table)
- (set-char-table-range table (aref (nth 6 elem) 0) (nth 4 elem)))))
+ (set-char-table-range table (aref (nth 6 elem) 0) (nth 4 elem))))
(save-excursion
(when (article-goto-body)
(let ((inhibit-read-only t)
replace props)
(while (not (eobp))
- (if (not (setq replace (if (featurep 'xemacs)
- (get-char-table (following-char) table)
- (aref table (following-char)))))
+ (if (not (setq replace (aref table (following-char))))
(forward-char 1)
(if (prog1
(setq props (text-properties-at (point)))
@@ -2314,8 +2280,6 @@ long lines if and only if arg is positive."
(setq truncate-lines nil))
((numberp arg)
(setq truncate-lines t)))
- ;; In versions of Emacs 22 (CVS) before 2006-05-26,
- ;; `toggle-truncate-lines' needs an argument.
(toggle-truncate-lines)))
(defun gnus-article-treat-body-boundary ()
@@ -2327,15 +2291,13 @@ long lines if and only if arg is positive."
(goto-char (point-max))
(let ((start (point)))
(insert "X-Boundary: ")
- (gnus-add-text-properties start (point) gnus-hidden-properties)
+ (add-text-properties start (point) gnus-hidden-properties)
(insert (let (str (max (window-width)))
- (if (featurep 'xemacs)
- (setq max (1- max)))
(while (>= max (length str))
(setq str (concat str gnus-body-boundary-delimiter)))
(substring str 0 max))
"\n")
- (gnus-put-text-property start (point) 'gnus-decoration 'header)))))
+ (put-text-property start (point) 'gnus-decoration 'header)))))
(defun article-fill-long-lines ()
"Fill lines that are wider than the window width."
@@ -2492,7 +2454,7 @@ long lines if and only if arg is positive."
;; The command is a string, so we interpret the command
;; as a, well, command, and fork it off.
(let ((process-connection-type nil))
- (gnus-set-process-query-on-exit-flag
+ (set-process-query-on-exit-flag
(start-process
"article-x-face" nil shell-file-name
shell-command-switch gnus-article-x-face-command)
@@ -2541,7 +2503,7 @@ If PROMPT (the prefix), prompt for a coding system to use."
ctl (and ct (mail-header-parse-content-type ct))
charset (cond
(prompt
- (mm-read-coding-system "Charset to decode: "))
+ (read-coding-system "Charset to decode: "))
(ctl
(mail-content-type-get ctl 'charset)))
format (and ctl (mail-content-type-get ctl 'format)))
@@ -2620,8 +2582,6 @@ If PROMPT (the prefix), prompt for a coding system to use."
t t nil 1))
(goto-char (point-min)))))))
-(autoload 'idna-to-unicode "idna")
-
(defun article-decode-idna-rhs ()
"Decode IDNA strings in RHS in various headers in current buffer.
The following headers are decoded: From:, To:, Cc:, Reply-To:,
@@ -2639,7 +2599,7 @@ Mail-Reply-To: and Mail-Followup-To:."
(save-excursion
(and (re-search-backward "^[^ \t]" nil t)
(looking-at "From\\|To\\|Cc\\|Reply-To\\|Mail-Reply-To\\|Mail-Followup-To")))
- (setq unicode (idna-to-unicode ace))))
+ (setq unicode (puny-decode-domain ace))))
(unless (string= ace unicode)
(replace-match unicode nil nil nil 1)))))))))
@@ -2662,7 +2622,7 @@ If READ-CHARSET, ask for a coding system."
(if (stringp charset)
(setq charset (intern (downcase charset)))))))
(if read-charset
- (setq charset (mm-read-coding-system "Charset: " charset)))
+ (setq charset (read-coding-system "Charset: " charset)))
(unless charset
(setq charset gnus-newsgroup-charset))
(when (or force
@@ -2690,7 +2650,7 @@ If READ-CHARSET, ask for a coding system."
(if (stringp charset)
(setq charset (intern (downcase charset)))))))
(if read-charset
- (setq charset (mm-read-coding-system "Charset: " charset)))
+ (setq charset (read-coding-system "Charset: " charset)))
(unless charset
(setq charset gnus-newsgroup-charset))
(when (or force
@@ -2700,12 +2660,11 @@ If READ-CHARSET, ask for a coding system."
(save-restriction
(narrow-to-region (point) (point-max))
(base64-decode-region (point-min) (point-max))
- (mm-decode-coding-region
+ (decode-coding-region
(point-min) (point-max)
(mm-charset-to-coding-system charset nil t)))))))
-(eval-when-compile
- (require 'rfc1843))
+(declare-function rfc1843-decode-region "rfc1843" (from to))
(defun article-decode-HZ ()
"Translate a HZ-encoded article."
@@ -2724,7 +2683,7 @@ If READ-CHARSET, ask for a coding system."
(while (re-search-forward
"\\(\\(https?\\|ftp\\)://\\S-+\\) *\n\\(\\S-+\\)" nil t)
(replace-match "\\1\\3" t)))
- (when (gmm-called-interactively-p 'any)
+ (when (called-interactively-p 'any)
(gnus-treat-article nil))))
(defun article-wash-html ()
@@ -2777,7 +2736,7 @@ summary buffer."
(cond ((file-directory-p file)
(when (or (not (eq how 'file))
(gnus-y-or-n-p
- (gnus-format-message
+ (format-message
"Delete temporary HTML file(s) in directory `%s'? "
(file-name-as-directory file))))
(gnus-delete-directory file)))
@@ -2883,7 +2842,7 @@ message header will be added to the bodies of the \"text/html\" parts."
<img[\t\n ]+\\(?:[^\t\n >]+[\t\n ]+\\)*src=\"\\(cid:\\([^\"]+\\)\\)\""
nil t)
(unless cid-dir
- (setq cid-dir (mm-make-temp-file "cid" t))
+ (setq cid-dir (make-temp-file "cid" t))
(add-to-list 'gnus-article-browse-html-temp-list cid-dir))
(setq file nil
content nil)
@@ -2896,7 +2855,7 @@ message header will be added to the bodies of the \"text/html\" parts."
(replace-match cid-file nil nil nil 1))))
(unless content (setq content (buffer-string))))
(when (or charset header (not file))
- (setq tmp-file (mm-make-temp-file
+ (setq tmp-file (make-temp-file
;; Do we need to care for 8.3 filenames?
"mm-" nil ".html")))
;; Add a meta html tag to specify charset and a header.
@@ -2930,11 +2889,11 @@ message header will be added to the bodies of the \"text/html\" parts."
;; charset specified in parts might be different.
(if (eq charset 'gnus-decoded)
(setq charset 'utf-8
- eheader (mm-encode-coding-string (buffer-string)
- charset)
+ eheader (encode-coding-string (buffer-string)
+ charset)
title (when title
- (mm-encode-coding-string title charset))
- body (mm-encode-coding-string content charset))
+ (encode-coding-string title charset))
+ body (encode-coding-string content charset))
(setq hcharset (mm-find-mime-charset-region (point-min)
(point-max)))
(cond ((= (length hcharset) 1)
@@ -2951,30 +2910,30 @@ message header will be added to the bodies of the \"text/html\" parts."
(mm-charset-to-coding-system charset
nil t))
(if (eq coding body)
- (setq eheader (mm-encode-coding-string
+ (setq eheader (encode-coding-string
(buffer-string) coding)
title (when title
- (mm-encode-coding-string
+ (encode-coding-string
title coding))
body content)
(setq charset 'utf-8
- eheader (mm-encode-coding-string
+ eheader (encode-coding-string
(buffer-string) charset)
title (when title
- (mm-encode-coding-string
+ (encode-coding-string
title charset))
- body (mm-encode-coding-string
- (mm-decode-coding-string
+ body (encode-coding-string
+ (decode-coding-string
content body)
charset))))
(setq charset hcharset
- eheader (mm-encode-coding-string
+ eheader (encode-coding-string
(buffer-string) coding)
title (when title
- (mm-encode-coding-string
+ (encode-coding-string
title coding))
body content))
- (setq eheader (mm-string-as-unibyte (buffer-string))
+ (setq eheader (string-as-unibyte (buffer-string))
body content)))
(erase-buffer)
(mm-disable-multibyte)
@@ -2997,8 +2956,8 @@ message header will be added to the bodies of the \"text/html\" parts."
(charset
(mm-with-unibyte-buffer
(insert (if (eq charset 'gnus-decoded)
- (mm-encode-coding-string content
- (setq charset 'utf-8))
+ (encode-coding-string content
+ (setq charset 'utf-8))
content))
(if (or (mm-add-meta-html-tag handle charset)
(not file))
@@ -3637,7 +3596,7 @@ possible values."
;; If the date is seriously mangled, the timezone functions are
;; liable to bug out, so we ignore all errors.
(let* ((now (current-time))
- (real-time (subtract-time now time))
+ (real-time (time-subtract now time))
(real-sec (and real-time
(+ (* (float (car real-time)) 65536)
(cadr real-time))))
@@ -4161,8 +4120,7 @@ and the raw article including all headers will be piped."
(setq command
(if (and (eq command 'default) default)
default
- (gnus-read-shell-command "Shell command on this article: "
- default))))
+ (read-shell-command "Shell command on this article: " default))))
(when (string-equal command "")
(if default
(setq command default)
@@ -4326,8 +4284,6 @@ If variable `gnus-use-long-file-name' is non-nil, it is
(put-text-property (match-end 0) (point-max)
'face eface)))))))))
-(autoload 'canlock-verify "canlock" nil t) ;; for XEmacs.
-
(defun article-verify-cancel-lock ()
"Verify Cancel-Lock header."
(interactive)
@@ -4440,13 +4396,9 @@ If variable `gnus-use-long-file-name' is non-nil, it is
'undefined 'gnus-article-read-summary-keys gnus-article-mode-map)
(defvar gnus-article-send-map)
-
(gnus-define-keys (gnus-article-send-map "S" gnus-article-mode-map)
- "W" gnus-article-wide-reply-with-original)
-(if (featurep 'xemacs)
- (set-keymap-default-binding gnus-article-send-map
- 'gnus-article-read-summary-send-keys)
- (define-key gnus-article-send-map [t] 'gnus-article-read-summary-send-keys))
+ "W" gnus-article-wide-reply-with-original
+ [t] gnus-article-read-summary-send-keys)
(defun gnus-article-make-menu-bar ()
(unless (boundp 'gnus-article-commands-menu)
@@ -4522,8 +4474,8 @@ commands:
(make-local-variable 'gnus-article-ignored-charsets)
(set (make-local-variable 'bookmark-make-record-function)
'gnus-summary-bookmark-make-record)
- ;; Prevent Emacs 22 from displaying non-break space with `nobreak-space'
- ;; face.
+ ;; Prevent Emacs from displaying non-break space with
+ ;; `nobreak-space' face.
(set (make-local-variable 'nobreak-char-display) nil)
;; Enable `gnus-article-remove-images' to delete images shr.el renders.
(set (make-local-variable 'shr-put-image-function) 'gnus-shr-put-image)
@@ -4602,7 +4554,7 @@ commands:
(defun gnus-article-stop-animations ()
(dolist (timer (and (boundp 'timer-list)
timer-list))
- (when (eq (gnus-timer--function timer) 'image-animate-timeout)
+ (when (eq (timer--function timer) 'image-animate-timeout)
(cancel-timer timer))))
(defun gnus-stop-downloads ()
@@ -4645,8 +4597,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(gnus-article-setup-buffer)
(set-buffer gnus-article-buffer)
;; Deactivate active regions.
- (when (and (boundp 'transient-mark-mode)
- transient-mark-mode)
+ (when transient-mark-mode
(setq mark-active nil))
(if (not (setq result (let ((inhibit-read-only t))
(gnus-request-article-this-buffer
@@ -4906,8 +4857,8 @@ General format specifiers can also be used. See Info node
(defvar gnus-mime-button-map
(let ((map (make-sparse-keymap)))
- (define-key map gnus-mouse-2 'gnus-article-push-button)
- (define-key map gnus-down-mouse-3 'gnus-mime-button-menu)
+ (define-key map [mouse-2] 'gnus-article-push-button)
+ (define-key map [down-mouse-3] 'gnus-mime-button-menu)
(dolist (c gnus-mime-button-commands)
(define-key map (cadr c) (car c)))
map))
@@ -5050,7 +5001,6 @@ and `gnus-mime-delete-part', and not provided at run-time normally."
(let ((mbl1 mml-buffer-list))
(setq mml-buffer-list mbl)
(set (make-local-variable 'mml-buffer-list) mbl1))
- (gnus-make-local-hook 'kill-buffer-hook)
(add-hook 'kill-buffer-hook 'mml-destroy-buffers t t)))
`(lambda (no-highlight)
(let ((mail-parse-charset (or gnus-article-charset
@@ -5294,7 +5244,7 @@ are decompressed."
((numberp arg)
(setq charset (or (cdr (assq arg
gnus-summary-show-article-charset-alist))
- (mm-read-coding-system "Charset: ")))))
+ (read-coding-system "Charset: ")))))
(switch-to-buffer (generate-new-buffer filename))
(if (or coding-system
(and charset
@@ -5303,11 +5253,8 @@ are decompressed."
(not (eq coding-system 'ascii))))
(progn
(mm-enable-multibyte)
- (insert (mm-decode-coding-string contents coding-system))
- (setq buffer-file-coding-system
- (if (boundp 'last-coding-system-used)
- (symbol-value 'last-coding-system-used)
- coding-system)))
+ (insert (decode-coding-string contents coding-system))
+ (setq buffer-file-coding-system last-coding-system-used))
(mm-disable-multibyte)
(insert contents)
(setq buffer-file-coding-system mm-binary-coding-system))
@@ -5325,7 +5272,7 @@ are decompressed."
(gnus-article-check-buffer)
(let* ((handle (or handle (get-text-property (point) 'gnus-data)))
(contents (and handle (mm-get-part handle)))
- (file (mm-make-temp-file (expand-file-name "mm." mm-tmp-directory)))
+ (file (make-temp-file (expand-file-name "mm." mm-tmp-directory)))
(printer (mailcap-mime-info (mm-handle-media-type handle) "print")))
(when contents
(if printer
@@ -5394,18 +5341,9 @@ Compressed files like .gz and .bz2 are decompressed."
(let ((displayed-p (mm-handle-displayed-p handle)))
(gnus-insert-mime-button handle (get-text-property btn 'gnus-part)
(list displayed-p))
- (if (featurep 'emacs)
- (delete-region
- (point)
- (next-single-property-change (point) 'gnus-data nil (point-max)))
- (let* ((end (next-single-property-change (point) 'gnus-data))
- (annots (annotations-at (or end (point-max)))))
- (delete-region (point)
- (if end
- (if annots (1+ end) end)
- (point-max)))
- (dolist (annot annots)
- (set-extent-endpoints annot (point) (point)))))
+ (delete-region
+ (point)
+ (next-single-property-change (point) 'gnus-data nil (point-max)))
(setq start (point))
(if (search-backward "\n\n" nil t)
(progn
@@ -5466,7 +5404,7 @@ specified charset."
(or (cdr (assq
arg
gnus-summary-show-article-charset-alist))
- (mm-read-coding-system "Charset: "))))
+ (read-coding-system "Charset: "))))
(if (mm-handle-undisplayer handle)
(mm-remove-part handle)))
(gnus-mime-set-charset-parameters handle charset)
@@ -5581,7 +5519,7 @@ If INTERACTIVE, call FUNCTION interactively."
window
(setq window (selected-window))
;; Article may be displayed in the other frame.
- (gnus-select-frame-set-input-focus
+ (select-frame-set-input-focus
(prog1
frame
(setq frame (selected-frame))))))
@@ -5609,7 +5547,7 @@ If INTERACTIVE, call FUNCTION interactively."
(get-text-property (point) 'gnus-data))))
(set-marker overlay-arrow-position nil)
(unless gnus-auto-select-part
- (gnus-select-frame-set-input-focus frame)
+ (select-frame-set-input-focus frame)
(select-window window))))
t))
(if gnus-inhibit-mime-unbuttonizing
@@ -5788,18 +5726,9 @@ all parts."
;; Toggle the button appearance between `[button]...' and `[button]'.
(let ((displayed-p (mm-handle-displayed-p handle)))
(gnus-insert-mime-button handle id (list displayed-p))
- (if (featurep 'emacs)
- (delete-region
- (point)
- (next-single-property-change (point) 'gnus-data nil (point-max)))
- (let* ((end (next-single-property-change (point) 'gnus-data))
- (annots (annotations-at (or end (point-max)))))
- (delete-region (point)
- (if end
- (if annots (1+ end) end)
- (point-max)))
- (dolist (annot annots)
- (set-extent-endpoints annot (point) (point)))))
+ (delete-region
+ (point)
+ (next-single-property-change (point) 'gnus-data nil (point-max)))
(setq start (point))
(if (search-backward "\n\n" nil t)
(progn
@@ -5910,16 +5839,12 @@ all parts."
:button-keymap gnus-mime-button-map
:help-echo
(lambda (widget)
- ;; Needed to properly clear the message due to a bug in
- ;; wid-edit (XEmacs only).
- (if (boundp 'help-echo-owns-message)
- (setq help-echo-owns-message t))
(format
"%S: %s the MIME part; %S: more options"
- (aref gnus-mouse-2 0)
+ 'mouse-2
(if (mm-handle-displayed-p (widget-get widget :mime-handle))
"hide" "show")
- (aref gnus-down-mouse-3 0))))))
+ 'down-mouse-3)))))
(defun gnus-widget-press-button (elems _el)
(goto-char (widget-get elems :from))
@@ -6164,8 +6089,7 @@ If nil, don't show those extra buttons."
(defun gnus-article-insert-newline ()
"Insert a newline, but mark it as undeletable."
- (gnus-put-text-property
- (point) (progn (insert "\n") (point)) 'gnus-undeletable t))
+ (put-text-property (point) (progn (insert "\n") (point)) 'gnus-undeletable t))
(defun gnus-mime-display-alternative (handles &optional preferred ibegend id)
(let* ((preferred (or preferred (mm-preferred-alternative handles)))
@@ -6191,7 +6115,7 @@ If nil, don't show those extra buttons."
(not preferred)
(not (gnus-unbuttonized-mime-type-p
"multipart/alternative")))
- (gnus-add-text-properties
+ (add-text-properties
(setq from (point))
(progn
(insert (format "%d. " id))
@@ -6204,17 +6128,16 @@ If nil, don't show those extra buttons."
(gnus-mime-display-alternative
',ihandles ',not-pref ',begend ,id))
keymap ,gnus-mime-button-map
- ,gnus-mouse-face-prop ,gnus-article-mouse-face
+ mouse-face ,gnus-article-mouse-face
face ,gnus-article-button-face
gnus-part ,id
article-type multipart
rear-nonsticky t))
(widget-convert-button 'link from (point)
- :action 'gnus-widget-press-button
- :button-keymap gnus-widget-button-keymap)
+ :action 'gnus-widget-press-button)
;; Do the handles
(while (setq handle (pop handles))
- (gnus-add-text-properties
+ (add-text-properties
(setq from (point))
(progn
(insert (format "(%c) %-18s"
@@ -6229,14 +6152,13 @@ If nil, don't show those extra buttons."
(gnus-mime-display-alternative
',ihandles ',handle ',begend ,id))
keymap ,gnus-mime-button-map
- ,gnus-mouse-face-prop ,gnus-article-mouse-face
+ mouse-face ,gnus-article-mouse-face
face ,gnus-article-button-face
gnus-part ,id
gnus-data ,handle
rear-nonsticky t))
(widget-convert-button 'link from (point)
- :action 'gnus-widget-press-button
- :button-keymap gnus-widget-button-keymap)
+ :action 'gnus-widget-press-button)
(insert " "))
(insert "\n\n"))
(when preferred
@@ -6350,7 +6272,7 @@ Provided for backwards compatibility."
(not (with-current-buffer gnus-summary-buffer
gnus-have-all-headers)))
(not gnus-inhibit-hiding))
- (gnus-article-hide-headers)))
+ (article-hide-headers)))
(declare-function shr-put-image "shr" (data alt &optional flags))
@@ -6506,14 +6428,13 @@ the coding cookie."
(when coding
;; If the coding system is not suitable to encode the text,
;; ask a user for a proper one.
- (when (fboundp 'select-safe-coding-system)
- (setq coding (coding-system-base
- (save-window-excursion
- (select-safe-coding-system (point-min) (point-max)
- coding))))
- (setq coding-system-for-write
- (or (cdr (assq coding '((mule-utf-8 . utf-8))))
- coding)))
+ (setq coding (coding-system-base
+ (save-window-excursion
+ (select-safe-coding-system (point-min) (point-max)
+ coding))))
+ (setq coding-system-for-write
+ (or (cdr (assq coding '((mule-utf-8 . utf-8))))
+ coding))
(goto-char (point-min))
;; Add the coding cookie.
(insert (format "X-Gnus-Coding-System: -*- coding: %s; -*-\n\n"
@@ -6584,14 +6505,14 @@ If given a numerical ARG, move forward ARG pages."
(interactive)
(when (gnus-article-next-page)
(goto-char (point-min))
- (gnus-article-read-summary-keys nil (gnus-character-to-event ?n))))
+ (gnus-article-read-summary-keys nil ?n)))
(defun gnus-article-goto-prev-page ()
"Show the previous page of the article."
(interactive)
(if (save-restriction (widen) (bobp)) ;; Real beginning-of-buffer?
- (gnus-article-read-summary-keys nil (gnus-character-to-event ?p))
+ (gnus-article-read-summary-keys nil ?p)
(gnus-article-prev-page nil)))
;; This is cleaner but currently breaks `gnus-pick-mode':
@@ -6613,12 +6534,10 @@ If given a numerical ARG, move forward ARG pages."
If end of article, return non-nil. Otherwise return nil.
Argument LINES specifies lines to be scrolled up."
(interactive "p")
- (move-to-window-line (if (featurep 'xemacs) -1 (- -1 scroll-margin)))
+ (move-to-window-line (- -1 scroll-margin))
(if (and (not (and gnus-article-over-scroll
(> (count-lines (window-start) (point-max))
- (if (featurep 'xemacs)
- (or lines (1- (window-height)))
- (+ (or lines (1- (window-height))) scroll-margin)))))
+ (+ (or lines (1- (window-height))) scroll-margin))))
(save-excursion
(end-of-line)
(and (pos-visible-in-window-p) ;Not continuation line.
@@ -6642,20 +6561,18 @@ Argument LINES specifies lines to be scrolled up."
(defun gnus-article-beginning-of-window ()
"Move point to the beginning of the window.
-In Emacs, the point is placed at the line number which `scroll-margin'
+The point is placed at the line number which `scroll-margin'
specifies."
- (if (featurep 'xemacs)
- (move-to-window-line 0)
- ;; There is an obscure bug in Emacs that makes it impossible to
- ;; scroll past big pictures in the article buffer. Try to fix
- ;; this by adding a sanity check by counting the lines visible.
- (when (> (count-lines (window-start) (window-end)) 30)
- (move-to-window-line
- (min (max 0 scroll-margin)
- (max 1 (- (window-height)
- (if mode-line-format 1 0)
- (if header-line-format 1 0)
- 2)))))))
+ ;; There is an obscure bug in Emacs that makes it impossible to
+ ;; scroll past big pictures in the article buffer. Try to fix
+ ;; this by adding a sanity check by counting the lines visible.
+ (when (> (count-lines (window-start) (window-end)) 30)
+ (move-to-window-line
+ (min (max 0 scroll-margin)
+ (max 1 (- (window-height)
+ (if mode-line-format 1 0)
+ (if header-line-format 1 0)
+ 2))))))
(defvar scroll-in-place)
@@ -6682,10 +6599,7 @@ Argument LINES specifies lines to be scrolled down."
(goto-char (point-max))
(recenter (if gnus-article-over-scroll
(if lines
- (max (if (featurep 'xemacs)
- lines
- (+ lines scroll-margin))
- 3)
+ (max (+ lines scroll-margin) 3)
(- (window-height) 2))
-1)))
(prog1
@@ -6766,9 +6680,7 @@ not have a face in `gnus-article-boring-faces'."
(let (gnus-pick-mode)
(setq unread-command-events (nconc unread-command-events
(list (or key last-command-event)))
- keys (if (featurep 'xemacs)
- (events-to-keys (read-key-sequence nil t))
- (read-key-sequence nil t)))))
+ keys (read-key-sequence nil t))))
(message "")
@@ -6816,7 +6728,7 @@ not have a face in `gnus-article-boring-faces'."
(article 1.0)))))))
(gnus-configure-windows 'article))
(setq win (get-buffer-window summary-buffer 'visible)))
- (gnus-select-frame-set-input-focus (window-frame win))
+ (select-frame-set-input-focus (window-frame win))
(select-window win))))
(setq in-buffer (current-buffer))
;; We disable the pick minor mode commands.
@@ -6869,27 +6781,25 @@ not have a face in `gnus-article-boring-faces'."
(defun gnus-article-read-summary-send-keys ()
(interactive)
- (let ((unread-command-events (list (gnus-character-to-event ?S))))
+ (let ((unread-command-events (list ?S)))
(gnus-article-read-summary-keys)))
(defun gnus-article-describe-key (key)
"Display documentation of the function invoked by KEY.
KEY is a string or a vector."
- (interactive (list (let ((cursor-in-echo-area t)) ;; better for XEmacs.
+ (interactive (list (let ((cursor-in-echo-area t))
(read-key-sequence "Describe key: "))))
(gnus-article-check-buffer)
(if (memq (key-binding key t) '(gnus-article-read-summary-keys
gnus-article-read-summary-send-keys))
(with-current-buffer gnus-article-current-summary
(setq unread-command-events
- (if (featurep 'xemacs)
- (append key unread-command-events)
- (nconc
- (mapcar (lambda (x) (if (and (integerp x) (>= x 128))
- (list 'meta (- x 128))
- x))
- key)
- unread-command-events)))
+ (nconc
+ (mapcar (lambda (x) (if (and (integerp x) (>= x 128))
+ (list 'meta (- x 128))
+ x))
+ key)
+ unread-command-events))
(let ((cursor-in-echo-area t)
gnus-pick-mode)
(describe-key (read-key-sequence nil t))))
@@ -6898,7 +6808,7 @@ KEY is a string or a vector."
(defun gnus-article-describe-key-briefly (key &optional insert)
"Display documentation of the function invoked by KEY.
KEY is a string or a vector."
- (interactive (list (let ((cursor-in-echo-area t)) ;; better for XEmacs.
+ (interactive (list (let ((cursor-in-echo-area t))
(read-key-sequence "Describe key: "))
current-prefix-arg))
(gnus-article-check-buffer)
@@ -6906,14 +6816,12 @@ KEY is a string or a vector."
gnus-article-read-summary-send-keys))
(with-current-buffer gnus-article-current-summary
(setq unread-command-events
- (if (featurep 'xemacs)
- (append key unread-command-events)
- (nconc
- (mapcar (lambda (x) (if (and (integerp x) (>= x 128))
- (list 'meta (- x 128))
- x))
- key)
- unread-command-events)))
+ (nconc
+ (mapcar (lambda (x) (if (and (integerp x) (>= x 128))
+ (list 'meta (- x 128))
+ x))
+ key)
+ unread-command-events))
(let ((cursor-in-echo-area t)
gnus-pick-mode)
(describe-key-briefly (read-key-sequence nil t) insert)))
@@ -6987,13 +6895,12 @@ the entire article will be yanked."
(interactive)
(let ((article (cdr gnus-article-current))
contents)
- (if (not (gnus-region-active-p))
+ (if (not (and transient-mark-mode mark-active))
(with-current-buffer gnus-summary-buffer
(gnus-summary-reply (list (list article)) wide))
(setq contents (buffer-substring (point) (mark t)))
;; Deactivate active regions.
- (when (and (boundp 'transient-mark-mode)
- transient-mark-mode)
+ (when transient-mark-mode
(setq mark-active nil))
(with-current-buffer gnus-summary-buffer
(gnus-summary-reply
@@ -7013,13 +6920,12 @@ the entire article will be yanked."
(interactive)
(let ((article (cdr gnus-article-current))
contents)
- (if (not (gnus-region-active-p))
+ (if (not (and transient-mark-mode mark-active))
(with-current-buffer gnus-summary-buffer
(gnus-summary-followup (list (list article))))
(setq contents (buffer-substring (point) (mark t)))
;; Deactivate active regions.
- (when (and (boundp 'transient-mark-mode)
- transient-mark-mode)
+ (when transient-mark-mode
(setq mark-active nil))
(with-current-buffer gnus-summary-buffer
(gnus-summary-followup
@@ -7031,10 +6937,11 @@ This means that signatures, cited text and (some) headers will be
hidden.
If given a prefix, show the hidden text instead."
(interactive (append (gnus-article-hidden-arg) (list 'force)))
- (gnus-article-hide-headers arg)
- (gnus-article-hide-list-identifiers arg)
- (gnus-article-hide-citation-maybe arg force)
- (gnus-article-hide-signature arg))
+ (gnus-with-article-buffer
+ (article-hide-headers arg)
+ (article-hide-list-identifiers)
+ (gnus-article-hide-citation-maybe arg force)
+ (article-hide-signature arg)))
(defun gnus-check-group-server ()
;; Make sure the connection to the server is alive.
@@ -7120,7 +7027,7 @@ If given a prefix, show the hidden text instead."
;; equivalent of string-make-multibyte which amount to decoding
;; with locale-coding-system, causing failure of
;; subsequent decoding.
- (insert (mm-string-to-multibyte
+ (insert (string-to-multibyte
(with-current-buffer gnus-original-article-buffer
(buffer-substring (point-min) (point-max)))))
'article)
@@ -7338,7 +7245,8 @@ groups."
(when (and (not force)
(gnus-group-read-only-p))
(error "The current newsgroup does not support article editing"))
- (gnus-article-date-original)
+ (gnus-with-article-buffer
+ (article-date-original))
(gnus-article-edit-article
'ignore
`(lambda (no-highlight)
@@ -7441,31 +7349,26 @@ groups."
"\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|"
"nntp\\|news\\|telnet\\|wais\\|mailto\\|info\\):\\)"
"\\(//[-a-z0-9_.]+:[0-9]*\\)?"
- (if (string-match "[[:digit:]]" "1") ;; Support POSIX?
- (let ((chars "-a-z0-9_=#$@~%&*+\\/[:word:]")
- (punct "!?:;.,"))
- (concat
- "\\(?:"
- ;; Match paired parentheses, e.g. in Wikipedia URLs:
- ;; http://thread.gmane.org/47B4E3B2.3050402@gmail.com
- "[" chars punct "]+" "(" "[" chars punct "]+" "[" chars "]*)"
- "\\(?:" "[" chars punct "]+" "[" chars "]" "\\)?"
- "\\|"
- "[" chars punct "]+" "[" chars "]"
- "\\)"))
- (concat ;; XEmacs 21.4 doesn't support POSIX.
- "\\([-a-z0-9_=!?#$@~%&*+\\/:;.,]\\|\\w\\)+"
- "\\([-a-z0-9_=#$@~%&*+\\/]\\|\\w\\)"))
+ (let ((chars "-a-z0-9_=#$@~%&*+\\/[:word:]")
+ (punct "!?:;.,"))
+ (concat
+ "\\(?:"
+ ;; Match paired parentheses, e.g. in Wikipedia URLs:
+ ;; http://thread.gmane.org/47B4E3B2.3050402@gmail.com
+ "[" chars punct "]+" "(" "[" chars punct "]+" "[" chars "]*)"
+ "\\(?:" "[" chars punct "]+" "[" chars "]" "\\)?"
+ "\\|"
+ "[" chars punct "]+" "[" chars "]"
+ "\\)"))
"\\)")
"Regular expression that matches URLs."
:version "24.4"
:group 'gnus-article-buttons
:type 'regexp)
-(defcustom gnus-button-valid-fqdn-regexp
- message-valid-fqdn-regexp
+(defcustom gnus-button-valid-fqdn-regexp "\\([-A-Za-z0-9]+\\.\\)+[A-Za-z]+"
"Regular expression that matches a valid FQDN."
- :version "22.1"
+ :version "25.2"
:group 'gnus-article-buttons
:type 'regexp)
@@ -7582,7 +7485,7 @@ address, `ask' if unsure and `invalid' if the string is invalid."
(list gnus-button-mid-or-mail-heuristic-alist)
(result 0) rate regexp lpartlen elem)
(setq lpartlen
- (length (gnus-replace-in-string mid-or-mail "^\\(.*\\)@.*$" "\\1")))
+ (length (replace-regexp-in-string "^\\(.*\\)@.*$" "\\1" mid-or-mail)))
(gnus-message 8 "`%s', length of local part=`%s'." mid-or-mail lpartlen)
;; Certain special cases...
(when (string-match
@@ -7653,7 +7556,7 @@ address, `ask' if unsure and `invalid' if the string is invalid."
(setq guessed
;; get rid of surrounding angles...
(funcall pref
- (gnus-replace-in-string mid-or-mail "^<\\|>$" "")))
+ (replace-regexp-in-string "^<\\|>$" "" mid-or-mail)))
(if (or (eq 'mid guessed) (eq 'mail guessed))
(setq pref guessed)
(setq pref 'ask)))
@@ -7685,13 +7588,13 @@ as a symbol to FUN."
"Call `describe-function' when pushing the corresponding URL button."
(describe-function
(intern
- (gnus-replace-in-string url gnus-button-handle-describe-prefix ""))))
+ (replace-regexp-in-string gnus-button-handle-describe-prefix "" url))))
(defun gnus-button-handle-describe-variable (url)
"Call `describe-variable' when pushing the corresponding URL button."
(describe-variable
(intern
- (gnus-replace-in-string url gnus-button-handle-describe-prefix ""))))
+ (replace-regexp-in-string gnus-button-handle-describe-prefix "" url))))
(defun gnus-button-handle-symbol (url)
"Display help on variable or function.
@@ -7705,7 +7608,7 @@ Calls `describe-variable' or `describe-function'."
(defun gnus-button-handle-describe-key (url)
"Call `describe-key' when pushing the corresponding URL button."
(let* ((key-string
- (gnus-replace-in-string url gnus-button-handle-describe-prefix ""))
+ (replace-regexp-in-string gnus-button-handle-describe-prefix "" url))
(keys (ignore-errors (eval `(kbd ,key-string)))))
(if keys
(describe-key keys)
@@ -7713,36 +7616,34 @@ Calls `describe-variable' or `describe-function'."
(defun gnus-button-handle-apropos (url)
"Call `apropos' when pushing the corresponding URL button."
- (apropos (gnus-replace-in-string url gnus-button-handle-describe-prefix "")))
+ (apropos (replace-regexp-in-string gnus-button-handle-describe-prefix "" url)))
(defun gnus-button-handle-apropos-command (url)
"Call `apropos' when pushing the corresponding URL button."
(apropos-command
- (gnus-replace-in-string url gnus-button-handle-describe-prefix "")))
+ (replace-regexp-in-string gnus-button-handle-describe-prefix "" url)))
(defun gnus-button-handle-apropos-variable (url)
"Call `apropos' when pushing the corresponding URL button."
- (funcall
- (if (fboundp 'apropos-variable) 'apropos-variable 'apropos)
- (gnus-replace-in-string url gnus-button-handle-describe-prefix "")))
+ (apropos-variable
+ (replace-regexp-in-string gnus-button-handle-describe-prefix "" url)))
(defun gnus-button-handle-apropos-documentation (url)
"Call `apropos' when pushing the corresponding URL button."
- (funcall
- (if (fboundp 'apropos-documentation) 'apropos-documentation 'apropos)
- (gnus-replace-in-string url gnus-button-handle-describe-prefix "")))
+ (apropos-documentation
+ (replace-regexp-in-string gnus-button-handle-describe-prefix "" url)))
(defun gnus-button-handle-library (url)
"Call `locate-library' when pushing the corresponding URL button."
(gnus-message 9 "url=`%s'" url)
(let* ((lib (locate-library url))
- (file (gnus-replace-in-string (or lib "") "\\.elc" ".el")))
+ (file (replace-regexp-in-string "\\.elc" ".el" (or lib ""))))
(if (not lib)
(gnus-message 1 "Cannot locale library `%s'." url)
(find-file-read-only file))))
(defcustom gnus-button-man-level 5
- "*Integer that says how many man-related buttons Gnus will show.
+ "Integer that says how many man-related buttons Gnus will show.
The higher the number, the more buttons will appear and the more false
positives are possible. Note that you can set this variable local to
specific groups. Setting it higher in Unix groups is probably a good idea.
@@ -7754,7 +7655,7 @@ how to set variables in specific groups."
:type 'integer)
(defcustom gnus-button-emacs-level 5
- "*Integer that says how many emacs-related buttons Gnus will show.
+ "Integer that says how many emacs-related buttons Gnus will show.
The higher the number, the more buttons will appear and the more false
positives are possible. Note that you can set this variable local to
specific groups. Setting it higher in Emacs or Gnus related groups is
@@ -7766,7 +7667,7 @@ probably a good idea. See Info node `(gnus)Group Parameters' and the variable
:type 'integer)
(defcustom gnus-button-message-level 5
- "*Integer that says how many buttons for news or mail messages will appear.
+ "Integer that says how many buttons for news or mail messages will appear.
The higher the number, the more buttons will appear and the more false
positives are possible."
;; mail addresses, MIDs, URLs for news, ...
@@ -7775,7 +7676,7 @@ positives are possible."
:type 'integer)
(defcustom gnus-button-browse-level 5
- "*Integer that says how many buttons for browsing will appear.
+ "Integer that says how many buttons for browsing will appear.
The higher the number, the more buttons will appear and the more false
positives are possible."
;; stuff handled by `browse-url' or `gnus-button-embedded-url'
@@ -7896,7 +7797,7 @@ positives are possible."
;; so that non-ambiguous entries (see above) match first.
(gnus-button-mid-or-mail-regexp
0 (>= gnus-button-message-level 5) gnus-button-handle-mid-or-mail 1))
- "*Alist of regexps matching buttons in article bodies.
+ "Alist of regexps matching buttons in article bodies.
Each entry has the form (REGEXP BUTTON FORM CALLBACK PAR...), where
REGEXP: is the string (case insensitive) matching text around the button (can
@@ -7938,7 +7839,7 @@ variable it the real callback function."
0 (>= gnus-button-message-level 0) gnus-url-mailto 1)
("^[^:]+:" "\\(<\\(url: \\)?\\(nntp\\|news\\):\\([^>\n ]*\\)>\\)"
1 (>= gnus-button-message-level 0) gnus-button-message-id 4))
- "*Alist of headers and regexps to match buttons in article heads.
+ "Alist of headers and regexps to match buttons in article heads.
This alist is very similar to `gnus-button-alist', except that each
alist has an additional HEADER element first in each entry:
@@ -8030,14 +7931,14 @@ do the highlighting. See the documentation for those functions."
(when (and header-face
(not (memq (point) hpoints)))
(push (point) hpoints)
- (gnus-put-text-property from (point) 'face header-face))
+ (put-text-property from (point) 'face header-face))
(when (and field-face
(not (memq (setq from (point)) fpoints)))
(push from fpoints)
(if (re-search-forward "^[^ \t]" nil t)
(forward-char -2)
(goto-char (point-max)))
- (gnus-put-text-property from (point) 'face field-face)))))))
+ (put-text-property from (point) 'face field-face)))))))
(defun gnus-article-highlight-signature ()
"Highlight the signature in an article.
@@ -8092,7 +7993,7 @@ specified by `gnus-button-alist'."
(gnus-article-extend-url-button from start end))
(gnus-article-add-button start end
'gnus-button-push (list from entry))
- (gnus-put-text-property
+ (put-text-property
start end
'gnus-string (buffer-substring-no-properties
start end))))))))))
@@ -8194,16 +8095,15 @@ url is put as the `gnus-button-url' overlay property on the button."
(when gnus-article-button-face
(overlay-put (make-overlay from to nil t)
'face gnus-article-button-face))
- (gnus-add-text-properties
+ (add-text-properties
from to
(nconc (and gnus-article-mouse-face
- (list gnus-mouse-face-prop gnus-article-mouse-face))
+ (list 'mouse-face gnus-article-mouse-face))
(list 'gnus-callback fun)
(and data (list 'gnus-data data))))
(widget-convert-button 'link from to :action 'gnus-widget-press-button
:help-echo (or text "Follow the link")
- :keymap gnus-url-button-map
- :button-keymap gnus-widget-button-keymap))
+ :keymap gnus-url-button-map))
(defun gnus-article-copy-string ()
"Copy the string in the button to the kill ring."
@@ -8335,13 +8235,13 @@ url is put as the `gnus-button-url' overlay property on the button."
"Fetch a man page."
(gnus-message 9 "`%s' `%s'" gnus-button-man-handler url)
(when (eq gnus-button-man-handler 'woman)
- (setq url (gnus-replace-in-string url "([1-9][X1a-z]*).*\\'" "")))
+ (setq url (replace-regexp-in-string "([1-9][X1a-z]*).*\\'" "" url)))
(gnus-message 9 "`%s' `%s'" gnus-button-man-handler url)
(funcall gnus-button-man-handler url))
(defun gnus-button-handle-info-url (url)
"Fetch an info URL."
- (setq url (mm-subst-char-in-string ?+ ?\ url))
+ (setq url (subst-char-in-string ?+ ?\ url))
(cond
((string-match "^\\([^:/]+\\)?/\\(.*\\)" url)
(gnus-info-find-node
@@ -8350,14 +8250,14 @@ url is put as the `gnus-button-url' overlay property on the button."
")" (gnus-url-unhex-string (match-string 2 url)))))
((string-match "([^)\"]+)[^\"]+" url)
(setq url
- (gnus-replace-in-string
- (gnus-replace-in-string url "[\n\t ]+" " ") "\"" ""))
+ (replace-regexp-in-string
+ "\"" "" (replace-regexp-in-string "[\n\t ]+" " " url)))
(gnus-info-find-node url))
(t (error "Can't parse %s" url))))
(defun gnus-button-handle-info-url-gnome (url)
"Fetch GNOME style info URL."
- (setq url (mm-subst-char-in-string ?_ ?\ url))
+ (setq url (subst-char-in-string ?_ ?\ url))
(if (string-match "\\([^#]+\\)#?\\(.*\\)" url)
(gnus-info-find-node
(concat "("
@@ -8489,9 +8389,9 @@ url is put as the `gnus-button-url' overlay property on the button."
(if (fboundp func)
(funcall func)
(message-position-on-field (caar args)))
- (insert (gnus-replace-in-string
- (mapconcat 'identity (reverse (cdar args)) ", ")
- "\r\n" "\n" t))
+ (insert (replace-regexp-in-string
+ "\r\n" "\n"
+ (mapconcat 'identity (reverse (cdar args)) ", ") nil t))
(setq args (cdr args)))
(if subject
(message-goto-body)
@@ -8508,13 +8408,13 @@ url is put as the `gnus-button-url' overlay property on the button."
(defvar gnus-prev-page-map
(let ((map (make-sparse-keymap)))
- (define-key map gnus-mouse-2 'gnus-button-prev-page)
+ (define-key map [mouse-2] 'gnus-button-prev-page)
(define-key map "\r" 'gnus-button-prev-page)
map))
(defvar gnus-next-page-map
(let ((map (make-sparse-keymap)))
- (define-key map gnus-mouse-2 'gnus-button-next-page)
+ (define-key map [mouse-2] 'gnus-button-next-page)
(define-key map "\r" 'gnus-button-next-page)
map))
@@ -8828,8 +8728,8 @@ For example:
(defvar gnus-mime-security-button-map
(let ((map (make-sparse-keymap)))
- (define-key map gnus-mouse-2 'gnus-article-push-button)
- (define-key map gnus-down-mouse-3 'gnus-mime-security-button-menu)
+ (define-key map [mouse-2] 'gnus-article-push-button)
+ (define-key map [down-mouse-3] 'gnus-mime-security-button-menu)
(dolist (c gnus-mime-security-button-commands)
(define-key map (cadr c) (car c)))
map))
@@ -8973,14 +8873,10 @@ For example:
:button-keymap gnus-mime-security-button-map
:help-echo
(lambda (_widget)
- ;; Needed to properly clear the message due to a bug in
- ;; wid-edit (XEmacs only).
- (when (boundp 'help-echo-owns-message)
- (setq help-echo-owns-message t))
(format
"%S: show detail; %S: more options"
- (aref gnus-mouse-2 0)
- (aref gnus-down-mouse-3 0))))))
+ 'mouse-2
+ 'down-mouse-3)))))
(defun gnus-mime-display-security (handle)
(save-restriction
@@ -9026,8 +8922,6 @@ For example:
(interactive)
(gnus-mime-security-run-function 'mm-pipe-part))
-(gnus-ems-redefine)
-
(provide 'gnus-art)
(run-hooks 'gnus-art-load-hook)
diff --git a/lisp/gnus/gnus-async.el b/lisp/gnus/gnus-async.el
index a1408259ec..19867d83ae 100644
--- a/lisp/gnus/gnus-async.el
+++ b/lisp/gnus/gnus-async.el
@@ -35,7 +35,7 @@
:group 'gnus)
(defcustom gnus-use-article-prefetch 30
- "*If non-nil, prefetch articles in groups that allow this.
+ "If non-nil, prefetch articles in groups that allow this.
If a number, prefetch only that many articles forward;
if t, prefetch as many articles as possible."
:group 'gnus-asynchronous
@@ -44,7 +44,7 @@ if t, prefetch as many articles as possible."
(integer :tag "some" 0)))
(defcustom gnus-asynchronous nil
- "*If nil, inhibit all Gnus asynchronicity.
+ "If nil, inhibit all Gnus asynchronicity.
If non-nil, let the other asynch variables be heeded."
:group 'gnus-asynchronous
:type 'boolean)
@@ -59,7 +59,7 @@ from that group."
:type '(set (const read) (const exit)))
(defcustom gnus-use-header-prefetch nil
- "*If non-nil, prefetch the headers to the next group."
+ "If non-nil, prefetch the headers to the next group."
:group 'gnus-asynchronous
:type 'boolean)
@@ -148,18 +148,13 @@ that was fetched."
(with-current-buffer gnus-summary-buffer
(let ((next (caadr (gnus-data-find-list article))))
(when next
- (if (not (fboundp 'run-with-idle-timer))
- ;; This is either an older Emacs or XEmacs, so we
- ;; do this, which leads to slightly slower article
- ;; buffer display.
- (gnus-async-prefetch-article group next summary)
- (when gnus-async-timer
- (ignore-errors
- (nnheader-cancel-timer 'gnus-async-timer)))
- (setq gnus-async-timer
- (run-with-idle-timer
- 0.1 nil 'gnus-async-prefetch-article
- group next summary))))))))
+ (when gnus-async-timer
+ (ignore-errors
+ (nnheader-cancel-timer 'gnus-async-timer)))
+ (setq gnus-async-timer
+ (run-with-idle-timer
+ 0.1 nil 'gnus-async-prefetch-article
+ group next summary)))))))
(defun gnus-async-prefetch-article (group article summary &optional next)
"Possibly prefetch several articles starting with ARTICLE."
diff --git a/lisp/gnus/gnus-bcklg.el b/lisp/gnus/gnus-bcklg.el
index b7a63659d8..d5c7e0ee08 100644
--- a/lisp/gnus/gnus-bcklg.el
+++ b/lisp/gnus/gnus-bcklg.el
@@ -83,7 +83,7 @@
(insert-buffer-substring buffer)
;; Tag the beginning of the article with the ident.
(if (> (point-max) b)
- (gnus-put-text-property b (1+ b) 'gnus-backlog ident)
+ (put-text-property b (1+ b) 'gnus-backlog ident)
(gnus-error 3 "Article %d is blank" number))))))))
(defun gnus-backlog-remove-oldest-article ()
diff --git a/lisp/gnus/gnus-bookmark.el b/lisp/gnus/gnus-bookmark.el
index 1a082c255b..7e18d5e3d9 100644
--- a/lisp/gnus/gnus-bookmark.el
+++ b/lisp/gnus/gnus-bookmark.el
@@ -174,17 +174,6 @@ where each BMK is of the form
So the cdr of each bookmark is an alist too.")
-(defmacro gnus-bookmark-mouse-available-p ()
- "Return non-nil if a mouse is available."
- (if (featurep 'xemacs)
- '(device-on-window-system-p)
- '(display-mouse-p)))
-
-(defun gnus-bookmark-remove-properties (string)
- "Remove all text properties from STRING."
- (set-text-properties 0 (length string) nil string)
- string)
-
;;;###autoload
(defun gnus-bookmark-set ()
"Set a bookmark for this article."
@@ -209,7 +198,7 @@ So the cdr of each bookmark is an alist too.")
;; Set the bookmark list
(setq gnus-bookmark-alist
(cons
- (list (gnus-bookmark-remove-properties bmk-name)
+ (list (substring-no-properties bmk-name)
(gnus-bookmark-make-record
group message-id author date subject annotation))
gnus-bookmark-alist))))
@@ -220,12 +209,12 @@ So the cdr of each bookmark is an alist too.")
(group message-id author date subject annotation)
"Return the record part of a new bookmark, given GROUP MESSAGE-ID AUTHOR DATE SUBJECT and ANNOTATION."
(let ((the-record
- `((group . ,(gnus-bookmark-remove-properties group))
- (message-id . ,(gnus-bookmark-remove-properties message-id))
- (author . ,(gnus-bookmark-remove-properties author))
- (date . ,(gnus-bookmark-remove-properties date))
- (subject . ,(gnus-bookmark-remove-properties subject))
- (annotation . ,(gnus-bookmark-remove-properties annotation)))))
+ `((group . ,(substring-no-properties group))
+ (message-id . ,(substring-no-properties message-id))
+ (author . ,(substring-no-properties author))
+ (date . ,(substring-no-properties date))
+ (subject . ,(substring-no-properties subject))
+ (annotation . ,(substring-no-properties annotation)))))
the-record))
(defun gnus-bookmark-set-bookmark-name (group author subject)
@@ -237,7 +226,7 @@ So the cdr of each bookmark is an alist too.")
"-" (car subject) "-" (cadr subject)))
(default-name-1
;; Strip "[]" chars from the bookmark name:
- (gnus-replace-in-string default-name-0 "[]_[]" ""))
+ (replace-regexp-in-string "[]_[]" "" default-name-0))
(name (read-from-minibuffer
(format "Set bookmark (%s): " default-name-1)
nil nil nil nil
@@ -367,7 +356,7 @@ The leftmost column displays a D if the bookmark is flagged for
deletion, or > if it is flagged for displaying."
(interactive)
(gnus-bookmark-maybe-load-default-file)
- (if (gmm-called-interactively-p 'any)
+ (if (called-interactively-p 'any)
(switch-to-buffer (get-buffer-create "*Gnus Bookmark List*"))
(set-buffer (get-buffer-create "*Gnus Bookmark List*")))
(let ((inhibit-read-only t)
@@ -387,7 +376,7 @@ deletion, or > if it is flagged for displaying."
(insert (if (member (gnus-bookmark-get-annotation name) (list nil ""))
" "
" *"))
- (if (gnus-bookmark-mouse-available-p)
+ (if (display-mouse-p)
(add-text-properties
(prog1
(point)
@@ -400,7 +389,7 @@ deletion, or > if it is flagged for displaying."
(insert "\n")))
`(mouse-face highlight follow-link t
help-echo ,(format "%s: go to this article"
- (aref gnus-mouse-2 0))))
+ 'mouse-2)))
(insert name "\n")))
(goto-char (point-min))
(forward-line 2)
@@ -443,9 +432,7 @@ That is, all information but the name."
nil
(setq gnus-bookmark-bmenu-mode-map (make-keymap))
(suppress-keymap gnus-bookmark-bmenu-mode-map t)
- (define-key gnus-bookmark-bmenu-mode-map "q" (if (fboundp 'quit-window)
- 'quit-window
- 'bury-buffer))
+ (define-key gnus-bookmark-bmenu-mode-map "q" 'quit-window)
(define-key gnus-bookmark-bmenu-mode-map "\C-m" 'gnus-bookmark-bmenu-select)
(define-key gnus-bookmark-bmenu-mode-map "v" 'gnus-bookmark-bmenu-select)
(define-key gnus-bookmark-bmenu-mode-map "d" 'gnus-bookmark-bmenu-delete)
@@ -463,7 +450,7 @@ That is, all information but the name."
(define-key gnus-bookmark-bmenu-mode-map "s" 'gnus-bookmark-bmenu-save)
(define-key gnus-bookmark-bmenu-mode-map "t" 'gnus-bookmark-bmenu-toggle-infos)
(define-key gnus-bookmark-bmenu-mode-map "a" 'gnus-bookmark-bmenu-show-details)
- (define-key gnus-bookmark-bmenu-mode-map gnus-mouse-2
+ (define-key gnus-bookmark-bmenu-mode-map [mouse-2]
'gnus-bookmark-bmenu-select-by-mouse))
;; Bookmark Buffer Menu mode is suitable only for specially formatted
@@ -536,7 +523,7 @@ Optional argument SHOW means show them unconditionally."
(let ((start (point-at-eol)))
(move-to-column gnus-bookmark-bmenu-file-column t)
;; Strip off `mouse-face' from the white spaces region.
- (if (gnus-bookmark-mouse-available-p)
+ (if (display-mouse-p)
(remove-text-properties start (point)
'(mouse-face nil help-echo nil))))
(delete-region (point) (progn (end-of-line) (point)))
@@ -552,7 +539,7 @@ Optional argument SHOW means show them unconditionally."
(insert (gnus-bookmark-get-details
bmk-name
gnus-bookmark-bookmark-inline-details))
- (if (gnus-bookmark-mouse-available-p)
+ (if (display-mouse-p)
(add-text-properties
start
(save-excursion (re-search-backward
@@ -561,7 +548,7 @@ Optional argument SHOW means show them unconditionally."
`(mouse-face highlight
follow-link t
help-echo ,(format "%s: go to this article"
- (aref gnus-mouse-2 0))))))))
+ 'mouse-2)))))))
(defun gnus-bookmark-kill-line (&optional newline-too)
"Kill from point to end of line.
@@ -601,7 +588,7 @@ Does not affect the kill ring."
(gnus-bookmark-kill-line)
(let ((start (point)))
(insert (car gnus-bookmark-bmenu-hidden-bookmarks))
- (if (gnus-bookmark-mouse-available-p)
+ (if (display-mouse-p)
(add-text-properties
start
(save-excursion (re-search-backward
@@ -611,7 +598,7 @@ Does not affect the kill ring."
follow-link t
help-echo
,(format "%s: go to this bookmark in other window"
- (aref gnus-mouse-2 0))))))
+ 'mouse-2)))))
(setq gnus-bookmark-bmenu-hidden-bookmarks
(cdr gnus-bookmark-bmenu-hidden-bookmarks))
(forward-line 1))))))))
diff --git a/lisp/gnus/gnus-cache.el b/lisp/gnus/gnus-cache.el
index 83ccc4fc4a..aa2d0185c2 100644
--- a/lisp/gnus/gnus-cache.el
+++ b/lisp/gnus/gnus-cache.el
@@ -35,7 +35,7 @@
(defcustom gnus-cache-active-file
(expand-file-name "active" gnus-cache-directory)
- "*The cache active file."
+ "The cache active file."
:group 'gnus-cache
:type 'file)
@@ -50,7 +50,7 @@
:type '(set (const ticked) (const dormant) (const unread) (const read)))
(defcustom gnus-cacheable-groups nil
- "*Groups that match this regexp will be cached.
+ "Groups that match this regexp will be cached.
If you only want to cache your nntp groups, you could set this
variable to \"^nntp\".
@@ -62,7 +62,7 @@ it's not cached."
regexp))
(defcustom gnus-uncacheable-groups nil
- "*Groups that match this regexp will not be cached.
+ "Groups that match this regexp will not be cached.
If you want to avoid caching your nnml groups, you could set this
variable to \"^nnml\".
@@ -453,13 +453,11 @@ system for example was used.")
(or (cdr (assoc group gnus-cache-decoded-group-names))
(let ((decoded (gnus-group-decoded-name group))
(coding (or nnmail-pathname-coding-system
- (and (boundp 'file-name-coding-system)
- file-name-coding-system)
- (and (boundp 'default-file-name-coding-system)
- default-file-name-coding-system))))
+ file-name-coding-system
+ default-file-name-coding-system)))
(push (cons group decoded) gnus-cache-decoded-group-names)
- (push (cons (mm-decode-coding-string
- (mm-encode-coding-string decoded coding)
+ (push (cons (decode-coding-string
+ (encode-coding-string decoded coding)
coding)
group)
gnus-cache-unified-group-names)
diff --git a/lisp/gnus/gnus-cite.el b/lisp/gnus/gnus-cite.el
index 502a3be355..03ed71d50c 100644
--- a/lisp/gnus/gnus-cite.el
+++ b/lisp/gnus/gnus-cite.el
@@ -24,9 +24,6 @@
;;; Code:
(eval-when-compile (require 'cl))
-(eval-when-compile
- (when (featurep 'xemacs)
- (require 'easy-mmode))) ; for `define-minor-mode'
(require 'gnus)
(require 'gnus-range)
@@ -75,7 +72,7 @@ Set it to nil to parse all articles."
(defcustom gnus-supercite-regexp
(concat "^\\(" message-cite-prefix-regexp "\\)? *"
">>>>> +\"\\([^\"\n]+\\)\" +==")
- "*Regexp matching normal Supercite attribution lines.
+ "Regexp matching normal Supercite attribution lines.
The first grouping must match prefixes added by other packages."
:group 'gnus-cite
:type 'regexp)
@@ -110,13 +107,13 @@ The first regexp group should match the Supercite attribution."
(defcustom gnus-cite-attribution-prefix
"In article\\|in <\\|On \\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\),\\|----- ?Original Message ?-----"
- "*Regexp matching the beginning of an attribution line."
+ "Regexp matching the beginning of an attribution line."
:group 'gnus-cite
:type 'regexp)
(defcustom gnus-cite-attribution-suffix
"\\(\\(wrote\\|writes\\|said\\|says\\|>\\)\\(:\\|\\.\\.\\.\\)\\|----- ?Original Message ?-----\\)[ \t]*$"
- "*Regexp matching the end of an attribution line.
+ "Regexp matching the end of an attribution line.
The text matching the first grouping will be used as a button."
:group 'gnus-cite
:type 'regexp)
@@ -307,7 +304,7 @@ It is merged with the face for the cited text belonging to the attribution."
(defcustom gnus-cite-face-list
'(gnus-cite-1 gnus-cite-2 gnus-cite-3 gnus-cite-4 gnus-cite-5 gnus-cite-6
gnus-cite-7 gnus-cite-8 gnus-cite-9 gnus-cite-10 gnus-cite-11)
- "*List of faces used for highlighting citations.
+ "List of faces used for highlighting citations.
When there are citations from multiple articles in the same message,
Gnus will try to give each citation from each article its own face.
@@ -530,7 +527,6 @@ longer than the frame width."
(inhibit-point-motion-hooks t)
(marks (gnus-dissect-cited-text))
(adaptive-fill-mode nil)
- (filladapt-mode nil)
(fill-column (if width (prefix-numeric-value width) fill-column)))
(save-restriction
(while (cdr marks)
@@ -1121,7 +1117,7 @@ See also the documentation for `gnus-article-highlight-citation'."
((assq number gnus-cite-attribution-alist))
(t
(gnus-add-wash-type 'cite)
- (gnus-add-text-properties
+ (add-text-properties
(point) (progn (forward-line 1) (point))
(nconc (list 'article-type 'cite)
gnus-hidden-properties))))
@@ -1194,9 +1190,7 @@ Returns nil if there is no such line before LIMIT, t otherwise."
(defvar font-lock-keywords)
(defvar font-lock-set-defaults)
-(eval-and-compile
- (unless (featurep 'xemacs)
- (autoload 'font-lock-set-defaults "font-lock")))
+(autoload 'font-lock-set-defaults "font-lock")
(define-minor-mode gnus-message-citation-mode
"Minor mode providing more font-lock support for nested citations.
@@ -1206,9 +1200,7 @@ When enabled, it automatically turns on `font-lock-mode'."
nil ;; keymap
(when (eq major-mode 'message-mode) ;FIXME: Use derived-mode-p.
;; FIXME: Use font-lock-add-keywords!
- (let ((defaults (car (if (featurep 'xemacs)
- (get 'message-mode 'font-lock-defaults)
- font-lock-defaults)))
+ (let ((defaults (car font-lock-defaults))
default keywords)
(while defaults
(setq default (if (consp defaults)
@@ -1227,19 +1219,11 @@ When enabled, it automatically turns on `font-lock-mode'."
gnus-message-citation-keywords))
(kill-local-variable default))))
;; Force `font-lock-set-defaults' to update `font-lock-keywords'.
- (if (featurep 'xemacs)
- (progn
- (require 'font-lock)
- (setq font-lock-defaults-computed nil
- font-lock-keywords nil))
- (setq font-lock-set-defaults nil))
+ (setq font-lock-set-defaults nil)
(font-lock-set-defaults)
- (cond (font-lock-mode
- (if (fboundp 'font-lock-flush)
- (font-lock-flush)
- (font-lock-fontify-buffer)))
- (gnus-message-citation-mode
- (font-lock-mode 1)))))
+ (if font-lock-mode
+ (font-lock-flush)
+ (gnus-message-citation-mode (font-lock-mode 1)))))
(defun turn-on-gnus-message-citation-mode ()
"Turn on `gnus-message-citation-mode'."
@@ -1248,8 +1232,6 @@ When enabled, it automatically turns on `font-lock-mode'."
"Turn off `gnus-message-citation-mode'."
(gnus-message-citation-mode -1))
-(gnus-ems-redefine)
-
(provide 'gnus-cite)
;; Local Variables:
diff --git a/lisp/gnus/gnus-cloud.el b/lisp/gnus/gnus-cloud.el
index a6a0f64603..14af4b2a84 100644
--- a/lisp/gnus/gnus-cloud.el
+++ b/lisp/gnus/gnus-cloud.el
@@ -28,6 +28,12 @@
(require 'parse-time)
(require 'nnimap)
+(eval-when-compile (require 'epg)) ;; setf-method for `epg-context-armor'
+(autoload 'epg-make-context "epg")
+(autoload 'epg-context-set-passphrase-callback "epg")
+(autoload 'epg-decrypt-string "epg")
+(autoload 'epg-encrypt-string "epg")
+
(defgroup gnus-cloud nil
"Syncing Gnus data via IMAP."
:version "25.1"
@@ -43,18 +49,36 @@
;; FIXME this type does not match the default. Nor does the documentation.
:type '(repeat regexp))
-(defvar gnus-cloud-group-name "*Emacs Cloud*")
+(defcustom gnus-cloud-storage-method (if (featurep 'epg) 'epg 'base64-gzip)
+ "Storage method for cloud data, defaults to EPG if that's available."
+ :group 'gnus-cloud
+ :type '(radio (const :tag "No encoding" nil)
+ (const :tag "Base64" base64)
+ (const :tag "Base64+gzip" base64-gzip)
+ (const :tag "EPG" epg)))
+
+(defcustom gnus-cloud-interactive t
+ "Whether Gnus Cloud changes should be confirmed."
+ :group 'gnus-cloud
+ :type 'boolean)
+
+(defvar gnus-cloud-group-name "Emacs-Cloud")
(defvar gnus-cloud-covered-servers nil)
(defvar gnus-cloud-version 1)
(defvar gnus-cloud-sequence 1)
-(defvar gnus-cloud-method nil
- "The IMAP select method used to store the cloud data.")
+(defcustom gnus-cloud-method nil
+ "The IMAP select method used to store the cloud data.
+See also `gnus-server-toggle-cloud-method-server' for an
+easy interactive way to set this from the Server buffer."
+ :group 'gnus-cloud
+ :type '(radio (const :tag "Not set" nil)
+ (string :tag "A Gnus server name as a string")))
(defun gnus-cloud-make-chunk (elems)
(with-temp-buffer
- (insert (format "Version %s\n" gnus-cloud-version))
+ (insert (format "Gnus-Cloud-Version %s\n" gnus-cloud-version))
(insert (gnus-cloud-insert-data elems))
(buffer-string)))
@@ -63,106 +87,189 @@
(dolist (elem elems)
(cond
((eq (plist-get elem :type) :file)
- (let (length data)
- (mm-with-unibyte-buffer
- (insert-file-contents-literally (plist-get elem :file-name))
- (setq length (buffer-size)
- data (buffer-string)))
- (insert (format "(:type :file :file-name %S :timestamp %S :length %d)\n"
- (plist-get elem :file-name)
- (plist-get elem :timestamp)
- length))
- (insert data)
- (insert "\n")))
- ((eq (plist-get elem :type) :data)
- (insert (format "(:type :data :name %S :length %d)\n"
- (plist-get elem :name)
- (with-current-buffer (plist-get elem :buffer)
- (buffer-size))))
- (insert-buffer-substring (plist-get elem :buffer))
- (insert "\n"))
+ (let (length data)
+ (mm-with-unibyte-buffer
+ (insert-file-contents-literally (plist-get elem :file-name))
+ (setq length (buffer-size)
+ data (buffer-string)))
+ (insert (format "(:type :file :file-name %S :timestamp %S :length %d)\n"
+ (plist-get elem :file-name)
+ (plist-get elem :timestamp)
+ length))
+ (insert data)
+ (insert "\n")))
+ ((eq (plist-get elem :type) :newsrc-data)
+ (let ((print-level nil)
+ (print-length nil))
+ (print elem (current-buffer)))
+ (insert "\n"))
((eq (plist-get elem :type) :delete)
- (insert (format "(:type :delete :file-name %S)\n"
- (plist-get elem :file-name))))))
+ (insert (format "(:type :delete :file-name %S)\n"
+ (plist-get elem :file-name))))))
(gnus-cloud-encode-data)
(buffer-string)))
(defun gnus-cloud-encode-data ()
- (call-process-region (point-min) (point-max) "gzip"
- t (current-buffer) nil
- "-c")
- (base64-encode-region (point-min) (point-max)))
+ (cond
+ ((eq gnus-cloud-storage-method 'base64-gzip)
+ (progn
+ (call-process-region (point-min) (point-max) "gzip"
+ t (current-buffer) nil
+ "-c")
+ (base64-encode-region (point-min) (point-max))))
+
+ ((eq gnus-cloud-storage-method 'base64)
+ (base64-encode-region (point-min) (point-max)))
+
+ ((eq gnus-cloud-storage-method 'epg)
+ (let ((context (epg-make-context 'OpenPGP))
+ cipher)
+ (setf (epg-context-armor context) t)
+ (setf (epg-context-textmode context) t)
+ (let ((data (epg-encrypt-string context
+ (buffer-substring-no-properties
+ (point-min)
+ (point-max))
+ nil)))
+ (delete-region (point-min) (point-max))
+ (insert data))))
+
+ ((null gnus-cloud-storage-method)
+ (gnus-message 5 "Leaving cloud data plaintext"))
+ (t (gnus-error 1 "Invalid cloud storage method %S"
+ gnus-cloud-storage-method))))
(defun gnus-cloud-decode-data ()
- (base64-decode-region (point-min) (point-max))
- (call-process-region (point-min) (point-max) "gunzip"
- t (current-buffer) nil
- "-c"))
+ (cond
+ ((memq gnus-cloud-storage-method '(base64 base64-gzip))
+ (base64-decode-region (point-min) (point-max)))
+
+ ((eq gnus-cloud-storage-method 'base64-gzip)
+ (call-process-region (point-min) (point-max) "gunzip"
+ t (current-buffer) nil
+ "-c"))
+
+ ((eq gnus-cloud-storage-method 'epg)
+ (let* ((context (epg-make-context 'OpenPGP))
+ (data (epg-decrypt-string context (buffer-substring-no-properties
+ (point-min)
+ (point-max)))))
+ (delete-region (point-min) (point-max))
+ (insert data)))
+
+ ((null gnus-cloud-storage-method)
+ (gnus-message 5 "Reading cloud data as plaintext"))
+
+ (t (gnus-error 1 "Invalid cloud storage method %S"
+ gnus-cloud-storage-method))))
(defun gnus-cloud-parse-chunk ()
(save-excursion
- (goto-char (point-min))
- (unless (looking-at "Version \\([0-9]+\\)")
+ (unless (looking-at "Gnus-Cloud-Version \\([0-9]+\\)")
(error "Not a valid Cloud chunk in the current buffer"))
(forward-line 1)
(let ((version (string-to-number (match-string 1)))
- (data (buffer-substring (point) (point-max))))
+ (data (buffer-substring (point) (point-max))))
(mm-with-unibyte-buffer
- (insert data)
- (cond
- ((= version 1)
- (gnus-cloud-decode-data)
- (goto-char (point-min))
- (gnus-cloud-parse-version-1))
- (t
- (error "Unsupported Cloud chunk version %s" version)))))))
+ (insert data)
+ (cond
+ ((= version 1)
+ (gnus-cloud-decode-data)
+ (goto-char (point-min))
+ (gnus-cloud-parse-version-1))
+ (t
+ (error "Unsupported Cloud chunk version %s" version)))))))
(defun gnus-cloud-parse-version-1 ()
(let ((elems nil))
(while (not (eobp))
(while (and (not (eobp))
- (not (looking-at "(:type")))
- (forward-line 1))
+ (not (looking-at "(:type")))
+ (forward-line 1))
(unless (eobp)
- (let ((spec (ignore-errors (read (current-buffer))))
- length)
- (when (and (consp spec)
- (memq (plist-get spec :type) '(:file :data :delete)))
- (setq length (plist-get spec :length))
- (push (append spec
- (list
- :contents (buffer-substring (1+ (point))
- (+ (point) 1 length))))
- elems)
- (goto-char (+ (point) 1 length))))))
+ (let ((spec (ignore-errors (read (current-buffer))))
+ length)
+ (when (consp spec)
+ (cond
+ ((memq (plist-get spec :type) '(:file :delete))
+ (setq length (plist-get spec :length))
+ (push (append spec
+ (list
+ :contents (buffer-substring (1+ (point))
+ (+ (point) 1 length))))
+ elems)
+ (goto-char (+ (point) 1 length)))
+ ((memq (plist-get spec :type) '(:newsrc-data))
+ (push spec elems)))))))
(nreverse elems)))
-(defun gnus-cloud-update-data (elems)
+(defun gnus-cloud-update-all (elems)
(dolist (elem elems)
(let ((type (plist-get elem :type)))
(cond
- ((eq type :data)
- )
- ((eq type :delete)
- (gnus-cloud-delete-file (plist-get elem :file-name))
- )
- ((eq type :file)
- (gnus-cloud-update-file elem))
+ ((eq type :newsrc-data)
+ (gnus-cloud-update-newsrc-data (plist-get elem :name) elem))
+ ((memq type '(:delete :file))
+ (gnus-cloud-update-file elem type))
(t
- (message "Unknown type %s; ignoring" type))))))
-
-(defun gnus-cloud-update-file (elem)
- (let ((file-name (plist-get elem :file-name))
- (date (plist-get elem :timestamp))
- (contents (plist-get elem :contents)))
- (unless (gnus-cloud-file-covered-p file-name)
- (message "%s isn't covered by the cloud; ignoring" file-name))
- (when (or (not (file-exists-p file-name))
- (and (file-exists-p file-name)
- (mm-with-unibyte-buffer
- (insert-file-contents-literally file-name)
- (not (equal (buffer-string) contents)))))
- (gnus-cloud-replace-file file-name date contents))))
+ (gnus-message 1 "Unknown type %s; ignoring" type))))))
+
+(defun gnus-cloud-update-newsrc-data (group elem &optional force-older)
+ "Update the newsrc data for GROUP from ELEM.
+Use old data if FORCE-OLDER is not nil."
+ (let* ((contents (plist-get elem :contents))
+ (date (or (plist-get elem :timestamp) "0"))
+ (now (gnus-cloud-timestamp (current-time)))
+ (newer (string-lessp date now))
+ (group-info (gnus-get-info group)))
+ (if (and contents
+ (stringp (nth 0 contents))
+ (integerp (nth 1 contents)))
+ (if group-info
+ (if (equal (format "%S" group-info)
+ (format "%S" contents))
+ (gnus-message 3 "Skipping cloud update of group %s, the info is the same" group)
+ (if (and newer (not force-older))
+ (gnus-message 3 "Skipping outdated cloud info for group %s, the info is from %s (now is %s)" group date now)
+ (when (or (not gnus-cloud-interactive)
+ (gnus-y-or-n-p
+ (format "%s has older different info in the cloud as of %s, update it here? "
+ group date))))
+ (gnus-message 2 "Installing cloud update of group %s" group)
+ (gnus-set-info group contents)
+ (gnus-group-update-group group)))
+ (gnus-error 1 "Sorry, group %s is not subscribed" group))
+ (gnus-error 1 "Sorry, could not update newsrc for group %s (invalid data %S)"
+ group elem))))
+
+(defun gnus-cloud-update-file (elem op)
+ "Apply Gnus Cloud data ELEM and operation OP to a file."
+ (let* ((file-name (plist-get elem :file-name))
+ (date (plist-get elem :timestamp))
+ (contents (plist-get elem :contents))
+ (exists (file-exists-p file-name)))
+ (if (gnus-cloud-file-covered-p file-name)
+ (cond
+ ((eq op :delete)
+ (if (and exists
+ ;; prompt only if the file exists already
+ (or (not gnus-cloud-interactive)
+ (gnus-y-or-n-p (format "%s has been deleted as of %s, delete it locally? "
+ file-name date))))
+ (rename-file file-name (car (find-backup-file-name file-name)))
+ (gnus-message 3 "%s was already deleted before the cloud got it" file-name)))
+ ((eq op :file)
+ (when (or (not exists)
+ (and exists
+ (mm-with-unibyte-buffer
+ (insert-file-contents-literally file-name)
+ (not (equal (buffer-string) contents)))
+ ;; prompt only if the file exists already
+ (or (not gnus-cloud-interactive)
+ (gnus-y-or-n-p (format "%s has updated contents as of %s, update it? "
+ file-name date)))))
+ (gnus-cloud-replace-file file-name date contents))))
+ (gnus-message 2 "%s isn't covered by the cloud; ignoring" file-name))))
(defun gnus-cloud-replace-file (file-name date new-contents)
(mm-with-unibyte-buffer
@@ -172,25 +279,19 @@
(write-region (point-min) (point-max) file-name)
(set-file-times file-name (parse-iso8601-time-string date))))
-(defun gnus-cloud-delete-file (file-name)
- (unless (gnus-cloud-file-covered-p file-name)
- (message "%s isn't covered by the cloud; ignoring" file-name))
- (when (file-exists-p file-name)
- (rename-file file-name (car (find-backup-file-name file-name)))))
-
(defun gnus-cloud-file-covered-p (file-name)
(let ((matched nil))
(dolist (elem gnus-cloud-synced-files)
(cond
((stringp elem)
- (when (equal elem file-name)
- (setq matched t)))
+ (when (equal elem file-name)
+ (setq matched t)))
((consp elem)
- (when (and (equal (directory-file-name (plist-get elem :directory))
- (directory-file-name (file-name-directory file-name)))
- (string-match (plist-get elem :match)
- (file-name-nondirectory file-name)))
- (setq matched t)))))
+ (when (and (equal (directory-file-name (plist-get elem :directory))
+ (directory-file-name (file-name-directory file-name)))
+ (string-match (plist-get elem :match)
+ (file-name-nondirectory file-name)))
+ (setq matched t)))))
matched))
(defun gnus-cloud-all-files ()
@@ -198,106 +299,126 @@
(dolist (elem gnus-cloud-synced-files)
(cond
((stringp elem)
- (push elem files))
+ (push elem files))
((consp elem)
- (dolist (file (directory-files (plist-get elem :directory)
- nil
- (plist-get elem :match)))
- (push (format "%s/%s"
- (directory-file-name (plist-get elem :directory))
- file)
- files)))))
+ (dolist (file (directory-files (plist-get elem :directory)
+ nil
+ (plist-get elem :match)))
+ (push (format "%s/%s"
+ (directory-file-name (plist-get elem :directory))
+ file)
+ files)))))
(nreverse files)))
(defvar gnus-cloud-file-timestamps nil)
(defun gnus-cloud-files-to-upload (&optional full)
(let ((files nil)
- timestamp)
+ timestamp)
(dolist (file (gnus-cloud-all-files))
(if (file-exists-p file)
- (when (setq timestamp (gnus-cloud-file-new-p file full))
- (push `(:type :file :file-name ,file :timestamp ,timestamp) files))
- (when (assoc file gnus-cloud-file-timestamps)
- (push `(:type :delete :file-name ,file) files))))
+ (when (setq timestamp (gnus-cloud-file-new-p file full))
+ (push `(:type :file :file-name ,file :timestamp ,timestamp) files))
+ (when (assoc file gnus-cloud-file-timestamps)
+ (push `(:type :delete :file-name ,file) files))))
(nreverse files)))
+(defun gnus-cloud-timestamp (time)
+ "Return a general timestamp string for TIME."
+ (format-time-string "%FT%T%z" time))
+
(defun gnus-cloud-file-new-p (file full)
- (let ((timestamp (format-time-string
- "%FT%T%z" (nth 5 (file-attributes file))))
- (old (cadr (assoc file gnus-cloud-file-timestamps))))
+ (let ((timestamp (gnus-cloud-timestamp (nth 5 (file-attributes file))))
+ (old (cadr (assoc file gnus-cloud-file-timestamps))))
(when (or full
- (null old)
- (string< old timestamp))
+ (null old)
+ (string< old timestamp))
timestamp)))
(declare-function gnus-activate-group "gnus-start"
- (group &optional scan dont-check method dont-sub-check))
+ (group &optional scan dont-check method dont-sub-check))
(declare-function gnus-subscribe-group "gnus-start"
- (group &optional previous method))
+ (group &optional previous method))
(defun gnus-cloud-ensure-cloud-group ()
(let ((method (if (stringp gnus-cloud-method)
- (gnus-server-to-method gnus-cloud-method)
- gnus-cloud-method)))
+ (gnus-server-to-method gnus-cloud-method)
+ gnus-cloud-method)))
(unless (or (gnus-active gnus-cloud-group-name)
- (gnus-activate-group gnus-cloud-group-name nil nil
- gnus-cloud-method))
+ (gnus-activate-group gnus-cloud-group-name nil nil
+ gnus-cloud-method))
(and (gnus-request-create-group gnus-cloud-group-name gnus-cloud-method)
- (gnus-activate-group gnus-cloud-group-name nil nil gnus-cloud-method)
- (gnus-subscribe-group gnus-cloud-group-name)))))
+ (gnus-activate-group gnus-cloud-group-name nil nil gnus-cloud-method)
+ (gnus-subscribe-group gnus-cloud-group-name)))))
+
+(defun gnus-cloud-upload-all-data ()
+ "Upload all data (newsrc and files) to the Gnus Cloud."
+ (interactive)
+ (gnus-cloud-upload-data t))
(defun gnus-cloud-upload-data (&optional full)
+ "Upload data (newsrc and files) to the Gnus Cloud.
+When FULL is t, upload everything, not just a difference from the last full."
+ (interactive)
(gnus-cloud-ensure-cloud-group)
(with-temp-buffer
- (let ((elems (gnus-cloud-files-to-upload full)))
- (insert (format "Subject: (sequence: %d type: %s)\n"
- gnus-cloud-sequence
- (if full :full :partial)))
- (insert "From: nobody@invalid.com\n")
+ (let ((elems (append
+ (gnus-cloud-files-to-upload full)
+ (gnus-cloud-collect-full-newsrc)))
+ (group (gnus-group-full-name gnus-cloud-group-name gnus-cloud-method)))
+ (insert (format "Subject: (sequence: %s type: %s storage-method: %s)\n"
+ (or gnus-cloud-sequence "UNKNOWN")
+ (if full :full :partial)
+ gnus-cloud-storage-method))
+ (insert "From: nobody@gnus.cloud.invalid\n")
(insert "\n")
(insert (gnus-cloud-make-chunk elems))
- (when (gnus-request-accept-article gnus-cloud-group-name gnus-cloud-method
- t t)
- (setq gnus-cloud-sequence (1+ gnus-cloud-sequence))
- (gnus-cloud-add-timestamps elems)))))
+ (if (gnus-request-accept-article gnus-cloud-group-name gnus-cloud-method
+ t t)
+ (progn
+ (setq gnus-cloud-sequence (1+ (or gnus-cloud-sequence 0)))
+ (gnus-cloud-add-timestamps elems)
+ (gnus-message 3 "Uploaded Gnus Cloud data successfully to %s" group)
+ (gnus-group-refresh-group group))
+ (gnus-error 2 "Failed to upload Gnus Cloud data to %s" group)))))
(defun gnus-cloud-add-timestamps (elems)
(dolist (elem elems)
(let* ((file-name (plist-get elem :file-name))
- (old (assoc file-name gnus-cloud-file-timestamps)))
+ (old (assoc file-name gnus-cloud-file-timestamps)))
(when old
- (setq gnus-cloud-file-timestamps
- (delq old gnus-cloud-file-timestamps)))
+ (setq gnus-cloud-file-timestamps
+ (delq old gnus-cloud-file-timestamps)))
(push (list file-name (plist-get elem :timestamp))
- gnus-cloud-file-timestamps))))
+ gnus-cloud-file-timestamps))))
(defun gnus-cloud-available-chunks ()
(gnus-activate-group gnus-cloud-group-name nil nil gnus-cloud-method)
(let* ((group (gnus-group-full-name gnus-cloud-group-name gnus-cloud-method))
- (active (gnus-active group))
- headers head)
+ (active (gnus-active group))
+ headers head)
(when (gnus-retrieve-headers (gnus-uncompress-range active) group)
(with-current-buffer nntp-server-buffer
- (goto-char (point-min))
- (while (and (not (eobp))
- (setq head (nnheader-parse-head)))
- (push head headers))))
+ (goto-char (point-min))
+ (while (and (not (eobp))
+ (setq head (nnheader-parse-head)))
+ (push head headers))))
(sort (nreverse headers)
- (lambda (h1 h2)
- (> (gnus-cloud-chunk-sequence (mail-header-subject h1))
- (gnus-cloud-chunk-sequence (mail-header-subject h2)))))))
+ (lambda (h1 h2)
+ (> (gnus-cloud-chunk-sequence (mail-header-subject h1))
+ (gnus-cloud-chunk-sequence (mail-header-subject h2)))))))
(defun gnus-cloud-chunk-sequence (string)
(if (string-match "sequence: \\([0-9]+\\)" string)
(string-to-number (match-string 1 string))
0))
+;; TODO: use this
(defun gnus-cloud-prune-old-chunks (headers)
(let ((headers (reverse headers))
- (found nil))
+ (found nil))
(while (and headers
- (not found))
+ (not found))
(when (string-match "type: :full" (mail-header-subject (car headers)))
(setq found t))
(pop headers))
@@ -306,37 +427,68 @@
(when headers
(gnus-request-expire-articles
(mapcar (lambda (h)
- (mail-header-number h))
- (nreverse headers))
+ (mail-header-number h))
+ (nreverse headers))
(gnus-group-full-name gnus-cloud-group-name gnus-cloud-method)))))
-(defun gnus-cloud-download-data ()
+(defun gnus-cloud-download-all-data ()
+ "Download the Gnus Cloud data and install it.
+Starts at `gnus-cloud-sequence' in the sequence."
+ (interactive)
+ (gnus-cloud-download-data t))
+
+(defun gnus-cloud-download-data (&optional update sequence-override)
+ "Download the Gnus Cloud data and install it if UPDATE is t.
+When SEQUENCE-OVERRIDE is given, start at that sequence number
+instead of `gnus-cloud-sequence'.
+
+When UPDATE is t, returns the result of calling `gnus-cloud-update-all'.
+Otherwise, returns the Gnus Cloud data chunks."
(let ((articles nil)
- chunks)
+ chunks)
(dolist (header (gnus-cloud-available-chunks))
(when (> (gnus-cloud-chunk-sequence (mail-header-subject header))
- gnus-cloud-sequence)
- (push (mail-header-number header) articles)))
+ (or sequence-override gnus-cloud-sequence -1))
+
+ (if (string-match (format "storage-method: %s" gnus-cloud-storage-method)
+ (mail-header-subject header))
+ (push (mail-header-number header) articles)
+ (gnus-message 1 "Skipping article %s because it didn't match the Gnus Cloud method %s: %s"
+ (mail-header-number header)
+ gnus-cloud-storage-method
+ (mail-header-subject header)))))
(when articles
(nnimap-request-articles (nreverse articles) gnus-cloud-group-name)
(with-current-buffer nntp-server-buffer
- (goto-char (point-min))
- (while (re-search-forward "^Version " nil t)
- (beginning-of-line)
- (push (gnus-cloud-parse-chunk) chunks)
- (forward-line 1))))))
+ (goto-char (point-min))
+ (while (re-search-forward "^Gnus-Cloud-Version " nil t)
+ (beginning-of-line)
+ (push (gnus-cloud-parse-chunk) chunks)
+ (forward-line 1))))
+ (if update
+ (mapcar #'gnus-cloud-update-all chunks)
+ chunks)))
(defun gnus-cloud-server-p (server)
(member server gnus-cloud-covered-servers))
+(defun gnus-cloud-host-server-p (server)
+ (equal gnus-cloud-method server))
+
+(defun gnus-cloud-host-acceptable-method-p (server)
+ (eq (car-safe (gnus-server-to-method server)) 'nnimap))
+
(defun gnus-cloud-collect-full-newsrc ()
+ "Collect all the Gnus newsrc data in a portable format."
(let ((infos nil))
(dolist (info (cdr gnus-newsrc-alist))
(when (gnus-cloud-server-p
- (gnus-method-to-server
- (gnus-find-method-for-group (gnus-info-group info))))
- (push info infos)))
- ))
+ (gnus-method-to-server
+ (gnus-find-method-for-group (gnus-info-group info))))
+
+ (push `(:type :newsrc-data :name ,(gnus-info-group info) :contents ,info :timestamp ,(gnus-cloud-timestamp (current-time)))
+ infos)))
+ infos))
(provide 'gnus-cloud)
diff --git a/lisp/gnus/gnus-cus.el b/lisp/gnus/gnus-cus.el
index de66e34fb9..669de2bb79 100644
--- a/lisp/gnus/gnus-cus.el
+++ b/lisp/gnus/gnus-cus.el
@@ -416,7 +416,7 @@ category."))
;; Decode values posting-style holds.
(dolist (style (cdr (assq 'posting-style values)))
(when (stringp (cadr style))
- (setcdr style (list (mm-decode-coding-string (cadr style) 'utf-8)))))
+ (setcdr style (list (decode-coding-string (cadr style) 'utf-8)))))
(setq gnus-custom-params
(apply 'widget-create 'group
@@ -492,7 +492,7 @@ form, but who cares?"
;; Encode values posting-style holds.
(dolist (style (cdr (assq 'posting-style params)))
(when (stringp (cadr style))
- (setcdr style (list (mm-encode-coding-string (cadr style) 'utf-8)))))
+ (setcdr style (list (encode-coding-string (cadr style) 'utf-8)))))
(if gnus-custom-topic
(gnus-topic-set-parameters gnus-custom-topic params)
(gnus-group-edit-group-done 'params gnus-custom-group params)
diff --git a/lisp/gnus/gnus-delay.el b/lisp/gnus/gnus-delay.el
index 93069e5e4e..37e8cdc7ec 100644
--- a/lisp/gnus/gnus-delay.el
+++ b/lisp/gnus/gnus-delay.el
@@ -53,12 +53,12 @@
:group 'gnus-delay)
(defcustom gnus-delay-default-delay "3d"
- "*Default length of delay."
+ "Default length of delay."
:type 'string
:group 'gnus-delay)
(defcustom gnus-delay-default-hour 8
- "*If deadline is given as date, then assume this time of day."
+ "If deadline is given as date, then assume this time of day."
:version "22.1"
:type 'integer
:group 'gnus-delay)
@@ -103,10 +103,10 @@ DELAY is a string, giving the length of the time. Possible values are:
(aset deadline 1 minute)
(aset deadline 2 hour)
;; Convert to seconds.
- (setq deadline (gnus-float-time (apply 'encode-time
- (append deadline nil))))
+ (setq deadline (float-time (apply 'encode-time
+ (append deadline nil))))
;; If this time has passed already, add a day.
- (when (< deadline (gnus-float-time))
+ (when (< deadline (float-time))
(setq deadline (+ 86400 deadline))) ; 86400 secs/day
;; Convert seconds to date header.
(setq deadline (message-make-date
@@ -129,7 +129,7 @@ DELAY is a string, giving the length of the time. Possible values are:
(t
(setq delay (* num 60))))
(setq deadline (message-make-date
- (seconds-to-time (+ (gnus-float-time) delay)))))
+ (seconds-to-time (+ (float-time) delay)))))
(t (error "Malformed delay `%s'" delay)))
(message-add-header (format "%s: %s" gnus-delay-header deadline)))
(set-buffer-modified-p t)
diff --git a/lisp/gnus/gnus-demon.el b/lisp/gnus/gnus-demon.el
index eb7d0f8715..1d4b021d7f 100644
--- a/lisp/gnus/gnus-demon.el
+++ b/lisp/gnus/gnus-demon.el
@@ -93,10 +93,7 @@ Emacs has been idle for IDLE `gnus-demon-timestep's."
(defun gnus-demon-idle-since ()
"Return the number of seconds since when Emacs is idle."
- (if (featurep 'xemacs)
- (itimer-time-difference (current-time) last-command-event-time)
- (float-time (or (current-idle-time)
- '(0 0 0)))))
+ (float-time (or (current-idle-time) '(0 0 0))))
(defun gnus-demon-run-callback (func &optional idle time special)
"Run FUNC if Emacs has been idle for longer than IDLE seconds.
diff --git a/lisp/gnus/gnus-diary.el b/lisp/gnus/gnus-diary.el
index 6f0bfe6766..4dc4f7a022 100644
--- a/lisp/gnus/gnus-diary.el
+++ b/lisp/gnus/gnus-diary.el
@@ -50,19 +50,19 @@
:group 'gnus)
(defcustom gnus-diary-summary-line-format "%U%R%z %uD: %(%s%) (%ud)\n"
- "*Summary line format for nndiary groups."
+ "Summary line format for nndiary groups."
:type 'string
:group 'gnus-diary
:group 'gnus-summary-format)
(defcustom gnus-diary-time-format "%a, %b %e %y, %H:%M"
- "*Time format to display appointments in nndiary summary buffers.
+ "Time format to display appointments in nndiary summary buffers.
Please refer to `format-time-string' for information on possible values."
:type 'string
:group 'gnus-diary)
(defcustom gnus-diary-delay-format-function 'gnus-diary-delay-format-english
- "*Function called to format a diary delay string.
+ "Function called to format a diary delay string.
It is passed two arguments. The first one is non-nil if the delay is in
the past. The second one is of the form ((NUM . UNIT) ...) where NUM is
an integer and UNIT is one of 'year 'month 'week 'day 'hour or 'minute.
@@ -83,13 +83,10 @@ There are currently two built-in format functions:
;; Compatibility functions ==================================================
-(eval-and-compile
- (if (fboundp 'kill-entire-line)
- (defalias 'gnus-diary-kill-entire-line 'kill-entire-line)
- (defun gnus-diary-kill-entire-line ()
- (beginning-of-line)
- (let ((kill-whole-line t))
- (kill-line)))))
+(defun gnus-diary-kill-entire-line ()
+ (beginning-of-line)
+ (let ((kill-whole-line t))
+ (kill-line)))
;; Summary line format ======================================================
@@ -164,7 +161,7 @@ There are currently two built-in format functions:
(sched (gnus-diary-header-schedule extras))
(occur (nndiary-next-occurence sched (current-time)))
(now (current-time))
- (real-time (subtract-time occur now)))
+ (real-time (time-subtract occur now)))
(if (null real-time)
"?????"
(let* ((sec (+ (* (float (car real-time)) 65536) (cadr real-time)))
diff --git a/lisp/gnus/gnus-dired.el b/lisp/gnus/gnus-dired.el
index 3bbd4de1fe..f7eae94a7d 100644
--- a/lisp/gnus/gnus-dired.el
+++ b/lisp/gnus/gnus-dired.el
@@ -38,9 +38,6 @@
;;; Code:
-(eval-when-compile
- (when (featurep 'xemacs)
- (require 'easy-mmode))) ; for `define-minor-mode'
(require 'dired)
(autoload 'mml-attach-file "mml")
(autoload 'mm-default-file-encoding "mm-decode");; Shift this to `mailcap.el'?
@@ -86,12 +83,6 @@ See `mail-user-agent' for more information."
gnus-user-agent)
(function :tag "Other")))
-(eval-when-compile
- (when (featurep 'xemacs)
- (defvar gnus-dired-mode-hook)
- (defvar gnus-dired-mode-on-hook)
- (defvar gnus-dired-mode-off-hook)))
-
(define-minor-mode gnus-dired-mode
"Minor mode for intersections of gnus and dired.
@@ -134,9 +125,7 @@ filenames."
(mapcar
;; don't attach directories
(lambda (f) (if (file-directory-p f) nil f))
- (nreverse
- (let ((arg nil)) ;; Silence XEmacs 21.5 when compiling.
- (dired-map-over-marks (dired-get-filename) arg)))))))
+ (nreverse (dired-map-over-marks (dired-get-filename) nil))))))
(let ((destination nil)
(files-str nil)
(bufs nil))
diff --git a/lisp/gnus/gnus-draft.el b/lisp/gnus/gnus-draft.el
index b5b17ba42b..f5299bea80 100644
--- a/lisp/gnus/gnus-draft.el
+++ b/lisp/gnus/gnus-draft.el
@@ -31,9 +31,6 @@
(require 'nndraft)
(require 'gnus-agent)
(eval-when-compile (require 'cl))
-(eval-when-compile
- (when (featurep 'xemacs)
- (require 'easy-mmode))) ; for `define-minor-mode'
;;; Draft minor mode
@@ -320,7 +317,7 @@ If DONT-POP is nil, display the buffer after setting it up."
(let* ((window (get-buffer-window buff t))
(frame (and window (window-frame window))))
(if frame
- (gnus-select-frame-set-input-focus frame)
+ (select-frame-set-input-focus frame)
(pop-to-buffer buff t)))
(error "The draft %s is under edit" file)))))
diff --git a/lisp/gnus/gnus-dup.el b/lisp/gnus/gnus-dup.el
index bc11ba1851..4492c9aa63 100644
--- a/lisp/gnus/gnus-dup.el
+++ b/lisp/gnus/gnus-dup.el
@@ -39,19 +39,19 @@
:group 'gnus)
(defcustom gnus-save-duplicate-list nil
- "*If non-nil, save the duplicate list when shutting down Gnus.
+ "If non-nil, save the duplicate list when shutting down Gnus.
If nil, duplicate suppression will only work on duplicates
seen in the same session."
:group 'gnus-duplicate
:type 'boolean)
(defcustom gnus-duplicate-list-length 10000
- "*The number of Message-IDs to keep in the duplicate suppression list."
+ "The number of Message-IDs to keep in the duplicate suppression list."
:group 'gnus-duplicate
:type 'integer)
(defcustom gnus-duplicate-file (nnheader-concat gnus-directory "suppression")
- "*The name of the file to store the duplicate suppression list."
+ "The name of the file to store the duplicate suppression list."
:group 'gnus-duplicate
:type 'file)
diff --git a/lisp/gnus/gnus-ems.el b/lisp/gnus/gnus-ems.el
deleted file mode 100644
index 400ac4f02b..0000000000
--- a/lisp/gnus/gnus-ems.el
+++ /dev/null
@@ -1,266 +0,0 @@
-;;; gnus-ems.el --- functions for making Gnus work under different Emacsen
-
-;; Copyright (C) 1995-2016 Free Software Foundation, Inc.
-
-;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
-;; Keywords: news
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;;; Code:
-
-(eval-when-compile
- (require 'cl)
- (require 'ring))
-
-;;; Function aliases later to be redefined for XEmacs usage.
-
-(defvar gnus-mouse-2 [mouse-2])
-(defvar gnus-down-mouse-3 [down-mouse-3])
-(defvar gnus-down-mouse-2 [down-mouse-2])
-(defvar gnus-widget-button-keymap nil)
-(defvar gnus-mode-line-modified
- (if (featurep 'xemacs)
- '("--**-" . "-----")
- '("**" "--")))
-
-(eval-and-compile
- (autoload 'gnus-xmas-define "gnus-xmas")
- (autoload 'gnus-xmas-redefine "gnus-xmas"))
-
-(autoload 'gnus-get-buffer-create "gnus")
-(autoload 'nnheader-find-etc-directory "nnheader")
-(autoload 'smiley-region "smiley")
-
-(defun gnus-kill-all-overlays ()
- "Delete all overlays in the current buffer."
- (let* ((overlayss (overlay-lists))
- (buffer-read-only nil)
- (overlays (delq nil (nconc (car overlayss) (cdr overlayss)))))
- (while overlays
- (delete-overlay (pop overlays)))))
-
-;;; Mule functions.
-
-(defun gnus-mule-max-width-function (el max-width)
- `(let* ((val (eval (, el)))
- (valstr (if (numberp val)
- (int-to-string val) val)))
- (if (> (length valstr) ,max-width)
- (truncate-string-to-width valstr ,max-width)
- valstr)))
-
-(eval-and-compile
- (if (featurep 'xemacs)
- (gnus-xmas-define)
- (defvar gnus-mouse-face-prop 'mouse-face
- "Property used for highlighting mouse regions.")))
-
-(defvar gnus-tmp-unread)
-(defvar gnus-tmp-replied)
-(defvar gnus-tmp-score-char)
-(defvar gnus-tmp-indentation)
-(defvar gnus-tmp-opening-bracket)
-(defvar gnus-tmp-lines)
-(defvar gnus-tmp-name)
-(defvar gnus-tmp-closing-bracket)
-(defvar gnus-tmp-subject-or-nil)
-(defvar gnus-check-before-posting)
-(defvar gnus-mouse-face)
-(defvar gnus-group-buffer)
-
-(defun gnus-ems-redefine ()
- (cond
- ((featurep 'xemacs)
- (gnus-xmas-redefine))
-
- ((featurep 'mule)
- ;; Mule and new Emacs definitions
-
- ;; [Note] Now there are three kinds of mule implementations,
- ;; original MULE, XEmacs/mule and Emacs 20+ including
- ;; MULE features. Unfortunately these APIs are different. In
- ;; particular, Emacs (including original Mule) and XEmacs are
- ;; quite different. However, this version of Gnus doesn't support
- ;; anything other than XEmacs 20+ and Emacs 20.3+.
-
- ;; Predicates to check are following:
- ;; (boundp 'MULE) is t only if Mule (original; anything older than
- ;; Mule 2.3) is running.
- ;; (featurep 'mule) is t when other mule variants are running.
-
- ;; It is possible to detect XEmacs/mule by (featurep 'mule) and
- ;; (featurep 'xemacs). In this case, the implementation for
- ;; XEmacs/mule may be shareable between XEmacs and XEmacs/mule.
-
- (defvar gnus-summary-display-table nil
- "Display table used in summary mode buffers.")
- (defalias 'gnus-max-width-function 'gnus-mule-max-width-function)
-
- (when (boundp 'gnus-check-before-posting)
- (setq gnus-check-before-posting
- (delq 'long-lines
- (delq 'control-chars gnus-check-before-posting))))
-
- (defun gnus-summary-line-format-spec ()
- (insert gnus-tmp-unread gnus-tmp-replied
- gnus-tmp-score-char gnus-tmp-indentation)
- (put-text-property
- (point)
- (progn
- (insert
- gnus-tmp-opening-bracket
- (format "%4d: %-20s"
- gnus-tmp-lines
- (if (> (length gnus-tmp-name) 20)
- (truncate-string-to-width gnus-tmp-name 20)
- gnus-tmp-name))
- gnus-tmp-closing-bracket)
- (point))
- gnus-mouse-face-prop gnus-mouse-face)
- (insert " " gnus-tmp-subject-or-nil "\n")))))
-
-;; Clone of `appt-select-lowest-window' in appt.el.
-(defun gnus-select-lowest-window ()
-"Select the lowest window on the frame."
- (let ((lowest-window (selected-window))
- (bottom-edge (nth 3 (window-edges))))
- (walk-windows (lambda (w)
- (let ((next-bottom-edge (nth 3 (window-edges w))))
- (when (< bottom-edge next-bottom-edge)
- (setq bottom-edge next-bottom-edge
- lowest-window w)))))
- (select-window lowest-window)))
-
-(defun gnus-region-active-p ()
- "Say whether the region is active."
- (and (boundp 'transient-mark-mode)
- transient-mark-mode
- (boundp 'mark-active)
- mark-active))
-
-(defun gnus-mark-active-p ()
- "Non-nil means the mark and region are currently active in this buffer."
- mark-active) ; aliased to region-exists-p in XEmacs.
-
-(autoload 'gnus-alive-p "gnus-util")
-(autoload 'mm-disable-multibyte "mm-util")
-
-;;; Image functions.
-
-(defun gnus-image-type-available-p (type)
- (and (fboundp 'image-type-available-p)
- (if (fboundp 'display-images-p)
- (display-images-p)
- t)
- (image-type-available-p type)))
-
-(defun gnus-create-image (file &optional type data-p &rest props)
- (let ((face (plist-get props :face)))
- (when face
- (setq props (plist-put props :foreground (face-foreground face)))
- (setq props (plist-put props :background (face-background face))))
- (ignore-errors
- (apply 'create-image file type data-p props))))
-
-(defun gnus-put-image (glyph &optional string category)
- (let ((point (point)))
- (insert-image glyph (or string " "))
- (put-text-property point (point) 'gnus-image-category category)
- (unless string
- (put-text-property (1- (point)) (point)
- 'gnus-image-text-deletable t))
- glyph))
-
-(defun gnus-remove-image (image &optional category)
- "Remove the image matching IMAGE and CATEGORY found first."
- (let ((start (point-min))
- val end)
- (while (and (not end)
- (or (setq val (get-text-property start 'display))
- (and (setq start
- (next-single-property-change start 'display))
- (setq val (get-text-property start 'display)))))
- (setq end (or (next-single-property-change start 'display)
- (point-max)))
- (if (and (equal val image)
- (equal (get-text-property start 'gnus-image-category)
- category))
- (progn
- (put-text-property start end 'display nil)
- (when (get-text-property start 'gnus-image-text-deletable)
- (delete-region start end)))
- (unless (= end (point-max))
- (setq start end
- end nil))))))
-
-(defmacro gnus-string-mark-left-to-right (string)
- (if (fboundp 'bidi-string-mark-left-to-right)
- `(bidi-string-mark-left-to-right ,string)
- string))
-
-(eval-and-compile
- ;; XEmacs does not have window-inside-pixel-edges
- (defalias 'gnus-window-inside-pixel-edges
- (if (fboundp 'window-inside-pixel-edges)
- 'window-inside-pixel-edges
- 'window-pixel-edges))
-
- (if (or (featurep 'emacs) (fboundp 'set-process-plist))
- (progn ; these exist since Emacs 22.1
- (defalias 'gnus-set-process-plist 'set-process-plist)
- (defalias 'gnus-process-plist 'process-plist)
- (defalias 'gnus-process-get 'process-get)
- (defalias 'gnus-process-put 'process-put))
- (defun gnus-set-process-plist (process plist)
- "Replace the plist of PROCESS with PLIST. Returns PLIST."
- (put 'gnus-process-plist-internal process plist))
-
- (defun gnus-process-plist (process)
- "Return the plist of PROCESS."
- ;; This form works but can't prevent the plist data from
- ;; growing infinitely.
- ;;(get 'gnus-process-plist-internal process)
- (let* ((plist (symbol-plist 'gnus-process-plist-internal))
- (tem (memq process plist)))
- (prog1
- (cadr tem)
- ;; Remove it from the plist data.
- (when tem
- (if (eq plist tem)
- (progn
- (setcar plist (caddr plist))
- (setcdr plist (or (cdddr plist) '(nil))))
- (setcdr (nthcdr (- (length plist) (length tem) 1) plist)
- (cddr tem)))))))
-
- (defun gnus-process-get (process propname)
- "Return the value of PROCESS' PROPNAME property.
-This is the last value stored with `(gnus-process-put PROCESS PROPNAME VALUE)'."
- (plist-get (gnus-process-plist process) propname))
-
- (defun gnus-process-put (process propname value)
- "Change PROCESS' PROPNAME property to VALUE.
-It can be retrieved with `(gnus-process-get PROCESS PROPNAME)'."
- (gnus-set-process-plist process
- (plist-put (gnus-process-plist process)
- propname value)))))
-
-(provide 'gnus-ems)
-
-;;; gnus-ems.el ends here
diff --git a/lisp/gnus/gnus-fun.el b/lisp/gnus/gnus-fun.el
index a6b2730023..0ffd243de0 100644
--- a/lisp/gnus/gnus-fun.el
+++ b/lisp/gnus/gnus-fun.el
@@ -28,14 +28,13 @@
(require 'cl))
(require 'mm-util)
-(require 'gnus-ems)
(require 'gnus-util)
(require 'gnus)
(defvar gnus-face-properties-alist)
(defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory)
- "*Directory where X-Face PBM files are stored."
+ "Directory where X-Face PBM files are stored."
:version "22.1"
:group 'gnus-fun
:type 'directory)
@@ -47,7 +46,7 @@
:type '(choice (const nil) string))
(defcustom gnus-face-directory (expand-file-name "faces" gnus-directory)
- "*Directory where Face PNG files are stored."
+ "Directory where Face PNG files are stored."
:version "25.1"
:group 'gnus-fun
:type 'directory)
diff --git a/lisp/gnus/gnus-gravatar.el b/lisp/gnus/gnus-gravatar.el
index de7203d9d1..89be8640c5 100644
--- a/lisp/gnus/gnus-gravatar.el
+++ b/lisp/gnus/gnus-gravatar.el
@@ -94,8 +94,9 @@ Set image category to CATEGORY."
(mail-address (cadr address)))
(when (if real-name
(re-search-forward
- (concat (gnus-replace-in-string
- (regexp-quote real-name) "[\t ]+" "[\t\n ]+")
+ (concat (replace-regexp-in-string
+ "[\t ]+" "[\t\n ]+"
+ (regexp-quote real-name))
"\\|"
(regexp-quote mail-address))
nil t)
@@ -110,8 +111,7 @@ Set image category to CATEGORY."
;; another mail with the same someaddress.
(unless (memq 'gnus-gravatar (text-properties-at (point)))
(let ((point (point)))
- (unless (featurep 'xemacs)
- (setq gravatar (append gravatar gnus-gravatar-properties)))
+ (setq gravatar (append gravatar gnus-gravatar-properties))
(gnus-put-image gravatar (buffer-substring (point) (1+ point)) category)
(put-text-property point (point) 'gnus-gravatar address)
(gnus-add-wash-type category)
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 1cd16a4e04..828805384c 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -38,7 +38,6 @@
(require 'gnus-undo)
(require 'gmm-utils)
(require 'time-date)
-(require 'gnus-ems)
(eval-when-compile
(require 'mm-url)
@@ -52,13 +51,16 @@
(autoload 'gnus-group-make-nnir-group "nnir")
+(autoload 'gnus-cloud-upload-all-data "gnus-cloud")
+(autoload 'gnus-cloud-download-all-data "gnus-cloud")
+
(defcustom gnus-no-groups-message "No news is good news"
- "*Message displayed by Gnus when no groups are available."
+ "Message displayed by Gnus when no groups are available."
:group 'gnus-start
:type 'string)
(defcustom gnus-keep-same-level nil
- "*Non-nil means that the next newsgroup after the current will be on the same level.
+ "Non-nil means that the next newsgroup after the current will be on the same level.
When you type, for instance, `n' after reading the last article in the
current newsgroup, you will go to the next newsgroup. If this variable
is nil, the next newsgroup will be the next from the group
@@ -75,19 +77,19 @@ with the best level."
(sexp :tag "other" t)))
(defcustom gnus-group-goto-unread t
- "*If non-nil, movement commands will go to the next unread and subscribed group."
+ "If non-nil, movement commands will go to the next unread and subscribed group."
:link '(custom-manual "(gnus)Group Maneuvering")
:group 'gnus-group-various
:type 'boolean)
(defcustom gnus-goto-next-group-when-activating t
- "*If non-nil, the \\<gnus-group-mode-map>\\[gnus-group-get-new-news-this-group] command will advance point to the next group."
+ "If non-nil, the \\<gnus-group-mode-map>\\[gnus-group-get-new-news-this-group] command will advance point to the next group."
:link '(custom-manual "(gnus)Scanning New Messages")
:group 'gnus-group-various
:type 'boolean)
(defcustom gnus-permanently-visible-groups nil
- "*Regexp to match groups that should always be listed in the group buffer.
+ "Regexp to match groups that should always be listed in the group buffer.
This means that they will still be listed even when there are no
unread articles in the groups.
@@ -108,7 +110,7 @@ effective only when emacs-w3m renders html articles, i.e., in the case
(const nil)))
(defcustom gnus-list-groups-with-ticked-articles t
- "*If non-nil, list groups that have only ticked articles.
+ "If non-nil, list groups that have only ticked articles.
If nil, only list groups that have unread articles."
:group 'gnus-group-listing
:type 'boolean)
@@ -121,13 +123,13 @@ Ignored if `gnus-group-use-permanent-levels' is non-nil."
(function :tag "Function returning level")))
(defcustom gnus-group-list-inactive-groups t
- "*If non-nil, inactive groups will be listed."
+ "If non-nil, inactive groups will be listed."
:group 'gnus-group-listing
:group 'gnus-group-levels
:type 'boolean)
(defcustom gnus-group-sort-function 'gnus-group-sort-by-alphabet
- "*Function used for sorting the group buffer.
+ "Function used for sorting the group buffer.
This function will be called with group info entries as the arguments
for the groups to be sorted. Pre-made functions include
`gnus-group-sort-by-alphabet', `gnus-group-sort-by-real-name',
@@ -156,7 +158,7 @@ list."
(function :tag "other" nil))))
(defcustom gnus-group-line-format "%M\ %S\ %p\ %P\ %5y:%B%(%g%)\n"
- "*Format of group lines.
+ "Format of group lines.
It works along the same lines as a normal formatting string,
with some simple extensions.
@@ -214,7 +216,7 @@ See Info node `(gnus)Formatting Variables'."
:type 'string)
(defcustom gnus-group-mode-line-format "Gnus: %%b {%M\ %:%S}"
- "*The format specification for the group mode line.
+ "The format specification for the group mode line.
It works along the same lines as a normal formatting string,
with some simple extensions:
@@ -224,11 +226,6 @@ with some simple extensions:
:group 'gnus-group-visual
:type 'string)
-;; Extracted from gnus-xmas-redefine in order to preserve user settings
-(when (featurep 'xemacs)
- (add-hook 'gnus-group-mode-hook 'gnus-xmas-group-menu-add)
- (add-hook 'gnus-group-mode-hook 'gnus-xmas-setup-group-toolbar))
-
(defcustom gnus-group-menu-hook nil
"Hook run after the creation of the group mode menu."
:group 'gnus-group-various
@@ -246,7 +243,7 @@ with some simple extensions:
:type 'hook)
(defcustom gnus-group-prepare-function 'gnus-group-prepare-flat
- "*A function that is called to generate the group buffer.
+ "A function that is called to generate the group buffer.
The function is called with three arguments: The first is a number;
all group with a level less or equal to that number should be listed,
if the second is non-nil, empty groups should also be displayed. If
@@ -303,7 +300,7 @@ If you want to modify the group buffer, you can use this hook."
(unless file
(error "Couldn't find doc group"))
file))))))
- "*Alist of useful group-server pairs."
+ "Alist of useful group-server pairs."
:group 'gnus-group-listing
:type '(repeat (list (string :tag "Description")
(string :tag "Name")
@@ -356,7 +353,7 @@ If you want to modify the group buffer, you can use this hook."
gnus-group-news-low-empty)
(t .
gnus-group-news-low))
- "*Controls the highlighting of group buffer lines.
+ "Controls the highlighting of group buffer lines.
Below is a list of `Form'/`Face' pairs. When deciding how a
particular group line should be displayed, each form is
@@ -391,7 +388,7 @@ ticked: The number of ticked articles."
(defcustom gnus-group-icon-list
nil
- "*Controls the insertion of icons into group buffer lines.
+ "Controls the insertion of icons into group buffer lines.
Below is a list of `Form'/`File' pairs. When deciding how a
particular group line should be displayed, each form is evaluated.
@@ -427,8 +424,7 @@ For example:
:type '(repeat (cons (sexp :tag "Method") (symbol :tag "Charset"))))
(defcustom gnus-group-name-charset-group-alist
- (if (or (and (fboundp 'find-coding-system) (find-coding-system 'utf-8))
- (mm-coding-system-p 'utf-8))
+ (if (mm-coding-system-p 'utf-8)
'((".*" . utf-8))
nil)
"Alist of group regexp and the charset for group names.
@@ -455,10 +451,12 @@ used when no prefix argument is given to `gnus-group-jump-to-group'."
(repeat (cons (integer :tag "Argument")
(string :tag "Prompt string")))))
-(defvar gnus-group-listing-limit 1000
- "*A limit of the number of groups when listing.
+(defcustom gnus-group-listing-limit 1000
+ "A limit of the number of groups when listing.
If the number of groups is larger than the limit, list them in a
-simple manner.")
+simple manner."
+ :group 'gnus-group-listing
+ :type 'integer)
;;; Internal variables
@@ -535,10 +533,7 @@ simple manner.")
(?O gnus-tmp-moderated-string ?s)
(?p gnus-tmp-process-marked ?c)
(?s gnus-tmp-news-server ?s)
- (?n ,(if (featurep 'xemacs)
- '(symbol-name gnus-tmp-news-method)
- 'gnus-tmp-news-method)
- ?s)
+ (?n gnus-tmp-news-method ?s)
(?P gnus-group-indentation ?s)
(?E gnus-tmp-group-icon ?s)
(?B gnus-tmp-summary-live ?c)
@@ -632,8 +627,8 @@ simple manner.")
"\C-c\C-i" gnus-info-find-node
"\M-e" gnus-group-edit-group-method
"^" gnus-group-enter-server-mode
- gnus-mouse-2 gnus-mouse-pick-group
- [follow-link] mouse-face
+ [mouse-2] gnus-mouse-pick-group
+ [follow-link] 'mouse-face
"<" beginning-of-buffer
">" end-of-buffer
"\C-c\C-b" gnus-bug
@@ -644,6 +639,12 @@ simple manner.")
"#" gnus-group-mark-group
"\M-#" gnus-group-unmark-group)
+(gnus-define-keys (gnus-group-cloud-map "~" gnus-group-mode-map)
+ "u" gnus-cloud-upload-all-data
+ "~" gnus-cloud-upload-all-data
+ "d" gnus-cloud-download-all-data
+ "\r" gnus-cloud-download-all-data)
+
(gnus-define-keys (gnus-group-mark-map "M" gnus-group-mode-map)
"m" gnus-group-mark-group
"u" gnus-group-unmark-group
@@ -798,32 +799,26 @@ simple manner.")
["Catch up" gnus-group-catchup-current
:included (not (gnus-topic-mode-p))
:active (gnus-group-group-name)
- ,@(if (featurep 'xemacs) nil
- '(:help "Mark unread articles in the current group as read"))]
+ :help "Mark unread articles in the current group as read"]
["Catch up " gnus-topic-catchup-articles
:included (gnus-topic-mode-p)
- ,@(if (featurep 'xemacs) nil
- '(:help "Mark unread articles in the current group or topic as read"))]
+ :help "Mark unread articles in the current group or topic as read"]
["Catch up all articles" gnus-group-catchup-current-all
(gnus-group-group-name)]
["Check for new articles" gnus-group-get-new-news-this-group
:included (not (gnus-topic-mode-p))
:active (gnus-group-group-name)
- ,@(if (featurep 'xemacs) nil
- '(:help "Check for new messages in current group"))]
+ :help "Check for new messages in current group"]
["Check for new articles " gnus-topic-get-new-news-this-topic
:included (gnus-topic-mode-p)
- ,@(if (featurep 'xemacs) nil
- '(:help "Check for new messages in current group or topic"))]
+ :help "Check for new messages in current group or topic"]
["Toggle subscription" gnus-group-unsubscribe-current-group
(gnus-group-group-name)]
["Kill" gnus-group-kill-group :active (gnus-group-group-name)
- ,@(if (featurep 'xemacs) nil
- '(:help "Kill (remove) current group"))]
+ :help "Kill (remove) current group"]
["Yank" gnus-group-yank-group gnus-list-of-killed-groups]
["Describe" gnus-group-describe-group :active (gnus-group-group-name)
- ,@(if (featurep 'xemacs) nil
- '(:help "Display description of the current group"))]
+ :help "Display description of the current group"]
;; Actually one should check, if any of the marked groups gives t for
;; (gnus-check-backend-function 'request-expire-articles ...)
["Expire articles" gnus-group-expire-articles
@@ -905,14 +900,14 @@ simple manner.")
(memq (gnus-group-group-name) gnus-group-marked))]
["Unmark all" gnus-group-unmark-all-groups gnus-group-marked]
["Mark regexp..." gnus-group-mark-regexp t]
- ["Mark region" gnus-group-mark-region :active (gnus-mark-active-p)]
+ ["Mark region" gnus-group-mark-region :active mark-active]
["Mark buffer" gnus-group-mark-buffer t]
["Execute command" gnus-group-universal-argument
(or gnus-group-marked (gnus-group-group-name))])
("Subscribe"
["Subscribe to a group..." gnus-group-unsubscribe-group t]
["Kill all newsgroups in region" gnus-group-kill-region
- :active (gnus-mark-active-p)]
+ :active mark-active]
["Kill all zombie groups" gnus-group-kill-all-zombies
gnus-zombie-list]
["Kill all groups on level..." gnus-group-kill-level t])
@@ -960,13 +955,9 @@ simple manner.")
["Send a message (mail or news)" gnus-group-post-news t]
["Create a local message" gnus-group-news t]
["Check for new news" gnus-group-get-new-news
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Get newly arrived articles"))
- ]
+ :help "Get newly arrived articles"]
["Send queued messages" gnus-delay-send-queue
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Send all messages that are scheduled to be sent now"))
- ]
+ :help "Send all messages that are scheduled to be sent now"]
["Activate all groups" gnus-activate-all-groups t]
["Restart Gnus" gnus-group-restart t]
["Read init file" gnus-group-read-init-file t]
@@ -981,9 +972,7 @@ simple manner.")
["Flush score cache" gnus-score-flush-cache t]
["Toggle topics" gnus-topic-mode t]
["Send a bug report" gnus-bug t]
- ["Exit from Gnus" gnus-group-exit
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Quit reading news"))]
+ ["Exit from Gnus" gnus-group-exit :help "Quit reading news"]
["Exit without saving" gnus-group-quit t]))
(gnus-run-hooks 'gnus-group-menu-hook)))
@@ -1101,18 +1090,14 @@ See `gmm-tool-bar-from-list' for the format of the list."
(defun gnus-group-make-tool-bar (&optional force)
"Make a group mode tool bar from `gnus-group-tool-bar'.
When FORCE, rebuild the tool bar."
- (when (and (not (featurep 'xemacs))
- (boundp 'tool-bar-mode)
+ (when (and (boundp 'tool-bar-mode)
tool-bar-mode
(display-graphic-p)
(or (not gnus-group-tool-bar-map) force))
(let* ((load-path
- (gmm-image-load-path-for-library "gnus"
- "gnus/toggle-subscription.xpm"
- nil t))
- (image-load-path (cons (car load-path)
- (when (boundp 'image-load-path)
- image-load-path)))
+ (image-load-path-for-library
+ "gnus" "gnus/toggle-subscription.xpm" nil t))
+ (image-load-path (cons (car load-path) image-load-path))
(map (gmm-tool-bar-from-list gnus-group-tool-bar
gnus-group-tool-bar-zap-list
'gnus-group-mode-map)))
@@ -1167,7 +1152,7 @@ The following commands are available:
(goto-char (point-min))
(setq gnus-group-mark-positions
(list (cons 'process (and (search-forward
- (mm-string-to-multibyte "\200") nil t)
+ (string-to-multibyte "\200") nil t)
(- (point) (point-min) 1))))))))
(defun gnus-mouse-pick-group (e)
@@ -1229,8 +1214,8 @@ The following commands are available:
(defun gnus-group-name-decode (string charset)
;; Fixme: Don't decode in unibyte mode.
- (if (and string charset (featurep 'mule))
- (mm-decode-coding-string string charset)
+ (if (and string charset)
+ (decode-coding-string string charset)
string))
(defun gnus-group-decoded-name (string)
@@ -1394,7 +1379,7 @@ if it is a string, only list groups matching REGEXP."
(when (or gnus-group-listed-groups
(and (>= level gnus-level-killed) (<= lowest gnus-level-killed)))
(gnus-group-prepare-flat-list-dead
- (gnus-union
+ (cl-union
not-in-list
(setq gnus-killed-list (sort gnus-killed-list 'string<))
:test 'equal)
@@ -1418,7 +1403,7 @@ if it is a string, only list groups matching REGEXP."
(or (not regexp)
(and (stringp regexp) (string-match regexp group))
(and (functionp regexp) (funcall regexp group))))
- (gnus-add-text-properties
+ (add-text-properties
(point) (prog1 (1+ (point))
(insert " " mark " *: "
(gnus-group-decoded-name group)
@@ -1510,13 +1495,10 @@ if it is a string, only list groups matching REGEXP."
;; Date: Mon, 23 Jan 2006 19:59:13 +0100
;; Message-ID: <v9acdmrcse.fsf@marauder.physik.uni-ulm.de>
-(defcustom gnus-group-update-tool-bar
- (and (not (featurep 'xemacs))
- (boundp 'tool-bar-mode)
- tool-bar-mode
- ;; Using `redraw-frame' (see `gnus-tool-bar-update') in Emacs might
- ;; be confusing, so maybe we shouldn't call it by default.
- (fboundp 'force-window-update))
+;; Using `redraw-frame' (see `gnus-tool-bar-update') in Emacs might
+;; be confusing, so maybe we shouldn't call it by default.
+(defcustom gnus-group-update-tool-bar (and (boundp 'tool-bar-mode)
+ tool-bar-mode)
"Force updating the group buffer tool bar."
:group 'gnus-group
:version "22.1"
@@ -1597,7 +1579,7 @@ if it is a string, only list groups matching REGEXP."
gnus-tmp-header) ; passed as parameter to user-funcs.
(beginning-of-line)
(setq beg (point))
- (gnus-add-text-properties
+ (add-text-properties
(point)
(prog1 (1+ (point))
;; Insert the text.
@@ -1625,58 +1607,42 @@ if it is a string, only list groups matching REGEXP."
(progn
(unless (bound-and-true-p cursor-sensor-mode)
(cursor-sensor-mode 1))
- (gnus-put-text-property beg end 'cursor-sensor-functions
+ (put-text-property beg end 'cursor-sensor-functions
'(gnus-tool-bar-update)))
- (gnus-put-text-property beg end 'point-entered
+ (put-text-property beg end 'point-entered
#'gnus-tool-bar-update)
- (gnus-put-text-property beg end 'point-left
+ (put-text-property beg end 'point-left
#'gnus-tool-bar-update))))
(defun gnus-group-update-eval-form (group list)
"Eval `car' of each element of LIST, and return the first that return t.
Some value are bound so the form can use them."
- (defvar group-age) (defvar ticked) (defvar score) (defvar level)
- (defvar mailp) (defvar total) (defvar unread)
(when list
(let* ((entry (gnus-group-entry group))
- (unread (if (numberp (car entry)) (car entry) 0))
(active (gnus-active group))
- (total (if active (1+ (- (cdr active) (car active))) 0))
(info (nth 2 entry))
- (method (inline (gnus-server-get-method group (gnus-info-method info))))
+ (method (inline (gnus-server-get-method
+ group (gnus-info-method info))))
(marked (gnus-info-marks info))
- (mailp (apply 'append
- (mapcar
- (lambda (x)
- (memq x (assoc (symbol-name
- (car (or method gnus-select-method)))
- gnus-valid-select-methods)))
- '(mail post-mail))))
- (level (or (gnus-info-level info) gnus-level-killed))
- (score (or (gnus-info-score info) 0))
- (ticked (gnus-range-length (cdr (assq 'tick marked))))
- (group-age (gnus-group-timestamp-delta group)))
- ;; FIXME: http://thread.gmane.org/gmane.emacs.gnus.general/65451/focus=65465
- ;; ======================================================================
- ;; From: Richard Stallman
- ;; Subject: Re: Rewriting gnus-group-highlight-line (was: [...])
- ;; Cc: ding@gnus.org
- ;; Date: Sat, 27 Oct 2007 19:41:20 -0400
- ;; Message-ID: <E1IlvHM-0006TS-7t@fencepost.gnu.org>
- ;;
- ;; [...]
- ;; The kludge is that the alist elements contain expressions that refer
- ;; to local variables with short names. Perhaps write your own tiny
- ;; evaluator that handles just `and', `or', and numeric comparisons
- ;; and just a few specific variables.
- ;; ======================================================================
- ;;
- ;; Similar for other evaluated variables. Grep for risky-local-variable
- ;; to find them! -- rsteib
- ;;
- ;; Eval the cars of the lists until we find a match.
+ (env
+ (list
+ (cons 'unread (if (numberp (car entry)) (car entry) 0))
+ (cons 'total (if active (1+ (- (cdr active) (car active))) 0))
+ (cons 'mailp (apply
+ 'append
+ (mapcar
+ (lambda (x)
+ (memq x (assoc
+ (symbol-name
+ (car (or method gnus-select-method)))
+ gnus-valid-select-methods)))
+ '(mail post-mail))))
+ (cons 'level (or (gnus-info-level info) gnus-level-killed))
+ (cons 'score (or (gnus-info-score info) 0))
+ (cons 'ticked (gnus-range-length (cdr (assq 'tick marked))))
+ (cons 'group-age (gnus-group-timestamp-delta group)))))
(while (and list
- (not (eval (caar list))))
+ (not (eval (caar list) env)))
(setq list (cdr list)))
list)))
@@ -1687,12 +1653,12 @@ and ends at END."
(let ((face (cdar (gnus-group-update-eval-form
group
gnus-group-highlight))))
- (unless (eq face (gnus-get-text-property-excluding-characters-with-faces beg 'face))
+ (unless (eq face (gnus-get-text-property-excluding-characters-with-faces
+ beg 'face))
(let ((inhibit-read-only t))
(gnus-put-text-property-excluding-characters-with-faces
beg end 'face
- (if (boundp face) (symbol-value face) face)))
- (gnus-extent-start-open beg))))
+ (if (boundp face) (symbol-value face) face))))))
(defun gnus-group-get-icon (group)
"Return an icon for GROUP according to `gnus-group-icon-list'."
@@ -1800,8 +1766,7 @@ already. If INFO-UNCHANGED is non-nil, dribble buffer is not updated."
(mode-string (eval gformat)))
;; Say whether the dribble buffer has been modified.
(setq mode-line-modified
- (if modified (car gnus-mode-line-modified)
- (cdr gnus-mode-line-modified)))
+ (if modified "**" "--"))
;; If the line is too long, we chop it off.
(when (> (length mode-string) max-len)
(setq mode-string (substring mode-string 0 (- max-len 4))))
@@ -2028,7 +1993,7 @@ Take into consideration N (the prefix) and the list of marked groups."
(setq n (1- n))
(gnus-group-next-group way)))
(nreverse groups)))
- ((and (gnus-region-active-p) (mark))
+ ((and transient-mark-mode mark-active (mark))
;; Work on the region between point and mark.
(let ((max (max (point) (mark)))
groups)
@@ -2240,9 +2205,9 @@ if it is not a list."
(member group (mapcar 'symbol-name collection))
(symbol-value (intern-soft group collection)))
(setq group
- (mm-encode-coding-string
+ (encode-coding-string
group (gnus-group-name-charset nil group))))
- (gnus-replace-in-string group "\n" "")))
+ (replace-regexp-in-string "\n" "" group)))
;;;###autoload
(defun gnus-fetch-group (group &optional articles)
@@ -2402,7 +2367,7 @@ specified by `gnus-gmane-group-download-format'."
(unless range (setq range 500))
(when (< range 1)
(error "Invalid range: %s" range))
- (let ((tmpfile (mm-make-temp-file
+ (let ((tmpfile (make-temp-file
(format "%s.start-%s.range-%s." group start range)))
(gnus-thread-sort-functions '(gnus-thread-sort-by-number)))
(with-temp-file tmpfile
@@ -2488,21 +2453,25 @@ the bug number, and browsing the URL must return mbox output."
(setq ids (string-to-number ids)))
(unless (listp ids)
(setq ids (list ids)))
- (let ((tmpfile (mm-make-temp-file "gnus-temp-group-")))
+ (let ((tmpfile (make-temp-file "gnus-temp-group-")))
(let ((coding-system-for-write 'binary)
(coding-system-for-read 'binary))
(with-temp-file tmpfile
(mm-disable-multibyte)
(dolist (id ids)
- (url-insert-file-contents (format mbox-url id)))
+ (let ((file (format "~/.emacs.d/debbugs-cache/%s" id)))
+ (if (and (not gnus-plugged)
+ (file-exists-p file))
+ (insert-file-contents file)
+ (url-insert-file-contents (format mbox-url id)))))
(goto-char (point-min))
;; Add the debbugs address so that we can respond to reports easily.
(while (re-search-forward "^To: " nil t)
(end-of-line)
(insert (format ", %s@%s" (car ids)
- (gnus-replace-in-string
- (gnus-replace-in-string mbox-url "^http://" "")
- "/.*$" ""))))))
+ (replace-regexp-in-string
+ "/.*$" ""
+ (replace-regexp-in-string "^http://" "" mbox-url)))))))
(gnus-group-read-ephemeral-group
(format "nndoc+ephemeral:bug#%s"
(mapconcat 'number-to-string ids ","))
@@ -2762,7 +2731,7 @@ server."
(when (stringp method)
(setq method (or (gnus-server-to-method method) method)))
(unless encoded
- (setq name (mm-encode-coding-string
+ (setq name (encode-coding-string
name
(gnus-group-name-charset method name))))
(let* ((meth (gnus-method-simplify
@@ -2880,7 +2849,7 @@ and NEW-NAME will be prompted for."
"Rename group to: "
(gnus-group-real-name (gnus-group-decoded-name group)))
method (gnus-info-method (gnus-get-info group)))
- (list group (mm-encode-coding-string
+ (list group (encode-coding-string
new-name
(gnus-group-name-charset
method
@@ -2951,7 +2920,7 @@ and NEW-NAME will be prompted for."
(gnus-info-params info))
(t info))
;; The proper documentation.
- (gnus-format-message
+ (format-message
"Editing the %s for `%s'."
(cond
((eq part 'method) "select method")
@@ -3094,9 +3063,9 @@ If called with a prefix argument, ask for the file type."
(list 'nndoc-address file)
(list 'nndoc-article-type (or type 'guess))))
(coding (gnus-group-name-charset method name)))
- (setcar (cdr method) (mm-encode-coding-string file coding))
+ (setcar (cdr method) (encode-coding-string file coding))
(gnus-group-make-group
- (mm-encode-coding-string (gnus-group-real-name name) coding)
+ (encode-coding-string (gnus-group-real-name name) coding)
method nil nil t)))
(defvar nnweb-type-definition)
@@ -3173,8 +3142,8 @@ If there is, use Gnus to create an nnrss group"
(coding (gnus-group-name-charset '(nnrss "") title)))
(when coding
;; Unify non-ASCII text.
- (setq title (mm-decode-coding-string
- (mm-encode-coding-string title coding)
+ (setq title (decode-coding-string
+ (encode-coding-string title coding)
coding)))
(gnus-group-make-group title '(nnrss ""))
(push (list title href desc) nnrss-group-alist)
@@ -3279,7 +3248,7 @@ mail messages or news articles in files that have numeric names."
(error "%s is not an nnimap group" group))
(unless (setq acl (nnimap-acl-get mailbox (cadr method)))
(error "Server does not support ACL's"))
- (gnus-edit-form acl (gnus-format-message "\
+ (gnus-edit-form acl (format-message "\
Editing the access control list for `%s'.
An access control list is a list of (identifier . rights) elements.
@@ -4040,7 +4009,7 @@ entail asking the server for the groups."
(erase-buffer)
(while groups
(setq group (pop groups))
- (gnus-add-text-properties
+ (add-text-properties
(point) (prog1 (1+ (point))
(insert " *: "
(gnus-group-decoded-name group)
@@ -4162,22 +4131,23 @@ If DONT-SCAN is non-nil, scan non-activated groups as well."
(gnus-read-all-descriptions-files)))
(error "Couldn't request descriptions file"))
(let ((buffer-read-only nil)
- b)
- (erase-buffer)
+ b groups)
(mapatoms
(lambda (group)
- (setq b (point))
- (let ((charset (gnus-group-name-charset nil (symbol-name group))))
- (insert (format " *: %-20s %s\n"
- (gnus-group-name-decode
- (symbol-name group) charset)
- (gnus-group-name-decode
- (symbol-value group) charset))))
- (gnus-add-text-properties
- b (1+ b) (list 'gnus-group group
- 'gnus-unread t 'gnus-marked nil
- 'gnus-level (1+ gnus-level-subscribed))))
+ (push (symbol-name group) groups))
gnus-description-hashtb)
+ (setq groups (sort groups 'string<))
+ (erase-buffer)
+ (dolist (group groups)
+ (setq b (point))
+ (let ((charset (gnus-group-name-charset nil group)))
+ (insert (format " *: %-20s %s\n"
+ (gnus-group-name-decode group charset)
+ (gnus-group-name-decode group charset))))
+ (add-text-properties
+ b (1+ b) (list 'gnus-group (intern group gnus-description-hashtb)
+ 'gnus-unread t 'gnus-marked nil
+ 'gnus-level (1+ gnus-level-subscribed))))
(goto-char (point-min))
(gnus-group-position-point)))
@@ -4533,7 +4503,7 @@ and the second element is the address."
(if force
(if (null articles)
(setcar (nthcdr 3 info)
- (gnus-delete-alist type (car marked)))
+ (assq-delete-all type (car marked)))
(setcdr m (gnus-compress-sequence articles t)))
(setcdr m (gnus-compress-sequence
(sort (nconc (gnus-uncompress-range (cdr m))
@@ -4571,7 +4541,7 @@ or `gnus-group-catchup-group-hook'."
"Return the offset in seconds from the timestamp for GROUP to the current time, as a floating point number."
(let* ((time (or (gnus-group-timestamp group)
(list 0 0)))
- (delta (subtract-time (current-time) time)))
+ (delta (time-subtract (current-time) time)))
(+ (* (nth 0 delta) 65536.0)
(nth 1 delta))))
@@ -4675,14 +4645,10 @@ This command may read the active file."
(gnus-group-list-mode gnus-group-list-mode) ;; Save it.
func)
(push last-command-event unread-command-events)
- (if (featurep 'xemacs)
- (push (make-event 'key-press '(key ?A)) unread-command-events)
- (push ?A unread-command-events))
+ (push ?A unread-command-events)
(let (gnus-pick-mode keys)
- (setq keys (if (featurep 'xemacs)
- (events-to-keys (read-key-sequence nil))
- (read-key-sequence nil)))
- (setq func (lookup-key (current-local-map) keys)))
+ (setq keys (read-key-sequence nil)
+ func (lookup-key (current-local-map) keys)))
(if (or (not func)
(numberp func))
(ding)
diff --git a/lisp/gnus/gnus-html.el b/lisp/gnus/gnus-html.el
index 884b40e934..afbb845a0d 100644
--- a/lisp/gnus/gnus-html.el
+++ b/lisp/gnus/gnus-html.el
@@ -39,7 +39,8 @@
(require 'xml)
(require 'browse-url)
(require 'mm-util)
-(eval-and-compile (unless (featurep 'xemacs) (require 'help-fns)))
+(require 'help-fns)
+(require 'url-queue)
(defcustom gnus-html-image-cache-ttl (days-to-time 7)
"Time used to determine if we should use images from the cache."
@@ -88,27 +89,9 @@ fit these criteria."
(define-key map [tab] 'widget-forward)
map))
-(eval-and-compile
- (defalias 'gnus-html-encode-url-chars
- (if (fboundp 'browse-url-url-encode-chars)
- 'browse-url-url-encode-chars
- (lambda (text chars)
- "URL-encode the chars in TEXT that match CHARS.
-CHARS is a regexp-like character alternative (e.g., \"[)$]\")."
- (let ((encoded-text (copy-sequence text))
- (s 0))
- (while (setq s (string-match chars encoded-text s))
- (setq encoded-text
- (replace-match (format "%%%x"
- (string-to-char
- (match-string 0 encoded-text)))
- t t encoded-text)
- s (1+ s)))
- encoded-text)))))
-
(defun gnus-html-encode-url (url)
"Encode URL."
- (gnus-html-encode-url-chars url "[)$ ]"))
+ (browse-url-url-encode-chars url "[)$ ]"))
(defun gnus-html-cache-expired (url ttl)
"Check if URL is cached for more than TTL."
@@ -143,7 +126,7 @@ CHARS is a regexp-like character alternative (e.g., \"[)$]\")."
charset nil t))
(not (eq charset 'ascii)))
(insert (prog1
- (mm-decode-coding-string (buffer-string) charset)
+ (decode-coding-string (buffer-string) charset)
(erase-buffer)
(mm-enable-multibyte))))
(call-process-region (point-min) (point-max)
@@ -197,7 +180,7 @@ CHARS is a regexp-like character alternative (e.g., \"[)$]\")."
alt-text (when (string-match "\\(alt\\|title\\)=\"\\([^\"]+\\)"
parameters)
(xml-substitute-special (match-string 2 parameters))))
- (gnus-add-text-properties
+ (add-text-properties
start end
(list 'image-url url
'image-displayer `(lambda (url start end)
@@ -310,7 +293,7 @@ Use ALT-TEXT for the image string."
(let ((overlay (make-overlay start end)))
(overlay-put overlay 'evaporate t)
(overlay-put overlay 'gnus-button-url url)
- (gnus-put-text-property start end 'gnus-string url)
+ (put-text-property start end 'gnus-string url)
(when gnus-article-mouse-face
(overlay-put overlay 'mouse-face gnus-article-mouse-face)))))
;; The upper-case IMG_ALT is apparently just an artifact that
@@ -391,14 +374,9 @@ Use ALT-TEXT for the image string."
"Retrieve IMAGE, and place it into BUFFER on arrival."
(gnus-message 8 "gnus-html-schedule-image-fetching: buffer %s, image %s"
buffer image)
- (if (fboundp 'url-queue-retrieve)
- (url-queue-retrieve (car image)
- 'gnus-html-image-fetched
- (list buffer image) t t)
- (ignore-errors
- (url-retrieve (car image)
- 'gnus-html-image-fetched
- (list buffer image)))))
+ (url-queue-retrieve (car image)
+ 'gnus-html-image-fetched
+ (list buffer image) t t))
(defun gnus-html-image-fetched (status buffer image)
"Callback function called when image has been fetched."
@@ -427,7 +405,7 @@ Return a string with image data."
(defun gnus-html-maximum-image-size ()
"Return the maximum size of an image according to `gnus-max-image-proportion'."
- (let ((edges (gnus-window-inside-pixel-edges
+ (let ((edges (window-inside-pixel-edges
(get-buffer-window (current-buffer)))))
;; (width . height)
(cons
@@ -444,7 +422,7 @@ Return a string with image data."
(defun gnus-html-put-image (data url &optional alt-text)
"Put an image with DATA from URL and optional ALT-TEXT."
- (when (gnus-graphic-display-p)
+ (when (display-graphic-p)
(let* ((start (text-property-any (point-min) (point-max)
'image-url url))
(end (when start
@@ -454,10 +432,7 @@ Return a string with image data."
(let* ((image
(ignore-errors
(gnus-create-image data nil t)))
- (size (and image
- (if (featurep 'xemacs)
- (cons (glyph-width image) (glyph-height image))
- (image-size image t)))))
+ (size (and image (image-size image t))))
(save-excursion
(goto-char start)
(let ((alt-text (or alt-text
@@ -466,16 +441,8 @@ Return a string with image data."
(if (and image
;; Kludge to avoid displaying 30x30 gif images, which
;; seems to be a signal of a broken image.
- (not (and (if (featurep 'xemacs)
- (glyphp image)
- (listp image))
- (eq (if (featurep 'xemacs)
- (let ((d (cdadar
- (specifier-spec-list
- (glyph-image image)))))
- (and (vectorp d)
- (aref d 0)))
- (plist-get (cdr image) :type))
+ (not (and (listp image)
+ (eq (plist-get (cdr image) :type)
'gif)
(= (car size) 30)
(= (cdr size) 30))))
@@ -488,10 +455,9 @@ Return a string with image data."
:help-echo alt-text
:keymap gnus-html-displayed-image-map
url)
- (gnus-put-text-property start (point)
- 'gnus-alt-text alt-text)
+ (put-text-property start (point) 'gnus-alt-text alt-text)
(when url
- (gnus-add-text-properties
+ (add-text-properties
start (point)
`(image-url
,url
diff --git a/lisp/gnus/gnus-icalendar.el b/lisp/gnus/gnus-icalendar.el
index d7a431ae8c..dea6523a54 100644
--- a/lisp/gnus/gnus-icalendar.el
+++ b/lisp/gnus/gnus-icalendar.el
@@ -119,17 +119,17 @@
nil
"iCalendar class for REPLY events")
-(defmethod gnus-icalendar-event:recurring-p ((event gnus-icalendar-event))
+(cl-defmethod gnus-icalendar-event:recurring-p ((event gnus-icalendar-event))
"Return t if EVENT is recurring."
(not (null (gnus-icalendar-event:recur event))))
-(defmethod gnus-icalendar-event:recurring-freq ((event gnus-icalendar-event))
+(cl-defmethod gnus-icalendar-event:recurring-freq ((event gnus-icalendar-event))
"Return recurring frequency of EVENT."
(let ((rrule (gnus-icalendar-event:recur event)))
(string-match "FREQ=\\([[:alpha:]]+\\)" rrule)
(match-string 1 rrule)))
-(defmethod gnus-icalendar-event:recurring-interval ((event gnus-icalendar-event))
+(cl-defmethod gnus-icalendar-event:recurring-interval ((event gnus-icalendar-event))
"Return recurring interval of EVENT."
(let ((rrule (gnus-icalendar-event:recur event))
(default-interval 1))
@@ -138,7 +138,7 @@
(or (match-string 1 rrule)
default-interval)))
-(defmethod gnus-icalendar-event:start ((event gnus-icalendar-event))
+(cl-defmethod gnus-icalendar-event:start ((event gnus-icalendar-event))
(format-time-string "%Y-%m-%d %H:%M" (gnus-icalendar-event:start-time event)))
(defun gnus-icalendar-event--decode-datefield (event field zone-map)
@@ -152,17 +152,19 @@
(defun gnus-icalendar-event--find-attendee (ical name-or-email)
(let* ((event (car (icalendar--all-events ical)))
(event-props (caddr event)))
- (gmm-labels ((attendee-name (att) (plist-get (cadr att) 'CN))
- (attendee-email (att)
- (replace-regexp-in-string "^.*MAILTO:" "" (caddr att)))
- (attendee-prop-matches-p (prop)
- (and (eq (car prop) 'ATTENDEE)
- (or (member (attendee-name prop) name-or-email)
- (let ((att-email (attendee-email prop)))
- (gnus-icalendar-find-if (lambda (email)
- (string-match email att-email))
- name-or-email))))))
-
+ (cl-labels ((attendee-name (att) (plist-get (cadr att) 'CN))
+ (attendee-email
+ (att)
+ (replace-regexp-in-string "^.*MAILTO:" "" (caddr att)))
+ (attendee-prop-matches-p
+ (prop)
+ (and (eq (car prop) 'ATTENDEE)
+ (or (member (attendee-name prop) name-or-email)
+ (let ((att-email (attendee-email prop)))
+ (gnus-icalendar-find-if
+ (lambda (email)
+ (string-match email att-email))
+ name-or-email))))))
(gnus-icalendar-find-if #'attendee-prop-matches-p event-props))))
(defun gnus-icalendar-event--get-attendee-names (ical)
@@ -171,17 +173,19 @@
(lambda (p) (eq (car p) 'ATTENDEE))
(caddr event))))
- (gmm-labels ((attendee-role (prop) (plist-get (cadr prop) 'ROLE))
- (attendee-name (prop)
- (or (plist-get (cadr prop) 'CN)
- (replace-regexp-in-string "^.*MAILTO:" "" (caddr prop))))
- (attendees-by-type (type)
- (gnus-remove-if-not
- (lambda (p) (string= (attendee-role p) type))
- attendee-props))
- (attendee-names-by-type (type)
- (mapcar #'attendee-name (attendees-by-type type))))
-
+ (cl-labels
+ ((attendee-role (prop) (plist-get (cadr prop) 'ROLE))
+ (attendee-name
+ (prop)
+ (or (plist-get (cadr prop) 'CN)
+ (replace-regexp-in-string "^.*MAILTO:" "" (caddr prop))))
+ (attendees-by-type (type)
+ (gnus-remove-if-not
+ (lambda (p) (string= (attendee-role p) type))
+ attendee-props))
+ (attendee-names-by-type
+ (type)
+ (mapcar #'attendee-name (attendees-by-type type))))
(list
(attendee-names-by-type "REQ-PARTICIPANT")
(attendee-names-by-type "OPT-PARTICIPANT")))))
@@ -220,23 +224,25 @@
((string= method "REPLY") 'gnus-icalendar-event-reply)
(t 'gnus-icalendar-event))))
- (gmm-labels ((map-property (prop)
- (let ((value (icalendar--get-event-property event prop)))
- (when value
- ;; ugly, but cannot get
- ;;replace-regexp-in-string work with "\\" as
- ;;REP, plus we should also handle "\\;"
- (replace-regexp-in-string
- "\\\\," ","
- (replace-regexp-in-string
- "\\\\n" "\n" (substring-no-properties value))))))
- (accumulate-args (mapping)
- (destructuring-bind (slot . ical-property) mapping
- (setq args (append (list
- (intern (concat ":" (symbol-name slot)))
- (map-property ical-property))
- args)))))
-
+ (cl-labels
+ ((map-property
+ (prop)
+ (let ((value (icalendar--get-event-property event prop)))
+ (when value
+ ;; ugly, but cannot get
+ ;;replace-regexp-in-string work with "\\" as
+ ;;REP, plus we should also handle "\\;"
+ (replace-regexp-in-string
+ "\\\\," ","
+ (replace-regexp-in-string
+ "\\\\n" "\n" (substring-no-properties value))))))
+ (accumulate-args
+ (mapping)
+ (destructuring-bind (slot . ical-property) mapping
+ (setq args (append (list
+ (intern (concat ":" (symbol-name slot)))
+ (map-property ical-property))
+ args)))))
(mapc #'accumulate-args prop-map)
(apply 'make-instance event-class args))))
@@ -264,41 +270,46 @@ status will be retrieved from the first matching attendee record."
(let ((summary-status (capitalize (symbol-name status)))
(attendee-status (upcase (symbol-name status)))
reply-event-lines)
- (gmm-labels ((update-summary (line)
- (if (string-match "^[^:]+:" line)
- (replace-match (format "\\&%s: " summary-status) t nil line)
- line))
- (update-dtstamp ()
- (format-time-string "DTSTAMP:%Y%m%dT%H%M%SZ" nil t))
- (attendee-matches-identity (line)
- (gnus-icalendar-find-if (lambda (name) (string-match-p name line))
- identities))
- (update-attendee-status (line)
- (when (and (attendee-matches-identity line)
- (string-match "\\(PARTSTAT=\\)[^;]+" line))
- (replace-match (format "\\1%s" attendee-status) t nil line)))
- (process-event-line (line)
- (when (string-match "^\\([^;:]+\\)" line)
- (let* ((key (match-string 0 line))
- ;; NOTE: not all of the below fields are mandatory,
- ;; but they are often present in other clients'
- ;; replies. Can be helpful for debugging, too.
- (new-line
- (cond
- ((string= key "ATTENDEE") (update-attendee-status line))
- ((string= key "SUMMARY") (update-summary line))
- ((string= key "DTSTAMP") (update-dtstamp))
- ((member key '("ORGANIZER" "DTSTART" "DTEND"
- "LOCATION" "DURATION" "SEQUENCE"
- "RECURRENCE-ID" "UID")) line)
- (t nil))))
- (when new-line
- (push new-line reply-event-lines))))))
+ (cl-labels
+ ((update-summary
+ (line)
+ (if (string-match "^[^:]+:" line)
+ (replace-match (format "\\&%s: " summary-status) t nil line)
+ line))
+ (update-dtstamp ()
+ (format-time-string "DTSTAMP:%Y%m%dT%H%M%SZ" nil t))
+ (attendee-matches-identity
+ (line)
+ (gnus-icalendar-find-if (lambda (name) (string-match-p name line))
+ identities))
+ (update-attendee-status
+ (line)
+ (when (and (attendee-matches-identity line)
+ (string-match "\\(PARTSTAT=\\)[^;]+" line))
+ (replace-match (format "\\1%s" attendee-status) t nil line)))
+ (process-event-line
+ (line)
+ (when (string-match "^\\([^;:]+\\)" line)
+ (let* ((key (match-string 0 line))
+ ;; NOTE: not all of the below fields are mandatory,
+ ;; but they are often present in other clients'
+ ;; replies. Can be helpful for debugging, too.
+ (new-line
+ (cond
+ ((string= key "ATTENDEE") (update-attendee-status line))
+ ((string= key "SUMMARY") (update-summary line))
+ ((string= key "DTSTAMP") (update-dtstamp))
+ ((member key '("ORGANIZER" "DTSTART" "DTEND"
+ "LOCATION" "DURATION" "SEQUENCE"
+ "RECURRENCE-ID" "UID")) line)
+ (t nil))))
+ (when new-line
+ (push new-line reply-event-lines))))))
(mapc #'process-event-line (split-string ical-request "\n"))
(unless (gnus-icalendar-find-if (lambda (x) (string-match "^ATTENDEE" x))
- reply-event-lines)
+ reply-event-lines)
(error "Could not find an event attendee matching given identity"))
(mapconcat #'identity `("BEGIN:VEVENT"
@@ -311,16 +322,17 @@ status will be retrieved from the first matching attendee record."
The reply will have STATUS (`accepted', `tentative' or `declined').
The reply will be composed for attendees matching any entry
on the IDENTITIES list."
- (gmm-labels ((extract-block (blockname)
- (save-excursion
- (let ((block-start-re (format "^BEGIN:%s" blockname))
- (block-end-re (format "^END:%s" blockname))
- start)
- (when (re-search-forward block-start-re nil t)
- (setq start (line-beginning-position))
- (re-search-forward block-end-re)
- (buffer-substring-no-properties start (line-end-position)))))))
-
+ (cl-labels
+ ((extract-block
+ (blockname)
+ (save-excursion
+ (let ((block-start-re (format "^BEGIN:%s" blockname))
+ (block-end-re (format "^END:%s" blockname))
+ start)
+ (when (re-search-forward block-start-re nil t)
+ (setq start (line-beginning-position))
+ (re-search-forward block-end-re)
+ (buffer-substring-no-properties start (line-end-position)))))))
(let (zone event)
(with-current-buffer (icalendar--get-unfolded-buffer (get-buffer buf))
(goto-char (point-min))
@@ -376,7 +388,7 @@ on the IDENTITIES list."
(defvar gnus-icalendar-org-enabled-p nil)
-(defmethod gnus-icalendar-event:org-repeat ((event gnus-icalendar-event))
+(cl-defmethod gnus-icalendar-event:org-repeat ((event gnus-icalendar-event))
"Return `org-mode' timestamp repeater string for recurring EVENT.
Return nil for non-recurring EVENT."
(when (gnus-icalendar-event:recurring-p event)
@@ -390,14 +402,14 @@ Return nil for non-recurring EVENT."
(when org-freq
(format "+%s%s" (gnus-icalendar-event:recurring-interval event) org-freq)))))
-(defmethod gnus-icalendar-event:org-timestamp ((event gnus-icalendar-event))
+(cl-defmethod gnus-icalendar-event:org-timestamp ((event gnus-icalendar-event))
"Build `org-mode' timestamp from EVENT start/end dates and recurrence info."
(let* ((start (gnus-icalendar-event:start-time event))
(end (gnus-icalendar-event:end-time event))
- (start-date (format-time-string "%Y-%m-%d %a" start))
+ (start-date (format-time-string "%Y-%m-%d" start))
(start-time (format-time-string "%H:%M" start))
(start-at-midnight (string= start-time "00:00"))
- (end-date (format-time-string "%Y-%m-%d %a" end))
+ (end-date (format-time-string "%Y-%m-%d" end))
(end-time (format-time-string "%H:%M" end))
(end-at-midnight (string= end-time "00:00"))
(start-end-date-diff
@@ -417,7 +429,7 @@ Return nil for non-recurring EVENT."
;; A 0:0 - A+1 0:0 -> A
;; A 0:0 - A+n 0:0 -> A - A+n-1
((and start-at-midnight end-at-midnight) (if (> start-end-date-diff 1)
- (let ((end-ts (format-time-string "%Y-%m-%d %a" (time-subtract end time-1-day))))
+ (let ((end-ts (format-time-string "%Y-%m-%d" (time-subtract end time-1-day))))
(format "<%s>--<%s>" start-date end-ts))
(format "<%s%s>" start-date repeat)))
;; end midnight
@@ -425,7 +437,7 @@ Return nil for non-recurring EVENT."
;; A .:. - A+n 0:0 -> A .:. - A_n-1
(end-at-midnight (if (= start-end-date-diff 1)
(format "<%s %s-23:59%s>" start-date start-time repeat)
- (let ((end-ts (format-time-string "%Y-%m-%d %a" (time-subtract end time-1-day))))
+ (let ((end-ts (format-time-string "%Y-%m-%d" (time-subtract end time-1-day))))
(format "<%s %s>--<%s>" start-date start-time end-ts))))
;; start midnight
;; A 0:0 - A .:. -> A 0:0-.:. (default 1)
@@ -448,7 +460,7 @@ Return nil for non-recurring EVENT."
(mapconcat #'identity participants ", "))
;; TODO: make the template customizable
-(defmethod gnus-icalendar-event->org-entry ((event gnus-icalendar-event) reply-status)
+(cl-defmethod gnus-icalendar-event->org-entry ((event gnus-icalendar-event) reply-status)
"Return string with new `org-mode' entry describing EVENT."
(with-temp-buffer
(org-mode)
@@ -498,16 +510,17 @@ the optional ORG-FILE argument is specified, only that one file
is searched."
(let ((uid (gnus-icalendar-event:uid event))
(files (or org-file (org-agenda-files t 'ifmode))))
- (gmm-labels
- ((find-event-in (file)
- (org-check-agenda-file file)
- (with-current-buffer (find-file-noselect file)
- (let ((event-pos (org-find-entry-with-id uid)))
- (when (and event-pos
- (string= (cdr (assoc "ICAL_EVENT" (org-entry-properties event-pos)))
- "t"))
- (throw 'found file))))))
-
+ (cl-labels
+ ((find-event-in
+ (file)
+ (org-check-agenda-file file)
+ (with-current-buffer (find-file-noselect file)
+ (let ((event-pos (org-find-entry-with-id uid)))
+ (when (and event-pos
+ (string= (cdr (assoc "ICAL_EVENT"
+ (org-entry-properties event-pos)))
+ "t"))
+ (throw 'found file))))))
(gnus-icalendar-find-if #'find-event-in files))))
@@ -567,22 +580,29 @@ is searched."
(fill-region (point-min) (point-max))))
;; update entry properties
- (gmm-labels
- ((update-org-entry (position property value)
- (if (or (null value)
- (string= value ""))
- (org-entry-delete position property)
- (org-entry-put position property value))))
+ (cl-labels
+ ((update-org-entry
+ (position property value)
+ (if (or (null value)
+ (string= value ""))
+ (org-entry-delete position property)
+ (org-entry-put position property value))))
(update-org-entry event-pos "ORGANIZER" organizer)
(update-org-entry event-pos "LOCATION" location)
- (update-org-entry event-pos "PARTICIPATION_TYPE" (symbol-name participation-type))
- (update-org-entry event-pos "REQ_PARTICIPANTS" (gnus-icalendar--format-participant-list req-participants))
- (update-org-entry event-pos "OPT_PARTICIPANTS" (gnus-icalendar--format-participant-list opt-participants))
+ (update-org-entry event-pos "PARTICIPATION_TYPE"
+ (symbol-name participation-type))
+ (update-org-entry event-pos "REQ_PARTICIPANTS"
+ (gnus-icalendar--format-participant-list
+ req-participants))
+ (update-org-entry event-pos "OPT_PARTICIPANTS"
+ (gnus-icalendar--format-participant-list
+ opt-participants))
(update-org-entry event-pos "RRULE" recur)
- (update-org-entry event-pos "REPLY"
- (if reply-status (capitalize (symbol-name reply-status))
- "Not replied yet")))
+ (update-org-entry
+ event-pos "REPLY"
+ (if reply-status (capitalize (symbol-name reply-status))
+ "Not replied yet")))
(save-buffer)))))))))
@@ -641,12 +661,12 @@ is searched."
(org-agenda-list nil (gnus-icalendar-event:start event) duration-days)))
-(defmethod gnus-icalendar-event:sync-to-org ((event gnus-icalendar-event-request) reply-status)
+(cl-defmethod gnus-icalendar-event:sync-to-org ((event gnus-icalendar-event-request) reply-status)
(if (gnus-icalendar-find-org-event-file event)
(gnus-icalendar--update-org-event event reply-status)
(gnus-icalendar:org-event-save event reply-status)))
-(defmethod gnus-icalendar-event:sync-to-org ((event gnus-icalendar-event-cancel) reply-status)
+(cl-defmethod gnus-icalendar-event:sync-to-org ((event gnus-icalendar-event-cancel) reply-status)
(when (gnus-icalendar-find-org-event-file event)
(gnus-icalendar--cancel-org-event event)))
@@ -703,40 +723,43 @@ only makes sense to define names or email addresses."
These will be used to retrieve the RSVP information from ical events."
(apply #'append
- (mapcar (lambda (x) (if (listp x) x (list x)))
- (list user-full-name (regexp-quote user-mail-address)
- ; NOTE: these can be lists
- gnus-ignored-from-addresses ; already regexp-quoted
- message-alternative-emails ;
- (mapcar #'regexp-quote gnus-icalendar-additional-identities)))))
+ (mapcar
+ (lambda (x) (if (listp x) x (list x)))
+ (list user-full-name (regexp-quote user-mail-address)
+ ;; NOTE: these can be lists
+ gnus-ignored-from-addresses ; already regexp-quoted
+ (unless (functionp message-alternative-emails) ; String or function.
+ message-alternative-emails)
+ (mapcar #'regexp-quote gnus-icalendar-additional-identities)))))
;; TODO: make the template customizable
-(defmethod gnus-icalendar-event->gnus-calendar ((event gnus-icalendar-event) &optional reply-status)
+(cl-defmethod gnus-icalendar-event->gnus-calendar ((event gnus-icalendar-event) &optional reply-status)
"Format an overview of EVENT details."
- (gmm-labels ((format-header (x)
- (format "%-12s%s"
- (propertize (concat (car x) ":") 'face 'bold)
- (cadr x))))
+ (cl-labels
+ ((format-header (x)
+ (format "%-12s%s"
+ (propertize (concat (car x) ":") 'face 'bold)
+ (cadr x))))
(with-slots (organizer summary description location recur uid
method rsvp participation-type) event
(let ((headers `(("Summary" ,summary)
- ("Location" ,(or location ""))
- ("Time" ,(gnus-icalendar-event:org-timestamp event))
- ("Organizer" ,organizer)
- ("Attendance" ,(if (eq participation-type 'non-participant)
- "You are not listed as an attendee"
- (capitalize (symbol-name participation-type))))
- ("Method" ,method))))
-
- (when (and (not (gnus-icalendar-event-reply-p event)) rsvp)
- (setq headers (append headers
- `(("Status" ,(or reply-status "Not replied yet"))))))
-
- (concat
- (mapconcat #'format-header headers "\n")
- "\n\n"
- description)))))
+ ("Location" ,(or location ""))
+ ("Time" ,(gnus-icalendar-event:org-timestamp event))
+ ("Organizer" ,organizer)
+ ("Attendance" ,(if (eq participation-type 'non-participant)
+ "You are not listed as an attendee"
+ (capitalize (symbol-name participation-type))))
+ ("Method" ,method))))
+
+ (when (and (not (gnus-icalendar-event-reply-p event)) rsvp)
+ (setq headers (append headers
+ `(("Status" ,(or reply-status "Not replied yet"))))))
+
+ (concat
+ (mapconcat #'format-header headers "\n")
+ "\n\n"
+ description)))))
(defmacro gnus-icalendar-with-decoded-handle (handle &rest body)
"Execute BODY in buffer containing the decoded contents of HANDLE."
@@ -745,8 +768,7 @@ These will be used to retrieve the RSVP information from ical events."
(with-temp-buffer
(mm-insert-part ,handle)
(when (string= ,charset "utf-8")
- (mm-decode-coding-region (point-min) (point-max) 'utf-8))
-
+ (decode-coding-region (point-min) (point-max) 'utf-8))
,@body))))
@@ -758,7 +780,7 @@ These will be used to retrieve the RSVP information from ical events."
;; FIXME: the gnus-mime-button-map keymap does not make sense for this kind
;; of button.
(let ((start (point)))
- (gnus-add-text-properties
+ (add-text-properties
start
(progn
(insert "[ " text " ]")
@@ -769,8 +791,7 @@ These will be used to retrieve the RSVP information from ical events."
face ,gnus-article-button-face
gnus-data ,data))
(widget-convert-button 'link start (point)
- :action 'gnus-widget-press-button
- :button-keymap gnus-widget-button-keymap)))
+ :action 'gnus-widget-press-button)))
(defun gnus-icalendar-send-buffer-by-mail (buffer-name subject)
(let ((message-signature nil))
@@ -794,11 +815,13 @@ These will be used to retrieve the RSVP information from ical events."
(current-buffer) status (gnus-icalendar-identities)))))
(when reply
- (gmm-labels ((fold-icalendar-buffer ()
- (goto-char (point-min))
- (while (re-search-forward "^\\(.\\{72\\}\\)\\(.+\\)$" nil t)
- (replace-match "\\1\n \\2")
- (goto-char (line-beginning-position)))))
+ (cl-labels
+ ((fold-icalendar-buffer
+ ()
+ (goto-char (point-min))
+ (while (re-search-forward "^\\(.\\{72\\}\\)\\(.+\\)$" nil t)
+ (replace-match "\\1\n \\2")
+ (goto-char (line-beginning-position)))))
(let ((subject (concat (capitalize (symbol-name status))
": " (gnus-icalendar-event:summary event))))
@@ -819,27 +842,27 @@ These will be used to retrieve the RSVP information from ical events."
(defun gnus-icalendar-sync-event-to-org (event)
(gnus-icalendar-event:sync-to-org event gnus-icalendar-reply-status))
-(defmethod gnus-icalendar-event:inline-reply-buttons ((event gnus-icalendar-event) handle)
+(cl-defmethod gnus-icalendar-event:inline-reply-buttons ((event gnus-icalendar-event) handle)
(when (gnus-icalendar-event:rsvp event)
`(("Accept" gnus-icalendar-reply (,handle accepted ,event))
("Tentative" gnus-icalendar-reply (,handle tentative ,event))
("Decline" gnus-icalendar-reply (,handle declined ,event)))))
-(defmethod gnus-icalendar-event:inline-reply-buttons ((event gnus-icalendar-event-reply) handle)
+(cl-defmethod gnus-icalendar-event:inline-reply-buttons ((event gnus-icalendar-event-reply) handle)
"No buttons for REPLY events."
nil)
-(defmethod gnus-icalendar-event:inline-reply-status ((event gnus-icalendar-event))
+(cl-defmethod gnus-icalendar-event:inline-reply-status ((event gnus-icalendar-event))
(or (when gnus-icalendar-org-enabled-p
(gnus-icalendar--get-org-event-reply-status event))
"Not replied yet"))
-(defmethod gnus-icalendar-event:inline-reply-status ((event gnus-icalendar-event-reply))
+(cl-defmethod gnus-icalendar-event:inline-reply-status ((event gnus-icalendar-event-reply))
"No reply status for REPLY events."
nil)
-(defmethod gnus-icalendar-event:inline-org-buttons ((event gnus-icalendar-event))
+(cl-defmethod gnus-icalendar-event:inline-org-buttons ((event gnus-icalendar-event))
(let* ((org-entry-exists-p (gnus-icalendar-find-org-event-file event))
(export-button-text (if org-entry-exists-p "Update Org Entry" "Export to Org")))
@@ -851,7 +874,7 @@ These will be used to retrieve the RSVP information from ical events."
`("Show Org Entry" gnus-icalendar--show-org-event ,event))))))
-(defmethod gnus-icalendar-event:inline-org-buttons ((event gnus-icalendar-event-cancel))
+(cl-defmethod gnus-icalendar-event:inline-org-buttons ((event gnus-icalendar-event-cancel))
(let ((org-entry-exists-p (gnus-icalendar-find-org-event-file event)))
(delq nil (list
@@ -868,13 +891,15 @@ These will be used to retrieve the RSVP information from ical events."
(setq gnus-icalendar-reply-status nil)
(when event
- (gmm-labels ((insert-button-group (buttons)
- (when buttons
- (mapc (lambda (x)
- (apply 'gnus-icalendar-insert-button x)
- (insert " "))
- buttons)
- (insert "\n\n"))))
+ (cl-labels
+ ((insert-button-group
+ (buttons)
+ (when buttons
+ (mapc (lambda (x)
+ (apply 'gnus-icalendar-insert-button x)
+ (insert " "))
+ buttons)
+ (insert "\n\n"))))
(insert-button-group
(gnus-icalendar-event:inline-reply-buttons event handle))
diff --git a/lisp/gnus/gnus-int.el b/lisp/gnus/gnus-int.el
index d0798d3426..93545ff39b 100644
--- a/lisp/gnus/gnus-int.el
+++ b/lisp/gnus/gnus-int.el
@@ -164,7 +164,7 @@ If CONFIRM is non-nil, the user will be asked for an NNTP server."
(gnus-open-server gnus-select-method)
gnus-batch-mode
(gnus-y-or-n-p
- (gnus-format-message
+ (format-message
"%s (%s) open error: `%s'. Continue? "
(car gnus-select-method) (cadr gnus-select-method)
(gnus-status-message gnus-select-method)))
@@ -777,8 +777,7 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
(message-options-set-recipient)
(save-restriction
(message-narrow-to-head)
- (let ((mail-parse-charset message-default-charset))
- (mail-encode-encoded-word-buffer)))
+ (mail-encode-encoded-word-buffer))
(message-encode-message-body)))
(let ((gnus-command-method (or gnus-command-method
(gnus-find-method-for-group group)))
@@ -800,8 +799,7 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
(message-options-set-recipient)
(save-restriction
(message-narrow-to-head)
- (let ((mail-parse-charset message-default-charset))
- (mail-encode-encoded-word-buffer)))
+ (mail-encode-encoded-word-buffer))
(message-encode-message-body)))
(let* ((func (car (gnus-group-name-to-method group)))
(result (funcall (intern (format "%s-request-replace-article" func))
diff --git a/lisp/gnus/gnus-kill.el b/lisp/gnus/gnus-kill.el
index 059a5cdf27..b4b74c98f9 100644
--- a/lisp/gnus/gnus-kill.el
+++ b/lisp/gnus/gnus-kill.el
@@ -37,13 +37,13 @@
:type 'hook)
(defcustom gnus-kill-expiry-days 7
- "*Number of days before expiring unused kill file entries."
+ "Number of days before expiring unused kill file entries."
:group 'gnus-score-kill
:group 'gnus-score-expire
:type 'integer)
(defcustom gnus-kill-save-kill-file nil
- "*If non-nil, will save kill files after processing them."
+ "If non-nil, will save kill files after processing them."
:group 'gnus-score-kill
:type 'boolean)
@@ -52,7 +52,7 @@
I don't know, Per.")
(defcustom gnus-kill-killed t
- "*If non-nil, Gnus will apply kill files to already killed articles.
+ "If non-nil, Gnus will apply kill files to already killed articles.
If it is nil, Gnus will never apply kill files to articles that have
already been through the scoring process, which might very well save lots
of time."
diff --git a/lisp/gnus/gnus-ml.el b/lisp/gnus/gnus-ml.el
index 8ff36160f0..97bbab41fd 100644
--- a/lisp/gnus/gnus-ml.el
+++ b/lisp/gnus/gnus-ml.el
@@ -29,9 +29,6 @@
(require 'gnus)
(require 'gnus-msg)
(eval-when-compile (require 'cl))
-(eval-when-compile
- (when (featurep 'xemacs)
- (require 'easy-mmode))) ; for `define-minor-mode'
;;; Mailing list minor mode
@@ -84,12 +81,6 @@ If FORCE is non-nil, replace the old ones."
(gnus-mailing-list-mode 1))
(gnus-message 1 "no list-post in this message."))))
-(eval-when-compile
- (when (featurep 'xemacs)
- (defvar gnus-mailing-list-mode-hook)
- (defvar gnus-mailing-list-mode-on-hook)
- (defvar gnus-mailing-list-mode-off-hook)))
-
;;;###autoload
(define-minor-mode gnus-mailing-list-mode
"Minor mode for providing mailing-list commands.
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index b95bec2ace..10927cd526 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -28,13 +28,12 @@
(eval-when-compile (require 'cl))
(require 'gnus)
-(require 'gnus-ems)
(require 'message)
(require 'gnus-art)
(require 'gnus-util)
(defcustom gnus-post-method 'current
- "*Preferred method for posting USENET news.
+ "Preferred method for posting USENET news.
If this variable is `current' (which is the default), Gnus will use
the \"current\" select method when posting. If it is `native', Gnus
@@ -72,7 +71,7 @@ of names)."
(make-obsolete-variable 'gnus-outgoing-message-group 'gnus-message-archive-group "24.1")
(defcustom gnus-mailing-list-groups nil
- "*If non-nil a regexp matching groups that are really mailing lists.
+ "If non-nil a regexp matching groups that are really mailing lists.
This is useful when you're reading a mailing list that has been
gatewayed to a newsgroup, and you want to followup to an article in
the group."
@@ -81,7 +80,7 @@ the group."
(const nil)))
(defcustom gnus-add-to-list nil
- "*If non-nil, add a `to-list' parameter automatically."
+ "If non-nil, add a `to-list' parameter automatically."
:group 'gnus-message
:type 'boolean)
@@ -112,12 +111,12 @@ the second with the current group name."
:type 'hook)
(defcustom gnus-bug-create-help-buffer t
- "*Should we create the *Gnus Help Bug* buffer?"
+ "Should we create the *Gnus Help Bug* buffer?"
:group 'gnus-message
:type 'boolean)
(defcustom gnus-posting-styles nil
- "*Alist of styles to use when posting.
+ "Alist of styles to use when posting.
See Info node `(gnus)Posting Styles'."
:group 'gnus-message
:link '(custom-manual "(gnus)Posting Styles")
@@ -496,8 +495,6 @@ Thank you for your help in stamping out bugs.
(let ((mbl1 mml-buffer-list))
(setq mml-buffer-list mbl) ;; Global value
(set (make-local-variable 'mml-buffer-list) mbl1);; Local value
- (gnus-make-local-hook 'kill-buffer-hook)
- (gnus-make-local-hook 'change-major-mode-hook)
(add-hook 'change-major-mode-hook 'mml-destroy-buffers nil t)
(add-hook 'kill-buffer-hook 'mml-destroy-buffers t t))
(mml-destroy-buffers)
@@ -594,11 +591,9 @@ instead."
(defun gnus-inews-add-send-actions (winconf buffer article
&optional config yanked
winconf-name)
- (gnus-make-local-hook 'message-sent-hook)
(add-hook 'message-sent-hook (if gnus-agent 'gnus-agent-possibly-do-gcc
'gnus-inews-do-gcc) nil t)
(when gnus-agent
- (gnus-make-local-hook 'message-header-hook)
(add-hook 'message-header-hook 'gnus-agent-possibly-save-gcc nil t))
(setq message-post-method
`(lambda (&optional arg)
@@ -1139,9 +1134,9 @@ See the variable `gnus-user-agent'."
(gnus-v
(when (memq 'gnus gnus-user-agent)
(concat "Gnus/"
- (gnus-replace-in-string
- (format "%1.8f" (gnus-continuum-version gnus-version))
- "0+\\'" "")
+ (replace-regexp-in-string
+ "0+\\'" ""
+ (format "%1.8f" (gnus-continuum-version gnus-version)))
" (" gnus-version ")")))
(emacs-v (gnus-emacs-version)))
(concat gnus-v (when (and gnus-v emacs-v) " ")
@@ -1347,7 +1342,7 @@ For the \"inline\" alternatives, also see the variable
(gnus-inews-insert-gcc)
(let ((gcc (mapcar
(lambda (group)
- (mm-encode-coding-string
+ (encode-coding-string
group
(gnus-group-name-charset (gnus-inews-group-method group)
group)))
@@ -1364,7 +1359,7 @@ For the \"inline\" alternatives, also see the variable
(insert "Gcc: \"" gnus-newsgroup-name "\"\n"))
((stringp self)
(insert "Gcc: "
- (mm-encode-coding-string
+ (encode-coding-string
(if (string-match " " self)
(concat "\"" self "\"")
self)
@@ -1403,7 +1398,7 @@ For the \"inline\" alternatives, also see the variable
tem)
(dolist (style styles)
(when (stringp (cadr style))
- (setcdr style (list (mm-decode-coding-string (cadr style) 'utf-8)))))
+ (setcdr style (list (decode-coding-string (cadr style) 'utf-8)))))
(dolist (style (if styles
(append gnus-posting-styles (list (cons ".*" styles)))
gnus-posting-styles))
@@ -1496,7 +1491,7 @@ See `gnus-summary-mail-forward' for ARG."
(message-goto-subject)
(re-search-forward " *$")
(replace-match " (crosspost notification)" t t)
- (gnus-deactivate-mark)
+ (deactivate-mark)
(when (gnus-y-or-n-p "Send this complaint? ")
(message-send-and-exit))))))
@@ -1642,7 +1637,7 @@ this is a reply."
;; Copy the article over to some group(s).
(while (setq group (pop groups))
(setq method (gnus-inews-group-method group)
- group (mm-encode-coding-string
+ group (encode-coding-string
group
(gnus-group-name-charset method group)))
(unless (gnus-check-server method)
@@ -1663,8 +1658,7 @@ this is a reply."
(run-hooks 'gnus-gcc-post-body-encode-hook)
(save-restriction
(message-narrow-to-headers)
- (let* ((mail-parse-charset message-default-charset)
- (newsgroups-field (save-restriction
+ (let* ((newsgroups-field (save-restriction
(message-narrow-to-headers-or-head)
(message-fetch-field "Newsgroups")))
(followup-field (save-restriction
@@ -1845,8 +1839,8 @@ this is a reply."
(when tmp-style
(dolist (style tmp-style)
(when (stringp (cadr style))
- (setcdr style (list (mm-decode-coding-string (cadr style)
- 'utf-8)))))
+ (setcdr style (list (decode-coding-string (cadr style)
+ 'utf-8)))))
(setq styles (append styles (list (cons ".*" tmp-style)))))))
;; Go through all styles and look for matches.
(dolist (style styles)
@@ -1909,10 +1903,10 @@ this is a reply."
(cond
((stringp value)
(if (and matched-string
- (gnus-string-match-p "\\\\[&[:digit:]]" value)
+ (string-match-p "\\\\[&[:digit:]]" value)
(match-beginning 1))
- (gnus-match-substitute-replacement value nil nil
- matched-string)
+ (match-substitute-replacement value nil nil
+ matched-string)
value))
((or (symbolp value)
(functionp value))
@@ -1954,7 +1948,6 @@ this is a reply."
(setq name (assq 'name results)
address (assq 'address results))
(setq results (delq name (delq address results)))
- (gnus-make-local-hook 'message-setup-hook)
(setq results (sort results (lambda (x y)
(string-lessp (car x) (car y)))))
(dolist (result results)
@@ -2006,10 +1999,6 @@ this is a reply."
(insert "From: " (message-make-from) "\n"))))
nil 'local)))))
-;;; Allow redefinition of functions.
-
-(gnus-ems-redefine)
-
(provide 'gnus-msg)
;;; gnus-msg.el ends here
diff --git a/lisp/gnus/gnus-notifications.el b/lisp/gnus/gnus-notifications.el
index 54a75b69c8..2f6d6a8b61 100644
--- a/lisp/gnus/gnus-notifications.el
+++ b/lisp/gnus/gnus-notifications.el
@@ -81,7 +81,7 @@ not get notifications."
(article (nth 2 group-article)))
(cond ((string= key "read")
(gnus-fetch-group group (list article))
- (gnus-select-frame-set-input-focus (selected-frame)))
+ (select-frame-set-input-focus (selected-frame)))
((string= key "mark-read")
(gnus-update-read-articles
group
@@ -180,8 +180,11 @@ This is typically a function to add in
;; Ignore mails from ourselves
(unless (and gnus-ignored-from-addresses
address
- (gnus-string-match-p gnus-ignored-from-addresses
- address))
+ (cond ((functionp gnus-ignored-from-addresses)
+ (funcall gnus-ignored-from-addresses address))
+ (t (string-match-p
+ (gnus-ignored-from-addresses)
+ address))))
(let* ((photo-file (gnus-notifications-get-photo-file address))
(notification-id (gnus-notifications-notify
(or (car address-components) address)
diff --git a/lisp/gnus/gnus-picon.el b/lisp/gnus/gnus-picon.el
index bbbe0eded4..8b2088be06 100644
--- a/lisp/gnus/gnus-picon.el
+++ b/lisp/gnus/gnus-picon.el
@@ -45,17 +45,17 @@
;;; User variables:
(defcustom gnus-picon-news-directories '("news")
- "*List of directories to search for newsgroups faces."
+ "List of directories to search for newsgroups faces."
:type '(repeat string)
:group 'gnus-picon)
(defcustom gnus-picon-user-directories '("users" "usenix" "local" "misc")
- "*List of directories to search for user faces."
+ "List of directories to search for user faces."
:type '(repeat string)
:group 'gnus-picon)
(defcustom gnus-picon-domain-directories '("domains")
- "*List of directories to search for domain faces.
+ "List of directories to search for domain faces.
Some people may want to add \"unknown\" to this list."
:type '(repeat string)
:group 'gnus-picon)
@@ -67,7 +67,7 @@ Some people may want to add \"unknown\" to this list."
(when (gnus-image-type-available-p 'xpm)
(push "xpm" types))
types)
- "*List of suffixes on picon file names to try."
+ "List of suffixes on picon file names to try."
:type '(repeat string)
:group 'gnus-picon)
@@ -81,7 +81,6 @@ Some people may want to add \"unknown\" to this list."
"How should picons be displayed.
If `inline', the textual representation is replaced. If `right', picons are
added right to the textual representation."
- ;; FIXME: `right' needs improvement for XEmacs.
:type '(choice (const inline)
(const right))
:group 'gnus-picon)
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 74e2b827c6..37d5b5b91a 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -87,12 +87,6 @@
(require 'easymenu)
(require 'registry)
-;; Silence XEmacs byte compiler, which will otherwise complain about
-;; call to `eieio-persistent-read'.
-(when (featurep 'xemacs)
- (byte-compiler-options
- (warnings (- callargs))))
-
(defvar gnus-adaptive-word-syntax-table)
(defvar gnus-registry-dirty t
@@ -832,8 +826,7 @@ Addresses without a name will say \"noname\"."
(defun gnus-registry-sort-addresses (&rest addresses)
"Return a normalized and sorted list of ADDRESSES."
- (sort (apply 'nconc (mapcar 'gnus-registry-extract-addresses addresses))
- 'string-lessp))
+ (sort (mapcan 'gnus-registry-extract-addresses addresses) 'string-lessp))
(defun gnus-registry-simplify-subject (subject)
(if (stringp subject)
@@ -1036,7 +1029,7 @@ only the last one's marks are returned."
(let* ((article (last articles))
(id (gnus-registry-fetch-message-id-fast article))
(marks (when id (gnus-registry-get-id-key id 'mark))))
- (when (gmm-called-interactively-p 'any)
+ (when (called-interactively-p 'any)
(gnus-message 1 "Marks are %S" marks))
marks))
diff --git a/lisp/gnus/gnus-rfc1843.el b/lisp/gnus/gnus-rfc1843.el
new file mode 100644
index 0000000000..4e6fdc6d87
--- /dev/null
+++ b/lisp/gnus/gnus-rfc1843.el
@@ -0,0 +1,77 @@
+;;; gnus-rfc1843.el --- HZ (rfc1843) decoding interface functions for Gnus
+
+;; Copyright (C) 1998-2016 Free Software Foundation, Inc.
+
+;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
+;; Keywords: news HZ HZ+ mail i18n
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Usage:
+;; (require 'gnus-rfc1843)
+;; (rfc1843-gnus-setup)
+
+;;; Code:
+
+(require 'rfc1843)
+(require 'gnus-sum)
+(require 'gnus-art)
+(require 'message)
+
+(defun rfc1843-decode-article-body ()
+ "Decode HZ encoded text in the article body."
+ (if (string-match (concat "\\<\\(" rfc1843-newsgroups-regexp "\\)\\>")
+ (or gnus-newsgroup-name ""))
+ (save-excursion
+ (save-restriction
+ (message-narrow-to-head)
+ (let* ((inhibit-point-motion-hooks t)
+ (case-fold-search t)
+ (ct (message-fetch-field "Content-Type" t))
+ (ctl (and ct (mail-header-parse-content-type ct))))
+ (if (and ctl (not (string-match "/" (car ctl))))
+ (setq ctl nil))
+ (goto-char (point-max))
+ (widen)
+ (forward-line 1)
+ (narrow-to-region (point) (point-max))
+ (when (or (not ctl)
+ (equal (car ctl) "text/plain"))
+ (rfc1843-decode-region (point) (point-max))))))))
+
+(defun rfc1843-gnus-setup ()
+ "Setup HZ decoding for Gnus."
+ (add-hook 'gnus-article-decode-hook 'rfc1843-decode-article-body t)
+ (setq gnus-decode-encoded-word-function
+ 'gnus-multi-decode-encoded-word-string
+ gnus-decode-header-function
+ 'gnus-multi-decode-header
+ gnus-decode-encoded-word-methods
+ (nconc gnus-decode-encoded-word-methods
+ (list
+ (cons (concat "\\<\\(" rfc1843-newsgroups-regexp "\\)\\>")
+ 'rfc1843-decode-string)))
+ gnus-decode-header-methods
+ (nconc gnus-decode-header-methods
+ (list
+ (cons (concat "\\<\\(" rfc1843-newsgroups-regexp "\\)\\>")
+ 'rfc1843-decode-region)))))
+
+(provide 'gnus-rfc1843)
+
+;;; gnus-rfc1843.el ends here
diff --git a/lisp/gnus/gnus-salt.el b/lisp/gnus/gnus-salt.el
index d3e82fd707..2c3aff5489 100644
--- a/lisp/gnus/gnus-salt.el
+++ b/lisp/gnus/gnus-salt.el
@@ -25,9 +25,6 @@
;;; Code:
(eval-when-compile (require 'cl))
-(eval-when-compile
- (when (featurep 'xemacs)
- (require 'easy-mmode))) ; for `define-minor-mode'
(require 'gnus)
(require 'gnus-sum)
@@ -38,7 +35,7 @@
;;;
(defcustom gnus-pick-display-summary nil
- "*Display summary while reading."
+ "Display summary while reading."
:type 'boolean
:group 'gnus-summary-pick)
@@ -47,11 +44,8 @@
:type 'hook
:group 'gnus-summary-pick)
-(when (featurep 'xemacs)
- (add-hook 'gnus-pick-mode-hook 'gnus-xmas-pick-menu-add))
-
(defcustom gnus-mark-unpicked-articles-as-read nil
- "*If non-nil, mark all unpicked articles as read."
+ "If non-nil, mark all unpicked articles as read."
:type 'boolean
:group 'gnus-summary-pick)
@@ -63,7 +57,7 @@
(defcustom gnus-summary-pick-line-format
"%-5P %U\ %R\ %z\ %I\ %(%[%4L: %-23,23n%]%) %s\n"
- "*The format specification of the lines in pick buffers.
+ "The format specification of the lines in pick buffers.
It accepts the same format specs that `gnus-summary-line-format' does."
:type 'string
:group 'gnus-summary-pick)
@@ -76,7 +70,7 @@ It accepts the same format specs that `gnus-summary-line-format' does."
" " gnus-pick-next-page
"u" gnus-pick-unmark-article-or-thread
"." gnus-pick-article-or-thread
- gnus-down-mouse-2 gnus-pick-mouse-pick-region
+ [down-mouse-2] gnus-pick-mouse-pick-region
"\r" gnus-pick-start-reading)
map))
@@ -100,11 +94,6 @@ It accepts the same format specs that `gnus-summary-line-format' does."
["Start reading" gnus-pick-start-reading t]
["Switch pick mode off" gnus-pick-mode gnus-pick-mode]))))
-(eval-when-compile
- (when (featurep 'xemacs)
- (defvar gnus-pick-mode-on-hook)
- (defvar gnus-pick-mode-off-hook)))
-
(define-minor-mode gnus-pick-mode
"Minor mode for providing a pick-and-read interface in Gnus summary buffers.
@@ -229,7 +218,7 @@ This must be bound to a button-down mouse event."
(start-point (posn-point start-posn))
(start-line (1+ (count-lines (point-min) start-point)))
(start-window (posn-window start-posn))
- (bounds (gnus-window-edges start-window))
+ (bounds (window-edges start-window))
(top (nth 1 bounds))
(bottom (if (window-minibuffer-p start-window)
(nth 3 bounds)
@@ -339,11 +328,6 @@ This must be bound to a button-down mouse event."
'("Pick"
["Switch binary mode off" gnus-binary-mode t]))))
-(eval-when-compile
- (when (featurep 'xemacs)
- (defvar gnus-binary-mode-on-hook)
- (defvar gnus-binary-mode-off-hook)))
-
(define-minor-mode gnus-binary-mode
"Minor mode for providing a binary group interface in Gnus summary buffers."
:lighter " Binary" :keymap gnus-binary-mode-map
@@ -389,7 +373,7 @@ lines."
:group 'gnus-summary-tree)
(defcustom gnus-selected-tree-face 'mode-line
- "*Face used for highlighting selected articles in the thread tree."
+ "Face used for highlighting selected articles in the thread tree."
:type 'face
:group 'gnus-summary-tree)
@@ -401,12 +385,12 @@ lines."
"Characters used to connect parents with children.")
(defcustom gnus-tree-mode-line-format "Gnus: %%b %S %Z"
- "*The format specification for the tree mode line."
+ "The format specification for the tree mode line."
:type 'string
:group 'gnus-summary-tree)
(defcustom gnus-generate-tree-function 'gnus-generate-vertical-tree
- "*Function for generating a thread tree.
+ "Function for generating a thread tree.
Two predefined functions are available:
`gnus-generate-horizontal-tree' and `gnus-generate-vertical-tree'."
:type '(radio (function-item gnus-generate-vertical-tree)
@@ -415,15 +399,10 @@ Two predefined functions are available:
:group 'gnus-summary-tree)
(defcustom gnus-tree-mode-hook nil
- "*Hook run in tree mode buffers."
+ "Hook run in tree mode buffers."
:type 'hook
:group 'gnus-summary-tree)
-(when (featurep 'xemacs)
- (add-hook 'gnus-tree-mode-hook 'gnus-xmas-tree-menu-add)
- (add-hook 'gnus-tree-mode-hook 'gnus-xmas-switch-horizontal-scrollbar-off))
-
-
;;; Internal variables.
(defvar gnus-tmp-name)
@@ -458,7 +437,7 @@ Two predefined functions are available:
(gnus-define-keys
map
"\r" gnus-tree-select-article
- gnus-mouse-2 gnus-tree-pick-article
+ [mouse-2] gnus-tree-pick-article
"\C-?" gnus-tree-read-summary-keys
"h" gnus-tree-show-summary
@@ -639,7 +618,7 @@ Two predefined functions are available:
(t (cdar gnus-tree-brackets))))
(buffer-read-only nil)
beg end)
- (gnus-add-text-properties
+ (add-text-properties
(setq beg (point))
(setq end (progn (eval gnus-tree-line-format-spec) (point)))
(list 'gnus-number gnus-tmp-number))
@@ -855,8 +834,7 @@ it in the environment specified by BINDINGS."
region)
(set-buffer gnus-tree-buffer)
(when (setq region (gnus-tree-article-region article))
- (when (or (not gnus-selected-tree-overlay)
- (gnus-extent-detached-p gnus-selected-tree-overlay))
+ (when (not gnus-selected-tree-overlay)
;; Create a new overlay.
(overlay-put
(setq gnus-selected-tree-overlay
@@ -885,13 +863,10 @@ it in the environment specified by BINDINGS."
(with-current-buffer (gnus-get-tree-buffer)
(let (region)
(when (setq region (gnus-tree-article-region article))
- (gnus-put-text-property (car region) (cdr region) 'face face)
+ (put-text-property (car region) (cdr region) 'face face)
(set-window-point
(gnus-get-buffer-window (current-buffer) t) (cdr region)))))))
-;;; Allow redefinition of functions.
-(gnus-ems-redefine)
-
(provide 'gnus-salt)
;;; gnus-salt.el ends here
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index d3a1139902..22c12af827 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -29,6 +29,7 @@
(require 'gnus)
(require 'gnus-sum)
+(require 'gnus-art)
(require 'gnus-range)
(require 'gnus-win)
(require 'message)
@@ -126,26 +127,26 @@ the `a' symbolic prefix to the score commands will always use
(function :tag "Other" :value 'ignore)))
(defcustom gnus-score-interactive-default-score 1000
- "*Scoring commands will raise/lower the score with this number as the default."
+ "Scoring commands will raise/lower the score with this number as the default."
:group 'gnus-score-default
:type 'integer)
(defcustom gnus-score-expiry-days 7
- "*Number of days before unused score file entries are expired.
+ "Number of days before unused score file entries are expired.
If this variable is nil, no score file entries will be expired."
:group 'gnus-score-expire
:type '(choice (const :tag "never" nil)
number))
(defcustom gnus-update-score-entry-dates t
- "*If non-nil, update matching score entry dates.
+ "If non-nil, update matching score entry dates.
If this variable is nil, then score entries that provide matches
will be expired along with non-matching score entries."
:group 'gnus-score-expire
:type 'boolean)
(defcustom gnus-decay-scores nil
- "*If non-nil, decay non-permanent scores.
+ "If non-nil, decay non-permanent scores.
If it is a regexp, only decay score files matching regexp."
:group 'gnus-score-decay
@@ -156,19 +157,19 @@ If it is a regexp, only decay score files matching regexp."
(regexp)))
(defcustom gnus-decay-score-function 'gnus-decay-score
- "*Function called to decay a score.
+ "Function called to decay a score.
It is called with one parameter -- the score to be decayed."
:group 'gnus-score-decay
:type '(radio (function-item gnus-decay-score)
(function :tag "Other")))
(defcustom gnus-score-decay-constant 3
- "*Decay all \"small\" scores with this amount."
+ "Decay all \"small\" scores with this amount."
:group 'gnus-score-decay
:type 'integer)
(defcustom gnus-score-decay-scale .05
- "*Decay all \"big\" scores with this factor."
+ "Decay all \"big\" scores with this factor."
:group 'gnus-score-decay
:type 'number)
@@ -248,7 +249,7 @@ If you use score decays, you might want to set values higher than
(integer :tag "Score"))))))
(defcustom gnus-adaptive-word-length-limit nil
- "*Words of a length lesser than this limit will be ignored when doing adaptive scoring."
+ "Words of a length lesser than this limit will be ignored when doing adaptive scoring."
:version "22.1"
:group 'gnus-score-adapt
:type '(radio (const :format "Unlimited " nil)
@@ -274,7 +275,7 @@ If you use score decays, you might want to set values higher than
"being" "current" "back" "still" "go" "point" "value" "each" "did"
"both" "true" "off" "say" "another" "state" "might" "under" "start"
"try" "re")
- "*Default list of words to be ignored when doing adaptive word scoring."
+ "Default list of words to be ignored when doing adaptive word scoring."
:group 'gnus-score-adapt
:type '(repeat string))
@@ -283,7 +284,7 @@ If you use score decays, you might want to set values higher than
(,gnus-catchup-mark . -10)
(,gnus-killed-mark . -20)
(,gnus-del-mark . -15))
- "*Alist of marks and scores."
+ "Alist of marks and scores."
:group 'gnus-score-adapt
:type '(repeat (cons (character :tag "Mark")
(integer :tag "Score"))))
@@ -299,12 +300,12 @@ If you use score decays, you might want to set values higher than
:type 'boolean)
(defcustom gnus-score-mimic-keymap nil
- "*Have the score entry functions pretend that they are a keymap."
+ "Have the score entry functions pretend that they are a keymap."
:group 'gnus-score-default
:type 'boolean)
(defcustom gnus-score-exact-adapt-limit 10
- "*Number that says how long a match has to be before using substring matching.
+ "Number that says how long a match has to be before using substring matching.
When doing adaptive scoring, one normally uses fuzzy or substring
matching. However, if the header one matches is short, the possibility
for false positives is great, so if the length of the match is less
@@ -739,6 +740,8 @@ current score file."
(with-current-buffer gnus-summary-buffer
(gnus-score-load-file current-score-file)))))
+(autoload 'appt-select-lowest-window "appt")
+
(defun gnus-score-insert-help (string alist idx)
(setq gnus-score-help-winconf (current-window-configuration))
(with-current-buffer (gnus-get-buffer-create "*Score Help*")
@@ -773,7 +776,7 @@ current score file."
(setq i (1+ i))))
(goto-char (point-min))
;; display ourselves in a small window at the bottom
- (gnus-select-lowest-window)
+ (appt-select-lowest-window)
(if (< (/ (window-height) 2) window-min-height)
(switch-to-buffer "*Score Help*")
(split-window)
@@ -1428,7 +1431,7 @@ If FORMAT, also format the current score file."
(and (file-exists-p file)
(not (file-writable-p file))))
()
- (setq score (setcdr entry (gnus-delete-alist 'touched score)))
+ (setq score (setcdr entry (assq-delete-all 'touched score)))
(erase-buffer)
(let (emacs-lisp-mode-hook)
(if (and (not gnus-adaptive-pretty-print)
@@ -1724,7 +1727,7 @@ score in `gnus-newsgroup-scored' by SCORE."
nil)
(defun gnus-score-decode-text-parts ()
- (gmm-labels
+ (cl-labels
((mm-text-parts
(handle)
(cond ((stringp (car handle))
@@ -1748,7 +1751,7 @@ score in `gnus-newsgroup-scored' by SCORE."
(mm-display-inline handle)
(goto-char (point-max))))))
- (let (;(mm-text-html-renderer 'w3m-standalone)
+ (let ( ;(mm-text-html-renderer 'w3m-standalone)
(handles (mm-dissect-buffer t)))
(save-excursion
(article-goto-body)
@@ -3048,19 +3051,12 @@ If ADAPT, return the home adaptive file instead."
(defun gnus-decay-score (score)
"Decay SCORE according to `gnus-score-decay-constant' and `gnus-score-decay-scale'."
- (let ((n (- score
- (* (if (< score 0) -1 1)
- (min (abs score)
- (max gnus-score-decay-constant
- (* (abs score)
- gnus-score-decay-scale)))))))
- (if (and (featurep 'xemacs)
- ;; XEmacs's floor can handle only the floating point
- ;; number below the half of the maximum integer.
- (> (abs n) (lsh -1 -2)))
- (string-to-number
- (car (split-string (number-to-string n) "\\.")))
- (floor n))))
+ (floor (- score
+ (* (if (< score 0) -1 1)
+ (min (abs score)
+ (max gnus-score-decay-constant
+ (* (abs score)
+ gnus-score-decay-scale)))))))
(defun gnus-decay-scores (alist day)
"Decay non-permanent scores in ALIST."
diff --git a/lisp/gnus/gnus-spec.el b/lisp/gnus/gnus-spec.el
index 2176e3fe34..a3525d8f28 100644
--- a/lisp/gnus/gnus-spec.el
+++ b/lisp/gnus/gnus-spec.el
@@ -29,19 +29,6 @@
(require 'gnus)
-(defcustom gnus-use-correct-string-widths (featurep 'xemacs)
- "*If non-nil, use correct functions for dealing with wide characters."
- :version "22.1"
- :group 'gnus-format
- :type 'boolean)
-
-(defcustom gnus-make-format-preserve-properties (featurep 'xemacs)
- "*If non-nil, use a replacement `format' function which preserves
-text properties. This is only needed on XEmacs, as Emacs does this anyway."
- :version "22.1"
- :group 'gnus-format
- :type 'boolean)
-
;;; Internal variables.
(defvar gnus-summary-mark-positions nil)
@@ -79,7 +66,6 @@ text properties. This is only needed on XEmacs, as Emacs does this anyway."
(defvar gnus-tmp-news-method)
(defvar gnus-tmp-news-server)
(defvar gnus-mouse-face)
-(defvar gnus-mouse-face-prop)
(defvar gnus-tmp-header)
(defvar gnus-tmp-from)
@@ -87,11 +73,9 @@ text properties. This is only needed on XEmacs, as Emacs does this anyway."
(header gnus-tmp-from))
(defmacro gnus-lrm-string-p (string)
- (if (fboundp 'bidi-string-mark-left-to-right)
- ;; LRM, RLM, PDF characters as integers to avoid breaking Emacs
- ;; 23.
- `(memq (aref ,string (1- (length ,string))) '(8206 8207 8236))
- nil))
+ ;; LRM, RLM, PDF characters as integers to avoid breaking Emacs
+ ;; 23.
+ `(memq (aref ,string (1- (length ,string))) '(8206 8207 8236)))
(defvar gnus-lrm-string (if (ignore-errors (string 8206))
(propertize (string 8206) 'invisible t)
@@ -226,9 +210,9 @@ Return a list of updated types."
:type 'face)
(defun gnus-mouse-face-function (form type)
- `(gnus-put-text-property
+ `(put-text-property
(point) (progn ,@form (point))
- gnus-mouse-face-prop
+ 'mouse-face
,(if (equal type 0)
'gnus-mouse-face
`(quote ,(symbol-value (intern (format "gnus-mouse-face-%d" type)))))))
@@ -259,23 +243,20 @@ Return a list of updated types."
:type 'face)
(defun gnus-face-face-function (form type)
- `(gnus-add-text-properties
+ `(add-text-properties
(point) (progn ,@form (point))
(cons 'face
(cons
;; Delay consing the value of the `face' property until
- ;; `gnus-add-text-properties' runs, since it will be modified
- ;; by `gnus-put-text-property-excluding-characters-with-faces'.
+ ;; `add-text-properties' runs, since it will be modified
+ ;; by `put-text-property-excluding-characters-with-faces'.
(list ',(symbol-value (intern (format "gnus-face-%d" type))) 'default)
;; Redundant now, but still convenient.
'(gnus-face t)))))
(defun gnus-balloon-face-function (form type)
- `(gnus-put-text-property
- (point) (progn ,@form (point))
- ,(if (fboundp 'balloon-help-mode)
- ''balloon-help
- ''help-echo)
+ `(put-text-property
+ (point) (progn ,@form (point)) 'help-echo
,(intern (format "gnus-balloon-face-%d" type))))
(defun gnus-spec-tab (column)
@@ -316,62 +297,42 @@ Return a list of updated types."
(setq wend seek)
(substring string wstart (1- wend))))
-(defun gnus-string-width-function ()
- (cond
- (gnus-use-correct-string-widths
- 'gnus-correct-length)
- ((fboundp 'string-width)
- 'string-width)
- (t
- 'length)))
-
-(defun gnus-substring-function ()
- (cond
- (gnus-use-correct-string-widths
- 'gnus-correct-substring)
- ((fboundp 'string-width)
- 'gnus-correct-substring)
- (t
- 'substring)))
-
(defun gnus-tilde-max-form (el max-width)
"Return a form that limits EL to MAX-WIDTH."
- (let ((max (abs max-width))
- (length-fun (gnus-string-width-function))
- (substring-fun (gnus-substring-function)))
+ (let ((max (abs max-width)))
(if (symbolp el)
- `(if (> (,length-fun ,el) ,max)
+ `(if (> (string-width ,el) ,max)
,(if (< max-width 0)
- `(,substring-fun ,el (- (,length-fun ,el) ,max))
+ `(gnus-correct-substring ,el (- (string-width ,el) ,max))
`(if (gnus-lrm-string-p ,el)
- (concat (,substring-fun ,el 0 ,max) ,gnus-lrm-string)
- (,substring-fun ,el 0 ,max)))
+ (concat (gnus-correct-substring ,el 0 ,max)
+ ,gnus-lrm-string)
+ (gnus-correct-substring ,el 0 ,max)))
,el)
`(let ((val (eval ,el)))
- (if (> (,length-fun val) ,max)
+ (if (> (string-width val) ,max)
,(if (< max-width 0)
- `(,substring-fun val (- (,length-fun val) ,max))
+ `(gnus-correct-substring val (- (string-width val) ,max))
`(if (gnus-lrm-string-p val)
- (concat (,substring-fun val 0 ,max) ,gnus-lrm-string)
- (,substring-fun val 0 ,max)))
+ (concat (gnus-correct-substring val 0 ,max)
+ ,gnus-lrm-string)
+ (gnus-correct-substring val 0 ,max)))
val)))))
(defun gnus-tilde-cut-form (el cut-width)
"Return a form that cuts CUT-WIDTH off of EL."
- (let ((cut (abs cut-width))
- (length-fun (gnus-string-width-function))
- (substring-fun (gnus-substring-function)))
+ (let ((cut (abs cut-width)))
(if (symbolp el)
- `(if (> (,length-fun ,el) ,cut)
+ `(if (> (string-width ,el) ,cut)
,(if (< cut-width 0)
- `(,substring-fun ,el 0 (- (,length-fun ,el) ,cut))
- `(,substring-fun ,el ,cut))
+ `(gnus-correct-substring ,el 0 (- (string-width ,el) ,cut))
+ `(gnus-correct-substring ,el ,cut))
,el)
`(let ((val (eval ,el)))
- (if (> (,length-fun val) ,cut)
+ (if (> (string-width val) ,cut)
,(if (< cut-width 0)
- `(,substring-fun val 0 (- (,length-fun val) ,cut))
- `(,substring-fun val ,cut))
+ `(gnus-correct-substring val 0 (- (string-width val) ,cut))
+ `(gnus-correct-substring val ,cut))
val)))))
(defun gnus-tilde-ignore-form (el ignore-value)
@@ -388,17 +349,16 @@ Return a list of updated types."
characters correctly. This is because `format' may pad to columns or to
characters when given a pad value."
(let ((pad (abs pad-width))
- (side (< 0 pad-width))
- (length-fun (gnus-string-width-function)))
+ (side (< 0 pad-width)))
(if (symbolp el)
- `(let ((need (- ,pad (,length-fun ,el))))
+ `(let ((need (- ,pad (string-width ,el))))
(if (> need 0)
(concat ,(when side '(make-string need ?\ ))
,el
,(when (not side) '(make-string need ?\ )))
,el))
`(let* ((val (eval ,el))
- (need (- ,pad (,length-fun val))))
+ (need (- ,pad (string-width val))))
(if (> need 0)
(concat ,(when side '(make-string need ?\ ))
val
@@ -464,7 +424,7 @@ characters when given a pad value."
`(let (gnus-position)
,@(gnus-complex-form-to-spec form spec-alist)
(if gnus-position
- (gnus-put-text-property gnus-position (1+ gnus-position)
+ (put-text-property gnus-position (1+ gnus-position)
'gnus-position t)))
`(progn
,@(gnus-complex-form-to-spec form spec-alist)))))))
@@ -486,42 +446,6 @@ characters when given a pad value."
(nth 1 sform)))))
form)))
-
-(defun gnus-xmas-format (fstring &rest args)
- "A version of `format' which preserves text properties.
-
-Required for XEmacs, where the built in `format' function strips all text
-properties from both the format string and any inserted strings.
-
-Only supports the format sequence %s, and %% for inserting
-literal % characters. A pad width and an optional - (to right pad)
-are supported for %s."
- (let ((re "%%\\|%\\(-\\)?\\([1-9][0-9]*\\)?s")
- (n (length args)))
- (with-temp-buffer
- (insert fstring)
- (goto-char (point-min))
- (while (re-search-forward re nil t)
- (goto-char (match-end 0))
- (cond
- ((string= (match-string 0) "%%")
- (delete-char -1))
- (t
- (if (null args)
- (signal 'wrong-number-of-arguments
- (list #'gnus-xmas-format n fstring)))
- (let* ((minlen (string-to-number (or (match-string 2) "")))
- (arg (car args))
- (str (if (stringp arg) arg (format "%s" arg)))
- (lpad (null (match-string 1)))
- (padlen (max 0 (- minlen (length str)))))
- (replace-match "")
- (if lpad (insert-char ?\ padlen))
- (insert str)
- (unless lpad (insert-char ?\ padlen))
- (setq args (cdr args))))))
- (buffer-string))))
-
(defun gnus-parse-simple-format (format spec-alist &optional insert)
;; This function parses the FORMAT string with the help of the
;; SPEC-ALIST and returns a list that can be eval'ed to return a
@@ -628,14 +552,10 @@ are supported for %s."
(setq elem '("*" ?s))))
(setq elem-type (cadr elem))
;; Insert the new format elements.
- (when (and pad-width
- (not (and (featurep 'xemacs)
- gnus-use-correct-string-widths)))
+ (when pad-width
(insert (number-to-string pad-width)))
;; Create the form to be evalled.
- (if (or max-width cut-width ignore-value
- (and (featurep 'xemacs)
- gnus-use-correct-string-widths))
+ (if (or max-width cut-width ignore-value)
(progn
(insert ?s)
(let ((el (car elem)))
@@ -690,13 +610,6 @@ are supported for %s."
;; A single string spec in the end of the spec.
((string-match "\\`\\([^%]+\\)%[sc]\\'" fstring)
(list (match-string 1 fstring) (car flist)))
- ;; Only string (and %) specs (XEmacs only!)
- ((and (featurep 'xemacs)
- gnus-make-format-preserve-properties
- (string-match
- "\\`\\([^%]*\\(%%\\|%-?\\([1-9][0-9]*\\)?s\\)\\)*[^%]*\\'"
- fstring))
- (list (cons 'gnus-xmas-format (cons fstring (nreverse flist)))))
;; A more complex spec.
(t
(list (cons 'format (cons fstring (nreverse flist)))))))
@@ -717,7 +630,7 @@ are supported for %s."
If PROPS, insert the result."
(let ((form (gnus-parse-format format alist props)))
(if props
- (gnus-add-text-properties (point) (progn (eval form) (point)) props)
+ (add-text-properties (point) (progn (eval form) (point)) props)
(eval form))))
(defun gnus-set-format (type &optional insertable)
@@ -727,6 +640,25 @@ If PROPS, insert the result."
(symbol-value (intern (format "gnus-%s-line-format-alist" type)))
insertable)))
+
+ (defun gnus-summary-line-format-spec ()
+ (insert gnus-tmp-unread gnus-tmp-replied
+ gnus-tmp-score-char gnus-tmp-indentation)
+ (put-text-property
+ (point)
+ (progn
+ (insert
+ gnus-tmp-opening-bracket
+ (format "%4d: %-20s"
+ gnus-tmp-lines
+ (if (> (length gnus-tmp-name) 20)
+ (truncate-string-to-width gnus-tmp-name 20)
+ gnus-tmp-name))
+ gnus-tmp-closing-bracket)
+ (point))
+ 'mouse-face gnus-mouse-face)
+ (insert " " gnus-tmp-subject-or-nil "\n"))
+
(provide 'gnus-spec)
;; Local Variables:
diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el
index 5874bd7608..6dbb54efb4 100644
--- a/lisp/gnus/gnus-srvr.el
+++ b/lisp/gnus/gnus-srvr.el
@@ -32,6 +32,7 @@
(require 'gnus-group)
(require 'gnus-int)
(require 'gnus-range)
+(require 'gnus-cloud)
(autoload 'gnus-group-make-nnir-group "nnir")
@@ -109,8 +110,10 @@ If nil, a faster, but more primitive, buffer is used instead."
(defvar gnus-server-mode-map)
-(defvar gnus-server-menu-hook nil
- "*Hook run after the creation of the server mode menu.")
+(defcustom gnus-server-menu-hook nil
+ "Hook run after the creation of the server mode menu."
+ :type 'hook
+ :group 'gnus-server)
(defun gnus-server-make-menu-bar ()
(gnus-turn-off-edit-menu 'server)
@@ -138,7 +141,8 @@ If nil, a faster, but more primitive, buffer is used instead."
["Close" gnus-server-close-server t]
["Offline" gnus-server-offline-server t]
["Deny" gnus-server-deny-server t]
- ["Toggle Cloud" gnus-server-toggle-cloud-server t]
+ ["Toggle Cloud Sync for this server" gnus-server-toggle-cloud-server t]
+ ["Toggle Cloud Sync Host" gnus-server-toggle-cloud-method-server t]
"---"
["Open All" gnus-server-open-all-servers t]
["Close All" gnus-server-close-all-servers t]
@@ -156,7 +160,7 @@ If nil, a faster, but more primitive, buffer is used instead."
(gnus-define-keys gnus-server-mode-map
" " gnus-server-read-server-in-server-buffer
"\r" gnus-server-read-server
- gnus-mouse-2 gnus-server-pick-server
+ [mouse-2] gnus-server-pick-server
"q" gnus-server-exit
"l" gnus-server-list-servers
"k" gnus-server-kill-server
@@ -185,6 +189,7 @@ If nil, a faster, but more primitive, buffer is used instead."
"z" gnus-server-compact-server
"i" gnus-server-toggle-cloud-server
+ "I" gnus-server-toggle-cloud-method-server
"\C-c\C-i" gnus-info-find-node
"\C-c\C-b" gnus-bug))
@@ -203,7 +208,14 @@ If nil, a faster, but more primitive, buffer is used instead."
'((((class color) (background light)) (:foreground "ForestGreen" :bold t))
(((class color) (background dark)) (:foreground "PaleGreen" :bold t))
(t (:bold t)))
- "Face used for displaying AGENTIZED servers"
+ "Face used for displaying Cloud-synced servers"
+ :group 'gnus-server-visual)
+
+(defface gnus-server-cloud-host
+ '((((class color) (background light)) (:foreground "ForestGreen" :inverse-video t :italic t))
+ (((class color) (background dark)) (:foreground "PaleGreen" :inverse-video t :italic t))
+ (t (:inverse-video t :italic t)))
+ "Face used for displaying the Cloud Host"
:group 'gnus-server-visual)
(defface gnus-server-opened
@@ -249,7 +261,8 @@ If nil, a faster, but more primitive, buffer is used instead."
(defvar gnus-server-font-lock-keywords
'(("(\\(agent\\))" 1 'gnus-server-agent)
- ("(\\(cloud\\))" 1 'gnus-server-cloud)
+ ("(\\(cloud[-]sync\\))" 1 'gnus-server-cloud)
+ ("(\\(CLOUD[-]HOST\\))" 1 'gnus-server-cloud-host)
("(\\(opened\\))" 1 'gnus-server-opened)
("(\\(closed\\))" 1 'gnus-server-closed)
("(\\(offline\\))" 1 'gnus-server-offline)
@@ -280,10 +293,8 @@ The following commands are available:
(buffer-disable-undo)
(setq truncate-lines t)
(setq buffer-read-only t)
- (if (featurep 'xemacs)
- (put 'gnus-server-mode 'font-lock-defaults '(gnus-server-font-lock-keywords t))
- (set (make-local-variable 'font-lock-defaults)
- '(gnus-server-font-lock-keywords t)))
+ (set (make-local-variable 'font-lock-defaults)
+ '(gnus-server-font-lock-keywords t))
(gnus-run-mode-hooks 'gnus-server-mode-hook))
(defun gnus-server-insert-server-line (name method)
@@ -306,11 +317,15 @@ The following commands are available:
(gnus-agent-method-p method))
" (agent)"
""))
- (gnus-tmp-cloud (if (gnus-cloud-server-p gnus-tmp-name)
- " (cloud)"
- "")))
+ (gnus-tmp-cloud (concat
+ (if (gnus-cloud-host-server-p gnus-tmp-name)
+ " (CLOUD-HOST)"
+ "")
+ (if (gnus-cloud-server-p gnus-tmp-name)
+ " (cloud-sync)"
+ ""))))
(beginning-of-line)
- (gnus-add-text-properties
+ (add-text-properties
(point)
(prog1 (1+ (point))
;; Insert the text.
@@ -686,8 +701,10 @@ The following commands are available:
;;; Browse Server Mode
;;;
-(defvar gnus-browse-menu-hook nil
- "*Hook run after the creation of the browse mode menu.")
+(defcustom gnus-browse-menu-hook nil
+ "Hook run after the creation of the browse mode menu."
+ :group 'gnus-server
+ :type 'hook)
(defcustom gnus-browse-subscribe-newsgroup-method
'gnus-subscribe-alphabetically
@@ -804,7 +821,7 @@ claim them."
(while (not (eobp))
(ignore-errors
(push (cons
- (mm-string-as-unibyte
+ (string-as-unibyte
(buffer-substring
(point)
(progn
@@ -817,7 +834,7 @@ claim them."
(while (not (eobp))
(ignore-errors
(push (cons
- (mm-string-as-unibyte
+ (string-as-unibyte
(if (eq (char-after) ?\")
(read cur)
(let ((p (point)) (name ""))
@@ -865,7 +882,7 @@ claim them."
(prefix (let ((gnus-select-method orig-select-method))
(gnus-group-prefixed-name "" method))))
(while (setq group (pop groups))
- (gnus-add-text-properties
+ (add-text-properties
(point)
(prog1 (1+ (point))
(insert
@@ -882,10 +899,9 @@ claim them."
(t ?K)))
(max 0 (- (1+ (cddr group)) (cadr group)))
;; Don't decode if name is ASCII
- (if (and (fboundp 'detect-coding-string)
- (eq (detect-coding-string name t) 'undecided))
+ (if (eq (detect-coding-string name t) 'undecided)
name
- (mm-decode-coding-string
+ (decode-coding-string
name
(inline (gnus-group-name-charset method name)))))))
(list 'gnus-group name)
@@ -1131,6 +1147,25 @@ Requesting compaction of %s... (this may take a long time)"
"Replication of %s in the cloud will stop")
server)))
+(defun gnus-server-toggle-cloud-method-server ()
+ "Set the server under point to host the Emacs Cloud."
+ (interactive)
+ (let ((server (gnus-server-server-name)))
+ (unless server
+ (error "No server on the current line"))
+ (unless (gnus-cloud-host-acceptable-method-p server)
+ (error "The server under point can't host the Emacs Cloud"))
+
+ (when (not (string-equal gnus-cloud-method server))
+ (custom-set-variables '(gnus-cloud-method server))
+ ;; Note we can't use `Custom-save' here.
+ (when (gnus-yes-or-no-p
+ (format "The new cloud host server is %S now. Save it? " server))
+ (customize-save-variable 'gnus-cloud-method server)))
+ (when (gnus-yes-or-no-p (format "Upload Cloud data to %S now? " server))
+ (gnus-message 1 "Uploading all data to Emacs Cloud server %S" server)
+ (gnus-cloud-upload-data t))))
+
(provide 'gnus-srvr)
;;; gnus-srvr.el ends here
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index 34a5ff6cba..10e4dbcc77 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -87,21 +87,21 @@ If a file with the `.el' or `.elc' suffixes exists, it will be read instead."
:type '(choice file (const nil)))
(defcustom gnus-use-dribble-file t
- "*Non-nil means that Gnus will use a dribble file to store user updates.
+ "Non-nil means that Gnus will use a dribble file to store user updates.
If Emacs should crash without saving the .newsrc files, complete
information can be restored from the dribble file."
:group 'gnus-dribble-file
:type 'boolean)
(defcustom gnus-dribble-directory nil
- "*The directory where dribble files will be saved.
+ "The directory where dribble files will be saved.
If this variable is nil, the directory where the .newsrc files are
saved will be used."
:group 'gnus-dribble-file
:type '(choice directory (const nil)))
(defcustom gnus-check-new-newsgroups 'ask-server
- "*Non-nil means that Gnus will run `gnus-find-new-newsgroups' at startup.
+ "Non-nil means that Gnus will run `gnus-find-new-newsgroups' at startup.
This normally finds new newsgroups by comparing the active groups the
servers have already reported with those Gnus already knows, either alive
or killed.
@@ -138,14 +138,14 @@ check for new newsgroups with \\<gnus-group-mode-map>\\[gnus-find-new-newsgroups
(sexp :format "%v"))))
(defcustom gnus-check-bogus-newsgroups nil
- "*Non-nil means that Gnus will check and remove bogus newsgroup at startup.
+ "Non-nil means that Gnus will check and remove bogus newsgroup at startup.
If this variable is nil, then you have to tell Gnus explicitly to
check for bogus newsgroups with \\<gnus-group-mode-map>\\[gnus-group-check-bogus-groups]."
:group 'gnus-start-server
:type 'boolean)
(defcustom gnus-read-active-file 'some
- "*Non-nil means that Gnus will read the entire active file at startup.
+ "Non-nil means that Gnus will read the entire active file at startup.
If this variable is nil, Gnus will only know about the groups in your
`.newsrc' file.
@@ -183,24 +183,24 @@ Levels' for details.")
"Groups with this level are killed.")
(defcustom gnus-level-default-subscribed 3
- "*New subscribed groups will be subscribed at this level."
+ "New subscribed groups will be subscribed at this level."
:group 'gnus-group-levels
:type 'integer)
(defcustom gnus-level-default-unsubscribed 6
- "*New unsubscribed groups will be unsubscribed at this level."
+ "New unsubscribed groups will be unsubscribed at this level."
:group 'gnus-group-levels
:type 'integer)
(defcustom gnus-activate-level (1+ gnus-level-subscribed)
- "*Groups higher than this level won't be activated on startup.
+ "Groups higher than this level won't be activated on startup.
Setting this variable to something low might save lots of time when
you have many groups that you aren't interested in."
:group 'gnus-group-levels
:type 'integer)
(defcustom gnus-activate-foreign-newsgroups 4
- "*If nil, Gnus will not check foreign newsgroups at startup.
+ "If nil, Gnus will not check foreign newsgroups at startup.
If it is non-nil, it should be a number between one and nine. Foreign
newsgroups that have a level lower or equal to this number will be
activated on startup. For instance, if you want to active all
@@ -216,7 +216,7 @@ groups."
(const :tag "none" nil)))
(defcustom gnus-read-newsrc-file t
- "*Non-nil means that Gnus will read the `.newsrc' file.
+ "Non-nil means that Gnus will read the `.newsrc' file.
Gnus always reads its own startup file, which is called
\".newsrc.eld\". The file called \".newsrc\" is in a format that can
be readily understood by other newsreaders. If you don't plan on
@@ -227,7 +227,7 @@ entry."
:type 'boolean)
(defcustom gnus-save-newsrc-file t
- "*Non-nil means that Gnus will save the `.newsrc' file.
+ "Non-nil means that Gnus will save the `.newsrc' file.
Gnus always saves its own startup file, which is called
\".newsrc.eld\". The file called \".newsrc\" is in a format that can
be readily understood by other newsreaders. If you don't plan on
@@ -237,7 +237,7 @@ exit."
:type 'boolean)
(defcustom gnus-save-killed-list t
- "*If non-nil, save the list of killed groups to the startup file.
+ "If non-nil, save the list of killed groups to the startup file.
If you set this variable to nil, you'll save both time (when starting
and quitting) and space (both memory and disk), but it will also mean
that Gnus has no record of which groups are new and which are old, so
@@ -263,7 +263,7 @@ not match this regexp will be removed before saving the list."
"^[\"][\"#'()]" ; bogus characters
)
"\\|")
- "*A regexp to match uninteresting newsgroups in the active file.
+ "A regexp to match uninteresting newsgroups in the active file.
Any lines in the active file matching this regular expression are
removed from the newsgroup list before anything else is done to it,
thus making them effectively non-existent."
@@ -271,7 +271,7 @@ thus making them effectively non-existent."
:type 'regexp)
(defcustom gnus-subscribe-newsgroup-method 'gnus-subscribe-zombies
- "*Function(s) called with a group name when new group is detected.
+ "Function(s) called with a group name when new group is detected.
A few pre-made functions are supplied: `gnus-subscribe-randomly'
inserts new groups at the beginning of the list of groups;
`gnus-subscribe-alphabetically' inserts new groups in strict
@@ -295,7 +295,7 @@ claim them."
(define-obsolete-variable-alias 'gnus-subscribe-newsgroup-hooks
'gnus-subscribe-newsgroup-functions "24.3")
(defcustom gnus-subscribe-newsgroup-functions nil
- "*Hooks run after you subscribe to a new group.
+ "Hooks run after you subscribe to a new group.
The hooks will be called with new group's name as argument."
:version "22.1"
:group 'gnus-group-new
@@ -303,7 +303,7 @@ The hooks will be called with new group's name as argument."
(defcustom gnus-subscribe-options-newsgroup-method
'gnus-subscribe-alphabetically
- "*Function(s) called to subscribe newsgroups mentioned on \"options -n\" lines.
+ "Function(s) called to subscribe newsgroups mentioned on \"options -n\" lines.
If, for instance, you want to subscribe to all newsgroups in the
\"no\" and \"alt\" hierarchies, you'd put the following in your
.newsrc file:
@@ -324,7 +324,7 @@ with the subscription method in this variable."
(repeat function)))
(defcustom gnus-subscribe-hierarchical-interactive nil
- "*If non-nil, Gnus will offer to subscribe hierarchically.
+ "If non-nil, Gnus will offer to subscribe hierarchically.
When a new hierarchy appears, Gnus will ask the user:
'alt.binaries': Do you want to subscribe to this hierarchy? ([d]ys):
@@ -336,7 +336,7 @@ hierarchy in its entirety."
:type 'boolean)
(defcustom gnus-auto-subscribed-categories '(mail post-mail)
- "*New groups from methods of these categories will be subscribed automatically.
+ "New groups from methods of these categories will be subscribed automatically.
Note that this variable only deals with new groups. It has no
effect whatsoever on old groups. The default is to automatically
subscribe all groups from mail-like backends."
@@ -346,7 +346,7 @@ subscribe all groups from mail-like backends."
(defcustom gnus-auto-subscribed-groups
"^nnml\\|^nnfolder\\|^nnmbox\\|^nnmh\\|^nnbabyl\\|^nnmaildir\\|^nnimap"
- "*All new groups that match this regexp will be subscribed automatically.
+ "All new groups that match this regexp will be subscribed automatically.
Note that this variable only deals with new groups. It has no effect
whatsoever on old groups.
@@ -357,7 +357,7 @@ be subscribed using `gnus-subscribe-options-newsgroup-method'."
:type 'regexp)
(defcustom gnus-options-subscribe nil
- "*All new groups matching this regexp will be subscribed unconditionally.
+ "All new groups matching this regexp will be subscribed unconditionally.
Note that this variable deals only with new newsgroups. This variable
does not affect old newsgroups.
@@ -369,7 +369,7 @@ be subscribed using `gnus-subscribe-options-newsgroup-method'."
(const :tag "none" nil)))
(defcustom gnus-options-not-subscribe nil
- "*All new groups matching this regexp will be ignored.
+ "All new groups matching this regexp will be ignored.
Note that this variable deals only with new newsgroups. This variable
does not affect old (already subscribed) newsgroups."
:group 'gnus-group-new
@@ -377,7 +377,7 @@ does not affect old (already subscribed) newsgroups."
(const :tag "none" nil)))
(defcustom gnus-modtime-botch nil
- "*Non-nil means .newsrc should be deleted prior to save.
+ "Non-nil means .newsrc should be deleted prior to save.
Its use is due to the bogus appearance that .newsrc was modified on
disc."
:group 'gnus-newsrc
@@ -432,7 +432,7 @@ See also `gnus-before-startup-hook'."
(defcustom gnus-after-getting-new-news-hook
'(gnus-display-time-event-handler)
- "*A hook run after Gnus checks for new news when Gnus is already running."
+ "A hook run after Gnus checks for new news when Gnus is already running."
:version "24.1"
:group 'gnus-group-new
:type 'hook)
@@ -865,11 +865,6 @@ If REGEXP is given, lines that match it will be deleted."
;; Make sure that each dribble entry is a single line, so that
;; the "remove" code above works.
(insert (replace-regexp-in-string "\n" "\\\\n" string) "\n")
- ;; This has been commented by Josh Huber <huber@alum.wpi.edu>
- ;; It causes problems with both XEmacs and Emacs 21, and doesn't
- ;; seem to be of much value. (FIXME: remove this after we make sure
- ;; it's not needed).
- ;; (set-window-point (get-buffer-window (current-buffer)) (point-max))
(bury-buffer gnus-dribble-buffer)
(with-current-buffer gnus-group-buffer
(gnus-group-set-mode-line))
@@ -893,9 +888,7 @@ If REGEXP is given, lines that match it will be deleted."
(setq buffer-file-name dribble-file)
;; The buffer may be shrunk a lot when deleting old entries.
;; It caused the auto-saving to stop.
- (if (featurep 'emacs)
- (set (make-local-variable 'auto-save-include-big-deletions) t)
- (set (make-local-variable 'disable-auto-save-when-buffer-shrinks) nil))
+ (set (make-local-variable 'auto-save-include-big-deletions) t)
(auto-save-mode t)
(buffer-disable-undo)
(bury-buffer (current-buffer))
@@ -1675,10 +1668,10 @@ backend check whether the group actually exists."
type-cache))
;; Only add groups that need updating.
(if (or (and foreign-level (null (numberp foreign-level)))
- (funcall (if one-level #'= #'<=) (gnus-info-level info)
- (if (eq (cadr method-group-list) 'foreign)
- foreign-level
- alevel)))
+ (funcall (if one-level #'= #'<=) (gnus-info-level info)
+ (if (eq (cadr method-group-list) 'foreign)
+ foreign-level
+ alevel)))
(setcar (nthcdr 2 method-group-list)
(cons info (nth 2 method-group-list)))
;; The group is inactive, so we nix out the number of unread articles.
@@ -1997,7 +1990,7 @@ backend check whether the group actually exists."
(while lists
(setq killed (car lists))
(while killed
- (gnus-sethash (mm-string-as-unibyte (car killed)) nil hashtb)
+ (gnus-sethash (string-as-unibyte (car killed)) nil hashtb)
(setq killed (cdr killed)))
(setq lists (cdr lists)))))
@@ -2393,8 +2386,8 @@ If FORCE is non-nil, the .newsrc file is read."
(funcall func convert-to)))
(gnus-dribble-enter
- (gnus-format-message ";Converted gnus from version `%s' to `%s'."
- gnus-newsrc-file-version gnus-version)))))))
+ (format-message ";Converted gnus from version `%s' to `%s'."
+ gnus-newsrc-file-version gnus-version)))))))
(defun gnus-convert-mark-converter-prompt (converter no-prompt)
"Indicate whether CONVERTER requires gnus-convert-old-newsrc to
@@ -2460,7 +2453,7 @@ If FORCE is non-nil, the .newsrc file is read."
(dolist (elem gnus-newsrc-alist)
;; Protect against broken .newsrc.el files.
(when (car elem)
- (setcar elem (mm-string-as-unibyte (car elem)))))
+ (setcar elem (string-as-unibyte (car elem)))))
(gnus-make-hashtable-from-newsrc-alist)
(when (file-newer-than-file-p file ding-file)
;; Old format quick file
@@ -3032,7 +3025,7 @@ If FORCE is non-nil, the .newsrc file is read."
(defun gnus-slave-save-newsrc ()
(with-current-buffer gnus-dribble-buffer
(let ((slave-name
- (mm-make-temp-file (concat gnus-current-startup-file "-slave-")))
+ (make-temp-file (concat gnus-current-startup-file "-slave-")))
(modes (ignore-errors
(file-modes (concat gnus-current-startup-file ".eld")))))
(let ((coding-system-for-write gnus-ding-file-coding-system))
@@ -3164,8 +3157,8 @@ If FORCE is non-nil, the .newsrc file is read."
(gnus-parameter-charset name)
gnus-default-charset)))
;; Fixme: Don't decode in unibyte mode.
- (when (and str charset (featurep 'mule))
- (setq str (mm-decode-coding-string str charset)))
+ (when (and str charset)
+ (setq str (decode-coding-string str charset)))
(set group str)))
(forward-line 1))))
(gnus-message 5 "Reading descriptions file...done")
@@ -3203,26 +3196,7 @@ If this variable is nil, don't do anything."
(defun gnus-check-reasonable-setup ()
;; Check whether nnml and nnfolder share a directory.
- (let ((display-warn
- (if (fboundp 'display-warning)
- 'display-warning
- (lambda (type message)
- (if noninteractive
- (message "Warning (%s): %s" type message)
- (let (window)
- (with-current-buffer (get-buffer-create "*Warnings*")
- (goto-char (point-max))
- (unless (bolp)
- (insert "\n"))
- (insert (format "Warning (%s): %s\n" type message))
- (setq window (display-buffer (current-buffer)))
- (set-window-start
- window
- (prog2
- (forward-line (- 1 (window-height window)))
- (point)
- (goto-char (point-max))))))))))
- method active actives match)
+ (let (method active actives match)
(dolist (server gnus-server-alist)
(setq method (gnus-server-to-method server)
active (intern (format "%s-active-file" (car method))))
@@ -3230,11 +3204,11 @@ If this variable is nil, don't do anything."
(gnus-server-opened method)
(boundp active))
(when (setq match (assoc (symbol-value active) actives))
- (funcall display-warn 'gnus-server
- (format "%s and %s share the same active file %s"
- (car method)
- (cadr match)
- (car match))))
+ (display-warning 'gnus-server
+ (format "%s and %s share the same active file %s"
+ (car method)
+ (cadr match)
+ (car match))))
(push (list (symbol-value active) method) actives)))))
(provide 'gnus-start)
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 378d342d66..910c796915 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -24,11 +24,7 @@
;;; Code:
-(eval-when-compile
- (require 'cl))
-(eval-when-compile
- (when (featurep 'xemacs)
- (require 'easy-mmode))) ; for `define-minor-mode'
+(eval-when-compile (require 'cl))
(defvar tool-bar-mode)
(defvar gnus-tmp-header)
@@ -60,7 +56,7 @@
(autoload 'nnir-article-group "nnir" nil nil 'macro)
(defcustom gnus-kill-summary-on-exit t
- "*If non-nil, kill the summary buffer when you exit from it.
+ "If non-nil, kill the summary buffer when you exit from it.
If nil, the summary will become a \"*Dead Summary*\" buffer, and
it will be killed sometime later."
:group 'gnus-summary-exit
@@ -82,7 +78,7 @@ See `gnus-group-goto-unread'."
:type 'boolean)
(defcustom gnus-fetch-old-headers nil
- "*Non-nil means that Gnus will try to build threads by grabbing old headers.
+ "Non-nil means that Gnus will try to build threads by grabbing old headers.
If an unread article in the group refers to an older, already
read (or just marked as read) article, the old article will not
normally be displayed in the Summary buffer. If this variable is
@@ -109,14 +105,14 @@ leads to very slow summary generation."
(sexp :menu-tag "other" t)))
(defcustom gnus-refer-thread-limit 500
- "*The number of old headers to fetch when doing \\<gnus-summary-mode-map>\\[gnus-summary-refer-thread].
+ "The number of old headers to fetch when doing \\<gnus-summary-mode-map>\\[gnus-summary-refer-thread].
If t, fetch all the available old headers."
:group 'gnus-thread
:type '(choice number
(sexp :menu-tag "other" t)))
(defcustom gnus-refer-thread-use-nnir nil
- "*Use nnir to search an entire server when referring threads. A
+ "Use nnir to search an entire server when referring threads. A
nil value will only search for thread-related articles in the
current group."
:version "24.1"
@@ -124,7 +120,7 @@ current group."
:type 'boolean)
(defcustom gnus-summary-make-false-root 'adopt
- "*nil means that Gnus won't gather loose threads.
+ "nil means that Gnus won't gather loose threads.
If the root of a thread has expired or been read in a previous
session, the information necessary to build a complete thread has been
lost. Instead of having many small sub-threads from this original thread
@@ -159,7 +155,7 @@ given by the `gnus-summary-same-subject' variable.)"
:type 'boolean)
(defcustom gnus-summary-gather-exclude-subject "^ *$\\|^(none)$"
- "*A regexp to match subjects to be excluded from loose thread gathering.
+ "A regexp to match subjects to be excluded from loose thread gathering.
As loose thread gathering is done on subjects only, that means that
there can be many false gatherings performed. By rooting out certain
common subjects, gathering might become saner."
@@ -167,7 +163,7 @@ common subjects, gathering might become saner."
:type 'regexp)
(defcustom gnus-summary-gather-subject-limit nil
- "*Maximum length of subject comparisons when gathering loose threads.
+ "Maximum length of subject comparisons when gathering loose threads.
Use nil to compare full subjects. Setting this variable to a low
number will help gather threads that have been corrupted by
newsreaders chopping off subject lines, but it might also mean that
@@ -192,13 +188,13 @@ Useful functions to put in this list include:
:type '(repeat function))
(defcustom gnus-simplify-ignored-prefixes nil
- "*Remove matches for this regexp from subject lines when simplifying fuzzily."
+ "Remove matches for this regexp from subject lines when simplifying fuzzily."
:group 'gnus-thread
:type '(choice (const :tag "off" nil)
regexp))
(defcustom gnus-build-sparse-threads nil
- "*If non-nil, fill in the gaps in threads.
+ "If non-nil, fill in the gaps in threads.
If `some', only fill in the gaps that are needed to tie loose threads
together. If `more', fill in all leaf nodes that Gnus can find. If
non-nil and non-`some', fill in all gaps that Gnus manages to guess."
@@ -210,7 +206,7 @@ non-nil and non-`some', fill in all gaps that Gnus manages to guess."
(defcustom gnus-summary-thread-gathering-function
'gnus-gather-threads-by-subject
- "*Function used for gathering loose threads.
+ "Function used for gathering loose threads.
There are two pre-defined functions: `gnus-gather-threads-by-subject',
which only takes Subjects into consideration; and
`gnus-gather-threads-by-references', which compared the References
@@ -221,14 +217,14 @@ headers of the articles to find matches."
(function :tag "other")))
(defcustom gnus-summary-same-subject ""
- "*String indicating that the current article has the same subject as the previous.
+ "String indicating that the current article has the same subject as the previous.
This variable will only be used if the value of
`gnus-summary-make-false-root' is `empty'."
:group 'gnus-summary-format
:type 'string)
(defcustom gnus-summary-goto-unread nil
- "*If t, many commands will go to the next unread article.
+ "If t, many commands will go to the next unread article.
This applies to marking commands as well as other commands that
\"naturally\" select the next article, like, for instance, `SPC' at
the end of an article.
@@ -245,7 +241,7 @@ whether it is read or not."
(sexp :menu-tag "on" t)))
(defcustom gnus-summary-default-score 0
- "*Default article score level.
+ "Default article score level.
All scores generated by the score files will be added to this score.
If this variable is nil, scoring will be disabled."
:group 'gnus-score-default
@@ -253,7 +249,7 @@ If this variable is nil, scoring will be disabled."
integer))
(defcustom gnus-summary-default-high-score 0
- "*Default threshold for a high scored article.
+ "Default threshold for a high scored article.
An article will be highlighted as high scored if its score is greater
than this score."
:version "22.1"
@@ -261,7 +257,7 @@ than this score."
:type 'integer)
(defcustom gnus-summary-default-low-score 0
- "*Default threshold for a low scored article.
+ "Default threshold for a low scored article.
An article will be highlighted as low scored if its score is smaller
than this score."
:version "22.1"
@@ -269,14 +265,14 @@ than this score."
:type 'integer)
(defcustom gnus-summary-zcore-fuzz 0
- "*Fuzziness factor for the zcore in the summary buffer.
+ "Fuzziness factor for the zcore in the summary buffer.
Articles with scores closer than this to `gnus-summary-default-score'
will not be marked."
:group 'gnus-summary-format
:type 'integer)
(defcustom gnus-simplify-subject-fuzzy-regexp nil
- "*Strings to be removed when doing fuzzy matches.
+ "Strings to be removed when doing fuzzy matches.
This can either be a regular expression or list of regular expressions
that will be removed from subject strings if fuzzy subject
simplification is selected."
@@ -284,12 +280,12 @@ simplification is selected."
:type '(repeat regexp))
(defcustom gnus-show-threads t
- "*If non-nil, display threads in summary mode."
+ "If non-nil, display threads in summary mode."
:group 'gnus-thread
:type 'boolean)
(defcustom gnus-thread-hide-subtree nil
- "*If non-nil, hide all threads initially.
+ "If non-nil, hide all threads initially.
This can be a predicate specifier which says which threads to hide.
If threads are hidden, you have to run the command
`gnus-summary-show-thread' by hand or select an article."
@@ -302,19 +298,19 @@ If threads are hidden, you have to run the command
(sexp :tag "Predicate specifier")))
(defcustom gnus-thread-hide-killed t
- "*If non-nil, hide killed threads automatically."
+ "If non-nil, hide killed threads automatically."
:group 'gnus-thread
:type 'boolean)
(defcustom gnus-thread-ignore-subject t
- "*If non-nil, which is the default, ignore subjects and do all threading based on the Reference header.
+ "If non-nil, which is the default, ignore subjects and do all threading based on the Reference header.
If nil, articles that have different subjects from their parents will
start separate threads."
:group 'gnus-thread
:type 'boolean)
(defcustom gnus-thread-operation-ignore-subject t
- "*If non-nil, subjects will be ignored when doing thread commands.
+ "If non-nil, subjects will be ignored when doing thread commands.
This affects commands like `gnus-summary-kill-thread' and
`gnus-summary-lower-thread'.
@@ -328,12 +324,12 @@ equal will be included."
(sexp :tag "on" t)))
(defcustom gnus-thread-indent-level 4
- "*Number that says how much each sub-thread should be indented."
+ "Number that says how much each sub-thread should be indented."
:group 'gnus-thread
:type 'integer)
(defcustom gnus-auto-extend-newsgroup t
- "*If non-nil, extend newsgroup forward and backward when requested."
+ "If non-nil, extend newsgroup forward and backward when requested."
:group 'gnus-summary-choose
:type 'boolean)
@@ -357,7 +353,7 @@ newsgroups, set the variable to nil in `gnus-select-group-hook'."
(sexp :menu-tag "first" t)))
(defcustom gnus-auto-select-subject 'unseen-or-unread
- "*Says what subject to place under point when entering a group.
+ "Says what subject to place under point when entering a group.
This variable can either be the symbols `first' (place point on the
first subject), `unread' (place point on the subject line of the first
@@ -377,7 +373,7 @@ place point on some subject line."
(function :tag "Function to call")))
(defcustom gnus-auto-select-next t
- "*If non-nil, offer to go to the next group from the end of the previous.
+ "If non-nil, offer to go to the next group from the end of the previous.
If the value is t and the next newsgroup is empty, Gnus will exit
summary mode and go back to group mode. If the value is neither nil
nor t, Gnus will select the following unread newsgroup. In
@@ -395,7 +391,7 @@ will go to the next group without confirmation."
(sexp :menu-tag "on" t)))
(defcustom gnus-auto-select-same nil
- "*If non-nil, select the next article with the same subject.
+ "If non-nil, select the next article with the same subject.
If there are no more articles with the same subject, go to
the first unread article."
:group 'gnus-summary-maneuvering
@@ -424,7 +420,7 @@ article selected before entering to the ephemeral group will appear."
(sexp :tag "other" :value nil)))
(defcustom gnus-auto-goto-ignores 'unfetched
- "*Says how to handle unfetched articles when maneuvering.
+ "Says how to handle unfetched articles when maneuvering.
This variable can either be the symbols nil (maneuver to any
article), `undownloaded' (maneuvering while unplugged ignores articles
@@ -442,7 +438,7 @@ and, when unplugged, a subset of the undownloaded article list."
(const :tag "Unfetched" unfetched)))
(defcustom gnus-summary-check-current nil
- "*If non-nil, consider the current article when moving.
+ "If non-nil, consider the current article when moving.
The \"unread\" movement commands will stay on the same line if the
current article is unread."
:group 'gnus-summary-maneuvering
@@ -450,7 +446,7 @@ current article is unread."
(defcustom gnus-auto-center-summary
(max (or (bound-and-true-p scroll-margin) 0) 2)
- "*If non-nil, always center the current summary buffer.
+ "If non-nil, always center the current summary buffer.
In particular, if `vertical' do only vertical recentering. If non-nil
and non-`vertical', do both horizontal and vertical recentering."
:group 'gnus-summary-maneuvering
@@ -465,18 +461,18 @@ and non-`vertical', do both horizontal and vertical recentering."
:type 'boolean)
(defcustom gnus-show-all-headers nil
- "*If non-nil, don't hide any headers."
+ "If non-nil, don't hide any headers."
:group 'gnus-article-hiding
:group 'gnus-article-headers
:type 'boolean)
(defcustom gnus-summary-ignore-duplicates nil
- "*If non-nil, ignore articles with identical Message-ID headers."
+ "If non-nil, ignore articles with identical Message-ID headers."
:group 'gnus-summary
:type 'boolean)
(defcustom gnus-single-article-buffer nil
- "*If non-nil, display all articles in the same buffer.
+ "If non-nil, display all articles in the same buffer.
If nil, each group will get its own article buffer."
:version "24.1"
:group 'gnus-article-various
@@ -489,14 +485,14 @@ If nil, each group will get its own article buffer."
:type 'boolean)
(defcustom gnus-break-pages t
- "*If non-nil, do page breaking on articles.
+ "If non-nil, do page breaking on articles.
The page delimiter is specified by the `gnus-page-delimiter'
variable."
:group 'gnus-article-various
:type 'boolean)
(defcustom gnus-move-split-methods nil
- "*Variable used to suggest where articles are to be moved to.
+ "Variable used to suggest where articles are to be moved to.
It uses the same syntax as the `gnus-split-methods' variable.
However, whereas `gnus-split-methods' specifies file names as targets,
this variable specifies group names."
@@ -516,163 +512,163 @@ string with the suggested prefix."
;; using multibyte characters (Latin-1, UTF-8) doesn't work. -- rs
(defcustom gnus-unread-mark ? ;Whitespace
- "*Mark used for unread articles."
+ "Mark used for unread articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-ticked-mark ?!
- "*Mark used for ticked articles."
+ "Mark used for ticked articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-dormant-mark ??
- "*Mark used for dormant articles."
+ "Mark used for dormant articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-del-mark ?r
- "*Mark used for del'd articles."
+ "Mark used for del'd articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-read-mark ?R
- "*Mark used for read articles."
+ "Mark used for read articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-expirable-mark ?E
- "*Mark used for expirable articles."
+ "Mark used for expirable articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-killed-mark ?K
- "*Mark used for killed articles."
+ "Mark used for killed articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-spam-mark ?$
- "*Mark used for spam articles."
+ "Mark used for spam articles."
:version "22.1"
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-kill-file-mark ?X
- "*Mark used for articles killed by kill files."
+ "Mark used for articles killed by kill files."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-low-score-mark ?Y
- "*Mark used for articles with a low score."
+ "Mark used for articles with a low score."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-catchup-mark ?C
- "*Mark used for articles that are caught up."
+ "Mark used for articles that are caught up."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-replied-mark ?A
- "*Mark used for articles that have been replied to."
+ "Mark used for articles that have been replied to."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-forwarded-mark ?F
- "*Mark used for articles that have been forwarded."
+ "Mark used for articles that have been forwarded."
:version "22.1"
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-recent-mark ?N
- "*Mark used for articles that are recent."
+ "Mark used for articles that are recent."
:version "22.1"
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-cached-mark ?*
- "*Mark used for articles that are in the cache."
+ "Mark used for articles that are in the cache."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-saved-mark ?S
- "*Mark used for articles that have been saved."
+ "Mark used for articles that have been saved."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-unseen-mark ?.
- "*Mark used for articles that haven't been seen."
+ "Mark used for articles that haven't been seen."
:version "22.1"
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-no-mark ? ;Whitespace
- "*Mark used for articles that have no other secondary mark."
+ "Mark used for articles that have no other secondary mark."
:version "22.1"
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-ancient-mark ?O
- "*Mark used for ancient articles."
+ "Mark used for ancient articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-sparse-mark ?Q
- "*Mark used for sparsely reffed articles."
+ "Mark used for sparsely reffed articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-canceled-mark ?G
- "*Mark used for canceled articles."
+ "Mark used for canceled articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-duplicate-mark ?M
- "*Mark used for duplicate articles."
+ "Mark used for duplicate articles."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-undownloaded-mark ?-
- "*Mark used for articles that weren't downloaded."
+ "Mark used for articles that weren't downloaded."
:version "22.1"
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-downloaded-mark ?+
- "*Mark used for articles that were downloaded."
+ "Mark used for articles that were downloaded."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-downloadable-mark ?%
- "*Mark used for articles that are to be downloaded."
+ "Mark used for articles that are to be downloaded."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-unsendable-mark ?=
- "*Mark used for articles that won't be sent."
+ "Mark used for articles that won't be sent."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-score-over-mark ?+
- "*Score mark used for articles with high scores."
+ "Score mark used for articles with high scores."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-score-below-mark ?-
- "*Score mark used for articles with low scores."
+ "Score mark used for articles with low scores."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-empty-thread-mark ? ;Whitespace
- "*There is no thread under the article."
+ "There is no thread under the article."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-not-empty-thread-mark ?=
- "*There is a thread under the article."
+ "There is a thread under the article."
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-view-pseudo-asynchronously nil
- "*If non-nil, Gnus will view pseudo-articles asynchronously."
+ "If non-nil, Gnus will view pseudo-articles asynchronously."
:group 'gnus-extract-view
:type 'boolean)
@@ -680,13 +676,13 @@ string with the suggested prefix."
(list gnus-killed-mark gnus-del-mark gnus-catchup-mark
gnus-low-score-mark gnus-ancient-mark gnus-read-mark
gnus-duplicate-mark)
- "*The list of marks converted into expiration if a group is auto-expirable."
+ "The list of marks converted into expiration if a group is auto-expirable."
:version "24.1"
:group 'gnus-summary
:type '(repeat character))
(defcustom gnus-inhibit-user-auto-expire t
- "*If non-nil, user marking commands will not mark an article as expirable, even if the group has auto-expire turned on."
+ "If non-nil, user marking commands will not mark an article as expirable, even if the group has auto-expire turned on."
:version "21.1"
:group 'gnus-summary
:type 'boolean)
@@ -703,7 +699,7 @@ which auto-expire is turned on."
:group 'gnus-summary-marks)
(defcustom gnus-view-pseudos nil
- "*If `automatic', pseudo-articles will be viewed automatically.
+ "If `automatic', pseudo-articles will be viewed automatically.
If `not-confirm', pseudos will be viewed automatically, and the user
will not be asked to confirm the command."
:group 'gnus-extract-view
@@ -712,20 +708,20 @@ will not be asked to confirm the command."
(const not-confirm)))
(defcustom gnus-view-pseudos-separately t
- "*If non-nil, one pseudo-article will be created for each file to be viewed.
+ "If non-nil, one pseudo-article will be created for each file to be viewed.
If nil, all files that use the same viewing command will be given as a
list of parameters to that command."
:group 'gnus-extract-view
:type 'boolean)
(defcustom gnus-insert-pseudo-articles t
- "*If non-nil, insert pseudo-articles when decoding articles."
+ "If non-nil, insert pseudo-articles when decoding articles."
:group 'gnus-extract-view
:type 'boolean)
(defcustom gnus-summary-dummy-line-format
" %(: :%) %S\n"
- "*The format specification for the dummy roots in the summary buffer.
+ "The format specification for the dummy roots in the summary buffer.
It works along the same lines as a normal formatting string,
with some simple extensions.
@@ -738,7 +734,7 @@ See `(gnus)Formatting Variables'."
:type 'string)
(defcustom gnus-summary-mode-line-format "Gnus: %g [%A] %Z"
- "*The format specification for the summary mode line.
+ "The format specification for the summary mode line.
It works along the same lines as a normal formatting string,
with some simple extensions:
@@ -771,7 +767,7 @@ This can also be a list of regexps."
(repeat :value (".*") regexp)))
(defcustom gnus-summary-mark-below 0
- "*Mark all articles with a score below this variable as read.
+ "Mark all articles with a score below this variable as read.
This variable is local to each summary buffer and usually set by the
score file."
:group 'gnus-score-default
@@ -812,7 +808,7 @@ VALUE should have the form `(FOO nil)' or `(FOO t)', where FOO is an atom.
:value-to-external 'gnus-widget-reversible-to-external)
(defcustom gnus-article-sort-functions '(gnus-article-sort-by-number)
- "*List of functions used for sorting articles in the summary buffer.
+ "List of functions used for sorting articles in the summary buffer.
Each function takes two articles and returns non-nil if the first
article should be sorted before the other. If you use more than one
@@ -845,7 +841,7 @@ controls how articles are sorted."
(boolean :tag "Reverse order"))))
(defcustom gnus-thread-sort-functions '(gnus-thread-sort-by-number)
- "*List of functions used for sorting threads in the summary buffer.
+ "List of functions used for sorting threads in the summary buffer.
By default, threads are sorted by article number.
Each function takes two threads and returns non-nil if the first
@@ -891,7 +887,7 @@ subthreads, customize `gnus-subthread-sort-functions'."
(boolean :tag "Reverse order"))))
(defcustom gnus-subthread-sort-functions 'gnus-thread-sort-functions
- "*List of functions used for sorting subthreads in the summary buffer.
+ "List of functions used for sorting subthreads in the summary buffer.
By default, subthreads are sorted the same as threads, i.e.,
according to the value of `gnus-thread-sort-functions'."
:version "24.4"
@@ -914,7 +910,7 @@ according to the value of `gnus-thread-sort-functions'."
(boolean :tag "Reverse order")))))
(defcustom gnus-thread-score-function '+
- "*Function used for calculating the total score of a thread.
+ "Function used for calculating the total score of a thread.
The function is called with the scores of the article and each
subthread and should then return the score of the thread.
@@ -942,50 +938,43 @@ This variable is local to the summary buffers."
integer))
(defcustom gnus-summary-mode-hook nil
- "*A hook for Gnus summary mode.
+ "A hook for Gnus summary mode.
This hook is run before any variables are set in the summary buffer."
:options '(turn-on-gnus-mailing-list-mode gnus-pick-mode)
:group 'gnus-summary-various
:type 'hook)
-;; Extracted from gnus-xmas-redefine in order to preserve user settings
-(when (featurep 'xemacs)
- (add-hook 'gnus-summary-mode-hook 'gnus-xmas-summary-menu-add)
- (add-hook 'gnus-summary-mode-hook 'gnus-xmas-setup-summary-toolbar)
- (add-hook 'gnus-summary-mode-hook
- 'gnus-xmas-switch-horizontal-scrollbar-off))
-
(defcustom gnus-summary-menu-hook nil
- "*Hook run after the creation of the summary mode menu."
+ "Hook run after the creation of the summary mode menu."
:group 'gnus-summary-visual
:type 'hook)
(defcustom gnus-summary-exit-hook nil
- "*A hook called on exit from the summary buffer.
+ "A hook called on exit from the summary buffer.
It will be called with point in the group buffer."
:group 'gnus-summary-exit
:type 'hook)
(defcustom gnus-summary-prepare-hook nil
- "*A hook called after the summary buffer has been generated.
+ "A hook called after the summary buffer has been generated.
If you want to modify the summary buffer, you can use this hook."
:group 'gnus-summary-various
:type 'hook)
(defcustom gnus-summary-prepared-hook nil
- "*A hook called as the last thing after the summary buffer has been generated."
+ "A hook called as the last thing after the summary buffer has been generated."
:group 'gnus-summary-various
:type 'hook)
(defcustom gnus-summary-generate-hook nil
- "*A hook run just before generating the summary buffer.
+ "A hook run just before generating the summary buffer.
This hook is commonly used to customize threading variables and the
like."
:group 'gnus-summary-various
:type 'hook)
(defcustom gnus-select-group-hook nil
- "*A hook called when a newsgroup is selected.
+ "A hook called when a newsgroup is selected.
If you'd like to simplify subjects like the
`gnus-summary-next-same-subject' command does, you can use the
@@ -1003,32 +992,32 @@ following hook:
:type 'hook)
(defcustom gnus-select-article-hook nil
- "*A hook called when an article is selected."
+ "A hook called when an article is selected."
:group 'gnus-summary-choose
:options '(gnus-agent-fetch-selected-article)
:type 'hook)
(defcustom gnus-visual-mark-article-hook
(list 'gnus-highlight-selected-summary)
- "*Hook run after selecting an article in the summary buffer.
+ "Hook run after selecting an article in the summary buffer.
It is meant to be used for highlighting the article in some way. It
is not run if `gnus-visual' is nil."
:group 'gnus-summary-visual
:type 'hook)
(defcustom gnus-parse-headers-hook nil
- "*A hook called before parsing the headers."
+ "A hook called before parsing the headers."
:group 'gnus-various
:type 'hook)
(defcustom gnus-exit-group-hook nil
- "*A hook called when exiting summary mode.
+ "A hook called when exiting summary mode.
This hook is not called from the non-updating exit commands like `Q'."
:group 'gnus-various
:type 'hook)
(defcustom gnus-summary-update-hook nil
- "*A hook called when a summary line is changed.
+ "A hook called when a summary line is changed.
The hook will not be called if `gnus-visual' is nil.
The default function `gnus-summary-highlight-line' will
@@ -1038,44 +1027,42 @@ variable."
:type 'hook)
(defcustom gnus-mark-article-hook '(gnus-summary-mark-read-and-unread-as-read)
- "*A hook called when an article is selected for the first time.
+ "A hook called when an article is selected for the first time.
The hook is intended to mark an article as read (or unread)
automatically when it is selected."
:group 'gnus-summary-choose
:type 'hook)
(defcustom gnus-group-no-more-groups-hook nil
- "*A hook run when returning to group mode having no more (unread) groups."
+ "A hook run when returning to group mode having no more (unread) groups."
:group 'gnus-group-select
:type 'hook)
(defcustom gnus-ps-print-hook nil
- "*A hook run before ps-printing something from Gnus."
+ "A hook run before ps-printing something from Gnus."
:group 'gnus-summary
:type 'hook)
(defcustom gnus-summary-article-move-hook nil
- "*A hook called after an article is moved, copied, respooled, or crossposted."
+ "A hook called after an article is moved, copied, respooled, or crossposted."
:version "22.1"
:group 'gnus-summary
:type 'hook)
(defcustom gnus-summary-article-delete-hook nil
- "*A hook called after an article is deleted."
+ "A hook called after an article is deleted."
:version "22.1"
:group 'gnus-summary
:type 'hook)
(defcustom gnus-summary-article-expire-hook nil
- "*A hook called after an article is expired."
+ "A hook called after an article is expired."
:version "22.1"
:group 'gnus-summary
:type 'hook)
-(defcustom gnus-summary-display-arrow
- (and (fboundp 'display-graphic-p)
- (display-graphic-p))
- "*If non-nil, display an arrow highlighting the current article."
+(defcustom gnus-summary-display-arrow (display-graphic-p)
+ "If non-nil, display an arrow highlighting the current article."
:version "22.1"
:group 'gnus-summary
:type 'boolean)
@@ -1125,7 +1112,7 @@ automatically when it is selected."
. gnus-summary-low-read)
(t
. gnus-summary-normal-read))
- "*Controls the highlighting of summary buffer lines.
+ "Controls the highlighting of summary buffer lines.
A list of (FORM . FACE) pairs. When deciding how a particular
summary line should be displayed, each form is evaluated. The content
@@ -1161,7 +1148,7 @@ which it may alter in any way."
"Function used to decode addresses with encoded words.")
(defcustom gnus-extra-headers '(To Cc Keywords Gcc Newsgroups X-GM-LABELS)
- "*Extra headers to parse."
+ "Extra headers to parse."
:version "25.1"
:group 'gnus-summary
:type '(repeat symbol))
@@ -1170,25 +1157,30 @@ which it may alter in any way."
(and user-mail-address
(not (string= user-mail-address ""))
(regexp-quote user-mail-address))
- "*From headers that may be suppressed in favor of To headers.
-This can be a regexp or a list of regexps."
+ "From headers that may be suppressed in favor of To headers.
+This can be a regexp, a list of regexps or a function.
+
+If a function, an email string is passed as the argument."
:version "21.1"
:group 'gnus-summary
:type '(choice regexp
- (repeat :tag "Regexp List" regexp)))
+ (repeat :tag "Regexp List" regexp)
+ function))
(defsubst gnus-ignored-from-addresses ()
- (gmm-regexp-concat gnus-ignored-from-addresses))
+ (cond ((functionp gnus-ignored-from-addresses)
+ gnus-ignored-from-addresses)
+ (t (gmm-regexp-concat gnus-ignored-from-addresses))))
(defcustom gnus-summary-to-prefix "-> "
- "*String prefixed to the To field in the summary line when
+ "String prefixed to the To field in the summary line when
using `gnus-ignored-from-addresses'."
:version "22.1"
:group 'gnus-summary
:type 'string)
(defcustom gnus-summary-newsgroup-prefix "=> "
- "*String prefixed to the Newsgroup field in the summary
+ "String prefixed to the Newsgroup field in the summary
line when using the option `gnus-ignored-from-addresses'."
:version "22.1"
:group 'gnus-summary
@@ -1272,13 +1264,13 @@ For example: ((1 . cn-gb-2312) (2 . big5))."
:group 'gnus-summary)
(defcustom gnus-orphan-score nil
- "*All orphans get this score added. Set in the score file."
+ "All orphans get this score added. Set in the score file."
:group 'gnus-score-default
:type '(choice (const nil)
integer))
(defcustom gnus-summary-save-parts-default-mime "image/.*"
- "*A regexp to match MIME parts when saving multiple parts of a
+ "A regexp to match MIME parts when saving multiple parts of a
message with `gnus-summary-save-parts' (\\<gnus-summary-mode-map>\\[gnus-summary-save-parts]).
This regexp will be used by default when prompting the user for which
type of files to save."
@@ -1931,7 +1923,7 @@ increase the score of each group you read."
"q" gnus-summary-exit
"Q" gnus-summary-exit-no-update
"\C-c\C-i" gnus-info-find-node
- gnus-mouse-2 gnus-mouse-pick-article
+ [mouse-2] gnus-mouse-pick-article
[follow-link] mouse-face
"m" gnus-summary-mail-other-window
"a" gnus-summary-post-news
@@ -2399,8 +2391,7 @@ increase the score of each group you read."
["Verify and Decrypt" gnus-summary-force-verify-and-decrypt t]
["Encrypt body" gnus-article-encrypt-body
:active (not (gnus-group-read-only-p))
- ,@(if (featurep 'xemacs) nil
- '(:help "Encrypt the message body on disk"))]
+ :help "Encrypt the message body on disk"]
["Extract all parts..." gnus-summary-save-parts t]
("Multipart"
["Repair multipart" gnus-summary-repair-multipart t]
@@ -2409,8 +2400,7 @@ increase the score of each group you read."
["View part as type..." gnus-article-view-part-as-type t]
["Encrypt body" gnus-article-encrypt-body
:active (not (gnus-group-read-only-p))
- ,@(if (featurep 'xemacs) nil
- '(:help "Encrypt the message body on disk"))]
+ :help "Encrypt the message body on disk"]
["View part externally" gnus-article-view-part-externally t]
["View HTML parts in browser" gnus-article-browse-html-article t]
["View part with charset..." gnus-article-view-part-as-charset t]
@@ -2450,10 +2440,7 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
'((1 . ,cs))))
(gnus-summary-show-article 1))))
`[,(symbol-name cs) ,command t]))
- (sort (if (fboundp 'coding-system-list)
- (coding-system-list)
- (mapcar 'car mm-mime-mule-charset-alist))
- 'string<)))))
+ (sort (coding-system-list) 'string<)))))
("Washing"
("Remove Blanks"
["Leading" gnus-article-strip-leading-blank-lines t]
@@ -2477,8 +2464,7 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
["Quoted-Printable" gnus-article-de-quoted-unreadable t]
["Base64" gnus-article-de-base64-unreadable t]
["Rot 13" gnus-summary-caesar-message
- ,@(if (featurep 'xemacs) '(t)
- '(:help "\"Caesar rotate\" article by 13"))]
+ :help "\"Caesar rotate\" article by 13"]
["De-IDNA" gnus-summary-idna-message t]
["Morse decode" gnus-summary-morse-message t]
["Unix pipe..." gnus-summary-pipe-message t]
@@ -2503,11 +2489,9 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
)
("Output"
["Save in default format..." gnus-summary-save-article
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Save article using default method"))]
+ :help "Save article using default method"]
["Save in file..." gnus-summary-save-article-file
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Save article in file"))]
+ :help "Save article in file"]
["Save in Unix mail format..." gnus-summary-save-article-mail t]
["Save in MH folder..." gnus-summary-save-article-folder t]
["Save in VM folder..." gnus-summary-save-article-vm t]
@@ -2516,11 +2500,9 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
["Pipe through a filter..." gnus-summary-pipe-output t]
["Print with Muttprint..." gnus-summary-muttprint t]
["Print" gnus-summary-print-article
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Generate and print a PostScript image"))])
+ :help "Generate and print a PostScript image"])
("Copy, move,... (Backend)"
- ,@(if (featurep 'xemacs) nil
- '(:help "Copying, moving, expiring articles..."))
+ :help "Copying, moving, expiring articles..."
["Respool article..." gnus-summary-respool-article t]
["Move article..." gnus-summary-move-article
(gnus-check-backend-function
@@ -2547,9 +2529,7 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
(gnus-check-backend-function
'request-expire-articles gnus-newsgroup-name)])
("Extract"
- ["Uudecode" gnus-uu-decode-uu
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Decode uuencoded article(s)"))]
+ ["Uudecode" gnus-uu-decode-uu :help "Decode uuencoded article(s)"]
["Uudecode and save" gnus-uu-decode-uu-and-save t]
["Unshar" gnus-uu-decode-unshar t]
["Unshar and save" gnus-uu-decode-unshar-and-save t]
@@ -2582,7 +2562,7 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
(easy-menu-define
gnus-article-commands-menu gnus-article-mode-map ""
(cons "Commands" innards))
- ;; in Emacs, don't share menu.
+ ;; Don't share the menu.
(setq gnus-article-commands-menu
(copy-keymap gnus-summary-article-menu))
(define-key gnus-article-mode-map [menu-bar commands]
@@ -2612,28 +2592,22 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
gnus-summary-post-menu gnus-summary-mode-map ""
`("Post"
["Send a message (mail or news)" gnus-summary-post-news
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Compose a new message (mail or news)"))]
+ :help "Compose a new message (mail or news)"]
["Followup" gnus-summary-followup
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Post followup to this article"))]
+ :help "Post followup to this article"]
["Followup and yank" gnus-summary-followup-with-original
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Post followup to this article, quoting its contents"))]
+ :help "Post followup to this article, quoting its contents"]
["Supersede article" gnus-summary-supersede-article t]
["Cancel article" gnus-summary-cancel-article
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Cancel an article you posted"))]
+ :help "Cancel an article you posted"]
["Reply" gnus-summary-reply t]
["Reply and yank" gnus-summary-reply-with-original t]
["Wide reply" gnus-summary-wide-reply t]
["Wide reply and yank" gnus-summary-wide-reply-with-original
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Mail a reply, quoting this article"))]
+ :help "Mail a reply, quoting this article"]
["Very wide reply" gnus-summary-very-wide-reply t]
["Very wide reply and yank" gnus-summary-very-wide-reply-with-original
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Mail a very wide reply, quoting this article"))]
+ :help "Mail a very wide reply, quoting this article"]
["Mail forward" gnus-summary-mail-forward t]
["Post forward" gnus-summary-post-forward t]
["Digest and mail" gnus-uu-digest-mail-forward t]
@@ -2644,38 +2618,25 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
["Send a mail" gnus-summary-mail-other-window t]
["Create a local message" gnus-summary-news-other-window t]
["Uuencode and post" gnus-uu-post-news
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Post a uuencoded article"))]
+ :help "Post a uuencoded article"]
["Followup via news" gnus-summary-followup-to-mail t]
["Followup via news and yank"
gnus-summary-followup-to-mail-with-original t]
["Strip signature on reply"
(lambda ()
(interactive)
- (if (not (memq message-cite-function
- '(message-cite-original-without-signature
- message-cite-original)))
- ;; Stupid workaround for XEmacs not honoring :visible.
- (message "Can't toggle this value of `message-cite-function'")
- (setq message-cite-function
- (if (eq message-cite-function
- 'message-cite-original-without-signature)
- 'message-cite-original
- 'message-cite-original-without-signature))))
- ;; XEmacs barfs on :visible.
- ,@(if (featurep 'xemacs) nil
- '(:visible (memq message-cite-function
- '(message-cite-original-without-signature
- message-cite-original))))
+ (setq message-cite-function
+ (if (eq message-cite-function
+ 'message-cite-original-without-signature)
+ 'message-cite-original
+ 'message-cite-original-without-signature)))
+ :visible (memq message-cite-function
+ '(message-cite-original-without-signature
+ message-cite-original))
:style toggle
:selected (eq message-cite-function
'message-cite-original-without-signature)
- ,@(if (featurep 'xemacs) nil
- '(:help "Strip signature from cited article when replying."))]
- ;;("Draft"
- ;;["Send" gnus-summary-send-draft t]
- ;;["Send bounced" gnus-resend-bounced-mail t])
- ))
+ :help "Strip signature from cited article when replying."]))
(cond
((not (keymapp gnus-summary-post-menu))
@@ -2696,13 +2657,11 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
gnus-summary-kill-same-subject-and-select t]
["Mark same subject" gnus-summary-kill-same-subject t]
["Catchup" gnus-summary-catchup
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Mark unread articles in this group as read"))]
+ :help "Mark unread articles in this group as read"]
["Catchup all" gnus-summary-catchup-all t]
["Catchup to here" gnus-summary-catchup-to-here t]
["Catchup from here" gnus-summary-catchup-from-here t]
- ["Catchup region" gnus-summary-mark-region-as-read
- (gnus-mark-active-p)]
+ ["Catchup region" gnus-summary-mark-region-as-read mark-active]
["Mark excluded" gnus-summary-limit-mark-excluded-as-read t])
("Mark Various"
["Tick" gnus-summary-tick-article-forward t]
@@ -2741,8 +2700,8 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
["Invert marks" gnus-uu-invert-processable t]
["Mark above" gnus-uu-mark-over t]
["Mark series" gnus-uu-mark-series t]
- ["Mark region" gnus-uu-mark-region (gnus-mark-active-p)]
- ["Unmark region" gnus-uu-unmark-region (gnus-mark-active-p)]
+ ["Mark region" gnus-uu-mark-region mark-active]
+ ["Unmark region" gnus-uu-unmark-region mark-active]
["Mark by regexp..." gnus-uu-mark-by-regexp t]
["Unmark by regexp..." gnus-uu-unmark-by-regexp t]
["Mark all" gnus-uu-mark-all t]
@@ -2759,11 +2718,9 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
("Registry Marks")
("Scroll article"
["Page forward" gnus-summary-next-page
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Show next page of article"))]
+ :help "Show next page of article"]
["Page backward" gnus-summary-prev-page
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Show previous page of article"))]
+ :help "Show previous page of article"]
["Line forward" gnus-summary-scroll-up t])
("Move"
["Next unread article" gnus-summary-next-unread-article t]
@@ -2823,14 +2780,12 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
["Send a bug report" gnus-bug t]
("Exit"
["Catchup and exit" gnus-summary-catchup-and-exit
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Mark unread articles in this group as read, then exit"))]
+ :help "Mark unread articles in this group as read, then exit"]
["Catchup all and exit" gnus-summary-catchup-all-and-exit t]
["Catchup and goto next" gnus-summary-catchup-and-goto-next-group t]
["Catchup and goto prev" gnus-summary-catchup-and-goto-prev-group t]
["Exit group" gnus-summary-exit
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Exit current group, return to group selection mode"))]
+ :help "Exit current group, return to group selection mode"]
["Exit group without updating" gnus-summary-exit-no-update t]
["Exit and goto next group" gnus-summary-next-group t]
["Exit and goto prev group" gnus-summary-prev-group t]
@@ -2979,17 +2934,12 @@ See `gmm-tool-bar-from-list' for the format of the list."
(defun gnus-summary-make-tool-bar (&optional force)
"Make a summary mode tool bar from `gnus-summary-tool-bar'.
When FORCE, rebuild the tool bar."
- (when (and (not (featurep 'xemacs))
- (boundp 'tool-bar-mode)
+ (when (and (boundp 'tool-bar-mode)
tool-bar-mode
(or (not gnus-summary-tool-bar-map) force))
(let* ((load-path
- (gmm-image-load-path-for-library "gnus"
- "mail/save.xpm"
- nil t))
- (image-load-path (cons (car load-path)
- (when (boundp 'image-load-path)
- image-load-path)))
+ (image-load-path-for-library "gnus" "mail/save.xpm" nil t))
+ (image-load-path (cons (car load-path) image-load-path))
(map (gmm-tool-bar-from-list gnus-summary-tool-bar
gnus-summary-tool-bar-zap-list
'gnus-summary-mode-map)))
@@ -3120,12 +3070,10 @@ The following commands are available:
(setq mode-name "Summary")
(use-local-map gnus-summary-mode-map)
(buffer-disable-undo)
- (setq buffer-read-only t ;Disable modification
- show-trailing-whitespace nil)
- (setq truncate-lines t)
- ;; Force paragraph direction to be left-to-right. Don't make it
- ;; bound globally in old Emacsen and XEmacsen.
- (set (make-local-variable 'bidi-paragraph-direction) 'left-to-right)
+ (setq buffer-read-only t
+ show-trailing-whitespace nil
+ truncate-lines t
+ bidi-paragraph-direction 'left-to-right)
(add-to-invisibility-spec '(gnus-sum . t))
(gnus-summary-set-display-table)
(gnus-set-default-directory)
@@ -3134,7 +3082,6 @@ The following commands are available:
(make-local-variable 'gnus-summary-dummy-line-format)
(make-local-variable 'gnus-summary-dummy-line-format-spec)
(make-local-variable 'gnus-summary-mark-positions)
- (gnus-make-local-hook 'pre-command-hook)
(add-hook 'pre-command-hook 'gnus-set-global-variables nil t)
(gnus-run-mode-hooks 'gnus-summary-mode-hook)
(turn-on-gnus-mailing-list-mode)
@@ -3479,13 +3426,13 @@ display only a single character."
(i 32))
;; Nix out all the control chars...
(while (>= (setq i (1- i)) 0)
- (gnus-put-display-table i [??] table))
+ (aset table i [??]))
;; ... but not newline and cr, of course. (cr is necessary for the
;; selective display).
- (gnus-put-display-table ?\n nil table)
- (gnus-put-display-table ?\r nil table)
+ (aset table ?\n nil)
+ (aset table ?\r nil)
;; We keep TAB as well.
- (gnus-put-display-table ?\t nil table)
+ (aset table ?\t nil)
;; We nix out any glyphs 127 through 255, or 127 through 159 in
;; Emacs 23 (unicode), that are not set already.
(let ((i (if (ignore-errors (= (make-char 'latin-iso8859-1 160) 160))
@@ -3493,8 +3440,8 @@ display only a single character."
256)))
(while (>= (setq i (1- i)) 127)
;; Only modify if the entry is nil.
- (unless (gnus-get-display-table i table)
- (gnus-put-display-table i [??] table))))
+ (unless (aref table i)
+ (aset table i [??]))))
(setq buffer-display-table table)))
(defun gnus-summary-set-article-display-arrow (pos)
@@ -3676,7 +3623,7 @@ buffer that was in action when the last article was fetched."
(defun gnus-summary-insert-dummy-line (gnus-tmp-subject gnus-tmp-number)
"Insert a dummy root in the summary buffer."
(beginning-of-line)
- (gnus-add-text-properties
+ (add-text-properties
(point) (progn (eval gnus-summary-dummy-line-format-spec) (point))
(list 'gnus-number gnus-tmp-number 'gnus-intangible gnus-tmp-number)))
@@ -3686,15 +3633,17 @@ buffer that was in action when the last article was fetched."
(defun gnus-summary-from-or-to-or-newsgroups (header gnus-tmp-from)
(let ((mail-parse-charset gnus-newsgroup-charset)
- (ignored-from-addresses (gnus-ignored-from-addresses))
;; Is it really necessary to do this next part for each summary line?
;; Luckily, doesn't seem to slow things down much.
(mail-parse-ignored-charsets
(with-current-buffer gnus-summary-buffer
gnus-newsgroup-ignored-charsets)))
(or
- (and ignored-from-addresses
- (string-match ignored-from-addresses gnus-tmp-from)
+ (and gnus-ignored-from-addresses
+ (cond ((functionp gnus-ignored-from-addresses)
+ (funcall gnus-ignored-from-addresses
+ (mail-strip-quoted-names gnus-tmp-from)))
+ (t (string-match (gnus-ignored-from-addresses) gnus-tmp-from)))
(let ((extra-headers (mail-header-extra header))
to
newsgroups)
@@ -3713,7 +3662,7 @@ buffer that was in action when the last article was fetched."
gnus-newsgroup-name)) 'nntp)
(gnus-group-real-name gnus-newsgroup-name))))
(concat gnus-summary-newsgroup-prefix newsgroups)))))
- (gnus-string-mark-left-to-right
+ (bidi-string-mark-left-to-right
(inline
(gnus-summary-extract-address-component gnus-tmp-from))))))
@@ -3780,7 +3729,7 @@ buffer that was in action when the last article was fetched."
(setq gnus-tmp-lines "?")
(setq gnus-tmp-lines (number-to-string gnus-tmp-lines)))
(condition-case ()
- (gnus-put-text-property
+ (put-text-property
(point)
(progn (eval gnus-summary-line-format-spec) (point))
'gnus-number gnus-tmp-number)
@@ -3897,8 +3846,8 @@ respectively."
Returns \" ? \" if there's bad input or if another error occurs.
Input should look like this: \"Sun, 14 Oct 2001 13:34:39 +0200\"."
(condition-case ()
- (let* ((messy-date (gnus-float-time (gnus-date-get-time messy-date)))
- (now (gnus-float-time))
+ (let* ((messy-date (float-time (gnus-date-get-time messy-date)))
+ (now (float-time))
;;If we don't find something suitable we'll use this one
(my-format "%b %d '%y"))
(let* ((difference (- now messy-date))
@@ -4488,9 +4437,9 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise."
(defsubst gnus-remove-odd-characters (string)
"Translate STRING into something that doesn't contain weird characters."
- (mm-subst-char-in-string
+ (subst-char-in-string
?\r ?\-
- (mm-subst-char-in-string ?\n ?\- string t) t))
+ (subst-char-in-string ?\n ?\- string t) t))
;; This function has to be called with point after the article number
;; on the beginning of the line.
@@ -4800,7 +4749,7 @@ If LINE, insert the rebuilt thread starting on line LINE."
(defun gnus-articles-in-thread (thread)
"Return the list of articles in THREAD."
(cons (mail-header-number (car thread))
- (apply 'nconc (mapcar 'gnus-articles-in-thread (cdr thread)))))
+ (mapcan 'gnus-articles-in-thread (cdr thread))))
(defun gnus-remove-thread (id &optional dont-remove)
"Remove the thread that has ID in it."
@@ -5110,7 +5059,7 @@ Unscored articles will be counted as having a score of zero."
(defun gnus-thread-latest-date (thread)
"Return the highest article date in THREAD."
(apply 'max
- (mapcar (lambda (header) (gnus-float-time
+ (mapcar (lambda (header) (float-time
(gnus-date-get-time
(mail-header-date header))))
(message-flatten-list thread))))
@@ -5470,7 +5419,7 @@ or a straight list of headers."
(if (= gnus-tmp-lines -1)
(setq gnus-tmp-lines "?")
(setq gnus-tmp-lines (number-to-string gnus-tmp-lines)))
- (gnus-put-text-property
+ (put-text-property
(point)
(progn (eval gnus-summary-line-format-spec) (point))
'gnus-number number)
@@ -5620,15 +5569,15 @@ If SELECT-ARTICLES, only select those articles from GROUP."
(gnus-kill-buffer (current-buffer)))
(error
"Couldn't activate group %s: %s"
- (mm-decode-coding-string group charset)
- (mm-decode-coding-string (gnus-status-message group) charset))))
+ (decode-coding-string group charset)
+ (decode-coding-string (gnus-status-message group) charset))))
(unless (gnus-request-group group t nil (gnus-get-info group))
(when (derived-mode-p 'gnus-summary-mode)
(gnus-kill-buffer (current-buffer)))
(error "Couldn't request group %s: %s"
- (mm-decode-coding-string group charset)
- (mm-decode-coding-string (gnus-status-message group) charset)))
+ (decode-coding-string group charset)
+ (decode-coding-string (gnus-status-message group) charset)))
(when (and gnus-agent
(gnus-active group))
@@ -6085,6 +6034,8 @@ If SELECT-ARTICLES, only select those articles from GROUP."
(setq arts (cdr arts)))
(setq list (cdr all)))))
+ ;; When exiting the group, everything that's previously been
+ ;; unseen is now seen.
(when (eq (cdr type) 'seen)
(setq list (gnus-range-add list gnus-newsgroup-unseen)))
@@ -6677,7 +6628,7 @@ current article will be taken into consideration."
(gnus-summary-find-next nil article)))
(decf n)))
(nreverse articles)))
- ((and (gnus-region-active-p) (mark))
+ ((and (and transient-mark-mode mark-active) (mark))
(message "region active")
;; Work on the region between point and mark.
(let ((max (max (point) (mark)))
@@ -6867,9 +6818,7 @@ Also do horizontal recentering."
(when (and gnus-auto-center-summary
(not (eq gnus-auto-center-summary 'vertical)))
(gnus-horizontal-recenter))
- (if (fboundp 'recenter-top-bottom)
- (recenter-top-bottom n)
- (recenter n)))
+ (recenter-top-bottom n))
(put 'gnus-recenter 'isearch-scroll t)
@@ -6880,8 +6829,8 @@ Like forward-line, but skip over (and don't count) invisible lines."
(while (and (> n 0) (not done))
;; If the following character is currently invisible,
;; skip all characters with that same `invisible' property value.
- (while (gnus-invisible-p (point))
- (goto-char (gnus-next-char-property-change (point))))
+ (while (invisible-p (point))
+ (goto-char (next-char-property-change (point))))
(forward-line 1)
(if (eobp)
(setq done t)
@@ -6890,8 +6839,8 @@ Like forward-line, but skip over (and don't count) invisible lines."
(forward-line -1)
(if (bobp) (setq done t)
(setq n (1+ n))
- (while (and (not (bobp)) (gnus-invisible-p (1- (point))))
- (goto-char (gnus-previous-char-property-change (point))))))))
+ (while (and (not (bobp)) (invisible-p (1- (point))))
+ (goto-char (previous-char-property-change (point))))))))
(defun gnus-summary-recenter ()
"Center point in the summary window.
@@ -7814,9 +7763,7 @@ If BACKWARD, the previous article is selected instead of the next."
(t
(unless (gnus-ephemeral-group-p gnus-newsgroup-name)
(gnus-summary-jump-to-group gnus-newsgroup-name))
- (let ((cmd (if (featurep 'xemacs)
- last-command-char
- last-command-event))
+ (let ((cmd last-command-event)
(point
(with-current-buffer gnus-group-buffer
(point)))
@@ -7844,7 +7791,7 @@ If BACKWARD, the previous article is selected instead of the next."
"exiting"))
(gnus-summary-next-group nil group backward)))
(t
- (when (gnus-key-press-event-p last-input-event)
+ (when (numberp last-input-event)
;; Somehow or other, we may now have selected a different
;; window. Make point go back to the summary buffer.
(when (eq current-summary (current-buffer))
@@ -8368,15 +8315,14 @@ in `nnmail-extra-headers'."
(gnus-summary-position-point))))
(defun gnus-summary-limit-strange-charsets-predicate (header)
- (when (fboundp 'char-charset)
- (let ((string (concat (mail-header-subject header)
- (mail-header-from header)))
- charset found)
- (dotimes (i (1- (length string)))
- (setq charset (format "%s" (char-charset (aref string (1+ i)))))
- (when (string-match "unicode\\|big\\|japanese" charset)
- (setq found t)))
- found)))
+ (let ((string (concat (mail-header-subject header)
+ (mail-header-from header)))
+ charset found)
+ (dotimes (i (1- (length string)))
+ (setq charset (format "%s" (char-charset (aref string (1+ i)))))
+ (when (string-match "unicode\\|big\\|japanese" charset)
+ (setq found t)))
+ found))
(defun gnus-summary-limit-to-predicate (predicate)
"Limit to articles where PREDICATE returns non-nil.
@@ -8671,7 +8617,7 @@ fetched for this group."
(gnus-agent nil)
(gnus-read-all-available-headers t))
(setq gnus-newsgroup-headers
- (gnus-merge
+ (cl-merge
'list gnus-newsgroup-headers
(gnus-fetch-headers articles nil t)
'gnus-article-sort-by-number))
@@ -9083,7 +9029,7 @@ non-numeric or nil fetch the number specified by the
(gnus-sorted-nunion gnus-newsgroup-unreads new-unreads))
(setq gnus-newsgroup-headers
(gnus-delete-duplicate-headers
- (gnus-merge
+ (cl-merge
'list gnus-newsgroup-headers new-headers
'gnus-article-sort-by-number)))
(setq gnus-newsgroup-articles
@@ -9132,7 +9078,7 @@ non-numeric or nil fetch the number specified by the
(gnus-warp-to-article)
(when (and (stringp message-id)
(not (zerop (length message-id))))
- (setq message-id (gnus-replace-in-string message-id " " ""))
+ (setq message-id (replace-regexp-in-string " " "" message-id))
;; Construct the correct Message-ID if necessary.
;; Suggested by tale@pawl.rpi.edu.
(unless (string-match "^<" message-id)
@@ -9435,7 +9381,6 @@ Optional argument BACKWARD means do search for backward.
(gnus-article-prepare-hook nil)
(gnus-mark-article-hook nil) ;Inhibit marking as read.
(gnus-use-article-prefetch nil)
- (gnus-xmas-force-redisplay nil) ;Inhibit XEmacs redisplay.
(gnus-use-trees nil) ;Inhibit updating tree buffer.
(gnus-visual nil)
(gnus-keep-backlog nil)
@@ -9611,10 +9556,10 @@ article. If BACKWARD (the prefix) is non-nil, search backward instead."
(defun gnus-summary-print-truncate-and-quote (string &optional len)
"Truncate to LEN and quote all \"(\"'s in STRING."
- (gnus-replace-in-string (if (and len (> (length string) len))
- (substring string 0 len)
- string)
- "[()]" "\\\\\\&"))
+ (replace-regexp-in-string "[()]" "\\\\\\&"
+ (if (and len (> (length string) len))
+ (substring string 0 len)
+ string)))
(defun gnus-summary-print-article (&optional filename n)
"Generate and print a PostScript image of the process-marked (mail) articles.
@@ -9701,7 +9646,7 @@ C-u g', show the raw article."
(gnus-summary-show-article t)
(let ((gnus-newsgroup-charset
(or (cdr (assq arg gnus-summary-show-article-charset-alist))
- (mm-read-coding-system
+ (read-coding-system
"View as charset: " ;; actually it is coding system.
(with-current-buffer gnus-article-buffer
(mm-detect-coding-region (point) (point-max))))))
@@ -9862,8 +9807,6 @@ prefix specifies how many places to rotate each letter forward."
;; Create buttons and stuff...
(gnus-treat-article nil))
-(declare-function idna-to-unicode "ext:idna" (str))
-
(defun gnus-summary-idna-message (&optional arg)
"Decode IDNA encoded domain names in the current articles.
IDNA encoded domain names looks like `xn--bar'. If a string
@@ -9873,25 +9816,16 @@ invalid IDNA string (`xn--bar' is invalid).
You must have GNU Libidn (URL `http://www.gnu.org/software/libidn/')
installed for this command to work."
(interactive "P")
- (if (not (and (mm-coding-system-p 'utf-8)
- (condition-case nil
- (require 'idna)
- (file-error)
- (invalid-operation))
- (symbol-value 'idna-program)
- (executable-find (symbol-value 'idna-program))))
- (gnus-message
- 5 "GNU Libidn not installed properly (`idn' or `idna.el' missing)")
- (gnus-summary-select-article)
- (let ((mail-header-separator ""))
- (gnus-eval-in-buffer-window gnus-article-buffer
- (save-restriction
- (widen)
- (let ((start (window-start))
- buffer-read-only)
- (while (re-search-forward "\\(xn--[-0-9a-z]+\\)" nil t)
- (replace-match (idna-to-unicode (match-string 1))))
- (set-window-start (get-buffer-window (current-buffer)) start)))))))
+ (gnus-summary-select-article)
+ (let ((mail-header-separator ""))
+ (gnus-eval-in-buffer-window gnus-article-buffer
+ (save-restriction
+ (widen)
+ (let ((start (window-start))
+ buffer-read-only)
+ (while (re-search-forward "\\(xn--[-0-9a-z]+\\)" nil t)
+ (replace-match (puny-decode-domain (match-string 1))))
+ (set-window-start (get-buffer-window (current-buffer)) start))))))
(defun gnus-summary-morse-message (&optional arg)
"Morse decode the current article."
@@ -9996,7 +9930,7 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
encoded to-newsgroup
to-method (gnus-server-to-method (gnus-group-method to-newsgroup)))
(set (intern (format "gnus-current-%s-group" action))
- (mm-decode-coding-string
+ (decode-coding-string
to-newsgroup
(gnus-group-name-charset to-method to-newsgroup))))
(unless to-method
@@ -10006,7 +9940,7 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
(setq to-newsgroup
(or encoded
(and to-newsgroup
- (mm-encode-coding-string
+ (encode-coding-string
to-newsgroup
(gnus-group-name-charset to-method to-newsgroup)))))
;; Check the method we are to move this article to...
@@ -10589,7 +10523,6 @@ groups."
(let ((mbl1 mml-buffer-list))
(setq mml-buffer-list mbl)
(set (make-local-variable 'mml-buffer-list) mbl1))
- (gnus-make-local-hook 'kill-buffer-hook)
(add-hook 'kill-buffer-hook 'mml-destroy-buffers t t))))
`(lambda (no-highlight)
(let ((mail-parse-charset ',gnus-newsgroup-charset)
@@ -10830,7 +10763,7 @@ If N is negative, mark backward instead. If UNMARK is non-nil, remove
the process mark instead. The difference between N and the actual
number of articles marked is returned."
(interactive "P")
- (if (and (null n) (gnus-region-active-p))
+ (if (and (null n) (and transient-mark-mode mark-active))
(gnus-uu-mark-region (region-beginning) (region-end) unmark)
(setq n (prefix-numeric-value n))
(let ((backward (< n 0))
@@ -11184,7 +11117,7 @@ If NO-EXPIRE, auto-expiry will be inhibited."
(goto-char (+ forward (point)))
;; Replace the old mark with the new mark.
(let ((to-insert
- (mm-subst-char-in-string
+ (subst-char-in-string
(char-after) mark
(buffer-substring (point) (1+ (point))))))
(delete-region (point) (1+ (point)))
@@ -11716,17 +11649,7 @@ Returns nil if no thread was there to be shown."
(end (or (gnus-summary--inv end) (gnus-summary--inv (1- end))))
;; Leave point at bol
(beg (progn (beginning-of-line) (if (bobp) (point) (1- (point)))))
- (eoi (when end
- (if (fboundp 'next-single-char-property-change)
- ;; Note: XEmacs version of n-s-c-p-c may return nil
- (or (next-single-char-property-change end 'invisible)
- (point-max))
- (while (progn
- (end-of-line 2)
- (and (not (eobp))
- (eq (get-char-property (point) 'invisible)
- 'gnus-sum))))
- (point)))))
+ (eoi (and end (next-single-char-property-change end 'invisible))))
(when eoi
(remove-overlays beg eoi 'invisible 'gnus-sum)
(goto-char orig)
@@ -12130,7 +12053,7 @@ no matter what the properties `:decode' and `:headers' are."
command result)
(unless (numberp (car articles))
(error "No article to pipe"))
- (setq command (gnus-read-shell-command
+ (setq command (read-shell-command
(concat "Shell command on "
(if (cdr articles)
(format "these %d articles" (length articles))
@@ -12301,7 +12224,6 @@ save those articles instead."
(defun gnus-read-move-group-name (prompt default articles prefix)
"Read a group name."
(let* ((split-name (gnus-get-split-value gnus-move-split-methods))
- (minibuffer-confirm-incomplete nil) ; XEmacs
(prom
(format "%s %s to"
prompt
@@ -12331,7 +12253,7 @@ save those articles instead."
(setq to-newsgroup default))
(unless to-newsgroup
(error "No group name entered"))
- (setq encoded (mm-encode-coding-string
+ (setq encoded (encode-coding-string
to-newsgroup
(gnus-group-name-charset to-method to-newsgroup)))
(or (gnus-active encoded)
@@ -12457,9 +12379,9 @@ If REVERSE, save parts that do not match TYPE."
": " (or (cdr (assq 'execute (car pslist))) "") "\n")
(setq e (point))
(forward-line -1) ; back to `b'
- (gnus-add-text-properties
+ (add-text-properties
b (1- e) (list 'gnus-number gnus-reffed-article-number
- gnus-mouse-face-prop gnus-mouse-face))
+ 'mouse-face gnus-mouse-face))
(gnus-data-enter
after-article gnus-reffed-article-number
gnus-unread-mark b (car pslist) 0 (- e b))
@@ -12601,16 +12523,16 @@ If REVERSE, save parts that do not match TYPE."
(let* ((beg (point-at-bol))
(end (point-at-eol))
;; Fix by Mike Dugan <dugan@bucrf16.bu.edu>.
- (from (if (get-text-property beg gnus-mouse-face-prop)
+ (from (if (get-text-property beg 'mouse-face)
beg
(or (next-single-property-change
- beg gnus-mouse-face-prop nil end)
+ beg 'mouse-face nil end)
beg)))
(to
(if (= from end)
(- from 2)
(or (next-single-property-change
- from gnus-mouse-face-prop nil end)
+ from 'mouse-face nil end)
end))))
;; If no mouse-face prop on line we will have to = from = end,
;; so we highlight the entire line instead.
@@ -12914,10 +12836,10 @@ returned."
(mail-header-number h))
gnus-newsgroup-headers)))
(setq gnus-newsgroup-headers
- (gnus-merge 'list
- gnus-newsgroup-headers
- (gnus-fetch-headers articles nil t)
- 'gnus-article-sort-by-number))
+ (cl-merge 'list
+ gnus-newsgroup-headers
+ (gnus-fetch-headers articles nil t)
+ 'gnus-article-sort-by-number))
(setq gnus-newsgroup-articles
(gnus-sorted-nunion gnus-newsgroup-articles articles))
;; Suppress duplicates?
@@ -13115,8 +13037,6 @@ BOOKMARK is a bookmark name or a bookmark record."
(gnus-summary-make-all-marking-commands)
-(gnus-ems-redefine)
-
(provide 'gnus-sum)
(run-hooks 'gnus-sum-load-hook)
diff --git a/lisp/gnus/gnus-sync.el b/lisp/gnus/gnus-sync.el
deleted file mode 100644
index cd8a753607..0000000000
--- a/lisp/gnus/gnus-sync.el
+++ /dev/null
@@ -1,917 +0,0 @@
-;;; gnus-sync.el --- synchronization facility for Gnus
-
-;; Copyright (C) 2010-2016 Free Software Foundation, Inc.
-
-;; Author: Ted Zlatanov <tzz@lifelogs.com>
-;; Keywords: news synchronization nntp nnrss
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This is the gnus-sync.el package.
-
-;; Put this in your startup file (~/.gnus.el for instance)
-
-;; possibilities for gnus-sync-backend:
-;; Tramp over SSH: /ssh:user@host:/path/to/filename
-;; ...or any other file Tramp and Emacs can handle...
-
-;; (setq gnus-sync-backend "/remote:/path.gpg" ; will use Tramp+EPA if loaded
-;; gnus-sync-global-vars '(gnus-newsrc-last-checked-date)
-;; gnus-sync-newsrc-groups '("nntp" "nnrss"))
-;; gnus-sync-newsrc-offsets '(2 3))
-;; against a LeSync server (beware the vampire LeSync, who knows your newsrc)
-
-;; (setq gnus-sync-backend '(lesync "http://lesync.info:5984/tzz")
-;; gnus-sync-newsrc-groups '("nntp" "nnrss"))
-
-;; What's a LeSync server?
-
-;; 1. install CouchDB, set up a real server admin user, and create a
-;; database, e.g. "tzz" and save the URL,
-;; e.g. http://lesync.info:5984/tzz
-
-;; 2. run `M-: (gnus-sync-lesync-setup "http://lesync.info:5984/tzz" "tzzadmin" "mypassword" "mysalt" t t)'
-
-;; (If you run it more than once, you have to remove the entry from
-;; _users yourself. This is intentional. This sets up a database
-;; admin for the "tzz" database, distinct from the server admin
-;; user in (1) above.)
-
-;; That's it, you can start using http://lesync.info:5984/tzz in your
-;; gnus-sync-backend as a LeSync backend. Fan fiction about the
-;; vampire LeSync is welcome.
-
-;; You may not want to expose a CouchDB install to the Big Bad
-;; Internet, especially if your love of all things furry would be thus
-;; revealed. Make sure it's not accessible by unauthorized users and
-;; guests, at least.
-
-;; If you want to try it out, I will create a test DB for you under
-;; http://lesync.info:5984/yourfavoritedbname
-
-;; TODO:
-
-;; - after gnus-sync-read, the message counts look wrong until you do
-;; `g'. So it's not run automatically, you have to call it with M-x
-;; gnus-sync-read
-
-;; - use gnus-after-set-mark-hook and gnus-before-update-mark-hook to
-;; catch the mark updates
-
-;; - repositioning of groups within topic after a LeSync sync is a
-;; weird sort of bubble sort ("buttle" sort: the old entry ends up
-;; at the rear of the list); you will eventually end up with the
-;; right order after calling `gnus-sync-read' a bunch of times.
-
-;; - installing topics and groups is inefficient and annoying, lots of
-;; prompts could be avoided
-
-;;; Code:
-
-(eval-when-compile (require 'cl))
-(require 'json)
-(require 'gnus)
-(require 'gnus-start)
-(require 'gnus-util)
-
-(defvar gnus-topic-alist) ;; gnus-group.el
-(autoload 'gnus-group-topic "gnus-topic")
-
-(defgroup gnus-sync nil
- "The Gnus synchronization facility."
- :version "24.1"
- :group 'gnus)
-
-(defcustom gnus-sync-newsrc-groups '("nntp" "nnrss")
- "List of groups to be synchronized in the gnus-newsrc-alist.
-The group names are matched, they don't have to be fully
-qualified. Typically you would choose all of these. That's the
-default because there is no active sync backend by default, so
-this setting is harmless until the user chooses a sync backend."
- :group 'gnus-sync
- :type '(repeat regexp))
-
-(defcustom gnus-sync-newsrc-offsets '(2 3)
- "List of per-group data to be synchronized."
- :group 'gnus-sync
- :version "24.4"
- :type '(set (const :tag "Read ranges" 2)
- (const :tag "Marks" 3)))
-
-(defcustom gnus-sync-global-vars nil
- "List of global variables to be synchronized.
-You may want to sync `gnus-newsrc-last-checked-date' but pretty
-much any symbol is fair game. You could additionally sync
-`gnus-newsrc-alist', `gnus-server-alist', `gnus-topic-topology',
-and `gnus-topic-alist'. Also see `gnus-variable-list'."
- :group 'gnus-sync
- :type '(repeat (choice (variable :tag "A known variable")
- (symbol :tag "Any symbol"))))
-
-(defcustom gnus-sync-backend nil
- "The synchronization backend."
- :group 'gnus-sync
- :type '(radio (const :format "None" nil)
- (list :tag "Sync server"
- (const :format "LeSync Server API" lesync)
- (string :tag "URL of a CouchDB database for API access"))
- (string :tag "Sync to a file")))
-
-(defvar gnus-sync-newsrc-loader nil
- "Carrier for newsrc data")
-
-(defcustom gnus-sync-file-encrypt-to nil
- "If non-nil, set `epa-file-encrypt-to' from this for encrypting the Sync file."
- :version "24.4"
- :type '(choice string (repeat string))
- :group 'gnus-sync)
-
-(defcustom gnus-sync-lesync-name (system-name)
- "The LeSync name for this machine."
- :group 'gnus-sync
- :version "24.3"
- :type 'string)
-
-(defcustom gnus-sync-lesync-install-topics 'ask
- "Should LeSync install the recorded topics?"
- :group 'gnus-sync
- :version "24.3"
- :type '(choice (const :tag "Never Install" nil)
- (const :tag "Always Install" t)
- (const :tag "Ask Me Once" ask)))
-
-(defvar gnus-sync-lesync-props-hash (make-hash-table :test 'equal)
- "LeSync props, keyed by group name")
-
-(defvar gnus-sync-lesync-design-prefix "/_design/lesync"
- "The LeSync design prefix for CouchDB")
-
-(defvar gnus-sync-lesync-security-object "/_security"
- "The LeSync security object for CouchDB")
-
-(defun gnus-sync-lesync-parse ()
- "Parse the result of a LeSync request."
- (goto-char (point-min))
- (condition-case nil
- (when (search-forward-regexp "^$" nil t)
- (json-read))
- (error
- (gnus-message
- 1
- "gnus-sync-lesync-parse: Could not read the LeSync response!")
- nil)))
-
-(defun gnus-sync-lesync-call (url method headers &optional kvdata)
- "Make an access request to URL using KVDATA and METHOD.
-KVDATA must be an alist."
- (let ((url-request-method method)
- (url-request-extra-headers headers)
- (url-request-data (if kvdata (json-encode kvdata) nil)))
- (with-current-buffer (url-retrieve-synchronously url)
- (let ((data (gnus-sync-lesync-parse)))
- (gnus-message 12 "gnus-sync-lesync-call: %s URL %s sent %S got %S"
- method url `((headers . ,headers) (data ,kvdata)) data)
- (kill-buffer (current-buffer))
- data))))
-
-(defun gnus-sync-lesync-PUT (url headers &optional data)
- (gnus-sync-lesync-call url "PUT" headers data))
-
-(defun gnus-sync-lesync-POST (url headers &optional data)
- (gnus-sync-lesync-call url "POST" headers data))
-
-(defun gnus-sync-lesync-GET (url headers &optional data)
- (gnus-sync-lesync-call url "GET" headers data))
-
-(defun gnus-sync-lesync-DELETE (url headers &optional data)
- (gnus-sync-lesync-call url "DELETE" headers data))
-
-;; this is not necessary with newer versions of json.el but 1.2 or older
-;; (which are in Emacs 24.1 and earlier) need it
-(defun gnus-sync-json-alist-p (list)
- "Non-null if and only if LIST is an alist."
- (while (consp list)
- (setq list (if (consp (car list))
- (cdr list)
- 'not-alist)))
- (null list))
-
-;; this is not necessary with newer versions of json.el but 1.2 or older
-;; (which are in Emacs 24.1 and earlier) need it
-(defun gnus-sync-json-plist-p (list)
- "Non-null if and only if LIST is a plist."
- (while (consp list)
- (setq list (if (and (keywordp (car list))
- (consp (cdr list)))
- (cddr list)
- 'not-plist)))
- (null list))
-
-; (gnus-sync-lesync-setup "http://lesync.info:5984/tzz" "tzzadmin" "mypassword" "mysalt" t t)
-; (gnus-sync-lesync-setup "http://lesync.info:5984/tzz")
-
-(defun gnus-sync-lesync-setup (url &optional user password salt reader admin)
- (interactive "sEnter URL to set up: ")
- "Set up the LeSync database at URL.
-Install USER as a READER and/or an ADMIN in the security object
-under \"_security\", and in the CouchDB \"_users\" table using
-PASSWORD and SALT. Only one USER is thus supported for now.
-When SALT is nil, a random one will be generated using `random'."
- (let* ((design-url (concat url gnus-sync-lesync-design-prefix))
- (security-object (concat url "/_security"))
- (user-record `((names . [,user]) (roles . [])))
- (couch-user-name (format "org.couchdb.user:%s" user))
- (salt (or salt (sha1 (format "%s" (random)))))
- (couch-user-record
- `((_id . ,couch-user-name)
- (type . user)
- (name . ,(format "%s" user))
- (roles . [])
- (salt . ,salt)
- (password_sha . ,(when password
- (sha1
- (format "%s%s" password salt))))))
- (rev (progn
- (gnus-sync-lesync-find-prop 'rev design-url design-url)
- (gnus-sync-lesync-get-prop 'rev design-url)))
- (latest-func "function(head,req)
-{
- var tosend = [];
- var row;
- var ftime = (req.query['ftime'] || 0);
- while (row = getRow())
- {
- if (row.value['float-time'] > ftime)
- {
- var s = row.value['_id'];
- if (s) tosend.push('\"'+s.replace('\"', '\\\"')+'\"');
- }
- }
- send('['+tosend.join(',') + ']');
-}")
-;; <key>read</key>
-;; <dict>
-;; <key>de.alt.fan.ipod</key>
-;; <array>
-;; <integer>1</integer>
-;; <integer>2</integer>
-;; <dict>
-;; <key>start</key>
-;; <integer>100</integer>
-;; <key>length</key>
-;; <integer>100</integer>
-;; </dict>
-;; </array>
-;; </dict>
- (xmlplistread-func "function(head, req) {
- var row;
- start({ 'headers': { 'Content-Type': 'text/xml' } });
-
- send('<dict>');
- send('<key>read</key>');
- send('<dict>');
- while(row = getRow())
- {
- var read = row.value.read;
- if (read && read[0] && read[0] == 'invlist')
- {
- send('<key>'+row.key+'</key>');
- //send('<invlist>'+read+'</invlist>');
- send('<array>');
-
- var from = 0;
- var flip = false;
-
- for (var i = 1; i < read.length && read[i]; i++)
- {
- var cur = read[i];
- if (flip)
- {
- if (from == cur-1)
- {
- send('<integer>'+read[i]+'</integer>');
- }
- else
- {
- send('<dict>');
- send('<key>start</key>');
- send('<integer>'+from+'</integer>');
- send('<key>end</key>');
- send('<integer>'+(cur-1)+'</integer>');
- send('</dict>');
- }
-
- }
- flip = ! flip;
- from = cur;
- }
- send('</array>');
- }
- }
-
- send('</dict>');
- send('</dict>');
-}
-")
- (subs-func "function(doc){emit([doc._id, doc.source], doc._rev);}")
- (revs-func "function(doc){emit(doc._id, doc._rev);}")
- (bytimesubs-func "function(doc)
-{emit([(doc['float-time']||0), doc._id], doc._rev);}")
- (bytime-func "function(doc)
-{emit([(doc['float-time']||0), doc._id], doc);}")
- (groups-func "function(doc){emit(doc._id, doc);}"))
- (and (if user
- (and (assq 'ok (gnus-sync-lesync-PUT
- security-object
- nil
- (append (and reader
- (list `(readers . ,user-record)))
- (and admin
- (list `(admins . ,user-record))))))
- (assq 'ok (gnus-sync-lesync-PUT
- (concat (file-name-directory url)
- "_users/"
- couch-user-name)
- nil
- couch-user-record)))
- t)
- (assq 'ok (gnus-sync-lesync-PUT
- design-url
- nil
- `(,@(when rev (list (cons '_rev rev)))
- (lists . ((latest . ,latest-func)
- (xmlplistread . ,xmlplistread-func)))
- (views . ((subs . ((map . ,subs-func)))
- (revs . ((map . ,revs-func)))
- (bytimesubs . ((map . ,bytimesubs-func)))
- (bytime . ((map . ,bytime-func)))
- (groups . ((map . ,groups-func)))))))))))
-
-(defun gnus-sync-lesync-find-prop (prop url key)
- "Retrieve a PROPerty of a document KEY at URL.
-Calls `gnus-sync-lesync-set-prop'.
-For the 'rev PROP, uses '_rev against the document."
- (gnus-sync-lesync-set-prop
- prop key (cdr (assq (if (eq prop 'rev) '_rev prop)
- (gnus-sync-lesync-GET url nil)))))
-
-(defun gnus-sync-lesync-set-prop (prop key val)
- "Update the PROPerty of document KEY at URL to VAL.
-Updates `gnus-sync-lesync-props-hash'."
- (puthash (format "%s.%s" key prop) val gnus-sync-lesync-props-hash))
-
-(defun gnus-sync-lesync-get-prop (prop key)
- "Get the PROPerty of KEY from `gnus-sync-lesync-props-hash'."
- (gethash (format "%s.%s" key prop) gnus-sync-lesync-props-hash))
-
-(defun gnus-sync-deep-print (data)
- (let* ((print-quoted t)
- (print-readably t)
- (print-escape-multibyte nil)
- (print-escape-nonascii t)
- (print-length nil)
- (print-level nil)
- (print-circle nil)
- (print-escape-newlines t))
- (format "%S" data)))
-
-(defun gnus-sync-newsrc-loader-builder (&optional only-modified)
- (let* ((entries (cdr gnus-newsrc-alist))
- entry name ret)
- (while entries
- (setq entry (pop entries)
- name (car entry))
- (when (gnus-grep-in-list name gnus-sync-newsrc-groups)
- (if only-modified
- (when (not (equal (gnus-sync-deep-print entry)
- (gnus-sync-lesync-get-prop 'checksum name)))
- (gnus-message 9 "%s: add %s, it's modified"
- "gnus-sync-newsrc-loader-builder" name)
- (push entry ret))
- (push entry ret))))
- ret))
-
-; (json-encode (gnus-sync-range2invlist '((1 . 47137) (47139 . 47714) 48129 48211 49231 49281 49342 49473 49475 49502)))
-(defun gnus-sync-range2invlist (ranges)
- (append '(invlist)
- (let ((ranges (delq nil ranges))
- ret range from to)
- (while ranges
- (setq range (pop ranges))
- (if (atom range)
- (setq from range
- to range)
- (setq from (car range)
- to (cdr range)))
- (push from ret)
- (push (1+ to) ret))
- (reverse ret))))
-
-; (let* ((d '((1 . 47137) (47139 . 47714) 48129 48211 49231 49281 49342 49473 49475 49502)) (j (format "%S" (gnus-sync-invlist2range (gnus-sync-range2invlist d))))) (or (equal (format "%S" d) j) j))
-(defun gnus-sync-invlist2range (inv)
- (setq inv (append inv nil))
- (if (equal (format "%s" (car inv)) "invlist")
- (let ((i (cdr inv))
- (start 0)
- ret cur top flip)
- (while i
- (setq cur (pop i))
- (when flip
- (setq top (1- cur))
- (if (= start top)
- (push start ret)
- (push (cons start top) ret)))
- (setq flip (not flip))
- (setq start cur))
- (reverse ret))
- inv))
-
-(defun gnus-sync-position (search list &optional test)
- "Find the position of SEARCH in LIST using TEST, defaulting to `eq'."
- (let ((pos 0)
- (test (or test 'eq)))
- (while (and list (not (funcall test (car list) search)))
- (pop list)
- (incf pos))
- (if (funcall test (car list) search) pos nil)))
-
-(defun gnus-sync-topic-group-position (group topic-name)
- (gnus-sync-position
- group (cdr (assoc topic-name gnus-topic-alist)) 'equal))
-
-(defun gnus-sync-fix-topic-group-position (group topic-name position)
- (unless (equal position (gnus-sync-topic-group-position group topic-name))
- (let* ((loc "gnus-sync-fix-topic-group-position")
- (groups (delete group (cdr (assoc topic-name gnus-topic-alist))))
- (position (min position (1- (length groups))))
- (old (nth position groups)))
- (when (and old (not (equal old group)))
- (setf (nth position groups) group)
- (setcdr (assoc topic-name gnus-topic-alist)
- (append groups (list old)))
- (gnus-message 9 "%s: %s moved to %d, swap with %s"
- loc group position old)))))
-
-(defun gnus-sync-lesync-pre-save-group-entry (url nentry &rest passed-props)
- (let* ((loc "gnus-sync-lesync-save-group-entry")
- (k (car nentry))
- (revision (gnus-sync-lesync-get-prop 'rev k))
- (sname gnus-sync-lesync-name)
- (topic (gnus-group-topic k))
- (topic-offset (gnus-sync-topic-group-position k topic))
- (sources (gnus-sync-lesync-get-prop 'source k)))
- ;; set the revision so we don't have a conflict
- `(,@(when revision
- (list (cons '_rev revision)))
- (_id . ,k)
- ;; the time we saved
- ,@passed-props
- ;; add our name to the sources list for this key
- (source ,@(if (member gnus-sync-lesync-name sources)
- sources
- (cons gnus-sync-lesync-name sources)))
- ,(cons 'level (nth 1 nentry))
- ,@(if topic (list (cons 'topic topic)) nil)
- ,@(if topic-offset (list (cons 'topic-offset topic-offset)) nil)
- ;; the read marks
- ,(cons 'read (gnus-sync-range2invlist (nth 2 nentry)))
- ;; the other marks
- ,@(delq nil (mapcar (lambda (mark-entry)
- (gnus-message 12 "%s: prep param %s in %s"
- loc
- (car mark-entry)
- (nth 3 nentry))
- (if (listp (cdr mark-entry))
- (cons (car mark-entry)
- (gnus-sync-range2invlist
- (cdr mark-entry)))
- (progn ; else this is not a list
- (gnus-message 9 "%s: non-list param %s in %s"
- loc
- (car mark-entry)
- (nth 3 nentry))
- nil)))
- (nth 3 nentry))))))
-
-(defun gnus-sync-lesync-post-save-group-entry (url entry)
- (let* ((loc "gnus-sync-lesync-post-save-group-entry")
- (k (cdr (assq 'id entry))))
- (cond
- ;; success!
- ((and (assq 'rev entry) (assq 'id entry))
- (progn
- (gnus-sync-lesync-set-prop 'rev k (cdr (assq 'rev entry)))
- (gnus-sync-lesync-set-prop 'checksum
- k
- (gnus-sync-deep-print
- (assoc k gnus-newsrc-alist)))
- (gnus-message 9 "%s: successfully synced %s to %s"
- loc k url)))
- ;; specifically check for document conflicts
- ((equal "conflict" (format "%s" (cdr-safe (assq 'error entry))))
- (gnus-error
- 1
- "%s: use `%s' to resolve the conflict synchronizing %s to %s: %s"
- loc "gnus-sync-read" k url (cdr (assq 'reason entry))))
- ;; generic errors
- ((assq 'error entry)
- (gnus-error 1 "%s: got error while synchronizing %s to %s: %s"
- loc k url (cdr (assq 'reason entry))))
-
- (t
- (gnus-message 2 "%s: unknown sync status after %s to %s: %S"
- loc k url entry)))
- (assoc 'error entry)))
-
-(defun gnus-sync-lesync-groups-builder (url)
- (let ((u (concat url gnus-sync-lesync-design-prefix "/_view/groups")))
- (cdr (assq 'rows (gnus-sync-lesync-GET u nil)))))
-
-(defun gnus-sync-subscribe-group (name)
- "Subscribe to group NAME. Returns NAME on success, nil otherwise."
- (gnus-subscribe-newsgroup name))
-
-(defun gnus-sync-lesync-read-group-entry (url name entry &rest passed-props)
- "Read ENTRY information for NAME. Returns NAME if successful.
-Skips entries whose sources don't contain
-`gnus-sync-lesync-name'. When the alist PASSED-PROPS has a
-`subscribe-all' element that evaluates to true, we attempt to
-subscribe to unknown groups. The user is also allowed to delete
-unwanted groups via the LeSync URL."
- (let* ((loc "gnus-sync-lesync-read-group-entry")
- (entry (gnus-sync-lesync-normalize-group-entry entry passed-props))
- (subscribe-all (cdr (assq 'subscribe-all passed-props)))
- (sources (cdr (assq 'source entry)))
- (rev (cdr (assq 'rev entry)))
- (in-sources (member gnus-sync-lesync-name sources))
- (known (assoc name gnus-newsrc-alist))
- cell)
- (unless known
- (if (and subscribe-all
- (y-or-n-p (format "Subscribe to group %s?" name)))
- (setq known (gnus-sync-subscribe-group name)
- in-sources t)
- ;; else...
- (when (y-or-n-p (format "Delete group %s from server?" name))
- (if (equal name (gnus-sync-lesync-delete-group url name))
- (gnus-message 1 "%s: removed group %s from server %s"
- loc name url)
- (gnus-error 1 "%s: could not remove group %s from server %s"
- loc name url)))))
- (when known
- (unless in-sources
- (setq in-sources
- (y-or-n-p
- (format "Read group %s even though %s is not in sources %S?"
- name gnus-sync-lesync-name (or sources ""))))))
- (when rev
- (gnus-sync-lesync-set-prop 'rev name rev))
-
- ;; if the source matches AND we have this group
- (if (and known in-sources)
- (progn
- (gnus-message 10 "%s: reading LeSync entry %s, sources %S"
- loc name sources)
- (while entry
- (setq cell (pop entry))
- (let ((k (car cell))
- (val (cdr cell)))
- (gnus-sync-lesync-set-prop k name val)))
- name)
- ;; else...
- (unless known
- (gnus-message 5 "%s: ignoring entry %s, it wasn't subscribed. %s"
- loc name "Call `gnus-sync-read' with C-u to force it."))
- (unless in-sources
- (gnus-message 5 "%s: ignoring entry %s, %s not in sources %S"
- loc name gnus-sync-lesync-name (or sources "")))
- nil)))
-
-(declare-function gnus-topic-create-topic "gnus-topic"
- (topic parent &optional previous full-topic))
-(declare-function gnus-topic-enter-dribble "gnus-topic" ())
-
-(defun gnus-sync-lesync-install-group-entry (name)
- (let* ((master (assoc name gnus-newsrc-alist))
- (old-topic-name (gnus-group-topic name))
- (old-topic (assoc old-topic-name gnus-topic-alist))
- (target-topic-name (gnus-sync-lesync-get-prop 'topic name))
- (target-topic-offset (gnus-sync-lesync-get-prop 'topic-offset name))
- (target-topic (assoc target-topic-name gnus-topic-alist))
- (loc "gnus-sync-lesync-install-group-entry"))
- (if master
- (progn
- (when (eq 'ask gnus-sync-lesync-install-topics)
- (setq gnus-sync-lesync-install-topics
- (y-or-n-p "Install topics from LeSync?")))
- (when (and (eq t gnus-sync-lesync-install-topics)
- target-topic-name)
- (if (equal old-topic-name target-topic-name)
- (gnus-message 12 "%s: %s is already in topic %s"
- loc name target-topic-name)
- ;; see `gnus-topic-move-group'
- (when (and old-topic target-topic)
- (setcdr old-topic (gnus-delete-first name (cdr old-topic)))
- (gnus-message 5 "%s: removing %s from topic %s"
- loc name old-topic-name))
- (unless target-topic
- (when (y-or-n-p (format "Create missing topic %s?"
- target-topic-name))
- (gnus-topic-create-topic target-topic-name nil)
- (setq target-topic (assoc target-topic-name
- gnus-topic-alist))))
- (if target-topic
- (prog1
- (nconc target-topic (list name))
- (gnus-message 5 "%s: adding %s to topic %s"
- loc name (car target-topic))
- (gnus-topic-enter-dribble))
- (gnus-error 2 "%s: LeSync group %s can't go in missing topic %s"
- loc name target-topic-name)))
- (when (and target-topic-offset target-topic)
- (gnus-sync-fix-topic-group-position
- name target-topic-name target-topic-offset)))
- ;; install the subscription level
- (when (gnus-sync-lesync-get-prop 'level name)
- (setf (nth 1 master) (gnus-sync-lesync-get-prop 'level name)))
- ;; install the read and other marks
- (setf (nth 2 master) (gnus-sync-lesync-get-prop 'read name))
- (setf (nth 3 master) (gnus-sync-lesync-get-prop 'marks name))
- (gnus-sync-lesync-set-prop 'checksum
- name
- (gnus-sync-deep-print master))
- nil)
- (gnus-error 1 "%s: invalid LeSync group %s" loc name)
- 'invalid-name)))
-
-; (gnus-sync-lesync-delete-group (cdr gnus-sync-backend) "nntp+Gmane:gwene.org.slashdot")
-
-(defun gnus-sync-lesync-delete-group (url name)
- "Returns NAME if successful deleting it from URL, an error otherwise."
- (interactive "sEnter URL to set up: \rsEnter group name: ")
- (let* ((u (concat (cadr gnus-sync-backend) "/" (url-hexify-string name)))
- (del (gnus-sync-lesync-DELETE
- u
- `(,@(when (gnus-sync-lesync-get-prop 'rev name)
- (list (cons "If-Match"
- (gnus-sync-lesync-get-prop 'rev name))))))))
- (or (cdr (assq 'id del)) del)))
-
-;;; (gnus-sync-lesync-normalize-group-entry '((subscribe . ["invlist"]) (read . ["invlist"]) (topic-offset . 20) (topic . "news") (level . 6) (source . ["a" "b"]) (float-time . 1319671237.099285) (_rev . "10-edf5107f41e5e6f7f6629d1c0ee172f7") (_id . "nntp+news.net:alt.movies")) '((read-time 1319672156.486414) (subscribe-all nil)))
-
-(defun gnus-sync-lesync-normalize-group-entry (entry &optional passed-props)
- (let (ret
- marks
- cell)
- (setq entry (append passed-props entry))
- (while (setq cell (pop entry))
- (let ((k (car cell))
- (val (cdr cell)))
- (cond
- ((eq k 'read)
- (push (cons k (gnus-sync-invlist2range val)) ret))
- ;; we ignore these parameters
- ((member k '(_id subscribe-all _deleted_conflicts))
- nil)
- ((eq k '_rev)
- (push (cons 'rev val) ret))
- ((eq k 'source)
- (push (cons 'source (append val nil)) ret))
- ((or (eq k 'float-time)
- (eq k 'level)
- (eq k 'topic)
- (eq k 'topic-offset)
- (eq k 'read-time))
- (push (cons k val) ret))
-;;; "How often have I said to you that when you have eliminated the
-;;; impossible, whatever remains, however improbable, must be the
-;;; truth?" --Sherlock Holmes
- ;; everything remaining must be a mark
- (t (push (cons k (gnus-sync-invlist2range val)) marks)))))
- (cons (cons 'marks marks) ret)))
-
-(defun gnus-sync-save (&optional force)
-"Save the Gnus sync data to the backend.
-With a prefix, FORCE is set and all groups will be saved."
- (interactive "P")
- (cond
- ((and (listp gnus-sync-backend)
- (eq (nth 0 gnus-sync-backend) 'lesync)
- (stringp (nth 1 gnus-sync-backend)))
-
- ;; refresh the revisions if we're forcing the save
- (when force
- (mapc (lambda (entry)
- (when (and (assq 'key entry)
- (assq 'value entry))
- (gnus-sync-lesync-set-prop
- 'rev
- (cdr (assq 'key entry))
- (cdr (assq 'value entry)))))
- ;; the revs view is key = name, value = rev
- (cdr (assq 'rows (gnus-sync-lesync-GET
- (concat (nth 1 gnus-sync-backend)
- gnus-sync-lesync-design-prefix
- "/_view/revs")
- nil)))))
-
- (let* ((ftime (float-time))
- (url (nth 1 gnus-sync-backend))
- (entries
- (mapcar (lambda (entry)
- (gnus-sync-lesync-pre-save-group-entry
- (cadr gnus-sync-backend)
- entry
- (cons 'float-time ftime)))
- (gnus-sync-newsrc-loader-builder (not force))))
- ;; when there are no entries, there's nothing to save
- (sync (if entries
- (gnus-sync-lesync-POST
- (concat url "/_bulk_docs")
- '(("Content-Type" . "application/json"))
- `((docs . ,(vconcat entries nil))))
- (gnus-message
- 2 "gnus-sync-save: nothing to save to the LeSync backend")
- nil)))
- (mapcar (lambda (e) (gnus-sync-lesync-post-save-group-entry url e))
- sync)))
- ((stringp gnus-sync-backend)
- (gnus-message 7 "gnus-sync-save: saving to backend %s" gnus-sync-backend)
- ;; populate gnus-sync-newsrc-loader from all but the first dummy
- ;; entry in gnus-newsrc-alist whose group matches any of the
- ;; gnus-sync-newsrc-groups
- ;; TODO: keep the old contents for groups we don't have!
- (let ((gnus-sync-newsrc-loader
- (loop for entry in (cdr gnus-newsrc-alist)
- when (gnus-grep-in-list
- (car entry) ;the group name
- gnus-sync-newsrc-groups)
- collect (cons (car entry)
- (mapcar (lambda (offset)
- (cons offset (nth offset entry)))
- gnus-sync-newsrc-offsets)))))
- (with-temp-file gnus-sync-backend
- (progn
- (let ((coding-system-for-write gnus-ding-file-coding-system)
- (standard-output (current-buffer)))
- (when gnus-sync-file-encrypt-to
- (set (make-local-variable 'epa-file-encrypt-to)
- gnus-sync-file-encrypt-to))
- (princ (format ";; -*- mode:emacs-lisp; coding: %s; -*-\n"
- gnus-ding-file-coding-system))
- (princ ";; Gnus sync data v. 0.0.1\n")
- ;; TODO: replace with `gnus-sync-deep-print'
- (let* ((print-quoted t)
- (print-readably t)
- (print-escape-multibyte nil)
- (print-escape-nonascii t)
- (print-length nil)
- (print-level nil)
- (print-circle nil)
- (print-escape-newlines t)
- (variables (cons 'gnus-sync-newsrc-loader
- gnus-sync-global-vars))
- variable)
- (while variables
- (if (and (boundp (setq variable (pop variables)))
- (symbol-value variable))
- (progn
- (princ "\n(setq ")
- (princ (symbol-name variable))
- (princ " '")
- (prin1 (symbol-value variable))
- (princ ")\n"))
- (princ "\n;;; skipping empty variable ")
- (princ (symbol-name variable)))))
- (gnus-message
- 7
- "gnus-sync-save: stored variables %s and %d groups in %s"
- gnus-sync-global-vars
- (length gnus-sync-newsrc-loader)
- gnus-sync-backend)
-
- ;; Idea from Dan Christensen <jdc@chow.mat.jhu.edu>
- ;; Save the .eld file with extra line breaks.
- (gnus-message 8 "gnus-sync-save: adding whitespace to %s"
- gnus-sync-backend)
- (save-excursion
- (goto-char (point-min))
- (while (re-search-forward "^(\\|(\\\"" nil t)
- (replace-match "\n\\&" t))
- (goto-char (point-min))
- (while (re-search-forward " $" nil t)
- (replace-match "" t t))))))))
- ;; the pass-through case: gnus-sync-backend is not a known choice
- (nil)))
-
-(defun gnus-sync-read (&optional subscribe-all)
- "Load the Gnus sync data from the backend.
-With a prefix, SUBSCRIBE-ALL is set and unknown groups will be subscribed."
- (interactive "P")
- (when gnus-sync-backend
- (gnus-message 7 "gnus-sync-read: loading from backend %s" gnus-sync-backend)
- (cond
- ((and (listp gnus-sync-backend)
- (eq (nth 0 gnus-sync-backend) 'lesync)
- (stringp (nth 1 gnus-sync-backend)))
- (let ((errored nil)
- name ftime)
- (mapc (lambda (entry)
- (setq name (cdr (assq 'id entry)))
- ;; set ftime the FIRST time through this loop, that
- ;; way it reflects the time we FINISHED reading
- (unless ftime (setq ftime (float-time)))
-
- (unless errored
- (setq errored
- (when (equal name
- (gnus-sync-lesync-read-group-entry
- (nth 1 gnus-sync-backend)
- name
- (cdr (assq 'value entry))
- `(read-time ,ftime)
- `(subscribe-all ,subscribe-all)))
- (gnus-sync-lesync-install-group-entry
- (cdr (assq 'id entry)))))))
- (gnus-sync-lesync-groups-builder (nth 1 gnus-sync-backend)))))
-
- ((stringp gnus-sync-backend)
- ;; read data here...
- (if (or debug-on-error debug-on-quit)
- (load gnus-sync-backend nil t)
- (condition-case var
- (load gnus-sync-backend nil t)
- (error
- (error "Error in %s: %s" gnus-sync-backend (cadr var)))))
- (let ((valid-count 0)
- invalid-groups)
- (dolist (node gnus-sync-newsrc-loader)
- (if (gnus-gethash (car node) gnus-newsrc-hashtb)
- (progn
- (incf valid-count)
- (loop for store in (cdr node)
- do (setf (nth (car store)
- (assoc (car node) gnus-newsrc-alist))
- (cdr store))))
- (push (car node) invalid-groups)))
- (gnus-message
- 7
- "gnus-sync-read: loaded %d groups (out of %d) from %s"
- valid-count (length gnus-sync-newsrc-loader)
- gnus-sync-backend)
- (when invalid-groups
- (gnus-message
- 7
- "gnus-sync-read: skipped %d groups (out of %d) from %s"
- (length invalid-groups)
- (length gnus-sync-newsrc-loader)
- gnus-sync-backend)
- (gnus-message 9 "gnus-sync-read: skipped groups: %s"
- (mapconcat 'identity invalid-groups ", ")))))
- (nil))
-
- (gnus-message 9 "gnus-sync-read: remaking the newsrc hashtable")
- (gnus-make-hashtable-from-newsrc-alist)))
-
-;;;###autoload
-(defun gnus-sync-initialize ()
-"Initialize the Gnus sync facility."
- (interactive)
- (gnus-message 5 "Initializing the sync facility")
- (gnus-sync-install-hooks))
-
-;;;###autoload
-(defun gnus-sync-install-hooks ()
- "Install the sync hooks."
- (interactive)
- ;; (add-hook 'gnus-get-new-news-hook 'gnus-sync-read)
- ;; (add-hook 'gnus-read-newsrc-el-hook 'gnus-sync-read)
- (add-hook 'gnus-save-newsrc-hook 'gnus-sync-save))
-
-(defun gnus-sync-unload-hook ()
- "Uninstall the sync hooks."
- (interactive)
- (remove-hook 'gnus-save-newsrc-hook 'gnus-sync-save))
-
-(add-hook 'gnus-sync-unload-hook 'gnus-sync-unload-hook)
-
-(when gnus-sync-backend (gnus-sync-initialize))
-
-(provide 'gnus-sync)
-
-;;; gnus-sync.el ends here
diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el
index 24ae4cfae4..809caee64a 100644
--- a/lisp/gnus/gnus-topic.el
+++ b/lisp/gnus/gnus-topic.el
@@ -44,9 +44,6 @@
:type 'hook
:group 'gnus-topic)
-(when (featurep 'xemacs)
- (add-hook 'gnus-topic-mode-hook 'gnus-xmas-topic-menu-add))
-
(defcustom gnus-topic-line-format "%i[ %(%{%n%}%) -- %A ]%v\n"
"Format of topic lines.
It works along the same lines as a normal formatting string,
@@ -66,12 +63,12 @@ See Info node `(gnus)Formatting Variables'."
:group 'gnus-topic)
(defcustom gnus-topic-indent-level 2
- "*How much each subtopic should be indented."
+ "How much each subtopic should be indented."
:type 'integer
:group 'gnus-topic)
(defcustom gnus-topic-display-empty-topics t
- "*If non-nil, display the topic lines even of topics that have no unread articles."
+ "If non-nil, display the topic lines even of topics that have no unread articles."
:type 'boolean
:group 'gnus-topic)
@@ -575,7 +572,6 @@ articles in the topic and its subtopics."
(not (zerop unread)) ;Non-empty
tick ;Ticked articles
(/= point-max (point-max)))) ;Inactive groups
- (gnus-extent-start-open (point))
(gnus-topic-insert-topic-line
(car type) visiblep
(not (eq (nth 2 type) 'hidden))
@@ -644,7 +640,7 @@ articles in the topic and its subtopics."
(beginning-of-line)
;; Insert the text.
(if shownp
- (gnus-add-text-properties
+ (add-text-properties
(point)
(prog1 (1+ (point))
(eval gnus-topic-line-format-spec))
@@ -1065,7 +1061,7 @@ articles in the topic and its subtopics."
[(meta tab)] gnus-topic-unindent
"\C-i" gnus-topic-indent
"\M-\C-i" gnus-topic-unindent
- gnus-mouse-2 gnus-mouse-pick-topic)
+ [mouse-2] gnus-mouse-pick-topic)
;; Define a new submap.
(gnus-define-keys (gnus-group-topic-map "T" gnus-group-mode-map)
@@ -1153,7 +1149,6 @@ articles in the topic and its subtopics."
'gnus-group-sort-topic)
(setq gnus-group-change-level-function 'gnus-topic-change-level)
(setq gnus-goto-missing-group-function 'gnus-topic-goto-missing-group)
- (gnus-make-local-hook 'gnus-check-bogus-groups-hook)
(add-hook 'gnus-check-bogus-groups-hook 'gnus-topic-clean-alist
nil 'local)
(setq gnus-topology-checked-p nil)
@@ -1167,7 +1162,7 @@ articles in the topic and its subtopics."
(remove-hook 'gnus-check-bogus-groups-hook 'gnus-topic-clean-alist)
(setq gnus-group-prepare-function 'gnus-group-prepare-flat)
(setq gnus-group-sort-alist-function 'gnus-group-sort-flat))
- (when (gmm-called-interactively-p 'any)
+ (when (called-interactively-p 'any)
(gnus-group-list-groups))))
(defun gnus-topic-select-group (&optional all)
@@ -1294,7 +1289,7 @@ If COPYP, copy the groups instead."
(list current-prefix-arg
(gnus-completing-read "Move to topic" (mapcar 'car gnus-topic-alist) t
nil 'gnus-topic-history)))
- (let ((use-marked (and (not n) (not (gnus-region-active-p))
+ (let ((use-marked (and (not n) (not (and transient-mark-mode mark-active))
gnus-group-marked t))
(groups (gnus-group-process-prefix n))
(topicl (assoc topic gnus-topic-alist))
@@ -1319,7 +1314,7 @@ If COPYP, copy the groups instead."
(defun gnus-topic-remove-group (&optional n)
"Remove the current group from the topic."
(interactive "P")
- (let ((use-marked (and (not n) (not (gnus-region-active-p))
+ (let ((use-marked (and (not n) (not (and transient-mark-mode mark-active))
gnus-group-marked t))
(groups (gnus-group-process-prefix n)))
(mapc
@@ -1615,8 +1610,8 @@ If performed on a topic, edit the topic parameters instead."
(let ((topic (gnus-group-topic-name)))
(gnus-edit-form
(gnus-topic-parameters topic)
- (gnus-format-message "Editing the topic parameters for `%s'."
- (or group topic))
+ (format-message "Editing the topic parameters for `%s'."
+ (or group topic))
`(lambda (form)
(gnus-topic-set-parameters ,topic form)))))))
diff --git a/lisp/gnus/gnus-undo.el b/lisp/gnus/gnus-undo.el
index b3afcd7f44..ad27e8996f 100644
--- a/lisp/gnus/gnus-undo.el
+++ b/lisp/gnus/gnus-undo.el
@@ -44,9 +44,6 @@
;;; Code:
(eval-when-compile (require 'cl))
-(eval-when-compile
- (when (featurep 'xemacs)
- (require 'easy-mmode))) ; for `define-minor-mode'
(require 'gnus-util)
(require 'gnus)
@@ -111,7 +108,6 @@
;; Set up the menu.
(when (gnus-visual-p 'undo-menu 'menu)
(gnus-undo-make-menu-bar))
- (gnus-make-local-hook 'post-command-hook)
(add-hook 'post-command-hook 'gnus-undo-boundary nil t)))
;;; Interface functions.
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 31645fcd31..b6ef4334e7 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -44,24 +44,18 @@
:type `(radio (function-item
:doc "Use Emacs standard `completing-read' function."
gnus-emacs-completing-read)
- ;; iswitchb.el is very old and ido.el is unavailable
- ;; in XEmacs, so we exclude those function items.
- ,@(unless (featurep 'xemacs)
- '((function-item
- :doc "Use `ido-completing-read' function."
- gnus-ido-completing-read)
- (function-item
- :doc "Use iswitchb based completing-read function."
- gnus-iswitchb-completing-read)))))
+ (function-item
+ :doc "Use `ido-completing-read' function."
+ gnus-ido-completing-read)
+ (function-item
+ :doc "Use iswitchb based completing-read function."
+ gnus-iswitchb-completing-read)))
(defcustom gnus-completion-styles
- (if (and (boundp 'completion-styles-alist)
- (boundp 'completion-styles))
- (append (when (and (assq 'substring completion-styles-alist)
- (not (memq 'substring completion-styles)))
- (list 'substring))
- completion-styles)
- nil)
+ (append (when (and (assq 'substring completion-styles-alist)
+ (not (memq 'substring completion-styles)))
+ (list 'substring))
+ completion-styles)
"Value of `completion-styles' to use when completing."
:version "24.1"
:group 'gnus-meta
@@ -81,23 +75,14 @@
(autoload 'nnheader-replace-chars-in-string "nnheader")
(autoload 'mail-header-remove-comments "mail-parse")
-(eval-and-compile
- (cond
- ;; Prefer `replace-regexp-in-string' (present in Emacs, XEmacs 21.5,
- ;; SXEmacs 22.1.4) over `replace-in-string'. The latter leads to inf-loops
- ;; on empty matches:
- ;; (replace-in-string "foo" "/*$" "/")
- ;; (replace-in-string "xe" "\\(x\\)?" "")
- ((fboundp 'replace-regexp-in-string)
- (defun gnus-replace-in-string (string regexp newtext &optional literal)
- "Replace all matches for REGEXP with NEWTEXT in STRING.
+(defun gnus-replace-in-string (string regexp newtext &optional literal)
+ "Replace all matches for REGEXP with NEWTEXT in STRING.
If LITERAL is non-nil, insert NEWTEXT literally. Return a new
string containing the replacements.
This is a compatibility function for different Emacsen."
- (replace-regexp-in-string regexp newtext string nil literal)))
- ((fboundp 'replace-in-string)
- (defalias 'gnus-replace-in-string 'replace-in-string))))
+ (declare (obsolete replace-regexp-in-string "25.2"))
+ (replace-regexp-in-string regexp newtext string nil literal))
(defun gnus-boundp (variable)
"Return non-nil if VARIABLE is bound and non-nil."
@@ -141,14 +126,6 @@ This is a compatibility function for different Emacsen."
(funcall (if (stringp buffer) 'get-buffer 'buffer-name)
buffer))))
-;; The LOCAL arg to `add-hook' is interpreted differently in Emacs and
-;; XEmacs. In Emacs we don't need to call `make-local-hook' first.
-;; It's harmless, though, so the main purpose of this alias is to shut
-;; up the byte compiler.
-(defalias 'gnus-make-local-hook (if (featurep 'xemacs)
- 'make-local-hook
- 'ignore))
-
(defun gnus-delete-first (elt list)
"Delete by side effect the first occurrence of ELT as a member of LIST."
(if (equal (car list) elt)
@@ -311,13 +288,6 @@ Symbols are also allowed; their print names are used instead."
(and (= (car fdate) (car date))
(> (nth 1 fdate) (nth 1 date))))))
-;; Every version of Emacs Gnus supports has built-in float-time.
-;; The featurep test silences an irritating compiler warning.
-(defalias 'gnus-float-time
- (if (or (featurep 'emacs)
- (fboundp 'float-time))
- 'float-time 'time-to-seconds))
-
;;; Keymap macros.
(defmacro gnus-local-set-keys (&rest plist)
@@ -326,13 +296,6 @@ Symbols are also allowed; their print names are used instead."
(defmacro gnus-define-keys (keymap &rest plist)
"Define all keys in PLIST in KEYMAP."
- ;; Convert the key [?\S-\ ] to [(shift space)] for XEmacs.
- (when (featurep 'xemacs)
- (let ((bindings plist))
- (while bindings
- (when (equal (car bindings) [?\S-\ ])
- (setcar bindings [(shift space)]))
- (setq bindings (cddr bindings)))))
`(gnus-define-keys-1 (quote ,keymap) (quote ,plist)))
(defmacro gnus-define-keys-safe (keymap &rest plist)
@@ -434,7 +397,7 @@ Cache the result as a text property stored in DATE."
(defun gnus-mode-string-quote (string)
"Quote all \"%\"'s in STRING."
- (gnus-replace-in-string string "%" "%%"))
+ (replace-regexp-in-string "%" "%%" string))
;; Make a hash table (default and minimum size is 256).
;; Optional argument HASHSIZE specifies the table size.
@@ -454,7 +417,7 @@ Cache the result as a text property stored in DATE."
i))
(defcustom gnus-verbose 6
- "*Integer that says how verbose Gnus should be.
+ "Integer that says how verbose Gnus should be.
The higher the number, the more messages Gnus will flash to say what
it's doing. At zero, Gnus will be totally mute; at five, Gnus will
display most important messages; and at ten, Gnus will keep on
@@ -465,10 +428,10 @@ jabbering all the time."
(defcustom gnus-add-timestamp-to-message nil
"Non-nil means add timestamps to messages that Gnus issues.
-If it is `log', add timestamps to only the messages that go into the
-\"*Messages*\" buffer (in XEmacs, it is the \" *Message-Log*\" buffer).
-If it is neither nil nor `log', add timestamps not only to log messages
-but also to the ones displayed in the echo area."
+If it is `log', add timestamps to only the messages that go into
+the \"*Messages*\" buffer. If it is neither nil nor `log', add
+timestamps not only to log messages but also to the ones
+displayed in the echo area."
:version "23.1" ;; No Gnus
:group 'gnus-various
:type '(choice :format "%{%t%}:\n %[Value Menu%] %v"
@@ -481,56 +444,37 @@ but also to the ones displayed in the echo area."
(eval-when-compile
(defmacro gnus-message-with-timestamp-1 (format-string args)
(let ((timestamp '(format-time-string "%Y%m%dT%H%M%S.%3N> " time)))
- (if (featurep 'xemacs)
- `(let (str time)
- (if (or (and (null ,format-string) (null ,args))
- (progn
- (setq str (apply 'format ,format-string ,args))
- (zerop (length str))))
- (prog1
- (and ,format-string str)
- (clear-message nil))
- (cond ((eq gnus-add-timestamp-to-message 'log)
- (setq time (current-time))
- (display-message 'no-log str)
- (log-message 'message (concat ,timestamp str)))
- (gnus-add-timestamp-to-message
- (setq time (current-time))
- (display-message 'message (concat ,timestamp str)))
- (t
- (display-message 'message str))))
- str)
- `(let (str time)
- (cond ((eq gnus-add-timestamp-to-message 'log)
- (setq str (let (message-log-max)
- (apply 'message ,format-string ,args)))
- (when (and message-log-max
- (> message-log-max 0)
- (/= (length str) 0))
- (setq time (current-time))
- (with-current-buffer (if (fboundp 'messages-buffer)
- (messages-buffer)
- (get-buffer-create "*Messages*"))
- (goto-char (point-max))
- (let ((inhibit-read-only t))
- (insert ,timestamp str "\n")
- (forward-line (- message-log-max))
- (delete-region (point-min) (point)))
- (goto-char (point-max))))
- str)
- (gnus-add-timestamp-to-message
- (if (or (and (null ,format-string) (null ,args))
- (progn
- (setq str (apply 'format ,format-string ,args))
- (zerop (length str))))
- (prog1
- (and ,format-string str)
- (message nil))
- (setq time (current-time))
- (message "%s" (concat ,timestamp str))
- str))
- (t
- (apply 'message ,format-string ,args))))))))
+ `(let (str time)
+ (cond ((eq gnus-add-timestamp-to-message 'log)
+ (setq str (let (message-log-max)
+ (apply 'message ,format-string ,args)))
+ (when (and message-log-max
+ (> message-log-max 0)
+ (/= (length str) 0))
+ (setq time (current-time))
+ (with-current-buffer (if (fboundp 'messages-buffer)
+ (messages-buffer)
+ (get-buffer-create "*Messages*"))
+ (goto-char (point-max))
+ (let ((inhibit-read-only t))
+ (insert ,timestamp str "\n")
+ (forward-line (- message-log-max))
+ (delete-region (point-min) (point)))
+ (goto-char (point-max))))
+ str)
+ (gnus-add-timestamp-to-message
+ (if (or (and (null ,format-string) (null ,args))
+ (progn
+ (setq str (apply 'format ,format-string ,args))
+ (zerop (length str))))
+ (prog1
+ (and ,format-string str)
+ (message nil))
+ (setq time (current-time))
+ (message "%s" (concat ,timestamp str))
+ str))
+ (t
+ (apply 'message ,format-string ,args)))))))
(defvar gnus-action-message-log nil)
@@ -646,7 +590,6 @@ If N, return the Nth ancestor instead."
(defun gnus-read-event-char (&optional prompt)
"Get the next event."
(let ((event (read-event prompt)))
- ;; should be gnus-characterp, but this can't be called in XEmacs anyway
(cons (and (numberp event) event) event)))
(defun gnus-copy-file (file &optional to)
@@ -839,9 +782,6 @@ If there's no subdirectory, delete DIRECTORY as well."
(setq string (replace-match "" t t string)))
string)
-(declare-function gnus-put-text-property "gnus"
- (start end property value &optional object))
-
(defsubst gnus-put-text-property-excluding-newlines (beg end prop val)
"The same as `put-text-property', but don't put this prop on any newlines in the region."
(save-match-data
@@ -849,9 +789,9 @@ If there's no subdirectory, delete DIRECTORY as well."
(save-restriction
(goto-char beg)
(while (re-search-forward gnus-emphasize-whitespace-regexp end 'move)
- (gnus-put-text-property beg (match-beginning 0) prop val)
+ (put-text-property beg (match-beginning 0) prop val)
(setq beg (point)))
- (gnus-put-text-property beg (point) prop val)))))
+ (put-text-property beg (point) prop val)))))
(defsubst gnus-put-overlay-excluding-newlines (beg end prop val)
"The same as `put-text-property', but don't put this prop on any newlines in the region."
@@ -875,7 +815,7 @@ Otherwise, do nothing."
(when (eq prop 'face)
(setcar (cdr (get-text-property beg 'face)) (or val 'default)))
(inline
- (gnus-put-text-property beg stop prop val)))
+ (put-text-property beg stop prop val)))
(setq beg stop))))
(defun gnus-get-text-property-excluding-characters-with-faces (pos prop)
@@ -890,39 +830,12 @@ Otherwise, return the value."
(defmacro gnus-faces-at (position)
"Return a list of faces at POSITION."
- (if (featurep 'xemacs)
- `(let ((pos ,position))
- (mapcar-extents 'extent-face
- nil (current-buffer) pos pos nil 'face))
- `(let ((pos ,position))
- (delq nil (cons (get-text-property pos 'face)
- (mapcar
- (lambda (overlay)
- (overlay-get overlay 'face))
- (overlays-at pos)))))))
-
-(if (fboundp 'invisible-p)
- (defalias 'gnus-invisible-p 'invisible-p)
- ;; for Emacs < 22.2, and XEmacs.
- (defun gnus-invisible-p (pos)
- "Return non-nil if the character after POS is currently invisible."
- (let ((prop (get-char-property pos 'invisible)))
- (if (eq buffer-invisibility-spec t)
- prop
- (or (memq prop buffer-invisibility-spec)
- (assq prop buffer-invisibility-spec))))))
-
-;; Note: the optional 2nd argument has a different meaning between
-;; Emacs and XEmacs.
-;; (next-char-property-change POSITION &optional LIMIT)
-;; (next-extent-change POS &optional OBJECT)
-(defalias 'gnus-next-char-property-change
- (if (fboundp 'next-extent-change)
- 'next-extent-change 'next-char-property-change))
-
-(defalias 'gnus-previous-char-property-change
- (if (fboundp 'previous-extent-change)
- 'previous-extent-change 'previous-char-property-change))
+ `(let ((pos ,position))
+ (delq nil (cons (get-text-property pos 'face)
+ (mapcar
+ (lambda (overlay)
+ (overlay-get overlay 'face))
+ (overlays-at pos))))))
;;; Protected and atomic operations. dmoore@ucsd.edu 21.11.1996
;; The primary idea here is to try to protect internal data structures
@@ -1001,16 +914,8 @@ with potentially long computations."
;;; Functions for saving to babyl/mail files.
-(eval-when-compile
- (if (featurep 'xemacs)
- ;; Don't load tm and apel XEmacs packages that provide some
- ;; Emacs emulating functions and variables.
- (let ((features features))
- (provide 'tm-view)
- (unless (fboundp 'set-alist) (defalias 'set-alist 'ignore))
- (require 'rmail)) ;; It requires tm-view that loads apel.
- (require 'rmail))
- (autoload 'rmail-update-summary "rmailsum"))
+(require 'rmail)
+(autoload 'rmail-update-summary "rmailsum")
(defvar mm-text-coding-system)
@@ -1207,11 +1112,8 @@ ARG is passed to the first function."
(apply 'run-hook-with-args hook args)))
(defun gnus-run-mode-hooks (&rest funcs)
- "Run `run-mode-hooks' if it is available, otherwise `run-hooks'.
-This function saves the current buffer."
- (if (fboundp 'run-mode-hooks)
- (save-current-buffer (apply 'run-mode-hooks funcs))
- (save-current-buffer (apply 'run-hooks funcs))))
+ "Run `run-mode-hooks', saving the current buffer."
+ (save-current-buffer (apply 'run-mode-hooks funcs)))
;;; Various
@@ -1259,16 +1161,6 @@ If HASH-TABLE-P is non-nil, regards SEQUENCE as a hash table."
(setq sequence (cdr sequence))))
(nreverse out)))
-(if (fboundp 'assq-delete-all)
- (defalias 'gnus-delete-alist 'assq-delete-all)
- (defun gnus-delete-alist (key alist)
- "Delete from ALIST all elements whose car is KEY.
-Return the modified alist."
- (let (entry)
- (while (setq entry (assq key alist))
- (setq alist (delq entry alist)))
- alist)))
-
(defun gnus-grep-in-list (word list)
"Find if a WORD matches any regular expression in the given LIST."
(when (and word list)
@@ -1370,43 +1262,17 @@ Return the modified alist."
(put 'gnus-with-output-to-file 'lisp-indent-function 1)
(put 'gnus-with-output-to-file 'edebug-form-spec '(form body))
-(if (fboundp 'union)
- (defalias 'gnus-union 'union)
- (defun gnus-union (l1 l2 &rest keys)
- "Set union of lists L1 and L2.
-If KEYS contains the `:test' and `equal' pair, use `equal' to compare
-items in lists, otherwise use `eq'."
- (cond ((null l1) l2)
- ((null l2) l1)
- ((equal l1 l2) l1)
- (t
- (or (>= (length l1) (length l2))
- (setq l1 (prog1 l2 (setq l2 l1))))
- (if (eq 'equal (plist-get keys :test))
- (while l2
- (or (member (car l2) l1)
- (push (car l2) l1))
- (pop l2))
- (while l2
- (or (memq (car l2) l1)
- (push (car l2) l1))
- (pop l2)))
- l1))))
-
-(declare-function gnus-add-text-properties "gnus"
- (start end properties &optional object))
-
(defun gnus-add-text-properties-when
(property value start end properties &optional object)
- "Like `gnus-add-text-properties', only applied on where PROPERTY is VALUE."
+ "Like `add-text-properties', only applied on where PROPERTY is VALUE."
(let (point)
(while (and start
(< start end) ;; XEmacs will loop for every when start=end.
(setq point (text-property-not-all start end property value)))
- (gnus-add-text-properties start point properties object)
+ (add-text-properties start point properties object)
(setq start (text-property-any point end property value)))
(if start
- (gnus-add-text-properties start end properties object))))
+ (add-text-properties start end properties object))))
(defun gnus-remove-text-properties-when
(property value start end properties &optional object)
@@ -1449,10 +1315,6 @@ is run."
"Byte-compile FORM if `gnus-use-byte-compile' is non-nil."
(if gnus-use-byte-compile
(progn
- (condition-case nil
- ;; Work around a bug in XEmacs 21.4
- (require 'byte-optimize)
- (error))
(require 'bytecomp)
(defalias 'gnus-byte-compile
(lambda (form)
@@ -1555,16 +1417,7 @@ SPEC is a predicate specifier that contains stuff like `or', `and',
initial-input history def)
"Call standard `completing-read-function'."
(let ((completion-styles gnus-completion-styles))
- (completing-read prompt
- (if (featurep 'xemacs)
- ;; Old XEmacs (at least 21.4) expect an alist,
- ;; in which the car of each element is a string,
- ;; for collection.
- (mapcar
- (lambda (elem)
- (list (format "%s" (or (car-safe elem) elem))))
- collection)
- collection)
+ (completing-read prompt collection
nil require-match initial-input history def)))
(autoload 'ido-completing-read "ido")
@@ -1605,11 +1458,6 @@ SPEC is a predicate specifier that contains stuff like `or', `and',
(or iswitchb-mode
(remove-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)))))
-(defun gnus-graphic-display-p ()
- (if (featurep 'xemacs)
- (device-on-window-system-p)
- (display-graphic-p)))
-
(put 'gnus-parse-without-error 'lisp-indent-function 0)
(put 'gnus-parse-without-error 'edebug-form-spec '(body))
@@ -1655,7 +1503,7 @@ CHOICE is a list of the choice char and help message at IDX."
(setq tchar nil)
(setq buf (get-buffer-create "*Gnus Help*"))
(pop-to-buffer buf)
- (fundamental-mode) ; for Emacs 20.4+
+ (fundamental-mode)
(buffer-disable-undo)
(erase-buffer)
(insert prompt ":\n\n")
@@ -1690,31 +1538,18 @@ CHOICE is a list of the choice char and help message at IDX."
(kill-buffer buf))
tchar))
-(if (featurep 'emacs)
- (defalias 'gnus-select-frame-set-input-focus 'select-frame-set-input-focus)
- (if (fboundp 'select-frame-set-input-focus)
- (defalias 'gnus-select-frame-set-input-focus 'select-frame-set-input-focus)
- ;; XEmacs 21.4, SXEmacs
- (defun gnus-select-frame-set-input-focus (frame)
- "Select FRAME, raise it, and set input focus, if possible."
- (raise-frame frame)
- (select-frame frame)
- (focus-frame frame))))
-
(defun gnus-frame-or-window-display-name (object)
"Given a frame or window, return the associated display name.
Return nil otherwise."
- (if (featurep 'xemacs)
- (device-connection (dfw-device object))
- (if (or (framep object)
- (and (windowp object)
- (setq object (window-frame object))))
- (let ((display (frame-parameter object 'display)))
- (if (and (stringp display)
- ;; Exclude invalid display names.
- (string-match "\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'"
- display))
- display)))))
+ (if (or (framep object)
+ (and (windowp object)
+ (setq object (window-frame object))))
+ (let ((display (frame-parameter object 'display)))
+ (if (and (stringp display)
+ ;; Exclude invalid display names.
+ (string-match "\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'"
+ display))
+ display))))
(defvar tool-bar-mode)
@@ -1723,9 +1558,7 @@ Return nil otherwise."
(when (and (boundp 'tool-bar-mode)
tool-bar-mode)
(let* ((args nil)
- (func (cond ((featurep 'xemacs)
- 'ignore)
- ((fboundp 'tool-bar-update)
+ (func (cond ((fboundp 'tool-bar-update)
'tool-bar-update)
((fboundp 'force-window-update)
'force-window-update)
@@ -1766,29 +1599,10 @@ sequence, this is like `mapcar'. With several, it is like the Common Lisp
heads))
nil))
(setq ,result-tail (cdr ,result-tail)
- ,@(apply 'nconc (mapcar (lambda (h) (list h (list 'cdr h))) heads))))
+ ,@(mapcan (lambda (h) (list h (list 'cdr h))) heads)))
(cdr ,result)))
`(mapcar ,function ,seq1)))
-(if (fboundp 'merge)
- (defalias 'gnus-merge 'merge)
- ;; Adapted from cl-seq.el
- (defun gnus-merge (type list1 list2 pred)
- "Destructively merge lists LIST1 and LIST2 to produce a new list.
-Argument TYPE is for compatibility and ignored.
-Ordering of the elements is preserved according to PRED, a `less-than'
-predicate on the elements."
- (let ((res nil))
- (while (and list1 list2)
- (if (funcall pred (car list2) (car list1))
- (push (pop list2) res)
- (push (pop list1) res)))
- (nconc (nreverse res) list1 list2))))
-
-(defvar xemacs-codename)
-(defvar sxemacs-codename)
-(defvar emacs-program-version)
-
(defun gnus-emacs-version ()
"Stringified Emacs version."
(let* ((lst (if (listp gnus-user-agent)
@@ -1799,37 +1613,15 @@ predicate on the elements."
((memq 'type lst)
(symbol-name system-type))
(t nil)))
- codename emacsname)
- (cond ((featurep 'sxemacs)
- (setq emacsname "SXEmacs"
- codename sxemacs-codename))
- ((featurep 'xemacs)
- (setq emacsname "XEmacs"
- codename xemacs-codename))
- (t
- (setq emacsname "Emacs")))
+ codename)
(cond
((not (memq 'emacs lst))
nil)
((string-match "^\\(\\([.0-9]+\\)*\\)\\.[0-9]+$" emacs-version)
- ;; Emacs:
(concat "Emacs/" (match-string 1 emacs-version)
(if system-v
(concat " (" system-v ")")
"")))
- ((or (featurep 'sxemacs) (featurep 'xemacs))
- ;; XEmacs or SXEmacs:
- (concat emacsname "/" emacs-program-version
- (let (plst)
- (when (memq 'codename lst)
- (push codename plst))
- (when system-v
- (push system-v plst))
- (unless (featurep 'mule)
- (push "no MULE" plst))
- (when (> (length plst) 0)
- (concat
- " (" (mapconcat 'identity (reverse plst) ", ") ")")))))
(t emacs-version))))
(defun gnus-rename-file (old-path new-path &optional trim)
@@ -1858,36 +1650,6 @@ empty directories from OLD-PATH."
(ignore-errors
(set-file-modes filename mode)))
-(if (fboundp 'set-process-query-on-exit-flag)
- (defalias 'gnus-set-process-query-on-exit-flag
- 'set-process-query-on-exit-flag)
- (defalias 'gnus-set-process-query-on-exit-flag
- 'process-kill-without-query))
-
-(defalias 'gnus-read-shell-command
- (if (fboundp 'read-shell-command) 'read-shell-command 'read-string))
-
-(defmacro gnus-put-display-table (range value display-table)
- "Set the value for char RANGE to VALUE in DISPLAY-TABLE. "
- (if (featurep 'xemacs)
- (progn
- `(if (fboundp 'put-display-table)
- (put-display-table ,range ,value ,display-table)
- (if (sequencep ,display-table)
- (aset ,display-table ,range ,value)
- (put-char-table ,range ,value ,display-table))))
- `(aset ,display-table ,range ,value)))
-
-(defmacro gnus-get-display-table (character display-table)
- "Find value for CHARACTER in DISPLAY-TABLE. "
- (if (featurep 'xemacs)
- `(if (fboundp 'get-display-table)
- (get-display-table ,character ,display-table)
- (if (sequencep ,display-table)
- (aref ,display-table ,character)
- (get-char-table ,character ,display-table)))
- `(aref ,display-table ,character)))
-
(declare-function image-size "image.c" (spec &optional pixels frame))
(defun gnus-rescale-image (image size)
@@ -1910,12 +1672,11 @@ Sizes are in pixels."
image)))
image)))
-(eval-when-compile (require 'gmm-utils))
(defun gnus-recursive-directory-files (dir)
"Return all regular files below DIR.
The first found will be returned if a file has hard or symbolic links."
(let (files attr attrs)
- (gmm-labels
+ (cl-labels
((fn (directory)
(dolist (file (directory-files directory t))
(setq attr (file-attributes (file-truename file)))
@@ -1939,63 +1700,6 @@ The first found will be returned if a file has hard or symbolic links."
(memq elem list))))
found))
-(eval-and-compile
- (cond
- ((fboundp 'match-substitute-replacement)
- (defalias 'gnus-match-substitute-replacement 'match-substitute-replacement))
- (t
- (defun gnus-match-substitute-replacement (replacement &optional fixedcase literal string subexp)
- "Return REPLACEMENT as it will be inserted by `replace-match'.
-In other words, all back-references in the form `\\&' and `\\N'
-are substituted with actual strings matched by the last search.
-Optional FIXEDCASE, LITERAL, STRING and SUBEXP have the same
-meaning as for `replace-match'.
-
-This is the definition of match-substitute-replacement in subr.el from GNU Emacs."
- (let ((match (match-string 0 string)))
- (save-match-data
- (set-match-data (mapcar (lambda (x)
- (if (numberp x)
- (- x (match-beginning 0))
- x))
- (match-data t)))
- (replace-match replacement fixedcase literal match subexp)))))))
-
-(if (fboundp 'string-match-p)
- (defalias 'gnus-string-match-p 'string-match-p)
- (defsubst gnus-string-match-p (regexp string &optional start)
- "\
-Same as `string-match' except this function does not change the match data."
- (save-match-data
- (string-match regexp string start))))
-
-(if (fboundp 'string-prefix-p)
- (defalias 'gnus-string-prefix-p 'string-prefix-p)
- (defun gnus-string-prefix-p (str1 str2 &optional ignore-case)
- "Return non-nil if STR1 is a prefix of STR2.
-If IGNORE-CASE is non-nil, the comparison is done without paying attention
-to case differences."
- (and (<= (length str1) (length str2))
- (let ((prefix (substring str2 0 (length str1))))
- (if ignore-case
- (string-equal (downcase str1) (downcase prefix))
- (string-equal str1 prefix))))))
-
-(defalias 'gnus-format-message
- (if (fboundp 'format-message) 'format-message
- ;; for Emacs < 25, and XEmacs, don't worry about quote translation.
- 'format))
-
-;; Simple check: can be a macro but this way, although slow, it's really clear.
-;; We don't use `bound-and-true-p' because it's not in XEmacs.
-(defun gnus-bound-and-true-p (sym)
- (and (boundp sym) (symbol-value sym)))
-
-(if (fboundp 'timer--function)
- (defalias 'gnus-timer--function 'timer--function)
- (defun gnus-timer--function (timer)
- (elt timer 5)))
-
(defun gnus-test-list (list predicate)
"To each element of LIST apply PREDICATE.
Return nil if LIST is no list or is empty or some test returns nil;
@@ -2021,6 +1725,59 @@ lists of strings."
(gnus-setdiff (cdr list1) list2)
(cons (car list1) (gnus-setdiff (cdr list1) list2)))))
+;;; Image functions.
+
+(defun gnus-image-type-available-p (type)
+ (and (display-images-p)
+ (image-type-available-p type)))
+
+(defun gnus-create-image (file &optional type data-p &rest props)
+ (let ((face (plist-get props :face)))
+ (when face
+ (setq props (plist-put props :foreground (face-foreground face)))
+ (setq props (plist-put props :background (face-background face))))
+ (ignore-errors
+ (apply 'create-image file type data-p props))))
+
+(defun gnus-put-image (glyph &optional string category)
+ (let ((point (point)))
+ (insert-image glyph (or string " "))
+ (put-text-property point (point) 'gnus-image-category category)
+ (unless string
+ (put-text-property (1- (point)) (point)
+ 'gnus-image-text-deletable t))
+ glyph))
+
+(defun gnus-remove-image (image &optional category)
+ "Remove the image matching IMAGE and CATEGORY found first."
+ (let ((start (point-min))
+ val end)
+ (while (and (not end)
+ (or (setq val (get-text-property start 'display))
+ (and (setq start
+ (next-single-property-change start 'display))
+ (setq val (get-text-property start 'display)))))
+ (setq end (or (next-single-property-change start 'display)
+ (point-max)))
+ (if (and (equal val image)
+ (equal (get-text-property start 'gnus-image-category)
+ category))
+ (progn
+ (put-text-property start end 'display nil)
+ (when (get-text-property start 'gnus-image-text-deletable)
+ (delete-region start end)))
+ (unless (= end (point-max))
+ (setq start end
+ end nil))))))
+
+(defun gnus-kill-all-overlays ()
+ "Delete all overlays in the current buffer."
+ (let* ((overlayss (overlay-lists))
+ (buffer-read-only nil)
+ (overlays (delq nil (nconc (car overlayss) (cdr overlayss)))))
+ (while overlays
+ (delete-overlay (pop overlays)))))
+
(provide 'gnus-util)
;;; gnus-util.el ends here
diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el
index 416567ed28..d09210da08 100644
--- a/lisp/gnus/gnus-uu.el
+++ b/lisp/gnus/gnus-uu.el
@@ -73,7 +73,7 @@
("\\.\\(flc\\|fli\\|rle\\|iff\\|pfx\\|avi\\|sme\\|rpza\\|dl\\|qt\\|rsrc\\|mov\\)$" "xanim")
("\\.\\(tar\\|arj\\|zip\\|zoo\\|arc\\|gz\\|Z\\|lzh\\|ar\\|lha\\)$"
"gnus-uu-archive"))
- "*Default actions to be taken when the user asks to view a file.
+ "Default actions to be taken when the user asks to view a file.
To change the behavior, you can either edit this variable or set
`gnus-uu-user-view-rules' to something useful.
@@ -113,7 +113,7 @@ details."
(defcustom gnus-uu-user-view-rules-end
'(("" "file"))
- "*What actions are to be taken if no rule matched the file name.
+ "What actions are to be taken if no rule matched the file name.
See the documentation on the `gnus-uu-default-view-rules' variable for
details."
:group 'gnus-extract-view
@@ -131,7 +131,7 @@ details."
("\\.Z$" "uncompress")
("\\.gz$" "gunzip")
("\\.arc$" "arc -x"))
- "*See `gnus-uu-user-archive-rules'."
+ "See `gnus-uu-user-archive-rules'."
:group 'gnus-extract-archive
:type '(repeat (group regexp (string :tag "Command"))))
@@ -149,7 +149,7 @@ unpack zip files, say the following:
:type '(repeat (group regexp (string :tag "Command"))))
(defcustom gnus-uu-ignore-files-by-name nil
- "*A regular expression saying what files should not be viewed based on name.
+ "A regular expression saying what files should not be viewed based on name.
If, for instance, you want gnus-uu to ignore all .au and .wav files,
you could say something like
@@ -162,7 +162,7 @@ Note that this variable can be used in conjunction with the
(regexp :format "%v")))
(defcustom gnus-uu-ignore-files-by-type nil
- "*A regular expression saying what files that shouldn't be viewed, based on MIME file type.
+ "A regular expression saying what files that shouldn't be viewed, based on MIME file type.
If, for instance, you want gnus-uu to ignore all audio files and all mpegs,
you could say something like
@@ -217,23 +217,20 @@ Note that this variable can be used in conjunction with the
;; Various variables users may set
-(defcustom gnus-uu-tmp-dir
- (cond ((fboundp 'temp-directory) (temp-directory))
- ((boundp 'temporary-file-directory) temporary-file-directory)
- ("/tmp/"))
- "*Variable saying where gnus-uu is to do its work.
+(defcustom gnus-uu-tmp-dir temporary-file-directory
+ "Variable saying where gnus-uu is to do its work.
Default is \"/tmp/\"."
:group 'gnus-extract
:type 'directory)
(defcustom gnus-uu-do-not-unpack-archives nil
- "*Non-nil means that gnus-uu won't peek inside archives looking for files to display.
+ "Non-nil means that gnus-uu won't peek inside archives looking for files to display.
Default is nil."
:group 'gnus-extract-archive
:type 'boolean)
(defcustom gnus-uu-ignore-default-view-rules nil
- "*Non-nil means that gnus-uu will ignore the default viewing rules.
+ "Non-nil means that gnus-uu will ignore the default viewing rules.
Only the user viewing rules will be consulted. Default is nil."
:group 'gnus-extract-view
:type 'boolean)
@@ -248,19 +245,19 @@ and `gnus-uu-grab-move'."
:type 'hook)
(defcustom gnus-uu-ignore-default-archive-rules nil
- "*Non-nil means that gnus-uu will ignore the default archive unpacking commands.
+ "Non-nil means that gnus-uu will ignore the default archive unpacking commands.
Only the user unpacking commands will be consulted. Default is nil."
:group 'gnus-extract-archive
:type 'boolean)
(defcustom gnus-uu-kill-carriage-return t
- "*Non-nil means that gnus-uu will strip all carriage returns from articles.
+ "Non-nil means that gnus-uu will strip all carriage returns from articles.
Default is t."
:group 'gnus-extract
:type 'boolean)
(defcustom gnus-uu-view-with-metamail nil
- "*Non-nil means that files will be viewed with metamail.
+ "Non-nil means that files will be viewed with metamail.
The gnus-uu viewing functions will be ignored and gnus-uu will try
to guess at a content-type based on file name suffixes. Default
it nil."
@@ -268,19 +265,19 @@ it nil."
:type 'boolean)
(defcustom gnus-uu-unmark-articles-not-decoded nil
- "*Non-nil means that gnus-uu will mark articles that were unsuccessfully decoded as unread.
+ "Non-nil means that gnus-uu will mark articles that were unsuccessfully decoded as unread.
Default is nil."
:group 'gnus-extract
:type 'boolean)
(defcustom gnus-uu-correct-stripped-uucode nil
- "*Non-nil means that gnus-uu will *try* to fix uuencoded files that have had trailing spaces deleted.
+ "Non-nil means that gnus-uu will *try* to fix uuencoded files that have had trailing spaces deleted.
Default is nil."
:group 'gnus-extract
:type 'boolean)
(defcustom gnus-uu-save-in-digest nil
- "*Non-nil means that gnus-uu, when asked to save without decoding, will save in digests.
+ "Non-nil means that gnus-uu, when asked to save without decoding, will save in digests.
If this variable is nil, gnus-uu will just save everything in a
file without any embellishments. The digesting almost conforms to RFC1153 -
no easy way to specify any meaningful volume and issue numbers were found,
@@ -298,19 +295,19 @@ so I simply dropped them."
"^Summary:" "^References:" "^Content-Type:" "^Content-Transfer-Encoding:"
"^MIME-Version:" "^Content-Disposition:" "^Content-Description:"
"^Content-ID:")
- "*List of regexps to match headers included in digested messages.
+ "List of regexps to match headers included in digested messages.
The headers will be included in the sequence they are matched. If nil
include all headers."
:group 'gnus-extract
:type '(repeat regexp))
(defcustom gnus-uu-save-separate-articles nil
- "*Non-nil means that gnus-uu will save articles in separate files."
+ "Non-nil means that gnus-uu will save articles in separate files."
:group 'gnus-extract
:type 'boolean)
(defcustom gnus-uu-be-dangerous 'ask
- "*Specifies what to do if unusual situations arise during decoding.
+ "Specifies what to do if unusual situations arise during decoding.
If nil, be as conservative as possible. If t, ignore things that
didn't work, and overwrite existing files. Otherwise, ask each time."
:group 'gnus-extract
@@ -408,7 +405,7 @@ didn't work, and overwrite existing files. Otherwise, ask each time."
gnus-uu-default-dir))))
(gnus-uu-initialize)
(setq gnus-uu-binhex-article-name
- (mm-make-temp-file (expand-file-name "binhex" gnus-uu-work-dir)))
+ (make-temp-file (expand-file-name "binhex" gnus-uu-work-dir)))
(gnus-uu-decode-with-method 'gnus-uu-binhex-article n dir))
(defun gnus-uu-decode-yenc (n dir)
@@ -474,7 +471,7 @@ didn't work, and overwrite existing files. Otherwise, ask each time."
gnus-uu-default-dir gnus-uu-default-dir)))
(gnus-uu-initialize)
(setq gnus-uu-binhex-article-name
- (mm-make-temp-file (expand-file-name "binhex" gnus-uu-work-dir)))
+ (make-temp-file (expand-file-name "binhex" gnus-uu-work-dir)))
(let ((gnus-view-pseudos (or gnus-view-pseudos 'automatic)))
(gnus-uu-decode-binhex n file)))
@@ -486,7 +483,7 @@ didn't work, and overwrite existing files. Otherwise, ask each time."
(interactive "P")
(gnus-uu-initialize)
(let ((gnus-uu-save-in-digest t)
- (file (mm-make-temp-file (nnheader-concat gnus-uu-work-dir "forward")))
+ (file (make-temp-file (nnheader-concat gnus-uu-work-dir "forward")))
(message-forward-as-mime message-forward-as-mime)
(mail-parse-charset gnus-newsgroup-charset)
(mail-parse-ignored-charsets gnus-newsgroup-ignored-charsets)
@@ -876,10 +873,7 @@ When called interactively, prompt for REGEXP."
(with-current-buffer buffer
(save-restriction
(let ((inhibit-read-only t))
- (set-text-properties (point-min) (point-max) nil)
- ;; These two are necessary for XEmacs 19.12 fascism.
- (put-text-property (point-min) (point-max) 'invisible nil)
- (put-text-property (point-min) (point-max) 'intangible nil))
+ (set-text-properties (point-min) (point-max) nil))
(when (and message-forward-as-mime
message-forward-show-mml
gnus-uu-digest-buffer)
@@ -1787,7 +1781,7 @@ Gnus might fail to display all of it.")
gnus-uu-tmp-dir)))
(setq gnus-uu-work-dir
- (mm-make-temp-file (concat gnus-uu-tmp-dir "gnus") 'dir))
+ (make-temp-file (concat gnus-uu-tmp-dir "gnus") 'dir))
(gnus-set-file-modes gnus-uu-work-dir 448)
(setq gnus-uu-work-dir (file-name-as-directory gnus-uu-work-dir))
(push (cons gnus-newsgroup-name gnus-uu-work-dir)
diff --git a/lisp/gnus/gnus-win.el b/lisp/gnus/gnus-win.el
index b1498fd785..6fc3bc45a9 100644
--- a/lisp/gnus/gnus-win.el
+++ b/lisp/gnus/gnus-win.el
@@ -34,27 +34,27 @@
:group 'gnus)
(defcustom gnus-use-full-window t
- "*If non-nil, use the entire Emacs screen."
+ "If non-nil, use the entire Emacs screen."
:group 'gnus-windows
:type 'boolean)
(defcustom gnus-window-min-width 2
- "*Minimum width of Gnus buffers."
+ "Minimum width of Gnus buffers."
:group 'gnus-windows
:type 'integer)
(defcustom gnus-window-min-height 1
- "*Minimum height of Gnus buffers."
+ "Minimum height of Gnus buffers."
:group 'gnus-windows
:type 'integer)
(defcustom gnus-always-force-window-configuration nil
- "*If non-nil, always force the Gnus window configurations."
+ "If non-nil, always force the Gnus window configurations."
:group 'gnus-windows
:type 'boolean)
(defcustom gnus-use-frames-on-any-display nil
- "*If non-nil, frames on all displays will be considered usable by Gnus.
+ "If non-nil, frames on all displays will be considered usable by Gnus.
When nil, only frames on the same display as the selected frame will be
used to display Gnus windows."
:version "22.1"
@@ -195,7 +195,7 @@ See the Gnus manual for an explanation of the syntax used.")
"Mapping from short symbols to buffer names or buffer variables.")
(defcustom gnus-configure-windows-hook nil
- "*A hook called when configuring windows."
+ "A hook called when configuring windows."
:version "22.1"
:group 'gnus-windows
:type 'hook)
@@ -273,9 +273,7 @@ See the Gnus manual for an explanation of the syntax used.")
(cond
((eq buf (window-buffer (selected-window)))
(set-buffer buf))
- ((eq t (window-dedicated-p
- ;; XEmacs version of `window-dedicated-p' requires it.
- (selected-window)))
+ ((eq t (window-dedicated-p))
;; If the window is hard-dedicated, we have a problem because
;; we just can't do what we're asked. But signaling an error,
;; like `switch-to-buffer' would do, is not an option because
@@ -417,19 +415,15 @@ See the Gnus manual for an explanation of the syntax used.")
(gnus-delete-windows-in-gnusey-frames))
;; Just remove some windows.
(gnus-remove-some-windows)
- (if (featurep 'xemacs)
- (switch-to-buffer nntp-server-buffer)
- (set-buffer nntp-server-buffer)))
+ (set-buffer nntp-server-buffer))
(select-frame frame)))
(let (gnus-window-frame-focus)
- (if (featurep 'xemacs)
- (switch-to-buffer nntp-server-buffer)
- (set-buffer nntp-server-buffer))
+ (set-buffer nntp-server-buffer)
(gnus-configure-frame split)
(run-hooks 'gnus-configure-windows-hook)
(when gnus-window-frame-focus
- (gnus-select-frame-set-input-focus
+ (select-frame-set-input-focus
(window-frame gnus-window-frame-focus)))))))))
(defun gnus-delete-windows-in-gnusey-frames ()
@@ -510,27 +504,15 @@ should have point."
lowest-buf buf))))
(when lowest-buf
(pop-to-buffer lowest-buf)
- (if (featurep 'xemacs)
- (switch-to-buffer nntp-server-buffer)
- (set-buffer nntp-server-buffer)))
+ (set-buffer nntp-server-buffer))
(mapcar (lambda (b) (delete-windows-on b t))
(delq lowest-buf bufs)))))
-(eval-and-compile
- (cond
- ((fboundp 'frames-on-display-list)
- (defalias 'gnus-frames-on-display-list 'frames-on-display-list))
- ((and (featurep 'xemacs) (fboundp 'frame-device))
- (defun gnus-frames-on-display-list ()
- (apply 'filtered-frame-list 'identity (list (frame-device nil)))))
- (t
- (defalias 'gnus-frames-on-display-list 'frame-list))))
-
(defun gnus-get-buffer-window (buffer &optional frame)
(cond ((and (null gnus-use-frames-on-any-display)
(memq frame '(t 0 visible)))
(car
- (let ((frames (gnus-frames-on-display-list)))
+ (let ((frames (frames-on-display-list)))
(gnus-remove-if (lambda (win) (not (memq (window-frame win)
frames)))
(get-buffer-window-list buffer nil frame)))))
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 5d2ce7ee19..943ba0889b 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -27,7 +27,7 @@
;;; Code:
-(eval '(run-hooks 'gnus-load-hook))
+(run-hooks 'gnus-load-hook)
(eval-when-compile (require 'cl))
(require 'wid-edit)
@@ -303,15 +303,9 @@ be set in `.emacs' instead."
:group 'gnus-start
:type 'boolean)
-(unless (featurep 'gnus-xmas)
- (defalias 'gnus-extent-detached-p 'ignore)
- (defalias 'gnus-extent-start-open 'ignore)
- (defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names)
- (defalias 'gnus-character-to-event 'identity)
- (defalias 'gnus-assq-delete-all 'assq-delete-all)
- (defalias 'gnus-add-text-properties 'add-text-properties)
- (defalias 'gnus-put-text-property 'put-text-property)
- (defvar gnus-mode-line-image-cache t)
+(defvar gnus-mode-line-image-cache t)
+
+(eval-and-compile
(if (fboundp 'find-image)
(defun gnus-mode-line-buffer-identification (line)
(let ((str (car-safe line))
@@ -336,12 +330,7 @@ be set in `.emacs' instead."
str)
(list str))
line)))
- (defalias 'gnus-mode-line-buffer-identification 'identity))
- (defalias 'gnus-deactivate-mark 'deactivate-mark)
- (defalias 'gnus-window-edges 'window-edges)
- (defalias 'gnus-key-press-event-p 'numberp)
- ;;(defalias 'gnus-decode-rfc1522 'ignore)
- )
+ (defalias 'gnus-mode-line-buffer-identification 'identity)))
;; We define these group faces here to avoid the display
;; update forced when creating new faces.
@@ -914,14 +903,20 @@ be set in `.emacs' instead."
(defun gnus-add-buffer ()
"Add the current buffer to the list of Gnus buffers."
+ (gnus-prune-buffers)
(push (current-buffer) gnus-buffers))
(defmacro gnus-kill-buffer (buffer)
"Kill BUFFER and remove from the list of Gnus buffers."
`(let ((buf ,buffer))
(when (gnus-buffer-exists-p buf)
- (setq gnus-buffers (delete (get-buffer buf) gnus-buffers))
- (kill-buffer buf))))
+ (kill-buffer buf)
+ (gnus-prune-buffers))))
+
+(defun gnus-prune-buffers ()
+ (dolist (buf gnus-buffers)
+ (unless (buffer-live-p buf)
+ (setq gnus-buffers (delete buf gnus-buffers)))))
(defun gnus-buffers ()
"Return a list of live Gnus buffers."
@@ -1002,7 +997,7 @@ be set in `.emacs' instead."
"Color alist used for the Gnus logo.")
(defcustom gnus-logo-color-style 'ma
- "*Color styles used for the Gnus logo."
+ "Color styles used for the Gnus logo."
:type `(choice ,@(mapcar (lambda (elem) (list 'const (car elem)))
gnus-logo-color-alist))
:group 'gnus-xmas)
@@ -1245,7 +1240,7 @@ in `.gnus.el'. Set this variable in `.emacs' instead."
(defcustom gnus-directory (or (getenv "SAVEDIR")
(nnheader-concat gnus-home-directory "News/"))
- "*Directory variable from which all other Gnus file variables are derived.
+ "Directory variable from which all other Gnus file variables are derived.
Note that Gnus is mostly loaded when the `.gnus.el' file is read.
This means that other directory variables that are initialized from
@@ -1255,7 +1250,7 @@ Set this variable in `.emacs' instead."
:type 'directory)
(defcustom gnus-default-directory nil
- "*Default directory for all Gnus buffers."
+ "Default directory for all Gnus buffers."
:group 'gnus-files
:type '(choice (const :tag "current" nil)
directory))
@@ -1326,7 +1321,7 @@ see the manual for details."
:type 'gnus-select-method)
(defcustom gnus-message-archive-method "archive"
- "*Method used for archiving messages you've sent.
+ "Method used for archiving messages you've sent.
This should be a mail method.
See also `gnus-update-message-archive-method'."
@@ -1352,7 +1347,7 @@ saved \"archive\" method to be updated whenever you change the value of
:type 'boolean)
(defcustom gnus-message-archive-group '((format-time-string "sent.%Y-%m"))
- "*Name of the group in which to save the messages you've written.
+ "Name of the group in which to save the messages you've written.
This can either be a string; a list of strings; or an alist
of regexps/functions/forms to be evaluated to return a string (or a list
of strings). The functions are called with the name of the current
@@ -1438,7 +1433,7 @@ list, Gnus will try all the methods in the list until it finds a match."
gnus-select-method))))
(defcustom gnus-use-cross-reference t
- "*Non-nil means that cross referenced articles will be marked as read.
+ "Non-nil means that cross referenced articles will be marked as read.
If nil, ignore cross references. If t, mark articles as read in
subscribed newsgroups. If neither t nor nil, mark as read in all
newsgroups."
@@ -1449,13 +1444,13 @@ newsgroups."
:value always)))
(defcustom gnus-process-mark ?#
- "*Process mark."
+ "Process mark."
:group 'gnus-group-visual
:group 'gnus-summary-marks
:type 'character)
(defcustom gnus-large-newsgroup 200
- "*The number of articles which indicates a large newsgroup.
+ "The number of articles which indicates a large newsgroup.
If the number of articles in a newsgroup is greater than this value,
confirmation is required for selecting the newsgroup.
If it is nil, no confirmation is required.
@@ -1489,24 +1484,24 @@ on all other systems it defaults to t."
(const not-kill))))
(defcustom gnus-kill-files-directory gnus-directory
- "*Name of the directory where kill files will be stored (default \"~/News\")."
+ "Name of the directory where kill files will be stored (default \"~/News\")."
:group 'gnus-score-files
:group 'gnus-score-kill
:type 'directory)
(defcustom gnus-save-score nil
- "*If non-nil, save group scoring info."
+ "If non-nil, save group scoring info."
:group 'gnus-score-various
:group 'gnus-start
:type 'boolean)
(defcustom gnus-use-undo t
- "*If non-nil, allow undoing in Gnus group mode buffers."
+ "If non-nil, allow undoing in Gnus group mode buffers."
:group 'gnus-meta
:type 'boolean)
(defcustom gnus-use-adaptive-scoring nil
- "*If non-nil, use some adaptive scoring scheme.
+ "If non-nil, use some adaptive scoring scheme.
If a list, then the values `word' and `line' are meaningful. The
former will perform adaption on individual words in the subject
header while `line' will perform adaption on several headers."
@@ -1515,7 +1510,7 @@ header while `line' will perform adaption on several headers."
:type '(set (const word) (const line)))
(defcustom gnus-use-cache 'passive
- "*If nil, Gnus will ignore the article cache.
+ "If nil, Gnus will ignore the article cache.
If `passive', it will allow entering (and reading) articles
explicitly entered into the cache. If anything else, use the
cache to the full extent of the law."
@@ -1526,12 +1521,12 @@ cache to the full extent of the law."
(const :tag "active" t)))
(defcustom gnus-use-trees nil
- "*If non-nil, display a thread tree buffer."
+ "If non-nil, display a thread tree buffer."
:group 'gnus-meta
:type 'boolean)
(defcustom gnus-keep-backlog 20
- "*If non-nil, Gnus will keep read articles for later re-retrieval.
+ "If non-nil, Gnus will keep read articles for later re-retrieval.
If it is a number N, then Gnus will only keep the last N articles
read. If it is neither nil nor a number, Gnus will keep all read
articles. This is not a good idea."
@@ -1542,43 +1537,43 @@ articles. This is not a good idea."
:value t)))
(defcustom gnus-suppress-duplicates nil
- "*If non-nil, Gnus will mark duplicate copies of the same article as read."
+ "If non-nil, Gnus will mark duplicate copies of the same article as read."
:group 'gnus-meta
:type 'boolean)
(defcustom gnus-use-scoring t
- "*If non-nil, enable scoring."
+ "If non-nil, enable scoring."
:group 'gnus-meta
:type 'boolean)
(defcustom gnus-summary-prepare-exit-hook
'(gnus-summary-expire-articles)
- "*A hook called when preparing to exit from the summary buffer.
+ "A hook called when preparing to exit from the summary buffer.
It calls `gnus-summary-expire-articles' by default."
:group 'gnus-summary-exit
:type 'hook)
(defcustom gnus-novice-user t
- "*Non-nil means that you are a Usenet novice.
+ "Non-nil means that you are a Usenet novice.
If non-nil, verbose messages may be displayed and confirmations may be
required."
:group 'gnus-meta
:type 'boolean)
(defcustom gnus-expert-user nil
- "*Non-nil means that you will never be asked for confirmation about anything.
+ "Non-nil means that you will never be asked for confirmation about anything.
That doesn't mean *anything* anything; particularly destructive
commands will still require prompting."
:group 'gnus-meta
:type 'boolean)
(defcustom gnus-interactive-catchup t
- "*If non-nil, require your confirmation when catching up a group."
+ "If non-nil, require your confirmation when catching up a group."
:group 'gnus-group-select
:type 'boolean)
(defcustom gnus-interactive-exit t
- "*If non-nil, require your confirmation when exiting Gnus.
+ "If non-nil, require your confirmation when exiting Gnus.
If `quiet', update any active summary buffers automatically
first before exiting."
:group 'gnus-exit
@@ -1586,7 +1581,7 @@ first before exiting."
(const quiet)))
(defcustom gnus-extract-address-components 'gnus-extract-address-components
- "*Function for extracting address components from a From header.
+ "Function for extracting address components from a From header.
Two pre-defined function exist: `gnus-extract-address-components',
which is the default, quite fast, and too simplistic solution, and
`mail-extract-address-components', which works much better, but is
@@ -1622,7 +1617,7 @@ slower."
server-marks cloud)
("nnmaildir" mail respool address server-marks)
("nnnil" none))
- "*An alist of valid select methods.
+ "An alist of valid select methods.
The first element of each list lists should be a string with the name
of the select method. The other elements may be the category of
this method (i. e., `post', `mail', `none' or whatever) or other
@@ -1681,7 +1676,7 @@ If this variable is nil, screen refresh may be quicker."
(const tree)))
(defcustom gnus-mode-non-string-length 30
- "*Max length of mode-line non-string contents.
+ "Max length of mode-line non-string contents.
If this is nil, Gnus will take space as is needed, leaving the rest
of the mode line intact."
:version "24.1"
@@ -1698,7 +1693,7 @@ of the mode line intact."
:function-document
"Return GROUP's to-address."
:variable-document
- "*Alist of group regexps and correspondent to-addresses."
+ "Alist of group regexps and correspondent to-addresses."
:variable-group gnus-group-parameter
:parameter-type '(gnus-email-address :tag "To Address")
:parameter-document "\
@@ -1725,7 +1720,7 @@ address was listed in gnus-group-split Addresses (see below).")
:function-document
"Return GROUP's to-list."
:variable-document
- "*Alist of group regexps and correspondent to-lists."
+ "Alist of group regexps and correspondent to-lists."
:variable-group gnus-group-parameter
:parameter-type '(gnus-email-address :tag "To List")
:parameter-document "\
@@ -1744,7 +1739,7 @@ address was listed in gnus-group-split Addresses (see below).")
:function-document
"Return GROUP's subscription status."
:variable-document
- "*Groups which are automatically considered subscribed."
+ "Groups which are automatically considered subscribed."
:variable-group gnus-group-parameter
:parameter-type '(const :tag "Subscribed" t)
:parameter-document "\
@@ -1763,7 +1758,7 @@ above, or the list address (if the To address has not been set).")
:variable gnus-auto-expirable-newsgroups
:variable-default nil
:variable-document
- "*Groups in which to automatically mark read articles as expirable.
+ "Groups in which to automatically mark read articles as expirable.
If non-nil, this should be a regexp that should match all groups in
which to perform auto-expiry. This only makes sense for mail groups."
:variable-group nnmail-expire
@@ -1782,7 +1777,7 @@ which to perform auto-expiry. This only makes sense for mail groups."
:variable gnus-total-expirable-newsgroups
:variable-default nil
:variable-document
- "*Groups in which to perform expiry of all read articles.
+ "Groups in which to perform expiry of all read articles.
Use with extreme caution. All groups that match this regexp will be
expiring - which means that all read articles will be deleted after
\(say) one week. (This only goes for mail groups and the like, of
@@ -1851,7 +1846,7 @@ posting an article."
:function-document
"Return GROUP's initial input of the number of articles."
:variable-document
- "*Alist of group regexps and its initial input of the number of articles."
+ "Alist of group regexps and its initial input of the number of articles."
:variable-group gnus-group-parameter
:parameter-type '(choice :tag "Initial Input for Large Newsgroup"
(const :tag "All" nil)
@@ -1875,7 +1870,7 @@ total number of articles in the group.")
'("delayed$" "drafts$" "queue$" "INBOX$"
"^nnmairix:" "^nnir:" "archive"))
:variable-document
- "*Groups in which the registry should be turned off."
+ "Groups in which the registry should be turned off."
:variable-group gnus-registry
:variable-type '(repeat
(list
@@ -1888,7 +1883,7 @@ total number of articles in the group.")
;; group parameters for spam processing added by Ted Zlatanov <tzz@lifelogs.com>
(defcustom gnus-install-group-spam-parameters t
- "*Disable the group parameters for spam detection.
+ "Disable the group parameters for spam detection.
Enable if `G c' in XEmacs is giving you trouble, and make sure to submit a bug report."
:version "22.1"
:type 'boolean
@@ -1918,7 +1913,7 @@ registry.")
:variable gnus-spam-newsgroup-contents
:variable-default nil
:variable-document
- "*Group classification (spam, ham, or neither). Only
+ "Group classification (spam, ham, or neither). Only
meaningful when spam.el is loaded. If non-nil, this should be a
list of group name regexps associated with a classification for
each one. In spam groups, new articles are marked as spam on
@@ -2075,7 +2070,7 @@ Only applicable to non-spam (unclassified and ham) groups.")
:variable gnus-spam-process-newsgroups
:variable-default nil
:variable-document
- "*Groups in which to automatically process spam or ham articles with
+ "Groups in which to automatically process spam or ham articles with
a backend on summary exit. If non-nil, this should be a list of group
name regexps that should match all groups in which to do automatic
spam processing, associated with the appropriate processor."
@@ -2134,7 +2129,7 @@ spam processing, associated with the appropriate processor."
:variable gnus-spam-autodetect
:variable-default nil
:variable-document
- "*Groups in which spam should be autodetected when they are entered.
+ "Groups in which spam should be autodetected when they are entered.
Only unseen articles will be examined, unless
spam-autodetect-recheck-messages is set."
:variable-group spam
@@ -2180,7 +2175,7 @@ spam-autodetect-recheck-messages is set.")
:variable gnus-spam-autodetect-methods
:variable-default nil
:variable-document
- "*Methods for autodetecting spam per group.
+ "Methods for autodetecting spam per group.
Requires the spam-autodetect parameter. Only unseen articles
will be examined, unless spam-autodetect-recheck-messages is
set."
@@ -2232,7 +2227,7 @@ set.")
:variable gnus-spam-process-destinations
:variable-default nil
:variable-document
- "*Groups in which to explicitly send spam-processed articles to
+ "Groups in which to explicitly send spam-processed articles to
another group, or expire them (the default). If non-nil, this should
be a list of group name regexps that should match all groups in which
to do spam-processed article moving, associated with the destination
@@ -2269,7 +2264,7 @@ mail groups."
:variable gnus-ham-process-destinations
:variable-default nil
:variable-document
- "*Groups in which to explicitly send ham articles to
+ "Groups in which to explicitly send ham articles to
another group, or do nothing (the default). If non-nil, this should
be a list of group name regexps that should match all groups in which
to do ham article moving, associated with the destination
@@ -2314,7 +2309,7 @@ spam-ham-marks variable takes precedence."
gnus-low-score-mark))))
:variable-group spam
:variable-document
- "*Groups in which to explicitly set the ham marks to some value.")
+ "Groups in which to explicitly set the ham marks to some value.")
(gnus-define-group-parameter
spam-marks
@@ -2333,7 +2328,7 @@ spam-spam-marks variable takes precedence."
:variable-default '((".*" ((gnus-spam-mark))))
:variable-group spam
:variable-document
- "*Groups in which to explicitly set the spam marks to some value."))
+ "Groups in which to explicitly set the spam marks to some value."))
(defcustom gnus-group-uncollapsed-levels 1
"Number of group name elements to leave alone when making a short group name."
@@ -2341,7 +2336,7 @@ spam-spam-marks variable takes precedence."
:type 'integer)
(defcustom gnus-group-use-permanent-levels nil
- "*If non-nil, once you set a level, Gnus will use this level."
+ "If non-nil, once you set a level, Gnus will use this level."
:group 'gnus-group-levels
:type 'boolean)
@@ -2389,7 +2384,7 @@ It is called with three parameters -- GROUP, LEVEL and OLDLEVEL."
tree-highlight menu highlight
browse-menu server-menu
page-marker tree-menu binary-menu pick-menu)
- "*Enable visual features.
+ "Enable visual features.
If `visual' is disabled, there will be no menus and few faces. Most of
the visual customization options below will be ignored. Gnus will use
less space and be faster as a result.
@@ -2442,14 +2437,14 @@ Valid elements include `summary-highlight', `group-highlight',
'highlight)
'default)
(error 'highlight))
- "*Face used for group or summary buffer mouse highlighting.
+ "Face used for group or summary buffer mouse highlighting.
The line beneath the mouse pointer will be highlighted with this
face."
:group 'gnus-visual
:type 'face)
(defcustom gnus-article-save-directory gnus-directory
- "*Name of the directory articles will be saved in (default \"~/News\")."
+ "Name of the directory articles will be saved in (default \"~/News\")."
:group 'gnus-article-saving
:type 'directory)
@@ -2503,16 +2498,11 @@ Disabling the agent may result in noticeable loss of performance."
(function-item gnus-slave-no-server)))
(defcustom gnus-other-frame-parameters nil
- "Frame parameters used by `gnus-other-frame' to create a Gnus frame.
-This should be an alist for Emacs, or a plist for XEmacs."
+ "Frame parameters used by `gnus-other-frame' to create a Gnus frame."
:group 'gnus-start
- :type (if (featurep 'xemacs)
- '(repeat (list :inline t :format "%v"
- (symbol :tag "Property")
- (sexp :tag "Value")))
- '(repeat (cons :format "%v"
- (symbol :tag "Parameter")
- (sexp :tag "Value")))))
+ :type '(repeat (cons :format "%v"
+ (symbol :tag "Parameter")
+ (sexp :tag "Value"))))
(defcustom gnus-user-agent '(emacs gnus type)
"Which information should be exposed in the User-Agent header.
@@ -2606,7 +2596,7 @@ a string, be sure to use a valid format, see RFC 2616."
(defcustom gnus-cache-directory
(nnheader-concat gnus-directory "cache/")
- "*The directory where cached articles will be stored."
+ "The directory where cached articles will be stored."
:group 'gnus-cache
:type 'directory)
@@ -2940,7 +2930,7 @@ gnus-registry.el will populate this if it's loaded.")
(defcustom gnus-summary-line-format "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n"
- "*The format specification of the lines in the summary buffer.
+ "The format specification of the lines in the summary buffer.
It works along the same lines as a normal formatting string,
with some simple extensions.
@@ -3026,7 +3016,7 @@ See Info node `(gnus)Formatting Variables'."
(defun gnus-suppress-keymap (keymap)
(suppress-keymap keymap)
- (let ((keys `([delete] "\177" "\M-u"))) ;gnus-mouse-2
+ (let ((keys `([delete] "\177" "\M-u"))) ;[mouse-2]
(while keys
(define-key keymap (pop keys) 'undefined))))
@@ -3155,10 +3145,6 @@ Return nil if not defined."
(setcar (nthcdr 2 (gnus-gethash group gnus-newsrc-hashtb))
info))
-;;; Load the compatibility functions.
-
-(require 'gnus-ems)
-
;;;
;;; Shutdown
@@ -3243,8 +3229,7 @@ If ARG, insert string at point."
4.99
(+ 5 (* 0.02
(abs
- (- (mm-char-int (aref (downcase alpha) 0))
- (mm-char-int ?t))))
+ (- (aref (downcase alpha) 0) ?t)))
-0.01))
minor least)
(format "%d.%02d%02d" major minor least))))))
@@ -3448,7 +3433,7 @@ that that variable is buffer-local to the summary buffers."
(defun gnus-simplify-mode-line ()
"Make mode lines a bit simpler."
- (setq mode-line-modified (cdr gnus-mode-line-modified))
+ (setq mode-line-modified "--")
(when (listp mode-line-format)
(make-local-variable 'mode-line-format)
(setq mode-line-format (copy-sequence mode-line-format))
@@ -4386,12 +4371,12 @@ current display is used."
(with-current-buffer (window-buffer window)
(string-match "\\`gnus-"
(symbol-name major-mode))))
- (gnus-select-frame-set-input-focus
+ (select-frame-set-input-focus
(setq gnus-other-frame-object (window-frame window)))
(select-window window)
(throw 'found t)))
'ignore t)))
- (gnus-select-frame-set-input-focus
+ (select-frame-set-input-focus
(setq gnus-other-frame-object
(if display
(make-frame-on-display display gnus-other-frame-parameters)
@@ -4435,10 +4420,6 @@ prompt the user for the name of an NNTP server to use."
(require 'debbugs-gnu)
(debbugs-gnu nil "gnus"))
-;; Allow redefinition of Gnus functions.
-
-(gnus-ems-redefine)
-
(provide 'gnus)
;;; gnus.el ends here
diff --git a/lisp/gnus/legacy-gnus-agent.el b/lisp/gnus/legacy-gnus-agent.el
index 7293e33433..a8c61faecc 100644
--- a/lisp/gnus/legacy-gnus-agent.el
+++ b/lisp/gnus/legacy-gnus-agent.el
@@ -148,17 +148,17 @@ converted to the compressed format."
(gnus-pp gnus-agent-expire-days)
(insert
- (gnus-format-message
+ (format-message
"\nIn order to use version `%s' of gnus, you will need to set\n"
converting-to))
(insert "gnus-agent-expire-days to an integer. If you still wish to set different\n")
(insert "expiration days to individual groups, you must instead set the\n")
- (insert (gnus-format-message
+ (insert (format-message
"`agent-days-until-old' group and/or topic parameter.\n"))
(insert "\n")
(insert "If you would like, gnus can iterate over every group comparing its name to the\n")
(insert "regular expressions that you currently have in gnus-agent-expire-days. When\n")
- (insert (gnus-format-message
+ (insert (format-message
"gnus finds a match, it will update that group's `agent-days-until-old' group\n"))
(insert "parameter to the value associated with the regular expression.\n")
(insert "\n")
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index f4a9e19101..59a97dbb8c 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -228,7 +228,7 @@ Leave mails for this many days" :value 14)))))
(boolean :tag "Plugged"))))))))
(defcustom mail-source-ignore-errors nil
- "*Ignore errors when querying mail sources.
+ "Ignore errors when querying mail sources.
If nil, the user will be prompted when an error occurs. If non-nil,
the error will be ignored."
:version "22.1"
@@ -236,13 +236,13 @@ the error will be ignored."
:type 'boolean)
(defcustom mail-source-primary-source nil
- "*Primary source for incoming mail.
+ "Primary source for incoming mail.
If non-nil, this maildrop will be checked periodically for new mail."
:group 'mail-source
:type 'sexp)
(defcustom mail-source-flash t
- "*If non-nil, flash periodically when mail is available."
+ "If non-nil, flash periodically when mail is available."
:group 'mail-source
:type 'boolean)
@@ -603,8 +603,8 @@ If CONFIRM is non-nil, ask for confirmation before removing a file."
currday (+ currday (* low2days (nth 1 (current-time)))))
(while files
(let* ((ffile (car files))
- (bfile (gnus-replace-in-string
- ffile "\\`.*/\\([^/]+\\)\\'" "\\1"))
+ (bfile (replace-regexp-in-string "\\`.*/\\([^/]+\\)\\'" "\\1"
+ ffile))
(filetime (nth 5 (file-attributes ffile)))
(fileday (* (car filetime) high2days))
(fileday (+ fileday (* low2days (nth 1 filetime)))))
@@ -612,7 +612,7 @@ If CONFIRM is non-nil, ask for confirmation before removing a file."
(when (and (> (- currday fileday) diff)
(if confirm
(y-or-n-p
- (gnus-format-message "\
+ (format-message "\
Delete old (> %s day(s)) incoming mail file `%s'? " diff bfile))
(gnus-message 8 "\
Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
@@ -629,8 +629,6 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
0)
(funcall callback mail-source-crash-box info)))
-(autoload 'gnus-float-time "gnus-util")
-
(defvar mail-source-incoming-last-checked-time nil)
(defun mail-source-delete-crash-box ()
@@ -639,7 +637,7 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
(if (eq mail-source-delete-incoming t)
(delete-file mail-source-crash-box)
(let ((incoming
- (mm-make-temp-file
+ (make-temp-file
(expand-file-name
mail-source-incoming-file-prefix
mail-source-directory))))
@@ -651,7 +649,7 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
;; Don't check for old incoming files more than once per day to
;; save a lot of file accesses.
(when (or (null mail-source-incoming-last-checked-time)
- (> (gnus-float-time
+ (> (float-time
(time-since mail-source-incoming-last-checked-time))
(* 24 60 60)))
(setq mail-source-incoming-last-checked-time (current-time))
@@ -997,7 +995,6 @@ This only works when `display-time' is enabled."
(if on
(progn
(require 'time)
- ;; display-time-mail-function is an Emacs feature.
(setq display-time-mail-function #'mail-source-new-mail-p)
;; Set up the main timer.
(setq mail-source-report-new-mail-timer
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index ed0422c1f4..2ce9737736 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -40,16 +40,18 @@
;; This is apparently necessary even though things are autoloaded.
;; Because we dynamically bind mail-abbrev-mode-regexp, we'd better
;; require mailabbrev here.
-(if (featurep 'xemacs)
- (require 'mail-abbrevs)
- (require 'mailabbrev))
+(require 'mailabbrev)
(require 'mail-parse)
(require 'mml)
(require 'rfc822)
(require 'format-spec)
(require 'dired)
+(require 'mm-util)
+(require 'rfc2047)
+(require 'puny)
+(require 'subr-x)
-(autoload 'mailclient-send-it "mailclient") ;; Emacs 22 or contrib/
+(autoload 'mailclient-send-it "mailclient")
(defvar gnus-message-group-art)
(defvar gnus-list-identifiers) ; gnus-sum is required where necessary
@@ -114,12 +116,12 @@
:group 'faces)
(defcustom message-directory "~/Mail/"
- "*Directory from which all other mail file variables are derived."
+ "Directory from which all other mail file variables are derived."
:group 'message-various
:type 'directory)
(defcustom message-max-buffers 10
- "*How many buffers to keep before starting to kill them off."
+ "How many buffers to keep before starting to kill them off."
:group 'message-buffers
:type 'integer)
@@ -129,7 +131,7 @@
:type '(choice function (const nil)))
(defcustom message-fcc-handler-function 'message-output
- "*A function called to save outgoing articles.
+ "A function called to save outgoing articles.
This function will be called with the name of the file to store the
article in. The default function is `message-output' which saves in Unix
mailbox format."
@@ -145,7 +147,7 @@ mailbox format."
(defcustom message-courtesy-message
"The following message is a courtesy copy of an article\nthat has been posted to %s as well.\n\n"
- "*This is inserted at the start of a mailed copy of a posted message.
+ "This is inserted at the start of a mailed copy of a posted message.
If the string contains the format spec \"%s\", the Newsgroups
the article has been posted to will be inserted there.
If this variable is nil, no such courtesy message will be added."
@@ -154,7 +156,7 @@ If this variable is nil, no such courtesy message will be added."
(defcustom message-ignored-bounced-headers
"^\\(Received\\|Return-Path\\|Delivered-To\\):"
- "*Regexp that matches headers to be removed in resent bounced mail."
+ "Regexp that matches headers to be removed in resent bounced mail."
:group 'message-interface
:type 'regexp)
@@ -186,7 +188,7 @@ Otherwise, most addresses look like `angles', but they look like
(defcustom message-syntax-checks
(if message-insert-canlock '((sender . disabled)) nil)
;; Guess this one shouldn't be easy to customize...
- "*Controls what syntax checks should not be performed on outgoing posts.
+ "Controls what syntax checks should not be performed on outgoing posts.
To disable checking of long signatures, for instance, add
`(signature . disabled)' to this list.
@@ -204,7 +206,7 @@ and `valid-newsgroups'."
(defcustom message-required-headers '((optional . References)
From)
- "*Headers to be generated or prompted for when sending a message.
+ "Headers to be generated or prompted for when sending a message.
Also see `message-required-news-headers' and
`message-required-mail-headers'."
:version "22.1"
@@ -214,7 +216,7 @@ Also see `message-required-news-headers' and
:type '(repeat sexp))
(defcustom message-draft-headers '(References From Date)
- "*Headers to be generated when saving a draft message."
+ "Headers to be generated when saving a draft message."
:version "22.1"
:group 'message-news
:group 'message-headers
@@ -225,7 +227,7 @@ Also see `message-required-news-headers' and
'(From Newsgroups Subject Date Message-ID
(optional . Organization)
(optional . User-Agent))
- "*Headers to be generated or prompted for when posting an article.
+ "Headers to be generated or prompted for when posting an article.
RFC977 and RFC1036 require From, Date, Newsgroups, Subject,
Message-ID. Organization, Lines, In-Reply-To, Expires, and
User-Agent are optional. If you don't want message to insert some
@@ -238,7 +240,7 @@ header, remove it from this list."
(defcustom message-required-mail-headers
'(From Subject Date (optional . In-Reply-To) Message-ID
(optional . User-Agent))
- "*Headers to be generated or prompted for when mailing a message.
+ "Headers to be generated or prompted for when mailing a message.
It is recommended that From, Date, To, Subject and Message-ID be
included. Organization and User-Agent are optional."
:group 'message-mail
@@ -263,7 +265,7 @@ This is a list of regexps and regexp matches."
(defcustom message-ignored-news-headers
"^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:\\|^X-Draft-From:\\|^X-Gnus-Agent-Meta-Information:\\|^X-Message-SMTP-Method:\\|^X-Gnus-Delayed:"
- "*Regexp of headers to be removed unconditionally before posting."
+ "Regexp of headers to be removed unconditionally before posting."
:group 'message-news
:group 'message-headers
:link '(custom-manual "(message)Message Headers")
@@ -276,14 +278,14 @@ This is a list of regexps and regexp matches."
(defcustom message-ignored-mail-headers
"^\\([GF]cc\\|Resent-Fcc\\|Xref\\|X-Draft-From\\|X-Gnus-Agent-Meta-Information\\):"
- "*Regexp of headers to be removed unconditionally before mailing."
+ "Regexp of headers to be removed unconditionally before mailing."
:group 'message-mail
:group 'message-headers
:link '(custom-manual "(message)Mail Headers")
:type 'regexp)
(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-ID:\\|^X-Complaints-To:\\|Return-Path:\\|^Supersedes:\\|^NNTP-Posting-Date:\\|^X-Trace:\\|^X-Complaints-To:\\|^Cancel-Lock:\\|^Cancel-Key:\\|^X-Hashcash:\\|^X-Payment:\\|^Approved:\\|^Injection-Date:\\|^Injection-Info:"
- "*Header lines matching this regexp will be deleted before posting.
+ "Header lines matching this regexp will be deleted before posting.
It's best to delete old Path and Date headers before posting to avoid
any confusion."
:group 'message-interface
@@ -296,8 +298,8 @@ any confusion."
regexp))
(defcustom message-subject-re-regexp
- "^[ \t]*\\([Rr][Ee]\\(\\[[0-9]*\\]\\)*:[ \t]*\\)*[ \t]*"
- "*Regexp matching \"Re: \" in the subject line."
+ "^[ \t]*\\([Rr][Ee]\\(\\[[0-9]*\\]\\)* ?:[ \t]*\\)*[ \t]*"
+ "Regexp matching \"Re: \" in the subject line."
:group 'message-various
:link '(custom-manual "(message)Message Headers")
:type 'regexp)
@@ -305,7 +307,7 @@ any confusion."
;;; Start of variables adopted from `message-utils.el'.
(defcustom message-subject-trailing-was-query t
- "*What to do with trailing \"(was: <old subject>)\" in subject lines.
+ "What to do with trailing \"(was: <old subject>)\" in subject lines.
If nil, leave the subject unchanged. If it is the symbol `ask', query
the user what do do. In this case, the subject is matched against
`message-subject-trailing-was-ask-regexp'. If
@@ -321,7 +323,7 @@ used."
(defcustom message-subject-trailing-was-ask-regexp
"[ \t]*\\([[(]+[Ww][Aa][Ss]:?[ \t]*.*[])]+\\)"
- "*Regexp matching \"(was: <old subject>)\" in the subject line.
+ "Regexp matching \"(was: <old subject>)\" in the subject line.
The function `message-strip-subject-trailing-was' uses this regexp if
`message-subject-trailing-was-query' is set to the symbol `ask'. If
@@ -336,7 +338,7 @@ It is okay to create some false positives here, as the user is asked."
(defcustom message-subject-trailing-was-regexp
"[ \t]*\\((*[Ww][Aa][Ss]:[ \t]*.*)\\)"
- "*Regexp matching \"(was: <old subject>)\" in the subject line.
+ "Regexp matching \"(was: <old subject>)\" in the subject line.
If `message-subject-trailing-was-query' is set to t, the subject is
matched against `message-subject-trailing-was-regexp' in
@@ -437,7 +439,7 @@ whitespace)."
:group 'message-various)
(defcustom message-elide-ellipsis "\n[...]\n\n"
- "*The string which is inserted for elided text.
+ "The string which is inserted for elided text.
This is a format-spec string, and you can use %l to say how many
lines were removed, and %c to say how many characters were
removed."
@@ -463,7 +465,7 @@ A value of nil means let mailer mail back a message to report errors."
:type 'boolean)
(defcustom message-generate-new-buffers 'unsent
- "*Say whether to create a new message buffer to compose a message.
+ "Say whether to create a new message buffer to compose a message.
Valid values include:
nil
@@ -496,13 +498,13 @@ function
(function :format "\n %{%t%}: %v")))
(defcustom message-kill-buffer-on-exit nil
- "*Non-nil means that the message buffer will be killed after sending a message."
+ "Non-nil means that the message buffer will be killed after sending a message."
:group 'message-buffers
:link '(custom-manual "(message)Message Buffers")
:type 'boolean)
(defcustom message-kill-buffer-query t
- "*Non-nil means that killing a modified message buffer has to be confirmed.
+ "Non-nil means that killing a modified message buffer has to be confirmed.
This is used by `message-kill-buffer'."
:version "23.1" ;; No Gnus
:group 'message-buffers
@@ -524,14 +526,14 @@ If t, use `message-user-organization-file'."
(when (file-readable-p f)
(setq orgfile f)))
orgfile)
- "*Local news organization file."
+ "Local news organization file."
:type '(choice (const nil) file)
:link '(custom-manual "(message)News Headers")
:group 'message-headers)
(defcustom message-make-forward-subject-function
#'message-forward-subject-name-subject
- "*List of functions called to generate subject headers for forwarded messages.
+ "List of functions called to generate subject headers for forwarded messages.
The subject generated by the previous function is passed into each
successive function.
@@ -551,7 +553,7 @@ The provided functions are:
(repeat :tag "List of functions" function)))
(defcustom message-forward-as-mime t
- "*Non-nil means forward messages as an inline/rfc822 MIME section.
+ "Non-nil means forward messages as an inline/rfc822 MIME section.
Otherwise, directly inline the old message in the forwarded message."
:version "21.1"
:group 'message-forwarding
@@ -559,7 +561,7 @@ Otherwise, directly inline the old message in the forwarded message."
:type 'boolean)
(defcustom message-forward-show-mml 'best
- "*Non-nil means show forwarded messages as MML (decoded from MIME).
+ "Non-nil means show forwarded messages as MML (decoded from MIME).
Otherwise, forwarded messages are unchanged.
Can also be the symbol `best' to indicate that MML should be
used, except when it is a bad idea to use MML. One example where
@@ -573,12 +575,12 @@ digital signature."
(const :tag "use MML when appropriate" best)))
(defcustom message-forward-before-signature t
- "*Non-nil means put forwarded message before signature, else after."
+ "Non-nil means put forwarded message before signature, else after."
:group 'message-forwarding
:type 'boolean)
(defcustom message-wash-forwarded-subjects nil
- "*Non-nil means try to remove as much cruft as possible from the subject.
+ "Non-nil means try to remove as much cruft as possible from the subject.
Done before generating the new subject of a forward."
:group 'message-forwarding
:link '(custom-manual "(message)Forwarding")
@@ -592,7 +594,7 @@ Done before generating the new subject of a forward."
;; bounced with a "mailing loop" error).
"^Return-receipt\\|^X-Gnus\\|^Gnus-Warning:\\|^>?From \\|^Delivered-To:\
\\|^X-Content-Length:\\|^X-UIDL:"
- "*All headers that match this regexp will be deleted when resending a message."
+ "All headers that match this regexp will be deleted when resending a message."
:version "24.4"
:group 'message-interface
:link '(custom-manual "(message)Resending")
@@ -604,7 +606,7 @@ Done before generating the new subject of a forward."
regexp))
(defcustom message-forward-ignored-headers "^Content-Transfer-Encoding:\\|^X-Gnus"
- "*All headers that match this regexp will be deleted when forwarding a message.
+ "All headers that match this regexp will be deleted when forwarding a message.
This may also be a list of regexps."
:version "21.1"
:group 'message-forwarding
@@ -629,13 +631,13 @@ variable should be a regexp or a list of regexps."
regexp))
(defcustom message-ignored-cited-headers "."
- "*Delete these headers from the messages you yank."
+ "Delete these headers from the messages you yank."
:group 'message-insertion
:link '(custom-manual "(message)Insertion Variables")
:type 'regexp)
(defcustom message-cite-prefix-regexp mail-citation-prefix-regexp
- "*Regexp matching the longest possible citation prefix on a line."
+ "Regexp matching the longest possible citation prefix on a line."
:version "24.1"
:group 'message-insertion
:link '(custom-manual "(message)Insertion Variables")
@@ -746,7 +748,7 @@ These are used when composing a wide reply."
:type '(repeat string))
(defcustom message-use-followup-to 'ask
- "*Specifies what to do with Followup-To header.
+ "Specifies what to do with Followup-To header.
If nil, always ignore the header. If it is t, use its value, but
query before using the \"poster\" value. If it is the symbol `ask',
always query the user whether to use the value. If it is the symbol
@@ -759,7 +761,7 @@ always query the user whether to use the value. If it is the symbol
(const ask)))
(defcustom message-use-mail-followup-to 'use
- "*Specifies what to do with Mail-Followup-To header.
+ "Specifies what to do with Mail-Followup-To header.
If nil, always ignore the header. If it is the symbol `ask', always
query the user whether to use the value. If it is the symbol `use',
always use the value."
@@ -771,7 +773,7 @@ always use the value."
(const ask)))
(defcustom message-subscribed-address-functions nil
- "*Specifies functions for determining list subscription.
+ "Specifies functions for determining list subscription.
If nil, do not attempt to determine list subscription with functions.
If non-nil, this variable contains a list of functions which return
regular expressions to match lists. These functions can be used in
@@ -783,7 +785,7 @@ conjunction with `message-subscribed-regexps' and
:type '(repeat sexp))
(defcustom message-subscribed-address-file nil
- "*A file containing addresses the user is subscribed to.
+ "A file containing addresses the user is subscribed to.
If nil, do not look at any files to determine list subscriptions. If
non-nil, each line of this file should be a mailing list address."
:version "22.1"
@@ -792,7 +794,7 @@ non-nil, each line of this file should be a mailing list address."
:type '(radio file (const nil)))
(defcustom message-subscribed-addresses nil
- "*Specifies a list of addresses the user is subscribed to.
+ "Specifies a list of addresses the user is subscribed to.
If nil, do not use any predefined list subscriptions. This list of
addresses can be used in conjunction with
`message-subscribed-address-functions' and `message-subscribed-regexps'."
@@ -802,7 +804,7 @@ addresses can be used in conjunction with
:type '(repeat string))
(defcustom message-subscribed-regexps nil
- "*Specifies a list of addresses the user is subscribed to.
+ "Specifies a list of addresses the user is subscribed to.
If nil, do not use any predefined list subscriptions. This list of
regular expressions can be used in conjunction with
`message-subscribed-address-functions' and `message-subscribed-addresses'."
@@ -824,7 +826,7 @@ symbol `never', the posting is not allowed. If it is the symbol
(const ask)))
(defcustom message-sendmail-f-is-evil nil
- "*Non-nil means don't add \"-f username\" to the sendmail command line.
+ "Non-nil means don't add \"-f username\" to the sendmail command line.
Doing so would be even more evil than leaving it out."
:group 'message-sending
:link '(custom-manual "(message)Mail Variables")
@@ -833,7 +835,7 @@ Doing so would be even more evil than leaving it out."
(defcustom message-sendmail-envelope-from
;; `mail-envelope-from' is unavailable unless sendmail.el is loaded.
(if (boundp 'mail-envelope-from) mail-envelope-from)
- "*Envelope-from when sending mail with sendmail.
+ "Envelope-from when sending mail with sendmail.
If this is nil, use `user-mail-address'. If it is the symbol
`header', use the From: header of the message."
:version "23.2"
@@ -881,7 +883,7 @@ might set this variable to (\"-f\" \"you@some.where\")."
((boundp 'gnus-select-method)
gnus-select-method)
(t '(nnspool "")))
- "*Method used to post news.
+ "Method used to post news.
Note that when posting from inside Gnus, for instance, this
variable isn't used."
:group 'message-news
@@ -962,7 +964,7 @@ the signature is inserted."
:group 'message-various)
(defcustom message-citation-line-function 'message-insert-citation-line
- "*Function called to insert the \"Whomever writes:\" line.
+ "Function called to insert the \"Whomever writes:\" line.
Predefined functions include `message-insert-citation-line' and
`message-insert-formatted-citation-line' (see the variable
@@ -1011,7 +1013,7 @@ Please also read the note in the documentation of
:group 'message-insertion)
(defcustom message-yank-prefix mail-yank-prefix
- "*Prefix inserted on the lines of yanked messages.
+ "Prefix inserted on the lines of yanked messages.
Fix `message-cite-prefix-regexp' if it is set to an abnormal value.
See also `message-yank-cited-prefix' and `message-yank-empty-prefix'."
:version "23.2"
@@ -1020,7 +1022,7 @@ See also `message-yank-cited-prefix' and `message-yank-empty-prefix'."
:group 'message-insertion)
(defcustom message-yank-cited-prefix ">"
- "*Prefix inserted on cited lines of yanked messages.
+ "Prefix inserted on cited lines of yanked messages.
Fix `message-cite-prefix-regexp' if it is set to an abnormal value.
See also `message-yank-prefix' and `message-yank-empty-prefix'."
:version "22.1"
@@ -1029,7 +1031,7 @@ See also `message-yank-prefix' and `message-yank-empty-prefix'."
:group 'message-insertion)
(defcustom message-yank-empty-prefix ">"
- "*Prefix inserted on empty lines of yanked messages.
+ "Prefix inserted on empty lines of yanked messages.
See also `message-yank-prefix' and `message-yank-cited-prefix'."
:version "22.1"
:type 'string
@@ -1037,7 +1039,7 @@ See also `message-yank-prefix' and `message-yank-cited-prefix'."
:group 'message-insertion)
(defcustom message-indentation-spaces mail-indentation-spaces
- "*Number of spaces to insert at the beginning of each cited line.
+ "Number of spaces to insert at the beginning of each cited line.
Used by `message-yank-original' via `message-yank-cite'."
:version "23.2"
:group 'message-insertion
@@ -1045,7 +1047,7 @@ Used by `message-yank-original' via `message-yank-cite'."
:type 'integer)
(defcustom message-cite-function 'message-cite-original-without-signature
- "*Function for citing an original message.
+ "Function for citing an original message.
Predefined functions include `message-cite-original' and
`message-cite-original-without-signature'.
Note that these functions use `mail-citation-hook' if that is non-nil."
@@ -1058,7 +1060,7 @@ Note that these functions use `mail-citation-hook' if that is non-nil."
:group 'message-insertion)
(defcustom message-indent-citation-function 'message-indent-citation
- "*Function for modifying a citation just inserted in the mail buffer.
+ "Function for modifying a citation just inserted in the mail buffer.
This can also be a list of functions. Each function can find the
citation between (point) and (mark t). And each function should leave
point and mark around the citation text as modified."
@@ -1067,7 +1069,7 @@ point and mark around the citation text as modified."
:group 'message-insertion)
(defcustom message-signature mail-signature
- "*String to be inserted at the end of the message buffer.
+ "String to be inserted at the end of the message buffer.
If t, the `message-signature-file' file will be inserted instead.
If a function, the result from the function will be used instead.
If a form, the result from the form will be used instead."
@@ -1080,7 +1082,7 @@ If a form, the result from the form will be used instead."
:group 'message-insertion)
(defcustom message-signature-file mail-signature-file
- "*Name of file containing the text inserted at end of message buffer.
+ "Name of file containing the text inserted at end of message buffer.
Ignored if the named file doesn't exist.
If nil, don't insert a signature.
If a path is specified, the value of `message-signature-directory' is ignored,
@@ -1091,7 +1093,7 @@ even if set."
:group 'message-insertion)
(defcustom message-signature-directory nil
- "*Name of directory containing signature files.
+ "Name of directory containing signature files.
Comes in handy if you have many such files, handled via posting styles for
instance.
If nil, `message-signature-file' is expected to specify the directory if
@@ -1101,14 +1103,14 @@ needed."
:group 'message-insertion)
(defcustom message-signature-insert-empty-line t
- "*If non-nil, insert an empty line before the signature separator."
+ "If non-nil, insert an empty line before the signature separator."
:version "22.1"
:type 'boolean
:link '(custom-manual "(message)Insertion Variables")
:group 'message-insertion)
(defcustom message-cite-reply-position 'traditional
- "*Where the reply should be positioned.
+ "Where the reply should be positioned.
If `traditional', reply inline.
If `above', reply above quoted text.
If `below', reply below quoted text.
@@ -1125,7 +1127,7 @@ e.g. using `gnus-posting-styles':
:group 'message-insertion)
(defcustom message-cite-style nil
- "*The overall style to be used when yanking cited text.
+ "The overall style to be used when yanking cited text.
Value is either nil (no variable overrides) or a let-style list
of pairs (VARIABLE VALUE) that will be bound in
`message-yank-original' to do the quoting.
@@ -1174,7 +1176,7 @@ use in `gnus-posting-styles', such as:
"Message citation style used by Gmail. Use with message-cite-style.")
(defcustom message-distribution-function nil
- "*Function called to return a Distribution header."
+ "Function called to return a Distribution header."
:group 'message-news
:group 'message-headers
:link '(custom-manual "(message)News Headers")
@@ -1249,12 +1251,8 @@ called and its result is inserted."
(if (and (boundp 'mail-archive-file-name)
(stringp mail-archive-file-name))
(format "FCC: %s\n" mail-archive-file-name))
- ;; Use the value of `mail-default-headers' if available.
- ;; Note: as for XEmacs 21.4 and 21.5, it is unavailable
- ;; unless sendmail.el is loaded.
- (if (boundp 'mail-default-headers)
- mail-default-headers))
- "*A string of header lines to be inserted in outgoing mails."
+ mail-default-headers)
+ "A string of header lines to be inserted in outgoing mails."
:version "23.2"
:group 'message-headers
:group 'message-mail
@@ -1262,7 +1260,7 @@ called and its result is inserted."
:type 'message-header-lines)
(defcustom message-default-news-headers ""
- "*A string of header lines to be inserted in outgoing news articles."
+ "A string of header lines to be inserted in outgoing news articles."
:group 'message-headers
:group 'message-news
:link '(custom-manual "(message)News Headers")
@@ -1284,7 +1282,7 @@ called and its result is inserted."
;; 33 and 126, except colon)", i. e., any chars except ctl chars,
;; space, or colon.
'(looking-at "[ \t]\\|[][!\"#$%&'()*+,-./0-9;<=>?@A-Z\\\\^_`a-z{|}~]+:"))
- "*Set this non-nil if the system's mailer runs the header and body together.
+ "Set this non-nil if the system's mailer runs the header and body together.
\(This problem exists on Sunos 4 when sendmail is run in remote mode.)
The value should be an expression to test whether the problem will
actually occur."
@@ -1316,7 +1314,7 @@ PREDICATE returns non-nil. FUNCTION is called with one parameter --
the prefix.")
(defcustom message-mail-alias-type 'abbrev
- "*What alias expansion type to use in Message buffers.
+ "What alias expansion type to use in Message buffers.
The default is `abbrev', which uses mailabbrev. `ecomplete' uses
an electric completion mode. nil switches mail aliases off.
This can also be a list of values."
@@ -1340,26 +1338,29 @@ text and it replaces `self-insert-command' with the other command, e.g.
(if (file-writable-p message-directory)
(file-name-as-directory (expand-file-name "drafts" message-directory))
"~/")
- "*Directory where Message auto-saves buffers if Gnus isn't running.
+ "Directory where Message auto-saves buffers if Gnus isn't running.
If nil, Message won't auto-save."
:group 'message-buffers
:link '(custom-manual "(message)Various Message Variables")
:type '(choice directory (const :tag "Don't auto-save" nil)))
-(defcustom message-default-charset
- (and (not (mm-multibyte-p)) 'iso-8859-1)
+(defcustom message-default-charset (and (not (mm-multibyte-p)) 'iso-8859-1)
"Default charset used in non-MULE Emacsen.
If nil, you might be asked to input the charset."
:version "21.1"
:group 'message
:link '(custom-manual "(message)Various Message Variables")
:type 'symbol)
+(make-obsolete-variable
+ 'message-default-charset
+ "The default charset comes from the language environment" "25.2")
-(defcustom message-dont-reply-to-names
- (and (boundp 'mail-dont-reply-to-names) mail-dont-reply-to-names)
- "*Addresses to prune when doing wide replies.
-This can be a regexp or a list of regexps. Also, a value of nil means
-exclude your own user name only."
+(defcustom message-dont-reply-to-names mail-dont-reply-to-names
+ "Addresses to prune when doing wide replies.
+This can be a regexp, a list of regexps or a predicate function.
+Also, a value of nil means exclude your own user name only.
+
+If a function email is passed as the argument."
:version "24.3"
:group 'message
:link '(custom-manual "(message)Wide Reply")
@@ -1368,10 +1369,12 @@ exclude your own user name only."
(repeat :tag "Regexp List" regexp)))
(defsubst message-dont-reply-to-names ()
- (gmm-regexp-concat message-dont-reply-to-names))
+ (if (functionp message-dont-reply-to-names)
+ message-dont-reply-to-names
+ (gmm-regexp-concat message-dont-reply-to-names)))
-(defvar message-shoot-gnksa-feet nil
- "*A list of GNKSA feet you are allowed to shoot.
+(defcustom message-shoot-gnksa-feet nil
+ "A list of GNKSA feet you are allowed to shoot.
Gnus gives you all the opportunity you could possibly want for
shooting yourself in the foot. Also, Gnus allows you to shoot the
feet of Good Net-Keeping Seal of Approval. The following are foot
@@ -1381,7 +1384,11 @@ candidates:
`multiple-copies' Allow you to post multiple copies;
`cancel-messages' Allow you to cancel or supersede messages from
your other email addresses;
-`canlock-verify' Allow you to cancel messages without verifying canlock.")
+`canlock-verify' Allow you to cancel messages without verifying canlock."
+ :group 'message
+ :type '(set (const empty-article) (const quoted-text-only)
+ (const multiple-copies) (const cancel-messages)
+ (const canlock-verify)))
(defsubst message-gnksa-enable-p (feature)
(or (not (listp message-shoot-gnksa-feet))
@@ -1630,11 +1637,6 @@ starting with `not' and followed by regexps."
(0 'message-mml))))
"Additional expressions to highlight in Message mode.")
-
-;; XEmacs does it like this. For Emacs, we have to set the
-;; `font-lock-defaults' buffer-local variable.
-(put 'message-mode 'font-lock-defaults '(message-font-lock-keywords t))
-
(defvar message-face-alist
'((bold . message-bold-region)
(underline . underline-region)
@@ -1676,12 +1678,8 @@ news."
(defvar message-send-coding-system 'binary
"Coding system to encode outgoing mail.")
-(defvar message-draft-coding-system
- mm-auto-save-coding-system
- "*Coding system to compose mail.
-If you'd like to make it possible to share draft files between XEmacs
-and Emacs, you may use `iso-2022-7bit' for this value at your own risk.
-Note that the coding-system `iso-2022-7bit' isn't suitable to all data.")
+(defvar message-draft-coding-system mm-auto-save-coding-system
+ "Coding system to compose mail.")
(defcustom message-send-mail-partially-limit nil
"The limitation of messages sent as message/partial.
@@ -1694,17 +1692,20 @@ should be sent in several parts. If it is nil, the size is unlimited."
(integer 1000000)))
(defcustom message-alternative-emails nil
- "*Regexp matching alternative email addresses.
+ "Regexp or predicate function matching alternative email addresses.
The first address in the To, Cc or From headers of the original
article matching this variable is used as the From field of
outgoing messages.
+If a function, an email string is passed as the argument.
+
This variable has precedence over posting styles and anything that runs
off `message-setup-hook'."
:group 'message-headers
:link '(custom-manual "(message)Message Headers")
:type '(choice (const :tag "Always use primary" nil)
- regexp))
+ regexp
+ function))
(defcustom message-hierarchical-addresses nil
"A list of hierarchical mail address definitions.
@@ -1754,32 +1755,16 @@ no, only reply back to the author."
:type 'boolean)
(defcustom message-user-fqdn nil
- "*Domain part of Message-Ids."
+ "Domain part of Message-Ids."
:version "22.1"
:group 'message-headers
:link '(custom-manual "(message)News Headers")
:type '(radio (const :format "%v " nil)
(string :format "FQDN: %v")))
-(defcustom message-use-idna
- (and (or (mm-coding-system-p 'utf-8)
- (condition-case nil
- (let (mucs-ignore-version-incompatibilities)
- (require 'un-define))
- (error)))
- (condition-case nil
- (require 'idna)
- (file-error)
- (invalid-operation))
- idna-program
- (executable-find idna-program)
- (string= (idna-to-ascii "räksmörgås") "xn--rksmrgs-5wao1o")
- t)
- "Whether to encode non-ASCII in domain names into ASCII according to IDNA.
-GNU Libidn, and in particular the elisp package \"idna.el\" and
-the external program \"idn\", must be installed for this
-functionality to work."
- :version "22.1"
+(defcustom message-use-idna t
+ "Whether to encode non-ASCII in domain names into ASCII according to IDNA."
+ :version "25.2"
:group 'message-headers
:link '(custom-manual "(message)IDNA")
:type '(choice (const :tag "Ask" ask)
@@ -1787,7 +1772,7 @@ functionality to work."
(const :tag "Always" t)))
(defcustom message-generate-hashcash (if (executable-find "hashcash") 'opportunistic)
- "*Whether to generate X-Hashcash: headers.
+ "Whether to generate X-Hashcash: headers.
If t, always generate hashcash headers. If `opportunistic',
only generate hashcash headers if it can be done without the user
waiting (i.e., only asynchronously).
@@ -1910,12 +1895,7 @@ You must have the \"hashcash\" binary installed, see `hashcash-path'."
(defvar message-options nil
"Some saved answers when sending message.")
-;; FIXME: On XEmacs this causes problems since let-binding like:
-;; (let ((message-options message-options)) ...)
-;; as in `message-send' and `mml-preview' loses to buffer-local
-;; variable initialization.
-(unless (featurep 'xemacs)
- (make-variable-buffer-local 'message-options))
+(make-variable-buffer-local 'message-options)
(defvar message-send-mail-real-function nil
"Internal send mail function.")
@@ -1923,63 +1903,6 @@ You must have the \"hashcash\" binary installed, see `hashcash-path'."
(defvar message-bogus-system-names "\\`localhost\\.\\|\\.local\\'"
"The regexp of bogus system names.")
-(defcustom message-valid-fqdn-regexp
- (concat "[a-z0-9][-.a-z0-9]+\\." ;; [hostname.subdomain.]domain.
- ;; valid TLDs:
- "\\([a-z][a-z]\\|" ;; two letter country TDLs
- "aero\\|arpa\\|asia\\|bitnet\\|biz\\|bofh\\|"
- "cat\\|com\\|coop\\|edu\\|gov\\|"
- "info\\|int\\|jobs\\|"
- "mil\\|mobi\\|museum\\|name\\|net\\|"
- "org\\|pro\\|tel\\|travel\\|uucp\\|"
- ;; ICANN-era generic top-level domains
- "academy\\|actor\\|agency\\|airforce\\|archi\\|associates\\|axa\\|"
- "bar\\|bargains\\|bayern\\|beer\\|berlin\\|best\\|bid\\|bike\\|"
- "biz\\|black\\|blackfriday\\|blue\\|boutique\\|build\\|builders\\|"
- "buzz\\|cab\\|camera\\|camp\\|capital\\|cards\\|care\\|career\\|"
- "careers\\|cash\\|catering\\|center\\|ceo\\|cheap\\|christmas\\|"
- "church\\|citic\\|cleaning\\|clinic\\|clothing\\|club\\|codes\\|"
- "coffee\\|college\\|cologne\\|com\\|community\\|company\\|computer\\|"
- "construction\\|contractors\\|cooking\\|cool\\|country\\|creditcard\\|"
- "cruises\\|dance\\|dating\\|democrat\\|dental\\|desi\\|design\\|"
- "diamonds\\|directory\\|discount\\|domains\\|education\\|email\\|"
- "engineering\\|enterprises\\|equipment\\|estate\\|eus\\|events\\|"
- "exchange\\|expert\\|exposed\\|fail\\|farm\\|feedback\\|finance\\|"
- "financial\\|fish\\|fishing\\|fitness\\|flights\\|florist\\|foo\\|"
- "foundation\\|frogans\\|fund\\|furniture\\|futbol\\|gal\\|"
- "gallery\\|gift\\|glass\\|globo\\|gmo\\|gop\\|graphics\\|gratis\\|"
- "gripe\\|guide\\|guitars\\|guru\\|hamburg\\|haus\\|hiphop\\|"
- "holdings\\|holiday\\|homes\\|horse\\|house\\|immobilien\\|"
- "industries\\|info\\|ink\\|institute\\|insure\\|international\\|"
- "investments\\|jetzt\\|juegos\\|kaufen\\|kim\\|kitchen\\|kiwi\\|"
- "koeln\\|kred\\|land\\|lat\\|latino\\|lease\\|life\\|lighting\\|"
- "limited\\|limo\\|link\\|loans\\|london\\|luxe\\|luxury\\|"
- "management\\|mango\\|marketing\\|media\\|meet\\|menu\\|miami\\|"
- "moda\\|moe\\|monash\\|moscow\\|motorcycles\\|nagoya\\|name\\|"
- "net\\|neustar\\|ninja\\|nyc\\|okinawa\\|onl\\|org\\|paris\\|"
- "partners\\|parts\\|photo\\|photography\\|photos\\|pics\\|"
- "pictures\\|pink\\|plumbing\\|pro\\|productions\\|properties\\|"
- "pub\\|qpon\\|quebec\\|recipes\\|red\\|reisen\\|ren\\|rentals\\|"
- "repair\\|report\\|rest\\|reviews\\|rich\\|rocks\\|rodeo\\|"
- "ruhr\\|ryukyu\\|saarland\\|schule\\|scot\\|services\\|sexy\\|"
- "shiksha\\|shoes\\|singles\\|social\\|sohu\\|solar\\|solutions\\|"
- "soy\\|supplies\\|supply\\|support\\|surgery\\|systems\\|tattoo\\|"
- "tax\\|technology\\|tienda\\|tips\\|today\\|tokyo\\|tools\\|"
- "town\\|toys\\|trade\\|training\\|university\\|uno\\|vacations\\|"
- "vegas\\|ventures\\|viajes\\|villas\\|vision\\|vodka\\|vote\\|"
- "voting\\|voto\\|voyage\\|wang\\|watch\\|webcam\\|wed\\|wien\\|"
- "wiki\\|works\\|wtc\\|wtf\\|xyz\\|yachts\\|yokohama\\|you\\|"
- "zone\\)")
- ;; http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains
- ;; http://en.wikipedia.org/wiki/GTLD
- ;; `approved, but not yet in operation': .xxx
- ;; "dead" nato bitnet uucp
- "Regular expression that matches a valid FQDN."
- ;; see also: gnus-button-valid-fqdn-regexp
- :version "25.1"
- :group 'message-headers
- :type 'regexp)
-
(autoload 'gnus-alive-p "gnus-util")
(autoload 'gnus-delay-article "gnus-delay")
(autoload 'gnus-extract-address-components "gnus-util")
@@ -1988,14 +1911,11 @@ You must have the \"hashcash\" binary installed, see `hashcash-path'."
(autoload 'gnus-group-name-charset "gnus-group")
(autoload 'gnus-group-name-decode "gnus-group")
(autoload 'gnus-groups-from-server "gnus")
-(autoload 'gnus-make-local-hook "gnus-util")
(autoload 'gnus-open-server "gnus-int")
(autoload 'gnus-output-to-mail "gnus-util")
(autoload 'gnus-output-to-rmail "gnus-util")
(autoload 'gnus-request-post "gnus-int")
-(autoload 'gnus-select-frame-set-input-focus "gnus-util")
(autoload 'gnus-server-string "gnus")
-(autoload 'idna-to-ascii "idna")
(autoload 'message-setup-toolbar "messagexmas")
(autoload 'mh-new-draft-name "mh-comp")
(autoload 'mh-send-letter "mh-comp")
@@ -2005,20 +1925,8 @@ You must have the \"hashcash\" binary installed, see `hashcash-path'."
(autoload 'rmail-msg-is-pruned "rmail")
(autoload 'rmail-output "rmailout")
-;; Emacs < 24.1 do not have mail-dont-reply-to
-(unless (fboundp 'mail-dont-reply-to)
- (defalias 'mail-dont-reply-to 'rmail-dont-reply-to))
-
-(eval-and-compile
- (if (featurep 'emacs)
- (progn
- (defun message-kill-all-overlays ()
- (mapcar #'delete-overlay (overlays-in (point-min) (point-max))))
- (defalias 'message-window-inside-pixel-edges
- 'window-inside-pixel-edges))
- (defun message-kill-all-overlays ()
- (map-extents (lambda (extent ignore) (delete-extent extent))))
- (defalias 'message-window-inside-pixel-edges 'ignore)))
+(defun message-kill-all-overlays ()
+ (mapcar #'delete-overlay (overlays-in (point-min) (point-max))))
@@ -2238,8 +2146,8 @@ contains a valid encoded word. Decode again? "
;; No double encoded subject? => bogus charset.
(unless cs-coding
(setq cs-coding
- (mm-read-coding-system
- (gnus-format-message "\
+ (read-coding-system
+ (format-message "\
Decoded Subject \"%s\"
contains an encoded word. The charset `%s' is unknown or invalid.
Hit RET to replace non-decodable characters with \"%s\" or enter replacement
@@ -2277,33 +2185,26 @@ charset: "
"Remove trailing \"(was: <old subject>)\" from SUBJECT lines.
Leading \"Re: \" is not stripped by this function. Use the function
`message-strip-subject-re' for this."
- (let* ((query message-subject-trailing-was-query)
- (new) (found))
- (setq found
- (string-match
- (if (eq query 'ask)
- message-subject-trailing-was-ask-regexp
- message-subject-trailing-was-regexp)
- subject))
- (if found
- (setq new (substring subject 0 (match-beginning 0))))
- (if (or (not found) (eq query nil))
- subject
- (if (eq query 'ask)
- (if (message-y-or-n-p
- "Strip `(was: <old subject>)' in subject? " t
- (concat
- "Strip `(was: <old subject>)' in subject "
- "and use the new one instead?\n\n"
- "Current subject is: \""
- subject "\"\n\n"
- "New subject would be: \""
- new "\"\n\n"
- "See the variable `message-subject-trailing-was-query' "
- "to get rid of this query."
- ))
- new subject)
- new))))
+ (or
+ (let ((query message-subject-trailing-was-query) new)
+ (and query
+ (string-match (if (eq query 'ask)
+ message-subject-trailing-was-ask-regexp
+ message-subject-trailing-was-regexp)
+ subject)
+ (setq new (substring subject 0 (match-beginning 0)))
+ (or (not (eq query 'ask))
+ (message-y-or-n-p
+ "Strip `(was: <old subject>)' in subject? " t
+ (concat
+ "Strip `(was: <old subject>)' in subject "
+ "and use the new one instead?\n\n"
+ "Current subject is: \"" subject "\"\n\n"
+ "New subject would be: \"" new "\"\n\n"
+ "See the variable `message-subject-trailing-was-query' "
+ "to get rid of this query.")))
+ new))
+ subject))
;;; Suggested by Jonas Steverud @ www.dtek.chalmers.se/~d4jonas/
@@ -2702,19 +2603,16 @@ Prefixed with one \\[universal-argument], display the Emacs MIME
manual. With two \\[universal-argument]'s, display the EasyPG or
PGG manual, depending on the value of `mml2015-use'."
(interactive "p")
- ;; Don't use `info' because support for `(filename)nodename' is not
- ;; available in XEmacs < 21.5.12.
- (Info-goto-node (format "(%s)Top"
- (cond ((eq arg 16)
- (require 'mml2015)
- mml2015-use)
- ((eq arg 4) 'emacs-mime)
- ;; `booleanp' only available in Emacs 22+
- ((and (not (memq arg '(nil t)))
- (symbolp arg))
- arg)
- (t
- 'message)))))
+ (info (format "(%s)Top"
+ (cond ((eq arg 16)
+ (require 'mml2015)
+ mml2015-use)
+ ((eq arg 4) 'emacs-mime)
+ ((and (not (booleanp arg))
+ (symbolp arg))
+ arg)
+ (t
+ 'message)))))
@@ -2812,43 +2710,29 @@ PGG manual, depending on the value of `mml2015-use'."
["Caesar (rot13) Region" message-caesar-region (message-mark-active-p)]
["Elide Region" message-elide-region
:active (message-mark-active-p)
- ,@(if (featurep 'xemacs) nil
- '(:help "Replace text in region with an ellipsis"))]
+ :help "Replace text in region with an ellipsis"]
["Delete Outside Region" message-delete-not-region
:active (message-mark-active-p)
- ,@(if (featurep 'xemacs) nil
- '(:help "Delete all quoted text outside region"))]
+ :help "Delete all quoted text outside region"]
["Kill To Signature" message-kill-to-signature t]
["Newline and Reformat" message-newline-and-reformat t]
["Rename buffer" message-rename-buffer t]
- ["Spellcheck" ispell-message
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Spellcheck this message"))]
+ ["Spellcheck" ispell-message :help "Spellcheck this message"]
"----"
["Insert Region Marked" message-mark-inserted-region
- :active (message-mark-active-p)
- ,@(if (featurep 'xemacs) nil
- '(:help "Mark region with enclosing tags"))]
+ :active (message-mark-active-p) :help "Mark region with enclosing tags"]
["Insert File Marked..." message-mark-insert-file
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Insert file at point marked with enclosing tags"))]
+ :help "Insert file at point marked with enclosing tags"]
"----"
- ["Send Message" message-send-and-exit
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Send this message"))]
+ ["Send Message" message-send-and-exit :help "Send this message"]
["Postpone Message" message-dont-send
- ,@(if (featurep 'xemacs) '(t)
- '(:help "File this draft message and exit"))]
+ :help "File this draft message and exit"]
["Send at Specific Time..." gnus-delay-article
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Ask, then arrange to send message at that time"))]
+ :help "Ask, then arrange to send message at that time"]
["Kill Message" message-kill-buffer
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Delete this message without sending"))]
+ :help "Delete this message without sending"]
"----"
- ["Message manual" message-info
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Display the Message manual"))]))
+ ["Message manual" message-info :help "Display the Message manual"]))
(easy-menu-define
message-mode-field-menu message-mode-map ""
@@ -2862,15 +2746,12 @@ PGG manual, depending on the value of `mml2015-use'."
["Fcc" message-goto-fcc t]
["Reply-To" message-goto-reply-to t]
["Flag As Important" message-insert-importance-high
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Mark this message as important"))]
+ :help "Mark this message as important"]
["Flag As Unimportant" message-insert-importance-low
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Mark this message as unimportant"))]
+ :help "Mark this message as unimportant"]
["Request Receipt"
message-insert-disposition-notification-to
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Request a receipt notification"))]
+ :help "Request a receipt notification"]
"----"
;; (typical) news stuff
["Summary" message-goto-summary t]
@@ -2886,18 +2767,14 @@ PGG manual, depending on the value of `mml2015-use'."
"----"
;; (typical) mailing-lists stuff
["Fetch To" message-insert-to
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Insert a To header that points to the author."))]
+ :help "Insert a To header that points to the author."]
["Fetch To and Cc" message-insert-wide-reply
- ,@(if (featurep 'xemacs) '(t)
- '(:help
- "Insert To and Cc headers as if you were doing a wide reply."))]
+ :help "Insert To and Cc headers as if you were doing a wide reply."]
"----"
["Send to list only" message-to-list-only t]
["Mail-Followup-To" message-goto-mail-followup-to t]
["Unsubscribed list post" message-generate-unsubscribed-mail-followup-to
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Insert a reasonable `Mail-Followup-To:' header."))]
+ :help "Insert a reasonable `Mail-Followup-To:' header."]
["Reduce To: to Cc:" message-reduce-to-to-cc t]
"----"
["Sort Headers" message-sort-headers t]
@@ -2943,7 +2820,6 @@ message composition doesn't break too bad."
;; category, face, display: probably doesn't do any harm.
;; fontified: is used by font-lock.
;; syntax-table, local-map: I dunno.
- ;; We need to add XEmacs names to the list.
"Property list of with properties forbidden in message buffers.
The values of the properties are ignored, only the property names are used.")
@@ -2979,8 +2855,6 @@ See also `message-forbidden-properties'."
(inhibit-read-only t))
(remove-text-properties begin end message-forbidden-properties))))
-(autoload 'ecomplete-setup "ecomplete") ;; for Emacs <23.
-
(defvar message-smileys '(":-)" ":)"
":-(" ":("
";-)" ";)")
@@ -3078,25 +2952,19 @@ M-RET `message-newline-and-reformat' (break the line and reformat)."
(set (make-local-variable 'comment-start) message-yank-prefix)
(set (make-local-variable 'comment-start-skip)
(concat "^" (regexp-quote message-yank-prefix) "[ \t]*")))
- (if (featurep 'xemacs)
- (message-setup-toolbar)
- (set (make-local-variable 'font-lock-defaults)
- '(message-font-lock-keywords t))
- (if (boundp 'tool-bar-map)
- (set (make-local-variable 'tool-bar-map) (message-make-tool-bar))))
+ (set (make-local-variable 'font-lock-defaults)
+ '(message-font-lock-keywords t))
+ (if (boundp 'tool-bar-map)
+ (set (make-local-variable 'tool-bar-map) (message-make-tool-bar)))
(easy-menu-add message-mode-menu message-mode-map)
(easy-menu-add message-mode-field-menu message-mode-map)
- (gnus-make-local-hook 'after-change-functions)
;; Mmmm... Forbidden properties...
(add-hook 'after-change-functions 'message-strip-forbidden-properties
nil 'local)
;; Allow mail alias things.
(cond
((message-mail-alias-type-p 'abbrev)
- (if (fboundp 'mail-abbrevs-setup)
- (mail-abbrevs-setup)
- (if (fboundp 'mail-aliases-setup) ; warning avoidance
- (mail-aliases-setup))))
+ (mail-abbrevs-setup))
((message-mail-alias-type-p 'ecomplete)
(ecomplete-setup)))
(add-hook 'completion-at-point-functions 'message-completion-function nil t)
@@ -3122,8 +2990,6 @@ M-RET `message-newline-and-reformat' (break the line and reformat)."
(make-local-variable 'paragraph-separate)
(make-local-variable 'paragraph-start)
(make-local-variable 'adaptive-fill-regexp)
- (unless (boundp 'adaptive-fill-first-line-regexp)
- (setq adaptive-fill-first-line-regexp nil))
(make-local-variable 'adaptive-fill-first-line-regexp)
(let ((quote-prefix-regexp
;; User should change message-cite-prefix-regexp if
@@ -3146,20 +3012,8 @@ M-RET `message-newline-and-reformat' (break the line and reformat)."
(setq adaptive-fill-first-line-regexp
(concat quote-prefix-regexp "\\|"
adaptive-fill-first-line-regexp)))
- (make-local-variable 'auto-fill-inhibit-regexp)
- ;;(setq auto-fill-inhibit-regexp "^[A-Z][^: \n\t]+:")
- (setq auto-fill-inhibit-regexp nil)
- (make-local-variable 'normal-auto-fill-function)
- (setq normal-auto-fill-function 'message-do-auto-fill)
- ;; KLUDGE: auto fill might already be turned on in `text-mode-hook'.
- ;; In that case, ensure that it uses the right function. The real
- ;; solution would be not to use `define-derived-mode', and run
- ;; `text-mode-hook' ourself at the end of the mode.
- ;; -- Per Abrahamsen <abraham@dina.kvl.dk> Date: 2001-10-19.
- ;; This kludge is unneeded in Emacs>=21 since define-derived-mode is
- ;; now careful to run parent hooks after the body. --Stef
- (when auto-fill-function
- (setq auto-fill-function normal-auto-fill-function)))
+ (setq-local auto-fill-inhibit-regexp nil)
+ (setq-local normal-auto-fill-function 'message-do-auto-fill))
@@ -3250,7 +3104,7 @@ M-RET `message-newline-and-reformat' (break the line and reformat)."
(defun message-goto-body ()
"Move point to the beginning of the message body."
(interactive)
- (when (and (gmm-called-interactively-p 'any)
+ (when (and (called-interactively-p 'any)
(looking-at "[ \t]*\n"))
(expand-abbrev))
(push-mark)
@@ -3565,22 +3419,20 @@ Prefix arg means justify as well."
This function is used as the value of `fill-paragraph-function' in
Message buffers and is not meant to be called directly."
(interactive (list (if current-prefix-arg 'full)))
- (if (if (boundp 'filladapt-mode) filladapt-mode)
- nil
- (if (message-point-in-header-p)
- (message-fill-field)
- (message-newline-and-reformat arg t))
- t))
+ (if (message-point-in-header-p)
+ (message-fill-field)
+ (message-newline-and-reformat arg t))
+ t)
(defun message-point-in-header-p ()
"Return t if point is in the header."
(save-excursion
- (and
- (not
- (re-search-backward
- (concat "^" (regexp-quote mail-header-separator) "\n") nil t))
- (re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "\n") nil t))))
+ (save-restriction
+ (widen)
+ (let ((bound (+ (point-at-eol) 1)) case-fold-search)
+ (goto-char (point-min))
+ (not (search-forward (concat "\n" mail-header-separator "\n")
+ bound t))))))
(defun message-do-auto-fill ()
"Like `do-auto-fill', but don't fill in message header."
@@ -3854,15 +3706,11 @@ If REMOVE is non-nil, remove newlines, too.
To use this automatically, you may add this function to
`gnus-message-setup-hook'."
(interactive "P")
- (let ((citexp
- (concat
- "^\\("
- (when (boundp 'message-yank-cited-prefix)
- (concat message-yank-cited-prefix "\\|"))
- message-yank-prefix
- "\\)+ *\n"
- )))
- (gnus-message 8 "removing `%s'" citexp)
+ (let ((citexp (concat "^\\("
+ (concat message-yank-cited-prefix "\\|")
+ message-yank-prefix
+ "\\)+ *\n")))
+ (message "Removing `%s'" citexp)
(save-excursion
(message-goto-body)
(while (re-search-forward citexp nil t)
@@ -4020,8 +3868,13 @@ This function uses `mail-citation-hook' if that is non-nil."
(defun message-insert-formatted-citation-line (&optional from date tz)
"Function that inserts a formatted citation line.
The optional FROM, and DATE are strings containing the contents of
-the From header and the Date header respectively. The optional TZ
-is a number of seconds, overrides the time zone of DATE.
+the From header and the Date header respectively.
+
+The optional TZ is omitted or nil for Emacs local time, t for
+Universal Time, `wall' for system wall clock time, or a string as
+in the TZ environment variable. It can also be a list (as from
+`current-time-zone') or an integer (as from `decode-time')
+applied without consideration for daylight saving time.
See `message-citation-line-format'."
;; The optional args are for testing/debugging. They will disappear later.
@@ -4112,7 +3965,7 @@ See `message-citation-line-format'."
(>= i ?a)))
(push i lst)
(push (condition-case nil
- (gmm-format-time-string (format "%%%c" i) time tz)
+ (format-time-string (format "%%%c" i) time tz)
(error (format ">%c<" i)))
lst))
(setq i (1+ i)))
@@ -4283,7 +4136,7 @@ It should typically alter the sending method in some way or other."
(or (eq message-allow-no-recipients 'always)
(and (not (eq message-allow-no-recipients 'never))
(setq dont-barf-on-no-method
- (gnus-y-or-n-p
+ (y-or-n-p
(format "No receiver, perform %s anyway? "
(cond ((and fcc gcc) "Fcc and Gcc")
(fcc "Fcc")
@@ -4371,8 +4224,7 @@ conformance."
(const "invalid")
(const :tag "duplicate @" "@@")
(const :tag "non-ascii local part" "[^[:ascii:]].*@")
- ;; Already caught by `message-valid-fqdn-regexp'
- ;; (const :tag "`_' in domain part" "@.*_")
+ (const :tag "`_' in domain part" "@.*_")
(const :tag "whitespace" "[ \t]"))
(repeat :inline t
:tag "Other"
@@ -4418,7 +4270,7 @@ conformance."
(point) 'no-illegible-text)
(point-max))))
(setq char (char-after)))
- (when (or (< (mm-char-int char) 128)
+ (when (or (< char 128)
(and (mm-multibyte-p)
(memq (char-charset char)
'(eight-bit-control eight-bit-graphic
@@ -4432,23 +4284,25 @@ conformance."
(forward-char))
(when found
(setq choice
- (gnus-multiple-choice
- (if nul-chars
- "NUL characters found, which may cause problems. Continue sending?"
- "Non-printable characters found. Continue sending?")
- `((?d "Remove non-printable characters and send")
- (?r ,(format
- "Replace non-printable characters with \"%s\" and send"
- message-replacement-char))
- (?s "Send as is without removing anything")
- (?e "Continue editing"))))
+ (car
+ (read-multiple-choice
+ (if nul-chars
+ "NUL characters found, which may cause problems. Continue sending?"
+ "Non-printable characters found. Continue sending?")
+ `((?d "delete" "Remove non-printable characters and send")
+ (?r "replace"
+ ,(format
+ "Replace non-printable characters with \"%s\" and send"
+ message-replacement-char))
+ (?s "send" "Send as is without removing anything")
+ (?e "edit" "Continue editing")))))
(if (eq choice ?e)
(error "Non-printable characters"))
(message-goto-body)
(skip-chars-forward mm-7bit-chars)
(while (not (eobp))
(when (let ((char (char-after)))
- (or (< (mm-char-int char) 128)
+ (or (< char 128)
(and (mm-multibyte-p)
;; FIXME: Wrong for Emacs 23 (unicode) and for
;; things like undecodable utf-8 (in Emacs 21?).
@@ -4478,31 +4332,24 @@ conformance."
RECIPIENTS is a mail header. Return a list of potentially bogus
addresses. If none is found, return nil.
-An address might be bogus if the domain part is not fully
-qualified, see `message-valid-fqdn-regexp', or if there's a
-matching entry in `message-bogus-addresses'."
+An address might be bogus if if there's a matching entry in
+`message-bogus-addresses'."
;; FIXME: How about "foo@subdomain", when the MTA adds ".domain.tld"?
(let (found)
(mapc (lambda (address)
(setq address (or (cadr address) ""))
- (when
- (or (string= "" address)
- (not
- (or
+ (when (or (string= "" address)
(not (string-match "@" address))
- (string-match
- (concat ".@.*\\("
- message-valid-fqdn-regexp "\\)\\'") address)))
- (and message-bogus-addresses
- (let ((re
- (if (listp message-bogus-addresses)
- (mapconcat 'identity
- message-bogus-addresses
- "\\|")
- message-bogus-addresses)))
- (string-match re address))))
+ (string-match "@.*@" address)
+ (and message-bogus-addresses
+ (let ((re
+ (if (listp message-bogus-addresses)
+ (mapconcat 'identity
+ message-bogus-addresses
+ "\\|")
+ message-bogus-addresses)))
+ (string-match re address))))
(push address found)))
- ;;
(mail-extract-address-components recipients t))
found))
@@ -4519,7 +4366,7 @@ This function could be useful in `message-setup-hook'."
(dolist (bog (message-bogus-recipient-p addr))
(and bog
(not (y-or-n-p
- (gnus-format-message
+ (format-message
"Address `%s'%s might be bogus. Continue? "
bog
;; If the encoded version of the email address
@@ -4703,7 +4550,7 @@ This function could be useful in `message-setup-hook'."
(setq message-options options)
;; Avoid copying text props (except hard newlines).
(insert (with-current-buffer mailbuf
- (mml-buffer-substring-no-properties-except-hard-newlines
+ (mml-buffer-substring-no-properties-except-some
(point-min) (point-max))))
;; Remove some headers.
(message-encode-message-body)
@@ -5067,7 +4914,7 @@ Otherwise, generate and save a value for `canlock-password' first."
;; Avoid copying text props (except hard newlines).
(insert
(with-current-buffer messbuf
- (mml-buffer-substring-no-properties-except-hard-newlines
+ (mml-buffer-substring-no-properties-except-some
(point-min) (point-max))))
(message-encode-message-body)
;; Remove some headers.
@@ -5452,7 +5299,7 @@ Otherwise, generate and save a value for `canlock-password' first."
;; Check for control characters.
(message-check 'control-chars
(if (re-search-forward
- (mm-string-to-multibyte "[\000-\007\013\015-\032\034-\037\200-\237]")
+ (string-to-multibyte "[\000-\007\013\015-\032\034-\037\200-\237]")
nil t)
(y-or-n-p
"The article contains control characters. Really post? ")
@@ -5818,10 +5665,7 @@ In posting styles use `(\"Expires\" (make-expires-date 30))'."
"Make a From header."
(let* ((style message-from-style)
(login (or address (message-make-address)))
- (fullname (or name
- (and (boundp 'user-full-name)
- user-full-name)
- (user-full-name))))
+ (fullname (or name user-full-name (user-full-name))))
(when (string= fullname "&")
(setq fullname (user-login-name)))
(with-temp-buffer
@@ -5914,24 +5758,19 @@ give as trustworthy answer as possible."
(cond
((and message-user-fqdn
(stringp message-user-fqdn)
- (string-match message-valid-fqdn-regexp message-user-fqdn)
(not (string-match message-bogus-system-names message-user-fqdn)))
;; `message-user-fqdn' seems to be valid
message-user-fqdn)
- ((and (string-match message-valid-fqdn-regexp sysname)
- (not (string-match message-bogus-system-names sysname)))
+ ((and (string-match message-bogus-system-names sysname))
;; `system-name' returned the right result.
sysname)
;; Try `mail-host-address'.
- ((and (boundp 'mail-host-address)
- (stringp mail-host-address)
- (string-match message-valid-fqdn-regexp mail-host-address)
+ ((and (stringp mail-host-address)
(not (string-match message-bogus-system-names mail-host-address)))
mail-host-address)
;; We try `user-mail-address' as a backup.
((and user-domain
(stringp user-domain)
- (string-match message-valid-fqdn-regexp user-domain)
(not (string-match message-bogus-system-names user-domain)))
user-domain)
;; Default to this bogus thing.
@@ -6005,7 +5844,7 @@ subscribed address (and not the additional To and Cc header contents)."
ace)
(when field
(dolist (rhs
- (mm-delete-duplicates
+ (delete-dups
(mapcar (lambda (rhs) (or (cadr (split-string rhs "@")) ""))
(mapcar 'downcase
(mapcar
@@ -6017,7 +5856,7 @@ subscribed address (and not the additional To and Cc header contents)."
;; the domain part, i.e., if it is a local user's address.
(setq ace (if (string-match "\\`[[:ascii:]]*\\'" rhs)
rhs
- (downcase (idna-to-ascii rhs))))
+ (downcase (puny-encode-domain rhs))))
(when (and (not (equal rhs ace))
(or (not (eq message-use-idna 'ask))
(y-or-n-p (format "Replace %s with %s in %s:? "
@@ -6051,41 +5890,27 @@ See `message-idna-encode'."
(message-idna-to-ascii-rhs-1 "Mail-Followup-To")
(message-idna-to-ascii-rhs-1 "Cc")))))
-(defvar Date)
-(defvar Message-ID)
-(defvar Organization)
-(defvar From)
-(defvar Path)
-(defvar Subject)
-(defvar Newsgroups)
-(defvar In-Reply-To)
-(defvar References)
-(defvar To)
-(defvar Distribution)
-(defvar Lines)
-(defvar User-Agent)
-(defvar Expires)
-
(defun message-generate-headers (headers)
"Prepare article HEADERS.
Headers already prepared in the buffer are not modified."
(setq headers (append headers message-required-headers))
(save-restriction
(message-narrow-to-headers)
- (let* ((Date (message-make-date))
- (Message-ID (message-make-message-id))
- (Organization (message-make-organization))
- (From (message-make-from))
- (Path (message-make-path))
- (Subject nil)
- (Newsgroups nil)
- (In-Reply-To (message-make-in-reply-to))
- (References (message-make-references))
- (To nil)
- (Distribution (message-make-distribution))
- (Lines (message-make-lines))
- (User-Agent message-newsreader)
- (Expires (message-make-expires))
+ (let* ((header-values
+ (list 'Date (message-make-date)
+ 'Message-ID (message-make-message-id)
+ 'Organization (message-make-organization)
+ 'From (message-make-from)
+ 'Path (message-make-path)
+ 'Subject nil
+ 'Newsgroups nil
+ 'In-Reply-To (message-make-in-reply-to)
+ 'References (message-make-references)
+ 'To nil
+ 'Distribution (message-make-distribution)
+ 'Lines (message-make-lines)
+ 'User-Agent message-newsreader
+ 'Expires (message-make-expires)))
(case-fold-search t)
(optionalp nil)
header value elem header-string)
@@ -6139,8 +5964,8 @@ Headers already prepared in the buffer are not modified."
(setq header (cdr elem))
(or (and (functionp (cdr elem))
(funcall (cdr elem)))
- (and (boundp (cdr elem))
- (symbol-value (cdr elem)))))
+ (and (symbolp (cdr elem))
+ (plist-get header-values (cdr elem)))))
((consp elem)
;; The element is a cons. Either the cdr is a
;; string to be inserted verbatim, or it is a
@@ -6150,11 +5975,11 @@ Headers already prepared in the buffer are not modified."
(cdr elem))
(and (functionp (cdr elem))
(funcall (cdr elem)))))
- ((and (boundp header)
- (symbol-value header))
- ;; The element is a symbol. We insert the value
- ;; of this symbol, if any.
- (symbol-value header))
+ ((and (symbolp header)
+ (plist-member header-values header))
+ ;; The element is a symbol. We insert the value of
+ ;; this symbol, if any.
+ (plist-get header-values header))
((not (message-check-element
(intern (downcase (symbol-name header)))))
;; We couldn't generate a value for this header,
@@ -6266,10 +6091,7 @@ Headers already prepared in the buffer are not modified."
"Split current line, moving portion beyond point vertically down.
If the current line has `message-yank-prefix', insert it on the new line."
(interactive "*")
- (condition-case nil
- (split-line message-yank-prefix) ;; Emacs 22.1+ supports arg.
- (error
- (split-line))))
+ (split-line message-yank-prefix))
(defun message-insert-header (header value)
(insert (capitalize (symbol-name header))
@@ -6412,35 +6234,73 @@ they are."
(defvar visual-line-mode)
(declare-function beginning-of-visual-line "simple" (&optional n))
+(defun message-beginning-of-header (handle-folded)
+ "Move point to beginning of header’s value.
+
+When point is at the first header line, moves it after the colon
+and spaces separating header name and header value.
+
+When point is in a continuation line of a folded header (i.e. the
+line starts with a space), the behavior depends on HANDLE-FOLDED
+argument. If it’s nil, function moves the point to the start of
+the header continuation; otherwise, function locates the
+beginning of the header and moves point past the colon as is the
+case of single-line headers.
+
+No check whether point is inside of a header or body of the
+message is performed.
+
+Returns point or nil if beginning of header’s value could not be
+found. In the latter case, the point is still moved to the
+beginning of line (possibly after attempting to move it to the
+beginning of a folded header)."
+ ;; https://www.rfc-editor.org/rfc/rfc2822.txt, section 2.2.3. says that when
+ ;; unfolding a single WSP should be consumed. WSP is defined as a space
+ ;; character or a horizontal tab.
+ (beginning-of-line)
+ (when handle-folded
+ (while (and (> (point) (point-min))
+ (or (eq (char-after) ?\s) (eq (char-after) ?\t)))
+ (beginning-of-line 0)))
+ (when (or (eq (char-after) ?\s) (eq (char-after) ?\t)
+ (search-forward ":" (point-at-eol) t))
+ ;; We are a bit more lacks than the RFC and allow any positive number of WSP
+ ;; characters.
+ (skip-chars-forward " \t" (point-at-eol))
+ (point)))
+
(defun message-beginning-of-line (&optional n)
"Move point to beginning of header value or to beginning of line.
The prefix argument N is passed directly to `beginning-of-line'.
This command is identical to `beginning-of-line' if point is
-outside the message header or if the option `message-beginning-of-line'
-is nil.
-
-If point is in the message header and on a (non-continued) header
-line, move point to the beginning of the header value or the beginning of line,
-whichever is closer. If point is already at beginning of line, move point to
-beginning of header value. Therefore, repeated calls will toggle point
-between beginning of field and beginning of line."
+outside the message header or if the option
+`message-beginning-of-line' is nil.
+
+If point is in the message header and on a header line, move
+point to the beginning of the header value or the beginning of
+line, whichever is closer. If point is already at beginning of
+line, move point to beginning of header value. Therefore,
+repeated calls will toggle point between beginning of field and
+beginning of line.
+
+When called without a prefix argument, header value spanning
+multiple lines is treated as a single line. Otherwise, even if
+N is 1, when point is on a continuation header line, it will be
+moved to the beginning "
(interactive "p")
- (let ((zrs 'zmacs-region-stays))
- (when (and (featurep 'xemacs) (interactive-p) (boundp zrs))
- (set zrs t)))
- (if (and message-beginning-of-line
- (message-point-in-header-p))
- (let* ((here (point))
- (bol (progn (beginning-of-line n) (point)))
- (eol (point-at-eol))
- (eoh (re-search-forward ": *" eol t)))
- (goto-char
- (if (and eoh (or (< eoh here) (= bol here)))
- eoh bol)))
- (if (and (boundp 'visual-line-mode) visual-line-mode)
- (beginning-of-visual-line n)
- (beginning-of-line n))))
+ (cond
+ ;; Go to beginning of header or beginning of line.
+ ((and message-beginning-of-line (message-point-in-header-p))
+ (let* ((point (point))
+ (bol (progn (beginning-of-line n) (point)))
+ (boh (message-beginning-of-header visual-line-mode)))
+ (goto-char (if (and boh (or (< boh point) (= bol point))) boh bol))))
+ ;; Go to beginning of visual line
+ (visual-line-mode
+ (beginning-of-visual-line n))
+ ;; Go to beginning of line.
+ ((beginning-of-line n))))
(defun message-buffer-name (type &optional to group)
"Return a new (unique) buffer name based on TYPE and TO."
@@ -6507,7 +6367,7 @@ between beginning of field and beginning of line."
(if window
;; Raise the frame already displaying the message buffer.
(progn
- (gnus-select-frame-set-input-focus (window-frame window))
+ (select-frame-set-input-focus (window-frame window))
(select-window window))
(funcall (or switch-function #'pop-to-buffer) buffer)
(set-buffer buffer))
@@ -6517,10 +6377,7 @@ between beginning of field and beginning of line."
"Message already being composed; erase? ")
(message nil))))
(error "Message being composed")))
- (funcall (or switch-function
- (if (fboundp #'pop-to-buffer-same-window)
- #'pop-to-buffer-same-window
- #'pop-to-buffer))
+ (funcall (or switch-function 'pop-to-buffer-same-window)
name)
(set-buffer name))
(erase-buffer)
@@ -6938,9 +6795,20 @@ want to get rid of this query permanently.")))
;; Squeeze whitespace.
(while (string-match "[ \t][ \t]+" recipients)
(setq recipients (replace-match " " t t recipients)))
- ;; Remove addresses that match `mail-dont-reply-to-names'.
- (let ((mail-dont-reply-to-names (message-dont-reply-to-names)))
- (setq recipients (mail-dont-reply-to recipients)))
+ ;; Remove addresses that match `message-dont-reply-to-names'.
+ (setq recipients
+ (cond ((functionp message-dont-reply-to-names)
+ (mapconcat
+ 'identity
+ (delq nil
+ (mapcar (lambda (mail)
+ (unless (funcall message-dont-reply-to-names
+ (mail-strip-quoted-names mail))
+ mail))
+ (message-tokenize-header recipients)))
+ ", "))
+ (t (let ((mail-dont-reply-to-names (message-dont-reply-to-names)))
+ (mail-dont-reply-to recipients)))))
;; Perhaps "Mail-Copies-To: never" removed the only address?
(if (string-equal recipients "")
(setq recipients author))
@@ -7222,7 +7090,7 @@ want to get rid of this query permanently."))
If you have added `cancel-messages' to `message-shoot-gnksa-feet', all articles
are yours except those that have Cancel-Lock header not belonging to you.
Instead of shooting GNKSA feet, you should modify `message-alternative-emails'
-regexp to match all of yours addresses."
+to match all of yours addresses."
;; Canlock-logic as suggested by Per Abrahamsen
;; <abraham@dina.kvl.dk>
;;
@@ -7254,12 +7122,14 @@ regexp to match all of yours addresses."
(downcase (car (mail-header-parse-address
(message-make-from))))))
;; Email address in From field matches
- ;; 'message-alternative-emails' regexp
+ ;; 'message-alternative-emails' regexp or function.
(and from
message-alternative-emails
- (string-match
- message-alternative-emails
- (car (mail-header-parse-address from))))))))))
+ (cond ((functionp message-alternative-emails)
+ (funcall message-alternative-emails
+ (mail-header-parse-address from)))
+ (t (string-match message-alternative-emails
+ (car (mail-header-parse-address from))))))))))))
;;;###autoload
(defun message-cancel-news (&optional arg)
@@ -7339,7 +7209,7 @@ header line with the old Message-ID."
(cond ((save-window-excursion
(with-output-to-temp-buffer "*Directory*"
(with-current-buffer standard-output
- (fundamental-mode)) ; for Emacs 20.4+
+ (fundamental-mode))
(buffer-disable-undo standard-output)
(let ((default-directory "/"))
(call-process
@@ -7485,14 +7355,13 @@ Optional DIGEST will use digest to forward."
(let ((b (point))
(contents (with-current-buffer forward-buffer (buffer-string)))
e)
- (unless (featurep 'xemacs)
- (unless (mm-multibyte-string-p contents)
- (error "Attempt to insert unibyte string from the buffer \"%s\"\
+ (unless (multibyte-string-p contents)
+ (error "Attempt to insert unibyte string from the buffer \"%s\"\
to the multibyte buffer \"%s\""
- (if (bufferp forward-buffer)
- (buffer-name forward-buffer)
- forward-buffer)
- (buffer-name))))
+ (if (bufferp forward-buffer)
+ (buffer-name forward-buffer)
+ forward-buffer)
+ (buffer-name)))
(insert (mm-with-multibyte-buffer
(insert contents)
(mime-to-mml)
@@ -7549,14 +7418,13 @@ Optional DIGEST will use digest to forward."
(let ((b (point)) e)
(if (not message-forward-decoded-p)
(let ((contents (with-current-buffer forward-buffer (buffer-string))))
- (unless (featurep 'xemacs)
- (unless (mm-multibyte-string-p contents)
- (error "Attempt to insert unibyte string from the buffer \"%s\"\
+ (unless (multibyte-string-p contents)
+ (error "Attempt to insert unibyte string from the buffer \"%s\"\
to the multibyte buffer \"%s\""
- (if (bufferp forward-buffer)
- (buffer-name forward-buffer)
- forward-buffer)
- (buffer-name))))
+ (if (bufferp forward-buffer)
+ (buffer-name forward-buffer)
+ forward-buffer)
+ (buffer-name)))
(insert (mm-with-multibyte-buffer
(insert contents)
(mime-to-mml)
@@ -7688,10 +7556,8 @@ is for the internal use."
(defun message-forward-rmail-make-body (forward-buffer)
(save-window-excursion
(set-buffer forward-buffer)
- (if (rmail-msg-is-pruned)
- (if (fboundp 'rmail-msg-restore-non-pruned-header)
- (rmail-msg-restore-non-pruned-header) ; Emacs 22
- (rmail-toggle-header 0)))) ; Emacs 23
+ (when (rmail-msg-is-pruned)
+ (rmail-toggle-header 0)))
(message-forward-make-body forward-buffer))
;; Fixme: Should have defcustom.
@@ -7765,6 +7631,9 @@ is for the internal use."
(let ((case-fold-search t))
(re-search-forward "^mime-version:" nil t)))
(message-inhibit-ecomplete t)
+ ;; We don't want smtpmail.el to encode anything, either.
+ (sendmail-coding-system 'raw-text)
+ (select-safe-coding-system-function nil)
message-required-mail-headers
message-generate-hashcash
rfc2047-encode-encoded-words)
@@ -7941,12 +7810,10 @@ Pre-defined symbols include `message-tool-bar-gnome' and
(defcustom message-tool-bar-gnome
'((ispell-message "spell" nil
:vert-only t
- :visible (or (not (boundp 'flyspell-mode))
- (not flyspell-mode)))
+ :visible (not flyspell-mode))
(flyspell-buffer "spell" t
:vert-only t
- :visible (and (boundp 'flyspell-mode)
- flyspell-mode)
+ :visible flyspell-mode
:help "Flyspell whole buffer")
(message-send-and-exit "mail/send" t :label "Send")
(message-dont-send "mail/save-draft")
@@ -8003,18 +7870,14 @@ See `gmm-tool-bar-from-list' for the format of the list."
(defun message-make-tool-bar (&optional force)
"Make a message mode tool bar from `message-tool-bar-list'.
When FORCE, rebuild the tool bar."
- (when (and (not (featurep 'xemacs))
- (boundp 'tool-bar-mode)
+ (when (and (boundp 'tool-bar-mode)
tool-bar-mode
(or (not message-tool-bar-map) force))
(setq message-tool-bar-map
(let* ((load-path
- (gmm-image-load-path-for-library "message"
- "mail/save-draft.xpm"
- nil t))
- (image-load-path (cons (car load-path)
- (when (boundp 'image-load-path)
- image-load-path))))
+ (image-load-path-for-library
+ "message" "mail/save-draft.xpm" nil t))
+ (image-load-path (cons (car load-path) image-load-path)))
(gmm-tool-bar-from-list message-tool-bar
message-tool-bar-zap-list
'message-mode-map))))
@@ -8048,7 +7911,7 @@ Each element is a symbol and can be `bbdb' or `eudc'."
:type '(set (const bbdb) (const eudc)))
(defcustom message-tab-body-function nil
- "*Function to execute when `message-tab' (TAB) is executed in the body.
+ "Function to execute when `message-tab' (TAB) is executed in the body.
If nil, the function bound in `text-mode-map' or `global-map' is executed."
:version "22.1"
:group 'message
@@ -8065,10 +7928,8 @@ not in those headers. If that variable is nil, indent with the
regular text mode tabbing command."
(interactive)
(cond
- ((if (and (boundp 'completion-fail-discreetly)
- (fboundp 'completion-at-point))
- (let ((completion-fail-discreetly t)) (completion-at-point))
- (funcall (or (message-completion-function) #'ignore)))
+ ((let ((completion-fail-discreetly t))
+ (completion-at-point))
;; Completion was performed; nothing else to do.
nil)
(message-tab-body-function (funcall message-tab-body-function))
@@ -8114,41 +7975,7 @@ regular text mode tabbing command."
group)
collection))
gnus-active-hashtb))
- (message-completion-in-region b e collection)))
-
-(defalias 'message-completion-in-region
- (if (fboundp 'completion-in-region)
- 'completion-in-region
- (lambda (b e hashtb)
- (let* ((string (buffer-substring b e))
- (completions (all-completions string hashtb))
- comp)
- (delete-region b (point))
- (cond
- ((= (length completions) 1)
- (if (string= (car completions) string)
- (progn
- (insert string)
- (message "Only matching group"))
- (insert (car completions))))
- ((and (setq comp (try-completion string hashtb))
- (not (string= comp string)))
- (insert comp))
- (t
- (insert string)
- (if (not comp)
- (message "No matching groups")
- (save-selected-window
- (pop-to-buffer "*Completions*")
- (buffer-disable-undo)
- (let ((buffer-read-only nil))
- (erase-buffer)
- (let ((standard-output (current-buffer)))
- (display-completion-list (sort completions 'string<)))
- (setq buffer-read-only nil)
- (goto-char (point-min))
- (delete-region (point)
- (progn (forward-line 3) (point))))))))))))
+ (completion-in-region b e collection)))
(defun message-expand-name ()
(cond ((and (memq 'eudc message-expand-name-databases)
@@ -8177,7 +8004,7 @@ The following arguments may contain lists of values."
(save-window-excursion
(with-output-to-temp-buffer " *MESSAGE information message*"
(with-current-buffer " *MESSAGE information message*"
- (fundamental-mode) ; for Emacs 20.4+
+ (fundamental-mode)
(mapc 'princ text)
(goto-char (point-min))))
(funcall ask question))
@@ -8270,13 +8097,9 @@ regexp VARSTR."
(defun message-read-from-minibuffer (prompt &optional initial-contents)
"Read from the minibuffer while providing abbrev expansion."
- (if (fboundp 'mail-abbrevs-setup)
- (let ((minibuffer-setup-hook 'mail-abbrevs-setup)
- (minibuffer-local-map message-minibuffer-local-map))
- (read-from-minibuffer prompt initial-contents))
- (let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook)
- (minibuffer-local-map message-minibuffer-local-map))
- (read-string prompt initial-contents))))
+ (let ((minibuffer-setup-hook 'mail-abbrevs-setup)
+ (minibuffer-local-map message-minibuffer-local-map))
+ (read-from-minibuffer prompt initial-contents)))
(defun message-use-alternative-email-as-from ()
"Set From field of the outgoing message to the first matching
@@ -8285,16 +8108,14 @@ From headers in the original article."
(require 'mail-utils)
(let* ((fields '("To" "Cc" "From"))
(emails
- (split-string
+ (message-tokenize-header
(mail-strip-quoted-names
- (mapconcat 'message-fetch-reply-field fields ","))
- "[ \f\t\n\r\v,]+"))
- email)
- (while emails
- (if (string-match message-alternative-emails (car emails))
- (setq email (car emails)
- emails nil))
- (pop emails))
+ (mapconcat 'message-fetch-reply-field fields ","))))
+ (email (cond ((functionp message-alternative-emails)
+ (car (cl-remove-if-not message-alternative-emails emails)))
+ (t (loop for email in emails
+ if (string-match-p message-alternative-emails email)
+ return email)))))
(unless (or (not email) (equal email user-mail-address))
(message-remove-header "From")
(goto-char (point-max))
@@ -8381,8 +8202,9 @@ From headers in the original article."
(let ((value (message-field-value header)))
(dolist (string (mail-header-parse-addresses value 'raw))
(setq string
- (gnus-replace-in-string
- (gnus-replace-in-string string "^ +\\| +$" "") "\n" ""))
+ (replace-regexp-in-string
+ "\n" ""
+ (replace-regexp-in-string "^ +\\| +$" "" string)))
(ecomplete-add-item 'mail (car (mail-header-parse-address string))
string))))
(ecomplete-save))
@@ -8493,7 +8315,7 @@ Header and body are separated by `mail-header-separator'."
(when force
(sit-for message-send-form-letter-delay))
(if (or force
- (y-or-n-p (gnus-format-message "Send message to `%s'? " to)))
+ (y-or-n-p (format-message "Send message to `%s'? " to)))
(progn
(setq sent (1+ sent))
(message-send-and-exit))
@@ -8569,34 +8391,32 @@ Used in `message-simplify-recipients'."
(defun message-toggle-image-thumbnails ()
"For any included image files, insert a thumbnail of that image."
(interactive)
- (let ((overlays (overlays-in (point-min) (point-max)))
- (displayed nil))
- (while overlays
- (let ((overlay (car overlays)))
- (when (overlay-get overlay 'put-image)
- (delete-overlay overlay)
- (setq displayed t)))
- (setq overlays (cdr overlays)))
+ (let ((displayed nil))
+ (save-excursion
+ (goto-char (point-min))
+ (while (not (eobp))
+ (when-let ((props (get-text-property (point) 'display)))
+ (when (and (consp props)
+ (eq (car props) 'image))
+ (put-text-property (point) (1+ (point)) 'display nil)
+ (setq displayed t)))))
(unless displayed
(save-excursion
(goto-char (point-min))
- (while (re-search-forward "<img.*src=\"\\([^\"]+\\)" nil t)
- (let ((file (match-string 1))
- (edges (message-window-inside-pixel-edges
+ (while (re-search-forward "<img.*src=\"\\([^\"]+\\).*>" nil t)
+ (let ((string (match-string 0))
+ (file (match-string 1))
+ (edges (window-inside-pixel-edges
(get-buffer-window (current-buffer)))))
- (put-image
+ (delete-region (match-beginning 0) (match-end 0))
+ (insert-image
(create-image
file 'imagemagick nil
:max-width (truncate
(* 0.7 (- (nth 2 edges) (nth 0 edges))))
:max-height (truncate
(* 0.5 (- (nth 3 edges) (nth 1 edges)))))
- (match-beginning 0)
- " ")))))))
-
-(when (featurep 'xemacs)
- (require 'messagexmas)
- (message-xmas-redefine))
+ string)))))))
(provide 'message)
diff --git a/lisp/gnus/messcompat.el b/lisp/gnus/messcompat.el
deleted file mode 100644
index 6eadf2aab2..0000000000
--- a/lisp/gnus/messcompat.el
+++ /dev/null
@@ -1,91 +0,0 @@
-;;; messcompat.el --- making message mode compatible with mail mode
-
-;; Copyright (C) 1996-2016 Free Software Foundation, Inc.
-
-;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
-;; Keywords: mail, news
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This file tries to provide backward compatibility with sendmail.el
-;; for Message mode. It should be used by simply adding
-;;
-;; (require 'messcompat)
-;;
-;; to the .emacs file. Loading it after Message mode has been
-;; loaded will have no effect.
-
-;;; Code:
-
-(require 'sendmail)
-
-(defvar message-from-style mail-from-style
- "*Specifies how \"From\" headers look.
-
-If nil, they contain just the return address like:
- king@grassland.com
-If `parens', they look like:
- king@grassland.com (Elvis Parsley)
-If `angles', they look like:
- Elvis Parsley <king@grassland.com>
-
-Otherwise, most addresses look like `angles', but they look like
-`parens' if `angles' would need quoting and `parens' would not.")
-
-(defvar message-interactive mail-interactive
- "Non-nil means when sending a message wait for and display errors.
-nil means let mailer mail back a message to report errors.")
-
-(defvar message-setup-hook mail-setup-hook
- "Normal hook, run each time a new outgoing message is initialized.
-The function `message-setup' runs this hook.")
-
-(if (boundp 'mail-mode-hook)
- (defvar message-mode-hook mail-mode-hook
- "Hook run in message mode buffers."))
-
-(defvar message-indentation-spaces mail-indentation-spaces
- "*Number of spaces to insert at the beginning of each cited line.
-Used by `message-yank-original' via `message-yank-cite'.")
-
-(defvar message-signature mail-signature
- "*String to be inserted at the end of the message buffer.
-If t, the `message-signature-file' file will be inserted instead.
-If a function, the result from the function will be used instead.
-If a form, the result from the form will be used instead.")
-
-;; Deleted the autoload cookie because this crashes in loaddefs.el.
-(defvar message-signature-file mail-signature-file
- "*File containing the text inserted at end of the message buffer.")
-
-(defvar message-default-headers mail-default-headers
- "*A string containing header lines to be inserted in outgoing messages.
-It is inserted before you edit the message, so you can edit or delete
-these lines.")
-
-(defvar message-send-hook mail-send-hook
- "Hook run before sending messages.")
-
-(defvar message-send-mail-function send-mail-function
- "Function to call to send the current buffer as mail.
-The headers should be delimited by a line whose contents match the
-variable `mail-header-separator'.")
-
-(provide 'messcompat)
-
-;;; messcompat.el ends here
diff --git a/lisp/gnus/mm-archive.el b/lisp/gnus/mm-archive.el
index 45dbd901ab..bac722e31b 100644
--- a/lisp/gnus/mm-archive.el
+++ b/lisp/gnus/mm-archive.el
@@ -37,7 +37,7 @@
(defun mm-dissect-archive (handle)
(let ((decoder (cddr (assoc (car (mm-handle-type handle))
mm-archive-decoders)))
- (dir (mm-make-temp-file
+ (dir (make-temp-file
(expand-file-name "emm." mm-tmp-directory) 'dir)))
(set-file-modes dir #o700)
(unwind-protect
diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el
index 11449f9d9d..6ccaa770db 100644
--- a/lisp/gnus/mm-bodies.el
+++ b/lisp/gnus/mm-bodies.el
@@ -86,15 +86,15 @@ If no encoding was done, nil is returned."
(message-options-get 'mm-body-charset-encoding-alist)
(message-options-set
'mm-body-charset-encoding-alist
- (mm-read-coding-system "Charset used in the article: ")))
+ (read-coding-system "Charset used in the article: ")))
;; The logic in `mml-generate-mime-1' confirms that it's OK
;; to return nil here.
nil)))
(save-excursion
(if charset
(progn
- (mm-encode-coding-region (point-min) (point-max)
- (mm-charset-to-coding-system charset))
+ (encode-coding-region (point-min) (point-max)
+ (mm-charset-to-coding-system charset))
charset)
(goto-char (point-min))
(let ((charsets (mm-find-mime-charset-region (point-min) (point-max)
@@ -110,8 +110,8 @@ If no encoding was done, nil is returned."
(t
(prog1
(setq charset (car charsets))
- (mm-encode-coding-region (point-min) (point-max)
- (mm-charset-to-coding-system charset))))
+ (encode-coding-region (point-min) (point-max)
+ (mm-charset-to-coding-system charset))))
))))))
(defun mm-long-lines-p (length)
@@ -243,8 +243,7 @@ decoding. If it is nil, default to `mail-parse-charset'."
(save-excursion
(when encoding
(mm-decode-content-transfer-encoding encoding type))
- (when (and (featurep 'mule) ;; Fixme: Wrong test for unibyte session.
- (not (eq charset 'gnus-decoded)))
+ (when (not (eq charset 'gnus-decoded))
(let ((coding-system (mm-charset-to-coding-system
;; Allow overwrite using
;; `mm-charset-override-alist'.
@@ -255,18 +254,11 @@ decoding. If it is nil, default to `mail-parse-charset'."
(setq coding-system
(mm-charset-to-coding-system mail-parse-charset)))
(when (and charset coding-system
- ;; buffer-file-coding-system
- ;;Article buffer is nil coding system
- ;;in XEmacs
(mm-multibyte-p)
(or (not (eq coding-system 'ascii))
(setq coding-system mail-parse-charset)))
- (mm-decode-coding-region (point-min) (point-max)
- coding-system))
- (setq buffer-file-coding-system
- (if (boundp 'last-coding-system-used)
- (symbol-value 'last-coding-system-used)
- coding-system))))))
+ (decode-coding-region (point-min) (point-max) coding-system))
+ (setq buffer-file-coding-system last-coding-system-used)))))
(defun mm-decode-string (string charset)
"Decode STRING with CHARSET."
@@ -278,22 +270,21 @@ decoding. If it is nil, default to `mail-parse-charset'."
(memq charset mail-parse-ignored-charsets))
(setq charset mail-parse-charset))
(or
- (when (featurep 'mule)
- (let ((coding-system (mm-charset-to-coding-system
- charset
- ;; Allow overwrite using
- ;; `mm-charset-override-alist'.
- nil t)))
- (if (and (not coding-system)
- (listp mail-parse-ignored-charsets)
- (memq 'gnus-unknown mail-parse-ignored-charsets))
- (setq coding-system
- (mm-charset-to-coding-system mail-parse-charset)))
- (when (and charset coding-system
- (mm-multibyte-p)
- (or (not (eq coding-system 'ascii))
- (setq coding-system mail-parse-charset)))
- (mm-decode-coding-string string coding-system))))
+ (let ((coding-system (mm-charset-to-coding-system
+ charset
+ ;; Allow overwrite using
+ ;; `mm-charset-override-alist'.
+ nil t)))
+ (if (and (not coding-system)
+ (listp mail-parse-ignored-charsets)
+ (memq 'gnus-unknown mail-parse-ignored-charsets))
+ (setq coding-system
+ (mm-charset-to-coding-system mail-parse-charset)))
+ (when (and charset coding-system
+ (mm-multibyte-p)
+ (or (not (eq coding-system 'ascii))
+ (setq coding-system mail-parse-charset)))
+ (decode-coding-string string coding-system)))
string))
(provide 'mm-bodies)
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index bb8e2038d2..4b3f10c2e1 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -28,9 +28,6 @@
(eval-when-compile (require 'cl))
(autoload 'gnus-map-function "gnus-util")
-(autoload 'gnus-replace-in-string "gnus-util")
-(autoload 'gnus-read-shell-command "gnus-util")
-(autoload 'gnus-format-message "gnus-util")
(autoload 'mm-inline-partial "mm-partial")
(autoload 'mm-inline-external-body "mm-extern")
@@ -291,10 +288,7 @@ before the external MIME handler is invoked."
(mm-insert-part handle)
(let ((image
(ignore-errors
- (if (fboundp 'create-image)
- (create-image (buffer-string) 'imagemagick 'data-p)
- (mm-create-image-xemacs
- (mm-handle-media-subtype handle))))))
+ (create-image (buffer-string) 'imagemagick 'data-p))))
(when image
(setcar (cdr handle) (list "image/imagemagick"))
(mm-image-fit-p handle)))))))
@@ -388,12 +382,7 @@ enables you to choose manually one of two types those mails include."
:type '(repeat regexp) ;; See `mm-preferred-alternative-precedence'.
:group 'mime-display)
-(defcustom mm-tmp-directory
- (if (fboundp 'temp-directory)
- (temp-directory)
- (if (boundp 'temporary-file-directory)
- temporary-file-directory
- "/tmp/"))
+(defcustom mm-tmp-directory temporary-file-directory
"Where mm will store its temporary files."
:type 'directory
:group 'mime-display)
@@ -436,13 +425,15 @@ functions), `mm-file-name-delete-whitespace',
:group 'mime-display)
-(defvar mm-path-name-rewrite-functions nil
- "*List of functions for rewriting the full file names of MIME parts.
+(defcustom mm-path-name-rewrite-functions nil
+ "List of functions for rewriting the full file names of MIME parts.
This is used when viewing parts externally, and is meant for
transforming the absolute name so that non-compliant programs can find
the file where it's saved.
-Each function takes a file name as input and returns a file name.")
+Each function takes a file name as input and returns a file name."
+ :type '(repeat function)
+ :group 'mime-display)
(defvar mm-file-name-replace-whitespace nil
"String used for replacing whitespace characters; default is `\"_\"'.")
@@ -778,7 +769,7 @@ MIME-Version header before proceeding."
(with-current-buffer
(generate-new-buffer " *mm*")
;; Preserve the data's unibyteness (for url-insert-file-contents).
- (mm-set-buffer-multibyte mb)
+ (set-buffer-multibyte mb)
(insert-buffer-substring obuf beg)
(current-buffer))))
@@ -862,7 +853,7 @@ external if displayed external."
(concat
"using external program \""
(format method filename) "\"")
- (gnus-format-message
+ (format-message
"by calling `%s' on the contents)" method))
"? "))))))
(if external
@@ -893,7 +884,7 @@ external if displayed external."
(select-window win)))
(switch-to-buffer (generate-new-buffer " *mm*")))
(buffer-disable-undo)
- (mm-set-buffer-file-coding-system mm-binary-coding-system)
+ (set-buffer-file-coding-system mm-binary-coding-system)
(insert-buffer-substring cur)
(goto-char (point-min))
(when method
@@ -920,7 +911,7 @@ external if displayed external."
;; The function is a string to be executed.
(mm-insert-part handle)
(mm-add-meta-html-tag handle)
- (let* ((dir (mm-make-temp-file
+ (let* ((dir (make-temp-file
(expand-file-name "emm." mm-tmp-directory) 'dir))
(filename (or
(mail-content-type-get
@@ -950,8 +941,8 @@ external if displayed external."
;; `mailcap-mime-extensions'.
(setq suffix (car (rassoc (mm-handle-media-type handle)
mailcap-mime-extensions))))
- (setq file (mm-make-temp-file (expand-file-name "mm." dir)
- nil suffix))))
+ (setq file (make-temp-file (expand-file-name "mm." dir)
+ nil suffix))))
(let ((coding-system-for-write mm-binary-coding-system))
(write-region (point-min) (point-max) file nil 'nomesg))
;; The file is deleted after the viewer exists. If the users edits
@@ -1149,9 +1140,6 @@ external if displayed external."
(ignore-errors
(cond
;; Internally displayed part.
- ((mm-annotationp object)
- (if (featurep 'xemacs)
- (delete-annotation object)))
((or (functionp object)
(and (listp object)
(eq (car object) 'lambda)))
@@ -1315,7 +1303,7 @@ are ignored."
(with-current-buffer (mm-handle-buffer handle)
(buffer-string)))
((mm-multibyte-p)
- (mm-string-to-multibyte (mm-get-part handle no-cache)))
+ (string-to-multibyte (mm-get-part handle no-cache)))
(t
(mm-get-part handle no-cache)))))
(save-restriction
@@ -1361,12 +1349,12 @@ string if you do not like underscores."
(defun mm-file-name-delete-control (filename)
"Delete control characters from FILENAME."
- (gnus-replace-in-string filename "[\x00-\x1f\x7f]" ""))
+ (replace-regexp-in-string "[\x00-\x1f\x7f]" "" filename))
(defun mm-file-name-delete-gotchas (filename)
"Delete shell gotchas from FILENAME."
- (setq filename (gnus-replace-in-string filename "[<>|]" ""))
- (gnus-replace-in-string filename "^[.-]+" ""))
+ (setq filename (replace-regexp-in-string "[<>|]" "" filename))
+ (replace-regexp-in-string "^[.-]+" "" filename))
(defun mm-save-part (handle &optional prompt)
"Write HANDLE to a file.
@@ -1459,7 +1447,7 @@ text/\\(\\sw+\\)\\(?:;\\s-*charset=\\([^\"'>]+\\)\\)?[^>]*>" nil t)
Use CMD as the process."
(let ((name (mail-content-type-get (mm-handle-type handle) 'name))
(command (or cmd
- (gnus-read-shell-command
+ (read-shell-command
"Shell command on MIME part: " mm-last-shell-command))))
(mm-with-unibyte-buffer
(mm-insert-part handle)
@@ -1575,73 +1563,29 @@ be determined."
(prog1
(setq spec
(ignore-errors
- ;; Avoid testing `make-glyph' since W3 may define
- ;; a bogus version of it.
- (if (fboundp 'create-image)
- (create-image (buffer-string)
- (or (mm-image-type-from-buffer)
- (intern type))
- 'data-p)
- (mm-create-image-xemacs type))))
+ (create-image (buffer-string)
+ (or (mm-image-type-from-buffer)
+ (intern type))
+ 'data-p)))
(mm-handle-set-cache handle spec))))))
-(defun mm-create-image-xemacs (type)
- (when (featurep 'xemacs)
- (cond
- ((equal type "xbm")
- ;; xbm images require special handling, since
- ;; the only way to create glyphs from these
- ;; (without a ton of work) is to write them
- ;; out to a file, and then create a file
- ;; specifier.
- (let ((file (mm-make-temp-file
- (expand-file-name "emm" mm-tmp-directory)
- nil ".xbm")))
- (unwind-protect
- (progn
- (write-region (point-min) (point-max) file)
- (make-glyph (list (cons 'x file))))
- (ignore-errors
- (delete-file file)))))
- (t
- (make-glyph
- (vector
- (or (mm-image-type-from-buffer)
- (intern type))
- :data (buffer-string)))))))
-
(declare-function image-size "image.c" (spec &optional pixels frame))
(defun mm-image-fit-p (handle)
"Say whether the image in HANDLE will fit the current window."
(let ((image (mm-get-image handle)))
(or (not image)
- (if (featurep 'xemacs)
- ;; XEmacs's glyphs can actually tell us about their width, so
- ;; let's be nice and smart about them.
- (or mm-inline-large-images
- (and (<= (glyph-width image) (window-pixel-width))
- (<= (glyph-height image) (window-pixel-height))))
- (let* ((size (image-size image))
- (w (car size))
- (h (cdr size)))
- (or mm-inline-large-images
- (and (<= h (1- (window-height))) ; Don't include mode line.
- (<= w (window-width)))))))))
+ (let* ((size (image-size image))
+ (w (car size))
+ (h (cdr size)))
+ (or mm-inline-large-images
+ (and (<= h (1- (window-height))) ; Don't include mode line.
+ (<= w (window-width))))))))
(defun mm-valid-image-format-p (format)
"Say whether FORMAT can be displayed natively by Emacs."
- (cond
- ;; Handle XEmacs
- ((fboundp 'valid-image-instantiator-format-p)
- (valid-image-instantiator-format-p format))
- ;; Handle Emacs
- ((fboundp 'image-type-available-p)
- (and (display-graphic-p)
- (image-type-available-p format)))
- ;; Nobody else can do images yet.
- (t
- nil)))
+ (and (display-graphic-p)
+ (image-type-available-p format)))
(defun mm-valid-and-fit-image-p (format handle)
"Say whether FORMAT can be displayed natively and HANDLE fits the window."
@@ -1839,8 +1783,7 @@ If RECURSIVE, search recursively."
(defun mm-shr (handle)
;; Require since we bind its variables.
(require 'shr)
- (let ((shr-width (if (and (boundp 'shr-use-fonts)
- shr-use-fonts)
+ (let ((shr-width (if shr-use-fonts
nil
fill-column))
(shr-content-function (lambda (id)
@@ -1864,8 +1807,8 @@ If RECURSIVE, search recursively."
(mm-charset-to-coding-system charset
nil t))
(not (eq charset 'ascii)))
- (mm-decode-coding-string (buffer-string) charset)
- (mm-string-as-multibyte (buffer-string)))
+ (decode-coding-string (buffer-string) charset)
+ (string-as-multibyte (buffer-string)))
(erase-buffer)
(mm-enable-multibyte)))
(goto-char (point-min))
@@ -1893,7 +1836,7 @@ If RECURSIVE, search recursively."
(delete-region ,(point-min-marker)
,(point-max-marker))))))))
-(defvar shr-map)
+(defvar shr-image-map)
(autoload 'widget-convert-button "wid-edit")
(defvar widget-keymap)
@@ -1908,10 +1851,8 @@ If RECURSIVE, search recursively."
(widget-convert-button
'url-link start end
:help-echo (get-text-property start 'help-echo)
- :keymap (setq keymap (copy-keymap shr-map))
+ :keymap (setq keymap (copy-keymap shr-image-map))
(get-text-property start 'shr-url))
- ;; Remove keymap that `shr-urlify' adds.
- (put-text-property start end 'keymap nil)
;; Mask keys that launch `widget-button-click'.
;; Those bindings are provided by `widget-keymap'
;; that is a parent of `gnus-article-mode-map'.
diff --git a/lisp/gnus/mm-partial.el b/lisp/gnus/mm-partial.el
index 523a53b7f5..2b037f1cf9 100644
--- a/lisp/gnus/mm-partial.el
+++ b/lisp/gnus/mm-partial.el
@@ -136,13 +136,6 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing."
handle
`(lambda ()
(let (buffer-read-only)
- (condition-case nil
- ;; This is only valid on XEmacs.
- (mapcar (lambda (prop)
- (remove-specifier
- (face-property 'default prop) (current-buffer)))
- '(background background-pixmap foreground))
- (error nil))
(delete-region ,(point-min-marker) ,(point-max-marker))))))))))
(provide 'mm-partial)
diff --git a/lisp/gnus/mm-url.el b/lisp/gnus/mm-url.el
index e5c43fd155..cbea134b54 100644
--- a/lisp/gnus/mm-url.el
+++ b/lisp/gnus/mm-url.el
@@ -45,7 +45,7 @@
(condition-case nil
(require 'url)
(error nil)))
- "*If non-nil, use external grab program `mm-url-program'."
+ "If non-nil, use external grab program `mm-url-program'."
:version "22.1"
:type 'boolean
:group 'mm-url)
@@ -245,7 +245,7 @@ Likely values are `wget', `w3m', `lynx' and `curl'."
;; To be done
;; (shy . ????) ; soft hyphen
)
- "*An assoc list of entity names and how to actually display them.")
+ "An assoc list of entity names and how to actually display them.")
(defconst mm-url-unreserved-chars
'(
@@ -276,19 +276,10 @@ If `mm-url-use-external' is non-nil, use `mm-url-program'."
(insert-file-contents (substring url (1- (match-end 0))))
(mm-url-insert-file-contents-external url))
(goto-char (point-min))
- (if (fboundp 'url-generic-parse-url)
- (setq url-current-object
- (url-generic-parse-url url)))
+ (setq url-current-object (url-generic-parse-url url))
(list url (buffer-size)))
(mm-url-load-url)
(let ((name buffer-file-name)
- (url-request-extra-headers
- ;; ISTM setting a Connection header was a workaround for
- ;; older versions of url included with w3, but it does more
- ;; harm than good with the one shipped with Emacs. --ansel
- (if (not (and (boundp 'url-version)
- (equal url-version "Emacs")))
- (list (cons "Connection" "Close"))))
result)
(setq result (url-insert-file-contents url))
(save-excursion
@@ -296,10 +287,9 @@ If `mm-url-use-external' is non-nil, use `mm-url-program'."
(while (re-search-forward "\r 1000\r ?" nil t)
(replace-match "")))
(setq buffer-file-name name)
- (if (and (fboundp 'url-generic-parse-url)
- (listp result))
- (setq url-current-object (url-generic-parse-url
- (car result))))
+ (when (listp result)
+ (setq url-current-object
+ (url-generic-parse-url (car result))))
result)))
;;;###autoload
@@ -364,7 +354,7 @@ If FOLLOW-REFRESH is non-nil, redirect refresh url in META."
(string-to-number (substring entity 1)))))
(setq c (or (cdr (assq c mm-extra-numeric-entities))
(mm-ucs-to-char c)))
- (if (mm-char-or-char-int-p c) c ?#))
+ (if (characterp c) c ?#))
(or (cdr (assq (intern entity)
mm-url-html-entities))
?#))))
@@ -399,10 +389,7 @@ spaces. Die Die Die."
((= char ? ) "+")
((memq char mm-url-unreserved-chars) (char-to-string char))
(t (upcase (format "%%%02x" char)))))
- (mm-encode-coding-string chunk
- (if (fboundp 'find-coding-systems-string)
- (car (find-coding-systems-string chunk))
- buffer-file-coding-system))
+ (encode-coding-string chunk (car (find-coding-systems-string chunk)))
"")))
(defun mm-url-encode-www-form-urlencoded (pairs)
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index 106d010a3d..adf2fdaa8f 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -25,279 +25,24 @@
(eval-when-compile (require 'cl))
(require 'mail-prsvr)
+(require 'timer)
-(eval-and-compile
- (if (featurep 'xemacs)
- (unless (ignore-errors
- (require 'timer-funcs))
- (require 'timer))
- (require 'timer)))
-
-(defvar mm-mime-mule-charset-alist )
-;; Note this is not presently used on Emacs >= 23, which is good,
-;; since it means standalone message-mode (which requires mml and
-;; hence mml-util) does not load gnus-util.
-(autoload 'gnus-completing-read "gnus-util")
-
-;; Emulate functions that are not available in every (X)Emacs version.
-;; The name of a function is prefixed with mm-, like `mm-char-int' for
-;; `char-int' that is a native XEmacs function, not available in Emacs.
-;; Gnus programs all should use mm- functions, not the original ones.
-(eval-and-compile
- (mapc
- (lambda (elem)
- (let ((nfunc (intern (format "mm-%s" (car elem)))))
- (if (fboundp (car elem))
- (defalias nfunc (car elem))
- (defalias nfunc (cdr elem)))))
- `(;; `coding-system-list' is not available in XEmacs 21.4 built
- ;; without the `file-coding' feature.
- (coding-system-list . ignore)
- ;; `char-int' is an XEmacs function, not available in Emacs.
- (char-int . identity)
- ;; `coding-system-equal' is an Emacs function, not available in XEmacs.
- (coding-system-equal . equal)
- ;; `annotationp' is an XEmacs function, not available in Emacs.
- (annotationp . ignore)
- ;; `set-buffer-file-coding-system' is not available in XEmacs 21.4
- ;; built without the `file-coding' feature.
- (set-buffer-file-coding-system . ignore)
- ;; `read-charset' is an Emacs function, not available in XEmacs.
- (read-charset
- . ,(lambda (prompt)
- "Return a charset."
- (intern
- (gnus-completing-read
- prompt
- (mapcar (lambda (e) (symbol-name (car e)))
- mm-mime-mule-charset-alist)
- t))))
- ;; `subst-char-in-string' is not available in XEmacs 21.4.
- (subst-char-in-string
- . ,(lambda (from to string &optional inplace)
- ;; stolen (and renamed) from nnheader.el
- "Replace characters in STRING from FROM to TO.
- Unless optional argument INPLACE is non-nil, return a new string."
- (let ((string (if inplace string (copy-sequence string)))
- (len (length string))
- (idx 0))
- ;; Replace all occurrences of FROM with TO.
- (while (< idx len)
- (when (= (aref string idx) from)
- (aset string idx to))
- (setq idx (1+ idx)))
- string)))
- ;; `replace-in-string' is an XEmacs function, not available in Emacs.
- (replace-in-string
- . ,(lambda (string regexp rep &optional literal)
- "See `replace-regexp-in-string', only the order of args differs."
- (replace-regexp-in-string regexp rep string nil literal)))
- ;; `string-as-unibyte' is an Emacs function, not available in XEmacs.
- (string-as-unibyte . identity)
- ;; `string-make-unibyte' is an Emacs function, not available in XEmacs.
- (string-make-unibyte . identity)
- ;; string-as-multibyte often doesn't really do what you think it does.
- ;; Example:
- ;; (aref (string-as-multibyte "\201") 0) -> 129 (aka ?\201)
- ;; (aref (string-as-multibyte "\300") 0) -> 192 (aka ?\300)
- ;; (aref (string-as-multibyte "\300\201") 0) -> 192 (aka ?\300)
- ;; (aref (string-as-multibyte "\300\201") 1) -> 129 (aka ?\201)
- ;; but
- ;; (aref (string-as-multibyte "\201\300") 0) -> 2240
- ;; (aref (string-as-multibyte "\201\300") 1) -> <error>
- ;; Better use string-to-multibyte or encode-coding-string.
- ;; If you really need string-as-multibyte somewhere it's usually
- ;; because you're using the internal emacs-mule representation (maybe
- ;; because you're using string-as-unibyte somewhere), which is
- ;; generally a problem in itself.
- ;; Here is an approximate equivalence table to help think about it:
- ;; (string-as-multibyte s) ~= (decode-coding-string s 'emacs-mule)
- ;; (string-to-multibyte s) ~= (decode-coding-string s 'binary)
- ;; (string-make-multibyte s) ~= (decode-coding-string s locale-coding-system)
- ;; `string-as-multibyte' is an Emacs function, not available in XEmacs.
- (string-as-multibyte . identity)
- ;; `multibyte-string-p' is an Emacs function, not available in XEmacs.
- (multibyte-string-p . ignore)
- ;; `insert-byte' is available only in Emacs 23.1 or greater.
- (insert-byte . insert-char)
- ;; `multibyte-char-to-unibyte' is an Emacs function, not available
- ;; in XEmacs.
- (multibyte-char-to-unibyte . identity)
- ;; `set-buffer-multibyte' is an Emacs function, not available in XEmacs.
- (set-buffer-multibyte . ignore)
- ;; `substring-no-properties' is available only in Emacs 22.1 or greater.
- (substring-no-properties
- . ,(lambda (string &optional from to)
- "Return a substring of STRING, without text properties.
-It starts at index FROM and ending before TO.
-TO may be nil or omitted; then the substring runs to the end of STRING.
-If FROM is nil or omitted, the substring starts at the beginning of STRING.
-If FROM or TO is negative, it counts from the end.
-
-With one argument, just copy STRING without its properties."
- (setq string (substring string (or from 0) to))
- (set-text-properties 0 (length string) nil string)
- string))
- ;; `line-number-at-pos' is available only in Emacs 22.1 or greater
- ;; and XEmacs 21.5.
- (line-number-at-pos
- . ,(lambda (&optional pos)
- "Return (narrowed) buffer line number at position POS.
-If POS is nil, use current buffer location.
-Counting starts at (point-min), so the value refers
-to the contents of the accessible portion of the buffer."
- (let ((opoint (or pos (point))) start)
- (save-excursion
- (goto-char (point-min))
- (setq start (point))
- (goto-char opoint)
- (forward-line 0)
- (1+ (count-lines start (point))))))))))
-
-;; `special-display-p' is an Emacs function, not available in XEmacs.
-(defalias 'mm-special-display-p
- (if (featurep 'emacs)
- 'special-display-p
- (lambda (buffer-name)
- "Returns non-nil if a buffer named BUFFER-NAME gets a special frame."
- (and special-display-function
- (or (and (member buffer-name special-display-buffer-names) t)
- (cdr (assoc buffer-name special-display-buffer-names))
- (catch 'return
- (dolist (elem special-display-regexps)
- (and (stringp elem)
- (string-match elem buffer-name)
- (throw 'return t))
- (and (consp elem)
- (stringp (car elem))
- (string-match (car elem) buffer-name)
- (throw 'return (cdr elem))))))))))
-
-;; `decode-coding-string', `encode-coding-string', `decode-coding-region'
-;; and `encode-coding-region' are available in Emacs and XEmacs built with
-;; the `file-coding' feature, but the XEmacs versions treat nil, that is
-;; given as the `coding-system' argument, as the `binary' coding system.
-(eval-and-compile
- (if (featurep 'xemacs)
- (if (featurep 'file-coding)
- (progn
- (defun mm-decode-coding-string (str coding-system)
- (if coding-system
- (decode-coding-string str coding-system)
- str))
- (defun mm-encode-coding-string (str coding-system)
- (if coding-system
- (encode-coding-string str coding-system)
- str))
- (defun mm-decode-coding-region (start end coding-system)
- (if coding-system
- (decode-coding-region start end coding-system)))
- (defun mm-encode-coding-region (start end coding-system)
- (if coding-system
- (encode-coding-region start end coding-system))))
- (defun mm-decode-coding-string (str coding-system) str)
- (defun mm-encode-coding-string (str coding-system) str)
- (defalias 'mm-decode-coding-region 'ignore)
- (defalias 'mm-encode-coding-region 'ignore))
- (defalias 'mm-decode-coding-string 'decode-coding-string)
- (defalias 'mm-encode-coding-string 'encode-coding-string)
- (defalias 'mm-decode-coding-region 'decode-coding-region)
- (defalias 'mm-encode-coding-region 'encode-coding-region)))
-
-;; `string-to-multibyte' is available only in Emacs.
-(defalias 'mm-string-to-multibyte (if (featurep 'xemacs)
- 'identity
- 'string-to-multibyte))
-
-;; `char-or-char-int-p' is an XEmacs function, not available in Emacs.
-(eval-and-compile
- (defalias 'mm-char-or-char-int-p
- (cond
- ((fboundp 'char-or-char-int-p) 'char-or-char-int-p)
- ((fboundp 'char-valid-p) 'char-valid-p)
- (t 'identity))))
-
-;; `ucs-to-char' is a function that Mule-UCS provides.
-(eval-and-compile
- (if (featurep 'xemacs)
- (cond ((and (fboundp 'unicode-to-char) ;; XEmacs 21.5.
- (subrp (symbol-function 'unicode-to-char)))
- (if (featurep 'mule)
- (defalias 'mm-ucs-to-char 'unicode-to-char)
- (defun mm-ucs-to-char (codepoint)
- "Convert Unicode codepoint to character."
- (or (unicode-to-char codepoint) ?#))))
- ((featurep 'mule)
- (defun mm-ucs-to-char (codepoint)
- "Convert Unicode codepoint to character."
- (if (fboundp 'ucs-to-char) ;; Mule-UCS is loaded.
- (progn
- (defalias 'mm-ucs-to-char
- (lambda (codepoint)
- "Convert Unicode codepoint to character."
- (condition-case nil
- (or (ucs-to-char codepoint) ?#)
- (error ?#))))
- (mm-ucs-to-char codepoint))
- (condition-case nil
- (or (int-to-char codepoint) ?#)
- (error ?#)))))
- (t
- (defun mm-ucs-to-char (codepoint)
- "Convert Unicode codepoint to character."
- (condition-case nil
- (or (int-to-char codepoint) ?#)
- (error ?#)))))
- (if (let ((char (make-char 'japanese-jisx0208 36 34)))
- (eq char (decode-char 'ucs char)))
- ;; Emacs 23.
- (defalias 'mm-ucs-to-char 'identity)
- (defun mm-ucs-to-char (codepoint)
- "Convert Unicode codepoint to character."
- (or (decode-char 'ucs codepoint) ?#)))))
-
-;; Fixme: This seems always to be used to read a MIME charset, so it
-;; should be re-named and fixed (in Emacs) to offer completion only on
-;; proper charset names (base coding systems which have a
-;; mime-charset defined). XEmacs doesn't believe in mime-charset;
-;; test with
-;; `(or (coding-system-get 'iso-8859-1 'mime-charset)
-;; (coding-system-get 'iso-8859-1 :mime-charset))'
-;; Actually, there should be an `mm-coding-system-mime-charset'.
-(eval-and-compile
- (defalias 'mm-read-coding-system
- (if (featurep 'emacs) 'read-coding-system
- (cond
- ((fboundp 'read-coding-system)
- (if (and (featurep 'xemacs)
- (<= (string-to-number emacs-version) 21.1))
- (lambda (prompt &optional default-coding-system)
- (read-coding-system prompt))
- 'read-coding-system))
- (t (lambda (prompt &optional default-coding-system)
- "Prompt the user for a coding system."
- (gnus-completing-read
- prompt (mapcar (lambda (s) (symbol-name (car s)))
- mm-mime-mule-charset-alist))))))))
+(defvar mm-mime-mule-charset-alist)
+
+(defun mm-ucs-to-char (codepoint)
+ "Convert Unicode codepoint to character."
+ (or (decode-char 'ucs codepoint) ?#))
(defvar mm-coding-system-list nil)
(defun mm-get-coding-system-list ()
"Get the coding system list."
(or mm-coding-system-list
- (setq mm-coding-system-list (mm-coding-system-list))))
+ (setq mm-coding-system-list (coding-system-list))))
(defun mm-coding-system-p (cs)
- "Return non-nil if CS is a symbol naming a coding system.
-In XEmacs, also return non-nil if CS is a coding system object.
-If CS is available, return CS itself in Emacs, and return a coding
-system object in XEmacs."
- (if (fboundp 'find-coding-system)
- (and cs (find-coding-system cs))
- (if (fboundp 'coding-system-p)
- (when (coding-system-p cs)
- cs)
- ;; no-MULE XEmacs:
- (car (memq cs (mm-get-coding-system-list))))))
+ "Return CS if CS is a coding system."
+ (and (coding-system-p cs)
+ cs))
(defvar mm-charset-synonym-alist
`(
@@ -343,170 +88,17 @@ system object in XEmacs."
(mm-coding-system-p 'iso-8859-1))
'((iso_8859-1 . iso-8859-1)))
)
- "A mapping from unknown or invalid charset names to the real charset names.
-
-See `mm-codepage-iso-8859-list' and `mm-codepage-ibm-list'.")
-
-(defun mm-codepage-setup (number &optional alias)
- "Create a coding system cpNUMBER.
-The coding system is created using `codepage-setup'. If ALIAS is
-non-nil, an alias is created and added to
-`mm-charset-synonym-alist'. If ALIAS is a string, it's used as
-the alias. Else windows-NUMBER is used."
- (interactive
- (let ((completion-ignore-case t)
- (candidates (if (fboundp 'cp-supported-codepages)
- (cp-supported-codepages)
- ;; Removed in Emacs 23 (unicode), so signal an error:
- (error "`codepage-setup' not present in this Emacs version"))))
- (list (gnus-completing-read "Setup DOS Codepage" candidates
- t nil nil "437"))))
- (when alias
- (setq alias (if (stringp alias)
- (intern alias)
- (intern (format "windows-%s" number)))))
- (let* ((cp (intern (format "cp%s" number))))
- (unless (mm-coding-system-p cp)
- (if (fboundp 'codepage-setup) ; silence compiler
- (codepage-setup number)
- (error "`codepage-setup' not present in this Emacs version")))
- (when (and alias
- ;; Don't add alias if setup of cp failed.
- (mm-coding-system-p cp))
- (add-to-list 'mm-charset-synonym-alist (cons alias cp)))))
-
-(defcustom mm-codepage-iso-8859-list
- (list 1250 ;; Windows-1250 is a variant of Latin-2 heavily used by Microsoft
- ;; Outlook users in Czech republic. Use this to allow reading of
- ;; their e-mails.
- '(1252 . 1) ;; Windows-1252 is a superset of iso-8859-1 (West
- ;; Europe). See also `gnus-article-dumbquotes-map'.
- '(1254 . 9) ;; Windows-1254 is a superset of iso-8859-9 (Turkish).
- '(1255 . 8));; Windows-1255 is a superset of iso-8859-8 (Hebrew).
- "A list of Windows codepage numbers and iso-8859 charset numbers.
-
-If an element is a number corresponding to a supported windows
-codepage, appropriate entries to `mm-charset-synonym-alist' are
-added by `mm-setup-codepage-iso-8859'. An element may also be a
-cons cell where the car is a codepage number and the cdr is the
-corresponding number of an iso-8859 charset."
- :type '(list (set :inline t
- (const 1250 :tag "Central and East European")
- (const (1252 . 1) :tag "West European")
- (const (1254 . 9) :tag "Turkish")
- (const (1255 . 8) :tag "Hebrew"))
- (repeat :inline t
- :tag "Other options"
- (choice
- (integer :tag "Windows codepage number")
- (cons (integer :tag "Windows codepage number")
- (integer :tag "iso-8859 charset number")))))
- :version "22.1" ;; Gnus 5.10.9
- :group 'mime)
-
-(defcustom mm-codepage-ibm-list
- (list 437 ;; (US etc.)
- 860 ;; (Portugal)
- 861 ;; (Iceland)
- 862 ;; (Israel)
- 863 ;; (Canadian French)
- 865 ;; (Nordic)
- 852 ;;
- 850 ;; (Latin 1)
- 855 ;; (Cyrillic)
- 866 ;; (Cyrillic - Russian)
- 857 ;; (Turkish)
- 864 ;; (Arabic)
- 869 ;; (Greek)
- 874);; (Thai)
- ;; In Emacs 23 (unicode), cp... and ibm... are aliases.
- ;; Cf. http://thread.gmane.org/v9lkng5nwy.fsf@marauder.physik.uni-ulm.de
- "List of IBM codepage numbers.
-
-The codepage mappings slightly differ between IBM and other vendors.
-See \"ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/IBM/README.TXT\".
-
-If an element is a number corresponding to a supported windows
-codepage, appropriate entries to `mm-charset-synonym-alist' are
-added by `mm-setup-codepage-ibm'."
- :type '(list (set :inline t
- (const 437 :tag "US etc.")
- (const 860 :tag "Portugal")
- (const 861 :tag "Iceland")
- (const 862 :tag "Israel")
- (const 863 :tag "Canadian French")
- (const 865 :tag "Nordic")
- (const 852)
- (const 850 :tag "Latin 1")
- (const 855 :tag "Cyrillic")
- (const 866 :tag "Cyrillic - Russian")
- (const 857 :tag "Turkish")
- (const 864 :tag "Arabic")
- (const 869 :tag "Greek")
- (const 874 :tag "Thai"))
- (repeat :inline t
- :tag "Other options"
- (integer :tag "Codepage number")))
- :version "22.1" ;; Gnus 5.10.9
- :group 'mime)
-
-(defun mm-setup-codepage-iso-8859 (&optional list)
- "Add appropriate entries to `mm-charset-synonym-alist'.
-Unless LIST is given, `mm-codepage-iso-8859-list' is used."
- (unless list
- (setq list mm-codepage-iso-8859-list))
- (dolist (i list)
- (let (cp windows iso)
- (if (consp i)
- (setq cp (intern (format "cp%d" (car i)))
- windows (intern (format "windows-%d" (car i)))
- iso (intern (format "iso-8859-%d" (cdr i))))
- (setq cp (intern (format "cp%d" i))
- windows (intern (format "windows-%d" i))))
- (unless (mm-coding-system-p windows)
- (if (mm-coding-system-p cp)
- (add-to-list 'mm-charset-synonym-alist (cons windows cp))
- (add-to-list 'mm-charset-synonym-alist (cons windows iso)))))))
-
-(defun mm-setup-codepage-ibm (&optional list)
- "Add appropriate entries to `mm-charset-synonym-alist'.
-Unless LIST is given, `mm-codepage-ibm-list' is used."
- (unless list
- (setq list mm-codepage-ibm-list))
- (dolist (number list)
- (let ((ibm (intern (format "ibm%d" number)))
- (cp (intern (format "cp%d" number))))
- (when (and (not (mm-coding-system-p ibm))
- (mm-coding-system-p cp))
- (add-to-list 'mm-charset-synonym-alist (cons ibm cp))))))
-
-;; Initialize:
-(mm-setup-codepage-iso-8859)
-(mm-setup-codepage-ibm)
+ "A mapping from unknown or invalid charset names to the real charset names.")
;; Note: this has to be defined before `mm-charset-to-coding-system'.
-(defcustom mm-charset-eval-alist
- (if (featurep 'xemacs)
- nil ;; I don't know what would be useful for XEmacs.
- '(;; Emacs 22 provides autoloads for 1250-1258
- ;; (i.e. `mm-codepage-setup' does nothing).
- (windows-1250 . (mm-codepage-setup 1250 t))
- (windows-1251 . (mm-codepage-setup 1251 t))
- (windows-1253 . (mm-codepage-setup 1253 t))
- (windows-1257 . (mm-codepage-setup 1257 t))))
+(defcustom mm-charset-eval-alist nil
"An alist of (CHARSET . FORM) pairs.
If an article is encoded in an unknown CHARSET, FORM is
evaluated. This allows the loading of additional libraries
providing charsets on demand. If supported by your Emacs
version, you could use `autoload-coding-system' here."
:version "22.1" ;; Gnus 5.10.9
- :type '(list (set :inline t
- (const (windows-1250 . (mm-codepage-setup 1250 t)))
- (const (windows-1251 . (mm-codepage-setup 1251 t)))
- (const (windows-1253 . (mm-codepage-setup 1253 t)))
- (const (windows-1257 . (mm-codepage-setup 1257 t)))
- (const (cp850 . (mm-codepage-setup 850 nil))))
- (repeat :inline t
+ :type '(list (repeat :inline t
:tag "Other options"
(cons (symbol :tag "charset")
(symbol :tag "form"))))
@@ -706,7 +298,7 @@ superset of iso-8859-1."
;; Fixme: some of the cars here aren't valid MIME charsets. That
;; should only matter with XEmacs, though.
(defvar mm-mime-mule-charset-alist
- `((us-ascii ascii)
+ '((us-ascii ascii)
(iso-8859-1 latin-iso8859-1)
(iso-8859-2 latin-iso8859-2)
(iso-8859-3 latin-iso8859-3)
@@ -756,56 +348,24 @@ superset of iso-8859-1."
(iso-2022-jp-3 latin-jisx0201 japanese-jisx0208-1978 japanese-jisx0208
japanese-jisx0213-1 japanese-jisx0213-2)
(shift_jis latin-jisx0201 katakana-jisx0201 japanese-jisx0208)
- ,(cond ((fboundp 'unicode-precedence-list)
- (cons 'utf-8 (delq 'ascii (mapcar 'charset-name
- (unicode-precedence-list)))))
- ((or (not (fboundp 'charsetp)) ;; non-Mule case
- (charsetp 'unicode-a)
- (not (mm-coding-system-p 'mule-utf-8)))
- '(utf-8 unicode-a unicode-b unicode-c unicode-d unicode-e))
- (t ;; If we have utf-8 we're in Mule 5+.
- (append '(utf-8)
- (delete 'ascii
- (coding-system-get 'mule-utf-8 'safe-charsets))))))
+ (utf-8))
"Alist of MIME-charset/MULE-charsets.")
-(defun mm-enrich-utf-8-by-mule-ucs ()
- "Make the `utf-8' MIME charset usable by the Mule-UCS package.
-This function will run when the `un-define' module is loaded under
-XEmacs, and fill the `utf-8' entry in `mm-mime-mule-charset-alist'
-with Mule charsets. It is completely useless for Emacs."
- (when (boundp 'unicode-basic-translation-charset-order-list)
- (condition-case nil
- (let ((val (delq
- 'ascii
- (copy-sequence
- (symbol-value
- 'unicode-basic-translation-charset-order-list))))
- (elem (assq 'utf-8 mm-mime-mule-charset-alist)))
- (if elem
- (setcdr elem val)
- (setq mm-mime-mule-charset-alist
- (nconc mm-mime-mule-charset-alist
- (list (cons 'utf-8 val))))))
- (error))))
-
;; Correct by construction, but should be unnecessary for Emacs:
-(if (featurep 'xemacs)
- (eval-after-load "un-define" '(mm-enrich-utf-8-by-mule-ucs))
- (when (and (fboundp 'coding-system-list)
- (fboundp 'sort-coding-systems))
- (let ((css (sort-coding-systems (coding-system-list 'base-only)))
- cs mime mule alist)
- (while css
- (setq cs (pop css)
- mime (or (coding-system-get cs :mime-charset); Emacs 23 (unicode)
- (coding-system-get cs 'mime-charset)))
- (when (and mime
- (not (eq t (setq mule
- (coding-system-get cs 'safe-charsets))))
- (not (assq mime alist)))
- (push (cons mime (delq 'ascii mule)) alist)))
- (setq mm-mime-mule-charset-alist (nreverse alist)))))
+(when (and (fboundp 'coding-system-list)
+ (fboundp 'sort-coding-systems))
+ (let ((css (sort-coding-systems (coding-system-list 'base-only)))
+ cs mime mule alist)
+ (while css
+ (setq cs (pop css)
+ mime (or (coding-system-get cs :mime-charset) ; Emacs 23 (unicode)
+ (coding-system-get cs 'mime-charset)))
+ (when (and mime
+ (not (eq t (setq mule
+ (coding-system-get cs 'safe-charsets))))
+ (not (assq mime alist)))
+ (push (cons mime (delq 'ascii mule)) alist)))
+ (setq mm-mime-mule-charset-alist (nreverse alist))))
(defvar mm-hack-charsets '(iso-8859-15 iso-2022-jp-2)
"A list of special charsets.
@@ -838,16 +398,11 @@ Valid elements include:
"A table of the difference character between ISO-8859-X and ISO-8859-15.")
(defcustom mm-coding-system-priorities
- (let ((lang (if (boundp 'current-language-environment)
- (symbol-value 'current-language-environment))))
- (cond (;; XEmacs without Mule but with `file-coding'.
- (not lang) nil)
- ;; In XEmacs 21.5 it may be the one like "Japanese (UTF-8)".
- ((string-match "\\`Japanese" lang)
- ;; Japanese users prefer iso-2022-jp to others usually used
- ;; for `buffer-file-coding-system', however iso-8859-1 should
- ;; be used when there are only ASCII and Latin-1 characters.
- '(iso-8859-1 iso-2022-jp utf-8))))
+ (and (string-match "\\`Japanese" current-language-environment)
+ ;; Japanese users prefer iso-2022-jp to others usually used
+ ;; for `buffer-file-coding-system', however iso-8859-1 should
+ ;; be used when there are only ASCII and Latin-1 characters.
+ '(iso-8859-1 iso-2022-jp utf-8))
"Preferred coding systems for encoding outgoing messages.
More than one suitable coding system may be found for some text.
@@ -859,14 +414,13 @@ variable is set, it overrides the default priority."
:group 'mime)
;; ??
-(defvar mm-use-find-coding-systems-region
- (fboundp 'find-coding-systems-region)
+(defvar mm-use-find-coding-systems-region t
"Use `find-coding-systems-region' to find proper coding systems.
Setting it to nil is useful on Emacsen supporting Unicode if sending
mail with multiple parts is preferred to sending a Unicode one.")
-(defvar mm-extra-numeric-entities
+(defcustom mm-extra-numeric-entities
(mapcar
(lambda (item)
(cons (car item) (mm-ucs-to-char (cdr item))))
@@ -879,7 +433,9 @@ mail with multiple parts is preferred to sending a Unicode one.")
(#x9C . #x0153) (#x9E . #x017E) (#x9F . #x0178)))
"*Alist of extra numeric entities and characters other than ISO 10646.
This table is used for decoding extra numeric entities to characters,
-like \"&#128;\" to the euro sign, mainly in html messages.")
+like \"&#128;\" to the euro sign, mainly in html messages."
+ :type '(alist :key-type character :value-type character)
+ :group 'mime)
;;; Internal variables:
@@ -887,45 +443,26 @@ like \"&#128;\" to the euro sign, mainly in html messages.")
(defun mm-mule-charset-to-mime-charset (charset)
"Return the MIME charset corresponding to the given Mule CHARSET."
- (if (and (fboundp 'find-coding-systems-for-charsets)
- (fboundp 'sort-coding-systems))
- (let ((css (sort (sort-coding-systems
- (find-coding-systems-for-charsets (list charset)))
- 'mm-sort-coding-systems-predicate))
- cs mime)
- (while (and (not mime)
- css)
- (when (setq cs (pop css))
- (setq mime (or (coding-system-get cs :mime-charset)
- (coding-system-get cs 'mime-charset)))))
- mime)
- (let ((alist (mapcar (lambda (cs)
- (assq cs mm-mime-mule-charset-alist))
- (sort (mapcar 'car mm-mime-mule-charset-alist)
- 'mm-sort-coding-systems-predicate)))
- out)
- (while alist
- (when (memq charset (cdar alist))
- (setq out (caar alist)
- alist nil))
- (pop alist))
- out)))
-
-(eval-and-compile
- (if (featurep 'xemacs)
- (defalias 'mm-enable-multibyte 'ignore)
- (defun mm-enable-multibyte ()
- "Set the multibyte flag of the current buffer.
+ (let ((css (sort (sort-coding-systems
+ (find-coding-systems-for-charsets (list charset)))
+ 'mm-sort-coding-systems-predicate))
+ cs mime)
+ (while (and (not mime)
+ css)
+ (when (setq cs (pop css))
+ (setq mime (or (coding-system-get cs :mime-charset)
+ (coding-system-get cs 'mime-charset)))))
+ mime))
+
+(defun mm-enable-multibyte ()
+ "Set the multibyte flag of the current buffer.
Only do this if the default value of `enable-multibyte-characters' is
-non-nil. This is a no-op in XEmacs."
- (set-buffer-multibyte 'to)))
+non-nil."
+ (set-buffer-multibyte 'to))
- (if (featurep 'xemacs)
- (defalias 'mm-disable-multibyte 'ignore)
- (defun mm-disable-multibyte ()
- "Unset the multibyte flag of in the current buffer.
-This is a no-op in XEmacs."
- (set-buffer-multibyte nil))))
+(defun mm-disable-multibyte ()
+ "Unset the multibyte flag of in the current buffer."
+ (set-buffer-multibyte nil))
(defun mm-preferred-coding-system (charset)
;; A typo in some Emacs versions.
@@ -939,8 +476,7 @@ This is a no-op in XEmacs."
mail-parse-mule-charset ;; cached mule-charset
(progn
(setq mail-parse-mule-charset
- (and (boundp 'current-language-environment)
- (car (last
+ (and (car (last
(assq 'charset
(assoc current-language-environment
language-info-alist))))))
@@ -956,94 +492,53 @@ This is a no-op in XEmacs."
(defun mm-charset-after (&optional pos)
"Return charset of a character in current buffer at position POS.
If POS is nil, it defaults to the current point.
-If POS is out of range, the value is nil.
-If the charset is `composition', return the actual one."
+If POS is out of range, the value is nil."
(let ((char (char-after pos)) charset)
- (if (< (mm-char-int char) 128)
+ (if (< char 128)
(setq charset 'ascii)
- ;; charset-after is fake in some Emacsen.
- (setq charset (and (fboundp 'char-charset) (char-charset char)))
- (if (eq charset 'composition) ; Mule 4
- (let ((p (or pos (point))))
- (cadr (find-charset-region p (1+ p))))
- (if (and charset (not (memq charset '(ascii eight-bit-control
- eight-bit-graphic))))
- charset
- (mm-guess-charset))))))
+ (setq charset (char-charset char))
+ (if (and charset (not (memq charset '(ascii eight-bit-control
+ eight-bit-graphic))))
+ charset
+ (mm-guess-charset)))))
(defun mm-mime-charset (charset)
"Return the MIME charset corresponding to the given Mule CHARSET."
- (if (eq charset 'unknown)
- (error "The message contains non-printable characters, please use attachment"))
- (if (and (fboundp 'coding-system-get) (fboundp 'get-charset-property))
- (or
- (and (mm-preferred-coding-system charset)
- (or (coding-system-get
- (mm-preferred-coding-system charset) :mime-charset)
- (coding-system-get
- (mm-preferred-coding-system charset) 'mime-charset)))
- (and (eq charset 'ascii)
- 'us-ascii)
- (mm-preferred-coding-system charset)
- (mm-mule-charset-to-mime-charset charset))
- ;; This is for XEmacs.
- (mm-mule-charset-to-mime-charset charset)))
-
-;; `delete-dups' is not available in XEmacs 21.4.
-(if (fboundp 'delete-dups)
- (defalias 'mm-delete-duplicates 'delete-dups)
- (defun mm-delete-duplicates (list)
- "Destructively remove `equal' duplicates from LIST.
-Store the result in LIST and return it. LIST must be a proper list.
-Of several `equal' occurrences of an element in LIST, the first
-one is kept.
-
-This is a compatibility function for Emacsen without `delete-dups'."
- ;; Code from `subr.el' in Emacs 22:
- (let ((tail list))
- (while tail
- (setcdr tail (delete (car tail) (cdr tail)))
- (setq tail (cdr tail))))
- list))
+ (when (eq charset 'unknown)
+ (error "The message contains non-printable characters, please use attachment"))
+ (or
+ (and (mm-preferred-coding-system charset)
+ (coding-system-get (mm-preferred-coding-system charset) 'mime-charset))
+ (and (eq charset 'ascii)
+ 'us-ascii)
+ (mm-preferred-coding-system charset)
+ (mm-mule-charset-to-mime-charset charset)))
;; Fixme: This is used in places when it should be testing the
-;; default multibyteness. See mm-default-multibyte-p.
-(eval-and-compile
- (if (and (not (featurep 'xemacs))
- (boundp 'enable-multibyte-characters))
- (defun mm-multibyte-p ()
- "Non-nil if multibyte is enabled in the current buffer."
- enable-multibyte-characters)
- (defun mm-multibyte-p () (featurep 'mule))))
-
-(defun mm-default-multibyte-p ()
- "Return non-nil if the session is multibyte.
-This affects whether coding conversion should be attempted generally."
- (if (featurep 'mule)
- (if (boundp 'enable-multibyte-characters)
- (default-value 'enable-multibyte-characters)
- t)))
+;; default multibyteness.
+(defun mm-multibyte-p ()
+ "Non-nil if multibyte is enabled in the current buffer."
+ enable-multibyte-characters)
(defun mm-iso-8859-x-to-15-region (&optional b e)
- (if (fboundp 'char-charset)
- (let (charset item c inconvertible)
- (save-restriction
- (if e (narrow-to-region b e))
- (goto-char (point-min))
- (skip-chars-forward "\0-\177")
- (while (not (eobp))
- (cond
- ((not (setq item (assq (char-charset (setq c (char-after)))
- mm-iso-8859-x-to-15-table)))
- (forward-char))
- ((memq c (cdr (cdr item)))
- (setq inconvertible t)
- (forward-char))
- (t
- (insert-before-markers (prog1 (+ c (car (cdr item)))
- (delete-char 1)))))
- (skip-chars-forward "\0-\177")))
- (not inconvertible))))
+ (let (charset item c inconvertible)
+ (save-restriction
+ (if e (narrow-to-region b e))
+ (goto-char (point-min))
+ (skip-chars-forward "\0-\177")
+ (while (not (eobp))
+ (cond
+ ((not (setq item (assq (char-charset (setq c (char-after)))
+ mm-iso-8859-x-to-15-table)))
+ (forward-char))
+ ((memq c (cdr (cdr item)))
+ (setq inconvertible t)
+ (forward-char))
+ (t
+ (insert-before-markers (prog1 (+ c (car (cdr item)))
+ (delete-char 1)))))
+ (skip-chars-forward "\0-\177")))
+ (not inconvertible)))
(defun mm-sort-coding-systems-predicate (a b)
(let ((priorities
@@ -1058,85 +553,6 @@ This affects whether coding conversion should be attempted generally."
(length (memq (coding-system-base b) priorities)))
t))))
-(declare-function latin-unity-massage-name "ext:latin-unity")
-(declare-function latin-unity-maybe-remap "ext:latin-unity")
-(declare-function latin-unity-representations-feasible-region "ext:latin-unity")
-(declare-function latin-unity-representations-present-region "ext:latin-unity")
-
-(defvar latin-unity-coding-systems)
-(defvar latin-unity-ucs-list)
-
-(defun mm-xemacs-find-mime-charset-1 (begin end)
- "Determine which MIME charset to use to send region as message.
-This uses the XEmacs-specific latin-unity package to better handle the
-case where identical characters from diverse ISO-8859-? character sets
-can be encoded using a single one of the corresponding coding systems.
-
-It treats `mm-coding-system-priorities' as the list of preferred
-coding systems; a useful example setting for this list in Western
-Europe would be (iso-8859-1 iso-8859-15 utf-8), which would default
-to the very standard Latin 1 coding system, and only move to coding
-systems that are less supported as is necessary to encode the
-characters that exist in the buffer.
-
-Latin Unity doesn't know about those non-ASCII Roman characters that
-are available in various East Asian character sets. As such, its
-behavior if you have a JIS 0212 LATIN SMALL LETTER A WITH ACUTE in a
-buffer and it can otherwise be encoded as Latin 1, won't be ideal.
-But this is very much a corner case, so don't worry about it."
- (let ((systems mm-coding-system-priorities) csets psets curset)
-
- ;; Load the Latin Unity library, if available.
- (when (and (not (featurep 'latin-unity)) (locate-library "latin-unity"))
- (require 'latin-unity))
-
- ;; Now, can we use it?
- (if (featurep 'latin-unity)
- (progn
- (setq csets (latin-unity-representations-feasible-region begin end)
- psets (latin-unity-representations-present-region begin end))
-
- (catch 'done
-
- ;; Pass back the first coding system in the preferred list
- ;; that can encode the whole region.
- (dolist (curset systems)
- (setq curset (latin-unity-massage-name 'buffer-default curset))
-
- ;; If the coding system is a universal coding system, then
- ;; it can certainly encode all the characters in the region.
- (if (memq curset latin-unity-ucs-list)
- (throw 'done (list curset)))
-
- ;; If a coding system isn't universal, and isn't in
- ;; the list that latin unity knows about, we can't
- ;; decide whether to use it here. Leave that until later
- ;; in `mm-find-mime-charset-region' function, whence we
- ;; have been called.
- (unless (memq curset latin-unity-coding-systems)
- (throw 'done nil))
-
- ;; Right, we know about this coding system, and it may
- ;; conceivably be able to encode all the characters in
- ;; the region.
- (if (latin-unity-maybe-remap begin end curset csets psets t)
- (throw 'done (list curset))))
-
- ;; Can't encode using anything from the
- ;; `mm-coding-system-priorities' list.
- ;; Leave `mm-find-mime-charset' to do most of the work.
- nil))
-
- ;; Right, latin unity isn't available; let `mm-find-charset-region'
- ;; take its default action, which equally applies to GNU Emacs.
- nil)))
-
-(defmacro mm-xemacs-find-mime-charset (begin end)
- (when (featurep 'xemacs)
- `(and (featurep 'mule) (mm-xemacs-find-mime-charset-1 ,begin ,end))))
-
-(declare-function mm-delete-duplicates "mm-util" (list))
-
(defun mm-find-mime-charset-region (b e &optional hack-charsets)
"Return the MIME charsets needed to encode the region between B and E.
nil means ASCII, a single-element list represents an appropriate MIME
@@ -1178,16 +594,9 @@ charset, and a longer list means no appropriate charset."
(setq systems nil
charsets (list cs))))))
charsets))
- ;; If we're XEmacs, and some coding system is appropriate,
- ;; mm-xemacs-find-mime-charset will return an appropriate list.
- ;; Otherwise, we'll get nil, and the next setq will get invoked.
- (setq charsets (mm-xemacs-find-mime-charset b e))
-
- ;; Fixme: won't work for unibyte Emacs 23:
-
;; We're not multibyte, or a single coding system won't cover it.
(setq charsets
- (mm-delete-duplicates
+ (delete-dups
(mapcar 'mm-mime-charset
(delq 'ascii
(mm-find-charset-region b e))))))
@@ -1200,17 +609,6 @@ charset, and a longer list means no appropriate charset."
(if (and (memq 'iso-2022-jp-2 charsets)
(memq 'iso-2022-jp-2 hack-charsets))
(setq charsets (delq 'iso-2022-jp charsets)))
- ;; Attempt to reduce the number of charsets if utf-8 is available.
- (if (and (featurep 'xemacs)
- (> (length charsets) 1)
- (mm-coding-system-p 'utf-8))
- (let ((mm-coding-system-priorities
- (cons 'utf-8 mm-coding-system-priorities)))
- (setq charsets
- (mm-delete-duplicates
- (mapcar 'mm-mime-charset
- (delq 'ascii
- (mm-find-charset-region b e)))))))
charsets))
(defmacro mm-with-unibyte-buffer (&rest forms)
@@ -1233,7 +631,6 @@ Use multibyte mode for this."
(defmacro mm-with-unibyte-current-buffer (&rest forms)
"Evaluate FORMS with current buffer temporarily made unibyte.
-Equivalent to `progn' in XEmacs.
Note: We recommend not using this macro any more; there should be
better ways to do a similar thing. The previous version of this macro
@@ -1241,31 +638,27 @@ bound the default value of `enable-multibyte-characters' to nil while
evaluating FORMS but it is no longer done. So, some programs assuming
it if any may malfunction."
(declare (obsolete nil "25.1") (indent 0) (debug t))
- (if (featurep 'xemacs)
- `(progn ,@forms)
- (let ((multibyte (make-symbol "multibyte")))
- `(let ((,multibyte enable-multibyte-characters))
+ (let ((multibyte (make-symbol "multibyte")))
+ `(let ((,multibyte enable-multibyte-characters))
+ (when ,multibyte
+ (set-buffer-multibyte nil))
+ (prog1
+ (progn ,@forms)
(when ,multibyte
- (set-buffer-multibyte nil))
- (prog1
- (progn ,@forms)
- (when ,multibyte
- (set-buffer-multibyte t)))))))
+ (set-buffer-multibyte t))))))
(defun mm-find-charset-region (b e)
"Return a list of Emacs charsets in the region B to E."
(cond
- ((and (mm-multibyte-p)
- (fboundp 'find-charset-region))
+ ((mm-multibyte-p)
;; Remove composition since the base charsets have been included.
;; Remove eight-bit-*, treat them as ascii.
(let ((css (find-charset-region b e)))
- (dolist (cs
- '(composition eight-bit-control eight-bit-graphic control-1)
- css)
- (setq css (delq cs css)))))
+ (dolist (cs '(composition eight-bit-control eight-bit-graphic control-1))
+ (setq css (delq cs css)))
+ css))
(t
- ;; We are in a unibyte buffer or XEmacs non-mule, so we futz around a bit.
+ ;; We are in a unibyte buffer, so we futz around a bit.
(save-excursion
(save-restriction
(narrow-to-region b e)
@@ -1274,11 +667,9 @@ it if any may malfunction."
(if (eobp)
'(ascii)
(let (charset)
- (setq charset
- (and (boundp 'current-language-environment)
- (car (last (assq 'charset
- (assoc current-language-environment
- language-info-alist))))))
+ (setq charset (car (last (assq 'charset
+ (assoc current-language-environment
+ language-info-alist)))))
(if (eq charset 'ascii) (setq charset nil))
(or charset
(setq charset
@@ -1305,9 +696,9 @@ it if any may malfunction."
"Like `insert-file-contents', but only reads in the file.
A buffer may be modified in several ways after reading into the buffer due
to advanced Emacs features, such as file-name-handlers, format decoding,
-`find-file-hooks', etc.
+`find-file-hook', etc.
If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'.
- This function ensures that none of these modifications will take place."
+This function ensures that none of these modifications will take place."
(letf* ((format-alist nil)
(auto-mode-alist (if inhibit nil (mm-auto-mode-alist)))
((default-value 'major-mode) 'fundamental-mode)
@@ -1322,14 +713,8 @@ If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'.
(append mm-inhibit-file-name-handlers
inhibit-file-name-handlers)
inhibit-file-name-handlers))
- (ffh (if (boundp 'find-file-hook)
- 'find-file-hook
- 'find-file-hooks))
- (val (symbol-value ffh)))
- (set ffh nil)
- (unwind-protect
- (insert-file-contents filename visit beg end replace)
- (set ffh val))))
+ (find-file-hook nil))
+ (insert-file-contents filename visit beg end replace)))
(defun mm-append-to-file (start end filename &optional codesys inhibit)
"Append the contents of the region to the end of file FILENAME.
@@ -1371,70 +756,8 @@ If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'."
inhibit-file-name-handlers)))
(write-region start end filename append visit lockname)))
-(autoload 'gmm-write-region "gmm-utils")
-
-;; It is not a MIME function, but some MIME functions use it.
-(if (and (fboundp 'make-temp-file)
- (ignore-errors
- (let ((def (if (fboundp 'compiled-function-arglist) ;; XEmacs
- (eval (list 'compiled-function-arglist
- (symbol-function 'make-temp-file)))
- (require 'help-fns)
- (help-function-arglist 'make-temp-file t))))
- (and (>= (length def) 4)
- (eq (nth 3 def) 'suffix)))))
- (defalias 'mm-make-temp-file 'make-temp-file)
- ;; Stolen (and modified for XEmacs) from Emacs 22.
- (defun mm-make-temp-file (prefix &optional dir-flag suffix)
- "Create a temporary file.
-The returned file name (created by appending some random characters at the end
-of PREFIX, and expanding against `temporary-file-directory' if necessary),
-is guaranteed to point to a newly created empty file.
-You can then use `write-region' to write new data into the file.
-
-If DIR-FLAG is non-nil, create a new empty directory instead of a file.
-
-If SUFFIX is non-nil, add that at the end of the file name."
- (let ((umask (default-file-modes))
- file)
- (unwind-protect
- (progn
- ;; Create temp files with strict access rights. It's easy to
- ;; loosen them later, whereas it's impossible to close the
- ;; time-window of loose permissions otherwise.
- (set-default-file-modes 448)
- (while (condition-case err
- (progn
- (setq file
- (make-temp-name
- (expand-file-name
- prefix
- (if (fboundp 'temp-directory)
- ;; XEmacs
- (temp-directory)
- temporary-file-directory))))
- (if suffix
- (setq file (concat file suffix)))
- (if dir-flag
- (make-directory file)
- ;; NOTE: This is unsafe if Emacs 20
- ;; users and XEmacs users don't use
- ;; a secure temp directory.
- (gmm-write-region "" nil file nil 'silent
- nil 'excl))
- nil)
- (file-already-exists t)
- ;; The XEmacs version of `make-directory' issues
- ;; `file-error'.
- (file-error (or (and (featurep 'xemacs)
- (file-exists-p file))
- (signal (car err) (cdr err)))))
- ;; the file was somehow created by someone else between
- ;; `make-temp-name' and `write-region', let's try again.
- nil)
- file)
- ;; Reset the umask.
- (set-default-file-modes umask)))))
+(defalias 'mm-make-temp-file 'make-temp-file)
+(define-obsolete-function-alias 'mm-make-temp-file 'make-temp-file "25.2")
(defvar mm-image-load-path-cache nil)
@@ -1455,54 +778,23 @@ If SUFFIX is non-nil, add that at the end of the file name."
result)))
;; Fixme: This doesn't look useful where it's used.
-(if (fboundp 'detect-coding-region)
- (defun mm-detect-coding-region (start end)
- "Like `detect-coding-region' except returning the best one."
- (let ((coding-systems
- (detect-coding-region start end)))
- (or (car-safe coding-systems)
- coding-systems)))
- (defun mm-detect-coding-region (start end)
- (let ((point (point)))
- (goto-char start)
- (skip-chars-forward "\0-\177" end)
- (prog1
- (if (eq (point) end) 'ascii (mm-guess-charset))
- (goto-char point)))))
+(defun mm-detect-coding-region (start end)
+ "Like `detect-coding-region' except returning the best one."
+ (let ((coding-systems (detect-coding-region start end)))
+ (or (car-safe coding-systems)
+ coding-systems)))
(declare-function mm-detect-coding-region "mm-util" (start end))
-(if (fboundp 'coding-system-get)
- (defun mm-detect-mime-charset-region (start end)
- "Detect MIME charset of the text in the region between START and END."
- (let ((cs (mm-detect-coding-region start end)))
- (or (coding-system-get cs :mime-charset)
- (coding-system-get cs 'mime-charset))))
- (defun mm-detect-mime-charset-region (start end)
- "Detect MIME charset of the text in the region between START and END."
- (let ((cs (mm-detect-coding-region start end)))
- cs)))
-
-(eval-when-compile
- (unless (fboundp 'coding-system-to-mime-charset)
- (defalias 'coding-system-to-mime-charset 'ignore)))
+(defun mm-detect-mime-charset-region (start end)
+ "Detect MIME charset of the text in the region between START and END."
+ (let ((cs (mm-detect-coding-region start end)))
+ (coding-system-get cs 'mime-charset)))
(defun mm-coding-system-to-mime-charset (coding-system)
- "Return the MIME charset corresponding to CODING-SYSTEM.
-To make this function work with XEmacs, the APEL package is required."
- (when coding-system
- (or (and (fboundp 'coding-system-get)
- (or (coding-system-get coding-system :mime-charset)
- (coding-system-get coding-system 'mime-charset)))
- (and (featurep 'xemacs)
- (or (and (fboundp 'coding-system-to-mime-charset)
- (not (eq (symbol-function 'coding-system-to-mime-charset)
- 'ignore)))
- (and (condition-case nil
- (require 'mcharset)
- (error nil))
- (fboundp 'coding-system-to-mime-charset)))
- (coding-system-to-mime-charset coding-system)))))
+ "Return the MIME charset corresponding to CODING-SYSTEM."
+ (and coding-system
+ (coding-system-get coding-system 'mime-charset)))
(defvar jka-compr-acceptable-retval-list)
(declare-function jka-compr-make-temp-name "jka-compr" (&optional local))
@@ -1571,14 +863,6 @@ decompressed data. The buffer's multibyteness must be turned off."
(message "%s" (or err-msg (concat msg "done")))
retval)))))
-(eval-when-compile
- (unless (fboundp 'coding-system-name)
- (defalias 'coding-system-name 'ignore))
- (unless (fboundp 'find-file-coding-system-for-read-from-filename)
- (defalias 'find-file-coding-system-for-read-from-filename 'ignore))
- (unless (fboundp 'find-operation-coding-system)
- (defalias 'find-operation-coding-system 'ignore)))
-
(defun mm-find-buffer-file-coding-system (&optional filename)
"Find coding system used to decode the contents of the current buffer.
This function looks for the coding system magic cookie or examines the
@@ -1601,66 +885,16 @@ gzip, bzip2, etc. are allowed."
(setq filename (file-name-sans-extension filename)))
(goto-char (point-min))
(unwind-protect
- (cond
- ((boundp 'set-auto-coding-function) ;; Emacs
- (if filename
- (or (funcall (symbol-value 'set-auto-coding-function)
- filename (- (point-max) (point-min)))
- (car (find-operation-coding-system 'insert-file-contents
- filename)))
- (let (auto-coding-alist)
- (condition-case nil
- (funcall (symbol-value 'set-auto-coding-function)
- nil (- (point-max) (point-min)))
- (error nil)))))
- ((and (featurep 'xemacs) (featurep 'file-coding)) ;; XEmacs
- (let ((case-fold-search t)
- (end (point-at-eol))
- codesys start)
- (or
- (and (re-search-forward "-\\*-+[\t ]*" end t)
- (progn
- (setq start (match-end 0))
- (re-search-forward "[\t ]*-+\\*-" end t))
- (progn
- (setq end (match-beginning 0))
- (goto-char start)
- (or (looking-at "coding:[\t ]*\\([^\t ;]+\\)")
- (re-search-forward
- "[\t ;]+coding:[\t ]*\\([^\t ;]+\\)"
- end t)))
- (find-coding-system (setq codesys
- (intern (match-string 1))))
- codesys)
- (and (re-search-forward "^[\t ]*;+[\t ]*Local[\t ]+Variables:"
- nil t)
- (progn
- (setq start (match-end 0))
- (re-search-forward "^[\t ]*;+[\t ]*End:" nil t))
- (progn
- (setq end (match-beginning 0))
- (goto-char start)
- (re-search-forward
- "^[\t ]*;+[\t ]*coding:[\t ]*\\([^\t\n\r ]+\\)"
- end t))
- (find-coding-system (setq codesys
- (intern (match-string 1))))
- codesys)
- (and (progn
- (goto-char (point-min))
- (setq case-fold-search nil)
- (re-search-forward "^;;;coding system: "
- ;;(+ (point-min) 3000) t))
- nil t))
- (looking-at "[^\t\n\r ]+")
- (find-coding-system
- (setq codesys (intern (match-string 0))))
- codesys)
- (and filename
- (setq codesys
- (find-file-coding-system-for-read-from-filename
- filename))
- (coding-system-name (coding-system-base codesys)))))))
+ (if filename
+ (or (funcall (symbol-value 'set-auto-coding-function)
+ filename (- (point-max) (point-min)))
+ (car (find-operation-coding-system 'insert-file-contents
+ filename)))
+ (let (auto-coding-alist)
+ (condition-case nil
+ (funcall (symbol-value 'set-auto-coding-function)
+ nil (- (point-max) (point-min)))
+ (error nil))))
(when decomp
(kill-buffer (current-buffer)))))))
diff --git a/lisp/gnus/mm-uu.el b/lisp/gnus/mm-uu.el
index 4197b2aa54..4927a5e660 100644
--- a/lisp/gnus/mm-uu.el
+++ b/lisp/gnus/mm-uu.el
@@ -43,7 +43,7 @@
(autoload 'yenc-extract-filename "yenc")
(defcustom mm-uu-decode-function 'uudecode-decode-region
- "*Function to uudecode.
+ "Function to uudecode.
Internal function is done in Lisp by default, therefore decoding may
appear to be horribly slow. You can make Gnus use an external
decoder, such as uudecode."
@@ -54,7 +54,7 @@ decoder, such as uudecode."
:group 'gnus-article-mime)
(defcustom mm-uu-binhex-decode-function 'binhex-decode-region
- "*Function to binhex decode.
+ "Function to binhex decode.
Internal function is done in elisp by default, therefore decoding may
appear to be horribly slow . You can make Gnus use the external Unix
decoder, such as hexbin."
@@ -85,7 +85,7 @@ This can be either \"inline\" or \"attachment\".")
:group 'gnus-article-mime)
(defcustom mm-uu-tex-groups-regexp "\\.tex\\>"
- "*Regexp matching TeX groups."
+ "Regexp matching TeX groups."
:version "23.1"
:type 'regexp
:group 'gnus-article-mime)
@@ -249,14 +249,7 @@ To disable dissecting shar codes, for instance, add
(defsubst mm-uu-function-2 (entry)
(nth 5 entry))
-;; In Emacs 22, we could use `min-colors' in the face definition. But Emacs
-;; 21 and XEmacs don't support it.
-(defcustom mm-uu-hide-markers
- (< 16 (or (and (fboundp 'defined-colors)
- (length (defined-colors)))
- (and (fboundp 'device-color-cells)
- (device-color-cells))
- 0))
+(defcustom mm-uu-hide-markers (< 16 (length (defined-colors)))
"If non-nil, hide verbatim markers.
The value should be nil on displays where the face
`mm-uu-extract' isn't distinguishable to the face `default'."
@@ -297,12 +290,8 @@ If PROPERTIES is non-nil, PROPERTIES are applied to the buffer,
see `set-text-properties'. If PROPERTIES equals t, this means to
apply the face `mm-uu-extract'."
(let ((obuf (current-buffer))
- (multi (and (boundp 'enable-multibyte-characters)
- enable-multibyte-characters))
- (coding-system
- ;; Might not exist in non-MULE XEmacs
- (when (boundp 'buffer-file-coding-system)
- buffer-file-coding-system)))
+ (multi enable-multibyte-characters)
+ (coding-system buffer-file-coding-system))
(with-current-buffer (generate-new-buffer " *mm-uu*")
(if multi (mm-enable-multibyte) (mm-disable-multibyte))
(setq buffer-file-coding-system coding-system)
@@ -322,13 +311,13 @@ apply the face `mm-uu-extract'."
(interactive)
(if symbol (set-default symbol value))
(setq mm-uu-beginning-regexp nil)
- (mapcar (lambda (entry)
- (if (mm-uu-configure-p (mm-uu-type entry) 'disabled)
+ (mapcar (lambda (mm-uu-entry)
+ (if (mm-uu-configure-p (mm-uu-type mm-uu-entry) 'disabled)
nil
(setq mm-uu-beginning-regexp
(concat mm-uu-beginning-regexp
(if mm-uu-beginning-regexp "\\|")
- (mm-uu-beginning-regexp entry)))))
+ (mm-uu-beginning-regexp mm-uu-entry)))))
mm-uu-type-alist))
(mm-uu-configure)
@@ -336,7 +325,7 @@ apply the face `mm-uu-extract'."
(defvar file-name)
(defvar start-point)
(defvar end-point)
-(defvar entry)
+(defvar mm-uu-entry)
(defun mm-uu-uu-filename ()
(if (looking-at ".+")
@@ -523,7 +512,7 @@ apply the face `mm-uu-extract'."
(when (and mml2015-use (null (mml2015-clear-verify-function)))
(mm-set-handle-multipart-parameter
mm-security-handle 'gnus-details
- (gnus-format-message
+ (format-message
"Clear verification not supported by `%s'.\n" mml2015-use)))
(mml2015-extract-cleartext-signature))
(list (mm-make-handle buf mm-uu-text-plain-type)))))
@@ -587,11 +576,11 @@ apply the face `mm-uu-extract'."
(not (eq charset 'ascii)))
;; Assume that buffer's multibyteness is turned off.
;; See `mml2015-pgg-clear-decrypt'.
- (insert (mm-decode-coding-string (prog1
- (buffer-string)
- (erase-buffer)
- (mm-enable-multibyte))
- charset))
+ (insert (decode-coding-string (prog1
+ (buffer-string)
+ (erase-buffer)
+ (mm-enable-multibyte))
+ charset))
(mm-enable-multibyte))
(list (mm-make-handle buf mm-uu-text-plain-type)))
(list (mm-make-handle buf '("application/pgp-encrypted")))))))
@@ -612,10 +601,10 @@ apply the face `mm-uu-extract'."
(defun mm-uu-gpg-key-skip-to-last ()
(let ((point (point))
- (end-regexp (mm-uu-end-regexp entry))
- (beginning-regexp (mm-uu-beginning-regexp entry)))
+ (end-regexp (mm-uu-end-regexp mm-uu-entry))
+ (beginning-regexp (mm-uu-beginning-regexp mm-uu-entry)))
(when (and end-regexp
- (not (mm-uu-configure-p (mm-uu-type entry) 'disabled)))
+ (not (mm-uu-configure-p (mm-uu-type mm-uu-entry) 'disabled)))
(while (re-search-forward end-regexp nil t)
(skip-chars-forward " \t\n\r")
(if (looking-at beginning-regexp)
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 8e1e3e782c..e934f8b284 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -31,7 +31,6 @@
(require 'mml-smime)
(autoload 'gnus-completing-read "gnus-util")
-(autoload 'gnus-window-inside-pixel-edges "gnus-ems")
(autoload 'gnus-article-prepare-display "gnus-art")
(autoload 'vcard-parse-string "vcard")
(autoload 'vcard-format-string "vcard")
@@ -80,7 +79,7 @@
(autoload 'gnus-rescale-image "gnus-util")
-(defun mm-inline-image-emacs (handle)
+(defun mm-inline-image (handle)
(let ((b (point-marker))
(inhibit-read-only t))
(put-image
@@ -88,7 +87,7 @@
(if (eq mm-inline-large-images 'resize)
(gnus-rescale-image
image
- (let ((edges (gnus-window-inside-pixel-edges
+ (let ((edges (window-inside-pixel-edges
(get-buffer-window (current-buffer)))))
(cons (truncate (* mm-inline-large-images-proportion
(- (nth 2 edges) (nth 0 edges))))
@@ -105,27 +104,6 @@
(remove-images b b)
(delete-region b (1+ b)))))))
-(defun mm-inline-image-xemacs (handle)
- (when (featurep 'xemacs)
- (insert "\n")
- (forward-char -1)
- (let ((annot (make-annotation (mm-get-image handle) nil 'text))
- (inhibit-read-only t))
- (mm-handle-set-undisplayer
- handle
- `(lambda ()
- (let ((b ,(point-marker))
- (inhibit-read-only t))
- (delete-annotation ,annot)
- (delete-region (1- b) b))))
- (set-extent-property annot 'mm t)
- (set-extent-property annot 'duplicable t))))
-
-(eval-and-compile
- (if (featurep 'xemacs)
- (defalias 'mm-inline-image 'mm-inline-image-xemacs)
- (defalias 'mm-inline-image 'mm-inline-image-emacs)))
-
(defvar mm-w3m-setup nil
"Whether gnus-article-mode has been setup to use emacs-w3m.")
@@ -220,18 +198,19 @@
(delete-region ,(point-min-marker)
,(point-max-marker)))))))))
-(defvar mm-w3m-standalone-supports-m17n-p (if (featurep 'mule) 'undecided)
- "*T means the w3m command supports the m17n feature.")
+(defcustom mm-w3m-standalone-supports-m17n-p 'undecided
+ "T means the w3m command supports the m17n feature."
+ :type '(choice (const nil) (const t) (other :tag "detect" undecided))
+ :group 'mime-display)
(defun mm-w3m-standalone-supports-m17n-p ()
"Say whether the w3m command supports the m17n feature."
(cond ((eq mm-w3m-standalone-supports-m17n-p t) t)
((eq mm-w3m-standalone-supports-m17n-p nil) nil)
- ((not (featurep 'mule)) (setq mm-w3m-standalone-supports-m17n-p nil))
((condition-case nil
(let ((coding-system-for-write 'iso-2022-jp)
(coding-system-for-read 'iso-2022-jp)
- (str (mm-decode-coding-string "\
+ (str (decode-coding-string "\
\e$B#D#o#e#s!!#w#3#m!!#s#u#p#p#o#r#t!!#m#1#7#n!)\e(B" 'iso-2022-jp)))
(mm-with-multibyte-buffer
(insert str)
@@ -283,7 +262,7 @@
(delete-region (match-beginning 0) (match-end 0))))
(defun mm-inline-wash-with-file (post-func cmd &rest args)
- (let ((file (mm-make-temp-file
+ (let ((file (make-temp-file
(expand-file-name "mm" mm-tmp-directory))))
(let ((coding-system-for-write 'binary))
(write-region (point-min) (point-max) file nil 'silent))
@@ -463,11 +442,6 @@
handle
`(lambda ()
(let ((inhibit-read-only t))
- (if (fboundp 'remove-specifier)
- ;; This is only valid on XEmacs.
- (dolist (prop '(background background-pixmap foreground))
- (remove-specifier
- (face-property 'default prop) (current-buffer))))
(delete-region ,(point-min-marker) ,(point-max-marker)))))))))
;; Shut up byte-compiler.
@@ -486,18 +460,14 @@ If MODE is not set, try to find mode automatically."
(unless charset
(setq coding-system (mm-find-buffer-file-coding-system)))
(setq text (buffer-string))))
- ;; XEmacs @#$@ version of font-lock refuses to fully turn itself
- ;; on for buffers whose name begins with " ". That's why we use
- ;; `with-current-buffer'/`generate-new-buffer' rather than
- ;; `with-temp-buffer'.
- (with-current-buffer (generate-new-buffer "*fontification*")
+ (with-temp-buffer
(buffer-disable-undo)
(mm-enable-multibyte)
(insert (cond ((eq charset 'gnus-decoded)
(with-current-buffer (mm-handle-buffer handle)
(buffer-string)))
(coding-system
- (mm-decode-coding-string text coding-system))
+ (decode-coding-string text coding-system))
(charset
(mm-decode-string text charset))
(t
@@ -524,28 +494,16 @@ If MODE is not set, try to find mode automatically."
;; Do not fontify if the guess mode is fundamental.
(unless (or font-lock-mode
(eq major-mode 'fundamental-mode))
- (if (fboundp 'font-lock-ensure)
- (font-lock-ensure)
- (font-lock-fontify-buffer)))))
- ;; By default, XEmacs font-lock uses non-duplicable text
- ;; properties. This code forces all the text properties
- ;; to be copied along with the text.
- (when (featurep 'xemacs)
- (map-extents (lambda (ext ignored)
- (set-extent-property ext 'duplicable t)
- nil)
- nil nil nil nil nil 'text-prop))
+ (font-lock-ensure))))
(setq text (buffer-string))
;; Set buffer unmodified to avoid confirmation when killing the
;; buffer.
- (set-buffer-modified-p nil)
- (kill-buffer (current-buffer)))
+ (set-buffer-modified-p nil))
(mm-insert-inline handle text)))
;; Shouldn't these functions check whether the user even wants to use
-;; font-lock? At least under XEmacs, this fontification is pretty
-;; much unconditional. Also, it would be nice to change for the size
-;; of the fontified region.
+;; font-lock? Also, it would be nice to change for the size of the
+;; fontified region.
(defun mm-display-patch-inline (handle)
(mm-display-inline-fontify handle 'diff-mode))
diff --git a/lisp/gnus/mml-sec.el b/lisp/gnus/mml-sec.el
index 254c427299..0e2d438199 100644
--- a/lisp/gnus/mml-sec.el
+++ b/lisp/gnus/mml-sec.el
@@ -27,6 +27,7 @@
(require 'gnus-util)
(require 'epg)
+(require 'epa)
(require 'password-cache)
(require 'mm-encode)
@@ -46,6 +47,8 @@
(autoload 'mml-smime-verify "mml-smime")
(autoload 'mml-smime-verify-test "mml-smime")
(autoload 'epa--select-keys "epa")
+(autoload 'message-options-get "message")
+(autoload 'message-options-set "message")
(declare-function message-options-set "message" (symbol value))
@@ -555,7 +558,7 @@ Return keys."
(let* ((usage-prefs (mml-secure-cust-usage-lookup context usage))
(curr-fprs (cdr (assoc name (cdr usage-prefs))))
(key-fprs (mapcar 'mml-secure-fingerprint keys))
- (new-fprs (gnus-union curr-fprs key-fprs :test 'equal)))
+ (new-fprs (cl-union curr-fprs key-fprs :test 'equal)))
(if curr-fprs
(setcdr (assoc name (cdr usage-prefs)) new-fprs)
(setcdr usage-prefs (cons (cons name new-fprs) (cdr usage-prefs))))
@@ -623,7 +626,7 @@ Passphrase caching in Emacs is NOT recommended. Use gpg-agent instead."
The passphrase is read and cached."
;; Based on mml2015-epg-passphrase-callback.
(if (eq key-id 'SYM)
- (epg-passphrase-callback-function context key-id nil)
+ (epa-passphrase-callback-function context key-id nil)
(let* ((password-cache-key-id
(if (eq key-id 'PIN)
"PIN"
@@ -702,9 +705,9 @@ be present in the keyring."
;; In contrast, signing requires secret key.
(mml-secure-secret-key-exists-p context subkey))
(or (not fingerprint)
- (gnus-string-match-p (concat fingerprint "$") fpr)
- (gnus-string-match-p (concat fingerprint "$")
- (epg-sub-key-fingerprint subkey))))
+ (string-match-p (concat fingerprint "$") fpr)
+ (string-match-p (concat fingerprint "$")
+ (epg-sub-key-fingerprint subkey))))
(throw 'break t)))))))
(defun mml-secure-find-usable-keys (context name usage &optional justone)
@@ -907,10 +910,10 @@ If no one is selected, symmetric encryption will be performed. "
cipher signers)
(when sign
(setq signers (mml-secure-signers context signer-names))
- (epg-context-set-signers context signers))
+ (setf (epg-context-signers context) signers))
(when (eq 'OpenPGP protocol)
- (epg-context-set-armor context t)
- (epg-context-set-textmode context t))
+ (setf (epg-context-armor context) t)
+ (setf (epg-context-textmode context) t))
(when (mml-secure-cache-passphrase-p protocol)
(epg-context-set-passphrase-callback
context
@@ -935,9 +938,9 @@ If no one is selected, symmetric encryption will be performed. "
(signers (mml-secure-signers context signer-names))
signature micalg)
(when (eq 'OpenPGP protocol)
- (epg-context-set-armor context t)
- (epg-context-set-textmode context t))
- (epg-context-set-signers context signers)
+ (setf (epg-context-armor context) t)
+ (setf (epg-context-textmode context) t))
+ (setf (epg-context-signers context) signers)
(when (mml-secure-cache-passphrase-p protocol)
(epg-context-set-passphrase-callback
context
@@ -947,8 +950,9 @@ If no one is selected, symmetric encryption will be performed. "
(if (eq 'OpenPGP protocol)
(epg-sign-string context (buffer-string) mode)
(epg-sign-string context
- (mm-replace-in-string (buffer-string)
- "\n" "\r\n") t))
+ (replace-regexp-in-string
+ "\n" "\r\n" (buffer-string))
+ t))
mml-secure-secret-key-id-list nil)
(error
(mml-secure-clear-secret-key-id-list)
diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el
index 502c65b246..b15accd631 100644
--- a/lisp/gnus/mml-smime.el
+++ b/lisp/gnus/mml-smime.el
@@ -32,17 +32,17 @@
(autoload 'message-narrow-to-headers "message")
(autoload 'message-fetch-field "message")
-;; Prefer epg over openssl if it is available as epg uses GnuPG's gpgsm,
+;; Prefer epg over openssl as epg uses GnuPG's gpgsm,
;; which features full-fledged certificate management, while openssl requires
;; major manual efforts for certificate revocation and expiry and has bugs
;; as documented under man smime(1).
-(ignore-errors (require 'epg))
+(require 'epg)
-(defcustom mml-smime-use (if (featurep 'epg) 'epg 'openssl)
+(defcustom mml-smime-use 'epg
"Whether to use OpenSSL or EasyPG (EPG) to handle S/MIME messages.
-Defaults to EPG if it's available.
-If you think about using OpenSSL, please read the BUGS section in the manual
-for the `smime' command coming with OpenSSL first. EasyPG is recommended."
+If you're thinking about using OpenSSL, please first read the BUGS section
+in the manual for the `smime' command that comes with OpenSSL.
+We recommend EasyPG."
:group 'mime-security
:type '(choice (const :tag "EPG" epg)
(const :tag "OpenSSL" openssl)))
@@ -149,8 +149,7 @@ Whether the passphrase is cached at all is controlled by
(if (not (and (not (file-exists-p tmp))
(get-buffer tmp)))
(push tmp certfiles)
- (setq file (mm-make-temp-file (expand-file-name "mml."
- mm-tmp-directory)))
+ (setq file (make-temp-file (expand-file-name "mml." mm-tmp-directory)))
(with-current-buffer tmp
(write-region (point-min) (point-max) file))
(push file certfiles)
@@ -176,15 +175,12 @@ Whether the passphrase is cached at all is controlled by
(list 'keyfile
(if (= (length smime-keys) 1)
(cadar smime-keys)
- (or (let ((from (cadr (funcall (if (boundp
- 'gnus-extract-address-components)
- gnus-extract-address-components
- 'mail-extract-address-components)
- (or (save-excursion
- (save-restriction
- (message-narrow-to-headers)
- (message-fetch-field "from")))
- "")))))
+ (or (let ((from (cadr (mail-extract-address-components
+ (or (save-excursion
+ (save-restriction
+ (message-narrow-to-headers)
+ (message-fetch-field "from")))
+ "")))))
(and from (smime-get-key-by-email from)))
(smime-get-key-by-email
(gnus-completing-read "Sign this part with what signature"
@@ -205,18 +201,15 @@ Whether the passphrase is cached at all is controlled by
(while (not result)
(setq who (read-from-minibuffer
(format "%sLookup certificate for: " (or bad ""))
- (cadr (funcall (if (boundp
- 'gnus-extract-address-components)
- gnus-extract-address-components
- 'mail-extract-address-components)
- (or (save-excursion
- (save-restriction
- (message-narrow-to-headers)
- (message-fetch-field "to")))
- "")))))
+ (cadr (mail-extract-address-components
+ (or (save-excursion
+ (save-restriction
+ (message-narrow-to-headers)
+ (message-fetch-field "to")))
+ "")))))
(if (setq cert (smime-cert-by-dns who))
(setq result (list 'certfile (buffer-name cert)))
- (setq bad (gnus-format-message "`%s' not found. " who))))
+ (setq bad (format-message "`%s' not found. " who))))
(quit))
result))
@@ -235,7 +228,7 @@ Whether the passphrase is cached at all is controlled by
"")))))
(if (setq cert (smime-cert-by-ldap who))
(setq result (list 'certfile (buffer-name cert)))
- (setq bad (gnus-format-message "`%s' not found. " who))))
+ (setq bad (format-message "`%s' not found. " who))))
(quit))
result))
@@ -421,7 +414,7 @@ Content-Disposition: attachment; filename=smime.p7m
(mm-set-handle-multipart-parameter
mm-security-handle 'gnus-info "Corrupted")
(throw 'error handle))
- (setq part (mm-replace-in-string part "\n" "\r\n")
+ (setq part (replace-regexp-in-string "\n" "\r\n" part)
context (epg-make-context 'CMS))
(condition-case error
(setq plain (epg-verify-string context (mm-get-part signature) part))
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index c767ceb906..6105f79ae2 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -29,13 +29,9 @@
(require 'mml-sec)
(eval-when-compile (require 'cl))
(eval-when-compile (require 'url))
-(eval-when-compile
- (when (featurep 'xemacs)
- (require 'easy-mmode))) ; for `define-minor-mode'
(autoload 'message-make-message-id "message")
(declare-function gnus-setup-posting-charset "gnus-msg" (group))
-(autoload 'gnus-make-local-hook "gnus-util")
(autoload 'gnus-completing-read "gnus-util")
(autoload 'message-fetch-field "message")
(autoload 'message-mark-active-p "message")
@@ -50,7 +46,6 @@
(autoload 'message-mail-p "message")
(defvar gnus-article-mime-handles)
-(defvar gnus-mouse-2)
(defvar gnus-newsrc-hashtb)
(defvar message-default-charset)
(defvar message-deletable-headers)
@@ -63,7 +58,7 @@
(defcustom mml-content-type-parameters
'(name access-type expiration size permission format)
- "*A list of acceptable parameters in MML tag.
+ "A list of acceptable parameters in MML tag.
These parameters are generated in Content-Type header if exists."
:version "22.1"
:type '(repeat (symbol :tag "Parameter"))
@@ -71,7 +66,7 @@ These parameters are generated in Content-Type header if exists."
(defcustom mml-content-disposition-parameters
'(filename creation-date modification-date read-date)
- "*A list of acceptable parameters in MML tag.
+ "A list of acceptable parameters in MML tag.
These parameters are generated in Content-Disposition header if exists."
:version "22.1"
:type '(repeat (symbol :tag "Parameter"))
@@ -153,17 +148,19 @@ is called. FUNCTION is a Lisp function which is called with the MML
handle to tweak the part.")
(defvar mml-externalize-attachments nil
- "*If non-nil, local-file attachments are generated as external parts.")
+ "If non-nil, local-file attachments are generated as external parts.")
-(defvar mml-generate-multipart-alist nil
- "*Alist of multipart generation functions.
+(defcustom mml-generate-multipart-alist nil
+ "Alist of multipart generation functions.
Each entry has the form (NAME . FUNCTION), where
NAME is a string containing the name of the part (without the
leading \"/multipart/\"),
FUNCTION is a Lisp function which is called to generate the part.
The Lisp function has to supply the appropriate MIME headers and the
-contents of this part.")
+contents of this part."
+ :group 'message
+ :type '(alist :key-type string :value-type function))
(defvar mml-syntax-table
(let ((table (copy-syntax-table emacs-lisp-mode-syntax-table)))
@@ -418,12 +415,21 @@ A message part needs to be split into %d charset parts. Really send? "
(setq contents (append (list (cons 'tag-location orig-point)) contents))
(cons (intern name) (nreverse contents))))
-(defun mml-buffer-substring-no-properties-except-hard-newlines (start end)
+(defun mml-buffer-substring-no-properties-except-some (start end)
(let ((str (buffer-substring-no-properties start end))
- (bufstart start) tmp)
- (while (setq tmp (text-property-any start end 'hard 't))
- (set-text-properties (- tmp bufstart) (- tmp bufstart -1)
- '(hard t) str)
+ (bufstart start)
+ tmp)
+ ;; Copy over all hard newlines.
+ (while (setq tmp (text-property-any start end 'hard t))
+ (put-text-property (- tmp bufstart) (- tmp bufstart -1)
+ 'hard t str)
+ (setq start (1+ tmp)))
+ ;; Copy over all `display' properties (which are usually images).
+ (setq start bufstart)
+ (while (setq tmp (text-property-not-all start end 'display nil))
+ (put-text-property (- tmp bufstart) (- tmp bufstart -1)
+ 'display (get-text-property tmp 'display)
+ str)
(setq start (1+ tmp)))
str))
@@ -440,21 +446,21 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
(if (re-search-forward "<#\\(/\\)?mml." nil t)
(setq count (+ count (if (match-beginning 1) -1 1)))
(goto-char (point-max))))
- (mml-buffer-substring-no-properties-except-hard-newlines
+ (mml-buffer-substring-no-properties-except-some
beg (if (> count 0)
(point)
(match-beginning 0))))
(if (re-search-forward
"<#\\(/\\)?\\(multipart\\|part\\|external\\|mml\\)." nil t)
(prog1
- (mml-buffer-substring-no-properties-except-hard-newlines
+ (mml-buffer-substring-no-properties-except-some
beg (match-beginning 0))
(if (or (not (match-beginning 1))
(equal (match-string 2) "multipart"))
(goto-char (match-beginning 0))
(when (looking-at "[ \t]*\n")
(forward-line 1))))
- (mml-buffer-substring-no-properties-except-hard-newlines
+ (mml-buffer-substring-no-properties-except-some
beg (goto-char (point-max)))))))
(defvar mml-boundary nil)
@@ -519,7 +525,9 @@ be \"related\" or \"alternate\"."
(when (search-forward (url-filename parsed) end t)
(let ((cid (format "fsf.%d" cid)))
(replace-match (concat "cid:" cid) t t)
- (push (list cid (url-filename parsed)) new-parts))
+ (push (list cid (url-filename parsed)
+ (get-text-property start 'display))
+ new-parts))
(setq cid (1+ cid)))))))
;; We have local images that we want to include.
(if (not new-parts)
@@ -532,11 +540,41 @@ be \"related\" or \"alternate\"."
(setq cont
(nconc cont
(list `(part (type . "image/png")
- (filename . ,(nth 1 new-part))
+ ,@(mml--possibly-alter-image
+ (nth 1 new-part)
+ (nth 2 new-part))
(id . ,(concat "<" (nth 0 new-part)
">")))))))
cont))))
+(defun mml--possibly-alter-image (file-name image)
+ (if (or (null image)
+ (not (consp image))
+ (not (eq (car image) 'image))
+ (not (image-property image :rotation))
+ (not (executable-find "exiftool")))
+ `((filename . ,file-name))
+ `((filename . ,file-name)
+ (buffer
+ .
+ ,(with-current-buffer (mml-generate-new-buffer " *mml rotation*")
+ (set-buffer-multibyte nil)
+ (call-process "exiftool"
+ file-name
+ (list (current-buffer) nil)
+ nil
+ (format "-Orientation#=%d"
+ (cl-case (truncate
+ (image-property image :rotation))
+ (0 0)
+ (90 6)
+ (180 3)
+ (270 8)
+ (otherwise 0)))
+ "-o" "-"
+ "-")
+ (current-buffer))))))
+
(defun mml-generate-mime-1 (cont)
(let ((mm-use-ultra-safe-encoding
(or mm-use-ultra-safe-encoding (assq 'sign cont))))
@@ -636,6 +674,7 @@ be \"related\" or \"alternate\"."
(let ((mm-coding-system-priorities
(cons 'utf-8 mm-coding-system-priorities)))
(setq charset (mm-encode-body))))
+ (mm-disable-multibyte)
(setq encoding (mm-body-encoding
charset (cdr (assq 'encoding cont))))))
(setq coded (buffer-string)))
@@ -645,7 +684,7 @@ be \"related\" or \"alternate\"."
(mm-with-unibyte-buffer
(cond
((cdr (assq 'buffer cont))
- (insert (mm-string-as-unibyte
+ (insert (string-as-unibyte
(with-current-buffer (cdr (assq 'buffer cont))
(buffer-string)))))
((and filename
@@ -658,9 +697,7 @@ be \"related\" or \"alternate\"."
filename)))))
(t
(let ((contents (cdr (assq 'contents cont))))
- (if (if (featurep 'xemacs)
- (string-match "[^\000-\377]" contents)
- (mm-multibyte-string-p contents))
+ (if (multibyte-string-p contents)
(progn
(mm-enable-multibyte)
(insert contents)
@@ -670,7 +707,7 @@ be \"related\" or \"alternate\"."
(if (setq encoding (cdr (assq 'encoding cont)))
(setq encoding (intern (downcase encoding))))
(setq encoding (mm-encode-buffer type encoding)
- coded (mm-string-as-multibyte (buffer-string))))
+ coded (string-as-multibyte (buffer-string))))
(mml-insert-mime-headers cont type charset encoding nil)
(insert "\n" coded))))
((eq (car cont) 'external)
@@ -1109,57 +1146,42 @@ If HANDLES is non-nil, use it instead reparsing the buffer."
(easy-menu-define
mml-menu mml-mode-map ""
`("Attachments"
- ["Attach File..." mml-attach-file
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Attach a file at point"))]
+ ["Attach File..." mml-attach-file :help "Attach a file at point"]
["Attach Buffer..." mml-attach-buffer
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Attach a buffer to the outgoing message"))]
+ :help "Attach a buffer to the outgoing message"]
["Attach External..." mml-attach-external
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Attach reference to an external file"))]
+ :help "Attach reference to an external file"]
;; FIXME: Is it possible to do this without using
;; `gnus-gcc-externalize-attachments'?
["Externalize Attachments"
(lambda ()
(interactive)
- (if (not (and (boundp 'gnus-gcc-externalize-attachments)
- (memq gnus-gcc-externalize-attachments
- '(all t nil))))
- ;; Stupid workaround for XEmacs not honoring :visible.
- (message "Can't handle this value of `gnus-gcc-externalize-attachments'")
- (setq gnus-gcc-externalize-attachments
- (not gnus-gcc-externalize-attachments))
- (message "gnus-gcc-externalize-attachments is `%s'."
- gnus-gcc-externalize-attachments)))
- ;; XEmacs barfs on :visible.
- ,@(if (featurep 'xemacs) nil
- '(:visible (and (boundp 'gnus-gcc-externalize-attachments)
- (memq gnus-gcc-externalize-attachments
- '(all t nil)))))
+ (setq gnus-gcc-externalize-attachments
+ (not gnus-gcc-externalize-attachments))
+ (message "gnus-gcc-externalize-attachments is `%s'."
+ gnus-gcc-externalize-attachments))
+ :visible (and (boundp 'gnus-gcc-externalize-attachments)
+ (memq gnus-gcc-externalize-attachments
+ '(all t nil)))
:style toggle
:selected gnus-gcc-externalize-attachments
- ,@(if (featurep 'xemacs) nil
- '(:help "Save attachments as external parts in Gcc copies"))]
+ :help "Save attachments as external parts in Gcc copies"]
"----"
;;
("Change Security Method"
["PGP/MIME"
(lambda () (interactive) (setq mml-secure-method "pgpmime"))
- ,@(if (featurep 'xemacs) nil
- '(:help "Set Security Method to PGP/MIME"))
+ :help "Set Security Method to PGP/MIME"
:style radio
:selected (equal mml-secure-method "pgpmime") ]
["S/MIME"
(lambda () (interactive) (setq mml-secure-method "smime"))
- ,@(if (featurep 'xemacs) nil
- '(:help "Set Security Method to S/MIME"))
+ :help "Set Security Method to S/MIME"
:style radio
:selected (equal mml-secure-method "smime") ]
["Inline PGP"
(lambda () (interactive) (setq mml-secure-method "pgp"))
- ,@(if (featurep 'xemacs) nil
- '(:help "Set Security Method to inline PGP"))
+ :help "Set Security Method to inline PGP"
:style radio
:selected (equal mml-secure-method "pgp") ] )
;;
@@ -1167,8 +1189,7 @@ If HANDLES is non-nil, use it instead reparsing the buffer."
["Encrypt Message" mml-secure-message-encrypt t]
["Sign and Encrypt Message" mml-secure-message-sign-encrypt t]
["Encrypt/Sign off" mml-unsecure-message
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Don't Encrypt/Sign Message"))]
+ :help "Don't Encrypt/Sign Message"]
;; Do we have separate encrypt and encrypt/sign commands for parts?
["Sign Part" mml-secure-sign t]
["Encrypt Part" mml-secure-encrypt t]
@@ -1183,26 +1204,18 @@ If HANDLES is non-nil, use it instead reparsing the buffer."
;;["Narrow" mml-narrow-to-part t]
["Quote MML in region" mml-quote-region
:active (message-mark-active-p)
- ,@(if (featurep 'xemacs) nil
- '(:help "Quote MML tags in region"))]
+ :help "Quote MML tags in region"]
["Validate MML" mml-validate t]
["Preview" mml-preview t]
"----"
["Emacs MIME manual" (lambda () (interactive) (message-info 4))
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Display the Emacs MIME manual"))]
+ :help "Display the Emacs MIME manual"]
["PGG manual" (lambda () (interactive) (message-info mml2015-use))
- ;; XEmacs barfs on :visible.
- ,@(if (featurep 'xemacs) nil
- '(:visible (and (boundp 'mml2015-use) (equal mml2015-use 'pgg))))
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Display the PGG manual"))]
+ :visible (and (boundp 'mml2015-use) (equal mml2015-use 'pgg))
+ :help "Display the PGG manual"]
["EasyPG manual" (lambda () (interactive) (require 'mml2015) (message-info mml2015-use))
- ;; XEmacs barfs on :visible.
- ,@(if (featurep 'xemacs) nil
- '(:visible (and (boundp 'mml2015-use) (equal mml2015-use 'epg))))
- ,@(if (featurep 'xemacs) '(t)
- '(:help "Display the EasyPG manual"))]))
+ :visible (and (boundp 'mml2015-use) (equal mml2015-use 'epg))
+ :help "Display the EasyPG manual"]))
(define-minor-mode mml-mode
"Minor mode for editing MML.
@@ -1379,7 +1392,7 @@ body) or \"attachment\" (separate from the body)."
'type type
;; icicles redefines read-file-name and returns a
;; string w/ text properties :-/
- 'filename (mm-substring-no-properties file)
+ 'filename (substring-no-properties file)
'disposition (or disposition "attachment")
'description description)
;; When using Mail mode, make sure it does the mime encoding
@@ -1575,12 +1588,11 @@ or the `pop-to-buffer' function."
(message-sort-headers)
(mml-to-mime))
(if raw
- (when (fboundp 'set-buffer-multibyte)
- (let ((s (buffer-string)))
- ;; Insert the content into unibyte buffer.
- (erase-buffer)
- (mm-disable-multibyte)
- (insert s)))
+ (let ((s (buffer-string)))
+ ;; Insert the content into unibyte buffer.
+ (erase-buffer)
+ (mm-disable-multibyte)
+ (insert s))
(let ((gnus-newsgroup-charset (car message-posting-charset))
gnus-article-prepare-hook gnus-original-article-buffer
gnus-displaying-mime)
@@ -1591,7 +1603,6 @@ or the `pop-to-buffer' function."
(gnus-article-prepare-display))))
;; Disable article-mode-map.
(use-local-map nil)
- (gnus-make-local-hook 'kill-buffer-hook)
(add-hook 'kill-buffer-hook
(lambda ()
(mm-destroy-parts gnus-article-mime-handles)) nil t)
@@ -1602,14 +1613,14 @@ or the `pop-to-buffer' function."
(lambda ()
(interactive)
(widget-button-press (point))))
- (local-set-key gnus-mouse-2
+ (local-set-key [mouse-2]
(lambda (event)
(interactive "@e")
(widget-button-press (widget-event-point event) event)))
;; FIXME: Buffer is in article mode, but most tool bar commands won't
;; work. Maybe only keep the following icons: search, print, quit
(goto-char (point-min))))
- (if (and (not (mm-special-display-p (buffer-name mml-preview-buffer)))
+ (if (and (not (special-display-p (buffer-name mml-preview-buffer)))
(boundp 'gnus-buffer-configuration)
(assq 'mml-preview gnus-buffer-configuration))
(let ((gnus-message-buffer (current-buffer)))
diff --git a/lisp/gnus/mml1991.el b/lisp/gnus/mml1991.el
index 568dc564d9..f98984c1cd 100644
--- a/lisp/gnus/mml1991.el
+++ b/lisp/gnus/mml1991.el
@@ -195,17 +195,20 @@ Whether the passphrase is cached at all is controlled by
(pop-to-buffer pgg-errors-buffer)
(error "Encrypt error"))
(delete-region (point-min) (point-max))
- (mm-with-unibyte-current-buffer
- (insert-buffer-substring pgg-output-buffer)
- (goto-char (point-min))
- (while (re-search-forward "\r+$" nil t)
- (replace-match "" t t))
- (when cte
- (mm-encode-content-transfer-encoding cte))
- (goto-char (point-min))
- (when headers
- (insert headers))
- (insert "\n"))
+ (insert
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (insert-buffer-substring pgg-output-buffer)
+ (goto-char (point-min))
+ (while (re-search-forward "\r+$" nil t)
+ (replace-match "" t t))
+ (when cte
+ (mm-encode-content-transfer-encoding cte))
+ (goto-char (point-min))
+ (when headers
+ (insert headers))
+ (insert "\n")
+ (buffer-string)))
t))
(defun mml1991-pgg-encrypt (cont &optional sign)
@@ -275,17 +278,20 @@ Whether the passphrase is cached at all is controlled by
(let* ((pair (mml-secure-epg-sign 'OpenPGP 'clear))
(signature (car pair)))
(delete-region (point-min) (point-max))
- (mm-with-unibyte-current-buffer
- (insert signature)
- (goto-char (point-min))
- (while (re-search-forward "\r+$" nil t)
- (replace-match "" t t))
- (when cte
- (mm-encode-content-transfer-encoding cte))
- (goto-char (point-min))
- (when headers
- (insert headers))
- (insert "\n"))
+ (insert
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (insert signature)
+ (goto-char (point-min))
+ (while (re-search-forward "\r+$" nil t)
+ (replace-match "" t t))
+ (when cte
+ (mm-encode-content-transfer-encoding cte))
+ (goto-char (point-min))
+ (when headers
+ (insert headers))
+ (insert "\n")
+ (buffer-string)))
t)))
(defun mml1991-epg-encrypt (cont &optional sign)
diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el
index 61ca53624d..774821320f 100644
--- a/lisp/gnus/mml2015.el
+++ b/lisp/gnus/mml2015.el
@@ -32,6 +32,7 @@
(require 'mm-util)
(require 'mml)
(require 'mml-sec)
+(require 'epg-config)
(defvar mc-pgp-always-sign)
@@ -42,27 +43,7 @@
;; Maybe this should be in eg mml-sec.el (and have a different name).
;; Then mml1991 would not need to require mml2015, and mml1991-use
;; could be removed.
-(defvar mml2015-use (or
- (progn
- (ignore-errors (require 'epg-config))
- (and (fboundp 'epg-check-configuration)
- 'epg))
- (progn
- (let ((abs-file (locate-library "pgg")))
- ;; Don't load PGG if it is marked as obsolete
- ;; (Emacs 24).
- (when (and abs-file
- (not (string-match "/obsolete/[^/]*\\'"
- abs-file)))
- (ignore-errors (require 'pgg))
- (and (fboundp 'pgg-sign-region)
- 'pgg))))
- (progn (ignore-errors
- (load "mc-toplev"))
- (and (fboundp 'mc-encrypt-generic)
- (fboundp 'mc-sign-generic)
- (fboundp 'mc-cleanup-recipient-headers)
- 'mailcrypt)))
+(defvar mml2015-use 'epg
"The package used for PGP/MIME.
Valid packages include `epg', `pgg' and `mailcrypt'.")
@@ -482,14 +463,17 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
(or (y-or-n-p "Sign the message? ")
'not))))
'never)))
- (mm-with-unibyte-current-buffer
- (mc-encrypt-generic
- (or (message-options-get 'message-recipients)
- (message-options-set 'message-recipients
- (mc-cleanup-recipient-headers
- (read-string "Recipients: "))))
- nil nil nil
- (message-options-get 'message-sender))))
+ (insert
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (mc-encrypt-generic
+ (or (message-options-get 'message-recipients)
+ (message-options-set 'message-recipients
+ (mc-cleanup-recipient-headers
+ (read-string "Recipients: "))))
+ nil nil nil
+ (message-options-get 'message-sender))
+ (buffer-string))))
(goto-char (point-min))
(unless (looking-at "-----BEGIN PGP MESSAGE-----")
(error "Fail to encrypt the message"))
@@ -614,7 +598,7 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
(insert "\r"))
(forward-line)
(end-of-line))
- (with-temp-file (setq signature-file (mm-make-temp-file "pgg"))
+ (with-temp-file (setq signature-file (make-temp-file "pgg"))
(mm-insert-part signature))
(if (condition-case err
(prog1
@@ -655,7 +639,7 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
(if (condition-case err
(prog1
(mm-with-unibyte-buffer
- (insert (mm-encode-coding-string text coding-system))
+ (insert (encode-coding-string text coding-system))
(pgg-verify-region (point-min) (point-max) nil t))
(goto-char (point-min))
(while (search-forward "\r\n" nil t)
@@ -775,12 +759,10 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
(autoload 'epg-expand-group "epg-config")
(autoload 'epa-select-keys "epa")
-(autoload 'gnus-create-image "gnus-ems")
-
(defun mml2015-epg-key-image (key-id)
"Return the image of a key, if any"
(with-temp-buffer
- (mm-set-buffer-multibyte nil)
+ (set-buffer-multibyte nil)
(let* ((coding-system-for-write 'binary)
(coding-system-for-read 'binary)
(data (shell-command-to-string
@@ -920,7 +902,7 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
(mm-set-handle-multipart-parameter
mm-security-handle 'gnus-info "Corrupted")
(throw 'error handle))
- (setq part (mm-replace-in-string part "\n" "\r\n")
+ (setq part (replace-regexp-in-string "\n" "\r\n" part)
signature (mm-get-part signature)
context (epg-make-context))
(condition-case error
@@ -943,8 +925,8 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
(defun mml2015-epg-clear-verify ()
(let ((inhibit-redisplay t)
(context (epg-make-context))
- (signature (mm-encode-coding-string (buffer-string)
- coding-system-for-write))
+ (signature (encode-coding-string (buffer-string)
+ coding-system-for-write))
plain)
(condition-case error
(setq plain (epg-verify-string context signature))
@@ -963,7 +945,7 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
(mml2015-epg-verify-result-to-string
(epg-context-result-for context 'verify)))
(delete-region (point-min) (point-max))
- (insert (mm-decode-coding-string plain coding-system-for-read)))
+ (insert (decode-coding-string plain coding-system-for-read)))
(mml2015-extract-cleartext-signature))))
(defun mml2015-epg-sign (cont)
diff --git a/lisp/gnus/nndiary.el b/lisp/gnus/nndiary.el
index 9245396149..dbdbbadea8 100644
--- a/lisp/gnus/nndiary.el
+++ b/lisp/gnus/nndiary.el
@@ -88,16 +88,6 @@
(require 'gnus-start)
(require 'gnus-sum)
-;; Compatibility Functions =================================================
-
-(eval-and-compile
- (if (fboundp 'signal-error)
- (defun nndiary-error (&rest args)
- (apply #'signal-error 'nndiary args))
- (defun nndiary-error (&rest args)
- (apply #'error args))))
-
-
;; Back End behavior customization ===========================================
(defgroup nndiary nil
@@ -107,7 +97,7 @@
(defcustom nndiary-mail-sources
`((file :path ,(expand-file-name "~/.nndiary")))
- "*NNDiary specific mail sources.
+ "NNDiary specific mail sources.
This variable is used by nndiary in place of the standard `mail-sources'
variable when `nndiary-get-new-mail' is set to non-nil. These sources
must contain diary messages ONLY."
@@ -116,7 +106,7 @@ must contain diary messages ONLY."
:type 'sexp)
(defcustom nndiary-split-methods '(("diary" ""))
- "*NNDiary specific split methods.
+ "NNDiary specific split methods.
This variable is used by nndiary in place of the standard
`nnmail-split-methods' variable when `nndiary-get-new-mail' is set to
non-nil."
@@ -128,7 +118,7 @@ non-nil."
(defcustom nndiary-reminders '((0 . day))
- "*Different times when you want to be reminded of your appointments.
+ "Different times when you want to be reminded of your appointments.
Diary articles will appear again, as if they'd been just received.
Entries look like (3 . day) which means something like \"Please
@@ -174,7 +164,7 @@ In order to make this clear, here are some examples:
(const :format "%v" year)))))
(defcustom nndiary-week-starts-on-monday nil
- "*Whether a week starts on monday (otherwise, sunday)."
+ "Whether a week starts on monday (otherwise, sunday)."
:type 'boolean
:group 'nndiary)
@@ -182,7 +172,7 @@ In order to make this clear, here are some examples:
(define-obsolete-variable-alias 'nndiary-request-create-group-hooks
'nndiary-request-create-group-functions "24.3")
(defcustom nndiary-request-create-group-functions nil
- "*Hook run after `nndiary-request-create-group' is executed.
+ "Hook run after `nndiary-request-create-group' is executed.
The hook functions will be called with the full group name as argument."
:group 'nndiary
:type 'hook)
@@ -190,7 +180,7 @@ The hook functions will be called with the full group name as argument."
(define-obsolete-variable-alias 'nndiary-request-update-info-hooks
'nndiary-request-update-info-functions "24.3")
(defcustom nndiary-request-update-info-functions nil
- "*Hook run after `nndiary-request-update-info-group' is executed.
+ "Hook run after `nndiary-request-update-info-group' is executed.
The hook functions will be called with the full group name as argument."
:group 'nndiary
:type 'hook)
@@ -198,14 +188,14 @@ The hook functions will be called with the full group name as argument."
(define-obsolete-variable-alias 'nndiary-request-accept-article-hooks
'nndiary-request-accept-article-functions "24.3")
(defcustom nndiary-request-accept-article-functions nil
- "*Hook run before accepting an article.
+ "Hook run before accepting an article.
Executed near the beginning of `nndiary-request-accept-article'.
The hook functions will be called with the article in the current buffer."
:group 'nndiary
:type 'hook)
(defcustom nndiary-check-directory-twice t
- "*If t, check directories twice to avoid NFS failures."
+ "If t, check directories twice to avoid NFS failures."
:group 'nndiary
:type 'boolean)
@@ -1157,12 +1147,12 @@ all. This may very well take some time.")
;; within the specified bounds.
;; Signals are caught by `nndiary-schedule'.
(if (not (string-match "^[ \t]*[0-9]+[ \t]*$" str))
- (nndiary-error "not an integer value")
+ (error "Not an integer value")
;; else
(let ((val (string-to-number str)))
(and (or (< val min)
(and max (> val max)))
- (nndiary-error "value out of range"))
+ (error "Value out of range"))
val)))
(defun nndiary-parse-schedule-value (str min-or-values max)
@@ -1179,7 +1169,7 @@ all. This may very well take some time.")
(match-string 1 str))))
(if (and val (setq val (assoc val min-or-values)))
(list (cadr val))
- (nndiary-error "invalid syntax")))
+ (error "Invalid syntax")))
;; min-or-values is min
(mapcar
(lambda (val)
@@ -1199,7 +1189,7 @@ all. This may very well take some time.")
(t
(cons end beg)))))
(t
- (nndiary-error "invalid syntax")))
+ (error "Invalid syntax")))
))
(split-string str ",")))
))
@@ -1214,7 +1204,7 @@ all. This may very well take some time.")
(let ((header (format "^X-Diary-%s: \\(.*\\)$" head)))
(goto-char (point-min))
(if (not (re-search-forward header nil t))
- (nndiary-error "header missing")
+ (error "Header missing")
;; else
(nndiary-parse-schedule-value (match-string 1) min-or-values max))
))
@@ -1288,27 +1278,27 @@ all. This may very well take some time.")
(while (setq reminder (pop reminders))
(push
(cond ((eq (cdr reminder) 'minute)
- (subtract-time
+ (time-subtract
(apply 'encode-time 0 (nthcdr 1 date-elts))
(seconds-to-time (* (car reminder) 60.0))))
((eq (cdr reminder) 'hour)
- (subtract-time
+ (time-subtract
(apply 'encode-time 0 0 (nthcdr 2 date-elts))
(seconds-to-time (* (car reminder) 3600.0))))
((eq (cdr reminder) 'day)
- (subtract-time
+ (time-subtract
(apply 'encode-time 0 0 0 (nthcdr 3 date-elts))
(seconds-to-time (* (car reminder) 86400.0))))
((eq (cdr reminder) 'week)
- (subtract-time
+ (time-subtract
(apply 'encode-time 0 0 0 monday (nthcdr 4 date-elts))
(seconds-to-time (* (car reminder) 604800.0))))
((eq (cdr reminder) 'month)
- (subtract-time
+ (time-subtract
(apply 'encode-time 0 0 0 1 (nthcdr 4 date-elts))
(seconds-to-time (* (car reminder) 18748800.0))))
((eq (cdr reminder) 'year)
- (subtract-time
+ (time-subtract
(apply 'encode-time 0 0 0 1 1 (nthcdr 5 date-elts))
(seconds-to-time (* (car reminder) 400861056.0)))))
res))
diff --git a/lisp/gnus/nndoc.el b/lisp/gnus/nndoc.el
index f8fefeb4ae..09260cf33d 100644
--- a/lisp/gnus/nndoc.el
+++ b/lisp/gnus/nndoc.el
@@ -761,7 +761,7 @@ from the document.")
(looking-at "JMF"))
(defun nndoc-oe-dbx-type-p ()
- (looking-at (mm-string-to-multibyte "\317\255\022\376")))
+ (looking-at (string-to-multibyte "\317\255\022\376")))
(defun nndoc-read-little-endian ()
(+ (prog1 (char-after) (forward-char 1))
diff --git a/lisp/gnus/nndraft.el b/lisp/gnus/nndraft.el
index 5f57dd2bf7..0c887f089d 100644
--- a/lisp/gnus/nndraft.el
+++ b/lisp/gnus/nndraft.el
@@ -43,10 +43,12 @@
"Where nndraft will store its files."
nnmh-directory)
-(defvar nndraft-required-headers '(Date)
- "*Headers to be generated when saving a draft message.
+(defcustom nndraft-required-headers '(Date)
+ "Headers to be generated when saving a draft message.
The headers in this variable and the ones in `message-required-headers'
-are generated if and only if they are also in `message-draft-headers'.")
+are generated if and only if they are also in `message-draft-headers'."
+ :type '(repeat sexp)
+ :group 'message-headers) ; FIXME wrong group
@@ -203,12 +205,7 @@ are generated if and only if they are also in `message-draft-headers'.")
(setq buffer-file-name (expand-file-name file)
buffer-auto-save-file-name (make-auto-save-file-name))
(clear-visited-file-modtime)
- (let ((hook (if (boundp 'write-contents-functions)
- 'write-contents-functions
- 'write-contents-hooks)))
- (gnus-make-local-hook hook)
- (add-hook hook 'nndraft-generate-headers nil t))
- (gnus-make-local-hook 'after-save-hook)
+ (add-hook 'write-contents-functions 'nndraft-generate-headers nil t)
(add-hook 'after-save-hook 'nndraft-update-unread-articles nil t)
(message-add-action '(nndraft-update-unread-articles)
'exit 'postpone 'kill)
diff --git a/lisp/gnus/nneething.el b/lisp/gnus/nneething.el
index e60a492062..28561c0594 100644
--- a/lisp/gnus/nneething.el
+++ b/lisp/gnus/nneething.el
@@ -284,7 +284,7 @@ included.")
(defun nneething-encode-file-name (file &optional coding-system)
"Encode the name of the FILE in CODING-SYSTEM."
(let ((pos 0) buf)
- (setq file (mm-encode-coding-string
+ (setq file (encode-coding-string
file (or coding-system nnmail-pathname-coding-system)))
(while (string-match "[^-0-9a-zA-Z_:/.]" file pos)
(setq buf (cons (format "%%%02x" (aref file (match-beginning 0)))
@@ -300,7 +300,7 @@ included.")
(setq buf (cons (string (string-to-number (match-string 1 file) 16))
(cons (substring file pos (match-beginning 0)) buf))
pos (match-end 0)))
- (mm-decode-coding-string
+ (decode-coding-string
(apply (function concat)
(nreverse (cons (substring file pos) buf)))
(or coding-system nnmail-pathname-coding-system))))
diff --git a/lisp/gnus/nnfolder.el b/lisp/gnus/nnfolder.el
index ee60e3e18f..402ffba8c6 100644
--- a/lisp/gnus/nnfolder.el
+++ b/lisp/gnus/nnfolder.el
@@ -884,9 +884,7 @@ deleted. Point is left where the deleted region was."
(active (or (cadr (assoc group nnfolder-group-alist))
(cons 1 0)))
(scantime (assoc group nnfolder-scantime-alist))
- (minid (or (and (boundp 'most-positive-fixnum)
- most-positive-fixnum)
- (lsh -1 -1)))
+ (minid most-positive-fixnum)
maxid start end newscantime
novbuf articles newnum
buffer-read-only)
@@ -1061,7 +1059,7 @@ This command does not work if you use short group names."
(defun nnfolder-group-pathname (group)
"Make file name for GROUP."
(setq group
- (mm-encode-coding-string group nnmail-pathname-coding-system))
+ (encode-coding-string group nnmail-pathname-coding-system))
(let ((dir (file-name-as-directory (expand-file-name nnfolder-directory))))
;; If this file exists, we use it directly.
(if (or nnmail-use-long-file-names
diff --git a/lisp/gnus/nnheader.el b/lisp/gnus/nnheader.el
index cd43016014..6782229ad2 100644
--- a/lisp/gnus/nnheader.el
+++ b/lisp/gnus/nnheader.el
@@ -40,6 +40,7 @@
(require 'mail-utils)
(require 'mm-util)
(require 'gnus-util)
+(require 'subr-x)
(autoload 'gnus-range-add "gnus-range")
(autoload 'gnus-remove-from-range "gnus-range")
;; FIXME none of these are used explicitly in this file.
@@ -62,18 +63,23 @@ they will keep on jabbering all the time."
:group 'gnus-server
:type 'boolean)
-(defvar nnheader-max-head-length 8192
- "*Max length of the head of articles.
+(defcustom nnheader-max-head-length 8192
+ "Max length of the head of articles.
Value is an integer, nil, or t. nil means read in chunks of a file
indefinitely until a complete head is found; t means always read the
entire file immediately, disregarding `nnheader-head-chop-length'.
Integer values will in effect be rounded up to the nearest multiple of
-`nnheader-head-chop-length'.")
-
-(defvar nnheader-head-chop-length 2048
- "*Length of each read operation when trying to fetch HEAD headers.")
+`nnheader-head-chop-length'."
+ :group 'gnus-article-various ; FIXME?
+ :type '(choice integer (const :tag "Read chunks" nil)
+ (const :tag "Read entire file" t)))
+
+(defcustom nnheader-head-chop-length 2048
+ "Length of each read operation when trying to fetch HEAD headers."
+ :group 'gnus-article-various ; FIXME?
+ :type 'integer)
(defvar nnheader-read-timeout
(if (string-match "windows-nt\\|os/2\\|cygwin"
@@ -98,7 +104,7 @@ Integer values will in effect be rounded up to the nearest multiple of
"How long nntp should wait between checking for the end of output.
Shorter values mean quicker response, but are more CPU intensive.")
-(defvar nnheader-file-name-translation-alist
+(defcustom nnheader-file-name-translation-alist
(let ((case-fold-search t))
(cond
((string-match "windows-nt\\|os/2\\|cygwin"
@@ -110,15 +116,19 @@ Shorter values mean quicker response, but are more CPU intensive.")
nil
'((?+ . ?-)))))
(t nil)))
- "*Alist that says how to translate characters in file names.
+ "Alist that says how to translate characters in file names.
For instance, if \":\" is invalid as a file character in file names
on your system, you could say something like:
-\(setq nnheader-file-name-translation-alist \\='((?: . ?_)))")
+\(setq nnheader-file-name-translation-alist \\='((?: . ?_)))"
+ :group 'gnus-article-various ; FIXME?
+ :type '(alist :key-type character :value-type character))
-(defvar nnheader-directory-separator-character
+(defcustom nnheader-directory-separator-character
(string-to-char (substring (file-name-as-directory ".") -1))
- "*A character used to a directory separator.")
+ "A character used as a directory separator."
+ :group 'gnus-article-various ; FIXME?
+ :type 'character)
(autoload 'nnmail-message-id "nnmail")
(autoload 'mail-position-on-field "sendmail")
@@ -621,8 +631,8 @@ the line could be found."
(< beg nnheader-max-head-length))))
;; Finally decode the contents.
(when (mm-coding-system-p nnheader-file-coding-system)
- (mm-decode-coding-region start (point-max)
- nnheader-file-coding-system))))
+ (decode-coding-region start (point-max)
+ nnheader-file-coding-system))))
t))
(defun nnheader-article-p ()
@@ -726,9 +736,7 @@ the line could be found."
(string-match nnheader-numerical-short-files file)
(string-to-number (match-string 0 file))))
-(defvar nnheader-directory-files-is-safe
- (or (eq system-type 'windows-nt)
- (not (featurep 'xemacs)))
+(defvar nnheader-directory-files-is-safe (not (eq system-type 'windows-nt))
"If non-nil, Gnus believes `directory-files' is safe.
It has been reported numerous times that `directory-files' fails with
an alarming frequency on NFS mounted file systems. If it is nil,
@@ -780,28 +788,8 @@ If FULL, translate everything."
2 0))
;; We translate -- but only the file name. We leave the directory
;; alone.
- (if (and (featurep 'xemacs)
- (memq system-type '(windows-nt cygwin)))
- ;; This is needed on NT and stuff, because
- ;; file-name-nondirectory is not enough to split
- ;; file names, containing ':', e.g.
- ;; "d:\\Work\\News\\nntp+news.fido7.ru:fido7.ru.gnu.SCORE"
- ;;
- ;; we are trying to correctly split such names:
- ;; "d:file.name" -> "a:" "file.name"
- ;; "aaa:bbb.ccc" -> "" "aaa:bbb.ccc"
- ;; "d:aaa\\bbb:ccc" -> "d:aaa\\" "bbb:ccc"
- ;; etc.
- ;; to translate then only the file name part.
- (progn
- (setq leaf file
- path "")
- (if (string-match "\\(^\\w:\\|[/\\]\\)\\([^/\\]+\\)$" file)
- (setq leaf (substring file (match-beginning 2))
- path (substring file 0 (match-beginning 2)))))
- ;; Emacs DTRT, says andrewi.
- (setq leaf (file-name-nondirectory file)
- path (file-name-directory file))))
+ (setq leaf (file-name-nondirectory file)
+ path (file-name-directory file)))
(setq len (length leaf))
(while (< i len)
(when (setq trans (cdr (assq (aref leaf i)
@@ -842,7 +830,7 @@ without formatting."
t))
(defsubst nnheader-replace-chars-in-string (string from to)
- (mm-subst-char-in-string from to string))
+ (subst-char-in-string from to string))
(defun nnheader-replace-duplicate-chars-in-string (string from to)
"Replace characters in STRING from FROM to TO."
@@ -886,8 +874,10 @@ without formatting."
(or (not (numberp gnus-verbose-backends))
(<= level gnus-verbose-backends)))
-(defvar nnheader-pathname-coding-system 'iso-8859-1
- "*Coding system for file name.")
+(defcustom nnheader-pathname-coding-system 'iso-8859-1
+ "Coding system for file name."
+ :group 'gnus-article-various ; FIXME?
+ :type 'coding-system)
(defun nnheader-group-pathname (group dir &optional file)
"Make file name for GROUP."
@@ -898,7 +888,7 @@ without formatting."
(if (file-directory-p (concat dir group))
(expand-file-name group dir)
;; If not, we translate dots into slashes.
- (expand-file-name (mm-encode-coding-string
+ (expand-file-name (encode-coding-string
(nnheader-replace-chars-in-string group ?. ?/)
nnheader-pathname-coding-system)
dir))))
@@ -1002,14 +992,8 @@ See `find-file-noselect' for the arguments."
(enable-local-eval nil)
(coding-system-for-read nnheader-file-coding-system)
(version-control 'never)
- (ffh (if (boundp 'find-file-hook)
- 'find-file-hook
- 'find-file-hooks))
- (val (symbol-value ffh)))
- (set ffh nil)
- (unwind-protect
- (apply 'find-file-noselect args)
- (set ffh val))))
+ (find-file-hook nil))
+ (apply 'find-file-noselect args)))
(defun nnheader-directory-regular-files (dir)
"Return a list of all regular files in DIR."
@@ -1098,16 +1082,14 @@ See `find-file-noselect' for the arguments."
(defmacro nnheader-insert-buffer-substring (buffer &optional start end)
"Copy string from unibyte buffer to multibyte current buffer."
- (if (featurep 'xemacs)
- `(insert-buffer-substring ,buffer ,start ,end)
- `(if enable-multibyte-characters
- (insert (with-current-buffer ,buffer
- (mm-string-to-multibyte
- ,(if (or start end)
- `(buffer-substring (or ,start (point-min))
- (or ,end (point-max)))
- '(buffer-string)))))
- (insert-buffer-substring ,buffer ,start ,end))))
+ `(if enable-multibyte-characters
+ (insert (with-current-buffer ,buffer
+ (string-to-multibyte
+ ,(if (or start end)
+ `(buffer-substring (or ,start (point-min))
+ (or ,end (point-max)))
+ '(buffer-string)))))
+ (insert-buffer-substring ,buffer ,start ,end)))
(defvar nnheader-last-message-time '(0 0))
(defun nnheader-message-maybe (&rest args)
@@ -1116,9 +1098,6 @@ See `find-file-noselect' for the arguments."
(setq nnheader-last-message-time now)
(apply 'nnheader-message args))))
-(when (featurep 'xemacs)
- (require 'nnheaderxm))
-
(run-hooks 'nnheader-load-hook)
(provide 'nnheader)
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index c285befc76..2e2ec59aa5 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -26,13 +26,6 @@
;;; Code:
-(eval-and-compile
- (require 'nnheader)
- ;; In Emacs 24, `open-protocol-stream' is an autoloaded alias for
- ;; `make-network-stream'.
- (unless (fboundp 'open-protocol-stream)
- (require 'proto-stream)))
-
(eval-when-compile
(require 'cl))
@@ -164,7 +157,8 @@ textual parts.")
(forward "gnus-forward")))
(defvar nnimap-quirks
- '(("QRESYNC" "Zimbra" "QRESYNC ")))
+ '(("QRESYNC" "Zimbra" "QRESYNC ")
+ ("MOVE" "Dovecot" nil)))
(defvar nnimap-inhibit-logging nil)
@@ -234,7 +228,7 @@ textual parts.")
(delete-region (+ (match-beginning 0) 2) (point))
(setq string (buffer-substring (point) (+ (point) size)))
(delete-region (point) (+ (point) size))
- (insert (format "%S" (mm-subst-char-in-string ?\n ?\s string))))
+ (insert (format "%S" (subst-char-in-string ?\n ?\s string))))
(beginning-of-line)
(setq article
(and (re-search-forward "UID \\([0-9]+\\)" (line-end-position)
@@ -365,7 +359,7 @@ textual parts.")
(with-current-buffer buffer
(when (and nnimap-object
(nnimap-last-command-time nnimap-object)
- (> (gnus-float-time
+ (> (float-time
(time-subtract
now
(nnimap-last-command-time nnimap-object)))
@@ -424,7 +418,7 @@ textual parts.")
(when nnimap-server-port
(push nnimap-server-port ports))
(let* ((stream-list
- (open-protocol-stream
+ (open-network-stream
"*nnimap*" (current-buffer) nnimap-address
(nnimap-map-port (car ports))
:type nnimap-stream
@@ -437,7 +431,7 @@ textual parts.")
:success " OK "
:starttls-function
(lambda (capabilities)
- (when (gnus-string-match-p "STARTTLS" capabilities)
+ (when (string-match-p "STARTTLS" capabilities)
"1 STARTTLS\r\n"))))
(stream (car stream-list))
(props (cdr stream-list))
@@ -447,9 +441,7 @@ textual parts.")
(when (and stream (not (memq (process-status stream) '(open run))))
(setq stream nil))
- (when (and (fboundp 'set-network-process-option) ;; Not in XEmacs.
- (fboundp 'process-type) ;; Emacs 22 doesn't provide it.
- (eq (process-type stream) 'network))
+ (when (eq (process-type stream) 'network)
;; Use TCP-keepalive so that connections that pass through a NAT
;; router don't hang when left idle.
(set-network-process-option stream :keepalive t))
@@ -461,15 +453,15 @@ textual parts.")
(nnheader-report 'nnimap "Unable to contact %s:%s via %s"
nnimap-address (car ports) nnimap-stream)
'no-connect)
- (gnus-set-process-query-on-exit-flag stream nil)
- (if (not (gnus-string-match-p "[*.] \\(OK\\|PREAUTH\\)" greeting))
+ (set-process-query-on-exit-flag stream nil)
+ (if (not (string-match-p "[*.] \\(OK\\|PREAUTH\\)" greeting))
(nnheader-report 'nnimap "%s" greeting)
;; Store the greeting (for debugging purposes).
(setf (nnimap-greeting nnimap-object) greeting)
(setf (nnimap-capabilities nnimap-object)
(mapcar #'upcase
(split-string capabilities)))
- (unless (gnus-string-match-p "[*.] PREAUTH" greeting)
+ (unless (string-match-p "[*.] PREAUTH" greeting)
(if (not (setq credentials
(if (eq nnimap-authenticator 'anonymous)
(list "anonymous"
@@ -922,7 +914,8 @@ textual parts.")
t)
(deffoo nnimap-request-move-article (article group server accept-form
- &optional _last internal-move-group)
+ &optional _last
+ internal-move-group)
(setq group (nnimap-decode-gnus-group group))
(when internal-move-group
(setq internal-move-group (nnimap-decode-gnus-group internal-move-group)))
@@ -932,17 +925,19 @@ textual parts.")
'nnimap-request-head
'nnimap-request-article)
article group server (current-buffer))
- ;; If the move is internal (on the same server), just do it the easy
- ;; way.
+ ;; If the move is internal (on the same server), just do it the
+ ;; easy way.
(let ((message-id (message-field-value "message-id")))
(if internal-move-group
(with-current-buffer (nnimap-buffer)
- (let* ((can-move (nnimap-capability "MOVE"))
- (command (if can-move
- "UID MOVE %d %S"
- "UID COPY %d %S"))
- (result (nnimap-command command article
- (utf7-encode internal-move-group t))))
+ (let* ((can-move (and (nnimap-capability "MOVE")
+ (equal (nnimap-quirk "MOVE") "MOVE")))
+ (command (if can-move
+ "UID MOVE %d %S"
+ "UID COPY %d %S"))
+ (result (nnimap-command
+ command article
+ (utf7-encode internal-move-group t))))
(when (and (car result) (not can-move))
(nnimap-delete-article article))
(cons internal-move-group
@@ -951,11 +946,10 @@ textual parts.")
internal-move-group server message-id
nnimap-request-articles-find-limit)))))
;; Move the article to a different method.
- (let ((result (eval accept-form)))
- (when result
- (nnimap-change-group group server)
- (nnimap-delete-article article)
- result)))))))
+ (when-let ((result (eval accept-form)))
+ (nnimap-change-group group server)
+ (nnimap-delete-article article)
+ result))))))
(deffoo nnimap-request-expire-articles (articles group &optional server force)
(setq group (nnimap-decode-gnus-group group))
@@ -1003,7 +997,8 @@ textual parts.")
(and (nnimap-change-group group server)
(with-current-buffer (nnimap-buffer)
(nnheader-message 7 "Expiring articles from %s: %s" group articles)
- (let ((can-move (nnimap-capability "MOVE")))
+ (let ((can-move (and (nnimap-capability "MOVE")
+ (equal (nnimap-quirk "MOVE") "MOVE"))))
(nnimap-command
(if can-move
"UID MOVE %s %S"
@@ -1887,9 +1882,7 @@ Return the server's response to the SELECT or EXAMINE command."
(let ((name "*imap log*"))
(or (get-buffer name)
(with-current-buffer (get-buffer-create name)
- (when (boundp 'window-point-insertion-type)
- (make-local-variable 'window-point-insertion-type)
- (setq window-point-insertion-type t))
+ (setq-local window-point-insertion-type t)
(current-buffer)))))
(defun nnimap-log-command (command)
@@ -2076,7 +2069,8 @@ Return the server's response to the SELECT or EXAMINE command."
nnmail-split-fancy))
(nnmail-inhibit-default-split-group t)
(groups (nnimap-get-groups))
- (can-move (nnimap-capability "MOVE"))
+ (can-move (and (nnimap-capability "MOVE")
+ (equal (nnimap-quirk "MOVE") "MOVE")))
new-articles)
(erase-buffer)
(nnimap-command "SELECT %S" nnimap-inbox)
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index 560ba8ad2e..a3ad4d6b0a 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -294,14 +294,14 @@ is `(valuefunc member)'."
:group 'gnus)
(defcustom nnir-ignored-newsgroups ""
- "*A regexp to match newsgroups in the active file that should
+ "A regexp to match newsgroups in the active file that should
be skipped when searching."
:version "24.1"
:type '(regexp)
:group 'nnir)
(defcustom nnir-summary-line-format nil
- "*The format specification of the lines in an nnir summary buffer.
+ "The format specification of the lines in an nnir summary buffer.
All the items from `gnus-summary-line-format' are available, along
with three items unique to nnir summary buffers:
@@ -316,7 +316,7 @@ If nil this will use `gnus-summary-line-format'."
:group 'nnir)
(defcustom nnir-retrieve-headers-override-function nil
- "*If non-nil, a function that accepts an article list and group
+ "If non-nil, a function that accepts an article list and group
and populates the `nntp-server-buffer' with the retrieved
headers. Must return either 'nov or 'headers indicating the
retrieved header format.
@@ -328,7 +328,7 @@ result, `gnus-retrieve-headers' will be called instead."
:group 'nnir)
(defcustom nnir-imap-default-search-key "whole message"
- "*The default IMAP search key for an nnir search. Must be one of
+ "The default IMAP search key for an nnir search. Must be one of
the keys in `nnir-imap-search-arguments'. To use raw imap queries
by default set this to \"imap\"."
:version "24.1"
@@ -338,17 +338,17 @@ result, `gnus-retrieve-headers' will be called instead."
(defcustom nnir-swish++-configuration-file
(expand-file-name "~/Mail/swish++.conf")
- "*Configuration file for swish++."
+ "Configuration file for swish++."
:type '(file)
:group 'nnir)
(defcustom nnir-swish++-program "search"
- "*Name of swish++ search executable."
+ "Name of swish++ search executable."
:type '(string)
:group 'nnir)
(defcustom nnir-swish++-additional-switches '()
- "*A list of strings, to be given as additional arguments to swish++.
+ "A list of strings, to be given as additional arguments to swish++.
Note that this should be a list. I.e., do NOT use the following:
(setq nnir-swish++-additional-switches \"-i -w\") ; wrong
@@ -358,7 +358,7 @@ Instead, use this:
:group 'nnir)
(defcustom nnir-swish++-remove-prefix (concat (getenv "HOME") "/Mail/")
- "*The prefix to remove from each file name returned by swish++
+ "The prefix to remove from each file name returned by swish++
in order to get a group name (albeit with / instead of .). This is a
regular expression.
@@ -376,7 +376,7 @@ that it is for swish++, not Namazu."
'nnir-swish-e-index-files "Emacs 23.1")
(defcustom nnir-swish-e-index-file
(expand-file-name "~/Mail/index.swish-e")
- "*Index file for swish-e.
+ "Index file for swish-e.
This could be a server parameter.
It is never consulted once `nnir-swish-e-index-files', which should be
used instead, has been customized."
@@ -385,19 +385,19 @@ used instead, has been customized."
(defcustom nnir-swish-e-index-files
(list nnir-swish-e-index-file)
- "*List of index files for swish-e.
+ "List of index files for swish-e.
This could be a server parameter."
:type '(repeat (file))
:group 'nnir)
(defcustom nnir-swish-e-program "swish-e"
- "*Name of swish-e search executable.
+ "Name of swish-e search executable.
This cannot be a server parameter."
:type '(string)
:group 'nnir)
(defcustom nnir-swish-e-additional-switches '()
- "*A list of strings, to be given as additional arguments to swish-e.
+ "A list of strings, to be given as additional arguments to swish-e.
Note that this should be a list. I.e., do NOT use the following:
(setq nnir-swish-e-additional-switches \"-i -w\") ; wrong
@@ -409,7 +409,7 @@ This could be a server parameter."
:group 'nnir)
(defcustom nnir-swish-e-remove-prefix (concat (getenv "HOME") "/Mail/")
- "*The prefix to remove from each file name returned by swish-e
+ "The prefix to remove from each file name returned by swish-e
in order to get a group name (albeit with / instead of .). This is a
regular expression.
@@ -423,12 +423,12 @@ This could be a server parameter."
;; HyREX engine, see <URL:http://ls6-www.cs.uni-dortmund.de/>
(defcustom nnir-hyrex-program "nnir-search"
- "*Name of the nnir-search executable."
+ "Name of the nnir-search executable."
:type '(string)
:group 'nnir)
(defcustom nnir-hyrex-additional-switches '()
- "*A list of strings, to be given as additional arguments for nnir-search.
+ "A list of strings, to be given as additional arguments for nnir-search.
Note that this should be a list. I.e., do NOT use the following:
(setq nnir-hyrex-additional-switches \"-ddl ddl.xml -c nnir\") ; wrong !
Instead, use this:
@@ -437,12 +437,12 @@ Instead, use this:
:group 'nnir)
(defcustom nnir-hyrex-index-directory (getenv "HOME")
- "*Index directory for HyREX."
+ "Index directory for HyREX."
:type '(directory)
:group 'nnir)
(defcustom nnir-hyrex-remove-prefix (concat (getenv "HOME") "/Mail/")
- "*The prefix to remove from each file name returned by HyREX
+ "The prefix to remove from each file name returned by HyREX
in order to get a group name (albeit with / instead of .).
For example, suppose that HyREX returns file names such as
@@ -457,17 +457,17 @@ arrive at the correct group name, \"mail.misc\"."
;; Namazu engine, see <URL:http://www.namazu.org/>
(defcustom nnir-namazu-program "namazu"
- "*Name of Namazu search executable."
+ "Name of Namazu search executable."
:type '(string)
:group 'nnir)
(defcustom nnir-namazu-index-directory (expand-file-name "~/Mail/namazu/")
- "*Index directory for Namazu."
+ "Index directory for Namazu."
:type '(directory)
:group 'nnir)
(defcustom nnir-namazu-additional-switches '()
- "*A list of strings, to be given as additional arguments to namazu.
+ "A list of strings, to be given as additional arguments to namazu.
The switches `-q', `-a', and `-s' are always used, very few other switches
make any sense in this context.
@@ -479,7 +479,7 @@ Instead, use this:
:group 'nnir)
(defcustom nnir-namazu-remove-prefix (concat (getenv "HOME") "/Mail/")
- "*The prefix to remove from each file name returned by Namazu
+ "The prefix to remove from each file name returned by Namazu
in order to get a group name (albeit with / instead of .).
For example, suppose that Namazu returns file names such as
@@ -492,13 +492,13 @@ arrive at the correct group name, \"mail.misc\"."
:group 'nnir)
(defcustom nnir-notmuch-program "notmuch"
- "*Name of notmuch search executable."
+ "Name of notmuch search executable."
:version "24.1"
:type '(string)
:group 'nnir)
(defcustom nnir-notmuch-additional-switches '()
- "*A list of strings, to be given as additional arguments to notmuch.
+ "A list of strings, to be given as additional arguments to notmuch.
Note that this should be a list. I.e., do NOT use the following:
(setq nnir-notmuch-additional-switches \"-i -w\") ; wrong
@@ -509,7 +509,7 @@ Instead, use this:
:group 'nnir)
(defcustom nnir-notmuch-remove-prefix (concat (getenv "HOME") "/Mail/")
- "*The prefix to remove from each file name returned by notmuch
+ "The prefix to remove from each file name returned by notmuch
in order to get a group name (albeit with / instead of .). This is a
regular expression.
@@ -563,7 +563,7 @@ needs the variables `nnir-namazu-program',
Add an entry here when adding a new search engine.")
(defcustom nnir-method-default-engines '((nnimap . imap) (nntp . gmane))
- "*Alist of default search engines keyed by server method."
+ "Alist of default search engines keyed by server method."
:version "24.1"
:group 'nnir
:type `(repeat (cons (choice (const nnimap) (const nntp) (const nnspool)
@@ -928,9 +928,10 @@ ready to be added to the list of search results."
;; Set group to dirnam without any leading dots or slashes,
;; and with all subsequent slashes replaced by dots
- (let ((group (gnus-replace-in-string
- (gnus-replace-in-string dirnam "^[./\\]" "" t)
- "[/\\]" "." t)))
+ (let ((group (replace-regexp-in-string
+ "[/\\]" "."
+ (replace-regexp-in-string "^[./\\]" "" dirnam nil t)
+ nil t)))
(vector (gnus-group-full-name group server)
(if (string-match "\\`nnmaildir:" (gnus-group-server server))
@@ -1340,9 +1341,10 @@ Tested with swish-e-2.0.1 on Windows NT 4.0."
;; eliminate all ".", "/", "\" from beginning. Always matches.
(string-match "^[./\\]*\\(.*\\)$" dirnam)
;; "/" -> "."
- (setq group (gnus-replace-in-string (match-string 1 dirnam) "/" "."))
+ (setq group (replace-regexp-in-string
+ "/" "." (match-string 1 dirnam)))
;; Windows "\\" -> "."
- (setq group (gnus-replace-in-string group "\\\\" "."))
+ (setq group (replace-regexp-in-string "\\\\" "." group))
(push (vector (gnus-group-full-name group server)
(string-to-number artno)
@@ -1414,7 +1416,7 @@ Tested with swish-e-2.0.1 on Windows NT 4.0."
(when (string-match prefix dirnam)
(setq dirnam (replace-match "" t t dirnam)))
(push (vector (gnus-group-full-name
- (gnus-replace-in-string dirnam "/" ".") server)
+ (replace-regexp-in-string "/" "." dirnam) server)
(string-to-number artno)
(string-to-number score))
artlist))
@@ -1612,9 +1614,9 @@ actually)."
group
(if (file-directory-p
(setq group
- (gnus-replace-in-string
- group
- "\\." "/" t)))
+ (replace-regexp-in-string
+ "\\." "/"
+ group nil t)))
group))))))
(unless group
(error "Cannot locate directory for group"))
@@ -1667,7 +1669,7 @@ actually)."
(server (cadr (gnus-server-to-method srv)))
(groupspec (mapconcat
(lambda (x)
- (if (gnus-string-match-p "gmane" x)
+ (if (string-match-p "gmane" x)
(format "group:%s" (gnus-group-short-name x))
(error "Can't search non-gmane groups: %s" x)))
groups " "))
@@ -1688,8 +1690,8 @@ actually)."
(mm-url-encode-www-form-urlencoded
`(("query" . ,search)
("HITSPERPAGE" . "999")))))
- (unless (featurep 'xemacs) (set-buffer-multibyte t))
- (mm-decode-coding-region (point-min) (point-max) 'utf-8)
+ (set-buffer-multibyte t)
+ (decode-coding-region (point-min) (point-max) 'utf-8)
(goto-char (point-min))
(forward-line 1)
(while (not (eobp))
@@ -1705,7 +1707,7 @@ actually)."
(string-to-number (match-string 2 xref)) xscore)
artlist)))))
(forward-line 1)))
- (apply 'vector (nreverse (mm-delete-duplicates artlist)))))
+ (apply 'vector (nreverse (delete-dups artlist)))))
;;; Util Code:
@@ -1787,7 +1789,7 @@ article came from is also searched."
(list (list (gnus-method-to-server
(gnus-find-method-for-group gnus-newsgroup-name)))))
(registry-group (and
- (gnus-bound-and-true-p 'gnus-registry-enabled)
+ (bound-and-true-p gnus-registry-enabled)
(car (gnus-registry-get-id-key
(mail-header-id header) 'group))))
(registry-server
@@ -1814,18 +1816,19 @@ article came from is also searched."
(if (eq (car method) 'nntp)
(while (not (eobp))
(ignore-errors
- (push (mm-string-as-unibyte
+ (push (string-as-unibyte
(gnus-group-full-name
(buffer-substring
(point)
(progn
(skip-chars-forward "^ \t")
- (point))) method))
+ (point)))
+ method))
groups))
(forward-line))
(while (not (eobp))
(ignore-errors
- (push (mm-string-as-unibyte
+ (push (string-as-unibyte
(if (eq (char-after) ?\")
(gnus-group-full-name (read cur) method)
(let ((p (point)) (name ""))
@@ -1859,7 +1862,7 @@ article came from is also searched."
(when (eq (car (gnus-find-method-for-group gnus-newsgroup-name)) 'nnir)
(setq gnus-summary-line-format
(or nnir-summary-line-format gnus-summary-line-format))
- (when (gnus-bound-and-true-p 'gnus-registry-enabled)
+ (when (bound-and-true-p gnus-registry-enabled)
(remove-hook 'gnus-summary-article-delete-hook 'gnus-registry-action t)
(remove-hook 'gnus-summary-article-move-hook 'gnus-registry-action t)
(remove-hook 'gnus-summary-article-expire-hook 'gnus-registry-action t)
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 3d4178d102..5495510d94 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -76,7 +76,7 @@
:group 'nnmail)
(defcustom nnmail-split-methods '(("mail.misc" ""))
- "*Incoming mail will be split according to this variable.
+ "Incoming mail will be split according to this variable.
If you'd like, for instance, one mail group for mail from the
\"4ad-l\" mailing list, one group for junk mail and one for everything
@@ -158,7 +158,7 @@ If nil, groups like \"mail.misc\" will end up in directories like
:type 'integer)
(defcustom nnmail-expiry-wait 7
- "*Expirable articles that are older than this will be expired.
+ "Expirable articles that are older than this will be expired.
This variable can either be a number (which will be interpreted as a
number of days) -- this doesn't have to be an integer. This variable
can also be `immediate' and `never'."
@@ -187,7 +187,7 @@ E.g.:
(function :format "%v" nnmail-)))
(defcustom nnmail-expiry-target 'delete
- "*Variable that says where expired messages should end up.
+ "Variable that says where expired messages should end up.
The default value is `delete' (which says to delete the messages),
but it can also be a string or a function. If it is a string, expired
messages end up in that group. If it is a function, the function is
@@ -246,12 +246,12 @@ If non-nil, also update the cache when copy or move articles."
;; Variable removed in No Gnus v0.7
(defcustom nnmail-resplit-incoming nil
- "*If non-nil, re-split incoming procmail sorted mail."
+ "If non-nil, re-split incoming procmail sorted mail."
:group 'nnmail-procmail
:type 'boolean)
(defcustom nnmail-scan-directory-mail-source-once nil
- "*If non-nil, scan all incoming procmail sorted mails once.
+ "If non-nil, scan all incoming procmail sorted mails once.
It scans low-level sorted spools even when not required."
:version "21.1"
:group 'nnmail-procmail
@@ -266,7 +266,7 @@ It scans low-level sorted spools even when not required."
(if (string-match "windows-nt" (symbol-name system-type))
'copy-file
'add-name-to-file)
- "*Function called to create a copy of a file.
+ "Function called to create a copy of a file.
This is `add-name-to-file' by default, which means that crossposts
will use hard links. If your file system doesn't allow hard
links, you could set this variable to `copy-file' instead."
@@ -279,7 +279,7 @@ links, you could set this variable to `copy-file' instead."
(if (eq system-type 'windows-nt)
'(nnheader-ms-strip-cr)
nil)
- "*Hook that will be run after the incoming mail has been transferred.
+ "Hook that will be run after the incoming mail has been transferred.
The incoming mail is moved from the specified spool file (which normally is
something like \"/usr/spool/mail/$user\") to the user's home
directory. This hook is called after the incoming mail box has been
@@ -355,47 +355,20 @@ discarded after running the split process."
:type 'hook)
(defcustom nnmail-spool-hook nil
- "*A hook called when a new article is spooled."
+ "A hook called when a new article is spooled."
:version "22.1"
:group 'nnmail
:type 'hook)
(defcustom nnmail-large-newsgroup 50
- "*The number of articles which indicates a large newsgroup or nil.
+ "The number of articles which indicates a large newsgroup or nil.
If the number of articles is greater than the value, verbose
messages will be shown to indicate the current status."
:group 'nnmail-various
:type '(choice (const :tag "infinite" nil)
(number :tag "count")))
-(define-widget 'nnmail-lazy 'default
- "Base widget for recursive data structures.
-
-This is copy of the `lazy' widget in Emacs 22.1 provided for compatibility."
- :format "%{%t%}: %v"
- :convert-widget 'widget-value-convert-widget
- :value-create (lambda (widget)
- (let ((value (widget-get widget :value))
- (type (widget-get widget :type)))
- (widget-put widget :children
- (list (widget-create-child-value
- widget (widget-convert type) value)))))
- :value-delete 'widget-children-value-delete
- :value-get (lambda (widget)
- (widget-value (car (widget-get widget :children))))
- :value-inline (lambda (widget)
- (widget-apply (car (widget-get widget :children))
- :value-inline))
- :default-get (lambda (widget)
- (widget-default-get
- (widget-convert (widget-get widget :type))))
- :match (lambda (widget value)
- (widget-apply (widget-convert (widget-get widget :type))
- :match value))
- :validate (lambda (widget)
- (widget-apply (car (widget-get widget :children)) :validate)))
-
-(define-widget 'nnmail-split-fancy 'nnmail-lazy
+(define-widget 'nnmail-split-fancy 'lazy
"Widget for customizing splits in the variable of the same name."
:tag "Split"
:type '(menu-choice :value (any ".*value.*" "misc")
@@ -516,12 +489,12 @@ Example:
(from . "from\\|sender\\|resent-from")
(nato . "to\\|cc\\|resent-to\\|resent-cc")
(naany . "from\\|to\\|cc\\|sender\\|resent-from\\|resent-to\\|resent-cc"))
- "*Alist of abbreviations allowed in `nnmail-split-fancy'."
+ "Alist of abbreviations allowed in `nnmail-split-fancy'."
:group 'nnmail-split
:type '(repeat (cons :format "%v" symbol regexp)))
(defcustom nnmail-message-id-cache-length 1000
- "*The approximate number of Message-IDs nnmail will keep in its cache.
+ "The approximate number of Message-IDs nnmail will keep in its cache.
If this variable is nil, no checking on duplicate messages will be
performed."
:group 'nnmail-duplicate
@@ -536,7 +509,7 @@ performed."
:type 'file)
(defcustom nnmail-treat-duplicates 'warn
- "*If non-nil, nnmail keep a cache of Message-IDs to discover mail duplicates.
+ "If non-nil, nnmail keep a cache of Message-IDs to discover mail duplicates.
Three values are valid: nil, which means that nnmail is not to keep a
Message-ID cache; `warn', which means that nnmail should insert extra
headers to warn the user about the duplication (this is the default);
@@ -628,15 +601,10 @@ using different case (i.e. mailing-list@domain vs Mailing-List@Domain)."
mm-text-coding-system
"Coding system used in reading inbox")
-(defvar nnmail-pathname-coding-system
- ;; This causes Emacs 22.2 and 22.3 to issue a useless warning.
- ;;(if (and (featurep 'xemacs) (featurep 'file-coding))
- (if (featurep 'xemacs)
- (if (featurep 'file-coding)
- ;; Work around a bug in many XEmacs 21.5 betas.
- ;; Cf. http://thread.gmane.org/gmane.emacs.gnus.general/68134
- (setq file-name-coding-system (coding-system-aliasee 'file-name))))
- "*Coding system for file name.")
+(defcustom nnmail-pathname-coding-system nil
+ "Coding system for file name."
+ :group 'nnmail-various
+ :type 'coding-system)
(defun nnmail-find-file (file)
"Insert FILE in server buffer safely."
@@ -697,15 +665,17 @@ nn*-request-list should have been called before calling this function."
(setq group (symbol-name group)))
(if (and (numberp (setq max (read buffer)))
(numberp (setq min (read buffer))))
- (push (list (mm-string-as-unibyte group) (cons min max))
+ (push (list (string-as-unibyte group) (cons min max))
group-assoc)))
(error nil))
(widen)
(forward-line 1))
group-assoc))
-(defvar nnmail-active-file-coding-system 'raw-text
- "*Coding system for active file.")
+(defcustom nnmail-active-file-coding-system 'raw-text
+ "Coding system for active file."
+ :group 'nnmail-various
+ :type 'coding-system)
(defun nnmail-save-active (group-assoc file-name)
"Save GROUP-ASSOC in ACTIVE-FILE."
@@ -1173,7 +1143,7 @@ FUNC will be called with the group name to determine the article number."
5 "Error in `nnmail-split-methods'; using `bogus' mail group: %S" error-info)
(sit-for 1)
'("bogus")))))
- (setq split (mm-delete-duplicates split))
+ (setq split (delete-dups split))
;; The article may be "cross-posted" to `junk'. What
;; to do? Just remove the `junk' spec. Don't really
;; see anything else to do...
@@ -1279,9 +1249,9 @@ Return the number of characters in the body."
(insert (format "Xref: %s" (system-name)))
(while group-alist
(insert (if (mm-multibyte-p)
- (mm-string-as-multibyte
+ (string-as-multibyte
(format " %s:%d" (caar group-alist) (cdar group-alist)))
- (mm-string-as-unibyte
+ (string-as-unibyte
(format " %s:%d" (caar group-alist) (cdar group-alist)))))
(setq group-alist (cdr group-alist)))
(insert "\n")))
@@ -1402,7 +1372,7 @@ See the documentation for the variable `nnmail-split-fancy' for details."
;; Builtin & operation.
((eq (car split) '&)
- (apply 'nconc (mapcar 'nnmail-split-it (cdr split))))
+ (mapcan 'nnmail-split-it (cdr split)))
;; Builtin | operation.
((eq (car split) '|)
@@ -1957,10 +1927,8 @@ If TIME is nil, then return the cutoff time for oldness instead."
((and (equal header 'to-from)
(or (string-match (cadr regexp-target-pair) from)
(and (string-match (cadr regexp-target-pair) to)
- (let* ((mail-dont-reply-to-names
- (message-dont-reply-to-names))
- (rmail-dont-reply-to-names ; obsolete since 24.1
- mail-dont-reply-to-names))
+ (let ((mail-dont-reply-to-names
+ (message-dont-reply-to-names)))
(equal (if (fboundp 'rmail-dont-reply-to)
(rmail-dont-reply-to from)
(mail-dont-reply-to from)) "")))))
@@ -2054,13 +2022,13 @@ If TIME is nil, then return the cutoff time for oldness instead."
(error "No current split history"))
(with-output-to-temp-buffer "*nnmail split history*"
(with-current-buffer standard-output
- (fundamental-mode)) ; for Emacs 20.4+
- (dolist (elem nnmail-split-history)
- (princ (mapconcat (lambda (ga)
- (concat (car ga) ":" (int-to-string (cdr ga))))
- elem
- ", "))
- (princ "\n"))))
+ (fundamental-mode))
+ (dolist (elem nnmail-split-history)
+ (princ (mapconcat (lambda (ga)
+ (concat (car ga) ":" (int-to-string (cdr ga))))
+ elem
+ ", "))
+ (princ "\n"))))
(defun nnmail-purge-split-history (group)
"Remove all instances of GROUP from `nnmail-split-history'."
diff --git a/lisp/gnus/nnmaildir.el b/lisp/gnus/nnmaildir.el
index 3d8926b692..21c83751e7 100644
--- a/lisp/gnus/nnmaildir.el
+++ b/lisp/gnus/nnmaildir.el
@@ -97,14 +97,14 @@ See `nnmaildir-flag-mark-mapping'."
(defun nnmaildir--ensure-suffix (filename)
"Ensure that FILENAME contains the suffix \":2,\"."
- (if (gnus-string-match-p ":2," filename)
+ (if (string-match-p ":2," filename)
filename
(concat filename ":2,")))
(defun nnmaildir--add-flag (flag suffix)
"Return a copy of SUFFIX where FLAG is set.
SUFFIX should start with \":2,\"."
- (unless (gnus-string-match-p "^:2," suffix)
+ (unless (string-match-p "^:2," suffix)
(error "Invalid suffix `%s'" suffix))
(let* ((flags (substring suffix 3))
(flags-as-list (append flags nil))
@@ -117,7 +117,7 @@ SUFFIX should start with \":2,\"."
(defun nnmaildir--remove-flag (flag suffix)
"Return a copy of SUFFIX where FLAG is cleared.
SUFFIX should start with \":2,\"."
- (unless (gnus-string-match-p "^:2," suffix)
+ (unless (string-match-p "^:2," suffix)
(error "Invalid suffix `%s'" suffix))
(let* ((flags (substring suffix 3))
(flags-as-list (append flags nil))
@@ -125,8 +125,8 @@ SUFFIX should start with \":2,\"."
(concat ":2," new-flags)))
(defvar nnmaildir-article-file-name nil
- "*The filename of the most recently requested article. This variable is set
-by nnmaildir-request-article.")
+ "The filename of the most recently requested article.
+This variable is set by `nnmaildir-request-article'.")
;; The filename of the article being moved/copied:
(defvar nnmaildir--file nil)
@@ -537,8 +537,8 @@ by nnmaildir-request-article.")
(prin1 (vector storage-version num msgid nov) (current-buffer))
(setq file (concat novfile ":"))
(nnmaildir--unlink file)
- (gmm-write-region (point-min) (point-max) file nil 'no-message nil
- 'excl))
+ (write-region (point-min) (point-max) file nil 'no-message nil
+ 'excl))
(rename-file file novfile 'replace)
(setf (nnmaildir--art-msgid article) msgid)
nov)))
@@ -656,13 +656,13 @@ by nnmaildir-request-article.")
(if (zerop n) 1 (1- (lsh 1 (1+ (logb n))))))
(defun nnmaildir--system-name ()
- (gnus-replace-in-string
- (gnus-replace-in-string
- (gnus-replace-in-string
- (system-name)
- "\\\\" "\\134" 'literal)
- "/" "\\057" 'literal)
- ":" "\\072" 'literal))
+ (replace-regexp-in-string
+ ":" "\\072"
+ (replace-regexp-in-string
+ "/" "\\057"
+ (replace-regexp-in-string "\\\\" "\\134" (system-name) nil 'literal)
+ nil 'literal)
+ nil 'literal))
(defun nnmaildir-request-type (_group &optional _article)
'mail)
@@ -848,11 +848,11 @@ by nnmaildir-request-article.")
(when (or
;; first look for marks in suffix, if it's valid...
(when (and (stringp suffix)
- (gnus-string-prefix-p ":2," suffix))
+ (string-prefix-p ":2," suffix))
(or
- (not (gnus-string-match-p
+ (not (string-match-p
(string (nnmaildir--mark-to-flag 'read)) suffix))
- (gnus-string-match-p
+ (string-match-p
(string (nnmaildir--mark-to-flag 'tick)) suffix)))
;; then look in marks directories
(not (file-exists-p (concat cdir prefix)))
@@ -955,8 +955,9 @@ by nnmaildir-request-article.")
pgname (nnmaildir--pgname nnmaildir--cur-server pgname)
group (symbol-value group)
ro (nnmaildir--param pgname 'read-only))
- (insert (gnus-replace-in-string
- (nnmaildir--grp-name group) " " "\\ " t)
+ (insert (replace-regexp-in-string
+ " " "\\ "
+ (nnmaildir--grp-name group) nil t)
" ")
(princ (nnmaildir--group-maxnum nnmaildir--cur-server group)
nntp-server-buffer)
@@ -985,7 +986,7 @@ by nnmaildir-request-article.")
(princ (nnmaildir--group-maxnum nnmaildir--cur-server group)
nntp-server-buffer)
(insert " "
- (gnus-replace-in-string gname " " "\\ " t)
+ (replace-regexp-in-string " " "\\ " gname nil t)
"\n")))))
'group)
@@ -1116,7 +1117,7 @@ by nnmaildir-request-article.")
(insert " ")
(princ (nnmaildir--group-maxnum nnmaildir--cur-server group)
nntp-server-buffer)
- (insert " " (gnus-replace-in-string gname " " "\\ " t) "\n")
+ (insert " " (replace-regexp-in-string " " "\\ " gname nil t) "\n")
t))))
(defun nnmaildir-request-create-group (gname &optional server _args)
@@ -1278,7 +1279,7 @@ by nnmaildir-request-article.")
(insert "\t" (nnmaildir--nov-get-beg nov) "\t"
(nnmaildir--art-msgid article) "\t"
(nnmaildir--nov-get-mid nov) "\tXref: nnmaildir "
- (gnus-replace-in-string gname " " "\\ " t) ":")
+ (replace-regexp-in-string " " "\\ " gname nil t) ":")
(princ num nntp-server-buffer)
(insert "\t" (nnmaildir--nov-get-end nov) "\n"))))
(catch 'return
@@ -1396,8 +1397,8 @@ by nnmaildir-request-article.")
(concat "File exists: " tmpfile))
(throw 'return nil))
(with-current-buffer buffer
- (gmm-write-region (point-min) (point-max) tmpfile nil 'no-message nil
- 'excl))
+ (write-region (point-min) (point-max) tmpfile nil 'no-message nil
+ 'excl))
(unix-sync) ;; no fsync :(
(rename-file tmpfile (concat (nnmaildir--cur dir) file suffix) 'replace)
t)))
@@ -1490,8 +1491,8 @@ by nnmaildir-request-article.")
(throw 'return nil))))
(condition-case nil (add-name-to-file nnmaildir--file tmpfile)
(error
- (gmm-write-region (point-min) (point-max) tmpfile nil 'no-message nil
- 'excl)
+ (write-region (point-min) (point-max) tmpfile nil 'no-message nil
+ 'excl)
(when (fboundp 'unix-sync)
(unix-sync)))) ;; no fsync :(
(nnheader-cancel-timer 24h)
diff --git a/lisp/gnus/nnmairix.el b/lisp/gnus/nnmairix.el
index d5fa4fa74b..128f912327 100644
--- a/lisp/gnus/nnmairix.el
+++ b/lisp/gnus/nnmairix.el
@@ -147,11 +147,6 @@
;;; === Keymaps
-(eval-when-compile
- (when (featurep 'xemacs)
- ;; The `kbd' macro requires that the `read-kbd-macro' macro is available.
- (require 'edmacro)))
-
;; Group mode
(defun nnmairix-group-mode-hook ()
"Nnmairix group mode keymap."
@@ -1635,7 +1630,7 @@ search in raw mode."
(defun nnmairix-determine-original-group-from-registry (mid)
"Try to determine original group for message-id MID from the registry."
- (when (gnus-bound-and-true-p 'gnus-registry-enabled)
+ (when (bound-and-true-p gnus-registry-enabled)
(unless (string-match "^<" mid)
(set mid (concat "<" mid)))
(unless (string-match ">$" mid)
diff --git a/lisp/gnus/nnmh.el b/lisp/gnus/nnmh.el
index c60e84567f..51048bb299 100644
--- a/lisp/gnus/nnmh.el
+++ b/lisp/gnus/nnmh.el
@@ -242,8 +242,8 @@ as unread by Gnus.")
(file-truename (file-name-as-directory
(expand-file-name nnmh-toplev))))
dir)
- (mm-string-to-multibyte ;Why? Isn't it multibyte already?
- (mm-encode-coding-string
+ (string-to-multibyte ;Why? Isn't it multibyte already?
+ (encode-coding-string
(nnheader-replace-chars-in-string
(substring dir (match-end 0))
?/ ?.)
diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
index 3350933f94..4976f25795 100644
--- a/lisp/gnus/nnml.el
+++ b/lisp/gnus/nnml.el
@@ -128,13 +128,13 @@ non-nil.")
"Return a decoded group name of GROUP on SERVER-OR-METHOD."
(if nnmail-group-names-not-encoded-p
group
- (mm-decode-coding-string
+ (decode-coding-string
group
(nnml-group-name-charset group server-or-method))))
(defun nnml-encoded-group-name (group &optional server-or-method)
"Return an encoded group name of GROUP on SERVER-OR-METHOD."
- (mm-encode-coding-string
+ (encode-coding-string
group
(nnml-group-name-charset group server-or-method)))
@@ -1077,8 +1077,7 @@ Use the nov database for the current group if available."
;; 1/ Move the article to a new file:
(let* ((oldfile (nnml-article-to-file old-number))
(newfile
- (gnus-replace-in-string
- oldfile
+ (replace-regexp-in-string
;; nnml-use-compressed-files might be any string, but
;; probably it's sufficient to take into account only
;; "\\.[a-z0-9]+". Note that we can't only use the
@@ -1087,7 +1086,8 @@ Use the nov database for the current group if available."
;; value.
(concat
"\\(" old-number-string "\\)\\(\\(\\.[a-z0-9]+\\)?\\)$")
- (concat new-number-string "\\2"))))
+ (concat new-number-string "\\2")
+ oldfile)))
(with-current-buffer nntp-server-buffer
(nnmail-find-file oldfile)
;; Update the Xref header in the article itself:
diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el
index c17a13c54c..68dabcb142 100644
--- a/lisp/gnus/nnrss.el
+++ b/lisp/gnus/nnrss.el
@@ -37,10 +37,11 @@
(require 'mm-url)
(require 'rfc2047)
(require 'mml)
-(eval-when-compile
- (ignore-errors
- (require 'xml)))
-(eval '(require 'xml))
+(require 'xml)
+
+(defgroup nnrss nil
+ "RSS access for Gnus."
+ :group 'gnus)
(nnoo-declare nnrss)
@@ -89,14 +90,16 @@ The arguments are (ENTRY GROUP ARTICLE).
ENTRY is the record of the current headline. GROUP is the group name.
ARTICLE is the article number of the current headline.")
-(defvar nnrss-file-coding-system mm-universal-coding-system
- "*Coding system used when reading and writing files.
+(defcustom nnrss-file-coding-system mm-universal-coding-system
+ "Coding system used when reading and writing files.
If you run Gnus with various versions of Emacsen, the value of this
variable should be the coding system that all those Emacsen support.
Note that you have to regenerate all the nnrss groups if you change
the value. Moreover, you should be patient even if you are made to
read the same articles twice, that arises for the difference of the
-versions of xml.el.")
+versions of xml.el."
+ :group 'nnrss
+ :type 'coding-system)
(defvar nnrss-compatible-encoding-alist
(delq nil (mapcar (lambda (elem)
@@ -114,11 +117,11 @@ for decoding when the cdr that the data specify is not available.")
;;; Interface functions
(defsubst nnrss-format-string (string)
- (gnus-replace-in-string string " *\n *" " "))
+ (replace-regexp-in-string " *\n *" " " string))
(defun nnrss-decode-group-name (group)
(if (and group (mm-coding-system-p 'utf-8))
- (setq group (mm-decode-coding-string group 'utf-8))
+ (setq group (decode-coding-string group 'utf-8))
group))
(deffoo nnrss-retrieve-headers (articles &optional group server fetch-old)
@@ -243,7 +246,6 @@ for decoding when the cdr that the data specify is not available.")
(max 1 (/ (* (window-width window) 7) 8))))
(fill-region (point) (point-max))
(goto-char (point-max))
- ;; XEmacs version of `fill-region' inserts newline.
(unless (bolp)
(insert "\n"))))
(when (or link enclosure)
@@ -295,7 +297,7 @@ for decoding when the cdr that the data specify is not available.")
(let ((rfc2047-encoding-type 'mime)
rfc2047-encode-max-chars)
(rfc2047-encode-string
- (gnus-replace-in-string group "[\t\n ]+" "_")))))
+ (replace-regexp-in-string "[\t\n ]+" "_" group)))))
(when nnrss-content-function
(funcall nnrss-content-function e group article))))
(cond
@@ -372,8 +374,6 @@ for decoding when the cdr that the data specify is not available.")
(nnoo-define-skeleton nnrss)
;;; Internal functions
-(eval-when-compile (defun xml-rpc-method-call (&rest args)))
-
(defun nnrss-get-encoding ()
"Return an encoding attribute specified in the current xml contents.
If `nnrss-compatible-encoding-alist' specifies the compatible encoding,
@@ -417,7 +417,7 @@ otherwise return nil."
;; Decode text according to the encoding attribute.
(when (setq cs (nnrss-get-encoding))
(insert (prog1
- (mm-decode-coding-string (buffer-string) cs)
+ (decode-coding-string (buffer-string) cs)
(erase-buffer)
(mm-enable-multibyte))))
(goto-char (point-min))
@@ -588,12 +588,11 @@ which RSS 2.0 allows."
"")
(defun nnrss-insert (url)
- (mm-with-unibyte-current-buffer
- (condition-case err
- (mm-url-insert url)
- (error (if (or debug-on-quit debug-on-error)
- (signal (car err) (cdr err))
- (message "nnrss: Failed to fetch %s" url))))))
+ (condition-case err
+ (mm-url-insert url)
+ (error (if (or debug-on-quit debug-on-error)
+ (signal (car err) (cdr err))
+ (message "nnrss: Failed to fetch %s" url)))))
(defun nnrss-decode-entities-string (string)
(if string
@@ -763,7 +762,7 @@ Read the file and attempt to subscribe to each Feed in the file."
Export subscriptions to a buffer in OPML Format."
(interactive)
(with-current-buffer (get-buffer-create "*OPML Export*")
- (mm-set-buffer-file-coding-system 'utf-8)
+ (set-buffer-file-coding-system 'utf-8)
(insert "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<!-- OPML generated by Emacs Gnus' nnrss.el -->\n"
"<opml version=\"1.1\">\n"
@@ -810,10 +809,11 @@ It is useful when `(setq nnrss-use-local t)'."
(nnrss-node-just-text node)
node))
(cleaned-text (if text
- (gnus-replace-in-string
- (gnus-replace-in-string
- text "^[\000-\037\177]+\\|^ +\\| +$" "")
- "\r\n" "\n"))))
+ (replace-regexp-in-string
+ "\r\n" "\n"
+ (replace-regexp-in-string
+ "^[\000-\037\177]+\\|^ +\\| +$" ""
+ text)))))
(if (string-equal "" cleaned-text)
nil
cleaned-text)))
@@ -959,6 +959,9 @@ Use Mark Pilgrim's `ultra-liberal rss locator'."
;; 4. check syndic8
(nnrss-find-rss-via-syndic8 url))))))))
+(declare-function xml-rpc-method-call "ext:xml-rpc"
+ (server-url method &rest params))
+
(defun nnrss-find-rss-via-syndic8 (url)
"Query syndic8 for the rss feeds it has for URL."
(if (not (locate-library "xml-rpc"))
diff --git a/lisp/gnus/nnspool.el b/lisp/gnus/nnspool.el
index 620b8acae0..9db68b15df 100644
--- a/lisp/gnus/nnspool.el
+++ b/lisp/gnus/nnspool.el
@@ -306,7 +306,7 @@ there.")
"\\([^ ]+\\) +\\([0-9]+\\)[0-9][0-9][0-9] "))
(zerop (forward-line -1))))
;; We require nnheader which requires gnus-util.
- (let ((seconds (gnus-float-time (date-to-time date)))
+ (let ((seconds (float-time (date-to-time date)))
groups)
;; Go through lines and add the latest groups to a list.
(while (and (looking-at "\\([^ ]+\\) +[0-9]+ ")
@@ -335,6 +335,7 @@ there.")
(save-excursion
(let* ((process-connection-type nil) ; t bugs out on Solaris
(inews-buffer (generate-new-buffer " *nnspool post*"))
+ (buf (current-buffer))
(proc
(condition-case err
(apply 'start-process "*nnspool inews*" inews-buffer
@@ -346,7 +347,11 @@ there.")
()
(nnheader-report 'nnspool "")
(set-process-sentinel proc 'nnspool-inews-sentinel)
- (mm-with-unibyte-current-buffer
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (insert-buffer-substring buf)
+ (encode-coding-region (point-min) (point-max)
+ nnspool-file-coding-system)
(process-send-region proc (point-min) (point-max)))
;; We slap a condition-case around this, because the process may
;; have exited already...
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index f56b04568c..38e7c6ecbb 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -25,12 +25,6 @@
;;; Code:
-(eval-and-compile
- ;; In Emacs 24, `open-protocol-stream' is an autoloaded alias for
- ;; `make-network-stream'.
- (unless (fboundp 'open-protocol-stream)
- (require 'proto-stream)))
-
(require 'nnheader)
(require 'nnoo)
(require 'gnus-util)
@@ -244,8 +238,7 @@ server there that you can connect to. See also
(defvoo nntp-connection-timeout nil
"*Number of seconds to wait before an nntp connection times out.
-If this variable is nil, which is the default, no timers are set.
-NOTE: This variable is never seen to work in Emacs 20 and XEmacs 21.")
+If this variable is nil, which is the default, no timers are set.")
(defvoo nntp-prepare-post-hook nil
"*Hook run just before posting an article. It is supposed to be used
@@ -259,8 +252,10 @@ update their active files often, this can help.")
;;; Internal variables.
(defvoo nntp-retrieval-in-progress nil)
-(defvar nntp-record-commands nil
- "*If non-nil, nntp will record all commands in the \"*nntp-log*\" buffer.")
+(defcustom nntp-record-commands nil
+ "If non-nil, nntp will record all commands in the \"*nntp-log*\" buffer."
+ :group 'nntp
+ :type 'boolean)
(defvar nntp-have-messaged nil)
@@ -344,16 +339,14 @@ retried once before actually displaying the error report."
(defmacro nntp-copy-to-buffer (buffer start end)
"Copy string from unibyte current buffer to multibyte buffer."
- (if (featurep 'xemacs)
- `(copy-to-buffer ,buffer ,start ,end)
- `(let ((string (buffer-substring ,start ,end)))
- (with-current-buffer ,buffer
- (erase-buffer)
- (insert (if enable-multibyte-characters
- (mm-string-to-multibyte string)
- string))
- (goto-char (point-min))
- nil))))
+ `(let ((string (buffer-substring ,start ,end)))
+ (with-current-buffer ,buffer
+ (erase-buffer)
+ (insert (if enable-multibyte-characters
+ (string-to-multibyte string)
+ string))
+ (goto-char (point-min))
+ nil)))
(defsubst nntp-wait-for (process wait-for buffer &optional decode discard)
"Wait for WAIT-FOR to arrive from PROCESS."
@@ -1269,7 +1262,7 @@ If SEND-IF-FORCE, only send authinfo to the server if the
(nntp-open-ssl-stream tls)
(nntp-open-tls-stream tls))))
(if (assoc nntp-open-connection-function map)
- (open-protocol-stream
+ (open-network-stream
"nntpd" pbuffer nntp-address nntp-port-number
:type (cadr (assoc nntp-open-connection-function map))
:end-of-command "^\\([2345]\\|[.]\\).*\n"
@@ -1301,13 +1294,11 @@ If SEND-IF-FORCE, only send authinfo to the server if the
(nntp-kill-buffer pbuffer))
(when (and (buffer-name pbuffer)
process)
- (when (and (fboundp 'set-network-process-option) ;; Unavailable in XEmacs.
- (fboundp 'process-type) ;; Emacs 22 doesn't provide it.
- (eq (process-type process) 'network))
+ (when (eq (process-type process) 'network)
;; Use TCP-keepalive so that connections that pass through a NAT router
;; don't hang when left idle.
(set-network-process-option process :keepalive t))
- (gnus-set-process-query-on-exit-flag process nil)
+ (set-process-query-on-exit-flag process nil)
(if (and (nntp-wait-for process "^2.*\n" buffer nil t)
(memq (process-status process) '(open run)))
(prog1
diff --git a/lisp/gnus/nnweb.el b/lisp/gnus/nnweb.el
index 925f65f8dd..7fc4464a06 100644
--- a/lisp/gnus/nnweb.el
+++ b/lisp/gnus/nnweb.el
@@ -103,10 +103,9 @@ Valid types include `google', `dejanews', and `gmane'.")
(with-current-buffer nntp-server-buffer
(erase-buffer)
(let (article header)
- (mm-with-unibyte-current-buffer
- (while (setq article (pop articles))
- (when (setq header (cadr (assq article nnweb-articles)))
- (nnheader-insert-nov header))))
+ (while (setq article (pop articles))
+ (when (setq header (cadr (assq article nnweb-articles)))
+ (nnheader-insert-nov header)))
'nov)))
(deffoo nnweb-request-scan (&optional group server)
@@ -153,8 +152,7 @@ Valid types include `google', `dejanews', and `gmane'.")
(let* ((header (cadr (assq article nnweb-articles)))
(url (and header (mail-header-xref header))))
(when (or (and url
- (mm-with-unibyte-current-buffer
- (mm-url-insert url)))
+ (mm-url-insert url))
(and (stringp article)
(nnweb-definition 'id t)
(let ((fetch (nnweb-definition 'id))
@@ -164,8 +162,7 @@ Valid types include `google', `dejanews', and `gmane'.")
(when (and fetch art)
(setq url (format fetch
(mm-url-form-encode-xwfu art)))
- (mm-with-unibyte-current-buffer
- (mm-url-insert url))
+ (mm-url-insert url)
(if (nnweb-definition 'reference t)
(setq article
(funcall (nnweb-definition
@@ -215,17 +212,16 @@ Valid types include `google', `dejanews', and `gmane'.")
(defun nnweb-read-overview (group)
"Read the overview of GROUP and build the map."
(when (file-exists-p (nnweb-overview-file group))
- (mm-with-unibyte-buffer
- (nnheader-insert-file-contents (nnweb-overview-file group))
- (goto-char (point-min))
- (let (header)
- (while (not (eobp))
- (setq header (nnheader-parse-nov))
- (forward-line 1)
- (push (list (mail-header-number header)
- header (mail-header-xref header))
- nnweb-articles)
- (nnweb-set-hashtb header (car nnweb-articles)))))))
+ (nnheader-insert-file-contents (nnweb-overview-file group))
+ (goto-char (point-min))
+ (let (header)
+ (while (not (eobp))
+ (setq header (nnheader-parse-nov))
+ (forward-line 1)
+ (push (list (mail-header-number header)
+ header (mail-header-xref header))
+ nnweb-articles)
+ (nnweb-set-hashtb header (car nnweb-articles))))))
(defun nnweb-write-overview (group)
"Write the overview file for GROUP."
@@ -386,8 +382,7 @@ Valid types include `google', `dejanews', and `gmane'.")
(setq nnweb-articles
(nconc nnweb-articles map))
(when (setq header (cadar map))
- (mm-with-unibyte-current-buffer
- (mm-url-insert (mail-header-xref header)))
+ (mm-url-insert (mail-header-xref header))
(caar map))))
(defun nnweb-google-create-mapping ()
@@ -513,8 +508,8 @@ Valid types include `google', `dejanews', and `gmane'.")
;;("TOPDOC" . "1000")
))))
(setq buffer-file-name nil)
- (unless (featurep 'xemacs) (set-buffer-multibyte t))
- (mm-decode-coding-region (point-min) (point-max) 'utf-8)
+ (set-buffer-multibyte t)
+ (decode-coding-region (point-min) (point-max) 'utf-8)
t)
(defun nnweb-gmane-identity (url)
diff --git a/lisp/gnus/score-mode.el b/lisp/gnus/score-mode.el
index 8413f227e5..5ae59c3424 100644
--- a/lisp/gnus/score-mode.el
+++ b/lisp/gnus/score-mode.el
@@ -28,14 +28,20 @@
(require 'mm-util) ; for mm-universal-coding-system
(require 'gnus-util) ; for gnus-pp, gnus-run-mode-hooks
-(defvar gnus-score-edit-done-hook nil
- "*Hook run at the end of closing the score buffer.")
-
-(defvar gnus-score-mode-hook nil
- "*Hook run in score mode buffers.")
-
-(defvar gnus-score-menu-hook nil
- "*Hook run after creating the score mode menu.")
+(defcustom gnus-score-edit-done-hook nil
+ "Hook run at the end of closing the score buffer."
+ :group 'gnus-score
+ :type 'hook)
+
+(defcustom gnus-score-mode-hook nil
+ "Hook run in score mode buffers."
+ :group 'gnus-score
+ :type 'hook)
+
+(defcustom gnus-score-menu-hook nil
+ "Hook run after creating the score mode menu."
+ :group 'gnus-score
+ :type 'hook)
(defvar gnus-score-edit-exit-function nil
"Function run on exit from the score buffer.")
diff --git a/lisp/gnus/smiley.el b/lisp/gnus/smiley.el
index 403447f396..1ea4c1e51d 100644
--- a/lisp/gnus/smiley.el
+++ b/lisp/gnus/smiley.el
@@ -58,19 +58,17 @@
(defvar smiley-data-directory)
(defcustom smiley-style
- (if (or (and (fboundp 'face-attribute)
- ;; In batch mode, attributes can be unspecified.
- (condition-case nil
- (>= (face-attribute 'default :height) 160)
- (error nil)))
- (and (fboundp 'face-height)
- (>= (face-height 'default) 14)))
+ (if (and (fboundp 'face-attribute)
+ ;; In batch mode, attributes can be unspecified.
+ (condition-case nil
+ (>= (face-attribute 'default :height) 160)
+ (error nil)))
'medium
'low-color)
"Smiley style."
- :type '(choice (const :tag "small, 3 colors" low-color) ;; 13x14
- (const :tag "medium, ~10 colors" medium) ;; 16x16
- (const :tag "dull, grayscale" grayscale));; 14x14
+ :type '(choice (const :tag "small, 3 colors" low-color) ;; 13x14
+ (const :tag "medium, ~10 colors" medium) ;; 16x16
+ (const :tag "dull, grayscale" grayscale)) ;; 14x14
:set (lambda (symbol value)
(set-default symbol value)
(setq smiley-data-directory (smiley-directory))
@@ -94,7 +92,7 @@ is nil, use `smiley-style'."
((eq smiley-style 'grayscale) "/grayscale")))))
(defcustom smiley-data-directory (smiley-directory)
- "*Location of the smiley faces files."
+ "Location of the smiley faces files."
:set (lambda (symbol value)
(set-default symbol value)
(smiley-update-cache))
@@ -118,7 +116,7 @@ is nil, use `smiley-style'."
("\\(:-D\\)\\W" 1 "grin")
;; "smile" must be come after "evil"
("\\(\\^?:-?)\\)\\W" 1 "smile"))
- "*A list of regexps to map smilies to images.
+ "A list of regexps to map smilies to images.
The elements are (REGEXP MATCH IMAGE), where MATCH is the submatch in
regexp to replace with IMAGE. IMAGE is the name of an image file in
`smiley-data-directory'."
@@ -139,7 +137,7 @@ regexp to replace with IMAGE. IMAGE is the name of an image file in
(when (gnus-image-type-available-p 'gif)
(push "gif" types))
types)
- "*List of suffixes on smiley file names to try."
+ "List of suffixes on smiley file names to try."
:version "24.1"
:type '(repeat string)
:group 'smiley)
@@ -179,7 +177,7 @@ regexp to replace with IMAGE. IMAGE is the name of an image file in
"Replace in the region `smiley-regexp-alist' matches with corresponding images.
A list of images is returned."
(interactive "r")
- (when (gnus-graphic-display-p)
+ (when (display-graphic-p)
(unless smiley-cached-regexp-alist
(smiley-update-cache))
(save-excursion
diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el
index d1077a96fc..888974e140 100644
--- a/lisp/gnus/smime.el
+++ b/lisp/gnus/smime.el
@@ -120,31 +120,16 @@
(require 'dig)
-(if (locate-library "password-cache")
- (require 'password-cache)
- (require 'password))
+(require 'password-cache)
(eval-when-compile (require 'cl))
-(eval-and-compile
- (cond
- ((fboundp 'replace-in-string)
- (defalias 'smime-replace-in-string 'replace-in-string))
- ((fboundp 'replace-regexp-in-string)
- (defun smime-replace-in-string (string regexp newtext &optional literal)
- "Replace all matches for REGEXP with NEWTEXT in STRING.
-If LITERAL is non-nil, insert NEWTEXT literally. Return a new
-string containing the replacements.
-
-This is a compatibility function for different Emacsen."
- (replace-regexp-in-string regexp newtext string nil literal)))))
-
(defgroup smime nil
"S/MIME configuration."
:group 'mime)
(defcustom smime-keys nil
- "*Map mail addresses to a file containing Certificate (and private key).
+ "Map mail addresses to a file containing Certificate (and private key).
The file is assumed to be in PEM format. You can also associate additional
certificates to be sent with every message to each address."
:type '(repeat (list (string :tag "Mail address")
@@ -154,7 +139,7 @@ certificates to be sent with every message to each address."
:group 'smime)
(defcustom smime-CA-directory nil
- "*Directory containing certificates for CAs you trust.
+ "Directory containing certificates for CAs you trust.
Directory should contain files (in PEM format) named to the X.509
hash of the certificate. This can be done using OpenSSL such as:
@@ -167,7 +152,7 @@ certificate."
:group 'smime)
(defcustom smime-CA-file nil
- "*Files containing certificates for CAs you trust.
+ "Files containing certificates for CAs you trust.
File should contain certificates in PEM format."
:version "22.1"
:type '(choice (const :tag "none" nil)
@@ -175,7 +160,7 @@ File should contain certificates in PEM format."
:group 'smime)
(defcustom smime-certificate-directory "~/Mail/certs/"
- "*Directory containing other people's certificates.
+ "Directory containing other people's certificates.
It should contain files named to the X.509 hash of the certificate,
and the files themselves should be in PEM format."
;The S/MIME library provide simple functionality for fetching
@@ -189,14 +174,14 @@ and the files themselves should be in PEM format."
(eq 0 (call-process "openssl" nil nil nil "version"))
(error nil))
"openssl")
- "*Name of OpenSSL binary."
+ "Name of OpenSSL binary."
:type 'string
:group 'smime)
;; OpenSSL option to select the encryption cipher
(defcustom smime-encrypt-cipher "-des3"
- "*Cipher algorithm used for encryption."
+ "Cipher algorithm used for encryption."
:version "22.1"
:type '(choice (const :tag "Triple DES" "-des3")
(const :tag "DES" "-des")
@@ -206,7 +191,7 @@ and the files themselves should be in PEM format."
:group 'smime)
(defcustom smime-crl-check nil
- "*Check revocation status of signers certificate using CRLs.
+ "Check revocation status of signers certificate using CRLs.
Enabling this will have OpenSSL check the signers certificate
against a certificate revocation list (CRL).
@@ -227,7 +212,7 @@ At least OpenSSL version 0.9.7 is required for this to work."
:group 'smime)
(defcustom smime-dns-server nil
- "*DNS server to query certificates from.
+ "DNS server to query certificates from.
If nil, use system defaults."
:version "22.1"
:type '(choice (const :tag "System defaults")
@@ -244,21 +229,6 @@ must be set in `ldap-host-parameters-alist'."
(defvar smime-details-buffer "*OpenSSL output*")
-;; Use mm-util?
-(eval-and-compile
- (defalias 'smime-make-temp-file
- (if (fboundp 'make-temp-file)
- 'make-temp-file
- (lambda (prefix &optional dir-flag) ;; Simple implementation
- (expand-file-name
- (make-temp-name prefix)
- (if (fboundp 'temp-directory)
- (temp-directory)
- temporary-file-directory))))))
-
-;; Password dialog function
-(declare-function password-read-and-add "password-cache" (prompt &optional key))
-
(defun smime-ask-passphrase (&optional cache-key)
"Asks the passphrase to unlock the secret key.
If `cache-key' and `password-cache' is non-nil then cache the
@@ -301,7 +271,7 @@ key and certificate itself."
(keyfile (or (car-safe keyfile) keyfile))
(buffer (generate-new-buffer " *smime*"))
(passphrase (smime-ask-passphrase (expand-file-name keyfile)))
- (tmpfile (smime-make-temp-file "smime")))
+ (tmpfile (make-temp-file "smime")))
(if passphrase
(setenv "GNUS_SMIME_PASSPHRASE" passphrase))
(prog1
@@ -335,7 +305,7 @@ have proper MIME tags. CERTFILES is a list of filenames, each file
is expected to contain of a PEM encoded certificate."
(smime-new-details-buffer)
(let ((buffer (generate-new-buffer " *smime*"))
- (tmpfile (smime-make-temp-file "smime")))
+ (tmpfile (make-temp-file "smime")))
(prog1
(when (prog1
(apply 'smime-call-openssl-region b e (list buffer tmpfile)
@@ -431,7 +401,7 @@ in the buffer specified by `smime-details-buffer'."
(smime-new-details-buffer)
(let ((buffer (generate-new-buffer " *smime*"))
CAs (passphrase (smime-ask-passphrase (expand-file-name keyfile)))
- (tmpfile (smime-make-temp-file "smime")))
+ (tmpfile (make-temp-file "smime")))
(if passphrase
(setenv "GNUS_SMIME_PASSPHRASE" passphrase))
(if (prog1
@@ -588,13 +558,9 @@ A string or a list of strings is returned."
"Get certificate for MAIL from the ldap server at HOST."
(let ((ldapresult
(funcall
- (if (featurep 'xemacs)
- (progn
- (require 'smime-ldap)
- 'smime-ldap-search)
- (progn
- (require 'ldap)
- 'ldap-search))
+ (progn
+ (require 'ldap)
+ 'ldap-search)
(concat "mail=" mail)
host '("userCertificate") nil))
(retbuf (generate-new-buffer (format "*certificate for %s*" mail)))
@@ -611,11 +577,11 @@ A string or a list of strings is returned."
(string= (substring (cadaar ldapresult) 0 3)
"MII"))
(setq cert
- (smime-replace-in-string
- (cadaar ldapresult)
+ (replace-regexp-in-string
(concat "\\(\n\\|\r\\|-----BEGIN CERTIFICATE-----\\|"
"-----END CERTIFICATE-----\\)")
- "" t))
+ ""
+ (cadaar ldapresult) nil t))
(setq cert (base64-encode-string (cadaar ldapresult) t)))
(insert "-----BEGIN CERTIFICATE-----\n")
(let ((i 0) (len (length cert)))
diff --git a/lisp/gnus/spam-report.el b/lisp/gnus/spam-report.el
index 0086dd1479..88854e0425 100644
--- a/lisp/gnus/spam-report.el
+++ b/lisp/gnus/spam-report.el
@@ -162,13 +162,13 @@ submitted at once. Internal variable.")
rpt-host
(concat
"/"
- (gnus-replace-in-string
- (gnus-replace-in-string
- (gnus-replace-in-string
- (mail-header-xref (gnus-summary-article-header article))
- "/raw" ":silent")
- "^.*article.gmane.org/" "")
- "/" ":"))))
+ (replace-regexp-in-string
+ "/" ":"
+ (replace-regexp-in-string
+ "^.*article.gmane.org/" ""
+ (replace-regexp-in-string
+ "/raw" ":silent"
+ (mail-header-xref (gnus-summary-article-header article))))))))
(spam-report-gmane-use-article-number
(spam-report-url-ping
rpt-host
@@ -207,8 +207,8 @@ submitted at once. Internal variable.")
(when host
(when (string-equal "permalink.gmane.org" host)
(setq host rpt-host)
- (setq report (gnus-replace-in-string
- report "/\\([0-9]+\\)$" ":\\1")))
+ (setq report (replace-regexp-in-string "/\\([0-9]+\\)$" ":\\1"
+ report)))
(setq url (format "http://%s%s" host report)))
(if (not (and host report url))
(gnus-message
@@ -227,7 +227,7 @@ the function specified by `spam-report-url-ping-function'."
(defcustom spam-report-user-mail-address
(and (stringp user-mail-address)
- (gnus-replace-in-string user-mail-address "@" "<at>"))
+ (replace-regexp-in-string "@" "<at>" user-mail-address))
"Mail address of this user used for spam reports to Gmane.
This is initialized based on `user-mail-address'."
:type '(choice string
@@ -255,7 +255,7 @@ This is initialized based on `user-mail-address'."
80))
(error "Could not open connection to %s" host))
(set-marker (process-mark tcp-connection) (point-min))
- (gnus-set-process-query-on-exit-flag tcp-connection nil)
+ (set-process-query-on-exit-flag tcp-connection nil)
(process-send-string
tcp-connection
(format "GET %s HTTP/1.1\nUser-Agent: %s\nHost: %s\n\n"
@@ -297,8 +297,7 @@ symbol `ask', query before flushing the queue file."
(re-search-forward
"http://\\([^/]+\\)\\(/.*\\) *$" (point-at-eol) t))
(let ((spam-report-gmane-wait
- (zerop (% (mm-line-number-at-pos)
- spam-report-gmane-max-requests))))
+ (zerop (% (line-number-at-pos) spam-report-gmane-max-requests))))
(gnus-message 6 "Reporting %s%s..."
(match-string 1) (match-string 2))
(funcall spam-report-url-ping-function
@@ -307,7 +306,7 @@ symbol `ask', query before flushing the queue file."
(if (or (eq keep nil)
(and (eq keep 'ask)
(y-or-n-p
- (gnus-format-message
+ (format-message
"Flush requests from `%s'? " (current-buffer)))))
(progn
(gnus-message 7 "Flushing request file `%s'"
diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el
index afcc54137d..23b4556c75 100644
--- a/lisp/gnus/spam-stat.el
+++ b/lisp/gnus/spam-stat.el
@@ -493,18 +493,6 @@ where DIFF is the difference between SCORE and 0.5."
(setcdr (nthcdr 14 result) nil)
result))
-(eval-when-compile
- (defmacro spam-stat-called-interactively-p (kind)
- (condition-case nil
- (progn
- (eval '(called-interactively-p 'any))
- ;; Emacs >=23.2
- `(called-interactively-p ,kind))
- ;; Emacs <23.2
- (wrong-number-of-arguments '(called-interactively-p))
- ;; XEmacs
- (void-function '(interactive-p)))))
-
(defun spam-stat-score-buffer ()
"Return a score describing the spam-probability for this buffer.
Add user supplied modifications if supplied."
@@ -522,7 +510,7 @@ Add user supplied modifications if supplied."
(error nil)))
(ans
(if score1s (+ score0 score1s) score0)))
- (when (spam-stat-called-interactively-p 'any)
+ (when (called-interactively-p 'any)
(message "%S" ans))
ans))
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index ab0584fdcf..d3224004f1 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -1199,19 +1199,19 @@ Note this has to be fast."
(if header-content
(cond
((eq header 'X-Spam-Status)
- (string-to-number (gnus-replace-in-string
- header-content
+ (string-to-number (replace-regexp-in-string
spam-spamassassin-score-regexp
- "\\1")))
+ "\\1"
+ header-content)))
;; for CRM checking, it's probably faster to just do the string match
((string-match "( pR: \\([0-9.-]+\\)" header-content)
(- (string-to-number (match-string 1 header-content))))
((eq header 'X-Bogosity)
- (string-to-number (gnus-replace-in-string
- (gnus-replace-in-string
- header-content
- ".*spamicity=" "")
- ",.*" "")))
+ (string-to-number (replace-regexp-in-string
+ ",.*" ""
+ (replace-regexp-in-string
+ ".*spamicity=" ""
+ header-content))))
(t nil))
nil)))
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 26d8839f7c..e4e23330e3 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -34,6 +34,7 @@
(require 'cl-lib)
(require 'help-mode)
+(require 'radix-tree)
(defvar help-fns-describe-function-functions nil
"List of functions to run in help buffer in `describe-function'.
@@ -43,6 +44,61 @@ The functions will receive the function name as argument.")
;; Functions
+(defvar help-definition-prefixes nil
+ ;; FIXME: We keep `definition-prefixes' as a hash-table so as to
+ ;; avoid pre-loading radix-tree and because it takes slightly less
+ ;; memory. But when we use this table it's more efficient to
+ ;; represent it as a radix tree, since the main operation is to do
+ ;; `radix-tree-prefixes'. Maybe we should just bite the bullet and
+ ;; use a radix tree for `definition-prefixes' (it's not *that*
+ ;; costly, really).
+ "Radix-tree representation replacing `definition-prefixes'.")
+
+(defun help-definition-prefixes ()
+ "Return the up-to-date radix-tree form of `definition-prefixes'."
+ (when (> (hash-table-count definition-prefixes) 0)
+ (maphash (lambda (prefix files)
+ (let ((old (radix-tree-lookup help-definition-prefixes prefix)))
+ (setq help-definition-prefixes
+ (radix-tree-insert help-definition-prefixes
+ prefix (append old files)))))
+ definition-prefixes)
+ (clrhash definition-prefixes))
+ help-definition-prefixes)
+
+(defun help--loaded-p (file)
+ "Try and figure out if FILE has already been loaded."
+ (or (let ((feature (intern-soft file)))
+ (and feature (featurep feature)))
+ (let* ((re (load-history-regexp file))
+ (done nil))
+ (dolist (x load-history)
+ (if (string-match-p re (car x)) (setq done t)))
+ done)))
+
+(defun help--load-prefixes (prefixes)
+ (pcase-dolist (`(,prefix . ,files) prefixes)
+ (setq help-definition-prefixes
+ (radix-tree-insert help-definition-prefixes prefix nil))
+ (dolist (file files)
+ ;; FIXME: Should we scan help-definition-prefixes to remove
+ ;; other prefixes of the same file?
+ ;; FIXME: this regexp business is not good enough: for file
+ ;; `toto', it will say `toto' is loaded when in reality it was
+ ;; just cedet/semantic/toto that has been loaded.
+ (unless (help--loaded-p file)
+ (load file 'noerror 'nomessage)))))
+
+(defun help--symbol-completion-table (string pred action)
+ (let ((prefixes (radix-tree-prefixes (help-definition-prefixes) string)))
+ (help--load-prefixes prefixes))
+ (let ((prefix-completions
+ (mapcar #'intern (all-completions string definition-prefixes))))
+ (complete-with-action action obarray string
+ (if pred (lambda (sym)
+ (or (funcall pred sym)
+ (memq sym prefix-completions)))))))
+
(defvar describe-function-orig-buffer nil
"Buffer that was current when `describe-function' was invoked.
Functions on `help-fns-describe-function-functions' can use this
@@ -58,8 +114,9 @@ to get buffer-local values.")
(setq val (completing-read (if fn
(format "Describe function (default %s): " fn)
"Describe function: ")
- obarray 'fboundp t nil nil
- (and fn (symbol-name fn))))
+ #'help--symbol-completion-table
+ #'fboundp
+ t nil nil (and fn (symbol-name fn))))
(list (if (equal val "")
fn (intern val)))))
(or (and function (symbolp function))
@@ -515,13 +572,17 @@ FILE is the file where FUNCTION was probably defined."
(aliased (or (symbolp def)
;; Advised & aliased function.
(and advised (symbolp real-function)
- (not (eq 'autoload (car-safe def))))))
+ (not (eq 'autoload (car-safe def))))
+ (and (subrp def)
+ (not (string= (subr-name def)
+ (symbol-name function))))))
(real-def (cond
- (aliased (let ((f real-function))
- (while (and (fboundp f)
- (symbolp (symbol-function f)))
- (setq f (symbol-function f)))
- f))
+ ((and aliased (not (subrp def)))
+ (let ((f real-function))
+ (while (and (fboundp f)
+ (symbolp (symbol-function f)))
+ (setq f (symbol-function f)))
+ f))
((subrp def) (intern (subr-name def)))
(t def)))
(sig-key (if (subrp def)
@@ -543,14 +604,14 @@ FILE is the file where FUNCTION was probably defined."
;; Print what kind of function-like object FUNCTION is.
(princ (cond ((or (stringp def) (vectorp def))
"a keyboard macro")
- ((subrp def)
- (if (eq 'unevalled (cdr (subr-arity def)))
- (concat beg "special form")
- (concat beg "built-in function")))
;; Aliases are Lisp functions, so we need to check
;; aliases before functions.
(aliased
(format-message "an alias for `%s'" real-def))
+ ((subrp def)
+ (if (eq 'unevalled (cdr (subr-arity def)))
+ (concat beg "special form")
+ (concat beg "built-in function")))
((autoloadp def)
(format "%s autoloaded %s"
(if (commandp def) "an interactive" "an")
@@ -701,17 +762,23 @@ it is displayed along with the global value."
(interactive
(let ((v (variable-at-point))
(enable-recursive-minibuffers t)
+ (orig-buffer (current-buffer))
val)
- (setq val (completing-read (if (symbolp v)
- (format
- "Describe variable (default %s): " v)
- "Describe variable: ")
- obarray
- (lambda (vv)
- (or (get vv 'variable-documentation)
- (and (boundp vv) (not (keywordp vv)))))
- t nil nil
- (if (symbolp v) (symbol-name v))))
+ (setq val (completing-read
+ (if (symbolp v)
+ (format
+ "Describe variable (default %s): " v)
+ "Describe variable: ")
+ #'help--symbol-completion-table
+ (lambda (vv)
+ ;; In case the variable only exists in the buffer
+ ;; the command we switch back to that buffer before
+ ;; we examine the variable.
+ (with-current-buffer orig-buffer
+ (or (get vv 'variable-documentation)
+ (and (boundp vv) (not (keywordp vv))))))
+ t nil nil
+ (if (symbolp v) (symbol-name v))))
(list (if (equal val "")
v (intern val)))))
(let (file-name)
@@ -760,9 +827,8 @@ it is displayed along with the global value."
(unless valvoid
(with-current-buffer standard-output
(setq val-start-pos (point))
- (princ "value is ")
- (let ((from (point))
- (line-beg (line-beginning-position))
+ (princ "value is")
+ (let ((line-beg (line-beginning-position))
(print-rep
(let ((rep
(let ((print-quoted t))
@@ -771,17 +837,17 @@ it is displayed along with the global value."
(format-message "`%s'" rep)
rep))))
(if (< (+ (length print-rep) (point) (- line-beg)) 68)
- (insert print-rep)
+ (insert " " print-rep)
(terpri)
(pp val)
- (if (< (point) (+ 68 (line-beginning-position 0)))
- (delete-region from (1+ from))
- (delete-region (1- from) from)))
+ ;; Remove trailing newline.
+ (delete-char -1))
(let* ((sv (get variable 'standard-value))
(origval (and (consp sv)
(condition-case nil
(eval (car sv))
- (error :help-eval-error)))))
+ (error :help-eval-error))))
+ from)
(when (and (consp sv)
(not (equal origval val))
(not (equal origval :help-eval-error)))
@@ -912,29 +978,35 @@ if it is given a local binding.\n"))))
(buffer-file-name buffer)))
(dir-locals-find-file
(buffer-file-name buffer))))
- (dir-file t))
+ (is-directory nil))
(princ (substitute-command-keys
" This variable's value is directory-local"))
- (if (null file)
- (princ ".\n")
- (princ ", set ")
- (if (consp file) ; result from cache
- ;; If the cache element has an mtime, we
- ;; assume it came from a file.
- (if (nth 2 file)
- (setq file (expand-file-name
- dir-locals-file (car file)))
- ;; Otherwise, assume it was set directly.
- (setq file (car file)
- dir-file nil)))
- (princ (substitute-command-keys
- (if dir-file
- "by the file\n `"
- "for the directory\n `")))
+ (when (consp file) ; result from cache
+ ;; If the cache element has an mtime, we
+ ;; assume it came from a file.
+ (if (nth 2 file)
+ ;; (car file) is a directory.
+ (setq file (dir-locals--all-files (car file)))
+ ;; Otherwise, assume it was set directly.
+ (setq file (car file)
+ is-directory t)))
+ (if (null file)
+ (princ ".\n")
+ (princ ", set ")
+ (princ (substitute-command-keys
+ (cond
+ (is-directory "for the directory\n `")
+ ;; Many files matched.
+ ((and (consp file) (cdr file))
+ (setq file (file-name-directory (car file)))
+ (format "by one of the\n %s files in the directory\n `"
+ dir-locals-file))
+ (t (setq file (car file))
+ "by the file\n `"))))
(with-current-buffer standard-output
(insert-text-button
file 'type 'help-dir-local-var-def
- 'help-args (list variable file)))
+ 'help-args (list variable file)))
(princ (substitute-command-keys "'.\n"))))
(princ (substitute-command-keys
" This variable's value is file-local.\n"))))
@@ -1100,7 +1172,13 @@ BUFFER should be a buffer or a buffer name."
(if (or (not (vectorp docs)) (/= (length docs) 95))
(error "Invalid first extra slot in this category table\n"))
(with-current-buffer standard-output
- (insert "Legend of category mnemonics (see the tail for the longer description)\n")
+ (setq-default help-button-cache (make-marker))
+ (insert "Legend of category mnemonics ")
+ (insert-button "(longer descriptions at the bottom)"
+ 'action help-button-cache
+ 'follow-link t
+ 'help-echo "mouse-2, RET: show full legend")
+ (insert "\n")
(let ((pos (point)) (items 0) lines n)
(dotimes (i 95)
(if (aref docs i) (setq items (1+ items))))
@@ -1127,6 +1205,7 @@ BUFFER should be a buffer or a buffer name."
"character(s)\tcategory mnemonics\n"
"------------\t------------------")
(describe-vector table 'help-describe-category-set)
+ (set-marker help-button-cache (point))
(insert "Legend of category mnemonics:\n")
(dotimes (i 95)
(let ((elt (aref docs i)))
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index 7b95e5fb04..e008698618 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -202,6 +202,7 @@ The format is (FUNCTION ARGS...).")
(let ((location
(find-function-search-for-symbol fun type file)))
(pop-to-buffer (car location))
+ (run-hooks 'find-function-after-hook)
(if (cdr location)
(goto-char (cdr location))
(message "Unable to find location in file"))))
@@ -231,6 +232,7 @@ The format is (FUNCTION ARGS...).")
(setq file (help-C-file-name var 'var)))
(let ((location (find-variable-noselect var file)))
(pop-to-buffer (car location))
+ (run-hooks 'find-function-after-hook)
(if (cdr location)
(goto-char (cdr location))
(message "Unable to find location in file"))))
diff --git a/lisp/help.el b/lisp/help.el
index 57f358b9a7..b8485667ae 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -613,7 +613,15 @@ temporarily enables it to allow getting help on disabled items and buttons."
(when (null (cdr yank-menu))
(setq saved-yank-menu (copy-sequence yank-menu))
(menu-bar-update-yank-menu "(any string)" nil))
- (setq key (read-key-sequence "Describe key (or click or menu item): "))
+ (while
+ (progn
+ (setq key (read-key-sequence "Describe the following key, mouse click, or menu item: "))
+ (and (vectorp key)
+ (consp (aref key 0))
+ (symbolp (car (aref key 0)))
+ (string-match "\\(mouse\\|down\\|click\\|drag\\)"
+ (symbol-name (car (aref key 0))))
+ (not (sit-for (/ double-click-time 1000.0) t)))))
;; Clear the echo area message (Bug#7014).
(message nil)
;; If KEY is a down-event, read and discard the
@@ -750,7 +758,15 @@ temporarily enables it to allow getting help on disabled items and buttons."
(when (null (cdr yank-menu))
(setq saved-yank-menu (copy-sequence yank-menu))
(menu-bar-update-yank-menu "(any string)" nil))
- (setq key (read-key-sequence "Describe key (or click or menu item): "))
+ (while
+ (progn
+ (setq key (read-key-sequence "Describe the following key, mouse click, or menu item: "))
+ (and (vectorp key)
+ (consp (aref key 0))
+ (symbolp (car (aref key 0)))
+ (string-match "\\(mouse\\|down\\|click\\|drag\\)"
+ (symbol-name (car (aref key 0))))
+ (not (sit-for (/ double-click-time 1000.0) t)))))
(list
key
(prefix-numeric-value current-prefix-arg)
@@ -930,14 +946,15 @@ documentation for the major and minor modes of that buffer."
(let ((mode-function (nth 0 mode))
(pretty-minor-mode (nth 1 mode))
(indicator (nth 2 mode)))
- (add-text-properties 0 (length pretty-minor-mode)
- '(face bold) pretty-minor-mode)
(save-excursion
(goto-char (point-max))
(princ "\n\f\n")
(push (point-marker) help-button-cache)
;; Document the minor modes fully.
- (insert pretty-minor-mode)
+ (insert-text-button
+ pretty-minor-mode 'type 'help-function
+ 'help-args (list mode-function)
+ 'button '(t))
(princ (format " minor mode (%s):\n"
(if (zerop (length indicator))
"no indicator"
diff --git a/lisp/hfy-cmap.el b/lisp/hfy-cmap.el
index cf54ea54d0..e12ec8aa64 100644
--- a/lisp/hfy-cmap.el
+++ b/lisp/hfy-cmap.el
@@ -845,7 +845,7 @@ Loads the variable `hfy-rgb-txt-colour-map', which is used by
(provide 'hfy-cmap)
;; Local Variables:
-;; generated-autoload-file: "htmlfontify.el"
+;; generated-autoload-file: "htmlfontify-loaddefs.el"
;; End:
;;; hfy-cmap.el ends here
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el
index 8f042b6b10..1e4deb9353 100644
--- a/lisp/hilit-chg.el
+++ b/lisp/hilit-chg.el
@@ -194,8 +194,6 @@
(t (:inverse-video t)))
"Face used for highlighting changes."
:group 'highlight-changes)
-(define-obsolete-face-alias 'highlight-changes-face
- 'highlight-changes "22.1")
;; This looks pretty ugly, actually. Maybe the underline should be removed.
(defface highlight-changes-delete
@@ -204,9 +202,6 @@
(t (:inverse-video t)))
"Face used for highlighting deletions."
:group 'highlight-changes)
-(define-obsolete-face-alias 'highlight-changes-delete-face
- 'highlight-changes-delete "22.1")
-
;; A (not very good) default list of colors to rotate through.
(define-obsolete-variable-alias 'highlight-changes-colours
@@ -782,7 +777,7 @@ is non-nil."
a-start a-end len-a
b-start b-end len-b
(bufa-modified (buffer-modified-p buf-a))
- (bufb-modified (buffer-modified-p buf-b))
+ (bufb-modified (and (not (eq buf-a buf-b)) (buffer-modified-p buf-b)))
(buf-a-read-only (with-current-buffer buf-a buffer-read-only))
(buf-b-read-only (with-current-buffer buf-b buffer-read-only))
temp-a temp-b)
@@ -913,7 +908,7 @@ changes are made, so \\[highlight-changes-next-change] and
(let (hilit-e hilit-x hilit-y)
(ediff-setup buf-a file-a buf-b file-b
nil nil ; buf-c file-C
- 'hilit-chg-get-diff-list-hk
+ '(hilit-chg-get-diff-list-hk)
(list (cons 'ediff-job-name 'something))
)
(ediff-with-current-buffer hilit-e (ediff-really-quit nil))
diff --git a/lisp/hl-line.el b/lisp/hl-line.el
index 25c8a087f4..d75e52f297 100644
--- a/lisp/hl-line.el
+++ b/lisp/hl-line.el
@@ -126,6 +126,9 @@ It should return nil if there's no region to be highlighted.
This variable is expected to be made buffer-local by modes.")
+(defvar hl-line-overlay-buffer nil
+ "Most recently visited buffer in which Hl-Line mode is enabled.")
+
;;;###autoload
(define-minor-mode hl-line-mode
"Toggle highlighting of the current line (Hl-Line mode).
@@ -142,22 +145,21 @@ non-selected window. Hl-Line mode uses the function
When `hl-line-sticky-flag' is nil, Hl-Line mode highlights the
line about point in the selected window only. In this case, it
-uses the function `hl-line-unhighlight' on `pre-command-hook' in
+uses the function `hl-line-maybe-unhighlight' in
addition to `hl-line-highlight' on `post-command-hook'."
:group 'hl-line
(if hl-line-mode
(progn
;; In case `kill-all-local-variables' is called.
(add-hook 'change-major-mode-hook #'hl-line-unhighlight nil t)
- (if hl-line-sticky-flag
- (remove-hook 'pre-command-hook #'hl-line-unhighlight t)
- (add-hook 'pre-command-hook #'hl-line-unhighlight nil t))
(hl-line-highlight)
- (add-hook 'post-command-hook #'hl-line-highlight nil t))
+ (setq hl-line-overlay-buffer (current-buffer))
+ (add-hook 'post-command-hook #'hl-line-highlight nil t)
+ (add-hook 'post-command-hook #'hl-line-maybe-unhighlight nil t))
(remove-hook 'post-command-hook #'hl-line-highlight t)
(hl-line-unhighlight)
(remove-hook 'change-major-mode-hook #'hl-line-unhighlight t)
- (remove-hook 'pre-command-hook #'hl-line-unhighlight t)))
+ (remove-hook 'post-command-hook #'hl-line-maybe-unhighlight t)))
(defun hl-line-make-overlay ()
(let ((ol (make-overlay (point) (point))))
@@ -181,6 +183,22 @@ addition to `hl-line-highlight' on `post-command-hook'."
(when hl-line-overlay
(delete-overlay hl-line-overlay)))
+(defun hl-line-maybe-unhighlight ()
+ "Maybe deactivate the Hl-Line overlay on the current line.
+Specifically, when `hl-line-sticky-flag' is nil deactivate all
+such overlays in all buffers except the current one."
+ (let ((hlob hl-line-overlay-buffer)
+ (curbuf (current-buffer)))
+ (when (and (not hl-line-sticky-flag)
+ (not (eq curbuf hlob))
+ (not (minibufferp)))
+ (with-current-buffer hlob
+ (when (overlayp hl-line-overlay)
+ (delete-overlay hl-line-overlay))))
+ (when (and (overlayp hl-line-overlay)
+ (eq (overlay-buffer hl-line-overlay) curbuf))
+ (setq hl-line-overlay-buffer curbuf))))
+
;;;###autoload
(define-minor-mode global-hl-line-mode
"Toggle line highlighting in all buffers (Global Hl-Line mode).
@@ -189,25 +207,24 @@ positive, and disable it otherwise. If called from Lisp, enable
the mode if ARG is omitted or nil.
If `global-hl-line-sticky-flag' is non-nil, Global Hl-Line mode
-highlights the line about the current buffer's point in all
+highlights the line about the current buffer's point in all live
windows.
-Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
-`global-hl-line-highlight' on `pre-command-hook' and `post-command-hook'."
+Global-Hl-Line mode uses the functions `global-hl-line-highlight'
+and `global-hl-line-maybe-unhighlight' on `post-command-hook'."
:global t
:group 'hl-line
(if global-hl-line-mode
(progn
;; In case `kill-all-local-variables' is called.
(add-hook 'change-major-mode-hook #'global-hl-line-unhighlight)
- (if global-hl-line-sticky-flag
- (remove-hook 'pre-command-hook #'global-hl-line-unhighlight)
- (add-hook 'pre-command-hook #'global-hl-line-unhighlight))
- (global-hl-line-highlight)
- (add-hook 'post-command-hook #'global-hl-line-highlight))
+ (global-hl-line-highlight-all)
+ (add-hook 'post-command-hook #'global-hl-line-highlight)
+ (add-hook 'post-command-hook #'global-hl-line-maybe-unhighlight))
(global-hl-line-unhighlight-all)
- (remove-hook 'pre-command-hook #'global-hl-line-unhighlight)
- (remove-hook 'post-command-hook #'global-hl-line-highlight)))
+ (remove-hook 'post-command-hook #'global-hl-line-highlight)
+ (remove-hook 'change-major-mode-hook #'global-hl-line-unhighlight)
+ (remove-hook 'post-command-hook #'global-hl-line-maybe-unhighlight)))
(defun global-hl-line-highlight ()
"Highlight the current line in the current window."
@@ -222,11 +239,33 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
(selected-window)))
(hl-line-move global-hl-line-overlay))))
+(defun global-hl-line-highlight-all ()
+ "Highlight the current line in all live windows."
+ (walk-windows (lambda (w)
+ (with-current-buffer (window-buffer w)
+ (global-hl-line-highlight)))
+ nil t))
+
(defun global-hl-line-unhighlight ()
"Deactivate the Global-Hl-Line overlay on the current line."
(when global-hl-line-overlay
(delete-overlay global-hl-line-overlay)))
+(defun global-hl-line-maybe-unhighlight ()
+ "Maybe deactivate the Global-Hl-Line overlay on the current line.
+Specifically, when `global-hl-line-sticky-flag' is nil deactivate
+all such overlays in all buffers except the current one."
+ (mapc (lambda (ov)
+ (let ((ovb (overlay-buffer ov)))
+ (when (and (not global-hl-line-sticky-flag)
+ (bufferp ovb)
+ (not (eq ovb (current-buffer)))
+ (not (minibufferp)))
+ (with-current-buffer ovb
+ (when (overlayp global-hl-line-overlay)
+ (delete-overlay global-hl-line-overlay))))))
+ global-hl-line-overlays))
+
(defun global-hl-line-unhighlight-all ()
"Deactivate all Global-Hl-Line overlays."
(mapc (lambda (ov)
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index fc309bd62e..431300c81c 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -90,6 +90,8 @@
;; (`font-lock-fontify-region')
(require 'cus-edit)
+(require 'htmlfontify-loaddefs)
+
(defconst htmlfontify-version 0.21)
(defconst hfy-meta-tags
@@ -2417,26 +2419,6 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'."
(let ((file (hfy-initfile)))
(load file 'NOERROR nil nil) ))
-
-;;;### (autoloads nil "hfy-cmap" "hfy-cmap.el" "e644ddae915ddb98c9b2f16ffa5a74b2")
-;;; Generated autoloads from hfy-cmap.el
-
-(autoload 'htmlfontify-load-rgb-file "hfy-cmap" "\
-Load an X11 style rgb.txt FILE.
-Search `hfy-rgb-load-path' if FILE is not specified.
-Loads the variable `hfy-rgb-txt-colour-map', which is used by
-`hfy-fallback-colour-values'.
-
-\(fn &optional FILE)" t nil)
-
-(autoload 'hfy-fallback-colour-values "hfy-cmap" "\
-Use a fallback method for obtaining the rgb values for a color.
-
-\(fn COLOUR-STRING)" nil nil)
-
-;;;***
-
-
(provide 'htmlfontify)
;;; htmlfontify.el ends here
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index f5375612c3..f93957ecb7 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -85,6 +85,32 @@ regardless of any active filters in this buffer."
:type '(repeat (choice regexp function))
:group 'ibuffer)
+(defcustom ibuffer-never-search-content-name
+ (let* ((names '("Completions" "Help" "Messages" "Pp Eval Output"
+ "CompileLog" "Info" "Buffer List" "Ibuffer" "Apropos"))
+ (partial '("Customize Option: " "Async Shell Command\\*"
+ "Shell Command Output\\*" "ediff "))
+ (beg "\\`\\*")
+ (end "\\*\\'")
+ (excluded (mapcar (lambda (x)
+ (format "%s%s" beg x)) partial)))
+ (dolist (str names (nreverse excluded))
+ (push (format "%s%s%s" beg str end) excluded)))
+ "A list of regexps for buffers ignored by `ibuffer-mark-by-content-regexp'.
+Buffers whose name matches a regexp in this list, are not searched."
+ :version "25.2"
+ :type '(repeat regexp)
+ :require 'ibuf-ext
+ :group 'ibuffer)
+
+(defcustom ibuffer-never-search-content-mode '(dired-mode)
+ "A list of major modes ignored by `ibuffer-mark-by-content-regexp'.
+Buffers whose major mode is in this list, are not searched."
+ :version "25.2"
+ :type '(repeat regexp)
+ :require 'ibuf-ext
+ :group 'ibuffer)
+
(defvar ibuffer-tmp-hide-regexps nil
"A list of regexps which should match buffer names to not show.")
@@ -224,8 +250,11 @@ the mode if ARG is omitted or nil."
nil nil nil
(unless (derived-mode-p 'ibuffer-mode)
(error "This buffer is not in Ibuffer mode"))
- (frame-or-buffer-changed-p 'ibuffer-auto-buffers-changed) ; Initialize state vector
- (add-hook 'post-command-hook 'ibuffer-auto-update-changed))
+ (cond (ibuffer-auto-mode
+ (frame-or-buffer-changed-p 'ibuffer-auto-buffers-changed) ; Initialize state vector
+ (add-hook 'post-command-hook 'ibuffer-auto-update-changed))
+ (t
+ (remove-hook 'post-command-hook 'ibuffer-auto-update-changed))))
(defun ibuffer-auto-update-changed ()
(when (frame-or-buffer-changed-p 'ibuffer-auto-buffers-changed)
@@ -324,8 +353,7 @@ the mode if ARG is omitted or nil."
:opstring "Shell command executed on"
:modifier-p nil)
(shell-command-on-region
- (point-min) (point-max) command
- (get-buffer-create "* ibuffer-shell-output*")))
+ (point-min) (point-max) command))
;;;###autoload (autoload 'ibuffer-do-shell-command-pipe-replace "ibuf-ext")
(define-ibuffer-op shell-command-pipe-replace (command)
@@ -347,10 +375,14 @@ the mode if ARG is omitted or nil."
:modifier-p nil)
(shell-command (concat command " "
(shell-quote-argument
- (if buffer-file-name
- buffer-file-name
- (make-temp-file
- (substring (buffer-name) 0 (min 10 (length (buffer-name))))))))))
+ (or buffer-file-name
+ (let ((file
+ (make-temp-file
+ (substring
+ (buffer-name) 0
+ (min 10 (length (buffer-name)))))))
+ (write-region nil nil file nil 0)
+ file))))))
;;;###autoload (autoload 'ibuffer-do-eval "ibuf-ext")
(define-ibuffer-op eval (form)
@@ -1402,8 +1434,8 @@ You can then feed the file name(s) to other commands with \\[yank]."
(interactive "p")
(if (zerop (ibuffer-count-marked-lines))
(message "No buffers marked; use 'm' to mark a buffer")
- (let ((ibuffer-copy-filename-as-kill-result "")
- (type (cond ((zerop arg)
+ (let ((result "")
+ (type (cond ((or (null arg) (zerop arg))
'full)
((= arg 4)
'relative)
@@ -1411,22 +1443,43 @@ You can then feed the file name(s) to other commands with \\[yank]."
'name))))
(ibuffer-map-marked-lines
#'(lambda (buf _mark)
- (setq ibuffer-copy-filename-as-kill-result
- (concat ibuffer-copy-filename-as-kill-result
- (let ((name (buffer-file-name buf)))
- (if name
- (pcase type
- (`full
- name)
- (`relative
- (file-relative-name
- name (or ibuffer-default-directory
- default-directory)))
- (_
- (file-name-nondirectory name)))
- ""))
- " "))))
- (kill-new ibuffer-copy-filename-as-kill-result))))
+ (setq result
+ (concat result
+ (let ((name (buffer-file-name buf)))
+ (cond (name
+ (concat
+ (pcase type
+ (`full
+ name)
+ (`relative
+ (file-relative-name
+ name (or ibuffer-default-directory
+ default-directory)))
+ (_
+ (file-name-nondirectory name))) " "))
+ (t "")))))))
+ (when (not (zerop (length result)))
+ (setq result
+ (substring result 0 -1)))
+ (kill-new result)
+ (message "%s" result))))
+
+;;;###autoload
+(defun ibuffer-copy-buffername-as-kill ()
+ "Copy buffer names of marked buffers into the kill ring.
+The names are separated by a space.
+You can then feed the file name(s) to other commands with \\[yank]."
+ (interactive)
+ (if (zerop (ibuffer-count-marked-lines))
+ (message "No buffers marked; use 'm' to mark a buffer")
+ (let ((res ""))
+ (ibuffer-map-marked-lines
+ #'(lambda (buf _mark)
+ (setq res (concat res (buffer-name buf) " "))))
+ (when (not (zerop (length res)))
+ (setq res (substring res 0 -1)))
+ (kill-new res)
+ (message res))))
(defun ibuffer-mark-on-buffer (func &optional ibuffer-mark-on-buffer-mark group)
(let ((count
@@ -1450,6 +1503,23 @@ You can then feed the file name(s) to other commands with \\[yank]."
#'(lambda (buf)
(string-match regexp (buffer-name buf)))))
+(defun ibuffer-locked-buffer-p (&optional buf)
+ "Return non-nil if BUF is locked.
+When BUF nil, default to the buffer at current line."
+ (let ((cbuffer (or buf (ibuffer-current-buffer))))
+ (when cbuffer
+ (with-current-buffer cbuffer
+ (and (boundp 'emacs-lock-mode) emacs-lock-mode)))))
+
+;;;###autoload
+(defun ibuffer-mark-by-locked ()
+ "Mark all locked buffers."
+ (interactive)
+ (when (featurep 'emacs-lock)
+ (ibuffer-mark-on-buffer
+ (lambda (buf)
+ (ibuffer-locked-buffer-p buf)))))
+
;;;###autoload
(defun ibuffer-mark-by-mode-regexp (regexp)
"Mark all buffers whose major mode matches REGEXP."
@@ -1475,6 +1545,31 @@ You can then feed the file name(s) to other commands with \\[yank]."
(string-match regexp name))))))
;;;###autoload
+(defun ibuffer-mark-by-content-regexp (regexp &optional all-buffers)
+ "Mark all buffers whose content matches REGEXP.
+Optional arg ALL-BUFFERS, if non-nil, then search in all buffers.
+Otherwise buffers whose name matches an element of
+`ibuffer-never-search-content-name' or whose major mode is on
+`ibuffer-never-search-content-mode' are excluded."
+ (interactive (let ((reg (read-string "Mark by content (regexp): ")))
+ (list reg current-prefix-arg)))
+ (ibuffer-mark-on-buffer
+ #'(lambda (buf)
+ (let ((mode (with-current-buffer buf major-mode))
+ res)
+ (cond ((and (not all-buffers)
+ (or
+ (memq mode ibuffer-never-search-content-mode)
+ (cl-some (lambda (x) (string-match x (buffer-name buf)))
+ ibuffer-never-search-content-name)))
+ (setq res nil))
+ (t
+ (with-current-buffer buf
+ (save-mark-and-excursion
+ (goto-char (point-min))
+ (setq res (re-search-forward regexp nil t)))))) res))))
+
+;;;###autoload
(defun ibuffer-mark-by-mode (mode)
"Mark all buffers whose major mode equals MODE."
(interactive
@@ -1598,7 +1693,7 @@ defaults to one."
(provide 'ibuf-ext)
;; Local Variables:
-;; generated-autoload-file: "ibuffer.el"
+;; generated-autoload-file: "ibuffer-loaddefs.el"
;; End:
;;; ibuf-ext.el ends here
diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el
index 2f4d50d9a3..27e7af9559 100644
--- a/lisp/ibuf-macs.el
+++ b/lisp/ibuf-macs.el
@@ -198,8 +198,13 @@ operation is complete, in the form:
ACTIVE-OPSTRING is a string which will be displayed to the user in a
confirmation message, in the form:
\"Really ACTIVE-OPSTRING x buffers?\"
-COMPLEX means this function is special; see the source code of this
-macro for exactly what it does.
+COMPLEX means this function is special; if COMPLEX is nil BODY
+evaluates once for each marked buffer, MBUF, with MBUF current
+and saving the point. If COMPLEX is non-nil, BODY evaluates
+without requiring MBUF current.
+BODY define the operation; they are forms to evaluate per each
+marked buffer. BODY is evaluated with `buf' bound to the
+buffer object.
\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)"
(declare (indent 2) (doc-string 3))
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 9d23e64cd8..8e246297ff 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -36,7 +36,9 @@
(require 'dired))
(require 'font-core)
+(require 'seq)
+(require 'ibuffer-loaddefs)
;; These come from ibuf-ext.el, which can not be require'd at compile time
;; because it has a recursive dependency on ibuffer.el
(defvar ibuffer-auto-mode)
@@ -69,7 +71,8 @@ and filter displayed buffers by various criteria."
:version "22.1"
:group 'convenience)
-(defcustom ibuffer-formats '((mark modified read-only " " (name 18 18 :left :elide)
+(defcustom ibuffer-formats '((mark modified read-only locked
+ " " (name 18 18 :left :elide)
" " (size 9 -1 :right)
" " (mode 16 16 :left :elide) " " filename-and-process)
(mark " " (name 16 -1) " " filename))
@@ -135,6 +138,7 @@ value for this variable would be
Using \\[ibuffer-switch-format], you can rotate the display between
the specified formats in the list."
+ :version "25.2"
:type '(repeat sexp)
:group 'ibuffer)
@@ -156,7 +160,8 @@ elisp byte-compiler."
(null buffer-file-name))
italic)
(30 (memq major-mode ibuffer-help-buffer-modes) font-lock-comment-face)
- (35 (derived-mode-p 'dired-mode) font-lock-function-name-face))
+ (35 (derived-mode-p 'dired-mode) font-lock-function-name-face)
+ (40 (and (boundp 'emacs-lock-mode) emacs-lock-mode) ibuffer-locked-buffer))
"An alist describing how to fontify buffers.
Each element should be of the form (PRIORITY FORM FACE), where
PRIORITY is an integer, FORM is an arbitrary form to evaluate in the
@@ -278,6 +283,12 @@ Note that this specialized filtering occurs before real filtering."
:type 'character
:group 'ibuffer)
+(defcustom ibuffer-locked-char ?L
+ "The character to display for locked buffers."
+ :version "25.2"
+ :type 'character
+ :group 'ibuffer)
+
(defcustom ibuffer-deletion-char ?D
"The character to display for buffers marked for deletion."
:type 'character
@@ -469,6 +480,8 @@ directory, like `default-directory'."
(define-key map (kbd "DEL") 'ibuffer-unmark-backward)
(define-key map (kbd "M-DEL") 'ibuffer-unmark-all)
(define-key map (kbd "* *") 'ibuffer-unmark-all)
+ (define-key map (kbd "* c") 'ibuffer-change-marks)
+ (define-key map (kbd "U") 'ibuffer-unmark-all-marks)
(define-key map (kbd "* M") 'ibuffer-mark-by-mode)
(define-key map (kbd "* m") 'ibuffer-mark-modified-buffers)
(define-key map (kbd "* u") 'ibuffer-mark-unsaved-buffers)
@@ -543,6 +556,8 @@ directory, like `default-directory'."
(define-key map (kbd "% n") 'ibuffer-mark-by-name-regexp)
(define-key map (kbd "% m") 'ibuffer-mark-by-mode-regexp)
(define-key map (kbd "% f") 'ibuffer-mark-by-file-name-regexp)
+ (define-key map (kbd "% g") 'ibuffer-mark-by-content-regexp)
+ (define-key map (kbd "% L") 'ibuffer-mark-by-locked)
(define-key map (kbd "C-t") 'ibuffer-visit-tags-table)
@@ -564,13 +579,14 @@ directory, like `default-directory'."
(define-key map (kbd "R") 'ibuffer-do-rename-uniquely)
(define-key map (kbd "S") 'ibuffer-do-save)
(define-key map (kbd "T") 'ibuffer-do-toggle-read-only)
- (define-key map (kbd "U") 'ibuffer-do-replace-regexp)
+ (define-key map (kbd "r") 'ibuffer-do-replace-regexp)
(define-key map (kbd "V") 'ibuffer-do-revert)
(define-key map (kbd "W") 'ibuffer-do-view-and-eval)
(define-key map (kbd "X") 'ibuffer-do-shell-command-pipe)
(define-key map (kbd "k") 'ibuffer-do-kill-lines)
(define-key map (kbd "w") 'ibuffer-copy-filename-as-kill)
+ (define-key map (kbd "B") 'ibuffer-copy-buffername-as-kill)
(define-key map (kbd "RET") 'ibuffer-visit-buffer)
(define-key map (kbd "e") 'ibuffer-visit-buffer)
@@ -699,16 +715,10 @@ directory, like `default-directory'."
(define-key-after map [menu-bar view dashes2]
'("--"))
- (define-key-after map [menu-bar view diff-with-file]
- '(menu-item "Diff with file" ibuffer-diff-with-file
- :help "View the differences between this buffer and its file"))
(define-key-after map [menu-bar view auto-mode]
'(menu-item "Auto Mode" ibuffer-auto-mode
:button (:toggle . ibuffer-auto-mode)
:help "Attempt to automatically update the Ibuffer buffer"))
- (define-key-after map [menu-bar view customize]
- '(menu-item "Customize Ibuffer" ibuffer-customize
- :help "Use Custom to customize Ibuffer"))
(define-key-after map [menu-bar mark]
(cons "Mark" (make-sparse-keymap "Mark")))
@@ -716,6 +726,9 @@ directory, like `default-directory'."
(define-key-after map [menu-bar mark toggle-marks]
'(menu-item "Toggle marks" ibuffer-toggle-marks
:help "Unmark marked buffers, and mark unmarked buffers"))
+ (define-key-after map [menu-bar mark change-marks]
+ '(menu-item "Change marks" ibuffer-change-marks
+ :help "Change OLD mark for marked buffers with NEW"))
(define-key-after map [menu-bar mark mark-forward]
'(menu-item "Mark" ibuffer-mark-forward
:help "Mark the buffer at point"))
@@ -755,6 +768,8 @@ directory, like `default-directory'."
:help "Mark buffers which have not been viewed recently"))
(define-key-after map [menu-bar mark unmark-all]
'(menu-item "Unmark All" ibuffer-unmark-all))
+ (define-key-after map [menu-bar mark unmark-all-marks]
+ '(menu-item "Unmark All buffers" ibuffer-unmark-all-marks))
(define-key-after map [menu-bar mark dashes]
'("--"))
@@ -769,6 +784,13 @@ directory, like `default-directory'."
'(menu-item "Mark by file name (regexp)..."
ibuffer-mark-by-file-name-regexp
:help "Mark buffers whose file name matches a regexp"))
+ (define-key-after map [menu-bar mark ibuffer-mark-by-content-regexp]
+ '(menu-item "Mark by content (regexp)..."
+ ibuffer-mark-by-content-regexp
+ :help "Mark buffers whose content matches a regexp"))
+ (define-key-after map [menu-bar mark mark-by-locked]
+ '(menu-item "Mark by locked buffers..." ibuffer-mark-by-locked
+ :help "Mark all locked buffers"))
map))
@@ -819,6 +841,9 @@ directory, like `default-directory'."
(define-key-after operate-map [do-view-and-eval]
'(menu-item "Eval (viewing buffer)..." ibuffer-do-view-and-eval
:help "Evaluate a Lisp form in each marked buffer while viewing it"))
+ (define-key-after operate-map [diff-with-file]
+ '(menu-item "Diff with file" ibuffer-diff-with-file
+ :help "View the differences between this buffer and its file"))
operate-map))
@@ -968,8 +993,7 @@ width and the longest string in LIST."
(popup-menu ibuffer-mode-groups-popup))
(let ((inhibit-read-only t))
(ibuffer-save-marks
- ;; hm. we could probably do this in a better fashion
- (ibuffer-unmark-all ?\r)
+ (ibuffer-unmark-all-marks)
(save-excursion
(goto-char eventpt)
(ibuffer-set-mark ibuffer-marked-char))
@@ -1322,6 +1346,12 @@ With optional ARG, make read-only only if ARG is not negative."
(lambda (_buf _mark)
(ibuffer-set-mark-1 ?\s)
t)))
+ ((not (char-equal mark ?\r))
+ (ibuffer-map-lines
+ (lambda (_buf cmark)
+ (when (char-equal cmark mark)
+ (ibuffer-set-mark-1 ?\s))
+ t)))
(t
(ibuffer-map-lines
(lambda (_buf mark)
@@ -1330,6 +1360,12 @@ With optional ARG, make read-only only if ARG is not negative."
t)))))
(ibuffer-redisplay t))
+(defun ibuffer-unmark-all-marks ()
+ "Remove all marks from all marked buffers in Ibuffer."
+ (interactive)
+ ;; hm. we could probably do this in a better fashion
+ (ibuffer-unmark-all ?\r))
+
(defun ibuffer-toggle-marks (&optional group)
"Toggle which buffers are marked.
In other words, unmarked buffers become marked, and marked buffers
@@ -1354,6 +1390,24 @@ group."
(message "%s buffers marked" count))
(ibuffer-redisplay t))
+(defun ibuffer-change-marks (&optional old new)
+ "Change all OLD marks to NEW marks.
+OLD and NEW are both characters used to mark buffers."
+ (interactive
+ (let* ((cursor-in-echo-area t)
+ (old (progn (message "Change (old mark): ") (read-char)))
+ (new (progn (message "Change %c marks to (new mark): " old)
+ (read-char))))
+ (list old new)))
+ (if (or (eq old ?\r) (eq new ?\r))
+ (ding)
+ (let ((count
+ (ibuffer-map-lines
+ (lambda (_buf mark)
+ (when (eq mark old)
+ (ibuffer-set-mark new) t)))))
+ (message "%s marks changed" count))))
+
(defsubst ibuffer-get-region-and-prefix ()
(let ((arg (prefix-numeric-value current-prefix-arg)))
(if (use-region-p) (list (region-beginning) (region-end) arg)
@@ -1397,15 +1451,14 @@ If point is on a group name, this function operates on that group."
(require 'ibuf-ext)
(ibuffer-mark-on-buffer #'identity mark it))
(ibuffer-forward-line 0 t)
- (let ((inhibit-read-only t))
- (while (> arg 0)
- (ibuffer-set-mark mark)
- (ibuffer-forward-line 1 t)
- (setq arg (1- arg)))
- (while (< arg 0)
- (ibuffer-forward-line -1 t)
- (ibuffer-set-mark mark)
- (setq arg (1+ arg))))))
+ (while (> arg 0)
+ (ibuffer-set-mark mark)
+ (ibuffer-forward-line 1 t)
+ (setq arg (1- arg)))
+ (while (< arg 0)
+ (ibuffer-forward-line -1 t)
+ (ibuffer-set-mark mark)
+ (setq arg (1+ arg)))))
(defun ibuffer-set-mark (mark)
(ibuffer-assert-ibuffer-mode)
@@ -1714,6 +1767,15 @@ If point is on a group name, this function operates on that group."
(defvar ibuffer-inline-columns nil)
+(defface ibuffer-locked-buffer
+ '((((background dark)) (:foreground "RosyBrown"))
+ (t (:foreground "brown4")))
+ "*Face used for locked buffers in Ibuffer."
+ :version "25.2"
+ :group 'ibuffer
+ :group 'font-lock-highlighting-faces)
+(defvar ibuffer-locked-buffer 'ibuffer-locked-buffer)
+
(define-ibuffer-column mark (:name " " :inline t)
(string mark))
@@ -1722,6 +1784,12 @@ If point is on a group name, this function operates on that group."
(string ibuffer-read-only-char)
" "))
+(define-ibuffer-column locked
+ (:name "L" :inline t :props ('font-lock-face 'ibuffer-locked-buffer))
+ (if (and (boundp 'emacs-lock-mode) emacs-lock-mode)
+ (string ibuffer-locked-char)
+ " "))
+
(define-ibuffer-column modified (:name "M" :inline t)
(if (buffer-modified-p)
(string ibuffer-modified-char)
@@ -1742,7 +1810,13 @@ If point is on a group name, this function operates on that group."
(cond ((zerop bufs) "No buffers")
((= 1 bufs) "1 buffer")
(t (format "%s buffers" bufs))))))
- (propertize (buffer-name) 'font-lock-face (ibuffer-buffer-name-face buffer mark)))
+ (let ((string (propertize (buffer-name)
+ 'font-lock-face
+ (ibuffer-buffer-name-face buffer mark))))
+ (if (not (seq-position string ?\n))
+ string
+ (replace-regexp-in-string
+ "\n" (propertize "^J" 'font-lock-face 'escape-glyph) string))))
(define-ibuffer-column size
(:inline t
@@ -2336,7 +2410,8 @@ FORMATS is the value to use for `ibuffer-formats'.
(setq other-window-p t))
(let ((buf (get-buffer-create (or name "*Ibuffer*"))))
(if other-window-p
- (funcall (if noselect (lambda (buf) (display-buffer buf t)) #'pop-to-buffer) buf)
+ (or (and noselect (display-buffer buf t))
+ (pop-to-buffer buf t))
(funcall (if noselect #'display-buffer #'switch-to-buffer) buf))
(with-current-buffer buf
(save-selected-window
@@ -2411,10 +2486,12 @@ Marking commands:
`\\[ibuffer-mark-forward]' - Mark the buffer at point.
`\\[ibuffer-toggle-marks]' - Unmark all currently marked buffers, and mark
all unmarked buffers.
+ `\\[ibuffer-change-marks]' - Change the mark used on marked buffers.
`\\[ibuffer-unmark-forward]' - Unmark the buffer at point.
`\\[ibuffer-unmark-backward]' - Unmark the buffer at point, and move to the
previous line.
- `\\[ibuffer-unmark-all]' - Unmark all marked buffers.
+ `\\[ibuffer-unmark-all]' - Unmark buffers marked with MARK.
+ `\\[ibuffer-unmark-all-marks]' - Unmark all marked buffers.
`\\[ibuffer-mark-by-mode]' - Mark buffers by major mode.
`\\[ibuffer-mark-unsaved-buffers]' - Mark all \"unsaved\" buffers.
This means that the buffer is modified, and has an associated file.
@@ -2432,6 +2509,8 @@ Marking commands:
`\\[ibuffer-mark-by-name-regexp]' - Mark buffers by their name, using a regexp.
`\\[ibuffer-mark-by-mode-regexp]' - Mark buffers by their major mode, using a regexp.
`\\[ibuffer-mark-by-file-name-regexp]' - Mark buffers by their filename, using a regexp.
+ `\\[ibuffer-mark-by-content-regexp]' - Mark buffers by their content, using a regexp.
+ `\\[ibuffer-mark-by-locked]' - Mark all locked buffers.
Filtering commands:
@@ -2611,382 +2690,6 @@ will be inserted before the group at point."
(setq default-directory ibuffer-default-directory))
(add-hook 'change-major-mode-hook 'font-lock-defontify nil t))
-
-;;; Start of automatically extracted autoloads.
-
-;;;### (autoloads nil "ibuf-ext" "ibuf-ext.el" "9521139d5f2ba7c870e3101fd73bb3ce")
-;;; Generated autoloads from ibuf-ext.el
-
-(autoload 'ibuffer-auto-mode "ibuf-ext" "\
-Toggle use of Ibuffer's auto-update facility (Ibuffer Auto mode).
-With a prefix argument ARG, enable Ibuffer Auto mode if ARG is
-positive, and disable it otherwise. If called from Lisp, enable
-the mode if ARG is omitted or nil.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'ibuffer-mouse-filter-by-mode "ibuf-ext" "\
-Enable or disable filtering by the major mode chosen via mouse.
-
-\(fn EVENT)" t nil)
-
-(autoload 'ibuffer-interactive-filter-by-mode "ibuf-ext" "\
-Enable or disable filtering by the major mode at point.
-
-\(fn EVENT-OR-POINT)" t nil)
-
-(autoload 'ibuffer-mouse-toggle-filter-group "ibuf-ext" "\
-Toggle the display status of the filter group chosen with the mouse.
-
-\(fn EVENT)" t nil)
-
-(autoload 'ibuffer-toggle-filter-group "ibuf-ext" "\
-Toggle the display status of the filter group on this line.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-forward-filter-group "ibuf-ext" "\
-Move point forwards by COUNT filtering groups.
-
-\(fn &optional COUNT)" t nil)
-
-(autoload 'ibuffer-backward-filter-group "ibuf-ext" "\
-Move point backwards by COUNT filtering groups.
-
-\(fn &optional COUNT)" t nil)
- (autoload 'ibuffer-do-shell-command-pipe "ibuf-ext")
- (autoload 'ibuffer-do-shell-command-pipe-replace "ibuf-ext")
- (autoload 'ibuffer-do-shell-command-file "ibuf-ext")
- (autoload 'ibuffer-do-eval "ibuf-ext")
- (autoload 'ibuffer-do-view-and-eval "ibuf-ext")
- (autoload 'ibuffer-do-rename-uniquely "ibuf-ext")
- (autoload 'ibuffer-do-revert "ibuf-ext")
- (autoload 'ibuffer-do-isearch "ibuf-ext")
- (autoload 'ibuffer-do-isearch-regexp "ibuf-ext")
- (autoload 'ibuffer-do-replace-regexp "ibuf-ext")
- (autoload 'ibuffer-do-query-replace "ibuf-ext")
- (autoload 'ibuffer-do-query-replace-regexp "ibuf-ext")
- (autoload 'ibuffer-do-print "ibuf-ext")
-
-(autoload 'ibuffer-included-in-filters-p "ibuf-ext" "\
-
-
-\(fn BUF FILTERS)" nil nil)
-
-(autoload 'ibuffer-filters-to-filter-group "ibuf-ext" "\
-Make the current filters into a filtering group.
-
-\(fn NAME)" t nil)
-
-(autoload 'ibuffer-set-filter-groups-by-mode "ibuf-ext" "\
-Set the current filter groups to filter by mode.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-pop-filter-group "ibuf-ext" "\
-Remove the first filter group.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-decompose-filter-group "ibuf-ext" "\
-Decompose the filter group GROUP into active filters.
-
-\(fn GROUP)" t nil)
-
-(autoload 'ibuffer-clear-filter-groups "ibuf-ext" "\
-Remove all filter groups.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-jump-to-filter-group "ibuf-ext" "\
-Move point to the filter group whose name is NAME.
-
-\(fn NAME)" t nil)
-
-(autoload 'ibuffer-kill-filter-group "ibuf-ext" "\
-Kill the filter group named NAME.
-The group will be added to `ibuffer-filter-group-kill-ring'.
-
-\(fn NAME)" t nil)
-
-(autoload 'ibuffer-kill-line "ibuf-ext" "\
-Kill the filter group at point.
-See also `ibuffer-kill-filter-group'.
-
-\(fn &optional ARG INTERACTIVE-P)" t nil)
-
-(autoload 'ibuffer-yank "ibuf-ext" "\
-Yank the last killed filter group before group at point.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-yank-filter-group "ibuf-ext" "\
-Yank the last killed filter group before group named NAME.
-
-\(fn NAME)" t nil)
-
-(autoload 'ibuffer-save-filter-groups "ibuf-ext" "\
-Save all active filter groups GROUPS as NAME.
-They are added to `ibuffer-saved-filter-groups'. Interactively,
-prompt for NAME, and use the current filters.
-
-\(fn NAME GROUPS)" t nil)
-
-(autoload 'ibuffer-delete-saved-filter-groups "ibuf-ext" "\
-Delete saved filter groups with NAME.
-They are removed from `ibuffer-saved-filter-groups'.
-
-\(fn NAME)" t nil)
-
-(autoload 'ibuffer-switch-to-saved-filter-groups "ibuf-ext" "\
-Set this buffer's filter groups to saved version with NAME.
-The value from `ibuffer-saved-filter-groups' is used.
-
-\(fn NAME)" t nil)
-
-(autoload 'ibuffer-filter-disable "ibuf-ext" "\
-Disable all filters currently in effect in this buffer.
-With optional arg DELETE-FILTER-GROUPS non-nil, delete all filter
-group definitions by setting `ibuffer-filter-groups' to nil.
-
-\(fn &optional DELETE-FILTER-GROUPS)" t nil)
-
-(autoload 'ibuffer-pop-filter "ibuf-ext" "\
-Remove the top filter in this buffer.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-decompose-filter "ibuf-ext" "\
-Separate the top compound filter (OR, NOT, or SAVED) in this buffer.
-
-This means that the topmost filter on the filtering stack, which must
-be a complex filter like (OR [name: foo] [mode: bar-mode]), will be
-turned into two separate filters [name: foo] and [mode: bar-mode].
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-exchange-filters "ibuf-ext" "\
-Exchange the top two filters on the stack in this buffer.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-negate-filter "ibuf-ext" "\
-Negate the sense of the top filter in the current buffer.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-or-filter "ibuf-ext" "\
-Replace the top two filters in this buffer with their logical OR.
-If optional argument REVERSE is non-nil, instead break the top OR
-filter into parts.
-
-\(fn &optional REVERSE)" t nil)
-
-(autoload 'ibuffer-save-filters "ibuf-ext" "\
-Save FILTERS in this buffer with name NAME in `ibuffer-saved-filters'.
-Interactively, prompt for NAME, and use the current filters.
-
-\(fn NAME FILTERS)" t nil)
-
-(autoload 'ibuffer-delete-saved-filters "ibuf-ext" "\
-Delete saved filters with NAME from `ibuffer-saved-filters'.
-
-\(fn NAME)" t nil)
-
-(autoload 'ibuffer-add-saved-filters "ibuf-ext" "\
-Add saved filters from `ibuffer-saved-filters' to this buffer's filters.
-
-\(fn NAME)" t nil)
-
-(autoload 'ibuffer-switch-to-saved-filters "ibuf-ext" "\
-Set this buffer's filters to filters with NAME from `ibuffer-saved-filters'.
-
-\(fn NAME)" t nil)
- (autoload 'ibuffer-filter-by-mode "ibuf-ext")
- (autoload 'ibuffer-filter-by-used-mode "ibuf-ext")
- (autoload 'ibuffer-filter-by-derived-mode "ibuf-ext")
- (autoload 'ibuffer-filter-by-name "ibuf-ext")
- (autoload 'ibuffer-filter-by-filename "ibuf-ext")
- (autoload 'ibuffer-filter-by-size-gt "ibuf-ext")
- (autoload 'ibuffer-filter-by-size-lt "ibuf-ext")
- (autoload 'ibuffer-filter-by-content "ibuf-ext")
- (autoload 'ibuffer-filter-by-predicate "ibuf-ext")
-
-(autoload 'ibuffer-toggle-sorting-mode "ibuf-ext" "\
-Toggle the current sorting mode.
-Default sorting modes are:
- Recency - the last time the buffer was viewed
- Name - the name of the buffer
- Major Mode - the name of the major mode of the buffer
- Size - the size of the buffer
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-invert-sorting "ibuf-ext" "\
-Toggle whether or not sorting is in reverse order.
-
-\(fn)" t nil)
- (autoload 'ibuffer-do-sort-by-major-mode "ibuf-ext")
- (autoload 'ibuffer-do-sort-by-mode-name "ibuf-ext")
- (autoload 'ibuffer-do-sort-by-alphabetic "ibuf-ext")
- (autoload 'ibuffer-do-sort-by-size "ibuf-ext")
- (autoload 'ibuffer-do-sort-by-filename/process "ibuf-ext")
-
-(autoload 'ibuffer-bs-show "ibuf-ext" "\
-Emulate `bs-show' from the bs.el package.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-add-to-tmp-hide "ibuf-ext" "\
-Add REGEXP to `ibuffer-tmp-hide-regexps'.
-This means that buffers whose name matches REGEXP will not be shown
-for this Ibuffer session.
-
-\(fn REGEXP)" t nil)
-
-(autoload 'ibuffer-add-to-tmp-show "ibuf-ext" "\
-Add REGEXP to `ibuffer-tmp-show-regexps'.
-This means that buffers whose name matches REGEXP will always be shown
-for this Ibuffer session.
-
-\(fn REGEXP)" t nil)
-
-(autoload 'ibuffer-forward-next-marked "ibuf-ext" "\
-Move forward by COUNT marked buffers (default 1).
-
-If MARK is non-nil, it should be a character denoting the type of mark
-to move by. The default is `ibuffer-marked-char'.
-
-If DIRECTION is non-nil, it should be an integer; negative integers
-mean move backwards, non-negative integers mean move forwards.
-
-\(fn &optional COUNT MARK DIRECTION)" t nil)
-
-(autoload 'ibuffer-backwards-next-marked "ibuf-ext" "\
-Move backwards by COUNT marked buffers (default 1).
-
-If MARK is non-nil, it should be a character denoting the type of mark
-to move by. The default is `ibuffer-marked-char'.
-
-\(fn &optional COUNT MARK)" t nil)
-
-(autoload 'ibuffer-do-kill-lines "ibuf-ext" "\
-Hide all of the currently marked lines.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-jump-to-buffer "ibuf-ext" "\
-Move point to the buffer whose name is NAME.
-
-If called interactively, prompt for a buffer name and go to the
-corresponding line in the Ibuffer buffer. If said buffer is in a
-hidden group filter, open it.
-
-If `ibuffer-jump-offer-only-visible-buffers' is non-nil, only offer
-visible buffers in the completion list. Calling the command with
-a prefix argument reverses the meaning of that variable.
-
-\(fn NAME)" t nil)
-
-(autoload 'ibuffer-diff-with-file "ibuf-ext" "\
-View the differences between marked buffers and their associated files.
-If no buffers are marked, use buffer at point.
-This requires the external program \"diff\" to be in your `exec-path'.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-copy-filename-as-kill "ibuf-ext" "\
-Copy filenames of marked buffers into the kill ring.
-
-The names are separated by a space.
-If a buffer has no filename, it is ignored.
-
-With no prefix arg, use the filename sans its directory of each marked file.
-With a zero prefix arg, use the complete filename of each marked file.
-With \\[universal-argument], use the filename of each marked file relative
-to `ibuffer-default-directory' if non-nil, otherwise `default-directory'.
-
-You can then feed the file name(s) to other commands with \\[yank].
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'ibuffer-mark-by-name-regexp "ibuf-ext" "\
-Mark all buffers whose name matches REGEXP.
-
-\(fn REGEXP)" t nil)
-
-(autoload 'ibuffer-mark-by-mode-regexp "ibuf-ext" "\
-Mark all buffers whose major mode matches REGEXP.
-
-\(fn REGEXP)" t nil)
-
-(autoload 'ibuffer-mark-by-file-name-regexp "ibuf-ext" "\
-Mark all buffers whose file name matches REGEXP.
-
-\(fn REGEXP)" t nil)
-
-(autoload 'ibuffer-mark-by-mode "ibuf-ext" "\
-Mark all buffers whose major mode equals MODE.
-
-\(fn MODE)" t nil)
-
-(autoload 'ibuffer-mark-modified-buffers "ibuf-ext" "\
-Mark all modified buffers.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-mark-unsaved-buffers "ibuf-ext" "\
-Mark all modified buffers that have an associated file.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-mark-dissociated-buffers "ibuf-ext" "\
-Mark all buffers whose associated file does not exist.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-mark-help-buffers "ibuf-ext" "\
-Mark buffers whose major mode is in variable `ibuffer-help-buffer-modes'.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-mark-compressed-file-buffers "ibuf-ext" "\
-Mark buffers whose associated file is compressed.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-mark-old-buffers "ibuf-ext" "\
-Mark buffers which have not been viewed in `ibuffer-old-time' hours.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-mark-special-buffers "ibuf-ext" "\
-Mark all buffers whose name begins and ends with `*'.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-mark-read-only-buffers "ibuf-ext" "\
-Mark all read-only buffers.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-mark-dired-buffers "ibuf-ext" "\
-Mark all `dired' buffers.
-
-\(fn)" t nil)
-
-(autoload 'ibuffer-do-occur "ibuf-ext" "\
-View lines which match REGEXP in all marked buffers.
-Optional argument NLINES says how many lines of context to display: it
-defaults to one.
-
-\(fn REGEXP &optional NLINES)" t nil)
-
-;;;***
-
-;;; End of automatically extracted autoloads.
-
-
(provide 'ibuffer)
(run-hooks 'ibuffer-load-hook)
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index 3b60daa965..6a962640de 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -388,6 +388,9 @@ matches exist."
(progn ;;(debug (format "Candidates=%S field=%S" candidates name))
(format " %sNo matches%s" open-bracket close-bracket))
(if last (setcdr last nil))
+ (when (and minibuffer-completing-file-name
+ icomplete-with-completion-tables)
+ (setq comps (completion-pcm--filename-try-filter comps)))
(let* ((most-try
(if (and base-size (> base-size 0))
(completion-try-completion
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index a8274f5252..67b023dfd7 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -1143,7 +1143,8 @@ image."
(defun image-dired-next-line ()
"Move to next line and display properties."
(interactive)
- (forward-line 1)
+ (let ((goal-column (current-column)))
+ (next-line))
;; If we end up in an empty spot, back up to the next thumbnail.
(if (not (image-dired-image-at-point-p))
(image-dired-backward-image))
@@ -1155,7 +1156,8 @@ image."
(defun image-dired-previous-line ()
"Move to previous line and display properties."
(interactive)
- (forward-line -1)
+ (let ((goal-column (current-column)))
+ (previous-line))
;; If we end up in an empty spot, back up to the next
;; thumbnail. This should only happen if the user deleted a
;; thumbnail and did not refresh, so it is not very common. But we
diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index e549b49001..f52668536c 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -24,8 +24,8 @@
;;; Commentary:
;; Defines a major mode for visiting image files
-;; that allows conversion between viewing the text of the file
-;; and viewing the file as an image. Viewing the image
+;; that allows conversion between viewing the text of the file,
+;; hex of the file and viewing the file as an image. Viewing the image
;; works by putting a `display' text-property on the
;; image data, with the image-data still present underneath; if the
;; resulting buffer file is saved to another name it will correctly save
@@ -372,8 +372,8 @@ call."
(defvar image-mode-map
(let ((map (make-sparse-keymap)))
- (set-keymap-parent map special-mode-map)
(define-key map "\C-c\C-c" 'image-toggle-display)
+ (define-key map "\C-c\C-x" 'image-toggle-hex-display)
(define-key map (kbd "SPC") 'image-scroll-up)
(define-key map (kbd "S-SPC") 'image-scroll-down)
(define-key map (kbd "DEL") 'image-scroll-down)
@@ -406,6 +406,8 @@ call."
'("Image"
["Show as Text" image-toggle-display :active t
:help "Show image as text"]
+ ["Show as Hex" image-toggle-hex-display :active t
+ :help "Show image as hex"]
"--"
["Fit to Window Height" image-transform-fit-to-height
:visible (eq image-type 'imagemagick)
@@ -474,12 +476,13 @@ call."
["Goto Frame..." image-goto-frame :active image-multi-frame
:help "Show a specific frame of this image"]
))
- map)
+ (make-composed-keymap (list map image-map) special-mode-map))
"Mode keymap for `image-mode'.")
(defvar image-minor-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\C-c\C-c" 'image-toggle-display)
+ (define-key map "\C-c\C-x" 'image-toggle-hex-display)
map)
"Mode keymap for `image-minor-mode'.")
@@ -490,8 +493,8 @@ call."
;;;###autoload
(defun image-mode ()
"Major mode for image files.
-You can use \\<image-mode-map>\\[image-toggle-display]
-to toggle between display as an image and display as text.
+You can use \\<image-mode-map>\\[image-toggle-display] or \\<image-mode-map>\\[image-toggle-hex-display]
+to toggle between display as an image and display as text or hex.
Key bindings:
\\{image-mode-map}"
@@ -530,7 +533,7 @@ Key bindings:
(run-mode-hooks 'image-mode-hook)
(let ((image (image-get-display-property))
(msg1 (substitute-command-keys
- "Type \\[image-toggle-display] to view the image as "))
+ "Type \\[image-toggle-display] or \\[image-toggle-hex-display] to view the image as "))
animated)
(cond
((null image)
@@ -559,7 +562,7 @@ mouse-3: Previous frame"
;;; (substitute-command-keys
;;; "\\[image-toggle-animation] to animate."))))
(t
- (message "%s" (concat msg1 "text."))))))
+ (message "%s" (concat msg1 "text or hex."))))))
(error
(image-mode-as-text)
@@ -585,19 +588,10 @@ actual image."
(add-hook 'change-major-mode-hook (lambda () (image-minor-mode -1)) nil t)))
;;;###autoload
-(defun image-mode-as-text ()
+(defun image-mode-to-text ()
"Set a non-image mode as major mode in combination with image minor mode.
-A non-image major mode found from `auto-mode-alist' or Fundamental mode
-displays an image file as text. `image-minor-mode' provides the key
-\\<image-mode-map>\\[image-toggle-display] to switch back to `image-mode'
-to display an image file as the actual image.
-
-You can use `image-mode-as-text' in `auto-mode-alist' when you want
-to display an image file as text initially.
-
-See commands `image-mode' and `image-minor-mode' for more information
-on these modes."
- (interactive)
+A non-mage major mode found from `auto-mode-alist' or fundamental mode
+displays an image file as text."
;; image-mode-as-text = normal-mode + image-minor-mode
(let ((previous-image-type image-type)) ; preserve `image-type'
(if image-mode-previous-major-mode
@@ -625,12 +619,49 @@ on these modes."
;; Enable image minor mode with `C-c C-c'.
(image-minor-mode 1)
;; Show the image file as text.
- (image-toggle-display-text)
- (message "%s" (concat
- (substitute-command-keys
- "Type \\[image-toggle-display] to view the image as ")
- (if (image-get-display-property)
- "text" "an image") "."))))
+ (image-toggle-display-text)))
+
+(defun image-mode-as-hex ()
+ "Set a non-image mode as major mode in combination with image minor mode.
+A non-mage major mode found from `auto-mode-alist' or fundamental mode
+displays an image file as hex. `image-minor-mode' provides the key
+\\<image-mode-map>\\[image-toggle-hex-display] to switch back to `image-mode'
+to display an image file as the actual image.
+
+You can use `image-mode-as-hex' in `auto-mode-alist' when you want to
+to display an image file as hex initially.
+
+See commands `image-mode' and `image-minor-mode' for more information
+on these modes."
+ (interactive)
+ (image-mode-to-text)
+ ;; Turn on hexl-mode
+ (hexl-mode)
+ (message "%s" (concat
+ (substitute-command-keys
+ "Type \\[image-toggle-hex-display] or \\[image-toggle-display] to view the image as ")
+ (if (image-get-display-property)
+ "hex" "an image or text") ".")))
+
+(defun image-mode-as-text ()
+ "Set a non-image mode as major mode in combination with image minor mode.
+A non-image major mode found from `auto-mode-alist' or Fundamental mode
+displays an image file as text. `image-minor-mode' provides the key
+\\<image-mode-map>\\[image-toggle-display] to switch back to `image-mode'
+to display an image file as the actual image.
+
+You can use `image-mode-as-text' in `auto-mode-alist' when you want
+to display an image file as text initially.
+
+See commands `image-mode' and `image-minor-mode' for more information
+on these modes."
+ (interactive)
+ (image-mode-to-text)
+ (message "%s" (concat
+ (substitute-command-keys
+ "Type \\[image-toggle-display] or \\[image-toggle-hex-display] to view the image as ")
+ (if (image-get-display-property)
+ "text" "an image or hex") ".")))
(define-obsolete-function-alias 'image-mode-maybe 'image-mode "23.2")
@@ -725,15 +756,27 @@ was inserted."
(if (called-interactively-p 'any)
(message "Repeat this command to go back to displaying the file as text"))))
+(defun image-toggle-hex-display ()
+ "Toggle between image and hex display."
+ (interactive)
+ (if (image-get-display-property)
+ (image-mode-as-hex)
+ (if (eq major-mode 'fundamental-mode)
+ (image-mode-as-hex)
+ (image-mode))))
+
(defun image-toggle-display ()
"Toggle between image and text display.
+
If the current buffer is displaying an image file as an image,
-call `image-mode-as-text' to switch to text. Otherwise, display
-the image by calling `image-mode'."
+call `image-mode-as-text' to switch to text or hex display.
+Otherwise, display the image by calling `image-mode'"
(interactive)
(if (image-get-display-property)
(image-mode-as-text)
- (image-mode)))
+ (if (eq major-mode 'hexl-mode)
+ (image-mode-as-text)
+ (image-mode))))
(defun image-kill-buffer ()
"Kill the current buffer."
@@ -741,6 +784,9 @@ the image by calling `image-mode'."
(kill-buffer (current-buffer)))
(defun image-after-revert-hook ()
+ ;; Fixes bug#21598
+ (when (not (image-get-display-property))
+ (image-toggle-display-image))
(when (image-get-display-property)
(image-toggle-display-text)
;; Update image display.
diff --git a/lisp/image.el b/lisp/image.el
index 663afa7764..08df7d4aa1 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -1,4 +1,4 @@
-;;; image.el --- image API
+;;; image.el --- image API -*- lexical-binding:t -*-
;; Copyright (C) 1998-2016 Free Software Foundation, Inc.
@@ -25,7 +25,6 @@
;;; Code:
-
(defgroup image ()
"Image support."
:group 'multimedia)
@@ -124,8 +123,28 @@ value is used as a list of directories to search.
Subdirectories are not automatically included in the search."
:type '(repeat (choice directory variable))
- :initialize 'custom-initialize-delay)
-
+ :initialize #'custom-initialize-delay)
+
+(defcustom image-scaling-factor 'auto
+ "When displaying images, apply this scaling factor before displaying.
+This is not supported for all image types, and is mostly useful
+when you have a high-resolution monitor.
+The value is either a floating point number (where numbers higher
+than 1 means to increase the size and lower means to shrink the
+size), or the symbol `auto', which will compute a scaling factor
+based on the font pixel size."
+ :type '(choice number
+ (const :tag "Automatically compute" auto))
+ :version "25.2")
+
+;; Map put into text properties on images.
+(defvar image-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "-" 'image-decrease-size)
+ (define-key map "+" 'image-increase-size)
+ (define-key map "r" 'image-rotate)
+ (define-key map "o" 'image-save)
+ map))
(defun image-load-path-for-library (library image &optional path no-error)
"Return a suitable search path for images used by LIBRARY.
@@ -409,8 +428,48 @@ Image file names that are not absolute are searched for in the
(setq type (image-type file-or-data type data-p))
(when (image-type-available-p type)
(append (list 'image :type type (if data-p :data :file) file-or-data)
+ (and (not (plist-get props :scale))
+ (list :scale
+ (image-compute-scaling-factor image-scaling-factor)))
props)))
+(defun image--set-property (image property value)
+ "Set PROPERTY in IMAGE to VALUE.
+Internal use only."
+ (if (null value)
+ (while (cdr image)
+ ;; IMAGE starts with the symbol `image', and the rest is a
+ ;; plist. Decouple plist entries where the key matches
+ ;; the property.
+ (if (eq (cadr image) property)
+ (setcdr image (cddr image))
+ (setq image (cddr image))))
+ ;; Just enter the new value.
+ (plist-put (cdr image) property value))
+ value)
+
+(defun image-property (image property)
+ "Return the value of PROPERTY in IMAGE.
+Properties can be set with
+
+ (setf (image-property IMAGE PROPERTY) VALUE)
+If VALUE is nil, PROPERTY is removed from IMAGE."
+ (declare (gv-setter image--set-property))
+ (plist-get (cdr image) property))
+
+(defun image-compute-scaling-factor (scaling)
+ (cond
+ ((numberp scaling) scaling)
+ ((eq scaling 'auto)
+ (let ((width (/ (float (window-width nil t)) (window-width))))
+ ;; If we assume that a typical character is 10 pixels in width,
+ ;; then we should scale all images according to how wide they
+ ;; are. But don't scale images down.
+ (if (< width 10)
+ 1
+ (/ (float width) 10))))
+ (t
+ (error "Invalid scaling factor %s" scaling))))
;;;###autoload
(defun put-image (image pos &optional string area)
@@ -437,6 +496,7 @@ means display it in the right marginal area."
(put-text-property 0 (length string) 'display prop string)
(overlay-put overlay 'put-image t)
(overlay-put overlay 'before-string string)
+ (overlay-put overlay 'map image-map)
overlay)))
@@ -476,7 +536,9 @@ height of the image; integer values are taken as pixel values."
(add-text-properties start (point)
`(display ,(if slice
(list (cons 'slice slice) image)
- image) rear-nonsticky (display)))))
+ image)
+ rear-nonsticky (display)
+ keymap ,image-map))))
;;;###autoload
@@ -512,7 +574,8 @@ The image is automatically split into ROWS x COLS slices."
(insert string)
(add-text-properties start (point)
`(display ,(list (list 'slice x y dx dy) image)
- rear-nonsticky (display)))
+ rear-nonsticky (display)
+ keymap ,image-map))
(setq x (+ x dx))))
(setq x 0.0
y (+ y dy))
@@ -663,9 +726,9 @@ number, play until that number of seconds has elapsed."
(if (setq timer (image-animate-timer image))
(cancel-timer timer))
(plist-put (cdr image) :animate-buffer (current-buffer))
- (run-with-timer 0.2 nil 'image-animate-timeout
+ (run-with-timer 0.2 nil #'image-animate-timeout
image (or index 0) (car animation)
- 0 limit))))
+ 0 limit (+ (float-time) 0.2)))))
(defun image-animate-timer (image)
"Return the animation timer for image IMAGE."
@@ -674,7 +737,7 @@ number, play until that number of seconds has elapsed."
(while tail
(setq timer (car tail)
tail (cdr tail))
- (if (and (eq (timer--function timer) 'image-animate-timeout)
+ (if (and (eq (timer--function timer) #'image-animate-timeout)
(eq (car-safe (timer--args timer)) image))
(setq tail nil)
(setq timer nil)))
@@ -714,7 +777,7 @@ multiplication factor for the current value."
;; hence we need to call image-multi-frame-p to return it.
;; But it also returns count, so why do we bother passing that as an
;; argument?
-(defun image-animate-timeout (image n count time-elapsed limit)
+(defun image-animate-timeout (image n count time-elapsed limit target-time)
"Display animation frame N of IMAGE.
N=0 refers to the initial animation frame.
COUNT is the total number of frames in the animation.
@@ -727,7 +790,12 @@ The minimum delay between successive frames is `image-minimum-frame-delay'.
If the image has a non-nil :speed property, it acts as a multiplier
for the animation speed. A negative value means to animate in reverse."
- (when (buffer-live-p (plist-get (cdr image) :animate-buffer))
+ (when (and (buffer-live-p (plist-get (cdr image) :animate-buffer))
+ ;; Delayed more than two seconds more than expected.
+ (or (<= (- (float-time) target-time) 2)
+ (progn
+ (message "Stopping animation; animation possibly too big")
+ nil)))
(image-show-frame image n t)
(let* ((speed (image-animate-get-speed image))
(time (float-time))
@@ -750,8 +818,9 @@ for the animation speed. A negative value means to animate in reverse."
(if (numberp limit)
(setq done (>= time-elapsed limit)))
(unless done
- (run-with-timer delay nil 'image-animate-timeout
- image n count time-elapsed limit)))))
+ (run-with-timer delay nil #'image-animate-timeout
+ image n count time-elapsed limit
+ (+ (float-time) delay))))))
(defvar imagemagick-types-inhibit)
@@ -837,12 +906,11 @@ has no effect."
:type '(choice (const :tag "Support all ImageMagick types" nil)
(const :tag "Disable all ImageMagick types" t)
(repeat symbol))
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (symbol value)
(set-default symbol value)
(imagemagick-register-types))
- :version "24.3"
- :group 'image)
+ :version "24.3")
(defcustom imagemagick-enabled-types
'(3FR ART ARW AVS BMP BMP2 BMP3 CAL CALS CMYK CMYKA CR2 CRW
@@ -875,15 +943,95 @@ has no effect."
(repeat :tag "List of types"
(choice (symbol :tag "type")
(regexp :tag "regexp"))))
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (symbol value)
(set-default symbol value)
(imagemagick-register-types))
- :version "24.3"
- :group 'image)
+ :version "24.3")
(imagemagick-register-types)
+(defun image-increase-size (n)
+ "Increase the image size by a factor of N.
+If N is 3, then the image size will be increased by 30%. The
+default is 20%."
+ (interactive "P")
+ (image--change-size (if n
+ (1+ (/ n 10))
+ 1.2)))
+
+(defun image-decrease-size (n)
+ "Decrease the image size by a factor of N.
+If N is 3, then the image size will be decreased by 30%. The
+default is 20%."
+ (interactive "P")
+ (image--change-size (if n
+ (- 1 (/ n 10))
+ 0.8)))
+
+(defun image--get-image ()
+ (let ((image (get-text-property (point) 'display)))
+ (unless (eq (car-safe image) 'image)
+ (error "No image under point"))
+ image))
+
+(defun image--get-imagemagick-and-warn ()
+ (unless (fboundp 'imagemagick-types)
+ (error "Can't rescale images without ImageMagick support"))
+ (let ((image (image--get-image)))
+ (image-flush image)
+ (plist-put (cdr image) :type 'imagemagick)
+ image))
+
+(defun image--change-size (factor)
+ (let* ((image (image--get-imagemagick-and-warn))
+ (new-image (image--image-without-parameters image))
+ (scale (image--current-scaling image new-image)))
+ (setcdr image (cdr new-image))
+ (plist-put (cdr image) :scale (* scale factor))))
+
+(defun image--image-without-parameters (image)
+ (cons (pop image)
+ (let ((new nil))
+ (while image
+ (let ((key (pop image))
+ (val (pop image)))
+ (unless (memq key '(:scale :width :height :max-width :max-height))
+ (setq new (nconc new (list key val))))))
+ new)))
+
+(defun image--current-scaling (image new-image)
+ ;; The image may be scaled due to many reasons (:scale, :max-width,
+ ;; etc), so find out what the current scaling is based on the
+ ;; original image size and the displayed size.
+ (let ((image-width (car (image-size new-image t)))
+ (display-width (car (image-size image t))))
+ (/ (float display-width) image-width)))
+
+(defun image-rotate ()
+ "Rotate the image under point by 90 degrees clockwise."
+ (interactive)
+ (let ((image (image--get-imagemagick-and-warn)))
+ (plist-put (cdr image) :rotation
+ (float (+ (or (plist-get (cdr image) :rotation) 0) 90)))))
+
+(defun image-save ()
+ "Save the image under point."
+ (interactive)
+ (let ((image (get-text-property (point) 'display)))
+ (when (or (not (consp image))
+ (not (eq (car image) 'image)))
+ (error "No image under point"))
+ (with-temp-buffer
+ (let ((file (plist-get (cdr image) :file)))
+ (if file
+ (if (not (file-exists-p file))
+ (error "File %s no longer exists" file)
+ (insert-file-contents-literally file))
+ (insert (plist-get (cdr image) :data))))
+ (write-region (point-min) (point-max)
+ (read-file-name "Write image to file: ")))))
+
(provide 'image)
;;; image.el ends here
diff --git a/lisp/gnus/compface.el b/lisp/image/compface.el
index cd70d6c87c..e2f607b1be 100644
--- a/lisp/gnus/compface.el
+++ b/lisp/image/compface.el
@@ -31,7 +31,7 @@ Requires the external programs `uncompface', and `icontopbm'. On a
GNU/Linux system these might be in packages with names like `compface'
or `faces-xface' and `netpbm' or `libgr-progs', for instance."
(with-temp-buffer
- (unless (featurep 'xemacs) (set-buffer-multibyte nil))
+ (set-buffer-multibyte nil)
(insert face)
(let ((coding-system-for-read 'raw-text)
;; At least "icontopbm" doesn't work with Windows because
@@ -44,17 +44,10 @@ or `faces-xface' and `netpbm' or `libgr-progs', for instance."
(goto-char (point-min))
(insert "/* Format_version=1, Width=48, Height=48, Depth=1,\
Valid_bits_per_item=16 */\n")
- ;; I just can't get "icontopbm" to work correctly on its
- ;; own in XEmacs. And Emacs doesn't understand un-raw pbm
- ;; files.
- (if (not (featurep 'xemacs))
- (eq 0 (call-process-region (point-min) (point-max)
- "icontopbm"
- 'delete '(t nil)))
- (shell-command-on-region (point-min) (point-max)
- "icontopbm | pnmnoraw"
- (current-buffer) t)
- t))
+ ;; Emacs doesn't understand un-raw pbm files.
+ (eq 0 (call-process-region (point-min) (point-max)
+ "icontopbm"
+ 'delete '(t nil))))
(buffer-string)))))
(provide 'compface)
diff --git a/lisp/gnus/gravatar.el b/lisp/image/gravatar.el
index 8e5ea313e4..4bf5875f08 100644
--- a/lisp/gnus/gravatar.el
+++ b/lisp/image/gravatar.el
@@ -26,6 +26,7 @@
(require 'url)
(require 'url-cache)
+(require 'image)
(defgroup gravatar nil
"Gravatar."
@@ -91,22 +92,12 @@
(when (search-forward "\n\n" nil t)
(buffer-substring (point) (point-max))))))
-(eval-and-compile
- (cond ((featurep 'xemacs)
- (require 'gnus-xmas)
- (defalias 'gravatar-create-image 'gnus-xmas-create-image))
- ((featurep 'gnus-ems)
- (defalias 'gravatar-create-image 'gnus-create-image))
- (t
- (require 'image)
- (defalias 'gravatar-create-image 'create-image))))
-
(defun gravatar-data->image ()
"Get data of current buffer and return an image.
If no image available, return 'error."
(let ((data (gravatar-get-data)))
(if data
- (gravatar-create-image data nil t)
+ (create-image data nil t)
'error)))
(autoload 'help-function-arglist "help-fns")
@@ -128,7 +119,7 @@ You can provide a list of argument to pass to CB in CBARGS."
(apply #'url-retrieve args))
(apply cb
(with-temp-buffer
- (mm-disable-multibyte)
+ (set-buffer-multibyte nil)
(url-cache-extract (url-cache-create-filename url))
(gravatar-data->image))
cbargs))))
@@ -145,7 +136,7 @@ You can provide a list of argument to pass to CB in CBARGS."
(kill-buffer (current-buffer))
data))
(with-temp-buffer
- (mm-disable-multibyte)
+ (set-buffer-multibyte nil)
(url-cache-extract (url-cache-create-filename url))
(gravatar-data->image)))))
diff --git a/lisp/indent.el b/lisp/indent.el
index 0bbb5209e8..0f6c68dd62 100644
--- a/lisp/indent.el
+++ b/lisp/indent.el
@@ -218,7 +218,7 @@ indentation by specifying a large negative ARG."
(message
(substitute-command-keys
"Indent region with \\<indent-rigidly-map>\\[indent-rigidly-left], \\[indent-rigidly-right], \\[indent-rigidly-left-to-tab-stop], or \\[indent-rigidly-right-to-tab-stop]."))
- (set-transient-map indent-rigidly-map t))
+ (set-transient-map indent-rigidly-map t #'deactivate-mark))
(save-excursion
(goto-char end)
(setq end (point-marker))
diff --git a/lisp/info.el b/lisp/info.el
index 6426cfcf9e..bb259bd59e 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -81,28 +81,24 @@ The Lisp code is executed when the node is selected.")
(t :height 1.2 :inherit info-title-2))
"Face for info titles at level 1."
:group 'info)
-(define-obsolete-face-alias 'Info-title-1-face 'info-title-1 "22.1")
(defface info-title-2
'((((type tty pc) (class color)) :foreground "lightblue" :weight bold)
(t :height 1.2 :inherit info-title-3))
"Face for info titles at level 2."
:group 'info)
-(define-obsolete-face-alias 'Info-title-2-face 'info-title-2 "22.1")
(defface info-title-3
'((((type tty pc) (class color)) :weight bold)
(t :height 1.2 :inherit info-title-4))
"Face for info titles at level 3."
:group 'info)
-(define-obsolete-face-alias 'Info-title-3-face 'info-title-3 "22.1")
(defface info-title-4
'((((type tty pc) (class color)) :weight bold)
(t :weight bold :inherit variable-pitch))
"Face for info titles at level 4."
:group 'info)
-(define-obsolete-face-alias 'Info-title-4-face 'info-title-4 "22.1")
(defface info-menu-header
'((((type tty pc))
@@ -119,7 +115,6 @@ The Lisp code is executed when the node is selected.")
(t :underline t))
"Face for every third `*' in an Info menu."
:group 'info)
-(define-obsolete-face-alias 'info-menu-5 'info-menu-star "22.1")
(defface info-xref
'((t :inherit link))
@@ -189,15 +184,11 @@ A header-line does not scroll with the rest of the buffer."
configure-info-directory)))
(prefixes
;; Directory trees in which to look for info subdirectories
- (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/")))
+ (prune-directory-list '("/usr/local/" "/usr/" "/opt/")))
(suffixes
;; Subdirectories in each directory tree that may contain info
- ;; directories. Most of these are rather outdated.
- ;; It ought to be fine to stop checking the "emacs" ones now,
- ;; since this is Emacs and we have not installed info files
- ;; into such directories for a looong time...
- '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/"
- "emacs/" "lib/" "lib/emacs/"))
+ ;; directories.
+ '("share/" ""))
(standard-info-dirs
(apply #'nconc
(mapcar (lambda (pfx)
@@ -4236,7 +4227,7 @@ With a zero prefix arg, put the name inside a function call to `info'."
"Syntax table used in `Info-mode'.")
(defface Info-quoted
- '((t :family "courier"))
+ '((t :inherit fixed-pitch-serif))
"Face used for quoted elements.")
(defvar Info-mode-font-lock-keywords
diff --git a/lisp/international/characters.el b/lisp/international/characters.el
index 00f68f0fbb..1757d2ba12 100644
--- a/lisp/international/characters.el
+++ b/lisp/international/characters.el
@@ -194,6 +194,7 @@ with L, LRE, or LRO Unicode bidi character type.")
(dolist (l '(katakana-jisx0201 japanese-jisx0208 japanese-jisx0212
japanese-jisx0213-1 japanese-jisx0213-2
+ japanese-jisx0213.2004-1
cp932-2-byte))
(map-charset-chars #'modify-category-entry l ?j))
@@ -622,16 +623,19 @@ with L, LRE, or LRO Unicode bidi character type.")
(set-case-syntax-pair ?Ʊ ?ʊ tbl)
(set-case-syntax-pair ?Ʋ ?ʋ tbl)
(set-case-syntax-pair ?Æ· ?Ê’ tbl)
+ ;; We use set-downcase-syntax below, since we want upcase of dž
+ ;; return Ç„, not Ç…, and the same for the rest.
(set-case-syntax-pair ?DŽ ?dž tbl)
- (set-case-syntax-pair ?Dž ?dž tbl)
+ (set-downcase-syntax ?Dž ?dž tbl)
(set-case-syntax-pair ?LJ ?lj tbl)
- (set-case-syntax-pair ?Lj ?lj tbl)
+ (set-downcase-syntax ?Lj ?lj tbl)
(set-case-syntax-pair ?NJ ?nj tbl)
- (set-case-syntax-pair ?Nj ?nj tbl)
+ (set-downcase-syntax ?Nj ?nj tbl)
;; 01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON
+
(set-case-syntax-pair ?DZ ?dz tbl)
- (set-case-syntax-pair ?Dz ?dz tbl)
+ (set-downcase-syntax ?Dz ?dz tbl)
(set-case-syntax-pair ?Ƕ ?ƕ tbl)
(set-case-syntax-pair ?Ç· ?Æ¿ tbl)
(set-case-syntax-pair ?Ⱥ ?ⱥ tbl)
@@ -1397,10 +1401,10 @@ Setup char-width-table appropriate for non-CJK language environment."
(aset char-acronym-table i (car c0-acronyms))
(setq c0-acronyms (cdr c0-acronyms))))
-(let ((c1-acronyms '("XXX" "XXX" "BPH" "NBH" "IND" "NEL" "SSA" "ESA"
+(let ((c1-acronyms '("PAD" "HOP" "BPH" "NBH" "IND" "NEL" "SSA" "ESA"
"HTS" "HTJ" "VTS" "PLD" "PLU" "R1" "SS2" "SS1"
"DCS" "PU1" "PU2" "STS" "CCH" "MW" "SPA" "EPA"
- "SOS" "XXX" "SC1" "CSI" "ST" "OSC" "PM" "APC")))
+ "SOS" "SGCI" "SC1" "CSI" "ST" "OSC" "PM" "APC")))
(dotimes (i 32)
(aset char-acronym-table (+ #x0080 i) (car c1-acronyms))
(setq c1-acronyms (cdr c1-acronyms))))
diff --git a/lisp/international/kinsoku.el b/lisp/international/kinsoku.el
index e9609f493b..f5824d486b 100644
--- a/lisp/international/kinsoku.el
+++ b/lisp/international/kinsoku.el
@@ -104,10 +104,10 @@ The value 0 means there's no limitation.")
;; JISX0201 Katakana
"(I"(B"
;; Japanese JISX0208
- "$B!F!H!J!L!N!P!R!T!V!X!Z!k!l!m!n!w!x(B\
-$A!.!0#"#(!2!4!6!8!:!<!>!c!d!e#@!f!l(B"
+ "$B!F!H!J!L!N!P!R!T!V!X!Z!k!l!m!n!w!x(B"
;; Chinese GB2312
- "$A(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(h(B\
+ "$A!.!0#"#(!2!4!6!8!:!<!>!c!d!e#@!f!l(B\
+$A(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(h(B\
\$(0!>!@!B!D!F!H!J!L!N!P!R!T!V!X!Z!\!^!`!b(B"
;; Chinese BIG5
"$(0!d!f!h!j!k!q!p"i"j"k"n"x$u$v$w$x$y$z${(B\
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index e7c7049cd0..28eec4f0df 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -2235,7 +2235,7 @@ See `set-language-info-alist' for use in programs."
("br" . "Latin-1") ; Breton
("bs" . "Latin-2") ; Bosnian
("byn" . "UTF-8") ; Bilin; Blin
- ("ca" . "Latin-1") ; Catalan
+ ("ca" "Catalan" iso-8859-1) ; Catalan
; co Corsican
("cs" "Czech" iso-8859-2)
("cy" "Welsh" iso-8859-14)
@@ -2978,6 +2978,27 @@ on encoding."
(let ((char (assoc name ucs-names)))
(when char (format " (%c)" (cdr char)))))
+(defun char-from-name (string &optional ignore-case)
+ "Return a character as a number from its Unicode name STRING.
+If optional IGNORE-CASE is non-nil, ignore case in STRING.
+Return nil if STRING does not name a character."
+ (or (cdr (assoc-string string (ucs-names) ignore-case))
+ (let ((minus (string-match-p "-[0-9A-F]+\\'" string)))
+ (when minus
+ ;; Parse names like "VARIATION SELECTOR-17" and "CJK
+ ;; COMPATIBILITY IDEOGRAPH-F900" that are not in ucs-names.
+ (ignore-errors
+ (let* ((case-fold-search ignore-case)
+ (vs (string-match-p "\\`VARIATION SELECTOR-" string))
+ (minus-num (string-to-number (substring string minus)
+ (if vs 10 16)))
+ (vs-offset (if vs (if (< minus-num -16) #xE00EF #xFDFF) 0))
+ (code (- vs-offset minus-num))
+ (name (get-char-code-property code 'name)))
+ (when (eq t (compare-strings string nil nil name nil nil
+ ignore-case))
+ code)))))))
+
(defun read-char-by-name (prompt)
"Read a character by its Unicode name or hex number string.
Display PROMPT and read a string that represents a character by its
@@ -2991,9 +3012,11 @@ preceded by an asterisk `*' and use completion, it will show all
the characters whose names include that substring, not necessarily
at the beginning of the name.
-This function also accepts a hexadecimal number of Unicode code
-point or a number in hash notation, e.g. #o21430 for octal,
-#x2318 for hex, or #10r8984 for decimal."
+Accept a name like \"CIRCULATION FUNCTION\", a hexadecimal
+number like \"2A10\", or a number in hash notation (e.g.,
+\"#x2a10\" for hex, \"10r10768\" for decimal, or \"#o25020\" for
+octal). Treat otherwise-ambiguous strings like \"BED\" (U+1F6CF)
+as names, not numbers."
(let* ((enable-recursive-minibuffers t)
(completion-ignore-case t)
(input
@@ -3006,13 +3029,13 @@ point or a number in hash notation, e.g. #o21430 for octal,
(category . unicode-name))
(complete-with-action action (ucs-names) string pred)))))
(char
- (cond
- ((string-match-p "\\`[0-9a-fA-F]+\\'" input)
- (string-to-number input 16))
- ((string-match-p "\\`#" input)
- (read input))
- (t
- (cdr (assoc-string input (ucs-names) t))))))
+ (cond
+ ((char-from-name input t))
+ ((string-match-p "\\`[0-9a-fA-F]+\\'" input)
+ (ignore-errors (string-to-number input 16)))
+ ((string-match-p "\\`#\\([bBoOxX]\\|[0-9]+[rR]\\)[0-9a-zA-Z]+\\'"
+ input)
+ (ignore-errors (read input))))))
(unless (characterp char)
(error "Invalid character"))
char))
diff --git a/lisp/international/mule-diag.el b/lisp/international/mule-diag.el
index fbb0e0cb96..f543083b8c 100644
--- a/lisp/international/mule-diag.el
+++ b/lisp/international/mule-diag.el
@@ -204,13 +204,6 @@ Character sets for defining other charsets, or for backward compatibility
"Obsolete.")
(make-obsolete-variable 'non-iso-charset-alist "no longer relevant." "23.1")
-(defun decode-codepage-char (codepage code)
- "Decode a character that has code CODE in CODEPAGE.
-Return a decoded character string. Each CODEPAGE corresponds to a
-coding system cpCODEPAGE."
- (declare (obsolete decode-char "23.1"))
- (decode-char (intern (format "cp%d" codepage)) code))
-
;; A variable to hold charset input history.
(defvar charset-history nil)
@@ -1121,7 +1114,7 @@ system which uses fontsets)."
(insert "\n\n")
(if window-system
- (let ((font (cdr (assq 'font (frame-parameters)))))
+ (let ((font (frame-parameter nil 'font)))
(insert "The font and fontset of the selected frame are:\n"
" font: " font "\n"
" fontset: " (face-attribute 'default :fontset) "\n"))
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index f5e390278c..320d783d41 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -1333,7 +1333,15 @@ If STR has `advice' text property, append the following special event:
(defun quail-input-method (key)
(if (or buffer-read-only
- overriding-terminal-local-map
+ (and overriding-terminal-local-map
+ ;; If the overriding map is `universal-argument-map', that
+ ;; must mean the user has pressed 'C-u KEY'. If KEY has a
+ ;; binding in `universal-argument-map' just return
+ ;; (list KEY), otherwise act as if there was no
+ ;; overriding map.
+ (or (not (eq (cadr overriding-terminal-local-map)
+ universal-argument-map))
+ (lookup-key overriding-terminal-local-map (vector key))))
overriding-local-map)
(list key)
(quail-setup-overlays (quail-conversion-keymap))
diff --git a/lisp/gnus/rfc1843.el b/lisp/international/rfc1843.el
index 1dbd11debd..508629fb06 100644
--- a/lisp/gnus/rfc1843.el
+++ b/lisp/international/rfc1843.el
@@ -22,21 +22,12 @@
;;; Commentary:
-;; Usage:
-;; (require 'rfc1843)
-;; (rfc1843-gnus-setup)
-;;
;; Test:
;; (rfc1843-decode-string "~{<:Ky2;S{#,NpJ)l6HK!#~}")
;;; Code:
(eval-when-compile (require 'cl))
-(require 'mm-util)
-
-(defvar gnus-decode-encoded-word-function)
-(defvar gnus-decode-header-function)
-(defvar gnus-newsgroup-name)
(defvar rfc1843-word-regexp
"~\\({\\([\041-\167][\041-\176]\\| \\)+\\)\\(~}\\|$\\)")
@@ -90,12 +81,11 @@ ftp://ftp.math.psu.edu/pub/simpson/chinese/hzp/hzp.doc"
(while (re-search-forward (if rfc1843-decode-hzp
rfc1843-hzp-word-regexp
rfc1843-word-regexp) (point-max) t)
- ;;; Text with extents may cause XEmacs crash
(setq str (buffer-substring-no-properties
(match-beginning 1)
(match-end 1)))
(setq firstc (aref str 0))
- (insert (mm-decode-coding-string
+ (insert (decode-coding-string
(rfc1843-decode
(prog1
(substring str 1)
@@ -112,10 +102,10 @@ ftp://ftp.math.psu.edu/pub/simpson/chinese/hzp/hzp.doc"
(defun rfc1843-decode-string (string)
"Decode HZ STRING and return the results."
- (let ((m (mm-multibyte-p)))
+ (let ((m enable-multibyte-characters))
(with-temp-buffer
(when m
- (mm-enable-multibyte))
+ (set-buffer-multibyte 'to))
(insert string)
(inline
(rfc1843-decode-region (point-min) (point-max)))
@@ -136,54 +126,6 @@ ftp://ftp.math.psu.edu/pub/simpson/chinese/hzp/hzp.doc"
(aset s (incf i) (+ v (if (< v 63) 64 98))))))
s))
-(autoload 'mail-header-parse-content-type "mail-parse")
-(autoload 'message-narrow-to-head "message")
-(declare-function message-fetch-field "message" (header &optional not-all))
-
-(defun rfc1843-decode-article-body ()
- "Decode HZ encoded text in the article body."
- (if (string-match (concat "\\<\\(" rfc1843-newsgroups-regexp "\\)\\>")
- (or gnus-newsgroup-name ""))
- (save-excursion
- (save-restriction
- (message-narrow-to-head)
- (let* ((inhibit-point-motion-hooks t)
- (case-fold-search t)
- (ct (message-fetch-field "Content-Type" t))
- (ctl (and ct (mail-header-parse-content-type ct))))
- (if (and ctl (not (string-match "/" (car ctl))))
- (setq ctl nil))
- (goto-char (point-max))
- (widen)
- (forward-line 1)
- (narrow-to-region (point) (point-max))
- (when (or (not ctl)
- (equal (car ctl) "text/plain"))
- (rfc1843-decode-region (point) (point-max))))))))
-
-(defvar gnus-decode-header-methods)
-(defvar gnus-decode-encoded-word-methods)
-
-(defun rfc1843-gnus-setup ()
- "Setup HZ decoding for Gnus."
- (require 'gnus-art)
- (require 'gnus-sum)
- (add-hook 'gnus-article-decode-hook 'rfc1843-decode-article-body t)
- (setq gnus-decode-encoded-word-function
- 'gnus-multi-decode-encoded-word-string
- gnus-decode-header-function
- 'gnus-multi-decode-header
- gnus-decode-encoded-word-methods
- (nconc gnus-decode-encoded-word-methods
- (list
- (cons (concat "\\<\\(" rfc1843-newsgroups-regexp "\\)\\>")
- 'rfc1843-decode-string)))
- gnus-decode-header-methods
- (nconc gnus-decode-header-methods
- (list
- (cons (concat "\\<\\(" rfc1843-newsgroups-regexp "\\)\\>")
- 'rfc1843-decode-region)))))
-
(provide 'rfc1843)
;;; rfc1843.el ends here
diff --git a/lisp/international/ucs-normalize.el b/lisp/international/ucs-normalize.el
index 74978ce38a..ac2a0d9e77 100644
--- a/lisp/international/ucs-normalize.el
+++ b/lisp/international/ucs-normalize.el
@@ -263,7 +263,7 @@ Note that Hangul are excluded.")
(defvar ucs-normalize-combining-chars-regexp nil
"Regular expression to match sequence of combining characters.")
(setq ucs-normalize-combining-chars-regexp
- (eval-when-compile (concat (regexp-opt (mapcar 'char-to-string combining-chars)) "+")))
+ (eval-when-compile (concat (regexp-opt-charset combining-chars) "+")))
(declare-function decomposition-translation-alist "ucs-normalize"
(decomposition-function))
@@ -396,20 +396,22 @@ If COMPOSITION-PREDICATE is not given, then do nothing."
It includes Singletons, CompositionExclusions, and Non-Starter
decomposition."
(let (entries decomposition composition)
- (mapc
- (lambda (start-end)
- (cl-do ((i (car start-end) (+ i 1))) ((> i (cdr start-end)))
- (setq decomposition
- (string-to-list
- (with-temp-buffer
- (insert i)
- (translate-region 1 2 decomposition-translation)
- (buffer-string))))
- (setq composition
- (ucs-normalize-block-compose-chars decomposition composition-predicate))
- (when (not (equal composition (list i)))
- (setq entries (cons i entries)))))
- check-range)
+ (with-temp-buffer
+ (mapc
+ (lambda (start-end)
+ (cl-do ((i (car start-end) (+ i 1))) ((> i (cdr start-end)))
+ (setq decomposition
+ (string-to-list
+ (progn
+ (erase-buffer)
+ (insert i)
+ (translate-region 1 2 decomposition-translation)
+ (buffer-string))))
+ (setq composition
+ (ucs-normalize-block-compose-chars decomposition composition-predicate))
+ (when (not (equal composition (list i)))
+ (setq entries (cons i entries)))))
+ check-range))
;;(remove-duplicates
(append entries
ucs-normalize-composition-exclusions
@@ -431,7 +433,7 @@ decomposition."
(setq hfs-nfc-quick-check-list (quick-check-list 'ucs-normalize-hfs-nfd-table t ))
(defun quick-check-list-to-regexp (quick-check-list)
- (regexp-opt (mapcar 'char-to-string (append quick-check-list combining-chars))))
+ (regexp-opt-charset (append quick-check-list combining-chars)))
(defun quick-check-decomposition-list-to-regexp (quick-check-list)
(concat (quick-check-list-to-regexp quick-check-list) "\\|[가-힣]"))
@@ -613,14 +615,9 @@ COMPOSITION-PREDICATE will be used to compose region."
(- (point-max) (point-min)))))
;; Pre-write conversion for `utf-8-hfs'.
-(defun ucs-normalize-hfs-nfd-pre-write-conversion (from to)
- (let ((old-buf (current-buffer)))
- (set-buffer (generate-new-buffer " *temp*"))
- (if (stringp from)
- (insert from)
- (insert-buffer-substring old-buf from to))
- (ucs-normalize-HFS-NFD-region (point-min) (point-max))
- nil))
+;; _from and _to are legacy arguments (see `define-coding-system').
+(defun ucs-normalize-hfs-nfd-pre-write-conversion (_from _to)
+ (ucs-normalize-HFS-NFD-region (point-min) (point-max)))
;;; coding-system definition
(define-coding-system 'utf-8-hfs
diff --git a/lisp/gnus/utf7.el b/lisp/international/utf7.el
index 9b7191b21e..bd04eba2fa 100644
--- a/lisp/gnus/utf7.el
+++ b/lisp/international/utf7.el
@@ -119,11 +119,17 @@ Use IMAP modification if FOR-IMAP is non-nil."
"Encode text from START to END in buffer as UTF-7 escape fragment.
Use IMAP modification if FOR-IMAP is non-nil."
(save-restriction
- (narrow-to-region start end)
- (funcall (utf7-get-u16char-converter 'to-utf-16))
- (mm-with-unibyte-current-buffer
- (base64-encode-region start (point-max)))
- (goto-char start)
+ (let* ((buf (current-buffer))
+ (base (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (insert-buffer-substring buf start end)
+ (funcall (utf7-get-u16char-converter 'to-utf-16))
+ (base64-encode-region (point-min) (point-max))
+ (buffer-string))))
+ (narrow-to-region start end)
+ (delete-region (point-min) (point-max))
+ (insert base))
+ (goto-char (point-min))
(let ((pm (point-max)))
(when for-imap
(while (search-forward "/" nil t)
@@ -185,8 +191,7 @@ Use IMAP modification if FOR-IMAP is non-nil."
(defun utf7-latin1-u16-char-converter ()
"Convert latin 1 (ISO-8859.1) characters to 16 bit Unicode.
Characters are converted to raw byte pairs in narrowed buffer."
- (mm-encode-coding-region (point-min) (point-max) 'iso-8859-1)
- (mm-disable-multibyte)
+ (encode-coding-region (point-min) (point-max) 'iso-8859-1)
(goto-char (point-min))
(while (not (eobp))
(insert 0)
@@ -201,7 +206,7 @@ Characters are in raw byte pairs in narrowed buffer."
(delete-char 1)
(error "Unable to convert from Unicode"))
(forward-char))
- (mm-decode-coding-region (point-min) (point-max) 'iso-8859-1)
+ (decode-coding-region (point-min) (point-max) 'iso-8859-1)
(mm-enable-multibyte))
;;;###autoload
diff --git a/lisp/isearch.el b/lisp/isearch.el
index a97247671c..b50379a250 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -354,11 +354,7 @@ A value of nil means highlight all matches."
"Face for lazy highlighting of matches other than the current one."
:group 'lazy-highlight
:group 'basic-faces)
-(define-obsolete-face-alias 'isearch-lazy-highlight-face 'lazy-highlight "22.1")
-(define-obsolete-variable-alias 'isearch-lazy-highlight-face
- 'lazy-highlight-face
- "22.1")
-(defvar lazy-highlight-face 'lazy-highlight)
+
;; Define isearch help map.
@@ -562,7 +558,7 @@ The symbol property `isearch-message-prefix' put on this function
specifies the prefix string displayed in the search message.
This variable is set and changed during isearch. To change the
-default behaviour used for searches, see `search-default-mode'
+default behavior used for searches, see `search-default-mode'
instead.")
;; We still support setting this to t for backwards compatibility.
(define-obsolete-variable-alias 'isearch-word
@@ -1259,6 +1255,11 @@ You can update the global isearch variables by setting new values to
(isearch-adjusted isearch-adjusted)
(isearch-yank-flag isearch-yank-flag)
(isearch-error isearch-error)
+
+ (multi-isearch-file-list-new multi-isearch-file-list)
+ (multi-isearch-buffer-list-new multi-isearch-buffer-list)
+ (multi-isearch-next-buffer-function multi-isearch-next-buffer-current-function)
+ (multi-isearch-current-buffer-new multi-isearch-current-buffer)
;;; Don't bind this. We want isearch-search, below, to set it.
;;; And the old value won't matter after that.
;;; (isearch-other-end isearch-other-end)
@@ -1313,7 +1314,10 @@ You can update the global isearch variables by setting new values to
isearch-message isearch-new-message
isearch-forward isearch-new-forward
isearch-regexp-function isearch-new-regexp-function
- isearch-case-fold-search isearch-new-case-fold)
+ isearch-case-fold-search isearch-new-case-fold
+ multi-isearch-current-buffer multi-isearch-current-buffer-new
+ multi-isearch-file-list multi-isearch-file-list-new
+ multi-isearch-buffer-list multi-isearch-buffer-list-new)
;; Restore the minibuffer message before moving point.
(funcall (or isearch-message-function #'isearch-message) nil t)
@@ -3279,7 +3283,7 @@ Attempt to do the search exactly the way the pending Isearch would."
;; 1000 is higher than ediff's 100+,
;; but lower than isearch main overlay's 1001
(overlay-put ov 'priority 1000)
- (overlay-put ov 'face lazy-highlight-face)))
+ (overlay-put ov 'face 'lazy-highlight)))
;(overlay-put ov 'window (selected-window))))
;; Remember the current position of point for
;; the next call of `isearch-lazy-highlight-update'
diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el
index 810c220516..0d9abbc1fe 100644
--- a/lisp/jit-lock.el
+++ b/lisp/jit-lock.el
@@ -195,9 +195,11 @@ the variable `jit-lock-stealth-nice'.
If you need to debug code run from jit-lock, see `jit-lock-debug-mode'."
(setq jit-lock-mode arg)
(cond
- ((buffer-base-buffer)
- ;; We're in an indirect buffer. This doesn't work because jit-lock relies
- ;; on the `fontified' text-property which is shared with the base buffer.
+ ((and (buffer-base-buffer)
+ jit-lock-mode)
+ ;; We're in an indirect buffer, and we're turning the mode on.
+ ;; This doesn't work because jit-lock relies on the `fontified'
+ ;; text-property which is shared with the base buffer.
(setq jit-lock-mode nil)
(message "Not enabling jit-lock: it does not work in indirect buffer"))
@@ -392,58 +394,62 @@ Defaults to the whole buffer. END can be out of bounds."
(setq next (or (text-property-any start end 'fontified t)
end))
- ;; Fontify the chunk, and mark it as fontified.
- ;; We mark it first, to make sure that we don't indefinitely
- ;; re-execute this fontification if an error occurs.
- (put-text-property start next 'fontified t)
- (pcase-let
- ;; `tight' is the part we've fully refontified, and `loose'
- ;; is the part we've partly refontified (some of the
- ;; functions have refontified it but maybe not all).
- ((`(,tight-beg ,tight-end ,loose-beg ,_loose-end)
- (condition-case err
- (jit-lock--run-functions start next)
- ;; If the user quits (which shouldn't happen in normal
- ;; on-the-fly jit-locking), make sure the fontification
- ;; will be performed before displaying the block again.
- (quit (put-text-property start next 'fontified nil)
- (signal (car err) (cdr err))))))
-
- ;; In case we fontified more than requested, take advantage of the
- ;; good news.
- (when (or (< tight-beg start) (> tight-end next))
- (put-text-property tight-beg tight-end 'fontified t))
-
- ;; Make sure the contextual refontification doesn't re-refontify
- ;; what's already been refontified.
- (when (and jit-lock-context-unfontify-pos
- (< jit-lock-context-unfontify-pos tight-end)
- (>= jit-lock-context-unfontify-pos tight-beg)
- ;; Don't move boundary forward if we have to
- ;; refontify previous text. Otherwise, we risk moving
- ;; it past the end of the multiline property and thus
- ;; forget about this multiline region altogether.
- (not (get-text-property tight-beg
- 'jit-lock-defer-multiline)))
- (setq jit-lock-context-unfontify-pos tight-end))
-
- ;; The redisplay engine has already rendered the buffer up-to
- ;; `orig-start' and won't notice if the above jit-lock-functions
- ;; changed the appearance of any part of the buffer prior
- ;; to that. So if `loose-beg' is before `orig-start', we need to
- ;; cause a new redisplay cycle after this one so that the changes
- ;; are properly reflected on screen.
- ;; To make such repeated redisplay happen less often, we can
- ;; eagerly extend the refontified region with
- ;; jit-lock-after-change-extend-region-functions.
- (when (< loose-beg orig-start)
- (run-with-timer 0 nil #'jit-lock-force-redisplay
- (copy-marker loose-beg)
- (copy-marker orig-start)))
-
- ;; Find the start of the next chunk, if any.
- (setq start
- (text-property-any tight-end end 'fontified nil)))))))))
+ ;; Avoid unnecessary work if the chunk is empty (bug#23278).
+ (when (> next start)
+ ;; Fontify the chunk, and mark it as fontified.
+ ;; We mark it first, to make sure that we don't indefinitely
+ ;; re-execute this fontification if an error occurs.
+ (put-text-property start next 'fontified t)
+ (pcase-let
+ ;; `tight' is the part we've fully refontified, and `loose'
+ ;; is the part we've partly refontified (some of the
+ ;; functions have refontified it but maybe not all).
+ ((`(,tight-beg ,tight-end ,loose-beg ,_loose-end)
+ (condition-case err
+ (jit-lock--run-functions start next)
+ ;; If the user quits (which shouldn't happen in normal
+ ;; on-the-fly jit-locking), make sure the fontification
+ ;; will be performed before displaying the block again.
+ (quit (put-text-property start next 'fontified nil)
+ (signal (car err) (cdr err))))))
+
+ ;; In case we fontified more than requested, take advantage of the
+ ;; good news.
+ (when (or (< tight-beg start) (> tight-end next))
+ (put-text-property tight-beg tight-end 'fontified t))
+
+ ;; Make sure the contextual refontification doesn't re-refontify
+ ;; what's already been refontified.
+ (when (and jit-lock-context-unfontify-pos
+ (< jit-lock-context-unfontify-pos tight-end)
+ (>= jit-lock-context-unfontify-pos tight-beg)
+ ;; Don't move boundary forward if we have to
+ ;; refontify previous text. Otherwise, we risk moving
+ ;; it past the end of the multiline property and thus
+ ;; forget about this multiline region altogether.
+ (not (get-text-property tight-beg
+ 'jit-lock-defer-multiline)))
+ (setq jit-lock-context-unfontify-pos tight-end))
+
+ ;; The redisplay engine has already rendered the buffer up-to
+ ;; `orig-start' and won't notice if the above jit-lock-functions
+ ;; changed the appearance of any part of the buffer prior
+ ;; to that. So if `loose-beg' is before `orig-start', we need to
+ ;; cause a new redisplay cycle after this one so that the changes
+ ;; are properly reflected on screen.
+ ;; To make such repeated redisplay happen less often, we can
+ ;; eagerly extend the refontified region with
+ ;; jit-lock-after-change-extend-region-functions.
+ (when (< loose-beg orig-start)
+ (run-with-timer 0 nil #'jit-lock-force-redisplay
+ (copy-marker loose-beg)
+ (copy-marker orig-start)))
+
+ ;; Skip to the end of the fully refontified part.
+ (setq start tight-end)))
+ ;; Find the start of the next chunk, if any.
+ (setq start
+ (text-property-any start end 'fontified nil))))))))
(defun jit-lock-force-redisplay (start end)
"Force the display engine to re-render START's buffer from START to END.
diff --git a/lisp/json.el b/lisp/json.el
index 1eabe0fa33..fdac8d9a82 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -1,4 +1,4 @@
-;;; json.el --- JavaScript Object Notation parser / generator
+;;; json.el --- JavaScript Object Notation parser / generator -*- lexical-binding: t -*-
;; Copyright (C) 2006-2016 Free Software Foundation, Inc.
diff --git a/lisp/kmacro.el b/lisp/kmacro.el
index a3683738fc..2e743b4c38 100644
--- a/lisp/kmacro.el
+++ b/lisp/kmacro.el
@@ -478,7 +478,7 @@ without repeating the prefix."
"Display the current head of the keyboard macro ring."
(interactive)
(unless (kmacro-ring-empty-p)
- (kmacro-display (car (car kmacro-ring)) "2nd macro")))
+ (kmacro-display (car (car kmacro-ring)) nil "2nd macro")))
(defun kmacro-cycle-ring-next (&optional _arg)
diff --git a/lisp/language/china-util.el b/lisp/language/china-util.el
index e531640932..6505fb8c3d 100644
--- a/lisp/language/china-util.el
+++ b/lisp/language/china-util.el
@@ -88,43 +88,34 @@ Return the length of resulting text."
(let (pos ch)
(narrow-to-region beg end)
- ;; We, at first, convert HZ/ZW to `euc-china',
+ ;; We, at first, convert HZ/ZW to `iso-2022-7bit',
;; then decode it.
- ;; "~\n" -> "\n", "~~" -> "~"
+ ;; "~\n" -> "", "~~" -> "~"
(goto-char (point-min))
(while (search-forward "~" nil t)
(setq ch (following-char))
- (if (or (= ch ?\n) (= ch ?~)) (delete-char -1)))
+ (cond ((= ch ?{)
+ (delete-region (1- (point)) (1+ (point)))
+ (setq pos (point))
+ (insert iso2022-gb-designation)
+ (if (looking-at "\\([!-}][!-~]\\)*")
+ (goto-char (match-end 0)))
+ (if (looking-at hz-ascii-designation)
+ (delete-region (match-beginning 0) (match-end 0)))
+ (insert iso2022-ascii-designation)
+ (decode-coding-region pos (point) 'iso-2022-7bit))
+
+ ((= ch ?~)
+ (delete-char 1))
+
+ ((and (= ch ?\n)
+ decode-hz-line-continuation)
+ (delete-region (1- (point)) (1+ (point))))
+
+ (t
+ (forward-char 1)))))
- ;; "^zW...\n" -> Chinese GB2312
- ;; "~{...~}" -> Chinese GB2312
- (goto-char (point-min))
- (setq beg nil)
- (while (re-search-forward hz/zw-start-gb nil t)
- (setq pos (match-beginning 0)
- ch (char-after pos))
- ;; Record the first position to start conversion.
- (or beg (setq beg pos))
- (end-of-line)
- (setq end (point))
- (if (>= ch 128) ; 8bit GB2312
- nil
- (goto-char pos)
- (delete-char 2)
- (setq end (- end 2))
- (if (= ch ?z) ; ZW -> euc-china
- (progn
- (translate-region (point) end hz-set-msb-table)
- (goto-char end))
- (if (search-forward hz-ascii-designation
- (if decode-hz-line-continuation nil end)
- t)
- (delete-char -2))
- (setq end (point))
- (translate-region pos (point) hz-set-msb-table))))
- (if beg
- (decode-coding-region beg end 'euc-china)))
(- (point-max) (point-min)))))
;;;###autoload
@@ -133,33 +124,57 @@ Return the length of resulting text."
(interactive)
(decode-hz-region (point-min) (point-max)))
+(defvar hz-category-table nil)
+
;;;###autoload
(defun encode-hz-region (beg end)
"Encode the text in the current region to HZ.
Return the length of resulting text."
(interactive "r")
+ (unless hz-category-table
+ (setq hz-category-table (make-category-table))
+ (with-category-table hz-category-table
+ (define-category ?c "hz encodable")
+ (map-charset-chars #'modify-category-entry 'ascii ?c)
+ (map-charset-chars #'modify-category-entry 'chinese-gb2312 ?c)))
(save-excursion
(save-restriction
(narrow-to-region beg end)
+ (with-category-table hz-category-table
+ ;; ~ -> ~~
+ (goto-char (point-min))
+ (while (search-forward "~" nil t) (insert ?~))
+
+ ;; ESC -> ESC ESC
+ (goto-char (point-min))
+ (while (search-forward "\e" nil t) (insert ?\e))
- ;; "~" -> "~~"
- (goto-char (point-min))
- (while (search-forward "~" nil t) (insert ?~))
-
- ;; Chinese GB2312 -> "~{...~}"
- (goto-char (point-min))
- (if (re-search-forward "\\cc" nil t)
- (let (pos)
- (goto-char (setq pos (match-beginning 0)))
- (encode-coding-region pos (point-max) 'iso-2022-7bit)
- (goto-char pos)
- (while (search-forward iso2022-gb-designation nil t)
- (delete-char -3)
- (insert hz-gb-designation))
- (goto-char pos)
- (while (search-forward iso2022-ascii-designation nil t)
- (delete-char -3)
- (insert hz-ascii-designation))))
+ ;; Non-ASCII-GB2312 -> \uXXXX
+ (goto-char (point-min))
+ (while (re-search-forward "\\Cc" nil t)
+ (let ((ch (preceding-char)))
+ (delete-char -1)
+ (insert (format (if (< ch #x10000) "\\u%04X" "\\U%08X") ch))))
+
+ ;; Prefer chinese-gb2312 for Chinese characters.
+ (put-text-property (point-min) (point-max) 'charset 'chinese-gb2312)
+ (encode-coding-region (point-min) (point-max) 'iso-2022-7bit)
+
+ ;; ESC $ B ... ESC ( B -> ~{ ... ~}
+ ;; ESC ESC -> ESC
+ (goto-char (point-min))
+ (while (search-forward "\e" nil t)
+ (if (= (following-char) ?\e)
+ ;; ESC ESC -> ESC
+ (delete-char 1)
+ (forward-char -1)
+ (if (looking-at iso2022-gb-designation)
+ (progn
+ (delete-region (match-beginning 0) (match-end 0))
+ (insert hz-gb-designation)
+ (search-forward iso2022-ascii-designation nil 'move)
+ (delete-region (match-beginning 0) (match-end 0))
+ (insert hz-ascii-designation))))))
(- (point-max) (point-min)))))
;;;###autoload
diff --git a/lisp/language/european.el b/lisp/language/european.el
index a939719ec4..11c5e03c97 100644
--- a/lisp/language/european.el
+++ b/lisp/language/european.el
@@ -614,6 +614,28 @@ method and applying Turkish case rules for the characters i, I, ı, İ.")))
(documentation . "Support for Brazilian Portuguese."))
'("European"))
+(set-language-info-alist
+ "Catalan" '((charset iso-8859-1)
+ (coding-system iso-8859-1 iso-8859-15)
+ (coding-priority iso-8859-1)
+ (input-method . "catalan-prefix")
+ (nonascii-translation . iso-8859-1)
+ (unibyte-display . iso-8859-1)
+ (setup-function
+ . (lambda ()
+ (modify-syntax-entry ?· "w" (standard-syntax-table))))
+ (exit-function
+ . (lambda ()
+ (modify-syntax-entry ?· "_" (standard-syntax-table))))
+ (sample-text . "\
+Catalan (Català) Avui demà i ahir s'esfullarà una rosa.")
+ (documentation . "\
+This language environment uses the ISO-8859-1 character set,
+sets the default input method to \"catalan-prefix\", and sets
+the syntax of the middle dot character `·' to word."))
+ '("European"))
+
+
(define-coding-system 'mac-roman
"Mac Roman Encoding (MIME:MACINTOSH)."
diff --git a/lisp/language/japan-util.el b/lisp/language/japan-util.el
index f0d817b8b5..939b70ab91 100644
--- a/lisp/language/japan-util.el
+++ b/lisp/language/japan-util.el
@@ -57,6 +57,7 @@
(?$B$C(B ?$B%C(B ?(I/(B)
(?$B$c(B ?$B%c(B ?(I,(B) (?$B$e(B ?$B%e(B ?(I-(B) (?$B$g(B ?$B%g(B ?(I.(B)
(?$B$n(B ?$B%n(B "(I\(B")
+ (?$B!5(B ?$B!3(B) (?$B!6(B ?$B!4(B)
("$B$&!+(B" ?$B%t(B "(I3^(B") (nil ?$B%u(B "(I6(B") (nil ?$B%v(B "(I9(B"))
"Japanese JISX0208 Kana character table.
Each element is of the form (HIRAGANA KATAKANA HANKAKU-KATAKANA), where
@@ -146,7 +147,7 @@ and HANKAKU belongs to `japanese-jisx0201-kana'.")
(?$B#p(B . ?p) (?$B#q(B . ?q) (?$B#r(B . ?r) (?$B#s(B . ?s) (?$B#t(B . ?t)
(?$B#u(B . ?u) (?$B#v(B . ?v) (?$B#w(B . ?w) (?$B#x(B . ?x) (?$B#y(B . ?y) (?$B#z(B . ?z))
"Japanese JISX0208 alpha numeric character table.
-Each element is of the form (ALPHA-NUMERIC ASCII), where ALPHA-NUMERIC
+Each element is of the form (ALPHA-NUMERIC . ASCII), where ALPHA-NUMERIC
belongs to `japanese-jisx0208', ASCII belongs to `ascii'.")
;; Put properties 'jisx0208 and 'ascii to each Japanese alpha numeric
diff --git a/lisp/language/lao-util.el b/lisp/language/lao-util.el
index 6103860a84..a42904f5de 100644
--- a/lisp/language/lao-util.el
+++ b/lisp/language/lao-util.el
@@ -38,100 +38,100 @@
(define-category ?v "Lao upper/lower vowel" lao-category-table)
(define-category ?t "Lao tone" lao-category-table)
-(let ((l '((?ຠconsonant "LETTER KOR KAI'" "CHICKEN")
- (?ຂ consonant "LETTER KHOR KHAI'" "EGG")
- (?຃ invalid nil)
- (?ຄ consonant "LETTER QHOR QHWARGN" "BUFFALO")
- (?຅ invalid nil)
- (? invalid nil)
- (?ງ consonant "LETTER NGOR NGUU" "SNAKE")
- (?ຈ consonant "LETTER JOR JUA" "BUDDHIST NOVICE")
- (?ຉ invalid nil)
- (?ຊ consonant "LETTER XOR X\"ARNG" "ELEPHANT")
- (?຋ invalid nil)
- (?ຌ invalid nil)
- (?ຠconsonant "LETTER YOR YUNG" "MOSQUITO")
- (?ຎ invalid nil)
- (?ຎ invalid nil)
- (?ຎ invalid nil)
- (?ຎ invalid nil)
- (?ຎ invalid nil)
- (?ຎ invalid nil)
- (?ດ consonant "LETTER DOR DANG" "NOSE")
- (?ຕ consonant "LETTER TOR TAR" "EYE")
- (?ຖ consonant "LETTER THOR THUNG" "TO ASK,QUESTION")
- (?ທ consonant "LETTER DHOR DHARM" "FLAG")
- (?ຘ invalid nil)
- (?ນ consonant "LETTER NOR NOK" "BIRD")
- (?ບ consonant "LETTER BOR BED" "FISHHOOK")
- (?ປ consonant "LETTER POR PAR" "FISH")
- (?ຜ consonant "LETTER HPOR HPER\"" "BEE")
- (?ຠconsonant "LETTER FHOR FHAR" "WALL")
- (?ພ consonant "LETTER PHOR PHUU" "MOUNTAIN")
- (?ຟ consonant "LETTER FOR FAI" "FIRE")
- (?ຠ invalid nil)
- (?ມ consonant "LETTER MOR MAR\"" "HORSE")
- (?ຢ consonant "LETTER GNOR GNAR" "MEDICINE")
- (?ຣ consonant "LETTER ROR ROD" "CAR")
- (?຤ invalid nil)
- (?ລ consonant "LETTER LOR LIING" "MONKEY")
- (?຦ invalid nil)
- (?ວ consonant "LETTER WOR WII" "HAND FAN")
- (?ຨ invalid nil)
- (?ຩ invalid nil)
- (?ສ consonant "LETTER SOR SEA" "TIGER")
- (?ຫ consonant "LETTER HHOR HHAI" "JAR")
- (?ຬ invalid nil)
- (?ອ consonant "LETTER OR OOW" "TAKE")
- (?ຮ consonant "LETTER HOR HEA" "BOAT")
- (?ຯ special "ELLIPSIS")
- (?ະ vowel-base "VOWEL SIGN SARA A")
- (?ັ vowel-upper "VOWEL SIGN MAI KAN")
- (?າ vowel-base "VOWEL SIGN SARA AR")
- (?ຳ vowel-base "VOWEL SIGN SARA AM")
- (?ິ vowel-upper "VOWEL SIGN SARA I")
- (?ີ vowel-upper "VOWEL SIGN SARA II")
- (?ຶ vowel-upper "VOWEL SIGN SARA EU")
- (?ື vowel-upper "VOWEL SIGN SARA UR")
- (?ຸ vowel-lower "VOWEL SIGN SARA U")
- (?ູ vowel-lower "VOWEL SIGN SARA UU")
- (?຺ invalid nil)
- (?ົ vowel-upper "VOWEL SIGN MAI KONG")
- (?ຼ semivowel-lower "SEMIVOWEL SIGN LO")
- (?ຽ vowel-base "SEMIVOWEL SIGN SARA IA")
- (?຾ invalid nil)
- (?຿ invalid nil)
- (?ເ vowel-base "VOWEL SIGN SARA EE")
- (?à» vowel-base "VOWEL SIGN SARA AA")
- (?ໂ vowel-base "VOWEL SIGN SARA OO")
- (?ໃ vowel-base "VOWEL SIGN SARA EI MAI MUAN\"")
- (?ໄ vowel-base "VOWEL SIGN SARA AI MAI MAY")
- (?à»… invalid nil)
- (?ໆ special "KO LA (REPETITION)")
- (?໇ invalid nil)
- (?່ tone "TONE MAI EK")
- (?້ tone "TONE MAI THO")
- (?໊ tone "TONE MAI TI")
- (?໋ tone "TONE MAI JADTAWAR")
- (?໌ tone "CANCELLATION MARK")
- (?à» vowel-upper "VOWEL SIGN SARA OR")
- (?໎ invalid nil)
- (?à» invalid nil)
- (?à» special "DIGIT ZERO")
- (?໑ special "DIGIT ONE")
- (?à»’ special "DIGIT TWO")
- (?໓ special "DIGIT THREE")
- (?à»” special "DIGIT FOUR")
- (?໕ special "DIGIT FIVE")
- (?à»– special "DIGIT SIX")
- (?à»— special "DIGIT SEVEN")
- (?໘ special "DIGIT EIGHT")
- (?à»™ special "DIGIT NINE")
- (?໚ invalid nil)
- (?à»› invalid nil)
- (?ໜ consonant "LETTER NHOR NHUU" "MOUSE")
- (?à» consonant "LETTER MHOR MHAR" "DOG")
- (?ໞ invalid nil)))
+(let ((l '((?ຠconsonant "CHICKEN")
+ (?ຂ consonant "EGG")
+ (?຃ invalid)
+ (?ຄ consonant "BUFFALO")
+ (?຅ invalid)
+ (? invalid)
+ (?ງ consonant "SNAKE")
+ (?ຈ consonant "BUDDHIST NOVICE")
+ (?ຉ invalid)
+ (?ຊ consonant "ELEPHANT")
+ (?຋ invalid)
+ (?ຌ invalid)
+ (?ຠconsonant "MOSQUITO")
+ (?ຎ invalid)
+ (?ຎ invalid)
+ (?ຎ invalid)
+ (?ຎ invalid)
+ (?ຎ invalid)
+ (?ຎ invalid)
+ (?ດ consonant "NOSE")
+ (?ຕ consonant "EYE")
+ (?ຖ consonant "TO ASK,QUESTION")
+ (?ທ consonant "FLAG")
+ (?ຘ invalid)
+ (?ນ consonant "BIRD")
+ (?ບ consonant "FISHHOOK")
+ (?ປ consonant "FISH")
+ (?ຜ consonant "BEE")
+ (?ຠconsonant "WALL")
+ (?ພ consonant "MOUNTAIN")
+ (?ຟ consonant "FIRE")
+ (?ຠ invalid)
+ (?ມ consonant "HORSE")
+ (?ຢ consonant "MEDICINE")
+ (?ຣ consonant "CAR")
+ (?຤ invalid)
+ (?ລ consonant "MONKEY")
+ (?຦ invalid)
+ (?ວ consonant "HAND FAN")
+ (?ຨ invalid)
+ (?ຩ invalid)
+ (?ສ consonant "TIGER")
+ (?ຫ consonant "JAR")
+ (?ຬ invalid)
+ (?ອ consonant "TAKE")
+ (?ຮ consonant "BOAT")
+ (?ຯ special)
+ (?ະ vowel-base)
+ (?ັ vowel-upper)
+ (?າ vowel-base)
+ (?ຳ vowel-base)
+ (?ິ vowel-upper)
+ (?ີ vowel-upper)
+ (?ຶ vowel-upper)
+ (?ື vowel-upper)
+ (?ຸ vowel-lower)
+ (?ູ vowel-lower)
+ (?຺ invalid)
+ (?ົ vowel-upper)
+ (?ຼ semivowel-lower)
+ (?ຽ vowel-base)
+ (?຾ invalid)
+ (?຿ invalid)
+ (?ເ vowel-base)
+ (?à» vowel-base)
+ (?ໂ vowel-base)
+ (?ໃ vowel-base)
+ (?ໄ vowel-base)
+ (?à»… invalid)
+ (?ໆ special)
+ (?໇ invalid)
+ (?່ tone)
+ (?້ tone)
+ (?໊ tone)
+ (?໋ tone)
+ (?໌ tone)
+ (?à» vowel-upper)
+ (?໎ invalid)
+ (?à» invalid)
+ (?à» special)
+ (?໑ special)
+ (?à»’ special)
+ (?໓ special)
+ (?à»” special)
+ (?໕ special)
+ (?à»– special)
+ (?à»— special)
+ (?໘ special)
+ (?à»™ special)
+ (?໚ invalid)
+ (?à»› invalid)
+ (?ໜ consonant "MOUSE")
+ (?à» consonant "DOG")
+ (?ໞ invalid)))
elm)
(while l
(setq elm (car l) l (cdr l))
@@ -146,8 +146,7 @@
((eq ptype 'tone)
(modify-category-entry char ?t lao-category-table)))
(put-char-code-property char 'phonetic-type ptype)
- (put-char-code-property char 'name (nth 2 elm))
- (put-char-code-property char 'meaning (nth 3 elm)))))
+ (put-char-code-property char 'meaning (nth 2 elm)))))
;; The general composing rules are as follows:
;;
diff --git a/lisp/language/thai-util.el b/lisp/language/thai-util.el
index a9af5cf9be..618af57243 100644
--- a/lisp/language/thai-util.el
+++ b/lisp/language/thai-util.el
@@ -55,100 +55,100 @@
"\\cc\\(\\cu\\|\\cI\\cU\\|\\cv\\ct?\\)\\|\\cv\\ct\\|\\cI\\cU"
"Regular expression matching a Thai composite sequence.")
-(let ((l '((?ภconsonant "LETTER KO KAI") ; 0xA1
- (?ข consonant "LETTER KHO KHAI") ; 0xA2
- (?ฃ consonant "LETTER KHO KHUAT") ; 0xA3
- (?ค consonant "LETTER KHO KHWAI") ; 0xA4
- (?ฅ consonant "LETTER KHO KHON") ; 0xA5
- (?ฆ consonant "LETTER KHO RAKHANG") ; 0xA6
- (?ง consonant "LETTER NGO NGU") ; 0xA7
- (?จ consonant "LETTER CHO CHAN") ; 0xA8
- (?ฉ consonant "LETTER CHO CHING") ; 0xA9
- (?ช consonant "LETTER CHO CHANG") ; 0xAA
- (?ซ consonant "LETTER SO SO") ; 0xAB
- (?ฌ consonant "LETTER CHO CHOE") ; 0xAC
- (?ภconsonant "LETTER YO YING") ; 0xAD
- (?ฎ consonant "LETTER DO CHADA") ; 0xAE
- (?ภconsonant "LETTER TO PATAK") ; 0xAF
- (?ภconsonant "LETTER THO THAN") ; 0xB0
- (?ฑ consonant "LETTER THO NANGMONTHO") ; 0xB1
- (?ฒ consonant "LETTER THO PHUTHAO") ; 0xB2
- (?ณ consonant "LETTER NO NEN") ; 0xB3
- (?ด consonant "LETTER DO DEK") ; 0xB4
- (?ต consonant "LETTER TO TAO") ; 0xB5
- (?ถ consonant "LETTER THO THUNG") ; 0xB6
- (?ท consonant "LETTER THO THAHAN") ; 0xB7
- (?ธ consonant "LETTER THO THONG") ; 0xB8
- (?น consonant "LETTER NO NU") ; 0xB9
- (?บ consonant "LETTER BO BAIMAI") ; 0xBA
- (?ป consonant "LETTER PO PLA") ; 0xBB
- (?ผ consonant "LETTER PHO PHUNG") ; 0xBC
- (?ภconsonant "LETTER FO FA") ; 0xBD
- (?พ consonant "LETTER PHO PHAN") ; 0xBE
- (?ฟ consonant "LETTER FO FAN") ; 0xBF
- (?ภ consonant "LETTER PHO SAMPHAO") ; 0xC0
- (?ม consonant "LETTER MO MA") ; 0xC1
- (?ย consonant "LETTER YO YAK") ; 0xC2
- (?ร consonant "LETTER RO RUA") ; 0xC3
- (?ฤ vowel-base "LETTER RU (Pali vowel letter)") ; 0xC4
- (?ล consonant "LETTER LO LING") ; 0xC5
- (?ฦ vowel-base "LETTER LU (Pali vowel letter)") ; 0xC6
- (?ว consonant "LETTER WO WAEN") ; 0xC7
- (?ศ consonant "LETTER SO SALA") ; 0xC8
- (?ษ consonant "LETTER SO RUSI") ; 0xC9
- (?ส consonant "LETTER SO SUA") ; 0xCA
- (?ห consonant "LETTER HO HIP") ; 0xCB
- (?ฬ consonant "LETTER LO CHULA") ; 0xCC
- (?อ consonant "LETTER O ANG") ; 0xCD
- (?ฮ consonant "LETTER HO NOK HUK") ; 0xCE
- (?ฯ special "PAI YAN NOI (abbreviation)") ; 0xCF
- (?ะ vowel-base "VOWEL SIGN SARA A") ; 0xD0
- (?ั vowel-upper "VOWEL SIGN MAI HAN-AKAT N/S-T") ; 0xD1
- (?า vowel-base "VOWEL SIGN SARA AA") ; 0xD2
- (?ำ vowel-base "VOWEL SIGN SARA AM") ; 0xD3
- (?ิ vowel-upper "VOWEL SIGN SARA I N/S-T") ; 0xD4
- (?ี vowel-upper "VOWEL SIGN SARA II N/S-T") ; 0xD5
- (?ึ vowel-upper "VOWEL SIGN SARA UE N/S-T") ; 0xD6
- (?ื vowel-upper "VOWEL SIGN SARA UEE N/S-T") ; 0xD7
- (?ุ vowel-lower "VOWEL SIGN SARA U N/S-B") ; 0xD8
- (?ู vowel-lower "VOWEL SIGN SARA UU N/S-B") ; 0xD9
- (?ฺ vowel-lower "VOWEL SIGN PHINTHU N/S-B (Pali virama)") ; 0xDA
- (?฻ invalid nil) ; 0xDA
- (?฼ invalid nil) ; 0xDC
- (?฽ invalid nil) ; 0xDC
- (?฾ invalid nil) ; 0xDC
- (?฿ special "BAHT SIGN (currency symbol)") ; 0xDF
- (?เ vowel-base "VOWEL SIGN SARA E") ; 0xE0
- (?๠vowel-base "VOWEL SIGN SARA AE") ; 0xE1
- (?โ vowel-base "VOWEL SIGN SARA O") ; 0xE2
- (?ใ vowel-base "VOWEL SIGN SARA MAI MUAN") ; 0xE3
- (?ไ vowel-base "VOWEL SIGN SARA MAI MALAI") ; 0xE4
- (?ๅ vowel-base "LAK KHANG YAO") ; 0xE5
- (?ๆ special "MAI YAMOK (repetition)") ; 0xE6
- (?็ sign-upper "VOWEL SIGN MAI TAI KHU N/S-T") ; 0xE7
- (?่ tone "TONE MAI EK N/S-T") ; 0xE8
- (?้ tone "TONE MAI THO N/S-T") ; 0xE9
- (?๊ tone "TONE MAI TRI N/S-T") ; 0xEA
- (?๋ tone "TONE MAI CHATTAWA N/S-T") ; 0xEB
- (?์ sign-upper "THANTHAKHAT N/S-T (cancellation mark)") ; 0xEC
- (?๠sign-upper "NIKKHAHIT N/S-T (final nasal)") ; 0xED
- (?๎ sign-upper "YAMAKKAN N/S-T") ; 0xEE
- (?๠special "FONRMAN") ; 0xEF
- (?๠special "DIGIT ZERO") ; 0xF0
- (?๑ special "DIGIT ONE") ; 0xF1
- (?๒ special "DIGIT TWO") ; 0xF2
- (?๓ special "DIGIT THREE") ; 0xF3
- (?๔ special "DIGIT FOUR") ; 0xF4
- (?๕ special "DIGIT FIVE") ; 0xF5
- (?๖ special "DIGIT SIX") ; 0xF6
- (?๗ special "DIGIT SEVEN") ; 0xF7
- (?๘ special "DIGIT EIGHT") ; 0xF8
- (?๙ special "DIGIT NINE") ; 0xF9
- (?๚ special "ANGKHANKHU (ellipsis)") ; 0xFA
- (?๛ special "KHOMUT (beginning of religious texts)") ; 0xFB
- (?๜ invalid nil) ; 0xFC
- (?๠invalid nil) ; 0xFD
- (?๞ invalid nil) ; 0xFE
+(let ((l '((?ภconsonant) ; 0xA1
+ (?ข consonant) ; 0xA2
+ (?ฃ consonant) ; 0xA3
+ (?ค consonant) ; 0xA4
+ (?ฅ consonant) ; 0xA5
+ (?ฆ consonant) ; 0xA6
+ (?ง consonant) ; 0xA7
+ (?จ consonant) ; 0xA8
+ (?ฉ consonant) ; 0xA9
+ (?ช consonant) ; 0xAA
+ (?ซ consonant) ; 0xAB
+ (?ฌ consonant) ; 0xAC
+ (?ภconsonant) ; 0xAD
+ (?ฎ consonant) ; 0xAE
+ (?ภconsonant) ; 0xAF
+ (?ภconsonant) ; 0xB0
+ (?ฑ consonant) ; 0xB1
+ (?ฒ consonant) ; 0xB2
+ (?ณ consonant) ; 0xB3
+ (?ด consonant) ; 0xB4
+ (?ต consonant) ; 0xB5
+ (?ถ consonant) ; 0xB6
+ (?ท consonant) ; 0xB7
+ (?ธ consonant) ; 0xB8
+ (?น consonant) ; 0xB9
+ (?บ consonant) ; 0xBA
+ (?ป consonant) ; 0xBB
+ (?ผ consonant) ; 0xBC
+ (?ภconsonant) ; 0xBD
+ (?พ consonant) ; 0xBE
+ (?ฟ consonant) ; 0xBF
+ (?ภ consonant) ; 0xC0
+ (?ม consonant) ; 0xC1
+ (?ย consonant) ; 0xC2
+ (?ร consonant) ; 0xC3
+ (?ฤ vowel-base) ; 0xC4
+ (?ล consonant) ; 0xC5
+ (?ฦ vowel-base) ; 0xC6
+ (?ว consonant) ; 0xC7
+ (?ศ consonant) ; 0xC8
+ (?ษ consonant) ; 0xC9
+ (?ส consonant) ; 0xCA
+ (?ห consonant) ; 0xCB
+ (?ฬ consonant) ; 0xCC
+ (?อ consonant) ; 0xCD
+ (?ฮ consonant) ; 0xCE
+ (?ฯ special) ; 0xCF
+ (?ะ vowel-base) ; 0xD0
+ (?ั vowel-upper) ; 0xD1
+ (?า vowel-base) ; 0xD2
+ (?ำ vowel-base) ; 0xD3
+ (?ิ vowel-upper) ; 0xD4
+ (?ี vowel-upper) ; 0xD5
+ (?ึ vowel-upper) ; 0xD6
+ (?ื vowel-upper) ; 0xD7
+ (?ุ vowel-lower) ; 0xD8
+ (?ู vowel-lower) ; 0xD9
+ (?ฺ vowel-lower) ; 0xDA
+ (?฻ invalid) ; 0xDA
+ (?฼ invalid) ; 0xDC
+ (?฽ invalid) ; 0xDC
+ (?฾ invalid) ; 0xDC
+ (?฿ special) ; 0xDF
+ (?เ vowel-base) ; 0xE0
+ (?๠vowel-base) ; 0xE1
+ (?โ vowel-base) ; 0xE2
+ (?ใ vowel-base) ; 0xE3
+ (?ไ vowel-base) ; 0xE4
+ (?ๅ vowel-base) ; 0xE5
+ (?ๆ special) ; 0xE6
+ (?็ sign-upper) ; 0xE7
+ (?่ tone) ; 0xE8
+ (?้ tone) ; 0xE9
+ (?๊ tone) ; 0xEA
+ (?๋ tone) ; 0xEB
+ (?์ sign-upper) ; 0xEC
+ (?๠sign-upper) ; 0xED
+ (?๎ sign-upper) ; 0xEE
+ (?๠special) ; 0xEF
+ (?๠special) ; 0xF0
+ (?๑ special) ; 0xF1
+ (?๒ special) ; 0xF2
+ (?๓ special) ; 0xF3
+ (?๔ special) ; 0xF4
+ (?๕ special) ; 0xF5
+ (?๖ special) ; 0xF6
+ (?๗ special) ; 0xF7
+ (?๘ special) ; 0xF8
+ (?๙ special) ; 0xF9
+ (?๚ special) ; 0xFA
+ (?๛ special) ; 0xFB
+ (?๜ invalid) ; 0xFC
+ (?๠invalid) ; 0xFD
+ (?๞ invalid) ; 0xFE
))
elm)
(while l
@@ -170,8 +170,7 @@
(modify-category-entry char ?u thai-category-table)
(if (= char ?์)
;; Give category `U' to "THANTHAKHAT".
- (modify-category-entry char ?U thai-category-table))))
- (put-char-code-property char 'name (nth 2 elm)))))
+ (modify-category-entry char ?U thai-category-table)))))))
(defun thai-compose-syllable (beg end &optional category-set string)
(or category-set
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index eaf73aede0..4ccb612384 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -3,7 +3,7 @@
;;; Code:
-;;;### (autoloads nil "5x5" "play/5x5.el" (22388 6383 169254 278000))
+;;;### (autoloads nil "5x5" "play/5x5.el" (0 0 0 0))
;;; Generated autoloads from play/5x5.el
(autoload '5x5 "5x5" "\
@@ -63,10 +63,11 @@ should return a grid vector array that is the new solution.
\(fn BREEDER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "5x5" '("5x5-")))
+
;;;***
-;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (22388 6383
-;;;;;; 531257 838000))
+;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (0 0 0 0))
;;; Generated autoloads from progmodes/ada-mode.el
(autoload 'ada-add-extensions "ada-mode" "\
@@ -83,10 +84,18 @@ Ada mode is the major mode for editing Ada code.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ada-mode" '("ada-")))
+
+;;;***
+
+;;;### (autoloads nil "ada-prj" "progmodes/ada-prj.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/ada-prj.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ada-prj" '("ada-")))
+
;;;***
-;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (22388 6383
-;;;;;; 583258 350000))
+;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (0 0 0 0))
;;; Generated autoloads from progmodes/ada-stmt.el
(autoload 'ada-header "ada-stmt" "\
@@ -94,10 +103,11 @@ Insert a descriptive header at the top of the file.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ada-stmt" '("ada-")))
+
;;;***
-;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (22388 6383
-;;;;;; 612258 635000))
+;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (0 0 0 0))
;;; Generated autoloads from progmodes/ada-xref.el
(autoload 'ada-find-file "ada-xref" "\
@@ -106,10 +116,11 @@ Completion is available.
\(fn FILENAME)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ada-xref" '("ada-")))
+
;;;***
-;;;### (autoloads nil "add-log" "vc/add-log.el" (22388 6390 743328
-;;;;;; 764000))
+;;;### (autoloads nil "add-log" "vc/add-log.el" (0 0 0 0))
;;; Generated autoloads from vc/add-log.el
(put 'change-log-default-name 'safe-local-variable 'string-or-null-p)
@@ -152,7 +163,11 @@ If `change-log-default-name' is nil, behave as though it were \"ChangeLog\"
If `change-log-default-name' contains a leading directory component, then
simply find it in the current directory. Otherwise, search in the current
-directory and its successive parents for a file so named.
+directory and its successive parents for a file so named. Stop at the first
+such file that exists (or has a buffer visiting it), or the first directory
+that contains any of `change-log-directory-files'. If no match is found,
+use the current directory. To override the choice of this function,
+simply create an empty ChangeLog file first by hand in the desired place.
Once a file is found, `change-log-default-name' is set locally in the
current buffer to the complete file name.
@@ -236,10 +251,11 @@ old-style time formats for entries are supported.
\(fn OTHER-LOG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "add-log" '("change-log-" "add-log-")))
+
;;;***
-;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (22388 6368
-;;;;;; 545110 460000))
+;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/advice.el
(defvar ad-redefinition-action 'warn "\
@@ -372,9 +388,11 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
(function-put 'defadvice 'lisp-indent-function '2)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "advice" '("ad-")))
+
;;;***
-;;;### (autoloads nil "align" "align.el" (22388 5702 14555 614000))
+;;;### (autoloads nil "align" "align.el" (0 0 0 0))
;;; Generated autoloads from align.el
(autoload 'align "align" "\
@@ -477,9 +495,11 @@ indented.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "align" '("align-")))
+
;;;***
-;;;### (autoloads nil "allout" "allout.el" (22388 5702 143556 882000))
+;;;### (autoloads nil "allout" "allout.el" (0 0 0 0))
;;; Generated autoloads from allout.el
(push (purecopy '(allout 2 3)) package--builtin-versions)
@@ -837,10 +857,12 @@ for details on preparing Emacs for automatic allout activation.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "allout" '("allout-")))
+
;;;***
-;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (22388
-;;;;;; 5702 56556 27000))
+;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from allout-widgets.el
(push (purecopy '(allout-widgets 1 0)) package--builtin-versions)
@@ -896,10 +918,11 @@ outline hot-spot navigation (see `allout-mode').
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "allout-widgets" '("allout-")))
+
;;;***
-;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (22388 6377 227195
-;;;;;; 842000))
+;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (0 0 0 0))
;;; Generated autoloads from net/ange-ftp.el
(defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir)
@@ -918,10 +941,11 @@ directory, so that Emacs will know its current contents.
\(fn OPERATION &rest ARGS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ange-ftp" '("ange-ftp-" "internal-ange-ftp-mode" "ftp-error")))
+
;;;***
-;;;### (autoloads nil "animate" "play/animate.el" (22388 6383 172254
-;;;;;; 308000))
+;;;### (autoloads nil "animate" "play/animate.el" (0 0 0 0))
;;; Generated autoloads from play/animate.el
(autoload 'animate-string "animate" "\
@@ -951,10 +975,11 @@ the buffer *Birthday-Present-for-Name*.
\(fn &optional NAME)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "animate" '("animat")))
+
;;;***
-;;;### (autoloads nil "ansi-color" "ansi-color.el" (22388 5702 202557
-;;;;;; 463000))
+;;;### (autoloads nil "ansi-color" "ansi-color.el" (0 0 0 0))
;;; Generated autoloads from ansi-color.el
(push (purecopy '(ansi-color 3 4 2)) package--builtin-versions)
@@ -978,10 +1003,12 @@ This is a good function to put in `comint-output-filter-functions'.
\(fn IGNORED)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ansi-color" '("ansi-color-")))
+
;;;***
-;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (22388
-;;;;;; 6383 656259 67000))
+;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from progmodes/antlr-mode.el
(push (purecopy '(antlr-mode 2 2 3)) package--builtin-versions)
@@ -1015,10 +1042,11 @@ Used in `antlr-mode'. Also a useful function in `java-mode-hook'.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "antlr-mode" '("antlr-")))
+
;;;***
-;;;### (autoloads nil "appt" "calendar/appt.el" (22388 6367 808103
-;;;;;; 212000))
+;;;### (autoloads nil "appt" "calendar/appt.el" (0 0 0 0))
;;; Generated autoloads from calendar/appt.el
(autoload 'appt-add "appt" "\
@@ -1037,9 +1065,11 @@ ARG is positive, otherwise off.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "appt" '("appt-")))
+
;;;***
-;;;### (autoloads nil "apropos" "apropos.el" (22388 5702 277558 200000))
+;;;### (autoloads nil "apropos" "apropos.el" (0 0 0 0))
;;; Generated autoloads from apropos.el
(autoload 'apropos-read-pattern "apropos" "\
@@ -1153,10 +1183,11 @@ Returns list of symbols and documentation found.
\(fn PATTERN &optional DO-ALL)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "apropos" '("apropos-")))
+
;;;***
-;;;### (autoloads nil "arc-mode" "arc-mode.el" (22388 5702 279558
-;;;;;; 220000))
+;;;### (autoloads nil "arc-mode" "arc-mode.el" (0 0 0 0))
;;; Generated autoloads from arc-mode.el
(autoload 'archive-mode "arc-mode" "\
@@ -1174,9 +1205,11 @@ archive.
\(fn &optional FORCE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "arc-mode" '("archive-")))
+
;;;***
-;;;### (autoloads nil "array" "array.el" (22388 5702 287558 299000))
+;;;### (autoloads nil "array" "array.el" (0 0 0 0))
;;; Generated autoloads from array.el
(autoload 'array-mode "array" "\
@@ -1245,10 +1278,11 @@ Entering array mode calls the function `array-mode-hook'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "array" '("array-" "untabify-backward" "move-to-column-untabify" "current-line" "xor" "limit-index")))
+
;;;***
-;;;### (autoloads nil "artist" "textmodes/artist.el" (22388 6389
-;;;;;; 2311 642000))
+;;;### (autoloads nil "artist" "textmodes/artist.el" (0 0 0 0))
;;; Generated autoloads from textmodes/artist.el
(push (purecopy '(artist 1 2 6)) package--builtin-versions)
@@ -1452,10 +1486,11 @@ Keymap summary
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "artist" '("artist-")))
+
;;;***
-;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (22388 6383
-;;;;;; 682259 323000))
+;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (0 0 0 0))
;;; Generated autoloads from progmodes/asm-mode.el
(autoload 'asm-mode "asm-mode" "\
@@ -1480,11 +1515,12 @@ Special commands:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "asm-mode" '("asm-")))
+
;;;***
-;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (22388
-;;;;;; 6371 630140 799000))
-;;; Generated autoloads from gnus/auth-source.el
+;;;### (autoloads nil "auth-source" "auth-source.el" (0 0 0 0))
+;;; Generated autoloads from auth-source.el
(defvar auth-source-cache-expiry 7200 "\
How many seconds passwords are cached, or nil to disable
@@ -1493,9 +1529,11 @@ let-binding.")
(custom-autoload 'auth-source-cache-expiry "auth-source" t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "auth-source" '("auth-source")))
+
;;;***
-;;;### (autoloads nil "autoarg" "autoarg.el" (22388 5702 305558 475000))
+;;;### (autoloads nil "autoarg" "autoarg.el" (0 0 0 0))
;;; Generated autoloads from autoarg.el
(defvar autoarg-mode nil "\
@@ -1555,10 +1593,11 @@ This is similar to `autoarg-mode' but rebinds the keypad keys
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "autoarg" '("autoarg-")))
+
;;;***
-;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (22388 6383
-;;;;;; 698259 481000))
+;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (0 0 0 0))
;;; Generated autoloads from progmodes/autoconf.el
(autoload 'autoconf-mode "autoconf" "\
@@ -1566,10 +1605,11 @@ Major mode for editing Autoconf configure.ac files.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "autoconf" '("autoconf-")))
+
;;;***
-;;;### (autoloads nil "autoinsert" "autoinsert.el" (22388 5702 322558
-;;;;;; 643000))
+;;;### (autoloads nil "autoinsert" "autoinsert.el" (0 0 0 0))
;;; Generated autoloads from autoinsert.el
(autoload 'auto-insert "autoinsert" "\
@@ -1606,10 +1646,12 @@ insert a template for the file depending on the mode of the buffer.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "autoinsert" '("auto-insert")))
+
;;;***
-;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (22388
-;;;;;; 6368 588110 884000))
+;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from emacs-lisp/autoload.el
(put 'generated-autoload-file 'safe-local-variable 'stringp)
@@ -1658,19 +1700,20 @@ should be non-nil).
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "autoload" '("autoload-" "generate" "no-update-autoloads" "make-autoload")))
+
;;;***
-;;;### (autoloads nil "autorevert" "autorevert.el" (22388 5702 322558
-;;;;;; 643000))
+;;;### (autoloads nil "autorevert" "autorevert.el" (0 0 0 0))
;;; Generated autoloads from autorevert.el
(autoload 'auto-revert-mode "autorevert" "\
-Toggle reverting buffer when the file changes (Auto Revert mode).
-With a prefix argument ARG, enable Auto Revert mode if ARG is
+Toggle reverting buffer when the file changes (Auto-Revert Mode).
+With a prefix argument ARG, enable Auto-Revert Mode if ARG is
positive, and disable it otherwise. If called from Lisp, enable
the mode if ARG is omitted or nil.
-Auto Revert mode is a minor mode that affects only the current
+Auto-Revert Mode is a minor mode that affects only the current
buffer. When enabled, it reverts the buffer when the file on
disk changes.
@@ -1690,11 +1733,11 @@ This function is designed to be added to hooks, for example:
(autoload 'auto-revert-tail-mode "autorevert" "\
Toggle reverting tail of buffer when the file grows.
-With a prefix argument ARG, enable Auto-Revert Tail mode if ARG
+With a prefix argument ARG, enable Auto-Revert Tail Mode if ARG
is positive, and disable it otherwise. If called from Lisp,
enable the mode if ARG is omitted or nil.
-When Auto Revert Tail mode is enabled, the tail of the file is
+When Auto-Revert Tail Mode is enabled, the tail of the file is
constantly followed, as with the shell command `tail -f'. This
means that whenever the file grows on disk (presumably because
some background process is appending to it from time to time),
@@ -1709,7 +1752,7 @@ Use `auto-revert-mode' for changes other than appends!
\(fn &optional ARG)" t nil)
(autoload 'turn-on-auto-revert-tail-mode "autorevert" "\
-Turn on Auto-Revert Tail mode.
+Turn on Auto-Revert Tail Mode.
This function is designed to be added to hooks, for example:
(add-hook \\='my-logfile-mode-hook #\\='turn-on-auto-revert-tail-mode)
@@ -1727,12 +1770,12 @@ or call the function `global-auto-revert-mode'.")
(custom-autoload 'global-auto-revert-mode "autorevert" nil)
(autoload 'global-auto-revert-mode "autorevert" "\
-Toggle Global Auto Revert mode.
-With a prefix argument ARG, enable Global Auto Revert mode if ARG
+Toggle Global Auto-Revert Mode.
+With a prefix argument ARG, enable Global Auto-Revert Mode if ARG
is positive, and disable it otherwise. If called from Lisp,
enable the mode if ARG is omitted or nil.
-Global Auto Revert mode is a global minor mode that reverts any
+Global Auto-Revert Mode is a global minor mode that reverts any
buffer associated with a file when the file changes on disk. Use
`auto-revert-mode' to revert a particular buffer.
@@ -1748,9 +1791,19 @@ specifies in the mode line.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "autorevert" '("auto-revert-" "global-auto-revert-")))
+
+;;;***
+
+;;;### (autoloads nil "avl-tree" "emacs-lisp/avl-tree.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from emacs-lisp/avl-tree.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "avl-tree" '("avl-tree-")))
+
;;;***
-;;;### (autoloads nil "avoid" "avoid.el" (22388 5702 326558 682000))
+;;;### (autoloads nil "avoid" "avoid.el" (0 0 0 0))
;;; Generated autoloads from avoid.el
(defvar mouse-avoidance-mode nil "\
@@ -1786,10 +1839,11 @@ definition of \"random distance\".)
\(fn &optional MODE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "avoid" '("mouse-avoidance-")))
+
;;;***
-;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (22388 6383
-;;;;;; 700259 500000))
+;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (0 0 0 0))
;;; Generated autoloads from progmodes/bat-mode.el
(add-to-list 'auto-mode-alist '("\\.\\(bat\\|cmd\\)\\'" . bat-mode))
@@ -1805,9 +1859,11 @@ Run script using `bat-run' and `bat-run-args'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bat-mode" '("bat-")))
+
;;;***
-;;;### (autoloads nil "battery" "battery.el" (22388 5702 332558 741000))
+;;;### (autoloads nil "battery" "battery.el" (0 0 0 0))
;;; Generated autoloads from battery.el
(put 'battery-mode-line-string 'risky-local-variable t)
@@ -1841,10 +1897,12 @@ seconds.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "battery" '("battery-")))
+
;;;***
-;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (22388
-;;;;;; 6368 596110 962000))
+;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from emacs-lisp/benchmark.el
(autoload 'benchmark-run "benchmark" "\
@@ -1878,10 +1936,18 @@ For non-interactive use see also `benchmark-run' and
\(fn REPETITIONS FORM)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "benchmark" '("benchmark-elapse")))
+
+;;;***
+
+;;;### (autoloads nil "bib-mode" "textmodes/bib-mode.el" (0 0 0 0))
+;;; Generated autoloads from textmodes/bib-mode.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bib-mode" '("bib-" "unread-bib" "mark-bib" "return-key-bib" "addbib")))
+
;;;***
-;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (22388 6389
-;;;;;; 163313 226000))
+;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (0 0 0 0))
;;; Generated autoloads from textmodes/bibtex.el
(autoload 'bibtex-initialize "bibtex" "\
@@ -1970,10 +2036,12 @@ A prefix arg negates the value of `bibtex-search-entry-globally'.
\(fn KEY &optional GLOBAL START DISPLAY)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bibtex" '("bibtex-")))
+
;;;***
;;;### (autoloads nil "bibtex-style" "textmodes/bibtex-style.el"
-;;;;;; (22388 6389 80312 409000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from textmodes/bibtex-style.el
(autoload 'bibtex-style-mode "bibtex-style" "\
@@ -1981,10 +2049,18 @@ Major mode for editing BibTeX style files.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bibtex-style" '("bibtex-style-")))
+
+;;;***
+
+;;;### (autoloads nil "bindat" "emacs-lisp/bindat.el" (0 0 0 0))
+;;; Generated autoloads from emacs-lisp/bindat.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bindat" '("bindat-")))
+
;;;***
-;;;### (autoloads nil "binhex" "mail/binhex.el" (22388 6375 470178
-;;;;;; 563000))
+;;;### (autoloads nil "binhex" "mail/binhex.el" (0 0 0 0))
;;; Generated autoloads from mail/binhex.el
(defconst binhex-begin-line "^:...............................................................$" "\
@@ -2006,10 +2082,11 @@ Binhex decode region between START and END.
\(fn START END)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "binhex" '("binhex-")))
+
;;;***
-;;;### (autoloads nil "blackbox" "play/blackbox.el" (22388 6383 172254
-;;;;;; 308000))
+;;;### (autoloads nil "blackbox" "play/blackbox.el" (0 0 0 0))
;;; Generated autoloads from play/blackbox.el
(autoload 'blackbox "blackbox" "\
@@ -2126,10 +2203,11 @@ a reflection.
\(fn NUM)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "blackbox" '("blackbox-" "bb-")))
+
;;;***
-;;;### (autoloads nil "bookmark" "bookmark.el" (22388 5702 411559
-;;;;;; 518000))
+;;;### (autoloads nil "bookmark" "bookmark.el" (0 0 0 0))
;;; Generated autoloads from bookmark.el
(define-key ctl-x-r-map "b" 'bookmark-jump)
(define-key ctl-x-r-map "m" 'bookmark-set)
@@ -2351,10 +2429,11 @@ Incremental search of bookmarks, hiding the non-matches as we go.
(defalias 'menu-bar-bookmark-map menu-bar-bookmark-map)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bookmark" '("bookmark" "with-buffer-modified-unmodified")))
+
;;;***
-;;;### (autoloads nil "browse-url" "net/browse-url.el" (22388 6377
-;;;;;; 307196 629000))
+;;;### (autoloads nil "browse-url" "net/browse-url.el" (0 0 0 0))
;;; Generated autoloads from net/browse-url.el
(defvar browse-url-browser-function 'browse-url-default-browser "\
@@ -2700,9 +2779,11 @@ from `browse-url-elinks-wrapper'.
\(fn URL &optional NEW-WINDOW)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "browse-url" '("browse-url-")))
+
;;;***
-;;;### (autoloads nil "bs" "bs.el" (22388 5702 452559 922000))
+;;;### (autoloads nil "bs" "bs.el" (0 0 0 0))
;;; Generated autoloads from bs.el
(push (purecopy '(bs 1 17)) package--builtin-versions)
@@ -2741,10 +2822,11 @@ name of buffer configuration.
\(fn ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bs" '("bs-")))
+
;;;***
-;;;### (autoloads nil "bubbles" "play/bubbles.el" (22388 6383 181254
-;;;;;; 396000))
+;;;### (autoloads nil "bubbles" "play/bubbles.el" (0 0 0 0))
;;; Generated autoloads from play/bubbles.el
(autoload 'bubbles "bubbles" "\
@@ -2763,10 +2845,12 @@ columns on its right towards the left.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bubbles" '("bubbles-")))
+
;;;***
;;;### (autoloads nil "bug-reference" "progmodes/bug-reference.el"
-;;;;;; (22388 6383 700259 500000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from progmodes/bug-reference.el
(put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format)))))
@@ -2784,10 +2868,20 @@ Like `bug-reference-mode', but only buttonize in comments and strings.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bug-reference" '("bug-reference-")))
+
;;;***
-;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (22388
-;;;;;; 6368 704112 24000))
+;;;### (autoloads nil "byte-opt" "emacs-lisp/byte-opt.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from emacs-lisp/byte-opt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "byte-opt" '("byte-" "disassemble-offset")))
+
+;;;***
+
+;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from emacs-lisp/bytecomp.el
(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2905,18 +2999,37 @@ and corresponding effects.
\(fn &optional ARG)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bytecomp" '("batch-byte-compile-file" "byte-" "no-byte-compile" "displaying-byte-compile-warnings" "emacs-lisp-file-regexp")))
+
+;;;***
+
+;;;### (autoloads nil "cal-bahai" "calendar/cal-bahai.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from calendar/cal-bahai.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-bahai" '("diary-bahai-" "calendar-bahai-" "holiday-bahai")))
+
;;;***
-;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (22388
-;;;;;; 6367 842103 547000))
+;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from calendar/cal-china.el
(put 'calendar-chinese-time-zone 'risky-local-variable t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-china" '("diary-chinese-" "calendar-chinese-" "holiday-chinese")))
+
+;;;***
+
+;;;### (autoloads nil "cal-coptic" "calendar/cal-coptic.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from calendar/cal-coptic.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-coptic" '("diary-" "calendar-")))
+
;;;***
-;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (22388 6367
-;;;;;; 847103 596000))
+;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (0 0 0 0))
;;; Generated autoloads from calendar/cal-dst.el
(put 'calendar-daylight-savings-starts 'risky-local-variable t)
@@ -2925,10 +3038,20 @@ and corresponding effects.
(put 'calendar-current-time-zone-cache 'risky-local-variable t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-dst" '("dst-" "calendar-")))
+
+;;;***
+
+;;;### (autoloads nil "cal-french" "calendar/cal-french.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from calendar/cal-french.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-french" '("diary-french-date" "calendar-french-")))
+
;;;***
-;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (22388
-;;;;;; 6367 866103 783000))
+;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from calendar/cal-hebrew.el
(autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\
@@ -2938,9 +3061,85 @@ from the cursor position.
\(fn DEATH-DATE START-YEAR END-YEAR)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-hebrew" '("diary-hebrew-" "calendar-hebrew-" "holiday-hebrew")))
+
+;;;***
+
+;;;### (autoloads nil "cal-html" "calendar/cal-html.el" (0 0 0 0))
+;;; Generated autoloads from calendar/cal-html.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-html" '("cal-html-")))
+
+;;;***
+
+;;;### (autoloads nil "cal-islam" "calendar/cal-islam.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from calendar/cal-islam.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-islam" '("diary-islamic-" "calendar-islamic-" "holiday-islamic")))
+
+;;;***
+
+;;;### (autoloads nil "cal-iso" "calendar/cal-iso.el" (0 0 0 0))
+;;; Generated autoloads from calendar/cal-iso.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-iso" '("diary-iso-date" "calendar-iso-")))
+
+;;;***
+
+;;;### (autoloads nil "cal-julian" "calendar/cal-julian.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from calendar/cal-julian.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-julian" '("diary-" "calendar-" "holiday-julian")))
+
;;;***
-;;;### (autoloads nil "calc" "calc/calc.el" (22388 6367 620101 364000))
+;;;### (autoloads nil "cal-mayan" "calendar/cal-mayan.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from calendar/cal-mayan.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-mayan" '("diary-mayan-date" "calendar-mayan-")))
+
+;;;***
+
+;;;### (autoloads nil "cal-menu" "calendar/cal-menu.el" (0 0 0 0))
+;;; Generated autoloads from calendar/cal-menu.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-menu" '("cal")))
+
+;;;***
+
+;;;### (autoloads nil "cal-move" "calendar/cal-move.el" (0 0 0 0))
+;;; Generated autoloads from calendar/cal-move.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-move" '("calendar-")))
+
+;;;***
+
+;;;### (autoloads nil "cal-persia" "calendar/cal-persia.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from calendar/cal-persia.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-persia" '("diary-persian-date" "calendar-persian-")))
+
+;;;***
+
+;;;### (autoloads nil "cal-tex" "calendar/cal-tex.el" (0 0 0 0))
+;;; Generated autoloads from calendar/cal-tex.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-tex" '("cal-tex-")))
+
+;;;***
+
+;;;### (autoloads nil "cal-x" "calendar/cal-x.el" (0 0 0 0))
+;;; Generated autoloads from calendar/cal-x.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cal-x" '("calendar-" "diary-frame")))
+
+;;;***
+
+;;;### (autoloads nil "calc" "calc/calc.el" (0 0 0 0))
;;; Generated autoloads from calc/calc.el
(define-key ctl-x-map "*" 'calc-dispatch)
@@ -3024,10 +3223,252 @@ See Info node `(calc)Defining Functions'.
(function-put 'defmath 'doc-string-elt '3)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc" '("math-" "calc" "var-" "inexact-result" "defcalcmodevar")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "calc-aent" "calc/calc-aent.el"
+;;;;;; (22164 57533 783192 607000))
+;;; Generated autoloads from calc/calc-aent.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-aent" '("math-" "calc")))
+
+;;;***
+
+;;;### (autoloads nil "calc-alg" "calc/calc-alg.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-alg.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-alg" '("math-" "calc")))
+
+;;;***
+
+;;;### (autoloads nil "calc-arith" "calc/calc-arith.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-arith.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-arith" '("math-" "calc")))
+
+;;;***
+
+;;;### (autoloads nil "calc-bin" "calc/calc-bin.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-bin.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-bin" '("math-" "calc")))
+
+;;;***
+
+;;;### (autoloads nil "calc-comb" "calc/calc-comb.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-comb.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-comb" '("math-" "calc")))
+
+;;;***
+
+;;;### (autoloads nil "calc-cplx" "calc/calc-cplx.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-cplx.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-cplx" '("calc" "math-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "calc-embed" "calc/calc-embed.el"
+;;;;;; (22164 57533 791192 607000))
+;;; Generated autoloads from calc/calc-embed.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-embed" '("calc-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-ext" "calc/calc-ext.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-ext.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-ext" '("calc" "math-" "var-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-fin" "calc/calc-fin.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-fin.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-fin" '("calc" "math-c")))
+
+;;;***
+
+;;;### (autoloads nil "calc-forms" "calc/calc-forms.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-forms.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-forms" '("math-" "calc" "var-TimeZone")))
+
+;;;***
+
+;;;### (autoloads nil "calc-frac" "calc/calc-frac.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-frac.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-frac" '("calc" "math-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-funcs" "calc/calc-funcs.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-funcs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-funcs" '("calc" "math-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-graph" "calc/calc-graph.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-graph.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-graph" '("calc-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-help" "calc/calc-help.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-help.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-help" '("calc-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-incom" "calc/calc-incom.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-incom.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-incom" '("calc-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-keypd" "calc/calc-keypd.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-keypd.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-keypd" '("calc-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-lang" "calc/calc-lang.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-lang.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-lang" '("math-" "calc-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-macs" "calc/calc-macs.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-macs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-macs" '("Math-" "calc-" "math-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-map" "calc/calc-map.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-map.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-map" '("math-" "calc")))
+
;;;***
-;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (22388 6367
-;;;;;; 444099 633000))
+;;;### (autoloads nil "calc-math" "calc/calc-math.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-math.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-math" '("calc" "math-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-menu" "calc/calc-menu.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-menu.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-menu" '("calc-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "calc-misc" "calc/calc-misc.el"
+;;;;;; (22164 57533 803192 607000))
+;;; Generated autoloads from calc/calc-misc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-misc" '("math-iipow")))
+
+;;;***
+
+;;;### (autoloads nil "calc-mode" "calc/calc-mode.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-mode.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-mode" '("calc-" "math-get-modes-vec")))
+
+;;;***
+
+;;;### (autoloads nil "calc-mtx" "calc/calc-mtx.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-mtx.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-mtx" '("calc" "math-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-nlfit" "calc/calc-nlfit.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-nlfit.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-nlfit" '("calc-fit-" "math-nlfit-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-poly" "calc/calc-poly.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-poly.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-poly" '("calcFunc-" "math-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-prog" "calc/calc-prog.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-prog.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-prog" '("math-" "calc" "var-q")))
+
+;;;***
+
+;;;### (autoloads nil "calc-rewr" "calc/calc-rewr.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-rewr.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-rewr" '("math-" "calc")))
+
+;;;***
+
+;;;### (autoloads nil "calc-rules" "calc/calc-rules.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-rules.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-rules" '("calc-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-sel" "calc/calc-sel.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-sel.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-sel" '("calc-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-stat" "calc/calc-stat.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-stat.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-stat" '("math-" "calc")))
+
+;;;***
+
+;;;### (autoloads nil "calc-store" "calc/calc-store.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-store.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-store" '("calc")))
+
+;;;***
+
+;;;### (autoloads nil "calc-stuff" "calc/calc-stuff.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-stuff.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-stuff" '("math-" "calc")))
+
+;;;***
+
+;;;### (autoloads nil "calc-trail" "calc/calc-trail.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-trail.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-trail" '("calc-trail-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (0 0 0 0))
;;; Generated autoloads from calc/calc-undo.el
(autoload 'calc-undo "calc-undo" "\
@@ -3035,10 +3476,61 @@ See Info node `(calc)Defining Functions'.
\(fn N)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-undo" '("calc-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-units" "calc/calc-units.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-units.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-units" '("calc" "math-")))
+
+;;;***
+
+;;;### (autoloads nil "calc-vec" "calc/calc-vec.el" (0 0 0 0))
+;;; Generated autoloads from calc/calc-vec.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-vec" '("math-" "calc")))
+
;;;***
-;;;### (autoloads nil "calculator" "calculator.el" (22388 5702 517560
-;;;;;; 561000))
+;;;### (autoloads "actual autoloads are elsewhere" "calc-yank" "calc/calc-yank.el"
+;;;;;; (22164 57533 811192 607000))
+;;; Generated autoloads from calc/calc-yank.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calc-yank" '("calc-" "math-number-regexp")))
+
+;;;***
+
+;;;### (autoloads nil "calcalg2" "calc/calcalg2.el" (0 0 0 0))
+;;; Generated autoloads from calc/calcalg2.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calcalg2" '("calc" "math-" "var-IntegLimit")))
+
+;;;***
+
+;;;### (autoloads nil "calcalg3" "calc/calcalg3.el" (0 0 0 0))
+;;; Generated autoloads from calc/calcalg3.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calcalg3" '("math-" "calc")))
+
+;;;***
+
+;;;### (autoloads nil "calccomp" "calc/calccomp.el" (0 0 0 0))
+;;; Generated autoloads from calc/calccomp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calccomp" '("math-" "calcFunc-c")))
+
+;;;***
+
+;;;### (autoloads nil "calcsel2" "calc/calcsel2.el" (0 0 0 0))
+;;; Generated autoloads from calc/calcsel2.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calcsel2" '("calc-")))
+
+;;;***
+
+;;;### (autoloads nil "calculator" "calculator.el" (0 0 0 0))
;;; Generated autoloads from calculator.el
(autoload 'calculator "calculator" "\
@@ -3047,10 +3539,11 @@ See the documentation for `calculator-mode' for more information.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calculator" '("calculator-")))
+
;;;***
-;;;### (autoloads nil "calendar" "calendar/calendar.el" (22388 6368
-;;;;;; 10105 200000))
+;;;### (autoloads nil "calendar" "calendar/calendar.el" (0 0 0 0))
;;; Generated autoloads from calendar/calendar.el
(autoload 'calendar "calendar" "\
@@ -3091,10 +3584,11 @@ This function is suitable for execution in an init file.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "calendar" '("calendar-" "solar-sunrises-buffer" "lunar-phases-buffer" "diary-" "holiday-buffer")))
+
;;;***
-;;;### (autoloads nil "canlock" "gnus/canlock.el" (22388 6371 657141
-;;;;;; 65000))
+;;;### (autoloads nil "canlock" "gnus/canlock.el" (0 0 0 0))
;;; Generated autoloads from gnus/canlock.el
(autoload 'canlock-insert-header "canlock" "\
@@ -3109,10 +3603,48 @@ it fails.
\(fn &optional BUFFER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "canlock" '("canlock-")))
+
+;;;***
+
+;;;### (autoloads nil "cc-align" "progmodes/cc-align.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/cc-align.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-align" '("c-")))
+
+;;;***
+
+;;;### (autoloads nil "cc-awk" "progmodes/cc-awk.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/cc-awk.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-awk" '("c-awk-" "awk-")))
+
+;;;***
+
+;;;### (autoloads nil "cc-bytecomp" "progmodes/cc-bytecomp.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from progmodes/cc-bytecomp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-bytecomp" '("cc-")))
+
+;;;***
+
+;;;### (autoloads nil "cc-cmds" "progmodes/cc-cmds.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/cc-cmds.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-cmds" '("c-")))
+
+;;;***
+
+;;;### (autoloads nil "cc-defs" "progmodes/cc-defs.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/cc-defs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-defs" '("cc-bytecomp-compiling-or-loading" "c-")))
+
;;;***
-;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (22388
-;;;;;; 6384 111263 543000))
+;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from progmodes/cc-engine.el
(autoload 'c-guess-basic-syntax "cc-engine" "\
@@ -3120,10 +3652,18 @@ Return the syntactic context of the current line.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-engine" '("c-")))
+
;;;***
-;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (22388 6384
-;;;;;; 327265 667000))
+;;;### (autoloads nil "cc-fonts" "progmodes/cc-fonts.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/cc-fonts.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-fonts" '("autodoc-" "java" "gtkdoc-font-lock-" "c++-font-lock-keywords" "c-" "pike-font-lock-keywords" "idl-font-lock-keywords" "objc-font-lock-keywords")))
+
+;;;***
+
+;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (0 0 0 0))
;;; Generated autoloads from progmodes/cc-guess.el
(defvar c-guess-guessed-offsets-alist nil "\
@@ -3219,10 +3759,25 @@ the absolute file name of the file if STYLE-NAME is nil.
\(fn &optional STYLE-NAME)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-guess" '("c-guess-")))
+
+;;;***
+
+;;;### (autoloads nil "cc-langs" "progmodes/cc-langs.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/cc-langs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-langs" '("c-")))
+
+;;;***
+
+;;;### (autoloads nil "cc-menus" "progmodes/cc-menus.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/cc-menus.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-menus" '("cc-imenu-")))
+
;;;***
-;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (22388 6384
-;;;;;; 496267 328000))
+;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (0 0 0 0))
;;; Generated autoloads from progmodes/cc-mode.el
(autoload 'c-initialize-cc-mode "cc-mode" "\
@@ -3237,7 +3792,8 @@ control). See \"cc-mode.el\" for more info.
(add-to-list 'auto-mode-alist '("\\.\\(cc\\|hh\\)\\'" . c++-mode))
(add-to-list 'auto-mode-alist '("\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\'" . c++-mode))
(add-to-list 'auto-mode-alist '("\\.\\(CC?\\|HH?\\)\\'" . c++-mode))
- (add-to-list 'auto-mode-alist '("\\.[ch]\\'" . c-mode))
+ (add-to-list 'auto-mode-alist '("\\.c\\'" . c-mode))
+ (add-to-list 'auto-mode-alist '("\\.h\\'" . c-or-c++-mode))
(add-to-list 'auto-mode-alist '("\\.y\\(acc\\)?\\'" . c-mode))
(add-to-list 'auto-mode-alist '("\\.lex\\'" . c-mode))
(add-to-list 'auto-mode-alist '("\\.i\\'" . c-mode))
@@ -3261,6 +3817,20 @@ Key bindings:
\(fn)" t nil)
+(autoload 'c-or-c++-mode "cc-mode" "\
+Analyse buffer and enable either C or C++ mode.
+
+Some people and projects use .h extension for C++ header files
+which is also the one used for C header files. This makes
+matching on file name insufficient for detecting major mode that
+should be used.
+
+This function attempts to use file contents to determine whether
+the code is C or C++ and based on that chooses whether to enable
+`c-mode' or `c++-mode'.
+
+\(fn)" nil nil)
+
(autoload 'c++-mode "cc-mode" "\
Major mode for editing C++ code.
To submit a problem report, enter `\\[c-submit-bug-report]' from a
@@ -3378,10 +3948,12 @@ Key bindings:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-mode" '("c++-mode-" "c-" "awk-mode-map" "pike-mode-" "idl-mode-" "java-mode-" "objc-mode-")))
+
;;;***
-;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (22388
-;;;;;; 6384 576268 115000))
+;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from progmodes/cc-styles.el
(autoload 'c-set-style "cc-styles" "\
@@ -3430,19 +4002,21 @@ and exists only for compatibility reasons.
\(fn SYMBOL OFFSET &optional IGNORED)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-styles" '("c-" "cc-choose-style-for-mode")))
+
;;;***
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (22388 6384
-;;;;;; 657268 912000))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (0 0 0 0))
;;; Generated autoloads from progmodes/cc-vars.el
(put 'c-basic-offset 'safe-local-variable 'integerp)
(put 'c-backslash-column 'safe-local-variable 'integerp)
(put 'c-file-style 'safe-local-variable 'string-or-null-p)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cc-vars" '("c++-" "c-" "pike-" "idl-" "java-" "objc-" "awk-mode-hook" "defcustom-c-stylevar")))
+
;;;***
-;;;### (autoloads nil "ccl" "international/ccl.el" (22388 6374 281166
-;;;;;; 870000))
+;;;### (autoloads nil "ccl" "international/ccl.el" (0 0 0 0))
;;; Generated autoloads from international/ccl.el
(autoload 'ccl-compile "ccl" "\
@@ -3733,10 +4307,11 @@ See the documentation of `define-ccl-program' for the detail of CCL program.
\(fn CCL-PROG &rest ARGS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ccl" '("ccl-")))
+
;;;***
-;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (22388 6368 788112
-;;;;;; 850000))
+;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/cconv.el
(autoload 'cconv-closure-convert "cconv" "\
@@ -3753,17 +4328,58 @@ Add the warnings that closure conversion would encounter.
\(fn FORM)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cconv" '("cconv-")))
+
+;;;***
+
+;;;### (autoloads nil "cdl" "cdl.el" (0 0 0 0))
+;;; Generated autoloads from cdl.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cdl" '("cdl-")))
+
;;;***
-;;;### (autoloads nil "cedet" "cedet/cedet.el" (22388 6368 422109
-;;;;;; 251000))
+;;;### (autoloads nil "cedet" "cedet/cedet.el" (0 0 0 0))
;;; Generated autoloads from cedet/cedet.el
(push (purecopy '(cedet 2 0)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cedet" '("cedet-")))
+
;;;***
-;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (22388 6384
-;;;;;; 702269 354000))
+;;;### (autoloads nil "cedet-cscope" "cedet/cedet-cscope.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from cedet/cedet-cscope.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cedet-cscope" '("cedet-cscope-")))
+
+;;;***
+
+;;;### (autoloads nil "cedet-files" "cedet/cedet-files.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from cedet/cedet-files.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cedet-files" '("cedet-")))
+
+;;;***
+
+;;;### (autoloads nil "cedet-global" "cedet/cedet-global.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from cedet/cedet-global.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cedet-global" '("cedet-g")))
+
+;;;***
+
+;;;### (autoloads nil "cedet-idutils" "cedet/cedet-idutils.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from cedet/cedet-idutils.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cedet-idutils" '("cedet-idutils-")))
+
+;;;***
+
+;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (0 0 0 0))
;;; Generated autoloads from progmodes/cfengine.el
(push (purecopy '(cfengine 1 4)) package--builtin-versions)
@@ -3790,10 +4406,11 @@ Choose `cfengine2-mode' or `cfengine3-mode' by buffer contents.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cfengine" '("cfengine")))
+
;;;***
-;;;### (autoloads nil "char-fold" "char-fold.el" (22388 5702 541560
-;;;;;; 796000))
+;;;### (autoloads nil "char-fold" "char-fold.el" (0 0 0 0))
;;; Generated autoloads from char-fold.el
(autoload 'char-fold-to-regexp "char-fold" "\
@@ -3810,17 +4427,20 @@ from which to start.
\(fn STRING &optional LAX FROM)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "char-fold" '("char-fold-")))
+
;;;***
-;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (22388 6368 788112
-;;;;;; 850000))
+;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/chart.el
(push (purecopy '(chart 0 2)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "chart" '("chart")))
+
;;;***
;;;### (autoloads nil "check-declare" "emacs-lisp/check-declare.el"
-;;;;;; (22388 6368 813113 96000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from emacs-lisp/check-declare.el
(autoload 'check-declare-file "check-declare" "\
@@ -3835,10 +4455,12 @@ Returns non-nil if any false statements are found.
\(fn ROOT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "check-declare" '("check-declare-")))
+
;;;***
-;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (22388
-;;;;;; 6368 849113 450000))
+;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from emacs-lisp/checkdoc.el
(push (purecopy '(checkdoc 0 6 2)) package--builtin-versions)
(put 'checkdoc-force-docstrings-flag 'safe-local-variable #'booleanp)
@@ -4046,10 +4668,12 @@ Find package keywords that aren't in `finder-known-keywords'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "checkdoc" '("checkdoc-")))
+
;;;***
-;;;### (autoloads nil "china-util" "language/china-util.el" (22388
-;;;;;; 6374 954173 489000))
+;;;### (autoloads nil "china-util" "language/china-util.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from language/china-util.el
(autoload 'decode-hz-region "china-util" "\
@@ -4084,10 +4708,11 @@ Encode the text in the current buffer to HZ.
\(fn FROM TO)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "china-util" '("hz/zw-start-gb" "hz-" "decode-hz-line-continuation" "zw-start-gb" "iso2022-")))
+
;;;***
-;;;### (autoloads nil "chistory" "chistory.el" (22388 5702 610561
-;;;;;; 475000))
+;;;### (autoloads nil "chistory" "chistory.el" (0 0 0 0))
;;; Generated autoloads from chistory.el
(autoload 'repeat-matching-complex-command "chistory" "\
@@ -4124,10 +4749,27 @@ and runs the normal hook `command-history-hook'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "chistory" '("command-history-" "list-command-history-" "default-command-history-filter")))
+
;;;***
-;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (22388
-;;;;;; 6368 936114 306000))
+;;;### (autoloads nil "cl" "emacs-lisp/cl.el" (0 0 0 0))
+;;; Generated autoloads from emacs-lisp/cl.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cl" '("cl-" "def" "lexical-let" "labels" "flet")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "cl-extra" "emacs-lisp/cl-extra.el"
+;;;;;; (22402 8370 102777 743000))
+;;; Generated autoloads from emacs-lisp/cl-extra.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cl-extra" '("cl-")))
+
+;;;***
+
+;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from emacs-lisp/cl-indent.el
(autoload 'common-lisp-indent-function "cl-indent" "\
@@ -4208,10 +4850,11 @@ instead.
\(fn INDENT-POINT STATE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cl-indent" '("lisp-" "common-lisp-")))
+
;;;***
-;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (22388 6368
-;;;;;; 949114 434000))
+;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/cl-lib.el
(push (purecopy '(cl-lib 1 0)) package--builtin-versions)
@@ -4227,10 +4870,27 @@ printer proceeds to the next function on the list.
This variable is not used at present, but it is defined in hopes that
a future Emacs interpreter will be able to use it.")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cl-lib" '("cl-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "cl-macs" "emacs-lisp/cl-macs.el"
+;;;;;; (22406 5421 652315 485000))
+;;; Generated autoloads from emacs-lisp/cl-macs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cl-macs" '("cl-")))
+
;;;***
-;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (22388 6384
-;;;;;; 705269 384000))
+;;;### (autoloads "actual autoloads are elsewhere" "cl-seq" "emacs-lisp/cl-seq.el"
+;;;;;; (22413 65078 249988 237000))
+;;; Generated autoloads from emacs-lisp/cl-seq.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cl-seq" '("cl--")))
+
+;;;***
+
+;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (0 0 0 0))
;;; Generated autoloads from progmodes/cmacexp.el
(autoload 'c-macro-expand "cmacexp" "\
@@ -4248,10 +4908,11 @@ For use inside Lisp programs, see also `c-macro-expansion'.
\(fn START END SUBST)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cmacexp" '("c-macro-")))
+
;;;***
-;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (22388 5702 612561
-;;;;;; 495000))
+;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (0 0 0 0))
;;; Generated autoloads from cmuscheme.el
(autoload 'run-scheme "cmuscheme" "\
@@ -4269,9 +4930,11 @@ is run).
\(fn CMD)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cmuscheme" '("cmuscheme-load-hook" "switch-to-scheme" "scheme-" "inferior-scheme-")))
+
;;;***
-;;;### (autoloads nil "color" "color.el" (22388 5702 628561 652000))
+;;;### (autoloads nil "color" "color.el" (0 0 0 0))
;;; Generated autoloads from color.el
(autoload 'color-name-to-rgb "color" "\
@@ -4288,9 +4951,11 @@ If FRAME cannot display COLOR, return nil.
\(fn COLOR &optional FRAME)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "color" '("color-")))
+
;;;***
-;;;### (autoloads nil "comint" "comint.el" (22388 5702 673562 95000))
+;;;### (autoloads nil "comint" "comint.el" (0 0 0 0))
;;; Generated autoloads from comint.el
(defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
@@ -4389,10 +5054,11 @@ REGEXP-GROUP is the regular expression group in REGEXP to use.
\(fn PROCESS COMMAND REGEXP REGEXP-GROUP)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "comint" '("comint-" "shell-strip-ctrl-m" "send-invisible")))
+
;;;***
-;;;### (autoloads nil "compare-w" "vc/compare-w.el" (22388 6390 746328
-;;;;;; 793000))
+;;;### (autoloads nil "compare-w" "vc/compare-w.el" (0 0 0 0))
;;; Generated autoloads from vc/compare-w.el
(autoload 'compare-windows "compare-w" "\
@@ -4426,10 +5092,18 @@ on third call it again advances points to the next difference and so on.
\(fn IGNORE-WHITESPACE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "compare-w" '("compare-")))
+
;;;***
-;;;### (autoloads nil "compile" "progmodes/compile.el" (22388 6384
-;;;;;; 791270 230000))
+;;;### (autoloads nil "compface" "image/compface.el" (0 0 0 0))
+;;; Generated autoloads from image/compface.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "compface" '("uncompface")))
+
+;;;***
+
+;;;### (autoloads nil "compile" "progmodes/compile.el" (0 0 0 0))
;;; Generated autoloads from progmodes/compile.el
(defvar compilation-mode-hook nil "\
@@ -4608,10 +5282,11 @@ This is the value of `next-error-function' in Compilation buffers.
\(fn N &optional RESET)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "compile" '("compil" "kill-compilation" "define-compilation-mode" "recompile")))
+
;;;***
-;;;### (autoloads nil "completion" "completion.el" (22388 5702 734562
-;;;;;; 695000))
+;;;### (autoloads nil "completion" "completion.el" (0 0 0 0))
;;; Generated autoloads from completion.el
(defvar dynamic-completion-mode nil "\
@@ -4632,10 +5307,12 @@ if ARG is omitted or nil.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "completion" '("inside-locate-completion-entry" "interactive-completion-string-reader" "initialize-completions" "current-completion-source" "cdabbrev-" "clear-all-completions" "check-completion-length" "complet" "cmpl-" "use-completion-" "list-all-completions" "symbol-" "set-c" "save" "kill-" "accept-completion" "add-" "*lisp-def-regexp*" "*c-def-regexp*" "delete-completion" "find-" "make-c" "num-cmpl-sources" "next-cdabbrev" "reset-cdabbrev" "enable-completion")))
+
;;;***
-;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (22388
-;;;;;; 6389 244314 22000))
+;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from textmodes/conf-mode.el
(autoload 'conf-mode "conf-mode" "\
@@ -4788,10 +5465,11 @@ For details see `conf-mode'. Example:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "conf-mode" '("conf-")))
+
;;;***
-;;;### (autoloads nil "cookie1" "play/cookie1.el" (22388 6383 214254
-;;;;;; 721000))
+;;;### (autoloads nil "cookie1" "play/cookie1.el" (0 0 0 0))
;;; Generated autoloads from play/cookie1.el
(autoload 'cookie "cookie1" "\
@@ -4817,10 +5495,12 @@ and subsequent calls on the same file won't go to disk.
\(fn PHRASE-FILE &optional STARTMSG ENDMSG)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cookie1" '("cookie")))
+
;;;***
-;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (22388
-;;;;;; 6369 72115 643000))
+;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from emacs-lisp/copyright.el
(put 'copyright-at-end-flag 'safe-local-variable 'booleanp)
(put 'copyright-names-regexp 'safe-local-variable 'stringp)
@@ -4856,10 +5536,12 @@ If FIX is non-nil, run `copyright-fix-years' instead.
\(fn DIRECTORY MATCH &optional FIX)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "copyright" '("copyright-")))
+
;;;***
-;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (22388
-;;;;;; 6385 218274 429000))
+;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from progmodes/cperl-mode.el
(put 'cperl-indent-level 'safe-local-variable 'integerp)
(put 'cperl-brace-offset 'safe-local-variable 'integerp)
@@ -5055,10 +5737,11 @@ Run a `perldoc' on the word around point.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cperl-mode" '("cperl-" "pod2man-program")))
+
;;;***
-;;;### (autoloads nil "cpp" "progmodes/cpp.el" (22388 6385 395276
-;;;;;; 170000))
+;;;### (autoloads nil "cpp" "progmodes/cpp.el" (0 0 0 0))
;;; Generated autoloads from progmodes/cpp.el
(autoload 'cpp-highlight-buffer "cpp" "\
@@ -5074,10 +5757,11 @@ Edit display information for cpp conditionals.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cpp" '("cpp-")))
+
;;;***
-;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (22388 6369 74115
-;;;;;; 663000))
+;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/crm.el
(autoload 'completing-read-multiple "crm" "\
@@ -5101,10 +5785,11 @@ with empty strings removed.
\(fn PROMPT TABLE &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "crm" '("crm-")))
+
;;;***
-;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (22388 6389
-;;;;;; 247314 52000))
+;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (0 0 0 0))
;;; Generated autoloads from textmodes/css-mode.el
(autoload 'css-mode "css-mode" "\
@@ -5118,10 +5803,11 @@ Major mode to edit \"Sassy CSS\" files.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "css-mode" '("scss-" "css-")))
+
;;;***
-;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (22388 6369
-;;;;;; 804122 842000))
+;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (0 0 0 0))
;;; Generated autoloads from emulation/cua-base.el
(defvar cua-mode nil "\
@@ -5165,10 +5851,18 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings.
\(fn ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cua-base" '("cua-")))
+
+;;;***
+
+;;;### (autoloads nil "cua-gmrk" "emulation/cua-gmrk.el" (0 0 0 0))
+;;; Generated autoloads from emulation/cua-gmrk.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cua-gmrk" '("cua-")))
+
;;;***
-;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (22388 6369
-;;;;;; 824123 38000))
+;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (0 0 0 0))
;;; Generated autoloads from emulation/cua-rect.el
(autoload 'cua-rectangle-mark-mode "cua-rect" "\
@@ -5177,10 +5871,12 @@ Activates the region if needed. Only lasts until the region is deactivated.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cua-rect" '("cua-")))
+
;;;***
;;;### (autoloads nil "cursor-sensor" "emacs-lisp/cursor-sensor.el"
-;;;;;; (22388 6369 75115 673000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from emacs-lisp/cursor-sensor.el
(defvar cursor-sensor-inhibit nil)
@@ -5200,10 +5896,18 @@ is entering the area covered by the text-property property or leaving it.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cursor-sensor" '("cursor-sensor-")))
+
+;;;***
+
+;;;### (autoloads nil "cus-dep" "cus-dep.el" (0 0 0 0))
+;;; Generated autoloads from cus-dep.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cus-dep" '("custom-" "generated-custom-dependencies-file")))
+
;;;***
-;;;### (autoloads nil "cus-edit" "cus-edit.el" (22420 38537 265424
-;;;;;; 393000))
+;;;### (autoloads nil "cus-edit" "cus-edit.el" (0 0 0 0))
;;; Generated autoloads from cus-edit.el
(defvar custom-browse-sort-alphabetically nil "\
@@ -5454,6 +6158,7 @@ Optional NAME is the name of the buffer.
OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
SYMBOL is a customization option, and WIDGET is a widget for editing
that option.
+DESCRIPTION is unused.
\(fn OPTIONS &optional NAME DESCRIPTION)" nil nil)
@@ -5521,10 +6226,11 @@ The format is suitable for use with `easy-menu-define'.
\(fn SYMBOL &optional NAME)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cus-edit" '("Custom-" "custom" "widget-")))
+
;;;***
-;;;### (autoloads nil "cus-theme" "cus-theme.el" (22388 5702 879564
-;;;;;; 121000))
+;;;### (autoloads nil "cus-theme" "cus-theme.el" (0 0 0 0))
;;; Generated autoloads from cus-theme.el
(autoload 'customize-create-theme "cus-theme" "\
@@ -5555,10 +6261,11 @@ omitted, a buffer named *Custom Themes* is used.
\(fn &optional BUFFER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cus-theme" '("custom-" "describe-theme-1")))
+
;;;***
-;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (22388 6390
-;;;;;; 747328 803000))
+;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (0 0 0 0))
;;; Generated autoloads from vc/cvs-status.el
(autoload 'cvs-status-mode "cvs-status" "\
@@ -5566,10 +6273,11 @@ Mode used for cvs status output.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cvs-status" '("cvs-")))
+
;;;***
-;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (22388 6385 438276
-;;;;;; 593000))
+;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (0 0 0 0))
;;; Generated autoloads from progmodes/cwarn.el
(push (purecopy '(cwarn 1 3 1)) package--builtin-versions)
@@ -5612,10 +6320,12 @@ See `cwarn-mode' for more information on Cwarn mode.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cwarn" '("turn-on-cwarn-mode-if-enabled" "cwarn-")))
+
;;;***
-;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (22388
-;;;;;; 6374 956173 509000))
+;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from language/cyril-util.el
(autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\
@@ -5641,9 +6351,11 @@ If the argument is nil, we return the display table to its standard state.
\(fn &optional CYRILLIC-LANGUAGE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "cyril-util" '("cyrillic-language-alist")))
+
;;;***
-;;;### (autoloads nil "dabbrev" "dabbrev.el" (22388 5702 925564 573000))
+;;;### (autoloads nil "dabbrev" "dabbrev.el" (0 0 0 0))
;;; Generated autoloads from dabbrev.el
(put 'dabbrev-case-fold-search 'risky-local-variable t)
(put 'dabbrev-case-replace 'risky-local-variable t)
@@ -5687,10 +6399,11 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion].
\(fn ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dabbrev" '("dabbrev-")))
+
;;;***
-;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (22388 6368
-;;;;;; 422109 251000))
+;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (0 0 0 0))
;;; Generated autoloads from cedet/data-debug.el
(autoload 'data-debug-new-buffer "data-debug" "\
@@ -5698,9 +6411,11 @@ Create a new data-debug buffer with NAME.
\(fn NAME)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "data-debug" '("data-debug-")))
+
;;;***
-;;;### (autoloads nil "dbus" "net/dbus.el" (22388 6377 308196 639000))
+;;;### (autoloads nil "dbus" "net/dbus.el" (0 0 0 0))
;;; Generated autoloads from net/dbus.el
(autoload 'dbus-handle-event "dbus" "\
@@ -5711,10 +6426,11 @@ If the HANDLER returns a `dbus-error', it is propagated as return message.
\(fn EVENT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dbus" '("dbus-")))
+
;;;***
-;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (22388 6385
-;;;;;; 479276 996000))
+;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (0 0 0 0))
;;; Generated autoloads from progmodes/dcl-mode.el
(autoload 'dcl-mode "dcl-mode" "\
@@ -5838,10 +6554,11 @@ There is some minimal font-lock support (see vars
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dcl-mode" '("dcl-")))
+
;;;***
-;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (22388 6369 75115
-;;;;;; 673000))
+;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/debug.el
(setq debugger 'debug)
@@ -5882,10 +6599,11 @@ To specify a nil argument interactively, exit with an empty minibuffer.
\(fn &optional FUNCTION)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "debug" '("debug" "inhibit-debug-on-entry")))
+
;;;***
-;;;### (autoloads nil "decipher" "play/decipher.el" (22388 6383 232254
-;;;;;; 898000))
+;;;### (autoloads nil "decipher" "play/decipher.el" (0 0 0 0))
;;; Generated autoloads from play/decipher.el
(autoload 'decipher "decipher" "\
@@ -5911,10 +6629,11 @@ The most useful commands are:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "decipher" '("decipher-")))
+
;;;***
-;;;### (autoloads nil "delim-col" "delim-col.el" (22388 5703 6565
-;;;;;; 369000))
+;;;### (autoloads nil "delim-col" "delim-col.el" (0 0 0 0))
;;; Generated autoloads from delim-col.el
(push (purecopy '(delim-col 2 1)) package--builtin-versions)
@@ -5937,9 +6656,11 @@ START and END delimits the corners of text rectangle.
\(fn START END)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "delim-col" '("delimit-columns-")))
+
;;;***
-;;;### (autoloads nil "delsel" "delsel.el" (22388 5703 9565 399000))
+;;;### (autoloads nil "delsel" "delsel.el" (0 0 0 0))
;;; Generated autoloads from delsel.el
(defalias 'pending-delete-mode 'delete-selection-mode)
@@ -5970,10 +6691,11 @@ information on adapting behavior of commands in Delete Selection mode.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "delsel" '("del" "minibuffer-keyboard-quit")))
+
;;;***
-;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (22388 6369
-;;;;;; 111116 27000))
+;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/derived.el
(autoload 'define-derived-mode "derived" "\
@@ -6001,6 +6723,9 @@ BODY can start with a bunch of keyword arguments. The following keyword
:abbrev-table TABLE
Use TABLE instead of the default (CHILD-abbrev-table).
A nil value means to simply use the same abbrev-table as the parent.
+:after-hook FORM
+ A single lisp form which is evaluated after the mode hooks have been
+ run. It should not be quoted.
Here is how you could define LaTeX-Thesis mode as a variant of LaTeX mode:
@@ -6037,10 +6762,11 @@ the first time the mode is used.
\(fn MODE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "derived" '("derived-mode-")))
+
;;;***
-;;;### (autoloads nil "descr-text" "descr-text.el" (22388 5703 27565
-;;;;;; 576000))
+;;;### (autoloads nil "descr-text" "descr-text.el" (0 0 0 0))
;;; Generated autoloads from descr-text.el
(autoload 'describe-text-properties "descr-text" "\
@@ -6087,9 +6813,11 @@ This function is meant to be used as a value of
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "descr-text" '("describe-")))
+
;;;***
-;;;### (autoloads nil "desktop" "desktop.el" (22388 5703 33565 635000))
+;;;### (autoloads nil "desktop" "desktop.el" (0 0 0 0))
;;; Generated autoloads from desktop.el
(defvar desktop-save-mode nil "\
@@ -6315,10 +7043,11 @@ Revert to the last loaded desktop.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "desktop" '("desktop-")))
+
;;;***
-;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (22388 6371 666141
-;;;;;; 154000))
+;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (0 0 0 0))
;;; Generated autoloads from gnus/deuglify.el
(autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\
@@ -6348,10 +7077,19 @@ Deuglify broken Outlook (Express) articles and redisplay.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "deuglify" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "dframe" "dframe.el" (0 0 0 0))
+;;; Generated autoloads from dframe.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dframe" '("dframe-")))
+
;;;***
-;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (22388
-;;;;;; 6368 72105 809000))
+;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from calendar/diary-lib.el
(autoload 'diary "diary-lib" "\
@@ -6391,9 +7129,11 @@ Major mode for editing the diary file.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "diary-lib" '("diary-" "calendar-mark-")))
+
;;;***
-;;;### (autoloads nil "diff" "vc/diff.el" (22388 6390 787329 197000))
+;;;### (autoloads nil "diff" "vc/diff.el" (0 0 0 0))
;;; Generated autoloads from vc/diff.el
(defvar diff-switches (purecopy "-u") "\
@@ -6439,10 +7179,11 @@ This requires the external program `diff' to be in your `exec-path'.
\(fn &optional BUFFER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "diff" '("diff-")))
+
;;;***
-;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (22388 6390 785329
-;;;;;; 177000))
+;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (0 0 0 0))
;;; Generated autoloads from vc/diff-mode.el
(autoload 'diff-mode "diff-mode" "\
@@ -6472,9 +7213,11 @@ the mode if ARG is omitted or nil.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "diff-mode" '("diff-")))
+
;;;***
-;;;### (autoloads nil "dig" "net/dig.el" (22388 6377 355197 101000))
+;;;### (autoloads nil "dig" "net/dig.el" (0 0 0 0))
;;; Generated autoloads from net/dig.el
(autoload 'dig "dig" "\
@@ -6483,9 +7226,11 @@ Optional arguments are passed to `dig-invoke'.
\(fn DOMAIN &optional QUERY-TYPE QUERY-CLASS QUERY-OPTION DIG-OPTION SERVER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dig" '("query-dig" "dig-")))
+
;;;***
-;;;### (autoloads nil "dired" "dired.el" (22388 5703 243567 701000))
+;;;### (autoloads nil "dired" "dired.el" (0 0 0 0))
;;; Generated autoloads from dired.el
(defvar dired-listing-switches (purecopy "-al") "\
@@ -6609,10 +7354,27 @@ Keybindings:
\(fn &optional DIRNAME SWITCHES)" nil nil)
(put 'dired-find-alternate-file 'disabled t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dired" '("dired-")))
+
;;;***
-;;;### (autoloads nil "dirtrack" "dirtrack.el" (22388 5703 290568
-;;;;;; 163000))
+;;;### (autoloads "actual autoloads are elsewhere" "dired-aux" "dired-aux.el"
+;;;;;; (22402 8370 102777 743000))
+;;; Generated autoloads from dired-aux.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dired-aux" '("dired-" "minibuffer-default-add-dired-shell-commands")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "dired-x" "dired-x.el"
+;;;;;; (22258 27960 296487 495000))
+;;; Generated autoloads from dired-x.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dired-x" '("dired-" "virtual-dired")))
+
+;;;***
+
+;;;### (autoloads nil "dirtrack" "dirtrack.el" (0 0 0 0))
;;; Generated autoloads from dirtrack.el
(autoload 'dirtrack-mode "dirtrack" "\
@@ -6640,10 +7402,11 @@ from `default-directory'.
\(fn INPUT)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dirtrack" '("dirtrack-")))
+
;;;***
-;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (22388 6369
-;;;;;; 111116 27000))
+;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/disass.el
(autoload 'disassemble "disass" "\
@@ -6655,10 +7418,11 @@ redefine OBJECT if it is a symbol.
\(fn OBJECT &optional BUFFER INDENT INTERACTIVE-P)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "disass" '("disassemble-")))
+
;;;***
-;;;### (autoloads nil "disp-table" "disp-table.el" (22388 5703 328568
-;;;;;; 537000))
+;;;### (autoloads nil "disp-table" "disp-table.el" (0 0 0 0))
;;; Generated autoloads from disp-table.el
(autoload 'make-display-table "disp-table" "\
@@ -6777,10 +7541,11 @@ in `.emacs'.
\(fn ARG)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "disp-table" '("display-table-print-array")))
+
;;;***
-;;;### (autoloads nil "dissociate" "play/dissociate.el" (22388 6383
-;;;;;; 236254 937000))
+;;;### (autoloads nil "dissociate" "play/dissociate.el" (0 0 0 0))
;;; Generated autoloads from play/dissociate.el
(autoload 'dissociated-press "dissociate" "\
@@ -6796,7 +7561,7 @@ Default is 2.
;;;***
-;;;### (autoloads nil "dnd" "dnd.el" (22388 5703 329568 547000))
+;;;### (autoloads nil "dnd" "dnd.el" (0 0 0 0))
;;; Generated autoloads from dnd.el
(defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\
@@ -6814,10 +7579,18 @@ if some action was made, or nil if the URL is ignored.")
(custom-autoload 'dnd-protocol-alist "dnd" t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dnd" '("dnd-")))
+
;;;***
-;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (22388 6389
-;;;;;; 248314 61000))
+;;;### (autoloads nil "dns" "net/dns.el" (0 0 0 0))
+;;; Generated autoloads from net/dns.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dns" '("dns-")))
+
+;;;***
+
+;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (0 0 0 0))
;;; Generated autoloads from textmodes/dns-mode.el
(autoload 'dns-mode "dns-mode" "\
@@ -6838,10 +7611,11 @@ Locate SOA record and increment the serial field.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dns-mode" '("dns-mode-")))
+
;;;***
-;;;### (autoloads nil "doc-view" "doc-view.el" (22388 5703 332568
-;;;;;; 576000))
+;;;### (autoloads nil "doc-view" "doc-view.el" (0 0 0 0))
;;; Generated autoloads from doc-view.el
(autoload 'doc-view-mode-p "doc-view" "\
@@ -6885,10 +7659,11 @@ See the command `doc-view-mode' for more information on this mode.
\(fn BMK)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "doc-view" '("doc-view-")))
+
;;;***
-;;;### (autoloads nil "doctor" "play/doctor.el" (22388 6383 237254
-;;;;;; 947000))
+;;;### (autoloads nil "doctor" "play/doctor.el" (0 0 0 0))
;;; Generated autoloads from play/doctor.el
(autoload 'doctor "doctor" "\
@@ -6896,9 +7671,39 @@ Switch to *doctor* buffer and start giving psychotherapy.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "doctor" '("doc" "make-doctor-variables")))
+
+;;;***
+
+;;;### (autoloads nil "dom" "dom.el" (0 0 0 0))
+;;; Generated autoloads from dom.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dom" '("dom-")))
+
;;;***
-;;;### (autoloads nil "double" "double.el" (22388 5703 374568 989000))
+;;;### (autoloads nil "dos-fns" "dos-fns.el" (0 0 0 0))
+;;; Generated autoloads from dos-fns.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dos-fns" '("dos")))
+
+;;;***
+
+;;;### (autoloads nil "dos-vars" "dos-vars.el" (0 0 0 0))
+;;; Generated autoloads from dos-vars.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dos-vars" '("dos-codepage-setup-hook" "msdos-shells")))
+
+;;;***
+
+;;;### (autoloads nil "dos-w32" "dos-w32.el" (0 0 0 0))
+;;; Generated autoloads from dos-w32.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dos-w32" '("w32-" "file-name-buffer-file-type-alist" "find-")))
+
+;;;***
+
+;;;### (autoloads nil "double" "double.el" (0 0 0 0))
;;; Generated autoloads from double.el
(autoload 'double-mode "double" "\
@@ -6912,10 +7717,11 @@ strings when pressed twice. See `double-map' for details.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "double" '("double-")))
+
;;;***
-;;;### (autoloads nil "dunnet" "play/dunnet.el" (22388 6383 302255
-;;;;;; 586000))
+;;;### (autoloads nil "dunnet" "play/dunnet.el" (0 0 0 0))
;;; Generated autoloads from play/dunnet.el
(push (purecopy '(dunnet 2 2)) package--builtin-versions)
@@ -6924,10 +7730,20 @@ Switch to *dungeon* buffer and start game.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dunnet" '("down" "dun" "out" "obj-special" "south" "north" "west" "east")))
+
+;;;***
+
+;;;### (autoloads nil "dynamic-setting" "dynamic-setting.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from dynamic-setting.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dynamic-setting" '("dynamic-setting-handle-config-changed-event" "font-setting-change-default-font")))
+
;;;***
-;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (22388
-;;;;;; 6369 112116 36000))
+;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from emacs-lisp/easy-mmode.el
(defalias 'easy-mmode-define-minor-mode 'define-minor-mode)
@@ -6956,9 +7772,10 @@ Optional LIGHTER is displayed in the mode line when the mode is on.
Optional KEYMAP is the default keymap bound to the mode keymap.
If non-nil, it should be a variable name (whose value is a keymap),
or an expression that returns either a keymap or a list of
- arguments for `easy-mmode-define-keymap'. If you supply a KEYMAP
- argument that is not a symbol, this macro defines the variable
- MODE-map and gives it the value that KEYMAP specifies.
+ (KEY . BINDING) pairs where KEY and BINDING are suitable for
+ `define-key'. If you supply a KEYMAP argument that is not a
+ symbol, this macro defines the variable MODE-map and gives it
+ the value that KEYMAP specifies.
BODY contains code to execute each time the mode is enabled or disabled.
It is executed after toggling the mode, and before running MODE-hook.
@@ -7067,10 +7884,12 @@ CSS contains a list of syntax specifications of the form (CHAR . SYNTAX).
\(fn ST CSS DOC &rest ARGS)" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "easy-mmode" '("easy-mmode-")))
+
;;;***
-;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (22388
-;;;;;; 6369 115116 66000))
+;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from emacs-lisp/easymenu.el
(autoload 'easy-menu-define "easymenu" "\
@@ -7206,10 +8025,60 @@ To implement dynamic menus, either call this from
\(fn PATH NAME ITEMS &optional BEFORE MAP)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "easymenu" '("easy-menu-" "add-submenu")))
+
+;;;***
+
+;;;### (autoloads nil "ebnf-abn" "progmodes/ebnf-abn.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/ebnf-abn.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ebnf-abn" '("ebnf-abn-")))
+
;;;***
-;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (22388 6385
-;;;;;; 685279 22000))
+;;;### (autoloads nil "ebnf-bnf" "progmodes/ebnf-bnf.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/ebnf-bnf.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ebnf-bnf" '("ebnf-")))
+
+;;;***
+
+;;;### (autoloads nil "ebnf-dtd" "progmodes/ebnf-dtd.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/ebnf-dtd.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ebnf-dtd" '("ebnf-dtd-")))
+
+;;;***
+
+;;;### (autoloads nil "ebnf-ebx" "progmodes/ebnf-ebx.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/ebnf-ebx.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ebnf-ebx" '("ebnf-ebx-")))
+
+;;;***
+
+;;;### (autoloads nil "ebnf-iso" "progmodes/ebnf-iso.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/ebnf-iso.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ebnf-iso" '("ebnf-")))
+
+;;;***
+
+;;;### (autoloads nil "ebnf-otz" "progmodes/ebnf-otz.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/ebnf-otz.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ebnf-otz" '("ebnf-")))
+
+;;;***
+
+;;;### (autoloads nil "ebnf-yac" "progmodes/ebnf-yac.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/ebnf-yac.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ebnf-yac" '("ebnf-yac-")))
+
+;;;***
+
+;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (0 0 0 0))
;;; Generated autoloads from progmodes/ebnf2ps.el
(push (purecopy '(ebnf2ps 4 4)) package--builtin-versions)
@@ -7472,10 +8341,11 @@ See `ebnf-style-database' documentation.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ebnf2ps" '("ebnf-")))
+
;;;***
-;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (22388 6385
-;;;;;; 813280 281000))
+;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (0 0 0 0))
;;; Generated autoloads from progmodes/ebrowse.el
(autoload 'ebrowse-tree-mode "ebrowse" "\
@@ -7621,10 +8491,11 @@ Display statistics for a class tree.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ebrowse" '("electric-buffer-menu-mode-hook" "ebrowse-")))
+
;;;***
-;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (22388 5703 376569
-;;;;;; 8000))
+;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (0 0 0 0))
;;; Generated autoloads from ebuff-menu.el
(autoload 'electric-buffer-list "ebuff-menu" "\
@@ -7654,10 +8525,11 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
\(fn ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ebuff-menu" '("electric-buffer-" "Electric-buffer-menu-")))
+
;;;***
-;;;### (autoloads nil "echistory" "echistory.el" (22388 5703 407569
-;;;;;; 313000))
+;;;### (autoloads nil "echistory" "echistory.el" (0 0 0 0))
;;; Generated autoloads from echistory.el
(autoload 'Electric-command-history-redo-expression "echistory" "\
@@ -7666,20 +8538,23 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
\(fn &optional NOCONFIRM)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "echistory" '("Electric-history-" "electric-")))
+
;;;***
-;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (22388 6371
-;;;;;; 666141 154000))
-;;; Generated autoloads from gnus/ecomplete.el
+;;;### (autoloads nil "ecomplete" "ecomplete.el" (0 0 0 0))
+;;; Generated autoloads from ecomplete.el
(autoload 'ecomplete-setup "ecomplete" "\
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ecomplete" '("ecomplete-")))
+
;;;***
-;;;### (autoloads nil "ede" "cedet/ede.el" (22388 6368 441109 438000))
+;;;### (autoloads nil "ede" "cedet/ede.el" (0 0 0 0))
;;; Generated autoloads from cedet/ede.el
(push (purecopy '(ede 1 2)) package--builtin-versions)
@@ -7704,10 +8579,284 @@ an EDE controlled project.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede" '("project-try-ede" "ede" "global-ede-mode-map")))
+
+;;;***
+
+;;;### (autoloads nil "ede/auto" "cedet/ede/auto.el" (0 0 0 0))
+;;; Generated autoloads from cedet/ede/auto.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/auto" '("ede-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/autoconf-edit" "cedet/ede/autoconf-edit.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/ede/autoconf-edit.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/autoconf-edit" '("autoconf-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/base" "cedet/ede/base.el"
+;;;;;; (22164 57533 927192 607000))
+;;; Generated autoloads from cedet/ede/base.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/base" '("ede-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/config" "cedet/ede/config.el"
+;;;;;; (22164 57533 927192 607000))
+;;; Generated autoloads from cedet/ede/config.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/config" '("ede-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/cpp-root"
+;;;;;; "cedet/ede/cpp-root.el" (22164 57533 931192 607000))
+;;; Generated autoloads from cedet/ede/cpp-root.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/cpp-root" '("ede-c")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/custom" "cedet/ede/custom.el"
+;;;;;; (22164 57533 931192 607000))
+;;; Generated autoloads from cedet/ede/custom.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/custom" '("eieio-ede-old-variables" "ede-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/detect" "cedet/ede/detect.el" (0 0 0 0))
+;;; Generated autoloads from cedet/ede/detect.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/detect" '("ede-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/dired" "cedet/ede/dired.el"
+;;;;;; (22164 57533 931192 607000))
+;;; Generated autoloads from cedet/ede/dired.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/dired" '("ede-dired-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/emacs" "cedet/ede/emacs.el"
+;;;;;; (22164 57533 931192 607000))
+;;; Generated autoloads from cedet/ede/emacs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/emacs" '("ede-emacs-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/files" "cedet/ede/files.el"
+;;;;;; (22164 57533 931192 607000))
+;;; Generated autoloads from cedet/ede/files.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/files" '("ede-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/generic"
+;;;;;; "cedet/ede/generic.el" (22164 57533 931192 607000))
+;;; Generated autoloads from cedet/ede/generic.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/generic" '("ede-generic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/linux" "cedet/ede/linux.el"
+;;;;;; (22362 1462 489419 679000))
+;;; Generated autoloads from cedet/ede/linux.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/linux" '("ede-linux-" "project-linux-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/locate" "cedet/ede/locate.el"
+;;;;;; (22189 60738 37741 19000))
+;;; Generated autoloads from cedet/ede/locate.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/locate" '("ede-locate-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/make" "cedet/ede/make.el"
+;;;;;; (22164 57533 931192 607000))
+;;; Generated autoloads from cedet/ede/make.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/make" '("ede-make-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/makefile-edit" "cedet/ede/makefile-edit.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/ede/makefile-edit.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/makefile-edit" '("makefile-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/pconf" "cedet/ede/pconf.el" (0 0 0 0))
+;;; Generated autoloads from cedet/ede/pconf.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/pconf" '("ede-pconf-create-file-query")))
+
+;;;***
+
+;;;### (autoloads nil "ede/pmake" "cedet/ede/pmake.el" (0 0 0 0))
+;;; Generated autoloads from cedet/ede/pmake.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/pmake" '("ede-pmake-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj" "cedet/ede/proj.el" (0 0 0 0))
+;;; Generated autoloads from cedet/ede/proj.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj" '("ede-proj-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj-archive" "cedet/ede/proj-archive.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/ede/proj-archive.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj-archive" '("ede-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj-aux" "cedet/ede/proj-aux.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from cedet/ede/proj-aux.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj-aux" '("ede-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj-comp" "cedet/ede/proj-comp.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from cedet/ede/proj-comp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj-comp" '("proj-comp-insert-variable-once" "ede-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj-elisp" "cedet/ede/proj-elisp.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/ede/proj-elisp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj-elisp" '("ede-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj-info" "cedet/ede/proj-info.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from cedet/ede/proj-info.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj-info" '("ede-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj-misc" "cedet/ede/proj-misc.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from cedet/ede/proj-misc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj-misc" '("ede-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj-obj" "cedet/ede/proj-obj.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from cedet/ede/proj-obj.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj-obj" '("ede-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj-prog" "cedet/ede/proj-prog.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from cedet/ede/proj-prog.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj-prog" '("ede-proj-target-makefile-program")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj-scheme" "cedet/ede/proj-scheme.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/ede/proj-scheme.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj-scheme" '("ede-proj-target-scheme")))
+
+;;;***
+
+;;;### (autoloads nil "ede/proj-shared" "cedet/ede/proj-shared.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/ede/proj-shared.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/proj-shared" '("ede-")))
+
;;;***
-;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (22388 6369
-;;;;;; 157116 479000))
+;;;### (autoloads nil "ede/project-am" "cedet/ede/project-am.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/ede/project-am.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/project-am" '("project-am-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/shell" "cedet/ede/shell.el"
+;;;;;; (22164 57533 935192 607000))
+;;; Generated autoloads from cedet/ede/shell.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/shell" '("ede-shell-run-command")))
+
+;;;***
+
+;;;### (autoloads nil "ede/simple" "cedet/ede/simple.el" (0 0 0 0))
+;;; Generated autoloads from cedet/ede/simple.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/simple" '("ede-simple-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/source" "cedet/ede/source.el" (0 0 0 0))
+;;; Generated autoloads from cedet/ede/source.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/source" '("ede-source")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/speedbar"
+;;;;;; "cedet/ede/speedbar.el" (22164 57533 935192 607000))
+;;; Generated autoloads from cedet/ede/speedbar.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/speedbar" '("ede-")))
+
+;;;***
+
+;;;### (autoloads nil "ede/srecode" "cedet/ede/srecode.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from cedet/ede/srecode.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/srecode" '("ede-srecode-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ede/util" "cedet/ede/util.el"
+;;;;;; (22164 57533 935192 607000))
+;;; Generated autoloads from cedet/ede/util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ede/util" '("ede-make-buffer-writable")))
+
+;;;***
+
+;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/edebug.el
(defvar edebug-all-defs nil "\
@@ -7769,9 +8918,11 @@ Toggle edebugging of all forms.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "edebug" '("edebug" "get-edebug-spec" "global-edebug-" "cancel-edebug-on-entry")))
+
;;;***
-;;;### (autoloads nil "ediff" "vc/ediff.el" (22388 6391 36331 645000))
+;;;### (autoloads nil "ediff" "vc/ediff.el" (0 0 0 0))
;;; Generated autoloads from vc/ediff.el
(push (purecopy '(ediff 2 81 4)) package--builtin-versions)
@@ -8041,10 +9192,18 @@ With optional NODE, goes to that node.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ediff" '("ediff-")))
+
+;;;***
+
+;;;### (autoloads nil "ediff-diff" "vc/ediff-diff.el" (0 0 0 0))
+;;; Generated autoloads from vc/ediff-diff.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ediff-diff" '("ediff-")))
+
;;;***
-;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (22388 6390
-;;;;;; 831329 629000))
+;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (0 0 0 0))
;;; Generated autoloads from vc/ediff-help.el
(autoload 'ediff-customize "ediff-help" "\
@@ -8052,10 +9211,25 @@ With optional NODE, goes to that node.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ediff-help" '("ediff-")))
+
;;;***
-;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (22388 6390
-;;;;;; 876330 72000))
+;;;### (autoloads nil "ediff-init" "vc/ediff-init.el" (0 0 0 0))
+;;; Generated autoloads from vc/ediff-init.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ediff-init" '("ediff-" "stipple-pixmap")))
+
+;;;***
+
+;;;### (autoloads nil "ediff-merg" "vc/ediff-merg.el" (0 0 0 0))
+;;; Generated autoloads from vc/ediff-merg.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ediff-merg" '("ediff-")))
+
+;;;***
+
+;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (0 0 0 0))
;;; Generated autoloads from vc/ediff-mult.el
(autoload 'ediff-show-registry "ediff-mult" "\
@@ -8065,10 +9239,18 @@ Display Ediff's registry.
(defalias 'eregistry 'ediff-show-registry)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ediff-mult" '("ediff-")))
+
+;;;***
+
+;;;### (autoloads nil "ediff-ptch" "vc/ediff-ptch.el" (0 0 0 0))
+;;; Generated autoloads from vc/ediff-ptch.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ediff-ptch" '("ediff-")))
+
;;;***
-;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (22388 6390
-;;;;;; 954330 839000))
+;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (0 0 0 0))
;;; Generated autoloads from vc/ediff-util.el
(autoload 'ediff-toggle-multiframe "ediff-util" "\
@@ -8085,9 +9267,25 @@ To change the default, set the variable `ediff-use-toolbar-p', which see.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ediff-util" '("ediff-")))
+
+;;;***
+
+;;;### (autoloads nil "ediff-vers" "vc/ediff-vers.el" (0 0 0 0))
+;;; Generated autoloads from vc/ediff-vers.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ediff-vers" '("ediff-" "rcs-ediff-view-revision")))
+
+;;;***
+
+;;;### (autoloads nil "ediff-wind" "vc/ediff-wind.el" (0 0 0 0))
+;;; Generated autoloads from vc/ediff-wind.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ediff-wind" '("ediff-")))
+
;;;***
-;;;### (autoloads nil "edmacro" "edmacro.el" (22388 5703 410569 343000))
+;;;### (autoloads nil "edmacro" "edmacro.el" (0 0 0 0))
;;; Generated autoloads from edmacro.el
(push (purecopy '(edmacro 2 1)) package--builtin-versions)
@@ -8134,10 +9332,11 @@ or nil, use a compact 80-column format.
\(fn &optional MACRO VERBOSE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "edmacro" '("edmacro-")))
+
;;;***
-;;;### (autoloads nil "edt" "emulation/edt.el" (22388 6369 879123
-;;;;;; 579000))
+;;;### (autoloads nil "edt" "emulation/edt.el" (0 0 0 0))
;;; Generated autoloads from emulation/edt.el
(autoload 'edt-set-scroll-margins "edt" "\
@@ -8152,9 +9351,42 @@ Turn on EDT Emulation.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "edt" '("edt-")))
+
+;;;***
+
+;;;### (autoloads nil "edt-lk201" "emulation/edt-lk201.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from emulation/edt-lk201.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "edt-lk201" '("*EDT-keys*")))
+
+;;;***
+
+;;;### (autoloads nil "edt-mapper" "emulation/edt-mapper.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from emulation/edt-mapper.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "edt-mapper" '("edt-")))
+
+;;;***
+
+;;;### (autoloads nil "edt-pc" "emulation/edt-pc.el" (0 0 0 0))
+;;; Generated autoloads from emulation/edt-pc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "edt-pc" '("*EDT-keys*")))
+
+;;;***
+
+;;;### (autoloads nil "edt-vt100" "emulation/edt-vt100.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from emulation/edt-vt100.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "edt-vt100" '("edt-set-term-width-")))
+
;;;***
-;;;### (autoloads nil "ehelp" "ehelp.el" (22388 5703 411569 352000))
+;;;### (autoloads nil "ehelp" "ehelp.el" (0 0 0 0))
;;; Generated autoloads from ehelp.el
(autoload 'with-electric-help "ehelp" "\
@@ -8188,17 +9420,36 @@ BUFFER is put back into its original major mode.
\(fn FUN &optional NAME)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ehelp" '("electric-" "ehelp-")))
+
;;;***
-;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (22388 6369 284117
-;;;;;; 728000))
+;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/eieio.el
(push (purecopy '(eieio 1 4)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eieio" '("eieio-" "oref" "oset" "obj" "find-class" "set-slot-value" "same-class-p" "slot-" "child-of-class-p" "with-slots" "defclass")))
+
+;;;***
+
+;;;### (autoloads nil "eieio-base" "emacs-lisp/eieio-base.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from emacs-lisp/eieio-base.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eieio-base" '("eieio-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "eieio-compat"
+;;;;;; "emacs-lisp/eieio-compat.el" (22164 57534 179192 607000))
+;;; Generated autoloads from emacs-lisp/eieio-compat.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eieio-compat" '("no-" "next-method-p" "generic-p" "eieio--generic-static-symbol-specializers")))
+
;;;***
-;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (22420
-;;;;;; 38537 268424 423000))
+;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from emacs-lisp/eieio-core.el
(push (purecopy '(eieio-core 1 4)) package--builtin-versions)
@@ -8212,10 +9463,43 @@ It creates an autoload function for CNAME's constructor.
\(fn CNAME SUPERCLASSES FILENAME DOC)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eieio-core" '("eieio-" "invalid-slot-" "inconsistent-class-hierarchy" "unbound-slot" "class-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "eieio-custom"
+;;;;;; "emacs-lisp/eieio-custom.el" (22164 57534 179192 607000))
+;;; Generated autoloads from emacs-lisp/eieio-custom.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eieio-custom" '("eieio-")))
+
;;;***
-;;;### (autoloads nil "elec-pair" "elec-pair.el" (22388 5703 414569
-;;;;;; 382000))
+;;;### (autoloads nil "eieio-datadebug" "emacs-lisp/eieio-datadebug.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from emacs-lisp/eieio-datadebug.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eieio-datadebug" '("data-debug-insert-object-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "eieio-opt" "emacs-lisp/eieio-opt.el"
+;;;;;; (22323 1714 165363 124000))
+;;; Generated autoloads from emacs-lisp/eieio-opt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eieio-opt" '("eieio-")))
+
+;;;***
+
+;;;### (autoloads nil "eieio-speedbar" "emacs-lisp/eieio-speedbar.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from emacs-lisp/eieio-speedbar.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eieio-speedbar" '("eieio-speedbar")))
+
+;;;***
+
+;;;### (autoloads nil "elec-pair" "elec-pair.el" (0 0 0 0))
;;; Generated autoloads from elec-pair.el
(defvar electric-pair-text-pairs '((34 . 34)) "\
@@ -8255,10 +9539,11 @@ Toggle `electric-pair-mode' only in this buffer.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "elec-pair" '("electric-pair-")))
+
;;;***
-;;;### (autoloads nil "elide-head" "elide-head.el" (22388 5703 450569
-;;;;;; 736000))
+;;;### (autoloads nil "elide-head" "elide-head.el" (0 0 0 0))
;;; Generated autoloads from elide-head.el
(autoload 'elide-head "elide-head" "\
@@ -8271,10 +9556,11 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "elide-head" '("elide-head-")))
+
;;;***
-;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (22388 6369 300117
-;;;;;; 885000))
+;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/elint.el
(autoload 'elint-file "elint" "\
@@ -8307,10 +9593,11 @@ optional prefix argument REINIT is non-nil.
\(fn &optional REINIT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "elint" '("elint-")))
+
;;;***
-;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (22388 6369 328118
-;;;;;; 161000))
+;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/elp.el
(autoload 'elp-instrument-function "elp" "\
@@ -8342,10 +9629,147 @@ displayed.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "elp" '("elp-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-alias" "eshell/em-alias.el"
+;;;;;; (22164 57534 283192 607000))
+;;; Generated autoloads from eshell/em-alias.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-alias" '("eshell" "pcomplete/eshell-mode/alias")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-banner" "eshell/em-banner.el"
+;;;;;; (22164 57534 283192 607000))
+;;; Generated autoloads from eshell/em-banner.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-banner" '("eshell-banner-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-basic" "eshell/em-basic.el"
+;;;;;; (22164 57534 283192 607000))
+;;; Generated autoloads from eshell/em-basic.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-basic" '("eshell")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-cmpl" "eshell/em-cmpl.el"
+;;;;;; (22164 57534 283192 607000))
+;;; Generated autoloads from eshell/em-cmpl.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-cmpl" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-dirs" "eshell/em-dirs.el"
+;;;;;; (22164 57534 283192 607000))
+;;; Generated autoloads from eshell/em-dirs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-dirs" '("eshell")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-glob" "eshell/em-glob.el"
+;;;;;; (22164 57534 283192 607000))
+;;; Generated autoloads from eshell/em-glob.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-glob" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-hist" "eshell/em-hist.el"
+;;;;;; (22164 57534 287192 607000))
+;;; Generated autoloads from eshell/em-hist.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-hist" '("eshell")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-ls" "eshell/em-ls.el"
+;;;;;; (22381 2247 656310 732000))
+;;; Generated autoloads from eshell/em-ls.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-ls" '("eshell")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-pred" "eshell/em-pred.el"
+;;;;;; (22164 57534 287192 607000))
+;;; Generated autoloads from eshell/em-pred.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-pred" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-prompt" "eshell/em-prompt.el"
+;;;;;; (22164 57534 287192 607000))
+;;; Generated autoloads from eshell/em-prompt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-prompt" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-rebind" "eshell/em-rebind.el"
+;;;;;; (22164 57534 291192 607000))
+;;; Generated autoloads from eshell/em-rebind.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-rebind" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-script" "eshell/em-script.el"
+;;;;;; (22164 57534 291192 607000))
+;;; Generated autoloads from eshell/em-script.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-script" '("eshell")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-smart" "eshell/em-smart.el"
+;;;;;; (22164 57534 291192 607000))
+;;; Generated autoloads from eshell/em-smart.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-smart" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-term" "eshell/em-term.el"
+;;;;;; (22174 6972 512792 520000))
+;;; Generated autoloads from eshell/em-term.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-term" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-tramp" "eshell/em-tramp.el"
+;;;;;; (22164 57534 291192 607000))
+;;; Generated autoloads from eshell/em-tramp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-tramp" '("eshell")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-unix" "eshell/em-unix.el"
+;;;;;; (22319 4659 781044 40000))
+;;; Generated autoloads from eshell/em-unix.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-unix" '("eshell" "nil-blank-string" "pcomplete/")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "em-xtra" "eshell/em-xtra.el"
+;;;;;; (22164 57534 295192 607000))
+;;; Generated autoloads from eshell/em-xtra.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "em-xtra" '("pcomplete/bcc" "eshell/")))
+
;;;***
-;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (22388 5703 453569
-;;;;;; 765000))
+;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (0 0 0 0))
;;; Generated autoloads from emacs-lock.el
(autoload 'emacs-lock-mode "emacs-lock" "\
@@ -8370,10 +9794,11 @@ Other values are interpreted as usual.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "emacs-lock" '("toggle-emacs-lock" "emacs-lock-")))
+
;;;***
-;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (22388 6375 470178
-;;;;;; 563000))
+;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (0 0 0 0))
;;; Generated autoloads from mail/emacsbug.el
(autoload 'report-emacs-bug "emacsbug" "\
@@ -8384,9 +9809,11 @@ Prompts for bug subject. Leaves you in a mail buffer.
(set-advertised-calling-convention 'report-emacs-bug '(topic) '"24.5")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "emacsbug" '("report-emacs-bug-")))
+
;;;***
-;;;### (autoloads nil "emerge" "vc/emerge.el" (22388 6391 68331 960000))
+;;;### (autoloads nil "emerge" "vc/emerge.el" (0 0 0 0))
;;; Generated autoloads from vc/emerge.el
(autoload 'emerge-files "emerge" "\
@@ -8444,10 +9871,11 @@ Emerge two RCS revisions of a file, with another revision as ancestor.
\(fn A-DIR B-DIR ANCESTOR-DIR OUTPUT-DIR)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "emerge" '("emerge-")))
+
;;;***
-;;;### (autoloads nil "enriched" "textmodes/enriched.el" (22388 6389
-;;;;;; 248314 61000))
+;;;### (autoloads nil "enriched" "textmodes/enriched.el" (0 0 0 0))
;;; Generated autoloads from textmodes/enriched.el
(autoload 'enriched-mode "enriched" "\
@@ -8480,9 +9908,11 @@ Commands:
\(fn FROM TO)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "enriched" '("enriched-")))
+
;;;***
-;;;### (autoloads nil "epa" "epa.el" (22388 5703 490570 130000))
+;;;### (autoloads nil "epa" "epa.el" (0 0 0 0))
;;; Generated autoloads from epa.el
(autoload 'epa-list-keys "epa" "\
@@ -8668,10 +10098,11 @@ Insert selected KEYS after the point.
\(fn KEYS)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "epa" '("epa-")))
+
;;;***
-;;;### (autoloads nil "epa-dired" "epa-dired.el" (22388 5703 456569
-;;;;;; 795000))
+;;;### (autoloads nil "epa-dired" "epa-dired.el" (0 0 0 0))
;;; Generated autoloads from epa-dired.el
(autoload 'epa-dired-do-decrypt "epa-dired" "\
@@ -8696,8 +10127,7 @@ Encrypt marked files.
;;;***
-;;;### (autoloads nil "epa-file" "epa-file.el" (22388 5703 456569
-;;;;;; 795000))
+;;;### (autoloads nil "epa-file" "epa-file.el" (0 0 0 0))
;;; Generated autoloads from epa-file.el
(autoload 'epa-file-handler "epa-file" "\
@@ -8715,10 +10145,11 @@ Encrypt marked files.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "epa-file" '("epa-")))
+
;;;***
-;;;### (autoloads nil "epa-mail" "epa-mail.el" (22388 5703 459569
-;;;;;; 824000))
+;;;### (autoloads nil "epa-mail" "epa-mail.el" (0 0 0 0))
;;; Generated autoloads from epa-mail.el
(autoload 'epa-mail-mode "epa-mail" "\
@@ -8794,9 +10225,11 @@ if ARG is omitted or nil.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "epa-mail" '("epa-mail-")))
+
;;;***
-;;;### (autoloads nil "epg" "epg.el" (22388 5703 495570 179000))
+;;;### (autoloads nil "epg" "epg.el" (0 0 0 0))
;;; Generated autoloads from epg.el
(push (purecopy '(epg 1 0 0)) package--builtin-versions)
@@ -8805,23 +10238,25 @@ Return a context object.
\(fn &optional PROTOCOL ARMOR TEXTMODE INCLUDE-CERTS CIPHER-ALGORITHM DIGEST-ALGORITHM COMPRESS-ALGORITHM)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "epg" '("epg-")))
+
;;;***
-;;;### (autoloads nil "epg-config" "epg-config.el" (22388 5703 494570
-;;;;;; 169000))
+;;;### (autoloads nil "epg-config" "epg-config.el" (0 0 0 0))
;;; Generated autoloads from epg-config.el
(autoload 'epg-find-configuration "epg-config" "\
Find or create a usable configuration to handle PROTOCOL.
This function first looks at the existing configuration found by
-the previous invocation of this function, unless FORCE is non-nil.
+the previous invocation of this function, unless NO-CACHE is non-nil.
-Then it walks through `epg-config--program-alist'. If
-`epg-gpg-program' or `epg-gpgsm-program' is already set with
-custom, use it. Otherwise, it tries the programs listed in the
-entry until the version requirement is met.
+Then it walks through PROGRAM-ALIST or
+`epg-config--program-alist'. If `epg-gpg-program' or
+`epg-gpgsm-program' is already set with custom, use it.
+Otherwise, it tries the programs listed in the entry until the
+version requirement is met.
-\(fn PROTOCOL &optional FORCE)" nil nil)
+\(fn PROTOCOL &optional NO-CACHE PROGRAM-ALIST)" nil nil)
(autoload 'epg-configuration "epg-config" "\
Return a list of internal configuration parameters of `epg-gpg-program'.
@@ -8840,9 +10275,11 @@ Look at CONFIG and try to expand GROUP.
\(fn CONFIG GROUP)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "epg-config" '("epg-")))
+
;;;***
-;;;### (autoloads nil "erc" "erc/erc.el" (22388 6370 962134 230000))
+;;;### (autoloads nil "erc" "erc/erc.el" (0 0 0 0))
;;; Generated autoloads from erc/erc.el
(push (purecopy '(erc 5 3)) package--builtin-versions)
@@ -8889,38 +10326,51 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
\(fn HOST PORT CHANNEL USER PASSWORD)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc" '("erc-" "define-erc-module")))
+
;;;***
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (22388
-;;;;;; 6370 614130 808000))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from erc/erc-autoaway.el
(autoload 'erc-autoaway-mode "erc-autoaway")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-autoaway" '("erc-auto" "autoaway")))
+
;;;***
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (22388 6370
-;;;;;; 674131 398000))
+;;;### (autoloads nil "erc-backend" "erc/erc-backend.el" (0 0 0 0))
+;;; Generated autoloads from erc/erc-backend.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-backend" '("erc-")))
+
+;;;***
+
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-button.el
(autoload 'erc-button-mode "erc-button" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-button" '("erc-" "button")))
+
;;;***
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (22388 6370
-;;;;;; 700131 653000))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-capab.el
(autoload 'erc-capab-identify-mode "erc-capab" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-capab" '("erc-capab-identify-" "capab-identify")))
+
;;;***
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (22388 6370
-;;;;;; 700131 653000))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-compat.el
(autoload 'erc-define-minor-mode "erc-compat")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-compat" '("erc-")))
+
;;;***
-;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (22388 6370 705131
-;;;;;; 703000))
+;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-dcc.el
(autoload 'erc-dcc-mode "erc-dcc")
@@ -8947,17 +10397,21 @@ that subcommand.
\(fn PROC NICK LOGIN HOST TO QUERY)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-dcc" '("erc-" "pcomplete/erc-mode/" "dcc")))
+
;;;***
;;;### (autoloads nil "erc-desktop-notifications" "erc/erc-desktop-notifications.el"
-;;;;;; (22388 6370 744132 87000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from erc/erc-desktop-notifications.el
(autoload 'erc-notifications-mode "erc-desktop-notifications" "" t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-desktop-notifications" '("notifications" "erc-notifications-")))
+
;;;***
-;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (22388
-;;;;;; 6370 745132 97000))
+;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from erc/erc-ezbounce.el
(autoload 'erc-cmd-ezb "erc-ezbounce" "\
@@ -9017,10 +10471,11 @@ Add EZBouncer convenience functions to ERC.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-ezbounce" '("erc-ezb-")))
+
;;;***
-;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (22388 6370 745132
-;;;;;; 97000))
+;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-fill.el
(autoload 'erc-fill-mode "erc-fill" nil t)
@@ -9030,10 +10485,25 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-fill" '("erc-")))
+
+;;;***
+
+;;;### (autoloads nil "erc-goodies" "erc/erc-goodies.el" (0 0 0 0))
+;;; Generated autoloads from erc/erc-goodies.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-goodies" '("erc-" "unmorse" "scrolltobottom" "smiley" "irccontrols" "noncommands" "keep-place" "move-to-prompt" "readonly")))
+
+;;;***
+
+;;;### (autoloads nil "erc-ibuffer" "erc/erc-ibuffer.el" (0 0 0 0))
+;;; Generated autoloads from erc/erc-ibuffer.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-ibuffer" '("erc-")))
+
;;;***
-;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (22388 6370
-;;;;;; 750132 146000))
+;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-identd.el
(autoload 'erc-identd-mode "erc-identd")
@@ -9052,10 +10522,11 @@ system.
\(fn &rest IGNORE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-identd" '("erc-identd-" "identd")))
+
;;;***
-;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (22388 6370
-;;;;;; 751132 156000))
+;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-imenu.el
(autoload 'erc-create-imenu-index "erc-imenu" "\
@@ -9063,24 +10534,34 @@ system.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-imenu" '("erc-unfill-notice")))
+
;;;***
-;;;### (autoloads nil "erc-join" "erc/erc-join.el" (22388 6370 751132
-;;;;;; 156000))
+;;;### (autoloads nil "erc-join" "erc/erc-join.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-join.el
(autoload 'erc-autojoin-mode "erc-join" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-join" '("erc-" "autojoin")))
+
+;;;***
+
+;;;### (autoloads nil "erc-lang" "erc/erc-lang.el" (0 0 0 0))
+;;; Generated autoloads from erc/erc-lang.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-lang" '("erc-cmd-LANG" "language" "iso-638-languages")))
+
;;;***
-;;;### (autoloads nil "erc-list" "erc/erc-list.el" (22388 6370 758132
-;;;;;; 225000))
+;;;### (autoloads nil "erc-list" "erc/erc-list.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-list.el
(autoload 'erc-list-mode "erc-list")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-list" '("erc-" "list")))
+
;;;***
-;;;### (autoloads nil "erc-log" "erc/erc-log.el" (22388 6370 777132
-;;;;;; 411000))
+;;;### (autoloads nil "erc-log" "erc/erc-log.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-log.el
(autoload 'erc-log-mode "erc-log" nil t)
@@ -9107,10 +10588,11 @@ You can save every individual message by putting this function on
\(fn &optional BUFFER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-log" '("erc-" "log")))
+
;;;***
-;;;### (autoloads nil "erc-match" "erc/erc-match.el" (22388 6370
-;;;;;; 796132 598000))
+;;;### (autoloads nil "erc-match" "erc/erc-match.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-match.el
(autoload 'erc-match-mode "erc-match")
@@ -9154,17 +10636,20 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-match" '("erc-" "match")))
+
;;;***
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (22388 6370 796132
-;;;;;; 598000))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-menu.el
(autoload 'erc-menu-mode "erc-menu" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-menu" '("erc-menu-" "menu")))
+
;;;***
-;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (22388
-;;;;;; 6370 798132 618000))
+;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from erc/erc-netsplit.el
(autoload 'erc-netsplit-mode "erc-netsplit")
@@ -9173,10 +10658,12 @@ Show who's gone.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-netsplit" '("erc-" "netsplit")))
+
;;;***
-;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (22388
-;;;;;; 6370 799132 627000))
+;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from erc/erc-networks.el
(autoload 'erc-determine-network "erc-networks" "\
@@ -9191,10 +10678,11 @@ Interactively select a server to connect to using `erc-server-alist'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-networks" '("erc-" "networks")))
+
;;;***
-;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (22388 6370
-;;;;;; 837133 1000))
+;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-notify.el
(autoload 'erc-notify-mode "erc-notify" nil t)
@@ -9210,38 +10698,45 @@ with args, toggle notify status of people.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-notify" '("erc-" "notify")))
+
;;;***
-;;;### (autoloads nil "erc-page" "erc/erc-page.el" (22388 6370 837133
-;;;;;; 1000))
+;;;### (autoloads nil "erc-page" "erc/erc-page.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-page.el
(autoload 'erc-page-mode "erc-page")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-page" '("erc-" "page")))
+
;;;***
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (22388
-;;;;;; 6370 839133 21000))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from erc/erc-pcomplete.el
(autoload 'erc-completion-mode "erc-pcomplete" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-pcomplete" '("pcomplete" "erc-pcomplet")))
+
;;;***
-;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (22388 6370
-;;;;;; 839133 21000))
+;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-replace.el
(autoload 'erc-replace-mode "erc-replace")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-replace" '("replace" "erc-replace-")))
+
;;;***
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (22388 6370 841133
-;;;;;; 40000))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-ring.el
(autoload 'erc-ring-mode "erc-ring" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-ring" '("erc-" "ring")))
+
;;;***
-;;;### (autoloads nil "erc-services" "erc/erc-services.el" (22388
-;;;;;; 6370 841133 40000))
+;;;### (autoloads nil "erc-services" "erc/erc-services.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from erc/erc-services.el
(autoload 'erc-services-mode "erc-services" nil t)
@@ -9256,17 +10751,20 @@ When called interactively, read the password using `read-passwd'.
\(fn PASSWORD)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-services" '("erc-" "services")))
+
;;;***
-;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (22388 6370
-;;;;;; 843133 60000))
+;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-sound.el
(autoload 'erc-sound-mode "erc-sound")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-sound" '("erc-" "sound")))
+
;;;***
-;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (22388
-;;;;;; 6370 843133 60000))
+;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from erc/erc-speedbar.el
(autoload 'erc-speedbar-browser "erc-speedbar" "\
@@ -9275,24 +10773,28 @@ This will add a speedbar major display mode.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-speedbar" '("erc-")))
+
;;;***
-;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (22388
-;;;;;; 6370 844133 70000))
+;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from erc/erc-spelling.el
(autoload 'erc-spelling-mode "erc-spelling" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-spelling" '("erc-spelling-" "spelling")))
+
;;;***
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (22388 6370
-;;;;;; 857133 197000))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-stamp.el
(autoload 'erc-timestamp-mode "erc-stamp" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-stamp" '("erc-" "stamp")))
+
;;;***
-;;;### (autoloads nil "erc-track" "erc/erc-track.el" (22388 6370
-;;;;;; 879133 414000))
+;;;### (autoloads nil "erc-track" "erc/erc-track.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-track.el
(defvar erc-track-minor-mode nil "\
@@ -9316,10 +10818,12 @@ keybindings will not do anything useful.
\(fn &optional ARG)" t nil)
(autoload 'erc-track-mode "erc-track" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-track" '("erc-" "track")))
+
;;;***
-;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (22388
-;;;;;; 6370 879133 414000))
+;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from erc/erc-truncate.el
(autoload 'erc-truncate-mode "erc-truncate" nil t)
@@ -9336,10 +10840,11 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-truncate" '("truncate" "erc-max-buffer-size")))
+
;;;***
-;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (22388 6370 880133
-;;;;;; 424000))
+;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (0 0 0 0))
;;; Generated autoloads from erc/erc-xdcc.el
(autoload 'erc-xdcc-mode "erc-xdcc")
@@ -9348,10 +10853,11 @@ Add a file to `erc-xdcc-files'.
\(fn FILE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "erc-xdcc" '("erc-" "xdcc")))
+
;;;***
-;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (22388 6369 379118
-;;;;;; 662000))
+;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/ert.el
(autoload 'ert-deftest "ert" "\
@@ -9418,10 +10924,11 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test).
\(fn TEST-OR-TEST-NAME)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ert" '("ert-")))
+
;;;***
-;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (22388 6369 330118
-;;;;;; 180000))
+;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/ert-x.el
(put 'ert-with-test-buffer 'lisp-indent-function 1)
@@ -9431,10 +10938,39 @@ Kill all test buffers that are still live.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ert-x" '("ert-")))
+
+;;;***
+
+;;;### (autoloads nil "esh-arg" "eshell/esh-arg.el" (0 0 0 0))
+;;; Generated autoloads from eshell/esh-arg.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "esh-arg" '("eshell-")))
+
;;;***
-;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (22388 6370
-;;;;;; 366128 369000))
+;;;### (autoloads nil "esh-cmd" "eshell/esh-cmd.el" (0 0 0 0))
+;;; Generated autoloads from eshell/esh-cmd.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "esh-cmd" '("eshell" "pcomplete/eshell-mode/eshell-debug")))
+
+;;;***
+
+;;;### (autoloads nil "esh-ext" "eshell/esh-ext.el" (0 0 0 0))
+;;; Generated autoloads from eshell/esh-ext.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "esh-ext" '("eshell")))
+
+;;;***
+
+;;;### (autoloads nil "esh-io" "eshell/esh-io.el" (0 0 0 0))
+;;; Generated autoloads from eshell/esh-io.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "esh-io" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (0 0 0 0))
;;; Generated autoloads from eshell/esh-mode.el
(autoload 'eshell-mode "esh-mode" "\
@@ -9442,10 +10978,47 @@ Emacs shell interactive mode.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "esh-mode" '("eshell")))
+
+;;;***
+
+;;;### (autoloads nil "esh-module" "eshell/esh-module.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from eshell/esh-module.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "esh-module" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads nil "esh-opt" "eshell/esh-opt.el" (0 0 0 0))
+;;; Generated autoloads from eshell/esh-opt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "esh-opt" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads nil "esh-proc" "eshell/esh-proc.el" (0 0 0 0))
+;;; Generated autoloads from eshell/esh-proc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "esh-proc" '("eshell")))
+
+;;;***
+
+;;;### (autoloads nil "esh-util" "eshell/esh-util.el" (0 0 0 0))
+;;; Generated autoloads from eshell/esh-util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "esh-util" '("eshell-")))
+
+;;;***
+
+;;;### (autoloads nil "esh-var" "eshell/esh-var.el" (0 0 0 0))
+;;; Generated autoloads from eshell/esh-var.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "esh-var" '("eshell" "pcomplete/eshell-mode/")))
+
;;;***
-;;;### (autoloads nil "eshell" "eshell/eshell.el" (22388 6370 441129
-;;;;;; 106000))
+;;;### (autoloads nil "eshell" "eshell/eshell.el" (0 0 0 0))
;;; Generated autoloads from eshell/eshell.el
(push (purecopy '(eshell 2 4 2)) package--builtin-versions)
@@ -9478,10 +11051,11 @@ corresponding to a successful execution.
(define-obsolete-function-alias 'eshell-report-bug 'report-emacs-bug "23.1")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eshell" '("eshell-")))
+
;;;***
-;;;### (autoloads nil "etags" "progmodes/etags.el" (22388 6386 65282
-;;;;;; 759000))
+;;;### (autoloads nil "etags" "progmodes/etags.el" (0 0 0 0))
;;; Generated autoloads from progmodes/etags.el
(defvar tags-file-name nil "\
@@ -9794,10 +11368,12 @@ for \\[find-tag] (which see).
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "etags" '("xref-" "etags-" "snarf-tag-function" "select-tags-table-" "tag" "file-of-tag" "find-tag-" "list-tags-function" "last-tag" "initialize-new-tags-table" "verify-tags-table-function" "goto-tag-location-function" "next-file-list" "default-tags-table-function")))
+
;;;***
-;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (22388
-;;;;;; 6374 991173 853000))
+;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from language/ethio-util.el
(autoload 'setup-ethiopic-environment-internal "ethio-util" "\
@@ -9963,9 +11539,11 @@ With ARG, insert that many delimiters.
\(fn POS TO FONT-OBJECT STRING)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ethio-util" '("exit-ethiopic-environment" "ethio-")))
+
;;;***
-;;;### (autoloads nil "eudc" "net/eudc.el" (22388 6377 395197 495000))
+;;;### (autoloads nil "eudc" "net/eudc.el" (0 0 0 0))
;;; Generated autoloads from net/eudc.el
(autoload 'eudc-set-server "eudc" "\
@@ -10015,12 +11593,13 @@ This does nothing except loading eudc by autoload side-effect.
\(fn)" t nil)
-(cond ((not (featurep 'xemacs)) (defvar eudc-tools-menu (let ((map (make-sparse-keymap "Directory Search"))) (define-key map [phone] `(menu-item ,(purecopy "Get Phone") eudc-get-phone :help ,(purecopy "Get the phone field of name from the directory server"))) (define-key map [email] `(menu-item ,(purecopy "Get Email") eudc-get-email :help ,(purecopy "Get the email field of NAME from the directory server"))) (define-key map [separator-eudc-email] menu-bar-separator) (define-key map [expand-inline] `(menu-item ,(purecopy "Expand Inline Query") eudc-expand-inline :help ,(purecopy "Query the directory server, and expand the query string before point"))) (define-key map [query] `(menu-item ,(purecopy "Query with Form") eudc-query-form :help ,(purecopy "Display a form to query the directory server"))) (define-key map [separator-eudc-query] menu-bar-separator) (define-key map [new] `(menu-item ,(purecopy "New Server") eudc-set-server :help ,(purecopy "Set the directory server to SERVER using PROTOCOL"))) (define-key map [load] `(menu-item ,(purecopy "Load Hotlist of Servers") eudc-load-eudc :help ,(purecopy "Load the Emacs Unified Directory Client"))) map)) (fset 'eudc-tools-menu (symbol-value 'eudc-tools-menu))) (t (let ((menu '("Directory Search" ["Load Hotlist of Servers" eudc-load-eudc t] ["New Server" eudc-set-server t] ["---" nil nil] ["Query with Form" eudc-query-form t] ["Expand Inline Query" eudc-expand-inline t] ["---" nil nil] ["Get Email" eudc-get-email t] ["Get Phone" eudc-get-phone t]))) (if (not (featurep 'eudc-autoloads)) (if (featurep 'xemacs) (if (and (featurep 'menubar) (not (featurep 'infodock))) (add-submenu '("Tools") menu)) (require 'easymenu) (cond ((fboundp 'easy-menu-add-item) (easy-menu-add-item nil '("tools") (easy-menu-create-menu (car menu) (cdr menu)))) ((fboundp 'easy-menu-create-keymaps) (define-key global-map [menu-bar tools eudc] (cons "Directory Search" (easy-menu-create-keymaps "Directory Search" (cdr menu)))))))))))
+(cond ((not (featurep 'xemacs)) (defvar eudc-tools-menu (let ((map (make-sparse-keymap "Directory Servers"))) (define-key map [phone] `(menu-item ,(purecopy "Get Phone") eudc-get-phone :help ,(purecopy "Get the phone field of name from the directory server"))) (define-key map [email] `(menu-item ,(purecopy "Get Email") eudc-get-email :help ,(purecopy "Get the email field of NAME from the directory server"))) (define-key map [separator-eudc-email] menu-bar-separator) (define-key map [expand-inline] `(menu-item ,(purecopy "Expand Inline Query") eudc-expand-inline :help ,(purecopy "Query the directory server, and expand the query string before point"))) (define-key map [query] `(menu-item ,(purecopy "Query with Form") eudc-query-form :help ,(purecopy "Display a form to query the directory server"))) (define-key map [separator-eudc-query] menu-bar-separator) (define-key map [new] `(menu-item ,(purecopy "New Server") eudc-set-server :help ,(purecopy "Set the directory server to SERVER using PROTOCOL"))) (define-key map [load] `(menu-item ,(purecopy "Load Hotlist of Servers") eudc-load-eudc :help ,(purecopy "Load the Emacs Unified Directory Client"))) map)) (fset 'eudc-tools-menu (symbol-value 'eudc-tools-menu))) (t (let ((menu '("Directory Servers" ["Load Hotlist of Servers" eudc-load-eudc t] ["New Server" eudc-set-server t] ["---" nil nil] ["Query with Form" eudc-query-form t] ["Expand Inline Query" eudc-expand-inline t] ["---" nil nil] ["Get Email" eudc-get-email t] ["Get Phone" eudc-get-phone t]))) (if (not (featurep 'eudc-autoloads)) (if (featurep 'xemacs) (if (and (featurep 'menubar) (not (featurep 'infodock))) (add-submenu '("Tools") menu)) (require 'easymenu) (cond ((fboundp 'easy-menu-add-item) (easy-menu-add-item nil '("tools") (easy-menu-create-menu (car menu) (cdr menu)))) ((fboundp 'easy-menu-create-keymaps) (define-key global-map [menu-bar tools eudc] (cons "Directory Servers" (easy-menu-create-keymaps "Directory Servers" (cdr menu)))))))))))
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eudc" '("eudc-")))
;;;***
-;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (22388 6377 358197
-;;;;;; 131000))
+;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (0 0 0 0))
;;; Generated autoloads from net/eudc-bob.el
(autoload 'eudc-display-generic-binary "eudc-bob" "\
@@ -10053,10 +11632,11 @@ Display a button for the JPEG DATA.
\(fn DATA)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eudc-bob" '("eudc-")))
+
;;;***
-;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (22388 6377
-;;;;;; 358197 131000))
+;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (0 0 0 0))
;;; Generated autoloads from net/eudc-export.el
(autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\
@@ -10070,10 +11650,12 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a record.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eudc-export" '("eudc-")))
+
;;;***
-;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (22388
-;;;;;; 6377 361197 160000))
+;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from net/eudc-hotlist.el
(autoload 'eudc-edit-hotlist "eudc-hotlist" "\
@@ -10081,10 +11663,39 @@ Edit the hotlist of directory servers in a specialized buffer.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eudc-hotlist" '("eudc-hotlist-")))
+
+;;;***
+
+;;;### (autoloads nil "eudc-vars" "net/eudc-vars.el" (0 0 0 0))
+;;; Generated autoloads from net/eudc-vars.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eudc-vars" '("eudc-")))
+
+;;;***
+
+;;;### (autoloads nil "eudcb-bbdb" "net/eudcb-bbdb.el" (0 0 0 0))
+;;; Generated autoloads from net/eudcb-bbdb.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eudcb-bbdb" '("eudc-bbdb-")))
+
;;;***
-;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (22388 6369 386118
-;;;;;; 731000))
+;;;### (autoloads nil "eudcb-ldap" "net/eudcb-ldap.el" (0 0 0 0))
+;;; Generated autoloads from net/eudcb-ldap.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eudcb-ldap" '("eudc-")))
+
+;;;***
+
+;;;### (autoloads nil "eudcb-mab" "net/eudcb-mab.el" (0 0 0 0))
+;;; Generated autoloads from net/eudcb-mab.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eudcb-mab" '("eudc-")))
+
+;;;***
+
+;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/ewoc.el
(autoload 'ewoc-create "ewoc" "\
@@ -10108,9 +11719,11 @@ fourth arg NOSEP non-nil inhibits this.
\(fn PRETTY-PRINTER &optional HEADER FOOTER NOSEP)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ewoc" '("ewoc-")))
+
;;;***
-;;;### (autoloads nil "eww" "net/eww.el" (22388 6377 438197 918000))
+;;;### (autoloads nil "eww" "net/eww.el" (0 0 0 0))
;;; Generated autoloads from net/eww.el
(defvar eww-suggest-uris '(eww-links-at-point url-get-url-at-point eww-current-url) "\
@@ -10155,10 +11768,12 @@ Display the bookmarks.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "eww" '("eww-")))
+
;;;***
-;;;### (autoloads nil "executable" "progmodes/executable.el" (22388
-;;;;;; 6386 103283 133000))
+;;;### (autoloads nil "executable" "progmodes/executable.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from progmodes/executable.el
(autoload 'executable-command-find-posix-p "executable" "\
@@ -10191,9 +11806,11 @@ file modes.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "executable" '("executable-")))
+
;;;***
-;;;### (autoloads nil "expand" "expand.el" (22388 5703 536570 582000))
+;;;### (autoloads nil "expand" "expand.el" (0 0 0 0))
;;; Generated autoloads from expand.el
(autoload 'expand-add-abbrevs "expand" "\
@@ -10240,10 +11857,18 @@ This is used only in conjunction with `expand-add-abbrevs'.
(define-key abbrev-map "p" 'expand-jump-to-previous-slot)
(define-key abbrev-map "n" 'expand-jump-to-next-slot)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "expand" '("expand-")))
+
+;;;***
+
+;;;### (autoloads nil "ezimage" "ezimage.el" (0 0 0 0))
+;;; Generated autoloads from ezimage.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ezimage" '("ezimage-")))
+
;;;***
-;;;### (autoloads nil "f90" "progmodes/f90.el" (22388 6386 142283
-;;;;;; 516000))
+;;;### (autoloads nil "f90" "progmodes/f90.el" (0 0 0 0))
;;; Generated autoloads from progmodes/f90.el
(autoload 'f90-mode "f90" "\
@@ -10308,10 +11933,11 @@ with no args, if that value is non-nil.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "f90" '("f90-")))
+
;;;***
-;;;### (autoloads nil "face-remap" "face-remap.el" (22388 5703 600571
-;;;;;; 211000))
+;;;### (autoloads nil "face-remap" "face-remap.el" (0 0 0 0))
;;; Generated autoloads from face-remap.el
(autoload 'face-remap-add-relative "face-remap" "\
@@ -10468,10 +12094,11 @@ Besides the choice of face, it is the same as `buffer-face-mode'.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "face-remap" '("buffer-face-mode-" "text-scale-m" "face-" "internal-lisp-face-attributes")))
+
;;;***
-;;;### (autoloads nil "feedmail" "mail/feedmail.el" (22388 6375 510178
-;;;;;; 957000))
+;;;### (autoloads nil "feedmail" "mail/feedmail.el" (0 0 0 0))
;;; Generated autoloads from mail/feedmail.el
(push (purecopy '(feedmail 11)) package--builtin-versions)
@@ -10523,9 +12150,11 @@ you can set `feedmail-queue-reminder-alist' to nil.
\(fn &optional WHAT-EVENT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "feedmail" '("feedmail-")))
+
;;;***
-;;;### (autoloads nil "ffap" "ffap.el" (22388 5703 738572 568000))
+;;;### (autoloads nil "ffap" "ffap.el" (0 0 0 0))
;;; Generated autoloads from ffap.el
(autoload 'ffap-next "ffap" "\
@@ -10586,10 +12215,11 @@ Evaluate the forms in variable `ffap-bindings'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ffap" '("find-file-literally-at-point" "ffap-" "dired-at-point-")))
+
;;;***
-;;;### (autoloads nil "filecache" "filecache.el" (22388 5703 754572
-;;;;;; 726000))
+;;;### (autoloads nil "filecache" "filecache.el" (0 0 0 0))
;;; Generated autoloads from filecache.el
(autoload 'file-cache-add-directory "filecache" "\
@@ -10644,10 +12274,11 @@ the name is considered already unique; only the second substitution
\(fn ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "filecache" '("file-cache-")))
+
;;;***
-;;;### (autoloads nil "filenotify" "filenotify.el" (22388 5703 780572
-;;;;;; 982000))
+;;;### (autoloads nil "filenotify" "filenotify.el" (0 0 0 0))
;;; Generated autoloads from filenotify.el
(autoload 'file-notify-handle-event "filenotify" "\
@@ -10660,9 +12291,11 @@ Otherwise, signal a `file-notify-error'.
\(fn EVENT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "filenotify" '("file-notify-")))
+
;;;***
-;;;### (autoloads nil "files-x" "files-x.el" (22388 5703 781572 992000))
+;;;### (autoloads nil "files-x" "files-x.el" (0 0 0 0))
;;; Generated autoloads from files-x.el
(autoload 'add-file-local-variable "files-x" "\
@@ -10725,10 +12358,11 @@ Copy directory-local variables to the -*- line.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "files-x" '("modify-" "read-file-local-variable")))
+
;;;***
-;;;### (autoloads nil "filesets" "filesets.el" (22388 5704 35575
-;;;;;; 489000))
+;;;### (autoloads nil "filesets" "filesets.el" (0 0 0 0))
;;; Generated autoloads from filesets.el
(autoload 'filesets-init "filesets" "\
@@ -10737,10 +12371,11 @@ Set up hooks, load the cache file -- if existing -- and build the menu.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "filesets" '("filesets-")))
+
;;;***
-;;;### (autoloads nil "find-cmd" "find-cmd.el" (22388 5704 81575
-;;;;;; 942000))
+;;;### (autoloads nil "find-cmd" "find-cmd.el" (0 0 0 0))
;;; Generated autoloads from find-cmd.el
(push (purecopy '(find-cmd 0 6)) package--builtin-versions)
@@ -10758,10 +12393,11 @@ result is a string that should be ready for the command line.
\(fn &rest SUBFINDS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "find-cmd" '("find-")))
+
;;;***
-;;;### (autoloads nil "find-dired" "find-dired.el" (22388 5704 84575
-;;;;;; 971000))
+;;;### (autoloads nil "find-dired" "find-dired.el" (0 0 0 0))
;;; Generated autoloads from find-dired.el
(autoload 'find-dired "find-dired" "\
@@ -10799,10 +12435,11 @@ use in place of \"-ls\" as the final argument.
\(fn DIR REGEXP)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "find-dired" '("find-" "lookfor-dired" "kill-find")))
+
;;;***
-;;;### (autoloads nil "find-file" "find-file.el" (22388 5704 85575
-;;;;;; 981000))
+;;;### (autoloads nil "find-file" "find-file.el" (0 0 0 0))
;;; Generated autoloads from find-file.el
(defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) (match-end 2)))) "\
@@ -10890,17 +12527,22 @@ Visit the file you click on in another window.
\(fn EVENT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "find-file" '("ff-" "modula2-other-file-alist" "cc-")))
+
;;;***
-;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (22420
-;;;;;; 38537 268424 423000))
+;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from emacs-lisp/find-func.el
(autoload 'find-library "find-func" "\
Find the Emacs Lisp source of LIBRARY.
-LIBRARY should be a string (the name of the library).
+LIBRARY should be a string (the name of the library). If the
+optional OTHER-WINDOW argument (i.e., the command argument) is
+specified, pop to a different window before displaying the
+buffer.
-\(fn LIBRARY)" t nil)
+\(fn LIBRARY &optional OTHER-WINDOW)" t nil)
(autoload 'find-function-search-for-symbol "find-func" "\
Search for SYMBOL's definition of type TYPE in LIBRARY.
@@ -11061,10 +12703,11 @@ Define some key bindings for the find-function family of functions.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "find-func" '("find-")))
+
;;;***
-;;;### (autoloads nil "find-lisp" "find-lisp.el" (22388 5704 89576
-;;;;;; 20000))
+;;;### (autoloads nil "find-lisp" "find-lisp.el" (0 0 0 0))
;;; Generated autoloads from find-lisp.el
(autoload 'find-lisp-find-dired "find-lisp" "\
@@ -11082,9 +12725,11 @@ Change the filter on a `find-lisp-find-dired' buffer to REGEXP.
\(fn REGEXP)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "find-lisp" '("find-lisp-")))
+
;;;***
-;;;### (autoloads nil "finder" "finder.el" (22388 5704 124576 364000))
+;;;### (autoloads nil "finder" "finder.el" (0 0 0 0))
;;; Generated autoloads from finder.el
(push (purecopy '(finder 1 0)) package--builtin-versions)
@@ -11104,10 +12749,11 @@ Find packages matching a given keyword.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "finder" '("finder-" "generated-finder-keywords-file")))
+
;;;***
-;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (22388 5704 128576
-;;;;;; 404000))
+;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (0 0 0 0))
;;; Generated autoloads from flow-ctrl.el
(autoload 'enable-flow-control "flow-ctrl" "\
@@ -11126,11 +12772,12 @@ to get the effect of a C-q.
\(fn &rest LOSING-TERMINAL-TYPES)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "flow-ctrl" '("flow-control-c-")))
+
;;;***
-;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (22388 6371
-;;;;;; 667141 163000))
-;;; Generated autoloads from gnus/flow-fill.el
+;;;### (autoloads nil "flow-fill" "mail/flow-fill.el" (0 0 0 0))
+;;; Generated autoloads from mail/flow-fill.el
(autoload 'fill-flowed-encode "flow-fill" "\
@@ -11142,10 +12789,11 @@ to get the effect of a C-q.
\(fn &optional BUFFER DELETE-SPACE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "flow-fill" '("fill-flowed-")))
+
;;;***
-;;;### (autoloads nil "flymake" "progmodes/flymake.el" (22388 6386
-;;;;;; 215284 234000))
+;;;### (autoloads nil "flymake" "progmodes/flymake.el" (0 0 0 0))
;;; Generated autoloads from progmodes/flymake.el
(push (purecopy '(flymake 0 3)) package--builtin-versions)
@@ -11173,10 +12821,11 @@ Turn flymake mode off.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "flymake" '("flymake-")))
+
;;;***
-;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (22388 6389
-;;;;;; 329314 858000))
+;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (0 0 0 0))
;;; Generated autoloads from textmodes/flyspell.el
(autoload 'flyspell-prog-mode "flyspell" "\
@@ -11244,15 +12893,19 @@ Flyspell whole buffer.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "flyspell" '("flyspell-" "mail-mode-flyspell-verify" "make-flyspell-overlay" "sgml-mode-flyspell-verify" "tex")))
+
;;;***
-;;;### (autoloads nil "foldout" "foldout.el" (22388 5704 128576 404000))
+;;;### (autoloads nil "foldout" "foldout.el" (0 0 0 0))
;;; Generated autoloads from foldout.el
(push (purecopy '(foldout 1 10)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "foldout" '("foldout-")))
+
;;;***
-;;;### (autoloads nil "follow" "follow.el" (22388 5704 168576 797000))
+;;;### (autoloads nil "follow" "follow.el" (0 0 0 0))
;;; Generated autoloads from follow.el
(autoload 'turn-on-follow-mode "follow" "\
@@ -11372,10 +13025,19 @@ selected if the original window is the first one in the frame.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "follow" '("follow-")))
+
;;;***
-;;;### (autoloads nil "footnote" "mail/footnote.el" (22388 6375 555179
-;;;;;; 400000))
+;;;### (autoloads nil "fontset" "international/fontset.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from international/fontset.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "fontset" '("charset-script-alist" "create-" "set" "standard-fontset-spec" "fontset-" "generate-fontset-menu" "xlfd-" "x-")))
+
+;;;***
+
+;;;### (autoloads nil "footnote" "mail/footnote.el" (0 0 0 0))
;;; Generated autoloads from mail/footnote.el
(push (purecopy '(footnote 0 19)) package--builtin-versions)
@@ -11392,9 +13054,18 @@ play around with the following keys:
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "footnote" '("footnote-" "Footnote-")))
+
;;;***
-;;;### (autoloads nil "forms" "forms.el" (22388 5704 290577 997000))
+;;;### (autoloads nil "format-spec" "format-spec.el" (0 0 0 0))
+;;; Generated autoloads from format-spec.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "format-spec" '("format-spec")))
+
+;;;***
+
+;;;### (autoloads nil "forms" "forms.el" (0 0 0 0))
;;; Generated autoloads from forms.el
(autoload 'forms-mode "forms" "\
@@ -11428,10 +13099,11 @@ Visit a file in Forms mode in other window.
\(fn FN)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "forms" '("forms-")))
+
;;;***
-;;;### (autoloads nil "fortran" "progmodes/fortran.el" (22388 6386
-;;;;;; 297285 40000))
+;;;### (autoloads nil "fortran" "progmodes/fortran.el" (0 0 0 0))
;;; Generated autoloads from progmodes/fortran.el
(autoload 'fortran-mode "fortran" "\
@@ -11506,10 +13178,11 @@ with no args, if that value is non-nil.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "fortran" '("fortran-")))
+
;;;***
-;;;### (autoloads nil "fortune" "play/fortune.el" (22388 6383 331255
-;;;;;; 871000))
+;;;### (autoloads nil "fortune" "play/fortune.el" (0 0 0 0))
;;; Generated autoloads from play/fortune.el
(autoload 'fortune-add-fortune "fortune" "\
@@ -11546,6 +13219,13 @@ and choose the directory as the fortune-file.
\(fn &optional FILE)" t nil)
+(autoload 'fortune-message "fortune" "\
+Display a fortune cookie to the mini-buffer.
+If called with a prefix, it has the same behavior as `fortune'.
+Optional FILE is a fortune file from which a cookie will be selected.
+
+\(fn &optional FILE)" t nil)
+
(autoload 'fortune "fortune" "\
Display a fortune cookie.
If called with a prefix asks for the FILE to choose the fortune from,
@@ -11555,10 +13235,11 @@ and choose the directory as the fortune-file.
\(fn &optional FILE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "fortune" '("fortune-")))
+
;;;***
-;;;### (autoloads nil "frameset" "frameset.el" (22388 5704 371578
-;;;;;; 794000))
+;;;### (autoloads nil "frameset" "frameset.el" (0 0 0 0))
;;; Generated autoloads from frameset.el
(defvar frameset-session-filter-alist '((name . :never) (left . frameset-filter-iconified) (minibuffer . frameset-filter-minibuffer) (top . frameset-filter-iconified)) "\
@@ -11742,17 +13423,33 @@ Interactively, reads the register using `register-read-with-preview'.
\(fn REGISTER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "frameset" '("frameset-")))
+
+;;;***
+
+;;;### (autoloads nil "fringe" "fringe.el" (0 0 0 0))
+;;; Generated autoloads from fringe.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "fringe" '("fringe-" "set-fringe-")))
+
;;;***
-;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (22388 6383 335255
-;;;;;; 911000))
+;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (0 0 0 0))
;;; Generated autoloads from play/gamegrid.el
(push (purecopy '(gamegrid 1 2)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gamegrid" '("gamegrid-")))
+
+;;;***
+
+;;;### (autoloads nil "gametree" "play/gametree.el" (0 0 0 0))
+;;; Generated autoloads from play/gametree.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gametree" '("gametree-")))
+
;;;***
-;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (22388 6386
-;;;;;; 402286 73000))
+;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (0 0 0 0))
;;; Generated autoloads from progmodes/gdb-mi.el
(defvar gdb-enable-debug nil "\
@@ -11828,10 +13525,19 @@ detailed description of this mode.
\(fn COMMAND-LINE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gdb-mi" '("gdb" "gud-" "def-gdb-" "breakpoint-" "nil")))
+
+;;;***
+
+;;;### (autoloads nil "generator" "emacs-lisp/generator.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from emacs-lisp/generator.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "generator" '("cps-" "iter-")))
+
;;;***
-;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (22388 6369
-;;;;;; 423119 95000))
+;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/generic.el
(defvar generic-mode-list nil "\
@@ -11909,10 +13615,18 @@ regular expression that can be used as an element of
(make-obsolete 'generic-make-keywords-list 'regexp-opt '"24.4")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "generic" '("generic-")))
+
;;;***
-;;;### (autoloads nil "glasses" "progmodes/glasses.el" (22388 6386
-;;;;;; 507287 105000))
+;;;### (autoloads nil "generic-x" "generic-x.el" (0 0 0 0))
+;;; Generated autoloads from generic-x.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "generic-x" '("generic-" "default-generic-mode")))
+
+;;;***
+
+;;;### (autoloads nil "glasses" "progmodes/glasses.el" (0 0 0 0))
;;; Generated autoloads from progmodes/glasses.el
(autoload 'glasses-mode "glasses" "\
@@ -11924,10 +13638,11 @@ add virtual separators (like underscores) at places they belong to.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "glasses" '("glasses-")))
+
;;;***
-;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (22388 6371
-;;;;;; 667141 163000))
+;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (0 0 0 0))
;;; Generated autoloads from gnus/gmm-utils.el
(autoload 'gmm-regexp-concat "gmm-utils" "\
@@ -11979,9 +13694,11 @@ DEFAULT-MAP specifies the default key map for ICON-LIST.
\(fn ICON-LIST ZAP-LIST DEFAULT-MAP)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gmm-utils" '("gmm-" "defun-gmm")))
+
;;;***
-;;;### (autoloads nil "gnus" "gnus/gnus.el" (22388 6373 163155 876000))
+;;;### (autoloads nil "gnus" "gnus/gnus.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus.el
(push (purecopy '(gnus 5 13)) package--builtin-versions)
(when (fboundp 'custom-autoload)
@@ -12029,10 +13746,11 @@ prompt the user for the name of an NNTP server to use.
\(fn &optional ARG DONT-CONNECT SLAVE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (22388 6371
-;;;;;; 716141 645000))
+;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-agent.el
(autoload 'gnus-unplugged "gnus-agent" "\
@@ -12120,10 +13838,11 @@ CLEAN is obsolete and ignored.
\(fn &optional CLEAN REREAD)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-agent" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (22388 6371 843142
-;;;;;; 894000))
+;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-art.el
(autoload 'gnus-article-prepare-display "gnus-art" "\
@@ -12131,10 +13850,26 @@ Make the current buffer look like a nice article.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-art" '("gnus-" "article-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-async" "gnus/gnus-async.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-async.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-async" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-bcklg" "gnus/gnus-bcklg.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-bcklg.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-bcklg" '("gnus-backlog-")))
+
;;;***
-;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (22388
-;;;;;; 6371 929143 740000))
+;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from gnus/gnus-bookmark.el
(autoload 'gnus-bookmark-set "gnus-bookmark" "\
@@ -12155,10 +13890,11 @@ deletion, or > if it is flagged for displaying.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-bookmark" '("gnus-bookmark-")))
+
;;;***
-;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (22388 6371
-;;;;;; 944143 887000))
+;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-cache.el
(autoload 'gnus-jog-cache "gnus-cache" "\
@@ -12197,10 +13933,32 @@ supported.
\(fn GROUP)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-cache" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-cite" "gnus/gnus-cite.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-cite.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-cite" '("turn-o" "gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-cloud" "gnus/gnus-cloud.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-cloud.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-cloud" '("gnus-cloud-")))
+
;;;***
-;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (22388 6372
-;;;;;; 21144 645000))
+;;;### (autoloads nil "gnus-cus" "gnus/gnus-cus.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-cus.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-cus" '("gnus-" "category-fields")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-delay.el
(autoload 'gnus-delay-article "gnus-delay" "\
@@ -12233,10 +13991,18 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil.
\(fn &optional NO-KEYMAP NO-CHECK)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-delay" '("gnus-delay-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-demon" "gnus/gnus-demon.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-demon.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-demon" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (22388 6372
-;;;;;; 22144 655000))
+;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-diary.el
(autoload 'gnus-user-format-function-d "gnus-diary" "\
@@ -12249,10 +14015,11 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil.
\(fn HEADER)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-diary" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (22388 6372
-;;;;;; 22144 655000))
+;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-dired.el
(autoload 'turn-on-gnus-dired-mode "gnus-dired" "\
@@ -12260,10 +14027,11 @@ Convenience method to turn on gnus-dired-mode.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-dired" '("gnus-dired-")))
+
;;;***
-;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (22388 6372
-;;;;;; 23144 664000))
+;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-draft.el
(autoload 'gnus-draft-reminder "gnus-draft" "\
@@ -12271,10 +14039,25 @@ Reminder user if there are unsent drafts.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-draft" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-dup" "gnus/gnus-dup.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-dup.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-dup" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-eform" "gnus/gnus-eform.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-eform.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-eform" '("gnus-edit-form")))
+
;;;***
-;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (22388 6372 81145
-;;;;;; 235000))
+;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-fun.el
(autoload 'gnus--random-face-with-type "gnus-fun" "\
@@ -12337,10 +14120,12 @@ Insert a random Face header from `gnus-face-directory'.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-fun" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (22388
-;;;;;; 6372 82145 245000))
+;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from gnus/gnus-gravatar.el
(autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\
@@ -12355,10 +14140,11 @@ If gravatars are already displayed, remove them.
\(fn &optional FORCE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-gravatar" '("gnus-gravatar-")))
+
;;;***
-;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (22388 6372
-;;;;;; 124145 658000))
+;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-group.el
(autoload 'gnus-fetch-group "gnus-group" "\
@@ -12373,10 +14159,11 @@ Pop up a frame and enter GROUP.
\(fn GROUP)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-group" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (22388 6372
-;;;;;; 166146 71000))
+;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-html.el
(autoload 'gnus-article-html "gnus-html" "\
@@ -12389,10 +14176,26 @@ Pop up a frame and enter GROUP.
\(fn SUMMARY)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-html" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (22388 6372
-;;;;;; 241146 808000))
+;;;### (autoloads nil "gnus-icalendar" "gnus/gnus-icalendar.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from gnus/gnus-icalendar.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-icalendar" '("gnus-icalendar")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-int" "gnus/gnus-int.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-int.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-int" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-kill.el
(defalias 'gnus-batch-kill 'gnus-batch-score)
@@ -12403,10 +14206,25 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-kill" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (22388 6372 250146
-;;;;;; 897000))
+;;;### (autoloads nil "gnus-logic" "gnus/gnus-logic.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-logic.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-logic" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-mh" "gnus/gnus-mh.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-mh.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-mh" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-ml.el
(autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\
@@ -12427,10 +14245,11 @@ Minor mode for providing mailing-list commands.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-ml" '("gnus-mailing-list-")))
+
;;;***
-;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (22388 6372
-;;;;;; 251146 907000))
+;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-mlspl.el
(autoload 'gnus-group-split-setup "gnus-mlspl" "\
@@ -12528,10 +14347,11 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
\(fn &optional GROUPS NO-CROSSPOST CATCH-ALL)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-mlspl" '("gnus-group-split-")))
+
;;;***
-;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (22388 6372 285147
-;;;;;; 241000))
+;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-msg.el
(autoload 'gnus-msg-mail "gnus-msg" "\
@@ -12555,10 +14375,12 @@ Like `message-reply'.
(define-mail-user-agent 'gnus-user-agent 'gnus-msg-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-msg" '("gnus-")))
+
;;;***
;;;### (autoloads nil "gnus-notifications" "gnus/gnus-notifications.el"
-;;;;;; (22388 6372 289147 280000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from gnus/gnus-notifications.el
(autoload 'gnus-notifications "gnus-notifications" "\
@@ -12572,10 +14394,11 @@ This is typically a function to add in
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-notifications" '("gnus-notifications-")))
+
;;;***
-;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (22388 6372
-;;;;;; 309147 477000))
+;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-picon.el
(autoload 'gnus-treat-from-picon "gnus-picon" "\
@@ -12596,10 +14419,11 @@ If picons are already displayed, remove them.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-picon" '("gnus-picon-")))
+
;;;***
-;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (22388 6372
-;;;;;; 328147 664000))
+;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-range.el
(autoload 'gnus-sorted-difference "gnus-range" "\
@@ -12664,10 +14488,12 @@ Add NUM into sorted LIST by side effect.
\(fn LIST NUM)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-range" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (22388
-;;;;;; 6372 330147 684000))
+;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from gnus/gnus-registry.el
(autoload 'gnus-registry-initialize "gnus-registry" "\
@@ -12680,10 +14506,33 @@ Install the registry hooks.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-registry" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-rfc1843" "gnus/gnus-rfc1843.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from gnus/gnus-rfc1843.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-rfc1843" '("rfc1843-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-salt" "gnus/gnus-salt.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-salt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-salt" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (22388 6372
-;;;;;; 437148 736000))
+;;;### (autoloads nil "gnus-score" "gnus/gnus-score.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-score.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-score" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-sieve.el
(autoload 'gnus-sieve-update "gnus-sieve" "\
@@ -12708,10 +14557,11 @@ See the documentation for these variables and functions for details.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-sieve" '("gnus-sieve-")))
+
;;;***
-;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (22388 6372
-;;;;;; 457148 932000))
+;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-spec.el
(autoload 'gnus-update-format "gnus-spec" "\
@@ -12719,10 +14569,18 @@ Update the format specification near point.
\(fn VAR)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-spec" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (22388 6372
-;;;;;; 548149 827000))
+;;;### (autoloads nil "gnus-srvr" "gnus/gnus-srvr.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-srvr.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-srvr" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-start.el
(autoload 'gnus-declare-backend "gnus-start" "\
@@ -12730,10 +14588,11 @@ Declare back end NAME with ABILITIES as a Gnus back end.
\(fn NAME &rest ABILITIES)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-start" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (22388 6372 777152
-;;;;;; 80000))
+;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-sum.el
(autoload 'gnus-summary-bookmark-jump "gnus-sum" "\
@@ -12742,26 +14601,46 @@ BOOKMARK is a bookmark name or a bookmark record.
\(fn BOOKMARK)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-sum" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (22388 6372
-;;;;;; 949153 772000))
-;;; Generated autoloads from gnus/gnus-sync.el
+;;;### (autoloads nil "gnus-topic" "gnus/gnus-topic.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-topic.el
-(autoload 'gnus-sync-initialize "gnus-sync" "\
-Initialize the Gnus sync facility.
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-topic" '("gnus-")))
-\(fn)" t nil)
+;;;***
+
+;;;### (autoloads nil "gnus-undo" "gnus/gnus-undo.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-undo.el
-(autoload 'gnus-sync-install-hooks "gnus-sync" "\
-Install the sync hooks.
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-undo" '("gnus-")))
-\(fn)" t nil)
+;;;***
+
+;;;### (autoloads nil "gnus-util" "gnus/gnus-util.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-util" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-uu" "gnus/gnus-uu.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-uu.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-uu" '("gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "gnus-vm" "gnus/gnus-vm.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gnus-vm.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-vm" '("gnus-")))
;;;***
-;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (22388 6373 115155
-;;;;;; 403000))
+;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (0 0 0 0))
;;; Generated autoloads from gnus/gnus-win.el
(autoload 'gnus-add-configuration "gnus-win" "\
@@ -12769,10 +14648,11 @@ Add the window configuration CONF to `gnus-buffer-configuration'.
\(fn CONF)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnus-win" '("gnus-")))
+
;;;***
-;;;### (autoloads nil "gnutls" "net/gnutls.el" (22388 6377 479198
-;;;;;; 321000))
+;;;### (autoloads nil "gnutls" "net/gnutls.el" (0 0 0 0))
;;; Generated autoloads from net/gnutls.el
(defvar gnutls-min-prime-bits 256 "\
@@ -12786,10 +14666,11 @@ A value of nil says to use the default GnuTLS value.")
(custom-autoload 'gnutls-min-prime-bits "gnutls" t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gnutls" '("gnutls-" "open-gnutls-stream")))
+
;;;***
-;;;### (autoloads nil "gomoku" "play/gomoku.el" (22388 6383 373256
-;;;;;; 284000))
+;;;### (autoloads nil "gomoku" "play/gomoku.el" (0 0 0 0))
;;; Generated autoloads from play/gomoku.el
(autoload 'gomoku "gomoku" "\
@@ -12813,10 +14694,11 @@ Use \\[describe-mode] for more info.
\(fn &optional N M)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gomoku" '("gomoku-")))
+
;;;***
-;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (22388 6377
-;;;;;; 479198 321000))
+;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (0 0 0 0))
;;; Generated autoloads from net/goto-addr.el
(define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1")
@@ -12855,11 +14737,12 @@ Like `goto-address-mode', but only for comments and strings.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "goto-addr" '("goto-address-")))
+
;;;***
-;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (22388 6373 208156
-;;;;;; 318000))
-;;; Generated autoloads from gnus/gravatar.el
+;;;### (autoloads nil "gravatar" "image/gravatar.el" (0 0 0 0))
+;;; Generated autoloads from image/gravatar.el
(autoload 'gravatar-retrieve "gravatar" "\
Retrieve MAIL-ADDRESS gravatar and call CB on retrieval.
@@ -12872,10 +14755,11 @@ Retrieve MAIL-ADDRESS gravatar and returns it.
\(fn MAIL-ADDRESS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gravatar" '("gravatar-")))
+
;;;***
-;;;### (autoloads nil "grep" "progmodes/grep.el" (22388 6386 514287
-;;;;;; 174000))
+;;;### (autoloads nil "grep" "progmodes/grep.el" (0 0 0 0))
;;; Generated autoloads from progmodes/grep.el
(defvar grep-window-height nil "\
@@ -13040,9 +14924,11 @@ file name to `*.gz', and sets `grep-highlight-matches' to `always'.
(defalias 'rzgrep 'zrgrep)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "grep" '("rgrep-default-command" "grep-" "kill-grep")))
+
;;;***
-;;;### (autoloads nil "gs" "gs.el" (22388 5704 415579 226000))
+;;;### (autoloads nil "gs" "gs.el" (0 0 0 0))
;;; Generated autoloads from gs.el
(autoload 'gs-load-image "gs" "\
@@ -13053,10 +14939,18 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful.
\(fn FRAME SPEC IMG-WIDTH IMG-HEIGHT WINDOW-AND-PIXMAP-ID PIXEL-COLORS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gs" '("gs-")))
+
+;;;***
+
+;;;### (autoloads nil "gssapi" "gnus/gssapi.el" (0 0 0 0))
+;;; Generated autoloads from gnus/gssapi.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gssapi" '("open-gssapi-stream" "gssapi-program")))
+
;;;***
-;;;### (autoloads nil "gud" "progmodes/gud.el" (22388 6386 606288
-;;;;;; 79000))
+;;;### (autoloads nil "gud" "progmodes/gud.el" (0 0 0 0))
;;; Generated autoloads from progmodes/gud.el
(autoload 'gud-gdb "gud" "\
@@ -13150,10 +15044,11 @@ it if ARG is omitted or nil.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gud" '("gdb-" "gud-")))
+
;;;***
-;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (22388 6369 428119
-;;;;;; 144000))
+;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/gv.el
(autoload 'gv-get "gv" "\
@@ -13253,10 +15148,11 @@ binding mode.
\(fn PLACE)" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "gv" '("gv-")))
+
;;;***
-;;;### (autoloads nil "handwrite" "play/handwrite.el" (22388 6383
-;;;;;; 391256 461000))
+;;;### (autoloads nil "handwrite" "play/handwrite.el" (0 0 0 0))
;;; Generated autoloads from play/handwrite.el
(autoload 'handwrite "handwrite" "\
@@ -13271,10 +15167,19 @@ Variables: `handwrite-linespace' (default 12)
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "handwrite" '("handwrite-" "menu-bar-handwrite-map")))
+
;;;***
-;;;### (autoloads nil "hanoi" "play/hanoi.el" (22388 6383 415256
-;;;;;; 698000))
+;;;### (autoloads nil "hanja-util" "language/hanja-util.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from language/hanja-util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hanja-util" '("han")))
+
+;;;***
+
+;;;### (autoloads nil "hanoi" "play/hanoi.el" (0 0 0 0))
;;; Generated autoloads from play/hanoi.el
(autoload 'hanoi "hanoi" "\
@@ -13299,10 +15204,11 @@ to be updated.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hanoi" '("hanoi-")))
+
;;;***
-;;;### (autoloads nil "hashcash" "mail/hashcash.el" (22388 6375 557179
-;;;;;; 420000))
+;;;### (autoloads nil "hashcash" "mail/hashcash.el" (0 0 0 0))
;;; Generated autoloads from mail/hashcash.el
(autoload 'hashcash-insert-payment "hashcash" "\
@@ -13342,10 +15248,11 @@ Prefix arg sets default accept amount temporarily.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hashcash" '("hashcash-")))
+
;;;***
-;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (22388 5704 419579
-;;;;;; 265000))
+;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (0 0 0 0))
;;; Generated autoloads from help-at-pt.el
(autoload 'help-at-pt-string "help-at-pt" "\
@@ -13470,10 +15377,11 @@ different regions. With numeric argument ARG, behaves like
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "help-at-pt" '("scan-buf-move-hook" "help-at-pt-")))
+
;;;***
-;;;### (autoloads nil "help-fns" "help-fns.el" (22420 38537 275424
-;;;;;; 491000))
+;;;### (autoloads nil "help-fns" "help-fns.el" (0 0 0 0))
;;; Generated autoloads from help-fns.el
(autoload 'describe-function "help-fns" "\
@@ -13558,10 +15466,11 @@ Produce a texinfo buffer with sorted doc-strings from the DOC file.
\(fn FILE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "help-fns" '("help-" "describe-")))
+
;;;***
-;;;### (autoloads nil "help-macro" "help-macro.el" (22388 5704 462579
-;;;;;; 689000))
+;;;### (autoloads nil "help-macro" "help-macro.el" (0 0 0 0))
;;; Generated autoloads from help-macro.el
(defvar three-step-help nil "\
@@ -13573,10 +15482,11 @@ gives the window that lists the options.")
(custom-autoload 'three-step-help "help-macro" t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "help-macro" '("make-help-screen")))
+
;;;***
-;;;### (autoloads nil "help-mode" "help-mode.el" (22388 5704 464579
-;;;;;; 709000))
+;;;### (autoloads nil "help-mode" "help-mode.el" (0 0 0 0))
;;; Generated autoloads from help-mode.el
(autoload 'help-mode "help-mode" "\
@@ -13675,10 +15585,11 @@ BOOKMARK is a bookmark name or a bookmark record.
\(fn BOOKMARK)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "help-mode" '("help-" "describe-symbol-backends")))
+
;;;***
-;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (22388 6369
-;;;;;; 433119 193000))
+;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/helper.el
(autoload 'Helper-describe-bindings "helper" "\
@@ -13691,9 +15602,18 @@ Provide help for current mode.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "helper" '("Helper-")))
+
+;;;***
+
+;;;### (autoloads nil "hex-util" "hex-util.el" (0 0 0 0))
+;;; Generated autoloads from hex-util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hex-util" '("encode-hex-string" "decode-hex-string")))
+
;;;***
-;;;### (autoloads nil "hexl" "hexl.el" (22388 5704 524580 299000))
+;;;### (autoloads nil "hexl" "hexl.el" (0 0 0 0))
;;; Generated autoloads from hexl.el
(autoload 'hexl-mode "hexl" "\
@@ -13785,9 +15705,11 @@ This discards the buffer's undo information.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hexl" '("hexl-" "dehexlify-buffer")))
+
;;;***
-;;;### (autoloads nil "hi-lock" "hi-lock.el" (22388 5704 575580 800000))
+;;;### (autoloads nil "hi-lock" "hi-lock.el" (0 0 0 0))
;;; Generated autoloads from hi-lock.el
(autoload 'hi-lock-mode "hi-lock" "\
@@ -13953,10 +15875,11 @@ be found in variable `hi-lock-interactive-patterns'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hi-lock" '("hi-lock-" "turn-on-hi-lock-if-enabled")))
+
;;;***
-;;;### (autoloads nil "hideif" "progmodes/hideif.el" (22388 6386
-;;;;;; 684288 846000))
+;;;### (autoloads nil "hideif" "progmodes/hideif.el" (0 0 0 0))
;;; Generated autoloads from progmodes/hideif.el
(autoload 'hide-ifdef-mode "hideif" "\
@@ -14001,10 +15924,11 @@ Several variables affect how the hiding is done:
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hideif" '("hif-" "hide-ifdef" "show-ifdef" "previous-ifdef" "next-ifdef" "up-ifdef" "down-ifdef" "backward-ifdef" "forward-ifdef" "intern-safe")))
+
;;;***
-;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (22388 6386
-;;;;;; 703289 33000))
+;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (0 0 0 0))
;;; Generated autoloads from progmodes/hideshow.el
(defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\
@@ -14064,10 +15988,11 @@ Unconditionally turn off `hs-minor-mode'.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hideshow" '("hs-")))
+
;;;***
-;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (22388 5704 576580
-;;;;;; 810000))
+;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (0 0 0 0))
;;; Generated autoloads from hilit-chg.el
(autoload 'highlight-changes-mode "hilit-chg" "\
@@ -14197,10 +16122,11 @@ See `highlight-changes-mode' for more information on Highlight-Changes mode.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hilit-chg" '("highlight-" "hilit-chg-" "global-highlight-changes")))
+
;;;***
-;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (22388 5704 619581
-;;;;;; 232000))
+;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (0 0 0 0))
;;; Generated autoloads from hippie-exp.el
(push (purecopy '(hippie-exp 1 6)) package--builtin-versions)
@@ -14230,9 +16156,11 @@ argument VERBOSE non-nil makes the function verbose.
\(fn TRY-LIST &optional VERBOSE)" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hippie-exp" '("hippie-expand-" "he-" "try-")))
+
;;;***
-;;;### (autoloads nil "hl-line" "hl-line.el" (22388 5704 621581 252000))
+;;;### (autoloads nil "hl-line" "hl-line.el" (0 0 0 0))
;;; Generated autoloads from hl-line.el
(autoload 'hl-line-mode "hl-line" "\
@@ -14250,7 +16178,7 @@ non-selected window. Hl-Line mode uses the function
When `hl-line-sticky-flag' is nil, Hl-Line mode highlights the
line about point in the selected window only. In this case, it
-uses the function `hl-line-unhighlight' on `pre-command-hook' in
+uses the function `hl-line-maybe-unhighlight' in
addition to `hl-line-highlight' on `post-command-hook'.
\(fn &optional ARG)" t nil)
@@ -14272,18 +16200,33 @@ positive, and disable it otherwise. If called from Lisp, enable
the mode if ARG is omitted or nil.
If `global-hl-line-sticky-flag' is non-nil, Global Hl-Line mode
-highlights the line about the current buffer's point in all
+highlights the line about the current buffer's point in all live
windows.
-Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
-`global-hl-line-highlight' on `pre-command-hook' and `post-command-hook'.
+Global-Hl-Line mode uses the functions `global-hl-line-highlight'
+and `global-hl-line-maybe-unhighlight' on `post-command-hook'.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hl-line" '("hl-line-" "global-hl-line-")))
+
;;;***
-;;;### (autoloads nil "holidays" "calendar/holidays.el" (22388 6368
-;;;;;; 119106 271000))
+;;;### (autoloads nil "hmac-def" "net/hmac-def.el" (0 0 0 0))
+;;; Generated autoloads from net/hmac-def.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hmac-def" '("define-hmac-function")))
+
+;;;***
+
+;;;### (autoloads nil "hmac-md5" "net/hmac-md5.el" (0 0 0 0))
+;;; Generated autoloads from net/hmac-md5.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hmac-md5" '("hmac-md5" "md5-binary")))
+
+;;;***
+
+;;;### (autoloads nil "holidays" "calendar/holidays.el" (0 0 0 0))
;;; Generated autoloads from calendar/holidays.el
(defvar holiday-general-holidays (mapcar 'purecopy '((holiday-fixed 1 1 "New Year's Day") (holiday-float 1 1 3 "Martin Luther King Day") (holiday-fixed 2 2 "Groundhog Day") (holiday-fixed 2 14 "Valentine's Day") (holiday-float 2 1 3 "President's Day") (holiday-fixed 3 17 "St. Patrick's Day") (holiday-fixed 4 1 "April Fools' Day") (holiday-float 5 0 2 "Mother's Day") (holiday-float 5 1 -1 "Memorial Day") (holiday-fixed 6 14 "Flag Day") (holiday-float 6 0 3 "Father's Day") (holiday-fixed 7 4 "Independence Day") (holiday-float 9 1 1 "Labor Day") (holiday-float 10 1 2 "Columbus Day") (holiday-fixed 10 31 "Halloween") (holiday-fixed 11 11 "Veteran's Day") (holiday-float 11 4 4 "Thanksgiving"))) "\
@@ -14391,21 +16334,23 @@ The optional LABEL is used to label the buffer created.
(defalias 'holiday-list 'list-holidays)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "holidays" '("holiday-" "calendar-")))
+
;;;***
-;;;### (autoloads nil "html2text" "gnus/html2text.el" (22388 6373
-;;;;;; 233156 564000))
-;;; Generated autoloads from gnus/html2text.el
+;;;### (autoloads nil "html2text" "net/html2text.el" (0 0 0 0))
+;;; Generated autoloads from net/html2text.el
(autoload 'html2text "html2text" "\
Convert HTML to plain text in the current buffer.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "html2text" '("html2text-")))
+
;;;***
-;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (22388 5704
-;;;;;; 696581 990000))
+;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (0 0 0 0))
;;; Generated autoloads from htmlfontify.el
(push (purecopy '(htmlfontify 0 21)) package--builtin-versions)
@@ -14436,10 +16381,19 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'.
\(fn SRCDIR DSTDIR &optional F-EXT L-EXT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "htmlfontify" '("hfy-" "htmlfontify-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ibuf-ext" "ibuf-ext.el"
+;;;;;; (22425 56233 689951 413000))
+;;; Generated autoloads from ibuf-ext.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ibuf-ext" '("ibuffer-" "filename" "shell-command-" "size" "alphabetic" "major-mode" "mode" "print" "predicate" "content" "name" "derived-mode" "used-mode" "query-replace" "rename-uniquely" "revert" "replace-regexp" "view-and-eval" "eval")))
+
;;;***
-;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (22388 5704 724582
-;;;;;; 265000))
+;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (0 0 0 0))
;;; Generated autoloads from ibuf-macs.el
(autoload 'define-ibuffer-column "ibuf-macs" "\
@@ -14513,8 +16467,13 @@ operation is complete, in the form:
ACTIVE-OPSTRING is a string which will be displayed to the user in a
confirmation message, in the form:
\"Really ACTIVE-OPSTRING x buffers?\"
-COMPLEX means this function is special; see the source code of this
-macro for exactly what it does.
+COMPLEX means this function is special; if COMPLEX is nil BODY
+evaluates once for each marked buffer, MBUF, with MBUF current
+and saving the point. If COMPLEX is non-nil, BODY evaluates
+without requiring MBUF current.
+BODY define the operation; they are forms to evaluate per each
+marked buffer. BODY is evaluated with `buf' bound to the
+buffer object.
\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)" nil t)
@@ -14539,9 +16498,11 @@ bound to the current value of the filter.
(function-put 'define-ibuffer-filter 'doc-string-elt '2)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ibuf-macs" '("ibuffer-")))
+
;;;***
-;;;### (autoloads nil "ibuffer" "ibuffer.el" (22388 5704 764582 658000))
+;;;### (autoloads nil "ibuffer" "ibuffer.el" (0 0 0 0))
;;; Generated autoloads from ibuffer.el
(autoload 'ibuffer-list-buffers "ibuffer" "\
@@ -14578,10 +16539,12 @@ FORMATS is the value to use for `ibuffer-formats'.
\(fn &optional OTHER-WINDOW-P NAME QUALIFIERS NOSELECT SHRINK FILTER-GROUPS FORMATS)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ibuffer" '("ibuffer-" "filename" "process" "mark" "mod" "size" "name" "locked" "read-only")))
+
;;;***
-;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (22388
-;;;;;; 6368 158106 655000))
+;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from calendar/icalendar.el
(push (purecopy '(icalendar 0 19)) package--builtin-versions)
@@ -14632,10 +16595,11 @@ buffer `*icalendar-errors*'.
\(fn &optional DIARY-FILE DO-NOT-ASK NON-MARKING)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "icalendar" '("icalendar-")))
+
;;;***
-;;;### (autoloads nil "icomplete" "icomplete.el" (22388 5704 805583
-;;;;;; 62000))
+;;;### (autoloads nil "icomplete" "icomplete.el" (0 0 0 0))
;;; Generated autoloads from icomplete.el
(defvar icomplete-mode nil "\
@@ -14673,10 +16637,11 @@ completions:
(make-obsolete 'iswitchb-mode
"use `icomplete-mode' or `ido-mode' instead." "24.4"))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "icomplete" '("icomplete-")))
+
;;;***
-;;;### (autoloads nil "icon" "progmodes/icon.el" (22388 6386 724289
-;;;;;; 240000))
+;;;### (autoloads nil "icon" "progmodes/icon.el" (0 0 0 0))
;;; Generated autoloads from progmodes/icon.el
(autoload 'icon-mode "icon" "\
@@ -14714,10 +16679,28 @@ with no args, if that value is non-nil.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "icon" '("indent-icon-exp" "icon-" "electric-icon-brace" "end-of-icon-defun" "beginning-of-icon-defun" "mark-icon-function" "calculate-icon-indent")))
+
;;;***
-;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (22388
-;;;;;; 6386 833290 311000))
+;;;### (autoloads nil "idlw-complete-structtag" "progmodes/idlw-complete-structtag.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from progmodes/idlw-complete-structtag.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "idlw-complete-structtag" '("idlwave-")))
+
+;;;***
+
+;;;### (autoloads nil "idlw-help" "progmodes/idlw-help.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from progmodes/idlw-help.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "idlw-help" '("idlwave-")))
+
+;;;***
+
+;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from progmodes/idlw-shell.el
(autoload 'idlwave-shell "idlw-shell" "\
@@ -14740,10 +16723,19 @@ See also the variable `idlwave-shell-prompt-pattern'.
\(fn &optional ARG QUICK)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "idlw-shell" '("idlwave-")))
+
+;;;***
+
+;;;### (autoloads nil "idlw-toolbar" "progmodes/idlw-toolbar.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from progmodes/idlw-toolbar.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "idlw-toolbar" '("idlwave-toolbar-")))
+
;;;***
-;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (22388 6387
-;;;;;; 24292 190000))
+;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (0 0 0 0))
;;; Generated autoloads from progmodes/idlwave.el
(push (purecopy '(idlwave 6 1 22)) package--builtin-versions)
@@ -14870,9 +16862,11 @@ The main features of this mode are
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "idlwave" '("idlwave-")))
+
;;;***
-;;;### (autoloads nil "ido" "ido.el" (22388 5704 862583 622000))
+;;;### (autoloads nil "ido" "ido.el" (0 0 0 0))
;;; Generated autoloads from ido.el
(defvar ido-mode nil "\
@@ -15132,9 +17126,11 @@ DEF, if non-nil, is the default value.
\(fn PROMPT CHOICES &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ido" '("ido-")))
+
;;;***
-;;;### (autoloads nil "ielm" "ielm.el" (22388 5704 921584 203000))
+;;;### (autoloads nil "ielm" "ielm.el" (0 0 0 0))
;;; Generated autoloads from ielm.el
(autoload 'ielm "ielm" "\
@@ -15144,9 +17140,18 @@ See `inferior-emacs-lisp-mode' for details.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ielm" '("inferior-emacs-lisp-mode" "ielm-")))
+
+;;;***
+
+;;;### (autoloads nil "ietf-drums" "mail/ietf-drums.el" (0 0 0 0))
+;;; Generated autoloads from mail/ietf-drums.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ietf-drums" '("ietf-drums-")))
+
;;;***
-;;;### (autoloads nil "iimage" "iimage.el" (22388 5704 924584 232000))
+;;;### (autoloads nil "iimage" "iimage.el" (0 0 0 0))
;;; Generated autoloads from iimage.el
(define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
@@ -15160,9 +17165,11 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "iimage" '("iimage-" "turn-off-iimage-mode")))
+
;;;***
-;;;### (autoloads nil "image" "image.el" (22388 5705 444589 346000))
+;;;### (autoloads nil "image" "image.el" (0 0 0 0))
;;; Generated autoloads from image.el
(autoload 'image-type-from-data "image" "\
@@ -15353,10 +17360,11 @@ If Emacs is compiled without ImageMagick support, this does nothing.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "image" '("image")))
+
;;;***
-;;;### (autoloads nil "image-dired" "image-dired.el" (22388 5705
-;;;;;; 150586 455000))
+;;;### (autoloads nil "image-dired" "image-dired.el" (0 0 0 0))
;;; Generated autoloads from image-dired.el
(push (purecopy '(image-dired 0 4 11)) package--builtin-versions)
@@ -15491,10 +17499,11 @@ easy-to-use form.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "image-dired" '("image-dired-")))
+
;;;***
-;;;### (autoloads nil "image-file" "image-file.el" (22388 5705 201586
-;;;;;; 957000))
+;;;### (autoloads nil "image-file" "image-file.el" (0 0 0 0))
;;; Generated autoloads from image-file.el
(defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\
@@ -15555,16 +17564,17 @@ An image file is one whose name has an extension in
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "image-file" '("image-file-")))
+
;;;***
-;;;### (autoloads nil "image-mode" "image-mode.el" (22388 5705 201586
-;;;;;; 957000))
+;;;### (autoloads nil "image-mode" "image-mode.el" (0 0 0 0))
;;; Generated autoloads from image-mode.el
(autoload 'image-mode "image-mode" "\
Major mode for image files.
-You can use \\<image-mode-map>\\[image-toggle-display]
-to toggle between display as an image and display as text.
+You can use \\<image-mode-map>\\[image-toggle-display] or \\<image-mode-map>\\[image-toggle-hex-display]
+to toggle between display as an image and display as text or hex.
Key bindings:
\\{image-mode-map}
@@ -15583,29 +17593,30 @@ actual image.
\(fn &optional ARG)" t nil)
-(autoload 'image-mode-as-text "image-mode" "\
+(autoload 'image-mode-to-text "image-mode" "\
Set a non-image mode as major mode in combination with image minor mode.
-A non-image major mode found from `auto-mode-alist' or Fundamental mode
-displays an image file as text. `image-minor-mode' provides the key
-\\<image-mode-map>\\[image-toggle-display] to switch back to `image-mode'
-to display an image file as the actual image.
+A non-mage major mode found from `auto-mode-alist' or fundamental mode
+displays an image file as text.
-You can use `image-mode-as-text' in `auto-mode-alist' when you want
-to display an image file as text initially.
-
-See commands `image-mode' and `image-minor-mode' for more information
-on these modes.
-
-\(fn)" t nil)
+\(fn)" nil nil)
(autoload 'image-bookmark-jump "image-mode" "\
\(fn BMK)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "image-mode" '("image-")))
+
+;;;***
+
+;;;### (autoloads nil "imap" "net/imap.el" (0 0 0 0))
+;;; Generated autoloads from net/imap.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "imap" '("imap-")))
+
;;;***
-;;;### (autoloads nil "imenu" "imenu.el" (22388 5705 445589 356000))
+;;;### (autoloads nil "imenu" "imenu.el" (0 0 0 0))
;;; Generated autoloads from imenu.el
(defvar imenu-sort-function nil "\
@@ -15741,10 +17752,11 @@ for more information.
\(fn INDEX-ITEM)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "imenu" '("imenu-")))
+
;;;***
-;;;### (autoloads nil "ind-util" "language/ind-util.el" (22388 6375
-;;;;;; 345177 334000))
+;;;### (autoloads nil "ind-util" "language/ind-util.el" (0 0 0 0))
;;; Generated autoloads from language/ind-util.el
(autoload 'indian-compose-region "ind-util" "\
@@ -15772,10 +17784,11 @@ Convert old Emacs Devanagari characters to UCS.
\(fn FROM TO)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ind-util" '("indian-" "ucs-to-is")))
+
;;;***
-;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (22388 6387
-;;;;;; 122293 154000))
+;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (0 0 0 0))
;;; Generated autoloads from progmodes/inf-lisp.el
(autoload 'inferior-lisp "inf-lisp" "\
@@ -15791,12 +17804,14 @@ of `inferior-lisp-program'). Runs the hooks from
(defalias 'run-lisp 'inferior-lisp)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "inf-lisp" '("inferior-lisp-" "lisp-" "switch-to-lisp")))
+
;;;***
-;;;### (autoloads nil "info" "info.el" (22388 5705 585590 732000))
+;;;### (autoloads nil "info" "info.el" (0 0 0 0))
;;; Generated autoloads from info.el
-(defcustom Info-default-directory-list (let* ((config-dir (file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name "../info" data-directory))) (if (file-directory-p dir) dir))) configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply #'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx "info/")) suffixes))) (prune-directory-list dirs))) prefixes))) (dirs (if (member config-dir standard-info-dirs) (nconc standard-info-dirs (list config-dir)) (cons config-dir standard-info-dirs)))) (if (not (eq system-type 'windows-nt)) dirs (let* ((instdir (file-name-directory invocation-directory)) (dir1 (expand-file-name "../info/" instdir)) (dir2 (expand-file-name "../../../info/" instdir))) (cond ((file-exists-p dir1) (append dirs (list dir1))) ((file-exists-p dir2) (append dirs (list dir2))) (t dirs))))) "\
+(defcustom Info-default-directory-list (let* ((config-dir (file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name "../info" data-directory))) (if (file-directory-p dir) dir))) configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" "/usr/" "/opt/"))) (suffixes '("share/" "")) (standard-info-dirs (apply #'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx "info/")) suffixes))) (prune-directory-list dirs))) prefixes))) (dirs (if (member config-dir standard-info-dirs) (nconc standard-info-dirs (list config-dir)) (cons config-dir standard-info-dirs)))) (if (not (eq system-type 'windows-nt)) dirs (let* ((instdir (file-name-directory invocation-directory)) (dir1 (expand-file-name "../info/" instdir)) (dir2 (expand-file-name "../../../info/" instdir))) (cond ((file-exists-p dir1) (append dirs (list dir1))) ((file-exists-p dir2) (append dirs (list dir2))) (t dirs))))) "\
Default list of directories to search for Info documentation files.
They are searched in the order they are given in the list.
Therefore, the directory of Info files that come with Emacs
@@ -16003,10 +18018,11 @@ completion alternatives to currently visited manuals.
\(fn MANUAL)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "info" '("info-" "Info-")))
+
;;;***
-;;;### (autoloads nil "info-look" "info-look.el" (22388 5705 484589
-;;;;;; 739000))
+;;;### (autoloads nil "info-look" "info-look.el" (0 0 0 0))
;;; Generated autoloads from info-look.el
(autoload 'info-lookup-reset "info-look" "\
@@ -16051,10 +18067,11 @@ Perform completion on file preceding point.
\(fn &optional MODE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "info-look" '("info-")))
+
;;;***
-;;;### (autoloads nil "info-xref" "info-xref.el" (22388 5705 523590
-;;;;;; 123000))
+;;;### (autoloads nil "info-xref" "info-xref.el" (0 0 0 0))
;;; Generated autoloads from info-xref.el
(push (purecopy '(info-xref 3)) package--builtin-versions)
@@ -16135,10 +18152,11 @@ the sources handy.
\(fn FILENAME-LIST)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "info-xref" '("info-xref-")))
+
;;;***
-;;;### (autoloads nil "informat" "informat.el" (22388 5705 689591
-;;;;;; 755000))
+;;;### (autoloads nil "informat" "informat.el" (0 0 0 0))
;;; Generated autoloads from informat.el
(autoload 'Info-tagify "informat" "\
@@ -16181,10 +18199,11 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "informat" '("Info-validate-")))
+
;;;***
-;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (22388 6369
-;;;;;; 449119 351000))
+;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/inline.el
(autoload 'define-inline "inline" "\
@@ -16196,10 +18215,11 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"
(function-put 'define-inline 'doc-string-elt '3)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "inline" '("inline-")))
+
;;;***
-;;;### (autoloads nil "inversion" "cedet/inversion.el" (22388 6368
-;;;;;; 463109 654000))
+;;;### (autoloads nil "inversion" "cedet/inversion.el" (0 0 0 0))
;;; Generated autoloads from cedet/inversion.el
(push (purecopy '(inversion 1 3)) package--builtin-versions)
@@ -16209,10 +18229,12 @@ Only checks one based on which kind of Emacs is being run.
\(fn EMACS-VER XEMACS-VER SXEMACS-VER)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "inversion" '("inversion-")))
+
;;;***
-;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (22388
-;;;;;; 6374 396168 1000))
+;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from international/isearch-x.el
(autoload 'isearch-toggle-specified-input-method "isearch-x" "\
@@ -16230,10 +18252,11 @@ Toggle input method in interactive search.
\(fn LAST-CHAR &optional COUNT)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "isearch-x" '("isearch-")))
+
;;;***
-;;;### (autoloads nil "isearchb" "isearchb.el" (22388 5705 752592
-;;;;;; 375000))
+;;;### (autoloads nil "isearchb" "isearchb.el" (0 0 0 0))
;;; Generated autoloads from isearchb.el
(push (purecopy '(isearchb 1 5)) package--builtin-versions)
@@ -16245,10 +18268,20 @@ accessed via isearchb.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "isearchb" '("isearchb")))
+
+;;;***
+
+;;;### (autoloads nil "iso-ascii" "international/iso-ascii.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from international/iso-ascii.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "iso-ascii" '("iso-ascii-")))
+
;;;***
-;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (22388
-;;;;;; 6374 400168 41000))
+;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from international/iso-cvt.el
(autoload 'iso-spanish "iso-cvt" "\
@@ -16336,18 +18369,21 @@ Add submenus to the File menu, to convert to and from various formats.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "iso-cvt" '("iso-")))
+
;;;***
;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
-;;;;;; (22388 6374 403168 70000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from international/iso-transl.el
(define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map)
(autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 'keymap)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "iso-transl" '("iso-transl-")))
+
;;;***
-;;;### (autoloads nil "ispell" "textmodes/ispell.el" (22388 6389
-;;;;;; 418315 733000))
+;;;### (autoloads nil "ispell" "textmodes/ispell.el" (0 0 0 0))
;;; Generated autoloads from textmodes/ispell.el
(put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive))))
@@ -16387,7 +18423,7 @@ Valid forms include:
(KEY REGEXP) - skip to end of REGEXP. REGEXP must be a string.
(KEY FUNCTION ARGS) - FUNCTION called with ARGS returns end of region.")
-(defvar ispell-tex-skip-alists (purecopy '((("\\\\addcontentsline" ispell-tex-arg-end 2) ("\\\\add\\(tocontents\\|vspace\\)" ispell-tex-arg-end) ("\\\\\\([aA]lph\\|arabic\\)" ispell-tex-arg-end) ("\\\\bibliographystyle" ispell-tex-arg-end) ("\\\\makebox" ispell-tex-arg-end 0) ("\\\\e?psfig" ispell-tex-arg-end) ("\\\\document\\(class\\|style\\)" . "\\\\begin[ \n]*{[ \n]*document[ \n]*}")) (("\\(figure\\|table\\)\\*?" ispell-tex-arg-end 0) ("list" ispell-tex-arg-end 2) ("program" . "\\\\end[ \n]*{[ \n]*program[ \n]*}") ("verbatim\\*?" . "\\\\end[ \n]*{[ \n]*verbatim\\*?[ \n]*}")))) "\
+(defvar ispell-tex-skip-alists (purecopy '((("\\\\addcontentsline" ispell-tex-arg-end 2) ("\\\\add\\(tocontents\\|vspace\\)" ispell-tex-arg-end) ("\\\\\\([aA]lph\\|arabic\\)" ispell-tex-arg-end) ("\\\\cref" ispell-tex-arg-end) ("\\\\bibliographystyle" ispell-tex-arg-end) ("\\\\makebox" ispell-tex-arg-end 0) ("\\\\e?psfig" ispell-tex-arg-end) ("\\\\document\\(class\\|style\\)" . "\\\\begin[ \n]*{[ \n]*document[ \n]*}")) (("\\(figure\\|table\\)\\*?" ispell-tex-arg-end 0) ("list" ispell-tex-arg-end 2) ("program" . "\\\\end[ \n]*{[ \n]*program[ \n]*}") ("verbatim\\*?" . "\\\\end[ \n]*{[ \n]*verbatim\\*?[ \n]*}")))) "\
Lists of regions to be skipped in TeX mode.
First list is used raw.
Second list has key placed inside \\begin{}.
@@ -16567,10 +18603,10 @@ The `X' command aborts sending the message so that you can edit the buffer.
To spell-check whenever a message is sent, include the appropriate lines
in your init file:
- (add-hook \\='message-send-hook \\='ispell-message) ;; GNUS 5
- (add-hook \\='news-inews-hook \\='ispell-message) ;; GNUS 4
- (add-hook \\='mail-send-hook \\='ispell-message)
- (add-hook \\='mh-before-send-letter-hook \\='ispell-message)
+ (add-hook \\='message-send-hook #\\='ispell-message) ;; GNUS 5
+ (add-hook \\='news-inews-hook #\\='ispell-message) ;; GNUS 4
+ (add-hook \\='mail-send-hook #\\='ispell-message)
+ (add-hook \\='mh-before-send-letter-hook #\\='ispell-message)
You can bind this to the key C-c i in GNUS or mail by adding to
`news-reply-mode-hook' or `mail-mode-hook' the following lambda expression:
@@ -16578,10 +18614,28 @@ You can bind this to the key C-c i in GNUS or mail by adding to
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ispell" '("ispell-" "check-ispell-version")))
+
;;;***
-;;;### (autoloads nil "japan-util" "language/japan-util.el" (22388
-;;;;;; 6375 363177 511000))
+;;;### (autoloads nil "ja-dic-cnv" "international/ja-dic-cnv.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from international/ja-dic-cnv.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ja-dic-cnv" '("skkdic-" "batch-skkdic-convert" "ja-dic-filename")))
+
+;;;***
+
+;;;### (autoloads nil "ja-dic-utl" "international/ja-dic-utl.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from international/ja-dic-utl.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ja-dic-utl" '("skkdic-")))
+
+;;;***
+
+;;;### (autoloads nil "japan-util" "language/japan-util.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from language/japan-util.el
(autoload 'setup-japanese-environment-internal "japan-util" "\
@@ -16656,10 +18710,11 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
\(fn PROMPT &optional INITIAL-INPUT)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "japan-util" '("japanese-")))
+
;;;***
-;;;### (autoloads nil "jka-compr" "jka-compr.el" (22388 5705 804592
-;;;;;; 887000))
+;;;### (autoloads nil "jka-compr" "jka-compr.el" (0 0 0 0))
;;; Generated autoloads from jka-compr.el
(defvar jka-compr-inhibit nil "\
@@ -16680,9 +18735,11 @@ by `jka-compr-installed'.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "jka-compr" '("jka-compr-" "compression-error")))
+
;;;***
-;;;### (autoloads nil "js" "progmodes/js.el" (22388 6387 166293 586000))
+;;;### (autoloads nil "js" "progmodes/js.el" (0 0 0 0))
;;; Generated autoloads from progmodes/js.el
(push (purecopy '(js 9)) package--builtin-versions)
@@ -16707,16 +18764,26 @@ locally, like so:
(dolist (name (list "node" "nodejs" "gjs" "rhino")) (add-to-list 'interpreter-mode-alist (cons (purecopy name) 'js-mode)))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "js" '("js-" "with-js")))
+
;;;***
-;;;### (autoloads nil "json" "json.el" (22388 5705 807592 916000))
+;;;### (autoloads nil "json" "json.el" (0 0 0 0))
;;; Generated autoloads from json.el
(push (purecopy '(json 1 4)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "json" '("json-")))
+
+;;;***
+
+;;;### (autoloads nil "kermit" "kermit.el" (0 0 0 0))
+;;; Generated autoloads from kermit.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "kermit" '("kermit-")))
+
;;;***
-;;;### (autoloads nil "keypad" "emulation/keypad.el" (22388 6369
-;;;;;; 920123 983000))
+;;;### (autoloads nil "keypad" "emulation/keypad.el" (0 0 0 0))
;;; Generated autoloads from emulation/keypad.el
(defvar keypad-setup nil "\
@@ -16771,8 +18838,8 @@ the decimal key on the keypad is mapped to DECIMAL instead of `.'
;;;***
-;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (22388
-;;;;;; 6374 423168 267000))
+;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from international/kinsoku.el
(autoload 'kinsoku "kinsoku" "\
@@ -16791,10 +18858,11 @@ the context of text formatting.
\(fn LINEBEG)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "kinsoku" '("kinsoku-")))
+
;;;***
-;;;### (autoloads nil "kkc" "international/kkc.el" (22388 6374 436168
-;;;;;; 395000))
+;;;### (autoloads nil "kkc" "international/kkc.el" (0 0 0 0))
;;; Generated autoloads from international/kkc.el
(defvar kkc-after-update-conversion-functions nil "\
@@ -16814,9 +18882,11 @@ and the return value is the length of the conversion.
\(fn FROM TO)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "kkc" '("kkc-")))
+
;;;***
-;;;### (autoloads nil "kmacro" "kmacro.el" (22388 5705 847593 309000))
+;;;### (autoloads nil "kmacro" "kmacro.el" (0 0 0 0))
;;; Generated autoloads from kmacro.el
(global-set-key "\C-x(" 'kmacro-start-macro)
(global-set-key "\C-x)" 'kmacro-end-macro)
@@ -16926,10 +18996,12 @@ If kbd macro currently being defined end it before activating it.
\(fn EVENT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "kmacro" '("kmacro-")))
+
;;;***
-;;;### (autoloads nil "korea-util" "language/korea-util.el" (22388
-;;;;;; 6375 366177 541000))
+;;;### (autoloads nil "korea-util" "language/korea-util.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from language/korea-util.el
(defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\
@@ -16941,10 +19013,11 @@ The kind of Korean keyboard for Korean input method.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "korea-util" '("exit-korean-environment" "korean-key-bindings" "isearch-" "quail-hangul-switch-" "toggle-korean-input-method")))
+
;;;***
-;;;### (autoloads nil "lao-util" "language/lao-util.el" (22388 6375
-;;;;;; 368177 560000))
+;;;### (autoloads nil "lao-util" "language/lao-util.el" (0 0 0 0))
;;; Generated autoloads from language/lao-util.el
(autoload 'lao-compose-string "lao-util" "\
@@ -16979,10 +19052,12 @@ Transcribe Romanized Lao string STR to Lao character string.
\(fn FROM TO)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "lao-util" '("lao-")))
+
;;;***
-;;;### (autoloads nil "latexenc" "international/latexenc.el" (22388
-;;;;;; 6374 439168 424000))
+;;;### (autoloads nil "latexenc" "international/latexenc.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from international/latexenc.el
(defvar latex-inputenc-coding-alist (purecopy '(("ansinew" . windows-1252) ("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) ("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp858" . cp858) ("cp865" . cp865) ("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) ("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) ("next" . next) ("utf8" . utf-8) ("utf8x" . utf-8))) "\
@@ -17011,10 +19086,12 @@ coding system names is determined from `latex-inputenc-coding-alist'.
\(fn ARG-LIST)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "latexenc" '("latexenc-dont-use-")))
+
;;;***
;;;### (autoloads nil "latin1-disp" "international/latin1-disp.el"
-;;;;;; (22388 6374 462168 650000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from international/latin1-disp.el
(defvar latin1-display nil "\
@@ -17053,10 +19130,12 @@ use either \\[customize] or the function `latin1-display'.")
(custom-autoload 'latin1-display-ucs-per-lynx "latin1-disp" nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "latin1-disp" '("latin1-display-")))
+
;;;***
-;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (22388
-;;;;;; 6387 218294 98000))
+;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from progmodes/ld-script.el
(autoload 'ld-script-mode "ld-script" "\
@@ -17064,10 +19143,27 @@ A major mode to edit GNU ld script files
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ld-script" '("ld-script-")))
+
;;;***
-;;;### (autoloads nil "let-alist" "emacs-lisp/let-alist.el" (22388
-;;;;;; 6369 450119 360000))
+;;;### (autoloads nil "ldap" "net/ldap.el" (0 0 0 0))
+;;; Generated autoloads from net/ldap.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ldap" '("ldap-")))
+
+;;;***
+
+;;;### (autoloads nil "legacy-gnus-agent" "gnus/legacy-gnus-agent.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from gnus/legacy-gnus-agent.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "legacy-gnus-agent" '("gnus-agent-")))
+
+;;;***
+
+;;;### (autoloads nil "let-alist" "emacs-lisp/let-alist.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from emacs-lisp/let-alist.el
(push (purecopy '(let-alist 1 0 4)) package--builtin-versions)
@@ -17104,9 +19200,11 @@ displayed in the example above.
(function-put 'let-alist 'lisp-indent-function '1)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "let-alist" '("let-alist--")))
+
;;;***
-;;;### (autoloads nil "life" "play/life.el" (22388 6383 419256 737000))
+;;;### (autoloads nil "life" "play/life.el" (0 0 0 0))
;;; Generated autoloads from play/life.el
(autoload 'life "life" "\
@@ -17117,9 +19215,11 @@ generations (this defaults to 1).
\(fn &optional SLEEPTIME)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "life" '("life-")))
+
;;;***
-;;;### (autoloads nil "linum" "linum.el" (22388 5706 317597 931000))
+;;;### (autoloads nil "linum" "linum.el" (0 0 0 0))
;;; Generated autoloads from linum.el
(push (purecopy '(linum 0 9 24)) package--builtin-versions)
@@ -17155,10 +19255,19 @@ See `linum-mode' for more information on Linum mode.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "linum" '("linum-")))
+
+;;;***
+
+;;;### (autoloads nil "lisp-mnt" "emacs-lisp/lisp-mnt.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from emacs-lisp/lisp-mnt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "lisp-mnt" '("lm-")))
+
;;;***
-;;;### (autoloads nil "loadhist" "loadhist.el" (22388 5706 319597
-;;;;;; 951000))
+;;;### (autoloads nil "loadhist" "loadhist.el" (0 0 0 0))
;;; Generated autoloads from loadhist.el
(autoload 'unload-feature "loadhist" "\
@@ -17187,9 +19296,11 @@ something strange, such as redefining an Emacs function.
\(fn FEATURE &optional FORCE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "loadhist" '("unload-" "loadhist-hook-functions" "read-feature" "feature-" "file-")))
+
;;;***
-;;;### (autoloads nil "locate" "locate.el" (22388 5706 360598 354000))
+;;;### (autoloads nil "locate" "locate.el" (0 0 0 0))
;;; Generated autoloads from locate.el
(defvar locate-ls-subdir-switches (purecopy "-al") "\
@@ -17239,10 +19350,11 @@ except that FILTER is not optional.
\(fn SEARCH-STRING FILTER &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "locate" '("locate-")))
+
;;;***
-;;;### (autoloads nil "log-edit" "vc/log-edit.el" (22388 6391 125332
-;;;;;; 520000))
+;;;### (autoloads nil "log-edit" "vc/log-edit.el" (0 0 0 0))
;;; Generated autoloads from vc/log-edit.el
(autoload 'log-edit "log-edit" "\
@@ -17271,10 +19383,11 @@ done. Otherwise, it uses the current buffer.
\(fn CALLBACK &optional SETUP PARAMS BUFFER MODE &rest IGNORE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "log-edit" '("log-edit-" "vc-log-")))
+
;;;***
-;;;### (autoloads nil "log-view" "vc/log-view.el" (22388 6391 153332
-;;;;;; 797000))
+;;;### (autoloads nil "log-view" "vc/log-view.el" (0 0 0 0))
;;; Generated autoloads from vc/log-view.el
(autoload 'log-view-mode "log-view" "\
@@ -17282,15 +19395,17 @@ Major mode for browsing CVS log output.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "log-view" '("log-view-")))
+
;;;***
-;;;### (autoloads nil "lpr" "lpr.el" (22388 5706 361598 364000))
+;;;### (autoloads nil "lpr" "lpr.el" (0 0 0 0))
;;; Generated autoloads from lpr.el
(defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\
Non-nil if running on MS-DOS or MS Windows.")
-(defvar lpr-lp-system (memq system-type '(usg-unix-v hpux irix)) "\
+(defvar lpr-lp-system (memq system-type '(usg-unix-v hpux)) "\
Non-nil if running on a system type that uses the \"lp\" command.")
(defvar printer-name (and (eq system-type 'ms-dos) "PRN") "\
@@ -17377,9 +19492,11 @@ for further customization of the printer command.
\(fn START END)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "lpr" '("lpr-" "print")))
+
;;;***
-;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (22388 5706 404598 787000))
+;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (0 0 0 0))
;;; Generated autoloads from ls-lisp.el
(defvar ls-lisp-support-shell-wildcards t "\
@@ -17388,10 +19505,11 @@ Otherwise they are treated as Emacs regexps (for backward compatibility).")
(custom-autoload 'ls-lisp-support-shell-wildcards "ls-lisp" t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ls-lisp" '("ls-lisp-")))
+
;;;***
-;;;### (autoloads nil "lunar" "calendar/lunar.el" (22388 6368 185106
-;;;;;; 920000))
+;;;### (autoloads nil "lunar" "calendar/lunar.el" (0 0 0 0))
;;; Generated autoloads from calendar/lunar.el
(autoload 'lunar-phases "lunar" "\
@@ -17401,10 +19519,11 @@ This function is suitable for execution in an init file.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "lunar" '("lunar-" "diary-lunar-phases" "calendar-lunar-phases")))
+
;;;***
-;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (22388 6387
-;;;;;; 219294 107000))
+;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (0 0 0 0))
;;; Generated autoloads from progmodes/m4-mode.el
(autoload 'm4-mode "m4-mode" "\
@@ -17412,9 +19531,11 @@ A major mode to edit m4 macro files.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "m4-mode" '("m4-")))
+
;;;***
-;;;### (autoloads nil "macros" "macros.el" (22388 5706 405598 797000))
+;;;### (autoloads nil "macros" "macros.el" (0 0 0 0))
;;; Generated autoloads from macros.el
(autoload 'name-last-kbd-macro "macros" "\
@@ -17503,8 +19624,7 @@ and then select the region of un-tablified names and use
;;;***
-;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (22388 6375
-;;;;;; 635180 186000))
+;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (0 0 0 0))
;;; Generated autoloads from mail/mail-extr.el
(autoload 'mail-extract-address-components "mail-extr" "\
@@ -17532,10 +19652,11 @@ Convert mail domain DOMAIN to the country it corresponds to.
\(fn DOMAIN)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mail-extr" '("mail-extr-")))
+
;;;***
-;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (22388 6375
-;;;;;; 637180 206000))
+;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (0 0 0 0))
;;; Generated autoloads from mail/mail-hist.el
(autoload 'mail-hist-define-keys "mail-hist" "\
@@ -17562,10 +19683,33 @@ This function normally would be called when the message is sent.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mail-hist" '("mail-hist-")))
+
+;;;***
+
+;;;### (autoloads nil "mail-parse" "mail/mail-parse.el" (0 0 0 0))
+;;; Generated autoloads from mail/mail-parse.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mail-parse" '("mail-")))
+
+;;;***
+
+;;;### (autoloads nil "mail-prsvr" "mail/mail-prsvr.el" (0 0 0 0))
+;;; Generated autoloads from mail/mail-prsvr.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mail-prsvr" '("mail-parse-")))
+
+;;;***
+
+;;;### (autoloads nil "mail-source" "gnus/mail-source.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from gnus/mail-source.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mail-source" '("mail-source")))
+
;;;***
-;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (22388 6375
-;;;;;; 637180 206000))
+;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (0 0 0 0))
;;; Generated autoloads from mail/mail-utils.el
(defvar mail-use-rfc822 nil "\
@@ -17637,10 +19781,11 @@ matches may be returned from the message body.
\(fn FIELD-NAME &optional LAST ALL LIST)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mail-utils" '("mail-")))
+
;;;***
-;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (22388 6375
-;;;;;; 638180 216000))
+;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (0 0 0 0))
;;; Generated autoloads from mail/mailabbrev.el
(defvar mail-abbrevs-mode nil "\
@@ -17688,10 +19833,11 @@ double-quotes.
\(fn NAME DEFINITION &optional FROM-MAILRC-FILE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mailabbrev" '("merge-mail-abbrevs" "mail-" "rebuild-mail-abbrevs")))
+
;;;***
-;;;### (autoloads nil "mailalias" "mail/mailalias.el" (22388 6375
-;;;;;; 639180 226000))
+;;;### (autoloads nil "mailalias" "mail/mailalias.el" (0 0 0 0))
;;; Generated autoloads from mail/mailalias.el
(defvar mail-complete-style 'angles "\
@@ -17742,10 +19888,18 @@ current header, calls `mail-complete-function' and passes prefix ARG if any.
(make-obsolete 'mail-complete 'mail-completion-at-point-function '"24.1")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mailalias" '("mail-" "build-mail-aliases")))
+
+;;;***
+
+;;;### (autoloads nil "mailcap" "net/mailcap.el" (0 0 0 0))
+;;; Generated autoloads from net/mailcap.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mailcap" '("mailcap-")))
+
;;;***
-;;;### (autoloads nil "mailclient" "mail/mailclient.el" (22388 6375
-;;;;;; 639180 226000))
+;;;### (autoloads nil "mailclient" "mail/mailclient.el" (0 0 0 0))
;;; Generated autoloads from mail/mailclient.el
(autoload 'mailclient-send-it "mailclient" "\
@@ -17755,10 +19909,26 @@ The mail client is taken to be the handler of mailto URLs.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mailclient" '("mailclient-")))
+
+;;;***
+
+;;;### (autoloads nil "mailheader" "mail/mailheader.el" (0 0 0 0))
+;;; Generated autoloads from mail/mailheader.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mailheader" '("mail-header")))
+
+;;;***
+
+;;;### (autoloads nil "mairix" "net/mairix.el" (0 0 0 0))
+;;; Generated autoloads from net/mairix.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mairix" '("mairix-")))
+
;;;***
-;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (22388
-;;;;;; 6387 242294 334000))
+;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from progmodes/make-mode.el
(autoload 'makefile-mode "make-mode" "\
@@ -17873,9 +20043,18 @@ An adapted `makefile-mode' that knows about imake.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "make-mode" '("makefile-")))
+
+;;;***
+
+;;;### (autoloads nil "makeinfo" "textmodes/makeinfo.el" (0 0 0 0))
+;;; Generated autoloads from textmodes/makeinfo.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "makeinfo" '("makeinfo-")))
+
;;;***
-;;;### (autoloads nil "makesum" "makesum.el" (22388 5706 447599 210000))
+;;;### (autoloads nil "makesum" "makesum.el" (0 0 0 0))
;;; Generated autoloads from makesum.el
(autoload 'make-command-summary "makesum" "\
@@ -17884,9 +20063,11 @@ Previous contents of that buffer are killed first.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "makesum" '("double-column")))
+
;;;***
-;;;### (autoloads nil "man" "man.el" (22388 5706 492599 652000))
+;;;### (autoloads nil "man" "man.el" (0 0 0 0))
;;; Generated autoloads from man.el
(defalias 'manual-entry 'man)
@@ -17940,16 +20121,26 @@ Default bookmark handler for Man buffers.
\(fn BOOKMARK)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "man" '("Man-" "man")))
+
+;;;***
+
+;;;### (autoloads nil "mantemp" "progmodes/mantemp.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/mantemp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mantemp" '("mantemp-")))
+
;;;***
-;;;### (autoloads nil "map" "emacs-lisp/map.el" (22388 6369 508119
-;;;;;; 931000))
+;;;### (autoloads nil "map" "emacs-lisp/map.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/map.el
-(push (purecopy '(map 1 0)) package--builtin-versions)
+(push (purecopy '(map 1 1)) package--builtin-versions)
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "map" '("map")))
;;;***
-;;;### (autoloads nil "master" "master.el" (22388 5706 537600 95000))
+;;;### (autoloads nil "master" "master.el" (0 0 0 0))
;;; Generated autoloads from master.el
(push (purecopy '(master 1 0 2)) package--builtin-versions)
@@ -17970,10 +20161,11 @@ yourself the value of `master-of' by calling `master-show-slave'.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "master" '("master-")))
+
;;;***
-;;;### (autoloads nil "mb-depth" "mb-depth.el" (22388 5706 539600
-;;;;;; 114000))
+;;;### (autoloads nil "mb-depth" "mb-depth.el" (0 0 0 0))
;;; Generated autoloads from mb-depth.el
(defvar minibuffer-depth-indicate-mode nil "\
@@ -17999,16 +20191,19 @@ recursion depth in the minibuffer prompt. This is only useful if
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mb-depth" '("minibuffer-depth-")))
+
;;;***
-;;;### (autoloads nil "md4" "md4.el" (22388 5706 539600 114000))
+;;;### (autoloads nil "md4" "md4.el" (0 0 0 0))
;;; Generated autoloads from md4.el
(push (purecopy '(md4 1 0)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "md4" '("md4")))
+
;;;***
-;;;### (autoloads nil "message" "gnus/message.el" (22388 6373 395158
-;;;;;; 158000))
+;;;### (autoloads nil "message" "gnus/message.el" (0 0 0 0))
;;; Generated autoloads from gnus/message.el
(define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook)
@@ -18171,10 +20366,12 @@ which specify the range to operate on.
\(fn START END)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "message" '("message-" "nil")))
+
;;;***
-;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (22388
-;;;;;; 6387 280294 707000))
+;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from progmodes/meta-mode.el
(push (purecopy '(meta-mode 1 0)) package--builtin-versions)
@@ -18188,10 +20385,11 @@ Major mode for editing MetaPost sources.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "meta-mode" '("meta" "font-lock-match-meta-declaration-item-and-skip-to-next")))
+
;;;***
-;;;### (autoloads nil "metamail" "mail/metamail.el" (22388 6375 640180
-;;;;;; 235000))
+;;;### (autoloads nil "metamail" "mail/metamail.el" (0 0 0 0))
;;; Generated autoloads from mail/metamail.el
(autoload 'metamail-interpret-header "metamail" "\
@@ -18232,10 +20430,32 @@ redisplayed as output is inserted.
\(fn BEG END &optional VIEWMODE BUFFER NODISPLAY)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "metamail" '("metamail-")))
+
;;;***
-;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (22388 6376 408187
-;;;;;; 788000))
+;;;### (autoloads nil "mh-acros" "mh-e/mh-acros.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-acros.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-acros" '("mh-" "with-mh-folder-updating" "def")))
+
+;;;***
+
+;;;### (autoloads nil "mh-alias" "mh-e/mh-alias.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-alias.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-alias" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-buffers" "mh-e/mh-buffers.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-buffers.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-buffers" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (0 0 0 0))
;;; Generated autoloads from mh-e/mh-comp.el
(autoload 'mh-smail "mh-comp" "\
@@ -18323,11 +20543,20 @@ delete the draft message.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-comp" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-compat" "mh-e/mh-compat.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-compat.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-compat" '("mh-")))
+
;;;***
-;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (22388 6376 513188 821000))
+;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (0 0 0 0))
;;; Generated autoloads from mh-e/mh-e.el
-(push (purecopy '(mh-e 8 6)) package--builtin-versions)
+(push (purecopy '(mh-e 8 6 -4)) package--builtin-versions)
(put 'mh-progs 'risky-local-variable t)
@@ -18340,10 +20569,11 @@ Display version information about MH-E and the MH mail handling system.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-e" '("mh-" "def")))
+
;;;***
-;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (22388 6376
-;;;;;; 631189 982000))
+;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (0 0 0 0))
;;; Generated autoloads from mh-e/mh-folder.el
(autoload 'mh-rmail "mh-folder" "\
@@ -18422,10 +20652,132 @@ perform the operation on all messages in that region.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-folder" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-funcs" "mh-e/mh-funcs.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-funcs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-funcs" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-identity" "mh-e/mh-identity.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from mh-e/mh-identity.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-identity" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-inc" "mh-e/mh-inc.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-inc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-inc" '("mh-inc-spool-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-junk" "mh-e/mh-junk.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-junk.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-junk" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-letter" "mh-e/mh-letter.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-letter.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-letter" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-limit" "mh-e/mh-limit.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-limit.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-limit" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-mime" "mh-e/mh-mime.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-mime.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-mime" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-print" "mh-e/mh-print.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-print.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-print" '("mh-p")))
+
+;;;***
+
+;;;### (autoloads nil "mh-scan" "mh-e/mh-scan.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-scan.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-scan" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-search" "mh-e/mh-search.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-search.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-search" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-seq" "mh-e/mh-seq.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-seq.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-seq" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-show" "mh-e/mh-show.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-show.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-show" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-speed" "mh-e/mh-speed.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-speed.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-speed" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-thread" "mh-e/mh-thread.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-thread.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-thread" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-tool-bar" "mh-e/mh-tool-bar.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from mh-e/mh-tool-bar.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-tool-bar" '("mh-tool-bar-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-utils" "mh-e/mh-utils.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-utils.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-utils" '("mh-")))
+
+;;;***
+
+;;;### (autoloads nil "mh-xface" "mh-e/mh-xface.el" (0 0 0 0))
+;;; Generated autoloads from mh-e/mh-xface.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mh-xface" '("mh-")))
+
;;;***
-;;;### (autoloads nil "midnight" "midnight.el" (22388 5706 628600
-;;;;;; 990000))
+;;;### (autoloads nil "midnight" "midnight.el" (0 0 0 0))
;;; Generated autoloads from midnight.el
(defvar midnight-mode nil "\
@@ -18464,10 +20816,11 @@ to its second argument TM.
\(fn SYMB TM)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "midnight" '("midnight-" "clean-buffer-list-")))
+
;;;***
-;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (22388 5706
-;;;;;; 628600 990000))
+;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (0 0 0 0))
;;; Generated autoloads from minibuf-eldef.el
(defvar minibuffer-electric-default-mode nil "\
@@ -18495,9 +20848,11 @@ is modified to remove the default indication.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "minibuf-eldef" '("minibuf")))
+
;;;***
-;;;### (autoloads nil "misc" "misc.el" (22388 5706 864603 311000))
+;;;### (autoloads nil "misc" "misc.el" (0 0 0 0))
;;; Generated autoloads from misc.el
(autoload 'butterfly "misc" "\
@@ -18523,10 +20878,11 @@ The return value is always nil.
\(fn &optional LOADED-ONLY-P BUFFER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "misc" '("list-dynamic-libraries--" "backward-to-word" "forward-to-word" "upcase-char" "mark-" "zap-up-to-char" "copy-from-above-command")))
+
;;;***
-;;;### (autoloads nil "misearch" "misearch.el" (22388 5706 866603
-;;;;;; 331000))
+;;;### (autoloads nil "misearch" "misearch.el" (0 0 0 0))
;;; Generated autoloads from misearch.el
(add-hook 'isearch-mode-hook 'multi-isearch-setup)
@@ -18612,10 +20968,12 @@ whose file names match the specified wildcard.
\(fn FILES)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "misearch" '("multi-isearch-" "misearch-unload-function")))
+
;;;***
-;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (22388
-;;;;;; 6387 283294 737000))
+;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from progmodes/mixal-mode.el
(push (purecopy '(mixal-mode 0 1)) package--builtin-versions)
@@ -18624,10 +20982,32 @@ Major mode for the mixal asm language.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mixal-mode" '("mixal-")))
+
;;;***
-;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (22388 6373
-;;;;;; 521159 397000))
+;;;### (autoloads nil "mm-archive" "gnus/mm-archive.el" (0 0 0 0))
+;;; Generated autoloads from gnus/mm-archive.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mm-archive" '("mm-")))
+
+;;;***
+
+;;;### (autoloads nil "mm-bodies" "gnus/mm-bodies.el" (0 0 0 0))
+;;; Generated autoloads from gnus/mm-bodies.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mm-bodies" '("mm-")))
+
+;;;***
+
+;;;### (autoloads nil "mm-decode" "gnus/mm-decode.el" (0 0 0 0))
+;;; Generated autoloads from gnus/mm-decode.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mm-decode" '("mm-")))
+
+;;;***
+
+;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (0 0 0 0))
;;; Generated autoloads from gnus/mm-encode.el
(autoload 'mm-default-file-encoding "mm-encode" "\
@@ -18635,10 +21015,11 @@ Return a default encoding for FILE.
\(fn FILE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mm-encode" '("mm-")))
+
;;;***
-;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (22388 6373
-;;;;;; 524159 426000))
+;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (0 0 0 0))
;;; Generated autoloads from gnus/mm-extern.el
(autoload 'mm-extern-cache-contents "mm-extern" "\
@@ -18654,10 +21035,11 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
\(fn HANDLE &optional NO-DISPLAY)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mm-extern" '("mm-extern-")))
+
;;;***
-;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (22388 6373
-;;;;;; 524159 426000))
+;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (0 0 0 0))
;;; Generated autoloads from gnus/mm-partial.el
(autoload 'mm-inline-partial "mm-partial" "\
@@ -18668,10 +21050,11 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
\(fn HANDLE &optional NO-DISPLAY)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mm-partial" '("mm-partial-find-parts")))
+
;;;***
-;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (22388 6373 526159
-;;;;;; 446000))
+;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (0 0 0 0))
;;; Generated autoloads from gnus/mm-url.el
(autoload 'mm-url-insert-file-contents "mm-url" "\
@@ -18685,10 +21068,18 @@ Insert file contents of URL using `mm-url-program'.
\(fn URL)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mm-url" '("mm-url-")))
+
+;;;***
+
+;;;### (autoloads nil "mm-util" "gnus/mm-util.el" (0 0 0 0))
+;;; Generated autoloads from gnus/mm-util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mm-util" '("mm-")))
+
;;;***
-;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (22388 6373 564159
-;;;;;; 819000))
+;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (0 0 0 0))
;;; Generated autoloads from gnus/mm-uu.el
(autoload 'mm-uu-dissect "mm-uu" "\
@@ -18705,9 +21096,18 @@ Assume text has been decoded if DECODED is non-nil.
\(fn HANDLE &optional DECODED)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mm-uu" '("mm-")))
+
+;;;***
+
+;;;### (autoloads nil "mm-view" "gnus/mm-view.el" (0 0 0 0))
+;;; Generated autoloads from gnus/mm-view.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mm-view" '("mm-")))
+
;;;***
-;;;### (autoloads nil "mml" "gnus/mml.el" (22388 6373 623160 399000))
+;;;### (autoloads nil "mml" "gnus/mml.el" (0 0 0 0))
;;; Generated autoloads from gnus/mml.el
(autoload 'mml-to-mime "mml" "\
@@ -18730,10 +21130,25 @@ body) or \"attachment\" (separate from the body).
\(fn FILE &optional TYPE DESCRIPTION DISPOSITION)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mml" '("mime-to-mml" "mml-")))
+
+;;;***
+
+;;;### (autoloads nil "mml-sec" "gnus/mml-sec.el" (0 0 0 0))
+;;; Generated autoloads from gnus/mml-sec.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mml-sec" '("mml-")))
+
;;;***
-;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (22388 6373 653160
-;;;;;; 694000))
+;;;### (autoloads nil "mml-smime" "gnus/mml-smime.el" (0 0 0 0))
+;;; Generated autoloads from gnus/mml-smime.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mml-smime" '("mml-smime-")))
+
+;;;***
+
+;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (0 0 0 0))
;;; Generated autoloads from gnus/mml1991.el
(autoload 'mml1991-encrypt "mml1991" "\
@@ -18746,10 +21161,11 @@ body) or \"attachment\" (separate from the body).
\(fn CONT)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mml1991" '("mml1991-")))
+
;;;***
-;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (22388 6373 662160
-;;;;;; 783000))
+;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (0 0 0 0))
;;; Generated autoloads from gnus/mml2015.el
(autoload 'mml2015-decrypt "mml2015" "\
@@ -18787,18 +21203,20 @@ body) or \"attachment\" (separate from the body).
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mml2015" '("mml2015-")))
+
;;;***
-;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (22388 6368
-;;;;;; 463109 654000))
+;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (0 0 0 0))
;;; Generated autoloads from cedet/mode-local.el
(put 'define-overloadable-function 'doc-string-elt 3)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mode-local" '("make-obsolete-overload" "mode-local-" "deactivate-mode-local-bindings" "def" "describe-mode-local-" "xref-mode-local-" "overload-" "fetch-overload" "function-overload-p" "set" "with-mode-local" "activate-mode-local-bindings" "new-mode-local-bindings" "get-mode-local-parent")))
+
;;;***
-;;;### (autoloads nil "modula2" "progmodes/modula2.el" (22388 6387
-;;;;;; 287294 776000))
+;;;### (autoloads nil "modula2" "progmodes/modula2.el" (0 0 0 0))
;;; Generated autoloads from progmodes/modula2.el
(defalias 'modula-2-mode 'm2-mode)
@@ -18829,10 +21247,11 @@ followed by the first character of the construct.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "modula2" '("m3-font-lock-keywords" "m2-")))
+
;;;***
-;;;### (autoloads nil "morse" "play/morse.el" (22388 6383 419256
-;;;;;; 737000))
+;;;### (autoloads nil "morse" "play/morse.el" (0 0 0 0))
;;; Generated autoloads from play/morse.el
(autoload 'morse-region "morse" "\
@@ -18855,10 +21274,18 @@ Convert NATO phonetic alphabet in region to ordinary ASCII text.
\(fn BEG END)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "morse" '("nato-alphabet" "morse-code")))
+
;;;***
-;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (22388 5706 883603
-;;;;;; 498000))
+;;;### (autoloads nil "mouse-copy" "mouse-copy.el" (0 0 0 0))
+;;; Generated autoloads from mouse-copy.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mouse-copy" '("mouse-")))
+
+;;;***
+
+;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (0 0 0 0))
;;; Generated autoloads from mouse-drag.el
(autoload 'mouse-drag-throw "mouse-drag" "\
@@ -18903,9 +21330,11 @@ To test this function, evaluate:
\(fn START-EVENT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mouse-drag" '("mouse-")))
+
;;;***
-;;;### (autoloads nil "mpc" "mpc.el" (22388 5707 75605 386000))
+;;;### (autoloads nil "mpc" "mpc.el" (0 0 0 0))
;;; Generated autoloads from mpc.el
(autoload 'mpc "mpc" "\
@@ -18913,9 +21342,11 @@ Main entry point for MPC.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mpc" '("mpc-" "tag-browser-tagtypes")))
+
;;;***
-;;;### (autoloads nil "mpuz" "play/mpuz.el" (22388 6383 433256 875000))
+;;;### (autoloads nil "mpuz" "play/mpuz.el" (0 0 0 0))
;;; Generated autoloads from play/mpuz.el
(autoload 'mpuz "mpuz" "\
@@ -18923,9 +21354,11 @@ Multiplication puzzle with GNU Emacs.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mpuz" '("mpuz-")))
+
;;;***
-;;;### (autoloads nil "msb" "msb.el" (22388 5707 159606 212000))
+;;;### (autoloads nil "msb" "msb.el" (0 0 0 0))
;;; Generated autoloads from msb.el
(defvar msb-mode nil "\
@@ -18949,10 +21382,19 @@ different buffer menu using the function `msb'.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "msb" '("mouse-select-buffer" "msb")))
+
;;;***
-;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (22388
-;;;;;; 6374 566169 673000))
+;;;### (autoloads nil "mspools" "mail/mspools.el" (0 0 0 0))
+;;; Generated autoloads from mail/mspools.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mspools" '("mspools-")))
+
+;;;***
+
+;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from international/mule-diag.el
(autoload 'list-character-sets "mule-diag" "\
@@ -19082,10 +21524,12 @@ The default is 20. If LIMIT is negative, do not limit the listing.
\(fn &optional LIMIT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mule-diag" '("insert-section" "list-" "print-" "describe-font-internal" "charset-history" "non-iso-charset-alist" "sort-listed-character-sets")))
+
;;;***
-;;;### (autoloads nil "mule-util" "international/mule-util.el" (22388
-;;;;;; 6374 605170 57000))
+;;;### (autoloads nil "mule-util" "international/mule-util.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from international/mule-util.el
(defsubst string-to-list (string) "\
@@ -19242,10 +21686,18 @@ QUALITY can be:
\(fn POSITION &optional QUALITY CODING-SYSTEM)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mule-util" '("filepos-to-bufferpos--dos" "truncate-string-ellipsis")))
+
;;;***
-;;;### (autoloads nil "net-utils" "net/net-utils.el" (22388 6377
-;;;;;; 599199 501000))
+;;;### (autoloads nil "mwheel" "mwheel.el" (0 0 0 0))
+;;; Generated autoloads from mwheel.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mwheel" '("mouse-wheel-" "mwheel-")))
+
+;;;***
+
+;;;### (autoloads nil "net-utils" "net/net-utils.el" (0 0 0 0))
;;; Generated autoloads from net/net-utils.el
(autoload 'ifconfig "net-utils" "\
@@ -19337,9 +21789,11 @@ Open a network connection to HOST on PORT.
\(fn HOST PORT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "net-utils" '("nslookup-" "net" "whois-" "ftp-" "finger-X.500-host-regexps" "route-program" "run-network-program" "smbclient" "ifconfig-program" "iwconfig-program" "ipconfig" "dig-program" "dns-lookup-program" "arp-program" "ping-program" "traceroute-program")))
+
;;;***
-;;;### (autoloads nil "netrc" "net/netrc.el" (22388 6377 609199 599000))
+;;;### (autoloads nil "netrc" "net/netrc.el" (0 0 0 0))
;;; Generated autoloads from net/netrc.el
(autoload 'netrc-credentials "netrc" "\
@@ -19349,10 +21803,12 @@ listed in the PORTS list.
\(fn MACHINE &rest PORTS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "netrc" '("netrc-")))
+
;;;***
-;;;### (autoloads nil "network-stream" "net/network-stream.el" (22388
-;;;;;; 6377 611199 619000))
+;;;### (autoloads nil "network-stream" "net/network-stream.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from net/network-stream.el
(autoload 'open-network-stream "network-stream" "\
@@ -19368,8 +21824,8 @@ BUFFER is a buffer or buffer name to associate with the process.
Process output goes at end of that buffer. BUFFER may be nil,
meaning that the process is not associated with any buffer.
HOST is the name or IP address of the host to connect to.
-SERVICE is the name of the service desired, or an integer specifying
- a port number to connect to.
+SERVICE is the name of the service desired, or an integer or
+ integer string specifying a port number to connect to.
The remaining PARAMETERS should be a sequence of keywords and
values:
@@ -19439,17 +21895,25 @@ non-nil, is used warn the user if the connection isn't encrypted.
:nogreeting is a boolean that can be used to inhibit waiting for
a greeting from the server.
-:nowait is a boolean that says the connection should be made
+:nowait, if non-nil, says the connection should be made
asynchronously, if possible.
+:tls-parameters is a list that should be supplied if you're
+opening a TLS connection. The first element is the TLS
+type (either `gnutls-x509pki' or `gnutls-anon'), and the
+remaining elements should be a keyword list accepted by
+gnutls-boot (as returned by `gnutls-boot-parameters').
+
\(fn NAME BUFFER HOST SERVICE &rest PARAMETERS)" nil nil)
(defalias 'open-protocol-stream 'open-network-stream)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "network-stream" '("network-stream-")))
+
;;;***
-;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (22388
-;;;;;; 6377 707200 563000))
+;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from net/newst-backend.el
(autoload 'newsticker-running-p "newst-backend" "\
@@ -19468,10 +21932,12 @@ Run `newsticker-start-hook' if newsticker was not running already.
\(fn &optional DO-NOT-COMPLAIN-IF-RUNNING)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "newst-backend" '("newsticker-")))
+
;;;***
;;;### (autoloads nil "newst-plainview" "net/newst-plainview.el"
-;;;;;; (22388 6377 714200 632000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from net/newst-plainview.el
(autoload 'newsticker-plainview "newst-plainview" "\
@@ -19479,10 +21945,12 @@ Start newsticker plainview.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "newst-plainview" '("newsticker-")))
+
;;;***
-;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (22388
-;;;;;; 6377 747200 956000))
+;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from net/newst-reader.el
(autoload 'newsticker-show-news "newst-reader" "\
@@ -19490,10 +21958,12 @@ Start reading news. You may want to bind this to a key.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "newst-reader" '("newsticker-")))
+
;;;***
-;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (22388
-;;;;;; 6377 755201 35000))
+;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from net/newst-ticker.el
(autoload 'newsticker-ticker-running-p "newst-ticker" "\
@@ -19511,10 +21981,12 @@ running already.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "newst-ticker" '("newsticker-")))
+
;;;***
-;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (22388
-;;;;;; 6377 785201 330000))
+;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from net/newst-treeview.el
(autoload 'newsticker-treeview "newst-treeview" "\
@@ -19522,10 +21994,32 @@ Start newsticker treeview.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "newst-treeview" '("newsticker-")))
+
+;;;***
+
+;;;### (autoloads nil "newsticker" "net/newsticker.el" (0 0 0 0))
+;;; Generated autoloads from net/newsticker.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "newsticker" '("newsticker-version")))
+
+;;;***
+
+;;;### (autoloads nil "nnagent" "gnus/nnagent.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnagent.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnagent" '("nnagent-")))
+
+;;;***
+
+;;;### (autoloads nil "nnbabyl" "gnus/nnbabyl.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnbabyl.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnbabyl" '("nnbabyl-")))
+
;;;***
-;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (22388 6373 720161
-;;;;;; 353000))
+;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (0 0 0 0))
;;; Generated autoloads from gnus/nndiary.el
(autoload 'nndiary-generate-nov-databases "nndiary" "\
@@ -19533,10 +22027,18 @@ Generate NOV databases in all nndiary directories.
\(fn &optional SERVER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nndiary" '("nndiary-")))
+
+;;;***
+
+;;;### (autoloads nil "nndir" "gnus/nndir.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nndir.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nndir" '("nndir-")))
+
;;;***
-;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (22388 6373 725161
-;;;;;; 403000))
+;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (0 0 0 0))
;;; Generated autoloads from gnus/nndoc.el
(autoload 'nndoc-add-type "nndoc" "\
@@ -19548,10 +22050,25 @@ symbol in the alist.
\(fn DEFINITION &optional POSITION)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nndoc" '("nndoc-")))
+
+;;;***
+
+;;;### (autoloads nil "nndraft" "gnus/nndraft.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nndraft.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nndraft" '("nndraft-")))
+
+;;;***
+
+;;;### (autoloads nil "nneething" "gnus/nneething.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nneething.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nneething" '("nneething-")))
+
;;;***
-;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (22388 6373 768161
-;;;;;; 825000))
+;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (0 0 0 0))
;;; Generated autoloads from gnus/nnfolder.el
(autoload 'nnfolder-generate-active-file "nnfolder" "\
@@ -19560,9 +22077,74 @@ This command does not work if you use short group names.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnfolder" '("nnfolder-")))
+
+;;;***
+
+;;;### (autoloads nil "nngateway" "gnus/nngateway.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nngateway.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nngateway" '("nngateway-")))
+
+;;;***
+
+;;;### (autoloads nil "nnheader" "gnus/nnheader.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnheader.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnheader" '("nntp-" "nnheader-" "mail-header-" "make-" "gnus-")))
+
;;;***
-;;;### (autoloads nil "nnml" "gnus/nnml.el" (22388 6374 14164 244000))
+;;;### (autoloads nil "nnimap" "gnus/nnimap.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnimap.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnimap" '("nnimap")))
+
+;;;***
+
+;;;### (autoloads nil "nnir" "gnus/nnir.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnir.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnir" '("nnir-" "gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "nnmail" "gnus/nnmail.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnmail.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnmail" '("nnmail-")))
+
+;;;***
+
+;;;### (autoloads nil "nnmaildir" "gnus/nnmaildir.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnmaildir.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnmaildir" '("nnmaildir-")))
+
+;;;***
+
+;;;### (autoloads nil "nnmairix" "gnus/nnmairix.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnmairix.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnmairix" '("nnmairix-")))
+
+;;;***
+
+;;;### (autoloads nil "nnmbox" "gnus/nnmbox.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnmbox.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnmbox" '("nnmbox-")))
+
+;;;***
+
+;;;### (autoloads nil "nnmh" "gnus/nnmh.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnmh.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnmh" '("nnmh-")))
+
+;;;***
+
+;;;### (autoloads nil "nnml" "gnus/nnml.el" (0 0 0 0))
;;; Generated autoloads from gnus/nnml.el
(autoload 'nnml-generate-nov-databases "nnml" "\
@@ -19570,9 +22152,74 @@ Generate NOV databases in all nnml directories.
\(fn &optional SERVER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnml" '("nnml-")))
+
+;;;***
+
+;;;### (autoloads nil "nnnil" "gnus/nnnil.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnnil.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnnil" '("nnnil-")))
+
+;;;***
+
+;;;### (autoloads nil "nnoo" "gnus/nnoo.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnoo.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnoo" '("nnoo-" "def")))
+
+;;;***
+
+;;;### (autoloads nil "nnregistry" "gnus/nnregistry.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnregistry.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnregistry" '("nnregistry-")))
+
+;;;***
+
+;;;### (autoloads nil "nnrss" "gnus/nnrss.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnrss.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnrss" '("nnrss-")))
+
+;;;***
+
+;;;### (autoloads nil "nnspool" "gnus/nnspool.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnspool.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnspool" '("news-inews-program" "nnspool-")))
+
+;;;***
+
+;;;### (autoloads nil "nntp" "gnus/nntp.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nntp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nntp" '("nntp-")))
+
+;;;***
+
+;;;### (autoloads nil "nnvirtual" "gnus/nnvirtual.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnvirtual.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnvirtual" '("nnvirtual-")))
+
+;;;***
+
+;;;### (autoloads nil "nnweb" "gnus/nnweb.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnweb.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nnweb" '("nnweb-")))
+
+;;;***
+
+;;;### (autoloads nil "notifications" "notifications.el" (0 0 0 0))
+;;; Generated autoloads from notifications.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "notifications" '("notifications-")))
+
;;;***
-;;;### (autoloads nil "novice" "novice.el" (22388 5707 314607 736000))
+;;;### (autoloads nil "novice" "novice.el" (0 0 0 0))
;;; Generated autoloads from novice.el
(define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1")
@@ -19602,10 +22249,12 @@ future sessions.
\(fn COMMAND)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "novice" '("en/disable-command")))
+
;;;***
-;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (22388
-;;;;;; 6389 478316 324000))
+;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from textmodes/nroff-mode.el
(autoload 'nroff-mode "nroff-mode" "\
@@ -19617,29 +22266,40 @@ closing requests for requests that are used in matched pairs.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nroff-mode" '("nroff-")))
+
+;;;***
+
+;;;### (autoloads nil "nsm" "net/nsm.el" (0 0 0 0))
+;;; Generated autoloads from net/nsm.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nsm" '("network-security-level" "nsm-")))
+
;;;***
-;;;### (autoloads nil "ntlm" "net/ntlm.el" (22388 6377 844201 910000))
+;;;### (autoloads nil "ntlm" "net/ntlm.el" (0 0 0 0))
;;; Generated autoloads from net/ntlm.el
(push (purecopy '(ntlm 2 0 0)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ntlm" '("ntlm-")))
+
;;;***
-;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (22388 6379
-;;;;;; 155214 803000))
-;;; Generated autoloads from nxml/nxml-glyph.el
+;;;### (autoloads nil "nxml-enc" "nxml/nxml-enc.el" (0 0 0 0))
+;;; Generated autoloads from nxml/nxml-enc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nxml-enc" '("nxml-")))
-(autoload 'nxml-glyph-display-string "nxml-glyph" "\
-Return a string that can display a glyph for Unicode code-point N.
-FACE gives the face that will be used for displaying the string.
-Return nil if the face cannot display a glyph for N.
+;;;***
+
+;;;### (autoloads nil "nxml-maint" "nxml/nxml-maint.el" (0 0 0 0))
+;;; Generated autoloads from nxml/nxml-maint.el
-\(fn N FACE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nxml-maint" '("nxml-insert-target-repertoire-glyph-set")))
;;;***
-;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (22388 6379
-;;;;;; 228215 522000))
+;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (0 0 0 0))
;;; Generated autoloads from nxml/nxml-mode.el
(autoload 'nxml-mode "nxml-mode" "\
@@ -19697,23 +22357,388 @@ Many aspects this mode can be customized using
\(fn)" t nil)
(defalias 'xml-mode 'nxml-mode)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nxml-mode" '("nxml-")))
+
;;;***
-;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (22388 6379
-;;;;;; 309216 317000))
-;;; Generated autoloads from nxml/nxml-uchnm.el
+;;;### (autoloads nil "nxml-ns" "nxml/nxml-ns.el" (0 0 0 0))
+;;; Generated autoloads from nxml/nxml-ns.el
-(autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\
-Enable the use of Unicode standard names for characters.
-The Unicode blocks for which names are enabled is controlled by
-the variable `nxml-enabled-unicode-blocks'.
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nxml-ns" '("nxml-ns-")))
-\(fn)" t nil)
+;;;***
+
+;;;### (autoloads nil "nxml-outln" "nxml/nxml-outln.el" (0 0 0 0))
+;;; Generated autoloads from nxml/nxml-outln.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nxml-outln" '("nxml-")))
+
+;;;***
+
+;;;### (autoloads nil "nxml-parse" "nxml/nxml-parse.el" (0 0 0 0))
+;;; Generated autoloads from nxml/nxml-parse.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nxml-parse" '("nxml-")))
+
+;;;***
+
+;;;### (autoloads nil "nxml-rap" "nxml/nxml-rap.el" (0 0 0 0))
+;;; Generated autoloads from nxml/nxml-rap.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nxml-rap" '("nxml-")))
+
+;;;***
+
+;;;### (autoloads nil "nxml-util" "nxml/nxml-util.el" (0 0 0 0))
+;;; Generated autoloads from nxml/nxml-util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "nxml-util" '("nxml-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-C" "org/ob-C.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-C.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-C" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-R" "org/ob-R.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-R.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-R" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-asymptote" "org/ob-asymptote.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from org/ob-asymptote.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-asymptote" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-awk" "org/ob-awk.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-awk.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-awk" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-calc" "org/ob-calc.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-calc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-calc" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-clojure" "org/ob-clojure.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-clojure.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-clojure" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-comint" "org/ob-comint.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-comint.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-comint" '("org-babel-comint-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ob-core" "org/ob-core.el"
+;;;;;; (22328 19625 652549 735000))
+;;; Generated autoloads from org/ob-core.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-core" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-css" "org/ob-css.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-css.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-css" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-ditaa" "org/ob-ditaa.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-ditaa.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-ditaa" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-dot" "org/ob-dot.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-dot.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-dot" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-emacs-lisp" "org/ob-emacs-lisp.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from org/ob-emacs-lisp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-emacs-lisp" '("org-babel-")))
;;;***
-;;;### (autoloads nil "octave" "progmodes/octave.el" (22388 6387
-;;;;;; 328295 179000))
+;;;### (autoloads nil "ob-eval" "org/ob-eval.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-eval.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-eval" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-exp" "org/ob-exp.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-exp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-exp" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-fortran" "org/ob-fortran.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-fortran.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-fortran" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-gnuplot" "org/ob-gnuplot.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-gnuplot.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-gnuplot" '("org-babel-" "*org-babel-gnuplot-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-haskell" "org/ob-haskell.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-haskell.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-haskell" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-io" "org/ob-io.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-io.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-io" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-java" "org/ob-java.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-java.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-java" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-js" "org/ob-js.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-js.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-js" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ob-keys" "org/ob-keys.el"
+;;;;;; (22164 57535 139192 607000))
+;;; Generated autoloads from org/ob-keys.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-keys" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-latex" "org/ob-latex.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-latex.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-latex" '("org-babel-" "convert-pdf")))
+
+;;;***
+
+;;;### (autoloads nil "ob-ledger" "org/ob-ledger.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-ledger.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-ledger" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-lilypond" "org/ob-lilypond.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-lilypond.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-lilypond" '("org-babel-" "lilypond-mode")))
+
+;;;***
+
+;;;### (autoloads nil "ob-lisp" "org/ob-lisp.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-lisp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-lisp" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ob-lob" "org/ob-lob.el"
+;;;;;; (22164 57535 143192 607000))
+;;; Generated autoloads from org/ob-lob.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-lob" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-makefile" "org/ob-makefile.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-makefile.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-makefile" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-maxima" "org/ob-maxima.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-maxima.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-maxima" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-mscgen" "org/ob-mscgen.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-mscgen.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-mscgen" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-ocaml" "org/ob-ocaml.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-ocaml.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-ocaml" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-octave" "org/ob-octave.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-octave.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-octave" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-org" "org/ob-org.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-org.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-org" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-perl" "org/ob-perl.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-perl.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-perl" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-picolisp" "org/ob-picolisp.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-picolisp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-picolisp" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-plantuml" "org/ob-plantuml.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-plantuml.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-plantuml" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-python" "org/ob-python.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-python.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-python" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-ref" "org/ob-ref.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-ref.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-ref" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-ruby" "org/ob-ruby.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-ruby.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-ruby" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-sass" "org/ob-sass.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-sass.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-sass" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-scala" "org/ob-scala.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-scala.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-scala" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-scheme" "org/ob-scheme.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-scheme.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-scheme" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-screen" "org/ob-screen.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-screen.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-screen" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-sh" "org/ob-sh.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-sh.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-sh" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-shen" "org/ob-shen.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-shen.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-shen" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-sql" "org/ob-sql.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-sql.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-sql" '("org-babel-" "dbstring-mysql")))
+
+;;;***
+
+;;;### (autoloads nil "ob-sqlite" "org/ob-sqlite.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-sqlite.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-sqlite" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "ob-table" "org/ob-table.el" (0 0 0 0))
+;;; Generated autoloads from org/ob-table.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-table" '("org-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ob-tangle" "org/ob-tangle.el"
+;;;;;; (22328 19625 716549 735000))
+;;; Generated autoloads from org/ob-tangle.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ob-tangle" '("org-babel-")))
+
+;;;***
+
+;;;### (autoloads nil "octave" "progmodes/octave.el" (0 0 0 0))
;;; Generated autoloads from progmodes/octave.el
(autoload 'octave-mode "octave" "\
@@ -19748,10 +22773,18 @@ startup file, `~/.emacs-octave'.
(defalias 'run-octave 'inferior-octave)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "octave" '("octave-" "inferior-octave-")))
+
;;;***
-;;;### (autoloads nil "opascal" "progmodes/opascal.el" (22388 6387
-;;;;;; 367295 563000))
+;;;### (autoloads nil "ogonek" "international/ogonek.el" (0 0 0 0))
+;;; Generated autoloads from international/ogonek.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ogonek" '("ogonek-")))
+
+;;;***
+
+;;;### (autoloads nil "opascal" "progmodes/opascal.el" (0 0 0 0))
;;; Generated autoloads from progmodes/opascal.el
(define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4")
@@ -19784,9 +22817,11 @@ Coloring:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "opascal" '("opascal-")))
+
;;;***
-;;;### (autoloads nil "org" "org/org.el" (22388 6381 830241 110000))
+;;;### (autoloads nil "org" "org/org.el" (0 0 0 0))
;;; Generated autoloads from org/org.el
(autoload 'org-babel-do-load-languages "org" "\
@@ -20005,10 +23040,11 @@ Call the customize function with org as argument.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org" '("org" "turn-on-org-cdlatex")))
+
;;;***
-;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (22388 6380
-;;;;;; 492227 952000))
+;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (0 0 0 0))
;;; Generated autoloads from org/org-agenda.el
(autoload 'org-toggle-sticky-agenda "org-agenda" "\
@@ -20279,10 +23315,42 @@ to override `appt-message-warning-time'.
\(fn &optional REFRESH FILTER &rest ARGS)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-agenda" '("org-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-archive"
+;;;;;; "org/org-archive.el" (22164 57535 151192 607000))
+;;; Generated autoloads from org/org-archive.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-archive" '("org-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-attach" "org/org-attach.el"
+;;;;;; (22164 57535 151192 607000))
+;;; Generated autoloads from org/org-attach.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-attach" '("org-attach-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-bbdb" "org/org-bbdb.el"
+;;;;;; (22164 57535 151192 607000))
+;;; Generated autoloads from org/org-bbdb.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-bbdb" '("org-bbdb-")))
+
;;;***
-;;;### (autoloads nil "org-capture" "org/org-capture.el" (22388 6380
-;;;;;; 765230 636000))
+;;;### (autoloads nil "org-bibtex" "org/org-bibtex.el" (0 0 0 0))
+;;; Generated autoloads from org/org-bibtex.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-bibtex" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "org-capture" "org/org-capture.el" (0 0 0 0))
;;; Generated autoloads from org/org-capture.el
(autoload 'org-capture-string "org-capture" "\
@@ -20322,10 +23390,19 @@ Set `org-capture-templates' to be similar to `org-remember-templates'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-capture" '("org-")))
+
;;;***
-;;;### (autoloads nil "org-colview" "org/org-colview.el" (22388 6380
-;;;;;; 918232 141000))
+;;;### (autoloads "actual autoloads are elsewhere" "org-clock" "org/org-clock.el"
+;;;;;; (22328 19625 764549 735000))
+;;; Generated autoloads from org/org-clock.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-clock" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "org-colview" "org/org-colview.el" (0 0 0 0))
;;; Generated autoloads from org/org-colview.el
(autoload 'org-columns-remove-overlays "org-colview" "\
@@ -20386,10 +23463,11 @@ Turn on or update column view in the agenda.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-colview" '("org-")))
+
;;;***
-;;;### (autoloads nil "org-compat" "org/org-compat.el" (22388 6380
-;;;;;; 946232 416000))
+;;;### (autoloads nil "org-compat" "org/org-compat.el" (0 0 0 0))
;;; Generated autoloads from org/org-compat.el
(autoload 'org-check-version "org-compat" "\
@@ -20397,10 +23475,153 @@ Try very hard to provide sensible version strings.
\(fn)" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-compat" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "org-crypt" "org/org-crypt.el" (0 0 0 0))
+;;; Generated autoloads from org/org-crypt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-crypt" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "org-ctags" "org/org-ctags.el" (0 0 0 0))
+;;; Generated autoloads from org/org-ctags.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-ctags" '("org-ctags-" "y-or-n-minibuffer")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-datetree"
+;;;;;; "org/org-datetree.el" (22164 57535 155192 607000))
+;;; Generated autoloads from org/org-datetree.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-datetree" '("org-datetree-")))
+
+;;;***
+
+;;;### (autoloads nil "org-docview" "org/org-docview.el" (0 0 0 0))
+;;; Generated autoloads from org/org-docview.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-docview" '("org-docview-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-element"
+;;;;;; "org/org-element.el" (22189 60738 609741 19000))
+;;; Generated autoloads from org/org-element.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-element" '("org-element-")))
+
+;;;***
+
+;;;### (autoloads nil "org-entities" "org/org-entities.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from org/org-entities.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-entities" '("replace-amp" "org-entit")))
+
+;;;***
+
+;;;### (autoloads nil "org-eshell" "org/org-eshell.el" (0 0 0 0))
+;;; Generated autoloads from org/org-eshell.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-eshell" '("org-eshell-")))
+
+;;;***
+
+;;;### (autoloads nil "org-faces" "org/org-faces.el" (0 0 0 0))
+;;; Generated autoloads from org/org-faces.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-faces" '("org-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-feed" "org/org-feed.el"
+;;;;;; (22328 19625 780549 735000))
+;;; Generated autoloads from org/org-feed.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-feed" '("org-feed-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-footnote"
+;;;;;; "org/org-footnote.el" (22164 57535 159192 607000))
+;;; Generated autoloads from org/org-footnote.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-footnote" '("org-footnote-")))
+
+;;;***
+
+;;;### (autoloads nil "org-gnus" "org/org-gnus.el" (0 0 0 0))
+;;; Generated autoloads from org/org-gnus.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-gnus" '("org-gnus-")))
+
+;;;***
+
+;;;### (autoloads nil "org-habit" "org/org-habit.el" (0 0 0 0))
+;;; Generated autoloads from org/org-habit.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-habit" '("org-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-id" "org/org-id.el"
+;;;;;; (22164 57535 159192 607000))
+;;; Generated autoloads from org/org-id.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-id" '("org-id-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-indent" "org/org-indent.el"
+;;;;;; (22164 57535 159192 607000))
+;;; Generated autoloads from org/org-indent.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-indent" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "org-info" "org/org-info.el" (0 0 0 0))
+;;; Generated autoloads from org/org-info.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-info" '("org-info-")))
+
;;;***
-;;;### (autoloads nil "org-macs" "org/org-macs.el" (22388 6381 325236
-;;;;;; 144000))
+;;;### (autoloads nil "org-inlinetask" "org/org-inlinetask.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from org/org-inlinetask.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-inlinetask" '("org-inlinetask-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-irc" "org/org-irc.el"
+;;;;;; (22164 57535 163192 607000))
+;;; Generated autoloads from org/org-irc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-irc" '("org-irc-")))
+
+;;;***
+
+;;;### (autoloads nil "org-list" "org/org-list.el" (0 0 0 0))
+;;; Generated autoloads from org/org-list.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-list" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "org-macro" "org/org-macro.el" (0 0 0 0))
+;;; Generated autoloads from org/org-macro.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-macro" '("org-macro-")))
+
+;;;***
+
+;;;### (autoloads nil "org-macs" "org/org-macs.el" (0 0 0 0))
;;; Generated autoloads from org/org-macs.el
(autoload 'org-load-noerror-mustsuffix "org-macs" "\
@@ -20408,10 +23629,87 @@ Load FILE with optional arguments NOERROR and MUSTSUFFIX. Drop the MUSTSUFFIX a
\(fn FILE)" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-macs" '("org-")))
+
+;;;***
+
+;;;### (autoloads nil "org-mhe" "org/org-mhe.el" (0 0 0 0))
+;;; Generated autoloads from org/org-mhe.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-mhe" '("org-mhe-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-mobile" "org/org-mobile.el"
+;;;;;; (22189 60738 629741 19000))
+;;; Generated autoloads from org/org-mobile.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-mobile" '("org-mobile-")))
+
+;;;***
+
+;;;### (autoloads nil "org-mouse" "org/org-mouse.el" (0 0 0 0))
+;;; Generated autoloads from org/org-mouse.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-mouse" '("org-mouse-")))
+
+;;;***
+
+;;;### (autoloads nil "org-pcomplete" "org/org-pcomplete.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from org/org-pcomplete.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-pcomplete" '("org-" "pcomplete/org-mode/")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-plot" "org/org-plot.el"
+;;;;;; (22164 57535 163192 607000))
+;;; Generated autoloads from org/org-plot.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-plot" '("org-plot")))
+
+;;;***
+
+;;;### (autoloads nil "org-protocol" "org/org-protocol.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from org/org-protocol.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-protocol" '("org-protocol-")))
+
+;;;***
+
+;;;### (autoloads nil "org-rmail" "org/org-rmail.el" (0 0 0 0))
+;;; Generated autoloads from org/org-rmail.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-rmail" '("org-rmail-")))
+
+;;;***
+
+;;;### (autoloads nil "org-src" "org/org-src.el" (0 0 0 0))
+;;; Generated autoloads from org/org-src.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-src" '("org-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "org-table" "org/org-table.el"
+;;;;;; (22164 57535 167192 607000))
+;;; Generated autoloads from org/org-table.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-table" '("org" "*orgtbl-")))
+
;;;***
-;;;### (autoloads nil "org-version" "org/org-version.el" (22388 6381
-;;;;;; 568238 534000))
+;;;### (autoloads "actual autoloads are elsewhere" "org-timer" "org/org-timer.el"
+;;;;;; (22320 25516 956613 268000))
+;;; Generated autoloads from org/org-timer.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-timer" '("org-timer-")))
+
+;;;***
+
+;;;### (autoloads nil "org-version" "org/org-version.el" (0 0 0 0))
;;; Generated autoloads from org/org-version.el
(autoload 'org-release "org-version" "\
@@ -20428,7 +23726,14 @@ The Git version of org-mode.
;;;***
-;;;### (autoloads nil "outline" "outline.el" (22388 5707 326607 854000))
+;;;### (autoloads nil "org-w3m" "org/org-w3m.el" (0 0 0 0))
+;;; Generated autoloads from org/org-w3m.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-w3m" '("org-w3m-")))
+
+;;;***
+
+;;;### (autoloads nil "outline" "outline.el" (0 0 0 0))
;;; Generated autoloads from outline.el
(put 'outline-regexp 'safe-local-variable 'stringp)
(put 'outline-heading-end-regexp 'safe-local-variable 'stringp)
@@ -20469,10 +23774,107 @@ See the command `outline-mode' for more information on this mode.
\(fn &optional ARG)" t nil)
(put 'outline-level 'risky-local-variable t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "outline" '("outline-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox" "org/ox.el"
+;;;;;; (22189 60739 13741 19000))
+;;; Generated autoloads from org/ox.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox" '("org-export-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox-ascii" "org/ox-ascii.el"
+;;;;;; (22189 60738 961741 19000))
+;;; Generated autoloads from org/ox-ascii.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-ascii" '("org-ascii-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox-beamer" "org/ox-beamer.el"
+;;;;;; (22164 57535 195192 607000))
+;;; Generated autoloads from org/ox-beamer.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-beamer" '("org-beamer-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox-html" "org/ox-html.el"
+;;;;;; (22164 57535 195192 607000))
+;;; Generated autoloads from org/ox-html.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-html" '("org-html-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox-icalendar"
+;;;;;; "org/ox-icalendar.el" (22274 16187 224759 99000))
+;;; Generated autoloads from org/ox-icalendar.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-icalendar" '("org-icalendar-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox-latex" "org/ox-latex.el"
+;;;;;; (22164 57535 199192 607000))
+;;; Generated autoloads from org/ox-latex.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-latex" '("org-latex-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox-man" "org/ox-man.el"
+;;;;;; (22164 57535 199192 607000))
+;;; Generated autoloads from org/ox-man.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-man" '("org-man-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox-md" "org/ox-md.el"
+;;;;;; (22164 57535 199192 607000))
+;;; Generated autoloads from org/ox-md.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-md" '("org-md-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox-odt" "org/ox-odt.el"
+;;;;;; (22164 57535 203192 607000))
+;;; Generated autoloads from org/ox-odt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-odt" '("org-odt-")))
+
;;;***
-;;;### (autoloads nil "package" "emacs-lisp/package.el" (22420 38537
-;;;;;; 270424 442000))
+;;;### (autoloads "actual autoloads are elsewhere" "ox-org" "org/ox-org.el"
+;;;;;; (22328 19625 860549 735000))
+;;; Generated autoloads from org/ox-org.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-org" '("org-org-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox-publish" "org/ox-publish.el"
+;;;;;; (22189 60738 997741 19000))
+;;; Generated autoloads from org/ox-publish.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-publish" '("org-publish-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ox-texinfo" "org/ox-texinfo.el"
+;;;;;; (22164 57535 203192 607000))
+;;; Generated autoloads from org/ox-texinfo.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ox-texinfo" '("org-texinfo-")))
+
+;;;***
+
+;;;### (autoloads nil "package" "emacs-lisp/package.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/package.el
(push (purecopy '(package 1 1 0)) package--builtin-versions)
@@ -20588,9 +23990,26 @@ The list is displayed in a buffer named `*Packages*'.
(defalias 'package-list-packages 'list-packages)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "package" '("package-" "define-package" "describe-package-1" "bad-signature")))
+
+;;;***
+
+;;;### (autoloads nil "package-x" "emacs-lisp/package-x.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from emacs-lisp/package-x.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "package-x" '("package-")))
+
+;;;***
+
+;;;### (autoloads nil "page-ext" "textmodes/page-ext.el" (0 0 0 0))
+;;; Generated autoloads from textmodes/page-ext.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "page-ext" '("previous-page" "pages-" "sort-pages-" "original-page-delimiter" "add-new-page" "next-page" "ctl-x-ctl-p-map")))
+
;;;***
-;;;### (autoloads nil "paren" "paren.el" (22388 5707 384608 424000))
+;;;### (autoloads nil "paren" "paren.el" (0 0 0 0))
;;; Generated autoloads from paren.el
(defvar show-paren-mode nil "\
@@ -20615,24 +24034,31 @@ matching parenthesis is highlighted in `show-paren-style' after
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "paren" '("show-paren-")))
+
;;;***
-;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (22388
-;;;;;; 6368 186106 930000))
+;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from calendar/parse-time.el
(put 'parse-time-rules 'risky-local-variable t)
(autoload 'parse-time-string "parse-time" "\
Parse the time-string STRING into (SEC MIN HOUR DAY MON YEAR DOW DST TZ).
-The values are identical to those of `decode-time', but any values that are
-unknown are returned as nil.
+STRING should be on something resembling an RFC2822 string, a la
+\"Fri, 25 Mar 2016 16:24:56 +0100\", but this function is
+somewhat liberal in what format it accepts, and will attempt to
+return a \"likely\" value even for somewhat malformed strings.
+The values returned are identical to those of `decode-time', but
+any values that are unknown are returned as nil.
\(fn STRING)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "parse-time" '("parse-")))
+
;;;***
-;;;### (autoloads nil "pascal" "progmodes/pascal.el" (22388 6387
-;;;;;; 391295 799000))
+;;;### (autoloads nil "pascal" "progmodes/pascal.el" (0 0 0 0))
;;; Generated autoloads from progmodes/pascal.el
(autoload 'pascal-mode "pascal" "\
@@ -20679,10 +24105,12 @@ See also the user variables `pascal-type-keywords', `pascal-start-keywords' and
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pascal" '("pascal-" "electric-pascal-")))
+
;;;***
-;;;### (autoloads nil "password-cache" "password-cache.el" (22388
-;;;;;; 5707 386608 444000))
+;;;### (autoloads nil "password-cache" "password-cache.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from password-cache.el
(defvar password-cache t "\
@@ -20701,10 +24129,11 @@ Check if KEY is in the cache.
\(fn KEY)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "password-cache" '("password-")))
+
;;;***
-;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (22388 6369 618121
-;;;;;; 13000))
+;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/pcase.el
(autoload 'pcase "pcase" "\
@@ -20822,10 +24251,11 @@ to this macro.
(function-put 'pcase-defmacro 'doc-string-elt '3)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcase" '("pcase-")))
+
;;;***
-;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (22388 5707 387608
-;;;;;; 454000))
+;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (0 0 0 0))
;;; Generated autoloads from pcmpl-cvs.el
(autoload 'pcomplete/cvs "pcmpl-cvs" "\
@@ -20833,10 +24263,11 @@ Completion rules for the `cvs' command.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcmpl-cvs" '("pcmpl-cvs-")))
+
;;;***
-;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (22388 5707 389608
-;;;;;; 473000))
+;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (0 0 0 0))
;;; Generated autoloads from pcmpl-gnu.el
(autoload 'pcomplete/gzip "pcmpl-gnu" "\
@@ -20859,12 +24290,18 @@ Completion for the GNU tar utility.
\(fn)" nil nil)
+(autoload 'pcomplete/find "pcmpl-gnu" "\
+Completion for the GNU find utility.
+
+\(fn)" nil nil)
+
(defalias 'pcomplete/gdb 'pcomplete/xargs)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcmpl-gnu" '("pcmpl-gnu-")))
+
;;;***
-;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (22388 5707
-;;;;;; 397608 552000))
+;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (0 0 0 0))
;;; Generated autoloads from pcmpl-linux.el
(autoload 'pcomplete/kill "pcmpl-linux" "\
@@ -20882,10 +24319,11 @@ Completion for GNU/Linux `mount'.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcmpl-linux" '("pcomplete-pare-list" "pcmpl-linux-")))
+
;;;***
-;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (22388 5707 398608
-;;;;;; 562000))
+;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (0 0 0 0))
;;; Generated autoloads from pcmpl-rpm.el
(autoload 'pcomplete/rpm "pcmpl-rpm" "\
@@ -20893,10 +24331,11 @@ Completion for the `rpm' command.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcmpl-rpm" '("pcmpl-rpm-")))
+
;;;***
-;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (22388 5707 426608
-;;;;;; 837000))
+;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (0 0 0 0))
;;; Generated autoloads from pcmpl-unix.el
(autoload 'pcomplete/cd "pcmpl-unix" "\
@@ -20949,9 +24388,11 @@ Includes files as well as host names followed by a colon.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcmpl-unix" '("pcmpl-")))
+
;;;***
-;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (22388 5707 427608 847000))
+;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (0 0 0 0))
;;; Generated autoloads from pcmpl-x.el
(autoload 'pcomplete/tlmgr "pcmpl-x" "\
@@ -20973,10 +24414,11 @@ Completion for the `ag' command.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcmpl-x" '("pcmpl-x-")))
+
;;;***
-;;;### (autoloads nil "pcomplete" "pcomplete.el" (22388 5707 441608
-;;;;;; 985000))
+;;;### (autoloads nil "pcomplete" "pcomplete.el" (0 0 0 0))
;;; Generated autoloads from pcomplete.el
(autoload 'pcomplete "pcomplete" "\
@@ -21031,9 +24473,11 @@ Setup `shell-mode' to use pcomplete.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcomplete" '("pcomplete-")))
+
;;;***
-;;;### (autoloads nil "pcvs" "vc/pcvs.el" (22388 6391 236333 612000))
+;;;### (autoloads nil "pcvs" "vc/pcvs.el" (0 0 0 0))
;;; Generated autoloads from vc/pcvs.el
(autoload 'cvs-checkout "pcvs" "\
@@ -21106,19 +24550,43 @@ Anything else means to do it only if the prefix arg is equal to this value.")
Run `cvs-examine' if DIR is a CVS administrative directory.
The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp dir) (setq dir (directory-file-name dir)) (when (and (string= "CVS" (file-name-nondirectory dir)) (file-readable-p (expand-file-name "Entries" dir)) cvs-dired-use-hook (if (eq cvs-dired-use-hook (quote always)) (not current-prefix-arg) (equal current-prefix-arg cvs-dired-use-hook))) (save-excursion (funcall cvs-dired-action (file-name-directory dir) t t)))))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcvs" '("cvs-" "defun-cvs-mode")))
+
;;;***
-;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (22388 6391 155332
-;;;;;; 816000))
+;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (0 0 0 0))
;;; Generated autoloads from vc/pcvs-defs.el
(defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help ,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] `(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check out a module from the repository"))) (define-key m [update] `(menu-item ,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from the repository"))) (define-key m [examine] `(menu-item ,(purecopy "Examine Directory") cvs-examine :help ,(purecopy "Examine the current state of a workarea"))) (fset 'cvs-global-menu m)) "\
Global menu used by PCL-CVS.")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcvs-defs" '("cvs-")))
+
+;;;***
+
+;;;### (autoloads nil "pcvs-info" "vc/pcvs-info.el" (0 0 0 0))
+;;; Generated autoloads from vc/pcvs-info.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcvs-info" '("cvs-")))
+
+;;;***
+
+;;;### (autoloads nil "pcvs-parse" "vc/pcvs-parse.el" (0 0 0 0))
+;;; Generated autoloads from vc/pcvs-parse.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcvs-parse" '("cvs-")))
+
+;;;***
+
+;;;### (autoloads nil "pcvs-util" "vc/pcvs-util.el" (0 0 0 0))
+;;; Generated autoloads from vc/pcvs-util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pcvs-util" '("cvs-")))
+
;;;***
-;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (22388
-;;;;;; 6387 473296 605000))
+;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from progmodes/perl-mode.el
(put 'perl-indent-level 'safe-local-variable 'integerp)
(put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
@@ -21177,10 +24645,11 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "perl-mode" '("perl-" "mark-perl-function" "indent-perl-exp")))
+
;;;***
-;;;### (autoloads nil "picture" "textmodes/picture.el" (22388 6389
-;;;;;; 521316 747000))
+;;;### (autoloads nil "picture" "textmodes/picture.el" (0 0 0 0))
;;; Generated autoloads from textmodes/picture.el
(autoload 'picture-mode "picture" "\
@@ -21258,10 +24727,11 @@ they are not by default assigned to keys.
(defalias 'edit-picture 'picture-mode)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "picture" '("picture-")))
+
;;;***
-;;;### (autoloads nil "pinentry" "net/pinentry.el" (22388 6377 846201
-;;;;;; 930000))
+;;;### (autoloads nil "pinentry" "net/pinentry.el" (0 0 0 0))
;;; Generated autoloads from net/pinentry.el
(push (purecopy '(pinentry 0 1)) package--builtin-versions)
@@ -21276,11 +24746,12 @@ will not be shown.
\(fn &optional QUIET)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pinentry" '("pinentry-")))
+
;;;***
-;;;### (autoloads nil "plstore" "gnus/plstore.el" (22388 6374 119165
-;;;;;; 277000))
-;;; Generated autoloads from gnus/plstore.el
+;;;### (autoloads nil "plstore" "plstore.el" (0 0 0 0))
+;;; Generated autoloads from plstore.el
(autoload 'plstore-open "plstore" "\
Create a plstore instance associated with FILE.
@@ -21292,9 +24763,11 @@ Major mode for editing PLSTORE files.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "plstore" '("plstore-")))
+
;;;***
-;;;### (autoloads nil "po" "textmodes/po.el" (22388 6389 566317 189000))
+;;;### (autoloads nil "po" "textmodes/po.el" (0 0 0 0))
;;; Generated autoloads from textmodes/po.el
(autoload 'po-find-file-coding-system "po" "\
@@ -21303,9 +24776,11 @@ Called through `file-coding-system-alist', before the file is visited for real.
\(fn ARG-LIST)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "po" '("po-")))
+
;;;***
-;;;### (autoloads nil "pong" "play/pong.el" (22388 6383 433256 875000))
+;;;### (autoloads nil "pong" "play/pong.el" (0 0 0 0))
;;; Generated autoloads from play/pong.el
(autoload 'pong "pong" "\
@@ -21319,10 +24794,12 @@ pong-mode keybindings:\\<pong-mode-map>
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pong" '("pong-")))
+
;;;***
-;;;### (autoloads nil "pop3" "gnus/pop3.el" (22388 6374 119165 277000))
-;;; Generated autoloads from gnus/pop3.el
+;;;### (autoloads nil "pop3" "net/pop3.el" (0 0 0 0))
+;;; Generated autoloads from net/pop3.el
(autoload 'pop3-movemail "pop3" "\
Transfer contents of a maildrop to the specified FILE.
@@ -21330,10 +24807,11 @@ Use streaming commands.
\(fn FILE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pop3" '("pop3-")))
+
;;;***
-;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (22388 6369 620121
-;;;;;; 33000))
+;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/pp.el
(autoload 'pp-to-string "pp" "\
@@ -21381,10 +24859,11 @@ Ignores leading comment characters.
\(fn ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pp" '("pp-")))
+
;;;***
-;;;### (autoloads nil "printing" "printing.el" (22388 5707 557610
-;;;;;; 126000))
+;;;### (autoloads nil "printing" "printing.el" (0 0 0 0))
;;; Generated autoloads from printing.el
(push (purecopy '(printing 6 9 3)) package--builtin-versions)
@@ -21970,9 +25449,11 @@ are both set to t.
\(fn &optional SELECT-PRINTER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "printing" '("pr-" "lpr-setup")))
+
;;;***
-;;;### (autoloads nil "proced" "proced.el" (22388 5707 663611 168000))
+;;;### (autoloads nil "proced" "proced.el" (0 0 0 0))
;;; Generated autoloads from proced.el
(autoload 'proced "proced" "\
@@ -21988,10 +25469,11 @@ Proced buffers.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "proced" '("proced-")))
+
;;;***
-;;;### (autoloads nil "profiler" "profiler.el" (22388 5707 707611
-;;;;;; 601000))
+;;;### (autoloads nil "profiler" "profiler.el" (0 0 0 0))
;;; Generated autoloads from profiler.el
(autoload 'profiler-start "profiler" "\
@@ -22017,10 +25499,11 @@ Open profile FILENAME.
\(fn FILENAME)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "profiler" '("profiler-")))
+
;;;***
-;;;### (autoloads nil "project" "progmodes/project.el" (22388 6387
-;;;;;; 479296 664000))
+;;;### (autoloads nil "project" "progmodes/project.el" (0 0 0 0))
;;; Generated autoloads from progmodes/project.el
(autoload 'project-current "project" "\
@@ -22060,10 +25543,11 @@ recognized.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "project" '("project-")))
+
;;;***
-;;;### (autoloads nil "prolog" "progmodes/prolog.el" (22388 6387
-;;;;;; 512296 989000))
+;;;### (autoloads nil "prolog" "progmodes/prolog.el" (0 0 0 0))
;;; Generated autoloads from progmodes/prolog.el
(autoload 'prolog-mode "prolog" "\
@@ -22094,9 +25578,11 @@ With prefix argument ARG, restart the Prolog process if running before.
\(fn ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "prolog" '("prolog-" "mercury-mode-map")))
+
;;;***
-;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (22388 5707 728611 808000))
+;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (0 0 0 0))
;;; Generated autoloads from ps-bdf.el
(defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list (expand-file-name "fonts/bdf" installation-directory)) '("/usr/local/share/emacs/fonts/bdf")) "\
@@ -22105,10 +25591,11 @@ The default value is (\"/usr/local/share/emacs/fonts/bdf\").")
(custom-autoload 'bdf-directory-list "ps-bdf" t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ps-bdf" '("bdf-")))
+
;;;***
-;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (22388 6387
-;;;;;; 553297 392000))
+;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (0 0 0 0))
;;; Generated autoloads from progmodes/ps-mode.el
(push (purecopy '(ps-mode 1 1 9)) package--builtin-versions)
@@ -22152,10 +25639,19 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the cursor is at the number
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ps-mode" '("ps-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "ps-mule" "ps-mule.el"
+;;;;;; (22164 57535 655192 607000))
+;;; Generated autoloads from ps-mule.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ps-mule" '("ps-mule-")))
+
;;;***
-;;;### (autoloads nil "ps-print" "ps-print.el" (22388 5707 937613
-;;;;;; 863000))
+;;;### (autoloads nil "ps-print" "ps-print.el" (0 0 0 0))
;;; Generated autoloads from ps-print.el
(push (purecopy '(ps-print 7 3 5)) package--builtin-versions)
@@ -22350,10 +25846,18 @@ If EXTENSION is any other symbol, it is ignored.
\(fn FACE-EXTENSION &optional MERGE-P ALIST-SYM)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ps-print" '("ps-")))
+
+;;;***
+
+;;;### (autoloads nil "ps-samp" "ps-samp.el" (0 0 0 0))
+;;; Generated autoloads from ps-samp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ps-samp" '("ps-")))
+
;;;***
-;;;### (autoloads nil "pulse" "cedet/pulse.el" (22388 6368 485109
-;;;;;; 870000))
+;;;### (autoloads nil "pulse" "cedet/pulse.el" (0 0 0 0))
;;; Generated autoloads from cedet/pulse.el
(push (purecopy '(pulse 1 0)) package--builtin-versions)
@@ -22369,12 +25873,20 @@ Optional argument FACE specifies the face to do the highlighting.
\(fn START END &optional FACE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "pulse" '("pulse-")))
+
+;;;***
+
+;;;### (autoloads nil "puny" "net/puny.el" (0 0 0 0))
+;;; Generated autoloads from net/puny.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "puny" '("puny-")))
+
;;;***
-;;;### (autoloads nil "python" "progmodes/python.el" (22388 6387
-;;;;;; 635298 199000))
+;;;### (autoloads nil "python" "progmodes/python.el" (0 0 0 0))
;;; Generated autoloads from progmodes/python.el
-(push (purecopy '(python 0 25 1)) package--builtin-versions)
+(push (purecopy '(python 0 25 2)) package--builtin-versions)
(add-to-list 'auto-mode-alist (cons (purecopy "\\.pyw?\\'") 'python-mode))
@@ -22407,10 +25919,12 @@ Major mode for editing Python files.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "python" '("python-" "run-python-internal" "inferior-python-mode")))
+
;;;***
-;;;### (autoloads nil "qp" "gnus/qp.el" (22388 6374 122165 307000))
-;;; Generated autoloads from gnus/qp.el
+;;;### (autoloads nil "qp" "mail/qp.el" (0 0 0 0))
+;;; Generated autoloads from mail/qp.el
(autoload 'quoted-printable-decode-region "qp" "\
Decode quoted-printable in the region between FROM and TO, per RFC 2045.
@@ -22426,10 +25940,11 @@ them into characters should be done separately.
\(fn FROM TO &optional CODING-SYSTEM)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "qp" '("quoted-printable-")))
+
;;;***
-;;;### (autoloads nil "quail" "international/quail.el" (22388 6374
-;;;;;; 689170 883000))
+;;;### (autoloads nil "quail" "international/quail.el" (0 0 0 0))
;;; Generated autoloads from international/quail.el
(autoload 'quail-title "quail" "\
@@ -22657,10 +26172,20 @@ of each directory.
\(fn DIRNAME &rest DIRNAMES)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail" '("quail-")))
+
+;;;***
+
+;;;### (autoloads nil "quail/ethiopic" "leim/quail/ethiopic.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from leim/quail/ethiopic.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/ethiopic" '("ethio-select-a-translation")))
+
;;;***
-;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (22388
-;;;;;; 7510 443340 205000))
+;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from leim/quail/hangul.el
(autoload 'hangul-input-method-activate "quail/hangul" "\
@@ -22670,10 +26195,72 @@ HELP-TEXT is a text set in `hangul-input-method-help-text'.
\(fn INPUT-METHOD FUNC HELP-TEXT &rest ARGS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/hangul" '("hangul" "alphabetp" "notzerop")))
+
+;;;***
+
+;;;### (autoloads nil "quail/indian" "leim/quail/indian.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from leim/quail/indian.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/indian" '("inscript-" "quail-")))
+
+;;;***
+
+;;;### (autoloads nil "quail/ipa" "leim/quail/ipa.el" (0 0 0 0))
+;;; Generated autoloads from leim/quail/ipa.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/ipa" '("ipa-x-sampa-")))
+
+;;;***
+
+;;;### (autoloads nil "quail/japanese" "leim/quail/japanese.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from leim/quail/japanese.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/japanese" '("quail-japanese-")))
+
+;;;***
+
+;;;### (autoloads nil "quail/lao" "leim/quail/lao.el" (0 0 0 0))
+;;; Generated autoloads from leim/quail/lao.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/lao" '("lao-" "quail-lao-update-translation")))
+
+;;;***
+
+;;;### (autoloads nil "quail/lrt" "leim/quail/lrt.el" (0 0 0 0))
+;;; Generated autoloads from leim/quail/lrt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/lrt" '("quail-lrt-update-translation")))
+
+;;;***
+
+;;;### (autoloads nil "quail/sisheng" "leim/quail/sisheng.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from leim/quail/sisheng.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/sisheng" '("quail-make-sisheng-rules" "sisheng-")))
+
+;;;***
+
+;;;### (autoloads nil "quail/thai" "leim/quail/thai.el" (0 0 0 0))
+;;; Generated autoloads from leim/quail/thai.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/thai" '("thai-generate-quail-map")))
+
+;;;***
+
+;;;### (autoloads nil "quail/tibetan" "leim/quail/tibetan.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from leim/quail/tibetan.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/tibetan" '("quail-tib" "tibetan-")))
+
;;;***
;;;### (autoloads nil "quail/uni-input" "leim/quail/uni-input.el"
-;;;;;; (22388 7511 889354 425000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from leim/quail/uni-input.el
(autoload 'ucs-input-activate "quail/uni-input" "\
@@ -22685,10 +26272,18 @@ While this input method is active, the variable
\(fn &optional ARG)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/uni-input" '("ucs-input-")))
+
;;;***
-;;;### (autoloads nil "quickurl" "net/quickurl.el" (22388 6377 884202
-;;;;;; 303000))
+;;;### (autoloads nil "quail/viqr" "leim/quail/viqr.el" (0 0 0 0))
+;;; Generated autoloads from leim/quail/viqr.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quail/viqr" '("viet-quail-define-rules")))
+
+;;;***
+
+;;;### (autoloads nil "quickurl" "net/quickurl.el" (0 0 0 0))
;;; Generated autoloads from net/quickurl.el
(defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\
@@ -22757,9 +26352,19 @@ Display `quickurl-list' as a formatted list using `quickurl-list-mode'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "quickurl" '("quickurl-")))
+
+;;;***
+
+;;;### (autoloads nil "radix-tree" "emacs-lisp/radix-tree.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from emacs-lisp/radix-tree.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "radix-tree" '("radix-tree-")))
+
;;;***
-;;;### (autoloads nil "rcirc" "net/rcirc.el" (22388 6377 971203 159000))
+;;;### (autoloads nil "rcirc" "net/rcirc.el" (0 0 0 0))
;;; Generated autoloads from net/rcirc.el
(autoload 'rcirc "rcirc" "\
@@ -22776,7 +26381,7 @@ If ARG is non-nil, instead prompt for connection parameters.
(autoload 'rcirc-connect "rcirc" "\
-\(fn SERVER &optional PORT NICK USER-NAME FULL-NAME STARTUP-CHANNELS PASSWORD ENCRYPTION)" nil nil)
+\(fn SERVER &optional PORT NICK USER-NAME FULL-NAME STARTUP-CHANNELS PASSWORD ENCRYPTION SERVER-ALIAS)" nil nil)
(defvar rcirc-track-minor-mode nil "\
Non-nil if Rcirc-Track minor mode is enabled.
@@ -22796,10 +26401,12 @@ if ARG is omitted or nil.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rcirc" '("rcirc-" "defun-rcirc-command" "set-rcirc-" "with-rcirc-")))
+
;;;***
-;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (22388
-;;;;;; 6369 628121 111000))
+;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from emacs-lisp/re-builder.el
(defalias 'regexp-builder 're-builder)
@@ -22815,9 +26422,11 @@ matching parts of the target buffer will be highlighted.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "re-builder" '("reb-" "re-builder-unload-function")))
+
;;;***
-;;;### (autoloads nil "recentf" "recentf.el" (22388 5708 102615 486000))
+;;;### (autoloads nil "recentf" "recentf.el" (0 0 0 0))
;;; Generated autoloads from recentf.el
(defvar recentf-mode nil "\
@@ -22842,9 +26451,11 @@ were operated on recently.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "recentf" '("recentf-")))
+
;;;***
-;;;### (autoloads nil "rect" "rect.el" (22420 38537 290424 639000))
+;;;### (autoloads nil "rect" "rect.el" (0 0 0 0))
;;; Generated autoloads from rect.el
(autoload 'delete-rectangle "rect" "\
@@ -22885,7 +26496,7 @@ With a prefix (or a FILL) argument, also fill lines where nothing has to be
deleted.
If the buffer is read-only, Emacs will beep and refrain from deleting
-the rectangle, but put it in `killed-rectangle' anyway. This means that
+the rectangle, but put it in the kill ring anyway. This means that
you can use this command to copy text from a read-only buffer.
\(If the variable `kill-read-only-ok' is non-nil, then this won't
even beep.)
@@ -22982,10 +26593,25 @@ Activates the region if needed. Only lasts until the region is deactivated.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rect" '("rectangle-" "clear-rectangle-line" "spaces-string" "string-rectangle-" "delete-" "ope" "killed-rectangle" "extract-rectangle-" "apply-on-rectangle")))
+
;;;***
-;;;### (autoloads nil "refill" "textmodes/refill.el" (22388 6389
-;;;;;; 566317 189000))
+;;;### (autoloads nil "refbib" "textmodes/refbib.el" (0 0 0 0))
+;;; Generated autoloads from textmodes/refbib.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "refbib" '("r2b-")))
+
+;;;***
+
+;;;### (autoloads nil "refer" "textmodes/refer.el" (0 0 0 0))
+;;; Generated autoloads from textmodes/refer.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "refer" '("refer-")))
+
+;;;***
+
+;;;### (autoloads nil "refill" "textmodes/refill.el" (0 0 0 0))
;;; Generated autoloads from textmodes/refill.el
(autoload 'refill-mode "refill" "\
@@ -23003,10 +26629,11 @@ For true \"word wrap\" behavior, use `visual-line-mode' instead.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "refill" '("refill-")))
+
;;;***
-;;;### (autoloads nil "reftex" "textmodes/reftex.el" (22388 6389
-;;;;;; 951320 975000))
+;;;### (autoloads nil "reftex" "textmodes/reftex.el" (0 0 0 0))
;;; Generated autoloads from textmodes/reftex.el
(autoload 'reftex-citation "reftex-cite" nil t)
(autoload 'reftex-all-document-files "reftex-parse")
@@ -23057,20 +26684,96 @@ This enforces rescanning the buffer on next use.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex" '("reftex-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "reftex-auc" "textmodes/reftex-auc.el"
+;;;;;; (22164 57535 811192 607000))
+;;; Generated autoloads from textmodes/reftex-auc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex-auc" '("reftex-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "reftex-cite"
+;;;;;; "textmodes/reftex-cite.el" (22164 57535 811192 607000))
+;;; Generated autoloads from textmodes/reftex-cite.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex-cite" '("reftex-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "reftex-dcr" "textmodes/reftex-dcr.el"
+;;;;;; (22164 57535 811192 607000))
+;;; Generated autoloads from textmodes/reftex-dcr.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex-dcr" '("reftex-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "reftex-global"
+;;;;;; "textmodes/reftex-global.el" (22164 57535 811192 607000))
+;;; Generated autoloads from textmodes/reftex-global.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex-global" '("reftex-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "reftex-index"
+;;;;;; "textmodes/reftex-index.el" (22164 57535 811192 607000))
+;;; Generated autoloads from textmodes/reftex-index.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex-index" '("reftex-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "reftex-parse"
+;;;;;; "textmodes/reftex-parse.el" (22164 57535 811192 607000))
+;;; Generated autoloads from textmodes/reftex-parse.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex-parse" '("reftex-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "reftex-ref" "textmodes/reftex-ref.el"
+;;;;;; (22189 60739 277741 19000))
+;;; Generated autoloads from textmodes/reftex-ref.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex-ref" '("reftex-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "reftex-sel" "textmodes/reftex-sel.el"
+;;;;;; (22164 57535 815192 607000))
+;;; Generated autoloads from textmodes/reftex-sel.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex-sel" '("reftex-")))
+
;;;***
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (22388
-;;;;;; 6389 866320 139000))
+;;;### (autoloads "actual autoloads are elsewhere" "reftex-toc" "textmodes/reftex-toc.el"
+;;;;;; (22164 57535 815192 607000))
+;;; Generated autoloads from textmodes/reftex-toc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex-toc" '("reftex-")))
+
+;;;***
+
+;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from textmodes/reftex-vars.el
(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
(put 'reftex-level-indent 'safe-local-variable 'integerp)
(put 'reftex-guess-label-type 'safe-local-variable (lambda (x) (memq x '(nil t))))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reftex-vars" '("reftex-")))
+
;;;***
-;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (22388
-;;;;;; 6369 632121 150000))
+;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (0
+;;;;;; 0 0 0))
;;; Generated autoloads from emacs-lisp/regexp-opt.el
(autoload 'regexp-opt "regexp-opt" "\
@@ -23097,17 +26800,26 @@ This means the number of non-shy regexp grouping constructs
\(fn REGEXP)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "regexp-opt" '("regexp-opt-")))
+
;;;***
-;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (22388 6369 632121
-;;;;;; 150000))
+;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/regi.el
(push (purecopy '(regi 1 8)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "regi" '("regi-")))
+
+;;;***
+
+;;;### (autoloads nil "registry" "registry.el" (0 0 0 0))
+;;; Generated autoloads from registry.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "registry" '("registry-")))
+
;;;***
-;;;### (autoloads nil "remember" "textmodes/remember.el" (22388 6389
-;;;;;; 996321 418000))
+;;;### (autoloads nil "remember" "textmodes/remember.el" (0 0 0 0))
;;; Generated autoloads from textmodes/remember.el
(push (purecopy '(remember 2 0)) package--builtin-versions)
@@ -23159,9 +26871,11 @@ to turn the *scratch* buffer into your notes buffer.
\(fn &optional SWITCH-TO)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "remember" '("remember-")))
+
;;;***
-;;;### (autoloads nil "repeat" "repeat.el" (22388 5708 226616 706000))
+;;;### (autoloads nil "repeat" "repeat.el" (0 0 0 0))
;;; Generated autoloads from repeat.el
(push (purecopy '(repeat 0 51)) package--builtin-versions)
@@ -23182,10 +26896,11 @@ recently executed command not bound to an input event\".
\(fn REPEAT-ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "repeat" '("repeat-")))
+
;;;***
-;;;### (autoloads nil "reporter" "mail/reporter.el" (22388 6375 640180
-;;;;;; 235000))
+;;;### (autoloads nil "reporter" "mail/reporter.el" (0 0 0 0))
;;; Generated autoloads from mail/reporter.el
(autoload 'reporter-submit-bug-report "reporter" "\
@@ -23214,10 +26929,11 @@ mail-sending package is used for editing and sending the message.
\(fn ADDRESS PKGNAME VARLIST &optional PRE-HOOKS POST-HOOKS SALUTATION)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reporter" '("reporter-")))
+
;;;***
-;;;### (autoloads nil "reposition" "reposition.el" (22388 5708 409618
-;;;;;; 505000))
+;;;### (autoloads nil "reposition" "reposition.el" (0 0 0 0))
;;; Generated autoloads from reposition.el
(autoload 'reposition-window "reposition" "\
@@ -23241,9 +26957,11 @@ first comment line visible (if point is in a comment).
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reposition" '("repos-count-screen-lines")))
+
;;;***
-;;;### (autoloads nil "reveal" "reveal.el" (22388 5708 409618 505000))
+;;;### (autoloads nil "reveal" "reveal.el" (0 0 0 0))
;;; Generated autoloads from reveal.el
(autoload 'reveal-mode "reveal" "\
@@ -23277,10 +26995,61 @@ the mode if ARG is omitted or nil.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "reveal" '("reveal-")))
+
;;;***
-;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (22388 6369 634121
-;;;;;; 170000))
+;;;### (autoloads nil "rfc1843" "international/rfc1843.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from international/rfc1843.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rfc1843" '("rfc1843-")))
+
+;;;***
+
+;;;### (autoloads nil "rfc2045" "mail/rfc2045.el" (0 0 0 0))
+;;; Generated autoloads from mail/rfc2045.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rfc2045" '("rfc2045-encode-string")))
+
+;;;***
+
+;;;### (autoloads nil "rfc2047" "mail/rfc2047.el" (0 0 0 0))
+;;; Generated autoloads from mail/rfc2047.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rfc2047" '("rfc2047-")))
+
+;;;***
+
+;;;### (autoloads nil "rfc2104" "net/rfc2104.el" (0 0 0 0))
+;;; Generated autoloads from net/rfc2104.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rfc2104" '("rfc2104-")))
+
+;;;***
+
+;;;### (autoloads nil "rfc2231" "mail/rfc2231.el" (0 0 0 0))
+;;; Generated autoloads from mail/rfc2231.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rfc2231" '("rfc2231-")))
+
+;;;***
+
+;;;### (autoloads nil "rfc2368" "mail/rfc2368.el" (0 0 0 0))
+;;; Generated autoloads from mail/rfc2368.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rfc2368" '("rfc2368-")))
+
+;;;***
+
+;;;### (autoloads nil "rfc822" "mail/rfc822.el" (0 0 0 0))
+;;; Generated autoloads from mail/rfc822.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rfc822" '("rfc822-")))
+
+;;;***
+
+;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/ring.el
(autoload 'ring-p "ring" "\
@@ -23293,10 +27062,11 @@ Make a ring that can contain SIZE elements.
\(fn SIZE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ring" '("ring-")))
+
;;;***
-;;;### (autoloads nil "rlogin" "net/rlogin.el" (22388 6377 978203
-;;;;;; 228000))
+;;;### (autoloads nil "rlogin" "net/rlogin.el" (0 0 0 0))
;;; Generated autoloads from net/rlogin.el
(autoload 'rlogin "rlogin" "\
@@ -23338,10 +27108,11 @@ variable.
\(fn INPUT-ARGS &optional BUFFER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rlogin" '("rlogin-")))
+
;;;***
-;;;### (autoloads nil "rmail" "mail/rmail.el" (22388 6375 722181
-;;;;;; 42000))
+;;;### (autoloads nil "rmail" "mail/rmail.el" (0 0 0 0))
;;; Generated autoloads from mail/rmail.el
(defvar rmail-file-name (purecopy "~/RMAIL") "\
@@ -23349,9 +27120,9 @@ Name of user's primary mail file.")
(custom-autoload 'rmail-file-name "rmail" t)
-(put 'rmail-spool-directory 'standard-value '((cond ((file-exists-p "/var/mail") "/var/mail/") ((file-exists-p "/var/spool/mail") "/var/spool/mail/") ((memq system-type '(hpux usg-unix-v irix)) "/usr/mail/") (t "/usr/spool/mail/"))))
+(put 'rmail-spool-directory 'standard-value '((cond ((file-exists-p "/var/mail") "/var/mail/") ((file-exists-p "/var/spool/mail") "/var/spool/mail/") ((memq system-type '(hpux usg-unix-v)) "/usr/mail/") (t "/usr/spool/mail/"))))
-(defvar rmail-spool-directory (purecopy (cond ((file-exists-p "/var/mail") "/var/mail/") ((file-exists-p "/var/spool/mail") "/var/spool/mail/") ((memq system-type '(hpux usg-unix-v irix)) "/usr/mail/") (t "/usr/spool/mail/"))) "\
+(defvar rmail-spool-directory (purecopy (cond ((file-exists-p "/var/mail") "/var/mail/") ((file-exists-p "/var/spool/mail") "/var/spool/mail/") ((memq system-type '(hpux usg-unix-v)) "/usr/mail/") (t "/usr/spool/mail/"))) "\
Name of directory used by system mailer for delivering new mail.
Its name should end with a slash.")
@@ -23536,10 +27307,43 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server.
\(fn PASSWORD)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rmail" '("rmail-" "mail-")))
+
+;;;***
+
+;;;### (autoloads nil "rmail-spam-filter" "mail/rmail-spam-filter.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from mail/rmail-spam-filter.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rmail-spam-filter" '("rmail-" "rsf-")))
+
;;;***
-;;;### (autoloads nil "rmailout" "mail/rmailout.el" (22388 6375 836182
-;;;;;; 163000))
+;;;### (autoloads "actual autoloads are elsewhere" "rmailedit" "mail/rmailedit.el"
+;;;;;; (22164 57534 831192 607000))
+;;; Generated autoloads from mail/rmailedit.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rmailedit" '("rmail-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "rmailkwd" "mail/rmailkwd.el"
+;;;;;; (22164 57534 831192 607000))
+;;; Generated autoloads from mail/rmailkwd.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rmailkwd" '("rmail-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "rmailmm" "mail/rmailmm.el"
+;;;;;; (22164 57534 831192 607000))
+;;; Generated autoloads from mail/rmailmm.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rmailmm" '("rmail-")))
+
+;;;***
+
+;;;### (autoloads nil "rmailout" "mail/rmailout.el" (0 0 0 0))
;;; Generated autoloads from mail/rmailout.el
(put 'rmail-output-file-alist 'risky-local-variable t)
@@ -23601,10 +27405,27 @@ than appending to it. Deletes the message after writing if
\(fn FILE-NAME)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rmailout" '("rmail-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "rmailsort" "mail/rmailsort.el"
+;;;;;; (22164 57534 831192 607000))
+;;; Generated autoloads from mail/rmailsort.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rmailsort" '("rmail-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "rmailsum" "mail/rmailsum.el"
+;;;;;; (22164 57534 835192 607000))
+;;; Generated autoloads from mail/rmailsum.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rmailsum" '("rmail-")))
+
;;;***
-;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (22388 6379
-;;;;;; 311216 337000))
+;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (0 0 0 0))
;;; Generated autoloads from nxml/rng-cmpct.el
(autoload 'rng-c-load-schema "rng-cmpct" "\
@@ -23613,10 +27434,39 @@ Return a pattern.
\(fn FILENAME)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-cmpct" '("rng-")))
+
+;;;***
+
+;;;### (autoloads nil "rng-dt" "nxml/rng-dt.el" (0 0 0 0))
+;;; Generated autoloads from nxml/rng-dt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-dt" '("rng-dt-")))
+
+;;;***
+
+;;;### (autoloads nil "rng-loc" "nxml/rng-loc.el" (0 0 0 0))
+;;; Generated autoloads from nxml/rng-loc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-loc" '("rng-")))
+
+;;;***
+
+;;;### (autoloads nil "rng-maint" "nxml/rng-maint.el" (0 0 0 0))
+;;; Generated autoloads from nxml/rng-maint.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-maint" '("rng-")))
+
+;;;***
+
+;;;### (autoloads nil "rng-match" "nxml/rng-match.el" (0 0 0 0))
+;;; Generated autoloads from nxml/rng-match.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-match" '("rng-")))
+
;;;***
-;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (22388 6379 395217
-;;;;;; 163000))
+;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (0 0 0 0))
;;; Generated autoloads from nxml/rng-nxml.el
(autoload 'rng-nxml-mode-init "rng-nxml" "\
@@ -23626,10 +27476,39 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-nxml" '("rng-")))
+
+;;;***
+
+;;;### (autoloads nil "rng-parse" "nxml/rng-parse.el" (0 0 0 0))
+;;; Generated autoloads from nxml/rng-parse.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-parse" '("rng-parse-")))
+
+;;;***
+
+;;;### (autoloads nil "rng-pttrn" "nxml/rng-pttrn.el" (0 0 0 0))
+;;; Generated autoloads from nxml/rng-pttrn.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-pttrn" '("rng-")))
+
+;;;***
+
+;;;### (autoloads nil "rng-uri" "nxml/rng-uri.el" (0 0 0 0))
+;;; Generated autoloads from nxml/rng-uri.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-uri" '("rng-")))
+
+;;;***
+
+;;;### (autoloads nil "rng-util" "nxml/rng-util.el" (0 0 0 0))
+;;; Generated autoloads from nxml/rng-util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-util" '("rng-")))
+
;;;***
-;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (22388 6379
-;;;;;; 440217 606000))
+;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (0 0 0 0))
;;; Generated autoloads from nxml/rng-valid.el
(autoload 'rng-validate-mode "rng-valid" "\
@@ -23657,22 +27536,23 @@ to use for finding the schema.
\(fn &optional ARG NO-CHANGE-SCHEMA)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-valid" '("rng-")))
+
;;;***
-;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (22388 6379 480217
-;;;;;; 999000))
+;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (0 0 0 0))
;;; Generated autoloads from nxml/rng-xsd.el
-(put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 'rng-xsd-compile)
+(put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile #'rng-xsd-compile)
(autoload 'rng-xsd-compile "rng-xsd" "\
Provides W3C XML Schema as a RELAX NG datatypes library.
NAME is a symbol giving the local name of the datatype. PARAMS is a
list of pairs (PARAM-NAME . PARAM-VALUE) where PARAM-NAME is a symbol
giving the name of the parameter and PARAM-VALUE is a string giving
-its value. If NAME or PARAMS are invalid, it calls rng-dt-error
+its value. If NAME or PARAMS are invalid, it calls `rng-dt-error'
passing it arguments in the same style as format; the value from
-rng-dt-error will be returned. Otherwise, it returns a list. The
+`rng-dt-error' will be returned. Otherwise, it returns a list. The
first member of the list is t if any string is a legal value for the
datatype and nil otherwise. The second argument is a symbol; this
symbol will be called as a function passing it a string followed by
@@ -23685,10 +27565,11 @@ must be equal.
\(fn NAME PARAMS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rng-xsd" '("rng-xsd-" "xsd-duration-reference-dates")))
+
;;;***
-;;;### (autoloads nil "robin" "international/robin.el" (22388 6374
-;;;;;; 714171 129000))
+;;;### (autoloads nil "robin" "international/robin.el" (0 0 0 0))
;;; Generated autoloads from international/robin.el
(autoload 'robin-define-package "robin" "\
@@ -23718,9 +27599,11 @@ Start using robin package NAME, which is a string.
\(fn NAME)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "robin" '("robin-")))
+
;;;***
-;;;### (autoloads nil "rot13" "rot13.el" (22388 5708 410618 514000))
+;;;### (autoloads nil "rot13" "rot13.el" (0 0 0 0))
;;; Generated autoloads from rot13.el
(autoload 'rot13 "rot13" "\
@@ -23755,10 +27638,11 @@ Toggle the use of ROT13 encoding for the current window.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rot13" '("rot13-")))
+
;;;***
-;;;### (autoloads nil "rst" "textmodes/rst.el" (22388 6390 44321
-;;;;;; 890000))
+;;;### (autoloads nil "rst" "textmodes/rst.el" (0 0 0 0))
;;; Generated autoloads from textmodes/rst.el
(add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode)))
@@ -23786,10 +27670,19 @@ for modes derived from Text mode, like Mail mode.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rst" '("rst-")))
+
;;;***
-;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (22388
-;;;;;; 6387 729299 124000))
+;;;### (autoloads nil "rtree" "rtree.el" (0 0 0 0))
+;;; Generated autoloads from rtree.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rtree" '("rtree-")))
+
+;;;***
+
+;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from progmodes/ruby-mode.el
(push (purecopy '(ruby-mode 1 2)) package--builtin-versions)
@@ -23804,10 +27697,11 @@ Major mode for editing Ruby code.
(dolist (name (list "ruby" "rbx" "jruby" "ruby1.9" "ruby1.8")) (add-to-list 'interpreter-mode-alist (cons (purecopy name) 'ruby-mode)))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ruby-mode" '("ruby-")))
+
;;;***
-;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (22388 5708 411618
-;;;;;; 524000))
+;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (0 0 0 0))
;;; Generated autoloads from ruler-mode.el
(push (purecopy '(ruler-mode 1 6)) package--builtin-versions)
@@ -23823,10 +27717,11 @@ if ARG is omitted or nil.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ruler-mode" '("ruler-")))
+
;;;***
-;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (22388 6369 650121
-;;;;;; 327000))
+;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/rx.el
(autoload 'rx-to-string "rx" "\
@@ -24135,17 +28030,48 @@ enclosed in `(and ...)'.
\(fn &rest REGEXPS)" nil t)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rx" '("rx-")))
+
+;;;***
+
+;;;### (autoloads nil "sasl" "net/sasl.el" (0 0 0 0))
+;;; Generated autoloads from net/sasl.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sasl" '("sasl-")))
+
+;;;***
+
+;;;### (autoloads nil "sasl-cram" "net/sasl-cram.el" (0 0 0 0))
+;;; Generated autoloads from net/sasl-cram.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sasl-cram" '("sasl-cram-md5-")))
+
+;;;***
+
+;;;### (autoloads nil "sasl-digest" "net/sasl-digest.el" (0 0 0 0))
+;;; Generated autoloads from net/sasl-digest.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sasl-digest" '("sasl-digest-md5-")))
+
;;;***
-;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (22388 6378
-;;;;;; 9203 533000))
+;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (0 0 0 0))
;;; Generated autoloads from net/sasl-ntlm.el
(push (purecopy '(sasl 1 0)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sasl-ntlm" '("sasl-ntlm-")))
+
;;;***
-;;;### (autoloads nil "savehist" "savehist.el" (22388 5708 411618
-;;;;;; 524000))
+;;;### (autoloads nil "sasl-scram-rfc" "net/sasl-scram-rfc.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from net/sasl-scram-rfc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sasl-scram-rfc" '("sasl-scram-")))
+
+;;;***
+
+;;;### (autoloads nil "savehist" "savehist.el" (0 0 0 0))
;;; Generated autoloads from savehist.el
(push (purecopy '(savehist 24)) package--builtin-versions)
@@ -24176,10 +28102,11 @@ histories, which is probably undesirable.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "savehist" '("savehist-")))
+
;;;***
-;;;### (autoloads nil "saveplace" "saveplace.el" (22388 5708 453618
-;;;;;; 938000))
+;;;### (autoloads nil "saveplace" "saveplace.el" (0 0 0 0))
;;; Generated autoloads from saveplace.el
(defvar save-place-mode nil "\
@@ -24215,10 +28142,18 @@ file:
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "saveplace" '("save-place" "load-save-place-alist-from-file")))
+
;;;***
-;;;### (autoloads nil "scheme" "progmodes/scheme.el" (22388 6387
-;;;;;; 746299 291000))
+;;;### (autoloads nil "sb-image" "sb-image.el" (0 0 0 0))
+;;; Generated autoloads from sb-image.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sb-image" '("speedbar-" "defimage-speedbar")))
+
+;;;***
+
+;;;### (autoloads nil "scheme" "progmodes/scheme.el" (0 0 0 0))
;;; Generated autoloads from progmodes/scheme.el
(autoload 'scheme-mode "scheme" "\
@@ -24255,10 +28190,11 @@ that variable's value is a string.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "scheme" '("scheme-" "dsssl-")))
+
;;;***
-;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (22388 6374
-;;;;;; 162165 700000))
+;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (0 0 0 0))
;;; Generated autoloads from gnus/score-mode.el
(autoload 'gnus-score-mode "score-mode" "\
@@ -24269,10 +28205,11 @@ This mode is an extended emacs-lisp mode.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "score-mode" '("gnus-score-" "score-mode-")))
+
;;;***
-;;;### (autoloads nil "scroll-all" "scroll-all.el" (22388 5708 454618
-;;;;;; 948000))
+;;;### (autoloads nil "scroll-all" "scroll-all.el" (0 0 0 0))
;;; Generated autoloads from scroll-all.el
(defvar scroll-all-mode nil "\
@@ -24296,10 +28233,18 @@ one window apply to all visible windows in the same frame.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "scroll-all" '("scroll-all-")))
+
+;;;***
+
+;;;### (autoloads nil "scroll-bar" "scroll-bar.el" (0 0 0 0))
+;;; Generated autoloads from scroll-bar.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "scroll-bar" '("set-scroll-bar-mode" "scroll-bar-" "toggle-" "horizontal-scroll-bar" "get-scroll-bar-mode" "previous-scroll-bar-mode")))
+
;;;***
-;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (22388 5708
-;;;;;; 509619 488000))
+;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (0 0 0 0))
;;; Generated autoloads from scroll-lock.el
(autoload 'scroll-lock-mode "scroll-lock" "\
@@ -24313,18 +28258,20 @@ vertically fixed relative to window boundaries during scrolling.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "scroll-lock" '("scroll-lock-")))
+
;;;***
-;;;### (autoloads nil "secrets" "net/secrets.el" (22388 6378 21203
-;;;;;; 651000))
+;;;### (autoloads nil "secrets" "net/secrets.el" (0 0 0 0))
;;; Generated autoloads from net/secrets.el
(when (featurep 'dbusbind)
(autoload 'secrets-show-secrets "secrets" nil t))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "secrets" '("secrets-")))
+
;;;***
-;;;### (autoloads nil "semantic" "cedet/semantic.el" (22388 6368
-;;;;;; 485109 870000))
+;;;### (autoloads nil "semantic" "cedet/semantic.el" (0 0 0 0))
;;; Generated autoloads from cedet/semantic.el
(push (purecopy '(semantic 2 2)) package--builtin-versions)
@@ -24380,10 +28327,93 @@ Semantic mode.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic" '("semantic-" "bovinate")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/analyze"
+;;;;;; "cedet/semantic/analyze.el" (22164 57533 947192 607000))
+;;; Generated autoloads from cedet/semantic/analyze.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/analyze" '("semantic-a")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/analyze/complete"
+;;;;;; "cedet/semantic/analyze/complete.el" (22164 57533 947192
+;;;;;; 607000))
+;;; Generated autoloads from cedet/semantic/analyze/complete.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/analyze/complete" '("semantic-analyze-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/analyze/debug" "cedet/semantic/analyze/debug.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/analyze/debug.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/analyze/debug" '("semantic-analyze")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/analyze/fcn" "cedet/semantic/analyze/fcn.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/analyze/fcn.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/analyze/fcn" '("semantic-analyze-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/analyze/refs"
+;;;;;; "cedet/semantic/analyze/refs.el" (22164 57533 947192 607000))
+;;; Generated autoloads from cedet/semantic/analyze/refs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/analyze/refs" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/bovine"
+;;;;;; "cedet/semantic/bovine.el" (22164 57533 947192 607000))
+;;; Generated autoloads from cedet/semantic/bovine.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/bovine" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/bovine/c"
+;;;;;; "cedet/semantic/bovine/c.el" (22362 1462 517419 679000))
+;;; Generated autoloads from cedet/semantic/bovine/c.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/bovine/c" '("semantic" "c++-mode" "c-mode")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/bovine/debug" "cedet/semantic/bovine/debug.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/bovine/debug.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/bovine/debug" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/bovine/el"
+;;;;;; "cedet/semantic/bovine/el.el" (22362 16472 646303 103000))
+;;; Generated autoloads from cedet/semantic/bovine/el.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/bovine/el" '("lisp-mode" "emacs-lisp-mode" "semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/bovine/gcc"
+;;;;;; "cedet/semantic/bovine/gcc.el" (22164 57533 951192 607000))
+;;; Generated autoloads from cedet/semantic/bovine/gcc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/bovine/gcc" '("semantic-")))
+
;;;***
;;;### (autoloads nil "semantic/bovine/grammar" "cedet/semantic/bovine/grammar.el"
-;;;;;; (22388 11492 220498 203000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from cedet/semantic/bovine/grammar.el
(autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\
@@ -24391,10 +28421,476 @@ Major mode for editing Bovine grammars.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/bovine/grammar" '("bovine-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/bovine/make"
+;;;;;; "cedet/semantic/bovine/make.el" (22164 57533 951192 607000))
+;;; Generated autoloads from cedet/semantic/bovine/make.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/bovine/make" '("semantic-" "makefile-mode")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/bovine/scm"
+;;;;;; "cedet/semantic/bovine/scm.el" (22164 57533 951192 607000))
+;;; Generated autoloads from cedet/semantic/bovine/scm.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/bovine/scm" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/chart" "cedet/semantic/chart.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/chart.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/chart" '("semantic-chart-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/complete"
+;;;;;; "cedet/semantic/complete.el" (22362 1462 529419 679000))
+;;; Generated autoloads from cedet/semantic/complete.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/complete" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/ctxt"
+;;;;;; "cedet/semantic/ctxt.el" (22164 57533 951192 607000))
+;;; Generated autoloads from cedet/semantic/ctxt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/ctxt" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/db"
+;;;;;; "cedet/semantic/db.el" (22362 1462 533419 679000))
+;;; Generated autoloads from cedet/semantic/db.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db" '("semanticdb-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/db-debug" "cedet/semantic/db-debug.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/db-debug.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db-debug" '("semanticdb-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/db-ebrowse" "cedet/semantic/db-ebrowse.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/db-ebrowse.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db-ebrowse" '("semanticdb-" "c++-mode")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/db-el" "cedet/semantic/db-el.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/db-el.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db-el" '("semanticdb-" "emacs-lisp-mode")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/db-file"
+;;;;;; "cedet/semantic/db-file.el" (22220 16330 615423 271000))
+;;; Generated autoloads from cedet/semantic/db-file.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db-file" '("semanticdb-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/db-find"
+;;;;;; "cedet/semantic/db-find.el" (22402 8370 54777 743000))
+;;; Generated autoloads from cedet/semantic/db-find.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db-find" '("semanticdb-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/db-global"
+;;;;;; "cedet/semantic/db-global.el" (22164 57533 955192 607000))
+;;; Generated autoloads from cedet/semantic/db-global.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db-global" '("semanticdb-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/db-javascript" "cedet/semantic/db-javascript.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/db-javascript.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db-javascript" '("semanticdb-" "javascript-mode")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/db-mode"
+;;;;;; "cedet/semantic/db-mode.el" (22220 16330 615423 271000))
+;;; Generated autoloads from cedet/semantic/db-mode.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db-mode" '("semanticdb-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/db-ref" "cedet/semantic/db-ref.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/db-ref.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db-ref" '("semanticdb-ref-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/db-typecache"
+;;;;;; "cedet/semantic/db-typecache.el" (22164 57533 955192 607000))
+;;; Generated autoloads from cedet/semantic/db-typecache.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/db-typecache" '("semanticdb-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/debug"
+;;;;;; "cedet/semantic/debug.el" (22164 57533 955192 607000))
+;;; Generated autoloads from cedet/semantic/debug.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/debug" '("semantic-debug-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/decorate" "cedet/semantic/decorate.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/decorate.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/decorate" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/decorate/include"
+;;;;;; "cedet/semantic/decorate/include.el" (22362 1462 541419 679000))
+;;; Generated autoloads from cedet/semantic/decorate/include.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/decorate/include" '("semantic-decoration-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/decorate/mode"
+;;;;;; "cedet/semantic/decorate/mode.el" (22362 1462 545419 679000))
+;;; Generated autoloads from cedet/semantic/decorate/mode.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/decorate/mode" '("semantic-" "define-semantic-decoration-style")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/dep"
+;;;;;; "cedet/semantic/dep.el" (22164 57533 955192 607000))
+;;; Generated autoloads from cedet/semantic/dep.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/dep" '("semantic-" "defcustom-mode-local-semantic-dependency-system-include-path")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/doc"
+;;;;;; "cedet/semantic/doc.el" (22164 57533 955192 607000))
+;;; Generated autoloads from cedet/semantic/doc.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/doc" '("semantic-doc")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/ede-grammar" "cedet/semantic/ede-grammar.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/ede-grammar.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/ede-grammar" '("semantic-ede-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/edit"
+;;;;;; "cedet/semantic/edit.el" (22164 57533 955192 607000))
+;;; Generated autoloads from cedet/semantic/edit.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/edit" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/find"
+;;;;;; "cedet/semantic/find.el" (22164 57533 959192 607000))
+;;; Generated autoloads from cedet/semantic/find.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/find" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/format"
+;;;;;; "cedet/semantic/format.el" (22362 1462 553419 679000))
+;;; Generated autoloads from cedet/semantic/format.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/format" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/fw" "cedet/semantic/fw.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from cedet/semantic/fw.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/fw" '("semantic")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/grammar" "cedet/semantic/grammar.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/grammar.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/grammar" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/grammar-wy" "cedet/semantic/grammar-wy.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/grammar-wy.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/grammar-wy" '("semantic-grammar-wy--")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/html"
+;;;;;; "cedet/semantic/html.el" (22164 57533 971192 607000))
+;;; Generated autoloads from cedet/semantic/html.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/html" '("html-helper-mode" "semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/ia"
+;;;;;; "cedet/semantic/ia.el" (22362 1462 561419 679000))
+;;; Generated autoloads from cedet/semantic/ia.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/ia" '("semantic-ia-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/ia-sb"
+;;;;;; "cedet/semantic/ia-sb.el" (22164 57533 971192 607000))
+;;; Generated autoloads from cedet/semantic/ia-sb.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/ia-sb" '("semantic-ia-s")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/idle"
+;;;;;; "cedet/semantic/idle.el" (22362 1462 569419 679000))
+;;; Generated autoloads from cedet/semantic/idle.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/idle" '("semantic-" "global-semantic-idle-summary-mode" "define-semantic-idle-service")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/imenu"
+;;;;;; "cedet/semantic/imenu.el" (22362 1462 573419 679000))
+;;; Generated autoloads from cedet/semantic/imenu.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/imenu" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/java" "cedet/semantic/java.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from cedet/semantic/java.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/java" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/lex"
+;;;;;; "cedet/semantic/lex.el" (22362 16472 670303 103000))
+;;; Generated autoloads from cedet/semantic/lex.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/lex" '("semantic-" "define-lex")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/lex-spp"
+;;;;;; "cedet/semantic/lex-spp.el" (22362 16472 662303 103000))
+;;; Generated autoloads from cedet/semantic/lex-spp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/lex-spp" '("semantic-lex-" "define-lex-spp-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/mru-bookmark"
+;;;;;; "cedet/semantic/mru-bookmark.el" (22362 1462 593419 679000))
+;;; Generated autoloads from cedet/semantic/mru-bookmark.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/mru-bookmark" '("semantic-" "global-semantic-mru-bookmark-mode")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/sb" "cedet/semantic/sb.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from cedet/semantic/sb.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/sb" '("semantic-sb-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/scope"
+;;;;;; "cedet/semantic/scope.el" (22164 57533 983192 607000))
+;;; Generated autoloads from cedet/semantic/scope.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/scope" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/senator"
+;;;;;; "cedet/semantic/senator.el" (22189 60738 73741 19000))
+;;; Generated autoloads from cedet/semantic/senator.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/senator" '("semantic-up-reference" "senator-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/sort"
+;;;;;; "cedet/semantic/sort.el" (22164 57533 983192 607000))
+;;; Generated autoloads from cedet/semantic/sort.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/sort" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/symref"
+;;;;;; "cedet/semantic/symref.el" (22362 16472 682303 103000))
+;;; Generated autoloads from cedet/semantic/symref.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/symref" '("semantic-symref-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/symref/cscope"
+;;;;;; "cedet/semantic/symref/cscope.el" (22294 1450 520812 63000))
+;;; Generated autoloads from cedet/semantic/symref/cscope.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/symref/cscope" '("semantic-symref-cscope--line-re")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/symref/filter" "cedet/semantic/symref/filter.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/symref/filter.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/symref/filter" '("semantic-symref-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/symref/global"
+;;;;;; "cedet/semantic/symref/global.el" (22294 1450 536812 63000))
+;;; Generated autoloads from cedet/semantic/symref/global.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/symref/global" '("semantic-symref-global--line-re")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/symref/grep"
+;;;;;; "cedet/semantic/symref/grep.el" (22402 8370 66777 743000))
+;;; Generated autoloads from cedet/semantic/symref/grep.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/symref/grep" '("semantic-symref-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/symref/idutils"
+;;;;;; "cedet/semantic/symref/idutils.el" (22294 1450 612812 63000))
+;;; Generated autoloads from cedet/semantic/symref/idutils.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/symref/idutils" '("semantic-symref-idutils--line-re")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/symref/list"
+;;;;;; "cedet/semantic/symref/list.el" (22164 57533 987192 607000))
+;;; Generated autoloads from cedet/semantic/symref/list.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/symref/list" '("semantic-symref-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/tag"
+;;;;;; "cedet/semantic/tag.el" (22164 57533 991192 607000))
+;;; Generated autoloads from cedet/semantic/tag.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/tag" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/tag-file"
+;;;;;; "cedet/semantic/tag-file.el" (22164 57533 987192 607000))
+;;; Generated autoloads from cedet/semantic/tag-file.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/tag-file" '("semantic-prototype-file")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/tag-ls"
+;;;;;; "cedet/semantic/tag-ls.el" (22164 57533 991192 607000))
+;;; Generated autoloads from cedet/semantic/tag-ls.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/tag-ls" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/tag-write"
+;;;;;; "cedet/semantic/tag-write.el" (22164 57533 991192 607000))
+;;; Generated autoloads from cedet/semantic/tag-write.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/tag-write" '("semantic-tag-write-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/texi"
+;;;;;; "cedet/semantic/texi.el" (22257 7109 253189 216000))
+;;; Generated autoloads from cedet/semantic/texi.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/texi" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/util" "cedet/semantic/util.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from cedet/semantic/util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/util" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/util-modes"
+;;;;;; "cedet/semantic/util-modes.el" (22164 57534 3192 607000))
+;;; Generated autoloads from cedet/semantic/util-modes.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/util-modes" '("semantic-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/wisent" "cedet/semantic/wisent.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/wisent.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/wisent" '("wisent-" "define-wisent-lexer")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/wisent/comp" "cedet/semantic/wisent/comp.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/wisent/comp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/wisent/comp" '("wisent-")))
+
;;;***
;;;### (autoloads nil "semantic/wisent/grammar" "cedet/semantic/wisent/grammar.el"
-;;;;;; (22388 11492 494500 898000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from cedet/semantic/wisent/grammar.el
(autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\
@@ -24402,10 +28898,43 @@ Major mode for editing Wisent grammars.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/wisent/grammar" '("wisent-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/wisent/java-tags"
+;;;;;; "cedet/semantic/wisent/java-tags.el" (22164 57534 7192 607000))
+;;; Generated autoloads from cedet/semantic/wisent/java-tags.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/wisent/java-tags" '("semantic-" "wisent-java-parse-error")))
+
;;;***
-;;;### (autoloads nil "sendmail" "mail/sendmail.el" (22388 6375 932183
-;;;;;; 107000))
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/wisent/javascript"
+;;;;;; "cedet/semantic/wisent/javascript.el" (22164 57534 7192 607000))
+;;; Generated autoloads from cedet/semantic/wisent/javascript.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/wisent/javascript" '("js-mode" "semantic-" "wisent-javascript-jv-expand-tag")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "semantic/wisent/python"
+;;;;;; "cedet/semantic/wisent/python.el" (22164 57534 7192 607000))
+;;; Generated autoloads from cedet/semantic/wisent/python.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/wisent/python" '("wisent-python-" "semantic-" "python-")))
+
+;;;***
+
+;;;### (autoloads nil "semantic/wisent/wisent" "cedet/semantic/wisent/wisent.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/semantic/wisent/wisent.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "semantic/wisent/wisent" '("wisent-" "$region" "$nterm" "$action")))
+
+;;;***
+
+;;;### (autoloads nil "sendmail" "mail/sendmail.el" (0 0 0 0))
;;; Generated autoloads from mail/sendmail.el
(defvar mail-from-style 'default "\
@@ -24684,16 +29213,19 @@ Like `mail' command, but display mail buffer in another frame.
\(fn &optional NOERASE TO SUBJECT IN-REPLY-TO CC REPLYBUFFER SENDACTIONS)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sendmail" '("mail-" "sendmail-")))
+
;;;***
-;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (22388 6369 666121
-;;;;;; 485000))
+;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/seq.el
-(push (purecopy '(seq 2 3)) package--builtin-versions)
+(push (purecopy '(seq 2 18)) package--builtin-versions)
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "seq" '("seq-")))
;;;***
-;;;### (autoloads nil "server" "server.el" (22388 5708 590620 286000))
+;;;### (autoloads nil "server" "server.el" (0 0 0 0))
;;; Generated autoloads from server.el
(put 'server-host 'risky-local-variable t)
@@ -24702,6 +29234,13 @@ Like `mail' command, but display mail buffer in another frame.
(put 'server-auth-dir 'risky-local-variable t)
+(defvar server-name "server" "\
+The name of the Emacs server, if this Emacs process creates one.
+The command `server-start' makes use of this. It should not be
+changed while a server is running.")
+
+(custom-autoload 'server-name "server" t)
+
(autoload 'server-start "server" "\
Allow this Emacs process to be a server for client processes.
This starts a server communications subprocess through which client
@@ -24759,9 +29298,11 @@ only these files will be asked to be saved.
\(fn ARG)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "server" '("server-")))
+
;;;***
-;;;### (autoloads nil "ses" "ses.el" (22388 5708 753621 888000))
+;;;### (autoloads nil "ses" "ses.el" (0 0 0 0))
;;; Generated autoloads from ses.el
(autoload 'ses-mode "ses" "\
@@ -24803,10 +29344,12 @@ formula:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ses" '("ses" "noreturn" "1value")))
+
;;;***
-;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (22388
-;;;;;; 6390 132322 756000))
+;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from textmodes/sgml-mode.el
(autoload 'sgml-mode "sgml-mode" "\
@@ -24869,10 +29412,12 @@ To work around that, do:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sgml-mode" '("html-" "sgml-")))
+
;;;***
-;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (22420
-;;;;;; 38537 290424 639000))
+;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from progmodes/sh-script.el
(push (purecopy '(sh-script 2 0 6)) package--builtin-versions)
(put 'sh-shell 'safe-local-variable 'symbolp)
@@ -24935,10 +29480,11 @@ with your script for an edit-interpret-debug cycle.
(defalias 'shell-script-mode 'sh-mode)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sh-script" '("sh-")))
+
;;;***
-;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (22388 6369
-;;;;;; 668121 504000))
+;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/shadow.el
(autoload 'list-load-path-shadows "shadow" "\
@@ -24985,10 +29531,11 @@ function, `load-path-shadows-find'.
\(fn &optional STRINGP)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "shadow" '("load-path-shadows-")))
+
;;;***
-;;;### (autoloads nil "shadowfile" "shadowfile.el" (22388 5708 840622
-;;;;;; 743000))
+;;;### (autoloads nil "shadowfile" "shadowfile.el" (0 0 0 0))
;;; Generated autoloads from shadowfile.el
(autoload 'shadow-define-cluster "shadowfile" "\
@@ -25024,9 +29571,11 @@ Set up file shadowing.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "shadowfile" '("shadow")))
+
;;;***
-;;;### (autoloads nil "shell" "shell.el" (22388 5708 884623 178000))
+;;;### (autoloads nil "shell" "shell.el" (0 0 0 0))
;;; Generated autoloads from shell.el
(defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\
@@ -25072,9 +29621,11 @@ Otherwise, one argument `-i' is passed to the shell.
\(fn &optional BUFFER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "shell" '("shell-" "dirs" "explicit-")))
+
;;;***
-;;;### (autoloads nil "shr" "net/shr.el" (22388 6378 63204 64000))
+;;;### (autoloads nil "shr" "net/shr.el" (0 0 0 0))
;;; Generated autoloads from net/shr.el
(autoload 'shr-render-region "shr" "\
@@ -25089,11 +29640,19 @@ DOM should be a parse tree as generated by
\(fn DOM)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "shr" '("shr-")))
+
+;;;***
+
+;;;### (autoloads nil "shr-color" "net/shr-color.el" (0 0 0 0))
+;;; Generated autoloads from net/shr-color.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "shr-color" '("shr-color-")))
+
;;;***
-;;;### (autoloads nil "sieve" "gnus/sieve.el" (22388 6374 179165
-;;;;;; 867000))
-;;; Generated autoloads from gnus/sieve.el
+;;;### (autoloads nil "sieve" "net/sieve.el" (0 0 0 0))
+;;; Generated autoloads from net/sieve.el
(autoload 'sieve-manage "sieve" "\
@@ -25115,11 +29674,20 @@ DOM should be a parse tree as generated by
\(fn &optional NAME)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sieve" '("sieve-")))
+
;;;***
-;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (22388 6374
-;;;;;; 173165 808000))
-;;; Generated autoloads from gnus/sieve-mode.el
+;;;### (autoloads nil "sieve-manage" "net/sieve-manage.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from net/sieve-manage.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sieve-manage" '("sieve-")))
+
+;;;***
+
+;;;### (autoloads nil "sieve-mode" "net/sieve-mode.el" (0 0 0 0))
+;;; Generated autoloads from net/sieve-mode.el
(autoload 'sieve-mode "sieve-mode" "\
Major mode for editing Sieve code.
@@ -25131,10 +29699,11 @@ Turning on Sieve mode runs `sieve-mode-hook'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sieve-mode" '("sieve-")))
+
;;;***
-;;;### (autoloads nil "simula" "progmodes/simula.el" (22388 6387
-;;;;;; 879300 598000))
+;;;### (autoloads nil "simula" "progmodes/simula.el" (0 0 0 0))
;;; Generated autoloads from progmodes/simula.el
(autoload 'simula-mode "simula" "\
@@ -25180,10 +29749,11 @@ with no arguments, if that value is non-nil.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "simula" '("simula-")))
+
;;;***
-;;;### (autoloads nil "skeleton" "skeleton.el" (22388 5709 330627
-;;;;;; 562000))
+;;;### (autoloads nil "skeleton" "skeleton.el" (0 0 0 0))
;;; Generated autoloads from skeleton.el
(defvar skeleton-filter-function 'identity "\
@@ -25300,18 +29870,19 @@ twice for the others.
\(fn ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "skeleton" '("skeleton-")))
+
;;;***
-;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (22388 6391
-;;;;;; 279334 35000))
+;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (0 0 0 0))
;;; Generated autoloads from vc/smerge-mode.el
(autoload 'smerge-ediff "smerge-mode" "\
Invoke ediff to resolve the conflicts.
-NAME-MINE, NAME-OTHER, and NAME-BASE, if non-nil, are used for the
+NAME-UPPER, NAME-LOWER, and NAME-BASE, if non-nil, are used for the
buffer names.
-\(fn &optional NAME-MINE NAME-OTHER NAME-BASE)" t nil)
+\(fn &optional NAME-UPPER NAME-LOWER NAME-BASE)" t nil)
(autoload 'smerge-mode "smerge-mode" "\
Minor mode to simplify editing output from the diff3 program.
@@ -25328,10 +29899,18 @@ If no conflict maker is found, turn off `smerge-mode'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "smerge-mode" '("smerge-")))
+
+;;;***
+
+;;;### (autoloads nil "smie" "emacs-lisp/smie.el" (0 0 0 0))
+;;; Generated autoloads from emacs-lisp/smie.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "smie" '("smie-")))
+
;;;***
-;;;### (autoloads nil "smiley" "gnus/smiley.el" (22388 6374 180165
-;;;;;; 877000))
+;;;### (autoloads nil "smiley" "gnus/smiley.el" (0 0 0 0))
;;; Generated autoloads from gnus/smiley.el
(autoload 'smiley-region "smiley" "\
@@ -25346,10 +29925,18 @@ interactively. If there's no argument, do it at the current buffer.
\(fn &optional BUFFER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "smiley" '("smiley-" "gnus-smiley-file-types")))
+
+;;;***
+
+;;;### (autoloads nil "smime" "gnus/smime.el" (0 0 0 0))
+;;; Generated autoloads from gnus/smime.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "smime" '("smime")))
+
;;;***
-;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (22388 6375 961183
-;;;;;; 392000))
+;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (0 0 0 0))
;;; Generated autoloads from mail/smtpmail.el
(autoload 'smtpmail-send-it "smtpmail" "\
@@ -25362,10 +29949,11 @@ Send mail that was queued as a result of setting `smtpmail-queue-mail'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "smtpmail" '("smtpmail-")))
+
;;;***
-;;;### (autoloads nil "snake" "play/snake.el" (22388 6383 455257
-;;;;;; 91000))
+;;;### (autoloads nil "snake" "play/snake.el" (0 0 0 0))
;;; Generated autoloads from play/snake.el
(autoload 'snake "snake" "\
@@ -25386,10 +29974,11 @@ Snake mode keybindings:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "snake" '("snake-")))
+
;;;***
-;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (22388 6378
-;;;;;; 107204 497000))
+;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (0 0 0 0))
;;; Generated autoloads from net/snmp-mode.el
(autoload 'snmp-mode "snmp-mode" "\
@@ -25416,17 +30005,34 @@ then `snmpv2-mode-hook'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "snmp-mode" '("snmp")))
+
;;;***
-;;;### (autoloads nil "soap-client" "net/soap-client.el" (22388 6378
-;;;;;; 185205 264000))
+;;;### (autoloads nil "soap-client" "net/soap-client.el" (0 0 0 0))
;;; Generated autoloads from net/soap-client.el
-(push (purecopy '(soap-client 3 0 2)) package--builtin-versions)
+(push (purecopy '(soap-client 3 1 1)) package--builtin-versions)
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "soap-client" '("soap-")))
+
+;;;***
+
+;;;### (autoloads nil "soap-inspect" "net/soap-inspect.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from net/soap-inspect.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "soap-inspect" '("soap-")))
+
+;;;***
+
+;;;### (autoloads nil "socks" "net/socks.el" (0 0 0 0))
+;;; Generated autoloads from net/socks.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "socks" '("socks-")))
;;;***
-;;;### (autoloads nil "solar" "calendar/solar.el" (22388 6368 219107
-;;;;;; 254000))
+;;;### (autoloads nil "solar" "calendar/solar.el" (0 0 0 0))
;;; Generated autoloads from calendar/solar.el
(autoload 'sunrise-sunset "solar" "\
@@ -25439,10 +30045,11 @@ This function is suitable for execution in an init file.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "solar" '("solar-" "diary-sunrise-sunset" "calendar-")))
+
;;;***
-;;;### (autoloads nil "solitaire" "play/solitaire.el" (22388 6383
-;;;;;; 455257 91000))
+;;;### (autoloads nil "solitaire" "play/solitaire.el" (0 0 0 0))
;;; Generated autoloads from play/solitaire.el
(autoload 'solitaire "solitaire" "\
@@ -25515,9 +30122,11 @@ Pick your favorite shortcuts:
\(fn ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "solitaire" '("solitaire-")))
+
;;;***
-;;;### (autoloads nil "sort" "sort.el" (22388 5709 370627 956000))
+;;;### (autoloads nil "sort" "sort.el" (0 0 0 0))
;;; Generated autoloads from sort.el
(put 'sort-fold-case 'safe-local-variable 'booleanp)
@@ -25690,9 +30299,18 @@ is non-nil, it also prints a message describing the number of deletions.
\(fn BEG END &optional REVERSE ADJACENT KEEP-BLANKS INTERACTIVE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sort" '("sort-")))
+
+;;;***
+
+;;;### (autoloads nil "soundex" "soundex.el" (0 0 0 0))
+;;; Generated autoloads from soundex.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "soundex" '("soundex")))
+
;;;***
-;;;### (autoloads nil "spam" "gnus/spam.el" (22388 6374 263166 693000))
+;;;### (autoloads nil "spam" "gnus/spam.el" (0 0 0 0))
;;; Generated autoloads from gnus/spam.el
(autoload 'spam-initialize "spam" "\
@@ -25704,10 +30322,12 @@ installed through `spam-necessary-extra-headers'.
\(fn &rest SYMBOLS)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "spam" '("spam-")))
+
;;;***
-;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (22388
-;;;;;; 6374 182165 897000))
+;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from gnus/spam-report.el
(autoload 'spam-report-process-queue "spam-report" "\
@@ -25747,10 +30367,25 @@ Spam reports will be queued with the method used when
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "spam-report" '("spam-report-")))
+
+;;;***
+
+;;;### (autoloads nil "spam-stat" "gnus/spam-stat.el" (0 0 0 0))
+;;; Generated autoloads from gnus/spam-stat.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "spam-stat" '("spam-stat" "with-spam-stat-max-buffer-size")))
+
;;;***
-;;;### (autoloads nil "speedbar" "speedbar.el" (22388 5709 449628
-;;;;;; 733000))
+;;;### (autoloads nil "spam-wash" "gnus/spam-wash.el" (0 0 0 0))
+;;; Generated autoloads from gnus/spam-wash.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "spam-wash" '("spam-")))
+
+;;;***
+
+;;;### (autoloads nil "speedbar" "speedbar.el" (0 0 0 0))
;;; Generated autoloads from speedbar.el
(defalias 'speedbar 'speedbar-frame-mode)
@@ -25772,10 +30407,11 @@ selected. If the speedbar frame is active, then select the attached frame.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "speedbar" '("speedbar-")))
+
;;;***
-;;;### (autoloads nil "spook" "play/spook.el" (22388 6383 458257
-;;;;;; 120000))
+;;;### (autoloads nil "spook" "play/spook.el" (0 0 0 0))
;;; Generated autoloads from play/spook.el
(autoload 'spook "spook" "\
@@ -25788,10 +30424,11 @@ Return a vector containing the lines from `spook-phrases-file'.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "spook" '("spook-phrase")))
+
;;;***
-;;;### (autoloads nil "sql" "progmodes/sql.el" (22388 6387 963301
-;;;;;; 424000))
+;;;### (autoloads nil "sql" "progmodes/sql.el" (0 0 0 0))
;;; Generated autoloads from progmodes/sql.el
(push (purecopy '(sql 3 5)) package--builtin-versions)
@@ -26255,17 +30892,164 @@ Run vsql as an inferior process.
\(fn &optional BUFFER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "sql" '("sql-")))
+
;;;***
-;;;### (autoloads nil "srecode" "cedet/srecode.el" (22388 6368 506110
-;;;;;; 77000))
+;;;### (autoloads nil "srecode" "cedet/srecode.el" (0 0 0 0))
;;; Generated autoloads from cedet/srecode.el
(push (purecopy '(srecode 1 2)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode" '("srecode-version")))
+
+;;;***
+
+;;;### (autoloads nil "srecode/args" "cedet/srecode/args.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from cedet/srecode/args.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/args" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/compile"
+;;;;;; "cedet/srecode/compile.el" (22164 57534 7192 607000))
+;;; Generated autoloads from cedet/srecode/compile.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/compile" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/cpp"
+;;;;;; "cedet/srecode/cpp.el" (22164 57534 7192 607000))
+;;; Generated autoloads from cedet/srecode/cpp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/cpp" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads nil "srecode/ctxt" "cedet/srecode/ctxt.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from cedet/srecode/ctxt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/ctxt" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads nil "srecode/dictionary" "cedet/srecode/dictionary.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/srecode/dictionary.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/dictionary" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/document"
+;;;;;; "cedet/srecode/document.el" (22164 57534 11192 607000))
+;;; Generated autoloads from cedet/srecode/document.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/document" '("srecode-document-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/el" "cedet/srecode/el.el"
+;;;;;; (22164 57534 11192 607000))
+;;; Generated autoloads from cedet/srecode/el.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/el" '("srecode-semantic-apply-tag-to-dict")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/expandproto"
+;;;;;; "cedet/srecode/expandproto.el" (22164 57534 11192 607000))
+;;; Generated autoloads from cedet/srecode/expandproto.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/expandproto" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads nil "srecode/extract" "cedet/srecode/extract.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/srecode/extract.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/extract" '("srecode-extract")))
+
+;;;***
+
+;;;### (autoloads nil "srecode/fields" "cedet/srecode/fields.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/srecode/fields.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/fields" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads nil "srecode/filters" "cedet/srecode/filters.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/srecode/filters.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/filters" '("srecode-comment-prefix")))
+
+;;;***
+
+;;;### (autoloads nil "srecode/find" "cedet/srecode/find.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from cedet/srecode/find.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/find" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/getset"
+;;;;;; "cedet/srecode/getset.el" (22164 57534 15192 607000))
+;;; Generated autoloads from cedet/srecode/getset.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/getset" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/insert"
+;;;;;; "cedet/srecode/insert.el" (22328 19625 560549 735000))
+;;; Generated autoloads from cedet/srecode/insert.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/insert" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/map"
+;;;;;; "cedet/srecode/map.el" (22164 57534 15192 607000))
+;;; Generated autoloads from cedet/srecode/map.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/map" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/mode"
+;;;;;; "cedet/srecode/mode.el" (22164 57534 15192 607000))
+;;; Generated autoloads from cedet/srecode/mode.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/mode" '("srecode-")))
+
+;;;***
+
+;;;### (autoloads nil "srecode/semantic" "cedet/srecode/semantic.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from cedet/srecode/semantic.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/semantic" '("srecode-semantic-")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/srt"
+;;;;;; "cedet/srecode/srt.el" (22164 57534 19192 607000))
+;;; Generated autoloads from cedet/srecode/srt.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/srt" '("srecode-read-")))
+
;;;***
;;;### (autoloads nil "srecode/srt-mode" "cedet/srecode/srt-mode.el"
-;;;;;; (22388 7503 616273 65000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from cedet/srecode/srt-mode.el
(autoload 'srecode-template-mode "srecode/srt-mode" "\
@@ -26275,11 +31059,36 @@ Major-mode for writing SRecode macros.
(defalias 'srt-mode 'srecode-template-mode)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/srt-mode" '("semantic-" "srecode-")))
+
+;;;***
+
+;;;### (autoloads nil "srecode/table" "cedet/srecode/table.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from cedet/srecode/table.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/table" '("srecode-" "object-sort-list")))
+
+;;;***
+
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/template"
+;;;;;; "cedet/srecode/template.el" (22164 57534 19192 607000))
+;;; Generated autoloads from cedet/srecode/template.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/template" '("semantic-tag-components")))
+
;;;***
-;;;### (autoloads nil "starttls" "gnus/starttls.el" (22388 6374 269166
-;;;;;; 752000))
-;;; Generated autoloads from gnus/starttls.el
+;;;### (autoloads "actual autoloads are elsewhere" "srecode/texi"
+;;;;;; "cedet/srecode/texi.el" (22164 57534 19192 607000))
+;;; Generated autoloads from cedet/srecode/texi.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "srecode/texi" '("semantic-insert-foreign-tag" "srecode-texi-")))
+
+;;;***
+
+;;;### (autoloads nil "starttls" "net/starttls.el" (0 0 0 0))
+;;; Generated autoloads from net/starttls.el
(autoload 'starttls-open-stream "starttls" "\
Open a TLS connection for a port to a host.
@@ -26299,9 +31108,11 @@ GnuTLS requires a port number.
\(fn NAME BUFFER HOST PORT)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "starttls" '("starttls-")))
+
;;;***
-;;;### (autoloads nil "strokes" "strokes.el" (22388 5709 633630 542000))
+;;;### (autoloads nil "strokes" "strokes.el" (0 0 0 0))
;;; Generated autoloads from strokes.el
(autoload 'strokes-global-set-stroke "strokes" "\
@@ -26413,10 +31224,11 @@ Read a complex stroke and insert its glyph into the current buffer.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "strokes" '("strokes-")))
+
;;;***
-;;;### (autoloads nil "studly" "play/studly.el" (22388 6383 458257
-;;;;;; 120000))
+;;;### (autoloads nil "studly" "play/studly.el" (0 0 0 0))
;;; Generated autoloads from play/studly.el
(autoload 'studlify-region "studly" "\
@@ -26436,8 +31248,14 @@ Studlify-case the current buffer.
;;;***
-;;;### (autoloads nil "subword" "progmodes/subword.el" (22388 6388
-;;;;;; 3301 818000))
+;;;### (autoloads nil "subr-x" "emacs-lisp/subr-x.el" (0 0 0 0))
+;;; Generated autoloads from emacs-lisp/subr-x.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "subr-x" '("read-multiple-choice" "string-" "hash-table-" "when-let" "internal--" "if-let" "thread-")))
+
+;;;***
+
+;;;### (autoloads nil "subword" "progmodes/subword.el" (0 0 0 0))
;;; Generated autoloads from progmodes/subword.el
(define-obsolete-function-alias 'capitalized-words-mode 'subword-mode "25.1")
@@ -26529,10 +31347,11 @@ See `superword-mode' for more information on Superword mode.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "subword" '("superword-mode-map" "subword-")))
+
;;;***
-;;;### (autoloads nil "supercite" "mail/supercite.el" (22388 6376
-;;;;;; 4183 815000))
+;;;### (autoloads nil "supercite" "mail/supercite.el" (0 0 0 0))
;;; Generated autoloads from mail/supercite.el
(autoload 'sc-cite-original "supercite" "\
@@ -26562,9 +31381,18 @@ and `sc-post-hook' is run after the guts of this function.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "supercite" '("sc-")))
+
;;;***
-;;;### (autoloads nil "t-mouse" "t-mouse.el" (22388 5709 919633 355000))
+;;;### (autoloads nil "svg" "svg.el" (0 0 0 0))
+;;; Generated autoloads from svg.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "svg" '("svg-")))
+
+;;;***
+
+;;;### (autoloads nil "t-mouse" "t-mouse.el" (0 0 0 0))
;;; Generated autoloads from t-mouse.el
(define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
@@ -26595,9 +31423,11 @@ GPM. This is due to limitations in GPM and the Linux kernel.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "t-mouse" '("gpm-mouse-")))
+
;;;***
-;;;### (autoloads nil "tabify" "tabify.el" (22388 5709 919633 355000))
+;;;### (autoloads nil "tabify" "tabify.el" (0 0 0 0))
;;; Generated autoloads from tabify.el
(autoload 'untabify "tabify" "\
@@ -26624,10 +31454,11 @@ The variable `tab-width' controls the spacing of tab stops.
\(fn START END &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tabify" '("tabify-regexp")))
+
;;;***
-;;;### (autoloads nil "table" "textmodes/table.el" (22388 6390 235323
-;;;;;; 768000))
+;;;### (autoloads nil "table" "textmodes/table.el" (0 0 0 0))
;;; Generated autoloads from textmodes/table.el
(autoload 'table-insert "table" "\
@@ -27196,9 +32027,18 @@ converts a table into plain text without frames. It is a companion to
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "table" '("table-" "*table--")))
+
+;;;***
+
+;;;### (autoloads nil "tabulated-list" "emacs-lisp/tabulated-list.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from emacs-lisp/tabulated-list.el
+(push (purecopy '(tabulated-list 1 0)) package--builtin-versions)
+
;;;***
-;;;### (autoloads nil "talk" "talk.el" (22388 5709 921633 374000))
+;;;### (autoloads nil "talk" "talk.el" (0 0 0 0))
;;; Generated autoloads from talk.el
(autoload 'talk-connect "talk" "\
@@ -27211,10 +32051,11 @@ Connect to the Emacs talk group from the current X display or tty frame.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "talk" '("talk-")))
+
;;;***
-;;;### (autoloads nil "tar-mode" "tar-mode.el" (22388 5709 957633
-;;;;;; 728000))
+;;;### (autoloads nil "tar-mode" "tar-mode.el" (0 0 0 0))
;;; Generated autoloads from tar-mode.el
(autoload 'tar-mode "tar-mode" "\
@@ -27235,10 +32076,11 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tar-mode" '("tar-")))
+
;;;***
-;;;### (autoloads nil "tcl" "progmodes/tcl.el" (22388 6388 41302
-;;;;;; 191000))
+;;;### (autoloads nil "tcl" "progmodes/tcl.el" (0 0 0 0))
;;; Generated autoloads from progmodes/tcl.el
(autoload 'tcl-mode "tcl" "\
@@ -27284,10 +32126,27 @@ Prefix argument means invert sense of `tcl-use-smart-word-finder'.
\(fn COMMAND &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tcl" '("tcl-" "calculate-tcl-indent" "inferior-tcl-" "indent-tcl-exp" "add-log-tcl-defun" "run-tcl" "switch-to-tcl")))
+
+;;;***
+
+;;;### (autoloads nil "tcover-ses" "emacs-lisp/tcover-ses.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from emacs-lisp/tcover-ses.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tcover-ses" '("ses-exercise")))
+
+;;;***
+
+;;;### (autoloads nil "tcover-unsafep" "emacs-lisp/tcover-unsafep.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from emacs-lisp/tcover-unsafep.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tcover-unsafep" '("testcover-unsafep")))
+
;;;***
-;;;### (autoloads nil "telnet" "net/telnet.el" (22388 6378 270206
-;;;;;; 100000))
+;;;### (autoloads nil "telnet" "net/telnet.el" (0 0 0 0))
;;; Generated autoloads from net/telnet.el
(autoload 'telnet "telnet" "\
@@ -27310,9 +32169,18 @@ Normally input is edited in Emacs and sent a line at a time.
\(fn HOST)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "telnet" '("telnet-" "send-process-next-char")))
+
;;;***
-;;;### (autoloads nil "term" "term.el" (22420 38537 296424 698000))
+;;;### (autoloads nil "tempo" "tempo.el" (0 0 0 0))
+;;; Generated autoloads from tempo.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tempo" '("tempo-")))
+
+;;;***
+
+;;;### (autoloads nil "term" "term.el" (0 0 0 0))
;;; Generated autoloads from term.el
(autoload 'make-term "term" "\
@@ -27352,10 +32220,12 @@ use in that buffer.
\(fn PORT SPEED)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "term" '("serial-" "term-" "ansi-term-color-vector" "explicit-shell-file-name")))
+
;;;***
-;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (22388
-;;;;;; 6369 795122 753000))
+;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from emacs-lisp/testcover.el
(autoload 'testcover-this-defun "testcover" "\
@@ -27363,10 +32233,11 @@ Start coverage on function under point.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "testcover" '("testcover-")))
+
;;;***
-;;;### (autoloads nil "tetris" "play/tetris.el" (22388 6383 460257
-;;;;;; 140000))
+;;;### (autoloads nil "tetris" "play/tetris.el" (0 0 0 0))
;;; Generated autoloads from play/tetris.el
(push (purecopy '(tetris 2 1)) package--builtin-versions)
@@ -27389,10 +32260,11 @@ tetris-mode keybindings:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tetris" '("tetris-")))
+
;;;***
-;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (22388 6390
-;;;;;; 352324 919000))
+;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (0 0 0 0))
;;; Generated autoloads from textmodes/tex-mode.el
(defvar tex-shell-file-name nil "\
@@ -27691,10 +32563,11 @@ Major mode to edit DocTeX files.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tex-mode" '("tex-" "doctex-font-lock-" "latex-" "plain-tex-mode-map")))
+
;;;***
-;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (22388 6390
-;;;;;; 408325 469000))
+;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (0 0 0 0))
;;; Generated autoloads from textmodes/texinfmt.el
(autoload 'texinfo-format-buffer "texinfmt" "\
@@ -27731,10 +32604,11 @@ if large. You can use `Info-split' to do this manually.
\(fn &optional NOSPLIT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "texinfmt" '("batch-texinfo-format" "texinf")))
+
;;;***
-;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (22388 6390
-;;;;;; 440325 784000))
+;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (0 0 0 0))
;;; Generated autoloads from textmodes/texinfo.el
(defvar texinfo-open-quote (purecopy "``") "\
@@ -27816,10 +32690,20 @@ value of `texinfo-mode-hook'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "texinfo" '("texinfo-")))
+
+;;;***
+
+;;;### (autoloads nil "texnfo-upd" "textmodes/texnfo-upd.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from textmodes/texnfo-upd.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "texnfo-upd" '("texinfo-")))
+
;;;***
-;;;### (autoloads nil "thai-util" "language/thai-util.el" (22388
-;;;;;; 6375 384177 718000))
+;;;### (autoloads nil "thai-util" "language/thai-util.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from language/thai-util.el
(autoload 'thai-compose-region "thai-util" "\
@@ -27844,10 +32728,19 @@ Compose Thai characters in the current buffer.
\(fn GSTRING)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "thai-util" '("exit-thai-language-environment-internal" "setup-thai-language-environment-internal" "thai-")))
+
+;;;***
+
+;;;### (autoloads nil "thai-word" "language/thai-word.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from language/thai-word.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "thai-word" '("thai-")))
+
;;;***
-;;;### (autoloads nil "thingatpt" "thingatpt.el" (22388 5710 166635
-;;;;;; 784000))
+;;;### (autoloads nil "thingatpt" "thingatpt.el" (0 0 0 0))
;;; Generated autoloads from thingatpt.el
(autoload 'forward-thing "thingatpt" "\
@@ -27909,9 +32802,11 @@ Return the Lisp list at point, or nil if none is found.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "thingatpt" '("form-at-point" "thing-at-point-" "sentence-at-point" "word-at-point" "in-string-p" "end-of-thing" "beginning-of-thing")))
+
;;;***
-;;;### (autoloads nil "thumbs" "thumbs.el" (22388 5710 168635 803000))
+;;;### (autoloads nil "thumbs" "thumbs.el" (0 0 0 0))
;;; Generated autoloads from thumbs.el
(autoload 'thumbs-find-thumb "thumbs" "\
@@ -27943,17 +32838,20 @@ In dired, call the setroot program on the image at point.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "thumbs" '("thumbs-")))
+
;;;***
-;;;### (autoloads nil "thunk" "emacs-lisp/thunk.el" (22388 6369 797122
-;;;;;; 773000))
+;;;### (autoloads nil "thunk" "emacs-lisp/thunk.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/thunk.el
(push (purecopy '(thunk 1 0)) package--builtin-versions)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "thunk" '("thunk-")))
+
;;;***
-;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (22388
-;;;;;; 6375 464178 504000))
+;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from language/tibet-util.el
(autoload 'tibetan-char-p "tibet-util" "\
@@ -28024,10 +32922,11 @@ See also docstring of the function tibetan-compose-region.
\(fn FROM TO)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tibet-util" '("tibetan-")))
+
;;;***
-;;;### (autoloads nil "tildify" "textmodes/tildify.el" (22388 6390
-;;;;;; 524326 610000))
+;;;### (autoloads nil "tildify" "textmodes/tildify.el" (0 0 0 0))
;;; Generated autoloads from textmodes/tildify.el
(push (purecopy '(tildify 4 6 1)) package--builtin-versions)
@@ -28091,9 +32990,11 @@ variable will be set to the representation.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tildify" '("tildify-")))
+
;;;***
-;;;### (autoloads nil "time" "time.el" (22388 5710 254636 649000))
+;;;### (autoloads nil "time" "time.el" (0 0 0 0))
;;; Generated autoloads from time.el
(defvar display-time-day-and-date nil "\
@@ -28154,10 +33055,12 @@ Return a string giving the duration of the Emacs initialization.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "time" '("display-time-" "legacy-style-world-list" "zoneinfo-style-world-list")))
+
;;;***
-;;;### (autoloads nil "time-date" "calendar/time-date.el" (22388
-;;;;;; 6368 233107 392000))
+;;;### (autoloads nil "time-date" "calendar/time-date.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from calendar/time-date.el
(autoload 'date-to-time "time-date" "\
@@ -28165,11 +33068,8 @@ Parse a string DATE that represents a date-time and return a time value.
If DATE lacks timezone information, GMT is assumed.
\(fn DATE)" nil nil)
-(if (or (featurep 'emacs)
- (and (fboundp 'float-time)
- (subrp (symbol-function 'float-time))))
- (defalias 'time-to-seconds 'float-time)
- (autoload 'time-to-seconds "time-date"))
+
+(defalias 'time-to-seconds 'float-time)
(autoload 'seconds-to-time "time-date" "\
Convert SECONDS to a time value.
@@ -28187,10 +33087,7 @@ TIME should be either a time value or a date-time string.
\(fn TIME)" nil nil)
-(defalias 'subtract-time 'time-subtract)
-(autoload 'time-add "time-date")
-(autoload 'time-subtract "time-date")
-(autoload 'time-less-p "time-date")
+(define-obsolete-function-alias 'subtract-time 'time-subtract "25.2")
(autoload 'date-to-day "time-date" "\
Return the number of days between year 1 and DATE.
@@ -28258,10 +33155,11 @@ Convert the time interval in seconds to a short string.
\(fn DELAY)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "time-date" '("seconds-to-string" "time-" "encode-time-value" "with-decoded-time-value")))
+
;;;***
-;;;### (autoloads nil "time-stamp" "time-stamp.el" (22388 5710 209636
-;;;;;; 207000))
+;;;### (autoloads nil "time-stamp" "time-stamp.el" (0 0 0 0))
;;; Generated autoloads from time-stamp.el
(put 'time-stamp-format 'safe-local-variable 'stringp)
(put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p)
@@ -28299,10 +33197,12 @@ With ARG, turn time stamping on if and only if arg is positive.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "time-stamp" '("time-stamp-")))
+
;;;***
-;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (22388
-;;;;;; 6368 236107 422000))
+;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from calendar/timeclock.el
(push (purecopy '(timeclock 2 6 1)) package--builtin-versions)
@@ -28410,10 +33310,33 @@ relative only to the time worked today, and not to past time.
\(fn &optional SHOW-SECONDS TODAY-ONLY)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "timeclock" '("timeclock-")))
+
+;;;***
+
+;;;### (autoloads nil "timer-list" "emacs-lisp/timer-list.el" (0
+;;;;;; 0 0 0))
+;;; Generated autoloads from emacs-lisp/timer-list.el
+
+(autoload 'timer-list "timer-list" "\
+List all timers in a buffer.
+
+\(fn &optional IGNORE-AUTO NONCONFIRM)" t nil)
+ (put 'timer-list 'disabled "Beware: manually canceling timers can ruin your Emacs session.")
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "timer-list" '("timer-list-")))
+
+;;;***
+
+;;;### (autoloads nil "timezone" "timezone.el" (0 0 0 0))
+;;; Generated autoloads from timezone.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "timezone" '("timezone-")))
+
;;;***
;;;### (autoloads nil "titdic-cnv" "international/titdic-cnv.el"
-;;;;;; (22388 6374 736171 345000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from international/titdic-cnv.el
(autoload 'titdic-convert "titdic-cnv" "\
@@ -28433,9 +33356,18 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\".
\(fn &optional FORCE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "titdic-cnv" '("batch-miscdic-convert" "miscdic-convert" "ctlau-" "ziranma-converter" "py-converter" "quail-" "quick-" "tit-" "tsang-")))
+
+;;;***
+
+;;;### (autoloads nil "tls" "net/tls.el" (0 0 0 0))
+;;; Generated autoloads from net/tls.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tls" '("open-tls-stream" "tls-")))
+
;;;***
-;;;### (autoloads nil "tmm" "tmm.el" (22388 5710 257636 679000))
+;;;### (autoloads nil "tmm" "tmm.el" (0 0 0 0))
;;; Generated autoloads from tmm.el
(define-key global-map "\M-`" 'tmm-menubar)
(define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -28475,10 +33407,12 @@ Its value should be an event that has a binding in MENU.
\(fn MENU &optional IN-POPUP DEFAULT-ITEM)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tmm" '("tmm-")))
+
;;;***
-;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (22420
-;;;;;; 38537 264424 383000))
+;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from calendar/todo-mode.el
(autoload 'todo-show "todo-mode" "\
@@ -28541,10 +33475,11 @@ Mode for displaying and reprioritizing top priority Todo.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "todo-mode" '("todo-")))
+
;;;***
-;;;### (autoloads nil "tool-bar" "tool-bar.el" (22388 5710 258636
-;;;;;; 688000))
+;;;### (autoloads nil "tool-bar" "tool-bar.el" (0 0 0 0))
;;; Generated autoloads from tool-bar.el
(autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\
@@ -28612,10 +33547,18 @@ holds a keymap.
\(fn COMMAND ICON IN-MAP &optional FROM-MAP &rest PROPS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tool-bar" '("tool-bar-")))
+
+;;;***
+
+;;;### (autoloads nil "tooltip" "tooltip.el" (0 0 0 0))
+;;; Generated autoloads from tooltip.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tooltip" '("tooltip-")))
+
;;;***
-;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (22388 6369 799122
-;;;;;; 793000))
+;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/tq.el
(autoload 'tq-create "tq" "\
@@ -28626,10 +33569,11 @@ to a tcp server on another machine.
\(fn PROCESS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tq" '("tq-")))
+
;;;***
-;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (22388 6369 800122
-;;;;;; 802000))
+;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/trace.el
(defvar trace-buffer "*trace-output*" "\
@@ -28672,10 +33616,11 @@ the output buffer or changing the window configuration.
(defalias 'trace-function 'trace-function-foreground)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "trace" '("untrace-" "trace-" "inhibit-trace")))
+
;;;***
-;;;### (autoloads nil "tramp" "net/tramp.el" (22420 38537 288424
-;;;;;; 619000))
+;;;### (autoloads nil "tramp" "net/tramp.el" (0 0 0 0))
;;; Generated autoloads from net/tramp.el
(defvar tramp-mode t "\
@@ -28684,26 +33629,24 @@ If it is set to nil, all remote file names are used literally.")
(custom-autoload 'tramp-mode "tramp" t)
-(defvar tramp-syntax (if (featurep 'xemacs) 'sep 'ftp) "\
+(defvar tramp-syntax 'ftp "\
Tramp filename syntax to be used.
It can have the following values:
- `ftp' -- Ange-FTP respective EFS like syntax (GNU Emacs default)
- `sep' -- Syntax as defined for XEmacs.")
+ `ftp' -- Ange-FTP like syntax
+ `sep' -- Syntax as defined for XEmacs originally.")
(custom-autoload 'tramp-syntax "tramp" t)
(defconst tramp-file-name-regexp-unified (if (memq system-type '(cygwin windows-nt)) "\\`/\\(\\[.*\\]\\|[^/|:]\\{2,\\}[^/|]*\\):" "\\`/[^/|:][^/|]*:") "\
Value for `tramp-file-name-regexp' for unified remoting.
-Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and
-Tramp. See `tramp-file-name-structure' for more explanations.
+See `tramp-file-name-structure' for more explanations.
On W32 systems, the volume letter must be ignored.")
(defconst tramp-file-name-regexp-separate "\\`/\\[.*\\]" "\
Value for `tramp-file-name-regexp' for separate remoting.
-XEmacs uses a separate filename syntax for Tramp and EFS.
See `tramp-file-name-structure' for more explanations.")
(defconst tramp-file-name-regexp (cond ((equal tramp-syntax 'ftp) tramp-file-name-regexp-unified) ((equal tramp-syntax 'sep) tramp-file-name-regexp-separate) (t (error "Wrong `tramp-syntax' defined"))) "\
@@ -28724,14 +33667,12 @@ Also see `tramp-file-name-structure'.")
(defconst tramp-completion-file-name-regexp-unified (if (memq system-type '(cygwin windows-nt)) "\\`/[^/]\\{2,\\}\\'" "\\`/[^/]*\\'") "\
Value for `tramp-completion-file-name-regexp' for unified remoting.
-GNU Emacs uses a unified filename syntax for Tramp and Ange-FTP.
See `tramp-file-name-structure' for more explanations.
On W32 systems, the volume letter must be ignored.")
(defconst tramp-completion-file-name-regexp-separate "\\`/\\([[][^]]*\\)?\\'" "\
Value for `tramp-completion-file-name-regexp' for separate remoting.
-XEmacs uses a separate filename syntax for Tramp and EFS.
See `tramp-file-name-structure' for more explanations.")
(defconst tramp-completion-file-name-regexp (cond ((equal tramp-syntax 'ftp) tramp-completion-file-name-regexp-unified) ((equal tramp-syntax 'sep) tramp-completion-file-name-regexp-separate) (t (error "Wrong `tramp-syntax' defined"))) "\
@@ -28745,23 +33686,15 @@ updated after changing this variable.
Also see `tramp-file-name-structure'.")
-(defconst tramp-completion-file-name-handler-alist '((file-name-all-completions . tramp-completion-handle-file-name-all-completions) (file-name-completion . tramp-completion-handle-file-name-completion)) "\
-Alist of completion handler functions.
-Used for file names matching `tramp-file-name-regexp'. Operations
-not mentioned here will be handled by Tramp's file name handler
-functions, or the normal Emacs functions.")
-
(defun tramp-completion-run-real-handler (operation args) "\
Invoke `tramp-file-name-handler' for OPERATION.
First arg specifies the OPERATION, second arg is a list of arguments to
pass to the OPERATION." (let* ((inhibit-file-name-handlers (\` (tramp-completion-file-name-handler cygwin-mount-name-hook-function cygwin-mount-map-drive-hook-function \, (and (eq inhibit-file-name-operation operation) inhibit-file-name-handlers)))) (inhibit-file-name-operation operation)) (apply operation args)))
-
-(defun tramp-completion-file-name-handler (operation &rest args) "\
-Invoke Tramp file name completion handler.
-Falls back to normal file name handler if no Tramp file name handler exists." (let ((directory-sep-char 47) (fn (assoc operation tramp-completion-file-name-handler-alist))) (if (and fn tramp-mode (or (eq tramp-syntax (quote sep)) (featurep (quote tramp)) (and (boundp (quote partial-completion-mode)) (symbol-value (quote partial-completion-mode))) (featurep (quote ido)) (featurep (quote icicles)))) (save-match-data (apply (cdr fn) args)) (tramp-completion-run-real-handler operation args))))
+(defun tramp-completion-file-name-handler (operation &rest args)
+ (tramp-completion-run-real-handler operation args))
(defun tramp-autoload-file-name-handler (operation &rest args) "\
-Load Tramp file name handler, and perform OPERATION." (let ((default-directory "/")) (load "tramp" nil t)) (apply operation args))
+Load Tramp file name handler, and perform OPERATION." (let ((default-directory temporary-file-directory)) (load "tramp" nil t)) (apply operation args))
(defun tramp-register-autoload-file-name-handlers nil "\
Add Tramp file name handlers to `file-name-handler-alist' during autoload." (add-to-list (quote file-name-handler-alist) (cons tramp-file-name-regexp (quote tramp-autoload-file-name-handler))) (put (quote tramp-autoload-file-name-handler) (quote safe-magic) t) (add-to-list (quote file-name-handler-alist) (cons tramp-completion-file-name-regexp (quote tramp-completion-file-name-handler))) (put (quote tramp-completion-file-name-handler) (quote safe-magic) t))
@@ -28773,25 +33706,53 @@ Add Tramp file name handlers to `file-name-handler-alist' during autoload." (add
\(fn)" nil nil)
-(autoload 'tramp-completion-handle-file-name-all-completions "tramp" "\
-Like `file-name-all-completions' for partial Tramp files.
-
-\(fn FILENAME DIRECTORY)" nil nil)
-
-(autoload 'tramp-completion-handle-file-name-completion "tramp" "\
-Like `file-name-completion' for Tramp files.
+(defvar tramp-completion-mode nil "\
+If non-nil, external packages signal that they are in file name completion.
-\(fn FILENAME DIRECTORY &optional PREDICATE)" nil nil)
+This is necessary, because Tramp uses a heuristic depending on last
+input event. This fails when external packages use other characters
+but <TAB>, <SPACE> or ?\\? for file name completion. This variable
+should never be set globally, the intention is to let-bind it.")
(autoload 'tramp-unload-tramp "tramp" "\
Discard Tramp from loading remote files.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp" '("tramp-" "with-")))
+
;;;***
-;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (22388 6378
-;;;;;; 476208 126000))
+;;;### (autoloads nil "tramp-adb" "net/tramp-adb.el" (0 0 0 0))
+;;; Generated autoloads from net/tramp-adb.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp-adb" '("tramp-")))
+
+;;;***
+
+;;;### (autoloads nil "tramp-cache" "net/tramp-cache.el" (0 0 0 0))
+;;; Generated autoloads from net/tramp-cache.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp-cache" '("tramp-")))
+
+;;;***
+
+;;;### (autoloads nil "tramp-cmds" "net/tramp-cmds.el" (0 0 0 0))
+;;; Generated autoloads from net/tramp-cmds.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp-cmds" '("tramp-")))
+
+;;;***
+
+;;;### (autoloads nil "tramp-compat" "net/tramp-compat.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from net/tramp-compat.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp-compat" '("tramp-compat-")))
+
+;;;***
+
+;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (0 0 0 0))
;;; Generated autoloads from net/tramp-ftp.el
(autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\
@@ -28799,17 +33760,61 @@ Discard Tramp from loading remote files.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp-ftp" '("tramp-")))
+
+;;;***
+
+;;;### (autoloads nil "tramp-gvfs" "net/tramp-gvfs.el" (0 0 0 0))
+;;; Generated autoloads from net/tramp-gvfs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp-gvfs" '("tramp-" "with-tramp-dbus-call-method")))
+
+;;;***
+
+;;;### (autoloads nil "tramp-gw" "net/tramp-gw.el" (0 0 0 0))
+;;; Generated autoloads from net/tramp-gw.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp-gw" '("tramp-gw-" "socks-")))
+
;;;***
-;;;### (autoloads nil "trampver" "net/trampver.el" (22388 6379 102214
-;;;;;; 282000))
+;;;### (autoloads nil "tramp-sh" "net/tramp-sh.el" (0 0 0 0))
+;;; Generated autoloads from net/tramp-sh.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp-sh" '("tramp-")))
+
+;;;***
+
+;;;### (autoloads nil "tramp-smb" "net/tramp-smb.el" (0 0 0 0))
+;;; Generated autoloads from net/tramp-smb.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp-smb" '("tramp-smb-")))
+
+;;;***
+
+;;;### (autoloads nil "tramp-uu" "net/tramp-uu.el" (0 0 0 0))
+;;; Generated autoloads from net/tramp-uu.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tramp-uu" '("tramp-uu")))
+
+;;;***
+
+;;;### (autoloads nil "trampver" "net/trampver.el" (0 0 0 0))
;;; Generated autoloads from net/trampver.el
-(push (purecopy '(tramp 2 2 13 25 1)) package--builtin-versions)
+(push (purecopy '(tramp 2 3 1 -1)) package--builtin-versions)
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "trampver" '("tramp-")))
;;;***
-;;;### (autoloads nil "tutorial" "tutorial.el" (22388 5710 354637
-;;;;;; 632000))
+;;;### (autoloads nil "tree-widget" "tree-widget.el" (0 0 0 0))
+;;; Generated autoloads from tree-widget.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tree-widget" '("tree-widget-")))
+
+;;;***
+
+;;;### (autoloads nil "tutorial" "tutorial.el" (0 0 0 0))
;;; Generated autoloads from tutorial.el
(autoload 'help-with-tutorial "tutorial" "\
@@ -28831,10 +33836,11 @@ resumed later.
\(fn &optional ARG DONT-ASK-FOR-REVERT)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tutorial" '("get-lang-string" "lang-strings" "tutorial--")))
+
;;;***
-;;;### (autoloads nil "tv-util" "language/tv-util.el" (22388 6375
-;;;;;; 465178 514000))
+;;;### (autoloads nil "tv-util" "language/tv-util.el" (0 0 0 0))
;;; Generated autoloads from language/tv-util.el
(autoload 'tai-viet-composition-function "tv-util" "\
@@ -28842,10 +33848,12 @@ resumed later.
\(fn FROM TO FONT-OBJECT STRING)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "tv-util" '("tai-viet-")))
+
;;;***
-;;;### (autoloads nil "two-column" "textmodes/two-column.el" (22388
-;;;;;; 6390 530326 669000))
+;;;### (autoloads nil "two-column" "textmodes/two-column.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from textmodes/two-column.el
(autoload '2C-command "two-column" () t 'keymap)
(global-set-key "\C-x6" '2C-command)
@@ -28890,10 +33898,11 @@ First column's text sSs Second column's text
\(fn ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "two-column" '("2C-")))
+
;;;***
-;;;### (autoloads nil "type-break" "type-break.el" (22388 5710 396638
-;;;;;; 46000))
+;;;### (autoloads nil "type-break" "type-break.el" (0 0 0 0))
;;; Generated autoloads from type-break.el
(defvar type-break-mode nil "\
@@ -29024,9 +34033,11 @@ FRAC should be the inverse of the fractional value; for example, a value of
\(fn WPM &optional WORDLEN FRAC)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "type-break" '("timep" "type-break-")))
+
;;;***
-;;;### (autoloads nil "uce" "mail/uce.el" (22388 6376 94184 700000))
+;;;### (autoloads nil "uce" "mail/uce.el" (0 0 0 0))
;;; Generated autoloads from mail/uce.el
(autoload 'uce-reply-to-uce "uce" "\
@@ -29037,10 +34048,12 @@ You might need to set `uce-mail-reader' before using this.
\(fn &optional IGNORED)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "uce" '("uce-")))
+
;;;***
;;;### (autoloads nil "ucs-normalize" "international/ucs-normalize.el"
-;;;;;; (22388 6374 751171 492000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from international/ucs-normalize.el
(autoload 'ucs-normalize-NFD-region "ucs-normalize" "\
@@ -29103,10 +34116,12 @@ Normalize the string STR by the Unicode NFC and Mac OS's HFS Plus.
\(fn STR)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ucs-normalize" '("ucs-normalize-" "utf-8-hfs")))
+
;;;***
-;;;### (autoloads nil "underline" "textmodes/underline.el" (22388
-;;;;;; 6390 530326 669000))
+;;;### (autoloads nil "underline" "textmodes/underline.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from textmodes/underline.el
(autoload 'underline-region "underline" "\
@@ -29126,8 +34141,15 @@ which specify the range to operate on.
;;;***
-;;;### (autoloads nil "unrmail" "mail/unrmail.el" (22388 6376 95184
-;;;;;; 710000))
+;;;### (autoloads "actual autoloads are elsewhere" "undigest" "mail/undigest.el"
+;;;;;; (22164 57534 843192 607000))
+;;; Generated autoloads from mail/undigest.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "undigest" '("rmail-")))
+
+;;;***
+
+;;;### (autoloads nil "unrmail" "mail/unrmail.el" (0 0 0 0))
;;; Generated autoloads from mail/unrmail.el
(autoload 'batch-unrmail "unrmail" "\
@@ -29145,10 +34167,11 @@ The variable `unrmail-mbox-format' controls which mbox format to use.
\(fn FILE TO-FILE)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "unrmail" '("unrmail-mbox-format")))
+
;;;***
-;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (22388 6369
-;;;;;; 802122 822000))
+;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (0 0 0 0))
;;; Generated autoloads from emacs-lisp/unsafep.el
(autoload 'unsafep "unsafep" "\
@@ -29158,9 +34181,11 @@ UNSAFEP-VARS is a list of symbols with local bindings.
\(fn FORM &optional UNSAFEP-VARS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "unsafep" '("unsafep-" "safe-functions")))
+
;;;***
-;;;### (autoloads nil "url" "url/url.el" (22388 6390 706328 400000))
+;;;### (autoloads nil "url" "url/url.el" (0 0 0 0))
;;; Generated autoloads from url/url.el
(autoload 'url-retrieve "url" "\
@@ -29202,16 +34227,26 @@ Retrieve URL synchronously.
Return the buffer containing the data, or nil if there are no data
associated with it (the case for dired, info, or mailto URLs that need
no further processing). URL is either a string or a parsed URL.
-If SILENT is non-nil, don't display progress reports and similar messages.
-If INHIBIT-COOKIES is non-nil, cookies will neither be stored nor sent
-to the server.
-\(fn URL &optional SILENT INHIBIT-COOKIES)" nil nil)
+If SILENT is non-nil, don't do any messaging while retrieving.
+If INHIBIT-COOKIES is non-nil, refuse to store cookies. If
+TIMEOUT is passed, it should be a number that says (in seconds)
+how long to wait for a response before giving up.
+
+\(fn URL &optional SILENT INHIBIT-COOKIES TIMEOUT)" nil nil)
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url" '("url-")))
+
+;;;***
+
+;;;### (autoloads nil "url-about" "url/url-about.el" (0 0 0 0))
+;;; Generated autoloads from url/url-about.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-about" '("url-")))
;;;***
-;;;### (autoloads nil "url-auth" "url/url-auth.el" (22388 6390 576327
-;;;;;; 121000))
+;;;### (autoloads nil "url-auth" "url/url-auth.el" (0 0 0 0))
;;; Generated autoloads from url/url-auth.el
(autoload 'url-get-authentication "url-auth" "\
@@ -29250,10 +34285,11 @@ RATING a rating between 1 and 10 of the strength of the authentication.
\(fn TYPE &optional FUNCTION RATING)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-auth" '("url-")))
+
;;;***
-;;;### (autoloads nil "url-cache" "url/url-cache.el" (22388 6390
-;;;;;; 578327 141000))
+;;;### (autoloads nil "url-cache" "url/url-cache.el" (0 0 0 0))
;;; Generated autoloads from url/url-cache.el
(autoload 'url-store-in-cache "url-cache" "\
@@ -29272,10 +34308,11 @@ Extract FNAM from the local disk cache.
\(fn FNAM)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-cache" '("url-")))
+
;;;***
-;;;### (autoloads nil "url-cid" "url/url-cid.el" (22388 6390 578327
-;;;;;; 141000))
+;;;### (autoloads nil "url-cid" "url/url-cid.el" (0 0 0 0))
;;; Generated autoloads from url/url-cid.el
(autoload 'url-cid "url-cid" "\
@@ -29283,10 +34320,18 @@ Extract FNAM from the local disk cache.
\(fn URL)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-cid" '("url-cid-gnus")))
+
+;;;***
+
+;;;### (autoloads nil "url-cookie" "url/url-cookie.el" (0 0 0 0))
+;;; Generated autoloads from url/url-cookie.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-cookie" '("url-cookie")))
+
;;;***
-;;;### (autoloads nil "url-dav" "url/url-dav.el" (22388 6390 581327
-;;;;;; 171000))
+;;;### (autoloads nil "url-dav" "url/url-dav.el" (0 0 0 0))
;;; Generated autoloads from url/url-dav.el
(autoload 'url-dav-supported-p "url-dav" "\
@@ -29318,10 +34363,32 @@ added to this list, so most requests can just pass in nil.
\(fn URL)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-dav" '("url-")))
+
+;;;***
+
+;;;### (autoloads nil "url-dired" "url/url-dired.el" (0 0 0 0))
+;;; Generated autoloads from url/url-dired.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-dired" '("url-")))
+
+;;;***
+
+;;;### (autoloads nil "url-domsuf" "url/url-domsuf.el" (0 0 0 0))
+;;; Generated autoloads from url/url-domsuf.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-domsuf" '("url-domsuf-")))
+
+;;;***
+
+;;;### (autoloads nil "url-expand" "url/url-expand.el" (0 0 0 0))
+;;; Generated autoloads from url/url-expand.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-expand" '("url-")))
+
;;;***
-;;;### (autoloads nil "url-file" "url/url-file.el" (22388 6390 611327
-;;;;;; 466000))
+;;;### (autoloads nil "url-file" "url/url-file.el" (0 0 0 0))
;;; Generated autoloads from url/url-file.el
(autoload 'url-file "url-file" "\
@@ -29329,10 +34396,25 @@ Handle file: and ftp: URLs.
\(fn URL CALLBACK CBARGS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-file" '("url-file-")))
+
+;;;***
+
+;;;### (autoloads nil "url-ftp" "url/url-ftp.el" (0 0 0 0))
+;;; Generated autoloads from url/url-ftp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-ftp" '("url-ftp")))
+
;;;***
-;;;### (autoloads nil "url-gw" "url/url-gw.el" (22388 6390 617327
-;;;;;; 525000))
+;;;### (autoloads nil "url-future" "url/url-future.el" (0 0 0 0))
+;;; Generated autoloads from url/url-future.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-future" '("url-future-")))
+
+;;;***
+
+;;;### (autoloads nil "url-gw" "url/url-gw.el" (0 0 0 0))
;;; Generated autoloads from url/url-gw.el
(autoload 'url-gateway-nslookup-host "url-gw" "\
@@ -29351,10 +34433,12 @@ overriding the value of `url-gateway-method'.
\(fn NAME BUFFER HOST SERVICE &optional GATEWAY-METHOD)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-gw" '("url-")))
+
;;;***
-;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (22388
-;;;;;; 6390 619327 544000))
+;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from url/url-handlers.el
(defvar url-handler-mode nil "\
@@ -29414,10 +34498,18 @@ if it had been inserted from a file named URL.
\(fn URL &optional VISIT BEG END REPLACE)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-handlers" '("url-")))
+
;;;***
-;;;### (autoloads nil "url-http" "url/url-http.el" (22420 38537 297424
-;;;;;; 708000))
+;;;### (autoloads nil "url-history" "url/url-history.el" (0 0 0 0))
+;;; Generated autoloads from url/url-history.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-history" '("url-")))
+
+;;;***
+
+;;;### (autoloads nil "url-http" "url/url-http.el" (0 0 0 0))
;;; Generated autoloads from url/url-http.el
(autoload 'url-default-expander "url-expand")
@@ -29427,10 +34519,18 @@ if it had been inserted from a file named URL.
(autoload 'url-https-file-readable-p "url-http")
(autoload 'url-https-file-attributes "url-http")
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-http" '("url-h")))
+
;;;***
-;;;### (autoloads nil "url-irc" "url/url-irc.el" (22388 6390 660327
-;;;;;; 948000))
+;;;### (autoloads nil "url-imap" "url/url-imap.el" (0 0 0 0))
+;;; Generated autoloads from url/url-imap.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-imap" '("url-imap")))
+
+;;;***
+
+;;;### (autoloads nil "url-irc" "url/url-irc.el" (0 0 0 0))
;;; Generated autoloads from url/url-irc.el
(autoload 'url-irc "url-irc" "\
@@ -29438,10 +34538,11 @@ if it had been inserted from a file named URL.
\(fn URL)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-irc" '("url-irc-")))
+
;;;***
-;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (22388 6390 660327
-;;;;;; 948000))
+;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (0 0 0 0))
;;; Generated autoloads from url/url-ldap.el
(autoload 'url-ldap "url-ldap" "\
@@ -29452,10 +34553,11 @@ URL can be a URL string, or a URL vector of the type returned by
\(fn URL)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-ldap" '("url-ldap-")))
+
;;;***
-;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (22388 6390
-;;;;;; 661327 958000))
+;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (0 0 0 0))
;;; Generated autoloads from url/url-mailto.el
(autoload 'url-mail "url-mailto" "\
@@ -29468,10 +34570,18 @@ Handle the mailto: URL syntax.
\(fn URL)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-mailto" '("url-mail-goto-field")))
+
;;;***
-;;;### (autoloads nil "url-misc" "url/url-misc.el" (22388 6390 663327
-;;;;;; 977000))
+;;;### (autoloads nil "url-methods" "url/url-methods.el" (0 0 0 0))
+;;; Generated autoloads from url/url-methods.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-methods" '("url-scheme-")))
+
+;;;***
+
+;;;### (autoloads nil "url-misc" "url/url-misc.el" (0 0 0 0))
;;; Generated autoloads from url/url-misc.el
(autoload 'url-man "url-misc" "\
@@ -29500,10 +34610,11 @@ Fetch a data URL (RFC 2397).
\(fn URL)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-misc" '("url-do-terminal-emulator")))
+
;;;***
-;;;### (autoloads nil "url-news" "url/url-news.el" (22388 6390 663327
-;;;;;; 977000))
+;;;### (autoloads nil "url-news" "url/url-news.el" (0 0 0 0))
;;; Generated autoloads from url/url-news.el
(autoload 'url-news "url-news" "\
@@ -29516,10 +34627,18 @@ Fetch a data URL (RFC 2397).
\(fn URL)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-news" '("url-news-")))
+
;;;***
-;;;### (autoloads nil "url-ns" "url/url-ns.el" (22388 6390 665327
-;;;;;; 997000))
+;;;### (autoloads nil "url-nfs" "url/url-nfs.el" (0 0 0 0))
+;;; Generated autoloads from url/url-nfs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-nfs" '("url-nfs")))
+
+;;;***
+
+;;;### (autoloads nil "url-ns" "url/url-ns.el" (0 0 0 0))
;;; Generated autoloads from url/url-ns.el
(autoload 'isPlainHostName "url-ns" "\
@@ -29557,10 +34676,11 @@ Fetch a data URL (RFC 2397).
\(fn KEY &optional DEFAULT)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-ns" '("url-ns-")))
+
;;;***
-;;;### (autoloads nil "url-parse" "url/url-parse.el" (22388 6390
-;;;;;; 681328 154000))
+;;;### (autoloads nil "url-parse" "url/url-parse.el" (0 0 0 0))
;;; Generated autoloads from url/url-parse.el
(autoload 'url-recreate-url "url-parse" "\
@@ -29609,10 +34729,11 @@ parses to
\(fn URL)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-parse" '("url-")))
+
;;;***
-;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (22388 6390
-;;;;;; 683328 174000))
+;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (0 0 0 0))
;;; Generated autoloads from url/url-privacy.el
(autoload 'url-setup-privacy-info "url-privacy" "\
@@ -29620,10 +34741,18 @@ Setup variables that expose info about you and your system.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-privacy" '("url-device-type")))
+
+;;;***
+
+;;;### (autoloads nil "url-proxy" "url/url-proxy.el" (0 0 0 0))
+;;; Generated autoloads from url/url-proxy.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-proxy" '("url-")))
+
;;;***
-;;;### (autoloads nil "url-queue" "url/url-queue.el" (22388 6390
-;;;;;; 702328 361000))
+;;;### (autoloads nil "url-queue" "url/url-queue.el" (0 0 0 0))
;;; Generated autoloads from url/url-queue.el
(autoload 'url-queue-retrieve "url-queue" "\
@@ -29635,10 +34764,11 @@ The variable `url-queue-timeout' sets a timeout.
\(fn URL CALLBACK &optional CBARGS SILENT INHIBIT-COOKIES)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-queue" '("url-queue")))
+
;;;***
-;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (22388 6390
-;;;;;; 703328 370000))
+;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (0 0 0 0))
;;; Generated autoloads from url/url-tramp.el
(defvar url-tramp-protocols '("ftp" "ssh" "scp" "rsync" "telnet") "\
@@ -29654,10 +34784,11 @@ would have been passed to OPERATION.
\(fn OPERATION &rest ARGS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-tramp" '("url-tramp-convert-")))
+
;;;***
-;;;### (autoloads nil "url-util" "url/url-util.el" (22388 6390 704328
-;;;;;; 380000))
+;;;### (autoloads nil "url-util" "url/url-util.el" (0 0 0 0))
;;; Generated autoloads from url/url-util.el
(defvar url-debug nil "\
@@ -29823,10 +34954,18 @@ This uses `url-current-object', set locally to the buffer.
\(fn &optional NO-SHOW)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-util" '("url-")))
+
+;;;***
+
+;;;### (autoloads nil "url-vars" "url/url-vars.el" (0 0 0 0))
+;;; Generated autoloads from url/url-vars.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "url-vars" '("url-")))
+
;;;***
-;;;### (autoloads nil "userlock" "userlock.el" (22388 5710 439638
-;;;;;; 468000))
+;;;### (autoloads nil "userlock" "userlock.el" (0 0 0 0))
;;; Generated autoloads from userlock.el
(autoload 'ask-user-about-lock "userlock" "\
@@ -29852,10 +34991,11 @@ The buffer in question is current when this function is called.
\(fn FN)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "userlock" '("ask-user-about-" "file-")))
+
;;;***
-;;;### (autoloads nil "utf-7" "international/utf-7.el" (22388 6374
-;;;;;; 952173 469000))
+;;;### (autoloads nil "utf-7" "international/utf-7.el" (0 0 0 0))
;;; Generated autoloads from international/utf-7.el
(autoload 'utf-7-post-read-conversion "utf-7" "\
@@ -29878,20 +35018,23 @@ The buffer in question is current when this function is called.
\(fn FROM TO)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "utf-7" '("utf-7-")))
+
;;;***
-;;;### (autoloads nil "utf7" "gnus/utf7.el" (22388 6374 272166 782000))
-;;; Generated autoloads from gnus/utf7.el
+;;;### (autoloads nil "utf7" "international/utf7.el" (0 0 0 0))
+;;; Generated autoloads from international/utf7.el
(autoload 'utf7-encode "utf7" "\
Encode UTF-7 STRING. Use IMAP modification if FOR-IMAP is non-nil.
\(fn STRING &optional FOR-IMAP)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "utf7" '("utf7-")))
+
;;;***
-;;;### (autoloads nil "uudecode" "mail/uudecode.el" (22388 6376 109184
-;;;;;; 848000))
+;;;### (autoloads nil "uudecode" "mail/uudecode.el" (0 0 0 0))
;;; Generated autoloads from mail/uudecode.el
(autoload 'uudecode-decode-region-external "uudecode" "\
@@ -29913,9 +35056,11 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
\(fn START END &optional FILE-NAME)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "uudecode" '("uudecode-")))
+
;;;***
-;;;### (autoloads nil "vc" "vc/vc.el" (22388 6391 900340 142000))
+;;;### (autoloads nil "vc" "vc/vc.el" (0 0 0 0))
;;; Generated autoloads from vc/vc.el
(defvar vc-checkout-hook nil "\
@@ -30229,10 +35374,11 @@ Return the branch part of a revision number REV.
\(fn REV)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc" '("vc-" "with-vc-properties")))
+
;;;***
-;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (22388 6391
-;;;;;; 299334 232000))
+;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-annotate.el
(autoload 'vc-annotate "vc-annotate" "\
@@ -30269,10 +35415,11 @@ should be applied to the background or to the foreground.
\(fn FILE REV &optional DISPLAY-MODE BUF MOVE-POINT-TO VC-BK)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-annotate" '("vc-")))
+
;;;***
-;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (22388 6391 331334
-;;;;;; 546000))
+;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-bzr.el
(defconst vc-bzr-admin-dirname ".bzr" "\
@@ -30286,10 +35433,11 @@ Name of the format file in a .bzr directory.")
(load "vc-bzr" nil t)
(vc-bzr-registered file))))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-bzr" '("vc-bzr-")))
+
;;;***
-;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (22388 6391 418335
-;;;;;; 402000))
+;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-cvs.el
(defun vc-cvs-registered (f)
"Return non-nil if file F is registered with CVS."
@@ -30298,10 +35446,18 @@ Name of the format file in a .bzr directory.")
(load "vc-cvs" nil t)
(vc-cvs-registered f)))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-cvs" '("vc-cvs-")))
+
+;;;***
+
+;;;### (autoloads nil "vc-dav" "vc/vc-dav.el" (0 0 0 0))
+;;; Generated autoloads from vc/vc-dav.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-dav" '("vc-dav-")))
+
;;;***
-;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (22388 6391 424335
-;;;;;; 461000))
+;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-dir.el
(autoload 'vc-dir "vc-dir" "\
@@ -30323,10 +35479,12 @@ These are the commands available for use in the file status buffer:
\(fn DIR &optional BACKEND)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-dir" '("vc-")))
+
;;;***
-;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (22388
-;;;;;; 6391 464335 854000))
+;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from vc/vc-dispatcher.el
(autoload 'vc-do-command "vc-dispatcher" "\
@@ -30347,10 +35505,18 @@ case, and the process object in the asynchronous case.
\(fn BUFFER OKSTATUS COMMAND FILE-OR-LIST &rest FLAGS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-dispatcher" '("vc-")))
+
+;;;***
+
+;;;### (autoloads nil "vc-filewise" "vc/vc-filewise.el" (0 0 0 0))
+;;; Generated autoloads from vc/vc-filewise.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-filewise" '("vc-")))
+
;;;***
-;;;### (autoloads nil "vc-git" "vc/vc-git.el" (22420 38537 297424
-;;;;;; 708000))
+;;;### (autoloads nil "vc-git" "vc/vc-git.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-git.el
(defun vc-git-registered (file)
"Return non-nil if FILE is registered with git."
@@ -30359,9 +35525,11 @@ case, and the process object in the asynchronous case.
(load "vc-git" nil t)
(vc-git-registered file))))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-git" '("vc-git-")))
+
;;;***
-;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (22388 6391 556336 759000))
+;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-hg.el
(defun vc-hg-registered (file)
"Return non-nil if FILE is registered with hg."
@@ -30370,10 +35538,11 @@ case, and the process object in the asynchronous case.
(load "vc-hg" nil t)
(vc-hg-registered file))))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-hg" '("vc-hg-")))
+
;;;***
-;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (22388 6391 641337
-;;;;;; 595000))
+;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-mtn.el
(defconst vc-mtn-admin-dir "_MTN" "\
@@ -30387,10 +35556,11 @@ Name of the monotone directory's format file.")
(load "vc-mtn" nil t)
(vc-mtn-registered file))))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-mtn" '("vc-mtn-")))
+
;;;***
-;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (22388 6391 707338
-;;;;;; 244000))
+;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-rcs.el
(defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\
@@ -30401,10 +35571,11 @@ For a description of possible values, see `vc-check-master-templates'.")
(defun vc-rcs-registered (f) (vc-default-registered 'RCS f))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-rcs" '("vc-r")))
+
;;;***
-;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (22388 6391 745338
-;;;;;; 618000))
+;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-sccs.el
(defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\
@@ -30420,10 +35591,11 @@ Return the name of a master file in the SCCS project directory.
Does not check whether the file exists but returns nil if it does not
find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir) (when project-dir (if (file-name-absolute-p project-dir) (setq dirs (quote ("SCCS" ""))) (setq dirs (quote ("src/SCCS" "src" "source/SCCS" "source"))) (setq project-dir (expand-file-name (concat "~" project-dir)))) (while (and (not dir) dirs) (setq dir (expand-file-name (car dirs) project-dir)) (unless (file-directory-p dir) (setq dir nil) (setq dirs (cdr dirs)))) (and dir (expand-file-name (concat "s." basename) dir)))))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-sccs" '("vc-sccs-")))
+
;;;***
-;;;### (autoloads nil "vc-src" "vc/vc-src.el" (22388 6391 798339
-;;;;;; 139000))
+;;;### (autoloads nil "vc-src" "vc/vc-src.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-src.el
(defvar vc-src-master-templates (purecopy '("%s.src/%s,v")) "\
@@ -30434,10 +35606,11 @@ For a description of possible values, see `vc-check-master-templates'.")
(defun vc-src-registered (f) (vc-default-registered 'src f))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-src" '("vc-src-")))
+
;;;***
-;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (22388 6391 799339
-;;;;;; 149000))
+;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (0 0 0 0))
;;; Generated autoloads from vc/vc-svn.el
(defun vc-svn-registered (f)
(let ((admin-dir (cond ((and (eq system-type 'windows-nt)
@@ -30448,10 +35621,19 @@ For a description of possible values, see `vc-check-master-templates'.")
(load "vc-svn" nil t)
(vc-svn-registered f))))
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vc-svn" '("vc-svn-")))
+
+;;;***
+
+;;;### (autoloads nil "vcursor" "vcursor.el" (0 0 0 0))
+;;; Generated autoloads from vcursor.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vcursor" '("vcursor-")))
+
;;;***
-;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (22388
-;;;;;; 6388 56302 339000))
+;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from progmodes/vera-mode.el
(push (purecopy '(vera-mode 2 28)) package--builtin-versions)
(add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'") 'vera-mode))
@@ -30507,10 +35689,12 @@ Key bindings:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vera-mode" '("vera-")))
+
;;;***
;;;### (autoloads nil "verilog-mode" "progmodes/verilog-mode.el"
-;;;;;; (22388 6388 217303 922000))
+;;;;;; (0 0 0 0))
;;; Generated autoloads from progmodes/verilog-mode.el
(autoload 'verilog-mode "verilog-mode" "\
@@ -30647,10 +35831,12 @@ Key bindings specific to `verilog-mode-map' are:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "verilog-mode" '("vl-" "verilog-" "electric-verilog-")))
+
;;;***
-;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (22388
-;;;;;; 6388 508306 784000))
+;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from progmodes/vhdl-mode.el
(autoload 'vhdl-mode "vhdl-mode" "\
@@ -31202,10 +36388,12 @@ Key bindings:
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vhdl-mode" '("vhdl-")))
+
;;;***
-;;;### (autoloads nil "viet-util" "language/viet-util.el" (22388
-;;;;;; 6375 466178 524000))
+;;;### (autoloads nil "viet-util" "language/viet-util.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from language/viet-util.el
(autoload 'viet-encode-viscii-char "viet-util" "\
@@ -31247,9 +36435,11 @@ Convert Vietnamese characters of the current buffer to `VIQR' mnemonics.
\(fn FROM TO)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "viet-util" '("viet-viqr-alist" "viqr-regexp")))
+
;;;***
-;;;### (autoloads nil "view" "view.el" (22388 5710 520639 265000))
+;;;### (autoloads nil "view" "view.el" (0 0 0 0))
;;; Generated autoloads from view.el
(defvar view-remove-frame-by-deleting t "\
@@ -31503,10 +36693,11 @@ Exit View mode and make the current buffer editable.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "view" '("view-" "View-")))
+
;;;***
-;;;### (autoloads nil "viper" "emulation/viper.el" (22388 6370 127126
-;;;;;; 18000))
+;;;### (autoloads nil "viper" "emulation/viper.el" (0 0 0 0))
;;; Generated autoloads from emulation/viper.el
(push (purecopy '(viper 3 14 1)) package--builtin-versions)
@@ -31521,10 +36712,95 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "viper" '("viper-" "set-viper-state-in-major-mode" "this-major-mode-requires-vi-state")))
+
+;;;***
+
+;;;### (autoloads nil "viper-cmd" "emulation/viper-cmd.el" (0 0 0
+;;;;;; 0))
+;;; Generated autoloads from emulation/viper-cmd.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "viper-cmd" '("viper-")))
+
+;;;***
+
+;;;### (autoloads nil "viper-ex" "emulation/viper-ex.el" (0 0 0 0))
+;;; Generated autoloads from emulation/viper-ex.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "viper-ex" '("ex-" "viper-")))
+
+;;;***
+
+;;;### (autoloads nil "viper-init" "emulation/viper-init.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from emulation/viper-init.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "viper-init" '("viper-")))
+
+;;;***
+
+;;;### (autoloads nil "viper-keym" "emulation/viper-keym.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from emulation/viper-keym.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "viper-keym" '("viper-" "ex-read-filename-map")))
+
+;;;***
+
+;;;### (autoloads nil "viper-macs" "emulation/viper-macs.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from emulation/viper-macs.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "viper-macs" '("viper-" "ex-")))
+
+;;;***
+
+;;;### (autoloads nil "viper-mous" "emulation/viper-mous.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from emulation/viper-mous.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "viper-mous" '("viper-")))
+
;;;***
-;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (22388
-;;;;;; 6369 802122 822000))
+;;;### (autoloads nil "viper-util" "emulation/viper-util.el" (0 0
+;;;;;; 0 0))
+;;; Generated autoloads from emulation/viper-util.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "viper-util" '("viper")))
+
+;;;***
+
+;;;### (autoloads nil "vt-control" "vt-control.el" (0 0 0 0))
+;;; Generated autoloads from vt-control.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vt-control" '("vt-")))
+
+;;;***
+
+;;;### (autoloads nil "vt100-led" "vt100-led.el" (0 0 0 0))
+;;; Generated autoloads from vt100-led.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vt100-led" '("led-")))
+
+;;;***
+
+;;;### (autoloads nil "w32-fns" "w32-fns.el" (0 0 0 0))
+;;; Generated autoloads from w32-fns.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "w32-fns" '("w32-")))
+
+;;;***
+
+;;;### (autoloads nil "w32-vars" "w32-vars.el" (0 0 0 0))
+;;; Generated autoloads from w32-vars.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "w32-vars" '("w32-")))
+
+;;;***
+
+;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (0 0 0
+;;;;;; 0))
;;; Generated autoloads from emacs-lisp/warnings.el
(defvar warning-prefix-function nil "\
@@ -31612,9 +36888,11 @@ this is equivalent to `display-warning', using
\(fn MESSAGE &rest ARGS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "warnings" '("warning-" "log-warning-minimum-level" "display-warning-minimum-level")))
+
;;;***
-;;;### (autoloads nil "wdired" "wdired.el" (22388 5710 565639 708000))
+;;;### (autoloads nil "wdired" "wdired.el" (0 0 0 0))
;;; Generated autoloads from wdired.el
(push (purecopy '(wdired 2 0)) package--builtin-versions)
@@ -31630,10 +36908,11 @@ See `wdired-mode'.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "wdired" '("wdired-")))
+
;;;***
-;;;### (autoloads nil "webjump" "net/webjump.el" (22388 6379 113214
-;;;;;; 390000))
+;;;### (autoloads nil "webjump" "net/webjump.el" (0 0 0 0))
;;; Generated autoloads from net/webjump.el
(autoload 'webjump "webjump" "\
@@ -31647,10 +36926,12 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "webjump" '("webjump-")))
+
;;;***
-;;;### (autoloads nil "which-func" "progmodes/which-func.el" (22388
-;;;;;; 6388 697308 643000))
+;;;### (autoloads nil "which-func" "progmodes/which-func.el" (0 0
+;;;;;; 0 0))
;;; Generated autoloads from progmodes/which-func.el
(put 'which-func-format 'risky-local-variable t)
(put 'which-func-current 'risky-local-variable t)
@@ -31679,10 +36960,11 @@ in certain major modes.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "which-func" '("which-func")))
+
;;;***
-;;;### (autoloads nil "whitespace" "whitespace.el" (22388 5710 616640
-;;;;;; 209000))
+;;;### (autoloads nil "whitespace" "whitespace.el" (0 0 0 0))
;;; Generated autoloads from whitespace.el
(push (purecopy '(whitespace 13 2 2)) package--builtin-versions)
@@ -32050,10 +37332,11 @@ cleaning up these problems.
\(fn START END &optional FORCE REPORT-IF-BOGUS)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "whitespace" '("whitespace-")))
+
;;;***
-;;;### (autoloads nil "wid-browse" "wid-browse.el" (22388 5710 661640
-;;;;;; 652000))
+;;;### (autoloads nil "wid-browse" "wid-browse.el" (0 0 0 0))
;;; Generated autoloads from wid-browse.el
(autoload 'widget-browse-at "wid-browse" "\
@@ -32079,10 +37362,11 @@ if ARG is omitted or nil.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "wid-browse" '("widget-")))
+
;;;***
-;;;### (autoloads nil "wid-edit" "wid-edit.el" (22388 5710 705641
-;;;;;; 84000))
+;;;### (autoloads nil "wid-edit" "wid-edit.el" (0 0 0 0))
;;; Generated autoloads from wid-edit.el
(autoload 'widgetp "wid-edit" "\
@@ -32122,10 +37406,11 @@ Setup current buffer so editing string widgets works.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "wid-edit" '("widget-")))
+
;;;***
-;;;### (autoloads nil "windmove" "windmove.el" (22388 5710 791641
-;;;;;; 930000))
+;;;### (autoloads nil "windmove" "windmove.el" (0 0 0 0))
;;; Generated autoloads from windmove.el
(autoload 'windmove-left "windmove" "\
@@ -32175,9 +37460,11 @@ Default MODIFIER is `shift'.
\(fn &optional MODIFIER)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "windmove" '("windmove-")))
+
;;;***
-;;;### (autoloads nil "winner" "winner.el" (22388 5711 24644 221000))
+;;;### (autoloads nil "winner" "winner.el" (0 0 0 0))
;;; Generated autoloads from winner.el
(defvar winner-mode nil "\
@@ -32205,9 +37492,11 @@ you can press `C-c <right>' (calling `winner-redo').
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "winner" '("winner-")))
+
;;;***
-;;;### (autoloads nil "woman" "woman.el" (22388 5711 111645 78000))
+;;;### (autoloads nil "woman" "woman.el" (0 0 0 0))
;;; Generated autoloads from woman.el
(push (purecopy '(woman 0 551)) package--builtin-versions)
@@ -32254,9 +37543,18 @@ Default bookmark handler for Woman buffers.
\(fn BOOKMARK)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "woman" '("woman" "WoMan-" "menu-bar-manuals-menu" "set-woman-file-regexp")))
+
;;;***
-;;;### (autoloads nil "xml" "xml.el" (22388 5711 194645 894000))
+;;;### (autoloads nil "x-dnd" "x-dnd.el" (0 0 0 0))
+;;; Generated autoloads from x-dnd.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "x-dnd" '("x-dnd-")))
+
+;;;***
+
+;;;### (autoloads nil "xml" "xml.el" (0 0 0 0))
;;; Generated autoloads from xml.el
(autoload 'xml-parse-file "xml" "\
@@ -32310,10 +37608,11 @@ Both features can be combined by providing a cons cell
\(fn &optional BEG END BUFFER PARSE-DTD PARSE-NS)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "xml" '("xml-")))
+
;;;***
-;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (22388 6379 484218
-;;;;;; 39000))
+;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (0 0 0 0))
;;; Generated autoloads from nxml/xmltok.el
(autoload 'xmltok-get-declared-encoding-position "xmltok" "\
@@ -32329,10 +37628,11 @@ If LIMIT is non-nil, then do not consider characters beyond LIMIT.
\(fn &optional LIMIT)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "xmltok" '("xmltok-")))
+
;;;***
-;;;### (autoloads nil "xref" "progmodes/xref.el" (22388 6388 698308
-;;;;;; 653000))
+;;;### (autoloads nil "xref" "progmodes/xref.el" (0 0 0 0))
;;; Generated autoloads from progmodes/xref.el
(autoload 'xref-find-backend "xref" "\
@@ -32397,10 +37697,25 @@ IGNORES is a list of glob patterns.
\(fn REGEXP FILES DIR IGNORES)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "xref" '("xref-")))
+
+;;;***
+
+;;;### (autoloads nil "xscheme" "progmodes/xscheme.el" (0 0 0 0))
+;;; Generated autoloads from progmodes/xscheme.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "xscheme" '("xscheme-" "start-scheme" "scheme-" "exit-scheme-interaction-mode" "verify-xscheme-buffer" "local-" "global-set-scheme-interaction-buffer" "run-scheme" "reset-scheme" "default-xscheme-runlight")))
+
;;;***
-;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (22388 5711 211646
-;;;;;; 61000))
+;;;### (autoloads nil "xsd-regexp" "nxml/xsd-regexp.el" (0 0 0 0))
+;;; Generated autoloads from nxml/xsd-regexp.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "xsd-regexp" '("xsdre-")))
+
+;;;***
+
+;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (0 0 0 0))
;;; Generated autoloads from xt-mouse.el
(defvar xterm-mouse-mode nil "\
@@ -32428,9 +37743,11 @@ down the SHIFT key while pressing the mouse button.
\(fn &optional ARG)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "xt-mouse" '("turn-o" "xt-mouse-epoch" "xterm-mouse-")))
+
;;;***
-;;;### (autoloads nil "xwidget" "xwidget.el" (22388 5711 213646 81000))
+;;;### (autoloads nil "xwidget" "xwidget.el" (0 0 0 0))
;;; Generated autoloads from xwidget.el
(autoload 'xwidget-webkit-browse-url "xwidget" "\
@@ -32440,10 +37757,12 @@ Interactively, URL defaults to the string looking like a url around point.
\(fn URL &optional NEW-SESSION)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "xwidget" '("xwidget-")))
+
;;;***
-;;;### (autoloads nil "yenc" "gnus/yenc.el" (22388 6374 272166 782000))
-;;; Generated autoloads from gnus/yenc.el
+;;;### (autoloads nil "yenc" "mail/yenc.el" (0 0 0 0))
+;;; Generated autoloads from mail/yenc.el
(autoload 'yenc-decode-region "yenc" "\
Yenc decode region between START and END using an internal decoder.
@@ -32455,9 +37774,18 @@ Extract file name from an yenc header.
\(fn)" nil nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "yenc" '("yenc-")))
+
;;;***
-;;;### (autoloads nil "zone" "play/zone.el" (22388 6383 476257 297000))
+;;;### (autoloads nil "zeroconf" "net/zeroconf.el" (0 0 0 0))
+;;; Generated autoloads from net/zeroconf.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "zeroconf" '("zeroconf-")))
+
+;;;***
+
+;;;### (autoloads nil "zone" "play/zone.el" (0 0 0 0))
;;; Generated autoloads from play/zone.el
(autoload 'zone "zone" "\
@@ -32465,216 +37793,120 @@ Zone out, completely.
\(fn)" t nil)
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "zone" '("zone-")))
+
;;;***
-;;;### (autoloads nil nil ("calc/calc-aent.el" "calc/calc-alg.el"
-;;;;;; "calc/calc-arith.el" "calc/calc-bin.el" "calc/calc-comb.el"
-;;;;;; "calc/calc-cplx.el" "calc/calc-embed.el" "calc/calc-ext.el"
-;;;;;; "calc/calc-fin.el" "calc/calc-forms.el" "calc/calc-frac.el"
-;;;;;; "calc/calc-funcs.el" "calc/calc-graph.el" "calc/calc-help.el"
-;;;;;; "calc/calc-incom.el" "calc/calc-keypd.el" "calc/calc-lang.el"
-;;;;;; "calc/calc-macs.el" "calc/calc-map.el" "calc/calc-math.el"
-;;;;;; "calc/calc-menu.el" "calc/calc-misc.el" "calc/calc-mode.el"
-;;;;;; "calc/calc-mtx.el" "calc/calc-nlfit.el" "calc/calc-poly.el"
-;;;;;; "calc/calc-prog.el" "calc/calc-rewr.el" "calc/calc-rules.el"
-;;;;;; "calc/calc-sel.el" "calc/calc-stat.el" "calc/calc-store.el"
-;;;;;; "calc/calc-stuff.el" "calc/calc-trail.el" "calc/calc-units.el"
-;;;;;; "calc/calc-vec.el" "calc/calc-yank.el" "calc/calcalg2.el"
-;;;;;; "calc/calcalg3.el" "calc/calccomp.el" "calc/calcsel2.el"
-;;;;;; "calendar/cal-bahai.el" "calendar/cal-coptic.el" "calendar/cal-french.el"
-;;;;;; "calendar/cal-html.el" "calendar/cal-islam.el" "calendar/cal-iso.el"
-;;;;;; "calendar/cal-julian.el" "calendar/cal-loaddefs.el" "calendar/cal-mayan.el"
-;;;;;; "calendar/cal-menu.el" "calendar/cal-move.el" "calendar/cal-persia.el"
-;;;;;; "calendar/cal-tex.el" "calendar/cal-x.el" "calendar/diary-loaddefs.el"
-;;;;;; "calendar/hol-loaddefs.el" "cdl.el" "cedet/cedet-cscope.el"
-;;;;;; "cedet/cedet-files.el" "cedet/cedet-global.el" "cedet/cedet-idutils.el"
-;;;;;; "cedet/ede/auto.el" "cedet/ede/autoconf-edit.el" "cedet/ede/base.el"
-;;;;;; "cedet/ede/config.el" "cedet/ede/cpp-root.el" "cedet/ede/custom.el"
-;;;;;; "cedet/ede/detect.el" "cedet/ede/dired.el" "cedet/ede/emacs.el"
+;;;### (autoloads nil nil ("abbrev.el" "bindings.el" "buff-menu.el"
+;;;;;; "button.el" "calc/calc-aent.el" "calc/calc-embed.el" "calc/calc-loaddefs.el"
+;;;;;; "calc/calc-misc.el" "calc/calc-yank.el" "calendar/cal-loaddefs.el"
+;;;;;; "calendar/diary-loaddefs.el" "calendar/hol-loaddefs.el" "case-table.el"
+;;;;;; "cedet/ede/base.el" "cedet/ede/config.el" "cedet/ede/cpp-root.el"
+;;;;;; "cedet/ede/custom.el" "cedet/ede/dired.el" "cedet/ede/emacs.el"
;;;;;; "cedet/ede/files.el" "cedet/ede/generic.el" "cedet/ede/linux.el"
-;;;;;; "cedet/ede/locate.el" "cedet/ede/make.el" "cedet/ede/makefile-edit.el"
-;;;;;; "cedet/ede/pconf.el" "cedet/ede/pmake.el" "cedet/ede/proj-archive.el"
-;;;;;; "cedet/ede/proj-aux.el" "cedet/ede/proj-comp.el" "cedet/ede/proj-elisp.el"
-;;;;;; "cedet/ede/proj-info.el" "cedet/ede/proj-misc.el" "cedet/ede/proj-obj.el"
-;;;;;; "cedet/ede/proj-prog.el" "cedet/ede/proj-scheme.el" "cedet/ede/proj-shared.el"
-;;;;;; "cedet/ede/proj.el" "cedet/ede/project-am.el" "cedet/ede/shell.el"
-;;;;;; "cedet/ede/simple.el" "cedet/ede/source.el" "cedet/ede/speedbar.el"
-;;;;;; "cedet/ede/srecode.el" "cedet/ede/system.el" "cedet/ede/util.el"
-;;;;;; "cedet/semantic/analyze.el" "cedet/semantic/analyze/complete.el"
-;;;;;; "cedet/semantic/analyze/debug.el" "cedet/semantic/analyze/fcn.el"
+;;;;;; "cedet/ede/loaddefs.el" "cedet/ede/locate.el" "cedet/ede/make.el"
+;;;;;; "cedet/ede/shell.el" "cedet/ede/speedbar.el" "cedet/ede/system.el"
+;;;;;; "cedet/ede/util.el" "cedet/semantic/analyze.el" "cedet/semantic/analyze/complete.el"
;;;;;; "cedet/semantic/analyze/refs.el" "cedet/semantic/bovine.el"
-;;;;;; "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el"
-;;;;;; "cedet/semantic/bovine/el.el" "cedet/semantic/bovine/gcc.el"
-;;;;;; "cedet/semantic/bovine/make.el" "cedet/semantic/bovine/scm.el"
-;;;;;; "cedet/semantic/chart.el" "cedet/semantic/complete.el" "cedet/semantic/ctxt.el"
-;;;;;; "cedet/semantic/db-debug.el" "cedet/semantic/db-ebrowse.el"
-;;;;;; "cedet/semantic/db-el.el" "cedet/semantic/db-file.el" "cedet/semantic/db-find.el"
-;;;;;; "cedet/semantic/db-global.el" "cedet/semantic/db-javascript.el"
-;;;;;; "cedet/semantic/db-mode.el" "cedet/semantic/db-ref.el" "cedet/semantic/db-typecache.el"
-;;;;;; "cedet/semantic/db.el" "cedet/semantic/debug.el" "cedet/semantic/decorate.el"
+;;;;;; "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/el.el"
+;;;;;; "cedet/semantic/bovine/gcc.el" "cedet/semantic/bovine/make.el"
+;;;;;; "cedet/semantic/bovine/scm.el" "cedet/semantic/complete.el"
+;;;;;; "cedet/semantic/ctxt.el" "cedet/semantic/db-file.el" "cedet/semantic/db-find.el"
+;;;;;; "cedet/semantic/db-global.el" "cedet/semantic/db-mode.el"
+;;;;;; "cedet/semantic/db-typecache.el" "cedet/semantic/db.el" "cedet/semantic/debug.el"
;;;;;; "cedet/semantic/decorate/include.el" "cedet/semantic/decorate/mode.el"
-;;;;;; "cedet/semantic/dep.el" "cedet/semantic/doc.el" "cedet/semantic/ede-grammar.el"
-;;;;;; "cedet/semantic/edit.el" "cedet/semantic/find.el" "cedet/semantic/format.el"
-;;;;;; "cedet/semantic/fw.el" "cedet/semantic/grammar-wy.el" "cedet/semantic/grammar.el"
-;;;;;; "cedet/semantic/html.el" "cedet/semantic/ia-sb.el" "cedet/semantic/ia.el"
-;;;;;; "cedet/semantic/idle.el" "cedet/semantic/imenu.el" "cedet/semantic/java.el"
-;;;;;; "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" "cedet/semantic/mru-bookmark.el"
-;;;;;; "cedet/semantic/sb.el" "cedet/semantic/scope.el" "cedet/semantic/senator.el"
-;;;;;; "cedet/semantic/sort.el" "cedet/semantic/symref.el" "cedet/semantic/symref/cscope.el"
-;;;;;; "cedet/semantic/symref/filter.el" "cedet/semantic/symref/global.el"
-;;;;;; "cedet/semantic/symref/grep.el" "cedet/semantic/symref/idutils.el"
-;;;;;; "cedet/semantic/symref/list.el" "cedet/semantic/tag-file.el"
-;;;;;; "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el"
+;;;;;; "cedet/semantic/dep.el" "cedet/semantic/doc.el" "cedet/semantic/edit.el"
+;;;;;; "cedet/semantic/find.el" "cedet/semantic/format.el" "cedet/semantic/html.el"
+;;;;;; "cedet/semantic/ia-sb.el" "cedet/semantic/ia.el" "cedet/semantic/idle.el"
+;;;;;; "cedet/semantic/imenu.el" "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el"
+;;;;;; "cedet/semantic/loaddefs.el" "cedet/semantic/mru-bookmark.el"
+;;;;;; "cedet/semantic/scope.el" "cedet/semantic/senator.el" "cedet/semantic/sort.el"
+;;;;;; "cedet/semantic/symref.el" "cedet/semantic/symref/cscope.el"
+;;;;;; "cedet/semantic/symref/global.el" "cedet/semantic/symref/grep.el"
+;;;;;; "cedet/semantic/symref/idutils.el" "cedet/semantic/symref/list.el"
+;;;;;; "cedet/semantic/tag-file.el" "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el"
;;;;;; "cedet/semantic/tag.el" "cedet/semantic/texi.el" "cedet/semantic/util-modes.el"
-;;;;;; "cedet/semantic/util.el" "cedet/semantic/wisent.el" "cedet/semantic/wisent/comp.el"
;;;;;; "cedet/semantic/wisent/java-tags.el" "cedet/semantic/wisent/javascript.el"
-;;;;;; "cedet/semantic/wisent/python.el" "cedet/semantic/wisent/wisent.el"
-;;;;;; "cedet/srecode/args.el" "cedet/srecode/compile.el" "cedet/srecode/cpp.el"
-;;;;;; "cedet/srecode/ctxt.el" "cedet/srecode/dictionary.el" "cedet/srecode/document.el"
-;;;;;; "cedet/srecode/el.el" "cedet/srecode/expandproto.el" "cedet/srecode/extract.el"
-;;;;;; "cedet/srecode/fields.el" "cedet/srecode/filters.el" "cedet/srecode/find.el"
-;;;;;; "cedet/srecode/getset.el" "cedet/srecode/insert.el" "cedet/srecode/java.el"
-;;;;;; "cedet/srecode/map.el" "cedet/srecode/mode.el" "cedet/srecode/semantic.el"
-;;;;;; "cedet/srecode/srt.el" "cedet/srecode/table.el" "cedet/srecode/template.el"
-;;;;;; "cedet/srecode/texi.el" "cus-dep.el" "dframe.el" "dired-aux.el"
-;;;;;; "dired-x.el" "dom.el" "dos-fns.el" "dos-vars.el" "dos-w32.el"
-;;;;;; "dynamic-setting.el" "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el"
-;;;;;; "emacs-lisp/byte-opt.el" "emacs-lisp/cl-extra.el" "emacs-lisp/cl-macs.el"
-;;;;;; "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el"
+;;;;;; "cedet/semantic/wisent/python.el" "cedet/srecode/compile.el"
+;;;;;; "cedet/srecode/cpp.el" "cedet/srecode/document.el" "cedet/srecode/el.el"
+;;;;;; "cedet/srecode/expandproto.el" "cedet/srecode/getset.el"
+;;;;;; "cedet/srecode/insert.el" "cedet/srecode/java.el" "cedet/srecode/loaddefs.el"
+;;;;;; "cedet/srecode/map.el" "cedet/srecode/mode.el" "cedet/srecode/srt.el"
+;;;;;; "cedet/srecode/template.el" "cedet/srecode/texi.el" "composite.el"
+;;;;;; "cus-face.el" "cus-start.el" "custom.el" "dired-aux.el" "dired-loaddefs.el"
+;;;;;; "dired-x.el" "electric.el" "emacs-lisp/backquote.el" "emacs-lisp/byte-run.el"
+;;;;;; "emacs-lisp/cl-extra.el" "emacs-lisp/cl-generic.el" "emacs-lisp/cl-loaddefs.el"
+;;;;;; "emacs-lisp/cl-macs.el" "emacs-lisp/cl-preloaded.el" "emacs-lisp/cl-seq.el"
;;;;;; "emacs-lisp/eieio-compat.el" "emacs-lisp/eieio-custom.el"
-;;;;;; "emacs-lisp/eieio-datadebug.el" "emacs-lisp/eieio-opt.el"
-;;;;;; "emacs-lisp/eieio-speedbar.el" "emacs-lisp/generator.el"
-;;;;;; "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el" "emacs-lisp/smie.el"
-;;;;;; "emacs-lisp/subr-x.el" "emacs-lisp/tcover-ses.el" "emacs-lisp/tcover-unsafep.el"
-;;;;;; "emulation/cua-gmrk.el" "emulation/edt-lk201.el" "emulation/edt-mapper.el"
-;;;;;; "emulation/edt-pc.el" "emulation/edt-vt100.el" "emulation/viper-cmd.el"
-;;;;;; "emulation/viper-ex.el" "emulation/viper-init.el" "emulation/viper-keym.el"
-;;;;;; "emulation/viper-macs.el" "emulation/viper-mous.el" "emulation/viper-util.el"
-;;;;;; "erc/erc-backend.el" "erc/erc-goodies.el" "erc/erc-ibuffer.el"
-;;;;;; "erc/erc-lang.el" "eshell/em-alias.el" "eshell/em-banner.el"
+;;;;;; "emacs-lisp/eieio-loaddefs.el" "emacs-lisp/eieio-opt.el"
+;;;;;; "emacs-lisp/eldoc.el" "emacs-lisp/float-sup.el" "emacs-lisp/lisp-mode.el"
+;;;;;; "emacs-lisp/lisp.el" "emacs-lisp/macroexp.el" "emacs-lisp/map-ynp.el"
+;;;;;; "emacs-lisp/nadvice.el" "emacs-lisp/syntax.el" "emacs-lisp/timer.el"
+;;;;;; "env.el" "epa-hook.el" "eshell/em-alias.el" "eshell/em-banner.el"
;;;;;; "eshell/em-basic.el" "eshell/em-cmpl.el" "eshell/em-dirs.el"
;;;;;; "eshell/em-glob.el" "eshell/em-hist.el" "eshell/em-ls.el"
;;;;;; "eshell/em-pred.el" "eshell/em-prompt.el" "eshell/em-rebind.el"
;;;;;; "eshell/em-script.el" "eshell/em-smart.el" "eshell/em-term.el"
;;;;;; "eshell/em-tramp.el" "eshell/em-unix.el" "eshell/em-xtra.el"
-;;;;;; "eshell/esh-arg.el" "eshell/esh-cmd.el" "eshell/esh-ext.el"
-;;;;;; "eshell/esh-io.el" "eshell/esh-module.el" "eshell/esh-opt.el"
-;;;;;; "eshell/esh-proc.el" "eshell/esh-util.el" "eshell/esh-var.el"
-;;;;;; "ezimage.el" "format-spec.el" "fringe.el" "generic-x.el"
-;;;;;; "gnus/compface.el" "gnus/gnus-async.el" "gnus/gnus-bcklg.el"
-;;;;;; "gnus/gnus-cite.el" "gnus/gnus-cloud.el" "gnus/gnus-cus.el"
-;;;;;; "gnus/gnus-demon.el" "gnus/gnus-dup.el" "gnus/gnus-eform.el"
-;;;;;; "gnus/gnus-ems.el" "gnus/gnus-icalendar.el" "gnus/gnus-int.el"
-;;;;;; "gnus/gnus-logic.el" "gnus/gnus-mh.el" "gnus/gnus-salt.el"
-;;;;;; "gnus/gnus-score.el" "gnus/gnus-srvr.el" "gnus/gnus-topic.el"
-;;;;;; "gnus/gnus-undo.el" "gnus/gnus-util.el" "gnus/gnus-uu.el"
-;;;;;; "gnus/gnus-vm.el" "gnus/gssapi.el" "gnus/ietf-drums.el" "gnus/legacy-gnus-agent.el"
-;;;;;; "gnus/mail-parse.el" "gnus/mail-prsvr.el" "gnus/mail-source.el"
-;;;;;; "gnus/mailcap.el" "gnus/messcompat.el" "gnus/mm-archive.el"
-;;;;;; "gnus/mm-bodies.el" "gnus/mm-decode.el" "gnus/mm-util.el"
-;;;;;; "gnus/mm-view.el" "gnus/mml-sec.el" "gnus/mml-smime.el" "gnus/nnagent.el"
-;;;;;; "gnus/nnbabyl.el" "gnus/nndir.el" "gnus/nndraft.el" "gnus/nneething.el"
-;;;;;; "gnus/nngateway.el" "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el"
-;;;;;; "gnus/nnmail.el" "gnus/nnmaildir.el" "gnus/nnmairix.el" "gnus/nnmbox.el"
-;;;;;; "gnus/nnmh.el" "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnregistry.el"
-;;;;;; "gnus/nnrss.el" "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el"
-;;;;;; "gnus/nnweb.el" "gnus/registry.el" "gnus/rfc1843.el" "gnus/rfc2045.el"
-;;;;;; "gnus/rfc2047.el" "gnus/rfc2231.el" "gnus/rtree.el" "gnus/sieve-manage.el"
-;;;;;; "gnus/smime.el" "gnus/spam-stat.el" "gnus/spam-wash.el" "hex-util.el"
-;;;;;; "hfy-cmap.el" "ibuf-ext.el" "international/charscript.el"
-;;;;;; "international/fontset.el" "international/iso-ascii.el" "international/ja-dic-cnv.el"
-;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "kermit.el"
-;;;;;; "language/hanja-util.el" "language/thai-word.el" "ldefs-boot.el"
-;;;;;; "leim/ja-dic/ja-dic.el" "leim/quail/arabic.el" "leim/quail/croatian.el"
+;;;;;; "eshell/esh-groups.el" "facemenu.el" "faces.el" "files.el"
+;;;;;; "font-core.el" "font-lock.el" "format.el" "frame.el" "help.el"
+;;;;;; "hfy-cmap.el" "htmlfontify-loaddefs.el" "ibuf-ext.el" "ibuffer-loaddefs.el"
+;;;;;; "indent.el" "international/characters.el" "international/charprop.el"
+;;;;;; "international/charscript.el" "international/cp51932.el"
+;;;;;; "international/eucjp-ms.el" "international/mule-cmds.el"
+;;;;;; "international/mule-conf.el" "international/mule.el" "international/uni-bidi.el"
+;;;;;; "international/uni-brackets.el" "international/uni-category.el"
+;;;;;; "international/uni-combining.el" "international/uni-comment.el"
+;;;;;; "international/uni-decimal.el" "international/uni-decomposition.el"
+;;;;;; "international/uni-digit.el" "international/uni-lowercase.el"
+;;;;;; "international/uni-mirrored.el" "international/uni-name.el"
+;;;;;; "international/uni-numeric.el" "international/uni-old-name.el"
+;;;;;; "international/uni-titlecase.el" "international/uni-uppercase.el"
+;;;;;; "isearch.el" "jit-lock.el" "jka-cmpr-hook.el" "language/burmese.el"
+;;;;;; "language/cham.el" "language/chinese.el" "language/cyrillic.el"
+;;;;;; "language/czech.el" "language/english.el" "language/ethiopic.el"
+;;;;;; "language/european.el" "language/georgian.el" "language/greek.el"
+;;;;;; "language/hebrew.el" "language/indian.el" "language/japanese.el"
+;;;;;; "language/khmer.el" "language/korean.el" "language/lao.el"
+;;;;;; "language/misc-lang.el" "language/romanian.el" "language/sinhala.el"
+;;;;;; "language/slovak.el" "language/tai-viet.el" "language/thai.el"
+;;;;;; "language/tibetan.el" "language/utf-8-lang.el" "language/vietnamese.el"
+;;;;;; "ldefs-boot.el" "leim/quail/arabic.el" "leim/quail/croatian.el"
;;;;;; "leim/quail/cyril-jis.el" "leim/quail/cyrillic.el" "leim/quail/czech.el"
-;;;;;; "leim/quail/ethiopic.el" "leim/quail/georgian.el" "leim/quail/greek.el"
-;;;;;; "leim/quail/hanja-jis.el" "leim/quail/hanja.el" "leim/quail/hanja3.el"
-;;;;;; "leim/quail/hebrew.el" "leim/quail/indian.el" "leim/quail/ipa-praat.el"
-;;;;;; "leim/quail/ipa.el" "leim/quail/japanese.el" "leim/quail/lao.el"
-;;;;;; "leim/quail/latin-alt.el" "leim/quail/latin-ltx.el" "leim/quail/latin-post.el"
-;;;;;; "leim/quail/latin-pre.el" "leim/quail/lrt.el" "leim/quail/persian.el"
+;;;;;; "leim/quail/georgian.el" "leim/quail/greek.el" "leim/quail/hanja-jis.el"
+;;;;;; "leim/quail/hanja.el" "leim/quail/hanja3.el" "leim/quail/hebrew.el"
+;;;;;; "leim/quail/ipa-praat.el" "leim/quail/latin-alt.el" "leim/quail/latin-ltx.el"
+;;;;;; "leim/quail/latin-post.el" "leim/quail/latin-pre.el" "leim/quail/persian.el"
;;;;;; "leim/quail/programmer-dvorak.el" "leim/quail/py-punct.el"
;;;;;; "leim/quail/pypunct-b5.el" "leim/quail/rfc1345.el" "leim/quail/sgml-input.el"
-;;;;;; "leim/quail/sisheng.el" "leim/quail/slovak.el" "leim/quail/symbol-ksc.el"
-;;;;;; "leim/quail/tamil-dvorak.el" "leim/quail/thai.el" "leim/quail/tibetan.el"
-;;;;;; "leim/quail/viqr.el" "leim/quail/vntelex.el" "leim/quail/vnvni.el"
-;;;;;; "leim/quail/welsh.el" "loadup.el" "mail/blessmail.el" "mail/mailheader.el"
-;;;;;; "mail/mspools.el" "mail/rfc2368.el" "mail/rfc822.el" "mail/rmail-spam-filter.el"
+;;;;;; "leim/quail/slovak.el" "leim/quail/symbol-ksc.el" "leim/quail/tamil-dvorak.el"
+;;;;;; "leim/quail/vntelex.el" "leim/quail/vnvni.el" "leim/quail/welsh.el"
+;;;;;; "loadup.el" "mail/blessmail.el" "mail/rmail-loaddefs.el"
;;;;;; "mail/rmailedit.el" "mail/rmailkwd.el" "mail/rmailmm.el"
;;;;;; "mail/rmailmsc.el" "mail/rmailsort.el" "mail/rmailsum.el"
-;;;;;; "mail/undigest.el" "mh-e/mh-acros.el" "mh-e/mh-alias.el"
-;;;;;; "mh-e/mh-buffers.el" "mh-e/mh-compat.el" "mh-e/mh-funcs.el"
-;;;;;; "mh-e/mh-gnus.el" "mh-e/mh-identity.el" "mh-e/mh-inc.el"
-;;;;;; "mh-e/mh-junk.el" "mh-e/mh-letter.el" "mh-e/mh-limit.el"
-;;;;;; "mh-e/mh-loaddefs.el" "mh-e/mh-mime.el" "mh-e/mh-print.el"
-;;;;;; "mh-e/mh-scan.el" "mh-e/mh-search.el" "mh-e/mh-seq.el" "mh-e/mh-show.el"
-;;;;;; "mh-e/mh-speed.el" "mh-e/mh-thread.el" "mh-e/mh-tool-bar.el"
-;;;;;; "mh-e/mh-utils.el" "mh-e/mh-xface.el" "mouse-copy.el" "mwheel.el"
-;;;;;; "net/dns.el" "net/eudc-vars.el" "net/eudcb-bbdb.el" "net/eudcb-ldap.el"
-;;;;;; "net/eudcb-mab.el" "net/hmac-def.el" "net/hmac-md5.el" "net/imap.el"
-;;;;;; "net/ldap.el" "net/mairix.el" "net/newsticker.el" "net/nsm.el"
-;;;;;; "net/rfc2104.el" "net/sasl-cram.el" "net/sasl-digest.el"
-;;;;;; "net/sasl-scram-rfc.el" "net/sasl.el" "net/shr-color.el"
-;;;;;; "net/soap-inspect.el" "net/socks.el" "net/tls.el" "net/tramp-adb.el"
-;;;;;; "net/tramp-cache.el" "net/tramp-cmds.el" "net/tramp-compat.el"
-;;;;;; "net/tramp-gvfs.el" "net/tramp-gw.el" "net/tramp-loaddefs.el"
-;;;;;; "net/tramp-sh.el" "net/tramp-smb.el" "net/tramp-uu.el" "net/zeroconf.el"
-;;;;;; "notifications.el" "nxml/nxml-enc.el" "nxml/nxml-maint.el"
-;;;;;; "nxml/nxml-ns.el" "nxml/nxml-outln.el" "nxml/nxml-parse.el"
-;;;;;; "nxml/nxml-rap.el" "nxml/nxml-util.el" "nxml/rng-dt.el" "nxml/rng-loc.el"
-;;;;;; "nxml/rng-maint.el" "nxml/rng-match.el" "nxml/rng-parse.el"
-;;;;;; "nxml/rng-pttrn.el" "nxml/rng-uri.el" "nxml/rng-util.el"
-;;;;;; "nxml/xsd-regexp.el" "obarray.el" "org/ob-C.el" "org/ob-R.el"
-;;;;;; "org/ob-asymptote.el" "org/ob-awk.el" "org/ob-calc.el" "org/ob-clojure.el"
-;;;;;; "org/ob-comint.el" "org/ob-core.el" "org/ob-css.el" "org/ob-ditaa.el"
-;;;;;; "org/ob-dot.el" "org/ob-emacs-lisp.el" "org/ob-eval.el" "org/ob-exp.el"
-;;;;;; "org/ob-fortran.el" "org/ob-gnuplot.el" "org/ob-haskell.el"
-;;;;;; "org/ob-io.el" "org/ob-java.el" "org/ob-js.el" "org/ob-keys.el"
-;;;;;; "org/ob-latex.el" "org/ob-ledger.el" "org/ob-lilypond.el"
-;;;;;; "org/ob-lisp.el" "org/ob-lob.el" "org/ob-makefile.el" "org/ob-matlab.el"
-;;;;;; "org/ob-maxima.el" "org/ob-mscgen.el" "org/ob-ocaml.el" "org/ob-octave.el"
-;;;;;; "org/ob-org.el" "org/ob-perl.el" "org/ob-picolisp.el" "org/ob-plantuml.el"
-;;;;;; "org/ob-python.el" "org/ob-ref.el" "org/ob-ruby.el" "org/ob-sass.el"
-;;;;;; "org/ob-scala.el" "org/ob-scheme.el" "org/ob-screen.el" "org/ob-sh.el"
-;;;;;; "org/ob-shen.el" "org/ob-sql.el" "org/ob-sqlite.el" "org/ob-table.el"
-;;;;;; "org/ob-tangle.el" "org/ob.el" "org/org-archive.el" "org/org-attach.el"
-;;;;;; "org/org-bbdb.el" "org/org-bibtex.el" "org/org-clock.el"
-;;;;;; "org/org-crypt.el" "org/org-ctags.el" "org/org-datetree.el"
-;;;;;; "org/org-docview.el" "org/org-element.el" "org/org-entities.el"
-;;;;;; "org/org-eshell.el" "org/org-faces.el" "org/org-feed.el"
-;;;;;; "org/org-footnote.el" "org/org-gnus.el" "org/org-habit.el"
-;;;;;; "org/org-id.el" "org/org-indent.el" "org/org-info.el" "org/org-inlinetask.el"
-;;;;;; "org/org-install.el" "org/org-irc.el" "org/org-list.el" "org/org-macro.el"
-;;;;;; "org/org-mhe.el" "org/org-mobile.el" "org/org-mouse.el" "org/org-pcomplete.el"
-;;;;;; "org/org-plot.el" "org/org-protocol.el" "org/org-rmail.el"
-;;;;;; "org/org-src.el" "org/org-table.el" "org/org-timer.el" "org/org-w3m.el"
-;;;;;; "org/ox-ascii.el" "org/ox-beamer.el" "org/ox-html.el" "org/ox-icalendar.el"
-;;;;;; "org/ox-latex.el" "org/ox-man.el" "org/ox-md.el" "org/ox-odt.el"
-;;;;;; "org/ox-org.el" "org/ox-publish.el" "org/ox-texinfo.el" "org/ox.el"
-;;;;;; "play/gametree.el" "progmodes/ada-prj.el" "progmodes/cc-align.el"
-;;;;;; "progmodes/cc-awk.el" "progmodes/cc-bytecomp.el" "progmodes/cc-cmds.el"
-;;;;;; "progmodes/cc-defs.el" "progmodes/cc-fonts.el" "progmodes/cc-langs.el"
-;;;;;; "progmodes/cc-menus.el" "progmodes/ebnf-abn.el" "progmodes/ebnf-bnf.el"
-;;;;;; "progmodes/ebnf-dtd.el" "progmodes/ebnf-ebx.el" "progmodes/ebnf-iso.el"
-;;;;;; "progmodes/ebnf-otz.el" "progmodes/ebnf-yac.el" "progmodes/idlw-complete-structtag.el"
-;;;;;; "progmodes/idlw-help.el" "progmodes/idlw-toolbar.el" "progmodes/mantemp.el"
-;;;;;; "progmodes/xscheme.el" "ps-def.el" "ps-mule.el" "ps-samp.el"
-;;;;;; "sb-image.el" "scroll-bar.el" "soundex.el" "subdirs.el" "tempo.el"
-;;;;;; "textmodes/bib-mode.el" "textmodes/makeinfo.el" "textmodes/page-ext.el"
-;;;;;; "textmodes/refbib.el" "textmodes/refer.el" "textmodes/reftex-auc.el"
-;;;;;; "textmodes/reftex-cite.el" "textmodes/reftex-dcr.el" "textmodes/reftex-global.el"
-;;;;;; "textmodes/reftex-index.el" "textmodes/reftex-parse.el" "textmodes/reftex-ref.el"
-;;;;;; "textmodes/reftex-sel.el" "textmodes/reftex-toc.el" "textmodes/texnfo-upd.el"
-;;;;;; "timezone.el" "tooltip.el" "tree-widget.el" "url/url-about.el"
-;;;;;; "url/url-cookie.el" "url/url-dired.el" "url/url-domsuf.el"
-;;;;;; "url/url-expand.el" "url/url-ftp.el" "url/url-future.el"
-;;;;;; "url/url-history.el" "url/url-imap.el" "url/url-methods.el"
-;;;;;; "url/url-nfs.el" "url/url-proxy.el" "url/url-vars.el" "vc/ediff-diff.el"
-;;;;;; "vc/ediff-init.el" "vc/ediff-merg.el" "vc/ediff-ptch.el"
-;;;;;; "vc/ediff-vers.el" "vc/ediff-wind.el" "vc/pcvs-info.el" "vc/pcvs-parse.el"
-;;;;;; "vc/pcvs-util.el" "vc/vc-dav.el" "vc/vc-filewise.el" "vcursor.el"
-;;;;;; "vt-control.el" "vt100-led.el" "w32-fns.el" "w32-vars.el"
-;;;;;; "x-dnd.el") (22420 55670 291981 354000))
+;;;;;; "mail/undigest.el" "menu-bar.el" "mh-e/mh-gnus.el" "mh-e/mh-loaddefs.el"
+;;;;;; "minibuffer.el" "mouse.el" "net/tramp-loaddefs.el" "newcomment.el"
+;;;;;; "obarray.el" "org/ob-core.el" "org/ob-keys.el" "org/ob-lob.el"
+;;;;;; "org/ob-matlab.el" "org/ob-tangle.el" "org/ob.el" "org/org-archive.el"
+;;;;;; "org/org-attach.el" "org/org-bbdb.el" "org/org-clock.el"
+;;;;;; "org/org-datetree.el" "org/org-element.el" "org/org-feed.el"
+;;;;;; "org/org-footnote.el" "org/org-id.el" "org/org-indent.el"
+;;;;;; "org/org-install.el" "org/org-irc.el" "org/org-loaddefs.el"
+;;;;;; "org/org-mobile.el" "org/org-plot.el" "org/org-table.el"
+;;;;;; "org/org-timer.el" "org/ox-ascii.el" "org/ox-beamer.el" "org/ox-html.el"
+;;;;;; "org/ox-icalendar.el" "org/ox-latex.el" "org/ox-man.el" "org/ox-md.el"
+;;;;;; "org/ox-odt.el" "org/ox-org.el" "org/ox-publish.el" "org/ox-texinfo.el"
+;;;;;; "org/ox.el" "progmodes/elisp-mode.el" "progmodes/prog-mode.el"
+;;;;;; "ps-def.el" "ps-mule.el" "ps-print-loaddefs.el" "register.el"
+;;;;;; "replace.el" "rfn-eshadow.el" "select.el" "simple.el" "startup.el"
+;;;;;; "subdirs.el" "subr.el" "textmodes/fill.el" "textmodes/page.el"
+;;;;;; "textmodes/paragraphs.el" "textmodes/reftex-auc.el" "textmodes/reftex-cite.el"
+;;;;;; "textmodes/reftex-dcr.el" "textmodes/reftex-global.el" "textmodes/reftex-index.el"
+;;;;;; "textmodes/reftex-loaddefs.el" "textmodes/reftex-parse.el"
+;;;;;; "textmodes/reftex-ref.el" "textmodes/reftex-sel.el" "textmodes/reftex-toc.el"
+;;;;;; "textmodes/text-mode.el" "uniquify.el" "vc/ediff-hook.el"
+;;;;;; "vc/vc-hooks.el" "version.el" "widget.el" "window.el") (0
+;;;;;; 0 0 0))
;;;***
diff --git a/lisp/leim/quail/latin-pre.el b/lisp/leim/quail/latin-pre.el
index 078f9f99fa..138a97ac28 100644
--- a/lisp/leim/quail/latin-pre.el
+++ b/lisp/leim/quail/latin-pre.el
@@ -188,6 +188,7 @@
diaeresis | \" | \"i -> ï \"\" -> ¨
tilde | ~ | ~n -> ñ
cedilla | ~ | ~c -> ç
+ middle dot | ~ | ~. -> ·
symbol | ~ | ~> -> » ~< -> « ~! -> ¡ ~? -> ¿
" nil t nil nil nil nil nil nil nil nil t)
@@ -223,6 +224,7 @@
("~<" ?\«)
("~!" ?¡)
("~?" ?¿)
+ ("~." ?·)
("~ " ?~)
)
diff --git a/lisp/leim/quail/rfc1345.el b/lisp/leim/quail/rfc1345.el
index f500016c89..1b50ee37cc 100644
--- a/lisp/leim/quail/rfc1345.el
+++ b/lisp/leim/quail/rfc1345.el
@@ -36,2027 +36,1899 @@ E.g. &a' -> á"
(quail-define-rules
;; There doesn't seem to be any point in including ASCII.
-;; ("&NU" ?\^@)
-;; ("&SH" ?\^A)
-;; ("&SX" ?\^B)
-;; ("&EX" ?\^C)
-;; ("&ET" ?\^D)
-;; ("&EQ" ?\^E)
-;; ("&AK" ?\^F)
-;; ("&BL" ?\^G)
-;; ("&BS" ?\^H)
-;; ("&HT" 9)
-;; ("&LF" 10)
-;; ("&VT" ?\^K)
-;; ("&FF" ?\^L)
-;; ("&CR" 13)
-;; ("&SO" ?\^N)
-;; ("&SI" ?\^O)
-;; ("&DL" ?\^P)
-;; ("&D1" ?\^Q)
-;; ("&D2" ?\^R)
-;; ("&D3" ?\^S)
-;; ("&D4" ?\^T)
-;; ("&NK" ?\^U)
-;; ("&SY" ?\^V)
-;; ("&EB" ?\^W)
-;; ("&CN" ?\^X)
-;; ("&EM" ?\^Y)
-;; ("&SB" ?\032) ; ^Z in a file causes trouble on MS systems.
-;; ("&EC" ?\033)
-;; ("&FS" ?\034)
-;; ("&GS" ?\035)
-;; ("&RS" ?\036)
-;; ("&US" ?\037)
-;; ("&SP" ?\ )
-;; ("&!" ?\!)
-;; ("&\"" ?\")
-;; ("&Nb" ?\#)
-;; ("&DO" ?\$)
-;; ("&%" ?\%)
-;; ("&&" ?\&)
-;; ("&'" ?\')
-;; ("&(" ?\()
-;; ("&)" ?\))
-;; ("&*" ?\*)
-;; ("&+" ?\+)
-;; ("&," ?\,)
-;; ("&-" ?\-)
-;; ("&." ?\.)
-;; ("&/" ?\/)
-;; ("&0" ?\0)
-;; ("&1" ?\1)
-;; ("&2" ?\2)
-;; ("&3" ?\3)
-;; ("&4" ?\4)
-;; ("&5" ?\5)
-;; ("&6" ?\6)
-;; ("&7" ?\7)
-;; ("&8" ?\8)
-;; ("&9" ?\9)
-;; ("&:" ?\:)
-;; ("&;" ?\;)
-;; ("&<" ?\<)
-;; ("&=" ?\=)
-;; ("&>" ?\>)
-;; ("&?" ?\?)
-;; ("&At" ?\@)
-;; ("&A" ?\A)
-;; ("&B" ?\B)
-;; ("&C" ?\C)
-;; ("&D" ?\D)
-;; ("&E" ?\E)
-;; ("&F" ?\F)
-;; ("&G" ?\G)
-;; ("&H" ?\H)
-;; ("&I" ?\I)
-;; ("&J" ?\J)
-;; ("&K" ?\K)
-;; ("&L" ?\L)
-;; ("&M" ?\M)
-;; ("&N" ?\N)
-;; ("&O" ?\O)
-;; ("&P" ?\P)
-;; ("&Q" ?\Q)
-;; ("&R" ?\R)
-;; ("&S" ?\S)
-;; ("&T" ?\T)
-;; ("&U" ?\U)
-;; ("&V" ?\V)
-;; ("&W" ?\W)
-;; ("&X" ?\X)
-;; ("&Y" ?\Y)
-;; ("&Z" ?\Z)
-;; ("&<(" ?\[)
-;; ("&//" ?\\)
-;; ("&)>" ?\])
-;; ("&'>" ?\^)
-;; ("&_" ?\_)
-;; ("&'!" ?\`)
-;; ("&a" ?\a)
-;; ("&b" ?\b)
-;; ("&c" ?\c)
-;; ("&d" ?\d)
-;; ("&e" ?\e)
-;; ("&f" ?\f)
-;; ("&g" ?\g)
-;; ("&h" ?\h)
-;; ("&i" ?\i)
-;; ("&j" ?\j)
-;; ("&k" ?\k)
-;; ("&l" ?\l)
-;; ("&m" ?\m)
-;; ("&n" ?\n)
-;; ("&o" ?\o)
-;; ("&p" ?\p)
-;; ("&q" ?\q)
-;; ("&r" ?\r)
-;; ("&s" ?\s)
-;; ("&t" ?\t)
-;; ("&u" ?\u)
-;; ("&v" ?\v)
-;; ("&w" ?\w)
-;; ("&x" ?\x)
-;; ("&y" ?\y)
-;; ("&z" ?\z)
-;; ("&(!" ?\{)
-;; ("&!!" ?\|)
-;; ("&!)" ?\})
-;; ("&'?" ?\~)
-;; ("&DT" ?\)
- ("&PA" ?\€)
- ("&HO" ?\Â)
- ("&BH" ?\‚)
- ("&NH" ?\ƒ)
- ("&IN" ?\„)
- ("&NL" ?\Â…)
- ("&SA" ?\†)
- ("&ES" ?\‡)
- ("&HS" ?\ˆ)
- ("&HJ" ?\‰)
- ("&VS" ?\Š)
- ("&PD" ?\‹)
- ("&PU" ?\Œ)
- ("&RI" ?\Â)
- ("&S2" ?\ÂŽ)
- ("&S3" ?\Â)
- ("&DC" ?\Â)
- ("&P1" ?\‘)
- ("&P2" ?\Â’)
- ("&TS" ?\“)
- ("&CC" ?\”)
- ("&MW" ?\•)
- ("&SG" ?\–)
- ("&EG" ?\—)
- ("&SS" ?\˜)
- ("&GC" ?\™)
- ("&SC" ?\š)
- ("&CI" ?\›)
- ("&ST" ?\œ)
- ("&OC" ?\Â)
- ("&PM" ?\ž)
- ("&AC" ?\Ÿ)
- ("&NS" ?\ )
- ("&!I" ?\¡)
- ("&Ct" ?\¢)
- ("&Pd" ?\£)
- ("&Cu" ?\¤)
- ("&Ye" ?\Â¥)
- ("&BB" ?\¦)
- ("&SE" ?\§)
- ("&':" ?\¨)
- ("&Co" ?\©)
- ("&-a" ?\ª)
- ("&<<" ?\«)
- ("&NO" ?\¬)
- ("&--" ?\­)
- ("&Rg" ?\®)
- ("&'m" ?\¯)
- ("&DG" ?\°)
- ("&+-" ?\±)
- ("&2S" ?\²)
- ("&3S" ?\³)
- ("&''" ?\´)
- ("&My" ?\µ)
- ("&PI" ?\¶)
- ("&.M" ?\·)
- ("&'," ?\¸)
- ("&1S" ?\¹)
- ("&-o" ?\º)
- ("&>>" ?\»)
- ("&14" ?\¼)
- ("&12" ?\½)
- ("&34" ?\¾)
- ("&?I" ?\¿)
- ("&A!" ?\À)
- ("&A'" ?\Ã)
- ("&A>" ?\Â)
- ("&A?" ?\Ã)
- ("&A:" ?\Ä)
- ("&AA" ?\Ã…)
- ("&AE" ?\Æ)
- ("&C," ?\Ç)
- ("&E!" ?\È)
- ("&E'" ?\É)
- ("&E>" ?\Ê)
- ("&E:" ?\Ë)
- ("&I!" ?\Ì)
- ("&I'" ?\Ã)
- ("&I>" ?\ÃŽ)
- ("&I:" ?\Ã)
- ("&D-" ?\Ã)
- ("&N?" ?\Ñ)
- ("&O!" ?\Ã’)
- ("&O'" ?\Ó)
- ("&O>" ?\Ô)
- ("&O?" ?\Õ)
- ("&O:" ?\Ö)
- ("&*X" ?\×)
- ("&O/" ?\Ø)
- ("&U!" ?\Ù)
- ("&U'" ?\Ú)
- ("&U>" ?\Û)
- ("&U:" ?\Ü)
- ("&Y'" ?\Ã)
- ("&TH" ?\Þ)
- ("&ss" ?\ß)
- ("&a!" ?\à)
- ("&a'" ?\á)
- ("&a>" ?\â)
- ("&a?" ?\ã)
- ("&a:" ?\ä)
- ("&aa" ?\Ã¥)
- ("&ae" ?\æ)
- ("&c," ?\ç)
- ("&e!" ?\è)
- ("&e'" ?\é)
- ("&e>" ?\ê)
- ("&e:" ?\ë)
- ("&i!" ?\ì)
- ("&i'" ?\í)
- ("&i>" ?\î)
- ("&i:" ?\ï)
- ("&d-" ?\ð)
- ("&n?" ?\ñ)
- ("&o!" ?\ò)
- ("&o'" ?\ó)
- ("&o>" ?\ô)
- ("&o?" ?\õ)
- ("&o:" ?\ö)
- ("&-:" ?\÷)
- ("&o/" ?\ø)
- ("&u!" ?\ù)
- ("&u'" ?\ú)
- ("&u>" ?\û)
- ("&u:" ?\ü)
- ("&y'" ?\ý)
- ("&th" ?\þ)
- ("&y:" ?\ÿ)
- ("&A-" ?\Ä€)
- ("&a-" ?\Ä)
- ("&A(" ?\Ä‚)
- ("&a(" ?\ă)
- ("&A;" ?\Ä„)
- ("&a;" ?\Ä…)
- ("&C'" ?\Ć)
- ("&c'" ?\ć)
- ("&C>" ?\Ĉ)
- ("&c>" ?\ĉ)
- ("&C." ?\ÄŠ)
- ("&c." ?\Ä‹)
- ("&C<" ?\Č)
- ("&c<" ?\Ä)
- ("&D<" ?\ÄŽ)
- ("&d<" ?\Ä)
- ("&D/" ?\Ä)
- ("&d/" ?\Ä‘)
- ("&E-" ?\Ä’)
- ("&e-" ?\Ä“)
- ("&E(" ?\Ä”)
- ("&e(" ?\Ä•)
- ("&E." ?\Ä–)
- ("&e." ?\Ä—)
- ("&E;" ?\Ę)
- ("&e;" ?\Ä™)
- ("&E<" ?\Äš)
- ("&e<" ?\Ä›)
- ("&G>" ?\Ĝ)
- ("&g>" ?\Ä)
- ("&G(" ?\Äž)
- ("&g(" ?\ÄŸ)
- ("&G." ?\Ä )
- ("&g." ?\Ä¡)
- ("&G," ?\Ä¢)
- ("&g," ?\Ä£)
- ("&H>" ?\Ĥ)
- ("&h>" ?\Ä¥)
- ("&H/" ?\Ħ)
- ("&h/" ?\ħ)
- ("&I?" ?\Ĩ)
- ("&i?" ?\Ä©)
- ("&I-" ?\Ī)
- ("&i-" ?\Ä«)
- ("&I(" ?\Ĭ)
- ("&i(" ?\Ä­)
- ("&I;" ?\Ä®)
- ("&i;" ?\į)
- ("&I." ?\Ä°)
- ("&i." ?\ı)
- ("&IJ" ?\IJ)
- ("&ij" ?\ij)
- ("&J>" ?\Ä´)
- ("&j>" ?\ĵ)
- ("&K," ?\Ķ)
- ("&k," ?\Ä·)
- ("&kk" ?\ĸ)
- ("&L'" ?\Ĺ)
- ("&l'" ?\ĺ)
- ("&L," ?\Ä»)
- ("&l," ?\ļ)
- ("&L<" ?\Ľ)
- ("&l<" ?\ľ)
- ("&L." ?\Ä¿)
- ("&l." ?\Å€)
- ("&L/" ?\Å)
- ("&l/" ?\Å‚)
- ("&N'" ?\Ń)
- ("&n'" ?\Å„)
- ("&N," ?\Å…)
- ("&n," ?\ņ)
- ("&N<" ?\Ň)
- ("&n<" ?\ň)
- ("&'n" ?\ʼn)
- ("&NG" ?\ÅŠ)
- ("&ng" ?\Å‹)
- ("&O-" ?\Ō)
- ("&o-" ?\Å)
- ("&O(" ?\ÅŽ)
- ("&o(" ?\Å)
- ("&O\"" ?\Å)
- ("&o\"" ?\Å‘)
- ("&OE" ?\Å’)
- ("&oe" ?\Å“)
- ("&R'" ?\Å”)
- ("&r'" ?\Å•)
- ("&R," ?\Å–)
- ("&r," ?\Å—)
- ("&R<" ?\Ř)
- ("&r<" ?\Å™)
- ("&S'" ?\Åš)
- ("&s'" ?\Å›)
- ("&S>" ?\Ŝ)
- ("&s>" ?\Å)
- ("&S," ?\Åž)
- ("&s," ?\ÅŸ)
- ("&S<" ?\Å )
- ("&s<" ?\Å¡)
- ("&T," ?\Å¢)
- ("&t," ?\Å£)
- ("&T<" ?\Ť)
- ("&t<" ?\Å¥)
- ("&T/" ?\Ŧ)
- ("&t/" ?\ŧ)
- ("&U?" ?\Ũ)
- ("&u?" ?\Å©)
- ("&U-" ?\Ū)
- ("&u-" ?\Å«)
- ("&U(" ?\Ŭ)
- ("&u(" ?\Å­)
- ("&U0" ?\Å®)
- ("&u0" ?\ů)
- ("&U\"" ?\Å°)
- ("&u\"" ?\ű)
- ("&U;" ?\Ų)
- ("&u;" ?\ų)
- ("&W>" ?\Å´)
- ("&w>" ?\ŵ)
- ("&Y>" ?\Ŷ)
- ("&y>" ?\Å·)
- ("&Y:" ?\Ÿ)
- ("&Z'" ?\Ź)
- ("&z'" ?\ź)
- ("&Z." ?\Å»)
- ("&z." ?\ż)
- ("&Z<" ?\Ž)
- ("&z<" ?\ž)
- ("&s1" ?\Å¿)
- ("&b/" ?\Æ€)
- ("&B2" ?\Æ)
- ("&C2" ?\Ƈ)
- ("&c2" ?\ƈ)
- ("&F2" ?\Æ‘)
- ("&f2" ?\Æ’)
- ("&K2" ?\Ƙ)
- ("&k2" ?\Æ™)
- ("&O9" ?\Æ )
- ("&o9" ?\Æ¡)
- ("&OI" ?\Æ¢)
- ("&oi" ?\Æ£)
- ("&yr" ?\Ʀ)
- ("&U9" ?\Ư)
- ("&u9" ?\Æ°)
- ("&Z/" ?\Ƶ)
- ("&z/" ?\ƶ)
- ("&ED" ?\Æ·)
- ("&DZ<" ?\Ç„)
- ("&Dz<" ?\Ç…)
- ("&dz<" ?\dž)
- ("&LJ3" ?\LJ)
- ("&Lj3" ?\Lj)
- ("&lj3" ?\lj)
- ("&NJ3" ?\ÇŠ)
- ("&Nj3" ?\Ç‹)
- ("&nj3" ?\nj)
- ("&A<" ?\Ç)
- ("&a<" ?\ÇŽ)
- ("&I<" ?\Ç)
- ("&i<" ?\Ç)
- ("&O<" ?\Ç‘)
- ("&o<" ?\Ç’)
- ("&U<" ?\Ç“)
- ("&u<" ?\Ç”)
- ("&U:-" ?\Ç•)
- ("&u:-" ?\Ç–)
- ("&U:'" ?\Ç—)
- ("&u:'" ?\ǘ)
- ("&U:<" ?\Ç™)
- ("&u:<" ?\Çš)
- ("&U:!" ?\Ç›)
- ("&u:!" ?\ǜ)
- ("&e1" ?\Ç)
- ("&A1" ?\Çž)
- ("&a1" ?\ÇŸ)
- ("&A7" ?\Ç )
- ("&a7" ?\Ç¡)
- ("&A3" ?\Ç¢)
- ("&a3" ?\Ç£)
- ("&G/" ?\Ǥ)
- ("&g/" ?\Ç¥)
- ("&G<" ?\Ǧ)
- ("&g<" ?\ǧ)
- ("&K<" ?\Ǩ)
- ("&k<" ?\Ç©)
- ("&O;" ?\Ǫ)
- ("&o;" ?\Ç«)
- ("&O1" ?\Ǭ)
- ("&o1" ?\Ç­)
- ("&EZ" ?\Ç®)
- ("&ez" ?\ǯ)
- ("&j<" ?\Ç°)
- ("&DZ3" ?\DZ)
- ("&Dz3" ?\Dz)
- ("&dz3" ?\dz)
- ("&G'" ?\Ç´)
- ("&g'" ?\ǵ)
- ("&AA'" ?\Ǻ)
- ("&aa'" ?\Ç»)
- ("&AE'" ?\Ǽ)
- ("&ae'" ?\ǽ)
- ("&O/'" ?\Ǿ)
- ("&o/'" ?\Ç¿)
- ("&A!!" ?\È€)
- ("&a!!" ?\È)
- ("&A)" ?\È‚)
- ("&a)" ?\ȃ)
- ("&E!!" ?\È„)
- ("&e!!" ?\È…)
- ("&E)" ?\Ȇ)
- ("&e)" ?\ȇ)
- ("&I!!" ?\Ȉ)
- ("&i!!" ?\ȉ)
- ("&I)" ?\ÈŠ)
- ("&i)" ?\È‹)
- ("&O!!" ?\Ȍ)
- ("&o!!" ?\È)
- ("&O)" ?\ÈŽ)
- ("&o)" ?\È)
- ("&R!!" ?\È)
- ("&r!!" ?\È‘)
- ("&R)" ?\È’)
- ("&r)" ?\È“)
- ("&U!!" ?\È”)
- ("&u!!" ?\È•)
- ("&U)" ?\È–)
- ("&u)" ?\È—)
- ("&r1" ?\ɼ)
- ("&ed" ?\Ê’)
- ("&;S" ?\Ê»)
- ("&1>" ?\ˆ)
- ("&'<" ?\ˇ)
- ("&1-" ?\ˉ)
- ("&1!" ?\Ë‹)
- ("&'(" ?\˘)
- ("&'." ?\Ë™)
- ("&'0" ?\Ëš)
- ("&';" ?\Ë›)
- ("&1?" ?\˜)
- ("&'\"" ?\Ë)
- ("&'G" ?\Í´)
- ("&,G" ?\͵)
- ("&j3" ?\ͺ)
- ("&?%" ?\;)
- ("&'*" ?\΄)
- ("&'%" ?\Î…)
- ("&A%" ?\Ά)
- ("&.*" ?\·)
- ("&E%" ?\Έ)
- ("&Y%" ?\Ή)
- ("&I%" ?\Ί)
- ("&O%" ?\Ό)
- ("&U%" ?\ÎŽ)
- ("&W%" ?\Î)
- ("&i3" ?\Î)
- ("&A*" ?\Α)
- ("&B*" ?\Î’)
- ("&G*" ?\Γ)
- ("&D*" ?\Δ)
- ("&E*" ?\Ε)
- ("&Z*" ?\Ζ)
- ("&Y*" ?\Η)
- ("&H*" ?\Θ)
- ("&I*" ?\Ι)
- ("&K*" ?\Κ)
- ("&L*" ?\Λ)
- ("&M*" ?\Μ)
- ("&N*" ?\Î)
- ("&C*" ?\Ξ)
- ("&O*" ?\Ο)
- ("&P*" ?\Π)
- ("&R*" ?\Ρ)
- ("&S*" ?\Σ)
- ("&T*" ?\Τ)
- ("&U*" ?\Î¥)
- ("&F*" ?\Φ)
- ("&X*" ?\Χ)
- ("&Q*" ?\Ψ)
- ("&W*" ?\Ω)
- ("&J*" ?\Ϊ)
- ("&V*" ?\Ϋ)
- ("&a%" ?\ά)
- ("&e%" ?\έ)
- ("&y%" ?\ή)
- ("&i%" ?\ί)
- ("&u3" ?\ΰ)
- ("&a*" ?\α)
- ("&b*" ?\β)
- ("&g*" ?\γ)
- ("&d*" ?\δ)
- ("&e*" ?\ε)
- ("&z*" ?\ζ)
- ("&y*" ?\η)
- ("&h*" ?\θ)
- ("&i*" ?\ι)
- ("&k*" ?\κ)
- ("&l*" ?\λ)
- ("&m*" ?\μ)
- ("&n*" ?\ν)
- ("&c*" ?\ξ)
- ("&o*" ?\ο)
- ("&p*" ?\Ï€)
- ("&r*" ?\Ï)
- ("&*s" ?\Ï‚)
- ("&s*" ?\σ)
- ("&t*" ?\Ï„)
- ("&u*" ?\Ï…)
- ("&f*" ?\φ)
- ("&x*" ?\χ)
- ("&q*" ?\ψ)
- ("&w*" ?\ω)
- ("&j*" ?\ÏŠ)
- ("&v*" ?\Ï‹)
- ("&o%" ?\ό)
- ("&u%" ?\Ï)
- ("&w%" ?\ÏŽ)
- ("&b3" ?\Ï)
- ("&T3" ?\Ïš)
- ("&M3" ?\Ϝ)
- ("&K3" ?\Ïž)
- ("&P3" ?\Ï )
- ("&IO" ?\Ð)
- ("&D%" ?\Ђ)
- ("&G%" ?\Ѓ)
- ("&IE" ?\Є)
- ("&DS" ?\Ð…)
- ("&II" ?\І)
- ("&YI" ?\Ї)
- ("&J%" ?\Ј)
- ("&LJ" ?\Љ)
- ("&NJ" ?\Њ)
- ("&Ts" ?\Ћ)
- ("&KJ" ?\Ќ)
- ("&V%" ?\ÐŽ)
- ("&DZ" ?\Ð)
- ("&A=" ?\Ð)
- ("&B=" ?\Б)
- ("&V=" ?\Ð’)
- ("&G=" ?\Г)
- ("&D=" ?\Д)
- ("&E=" ?\Е)
- ("&Z%" ?\Ж)
- ("&Z=" ?\З)
- ("&I=" ?\И)
- ("&J=" ?\Й)
- ("&K=" ?\К)
- ("&L=" ?\Л)
- ("&M=" ?\М)
- ("&N=" ?\Ð)
- ("&O=" ?\О)
- ("&P=" ?\П)
- ("&R=" ?\Р)
- ("&S=" ?\С)
- ("&T=" ?\Т)
- ("&U=" ?\У)
- ("&F=" ?\Ф)
- ("&H=" ?\Ð¥)
- ("&C=" ?\Ц)
- ("&C%" ?\Ч)
- ("&S%" ?\Ш)
- ("&Sc" ?\Щ)
- ("&=\"" ?\Ъ)
- ("&Y=" ?\Ы)
- ("&%\"" ?\Ь)
- ("&JE" ?\Э)
- ("&JU" ?\Ю)
- ("&JA" ?\Я)
- ("&a=" ?\а)
- ("&b=" ?\б)
- ("&v=" ?\в)
- ("&g=" ?\г)
- ("&d=" ?\д)
- ("&e=" ?\е)
- ("&z%" ?\ж)
- ("&z=" ?\з)
- ("&i=" ?\и)
- ("&j=" ?\й)
- ("&k=" ?\к)
- ("&l=" ?\л)
- ("&m=" ?\м)
- ("&n=" ?\н)
- ("&o=" ?\о)
- ("&p=" ?\п)
- ("&r=" ?\Ñ€)
- ("&s=" ?\Ñ)
- ("&t=" ?\Ñ‚)
- ("&u=" ?\у)
- ("&f=" ?\Ñ„)
- ("&h=" ?\Ñ…)
- ("&c=" ?\ц)
- ("&c%" ?\ч)
- ("&s%" ?\ш)
- ("&sc" ?\щ)
- ("&='" ?\ÑŠ)
- ("&y=" ?\Ñ‹)
- ("&%'" ?\ь)
- ("&je" ?\Ñ)
- ("&ju" ?\ÑŽ)
- ("&ja" ?\Ñ)
- ("&io" ?\Ñ‘)
- ("&d%" ?\Ñ’)
- ("&g%" ?\Ñ“)
- ("&ie" ?\Ñ”)
- ("&ds" ?\Ñ•)
- ("&ii" ?\Ñ–)
- ("&yi" ?\Ñ—)
- ("&j%" ?\ј)
- ("&lj" ?\Ñ™)
- ("&nj" ?\Ñš)
- ("&ts" ?\Ñ›)
- ("&kj" ?\ќ)
- ("&v%" ?\Ñž)
- ("&dz" ?\ÑŸ)
- ("&Y3" ?\Ñ¢)
- ("&y3" ?\Ñ£)
- ("&O3" ?\Ѫ)
- ("&o3" ?\Ñ«)
- ("&F3" ?\Ѳ)
- ("&f3" ?\ѳ)
- ("&V3" ?\Ñ´)
- ("&v3" ?\ѵ)
- ("&C3" ?\Ò€)
- ("&c3" ?\Ò)
- ("&G3" ?\Ò)
- ("&g3" ?\Ò‘)
- ("&A+" ?\×)
- ("&B+" ?\ב)
- ("&G+" ?\×’)
- ("&D+" ?\ד)
- ("&H+" ?\×”)
- ("&W+" ?\ו)
- ("&Z+" ?\×–)
- ("&X+" ?\×—)
- ("&Tj" ?\ט)
- ("&J+" ?\×™)
- ("&K%" ?\ך)
- ("&K+" ?\×›)
- ("&L+" ?\ל)
- ("&M%" ?\×)
- ("&M+" ?\מ)
- ("&N%" ?\ן)
- ("&N+" ?\× )
- ("&S+" ?\ס)
- ("&E+" ?\×¢)
- ("&P%" ?\×£)
- ("&P+" ?\פ)
- ("&Zj" ?\×¥)
- ("&ZJ" ?\צ)
- ("&Q+" ?\ק)
- ("&R+" ?\ר)
- ("&Sh" ?\ש)
- ("&T+" ?\ת)
- ("&,+" ?\،)
- ("&;+" ?\Ø›)
- ("&?+" ?\ØŸ)
- ("&H'" ?\Ø¡)
- ("&aM" ?\Ø¢)
- ("&aH" ?\Ø£)
- ("&wH" ?\ؤ)
- ("&ah" ?\Ø¥)
- ("&yH" ?\ئ)
- ("&a+" ?\ا)
- ("&b+" ?\ب)
- ("&tm" ?\Ø©)
- ("&t+" ?\ت)
- ("&tk" ?\Ø«)
- ("&g+" ?\ج)
- ("&hk" ?\Ø­)
- ("&x+" ?\Ø®)
- ("&d+" ?\د)
- ("&dk" ?\Ø°)
- ("&r+" ?\ر)
- ("&z+" ?\ز)
- ("&s+" ?\س)
- ("&sn" ?\Ø´)
- ("&c+" ?\ص)
- ("&dd" ?\ض)
- ("&tj" ?\Ø·)
- ("&zH" ?\ظ)
- ("&e+" ?\ع)
- ("&i+" ?\غ)
- ("&++" ?\Ù€)
- ("&f+" ?\Ù)
- ("&q+" ?\Ù‚)
- ("&k+" ?\Ùƒ)
- ("&l+" ?\Ù„)
- ("&m+" ?\Ù…)
- ("&n+" ?\Ù†)
- ("&h+" ?\Ù‡)
- ("&w+" ?\Ùˆ)
- ("&j+" ?\Ù‰)
- ("&y+" ?\ÙŠ)
- ("&:+" ?\Ù‹)
- ("&\"+" ?\ٌ)
- ("&=+" ?\Ù)
- ("&/+" ?\ÙŽ)
- ("&'+" ?\Ù)
- ("&1+" ?\Ù)
- ("&3+" ?\Ù‘)
- ("&0+" ?\Ù’)
- ("&0a" ?\Ù )
- ("&1a" ?\Ù¡)
- ("&2a" ?\Ù¢)
- ("&3a" ?\Ù£)
- ("&4a" ?\Ù¤)
- ("&5a" ?\Ù¥)
- ("&6a" ?\Ù¦)
- ("&7a" ?\Ù§)
- ("&8a" ?\Ù¨)
- ("&9a" ?\Ù©)
- ("&aS" ?\Ù°)
- ("&p+" ?\Ù¾)
- ("&hH" ?\Ú)
- ("&tc" ?\Ú†)
- ("&zj" ?\Ú˜)
- ("&v+" ?\Ú¤)
- ("&gf" ?\Ú¯)
- ("&A-0" ?\Ḁ)
- ("&a-0" ?\á¸)
- ("&B." ?\Ḃ)
- ("&b." ?\ḃ)
- ("&B-." ?\Ḅ)
- ("&b-." ?\ḅ)
- ("&B_" ?\Ḇ)
- ("&b_" ?\ḇ)
- ("&C,'" ?\Ḉ)
- ("&c,'" ?\ḉ)
- ("&D." ?\Ḋ)
- ("&d." ?\ḋ)
- ("&D-." ?\Ḍ)
- ("&d-." ?\á¸)
- ("&D_" ?\Ḏ)
- ("&d_" ?\á¸)
- ("&D," ?\á¸)
- ("&d," ?\ḑ)
- ("&D->" ?\Ḓ)
- ("&d->" ?\ḓ)
- ("&E-!" ?\Ḕ)
- ("&e-!" ?\ḕ)
- ("&E-'" ?\Ḗ)
- ("&e-'" ?\ḗ)
- ("&E->" ?\Ḙ)
- ("&e->" ?\ḙ)
- ("&E-?" ?\Ḛ)
- ("&e-?" ?\ḛ)
- ("&E,(" ?\Ḝ)
- ("&e,(" ?\á¸)
- ("&F." ?\Ḟ)
- ("&f." ?\ḟ)
- ("&G-" ?\Ḡ)
- ("&g-" ?\ḡ)
- ("&H." ?\Ḣ)
- ("&h." ?\ḣ)
- ("&H-." ?\Ḥ)
- ("&h-." ?\ḥ)
- ("&H:" ?\Ḧ)
- ("&h:" ?\ḧ)
- ("&H," ?\Ḩ)
- ("&h," ?\ḩ)
- ("&H-(" ?\Ḫ)
- ("&h-(" ?\ḫ)
- ("&I-?" ?\Ḭ)
- ("&i-?" ?\ḭ)
- ("&I:'" ?\Ḯ)
- ("&i:'" ?\ḯ)
- ("&K'" ?\Ḱ)
- ("&k'" ?\ḱ)
- ("&K-." ?\Ḳ)
- ("&k-." ?\ḳ)
- ("&K_" ?\Ḵ)
- ("&k_" ?\ḵ)
- ("&L-." ?\Ḷ)
- ("&l-." ?\ḷ)
- ("&L_" ?\Ḻ)
- ("&l_" ?\ḻ)
- ("&L->" ?\Ḽ)
- ("&l->" ?\ḽ)
- ("&M'" ?\Ḿ)
- ("&m'" ?\ḿ)
- ("&M." ?\á¹€)
- ("&m." ?\á¹)
- ("&M-." ?\Ṃ)
- ("&m-." ?\ṃ)
- ("&N." ?\Ṅ)
- ("&n." ?\á¹…)
- ("&N-." ?\Ṇ)
- ("&n-." ?\ṇ)
- ("&N_" ?\Ṉ)
- ("&n_" ?\ṉ)
- ("&N->" ?\Ṋ)
- ("&n->" ?\ṋ)
- ("&O?'" ?\Ṍ)
- ("&o?'" ?\á¹)
- ("&O?:" ?\Ṏ)
- ("&o?:" ?\á¹)
- ("&O-!" ?\á¹)
- ("&o-!" ?\ṑ)
- ("&O-'" ?\á¹’)
- ("&o-'" ?\ṓ)
- ("&P'" ?\á¹”)
- ("&p'" ?\ṕ)
- ("&P." ?\á¹–)
- ("&p." ?\á¹—)
- ("&R." ?\Ṙ)
- ("&r." ?\á¹™)
- ("&R-." ?\Ṛ)
- ("&r-." ?\á¹›)
- ("&R_" ?\Ṟ)
- ("&r_" ?\ṟ)
- ("&S." ?\á¹ )
- ("&s." ?\ṡ)
- ("&S-." ?\á¹¢)
- ("&s-." ?\á¹£)
- ("&S'." ?\Ṥ)
- ("&s'." ?\á¹¥)
- ("&S<." ?\Ṧ)
- ("&s<." ?\ṧ)
- ("&T." ?\Ṫ)
- ("&t." ?\ṫ)
- ("&T-." ?\Ṭ)
- ("&t-." ?\á¹­)
- ("&T_" ?\á¹®)
- ("&t_" ?\ṯ)
- ("&T->" ?\á¹°)
- ("&t->" ?\á¹±)
- ("&U-?" ?\á¹´)
- ("&u-?" ?\á¹µ)
- ("&U->" ?\Ṷ)
- ("&u->" ?\á¹·)
- ("&U?'" ?\Ṹ)
- ("&u?'" ?\á¹¹)
- ("&U-:" ?\Ṻ)
- ("&u-:" ?\á¹»)
- ("&V?" ?\á¹¼)
- ("&v?" ?\á¹½)
- ("&V-." ?\á¹¾)
- ("&v-." ?\ṿ)
- ("&W!" ?\Ẁ)
- ("&w!" ?\áº)
- ("&W'" ?\Ẃ)
- ("&w'" ?\ẃ)
- ("&W:" ?\Ẅ)
- ("&w:" ?\ẅ)
- ("&W." ?\Ẇ)
- ("&w." ?\ẇ)
- ("&W-." ?\Ẉ)
- ("&w-." ?\ẉ)
- ("&X." ?\Ẋ)
- ("&x." ?\ẋ)
- ("&X:" ?\Ẍ)
- ("&x:" ?\áº)
- ("&Y." ?\Ẏ)
- ("&y." ?\áº)
- ("&Z>" ?\áº)
- ("&z>" ?\ẑ)
- ("&Z-." ?\Ẓ)
- ("&z-." ?\ẓ)
- ("&Z_" ?\Ẕ)
- ("&z_" ?\ẕ)
- ("&A-." ?\Ạ)
- ("&a-." ?\ạ)
- ("&A2" ?\Ả)
- ("&a2" ?\ả)
- ("&A>'" ?\Ấ)
- ("&a>'" ?\ấ)
- ("&A>!" ?\Ầ)
- ("&a>!" ?\ầ)
- ("&A>2" ?\Ẩ)
- ("&a>2" ?\ẩ)
- ("&A>?" ?\Ẫ)
- ("&a>?" ?\ẫ)
- ("&A('" ?\Ắ)
- ("&a('" ?\ắ)
- ("&A(!" ?\Ằ)
- ("&a(!" ?\ằ)
- ("&A(2" ?\Ẳ)
- ("&a(2" ?\ẳ)
- ("&A(?" ?\Ẵ)
- ("&a(?" ?\ẵ)
- ("&E-." ?\Ẹ)
- ("&e-." ?\ẹ)
- ("&E2" ?\Ẻ)
- ("&e2" ?\ẻ)
- ("&E?" ?\Ẽ)
- ("&e?" ?\ẽ)
- ("&E>'" ?\Ế)
- ("&e>'" ?\ế)
- ("&E>!" ?\Ề)
- ("&e>!" ?\á»)
- ("&E>2" ?\Ể)
- ("&e>2" ?\ể)
- ("&E>?" ?\Ễ)
- ("&e>?" ?\á»…)
- ("&I2" ?\Ỉ)
- ("&i2" ?\ỉ)
- ("&I-." ?\Ị)
- ("&i-." ?\ị)
- ("&O-." ?\Ọ)
- ("&o-." ?\á»)
- ("&O2" ?\Ỏ)
- ("&o2" ?\á»)
- ("&O>'" ?\á»)
- ("&o>'" ?\ố)
- ("&O>!" ?\á»’)
- ("&o>!" ?\ồ)
- ("&O>2" ?\á»”)
- ("&o>2" ?\ổ)
- ("&O>?" ?\á»–)
- ("&o>?" ?\á»—)
- ("&O9'" ?\Ớ)
- ("&o9'" ?\á»›)
- ("&O9!" ?\Ờ)
- ("&o9!" ?\á»)
- ("&O92" ?\Ở)
- ("&o92" ?\ở)
- ("&O9?" ?\á» )
- ("&o9?" ?\ỡ)
- ("&U-." ?\Ụ)
- ("&u-." ?\ụ)
- ("&U2" ?\Ủ)
- ("&u2" ?\ủ)
- ("&U9'" ?\Ứ)
- ("&u9'" ?\ứ)
- ("&U9!" ?\Ừ)
- ("&u9!" ?\ừ)
- ("&U92" ?\Ử)
- ("&u92" ?\á»­)
- ("&U9?" ?\á»®)
- ("&u9?" ?\ữ)
- ("&Y!" ?\Ỳ)
- ("&y!" ?\ỳ)
- ("&Y-." ?\á»´)
- ("&y-." ?\ỵ)
- ("&Y2" ?\Ỷ)
- ("&y2" ?\á»·)
- ("&Y?" ?\Ỹ)
- ("&y?" ?\ỹ)
- ("&a*," ?\á¼€)
- ("&a*;" ?\á¼)
- ("&A*," ?\Ἀ)
- ("&A*;" ?\Ἁ)
- ("&e*," ?\á¼)
- ("&e*;" ?\ἑ)
- ("&E*," ?\Ἐ)
- ("&E*;" ?\á¼™)
- ("&y*," ?\á¼ )
- ("&y*;" ?\ἡ)
- ("&Y*," ?\Ἠ)
- ("&Y*;" ?\Ἡ)
- ("&i*," ?\á¼°)
- ("&i*;" ?\á¼±)
- ("&I*," ?\Ἰ)
- ("&I*;" ?\á¼¹)
- ("&o*," ?\á½€)
- ("&o*;" ?\á½)
- ("&O*," ?\Ὀ)
- ("&O*;" ?\Ὁ)
- ("&u*," ?\á½)
- ("&u*;" ?\ὑ)
- ("&U*;" ?\á½™)
- ("&w*," ?\á½ )
- ("&w*;" ?\ὡ)
- ("&W*," ?\Ὠ)
- ("&W*;" ?\Ὡ)
- ("&a*!" ?\á½°)
- ("&a*'" ?\á½±)
- ("&e*!" ?\á½²)
- ("&e*'" ?\á½³)
- ("&y*!" ?\á½´)
- ("&y*'" ?\á½µ)
- ("&i*!" ?\ὶ)
- ("&i*'" ?\á½·)
- ("&o*!" ?\ὸ)
- ("&o*'" ?\á½¹)
- ("&u*!" ?\ὺ)
- ("&u*'" ?\á½»)
- ("&w*!" ?\á½¼)
- ("&w*'" ?\á½½)
- ("&a*(" ?\á¾°)
- ("&a*-" ?\á¾±)
- ("&a*j" ?\á¾³)
- ("&a*?" ?\ᾶ)
- ("&A*(" ?\Ᾰ)
- ("&A*-" ?\á¾¹)
- ("&A*!" ?\Ὰ)
- ("&A*'" ?\á¾»)
- ("&A*J" ?\á¾¼)
- ("&)*" ?\á¾½)
- ("&J3" ?\á¾¾)
- ("&,," ?\᾿)
- ("&?*" ?\á¿€)
- ("&?:" ?\á¿)
- ("&y*j" ?\ῃ)
- ("&y*?" ?\ῆ)
- ("&E*'" ?\Έ)
- ("&Y*!" ?\á¿Š)
- ("&Y*'" ?\á¿‹)
- ("&Y*J" ?\ῌ)
- ("&,!" ?\á¿)
- ("&,'" ?\á¿Ž)
- ("&?," ?\á¿)
- ("&i*(" ?\á¿)
- ("&i*-" ?\á¿‘)
- ("&i*?" ?\á¿–)
- ("&I*(" ?\Ῐ)
- ("&I*-" ?\á¿™)
- ("&I*!" ?\á¿š)
- ("&I*'" ?\á¿›)
- ("&;!" ?\á¿)
- ("&;'" ?\á¿ž)
- ("&?;" ?\á¿Ÿ)
- ("&u*(" ?\á¿ )
- ("&u*-" ?\á¿¡)
- ("&r*," ?\ῤ)
- ("&r*;" ?\á¿¥)
- ("&u*?" ?\ῦ)
- ("&U*(" ?\Ῠ)
- ("&U*-" ?\á¿©)
- ("&U*!" ?\Ὺ)
- ("&U*'" ?\á¿«)
- ("&R*;" ?\Ῥ)
- ("&!:" ?\á¿­)
- ("&:'" ?\á¿®)
- ("&!*" ?\`)
- ("&w*j" ?\ῳ)
- ("&w*?" ?\ῶ)
- ("&O*!" ?\Ὸ)
- ("&O*'" ?\Ό)
- ("&W*!" ?\Ὼ)
- ("&W*'" ?\á¿»)
- ("&W*J" ?\ῼ)
- ("&/*" ?\´)
- ("&;;" ?\῾)
- ("&1N" ?\ )
- ("&1M" ?\ )
- ("&3M" ?\ )
- ("&4M" ?\ )
- ("&6M" ?\ )
- ("&1T" ?\ )
- ("&1H" ?\ )
- ("&LR" ?\‎)
- ("&RL" ?\â€)
- ("&-1" ?\â€)
- ("&-N" ?\–)
- ("&-M" ?\—)
- ("&-3" ?\―)
- ("&!2" ?\‖)
- ("&=2" ?\‗)
- ("&'6" ?\‘)
- ("&'9" ?\’)
- ("&.9" ?\‚)
- ("&9'" ?\‛)
- ("&\"6" ?\“)
- ("&\"9" ?\â€)
- ("&:9" ?\„)
- ("&9\"" ?\‟)
- ("&/-" ?\†)
- ("&/=" ?\‡)
- ("&sb" ?\•)
- ("&3b" ?\‣)
- ("&.." ?\‥)
- ("&.3" ?\…)
- ("&.-" ?\‧)
- ("&%0" ?\‰)
- ("&1'" ?\′)
- ("&2'" ?\″)
- ("&3'" ?\‴)
- ("&1\"" ?\‵)
- ("&2\"" ?\‶)
- ("&3\"" ?\‷)
- ("&Ca" ?\‸)
- ("&<1" ?\‹)
- ("&>1" ?\›)
- ("&:X" ?\※)
- ("&!*2" ?\‼)
- ("&'-" ?\‾)
- ("&-b" ?\âƒ)
- ("&/f" ?\â„)
- ("&0S" ?\â°)
- ("&4S" ?\â´)
- ("&5S" ?\âµ)
- ("&6S" ?\â¶)
- ("&7S" ?\â·)
- ("&8S" ?\â¸)
- ("&9S" ?\â¹)
- ("&+S" ?\âº)
- ("&-S" ?\â»)
- ("&=S" ?\â¼)
- ("&(S" ?\â½)
- ("&)S" ?\â¾)
- ("&nS" ?\â¿)
- ("&0s" ?\â‚€)
- ("&1s" ?\â‚)
- ("&2s" ?\â‚‚)
- ("&3s" ?\₃)
- ("&4s" ?\â‚„)
- ("&5s" ?\â‚…)
- ("&6s" ?\₆)
- ("&7s" ?\₇)
- ("&8s" ?\₈)
- ("&9s" ?\₉)
- ("&+s" ?\â‚Š)
- ("&-s" ?\â‚‹)
- ("&=s" ?\₌)
- ("&(s" ?\â‚)
- ("&)s" ?\â‚Ž)
- ("&Ff" ?\â‚£)
- ("&Li" ?\₤)
- ("&Pt" ?\₧)
- ("&W=" ?\â‚©)
- ("&NSh" ?\₪)
- ("&Eu" ?\€)
- ("&\"7" ?\⃑)
- ("&oC" ?\℃)
- ("&co" ?\â„…)
- ("&oF" ?\℉)
- ("&N0" ?\â„–)
- ("&PO" ?\â„—)
- ("&Rx" ?\â„ž)
- ("&SM" ?\â„ )
- ("&TM" ?\â„¢)
- ("&Om" ?\Ω)
- ("&AO" ?\â„«)
- ("&Est" ?\â„®)
- ("&13" ?\â…“)
- ("&23" ?\â…”)
- ("&15" ?\â…•)
- ("&25" ?\â…–)
- ("&35" ?\â…—)
- ("&45" ?\â…˜)
- ("&16" ?\â…™)
- ("&56" ?\â…š)
- ("&18" ?\â…›)
- ("&38" ?\⅜)
- ("&58" ?\â…)
- ("&78" ?\â…ž)
- ("&1R" ?\â… )
- ("&2R" ?\â…¡)
- ("&3R" ?\â…¢)
- ("&4R" ?\â…£)
- ("&5R" ?\â…¤)
- ("&6R" ?\â…¥)
- ("&7R" ?\â…¦)
- ("&8R" ?\â…§)
- ("&9R" ?\â…¨)
- ("&aR" ?\â…©)
- ("&bR" ?\â…ª)
- ("&cR" ?\â…«)
- ("&50R" ?\â…¬)
- ("&1r" ?\â…°)
- ("&2r" ?\â…±)
- ("&3r" ?\â…²)
- ("&4r" ?\â…³)
- ("&5r" ?\â…´)
- ("&6r" ?\â…µ)
- ("&7r" ?\â…¶)
- ("&8r" ?\â…·)
- ("&9r" ?\â…¸)
- ("&ar" ?\â…¹)
- ("&br" ?\â…º)
- ("&cr" ?\â…»)
- ("&50r" ?\â…¼)
- ("&<-" ?\â†)
- ("&-!" ?\↑)
- ("&->" ?\→)
- ("&-v" ?\↓)
- ("&<>" ?\↔)
- ("&UD" ?\↕)
- ("&<!!" ?\↖)
- ("&//>" ?\↗)
- ("&!!>" ?\↘)
- ("&<//" ?\↙)
- ("&UD-" ?\↨)
- ("&>V" ?\⇀)
- ("&<=" ?\â‡)
- ("&=>" ?\⇒)
- ("&==" ?\⇔)
- ("&FA" ?\∀)
- ("&dP" ?\∂)
- ("&TE" ?\∃)
- ("&/0" ?\∅)
- ("&DE" ?\∆)
- ("&NB" ?\∇)
- ("&(-" ?\∈)
- ("&-)" ?\∋)
- ("&FP" ?\∎)
- ("&*P" ?\âˆ)
- ("&+Z" ?\∑)
- ("&-2" ?\−)
- ("&-+" ?\∓)
- ("&.+" ?\∔)
- ("&*-" ?\∗)
- ("&Ob" ?\∘)
- ("&Sb" ?\∙)
- ("&RT" ?\√)
- ("&0(" ?\âˆ)
- ("&00" ?\∞)
- ("&-L" ?\∟)
- ("&-V" ?\∠)
- ("&PP" ?\∥)
- ("&AN" ?\∧)
- ("&OR" ?\∨)
- ("&(U" ?\∩)
- ("&)U" ?\∪)
- ("&In" ?\∫)
- ("&DI" ?\∬)
- ("&Io" ?\∮)
- ("&.:" ?\∴)
- ("&:." ?\∵)
- ("&:R" ?\∶)
- ("&::" ?\∷)
- ("&?1" ?\∼)
- ("&CG" ?\∾)
- ("&?-" ?\≃)
- ("&?=" ?\≅)
- ("&?2" ?\≈)
- ("&=?" ?\≌)
- ("&HI" ?\≓)
- ("&!=" ?\≠)
- ("&=3" ?\≡)
- ("&=<" ?\≤)
- ("&>=" ?\≥)
- ("&<*" ?\≪)
- ("&*>" ?\≫)
- ("&!<" ?\≮)
- ("&!>" ?\≯)
- ("&(C" ?\⊂)
- ("&)C" ?\⊃)
- ("&(_" ?\⊆)
- ("&)_" ?\⊇)
- ("&0." ?\⊙)
- ("&02" ?\⊚)
- ("&-T" ?\⊥)
- ("&.P" ?\â‹…)
- ("&:3" ?\â‹®)
- ("&Eh" ?\⌂)
- ("&<7" ?\⌈)
- ("&>7" ?\⌉)
- ("&7<" ?\⌊)
- ("&7>" ?\⌋)
- ("&NI" ?\âŒ)
- ("&(A" ?\⌒)
- ("&TR" ?\⌕)
- ("&88" ?\⌘)
- ("&Iu" ?\⌠)
- ("&Il" ?\⌡)
- ("&</" ?\〈)
- ("&/>" ?\〉)
- ("&Vs" ?\â£)
- ("&1h" ?\â‘€)
- ("&3h" ?\â‘)
- ("&2h" ?\â‘‚)
- ("&4h" ?\⑃)
- ("&1j" ?\⑆)
- ("&2j" ?\⑇)
- ("&3j" ?\⑈)
- ("&4j" ?\⑉)
- ("&1-o" ?\â‘ )
- ("&2-o" ?\â‘¡)
- ("&3-o" ?\â‘¢)
- ("&4-o" ?\â‘£)
- ("&5-o" ?\⑤)
- ("&6-o" ?\â‘¥)
- ("&7-o" ?\⑦)
- ("&8-o" ?\⑧)
- ("&9-o" ?\⑨)
- ("&(1)" ?\â‘´)
- ("&(2)" ?\⑵)
- ("&(3)" ?\⑶)
- ("&(4)" ?\â‘·)
- ("&(5)" ?\⑸)
- ("&(6)" ?\⑹)
- ("&(7)" ?\⑺)
- ("&(8)" ?\â‘»)
- ("&(9)" ?\⑼)
- ("&1." ?\â’ˆ)
- ("&2." ?\â’‰)
- ("&3." ?\â’Š)
- ("&4." ?\â’‹)
- ("&5." ?\⒌)
- ("&6." ?\â’)
- ("&7." ?\â’Ž)
- ("&8." ?\â’)
- ("&9." ?\â’)
- ("&10." ?\â’‘)
- ("&11." ?\â’’)
- ("&12." ?\â’“)
- ("&13." ?\â’”)
- ("&14." ?\â’•)
- ("&15." ?\â’–)
- ("&16." ?\â’—)
- ("&17." ?\â’˜)
- ("&18." ?\â’™)
- ("&19." ?\â’š)
- ("&20." ?\â’›)
- ("&(a)" ?\⒜)
- ("&(b)" ?\â’)
- ("&(c)" ?\â’ž)
- ("&(d)" ?\â’Ÿ)
- ("&(e)" ?\â’ )
- ("&(f)" ?\â’¡)
- ("&(g)" ?\â’¢)
- ("&(h)" ?\â’£)
- ("&(i)" ?\â’¤)
- ("&(j)" ?\â’¥)
- ("&(k)" ?\â’¦)
- ("&(l)" ?\â’§)
- ("&(m)" ?\â’¨)
- ("&(n)" ?\â’©)
- ("&(o)" ?\â’ª)
- ("&(p)" ?\â’«)
- ("&(q)" ?\â’¬)
- ("&(r)" ?\â’­)
- ("&(s)" ?\â’®)
- ("&(t)" ?\â’¯)
- ("&(u)" ?\â’°)
- ("&(v)" ?\â’±)
- ("&(w)" ?\â’²)
- ("&(x)" ?\â’³)
- ("&(y)" ?\â’´)
- ("&(z)" ?\â’µ)
- ("&A-o" ?\â’¶)
- ("&B-o" ?\â’·)
- ("&C-o" ?\â’¸)
- ("&D-o" ?\â’¹)
- ("&E-o" ?\â’º)
- ("&F-o" ?\â’»)
- ("&G-o" ?\â’¼)
- ("&H-o" ?\â’½)
- ("&I-o" ?\â’¾)
- ("&J-o" ?\â’¿)
- ("&K-o" ?\â“€)
- ("&L-o" ?\â“)
- ("&M-o" ?\â“‚)
- ("&N-o" ?\Ⓝ)
- ("&O-o" ?\â“„)
- ("&P-o" ?\â“…)
- ("&Q-o" ?\Ⓠ)
- ("&R-o" ?\Ⓡ)
- ("&S-o" ?\Ⓢ)
- ("&T-o" ?\Ⓣ)
- ("&U-o" ?\â“Š)
- ("&V-o" ?\â“‹)
- ("&W-o" ?\Ⓦ)
- ("&X-o" ?\â“)
- ("&Y-o" ?\â“Ž)
- ("&Z-o" ?\â“)
- ("&a-o" ?\â“)
- ("&b-o" ?\â“‘)
- ("&c-o" ?\â“’)
- ("&d-o" ?\â““)
- ("&e-o" ?\â“”)
- ("&f-o" ?\â“•)
- ("&g-o" ?\â“–)
- ("&h-o" ?\â“—)
- ("&i-o" ?\ⓘ)
- ("&j-o" ?\â“™)
- ("&k-o" ?\â“š)
- ("&l-o" ?\â“›)
- ("&m-o" ?\ⓜ)
- ("&n-o" ?\â“)
- ("&o-o" ?\â“ž)
- ("&p-o" ?\â“Ÿ)
- ("&q-o" ?\â“ )
- ("&r-o" ?\â“¡)
- ("&s-o" ?\â“¢)
- ("&t-o" ?\â“£)
- ("&u-o" ?\ⓤ)
- ("&v-o" ?\â“¥)
- ("&w-o" ?\ⓦ)
- ("&x-o" ?\ⓧ)
- ("&y-o" ?\ⓨ)
- ("&z-o" ?\â“©)
- ("&0-o" ?\⓪)
- ("&hh" ?\─)
- ("&HH-" ?\â”)
- ("&vv" ?\│)
- ("&VV-" ?\┃)
- ("&3-" ?\┄)
- ("&3_" ?\â”…)
- ("&3!" ?\┆)
- ("&3/" ?\┇)
- ("&4-" ?\┈)
- ("&4_" ?\┉)
- ("&4!" ?\┊)
- ("&4/" ?\┋)
- ("&dr" ?\┌)
- ("&dR-" ?\â”)
- ("&Dr-" ?\┎)
- ("&DR-" ?\â”)
- ("&dl" ?\â”)
- ("&dL-" ?\┑)
- ("&Dl-" ?\â”’)
- ("&LD-" ?\┓)
- ("&ur" ?\â””)
- ("&uR-" ?\┕)
- ("&Ur-" ?\â”–)
- ("&UR-" ?\â”—)
- ("&ul" ?\┘)
- ("&uL-" ?\â”™)
- ("&Ul-" ?\┚)
- ("&UL-" ?\â”›)
- ("&vr" ?\├)
- ("&vR-" ?\â”)
- ("&Udr" ?\┞)
- ("&uDr" ?\┟)
- ("&Vr-" ?\â” )
- ("&UdR" ?\┡)
- ("&uDR" ?\┢)
- ("&VR-" ?\┣)
- ("&vl" ?\┤)
- ("&vL-" ?\┥)
- ("&Udl" ?\┦)
- ("&uDl" ?\┧)
- ("&Vl-" ?\┨)
- ("&UdL" ?\┩)
- ("&uDL" ?\┪)
- ("&VL-" ?\┫)
- ("&dh" ?\┬)
- ("&dLr" ?\â”­)
- ("&dlR" ?\â”®)
- ("&dH-" ?\┯)
- ("&Dh-" ?\â”°)
- ("&DLr" ?\â”±)
- ("&DlR" ?\┲)
- ("&DH-" ?\┳)
- ("&uh" ?\â”´)
- ("&uLr" ?\┵)
- ("&ulR" ?\┶)
- ("&uH-" ?\â”·)
- ("&Uh-" ?\┸)
- ("&ULr" ?\┹)
- ("&UlR" ?\┺)
- ("&UH-" ?\â”»)
- ("&vh" ?\┼)
- ("&vLr" ?\┽)
- ("&vlR" ?\┾)
- ("&vH-" ?\┿)
- ("&Udh" ?\â•€)
- ("&uDh" ?\â•)
- ("&Vh-" ?\â•‚)
- ("&UdH" ?\╇)
- ("&uDH" ?\╈)
- ("&VLr" ?\╉)
- ("&VlR" ?\â•Š)
- ("&VH-" ?\â•‹)
- ("&HH" ?\â•)
- ("&VV" ?\â•‘)
- ("&dR" ?\â•’)
- ("&Dr" ?\â•“)
- ("&DR" ?\â•”)
- ("&dL" ?\â••)
- ("&Dl" ?\â•–)
- ("&LD" ?\â•—)
- ("&uR" ?\╘)
- ("&Ur" ?\â•™)
- ("&UR" ?\â•š)
- ("&uL" ?\â•›)
- ("&Ul" ?\╜)
- ("&UL" ?\â•)
- ("&vR" ?\â•ž)
- ("&Vr" ?\â•Ÿ)
- ("&VR" ?\â• )
- ("&vL" ?\â•¡)
- ("&Vl" ?\â•¢)
- ("&VL" ?\â•£)
- ("&dH" ?\╤)
- ("&Dh" ?\â•¥)
- ("&DH" ?\╦)
- ("&uH" ?\╧)
- ("&Uh" ?\╨)
- ("&UH" ?\â•©)
- ("&vH" ?\╪)
- ("&Vh" ?\â•«)
- ("&VH" ?\╬)
- ("&FD" ?\╱)
- ("&BD" ?\╲)
- ("&TB" ?\â–€)
- ("&LB" ?\â–„)
- ("&FB" ?\â–ˆ)
- ("&lB" ?\▌)
- ("&RB" ?\â–)
- ("&.S" ?\â–‘)
- ("&:S" ?\â–’)
- ("&?S" ?\â–“)
- ("&fS" ?\â– )
- ("&OS" ?\â–¡)
- ("&RO" ?\â–¢)
- ("&Rr" ?\â–£)
- ("&RF" ?\â–¤)
- ("&RY" ?\â–¥)
- ("&RH" ?\â–¦)
- ("&RZ" ?\â–§)
- ("&RK" ?\â–¨)
- ("&RX" ?\â–©)
- ("&sB" ?\â–ª)
- ("&SR" ?\â–¬)
- ("&Or" ?\â–­)
- ("&UT" ?\â–²)
- ("&uT" ?\â–³)
- ("&Tr" ?\â–·)
- ("&PR" ?\â–º)
- ("&Dt" ?\â–¼)
- ("&dT" ?\â–½)
- ("&Tl" ?\â—)
- ("&PL" ?\â—„)
- ("&Db" ?\â—†)
- ("&Dw" ?\â—‡)
- ("&LZ" ?\â—Š)
- ("&0m" ?\â—‹)
- ("&0o" ?\â—Ž)
- ("&0M" ?\â—)
- ("&0L" ?\â—)
- ("&0R" ?\â—‘)
- ("&Sn" ?\â—˜)
- ("&Ic" ?\â—™)
- ("&Fd" ?\â—¢)
- ("&Bd" ?\â—£)
- ("&Ci" ?\â—¯)
- ("&*2" ?\★)
- ("&*1" ?\☆)
- ("&TEL" ?\☎)
- ("&tel" ?\â˜)
- ("&<H" ?\☜)
- ("&>H" ?\☞)
- ("&0u" ?\☺)
- ("&0U" ?\☻)
- ("&SU" ?\☼)
- ("&Fm" ?\♀)
- ("&Ml" ?\♂)
- ("&cS" ?\â™ )
- ("&cH" ?\♡)
- ("&cD" ?\♢)
- ("&cC" ?\♣)
- ("&cS-" ?\♤)
- ("&cH-" ?\♥)
- ("&cD-" ?\♦)
- ("&cC-" ?\♧)
- ("&Md" ?\♩)
- ("&M8" ?\♪)
- ("&M2" ?\♫)
- ("&M16" ?\♬)
- ("&Mb" ?\â™­)
- ("&Mx" ?\â™®)
- ("&MX" ?\♯)
- ("&OK" ?\✓)
- ("&XX" ?\✗)
- ("&-X" ?\✠)
- ("&IS" ?\ )
- ("&,_" ?\ã€)
- ("&._" ?\。)
- ("&+\"" ?\〃)
- ("&JIS" ?\〄)
- ("&*_" ?\々)
- ("&;_" ?\〆)
- ("&0_" ?\〇)
- ("&<+" ?\《)
- ("&>+" ?\》)
- ("&<'" ?\「)
- ("&>'" ?\ã€)
- ("&<\"" ?\『)
- ("&>\"" ?\ã€)
- ("&(\"" ?\ã€)
- ("&)\"" ?\】)
- ("&=T" ?\〒)
- ("&=_" ?\〓)
- ("&('" ?\〔)
- ("&)'" ?\〕)
- ("&(I" ?\〖)
- ("&)I" ?\〗)
- ("&-?" ?\〜)
- ("&A5" ?\ã)
- ("&a5" ?\ã‚)
- ("&I5" ?\ãƒ)
- ("&i5" ?\ã„)
- ("&U5" ?\ã…)
- ("&u5" ?\ã†)
- ("&E5" ?\ã‡)
- ("&e5" ?\ãˆ)
- ("&O5" ?\ã‰)
- ("&o5" ?\ãŠ)
- ("&ka" ?\ã‹)
- ("&ga" ?\ãŒ)
- ("&ki" ?\ã)
- ("&gi" ?\ãŽ)
- ("&ku" ?\ã)
- ("&gu" ?\ã)
- ("&ke" ?\ã‘)
- ("&ge" ?\ã’)
- ("&ko" ?\ã“)
- ("&go" ?\ã”)
- ("&sa" ?\ã•)
- ("&za" ?\ã–)
- ("&si" ?\ã—)
- ("&zi" ?\ã˜)
- ("&su" ?\ã™)
- ("&zu" ?\ãš)
- ("&se" ?\ã›)
- ("&ze" ?\ãœ)
- ("&so" ?\ã)
- ("&zo" ?\ãž)
- ("&ta" ?\ãŸ)
- ("&da" ?\ã )
- ("&ti" ?\ã¡)
- ("&di" ?\ã¢)
- ("&tU" ?\ã£)
- ("&tu" ?\ã¤)
- ("&du" ?\ã¥)
- ("&te" ?\ã¦)
- ("&de" ?\ã§)
- ("&to" ?\ã¨)
- ("&do" ?\ã©)
- ("&na" ?\ãª)
- ("&ni" ?\ã«)
- ("&nu" ?\ã¬)
- ("&ne" ?\ã­)
- ("&no" ?\ã®)
- ("&ha" ?\ã¯)
- ("&ba" ?\ã°)
- ("&pa" ?\ã±)
- ("&hi" ?\ã²)
- ("&bi" ?\ã³)
- ("&pi" ?\ã´)
- ("&hu" ?\ãµ)
- ("&bu" ?\ã¶)
- ("&pu" ?\ã·)
- ("&he" ?\ã¸)
- ("&be" ?\ã¹)
- ("&pe" ?\ãº)
- ("&ho" ?\ã»)
- ("&bo" ?\ã¼)
- ("&po" ?\ã½)
- ("&ma" ?\ã¾)
- ("&mi" ?\ã¿)
- ("&mu" ?\ã‚€)
- ("&me" ?\ã‚)
- ("&mo" ?\ã‚‚)
- ("&yA" ?\ゃ)
- ("&ya" ?\ã‚„)
- ("&yU" ?\ã‚…)
- ("&yu" ?\ゆ)
- ("&yO" ?\ょ)
- ("&yo" ?\よ)
- ("&ra" ?\ら)
- ("&ri" ?\ã‚Š)
- ("&ru" ?\ã‚‹)
- ("&re" ?\れ)
- ("&ro" ?\ã‚)
- ("&wA" ?\ã‚Ž)
- ("&wa" ?\ã‚)
- ("&wi" ?\ã‚)
- ("&we" ?\ã‚‘)
- ("&wo" ?\ã‚’)
- ("&n5" ?\ã‚“)
- ("&vu" ?\ã‚”)
- ("&\"5" ?\ã‚›)
- ("&05" ?\゜)
- ("&*5" ?\ã‚)
- ("&+5" ?\ã‚ž)
- ("&a6" ?\ã‚¡)
- ("&A6" ?\ã‚¢)
- ("&i6" ?\ã‚£)
- ("&I6" ?\イ)
- ("&u6" ?\ã‚¥)
- ("&U6" ?\ウ)
- ("&e6" ?\ェ)
- ("&E6" ?\エ)
- ("&o6" ?\ã‚©)
- ("&O6" ?\オ)
- ("&Ka" ?\ã‚«)
- ("&Ga" ?\ガ)
- ("&Ki" ?\ã‚­)
- ("&Gi" ?\ã‚®)
- ("&Ku" ?\ク)
- ("&Gu" ?\ã‚°)
- ("&Ke" ?\ケ)
- ("&Ge" ?\ゲ)
- ("&Ko" ?\コ)
- ("&Go" ?\ã‚´)
- ("&Sa" ?\サ)
- ("&Za" ?\ザ)
- ("&Si" ?\ã‚·)
- ("&Zi" ?\ジ)
- ("&Su" ?\ス)
- ("&Zu" ?\ズ)
- ("&Se" ?\ã‚»)
- ("&Ze" ?\ゼ)
- ("&So" ?\ソ)
- ("&Zo" ?\ゾ)
- ("&Ta" ?\ã‚¿)
- ("&Da" ?\ダ)
- ("&Ti" ?\ãƒ)
- ("&Di" ?\ヂ)
- ("&TU" ?\ッ)
- ("&Tu" ?\ツ)
- ("&Du" ?\ヅ)
- ("&Te" ?\テ)
- ("&De" ?\デ)
- ("&To" ?\ト)
- ("&Do" ?\ド)
- ("&Na" ?\ナ)
- ("&Ni" ?\ニ)
- ("&Nu" ?\ヌ)
- ("&Ne" ?\ãƒ)
- ("&No" ?\ノ)
- ("&Ha" ?\ãƒ)
- ("&Ba" ?\ãƒ)
- ("&Pa" ?\パ)
- ("&Hi" ?\ヒ)
- ("&Bi" ?\ビ)
- ("&Pi" ?\ピ)
- ("&Hu" ?\フ)
- ("&Bu" ?\ブ)
- ("&Pu" ?\プ)
- ("&He" ?\ヘ)
- ("&Be" ?\ベ)
- ("&Pe" ?\ペ)
- ("&Ho" ?\ホ)
- ("&Bo" ?\ボ)
- ("&Po" ?\ãƒ)
- ("&Ma" ?\マ)
- ("&Mi" ?\ミ)
- ("&Mu" ?\ム)
- ("&Me" ?\メ)
- ("&Mo" ?\モ)
- ("&YA" ?\ャ)
- ("&Ya" ?\ヤ)
- ("&YU" ?\ュ)
- ("&Yu" ?\ユ)
- ("&YO" ?\ョ)
- ("&Yo" ?\ヨ)
- ("&Ra" ?\ラ)
- ("&Ri" ?\リ)
- ("&Ru" ?\ル)
- ("&Re" ?\レ)
- ("&Ro" ?\ロ)
- ("&WA" ?\ヮ)
- ("&Wa" ?\ワ)
- ("&Wi" ?\ヰ)
- ("&We" ?\ヱ)
- ("&Wo" ?\ヲ)
- ("&N6" ?\ン)
- ("&Vu" ?\ヴ)
- ("&KA" ?\ヵ)
- ("&KE" ?\ヶ)
- ("&Va" ?\ヷ)
- ("&Vi" ?\ヸ)
- ("&Ve" ?\ヹ)
- ("&Vo" ?\ヺ)
- ("&.6" ?\・)
- ("&-6" ?\ー)
- ("&*6" ?\ヽ)
- ("&+6" ?\ヾ)
- ("&b4" ?\ã„…)
- ("&p4" ?\ㄆ)
- ("&m4" ?\ㄇ)
- ("&f4" ?\ㄈ)
- ("&d4" ?\ㄉ)
- ("&t4" ?\ã„Š)
- ("&n4" ?\ã„‹)
- ("&l4" ?\ㄌ)
- ("&g4" ?\ã„)
- ("&k4" ?\ã„Ž)
- ("&h4" ?\ã„)
- ("&j4" ?\ã„)
- ("&q4" ?\ã„‘)
- ("&x4" ?\ã„’)
- ("&zh" ?\ã„“)
- ("&ch" ?\ã„”)
- ("&sh" ?\ã„•)
- ("&r4" ?\ã„–)
- ("&z4" ?\ã„—)
- ("&c4" ?\ㄘ)
- ("&s4" ?\ã„™)
- ("&a4" ?\ã„š)
- ("&o4" ?\ã„›)
- ("&e4" ?\ㄜ)
- ("&eh4" ?\ã„)
- ("&ai" ?\ã„ž)
- ("&ei" ?\ã„Ÿ)
- ("&au" ?\ã„ )
- ("&ou" ?\ã„¡)
- ("&an" ?\ã„¢)
- ("&en" ?\ã„£)
- ("&aN" ?\ㄤ)
- ("&eN" ?\ã„¥)
- ("&er" ?\ㄦ)
- ("&i4" ?\ㄧ)
- ("&u4" ?\ㄨ)
- ("&iu" ?\ã„©)
- ("&v4" ?\ㄪ)
- ("&nG" ?\ã„«)
- ("&gn" ?\ㄬ)
- ("&1c" ?\㈠)
- ("&2c" ?\㈡)
- ("&3c" ?\㈢)
- ("&4c" ?\㈣)
- ("&5c" ?\㈤)
- ("&6c" ?\㈥)
- ("&7c" ?\㈦)
- ("&8c" ?\㈧)
- ("&9c" ?\㈨)
- ("&10c" ?\㈩)
- ("&KSC" ?\㉿)
- ("&am" ?\ã‚)
- ("&pm" ?\ã˜)
- ("&\"3" ?\)
- ("&\"1" ?\î€)
- ("&\"!" ?\)
- ("&\"'" ?\)
- ("&\">" ?\)
- ("&\"?" ?\)
- ("&\"-" ?\)
- ("&\"(" ?\)
- ("&\"." ?\)
- ("&\":" ?\)
- ("&\"0" ?\)
- ("&\"," ?\)
- ("&\"_" ?\)
- ("&\"\"" ?\î€)
- ("&\";" ?\)
- ("&\"<" ?\î€)
- ("&\"=" ?\î€)
- ("&\"/" ?\)
- ("&\"p" ?\)
- ("&\"d" ?\)
- ("&\"i" ?\)
- ("&+_" ?\)
- ("&a+:" ?\)
- ("&Tel" ?\)
- ("&UA" ?\)
- ("&UB" ?\)
- ("&t3" ?\)
- ("&m3" ?\)
- ("&k3" ?\)
- ("&p3" ?\î€)
- ("&Mc" ?\)
- ("&Fl" ?\)
- ("&Ss" ?\)
- ("&Ch" ?\)
- ("&CH" ?\)
- ("&__" ?\)
- ("&/c" ?\)
- ("&ff" ?\ff)
- ("&fi" ?\ï¬)
- ("&fl" ?\fl)
- ("&ffi" ?\ffi)
- ("&ffl" ?\ffl)
- ("&St" ?\ſt)
- ("&st" ?\st)
- ("&3+;" ?\ï¹½)
- ("&aM." ?\ﺂ)
- ("&aH." ?\ﺄ)
- ("&ah." ?\ﺈ)
- ("&a+-" ?\ïº)
- ("&a+." ?\ﺎ)
- ("&b+-" ?\ïº)
- ("&b+." ?\ïº)
- ("&b+," ?\ﺑ)
- ("&b+;" ?\ﺒ)
- ("&tm-" ?\ﺓ)
- ("&tm." ?\ﺔ)
- ("&t+-" ?\ﺕ)
- ("&t+." ?\ﺖ)
- ("&t+," ?\ﺗ)
- ("&t+;" ?\ﺘ)
- ("&tk-" ?\ﺙ)
- ("&tk." ?\ﺚ)
- ("&tk," ?\ﺛ)
- ("&tk;" ?\ﺜ)
- ("&g+-" ?\ïº)
- ("&g+." ?\ﺞ)
- ("&g+," ?\ﺟ)
- ("&g+;" ?\ﺠ)
- ("&hk-" ?\ﺡ)
- ("&hk." ?\ﺢ)
- ("&hk," ?\ﺣ)
- ("&hk;" ?\ﺤ)
- ("&x+-" ?\ﺥ)
- ("&x+." ?\ﺦ)
- ("&x+," ?\ﺧ)
- ("&x+;" ?\ﺨ)
- ("&d+-" ?\ﺩ)
- ("&d+." ?\ﺪ)
- ("&dk-" ?\ﺫ)
- ("&dk." ?\ﺬ)
- ("&r+-" ?\ﺭ)
- ("&r+." ?\ﺮ)
- ("&z+-" ?\ﺯ)
- ("&z+." ?\ﺰ)
- ("&s+-" ?\ﺱ)
- ("&s+." ?\ﺲ)
- ("&s+," ?\ﺳ)
- ("&s+;" ?\ﺴ)
- ("&sn-" ?\ﺵ)
- ("&sn." ?\ﺶ)
- ("&sn," ?\ﺷ)
- ("&sn;" ?\ﺸ)
- ("&c+-" ?\ﺹ)
- ("&c+." ?\ﺺ)
- ("&c+," ?\ﺻ)
- ("&c+;" ?\ﺼ)
- ("&dd-" ?\ﺽ)
- ("&dd." ?\ﺾ)
- ("&dd," ?\ﺿ)
- ("&dd;" ?\ﻀ)
- ("&tj-" ?\ï»)
- ("&tj." ?\ﻂ)
- ("&tj," ?\ﻃ)
- ("&tj;" ?\ﻄ)
- ("&zH-" ?\ï»…)
- ("&zH." ?\ﻆ)
- ("&zH," ?\ﻇ)
- ("&zH;" ?\ﻈ)
- ("&e+-" ?\ﻉ)
- ("&e+." ?\ﻊ)
- ("&e+," ?\ﻋ)
- ("&e+;" ?\ﻌ)
- ("&i+-" ?\ï»)
- ("&i+." ?\ﻎ)
- ("&i+," ?\ï»)
- ("&i+;" ?\ï»)
- ("&f+-" ?\ﻑ)
- ("&f+." ?\ï»’)
- ("&f+," ?\ﻓ)
- ("&f+;" ?\ï»”)
- ("&q+-" ?\ﻕ)
- ("&q+." ?\ï»–)
- ("&q+," ?\ï»—)
- ("&q+;" ?\ﻘ)
- ("&k+-" ?\ï»™)
- ("&k+." ?\ﻚ)
- ("&k+," ?\ï»›)
- ("&k+;" ?\ﻜ)
- ("&l+-" ?\ï»)
- ("&l+." ?\ﻞ)
- ("&l+," ?\ﻟ)
- ("&l+;" ?\ï» )
- ("&m+-" ?\ﻡ)
- ("&m+." ?\ﻢ)
- ("&m+," ?\ﻣ)
- ("&m+;" ?\ﻤ)
- ("&n+-" ?\ﻥ)
- ("&n+." ?\ﻦ)
- ("&n+," ?\ﻧ)
- ("&n+;" ?\ﻨ)
- ("&h+-" ?\ﻩ)
- ("&h+." ?\ﻪ)
- ("&h+," ?\ﻫ)
- ("&h+;" ?\ﻬ)
- ("&w+-" ?\ï»­)
- ("&w+." ?\ï»®)
- ("&j+-" ?\ﻯ)
- ("&j+." ?\ï»°)
- ("&y+-" ?\ï»±)
- ("&y+." ?\ﻲ)
- ("&y+," ?\ﻳ)
- ("&y+;" ?\ï»´)
- ("&lM-" ?\ﻵ)
- ("&lM." ?\ﻶ)
- ("&lH-" ?\ï»·)
- ("&lH." ?\ﻸ)
- ("&lh-" ?\ﻹ)
- ("&lh." ?\ﻺ)
- ("&la-" ?\ï»»)
- ("&la." ?\ﻼ)
+ ("&PA" ?\200)
+ ("&HO" ?\201)
+ ("&BH" ?\202)
+ ("&NH" ?\203)
+ ("&IN" ?\204)
+ ("&NL" ?\205)
+ ("&SA" ?\206)
+ ("&ES" ?\207)
+ ("&HS" ?\210)
+ ("&HJ" ?\211)
+ ("&VS" ?\212)
+ ("&PD" ?\213)
+ ("&PU" ?\214)
+ ("&RI" ?\215)
+ ("&S2" ?\216)
+ ("&S3" ?\217)
+ ("&DC" ?\220)
+ ("&P1" ?\221)
+ ("&P2" ?\222)
+ ("&TS" ?\223)
+ ("&CC" ?\224)
+ ("&MW" ?\225)
+ ("&SG" ?\226)
+ ("&EG" ?\227)
+ ("&SS" ?\230)
+ ("&GC" ?\231)
+ ("&SC" ?\232)
+ ("&CI" ?\233)
+ ("&ST" ?\234)
+ ("&OC" ?\235)
+ ("&PM" ?\236)
+ ("&AC" ?\237)
+ ("&NS" ? )
+ ("&!I" ?¡)
+ ("&Ct" ?¢)
+ ("&Pd" ?£)
+ ("&Cu" ?¤)
+ ("&Ye" ?Â¥)
+ ("&BB" ?¦)
+ ("&SE" ?§)
+ ("&':" ?¨)
+ ("&Co" ?©)
+ ("&-a" ?ª)
+ ("&<<" ?«)
+ ("&NO" ?¬)
+ ("&--" ?­)
+ ("&Rg" ?®)
+ ("&'m" ?¯)
+ ("&DG" ?°)
+ ("&+-" ?±)
+ ("&2S" ?²)
+ ("&3S" ?³)
+ ("&''" ?´)
+ ("&My" ?µ)
+ ("&PI" ?¶)
+ ("&.M" ?·)
+ ("&'," ?¸)
+ ("&1S" ?¹)
+ ("&-o" ?º)
+ ("&>>" ?»)
+ ("&14" ?¼)
+ ("&12" ?½)
+ ("&34" ?¾)
+ ("&?I" ?¿)
+ ("&A!" ?À)
+ ("&A'" ?Ã)
+ ("&A>" ?Â)
+ ("&A?" ?Ã)
+ ("&A:" ?Ä)
+ ("&AA" ?Ã…)
+ ("&AE" ?Æ)
+ ("&C," ?Ç)
+ ("&E!" ?È)
+ ("&E'" ?É)
+ ("&E>" ?Ê)
+ ("&E:" ?Ë)
+ ("&I!" ?Ì)
+ ("&I'" ?Ã)
+ ("&I>" ?ÃŽ)
+ ("&I:" ?Ã)
+ ("&D-" ?Ã)
+ ("&N?" ?Ñ)
+ ("&O!" ?Ã’)
+ ("&O'" ?Ó)
+ ("&O>" ?Ô)
+ ("&O?" ?Õ)
+ ("&O:" ?Ö)
+ ("&*X" ?×)
+ ("&O/" ?Ø)
+ ("&U!" ?Ù)
+ ("&U'" ?Ú)
+ ("&U>" ?Û)
+ ("&U:" ?Ü)
+ ("&Y'" ?Ã)
+ ("&TH" ?Þ)
+ ("&ss" ?ß)
+ ("&a!" ?à)
+ ("&a'" ?á)
+ ("&a>" ?â)
+ ("&a?" ?ã)
+ ("&a:" ?ä)
+ ("&aa" ?Ã¥)
+ ("&ae" ?æ)
+ ("&c," ?ç)
+ ("&e!" ?è)
+ ("&e'" ?é)
+ ("&e>" ?ê)
+ ("&e:" ?ë)
+ ("&i!" ?ì)
+ ("&i'" ?í)
+ ("&i>" ?î)
+ ("&i:" ?ï)
+ ("&d-" ?ð)
+ ("&n?" ?ñ)
+ ("&o!" ?ò)
+ ("&o'" ?ó)
+ ("&o>" ?ô)
+ ("&o?" ?õ)
+ ("&o:" ?ö)
+ ("&-:" ?÷)
+ ("&o/" ?ø)
+ ("&u!" ?ù)
+ ("&u'" ?ú)
+ ("&u>" ?û)
+ ("&u:" ?ü)
+ ("&y'" ?ý)
+ ("&th" ?þ)
+ ("&y:" ?ÿ)
+ ("&A-" ?Ä€)
+ ("&a-" ?Ä)
+ ("&A(" ?Ä‚)
+ ("&a(" ?ă)
+ ("&A;" ?Ä„)
+ ("&a;" ?Ä…)
+ ("&C'" ?Ć)
+ ("&c'" ?ć)
+ ("&C>" ?Ĉ)
+ ("&c>" ?ĉ)
+ ("&C." ?ÄŠ)
+ ("&c." ?Ä‹)
+ ("&C<" ?Č)
+ ("&c<" ?Ä)
+ ("&D<" ?ÄŽ)
+ ("&d<" ?Ä)
+ ("&D/" ?Ä)
+ ("&d/" ?Ä‘)
+ ("&E-" ?Ä’)
+ ("&e-" ?Ä“)
+ ("&E(" ?Ä”)
+ ("&e(" ?Ä•)
+ ("&E." ?Ä–)
+ ("&e." ?Ä—)
+ ("&E;" ?Ę)
+ ("&e;" ?Ä™)
+ ("&E<" ?Äš)
+ ("&e<" ?Ä›)
+ ("&G>" ?Ĝ)
+ ("&g>" ?Ä)
+ ("&G(" ?Äž)
+ ("&g(" ?ÄŸ)
+ ("&G." ?Ä )
+ ("&g." ?Ä¡)
+ ("&G," ?Ä¢)
+ ("&g," ?Ä£)
+ ("&H>" ?Ĥ)
+ ("&h>" ?Ä¥)
+ ("&H/" ?Ħ)
+ ("&h/" ?ħ)
+ ("&I?" ?Ĩ)
+ ("&i?" ?Ä©)
+ ("&I-" ?Ī)
+ ("&i-" ?Ä«)
+ ("&I(" ?Ĭ)
+ ("&i(" ?Ä­)
+ ("&I;" ?Ä®)
+ ("&i;" ?į)
+ ("&I." ?Ä°)
+ ("&i." ?ı)
+ ("&IJ" ?IJ)
+ ("&ij" ?ij)
+ ("&J>" ?Ä´)
+ ("&j>" ?ĵ)
+ ("&K," ?Ķ)
+ ("&k," ?Ä·)
+ ("&kk" ?ĸ)
+ ("&L'" ?Ĺ)
+ ("&l'" ?ĺ)
+ ("&L," ?Ä»)
+ ("&l," ?ļ)
+ ("&L<" ?Ľ)
+ ("&l<" ?ľ)
+ ("&L." ?Ä¿)
+ ("&l." ?Å€)
+ ("&L/" ?Å)
+ ("&l/" ?Å‚)
+ ("&N'" ?Ń)
+ ("&n'" ?Å„)
+ ("&N," ?Å…)
+ ("&n," ?ņ)
+ ("&N<" ?Ň)
+ ("&n<" ?ň)
+ ("&'n" ?ʼn)
+ ("&NG" ?ÅŠ)
+ ("&ng" ?Å‹)
+ ("&O-" ?Ō)
+ ("&o-" ?Å)
+ ("&O(" ?ÅŽ)
+ ("&o(" ?Å)
+ ("&O\"" ?Å)
+ ("&o\"" ?Å‘)
+ ("&OE" ?Å’)
+ ("&oe" ?Å“)
+ ("&R'" ?Å”)
+ ("&r'" ?Å•)
+ ("&R," ?Å–)
+ ("&r," ?Å—)
+ ("&R<" ?Ř)
+ ("&r<" ?Å™)
+ ("&S'" ?Åš)
+ ("&s'" ?Å›)
+ ("&S>" ?Ŝ)
+ ("&s>" ?Å)
+ ("&S," ?Åž)
+ ("&s," ?ÅŸ)
+ ("&S<" ?Å )
+ ("&s<" ?Å¡)
+ ("&T," ?Å¢)
+ ("&t," ?Å£)
+ ("&T<" ?Ť)
+ ("&t<" ?Å¥)
+ ("&T/" ?Ŧ)
+ ("&t/" ?ŧ)
+ ("&U?" ?Ũ)
+ ("&u?" ?Å©)
+ ("&U-" ?Ū)
+ ("&u-" ?Å«)
+ ("&U(" ?Ŭ)
+ ("&u(" ?Å­)
+ ("&U0" ?Å®)
+ ("&u0" ?ů)
+ ("&U\"" ?Å°)
+ ("&u\"" ?ű)
+ ("&U;" ?Ų)
+ ("&u;" ?ų)
+ ("&W>" ?Å´)
+ ("&w>" ?ŵ)
+ ("&Y>" ?Ŷ)
+ ("&y>" ?Å·)
+ ("&Y:" ?Ÿ)
+ ("&Z'" ?Ź)
+ ("&z'" ?ź)
+ ("&Z." ?Å»)
+ ("&z." ?ż)
+ ("&Z<" ?Ž)
+ ("&z<" ?ž)
+ ("&s1" ?Å¿)
+ ("&b/" ?Æ€)
+ ("&B2" ?Æ)
+ ("&C2" ?Ƈ)
+ ("&c2" ?ƈ)
+ ("&F2" ?Æ‘)
+ ("&f2" ?Æ’)
+ ("&K2" ?Ƙ)
+ ("&k2" ?Æ™)
+ ("&O9" ?Æ )
+ ("&o9" ?Æ¡)
+ ("&OI" ?Æ¢)
+ ("&oi" ?Æ£)
+ ("&yr" ?Ʀ)
+ ("&U9" ?Ư)
+ ("&u9" ?Æ°)
+ ("&Z/" ?Ƶ)
+ ("&z/" ?ƶ)
+ ("&ED" ?Æ·)
+ ("&DZ<" ?Ç„)
+ ("&Dz<" ?Ç…)
+ ("&dz<" ?dž)
+ ("&LJ3" ?LJ)
+ ("&Lj3" ?Lj)
+ ("&lj3" ?lj)
+ ("&NJ3" ?ÇŠ)
+ ("&Nj3" ?Ç‹)
+ ("&nj3" ?nj)
+ ("&A<" ?Ç)
+ ("&a<" ?ÇŽ)
+ ("&I<" ?Ç)
+ ("&i<" ?Ç)
+ ("&O<" ?Ç‘)
+ ("&o<" ?Ç’)
+ ("&U<" ?Ç“)
+ ("&u<" ?Ç”)
+ ("&U:-" ?Ç•)
+ ("&u:-" ?Ç–)
+ ("&U:'" ?Ç—)
+ ("&u:'" ?ǘ)
+ ("&U:<" ?Ç™)
+ ("&u:<" ?Çš)
+ ("&U:!" ?Ç›)
+ ("&u:!" ?ǜ)
+ ("&e1" ?Ç)
+ ("&A1" ?Çž)
+ ("&a1" ?ÇŸ)
+ ("&A7" ?Ç )
+ ("&a7" ?Ç¡)
+ ("&A3" ?Ç¢)
+ ("&a3" ?Ç£)
+ ("&G/" ?Ǥ)
+ ("&g/" ?Ç¥)
+ ("&G<" ?Ǧ)
+ ("&g<" ?ǧ)
+ ("&K<" ?Ǩ)
+ ("&k<" ?Ç©)
+ ("&O;" ?Ǫ)
+ ("&o;" ?Ç«)
+ ("&O1" ?Ǭ)
+ ("&o1" ?Ç­)
+ ("&EZ" ?Ç®)
+ ("&ez" ?ǯ)
+ ("&j<" ?Ç°)
+ ("&DZ3" ?DZ)
+ ("&Dz3" ?Dz)
+ ("&dz3" ?dz)
+ ("&G'" ?Ç´)
+ ("&g'" ?ǵ)
+ ("&AA'" ?Ǻ)
+ ("&aa'" ?Ç»)
+ ("&AE'" ?Ǽ)
+ ("&ae'" ?ǽ)
+ ("&O/'" ?Ǿ)
+ ("&o/'" ?Ç¿)
+ ("&A!!" ?È€)
+ ("&a!!" ?È)
+ ("&A)" ?È‚)
+ ("&a)" ?ȃ)
+ ("&E!!" ?È„)
+ ("&e!!" ?È…)
+ ("&E)" ?Ȇ)
+ ("&e)" ?ȇ)
+ ("&I!!" ?Ȉ)
+ ("&i!!" ?ȉ)
+ ("&I)" ?ÈŠ)
+ ("&i)" ?È‹)
+ ("&O!!" ?Ȍ)
+ ("&o!!" ?È)
+ ("&O)" ?ÈŽ)
+ ("&o)" ?È)
+ ("&R!!" ?È)
+ ("&r!!" ?È‘)
+ ("&R)" ?È’)
+ ("&r)" ?È“)
+ ("&U!!" ?È”)
+ ("&u!!" ?È•)
+ ("&U)" ?È–)
+ ("&u)" ?È—)
+ ("&r1" ?ɼ)
+ ("&ed" ?Ê’)
+ ("&;S" ?Ê»)
+ ("&1>" ?ˆ)
+ ("&'<" ?ˇ)
+ ("&1-" ?ˉ)
+ ("&1!" ?Ë‹)
+ ("&'(" ?˘)
+ ("&'." ?Ë™)
+ ("&'0" ?Ëš)
+ ("&';" ?Ë›)
+ ("&1?" ?˜)
+ ("&'\"" ?Ë)
+ ("&'G" ?Í´)
+ ("&,G" ?͵)
+ ("&j3" ?ͺ)
+ ("&?%" ?;)
+ ("&'*" ?΄)
+ ("&'%" ?Î…)
+ ("&A%" ?Ά)
+ ("&.*" ?·)
+ ("&E%" ?Έ)
+ ("&Y%" ?Ή)
+ ("&I%" ?Ί)
+ ("&O%" ?Ό)
+ ("&U%" ?ÎŽ)
+ ("&W%" ?Î)
+ ("&i3" ?Î)
+ ("&A*" ?Α)
+ ("&B*" ?Î’)
+ ("&G*" ?Γ)
+ ("&D*" ?Δ)
+ ("&E*" ?Ε)
+ ("&Z*" ?Ζ)
+ ("&Y*" ?Η)
+ ("&H*" ?Θ)
+ ("&I*" ?Ι)
+ ("&K*" ?Κ)
+ ("&L*" ?Λ)
+ ("&M*" ?Μ)
+ ("&N*" ?Î)
+ ("&C*" ?Ξ)
+ ("&O*" ?Ο)
+ ("&P*" ?Π)
+ ("&R*" ?Ρ)
+ ("&S*" ?Σ)
+ ("&T*" ?Τ)
+ ("&U*" ?Î¥)
+ ("&F*" ?Φ)
+ ("&X*" ?Χ)
+ ("&Q*" ?Ψ)
+ ("&W*" ?Ω)
+ ("&J*" ?Ϊ)
+ ("&V*" ?Ϋ)
+ ("&a%" ?ά)
+ ("&e%" ?έ)
+ ("&y%" ?ή)
+ ("&i%" ?ί)
+ ("&u3" ?ΰ)
+ ("&a*" ?α)
+ ("&b*" ?β)
+ ("&g*" ?γ)
+ ("&d*" ?δ)
+ ("&e*" ?ε)
+ ("&z*" ?ζ)
+ ("&y*" ?η)
+ ("&h*" ?θ)
+ ("&i*" ?ι)
+ ("&k*" ?κ)
+ ("&l*" ?λ)
+ ("&m*" ?μ)
+ ("&n*" ?ν)
+ ("&c*" ?ξ)
+ ("&o*" ?ο)
+ ("&p*" ?Ï€)
+ ("&r*" ?Ï)
+ ("&*s" ?Ï‚)
+ ("&s*" ?σ)
+ ("&t*" ?Ï„)
+ ("&u*" ?Ï…)
+ ("&f*" ?φ)
+ ("&x*" ?χ)
+ ("&q*" ?ψ)
+ ("&w*" ?ω)
+ ("&j*" ?ÏŠ)
+ ("&v*" ?Ï‹)
+ ("&o%" ?ό)
+ ("&u%" ?Ï)
+ ("&w%" ?ÏŽ)
+ ("&b3" ?Ï)
+ ("&T3" ?Ïš)
+ ("&M3" ?Ϝ)
+ ("&K3" ?Ïž)
+ ("&P3" ?Ï )
+ ("&IO" ?Ð)
+ ("&D%" ?Ђ)
+ ("&G%" ?Ѓ)
+ ("&IE" ?Є)
+ ("&DS" ?Ð…)
+ ("&II" ?І)
+ ("&YI" ?Ї)
+ ("&J%" ?Ј)
+ ("&LJ" ?Љ)
+ ("&NJ" ?Њ)
+ ("&Ts" ?Ћ)
+ ("&KJ" ?Ќ)
+ ("&V%" ?ÐŽ)
+ ("&DZ" ?Ð)
+ ("&A=" ?Ð)
+ ("&B=" ?Б)
+ ("&V=" ?Ð’)
+ ("&G=" ?Г)
+ ("&D=" ?Д)
+ ("&E=" ?Е)
+ ("&Z%" ?Ж)
+ ("&Z=" ?З)
+ ("&I=" ?И)
+ ("&J=" ?Й)
+ ("&K=" ?К)
+ ("&L=" ?Л)
+ ("&M=" ?М)
+ ("&N=" ?Ð)
+ ("&O=" ?О)
+ ("&P=" ?П)
+ ("&R=" ?Р)
+ ("&S=" ?С)
+ ("&T=" ?Т)
+ ("&U=" ?У)
+ ("&F=" ?Ф)
+ ("&H=" ?Ð¥)
+ ("&C=" ?Ц)
+ ("&C%" ?Ч)
+ ("&S%" ?Ш)
+ ("&Sc" ?Щ)
+ ("&=\"" ?Ъ)
+ ("&Y=" ?Ы)
+ ("&%\"" ?Ь)
+ ("&JE" ?Э)
+ ("&JU" ?Ю)
+ ("&JA" ?Я)
+ ("&a=" ?а)
+ ("&b=" ?б)
+ ("&v=" ?в)
+ ("&g=" ?г)
+ ("&d=" ?д)
+ ("&e=" ?е)
+ ("&z%" ?ж)
+ ("&z=" ?з)
+ ("&i=" ?и)
+ ("&j=" ?й)
+ ("&k=" ?к)
+ ("&l=" ?л)
+ ("&m=" ?м)
+ ("&n=" ?н)
+ ("&o=" ?о)
+ ("&p=" ?п)
+ ("&r=" ?Ñ€)
+ ("&s=" ?Ñ)
+ ("&t=" ?Ñ‚)
+ ("&u=" ?у)
+ ("&f=" ?Ñ„)
+ ("&h=" ?Ñ…)
+ ("&c=" ?ц)
+ ("&c%" ?ч)
+ ("&s%" ?ш)
+ ("&sc" ?щ)
+ ("&='" ?ÑŠ)
+ ("&y=" ?Ñ‹)
+ ("&%'" ?ь)
+ ("&je" ?Ñ)
+ ("&ju" ?ÑŽ)
+ ("&ja" ?Ñ)
+ ("&io" ?Ñ‘)
+ ("&d%" ?Ñ’)
+ ("&g%" ?Ñ“)
+ ("&ie" ?Ñ”)
+ ("&ds" ?Ñ•)
+ ("&ii" ?Ñ–)
+ ("&yi" ?Ñ—)
+ ("&j%" ?ј)
+ ("&lj" ?Ñ™)
+ ("&nj" ?Ñš)
+ ("&ts" ?Ñ›)
+ ("&kj" ?ќ)
+ ("&v%" ?Ñž)
+ ("&dz" ?ÑŸ)
+ ("&Y3" ?Ñ¢)
+ ("&y3" ?Ñ£)
+ ("&O3" ?Ѫ)
+ ("&o3" ?Ñ«)
+ ("&F3" ?Ѳ)
+ ("&f3" ?ѳ)
+ ("&V3" ?Ñ´)
+ ("&v3" ?ѵ)
+ ("&C3" ?Ò€)
+ ("&c3" ?Ò)
+ ("&G3" ?Ò)
+ ("&g3" ?Ò‘)
+ ("&A+" ?×)
+ ("&B+" ?ב)
+ ("&G+" ?×’)
+ ("&D+" ?ד)
+ ("&H+" ?×”)
+ ("&W+" ?ו)
+ ("&Z+" ?×–)
+ ("&X+" ?×—)
+ ("&Tj" ?ט)
+ ("&J+" ?×™)
+ ("&K%" ?ך)
+ ("&K+" ?×›)
+ ("&L+" ?ל)
+ ("&M%" ?×)
+ ("&M+" ?מ)
+ ("&N%" ?ן)
+ ("&N+" ?× )
+ ("&S+" ?ס)
+ ("&E+" ?×¢)
+ ("&P%" ?×£)
+ ("&P+" ?פ)
+ ("&Zj" ?×¥)
+ ("&ZJ" ?צ)
+ ("&Q+" ?ק)
+ ("&R+" ?ר)
+ ("&Sh" ?ש)
+ ("&T+" ?ת)
+ ("&,+" ?،)
+ ("&;+" ?Ø›)
+ ("&?+" ?ØŸ)
+ ("&H'" ?Ø¡)
+ ("&aM" ?Ø¢)
+ ("&aH" ?Ø£)
+ ("&wH" ?ؤ)
+ ("&ah" ?Ø¥)
+ ("&yH" ?ئ)
+ ("&a+" ?ا)
+ ("&b+" ?ب)
+ ("&tm" ?Ø©)
+ ("&t+" ?ت)
+ ("&tk" ?Ø«)
+ ("&g+" ?ج)
+ ("&hk" ?Ø­)
+ ("&x+" ?Ø®)
+ ("&d+" ?د)
+ ("&dk" ?Ø°)
+ ("&r+" ?ر)
+ ("&z+" ?ز)
+ ("&s+" ?س)
+ ("&sn" ?Ø´)
+ ("&c+" ?ص)
+ ("&dd" ?ض)
+ ("&tj" ?Ø·)
+ ("&zH" ?ظ)
+ ("&e+" ?ع)
+ ("&i+" ?غ)
+ ("&++" ?Ù€)
+ ("&f+" ?Ù)
+ ("&q+" ?Ù‚)
+ ("&k+" ?Ùƒ)
+ ("&l+" ?Ù„)
+ ("&m+" ?Ù…)
+ ("&n+" ?Ù†)
+ ("&h+" ?Ù‡)
+ ("&w+" ?Ùˆ)
+ ("&j+" ?Ù‰)
+ ("&y+" ?ÙŠ)
+ ("&:+" ?Ù‹)
+ ("&\"+" ?ٌ)
+ ("&=+" ?Ù)
+ ("&/+" ?ÙŽ)
+ ("&'+" ?Ù)
+ ("&1+" ?Ù)
+ ("&3+" ?Ù‘)
+ ("&0+" ?Ù’)
+ ("&0a" ?Ù )
+ ("&1a" ?Ù¡)
+ ("&2a" ?Ù¢)
+ ("&3a" ?Ù£)
+ ("&4a" ?Ù¤)
+ ("&5a" ?Ù¥)
+ ("&6a" ?Ù¦)
+ ("&7a" ?Ù§)
+ ("&8a" ?Ù¨)
+ ("&9a" ?Ù©)
+ ("&aS" ?Ù°)
+ ("&p+" ?Ù¾)
+ ("&hH" ?Ú)
+ ("&tc" ?Ú†)
+ ("&zj" ?Ú˜)
+ ("&v+" ?Ú¤)
+ ("&gf" ?Ú¯)
+ ("&A-0" ?Ḁ)
+ ("&a-0" ?á¸)
+ ("&B." ?Ḃ)
+ ("&b." ?ḃ)
+ ("&B-." ?Ḅ)
+ ("&b-." ?ḅ)
+ ("&B_" ?Ḇ)
+ ("&b_" ?ḇ)
+ ("&C,'" ?Ḉ)
+ ("&c,'" ?ḉ)
+ ("&D." ?Ḋ)
+ ("&d." ?ḋ)
+ ("&D-." ?Ḍ)
+ ("&d-." ?á¸)
+ ("&D_" ?Ḏ)
+ ("&d_" ?á¸)
+ ("&D," ?á¸)
+ ("&d," ?ḑ)
+ ("&D->" ?Ḓ)
+ ("&d->" ?ḓ)
+ ("&E-!" ?Ḕ)
+ ("&e-!" ?ḕ)
+ ("&E-'" ?Ḗ)
+ ("&e-'" ?ḗ)
+ ("&E->" ?Ḙ)
+ ("&e->" ?ḙ)
+ ("&E-?" ?Ḛ)
+ ("&e-?" ?ḛ)
+ ("&E,(" ?Ḝ)
+ ("&e,(" ?á¸)
+ ("&F." ?Ḟ)
+ ("&f." ?ḟ)
+ ("&G-" ?Ḡ)
+ ("&g-" ?ḡ)
+ ("&H." ?Ḣ)
+ ("&h." ?ḣ)
+ ("&H-." ?Ḥ)
+ ("&h-." ?ḥ)
+ ("&H:" ?Ḧ)
+ ("&h:" ?ḧ)
+ ("&H," ?Ḩ)
+ ("&h," ?ḩ)
+ ("&H-(" ?Ḫ)
+ ("&h-(" ?ḫ)
+ ("&I-?" ?Ḭ)
+ ("&i-?" ?ḭ)
+ ("&I:'" ?Ḯ)
+ ("&i:'" ?ḯ)
+ ("&K'" ?Ḱ)
+ ("&k'" ?ḱ)
+ ("&K-." ?Ḳ)
+ ("&k-." ?ḳ)
+ ("&K_" ?Ḵ)
+ ("&k_" ?ḵ)
+ ("&L-." ?Ḷ)
+ ("&l-." ?ḷ)
+ ("&L_" ?Ḻ)
+ ("&l_" ?ḻ)
+ ("&L->" ?Ḽ)
+ ("&l->" ?ḽ)
+ ("&M'" ?Ḿ)
+ ("&m'" ?ḿ)
+ ("&M." ?á¹€)
+ ("&m." ?á¹)
+ ("&M-." ?Ṃ)
+ ("&m-." ?ṃ)
+ ("&N." ?Ṅ)
+ ("&n." ?á¹…)
+ ("&N-." ?Ṇ)
+ ("&n-." ?ṇ)
+ ("&N_" ?Ṉ)
+ ("&n_" ?ṉ)
+ ("&N->" ?Ṋ)
+ ("&n->" ?ṋ)
+ ("&O?'" ?Ṍ)
+ ("&o?'" ?á¹)
+ ("&O?:" ?Ṏ)
+ ("&o?:" ?á¹)
+ ("&O-!" ?á¹)
+ ("&o-!" ?ṑ)
+ ("&O-'" ?á¹’)
+ ("&o-'" ?ṓ)
+ ("&P'" ?á¹”)
+ ("&p'" ?ṕ)
+ ("&P." ?á¹–)
+ ("&p." ?á¹—)
+ ("&R." ?Ṙ)
+ ("&r." ?á¹™)
+ ("&R-." ?Ṛ)
+ ("&r-." ?á¹›)
+ ("&R_" ?Ṟ)
+ ("&r_" ?ṟ)
+ ("&S." ?á¹ )
+ ("&s." ?ṡ)
+ ("&S-." ?á¹¢)
+ ("&s-." ?á¹£)
+ ("&S'." ?Ṥ)
+ ("&s'." ?á¹¥)
+ ("&S<." ?Ṧ)
+ ("&s<." ?ṧ)
+ ("&T." ?Ṫ)
+ ("&t." ?ṫ)
+ ("&T-." ?Ṭ)
+ ("&t-." ?á¹­)
+ ("&T_" ?á¹®)
+ ("&t_" ?ṯ)
+ ("&T->" ?á¹°)
+ ("&t->" ?á¹±)
+ ("&U-?" ?á¹´)
+ ("&u-?" ?á¹µ)
+ ("&U->" ?Ṷ)
+ ("&u->" ?á¹·)
+ ("&U?'" ?Ṹ)
+ ("&u?'" ?á¹¹)
+ ("&U-:" ?Ṻ)
+ ("&u-:" ?á¹»)
+ ("&V?" ?á¹¼)
+ ("&v?" ?á¹½)
+ ("&V-." ?á¹¾)
+ ("&v-." ?ṿ)
+ ("&W!" ?Ẁ)
+ ("&w!" ?áº)
+ ("&W'" ?Ẃ)
+ ("&w'" ?ẃ)
+ ("&W:" ?Ẅ)
+ ("&w:" ?ẅ)
+ ("&W." ?Ẇ)
+ ("&w." ?ẇ)
+ ("&W-." ?Ẉ)
+ ("&w-." ?ẉ)
+ ("&X." ?Ẋ)
+ ("&x." ?ẋ)
+ ("&X:" ?Ẍ)
+ ("&x:" ?áº)
+ ("&Y." ?Ẏ)
+ ("&y." ?áº)
+ ("&Z>" ?áº)
+ ("&z>" ?ẑ)
+ ("&Z-." ?Ẓ)
+ ("&z-." ?ẓ)
+ ("&Z_" ?Ẕ)
+ ("&z_" ?ẕ)
+ ("&A-." ?Ạ)
+ ("&a-." ?ạ)
+ ("&A2" ?Ả)
+ ("&a2" ?ả)
+ ("&A>'" ?Ấ)
+ ("&a>'" ?ấ)
+ ("&A>!" ?Ầ)
+ ("&a>!" ?ầ)
+ ("&A>2" ?Ẩ)
+ ("&a>2" ?ẩ)
+ ("&A>?" ?Ẫ)
+ ("&a>?" ?ẫ)
+ ("&A('" ?Ắ)
+ ("&a('" ?ắ)
+ ("&A(!" ?Ằ)
+ ("&a(!" ?ằ)
+ ("&A(2" ?Ẳ)
+ ("&a(2" ?ẳ)
+ ("&A(?" ?Ẵ)
+ ("&a(?" ?ẵ)
+ ("&E-." ?Ẹ)
+ ("&e-." ?ẹ)
+ ("&E2" ?Ẻ)
+ ("&e2" ?ẻ)
+ ("&E?" ?Ẽ)
+ ("&e?" ?ẽ)
+ ("&E>'" ?Ế)
+ ("&e>'" ?ế)
+ ("&E>!" ?Ề)
+ ("&e>!" ?á»)
+ ("&E>2" ?Ể)
+ ("&e>2" ?ể)
+ ("&E>?" ?Ễ)
+ ("&e>?" ?á»…)
+ ("&I2" ?Ỉ)
+ ("&i2" ?ỉ)
+ ("&I-." ?Ị)
+ ("&i-." ?ị)
+ ("&O-." ?Ọ)
+ ("&o-." ?á»)
+ ("&O2" ?Ỏ)
+ ("&o2" ?á»)
+ ("&O>'" ?á»)
+ ("&o>'" ?ố)
+ ("&O>!" ?á»’)
+ ("&o>!" ?ồ)
+ ("&O>2" ?á»”)
+ ("&o>2" ?ổ)
+ ("&O>?" ?á»–)
+ ("&o>?" ?á»—)
+ ("&O9'" ?Ớ)
+ ("&o9'" ?á»›)
+ ("&O9!" ?Ờ)
+ ("&o9!" ?á»)
+ ("&O92" ?Ở)
+ ("&o92" ?ở)
+ ("&O9?" ?á» )
+ ("&o9?" ?ỡ)
+ ("&U-." ?Ụ)
+ ("&u-." ?ụ)
+ ("&U2" ?Ủ)
+ ("&u2" ?ủ)
+ ("&U9'" ?Ứ)
+ ("&u9'" ?ứ)
+ ("&U9!" ?Ừ)
+ ("&u9!" ?ừ)
+ ("&U92" ?Ử)
+ ("&u92" ?á»­)
+ ("&U9?" ?á»®)
+ ("&u9?" ?ữ)
+ ("&Y!" ?Ỳ)
+ ("&y!" ?ỳ)
+ ("&Y-." ?á»´)
+ ("&y-." ?ỵ)
+ ("&Y2" ?Ỷ)
+ ("&y2" ?á»·)
+ ("&Y?" ?Ỹ)
+ ("&y?" ?ỹ)
+ ("&a*," ?á¼€)
+ ("&a*;" ?á¼)
+ ("&A*," ?Ἀ)
+ ("&A*;" ?Ἁ)
+ ("&e*," ?á¼)
+ ("&e*;" ?ἑ)
+ ("&E*," ?Ἐ)
+ ("&E*;" ?á¼™)
+ ("&y*," ?á¼ )
+ ("&y*;" ?ἡ)
+ ("&Y*," ?Ἠ)
+ ("&Y*;" ?Ἡ)
+ ("&i*," ?á¼°)
+ ("&i*;" ?á¼±)
+ ("&I*," ?Ἰ)
+ ("&I*;" ?á¼¹)
+ ("&o*," ?á½€)
+ ("&o*;" ?á½)
+ ("&O*," ?Ὀ)
+ ("&O*;" ?Ὁ)
+ ("&u*," ?á½)
+ ("&u*;" ?ὑ)
+ ("&U*;" ?á½™)
+ ("&w*," ?á½ )
+ ("&w*;" ?ὡ)
+ ("&W*," ?Ὠ)
+ ("&W*;" ?Ὡ)
+ ("&a*!" ?á½°)
+ ("&a*'" ?á½±)
+ ("&e*!" ?á½²)
+ ("&e*'" ?á½³)
+ ("&y*!" ?á½´)
+ ("&y*'" ?á½µ)
+ ("&i*!" ?ὶ)
+ ("&i*'" ?á½·)
+ ("&o*!" ?ὸ)
+ ("&o*'" ?á½¹)
+ ("&u*!" ?ὺ)
+ ("&u*'" ?á½»)
+ ("&w*!" ?á½¼)
+ ("&w*'" ?á½½)
+ ("&a*(" ?á¾°)
+ ("&a*-" ?á¾±)
+ ("&a*j" ?á¾³)
+ ("&a*?" ?ᾶ)
+ ("&A*(" ?Ᾰ)
+ ("&A*-" ?á¾¹)
+ ("&A*!" ?Ὰ)
+ ("&A*'" ?á¾»)
+ ("&A*J" ?á¾¼)
+ ("&)*" ?á¾½)
+ ("&J3" ?á¾¾)
+ ("&,," ?᾿)
+ ("&?*" ?á¿€)
+ ("&?:" ?á¿)
+ ("&y*j" ?ῃ)
+ ("&y*?" ?ῆ)
+ ("&E*'" ?Έ)
+ ("&Y*!" ?á¿Š)
+ ("&Y*'" ?á¿‹)
+ ("&Y*J" ?ῌ)
+ ("&,!" ?á¿)
+ ("&,'" ?á¿Ž)
+ ("&?," ?á¿)
+ ("&i*(" ?á¿)
+ ("&i*-" ?á¿‘)
+ ("&i*?" ?á¿–)
+ ("&I*(" ?Ῐ)
+ ("&I*-" ?á¿™)
+ ("&I*!" ?á¿š)
+ ("&I*'" ?á¿›)
+ ("&;!" ?á¿)
+ ("&;'" ?á¿ž)
+ ("&?;" ?á¿Ÿ)
+ ("&u*(" ?á¿ )
+ ("&u*-" ?á¿¡)
+ ("&r*," ?ῤ)
+ ("&r*;" ?á¿¥)
+ ("&u*?" ?ῦ)
+ ("&U*(" ?Ῠ)
+ ("&U*-" ?á¿©)
+ ("&U*!" ?Ὺ)
+ ("&U*'" ?á¿«)
+ ("&R*;" ?Ῥ)
+ ("&!:" ?á¿­)
+ ("&:'" ?á¿®)
+ ("&!*" ?`)
+ ("&w*j" ?ῳ)
+ ("&w*?" ?ῶ)
+ ("&O*!" ?Ὸ)
+ ("&O*'" ?Ό)
+ ("&W*!" ?Ὼ)
+ ("&W*'" ?á¿»)
+ ("&W*J" ?ῼ)
+ ("&/*" ?´)
+ ("&;;" ?῾)
+ ("&1N" ? )
+ ("&1M" ? )
+ ("&3M" ? )
+ ("&4M" ? )
+ ("&6M" ? )
+ ("&1T" ? )
+ ("&1H" ? )
+ ("&LR" ?‎)
+ ("&RL" ?â€)
+ ("&-1" ?â€)
+ ("&-N" ?–)
+ ("&-M" ?—)
+ ("&-3" ?―)
+ ("&!2" ?‖)
+ ("&=2" ?‗)
+ ("&'6" ?‘)
+ ("&'9" ?’)
+ ("&.9" ?‚)
+ ("&9'" ?‛)
+ ("&\"6" ?“)
+ ("&\"9" ?â€)
+ ("&:9" ?„)
+ ("&9\"" ?‟)
+ ("&/-" ?†)
+ ("&/=" ?‡)
+ ("&sb" ?•)
+ ("&3b" ?‣)
+ ("&.." ?‥)
+ ("&.3" ?…)
+ ("&.-" ?‧)
+ ("&%0" ?‰)
+ ("&1'" ?′)
+ ("&2'" ?″)
+ ("&3'" ?‴)
+ ("&1\"" ?‵)
+ ("&2\"" ?‶)
+ ("&3\"" ?‷)
+ ("&Ca" ?‸)
+ ("&<1" ?‹)
+ ("&>1" ?›)
+ ("&:X" ?※)
+ ("&!*2" ?‼)
+ ("&'-" ?‾)
+ ("&-b" ?âƒ)
+ ("&/f" ?â„)
+ ("&0S" ?â°)
+ ("&4S" ?â´)
+ ("&5S" ?âµ)
+ ("&6S" ?â¶)
+ ("&7S" ?â·)
+ ("&8S" ?â¸)
+ ("&9S" ?â¹)
+ ("&+S" ?âº)
+ ("&-S" ?â»)
+ ("&=S" ?â¼)
+ ("&(S" ?â½)
+ ("&)S" ?â¾)
+ ("&nS" ?â¿)
+ ("&0s" ?â‚€)
+ ("&1s" ?â‚)
+ ("&2s" ?â‚‚)
+ ("&3s" ?₃)
+ ("&4s" ?â‚„)
+ ("&5s" ?â‚…)
+ ("&6s" ?₆)
+ ("&7s" ?₇)
+ ("&8s" ?₈)
+ ("&9s" ?₉)
+ ("&+s" ?â‚Š)
+ ("&-s" ?â‚‹)
+ ("&=s" ?₌)
+ ("&(s" ?â‚)
+ ("&)s" ?â‚Ž)
+ ("&Ff" ?â‚£)
+ ("&Li" ?₤)
+ ("&Pt" ?₧)
+ ("&W=" ?â‚©)
+ ("&NSh" ?₪)
+ ("&Eu" ?€)
+ ("&\"7" ?⃑)
+ ("&oC" ?℃)
+ ("&co" ?â„…)
+ ("&oF" ?℉)
+ ("&N0" ?â„–)
+ ("&PO" ?â„—)
+ ("&Rx" ?â„ž)
+ ("&SM" ?â„ )
+ ("&TM" ?â„¢)
+ ("&Om" ?Ω)
+ ("&AO" ?â„«)
+ ("&Est" ?â„®)
+ ("&13" ?â…“)
+ ("&23" ?â…”)
+ ("&15" ?â…•)
+ ("&25" ?â…–)
+ ("&35" ?â…—)
+ ("&45" ?â…˜)
+ ("&16" ?â…™)
+ ("&56" ?â…š)
+ ("&18" ?â…›)
+ ("&38" ?⅜)
+ ("&58" ?â…)
+ ("&78" ?â…ž)
+ ("&1R" ?â… )
+ ("&2R" ?â…¡)
+ ("&3R" ?â…¢)
+ ("&4R" ?â…£)
+ ("&5R" ?â…¤)
+ ("&6R" ?â…¥)
+ ("&7R" ?â…¦)
+ ("&8R" ?â…§)
+ ("&9R" ?â…¨)
+ ("&aR" ?â…©)
+ ("&bR" ?â…ª)
+ ("&cR" ?â…«)
+ ("&50R" ?â…¬)
+ ("&1r" ?â…°)
+ ("&2r" ?â…±)
+ ("&3r" ?â…²)
+ ("&4r" ?â…³)
+ ("&5r" ?â…´)
+ ("&6r" ?â…µ)
+ ("&7r" ?â…¶)
+ ("&8r" ?â…·)
+ ("&9r" ?â…¸)
+ ("&ar" ?â…¹)
+ ("&br" ?â…º)
+ ("&cr" ?â…»)
+ ("&50r" ?â…¼)
+ ("&<-" ?â†)
+ ("&-!" ?↑)
+ ("&->" ?→)
+ ("&-v" ?↓)
+ ("&<>" ?↔)
+ ("&UD" ?↕)
+ ("&<!!" ?↖)
+ ("&//>" ?↗)
+ ("&!!>" ?↘)
+ ("&<//" ?↙)
+ ("&UD-" ?↨)
+ ("&>V" ?⇀)
+ ("&<=" ?â‡)
+ ("&=>" ?⇒)
+ ("&==" ?⇔)
+ ("&FA" ?∀)
+ ("&dP" ?∂)
+ ("&TE" ?∃)
+ ("&/0" ?∅)
+ ("&DE" ?∆)
+ ("&NB" ?∇)
+ ("&(-" ?∈)
+ ("&-)" ?∋)
+ ("&FP" ?∎)
+ ("&*P" ?âˆ)
+ ("&+Z" ?∑)
+ ("&-2" ?−)
+ ("&-+" ?∓)
+ ("&.+" ?∔)
+ ("&*-" ?∗)
+ ("&Ob" ?∘)
+ ("&Sb" ?∙)
+ ("&RT" ?√)
+ ("&0(" ?âˆ)
+ ("&00" ?∞)
+ ("&-L" ?∟)
+ ("&-V" ?∠)
+ ("&PP" ?∥)
+ ("&AN" ?∧)
+ ("&OR" ?∨)
+ ("&(U" ?∩)
+ ("&)U" ?∪)
+ ("&In" ?∫)
+ ("&DI" ?∬)
+ ("&Io" ?∮)
+ ("&.:" ?∴)
+ ("&:." ?∵)
+ ("&:R" ?∶)
+ ("&::" ?∷)
+ ("&?1" ?∼)
+ ("&CG" ?∾)
+ ("&?-" ?≃)
+ ("&?=" ?≅)
+ ("&?2" ?≈)
+ ("&=?" ?≌)
+ ("&HI" ?≓)
+ ("&!=" ?≠)
+ ("&=3" ?≡)
+ ("&=<" ?≤)
+ ("&>=" ?≥)
+ ("&<*" ?≪)
+ ("&*>" ?≫)
+ ("&!<" ?≮)
+ ("&!>" ?≯)
+ ("&(C" ?⊂)
+ ("&)C" ?⊃)
+ ("&(_" ?⊆)
+ ("&)_" ?⊇)
+ ("&0." ?⊙)
+ ("&02" ?⊚)
+ ("&-T" ?⊥)
+ ("&.P" ?â‹…)
+ ("&:3" ?â‹®)
+ ("&Eh" ?⌂)
+ ("&<7" ?⌈)
+ ("&>7" ?⌉)
+ ("&7<" ?⌊)
+ ("&7>" ?⌋)
+ ("&NI" ?âŒ)
+ ("&(A" ?⌒)
+ ("&TR" ?⌕)
+ ("&88" ?⌘)
+ ("&Iu" ?⌠)
+ ("&Il" ?⌡)
+ ("&</" ?〈)
+ ("&/>" ?〉)
+ ("&Vs" ?â£)
+ ("&1h" ?â‘€)
+ ("&3h" ?â‘)
+ ("&2h" ?â‘‚)
+ ("&4h" ?⑃)
+ ("&1j" ?⑆)
+ ("&2j" ?⑇)
+ ("&3j" ?⑈)
+ ("&4j" ?⑉)
+ ("&1-o" ?â‘ )
+ ("&2-o" ?â‘¡)
+ ("&3-o" ?â‘¢)
+ ("&4-o" ?â‘£)
+ ("&5-o" ?⑤)
+ ("&6-o" ?â‘¥)
+ ("&7-o" ?⑦)
+ ("&8-o" ?⑧)
+ ("&9-o" ?⑨)
+ ("&(1)" ?â‘´)
+ ("&(2)" ?⑵)
+ ("&(3)" ?⑶)
+ ("&(4)" ?â‘·)
+ ("&(5)" ?⑸)
+ ("&(6)" ?⑹)
+ ("&(7)" ?⑺)
+ ("&(8)" ?â‘»)
+ ("&(9)" ?⑼)
+ ("&1." ?â’ˆ)
+ ("&2." ?â’‰)
+ ("&3." ?â’Š)
+ ("&4." ?â’‹)
+ ("&5." ?⒌)
+ ("&6." ?â’)
+ ("&7." ?â’Ž)
+ ("&8." ?â’)
+ ("&9." ?â’)
+ ("&10." ?â’‘)
+ ("&11." ?â’’)
+ ("&12." ?â’“)
+ ("&13." ?â’”)
+ ("&14." ?â’•)
+ ("&15." ?â’–)
+ ("&16." ?â’—)
+ ("&17." ?â’˜)
+ ("&18." ?â’™)
+ ("&19." ?â’š)
+ ("&20." ?â’›)
+ ("&(a)" ?⒜)
+ ("&(b)" ?â’)
+ ("&(c)" ?â’ž)
+ ("&(d)" ?â’Ÿ)
+ ("&(e)" ?â’ )
+ ("&(f)" ?â’¡)
+ ("&(g)" ?â’¢)
+ ("&(h)" ?â’£)
+ ("&(i)" ?â’¤)
+ ("&(j)" ?â’¥)
+ ("&(k)" ?â’¦)
+ ("&(l)" ?â’§)
+ ("&(m)" ?â’¨)
+ ("&(n)" ?â’©)
+ ("&(o)" ?â’ª)
+ ("&(p)" ?â’«)
+ ("&(q)" ?â’¬)
+ ("&(r)" ?â’­)
+ ("&(s)" ?â’®)
+ ("&(t)" ?â’¯)
+ ("&(u)" ?â’°)
+ ("&(v)" ?â’±)
+ ("&(w)" ?â’²)
+ ("&(x)" ?â’³)
+ ("&(y)" ?â’´)
+ ("&(z)" ?â’µ)
+ ("&A-o" ?â’¶)
+ ("&B-o" ?â’·)
+ ("&C-o" ?â’¸)
+ ("&D-o" ?â’¹)
+ ("&E-o" ?â’º)
+ ("&F-o" ?â’»)
+ ("&G-o" ?â’¼)
+ ("&H-o" ?â’½)
+ ("&I-o" ?â’¾)
+ ("&J-o" ?â’¿)
+ ("&K-o" ?â“€)
+ ("&L-o" ?â“)
+ ("&M-o" ?â“‚)
+ ("&N-o" ?Ⓝ)
+ ("&O-o" ?â“„)
+ ("&P-o" ?â“…)
+ ("&Q-o" ?Ⓠ)
+ ("&R-o" ?Ⓡ)
+ ("&S-o" ?Ⓢ)
+ ("&T-o" ?Ⓣ)
+ ("&U-o" ?â“Š)
+ ("&V-o" ?â“‹)
+ ("&W-o" ?Ⓦ)
+ ("&X-o" ?â“)
+ ("&Y-o" ?â“Ž)
+ ("&Z-o" ?â“)
+ ("&a-o" ?â“)
+ ("&b-o" ?â“‘)
+ ("&c-o" ?â“’)
+ ("&d-o" ?â““)
+ ("&e-o" ?â“”)
+ ("&f-o" ?â“•)
+ ("&g-o" ?â“–)
+ ("&h-o" ?â“—)
+ ("&i-o" ?ⓘ)
+ ("&j-o" ?â“™)
+ ("&k-o" ?â“š)
+ ("&l-o" ?â“›)
+ ("&m-o" ?ⓜ)
+ ("&n-o" ?â“)
+ ("&o-o" ?â“ž)
+ ("&p-o" ?â“Ÿ)
+ ("&q-o" ?â“ )
+ ("&r-o" ?â“¡)
+ ("&s-o" ?â“¢)
+ ("&t-o" ?â“£)
+ ("&u-o" ?ⓤ)
+ ("&v-o" ?â“¥)
+ ("&w-o" ?ⓦ)
+ ("&x-o" ?ⓧ)
+ ("&y-o" ?ⓨ)
+ ("&z-o" ?â“©)
+ ("&0-o" ?⓪)
+ ("&hh" ?─)
+ ("&HH-" ?â”)
+ ("&vv" ?│)
+ ("&VV-" ?┃)
+ ("&3-" ?┄)
+ ("&3_" ?â”…)
+ ("&3!" ?┆)
+ ("&3/" ?┇)
+ ("&4-" ?┈)
+ ("&4_" ?┉)
+ ("&4!" ?┊)
+ ("&4/" ?┋)
+ ("&dr" ?┌)
+ ("&dR-" ?â”)
+ ("&Dr-" ?┎)
+ ("&DR-" ?â”)
+ ("&dl" ?â”)
+ ("&dL-" ?┑)
+ ("&Dl-" ?â”’)
+ ("&LD-" ?┓)
+ ("&ur" ?â””)
+ ("&uR-" ?┕)
+ ("&Ur-" ?â”–)
+ ("&UR-" ?â”—)
+ ("&ul" ?┘)
+ ("&uL-" ?â”™)
+ ("&Ul-" ?┚)
+ ("&UL-" ?â”›)
+ ("&vr" ?├)
+ ("&vR-" ?â”)
+ ("&Udr" ?┞)
+ ("&uDr" ?┟)
+ ("&Vr-" ?â” )
+ ("&UdR" ?┡)
+ ("&uDR" ?┢)
+ ("&VR-" ?┣)
+ ("&vl" ?┤)
+ ("&vL-" ?┥)
+ ("&Udl" ?┦)
+ ("&uDl" ?┧)
+ ("&Vl-" ?┨)
+ ("&UdL" ?┩)
+ ("&uDL" ?┪)
+ ("&VL-" ?┫)
+ ("&dh" ?┬)
+ ("&dLr" ?â”­)
+ ("&dlR" ?â”®)
+ ("&dH-" ?┯)
+ ("&Dh-" ?â”°)
+ ("&DLr" ?â”±)
+ ("&DlR" ?┲)
+ ("&DH-" ?┳)
+ ("&uh" ?â”´)
+ ("&uLr" ?┵)
+ ("&ulR" ?┶)
+ ("&uH-" ?â”·)
+ ("&Uh-" ?┸)
+ ("&ULr" ?┹)
+ ("&UlR" ?┺)
+ ("&UH-" ?â”»)
+ ("&vh" ?┼)
+ ("&vLr" ?┽)
+ ("&vlR" ?┾)
+ ("&vH-" ?┿)
+ ("&Udh" ?â•€)
+ ("&uDh" ?â•)
+ ("&Vh-" ?â•‚)
+ ("&UdH" ?╇)
+ ("&uDH" ?╈)
+ ("&VLr" ?╉)
+ ("&VlR" ?â•Š)
+ ("&VH-" ?â•‹)
+ ("&HH" ?â•)
+ ("&VV" ?â•‘)
+ ("&dR" ?â•’)
+ ("&Dr" ?â•“)
+ ("&DR" ?â•”)
+ ("&dL" ?â••)
+ ("&Dl" ?â•–)
+ ("&LD" ?â•—)
+ ("&uR" ?╘)
+ ("&Ur" ?â•™)
+ ("&UR" ?â•š)
+ ("&uL" ?â•›)
+ ("&Ul" ?╜)
+ ("&UL" ?â•)
+ ("&vR" ?â•ž)
+ ("&Vr" ?â•Ÿ)
+ ("&VR" ?â• )
+ ("&vL" ?â•¡)
+ ("&Vl" ?â•¢)
+ ("&VL" ?â•£)
+ ("&dH" ?╤)
+ ("&Dh" ?â•¥)
+ ("&DH" ?╦)
+ ("&uH" ?╧)
+ ("&Uh" ?╨)
+ ("&UH" ?â•©)
+ ("&vH" ?╪)
+ ("&Vh" ?â•«)
+ ("&VH" ?╬)
+ ("&FD" ?╱)
+ ("&BD" ?╲)
+ ("&TB" ?â–€)
+ ("&LB" ?â–„)
+ ("&FB" ?â–ˆ)
+ ("&lB" ?▌)
+ ("&RB" ?â–)
+ ("&.S" ?â–‘)
+ ("&:S" ?â–’)
+ ("&?S" ?â–“)
+ ("&fS" ?â– )
+ ("&OS" ?â–¡)
+ ("&RO" ?â–¢)
+ ("&Rr" ?â–£)
+ ("&RF" ?â–¤)
+ ("&RY" ?â–¥)
+ ("&RH" ?â–¦)
+ ("&RZ" ?â–§)
+ ("&RK" ?â–¨)
+ ("&RX" ?â–©)
+ ("&sB" ?â–ª)
+ ("&SR" ?â–¬)
+ ("&Or" ?â–­)
+ ("&UT" ?â–²)
+ ("&uT" ?â–³)
+ ("&Tr" ?â–·)
+ ("&PR" ?â–º)
+ ("&Dt" ?â–¼)
+ ("&dT" ?â–½)
+ ("&Tl" ?â—)
+ ("&PL" ?â—„)
+ ("&Db" ?â—†)
+ ("&Dw" ?â—‡)
+ ("&LZ" ?â—Š)
+ ("&0m" ?â—‹)
+ ("&0o" ?â—Ž)
+ ("&0M" ?â—)
+ ("&0L" ?â—)
+ ("&0R" ?â—‘)
+ ("&Sn" ?â—˜)
+ ("&Ic" ?â—™)
+ ("&Fd" ?â—¢)
+ ("&Bd" ?â—£)
+ ("&Ci" ?â—¯)
+ ("&*2" ?★)
+ ("&*1" ?☆)
+ ("&TEL" ?☎)
+ ("&tel" ?â˜)
+ ("&<H" ?☜)
+ ("&>H" ?☞)
+ ("&0u" ?☺)
+ ("&0U" ?☻)
+ ("&SU" ?☼)
+ ("&Fm" ?♀)
+ ("&Ml" ?♂)
+ ("&cS" ?â™ )
+ ("&cH" ?♡)
+ ("&cD" ?♢)
+ ("&cC" ?♣)
+ ("&cS-" ?♤)
+ ("&cH-" ?♥)
+ ("&cD-" ?♦)
+ ("&cC-" ?♧)
+ ("&Md" ?♩)
+ ("&M8" ?♪)
+ ("&M2" ?♫)
+ ("&M16" ?♬)
+ ("&Mb" ?â™­)
+ ("&Mx" ?â™®)
+ ("&MX" ?♯)
+ ("&OK" ?✓)
+ ("&XX" ?✗)
+ ("&-X" ?✠)
+ ("&IS" ? )
+ ("&,_" ?ã€)
+ ("&._" ?。)
+ ("&+\"" ?〃)
+ ("&JIS" ?〄)
+ ("&*_" ?々)
+ ("&;_" ?〆)
+ ("&0_" ?〇)
+ ("&<+" ?《)
+ ("&>+" ?》)
+ ("&<'" ?「)
+ ("&>'" ?ã€)
+ ("&<\"" ?『)
+ ("&>\"" ?ã€)
+ ("&(\"" ?ã€)
+ ("&)\"" ?】)
+ ("&=T" ?〒)
+ ("&=_" ?〓)
+ ("&('" ?〔)
+ ("&)'" ?〕)
+ ("&(I" ?〖)
+ ("&)I" ?〗)
+ ("&-?" ?〜)
+ ("&A5" ?ã)
+ ("&a5" ?ã‚)
+ ("&I5" ?ãƒ)
+ ("&i5" ?ã„)
+ ("&U5" ?ã…)
+ ("&u5" ?ã†)
+ ("&E5" ?ã‡)
+ ("&e5" ?ãˆ)
+ ("&O5" ?ã‰)
+ ("&o5" ?ãŠ)
+ ("&ka" ?ã‹)
+ ("&ga" ?ãŒ)
+ ("&ki" ?ã)
+ ("&gi" ?ãŽ)
+ ("&ku" ?ã)
+ ("&gu" ?ã)
+ ("&ke" ?ã‘)
+ ("&ge" ?ã’)
+ ("&ko" ?ã“)
+ ("&go" ?ã”)
+ ("&sa" ?ã•)
+ ("&za" ?ã–)
+ ("&si" ?ã—)
+ ("&zi" ?ã˜)
+ ("&su" ?ã™)
+ ("&zu" ?ãš)
+ ("&se" ?ã›)
+ ("&ze" ?ãœ)
+ ("&so" ?ã)
+ ("&zo" ?ãž)
+ ("&ta" ?ãŸ)
+ ("&da" ?ã )
+ ("&ti" ?ã¡)
+ ("&di" ?ã¢)
+ ("&tU" ?ã£)
+ ("&tu" ?ã¤)
+ ("&du" ?ã¥)
+ ("&te" ?ã¦)
+ ("&de" ?ã§)
+ ("&to" ?ã¨)
+ ("&do" ?ã©)
+ ("&na" ?ãª)
+ ("&ni" ?ã«)
+ ("&nu" ?ã¬)
+ ("&ne" ?ã­)
+ ("&no" ?ã®)
+ ("&ha" ?ã¯)
+ ("&ba" ?ã°)
+ ("&pa" ?ã±)
+ ("&hi" ?ã²)
+ ("&bi" ?ã³)
+ ("&pi" ?ã´)
+ ("&hu" ?ãµ)
+ ("&bu" ?ã¶)
+ ("&pu" ?ã·)
+ ("&he" ?ã¸)
+ ("&be" ?ã¹)
+ ("&pe" ?ãº)
+ ("&ho" ?ã»)
+ ("&bo" ?ã¼)
+ ("&po" ?ã½)
+ ("&ma" ?ã¾)
+ ("&mi" ?ã¿)
+ ("&mu" ?ã‚€)
+ ("&me" ?ã‚)
+ ("&mo" ?ã‚‚)
+ ("&yA" ?ゃ)
+ ("&ya" ?ã‚„)
+ ("&yU" ?ã‚…)
+ ("&yu" ?ゆ)
+ ("&yO" ?ょ)
+ ("&yo" ?よ)
+ ("&ra" ?ら)
+ ("&ri" ?ã‚Š)
+ ("&ru" ?ã‚‹)
+ ("&re" ?れ)
+ ("&ro" ?ã‚)
+ ("&wA" ?ã‚Ž)
+ ("&wa" ?ã‚)
+ ("&wi" ?ã‚)
+ ("&we" ?ã‚‘)
+ ("&wo" ?ã‚’)
+ ("&n5" ?ã‚“)
+ ("&vu" ?ã‚”)
+ ("&\"5" ?ã‚›)
+ ("&05" ?゜)
+ ("&*5" ?ã‚)
+ ("&+5" ?ã‚ž)
+ ("&a6" ?ã‚¡)
+ ("&A6" ?ã‚¢)
+ ("&i6" ?ã‚£)
+ ("&I6" ?イ)
+ ("&u6" ?ã‚¥)
+ ("&U6" ?ウ)
+ ("&e6" ?ェ)
+ ("&E6" ?エ)
+ ("&o6" ?ã‚©)
+ ("&O6" ?オ)
+ ("&Ka" ?ã‚«)
+ ("&Ga" ?ガ)
+ ("&Ki" ?ã‚­)
+ ("&Gi" ?ã‚®)
+ ("&Ku" ?ク)
+ ("&Gu" ?ã‚°)
+ ("&Ke" ?ケ)
+ ("&Ge" ?ゲ)
+ ("&Ko" ?コ)
+ ("&Go" ?ã‚´)
+ ("&Sa" ?サ)
+ ("&Za" ?ザ)
+ ("&Si" ?ã‚·)
+ ("&Zi" ?ジ)
+ ("&Su" ?ス)
+ ("&Zu" ?ズ)
+ ("&Se" ?ã‚»)
+ ("&Ze" ?ゼ)
+ ("&So" ?ソ)
+ ("&Zo" ?ゾ)
+ ("&Ta" ?ã‚¿)
+ ("&Da" ?ダ)
+ ("&Ti" ?ãƒ)
+ ("&Di" ?ヂ)
+ ("&TU" ?ッ)
+ ("&Tu" ?ツ)
+ ("&Du" ?ヅ)
+ ("&Te" ?テ)
+ ("&De" ?デ)
+ ("&To" ?ト)
+ ("&Do" ?ド)
+ ("&Na" ?ナ)
+ ("&Ni" ?ニ)
+ ("&Nu" ?ヌ)
+ ("&Ne" ?ãƒ)
+ ("&No" ?ノ)
+ ("&Ha" ?ãƒ)
+ ("&Ba" ?ãƒ)
+ ("&Pa" ?パ)
+ ("&Hi" ?ヒ)
+ ("&Bi" ?ビ)
+ ("&Pi" ?ピ)
+ ("&Hu" ?フ)
+ ("&Bu" ?ブ)
+ ("&Pu" ?プ)
+ ("&He" ?ヘ)
+ ("&Be" ?ベ)
+ ("&Pe" ?ペ)
+ ("&Ho" ?ホ)
+ ("&Bo" ?ボ)
+ ("&Po" ?ãƒ)
+ ("&Ma" ?マ)
+ ("&Mi" ?ミ)
+ ("&Mu" ?ム)
+ ("&Me" ?メ)
+ ("&Mo" ?モ)
+ ("&YA" ?ャ)
+ ("&Ya" ?ヤ)
+ ("&YU" ?ュ)
+ ("&Yu" ?ユ)
+ ("&YO" ?ョ)
+ ("&Yo" ?ヨ)
+ ("&Ra" ?ラ)
+ ("&Ri" ?リ)
+ ("&Ru" ?ル)
+ ("&Re" ?レ)
+ ("&Ro" ?ロ)
+ ("&WA" ?ヮ)
+ ("&Wa" ?ワ)
+ ("&Wi" ?ヰ)
+ ("&We" ?ヱ)
+ ("&Wo" ?ヲ)
+ ("&N6" ?ン)
+ ("&Vu" ?ヴ)
+ ("&KA" ?ヵ)
+ ("&KE" ?ヶ)
+ ("&Va" ?ヷ)
+ ("&Vi" ?ヸ)
+ ("&Ve" ?ヹ)
+ ("&Vo" ?ヺ)
+ ("&.6" ?・)
+ ("&-6" ?ー)
+ ("&*6" ?ヽ)
+ ("&+6" ?ヾ)
+ ("&b4" ?ã„…)
+ ("&p4" ?ㄆ)
+ ("&m4" ?ㄇ)
+ ("&f4" ?ㄈ)
+ ("&d4" ?ㄉ)
+ ("&t4" ?ã„Š)
+ ("&n4" ?ã„‹)
+ ("&l4" ?ㄌ)
+ ("&g4" ?ã„)
+ ("&k4" ?ã„Ž)
+ ("&h4" ?ã„)
+ ("&j4" ?ã„)
+ ("&q4" ?ã„‘)
+ ("&x4" ?ã„’)
+ ("&zh" ?ã„“)
+ ("&ch" ?ã„”)
+ ("&sh" ?ã„•)
+ ("&r4" ?ã„–)
+ ("&z4" ?ã„—)
+ ("&c4" ?ㄘ)
+ ("&s4" ?ã„™)
+ ("&a4" ?ã„š)
+ ("&o4" ?ã„›)
+ ("&e4" ?ㄜ)
+ ("&eh4" ?ã„)
+ ("&ai" ?ã„ž)
+ ("&ei" ?ã„Ÿ)
+ ("&au" ?ã„ )
+ ("&ou" ?ã„¡)
+ ("&an" ?ã„¢)
+ ("&en" ?ã„£)
+ ("&aN" ?ㄤ)
+ ("&eN" ?ã„¥)
+ ("&er" ?ㄦ)
+ ("&i4" ?ㄧ)
+ ("&u4" ?ㄨ)
+ ("&iu" ?ã„©)
+ ("&v4" ?ㄪ)
+ ("&nG" ?ã„«)
+ ("&gn" ?ㄬ)
+ ("&1c" ?㈠)
+ ("&2c" ?㈡)
+ ("&3c" ?㈢)
+ ("&4c" ?㈣)
+ ("&5c" ?㈤)
+ ("&6c" ?㈥)
+ ("&7c" ?㈦)
+ ("&8c" ?㈧)
+ ("&9c" ?㈨)
+ ("&10c" ?㈩)
+ ("&KSC" ?㉿)
+ ("&am" ?ã‚)
+ ("&pm" ?ã˜)
+ ("&\"3" ?)
+ ("&\"1" ?î€)
+ ("&\"!" ?)
+ ("&\"'" ?)
+ ("&\">" ?)
+ ("&\"?" ?)
+ ("&\"-" ?)
+ ("&\"(" ?)
+ ("&\"." ?)
+ ("&\":" ?)
+ ("&\"0" ?)
+ ("&\"," ?)
+ ("&\"_" ?)
+ ("&\"\"" ?î€)
+ ("&\";" ?)
+ ("&\"<" ?î€)
+ ("&\"=" ?î€)
+ ("&\"/" ?)
+ ("&\"p" ?)
+ ("&\"d" ?)
+ ("&\"i" ?)
+ ("&+_" ?)
+ ("&a+:" ?)
+ ("&Tel" ?)
+ ("&UA" ?)
+ ("&UB" ?)
+ ("&t3" ?)
+ ("&m3" ?)
+ ("&k3" ?)
+ ("&p3" ?î€)
+ ("&Mc" ?)
+ ("&Fl" ?)
+ ("&Ss" ?)
+ ("&Ch" ?)
+ ("&CH" ?)
+ ("&__" ?)
+ ("&/c" ?)
+ ("&ff" ?ff)
+ ("&fi" ?ï¬)
+ ("&fl" ?fl)
+ ("&ffi" ?ffi)
+ ("&ffl" ?ffl)
+ ("&St" ?ſt)
+ ("&st" ?st)
+ ("&3+;" ?ï¹½)
+ ("&aM." ?ﺂ)
+ ("&aH." ?ﺄ)
+ ("&ah." ?ﺈ)
+ ("&a+-" ?ïº)
+ ("&a+." ?ﺎ)
+ ("&b+-" ?ïº)
+ ("&b+." ?ïº)
+ ("&b+," ?ﺑ)
+ ("&b+;" ?ﺒ)
+ ("&tm-" ?ﺓ)
+ ("&tm." ?ﺔ)
+ ("&t+-" ?ﺕ)
+ ("&t+." ?ﺖ)
+ ("&t+," ?ﺗ)
+ ("&t+;" ?ﺘ)
+ ("&tk-" ?ﺙ)
+ ("&tk." ?ﺚ)
+ ("&tk," ?ﺛ)
+ ("&tk;" ?ﺜ)
+ ("&g+-" ?ïº)
+ ("&g+." ?ﺞ)
+ ("&g+," ?ﺟ)
+ ("&g+;" ?ﺠ)
+ ("&hk-" ?ﺡ)
+ ("&hk." ?ﺢ)
+ ("&hk," ?ﺣ)
+ ("&hk;" ?ﺤ)
+ ("&x+-" ?ﺥ)
+ ("&x+." ?ﺦ)
+ ("&x+," ?ﺧ)
+ ("&x+;" ?ﺨ)
+ ("&d+-" ?ﺩ)
+ ("&d+." ?ﺪ)
+ ("&dk-" ?ﺫ)
+ ("&dk." ?ﺬ)
+ ("&r+-" ?ﺭ)
+ ("&r+." ?ﺮ)
+ ("&z+-" ?ﺯ)
+ ("&z+." ?ﺰ)
+ ("&s+-" ?ﺱ)
+ ("&s+." ?ﺲ)
+ ("&s+," ?ﺳ)
+ ("&s+;" ?ﺴ)
+ ("&sn-" ?ﺵ)
+ ("&sn." ?ﺶ)
+ ("&sn," ?ﺷ)
+ ("&sn;" ?ﺸ)
+ ("&c+-" ?ﺹ)
+ ("&c+." ?ﺺ)
+ ("&c+," ?ﺻ)
+ ("&c+;" ?ﺼ)
+ ("&dd-" ?ﺽ)
+ ("&dd." ?ﺾ)
+ ("&dd," ?ﺿ)
+ ("&dd;" ?ﻀ)
+ ("&tj-" ?ï»)
+ ("&tj." ?ﻂ)
+ ("&tj," ?ﻃ)
+ ("&tj;" ?ﻄ)
+ ("&zH-" ?ï»…)
+ ("&zH." ?ﻆ)
+ ("&zH," ?ﻇ)
+ ("&zH;" ?ﻈ)
+ ("&e+-" ?ﻉ)
+ ("&e+." ?ﻊ)
+ ("&e+," ?ﻋ)
+ ("&e+;" ?ﻌ)
+ ("&i+-" ?ï»)
+ ("&i+." ?ﻎ)
+ ("&i+," ?ï»)
+ ("&i+;" ?ï»)
+ ("&f+-" ?ﻑ)
+ ("&f+." ?ï»’)
+ ("&f+," ?ﻓ)
+ ("&f+;" ?ï»”)
+ ("&q+-" ?ﻕ)
+ ("&q+." ?ï»–)
+ ("&q+," ?ï»—)
+ ("&q+;" ?ﻘ)
+ ("&k+-" ?ï»™)
+ ("&k+." ?ﻚ)
+ ("&k+," ?ï»›)
+ ("&k+;" ?ﻜ)
+ ("&l+-" ?ï»)
+ ("&l+." ?ﻞ)
+ ("&l+," ?ﻟ)
+ ("&l+;" ?ï» )
+ ("&m+-" ?ﻡ)
+ ("&m+." ?ﻢ)
+ ("&m+," ?ﻣ)
+ ("&m+;" ?ﻤ)
+ ("&n+-" ?ﻥ)
+ ("&n+." ?ﻦ)
+ ("&n+," ?ﻧ)
+ ("&n+;" ?ﻨ)
+ ("&h+-" ?ﻩ)
+ ("&h+." ?ﻪ)
+ ("&h+," ?ﻫ)
+ ("&h+;" ?ﻬ)
+ ("&w+-" ?ï»­)
+ ("&w+." ?ï»®)
+ ("&j+-" ?ﻯ)
+ ("&j+." ?ï»°)
+ ("&y+-" ?ï»±)
+ ("&y+." ?ﻲ)
+ ("&y+," ?ﻳ)
+ ("&y+;" ?ï»´)
+ ("&lM-" ?ﻵ)
+ ("&lM." ?ﻶ)
+ ("&lH-" ?ï»·)
+ ("&lH." ?ﻸ)
+ ("&lh-" ?ﻹ)
+ ("&lh." ?ﻺ)
+ ("&la-" ?ï»»)
+ ("&la." ?ﻼ)
)
(provide 'rfc1345)
diff --git a/lisp/linum.el b/lisp/linum.el
index d49ccb356f..122f8e31d5 100644
--- a/lisp/linum.el
+++ b/lisp/linum.el
@@ -120,7 +120,15 @@ Linum mode is a buffer-local minor mode."
(mapc #'delete-overlay linum-overlays)
(setq linum-overlays nil)
(dolist (w (get-buffer-window-list (current-buffer) nil t))
- (set-window-margins w 0 (cdr (window-margins w)))))
+ ;; restore margins if needed FIXME: This still fails if the
+ ;; "other" mode has incidentally set margins to exactly what linum
+ ;; had: see bug#20674 for a similar workaround in nlinum.el
+ (let ((set-margins (window-parameter w 'linum--set-margins))
+ (current-margins (window-margins w)))
+ (when (and set-margins
+ (equal set-margins current-margins))
+ (set-window-margins w 0 (cdr current-margins))
+ (set-window-parameter w 'linum--set-margins nil)))))
(defun linum-update-current ()
"Update line numbers for the current buffer."
@@ -143,10 +151,10 @@ Linum mode is a buffer-local minor mode."
(defun linum--face-width (face)
(let ((info (font-info (face-font face)))
- width)
+ width)
(setq width (aref info 11))
(if (<= width 0)
- (setq width (aref info 10)))
+ (setq width (aref info 10)))
width))
(defun linum-update-window (win)
@@ -170,7 +178,7 @@ Linum mode is a buffer-local minor mode."
(visited (catch 'visited
(dolist (o (overlays-in (point) (point)))
(when (equal-including-properties
- (overlay-get o 'linum-str) str)
+ (overlay-get o 'linum-str) str)
(unless (memq o linum-overlays)
(push o linum-overlays))
(setq linum-available (delq o linum-available))
@@ -193,7 +201,12 @@ Linum mode is a buffer-local minor mode."
(setq width (ceiling
(/ (* width 1.0 (linum--face-width 'linum))
(frame-char-width)))))
- (set-window-margins win width (cdr (window-margins win)))))
+ ;; open up space in the left margin, if needed, and record that
+ ;; fact as the window-parameter `linum--set-margins'
+ (let ((existing-margins (window-margins win)))
+ (when (> width (or (car existing-margins) 0))
+ (set-window-margins win width (cdr existing-margins))
+ (set-window-parameter win 'linum--set-margins (window-margins win))))))
(defun linum-after-change (beg end _len)
;; update overlays on deletions, and after newlines are inserted
diff --git a/lisp/loadup.el b/lisp/loadup.el
index 21c64a8c3b..5c16464282 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -67,6 +67,10 @@
(let ((dir (car load-path)))
;; We'll probably overflow the pure space.
(setq purify-flag nil)
+ ;; Value of max-lisp-eval-depth when compiling initially.
+ ;; During bootstrapping the byte-compiler is run interpreted when
+ ;; compiling itself, which uses a lot more stack than usual.
+ (setq max-lisp-eval-depth 2200)
(setq load-path (list (expand-file-name "." dir)
(expand-file-name "emacs-lisp" dir)
(expand-file-name "language" dir)
@@ -74,10 +78,6 @@
(expand-file-name "textmodes" dir)
(expand-file-name "vc" dir)))))
-;; Prevent build-time PATH getting stored in the binary.
-;; Mainly cosmetic, but helpful for Guix. (Bug#20330)
-(setq exec-path nil)
-
(if (eq t purify-flag)
;; Hash consing saved around 11% of pure space in my tests.
(setq purify-flag (make-hash-table :test 'equal :size 80000)))
@@ -157,9 +157,16 @@
;; In case loaddefs hasn't been generated yet.
(file-error (load "ldefs-boot.el")))
+(let ((new (make-hash-table :test 'equal)))
+ ;; Now that loaddefs has populated definition-prefixes, purify its contents.
+ (maphash (lambda (k v) (puthash (purecopy k) (purecopy v) new))
+ definition-prefixes)
+ (setq definition-prefixes new))
+
(load "emacs-lisp/nadvice")
(load "emacs-lisp/cl-preloaded")
(load "minibuffer") ;After loaddefs, for define-minor-mode.
+(load "obarray") ;abbrev.el is implemented in terms of obarrays.
(load "abbrev") ;lisp-mode.el and simple.el use define-abbrev-table.
(load "simple")
@@ -420,6 +427,12 @@ lost after dumping")))
(message "Pure-hashed: %d strings, %d vectors, %d conses, %d bytecodes, %d others"
strings vectors conses bytecodes others)))
+;; Prevent build-time PATH getting stored in the binary.
+;; Mainly cosmetic, but helpful for Guix. (Bug#20330)
+;; Do this here, rather than earlier, so that the above code
+;; can invoke Git commands and the like.
+(setq exec-path nil)
+
;; Avoid error if user loads some more libraries now and make sure the
;; hash-consing hash table is GC'd.
(setq purify-flag nil)
diff --git a/lisp/lpr.el b/lisp/lpr.el
index 04e3b38ab1..2fe32c7d5e 100644
--- a/lisp/lpr.el
+++ b/lisp/lpr.el
@@ -36,7 +36,7 @@
;;;###autoload
(defvar lpr-lp-system
- (memq system-type '(usg-unix-v hpux irix))
+ (memq system-type '(usg-unix-v hpux))
"Non-nil if running on a system type that uses the \"lp\" command.")
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el
index 85e91cdadc..11cbea0b37 100644
--- a/lisp/ls-lisp.el
+++ b/lisp/ls-lisp.el
@@ -72,7 +72,7 @@
(defcustom ls-lisp-emulation
(cond ;; ((eq system-type 'windows-nt) 'MS-Windows)
- ((memq system-type '(hpux usg-unix-v irix berkeley-unix))
+ ((memq system-type '(hpux usg-unix-v berkeley-unix))
'UNIX)) ; very similar to GNU
;; Anything else defaults to nil, meaning GNU.
"Platform to emulate: GNU (default), MacOS, MS-Windows, UNIX.
diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el
index ce3c50bce2..18eaa22b34 100644
--- a/lisp/mail/emacsbug.el
+++ b/lisp/mail/emacsbug.el
@@ -242,7 +242,7 @@ usually do not have translators for other languages.\n\n")))
(let ((txt (delete-and-extract-region (1+ user-point) (point))))
(insert (propertize "\n" 'display txt)))
- (insert "\n\nIn " (emacs-version))
+ (insert "\nIn " (emacs-version))
(if emacs-build-system
(insert " built on " emacs-build-system))
(insert "\n")
@@ -263,6 +263,18 @@ usually do not have translators for other languages.\n\n")))
(buffer-string)))))
(if (stringp lsb)
(insert "System " lsb "\n")))
+ (let ((message-buf (get-buffer "*Messages*")))
+ (if message-buf
+ (let (beg-pos
+ (end-pos message-end-point))
+ (with-current-buffer message-buf
+ (goto-char end-pos)
+ (forward-line -10)
+ (setq beg-pos (point)))
+ (terpri (current-buffer) t)
+ (insert "Recent messages:\n")
+ (insert-buffer-substring message-buf beg-pos end-pos))))
+ (insert "\n")
(when (and system-configuration-options
(not (equal system-configuration-options "")))
(insert "Configured using:\n 'configure "
@@ -295,20 +307,6 @@ usually do not have translators for other languages.\n\n")))
(and (boundp mode) (buffer-local-value mode from-buffer)
(insert (format " %s: %s\n" mode
(buffer-local-value mode from-buffer)))))
- (let ((message-buf (get-buffer "*Messages*")))
- (if message-buf
- (let (beg-pos
- (end-pos message-end-point))
- (with-current-buffer message-buf
- (goto-char end-pos)
- (forward-line -10)
- (setq beg-pos (point)))
- (insert "\nRecent messages:\n")
- (insert-buffer-substring message-buf beg-pos end-pos))))
- ;; After Recent messages, to avoid the messages produced by
- ;; list-load-path-shadows.
- (unless (looking-back "\n" (1- (point)))
- (insert "\n"))
(insert "\n")
(insert "Load-path shadows:\n")
(let* ((msg "Checking for load-path shadows...")
diff --git a/lisp/gnus/flow-fill.el b/lisp/mail/flow-fill.el
index 904f031d0e..d288142247 100644
--- a/lisp/gnus/flow-fill.el
+++ b/lisp/mail/flow-fill.el
@@ -157,7 +157,6 @@ RFC 2646 suggests 66 characters for readability."
(condition-case nil
(let ((fill-prefix (when quote (concat quote " ")))
(fill-column (eval fill-flowed-display-column))
- filladapt-mode
adaptive-fill-mode)
(fill-region (point-at-bol)
(min (1+ (point-at-eol))
diff --git a/lisp/gnus/ietf-drums.el b/lisp/mail/ietf-drums.el
index 8008e32759..03349d1205 100644
--- a/lisp/gnus/ietf-drums.el
+++ b/lisp/mail/ietf-drums.el
@@ -38,7 +38,6 @@
;;; Code:
(eval-when-compile (require 'cl))
-(require 'mm-util)
(defvar ietf-drums-no-ws-ctl-token "\001-\010\013\014\016-\037\177"
"US-ASCII control characters excluding CR, LF and white space.")
@@ -74,11 +73,6 @@ backslash and doublequote.")
(modify-syntax-entry ?* "_" table)
(modify-syntax-entry ?\; "_" table)
(modify-syntax-entry ?\' "_" table)
- (if (featurep 'xemacs)
- (let ((i 128))
- (while (< i 256)
- (modify-syntax-entry i "w" table)
- (setq i (1+ i)))))
table))
(defun ietf-drums-token-to-list (token)
@@ -86,10 +80,10 @@ backslash and doublequote.")
(let ((i 0)
b e c out range)
(while (< i (length token))
- (setq c (mm-char-int (aref token i)))
+ (setq c (aref token i))
(incf i)
(cond
- ((eq c (mm-char-int ?-))
+ ((eq c ?-)
(if b
(setq range t)
(push c out)))
diff --git a/lisp/mail/mail-extr.el b/lisp/mail/mail-extr.el
index 44a082c330..89476d6229 100644
--- a/lisp/mail/mail-extr.el
+++ b/lisp/mail/mail-extr.el
@@ -234,7 +234,7 @@ we will act as though we couldn't find a full name in the address."
:group 'mail-extr)
(defcustom mail-extr-ignore-realname-equals-mailbox-name t
-"*Whether to ignore a name that is equal to the mailbox name.
+"Whether to ignore a name that is equal to the mailbox name.
If true, then when the address is like \"Single <single@address.com>\"
we will act as though we couldn't find a full name in the address."
:type 'boolean
@@ -1406,25 +1406,26 @@ consing a string.)"
(insert (upcase mi) ". ")))
;; Nuke name if it is the same as mailbox name.
- (let ((buffer-length (- (point-max) (point-min)))
- (i 0)
- (names-match-flag t))
- (when (and (> buffer-length 0)
- (eq buffer-length (- mbox-end mbox-beg)))
- (goto-char (point-max))
- (insert-buffer-substring canonicalization-buffer
- mbox-beg mbox-end)
- (while (and names-match-flag
- (< i buffer-length))
- (or (eq (downcase (char-after (+ i (point-min))))
- (downcase
- (char-after (+ i buffer-length (point-min)))))
- (setq names-match-flag nil))
- (setq i (1+ i)))
- (delete-region (+ (point-min) buffer-length) (point-max))
- (and names-match-flag
- mail-extr-ignore-realname-equals-mailbox-name
- (narrow-to-region (point) (point)))))
+ (when mail-extr-ignore-single-names
+ (let ((buffer-length (- (point-max) (point-min)))
+ (i 0)
+ (names-match-flag t))
+ (when (and (> buffer-length 0)
+ (eq buffer-length (- mbox-end mbox-beg)))
+ (goto-char (point-max))
+ (insert-buffer-substring canonicalization-buffer
+ mbox-beg mbox-end)
+ (while (and names-match-flag
+ (< i buffer-length))
+ (or (eq (downcase (char-after (+ i (point-min))))
+ (downcase
+ (char-after (+ i buffer-length (point-min)))))
+ (setq names-match-flag nil))
+ (setq i (1+ i)))
+ (delete-region (+ (point-min) buffer-length) (point-max))
+ (and names-match-flag
+ mail-extr-ignore-realname-equals-mailbox-name
+ (narrow-to-region (point) (point))))))
;; Nuke name if it's just one word.
(goto-char (point-min))
diff --git a/lisp/gnus/mail-parse.el b/lisp/mail/mail-parse.el
index 4fc7e46359..4fc7e46359 100644
--- a/lisp/gnus/mail-parse.el
+++ b/lisp/mail/mail-parse.el
diff --git a/lisp/gnus/mail-prsvr.el b/lisp/mail/mail-prsvr.el
index 789c0028f6..789c0028f6 100644
--- a/lisp/gnus/mail-prsvr.el
+++ b/lisp/mail/mail-prsvr.el
diff --git a/lisp/gnus/qp.el b/lisp/mail/qp.el
index d179cbb2cb..a295e0c2d8 100644
--- a/lisp/gnus/qp.el
+++ b/lisp/mail/qp.el
@@ -27,9 +27,6 @@
;;; Code:
-(require 'mm-util)
-(defvar mm-use-ultra-safe-encoding)
-
;;;###autoload
(defun quoted-printable-decode-region (from to &optional coding-system)
"Decode quoted-printable in the region between FROM and TO, per RFC 2045.
@@ -45,7 +42,8 @@ them into characters should be done separately."
(interactive
;; Let the user determine the coding system with "C-x RET c".
(list (region-beginning) (region-end) coding-system-for-read))
- (unless (mm-coding-system-p coding-system) ; e.g. `ascii' from Gnus
+ (when (and coding-system
+ (not (coding-system-p coding-system))) ; e.g. `ascii' from Gnus
(setq coding-system nil))
(save-excursion
(save-restriction
@@ -59,7 +57,7 @@ them into characters should be done separately."
;; which already contains non-ASCII characters which would
;; then get doubly-decoded below.
(if coding-system
- (mm-encode-coding-region (point-min) (point-max) coding-system))
+ (encode-coding-region (point-min) (point-max) coding-system))
(goto-char (point-min))
(while (and (skip-chars-forward "^=")
(not (eobp)))
@@ -87,14 +85,15 @@ them into characters should be done separately."
(message "Malformed quoted-printable text")
(forward-char)))))
(if coding-system
- (mm-decode-coding-region (point-min) (point-max) coding-system)))))
+ (decode-coding-region (point-min) (point-max) coding-system)))))
(defun quoted-printable-decode-string (string &optional coding-system)
"Decode the quoted-printable encoded STRING and return the result.
If CODING-SYSTEM is non-nil, decode the string with coding-system.
Use of CODING-SYSTEM is deprecated; this function should deal with
raw bytes, and coding conversion should be done separately."
- (mm-with-unibyte-buffer
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
(insert string)
(quoted-printable-decode-region (point-min) (point-max) coding-system)
(buffer-string)))
@@ -116,7 +115,7 @@ encode lines starting with \"From\"."
(setq class "\010-\012\014\040-\074\076-\177"))
(save-excursion
(goto-char from)
- (if (re-search-forward (mm-string-to-multibyte "[^\x0-\x7f\x80-\xff]")
+ (if (re-search-forward (string-to-multibyte "[^\x0-\x7f\x80-\xff]")
to t)
(error "Multibyte character in QP encoding region"))
(save-restriction
@@ -127,8 +126,7 @@ encode lines starting with \"From\"."
(not (eobp)))
(insert
(prog1
- ;; To unibyte in case of Emacs 23 (unicode) eight-bit.
- (format "=%02X" (mm-multibyte-char-to-unibyte (char-after)))
+ (format "=%02X" (char-after))
(delete-char 1))))
;; Encode white space at the end of lines.
(goto-char (point-min))
@@ -139,17 +137,17 @@ encode lines starting with \"From\"."
(prog1
(format "=%02X" (char-after))
(delete-char 1)))))
- (let ((mm-use-ultra-safe-encoding
+ (let ((ultra
(and (boundp 'mm-use-ultra-safe-encoding)
mm-use-ultra-safe-encoding)))
- (when (or fold mm-use-ultra-safe-encoding)
+ (when (or fold ultra)
(let ((tab-width 1) ; HTAB is one character.
(case-fold-search nil))
(goto-char (point-min))
(while (not (eobp))
;; In ultra-safe mode, encode "From " at the beginning
;; of a line.
- (when mm-use-ultra-safe-encoding
+ (when ultra
(if (looking-at "From ")
(replace-match "From=20" nil t)
(if (looking-at "-")
@@ -167,9 +165,9 @@ encode lines starting with \"From\"."
(defun quoted-printable-encode-string (string)
"Encode the STRING as quoted-printable and return the result."
(with-temp-buffer
- (if (mm-multibyte-string-p string)
- (mm-enable-multibyte)
- (mm-disable-multibyte))
+ (if (multibyte-string-p string)
+ (set-buffer-multibyte 'to)
+ (set-buffer-multibyte nil))
(insert string)
(quoted-printable-encode-region (point-min) (point-max))
(buffer-string)))
diff --git a/lisp/gnus/rfc2045.el b/lisp/mail/rfc2045.el
index c2ddf906d0..c2ddf906d0 100644
--- a/lisp/gnus/rfc2045.el
+++ b/lisp/mail/rfc2045.el
diff --git a/lisp/gnus/rfc2047.el b/lisp/mail/rfc2047.el
index 6647d10b0b..e636d619c0 100644
--- a/lisp/gnus/rfc2047.el
+++ b/lisp/mail/rfc2047.el
@@ -37,14 +37,19 @@
(require 'rfc2045) ;; rfc2045-encode-string
(autoload 'mm-body-7-or-8 "mm-bodies")
-(defvar rfc2047-header-encoding-alist
+(defgroup rfc2047 nil
+ "RFC2047 messages."
+ :group 'mail
+ :prefix "rfc2047-")
+
+(defcustom rfc2047-header-encoding-alist
'(("Newsgroups" . nil)
("Followup-To" . nil)
("Message-ID" . nil)
("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|\\(In-\\)?Reply-To\\|Sender\
\\|Mail-Followup-To\\|Mail-Copies-To\\|Approved\\)" . address-mime)
(t . mime))
- "*Header/encoding method alist.
+ "Header/encoding method alist.
The list is traversed sequentially. The keys can either be
header regexps or t.
@@ -56,7 +61,12 @@ The values can be:
fields (where quoted strings and comments must be treated separately);
4) a charset, in which case it will be encoded as that charset;
5) `default', in which case the field will be encoded as the rest
- of the article.")
+ of the article."
+ :type '(alist :key-type (choice regexp (const t))
+ :value-type (choice (const nil) (const mime)
+ (const address-mime)
+ coding-system
+ (const default))))
(defvar rfc2047-charset-encoding-alist
'((us-ascii . nil)
@@ -97,8 +107,9 @@ quoted-printable and base64 respectively.")
(defvar rfc2047-encode-encoded-words t
"Whether encoded words should be encoded again.")
-(defvar rfc2047-allow-irregular-q-encoded-words t
- "*Whether to decode irregular Q-encoded words.")
+(defcustom rfc2047-allow-irregular-q-encoded-words t
+ "Whether to decode irregular Q-encoded words."
+ :type 'boolean)
(eval-and-compile ;; Necessary to hard code them in `rfc2047-decode-region'.
(defconst rfc2047-encoded-word-regexp
@@ -267,7 +278,7 @@ Should be called narrowed to the head of the message."
(mm-coding-system-p
(car message-posting-charset)))
;; 8 bit must be decoded.
- (mm-encode-coding-region
+ (encode-coding-region
(point-min) (point-max)
(mm-charset-to-coding-system
(car message-posting-charset))))
@@ -290,12 +301,10 @@ Should be called narrowed to the head of the message."
(let ((rfc2047-encoding-type 'mime))
(rfc2047-encode-region (point) (point-max))))
((eq method 'default)
- (if (and (featurep 'mule)
- (if (boundp 'enable-multibyte-characters)
- (default-value 'enable-multibyte-characters))
+ (if (and (default-value 'enable-multibyte-characters)
mail-parse-charset)
- (mm-encode-coding-region (point) (point-max)
- mail-parse-charset)))
+ (encode-coding-region (point) (point-max)
+ mail-parse-charset)))
;; We get this when CC'ing messages to newsgroups with
;; 8-bit names. The group name mail copy just got
;; unconditionally encoded. Previously, it would ask
@@ -317,11 +326,8 @@ Should be called narrowed to the head of the message."
;;; (rfc2047-encode-region (point-min) (point-max))
;;; (error "Cannot send unencoded text")))
((mm-coding-system-p method)
- (if (or (and (featurep 'mule)
- (if (boundp 'enable-multibyte-characters)
- (default-value 'enable-multibyte-characters)))
- (featurep 'file-coding))
- (mm-encode-coding-region (point) (point-max) method)))
+ (when (default-value 'enable-multibyte-characters)
+ (encode-coding-region (point) (point-max) method)))
;; Hm.
(t)))
(goto-char (point-max))))))))
@@ -356,9 +362,7 @@ The buffer may be narrowed."
;; it appears to be the cleanest way.
;; Play safe and don't assume the form of the word syntax entry --
;; copy it from ?a.
- (if (featurep 'xemacs)
- (put-char-table t (get-char-table ?a (standard-syntax-table)) table)
- (set-char-table-range table t (aref (standard-syntax-table) ?a)))
+ (set-char-table-range table t (aref (standard-syntax-table) ?a))
(modify-syntax-entry ?\\ "\\" table)
(modify-syntax-entry ?\" "\"" table)
(modify-syntax-entry ?\( "(" table)
@@ -556,7 +560,7 @@ Dynamically bind `rfc2047-encoding-type' to change that."
(if (or debug-on-quit debug-on-error)
(signal (car err) (cdr err))
(error "Invalid data for rfc2047 encoding: %s"
- (mm-replace-in-string orig-text "[ \t\n]+" " "))))))))
+ (replace-regexp-in-string "[ \t\n]+" " " orig-text))))))))
(unless dont-fold
(rfc2047-fold-region b (point)))
(goto-char (point-max))))
@@ -592,7 +596,7 @@ should not change this value.")
((not rfc2047-encode-max-chars)
(concat start
(funcall encoder (if cs
- (mm-encode-coding-string string cs)
+ (encode-coding-string string cs)
string))
"?="))
((>= column rfc2047-encode-max-chars)
@@ -616,7 +620,7 @@ should not change this value.")
(setq next (concat start
(funcall encoder
(if cs
- (mm-encode-coding-string
+ (encode-coding-string
(substring string 0 (1+ index))
cs)
(substring string 0 (1+ index))))
@@ -700,9 +704,9 @@ Point moves to the end of the region."
(setq crest (buffer-substring-no-properties (point) b)))
(setq eword (rfc2047-encode-1
(- b (point-at-bol))
- (mm-replace-in-string
- (buffer-substring-no-properties b e)
- "\n\\([ \t]?\\)" "\\1")
+ (replace-regexp-in-string
+ "\n\\([ \t]?\\)" "\\1"
+ (buffer-substring-no-properties b e))
cs
(or (cdr (assq encoding
rfc2047-encode-function-alist))
@@ -871,14 +875,15 @@ is the standard but many mailers don't support it."
(defvar rfc2047-quote-decoded-words-containing-tspecials nil
"If non-nil, quote decoded words containing special characters.")
-(defvar rfc2047-allow-incomplete-encoded-text t
- "*Non-nil means allow incomplete encoded-text in successive encoded-words.
+(defcustom rfc2047-allow-incomplete-encoded-text t
+ "Non-nil means allow incomplete encoded-text in successive encoded-words.
Dividing of encoded-text in the place other than character boundaries
violates RFC2047 section 5, while we have a capability to decode it.
If it is non-nil, the decoder will decode B- or Q-encoding in each
encoded-word, concatenate them, and decode it by charset. Otherwise,
the decoder will fully decode each encoded-word before concatenating
-them.")
+them."
+ :type 'boolean)
(defun rfc2047-strip-backslashes-in-quoted-strings ()
"Strip backslashes in quoted strings. `\\\"' remains."
@@ -947,7 +952,7 @@ ENCODED-WORD)."
(rfc2047-pad-base64 (nth 2 word)))))
((char-equal ?Q (nth 1 word))
(setq text (quoted-printable-decode-string
- (mm-subst-char-in-string
+ (subst-char-in-string
?_ ? (nth 2 word) t)))))
(error
(message "%s" (error-message-string code))
@@ -963,7 +968,7 @@ ENCODED-WORD)."
(setq words (concat
(or (and (setq cs (caar rest))
(condition-case code
- (mm-decode-coding-string (cdar rest) cs)
+ (decode-coding-string (cdar rest) cs)
(error
(message "%s" (error-message-string code))
nil)))
@@ -1087,13 +1092,13 @@ other than `\"' and `\\' in quoted strings."
mail-parse-charset
(not (eq mail-parse-charset 'us-ascii))
(not (eq mail-parse-charset 'gnus-decoded)))
- (mm-decode-coding-region b e mail-parse-charset))
+ (decode-coding-region b e mail-parse-charset))
(setq b (point)))
(when (and (mm-multibyte-p)
mail-parse-charset
(not (eq mail-parse-charset 'us-ascii))
(not (eq mail-parse-charset 'gnus-decoded)))
- (mm-decode-coding-region b (point-max) mail-parse-charset))))))
+ (decode-coding-region b (point-max) mail-parse-charset))))))
(defun rfc2047-decode-address-region (start end)
"Decode MIME-encoded words in region between START and END.
@@ -1105,49 +1110,47 @@ strings are stripped."
"Decode MIME-encoded STRING and return the result.
If ADDRESS-MIME is non-nil, strip backslashes which precede characters
other than `\"' and `\\' in quoted strings."
- ;; (let ((m (mm-multibyte-p)))
- (if (string-match "=\\?" string)
- (with-temp-buffer
- ;; We used to only call mm-enable-multibyte if `m' is non-nil,
- ;; but this can't be the right criterion. Don't just revert this
- ;; change if it encounters a bug. Please help me fix it
- ;; right instead. --Stef
- ;; The string returned should always be multibyte in a multibyte
- ;; session, i.e. the buffer should be multibyte before
- ;; `buffer-string' is called.
- (mm-enable-multibyte)
- (insert string)
- (inline
- (rfc2047-decode-region (point-min) (point-max) address-mime))
- (buffer-string))
- (when address-mime
- (setq string
- (with-temp-buffer
- (when (mm-multibyte-string-p string)
- (mm-enable-multibyte))
- (insert string)
- (rfc2047-strip-backslashes-in-quoted-strings)
- (buffer-string))))
- ;; Fixme: As above, `m' here is inappropriate.
- (if (and ;; m
- mail-parse-charset
- (not (eq mail-parse-charset 'us-ascii))
- (not (eq mail-parse-charset 'gnus-decoded)))
- ;; `decode-coding-string' in Emacs offers a third optional
- ;; arg NOCOPY to avoid consing a new string if the decoding
- ;; is "trivial". Unfortunately it currently doesn't
- ;; consider anything else than a nil coding system
- ;; trivial.
- ;; `rfc2047-decode-string' is called multiple times for each
- ;; article during summary buffer generation, and we really
- ;; want to avoid unnecessary consing. So we bypass
- ;; `decode-coding-string' if the string is purely ASCII.
- (if (and (fboundp 'detect-coding-string)
- ;; string is purely ASCII
- (eq (detect-coding-string string t) 'undecided))
- string
- (mm-decode-coding-string string mail-parse-charset))
- (mm-string-to-multibyte string)))) ;; )
+ (if (string-match "=\\?" string)
+ (with-temp-buffer
+ ;; We used to only call mm-enable-multibyte if `m' is non-nil,
+ ;; but this can't be the right criterion. Don't just revert this
+ ;; change if it encounters a bug. Please help me fix it
+ ;; right instead. --Stef
+ ;; The string returned should always be multibyte in a multibyte
+ ;; session, i.e. the buffer should be multibyte before
+ ;; `buffer-string' is called.
+ (mm-enable-multibyte)
+ (insert string)
+ (inline
+ (rfc2047-decode-region (point-min) (point-max) address-mime))
+ (buffer-string))
+ (when address-mime
+ (setq string
+ (with-temp-buffer
+ (when (multibyte-string-p string)
+ (mm-enable-multibyte))
+ (insert string)
+ (rfc2047-strip-backslashes-in-quoted-strings)
+ (buffer-string))))
+ ;; Fixme: As above, `m' here is inappropriate.
+ (if (and ;; m
+ mail-parse-charset
+ (not (eq mail-parse-charset 'us-ascii))
+ (not (eq mail-parse-charset 'gnus-decoded)))
+ ;; `decode-coding-string' in Emacs offers a third optional
+ ;; arg NOCOPY to avoid consing a new string if the decoding
+ ;; is "trivial". Unfortunately it currently doesn't
+ ;; consider anything else than a nil coding system
+ ;; trivial.
+ ;; `rfc2047-decode-string' is called multiple times for each
+ ;; article during summary buffer generation, and we really
+ ;; want to avoid unnecessary consing. So we bypass
+ ;; `decode-coding-string' if the string is purely ASCII.
+ (if (eq (detect-coding-string string t) 'undecided)
+ ;; string is purely ASCII
+ string
+ (decode-coding-string string mail-parse-charset))
+ (string-to-multibyte string))))
(defun rfc2047-decode-address-string (string)
"Decode MIME-encoded STRING and return the result.
diff --git a/lisp/gnus/rfc2231.el b/lisp/mail/rfc2231.el
index 34c8ecd458..128779ab4c 100644
--- a/lisp/gnus/rfc2231.el
+++ b/lisp/mail/rfc2231.el
@@ -63,12 +63,13 @@ must never cause a Lisp error."
(let (mod)
(when (and (string-match "\\\\\"" string)
(not (string-match "\\`\"\\|[^\\]\"" string)))
- (setq string (mm-replace-in-string string "\\\\\"" "\"")
+ (setq string (replace-regexp-in-string "\\\\\"" "\"" string)
mod t))
(when (and (string-match "\\\\(" string)
(string-match "\\\\)" string)
(not (string-match "\\`(\\|[^\\][()]" string)))
- (setq string (mm-replace-in-string string "\\\\\\([()]\\)" "\\1")
+ (setq string (replace-regexp-in-string
+ "\\\\\\([()]\\)" "\\1" string)
mod t))
(or (and mod
(ignore-errors
@@ -230,7 +231,7 @@ These look like:
;; Decode using the charset, if any.
(if (memq coding-system '(nil ascii))
(buffer-string)
- (mm-decode-coding-string (buffer-string) coding-system)))))
+ (decode-coding-string (buffer-string) coding-system)))))
(defun rfc2231-encode-string (param value)
"Return and PARAM=VALUE string encoded according to RFC2231.
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 10ba5b3803..e9882253c7 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -40,6 +40,8 @@
(require 'mail-utils)
(require 'rfc2047)
+(require 'rmail-loaddefs)
+
(declare-function compilation--message->loc "compile" (cl-x) t)
(declare-function epa--find-coding-system-for-mime-charset "epa" (mime-charset))
@@ -161,7 +163,7 @@ its character representation and its display representation.")
(put 'rmail-spool-directory 'standard-value
'((cond ((file-exists-p "/var/mail") "/var/mail/")
((file-exists-p "/var/spool/mail") "/var/spool/mail/")
- ((memq system-type '(hpux usg-unix-v irix)) "/usr/mail/")
+ ((memq system-type '(hpux usg-unix-v)) "/usr/mail/")
(t "/usr/spool/mail/"))))
;;;###autoload
@@ -174,7 +176,7 @@ its character representation and its display representation.")
"/var/mail/")
;; Many GNU/Linux systems use this name.
((file-exists-p "/var/spool/mail") "/var/spool/mail/")
- ((memq system-type '(hpux usg-unix-v irix)) "/usr/mail/")
+ ((memq system-type '(hpux usg-unix-v)) "/usr/mail/")
(t "/usr/spool/mail/")))
"Name of directory used by system mailer for delivering new mail.
Its name should end with a slash."
@@ -239,6 +241,7 @@ please report it with \\[report-emacs-bug].")
(declare-function mail-dont-reply-to "mail-utils" (destinations))
(declare-function rmail-update-summary "rmailsum" (&rest ignore))
(declare-function rmail-mime-toggle-hidden "rmailmm" ())
+(declare-function rmail-mime-entity-truncated "rmailmm" (entity))
(defun rmail-probe (prog)
"Determine what flavor of movemail PROG is.
@@ -1815,9 +1818,21 @@ not be a new one). It returns non-nil if it got any new messages."
;; Read in the contents of the inbox files, renaming them as
;; necessary, and adding to the list of files to delete
;; eventually.
- (if file-name
- (rmail-insert-inbox-text files nil)
- (setq delete-files (rmail-insert-inbox-text files t)))
+ (unwind-protect
+ (progn
+ ;; Set modified now to lock the file, so that we don't
+ ;; encounter locking problems later in the middle of
+ ;; reading the mail.
+ (set-buffer-modified-p t)
+ (if file-name
+ (rmail-insert-inbox-text files nil)
+ (setq delete-files (rmail-insert-inbox-text files t))))
+ ;; If there was no new mail, or we aborted before actually
+ ;; trying to get any, mark buffer unmodified. Otherwise the
+ ;; buffer is correctly marked modified and the file locked
+ ;; until we save out the new mail.
+ (if (= (point-min) (point-max))
+ (set-buffer-modified-p nil)))
;; Scan the new text and convert each message to
;; Rmail/mbox format.
(goto-char (point-min))
@@ -1966,11 +1981,6 @@ Value is the size of the newly read mail after conversion."
size))
(defun rmail-insert-inbox-text (files renamep)
- ;; Detect a locked file now, so that we avoid moving mail
- ;; out of the real inbox file. (That could scare people.)
- (or (memq (file-locked-p buffer-file-name) '(nil t))
- (error "RMAIL file %s is locked"
- (file-name-nondirectory buffer-file-name)))
(let (file tofile delete-files popmail got-password password)
(while files
;; Handle remote mailbox names specially; don't expand as filenames
@@ -4588,6 +4598,7 @@ Argument MIME is non-nil if this is a mime message."
;; There doesn't really seem to be an appropriate menu.
;; Eg the edit command is not in a menu either.
+(defvar rmail-mime-render-html-function) ; defcustom in rmailmm
(defun rmail-epa-decrypt ()
"Decrypt GnuPG or OpenPGP armors in current message."
(interactive)
@@ -4730,227 +4741,6 @@ Argument MIME is non-nil if this is a mime message."
(setq buffer-file-coding-system rmail-message-encoding))))
(add-hook 'after-save-hook 'rmail-after-save-hook)
-
-;;; Start of automatically extracted autoloads.
-
-;;;### (autoloads nil "rmailedit" "rmailedit.el" "03eb8c36b3c57d58eecedb9eeffa623e")
-;;; Generated autoloads from rmailedit.el
-
-(autoload 'rmail-edit-current-message "rmailedit" "\
-Edit the contents of this message.
-
-\(fn)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "rmailkwd" "rmailkwd.el" "4e1b251929961e2b9d3b126301d697d0")
-;;; Generated autoloads from rmailkwd.el
-
-(autoload 'rmail-add-label "rmailkwd" "\
-Add LABEL to labels associated with current RMAIL message.
-Completes (see `rmail-read-label') over known labels when reading.
-LABEL may be a symbol or string. Only one label is allowed.
-
-\(fn LABEL)" t nil)
-
-(autoload 'rmail-kill-label "rmailkwd" "\
-Remove LABEL from labels associated with current RMAIL message.
-Completes (see `rmail-read-label') over known labels when reading.
-LABEL may be a symbol or string. Only one label is allowed.
-
-\(fn LABEL)" t nil)
-
-(autoload 'rmail-read-label "rmailkwd" "\
-Read a label with completion, prompting with PROMPT.
-Completions are chosen from `rmail-label-obarray'. The default
-is `rmail-last-label', if that is non-nil. Updates `rmail-last-label'
-according to the choice made, and returns a symbol.
-
-\(fn PROMPT)" nil nil)
-
-(autoload 'rmail-previous-labeled-message "rmailkwd" "\
-Show previous message with one of the labels LABELS.
-LABELS should be a comma-separated list of label names.
-If LABELS is empty, the last set of labels specified is used.
-With prefix argument N moves backward N messages with these labels.
-
-\(fn N LABELS)" t nil)
-
-(autoload 'rmail-next-labeled-message "rmailkwd" "\
-Show next message with one of the labels LABELS.
-LABELS should be a comma-separated list of label names.
-If LABELS is empty, the last set of labels specified is used.
-With prefix argument N moves forward N messages with these labels.
-
-\(fn N LABELS)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "rmailmm" "rmailmm.el" "7ab6ab96dfdeeec6bc8f4620295b7119")
-;;; Generated autoloads from rmailmm.el
-
-(autoload 'rmail-mime "rmailmm" "\
-Toggle the display of a MIME message.
-
-The actual behavior depends on the value of `rmail-enable-mime'.
-
-If `rmail-enable-mime' is non-nil (the default), this command toggles
-the display of a MIME message between decoded presentation form and
-raw data. With optional prefix argument ARG, it toggles the display only
-of the MIME entity at point, if there is one. The optional argument
-STATE forces a particular display state, rather than toggling.
-`raw' forces raw mode, any other non-nil value forces decoded mode.
-
-If `rmail-enable-mime' is nil, this creates a temporary \"*RMAIL*\"
-buffer holding a decoded copy of the message. Inline content-types are
-handled according to `rmail-mime-media-type-handlers-alist'.
-By default, this displays text and multipart messages, and offers to
-download attachments as specified by `rmail-mime-attachment-dirs-alist'.
-The arguments ARG and STATE have no effect in this case.
-
-\(fn &optional ARG STATE)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "rmailmsc" "rmailmsc.el" "471c370ff9f183806c8d749961ec9d79")
-;;; Generated autoloads from rmailmsc.el
-
-(autoload 'set-rmail-inbox-list "rmailmsc" "\
-Set the inbox list of the current RMAIL file to FILE-NAME.
-You can specify one file name, or several names separated by commas.
-If FILE-NAME is empty, remove any existing inbox list.
-
-This applies only to the current session.
-
-\(fn FILE-NAME)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "rmailsort" "rmailsort.el" "2c8e39f7bae6fcc465a83ebccd46c8a4")
-;;; Generated autoloads from rmailsort.el
-
-(autoload 'rmail-sort-by-date "rmailsort" "\
-Sort messages of current Rmail buffer by \"Date\" header.
-If prefix argument REVERSE is non-nil, sorts in reverse order.
-
-\(fn REVERSE)" t nil)
-
-(autoload 'rmail-sort-by-subject "rmailsort" "\
-Sort messages of current Rmail buffer by \"Subject\" header.
-Ignores any \"Re: \" prefix. If prefix argument REVERSE is
-non-nil, sorts in reverse order.
-
-\(fn REVERSE)" t nil)
-
-(autoload 'rmail-sort-by-author "rmailsort" "\
-Sort messages of current Rmail buffer by author.
-This uses either the \"From\" or \"Sender\" header, downcased.
-If prefix argument REVERSE is non-nil, sorts in reverse order.
-
-\(fn REVERSE)" t nil)
-
-(autoload 'rmail-sort-by-recipient "rmailsort" "\
-Sort messages of current Rmail buffer by recipient.
-This uses either the \"To\" or \"Apparently-To\" header, downcased.
-If prefix argument REVERSE is non-nil, sorts in reverse order.
-
-\(fn REVERSE)" t nil)
-
-(autoload 'rmail-sort-by-correspondent "rmailsort" "\
-Sort messages of current Rmail buffer by other correspondent.
-This uses either the \"From\", \"Sender\", \"To\", or
-\"Apparently-To\" header, downcased. Uses the first header not
-excluded by `mail-dont-reply-to-names'. If prefix argument
-REVERSE is non-nil, sorts in reverse order.
-
-\(fn REVERSE)" t nil)
-
-(autoload 'rmail-sort-by-lines "rmailsort" "\
-Sort messages of current Rmail buffer by the number of lines.
-If prefix argument REVERSE is non-nil, sorts in reverse order.
-
-\(fn REVERSE)" t nil)
-
-(autoload 'rmail-sort-by-labels "rmailsort" "\
-Sort messages of current Rmail buffer by labels.
-LABELS is a comma-separated list of labels. The order of these
-labels specifies the order of messages: messages with the first
-label come first, messages with the second label come second, and
-so on. Messages that have none of these labels come last.
-If prefix argument REVERSE is non-nil, sorts in reverse order.
-
-\(fn REVERSE LABELS)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "rmailsum" "rmailsum.el" "8205e67c8188aa5c01715e79e10667c1")
-;;; Generated autoloads from rmailsum.el
-
-(autoload 'rmail-summary "rmailsum" "\
-Display a summary of all messages, one line per message.
-
-\(fn)" t nil)
-
-(autoload 'rmail-summary-by-labels "rmailsum" "\
-Display a summary of all messages with one or more LABELS.
-LABELS should be a string containing the desired labels, separated by commas.
-
-\(fn LABELS)" t nil)
-
-(autoload 'rmail-summary-by-recipients "rmailsum" "\
-Display a summary of all messages with the given RECIPIENTS.
-Normally checks the To, From and Cc fields of headers;
-but if PRIMARY-ONLY is non-nil (prefix arg given),
- only look in the To and From fields.
-RECIPIENTS is a regular expression.
-
-\(fn RECIPIENTS &optional PRIMARY-ONLY)" t nil)
-
-(autoload 'rmail-summary-by-regexp "rmailsum" "\
-Display a summary of all messages according to regexp REGEXP.
-If the regular expression is found in the header of the message
-\(including in the date and other lines, as well as the subject line),
-Emacs will list the message in the summary.
-
-\(fn REGEXP)" t nil)
-
-(autoload 'rmail-summary-by-topic "rmailsum" "\
-Display a summary of all messages with the given SUBJECT.
-Normally checks just the Subject field of headers; but with prefix
-argument WHOLE-MESSAGE is non-nil, looks in the whole message.
-SUBJECT is a regular expression.
-
-\(fn SUBJECT &optional WHOLE-MESSAGE)" t nil)
-
-(autoload 'rmail-summary-by-senders "rmailsum" "\
-Display a summary of all messages whose \"From\" field matches SENDERS.
-SENDERS is a regular expression.
-
-\(fn SENDERS)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "undigest" "undigest.el" "20561f083496eb113fa9e501902bfcc3")
-;;; Generated autoloads from undigest.el
-
-(autoload 'undigestify-rmail-message "undigest" "\
-Break up a digest message into its constituent messages.
-Leaves original message, deleted, before the undigestified messages.
-
-\(fn)" t nil)
-
-(autoload 'unforward-rmail-message "undigest" "\
-Extract a forwarded message from the containing message.
-This puts the forwarded message into a separate rmail message following
-the containing message. This command is only useful when messages are
-forwarded with `rmail-enable-mime-composing' set to nil.
-
-\(fn)" t nil)
-
-;;;***
-
-;;; End of automatically extracted autoloads.
-
(provide 'rmail)
diff --git a/lisp/mail/rmailedit.el b/lisp/mail/rmailedit.el
index 5c29e7ec8b..46e5e17a2e 100644
--- a/lisp/mail/rmailedit.el
+++ b/lisp/mail/rmailedit.el
@@ -448,7 +448,7 @@ HEADER-DIFF should be a return value from `rmail-edit-diff-headers'."
(provide 'rmailedit)
;; Local Variables:
-;; generated-autoload-file: "rmail.el"
+;; generated-autoload-file: "rmail-loaddefs.el"
;; End:
;;; rmailedit.el ends here
diff --git a/lisp/mail/rmailkwd.el b/lisp/mail/rmailkwd.el
index 0301e51212..6581ee628a 100644
--- a/lisp/mail/rmailkwd.el
+++ b/lisp/mail/rmailkwd.el
@@ -192,7 +192,7 @@ With prefix argument N moves forward N messages with these labels."
(provide 'rmailkwd)
;; Local Variables:
-;; generated-autoload-file: "rmail.el"
+;; generated-autoload-file: "rmail-loaddefs.el"
;; End:
;;; rmailkwd.el ends here
diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el
index 7521974768..9343b11806 100644
--- a/lisp/mail/rmailmm.el
+++ b/lisp/mail/rmailmm.el
@@ -1560,7 +1560,7 @@ This is the usual value of `rmail-insert-mime-forwarded-message-function'."
(provide 'rmailmm)
;; Local Variables:
-;; generated-autoload-file: "rmail.el"
+;; generated-autoload-file: "rmail-loaddefs.el"
;; End:
;;; rmailmm.el ends here
diff --git a/lisp/mail/rmailmsc.el b/lisp/mail/rmailmsc.el
index 0a76576dfc..1185dccf22 100644
--- a/lisp/mail/rmailmsc.el
+++ b/lisp/mail/rmailmsc.el
@@ -55,7 +55,7 @@ This applies only to the current session."
(rmail-show-message-1 rmail-current-message))
;; Local Variables:
-;; generated-autoload-file: "rmail.el"
+;; generated-autoload-file: "rmail-loaddefs.el"
;; End:
;;; rmailmsc.el ends here
diff --git a/lisp/mail/rmailsort.el b/lisp/mail/rmailsort.el
index 1eb60c2d54..60320b929e 100644
--- a/lisp/mail/rmailsort.el
+++ b/lisp/mail/rmailsort.el
@@ -251,7 +251,7 @@ Numeric keys are sorted numerically, all others as strings."
(provide 'rmailsort)
;; Local Variables:
-;; generated-autoload-file: "rmail.el"
+;; generated-autoload-file: "rmail-loaddefs.el"
;; End:
;;; rmailsort.el ends here
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index 52b717fb9d..0a2ca0b803 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -1871,7 +1871,7 @@ the summary is only showing a subset of messages."
(provide 'rmailsum)
;; Local Variables:
-;; generated-autoload-file: "rmail.el"
+;; generated-autoload-file: "rmail-loaddefs.el"
;; End:
;;; rmailsum.el ends here
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index 8e0bb3ae6b..f21b847b49 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -858,8 +858,6 @@ Returns an error if the server cannot be contacted."
;; Send the contents.
(smtpmail-command-or-throw process "DATA")
(smtpmail-send-data process smtpmail-text-buffer)
- ;; DATA end "."
- (smtpmail-command-or-throw process ".")
;; Return success.
nil))
(when (and process
@@ -957,10 +955,11 @@ Returns an error if the server cannot be contacted."
(process-send-string process "\r\n"))
(defun smtpmail-send-data (process buffer)
- (let ((data-continue t) sending-data
+ (let ((data-continue t)
(pr (with-current-buffer buffer
(make-progress-reporter "Sending email "
- (point-min) (point-max)))))
+ (point-min) (point-max))))
+ sending-data)
(with-current-buffer buffer
(goto-char (point-min)))
(while data-continue
@@ -970,6 +969,8 @@ Returns an error if the server cannot be contacted."
(end-of-line 2)
(setq data-continue (not (eobp))))
(smtpmail-send-data-1 process sending-data))
+ ;; DATA end "."
+ (smtpmail-command-or-throw process ".")
(progress-reporter-done pr)))
(defun smtpmail-deduce-address-list (smtpmail-text-buffer header-start header-end)
diff --git a/lisp/mail/undigest.el b/lisp/mail/undigest.el
index 1d0a3718a9..54ee99bafb 100644
--- a/lisp/mail/undigest.el
+++ b/lisp/mail/undigest.el
@@ -327,7 +327,7 @@ forwarded with `rmail-enable-mime-composing' set to nil."
(provide 'undigest)
;; Local Variables:
-;; generated-autoload-file: "rmail.el"
+;; generated-autoload-file: "rmail-loaddefs.el"
;; End:
;;; undigest.el ends here
diff --git a/lisp/gnus/yenc.el b/lisp/mail/yenc.el
index cfac06d4f1..a4ebd0db15 100644
--- a/lisp/gnus/yenc.el
+++ b/lisp/mail/yenc.el
@@ -90,8 +90,8 @@
(setq last (match-beginning 0))
(setq footer-alist (yenc-parse-line (match-string 0)))
(setq work-buffer (generate-new-buffer " *yenc-work*"))
- (unless (featurep 'xemacs)
- (with-current-buffer work-buffer (set-buffer-multibyte nil)))
+ (with-current-buffer work-buffer
+ (set-buffer-multibyte nil))
(while (< first last)
(setq char (char-after first))
(cond ((or (eq char ?\r)
diff --git a/lisp/man.el b/lisp/man.el
index 5acf90baf2..d127decfeb 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -308,7 +308,7 @@ This regular expression should start with a `^' character.")
(defvar Man-reference-regexp
(concat "\\(" Man-name-regexp
- "\\(\n[ \t]+" Man-name-regexp "\\)*\\)[ \t]*(\\("
+ "\\(�\n[ \t]+" Man-name-regexp "\\)*\\)[ \t]*(\\("
Man-section-regexp "\\))")
"Regular expression describing a reference to another manpage.")
@@ -779,7 +779,7 @@ POS defaults to `point'."
;; see this-
;; command-here(1)
;; Note: This code gets executed iff our entry is after POS.
- (when (looking-at "[ \t\r\n]+\\([-a-zA-Z0-9._+:]+\\)([0-9])")
+ (when (looking-at "�[ \t\r\n]+\\([-a-zA-Z0-9._+:]+\\)([0-9])")
(setq word (concat word (match-string-no-properties 1)))
;; Make sure the section number gets included by the code below.
(goto-char (match-end 1)))
@@ -1430,8 +1430,17 @@ manpage command."
(quit-restore-window
(get-buffer-window (current-buffer) t) 'kill)
(kill-buffer (current-buffer)))
- (message "Can't find the %s manpage"
- (Man-page-from-arguments args)))
+ ;; Entries hyphenated due to the window's width
+ ;; won't be found in the man database, so remove
+ ;; the hyphenation -- assuming Groff hyphenates
+ ;; either with hyphen-minus (ASCII 45, #x2d),
+ ;; hyphen (#x2010) or soft hyphen (#xad) -- and
+ ;; look again.
+ (if (string-match "[-â€Â­]" args)
+ (let ((str (replace-match "" nil nil args)))
+ (Man-getpage-in-background str))
+ (message "Can't find the %s manpage"
+ (Man-page-from-arguments args))))
(if Man-fontify-manpage-flag
(message "%s man page formatted"
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 640395e8d7..9f3156d62b 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -535,7 +535,9 @@
(defun clipboard-yank ()
"Insert the clipboard contents, or the last stretch of killed text."
(interactive "*")
- (let ((gui-select-enable-clipboard t))
+ (let ((gui-select-enable-clipboard t)
+ (interprogram-paste-function (or interprogram-paste-function
+ #'gui-selection-value)))
(yank)))
(defun clipboard-kill-ring-save (beg end &optional region)
@@ -543,7 +545,9 @@
If the optional argument REGION is non-nil, the function ignores
BEG and END, and saves the current region instead."
(interactive "r\np")
- (let ((gui-select-enable-clipboard t))
+ (let ((gui-select-enable-clipboard t)
+ (interprogram-cut-function (or interprogram-cut-function
+ #'gui-select-text)))
(kill-ring-save beg end region)))
(defun clipboard-kill-region (beg end &optional region)
@@ -551,7 +555,9 @@ BEG and END, and saves the current region instead."
If the optional argument REGION is non-nil, the function ignores
BEG and END, and kills the current region instead."
(interactive "r\np")
- (let ((gui-select-enable-clipboard t))
+ (let ((gui-select-enable-clipboard t)
+ (interprogram-cut-function (or interprogram-cut-function
+ #'gui-select-text)))
(kill-region beg end region)))
(defun menu-bar-enable-clipboard ()
@@ -983,49 +989,43 @@ The selected font will be the default on both the existing and future frames."
(customize-set-variable 'horizontal-scroll-bar-mode nil))
(defvar menu-bar-showhide-scroll-bar-menu
- (let ((menu (make-sparse-keymap "Scroll-bar")))
+ (let ((menu (make-sparse-keymap "Scroll-bar"))
+ (vsb (frame-parameter nil 'vertical-scroll-bars))
+ (hsb (frame-parameter nil 'horizontal-scroll-bars)))
(bindings--define-key menu [horizontal]
- '(menu-item "Horizontal"
+ `(menu-item "Horizontal"
menu-bar-horizontal-scroll-bar
:help "Horizontal scroll bar"
:visible (horizontal-scroll-bars-available-p)
- :button (:radio . (cdr (assq 'horizontal-scroll-bars
- (frame-parameters))))))
+ :button (:radio . ,hsb)))
(bindings--define-key menu [none-horizontal]
- '(menu-item "None-horizontal"
+ `(menu-item "None-horizontal"
menu-bar-no-horizontal-scroll-bar
:help "Turn off horizontal scroll bars"
:visible (horizontal-scroll-bars-available-p)
- :button (:radio . (not (cdr (assq 'horizontal-scroll-bars
- (frame-parameters)))))))
+ :button (:radio . (not ,hsb))))
(bindings--define-key menu [right]
- '(menu-item "On the Right"
+ `(menu-item "On the Right"
menu-bar-right-scroll-bar
:help "Scroll-bar on the right side"
:visible (display-graphic-p)
- :button (:radio . (eq (cdr (assq 'vertical-scroll-bars
- (frame-parameters)))
- 'right))))
+ :button (:radio . (eq ,vsb 'right))))
(bindings--define-key menu [left]
- '(menu-item "On the Left"
+ `(menu-item "On the Left"
menu-bar-left-scroll-bar
:help "Scroll-bar on the left side"
:visible (display-graphic-p)
- :button (:radio . (eq (cdr (assq 'vertical-scroll-bars
- (frame-parameters)))
- 'left))))
+ :button (:radio . (eq ,vsb 'left))))
(bindings--define-key menu [none]
- '(menu-item "None"
+ `(menu-item "None"
menu-bar-no-scroll-bar
:help "Turn off scroll-bar"
:visible (display-graphic-p)
- :button (:radio . (eq (cdr (assq 'vertical-scroll-bars
- (frame-parameters)))
- nil))))
+ :button (:radio . (not ,vsb))))
menu))
(defun menu-bar-frame-for-menubar ()
@@ -1581,7 +1581,7 @@ mail status in mode line"))
(bindings--define-key menu [browse-web]
'(menu-item "Browse the Web..." browse-web))
(bindings--define-key menu [directory-search]
- '(menu-item "Directory Search" eudc-tools-menu))
+ '(menu-item "Directory Servers" eudc-tools-menu))
(bindings--define-key menu [compose-mail]
'(menu-item "Compose New Mail" compose-mail
:visible (and mail-user-agent (not (eq mail-user-agent 'ignore)))
diff --git a/lisp/mh-e/ChangeLog.1 b/lisp/mh-e/ChangeLog.1
index 7f29f598b6..7dde743791 100644
--- a/lisp/mh-e/ChangeLog.1
+++ b/lisp/mh-e/ChangeLog.1
@@ -306,7 +306,7 @@
arguments were put in a single string (closes SF #1122655).
(mh-edit-pick-expr): Use it.
- * mh-unit.el (mh-unit): Since 21.4 snuck out but didn't contain
+ * mh-unit.el (mh-unit): Since 21.4 sneaked out but didn't contain
updated lm-verify, don't run lm-verify on versions before 21.5.
(mh-unit-test-pick-args-list): Added.
diff --git a/lisp/mh-e/mh-alias.el b/lisp/mh-e/mh-alias.el
index 1940234bc3..968c33cb4d 100644
--- a/lisp/mh-e/mh-alias.el
+++ b/lisp/mh-e/mh-alias.el
@@ -48,16 +48,18 @@
(define-key map " " 'self-insert-command)
map))
-(defvar mh-alias-system-aliases
+(defcustom mh-alias-system-aliases
'("/etc/nmh/MailAliases" "/etc/mh/MailAliases"
"/usr/lib/mh/MailAliases" "/usr/share/mailutils/mh/MailAliases"
"/etc/passwd")
- "*A list of system files which are a source of aliases.
+ "A list of system files which are a source of aliases.
If these files are modified, they are automatically reread. This list
need include only system aliases and the passwd file, since personal
alias files listed in your \"Aliasfile:\" MH profile component are
automatically included. You can update the alias list manually using
-\\[mh-alias-reload].")
+\\[mh-alias-reload]."
+ :type '(repeat file)
+ :group 'mh-alias)
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index 4e64cfb12d..72980b7ead 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -916,14 +916,14 @@ CONFIG is the window configuration before sending mail."
;; use it as the drafts folder. Then copy the skeleton to a regular
;; temp file, and return the regular temp file.
(let (new
- (temp-folder (mm-make-temp-file
+ (temp-folder (make-temp-file
(concat mh-user-path "draftfolder.") t)))
(mh-exec-cmd "comp" "-nowhatnowproc"
"-draftfolder" (format "+%s"
(file-name-nondirectory temp-folder))
(if (stringp mh-comp-formfile)
(list "-form" mh-comp-formfile)))
- (setq new (mm-make-temp-file "comp."))
+ (setq new (make-temp-file "comp."))
(rename-file (concat temp-folder "/" "1") new t)
(delete-file (concat temp-folder "/" ".mh_sequences"))
(delete-directory temp-folder)
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index c900248c9b..12c674d08f 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -5,7 +5,7 @@
;; Author: Bill Wohler <wohler@newt.com>
;; Maintainer: Bill Wohler <wohler@newt.com>
-;; Version: 8.6
+;; Version: 8.6+git
;; Keywords: mail
;; This file is part of GNU Emacs.
@@ -127,7 +127,7 @@
;; Try to keep variables local to a single file. Provide accessors if
;; variables are shared. Use this section as a last resort.
-(defconst mh-version "8.6" "Version number of MH-E.")
+(defconst mh-version "8.6+git" "Version number of MH-E.")
;; Variants
@@ -317,8 +317,8 @@ This list will always include the current folder
`mh-current-folder'. This variable can be used by
`mh-after-commands-processed-hook'.")
-(defvar mh-mail-header-separator "--------"
- "*Line used by MH to separate headers from text in messages being composed.
+(defcustom mh-mail-header-separator "--------"
+ "Line used by MH to separate headers from text in messages being composed.
This variable should not be used directly in programs. Programs
should use `mail-header-separator' instead.
@@ -328,7 +328,9 @@ contexts, you may have to perform this initialization yourself.
Do not make this a regular expression as it may be the argument
to `insert' and it is passed through `regexp-quote' before being
-used by functions like `re-search-forward'.")
+used by functions like `re-search-forward'."
+ :group 'mh-e ; FIXME?
+ :type 'string)
(defvar mh-sent-from-folder nil
"Folder of msg assoc with this letter.")
@@ -385,11 +387,12 @@ This is the original map that is stored when the folder is
narrowed.")
(make-variable-buffer-local 'mh-thread-scan-line-map-stack)
-(defvar mh-x-mailer-string nil
- "*String containing the contents of the X-Mailer header field.
+(defcustom mh-x-mailer-string nil
+ "String containing the contents of the X-Mailer header field.
If nil, this variable is initialized to show the version of MH-E,
-Emacs, and MH the first time a message is composed.")
-
+Emacs, and MH the first time a message is composed."
+ :group 'mh-e ; FIXME?
+ :type '(choice (const :tag "Default" nil) string))
;;; MH-E Entry Points
@@ -719,7 +722,7 @@ keyword, introduced in Emacs 22."
;;; Variant Support
(defcustom-mh mh-path nil
- "*Additional list of directories to search for MH.
+ "Additional list of directories to search for MH.
See `mh-variant'."
:group 'mh-e
:type '(repeat (directory))
@@ -945,7 +948,7 @@ finally GNU mailutils MH."
(mh-variants) " or "))))))
(defcustom-mh mh-variant 'autodetect
- "*Specifies the variant used by MH-E.
+ "Specifies the variant used by MH-E.
The default setting of this option is \"Auto-detect\" which means
that MH-E will automatically choose the first of nmh, MH, or GNU
@@ -1174,7 +1177,7 @@ and GNU mailutils."
;;; Aliases (:group 'mh-alias)
(defcustom-mh mh-alias-completion-ignore-case-flag t
- "*Non-nil means don't consider case significant in MH alias completion.
+ "Non-nil means don't consider case significant in MH alias completion.
As MH ignores case in the aliases, so too does MH-E. However, you
may turn off this option to make case significant which can be
@@ -1185,7 +1188,7 @@ lowercase for mailing lists and uppercase for people."
:package-version '(MH-E . "7.1"))
(defcustom-mh mh-alias-expand-aliases-flag nil
- "*Non-nil means to expand aliases entered in the minibuffer.
+ "Non-nil means to expand aliases entered in the minibuffer.
In other words, aliases entered in the minibuffer will be
expanded to the full address in the message draft. By default,
@@ -1195,7 +1198,7 @@ this expansion is not performed."
:package-version '(MH-E . "7.1"))
(defcustom-mh mh-alias-flash-on-comma t
- "*Specify whether to flash address or warn on translation.
+ "Specify whether to flash address or warn on translation.
This option controls the behavior when a [comma] is pressed while
entering aliases or addresses. The default setting flashes the
@@ -1208,7 +1211,7 @@ does not display a warning if the alias is not found."
:package-version '(MH-E . "7.1"))
(defcustom-mh mh-alias-insert-file nil
- "*Filename used to store a new MH-E alias.
+ "Filename used to store a new MH-E alias.
The default setting of this option is \"Use Aliasfile Profile
Component\". This option can also hold the name of a file or a
@@ -1234,7 +1237,7 @@ or \"Bottom\" of your alias file might be more appropriate."
:package-version '(MH-E . "7.1"))
(defcustom-mh mh-alias-local-users t
- "*Non-nil means local users are added to alias completion.
+ "Non-nil means local users are added to alias completion.
Aliases are created from \"/etc/passwd\" entries with a user ID
larger than a magical number, typically 200. This can be a handy
@@ -1255,7 +1258,7 @@ NIS password file."
:package-version '(MH-E . "7.1"))
(defcustom-mh mh-alias-local-users-prefix "local."
- "*String prefixed to the real names of users from the password file.
+ "String prefixed to the real names of users from the password file.
This option can also be set to \"Use Login\".
For example, consider the following password file entry:
@@ -1277,7 +1280,7 @@ turned off."
:package-version '(MH-E . "7.4"))
(defcustom-mh mh-alias-passwd-gecos-comma-separator-flag t
- "*Non-nil means the gecos field in the password file uses a comma separator.
+ "Non-nil means the gecos field in the password file uses a comma separator.
In the example in `mh-alias-local-users-prefix', commas are used
to separate different values within the so-called gecos field.
@@ -1333,7 +1336,7 @@ folders are treated as if they are small."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-recenter-summary-flag nil
- "*Non-nil means to recenter the summary window.
+ "Non-nil means to recenter the summary window.
If this option is turned on, recenter the summary window when the
show window is toggled off."
@@ -1342,13 +1345,13 @@ show window is toggled off."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-recursive-folders-flag nil
- "*Non-nil means that commands which operate on folders do so recursively."
+ "Non-nil means that commands which operate on folders do so recursively."
:type 'boolean
:group 'mh-folder
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-sortm-args nil
- "*Additional arguments for \"sortm\"\\<mh-folder-mode-map>.
+ "Additional arguments for \"sortm\"\\<mh-folder-mode-map>.
This option is consulted when a prefix argument is used with
\\[mh-sort-folder]. Normally default arguments to \"sortm\" are
@@ -1374,7 +1377,7 @@ the default, or an empty string to suppress the default entirely."
:package-version '(MH-E . "8.0"))
(defcustom-mh mh-default-folder-list nil
- "*List of addresses and folders.
+ "List of addresses and folders.
The folder name associated with the first address found in this
list is used as the default for `mh-refile-msg' and similar
@@ -1392,7 +1395,7 @@ for more information."
:package-version '(MH-E . "7.2"))
(defcustom-mh mh-default-folder-must-exist-flag t
- "*Non-nil means guessed folder name must exist to be used.
+ "Non-nil means guessed folder name must exist to be used.
If the derived folder does not exist, and this option is on, then
the last folder name used is suggested. This is useful if you get
@@ -1406,7 +1409,7 @@ for more information."
:package-version '(MH-E . "7.2"))
(defcustom-mh mh-default-folder-prefix ""
- "*Prefix used for folder names generated from aliases.
+ "Prefix used for folder names generated from aliases.
The prefix is used to prevent clutter in your mail directory.
See `mh-prompt-for-refile-folder' and `mh-folder-from-address'
@@ -1425,7 +1428,7 @@ Real definition will take effect when mh-identity is loaded."
nil)))
(defcustom-mh mh-identity-list nil
- "*List of identities.
+ "List of identities.
To customize this option, click on the \"INS\" button and enter a label
such as \"Home\" or \"Work\". Then click on the \"INS\" button with the
@@ -1555,7 +1558,7 @@ as the result is undefined."
:package-version '(MH-E . "7.3"))
(defcustom-mh mh-auto-fields-prompt-flag t
- "*Non-nil means to prompt before sending if fields inserted.
+ "Non-nil means to prompt before sending if fields inserted.
See `mh-auto-fields-list'."
:type 'boolean
:group 'mh-identity
@@ -1609,7 +1612,7 @@ containing the VALUE for the field is given."
;;; Incorporating Your Mail (:group 'mh-inc)
(defcustom-mh mh-inc-prog "inc"
- "*Program to incorporate new mail into a folder.
+ "Program to incorporate new mail into a folder.
This program generates a one-line summary for each of the new
messages. Unless it is an absolute pathname, the file is assumed
@@ -1628,7 +1631,7 @@ Real definition will take effect when mh-inc is loaded."
nil)))
(defcustom-mh mh-inc-spool-list nil
- "*Alternate spool files.
+ "Alternate spool files.
You can use the `mh-inc-spool-list' variable to direct MH-E to
retrieve mail from arbitrary spool files other than your system
@@ -1766,13 +1769,13 @@ MH-style directives are preferred."
:package-version '(MH-E . "7.4"))
(defcustom-mh mh-compose-space-does-completion-flag nil
- "*Non-nil means \\<mh-letter-mode-map>\\[mh-letter-complete-or-space] does completion in message header."
+ "Non-nil means \\<mh-letter-mode-map>\\[mh-letter-complete-or-space] does completion in message header."
:type 'boolean
:group 'mh-letter
:package-version '(MH-E . "7.4"))
(defcustom-mh mh-delete-yanked-msg-window-flag nil
- "*Non-nil means delete any window displaying the message.
+ "Non-nil means delete any window displaying the message.
This deletes the window containing the original message after
yanking it with \\<mh-letter-mode-map>\\[mh-yank-cur-msg] to make
@@ -1782,7 +1785,7 @@ more room on your screen for your reply."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-extract-from-attribution-verb "wrote:"
- "*Verb to use for attribution when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg].
+ "Verb to use for attribution when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg].
The attribution consists of the sender's name and email address
followed by the content of this option. This option can be set to
@@ -1796,7 +1799,7 @@ followed by the content of this option. This option can be set to
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-ins-buf-prefix "> "
- "*String to put before each line of a yanked or inserted message.
+ "String to put before each line of a yanked or inserted message.
The prefix \"> \" is the default setting of this option. I
suggest that you not modify this option since it is used by many
@@ -1812,7 +1815,7 @@ flavors of `mh-yank-behavior' or you have added a
:package-version '(MH-E . "6.0"))
(defcustom-mh mh-letter-complete-function 'ispell-complete-word
- "*Function to call when completing outside of address or folder fields.
+ "Function to call when completing outside of address or folder fields.
In the body of the message,
\\<mh-letter-mode-map>\\[mh-letter-complete] runs this function,
@@ -1822,7 +1825,7 @@ which is set to \"ispell-complete-word\" by default."
:package-version '(MH-E . "7.1"))
(defcustom-mh mh-letter-fill-column 72
- "*Fill column to use in MH Letter mode.
+ "Fill column to use in MH Letter mode.
By default, this option is 72 to allow others to quote your
message without line wrapping."
@@ -1854,7 +1857,7 @@ you write!"
:package-version '(MH-E . "8.0"))
(defcustom-mh mh-signature-file-name "~/.signature"
- "*Source of user's signature.
+ "Source of user's signature.
By default, the text of your signature is taken from the file
\"~/.signature\". You can read from other sources by changing this
@@ -1877,7 +1880,7 @@ The signature is inserted into your message with the command
:package-version '(MH-E . "6.0"))
(defcustom-mh mh-signature-separator-flag t
- "*Non-nil means a signature separator should be inserted.
+ "Non-nil means a signature separator should be inserted.
It is not recommended that you change this option since various
mail user agents, including MH-E, use the separator to present
@@ -1888,7 +1891,7 @@ replying or yanking a letter into a draft."
:package-version '(MH-E . "8.0"))
(defcustom-mh mh-x-face-file "~/.face"
- "*File containing face header field to insert in outgoing mail.
+ "File containing face header field to insert in outgoing mail.
If the file starts with either of the strings \"X-Face:\", \"Face:\"
or \"X-Image-URL:\" then the contents are added to the message header
@@ -1917,7 +1920,7 @@ this option doesn't exist."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-yank-behavior 'attribution
- "*Controls which part of a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg].
+ "Controls which part of a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg].
To include the entire message, including the entire header, use
\"Body and Header\". Use \"Body\" to yank just the body without
@@ -1964,7 +1967,7 @@ inserted."
;;; Ranges (:group 'mh-ranges)
(defcustom-mh mh-interpret-number-as-range-flag t
- "*Non-nil means interpret a number as a range.
+ "Non-nil means interpret a number as a range.
Since one of the most frequent ranges used is \"last:N\", MH-E
will interpret input such as \"200\" as \"last:200\" if this
@@ -1984,7 +1987,7 @@ Real definition, below, uses variables that aren't defined yet."
(set-default symbol value))))
(defcustom-mh mh-adaptive-cmd-note-flag t
- "*Non-nil means that the message number width is determined dynamically.
+ "Non-nil means that the message number width is determined dynamically.
If you've created your own format to handle long message numbers,
you'll be pleased to know you no longer need it since MH-E adapts its
@@ -2052,7 +2055,7 @@ Otherwise, set SYMBOL to VALUE."
(set-default symbol value)))
(defcustom-mh mh-scan-prog "scan"
- "*Program used to scan messages.
+ "Program used to scan messages.
The name of the program that generates a listing of one line per
message is held in this option. Unless this variable contains an
@@ -2090,7 +2093,7 @@ MH-E can be found in the documentation of `mh-search'."
;;; Sending Mail (:group 'mh-sending-mail)
(defcustom-mh mh-compose-forward-as-mime-flag t
- "*Non-nil means that messages are forwarded as attachments.
+ "Non-nil means that messages are forwarded as attachments.
By default, this option is on which means that the forwarded
messages are included as attachments. If you would prefer to
@@ -2118,13 +2121,13 @@ fields."
:package-version '(MH-E . "6.0"))
(defcustom-mh mh-compose-prompt-flag nil
- "*Non-nil means prompt for header fields when composing a new draft."
+ "Non-nil means prompt for header fields when composing a new draft."
:type 'boolean
:group 'mh-sending-mail
:package-version '(MH-E . "7.4"))
(defcustom-mh mh-forward-subject-format "%s: %s"
- "*Format string for forwarded message subject.
+ "Format string for forwarded message subject.
This option is a string which includes two escapes (\"%s\"). The
first \"%s\" is replaced with the sender of the original message,
@@ -2134,7 +2137,7 @@ and the second one is replaced with the original \"Subject:\"."
:package-version '(MH-E . "6.0"))
(defcustom-mh mh-insert-x-mailer-flag t
- "*Non-nil means append an \"X-Mailer:\" header field to the header.
+ "Non-nil means append an \"X-Mailer:\" header field to the header.
This header field includes the version of MH-E and Emacs that you
are using. If you don't want to participate in our marketing, you
@@ -2144,7 +2147,7 @@ can turn this option off."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-redist-full-contents-flag nil
- "*Non-nil means the \"dist\" command needs entire letter for redistribution.
+ "Non-nil means the \"dist\" command needs entire letter for redistribution.
This option must be turned on if \"dist\" requires the whole
letter for redistribution, which is the case if \"send\" is
@@ -2156,7 +2159,7 @@ has been redistributed before, turn off this option."
:package-version '(MH-E . "8.0"))
(defcustom-mh mh-reply-default-reply-to nil
- "*Sets the person or persons to whom a reply will be sent.
+ "Sets the person or persons to whom a reply will be sent.
This option is set to \"Prompt\" by default so that you are
prompted for the recipient of a reply. If you find that most of
@@ -2172,7 +2175,7 @@ this option to \"cc\". Other choices include \"from\", \"to\", or
:package-version '(MH-E . "6.0"))
(defcustom-mh mh-reply-show-message-flag t
- "*Non-nil means the MH-Show buffer is displayed when replying.
+ "Non-nil means the MH-Show buffer is displayed when replying.
If you include the message automatically, you can hide the
MH-Show buffer by turning off this option.
@@ -2189,7 +2192,7 @@ See also `mh-reply'."
;; specified by setting `mh-unpropagated-sequences' appropriately." XXX
(defcustom-mh mh-refile-preserves-sequences-flag t
- "*Non-nil means that sequences are preserved when messages are refiled.
+ "Non-nil means that sequences are preserved when messages are refiled.
If a message is in any sequence (except \"Previous-Sequence:\"
and \"cur\") when it is refiled, then it will still be in those
@@ -2212,7 +2215,7 @@ there isn't much advantage to that."
:package-version '(MH-E . "7.3"))
(defcustom-mh mh-update-sequences-after-mh-show-flag t
- "*Non-nil means flush MH sequences to disk after message is shown\\<mh-folder-mode-map>.
+ "Non-nil means flush MH sequences to disk after message is shown\\<mh-folder-mode-map>.
Three sequences are maintained internally by MH-E and pushed out
to MH when a message is shown. They include the sequence
@@ -2227,7 +2230,7 @@ commands."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-whitelist-preserves-sequences-flag t
- "*Non-nil means that sequences are preserved when messages are whitelisted.
+ "Non-nil means that sequences are preserved when messages are whitelisted.
If a message is in any sequence (except \"Previous-Sequence:\"
and \"cur\") when it is whitelisted, then it will still be in
@@ -2240,7 +2243,7 @@ not desired, then turn off this option."
;;; Reading Your Mail (:group 'mh-show)
(defcustom-mh mh-bury-show-buffer-flag t
- "*Non-nil means show buffer is buried.
+ "Non-nil means show buffer is buried.
One advantage of not burying the show buffer is that one can
delete the show buffer more easily in an electric buffer list
@@ -2251,7 +2254,7 @@ running \\[electric-buffer-list] to see what I mean."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-clean-message-header-flag t
- "*Non-nil means remove extraneous header fields.
+ "Non-nil means remove extraneous header fields.
See also `mh-invisible-header-fields-default' and
`mh-invisible-header-fields'."
@@ -2260,7 +2263,7 @@ See also `mh-invisible-header-fields-default' and
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-decode-mime-flag (not (not (locate-library "mm-decode")))
- "*Non-nil means attachments are handled\\<mh-folder-mode-map>.
+ "Non-nil means attachments are handled\\<mh-folder-mode-map>.
MH-E can handle attachments as well if the Gnus `mm-decode'
library is present. If so, this option will be on. Otherwise,
@@ -2278,7 +2281,7 @@ messages and other graphical widgets. See the options
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-display-buttons-for-alternatives-flag nil
- "*Non-nil means display buttons for all alternative attachments.
+ "Non-nil means display buttons for all alternative attachments.
Sometimes, a mail program will produce multiple alternatives of
the attachment in increasing degree of faithfulness to the
@@ -2290,7 +2293,7 @@ inline and buttons are shown for each of the other alternatives."
:package-version '(MH-E . "7.4"))
(defcustom-mh mh-display-buttons-for-inline-parts-flag nil
- "*Non-nil means display buttons for all inline attachments\\<mh-folder-mode-map>.
+ "Non-nil means display buttons for all inline attachments\\<mh-folder-mode-map>.
The sender can request that attachments should be viewed inline so
that they do not really appear like an attachment at all to the
@@ -2313,7 +2316,7 @@ text (including HTML) and images."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-do-not-confirm-flag nil
- "*Non-nil means non-reversible commands do not prompt for confirmation.
+ "Non-nil means non-reversible commands do not prompt for confirmation.
Commands such as `mh-pack-folder' prompt to confirm whether to
process outstanding moves and deletes or not before continuing.
@@ -2325,7 +2328,7 @@ retracted--without question."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-fetch-x-image-url nil
- "*Control fetching of \"X-Image-URL:\" header field image.
+ "Control fetching of \"X-Image-URL:\" header field image.
Ths option controls the fetching of the \"X-Image-URL:\" header
field image with the following values:
@@ -2361,7 +2364,7 @@ turned on."
:package-version '(MH-E . "7.3"))
(defcustom-mh mh-graphical-smileys-flag t
- "*Non-nil means graphical smileys are displayed.
+ "Non-nil means graphical smileys are displayed.
It is a long standing custom to inject body language using a
cornucopia of punctuation, also known as the \"smileys\". MH-E
@@ -2376,7 +2379,7 @@ turned off."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-graphical-emphasis-flag t
- "*Non-nil means graphical emphasis is displayed.
+ "Non-nil means graphical emphasis is displayed.
A few typesetting features are indicated in ASCII text with
certain characters. If your terminal supports it, MH-E can render
@@ -2815,7 +2818,7 @@ Because the function `mh-invisible-headers' uses both
cannot be run until both variables have been initialized.")
(defcustom-mh mh-invisible-header-fields nil
- "*Additional header fields to hide.
+ "Additional header fields to hide.
Header fields that you would like to hide that aren't listed in
`mh-invisible-header-fields-default' can be added to this option
@@ -2838,7 +2841,7 @@ See also `mh-clean-message-header-flag'."
:package-version '(MH-E . "7.1"))
(defcustom-mh mh-invisible-header-fields-default nil
- "*List of hidden header fields.
+ "List of hidden header fields.
The header fields listed in this option are hidden, although you
can check off any field that you would like to see.
@@ -2860,7 +2863,7 @@ update SF #1916032 (see URL
:package-version '(MH-E . "8.0"))
(defvar mh-invisible-header-fields-compiled nil
- "*Regexp matching lines in a message header that are not to be shown.
+ "Regexp matching lines in a message header that are not to be shown.
Do not alter this variable directly. Instead, customize
`mh-invisible-header-fields-default' checking for fields normally
hidden that you wish to display, and add extra entries to hide in
@@ -2895,7 +2898,7 @@ removed and entries from `mh-invisible-header-fields' are added."
(mh-invisible-headers)
(defcustom-mh mh-lpr-command-format "lpr -J '%s'"
- "*Command used to print\\<mh-folder-mode-map>.
+ "Command used to print\\<mh-folder-mode-map>.
This option contains the Unix command line which performs the
actual printing for the \\[mh-print-msg] command. The string can
@@ -2912,7 +2915,7 @@ This option is not used by the commands \\[mh-ps-print-msg] or
:package-version '(MH-E . "6.0"))
(defcustom-mh mh-max-inline-image-height nil
- "*Maximum inline image height if \"Content-Disposition:\" is not present.
+ "Maximum inline image height if \"Content-Disposition:\" is not present.
Some older mail programs do not insert this needed plumbing to
tell MH-E whether to display the attachments inline or not. If
@@ -2928,7 +2931,7 @@ these numbers."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-max-inline-image-width nil
- "*Maximum inline image width if \"Content-Disposition:\" is not present.
+ "Maximum inline image width if \"Content-Disposition:\" is not present.
Some older mail programs do not insert this needed plumbing to
tell MH-E whether to display the attachments inline or not. If
@@ -2944,7 +2947,7 @@ these numbers."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-mhl-format-file nil
- "*Specifies the format file to pass to the \"mhl\" program.
+ "Specifies the format file to pass to the \"mhl\" program.
Normally MH-E takes care of displaying messages itself (rather than
calling an MH program to do the work). If you'd rather have \"mhl\"
@@ -2984,7 +2987,7 @@ directory's name."
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-print-background-flag nil
- "*Non-nil means messages should be printed in the background\\<mh-folder-mode-map>.
+ "Non-nil means messages should be printed in the background\\<mh-folder-mode-map>.
Normally messages are printed in the foreground. If this is slow on
your system, you may elect to turn off this option to print in the
@@ -3000,7 +3003,7 @@ This option is not used by the commands \\[mh-ps-print-msg] or
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-show-maximum-size 0
- "*Maximum size of message (in bytes) to display automatically.
+ "Maximum size of message (in bytes) to display automatically.
This option provides an opportunity to skip over large messages
which may be slow to load. The default value of 0 means that all
@@ -3010,7 +3013,7 @@ message are shown regardless of size."
:package-version '(MH-E . "8.0"))
(defcustom-mh mh-show-use-xface-flag (>= emacs-major-version 21)
- "*Non-nil means display face images in MH-show buffers.
+ "Non-nil means display face images in MH-show buffers.
MH-E can display the content of \"Face:\", \"X-Face:\", and
\"X-Image-URL:\" header fields. If any of these fields occur in the
@@ -3050,7 +3053,7 @@ The option `mh-fetch-x-image-url' controls the fetching of the
:package-version '(MH-E . "7.0"))
(defcustom-mh mh-store-default-directory nil
- "*Default directory for \\<mh-folder-mode-map>\\[mh-store-msg].
+ "Default directory for \\<mh-folder-mode-map>\\[mh-store-msg].
If you would like to change the initial default directory,
customize this option, change the value from \"Current\" to
@@ -3062,7 +3065,7 @@ the content of these messages."
:package-version '(MH-E . "6.0"))
(defcustom-mh mh-summary-height nil
- "*Number of lines in MH-Folder buffer (including the mode line).
+ "Number of lines in MH-Folder buffer (including the mode line).
The default value of this option is \"Automatic\" which means
that the MH-Folder buffer will maintain the same proportional
@@ -3086,7 +3089,7 @@ Set to 0 to disable automatic update."
;;; Threading (:group 'mh-thread)
(defcustom-mh mh-show-threads-flag nil
- "*Non-nil means new folders start in threaded mode.
+ "Non-nil means new folders start in threaded mode.
Threading large number of messages can be time consuming so this
option is turned off by default. If you turn this option on, then
@@ -3102,7 +3105,7 @@ threaded is less than `mh-large-folder'."
;; dynamically in mh-tool-bar.el.
(defcustom-mh mh-tool-bar-search-function 'mh-search
- "*Function called by the tool bar search button.
+ "Function called by the tool bar search button.
By default, this is set to `mh-search'. You can also choose
\"Other Function\" from the \"Value Menu\" and enter a function
@@ -3115,7 +3118,7 @@ of your own choosing."
;; XEmacs has a couple of extra customizations...
(mh-do-in-xemacs
(defcustom-mh mh-xemacs-use-tool-bar-flag mh-xemacs-has-tool-bar-flag
- "*If non-nil, use tool bar.
+ "If non-nil, use tool bar.
This option controls whether to show the MH-E icons at all. By
default, this option is turned on if the window system supports
@@ -3131,7 +3134,7 @@ won't be able to turn on this option."
:package-version '(MH-E . "7.3"))
(defcustom-mh mh-xemacs-tool-bar-position nil
- "*Tool bar location.
+ "Tool bar location.
This option controls the placement of the tool bar along the four
edges of the frame. You can choose from one of \"Same As Default
diff --git a/lisp/mh-e/mh-scan.el b/lisp/mh-e/mh-scan.el
index 8241e6e789..a04ca88f3c 100644
--- a/lisp/mh-e/mh-scan.el
+++ b/lisp/mh-e/mh-scan.el
@@ -44,7 +44,7 @@
;; want to change the column of the notations, use the `mh-set-cmd-note'
;; function.
-(defvar mh-scan-format-mh
+(defcustom mh-scan-format-mh
(concat
"%4(msg)"
"%<(cur)+%| %>"
@@ -58,7 +58,7 @@
"%<(mymbox{from})%<{to}To:%14(friendly{to})%>%>"
"%<(zero)%17(friendly{from})%> "
"%{subject}%<{body}<<%{body}%>")
- "*Scan format string for MH.
+ "Scan format string for MH.
This string is passed to the scan program via the -format
argument. This format is identical to the default except that
additional hints for fontification have been added to the fifth
@@ -68,9 +68,11 @@ The values of the fifth column, in priority order, are: \"-\" if
the message has been replied to, t if an address on the To: line
matches one of the mailboxes of the current user, \"c\" if the Cc:
line matches, \"b\" if the Bcc: line matches, and \"n\" if a
-non-empty Newsgroups: header is present.")
+non-empty Newsgroups: header is present."
+ :group 'mh-scan-line-formats
+ :type 'string)
-(defvar mh-scan-format-nmh
+(defcustom mh-scan-format-nmh
(concat
"%4(msg)"
"%<(cur)+%| %>"
@@ -84,7 +86,7 @@ non-empty Newsgroups: header is present.")
"%<(mymbox{from})%<{to}To:%14(decode(friendly{to}))%>%>"
"%<(zero)%17(decode(friendly{from}))%> "
"%(decode{subject})%<{body}<<%{body}%>")
- "*Scan format string for nmh.
+ "Scan format string for nmh.
This string is passed to the scan program via the -format arg.
This format is identical to the default except that additional
hints for fontification have been added to the fifth
@@ -94,7 +96,9 @@ The values of the fifth column, in priority order, are: \"-\" if
the message has been replied to, t if an address on the To: field
matches one of the mailboxes of the current user, \"c\" if the Cc:
field matches, \"b\" if the Bcc: field matches, and \"n\" if a
-non-empty Newsgroups: field is present.")
+non-empty Newsgroups: field is present."
+ :group 'mh-scan-line-formats
+ :type 'string)
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 1ee05d32de..9190c1fb20 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1970,7 +1970,7 @@ if there was no valid completion, else t."
"Default function to use for `completion-in-region-function'.
Its arguments and return value are as specified for `completion-in-region'.
This respects the wrapper hook `completion-in-region-functions'."
- (with-wrapper-hook
+ (subr--with-wrapper-hook-no-warnings
;; FIXME: Maybe we should use this hook to provide a "display
;; completions" operation as well.
completion-in-region-functions (start end collection predicate)
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 27f2acbc76..2a9a62feae 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -34,6 +34,11 @@
;; Indent track-mouse like progn.
(put 'track-mouse 'lisp-indent-function 0)
+(defgroup mouse nil
+ "Input from the mouse." ;; "Mouse support."
+ :group 'environment
+ :group 'editing)
+
(defcustom mouse-yank-at-point nil
"If non-nil, mouse yank commands yank at point instead of at click."
:type 'boolean
@@ -97,35 +102,44 @@ Expects to be bound to `down-mouse-1' in `key-translation-map'."
(when (and mouse-1-click-follows-link
(eq (if (eq mouse-1-click-follows-link 'double)
'double-down-mouse-1 'down-mouse-1)
- (car-safe last-input-event))
- (mouse-on-link-p (event-start last-input-event))
- (or mouse-1-click-in-non-selected-windows
- (eq (selected-window)
- (posn-window (event-start last-input-event)))))
- (let ((timedout
- (sit-for (if (numberp mouse-1-click-follows-link)
- (/ (abs mouse-1-click-follows-link) 1000.0)
- 0))))
- (if (if (and (numberp mouse-1-click-follows-link)
- (>= mouse-1-click-follows-link 0))
- timedout (not timedout))
- nil
-
- (let ((event (read-key))) ;Use read-key so it works for xterm-mouse-mode!
- (if (eq (car-safe event) (if (eq mouse-1-click-follows-link 'double)
- 'double-mouse-1 'mouse-1))
- ;; Turn the mouse-1 into a mouse-2 to follow links.
- (let ((newup (if (eq mouse-1-click-follows-link 'double)
- 'double-mouse-2 'mouse-2)))
- ;; If mouse-2 has never been done by the user, it doesn't have
- ;; the necessary property to be interpreted correctly.
- (unless (get newup 'event-kind)
- (put newup 'event-kind (get (car event) 'event-kind)))
- (push (cons newup (cdr event)) unread-command-events)
- ;; Don't change the down event, only the up-event (bug#18212).
- nil)
- (push event unread-command-events)
- nil))))))
+ (car-safe last-input-event)))
+ (let ((action (mouse-on-link-p (event-start last-input-event))))
+ (when (and action
+ (or mouse-1-click-in-non-selected-windows
+ (eq (selected-window)
+ (posn-window (event-start last-input-event)))))
+ (let ((timedout
+ (sit-for (if (numberp mouse-1-click-follows-link)
+ (/ (abs mouse-1-click-follows-link) 1000.0)
+ 0))))
+ (if (if (and (numberp mouse-1-click-follows-link)
+ (>= mouse-1-click-follows-link 0))
+ timedout (not timedout))
+ nil
+ ;; Use read-key so it works for xterm-mouse-mode!
+ (let ((event (read-key)))
+ (if (eq (car-safe event)
+ (if (eq mouse-1-click-follows-link 'double)
+ 'double-mouse-1 'mouse-1))
+ (progn
+ ;; Turn the mouse-1 into a mouse-2 to follow links,
+ ;; but only if ‘mouse-on-link-p’ hasn’t returned a
+ ;; string or vector (see its docstring).
+ (if (or (stringp action) (vectorp action))
+ (push (aref action 0) unread-command-events)
+ (let ((newup (if (eq mouse-1-click-follows-link 'double)
+ 'double-mouse-2 'mouse-2)))
+ ;; If mouse-2 has never been done by the user, it
+ ;; doesn't have the necessary property to be
+ ;; interpreted correctly.
+ (unless (get newup 'event-kind)
+ (put newup 'event-kind (get (car event) 'event-kind)))
+ (push (cons newup (cdr event)) unread-command-events)))
+ ;; Don't change the down event, only the up-event
+ ;; (bug#18212).
+ nil)
+ (push event unread-command-events)
+ nil))))))))
(define-key key-translation-map [down-mouse-1]
#'mouse--down-1-maybe-follows-link)
@@ -155,7 +169,7 @@ items `Turn Off' and `Help'."
(if (fboundp mm-fun) ; bug#20201
`(keymap
,indicator
- (turn-off menu-item "Turn Off minor mode" ,mm-fun)
+ (turn-off menu-item "Turn off minor mode" ,mm-fun)
(help menu-item "Help for minor mode"
(lambda () (interactive)
(describe-function ',mm-fun)))))))
@@ -411,10 +425,8 @@ must be one of the symbols `header', `mode', or `vertical'."
(let ((divider-width (frame-right-divider-width frame)))
(when (and (or (not (numberp divider-width))
(zerop divider-width))
- (eq (cdr (assq 'vertical-scroll-bars
- (frame-parameters frame)))
- 'left))
- (setq window (window-in-direction 'left window t))))))
+ (eq (frame-parameter frame 'vertical-scroll-bars) 'left))
+ (setq window (window-in-direction 'left window t))))))
(let* ((exitfun nil)
(move
@@ -531,15 +543,29 @@ must be one of the symbols `header', `mode', or `vertical'."
(interactive "e")
(mouse-drag-line start-event 'vertical))
+(defcustom mouse-select-region-move-to-beginning nil
+ "Effect of selecting a region extending backward from double click.
+Nil means keep point at the position clicked (region end);
+non-nil means move point to beginning of region."
+ :type '(choice (const :tag "Don't move point" nil)
+ (const :tag "Move point to beginning of region" t))
+ :group 'mouse
+ :version "25.2")
+
(defun mouse-set-point (event &optional promote-to-region)
"Move point to the position clicked on with the mouse.
This should be bound to a mouse click event type.
-If PROMOTE-TO-REGION is non-nil and event is a multiple-click,
-select the corresponding element around point."
+If PROMOTE-TO-REGION is non-nil and event is a multiple-click, select
+the corresponding element around point, with the resulting position of
+point determined by `mouse-select-region-move-to-beginning'."
(interactive "e\np")
(mouse-minibuffer-check event)
(if (and promote-to-region (> (event-click-count event) 1))
- (mouse-set-region event)
+ (progn
+ (mouse-set-region event)
+ (when mouse-select-region-move-to-beginning
+ (when (> (posn-point (event-start event)) (region-beginning))
+ (exchange-point-and-mark))))
;; Use event-end in case called from mouse-drag-region.
;; If EVENT is a click, event-end and event-start give same value.
(posn-set-point (event-end event))))
@@ -807,14 +833,16 @@ The region will be defined with mark and point."
(setq mouse-selection-click-count-buffer (current-buffer))
(deactivate-mark)
(let* ((scroll-margin 0) ; Avoid margin scrolling (Bug#9541).
+ (start-posn (event-start start-event))
+ (start-point (posn-point start-posn))
+ (start-window (posn-window start-posn))
+ (_ (with-current-buffer (window-buffer start-window)
+ (setq deactivate-mark nil)))
;; We've recorded what we needed from the current buffer and
;; window, now let's jump to the place of the event, where things
;; are happening.
(_ (mouse-set-point start-event))
(echo-keystrokes 0)
- (start-posn (event-start start-event))
- (start-point (posn-point start-posn))
- (start-window (posn-window start-posn))
(bounds (window-edges start-window))
(make-cursor-line-fully-visible nil)
(top (nth 1 bounds))
@@ -1619,8 +1647,8 @@ and selects that window."
(let ((others-list
(mouse-buffer-menu-alist
;; we don't need split-by-major-mode any more,
- ;; so we can ditch it with nconc.
- (apply 'nconc (mapcar 'cddr split-by-major-mode)))))
+ ;; so we can ditch it with nconc (mapcan).
+ (mapcan 'cddr split-by-major-mode))))
(and others-list
(setq subdivided-menus
(cons (cons "Others" others-list)
@@ -1697,7 +1725,7 @@ and selects that window."
;; Font selection.
(defun font-menu-add-default ()
- (let* ((default (cdr (assq 'font (frame-parameters (selected-frame)))))
+ (let* ((default (frame-parameter nil 'font))
(font-alist x-fixed-font-alist)
(elt (or (assoc "Misc" font-alist) (nth 1 font-alist))))
(if (assoc "Default" elt)
diff --git a/lisp/mpc.el b/lisp/mpc.el
index 20e4bc85d8..aa7fee6adb 100644
--- a/lisp/mpc.el
+++ b/lisp/mpc.el
@@ -265,10 +265,7 @@ defaults to 6600 and HOST defaults to localhost."
(let ((v (match-string 3 host)))
(setq host (match-string 2 host))
(when (and (stringp v) (not (string= "" v)))
- (setq port
- (if (string-match "[^[:digit:]]" v)
- (string-to-number v)
- v)))))
+ (setq port v))))
(when (file-name-absolute-p host)
;; Expand file name because `file-name-absolute-p'
;; considers paths beginning with "~" as absolute
diff --git a/lisp/net/eudc.el b/lisp/net/eudc.el
index 867bea98e7..22e48dbd3d 100644
--- a/lisp/net/eudc.el
+++ b/lisp/net/eudc.el
@@ -1146,7 +1146,7 @@ queries the server for the existing fields and displays a corresponding form."
(defun eudc-menu ()
(let (command)
- (append '("Directory Search")
+ (append '("Directory Servers")
(list
(append
'("Server")
@@ -1186,8 +1186,8 @@ queries the server for the existing fields and displays a corresponding form."
(define-key
global-map
[menu-bar tools directory-search]
- (cons "Directory Search"
- (easy-menu-create-menu "Directory Search" (cdr (eudc-menu))))))
+ (cons "Directory Servers"
+ (easy-menu-create-menu "Directory Servers" (cdr (eudc-menu))))))
((fboundp 'easy-menu-add-item)
(let ((menu (eudc-menu)))
(easy-menu-add-item nil '("tools") (easy-menu-create-menu (car menu)
@@ -1197,8 +1197,9 @@ queries the server for the existing fields and displays a corresponding form."
(define-key
global-map
[menu-bar tools eudc]
- (cons "Directory Search"
- (easy-menu-create-keymaps "Directory Search" (cdr (eudc-menu))))))
+ (cons "Directory Servers"
+ (easy-menu-create-keymaps "Directory Servers"
+ (cdr (eudc-menu))))))
(t
(error "Unknown version of easymenu"))))
))
@@ -1231,7 +1232,7 @@ This does nothing except loading eudc by autoload side-effect."
(cond
((not (featurep 'xemacs))
(defvar eudc-tools-menu
- (let ((map (make-sparse-keymap "Directory Search")))
+ (let ((map (make-sparse-keymap "Directory Servers")))
(define-key map [phone]
`(menu-item ,(purecopy "Get Phone") eudc-get-phone
:help ,(purecopy "Get the phone field of name from the directory server")))
@@ -1255,7 +1256,7 @@ This does nothing except loading eudc by autoload side-effect."
map))
(fset 'eudc-tools-menu (symbol-value 'eudc-tools-menu)))
(t
- (let ((menu '("Directory Search"
+ (let ((menu '("Directory Servers"
["Load Hotlist of Servers" eudc-load-eudc t]
["New Server" eudc-set-server t]
["---" nil nil]
@@ -1279,8 +1280,8 @@ This does nothing except loading eudc by autoload side-effect."
(define-key
global-map
[menu-bar tools eudc]
- (cons "Directory Search"
- (easy-menu-create-keymaps "Directory Search"
+ (cons "Directory Servers"
+ (easy-menu-create-keymaps "Directory Servers"
(cdr menu)))))))))))
;;}}}
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 620a8a5f9a..6a8400320c 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -31,6 +31,7 @@
(require 'url-queue)
(require 'url-util) ; for url-get-url-at-point
(require 'mm-url)
+(require 'puny)
(eval-when-compile (require 'subr-x)) ;; for string-trim
(defgroup eww nil
@@ -222,7 +223,7 @@ See also `eww-form-checkbox-selected-symbol'."
"When this regex is found in the URL, it's not a keyword but an address.")
(defvar eww-link-keymap
- (let ((map (copy-keymap shr-map)))
+ (let ((map (copy-keymap shr-image-map)))
(define-key map "\r" 'eww-follow-link)
map))
@@ -279,6 +280,13 @@ word(s) will be searched for via `eww-search-prefix'."
(current-buffer)
(get-buffer-create "*eww*")))
(eww-setup-buffer)
+ ;; Check whether the domain only uses "Highly Restricted" Unicode
+ ;; IDNA characters. If not, transform to punycode to indicate that
+ ;; there may be funny business going on.
+ (let ((parsed (url-generic-parse-url url)))
+ (unless (puny-highly-restrictive-domain-p (url-host parsed))
+ (setf (url-host parsed) (puny-encode-domain (url-host parsed)))
+ (setq url (url-recreate-url parsed))))
(plist-put eww-data :url url)
(plist-put eww-data :title "")
(eww-update-header-line-format)
@@ -410,7 +418,7 @@ Currently this means either text/html or application/xhtml+xml."
(source (and (null document)
(buffer-substring (point) (point-max)))))
(with-current-buffer buffer
- (setq bidi-paragraph-direction 'left-to-right)
+ (setq bidi-paragraph-direction nil)
(plist-put eww-data :source source)
(plist-put eww-data :dom document)
(let ((inhibit-read-only t)
@@ -418,9 +426,11 @@ Currently this means either text/html or application/xhtml+xml."
(shr-target-id (url-target (url-generic-parse-url url)))
(shr-external-rendering-functions
(append
+ shr-external-rendering-functions
'((title . eww-tag-title)
(form . eww-tag-form)
(input . eww-tag-input)
+ (button . eww-form-submit)
(textarea . eww-tag-textarea)
(select . eww-tag-select)
(link . eww-tag-link)
@@ -570,7 +580,7 @@ Currently this means either text/html or application/xhtml+xml."
(let ((inhibit-read-only t))
(remove-overlays)
(erase-buffer))
- (setq bidi-paragraph-direction 'left-to-right)
+ (setq bidi-paragraph-direction nil)
(unless (eq major-mode 'eww-mode)
(eww-mode)))
@@ -659,11 +669,13 @@ the like."
(setq score (- (length (split-string (dom-text node))))))
(t
(dolist (elem (dom-children node))
- (if (stringp elem)
- (setq score (+ score (length (split-string elem))))
+ (cond
+ ((stringp elem)
+ (setq score (+ score (length (split-string elem)))))
+ ((consp elem)
(setq score (+ score
(or (cdr (assoc :eww-readability-score (cdr elem)))
- (eww-score-readability elem))))))))
+ (eww-score-readability elem)))))))))
;; Cache the score of the node to avoid recomputing all the time.
(dom-set-attribute node :eww-readability-score score)
score))
@@ -703,9 +715,11 @@ the like."
(define-key map "R" 'eww-readable)
(define-key map "H" 'eww-list-histories)
(define-key map "E" 'eww-set-character-encoding)
+ (define-key map "s" 'eww-switch-to-buffer)
(define-key map "S" 'eww-list-buffers)
(define-key map "F" 'eww-toggle-fonts)
(define-key map "D" 'eww-toggle-paragraph-direction)
+ (define-key map [(meta C)] 'eww-toggle-colors)
(define-key map "b" 'eww-add-bookmark)
(define-key map "B" 'eww-list-bookmarks)
@@ -726,10 +740,13 @@ the like."
["View page source" eww-view-source]
["Copy page URL" eww-copy-page-url t]
["List histories" eww-list-histories t]
+ ["Switch to buffer" eww-switch-to-buffer t]
["List buffers" eww-list-buffers t]
["Add bookmark" eww-add-bookmark t]
["List bookmarks" eww-list-bookmarks t]
["List cookies" url-cookie-list t]
+ ["Toggle fonts" eww-toggle-fonts t]
+ ["Toggle colors" eww-toggle-colors t]
["Character Encoding" eww-set-character-encoding]
["Toggle Paragraph Direction" eww-toggle-paragraph-direction]))
map))
@@ -1516,6 +1533,24 @@ If CHARSET is nil then use UTF-8."
(eww-reload nil 'utf-8)
(eww-reload nil charset)))
+(defun eww-switch-to-buffer ()
+ "Prompt for an EWW buffer to display in the selected window."
+ (interactive)
+ (let ((completion-extra-properties
+ '(:annotation-function (lambda (buf)
+ (with-current-buffer buf
+ (format " %s" (eww-current-url)))))))
+ (pop-to-buffer-same-window
+ (read-buffer "Switch to EWW buffer: "
+ (cl-loop for buf in (nreverse (buffer-list))
+ if (with-current-buffer buf (derived-mode-p 'eww-mode))
+ return buf)
+ t
+ (lambda (bufn)
+ (with-current-buffer
+ (if (consp bufn) (cdr bufn) (get-buffer bufn))
+ (derived-mode-p 'eww-mode)))))))
+
(defun eww-toggle-fonts ()
"Toggle whether to use monospaced or font-enabled layouts."
(interactive)
@@ -1524,6 +1559,15 @@ If CHARSET is nil then use UTF-8."
(message "Proportional fonts are now %s"
(if shr-use-fonts "on" "off")))
+(defun eww-toggle-colors ()
+ "Toggle whether to use HTML-specified colors or not."
+ (interactive)
+ (message "Colors are now %s"
+ (if (setq shr-use-colors (not shr-use-colors))
+ "on"
+ "off"))
+ (eww-reload))
+
;;; Bookmarks code
(defvar eww-bookmarks nil)
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el
index ce44c03223..9ed1c8b830 100644
--- a/lisp/net/gnutls.el
+++ b/lisp/net/gnutls.el
@@ -26,7 +26,7 @@
;; This package provides language bindings for the GnuTLS library
;; using the corresponding core functions in gnutls.c. It should NOT
-;; be used directly, only through open-protocol-stream.
+;; be used directly, only through open-network-stream.
;; Simple test:
;;
@@ -95,7 +95,7 @@ A value of nil says to use the default GnuTLS value."
(integer :tag "Number of bits" 512))
:group 'gnutls)
-(defun open-gnutls-stream (name buffer host service)
+(defun open-gnutls-stream (name buffer host service &optional nowait)
"Open a SSL/TLS connection for a service to a host.
Returns a subprocess-object to represent the connection.
Input and output work as for subprocesses; `delete-process' closes it.
@@ -109,6 +109,9 @@ BUFFER is the buffer (or `buffer-name') to associate with the process.
Third arg is name of the host to connect to, or its IP address.
Fourth arg SERVICE is name of the service desired, or an integer
specifying a port number to connect to.
+Fifth arg NOWAIT (which is optional) means that the socket should
+be opened asynchronously. The connection process will be
+returned to the caller before TLS negotiation has happened.
Usage example:
@@ -122,9 +125,20 @@ This is a very simple wrapper around `gnutls-negotiate'. See its
documentation for the specific parameters you can use to open a
GnuTLS connection, including specifying the credential type,
trust and key files, and priority string."
- (gnutls-negotiate :process (open-network-stream name buffer host service)
- :type 'gnutls-x509pki
- :hostname host))
+ (let ((process (open-network-stream
+ name buffer host service
+ :nowait nowait
+ :tls-parameters
+ (and nowait
+ (cons 'gnutls-x509pki
+ (gnutls-boot-parameters
+ :type 'gnutls-x509pki
+ :hostname host))))))
+ (if nowait
+ process
+ (gnutls-negotiate :process process
+ :type 'gnutls-x509pki
+ :hostname host))))
(define-error 'gnutls-error "GnuTLS error")
@@ -140,10 +154,47 @@ trust and key files, and priority string."
&allow-other-keys)
"Negotiate a SSL/TLS connection. Returns proc. Signals gnutls-error.
-Note arguments are passed CL style, :type TYPE instead of just TYPE.
+Note that arguments are passed CL style, :type TYPE instead of just TYPE.
-TYPE is `gnutls-x509pki' (default) or `gnutls-anon'. Use nil for the default.
PROCESS is a process returned by `open-network-stream'.
+For the meaning of the rest of the parameters, see `gnutls-boot-parameters'."
+ (let* ((type (or type 'gnutls-x509pki))
+ ;; The gnutls library doesn't understand files delivered via
+ ;; the special handlers, so ignore all files found via those.
+ (file-name-handler-alist nil)
+ (params (gnutls-boot-parameters
+ :type type
+ :hostname hostname
+ :priority-string priority-string
+ :trustfiles trustfiles
+ :crlfiles crlfiles
+ :keylist keylist
+ :min-prime-bits min-prime-bits
+ :verify-flags verify-flags
+ :verify-error verify-error
+ :verify-hostname-error verify-hostname-error))
+ ret)
+ (gnutls-message-maybe
+ (setq ret (gnutls-boot process type
+ (append (list :complete-negotiation t)
+ params)))
+ "boot: %s" params)
+
+ (when (gnutls-errorp ret)
+ ;; This is a error from the underlying C code.
+ (signal 'gnutls-error (list process ret)))
+
+ process))
+
+(cl-defun gnutls-boot-parameters
+ (&rest spec
+ &key type hostname priority-string
+ trustfiles crlfiles keylist min-prime-bits
+ verify-flags verify-error verify-hostname-error
+ &allow-other-keys)
+ "Return a keyword list of parameters suitable for passing to `gnutls-boot'.
+
+TYPE is `gnutls-x509pki' (default) or `gnutls-anon'. Use nil for the default.
HOSTNAME is the remote hostname. It must be a valid string.
PRIORITY-STRING is as per the GnuTLS docs, default is \"NORMAL\".
TRUSTFILES is a list of CA bundles. It defaults to `gnutls-trustfiles'.
@@ -189,62 +240,47 @@ here's a recent version of the list.
It must be omitted, a number, or nil; if omitted or nil it
defaults to GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT."
- (let* ((type (or type 'gnutls-x509pki))
- ;; The gnutls library doesn't understand files delivered via
- ;; the special handlers, so ignore all files found via those.
- (file-name-handler-alist nil)
- (trustfiles (or trustfiles (gnutls-trustfiles)))
- (priority-string (or priority-string
- (cond
- ((eq type 'gnutls-anon)
- "NORMAL:+ANON-DH:!ARCFOUR-128")
- ((eq type 'gnutls-x509pki)
- (if gnutls-algorithm-priority
- (upcase gnutls-algorithm-priority)
- "NORMAL")))))
- (verify-error (or verify-error
- ;; this uses the value of `gnutls-verify-error'
- (cond
- ;; if t, pass it on
- ((eq gnutls-verify-error t)
- t)
- ;; if a list, look for hostname matches
- ((listp gnutls-verify-error)
- (apply 'append
- (mapcar
- (lambda (check)
- (when (string-match (nth 0 check)
- hostname)
- (nth 1 check)))
- gnutls-verify-error)))
- ;; else it's nil
- (t nil))))
- (min-prime-bits (or min-prime-bits gnutls-min-prime-bits))
- params ret)
+ (let ((trustfiles (or trustfiles (gnutls-trustfiles)))
+ (priority-string (or priority-string
+ (cond
+ ((eq type 'gnutls-anon)
+ "NORMAL:+ANON-DH:!ARCFOUR-128")
+ ((eq type 'gnutls-x509pki)
+ (if gnutls-algorithm-priority
+ (upcase gnutls-algorithm-priority)
+ "NORMAL")))))
+ (verify-error (or verify-error
+ ;; this uses the value of `gnutls-verify-error'
+ (cond
+ ;; if t, pass it on
+ ((eq gnutls-verify-error t)
+ t)
+ ;; if a list, look for hostname matches
+ ((listp gnutls-verify-error)
+ (apply 'append
+ (mapcar
+ (lambda (check)
+ (when (string-match (nth 0 check)
+ hostname)
+ (nth 1 check)))
+ gnutls-verify-error)))
+ ;; else it's nil
+ (t nil))))
+ (min-prime-bits (or min-prime-bits gnutls-min-prime-bits)))
(when verify-hostname-error
(push :hostname verify-error))
- (setq params `(:priority ,priority-string
- :hostname ,hostname
- :loglevel ,gnutls-log-level
- :min-prime-bits ,min-prime-bits
- :trustfiles ,trustfiles
- :crlfiles ,crlfiles
- :keylist ,keylist
- :verify-flags ,verify-flags
- :verify-error ,verify-error
- :callbacks nil))
-
- (gnutls-message-maybe
- (setq ret (gnutls-boot process type params))
- "boot: %s" params)
-
- (when (gnutls-errorp ret)
- ;; This is a error from the underlying C code.
- (signal 'gnutls-error (list process ret)))
-
- process))
+ `(:priority ,priority-string
+ :hostname ,hostname
+ :loglevel ,gnutls-log-level
+ :min-prime-bits ,min-prime-bits
+ :trustfiles ,trustfiles
+ :crlfiles ,crlfiles
+ :keylist ,keylist
+ :verify-flags ,verify-flags
+ :verify-error ,verify-error
+ :callbacks nil)))
(defun gnutls-trustfiles ()
"Return a list of usable trustfiles."
diff --git a/lisp/gnus/html2text.el b/lisp/net/html2text.el
index 2b1c2057bb..2b1c2057bb 100644
--- a/lisp/gnus/html2text.el
+++ b/lisp/net/html2text.el
diff --git a/lisp/gnus/mailcap.el b/lisp/net/mailcap.el
index bf7ba0817e..f80b300084 100644
--- a/lisp/gnus/mailcap.el
+++ b/lisp/net/mailcap.el
@@ -32,26 +32,6 @@
(eval-when-compile (require 'cl))
(autoload 'mail-header-parse-content-type "mail-parse")
-;; `mm-delete-duplicates' is an alias for `delete-dups' in Emacs 22.
-(defalias 'mailcap-delete-duplicates
- (if (fboundp 'delete-dups)
- 'delete-dups
- (autoload 'mm-delete-duplicates "mm-util")
- 'mm-delete-duplicates))
-
-;; `mailcap-replace-in-string' is an alias like `gnus-replace-in-string'.
-(eval-and-compile
- (cond
- ((fboundp 'replace-regexp-in-string)
- (defun mailcap-replace-in-string (string regexp newtext &optional literal)
- "Replace all matches for REGEXP with NEWTEXT in STRING.
-If LITERAL is non-nil, insert NEWTEXT literally. Return a new
-string containing the replacements.
-This is a compatibility function for different Emacsen."
- (replace-regexp-in-string regexp newtext string nil literal)))
- ((fboundp 'replace-in-string)
- (defalias 'mailcap-replace-in-string 'replace-in-string))))
-
(defgroup mailcap nil
"Definition of viewers for MIME types."
:version "21.1"
@@ -66,12 +46,6 @@ This is a compatibility function for different Emacsen."
table)
"A syntax table for parsing SGML attributes.")
-(eval-and-compile
- (when (featurep 'xemacs)
- (condition-case nil
- (require 'lpr)
- (error nil))))
-
(defvar mailcap-print-command
(mapconcat 'identity
(cons (if (boundp 'lpr-command)
@@ -84,6 +58,59 @@ This is a compatibility function for different Emacsen."
" ")
"Shell command (including switches) used to print PostScript files.")
+(defun mailcap--get-user-mime-data (sym)
+ (let ((val (default-value sym))
+ res)
+ (dolist (entry val)
+ (setq res (cons (list (cdr (assq 'viewer entry))
+ (cdr (assq 'type entry))
+ (cdr (assq 'test entry)))
+ res)))
+ (nreverse res)))
+
+(defun mailcap--set-user-mime-data (sym val)
+ (let (res)
+ (dolist (entry val)
+ (setq res (cons `((viewer . ,(car entry))
+ (type . ,(cadr entry))
+ ,@(when (caddr entry)
+ `((test . ,(caddr entry)))))
+ res)))
+ (set-default sym (nreverse res))))
+
+(defcustom mailcap-user-mime-data nil
+ "A list of viewers preferred for different MIME types.
+The elements of the list are alists of the following structure
+
+ ((viewer . VIEWER)
+ (type . MIME-TYPE)
+ (test . TEST))
+
+where VIEWER is either a lisp command, e.g., a major-mode, or a
+string containing a shell command for viewing files of the
+defined MIME-TYPE. In case of a shell command, %s will be
+replaced with the file.
+
+MIME-TYPE is a regular expression being matched against the
+actual MIME type. It is implicitly surrounded with ^ and $.
+
+TEST is an lisp form which is evaluated in order to test if the
+entry should be chosen. The `test' entry is optional.
+
+When selecting a viewer for a given MIME type, the first viewer
+in this list with a matching MIME-TYPE and successful TEST is
+selected. Only if none matches, the standard `mailcap-mime-data'
+is consulted."
+ :type '(repeat
+ (list
+ (choice (function :tag "Function or mode")
+ (string :tag "Shell command"))
+ (regexp :tag "MIME Type")
+ (sexp :tag "Test (optional)")))
+ :get #'mailcap--get-user-mime-data
+ :set #'mailcap--set-user-mime-data
+ :group 'mailcap)
+
;; Postpone using defcustom for this as it's so big and we essentially
;; have to have two copies of the data around then. Perhaps just
;; customize the Lisp viewers and rely on the normal configuration
@@ -310,7 +337,7 @@ to return a true or false shell value for the validity.")
(put 'mailcap-mime-data 'risky-local-variable t)
(defcustom mailcap-download-directory nil
- "*Directory to which `mailcap-save-binary-file' downloads files by default.
+ "Directory to which `mailcap-save-binary-file' downloads files by default.
nil means your home directory."
:type '(choice (const :tag "Home directory" nil)
directory)
@@ -726,6 +753,20 @@ If TEST is not given, it defaults to t."
t)
(t nil))))
+(defun mailcap-select-preferred-viewer (type-info)
+ "Return an applicable viewer entry from `mailcap-user-mime-data'."
+ (let ((info (mapcar (lambda (a) (cons (symbol-name (car a))
+ (cdr a)))
+ (cdr type-info)))
+ viewer)
+ (dolist (entry mailcap-user-mime-data)
+ (when (and (null viewer)
+ (string-match (concat "^" (cdr (assq 'type entry)) "$")
+ (car type-info))
+ (mailcap-viewer-passes-test entry info))
+ (setq viewer entry)))
+ viewer))
+
(defun mailcap-mime-info (string &optional request no-decode)
"Get the MIME viewer command for STRING, return nil if none found.
Expects a complete content-type header line as its argument.
@@ -758,41 +799,47 @@ If NO-DECODE is non-nil, don't decode STRING."
(if no-decode
(list (or string "text/plain"))
(mail-header-parse-content-type (or string "text/plain"))))
- (setq major (split-string (car ctl) "/"))
- (setq minor (cadr major)
- major (car major))
- (when (setq major-info (cdr (assoc major mailcap-mime-data)))
- (when (setq viewers (mailcap-possible-viewers major-info minor))
- (setq info (mapcar (lambda (a) (cons (symbol-name (car a))
- (cdr a)))
- (cdr ctl)))
- (while viewers
- (if (mailcap-viewer-passes-test (car viewers) info)
- (setq passed (cons (car viewers) passed)))
- (setq viewers (cdr viewers)))
- (setq passed (sort passed 'mailcap-viewer-lessp))
- (setq viewer (car passed))))
- (when (and (stringp (cdr (assq 'viewer viewer)))
- passed)
- (setq viewer (car passed)))
+ ;; Check if there's a user-defined viewer from `mailcap-user-mime-data'.
+ (setq viewer (mailcap-select-preferred-viewer ctl))
+ (if viewer
+ (setq passed (list viewer))
+ ;; None found, so heuristically select some applicable viewer
+ ;; from `mailcap-mime-data'.
+ (setq major (split-string (car ctl) "/"))
+ (setq minor (cadr major)
+ major (car major))
+ (when (setq major-info (cdr (assoc major mailcap-mime-data)))
+ (when (setq viewers (mailcap-possible-viewers major-info minor))
+ (setq info (mapcar (lambda (a) (cons (symbol-name (car a))
+ (cdr a)))
+ (cdr ctl)))
+ (while viewers
+ (if (mailcap-viewer-passes-test (car viewers) info)
+ (setq passed (cons (car viewers) passed)))
+ (setq viewers (cdr viewers)))
+ (setq passed (sort passed 'mailcap-viewer-lessp))
+ (setq viewer (car passed))))
+ (when (and (stringp (cdr (assq 'viewer viewer)))
+ passed)
+ (setq viewer (car passed))))
(cond
((and (null viewer) (not (equal major "default")) request)
- (mailcap-mime-info "default" request no-decode))
+ (mailcap-mime-info "default" request no-decode))
((or (null request) (equal request ""))
- (mailcap-unescape-mime-test (cdr (assq 'viewer viewer)) info))
+ (mailcap-unescape-mime-test (cdr (assq 'viewer viewer)) info))
((stringp request)
- (mailcap-unescape-mime-test
- (cdr-safe (assoc request viewer)) info))
+ (mailcap-unescape-mime-test
+ (cdr-safe (assoc request viewer)) info))
((eq request 'all)
- passed)
+ passed)
(t
- ;; MUST make a copy *sigh*, else we modify mailcap-mime-data
- (setq viewer (copy-sequence viewer))
- (let ((view (assq 'viewer viewer))
- (test (assq 'test viewer)))
- (if view (setcdr view (mailcap-unescape-mime-test (cdr view) info)))
- (if test (setcdr test (mailcap-unescape-mime-test (cdr test) info))))
- viewer)))))
+ ;; MUST make a copy *sigh*, else we modify mailcap-mime-data
+ (setq viewer (copy-sequence viewer))
+ (let ((view (assq 'viewer viewer))
+ (test (assq 'test viewer)))
+ (if view (setcdr view (mailcap-unescape-mime-test (cdr view) info)))
+ (if test (setcdr test (mailcap-unescape-mime-test (cdr test) info))))
+ viewer)))))
;;;
;;; Experimental MIME-types parsing
@@ -993,7 +1040,7 @@ If FORCE, re-parse even if already parsed."
(defun mailcap-mime-types ()
"Return a list of MIME media types."
(mailcap-parse-mimetypes)
- (mailcap-delete-duplicates
+ (delete-dups
(nconc
(mapcar 'cdr mailcap-mime-extensions)
(apply
@@ -1021,14 +1068,14 @@ If FORCE, re-parse even if already parsed."
(mailcap-parse-mimetypes)
(let* ((all-mime-type
;; All unique MIME types from file extensions
- (mailcap-delete-duplicates
+ (delete-dups
(mapcar (lambda (file)
(mailcap-extension-to-mime
(file-name-extension file t)))
files)))
(all-mime-info
;; All MIME info lists
- (mailcap-delete-duplicates
+ (delete-dups
(mapcar (lambda (mime-type)
(mailcap-mime-info mime-type 'all))
all-mime-type)))
@@ -1046,17 +1093,20 @@ If FORCE, re-parse even if already parsed."
(car all-mime-info)))
(commands
;; Command strings from `viewer' field of the MIME info
- (mailcap-delete-duplicates
- (delq nil (mapcar (lambda (mime-info)
- (let ((command (cdr (assoc 'viewer mime-info))))
- (if (stringp command)
- (mailcap-replace-in-string
- ;; Replace mailcap's `%s' placeholder
- ;; with dired's `?' placeholder
- (mailcap-replace-in-string
- ;; Remove the final filename placeholder
- command "[ \t\n]*\\('\\)?%s\\1?[ \t\n]*\\'" "" t)
- "%s" "?" t))))
+ (delete-dups
+ (delq nil (mapcar
+ (lambda (mime-info)
+ (let ((command (cdr (assoc 'viewer mime-info))))
+ (if (stringp command)
+ (replace-regexp-in-string
+ ;; Replace mailcap's `%s' placeholder
+ ;; with dired's `?' placeholder
+ "%s" "?"
+ (replace-regexp-in-string
+ ;; Remove the final filename placeholder
+ "[ \t\n]*\\('\\)?%s\\1?[ \t\n]*\\'" ""
+ command nil t)
+ nil t))))
common-mime-info)))))
commands))
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index 8029e2ca70..1547f5247a 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -79,7 +79,7 @@
;; On GNU/Linux and Irix, the system's ping program seems to send packets
;; indefinitely unless told otherwise
(defcustom ping-program-options
- (and (memq system-type '(gnu/linux irix))
+ (and (eq system-type 'gnu/linux)
(list "-c" "4"))
"Options for the ping program.
These options can be used to limit how many ICMP packets are emitted."
@@ -112,22 +112,31 @@ These options can be used to limit how many ICMP packets are emitted."
:group 'net-utils
:type '(repeat string))
-(defcustom iwconfig-program "iwconfig"
+(defcustom iwconfig-program
+ (cond ((executable-find "iwconfig") "iwconfig")
+ ((net-utils--executable-find-sbin "iw") "iw")
+ (t "iw"))
"Program to print wireless network configuration information."
:group 'net-utils
:type 'string
- :version "23.1")
+ :version "25.2")
-(defcustom iwconfig-program-options nil
+(defcustom iwconfig-program-options
+ (cond ((string-match-p "iw\\'" iwconfig-program) (list "dev"))
+ (t nil))
"Options for the iwconfig program."
:group 'net-utils
:type '(repeat string)
- :version "23.1")
+ :version "25.2")
-(defcustom netstat-program "netstat"
+(defcustom netstat-program
+ (cond ((executable-find "netstat") "netstat")
+ ((net-utils--executable-find-sbin "ss"))
+ (t "ss"))
"Program to print network statistics."
:group 'net-utils
- :type 'string)
+ :type 'string
+ :version "25.2")
(defcustom netstat-program-options
(list "-a")
@@ -147,20 +156,25 @@ These options can be used to limit how many ICMP packets are emitted."
:type '(repeat string))
(defcustom route-program
- (if (eq system-type 'windows-nt)
- "route"
- "netstat")
+ (cond ((eq system-type 'windows-nt) "route")
+ ((executable-find "netstat") "netstat")
+ ((net-utils--executable-find-sbin "netstat"))
+ ((executable-find "ip") "ip")
+ ((net-utils--executable-find-sbin "ip"))
+ (t "ip"))
"Program to print routing tables."
:group 'net-utils
- :type 'string)
+ :type 'string
+ :version "25.2")
(defcustom route-program-options
- (if (eq system-type 'windows-nt)
- (list "print")
- (list "-r"))
+ (cond ((eq system-type 'windows-nt) (list "print"))
+ ((string-match-p "netstat\\'" route-program) (list "-r"))
+ (t (list "route")))
"Options for the route program."
:group 'net-utils
- :type '(repeat string))
+ :type '(repeat string)
+ :version "25.2")
(defcustom nslookup-program "nslookup"
"Program to interactively query DNS information."
diff --git a/lisp/net/network-stream.el b/lisp/net/network-stream.el
index 11885987ba..c2845d96a5 100644
--- a/lisp/net/network-stream.el
+++ b/lisp/net/network-stream.el
@@ -46,6 +46,7 @@
(require 'starttls)
(require 'auth-source)
(require 'nsm)
+(require 'puny)
(autoload 'gnutls-negotiate "gnutls")
(autoload 'open-gnutls-stream "gnutls")
@@ -64,8 +65,8 @@ BUFFER is a buffer or buffer name to associate with the process.
Process output goes at end of that buffer. BUFFER may be nil,
meaning that the process is not associated with any buffer.
HOST is the name or IP address of the host to connect to.
-SERVICE is the name of the service desired, or an integer specifying
- a port number to connect to.
+SERVICE is the name of the service desired, or an integer or
+ integer string specifying a port number to connect to.
The remaining PARAMETERS should be a sequence of keywords and
values:
@@ -135,8 +136,14 @@ non-nil, is used warn the user if the connection isn't encrypted.
:nogreeting is a boolean that can be used to inhibit waiting for
a greeting from the server.
-:nowait is a boolean that says the connection should be made
-asynchronously, if possible."
+:nowait, if non-nil, says the connection should be made
+asynchronously, if possible.
+
+:tls-parameters is a list that should be supplied if you're
+opening a TLS connection. The first element is the TLS
+type (either `gnutls-x509pki' or `gnutls-anon'), and the
+remaining elements should be a keyword list accepted by
+gnutls-boot (as returned by `gnutls-boot-parameters')."
(unless (featurep 'make-network-process)
(error "Emacs was compiled without networking support"))
(let ((type (plist-get parameters :type))
@@ -148,8 +155,10 @@ asynchronously, if possible."
(plist-get parameters :capability-command))))))
;; The simplest case: wrapper around `make-network-process'.
(make-network-process :name name :buffer buffer
- :host host :service service
- :nowait (plist-get parameters :nowait))
+ :host (puny-encode-domain host) :service service
+ :nowait (plist-get parameters :nowait)
+ :tls-parameters
+ (plist-get parameters :tls-parameters))
(let ((work-buffer (or buffer
(generate-new-buffer " *stream buffer*")))
(fun (cond ((and (eq type 'plain)
@@ -194,11 +203,14 @@ asynchronously, if possible."
;;;###autoload
(defalias 'open-protocol-stream 'open-network-stream)
+(define-obsolete-function-alias 'open-protocol-stream 'open-network-stream
+ "25.2")
(defun network-stream-open-plain (name buffer host service parameters)
(let ((start (with-current-buffer buffer (point)))
(stream (make-network-process :name name :buffer buffer
- :host host :service service
+ :host (puny-encode-domain host)
+ :service service
:nowait (plist-get parameters :nowait))))
(when (plist-get parameters :warn-unless-encrypted)
(setq stream (nsm-verify-connection stream host service nil t)))
@@ -219,7 +231,8 @@ asynchronously, if possible."
eoc))
;; Return (STREAM GREETING CAPABILITIES RESULTING-TYPE)
(stream (make-network-process :name name :buffer buffer
- :host host :service service))
+ :host (puny-encode-domain host)
+ :service service))
(greeting (and (not (plist-get parameters :nogreeting))
(network-stream-get-response stream start eoc)))
(capabilities (network-stream-command stream capability-command
@@ -296,8 +309,12 @@ asynchronously, if possible."
(unless require-tls
(setq stream
(make-network-process :name name :buffer buffer
- :host host :service service))
+ :host (puny-encode-domain host)
+ :service service))
(network-stream-get-response stream start eoc)))
+ (unless (process-live-p stream)
+ (error "Unable to negotiate a TLS connection with %s/%s"
+ host service))
;; Re-get the capabilities, which may have now changed.
(setq capabilities
(network-stream-command stream capability-command eo-capa))))
@@ -355,32 +372,34 @@ asynchronously, if possible."
(with-current-buffer buffer
(let* ((start (point-max))
(stream
- (funcall (if (gnutls-available-p)
- 'open-gnutls-stream
- 'open-tls-stream)
- name buffer host service))
+ (if (gnutls-available-p)
+ (open-gnutls-stream name buffer host service
+ (plist-get parameters :nowait))
+ (open-tls-stream name buffer host service)))
(eoc (plist-get parameters :end-of-command)))
- ;; Check certificate validity etc.
- (when (and (gnutls-available-p) stream)
- (setq stream (nsm-verify-connection stream host service)))
- (if (null stream)
- (list nil nil nil 'plain)
- ;; If we're using tls.el, we have to delete the output from
- ;; openssl/gnutls-cli.
- (when (and (not (gnutls-available-p))
- eoc)
- (network-stream-get-response stream start eoc)
- (goto-char (point-min))
- (when (re-search-forward eoc nil t)
- (goto-char (match-beginning 0))
- (delete-region (point-min) (line-beginning-position))))
- (let ((capability-command (plist-get parameters :capability-command))
- (eo-capa (or (plist-get parameters :end-of-capability)
- eoc)))
- (list stream
- (network-stream-get-response stream start eoc)
- (network-stream-command stream capability-command eo-capa)
- 'tls))))))
+ (if (plist-get parameters :nowait)
+ (list stream nil nil 'tls)
+ ;; Check certificate validity etc.
+ (when (and (gnutls-available-p) stream)
+ (setq stream (nsm-verify-connection stream host service)))
+ (if (null stream)
+ (list nil nil nil 'plain)
+ ;; If we're using tls.el, we have to delete the output from
+ ;; openssl/gnutls-cli.
+ (when (and (not (gnutls-available-p))
+ eoc)
+ (network-stream-get-response stream start eoc)
+ (goto-char (point-min))
+ (when (re-search-forward eoc nil t)
+ (goto-char (match-beginning 0))
+ (delete-region (point-min) (line-beginning-position))))
+ (let ((capability-command (plist-get parameters :capability-command))
+ (eo-capa (or (plist-get parameters :end-of-capability)
+ eoc)))
+ (list stream
+ (network-stream-get-response stream start eoc)
+ (network-stream-command stream capability-command eo-capa)
+ 'tls)))))))
(defun network-stream-open-shell (name buffer host service parameters)
(require 'format-spec)
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el
index 2596e56aa4..41b2172272 100644
--- a/lisp/net/newst-backend.el
+++ b/lisp/net/newst-backend.el
@@ -442,13 +442,6 @@ buffers *newsticker-wget-<feed>* will not be closed."
;; FIXME It is bad practice to define compat functions with such generic names.
-;; This is not needed in Emacs >= 22.1.
-(unless (fboundp 'time-add)
- (require 'time-date);;FIXME
- (defun time-add (t1 t2)
- (with-no-warnings ; don't warn about obsolete time-to-seconds in 23.2
- (seconds-to-time (+ (time-to-seconds t1) (time-to-seconds t2))))))
-
(unless (fboundp 'match-string-no-properties)
(defalias 'match-string-no-properties 'match-string))
diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el
index d0b5543773..5928ab303b 100644
--- a/lisp/net/nsm.el
+++ b/lisp/net/nsm.el
@@ -25,6 +25,7 @@
;;; Code:
(require 'cl-lib)
+(require 'subr-x)
(defvar nsm-permanent-host-settings nil)
(defvar nsm-temporary-host-settings nil)
@@ -297,19 +298,30 @@ unencrypted."
nil
(let ((response
(condition-case nil
- (nsm-query-user message args (nsm-format-certificate status))
+ (intern
+ (car (split-string
+ (nsm-query-user message args
+ (nsm-format-certificate status))))
+ obarray)
;; Make sure we manage to close the process if the user hits
;; `C-g'.
(quit 'no)
(error 'no))))
(if (eq response 'no)
- nil
+ (progn
+ (message "Aborting connection to %s:%s" host port)
+ nil)
+ (message (if (eq response 'session)
+ "Accepting certificate for %s:%s this session only"
+ "Permanently accepting certificate for %s:%s")
+ host port)
(nsm-save-host host port status what response)
t))))
(defun nsm-query-user (message args cert)
(let ((buffer (get-buffer-create "*Network Security Manager*")))
(save-window-excursion
+ ;; First format the certificate and warnings.
(with-help-window buffer
(with-current-buffer buffer
(erase-buffer)
@@ -321,28 +333,15 @@ unencrypted."
;; Fill the first line of the message, which usually
;; contains lots of explanatory text.
(fill-region (point) (line-end-position)))))
- (let ((responses '((?n . no)
- (?s . session)
- (?a . always)))
- (prefix "")
- (cursor-in-echo-area t)
- response)
- (while (not response)
- (setq response
- (cdr
- (assq (downcase
- (read-char
- (concat prefix
- "Continue connecting? (No, Session only, Always) ")))
- responses)))
- (unless response
- (ding)
- (setq prefix "Invalid choice. ")))
- (kill-buffer buffer)
- ;; If called from a callback, `read-char' will insert things
- ;; into the pending input. Clear that.
- (clear-this-command-keys)
- response))))
+ ;; Then ask the user what to do about it.
+ (unwind-protect
+ (cadr
+ (read-multiple-choice
+ "Continue connecting?"
+ '((?a "always" "Accept this certificate this session and for all future sessions.")
+ (?s "session only" "Accept this certificate this session only.")
+ (?n "no" "Refuse to use this certificate, and close the connection."))))
+ (kill-buffer buffer)))))
(defun nsm-save-host (host port status what permanency)
(let* ((id (nsm-id host port))
diff --git a/lisp/gnus/pop3.el b/lisp/net/pop3.el
index fc593806bf..3964288fd2 100644
--- a/lisp/gnus/pop3.el
+++ b/lisp/net/pop3.el
@@ -34,12 +34,6 @@
(eval-when-compile (require 'cl))
-(eval-and-compile
- ;; In Emacs 24, `open-protocol-stream' is an autoloaded alias for
- ;; `make-network-stream'.
- (unless (fboundp 'open-protocol-stream)
- (require 'proto-stream)))
-
(require 'mail-utils)
(defvar parse-time-months)
@@ -51,36 +45,38 @@
(defcustom pop3-maildrop (or (user-login-name)
(getenv "LOGNAME")
(getenv "USER"))
- "*POP3 maildrop."
+ "POP3 maildrop."
:version "22.1" ;; Oort Gnus
:type 'string
:group 'pop3)
(defcustom pop3-mailhost (or (getenv "MAILHOST") ;; nil -> mismatch
"pop3")
- "*POP3 mailhost."
+ "POP3 mailhost."
:version "22.1" ;; Oort Gnus
:type 'string
:group 'pop3)
(defcustom pop3-port 110
- "*POP3 port."
+ "POP3 port."
:version "22.1" ;; Oort Gnus
:type 'number
:group 'pop3)
(defcustom pop3-password-required t
- "*Non-nil if a password is required when connecting to POP server."
+ "Non-nil if a password is required when connecting to POP server."
:version "22.1" ;; Oort Gnus
:type 'boolean
:group 'pop3)
;; Should this be customizable?
-(defvar pop3-password nil
- "*Password to use when connecting to POP server.")
+(defcustom pop3-password nil
+ "Password to use when connecting to POP server."
+ :type '(choice (const nil) string)
+ :group 'pop3)
(defcustom pop3-authentication-scheme 'pass
- "*POP3 authentication scheme.
+ "POP3 authentication scheme.
Defaults to `pass', for the standard USER/PASS authentication. The other
valid value is `apop'."
:type '(choice (const :tag "Normal user/password" pass)
@@ -406,8 +402,7 @@ Return non-nil if it is necessary to update the local UIDL file."
(push uidl new))
(decf i)))
(pop3-uidl
- (setq new (apply 'nconc (mapcar (lambda (elt) (list elt ctime))
- pop3-uidl)))))
+ (setq new (mapcan (lambda (elt) (list elt ctime)) pop3-uidl))))
(when new (setq mod t))
;; List expirable messages and delete them from the data to be saved.
(setq ctime (when (numberp pop3-leave-mail-on-server)
@@ -521,7 +516,7 @@ Return non-nil if it is necessary to update the local UIDL file."
(insert "X-UIDL: " (nth (1- msgno) pop3-uidl) "\n"))))
(defcustom pop3-stream-type nil
- "*Transport security type for POP3 connections.
+ "Transport security type for POP3 connections.
This may be either nil (plain connection), `ssl' (use an
SSL/TSL-secured stream) or `starttls' (use the starttls mechanism
to turn on TLS security after opening the stream). However, if
@@ -533,13 +528,6 @@ this is nil, `ssl' is assumed for connections to port
(const :tag "SSL/TLS" ssl)
(const starttls)))
-(eval-and-compile
- (if (fboundp 'set-process-query-on-exit-flag)
- (defalias 'pop3-set-process-query-on-exit-flag
- 'set-process-query-on-exit-flag)
- (defalias 'pop3-set-process-query-on-exit-flag
- 'process-kill-without-query)))
-
(defun pop3-open-server (mailhost port)
"Open TCP connection to MAILHOST on PORT.
Returns the process associated with the connection."
@@ -552,7 +540,7 @@ Returns the process associated with the connection."
(erase-buffer)
(setq pop3-read-point (point-min))
(setq result
- (open-protocol-stream
+ (open-network-stream
"POP" (current-buffer) mailhost port
:type (cond
((or (eq pop3-stream-type 'ssl)
@@ -576,7 +564,7 @@ Returns the process associated with the connection."
(setq pop3-timestamp
(substring response (or (string-match "<" response) 0)
(+ 1 (or (string-match ">" response) -1)))))
- (pop3-set-process-query-on-exit-flag (car result) nil)
+ (set-process-query-on-exit-flag (car result) nil)
(erase-buffer)
(car result)))))
@@ -644,9 +632,7 @@ If NOW, use that time instead."
(format " %s "
(capitalize (car (rassoc (nth 4 (decode-time now))
parse-time-months))))
- (format-time-string "%Y %H:%M:%S " now)
- ;; We do all of this because XEmacs doesn't have the %z spec.
- (format "%s%02d%02d" sign (/ zone 3600) (/ (% zone 3600) 60)))))
+ (format-time-string "%Y %H:%M:%S %z" now))))
(defun pop3-munge-message-separator (start end)
"Check to see if a message separator exists. If not, generate one."
diff --git a/lisp/net/puny.el b/lisp/net/puny.el
new file mode 100644
index 0000000000..50bde85287
--- /dev/null
+++ b/lisp/net/puny.el
@@ -0,0 +1,248 @@
+;;; puny.el --- translate non-ASCII domain names to ASCII
+
+;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; Keywords: mail, net
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Written by looking at
+;; http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion
+
+;;; Code:
+
+(require 'seq)
+
+(defun puny-encode-domain (domain)
+ "Encode DOMAIN according to the IDNA/punycode algorithm.
+For instance, \"fśf.org\" => \"xn--ff-2sa.org\"."
+ ;; The vast majority of domain names are not IDNA domain names, so
+ ;; add a check first to avoid doing unnecessary work.
+ (if (string-match "\\'[[:ascii:]]+\\'" domain)
+ domain
+ (mapconcat 'puny-encode-string (split-string domain "[.]") ".")))
+
+(defun puny-encode-string (string)
+ "Encode STRING according to the IDNA/punycode algorithm.
+This is used to encode non-ASCII domain names.
+For instance, \"bücher\" => \"xn--bcher-kva\"."
+ (let ((ascii (seq-filter (lambda (char)
+ (< char 128))
+ string)))
+ (if (= (length ascii) (length string))
+ string
+ (concat "xn--"
+ (if (null ascii)
+ ""
+ (concat ascii "-"))
+ (puny-encode-complex (length ascii) string)))))
+
+(defun puny-decode-domain (domain)
+ "Decode DOMAIN according to the IDNA/punycode algorithm.
+For instance, \"xn--ff-2sa.org\" => \"fśf.org\"."
+ (mapconcat 'puny-decode-string (split-string domain "[.]") "."))
+
+(defun puny-decode-string (string)
+ "Decode an IDNA/punycode-encoded string.
+For instance \"xn--bcher-kva\" => \"bücher\"."
+ (if (string-match "\\`xn--" string)
+ (puny-decode-string-internal (substring string 4))
+ string))
+
+(defconst puny-initial-n 128)
+(defconst puny-initial-bias 72)
+(defconst puny-base 36)
+(defconst puny-damp 700)
+(defconst puny-tmin 1)
+(defconst puny-tmax 26)
+(defconst puny-skew 28)
+
+;; 0-25 a-z
+;; 26-36 0-9
+(defun puny-encode-digit (d)
+ (if (< d 26)
+ (+ ?a d)
+ (+ ?0 (- d 26))))
+
+(defun puny-adapt (delta num-points first-time)
+ (let ((delta (if first-time
+ (/ delta puny-damp)
+ (/ delta 2)))
+ (k 0))
+ (setq delta (+ delta (/ delta num-points)))
+ (while (> delta (/ (* (- puny-base puny-tmin)
+ puny-tmax)
+ 2))
+ (setq delta (/ delta (- puny-base puny-tmin))
+ k (+ k puny-base)))
+ (+ k (/ (* (1+ (- puny-base puny-tmin)) delta)
+ (+ delta puny-skew)))))
+
+(defun puny-encode-complex (insertion-points string)
+ (let ((n puny-initial-n)
+ (delta 0)
+ (bias puny-initial-bias)
+ (h insertion-points)
+ result m ijv q)
+ (while (< h (length string))
+ (setq ijv (cl-loop for char across string
+ when (>= char n)
+ minimize char))
+ (setq m ijv)
+ (setq delta (+ delta (* (- m n) (+ h 1)))
+ n m)
+ (cl-loop for char across string
+ when (< char n)
+ do (cl-incf delta)
+ when (= char ijv)
+ do (progn
+ (setq q delta)
+ (cl-loop with k = puny-base
+ for t1 = (cond
+ ((<= k bias)
+ puny-tmin)
+ ((>= k (+ bias puny-tmax))
+ puny-tmax)
+ (t
+ (- k bias)))
+ while (>= q t1)
+ do (push (puny-encode-digit
+ (+ t1 (mod (- q t1)
+ (- puny-base t1))))
+ result)
+ do (setq q (/ (- q t1) (- puny-base t1))
+ k (+ k puny-base)))
+ (push (puny-encode-digit q) result)
+ (setq bias (puny-adapt delta (+ h 1) (= h insertion-points))
+ delta 0
+ h (1+ h))))
+ (cl-incf delta)
+ (cl-incf n))
+ (nreverse result)))
+
+(defun puny-decode-digit (cp)
+ (cond
+ ((<= cp ?9)
+ (+ (- cp ?0) 26))
+ ((<= cp ?Z)
+ (- cp ?A))
+ ((<= cp ?z)
+ (- cp ?a))
+ (t
+ puny-base)))
+
+(defun puny-decode-string-internal (string)
+ (with-temp-buffer
+ (insert string)
+ (goto-char (point-max))
+ (search-backward "-" nil (point-min))
+ ;; The encoded chars are after the final dash.
+ (let ((encoded (buffer-substring (1+ (point)) (point-max)))
+ (ic 0)
+ (i 0)
+ (bias puny-initial-bias)
+ (n puny-initial-n)
+ out)
+ (delete-region (point) (point-max))
+ (while (< ic (length encoded))
+ (let ((old-i i)
+ (w 1)
+ (k puny-base)
+ digit t1)
+ (cl-loop do (progn
+ (setq digit (puny-decode-digit (aref encoded ic)))
+ (cl-incf ic)
+ (cl-incf i (* digit w))
+ (setq t1 (cond
+ ((<= k bias)
+ puny-tmin)
+ ((>= k (+ bias puny-tmax))
+ puny-tmax)
+ (t
+ (- k bias)))))
+ while (>= digit t1)
+ do (setq w (* w (- puny-base t1))
+ k (+ k puny-base)))
+ (setq out (1+ (buffer-size)))
+ (setq bias (puny-adapt (- i old-i) out (= old-i 0))))
+
+ (setq n (+ n (/ i out))
+ i (mod i out))
+ (goto-char (point-min))
+ (forward-char i)
+ (insert (format "%c" n))
+ (cl-incf i)))
+ (buffer-string)))
+
+;; http://www.unicode.org/reports/tr39/#Restriction_Level_Detection
+;; http://www.unicode.org/reports/tr31/#Table_Candidate_Characters_for_Inclusion_in_Identifiers
+
+(defun puny-highly-restrictive-string-p (string)
+ "Say whether STRING is \"highly restrictive\" in the Unicode IDNA sense.
+See http://www.unicode.org/reports/tr39/#Restriction_Level_Detection
+for details. The main idea is that if you're mixing
+scripts (like latin and cyrillic), you may confuse the user by
+using homographs."
+ (let ((scripts
+ (delq
+ t
+ (seq-uniq
+ (seq-map (lambda (char)
+ (if (memq char
+ ;; These characters are always allowed
+ ;; in any string.
+ '(#x0027 ; APOSTROPHE
+ #x002D ; HYPHEN-MINUS
+ #x002E ; FULL STOP
+ #x003A ; COLON
+ #x00B7 ; MIDDLE DOT
+ #x058A ; ARMENIAN HYPHEN
+ #x05F3 ; HEBREW PUNCTUATION GERESH
+ #x05F4 ; HEBREW PUNCTUATION GERSHAYIM
+ #x0F0B ; TIBETAN MARK INTERSYLLABIC TSHEG
+ #x200C ; ZERO WIDTH NON-JOINER*
+ #x200D ; ZERO WIDTH JOINER*
+ #x2010 ; HYPHEN
+ #x2019 ; RIGHT SINGLE QUOTATION MARK
+ #x2027 ; HYPHENATION POINT
+ #x30A0 ; KATAKANA-HIRAGANA DOUBLE HYPHEN
+ #x30FB)) ; KATAKANA MIDDLE DOT
+ t
+ (aref char-script-table char)))
+ string)))))
+ (or
+ ;; Every character uses the same script.
+ (= (length scripts) 1)
+ (seq-some 'identity
+ (mapcar (lambda (list)
+ (seq-every-p (lambda (script)
+ (memq script list))
+ scripts))
+ '((latin han hiragana kana)
+ (latin han bopomofo)
+ (latin han hangul)))))))
+
+(defun puny-highly-restrictive-domain-p (domain)
+ "Say whether DOMAIN is \"highly restrictive\" in the Unicode IDNA sense.
+See `puny-highly-restrictive-string-p' for further details."
+ (seq-every-p 'puny-highly-restrictive-string-p (split-string domain "[.]")))
+
+(provide 'puny)
+
+;;; puny.el ends here
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 55b43f6396..d64de0f783 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -103,7 +103,12 @@ connected to automatically.
`:encryption'
VALUE must be `plain' (the default) for unencrypted connections, or `tls'
-for connections using SSL/TLS."
+for connections using SSL/TLS.
+
+`:server-alias'
+
+VALUE must be a string that will be used instead of the server name for
+display purposes. If absent, the real server name will be displayed instead."
:type '(alist :key-type string
:value-type (plist :options
((:nick string)
@@ -113,7 +118,8 @@ for connections using SSL/TLS."
(:full-name string)
(:channels (repeat string))
(:encryption (choice (const tls)
- (const plain))))))
+ (const plain)))
+ (:server-alias string))))
:group 'rcirc)
(defcustom rcirc-default-port 6667
@@ -484,22 +490,26 @@ If ARG is non-nil, instead prompt for connection parameters."
(channels (plist-get (cdr c) :channels))
(password (plist-get (cdr c) :password))
(encryption (plist-get (cdr c) :encryption))
+ (server-alias (plist-get (cdr c) :server-alias))
contact)
(when server
(let (connected)
(dolist (p (rcirc-process-list))
- (when (string= server (process-name p))
+ (when (string= (or server-alias server) (process-name p))
(setq connected p)))
(if (not connected)
(condition-case nil
(rcirc-connect server port nick user-name
- full-name channels password encryption)
- (quit (message "Quit connecting to %s" server)))
+ full-name channels password encryption
+ server-alias)
+ (quit (message "Quit connecting to %s"
+ (or server-alias server))))
(with-current-buffer (process-buffer connected)
(setq contact (process-contact
- (get-buffer-process (current-buffer)) :host))
+ (get-buffer-process (current-buffer)) :name))
(setq connected-servers
- (cons (if (stringp contact) contact server)
+ (cons (if (stringp contact)
+ contact (or server-alias server))
connected-servers))))))))
(when connected-servers
(message "Already connected to %s"
@@ -528,9 +538,10 @@ If ARG is non-nil, instead prompt for connection parameters."
;;;###autoload
(defun rcirc-connect (server &optional port nick user-name
- full-name startup-channels password encryption)
+ full-name startup-channels password encryption
+ server-alias)
(save-excursion
- (message "Connecting to %s..." server)
+ (message "Connecting to %s..." (or server-alias server))
(let* ((inhibit-eol-conversion)
(port-number (if port
(if (stringp port)
@@ -542,7 +553,7 @@ If ARG is non-nil, instead prompt for connection parameters."
(full-name (or full-name rcirc-default-full-name))
(startup-channels startup-channels)
(process (open-network-stream
- server nil server port-number
+ (or server-alias server) nil server port-number
:type (or encryption 'plain))))
;; set up process
(set-process-coding-system process 'raw-text 'raw-text)
@@ -557,7 +568,8 @@ If ARG is non-nil, instead prompt for connection parameters."
password encryption))
(setq-local rcirc-process process)
(setq-local rcirc-server server)
- (setq-local rcirc-server-name server) ; Update when we get 001 response.
+ (setq-local rcirc-server-name
+ (or server-alias server)) ; Update when we get 001 response.
(setq-local rcirc-buffer-alist nil)
(setq-local rcirc-nick-table (make-hash-table :test 'equal))
(setq-local rcirc-nick nick)
@@ -584,7 +596,7 @@ If ARG is non-nil, instead prompt for connection parameters."
(setq rcirc-keepalive-timer
(run-at-time 0 (/ rcirc-timeout-seconds 2) 'rcirc-keepalive)))
- (message "Connecting to %s...done" server)
+ (message "Connecting to %s...done" (or server-alias server))
;; return process object
process)))
@@ -599,10 +611,7 @@ If ARG is non-nil, instead prompt for connection parameters."
`(with-current-buffer rcirc-server-buffer
,@body))
-(defalias 'rcirc-float-time
- (if (featurep 'xemacs)
- 'time-to-seconds
- 'float-time))
+(define-obsolete-function-alias 'rcirc-float-time 'float-time "25.2")
(defun rcirc-prompt-for-encryption (server-plist)
"Prompt the user for the encryption method to use.
@@ -626,7 +635,7 @@ last ping."
(rcirc-send-ctcp process
rcirc-nick
(format "KEEPALIVE %f"
- (rcirc-float-time))))))
+ (float-time))))))
(rcirc-process-list))
;; no processes, clean up timer
(when (timerp rcirc-keepalive-timer)
@@ -635,7 +644,7 @@ last ping."
(defun rcirc-handler-ctcp-KEEPALIVE (process _target _sender message)
(with-rcirc-process-buffer process
- (setq header-line-format (format "%f" (- (rcirc-float-time)
+ (setq header-line-format (format "%f" (- (float-time)
(string-to-number message))))))
(defvar rcirc-debug-buffer "*rcirc debug*")
@@ -2330,7 +2339,7 @@ With a prefix arg, prompt for new topic."
(defun rcirc-ctcp-sender-PING (process target _request)
"Send a CTCP PING message to TARGET."
- (let ((timestamp (format "%.0f" (rcirc-float-time))))
+ (let ((timestamp (format "%.0f" (float-time))))
(rcirc-send-ctcp process target "PING" timestamp)))
(defun rcirc-cmd-me (args &optional process target)
diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el
index 55d5f007ac..ea26a521af 100644
--- a/lisp/net/secrets.el
+++ b/lisp/net/secrets.el
@@ -1,4 +1,4 @@
-;;; secrets.el --- Client interface to gnome-keyring and kwallet.
+;;; secrets.el --- Client interface to gnome-keyring and kwallet. -*- lexical-binding: t -*-
;; Copyright (C) 2010-2016 Free Software Foundation, Inc.
@@ -433,7 +433,7 @@ returned, and it will be stored in `secrets-session-path'."
"Handler for signals emitted by `secrets-interface-service'."
(cond
((string-equal (dbus-event-member-name last-input-event) "CollectionCreated")
- (add-to-list 'secrets-collection-paths (car args)))
+ (cl-pushnew (car args) secrets-collection-paths))
((string-equal (dbus-event-member-name last-input-event) "CollectionDeleted")
(setq secrets-collection-paths
(delete (car args) secrets-collection-paths)))))
@@ -610,12 +610,11 @@ The object labels of the found items are returned as list."
(error 'wrong-type-argument (car attributes)))
(unless (stringp (cadr attributes))
(error 'wrong-type-argument (cadr attributes)))
- (setq props (add-to-list
- 'props
+ (setq props (append
+ props
(list :dict-entry
(substring (symbol-name (car attributes)) 1)
- (cadr attributes))
- 'append)
+ (cadr attributes)))
attributes (cddr attributes)))
;; Search. The result is a list of object paths.
(setq result
@@ -649,12 +648,11 @@ The object path of the created item is returned."
(error 'wrong-type-argument (car attributes)))
(unless (stringp (cadr attributes))
(error 'wrong-type-argument (cadr attributes)))
- (setq props (add-to-list
- 'props
+ (setq props (append
+ props
(list :dict-entry
(substring (symbol-name (car attributes)) 1)
- (cadr attributes))
- 'append)
+ (cadr attributes)))
attributes (cddr attributes)))
;; Create the item.
(setq result
@@ -734,33 +732,30 @@ If there is no such item, or the item doesn't own this attribute, return nil."
;;; Visualization.
-(define-derived-mode secrets-mode nil "Secrets"
+(defvar secrets-mode-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map (make-composed-keymap special-mode-map widget-keymap))
+ (define-key map "n" 'next-line)
+ (define-key map "p" 'previous-line)
+ (define-key map "z" 'kill-this-buffer)
+ map)
+ "Keymap used in `secrets-mode' buffers.")
+
+(define-derived-mode secrets-mode special-mode "Secrets"
"Major mode for presenting password entries retrieved by Security Service.
In this mode, widgets represent the search results.
\\{secrets-mode-map}"
- ;; Keymap.
- (setq secrets-mode-map (copy-keymap special-mode-map))
- (set-keymap-parent secrets-mode-map widget-keymap)
- (define-key secrets-mode-map "z" 'kill-this-buffer)
-
+ (setq buffer-undo-list t)
+ (set (make-local-variable 'revert-buffer-function)
+ #'secrets-show-collections)
;; When we toggle, we must set temporary widgets.
(set (make-local-variable 'tree-widget-after-toggle-functions)
- '(secrets-tree-widget-after-toggle-function))
-
- (when (not (called-interactively-p 'interactive))
- ;; Initialize buffer.
- (setq buffer-read-only t)
- (let ((inhibit-read-only t))
- (erase-buffer))))
+ '(secrets-tree-widget-after-toggle-function)))
;; It doesn't make sense to call it interactively.
(put 'secrets-mode 'disabled t)
-;; The very first buffer created with `secrets-mode' does not have the
-;; keymap etc. So we create a dummy buffer. Stupid.
-(with-temp-buffer (secrets-mode))
-
;; We autoload `secrets-show-secrets' only on systems with D-Bus support.
;;;###autoload(when (featurep 'dbusbind)
;;;###autoload (autoload 'secrets-show-secrets "secrets" nil t))
@@ -783,10 +778,9 @@ to their attributes."
(secrets-mode)
(secrets-show-collections))))
-(defun secrets-show-collections ()
+(defun secrets-show-collections (&optional _ignore _noconfirm)
"Show all available collections."
- (let ((inhibit-read-only t)
- (alias (secrets-get-alias "default")))
+ (let ((inhibit-read-only t))
(erase-buffer)
(tree-widget-set-theme "folder")
(dolist (coll (secrets-list-collections))
@@ -855,7 +849,7 @@ to their attributes."
"%v\n"))))
attributes))))
-(defun secrets-tree-widget-after-toggle-function (widget &rest ignore)
+(defun secrets-tree-widget-after-toggle-function (widget &rest _ignore)
"Add a temporary widget to show the password."
(dolist (child (widget-get widget :children))
(when (widget-member child :secret)
@@ -867,7 +861,7 @@ to their attributes."
"Show password")))
(widget-setup))
-(defun secrets-tree-widget-show-password (widget &rest ignore)
+(defun secrets-tree-widget-show-password (widget &rest _ignore)
"Show password, and remove temporary widget."
(let ((parent (widget-get widget :parent)))
(widget-put parent :secret nil)
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index 2c8ff79763..07009d06be 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -36,6 +36,8 @@
(require 'subr-x)
(require 'dom)
(require 'seq)
+(require 'svg)
+(require 'image)
(defgroup shr nil
"Simple HTML Renderer"
@@ -64,6 +66,12 @@ fit these criteria."
:group 'shr
:type 'boolean)
+(defcustom shr-use-colors t
+ "If non-nil, respect color specifications in the HTML."
+ :version "25.2"
+ :group 'shr
+ :type 'boolean)
+
(defcustom shr-table-horizontal-line nil
"Character used to draw horizontal table lines.
If nil, don't draw horizontal table lines."
@@ -136,6 +144,14 @@ cid: URL as the argument.")
(defvar shr-inhibit-images nil
"If non-nil, inhibit loading images.")
+(defvar shr-external-rendering-functions nil
+ "Alist of tag/function pairs used to alter how shr renders certain tags.
+For instance, eww uses this to alter rendering of title, forms
+and other things:
+((title . eww-tag-title)
+ (form . eww-tag-form)
+ ...)")
+
;;; Internal variables.
(defvar shr-folding-mode nil)
@@ -151,7 +167,6 @@ cid: URL as the argument.")
(defvar shr-depth 0)
(defvar shr-warning nil)
(defvar shr-ignore-cache nil)
-(defvar shr-external-rendering-functions nil)
(defvar shr-target-id nil)
(defvar shr-table-separator-length 1)
(defvar shr-table-separator-pixel-width 0)
@@ -172,10 +187,16 @@ cid: URL as the argument.")
(define-key map "w" 'shr-copy-url)
(define-key map "u" 'shr-copy-url)
(define-key map "v" 'shr-browse-url)
- (define-key map "o" 'shr-save-contents)
+ (define-key map "O" 'shr-save-contents)
(define-key map "\r" 'shr-browse-url)
map))
+(defvar shr-image-map
+ (let ((map (copy-keymap shr-map)))
+ (when (boundp 'image-map)
+ (set-keymap-parent map image-map))
+ map))
+
;; Public functions and commands.
(declare-function libxml-parse-html-region "xml.c"
(start end &optional base-url discard-comments))
@@ -254,22 +275,19 @@ DOM should be a parse tree as generated by
(set-window-hscroll nil 0)
(shr-descend dom)
(shr-fill-lines start (point))
- (shr-remove-trailing-whitespace start (point))
+ (shr--remove-blank-lines-at-the-end start (point))
(when shr-warning
(message "%s" shr-warning))))
-(defun shr-remove-trailing-whitespace (start end)
- (let ((width (window-width)))
- (save-restriction
+(defun shr--remove-blank-lines-at-the-end (start end)
+ (save-restriction
+ (save-excursion
(narrow-to-region start end)
- (goto-char start)
- (while (not (eobp))
- (end-of-line)
- (when (> (shr-previous-newline-padding-width (current-column)) width)
- (dolist (overlay (overlays-at (point)))
- (when (overlay-get overlay 'before-string)
- (overlay-put overlay 'before-string nil))))
- (forward-line 1)))))
+ (goto-char end)
+ (when (and (re-search-backward "[^ \n]" nil t)
+ (not (eobp)))
+ (forward-line 1)
+ (delete-region (point) (point-max))))))
(defun shr-copy-url (&optional image-url)
"Copy the URL under point to the kill ring.
@@ -279,8 +297,10 @@ image under point instead.
If called twice, then try to fetch the URL and see whether it
redirects somewhere else."
(interactive "P")
- (let ((url (or (get-text-property (point) 'shr-url)
- (get-text-property (point) 'image-url))))
+ (let ((url (if image-url
+ (get-text-property (point) 'image-url)
+ (or (get-text-property (point) 'shr-url)
+ (get-text-property (point) 'image-url)))))
(cond
((not url)
(message "No URL under point"))
@@ -435,11 +455,10 @@ size, and full-buffer size."
(defun shr-descend (dom)
(let ((function
- (or
- ;; Allow other packages to override (or provide) rendering
- ;; of elements.
- (cdr (assq (dom-tag dom) shr-external-rendering-functions))
- (intern (concat "shr-tag-" (symbol-name (dom-tag dom))) obarray)))
+ (intern (concat "shr-tag-" (symbol-name (dom-tag dom))) obarray))
+ ;; Allow other packages to override (or provide) rendering
+ ;; of elements.
+ (external (cdr (assq (dom-tag dom) shr-external-rendering-functions)))
(style (dom-attr dom 'style))
(shr-stylesheet shr-stylesheet)
(shr-depth (1+ shr-depth))
@@ -454,9 +473,12 @@ size, and full-buffer size."
(setq style nil)))
;; If we have a display:none, then just ignore this part of the DOM.
(unless (equal (cdr (assq 'display shr-stylesheet)) "none")
- (if (fboundp function)
- (funcall function dom)
- (shr-generic dom))
+ (cond (external
+ (funcall external dom))
+ ((fboundp function)
+ (funcall function dom))
+ (t
+ (shr-generic dom)))
(when (and shr-target-id
(equal (dom-attr dom 'id) shr-target-id))
;; If the element was empty, we don't have anything to put the
@@ -535,6 +557,16 @@ size, and full-buffer size."
(insert string)
(shr-pixel-column))))
+(defsubst shr--translate-insertion-chars ()
+ ;; Remove soft hyphens.
+ (goto-char (point-min))
+ (while (search-forward "­" nil t)
+ (replace-match "" t t))
+ ;; Translate non-breaking spaces into real spaces.
+ (goto-char (point-min))
+ (while (search-forward " " nil t)
+ (replace-match " " t t)))
+
(defun shr-insert (text)
(when (and (not (bolp))
(get-text-property (1- (point)) 'image-url))
@@ -545,14 +577,11 @@ size, and full-buffer size."
(insert text)
(save-restriction
(narrow-to-region start (point))
- ;; Remove soft hyphens.
- (goto-char (point-min))
- (while (search-forward "­" nil t)
- (replace-match "" t t))
+ (shr--translate-insertion-chars)
(goto-char (point-max)))))
(t
(let ((font-start (point)))
- (when (and (string-match "\\`[ \t\n\r ]" text)
+ (when (and (string-match "\\`[ \t\n\r]" text)
(not (bolp))
(not (eq (char-after (1- (point))) ? )))
(insert " "))
@@ -562,14 +591,11 @@ size, and full-buffer size."
(save-restriction
(narrow-to-region start (point))
(goto-char start)
- (when (looking-at "[ \t\n\r ]+")
+ (when (looking-at "[ \t\n\r]+")
(replace-match "" t t))
- (while (re-search-forward "[ \t\n\r ]+" nil t)
+ (while (re-search-forward "[ \t\n\r]+" nil t)
(replace-match " " t t))
- ;; Remove soft hyphens.
- (goto-char (point-min))
- (while (search-forward "­" nil t)
- (replace-match "" t t))
+ (shr--translate-insertion-chars)
(goto-char (point-max)))
;; We may have removed everything we inserted if if was just
;; spaces.
@@ -636,13 +662,12 @@ size, and full-buffer size."
;; Success; continue.
(when (= (preceding-char) ?\s)
(delete-char -1))
- (let ((face (get-text-property (point) 'face))
- (background-start (point)))
+ (let ((props (text-properties-at (point)))
+ (gap-start (point)))
(insert "\n")
(shr-indent)
- (when face
- (put-text-property background-start (point) 'face
- `,(shr-face-background face))))
+ (when props
+ (add-text-properties gap-start (point) props)))
(setq start (point))
(shr-vertical-motion shr-internal-width)
(when (looking-at " $")
@@ -952,10 +977,14 @@ element is the data blob and the second element is the content-type."
(create-image data 'svg t :ascent 100))
((eq size 'full)
(ignore-errors
- (shr-rescale-image data content-type)))
+ (shr-rescale-image data content-type
+ (plist-get flags :width)
+ (plist-get flags :height))))
(t
(ignore-errors
- (shr-rescale-image data content-type))))))
+ (shr-rescale-image data content-type
+ (plist-get flags :width)
+ (plist-get flags :height)))))))
(when image
;; When inserting big-ish pictures, put them at the
;; beginning of the line.
@@ -978,21 +1007,40 @@ element is the data blob and the second element is the content-type."
image)
(insert (or alt ""))))
-(defun shr-rescale-image (data &optional content-type)
- "Rescale DATA, if too big, to fit the current buffer."
- (if (not (and (fboundp 'imagemagick-types)
- (get-buffer-window (current-buffer))))
+(defun shr-rescale-image (data content-type width height)
+ "Rescale DATA, if too big, to fit the current buffer.
+WIDTH and HEIGHT are the sizes given in the HTML data, if any."
+ (if (or (not (fboundp 'imagemagick-types))
+ (not (get-buffer-window (current-buffer))))
(create-image data nil t :ascent 100)
- (let ((edges (window-inside-pixel-edges
- (get-buffer-window (current-buffer)))))
- (create-image
- data 'imagemagick t
- :ascent 100
- :max-width (truncate (* shr-max-image-proportion
- (- (nth 2 edges) (nth 0 edges))))
- :max-height (truncate (* shr-max-image-proportion
- (- (nth 3 edges) (nth 1 edges))))
- :format content-type))))
+ (let* ((edges (window-inside-pixel-edges
+ (get-buffer-window (current-buffer))))
+ (max-width (truncate (* shr-max-image-proportion
+ (- (nth 2 edges) (nth 0 edges)))))
+ (max-height (truncate (* shr-max-image-proportion
+ (- (nth 3 edges) (nth 1 edges)))))
+ (scaling (image-compute-scaling-factor image-scaling-factor)))
+ (when (or (and width
+ (> width max-width))
+ (and height
+ (> height max-height)))
+ (setq width nil
+ height nil))
+ (if (and width height
+ (< (* width scaling) max-width)
+ (< (* height scaling) max-height))
+ (create-image
+ data 'imagemagick t
+ :ascent 100
+ :width width
+ :height height
+ :format content-type)
+ (create-image
+ data 'imagemagick t
+ :ascent 100
+ :max-width max-width
+ :max-height max-height
+ :format content-type)))))
;; url-cache-extract autoloads url-cache.
(declare-function url-cache-create-filename "url-cache" (url))
@@ -1071,8 +1119,15 @@ START, and END. Note that START and END should be markers."
url)))
(if title (format "%s (%s)" iri title) iri))
'follow-link t
- 'mouse-face 'highlight
- 'keymap shr-map)))
+ 'mouse-face 'highlight))
+ ;; Don't overwrite any keymaps that are already in the buffer (i.e.,
+ ;; image keymaps).
+ (while (and start
+ (< start (point)))
+ (let ((next (next-single-property-change start 'keymap nil (point))))
+ (if (get-text-property start 'keymap)
+ (setq start next)
+ (put-text-property start (or next (point)) 'keymap shr-map)))))
(defun shr-encode-url (url)
"Encode URL."
@@ -1104,7 +1159,9 @@ ones, in case fg and bg are nil."
(shr-color-visible bg fg)))))))
(defun shr-colorize-region (start end fg &optional bg)
- (when (and (or fg bg) (>= (display-color-cells) 88))
+ (when (and shr-use-colors
+ (or fg bg)
+ (>= (display-color-cells) 88))
(let ((new-colors (shr-color-check fg bg)))
(when new-colors
(when fg
@@ -1117,18 +1174,6 @@ ones, in case fg and bg are nil."
t)))
new-colors)))
-(defun shr-previous-newline-padding-width (width)
- (let ((overlays (overlays-at (point)))
- (previous-width 0))
- (if (null overlays)
- width
- (dolist (overlay overlays)
- (setq previous-width
- (+ previous-width
- (length (plist-get (overlay-properties overlay)
- 'before-string)))))
- (+ width previous-width))))
-
;;; Tag-specific rendering rules.
(defun shr-tag-html (dom)
@@ -1137,7 +1182,9 @@ ones, in case fg and bg are nil."
((equal dir "ltr")
(setq bidi-paragraph-direction 'left-to-right))
((equal dir "rtl")
- (setq bidi-paragraph-direction 'right-to-left))))
+ (setq bidi-paragraph-direction 'right-to-left))
+ ((equal dir "auto")
+ (setq bidi-paragraph-direction nil))))
(shr-generic dom))
(defun shr-tag-body (dom)
@@ -1223,9 +1270,6 @@ ones, in case fg and bg are nil."
(defun shr-tag-s (dom)
(shr-fontize-dom dom 'shr-strike-through))
-(defun shr-tag-del (dom)
- (shr-fontize-dom dom 'shr-strike-through))
-
(defun shr-tag-b (dom)
(shr-fontize-dom dom 'bold))
@@ -1245,6 +1289,24 @@ ones, in case fg and bg are nil."
(let ((shr-current-font 'default))
(shr-generic dom)))
+(defun shr-tag-ins (cont)
+ (let* ((start (point))
+ (color "green")
+ (shr-stylesheet (nconc (list (cons 'color color))
+ shr-stylesheet)))
+ (shr-generic cont)
+ (shr-colorize-region start (point) color
+ (cdr (assq 'background-color shr-stylesheet)))))
+
+(defun shr-tag-del (cont)
+ (let* ((start (point))
+ (color "red")
+ (shr-stylesheet (nconc (list (cons 'color color))
+ shr-stylesheet)))
+ (shr-fontize-dom cont 'shr-strike-through)
+ (shr-colorize-region start (point) color
+ (cdr (assq 'background-color shr-stylesheet)))))
+
(defun shr-parse-style (style)
(when style
(save-match-data
@@ -1388,11 +1450,14 @@ The preference is a float determined from `shr-prefer-media-type'."
(defun shr-tag-img (dom &optional url)
(when (or url
(and dom
- (> (length (dom-attr dom 'src)) 0)))
+ (or (> (length (dom-attr dom 'src)) 0)
+ (> (length (dom-attr dom 'srcset)) 0))))
(when (> (current-column) 0)
(insert "\n"))
(let ((alt (dom-attr dom 'alt))
- (url (shr-expand-url (or url (dom-attr dom 'src)))))
+ (width (shr-string-number (dom-attr dom 'width)))
+ (height (shr-string-number (dom-attr dom 'height)))
+ (url (shr-expand-url (or url (shr--preferred-image dom)))))
(let ((start (point-marker)))
(when (zerop (length alt))
(setq alt "*"))
@@ -1405,7 +1470,8 @@ The preference is a float determined from `shr-prefer-media-type'."
(string-match "\\`data:" url))
(let ((image (shr-image-from-data (substring url (match-end 0)))))
(if image
- (funcall shr-put-image-function image alt)
+ (funcall shr-put-image-function image alt
+ (list :width width :height height))
(insert alt))))
((and (not shr-inhibit-images)
(string-match "\\`cid:" url))
@@ -1414,7 +1480,8 @@ The preference is a float determined from `shr-prefer-media-type'."
(if (or (not shr-content-function)
(not (setq image (funcall shr-content-function url))))
(insert alt)
- (funcall shr-put-image-function image alt))))
+ (funcall shr-put-image-function image alt
+ (list :width width :height height)))))
((or shr-inhibit-images
(and shr-blocked-images
(string-match shr-blocked-images url)))
@@ -1422,20 +1489,26 @@ The preference is a float determined from `shr-prefer-media-type'."
(shr-insert alt))
((and (not shr-ignore-cache)
(url-is-cached (shr-encode-url url)))
- (funcall shr-put-image-function (shr-get-image-data url) alt))
+ (funcall shr-put-image-function (shr-get-image-data url) alt
+ (list :width width :height height)))
(t
- (insert alt " ")
(when (and shr-ignore-cache
(url-is-cached (shr-encode-url url)))
(let ((file (url-cache-create-filename (shr-encode-url url))))
(when (file-exists-p file)
(delete-file file))))
+ (when (image-type-available-p 'svg)
+ (insert-image
+ (shr-make-placeholder-image dom)
+ (or alt "")))
+ (insert " ")
(url-queue-retrieve
(shr-encode-url url) 'shr-image-fetched
- (list (current-buffer) start (set-marker (make-marker) (1- (point))))
+ (list (current-buffer) start (set-marker (make-marker) (point))
+ (list :width width :height height))
t t)))
(when (zerop shr-table-depth) ;; We are not in a table.
- (put-text-property start (point) 'keymap shr-map)
+ (put-text-property start (point) 'keymap shr-image-map)
(put-text-property start (point) 'shr-alt alt)
(put-text-property start (point) 'image-url url)
(put-text-property start (point) 'image-displayer
@@ -1444,6 +1517,87 @@ The preference is a float determined from `shr-prefer-media-type'."
(shr-fill-text
(or (dom-attr dom 'title) alt))))))))
+(defun shr--preferred-image (dom)
+ (let ((srcset (dom-attr dom 'srcset))
+ (frame-width (frame-pixel-width))
+ (width (string-to-number (or (dom-attr dom 'width) "100")))
+ candidate)
+ (when (> (length srcset) 0)
+ ;; srcset consist of a series of URL/size specifications
+ ;; separated by the ", " string.
+ (setq srcset
+ (sort (mapcar
+ (lambda (elem)
+ (let ((spec (split-string elem " ")))
+ (cond
+ ((= (length spec) 1)
+ ;; Make sure it's well formed.
+ (list (car spec) 0))
+ ((string-match "\\([0-9]+\\)x\\'" (cadr spec))
+ ;; If we have an "x" form, then use the width
+ ;; spec to compute the real width.
+ (list (car spec)
+ (* width (string-to-number
+ (match-string 1 (cadr spec))))))
+ (t
+ (list (car spec)
+ (string-to-number (cadr spec)))))))
+ (split-string srcset ", "))
+ (lambda (e1 e2)
+ (> (cadr e1) (cadr e2)))))
+ ;; Choose the smallest picture that's bigger than the current
+ ;; frame.
+ (setq candidate (caar srcset))
+ (while (and srcset
+ (> (cadr (car srcset)) frame-width))
+ (setq candidate (caar srcset))
+ (pop srcset)))
+ (or candidate (dom-attr dom 'src))))
+
+(defun shr-string-number (string)
+ (if (null string)
+ nil
+ (setq string (replace-regexp-in-string "[^0-9]" "" string))
+ (if (zerop (length string))
+ nil
+ (string-to-number string))))
+
+(defun shr-make-placeholder-image (dom)
+ (let* ((edges (and
+ (get-buffer-window (current-buffer))
+ (window-inside-pixel-edges
+ (get-buffer-window (current-buffer)))))
+ (scaling (image-compute-scaling-factor image-scaling-factor))
+ (width (truncate
+ (* (or (shr-string-number (dom-attr dom 'width)) 100)
+ scaling)))
+ (height (truncate
+ (* (or (shr-string-number (dom-attr dom 'height)) 100)
+ scaling)))
+ (max-width
+ (and edges
+ (truncate (* shr-max-image-proportion
+ (- (nth 2 edges) (nth 0 edges))))))
+ (max-height (and edges
+ (truncate (* shr-max-image-proportion
+ (- (nth 3 edges) (nth 1 edges))))))
+ svg image)
+ (when (and max-width
+ (> width max-width))
+ (setq height (truncate (* (/ (float max-width) width) height))
+ width max-width))
+ (when (and max-height
+ (> height max-height))
+ (setq width (truncate (* (/ (float max-height) height) width))
+ height max-height))
+ (setq svg (svg-create width height))
+ (svg-gradient svg "background" 'linear '((0 . "#b0b0b0") (100 . "#808080")))
+ (svg-rectangle svg 0 0 width height :gradient "background"
+ :stroke-width 2 :stroke-color "black")
+ (let ((image (svg-image svg)))
+ (setf (image-property image :ascent) 100)
+ image)))
+
(defun shr-tag-pre (dom)
(let ((shr-folding-mode 'none)
(shr-current-font 'default))
@@ -1510,7 +1664,9 @@ The preference is a float determined from `shr-prefer-media-type'."
(put-text-property start (1+ start)
'shr-continuation-indentation shr-indentation)
(put-text-property start (1+ start) 'shr-prefix-length (length bullet))
- (shr-generic dom)))))
+ (shr-generic dom))))
+ (unless (bolp)
+ (insert "\n")))
(defun shr-mark-fill (start)
;; We may not have inserted any text to fill.
@@ -1573,6 +1729,24 @@ The preference is a float determined from `shr-prefer-media-type'."
(shr-colorize-region start (point) color
(cdr (assq 'background-color shr-stylesheet))))))
+(defun shr-tag-bdo (dom)
+ (let* ((direction (dom-attr dom 'dir))
+ (char (cond
+ ((equal direction "ltr")
+ ?\N{LEFT-TO-RIGHT OVERRIDE})
+ ((equal direction "rtl")
+ ?\N{RIGHT-TO-LEFT OVERRIDE}))))
+ (when char
+ (insert ?\N{FIRST STRONG ISOLATE} char))
+ (shr-generic dom)
+ (when char
+ (insert ?\N{POP DIRECTIONAL FORMATTING} ?\N{POP DIRECTIONAL ISOLATE}))))
+
+(defun shr-tag-bdi (dom)
+ (insert ?\N{FIRST STRONG ISOLATE})
+ (shr-generic dom)
+ (insert ?\N{POP DIRECTIONAL ISOLATE}))
+
;;; Table rendering algorithm.
;; Table rendering is the only complicated thing here. We do this by
diff --git a/lisp/gnus/sieve-manage.el b/lisp/net/sieve-manage.el
index 212a7fd9f3..695bbd860d 100644
--- a/lisp/gnus/sieve-manage.el
+++ b/lisp/net/sieve-manage.el
@@ -75,10 +75,9 @@
(require 'password-cache)
(require 'password))
-(eval-when-compile
- (require 'cl) ; caddr
- (require 'sasl)
- (require 'starttls))
+(eval-when-compile (require 'cl))
+(require 'sasl)
+(require 'starttls)
(autoload 'sasl-find-mechanism "sasl")
(autoload 'auth-source-search "auth-source")
@@ -202,7 +201,7 @@ Return the buffer associated with the connection."
(sieve-manage-erase)
(setq sieve-manage-state 'initial)
(destructuring-bind (proc . props)
- (open-protocol-stream
+ (open-network-stream
"SIEVE" buffer server port
:type stream
:capability-command "CAPABILITY\r\n"
diff --git a/lisp/gnus/sieve-mode.el b/lisp/net/sieve-mode.el
index 5ea687dd91..6aa1b207ee 100644
--- a/lisp/gnus/sieve-mode.el
+++ b/lisp/net/sieve-mode.el
@@ -57,14 +57,10 @@
(defcustom sieve-mode-hook nil
"Hook run in sieve mode buffers."
- :group 'sieve
:type 'hook)
;; Font-lock
-(defvar sieve-control-commands-face 'sieve-control-commands
- "Face name used for Sieve Control Commands.")
-
(defface sieve-control-commands
'((((type tty) (class color)) (:foreground "blue" :weight light))
(((class grayscale) (background light)) (:foreground "LightGray" :bold t))
@@ -72,28 +68,14 @@
(((class color) (background light)) (:foreground "Orchid"))
(((class color) (background dark)) (:foreground "LightSteelBlue"))
(t (:bold t)))
- "Face used for Sieve Control Commands."
- :group 'sieve)
-;; backward-compatibility alias
-(put 'sieve-control-commands-face 'face-alias 'sieve-control-commands)
-(put 'sieve-control-commands-face 'obsolete-face "22.1")
-
-(defvar sieve-action-commands-face 'sieve-action-commands
- "Face name used for Sieve Action Commands.")
+ "Face used for Sieve Control Commands.")
(defface sieve-action-commands
'((((type tty) (class color)) (:foreground "blue" :weight bold))
(((class color) (background light)) (:foreground "Blue"))
(((class color) (background dark)) (:foreground "LightSkyBlue"))
(t (:inverse-video t :bold t)))
- "Face used for Sieve Action Commands."
- :group 'sieve)
-;; backward-compatibility alias
-(put 'sieve-action-commands-face 'face-alias 'sieve-action-commands)
-(put 'sieve-action-commands-face 'obsolete-face "22.1")
-
-(defvar sieve-test-commands-face 'sieve-test-commands
- "Face name used for Sieve Test Commands.")
+ "Face used for Sieve Action Commands.")
(defface sieve-test-commands
'((((type tty) (class color)) (:foreground "magenta"))
@@ -104,14 +86,7 @@
(((class color) (background light)) (:foreground "CadetBlue"))
(((class color) (background dark)) (:foreground "Aquamarine"))
(t (:bold t :underline t)))
- "Face used for Sieve Test Commands."
- :group 'sieve)
-;; backward-compatibility alias
-(put 'sieve-test-commands-face 'face-alias 'sieve-test-commands)
-(put 'sieve-test-commands-face 'obsolete-face "22.1")
-
-(defvar sieve-tagged-arguments-face 'sieve-tagged-arguments
- "Face name used for Sieve Tagged Arguments.")
+ "Face used for Sieve Test Commands.")
(defface sieve-tagged-arguments
'((((type tty) (class color)) (:foreground "cyan" :weight bold))
@@ -120,11 +95,7 @@
(((class color) (background light)) (:foreground "Purple"))
(((class color) (background dark)) (:foreground "Cyan"))
(t (:bold t)))
- "Face used for Sieve Tagged Arguments."
- :group 'sieve)
-;; backward-compatibility alias
-(put 'sieve-tagged-arguments-face 'face-alias 'sieve-tagged-arguments)
-(put 'sieve-tagged-arguments-face 'obsolete-face "22.1")
+ "Face used for Sieve Tagged Arguments.")
(defconst sieve-font-lock-keywords
@@ -133,44 +104,43 @@
;; control commands
(cons (regexp-opt '("require" "if" "else" "elsif" "stop")
'words)
- 'sieve-control-commands-face)
+ 'sieve-control-commands)
;; action commands
(cons (regexp-opt '("fileinto" "redirect" "reject" "keep" "discard")
'words)
- 'sieve-action-commands-face)
+ 'sieve-action-commands)
;; test commands
(cons (regexp-opt '("address" "allof" "anyof" "exists" "false"
"true" "header" "not" "size" "envelope"
"body")
'words)
- 'sieve-test-commands-face)
+ 'sieve-test-commands)
(cons "\\Sw+:\\sw+"
- 'sieve-tagged-arguments-face))))
+ 'sieve-tagged-arguments))))
;; Syntax table
-(defvar sieve-mode-syntax-table nil
+(defvar sieve-mode-syntax-table
+ (let ((st (make-syntax-table)))
+ (modify-syntax-entry ?\\ "\\" st)
+ (modify-syntax-entry ?\n "> " st)
+ (modify-syntax-entry ?\f "> " st)
+ (modify-syntax-entry ?\# "< " st)
+ (modify-syntax-entry ?/ ". 14" st)
+ (modify-syntax-entry ?* ". 23b" st)
+ (modify-syntax-entry ?+ "." st)
+ (modify-syntax-entry ?- "." st)
+ (modify-syntax-entry ?= "." st)
+ (modify-syntax-entry ?% "." st)
+ (modify-syntax-entry ?< "." st)
+ (modify-syntax-entry ?> "." st)
+ (modify-syntax-entry ?& "." st)
+ (modify-syntax-entry ?| "." st)
+ (modify-syntax-entry ?_ "_" st)
+ (modify-syntax-entry ?\' "\"" st)
+ st)
"Syntax table in use in sieve-mode buffers.")
-(if sieve-mode-syntax-table
- ()
- (setq sieve-mode-syntax-table (make-syntax-table))
- (modify-syntax-entry ?\\ "\\" sieve-mode-syntax-table)
- (modify-syntax-entry ?\n "> " sieve-mode-syntax-table)
- (modify-syntax-entry ?\f "> " sieve-mode-syntax-table)
- (modify-syntax-entry ?\# "< " sieve-mode-syntax-table)
- (modify-syntax-entry ?/ "." sieve-mode-syntax-table)
- (modify-syntax-entry ?* "." sieve-mode-syntax-table)
- (modify-syntax-entry ?+ "." sieve-mode-syntax-table)
- (modify-syntax-entry ?- "." sieve-mode-syntax-table)
- (modify-syntax-entry ?= "." sieve-mode-syntax-table)
- (modify-syntax-entry ?% "." sieve-mode-syntax-table)
- (modify-syntax-entry ?< "." sieve-mode-syntax-table)
- (modify-syntax-entry ?> "." sieve-mode-syntax-table)
- (modify-syntax-entry ?& "." sieve-mode-syntax-table)
- (modify-syntax-entry ?| "." sieve-mode-syntax-table)
- (modify-syntax-entry ?_ "_" sieve-mode-syntax-table)
- (modify-syntax-entry ?\' "\"" sieve-mode-syntax-table))
;; Key map definition
@@ -182,13 +152,40 @@
map)
"Key map used in sieve mode.")
-;; Menu definition
+;; Menu
-(defvar sieve-mode-menu nil
- "Menubar used in sieve mode.")
+(easy-menu-define sieve-mode-menu sieve-mode-map
+ "Sieve Menu."
+ '("Sieve"
+ ["Upload script" sieve-upload t]
+ ["Manage scripts on server" sieve-manage t]))
;; Code for Sieve editing mode.
-(autoload 'easy-menu-add-item "easymenu")
+
+
+(defun sieve-syntax-propertize (beg end)
+ (goto-char beg)
+ (sieve-syntax-propertize-text end)
+ (funcall
+ (syntax-propertize-rules
+ ;; FIXME: When there's a "text:" with a # comment, the \n plays dual role:
+ ;; it closes the comment and starts the string. This is problematic for us
+ ;; since syntax-table entries can either close a comment or
+ ;; delimit a string, but not both.
+ ("\\_<text:[ \t]*\\(?:#.*\\(.\\)\\)?\\(\n\\)"
+ (1 ">")
+ (2 (prog1 (unless (save-excursion
+ (nth 8 (syntax-ppss (match-beginning 0))))
+ (string-to-syntax "|"))
+ (sieve-syntax-propertize-text end)))))
+ beg end))
+
+(defun sieve-syntax-propertize-text (end)
+ (let ((ppss (syntax-ppss)))
+ (when (and (eq t (nth 3 ppss))
+ (re-search-forward "^\\.\\(\n\\)" end 'move))
+ (put-text-property (match-beginning 1) (match-end 1)
+ 'syntax-table (string-to-syntax "|")))))
;;;###autoload
(define-derived-mode sieve-mode c-mode "Sieve"
@@ -204,19 +201,12 @@ Turning on Sieve mode runs `sieve-mode-hook'."
(set (make-local-variable 'comment-end) "")
;;(set (make-local-variable 'comment-start-skip) "\\(^\\|\\s-\\);?#+ *")
(set (make-local-variable 'comment-start-skip) "#+ *")
- (unless (featurep 'xemacs)
- (set (make-local-variable 'font-lock-defaults)
- '(sieve-font-lock-keywords nil nil ((?_ . "w")))))
+ (set (make-local-variable 'syntax-propertize-function)
+ #'sieve-syntax-propertize)
+ (set (make-local-variable 'font-lock-defaults)
+ '(sieve-font-lock-keywords nil nil ((?_ . "w"))))
(easy-menu-add-item nil nil sieve-mode-menu))
-;; Menu
-
-(easy-menu-define sieve-mode-menu sieve-mode-map
- "Sieve Menu."
- '("Sieve"
- ["Upload script" sieve-upload t]
- ["Manage scripts on server" sieve-manage t]))
-
(provide 'sieve-mode)
;; sieve-mode.el ends here
diff --git a/lisp/gnus/sieve.el b/lisp/net/sieve.el
index 2046e53697..2046e53697 100644
--- a/lisp/gnus/sieve.el
+++ b/lisp/net/sieve.el
diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el
index 12c9f41955..f8973a3a53 100644
--- a/lisp/net/soap-client.el
+++ b/lisp/net/soap-client.el
@@ -5,7 +5,7 @@
;; Author: Alexandru Harsanyi <AlexHarsanyi@gmail.com>
;; Author: Thomas Fitzsimmons <fitzsim@fitzsim.org>
;; Created: December, 2009
-;; Version: 3.0.2
+;; Version: 3.1.1
;; Keywords: soap, web-services, comm, hypermedia
;; Package: soap-client
;; Homepage: https://github.com/alex-hhh/emacs-soap-client
@@ -1249,8 +1249,8 @@ See also `soap-wsdl-resolve-references'."
(when messages
(error (mapconcat 'identity (nreverse messages) "; and: "))))
(cl-labels ((fail-with-message (format value)
- (push (format format value) messages)
- (throw 'invalid nil)))
+ (push (format format value) messages)
+ (throw 'invalid nil)))
(catch 'invalid
(let ((enumeration (soap-xs-simple-type-enumeration type)))
(when (and (> (length enumeration) 1)
@@ -1630,7 +1630,7 @@ This is a specialization of `soap-encode-value' for
`soap-xs-complex-type' objects."
(case (soap-xs-complex-type-indicator type)
(array
- (error "soap-encode-xs-complex-type arrays are handled elsewhere"))
+ (error "Arrays of type soap-encode-xs-complex-type are handled elsewhere"))
((sequence choice all nil)
(let ((type-list (list type)))
@@ -2999,6 +2999,33 @@ http://schemas.xmlsoap.org/soap/encoding/\"\n"))
:type 'boolean
:group 'soap-client)
+(defun soap-find-port (wsdl service)
+ "Return the WSDL port having SERVICE name.
+Signal an error if not found."
+ (or (catch 'found
+ (dolist (p (soap-wsdl-ports wsdl))
+ (when (equal service (soap-element-name p))
+ (throw 'found p))))
+ (error "Unknown SOAP service: %s" service)))
+
+(defun soap-find-operation (port operation-name)
+ "Inside PORT, find OPERATION-NAME, a `soap-port-type'.
+Signal an error if not found."
+ (let* ((binding (soap-port-binding port))
+ (op (gethash operation-name (soap-binding-operations binding))))
+ (or op
+ (error "No operation %s for SOAP service %s"
+ operation-name (soap-element-name port)))))
+
+(defun soap-operation-arity (wsdl service operation-name)
+ "Return the number of arguments required by a soap operation.
+WSDL, SERVICE, OPERATION-NAME and PARAMETERS are as described in
+`soap-invoke'."
+ (let* ((port (soap-find-port wsdl service))
+ (op (soap-find-operation port operation-name))
+ (bop (soap-bound-operation-operation op)))
+ (length (soap-operation-parameter-order bop))))
+
(defun soap-invoke-internal (callback cbargs wsdl service operation-name
&rest parameters)
"Implement `soap-invoke' and `soap-invoke-async'.
@@ -3006,54 +3033,43 @@ If CALLBACK is non-nil, operate asynchronously, then call CALLBACK as (apply
CALLBACK RESPONSE CBARGS), where RESPONSE is the SOAP invocation result.
If CALLBACK is nil, operate synchronously. WSDL, SERVICE,
OPERATION-NAME and PARAMETERS are as described in `soap-invoke'."
- (let ((port (catch 'found
- (dolist (p (soap-wsdl-ports wsdl))
- (when (equal service (soap-element-name p))
- (throw 'found p))))))
- (unless port
- (error "Unknown SOAP service: %s" service))
-
- (let* ((binding (soap-port-binding port))
- (operation (gethash operation-name
- (soap-binding-operations binding))))
- (unless operation
- (error "No operation %s for SOAP service %s" operation-name service))
-
- (let ((url-request-method "POST")
- (url-package-name "soap-client.el")
- (url-package-version "1.0")
- (url-request-data
- ;; url-request-data expects a unibyte string already encoded...
- (encode-coding-string
- (soap-create-envelope operation parameters wsdl
- (soap-port-service-url port))
- 'utf-8))
- (url-mime-charset-string "utf-8;q=1, iso-8859-1;q=0.5")
- (url-http-attempt-keepalives t)
- (url-request-extra-headers
- (list
- (cons "SOAPAction"
- (concat "\"" (soap-bound-operation-soap-action
- operation) "\""))
- (cons "Content-Type"
- "text/xml; charset=utf-8"))))
- (if callback
- (url-retrieve
- (soap-port-service-url port)
- (lambda (status)
- (let ((data-buffer (current-buffer)))
- (unwind-protect
- (let ((error-status (plist-get status :error)))
- (if error-status
- (signal (car error-status) (cdr error-status))
- (apply callback
- (soap-parse-envelope
- (soap-parse-server-response)
- operation wsdl)
- cbargs)))
- ;; Ensure the url-retrieve buffer is not leaked.
- (and (buffer-live-p data-buffer)
- (kill-buffer data-buffer))))))
+ (let* ((port (soap-find-port wsdl service))
+ (operation (soap-find-operation port operation-name)))
+ (let ((url-request-method "POST")
+ (url-package-name "soap-client.el")
+ (url-package-version "1.0")
+ (url-request-data
+ ;; url-request-data expects a unibyte string already encoded...
+ (encode-coding-string
+ (soap-create-envelope operation parameters wsdl
+ (soap-port-service-url port))
+ 'utf-8))
+ (url-mime-charset-string "utf-8;q=1, iso-8859-1;q=0.5")
+ (url-http-attempt-keepalives t)
+ (url-request-extra-headers
+ (list
+ (cons "SOAPAction"
+ (concat "\"" (soap-bound-operation-soap-action
+ operation) "\""))
+ (cons "Content-Type"
+ "text/xml; charset=utf-8"))))
+ (if callback
+ (url-retrieve
+ (soap-port-service-url port)
+ (lambda (status)
+ (let ((data-buffer (current-buffer)))
+ (unwind-protect
+ (let ((error-status (plist-get status :error)))
+ (if error-status
+ (signal (car error-status) (cdr error-status))
+ (apply callback
+ (soap-parse-envelope
+ (soap-parse-server-response)
+ operation wsdl)
+ cbargs)))
+ ;; Ensure the url-retrieve buffer is not leaked.
+ (and (buffer-live-p data-buffer)
+ (kill-buffer data-buffer))))))
(let ((buffer (url-retrieve-synchronously
(soap-port-service-url port))))
(condition-case err
@@ -3077,7 +3093,7 @@ OPERATION-NAME and PARAMETERS are as described in `soap-invoke'."
(error
(when soap-debug
(pop-to-buffer buffer))
- (error (error-message-string err))))))))))
+ (error (error-message-string err)))))))))
(defun soap-invoke (wsdl service operation-name &rest parameters)
"Invoke a SOAP operation and return the result.
diff --git a/lisp/gnus/starttls.el b/lisp/net/starttls.el
index f3ef5e023f..1ab7dc0164 100644
--- a/lisp/gnus/starttls.el
+++ b/lisp/net/starttls.el
@@ -136,7 +136,7 @@ i.e. when `starttls-use-gnutls' is nil."
:group 'starttls)
(defcustom starttls-use-gnutls (not (executable-find starttls-program))
- "*Whether to use GnuTLS instead of the `starttls' command."
+ "Whether to use GnuTLS instead of the `starttls' command."
:version "22.1"
:type 'boolean
:group 'starttls)
@@ -160,13 +160,13 @@ find out which parameters are available."
:group 'starttls)
(defcustom starttls-process-connection-type nil
- "*Value for `process-connection-type' to use when starting STARTTLS process."
+ "Value for `process-connection-type' to use when starting STARTTLS process."
:version "22.1"
:type 'boolean
:group 'starttls)
(defcustom starttls-connect "- Simple Client Mode:\n\n"
- "*Regular expression indicating successful connection.
+ "Regular expression indicating successful connection.
The default is what GnuTLS's \"gnutls-cli\" outputs."
;; GnuTLS cli.c:main() prints this string when it is starting to run
;; in the application read/write phase. If the logic, or the string
@@ -176,7 +176,7 @@ The default is what GnuTLS's \"gnutls-cli\" outputs."
:group 'starttls)
(defcustom starttls-failure "\\*\\*\\* Handshake has failed"
- "*Regular expression indicating failed TLS handshake.
+ "Regular expression indicating failed TLS handshake.
The default is what GnuTLS's \"gnutls-cli\" outputs."
;; GnuTLS cli.c:do_handshake() prints this string on failure. If the
;; logic, or the string itself, is modified, this must be updated.
@@ -185,7 +185,7 @@ The default is what GnuTLS's \"gnutls-cli\" outputs."
:group 'starttls)
(defcustom starttls-success "- Compression: "
- "*Regular expression indicating completed TLS handshakes.
+ "Regular expression indicating completed TLS handshakes.
The default is what GnuTLS's \"gnutls-cli\" outputs."
;; GnuTLS cli.c:do_handshake() calls, on success,
;; common.c:print_info(), that unconditionally print this string
@@ -232,13 +232,6 @@ handshake, or nil on failure."
(starttls-negotiate-gnutls process)
(signal-process (process-id process) 'SIGALRM)))
-(eval-and-compile
- (if (fboundp 'set-process-query-on-exit-flag)
- (defalias 'starttls-set-process-query-on-exit-flag
- 'set-process-query-on-exit-flag)
- (defalias 'starttls-set-process-query-on-exit-flag
- 'process-kill-without-query)))
-
(defun starttls-open-stream-gnutls (name buffer host port)
(message "Opening STARTTLS connection to `%s:%s'..." host port)
(let* (done
@@ -250,7 +243,7 @@ handshake, or nil on failure."
(int-to-string port)
port)
starttls-extra-arguments)))
- (starttls-set-process-query-on-exit-flag process nil)
+ (set-process-query-on-exit-flag process nil)
(while (and (processp process)
(eq (process-status process) 'run)
(with-current-buffer buffer
@@ -292,7 +285,7 @@ GnuTLS requires a port number."
name buffer starttls-program
host (format "%s" port)
starttls-extra-args)))
- (starttls-set-process-query-on-exit-flag process nil)
+ (set-process-query-on-exit-flag process nil)
process)))
(defun starttls-available-p ()
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index 32fd1888d3..24b732255d 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -35,16 +35,13 @@
(require 'tramp)
-;; Pacify byte-compiler.
-(defvar directory-listing-before-filename-regexp)
-(defvar directory-sep-char)
-
;;;###tramp-autoload
(defcustom tramp-adb-program "adb"
"Name of the Android Debug Bridge program."
:group 'tramp
:version "24.4"
- :type 'string)
+ :type 'string
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-adb-connect-if-not-connected nil
@@ -52,11 +49,12 @@
It is used for TCP/IP devices."
:group 'tramp
:version "25.1"
- :type 'boolean)
+ :type 'boolean
+ :require 'tramp)
;;;###tramp-autoload
(defconst tramp-adb-method "adb"
- "*When this method name is used, forward all calls to Android Debug Bridge.")
+ "When this method name is used, forward all calls to Android Debug Bridge.")
;;;###tramp-autoload
(defcustom tramp-adb-prompt
@@ -64,10 +62,12 @@ It is used for TCP/IP devices."
"Regexp used as prompt in almquist shell."
:type 'string
:version "24.4"
- :group 'tramp)
+ :group 'tramp
+ :require 'tramp)
(defconst tramp-adb-ls-date-regexp
- "[[:space:]][0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9][[:space:]][0-9][0-9]:[0-9][0-9][[:space:]]")
+ "[[:space:]][0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9][[:space:]][0-9][0-9]:[0-9][0-9][[:space:]]"
+ "Regexp for date format in ls output.")
(defconst tramp-adb-ls-toolbox-regexp
(concat
@@ -76,7 +76,8 @@ It is used for TCP/IP devices."
"[[:space:]]+\\([^[:space:]]+\\)" ; \3 group
"[[:space:]]+\\([[:digit:]]+\\)" ; \4 size
"[[:space:]]+\\([-[:digit:]]+[[:space:]][:[:digit:]]+\\)" ; \5 date
- "[[:space:]]\\(.*\\)$")) ; \6 filename
+ "[[:space:]]\\(.*\\)$") ; \6 filename
+ "Regexp for ls output.")
;;;###tramp-autoload
(add-to-list 'tramp-methods
@@ -109,7 +110,6 @@ It is used for TCP/IP devices."
(directory-files . tramp-handle-directory-files)
(directory-files-and-attributes
. tramp-adb-handle-directory-files-and-attributes)
- (dired-call-process . ignore)
(dired-compress-file . ignore)
(dired-uncache . tramp-handle-dired-uncache)
(expand-file-name . tramp-adb-handle-expand-file-name)
@@ -151,6 +151,7 @@ It is used for TCP/IP devices."
(make-auto-save-file-name . tramp-handle-make-auto-save-file-name)
(make-directory . tramp-adb-handle-make-directory)
(make-directory-internal . ignore)
+ (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
(make-symbolic-link . tramp-handle-make-symbolic-link)
(process-file . tramp-adb-handle-process-file)
(rename-file . tramp-adb-handle-rename-file)
@@ -162,7 +163,8 @@ It is used for TCP/IP devices."
(shell-command . tramp-adb-handle-shell-command)
(start-file-process . tramp-adb-handle-start-file-process)
(substitute-in-file-name . tramp-handle-substitute-in-file-name)
- (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
+ (temporary-file-directory . tramp-handle-temporary-file-directory)
+ (unhandled-file-name-directory . ignore)
(vc-registered . ignore)
(verify-visited-file-modtime . tramp-handle-verify-visited-file-modtime)
(write-region . tramp-adb-handle-write-region))
@@ -199,7 +201,7 @@ pass to the OPERATION."
tramp-current-host nil nil))
result)
(tramp-message v 6 "%s" (mapconcat 'identity (process-command p) " "))
- (tramp-compat-set-process-query-on-exit-flag p nil)
+ (set-process-query-on-exit-flag p nil)
(while (eq 'run (process-status p))
(accept-process-output p 0.1))
(accept-process-output p 0.1)
@@ -213,7 +215,7 @@ pass to the OPERATION."
(lambda (elt)
(setcar
(cdr elt)
- (tramp-compat-replace-regexp-in-string
+ (replace-regexp-in-string
":" tramp-prefix-port-format (car (cdr elt)))))
result)
result))))
@@ -233,12 +235,9 @@ pass to the OPERATION."
(unless (tramp-run-real-handler 'file-name-absolute-p (list localname))
(setq localname (concat "/" localname)))
;; Do normal `expand-file-name' (this does "/./" and "/../").
- ;; We bind `directory-sep-char' here for XEmacs on Windows,
- ;; which would otherwise use backslash. `default-directory' is
- ;; bound, because on Windows there would be problems with UNC
- ;; shares or Cygwin mounts.
- (let ((directory-sep-char ?/)
- (default-directory (tramp-compat-temporary-file-directory)))
+ ;; `default-directory' is bound, because on Windows there would
+ ;; be problems with UNC shares or Cygwin mounts.
+ (let ((default-directory (tramp-compat-temporary-file-directory)))
(tramp-make-tramp-file-name
method user host
(tramp-drop-volume-letter
@@ -261,8 +260,7 @@ pass to the OPERATION."
(with-tramp-file-property v localname "file-truename"
(let ((result nil)) ; result steps in reverse order
(tramp-message v 4 "Finding true name for `%s'" filename)
- (let* ((directory-sep-char ?/)
- (steps (tramp-compat-split-string localname "/"))
+ (let* ((steps (split-string localname "/" 'omit))
(localnamedir (tramp-run-real-handler
'file-name-as-directory (list localname)))
(is-dir (string= localname localnamedir))
@@ -312,8 +310,7 @@ pass to the OPERATION."
"Symlink target `%s' on wrong host" symlink-target))
(setq symlink-target localname))
(setq steps
- (append (tramp-compat-split-string
- symlink-target "/")
+ (append (split-string symlink-target "/" 'omit)
steps)))
(t
;; It's a file.
@@ -434,6 +431,7 @@ pass to the OPERATION."
result)))))))))
(defun tramp-adb-get-ls-command (vec)
+ "Determine `ls' command at its arguments."
(with-tramp-connection-property vec "ls"
(tramp-message vec 5 "Finding a suitable `ls' command")
(if (tramp-adb-send-command-and-check vec "ls --color=never -al /dev/null")
@@ -443,16 +441,14 @@ pass to the OPERATION."
"ls --color=never"
"ls")))
-(defun tramp-adb--gnu-switches-to-ash
- (switches)
+(defun tramp-adb--gnu-switches-to-ash (switches)
"Almquist shell can't handle multiple arguments.
Convert (\"-al\") to (\"-a\" \"-l\"). Remove arguments like \"--dired\"."
(split-string
(apply 'concat
(mapcar (lambda (s)
- (tramp-compat-replace-regexp-in-string
- "\\(.\\)" " -\\1"
- (tramp-compat-replace-regexp-in-string "^-" "" s)))
+ (replace-regexp-in-string
+ "\\(.\\)" " -\\1" (replace-regexp-in-string "^-" "" s)))
;; FIXME: Warning about removed switches (long and non-dash).
(delq nil
(mapcar
@@ -546,7 +542,7 @@ Emacs dired can't find files."
"Like `file-name-all-completions' for Tramp files."
(all-completions
filename
- (with-parsed-tramp-file-name directory nil
+ (with-parsed-tramp-file-name (expand-file-name directory) nil
(with-tramp-file-property v localname "file-name-all-completions"
(save-match-data
(tramp-adb-send-command
@@ -585,8 +581,7 @@ Emacs dired can't find files."
v 'file-error "Cannot make local copy of file `%s'" filename))
(set-file-modes
tmpfile
- (logior (or (file-modes filename) 0)
- (tramp-compat-octal-to-decimal "0400"))))
+ (logior (or (file-modes filename) 0) (string-to-number "0400" 8))))
tmpfile)))
(defun tramp-adb-handle-file-writable-p (filename)
@@ -631,8 +626,7 @@ But handle the case, if the \"test\" command is not available."
(copy-file filename tmpfile 'ok)
(set-file-modes
tmpfile
- (logior (or (file-modes tmpfile) 0)
- (tramp-compat-octal-to-decimal "0600"))))
+ (logior (or (file-modes tmpfile) 0) (string-to-number "0600" 8))))
(tramp-run-real-handler
'write-region
(list start end tmpfile append 'no-message lockname confirm))
@@ -657,8 +651,7 @@ But handle the case, if the \"test\" command is not available."
(with-parsed-tramp-file-name filename nil
(tramp-flush-file-property v (file-name-directory localname))
(tramp-flush-file-property v localname)
- (tramp-adb-send-command-and-check
- v (format "chmod %s %s" (tramp-compat-decimal-to-octal mode) localname))))
+ (tramp-adb-send-command-and-check v (format "chmod %o %s" mode localname))))
(defun tramp-adb-handle-set-file-times (filename &optional time)
"Like `set-file-times' for Tramp files."
@@ -676,7 +669,7 @@ But handle the case, if the \"test\" command is not available."
(defun tramp-adb-handle-copy-file
(filename newname &optional ok-if-already-exists keep-date
- _preserve-uid-gid _preserve-extended-attributes)
+ _preserve-uid-gid _preserve-extended-attributes)
"Like `copy-file' for Tramp files.
PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(setq filename (expand-file-name filename)
@@ -736,10 +729,8 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(if (and t1 t2
(tramp-equal-remote filename newname)
(not (file-directory-p filename)))
- (let ((l1 (tramp-file-name-handler
- 'file-remote-p filename 'localname))
- (l2 (tramp-file-name-handler
- 'file-remote-p newname 'localname)))
+ (let ((l1 (file-remote-p filename 'localname))
+ (l2 (file-remote-p newname 'localname)))
(when (and (not ok-if-already-exists)
(file-exists-p newname))
(tramp-error v 'file-already-exists newname))
@@ -755,7 +746,8 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
"Error renaming %s to %s" filename newname))
;; Rename by copy.
- (copy-file filename newname ok-if-already-exists t t)
+ (copy-file
+ filename newname ok-if-already-exists 'keep-time 'preserve-uid-gid)
(delete-file filename))))))
(defun tramp-adb-handle-process-file
@@ -856,12 +848,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
;; because the remote process could have changed them.
(when tmpinput (delete-file tmpinput))
- ;; `process-file-side-effects' has been introduced with GNU
- ;; Emacs 23.2. If set to nil, no remote file will be changed
- ;; by `program'. If it doesn't exist, we assume its default
- ;; value t.
- (unless (and (boundp 'process-file-side-effects)
- (not (symbol-value 'process-file-side-effects)))
+ (unless process-file-side-effects
(tramp-flush-directory-property v ""))
;; Return exit status.
@@ -941,9 +928,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(current-buffer))))
;; There's some output, display it.
(when (with-current-buffer output-buffer (> (point-max) (point-min)))
- (if (functionp 'display-message-or-buffer)
- (tramp-compat-funcall 'display-message-or-buffer output-buffer)
- (pop-to-buffer output-buffer))))))))
+ (display-message-or-buffer output-buffer)))))))
;; We use BUFFER also as connection buffer during setup. Because of
;; this, its original contents must be saved, and restored once
@@ -956,20 +941,22 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(unless (stringp program)
(tramp-error v 'file-error "PROGRAM must be a string"))
- (let ((command
- (format "cd %s; %s"
- (tramp-shell-quote-argument localname)
- (mapconcat 'tramp-shell-quote-argument
- (cons program args) " ")))
- (tramp-process-connection-type
- (or (null program) tramp-process-connection-type))
- (bmp (and (buffer-live-p buffer) (buffer-modified-p buffer)))
- (name1 name)
- (i 0))
-
- (unless buffer
- ;; BUFFER can be nil. We use a temporary buffer.
- (setq buffer (generate-new-buffer tramp-temp-buffer-name)))
+ (let* ((buffer
+ (if buffer
+ (get-buffer-create buffer)
+ ;; BUFFER can be nil. We use a temporary buffer.
+ (generate-new-buffer tramp-temp-buffer-name)))
+ (command
+ (format "cd %s; %s"
+ (tramp-shell-quote-argument localname)
+ (mapconcat 'tramp-shell-quote-argument
+ (cons program args) " ")))
+ (tramp-process-connection-type
+ (or (null program) tramp-process-connection-type))
+ (bmp (and (buffer-live-p buffer) (buffer-modified-p buffer)))
+ (name1 name)
+ (i 0))
+
(while (get-process name1)
;; NAME must be unique as process name.
(setq i (1+ i)
@@ -1008,7 +995,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
;; process. We ignore errors, because the process
;; could have finished already.
(ignore-errors
- (tramp-compat-set-process-query-on-exit-flag p t)
+ (set-process-query-on-exit-flag p t)
(set-marker (process-mark p) (point)))
;; Return process.
p))))
@@ -1035,7 +1022,7 @@ E.g. a host name \"192.168.1.1#5555\" returns \"192.168.1.1:5555\"
(host (tramp-file-name-host vec))
(port (tramp-file-name-port vec))
(devices (mapcar 'cadr (tramp-adb-parse-device-names nil))))
- (tramp-compat-replace-regexp-in-string
+ (replace-regexp-in-string
tramp-prefix-port-format ":"
(cond ((member host devices) host)
;; This is the case when the host is connected to the default port.
@@ -1051,7 +1038,7 @@ E.g. a host name \"192.168.1.1#5555\" returns \"192.168.1.1:5555\"
(not (zerop (length host)))
(not (tramp-adb-execute-adb-command
vec "connect"
- (tramp-compat-replace-regexp-in-string
+ (replace-regexp-in-string
tramp-prefix-port-format ":" host))))
;; When new device connected, running other adb command (e.g.
;; adb shell) immediately will fail. To get around this
@@ -1065,7 +1052,7 @@ E.g. a host name \"192.168.1.1#5555\" returns \"192.168.1.1:5555\"
"Returns nil on success error-output on failure."
(when (and (> (length (tramp-file-name-host vec)) 0)
;; The -s switch is only available for ADB device commands.
- (not (member (car args) (list "connect" "disconnect"))))
+ (not (member (car args) '("connect" "disconnect"))))
(setq args (append (list "-s" (tramp-adb-get-device vec)) args)))
(with-temp-buffer
(prog1
@@ -1102,8 +1089,7 @@ This happens for Android >= 4.0."
(while (re-search-forward "\r+$" nil t)
(replace-match "" nil nil)))))
-(defun tramp-adb-send-command-and-check
- (vec command)
+(defun tramp-adb-send-command-and-check (vec command)
"Run COMMAND and check its exit status.
Sends `echo $?' along with the COMMAND for checking the exit
status. If COMMAND is nil, just sends `echo $?'. Returns nil if
@@ -1205,7 +1191,7 @@ connection if a previous connection has died for some reason."
(unless (eq 'run (process-status p))
(tramp-error vec 'file-error "Terminated!"))
(tramp-set-connection-property p "vector" vec)
- (tramp-compat-set-process-query-on-exit-flag p nil)
+ (set-process-query-on-exit-flag p nil)
;; Check whether the properties have been changed. If
;; yes, this is a strong indication that we must expire all
@@ -1250,7 +1236,7 @@ connection if a previous connection has died for some reason."
;; Read the expression.
(goto-char (point-min))
(read (current-buffer)))
- ":" 'omit-nulls))
+ ":" 'omit))
;; Mark it as connected.
(tramp-set-connection-property p "connected" t)))))))
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el
index 26825ffa2d..76b49a09e3 100644
--- a/lisp/net/tramp-cache.el
+++ b/lisp/net/tramp-cache.el
@@ -72,31 +72,16 @@ details see the info pages."
:version "24.4"
:type '(repeat (list (choice :tag "File Name regexp" regexp (const nil))
(choice :tag " Property" string)
- (choice :tag " Value" sexp))))
+ (choice :tag " Value" sexp)))
+ :require 'tramp)
+;;;###tramp-autoload
(defcustom tramp-persistency-file-name
- (cond
- ;; GNU Emacs.
- ((and (fboundp 'locate-user-emacs-file))
- (expand-file-name (tramp-compat-funcall 'locate-user-emacs-file "tramp")))
- ((and (boundp 'user-emacs-directory)
- (stringp (symbol-value 'user-emacs-directory))
- (file-directory-p (symbol-value 'user-emacs-directory)))
- (expand-file-name "tramp" (symbol-value 'user-emacs-directory)))
- ((and (not (featurep 'xemacs)) (file-directory-p "~/.emacs.d/"))
- "~/.emacs.d/tramp")
- ;; XEmacs.
- ((and (boundp 'user-init-directory)
- (stringp (symbol-value 'user-init-directory))
- (file-directory-p (symbol-value 'user-init-directory)))
- (expand-file-name "tramp" (symbol-value 'user-init-directory)))
- ((and (featurep 'xemacs) (file-directory-p "~/.xemacs/"))
- "~/.xemacs/tramp")
- ;; For users without `~/.emacs.d/' or `~/.xemacs/'.
- (t "~/.tramp"))
+ (expand-file-name (locate-user-emacs-file "tramp"))
"File which keeps connection history for Tramp connections."
:group 'tramp
- :type 'file)
+ :type 'file
+ :require 'tramp)
(defvar tramp-cache-data-changed nil
"Whether persistent cache data have been changed.")
@@ -241,8 +226,10 @@ This is suppressed for temporary buffers."
;;;###tramp-autoload
(defun tramp-get-connection-property (key property default)
"Get the named PROPERTY for the connection.
-KEY identifies the connection, it is either a process or a vector.
-If the value is not set for the connection, returns DEFAULT."
+KEY identifies the connection, it is either a process or a
+vector. A special case is nil, which is used to cache connection
+properties of the local machine. If the value is not set for the
+connection, returns DEFAULT."
;; Unify key by removing localname and hop from vector. Work with a
;; copy in order to avoid side effects.
(when (vectorp key)
@@ -250,17 +237,24 @@ If the value is not set for the connection, returns DEFAULT."
(aset key 3 nil)
(aset key 4 nil))
(let* ((hash (tramp-get-hash-table key))
- (value (if (hash-table-p hash)
- (gethash property hash default)
- default)))
+ (value
+ ;; If the key is an auxiliary process object, check whether
+ ;; the process is still alive.
+ (if (and (processp key) (not (memq (process-status key) '(run open))))
+ default
+ (if (hash-table-p hash)
+ (gethash property hash default)
+ default))))
(tramp-message key 7 "%s %s" property value)
value))
;;;###tramp-autoload
(defun tramp-set-connection-property (key property value)
"Set the named PROPERTY of a connection to VALUE.
-KEY identifies the connection, it is either a process or a vector.
-PROPERTY is set persistent when KEY is a vector."
+KEY identifies the connection, it is either a process or a
+vector. A special case is nil, which is used to cache connection
+properties of the local machine. PROPERTY is set persistent when
+KEY is a vector."
;; Unify key by removing localname and hop from vector. Work with a
;; copy in order to avoid side effects.
(when (vectorp key)
@@ -276,13 +270,17 @@ PROPERTY is set persistent when KEY is a vector."
;;;###tramp-autoload
(defun tramp-connection-property-p (key property)
"Check whether named PROPERTY of a connection is defined.
-KEY identifies the connection, it is either a process or a vector."
+KEY identifies the connection, it is either a process or a
+vector. A special case is nil, which is used to cache connection
+properties of the local machine."
(not (eq (tramp-get-connection-property key property 'undef) 'undef)))
;;;###tramp-autoload
(defun tramp-flush-connection-property (key)
"Remove all properties identified by KEY.
-KEY identifies the connection, it is either a process or a vector."
+KEY identifies the connection, it is either a process or a
+vector. A special case is nil, which is used to cache connection
+properties of the local machine."
;; Unify key by removing localname and hop from vector. Work with a
;; copy in order to avoid side effects.
(when (vectorp key)
@@ -307,19 +305,14 @@ KEY identifies the connection, it is either a process or a vector."
(maphash
(lambda (key value)
;; Remove text properties from KEY and VALUE.
- ;; `substring-no-properties' does not exist in XEmacs.
- (when (functionp 'substring-no-properties)
- (when (vectorp key)
- (dotimes (i (length key))
- (when (stringp (aref key i))
- (aset key i
- (tramp-compat-funcall
- 'substring-no-properties (aref key i))))))
- (when (stringp key)
- (setq key (tramp-compat-funcall 'substring-no-properties key)))
- (when (stringp value)
- (setq value
- (tramp-compat-funcall 'substring-no-properties value))))
+ (when (vectorp key)
+ (dotimes (i (length key))
+ (when (stringp (aref key i))
+ (aset key i (substring-no-properties (aref key i))))))
+ (when (stringp key)
+ (setq key (substring-no-properties key)))
+ (when (stringp value)
+ (setq value (substring-no-properties value)))
;; Dump.
(let ((tmp (format
"(%s %s)"
@@ -418,8 +411,8 @@ for all methods. Resulting data are derived from connection history."
;; When "emacs -Q" has been called, both variables are nil.
;; We do not load the persistency file then, in order to
;; have a clean test environment.
- (or (and (boundp 'init-file-user) (symbol-value 'init-file-user))
- (and (boundp 'site-run-file) (symbol-value 'site-run-file))))
+ (or init-file-user
+ site-run-file))
(condition-case err
(with-temp-buffer
(insert-file-contents tramp-persistency-file-name)
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index e7901bb786..45f30042ad 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -31,6 +31,9 @@
(require 'tramp)
;; Pacify byte-compiler.
+(declare-function mml-mode "mml")
+(declare-function mml-insert-empty-tag "mml")
+(declare-function reporter-dump-variable "reporter")
(defvar reporter-eval-buffer)
(defvar reporter-prompt-for-summary-p)
@@ -128,7 +131,7 @@ This includes password cache, file cache, connection cache, buffers."
(setq tramp-locked nil)
;; Flush password cache.
- (tramp-compat-funcall 'password-reset)
+ (password-reset)
;; Flush file and connection cache.
(clrhash tramp-cache-data)
@@ -142,7 +145,7 @@ This includes password cache, file cache, connection cache, buffers."
"Kill all remote buffers."
(interactive)
- ;; Remove all Tramp related buffers.
+ ;; Remove all Tramp related connections.
(tramp-cleanup-all-connections)
;; Remove all buffers with a remote default-directory.
@@ -166,7 +169,6 @@ This includes password cache, file cache, connection cache, buffers."
(defun tramp-bug ()
"Submit a bug report to the Tramp developers."
(interactive)
- (require 'reporter)
(catch 'dont-send
(let ((reporter-prompt-for-summary-p t))
(reporter-submit-bug-report
@@ -185,7 +187,6 @@ This includes password cache, file cache, connection cache, buffers."
backup-by-copying-when-mismatch
backup-by-copying-when-privileged-mismatch
backup-directory-alist
- bkup-backup-directory-info
password-cache
password-cache-expiry
remote-file-name-inhibit-cache
@@ -194,8 +195,7 @@ This includes password cache, file cache, connection cache, buffers."
'tramp-load-report-modules ; pre-hook
'tramp-append-tramp-buffers ; post-hook
- (tramp-compat-funcall
- (if (functionp 'propertize) 'propertize 'progn)
+ (propertize
"\n" 'display "\
Enter your bug report in this message, including as much detail
as you possibly can about the problem, what you did to cause it
@@ -243,7 +243,7 @@ buffer in your bug report.
(base64-encode-string (encode-coding-string val 'raw-text)))))))
;; Dump variable.
- (tramp-compat-funcall 'reporter-dump-variable varsym mailbuf)
+ (reporter-dump-variable varsym mailbuf)
(unless (hash-table-p val)
;; Remove string quotation.
@@ -264,15 +264,8 @@ buffer in your bug report.
(defun tramp-load-report-modules ()
"Load needed modules for reporting."
- ;; We load message.el and mml.el from Gnus.
- (if (featurep 'xemacs)
- (progn
- (load "message" 'noerror)
- (load "mml" 'noerror))
- (require 'message nil 'noerror)
- (require 'mml nil 'noerror))
- (tramp-compat-funcall 'message-mode)
- (tramp-compat-funcall 'mml-mode t))
+ (message-mode)
+ (mml-mode t))
(defun tramp-append-tramp-buffers ()
"Append Tramp buffers and buffer local variables into the bug report."
@@ -303,7 +296,7 @@ buffer in your bug report.
;; Non-tramp variables of interest.
'(default-directory))
'string<))
- (tramp-compat-funcall 'reporter-dump-variable varsym elbuf))
+ (reporter-dump-variable varsym elbuf))
(lisp-indent-line)
(insert ")\n"))
(insert-buffer-substring elbuf)))
@@ -313,7 +306,7 @@ buffer in your bug report.
(ignore-errors
(mapc
(lambda (x) (when (string-match "tramp" x) (insert x "\n")))
- (split-string (tramp-compat-funcall 'list-load-path-shadows t) "\n")))
+ (split-string (list-load-path-shadows t) "\n")))
;; Append buffers only when we are in message mode.
(when (and
@@ -322,7 +315,7 @@ buffer in your bug report.
(symbol-value 'mml-mode))
(let ((tramp-buf-regexp "\\*\\(debug \\)?tramp/")
- (buffer-list (tramp-compat-funcall 'tramp-list-tramp-buffers))
+ (buffer-list (tramp-list-tramp-buffers))
(curbuf (current-buffer)))
;; There is at least one Tramp buffer.
@@ -352,7 +345,7 @@ names. Passwords will never be included there.")
Please note that you have set `tramp-verbose' to a value of at
least 6. Therefore, the contents of files might be included in
the debug buffer(s).")
- (add-text-properties start (point) (list 'face 'italic))))
+ (add-text-properties start (point) '(face italic))))
(set-buffer-modified-p nil)
(setq buffer-read-only t)
@@ -364,13 +357,13 @@ the debug buffer(s).")
(kill-buffer nil)
(switch-to-buffer curbuf)
(goto-char (point-max))
- (insert (tramp-compat-funcall 'propertize "\n" 'display "\n\
+ (insert (propertize "\n" 'display "\n\
This is a special notion of the `gnus/message' package. If you
use another mail agent (by copying the contents of this buffer)
please ensure that the buffers are attached to your email.\n\n"))
(dolist (buffer buffer-list)
- (tramp-compat-funcall
- 'mml-insert-empty-tag 'part 'type "text/plain"
+ (mml-insert-empty-tag
+ 'part 'type "text/plain"
'encoding "base64" 'disposition "attachment" 'buffer buffer
'description buffer))
(set-buffer-modified-p nil))
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index 44923aee89..b2f9101658 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -23,9 +23,8 @@
;;; Commentary:
-;; Tramp's main Emacs version for development is Emacs 24. This
-;; package provides compatibility functions for Emacs 22, Emacs 23,
-;; XEmacs 21.4+ and SXEmacs 22.
+;; Tramp's main Emacs version for development is Emacs 25. This
+;; package provides compatibility functions for Emacs 23 and Emacs 24.
;;; Code:
@@ -33,164 +32,58 @@
(eval-when-compile
(require 'cl))
-(eval-and-compile
-
- ;; GNU Emacs 22.
- (unless (fboundp 'ignore-errors)
- (load "cl" 'noerror)
- (load "cl-macs" 'noerror))
-
- ;; Some packages must be required for XEmacs, because we compile
- ;; with -no-autoloads.
- (when (featurep 'xemacs)
- (require 'cus-edit)
- (require 'env)
- (require 'executable)
- (require 'outline)
- (require 'passwd)
- (require 'pp)
- (require 'regexp-opt)
- (require 'time-date))
-
- (require 'advice)
- (require 'custom)
- (require 'format-spec)
- (require 'shell)
- ;; Introduced in Emacs 23.2.
- (require 'ucs-normalize nil 'noerror)
-
- (require 'trampver)
- (require 'tramp-loaddefs)
-
- ;; As long as password.el is not part of (X)Emacs, it shouldn't be
- ;; mandatory.
- (if (featurep 'xemacs)
- (load "password" 'noerror)
- (or (require 'password-cache nil 'noerror)
- (require 'password nil 'noerror))) ; Part of contrib.
-
- ;; auth-source is relatively new.
- (if (featurep 'xemacs)
- (load "auth-source" 'noerror)
- (require 'auth-source nil 'noerror))
-
- ;; Load the appropriate timer package.
- (if (featurep 'xemacs)
- (require 'timer-funcs)
- (require 'timer))
-
- ;; Avoid byte-compiler warnings if the byte-compiler supports this.
- ;; Currently, XEmacs supports this.
- (when (featurep 'xemacs)
- (unless (boundp 'byte-compile-default-warnings)
- (defvar byte-compile-default-warnings nil))
- (delq 'unused-vars byte-compile-default-warnings))
-
- ;; `last-coding-system-used' is unknown in XEmacs.
- (unless (boundp 'last-coding-system-used)
- (defvar last-coding-system-used nil))
-
- ;; `directory-sep-char' is an obsolete variable in Emacs. But it is
- ;; used in XEmacs, so we set it here and there. The following is
- ;; needed to pacify Emacs byte-compiler.
- ;; Note that it was removed altogether in Emacs 24.1.
- (when (boundp 'directory-sep-char)
- (defvar byte-compile-not-obsolete-var nil)
- (setq byte-compile-not-obsolete-var 'directory-sep-char)
- ;; Emacs 23.2.
- (defvar byte-compile-not-obsolete-vars nil)
- (setq byte-compile-not-obsolete-vars '(directory-sep-char)))
-
- ;; `remote-file-name-inhibit-cache' has been introduced with Emacs 24.1.
- ;; Besides t, nil, and integer, we use also timestamps (as
- ;; returned by `current-time') internally.
- (unless (boundp 'remote-file-name-inhibit-cache)
- (defvar remote-file-name-inhibit-cache nil))
-
- ;; For not existing functions, or functions with a changed argument
- ;; list, there are compiler warnings. We want to avoid them in
- ;; cases we know what we do.
- (defmacro tramp-compat-funcall (function &rest arguments)
- (if (featurep 'xemacs)
- `(funcall (symbol-function ,function) ,@arguments)
- `(when (or (subrp ,function) (functionp ,function))
- (with-no-warnings (funcall ,function ,@arguments)))))
-
- ;; `set-buffer-multibyte' comes from Emacs Leim.
- (unless (fboundp 'set-buffer-multibyte)
- (defalias 'set-buffer-multibyte 'ignore))
-
- ;; The following functions cannot be aliases of the corresponding
- ;; `tramp-handle-*' functions, because this would bypass the locking
- ;; mechanism.
-
- ;; `process-file' does not exist in XEmacs.
- (unless (fboundp 'process-file)
- (defalias 'process-file
- (lambda (program &optional infile buffer display &rest args)
- (when (tramp-tramp-file-p default-directory)
- (apply
- 'tramp-file-name-handler
- 'process-file program infile buffer display args)))))
-
- ;; `start-file-process' is new in Emacs 23.
- (unless (fboundp 'start-file-process)
- (defalias 'start-file-process
- (lambda (name buffer program &rest program-args)
- (when (tramp-tramp-file-p default-directory)
- (apply
- 'tramp-file-name-handler
- 'start-file-process name buffer program program-args)))))
-
- ;; `set-file-times' is also new in Emacs 23.
- (unless (fboundp 'set-file-times)
- (defalias 'set-file-times
- (lambda (filename &optional time)
- (when (tramp-tramp-file-p filename)
- (tramp-compat-funcall
- 'tramp-file-name-handler 'set-file-times filename time)))))
-
- ;; We currently use "[" and "]" in the filename format for IPv6
- ;; hosts of GNU Emacs. This means that Emacs wants to expand
- ;; wildcards if `find-file-wildcards' is non-nil, and then barfs
- ;; because no expansion could be found. We detect this situation
- ;; and do something really awful: we have `file-expand-wildcards'
- ;; return the original filename if it can't expand anything. Let's
- ;; just hope that this doesn't break anything else.
- ;; It is not needed anymore since GNU Emacs 23.2.
- (unless (or (featurep 'xemacs)
- ;; `featurep' has only one argument in XEmacs.
- (funcall 'featurep 'files 'remote-wildcards))
- (defadvice file-expand-wildcards
+(require 'auth-source)
+(require 'advice)
+(require 'custom)
+(require 'format-spec)
+(require 'password-cache)
+(require 'shell)
+(require 'timer)
+(require 'ucs-normalize)
+
+(require 'trampver)
+(require 'tramp-loaddefs)
+
+;; `remote-file-name-inhibit-cache' has been introduced with Emacs
+;; 24.1. Besides t, nil, and integer, we use also timestamps (as
+;; returned by `current-time') internally.
+(unless (boundp 'remote-file-name-inhibit-cache)
+ (defvar remote-file-name-inhibit-cache nil))
+
+;; For not existing functions, obsolete functions, or functions with a
+;; changed argument list, there are compiler warnings. We want to
+;; avoid them in cases we know what we do.
+(defmacro tramp-compat-funcall (function &rest arguments)
+ "Call FUNCTION if it exists. Do not raise compiler warnings."
+ `(when (or (subrp ,function) (functionp ,function))
+ (with-no-warnings (funcall ,function ,@arguments))))
+
+;; We currently use "[" and "]" in the filename format for IPv6 hosts
+;; of GNU Emacs. This means that Emacs wants to expand wildcards if
+;; `find-file-wildcards' is non-nil, and then barfs because no
+;; expansion could be found. We detect this situation and do
+;; something really awful: we have `file-expand-wildcards' return the
+;; original filename if it can't expand anything. Let's just hope
+;; that this doesn't break anything else. It is not needed anymore
+;; since GNU Emacs 23.2.
+(unless (featurep 'files 'remote-wildcards)
+ (defadvice file-expand-wildcards
(around tramp-advice-file-expand-wildcards activate)
- (let ((name (ad-get-arg 0)))
- ;; If it's a Tramp file, look if wildcards need to be expanded
- ;; at all.
- (if (and
- (tramp-tramp-file-p name)
- (not (string-match
- "[[*?]" (tramp-compat-funcall
- 'file-remote-p name 'localname))))
- (setq ad-return-value (list name))
- ;; Otherwise, just run the original function.
- ad-do-it)))
- (add-hook
- 'tramp-unload-hook
- (lambda ()
- (ad-remove-advice
- 'file-expand-wildcards 'around 'tramp-advice-file-expand-wildcards)
- (ad-activate 'file-expand-wildcards))))
-
- ;; `redisplay' does not exist in XEmacs.
- (unless (fboundp 'redisplay)
- (defalias 'redisplay 'ignore)))
-
-;; `with-temp-message' does not exist in XEmacs.
-(if (fboundp 'with-temp-message)
- (defalias 'tramp-compat-with-temp-message 'with-temp-message)
- (defmacro tramp-compat-with-temp-message (_message &rest body)
- "Display MESSAGE temporarily if non-nil while BODY is evaluated."
- `(progn ,@body)))
+ (let ((name (ad-get-arg 0)))
+ ;; If it's a Tramp file, look if wildcards need to be expanded
+ ;; at all.
+ (if (and
+ (tramp-tramp-file-p name)
+ (not (string-match "[[*?]" (file-remote-p name 'localname))))
+ (setq ad-return-value (list name))
+ ;; Otherwise, just run the original function.
+ ad-do-it)))
+ (add-hook
+ 'tramp-unload-hook
+ (lambda ()
+ (ad-remove-advice
+ 'file-expand-wildcards 'around 'tramp-advice-file-expand-wildcards)
+ (ad-activate 'file-expand-wildcards))))
;; `condition-case-unless-debug' is introduced with Emacs 24.
(if (fboundp 'condition-case-unless-debug)
@@ -208,110 +101,34 @@
(funcall ,bodysym)
,@handlers))))))
-;; `font-lock-add-keywords' does not exist in XEmacs.
-(defun tramp-compat-font-lock-add-keywords (mode keywords &optional how)
- "Add highlighting KEYWORDS for MODE."
- (ignore-errors
- (tramp-compat-funcall 'font-lock-add-keywords mode keywords how)))
-
(defsubst tramp-compat-temporary-file-directory ()
- "Return name of directory for temporary files (compat function).
-For Emacs, this is the variable `temporary-file-directory', for XEmacs
-this is the function `temp-directory'."
- (let (file-name-handler-alist)
- ;; We must return a local directory. If it is remote, we could
- ;; run into an infloop.
- (cond
- ((and (boundp 'temporary-file-directory)
- (eval (car (get 'temporary-file-directory 'standard-value)))))
- ((fboundp 'temp-directory) (tramp-compat-funcall 'temp-directory))
- ((let ((d (getenv "TEMP"))) (and d (file-directory-p d)))
- (file-name-as-directory (getenv "TEMP")))
- ((let ((d (getenv "TMP"))) (and d (file-directory-p d)))
- (file-name-as-directory (getenv "TMP")))
- ((let ((d (getenv "TMPDIR"))) (and d (file-directory-p d)))
- (file-name-as-directory (getenv "TMPDIR")))
- ((file-exists-p "c:/temp") (file-name-as-directory "c:/temp"))
- (t (message (concat "Neither `temporary-file-directory' nor "
- "`temp-directory' is defined -- using /tmp."))
- (file-name-as-directory "/tmp")))))
-
-;; `make-temp-file' exists in Emacs only. On XEmacs, we use our own
-;; implementation with `make-temp-name', creating the temporary file
-;; immediately in order to avoid a security hole.
+ "Return name of directory for temporary files.
+It is the default value of `temporary-file-directory'."
+ ;; We must return a local directory. If it is remote, we could run
+ ;; into an infloop.
+ (eval (car (get 'temporary-file-directory 'standard-value))))
+
(defsubst tramp-compat-make-temp-file (f &optional dir-flag)
- "Create a temporary file (compat function).
+ "Create a local temporary file (compat function).
Add the extension of F, if existing."
(let* (file-name-handler-alist
(prefix (expand-file-name
(symbol-value 'tramp-temp-name-prefix)
(tramp-compat-temporary-file-directory)))
- (extension (file-name-extension f t))
- result)
- (condition-case nil
- (setq result
- (tramp-compat-funcall 'make-temp-file prefix dir-flag extension))
- (error
- ;; We use our own implementation, taken from files.el.
- (while
- (condition-case ()
- (progn
- (setq result (concat (make-temp-name prefix) extension))
- (if dir-flag
- (make-directory result)
- (write-region "" nil result nil 'silent))
- nil)
- (file-already-exists t))
- ;; The file was somehow created by someone else between
- ;; `make-temp-name' and `write-region', let's try again.
- nil)))
- result))
-
-;; `most-positive-fixnum' does not exist in XEmacs.
-(defsubst tramp-compat-most-positive-fixnum ()
- "Return largest positive integer value (compat function)."
- (cond
- ((boundp 'most-positive-fixnum) (symbol-value 'most-positive-fixnum))
- ;; Default value in XEmacs.
- (t 134217727)))
-
-(defun tramp-compat-decimal-to-octal (i)
- "Return a string consisting of the octal digits of I.
-Not actually used. Use `(format \"%o\" i)' instead?"
- (cond ((< i 0) (error "Cannot convert negative number to octal"))
- ((not (integerp i)) (error "Cannot convert non-integer to octal"))
- ((zerop i) "0")
- (t (concat (tramp-compat-decimal-to-octal (/ i 8))
- (number-to-string (% i 8))))))
-
-;; Kudos to Gerd Moellmann for this suggestion.
-(defun tramp-compat-octal-to-decimal (ostr)
- "Given a string of octal digits, return a decimal number."
- (let ((x (or ostr "")))
- ;; `save-match' is in `tramp-mode-string-to-int' which calls this.
- (unless (string-match "\\`[0-7]*\\'" x)
- (error "Non-octal junk in string `%s'" x))
- (string-to-number ostr 8)))
-
-;; ID-FORMAT does not exist in XEmacs.
-(defun tramp-compat-file-attributes (filename &optional id-format)
- "Like `file-attributes' for Tramp files (compat function)."
- (cond
- ((or (null id-format) (eq id-format 'integer))
- (file-attributes filename))
- ((tramp-tramp-file-p filename)
- (tramp-compat-funcall
- 'tramp-file-name-handler 'file-attributes filename id-format))
- (t (condition-case nil
- (tramp-compat-funcall 'file-attributes filename id-format)
- (wrong-number-of-arguments (file-attributes filename))))))
-
-;; PRESERVE-UID-GID does not exist in XEmacs.
+ (extension (file-name-extension f t)))
+ (make-temp-file prefix dir-flag extension)))
+
+;; `temporary-file-directory' as function is introduced with Emacs 25.2.
+(defalias 'tramp-compat-temporary-file-directory-function
+ (if (fboundp 'temporary-file-directory)
+ 'temporary-file-directory
+ 'tramp-handle-temporary-file-directory))
+
;; PRESERVE-EXTENDED-ATTRIBUTES has been introduced with Emacs 24.1
;; (as PRESERVE-SELINUX-CONTEXT), and renamed in Emacs 24.3.
(defun tramp-compat-copy-file
(filename newname &optional ok-if-already-exists keep-date
- preserve-uid-gid preserve-extended-attributes)
+ preserve-uid-gid preserve-extended-attributes)
"Like `copy-file' for Tramp files (compat function)."
(cond
(preserve-extended-attributes
@@ -320,21 +137,13 @@ Not actually used. Use `(format \"%o\" i)' instead?"
'copy-file filename newname ok-if-already-exists keep-date
preserve-uid-gid preserve-extended-attributes)
(wrong-number-of-arguments
- (tramp-compat-copy-file
+ (copy-file
filename newname ok-if-already-exists keep-date preserve-uid-gid))))
- (preserve-uid-gid
- (condition-case nil
- (tramp-compat-funcall
- 'copy-file filename newname ok-if-already-exists keep-date
- preserve-uid-gid)
- (wrong-number-of-arguments
- (tramp-compat-copy-file
- filename newname ok-if-already-exists keep-date))))
(t
- (copy-file filename newname ok-if-already-exists keep-date))))
+ (copy-file
+ filename newname ok-if-already-exists keep-date preserve-uid-gid))))
-;; `copy-directory' is a new function in Emacs 23.2. Implementation
-;; is taken from there.
+;; COPY-CONTENTS has been introduced with Emacs 24.1.
(defun tramp-compat-copy-directory
(directory newname &optional keep-time parents copy-contents)
"Make a copy of DIRECTORY (compat function)."
@@ -372,8 +181,7 @@ Not actually used. Use `(format \"%o\" i)' instead?"
(tramp-compat-copy-directory file newname keep-time parents)
(copy-file file newname t keep-time)))
;; We do not want to delete "." and "..".
- (directory-files
- directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))
+ (directory-files directory 'full directory-files-no-dot-files-regexp))
;; Set directory attributes.
(set-file-modes newname (file-modes directory))
@@ -401,59 +209,21 @@ Not actually used. Use `(format \"%o\" i)' instead?"
(cond
(trash
(tramp-compat-funcall 'delete-directory directory recursive trash))
- (recursive
- (tramp-compat-funcall 'delete-directory directory recursive))
(t
- (delete-directory directory)))
- ;; This Emacs version does not support the RECURSIVE or TRASH flag. We
- ;; use the implementation from Emacs 23.2.
+ (delete-directory directory recursive)))
+ ;; This Emacs version does not support the TRASH flag. We use the
+ ;; implementation from Emacs 23.2.
(wrong-number-of-arguments
(setq directory (directory-file-name (expand-file-name directory)))
- (if (not (file-symlink-p directory))
- (mapc (lambda (file)
- (if (eq t (car (file-attributes file)))
- (tramp-compat-delete-directory file recursive trash)
- (tramp-compat-delete-file file trash)))
- (directory-files
- directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")))
+ (when (not (file-symlink-p directory))
+ (mapc (lambda (file)
+ (if (eq t (car (file-attributes file)))
+ (tramp-compat-delete-directory file recursive trash)
+ (tramp-compat-delete-file file trash)))
+ (directory-files
+ directory 'full directory-files-no-dot-files-regexp)))
(delete-directory directory))))
-;; MUST-SUFFIX doesn't exist on XEmacs.
-(defun tramp-compat-load (file &optional noerror nomessage nosuffix must-suffix)
- "Like `load' for Tramp files (compat function)."
- (if must-suffix
- (tramp-compat-funcall 'load file noerror nomessage nosuffix must-suffix)
- (load file noerror nomessage nosuffix)))
-
-;; `number-sequence' does not exist in XEmacs. Implementation is
-;; taken from Emacs 23.
-(defun tramp-compat-number-sequence (from &optional to inc)
- "Return a sequence of numbers from FROM to TO as a list (compat function)."
- (if (or (subrp 'number-sequence) (symbol-file 'number-sequence))
- (tramp-compat-funcall 'number-sequence from to inc)
- (if (or (not to) (= from to))
- (list from)
- (or inc (setq inc 1))
- (when (zerop inc) (error "The increment can not be zero"))
- (let (seq (n 0) (next from))
- (if (> inc 0)
- (while (<= next to)
- (setq seq (cons next seq)
- n (1+ n)
- next (+ from (* n inc))))
- (while (>= next to)
- (setq seq (cons next seq)
- n (1+ n)
- next (+ from (* n inc)))))
- (nreverse seq)))))
-
-(defun tramp-compat-split-string (string pattern)
- "Like `split-string' but omit empty strings.
-In Emacs, (split-string \"/foo/bar\" \"/\") returns (\"foo\" \"bar\").
-This is, the first, empty, element is omitted. In XEmacs, the first
-element is not omitted."
- (delete "" (split-string string pattern)))
-
(defun tramp-compat-process-running-p (process-name)
"Returns t if system process PROCESS-NAME is running for `user-login-name'."
(when (stringp process-name)
@@ -466,7 +236,7 @@ element is not omitted."
((and (fboundp 'list-system-processes) (fboundp 'process-attributes))
(let (result)
(dolist (pid (tramp-compat-funcall 'list-system-processes) result)
- (let ((attributes (tramp-compat-funcall 'process-attributes pid)))
+ (let ((attributes (process-attributes pid)))
(when (and (string-equal
(cdr (assoc 'user attributes)) (user-login-name))
(let ((comm (cdr (assoc 'comm attributes))))
@@ -476,135 +246,16 @@ element is not omitted."
(and comm (string-match
(concat "^" (regexp-quote comm))
process-name))))
- (setq result t))))))
-
- ;; Fallback, if there is no Lisp support yet.
- (t (let ((default-directory
- (if (tramp-tramp-file-p default-directory)
- (tramp-compat-temporary-file-directory)
- default-directory))
- (unix95 (getenv "UNIX95"))
- result)
- (setenv "UNIX95" "1")
- (when (member
- (user-login-name)
- (tramp-compat-split-string
- (shell-command-to-string
- (format "ps -C %s -o user=" process-name))
- "[ \f\t\n\r\v]+"))
- (setq result t))
- (setenv "UNIX95" unix95)
- result)))))
-
-;; The following functions do not exist in XEmacs. We ignore this;
-;; they are used for checking a remote tty.
-(defun tramp-compat-process-get (process propname)
- "Return the value of PROCESS' PROPNAME property.
-This is the last value stored with `(process-put PROCESS PROPNAME VALUE)'."
- (ignore-errors (tramp-compat-funcall 'process-get process propname)))
-
-(defun tramp-compat-process-put (process propname value)
- "Change PROCESS' PROPNAME property to VALUE.
-It can be retrieved with `(process-get PROCESS PROPNAME)'."
- (ignore-errors (tramp-compat-funcall 'process-put process propname value)))
-
-(defun tramp-compat-set-process-query-on-exit-flag (process flag)
- "Specify if query is needed for process when Emacs is exited.
-If the second argument flag is non-nil, Emacs will query the user before
-exiting if process is running."
- (if (fboundp 'set-process-query-on-exit-flag)
- (tramp-compat-funcall 'set-process-query-on-exit-flag process flag)
- (tramp-compat-funcall 'process-kill-without-query process flag)))
-
-;; There exist different implementations for this function.
-(defun tramp-compat-coding-system-change-eol-conversion (coding-system eol-type)
- "Return a coding system like CODING-SYSTEM but with given EOL-TYPE.
-EOL-TYPE can be one of `dos', `unix', or `mac'."
- (cond ((fboundp 'coding-system-change-eol-conversion)
- (tramp-compat-funcall
- 'coding-system-change-eol-conversion coding-system eol-type))
- ((fboundp 'subsidiary-coding-system)
- (tramp-compat-funcall
- 'subsidiary-coding-system coding-system
- (cond ((eq eol-type 'dos) 'crlf)
- ((eq eol-type 'unix) 'lf)
- ((eq eol-type 'mac) 'cr)
- (t (error
- "Unknown EOL-TYPE `%s', must be `dos', `unix', or `mac'"
- eol-type)))))
- (t (error "Can't change EOL conversion -- is MULE missing?"))))
-
-;; `replace-regexp-in-string' does not exist in XEmacs.
-;; Implementation is taken from Emacs 24.
-(if (fboundp 'replace-regexp-in-string)
- (defalias 'tramp-compat-replace-regexp-in-string 'replace-regexp-in-string)
- (defun tramp-compat-replace-regexp-in-string
- (regexp rep string &optional fixedcase literal subexp start)
- "Replace all matches for REGEXP with REP in STRING.
-
-Return a new string containing the replacements.
-
-Optional arguments FIXEDCASE, LITERAL and SUBEXP are like the
-arguments with the same names of function `replace-match'. If START
-is non-nil, start replacements at that index in STRING.
-
-REP is either a string used as the NEWTEXT arg of `replace-match' or a
-function. If it is a function, it is called with the actual text of each
-match, and its value is used as the replacement text. When REP is called,
-the match data are the result of matching REGEXP against a substring
-of STRING.
-
-To replace only the first match (if any), make REGEXP match up to \\'
-and replace a sub-expression, e.g.
- (replace-regexp-in-string \"\\\\(foo\\\\).*\\\\'\" \"bar\" \" foo foo\" nil nil 1)
- => \" bar foo\""
-
- (let ((l (length string))
- (start (or start 0))
- matches str mb me)
- (save-match-data
- (while (and (< start l) (string-match regexp string start))
- (setq mb (match-beginning 0)
- me (match-end 0))
- ;; If we matched the empty string, make sure we advance by one char
- (when (= me mb) (setq me (min l (1+ mb))))
- ;; Generate a replacement for the matched substring.
- ;; Operate only on the substring to minimize string consing.
- ;; Set up match data for the substring for replacement;
- ;; presumably this is likely to be faster than munging the
- ;; match data directly in Lisp.
- (string-match regexp (setq str (substring string mb me)))
- (setq matches
- (cons (replace-match (if (stringp rep)
- rep
- (funcall rep (match-string 0 str)))
- fixedcase literal str subexp)
- (cons (substring string start mb) ; unmatched prefix
- matches)))
- (setq start me))
- ;; Reconstruct a string from the pieces.
- (setq matches (cons (substring string start l) matches)) ; leftover
- (apply #'concat (nreverse matches))))))
+ (setq result t)))))))))
;; `default-toplevel-value' has been declared in Emacs 24.
(unless (fboundp 'default-toplevel-value)
(defalias 'default-toplevel-value 'symbol-value))
-;; `format-message' is new in Emacs 25, and does not exist in XEmacs.
+;; `format-message' is new in Emacs 25.
(unless (fboundp 'format-message)
(defalias 'format-message 'format))
-;; `delete-dups' does not exist in XEmacs 21.4.
-(if (fboundp 'delete-dups)
- (defalias 'tramp-compat-delete-dups 'delete-dups)
- (defun tramp-compat-delete-dups (list)
- "Destructively remove `equal' duplicates from LIST.
-Store the result in LIST and return it. LIST must be a proper list.
-Of several `equal' occurrences of an element in LIST, the first
-one is kept."
- (tramp-compat-funcall
- 'cl-delete-duplicates list '(:test equal :from-end) nil)))
-
(add-hook 'tramp-unload-hook
(lambda ()
(unload-feature 'tramp-loaddefs 'force)
diff --git a/lisp/net/tramp-ftp.el b/lisp/net/tramp-ftp.el
index 902b0a4ed8..20a12eb693 100644
--- a/lisp/net/tramp-ftp.el
+++ b/lisp/net/tramp-ftp.el
@@ -39,15 +39,6 @@
(defvar ange-ftp-name-format)
;; Disable Ange-FTP from file-name-handler-alist.
-;; To handle EFS, the following functions need to be dealt with:
-;;
-;; * dired-before-readin-hook contains efs-dired-before-readin
-;; * file-name-handler-alist contains efs-file-handler-function
-;; and efs-root-handler-function and efs-sifn-handler-function
-;; * find-file-hooks contains efs-set-buffer-mode
-;;
-;; But it won't happen for EFS since the XEmacs maintainers
-;; don't want to use a unified filename syntax.
(defun tramp-disable-ange-ftp ()
"Turn Ange-FTP off.
This is useful for unified remoting. See
@@ -69,6 +60,7 @@ present for backward compatibility."
;;;###autoload
(defun tramp-ftp-enable-ange-ftp ()
+ "Reenable Ange-FTP, when Tramp is unloaded."
;; The following code is commented out in Ange-FTP.
;;; This regexp takes care of real ange-ftp file names (with a slash
@@ -104,14 +96,15 @@ present for backward compatibility."
;; ... and add it to the method list.
;;;###tramp-autoload
-(unless (featurep 'xemacs)
- (add-to-list 'tramp-methods (cons tramp-ftp-method nil))
+(add-to-list 'tramp-methods (cons tramp-ftp-method nil))
- ;; Add some defaults for `tramp-default-method-alist'.
- (add-to-list 'tramp-default-method-alist
- (list "\\`ftp\\." nil tramp-ftp-method))
- (add-to-list 'tramp-default-method-alist
- (list nil "\\`\\(anonymous\\|ftp\\)\\'" tramp-ftp-method)))
+;; Add some defaults for `tramp-default-method-alist'.
+;;;###tramp-autoload
+(add-to-list 'tramp-default-method-alist
+ (list "\\`ftp\\." nil tramp-ftp-method))
+;;;###tramp-autoload
+(add-to-list 'tramp-default-method-alist
+ (list nil "\\`\\(anonymous\\|ftp\\)\\'" tramp-ftp-method))
;; Add completion function for FTP method.
;;;###tramp-autoload
@@ -195,9 +188,8 @@ pass to the OPERATION."
tramp-ftp-method))
;;;###tramp-autoload
-(unless (featurep 'xemacs)
- (add-to-list 'tramp-foreign-file-name-handler-alist
- (cons 'tramp-ftp-file-name-p 'tramp-ftp-file-name-handler)))
+(add-to-list 'tramp-foreign-file-name-handler-alist
+ (cons 'tramp-ftp-file-name-p 'tramp-ftp-file-name-handler))
(add-hook 'tramp-unload-hook
(lambda ()
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index dee8333e54..82abf542c5 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -49,10 +49,10 @@
;; The custom option `tramp-gvfs-methods' contains the list of
;; supported connection methods. Per default, these are "afp", "dav",
-;; "davs", "obex", "sftp" and "synce". Note that with "obex" it might
-;; be necessary to pair with the other bluetooth device, if it hasn't
-;; been done already. There might be also some few seconds delay in
-;; discovering available bluetooth devices.
+;; "davs", "gdrive", "obex", "sftp" and "synce". Note that with
+;; "obex" it might be necessary to pair with the other bluetooth
+;; device, if it hasn't been done already. There might be also some
+;; few seconds delay in discovering available bluetooth devices.
;; Other possible connection methods are "ftp" and "smb". When one of
;; these methods is added to the list, the remote access for that
@@ -110,21 +110,30 @@
(require 'custom))
;;;###tramp-autoload
-(defcustom tramp-gvfs-methods '("afp" "dav" "davs" "obex" "sftp" "synce")
+(defcustom tramp-gvfs-methods
+ '("afp" "dav" "davs" "gdrive" "obex" "sftp" "synce")
"List of methods for remote files, accessed with GVFS."
:group 'tramp
- :version "25.1"
+ :version "25.2"
:type '(repeat (choice (const "afp")
(const "dav")
(const "davs")
(const "ftp")
+ (const "gdrive")
(const "obex")
(const "sftp")
(const "smb")
- (const "synce"))))
+ (const "synce")))
+ :require 'tramp)
-;; Add a default for `tramp-default-user-alist'. Rule: For the SYNCE
-;; method, no user is chosen.
+;; Add defaults for `tramp-default-user-alist' and `tramp-default-host-alist'.
+;;;###tramp-autoload
+(when (string-match "\\(.+\\)@\\(\\(?:gmail\\|googlemail\\)\\.com\\)"
+ user-mail-address)
+ (add-to-list 'tramp-default-user-alist
+ `("\\`gdrive\\'" nil ,(match-string 1 user-mail-address)))
+ (add-to-list 'tramp-default-host-alist
+ '("\\`gdrive\\'" nil ,(match-string 2 user-mail-address))))
;;;###tramp-autoload
(add-to-list 'tramp-default-user-alist '("\\`synce\\'" nil nil))
@@ -133,7 +142,8 @@
"Zeroconf domain to be used for discovering services, like host names."
:group 'tramp
:version "23.2"
- :type 'string)
+ :type 'string
+ :require 'tramp)
;; Add the methods to `tramp-methods', in order to allow minibuffer
;; completion.
@@ -385,7 +395,8 @@ completion, nil means to use always cached values for discovered
devices."
:group 'tramp
:version "23.2"
- :type '(choice (const nil) integer))
+ :type '(choice (const nil) integer)
+ :require 'tramp)
(defvar tramp-bluez-discovery nil
"Indicator for a running bluetooth device discovery.
@@ -407,6 +418,38 @@ Every entry is a list (NAME ADDRESS).")
(defconst tramp-hal-interface-device "org.freedesktop.Hal.Device"
"The device interface of the HAL daemon.")
+(defconst tramp-gvfs-file-attributes
+ '("name"
+ "type"
+ "standard::display-name"
+ "standard::symlink-target"
+ "unix::nlink"
+ "unix::uid"
+ "owner::user"
+ "unix::gid"
+ "owner::group"
+ "time::access"
+ "time::modified"
+ "time::changed"
+ "standard::size"
+ "unix::mode"
+ "access::can-read"
+ "access::can-write"
+ "access::can-execute"
+ "unix::inode"
+ "unix::device")
+ "GVFS file attributes.")
+
+(defconst tramp-gvfs-file-attributes-with-gvfs-ls-regexp
+ (concat "[[:blank:]]" (regexp-opt tramp-gvfs-file-attributes t) "=\\(.+?\\)")
+ "Regexp to parse GVFS file attributes with `gvfs-ls'.")
+
+(defconst tramp-gvfs-file-attributes-with-gvfs-info-regexp
+ (concat "^[[:blank:]]*"
+ (regexp-opt tramp-gvfs-file-attributes t)
+ ":[[:blank:]]+\\(.*\\)$")
+ "Regexp to parse GVFS file attributes with `gvfs-info'.")
+
;; New handlers should be added here.
(defconst tramp-gvfs-file-name-handler-alist
@@ -422,7 +465,6 @@ Every entry is a list (NAME ADDRESS).")
(directory-files . tramp-handle-directory-files)
(directory-files-and-attributes
. tramp-handle-directory-files-and-attributes)
- (dired-call-process . ignore)
(dired-compress-file . ignore)
(dired-uncache . tramp-handle-dired-uncache)
(expand-file-name . tramp-gvfs-handle-expand-file-name)
@@ -463,6 +505,7 @@ Every entry is a list (NAME ADDRESS).")
(make-auto-save-file-name . tramp-handle-make-auto-save-file-name)
(make-directory . tramp-gvfs-handle-make-directory)
(make-directory-internal . ignore)
+ (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
(make-symbolic-link . tramp-handle-make-symbolic-link)
(process-file . ignore)
(rename-file . tramp-gvfs-handle-rename-file)
@@ -474,7 +517,8 @@ Every entry is a list (NAME ADDRESS).")
(shell-command . ignore)
(start-file-process . ignore)
(substitute-in-file-name . tramp-handle-substitute-in-file-name)
- (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
+ (temporary-file-directory . tramp-handle-temporary-file-directory)
+ (unhandled-file-name-directory . ignore)
(vc-registered . ignore)
(verify-visited-file-modtime . tramp-handle-verify-visited-file-modtime)
(write-region . tramp-gvfs-handle-write-region))
@@ -562,8 +606,7 @@ will be traced by Tramp with trace level 6."
(put 'with-tramp-dbus-call-method 'lisp-indent-function 2)
(put 'with-tramp-dbus-call-method 'edebug-form-spec '(form symbolp body))
-(tramp-compat-font-lock-add-keywords
- 'emacs-lisp-mode '("\\<with-tramp-dbus-call-method\\>"))
+(font-lock-add-keywords 'emacs-lisp-mode '("\\<with-tramp-dbus-call-method\\>"))
(defvar tramp-gvfs-dbus-event-vector nil
"Current Tramp file name to be used, as vector.
@@ -587,7 +630,7 @@ is no information where to trace the message.")
(defun tramp-gvfs-do-copy-or-rename-file
(op filename newname &optional ok-if-already-exists keep-date
- preserve-uid-gid preserve-extended-attributes)
+ preserve-uid-gid preserve-extended-attributes)
"Copy or rename a remote file.
OP must be `copy' or `rename' and indicates the operation to perform.
FILENAME specifies the file to copy or rename, NEWNAME is the name of
@@ -623,19 +666,19 @@ file names."
(and t2 (not (tramp-gvfs-file-name-p newname))))
;; We cannot copy or rename directly.
+ ;; PRESERVE-EXTENDED-ATTRIBUTES has been introduced with
+ ;; Emacs 24.1 (as PRESERVE-SELINUX-CONTEXT), and renamed
+ ;; in Emacs 24.3.
(let ((tmpfile (tramp-compat-make-temp-file filename)))
(cond
(preserve-extended-attributes
- (tramp-compat-funcall
+ (funcall
file-operation
filename tmpfile t keep-date preserve-uid-gid
preserve-extended-attributes))
- (preserve-uid-gid
- (tramp-compat-funcall
- file-operation filename tmpfile t keep-date preserve-uid-gid))
(t
- (tramp-compat-funcall
- file-operation filename tmpfile t keep-date)))
+ (funcall
+ file-operation filename tmpfile t keep-date preserve-uid-gid)))
(rename-file tmpfile newname ok-if-already-exists))
;; Direct action.
@@ -646,7 +689,7 @@ file names."
'tramp-gvfs-send-command v gvfs-operation
(append
(and (eq op 'copy) (or keep-date preserve-uid-gid)
- (list "--preserve"))
+ '("--preserve"))
(list
(tramp-gvfs-url-file-name filename)
(tramp-gvfs-url-file-name newname))))
@@ -682,7 +725,7 @@ file names."
(defun tramp-gvfs-handle-copy-file
(filename newname &optional ok-if-already-exists keep-date
- preserve-uid-gid preserve-extended-attributes)
+ preserve-uid-gid preserve-extended-attributes)
"Like `copy-file' for Tramp files."
(setq filename (expand-file-name filename))
(setq newname (expand-file-name newname))
@@ -693,30 +736,33 @@ file names."
(tramp-gvfs-do-copy-or-rename-file
'copy filename newname ok-if-already-exists keep-date
preserve-uid-gid preserve-extended-attributes))
- ;; Compat section.
+ ;; Compat section. PRESERVE-EXTENDED-ATTRIBUTES has been
+ ;; introduced with Emacs 24.1 (as PRESERVE-SELINUX-CONTEXT), and
+ ;; renamed in Emacs 24.3.
(preserve-extended-attributes
(tramp-run-real-handler
'copy-file
(list filename newname ok-if-already-exists keep-date
preserve-uid-gid preserve-extended-attributes)))
- (preserve-uid-gid
- (tramp-run-real-handler
- 'copy-file
- (list filename newname ok-if-already-exists keep-date preserve-uid-gid)))
(t
(tramp-run-real-handler
- 'copy-file (list filename newname ok-if-already-exists keep-date)))))
+ 'copy-file
+ (list filename newname ok-if-already-exists keep-date preserve-uid-gid)))))
(defun tramp-gvfs-handle-delete-directory (directory &optional recursive trash)
"Like `delete-directory' for Tramp files."
- (when (and recursive (not (file-symlink-p directory)))
- (mapc (lambda (file)
- (if (eq t (car (file-attributes file)))
- (tramp-compat-delete-directory file recursive trash)
- (tramp-compat-delete-file file trash)))
- (directory-files
- directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")))
(with-parsed-tramp-file-name directory nil
+ (if (and recursive (not (file-symlink-p directory)))
+ (mapc (lambda (file)
+ (if (eq t (car (file-attributes file)))
+ (tramp-compat-delete-directory file recursive trash)
+ (tramp-compat-delete-file file trash)))
+ (directory-files
+ directory 'full directory-files-no-dot-files-regexp))
+ (when (directory-files directory nil directory-files-no-dot-files-regexp)
+ (tramp-error
+ v 'file-error "Couldn't delete non-empty %s" directory)))
+
(tramp-flush-file-property v (file-name-directory localname))
(tramp-flush-directory-property v localname)
(unless
@@ -762,7 +808,7 @@ file names."
(tramp-gvfs-maybe-open-connection (vector method user host "/" hop)))
(setq localname
(replace-match
- (tramp-get-file-property v "/" "default-location" "~")
+ (tramp-get-connection-property v "default-location" "~")
nil t localname 1)))
;; Tilde expansion is not possible.
(when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname)
@@ -787,127 +833,191 @@ file names."
(tramp-run-real-handler
'expand-file-name (list localname))))))
-(defun tramp-gvfs-handle-file-attributes (filename &optional id-format)
- "Like `file-attributes' for Tramp files."
- (unless id-format (setq id-format 'integer))
+(defun tramp-gvfs-get-directory-attributes (directory)
+ "Return GVFS attributes association list of all files in DIRECTORY."
(ignore-errors
;; Don't modify `last-coding-system-used' by accident.
(let ((last-coding-system-used last-coding-system-used)
- (process-environment (cons "LC_MESSAGES=C" process-environment))
- dirp res-symlink-target res-numlinks res-uid res-gid res-access
- res-mod res-change res-size res-filemodes res-inode res-device)
+ result)
+ (with-parsed-tramp-file-name directory nil
+ (with-tramp-file-property v localname "directory-gvfs-attributes"
+ (tramp-message v 5 "directory gvfs attributes: %s" localname)
+ ;; Send command.
+ (tramp-gvfs-send-command
+ v "gvfs-ls" "-h" "-n" "-a"
+ (mapconcat 'identity tramp-gvfs-file-attributes ",")
+ (tramp-gvfs-url-file-name directory))
+ ;; Parse output.
+ (with-current-buffer (tramp-get-connection-buffer v)
+ (goto-char (point-min))
+ (while (looking-at
+ (concat "^\\(.+\\)[[:blank:]]"
+ "\\([[:digit:]]+\\)[[:blank:]]"
+ "(\\(.+?\\))"
+ tramp-gvfs-file-attributes-with-gvfs-ls-regexp))
+ (let ((item (list (cons "type" (match-string 3))
+ (cons "standard::size" (match-string 2))
+ (cons "name" (match-string 1)))))
+ (goto-char (1+ (match-end 3)))
+ (while (looking-at
+ (concat
+ tramp-gvfs-file-attributes-with-gvfs-ls-regexp
+ "\\(" tramp-gvfs-file-attributes-with-gvfs-ls-regexp
+ "\\|" "$" "\\)"))
+ (push (cons (match-string 1) (match-string 2)) item)
+ (goto-char (match-end 2)))
+ ;; Add display name as head.
+ (push
+ (cons (cdr (or (assoc "standard::display-name" item)
+ (assoc "name" item)))
+ (nreverse item))
+ result))
+ (forward-line)))
+ result)))))
+
+(defun tramp-gvfs-get-root-attributes (filename)
+ "Return GVFS attributes association list of FILENAME."
+ (ignore-errors
+ ;; Don't modify `last-coding-system-used' by accident.
+ (let ((last-coding-system-used last-coding-system-used)
+ result)
(with-parsed-tramp-file-name filename nil
- (with-tramp-file-property
- v localname (format "file-attributes-%s" id-format)
- (tramp-message v 5 "file attributes: %s" localname)
+ (with-tramp-file-property v localname "file-gvfs-attributes"
+ (tramp-message v 5 "file gvfs attributes: %s" localname)
+ ;; Send command.
(tramp-gvfs-send-command
v "gvfs-info" (tramp-gvfs-url-file-name filename))
- ;; Parse output ...
+ ;; Parse output.
(with-current-buffer (tramp-get-connection-buffer v)
(goto-char (point-min))
- (when (re-search-forward "attributes:" nil t)
- ;; ... directory or symlink
- (goto-char (point-min))
- (setq dirp (if (re-search-forward "type: directory" nil t) t))
- (goto-char (point-min))
- (setq res-symlink-target
- (if (re-search-forward
- "standard::symlink-target: \\(.+\\)$" nil t)
- (match-string 1)))
- ;; ... number links
- (goto-char (point-min))
- (setq res-numlinks
- (if (re-search-forward "unix::nlink: \\([0-9]+\\)" nil t)
- (string-to-number (match-string 1)) 0))
- ;; ... uid and gid
- (goto-char (point-min))
- (setq res-uid
- (if (eq id-format 'integer)
- (if (re-search-forward "unix::uid: \\([0-9]+\\)" nil t)
- (string-to-number (match-string 1))
- -1)
- (if (re-search-forward "owner::user: \\(.+\\)$" nil t)
- (match-string 1)
- "UNKNOWN")))
- (setq res-gid
- (if (eq id-format 'integer)
- (if (re-search-forward "unix::gid: \\([0-9]+\\)" nil t)
- (string-to-number (match-string 1))
- -1)
- (if (re-search-forward "owner::group: \\(.+\\)$" nil t)
- (match-string 1)
- "UNKNOWN")))
- ;; ... last access, modification and change time
- (goto-char (point-min))
- (setq res-access
- (if (re-search-forward "time::access: \\([0-9]+\\)" nil t)
- (seconds-to-time (string-to-number (match-string 1)))
- '(0 0)))
- (goto-char (point-min))
- (setq res-mod
- (if (re-search-forward "time::modified: \\([0-9]+\\)" nil t)
- (seconds-to-time (string-to-number (match-string 1)))
- '(0 0)))
- (goto-char (point-min))
- (setq res-change
- (if (re-search-forward "time::changed: \\([0-9]+\\)" nil t)
- (seconds-to-time (string-to-number (match-string 1)))
- '(0 0)))
- ;; ... size
- (goto-char (point-min))
- (setq res-size
- (if (re-search-forward "standard::size: \\([0-9]+\\)" nil t)
- (string-to-number (match-string 1)) 0))
- ;; ... file mode flags
- (goto-char (point-min))
- (setq res-filemodes
- (if (re-search-forward "unix::mode: \\([0-9]+\\)" nil t)
- (tramp-file-mode-from-int
- (string-to-number (match-string 1)))
- (if dirp "drwx------" "-rwx------")))
- ;; ... inode and device
- (goto-char (point-min))
- (setq res-inode
- (if (re-search-forward "unix::inode: \\([0-9]+\\)" nil t)
- (string-to-number (match-string 1))
- (tramp-get-inode v)))
- (goto-char (point-min))
- (setq res-device
- (if (re-search-forward "unix::device: \\([0-9]+\\)" nil t)
- (string-to-number (match-string 1))
- (tramp-get-device v)))
-
- ;; Return data gathered.
- (list
- ;; 0. t for directory, string (name linked to) for
- ;; symbolic link, or nil.
- (or dirp res-symlink-target)
- ;; 1. Number of links to file.
- res-numlinks
- ;; 2. File uid.
- res-uid
- ;; 3. File gid.
- res-gid
- ;; 4. Last access time, as a list of integers.
- ;; 5. Last modification time, likewise.
- ;; 6. Last status change time, likewise.
- res-access res-mod res-change
- ;; 7. Size in bytes (-1, if number is out of range).
- res-size
- ;; 8. File modes.
- res-filemodes
- ;; 9. t if file's gid would change if file were deleted
- ;; and recreated.
- nil
- ;; 10. Inode number.
- res-inode
- ;; 11. Device number.
- res-device
- ))))))))
+ (while (re-search-forward
+ tramp-gvfs-file-attributes-with-gvfs-info-regexp nil t)
+ (push (cons (match-string 1) (match-string 2)) result))
+ result))))))
+
+(defun tramp-gvfs-get-file-attributes (filename)
+ "Return GVFS attributes association list of FILENAME."
+ (setq filename (directory-file-name (expand-file-name filename)))
+ (with-parsed-tramp-file-name filename nil
+ (if (or
+ (and (string-match "^\\(afp\\|smb\\)$" method)
+ (string-match "^/?\\([^/]+\\)$" localname))
+ (string-equal localname "/"))
+ (tramp-gvfs-get-root-attributes filename)
+ (assoc
+ (file-name-nondirectory filename)
+ (tramp-gvfs-get-directory-attributes (file-name-directory filename))))))
+
+(defun tramp-gvfs-handle-file-attributes (filename &optional id-format)
+ "Like `file-attributes' for Tramp files."
+ (unless id-format (setq id-format 'integer))
+ (ignore-errors
+ (let ((attributes (tramp-gvfs-get-file-attributes filename))
+ dirp res-symlink-target res-numlinks res-uid res-gid res-access
+ res-mod res-change res-size res-filemodes res-inode res-device)
+ (when attributes
+ ;; ... directory or symlink
+ (setq dirp (if (equal "directory" (cdr (assoc "type" attributes))) t))
+ (setq res-symlink-target
+ (cdr (assoc "standard::symlink-target" attributes)))
+ ;; ... number links
+ (setq res-numlinks
+ (string-to-number
+ (or (cdr (assoc "unix::nlink" attributes)) "0")))
+ ;; ... uid and gid
+ (setq res-uid
+ (if (eq id-format 'integer)
+ (string-to-number
+ (or (cdr (assoc "unix::uid" attributes))
+ (format "%s" tramp-unknown-id-integer)))
+ (or (cdr (assoc "owner::user" attributes))
+ (cdr (assoc "unix::uid" attributes))
+ tramp-unknown-id-string)))
+ (setq res-gid
+ (if (eq id-format 'integer)
+ (string-to-number
+ (or (cdr (assoc "unix::gid" attributes))
+ (format "%s" tramp-unknown-id-integer)))
+ (or (cdr (assoc "owner::group" attributes))
+ (cdr (assoc "unix::gid" attributes))
+ tramp-unknown-id-string)))
+ ;; ... last access, modification and change time
+ (setq res-access
+ (seconds-to-time
+ (string-to-number
+ (or (cdr (assoc "time::access" attributes)) "0"))))
+ (setq res-mod
+ (seconds-to-time
+ (string-to-number
+ (or (cdr (assoc "time::modified" attributes)) "0"))))
+ (setq res-change
+ (seconds-to-time
+ (string-to-number
+ (or (cdr (assoc "time::changed" attributes)) "0"))))
+ ;; ... size
+ (setq res-size
+ (string-to-number
+ (or (cdr (assoc "standard::size" attributes)) "0")))
+ ;; ... file mode flags
+ (setq res-filemodes
+ (let ((n (cdr (assoc "unix::mode" attributes))))
+ (if n
+ (tramp-file-mode-from-int (string-to-number n))
+ (format
+ "%s%s%s%s------"
+ (if dirp "d" "-")
+ (if (equal (cdr (assoc "access::can-read" attributes))
+ "FALSE")
+ "-" "r")
+ (if (equal (cdr (assoc "access::can-write" attributes))
+ "FALSE")
+ "-" "w")
+ (if (equal (cdr (assoc "access::can-execute" attributes))
+ "FALSE")
+ "-" "x")))))
+ ;; ... inode and device
+ (setq res-inode
+ (let ((n (cdr (assoc "unix::inode" attributes))))
+ (if n
+ (string-to-number n)
+ (tramp-get-inode (tramp-dissect-file-name filename)))))
+ (setq res-device
+ (let ((n (cdr (assoc "unix::device" attributes))))
+ (if n
+ (string-to-number n)
+ (tramp-get-device (tramp-dissect-file-name filename)))))
+
+ ;; Return data gathered.
+ (list
+ ;; 0. t for directory, string (name linked to) for
+ ;; symbolic link, or nil.
+ (or dirp res-symlink-target)
+ ;; 1. Number of links to file.
+ res-numlinks
+ ;; 2. File uid.
+ res-uid
+ ;; 3. File gid.
+ res-gid
+ ;; 4. Last access time, as a list of integers.
+ ;; 5. Last modification time, likewise.
+ ;; 6. Last status change time, likewise.
+ res-access res-mod res-change
+ ;; 7. Size in bytes (-1, if number is out of range).
+ res-size
+ ;; 8. File modes.
+ res-filemodes
+ ;; 9. t if file's gid would change if file were deleted
+ ;; and recreated.
+ nil
+ ;; 10. Inode number.
+ res-inode
+ ;; 11. Device number.
+ res-device
+ )))))
(defun tramp-gvfs-handle-file-directory-p (filename)
"Like `file-directory-p' for Tramp files."
- (eq t (car (file-attributes filename))))
+ (eq t (car (file-attributes (file-truename filename)))))
(defun tramp-gvfs-handle-file-executable-p (filename)
"Like `file-executable-p' for Tramp files."
@@ -923,79 +1033,22 @@ file names."
(tramp-error
v 'file-error
"Cannot make local copy of non-existing file `%s'" filename))
- (copy-file filename tmpfile t t)
+ (copy-file filename tmpfile 'ok-if-already-exists 'keep-time)
tmpfile)))
(defun tramp-gvfs-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for Tramp files."
(unless (save-match-data (string-match "/" filename))
- (with-parsed-tramp-file-name (expand-file-name directory) nil
-
- (all-completions
- filename
- (mapcar
- 'list
- (or
- ;; Try cache entries for filename, filename with last
- ;; character removed, filename with last two characters
- ;; removed, ..., and finally the empty string - all
- ;; concatenated to the local directory name.
- (let ((remote-file-name-inhibit-cache
- (or remote-file-name-inhibit-cache
- tramp-completion-reread-directory-timeout)))
-
- ;; This is inefficient for very long filenames, pity
- ;; `reduce' is not available...
- (car
- (apply
- 'append
- (mapcar
- (lambda (x)
- (let ((cache-hit
- (tramp-get-file-property
- v
- (concat localname (substring filename 0 x))
- "file-name-all-completions"
- nil)))
- (when cache-hit (list cache-hit))))
- ;; We cannot use a length of 0, because file properties
- ;; for "foo" and "foo/" are identical.
- (tramp-compat-number-sequence (length filename) 1 -1)))))
-
- ;; Cache expired or no matching cache entry found so we need
- ;; to perform a remote operation.
- (let ((result '("." ".."))
- entry)
+ (all-completions
+ filename
+ (with-parsed-tramp-file-name (expand-file-name directory) nil
+ (with-tramp-file-property v localname "file-name-all-completions"
+ (let ((result '("./" "../")))
;; Get a list of directories and files.
- (tramp-gvfs-send-command
- v "gvfs-ls" "-h" (tramp-gvfs-url-file-name directory))
-
- ;; Now grab the output.
- (with-temp-buffer
- (insert-buffer-substring (tramp-get-connection-buffer v))
- (goto-char (point-max))
- (while (zerop (forward-line -1))
- (setq entry (buffer-substring (point) (point-at-eol)))
- (when (string-match filename entry)
- (if (file-directory-p (expand-file-name entry directory))
- (push (concat entry "/") result)
- (push entry result)))))
-
- ;; Because the remote op went through OK we know the
- ;; directory we `cd'-ed to exists.
- (tramp-set-file-property v localname "file-exists-p" t)
-
- ;; Because the remote op went through OK we know every
- ;; file listed by `ls' exists.
- (mapc (lambda (entry)
- (tramp-set-file-property
- v (concat localname entry) "file-exists-p" t))
- result)
-
- ;; Store result in the cache.
- (tramp-set-file-property
- v (concat localname filename)
- "file-name-all-completions" result))))))))
+ (dolist (item (tramp-gvfs-get-directory-attributes directory) result)
+ (if (string-equal (cdr (assoc "type" item)) "directory")
+ (push (file-name-as-directory (car item)) result)
+ (push (car item) result)))))))))
(defun tramp-gvfs-handle-file-notify-add-watch (file-name flags _callback)
"Like `file-notify-add-watch' for Tramp files."
@@ -1024,9 +1077,9 @@ file names."
(tramp-message
v 6 "Run `%s', %S" (mapconcat 'identity (process-command p) " ") p)
(tramp-set-connection-property p "vector" v)
- (tramp-compat-process-put p 'events events)
- (tramp-compat-process-put p 'watch-name localname)
- (tramp-compat-set-process-query-on-exit-flag p nil)
+ (process-put p 'events events)
+ (process-put p 'watch-name localname)
+ (set-process-query-on-exit-flag p nil)
(set-process-filter p 'tramp-gvfs-monitor-file-process-filter)
;; There might be an error if the monitor is not supported.
;; Give the filter a chance to read the output.
@@ -1039,7 +1092,7 @@ file names."
(defun tramp-gvfs-monitor-file-process-filter (proc string)
"Read output from \"gvfs-monitor-file\" and add corresponding \
file-notify events."
- (let* ((rest-string (tramp-compat-process-get proc 'rest-string))
+ (let* ((rest-string (process-get proc 'rest-string))
(dd (with-current-buffer (process-buffer proc) default-directory))
(ddu (regexp-quote (tramp-gvfs-url-file-name dd))))
(when rest-string
@@ -1047,7 +1100,7 @@ file-notify events."
(tramp-message proc 6 "%S\n%s" proc string)
(setq string (concat rest-string string)
;; Attribute change is returned in unused wording.
- string (tramp-compat-replace-regexp-in-string
+ string (replace-regexp-in-string
"ATTRIB CHANGED" "ATTRIBUTE_CHANGED" string))
(when (string-match "Monitoring not supported" string)
(delete-process proc))
@@ -1060,7 +1113,7 @@ file-notify events."
string)
(let ((file (match-string 1 string))
(action (intern-soft
- (tramp-compat-replace-regexp-in-string
+ (replace-regexp-in-string
"_" "-" (downcase (match-string 2 string))))))
(setq string (replace-match "" nil nil string))
;; File names are returned as URL paths. We must convert them.
@@ -1079,12 +1132,12 @@ file-notify events."
;; Save rest of the string.
(when (zerop (length string)) (setq string nil))
(when string (tramp-message proc 10 "Rest string:\n%s" string))
- (tramp-compat-process-put proc 'rest-string string)))
+ (process-put proc 'rest-string string)))
(defun tramp-gvfs-handle-file-readable-p (filename)
"Like `file-readable-p' for Tramp files."
(with-parsed-tramp-file-name filename nil
- (with-tramp-file-property v localname "file-executable-p"
+ (with-tramp-file-property v localname "file-readable-p"
(tramp-check-cached-permissions v ?r))))
(defun tramp-gvfs-handle-file-writable-p (filename)
@@ -1125,7 +1178,8 @@ file-notify events."
(if (or (tramp-tramp-file-p filename)
(tramp-tramp-file-p newname))
(tramp-gvfs-do-copy-or-rename-file
- 'rename filename newname ok-if-already-exists t t)
+ 'rename filename newname ok-if-already-exists
+ 'keep-date 'preserve-uid-gid)
(tramp-run-real-handler
'rename-file (list filename newname ok-if-already-exists))))
@@ -1133,8 +1187,7 @@ file-notify events."
(start end filename &optional append visit lockname confirm)
"Like `write-region' for Tramp files."
(with-parsed-tramp-file-name filename nil
- ;; XEmacs takes a coding system as the seventh argument, not `confirm'.
- (when (and (not (featurep 'xemacs)) confirm (file-exists-p filename))
+ (when (and confirm (file-exists-p filename))
(unless (y-or-n-p (format "File %s exists; overwrite anyway? " filename))
(tramp-error v 'file-error "File not overwritten")))
@@ -1181,6 +1234,8 @@ file-notify events."
(url-recreate-url
(if (tramp-tramp-file-p filename)
(with-parsed-tramp-file-name filename nil
+ (when (string-equal "gdrive" method)
+ (setq method "google-drive"))
(when (and user (string-match tramp-user-with-domain-regexp user))
(setq user
(concat (match-string 2 user) ";" (match-string 1 user))))
@@ -1203,8 +1258,7 @@ file-notify events."
(defun tramp-gvfs-file-name (object-path)
"Retrieve file name from D-Bus OBJECT-PATH."
(dbus-unescape-from-identifier
- (tramp-compat-replace-regexp-in-string
- "^.*/\\([^/]+\\)$" "\\1" object-path)))
+ (replace-regexp-in-string "^.*/\\([^/]+\\)$" "\\1" object-path)))
(defun tramp-bluez-address (device)
"Return bluetooth device address from a given bluetooth DEVICE name."
@@ -1293,7 +1347,7 @@ ADDRESS can have the form \"xx:xx:xx:xx:xx:xx\" or \"[xx:xx:xx:xx:xx:xx]\"."
;; host signature.
(with-temp-buffer
;; Preserve message for `progress-reporter'.
- (tramp-compat-with-temp-message ""
+ (with-temp-message ""
(insert message)
(pop-to-buffer (current-buffer))
(setq choice (if (yes-or-no-p (concat (car choices) " ")) 0 1))
@@ -1351,6 +1405,8 @@ ADDRESS can have the form \"xx:xx:xx:xx:xx:xx\" or \"[xx:xx:xx:xx:xx:xx]\"."
(setq host (tramp-bluez-device host)))
(when (and (string-equal "dav" method) (string-equal "true" ssl))
(setq method "davs"))
+ (when (string-equal "google-drive" method)
+ (setq method "gdrive"))
(unless (zerop (length domain))
(setq user (concat user tramp-prefix-domain-format domain)))
(unless (zerop (length port))
@@ -1362,13 +1418,13 @@ ADDRESS can have the form \"xx:xx:xx:xx:xx:xx\" or \"[xx:xx:xx:xx:xx:xx]\"."
signal-name (tramp-gvfs-stringify-dbus-message mount-info))
(tramp-set-file-property v "/" "list-mounts" 'undef)
(if (string-equal (downcase signal-name) "unmounted")
- (tramp-set-file-property v "/" "fuse-mountpoint" nil)
+ (tramp-flush-file-property v "/")
;; Set prefix, mountpoint and location.
(unless (string-equal prefix "/")
(tramp-set-file-property v "/" "prefix" prefix))
(tramp-set-file-property v "/" "fuse-mountpoint" fuse-mountpoint)
- (tramp-set-file-property
- v "/" "default-location" default-location)))))))
+ (tramp-set-connection-property
+ v "default-location" default-location)))))))
(when tramp-gvfs-enabled
(dbus-register-signal
@@ -1436,6 +1492,8 @@ ADDRESS can have the form \"xx:xx:xx:xx:xx:xx\" or \"[xx:xx:xx:xx:xx:xx]\"."
(setq host (tramp-bluez-device host)))
(when (and (string-equal "dav" method) (string-equal "true" ssl))
(setq method "davs"))
+ (when (string-equal "google-drive" method)
+ (setq method "gdrive"))
(when (and (string-equal "synce" method) (zerop (length user)))
(setq user (or (tramp-file-name-user vec) "")))
(unless (zerop (length domain))
@@ -1452,7 +1510,8 @@ ADDRESS can have the form \"xx:xx:xx:xx:xx:xx\" or \"[xx:xx:xx:xx:xx:xx]\"."
(unless (string-equal prefix "/")
(tramp-set-file-property vec "/" "prefix" prefix))
(tramp-set-file-property vec "/" "fuse-mountpoint" fuse-mountpoint)
- (tramp-set-file-property vec "/" "default-location" default-location)
+ (tramp-set-connection-property
+ vec "default-location" default-location)
(throw 'mounted t)))))))
(defun tramp-gvfs-mount-spec-entry (key value)
@@ -1473,7 +1532,7 @@ It was \"a(say)\", but has changed to \"a{sv})\"."
(localname (tramp-file-name-localname vec))
(share (when (string-match "^/?\\([^/]+\\)" localname)
(match-string 1 localname)))
- (ssl (when (string-match "^davs" method) "true" "false"))
+ (ssl (if (string-match "^davs" method) "true" "false"))
(mount-spec
`(:array
,@(cond
@@ -1493,6 +1552,9 @@ It was \"a(say)\", but has changed to \"a{sv})\"."
(list (tramp-gvfs-mount-spec-entry "type" "afp-volume")
(tramp-gvfs-mount-spec-entry "host" host)
(tramp-gvfs-mount-spec-entry "volume" share)))
+ ((string-equal "gdrive" method)
+ (list (tramp-gvfs-mount-spec-entry "type" "google-drive")
+ (tramp-gvfs-mount-spec-entry "host" host)))
(t
(list (tramp-gvfs-mount-spec-entry "type" method)
(tramp-gvfs-mount-spec-entry "host" host))))
@@ -1515,6 +1577,44 @@ It was \"a(say)\", but has changed to \"a{sv})\"."
;; Connection functions.
+(defun tramp-gvfs-get-remote-uid (vec id-format)
+ "The uid of the remote connection VEC, in ID-FORMAT.
+ID-FORMAT valid values are `string' and `integer'."
+ (with-tramp-connection-property vec (format "uid-%s" id-format)
+ (let ((method (tramp-file-name-method vec))
+ (user (tramp-file-name-user vec))
+ (host (tramp-file-name-host vec))
+ (localname
+ (tramp-get-connection-property vec "default-location" nil)))
+ (cond
+ ((and user (equal id-format 'string)) user)
+ (localname
+ (nth 2 (file-attributes
+ (tramp-make-tramp-file-name method user host localname)
+ id-format)))
+ ((equal id-format 'integer) tramp-unknown-id-integer)
+ ((equal id-format 'string) tramp-unknown-id-string)))))
+
+(defun tramp-gvfs-get-remote-gid (vec id-format)
+ "The gid of the remote connection VEC, in ID-FORMAT.
+ID-FORMAT valid values are `string' and `integer'."
+ (with-tramp-connection-property vec (format "gid-%s" id-format)
+ (let ((method (tramp-file-name-method vec))
+ (user (tramp-file-name-user vec))
+ (host (tramp-file-name-host vec))
+ (localname
+ (tramp-get-connection-property vec "default-location" nil)))
+ (cond
+ (localname
+ (nth 3 (file-attributes
+ (tramp-make-tramp-file-name method user host localname)
+ id-format)))
+ ((equal id-format 'integer) tramp-unknown-id-integer)
+ ((equal id-format 'string) tramp-unknown-id-string)))))
+
+(defvar tramp-gvfs-get-remote-uid-gid-in-progress nil
+ "Indication, that remote uid and gid determination is in progress.")
+
(defun tramp-gvfs-maybe-open-connection (vec)
"Maybe open a connection VEC.
Does not do anything if a connection is already open, but re-opens the
@@ -1532,8 +1632,8 @@ connection if a previous connection has died for some reason."
(let ((p (make-network-process
:name (tramp-buffer-name vec)
:buffer (tramp-get-connection-buffer vec)
- :server t :host 'local :service t)))
- (tramp-compat-set-process-query-on-exit-flag p nil)))
+ :server t :host 'local :service t :noquery t)))
+ (set-process-query-on-exit-flag p nil)))
(unless (tramp-gvfs-connection-mounted-p vec)
(let* ((method (tramp-file-name-method vec))
@@ -1544,14 +1644,14 @@ connection if a previous connection has died for some reason."
(tramp-gvfs-object-path
(tramp-make-tramp-file-name method user host ""))))
- (when (and (string-equal method "smb")
- (string-equal localname "/"))
- (tramp-error vec 'file-error "Filename must contain a Windows share"))
-
(when (and (string-equal method "afp")
(string-equal localname "/"))
(tramp-error vec 'file-error "Filename must contain an AFP volume"))
+ (when (and (string-equal method "smb")
+ (string-equal localname "/"))
+ (tramp-error vec 'file-error "Filename must contain a Windows share"))
+
(with-tramp-progress-reporter
vec 3
(if (zerop (length user))
@@ -1624,25 +1724,31 @@ connection if a previous connection has died for some reason."
(tramp-get-connection-process vec) "connected" t))))
;; In `tramp-check-cached-permissions', the connection properties
- ;; {uig,gid}-{integer,string} are used. We set them to their local
- ;; counterparts.
- (with-tramp-connection-property
- vec "uid-integer" (tramp-get-local-uid 'integer))
- (with-tramp-connection-property
- vec "gid-integer" (tramp-get-local-gid 'integer))
- (with-tramp-connection-property
- vec "uid-string" (tramp-get-local-uid 'string))
- (with-tramp-connection-property
- vec "gid-string" (tramp-get-local-gid 'string)))
+ ;; {uig,gid}-{integer,string} are used. We set them to proper values.
+ (unless tramp-gvfs-get-remote-uid-gid-in-progress
+ (let ((tramp-gvfs-get-remote-uid-gid-in-progress t))
+ (tramp-gvfs-get-remote-uid vec 'integer)
+ (tramp-gvfs-get-remote-gid vec 'integer)
+ (tramp-gvfs-get-remote-uid vec 'string)
+ (tramp-gvfs-get-remote-gid vec 'string))))
(defun tramp-gvfs-send-command (vec command &rest args)
"Send the COMMAND with its ARGS to connection VEC.
COMMAND is usually a command from the gvfs-* utilities.
`call-process' is applied, and it returns t if the return code is zero."
- (with-current-buffer (tramp-get-connection-buffer vec)
- (tramp-gvfs-maybe-open-connection vec)
- (erase-buffer)
- (zerop (apply 'tramp-call-process vec command nil t nil args))))
+ (let* ((locale (tramp-get-local-locale vec))
+ (process-environment
+ (append
+ `(,(format "LANG=%s" locale)
+ ,(format "LANGUAGE=%s" locale)
+ ,(format "LC_ALL=%s" locale))
+ process-environment)))
+ (with-current-buffer (tramp-get-connection-buffer vec)
+ (tramp-gvfs-maybe-open-connection vec)
+ (erase-buffer)
+ (or (zerop (apply 'tramp-call-process vec command nil t nil args))
+ ;; Remove information about mounted connection.
+ (and (tramp-flush-file-property vec "/") nil)))))
;; D-Bus BLUEZ functions.
@@ -1755,7 +1861,7 @@ This uses \"avahi-browse\" in case D-Bus is not enabled in Avahi."
'split-string
(shell-command-to-string (format "avahi-browse -trkp %s" service))
"[\n\r]+" 'omit "^\\+;.*$"))))
- (tramp-compat-delete-dups
+ (delete-dups
(mapcar
(lambda (x)
(let* ((list (split-string x ";"))
@@ -1776,35 +1882,37 @@ This uses \"avahi-browse\" in case D-Bus is not enabled in Avahi."
;; Add completion functions for AFP, DAV, DAVS, SFTP and SMB methods.
(when tramp-gvfs-enabled
- (zeroconf-init tramp-gvfs-zeroconf-domain)
- (if (zeroconf-list-service-types)
- (progn
+ ;; Suppress D-Bus error messages.
+ (let (tramp-gvfs-dbus-event-vector)
+ (zeroconf-init tramp-gvfs-zeroconf-domain)
+ (if (zeroconf-list-service-types)
+ (progn
+ (tramp-set-completion-function
+ "afp" '((tramp-zeroconf-parse-device-names "_afpovertcp._tcp")))
+ (tramp-set-completion-function
+ "dav" '((tramp-zeroconf-parse-device-names "_webdav._tcp")))
+ (tramp-set-completion-function
+ "davs" '((tramp-zeroconf-parse-device-names "_webdav._tcp")))
+ (tramp-set-completion-function
+ "sftp" '((tramp-zeroconf-parse-device-names "_ssh._tcp")
+ (tramp-zeroconf-parse-device-names "_workstation._tcp")))
+ (when (member "smb" tramp-gvfs-methods)
+ (tramp-set-completion-function
+ "smb" '((tramp-zeroconf-parse-device-names "_smb._tcp")))))
+
+ (when (executable-find "avahi-browse")
(tramp-set-completion-function
- "afp" '((tramp-zeroconf-parse-device-names "_afpovertcp._tcp")))
+ "afp" '((tramp-gvfs-parse-device-names "_afpovertcp._tcp")))
(tramp-set-completion-function
- "dav" '((tramp-zeroconf-parse-device-names "_webdav._tcp")))
+ "dav" '((tramp-gvfs-parse-device-names "_webdav._tcp")))
(tramp-set-completion-function
- "davs" '((tramp-zeroconf-parse-device-names "_webdav._tcp")))
+ "davs" '((tramp-gvfs-parse-device-names "_webdav._tcp")))
(tramp-set-completion-function
- "sftp" '((tramp-zeroconf-parse-device-names "_ssh._tcp")
- (tramp-zeroconf-parse-device-names "_workstation._tcp")))
+ "sftp" '((tramp-gvfs-parse-device-names "_ssh._tcp")
+ (tramp-gvfs-parse-device-names "_workstation._tcp")))
(when (member "smb" tramp-gvfs-methods)
(tramp-set-completion-function
- "smb" '((tramp-zeroconf-parse-device-names "_smb._tcp")))))
-
- (when (executable-find "avahi-browse")
- (tramp-set-completion-function
- "afp" '((tramp-gvfs-parse-device-names "_afpovertcp._tcp")))
- (tramp-set-completion-function
- "dav" '((tramp-gvfs-parse-device-names "_webdav._tcp")))
- (tramp-set-completion-function
- "davs" '((tramp-gvfs-parse-device-names "_webdav._tcp")))
- (tramp-set-completion-function
- "sftp" '((tramp-gvfs-parse-device-names "_ssh._tcp")
- (tramp-gvfs-parse-device-names "_workstation._tcp")))
- (when (member "smb" tramp-gvfs-methods)
- (tramp-set-completion-function
- "smb" '((tramp-gvfs-parse-device-names "_smb._tcp")))))))
+ "smb" '((tramp-gvfs-parse-device-names "_smb._tcp"))))))))
;; D-Bus SYNCE functions.
@@ -1849,8 +1957,9 @@ They are retrieved from the hal daemon."
;;; TODO:
-;; * Host name completion via afp-server, smb-server or smb-network.
-;; * Check how two shares of the same SMB server can be mounted in
+;; * Host name completion for existing mount points (afp-server,
+;; smb-server) or via smb-network.
+;; * Check, how two shares of the same SMB server can be mounted in
;; parallel.
;; * Apply SDP on bluetooth devices, in order to filter out obex
;; capability.
diff --git a/lisp/net/tramp-gw.el b/lisp/net/tramp-gw.el
index f868bead09..ecf1436d59 100644
--- a/lisp/net/tramp-gw.el
+++ b/lisp/net/tramp-gw.el
@@ -108,7 +108,7 @@
tramp-gw-vector 4
"Opening auxiliary process `%s', speaking with process `%s'"
proc tramp-gw-gw-proc)
- (tramp-compat-set-process-query-on-exit-flag proc nil)
+ (set-process-query-on-exit-flag proc nil)
;; We don't want debug messages, because the corresponding debug
;; buffer might be undecided.
(let ((tramp-verbose 0))
@@ -125,6 +125,7 @@
(tramp-gw-process-filter tramp-gw-gw-proc s))))))
(defun tramp-gw-process-filter (proc string)
+ "Resend the string to the other process."
(let ((tramp-verbose 0))
;; The other process might have been stopped already. We don't
;; want to be interrupted then.
@@ -158,7 +159,7 @@ instead of the host name declared in TARGET-VEC."
:name (tramp-buffer-name aux-vec) :buffer nil :host 'local
:server t :noquery t :service t :coding 'binary))
(set-process-sentinel tramp-gw-aux-proc 'tramp-gw-aux-proc-sentinel)
- (tramp-compat-set-process-query-on-exit-flag tramp-gw-aux-proc nil)
+ (set-process-query-on-exit-flag tramp-gw-aux-proc nil)
(tramp-message
vec 4 "Opening auxiliary process `%s', listening on port %d"
tramp-gw-aux-proc (process-contact tramp-gw-aux-proc :service))))
@@ -204,7 +205,7 @@ instead of the host name declared in TARGET-VEC."
(tramp-file-name-port target-vec)))
(set-process-sentinel tramp-gw-gw-proc 'tramp-gw-gw-proc-sentinel)
(set-process-coding-system tramp-gw-gw-proc 'binary 'binary)
- (tramp-compat-set-process-query-on-exit-flag tramp-gw-gw-proc nil)
+ (set-process-query-on-exit-flag tramp-gw-gw-proc nil)
(tramp-message
vec 4 "Opened %s process `%s'"
(case gw-method ('tunnel "HTTP tunnel") ('socks "SOCKS"))
@@ -235,14 +236,14 @@ authentication is requested from proxy server, provide it."
(setq proc (open-network-stream
name buffer (nth 1 socks-server) (nth 2 socks-server)))
(set-process-coding-system proc 'binary 'binary)
- (tramp-compat-set-process-query-on-exit-flag proc nil)
+ (set-process-query-on-exit-flag proc nil)
;; Send CONNECT command.
(process-send-string proc (format "%s%s\r\n" command authentication))
(tramp-message
tramp-gw-vector 6 "\n%s"
(format
"%s%s\r\n" command
- (tramp-compat-replace-regexp-in-string ;; no password in trace!
+ (replace-regexp-in-string ;; no password in trace!
"Basic [^\r\n]+" "Basic xxxxx" authentication t)))
(with-current-buffer buffer
;; Trap errors to be traced in the right trace buffer. Often,
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 85712cc9d8..bbc74fcad9 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -32,7 +32,6 @@
(eval-when-compile
(require 'cl)
(require 'dired))
-(defvar directory-sep-char)
(defvar tramp-gw-tunnel-method)
(defvar tramp-gw-socks-method)
(defvar vc-handled-backends)
@@ -47,7 +46,8 @@ When inline transfer, compress transferred data of file
whose size is this value or above (up to `tramp-copy-size-limit').
If it is nil, no compression at all will be applied."
:group 'tramp
- :type '(choice (const nil) integer))
+ :type '(choice (const nil) integer)
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-copy-size-limit 10240
@@ -55,7 +55,8 @@ If it is nil, no compression at all will be applied."
out-of-the-band copy.
If it is nil, out-of-the-band copy will be used without a check."
:group 'tramp
- :type '(choice (const nil) integer))
+ :type '(choice (const nil) integer)
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-terminal-type "dumb"
@@ -64,7 +65,8 @@ Because Tramp wants to parse the output of the remote shell, it is easily
confused by ANSI color escape sequences and suchlike. Often, shell init
files conditionalize this setup based on the TERM environment variable."
:group 'tramp
- :type 'string)
+ :type 'string
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-histfile-override ".tramp_history"
@@ -82,11 +84,16 @@ e.g. \"$HOME/.sh_history\"."
:version "25.1"
:type '(choice (const :tag "Do not override HISTFILE" nil)
(const :tag "Unset HISTFILE" t)
- (string :tag "Redirect to a file")))
+ (string :tag "Redirect to a file"))
+ :require 'tramp)
;;;###tramp-autoload
-(defconst tramp-color-escape-sequence-regexp "\e[[;0-9]+m"
- "Escape sequences produced by the \"ls\" command.")
+(defconst tramp-display-escape-sequence-regexp "\e[[;0-9]+m"
+ "Terminal control escape sequences for display attributes.")
+
+;;;###tramp-autoload
+(defconst tramp-device-escape-sequence-regexp "\e[[0-9]+n"
+ "Terminal control escape sequences for device status.")
;; ksh on OpenBSD 4.5 requires that $PS1 contains a `#' character for
;; root users. It uses the `$' character for other users. In order
@@ -112,13 +119,14 @@ detected as prompt when being sent on echoing hosts, therefore.")
"Whether to use `tramp-ssh-controlmaster-options'."
:group 'tramp
:version "24.4"
- :type 'boolean)
+ :type 'boolean
+ :require 'tramp)
(defvar tramp-ssh-controlmaster-options nil
"Which ssh Control* arguments to use.
If it is a string, it should have the form
-\"-o ControlMaster=auto -o ControlPath='tramp.%%r@%%h:%%p'
+\"-o ControlMaster=auto -o ControlPath=\\='tramp.%%r@%%h:%%p\\='
-o ControlPersist=no\". Percent characters in the ControlPath
spec must be doubled, because the string is used as format string.
@@ -200,7 +208,7 @@ The string is used in `tramp-methods'.")
(tramp-remote-shell-login ("-l"))
(tramp-remote-shell-args ("-c"))
(tramp-copy-program "rsync")
- (tramp-copy-args (("-t" "%k") ("-r")))
+ (tramp-copy-args (("-t" "%k") ("-p") ("-r") ("-s")))
(tramp-copy-env (("RSYNC_RSH") ("ssh" "%c")))
(tramp-copy-keep-date t)
(tramp-copy-keep-tmpfile t)
@@ -285,6 +293,15 @@ The string is used in `tramp-methods'.")
(tramp-remote-shell-args ("-c"))
(tramp-connection-timeout 10)))
;;;###tramp-autoload
+(add-to-list
+ 'tramp-methods
+ '("sg"
+ (tramp-login-program "sg")
+ (tramp-login-args (("-") ("%u")))
+ (tramp-remote-shell "/bin/sh")
+ (tramp-remote-shell-args ("-c"))
+ (tramp-connection-timeout 10)))
+;;;###tramp-autoload
(add-to-list 'tramp-methods
'("sudo"
(tramp-login-program "sudo")
@@ -300,6 +317,14 @@ The string is used in `tramp-methods'.")
(tramp-connection-timeout 10)))
;;;###tramp-autoload
(add-to-list 'tramp-methods
+ '("doas"
+ (tramp-login-program "doas")
+ (tramp-login-args (("-u" "%u") ("-s")))
+ (tramp-remote-shell "/bin/sh")
+ (tramp-remote-shell-args ("-c"))
+ (tramp-connection-timeout 10)))
+;;;###tramp-autoload
+(add-to-list 'tramp-methods
'("ksu"
(tramp-login-program "ksu")
(tramp-login-args (("%u") ("-q")))
@@ -380,9 +405,8 @@ The string is used in `tramp-methods'.")
(tramp-remote-shell-args ("-c"))
(tramp-copy-program "pscp")
(tramp-copy-args (("-l" "%u") ("-P" "%p") ("-sftp") ("-p" "%k")
- ("-q") ("-r")))
- (tramp-copy-keep-date t)
- (tramp-copy-recursive t)))
+ ("-q")))
+ (tramp-copy-keep-date t)))
;;;###tramp-autoload
(add-to-list 'tramp-methods
'("fcp"
@@ -401,7 +425,7 @@ The string is used in `tramp-methods'.")
;;;###tramp-autoload
(add-to-list 'tramp-default-user-alist
- `(,(concat "\\`" (regexp-opt '("su" "sudo" "ksu")) "\\'")
+ `(,(concat "\\`" (regexp-opt '("su" "sudo" "doas" "ksu")) "\\'")
nil "root"))
;; Do not add "ssh" based methods, otherwise ~/.ssh/config would be ignored.
;; Do not add "plink" based methods, they ask interactively for the user.
@@ -447,12 +471,17 @@ The string is used in `tramp-methods'.")
"Default list of (FUNCTION FILE) pairs to be examined for su methods.")
;;;###tramp-autoload
+(defconst tramp-completion-function-alist-sg
+ '((tramp-parse-etc-group "/etc/group"))
+ "Default list of (FUNCTION FILE) pairs to be examined for sg methods.")
+
+;;;###tramp-autoload
(defconst tramp-completion-function-alist-putty
`((tramp-parse-putty
,(if (memq system-type '(windows-nt))
"HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\Sessions"
"~/.putty/sessions")))
- "Default list of (FUNCTION REGISTRY) pairs to be examined for putty sessions.")
+ "Default list of (FUNCTION REGISTRY) pairs to be examined for putty sessions.")
;;;###tramp-autoload
(eval-after-load 'tramp
@@ -471,7 +500,9 @@ The string is used in `tramp-methods'.")
(tramp-set-completion-function "nc" tramp-completion-function-alist-telnet)
(tramp-set-completion-function "su" tramp-completion-function-alist-su)
(tramp-set-completion-function "sudo" tramp-completion-function-alist-su)
+ (tramp-set-completion-function "doas" tramp-completion-function-alist-su)
(tramp-set-completion-function "ksu" tramp-completion-function-alist-su)
+ (tramp-set-completion-function "sg" tramp-completion-function-alist-sg)
(tramp-set-completion-function
"krlogin" tramp-completion-function-alist-rsh)
(tramp-set-completion-function "plink" tramp-completion-function-alist-ssh)
@@ -484,7 +515,7 @@ The string is used in `tramp-methods'.")
;; "getconf PATH" yields:
;; HP-UX: /usr/bin:/usr/ccs/bin:/opt/ansic/bin:/opt/langtools/bin:/opt/fortran/bin
;; Solaris: /usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin
-;; GNU/Linux (Debian, Suse): /bin:/usr/bin
+;; GNU/Linux (Debian, Suse, RHEL): /bin:/usr/bin
;; FreeBSD: /usr/bin:/bin:/usr/sbin:/sbin: - beware trailing ":"!
;; Darwin: /usr/bin:/bin:/usr/sbin:/sbin
;; IRIX64: /usr/bin
@@ -516,11 +547,12 @@ the list by the special value `tramp-own-remote-path'."
:type '(repeat (choice
(const :tag "Default Directories" tramp-default-remote-path)
(const :tag "Private Directories" tramp-own-remote-path)
- (string :tag "Directory"))))
+ (string :tag "Directory")))
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-remote-process-environment
- `("TMOUT=0" "LC_CTYPE=''"
+ `("ENV=''" "TMOUT=0" "LC_CTYPE=''"
,(format "TERM=%s" tramp-terminal-type)
,(format "INSIDE_EMACS='%s,tramp:%s'" emacs-version tramp-version)
"CDPATH=" "HISTORY=" "MAIL=" "MAILCHECK=" "MAILPATH=" "PAGER=cat"
@@ -534,8 +566,9 @@ which might have been set in the init files like ~/.profile.
Special handling is applied to the PATH environment, which should
not be set here. Instead, it should be set via `tramp-remote-path'."
:group 'tramp
- :version "24.4"
- :type '(repeat string))
+ :version "25.2"
+ :type '(repeat string)
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-sh-extra-args '(("/bash\\'" . "-norc -noprofile"))
@@ -552,7 +585,8 @@ shell from reading its init file."
;; `alist' is available. Who knows the right way to test it?
:type (if (get 'alist 'widget-type)
'(alist :key-type string :value-type string)
- '(repeat (cons string string))))
+ '(repeat (cons string string)))
+ :require 'tramp)
(defconst tramp-actions-before-shell
'((tramp-login-prompt-regexp tramp-action-login)
@@ -638,29 +672,19 @@ Escape sequence %s is replaced with name of Perl binary.
This string is passed to `format', so percent characters need to be doubled.")
(defconst tramp-perl-file-name-all-completions
- "%s -e 'sub case {
- my $str = shift;
- if ($ARGV[2]) {
- return lc($str);
- }
- else {
- return $str;
- }
-}
+ "%s -e '
opendir(d, $ARGV[0]) || die(\"$ARGV[0]: $!\\nfail\\n\");
@files = readdir(d); closedir(d);
foreach $f (@files) {
- if (case(substr($f, 0, length($ARGV[1]))) eq case($ARGV[1])) {
- if (-d \"$ARGV[0]/$f\") {
- print \"$f/\\n\";
- }
- else {
- print \"$f\\n\";
- }
+ if (-d \"$ARGV[0]/$f\") {
+ print \"$f/\\n\";
+ }
+ else {
+ print \"$f\\n\";
}
}
print \"ok\\n\"
-' \"$1\" \"$2\" \"$3\" 2>/dev/null"
+' \"$1\" 2>/dev/null"
"Perl script to produce output suitable for use with
`file-name-all-completions' on the remote file system. Escape
sequence %s is replaced with name of Perl binary. This string is
@@ -988,10 +1012,7 @@ of command line.")
(directory-files . tramp-handle-directory-files)
(directory-files-and-attributes
. tramp-sh-handle-directory-files-and-attributes)
- ;; `dired-call-process' performed by default handler.
(dired-compress-file . tramp-sh-handle-dired-compress-file)
- (dired-recursive-delete-directory
- . tramp-sh-handle-dired-recursive-delete-directory)
(dired-uncache . tramp-handle-dired-uncache)
(expand-file-name . tramp-sh-handle-expand-file-name)
(file-accessible-directory-p . tramp-handle-file-accessible-directory-p)
@@ -1027,11 +1048,10 @@ of command line.")
;; `get-file-buffer' performed by default handler.
(insert-directory . tramp-sh-handle-insert-directory)
(insert-file-contents . tramp-handle-insert-file-contents)
- (insert-file-contents-literally
- . tramp-sh-handle-insert-file-contents-literally)
(load . tramp-handle-load)
(make-auto-save-file-name . tramp-handle-make-auto-save-file-name)
(make-directory . tramp-sh-handle-make-directory)
+ (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
(make-symbolic-link . tramp-sh-handle-make-symbolic-link)
(process-file . tramp-sh-handle-process-file)
(rename-file . tramp-sh-handle-rename-file)
@@ -1043,7 +1063,8 @@ of command line.")
(shell-command . tramp-handle-shell-command)
(start-file-process . tramp-sh-handle-start-file-process)
(substitute-in-file-name . tramp-handle-substitute-in-file-name)
- (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
+ (temporary-file-directory . tramp-handle-temporary-file-directory)
+ (unhandled-file-name-directory . ignore)
(vc-registered . tramp-sh-handle-vc-registered)
(verify-visited-file-modtime . tramp-sh-handle-verify-visited-file-modtime)
(write-region . tramp-sh-handle-write-region))
@@ -1150,10 +1171,8 @@ target of the symlink differ."
(format "tramp_perl_file_truename %s"
(tramp-shell-quote-argument localname)))))
- ;; Do it yourself. We bind `directory-sep-char' here for
- ;; XEmacs on Windows, which would otherwise use backslash.
- (t (let ((directory-sep-char ?/)
- (steps (tramp-compat-split-string localname "/"))
+ ;; Do it yourself.
+ (t (let ((steps (split-string localname "/" 'omit))
(thisstep nil)
(numchase 0)
;; Don't make the following value larger than
@@ -1202,9 +1221,8 @@ target of the symlink differ."
symlink-target))
(setq symlink-target localname))
(setq steps
- (append (tramp-compat-split-string
- symlink-target "/")
- steps)))
+ (append
+ (split-string symlink-target "/" 'omit) steps)))
(t
;; It's a file.
(setq result (cons thisstep result)))))
@@ -1327,8 +1345,10 @@ target of the symlink differ."
(setq res-gid (read (current-buffer)))
(if (eq id-format 'integer)
(progn
- (unless (numberp res-uid) (setq res-uid -1))
- (unless (numberp res-gid) (setq res-gid -1)))
+ (unless (numberp res-uid)
+ (setq res-uid tramp-unknown-id-integer))
+ (unless (numberp res-gid)
+ (setq res-gid tramp-unknown-id-integer)))
(progn
(unless (stringp res-uid) (setq res-uid (symbol-name res-uid)))
(unless (stringp res-gid) (setq res-gid (symbol-name res-gid)))))
@@ -1357,8 +1377,8 @@ target of the symlink differ."
res-gid
;; 4. Last access time, as a list of integers. Normally
;; this would be in the same format as `current-time', but
- ;; the subseconds part is not currently implemented, and (0
- ;; 0) denotes an unknown time.
+ ;; the subseconds part is not currently implemented, and
+ ;; (0 0) denotes an unknown time.
;; 5. Last modification time, likewise.
;; 6. Last status change time, likewise.
'(0 0) '(0 0) '(0 0) ;CCC how to find out?
@@ -1372,8 +1392,7 @@ target of the symlink differ."
;; 10. Inode number.
res-inode
;; 11. Device number. Will be replaced by a virtual device number.
- -1
- ))))))
+ -1))))))
(defun tramp-do-file-attributes-with-perl
(vec localname &optional id-format)
@@ -1430,8 +1449,7 @@ target of the symlink differ."
(attr (file-attributes f))
;; '(-1 65535) means file doesn't exists yet.
(modtime (or (nth 5 attr) '(-1 65535))))
- (when (boundp 'last-coding-system-used)
- (setq coding-system-used (symbol-value 'last-coding-system-used)))
+ (setq coding-system-used last-coding-system-used)
;; We use '(0 0) as a don't-know value. See also
;; `tramp-do-file-attributes-with-ls'.
(if (not (equal modtime '(0 0)))
@@ -1445,8 +1463,7 @@ target of the symlink differ."
(setq attr (buffer-substring (point) (point-at-eol))))
(tramp-set-file-property
v localname "visited-file-modtime-ild" attr))
- (when (boundp 'last-coding-system-used)
- (set 'last-coding-system-used coding-system-used))
+ (setq last-coding-system-used coding-system-used)
nil)))))
;; This function makes the same assumption as
@@ -1465,7 +1482,7 @@ of."
;; connection.
(if (or (not f)
(eq (visited-file-modtime) 0)
- (not (tramp-file-name-handler 'file-remote-p f nil 'connected)))
+ (not (file-remote-p f nil 'connected)))
t
(with-parsed-tramp-file-name f nil
(let* ((remote-file-name-inhibit-cache t)
@@ -1510,48 +1527,26 @@ of."
;; FIXME: extract the proper text from chmod's stderr.
(tramp-barf-unless-okay
v
- (format "chmod %s %s"
- (tramp-compat-decimal-to-octal mode)
- (tramp-shell-quote-argument localname))
+ (format "chmod %o %s" mode (tramp-shell-quote-argument localname))
"Error while changing file's mode %s" filename)))
(defun tramp-sh-handle-set-file-times (filename &optional time)
"Like `set-file-times' for Tramp files."
- (if (tramp-tramp-file-p filename)
- (with-parsed-tramp-file-name filename nil
- (when (tramp-get-remote-touch v)
- (tramp-flush-file-property v (file-name-directory localname))
- (tramp-flush-file-property v localname)
- (let ((time (if (or (null time) (equal time '(0 0)))
- (current-time)
- time))
- ;; With GNU Emacs, `format-time-string' has an
- ;; optional parameter ZONE. This is preferred,
- ;; because we could handle the case when the remote
- ;; host is located in a different time zone as the
- ;; local host.
- (utc (not (featurep 'xemacs))))
- (tramp-send-command-and-check
- v (format
- "%s %s %s %s"
- (if utc "env TZ=UTC" "")
- (tramp-get-remote-touch v)
- (if (tramp-get-connection-property v "touch-t" nil)
- (format "-t %s"
- (if utc
- (format-time-string "%Y%m%d%H%M.%S" time t)
- (format-time-string "%Y%m%d%H%M.%S" time)))
- "")
- (tramp-shell-quote-argument localname))))))
-
- ;; We handle also the local part, because in older Emacsen,
- ;; without `set-file-times', this function is an alias for this.
- ;; We are local, so we don't need the UTC settings.
- (zerop
- (tramp-call-process
- nil "touch" nil nil nil "-t"
- (format-time-string "%Y%m%d%H%M.%S" time)
- (tramp-shell-quote-argument filename)))))
+ (with-parsed-tramp-file-name filename nil
+ (when (tramp-get-remote-touch v)
+ (tramp-flush-file-property v (file-name-directory localname))
+ (tramp-flush-file-property v localname)
+ (let ((time (if (or (null time) (equal time '(0 0)))
+ (current-time)
+ time)))
+ (tramp-send-command-and-check
+ v (format
+ "env TZ=UTC %s %s %s"
+ (tramp-get-remote-touch v)
+ (if (tramp-get-connection-property v "touch-t" nil)
+ (format "-t %s" (format-time-string "%Y%m%d%H%M.%S" time t))
+ "")
+ (tramp-shell-quote-argument localname)))))))
(defun tramp-set-file-uid-gid (filename &optional uid gid)
"Set the ownership for FILENAME.
@@ -1655,8 +1650,7 @@ be non-negative integers."
(goto-char (point-max))
(delete-blank-lines)
(when (> (point-max) (point-min))
- (tramp-compat-funcall
- 'substring-no-properties (buffer-string))))))))
+ (substring-no-properties (buffer-string))))))))
(defun tramp-sh-handle-set-file-acl (filename acl-string)
"Like `set-file-acl' for Tramp files."
@@ -1876,142 +1870,62 @@ be non-negative integers."
(defun tramp-sh-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for Tramp files."
(unless (save-match-data (string-match "/" filename))
- (with-parsed-tramp-file-name (expand-file-name directory) nil
+ (all-completions
+ filename
+ (with-parsed-tramp-file-name (expand-file-name directory) nil
+ (with-tramp-file-property v localname "file-name-all-completions"
+ (let (result)
+ ;; Get a list of directories and files, including reliably
+ ;; tagging the directories with a trailing "/". Because I
+ ;; rock. --daniel@danann.net
+ (tramp-send-command
+ v
+ (if (tramp-get-remote-perl v)
+ (progn
+ (tramp-maybe-send-script
+ v tramp-perl-file-name-all-completions
+ "tramp_perl_file_name_all_completions")
+ (format "tramp_perl_file_name_all_completions %s"
+ (tramp-shell-quote-argument localname)))
+
+ (format (concat
+ "(cd %s 2>&1 && %s -a 2>/dev/null"
+ " | while IFS= read f; do"
+ " if %s -d \"$f\" 2>/dev/null;"
+ " then \\echo \"$f/\"; else \\echo \"$f\"; fi; done"
+ " && \\echo ok) || \\echo fail")
+ (tramp-shell-quote-argument localname)
+ (tramp-get-ls-command v)
+ (tramp-get-test-command v))))
- (all-completions
- filename
- (mapcar
- 'list
- (or
- ;; Try cache entries for `filename', `filename' with last
- ;; character removed, `filename' with last two characters
- ;; removed, ..., and finally the empty string - all
- ;; concatenated to the local directory name.
- (let ((remote-file-name-inhibit-cache
- (or remote-file-name-inhibit-cache
- tramp-completion-reread-directory-timeout)))
-
- ;; This is inefficient for very long file names, pity
- ;; `reduce' is not available...
- (car
- (apply
- 'append
- (mapcar
- (lambda (x)
- (let ((cache-hit
- (tramp-get-file-property
- v
- (concat localname (substring filename 0 x))
- "file-name-all-completions"
- nil)))
- (when cache-hit (list cache-hit))))
- ;; We cannot use a length of 0, because file properties
- ;; for "foo" and "foo/" are identical.
- (tramp-compat-number-sequence (length filename) 1 -1)))))
-
- ;; Cache expired or no matching cache entry found so we need
- ;; to perform a remote operation.
- (let (result)
- ;; Get a list of directories and files, including reliably
- ;; tagging the directories with a trailing '/'. Because I
- ;; rock. --daniel@danann.net
-
- ;; Changed to perform `cd' in the same remote op and only
- ;; get entries starting with `filename'. Capture any `cd'
- ;; error messages. Ensure any `cd' and `echo' aliases are
- ;; ignored.
- (tramp-send-command
- v
- (if (tramp-get-remote-perl v)
- (progn
- (tramp-maybe-send-script
- v tramp-perl-file-name-all-completions
- "tramp_perl_file_name_all_completions")
- (format "tramp_perl_file_name_all_completions %s %s %d"
- (tramp-shell-quote-argument localname)
- (tramp-shell-quote-argument filename)
- (if (symbol-value
- ;; `read-file-name-completion-ignore-case'
- ;; is introduced with Emacs 22.1.
- (if (boundp
- 'read-file-name-completion-ignore-case)
- 'read-file-name-completion-ignore-case
- 'completion-ignore-case))
- 1 0)))
-
- (format (concat
- "(cd %s 2>&1 && (%s -a %s 2>/dev/null"
- ;; `ls' with wildcard might fail with `Argument
- ;; list too long' error in some corner cases; if
- ;; `ls' fails after `cd' succeeded, chances are
- ;; that's the case, so let's retry without
- ;; wildcard. This will return "too many" entries
- ;; but that isn't harmful.
- " || %s -a 2>/dev/null)"
- " | while IFS= read f; do"
- " if %s -d \"$f\" 2>/dev/null;"
- " then \\echo \"$f/\"; else \\echo \"$f\"; fi; done"
- " && \\echo ok) || \\echo fail")
- (tramp-shell-quote-argument localname)
- (tramp-get-ls-command v)
- ;; When `filename' is empty, just `ls' without
- ;; `filename' argument is more efficient than `ls *'
- ;; for very large directories and might avoid the
- ;; `Argument list too long' error.
- ;;
- ;; With and only with wildcard, we need to add
- ;; `-d' to prevent `ls' from descending into
- ;; sub-directories.
- (if (zerop (length filename))
- "."
- (format "-d %s*" (tramp-shell-quote-argument filename)))
- (tramp-get-ls-command v)
- (tramp-get-test-command v))))
-
- ;; Now grab the output.
- (with-current-buffer (tramp-get-buffer v)
- (goto-char (point-max))
-
- ;; Check result code, found in last line of output.
- (forward-line -1)
- (if (looking-at "^fail$")
- (progn
- ;; Grab error message from line before last line
- ;; (it was put there by `cd 2>&1').
- (forward-line -1)
- (tramp-error
- v 'file-error
- "tramp-sh-handle-file-name-all-completions: %s"
- (buffer-substring (point) (point-at-eol))))
- ;; For peace of mind, if buffer doesn't end in `fail'
- ;; then it should end in `ok'. If neither are in the
- ;; buffer something went seriously wrong on the remote
- ;; side.
- (unless (looking-at "^ok$")
- (tramp-error
- v 'file-error
- "\
+ ;; Now grab the output.
+ (with-current-buffer (tramp-get-buffer v)
+ (goto-char (point-max))
+
+ ;; Check result code, found in last line of output.
+ (forward-line -1)
+ (if (looking-at "^fail$")
+ (progn
+ ;; Grab error message from line before last line
+ ;; (it was put there by `cd 2>&1').
+ (forward-line -1)
+ (tramp-error
+ v 'file-error
+ "tramp-sh-handle-file-name-all-completions: %s"
+ (buffer-substring (point) (point-at-eol))))
+ ;; For peace of mind, if buffer doesn't end in `fail'
+ ;; then it should end in `ok'. If neither are in the
+ ;; buffer something went seriously wrong on the remote
+ ;; side.
+ (unless (looking-at "^ok$")
+ (tramp-error
+ v 'file-error "\
tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'"
- (tramp-shell-quote-argument localname) (buffer-string))))
-
- (while (zerop (forward-line -1))
- (push (buffer-substring (point) (point-at-eol)) result)))
-
- ;; Because the remote op went through OK we know the
- ;; directory we `cd'-ed to exists.
- (tramp-set-file-property v localname "file-exists-p" t)
+ (tramp-shell-quote-argument localname) (buffer-string))))
- ;; Because the remote op went through OK we know every
- ;; file listed by `ls' exists.
- (mapc (lambda (entry)
- (tramp-set-file-property
- v (concat localname entry) "file-exists-p" t))
- result)
-
- ;; Store result in the cache.
- (tramp-set-file-property
- v (concat localname filename)
- "file-name-all-completions" result))))))))
+ (while (zerop (forward-line -1))
+ (push (buffer-substring (point) (point-at-eol)) result)))
+ result))))))
;; cp, mv and ln
@@ -2049,7 +1963,7 @@ tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'"
(defun tramp-sh-handle-copy-file
(filename newname &optional ok-if-already-exists keep-date
- preserve-uid-gid preserve-extended-attributes)
+ preserve-uid-gid preserve-extended-attributes)
"Like `copy-file' for Tramp files."
(setq filename (expand-file-name filename))
(setq newname (expand-file-name newname))
@@ -2060,19 +1974,18 @@ tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'"
(tramp-do-copy-or-rename-file
'copy filename newname ok-if-already-exists keep-date
preserve-uid-gid preserve-extended-attributes))
- ;; Compat section.
+ ;; Compat section. PRESERVE-EXTENDED-ATTRIBUTES has been
+ ;; introduced with Emacs 24.1 (as PRESERVE-SELINUX-CONTEXT), and
+ ;; renamed in Emacs 24.3.
(preserve-extended-attributes
(tramp-run-real-handler
'copy-file
(list filename newname ok-if-already-exists keep-date
preserve-uid-gid preserve-extended-attributes)))
- (preserve-uid-gid
- (tramp-run-real-handler
- 'copy-file
- (list filename newname ok-if-already-exists keep-date preserve-uid-gid)))
(t
(tramp-run-real-handler
- 'copy-file (list filename newname ok-if-already-exists keep-date)))))
+ 'copy-file
+ (list filename newname ok-if-already-exists keep-date preserve-uid-gid)))))
(defun tramp-sh-handle-copy-directory
(dirname newname &optional keep-date parents copy-contents)
@@ -2127,13 +2040,14 @@ tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'"
(if (or (tramp-tramp-file-p filename)
(tramp-tramp-file-p newname))
(tramp-do-copy-or-rename-file
- 'rename filename newname ok-if-already-exists t t)
+ 'rename filename newname ok-if-already-exists
+ 'keep-time 'preserve-uid-gid)
(tramp-run-real-handler
'rename-file (list filename newname ok-if-already-exists))))
(defun tramp-do-copy-or-rename-file
(op filename newname &optional ok-if-already-exists keep-date
- preserve-uid-gid preserve-extended-attributes)
+ preserve-uid-gid preserve-extended-attributes)
"Copy or rename a remote file.
OP must be `copy' or `rename' and indicates the operation to perform.
FILENAME specifies the file to copy or rename, NEWNAME is the name of
@@ -2293,11 +2207,11 @@ the uid and gid from FILENAME."
op))))
(localname1
(if t1
- (tramp-file-name-handler 'file-remote-p filename 'localname)
+ (file-remote-p filename 'localname)
filename))
(localname2
(if t2
- (tramp-file-name-handler 'file-remote-p newname 'localname)
+ (file-remote-p newname 'localname)
newname))
(prefix (file-remote-p (if t1 filename newname)))
cmd-result)
@@ -2335,12 +2249,12 @@ the uid and gid from FILENAME."
(zerop
(logand
(file-modes (file-name-directory localname1))
- (tramp-compat-octal-to-decimal "1000"))))
+ (string-to-number "1000" 8))))
(file-writable-p (file-name-directory localname2))
(or (file-directory-p localname2)
(file-writable-p localname2))))
(if (eq op 'copy)
- (tramp-compat-copy-file
+ (copy-file
localname1 localname2 ok-if-already-exists
keep-date preserve-uid-gid)
(tramp-run-real-handler
@@ -2380,15 +2294,14 @@ the uid and gid from FILENAME."
;; Since this does not work reliable, we also
;; give read permissions.
(set-file-modes
- (concat prefix tmpfile)
- (tramp-compat-octal-to-decimal "0777"))
+ (concat prefix tmpfile) (string-to-number "0777" 8))
(tramp-set-file-uid-gid
(concat prefix tmpfile)
(tramp-get-local-uid 'integer)
(tramp-get-local-gid 'integer)))
(t2
(if (eq op 'copy)
- (tramp-compat-copy-file
+ (copy-file
localname1 tmpfile t
keep-date preserve-uid-gid)
(tramp-run-real-handler
@@ -2397,8 +2310,7 @@ the uid and gid from FILENAME."
;; We must change the ownership as local user.
;; Since this does not work reliable, we also
;; give read permissions.
- (set-file-modes
- tmpfile (tramp-compat-octal-to-decimal "0777"))
+ (set-file-modes tmpfile (string-to-number "0777" 8))
(tramp-set-file-uid-gid
tmpfile
(tramp-get-remote-uid v 'integer)
@@ -2457,7 +2369,7 @@ The method used must be an out-of-band method."
;; Save exit.
(ignore-errors
(if dir-flag
- (tramp-compat-delete-directory
+ (delete-directory
(expand-file-name ".." tmpfile) 'recursive)
(delete-file tmpfile)))))
@@ -2474,20 +2386,17 @@ The method used must be an out-of-band method."
(aset v 3 localname)
;; Check which ones of source and target are Tramp files.
- (setq source (if t1
- (tramp-make-copy-program-file-name v)
- (shell-quote-argument filename))
- target (if t2
- (tramp-make-copy-program-file-name v)
- (shell-quote-argument
- (funcall
+ (setq source (funcall
(if (and (file-directory-p filename)
- (string-equal
- (file-name-nondirectory filename)
- (file-name-nondirectory newname)))
- 'file-name-directory
+ (not (file-exists-p newname)))
+ 'file-name-as-directory
'identity)
- newname))))
+ (if t1
+ (tramp-make-copy-program-file-name v)
+ (shell-quote-argument filename)))
+ target (if t2
+ (tramp-make-copy-program-file-name v)
+ (shell-quote-argument newname)))
;; Check for host and port number. We cannot use
;; `tramp-file-name-port', because this returns also
@@ -2616,43 +2525,26 @@ The method used must be an out-of-band method."
;; Use an asynchronous process. By this, password can
;; be handled. We don't set a timeout, because the
- ;; copying of large files can last longer than 60
- ;; secs.
- (let ((p (apply 'start-process-shell-command
- (tramp-get-connection-name v)
- (tramp-get-connection-buffer v)
- copy-program
- (append
- copy-args
- (list "&&" "echo" "tramp_exit_status" "0"
- "||" "echo" "tramp_exit_status" "1")))))
- (tramp-message
- orig-vec 6 "%s"
- (mapconcat 'identity (process-command p) " "))
+ ;; copying of large files can last longer than 60 secs.
+ (let* ((command
+ (mapconcat
+ 'identity (append (list copy-program) copy-args)
+ " "))
+ (p (let ((default-directory
+ (tramp-compat-temporary-file-directory)))
+ (start-process-shell-command
+ (tramp-get-connection-name v)
+ (tramp-get-connection-buffer v)
+ command))))
+ (tramp-message orig-vec 6 "%s" command)
(tramp-set-connection-property p "vector" orig-vec)
- (tramp-compat-set-process-query-on-exit-flag p nil)
+ (set-process-query-on-exit-flag p nil)
;; We must adapt `tramp-local-end-of-line' for
;; sending the password.
(let ((tramp-local-end-of-line tramp-rsh-end-of-line))
(tramp-process-actions
- p v nil tramp-actions-copy-out-of-band))
-
- ;; Check the return code.
- (goto-char (point-max))
- (unless
- (re-search-backward "tramp_exit_status [0-9]+" nil t)
- (tramp-error
- orig-vec 'file-error
- "Couldn't find exit status of `%s'"
- (mapconcat 'identity (process-command p) " ")))
- (skip-chars-forward "^ ")
- (unless (zerop (read (current-buffer)))
- (forward-line -1)
- (tramp-error
- orig-vec 'file-error
- "Error copying: `%s'"
- (buffer-substring (point-min) (point-at-eol))))))
+ p v nil tramp-actions-copy-out-of-band))))
;; Reset the transfer process properties.
(tramp-set-connection-property v "process-name" nil)
@@ -2678,7 +2570,7 @@ The method used must be an out-of-band method."
(unless (eq op 'copy)
(if (file-regular-p filename)
(delete-file filename)
- (tramp-compat-delete-directory filename 'recursive))))))
+ (delete-directory filename 'recursive))))))
(defun tramp-sh-handle-make-directory (dir &optional parents)
"Like `make-directory' for Tramp files."
@@ -2718,51 +2610,16 @@ The method used must be an out-of-band method."
;; Dired.
-;; CCC: This does not seem to be enough. Something dies when
-;; we try and delete two directories under Tramp :/
-(defun tramp-sh-handle-dired-recursive-delete-directory (filename)
- "Recursively delete the directory given.
-This is like `dired-recursive-delete-directory' for Tramp files."
- (with-parsed-tramp-file-name filename nil
- ;; Run a shell command 'rm -r <localname>'.
- ;; Code shamelessly stolen from the dired implementation and, um, hacked :)
- (unless (file-exists-p filename)
- (tramp-error v 'file-error "No such directory: %s" filename))
- ;; Which is better, -r or -R? (-r works for me <daniel@danann.net>).
- (tramp-send-command
- v
- (format "rm -rf %s" (tramp-shell-quote-argument localname))
- ;; Don't read the output, do it explicitly.
- nil t)
- ;; Wait for the remote system to return to us...
- ;; This might take a while, allow it plenty of time.
- (tramp-wait-for-output (tramp-get-connection-process v) 120)
- ;; Make sure that it worked...
- (tramp-flush-file-property v (file-name-directory localname))
- (tramp-flush-directory-property v localname)
- (and (file-exists-p filename)
- (tramp-error
- v 'file-error "Failed to recursively delete %s" filename))))
+(defvar dired-compress-file-suffixes)
+(declare-function dired-remove-file "dired-aux")
-(defun tramp-sh-handle-dired-compress-file (file &rest _ok-flag)
+(defun tramp-sh-handle-dired-compress-file (file)
"Like `dired-compress-file' for Tramp files."
- ;; OK-FLAG is valid for XEmacs only, but not implemented.
;; Code stolen mainly from dired-aux.el.
(with-parsed-tramp-file-name file nil
(tramp-flush-file-property v localname)
(save-excursion
- (let ((suffixes
- (if (not (featurep 'xemacs))
- ;; Emacs case
- (symbol-value 'dired-compress-file-suffixes)
- ;; XEmacs has `dired-compression-method-alist', which is
- ;; transformed into `dired-compress-file-suffixes' structure.
- (mapcar
- (lambda (x)
- (list (concat (regexp-quote (nth 1 x)) "\\'")
- nil
- (mapconcat 'identity (nth 3 x) " ")))
- (symbol-value 'dired-compression-method-alist))))
+ (let ((suffixes dired-compress-file-suffixes)
suffix)
;; See if any suffix rule matches this file name.
(while suffixes
@@ -2780,8 +2637,7 @@ This is like `dired-recursive-delete-directory' for Tramp files."
(when (tramp-send-command-and-check
v (concat (nth 2 suffix) " "
(tramp-shell-quote-argument localname)))
- ;; `dired-remove-file' is not defined in XEmacs.
- (tramp-compat-funcall 'dired-remove-file file)
+ (dired-remove-file file)
(string-match (car suffix) file)
(concat (substring file 0 (match-beginning 0))))))
(t
@@ -2791,8 +2647,7 @@ This is like `dired-recursive-delete-directory' for Tramp files."
(when (tramp-send-command-and-check
v (concat "gzip -f "
(tramp-shell-quote-argument localname)))
- ;; `dired-remove-file' is not defined in XEmacs.
- (tramp-compat-funcall 'dired-remove-file file)
+ (dired-remove-file file)
(cond ((file-exists-p (concat file ".gz"))
(concat file ".gz"))
((file-exists-p (concat file ".z"))
@@ -2811,6 +2666,8 @@ This is like `dired-recursive-delete-directory' for Tramp files."
filename switches wildcard full-directory-p)
(when (stringp switches)
(setq switches (split-string switches)))
+ (when (tramp-get-ls-command-with-quoting-style v)
+ (setq switches (append switches '("--quoting-style=literal"))))
(when (and (member "--dired" switches)
(not (tramp-get-ls-command-with-dired v)))
(setq switches (delete "--dired" switches)))
@@ -2896,15 +2753,14 @@ This is like `dired-recursive-delete-directory' for Tramp files."
(unless
(string-match "color" (tramp-get-connection-property v "ls" ""))
(goto-char beg)
- (while (re-search-forward tramp-color-escape-sequence-regexp nil t)
+ (while
+ (re-search-forward tramp-display-escape-sequence-regexp nil t)
(replace-match "")))
;; Decode the output, it could be multibyte.
(decode-coding-region
beg (point-max)
- (or file-name-coding-system
- (and (boundp 'default-file-name-coding-system)
- (symbol-value 'default-file-name-coding-system))))
+ (or file-name-coding-system default-file-name-coding-system))
;; The inserted file could be from somewhere else.
(when (and (not wildcard) (not full-directory-p))
@@ -2931,9 +2787,10 @@ the result will be a local, non-Tramp, file name."
;; Unless NAME is absolute, concat DIR and NAME.
(unless (file-name-absolute-p name)
(setq name (concat (file-name-as-directory dir) name)))
- ;; If NAME is not a Tramp file, run the real handler.
+ ;; If connection is not established yet, run the real handler.
(if (not (tramp-connectable-p name))
- (tramp-run-real-handler 'expand-file-name (list name nil))
+ (tramp-drop-volume-letter
+ (tramp-run-real-handler 'expand-file-name (list name nil)))
;; Dissect NAME.
(with-parsed-tramp-file-name name nil
(unless (tramp-run-real-handler 'file-name-absolute-p (list localname))
@@ -2967,13 +2824,10 @@ the result will be a local, non-Tramp, file name."
(while (string-match "//" localname)
(setq localname (replace-match "/" t t localname)))
;; No tilde characters in file name, do normal
- ;; `expand-file-name' (this does "/./" and "/../"). We bind
- ;; `directory-sep-char' here for XEmacs on Windows, which would
- ;; otherwise use backslash. `default-directory' is bound,
- ;; because on Windows there would be problems with UNC shares or
- ;; Cygwin mounts.
- (let ((directory-sep-char ?/)
- (default-directory (tramp-compat-temporary-file-directory)))
+ ;; `expand-file-name' (this does "/./" and "/../").
+ ;; `default-directory' is bound, because on Windows there would
+ ;; be problems with UNC shares or Cygwin mounts.
+ (let ((default-directory (tramp-compat-temporary-file-directory)))
(tramp-make-tramp-file-name
method user host
(tramp-drop-volume-letter
@@ -2998,7 +2852,12 @@ the result will be a local, non-Tramp, file name."
(defun tramp-sh-handle-start-file-process (name buffer program &rest args)
"Like `start-file-process' for Tramp files."
(with-parsed-tramp-file-name (expand-file-name default-directory) nil
- (let* (;; When PROGRAM matches "*sh", and the first arg is "-c",
+ (let* ((buffer
+ (if buffer
+ (get-buffer-create buffer)
+ ;; BUFFER can be nil. We use a temporary buffer.
+ (generate-new-buffer tramp-temp-buffer-name)))
+ ;; When PROGRAM matches "*sh", and the first arg is "-c",
;; it might be that the arguments exceed the command line
;; length. Therefore, we modify the command.
(heredoc (and (stringp program)
@@ -3061,9 +2920,6 @@ the result will be a local, non-Tramp, file name."
;; `eshell' and friends.
(tramp-current-connection nil))
- (unless buffer
- ;; BUFFER can be nil. We use a temporary buffer.
- (setq buffer (generate-new-buffer tramp-temp-buffer-name)))
(while (get-process name1)
;; NAME must be unique as process name.
(setq i (1+ i)
@@ -3100,7 +2956,7 @@ the result will be a local, non-Tramp, file name."
;; Send the command.
(tramp-send-command v command nil t) ; nooutput
;; Check, whether a pty is associated.
- (unless (tramp-compat-process-get
+ (unless (process-get
(tramp-get-connection-process v) 'remote-tty)
(tramp-error
v 'file-error
@@ -3110,7 +2966,7 @@ the result will be a local, non-Tramp, file name."
;; process. We ignore errors, because the process
;; could have finished already.
(ignore-errors
- (tramp-compat-set-process-query-on-exit-flag p t)
+ (set-process-query-on-exit-flag p t)
(set-marker (process-mark p) (point)))
;; Return process.
p))))
@@ -3242,12 +3098,7 @@ the result will be a local, non-Tramp, file name."
;; because the remote process could have changed them.
(when tmpinput (delete-file tmpinput))
- ;; `process-file-side-effects' has been introduced with GNU
- ;; Emacs 23.2. If set to nil, no remote file will be changed
- ;; by `program'. If it doesn't exist, we assume its default
- ;; value t.
- (unless (and (boundp 'process-file-side-effects)
- (not (symbol-value 'process-file-side-effects)))
+ (unless process-file-side-effects
(tramp-flush-directory-property v ""))
;; Return exit status.
@@ -3273,7 +3124,7 @@ the result will be a local, non-Tramp, file name."
;; `copy-file' handles direct copy and out-of-band methods.
((or (tramp-local-host-p v)
(tramp-method-out-of-band-p v size))
- (copy-file filename tmpfile t t))
+ (copy-file filename tmpfile 'ok-if-already-exists 'keep-time))
;; Use inline encoding for file transfer.
(rem-enc
@@ -3334,30 +3185,6 @@ the result will be a local, non-Tramp, file name."
(run-hooks 'tramp-handle-file-local-copy-hook)
tmpfile)))
-;; This is needed for XEmacs only. Code stolen from files.el.
-(defun tramp-sh-handle-insert-file-contents-literally
- (filename &optional visit beg end replace)
- "Like `insert-file-contents-literally' for Tramp files."
- (let ((format-alist nil)
- (after-insert-file-functions nil)
- (coding-system-for-read 'no-conversion)
- (coding-system-for-write 'no-conversion)
- (find-buffer-file-type-function
- (if (fboundp 'find-buffer-file-type)
- (symbol-function 'find-buffer-file-type)
- nil))
- (inhibit-file-name-handlers
- '(epa-file-handler image-file-handler jka-compr-handler))
- (inhibit-file-name-operation 'insert-file-contents))
- (unwind-protect
- (progn
- (fset 'find-buffer-file-type (lambda (_filename) t))
- (insert-file-contents filename visit beg end replace))
- ;; Save exit.
- (if find-buffer-file-type-function
- (fset 'find-buffer-file-type find-buffer-file-type-function)
- (fmakunbound 'find-buffer-file-type)))))
-
;; CCC grok LOCKNAME
(defun tramp-sh-handle-write-region
(start end filename &optional append visit lockname confirm)
@@ -3374,14 +3201,13 @@ the result will be a local, non-Tramp, file name."
;; (error
;; "tramp-sh-handle-write-region: LOCKNAME must be nil or equal FILENAME"))
- ;; XEmacs takes a coding system as the seventh argument, not `confirm'.
- (when (and (not (featurep 'xemacs)) confirm (file-exists-p filename))
+ (when (and confirm (file-exists-p filename))
(unless (y-or-n-p (format "File %s exists; overwrite anyway? " filename))
(tramp-error v 'file-error "File not overwritten")))
- (let ((uid (or (nth 2 (tramp-compat-file-attributes filename 'integer))
+ (let ((uid (or (nth 2 (file-attributes filename 'integer))
(tramp-get-remote-uid v 'integer)))
- (gid (or (nth 3 (tramp-compat-file-attributes filename 'integer))
+ (gid (or (nth 3 (file-attributes filename 'integer))
(tramp-get-remote-gid v 'integer))))
(if (and (tramp-local-host-p v)
@@ -3439,9 +3265,7 @@ the result will be a local, non-Tramp, file name."
(signal (car err) (cdr err))))
;; Now, `last-coding-system-used' has the right value. Remember it.
- (when (boundp 'last-coding-system-used)
- (setq coding-system-used
- (symbol-value 'last-coding-system-used))))
+ (setq coding-system-used last-coding-system-used))
;; The permissions of the temporary file should be set. If
;; FILENAME does not exist (eq modes nil) it has been
@@ -3451,7 +3275,7 @@ the result will be a local, non-Tramp, file name."
(when modes
(set-file-modes
tmpfile
- (logior (or modes 0) (tramp-compat-octal-to-decimal "0400"))))
+ (logior (or modes 0) (string-to-number "0400" 8))))
;; This is a bit lengthy due to the different methods
;; possible for file transfer. First, we check whether the
@@ -3591,7 +3415,7 @@ the result will be a local, non-Tramp, file name."
(let (last-coding-system-used (need-chown t))
;; Set file modification time.
(when (or (eq visit t) (stringp visit))
- (let ((file-attr (tramp-compat-file-attributes filename 'integer)))
+ (let ((file-attr (file-attributes filename 'integer)))
(set-visited-file-modtime
;; We must pass modtime explicitly, because FILENAME can
;; be different from (buffer-file-name), f.e. if
@@ -3626,7 +3450,7 @@ the result will be a local, non-Tramp, file name."
;; any other remote command.
(defun tramp-sh-handle-vc-registered (file)
"Like `vc-registered' for Tramp files."
- (tramp-compat-with-temp-message ""
+ (with-temp-message ""
(with-parsed-tramp-file-name file nil
(with-tramp-progress-reporter
v 3 (format-message "Checking `vc-registered' for %s" file)
@@ -3783,7 +3607,12 @@ Fall back to normal file name handler if no Tramp handler exists."
(concat "create,modify,move,moved_from,moved_to,move_self,"
"delete,delete_self,ignored"))
((memq 'attribute-change flags) "attrib,ignored"))
- sequence `(,command "-mq" "-e" ,events ,localname)))
+ sequence `(,command "-mq" "-e" ,events ,localname)
+ ;; Make events a list of symbols.
+ events
+ (mapcar
+ (lambda (x) (intern-soft (replace-regexp-in-string "_" "-" x)))
+ (split-string events "," 'omit))))
;; None.
(t (tramp-error
v 'file-notify-error
@@ -3804,10 +3633,10 @@ Fall back to normal file name handler if no Tramp handler exists."
(mapconcat 'identity sequence " "))
(tramp-message v 6 "Run `%s', %S" (mapconcat 'identity sequence " ") p)
(tramp-set-connection-property p "vector" v)
- ;; Needed for `tramp-sh-gvfs-monitor-dir-process-filter'.
- (tramp-compat-process-put p 'events events)
- (tramp-compat-process-put p 'watch-name localname)
- (tramp-compat-set-process-query-on-exit-flag p nil)
+ ;; Needed for process filter.
+ (process-put p 'events events)
+ (process-put p 'watch-name localname)
+ (set-process-query-on-exit-flag p nil)
(set-process-filter p filter)
;; There might be an error if the monitor is not supported.
;; Give the filter a chance to read the output.
@@ -3820,16 +3649,17 @@ Fall back to normal file name handler if no Tramp handler exists."
(defun tramp-sh-gvfs-monitor-dir-process-filter (proc string)
"Read output from \"gvfs-monitor-dir\" and add corresponding \
file-notify events."
- (let ((remote-prefix
+ (let ((events (process-get proc 'events))
+ (remote-prefix
(with-current-buffer (process-buffer proc)
(file-remote-p default-directory)))
- (rest-string (tramp-compat-process-get proc 'rest-string)))
+ (rest-string (process-get proc 'rest-string)))
(when rest-string
(tramp-message proc 10 "Previous string:\n%s" rest-string))
(tramp-message proc 6 "%S\n%s" proc string)
(setq string (concat rest-string string)
;; Attribute change is returned in unused wording.
- string (tramp-compat-replace-regexp-in-string
+ string (replace-regexp-in-string
"ATTRIB CHANGED" "ATTRIBUTE_CHANGED" string))
(when (string-match "Monitoring not supported" string)
(delete-process proc))
@@ -3846,59 +3676,65 @@ file-notify events."
(object
(list
proc
- (intern-soft
- (tramp-compat-replace-regexp-in-string
- "_" "-" (downcase (match-string 4 string))))
+ (list
+ (intern-soft
+ (replace-regexp-in-string
+ "_" "-" (downcase (match-string 4 string)))))
;; File names are returned as absolute paths. We must
;; add the remote prefix.
(concat remote-prefix file)
(when file1 (concat remote-prefix file1)))))
(setq string (replace-match "" nil nil string))
;; Remove watch when file or directory to be watched is deleted.
- (when (and (member (cadr object) '(moved deleted))
- (string-equal
- file (tramp-compat-process-get proc 'watch-name)))
+ (when (and (member (caadr object) '(moved deleted))
+ (string-equal file (process-get proc 'watch-name)))
(delete-process proc))
;; Usually, we would add an Emacs event now. Unfortunately,
;; `unread-command-events' does not accept several events at
- ;; once. Therefore, we apply the callback directly.
- (when (member (cadr object) (tramp-compat-process-get proc 'events))
- (tramp-compat-funcall 'file-notify-callback object))))
+ ;; once. Therefore, we apply the handler directly.
+ (when (member (caadr object) events)
+ (tramp-compat-funcall
+ 'file-notify-handle-event
+ `(file-notify ,object file-notify-callback)))))
;; Save rest of the string.
(when (zerop (length string)) (setq string nil))
(when string (tramp-message proc 10 "Rest string:\n%s" string))
- (tramp-compat-process-put proc 'rest-string string)))
+ (process-put proc 'rest-string string)))
(defun tramp-sh-inotifywait-process-filter (proc string)
"Read output from \"inotifywait\" and add corresponding file-notify events."
- (tramp-message proc 6 "%S\n%s" proc string)
- (dolist (line (split-string string "[\n\r]+" 'omit-nulls))
- ;; Check, whether there is a problem.
- (unless
- (string-match
- (concat "^[^[:blank:]]+"
- "[[:blank:]]+\\([^[:blank:]]+\\)+"
- "\\([[:blank:]]+\\([^\n\r]+\\)\\)?")
- line)
- (tramp-error proc 'file-notify-error "%s" line))
-
- (let ((object
- (list
- proc
- (mapcar
- (lambda (x)
- (intern-soft
- (tramp-compat-replace-regexp-in-string "_" "-" (downcase x))))
- (split-string (match-string 1 line) "," 'omit-nulls))
- (match-string 3 line))))
- ;; Remove watch when file or directory to be watched is deleted.
- (when (equal (cadr object) 'ignored)
- (delete-process proc))
- ;; Usually, we would add an Emacs event now. Unfortunately,
- ;; `unread-command-events' does not accept several events at
- ;; once. Therefore, we apply the callback directly.
- (tramp-compat-funcall 'file-notify-callback object))))
+ (let ((events (process-get proc 'events)))
+ (tramp-message proc 6 "%S\n%s" proc string)
+ (dolist (line (split-string string "[\n\r]+" 'omit))
+ ;; Check, whether there is a problem.
+ (unless
+ (string-match
+ (concat "^[^[:blank:]]+"
+ "[[:blank:]]+\\([^[:blank:]]+\\)+"
+ "\\([[:blank:]]+\\([^\n\r]+\\)\\)?")
+ line)
+ (tramp-error proc 'file-notify-error "%s" line))
+
+ (let ((object
+ (list
+ proc
+ (mapcar
+ (lambda (x)
+ (intern-soft
+ (replace-regexp-in-string "_" "-" (downcase x))))
+ (split-string (match-string 1 line) "," 'omit))
+ (match-string 3 line))))
+ ;; Remove watch when file or directory to be watched is deleted.
+ (when (member (caadr object) '(move-self delete-self ignored))
+ (delete-process proc))
+ ;; Usually, we would add an Emacs event now. Unfortunately,
+ ;; `unread-command-events' does not accept several events at
+ ;; once. Therefore, we apply the handler directly.
+ (when (member (caadr object) events)
+ (tramp-compat-funcall
+ 'file-notify-handle-event
+ `(file-notify ,object file-notify-callback)))))))
;;; Internal Functions:
@@ -3914,7 +3750,7 @@ Only send the definition if it has not already been done."
vec 5 (format-message "Sending script `%s'" name)
;; In bash, leading TABs like in `tramp-vc-registered-read-file-names'
;; could result in unwanted command expansion. Avoid this.
- (setq script (tramp-compat-replace-regexp-in-string
+ (setq script (replace-regexp-in-string
(make-string 1 ?\t) (make-string 8 ? ) script))
;; The script could contain a call of Perl. This is masked with `%s'.
(when (and (string-match "%s" script)
@@ -3987,8 +3823,7 @@ This function expects to be in the right *tramp* buffer."
(setq result (concat "\\" progname))))
(unless result
(when ignore-tilde
- ;; Remove all ~/foo directories from dirlist. In XEmacs,
- ;; `remove' is in CL, and we want to avoid CL dependencies.
+ ;; Remove all ~/foo directories from dirlist.
(let (newdl d)
(while dirlist
(setq d (car dirlist))
@@ -4108,7 +3943,8 @@ file exists and nonzero exit status otherwise."
;; $HISTFILE is set according to `tramp-histfile-override'.
(tramp-send-command
vec (format
- "exec env ENV='' %s PROMPT_COMMAND='' PS1=%s PS2='' PS3='' %s %s"
+ "exec env ENV=%s %s PROMPT_COMMAND='' PS1=%s PS2='' PS3='' %s %s"
+ (or (getenv-internal "ENV" tramp-remote-process-environment) "")
(if (stringp tramp-histfile-override)
(format "HISTFILE=%s"
(tramp-shell-quote-argument tramp-histfile-override))
@@ -4128,7 +3964,7 @@ file exists and nonzero exit status otherwise."
shell)
(setq shell
(with-tramp-connection-property vec "remote-shell"
- ;; CCC: "root" does not exist always, see QNAP 459.
+ ;; CCC: "root" does not exist always, see my QNAP TS-459.
;; Which check could we apply instead?
(tramp-send-command vec "echo ~root" t)
(if (or (string-match "^~root$" (buffer-string))
@@ -4231,45 +4067,36 @@ process to set up. VEC specifies the connection."
;; CCC this can't be the right way to do it. Hm.
(tramp-message vec 5 "Determining coding system")
(with-current-buffer (process-buffer proc)
- (if (featurep 'mule)
- ;; Use MULE to select the right EOL convention for communicating
- ;; with the process.
- (let ((cs (or (and (memq 'utf-8 (coding-system-list))
- (string-match "utf-?8" (tramp-get-remote-locale vec))
- (cons 'utf-8 'utf-8))
- (tramp-compat-funcall 'process-coding-system proc)
- (cons 'undecided 'undecided)))
- cs-decode cs-encode)
- (when (symbolp cs) (setq cs (cons cs cs)))
- (setq cs-decode (or (car cs) 'undecided)
- cs-encode (or (cdr cs) 'undecided))
- (setq cs-encode
- (tramp-compat-coding-system-change-eol-conversion
- cs-encode
- (if (string-match
- "^Darwin" (tramp-get-connection-property vec "uname" ""))
- 'mac 'unix)))
- (tramp-send-command vec "echo foo ; echo bar" t)
- (goto-char (point-min))
- (when (search-forward "\r" nil t)
- (setq cs-decode (tramp-compat-coding-system-change-eol-conversion
- cs-decode 'dos)))
- ;; Special setting for Mac OS X.
- (when (and (string-match
- "^Darwin" (tramp-get-connection-property vec "uname" ""))
- (memq 'utf-8-hfs (coding-system-list)))
- (setq cs-decode 'utf-8-hfs
- cs-encode 'utf-8-hfs))
- (tramp-compat-funcall
- 'set-buffer-process-coding-system cs-decode cs-encode)
- (tramp-message
- vec 5 "Setting coding system to `%s' and `%s'" cs-decode cs-encode))
- ;; Look for ^M and do something useful if found.
+ ;; Use MULE to select the right EOL convention for communicating
+ ;; with the process.
+ (let ((cs (or (and (memq 'utf-8 (coding-system-list))
+ (string-match "utf-?8" (tramp-get-remote-locale vec))
+ (cons 'utf-8 'utf-8))
+ (process-coding-system proc)
+ (cons 'undecided 'undecided)))
+ cs-decode cs-encode)
+ (when (symbolp cs) (setq cs (cons cs cs)))
+ (setq cs-decode (or (car cs) 'undecided)
+ cs-encode (or (cdr cs) 'undecided)
+ cs-encode
+ (coding-system-change-eol-conversion
+ cs-encode
+ (if (string-match
+ "^Darwin" (tramp-get-connection-property vec "uname" ""))
+ 'mac 'unix)))
+ (tramp-send-command vec "echo foo ; echo bar" t)
+ (goto-char (point-min))
(when (search-forward "\r" nil t)
- ;; We have found a ^M but cannot frob the process coding system
- ;; because we're running on a non-MULE Emacs. Let's try
- ;; stty, instead.
- (tramp-send-command vec "stty -onlcr" t))))
+ (setq cs-decode (coding-system-change-eol-conversion cs-decode 'dos)))
+ ;; Special setting for Mac OS X.
+ (when (and (string-match
+ "^Darwin" (tramp-get-connection-property vec "uname" ""))
+ (memq 'utf-8-hfs (coding-system-list)))
+ (setq cs-decode 'utf-8-hfs
+ cs-encode 'utf-8-hfs))
+ (set-buffer-process-coding-system cs-decode cs-encode)
+ (tramp-message
+ vec 5 "Setting coding system to `%s' and `%s'" cs-decode cs-encode)))
(tramp-send-command vec "set +o vi +o emacs" t)
@@ -4326,7 +4153,7 @@ process to set up. VEC specifies the connection."
;; Set `remote-tty' process property.
(let ((tty (tramp-send-command-and-read vec "echo \\\"`tty`\\\"" 'noerror)))
(unless (zerop (length tty))
- (tramp-compat-process-put proc 'remote-tty tty)))
+ (process-put proc 'remote-tty tty)))
;; Dump stty settings in the traces.
(when (>= tramp-verbose 9)
@@ -4335,16 +4162,15 @@ process to set up. VEC specifies the connection."
;; Set the environment.
(tramp-message vec 5 "Setting default environment")
- (let ((env (append `(,(tramp-get-remote-locale vec))
- (copy-sequence tramp-remote-process-environment)))
- unset vars item)
- (while env
- (setq item (tramp-compat-split-string (car env) "="))
+ (let (unset vars)
+ (dolist (item (reverse
+ (append `(,(tramp-get-remote-locale vec))
+ (copy-sequence tramp-remote-process-environment))))
+ (setq item (split-string item "=" 'omit))
(setcdr item (mapconcat 'identity (cdr item) "="))
(if (and (stringp (cdr item)) (not (string-equal (cdr item) "")))
(push (format "%s %s" (car item) (cdr item)) vars)
- (push (car item) unset))
- (setq env (cdr env)))
+ (push (car item) unset)))
(when vars
(tramp-send-command
vec
@@ -4529,8 +4355,7 @@ Goes through the list `tramp-local-coding-commands' and
value
(format-spec-make
?t
- (tramp-file-name-handler
- 'file-remote-p tmpfile 'localname)))))
+ (file-remote-p tmpfile 'localname)))))
(tramp-maybe-send-script vec value name)
(setq rem-dec name)))
(tramp-message
@@ -4726,7 +4551,7 @@ Gateway hops are already opened."
(push
(vector
(tramp-file-name-method hop) (tramp-file-name-user hop)
- (tramp-compat-funcall 'tramp-gw-open-connection vec gw hop) nil nil)
+ (tramp-gw-open-connection vec gw hop) nil nil)
target-alist)
;; For the password prompt, we need the correct values.
;; Therefore, we must remember the gateway vector. But we
@@ -4860,6 +4685,7 @@ connection if a previous connection has died for some reason."
(unless (and p (processp p) (memq (process-status p) '(run open)))
;; If `non-essential' is non-nil, don't reopen a new connection.
+ ;; This variable has been introduced with Emacs 24.1.
(when (and (boundp 'non-essential) (symbol-value 'non-essential))
(throw 'non-essential 'non-essential))
@@ -4897,6 +4723,9 @@ connection if a previous connection has died for some reason."
(options (tramp-ssh-controlmaster-options vec))
(process-connection-type tramp-process-connection-type)
(process-adaptive-read-buffering nil)
+ ;; There are unfortunate settings for "cmdproxy" on
+ ;; W32 systems.
+ (process-coding-system-alist nil)
(coding-system-for-read nil)
;; This must be done in order to avoid our file
;; name handler.
@@ -4914,7 +4743,7 @@ connection if a previous connection has died for some reason."
;; Set sentinel and query flag.
(tramp-set-connection-property p "vector" vec)
(set-process-sentinel p 'tramp-process-sentinel)
- (tramp-compat-set-process-query-on-exit-flag p nil)
+ (set-process-query-on-exit-flag p nil)
(setq tramp-current-connection
(cons (butlast (append vec nil) 2) (current-time))
tramp-current-host (system-name))
@@ -5048,7 +4877,10 @@ connection if a previous connection has died for some reason."
(tramp-message vec 3 "Sending command `%s'" command)
(tramp-send-command vec command t t)
(tramp-process-actions
- p vec pos tramp-actions-before-shell
+ p vec
+ (min
+ pos (with-current-buffer (process-buffer p) (point-max)))
+ tramp-actions-before-shell
(or connection-timeout tramp-connection-timeout))
(tramp-message
vec 3 "Found remote shell prompt on `%s'" l-host))
@@ -5104,7 +4936,12 @@ function waits for output unless NOOUTPUT is set."
(with-current-buffer (process-buffer proc)
(let* (;; Initially, `tramp-end-of-output' is "#$ ". There might
;; be leading escape sequences, which must be ignored.
- (regexp (format "[^#$\n]*%s\r?$" (regexp-quote tramp-end-of-output)))
+ ;; Busyboxes built with the EDITING_ASK_TERMINAL config
+ ;; option send also escape sequences, which must be
+ ;; ignored.
+ (regexp (format "[^#$\n]*%s\\(%s\\)?\r?$"
+ (regexp-quote tramp-end-of-output)
+ tramp-device-escape-sequence-regexp))
;; Sometimes, the commands do not return a newline but a
;; null byte before the shell prompt, for example "git
;; ls-files -c -z ...".
@@ -5207,18 +5044,19 @@ Return ATTR."
(when attr
;; Remove color escape sequences from symlink.
(when (stringp (car attr))
- (while (string-match tramp-color-escape-sequence-regexp (car attr))
+ (while (string-match tramp-display-escape-sequence-regexp (car attr))
(setcar attr (replace-match "" nil nil (car attr)))))
- ;; Convert uid and gid. Use -1 as indication of unusable value.
+ ;; Convert uid and gid. Use `tramp-unknown-id-integer' as
+ ;; indication of unusable value.
(when (and (numberp (nth 2 attr)) (< (nth 2 attr) 0))
- (setcar (nthcdr 2 attr) -1))
+ (setcar (nthcdr 2 attr) tramp-unknown-id-integer))
(when (and (floatp (nth 2 attr))
- (<= (nth 2 attr) (tramp-compat-most-positive-fixnum)))
+ (<= (nth 2 attr) most-positive-fixnum))
(setcar (nthcdr 2 attr) (round (nth 2 attr))))
(when (and (numberp (nth 3 attr)) (< (nth 3 attr) 0))
- (setcar (nthcdr 3 attr) -1))
+ (setcar (nthcdr 3 attr) tramp-unknown-id-integer))
(when (and (floatp (nth 3 attr))
- (<= (nth 3 attr) (tramp-compat-most-positive-fixnum)))
+ (<= (nth 3 attr) most-positive-fixnum))
(setcar (nthcdr 3 attr) (round (nth 3 attr))))
;; Convert last access time.
(unless (listp (nth 4 attr))
@@ -5239,7 +5077,7 @@ Return ATTR."
(when (< (nth 7 attr) 0)
(setcar (nthcdr 7 attr) -1))
(when (and (floatp (nth 7 attr))
- (<= (nth 7 attr) (tramp-compat-most-positive-fixnum)))
+ (<= (nth 7 attr) most-positive-fixnum))
(setcar (nthcdr 7 attr) (round (nth 7 attr))))
;; Convert file mode bits to string.
(unless (stringp (nth 8 attr))
@@ -5291,7 +5129,7 @@ Return ATTR."
(let ((method (tramp-file-name-method vec))
(user (tramp-file-name-user vec))
(host (tramp-file-name-real-host vec))
- (localname (tramp-file-name-localname vec)))
+ (localname (directory-file-name (tramp-file-name-localname vec))))
(when (string-match tramp-ipv6-regexp host)
(setq host (format "[%s]" host)))
(unless (string-match "ftp$" method)
@@ -5319,6 +5157,8 @@ Return ATTR."
;; Variables local to connection.
(defun tramp-get-remote-path (vec)
+ "Compile list of remote directories for $PATH.
+Nonexistent directories are removed from spec."
(with-tramp-connection-property
;; When `tramp-own-remote-path' is in `tramp-remote-path', we
;; cache the result for the session only. Otherwise, the result
@@ -5371,7 +5211,7 @@ Return ATTR."
(when elt1
(setcdr elt1
(append
- (tramp-compat-split-string (or default-remote-path "") ":")
+ (split-string (or default-remote-path "") ":" 'omit)
(cdr elt1)))
(setq remote-path (delq 'tramp-default-remote-path remote-path)))
@@ -5379,7 +5219,7 @@ Return ATTR."
(when elt2
(setcdr elt2
(append
- (tramp-compat-split-string (or own-remote-path "") ":")
+ (split-string (or own-remote-path "") ":" 'omit)
(cdr elt2)))
(setq remote-path (delq 'tramp-own-remote-path remote-path)))
@@ -5407,6 +5247,7 @@ Return ATTR."
remote-path)))))
(defun tramp-get-remote-locale (vec)
+ "Determine remote locale, supporting UTF8 if possible."
(with-tramp-connection-property vec "locale"
(tramp-send-command vec "locale -a")
(let ((candidates '("en_US.utf8" "C.utf8" "en_US.UTF-8"))
@@ -5423,6 +5264,7 @@ Return ATTR."
(format "LC_ALL=%s" (or locale "C")))))
(defun tramp-get-ls-command (vec)
+ "Determine remote `ls' command."
(with-tramp-connection-property vec "ls"
(tramp-message vec 5 "Finding a suitable `ls' command")
(or
@@ -5448,6 +5290,7 @@ Return ATTR."
(tramp-error vec 'file-error "Couldn't find a proper `ls' command"))))
(defun tramp-get-ls-command-with-dired (vec)
+ "Check, whether the remote `ls' command supports the --dired option."
(save-match-data
(with-tramp-connection-property vec "ls-dired"
(tramp-message vec 5 "Checking, whether `ls --dired' works")
@@ -5458,6 +5301,7 @@ Return ATTR."
vec (format "%s --dired -al /dev/null" (tramp-get-ls-command vec))))))
(defun tramp-get-ls-command-with-quoting-style (vec)
+ "Check, whether the remote `ls' command supports the --quoting-style option."
(save-match-data
(with-tramp-connection-property vec "ls-quoting-style"
(tramp-message vec 5 "Checking, whether `ls --quoting-style=shell' works")
@@ -5466,6 +5310,7 @@ Return ATTR."
(tramp-get-ls-command vec))))))
(defun tramp-get-ls-command-with-w-option (vec)
+ "Check, whether the remote `ls' command supports the -w option."
(save-match-data
(with-tramp-connection-property vec "ls-w-option"
(tramp-message vec 5 "Checking, whether `ls -w' works")
@@ -5476,6 +5321,7 @@ Return ATTR."
vec (format "%s -alw" (tramp-get-ls-command vec))))))
(defun tramp-get-test-command (vec)
+ "Determine remote `test' command."
(with-tramp-connection-property vec "test"
(tramp-message vec 5 "Finding a suitable `test' command")
(if (tramp-send-command-and-check vec "test 0")
@@ -5483,6 +5329,7 @@ Return ATTR."
(tramp-find-executable vec "test" (tramp-get-remote-path vec)))))
(defun tramp-get-test-nt-command (vec)
+ "Check, whether the remote `test' command supports the -nt option."
;; Does `test A -nt B' work? Use abominable `find' construct if it
;; doesn't. BSD/OS 4.0 wants the parentheses around the command,
;; for otherwise the shell crashes.
@@ -5504,16 +5351,19 @@ Return ATTR."
"tramp_test_nt %s %s"))))
(defun tramp-get-file-exists-command (vec)
+ "Determine remote command for file existing check."
(with-tramp-connection-property vec "file-exists"
(tramp-message vec 5 "Finding command to check if file exists")
(tramp-find-file-exists-command vec)))
(defun tramp-get-remote-ln (vec)
+ "Determine remote `ln' command."
(with-tramp-connection-property vec "ln"
(tramp-message vec 5 "Finding a suitable `ln' command")
(tramp-find-executable vec "ln" (tramp-get-remote-path vec))))
(defun tramp-get-remote-perl (vec)
+ "Determine remote `perl' command."
(with-tramp-connection-property vec "perl"
(tramp-message vec 5 "Finding a suitable `perl' command")
(let ((result
@@ -5531,6 +5381,7 @@ Return ATTR."
result)))
(defun tramp-get-remote-stat (vec)
+ "Determine remote `stat' command."
(with-tramp-connection-property vec "stat"
(tramp-message vec 5 "Finding a suitable `stat' command")
(let ((result (tramp-find-executable
@@ -5551,6 +5402,7 @@ Return ATTR."
result)))
(defun tramp-get-remote-readlink (vec)
+ "Determine remote `readlink' command."
(with-tramp-connection-property vec "readlink"
(tramp-message vec 5 "Finding a suitable `readlink' command")
(let ((result (tramp-find-executable
@@ -5561,11 +5413,13 @@ Return ATTR."
result))))
(defun tramp-get-remote-trash (vec)
+ "Determine remote `trash' command."
(with-tramp-connection-property vec "trash"
(tramp-message vec 5 "Finding a suitable `trash' command")
(tramp-find-executable vec "trash" (tramp-get-remote-path vec))))
(defun tramp-get-remote-touch (vec)
+ "Determine remote `touch' command."
(with-tramp-connection-property vec "touch"
(tramp-message vec 5 "Finding a suitable `touch' command")
(let ((result (tramp-find-executable
@@ -5585,22 +5439,25 @@ Return ATTR."
"%s -t %s %s"
result
(format-time-string "%Y%m%d%H%M.%S")
- (tramp-file-name-handler 'file-remote-p tmpfile 'localname))))
+ (file-remote-p tmpfile 'localname))))
(delete-file tmpfile))
result)))
(defun tramp-get-remote-gvfs-monitor-dir (vec)
+ "Determine remote `gvfs-monitor-dir' command."
(with-tramp-connection-property vec "gvfs-monitor-dir"
(tramp-message vec 5 "Finding a suitable `gvfs-monitor-dir' command")
(tramp-find-executable
vec "gvfs-monitor-dir" (tramp-get-remote-path vec) t t)))
(defun tramp-get-remote-inotifywait (vec)
+ "Determine remote `inotifywait' command."
(with-tramp-connection-property vec "inotifywait"
(tramp-message vec 5 "Finding a suitable `inotifywait' command")
(tramp-find-executable vec "inotifywait" (tramp-get-remote-path vec) t t)))
(defun tramp-get-remote-id (vec)
+ "Determine remote `id' command."
(with-tramp-connection-property vec "id"
(tramp-message vec 5 "Finding POSIX `id' command")
(catch 'id-found
@@ -5614,6 +5471,7 @@ Return ATTR."
(setq dl (cdr dl))))))))
(defun tramp-get-remote-uid-with-id (vec id-format)
+ "Implement `tramp-get-remote-uid' for Tramp files using `id'."
(tramp-send-command-and-read
vec
(format "%s -u%s %s"
@@ -5623,6 +5481,7 @@ Return ATTR."
"" "| sed -e s/^/\\\"/ -e s/\\$/\\\"/"))))
(defun tramp-get-remote-uid-with-perl (vec id-format)
+ "Implement `tramp-get-remote-uid' for Tramp files using a Perl script."
(tramp-send-command-and-read
vec
(format "%s -le '%s'"
@@ -5632,6 +5491,7 @@ Return ATTR."
"print \"\\\"\", scalar getpwuid($>), \"\\\"\""))))
(defun tramp-get-remote-python (vec)
+ "Determine remote `python' command."
(with-tramp-connection-property vec "python"
(tramp-message vec 5 "Finding a suitable `python' command")
(or (tramp-find-executable vec "python" (tramp-get-remote-path vec))
@@ -5639,6 +5499,7 @@ Return ATTR."
(tramp-find-executable vec "python3" (tramp-get-remote-path vec)))))
(defun tramp-get-remote-uid-with-python (vec id-format)
+ "Implement `tramp-get-remote-uid' for Tramp files using `python'."
(tramp-send-command-and-read
vec
(format "%s -c \"%s\""
@@ -5648,6 +5509,8 @@ Return ATTR."
"import os, pwd; print ('\\\"' + pwd.getpwuid(os.getuid())[0] + '\\\"')"))))
(defun tramp-get-remote-uid (vec id-format)
+ "The uid of the remote connection VEC, in ID-FORMAT.
+ID-FORMAT valid values are `string' and `integer'."
(with-tramp-connection-property vec (format "uid-%s" id-format)
(let ((res
(ignore-errors
@@ -5660,11 +5523,14 @@ Return ATTR."
(tramp-get-remote-uid-with-python vec id-format))))))
;; Ensure there is a valid result.
(cond
- ((and (equal id-format 'integer) (not (integerp res))) -1)
- ((and (equal id-format 'string) (not (stringp res))) "UNKNOWN")
+ ((and (equal id-format 'integer) (not (integerp res)))
+ tramp-unknown-id-integer)
+ ((and (equal id-format 'string) (not (stringp res)))
+ tramp-unknown-id-string)
(t res)))))
(defun tramp-get-remote-gid-with-id (vec id-format)
+ "Implement `tramp-get-remote-gid' for Tramp files using `id'."
(tramp-send-command-and-read
vec
(format "%s -g%s %s"
@@ -5674,6 +5540,7 @@ Return ATTR."
"" "| sed -e s/^/\\\"/ -e s/\\$/\\\"/"))))
(defun tramp-get-remote-gid-with-perl (vec id-format)
+ "Implement `tramp-get-remote-gid' for Tramp files using a Perl script."
(tramp-send-command-and-read
vec
(format "%s -le '%s'"
@@ -5683,6 +5550,7 @@ Return ATTR."
"print \"\\\"\", scalar getgrgid($)), \"\\\"\""))))
(defun tramp-get-remote-gid-with-python (vec id-format)
+ "Implement `tramp-get-remote-gid' for Tramp files using `python'."
(tramp-send-command-and-read
vec
(format "%s -c \"%s\""
@@ -5692,6 +5560,8 @@ Return ATTR."
"import os, grp; print ('\\\"' + grp.getgrgid(os.getgid())[0] + '\\\"')"))))
(defun tramp-get-remote-gid (vec id-format)
+ "The gid of the remote connection VEC, in ID-FORMAT.
+ID-FORMAT valid values are `string' and `integer'."
(with-tramp-connection-property vec (format "gid-%s" id-format)
(let ((res
(ignore-errors
@@ -5704,11 +5574,14 @@ Return ATTR."
(tramp-get-remote-gid-with-python vec id-format))))))
;; Ensure there is a valid result.
(cond
- ((and (equal id-format 'integer) (not (integerp res))) -1)
- ((and (equal id-format 'string) (not (stringp res))) "UNKNOWN")
+ ((and (equal id-format 'integer) (not (integerp res)))
+ tramp-unknown-id-integer)
+ ((and (equal id-format 'string) (not (stringp res)))
+ tramp-unknown-id-string)
(t res)))))
(defun tramp-get-env-with-u-option (vec)
+ "Check, whether the remote `env' command supports the -u option."
(with-tramp-connection-property vec "env-u-option"
(tramp-message vec 5 "Checking, whether `env -u' works")
;; Option "-u" is a GNU extension.
@@ -5771,18 +5644,14 @@ function cell is returned to be applied on a buffer."
`(lambda (beg end)
(,coding beg end)
(let ((coding-system-for-write 'binary)
- (coding-system-for-read 'binary)
- (default-directory
- (tramp-compat-temporary-file-directory)))
+ (coding-system-for-read 'binary))
(apply
'tramp-call-process-region ,vec (point-min) (point-max)
(car (split-string ,compress)) t t nil
(cdr (split-string ,compress)))))
`(lambda (beg end)
(let ((coding-system-for-write 'binary)
- (coding-system-for-read 'binary)
- (default-directory
- (tramp-compat-temporary-file-directory)))
+ (coding-system-for-read 'binary))
(apply
'tramp-call-process-region ,vec beg end
(car (split-string ,compress)) t t nil
@@ -5875,5 +5744,6 @@ function cell is returned to be applied on a buffer."
;; rsync).
;; * Keep a second connection open for out-of-band methods like scp or
;; rsync.
+;; * Implement completion for "/method:user@host:~<abc> TAB".
;;; tramp-sh.el ends here
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index 509e2e388b..be7eb88b9c 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -74,14 +74,16 @@
(defcustom tramp-smb-program "smbclient"
"Name of SMB client to run."
:group 'tramp
- :type 'string)
+ :type 'string
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-smb-acl-program "smbcacls"
"Name of SMB acls to run."
:group 'tramp
:type 'string
- :version "24.4")
+ :version "24.4"
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-smb-conf "/dev/null"
@@ -89,7 +91,8 @@
If it is nil, no smb.conf will be added to the `tramp-smb-program'
call, letting the SMB client use the default one."
:group 'tramp
- :type '(choice (const nil) (file :must-match t)))
+ :type '(choice (const nil) (file :must-match t))
+ :require 'tramp)
(defvar tramp-smb-version nil
"Version string of the SMB client.")
@@ -129,7 +132,8 @@ call, letting the SMB client use the default one."
"ERRnosuchshare"
;; Windows 4.0 (Windows NT), Windows 5.0 (Windows 2000),
;; Windows 5.1 (Windows XP), Windows 5.2 (Windows Server 2003),
- ;; Windows 6.0 (Windows Vista), Windows 6.1 (Windows 7).
+ ;; Windows 6.0 (Windows Vista), Windows 6.1 (Windows 7),
+ ;; Windows 6.3 (Windows Server 2012, Windows 10).
"NT_STATUS_ACCESS_DENIED"
"NT_STATUS_ACCOUNT_LOCKED_OUT"
"NT_STATUS_BAD_NETWORK_NAME"
@@ -224,7 +228,6 @@ See `tramp-actions-before-shell' for more info.")
(directory-files . tramp-smb-handle-directory-files)
(directory-files-and-attributes
. tramp-handle-directory-files-and-attributes)
- (dired-call-process . ignore)
(dired-compress-file . ignore)
(dired-uncache . tramp-handle-dired-uncache)
(expand-file-name . tramp-smb-handle-expand-file-name)
@@ -265,6 +268,7 @@ See `tramp-actions-before-shell' for more info.")
(make-auto-save-file-name . tramp-handle-make-auto-save-file-name)
(make-directory . tramp-smb-handle-make-directory)
(make-directory-internal . tramp-smb-handle-make-directory-internal)
+ (make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
(make-symbolic-link . tramp-smb-handle-make-symbolic-link)
(process-file . tramp-smb-handle-process-file)
(rename-file . tramp-smb-handle-rename-file)
@@ -276,7 +280,8 @@ See `tramp-actions-before-shell' for more info.")
(shell-command . tramp-handle-shell-command)
(start-file-process . tramp-smb-handle-start-file-process)
(substitute-in-file-name . tramp-smb-handle-substitute-in-file-name)
- (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
+ (temporary-file-directory . tramp-handle-temporary-file-directory)
+ (unhandled-file-name-directory . ignore)
(vc-registered . ignore)
(verify-visited-file-modtime . tramp-handle-verify-visited-file-modtime)
(write-region . tramp-smb-handle-write-region))
@@ -291,7 +296,8 @@ If it isn't found in the local $PATH, the absolute path of winexe
shall be given. This is needed for remote processes."
:group 'tramp
:type 'string
- :version "24.3")
+ :version "24.3"
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-smb-winexe-shell-command "powershell.exe"
@@ -299,7 +305,8 @@ shall be given. This is needed for remote processes."
This must be Powershell V2 compatible."
:group 'tramp
:type 'string
- :version "24.3")
+ :version "24.3"
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-smb-winexe-shell-command-switch "-file -"
@@ -307,7 +314,8 @@ This must be Powershell V2 compatible."
This can be used to disable echo etc."
:group 'tramp
:type 'string
- :version "24.3")
+ :version "24.3"
+ :require 'tramp)
;; It must be a `defsubst' in order to push the whole code into
;; tramp-loaddefs.el. Otherwise, there would be recursive autoloading.
@@ -419,15 +427,14 @@ pass to the OPERATION."
(unwind-protect
(progn
(make-directory tmpdir)
- (tramp-compat-copy-directory
- dirname tmpdir keep-date 'parents)
- (tramp-compat-copy-directory
+ (copy-directory dirname tmpdir keep-date 'parents)
+ (copy-directory
(expand-file-name (file-name-nondirectory dirname) tmpdir)
newname keep-date parents))
- (tramp-compat-delete-directory tmpdir 'recursive))))
+ (delete-directory tmpdir 'recursive))))
;; We can copy recursively.
- ((or t1 t2)
+ ((and (or t1 t2) (tramp-smb-get-cifs-capabilities v))
(when (and (file-directory-p newname)
(not (string-equal (file-name-nondirectory dirname)
(file-name-nondirectory newname))))
@@ -448,7 +455,7 @@ pass to the OPERATION."
(port (tramp-file-name-port v))
(share (tramp-smb-get-share v))
(localname (file-name-as-directory
- (tramp-compat-replace-regexp-in-string
+ (replace-regexp-in-string
"\\\\" "/" (tramp-smb-get-localname v))))
(tmpdir (make-temp-name
(expand-file-name
@@ -510,7 +517,7 @@ pass to the OPERATION."
(tramp-message
v 6 "%s" (mapconcat 'identity (process-command p) " "))
(tramp-set-connection-property p "vector" v)
- (tramp-compat-set-process-query-on-exit-flag p nil)
+ (set-process-query-on-exit-flag p nil)
(tramp-process-actions p v nil tramp-smb-actions-with-tar)
(while (memq (process-status p) '(run open))
@@ -520,7 +527,7 @@ pass to the OPERATION."
;; Reset the transfer process properties.
(tramp-set-connection-property v "process-name" nil)
(tramp-set-connection-property v "process-buffer" nil)
- (when t1 (tramp-compat-delete-directory tmpdir 'recurse))))
+ (when t1 (delete-directory tmpdir 'recurse))))
;; Handle KEEP-DATE argument.
(when keep-date
@@ -543,7 +550,7 @@ pass to the OPERATION."
(defun tramp-smb-handle-copy-file
(filename newname &optional ok-if-already-exists keep-date
- _preserve-uid-gid _preserve-extended-attributes)
+ _preserve-uid-gid _preserve-extended-attributes)
"Like `copy-file' for Tramp files.
KEEP-DATE has no effect in case NEWNAME resides on an SMB server.
PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
@@ -555,7 +562,8 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
0 (format "Copying %s to %s" filename newname)
(if (file-directory-p filename)
- (tramp-compat-copy-directory filename newname keep-date t t)
+ (tramp-compat-copy-directory
+ filename newname keep-date 'parents 'copy-contents)
(let ((tmpfile (file-local-copy filename)))
(if tmpfile
@@ -597,15 +605,14 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
"Like `delete-directory' for Tramp files."
(setq directory (directory-file-name (expand-file-name directory)))
(when (file-exists-p directory)
- (if recursive
- (mapc
- (lambda (file)
- (if (file-directory-p file)
- (tramp-compat-delete-directory file recursive)
- (delete-file file)))
- ;; We do not want to delete "." and "..".
- (directory-files
- directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")))
+ (when recursive
+ (mapc
+ (lambda (file)
+ (if (file-directory-p file)
+ (delete-directory file recursive)
+ (delete-file file)))
+ ;; We do not want to delete "." and "..".
+ (directory-files directory 'full directory-files-no-dot-files-regexp)))
(with-parsed-tramp-file-name directory nil
;; We must also flush the cache of the directory, because
@@ -664,8 +671,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
result)))
;; Sort them if necessary.
(unless nosort (setq result (sort result 'string-lessp)))
- ;; Remove double entries.
- (tramp-compat-delete-dups result)))
+ result))
(defun tramp-smb-handle-expand-file-name (name &optional dir)
"Like `expand-file-name' for Tramp files."
@@ -730,7 +736,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(domain (tramp-file-name-domain v))
(port (tramp-file-name-port v))
(share (tramp-smb-get-share v))
- (localname (tramp-compat-replace-regexp-in-string
+ (localname (replace-regexp-in-string
"\\\\" "/" (tramp-smb-get-localname v)))
(args (list (concat "//" real-host "/" share) "-E")))
@@ -765,11 +771,10 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(tramp-message
v 6 "%s" (mapconcat 'identity (process-command p) " "))
(tramp-set-connection-property p "vector" v)
- (tramp-compat-set-process-query-on-exit-flag p nil)
+ (set-process-query-on-exit-flag p nil)
(tramp-process-actions p v nil tramp-smb-actions-get-acl)
(when (> (point-max) (point-min))
- (tramp-compat-funcall
- 'substring-no-properties (buffer-string)))))
+ (substring-no-properties (buffer-string)))))
;; Reset the transfer process properties.
(tramp-set-connection-property v "process-name" nil)
@@ -909,17 +914,17 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
"Like `file-name-all-completions' for Tramp files."
(all-completions
filename
- (with-parsed-tramp-file-name directory nil
+ (with-parsed-tramp-file-name (expand-file-name directory) nil
(with-tramp-file-property v localname "file-name-all-completions"
(save-match-data
- (let ((entries (tramp-smb-get-file-entries directory)))
- (mapcar
- (lambda (x)
- (list
- (if (string-match "d" (nth 1 x))
- (file-name-as-directory (nth 0 x))
- (nth 0 x))))
- entries)))))))
+ (delete-dups
+ (mapcar
+ (lambda (x)
+ (list
+ (if (string-match "d" (nth 1 x))
+ (file-name-as-directory (nth 0 x))
+ (nth 0 x))))
+ (tramp-smb-get-file-entries directory))))))))
(defun tramp-smb-handle-file-writable-p (filename)
"Like `file-writable-p' for Tramp files."
@@ -1068,9 +1073,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(tramp-smb-send-command
v
(if (tramp-smb-get-cifs-capabilities v)
- (format
- "posix_mkdir \"%s\" %s"
- file (tramp-compat-decimal-to-octal (default-file-modes)))
+ (format "posix_mkdir \"%s\" %o" file (default-file-modes))
(format "mkdir \"%s\"" file)))
;; We must also flush the cache of the directory, because
;; `file-attributes' reads the values from there.
@@ -1240,12 +1243,7 @@ target of the symlink differ."
(unless outbuf
(kill-buffer (tramp-get-connection-property v "process-buffer" nil)))
- ;; `process-file-side-effects' has been introduced with GNU
- ;; Emacs 23.2. If set to nil, no remote file will be changed
- ;; by `program'. If it doesn't exist, we assume its default
- ;; value t.
- (unless (and (boundp 'process-file-side-effects)
- (not (symbol-value 'process-file-side-effects)))
+ (unless process-file-side-effects
(tramp-flush-directory-property v ""))
;; Return exit status.
@@ -1296,9 +1294,10 @@ target of the symlink differ."
(tramp-error v2 'file-error "Cannot rename `%s'" filename))))
;; We must rename via copy.
- (tramp-compat-copy-file filename newname ok-if-already-exists t t t)
+ (copy-file
+ filename newname ok-if-already-exists 'keep-time 'preserve-uid-gid)
(if (file-directory-p filename)
- (tramp-compat-delete-directory filename 'recursive)
+ (delete-directory filename 'recursive)
(delete-file filename)))))
(defun tramp-smb-action-set-acl (proc vec)
@@ -1325,10 +1324,10 @@ target of the symlink differ."
(domain (tramp-file-name-domain v))
(port (tramp-file-name-port v))
(share (tramp-smb-get-share v))
- (localname (tramp-compat-replace-regexp-in-string
+ (localname (replace-regexp-in-string
"\\\\" "/" (tramp-smb-get-localname v)))
(args (list (concat "//" real-host "/" share) "-E" "-S"
- (tramp-compat-replace-regexp-in-string
+ (replace-regexp-in-string
"\n" "," acl-string))))
(if (not (zerop (length real-user)))
@@ -1364,7 +1363,7 @@ target of the symlink differ."
(tramp-message
v 6 "%s" (mapconcat 'identity (process-command p) " "))
(tramp-set-connection-property p "vector" v)
- (tramp-compat-set-process-query-on-exit-flag p nil)
+ (set-process-query-on-exit-flag p nil)
(tramp-process-actions p v nil tramp-smb-actions-set-acl)
(goto-char (point-max))
(unless (re-search-backward "tramp_exit_status [0-9]+" nil t)
@@ -1387,9 +1386,7 @@ target of the symlink differ."
(when (tramp-smb-get-cifs-capabilities v)
(tramp-flush-file-property v localname)
(unless (tramp-smb-send-command
- v (format "chmod \"%s\" %s"
- (tramp-smb-get-localname v)
- (tramp-compat-decimal-to-octal mode)))
+ v (format "chmod \"%s\" %o" (tramp-smb-get-localname v) mode))
(tramp-error
v 'file-error "Error while changing file's mode %s" filename)))))
@@ -1399,16 +1396,18 @@ target of the symlink differ."
(defun tramp-smb-handle-start-file-process (name buffer program &rest args)
"Like `start-file-process' for Tramp files."
(with-parsed-tramp-file-name default-directory nil
- (let ((command (mapconcat 'identity (cons program args) " "))
- (bmp (and (buffer-live-p buffer) (buffer-modified-p buffer)))
- (name1 name)
- (i 0))
+ (let* ((buffer
+ (if buffer
+ (get-buffer-create buffer)
+ ;; BUFFER can be nil. We use a temporary buffer.
+ (generate-new-buffer tramp-temp-buffer-name)))
+ (command (mapconcat 'identity (cons program args) " "))
+ (bmp (and (buffer-live-p buffer) (buffer-modified-p buffer)))
+ (name1 name)
+ (i 0))
(unwind-protect
(save-excursion
(save-restriction
- (unless buffer
- ;; BUFFER can be nil. We use a temporary buffer.
- (setq buffer (generate-new-buffer tramp-temp-buffer-name)))
(while (get-process name1)
;; NAME must be unique as process name.
(setq i (1+ i)
@@ -1460,9 +1459,7 @@ errors for shares like \"C$/\", which are common in Microsoft Windows."
"Like `write-region' for Tramp files."
(setq filename (expand-file-name filename))
(with-parsed-tramp-file-name filename nil
- ;; XEmacs takes a coding system as the seventh argument, not `confirm'.
- (when (and (not (featurep 'xemacs))
- confirm (file-exists-p filename))
+ (when (and confirm (file-exists-p filename))
(unless (y-or-n-p (format "File %s exists; overwrite anyway? "
filename))
(tramp-error v 'file-error "File not overwritten")))
@@ -1575,10 +1572,6 @@ Result is a list of (LOCALNAME MODE SIZE MONTH DAY TIME YEAR)."
;; Add directory itself.
(push '("" "drwxrwxrwx" 0 (0 0)) res)
- ;; There's a very strange error (debugged with XEmacs 21.4.14)
- ;; If there's no short delay, it returns nil. No idea about.
- (when (featurep 'xemacs) (sleep-for 0.01))
-
;; Return entries.
(delq nil res))))))
@@ -1738,7 +1731,7 @@ Result is the list (LOCALNAME MODE SIZE MTIME)."
(member
"pathnames"
(split-string
- (buffer-substring (point) (point-at-eol)) nil t)))))))))
+ (buffer-substring (point) (point-at-eol)) nil 'omit)))))))))
(defun tramp-smb-get-stat-capability (vec)
"Check, whether the SMB server supports the STAT command."
@@ -1878,7 +1871,7 @@ If ARGUMENT is non-nil, use it as argument for
(tramp-message
vec 6 "%s" (mapconcat 'identity (process-command p) " "))
(tramp-set-connection-property p "vector" vec)
- (tramp-compat-set-process-query-on-exit-flag p nil)
+ (set-process-query-on-exit-flag p nil)
;; Set variables for computing the prompt for reading password.
(setq tramp-current-method tramp-smb-method
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index cb8e4d4d4c..f262b739ad 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -34,9 +34,7 @@
;; Notes:
;; -----
;;
-;; This package only works for Emacs 22.1 and higher, and for XEmacs 21.4
-;; and higher. For XEmacs 21, you need the package `fsf-compat' for
-;; the `with-timeout' macro.
+;; This package only works for Emacs 23.1 and higher.
;;
;; Also see the todo list at the bottom of this file.
;;
@@ -61,11 +59,7 @@
;; Pacify byte-compiler.
(eval-when-compile
(require 'cl))
-(defvar bkup-backup-directory-info)
-(defvar directory-sep-char)
(defvar eshell-path-env)
-(defvar ls-lisp-use-insert-directory-program)
-(defvar outline-regexp)
;;; User Customizable Internal Variables:
@@ -82,7 +76,8 @@
"Whether Tramp is enabled.
If it is set to nil, all remote file names are used literally."
:group 'tramp
- :type 'boolean)
+ :type 'boolean
+ :require 'tramp)
(defcustom tramp-verbose 3
"Verbosity level for Tramp messages.
@@ -100,13 +95,11 @@ Any level x includes messages for all levels 1 .. x-1. The levels are
9 test commands
10 traces (huge)."
:group 'tramp
- :type 'integer)
+ :type 'integer
+ :require 'tramp)
-;; Emacs case.
-(eval-and-compile
- (when (boundp 'backup-directory-alist)
- (defcustom tramp-backup-directory-alist nil
- "Alist of filename patterns and backup directory names.
+(defcustom tramp-backup-directory-alist nil
+ "Alist of filename patterns and backup directory names.
Each element looks like (REGEXP . DIRECTORY), with the same meaning like
in `backup-directory-alist'. If a Tramp file is backed up, and DIRECTORY
is a local file name, the backup directory is prepended with Tramp file
@@ -116,34 +109,10 @@ name prefix \(method, user, host) of file.
gives the same backup policy for Tramp files on their hosts like the
policy for local files."
- :group 'tramp
- :type '(repeat (cons (regexp :tag "Regexp matching filename")
- (directory :tag "Backup directory name"))))))
-
-;; XEmacs case. We cannot check for `bkup-backup-directory-info', because
-;; the package "backup-dir" might not be loaded yet.
-(eval-and-compile
- (when (featurep 'xemacs)
- (defcustom tramp-bkup-backup-directory-info nil
- "Alist of (FILE-REGEXP BACKUP-DIR OPTIONS ...))
-It has the same meaning like `bkup-backup-directory-info' from package
-`backup-dir'. If a Tramp file is backed up, and BACKUP-DIR is a local
-file name, the backup directory is prepended with Tramp file name prefix
-\(method, user, host) of file.
-
-\(setq tramp-bkup-backup-directory-info bkup-backup-directory-info)
-
-gives the same backup policy for Tramp files on their hosts like the
-policy for local files."
- :type '(repeat
- (list (regexp :tag "File regexp")
- (string :tag "Backup Dir")
- (set :inline t
- (const ok-create)
- (const full-path)
- (const prepend-name)
- (const search-upward))))
- :group 'tramp)))
+ :group 'tramp
+ :type '(repeat (cons (regexp :tag "Regexp matching filename")
+ (directory :tag "Backup directory name")))
+ :require 'tramp)
(defcustom tramp-auto-save-directory nil
"Put auto-save files in this directory, if set.
@@ -151,12 +120,11 @@ The idea is to use a local directory so that auto-saving is faster.
This setting has precedence over `auto-save-file-name-transforms'."
:group 'tramp
:type '(choice (const :tag "Use default" nil)
- (directory :tag "Auto save directory name")))
+ (directory :tag "Auto save directory name"))
+ :require 'tramp)
(defcustom tramp-encoding-shell
- (if (memq system-type '(windows-nt))
- (getenv "COMSPEC")
- "/bin/sh")
+ (or (tramp-compat-funcall 'w32-shell-name) "/bin/sh")
"Use this program for encoding and decoding commands on the local host.
This shell is used to execute the encoding and decoding command on the
local host, so if you want to use `~' in those commands, you should
@@ -177,24 +145,25 @@ Note that this variable is not used for remote commands. There are
mechanisms in tramp.el which automatically determine the right shell to
use for the remote host."
:group 'tramp
- :type '(file :must-match t))
+ :type '(file :must-match t)
+ :require 'tramp)
(defcustom tramp-encoding-command-switch
- (if (string-match "cmd\\.exe" (or tramp-encoding-shell ""))
- "/c"
- "-c")
+ (if (tramp-compat-funcall 'w32-shell-dos-semantics) "/c" "-c")
"Use this switch together with `tramp-encoding-shell' for local commands.
See the variable `tramp-encoding-shell' for more information."
:group 'tramp
- :type 'string)
+ :type 'string
+ :require 'tramp)
(defcustom tramp-encoding-command-interactive
- (unless (string-match "cmd\\.exe" (or tramp-encoding-shell "")) "-i")
+ (unless (tramp-compat-funcall 'w32-shell-dos-semantics) "-i")
"Use this switch together with `tramp-encoding-shell' for interactive shells.
See the variable `tramp-encoding-shell' for more information."
:version "24.1"
:group 'tramp
- :type '(choice (const nil) string))
+ :type '(choice (const nil) string)
+ :require 'tramp)
;;;###tramp-autoload
(defvar tramp-methods nil
@@ -329,32 +298,17 @@ useful only in combination with `tramp-default-proxies-alist'.")
;; PuTTY is installed. We don't take it, if it is installed on a
;; non-windows system, or pscp from the pssh (parallel ssh) package
;; is found.
- ((and (eq system-type 'windows-nt)
- (executable-find "pscp"))
- (if (or (fboundp 'password-read)
- (fboundp 'auth-source-user-or-password)
- (fboundp 'auth-source-search)
- ;; Pageant is running.
- (tramp-compat-process-running-p "Pageant"))
- "pscp"
- "plink"))
+ ((and (eq system-type 'windows-nt) (executable-find "pscp")) "pscp")
;; There is an ssh installation.
- ((executable-find "scp")
- (if (or (fboundp 'password-read)
- (fboundp 'auth-source-user-or-password)
- (fboundp 'auth-source-search)
- ;; ssh-agent is running.
- (getenv "SSH_AUTH_SOCK")
- (getenv "SSH_AGENT_PID"))
- "scp"
- "ssh"))
+ ((executable-find "scp") "scp")
;; Fallback.
(t "ftp"))
"Default method to use for transferring files.
See `tramp-methods' for possibilities.
Also see `tramp-default-method-alist'."
:group 'tramp
- :type 'string)
+ :type 'string
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-default-method-alist nil
@@ -372,7 +326,8 @@ See `tramp-methods' for a list of possibilities for METHOD."
:group 'tramp
:type '(repeat (list (choice :tag "Host regexp" regexp sexp)
(choice :tag "User regexp" regexp sexp)
- (choice :tag "Method name" string (const nil)))))
+ (choice :tag "Method name" string (const nil))))
+ :require 'tramp)
(defcustom tramp-default-user nil
"Default user to use for transferring files.
@@ -381,7 +336,8 @@ It is nil by default; otherwise settings in configuration files like
This variable is regarded as obsolete, and will be removed soon."
:group 'tramp
- :type '(choice (const nil) string))
+ :type '(choice (const nil) string)
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-default-user-alist nil
@@ -397,13 +353,15 @@ empty string for the method name."
:group 'tramp
:type '(repeat (list (choice :tag "Method regexp" regexp sexp)
(choice :tag " Host regexp" regexp sexp)
- (choice :tag " User name" string (const nil)))))
+ (choice :tag " User name" string (const nil))))
+ :require 'tramp)
(defcustom tramp-default-host (system-name)
"Default host to use for transferring files.
Useful for su and sudo methods mostly."
:group 'tramp
- :type 'string)
+ :type 'string
+ :require 'tramp)
;;;###tramp-autoload
(defcustom tramp-default-host-alist nil
@@ -420,7 +378,8 @@ empty string for the method name."
:version "24.4"
:type '(repeat (list (choice :tag "Method regexp" regexp sexp)
(choice :tag " User regexp" regexp sexp)
- (choice :tag " Host name" string (const nil)))))
+ (choice :tag " Host name" string (const nil))))
+ :require 'tramp)
(defcustom tramp-default-proxies-alist nil
"Route to be followed for specific host/user pairs.
@@ -439,13 +398,15 @@ interpreted as a regular expression which always matches."
:group 'tramp
:type '(repeat (list (choice :tag "Host regexp" regexp sexp)
(choice :tag "User regexp" regexp sexp)
- (choice :tag " Proxy name" string (const nil)))))
+ (choice :tag " Proxy name" string (const nil))))
+ :require 'tramp)
(defcustom tramp-save-ad-hoc-proxies nil
"Whether to save ad-hoc proxies persistently."
:group 'tramp
:version "24.3"
- :type 'boolean)
+ :type 'boolean
+ :require 'tramp)
(defcustom tramp-restricted-shell-hosts-alist
(when (memq system-type '(windows-nt))
@@ -457,7 +418,8 @@ proxies only, see `tramp-default-proxies-alist'. If the local
host runs a registered shell, it shall be added to this list, too."
:version "24.3"
:group 'tramp
- :type '(repeat (regexp :tag "Host regexp")))
+ :type '(repeat (regexp :tag "Host regexp"))
+ :require 'tramp)
;;;###tramp-autoload
(defconst tramp-local-host-regexp
@@ -482,6 +444,7 @@ names from FILE for completion. The following predefined FUNCTIONs exists:
* `tramp-parse-sknownhosts' for \"~/.ssh2/knownhosts/*\" like files,
* `tramp-parse-hosts' for \"/etc/hosts\" like files,
* `tramp-parse-passwd' for \"/etc/passwd\" like files.
+ * `tramp-parse-etc-group' for \"/etc/group\" like files.
* `tramp-parse-netrc' for \"~/.netrc\" like files.
* `tramp-parse-putty' for PuTTY registered sessions.
@@ -517,14 +480,16 @@ the remote shell.")
"String used for end of line in local processes."
:version "24.1"
:group 'tramp
- :type 'string)
+ :type 'string
+ :require 'tramp)
(defcustom tramp-rsh-end-of-line "\n"
"String used for end of line in rsh connections.
I don't think this ever needs to be changed, so please tell me about it
if you need to change this."
:group 'tramp
- :type 'string)
+ :type 'string
+ :require 'tramp)
(defcustom tramp-login-prompt-regexp
".*\\(user\\|login\\)\\( .*\\)?: *"
@@ -533,7 +498,8 @@ The regexp should match at end of buffer.
Sometimes the prompt is reported to look like \"login as:\"."
:group 'tramp
- :type 'regexp)
+ :type 'regexp
+ :require 'tramp)
(defcustom tramp-shell-prompt-pattern
;; Allow a prompt to start right after a ^M since it indeed would be
@@ -541,7 +507,7 @@ Sometimes the prompt is reported to look like \"login as:\"."
;; regexp works only for GNU Emacs.
;; Allow also [] style prompts. They can appear only during
;; connection initialization; Tramp redefines the prompt afterwards.
- (concat (if (featurep 'xemacs) "" "\\(?:^\\|\r\\)")
+ (concat "\\(?:^\\|\r\\)"
"[^]#$%>\n]*#?[]#$%>] *\\(\e\\[[0-9;]*[a-zA-Z] *\\)*")
"Regexp to match prompts from remote shell.
Normally, Tramp expects you to configure `shell-prompt-pattern'
@@ -555,10 +521,12 @@ which should work well in many cases.
This regexp must match both `tramp-initial-end-of-output' and
`tramp-end-of-output'."
:group 'tramp
- :type 'regexp)
+ :type 'regexp
+ :require 'tramp)
(defcustom tramp-password-prompt-regexp
(format "^.*\\(%s\\).*:\^@? *"
+ ;; `password-word-equivalents' has been introduced with Emacs 24.4.
(if (boundp 'password-word-equivalents)
(regexp-opt (symbol-value 'password-word-equivalents))
"password\\|passphrase"))
@@ -568,7 +536,8 @@ The regexp should match at end of buffer.
The `sudo' program appears to insert a `^@' character into the prompt."
:version "24.4"
:group 'tramp
- :type 'regexp)
+ :type 'regexp
+ :require 'tramp)
(defcustom tramp-wrong-passwd-regexp
(concat "^.*"
@@ -592,7 +561,8 @@ The `sudo' program appears to insert a `^@' character into the prompt."
"Regexp matching a `login failed' message.
The regexp should match at end of buffer."
:group 'tramp
- :type 'regexp)
+ :type 'regexp
+ :require 'tramp)
(defcustom tramp-yesno-prompt-regexp
(concat
@@ -603,19 +573,22 @@ The confirmation should be done with yes or no.
The regexp should match at end of buffer.
See also `tramp-yn-prompt-regexp'."
:group 'tramp
- :type 'regexp)
+ :type 'regexp
+ :require 'tramp)
(defcustom tramp-yn-prompt-regexp
(concat
(regexp-opt '("Store key in cache? (y/n)"
- "Update cached key? (y/n, Return cancels connection)") t)
+ "Update cached key? (y/n, Return cancels connection)")
+ t)
"\\s-*")
"Regular expression matching all y/n queries which need to be confirmed.
The confirmation should be done with y or n.
The regexp should match at end of buffer.
See also `tramp-yesno-prompt-regexp'."
:group 'tramp
- :type 'regexp)
+ :type 'regexp
+ :require 'tramp)
(defcustom tramp-terminal-prompt-regexp
(concat "\\("
@@ -627,7 +600,8 @@ See also `tramp-yesno-prompt-regexp'."
The regexp should match at end of buffer.
The answer will be provided by `tramp-action-terminal', which see."
:group 'tramp
- :type 'regexp)
+ :type 'regexp
+ :require 'tramp)
(defcustom tramp-operation-not-permitted-regexp
(concat "\\(" "preserving times.*" "\\|" "set mode" "\\)" ":\\s-*"
@@ -636,18 +610,21 @@ The answer will be provided by `tramp-action-terminal', which see."
Copying has been performed successfully already, so this message can
be ignored safely."
:group 'tramp
- :type 'regexp)
+ :type 'regexp
+ :require 'tramp)
(defcustom tramp-copy-failed-regexp
(concat "\\(.+: "
(regexp-opt '("Permission denied"
"not a regular file"
"is a directory"
- "No such file or directory") t)
+ "No such file or directory")
+ t)
"\\)\\s-*")
"Regular expression matching copy problems in (s)cp operations."
:group 'tramp
- :type 'regexp)
+ :type 'regexp
+ :require 'tramp)
(defcustom tramp-process-alive-regexp
""
@@ -657,7 +634,8 @@ check regularly the status of the associated process.
The answer will be provided by `tramp-action-process-alive',
`tramp-action-out-of-band', which see."
:group 'tramp
- :type 'regexp)
+ :type 'regexp
+ :require 'tramp)
(defconst tramp-temp-name-prefix "tramp."
"Prefix to use for temporary files.
@@ -677,29 +655,19 @@ Useful for \"rsync\" like methods.")
(make-variable-buffer-local 'tramp-temp-buffer-file-name)
(put 'tramp-temp-buffer-file-name 'permanent-local t)
-;; XEmacs is distributed with few Lisp packages. Further packages are
-;; installed using EFS. If we use a unified filename format, then
-;; Tramp is required in addition to EFS. (But why can't Tramp just
-;; disable EFS when Tramp is loaded? Then XEmacs can ship with EFS
-;; just like before.) Another reason for using a separate filename
-;; syntax on XEmacs is that EFS hooks into XEmacs in many places, but
-;; Tramp only knows how to deal with `file-name-handler-alist', not
-;; the other places.
-
-;; Currently, we have the choice between 'ftp and 'sep.
;;;###autoload
-(defcustom tramp-syntax
- (if (featurep 'xemacs) 'sep 'ftp)
+(defcustom tramp-syntax 'ftp
"Tramp filename syntax to be used.
It can have the following values:
- `ftp' -- Ange-FTP respective EFS like syntax (GNU Emacs default)
- `sep' -- Syntax as defined for XEmacs."
+ `ftp' -- Ange-FTP like syntax
+ `sep' -- Syntax as defined for XEmacs originally."
:group 'tramp
:version "24.4"
- :type `(choice (const :tag ,(if (featurep 'xemacs) "EFS" "Ange-FTP") ftp)
- (const :tag "XEmacs" sep)))
+ :type '(choice (const :tag "Ange-FTP" ftp)
+ (const :tag "XEmacs" sep))
+ :require 'tramp)
(defconst tramp-prefix-format
(cond ((equal tramp-syntax 'ftp) "/")
@@ -837,6 +805,12 @@ Derived from `tramp-postfix-host-format'.")
(defconst tramp-localname-regexp ".*$"
"Regexp matching localnames.")
+(defconst tramp-unknown-id-string "UNKNOWN"
+ "String used to denote an unknown user or group")
+
+(defconst tramp-unknown-id-integer -1
+ "Integer used to denote an unknown user or group")
+
;;; File name format:
(defconst tramp-remote-file-name-spec-regexp
@@ -847,7 +821,7 @@ Derived from `tramp-postfix-host-format'.")
tramp-prefix-ipv6-regexp "\\(?:" tramp-ipv6-regexp "\\)?"
tramp-postfix-ipv6-regexp "\\)"
"\\(?:" tramp-prefix-port-regexp tramp-port-regexp "\\)?" "\\)?")
-"Regular expression matching a Tramp file name between prefix and postfix.")
+ "Regular expression matching a Tramp file name between prefix and postfix.")
(defconst tramp-file-name-structure
(list
@@ -883,15 +857,13 @@ See also `tramp-file-name-regexp'.")
"\\`/\\(\\[.*\\]\\|[^/|:]\\{2,\\}[^/|]*\\):"
"\\`/[^/|:][^/|]*:")
"Value for `tramp-file-name-regexp' for unified remoting.
-Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and
-Tramp. See `tramp-file-name-structure' for more explanations.
+See `tramp-file-name-structure' for more explanations.
On W32 systems, the volume letter must be ignored.")
;;;###autoload
(defconst tramp-file-name-regexp-separate "\\`/\\[.*\\]"
"Value for `tramp-file-name-regexp' for separate remoting.
-XEmacs uses a separate filename syntax for Tramp and EFS.
See `tramp-file-name-structure' for more explanations.")
;;;###autoload
@@ -919,7 +891,6 @@ Also see `tramp-file-name-structure'.")
(if (memq system-type '(cygwin windows-nt))
"\\`/[^/]\\{2,\\}\\'" "\\`/[^/]*\\'")
"Value for `tramp-completion-file-name-regexp' for unified remoting.
-GNU Emacs uses a unified filename syntax for Tramp and Ange-FTP.
See `tramp-file-name-structure' for more explanations.
On W32 systems, the volume letter must be ignored.")
@@ -928,7 +899,6 @@ On W32 systems, the volume letter must be ignored.")
(defconst tramp-completion-file-name-regexp-separate
"\\`/\\([[][^]]*\\)?\\'"
"Value for `tramp-completion-file-name-regexp' for separate remoting.
-XEmacs uses a separate filename syntax for Tramp and EFS.
See `tramp-file-name-structure' for more explanations.")
;;;###autoload
@@ -951,10 +921,7 @@ Also see `tramp-file-name-structure'.")
;; to drop bytes when data is sent too quickly. There is also a connection
;; buffer local variable, which is computed depending on remote host properties
;; when `tramp-chunksize' is zero or nil.
-(defcustom tramp-chunksize
- (when (and (not (featurep 'xemacs))
- (memq system-type '(hpux)))
- 500)
+(defcustom tramp-chunksize (when (memq system-type '(hpux)) 500)
;; Parentheses in docstring starting at beginning of line are escaped.
;; Fontification is messed up when
;; `open-paren-in-column-0-is-defun-start' set to t.
@@ -1015,7 +982,8 @@ in the third line of the code.
Please raise a bug report via \"M-x tramp-bug\" if your system needs
this variable to be set as well."
:group 'tramp
- :type '(choice (const nil) integer))
+ :type '(choice (const nil) integer)
+ :require 'tramp)
;; Logging in to a remote host normally requires obtaining a pty. But
;; Emacs on MacOS X has process-connection-type set to nil by default,
@@ -1026,7 +994,8 @@ this variable to be set as well."
Tramp binds `process-connection-type' to the value given here before
opening a connection to a remote host."
:group 'tramp
- :type '(choice (const nil) (const t) (const pty)))
+ :type '(choice (const nil) (const t) (const pty))
+ :require 'tramp)
(defcustom tramp-connection-timeout 60
"Defines the max time to wait for establishing a connection (in seconds).
@@ -1035,7 +1004,8 @@ This can be overwritten for different connection types in `tramp-methods'.
The timeout does not include the time reading a password."
:group 'tramp
:version "24.4"
- :type 'integer)
+ :type 'integer
+ :require 'tramp)
(defcustom tramp-connection-min-time-diff 5
"Defines seconds between two consecutive connection attempts.
@@ -1049,7 +1019,8 @@ in a short time frame. In those cases it is recommended to
let-bind this variable."
:group 'tramp
:version "24.4"
- :type '(choice (const nil) integer))
+ :type '(choice (const nil) integer)
+ :require 'tramp)
(defcustom tramp-completion-reread-directory-timeout 10
"Defines seconds since last remote command before rereading a directory.
@@ -1061,7 +1032,8 @@ have been gone since last remote command execution. A value of t
would require an immediate reread during filename completion, nil
means to use always cached values for the directory contents."
:group 'tramp
- :type '(choice (const nil) (const t) integer))
+ :type '(choice (const nil) (const t) integer)
+ :require 'tramp)
;;; Internal Variables:
@@ -1077,9 +1049,10 @@ means to use always cached values for the directory contents."
(defvar tramp-current-connection nil
"Last connection timestamp.")
-;;;###autoload
(defconst tramp-completion-file-name-handler-alist
- '((file-name-all-completions . tramp-completion-handle-file-name-all-completions)
+ '((expand-file-name . tramp-completion-handle-expand-file-name)
+ (file-name-all-completions
+ . tramp-completion-handle-file-name-all-completions)
(file-name-completion . tramp-completion-handle-file-name-completion))
"Alist of completion handler functions.
Used for file names matching `tramp-file-name-regexp'. Operations
@@ -1095,6 +1068,7 @@ calling HANDLER.")
;;; Internal functions which must come first:
+;; `user-error' has appeared in Emacs 24.3.
(defsubst tramp-user-error (vec-or-proc format &rest args)
"Signal a pilot error."
(apply
@@ -1111,11 +1085,10 @@ If VEC is a vector, check first in connection properties.
Afterwards, check in `tramp-methods'. If the `tramp-methods'
entry does not exist, return nil."
(let ((hash-entry
- (tramp-compat-replace-regexp-in-string
- "^tramp-" "" (symbol-name param))))
+ (replace-regexp-in-string "^tramp-" "" (symbol-name param))))
(if (tramp-connection-property-p vec hash-entry)
;; We use the cached property.
- (tramp-get-connection-property vec hash-entry nil)
+ (tramp-get-connection-property vec hash-entry nil)
;; Use the static value from `tramp-methods'.
(let ((methods-entry
(assoc param (assoc (tramp-file-name-method vec) tramp-methods))))
@@ -1192,19 +1165,10 @@ entry does not exist, return nil."
(and (stringp name)
(string-match tramp-file-name-regexp name))))
-;; Obsoleted with Tramp 2.2.7.
-(defconst tramp-obsolete-methods
- '("ssh1" "ssh2" "scp1" "scp2" "scpc" "rsyncc" "plink1")
- "Obsolete methods.")
-
-(defvar tramp-warned-obsolete-methods nil
- "Which methods the user has been warned to be obsolete.")
-
(defun tramp-find-method (method user host)
"Return the right method string to use.
This is METHOD, if non-nil. Otherwise, do a lookup in
-`tramp-default-method-alist'. It maps also obsolete methods to
-their replacement."
+`tramp-default-method-alist'."
(let ((result
(or method
(let ((choices tramp-default-method-alist)
@@ -1217,24 +1181,10 @@ their replacement."
(setq choices nil)))
lmethod)
tramp-default-method)))
- ;; This is needed for a transition period only.
- (when (member result tramp-obsolete-methods)
- (unless (member result tramp-warned-obsolete-methods)
- (if noninteractive
- (warn "Method %s is obsolete, using %s"
- result (substring result 0 -1))
- (unless (y-or-n-p (format "Method \"%s\" is obsolete, use \"%s\"? "
- result (substring result 0 -1)))
- (tramp-user-error nil "Method \"%s\" not supported" result)))
- (add-to-list 'tramp-warned-obsolete-methods result))
- ;; This works with the current set of `tramp-obsolete-methods'.
- ;; Must be improved, if their are more sophisticated replacements.
- (setq result (substring result 0 -1)))
- ;; We must mark, whether a default value has been used. Not
- ;; applicable for XEmacs.
- (if (or method (null result) (null (functionp 'propertize)))
+ ;; We must mark, whether a default value has been used.
+ (if (or method (null result))
result
- (tramp-compat-funcall 'propertize result 'tramp-default t))))
+ (propertize result 'tramp-default t))))
(defun tramp-find-user (method user host)
"Return the right user string to use.
@@ -1252,11 +1202,10 @@ This is USER, if non-nil. Otherwise, do a lookup in
(setq choices nil)))
luser)
tramp-default-user)))
- ;; We must mark, whether a default value has been used. Not
- ;; applicable for XEmacs.
- (if (or user (null result) (null (functionp 'propertize)))
+ ;; We must mark, whether a default value has been used.
+ (if (or user (null result))
result
- (tramp-compat-funcall 'propertize result 'tramp-default t))))
+ (propertize result 'tramp-default t))))
(defun tramp-find-host (method user host)
"Return the right host string to use.
@@ -1447,8 +1396,7 @@ ARGUMENTS to actually emit the message (if applicable)."
(when (bobp)
(insert
(format
- ";; %sEmacs: %s Tramp: %s -*- mode: outline; -*-"
- (if (featurep 'sxemacs) "SX" (if (featurep 'xemacs) "X" "GNU "))
+ ";; Emacs: %s Tramp: %s -*- mode: outline; -*-"
emacs-version tramp-version))
(when (>= tramp-verbose 10)
(insert
@@ -1481,7 +1429,6 @@ ARGUMENTS to actually emit the message (if applicable)."
'("tramp-backtrace"
"tramp-compat-condition-case-unless-debug"
"tramp-compat-funcall"
- "tramp-compat-with-temp-message"
"tramp-condition-case-unless-debug"
"tramp-debug-message"
"tramp-error"
@@ -1651,14 +1598,14 @@ If VAR is nil, then we bind `v' to the structure and `method', `user',
(put 'with-parsed-tramp-file-name 'lisp-indent-function 2)
(put 'with-parsed-tramp-file-name 'edebug-form-spec '(form symbolp body))
-(tramp-compat-font-lock-add-keywords
- 'emacs-lisp-mode '("\\<with-parsed-tramp-file-name\\>"))
+(font-lock-add-keywords 'emacs-lisp-mode '("\\<with-parsed-tramp-file-name\\>"))
(defun tramp-progress-reporter-update (reporter &optional value)
+ "Report progress of an operation for Tramp."
(let* ((parameters (cdr reporter))
(message (aref parameters 3)))
(when (string-match message (or (current-message) ""))
- (tramp-compat-funcall 'progress-reporter-update reporter value))))
+ (progress-reporter-update reporter value))))
(defmacro with-tramp-progress-reporter (vec level message &rest body)
"Executes BODY, spinning a progress reporter with MESSAGE.
@@ -1675,19 +1622,18 @@ without a visible progress reporter."
;; Display only when there is a minimum level.
(<= ,level (min tramp-verbose 3)))
(ignore-errors
- (let ((pr (tramp-compat-funcall
- #'make-progress-reporter ,message)))
+ (let ((pr (make-progress-reporter ,message nil nil)))
(when pr
- (run-at-time 3 0.1
- #'tramp-progress-reporter-update pr)))))))
+ (run-at-time
+ 3 0.1 #'tramp-progress-reporter-update pr)))))))
(unwind-protect
;; Execute the body.
(prog1 (progn ,@body) (setq cookie "done"))
;; Stop progress reporter.
- (if tm (tramp-compat-funcall 'cancel-timer tm))
+ (if tm (cancel-timer tm))
(tramp-message ,vec ,level "%s...%s" ,message cookie)))))
-(tramp-compat-font-lock-add-keywords
+(font-lock-add-keywords
'emacs-lisp-mode '("\\<with-tramp-progress-reporter\\>"))
(defmacro with-tramp-file-property (vec file property &rest body)
@@ -1706,8 +1652,7 @@ FILE must be a local file name on a connection identified via VEC."
(put 'with-tramp-file-property 'lisp-indent-function 3)
(put 'with-tramp-file-property 'edebug-form-spec t)
-(tramp-compat-font-lock-add-keywords
- 'emacs-lisp-mode '("\\<with-tramp-file-property\\>"))
+(font-lock-add-keywords 'emacs-lisp-mode '("\\<with-tramp-file-property\\>"))
(defmacro with-tramp-connection-property (key property &rest body)
"Check in Tramp for property PROPERTY, otherwise executes BODY and set."
@@ -1722,7 +1667,7 @@ FILE must be a local file name on a connection identified via VEC."
(put 'with-tramp-connection-property 'lisp-indent-function 2)
(put 'with-tramp-connection-property 'edebug-form-spec t)
-(tramp-compat-font-lock-add-keywords
+(font-lock-add-keywords
'emacs-lisp-mode '("\\<with-tramp-connection-property\\>"))
(defun tramp-drop-volume-letter (name)
@@ -1787,16 +1732,17 @@ Example:
(defun tramp-get-completion-function (method)
"Returns a list of completion functions for METHOD.
For definition of that list see `tramp-set-completion-function'."
- (cons
- ;; Hosts visited once shall be remembered.
- `(tramp-parse-connection-properties ,method)
+ (append
+ `(;; Default settings are taken into account.
+ (tramp-parse-default-user-host ,method)
+ ;; Hosts visited once shall be remembered.
+ (tramp-parse-connection-properties ,method))
;; The method related defaults.
(cdr (assoc method tramp-completion-function-alist))))
;;; Fontification of `read-file-name':
-;; rfn-eshadow.el is part of Emacs 22. It is autoloaded.
(defvar tramp-rfn-eshadow-overlay)
(make-variable-buffer-local 'tramp-rfn-eshadow-overlay)
@@ -1806,28 +1752,22 @@ Adds another overlay hiding filename parts according to Tramp's
special handling of `substitute-in-file-name'."
(when (symbol-value 'minibuffer-completing-file-name)
(setq tramp-rfn-eshadow-overlay
- (tramp-compat-funcall
- 'make-overlay
- (tramp-compat-funcall 'minibuffer-prompt-end)
- (tramp-compat-funcall 'minibuffer-prompt-end)))
+ (make-overlay (minibuffer-prompt-end) (minibuffer-prompt-end)))
;; Copy rfn-eshadow-overlay properties.
- (let ((props (tramp-compat-funcall
- 'overlay-properties (symbol-value 'rfn-eshadow-overlay))))
+ (let ((props (overlay-properties (symbol-value 'rfn-eshadow-overlay))))
(while props
;; The `field' property prevents correct minibuffer
;; completion; we exclude it.
(if (not (eq (car props) 'field))
- (tramp-compat-funcall
- 'overlay-put tramp-rfn-eshadow-overlay (pop props) (pop props))
+ (overlay-put tramp-rfn-eshadow-overlay (pop props) (pop props))
(pop props) (pop props))))))
-(when (boundp 'rfn-eshadow-setup-minibuffer-hook)
- (add-hook 'rfn-eshadow-setup-minibuffer-hook
- 'tramp-rfn-eshadow-setup-minibuffer)
- (add-hook 'tramp-unload-hook
- (lambda ()
- (remove-hook 'rfn-eshadow-setup-minibuffer-hook
- 'tramp-rfn-eshadow-setup-minibuffer))))
+(add-hook 'rfn-eshadow-setup-minibuffer-hook
+ 'tramp-rfn-eshadow-setup-minibuffer)
+(add-hook 'tramp-unload-hook
+ (lambda ()
+ (remove-hook 'rfn-eshadow-setup-minibuffer-hook
+ 'tramp-rfn-eshadow-setup-minibuffer)))
(defconst tramp-rfn-eshadow-update-overlay-regexp
(format "[^%s/~]*\\(/\\|~\\)" tramp-postfix-host-format))
@@ -1839,15 +1779,13 @@ This is intended to be used as a minibuffer `post-command-hook' for
been set up by `rfn-eshadow-setup-minibuffer'."
;; In remote files name, there is a shadowing just for the local part.
(ignore-errors
- (let ((end (or (tramp-compat-funcall
- 'overlay-end (symbol-value 'rfn-eshadow-overlay))
- (tramp-compat-funcall 'minibuffer-prompt-end)))
+ (let ((end (or (overlay-end (symbol-value 'rfn-eshadow-overlay))
+ (minibuffer-prompt-end)))
;; We do not want to send any remote command.
(non-essential t))
(when
(tramp-tramp-file-p
- (tramp-compat-funcall
- 'buffer-substring-no-properties end (point-max)))
+ (buffer-substring-no-properties end (point-max)))
(save-excursion
(save-restriction
(narrow-to-region
@@ -1859,17 +1797,15 @@ been set up by `rfn-eshadow-setup-minibuffer'."
(let ((rfn-eshadow-overlay tramp-rfn-eshadow-overlay)
(rfn-eshadow-update-overlay-hook nil)
file-name-handler-alist)
- (tramp-compat-funcall
- 'move-overlay rfn-eshadow-overlay (point-max) (point-max))
- (tramp-compat-funcall 'rfn-eshadow-update-overlay))))))))
-
-(when (boundp 'rfn-eshadow-update-overlay-hook)
- (add-hook 'rfn-eshadow-update-overlay-hook
- 'tramp-rfn-eshadow-update-overlay)
- (add-hook 'tramp-unload-hook
- (lambda ()
- (remove-hook 'rfn-eshadow-update-overlay-hook
- 'tramp-rfn-eshadow-update-overlay))))
+ (move-overlay rfn-eshadow-overlay (point-max) (point-max))
+ (rfn-eshadow-update-overlay))))))))
+
+(add-hook 'rfn-eshadow-update-overlay-hook
+ 'tramp-rfn-eshadow-update-overlay)
+(add-hook 'tramp-unload-hook
+ (lambda ()
+ (remove-hook 'rfn-eshadow-update-overlay-hook
+ 'tramp-rfn-eshadow-update-overlay)))
;; Inodes don't exist for some file systems. Therefore we must
;; generate virtual ones. Used in `find-buffer-visiting'. The method
@@ -1892,12 +1828,13 @@ been set up by `rfn-eshadow-setup-minibuffer'."
If the file modes of FILENAME cannot be determined, return the
value of `default-file-modes', without execute permissions."
(or (file-modes filename)
- (logand (default-file-modes) (tramp-compat-octal-to-decimal "0666"))))
+ (logand (default-file-modes) (string-to-number "0666" 8))))
(defun tramp-replace-environment-variables (filename)
"Replace environment variables in FILENAME.
Return the string with the replaced variables."
(or (ignore-errors
+ ;; Optional arg has been introduced with Emacs 24 (?).
(tramp-compat-funcall 'substitute-env-vars filename 'only-defined))
;; We need an own implementation.
(save-match-data
@@ -1912,35 +1849,6 @@ Return the string with the replaced variables."
t nil filename)))
filename))))
-;; In XEmacs, electricity is implemented via a key map for ?/ and ?~,
-;; which calls corresponding functions (see minibuf.el).
-(when (fboundp 'minibuffer-electric-separator)
- (mapc
- (lambda (x)
- (eval
- `(defadvice ,x
- (around ,(intern (format "tramp-advice-%s" x)) activate)
- "Invoke `substitute-in-file-name' for Tramp files."
- (if (and (symbol-value 'minibuffer-electric-file-name-behavior)
- (tramp-tramp-file-p (buffer-substring)))
- ;; We don't need to handle `last-input-event', because
- ;; due to the key map we know it must be ?/ or ?~.
- (let ((s (concat (buffer-substring (point-min) (point))
- (string last-command-char))))
- (delete-region (point-min) (point))
- (insert (substitute-in-file-name s))
- (setq ad-return-value last-command-char))
- ad-do-it)))
- (eval
- `(add-hook
- 'tramp-unload-hook
- (lambda ()
- (ad-remove-advice ',x 'around ',(intern (format "tramp-advice-%s" x)))
- (ad-activate ',x)))))
-
- '(minibuffer-electric-separator
- minibuffer-electric-tilde)))
-
(defun tramp-find-file-name-coding-system-alist (filename tmpname)
"Like `find-operation-coding-system' for Tramp filenames.
Tramp's `insert-file-contents' and `write-region' work over
@@ -2000,49 +1908,35 @@ ARGS are the arguments OPERATION has been called with."
(cond
;; FILE resp DIRECTORY.
((member operation
- (list 'access-file 'byte-compiler-base-file-name 'delete-directory
- 'delete-file 'diff-latest-backup-file 'directory-file-name
- 'directory-files 'directory-files-and-attributes
- 'dired-compress-file 'dired-uncache
- 'file-accessible-directory-p 'file-attributes
- 'file-directory-p 'file-executable-p 'file-exists-p
- 'file-local-copy 'file-modes
- 'file-name-as-directory 'file-name-directory
- 'file-name-nondirectory 'file-name-sans-versions
- 'file-ownership-preserved-p 'file-readable-p
- 'file-regular-p 'file-remote-p 'file-symlink-p 'file-truename
- 'file-writable-p 'find-backup-file-name 'find-file-noselect
- 'get-file-buffer 'insert-directory 'insert-file-contents
- 'load 'make-directory 'make-directory-internal
- 'set-file-modes 'substitute-in-file-name
- 'unhandled-file-name-directory 'vc-registered
- ;; Emacs 22+ only.
- 'set-file-times
- ;; Emacs 24+ only.
- 'file-acl 'file-notify-add-watch
- 'file-selinux-context 'set-file-acl 'set-file-selinux-context
- ;; XEmacs only.
- 'abbreviate-file-name 'create-file-buffer
- 'dired-file-modtime 'dired-make-compressed-filename
- 'dired-recursive-delete-directory 'dired-set-file-modtime
- 'dired-shell-unhandle-file-name 'dired-uucode-file
- 'insert-file-contents-literally 'make-temp-name 'recover-file
- 'vm-imap-check-mail 'vm-pop-check-mail 'vm-spool-check-mail))
+ '(access-file byte-compiler-base-file-name delete-directory
+ delete-file diff-latest-backup-file directory-file-name
+ directory-files directory-files-and-attributes
+ dired-compress-file dired-uncache
+ file-accessible-directory-p file-attributes
+ file-directory-p file-executable-p file-exists-p
+ file-local-copy file-modes
+ file-name-as-directory file-name-directory
+ file-name-nondirectory file-name-sans-versions
+ file-ownership-preserved-p file-readable-p
+ file-regular-p file-remote-p file-symlink-p file-truename
+ file-writable-p find-backup-file-name find-file-noselect
+ get-file-buffer insert-directory insert-file-contents
+ load make-directory make-directory-internal
+ set-file-modes set-file-times substitute-in-file-name
+ unhandled-file-name-directory vc-registered
+ ;; Emacs 24+ only.
+ file-acl file-notify-add-watch file-selinux-context
+ set-file-acl set-file-selinux-context))
(if (file-name-absolute-p (nth 0 args))
(nth 0 args)
(expand-file-name (nth 0 args))))
;; FILE DIRECTORY resp FILE1 FILE2.
((member operation
- (list 'add-name-to-file 'copy-file 'expand-file-name
- 'file-name-all-completions 'file-name-completion
- 'file-newer-than-file-p 'make-symbolic-link 'rename-file
- ;; Emacs 23+ only.
- 'copy-directory
- ;; Emacs 24+ only.
- 'file-equal-p 'file-in-directory-p
- ;; XEmacs only.
- 'dired-make-relative-symlink
- 'vm-imap-move-mail 'vm-pop-move-mail 'vm-spool-move-mail))
+ '(add-name-to-file copy-directory copy-file expand-file-name
+ file-name-all-completions file-name-completion
+ file-newer-than-file-p make-symbolic-link rename-file
+ ;; Emacs 24+ only.
+ file-equal-p file-in-directory-p))
(save-match-data
(cond
((tramp-tramp-file-p (nth 0 args)) (nth 0 args))
@@ -2053,35 +1947,30 @@ ARGS are the arguments OPERATION has been called with."
(nth 2 args))
;; BUFFER.
((member operation
- (list 'set-visited-file-modtime 'verify-visited-file-modtime
- ;; Emacs 22+ only.
- 'make-auto-save-file-name
- ;; XEmacs only.
- 'backup-buffer))
+ '(make-auto-save-file-name
+ set-visited-file-modtime verify-visited-file-modtime))
(buffer-file-name
(if (bufferp (nth 0 args)) (nth 0 args) (current-buffer))))
;; COMMAND.
((member operation
- (list ;; not in Emacs 23+.
- 'dired-call-process
- ;; Emacs only.
- 'shell-command
- ;; Emacs 22+ only.
- 'process-file
- ;; Emacs 23+ only.
- 'start-file-process
- ;; XEmacs only.
- 'dired-print-file 'dired-shell-call-process))
+ '(process-file shell-command start-file-process
+ ;; Emacs 25.2+ only.
+ make-nearby-temp-file temporary-file-directory))
default-directory)
;; PROC.
- ((member operation (list 'file-notify-rm-watch 'file-notify-valid-p))
+ ((member operation
+ '(;; Emacs 24+ only.
+ file-notify-rm-watch
+ ;; Emacs 25+ only.
+ file-notify-valid-p))
(when (processp (nth 0 args))
(with-current-buffer (process-buffer (nth 0 args))
default-directory)))
;; Unknown file primitive.
(t (error "unknown file I/O primitive: %s" operation))))
-(defun tramp-find-foreign-file-name-handler (filename)
+(defun tramp-find-foreign-file-name-handler
+ (filename &optional operation completion)
"Return foreign file name handler if exists."
(when (tramp-tramp-file-p filename)
(let ((v (tramp-dissect-file-name filename t))
@@ -2089,11 +1978,17 @@ ARGS are the arguments OPERATION has been called with."
elt res)
;; When we are not fully sure that filename completion is safe,
;; we should not return a handler.
- (when (or (tramp-file-name-method v) (tramp-file-name-user v)
+ (when (or (not completion)
+ (tramp-file-name-method v) (tramp-file-name-user v)
(and (tramp-file-name-host v)
(not (member (tramp-file-name-host v)
(mapcar 'car tramp-methods))))
- (not (tramp-completion-mode-p)))
+ ;; Some operations are safe by default.
+ (member
+ operation
+ '(file-name-as-directory
+ file-name-directory
+ file-name-nondirectory)))
(while handler
(setq elt (car handler)
handler (cdr handler))
@@ -2121,13 +2016,15 @@ Falls back to normal file name handler if no Tramp file name handler exists."
(tramp-replace-environment-variables
(apply 'tramp-file-name-for-operation operation args)))
(completion (tramp-completion-mode-p))
- (foreign (tramp-find-foreign-file-name-handler filename)))
+ (foreign
+ (tramp-find-foreign-file-name-handler
+ filename operation completion))
+ result)
(with-parsed-tramp-file-name filename nil
;; Call the backend function.
(if foreign
(tramp-condition-case-unless-debug err
- (let ((sf (symbol-function foreign))
- result)
+ (let ((sf (symbol-function foreign)))
;; Some packages set the default directory to a
;; remote path, before respective Tramp packages
;; are already loaded. This results in
@@ -2191,8 +2088,13 @@ Falls back to normal file name handler if no Tramp file name handler exists."
;; Propagate the error.
(t (signal (car err) (cdr err))))))
- ;; Nothing to do for us.
- (tramp-run-real-handler operation args)))))
+ ;; Nothing to do for us. However, since we are in
+ ;; `tramp-mode', we must suppress the volume letter on
+ ;; MS Windows.
+ (setq result (tramp-run-real-handler operation args))
+ (if (stringp result)
+ (tramp-drop-volume-letter result)
+ result)))))
;; When `tramp-mode' is not enabled, we don't do anything.
(tramp-run-real-handler operation args)))
@@ -2224,17 +2126,17 @@ preventing reentrant calls of Tramp.")
Together with `tramp-locked', this implements a locking mechanism
preventing reentrant calls of Tramp.")
-;;;###autoload
-(progn (defun tramp-completion-file-name-handler (operation &rest args)
+;; Avoid recursive loading of tramp.el.
+;;;###autoload(defun tramp-completion-file-name-handler (operation &rest args)
+;;;###autoload (tramp-completion-run-real-handler operation args))
+
+(defun tramp-completion-file-name-handler (operation &rest args)
"Invoke Tramp file name completion handler.
Falls back to normal file name handler if no Tramp file name handler exists."
- ;; We bind `directory-sep-char' here for XEmacs on Windows, which
- ;; would otherwise use backslash.
- (let ((directory-sep-char ?/)
- (fn (assoc operation tramp-completion-file-name-handler-alist)))
+ (let ((fn (assoc operation tramp-completion-file-name-handler-alist)))
(if (and
;; When `tramp-mode' is not enabled, we don't do anything.
- fn tramp-mode
+ fn tramp-mode (tramp-completion-mode-p)
;; For other syntaxes than `sep', the regexp matches many common
;; situations where the user doesn't actually want to use Tramp.
;; So to avoid autoloading Tramp after typing just "/s", we
@@ -2242,8 +2144,7 @@ Falls back to normal file name handler if no Tramp file name handler exists."
;; indicated his interest in using a fancier completion system.
(or (eq tramp-syntax 'sep)
(featurep 'tramp) ;; If it's loaded, we may as well use it.
- ;; `partial-completion-mode' does not exist in XEmacs.
- ;; It is obsoleted with Emacs 24.1.
+ ;; `partial-completion-mode' is obsoleted with Emacs 24.1.
(and (boundp 'partial-completion-mode)
(symbol-value 'partial-completion-mode))
;; FIXME: These may have been loaded even if the user never
@@ -2251,14 +2152,13 @@ Falls back to normal file name handler if no Tramp file name handler exists."
(featurep 'ido)
(featurep 'icicles)))
(save-match-data (apply (cdr fn) args))
- (tramp-completion-run-real-handler operation args)))))
+ (tramp-completion-run-real-handler operation args))))
;;;###autoload
(progn (defun tramp-autoload-file-name-handler (operation &rest args)
"Load Tramp file name handler, and perform OPERATION."
- ;; Avoid recursive loading of tramp.el. `temporary-file-directory'
- ;; does not exist in XEmacs, so we must use something else.
- (let ((default-directory "/"))
+ ;; Avoid recursive loading of tramp.el.
+ (let ((default-directory temporary-file-directory))
(load "tramp" nil t))
(apply operation args)))
@@ -2332,6 +2232,7 @@ Falls back to normal file name handler if no Tramp file name handler exists."
;;;###autoload
(defun tramp-unload-file-name-handlers ()
+ "Unload Tramp file name handlers from `file-name-handler-alist'."
(setq file-name-handler-alist
(delete (rassoc 'tramp-file-name-handler
file-name-handler-alist)
@@ -2343,6 +2244,7 @@ Falls back to normal file name handler if no Tramp file name handler exists."
;;; File name handler functions for completion mode:
+;;;###autoload
(defvar tramp-completion-mode nil
"If non-nil, external packages signal that they are in file name completion.
@@ -2361,15 +2263,13 @@ should never be set globally, the intention is to let-bind it.")
;; variable. On the other hand, those files shouldn't have partial
;; Tramp file name syntax. Maybe another variable should be introduced
;; overwriting this check in such cases. Or we change Tramp file name
-;; syntax in order to avoid ambiguities, like in XEmacs ...
-;;;###tramp-autoload
+;; syntax in order to avoid ambiguities.
(defun tramp-completion-mode-p ()
"Check, whether method / user name / host name completion is active."
(or
;; Signal from outside. `non-essential' has been introduced in Emacs 24.
(and (boundp 'non-essential) (symbol-value 'non-essential))
tramp-completion-mode
- ;; Emacs.
(equal last-input-event 'tab)
(and (natnump last-input-event)
(or
@@ -2377,24 +2277,7 @@ should never be set globally, the intention is to let-bind it.")
(equal last-input-event ?\t)
(and (not (event-modifiers last-input-event))
(or (equal last-input-event ?\?)
- (equal last-input-event ?\ )))))
- ;; XEmacs.
- (and (featurep 'xemacs)
- ;; `last-input-event' might be nil.
- (not (null last-input-event))
- ;; `last-input-event' may have no character approximation.
- (tramp-compat-funcall 'event-to-character last-input-event)
- (or
- ;; ?\t has event-modifier 'control.
- (equal
- (tramp-compat-funcall 'event-to-character last-input-event) ?\t)
- (and (not (event-modifiers last-input-event))
- (or (equal
- (tramp-compat-funcall 'event-to-character last-input-event)
- ?\?)
- (equal
- (tramp-compat-funcall 'event-to-character last-input-event)
- ?\ )))))))
+ (equal last-input-event ?\ )))))))
(defun tramp-connectable-p (filename)
"Check, whether it is possible to connect the remote host w/o side-effects.
@@ -2407,10 +2290,24 @@ not in completion mode."
(p (tramp-get-connection-process v)))
(and p (processp p) (memq (process-status p) '(run open))))))))
+(defun tramp-completion-handle-expand-file-name (name &optional dir)
+ "Like `expand-file-name' for Tramp files."
+ (if (tramp-completion-mode-p)
+ (progn
+ ;; If DIR is not given, use `default-directory' or "/".
+ (setq dir (or dir default-directory "/"))
+ ;; Unless NAME is absolute, concat DIR and NAME.
+ (unless (file-name-absolute-p name)
+ (setq name (concat (file-name-as-directory dir) name)))
+ ;; Return NAME.
+ name)
+
+ (tramp-completion-run-real-handler
+ 'expand-file-name (list name dir))))
+
;; Method, host name and user name completion.
;; `tramp-completion-dissect-file-name' returns a list of
;; tramp-file-name structures. For all of them we return possible completions.
-;;;###autoload
(defun tramp-completion-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for partial Tramp files."
@@ -2483,7 +2380,6 @@ not in completion mode."
'file-name-all-completions (list (list filename directory)))))))
;; Method, host name and user name completion for a file.
-;;;###autoload
(defun tramp-completion-handle-file-name-completion
(filename directory &optional predicate)
"Like `file-name-completion' for Tramp files."
@@ -2675,6 +2571,12 @@ PARTIAL-USER must match USER, PARTIAL-HOST must match HOST."
(unless (zerop (+ (length user) (length host)))
(tramp-completion-make-tramp-file-name method user host nil)))
+(defun tramp-parse-default-user-host (method)
+ "Return a list of (user host) tuples allowed to access for METHOD.
+This function is added always in `tramp-get-completion-function'
+for all methods. Resulting data are derived from default settings."
+ `((,(tramp-find-user method nil nil) ,(tramp-find-host method nil nil))))
+
;; Generic function.
(defun tramp-parse-group (regexp match-level skip-regexp)
"Return a (user host) tuple allowed to access.
@@ -2781,17 +2683,18 @@ User is always nil."
(tramp-parse-group
(concat "^\\(" tramp-ipv6-regexp "\\|" tramp-host-regexp "\\)") 1 " \t"))
-;; For su-alike methods it would be desirable to return "root@localhost"
-;; as default. Unfortunately, we have no information whether any user name
-;; has been typed already. So we use `tramp-current-user' as indication,
-;; assuming it is set in `tramp-completion-handle-file-name-all-completions'.
;;;###tramp-autoload
(defun tramp-parse-passwd (filename)
"Return a list of (user host) tuples allowed to access.
Host is always \"localhost\"."
- (if (zerop (length tramp-current-user))
- '(("root" nil))
- (tramp-parse-file filename 'tramp-parse-passwd-group)))
+ (with-tramp-connection-property nil "parse-passwd"
+ (if (executable-find "getent")
+ (with-temp-buffer
+ (when (zerop (tramp-call-process nil "getent" nil t nil "passwd"))
+ (goto-char (point-min))
+ (loop while (not (eobp)) collect
+ (tramp-parse-etc-group-group))))
+ (tramp-parse-file filename 'tramp-parse-passwd-group))))
(defun tramp-parse-passwd-group ()
"Return a (user host) tuple allowed to access.
@@ -2804,6 +2707,29 @@ Host is always \"localhost\"."
result))
;;;###tramp-autoload
+(defun tramp-parse-etc-group (filename)
+ "Return a list of (group host) tuples allowed to access.
+Host is always \"localhost\"."
+ (with-tramp-connection-property nil "parse-group"
+ (if (executable-find "getent")
+ (with-temp-buffer
+ (when (zerop (tramp-call-process nil "getent" nil t nil "group"))
+ (goto-char (point-min))
+ (loop while (not (eobp)) collect
+ (tramp-parse-etc-group-group))))
+ (tramp-parse-file filename 'tramp-parse-etc-group-group))))
+
+(defun tramp-parse-etc-group-group ()
+ "Return a (group host) tuple allowed to access.
+Host is always \"localhost\"."
+ (let ((result)
+ (split (split-string (buffer-substring (point) (point-at-eol)) ":")))
+ (when (member (user-login-name) (split-string (nth 3 split) "," 'omit))
+ (setq result (list (nth 0 split) "localhost")))
+ (forward-line 1)
+ result))
+
+;;;###tramp-autoload
(defun tramp-parse-netrc (filename)
"Return a list of (user host) tuples allowed to access.
User may be nil."
@@ -2827,12 +2753,13 @@ User may be nil."
"Return a list of (user host) tuples allowed to access.
User is always nil."
(if (memq system-type '(windows-nt))
- (with-temp-buffer
- (when (zerop (tramp-call-process
- nil "reg" nil t nil "query" registry-or-dirname))
- (goto-char (point-min))
- (loop while (not (eobp)) collect
- (tramp-parse-putty-group registry-or-dirname))))
+ (with-tramp-connection-property nil "parse-putty"
+ (with-temp-buffer
+ (when (zerop (tramp-call-process
+ nil "reg" nil t nil "query" registry-or-dirname))
+ (goto-char (point-min))
+ (loop while (not (eobp)) collect
+ (tramp-parse-putty-group registry-or-dirname)))))
;; UNIX case.
(tramp-parse-shostkeys-sknownhosts
registry-or-dirname (concat "^\\(" tramp-host-regexp "\\)$"))))
@@ -2868,10 +2795,8 @@ User is always nil."
(substring directory 0 -1)
directory)))
-(defun tramp-handle-directory-files
- (directory &optional full match nosort files-only)
+(defun tramp-handle-directory-files (directory &optional full match nosort)
"Like `directory-files' for Tramp files."
- ;; FILES-ONLY is valid for XEmacs only.
(when (file-directory-p directory)
(setq directory (file-name-as-directory (expand-file-name directory)))
(let ((temp (nreverse (file-name-all-completions "" directory)))
@@ -2879,12 +2804,7 @@ User is always nil."
(while temp
(setq item (directory-file-name (pop temp)))
- (when (and (or (null match) (string-match match item))
- (or (null files-only)
- ;; Files only.
- (and (equal files-only t) (file-regular-p item))
- ;; Directories only.
- (file-directory-p item)))
+ (when (or (null match) (string-match match item))
(push (if full (concat directory item) item)
result)))
(if nosort result (sort result 'string<)))))
@@ -2894,15 +2814,14 @@ User is always nil."
"Like `directory-files-and-attributes' for Tramp files."
(mapcar
(lambda (x)
- (cons x (tramp-compat-file-attributes
+ (cons x (file-attributes
(if full x (expand-file-name x directory)) id-format)))
(directory-files directory full match nosort)))
-(defun tramp-handle-dired-uncache (dir &optional dir-p)
+(defun tramp-handle-dired-uncache (dir)
"Like `dired-uncache' for Tramp files."
- ;; DIR-P is valid for XEmacs only.
(with-parsed-tramp-file-name
- (if (or dir-p (file-directory-p dir)) dir (file-name-directory dir)) nil
+ (if (file-directory-p dir) dir (file-name-directory dir)) nil
(tramp-flush-directory-property v localname)))
(defun tramp-handle-file-accessible-directory-p (filename)
@@ -2946,13 +2865,17 @@ User is always nil."
;; `file-name-as-directory' would be sufficient except localname is
;; the empty string.
(let ((v (tramp-dissect-file-name file t)))
- ;; Run the command on the localname portion only.
+ ;; Run the command on the localname portion only unless we are in
+ ;; completion mode.
(tramp-make-tramp-file-name
(tramp-file-name-method v)
(tramp-file-name-user v)
(tramp-file-name-host v)
- (tramp-run-real-handler
- 'file-name-as-directory (list (or (tramp-file-name-localname v) "")))
+ (if (and (tramp-completion-mode-p)
+ (zerop (length (tramp-file-name-localname v))))
+ ""
+ (tramp-run-real-handler
+ 'file-name-as-directory (list (or (tramp-file-name-localname v) ""))))
(tramp-file-name-hop v))))
(defun tramp-handle-file-name-completion
@@ -2962,11 +2885,21 @@ User is always nil."
(error
"tramp-handle-file-name-completion invoked on non-tramp directory `%s'"
directory))
- (try-completion
- filename
- (mapcar 'list (file-name-all-completions filename directory))
- (when predicate
- (lambda (x) (funcall predicate (expand-file-name (car x) directory))))))
+ (let (hits-ignored-extensions)
+ (or
+ (try-completion
+ filename (file-name-all-completions filename directory)
+ (lambda (x)
+ (when (funcall (or predicate 'identity) (expand-file-name x directory))
+ (not
+ (and
+ completion-ignored-extensions
+ (string-match
+ (concat (regexp-opt completion-ignored-extensions 'paren) "$") x)
+ ;; We remember the hit.
+ (push x hits-ignored-extensions))))))
+ ;; No match. So we try again for ignored files.
+ (try-completion filename hits-ignored-extensions))))
(defun tramp-handle-file-name-directory (file)
"Like `file-name-directory' but aware of Tramp files."
@@ -3035,43 +2968,19 @@ User is always nil."
(defun tramp-handle-find-backup-file-name (filename)
"Like `find-backup-file-name' for Tramp files."
(with-parsed-tramp-file-name filename nil
- ;; We set both variables. It doesn't matter whether it is
- ;; Emacs or XEmacs.
(let ((backup-directory-alist
- ;; Emacs case.
- (when (boundp 'backup-directory-alist)
- (if (symbol-value 'tramp-backup-directory-alist)
- (mapcar
- (lambda (x)
- (cons
- (car x)
- (if (and (stringp (cdr x))
- (file-name-absolute-p (cdr x))
- (not (tramp-file-name-p (cdr x))))
- (tramp-make-tramp-file-name method user host (cdr x))
- (cdr x))))
- (symbol-value 'tramp-backup-directory-alist))
- (symbol-value 'backup-directory-alist))))
-
- (bkup-backup-directory-info
- ;; XEmacs case.
- (when (boundp 'bkup-backup-directory-info)
- (if (symbol-value 'tramp-bkup-backup-directory-info)
- (mapcar
- (lambda (x)
- (nconc
- (list (car x))
- (list
- (if (and (stringp (car (cdr x)))
- (file-name-absolute-p (car (cdr x)))
- (not (tramp-file-name-p (car (cdr x)))))
- (tramp-make-tramp-file-name
- method user host (car (cdr x)))
- (car (cdr x))))
- (cdr (cdr x))))
- (symbol-value 'tramp-bkup-backup-directory-info))
- (symbol-value 'bkup-backup-directory-info)))))
-
+ (if tramp-backup-directory-alist
+ (mapcar
+ (lambda (x)
+ (cons
+ (car x)
+ (if (and (stringp (cdr x))
+ (file-name-absolute-p (cdr x))
+ (not (tramp-file-name-p (cdr x))))
+ (tramp-make-tramp-file-name method user host (cdr x))
+ (cdr x))))
+ tramp-backup-directory-alist)
+ backup-directory-alist)))
(tramp-run-real-handler 'find-backup-file-name (list filename)))))
(defun tramp-handle-insert-directory
@@ -3182,8 +3091,7 @@ User is always nil."
;; When the file is not readable for the owner, it
;; cannot be inserted, even if it is readable for the
;; group or for everybody.
- (set-file-modes
- local-copy (tramp-compat-octal-to-decimal "0600"))
+ (set-file-modes local-copy (string-to-number "0600" 8))
(when (and (null remote-copy)
(tramp-get-method-parameter
@@ -3193,9 +3101,7 @@ User is always nil."
(setq tramp-temp-buffer-file-name local-copy))
;; We must ensure that `file-coding-system-alist'
- ;; matches `local-copy'. We must also use `visit',
- ;; otherwise there might be an error in the
- ;; `revert-buffer' function under XEmacs.
+ ;; matches `local-copy'.
(let ((file-coding-system-alist
(tramp-find-file-name-coding-system-alist
filename local-copy)))
@@ -3251,7 +3157,7 @@ User is always nil."
(with-tramp-progress-reporter v 0 (format "Loading %s" file)
(let ((local-copy (file-local-copy file)))
(unwind-protect
- (tramp-compat-load local-copy noerror t nosuffix must-suffix)
+ (load local-copy noerror t nosuffix must-suffix)
(delete-file local-copy)))))
t)))
@@ -3345,9 +3251,7 @@ User is always nil."
(current-buffer))))
;; There's some output, display it.
(when (with-current-buffer output-buffer (> (point-max) (point-min)))
- (if (functionp 'display-message-or-buffer)
- (tramp-compat-funcall 'display-message-or-buffer output-buffer)
- (pop-to-buffer output-buffer))))))))
+ (display-message-or-buffer output-buffer)))))))
(defun tramp-handle-substitute-in-file-name (filename)
"Like `substitute-in-file-name' for Tramp files.
@@ -3367,14 +3271,6 @@ User is always nil."
(let (process-environment)
(tramp-run-real-handler 'substitute-in-file-name (list filename)))))
-(defun tramp-handle-unhandled-file-name-directory (_filename)
- "Like `unhandled-file-name-directory' for Tramp files."
- ;; Starting with Emacs 23, we must simply return nil. But we must
- ;; keep backward compatibility, also with XEmacs. "~/" cannot be
- ;; returned, because there might be machines without a HOME
- ;; directory (like hydra).
- (and (< emacs-major-version 23) "/"))
-
(defun tramp-handle-set-visited-file-modtime (&optional time-list)
"Like `set-visited-file-modtime' for Tramp files."
(unless (buffer-file-name)
@@ -3403,7 +3299,7 @@ of."
;; connection.
(if (or (not f)
(eq (visited-file-modtime) 0)
- (not (tramp-file-name-handler 'file-remote-p f nil 'connected)))
+ (not (file-remote-p f nil 'connected)))
t
(with-parsed-tramp-file-name f nil
(let* ((remote-file-name-inhibit-cache t)
@@ -3454,7 +3350,7 @@ of."
(with-current-buffer (process-buffer proc)
(file-exists-p
(concat (file-remote-p default-directory)
- (tramp-compat-process-get proc 'watch-name))))))
+ (process-get proc 'watch-name))))))
;;; Functions for establishing connection:
@@ -3567,7 +3463,7 @@ The terminal type can be configured with `tramp-terminal-type'."
(tramp-message vec 3 "Process has finished.")
(throw 'tramp-action 'ok))
(tramp-message vec 3 "Process has died.")
- (throw 'tramp-action 'process-died))))
+ (throw 'tramp-action 'out-of-band-failed))))
(t nil)))
;;; Functions for processing the actions:
@@ -3628,6 +3524,10 @@ connection buffer."
(tramp-get-connection-buffer vec) vec 'file-error
(cond
((eq exit 'permission-denied) "Permission denied")
+ ((eq exit 'out-of-band-failed)
+ (format-message
+ "Copy failed, see buffer `%s' for details"
+ (tramp-get-connection-buffer vec)))
((eq exit 'process-died)
(substitute-command-keys
(concat
@@ -3657,9 +3557,7 @@ for process communication also."
;; Under Windows XP, accept-process-output doesn't return
;; sometimes. So we add an additional timeout.
(with-timeout ((or timeout 1))
- (if (featurep 'xemacs)
- (accept-process-output p timeout timeout-msecs)
- (accept-process-output p timeout timeout-msecs (and proc t))))
+ (accept-process-output p timeout timeout-msecs (and proc t)))
(tramp-message proc 10 "%s %s %s\n%s"
proc (process-status proc) p (buffer-string)))))
@@ -3684,11 +3582,10 @@ Erase echoed commands if exists."
(when (or (not (tramp-get-connection-property proc "check-remote-echo" nil))
;; Sometimes, the echo string is suppressed on the remote side.
(not (string-equal
- (tramp-compat-funcall
- 'substring-no-properties tramp-echo-mark-marker
+ (substring-no-properties
+ tramp-echo-mark-marker
0 (min tramp-echo-mark-marker-length (1- (point-max))))
- (tramp-compat-funcall
- 'buffer-substring-no-properties
+ (buffer-substring-no-properties
(point-min)
(min (+ (point-min) tramp-echo-mark-marker-length)
(point-max))))))
@@ -3706,22 +3603,15 @@ Expects the output of PROC to be sent to the current buffer. Returns
the string that matched, or nil. Waits indefinitely if TIMEOUT is
nil."
(with-current-buffer (process-buffer proc)
- (let ((found (tramp-check-for-regexp proc regexp))
- (start-time (current-time)))
+ (let ((found (tramp-check-for-regexp proc regexp)))
(cond (timeout
- ;; Work around a bug in XEmacs 21, where the timeout
- ;; expires faster than it should. This degenerates
- ;; to polling for buggy XEmacsen, but oh, well.
- (while (and (not found)
- (< (tramp-time-diff (current-time) start-time)
- timeout))
- (with-timeout (timeout)
- (while (not found)
- (tramp-accept-process-output proc 1)
- (unless (memq (process-status proc) '(run open))
- (tramp-error-with-buffer
- nil proc 'file-error "Process has died"))
- (setq found (tramp-check-for-regexp proc regexp))))))
+ (with-timeout (timeout)
+ (while (not found)
+ (tramp-accept-process-output proc 1)
+ (unless (memq (process-status proc) '(run open))
+ (tramp-error-with-buffer
+ nil proc 'file-error "Process has died"))
+ (setq found (tramp-check-for-regexp proc regexp)))))
(t
(while (not found)
(tramp-accept-process-output proc 1)
@@ -3761,9 +3651,8 @@ the remote host use line-endings as defined in the variable
(let (buffer-read-only) (delete-region (point-min) (point-max)))
;; Replace "\n" by `tramp-rsh-end-of-line'.
(setq string
- (mapconcat 'identity
- (tramp-compat-split-string string "\n")
- tramp-rsh-end-of-line))
+ (mapconcat
+ 'identity (split-string string "\n") tramp-rsh-end-of-line))
(unless (or (string= string "")
(string-equal (substring string -1) tramp-rsh-end-of-line))
(setq string (concat string tramp-rsh-end-of-line)))
@@ -3827,57 +3716,47 @@ would yield t. On the other hand, the following check results in nil:
(save-match-data
(logior
(cond
- ((char-equal owner-read ?r) (tramp-compat-octal-to-decimal "00400"))
+ ((char-equal owner-read ?r) (string-to-number "00400" 8))
((char-equal owner-read ?-) 0)
(t (error "Second char `%c' must be one of `r-'" owner-read)))
(cond
- ((char-equal owner-write ?w) (tramp-compat-octal-to-decimal "00200"))
+ ((char-equal owner-write ?w) (string-to-number "00200" 8))
((char-equal owner-write ?-) 0)
(t (error "Third char `%c' must be one of `w-'" owner-write)))
(cond
- ((char-equal owner-execute-or-setid ?x)
- (tramp-compat-octal-to-decimal "00100"))
- ((char-equal owner-execute-or-setid ?S)
- (tramp-compat-octal-to-decimal "04000"))
- ((char-equal owner-execute-or-setid ?s)
- (tramp-compat-octal-to-decimal "04100"))
+ ((char-equal owner-execute-or-setid ?x) (string-to-number "00100" 8))
+ ((char-equal owner-execute-or-setid ?S) (string-to-number "04000" 8))
+ ((char-equal owner-execute-or-setid ?s) (string-to-number "04100" 8))
((char-equal owner-execute-or-setid ?-) 0)
(t (error "Fourth char `%c' must be one of `xsS-'"
owner-execute-or-setid)))
(cond
- ((char-equal group-read ?r) (tramp-compat-octal-to-decimal "00040"))
+ ((char-equal group-read ?r) (string-to-number "00040" 8))
((char-equal group-read ?-) 0)
(t (error "Fifth char `%c' must be one of `r-'" group-read)))
(cond
- ((char-equal group-write ?w) (tramp-compat-octal-to-decimal "00020"))
+ ((char-equal group-write ?w) (string-to-number "00020" 8))
((char-equal group-write ?-) 0)
(t (error "Sixth char `%c' must be one of `w-'" group-write)))
(cond
- ((char-equal group-execute-or-setid ?x)
- (tramp-compat-octal-to-decimal "00010"))
- ((char-equal group-execute-or-setid ?S)
- (tramp-compat-octal-to-decimal "02000"))
- ((char-equal group-execute-or-setid ?s)
- (tramp-compat-octal-to-decimal "02010"))
+ ((char-equal group-execute-or-setid ?x) (string-to-number "00010" 8))
+ ((char-equal group-execute-or-setid ?S) (string-to-number "02000" 8))
+ ((char-equal group-execute-or-setid ?s) (string-to-number "02010" 8))
((char-equal group-execute-or-setid ?-) 0)
(t (error "Seventh char `%c' must be one of `xsS-'"
group-execute-or-setid)))
(cond
- ((char-equal other-read ?r)
- (tramp-compat-octal-to-decimal "00004"))
+ ((char-equal other-read ?r) (string-to-number "00004" 8))
((char-equal other-read ?-) 0)
(t (error "Eighth char `%c' must be one of `r-'" other-read)))
(cond
- ((char-equal other-write ?w) (tramp-compat-octal-to-decimal "00002"))
- ((char-equal other-write ?-) 0)
- (t (error "Ninth char `%c' must be one of `w-'" other-write)))
+ ((char-equal other-write ?w) (string-to-number "00002" 8))
+ ((char-equal other-write ?-) 0)
+ (t (error "Ninth char `%c' must be one of `w-'" other-write)))
(cond
- ((char-equal other-execute-or-sticky ?x)
- (tramp-compat-octal-to-decimal "00001"))
- ((char-equal other-execute-or-sticky ?T)
- (tramp-compat-octal-to-decimal "01000"))
- ((char-equal other-execute-or-sticky ?t)
- (tramp-compat-octal-to-decimal "01001"))
+ ((char-equal other-execute-or-sticky ?x) (string-to-number "00001" 8))
+ ((char-equal other-execute-or-sticky ?T) (string-to-number "01000" 8))
+ ((char-equal other-execute-or-sticky ?t) (string-to-number "01001" 8))
((char-equal other-execute-or-sticky ?-) 0)
(t (error "Tenth char `%c' must be one of `xtT-'"
other-execute-or-sticky)))))))
@@ -3931,15 +3810,22 @@ This is used internally by `tramp-file-mode-from-int'."
;;;###tramp-autoload
(defun tramp-get-local-uid (id-format)
+ "The uid of the local user, in ID-FORMAT.
+ID-FORMAT valid values are `string' and `integer'."
(if (equal id-format 'integer) (user-uid) (user-login-name)))
;;;###tramp-autoload
(defun tramp-get-local-gid (id-format)
+ "The gid of the local user, in ID-FORMAT.
+ID-FORMAT valid values are `string' and `integer'."
+ ;; `group-gid' has been introduced with Emacs 24.4.
(if (and (fboundp 'group-gid) (equal id-format 'integer))
(tramp-compat-funcall 'group-gid)
- (nth 3 (tramp-compat-file-attributes "~/" id-format))))
+ (nth 3 (file-attributes "~/" id-format))))
(defun tramp-get-local-locale (&optional vec)
+ "Determine locale, supporting UTF8 if possible.
+VEC is used for tracing."
;; We use key nil for local connection properties.
(with-tramp-connection-property nil "locale"
(let ((candidates '("en_US.utf8" "C.utf8" "en_US.UTF-8"))
@@ -3979,7 +3865,7 @@ be granted."
(tramp-get-file-property
vec (tramp-file-name-localname vec)
(concat "file-attributes-" suffix) nil)
- (tramp-compat-file-attributes
+ (file-attributes
(tramp-make-tramp-file-name
(tramp-file-name-method vec)
(tramp-file-name-user vec)
@@ -3992,7 +3878,10 @@ be granted."
vec (concat "uid-" suffix) nil))
(remote-gid
(tramp-get-connection-property
- vec (concat "gid-" suffix) nil)))
+ vec (concat "gid-" suffix) nil))
+ (unknown-id
+ (if (string-equal suffix "string")
+ tramp-unknown-id-string tramp-unknown-id-integer)))
(and
file-attr
(or
@@ -4005,12 +3894,14 @@ be granted."
;; User accessible and owned by user.
(and
(eq access (aref (nth 8 file-attr) offset))
- (equal remote-uid (nth 2 file-attr)))
+ (or (equal remote-uid (nth 2 file-attr))
+ (equal unknown-id (nth 2 file-attr))))
;; Group accessible and owned by user's
;; principal group.
(and
(eq access (aref (nth 8 file-attr) (+ offset 3)))
- (equal remote-gid (nth 3 file-attr)))))))))))
+ (or (equal remote-gid (nth 3 file-attr))
+ (equal unknown-id (nth 3 file-attr))))))))))))
;;;###tramp-autoload
(defun tramp-local-host-p (vec)
@@ -4040,9 +3931,6 @@ be granted."
(defun tramp-get-remote-tmpdir (vec)
"Return directory for temporary files on the remote host identified by VEC."
- (when (file-remote-p (tramp-get-connection-property vec "tmpdir" ""))
- ;; Compatibility code: Cached value shall be the local path only.
- (tramp-set-connection-property vec "tmpdir" 'undef))
(let ((dir (tramp-make-tramp-file-name
(tramp-file-name-method vec)
(tramp-file-name-user vec)
@@ -4050,7 +3938,7 @@ be granted."
(or (tramp-get-method-parameter vec 'tramp-tmpdir) "/tmp"))))
(with-tramp-connection-property vec "tmpdir"
(or (and (file-directory-p dir) (file-writable-p dir)
- (tramp-file-name-handler 'file-remote-p dir 'localname))
+ (file-remote-p dir 'localname))
(tramp-error vec 'file-error "Directory %s not accessible" dir)))
dir))
@@ -4071,7 +3959,7 @@ Return the local name of the temporary file."
(setq result nil)
;; This creates the file by side effect.
(set-file-times result)
- (set-file-modes result (tramp-compat-octal-to-decimal "0700"))))
+ (set-file-modes result (string-to-number "0700" 8))))
;; Return the local part.
(with-parsed-tramp-file-name result nil localname)))
@@ -4087,9 +3975,6 @@ Return the local name of the temporary file."
(remove-hook 'kill-buffer-hook
'tramp-delete-temp-file-function)))
-;;; Auto saving to a special directory:
-(defvar auto-save-file-name-transforms)
-
(defun tramp-handle-make-auto-save-file-name ()
"Like `make-auto-save-file-name' for Tramp files.
Returns a file name in `tramp-auto-save-directory' for autosaving
@@ -4104,9 +3989,8 @@ this file, if that variable is non-nil."
(let ((system-type 'not-windows)
(auto-save-file-name-transforms
- (if (and (null tramp-auto-save-directory)
- (boundp 'auto-save-file-name-transforms))
- (symbol-value 'auto-save-file-name-transforms)))
+ (if (null tramp-auto-save-directory)
+ auto-save-file-name-transforms))
(buffer-file-name
(if (null tramp-auto-save-directory)
buffer-file-name
@@ -4120,61 +4004,8 @@ this file, if that variable is non-nil."
("]" . "_r"))
(buffer-file-name))
tramp-auto-save-directory))))
- ;; Run plain `make-auto-save-file-name'. There might be an advice when
- ;; it is not a magic file name operation (since Emacs 22).
- ;; We must deactivate it temporarily.
- (if (not (ad-is-active 'make-auto-save-file-name))
- (tramp-run-real-handler 'make-auto-save-file-name nil)
- ;; else
- (ad-deactivate 'make-auto-save-file-name)
- (prog1
- (tramp-run-real-handler 'make-auto-save-file-name nil)
- (ad-activate 'make-auto-save-file-name)))))
-
-(unless (tramp-exists-file-name-handler 'make-auto-save-file-name)
- (defadvice make-auto-save-file-name
- (around tramp-advice-make-auto-save-file-name () activate)
- "Invoke `tramp-*-handle-make-auto-save-file-name' for Tramp files."
- (if (tramp-tramp-file-p (buffer-file-name))
- ;; We cannot call `tramp-handle-make-auto-save-file-name'
- ;; directly, because this would bypass the locking mechanism.
- (setq ad-return-value
- (tramp-file-name-handler 'make-auto-save-file-name))
- ad-do-it))
- (add-hook
- 'tramp-unload-hook
- (lambda ()
- (ad-remove-advice
- 'make-auto-save-file-name
- 'around 'tramp-advice-make-auto-save-file-name)
- (ad-activate 'make-auto-save-file-name))))
-
-;; In XEmacs < 21.5, autosaved remote files have permission 0666 minus
-;; umask. This is a security threat.
-
-(defun tramp-set-auto-save-file-modes ()
- "Set permissions of autosaved remote files to the original permissions."
- (let ((bfn (buffer-file-name)))
- (when (and (tramp-tramp-file-p bfn)
- (buffer-modified-p)
- (stringp buffer-auto-save-file-name)
- (not (equal bfn buffer-auto-save-file-name)))
- (unless (file-exists-p buffer-auto-save-file-name)
- (write-region "" nil buffer-auto-save-file-name))
- ;; Permissions should be set always, because there might be an old
- ;; auto-saved file belonging to another original file. This could
- ;; be a security threat.
- (set-file-modes
- buffer-auto-save-file-name
- (or (file-modes bfn) (tramp-compat-octal-to-decimal "0600"))))))
-
-(unless (and (featurep 'xemacs)
- (= emacs-major-version 21)
- (> emacs-minor-version 4))
- (add-hook 'auto-save-hook 'tramp-set-auto-save-file-modes)
- (add-hook 'tramp-unload-hook
- (lambda ()
- (remove-hook 'auto-save-hook 'tramp-set-auto-save-file-modes))))
+ ;; Run plain `make-auto-save-file-name'.
+ (tramp-run-real-handler 'make-auto-save-file-name nil)))
(defun tramp-subst-strs-in-string (alist string)
"Replace all occurrences of the string FROM with TO in STRING.
@@ -4189,6 +4020,22 @@ ALIST is of the form ((FROM . TO) ...)."
(setq alist (cdr alist))))
string))
+(defun tramp-handle-temporary-file-directory ()
+ "Like `temporary-file-directory' for Tramp files."
+ (catch 'result
+ (dolist (dir `(,(ignore-errors
+ (tramp-get-remote-tmpdir
+ (tramp-dissect-file-name default-directory)))
+ ,default-directory))
+ (when (and (stringp dir) (file-directory-p dir) (file-writable-p dir))
+ (throw 'result (expand-file-name dir))))))
+
+(defun tramp-handle-make-nearby-temp-file (prefix &optional dir-flag suffix)
+ "Like `make-nearby-temp-file' for Tramp files."
+ (let ((temporary-file-directory
+ (tramp-compat-temporary-file-directory-function)))
+ (make-temp-file prefix dir-flag suffix)))
+
;;; Compatibility functions section:
(defun tramp-call-process
@@ -4197,11 +4044,12 @@ ALIST is of the form ((FROM . TO) ...)."
It always returns a return code. The Lisp error raised when
PROGRAM is nil is trapped also, returning 1. Furthermore, traces
are written with verbosity of 6."
- (let ((v (or vec
+ (let ((default-directory (tramp-compat-temporary-file-directory))
+ (v (or vec
(vector tramp-current-method tramp-current-user
tramp-current-host nil nil)))
(destination (if (eq destination t) (current-buffer) destination))
- result)
+ output error result)
(tramp-message
v 6 "`%s %s' %s %s"
program (mapconcat 'identity args " ") infile destination)
@@ -4212,13 +4060,17 @@ are written with verbosity of 6."
'call-process program infile (or destination t) display args))
;; `result' could also be an error string.
(when (stringp result)
- (signal 'file-error (list result)))
+ (setq error result
+ result 1))
(with-current-buffer
(if (bufferp destination) destination (current-buffer))
- (tramp-message v 6 "%d\n%s" result (buffer-string))))
+ (setq output (buffer-string))))
(error
- (setq result 1)
- (tramp-message v 6 "%d\n%s" result (error-message-string err))))
+ (setq error (error-message-string err)
+ result 1)))
+ (if (zerop (length error))
+ (tramp-message v 6 "%d\n%s" result output)
+ (tramp-message v 6 "%d\n%s\n%s" result output error))
result))
(defun tramp-call-process-region
@@ -4227,7 +4079,8 @@ are written with verbosity of 6."
It always returns a return code. The Lisp error raised when
PROGRAM is nil is trapped also, returning 1. Furthermore, traces
are written with verbosity of 6."
- (let ((v (or vec
+ (let ((default-directory (tramp-compat-temporary-file-directory))
+ (v (or vec
(vector tramp-current-method tramp-current-user
tramp-current-host nil nil)))
(buffer (if (eq buffer t) (current-buffer) buffer))
@@ -4268,27 +4121,24 @@ Invokes `password-read' if available, `read-passwd' else."
(tramp-check-for-regexp proc tramp-password-prompt-regexp)
(format "%s for %s " (capitalize (match-string 1)) key))))
;; We suspend the timers while reading the password.
- (stimers (and (functionp 'with-timeout-suspend)
- (tramp-compat-funcall 'with-timeout-suspend)))
+ (stimers (with-timeout-suspend))
auth-info auth-passwd)
(unwind-protect
(with-parsed-tramp-file-name key nil
(prog1
(or
- ;; See if auth-sources contains something useful, if
- ;; it's bound. `auth-source-user-or-password' is an
- ;; obsoleted function, it has been replaced by
+ ;; See if auth-sources contains something useful.
+ ;; `auth-source-user-or-password' is an obsoleted
+ ;; function since Emacs 24.1, it has been replaced by
;; `auth-source-search'.
(ignore-errors
- (and (boundp 'auth-sources)
- (tramp-get-connection-property
+ (and (tramp-get-connection-property
v "first-password-request" nil)
;; Try with Tramp's current method.
(if (fboundp 'auth-source-search)
(setq auth-info
- (tramp-compat-funcall
- 'auth-source-search
+ (auth-source-search
:max 1
:user (or tramp-current-user t)
:host tramp-current-host
@@ -4298,21 +4148,17 @@ Invokes `password-read' if available, `read-passwd' else."
auth-passwd (if (functionp auth-passwd)
(funcall auth-passwd)
auth-passwd))
- (tramp-compat-funcall
- 'auth-source-user-or-password
+ (tramp-compat-funcall 'auth-source-user-or-password
"password" tramp-current-host tramp-current-method))))
;; Try the password cache.
- (when (functionp 'password-read)
- (let ((password
- (tramp-compat-funcall 'password-read pw-prompt key)))
- (tramp-compat-funcall 'password-cache-add key password)
- password))
+ (let ((password (password-read pw-prompt key)))
+ (password-cache-add key password)
+ password)
;; Else, get the password interactively.
(read-passwd pw-prompt))
(tramp-set-connection-property v "first-password-request" nil)))
;; Reenable the timers.
- (and (functionp 'with-timeout-unsuspend)
- (tramp-compat-funcall 'with-timeout-unsuspend stimers)))))
+ (with-timeout-unsuspend stimers))))
;;;###tramp-autoload
(defun tramp-clear-passwd (vec)
@@ -4324,11 +4170,10 @@ Invokes `password-read' if available, `read-passwd' else."
(tramp-dissect-file-name
(concat
tramp-prefix-format
- (tramp-compat-replace-regexp-in-string
+ (replace-regexp-in-string
(concat tramp-postfix-hop-regexp "$")
tramp-postfix-host-format hop))))))
- (tramp-compat-funcall
- 'password-cache-remove
+ (password-cache-remove
(tramp-make-tramp-file-name
(tramp-file-name-method vec)
(tramp-file-name-user vec)
@@ -4351,24 +4196,8 @@ Invokes `password-read' if available, `read-passwd' else."
(defun tramp-time-diff (t1 t2)
"Return the difference between the two times, in seconds.
T1 and T2 are time values (as returned by `current-time' for example)."
- (cond ((and (fboundp 'subtract-time)
- (fboundp 'float-time))
- (tramp-compat-funcall
- 'float-time (tramp-compat-funcall 'subtract-time t1 t2)))
- ((and (fboundp 'subtract-time)
- (fboundp 'time-to-seconds))
- (tramp-compat-funcall
- 'time-to-seconds (tramp-compat-funcall 'subtract-time t1 t2)))
- ((fboundp 'itimer-time-difference)
- (tramp-compat-funcall
- 'itimer-time-difference
- (if (< (length t1) 3) (append t1 '(0)) t1)
- (if (< (length t2) 3) (append t2 '(0)) t2)))
- (t
- (let ((time (time-subtract t1 t2)))
- (+ (* (car time) 65536.0)
- (cadr time)
- (/ (or (nth 2 time) 0) 1000000.0))))))
+ ;; Starting with Emacs 25.1, we could change this to use `time-subtract'.
+ (float-time (tramp-compat-funcall 'subtract-time t1 t2)))
;; Currently (as of Emacs 20.5), the function `shell-quote-argument'
;; does not deal well with newline characters. Newline is replaced by
@@ -4463,7 +4292,6 @@ Only works for Bourne-like shells."
;; * In Emacs 21, `insert-directory' shows total number of bytes used
;; by the files in that directory. Add this here.
;; * Avoid screen blanking when hitting `g' in dired. (Eli Tziperman)
-;; * abbreviate-file-name
;; * Better error checking. At least whenever we see something
;; strange when doing zerop, we should kill the process and start
;; again. (Greg Stark)
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el
index fc65c0a108..fad7e7f77c 100644
--- a/lisp/net/trampver.el
+++ b/lisp/net/trampver.el
@@ -6,7 +6,7 @@
;; Author: Kai Großjohann <kai.grossjohann@gmx.net>
;; Keywords: comm, processes
;; Package: tramp
-;; Version: 2.2.13.25.1
+;; Version: 2.3.1-pre
;; This file is part of GNU Emacs.
@@ -27,45 +27,36 @@
;; In the Tramp GIT repository, the version number and the bug report
;; address are auto-frobbed from configure.ac, so you should edit that
-;; file and run "autoconf && ./configure" to change them. (X)Emacs
+;; file and run "autoconf && ./configure" to change them. Emacs
;; version check is defined in macro AC_EMACS_INFO of aclocal.m4;
;; should be changed only there.
;;;###tramp-autoload
-(defconst tramp-version "2.2.13.25.1"
+(defconst tramp-version "2.3.1-pre"
"This version of Tramp.")
;;;###tramp-autoload
(defconst tramp-bug-report-address "tramp-devel@gnu.org"
"Email address to send bug reports to.")
-;; `locate-dominating-file' does not exist in XEmacs. But it is not used here.
-(autoload 'locate-dominating-file "files")
-(autoload 'tramp-compat-replace-regexp-in-string "tramp-compat")
-
(defun tramp-repository-get-version ()
"Try to return as a string the repository revision of the Tramp sources."
- (unless (featurep 'xemacs)
- (let ((dir (locate-dominating-file (locate-library "tramp") ".git")))
- (when dir
- (with-temp-buffer
- (let ((default-directory (file-name-as-directory dir)))
- (and (zerop
- (ignore-errors
- (call-process "git" nil '(t nil) nil "rev-parse" "HEAD")))
- (not (zerop (buffer-size)))
- (tramp-compat-replace-regexp-in-string
- "\n" "" (buffer-string)))))))))
-
-;; Check for (X)Emacs version.
-(let ((x (if (or (>= emacs-major-version 22)
- (and (featurep 'xemacs)
- (= emacs-major-version 21)
- (>= emacs-minor-version 4)))
- "ok"
- (format "Tramp 2.2.13.25.1 is not fit for %s"
- (when (string-match "^.*$" (emacs-version))
- (match-string 0 (emacs-version)))))))
+ (let ((dir (locate-dominating-file (locate-library "tramp") ".git")))
+ (when dir
+ (with-temp-buffer
+ (let ((default-directory (file-name-as-directory dir)))
+ (and (zerop
+ (ignore-errors
+ (call-process "git" nil '(t nil) nil "rev-parse" "HEAD")))
+ (not (zerop (buffer-size)))
+ (replace-regexp-in-string "\n" "" (buffer-string))))))))
+
+;; Check for Emacs version.
+(let ((x (if (>= emacs-major-version 23)
+ "ok"
+ (format "Tramp 2.3.1-pre is not fit for %s"
+ (when (string-match "^.*$" (emacs-version))
+ (match-string 0 (emacs-version)))))))
(unless (string-match "\\`ok\\'" x) (error "%s" x)))
(add-hook 'tramp-unload-hook
diff --git a/lisp/net/webjump.el b/lisp/net/webjump.el
index 41b7a7bb9c..46f17afed4 100644
--- a/lisp/net/webjump.el
+++ b/lisp/net/webjump.el
@@ -67,142 +67,18 @@
;;------------------------------------------------------------------- Constants
-(defvar webjump-sample-sites
+(defgroup webjump nil
+ "Programmable Web hotlist."
+ :prefix "webjump-"
+ :group 'browse-url)
+
+(defconst webjump-sample-sites
'(
;; FSF, not including Emacs-specific.
("GNU Project FTP Archive" .
;; GNU FTP Mirror List from http://www.gnu.org/order/ftp.html
[mirrors "ftp://ftp.gnu.org/pub/gnu/"
- ;; United States
- "ftp://mirrors.kernel.org/gnu"
- "ftp://gatekeeper.dec.com/pub/GNU/"
- "ftp://ftp.keystealth.org/pub/gnu/"
- "ftp://mirrors.usc.edu/pub/gnu/"
- "ftp://cudlug.cudenver.edu/pub/mirrors/ftp.gnu.org/"
- "ftp://ftp.cise.ufl.edu/pub/mirrors/GNU/"
- "ftp://uiarchive.cso.uiuc.edu/pub/ftp/ftp.gnu.org/gnu/"
- "ftp://gnu.cs.lewisu.edu/gnu/"
- "ftp://ftp.in-span.net/pub/mirrors/ftp.gnu.org/"
- "ftp://gnu.ms.uky.edu/pub/mirrors/gnu/"
- "ftp://ftp.algx.net/pub/gnu/"
- "ftp://aeneas.mit.edu/pub/gnu/"
- "ftp://ftp.egr.msu.edu/pub/gnu/"
- "ftp://ftp.wayne.edu/pub/gnu/"
- "ftp://wuarchive.wustl.edu/mirrors/gnu/"
- "ftp://gnu.teleglobe.net/ftp.gnu.org/"
- "ftp://ftp.cs.columbia.edu/archives/gnu/prep/"
- "ftp://ftp.ece.cornell.edu/pub/mirrors/gnu/"
- "ftp://ftp.ibiblio.org/pub/mirrors/gnu/"
- "ftp://ftp.cis.ohio-state.edu/mirror/gnu/"
- "ftp://ftp.club.cc.cmu.edu/gnu/"
- "ftp://ftp.sunsite.utk.edu/pub/gnu/ftp/"
- "ftp://thales.memphis.edu/pub/gnu/"
- "ftp://gnu.wwc.edu"
- "ftp://ftp.twtelecom.net/pub/GNU/"
- ;; Africa
- "ftp://ftp.sun.ac.za/mirrorsites/ftp.gnu.org"
- ;; The Americas
- "ftp://ftp.unicamp.br/pub/gnu/"
- "ftp://master.softaplic.com.br/pub/gnu/"
- "ftp://ftp.matrix.com.br/pub/gnu/"
- "ftp://ftp.pucpr.br/gnu"
- "ftp://ftp.linorg.usp.br/gnu"
- "ftp://ftp.cs.ubc.ca/mirror2/gnu/"
- "ftp://cs.ubishops.ca/pub/ftp.gnu.org/"
- "ftp://ftp.inf.utfsm.cl/pub/gnu/"
- "ftp://sunsite.ulatina.ac.cr/Mirrors/GNU/"
- "ftp://www.gnu.unam.mx/pub/gnu/software/"
- "ftp://gnu.cem.itesm.mx/pub/mirrors/gnu.org/"
- "ftp://ftp.azc.uam.mx/mirrors/gnu/"
- ;; Australia
- "ftp://mirror.aarnet.edu.au/pub/gnu/"
- "ftp://gnu.mirror.pacific.net.au/gnu/"
- ;; Asia
- "ftp://ftp.cs.cuhk.edu.hk/pub/gnu/gnu/"
- "ftp://sunsite.ust.hk/pub/gnu/"
- "ftp://ftp.gnupilgrims.org/pub/gnu"
- "ftp://www.imtech.res.in/mirror/gnuftp/"
- "ftp://kambing.vlsm.org/gnu"
- "ftp://ftp.cs.huji.ac.il/mirror/GNU/"
- "ftp://tron.um.u-tokyo.ac.jp/pub/GNU/"
- "ftp://core.ring.gr.jp/pub/GNU/"
- "ftp://ftp.ring.gr.jp/pub/GNU/"
- "ftp://mirrors.hbi.co.jp/gnu/"
- "ftp://ftp.cs.titech.ac.jp/pub/gnu/"
- "ftp://ftpmirror.hanyang.ac.kr/GNU/"
- "ftp://ftp.linux.sarang.net/mirror/gnu/gnu/"
- "ftp://ftp.xgate.co.kr/pub/mirror/gnu/"
- "ftp://ftp://gnu.xinicks.com/"
- "ftp://ftp.isu.net.sa/pub/gnu/"
- "ftp://ftp.nctu.edu.tw/UNIX/gnu/"
- "ftp://coda.nctu.edu.tw/UNIX/gnu/"
- "ftp://ftp1.sinica.edu.tw/pub3/GNU/gnu/"
- "ftp://gnu.cdpa.nsysu.edu.tw/gnu"
- "ftp://ftp.nectec.or.th/pub/mirrors/gnu/"
- ;; Europe
- "ftp://ftp.gnu.vbs.at/"
- "ftp://ftp.univie.ac.at/packages/gnu/"
- "ftp://gd.tuwien.ac.at/gnu/gnusrc/"
- "ftp://ftp.belnet.be/mirror/ftp.gnu.org/"
- "ftp://gnu.blic.net/pub/gnu/"
- "ftp://ftp.fi.muni.cz/pub/gnu/"
- "ftp://ftp.dkuug.dk/pub/gnu/"
- "ftp://sunsite.dk/mirrors/gnu"
- "ftp://ftp.funet.fi/pub/gnu/prep/"
- "ftp://ftp.irisa.fr/pub/gnu/"
- "ftp://ftp.cs.univ-paris8.fr/mirrors/ftp.gnu.org/"
- "ftp://ftp.cs.tu-berlin.de/pub/gnu/"
- "ftp://ftp.leo.org/pub/comp/os/unix/gnu/"
- "ftp://ftp.informatik.rwth-aachen.de/pub/gnu/"
- "ftp://ftp.de.uu.net/pub/gnu/"
- "ftp://ftp.freenet.de/pub/ftp.gnu.org/gnu/"
- "ftp://ftp.cs.uni-bonn.de/pub/gnu/"
- "ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/"
- "ftp://ftp.stw-bonn.de/pub/mirror/ftp.gnu.org/"
- "ftp://ftp.math.uni-bremen.de/pub/gnu"
- "ftp://ftp.forthnet.gr/pub/gnu/"
- "ftp://ftp.ntua.gr/pub/gnu/"
- "ftp://ftp.duth.gr/pub/gnu/"
- "ftp://ftp.physics.auth.gr/pub/gnu/"
- "ftp://ftp.esat.net/pub/gnu/"
- "ftp://ftp.heanet.ie/mirrors/ftp.gnu.org"
- "ftp://ftp.lugroma2.org/pub/gnu/"
- "ftp://ftp.gnu.inetcosmos.org/pub/gnu/"
- "ftp://ftp.digitaltrust.it/pub/gnu"
- "ftp://ftp://rm.mirror.garr.it/mirrors/gnuftp"
- "ftp://ftp.nluug.nl/pub/gnu/"
- "ftp://ftp.mirror.nl/pub/mirror/gnu/"
- "ftp://ftp.nl.uu.net/pub/gnu/"
- "ftp://mirror.widexs.nl/pub/gnu/"
- "ftp://ftp.easynet.nl/mirror/GNU/"
- "ftp://ftp.win.tue.nl/pub/gnu"
- "ftp://gnu.mirror.vuurwerk.net/pub/GNU/"
- "ftp://gnu.kookel.org/pub/ftp.gnu.org/"
- "ftp://ftp.uninett.no/pub/gnu/"
- "ftp://ftp.task.gda.pl/pub/gnu/"
- "ftp://sunsite.icm.edu.pl/pub/gnu/"
- "ftp://ftp.man.poznan.pl/pub/gnu"
- "ftp://ftp.ist.utl.pt/pub/GNU/gnu/"
- "ftp://ftp.telepac.pt/pub/gnu/"
- "ftp://ftp.timisoara.roedu.net/mirrors/ftp.gnu.org/pub/gnu"
- "ftp://ftp.chg.ru/pub/gnu/"
- "ftp://gnuftp.axitel.ru/"
- "ftp://ftp.arnes.si/software/gnu/"
- "ftp://ftp.etsimo.uniovi.es/pub/gnu/"
- "ftp://ftp.rediris.es/pub/gnu/"
- "ftp://ftp.chl.chalmers.se/pub/gnu/"
- "ftp://ftp.isy.liu.se/pub/gnu/"
- "ftp://ftp.luth.se/pub/unix/gnu/"
- "ftp://ftp.stacken.kth.se/pub/gnu/"
- "ftp://ftp.sunet.se/pub/gnu/"
- "ftp://sunsite.cnlab-switch.ch/mirror/gnu/"
- "ftp://ftp.ulak.net.tr/gnu/"
- "ftp://ftp.gnu.org.ua"
- "ftp://ftp.mcc.ac.uk/pub/gnu/"
- "ftp://ftp.mirror.ac.uk/sites/ftp.gnu.org/gnu/"
- "ftp://ftp.warwick.ac.uk/pub/gnu/"
- "ftp://ftp.hands.com/ftp.gnu.org/"
- "ftp://gnu.teleglobe.net/ftp.gnu.org/"])
+ "http://ftpmirror.gnu.org"])
("GNU Project Home Page" . "www.gnu.org")
;; Emacs.
@@ -233,7 +109,7 @@
[simple-query "wikipedia.org" "wikipedia.org/wiki/" ""])
;; Misc. general interest.
- ("Interactive Weather Information Network" . webjump-to-iwin)
+ ("National Weather Service" . webjump-to-iwin)
("Usenet FAQs" .
"www.faqs.org/faqs/")
("RTFM Usenet FAQs by Group" .
@@ -254,10 +130,10 @@
"www.neilvandyke.org/webjump/")
)
- "Sample hotlist for WebJump. See the documentation for the `webjump'
-function and the `webjump-sites' variable.")
+ "Sample hotlist for WebJump.
+See the documentation for `webjump' and `webjump-sites'.")
-(defvar webjump-state-to-postal-alist
+(defconst webjump-state-to-postal-alist
'(("Alabama" . "al") ("Alaska" . "ak") ("Arizona" . "az") ("Arkansas" . "ar")
("California" . "ca") ("Colorado" . "co") ("Connecticut" . "ct")
("Delaware" . "de") ("Florida" . "fl") ("Georgia" . "ga") ("Hawaii" . "hi")
@@ -277,8 +153,7 @@ function and the `webjump-sites' variable.")
;;------------------------------------------------------------ Option Variables
-(defvar webjump-sites
- webjump-sample-sites
+(defcustom webjump-sites webjump-sample-sites
"Hotlist for WebJump.
The hotlist is represented as an association list, with the CAR of each cell
@@ -309,33 +184,47 @@ parameter. This might come in handy for various kludges.
For convenience, if the `http://', `ftp://', or `file://' prefix is missing
from a URL, WebJump will make a guess at what you wanted and prepend it before
-submitting the URL.")
+submitting the URL."
+ :type '(alist :key-type (string :tag "Name")
+ :value-type (choice :tag "URL"
+ (string :tag "URL")
+ function
+ (vector :tag "Builtin"
+ (symbol :tag "Name")
+ (repeat :inline t :tag "Arguments"
+ string))
+ (sexp :tag "Expression to eval"))))
;;------------------------------------------------------- Sample Site Functions
(defun webjump-to-iwin (name)
- (let ((prefix "http://iwin.nws.noaa.gov/")
- (state (webjump-read-choice name "state"
- (append '(("Puerto Rico" . "pr"))
- webjump-state-to-postal-alist))))
- (if state
- (concat prefix "iwin/" state "/"
- (webjump-read-choice name "option"
- '(("Hourly Report" . "hourly")
- ("State Forecast" . "state")
- ("Local Forecast" . "local")
- ("Zone Forecast" . "zone")
- ("Short-Term Forecast" . "shortterm")
- ("Weather Summary" . "summary")
- ("Public Information" . "public")
- ("Climatic Data" . "climate")
- ("Aviation Products" . "aviation")
- ("Hydro Products" . "hydro")
- ("Special Weather" . "special")
- ("Watches and Warnings" . "warnings"))
- "zone")
- ".html")
- prefix)))
+ (let* ((prefix "http://www.nws.noaa.gov/view/")
+ (state (webjump-read-choice name "state"
+ (append '(("Puerto Rico" . "pr")
+ ("Guam" . "gu")
+ ("American Samoa" . "as")
+ ("District of Columbia" . "dc")
+ ("US Virgin Islands" . "vi"))
+ webjump-state-to-postal-alist)))
+ (opt (if state
+ (webjump-read-choice
+ name "option"
+ '(("Hourly Report" . "hourly")
+ ("State Forecast" . "state")
+ ("Zone Forecast" . "zone")
+ ("Short-Term Forecast" . "shortterm")
+ ("Forecast Discussion" . "discussion")
+ ("Weather Summary" . "summary")
+ ("Public Information" . "public")
+ ("Climatic Data" . "climate")
+ ("Hydro Products" . "hydro")
+ ("Watches" . "watches")
+ ("Special Weather" . "special")
+ ("Warnings and Advisories" . "warnings")
+ ("Fire Weather" . "firewx"))))))
+ (cond (opt (concat prefix "prodsByState.php?state=" state "&prodtype=" opt))
+ (state (concat prefix "states.php?state=" state))
+ (t prefix))))
(defun webjump-to-risks (name)
(let (issue volume)
diff --git a/lisp/nxml/nxml-enc.el b/lisp/nxml/nxml-enc.el
index bcee0882aa..6406f57ff6 100644
--- a/lisp/nxml/nxml-enc.el
+++ b/lisp/nxml/nxml-enc.el
@@ -1,4 +1,4 @@
-;;; nxml-enc.el --- XML encoding auto-detection
+;;; nxml-enc.el --- XML encoding auto-detection -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
@@ -68,7 +68,7 @@
(and nxml-non-xml-set-auto-coding-function
(funcall nxml-non-xml-set-auto-coding-function file-name size))))
-(defun nxml-set-xml-coding (file-name size)
+(defun nxml-set-xml-coding (_file-name size)
"Function to use as `set-auto-coding-function' when file is known to be XML."
(nxml-detect-coding-system (+ (point) (min size 1024))))
diff --git a/lisp/nxml/nxml-glyph.el b/lisp/nxml/nxml-glyph.el
deleted file mode 100644
index 4a518218c2..0000000000
--- a/lisp/nxml/nxml-glyph.el
+++ /dev/null
@@ -1,423 +0,0 @@
-;;; nxml-glyph.el --- glyph-handling for nxml-mode
-
-;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
-
-;; Author: James Clark
-;; Keywords: wp, hypermedia, languages, XML
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; The entry point to this file is `nxml-glyph-display-string'.
-;; The current implementation is heuristic due to a lack of
-;; Emacs primitives necessary to implement it properly. The user
-;; can tweak the heuristics using `nxml-glyph-set-functions'.
-
-;;; Code:
-
-(defconst nxml-ascii-glyph-set
- [(#x0020 . #x007E)])
-
-(defconst nxml-latin1-glyph-set
- [(#x0020 . #x007E)
- (#x00A0 . #x00FF)])
-
-;; These were generated by using nxml-insert-target-repertoire-glyph-set
-;; on the TARGET[123] files in
-;; http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz
-
-(defconst nxml-misc-fixed-1-glyph-set
- [(#x0020 . #x007E)
- (#x00A0 . #x00FF)
- (#x0100 . #x017F)
- #x018F #x0192
- (#x0218 . #x021B)
- #x0259
- (#x02C6 . #x02C7)
- (#x02D8 . #x02DD)
- (#x0374 . #x0375)
- #x037A #x037E
- (#x0384 . #x038A)
- #x038C
- (#x038E . #x03A1)
- (#x03A3 . #x03CE)
- (#x0401 . #x040C)
- (#x040E . #x044F)
- (#x0451 . #x045C)
- (#x045E . #x045F)
- (#x0490 . #x0491)
- (#x05D0 . #x05EA)
- (#x1E02 . #x1E03)
- (#x1E0A . #x1E0B)
- (#x1E1E . #x1E1F)
- (#x1E40 . #x1E41)
- (#x1E56 . #x1E57)
- (#x1E60 . #x1E61)
- (#x1E6A . #x1E6B)
- (#x1E80 . #x1E85)
- (#x1EF2 . #x1EF3)
- (#x2010 . #x2022)
- #x2026 #x2030
- (#x2039 . #x203A)
- #x20AC #x2116 #x2122 #x2126
- (#x215B . #x215E)
- (#x2190 . #x2193)
- #x2260
- (#x2264 . #x2265)
- (#x23BA . #x23BD)
- (#x2409 . #x240D)
- #x2424 #x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 #x252C #x2534 #x253C #x2592 #x25C6 #x266A #xFFFD]
- "Glyph set for TARGET1 glyph repertoire of misc-fixed-* font.
-This repertoire is supported for the bold and oblique fonts.")
-
-(defconst nxml-misc-fixed-2-glyph-set
- [(#x0020 . #x007E)
- (#x00A0 . #x00FF)
- (#x0100 . #x017F)
- #x018F #x0192
- (#x01FA . #x01FF)
- (#x0218 . #x021B)
- #x0259
- (#x02C6 . #x02C7)
- #x02C9
- (#x02D8 . #x02DD)
- (#x0300 . #x0311)
- (#x0374 . #x0375)
- #x037A #x037E
- (#x0384 . #x038A)
- #x038C
- (#x038E . #x03A1)
- (#x03A3 . #x03CE)
- #x03D1
- (#x03D5 . #x03D6)
- #x03F1
- (#x0401 . #x040C)
- (#x040E . #x044F)
- (#x0451 . #x045C)
- (#x045E . #x045F)
- (#x0490 . #x0491)
- (#x05D0 . #x05EA)
- (#x1E02 . #x1E03)
- (#x1E0A . #x1E0B)
- (#x1E1E . #x1E1F)
- (#x1E40 . #x1E41)
- (#x1E56 . #x1E57)
- (#x1E60 . #x1E61)
- (#x1E6A . #x1E6B)
- (#x1E80 . #x1E85)
- (#x1EF2 . #x1EF3)
- (#x2010 . #x2022)
- #x2026 #x2030
- (#x2032 . #x2034)
- (#x2039 . #x203A)
- #x203C #x203E #x2044
- (#x2070 . #x2071)
- (#x2074 . #x208E)
- (#x20A3 . #x20A4)
- #x20A7 #x20AC
- (#x20D0 . #x20D7)
- #x2102 #x2105 #x2113
- (#x2115 . #x2116)
- #x211A #x211D #x2122 #x2124 #x2126 #x212E
- (#x215B . #x215E)
- (#x2190 . #x2195)
- (#x21A4 . #x21A8)
- (#x21D0 . #x21D5)
- (#x2200 . #x2209)
- (#x220B . #x220C)
- #x220F
- (#x2211 . #x2213)
- #x2215
- (#x2218 . #x221A)
- (#x221D . #x221F)
- #x2221
- (#x2224 . #x222B)
- #x222E #x223C #x2243 #x2245
- (#x2248 . #x2249)
- #x2259
- (#x225F . #x2262)
- (#x2264 . #x2265)
- (#x226A . #x226B)
- (#x2282 . #x228B)
- #x2295 #x2297
- (#x22A4 . #x22A7)
- (#x22C2 . #x22C3)
- #x22C5 #x2300 #x2302
- (#x2308 . #x230B)
- #x2310
- (#x2320 . #x2321)
- (#x2329 . #x232A)
- (#x23BA . #x23BD)
- (#x2409 . #x240D)
- #x2424 #x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 #x252C #x2534 #x253C
- (#x254C . #x2573)
- (#x2580 . #x25A1)
- (#x25AA . #x25AC)
- (#x25B2 . #x25B3)
- #x25BA #x25BC #x25C4 #x25C6
- (#x25CA . #x25CB)
- #x25CF
- (#x25D8 . #x25D9)
- #x25E6
- (#x263A . #x263C)
- #x2640 #x2642 #x2660 #x2663
- (#x2665 . #x2666)
- (#x266A . #x266B)
- (#xFB01 . #xFB02)
- #xFFFD]
- "Glyph set for TARGET2 glyph repertoire of the misc-fixed-* fonts.
-This repertoire is supported for the following fonts:
-5x7.bdf 5x8.bdf 6x9.bdf 6x10.bdf 6x12.bdf 7x13.bdf 7x14.bdf clR6x12.bdf")
-
-(defconst nxml-misc-fixed-3-glyph-set
- [(#x0020 . #x007E)
- (#x00A0 . #x00FF)
- (#x0100 . #x01FF)
- (#x0200 . #x0220)
- (#x0222 . #x0233)
- (#x0250 . #x02AD)
- (#x02B0 . #x02EE)
- (#x0300 . #x034F)
- (#x0360 . #x036F)
- (#x0374 . #x0375)
- #x037A #x037E
- (#x0384 . #x038A)
- #x038C
- (#x038E . #x03A1)
- (#x03A3 . #x03CE)
- (#x03D0 . #x03F6)
- (#x0400 . #x0486)
- (#x0488 . #x04CE)
- (#x04D0 . #x04F5)
- (#x04F8 . #x04F9)
- (#x0500 . #x050F)
- (#x0531 . #x0556)
- (#x0559 . #x055F)
- (#x0561 . #x0587)
- (#x0589 . #x058A)
- (#x05B0 . #x05B9)
- (#x05BB . #x05C4)
- (#x05D0 . #x05EA)
- (#x05F0 . #x05F4)
- (#x10D0 . #x10F8)
- #x10FB
- (#x1E00 . #x1E9B)
- (#x1EA0 . #x1EF9)
- (#x1F00 . #x1F15)
- (#x1F18 . #x1F1D)
- (#x1F20 . #x1F45)
- (#x1F48 . #x1F4D)
- (#x1F50 . #x1F57)
- #x1F59 #x1F5B #x1F5D
- (#x1F5F . #x1F7D)
- (#x1F80 . #x1FB4)
- (#x1FB6 . #x1FC4)
- (#x1FC6 . #x1FD3)
- (#x1FD6 . #x1FDB)
- (#x1FDD . #x1FEF)
- (#x1FF2 . #x1FF4)
- (#x1FF6 . #x1FFE)
- (#x2000 . #x200A)
- (#x2010 . #x2027)
- (#x202F . #x2052)
- #x2057
- (#x205F . #x2063)
- (#x2070 . #x2071)
- (#x2074 . #x208E)
- (#x20A0 . #x20B1)
- (#x20D0 . #x20EA)
- (#x2100 . #x213A)
- (#x213D . #x214B)
- (#x2153 . #x2183)
- (#x2190 . #x21FF)
- (#x2200 . #x22FF)
- (#x2300 . #x23CE)
- (#x2400 . #x2426)
- (#x2440 . #x244A)
- (#x2500 . #x25FF)
- (#x2600 . #x2613)
- (#x2616 . #x2617)
- (#x2619 . #x267D)
- (#x2680 . #x2689)
- (#x27E6 . #x27EB)
- (#x27F5 . #x27FF)
- (#x2A00 . #x2A06)
- #x2A1D #x2A3F #x303F
- (#xFB00 . #xFB06)
- (#xFB13 . #xFB17)
- (#xFB1D . #xFB36)
- (#xFB38 . #xFB3C)
- #xFB3E
- (#xFB40 . #xFB41)
- (#xFB43 . #xFB44)
- (#xFB46 . #xFB4F)
- (#xFE20 . #xFE23)
- (#xFF61 . #xFF9F)
- #xFFFD]
- "Glyph set for TARGET3 glyph repertoire of the misc-fixed-* fonts.
-This repertoire is supported for the following fonts:
-6x13.bdf 8x13.bdf 9x15.bdf 9x18.bdf 10x20.bdf")
-
-(defconst nxml-wgl4-glyph-set
- [(#x0020 . #x007E)
- (#x00A0 . #x017F)
- #x0192
- (#x01FA . #x01FF)
- (#x02C6 . #x02C7)
- #x02C9
- (#x02D8 . #x02DB)
- #x02DD
- (#x0384 . #x038A)
- #x038C
- (#x038E . #x03A1)
- (#x03A3 . #x03CE)
- (#x0401 . #x040C)
- (#x040E . #x044F)
- (#x0451 . #x045C)
- (#x045E . #x045F)
- (#x0490 . #x0491)
- (#x1E80 . #x1E85)
- (#x1EF2 . #x1EF3)
- (#x2013 . #x2015)
- (#x2017 . #x201E)
- (#x2020 . #x2022)
- #x2026 #x2030
- (#x2032 . #x2033)
- (#x2039 . #x203A)
- #x203C #x203E #x2044 #x207F
- (#x20A3 . #x20A4)
- #x20A7 #x20AC #x2105 #x2113 #x2116 #x2122 #x2126 #x212E
- (#x215B . #x215E)
- (#x2190 . #x2195)
- #x21A8 #x2202 #x2206 #x220F
- (#x2211 . #x2212)
- #x2215
- (#x2219 . #x221A)
- (#x221E . #x221F)
- #x2229 #x222B #x2248
- (#x2260 . #x2261)
- (#x2264 . #x2265)
- #x2302 #x2310
- (#x2320 . #x2321)
- #x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524
- #x252C #x2534 #x253C
- (#x2550 . #x256C)
- #x2580 #x2584 #x2588 #x258C
- (#x2590 . #x2593)
- (#x25A0 . #x25A1)
- (#x25AA . #x25AC)
- #x25B2 #x25BA #x25BC #x25C4
- (#x25CA . #x25CB)
- #x25CF
- (#x25D8 . #x25D9)
- #x25E6
- (#x263A . #x263C)
- #x2640 #x2642 #x2660 #x2663
- (#x2665 . #x2666)
- (#x266A . #x266B)
- (#xFB01 . #xFB02)]
- "Glyph set corresponding to Windows Glyph List 4.")
-
-(defvar nxml-glyph-set-functions nil
- "Abnormal hook for determining the set of glyphs in a face.
-Each function in this hook is called in turn, unless one of them
-returns non-nil. Each function is called with a single argument
-FACE. If it can determine the set of glyphs representable by
-FACE, it must set the variable `nxml-glyph-set' and return
-non-nil. Otherwise, it must return nil.
-
-The constants `nxml-ascii-glyph-set', `nxml-latin1-glyph-set',
-`nxml-misc-fixed-1-glyph-set', `nxml-misc-fixed-2-glyph-set',
-`nxml-misc-fixed-3-glyph-set' and `nxml-wgl4-glyph-set' are
-predefined for use by `nxml-glyph-set-functions'.")
-
-(define-obsolete-variable-alias 'nxml-glyph-set-hook
- 'nxml-glyph-set-functions "24.3")
-
-(defvar nxml-glyph-set nil
- "Used by `nxml-glyph-set-functions' to return set of glyphs in a FACE.
-This should dynamically bound by any function that runs
-`nxml-glyph-set-functions'. The value must be either nil representing an
-empty set or a vector. Each member of the vector is either a single
-integer or a cons (FIRST . LAST) representing the range of integers
-from FIRST to LAST. An integer represents a glyph with that Unicode
-code-point. The vector must be ordered.")
-
-(defun nxml-x-set-glyph-set (face)
- (setq nxml-glyph-set
- (if (equal (face-attribute face :family) "misc-fixed")
- nxml-misc-fixed-3-glyph-set
- nxml-wgl4-glyph-set)))
-
-(defun nxml-w32-set-glyph-set (face)
- (setq nxml-glyph-set nxml-wgl4-glyph-set))
-
-(defun nxml-window-system-set-glyph-set (face)
- (setq nxml-glyph-set nxml-latin1-glyph-set))
-
-(defun nxml-terminal-set-glyph-set (face)
- (setq nxml-glyph-set nxml-ascii-glyph-set))
-
-(add-hook 'nxml-glyph-set-functions
- (or (cdr (assq window-system
- '((x . nxml-x-set-glyph-set)
- (w32 . nxml-w32-set-glyph-set)
- (nil . nxml-terminal-set-glyph-set))))
- 'nxml-window-system-set-glyph-set)
- t)
-
-;;;###autoload
-(defun nxml-glyph-display-string (n face)
- "Return a string that can display a glyph for Unicode code-point N.
-FACE gives the face that will be used for displaying the string.
-Return nil if the face cannot display a glyph for N."
- (let ((nxml-glyph-set nil))
- (run-hook-with-args-until-success 'nxml-glyph-set-functions face)
- (and nxml-glyph-set
- (nxml-glyph-set-contains-p n nxml-glyph-set)
- (let ((ch (decode-char 'ucs n)))
- (and ch (string ch))))))
-
-(defun nxml-glyph-set-contains-p (n v)
- (let ((start 0)
- (end (length v))
- found mid mid-val mid-start-val mid-end-val)
- (while (> end start)
- (setq mid (+ start
- (/ (- end start) 2)))
- (setq mid-val (aref v mid))
- (if (consp mid-val)
- (setq mid-start-val (car mid-val)
- mid-end-val (cdr mid-val))
- (setq mid-start-val mid-val
- mid-end-val mid-val))
- (cond ((and (<= mid-start-val n)
- (<= n mid-end-val))
- (setq found t)
- (setq start end))
- ((< n mid-start-val)
- (setq end mid))
- (t
- (setq start
- (if (eq start mid)
- end
- mid)))))
- found))
-
-(provide 'nxml-glyph)
-
-;;; nxml-glyph.el ends here
diff --git a/lisp/nxml/nxml-maint.el b/lisp/nxml/nxml-maint.el
index b81e3113ef..5d24d9b313 100644
--- a/lisp/nxml/nxml-maint.el
+++ b/lisp/nxml/nxml-maint.el
@@ -1,4 +1,4 @@
-;;; nxml-maint.el --- commands for maintainers of nxml-*.el
+;;; nxml-maint.el --- commands for maintainers of nxml-*.el -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
@@ -24,48 +24,6 @@
;;; Code:
-;;; Generating files with Unicode char names.
-
-(require 'nxml-uchnm)
-
-(defun nxml-create-unicode-char-name-sets (file)
- "Generate files containing char names from Unicode standard."
- (interactive "fUnicodeData file: ")
- (mapc (lambda (block)
- (let ((nameset (nxml-unicode-block-char-name-set (nth 0 block))))
- (save-excursion
- (find-file (concat (get nameset 'nxml-char-name-set-file)
- ".el"))
- (erase-buffer)
- (insert "(nxml-define-char-name-set '")
- (prin1 nameset (current-buffer))
- (insert "\n '())\n")
- (goto-char (- (point) 3)))))
- nxml-unicode-blocks)
- (save-excursion
- (find-file file)
- (goto-char (point-min))
- (let ((blocks nxml-unicode-blocks)
- code name)
- (while (re-search-forward "^\\([0-9A-F]+\\);\\([^<;][^;]*\\);"
- nil
- t)
- (setq code (string-to-number (match-string 1) 16))
- (setq name (match-string 2))
- (while (and blocks
- (> code (nth 2 (car blocks))))
- (setq blocks (cdr blocks)))
- (when (and (<= (nth 1 (car blocks)) code)
- (<= code (nth 2 (car blocks))))
- (save-excursion
- (find-file (concat (get (nxml-unicode-block-char-name-set
- (nth 0 (car blocks)))
- 'nxml-char-name-set-file)
- ".el"))
- (insert "(")
- (prin1 name (current-buffer))
- (insert (format " #x%04X)\n " code))))))))
-
;;; Parsing target repertoire files from ucs-fonts.
;; This is for converting the TARGET? files in
;; http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz
diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el
index 324350f591..cceb75ead6 100644
--- a/lisp/nxml/nxml-mode.el
+++ b/lisp/nxml/nxml-mode.el
@@ -26,14 +26,10 @@
;;; Code:
-(when (featurep 'mucs)
- (error "nxml-mode is not compatible with Mule-UCS"))
-
(eval-when-compile (require 'cl-lib))
(require 'xmltok)
(require 'nxml-enc)
-(require 'nxml-glyph)
(require 'nxml-util)
(require 'nxml-rap)
(require 'nxml-outln)
@@ -41,6 +37,7 @@
;; So we might as well just require it and silence the compiler.
(provide 'nxml-mode) ; avoid recursive require
(require 'rng-nxml)
+(require 'sgml-mode)
;;; Customization
@@ -55,9 +52,7 @@
(defcustom nxml-char-ref-display-glyph-flag t
"Non-nil means display glyph following character reference.
-The glyph is displayed in face `nxml-glyph'. The abnormal hook
-`nxml-glyph-set-functions' can be used to change the characters
-for which glyphs are displayed."
+The glyph is displayed in face `nxml-glyph'."
:group 'nxml
:type 'boolean)
@@ -153,16 +148,6 @@ This is not used directly, but only via inheritance by other faces."
"Face used to highlight text."
:group 'nxml-faces)
-(defface nxml-comment-content
- '((t (:inherit font-lock-comment-face)))
- "Face used to highlight the content of comments."
- :group 'nxml-faces)
-
-(defface nxml-comment-delimiter
- '((t (:inherit font-lock-comment-delimiter-face)))
- "Face used for the delimiters of comments, i.e., <!-- and -->."
- :group 'nxml-faces)
-
(defface nxml-processing-instruction-delimiter
'((t (:inherit nxml-delimiter)))
"Face used for the delimiters of processing instructions, i.e., <? and ?>."
@@ -280,15 +265,6 @@ This includes ths `x' in hex references."
"Face used for the delimiters of attribute values."
:group 'nxml-faces)
-(defface nxml-namespace-attribute-value
- '((t (:inherit nxml-attribute-value)))
- "Face used for the value of namespace attributes."
- :group 'nxml-faces)
-
-(defface nxml-namespace-attribute-value-delimiter
- '((t (:inherit nxml-attribute-value-delimiter)))
- "Face used for the delimiters of namespace attribute values."
- :group 'nxml-faces)
(defface nxml-prolog-literal-delimiter
'((t (:inherit nxml-delimited-data)))
@@ -342,22 +318,19 @@ The delimiters are <! and >."
;;; Global variables
-(defvar nxml-parent-document nil
+(defvar-local nxml-parent-document nil
"The parent document for a part of a modular document.
Use `nxml-parent-document-set' to set it.")
-(make-variable-buffer-local 'nxml-parent-document)
(put 'nxml-parent-document 'safe-local-variable 'stringp)
-(defvar nxml-prolog-regions nil
+(defvar-local nxml-prolog-regions nil
"List of regions in the prolog to be fontified.
See the function `xmltok-forward-prolog' for more information.")
-(make-variable-buffer-local 'nxml-prolog-regions)
-(defvar nxml-degraded nil
+(defvar-local nxml-degraded nil
"Non-nil if currently operating in degraded mode.
Degraded mode is enabled when an internal error is encountered in the
fontification or after-change functions.")
-(make-variable-buffer-local 'nxml-degraded)
(defvar nxml-completion-hook nil
"Hook run by `nxml-complete'.
@@ -375,13 +348,12 @@ one of the functions returns nil.")
(defvar nxml-end-tag-indent-scan-distance 4000
"Maximum distance from point to scan backwards when indenting end-tag.")
-(defvar nxml-char-ref-extra-display t
+(defvar-local nxml-char-ref-extra-display t
"Non-nil means display extra information for character references.
The extra information consists of a tooltip with the character name
and, if `nxml-char-ref-display-glyph-flag' is non-nil, a glyph
corresponding to the referenced character following the character
reference.")
-(make-variable-buffer-local 'nxml-char-ref-extra-display)
(defvar nxml-mode-map
(let ((map (make-sparse-keymap)))
@@ -415,7 +387,9 @@ reference.")
(defsubst nxml-set-face (start end face)
(when (and face (< start end))
- (font-lock-append-text-property start end 'face face)))
+ ;; Prepend, so the character reference highlighting takes precedence over
+ ;; the string highlighting applied syntactically.
+ (font-lock-prepend-text-property start end 'face face)))
(defun nxml-parent-document-set (parent-document)
"Set `nxml-parent-document' and inherit the DTD &c."
@@ -519,53 +493,39 @@ Many aspects this mode can be customized using
;; FIXME: Use the fact that we're parsing the document already
;; rather than using regex-based filtering.
(setq-local tildify-foreach-region-function
- (apply-partially 'tildify-foreach-ignore-environments
+ (apply-partially #'tildify-foreach-ignore-environments
'(("<! *--" . "-- *>") ("<" . ">"))))
- (set (make-local-variable 'mode-line-process) '((nxml-degraded "/degraded")))
+ (setq-local mode-line-process '((nxml-degraded "/degraded")))
;; We'll determine the fill prefix ourselves
- (make-local-variable 'adaptive-fill-mode)
- (setq adaptive-fill-mode nil)
- (make-local-variable 'forward-sexp-function)
- (setq forward-sexp-function 'nxml-forward-balanced-item)
- (make-local-variable 'indent-line-function)
- (setq indent-line-function 'nxml-indent-line)
- (make-local-variable 'fill-paragraph-function)
- (setq fill-paragraph-function 'nxml-do-fill-paragraph)
+ (setq-local adaptive-fill-mode nil)
+ (setq-local forward-sexp-function #'nxml-forward-balanced-item)
+ (setq-local indent-line-function #'nxml-indent-line)
+ (setq-local fill-paragraph-function #'nxml-do-fill-paragraph)
;; Comment support
;; This doesn't seem to work too well;
;; I think we should probably roll our own nxml-comment-dwim function.
- (make-local-variable 'comment-indent-function)
- (setq comment-indent-function 'nxml-indent-line)
- (make-local-variable 'comment-start)
- (setq comment-start "<!--")
- (make-local-variable 'comment-start-skip)
- (setq comment-start-skip "<!--[ \t\r\n]*")
- (make-local-variable 'comment-end)
- (setq comment-end "-->")
- (make-local-variable 'comment-end-skip)
- (setq comment-end-skip "[ \t\r\n]*-->")
- (make-local-variable 'comment-line-break-function)
- (setq comment-line-break-function 'nxml-newline-and-indent)
- (setq-local comment-quote-nested-function 'nxml-comment-quote-nested)
- (use-local-map nxml-mode-map)
+ (setq-local comment-indent-function #'nxml-indent-line)
+ (setq-local comment-start "<!--")
+ (setq-local comment-start-skip "<!--[ \t\r\n]*")
+ (setq-local comment-end "-->")
+ (setq-local comment-end-skip "[ \t\r\n]*-->")
+ (setq-local comment-line-break-function #'nxml-newline-and-indent)
+ (setq-local comment-quote-nested-function #'nxml-comment-quote-nested)
(save-excursion
(save-restriction
(widen)
- (setq nxml-scan-end (copy-marker (point-min) nil))
(with-silent-modifications
- (nxml-clear-inside (point-min) (point-max))
(nxml-with-invisible-motion
(nxml-scan-prolog)))))
- (add-hook 'completion-at-point-functions
- #'nxml-completion-at-point-function nil t)
- (setq-local syntax-propertize-function #'nxml-after-change)
- (add-hook 'change-major-mode-hook 'nxml-cleanup nil t)
+ (setq-local syntax-ppss-table sgml-tag-syntax-table)
+ (setq-local syntax-propertize-function sgml-syntax-propertize-function)
+ (add-hook 'change-major-mode-hook #'nxml-cleanup nil t)
;; Emacs 23 handles the encoding attribute on the xml declaration
;; transparently to nxml-mode, so there is no longer a need for the below
;; hook. The hook also had the drawback of overriding explicit user
;; instruction to save as some encoding other than utf-8.
- ;;(add-hook 'write-contents-hooks 'nxml-prepare-to-save)
+ ;;(add-hook 'write-contents-hooks #'nxml-prepare-to-save)
(when (not (and (buffer-file-name) (file-exists-p (buffer-file-name))))
(when (and nxml-default-buffer-file-coding-system
(not (local-variable-p 'buffer-file-coding-system)))
@@ -575,16 +535,14 @@ Many aspects this mode can be customized using
(setq font-lock-defaults
'(nxml-font-lock-keywords
- t ; keywords-only; we highlight comments and strings here
+ nil ; highlight comments and strings based on syntax-tables
nil ; font-lock-keywords-case-fold-search. XML is case sensitive
nil ; no special syntax table
- nil ; no automatic syntactic fontification
(font-lock-extend-region-functions . (nxml-extend-region))
(jit-lock-contextually . t)
(font-lock-unfontify-region-function . nxml-unfontify-region)))
- (rng-nxml-mode-init)
- (nxml-enable-unicode-char-name-sets))
+ (with-demoted-errors (rng-nxml-mode-init)))
(defun nxml-cleanup ()
"Clean up after nxml-mode."
@@ -596,7 +554,7 @@ Many aspects this mode can be customized using
(with-silent-modifications
(nxml-with-invisible-motion
(remove-text-properties (point-min) (point-max) '(face)))))
- (remove-hook 'change-major-mode-hook 'nxml-cleanup t))
+ (remove-hook 'change-major-mode-hook #'nxml-cleanup t))
(defun nxml-degrade (context err)
(message "Internal nXML mode error in %s (%s), degrading"
@@ -604,12 +562,7 @@ Many aspects this mode can be customized using
(error-message-string err))
(ding)
(setq nxml-degraded t)
- (setq nxml-prolog-end 1)
- (save-excursion
- (save-restriction
- (widen)
- (with-silent-modifications
- (nxml-clear-inside (point-min) (point-max))))))
+ (setq nxml-prolog-end 1))
;;; Change management
@@ -622,41 +575,6 @@ Many aspects this mode can be customized using
(goto-char font-lock-beg)
(set-mark font-lock-end)))
-(defun nxml-after-change (start end)
- ;; Called via syntax-propertize-function.
- (unless nxml-degraded
- (nxml-with-degradation-on-error 'nxml-after-change
- (save-restriction
- (widen)
- (nxml-with-invisible-motion
- (nxml-after-change1 start end))))))
-
-(defun nxml-after-change1 (start end)
- "After-change bookkeeping.
-Returns a cons cell containing a possibly-enlarged change region.
-You must call `nxml-extend-region' on this expanded region to obtain
-the full extent of the area needing refontification.
-
-For bookkeeping, call this function even when fontification is
-disabled."
- ;; If the prolog might have changed, rescan the prolog.
- (when (<= start
- ;; Add 2 so as to include the < and following char that
- ;; start the instance (document element), since changing
- ;; these can change where the prolog ends.
- (+ nxml-prolog-end 2))
- (nxml-scan-prolog)
- (setq start (point-min)))
-
- (when (> end nxml-prolog-end)
- (goto-char start)
- (nxml-move-tag-backwards (point-min))
- (setq start (point))
- (setq end (max (nxml-scan-after-change start end)
- end)))
-
- (nxml-debug-change "nxml-after-change1" start end))
-
;;; Encodings
(defun nxml-insert-xml-declaration ()
@@ -982,11 +900,11 @@ faces appropriately."
[1 -1 nxml-entity-ref-name]
[-1 nil nxml-entity-ref-delimiter]))
-(put 'comment
- 'nxml-fontify-rule
- '([nil 4 nxml-comment-delimiter]
- [4 -3 nxml-comment-content]
- [-3 nil nxml-comment-delimiter]))
+;; (put 'comment
+;; 'nxml-fontify-rule
+;; '([nil 4 nxml-comment-delimiter]
+;; [4 -3 nxml-comment-content]
+;; [-3 nil nxml-comment-delimiter]))
(put 'processing-instruction
'nxml-fontify-rule
@@ -1018,7 +936,7 @@ faces appropriately."
'nxml-fontify-rule
'([nil nil nxml-attribute-local-name]))
-(put 'xml-declaration-attribute-value
+(put 'xml-declaration-attribute-value ;FIXME: What is this for?
'nxml-fontify-rule
'([nil 1 nxml-attribute-value-delimiter]
[1 -1 nxml-attribute-value]
@@ -1137,28 +1055,11 @@ faces appropriately."
'nxml-attribute-prefix
'nxml-attribute-colon
'nxml-attribute-local-name))
- (let ((start (xmltok-attribute-value-start att))
- (end (xmltok-attribute-value-end att))
- (refs (xmltok-attribute-refs att))
- (delimiter-face (if namespace-declaration
- 'nxml-namespace-attribute-value-delimiter
- 'nxml-attribute-value-delimiter))
- (value-face (if namespace-declaration
- 'nxml-namespace-attribute-value
- 'nxml-attribute-value)))
- (when start
- (nxml-set-face (1- start) start delimiter-face)
- (nxml-set-face end (1+ end) delimiter-face)
- (while refs
- (let* ((ref (car refs))
- (ref-type (aref ref 0))
- (ref-start (aref ref 1))
- (ref-end (aref ref 2)))
- (nxml-set-face start ref-start value-face)
- (nxml-apply-fontify-rule ref-type ref-start ref-end)
- (setq start ref-end))
- (setq refs (cdr refs)))
- (nxml-set-face start end value-face))))
+ (dolist (ref (xmltok-attribute-refs att))
+ (let* ((ref-type (aref ref 0))
+ (ref-start (aref ref 1))
+ (ref-end (aref ref 2)))
+ (nxml-apply-fontify-rule ref-type ref-start ref-end))))
(defun nxml-fontify-qname (start
colon
@@ -1599,30 +1500,7 @@ of the line. This expects the xmltok-* variables to be set up as by
(t (back-to-indentation)))
(current-column))
-;;; Completion
-
-(defun nxml-complete ()
- "Perform completion on the symbol preceding point.
-
-Inserts as many characters as can be completed. However, if not even
-one character can be completed, then a buffer with the possibilities
-is popped up and the symbol is read from the minibuffer with
-completion. If the symbol is complete, then any characters that must
-follow the symbol are also inserted.
-
-The name space used for completion and what is treated as a symbol
-depends on the context. The contexts in which completion is performed
-depend on `nxml-completion-hook'."
- (interactive)
- (unless (run-hook-with-args-until-success 'nxml-completion-hook)
- ;; Eventually we will complete on entity names here.
- (ding)
- (message "Cannot complete in this context")))
-
-(defun nxml-completion-at-point-function ()
- "Call `nxml-complete' to perform completion at point."
- (when nxml-bind-meta-tab-to-complete-flag
- #'nxml-complete))
+(define-obsolete-function-alias 'nxml-complete #'completion-at-point "25.2")
;;; Movement
@@ -1674,7 +1552,7 @@ single name. A character reference contains a character number."
(t end)))))
(nxml-scan-error
(goto-char (cadr err))
- (apply 'error (cddr err)))))
+ (apply #'error (cddr err)))))
(defun nxml-backward-single-balanced-item ()
(condition-case err
@@ -1696,7 +1574,7 @@ single name. A character reference contains a character number."
(t xmltok-start)))))
(nxml-scan-error
(goto-char (cadr err))
- (apply 'error (cddr err)))))
+ (apply #'error (cddr err)))))
(defun nxml-scan-forward-within (end)
(setq end (- end (nxml-end-delimiter-length xmltok-type)))
@@ -1880,7 +1758,7 @@ single name. A character reference contains a character number."
(setq arg (1- arg)))
(nxml-scan-error
(goto-char (cadr err))
- (apply 'error (cddr err))))))
+ (apply #'error (cddr err))))))
(defun nxml-backward-up-element (&optional arg)
(interactive "p")
@@ -1909,7 +1787,7 @@ single name. A character reference contains a character number."
(setq arg (1- arg)))
(nxml-scan-error
(goto-char (cadr err))
- (apply 'error (cddr err))))))
+ (apply #'error (cddr err))))))
(defun nxml-down-element (&optional arg)
"Move forward down into the content of an element.
@@ -1974,7 +1852,7 @@ Negative ARG means move backward."
(setq arg (1- arg)))
(nxml-scan-error
(goto-char (cadr err))
- (apply 'error (cddr err))))))
+ (apply #'error (cddr err))))))
(defun nxml-backward-element (&optional arg)
"Move backward over one element.
@@ -1996,7 +1874,7 @@ Negative ARG means move forward."
(setq arg (1- arg)))
(nxml-scan-error
(goto-char (cadr err))
- (apply 'error (cddr err))))))
+ (apply #'error (cddr err))))))
(defun nxml-mark-token-after ()
(interactive)
@@ -2477,116 +2355,15 @@ and attempts to find another possible way to do the markup."
;;; Character names
-(defvar nxml-char-name-ignore-case t)
-
-(defvar nxml-char-name-alist nil
- "Alist of character names.
-Each member of the list has the form (NAME CODE . NAMESET),
-where NAME is a string naming a character, NAMESET is a symbol
-identifying a set of names and CODE is an integer specifying the
-Unicode scalar value of the named character.
-The NAME will only be used for completion if NAMESET has
-a non-nil `nxml-char-name-set-enabled' property.
-If NAMESET does does not have `nxml-char-name-set-defined' property,
-then it must have a `nxml-char-name-set-file' property and `load'
-will be applied to the value of this property if the nameset
-is enabled.")
-
-(defvar nxml-char-name-table (make-hash-table :test 'eq)
- "Hash table for mapping char codes to names.
-Each key is a Unicode scalar value.
-Each value is a list of pairs of the form (NAMESET . NAME),
-where NAMESET is a symbol identifying a set of names,
-and NAME is a string naming a character.")
-
-(defvar nxml-autoload-char-name-set-list nil
- "List of char namesets that can be autoloaded.")
-
-(defun nxml-enable-char-name-set (nameset)
- (put nameset 'nxml-char-name-set-enabled t))
-
-(defun nxml-disable-char-name-set (nameset)
- (put nameset 'nxml-char-name-set-enabled nil))
-
-(defun nxml-char-name-set-enabled-p (nameset)
- (get nameset 'nxml-char-name-set-enabled))
-
-(defun nxml-autoload-char-name-set (nameset file)
- (unless (memq nameset nxml-autoload-char-name-set-list)
- (setq nxml-autoload-char-name-set-list
- (cons nameset nxml-autoload-char-name-set-list)))
- (put nameset 'nxml-char-name-set-file file))
-
-(defun nxml-define-char-name-set (nameset alist)
- "Define a set of character names.
-NAMESET is a symbol identifying the set.
-ALIST is a list where each member has the form (NAME CODE),
-where NAME is a string naming a character and code is an
-integer giving the Unicode scalar value of the character."
- (when (get nameset 'nxml-char-name-set-defined)
- (error "Nameset `%s' already defined" nameset))
- (let ((iter alist))
- (while iter
- (let* ((name-code (car iter))
- (name (car name-code))
- (code (cadr name-code)))
- (puthash code
- (cons (cons nameset name)
- (gethash code nxml-char-name-table))
- nxml-char-name-table))
- (setcdr (cdr (car iter)) nameset)
- (setq iter (cdr iter))))
- (setq nxml-char-name-alist
- (nconc alist nxml-char-name-alist))
- (put nameset 'nxml-char-name-set-defined t))
-
-(defun nxml-get-char-name (code)
- (mapc 'nxml-maybe-load-char-name-set nxml-autoload-char-name-set-list)
- (let ((names (gethash code nxml-char-name-table))
- name)
- (while (and names (not name))
- (if (nxml-char-name-set-enabled-p (caar names))
- (setq name (cdar names))
- (setq names (cdr names))))
- name))
-
-(defvar nxml-named-char-history nil)
-
(defun nxml-insert-named-char (arg)
"Insert a character using its name.
The name is read from the minibuffer.
Normally, inserts the character as a numeric character reference.
With a prefix argument, inserts the character directly."
(interactive "*P")
- (mapc 'nxml-maybe-load-char-name-set nxml-autoload-char-name-set-list)
- (let ((name
- (let ((completion-ignore-case nxml-char-name-ignore-case))
- (completing-read "Character name: "
- nxml-char-name-alist
- (lambda (member)
- (get (cddr member) 'nxml-char-name-set-enabled))
- t
- nil
- 'nxml-named-char-history)))
- (alist nxml-char-name-alist)
- elt code)
- (while (and alist (not code))
- (setq elt (assoc name alist))
- (if (get (cddr elt) 'nxml-char-name-set-enabled)
- (setq code (cadr elt))
- (setq alist (cdr (member elt alist)))))
+ (let ((code (read-char-by-name "Character name: ")))
(when code
- (insert (if arg
- (or (decode-char 'ucs code)
- (error "Character %x is not supported by Emacs"
- code))
- (format "&#x%X;" code))))))
-
-(defun nxml-maybe-load-char-name-set (sym)
- (when (and (get sym 'nxml-char-name-set-enabled)
- (not (get sym 'nxml-char-name-set-defined))
- (stringp (get sym 'nxml-char-name-set-file)))
- (load (get sym 'nxml-char-name-set-file))))
+ (insert (if arg code (format "&#x%X;" code))))))
(defun nxml-toggle-char-ref-extra-display (arg)
"Toggle the display of extra information for character references."
@@ -2602,9 +2379,11 @@ With a prefix argument, inserts the character directly."
(defun nxml-char-ref-display-extra (start end n)
(when nxml-char-ref-extra-display
- (let ((name (nxml-get-char-name n))
+ (let ((name (or (get-char-code-property n 'name)
+ (get-char-code-property n 'old-name)))
(glyph-string (and nxml-char-ref-display-glyph-flag
- (nxml-glyph-display-string n 'nxml-glyph)))
+ (char-displayable-p n)
+ (string n)))
ov)
(when (or name glyph-string)
(setq ov (make-overlay start end nil t))
diff --git a/lisp/nxml/nxml-outln.el b/lisp/nxml/nxml-outln.el
index 962160cb43..289816a1bb 100644
--- a/lisp/nxml/nxml-outln.el
+++ b/lisp/nxml/nxml-outln.el
@@ -1,4 +1,4 @@
-;;; nxml-outln.el --- outline support for nXML mode
+;;; nxml-outln.el --- outline support for nXML mode -*- lexical-binding:t -*-
;; Copyright (C) 2004, 2007-2016 Free Software Foundation, Inc.
@@ -248,6 +248,16 @@ customize which elements are recognized as sections and headings."
(interactive)
(nxml-transform-subtree-outline '((hide-children . t))))
+;; These variables are dynamically bound. They are use to pass information to
+;; nxml-section-tag-transform-outline-state.
+
+(defvar nxml-outline-state-transform-exceptions nil)
+(defvar nxml-target-section-pos nil)
+(defvar nxml-depth-in-target-section nil)
+(defvar nxml-outline-state-transform-alist nil)
+
+(defvar nxml-outline-display-section-tag-function nil)
+
(defun nxml-hide-other ()
"Hide text content other than that directly in the section containing point.
Hide headings other than those of ancestors of that section and their
@@ -275,14 +285,6 @@ customize which elements are recognized as sections and headings."
(nxml-transform-buffer-outline '((nil . hide-children)
(t . hide-children)))))
-;; These variables are dynamically bound. They are use to pass information to
-;; nxml-section-tag-transform-outline-state.
-
-(defvar nxml-outline-state-transform-exceptions nil)
-(defvar nxml-target-section-pos nil)
-(defvar nxml-depth-in-target-section nil)
-(defvar nxml-outline-state-transform-alist nil)
-
(defun nxml-transform-buffer-outline (alist)
(let ((nxml-target-section-pos nil)
(nxml-depth-in-target-section 0)
@@ -350,7 +352,7 @@ customize which elements are recognized as sections and headings."
(defun nxml-section-tag-transform-outline-state (startp
section-start-pos
&optional
- heading-start-pos)
+ _heading-start-pos)
(if (not startp)
(setq nxml-depth-in-target-section
(and nxml-depth-in-target-section
@@ -427,8 +429,6 @@ customize which elements are recognized as sections and headings."
(nxml-outline-error
(nxml-report-outline-error "Cannot display outline: %s" err)))))
-(defvar nxml-outline-display-section-tag-function nil)
-
(defun nxml-outline-display-rest (outline-state start-tag-indent tag-qnames)
"Display up to and including the end of the current element.
OUTLINE-STATE can be nil, t, hide-children. START-TAG-INDENT is the
@@ -789,7 +789,7 @@ no new overlay will be created."
(defun nxml-end-of-heading ()
"Move from the start of the content of the heading to the end.
Do not move past the end of the line."
- (let ((pos (condition-case err
+ (let ((pos (condition-case nil
(and (nxml-scan-element-forward (point) t)
xmltok-start)
(nxml-scan-error nil))))
@@ -888,7 +888,7 @@ Point is at the end of the tag. `xmltok-start' is the start."
(nxml-ensure-scan-up-to-date)
(let ((pos (nxml-inside-start (point))))
(when pos
- (goto-char (1- pos))
+ (goto-char pos)
t))))
((progn
(xmltok-forward)
diff --git a/lisp/nxml/nxml-parse.el b/lisp/nxml/nxml-parse.el
index 41b2e8ee51..edf012921a 100644
--- a/lisp/nxml/nxml-parse.el
+++ b/lisp/nxml/nxml-parse.el
@@ -1,4 +1,4 @@
-;;; nxml-parse.el --- XML parser, sharing infrastructure with nxml-mode
+;;; nxml-parse.el --- XML parser, sharing infrastructure with nxml-mode -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
diff --git a/lisp/nxml/nxml-rap.el b/lisp/nxml/nxml-rap.el
index 47b23da62a..e66289d042 100644
--- a/lisp/nxml/nxml-rap.el
+++ b/lisp/nxml/nxml-rap.el
@@ -1,4 +1,4 @@
-;;; nxml-rap.el --- low-level support for random access parsing for nXML mode
+;;; nxml-rap.el --- low-level support for random access parsing for nXML mode -*- lexical-binding:t -*-
;; Copyright (C) 2003-2004, 2007-2016 Free Software Foundation, Inc.
@@ -46,8 +46,7 @@
;; look like it scales to large numbers of overlays in a buffer.
;;
;; We don't in fact track all these constructs, but only track them in
-;; some initial part of the instance. The variable `nxml-scan-end'
-;; contains the limit of where we have scanned up to for them.
+;; some initial part of the instance.
;;
;; Thus to parse some random point in the file we first ensure that we
;; have scanned up to that point. Then we search backwards for a
@@ -74,93 +73,33 @@
(require 'xmltok)
(require 'nxml-util)
+(require 'sgml-mode)
-(defvar nxml-prolog-end nil
+(defvar-local nxml-prolog-end nil
"Integer giving position following end of the prolog.")
-(make-variable-buffer-local 'nxml-prolog-end)
-
-(defvar nxml-scan-end nil
- "Marker giving position up to which we have scanned.
-nxml-scan-end must be >= nxml-prolog-end. Furthermore, nxml-scan-end
-must not be an inside position in the following sense. A position is
-inside if the following character is a part of, but not the first
-character of, a CDATA section, comment or processing instruction.
-Furthermore all positions >= nxml-prolog-end and < nxml-scan-end that
-are inside positions must have a non-nil `nxml-inside' property whose
-value is a symbol specifying what it is inside. Any characters with a
-non-nil `fontified' property must have position < nxml-scan-end and
-the correct face. Dependent regions must also be established for any
-unclosed constructs starting before nxml-scan-end.
-There must be no `nxml-inside' properties after nxml-scan-end.")
-(make-variable-buffer-local 'nxml-scan-end)
(defsubst nxml-get-inside (pos)
- (get-text-property pos 'nxml-inside))
-
-(defsubst nxml-clear-inside (start end)
- (nxml-debug-clear-inside start end)
- (remove-text-properties start end '(nxml-inside nil)))
-
-(defsubst nxml-set-inside (start end type)
- (nxml-debug-set-inside start end)
- (put-text-property start end 'nxml-inside type))
+ (save-excursion (nth 8 (syntax-ppss pos))))
(defun nxml-inside-end (pos)
"Return the end of the inside region containing POS.
Return nil if the character at POS is not inside."
- (if (nxml-get-inside pos)
- (or (next-single-property-change pos 'nxml-inside)
- (point-max))
- nil))
+ (save-excursion
+ (let ((ppss (syntax-ppss pos)))
+ (when (nth 8 ppss)
+ (goto-char (nth 8 ppss))
+ (with-syntax-table sgml-tag-syntax-table
+ (if (nth 3 ppss)
+ (progn (forward-comment 1) (point))
+ (or (scan-sexps (point) 1) (point-max))))))))
(defun nxml-inside-start (pos)
"Return the start of the inside region containing POS.
Return nil if the character at POS is not inside."
- (if (nxml-get-inside pos)
- (or (previous-single-property-change (1+ pos) 'nxml-inside)
- (point-min))
- nil))
+ (save-excursion (nth 8 (syntax-ppss pos))))
;;; Change management
-(defun nxml-scan-after-change (start end)
- "Restore `nxml-scan-end' invariants after a change.
-The change happened between START and END.
-Return position after which lexical state is unchanged.
-END must be > `nxml-prolog-end'. START must be outside
-any “inside†regions and at the beginning of a token."
- (if (>= start nxml-scan-end)
- nxml-scan-end
- (let ((inside-remove-start start)
- xmltok-errors)
- (while (or (when (xmltok-forward-special (min end nxml-scan-end))
- (when (memq xmltok-type
- '(comment
- cdata-section
- processing-instruction))
- (nxml-clear-inside inside-remove-start
- (1+ xmltok-start))
- (nxml-set-inside (1+ xmltok-start)
- (point)
- xmltok-type)
- (setq inside-remove-start (point)))
- (if (< (point) (min end nxml-scan-end))
- t
- (setq end (point))
- nil))
- ;; The end of the change was inside but is now outside.
- ;; Imagine something really weird like
- ;; <![CDATA[foo <!-- bar ]]> <![CDATA[ stuff --> <!-- ]]> -->
- ;; and suppose we deleted "<![CDATA[f"
- (let ((inside-end (nxml-inside-end end)))
- (when inside-end
- (setq end inside-end)
- t))))
- (nxml-clear-inside inside-remove-start end))
- (when (> end nxml-scan-end)
- (set-marker nxml-scan-end end))
- end))
-
;; n-s-p only called from nxml-mode.el, where this variable is defined.
(defvar nxml-prolog-regions)
@@ -169,10 +108,7 @@ any “inside†regions and at the beginning of a token."
(let (xmltok-dtd
xmltok-errors)
(setq nxml-prolog-regions (xmltok-forward-prolog))
- (setq nxml-prolog-end (point))
- (nxml-clear-inside (point-min) nxml-prolog-end))
- (when (< nxml-scan-end nxml-prolog-end)
- (set-marker nxml-scan-end nxml-prolog-end)))
+ (setq nxml-prolog-end (point))))
;;; Random access parsing
@@ -223,14 +159,7 @@ Sets variables like `nxml-token-after'."
(defun nxml-tokenize-forward ()
(let (xmltok-errors)
- (when (and (xmltok-forward)
- (> (point) nxml-scan-end))
- (cond ((memq xmltok-type '(comment
- cdata-section
- processing-instruction))
- (with-silent-modifications
- (nxml-set-inside (1+ xmltok-start) (point) xmltok-type))))
- (set-marker nxml-scan-end (point)))
+ (xmltok-forward)
xmltok-type))
(defun nxml-move-tag-backwards (bound)
@@ -253,32 +182,12 @@ As a precondition, point must be >= BOUND."
Leave point unmoved if it is not inside anything special."
(let ((start (nxml-inside-start (point))))
(when start
- (goto-char (1- start))
+ (goto-char start)
(when (nxml-get-inside (point))
- (error "Char before inside-start at %s had nxml-inside property %s"
- (point)
- (nxml-get-inside (point)))))))
+ (error "Char before inside-start at %s is still \"inside\"" (point))))))
(defun nxml-ensure-scan-up-to-date ()
- (let ((pos (point)))
- (when (< nxml-scan-end pos)
- (save-excursion
- (goto-char nxml-scan-end)
- (let (xmltok-errors)
- (while (when (xmltok-forward-special pos)
- (when (memq xmltok-type
- '(comment
- processing-instruction
- cdata-section))
- (with-silent-modifications
- (nxml-set-inside (1+ xmltok-start)
- (point)
- xmltok-type)))
- (if (< (point) pos)
- t
- (setq pos (point))
- nil)))
- (set-marker nxml-scan-end pos))))))
+ (syntax-propertize (point)))
;;; Element scanning
diff --git a/lisp/nxml/nxml-uchnm.el b/lisp/nxml/nxml-uchnm.el
deleted file mode 100644
index 7d7d785f15..0000000000
--- a/lisp/nxml/nxml-uchnm.el
+++ /dev/null
@@ -1,251 +0,0 @@
-;;; nxml-uchnm.el --- support for Unicode standard cha names in nxml-mode
-
-;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
-
-;; Author: James Clark
-;; Keywords: wp, hypermedia, languages, XML
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This enables the use of the character names defined in the Unicode
-;; Standard. The use of the names can be controlled on a per-block
-;; basis, so as both to reduce memory usage and loading time,
-;; and to make completion work better.
-
-;;; Code:
-
-(require 'nxml-mode)
-
-(defconst nxml-unicode-blocks
- '(("Basic Latin" #x0000 #x007F)
- ("Latin-1 Supplement" #x0080 #x00FF)
- ("Latin Extended-A" #x0100 #x017F)
- ("Latin Extended-B" #x0180 #x024F)
- ("IPA Extensions" #x0250 #x02AF)
- ("Spacing Modifier Letters" #x02B0 #x02FF)
- ("Combining Diacritical Marks" #x0300 #x036F)
- ("Greek and Coptic" #x0370 #x03FF)
- ("Cyrillic" #x0400 #x04FF)
- ("Cyrillic Supplementary" #x0500 #x052F)
- ("Armenian" #x0530 #x058F)
- ("Hebrew" #x0590 #x05FF)
- ("Arabic" #x0600 #x06FF)
- ("Syriac" #x0700 #x074F)
- ("Thaana" #x0780 #x07BF)
- ("Devanagari" #x0900 #x097F)
- ("Bengali" #x0980 #x09FF)
- ("Gurmukhi" #x0A00 #x0A7F)
- ("Gujarati" #x0A80 #x0AFF)
- ("Oriya" #x0B00 #x0B7F)
- ("Tamil" #x0B80 #x0BFF)
- ("Telugu" #x0C00 #x0C7F)
- ("Kannada" #x0C80 #x0CFF)
- ("Malayalam" #x0D00 #x0D7F)
- ("Sinhala" #x0D80 #x0DFF)
- ("Thai" #x0E00 #x0E7F)
- ("Lao" #x0E80 #x0EFF)
- ("Tibetan" #x0F00 #x0FFF)
- ("Myanmar" #x1000 #x109F)
- ("Georgian" #x10A0 #x10FF)
- ("Hangul Jamo" #x1100 #x11FF)
- ("Ethiopic" #x1200 #x137F)
- ("Cherokee" #x13A0 #x13FF)
- ("Unified Canadian Aboriginal Syllabics" #x1400 #x167F)
- ("Ogham" #x1680 #x169F)
- ("Runic" #x16A0 #x16FF)
- ("Tagalog" #x1700 #x171F)
- ("Hanunoo" #x1720 #x173F)
- ("Buhid" #x1740 #x175F)
- ("Tagbanwa" #x1760 #x177F)
- ("Khmer" #x1780 #x17FF)
- ("Mongolian" #x1800 #x18AF)
- ("Latin Extended Additional" #x1E00 #x1EFF)
- ("Greek Extended" #x1F00 #x1FFF)
- ("General Punctuation" #x2000 #x206F)
- ("Superscripts and Subscripts" #x2070 #x209F)
- ("Currency Symbols" #x20A0 #x20CF)
- ("Combining Diacritical Marks for Symbols" #x20D0 #x20FF)
- ("Letterlike Symbols" #x2100 #x214F)
- ("Number Forms" #x2150 #x218F)
- ("Arrows" #x2190 #x21FF)
- ("Mathematical Operators" #x2200 #x22FF)
- ("Miscellaneous Technical" #x2300 #x23FF)
- ("Control Pictures" #x2400 #x243F)
- ("Optical Character Recognition" #x2440 #x245F)
- ("Enclosed Alphanumerics" #x2460 #x24FF)
- ("Box Drawing" #x2500 #x257F)
- ("Block Elements" #x2580 #x259F)
- ("Geometric Shapes" #x25A0 #x25FF)
- ("Miscellaneous Symbols" #x2600 #x26FF)
- ("Dingbats" #x2700 #x27BF)
- ("Miscellaneous Mathematical Symbols-A" #x27C0 #x27EF)
- ("Supplemental Arrows-A" #x27F0 #x27FF)
- ("Braille Patterns" #x2800 #x28FF)
- ("Supplemental Arrows-B" #x2900 #x297F)
- ("Miscellaneous Mathematical Symbols-B" #x2980 #x29FF)
- ("Supplemental Mathematical Operators" #x2A00 #x2AFF)
- ("CJK Radicals Supplement" #x2E80 #x2EFF)
- ("Kangxi Radicals" #x2F00 #x2FDF)
- ("Ideographic Description Characters" #x2FF0 #x2FFF)
- ("CJK Symbols and Punctuation" #x3000 #x303F)
- ("Hiragana" #x3040 #x309F)
- ("Katakana" #x30A0 #x30FF)
- ("Bopomofo" #x3100 #x312F)
- ("Hangul Compatibility Jamo" #x3130 #x318F)
- ("Kanbun" #x3190 #x319F)
- ("Bopomofo Extended" #x31A0 #x31BF)
- ("Katakana Phonetic Extensions" #x31F0 #x31FF)
- ("Enclosed CJK Letters and Months" #x3200 #x32FF)
- ("CJK Compatibility" #x3300 #x33FF)
- ("CJK Unified Ideographs Extension A" #x3400 #x4DBF)
- ;;("CJK Unified Ideographs" #x4E00 #x9FFF)
- ("Yi Syllables" #xA000 #xA48F)
- ("Yi Radicals" #xA490 #xA4CF)
- ;;("Hangul Syllables" #xAC00 #xD7AF)
- ;;("High Surrogates" #xD800 #xDB7F)
- ;;("High Private Use Surrogates" #xDB80 #xDBFF)
- ;;("Low Surrogates" #xDC00 #xDFFF)
- ;;("Private Use Area" #xE000 #xF8FF)
- ;;("CJK Compatibility Ideographs" #xF900 #xFAFF)
- ("Alphabetic Presentation Forms" #xFB00 #xFB4F)
- ("Arabic Presentation Forms-A" #xFB50 #xFDFF)
- ("Variation Selectors" #xFE00 #xFE0F)
- ("Combining Half Marks" #xFE20 #xFE2F)
- ("CJK Compatibility Forms" #xFE30 #xFE4F)
- ("Small Form Variants" #xFE50 #xFE6F)
- ("Arabic Presentation Forms-B" #xFE70 #xFEFF)
- ("Halfwidth and Fullwidth Forms" #xFF00 #xFFEF)
- ("Specials" #xFFF0 #xFFFF)
- ("Old Italic" #x10300 #x1032F)
- ("Gothic" #x10330 #x1034F)
- ("Deseret" #x10400 #x1044F)
- ("Byzantine Musical Symbols" #x1D000 #x1D0FF)
- ("Musical Symbols" #x1D100 #x1D1FF)
- ("Mathematical Alphanumeric Symbols" #x1D400 #x1D7FF)
- ;;("CJK Unified Ideographs Extension B" #x20000 #x2A6DF)
- ;;("CJK Compatibility Ideographs Supplement" #x2F800 #x2FA1F)
- ("Tags" #xE0000 #xE007F)
- ;;("Supplementary Private Use Area-A" #xF0000 #xFFFFF)
- ;;("Supplementary Private Use Area-B" #x100000 #x10FFFF)
- )
- "List of Unicode blocks.
-For each block there is a list (NAME FIRST LAST), where
-NAME is a string giving the official name of the block,
-FIRST is the first code-point and LAST is the last code-point.
-Blocks containing only characters with algorithmic names or no names
-are omitted.")
-
-(defun nxml-unicode-block-char-name-set (name)
- "Return a symbol for a block whose official Unicode name is NAME.
-The symbol is generated by downcasing and replacing each space
-by a hyphen."
- (intern (replace-regexp-in-string " " "-" (downcase name))))
-
-;; This is intended to be a superset of the coverage
-;; of existing standard entity sets.
-(defvar nxml-enabled-unicode-blocks-default
- '(basic-latin
- latin-1-supplement
- latin-extended-a
- latin-extended-b
- ipa-extensions
- spacing-modifier-letters
- combining-diacritical-marks
- greek-and-coptic
- cyrillic
- general-punctuation
- superscripts-and-subscripts
- currency-symbols
- combining-diacritical-marks-for-symbols
- letterlike-symbols
- number-forms
- arrows
- mathematical-operators
- miscellaneous-technical
- control-pictures
- optical-character-recognition
- enclosed-alphanumerics
- box-drawing
- block-elements
- geometric-shapes
- miscellaneous-symbols
- dingbats
- miscellaneous-mathematical-symbols-a
- supplemental-arrows-a
- supplemental-arrows-b
- miscellaneous-mathematical-symbols-b
- supplemental-mathematical-operators
- cjk-symbols-and-punctuation
- alphabetic-presentation-forms
- variation-selectors
- small-form-variants
- specials
- mathematical-alphanumeric-symbols)
- "Default value for `nxml-enabled-unicode-blocks'.")
-
-(mapc (lambda (block)
- (nxml-autoload-char-name-set
- (nxml-unicode-block-char-name-set (car block))
- (expand-file-name
- (format "nxml/%05X-%05X"
- (nth 1 block)
- (nth 2 block))
- data-directory)))
- nxml-unicode-blocks)
-
-;; Internal flag to control whether customize reloads the character tables.
-;; Should be set the first time the
-(defvar nxml-internal-unicode-char-name-sets-enabled nil)
-
-(defcustom nxml-enabled-unicode-blocks nxml-enabled-unicode-blocks-default
- "List of Unicode blocks for which Unicode character names are enabled.
-Each block is identified by a symbol derived from the name
-of the block by downcasing and replacing each space by a hyphen."
- :group 'nxml
- :set (lambda (sym value)
- (set-default 'nxml-enabled-unicode-blocks value)
- (when nxml-internal-unicode-char-name-sets-enabled
- (nxml-enable-unicode-char-name-sets)))
- :type (cons 'set
- (mapcar (lambda (block)
- `(const :tag ,(format "%s (%04X-%04X)"
- (nth 0 block)
- (nth 1 block)
- (nth 2 block))
- ,(nxml-unicode-block-char-name-set
- (nth 0 block))))
- nxml-unicode-blocks)))
-
-;;;###autoload
-(defun nxml-enable-unicode-char-name-sets ()
- "Enable the use of Unicode standard names for characters.
-The Unicode blocks for which names are enabled is controlled by
-the variable `nxml-enabled-unicode-blocks'."
- (interactive)
- (setq nxml-internal-unicode-char-name-sets-enabled t)
- (mapc (lambda (block)
- (nxml-disable-char-name-set
- (nxml-unicode-block-char-name-set (car block))))
- nxml-unicode-blocks)
- (mapc (lambda (nameset)
- (nxml-enable-char-name-set nameset))
- nxml-enabled-unicode-blocks))
-
-(provide 'nxml-uchnm)
-
-;;; nxml-uchnm.el ends here
diff --git a/lisp/nxml/nxml-util.el b/lisp/nxml/nxml-util.el
index 14b887ea08..282d4952bf 100644
--- a/lisp/nxml/nxml-util.el
+++ b/lisp/nxml/nxml-util.el
@@ -36,20 +36,6 @@
`(nxml-debug "%s: %S" ,name
(buffer-substring-no-properties ,start ,end))))
-(defmacro nxml-debug-set-inside (start end)
- (when nxml-debug
- `(let ((overlay (make-overlay ,start ,end)))
- (overlay-put overlay 'face '(:background "red"))
- (overlay-put overlay 'nxml-inside-debug t)
- (nxml-debug-change "nxml-set-inside" ,start ,end))))
-
-(defmacro nxml-debug-clear-inside (start end)
- (when nxml-debug
- `(cl-loop for overlay in (overlays-in ,start ,end)
- if (overlay-get overlay 'nxml-inside-debug)
- do (delete-overlay overlay)
- finally (nxml-debug-change "nxml-clear-inside" ,start ,end))))
-
(defun nxml-make-namespace (str)
"Return a symbol for the namespace URI STR.
STR must be a string. If STR is the empty string, return nil.
diff --git a/lisp/nxml/rng-cmpct.el b/lisp/nxml/rng-cmpct.el
index 39aee9780f..ed88dfa98e 100644
--- a/lisp/nxml/rng-cmpct.el
+++ b/lisp/nxml/rng-cmpct.el
@@ -1,4 +1,4 @@
-;;; rng-cmpct.el --- parsing of RELAX NG Compact Syntax schemas
+;;; rng-cmpct.el --- parsing of RELAX NG Compact Syntax schemas -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
@@ -674,13 +674,7 @@ the primary expression."
(substring rng-c-current-token n (- n)))))
(defun rng-c-fix-escaped-newlines (str)
- (let ((pos 0))
- (while (progn
- (let ((n (string-match "\C-@" str pos)))
- (and n
- (aset str n ?\n)
- (setq pos (1+ n)))))))
- str)
+ (subst-char-in-string ?\C-@ ?\n str))
(defun rng-c-parse-identifier-or-keyword ()
(cond ((rng-c-current-token-ncname-p)
diff --git a/lisp/nxml/rng-dt.el b/lisp/nxml/rng-dt.el
index 07166e38fe..a3cb8bc6aa 100644
--- a/lisp/nxml/rng-dt.el
+++ b/lisp/nxml/rng-dt.el
@@ -1,4 +1,4 @@
-;;; rng-dt.el --- datatype library interface for RELAX NG
+;;; rng-dt.el --- datatype library interface for RELAX NG -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
@@ -57,7 +57,7 @@ a datatype library.")
(t
(rng-dt-error "There is no built-in datatype %s" name))))
-(put (rng-make-datatypes-uri "") 'rng-dt-compile 'rng-dt-builtin-compile)
+(put (rng-make-datatypes-uri "") 'rng-dt-compile #'rng-dt-builtin-compile)
(provide 'rng-dt)
diff --git a/lisp/nxml/rng-loc.el b/lisp/nxml/rng-loc.el
index 553d8ca359..376e9169d3 100644
--- a/lisp/nxml/rng-loc.el
+++ b/lisp/nxml/rng-loc.el
@@ -1,4 +1,4 @@
-;;; rng-loc.el --- locate the schema to use for validation
+;;; rng-loc.el --- Locate the schema to use for validation -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
@@ -31,10 +31,9 @@
(require 'rng-util)
(require 'xmltok)
-(defvar rng-current-schema-file-name nil
+(defvar-local rng-current-schema-file-name nil
"Filename of schema being used for current buffer.
It is nil if using a vacuous schema.")
-(make-variable-buffer-local 'rng-current-schema-file-name)
(defvar rng-schema-locating-files-default
(list "schemas.xml" (expand-file-name "schema/schemas.xml" data-directory))
@@ -233,11 +232,11 @@ or nil."
rules))))))))
best-so-far))
-(put 'documentElement 'rng-rule-matcher 'rng-match-document-element-rule)
-(put 'namespace 'rng-rule-matcher 'rng-match-namespace-rule)
-(put 'uri 'rng-rule-matcher 'rng-match-uri-rule)
-(put 'transformURI 'rng-rule-matcher 'rng-match-transform-uri-rule)
-(put 'default 'rng-rule-matcher 'rng-match-default-rule)
+(put 'documentElement 'rng-rule-matcher #'rng-match-document-element-rule)
+(put 'namespace 'rng-rule-matcher #'rng-match-namespace-rule)
+(put 'uri 'rng-rule-matcher #'rng-match-uri-rule)
+(put 'transformURI 'rng-rule-matcher #'rng-match-transform-uri-rule)
+(put 'default 'rng-rule-matcher #'rng-match-default-rule)
(defun rng-match-document-element-rule (props)
(let ((document-element (rng-document-element))
diff --git a/lisp/nxml/rng-maint.el b/lisp/nxml/rng-maint.el
index 165ca8930a..32a041e0c1 100644
--- a/lisp/nxml/rng-maint.el
+++ b/lisp/nxml/rng-maint.el
@@ -1,4 +1,4 @@
-;;; rng-maint.el --- commands for RELAX NG maintainers
+;;; rng-maint.el --- commands for RELAX NG maintainers -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
diff --git a/lisp/nxml/rng-match.el b/lisp/nxml/rng-match.el
index df9c019255..d2b629e8d8 100644
--- a/lisp/nxml/rng-match.el
+++ b/lisp/nxml/rng-match.el
@@ -56,9 +56,8 @@ Used to detect invalid recursive references.")
;;; Inline functions
(defsubst rng-update-match-state (new-state)
- (if (and (eq new-state rng-not-allowed-ipattern)
- (not (eq rng-match-state rng-not-allowed-ipattern)))
- nil
+ (if (eq new-state rng-not-allowed-ipattern)
+ (eq rng-match-state rng-not-allowed-ipattern)
(setq rng-match-state new-state)
t))
diff --git a/lisp/nxml/rng-nxml.el b/lisp/nxml/rng-nxml.el
index fe90dffb55..954a1eb959 100644
--- a/lisp/nxml/rng-nxml.el
+++ b/lisp/nxml/rng-nxml.el
@@ -1,4 +1,4 @@
-;;; rng-nxml.el --- make nxml-mode take advantage of rng-validate-mode
+;;; rng-nxml.el --- make nxml-mode take advantage of rng-validate-mode -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
@@ -33,6 +33,7 @@
(require 'rng-valid)
(require 'nxml-mode)
(require 'rng-loc)
+(require 'sgml-mode)
(defcustom rng-nxml-auto-validate-flag t
"Non-nil means automatically turn on validation with nxml-mode."
@@ -65,6 +66,9 @@ Complete on start-tag names regardless.")
["Validation" rng-validate-mode
:style toggle
:selected rng-validate-mode]
+ ["Electric Pairs" sgml-electric-tag-pair-mode
+ :style toggle
+ :selected sgml-electric-tag-pair-mode]
"---"
("Set Schema"
["Automatically" rng-auto-set-schema]
@@ -107,25 +111,15 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil."
'append)
(cond (rng-nxml-auto-validate-flag
(rng-validate-mode 1)
- (add-hook 'nxml-completion-hook 'rng-complete nil t)
- (add-hook 'nxml-in-mixed-content-hook 'rng-in-mixed-content-p nil t))
+ (add-hook 'completion-at-point-functions #'rng-completion-at-point nil t)
+ (add-hook 'nxml-in-mixed-content-hook #'rng-in-mixed-content-p nil t))
(t
(rng-validate-mode 0)
- (remove-hook 'nxml-completion-hook 'rng-complete t)
- (remove-hook 'nxml-in-mixed-content-hook 'rng-in-mixed-content-p t))))
-
-(defvar rng-tag-history nil)
-(defvar rng-attribute-name-history nil)
-(defvar rng-attribute-value-history nil)
-
-(defvar rng-complete-target-names nil)
-(defvar rng-complete-name-attribute-flag nil)
-(defvar rng-complete-extra-strings nil)
+ (remove-hook 'completion-at-point-functions #'rng-completion-at-point t)
+ (remove-hook 'nxml-in-mixed-content-hook #'rng-in-mixed-content-p t))))
-(defun rng-complete ()
- "Complete the string before point using the current schema.
-Return non-nil if in a context it understands."
- (interactive)
+(defun rng-completion-at-point ()
+ "Return completion data for the string before point using the current schema."
(and rng-validate-mode
(let ((lt-pos (save-excursion (search-backward "<" nil t)))
xmltok-dtd)
@@ -145,53 +139,48 @@ Return non-nil if in a context it understands."
t))
(defun rng-complete-tag (lt-pos)
- (let (rng-complete-extra-strings)
- (when (and (= lt-pos (1- (point)))
- rng-complete-end-tags-after-<
- rng-open-elements
- (not (eq (car rng-open-elements) t))
- (or rng-collecting-text
- (rng-match-save
- (rng-match-end-tag))))
- (setq rng-complete-extra-strings
- (cons (concat "/"
- (if (caar rng-open-elements)
- (concat (caar rng-open-elements)
- ":"
- (cdar rng-open-elements))
- (cdar rng-open-elements)))
- rng-complete-extra-strings)))
+ (let ((extra-strings
+ (when (and (= lt-pos (1- (point)))
+ rng-complete-end-tags-after-<
+ rng-open-elements
+ (not (eq (car rng-open-elements) t))
+ (or rng-collecting-text
+ (rng-match-save
+ (rng-match-end-tag))))
+ (list (concat "/"
+ (if (caar rng-open-elements)
+ (concat (caar rng-open-elements)
+ ":"
+ (cdar rng-open-elements))
+ (cdar rng-open-elements)))))))
(when (save-excursion
(re-search-backward rng-in-start-tag-name-regex
lt-pos
t))
(and rng-collecting-text (rng-flush-text))
- (let ((completion
- (let ((rng-complete-target-names
- (rng-match-possible-start-tag-names))
- (rng-complete-name-attribute-flag nil))
- (rng-complete-before-point (1+ lt-pos)
- 'rng-complete-qname-function
- "Tag: "
- nil
- 'rng-tag-history)))
- name)
- (when completion
- (cond ((rng-qname-p completion)
- (setq name (rng-expand-qname completion
- t
- 'rng-start-tag-expand-recover))
- (when (and name
- (rng-match-start-tag-open name)
- (or (not (rng-match-start-tag-close))
- ;; need a namespace decl on the root element
- (and (car name)
- (not rng-open-elements))))
- ;; attributes are required
- (insert " ")))
- ((member completion rng-complete-extra-strings)
- (insert ">")))))
- t)))
+ (let ((target-names (rng-match-possible-start-tag-names)))
+ `(,(1+ lt-pos)
+ ,(save-excursion (skip-chars-forward "[[:alnum:]_.-:]") (point))
+ ,(apply-partially #'rng-complete-qname-function
+ target-names nil extra-strings)
+ :exit-function
+ ,(lambda (completion status)
+ (cond
+ ((not (eq status 'finished)) nil)
+ ((rng-qname-p completion)
+ (let ((name (rng-expand-qname completion
+ t
+ #'rng-start-tag-expand-recover)))
+ (when (and name
+ (rng-match-start-tag-open name)
+ (or (not (rng-match-start-tag-close))
+ ;; need a namespace decl on the root element
+ (and (car name)
+ (not rng-open-elements))))
+ ;; attributes are required
+ (insert " "))))
+ ((member completion extra-strings)
+ (insert ">")))))))))
(defconst rng-in-end-tag-name-regex
(replace-regexp-in-string
@@ -216,29 +205,18 @@ Return non-nil if in a context it understands."
(concat (caar rng-open-elements)
":"
(cdar rng-open-elements))
- (cdar rng-open-elements)))
- (end-tag-name
- (buffer-substring-no-properties (+ (match-beginning 0) 2)
- (point))))
- (cond ((or (> (length end-tag-name)
- (length start-tag-name))
- (not (string= (substring start-tag-name
- 0
- (length end-tag-name))
- end-tag-name)))
- (message "Expected end-tag %s"
- (rng-quote-string
- (concat "</" start-tag-name ">")))
- (ding))
- (t
- (delete-region (- (point) (length end-tag-name))
- (point))
- (insert start-tag-name ">")
- (when (not (or rng-collecting-text
- (rng-match-end-tag)))
- (message "Element %s is incomplete"
- (rng-quote-string start-tag-name))))))))
- t))
+ (cdar rng-open-elements))))
+ `(,(+ (match-beginning 0) 2)
+ ,(save-excursion (skip-chars-forward "[[:alnum:]_.-:]") (point))
+ ,(list start-tag-name) ;Sole completion candidate.
+ :exit-function
+ ,(lambda (_completion status)
+ (when (eq status 'finished)
+ (unless (eq (char-after) ?>) (insert ">"))
+ (when (not (or rng-collecting-text
+ (rng-match-end-tag)))
+ (message "Element \"%s\" is incomplete"
+ start-tag-name))))))))))
(defconst rng-in-attribute-regex
(replace-regexp-in-string
@@ -260,22 +238,24 @@ Return non-nil if in a context it understands."
rng-undeclared-prefixes)
(and (rng-adjust-state-for-attribute lt-pos
attribute-start)
- (let ((rng-complete-target-names
+ (let ((target-names
(rng-match-possible-attribute-names))
- (rng-complete-extra-strings
+ (extra-strings
(mapcar (lambda (prefix)
(if prefix
(concat "xmlns:" prefix)
"xmlns"))
- rng-undeclared-prefixes))
- (rng-complete-name-attribute-flag t))
- (rng-complete-before-point attribute-start
- 'rng-complete-qname-function
- "Attribute: "
- nil
- 'rng-attribute-name-history))
- (insert "=\"")))
- t))
+ rng-undeclared-prefixes)))
+ `(,attribute-start
+ ,(save-excursion (skip-chars-forward "[[:alnum:]_.-:]") (point))
+ ,(apply-partially #'rng-complete-qname-function
+ target-names t extra-strings)
+ :exit-function
+ ,(lambda (_completion status)
+ (when (and (eq status 'finished)
+ (not (looking-at "=")))
+ (insert "=\"\"")
+ (forward-char -1)))))))))
(defconst rng-in-attribute-value-regex
(replace-regexp-in-string
@@ -292,43 +272,40 @@ Return non-nil if in a context it understands."
(defun rng-complete-attribute-value (lt-pos)
(when (save-excursion
(re-search-backward rng-in-attribute-value-regex lt-pos t))
- (let ((name-start (match-beginning 1))
- (name-end (match-end 1))
- (colon (match-beginning 2))
- (value-start (1+ (match-beginning 3))))
+ (let* ((name-start (match-beginning 1))
+ (name-end (match-end 1))
+ (colon (match-beginning 2))
+ (value-start (1+ (match-beginning 3)))
+ (exit-function
+ (lambda (_completion status)
+ (when (eq status 'finished)
+ (let ((delim (char-before value-start)))
+ (unless (eq (char-after) delim) (insert delim)))))))
(and (rng-adjust-state-for-attribute lt-pos
name-start)
(if (string= (buffer-substring-no-properties name-start
(or colon name-end))
"xmlns")
- (rng-complete-before-point
- value-start
- (rng-strings-to-completion-alist
- (rng-possible-namespace-uris
- (and colon
- (buffer-substring-no-properties (1+ colon) name-end))))
- "Namespace URI: "
- nil
- 'rng-namespace-uri-history)
+ `(,value-start ,(point)
+ ,(rng-strings-to-completion-table
+ (rng-possible-namespace-uris
+ (and colon
+ (buffer-substring-no-properties (1+ colon) name-end))))
+ :exit-function ,exit-function)
(rng-adjust-state-for-attribute-value name-start
colon
name-end)
- (rng-complete-before-point
- value-start
- (rng-strings-to-completion-alist
- (rng-match-possible-value-strings))
- "Value: "
- nil
- 'rng-attribute-value-history))
- (insert (char-before value-start))))
- t))
+ `(,value-start ,(point)
+ ,(rng-strings-to-completion-table
+ (rng-match-possible-value-strings))
+ :exit-function ,exit-function))))))
(defun rng-possible-namespace-uris (prefix)
(let ((ns (if prefix (nxml-ns-get-prefix prefix)
(nxml-ns-get-default))))
(if (and ns (memq prefix (nxml-ns-changed-prefixes)))
(list (nxml-namespace-name ns))
- (mapcar 'nxml-namespace-name
+ (mapcar #'nxml-namespace-name
(delq nxml-xml-namespace-uri
(rng-match-possible-namespace-uris))))))
@@ -349,7 +326,7 @@ Return non-nil if in a context it understands."
(recover-fun (funcall recover-fun prefix (cdr qname)))))
(cons (and defaultp (nxml-ns-get-default)) (cdr qname)))))
-(defun rng-start-tag-expand-recover (prefix local-name)
+(defun rng-start-tag-expand-recover (_prefix local-name)
(let ((ns (rng-match-infer-start-tag-namespace local-name)))
(and ns
(cons ns local-name))))
@@ -386,7 +363,7 @@ set `xmltok-dtd'. Returns the position of the end of the token."
(save-restriction
(widen)
(nxml-with-invisible-motion
- (if (= pos 1)
+ (if (= pos (point-min))
(rng-set-initial-state)
(let ((state (get-text-property (1- pos) 'rng-state)))
(cond (state
@@ -501,24 +478,21 @@ set `xmltok-dtd'. Returns the position of the end of the token."
(and (or (not prefix) ns)
(rng-match-attribute-name (cons ns local-name)))))
-(defun rng-complete-qname-function (string predicate flag)
- (let ((alist (mapcar (lambda (name) (cons name nil))
- (rng-generate-qname-list string))))
- (cond ((not flag)
- (try-completion string alist predicate))
- ((eq flag t)
- (all-completions string alist predicate))
- ((eq flag 'lambda)
- (and (assoc string alist) t)))))
-
-(defun rng-generate-qname-list (&optional string)
+(defun rng-complete-qname-function (candidates attributes-flag extra-strings
+ string predicate flag)
+ (complete-with-action flag
+ (rng-generate-qname-list
+ string candidates attributes-flag extra-strings)
+ string predicate))
+
+(defun rng-generate-qname-list (&optional string candidates attribute-flag extra-strings)
(let ((forced-prefix (and string
(string-match ":" string)
(> (match-beginning 0) 0)
(substring string
0
(match-beginning 0))))
- (namespaces (mapcar 'car rng-complete-target-names))
+ (namespaces (mapcar #'car candidates))
ns-prefixes-alist ns-prefixes iter ns prefer)
(while namespaces
(setq ns (car namespaces))
@@ -526,7 +500,7 @@ set `xmltok-dtd'. Returns the position of the end of the token."
(setq ns-prefixes-alist
(cons (cons ns (nxml-ns-prefixes-for
ns
- rng-complete-name-attribute-flag))
+ attribute-flag))
ns-prefixes-alist)))
(setq namespaces (delq ns (cdr namespaces))))
(setq iter ns-prefixes-alist)
@@ -546,12 +520,12 @@ set `xmltok-dtd'. Returns the position of the end of the token."
(setcdr ns-prefixes (list prefer)))
;; Unless it's an attribute with a non-nil namespace,
;; allow no prefix for this namespace.
- (unless rng-complete-name-attribute-flag
+ (unless attribute-flag
(setcdr ns-prefixes (cons nil (cdr ns-prefixes))))))
(setq iter (cdr iter)))
(rng-uniquify-equal
- (sort (apply 'append
- (cons rng-complete-extra-strings
+ (sort (apply #'append
+ (cons extra-strings
(mapcar (lambda (name)
(if (car name)
(mapcar (lambda (prefix)
@@ -563,7 +537,7 @@ set `xmltok-dtd'. Returns the position of the end of the token."
(cdr (assoc (car name)
ns-prefixes-alist)))
(list (cdr name))))
- rng-complete-target-names)))
+ candidates)))
'string<))))
(defun rng-get-preferred-unused-prefix (ns)
@@ -582,10 +556,8 @@ set `xmltok-dtd'. Returns the position of the end of the token."
nil))))
prefix))
-(defun rng-strings-to-completion-alist (strings)
- (mapcar (lambda (s) (cons s s))
- (rng-uniquify-equal (sort (mapcar 'rng-escape-string strings)
- 'string<))))
+(defun rng-strings-to-completion-table (strings)
+ (mapcar #'rng-escape-string strings))
(provide 'rng-nxml)
diff --git a/lisp/nxml/rng-parse.el b/lisp/nxml/rng-parse.el
index cde749db67..3ae4b5cc9c 100644
--- a/lisp/nxml/rng-parse.el
+++ b/lisp/nxml/rng-parse.el
@@ -1,4 +1,4 @@
-;;; rng-parse.el --- parse an XML file and validate it against a schema
+;;; rng-parse.el --- parse an XML file and validate it against a schema -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
diff --git a/lisp/nxml/rng-pttrn.el b/lisp/nxml/rng-pttrn.el
index f358d3c87d..e847f5e02a 100644
--- a/lisp/nxml/rng-pttrn.el
+++ b/lisp/nxml/rng-pttrn.el
@@ -1,4 +1,4 @@
-;;; rng-pttrn.el --- RELAX NG patterns
+;;; rng-pttrn.el --- RELAX NG patterns -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
diff --git a/lisp/nxml/rng-uri.el b/lisp/nxml/rng-uri.el
index 75cf23f888..8fc0a01e29 100644
--- a/lisp/nxml/rng-uri.el
+++ b/lisp/nxml/rng-uri.el
@@ -1,4 +1,4 @@
-;;; rng-uri.el --- URI parsing and manipulation
+;;; rng-uri.el --- URI parsing and manipulation -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
diff --git a/lisp/nxml/rng-util.el b/lisp/nxml/rng-util.el
index 4c14e2b659..c5d4b6567e 100644
--- a/lisp/nxml/rng-util.el
+++ b/lisp/nxml/rng-util.el
@@ -82,69 +82,6 @@ LIST is not modified."
(cons item nil))))))))
list)))
-(defun rng-complete-before-point (start table prompt &optional predicate hist)
- "Complete text between START and point.
-Replaces the text between START and point with a string chosen using a
-completion table and, when needed, input read from the user with the
-minibuffer.
-Returns the new string if either a complete and unique completion was
-determined automatically or input was read from the user. Otherwise,
-returns nil.
-TABLE is an alist, a symbol bound to a function or an obarray as with
-the function `completing-read'.
-PROMPT is the string to prompt with if user input is needed.
-PREDICATE is nil or a function as with `completing-read'.
-HIST, if non-nil, specifies a history list as with `completing-read'."
- (let* ((orig (buffer-substring-no-properties start (point)))
- (completion (try-completion orig table predicate)))
- (cond ((not completion)
- (if (string= orig "")
- (message "No completions available")
- (message "No completion for %s" (rng-quote-string orig)))
- (ding)
- nil)
- ((eq completion t) orig)
- ((not (string= completion orig))
- (delete-region start (point))
- (insert completion)
- (cond ((not (rng-completion-exact-p completion table predicate))
- (message "Incomplete")
- nil)
- ((eq (try-completion completion table predicate) t)
- completion)
- (t
- (message "Complete but not unique")
- nil)))
- (t
- (setq completion
- (let ((saved-minibuffer-setup-hook
- (default-value 'minibuffer-setup-hook)))
- (add-hook 'minibuffer-setup-hook
- 'minibuffer-completion-help
- t)
- (unwind-protect
- (completing-read prompt
- table
- predicate
- nil
- orig
- hist)
- (setq-default minibuffer-setup-hook
- saved-minibuffer-setup-hook))))
- (delete-region start (point))
- (insert completion)
- completion))))
-
-(defun rng-completion-exact-p (string table predicate)
- (cond ((symbolp table)
- (funcall table string predicate 'lambda))
- ((vectorp table)
- (intern-soft string table))
- (t (assoc string table))))
-
-(defun rng-quote-string (s)
- (concat "\"" s "\""))
-
(defun rng-escape-string (s)
(replace-regexp-in-string "[&\"<>]"
(lambda (match)
diff --git a/lisp/nxml/rng-valid.el b/lisp/nxml/rng-valid.el
index 1020cad208..946bf791ff 100644
--- a/lisp/nxml/rng-valid.el
+++ b/lisp/nxml/rng-valid.el
@@ -1,4 +1,4 @@
-;;; rng-valid.el --- real-time validation of XML using RELAX NG
+;;; rng-valid.el --- real-time validation of XML using RELAX NG -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
@@ -430,13 +430,13 @@ The schema is set like `rng-auto-set-schema'."
(when (buffer-live-p buffer) ; bug#13999
(with-current-buffer buffer
(if rng-validate-mode
- (if (let ((rng-validate-display-point (point))
- (rng-validate-display-modified-p (buffer-modified-p)))
- (rng-do-some-validation 'rng-validate-while-idle-continue-p))
- (force-mode-line-update)
- (rng-validate-done))
- ;; must have done kill-all-local-variables
- (rng-kill-timers)))))
+ (if (let ((rng-validate-display-point (point))
+ (rng-validate-display-modified-p (buffer-modified-p)))
+ (rng-do-some-validation 'rng-validate-while-idle-continue-p))
+ (force-mode-line-update)
+ (rng-validate-done))
+ ;; Must have done kill-all-local-variables.
+ (rng-kill-timers)))))
(defun rng-validate-quick-while-idle (buffer)
(when (buffer-live-p buffer) ; bug#13999
@@ -709,7 +709,7 @@ Return t if there is work to do, nil otherwise."
;; If we don't do this, then the front delimiter can move
;; past the end delimiter.
-(defun rng-error-modified (overlay after-p beg end &optional pre-change-len)
+(defun rng-error-modified (overlay after-p _beg _end &optional _pre-change-len)
(when (and after-p
(overlay-start overlay) ; check not deleted
(>= (overlay-start overlay)
@@ -1138,9 +1138,8 @@ as empty-element."
(rng-match-start-tag-open required)
(rng-match-after)
(rng-match-start-tag-open name))
- (rng-mark-invalid (concat "Missing element "
- (rng-quote-string
- (rng-name-to-string required)))
+ (rng-mark-invalid (format "Missing element \"%s\""
+ (rng-name-to-string required))
xmltok-start
(1+ xmltok-start)))
((and (rng-match-optionalize-elements)
@@ -1177,16 +1176,14 @@ as empty-element."
(cond ((not required-attributes)
"Required attributes missing")
((not (cdr required-attributes))
- (concat "Missing attribute "
- (rng-quote-string
- (rng-name-to-string (car required-attributes) t))))
+ (format "Missing attribute \"%s\""
+ (rng-name-to-string (car required-attributes) t)))
(t
- (concat "Missing attributes "
+ (format "Missing attributes \"%s\""
(mapconcat (lambda (nm)
- (rng-quote-string
- (rng-name-to-string nm t)))
+ (rng-name-to-string nm t))
required-attributes
- ", "))))))
+ "\", \""))))))
(defun rng-process-end-tag (&optional partial)
(cond ((not rng-open-elements)
@@ -1229,8 +1226,7 @@ as empty-element."
(defun rng-missing-element-message ()
(let ((element (rng-match-required-element-name)))
(if element
- (concat "Missing element "
- (rng-quote-string (rng-name-to-string element)))
+ (format "Missing element \"%s\"" (rng-name-to-string element))
"Required child elements missing")))
(defun rng-recover-mismatched-end-tag ()
@@ -1258,17 +1254,16 @@ as empty-element."
(defun rng-mark-missing-end-tags (missing)
(rng-mark-not-well-formed
- (format "Missing end-tag%s %s"
+ (format "Missing end-tag%s \"%s\""
(if (null (cdr missing)) "" "s")
(mapconcat (lambda (name)
- (rng-quote-string
- (if (car name)
- (concat (car name)
- ":"
- (cdr name))
- (cdr name))))
+ (if (car name)
+ (concat (car name)
+ ":"
+ (cdr name))
+ (cdr name)))
missing
- ", "))
+ "\", \""))
xmltok-start
(+ xmltok-start 2)))
diff --git a/lisp/nxml/rng-xsd.el b/lisp/nxml/rng-xsd.el
index 378319851a..c0989ae107 100644
--- a/lisp/nxml/rng-xsd.el
+++ b/lisp/nxml/rng-xsd.el
@@ -1,4 +1,4 @@
-;;; rng-xsd.el --- W3C XML Schema datatypes library for RELAX NG
+;;; rng-xsd.el --- W3C XML Schema datatypes library for RELAX NG -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
@@ -42,7 +42,7 @@
;;;###autoload
(put 'http://www.w3.org/2001/XMLSchema-datatypes
'rng-dt-compile
- 'rng-xsd-compile)
+ #'rng-xsd-compile)
;;;###autoload
(defun rng-xsd-compile (name params)
@@ -50,9 +50,9 @@
NAME is a symbol giving the local name of the datatype. PARAMS is a
list of pairs (PARAM-NAME . PARAM-VALUE) where PARAM-NAME is a symbol
giving the name of the parameter and PARAM-VALUE is a string giving
-its value. If NAME or PARAMS are invalid, it calls rng-dt-error
+its value. If NAME or PARAMS are invalid, it calls `rng-dt-error'
passing it arguments in the same style as format; the value from
-rng-dt-error will be returned. Otherwise, it returns a list. The
+`rng-dt-error' will be returned. Otherwise, it returns a list. The
first member of the list is t if any string is a legal value for the
datatype and nil otherwise. The second argument is a symbol; this
symbol will be called as a function passing it a string followed by
diff --git a/lisp/nxml/xmltok.el b/lisp/nxml/xmltok.el
index 8fc66c99a4..f12905a86d 100644
--- a/lisp/nxml/xmltok.el
+++ b/lisp/nxml/xmltok.el
@@ -34,10 +34,7 @@
;; preceding part of the instance. This allows the instance to be
;; parsed incrementally. The main entry point is `xmltok-forward':
;; this can be called at any point in the instance provided it is
-;; between tokens. The other entry point is `xmltok-forward-special'
-;; which skips over tokens other comments, processing instructions or
-;; CDATA sections (i.e. the constructs in an instance that can contain
-;; less than signs that don't start a token).
+;; between tokens.
;;
;; This is a non-validating XML 1.0 processor. It does not resolve
;; parameter entities (including the external DTD subset) and it does
@@ -262,11 +259,10 @@ and VALUE-END, otherwise a STRING giving the value."
(vector message start end))
(defun xmltok-add-error (message &optional start end)
- (setq xmltok-errors
- (cons (xmltok-make-error message
- (or start xmltok-start)
- (or end (point)))
- xmltok-errors)))
+ (push (xmltok-make-error message
+ (or start xmltok-start)
+ (or end (point)))
+ xmltok-errors))
(defun xmltok-forward ()
(setq xmltok-start (point))
@@ -308,18 +304,6 @@ and VALUE-END, otherwise a STRING giving the value."
(goto-char (point-max))
(setq xmltok-type 'data)))))
-(defun xmltok-forward-special (bound)
- "Scan forward past the first special token starting at or after point.
-Return nil if there is no special token that starts before BOUND.
-CDATA sections, processing instructions and comments (and indeed
-anything starting with < following by ? or !) count as special.
-Return the type of the token."
- (when (re-search-forward "<[?!]" (1+ bound) t)
- (setq xmltok-start (match-beginning 0))
- (goto-char (1+ xmltok-start))
- (let ((case-fold-search nil))
- (xmltok-scan-after-lt))))
-
(eval-when-compile
;; A symbolic regexp is represented by a list whose CAR is the string
@@ -739,19 +723,10 @@ Return the type of the token."
(setq xmltok-type 'processing-instruction))
(defun xmltok-scan-after-comment-open ()
- (let ((found-- (search-forward "--" nil 'move)))
- (setq xmltok-type
- (cond ((or (eq (char-after) ?>) (not found--))
- (goto-char (1+ (point)))
- 'comment)
- (t
- ;; just include the <!-- in the token
- (goto-char (+ xmltok-start 4))
- ;; Need do this after the goto-char because
- ;; marked error should just apply to <!--
- (xmltok-add-error "First following `--' not followed by `>'")
- (goto-char (point-max))
- 'comment)))))
+ (while (and (re-search-forward "--\\(>\\)?" nil 'move)
+ (not (match-end 1)))
+ (xmltok-add-error "`--' not followed by `>'" (match-beginning 0)))
+ (setq xmltok-type 'comment))
(defun xmltok-scan-attributes ()
(let ((recovering nil)
diff --git a/lisp/nxml/xsd-regexp.el b/lisp/nxml/xsd-regexp.el
index e91e6b77a7..a3f476d00b 100644
--- a/lisp/nxml/xsd-regexp.el
+++ b/lisp/nxml/xsd-regexp.el
@@ -1,4 +1,4 @@
-;;; xsd-regexp.el --- translate W3C XML Schema regexps to Emacs regexps
+;;; xsd-regexp.el --- translate W3C XML Schema regexps to Emacs regexps -*- lexical-binding:t -*-
;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
@@ -147,7 +147,7 @@ ranges are merged wherever possible."
(defun xsdre-range-list-difference (orig subtract)
"Return a range-list for the difference of two range-lists."
(when orig
- (let (new head next first last)
+ (let (new head first last)
(while orig
(setq head (car orig))
(setq first (xsdre-range-first head))
@@ -745,7 +745,7 @@ Code is inserted into the current buffer."
(save-excursion
(goto-char start)
(down-list 2)
- (while (condition-case err
+ (while (condition-case nil
(progn
(forward-sexp)
t)
diff --git a/lisp/obsolete/awk-mode.el b/lisp/obsolete/awk-mode.el
deleted file mode 100644
index b9e4e4072e..0000000000
--- a/lisp/obsolete/awk-mode.el
+++ /dev/null
@@ -1,124 +0,0 @@
-;;; awk-mode.el --- AWK code editing commands for Emacs
-
-;; Copyright (C) 1988, 1994, 1996, 2000-2016 Free Software Foundation,
-;; Inc.
-
-;; Maintainer: emacs-devel@gnu.org
-;; Keywords: unix, languages
-;; Obsolete-since: 22.1
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Sets up C-mode with support for awk-style #-comments and a lightly
-;; hacked syntax table.
-
-;;; Code:
-
-(defvar awk-mode-syntax-table
- (let ((st (make-syntax-table)))
- (modify-syntax-entry ?\\ "\\" st)
- (modify-syntax-entry ?\n "> " st)
- (modify-syntax-entry ?\f "> " st)
- (modify-syntax-entry ?\# "< " st)
- ;; / can delimit regexes or be a division operator. We assume that it is
- ;; more commonly used for regexes and fix the remaining cases with
- ;; `font-lock-syntactic-keywords'.
- (modify-syntax-entry ?/ "\"" st)
- (modify-syntax-entry ?* "." st)
- (modify-syntax-entry ?+ "." st)
- (modify-syntax-entry ?- "." st)
- (modify-syntax-entry ?= "." st)
- (modify-syntax-entry ?% "." st)
- (modify-syntax-entry ?< "." st)
- (modify-syntax-entry ?> "." st)
- (modify-syntax-entry ?& "." st)
- (modify-syntax-entry ?| "." st)
- (modify-syntax-entry ?_ "_" st)
- (modify-syntax-entry ?\' "\"" st)
- st)
- "Syntax table in use in `awk-mode' buffers.")
-
-;; Regexps written with help from Peter Galbraith <galbraith@mixing.qc.dfo.ca>.
-(defconst awk-font-lock-keywords
- (eval-when-compile
- (list
- ;;
- ;; Function names.
- '("^[ \t]*\\(function\\)\\>[ \t]*\\(\\sw+\\)?"
- (1 font-lock-keyword-face) (2 font-lock-function-name-face nil t))
- ;;
- ;; Variable names.
- (cons (regexp-opt
- '("ARGC" "ARGIND" "ARGV" "CONVFMT" "ENVIRON" "ERRNO"
- "FIELDWIDTHS" "FILENAME" "FNR" "FS" "IGNORECASE" "NF" "NR"
- "OFMT" "OFS" "ORS" "RLENGTH" "RS" "RSTART" "SUBSEP") 'words)
- 'font-lock-variable-name-face)
- ;;
- ;; Keywords.
- (regexp-opt
- '("BEGIN" "END" "break" "continue" "delete" "do" "exit" "else" "for"
- "getline" "if" "next" "print" "printf" "return" "while") 'words)
- ;;
- ;; Builtins.
- (list (regexp-opt
- '("atan2" "close" "cos" "ctime" "exp" "gsub" "index" "int"
- "length" "log" "match" "rand" "sin" "split" "sprintf"
- "sqrt" "srand" "sub" "substr" "system" "time"
- "tolower" "toupper") 'words)
- 1 'font-lock-builtin-face)
- ;;
- ;; Operators. Is this too much?
- (cons (regexp-opt '("&&" "||" "<=" "<" ">=" ">" "==" "!=" "!~" "~"))
- 'font-lock-constant-face)
- ))
- "Default expressions to highlight in AWK mode.")
-
-(require 'syntax)
-
-(defconst awk-font-lock-syntactic-keywords
- ;; `/' is mostly used for /.../ regular expressions, but is also
- ;; used as a division operator. Distinguishing between the two is
- ;; a pain in the youknowwhat.
- ;; '(("\\(^\\|[<=>-+*%/!^,~(?:|&]\\)\\s-*\\(/\\)\\([^/\n\\]\\|\\\\.\\)*\\(/\\)"
- ;; (2 "\"") (4 "\"")))
- '(("[^<=>-+*%/!^,~(?:|& \t\n\f]\\s-*\\(/\\)"
- (1 (unless (nth 3 (syntax-ppss (match-beginning 1))) "."))))
- "Syntactic keywords for `awk-mode'.")
-
-;; No longer autoloaded since it might clobber the autoload directive in CC Mode.
-(define-derived-mode awk-mode c-mode "AWK"
- "Major mode for editing AWK code.
-This is much like C mode except for the syntax of comments. Its keymap
-inherits from C mode's and it has the same variables for customizing
-indentation. It has its own abbrev table and its own syntax table.
-
-Turning on AWK mode runs `awk-mode-hook'."
- (set (make-local-variable 'paragraph-start) (concat "$\\|" page-delimiter))
- (set (make-local-variable 'paragraph-separate) paragraph-start)
- (set (make-local-variable 'comment-start) "# ")
- (set (make-local-variable 'comment-end) "")
- (set (make-local-variable 'comment-start-skip) "#+ *")
- (setq font-lock-defaults '(awk-font-lock-keywords
- nil nil ((?_ . "w")) nil
- (parse-sexp-lookup-properties . t)
- (font-lock-syntactic-keywords
- . awk-font-lock-syntactic-keywords))))
-
-(provide 'awk-mode)
-
-;;; awk-mode.el ends here
diff --git a/lisp/obsolete/iso-acc.el b/lisp/obsolete/iso-acc.el
deleted file mode 100644
index 7bec92c2bd..0000000000
--- a/lisp/obsolete/iso-acc.el
+++ /dev/null
@@ -1,489 +0,0 @@
-;;; iso-acc.el --- minor mode providing electric accent keys
-
-;; Copyright (C) 1993-1994, 1996, 2001-2016 Free Software Foundation,
-;; Inc.
-
-;; Author: Johan Vromans
-;; Maintainer: emacs-devel@gnu.org
-;; Keywords: i18n
-;; Obsolete-since: 22.1
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Function `iso-accents-mode' activates a minor mode in which
-;; typewriter "dead keys" are emulated. The purpose of this emulation
-;; is to provide a simple means for inserting accented characters
-;; according to the ISO-8859-1...3 character sets.
-;;
-;; In `iso-accents-mode', pseudo accent characters are used to
-;; introduce accented keys. The pseudo-accent characters are:
-;;
-;; ' (minute) -> acute accent
-;; ` (backtick) -> grave accent
-;; " (second) -> diaeresis
-;; ^ (caret) -> circumflex
-;; ~ (tilde) -> tilde over the character
-;; / (slash) -> slash through the character.
-;; Also: /A is A-with-ring and /E is AE ligature.
-;; These two are enabled only if you set iso-accents-enable
-;; to include them:
-;; . (period) -> dot over the character (some languages only)
-;; , (cedilla) -> cedilla under the character (some languages only)
-;;
-;; The action taken depends on the key that follows the pseudo accent.
-;; In general:
-;;
-;; pseudo-accent + appropriate letter -> accented letter
-;; pseudo-accent + space -> pseudo-accent (except comma and period)
-;; pseudo-accent + pseudo-accent -> accent (if available)
-;; pseudo-accent + other -> pseudo-accent + other
-;;
-;; If the pseudo-accent is followed by anything else than a
-;; self-insert-command, the dead-key code is terminated, the
-;; pseudo-accent inserted ‘as is’ and the bell is rung to signal this.
-;;
-;; Function `iso-accents-mode' can be used to enable the iso accents
-;; minor mode, or disable it.
-
-;; If you want only some of these characters to serve as accents,
-;; add a language to `iso-languages' which specifies the accent characters
-;; that you want, then select the language with `iso-accents-customize'.
-
-;;; Code:
-
-(provide 'iso-acc)
-
-(defgroup iso-acc nil
- "Minor mode providing electric accent keys."
- :prefix "iso-accents-"
- :group 'i18n)
-
-(defcustom iso-accents-insert-offset nonascii-insert-offset
- "Offset added by ISO Accents mode to character codes 0200 and above."
- :type 'integer
- :group 'iso-acc)
-
-(defvar iso-languages
- '(("catalan"
- ;; Note this includes some extra characters used in Spanish,
- ;; on the idea that someone who uses Catalan is likely to use Spanish
- ;; as well.
- (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
- (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
- (?\ . ?'))
- (?` (?A . ?\300) (?E . ?\310) (?O . ?\322)
- (?a . ?\340) (?e . ?\350) (?o . ?\362)
- (?\ . ?`))
- (?\" (?I . ?\317) (?U . ?\334) (?i . ?\357) (?u . ?\374)
- (?\ . ?\"))
- (?~ (?C . ?\307) (?N . ?\321) (?c . ?\347) (?n . ?\361)
- (?> . ?\273) (?< . ?\253) (?! . ?\241) (?? . ?\277)
- (?\ . ?\~)))
-
- ("esperanto"
- (?^ (?H . ?\246) (?J . ?\254) (?h . ?\266) (?j . ?\274) (?C . ?\306)
- (?G . ?\330) (?S . ?\336) (?c . ?\346) (?g . ?\370) (?s . ?\376)
- (?^ . ?^) (?\ . ?^))
- (?~ (?U . ?\335) (?u . ?\375) (?\ . ?~)))
-
- ("french"
- (?' (?E . ?\311) (?C . ?\307) (?e . ?\351) (?c . ?\347)
- (?\ . ?'))
- (?` (?A . ?\300) (?E . ?\310) (?U . ?\331)
- (?a . ?\340) (?e . ?\350) (?u . ?\371)
- (?\ . ?`))
- (?^ (?A . ?\302) (?E . ?\312) (?I . ?\316) (?O . ?\324) (?U . ?\333)
- (?a . ?\342) (?e . ?\352) (?i . ?\356) (?o . ?\364) (?u . ?\373)
- (?\ . ?^))
- (?\" (?E . ?\313) (?I . ?\317)
- (?e . ?\353) (?i . ?\357)
- (?\ . ?\"))
- (?~ (?< . ?\253) (?> . ?\273) (?C . ?\307) (?c . ?\347)
- (?\ . ?~))
- (?, (?C . ?\307) (?c . ?\347) (?\ . ?\,)))
-
- ("german"
- (?\" (?A . ?\304) (?O . ?\326) (?U . ?\334)
- (?a . ?\344) (?o . ?\366) (?u . ?\374) (?s . ?\337) (?\ . ?\")))
-
- ("irish"
- (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
- (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
- (?\ . ?')))
-
- ("portuguese"
- (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
- (?C . ?\307) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363)
- (?u . ?\372) (?c . ?\347)
- (?\ . ?'))
- (?` (?A . ?\300) (?a . ?\340)
- (?\ . ?`))
- (?^ (?A . ?\302) (?E . ?\312) (?O . ?\324)
- (?a . ?\342) (?e . ?\352) (?o . ?\364)
- (?\ . ?^))
- (?\" (?U . ?\334) (?u . ?\374)
- (?\ . ?\"))
- (?~ (?A . ?\303) (?O . ?\325) (?a . ?\343) (?o . ?\365)
- (?C . ?\307) (?N . ?\321) (?c . ?\347) (?n . ?\361)
- (?\ . ?~))
- (?, (?c . ?\347) (?C . ?\307) (?, . ?,)))
-
- ("spanish"
- (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
- (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
- (?\ . ?'))
- (?\" (?U . ?\334) (?u . ?\374) (?\ . ?\"))
- (?\~ (?N . ?\321) (?n . ?\361) (?> . ?\273) (?< . ?\253) (?! . ?\241)
- (?? . ?\277) (?\ . ?\~)))
-
- ("latin-1"
- (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
- (?Y . ?\335) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363)
- (?u . ?\372) (?y . ?\375) (?' . ?\264)
- (?\ . ?'))
- (?` (?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) (?U . ?\331)
- (?a . ?\340) (?e . ?\350) (?i . ?\354) (?o . ?\362) (?u . ?\371)
- (?` . ?`) (?\ . ?`))
- (?^ (?A . ?\302) (?E . ?\312) (?I . ?\316) (?O . ?\324) (?U . ?\333)
- (?a . ?\342) (?e . ?\352) (?i . ?\356) (?o . ?\364) (?u . ?\373)
- (?^ . ?^) (?\ . ?^))
- (?\" (?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) (?U . ?\334)
- (?a . ?\344) (?e . ?\353) (?i . ?\357) (?o . ?\366) (?s . ?\337)
- (?u . ?\374) (?y . ?\377)
- (?\" . ?\250) (?\ . ?\"))
- (?~ (?A . ?\303) (?C . ?\307) (?D . ?\320) (?N . ?\321) (?O . ?\325)
- (?T . ?\336) (?a . ?\343) (?c . ?\347) (?d . ?\360) (?n . ?\361)
- (?o . ?\365) (?t . ?\376)
- (?> . ?\273) (?< . ?\253) (?! . ?\241) (?? . ?\277)
- (?\~ . ?\270) (?\ . ?~))
- (?/ (?A . ?\305) (?E . ?\306) (?O . ?\330) (?a . ?\345) (?e . ?\346)
- (?o . ?\370)
- (?/ . ?\260) (?\ . ?/)))
-
- ("latin-2" latin-iso8859-2
- (?' (?A . ?\301) (?C . ?\306) (?D . ?\320) (?E . ?\311) (?I . ?\315)
- (?L . ?\305) (?N . ?\321) (?O . ?\323) (?R . ?\300) (?S . ?\246)
- (?U . ?\332) (?Y . ?\335) (?Z . ?\254)
- (?a . ?\341) (?c . ?\346) (?d . ?\360) (?e . ?\351) (?i . ?\355)
- (?l . ?\345) (?n . ?\361) (?o . ?\363) (?r . ?\340) (?s . ?\266)
- (?u . ?\372) (?y . ?\375) (?z . ?\274)
- (?' . ?\264) (?\ . ?'))
- (?` (?A . ?\241) (?C . ?\307) (?E . ?\312) (?L . ?\243) (?S . ?\252)
- (?T . ?\336) (?Z . ?\257)
- (?a . ?\261) (?l . ?\263) (?c . ?\347) (?e . ?\352) (?s . ?\272)
- (?t . ?\376) (?z . ?\277)
- (?` . ?\252)
- (?. . ?\377) (?\ . ?`))
- (?^ (?A . ?\302) (?I . ?\316) (?O . ?\324)
- (?a . ?\342) (?i . ?\356) (?o . ?\364)
- (?^ . ?^) ; no special code?
- (?\ . ?^))
- (?\" (?A . ?\304) (?E . ?\313) (?O . ?\326) (?U . ?\334)
- (?a . ?\344) (?e . ?\353) (?o . ?\366) (?s . ?\337) (?u . ?\374)
- (?\" . ?\250)
- (?\ . ?\"))
- (?~ (?A . ?\303) (?C . ?\310) (?D . ?\317) (?L . ?\245) (?N . ?\322)
- (?O . ?\325) (?R . ?\330) (?S . ?\251) (?T . ?\253) (?U . ?\333)
- (?Z . ?\256)
- (?a . ?\343) (?c . ?\350) (?d . ?\357) (?l . ?\265) (?n . ?\362)
- (?o . ?\365) (?r . ?\370) (?s . ?\271) (?t . ?\273) (?u . ?\373)
- (?z . ?\276)
- (?v . ?\242) ; v accent
- (?\~ . ?\242) ; v accent
- (?\. . ?\270) ; cedilla accent
- (?\ . ?~)))
-
- ("latin-3" latin-iso8859-3
- (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
- (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372)
- (?' . ?\264) (?\ . ?'))
- (?` (?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) (?U . ?\331)
- (?a . ?\340) (?e . ?\350) (?i . ?\354) (?o . ?\362) (?u . ?\371)
- (?` . ?`) (?\ . ?`))
- (?^ (?A . ?\302) (?C . ?\306) (?E . ?\312) (?G . ?\330) (?H . ?\246)
- (?I . ?\316) (?J . ?\254) (?O . ?\324) (?S . ?\336) (?U . ?\333)
- (?a . ?\342) (?c . ?\346) (?e . ?\352) (?g . ?\370) (?h . ?\266)
- (?i . ?\356) (?j . ?\274) (?o . ?\364) (?s . ?\376) (?u . ?\373)
- (?^ . ?^) (?\ . ?^))
- (?\" (?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) (?U . ?\334)
- (?a . ?\344) (?e . ?\353) (?i . ?\357) (?o . ?\366) (?u . ?\374)
- (?s . ?\337)
- (?\" . ?\250) (?\ . ?\"))
- (?~ (?A . ?\303) (?C . ?\307) (?D . ?\320) (?N . ?\321) (?O . ?\325)
- (?a . ?\343) (?c . ?\347) (?d . ?\360) (?n . ?\361) (?o . ?\365)
- (?$ . ?\245) (?S . ?\252) (?s . ?\272) (?G . ?\253) (?g . ?\273)
- (?U . ?\335) (?u . ?\375) (?` . ?\242)
- (?~ . ?\270) (?\ . ?~))
- (?/ (?C . ?\305) (?G . ?\325) (?H . ?\241) (?I . ?\251) (?Z . ?\257)
- (?c . ?\345) (?g . ?\365) (?h . ?\261) (?i . ?\271) (?z . ?\277)
- (?r . ?\256)
- (?. . ?\377) (?# . ?\243) (?$ . ?\244)
- (?/ . ?\260) (?\ . ?/))
- (?. (?C . ?\305) (?G . ?\325) (?I . ?\251) (?Z . ?\257)
- (?c . ?\345) (?g . ?\365) (?z . ?\277))))
- "List of language-specific customizations for the ISO Accents mode.
-
-Each element of the list is of the form
-
- (LANGUAGE [CHARSET]
- (PSEUDO-ACCENT MAPPINGS)
- (PSEUDO-ACCENT MAPPINGS)
- ...)
-
-LANGUAGE is a string naming the language.
-CHARSET (which may be omitted) is the symbol name
- of the character set used in this language.
- If CHARSET is omitted, latin-iso8859-1 is the default.
-PSEUDO-ACCENT is a char specifying an accent key.
-MAPPINGS are cons cells of the form (CHAR . ISO-CHAR).
-
-The net effect is that the key sequence PSEUDO-ACCENT CHAR is mapped
-to ISO-CHAR on input.")
-
-(defvar iso-language nil
- "Language for which ISO Accents mode is currently customized.
-Change it with the `iso-accents-customize' function.")
-
-(defvar iso-accents-list nil
- "Association list for ISO accent combinations, for the chosen language.")
-
-(defcustom iso-accents-mode nil
- "Non-nil enables ISO Accents mode.
-Setting this variable makes it local to the current buffer.
-See the function `iso-accents-mode'."
- :type 'boolean
- :group 'iso-acc)
-(make-variable-buffer-local 'iso-accents-mode)
-
-(defcustom iso-accents-enable '(?' ?` ?^ ?\" ?~ ?/)
- "List of accent keys that become prefixes in ISO Accents mode.
-The default is (?\\=' ?\\=` ?^ ?\" ?~ ?/), which contains all the supported
-accent keys. If you set this variable to a list in which some of those
-characters are missing, the missing ones do not act as accents.
-
-Note that if you specify a language with `iso-accents-customize',
-that can also turn off certain prefixes (whichever ones are not needed in
-the language you choose)."
- :type '(repeat character)
- :group 'iso-acc)
-
-(defun iso-accents-accent-key (prompt)
- "Modify the following character by adding an accent to it."
- ;; Pick up the accent character.
- (if (and iso-accents-mode
- (memq last-input-event iso-accents-enable))
- (iso-accents-compose prompt)
- (vector last-input-event)))
-
-
-;; The iso-accents-compose function is called deep inside Emacs' read
-;; key sequence machinery, so the call to read-event below actually
-;; recurses into that machinery. Doing that does not cause any
-;; problem on its own, but read-event will have marked the window's
-;; display matrix to be accurate -- which is broken by the subsequent
-;; call to delete-region. Therefore, we must call force-window-update
-;; after delete-region to explicitly clear the accurate state of the
-;; window's display matrix.
-
-(defun iso-accents-compose (prompt)
- (let* ((first-char last-input-event)
- (list (assq first-char iso-accents-list))
- ;; Wait for the second key and look up the combination.
- (second-char (if (or prompt
- (not (eq (key-binding "a")
- 'self-insert-command))
- ;; Not at start of a key sequence.
- (> (length (this-single-command-keys)) 1)
- ;; Called from anything but the command loop.
- this-command)
- (progn
- (message "%s%c"
- (or prompt "Compose with ")
- first-char)
- (read-event))
- (insert first-char)
- (prog1 (read-event)
- (delete-region (1- (point)) (point))
- ;; Display is no longer up-to-date.
- (force-window-update (selected-window)))))
- (entry (cdr (assq second-char list))))
- (if entry
- ;; Found it: return the mapped char
- (vector
- (if (and enable-multibyte-characters
- (>= entry ?\200))
- (+ iso-accents-insert-offset entry)
- entry))
- ;; Otherwise, advance and schedule the second key for execution.
- (push second-char unread-command-events)
- (vector first-char))))
-
-;; It is a matter of taste if you want the minor mode indicated
-;; in the mode line...
-;; If so, uncomment the next four lines.
-;; (or (assq 'iso-accents-mode minor-mode-alist)
-;; (setq minor-mode-alist
-;; (append minor-mode-alist
-;; '((iso-accents-mode " ISO-Acc")))))
-
-;;;###autoload
-(defun iso-accents-mode (&optional arg)
- "Toggle ISO Accents mode, in which accents modify the following letter.
-This permits easy insertion of accented characters according to ISO-8859-1.
-When Iso-accents mode is enabled, accent character keys
-\(\\=`, \\=', \", ^, / and ~) do not self-insert; instead, they modify the following
-letter key so that it inserts an ISO accented letter.
-
-You can customize ISO Accents mode to a particular language
-with the command `iso-accents-customize'.
-
-Special combinations: ~c gives a c with cedilla,
-~d gives an Icelandic eth (d with dash).
-~t gives an Icelandic thorn.
-\"s gives German sharp s.
-/a gives a with ring.
-/e gives an a-e ligature.
-~< and ~> give guillemots.
-~! gives an inverted exclamation mark.
-~? gives an inverted question mark.
-
-With an argument, a positive argument enables ISO Accents mode,
-and a negative argument disables it."
-
- (interactive "P")
-
- (if (if arg
- ;; Negative arg means switch it off.
- (<= (prefix-numeric-value arg) 0)
- ;; No arg means toggle.
- iso-accents-mode)
- (setq iso-accents-mode nil)
-
- ;; Enable electric accents.
- (setq iso-accents-mode t)))
-
-(defun iso-accents-customize (language)
- "Customize the ISO accents machinery for a particular language.
-It selects the customization based on the specifications in the
-`iso-languages' variable."
- (interactive (list (completing-read "Language: " iso-languages nil t)))
- (let ((table (cdr (assoc language iso-languages)))
- all-accents tail)
- (if (not table)
- (error "Unknown language `%s'" language)
- (setq iso-accents-insert-offset (- (make-char (if (symbolp (car table))
- (car table)
- 'latin-iso8859-1))
- 128))
- (if (symbolp (car table))
- (setq table (cdr table)))
- (setq iso-language language
- iso-accents-list table)
- (if key-translation-map
- (substitute-key-definition
- 'iso-accents-accent-key nil key-translation-map)
- (setq key-translation-map (make-sparse-keymap)))
- ;; Set up translations for all the characters that are used as
- ;; accent prefixes in this language.
- (setq tail iso-accents-list)
- (while tail
- (define-key key-translation-map (vector (car (car tail)))
- 'iso-accents-accent-key)
- (setq tail (cdr tail))))))
-
-(defun iso-accentuate (start end)
- "Convert two-character sequences in region into accented characters.
-Noninteractively, this operates on text from START to END.
-This uses the same conversion that ISO Accents mode uses for type-in."
- (interactive "r")
- (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (goto-char start)
- (forward-char 1)
- (let (entry)
- (while (< (point) end)
- (if (and (memq (preceding-char) iso-accents-enable)
- (setq entry (cdr (assq (following-char) (assq (preceding-char) iso-accents-list)))))
- (progn
- (forward-char -1)
- (delete-char 2)
- (insert entry)
- (setq end (1- end)))
- (forward-char 1)))))))
-
-(defun iso-accent-rassoc-unit (value alist)
- (let (elt acc)
- (while (and alist (not elt))
- (setq acc (car (car alist))
- elt (car (rassq value (cdr (car alist))))
- alist (cdr alist)))
- (if elt
- (cons acc elt))))
-
-(defun iso-unaccentuate (start end)
- "Convert accented characters in the region into two-character sequences.
-Noninteractively, this operates on text from START to END.
-This uses the opposite of the conversion done by ISO Accents mode for type-in."
- (interactive "r")
- (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (goto-char start)
- (let (entry)
- (while (< (point) end)
- (if (and (> (following-char) 127)
- (setq entry (iso-accent-rassoc-unit (following-char)
- iso-accents-list)))
- (progn
- (delete-char 1)
- (insert (car entry) (cdr entry))
- (setq end (1+ end)))
- (forward-char 1)))))))
-
-(defun iso-deaccentuate (start end)
- "Convert accented characters in the region into unaccented characters.
-Noninteractively, this operates on text from START to END."
- (interactive "r")
- (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (goto-char start)
- (let (entry)
- (while (< (point) end)
- (if (and (> (following-char) 127)
- (setq entry (iso-accent-rassoc-unit (following-char)
- iso-accents-list)))
- (progn
- (delete-char 1)
- (insert (cdr entry)))
- (forward-char 1)))))))
-
-;; Set up the default settings.
-(iso-accents-customize "latin-1")
-
-;; Use Iso-Accents mode in the minibuffer
-;; if it was in use in the previous buffer.
-(defun iso-acc-minibuf-setup ()
- (setq iso-accents-mode
- (with-current-buffer (window-buffer minibuffer-scroll-window)
- iso-accents-mode)))
-
-(add-hook 'minibuffer-setup-hook 'iso-acc-minibuf-setup)
-
-;;; iso-acc.el ends here
diff --git a/lisp/obsolete/iso-insert.el b/lisp/obsolete/iso-insert.el
deleted file mode 100644
index dcb9e3d307..0000000000
--- a/lisp/obsolete/iso-insert.el
+++ /dev/null
@@ -1,630 +0,0 @@
-;;; iso-insert.el --- insert functions for ISO 8859/1
-
-;; Copyright (C) 1987, 1994, 2001-2016 Free Software Foundation, Inc.
-
-;; Author: Howard Gayle
-;; Maintainer: emacs-devel@gnu.org
-;; Keywords: i18n
-;; Obsolete-since: 22.1
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Provides keys for inserting ISO Latin-1 characters. They use the
-;; prefix key C-x 8. Type C-x 8 C-h for a list.
-
-;;; Code:
-
-(defun insert-no-break-space ()
- (interactive "*")
- (insert ?\ )
-)
-
-(defun insert-inverted-exclamation-mark ()
- (interactive "*")
- (insert ?\¡)
-)
-
-(defun insert-cent-sign ()
- (interactive "*")
- (insert ?\¢)
-)
-
-(defun insert-pound-sign ()
- (interactive "*")
- (insert ?\£)
-)
-
-(defun insert-general-currency-sign ()
- (interactive "*")
- (insert ?\¤)
-)
-
-(defun insert-yen-sign ()
- (interactive "*")
- (insert ?\Â¥)
-)
-
-(defun insert-broken-vertical-line ()
- (interactive "*")
- (insert ?\¦)
-)
-
-(defun insert-section-sign ()
- (interactive "*")
- (insert ?\§)
-)
-
-(defun insert-diaeresis ()
- (interactive "*")
- (insert ?\¨)
-)
-
-(defun insert-copyright-sign ()
- (interactive "*")
- (insert ?\©)
-)
-
-(defun insert-ordinal-indicator-feminine ()
- (interactive "*")
- (insert ?\ª)
-)
-
-(defun insert-angle-quotation-mark-left ()
- (interactive "*")
- (insert ?\«)
-)
-
-(defun insert-not-sign ()
- (interactive "*")
- (insert ?\¬)
-)
-
-(defun insert-soft-hyphen ()
- (interactive "*")
- (insert ?\­)
-)
-
-(defun insert-registered-sign ()
- (interactive "*")
- (insert ?\®)
-)
-
-(defun insert-macron ()
- (interactive "*")
- (insert ?\¯)
-)
-
-(defun insert-degree-sign ()
- (interactive "*")
- (insert ?\°)
-)
-
-(defun insert-plus-or-minus-sign ()
- (interactive "*")
- (insert ?\±)
-)
-
-(defun insert-superscript-two ()
- (interactive "*")
- (insert ?\²)
-)
-
-(defun insert-superscript-three ()
- (interactive "*")
- (insert ?\³)
-)
-
-(defun insert-acute-accent ()
- (interactive "*")
- (insert ?\´)
-)
-
-(defun insert-micro-sign ()
- (interactive "*")
- (insert ?\µ)
-)
-
-(defun insert-pilcrow ()
- (interactive "*")
- (insert ?\¶)
-)
-
-(defun insert-middle-dot ()
- (interactive "*")
- (insert ?\·)
-)
-
-(defun insert-cedilla ()
- (interactive "*")
- (insert ?\¸)
-)
-
-(defun insert-superscript-one ()
- (interactive "*")
- (insert ?\¹)
-)
-
-(defun insert-ordinal-indicator-masculine ()
- (interactive "*")
- (insert ?\º)
-)
-
-(defun insert-angle-quotation-mark-right ()
- (interactive "*")
- (insert ?\»)
-)
-
-(defun insert-fraction-one-quarter ()
- (interactive "*")
- (insert ?\¼)
-)
-
-(defun insert-fraction-one-half ()
- (interactive "*")
- (insert ?\½)
-)
-
-(defun insert-fraction-three-quarters ()
- (interactive "*")
- (insert ?\¾)
-)
-
-(defun insert-inverted-question-mark ()
- (interactive "*")
- (insert ?\¿)
-)
-
-(defun insert-A-grave ()
- (interactive "*")
- (insert ?\À)
-)
-
-(defun insert-A-acute ()
- (interactive "*")
- (insert ?\Ã)
-)
-
-(defun insert-A-circumflex ()
- (interactive "*")
- (insert ?\Â)
-)
-
-(defun insert-A-tilde ()
- (interactive "*")
- (insert ?\Ã)
-)
-
-(defun insert-A-umlaut ()
- (interactive "*")
- (insert ?\Ä)
-)
-
-(defun insert-A-ring ()
- (interactive "*")
- (insert ?\Ã…)
-)
-
-(defun insert-AE ()
- (interactive "*")
- (insert ?\Æ)
-)
-
-(defun insert-C-cedilla ()
- (interactive "*")
- (insert ?\Ç)
-)
-
-(defun insert-E-grave ()
- (interactive "*")
- (insert ?\È)
-)
-
-(defun insert-E-acute ()
- (interactive "*")
- (insert ?\É)
-)
-
-(defun insert-E-circumflex ()
- (interactive "*")
- (insert ?\Ê)
-)
-
-(defun insert-E-umlaut ()
- (interactive "*")
- (insert ?\Ë)
-)
-
-(defun insert-I-grave ()
- (interactive "*")
- (insert ?\Ì)
-)
-
-(defun insert-I-acute ()
- (interactive "*")
- (insert ?\Ã)
-)
-
-(defun insert-I-circumflex ()
- (interactive "*")
- (insert ?\ÃŽ)
-)
-
-(defun insert-I-umlaut ()
- (interactive "*")
- (insert ?\Ã)
-)
-
-(defun insert-D-stroke ()
- (interactive "*")
- (insert ?\Ã)
-)
-
-(defun insert-N-tilde ()
- (interactive "*")
- (insert ?\Ñ)
-)
-
-(defun insert-O-grave ()
- (interactive "*")
- (insert ?\Ã’)
-)
-
-(defun insert-O-acute ()
- (interactive "*")
- (insert ?\Ó)
-)
-
-(defun insert-O-circumflex ()
- (interactive "*")
- (insert ?\Ô)
-)
-
-(defun insert-O-tilde ()
- (interactive "*")
- (insert ?\Õ)
-)
-
-(defun insert-O-umlaut ()
- (interactive "*")
- (insert ?\Ö)
-)
-
-(defun insert-multiplication-sign ()
- (interactive "*")
- (insert ?\×)
-)
-
-(defun insert-O-slash ()
- (interactive "*")
- (insert ?\Ø)
-)
-
-(defun insert-U-grave ()
- (interactive "*")
- (insert ?\Ù)
-)
-
-(defun insert-U-acute ()
- (interactive "*")
- (insert ?\Ú)
-)
-
-(defun insert-U-circumflex ()
- (interactive "*")
- (insert ?\Û)
-)
-
-(defun insert-U-umlaut ()
- (interactive "*")
- (insert ?\Ü)
-)
-
-(defun insert-Y-acute ()
- (interactive "*")
- (insert ?\Ã)
-)
-
-(defun insert-THORN ()
- (interactive "*")
- (insert ?\Þ)
-)
-
-(defun insert-ss ()
- (interactive "*")
- (insert ?\ß)
-)
-
-(defun insert-a-grave ()
- (interactive "*")
- (insert ?\à)
-)
-
-(defun insert-a-acute ()
- (interactive "*")
- (insert ?\á)
-)
-
-(defun insert-a-circumflex ()
- (interactive "*")
- (insert ?\â)
-)
-
-(defun insert-a-tilde ()
- (interactive "*")
- (insert ?\ã)
-)
-
-(defun insert-a-umlaut ()
- (interactive "*")
- (insert ?\ä)
-)
-
-(defun insert-a-ring ()
- (interactive "*")
- (insert ?\Ã¥)
-)
-
-(defun insert-ae ()
- (interactive "*")
- (insert ?\æ)
-)
-
-(defun insert-c-cedilla ()
- (interactive "*")
- (insert ?\ç)
-)
-
-(defun insert-e-grave ()
- (interactive "*")
- (insert ?\è)
-)
-
-(defun insert-e-acute ()
- (interactive "*")
- (insert ?\é)
-)
-
-(defun insert-e-circumflex ()
- (interactive "*")
- (insert ?\ê)
-)
-
-(defun insert-e-umlaut ()
- (interactive "*")
- (insert ?\ë)
-)
-
-(defun insert-i-grave ()
- (interactive "*")
- (insert ?\ì)
-)
-
-(defun insert-i-acute ()
- (interactive "*")
- (insert ?\í)
-)
-
-(defun insert-i-circumflex ()
- (interactive "*")
- (insert ?\î)
-)
-
-(defun insert-i-umlaut ()
- (interactive "*")
- (insert ?\ï)
-)
-
-(defun insert-d-stroke ()
- (interactive "*")
- (insert ?\ð)
-)
-
-(defun insert-n-tilde ()
- (interactive "*")
- (insert ?\ñ)
-)
-
-(defun insert-o-grave ()
- (interactive "*")
- (insert ?\ò)
-)
-
-(defun insert-o-acute ()
- (interactive "*")
- (insert ?\ó)
-)
-
-(defun insert-o-circumflex ()
- (interactive "*")
- (insert ?\ô)
-)
-
-(defun insert-o-tilde ()
- (interactive "*")
- (insert ?\õ)
-)
-
-(defun insert-o-umlaut ()
- (interactive "*")
- (insert ?\ö)
-)
-
-(defun insert-division-sign ()
- (interactive "*")
- (insert ?\÷)
-)
-
-(defun insert-o-slash ()
- (interactive "*")
- (insert ?\ø)
-)
-
-(defun insert-u-grave ()
- (interactive "*")
- (insert ?\ù)
-)
-
-(defun insert-u-acute ()
- (interactive "*")
- (insert ?\ú)
-)
-
-(defun insert-u-circumflex ()
- (interactive "*")
- (insert ?\û)
-)
-
-(defun insert-u-umlaut ()
- (interactive "*")
- (insert ?\ü)
-)
-
-(defun insert-y-acute ()
- (interactive "*")
- (insert ?\ý)
-)
-
-(defun insert-thorn ()
- (interactive "*")
- (insert ?\þ)
-)
-
-(defun insert-y-umlaut ()
- (interactive "*")
- (insert ?\ÿ)
-)
-
-(defvar 8859-1-map nil "Keymap for ISO 8859/1 character insertion.")
-(if 8859-1-map nil
- (setq 8859-1-map (make-keymap))
- (define-key 8859-1-map " " 'insert-no-break-space)
- (define-key 8859-1-map "!" 'insert-inverted-exclamation-mark)
- (define-key 8859-1-map "\"" (make-sparse-keymap))
- (define-key 8859-1-map "\"\"" 'insert-diaeresis)
- (define-key 8859-1-map "\"A" 'insert-A-umlaut)
- (define-key 8859-1-map "\"E" 'insert-E-umlaut)
- (define-key 8859-1-map "\"I" 'insert-I-umlaut)
- (define-key 8859-1-map "\"O" 'insert-O-umlaut)
- (define-key 8859-1-map "\"U" 'insert-U-umlaut)
- (define-key 8859-1-map "\"a" 'insert-a-umlaut)
- (define-key 8859-1-map "\"e" 'insert-e-umlaut)
- (define-key 8859-1-map "\"i" 'insert-i-umlaut)
- (define-key 8859-1-map "\"o" 'insert-o-umlaut)
- (define-key 8859-1-map "\"u" 'insert-u-umlaut)
- (define-key 8859-1-map "\"y" 'insert-y-umlaut)
- (define-key 8859-1-map "'" (make-sparse-keymap))
- (define-key 8859-1-map "''" 'insert-acute-accent)
- (define-key 8859-1-map "'A" 'insert-A-acute)
- (define-key 8859-1-map "'E" 'insert-E-acute)
- (define-key 8859-1-map "'I" 'insert-I-acute)
- (define-key 8859-1-map "'O" 'insert-O-acute)
- (define-key 8859-1-map "'U" 'insert-U-acute)
- (define-key 8859-1-map "'Y" 'insert-Y-acute)
- (define-key 8859-1-map "'a" 'insert-a-acute)
- (define-key 8859-1-map "'e" 'insert-e-acute)
- (define-key 8859-1-map "'i" 'insert-i-acute)
- (define-key 8859-1-map "'o" 'insert-o-acute)
- (define-key 8859-1-map "'u" 'insert-u-acute)
- (define-key 8859-1-map "'y" 'insert-y-acute)
- (define-key 8859-1-map "$" 'insert-general-currency-sign)
- (define-key 8859-1-map "+" 'insert-plus-or-minus-sign)
- (define-key 8859-1-map "," (make-sparse-keymap))
- (define-key 8859-1-map ",," 'insert-cedilla)
- (define-key 8859-1-map ",C" 'insert-C-cedilla)
- (define-key 8859-1-map ",c" 'insert-c-cedilla)
- (define-key 8859-1-map "-" 'insert-soft-hyphen)
- (define-key 8859-1-map "." 'insert-middle-dot)
- (define-key 8859-1-map "/" (make-sparse-keymap))
- (define-key 8859-1-map "//" 'insert-division-sign)
- (define-key 8859-1-map "/O" 'insert-O-slash)
- (define-key 8859-1-map "/o" 'insert-o-slash)
- (define-key 8859-1-map "1" (make-sparse-keymap))
- (define-key 8859-1-map "1/" (make-sparse-keymap))
- (define-key 8859-1-map "1/2" 'insert-fraction-one-half)
- (define-key 8859-1-map "1/4" 'insert-fraction-one-quarter)
- (define-key 8859-1-map "3" (make-sparse-keymap))
- (define-key 8859-1-map "3/" (make-sparse-keymap))
- (define-key 8859-1-map "3/4" 'insert-fraction-three-quarters)
- (define-key 8859-1-map "<" 'insert-angle-quotation-mark-left)
- (define-key 8859-1-map "=" 'insert-macron)
- (define-key 8859-1-map ">" 'insert-angle-quotation-mark-right)
- (define-key 8859-1-map "?" 'insert-inverted-question-mark)
- (define-key 8859-1-map "A" 'insert-A-ring)
- (define-key 8859-1-map "E" 'insert-AE)
- (define-key 8859-1-map "C" 'insert-copyright-sign)
- (define-key 8859-1-map "D" 'insert-D-stroke)
- (define-key 8859-1-map "L" 'insert-pound-sign)
- (define-key 8859-1-map "P" 'insert-pilcrow)
- (define-key 8859-1-map "R" 'insert-registered-sign)
- (define-key 8859-1-map "S" 'insert-section-sign)
- (define-key 8859-1-map "T" 'insert-THORN)
- (define-key 8859-1-map "Y" 'insert-yen-sign)
- (define-key 8859-1-map "^" (make-sparse-keymap))
- (define-key 8859-1-map "^1" 'insert-superscript-one)
- (define-key 8859-1-map "^2" 'insert-superscript-two)
- (define-key 8859-1-map "^3" 'insert-superscript-three)
- (define-key 8859-1-map "^A" 'insert-A-circumflex)
- (define-key 8859-1-map "^E" 'insert-E-circumflex)
- (define-key 8859-1-map "^I" 'insert-I-circumflex)
- (define-key 8859-1-map "^O" 'insert-O-circumflex)
- (define-key 8859-1-map "^U" 'insert-U-circumflex)
- (define-key 8859-1-map "^a" 'insert-a-circumflex)
- (define-key 8859-1-map "^e" 'insert-e-circumflex)
- (define-key 8859-1-map "^i" 'insert-i-circumflex)
- (define-key 8859-1-map "^o" 'insert-o-circumflex)
- (define-key 8859-1-map "^u" 'insert-u-circumflex)
- (define-key 8859-1-map "_" (make-sparse-keymap))
- (define-key 8859-1-map "_a" 'insert-ordinal-indicator-feminine)
- (define-key 8859-1-map "_o" 'insert-ordinal-indicator-masculine)
- (define-key 8859-1-map "`" (make-sparse-keymap))
- (define-key 8859-1-map "`A" 'insert-A-grave)
- (define-key 8859-1-map "`E" 'insert-E-grave)
- (define-key 8859-1-map "`I" 'insert-I-grave)
- (define-key 8859-1-map "`O" 'insert-O-grave)
- (define-key 8859-1-map "`U" 'insert-U-grave)
- (define-key 8859-1-map "`a" 'insert-a-grave)
- (define-key 8859-1-map "`e" 'insert-e-grave)
- (define-key 8859-1-map "`i" 'insert-i-grave)
- (define-key 8859-1-map "`o" 'insert-o-grave)
- (define-key 8859-1-map "`u" 'insert-u-grave)
- (define-key 8859-1-map "a" 'insert-a-ring)
- (define-key 8859-1-map "e" 'insert-ae)
- (define-key 8859-1-map "c" 'insert-cent-sign)
- (define-key 8859-1-map "d" 'insert-d-stroke)
- (define-key 8859-1-map "o" 'insert-degree-sign)
- (define-key 8859-1-map "s" 'insert-ss)
- (define-key 8859-1-map "t" 'insert-thorn)
- (define-key 8859-1-map "u" 'insert-micro-sign)
- (define-key 8859-1-map "x" 'insert-multiplication-sign)
- (define-key 8859-1-map "|" 'insert-broken-vertical-line)
- (define-key 8859-1-map "~" (make-sparse-keymap))
- (define-key 8859-1-map "~A" 'insert-A-tilde)
- (define-key 8859-1-map "~N" 'insert-N-tilde)
- (define-key 8859-1-map "~O" 'insert-O-tilde)
- (define-key 8859-1-map "~a" 'insert-a-tilde)
- (define-key 8859-1-map "~n" 'insert-n-tilde)
- (define-key 8859-1-map "~o" 'insert-o-tilde)
- (define-key 8859-1-map "~~" 'insert-not-sign)
- (if (not (lookup-key global-map "\C-x8"))
- (define-key global-map "\C-x8" 8859-1-map))
-)
-(defalias '8859-1-map 8859-1-map)
-
-(provide 'iso-insert)
-
-;;; iso-insert.el ends here
diff --git a/lisp/obsolete/iso-swed.el b/lisp/obsolete/iso-swed.el
deleted file mode 100644
index bae69d2e78..0000000000
--- a/lisp/obsolete/iso-swed.el
+++ /dev/null
@@ -1,150 +0,0 @@
-;;; iso-swed.el --- set up char tables for ISO 8859/1 for Swedish/Finnish ttys
-
-;; Copyright (C) 1987, 2001-2016 Free Software Foundation, Inc.
-
-;; Author: Howard Gayle
-;; Maintainer: emacs-devel@gnu.org
-;; Keywords: i18n
-;; Obsolete-since: 22.1
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Written by Howard Gayle. See case-table.el for details.
-
-;;; Code:
-
-;; This code sets up to display ISO 8859/1 characters on
-;; terminals that have ASCII in the G0 set and a Swedish/Finnish
-;; version of ISO 646 in the G1 set. The G1 set differs from
-;; ASCII as follows:
-;;
-;; ASCII G1
-;; $ general currency sign
-;; @ capital E with acute accent
-;; [ capital A with diaeresis or umlaut mark
-;; \ capital O with diaeresis or umlaut mark
-;; ] capital A with ring
-;; ^ capital U with diaeresis or umlaut mark
-;; ` small e with acute accent
-;; { small a with diaeresis or umlaut mark
-;; | small o with diaeresis or umlaut mark
-;; } small a with ring
-;; ~ small u with diaeresis or umlaut mark
-
-(require 'disp-table)
-
-(standard-display-ascii 160 "{_}") ; NBSP (no-break space)
-(standard-display-ascii 161 "{!}") ; inverted exclamation mark
-(standard-display-ascii 162 "{c}") ; cent sign
-(standard-display-ascii 163 "{GBP}") ; pound sign
-(standard-display-g1 164 ?$) ; general currency sign
-(standard-display-ascii 165 "{JPY}") ; yen sign
-(standard-display-ascii 166 "{|}") ; broken vertical line
-(standard-display-ascii 167 "{S}") ; section sign
-(standard-display-ascii 168 "{\"}") ; diaeresis
-(standard-display-ascii 169 "{C}") ; copyright sign
-(standard-display-ascii 170 "{_a}") ; ordinal indicator, feminine
-(standard-display-ascii 171 "{<<}") ; left angle quotation mark
-(standard-display-ascii 172 "{~}") ; not sign
-(standard-display-ascii 173 "{-}") ; soft hyphen
-(standard-display-ascii 174 "{R}") ; registered sign
-(standard-display-ascii 175 "{=}") ; macron
-(standard-display-ascii 176 "{o}") ; degree sign
-(standard-display-ascii 177 "{+-}") ; plus or minus sign
-(standard-display-ascii 178 "{2}") ; superscript two
-(standard-display-ascii 179 "{3}") ; superscript three
-(standard-display-ascii 180 "{'}") ; acute accent
-(standard-display-ascii 181 "{u}") ; micro sign
-(standard-display-ascii 182 "{P}") ; pilcrow
-(standard-display-ascii 183 "{.}") ; middle dot
-(standard-display-ascii 184 "{,}") ; cedilla
-(standard-display-ascii 185 "{1}") ; superscript one
-(standard-display-ascii 186 "{_o}") ; ordinal indicator, masculine
-(standard-display-ascii 187 "{>>}") ; right angle quotation mark
-(standard-display-ascii 188 "{1/4}") ; fraction one-quarter
-(standard-display-ascii 189 "{1/2}") ; fraction one-half
-(standard-display-ascii 190 "{3/4}") ; fraction three-quarters
-(standard-display-ascii 191 "{?}") ; inverted question mark
-(standard-display-ascii 192 "{`A}") ; A with grave accent
-(standard-display-ascii 193 "{'A}") ; A with acute accent
-(standard-display-ascii 194 "{^A}") ; A with circumflex accent
-(standard-display-ascii 195 "{~A}") ; A with tilde
-(standard-display-g1 196 ?[) ; A with diaeresis or umlaut mark
-(standard-display-g1 197 ?]) ; A with ring
-(standard-display-ascii 198 "{AE}") ; AE diphthong
-(standard-display-ascii 199 "{,C}") ; C with cedilla
-(standard-display-ascii 200 "{`E}") ; E with grave accent
-(standard-display-g1 201 ?@) ; E with acute accent
-(standard-display-ascii 202 "{^E}") ; E with circumflex accent
-(standard-display-ascii 203 "{\"E}") ; E with diaeresis or umlaut mark
-(standard-display-ascii 204 "{`I}") ; I with grave accent
-(standard-display-ascii 205 "{'I}") ; I with acute accent
-(standard-display-ascii 206 "{^I}") ; I with circumflex accent
-(standard-display-ascii 207 "{\"I}") ; I with diaeresis or umlaut mark
-(standard-display-ascii 208 "{-D}") ; D with stroke, Icelandic eth
-(standard-display-ascii 209 "{~N}") ; N with tilde
-(standard-display-ascii 210 "{`O}") ; O with grave accent
-(standard-display-ascii 211 "{'O}") ; O with acute accent
-(standard-display-ascii 212 "{^O}") ; O with circumflex accent
-(standard-display-ascii 213 "{~O}") ; O with tilde
-(standard-display-g1 214 ?\\) ; O with diaeresis or umlaut mark
-(standard-display-ascii 215 "{x}") ; multiplication sign
-(standard-display-ascii 216 "{/O}") ; O with slash
-(standard-display-ascii 217 "{`U}") ; U with grave accent
-(standard-display-ascii 218 "{'U}") ; U with acute accent
-(standard-display-ascii 219 "{^U}") ; U with circumflex accent
-(standard-display-g1 220 ?^) ; U with diaeresis or umlaut mark
-(standard-display-ascii 221 "{'Y}") ; Y with acute accent
-(standard-display-ascii 222 "{TH}") ; capital thorn, Icelandic
-(standard-display-ascii 223 "{ss}") ; small sharp s, German
-(standard-display-ascii 224 "{`a}") ; a with grave accent
-(standard-display-ascii 225 "{'a}") ; a with acute accent
-(standard-display-ascii 226 "{^a}") ; a with circumflex accent
-(standard-display-ascii 227 "{~a}") ; a with tilde
-(standard-display-g1 228 ?{) ; a with diaeresis or umlaut mark
-(standard-display-g1 229 ?}) ; a with ring
-(standard-display-ascii 230 "{ae}") ; ae diphthong
-(standard-display-ascii 231 "{,c}") ; c with cedilla
-(standard-display-ascii 232 "{`e}") ; e with grave accent
-(standard-display-g1 233 ?`) ; e with acute accent
-(standard-display-ascii 234 "{^e}") ; e with circumflex accent
-(standard-display-ascii 235 "{\"e}") ; e with diaeresis or umlaut mark
-(standard-display-ascii 236 "{`i}") ; i with grave accent
-(standard-display-ascii 237 "{'i}") ; i with acute accent
-(standard-display-ascii 238 "{^i}") ; i with circumflex accent
-(standard-display-ascii 239 "{\"i}") ; i with diaeresis or umlaut mark
-(standard-display-ascii 240 "{-d}") ; d with stroke, Icelandic eth
-(standard-display-ascii 241 "{~n}") ; n with tilde
-(standard-display-ascii 242 "{`o}") ; o with grave accent
-(standard-display-ascii 243 "{'o}") ; o with acute accent
-(standard-display-ascii 244 "{^o}") ; o with circumflex accent
-(standard-display-ascii 245 "{~o}") ; o with tilde
-(standard-display-g1 246 ?|) ; o with diaeresis or umlaut mark
-(standard-display-ascii 247 "{/}") ; division sign
-(standard-display-ascii 248 "{/o}") ; o with slash
-(standard-display-ascii 249 "{`u}") ; u with grave accent
-(standard-display-ascii 250 "{'u}") ; u with acute accent
-(standard-display-ascii 251 "{^u}") ; u with circumflex accent
-(standard-display-g1 252 ?~) ; u with diaeresis or umlaut mark
-(standard-display-ascii 253 "{'y}") ; y with acute accent
-(standard-display-ascii 254 "{th}") ; small thorn, Icelandic
-(standard-display-ascii 255 "{\"y}") ; small y with diaeresis or umlaut mark
-
-(provide 'iso-swed)
-
-;;; iso-swed.el ends here
diff --git a/lisp/obsolete/messcompat.el b/lisp/obsolete/messcompat.el
new file mode 100644
index 0000000000..5f50692010
--- /dev/null
+++ b/lisp/obsolete/messcompat.el
@@ -0,0 +1,55 @@
+;;; messcompat.el --- making message mode compatible with mail mode
+
+;; Copyright (C) 1996-2016 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; Keywords: mail, news
+;; Obsolete-since: 25.2
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file tries to provide backward compatibility with sendmail.el
+;; for Message mode. It should be used by simply adding
+;;
+;; (require 'messcompat)
+;;
+;; to the .emacs file. Loading it after Message mode has been
+;; loaded will have no effect.
+
+;;; Code:
+
+(require 'sendmail)
+
+;(setq message-from-style mail-from-style)
+;(setq message-interactive mail-interactive)
+(setq message-setup-hook mail-setup-hook)
+(setq message-mode-hook mail-mode-hook)
+;(setq message-indentation-spaces mail-indentation-spaces)
+;(setq message-signature mail-signature)
+;(setq message-signature-file mail-signature-file)
+(setq message-default-headers mail-default-headers)
+(setq message-send-hook mail-send-hook)
+(setq message-send-mail-function send-mail-function)
+
+(provide 'messcompat)
+
+;;; messcompat.el ends here
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
diff --git a/lisp/obsolete/old-whitespace.el b/lisp/obsolete/old-whitespace.el
index 63af3693b5..5119fb003d 100644
--- a/lisp/obsolete/old-whitespace.el
+++ b/lisp/obsolete/old-whitespace.el
@@ -300,8 +300,6 @@ To disable timer scans, set this to zero."
(:background "white")))
"Face used for highlighting the bogus whitespaces that exist in the buffer."
:group 'whitespace)
-(define-obsolete-face-alias 'whitespace-highlight-face
- 'whitespace-highlight "22.1")
(if (not (assoc 'whitespace-mode minor-mode-alist))
(setq minor-mode-alist (cons '(whitespace-mode whitespace-mode-line)
diff --git a/lisp/obsolete/resume.el b/lisp/obsolete/resume.el
deleted file mode 100644
index b7f699db41..0000000000
--- a/lisp/obsolete/resume.el
+++ /dev/null
@@ -1,125 +0,0 @@
-;;; resume.el --- process command line args from within a suspended Emacs job
-
-;; Copyright (C) 1992, 2001-2016 Free Software Foundation, Inc.
-
-;; Author: Joe Wells <jbw@bucsf.bu.edu>
-;; Adapted-By: ESR
-;; Keywords: processes
-;; Obsolete-since: 23.1
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; The purpose of this library is to handle command line arguments
-;; when you resume an existing Emacs job.
-
-;; In order to use it, you must put this code in your .emacs file.
-
-;; (add-hook 'suspend-hook 'resume-suspend-hook)
-;; (add-hook 'suspend-resume-hook 'resume-process-args)
-
-;; You can't get the benefit of this library by using the `emacs' command,
-;; since that always starts a new Emacs job. Instead you must use a
-;; command called `edit' which knows how to resume an existing Emacs job
-;; if you have one, or start a new Emacs job if you don't have one.
-
-;; To define the `edit' command, run the script etc/emacs.csh (if you use CSH),
-;; or etc/emacs.bash if you use BASH. You would normally do this in your
-;; login script.
-
-;; Stephan Gildea suggested bug fix (gildea@bbn.com).
-;; Ideas from Michael DeCorte and other people.
-
-;;; Code:
-
-(defvar resume-emacs-args-file (expand-file-name "~/.emacs_args")
- "This file is where arguments are placed for a suspended Emacs job.")
-
-(defvar resume-emacs-args-buffer " *Command Line Args*"
- "Buffer that is used by `resume-process-args'.")
-
-(defun resume-process-args ()
- "Handler for command line args given when Emacs is resumed."
- (let ((start-buffer (current-buffer))
- (args-buffer (get-buffer-create resume-emacs-args-buffer))
- length args
- (command-line-default-directory default-directory))
- (unwind-protect
- (progn
- (set-buffer args-buffer)
- (erase-buffer)
- ;; get the contents of resume-emacs-args-file
- (condition-case ()
- (let ((result (insert-file-contents resume-emacs-args-file)))
- (setq length (car (cdr result))))
- ;; the file doesn't exist, ergo no arguments
- (file-error
- (erase-buffer)
- (setq length 0)))
- (if (<= length 0)
- (setq args nil)
- ;; get the arguments from the buffer
- (goto-char (point-min))
- (while (not (eobp))
- (skip-chars-forward " \t\n")
- (let ((begin (point)))
- (skip-chars-forward "^ \t\n")
- (setq args (cons (buffer-substring begin (point)) args)))
- (skip-chars-forward " \t\n"))
- ;; arguments are now in reverse order
- (setq args (nreverse args))
- ;; make sure they're not read again
- (erase-buffer))
- (resume-write-buffer-to-file (current-buffer) resume-emacs-args-file)
- ;; if nothing was in buffer, args will be null
- (or (null args)
- (setq command-line-default-directory
- (file-name-as-directory (car args))
- args (cdr args)))
- ;; actually process the arguments
- (command-line-1 args))
- ;; If the command line args don't result in a find-file, the
- ;; buffer will be left in args-buffer. So we change back to the
- ;; original buffer. The reason I don't just use
- ;; (let ((default-directory foo))
- ;; (command-line-1 args))
- ;; in the context of the original buffer is because let does not
- ;; work properly with buffer-local variables.
- (if (eq (current-buffer) args-buffer)
- (set-buffer start-buffer)))))
-
-;;;###autoload
-(defun resume-suspend-hook ()
- "Clear out the file used for transmitting args when Emacs resumes."
- (with-current-buffer (get-buffer-create resume-emacs-args-buffer)
- (erase-buffer)
- (resume-write-buffer-to-file (current-buffer) resume-emacs-args-file)))
-
-(defun resume-write-buffer-to-file (buffer file)
- "Writes the contents of BUFFER into FILE, if permissions allow."
- (if (not (file-writable-p file))
- (error "No permission to write file %s" file))
- (with-current-buffer buffer
- (clear-visited-file-modtime)
- (save-restriction
- (widen)
- (write-region (point-min) (point-max) file nil 'quiet))
- (set-buffer-modified-p nil)))
-
-(provide 'resume)
-
-;;; resume.el ends here
diff --git a/lisp/obsolete/scribe.el b/lisp/obsolete/scribe.el
deleted file mode 100644
index c354e65b9d..0000000000
--- a/lisp/obsolete/scribe.el
+++ /dev/null
@@ -1,329 +0,0 @@
-;;; scribe.el --- scribe mode, and its idiosyncratic commands
-
-;; Copyright (C) 1985, 2001-2016 Free Software Foundation, Inc.
-
-;; Author: William Sommerfeld
-;; (according to ack.texi)
-;; Maintainer: emacs-devel@gnu.org
-;; Keywords: wp
-;; Obsolete-since: 22.1
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; A major mode for editing source in written for the Scribe text formatter.
-;; Knows about Scribe syntax and standard layout rules. The command to
-;; run Scribe on a buffer is bogus; someone interested should fix it.
-
-;;; Code:
-
-(defvar compile-command)
-
-(defgroup scribe nil
- "Scribe mode."
- :prefix "scribe-"
- :group 'wp)
-
-(defvar scribe-mode-syntax-table nil
- "Syntax table used while in scribe mode.")
-
-(defvar scribe-mode-abbrev-table nil
- "Abbrev table used while in scribe mode.")
-
-(defcustom scribe-fancy-paragraphs nil
- "Non-nil makes Scribe mode use a different style of paragraph separation."
- :type 'boolean
- :group 'scribe)
-
-(defcustom scribe-electric-quote nil
- "Non-nil makes insert of double quote use \\=`\\=` or \\='\\=' depending on context."
- :type 'boolean
- :group 'scribe)
-
-(defcustom scribe-electric-parenthesis nil
- "Non-nil makes parenthesis char ( (]}> ) automatically insert its close
-if typed after an @Command form."
- :type 'boolean
- :group 'scribe)
-
-(defconst scribe-open-parentheses "[({<"
- "Open parenthesis characters for Scribe.")
-
-(defconst scribe-close-parentheses "])}>"
- "Close parenthesis characters for Scribe.
-These should match up with `scribe-open-parenthesis'.")
-
-(if (null scribe-mode-syntax-table)
- (let ((st (syntax-table)))
- (unwind-protect
- (progn
- (setq scribe-mode-syntax-table (copy-syntax-table
- text-mode-syntax-table))
- (set-syntax-table scribe-mode-syntax-table)
- (modify-syntax-entry ?\" " ")
- (modify-syntax-entry ?\\ " ")
- (modify-syntax-entry ?@ "w ")
- (modify-syntax-entry ?< "(> ")
- (modify-syntax-entry ?> ")< ")
- (modify-syntax-entry ?[ "(] ")
- (modify-syntax-entry ?] ")[ ")
- (modify-syntax-entry ?{ "(} ")
- (modify-syntax-entry ?} "){ ")
- (modify-syntax-entry ?' "w "))
- (set-syntax-table st))))
-
-(defvar scribe-mode-map nil)
-
-(if scribe-mode-map
- nil
- (setq scribe-mode-map (make-sparse-keymap))
- (define-key scribe-mode-map "\t" 'scribe-tab)
- (define-key scribe-mode-map "\e\t" 'tab-to-tab-stop)
- (define-key scribe-mode-map "\es" 'center-line)
- (define-key scribe-mode-map "\e}" 'up-list)
- (define-key scribe-mode-map "\eS" 'center-paragraph)
- (define-key scribe-mode-map "\"" 'scribe-insert-quote)
- (define-key scribe-mode-map "(" 'scribe-parenthesis)
- (define-key scribe-mode-map "[" 'scribe-parenthesis)
- (define-key scribe-mode-map "{" 'scribe-parenthesis)
- (define-key scribe-mode-map "<" 'scribe-parenthesis)
- (define-key scribe-mode-map "\C-c\C-c" 'scribe-chapter)
- (define-key scribe-mode-map "\C-c\C-t" 'scribe-section)
- (define-key scribe-mode-map "\C-c\C-s" 'scribe-subsection)
- (define-key scribe-mode-map "\C-c\C-v" 'scribe-insert-environment)
- (define-key scribe-mode-map "\C-c\C-e" 'scribe-bracket-region-be)
- (define-key scribe-mode-map "\C-c[" 'scribe-begin)
- (define-key scribe-mode-map "\C-c]" 'scribe-end)
- (define-key scribe-mode-map "\C-c\C-i" 'scribe-italicize-word)
- (define-key scribe-mode-map "\C-c\C-b" 'scribe-bold-word)
- (define-key scribe-mode-map "\C-c\C-u" 'scribe-underline-word))
-
-;;;###autoload
-(define-derived-mode scribe-mode text-mode "Scribe"
- "Major mode for editing files of Scribe (a text formatter) source.
-Scribe-mode is similar to text-mode, with a few extra commands added.
-\\{scribe-mode-map}
-
-Interesting variables:
-
-`scribe-fancy-paragraphs'
- Non-nil makes Scribe mode use a different style of paragraph separation.
-
-`scribe-electric-quote'
- Non-nil makes insert of double quote use \\=`\\=` or \\='\\=' depending on context.
-
-`scribe-electric-parenthesis'
- Non-nil makes an open-parenthesis char (one of `([<{')
- automatically insert its close if typed after an @Command form."
- (set (make-local-variable 'comment-start) "@Comment[")
- (set (make-local-variable 'comment-start-skip) (concat "@Comment[" scribe-open-parentheses "]"))
- (set (make-local-variable 'comment-column) 0)
- (set (make-local-variable 'comment-end) "]")
- (set (make-local-variable 'paragraph-start)
- (concat "\\([\n\f]\\)\\|\\(@\\w+["
- scribe-open-parentheses
- "].*["
- scribe-close-parentheses
- "]$\\)"))
- (set (make-local-variable 'paragraph-separate)
- (if scribe-fancy-paragraphs paragraph-start "$"))
- (set (make-local-variable 'sentence-end)
- "\\([.?!]\\|@:\\)[]\"')}]*\\($\\| $\\|\t\\| \\)[ \t\n]*")
- (set (make-local-variable 'compile-command)
- (concat "scribe "
- (if buffer-file-name
- (shell-quote-argument (buffer-file-name))))))
-
-(defun scribe-tab ()
- (interactive)
- (insert "@\\"))
-
-;; This algorithm could probably be improved somewhat.
-;; Right now, it loses seriously...
-
-(defun scribe ()
- "Run Scribe on the current buffer."
- (interactive)
- (call-interactively 'compile))
-
-(defun scribe-envelop-word (string count)
- "Surround current word with Scribe construct @STRING[...].
-COUNT specifies how many words to surround. A negative count means
-to skip backward."
- (let ((spos (point)) (epos (point)) (ccoun 0) noparens)
- (if (not (zerop count))
- (progn (if (= (char-syntax (preceding-char)) ?w)
- (forward-sexp (min -1 count)))
- (setq spos (point))
- (if (looking-at (concat "@\\w[" scribe-open-parentheses "]"))
- (forward-char 2)
- (goto-char epos)
- (skip-chars-backward "\\W")
- (forward-char -1))
- (forward-sexp (max count 1))
- (setq epos (point))))
- (goto-char spos)
- (while (and (< ccoun (length scribe-open-parentheses))
- (save-excursion
- (or (search-forward (char-to-string
- (aref scribe-open-parentheses ccoun))
- epos t)
- (search-forward (char-to-string
- (aref scribe-close-parentheses ccoun))
- epos t)))
- (setq ccoun (1+ ccoun))))
- (if (>= ccoun (length scribe-open-parentheses))
- (progn (goto-char epos)
- (insert "@end(" string ")")
- (goto-char spos)
- (insert "@begin(" string ")"))
- (goto-char epos)
- (insert (aref scribe-close-parentheses ccoun))
- (goto-char spos)
- (insert "@" string (aref scribe-open-parentheses ccoun))
- (goto-char epos)
- (forward-char 3)
- (skip-chars-forward scribe-close-parentheses))))
-
-(defun scribe-underline-word (count)
- "Underline COUNT words around point by means of Scribe constructs."
- (interactive "p")
- (scribe-envelop-word "u" count))
-
-(defun scribe-bold-word (count)
- "Boldface COUNT words around point by means of Scribe constructs."
- (interactive "p")
- (scribe-envelop-word "b" count))
-
-(defun scribe-italicize-word (count)
- "Italicize COUNT words around point by means of Scribe constructs."
- (interactive "p")
- (scribe-envelop-word "i" count))
-
-(defun scribe-begin ()
- (interactive)
- (insert "\n")
- (forward-char -1)
- (scribe-envelop-word "Begin" 0)
- (re-search-forward (concat "[" scribe-open-parentheses "]")))
-
-(defun scribe-end ()
- (interactive)
- (insert "\n")
- (forward-char -1)
- (scribe-envelop-word "End" 0)
- (re-search-forward (concat "[" scribe-open-parentheses "]")))
-
-(defun scribe-chapter ()
- (interactive)
- (insert "\n")
- (forward-char -1)
- (scribe-envelop-word "Chapter" 0)
- (re-search-forward (concat "[" scribe-open-parentheses "]")))
-
-(defun scribe-section ()
- (interactive)
- (insert "\n")
- (forward-char -1)
- (scribe-envelop-word "Section" 0)
- (re-search-forward (concat "[" scribe-open-parentheses "]")))
-
-(defun scribe-subsection ()
- (interactive)
- (insert "\n")
- (forward-char -1)
- (scribe-envelop-word "SubSection" 0)
- (re-search-forward (concat "[" scribe-open-parentheses "]")))
-
-(defun scribe-bracket-region-be (env min max)
- (interactive "sEnvironment: \nr")
- (save-excursion
- (goto-char max)
- (insert "@end(" env ")\n")
- (goto-char min)
- (insert "@begin(" env ")\n")))
-
-(defun scribe-insert-environment (env)
- (interactive "sEnvironment: ")
- (scribe-bracket-region-be env (point) (point))
- (forward-line 1)
- (insert ?\n)
- (forward-char -1))
-
-(defun scribe-insert-quote (count)
- "Insert \\=`\\=`, \\='\\=' or \" according to preceding character.
-If `scribe-electric-quote' is non-nil, insert \\=`\\=`, \\='\\=' or \" according
-to preceding character. With numeric arg N, always insert N \" characters.
-Else just insert \"."
- (interactive "P")
- (if (or count (not scribe-electric-quote))
- (self-insert-command (prefix-numeric-value count))
- (let (lastfore lastback lastquote)
- (insert
- (cond
- ((= (preceding-char) ?\\) ?\")
- ((bobp) "``")
- (t
- (setq lastfore (save-excursion (and (search-backward
- "``" (- (point) 1000) t)
- (point)))
- lastback (save-excursion (and (search-backward
- "''" (- (point) 1000) t)
- (point)))
- lastquote (save-excursion (and (search-backward
- "\"" (- (point) 100) t)
- (point))))
- (if (not lastquote)
- (cond ((not lastfore) "``")
- ((not lastback) "''")
- ((> lastfore lastback) "''")
- (t "``"))
- (cond ((and (not lastback) (not lastfore)) "\"")
- ((and lastback (not lastfore) (> lastquote lastback)) "\"")
- ((and lastback (not lastfore) (> lastback lastquote)) "``")
- ((and lastfore (not lastback) (> lastquote lastfore)) "\"")
- ((and lastfore (not lastback) (> lastfore lastquote)) "''")
- ((and (> lastquote lastfore) (> lastquote lastback)) "\"")
- ((> lastfore lastback) "''")
- (t "``")))))))))
-
-(defun scribe-parenthesis (count)
- "If scribe-electric-parenthesis is non-nil, insertion of an open-parenthesis
-character inserts the following close parenthesis character if the
-preceding text is of the form @Command."
- (interactive "P")
- (self-insert-command (prefix-numeric-value count))
- (let (at-command paren-char point-save)
- (if (or count (not scribe-electric-parenthesis))
- nil
- (save-excursion
- (forward-char -1)
- (setq point-save (point))
- (skip-chars-backward (concat "^ \n\t\f" scribe-open-parentheses))
- (setq at-command (and (equal (following-char) ?@)
- (/= (point) (1- point-save)))))
- (if (and at-command
- (setq paren-char
- (string-match (regexp-quote
- (char-to-string (preceding-char)))
- scribe-open-parentheses)))
- (save-excursion
- (insert (aref scribe-close-parentheses paren-char)))))))
-
-(provide 'scribe)
-
-;;; scribe.el ends here
diff --git a/lisp/obsolete/spell.el b/lisp/obsolete/spell.el
deleted file mode 100644
index 03047e9aba..0000000000
--- a/lisp/obsolete/spell.el
+++ /dev/null
@@ -1,171 +0,0 @@
-;;; spell.el --- spelling correction interface for Emacs
-
-;; Copyright (C) 1985, 2001-2016 Free Software Foundation, Inc.
-
-;; Maintainer: emacs-devel@gnu.org
-;; Keywords: wp, unix
-;; Obsolete-since: 23.1
-;; (not in obsolete/ directory then, but all functions marked obsolete)
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This mode provides an Emacs interface to the UNIX spell(1) program.
-;; Entry points are `spell-buffer', `spell-word', `spell-region' and
-;; `spell-string'.
-
-;; See also ispell.el for an interface to the ispell program.
-
-;;; Code:
-
-(defgroup spell nil
- "Interface to the UNIX spell(1) program."
- :prefix "spell-"
- :group 'applications)
-
-(defcustom spell-command "spell"
- "Command to run the spell program."
- :type 'string
- :group 'spell)
-
-(defcustom spell-filter nil
- "Filter function to process text before passing it to spell program.
-This function might remove text-processor commands.
-nil means don't alter the text before checking it."
- :type '(choice (const nil) function)
- :group 'spell)
-
-;;;###autoload
-(put 'spell-filter 'risky-local-variable t)
-
-;;;###autoload
-(defun spell-buffer ()
- "Check spelling of every word in the buffer.
-For each incorrect word, you are asked for the correct spelling
-and then put into a query-replace to fix some or all occurrences.
-If you do not want to change a word, just give the same word
-as its \"correct\" spelling; then the query replace is skipped."
- (interactive)
- ;; Don't warn about spell-region being obsolete.
- (with-no-warnings
- (spell-region (point-min) (point-max) "buffer")))
-;;;###autoload
-(make-obsolete 'spell-buffer 'ispell-buffer "23.1")
-
-;;;###autoload
-(defun spell-word ()
- "Check spelling of word at or before point.
-If it is not correct, ask user for the correct spelling
-and `query-replace' the entire buffer to substitute it."
- (interactive)
- (let (beg end spell-filter)
- (save-excursion
- (if (not (looking-at "\\<"))
- (forward-word -1))
- (setq beg (point))
- (forward-word 1)
- (setq end (point)))
- ;; Don't warn about spell-region being obsolete.
- (with-no-warnings
- (spell-region beg end (buffer-substring beg end)))))
-;;;###autoload
-(make-obsolete 'spell-word 'ispell-word "23.1")
-
-;;;###autoload
-(defun spell-region (start end &optional description)
- "Like `spell-buffer' but applies only to region.
-Used in a program, applies from START to END.
-DESCRIPTION is an optional string naming the unit being checked:
-for example, \"word\"."
- (interactive "r")
- (let ((filter spell-filter)
- (buf (get-buffer-create " *temp*")))
- (with-current-buffer buf
- (widen)
- (erase-buffer))
- (message "Checking spelling of %s..." (or description "region"))
- (if (and (null filter) (= ?\n (char-after (1- end))))
- (if (string= "spell" spell-command)
- (call-process-region start end "spell" nil buf)
- (call-process-region start end shell-file-name
- nil buf nil "-c" spell-command))
- (let ((oldbuf (current-buffer)))
- (with-current-buffer buf
- (insert-buffer-substring oldbuf start end)
- (or (bolp) (insert ?\n))
- (if filter (funcall filter))
- (if (string= "spell" spell-command)
- (call-process-region (point-min) (point-max) "spell" t buf)
- (call-process-region (point-min) (point-max) shell-file-name
- t buf nil "-c" spell-command)))))
- (message "Checking spelling of %s...%s"
- (or description "region")
- (if (with-current-buffer buf
- (> (buffer-size) 0))
- "not correct"
- "correct"))
- (let (word newword
- (case-fold-search t)
- (case-replace t))
- (while (with-current-buffer buf
- (> (buffer-size) 0))
- (with-current-buffer buf
- (goto-char (point-min))
- (setq word (downcase
- (buffer-substring (point)
- (progn (end-of-line) (point)))))
- (forward-char 1)
- (delete-region (point-min) (point))
- (setq newword
- (read-string (concat "`" word
- "' not recognized; edit a replacement: ")
- word))
- (flush-lines (concat "^" (regexp-quote word) "$")))
- (if (not (equal word newword))
- (progn
- (goto-char (point-min))
- (query-replace-regexp (concat "\\b" (regexp-quote word) "\\b")
- newword)))))))
-;;;###autoload
-(make-obsolete 'spell-region 'ispell-region "23.1")
-
-;;;###autoload
-(defun spell-string (string)
- "Check spelling of string supplied as argument."
- (interactive "sSpell string: ")
- (with-temp-buffer
- (widen)
- (erase-buffer)
- (insert string "\n")
- (if (string= "spell" spell-command)
- (call-process-region (point-min) (point-max) "spell"
- t t)
- (call-process-region (point-min) (point-max) shell-file-name
- t t nil "-c" spell-command))
- (if (= 0 (buffer-size))
- (message "%s is correct" string)
- (goto-char (point-min))
- (while (search-forward "\n" nil t)
- (replace-match " "))
- (message "%sincorrect" (buffer-substring 1 (point-max))))))
-;;;###autoload
-(make-obsolete 'spell-string "The `spell' package is obsolete - use `ispell'."
- "23.1")
-
-(provide 'spell)
-
-;;; spell.el ends here
diff --git a/lisp/obsolete/swedish.el b/lisp/obsolete/swedish.el
deleted file mode 100644
index 38dce00a45..0000000000
--- a/lisp/obsolete/swedish.el
+++ /dev/null
@@ -1,160 +0,0 @@
-;;; swedish.el --- miscellaneous functions for dealing with Swedish
-
-;; Copyright (C) 1988, 2001-2016 Free Software Foundation, Inc.
-
-;; Author: Howard Gayle
-;; Maintainer: emacs-devel@gnu.org
-;; Keywords: i18n
-;; Obsolete-since: 22.1
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Fixme: Is this actually used? if so, it should be in language,
-;; possibly as a feature property of Swedish, probably defining a
-;; `swascii' coding system.
-
-;;; Code:
-
-;; Written by Howard Gayle. See case-table.el for details.
-
-;; See iso-swed.el for a description of the character set.
-
-(defvar mail-send-hook)
-(defvar news-group-hook-alist)
-(defvar news-inews-hook)
-
-(defvar swedish-re
- "[ \t\n]\\(och\\|att\\|en\\|{r\\|\\[R\\|p}\\|P\\]\\|som\\|det\\|av\\|den\\|f|r\\|F\\\\R\\)[ \t\n.,?!:;'\")}]"
- "Regular expression for common Swedish words.")
-
-(defvar swascii-to-8859-trans
- (let ((string (make-string 256 ? ))
- (i 0))
- (while (< i 256)
- (aset string i i)
- (setq i (1+ i)))
- (aset string ?\[ 196)
- (aset string ?\] 197)
- (aset string ?\\ 214)
- (aset string ?^ 220)
- (aset string ?\{ 228)
- (aset string ?\} 229)
- (aset string ?\` 233)
- (aset string ?\| 246)
- (aset string ?~ 252)
- string)
- "Trans table from SWASCII to 8859.")
-
-; $ is not converted because it almost always means US
-; dollars, not general currency sign. @ is not converted
-; because it is more likely to be an at sign in a mail address
-; than an E with acute accent.
-
-(defun swascii-to-8859-buffer ()
- "Convert characters in buffer from Swedish/Finnish-ascii to ISO 8859/1.
-Works even on read-only buffers. `$' and `@' are not converted."
- (interactive)
- (let ((buffer-read-only nil))
- (translate-region (point-min) (point-max) swascii-to-8859-trans)))
-
-(defun swascii-to-8859-buffer-maybe ()
- "Call swascii-to-8859-buffer if the buffer looks like Swedish-ascii.
-Leaves point just after the word that looks Swedish."
- (interactive)
- (let ((case-fold-search t))
- (if (re-search-forward swedish-re nil t)
- (swascii-to-8859-buffer))))
-
-(setq rmail-show-message-hook 'swascii-to-8859-buffer-maybe)
-
-(setq news-group-hook-alist
- (append '(("^swnet." . swascii-to-8859-buffer-maybe))
- (bound-and-true-p news-group-hook-alist)))
-
-(defvar 8859-to-swascii-trans
- (let ((string (make-string 256 ? ))
- (i 0))
- (while (< i 256)
- (aset string i i)
- (setq i (1+ i)))
- (aset string 164 ?$)
- (aset string 196 ?\[)
- (aset string 197 ?\])
- (aset string 201 ?@)
- (aset string 214 ?\\)
- (aset string 220 ?^)
- (aset string 228 ?\{)
- (aset string 229 ?\})
- (aset string 233 ?\`)
- (aset string 246 ?\|)
- (aset string 252 ?~)
- string)
- "8859 to SWASCII trans table.")
-
-(defun 8859-to-swascii-buffer ()
- "Convert characters in buffer from ISO 8859/1 to Swedish/Finnish-ascii."
- (interactive "*")
- (translate-region (point-min) (point-max) 8859-to-swascii-trans))
-
-(setq mail-send-hook '8859-to-swascii-buffer)
-(setq news-inews-hook '8859-to-swascii-buffer)
-
-;; It's not clear what purpose is served by a separate
-;; Swedish mode that differs from Text mode only in having
-;; a separate abbrev table. Nothing says that the abbrevs you
-;; define in Text mode have to be English!
-
-;(defvar swedish-mode-abbrev-table nil
-; "Abbrev table used while in swedish mode.")
-;(define-abbrev-table 'swedish-mode-abbrev-table ())
-
-;(defun swedish-mode ()
-; "Major mode for editing Swedish text intended for humans to
-;read. Special commands:\\{text-mode-map}
-;Turning on swedish-mode calls the value of the variable
-;text-mode-hook, if that value is non-nil."
-; (interactive)
-; (kill-all-local-variables)
-; (use-local-map text-mode-map)
-; (setq mode-name "Swedish")
-; (setq major-mode 'swedish-mode)
-; (setq local-abbrev-table swedish-mode-abbrev-table)
-; (set-syntax-table text-mode-syntax-table)
-; (run-mode-hooks 'text-mode-hook))
-
-;(defun indented-swedish-mode ()
-; "Major mode for editing indented Swedish text intended for
-;humans to read.\\{indented-text-mode-map}
-;Turning on indented-swedish-mode calls the value of the
-;variable text-mode-hook, if that value is non-nil."
-; (interactive)
-; (kill-all-local-variables)
-; (use-local-map text-mode-map)
-; (define-abbrev-table 'swedish-mode-abbrev-table ())
-; (setq local-abbrev-table swedish-mode-abbrev-table)
-; (set-syntax-table text-mode-syntax-table)
-; (make-local-variable 'indent-line-function)
-; (setq indent-line-function 'indent-relative-maybe)
-; (use-local-map indented-text-mode-map)
-; (setq mode-name "Indented Swedish")
-; (setq major-mode 'indented-swedish-mode)
-; (run-mode-hooks 'text-mode-hook))
-
-(provide 'swedish)
-
-;;; swedish.el ends here
diff --git a/lisp/obsolete/sym-comp.el b/lisp/obsolete/sym-comp.el
deleted file mode 100644
index c2eab2c260..0000000000
--- a/lisp/obsolete/sym-comp.el
+++ /dev/null
@@ -1,237 +0,0 @@
-;;; sym-comp.el --- mode-dependent symbol completion
-
-;; Copyright (C) 2004, 2008-2016 Free Software Foundation, Inc.
-
-;; Author: Dave Love <fx@gnu.org>
-;; Keywords: extensions
-;; URL: http://www.loveshack.ukfsn.org/emacs
-;; Obsolete-since: 23.2
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This defines `symbol-complete', which is a generalization of the
-;; old `lisp-complete-symbol'. It provides the following hooks to
-;; allow major modes to set up completion appropriate for the mode:
-;; `symbol-completion-symbol-function',
-;; `symbol-completion-completions-function',
-;; `symbol-completion-predicate-function',
-;; `symbol-completion-transform-function'. Typically it is only
-;; necessary for a mode to set
-;; `symbol-completion-completions-function' locally and to bind
-;; `symbol-complete' appropriately.
-
-;; It's unfortunate that there doesn't seem to be a good way of
-;; combining this with `complete-symbol'.
-
-;; There is also `symbol-completion-try-complete', for use with
-;; Hippie-exp.
-
-;;; Code:
-
-;;;; Mode-dependent symbol completion.
-
-(defun symbol-completion-symbol ()
- "Default `symbol-completion-symbol-function'.
-Uses `current-word' with the buffer narrowed to the part before
-point."
- (save-restriction
- ;; Narrow in case point is in the middle of a symbol -- we want
- ;; just the preceding part.
- (narrow-to-region (point-min) (point))
- (current-word)))
-
-(defvar symbol-completion-symbol-function 'symbol-completion-symbol
- "Function to return a partial symbol before point for completion.
-The value it returns should be a string (or nil).
-Major modes may set this locally if the default isn't appropriate.
-
-Beware: the length of the string STR returned need to be equal to the length
-of text before point that's subject to completion. Typically, this amounts
-to saying that STR is equal to
-\(buffer-substring (- (point) (length STR)) (point)).")
-
-(defvar symbol-completion-completions-function nil
- "Function to return possible symbol completions.
-It takes an argument which is the string to be completed and
-returns a value suitable for the second argument of
-`try-completion'. This value need not use the argument, i.e. it
-may be all possible completions, such as `obarray' in the case of
-Emacs Lisp.
-
-Major modes may set this locally to allow them to support
-`symbol-complete'. See also `symbol-completion-symbol-function',
-`symbol-completion-predicate-function' and
-`symbol-completion-transform-function'.")
-
-(defvar symbol-completion-predicate-function nil
- "If non-nil, function to return a predicate for selecting symbol completions.
-The function gets two args, the positions of the beginning and
-end of the symbol to be completed.
-
-Major modes may set this locally if the default isn't
-appropriate. This is a function returning a predicate so that
-the predicate can be context-dependent, e.g. to select only
-function names if point is at a function call position. The
-function's args may be useful for determining the context.")
-
-(defvar symbol-completion-transform-function nil
- "If non-nil, function to transform symbols in the symbol-completion buffer.
-E.g., for Lisp, it may annotate the symbol as being a function,
-not a variable.
-
-The function takes the symbol name as argument. If it needs to
-annotate this, it should return a value suitable as an element of
-the list passed to `display-completion-list'.
-
-The predicate being used for selecting completions (from
-`symbol-completion-predicate-function') is available
-dynamically-bound as `symbol-completion-predicate' in case the
-transform needs it.")
-
-(defvar symbol-completion-predicate)
-
-;;;###autoload
-(defun symbol-complete (&optional predicate)
- "Perform completion of the symbol preceding point.
-This is done in a way appropriate to the current major mode,
-perhaps by interrogating an inferior interpreter. Compare
-`complete-symbol'.
-If no characters can be completed, display a list of possible completions.
-Repeating the command at that point scrolls the list.
-
-When called from a program, optional arg PREDICATE is a predicate
-determining which symbols are considered.
-
-This function requires `symbol-completion-completions-function'
-to be set buffer-locally. Variables `symbol-completion-symbol-function',
-`symbol-completion-predicate-function' and
-`symbol-completion-transform-function' are also consulted."
- (interactive)
- ;; Fixme: Punt to `complete-symbol' in this case?
- (unless (functionp symbol-completion-completions-function)
- (error "symbol-completion-completions-function not defined"))
- (let* ((pattern (or (funcall symbol-completion-symbol-function)
- (error "No preceding symbol to complete")))
- ;; FIXME: We assume below that `pattern' holds the text just
- ;; before point. This is a problem in the way
- ;; symbol-completion-symbol-function was defined.
- (predicate (or predicate
- (if symbol-completion-predicate-function
- (funcall symbol-completion-predicate-function
- (- (point) (length pattern))
- (point)))))
- (completions (funcall symbol-completion-completions-function
- pattern))
- ;; In case the transform needs to access it.
- (symbol-completion-predicate predicate)
- (completion-extra-properties
- (if (functionp symbol-completion-transform-function)
- '(:annotation-function
- (lambda (str)
- (car-safe (cdr-safe
- (funcall symbol-completion-transform-function
- str))))))))
- (completion-in-region (- (point) (length pattern)) (point)
- completions predicate)))
-
-(defvar he-search-string)
-(defvar he-tried-table)
-(defvar he-expand-list)
-(declare-function he-init-string "hippie-exp" (beg end))
-(declare-function he-string-member "hippie-exp" (str lst &optional trans-case))
-(declare-function he-substitute-string "hippie-exp" (str &optional trans-case))
-(declare-function he-reset-string "hippie-exp" ())
-
-;;;###autoload
-(defun symbol-completion-try-complete (old)
- "Completion function for use with `hippie-expand'.
-Uses `symbol-completion-symbol-function' and
-`symbol-completion-completions-function'. It is intended to be
-used something like this in a major mode which provides symbol
-completion:
-
- (if (featurep \\='hippie-exp)
- (set (make-local-variable \\='hippie-expand-try-functions-list)
- (cons \\='symbol-completion-try-complete
- hippie-expand-try-functions-list)))"
- (when (and symbol-completion-symbol-function
- symbol-completion-completions-function)
- (unless old
- (let ((symbol (funcall symbol-completion-symbol-function)))
- (he-init-string (- (point) (length symbol)) (point))
- (if (not (he-string-member he-search-string he-tried-table))
- (push he-search-string he-tried-table))
- (setq he-expand-list
- (and symbol
- (funcall symbol-completion-completions-function symbol)))))
- (while (and he-expand-list
- (he-string-member (car he-expand-list) he-tried-table))
- (pop he-expand-list))
- (if he-expand-list
- (progn
- (he-substitute-string (pop he-expand-list))
- t)
- (if old (he-reset-string))
- nil)))
-
-;;; Emacs Lisp symbol completion.
-
-(defun lisp-completion-symbol ()
- "`symbol-completion-symbol-function' for Lisp."
- (let ((end (point))
- (beg (with-syntax-table emacs-lisp-mode-syntax-table
- (save-excursion
- (backward-sexp 1)
- (while (= (char-syntax (following-char)) ?\')
- (forward-char 1))
- (point)))))
- (buffer-substring-no-properties beg end)))
-
-(defun lisp-completion-predicate (beg end)
- "`symbol-completion-predicate-function' for Lisp."
- (save-excursion
- (goto-char beg)
- (if (not (eq (char-before) ?\())
- (lambda (sym) ;why not just nil ? -sm
- ;To avoid interned symbols with
- ;no slots. -- fx
- (or (boundp sym) (fboundp sym)
- (symbol-plist sym)))
- ;; Looks like a funcall position. Let's double check.
- (if (condition-case nil
- (progn (up-list -2) (forward-char 1)
- (eq (char-after) ?\())
- (error nil))
- ;; If the first element of the parent list is an open
- ;; parenthesis we are probably not in a funcall position.
- ;; Maybe a `let' varlist or something.
- nil
- ;; Else, we assume that a function name is expected.
- 'fboundp))))
-
-(defun lisp-symbol-completion-transform ()
- "`symbol-completion-transform-function' for Lisp."
- (lambda (elt)
- (if (and (not (eq 'fboundp symbol-completion-predicate))
- (fboundp (intern elt)))
- (list elt " <f>")
- elt)))
-
-(provide 'sym-comp)
-
-;;; sym-comp.el ends here
diff --git a/lisp/org/ChangeLog.1 b/lisp/org/ChangeLog.1
index 8c118ec7dd..9b6702f01e 100644
--- a/lisp/org/ChangeLog.1
+++ b/lisp/org/ChangeLog.1
@@ -5285,7 +5285,7 @@
* ox-html.el (org-html-link): Don't skip the link description when
it matches the name of the headline it targets.
- * ox-ascii.el (ascii): Remove inexistant function.
+ * ox-ascii.el (ascii): Remove nonexistent function.
* ox-icalendar.el (icalendar): Ignore footnotes.
(org-icalendar--combine-files): Small refactoring.
@@ -9043,7 +9043,7 @@
(pcomplete/org-mode/file-option/email)
(pcomplete/org-mode/file-option/date): Use the new macro to offer
completion over default values for #+OPTIONS, #+TITLE, #+AUTHOR,
- #+EMAIL and #+DATE.
+ #+EMAIL and #+DATE.
* org-agenda.el (org-agenda-write): Fix bug when writing agenda to
an external file while `org-agenda-sticky' is non-nil.
diff --git a/lisp/org/ob-asymptote.el b/lisp/org/ob-asymptote.el
index ddfc8c2bf6..2d27757fe1 100644
--- a/lisp/org/ob-asymptote.el
+++ b/lisp/org/ob-asymptote.el
@@ -45,7 +45,8 @@
(require 'ob)
(eval-when-compile (require 'cl))
-(declare-function orgtbl-to-generic "org-table" (table params))
+(declare-function orgtbl-to-generic "org-table"
+ (table params &optional backend))
(declare-function org-combine-plists "org" (&rest plists))
(defvar org-babel-tangle-lang-exts)
diff --git a/lisp/org/ob-awk.el b/lisp/org/ob-awk.el
index bf46197c47..3d074d8af9 100644
--- a/lisp/org/ob-awk.el
+++ b/lisp/org/ob-awk.el
@@ -36,7 +36,8 @@
(eval-when-compile (require 'cl))
(declare-function org-babel-ref-resolve "ob-ref" (ref))
-(declare-function orgtbl-to-generic "org-table" (table params))
+(declare-function orgtbl-to-generic "org-table"
+ (table params &optional backend))
(defvar org-babel-tangle-lang-exts)
(add-to-list 'org-babel-tangle-lang-exts '("awk" . "awk"))
diff --git a/lisp/org/ob-comint.el b/lisp/org/ob-comint.el
index 325a935760..e5949b6cd8 100644
--- a/lisp/org/ob-comint.el
+++ b/lisp/org/ob-comint.el
@@ -34,8 +34,9 @@
(require 'org-compat)
(require 'comint)
(eval-when-compile (require 'cl))
-(declare-function with-parsed-tramp-file-name "tramp" (filename var &rest body))
-(declare-function tramp-flush-directory-property "tramp" (vec directory))
+(declare-function with-parsed-tramp-file-name "tramp"
+ (filename var &rest body) t)
+(declare-function tramp-flush-directory-property "tramp-cache" (key directory))
(defun org-babel-comint-buffer-livep (buffer)
"Check if BUFFER is a comint buffer with a live process."
diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el
index ff83162a2d..e3d778f73b 100644
--- a/lisp/org/ob-core.el
+++ b/lisp/org/ob-core.el
@@ -37,22 +37,17 @@
(defvar org-babel-call-process-region-original nil)
(defvar org-src-lang-modes)
(defvar org-babel-library-of-babel)
-(declare-function show-all "outline" ())
+(declare-function outline-show-all "outline" ())
(declare-function org-every "org" (pred seq))
(declare-function org-reduce "org" (CL-FUNC CL-SEQ &rest CL-KEYS))
(declare-function org-mark-ring-push "org" (&optional pos buffer))
(declare-function tramp-compat-make-temp-file "tramp-compat"
(filename &optional dir-flag))
-(declare-function tramp-dissect-file-name "tramp" (name &optional nodefault))
-(declare-function tramp-file-name-user "tramp" (vec))
-(declare-function tramp-file-name-host "tramp" (vec))
-(declare-function with-parsed-tramp-file-name "tramp" (filename var &rest body))
(declare-function org-icompleting-read "org" (&rest args))
(declare-function org-edit-src-code "org-src"
- (&optional context code edit-buffer-name quietp))
+ (&optional context code edit-buffer-name))
(declare-function org-edit-src-exit "org-src" (&optional context))
(declare-function org-open-at-point "org" (&optional in-emacs reference-buffer))
-(declare-function org-save-outline-visibility "org-macs" (use-markers &rest body))
(declare-function org-outline-overlay-data "org" (&optional use-markers))
(declare-function org-set-outline-overlay-data "org" (data))
(declare-function org-narrow-to-subtree "org" ())
@@ -73,7 +68,8 @@
(hook function &optional append local))
(declare-function org-table-align "org-table" ())
(declare-function org-table-end "org-table" (&optional table-type))
-(declare-function orgtbl-to-generic "org-table" (table params))
+(declare-function orgtbl-to-generic "org-table"
+ (table params &optional backend))
(declare-function orgtbl-to-orgtbl "org-table" (table params))
(declare-function org-babel-tangle-comment-links "ob-tangle" (&optional info))
(declare-function org-babel-lob-get-info "ob-lob" nil)
@@ -309,6 +305,8 @@ name of the code block."
org-confirm-babel-evaluate)))
(code-block (if ,info (format " %s " ,lang) " "))
(block-name (if ,name (format " (%s) " ,name) " ")))
+ ;; Silence byte-compiler is `body' doesn't use those vars.
+ (ignore noeval query)
,@body)))
(defsubst org-babel-check-evaluate (info)
@@ -546,6 +544,8 @@ multiple blocks are being executed (e.g., in chained execution
through use of the :var header argument) this marker points to
the outer-most code block.")
+(defvar *this*)
+
;;;###autoload
(defun org-babel-execute-src-block (&optional arg info params)
"Execute the current source code block.
@@ -589,7 +589,8 @@ block."
(end-of-line 1) (forward-char 1)
(let ((result (org-babel-read-result)))
(message (replace-regexp-in-string
- "%" "%%" (format "%S" result))) result)))
+ "%" "%%" (format "%S" result)))
+ result)))
((org-babel-confirm-evaluate
(let ((i info)) (setf (nth 2 i) merged-params) i))
(let* ((lang (nth 0 info))
@@ -685,7 +686,7 @@ org-babel-expand-body:lang function."
"\n")))
;;;###autoload
-(defun org-babel-expand-src-block (&optional arg info params)
+(defun org-babel-expand-src-block (&optional _arg info params)
"Expand the current source code block.
Expand according to the source code block's header
arguments and pop open the results in a preview buffer."
@@ -739,8 +740,7 @@ arguments and pop open the results in a preview buffer."
(let ((results (copy-sequence original)))
(dolist (new-list others)
(dolist (arg-pair new-list)
- (let ((header (car arg-pair))
- (args (cdr arg-pair)))
+ (let ((header (car arg-pair)))
(setq results
(cons arg-pair (org-remove-if
(lambda (pair) (equal header (car pair)))
@@ -827,7 +827,7 @@ arguments and pop open the results in a preview buffer."
(add-hook 'org-tab-first-hook 'org-babel-header-arg-expand)
;;;###autoload
-(defun org-babel-load-in-session (&optional arg info)
+(defun org-babel-load-in-session (&optional _arg info)
"Load the body of the current source-code block.
Evaluate the header arguments for the source block before
entering the session. After loading the body this pops open the
@@ -896,7 +896,7 @@ with a prefix argument then this is passed on to
(defvar org-src-window-setup)
;;;###autoload
-(defun org-babel-switch-to-session-with-code (&optional arg info)
+(defun org-babel-switch-to-session-with-code (&optional arg _info)
"Switch to code buffer and display session."
(interactive "P")
(let ((swap-windows
@@ -1021,7 +1021,13 @@ end-body --------- point at the end of the body"
(body (match-string 5))
(beg-body (match-beginning 5))
(end-body (match-end 5)))
- ,@body
+ ;; Silence byte-compiler in case `body' doesn't use all
+ ;; those variables.
+ (ignore full-block beg-block end-block lang
+ beg-lang end-lang switches beg-switches
+ end-switches header-args beg-header-args
+ end-header-args body beg-body end-body)
+ ,@body
(goto-char end-block)))))
(unless visited-p (kill-buffer to-be-removed))
(goto-char point))))
@@ -1532,7 +1538,7 @@ Note: this function removes any hlines in TABLE."
(rownames (funcall (lambda ()
(let ((tp table))
(mapcar
- (lambda (row)
+ (lambda (_row)
(prog1
(pop (car tp))
(setq tp (cdr tp))))
@@ -1686,7 +1692,7 @@ NAME, or nil if no such block exists. Set match data according to
org-babel-named-src-block-regexp."
(save-excursion
(let ((case-fold-search t)
- (regexp (org-babel-named-src-block-regexp-for-name name)) msg)
+ (regexp (org-babel-named-src-block-regexp-for-name name)))
(goto-char (point-min))
(when (or (re-search-forward regexp nil t)
(re-search-backward regexp nil t))
@@ -1724,7 +1730,8 @@ buffer or nil if no such result exists."
(catch 'is-a-code-block
(when (re-search-forward
(concat org-babel-result-regexp
- "[ \t]" (regexp-quote name) "[ \t]*[\n\f\v\r]") nil t)
+ "[ \t]" (regexp-quote name) "[ \t]*[\n\f\v\r]")
+ nil t)
(when (and (string= "name" (downcase (match-string 1)))
(or (beginning-of-line 1)
(looking-at org-babel-src-block-regexp)
@@ -2658,7 +2665,7 @@ of the string."
(start end program &optional delete buffer display &rest args)
"Use Tramp to handle `call-process-region'.
Fixes a bug in `tramp-handle-call-process-region'."
- (if (and (featurep 'tramp) (file-remote-p default-directory))
+ (if (file-remote-p default-directory)
(let ((tmpfile (tramp-compat-make-temp-file "")))
(write-region start end tmpfile)
(when delete (delete-region start end))
@@ -2675,11 +2682,7 @@ Fixes a bug in `tramp-handle-call-process-region'."
(defun org-babel-local-file-name (file)
"Return the local name component of FILE."
- (if (file-remote-p file)
- (let (localname)
- (with-parsed-tramp-file-name file nil
- localname))
- file))
+ (or (file-remote-p file 'localname) file))
(defun org-babel-process-file-name (name &optional no-quote-p)
"Prepare NAME to be used in an external process.
diff --git a/lisp/org/ob-emacs-lisp.el b/lisp/org/ob-emacs-lisp.el
index c0480f4bde..ae4d703e83 100644
--- a/lisp/org/ob-emacs-lisp.el
+++ b/lisp/org/ob-emacs-lisp.el
@@ -32,7 +32,8 @@
'((:hlines . "yes") (:colnames . "no"))
"Default arguments for evaluating an emacs-lisp source block.")
-(declare-function orgtbl-to-generic "org-table" (table params))
+(declare-function orgtbl-to-generic "org-table"
+ (table params &optional backend))
(defun org-babel-expand-body:emacs-lisp (body params)
"Expand BODY according to PARAMS, return the expanded body."
diff --git a/lisp/org/ob-exp.el b/lisp/org/ob-exp.el
index c04e130731..dbe7ba7b31 100644
--- a/lisp/org/ob-exp.el
+++ b/lisp/org/ob-exp.el
@@ -45,7 +45,7 @@
(declare-function org-fill-template "org" (template alist))
(declare-function org-split-string "org" (string &optional separators))
(declare-function org-element-at-point "org-element" (&optional keep-trail))
-(declare-function org-element-context "org-element" ())
+(declare-function org-element-context "org-element" (&optional element))
(declare-function org-element-property "org-element" (property element))
(declare-function org-element-type "org-element" (element))
(declare-function org-escape-code-in-string "org-src" (s))
diff --git a/lisp/org/ob-gnuplot.el b/lisp/org/ob-gnuplot.el
index 0dcb1ba617..abf45af852 100644
--- a/lisp/org/ob-gnuplot.el
+++ b/lisp/org/ob-gnuplot.el
@@ -41,9 +41,10 @@
(require 'ob)
(eval-when-compile (require 'cl))
-(declare-function org-time-string-to-time "org" (s))
+(declare-function org-time-string-to-time "org" (s &optional buffer pos))
(declare-function org-combine-plists "org" (&rest plists))
-(declare-function orgtbl-to-generic "org-table" (table params))
+(declare-function orgtbl-to-generic "org-table"
+ (table params &optional backend))
(declare-function gnuplot-mode "ext:gnuplot-mode" ())
(declare-function gnuplot-send-string-to-gnuplot "ext:gnuplot-mode" (str txt))
(declare-function gnuplot-send-buffer-to-gnuplot "ext:gnuplot-mode" ())
diff --git a/lisp/org/ob-haskell.el b/lisp/org/ob-haskell.el
index ec9a5113f7..fc1b4d781a 100644
--- a/lisp/org/ob-haskell.el
+++ b/lisp/org/ob-haskell.el
@@ -150,7 +150,8 @@ specifying a variable of the same value."
(defvar org-export-copy-to-kill-ring)
(declare-function org-export-to-file "ox"
(backend file
- &optional async subtreep visible-only body-only ext-plist))
+ &optional async subtreep visible-only body-only
+ ext-plist post-process))
(defun org-babel-haskell-export-to-lhs (&optional arg)
"Export to a .lhs file with all haskell code blocks escaped.
When called with a prefix argument the resulting
diff --git a/lisp/org/ob-latex.el b/lisp/org/ob-latex.el
index 1f5e2979f9..c08717d7c7 100644
--- a/lisp/org/ob-latex.el
+++ b/lisp/org/ob-latex.el
@@ -32,11 +32,12 @@
;;; Code:
(require 'ob)
-(declare-function org-create-formula-image "org" (string tofile options buffer))
+(declare-function org-create-formula-image "org"
+ (string tofile options buffer &optional type))
(declare-function org-splice-latex-header "org"
(tpl def-pkg pkg snippets-p &optional extra))
(declare-function org-latex-guess-inputenc "ox-latex" (header))
-(declare-function org-latex-compile "ox-latex" (file))
+(declare-function org-latex-compile "ox-latex" (texfile &optional snippet))
(defvar org-babel-tangle-lang-exts)
(add-to-list 'org-babel-tangle-lang-exts '("latex" . "tex"))
diff --git a/lisp/org/ob-python.el b/lisp/org/ob-python.el
index ed377e530a..2bfbd4e0d0 100644
--- a/lisp/org/ob-python.el
+++ b/lisp/org/ob-python.el
@@ -33,7 +33,7 @@
(declare-function org-remove-indentation "org" )
(declare-function py-shell "ext:python-mode" (&optional argprompt))
(declare-function py-toggle-shells "ext:python-mode" (arg))
-(declare-function run-python "ext:python" (cmd &optional dedicated show))
+(declare-function run-python "ext:python" (&optional cmd dedicated show))
(defvar org-babel-tangle-lang-exts)
(add-to-list 'org-babel-tangle-lang-exts '("python" . "py"))
diff --git a/lisp/org/ob-scheme.el b/lisp/org/ob-scheme.el
index 83baf9c5e7..685fa01b63 100644
--- a/lisp/org/ob-scheme.el
+++ b/lisp/org/ob-scheme.el
@@ -45,10 +45,11 @@
(defvar geiser-default-implementation) ; Defined in geiser-impl.el
(defvar geiser-active-implementations) ; Defined in geiser-impl.el
-(declare-function run-geiser "geiser-repl" (impl))
-(declare-function geiser-mode "geiser-mode" ())
-(declare-function geiser-eval-region "geiser-mode" (start end &optional and-go raw nomsg))
-(declare-function geiser-repl-exit "geiser-repl" (&optional arg))
+(declare-function run-geiser "ext:geiser-repl" (impl))
+(declare-function geiser-mode "ext:geiser-mode" ())
+(declare-function geiser-eval-region "ext:geiser-mode"
+ (start end &optional and-go raw nomsg))
+(declare-function geiser-repl-exit "ext:geiser-repl" (&optional arg))
(defvar org-babel-default-header-args:scheme '()
"Default header arguments for scheme code blocks.")
diff --git a/lisp/org/ob-sh.el b/lisp/org/ob-sh.el
index 5f234b5edb..b6f0404bbc 100644
--- a/lisp/org/ob-sh.el
+++ b/lisp/org/ob-sh.el
@@ -30,11 +30,10 @@
(require 'shell)
(eval-when-compile (require 'cl))
-(declare-function org-babel-comint-in-buffer "ob-comint" (buffer &rest body))
(declare-function org-babel-comint-wait-for-output "ob-comint" (buffer))
(declare-function org-babel-comint-buffer-livep "ob-comint" (buffer))
-(declare-function org-babel-comint-with-output "ob-comint" (meta &rest body))
-(declare-function orgtbl-to-generic "org-table" (table params))
+(declare-function orgtbl-to-generic "org-table"
+ (table params &optional backend))
(defvar org-babel-default-header-args:sh '())
diff --git a/lisp/org/ob-tangle.el b/lisp/org/ob-tangle.el
index bfd5a062fc..2e42d94831 100644
--- a/lisp/org/ob-tangle.el
+++ b/lisp/org/ob-tangle.el
@@ -31,13 +31,13 @@
(require 'cl))
(declare-function org-edit-special "org" (&optional arg))
-(declare-function org-link-escape "org" (text &optional table))
+(declare-function org-link-escape "org" (text &optional table merge))
(declare-function org-store-link "org" (arg))
(declare-function org-open-link-from-string "org" (s &optional arg reference-buffer))
(declare-function org-heading-components "org" ())
-(declare-function org-back-to-heading "org" (invisible-ok))
+(declare-function org-back-to-heading "org" (&optional invisible-ok))
(declare-function org-fill-template "org" (template alist))
-(declare-function org-babel-update-block-body "org" (new-body))
+(declare-function org-babel-update-block-body "ob-core" (new-body))
(declare-function make-directory "files" (dir &optional parents))
(defcustom org-babel-tangle-lang-exts
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index e77b53aadc..19f9a822bd 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -52,7 +52,7 @@
(declare-function diary-add-to-list "diary-lib"
(date string specifier &optional marker globcolor literal))
-(declare-function calendar-absolute-from-iso "cal-iso" (date))
+(declare-function calendar-iso-to-absolute "cal-iso" (date))
(declare-function calendar-astro-date-string "cal-julian" (&optional date))
(declare-function calendar-bahai-date-string "cal-bahai" (&optional date))
(declare-function calendar-chinese-date-string "cal-china" (&optional date))
@@ -3903,7 +3903,7 @@ functions do."
(defvar org-agenda-markers nil
"List of all currently active markers created by `org-agenda'.")
-(defvar org-agenda-last-marker-time (org-float-time)
+(defvar org-agenda-last-marker-time (float-time)
"Creation time of the last agenda marker.")
(defun org-agenda-new-marker (&optional pos)
@@ -3911,7 +3911,7 @@ functions do."
Org-mode keeps a list of these markers and resets them when they are
no longer in use."
(let ((m (copy-marker (or pos (point)))))
- (setq org-agenda-last-marker-time (org-float-time))
+ (setq org-agenda-last-marker-time (float-time))
(if org-agenda-buffer
(with-current-buffer org-agenda-buffer
(push m org-agenda-markers))
@@ -5231,7 +5231,7 @@ So the example above may also be written as
The function expects the lisp variables `entry' and `date' to be provided
by the caller, because this is how the calendar works. Don't use this
function from a program - use `org-agenda-get-day-entries' instead."
- (when (> (- (org-float-time)
+ (when (> (- (float-time)
org-agenda-last-marker-time)
5)
;; I am not sure if this works with sticky agendas, because the marker
@@ -5243,7 +5243,7 @@ function from a program - use `org-agenda-get-day-entries' instead."
(let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry))
(list entry)
(org-agenda-files t)))
- (time (org-float-time))
+ (time (float-time))
file rtn results)
(when (or (not org-diary-last-run-time)
(> (- time
@@ -5912,9 +5912,9 @@ See also the user option `org-agenda-clock-consistency-checks'."
(throw 'next t))
(setq ts (match-string 1)
te (match-string 3)
- ts (org-float-time
+ ts (float-time
(apply 'encode-time (org-parse-time-string ts)))
- te (org-float-time
+ te (float-time
(apply 'encode-time (org-parse-time-string te)))
dt (- te ts))))
(cond
diff --git a/lisp/org/org-bibtex.el b/lisp/org/org-bibtex.el
index 92e5d4470e..2e849d2e0f 100644
--- a/lisp/org/org-bibtex.el
+++ b/lisp/org/org-bibtex.el
@@ -120,7 +120,7 @@
(declare-function bibtex-generate-autokey "bibtex" ())
(declare-function bibtex-parse-entry "bibtex" (&optional content))
(declare-function bibtex-url "bibtex" (&optional pos no-browse))
-(declare-function org-babel-trim "ob" (string &optional regexp))
+(declare-function org-babel-trim "ob-core" (string &optional regexp))
;;; Bibtex data
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index 9374f5fc3a..7b55153b5f 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -32,7 +32,7 @@
(require 'cl))
(require 'org)
-(declare-function calendar-absolute-from-iso "cal-iso" (&optional date))
+(declare-function calendar-iso-to-absolute "cal-iso" (date))
(declare-function notifications-notify "notifications" (&rest params))
(declare-function org-pop-to-buffer-same-window "org-compat" (&optional buffer-or-name norecord label))
(declare-function org-refresh-properties "org" (dprop tprop))
@@ -658,8 +658,8 @@ If not, show simply the clocked time like 01:50."
The time returned includes the time spent on this task in
previous clocking intervals."
(let ((currently-clocked-time
- (floor (- (org-float-time)
- (org-float-time org-clock-start-time)) 60)))
+ (floor (- (float-time)
+ (float-time org-clock-start-time)) 60)))
(+ currently-clocked-time (or org-clock-total-time 0))))
(defun org-clock-modify-effort-estimate (&optional value)
@@ -978,7 +978,7 @@ to be CLOCKED OUT."))))
nil 45)))
(and (not (memq char-pressed '(?i ?q))) char-pressed)))))
(default
- (floor (/ (org-float-time
+ (floor (/ (float-time
(time-subtract (current-time) last-valid)) 60)))
(keep
(and (memq ch '(?k ?K))
@@ -987,8 +987,8 @@ to be CLOCKED OUT."))))
(and (memq ch '(?g ?G))
(read-number "Got back how many minutes ago? " default)))
(subtractp (memq ch '(?s ?S)))
- (barely-started-p (< (- (org-float-time last-valid)
- (org-float-time (cdr clock))) 45))
+ (barely-started-p (< (- (float-time last-valid)
+ (float-time (cdr clock))) 45))
(start-over (and subtractp barely-started-p)))
(cond
((memq ch '(?j ?J))
@@ -1047,8 +1047,8 @@ If `only-dangling-p' is non-nil, only ask to resolve dangling
(lambda (clock)
(format
"Dangling clock started %d mins ago"
- (floor (- (org-float-time)
- (org-float-time (cdr clock)))
+ (floor (- (float-time)
+ (float-time (cdr clock)))
60)))))
(or last-valid
(cdr clock)))))))))))
@@ -1057,7 +1057,7 @@ If `only-dangling-p' is non-nil, only ask to resolve dangling
"Return the current Emacs idle time in seconds, or nil if not idle."
(let ((idle-time (current-idle-time)))
(if idle-time
- (org-float-time idle-time)
+ (float-time idle-time)
0)))
(defun org-mac-idle-seconds ()
@@ -1109,7 +1109,7 @@ so long."
(function
(lambda (clock)
(format "Clocked in & idle for %.1f mins"
- (/ (org-float-time
+ (/ (float-time
(time-subtract (current-time)
org-clock-user-idle-start))
60.0))))
@@ -1271,9 +1271,9 @@ make this the default behavior.)"
(y-or-n-p
(format
"You stopped another clock %d mins ago; start this one from then? "
- (/ (- (org-float-time
+ (/ (- (float-time
(org-current-time org-clock-rounding-minutes t))
- (org-float-time leftover)) 60)))
+ (float-time leftover)) 60)))
leftover)
start-time
(org-current-time org-clock-rounding-minutes t)))
@@ -1517,8 +1517,8 @@ to, overriding the existing value of `org-clock-out-switch-to-state'."
(delete-region (point) (point-at-eol))
(insert "--")
(setq te (org-insert-time-stamp (or at-time now) 'with-hm 'inactive))
- (setq s (- (org-float-time (apply 'encode-time (org-parse-time-string te)))
- (org-float-time (apply 'encode-time (org-parse-time-string ts))))
+ (setq s (- (float-time (apply 'encode-time (org-parse-time-string te)))
+ (float-time (apply 'encode-time (org-parse-time-string ts))))
h (floor (/ s 3600))
s (- s (* 3600 h))
m (floor (/ s 60))
@@ -1630,13 +1630,13 @@ Optional argument N tells to change by that many units."
(let ((ts (if updatets1 ts2 ts1))
(begts (if updatets1 begts1 begts2)))
(setq tdiff
- (subtract-time
+ (time-subtract
(org-time-string-to-time org-last-changed-timestamp)
(org-time-string-to-time ts)))
(save-excursion
(goto-char begts)
(org-timestamp-change
- (round (/ (org-float-time tdiff)
+ (round (/ (float-time tdiff)
(cond ((eq org-ts-what 'minute) 60)
((eq org-ts-what 'hour) 3600)
((eq org-ts-what 'day) (* 24 3600))
@@ -1739,8 +1739,8 @@ PROPNAME lets you set a custom text property instead of :org-clock-minutes."
time)
(if (stringp tstart) (setq tstart (org-time-string-to-seconds tstart)))
(if (stringp tend) (setq tend (org-time-string-to-seconds tend)))
- (if (consp tstart) (setq tstart (org-float-time tstart)))
- (if (consp tend) (setq tend (org-float-time tend)))
+ (if (consp tstart) (setq tstart (float-time tstart)))
+ (if (consp tend) (setq tend (float-time tend)))
(remove-text-properties (point-min) (point-max)
`(,(or propname :org-clock-minutes) t
:org-clock-force-headline-inclusion t))
@@ -1752,9 +1752,9 @@ PROPNAME lets you set a custom text property instead of :org-clock-minutes."
;; Two time stamps
(setq ts (match-string 2)
te (match-string 3)
- ts (org-float-time
+ ts (float-time
(apply 'encode-time (org-parse-time-string ts)))
- te (org-float-time
+ te (float-time
(apply 'encode-time (org-parse-time-string te)))
ts (if tstart (max ts tstart) ts)
te (if tend (min te tend) te)
@@ -1771,10 +1771,10 @@ PROPNAME lets you set a custom text property instead of :org-clock-minutes."
(equal (marker-position org-clock-hd-marker) (point))
tstart
tend
- (>= (org-float-time org-clock-start-time) tstart)
- (<= (org-float-time org-clock-start-time) tend))
- (let ((time (floor (- (org-float-time)
- (org-float-time org-clock-start-time)) 60)))
+ (>= (float-time org-clock-start-time) tstart)
+ (<= (float-time org-clock-start-time) tend))
+ (let ((time (floor (- (float-time)
+ (float-time org-clock-start-time)) 60)))
(setq t1 (+ t1 time))))
(let* ((headline-forced
(get-text-property (point)
@@ -2584,17 +2584,17 @@ from the dynamic block definition."
((numberp ts)
;; If ts is a number, it's an absolute day number from org-agenda.
(destructuring-bind (month day year) (calendar-gregorian-from-absolute ts)
- (setq ts (org-float-time (encode-time 0 0 0 day month year)))))
+ (setq ts (float-time (encode-time 0 0 0 day month year)))))
(ts
- (setq ts (org-float-time
+ (setq ts (float-time
(apply 'encode-time (org-parse-time-string ts))))))
(cond
((numberp te)
;; Likewise for te.
(destructuring-bind (month day year) (calendar-gregorian-from-absolute te)
- (setq te (org-float-time (encode-time 0 0 0 day month year)))))
+ (setq te (float-time (encode-time 0 0 0 day month year)))))
(te
- (setq te (org-float-time
+ (setq te (float-time
(apply 'encode-time (org-parse-time-string te))))))
(setq tsb
(if (eq step0 'week)
@@ -2788,9 +2788,9 @@ Otherwise, return nil."
(end-of-line 1)
(setq ts (match-string 1)
te (match-string 3))
- (setq s (- (org-float-time
+ (setq s (- (float-time
(apply 'encode-time (org-parse-time-string te)))
- (org-float-time
+ (float-time
(apply 'encode-time (org-parse-time-string ts))))
neg (< s 0)
s (abs s)
diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el
index fdf24b265d..c089866af8 100644
--- a/lisp/org/org-colview.el
+++ b/lisp/org/org-colview.el
@@ -31,7 +31,7 @@
(eval-when-compile (require 'cl))
(require 'org)
-(declare-function org-agenda-redo "org-agenda" ())
+(declare-function org-agenda-redo "org-agenda" (&optional all))
(declare-function org-agenda-do-context-action "org-agenda" ())
(declare-function org-clock-sum-today "org-clock" (&optional headline-filter))
diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el
index cf6aafc985..2e35c0982e 100644
--- a/lisp/org/org-compat.el
+++ b/lisp/org/org-compat.el
@@ -34,8 +34,6 @@
(require 'org-macs)
-(declare-function w32-focus-frame "term/w32-win" (frame))
-
;; The following constant is for backward compatibility. We do not use
;; it in org-mode, because the Byte compiler evaluates (featurep 'xemacs)
;; at compilation time and can therefore optimize code better.
@@ -411,8 +409,7 @@ Pass BUFFER to the XEmacs version of `move-to-column'."
(when focus-follows-mouse
(set-mouse-position frame (1- (frame-width frame)) 0)))))
-(defalias 'org-float-time
- (if (featurep 'xemacs) 'time-to-seconds 'float-time))
+(define-obsolete-function-alias 'org-float-time 'float-time "25.2")
;; `user-error' is only available from 24.2.50 on
(unless (fboundp 'user-error)
diff --git a/lisp/org/org-feed.el b/lisp/org/org-feed.el
index 6d6f996954..38f4a9fac4 100644
--- a/lisp/org/org-feed.el
+++ b/lisp/org/org-feed.el
@@ -93,7 +93,8 @@
(require 'org)
(require 'sha1)
-(declare-function url-retrieve-synchronously "url" (url))
+(declare-function url-retrieve-synchronously "url"
+ (url &optional silent inhibit-cookies timeout))
(declare-function xml-node-children "xml" (node))
(declare-function xml-get-children "xml" (node child-name))
(declare-function xml-get-attribute "xml" (node attribute))
diff --git a/lisp/org/org-gnus.el b/lisp/org/org-gnus.el
index ed6d11d551..fd7dd0bcb4 100644
--- a/lisp/org/org-gnus.el
+++ b/lisp/org/org-gnus.el
@@ -38,7 +38,6 @@
;; Declare external functions and variables
(declare-function message-fetch-field "message" (header &optional not-all))
(declare-function message-narrow-to-head-1 "message" nil)
-(declare-function nnimap-group-overview-filename "nnimap" (group server))
;; The following line suppresses a compiler warning stemming from gnus-sum.el
(declare-function gnus-summary-last-subject "gnus-sum" nil)
;; Customization variables
@@ -78,6 +77,8 @@ this variable to t."
;; Implementation
+;; FIXME: nnimap-group-overview-filename was removed from Gnus in
+;; September 2010. Perhaps remove this function?
(defun org-gnus-nnimap-cached-article-number (group server message-id)
"Return cached article number (uid) of message in GROUP on SERVER.
MESSAGE-ID is the message-id header field that identifies the
diff --git a/lisp/org/org-info.el b/lisp/org/org-info.el
index 8eb6955080..4ee5ee4e2e 100644
--- a/lisp/org/org-info.el
+++ b/lisp/org/org-info.el
@@ -34,8 +34,8 @@
;; Declare external functions and variables
-(declare-function Info-find-node "info" (filename nodename
- &optional no-going-back))
+(declare-function Info-find-node "info"
+ (filename nodename &optional no-going-back strict-case))
(defvar Info-current-file)
(defvar Info-current-node)
diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el
index 2c1e3775b0..a84c003908 100644
--- a/lisp/org/org-list.el
+++ b/lisp/org/org-list.el
@@ -115,7 +115,7 @@
(declare-function org-level-increment "org" ())
(declare-function org-narrow-to-subtree "org" ())
(declare-function org-at-heading-p "org" (&optional invisible-ok))
-(declare-function org-previous-line-empty-p "org" ())
+(declare-function org-previous-line-empty-p "org" (&optional next))
(declare-function org-remove-if "org" (predicate seq))
(declare-function org-reduced-level "org" (L))
(declare-function org-show-subtree "org" ())
@@ -2884,7 +2884,7 @@ ignores hidden links."
(save-excursion (re-search-forward org-ts-regexp-both
(point-at-eol) t)))
(org-time-string-to-seconds (match-string 0)))
- (t (org-float-time now))))
+ (t (float-time now))))
((= dcst ?x) (or (and (stringp (match-string 1))
(match-string 1))
""))
diff --git a/lisp/org/org-macro.el b/lisp/org/org-macro.el
index d8e2fd3534..f6bb6b3d3a 100644
--- a/lisp/org/org-macro.el
+++ b/lisp/org/org-macro.el
@@ -48,7 +48,6 @@
(declare-function org-remove-double-quotes "org" (s))
(declare-function org-mode "org" ())
(declare-function org-file-contents "org" (file &optional noerror))
-(declare-function org-with-wide-buffer "org-macs" (&rest body))
;;; Variables
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el
index 4ffa547b7f..a74a5a0ce4 100644
--- a/lisp/org/org-macs.el
+++ b/lisp/org/org-macs.el
@@ -45,7 +45,8 @@
(string (decode-char 'ucs c)))))
(declare-function org-add-props "org-compat" (string plist &rest props))
-(declare-function org-string-match-p "org-compat" (&rest args))
+(declare-function org-string-match-p "org-compat"
+ (regexp string &optional start))
(defmacro org-with-gensyms (symbols &rest body)
(declare (debug (sexp body)) (indent 1))
diff --git a/lisp/org/org-pcomplete.el b/lisp/org/org-pcomplete.el
index 26799967af..09e637a49a 100644
--- a/lisp/org/org-pcomplete.el
+++ b/lisp/org/org-pcomplete.el
@@ -258,7 +258,7 @@ When completing for #+STARTUP, for example, this function returns
(buffer-name (buffer-base-buffer)))))))
-(declare-function org-export-backend-options "org-export" (cl-x))
+(declare-function org-export-backend-options "ox" (cl-x) t)
(defun pcomplete/org-mode/file-option/options ()
"Complete arguments for the #+OPTIONS file option."
(while (pcomplete-here
diff --git a/lisp/org/org-protocol.el b/lisp/org/org-protocol.el
index 2f2c54b6af..667b7482d0 100644
--- a/lisp/org/org-protocol.el
+++ b/lisp/org/org-protocol.el
@@ -119,7 +119,7 @@
(eval-when-compile
(require 'cl))
-(declare-function org-publish-get-project-from-filename "org-publish"
+(declare-function org-publish-get-project-from-filename "ox-publish"
(filename &optional up))
(declare-function server-edit "server" (&optional arg))
diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el
index 8e06aaa04c..f0d393f8e8 100644
--- a/lisp/org/org-src.el
+++ b/lisp/org/org-src.el
@@ -232,6 +232,8 @@ There is a mode hook, and keybindings for `org-edit-src-exit' and
`org-edit-src-save'")
(defvar org-edit-src-code-timer nil)
+(defvar org-inhibit-startup)
+
(defun org-edit-src-code (&optional context code edit-buffer-name)
"Edit the source CODE block at point.
The code is copied to a separate buffer and the appropriate mode
@@ -265,7 +267,7 @@ the display of windows containing the Org buffer and the code buffer."
;; just one empty line, i.e. beg == end.
(end (copy-marker (make-marker) t))
(allow-write-back-p (null code))
- block-nindent total-nindent ovl lang lang-f single lfmt buffer msg
+ block-nindent total-nindent ovl lang lang-f single buffer msg
begline markline markcol line col transmitted-variables)
(setq beg (move-marker beg (nth 0 info))
end (move-marker end (nth 1 info))
@@ -471,7 +473,6 @@ the fragment in the Org-mode buffer."
(org-mode-p (derived-mode-p 'org-mode))
(beg (make-marker))
(end (make-marker))
- (preserve-indentation org-src-preserve-indentation)
block-nindent ovl beg1 end1 code begline buffer)
(beginning-of-line 1)
(if (looking-at "[ \t]*[^:\n \t]")
@@ -928,6 +929,8 @@ fontification of code blocks see `org-src-fontify-block' and
'(font-lock-fontified t fontified t font-lock-multiline t))
(set-buffer-modified-p modified)))))
+(defvar org-src-fontify-natively)
+
(defun org-src-fontify-block ()
"Fontify code block at point."
(interactive)
diff --git a/lisp/org/org-timer.el b/lisp/org/org-timer.el
index 667f6021b0..079bed42d0 100644
--- a/lisp/org/org-timer.el
+++ b/lisp/org/org-timer.el
@@ -123,7 +123,7 @@ the region 0:00:00."
(setq delta (org-timer-hms-to-secs (org-timer-fix-incomplete s)))))
(setq org-timer-start-time
(seconds-to-time
- (- (org-float-time) delta))))
+ (- (float-time) delta))))
(org-timer-set-mode-line 'on)
(message "Timer start time set to %s, current value is %s"
(format-time-string "%T" org-timer-start-time)
@@ -142,9 +142,9 @@ With prefix arg STOP, stop it entirely."
(setq org-timer-start-time
(seconds-to-time
(-
- (org-float-time)
- (- (org-float-time org-timer-pause-time)
- (org-float-time org-timer-start-time))))
+ (float-time)
+ (- (float-time org-timer-pause-time)
+ (float-time org-timer-start-time))))
org-timer-pause-time nil)
(org-timer-set-mode-line 'on)
(run-hooks 'org-timer-continue-hook)
@@ -194,10 +194,10 @@ it in the buffer."
(defvar org-timer-timer-is-countdown nil)
(defun org-timer-seconds ()
(if org-timer-timer-is-countdown
- (- (org-float-time org-timer-start-time)
- (org-float-time))
- (- (org-float-time org-timer-pause-time)
- (org-float-time org-timer-start-time))))
+ (- (float-time org-timer-start-time)
+ (float-time))
+ (- (float-time org-timer-pause-time)
+ (float-time org-timer-start-time))))
;;;###autoload
(defun org-timer-change-times-in-region (beg end delta)
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 13e4a22213..30ef5e83bd 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -127,7 +127,7 @@ Stars are put in group 1 and the trimmed body in group 2.")
(declare-function orgtbl-mode "org-table" (&optional arg))
(declare-function org-clock-out "org-clock" (&optional switch-to-state fail-quietly at-time))
-(declare-function org-beamer-mode "ox-beamer" ())
+(declare-function org-beamer-mode "ox-beamer" (&optional prefix) t)
(declare-function org-table-edit-field "org-table" (arg))
(declare-function org-table-justify-field-maybe "org-table" (&optional new))
(declare-function org-table-set-constants "org-table" ())
@@ -135,7 +135,8 @@ Stars are put in group 1 and the trimmed body in group 2.")
(declare-function org-id-get-create "org-id" (&optional force))
(declare-function org-id-find-id-file "org-id" (id))
(declare-function org-tags-view "org-agenda" (&optional todo-only match))
-(declare-function org-agenda-list "org-agenda" (&optional arg start-day span))
+(declare-function org-agenda-list "org-agenda"
+ (&optional arg start-day span with-hour))
(declare-function org-agenda-redo "org-agenda" (&optional all))
(declare-function org-table-align "org-table" ())
(declare-function org-table-begin "org-table" (&optional table-type))
@@ -154,7 +155,8 @@ Stars are put in group 1 and the trimmed body in group 2.")
(declare-function org-element-interpret-data "org-element"
(data &optional parent))
(declare-function org-element-map "org-element"
- (data types fun &optional info first-match no-recursion))
+ (data types fun &optional
+ info first-match no-recursion with-affiliated))
(declare-function org-element-nested-p "org-element" (elem-a elem-b))
(declare-function org-element-parse-buffer "org-element"
(&optional granularity visible-only))
@@ -448,7 +450,8 @@ For export specific modules, see also `org-export-backends'."
(defvar org-export--registered-backends) ; From ox.el.
(declare-function org-export-derived-backend-p "ox" (backend &rest backends))
-(declare-function org-export-backend-name "ox" (backend))
+(declare-function org-export-backend-name "ox" (backend) t)
+(declare-function org-export-backend-options "ox" (cl-x) t)
(defcustom org-export-backends '(ascii html icalendar latex)
"List of export back-ends that should be always available.
@@ -4213,7 +4216,7 @@ Normal means, no org-mode-specific context."
(defvar mark-active)
;; Various packages
-(declare-function calendar-absolute-from-iso "cal-iso" (date))
+(declare-function calendar-iso-to-absolute "cal-iso" (date))
(declare-function calendar-forward-day "cal-move" (arg))
(declare-function calendar-goto-date "cal-move" (date))
(declare-function calendar-goto-today "cal-move" ())
@@ -4225,14 +4228,15 @@ Normal means, no org-mode-specific context."
(declare-function dired-get-filename "dired" (&optional localp no-error-if-not-filep))
(defvar font-lock-unfontify-region-function)
(declare-function iswitchb-read-buffer "iswitchb"
- (prompt &optional default require-match start matches-set))
+ (prompt &optional
+ default require-match _predicate start matches-set))
(defvar iswitchb-temp-buflist)
(declare-function org-gnus-follow-link "org-gnus" (&optional group article))
(defvar org-agenda-tags-todo-honor-ignore-options)
(declare-function org-agenda-skip "org-agenda" ())
(declare-function
org-agenda-format-item "org-agenda"
- (extra txt &optional level category tags dotime noprefix remove-re habitp))
+ (extra txt &optional level category tags dotime remove-re habitp))
(declare-function org-agenda-new-marker "org-agenda" (&optional pos))
(declare-function org-agenda-change-all-lines "org-agenda"
(newhead hdmarker &optional fixface just-this))
@@ -5280,7 +5284,6 @@ This variable is set by `org-before-change-function'.
;; Other stuff we need.
(require 'time-date)
-(unless (fboundp 'time-subtract) (defalias 'time-subtract 'subtract-time))
(require 'easymenu)
(require 'overlay)
@@ -5514,8 +5517,8 @@ the rounding returns a past time."
(apply 'encode-time
(append (list 0 (* r (floor (+ .5 (/ (float (nth 1 time)) r)))))
(nthcdr 2 time))))
- (if (and past (< (org-float-time (time-subtract (current-time) res)) 0))
- (seconds-to-time (- (org-float-time res) (* r 60)))
+ (if (and past (< (float-time (time-subtract (current-time) res)) 0))
+ (seconds-to-time (- (float-time res) (* r 60)))
res))))
(defun org-today ()
@@ -8779,24 +8782,24 @@ links."
(if (or (re-search-forward org-ts-regexp end t)
(re-search-forward org-ts-regexp-both end t))
(org-time-string-to-seconds (match-string 0))
- (org-float-time now))))
+ (float-time now))))
((= dcst ?c)
(let ((end (save-excursion (outline-next-heading) (point))))
(if (re-search-forward
(concat "^[ \t]*\\[" org-ts-regexp1 "\\]")
end t)
(org-time-string-to-seconds (match-string 0))
- (org-float-time now))))
+ (float-time now))))
((= dcst ?s)
(let ((end (save-excursion (outline-next-heading) (point))))
(if (re-search-forward org-scheduled-time-regexp end t)
(org-time-string-to-seconds (match-string 1))
- (org-float-time now))))
+ (float-time now))))
((= dcst ?d)
(let ((end (save-excursion (outline-next-heading) (point))))
(if (re-search-forward org-deadline-time-regexp end t)
(org-time-string-to-seconds (match-string 1))
- (org-float-time now))))
+ (float-time now))))
((= dcst ?p)
(if (re-search-forward org-priority-regexp (point-at-eol) t)
(string-to-char (match-string 2))
@@ -8860,7 +8863,7 @@ If WITH-CASE is non-nil, the sorting will be case-sensitive."
(lambda (x)
(if (or (string-match org-ts-regexp x)
(string-match org-ts-regexp-both x))
- (org-float-time
+ (float-time
(org-time-string-to-time (match-string 0 x)))
0))
comparefun (if (= dcst sorting-type) '< '>)))
@@ -12039,8 +12042,6 @@ This function can be used in a hook."
;;;; Completion
-(declare-function org-export-backend-name "org-export" (cl-x))
-(declare-function org-export-backend-options "org-export" (cl-x))
(defun org-get-export-keywords ()
"Return a list of all currently understood export keywords.
Export keywords include options, block names, attributes and
@@ -16886,7 +16887,7 @@ Don't touch the rest."
(defun org-time-stamp-to-now (timestamp-string &optional seconds)
"Difference between TIMESTAMP-STRING and now in days.
If SECONDS is non-nil, return the difference in seconds."
- (let ((fdiff (if seconds 'org-float-time 'time-to-days)))
+ (let ((fdiff (if seconds 'float-time 'time-to-days)))
(- (funcall fdiff (org-time-string-to-time timestamp-string))
(funcall fdiff (current-time)))))
@@ -17041,8 +17042,8 @@ days in order to avoid rounding problems."
(match-end (match-end 0))
(time1 (org-time-string-to-time ts1))
(time2 (org-time-string-to-time ts2))
- (t1 (org-float-time time1))
- (t2 (org-float-time time2))
+ (t1 (float-time time1))
+ (t2 (float-time time2))
(diff (abs (- t2 t1)))
(negative (< (- t2 t1) 0))
;; (ys (floor (* 365 24 60 60)))
@@ -17107,7 +17108,7 @@ days in order to avoid rounding problems."
(defun org-time-string-to-seconds (s)
"Convert a timestamp string to a number of seconds."
- (org-float-time (org-time-string-to-time s)))
+ (float-time (org-time-string-to-time s)))
(defun org-time-string-to-absolute (s &optional daynr prefer show-all buffer pos)
"Convert a time stamp to an absolute day number.
@@ -17459,8 +17460,7 @@ When SUPPRESS-TMP-DELAY is non-nil, suppress delays like \"--2d\"."
(+ (if (eq org-ts-what 'hour) n 0) (nth 2 time0))
(+ (if (eq org-ts-what 'day) n 0) (nth 3 time0))
(+ (if (eq org-ts-what 'month) n 0) (nth 4 time0))
- (+ (if (eq org-ts-what 'year) n 0) (nth 5 time0))
- (nthcdr 6 time0)))
+ (+ (if (eq org-ts-what 'year) n 0) (nth 5 time0))))
(when (and (member org-ts-what '(hour minute))
extra
(string-match "-\\([012][0-9]\\):\\([0-5][0-9]\\)" extra))
@@ -22673,8 +22673,10 @@ When optional argument END is non-nil, use end of date-range or
time-range, if possible.
The optional ZONE is omitted or nil for Emacs local time, t for
-Universal Time, `wall' for system wall clock time, or a string as in
-the TZ environment variable."
+Universal Time, `wall' for system wall clock time, or a string as
+in the TZ environment variable. It can also be a list (as from
+`current-time-zone') or an integer (as from `decode-time')
+applied without consideration for daylight saving time."
(format-time-string
format
(apply 'encode-time
diff --git a/lisp/org/ox-org.el b/lisp/org/ox-org.el
index 6221c70b88..aa1d197b53 100644
--- a/lisp/org/ox-org.el
+++ b/lisp/org/ox-org.el
@@ -25,7 +25,7 @@
;;; Code:
(require 'ox)
-(declare-function htmlize-buffer "htmlize" (&optional buffer))
+(declare-function htmlize-buffer "ext:htmlize" (&optional buffer))
(defgroup org-export-org nil
"Options for exporting Org mode files to Org."
diff --git a/lisp/paren.el b/lisp/paren.el
index 53eb50077f..e37cacef48 100644
--- a/lisp/paren.el
+++ b/lisp/paren.el
@@ -81,11 +81,6 @@ whitespace there."
:type 'boolean
:version "25.1")
-(define-obsolete-face-alias 'show-paren-match-face 'show-paren-match "22.1")
-
-(define-obsolete-face-alias 'show-paren-mismatch-face
- 'show-paren-mismatch "22.1")
-
(defcustom show-paren-highlight-openparen t
"Non-nil turns on openparen highlighting when matching forward.
When nil, and point stands just before an open paren, the paren
diff --git a/lisp/pcmpl-gnu.el b/lisp/pcmpl-gnu.el
index f84a1ceba4..e4e8f3a2c5 100644
--- a/lisp/pcmpl-gnu.el
+++ b/lisp/pcmpl-gnu.el
@@ -329,6 +329,42 @@
nil 'identity))))
;;;###autoload
+
+(defun pcomplete/find ()
+ "Completion for the GNU find utility."
+ (let ((prec (pcomplete-arg 'last -1)))
+ (cond ((and (pcomplete-match "^-" 'last)
+ (string= "find" prec))
+ (pcomplete-opt "HLPDO"))
+ ((pcomplete-match "^-" 'last)
+ (while (pcomplete-here
+ '("-amin" "-anewer" "-atime" "-cmin" "-cnewer" "-context"
+ "-ctime" "-daystart" "-delete" "-depth" "-empty" "-exec"
+ "-execdir" "-executable" "-false" "-fls" "-follow"
+ "-fprint" "-fprint0" "-fprintf" "-fstype" "-gid" "-group"
+ "-help" "-ignore_readdir_race" "-ilname" "-iname"
+ "-inum" "-ipath" "-iregex" "-iwholename"
+ "-links" "-lname" "-ls" "-maxdepth"
+ "-mindepth" "-mmin" "-mount" "-mtime"
+ "-name" "-newer" "-nogroup" "-noignore_readdir_race"
+ "-noleaf" "-nouser" "-nowarn" "-ok"
+ "-okdir" "-path" "-perm" "-print"
+ "-print0" "-printf" "-prune" "-quit"
+ "-readable" "-regex" "-regextype" "-samefile"
+ "-size" "-true" "-type" "-uid"
+ "-used" "-user" "-version" "-warn"
+ "-wholename" "-writable" "-xdev" "-xtype"))))
+ ((string= "-type" prec)
+ (while (pcomplete-here (list "b" "c" "d" "p" "f" "l" "s" "D"))))
+ ((string= "-xtype" prec)
+ (while (pcomplete-here (list "b" "c" "d" "p" "f" "l" "s"))))
+ ((or (string= prec "-exec")
+ (string= prec "-execdir"))
+ (while (pcomplete-here* (funcall pcomplete-command-completion-function)
+ (pcomplete-arg 'last) t))))
+ (while (pcomplete-here (pcomplete-dirs) nil 'identity))))
+
+;;;###autoload
(defalias 'pcomplete/gdb 'pcomplete/xargs)
;;; pcmpl-gnu.el ends here
diff --git a/lisp/play/animate.el b/lisp/play/animate.el
index 66f3d10c5c..cdcee62683 100644
--- a/lisp/play/animate.el
+++ b/lisp/play/animate.el
@@ -44,6 +44,11 @@
;;; in the string when the whole string finally reaches its
;;; specified position.
+(defgroup animate nil
+ "Make text dance."
+ :group 'games
+ :prefix "animate-")
+
(defun animate-initialize (string vpos hpos)
(let ((characters nil))
(dotimes (i (length string))
@@ -88,8 +93,9 @@
(unless (eolp) (delete-char 1))
(insert-char char 1))
-(defvar animate-n-steps 10
-"*Number of steps `animate-string' will place a char before its last position.")
+(defcustom animate-n-steps 10
+ "Number of steps `animate-string' will place a char before its last position."
+ :type 'integer)
(defvar animation-buffer-name nil
"String naming the default buffer for animations.
diff --git a/lisp/play/fortune.el b/lisp/play/fortune.el
index 25fa3f66ef..4871c45902 100644
--- a/lisp/play/fortune.el
+++ b/lisp/play/fortune.el
@@ -303,6 +303,19 @@ specifies the file to choose the fortune from."
fortune-program-options) (list fort-file)))))))
;;;###autoload
+(defun fortune-message (&optional file)
+ "Display a fortune cookie to the mini-buffer.
+If called with a prefix, it has the same behavior as `fortune'.
+Optional FILE is a fortune file from which a cookie will be selected."
+ (interactive (list (if current-prefix-arg
+ (fortune-ask-file)
+ fortune-file)))
+ (with-temp-buffer
+ (let ((fortune-buffer-name (current-buffer)))
+ (fortune-in-buffer t file)
+ (message "%s" (buffer-string)))))
+
+;;;###autoload
(defun fortune (&optional file)
"Display a fortune cookie.
If called with a prefix asks for the FILE to choose the fortune from,
diff --git a/lisp/play/snake.el b/lisp/play/snake.el
index 243f0190ee..371c7133c7 100644
--- a/lisp/play/snake.el
+++ b/lisp/play/snake.el
@@ -144,7 +144,6 @@
(defvar snake-velocity-x 1)
(defvar snake-velocity-y 0)
(defvar snake-positions nil)
-(defvar snake-cycle 0)
(defvar snake-score 0)
(defvar snake-paused nil)
(defvar snake-moved-p nil)
@@ -164,7 +163,6 @@ and then start moving it leftwards.")
(make-variable-buffer-local 'snake-velocity-x)
(make-variable-buffer-local 'snake-velocity-y)
(make-variable-buffer-local 'snake-positions)
-(make-variable-buffer-local 'snake-cycle)
(make-variable-buffer-local 'snake-score)
(make-variable-buffer-local 'snake-paused)
(make-variable-buffer-local 'snake-moved-p)
@@ -237,7 +235,6 @@ and then start moving it leftwards.")
snake-velocity-x snake-initial-velocity-x
snake-velocity-y snake-initial-velocity-y
snake-positions nil
- snake-cycle 1
snake-score 0
snake-paused nil
snake-moved-p nil
@@ -251,6 +248,14 @@ and then start moving it leftwards.")
(cl-incf y snake-velocity-y)))
(snake-update-score))
+(defun snake-set-dot ()
+ (let ((x (random snake-width))
+ (y (random snake-height)))
+ (while (not (= (gamegrid-get-cell x y) snake-blank))
+ (setq x (random snake-width))
+ (setq y (random snake-height)))
+ (gamegrid-set-cell x y snake-dot)))
+
(defun snake-update-game (snake-buffer)
"Called on each clock tick.
Advances the snake one square, testing for collision.
@@ -268,23 +273,20 @@ Argument SNAKE-BUFFER is the name of the buffer."
(cond ((= c snake-dot)
(cl-incf snake-length)
(cl-incf snake-score)
- (snake-update-score))
+ (snake-update-score)
+ (snake-set-dot))
(t
(let* ((last-cons (nthcdr (- snake-length 2)
snake-positions))
(tail-pos (cadr last-cons))
(x0 (aref tail-pos 0))
(y0 (aref tail-pos 1)))
- (gamegrid-set-cell x0 y0
- (if (= (% snake-cycle 5) 0)
- snake-dot
- snake-blank))
- (cl-incf snake-cycle)
+ (gamegrid-set-cell x0 y0 snake-blank)
(setcdr last-cons nil))))
(gamegrid-set-cell x y snake-snake)
(setq snake-positions
(cons (vector x y) snake-positions))
- (setq snake-moved-p nil)))))
+ (setq snake-moved-p nil)))))
(defun snake-update-velocity ()
(unless snake-moved-p
@@ -339,6 +341,7 @@ Argument SNAKE-BUFFER is the name of the buffer."
"Start a new game of Snake."
(interactive)
(snake-reset-game)
+ (snake-set-dot)
(use-local-map snake-mode-map)
(gamegrid-start-timer snake-tick-period 'snake-update-game))
diff --git a/lisp/gnus/plstore.el b/lisp/plstore.el
index e327bbd484..01bdd144ac 100644
--- a/lisp/gnus/plstore.el
+++ b/lisp/plstore.el
@@ -99,10 +99,12 @@ If neither t nor nil, doesn't ask user."
(const :tag "Don't ask" silent))
:group 'plstore)
-(defvar plstore-encrypt-to nil
- "*Recipient(s) used for encrypting secret entries.
+(defcustom plstore-encrypt-to nil
+ "Recipient(s) used for encrypting secret entries.
May either be a string or a list of strings. If it is nil,
-symmetric encryption will be used.")
+symmetric encryption will be used."
+ :type '(choice (const nil) (repeat :tag "Recipient(s)" string))
+ :group 'plstore)
(put 'plstore-encrypt-to 'safe-local-variable
(lambda (val)
@@ -422,7 +424,7 @@ SECRET-KEYS is a plist containing secret data."
((listp plstore-encrypt-to) plstore-encrypt-to)
((stringp plstore-encrypt-to) (list plstore-encrypt-to))))
cipher)
- (epg-context-set-armor context t)
+ (setf (epg-context-armor context) t)
(epg-context-set-passphrase-callback
context
(cons #'plstore-passphrase-callback-function
@@ -554,18 +556,6 @@ If no one is selected, symmetric encryption will be performed. "
(plstore-mode-original)
(plstore-mode-decoded)))
-(eval-when-compile
- (defmacro plstore-called-interactively-p (kind)
- (condition-case nil
- (progn
- (eval '(called-interactively-p 'any))
- ;; Emacs >=23.2
- `(called-interactively-p ,kind))
- ;; Emacs <23.2
- (wrong-number-of-arguments '(called-interactively-p))
- ;; XEmacs
- (void-function '(interactive-p)))))
-
;;;###autoload
(define-derived-mode plstore-mode emacs-lisp-mode "PLSTORE"
"Major mode for editing PLSTORE files."
@@ -573,7 +563,7 @@ If no one is selected, symmetric encryption will be performed. "
(add-hook 'write-contents-functions #'plstore--write-contents-functions)
(define-key plstore-mode-map "\C-c\C-c" #'plstore-mode-toggle-display)
;; to create a new file with plstore-mode, mark it as already decoded
- (if (plstore-called-interactively-p 'any)
+ (if (called-interactively-p 'any)
(setq plstore-encoded t)
(plstore-mode-decoded)))
diff --git a/lisp/proced.el b/lisp/proced.el
index 91b50cea34..db45e20208 100644
--- a/lisp/proced.el
+++ b/lisp/proced.el
@@ -78,9 +78,6 @@ the external command (usually \"kill\")."
("KILL" . " (9. Kill - cannot be caught or ignored)")
("ALRM" . " (14. Alarm Clock)")
("TERM" . " (15. Termination)")
- ;; POSIX 1003.1-2001
- ;; Which systems do not support these signals so that we can
- ;; exclude them from `proced-signal-list'?
("CONT" . " (Continue executing)")
("STOP" . " (Stop executing / pause - cannot be caught or ignored)")
("TSTP" . " (Terminal stop / pause)"))
@@ -644,6 +641,10 @@ mode line, using \"+\" or \"-\" for ascending or descending sort order.
Type \\[proced-toggle-tree] to toggle whether the listing is
displayed as process tree.
+Type \\[proced-toggle-auto-update] to automatically update the
+process list. The time interval for updates can be configured
+via `proced-auto-update-interval'.
+
An existing Proced listing can be refined by typing \\[proced-refine].
Refining an existing listing does not update the variable `proced-filter'.
diff --git a/lisp/profiler.el b/lisp/profiler.el
index 3bee3c561a..dac42fec0c 100644
--- a/lisp/profiler.el
+++ b/lisp/profiler.el
@@ -534,6 +534,7 @@ RET: expand or collapse"))
(define-key map "\r" 'profiler-report-toggle-entry)
(define-key map "\t" 'profiler-report-toggle-entry)
(define-key map "i" 'profiler-report-toggle-entry)
+ (define-key map [mouse-1] 'profiler-report-toggle-entry)
(define-key map "f" 'profiler-report-find-entry)
(define-key map "j" 'profiler-report-find-entry)
(define-key map [mouse-2] 'profiler-report-find-entry)
diff --git a/lisp/progmodes/ada-xref.el b/lisp/progmodes/ada-xref.el
index 8518163a1b..b3248d3f13 100644
--- a/lisp/progmodes/ada-xref.el
+++ b/lisp/progmodes/ada-xref.el
@@ -174,7 +174,7 @@ If GVD is not the debugger used, nothing happens."
:type 'boolean :group 'ada)
(defcustom ada-xref-search-with-egrep t
- "If non-nil, use egrep to find the possible declarations for an entity.
+ "If non-nil, use grep -E to find the possible declarations for an entity.
This alternate method is used when the exact location was not found in the
information provided by GNAT. However, it might be expensive if you have a lot
of sources, since it will search in all the files in your project."
@@ -2013,7 +2013,7 @@ This function should be used when the standard algorithm that parses the
exist.
This function attempts to find the possible declarations for the identifier
anywhere in the object path.
-This command requires the external `egrep' program to be available.
+This command requires the external `grep' program to be available.
This works well when one is using an external library and wants to find
the declaration and documentation of the subprograms one is using."
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index 59f2729c43..f0ad294245 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -1610,8 +1610,8 @@ defun."
;; Move back out of any macro/comment/string we happen to be in.
(c-beginning-of-macro)
- (setq pos (c-literal-limits))
- (if pos (goto-char (car pos)))
+ (setq pos (c-literal-start))
+ (if pos (goto-char pos))
(setq where (c-where-wrt-brace-construct))
@@ -1734,8 +1734,8 @@ the open-parenthesis that starts a defun; see `beginning-of-defun'."
;; Move back out of any macro/comment/string we happen to be in.
(c-beginning-of-macro)
- (setq pos (c-literal-limits))
- (if pos (goto-char (car pos)))
+ (setq pos (c-literal-start))
+ (if pos (goto-char pos))
(setq where (c-where-wrt-brace-construct))
@@ -1793,8 +1793,8 @@ with a brace block."
(save-excursion
;; Move back out of any macro/comment/string we happen to be in.
(c-beginning-of-macro)
- (setq pos (c-literal-limits))
- (if pos (goto-char (car pos)))
+ (setq pos (c-literal-start))
+ (if pos (goto-char pos))
(setq where (c-where-wrt-brace-construct))
@@ -1880,103 +1880,103 @@ with a brace block."
(or (save-restriction
(c-narrow-to-most-enclosing-decl-block nil)
- ;; Note: Some code duplication in `c-beginning-of-defun' and
- ;; `c-end-of-defun'.
- (catch 'exit
- (let ((start (point))
- (paren-state (c-parse-state))
- lim pos end-pos)
- (unless (c-safe
- (goto-char (c-least-enclosing-brace paren-state))
+ ;; Note: Some code duplication in `c-beginning-of-defun' and
+ ;; `c-end-of-defun'.
+ (catch 'exit
+ (let ((start (point))
+ (paren-state (c-parse-state))
+ lim pos end-pos)
+ (unless (c-safe
+ (goto-char (c-least-enclosing-brace paren-state))
;; If we moved to the outermost enclosing paren
;; then we can use c-safe-position to set the
;; limit. Can't do that otherwise since the
;; earlier paren pair on paren-state might very
;; well be part of the declaration we should go
;; to.
- (setq lim (c-safe-position (point) paren-state))
- t)
- ;; At top level. Make sure we aren't inside a literal.
- (setq pos (c-literal-limits
- (c-safe-position (point) paren-state)))
- (if pos (goto-char (car pos))))
-
- (when (c-beginning-of-macro)
- (throw 'exit
- (cons (point)
- (save-excursion
- (c-end-of-macro)
- (forward-line 1)
- (point)))))
+ (setq lim (c-safe-position (point) paren-state))
+ t)
+ ;; At top level. Make sure we aren't inside a literal.
+ (setq pos (c-literal-start
+ (c-safe-position (point) paren-state)))
+ (if pos (goto-char pos)))
+
+ (when (c-beginning-of-macro)
+ (throw 'exit
+ (cons (point)
+ (save-excursion
+ (c-end-of-macro)
+ (forward-line 1)
+ (point)))))
- (setq pos (point))
- (when (or (eq (car (c-beginning-of-decl-1 lim)) 'previous)
- (= pos (point)))
- ;; We moved back over the previous defun. Skip to the next
- ;; one. Not using c-forward-syntactic-ws here since we
- ;; should not skip a macro. We can also be directly after
- ;; the block in a `c-opt-block-decls-with-vars-key'
- ;; declaration, but then we won't move significantly far
- ;; here.
- (goto-char pos)
- (c-forward-comments)
-
- (when (and near (c-beginning-of-macro))
- (throw 'exit
- (cons (point)
- (save-excursion
- (c-end-of-macro)
- (forward-line 1)
- (point))))))
-
- (if (eobp) (throw 'exit nil))
-
- ;; Check if `c-beginning-of-decl-1' put us after the block in a
- ;; declaration that doesn't end there. We're searching back and
- ;; forth over the block here, which can be expensive.
- (setq pos (point))
- (if (and c-opt-block-decls-with-vars-key
- (progn
- (c-backward-syntactic-ws)
- (eq (char-before) ?}))
- (eq (car (c-beginning-of-decl-1))
- 'previous)
- (save-excursion
- (c-end-of-decl-1)
- (and (> (point) pos)
- (setq end-pos (point)))))
- nil
- (goto-char pos))
-
- (if (and (not near) (> (point) start))
- nil
-
- ;; Try to be line oriented; position the limits at the
- ;; closest preceding boi, and after the next newline, that
- ;; isn't inside a comment, but if we hit a neighboring
- ;; declaration then we instead use the exact declaration
- ;; limit in that direction.
- (cons (progn
(setq pos (point))
- (while (and (/= (point) (c-point 'boi))
- (c-backward-single-comment)))
- (if (/= (point) (c-point 'boi))
- pos
- (point)))
- (progn
- (if end-pos
- (goto-char end-pos)
- (c-end-of-decl-1))
+ (when (or (eq (car (c-beginning-of-decl-1 lim)) 'previous)
+ (= pos (point)))
+ ;; We moved back over the previous defun. Skip to the next
+ ;; one. Not using c-forward-syntactic-ws here since we
+ ;; should not skip a macro. We can also be directly after
+ ;; the block in a `c-opt-block-decls-with-vars-key'
+ ;; declaration, but then we won't move significantly far
+ ;; here.
+ (goto-char pos)
+ (c-forward-comments)
+
+ (when (and near (c-beginning-of-macro))
+ (throw 'exit
+ (cons (point)
+ (save-excursion
+ (c-end-of-macro)
+ (forward-line 1)
+ (point))))))
+
+ (if (eobp) (throw 'exit nil))
+
+ ;; Check if `c-beginning-of-decl-1' put us after the block in a
+ ;; declaration that doesn't end there. We're searching back and
+ ;; forth over the block here, which can be expensive.
(setq pos (point))
- (while (and (not (bolp))
- (not (looking-at "\\s *$"))
- (c-forward-single-comment)))
- (cond ((bolp)
- (point))
- ((looking-at "\\s *$")
- (forward-line 1)
- (point))
- (t
+ (if (and c-opt-block-decls-with-vars-key
+ (progn
+ (c-backward-syntactic-ws)
+ (eq (char-before) ?}))
+ (eq (car (c-beginning-of-decl-1))
+ 'previous)
+ (save-excursion
+ (c-end-of-decl-1)
+ (and (> (point) pos)
+ (setq end-pos (point)))))
+ nil
+ (goto-char pos))
+
+ (if (and (not near) (> (point) start))
+ nil
+
+ ;; Try to be line oriented; position the limits at the
+ ;; closest preceding boi, and after the next newline, that
+ ;; isn't inside a comment, but if we hit a neighboring
+ ;; declaration then we instead use the exact declaration
+ ;; limit in that direction.
+ (cons (progn
+ (setq pos (point))
+ (while (and (/= (point) (c-point 'boi))
+ (c-backward-single-comment)))
+ (if (/= (point) (c-point 'boi))
+ pos
+ (point)))
+ (progn
+ (if end-pos
+ (goto-char end-pos)
+ (c-end-of-decl-1))
+ (setq pos (point))
+ (while (and (not (bolp))
+ (not (looking-at "\\s *$"))
+ (c-forward-single-comment)))
+ (cond ((bolp)
+ (point))
+ ((looking-at "\\s *$")
+ (forward-line 1)
+ (point))
+ (t
pos))))))))
(and (not near)
(goto-char (point-min))
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index 4c78bc3975..ab4baa247b 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -206,7 +206,7 @@ This variant works around bugs in `eval-when-compile' in various
(eval-and-compile
(defmacro c--macroexpand-all (form &optional environment)
;; Macro to smooth out the renaming of `cl-macroexpand-all' in Emacs 24.3.
- (if (eq c--mapcan-status 'cl-mapcan)
+ (if (fboundp 'macroexpand-all)
`(macroexpand-all ,form ,environment)
`(cl-macroexpand-all ,form ,environment)))
@@ -493,19 +493,21 @@ must not be within a `c-save-buffer-state', since the user then
wouldn't be able to undo them.
The return value is the value of the last form in BODY."
- `(let* ((modified (buffer-modified-p)) (buffer-undo-list t)
- (inhibit-read-only t) (inhibit-point-motion-hooks t)
- before-change-functions after-change-functions
- deactivate-mark
- buffer-file-name buffer-file-truename ; Prevent primitives checking
- ; for file modification
- ,@varlist)
- (unwind-protect
- (progn ,@body)
- (and (not modified)
- (buffer-modified-p)
- (set-buffer-modified-p nil)))))
-(put 'c-save-buffer-state 'lisp-indent-function 1)
+ (declare (debug t) (indent 1))
+ (if (fboundp 'with-silent-modifications)
+ `(with-silent-modifications (let* ,varlist ,@body))
+ `(let* ((modified (buffer-modified-p)) (buffer-undo-list t)
+ (inhibit-read-only t) (inhibit-point-motion-hooks t)
+ before-change-functions after-change-functions
+ deactivate-mark
+ buffer-file-name buffer-file-truename ; Prevent primitives checking
+ ; for file modification
+ ,@varlist)
+ (unwind-protect
+ (progn ,@body)
+ (and (not modified)
+ (buffer-modified-p)
+ (set-buffer-modified-p nil))))))
(defmacro c-tentative-buffer-changes (&rest body)
"Eval BODY and optionally restore the buffer contents to the state it
@@ -640,13 +642,14 @@ right side of it."
`(c-safe (scan-lists ,from ,count ,depth)))))
(if limit
`(save-restriction
- ,(if (numberp count)
- (if (< count 0)
- `(narrow-to-region ,limit (point-max))
- `(narrow-to-region (point-min) ,limit))
- `(if (< ,count 0)
- (narrow-to-region ,limit (point-max))
- (narrow-to-region (point-min) ,limit)))
+ (when ,limit
+ ,(if (numberp count)
+ (if (< count 0)
+ `(narrow-to-region ,limit (point-max))
+ `(narrow-to-region (point-min) ,limit))
+ `(if (< ,count 0)
+ (narrow-to-region ,limit (point-max))
+ (narrow-to-region (point-min) ,limit))))
,res)
res)))
@@ -661,13 +664,8 @@ leave point unmoved.
A LIMIT for the search may be given. The start position is assumed to be
before it."
- (let ((res `(c-safe (goto-char (scan-lists ,(or pos `(point)) 1 0)) (point))))
- (if limit
- `(save-restriction
- (if ,limit
- (narrow-to-region (point-min) ,limit))
- ,res)
- res)))
+ `(let ((dest (c-safe-scan-lists ,(or pos `(point)) 1 0 ,limit)))
+ (when dest (goto-char dest) dest)))
(defmacro c-go-list-backward (&optional pos limit)
"Move backward across one balanced group of parentheses starting at POS or
@@ -676,13 +674,8 @@ leave point unmoved.
A LIMIT for the search may be given. The start position is assumed to be
after it."
- (let ((res `(c-safe (goto-char (scan-lists ,(or pos `(point)) -1 0)) (point))))
- (if limit
- `(save-restriction
- (if ,limit
- (narrow-to-region ,limit (point-max)))
- ,res)
- res)))
+ `(let ((dest (c-safe-scan-lists ,(or pos `(point)) -1 0 ,limit)))
+ (when dest (goto-char dest) dest)))
(defmacro c-up-list-forward (&optional pos limit)
"Return the first position after the list sexp containing POS,
@@ -723,12 +716,8 @@ position exists, otherwise nil is returned and the point isn't moved.
A limit for the search may be given. The start position is assumed to
be before it."
- (let ((res `(c-safe (goto-char (scan-lists ,(or pos `(point)) 1 1)) t)))
- (if limit
- `(save-restriction
- (narrow-to-region (point-min) ,limit)
- ,res)
- res)))
+ `(let ((dest (c-up-list-forward ,pos ,limit)))
+ (when dest (goto-char dest) t)))
(defmacro c-go-up-list-backward (&optional pos limit)
"Move the point to the position of the start of the list sexp containing POS,
@@ -737,12 +726,8 @@ position exists, otherwise nil is returned and the point isn't moved.
A limit for the search may be given. The start position is assumed to
be after it."
- (let ((res `(c-safe (goto-char (scan-lists ,(or pos `(point)) -1 1)) t)))
- (if limit
- `(save-restriction
- (narrow-to-region ,limit (point-max))
- ,res)
- res)))
+ `(let ((dest (c-up-list-backward ,pos ,limit)))
+ (when dest (goto-char dest) t)))
(defmacro c-go-down-list-forward (&optional pos limit)
"Move the point to the first position inside the first list sexp after POS,
@@ -751,12 +736,8 @@ exists, otherwise nil is returned and the point isn't moved.
A limit for the search may be given. The start position is assumed to
be before it."
- (let ((res `(c-safe (goto-char (scan-lists ,(or pos `(point)) 1 -1)) t)))
- (if limit
- `(save-restriction
- (narrow-to-region (point-min) ,limit)
- ,res)
- res)))
+ `(let ((dest (c-down-list-forward ,pos ,limit)))
+ (when dest (goto-char dest) t)))
(defmacro c-go-down-list-backward (&optional pos limit)
"Move the point to the last position inside the last list sexp before POS,
@@ -765,13 +746,8 @@ exists, otherwise nil is returned and the point isn't moved.
A limit for the search may be given. The start position is assumed to
be after it."
- (let ((res `(c-safe (goto-char (scan-lists ,(or pos `(point)) -1 -1)) t)))
- (if limit
- `(save-restriction
- (narrow-to-region ,limit (point-max))
- ,res)
- res)))
-
+ `(let ((dest (c-down-list-backward ,pos ,limit)))
+ (when dest (goto-char dest) t)))
(defmacro c-beginning-of-defun-1 ()
;; Wrapper around beginning-of-defun.
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index eb015acf32..ccdc1b15a6 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -83,8 +83,9 @@
;;
;; 'syntax-table
;; Used to modify the syntax of some characters. It is used to
-;; mark the "<" and ">" of angle bracket parens with paren syntax, and
-;; to "hide" obtrusive characters in preprocessor lines.
+;; mark the "<" and ">" of angle bracket parens with paren syntax, to
+;; "hide" obtrusive characters in preprocessor lines, and to mark C++
+;; raw strings to enable their fontification.
;;
;; This property is used on single characters and is therefore
;; always treated as front and rear nonsticky (or start and end open
@@ -129,6 +130,10 @@
;; 'c-decl-type-start is used when the declarators are types,
;; 'c-decl-id-start otherwise.
;;
+;; 'c-not-decl
+;; Put on the brace which introduces a brace list and on the commas
+;; which separate the element within it.
+;;
;; 'c-awk-NL-prop
;; Used in AWK mode to mark the various kinds of newlines. See
;; cc-awk.el.
@@ -229,8 +234,12 @@
;; The starting position from where we determined `c-macro-cache'.
(defvar c-macro-cache-syntactic nil)
(make-variable-buffer-local 'c-macro-cache-syntactic)
-;; non-nil iff `c-macro-cache' has both elements set AND the cdr is at a
-;; syntactic end of macro, not merely an apparent one.
+;; Either nil, or the syntactic end of the macro currently represented by
+;; `c-macro-cache'.
+(defvar c-macro-cache-no-comment nil)
+(make-variable-buffer-local 'c-macro-cache-no-comment)
+;; Either nil, or the last character of the macro currently represented by
+;; `c-macro-cache' which isn't in a comment. */
(defun c-invalidate-macro-cache (beg end)
;; Called from a before-change function. If the change region is before or
@@ -242,12 +251,14 @@
((< beg (car c-macro-cache))
(setq c-macro-cache nil
c-macro-cache-start-pos nil
- c-macro-cache-syntactic nil))
+ c-macro-cache-syntactic nil
+ c-macro-cache-no-comment nil))
((and (cdr c-macro-cache)
(< beg (cdr c-macro-cache)))
(setcdr c-macro-cache nil)
(setq c-macro-cache-start-pos beg
- c-macro-cache-syntactic nil))))
+ c-macro-cache-syntactic nil
+ c-macro-cache-no-comment nil))))
(defun c-macro-is-genuine-p ()
;; Check that the ostensible CPP construct at point is a real one. In
@@ -288,7 +299,8 @@ comment at the start of cc-engine.el for more info."
t))
(setq c-macro-cache nil
c-macro-cache-start-pos nil
- c-macro-cache-syntactic nil)
+ c-macro-cache-syntactic nil
+ c-macro-cache-no-comment nil)
(save-restriction
(if lim (narrow-to-region lim (point-max)))
@@ -297,7 +309,7 @@ comment at the start of cc-engine.el for more info."
(forward-line -1))
(back-to-indentation)
(if (and (<= (point) here)
- (looking-at c-opt-cpp-start)
+ (save-match-data (looking-at c-opt-cpp-start))
(c-macro-is-genuine-p))
(progn
(setq c-macro-cache (cons (point) nil)
@@ -323,7 +335,8 @@ comment at the start of cc-engine.el for more info."
(>= (point) (car c-macro-cache)))
(setq c-macro-cache nil
c-macro-cache-start-pos nil
- c-macro-cache-syntactic nil))
+ c-macro-cache-syntactic nil
+ c-macro-cache-no-comment nil))
(while (progn
(end-of-line)
(when (and (eq (char-before) ?\\)
@@ -347,14 +360,38 @@ comment at the start of cc-engine.el for more info."
(let* ((here (point))
(there (progn (c-end-of-macro) (point)))
s)
- (unless c-macro-cache-syntactic
+ (if c-macro-cache-syntactic
+ (goto-char c-macro-cache-syntactic)
(setq s (parse-partial-sexp here there))
(while (and (or (nth 3 s) ; in a string
(nth 4 s)) ; in a comment (maybe at end of line comment)
(> there here)) ; No infinite loops, please.
(setq there (1- (nth 8 s)))
(setq s (parse-partial-sexp here there)))
- (setq c-macro-cache-syntactic (car c-macro-cache)))
+ (setq c-macro-cache-syntactic (point)))
+ (point)))
+
+(defun c-no-comment-end-of-macro ()
+ ;; Go to the end of a CPP directive, or a pos just before which isn't in a
+ ;; comment. For this purpose, open strings are ignored.
+ ;;
+ ;; This function must only be called from the beginning of a CPP construct.
+ ;;
+ ;; Note that this function might do hidden buffer changes. See the comment
+ ;; at the start of cc-engine.el for more info.
+ (let* ((here (point))
+ (there (progn (c-end-of-macro) (point)))
+ s)
+ (if c-macro-cache-no-comment
+ (goto-char c-macro-cache-no-comment)
+ (setq s (parse-partial-sexp here there))
+ (while (and (nth 3 s) ; in a string
+ (> there here)) ; No infinite loops, please.
+ (setq here (1+ (nth 8 s)))
+ (setq s (parse-partial-sexp here there)))
+ (when (nth 4 s)
+ (goto-char (1- (nth 8 s))))
+ (setq c-macro-cache-no-comment (point)))
(point)))
(defun c-forward-over-cpp-define-id ()
@@ -385,6 +422,25 @@ comment at the start of cc-engine.el for more info."
;;; Basic utility functions.
+(defun c-delq-from-dotted-list (elt dlist)
+ ;; If ELT is a member of the (possibly dotted) list DLIST, remove all
+ ;; occurrences of it (except for any in the last cdr of DLIST).
+ ;;
+ ;; Call this as (setq DLIST (c-delq-from-dotted-list ELT DLIST)), as
+ ;; sometimes the original structure is changed, sometimes it's not.
+ ;;
+ ;; This function is needed in Emacs < 24.5, and possibly XEmacs, because
+ ;; `delq' throws an error in these versions when given a dotted list.
+ (let ((tail dlist) prev)
+ (while (consp tail)
+ (if (eq (car tail) elt)
+ (if prev
+ (setcdr prev (cdr tail))
+ (setq dlist (cdr dlist)))
+ (setq prev tail))
+ (setq tail (cdr tail)))
+ dlist))
+
(defun c-syntactic-content (from to paren-level)
;; Return the given region as a string where all syntactic
;; whitespace is removed or, where necessary, replaced with a single
@@ -1248,7 +1304,7 @@ comment at the start of cc-engine.el for more info."
c-stmt-delim-chars))
(non-skip-list
(append (substring skip-chars 1) nil)) ; e.g. (?# ?\; ?{ ?} ?? ?:)
- lit-range vsemi-pos)
+ lit-range lit-start vsemi-pos)
(save-restriction
(widen)
(save-excursion
@@ -1263,8 +1319,8 @@ comment at the start of cc-engine.el for more info."
((and (bolp)
(save-excursion
(progn
- (if (setq lit-range (c-literal-limits from)) ; Have we landed in a string/comment?
- (goto-char (car lit-range)))
+ (if (setq lit-start (c-literal-start from)) ; Have we landed in a string/comment?
+ (goto-char lit-start))
(c-backward-syntactic-ws) ; ? put a limit here, maybe?
(setq vsemi-pos (point))
(c-at-vsemi-p))))
@@ -1543,7 +1599,7 @@ comment at the start of cc-engine.el for more info."
;; two newlines with horizontal whitespace between them.
;;
;; The reason to include the first following char is to cope with
-;; "rung positions" that doesn't have any ordinary whitespace. If
+;; "rung positions" that don't have any ordinary whitespace. If
;; `c-is-sws' is put on a token character it does not have
;; `c-in-sws' set simultaneously. That's the only case when that
;; can occur, and the reason for not extending the `c-in-sws'
@@ -1714,7 +1770,9 @@ comment at the start of cc-engine.el for more info."
;; if it's anything that can't start syntactic ws, so we can bail out
;; early in the majority of cases when there just are a few ws chars.
(skip-chars-forward " \t\n\r\f\v")
- (when (looking-at c-syntactic-ws-start)
+ (when (or (looking-at c-syntactic-ws-start)
+ (and c-opt-cpp-prefix
+ (looking-at c-noise-macro-name-re)))
(setq rung-end-pos (min (1+ (point)) (point-max)))
(if (setq rung-is-marked (text-property-any rung-pos rung-end-pos
@@ -1733,6 +1791,10 @@ comment at the start of cc-engine.el for more info."
(with-silent-modifications
(while
(progn
+ ;; In the following while form, we move over a "ladder" and
+ ;; following simple WS each time round the loop, appending the WS
+ ;; onto the ladder, joining adjacent ladders, and terminating when
+ ;; there is no more WS or we reach EOB.
(while
(when (and rung-is-marked
(get-text-property (point) 'c-in-sws))
@@ -1776,6 +1838,7 @@ comment at the start of cc-engine.el for more info."
(setq rung-pos (point)
last-put-in-sws-pos rung-pos)))
+ ;; Now move over any comments (x)or a CPP construct.
(setq simple-ws-end (point))
(c-forward-comments)
@@ -1801,6 +1864,13 @@ comment at the start of cc-engine.el for more info."
(forward-line 1)
(setq safe-start t)
;; Don't cache at eob in case the buffer is narrowed.
+ (not (eobp)))
+
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-name-re))
+ ;; Skip over a noise macro.
+ (goto-char (match-end 1))
+ (setq safe-start t)
(not (eobp)))))
;; We've searched over a piece of non-white syntactic ws. See if this
@@ -1907,8 +1977,11 @@ comment at the start of cc-engine.el for more info."
(when (and (not (bobp))
(save-excursion
(backward-char)
- (looking-at c-syntactic-ws-end)))
-
+ (or (looking-at c-syntactic-ws-end)
+ (and c-opt-cpp-prefix
+ (looking-at c-symbol-char-key)
+ (progn (c-beginning-of-current-token)
+ (looking-at c-noise-macro-name-re))))))
;; Try to find a rung position in the simple ws preceding point, so that
;; we can get a cache hit even if the last bit of the simple ws has
;; changed recently.
@@ -1927,6 +2000,9 @@ comment at the start of cc-engine.el for more info."
(with-silent-modifications
(while
(progn
+ ;; Each time round the next while form, we move back over a ladder
+ ;; and append any simple WS preceding it, if possible joining with
+ ;; the previous ladder.
(while
(when (and rung-is-marked
(not (bobp))
@@ -2035,6 +2111,15 @@ comment at the start of cc-engine.el for more info."
;; narrowed out, and we can't risk marking the simple ws
;; at the end of it.
(goto-char next-rung-pos)
+ t)
+
+ ((and c-opt-cpp-prefix
+ (save-excursion
+ (and (< (skip-syntax-backward "w_") 0)
+ (progn (setq next-rung-pos (point))
+ (looking-at c-noise-macro-name-re)))))
+ ;; Skipped over a noise macro
+ (goto-char next-rung-pos)
t)))
;; We've searched over a piece of non-white syntactic ws. See if this
@@ -2198,22 +2283,128 @@ comment at the start of cc-engine.el for more info."
(defvar c-state-semi-nonlit-pos-cache nil)
(make-variable-buffer-local 'c-state-semi-nonlit-pos-cache)
-;; A list of buffer positions which are known not to be in a literal. This is
-;; ordered with higher positions at the front of the list. Only those which
-;; are less than `c-state-semi-nonlit-pos-cache-limit' are valid.
+;; A list of elements which are either buffer positions (when such positions
+;; are not in literals) or lists of the form (POS TYPE START), where POS is
+;; a buffer position inside a literal, TYPE is the type of the literal
+;; ('string, 'c, or 'c++) and START is the start of the literal.
(defvar c-state-semi-nonlit-pos-cache-limit 1)
(make-variable-buffer-local 'c-state-semi-nonlit-pos-cache-limit)
-;; An upper limit on valid entries in `c-state-semi-nonlit-pos-cache'. This is
-;; reduced by buffer changes, and increased by invocations of
-;; `c-state-literal-at'. FIXME!!!
+;; An upper limit on valid entries in `c-state-semi-nonlit-pos-cache'. This
+;; is reduced by buffer changes, and increased by invocations of
+;; `c-parse-ps-state-below'.
+
+(defsubst c-truncate-semi-nonlit-pos-cache (pos)
+ ;; Truncate the upper bound of the cache `c-state-semi-nonlit-pos-cache' to
+ ;; POS, if it is higher than that position.
+ (setq c-state-semi-nonlit-pos-cache-limit
+ (min c-state-semi-nonlit-pos-cache-limit pos)))
+
+(defun c-state-semi-pp-to-literal (here &optional not-in-delimiter)
+ ;; Do a parse-partial-sexp from a position in the buffer before HERE which
+ ;; isn't in a literal, and return information about HERE, either:
+ ;; (STATE TYPE BEG) if HERE is in a literal; or
+ ;; (STATE) otherwise,
+ ;; where STATE is the parsing state at HERE, TYPE is the type of the literal
+ ;; enclosing HERE, (one of 'string, 'c, 'c++) and BEG is the starting
+ ;; position of that literal (including the delimiter).
+ ;;
+ ;; Unless NOT-IN-DELIMITER is non-nil, when TO is inside a two-character
+ ;; comment opener, this is recognized as being in a comment literal.
+ ;;
+ ;; Only elements 3 (in a string), 4 (in a comment), 5 (following a quote), 7
+ ;; (comment type), and 8 (start of comment/string), and possibly 10 (in
+ ;; newer Emacsen only, the syntax of a position after a potential first char
+ ;; of a two char construct) of STATE are valid.
+ (save-excursion
+ (save-restriction
+ (widen)
+ (save-match-data
+ (let* ((base-and-state (c-parse-ps-state-below here))
+ (base (car base-and-state))
+ (s (cdr base-and-state))
+ (s (parse-partial-sexp base here nil nil s))
+ ty)
+ (cond
+ ((or (nth 3 s) (nth 4 s)) ; in a string or comment
+ (setq ty (cond
+ ((nth 3 s) 'string)
+ ((nth 7 s) 'c++)
+ (t 'c)))
+ (list s ty (nth 8 s)))
+
+ ((and (not not-in-delimiter) ; inside a comment starter
+ (not (bobp))
+ (progn (backward-char)
+ (and (not (and (memq 'category-properties c-emacs-features)
+ (looking-at "\\s!")))
+ (looking-at c-comment-start-regexp))))
+ (setq ty (if (looking-at c-block-comment-start-regexp) 'c 'c++))
+ (list s ty (point)))
+
+ (t (list s))))))))
+
+(defun c-state-full-pp-to-literal (here &optional not-in-delimiter)
+ ;; This function will supersede c-state-pp-to-literal.
+ ;;
+ ;; Do a parse-partial-sexp from a position in the buffer before HERE which
+ ;; isn't in a literal, and return information about HERE, either:
+ ;; (STATE TYPE (BEG . END)) if HERE is in a literal; or
+ ;; (STATE) otherwise,
+ ;; where STATE is the parsing state at HERE, TYPE is the type of the literal
+ ;; enclosing HERE, (one of 'string, 'c, 'c++) and (BEG . END) is the
+ ;; boundaries of that literal (including the delimiters).
+ ;;
+ ;; Unless NOT-IN-DELIMITER is non-nil, when TO is inside a two-character
+ ;; comment opener, this is recognized as being in a comment literal.
+ ;;
+ ;; Only elements 3 (in a string), 4 (in a comment), 5 (following a quote), 7
+ ;; (comment type), and 8 (start of comment/string), and possibly 10 (in
+ ;; newer Emacsen only, the syntax of a position after a potential first char
+ ;; of a two char construct) of STATE are valid.
+ (save-excursion
+ (save-restriction
+ (widen)
+ (save-match-data
+ (let* ((base-and-state (c-parse-ps-state-below here))
+ (base (car base-and-state))
+ (s (cdr base-and-state))
+ (s (parse-partial-sexp base here nil nil s))
+ ty start)
+ (cond
+ ((or (nth 3 s) (nth 4 s)) ; in a string or comment
+ (setq ty (cond
+ ((nth 3 s) 'string)
+ ((nth 7 s) 'c++)
+ (t 'c)))
+ (setq start (nth 8 s))
+ (parse-partial-sexp here (point-max)
+ nil ; TARGETDEPTH
+ nil ; STOPBEFORE
+ s ; OLDSTATE
+ 'syntax-table) ; stop at end of literal
+ (list s ty (cons start (point))))
+
+ ((and (not not-in-delimiter) ; inside a comment starter
+ (not (bobp))
+ (progn (backward-char)
+ (and (not (and (memq 'category-properties c-emacs-features)
+ (looking-at "\\s!")))
+ (looking-at c-comment-start-regexp))))
+ (setq ty (if (looking-at c-block-comment-start-regexp) 'c 'c++)
+ start (point))
+ (forward-comment 1)
+ (list s ty (cons start (point))))
+
+ (t (list s))))))))
(defsubst c-state-pp-to-literal (from to &optional not-in-delimiter)
;; Do a parse-partial-sexp from FROM to TO, returning either
;; (STATE TYPE (BEG . END)) if TO is in a literal; or
;; (STATE) otherwise,
;; where STATE is the parsing state at TO, TYPE is the type of the literal
- ;; (one of 'c, 'c++, 'string) and (BEG . END) is the boundaries of the literal.
+ ;; (one of 'c, 'c++, 'string) and (BEG . END) is the boundaries of the literal,
+ ;; including the delimiters.
;;
;; Unless NOT-IN-DELIMITER is non-nil, when TO is inside a two-character
;; comment opener, this is recognized as being in a comment literal.
@@ -2222,32 +2413,130 @@ comment at the start of cc-engine.el for more info."
;; 7 (comment type) and 8 (start of comment/string) (and possibly 9) of
;; STATE are valid.
(save-excursion
- (let ((s (parse-partial-sexp from to))
- ty co-st)
- (cond
- ((or (nth 3 s) (nth 4 s)) ; in a string or comment
- (setq ty (cond
- ((nth 3 s) 'string)
- ((nth 7 s) 'c++)
- (t 'c)))
- (parse-partial-sexp (point) (point-max)
- nil ; TARGETDEPTH
- nil ; STOPBEFORE
- s ; OLDSTATE
- 'syntax-table) ; stop at end of literal
- `(,s ,ty (,(nth 8 s) . ,(point))))
-
- ((and (not not-in-delimiter) ; inside a comment starter
- (not (bobp))
- (progn (backward-char)
- (and (not (looking-at "\\s!"))
- (looking-at c-comment-start-regexp))))
- (setq ty (if (looking-at c-block-comment-start-regexp) 'c 'c++)
- co-st (point))
- (forward-comment 1)
- `(,s ,ty (,co-st . ,(point))))
-
- (t `(,s))))))
+ (save-match-data
+ (let ((s (parse-partial-sexp from to))
+ ty co-st)
+ (cond
+ ((or (nth 3 s) (nth 4 s)) ; in a string or comment
+ (setq ty (cond
+ ((nth 3 s) 'string)
+ ((nth 7 s) 'c++)
+ (t 'c)))
+ (parse-partial-sexp (point) (point-max)
+ nil ; TARGETDEPTH
+ nil ; STOPBEFORE
+ s ; OLDSTATE
+ 'syntax-table) ; stop at end of literal
+ `(,s ,ty (,(nth 8 s) . ,(point))))
+
+ ((and (not not-in-delimiter) ; inside a comment starter
+ (not (bobp))
+ (progn (backward-char)
+ (and (not (looking-at "\\s!"))
+ (looking-at c-comment-start-regexp))))
+ (setq ty (if (looking-at c-block-comment-start-regexp) 'c 'c++)
+ co-st (point))
+ (forward-comment 1)
+ `(,s ,ty (,co-st . ,(point))))
+
+ (t `(,s)))))))
+
+(defun c-cache-to-parse-ps-state (elt)
+ ;; Create a list suitable to use as the old-state parameter to
+ ;; `parse-partial-sexp', out of ELT. ELT is either just a number, a buffer
+ ;; position, or it is a list (POS TYPE STARTING-POS). Here POS is the
+ ;; buffer position the other elements are pertinent for, TYPE is either 'c
+ ;; or 'c++ (for a comment) or a character (for a string delimiter) or t
+ ;; (meaning a string fence opened the string), STARTING-POS is the starting
+ ;; position of the comment or string.
+ (if (consp elt)
+ (let ((depth 0) (containing nil) (last nil)
+ in-string in-comment (after-quote nil)
+ (min-depth 0) com-style com-str-start (intermediate nil)
+ (between-syntax nil)
+ (type (cadr elt)))
+ (setq com-str-start (car (cddr elt)))
+ (cond
+ ((or (numberp type) (eq type t)) ; A string
+ (setq in-string type))
+ ((memq type '(c c++)) ; A comment
+ (setq in-comment t
+ com-style (if (eq type 'c++) 1 nil)))
+ (t (c-benign-error "Invalid type %s in c-cache-to-parse-ps-state"
+ elt)))
+ (list depth containing last
+ in-string in-comment after-quote
+ min-depth com-style com-str-start
+ intermediate nil))
+ (copy-tree '(0 nil nil nil nil nil 0 nil nil nil nil))))
+
+(defun c-parse-ps-state-to-cache (state)
+ ;; Convert STATE, a `parse-partial-sexp' state valid at POINT, to an element
+ ;; for the `c-state-semi-nonlit-pos-cache' cache. This is either POINT
+ ;; (when point is not in a literal) or a list (POINT TYPE STARTING-POS),
+ ;; where TYPE is the type of the literal, either 'string, 'c, or 'c++, and
+ ;; STARTING-POS is the starting position of the comment or string.
+ (cond
+ ((nth 3 state) ; A string
+ (list (point) (nth 3 state) (nth 8 state)))
+ ((nth 4 state) ; A comment
+ (list (point)
+ (if (eq (nth 7 state) 1) 'c++ 'c)
+ (nth 8 state)))
+ (t ; Neither string nor comment.
+ (point))))
+
+(defsubst c-ps-state-cache-pos (elt)
+ ;; Get the buffer position from ELT, an element from the cache
+ ;; `c-state-semi-nonlit-pos-cache'.
+ (if (atom elt)
+ elt
+ (car elt)))
+
+(defun c-parse-ps-state-below (here)
+ ;; Given a buffer position HERE, Return a cons (CACHE-POS . STATE), where
+ ;; CACHE-POS is a position not very far before HERE for which the
+ ;; parse-partial-sexp STATE is valid. Note that the only valid elements of
+ ;; STATE are those concerning comments and strings; STATE is the state of a
+ ;; null `parse-partial-sexp' scan when CACHE-POS is not in a comment or
+ ;; string.
+ (save-excursion
+ (save-restriction
+ (widen)
+ (let ((c c-state-semi-nonlit-pos-cache)
+ elt state pos npos high-elt)
+ ;; Trim the cache to take account of buffer changes.
+ (while (and c (> (c-ps-state-cache-pos (car c))
+ c-state-semi-nonlit-pos-cache-limit))
+ (setq c (cdr c)))
+ (setq c-state-semi-nonlit-pos-cache c)
+
+ (while (and c (> (c-ps-state-cache-pos (car c)) here))
+ (setq high-elt (car c))
+ (setq c (cdr c)))
+ (setq pos (or (and c (c-ps-state-cache-pos (car c)))
+ (point-min)))
+
+ (if high-elt
+ (setq state (c-cache-to-parse-ps-state (car c)))
+ (setq elt (if c (car c) (point-min)))
+ (setq state
+ (if c
+ (c-cache-to-parse-ps-state (car c))
+ (copy-tree '(0 nil nil nil nil nil 0 nil nil nil nil))))
+ (while
+ ;; Add an element to `c-state-semi-nonlit-pos-cache' each iteration.
+ (<= (setq npos (+ pos c-state-nonlit-pos-interval)) here)
+ (setq state (parse-partial-sexp pos npos nil nil state))
+ (setq elt (c-parse-ps-state-to-cache state))
+ (setq c-state-semi-nonlit-pos-cache
+ (cons elt c-state-semi-nonlit-pos-cache))
+ (setq pos npos)))
+
+ (if (> pos c-state-semi-nonlit-pos-cache-limit)
+ (setq c-state-semi-nonlit-pos-cache-limit pos))
+
+ (cons pos state)))))
(defun c-state-safe-place (here)
;; Return a buffer position before HERE which is "safe", i.e. outside any
@@ -2314,45 +2603,6 @@ comment at the start of cc-engine.el for more info."
(setq c-state-nonlit-pos-cache-limit pos))
pos))))
-(defun c-state-semi-safe-place (here)
- ;; Return a buffer position before HERE which is "safe", i.e. outside any
- ;; string or comment. It may be in a macro.
- (save-restriction
- (widen)
- (save-excursion
- (let ((c c-state-semi-nonlit-pos-cache)
- pos npos high-pos lit macro-beg macro-end)
- ;; Trim the cache to take account of buffer changes.
- (while (and c (> (car c) c-state-semi-nonlit-pos-cache-limit))
- (setq c (cdr c)))
- (setq c-state-semi-nonlit-pos-cache c)
-
- (while (and c (> (car c) here))
- (setq high-pos (car c))
- (setq c (cdr c)))
- (setq pos (or (car c) (point-min)))
-
- (unless high-pos
- (while
- ;; Add an element to `c-state-semi-nonlit-pos-cache' each iteration.
- (and
- (<= (setq npos (+ pos c-state-nonlit-pos-interval)) here)
-
- ;; Test for being in a literal. If so, go to after it.
- (progn
- (setq lit (car (cddr (c-state-pp-to-literal pos npos))))
- (or (null lit)
- (prog1 (<= (cdr lit) here)
- (setq npos (cdr lit))))))
-
- (setq pos npos)
- (setq c-state-semi-nonlit-pos-cache
- (cons pos c-state-semi-nonlit-pos-cache))))
-
- (if (> pos c-state-semi-nonlit-pos-cache-limit)
- (setq c-state-semi-nonlit-pos-cache-limit pos))
- pos))))
-
(defun c-state-literal-at (here)
;; If position HERE is inside a literal, return (START . END), the
;; boundaries of the literal (which may be outside the accessible bit of the
@@ -2670,7 +2920,11 @@ comment at the start of cc-engine.el for more info."
(setq ptr (cdr ptr)))
(when (consp ptr)
- (if (eq (cdr ptr) c-state-cache)
+ (if (or (eq (cdr ptr) c-state-cache)
+ (and (consp (cadr ptr))
+ (> (cdr (cadr ptr)) (point-min)))) ; Our new point-min is
+ ; inside a recorded
+ ; brace pair.
(setq c-state-cache nil
c-state-cache-good-pos c-state-min-scan-pos)
(setcdr ptr nil)
@@ -3249,8 +3503,7 @@ comment at the start of cc-engine.el for more info."
;; HERE.
(if (<= here c-state-nonlit-pos-cache-limit)
(setq c-state-nonlit-pos-cache-limit (1- here)))
- (if (<= here c-state-semi-nonlit-pos-cache-limit)
- (setq c-state-semi-nonlit-pos-cache-limit (1- here)))
+ (c-truncate-semi-nonlit-pos-cache here)
;; `c-state-cache':
;; Case 1: if `here' is in a literal containing point-min, everything
@@ -3521,7 +3774,7 @@ comment at the start of cc-engine.el for more info."
conses-not-ok))
(defun c-debug-parse-state ()
- (let ((here (point)) (res1 (c-real-parse-state)) res2)
+ (let ((here (point)) (min-point (point-min)) (res1 (c-real-parse-state)) res2)
(let ((c-state-cache nil)
(c-state-cache-good-pos 1)
(c-state-nonlit-pos-cache nil)
@@ -3548,8 +3801,8 @@ comment at the start of cc-engine.el for more info."
;; "using cache: %s, from scratch: %s")
;; here res1 res2)))
(message (concat "c-parse-state inconsistency at %s: "
- "using cache: %s, from scratch: %s")
- here res1 res2)
+ "using cache: %s, from scratch: %s. POINT-MIN: %s")
+ here res1 res2 min-point)
(message "Old state:")
(c-replay-parse-state-state))
@@ -4088,7 +4341,19 @@ comment at the start of cc-engine.el for more info."
(and
(progn
(setq search-pos (point))
- (re-search-forward regexp bound noerror))
+ (if (re-search-forward regexp bound noerror)
+ t
+ ;; Without the following, when PAREN-LEVEL it non-nil, and
+ ;; NOERROR is not nil or t, and the very first search above
+ ;; has just failed, point would end up at BOUND rather than
+ ;; just before the next close paren.
+ (when (and (eq search-pos start)
+ paren-level
+ (not (memq noerror '(nil t))))
+ (setq state (parse-partial-sexp start bound -1))
+ (if (eq (car state) -1)
+ (setq bound (1- (point)))))
+ nil))
(progn
(setq state (parse-partial-sexp
@@ -4546,8 +4811,7 @@ Note that this function might do hidden buffer changes. See the
comment at the start of cc-engine.el for more info."
(save-restriction
(widen)
- (let* ((safe-place (c-state-semi-safe-place (point)))
- (lit (c-state-pp-to-literal safe-place (point))))
+ (let ((lit (c-state-semi-pp-to-literal (point))))
(or (cadr lit)
(and detect-cpp
(save-excursion (c-beginning-of-macro))
@@ -4569,14 +4833,20 @@ Note that this function might do hidden buffer changes. See the
comment at the start of cc-engine.el for more info."
(save-excursion
- (let* ((pos (point))
- (lim (or lim (c-state-semi-safe-place pos)))
- (pp-to-lit (save-restriction
- (widen)
- (c-state-pp-to-literal lim pos not-in-delimiter)))
- (state (car pp-to-lit))
- (lit-limits (car (cddr pp-to-lit))))
-
+ (let*
+ ((pos (point))
+ (lit-limits
+ (if lim
+ (let ((s (parse-partial-sexp lim (point))))
+ (when (or (nth 3 s) (nth 4 s))
+ (cons (nth 8 s)
+ (progn (parse-partial-sexp (point) (point-max)
+ nil nil
+ s
+ 'syntax-table)
+ (point)))))
+ (let ((pp-to-lit (c-state-full-pp-to-literal pos not-in-delimiter)))
+ (car (cddr pp-to-lit))))))
(cond
(lit-limits)
@@ -4615,6 +4885,16 @@ comment at the start of cc-engine.el for more info."
(if beg (cons beg end))))))
))))
+(defun c-literal-start (&optional safe-pos)
+ "Return the start of the string or comment surrounding point, or nil if
+point isn't in one. SAFE-POS, if non-nil, is a position before point which is
+a known \"safe position\", i.e. outside of any string or comment."
+ (if safe-pos
+ (let ((s (parse-partial-sexp safe-pos (point))))
+ (and (or (nth 3 s) (nth 4 s))
+ (nth 8 s)))
+ (car (cddr (c-state-semi-pp-to-literal (point))))))
+
;; In case external callers use this; it did have a docstring.
(defalias 'c-literal-limits-fast 'c-literal-limits)
@@ -4679,13 +4959,10 @@ comment at the start of cc-engine.el for more info."
(defsubst c-determine-limit-get-base (start try-size)
;; Get a "safe place" approximately TRY-SIZE characters before START.
- ;; This doesn't preserve point.
+ ;; This defsubst doesn't preserve point.
(let* ((pos (max (- start try-size) (point-min)))
- (base (c-state-semi-safe-place pos))
- (s (parse-partial-sexp base pos)))
- (if (or (nth 4 s) (nth 3 s)) ; comment or string
- (nth 8 s)
- (point))))
+ (s (c-state-semi-pp-to-literal pos)))
+ (or (car (cddr s)) pos)))
(defun c-determine-limit (how-far-back &optional start try-size)
;; Return a buffer position HOW-FAR-BACK non-literal characters from START
@@ -4895,6 +5172,14 @@ comment at the start of cc-engine.el for more info."
(and (< (point) cfd-limit)
(c-got-face-at (point) c-literal-faces))))
t) ; Continue the loop over pseudo matches.
+ ((and c-opt-identifier-concat-key
+ (match-string 1)
+ (save-excursion
+ (goto-char (match-beginning 1))
+ (save-match-data
+ (looking-at c-opt-identifier-concat-key))))
+ ;; Found, e.g., "::" in C++
+ t)
((and (match-string 1)
(string= (match-string 1) ":")
(save-excursion
@@ -5065,8 +5350,9 @@ comment at the start of cc-engine.el for more info."
;; arrived at something that looks like a start or else
;; resort to `c-literal-limits'.
(unless (looking-at c-literal-start-regexp)
- (let ((range (c-literal-limits)))
- (if range (goto-char (car range)))))
+ (let ((lit-start (c-literal-start)))
+ (if lit-start (goto-char lit-start)))
+ )
(setq start-in-literal (point))) ; end of `and' arm.
@@ -5577,6 +5863,9 @@ comment at the start of cc-engine.el for more info."
;; Set by c-common-init in cc-mode.el.
(defvar c-new-BEG)
(defvar c-new-END)
+;; Set by c-after-change in cc-mode.el.
+(defvar c-old-BEG)
+(defvar c-old-END)
(defun c-before-change-check-<>-operators (beg end)
;; Unmark certain pairs of "< .... >" which are currently marked as
@@ -5600,12 +5889,12 @@ comment at the start of cc-engine.el for more info."
;; 2010-01-29.
(save-excursion
(c-save-buffer-state
- ((beg-lit-limits (progn (goto-char beg) (c-literal-limits)))
+ ((beg-lit-start (progn (goto-char beg) (c-literal-start)))
(end-lit-limits (progn (goto-char end) (c-literal-limits)))
new-beg new-end beg-limit end-limit)
;; Locate the earliest < after the barrier before the changed region,
;; which isn't already marked as a paren.
- (goto-char (if beg-lit-limits (car beg-lit-limits) beg))
+ (goto-char (or beg-lit-start beg))
(setq beg-limit (c-determine-limit 512))
;; Remove the syntax-table/category properties from each pertinent <...>
@@ -5697,6 +5986,350 @@ comment at the start of cc-engine.el for more info."
'c-decl-arg-start)))))))
(or (c-forward-<>-arglist nil)
(forward-char)))))
+
+
+;; Functions to handle C++ raw strings.
+;;
+;; A valid C++ raw string looks like
+;; R"<id>(<contents>)<id>"
+;; , where <id> is an identifier from 0 to 16 characters long, not containing
+;; spaces, control characters, double quote or left/right paren. <contents>
+;; can include anything which isn't the terminating )<id>", including new
+;; lines, "s, parentheses, etc.
+;;
+;; CC Mode handles C++ raw strings by the use of `syntax-table' text
+;; properties as follows:
+;;
+;; (i) On a validly terminated raw string, no `syntax-table' text properties
+;; are applied to the opening and closing delimiters, but any " in the
+;; contents is given the property value "punctuation" (`(1)') to prevent it
+;; interacting with the "s in the delimiters.
+;;
+;; The font locking routine `c-font-lock-c++-raw-strings' (in cc-fonts.el)
+;; recognizes valid raw strings, and fontifies the delimiters (apart from
+;; the parentheses) with the default face and the parentheses and the
+;; <contents> with font-lock-string-face.
+;;
+;; (ii) A valid, but unterminated, raw string opening delimiter gets the
+;; "punctuation" value (`(1)') of the `syntax-table' text property, and the
+;; open parenthesis gets the "string fence" value (`(15)').
+;;
+;; `c-font-lock-c++-raw-strings' puts c-font-lock-warning-face on the entire
+;; unmatched opening delimiter (from the R up to the open paren), and allows
+;; the rest of the buffer to get font-lock-string-face, caused by the
+;; unmatched "string fence" `syntax-table' text property value.
+;;
+;; (iii) Inside a macro, a valid raw string is handled as in (i). An
+;; unmatched opening delimiter is handled slightly differently. In addition
+;; to the "punctuation" and "string fence" properties on the delimiter,
+;; another "string fence" `syntax-table' property is applied to the last
+;; possible character of the macro before the terminating linefeed (if there
+;; is such a character after the "("). This "last possible" character is
+;; never a backslash escaping the end of line. If the character preceding
+;; this "last possible" character is itself a backslash, this preceding
+;; character gets a "punctuation" `syntax-table' value. If the "(" is
+;; already at the end of the macro, it gets the "punctuation" value, and no
+;; "string fence"s are used.
+;;
+;; The effect on the fontification of either of these tactics is that rest of
+;; the macro (if any) after the "(" gets font-lock-string-face, but the rest
+;; of the file is fontified normally.
+
+
+(defun c-raw-string-pos ()
+ ;; Get POINT's relationship to any containing raw string.
+ ;; If point isn't in a raw string, return nil.
+ ;; Otherwise, return the following list:
+ ;;
+ ;; (POS B\" B\( E\) E\")
+ ;;
+ ;; , where POS is the symbol `open-delim' if point is in the opening
+ ;; delimiter, the symbol `close-delim' if it's in the closing delimiter, and
+ ;; nil if it's in the string body. B\", B\(, E\), E\" are the positions of
+ ;; the opening and closing quotes and parentheses of a correctly terminated
+ ;; raw string. (N.B.: E\) and E\" are NOT on the "outside" of these
+ ;; characters.) If the raw string is not terminated, E\) and E\" are set to
+ ;; nil.
+ ;;
+ ;; Note: this routine is dependant upon the correct syntax-table text
+ ;; properties being set.
+ (let ((state (c-state-semi-pp-to-literal (point)))
+ open-quote-pos open-paren-pos close-paren-pos close-quote-pos id)
+ (save-excursion
+ (when
+ (and
+ (cond
+ ((null (cadr state))
+ (or (eq (char-after) ?\")
+ (search-backward "\"" (max (- (point) 17) (point-min)) t)))
+ ((and (eq (cadr state) 'string)
+ (goto-char (nth 2 state))
+ (or (eq (char-after) ?\")
+ (search-backward "\"" (max (- (point) 17) (point-min)) t))
+ (not (bobp)))))
+ (eq (char-before) ?R)
+ (looking-at "\"\\([^ ()\\\n\r\t]\\{0,16\\}\\)("))
+ (setq open-quote-pos (point)
+ open-paren-pos (match-end 1)
+ id (match-string-no-properties 1))
+ (goto-char (1+ open-paren-pos))
+ (when (and (not (c-get-char-property open-paren-pos 'syntax-table))
+ (search-forward (concat ")" id "\"") nil t))
+ (setq close-paren-pos (match-beginning 0)
+ close-quote-pos (1- (point))))))
+ (and open-quote-pos
+ (list
+ (cond
+ ((<= (point) open-paren-pos)
+ 'open-delim)
+ ((and close-paren-pos
+ (> (point) close-paren-pos))
+ 'close-delim)
+ (t nil))
+ open-quote-pos open-paren-pos close-paren-pos close-quote-pos))))
+
+(defun c-depropertize-raw-string (id open-quote open-paren bound)
+ ;; Point is immediately after a raw string opening delimiter. Remove any
+ ;; `syntax-table' text properties associated with the delimiter (if it's
+ ;; unmatched) or the raw string.
+ ;;
+ ;; ID, a string, is the delimiter's identifier. OPEN-QUOTE and OPEN-PAREN
+ ;; are the buffer positions of the delimiter's components. BOUND is the
+ ;; bound for searching for a matching closing delimiter; it is usually nil,
+ ;; but if we're inside a macro, it's the end of the macro.
+ ;;
+ ;; Point is moved to after the (terminated) raw string, or left after the
+ ;; unmatched opening delimiter, as the case may be. The return value is of
+ ;; no significance.
+ (let ((open-paren-prop (c-get-char-property open-paren 'syntax-table)))
+ (cond
+ ((null open-paren-prop)
+ ;; A terminated raw string
+ (when (search-forward (concat ")" id "\"") nil t)
+ (let* ((closing-paren (match-beginning 0))
+ (first-punctuation
+ (save-match-data
+ (goto-char (1+ open-paren))
+ (and (c-search-forward-char-property 'syntax-table '(1)
+ closing-paren)
+ (1- (point)))))
+ )
+ (when first-punctuation
+ (c-clear-char-property-with-value
+ first-punctuation (match-beginning 0) 'syntax-table '(1))
+ (c-truncate-semi-nonlit-pos-cache first-punctuation)
+ ))))
+ ((or (and (equal open-paren-prop '(15)) (null bound))
+ (equal open-paren-prop '(1)))
+ ;; An unterminated raw string either not in a macro, or in a macro with
+ ;; the open parenthesis right up against the end of macro
+ (c-clear-char-property open-quote 'syntax-table)
+ (c-truncate-semi-nonlit-pos-cache open-quote)
+ (c-clear-char-property open-paren 'syntax-table))
+ (t
+ ;; An unterminated string in a macro, with at least one char after the
+ ;; open paren
+ (c-clear-char-property open-quote 'syntax-table)
+ (c-truncate-semi-nonlit-pos-cache open-quote)
+ (c-clear-char-property open-paren 'syntax-table)
+ (let ((after-string-fence-pos
+ (save-excursion
+ (goto-char (1+ open-paren))
+ (c-search-forward-char-property 'syntax-table '(15) bound))))
+ (when after-string-fence-pos
+ (c-clear-char-property (1- after-string-fence-pos) 'syntax-table)))
+ ))))
+
+(defun c-depropertize-raw-strings-in-region (start finish)
+ ;; Remove any `syntax-table' text properties associated with C++ raw strings
+ ;; contained in the region (START FINISH). Point is undefined at entry and
+ ;; exit, and the return value has no significance.
+ (goto-char start)
+ (while (and (< (point) finish)
+ (re-search-forward
+ (concat "\\(" ; 1
+ c-anchored-cpp-prefix ; 2
+ "\\)\\|\\(" ; 3
+ "R\"\\([^ ()\\\n\r\t]\\{0,16\\}\\)(" ; 4
+ "\\)")
+ finish t))
+ (when (save-excursion
+ (goto-char (match-beginning 0)) (not (c-in-literal)))
+ (if (match-beginning 4) ; the id
+ ;; We've found a raw string
+ (c-depropertize-raw-string
+ (match-string-no-properties 4) ; id
+ (1+ (match-beginning 3)) ; open quote
+ (match-end 4) ; open paren
+ nil) ; bound
+ ;; We've found a CPP construct. Search for raw strings within it.
+ (goto-char (match-beginning 2)) ; the "#"
+ (c-end-of-macro)
+ (let ((eom (point)))
+ (goto-char (match-end 2)) ; after the "#".
+ (while (and (< (point) eom)
+ (c-syntactic-re-search-forward
+ "R\"\\([^ ()\\\n\r\t]\\{0,16\\}\\)(" eom t))
+ (c-depropertize-raw-string
+ (match-string-no-properties 1) ; id
+ (1+ (match-beginning 0)) ; open quote
+ (match-end 1) ; open paren
+ eom))))))) ; bound.
+
+(defun c-before-change-check-raw-strings (beg end)
+ ;; This function clears `syntax-table' text properties from C++ raw strings
+ ;; in the region (c-new-BEG c-new-END). BEG and END are the standard
+ ;; arguments supplied to any before-change function.
+ ;;
+ ;; Point is undefined on both entry and exit, and the return value has no
+ ;; significance.
+ ;;
+ ;; This function is called as a before-change function solely due to its
+ ;; membership of the C++ value of `c-get-state-before-change-functions'.
+ (c-save-buffer-state
+ ((beg-rs (progn (goto-char beg) (c-raw-string-pos)))
+ (beg-plus (if (null beg-rs)
+ beg
+ (max beg
+ (1+ (or (nth 4 beg-rs) (nth 2 beg-rs))))))
+ (end-rs (progn (goto-char end) (c-raw-string-pos))) ; FIXME!!!
+ ; Optimize this so that we don't call
+ ; `c-raw-string-pos' twice when once
+ ; will do. (2016-06-02).
+ (end-minus (if (null end-rs)
+ end
+ (min end (cadr end-rs))))
+ )
+ (when beg-rs
+ (setq c-new-BEG (min c-new-BEG (1- (cadr beg-rs)))))
+ (c-depropertize-raw-strings-in-region c-new-BEG beg-plus)
+
+ (when end-rs
+ (setq c-new-END (max c-new-END
+ (1+ (or (nth 4 end-rs)
+ (nth 2 end-rs))))))
+ (c-depropertize-raw-strings-in-region end-minus c-new-END)))
+
+(defun c-propertize-raw-string-opener (id open-quote open-paren bound)
+ ;; Point is immediately after a raw string opening delimiter. Apply any
+ ;; pertinent `syntax-table' text properties to the delimiter and also the
+ ;; raw string, should there be a valid matching closing delimiter.
+ ;;
+ ;; ID, a string, is the delimiter's identifier. OPEN-QUOTE and OPEN-PAREN
+ ;; are the buffer positions of the delimiter's components. BOUND is the
+ ;; bound for searching for a matching closing delimiter; it is usually nil,
+ ;; but if we're inside a macro, it's the end of the macro.
+ ;;
+ ;; Point is moved to after the (terminated) raw string, or left after the
+ ;; unmatched opening delimiter, as the case may be. The return value is of
+ ;; no significance.
+ (if (search-forward (concat ")" id "\"") bound t)
+ (let ((end-string (match-beginning 0))
+ (after-quote (match-end 0)))
+ (goto-char open-paren)
+ (while (progn (skip-syntax-forward "^\"" end-string)
+ (< (point) end-string))
+ (c-put-char-property (point) 'syntax-table '(1)) ; punctuation
+ (c-truncate-semi-nonlit-pos-cache (point))
+ (forward-char))
+ (goto-char after-quote))
+ (c-put-char-property open-quote 'syntax-table '(1)) ; punctuation
+ (c-truncate-semi-nonlit-pos-cache open-quote)
+ (c-put-char-property open-paren 'syntax-table '(15)) ; generic string
+ (when bound
+ ;; In a CPP construct, we try to apply a generic-string `syntax-table'
+ ;; text property to the last possible character in the string, so that
+ ;; only characters within the macro get "stringed out".
+ (goto-char bound)
+ (if (save-restriction
+ (narrow-to-region (1+ open-paren) (point-max))
+ (re-search-backward
+ (eval-when-compile
+ ;; This regular expression matches either an escape pair (which
+ ;; isn't an escaped NL) (submatch 5) or a non-escaped character
+ ;; (which isn't itself a backslash) (submatch 10). The long
+ ;; preambles to these (respectively submatches 2-4 and 6-9)
+ ;; ensure that we have the correct parity for sequences of
+ ;; backslashes, etc..
+ (concat "\\(" ; 1
+ "\\(\\`[^\\]?\\|[^\\][^\\]\\)\\(\\\\\\(.\\|\n\\)\\)*" ; 2-4
+ "\\(\\\\.\\)" ; 5
+ "\\|"
+ "\\(\\`\\|[^\\]\\|\\(\\`[^\\]?\\|[^\\][^\\]\\)\\(\\\\\\(.\\|\n\\)\\)+\\)" ; 6-9
+ "\\([^\\]\\)" ; 10
+ "\\)"
+ "\\(\\\\\n\\)*\\=")) ; 11
+ (1+ open-paren) t))
+ (if (match-beginning 10)
+ (progn
+ (c-put-char-property (match-beginning 10) 'syntax-table '(15))
+ (c-truncate-semi-nonlit-pos-cache (match-beginning 10)))
+ (c-put-char-property (match-beginning 5) 'syntax-table '(1))
+ (c-put-char-property (1+ (match-beginning 5)) 'syntax-table '(15))
+ (c-truncate-semi-nonlit-pos-cache (1+ (match-beginning 5))))
+ (c-put-char-property open-paren 'syntax-table '(1)))
+ (goto-char bound))))
+
+(defun c-after-change-re-mark-raw-strings (beg end old-len)
+ ;; This function applies `syntax-table' text properties to C++ raw strings
+ ;; beginning in the region (c-new-BEG c-new-END). BEG, END, and OLD-LEN are
+ ;; the standard arguments supplied to any after-change function.
+ ;;
+ ;; Point is undefined on both entry and exit, and the return value has no
+ ;; significance.
+ ;;
+ ;; This function is called as an after-change function solely due to its
+ ;; membership of the C++ value of `c-before-font-lock-functions'.
+ (c-save-buffer-state ()
+ ;; If the region (c-new-BEG c-new-END) has expanded, remove
+ ;; `syntax-table' text-properties from the new piece(s).
+ (when (< c-new-BEG c-old-BEG)
+ (let ((beg-rs (progn (goto-char c-old-BEG) (c-raw-string-pos))))
+ (c-depropertize-raw-strings-in-region
+ c-new-BEG
+ (if beg-rs
+ (1+ (or (nth 4 beg-rs) (nth 2 beg-rs)))
+ c-old-BEG))))
+ (when (> c-new-END c-old-END)
+ (let ((end-rs (progn (goto-char c-old-END) (c-raw-string-pos))))
+ (c-depropertize-raw-strings-in-region
+ (if end-rs
+ (cadr end-rs)
+ c-old-END)
+ c-new-END)))
+
+ (goto-char c-new-BEG)
+ (while (and (< (point) c-new-END)
+ (re-search-forward
+ (concat "\\(" ; 1
+ c-anchored-cpp-prefix ; 2
+ "\\)\\|\\(" ; 3
+ "R\"\\([^ ()\\\n\r\t]\\{0,16\\}\\)(" ; 4
+ "\\)")
+ c-new-END t))
+ (when (save-excursion
+ (goto-char (match-beginning 0)) (not (c-in-literal)))
+ (if (match-beginning 4) ; the id
+ ;; We've found a raw string.
+ (c-propertize-raw-string-opener
+ (match-string-no-properties 4) ; id
+ (1+ (match-beginning 3)) ; open quote
+ (match-end 4) ; open paren
+ nil) ; bound
+ ;; We've found a CPP construct. Search for raw strings within it.
+ (goto-char (match-beginning 2)) ; the "#"
+ (c-end-of-macro)
+ (let ((eom (point)))
+ (goto-char (match-end 2)) ; after the "#".
+ (while (and (< (point) eom)
+ (c-syntactic-re-search-forward
+ "R\"\\([^ ()\\\n\r\t]\\{0,16\\}\\)(" eom t))
+ (c-propertize-raw-string-opener
+ (match-string-no-properties 1) ; id
+ (1+ (match-beginning 0)) ; open quote
+ (match-end 1) ; open paren
+ eom)))))))) ; bound
+
;; Handling of small scale constructs like types and names.
@@ -5811,13 +6444,16 @@ comment at the start of cc-engine.el for more info."
`(c-forward-type)
`(c-forward-name)))
nil
- (and (looking-at c-keywords-regexp)
- (c-forward-keyword-clause 1))))
+ (cond ((looking-at c-keywords-regexp)
+ (c-forward-keyword-clause 1))
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause)))))
(when (memq res '(t known found prefix maybe))
(when c-record-type-identifiers
- ,(if (eq type 'type)
- `(c-record-type-id c-last-identifier-range)
- `(c-record-ref-id c-last-identifier-range)))
+ ,(if (eq type 'type)
+ `(c-record-type-id c-last-identifier-range)
+ `(c-record-ref-id c-last-identifier-range)))
t)))
(defmacro c-forward-id-comma-list (type update-safe-pos)
@@ -5835,6 +6471,17 @@ comment at the start of cc-engine.el for more info."
(c-forward-syntactic-ws)
(c-forward-keyword-prefixed-id ,type)))))
+(defun c-forward-noise-clause ()
+ ;; Point is at a c-noise-macro-with-parens-names macro identifier. Go
+ ;; forward over this name, any parenthesis expression which follows it, and
+ ;; any syntactic WS, ending up at the next token. If there is an unbalanced
+ ;; paren expression, leave point at it. Always Return t.
+ (c-forward-token-2)
+ (if (and (eq (char-after) ?\()
+ (c-go-list-forward))
+ (c-forward-syntactic-ws))
+ t)
+
(defun c-forward-keyword-clause (match)
;; Submatch MATCH in the current match data is assumed to surround a
;; token. If it's a keyword, move over it and any immediately
@@ -5984,7 +6631,6 @@ comment at the start of cc-engine.el for more info."
;; `nconc' doesn't mind that the tail of
;; `c-record-found-types' is t.
(nconc c-record-found-types c-record-type-identifiers)))
- (if (c-major-mode-is 'java-mode) (c-fontify-recorded-types-and-refs))
t)
(goto-char start)
@@ -6030,28 +6676,31 @@ comment at the start of cc-engine.el for more info."
(progn
(c-forward-syntactic-ws)
(when (or (and c-record-type-identifiers all-types)
- (c-major-mode-is 'java-mode))
- ;; All encountered identifiers are types, so set the
- ;; promote flag and parse the type.
- (progn
- (c-forward-syntactic-ws)
- (if (looking-at "\\?")
- (forward-char)
- (when (looking-at c-identifier-start)
+ (not (equal c-inside-<>-type-key "\\(\\<\\>\\)")))
+ (c-forward-syntactic-ws)
+ (cond
+ ((eq (char-after) ??)
+ (forward-char))
+ ((and (looking-at c-identifier-start)
+ (not (looking-at c-keywords-regexp)))
+ (if (or (and all-types c-record-type-identifiers)
+ (c-major-mode-is 'java-mode))
+ ;; All encountered identifiers are types, so set the
+ ;; promote flag and parse the type.
(let ((c-promote-possible-types t)
(c-record-found-types t))
- (c-forward-type))))
+ (c-forward-type))
+ (c-forward-token-2))))
- (c-forward-syntactic-ws)
+ (c-forward-syntactic-ws)
- (when (or (looking-at "extends")
- (looking-at "super"))
- (forward-word-strictly)
- (c-forward-syntactic-ws)
- (let ((c-promote-possible-types t)
- (c-record-found-types t))
- (c-forward-type)
- (c-forward-syntactic-ws)))))
+ (when (looking-at c-inside-<>-type-key)
+ (goto-char (match-end 1))
+ (c-forward-syntactic-ws)
+ (let ((c-promote-possible-types t)
+ (c-record-found-types t))
+ (c-forward-type))
+ (c-forward-syntactic-ws)))
(setq pos (point)) ; e.g. first token inside the '<'
@@ -6372,9 +7021,7 @@ comment at the start of cc-engine.el for more info."
((and c-recognize-<>-arglists
(eq (char-after) ?<))
;; Maybe an angle bracket arglist.
- (when (let ((c-record-type-identifiers t)
- (c-record-found-types t)
- (c-last-identifier-range))
+ (when (let (c-last-identifier-range)
(c-forward-<>-arglist nil))
(c-forward-syntactic-ws)
@@ -6468,6 +7115,17 @@ comment at the start of cc-engine.el for more info."
; "typedef".
(goto-char (match-end 1))
(c-forward-syntactic-ws)
+
+ (while (cond
+ ((looking-at c-decl-hangon-key)
+ (c-forward-keyword-clause 1))
+ ((looking-at c-pack-key)
+ (goto-char (match-end 1))
+ (c-forward-syntactic-ws))
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause))))
+
(setq pos (point))
(setq name-res (c-forward-name))
@@ -6694,6 +7352,31 @@ comment at the start of cc-engine.el for more info."
(prog1 (car ,ps)
(setq ,ps (cdr ,ps)))))
+(defun c-back-over-compound-identifier ()
+ ;; Point is putatively just after a "compound identifier", i.e. something
+ ;; looking (in C++) like this "FQN::of::base::Class". Move to the start of
+ ;; this construct and return t. If the parsing fails, return nil, leaving
+ ;; point unchanged.
+ (let ((here (point))
+ end)
+ (if (not (c-on-identifier))
+ nil
+ (c-simple-skip-symbol-backward)
+ (while
+ (progn
+ (setq end (point))
+ (c-backward-syntactic-ws)
+ (c-backward-token-2)
+ (and
+ c-opt-identifier-concat-key
+ (looking-at c-opt-identifier-concat-key)
+ (progn
+ (c-backward-syntactic-ws)
+ (c-simple-skip-symbol-backward))))
+ (setq end (point)))
+ (goto-char end)
+ t)))
+
(defun c-back-over-member-initializer-braces ()
;; Point is just after a closing brace/parenthesis. Try to parse this as a
;; C++ member initializer list, going back to just after the introducing ":"
@@ -6704,7 +7387,7 @@ comment at the start of cc-engine.el for more info."
(when (not (c-go-list-backward))
(throw 'done nil))
(c-backward-syntactic-ws)
- (when (not (c-simple-skip-symbol-backward))
+ (when (not (c-back-over-compound-identifier))
(throw 'done nil))
(c-backward-syntactic-ws)
@@ -6716,7 +7399,7 @@ comment at the start of cc-engine.el for more info."
(when (not (c-go-list-backward))
(throw 'done nil))
(c-backward-syntactic-ws)
- (when (not (c-simple-skip-symbol-backward))
+ (when (not (c-back-over-compound-identifier))
(throw 'done nil))
(c-backward-syntactic-ws))
@@ -6740,7 +7423,7 @@ comment at the start of cc-engine.el for more info."
(when (not (c-go-list-backward))
(throw 'done nil))
(c-backward-syntactic-ws)
- (when (not (c-simple-skip-symbol-backward))
+ (when (not (c-back-over-compound-identifier))
(throw 'level nil))
(c-backward-syntactic-ws)))
@@ -6762,7 +7445,7 @@ comment at the start of cc-engine.el for more info."
(when (not (c-go-list-backward))
(throw 'done nil))
(c-backward-syntactic-ws))
- (when (c-simple-skip-symbol-backward)
+ (when (c-back-over-compound-identifier)
(c-backward-syntactic-ws))
(c-back-over-list-of-member-inits)
(and (eq (char-before) ?:)
@@ -6778,7 +7461,7 @@ comment at the start of cc-engine.el for more info."
(catch 'level
(goto-char pos)
(c-backward-syntactic-ws)
- (when (not (c-simple-skip-symbol-backward))
+ (when (not (c-back-over-compound-identifier))
(throw 'level nil))
(c-backward-syntactic-ws)
(c-back-over-list-of-member-inits)
@@ -6875,31 +7558,39 @@ comment at the start of cc-engine.el for more info."
;; of the while. These are, e.g. "*" in "int *foo" or "(" and
;; "*" in "int (*foo) (void)" (Note similar code in
;; `c-forward-decl-or-cast-1'.)
- (while (and (looking-at c-type-decl-prefix-key)
- (if (and (c-major-mode-is 'c++-mode)
- (match-beginning 3))
- ;; If the third submatch matches in C++ then
- ;; we're looking at an identifier that's a
- ;; prefix only if it specifies a member pointer.
- (progn
- (setq id-start (point))
- (c-forward-name)
- (if (looking-at "\\(::\\)")
- ;; We only check for a trailing "::" and
- ;; let the "*" that should follow be
- ;; matched in the next round.
- t
- ;; It turned out to be the real identifier,
- ;; so flag that and stop.
- (setq got-identifier t)
- nil))
- t))
- (if (eq (char-after) ?\()
- (progn
- (setq paren-depth (1+ paren-depth))
- (forward-char))
- (goto-char (match-end 1)))
- (c-forward-syntactic-ws))
+ (while
+ (cond
+ ((looking-at c-decl-hangon-key)
+ (c-forward-keyword-clause 1))
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause))
+ ((and (looking-at c-type-decl-prefix-key)
+ (if (and (c-major-mode-is 'c++-mode)
+ (match-beginning 3))
+ ;; If the third submatch matches in C++ then
+ ;; we're looking at an identifier that's a
+ ;; prefix only if it specifies a member pointer.
+ (progn
+ (setq id-start (point))
+ (c-forward-name)
+ (if (looking-at "\\(::\\)")
+ ;; We only check for a trailing "::" and
+ ;; let the "*" that should follow be
+ ;; matched in the next round.
+ t
+ ;; It turned out to be the real identifier,
+ ;; so flag that and stop.
+ (setq got-identifier t)
+ nil))
+ t))
+ (if (eq (char-after) ?\()
+ (progn
+ (setq paren-depth (1+ paren-depth))
+ (forward-char))
+ (goto-char (match-end 1)))
+ (c-forward-syntactic-ws)
+ t)))
;; If we haven't passed the identifier already, do it now.
(unless got-identifier
@@ -6924,9 +7615,13 @@ comment at the start of cc-engine.el for more info."
;; Skip over any trailing bit, such as "__attribute__".
(progn
- (when (looking-at c-decl-hangon-key)
- (c-forward-keyword-clause 1))
- (<= (point) limit))
+ (while (cond
+ ((looking-at c-decl-hangon-key)
+ (c-forward-keyword-clause 1))
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause))))
+ (<= (point) limit))
;; Search syntactically to the end of the declarator (";",
;; ",", a closing paren, eob etc) or to the beginning of an
@@ -6957,9 +7652,9 @@ comment at the start of cc-engine.el for more info."
;; If a declaration is parsed:
;;
;; The point is left at the first token after the first complete
- ;; declarator, if there is one. The return value is a cons where
- ;; the car is the position of the first token in the declarator. (See
- ;; below for the cdr.)
+ ;; declarator, if there is one. The return value is a list of 4 elements,
+ ;; where the first is the position of the first token in the declarator.
+ ;; (See below for the other three.)
;; Some examples:
;;
;; void foo (int a, char *b) stuff ...
@@ -6990,7 +7685,7 @@ comment at the start of cc-engine.el for more info."
;;
;;
;;
- ;; The cdr of the return value is non-nil when a
+ ;; The second element of the return value is non-nil when a
;; `c-typedef-decl-kwds' specifier is found in the declaration.
;; Specifically it is a dotted pair (A . B) where B is t when a
;; `c-typedef-kwds' ("typedef") is present, and A is t when some
@@ -6998,6 +7693,10 @@ comment at the start of cc-engine.el for more info."
;; specifier is present. I.e., (some of) the declared
;; identifier(s) are types.
;;
+ ;; The third element of the return value is non-nil when the declaration
+ ;; parsed might be an expression. The fourth element is the position of
+ ;; the start of the type identifier.
+ ;;
;; If a cast is parsed:
;;
;; The point is left at the first token after the closing paren of
@@ -7017,6 +7716,8 @@ comment at the start of cc-engine.el for more info."
;; 'arglist Some other type of arglist.
;; nil Some other context or unknown context. Includes
;; within the parens of an if, for, ... construct.
+ ;; 'not-decl This value is never supplied to this function. It
+ ;; would mean we're definitely not in a declaration.
;;
;; LAST-CAST-END is the first token after the closing paren of a
;; preceding cast, or nil if none is known. If
@@ -7090,12 +7791,27 @@ comment at the start of cc-engine.el for more info."
cast-end
;; Have we got a new-style C++11 "auto"?
new-style-auto
+ ;; Set when the symbol before `preceding-token-end' is known to
+ ;; terminate the previous construct, or when we're at point-min.
+ at-decl-start
;; Save `c-record-type-identifiers' and
;; `c-record-ref-identifiers' since ranges are recorded
;; speculatively and should be thrown away if it turns out
;; that it isn't a declaration or cast.
(save-rec-type-ids c-record-type-identifiers)
- (save-rec-ref-ids c-record-ref-identifiers))
+ (save-rec-ref-ids c-record-ref-identifiers)
+ ;; Set when we parse a declaration which might also be an expression,
+ ;; such as "a *b". See CASE 16 and CASE 17.
+ maybe-expression)
+
+ (save-excursion
+ (goto-char preceding-token-end)
+ (setq at-decl-start
+ (or (bobp)
+ (let ((tok-end (point)))
+ (c-backward-token-2)
+ (member (buffer-substring-no-properties (point) tok-end)
+ c-pre-start-tokens)))))
(while (c-forward-annotation)
(c-forward-syntactic-ws))
@@ -7105,18 +7821,25 @@ comment at the start of cc-engine.el for more info."
;; macros like __INLINE__, so we recognize both types and known
;; specifiers after them too.
(while
- (let* ((start (point)) kwd-sym kwd-clause-end found-type)
+ (let* ((start (point)) kwd-sym kwd-clause-end found-type noise-start)
+ (cond
;; Look for a specifier keyword clause.
- (when (or (looking-at c-prefix-spec-kwds-re) ;FIXME!!! includes auto
- (and (c-major-mode-is 'java-mode)
- (looking-at "@[A-Za-z0-9]+")))
- (if (save-match-data (looking-at c-typedef-key))
- (setq at-typedef t))
+ ((or (looking-at c-prefix-spec-kwds-re)
+ (and (c-major-mode-is 'java-mode)
+ (looking-at "@[A-Za-z0-9]+")))
+ (save-match-data
+ (if (looking-at c-typedef-key)
+ (setq at-typedef t)))
(setq kwd-sym (c-keyword-sym (match-string 1)))
(save-excursion
(c-forward-keyword-clause 1)
(setq kwd-clause-end (point))))
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (setq noise-start (point))
+ (c-forward-noise-clause)
+ (setq kwd-clause-end (point))))
(when (setq found-type (c-forward-type t)) ; brace-block-too
;; Found a known or possible type or a prefix of a known type.
@@ -7154,16 +7877,17 @@ comment at the start of cc-engine.el for more info."
backup-at-type-decl nil
backup-maybe-typeless nil))
- (if kwd-sym
+ (if (or kwd-sym noise-start)
(progn
;; Handle known specifier keywords and
;; `c-decl-hangon-kwds' which can occur after known
;; types.
- (if (c-keyword-member kwd-sym 'c-decl-hangon-kwds)
- ;; It's a hang-on keyword that can occur anywhere.
+ (if (or (c-keyword-member kwd-sym 'c-decl-hangon-kwds)
+ noise-start)
+ ;; It's a hang-on keyword or noise clause that can occur
+ ;; anywhere.
(progn
- (setq at-decl-or-cast t)
(if at-type
;; Move the identifier start position if
;; we've passed a type.
@@ -7215,8 +7939,12 @@ comment at the start of cc-engine.el for more info."
;; If a known type was found, we still need to skip over any
;; hangon keyword clauses after it. Otherwise it has already
;; been done in the loop above.
- (while (looking-at c-decl-hangon-key)
- (c-forward-keyword-clause 1))
+ (while
+ (cond ((looking-at c-decl-hangon-key)
+ (c-forward-keyword-clause 1))
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause))))
(setq id-start (point)))
((eq at-type 'prefix)
@@ -7297,7 +8025,10 @@ comment at the start of cc-engine.el for more info."
;; arglist paren that gets entered.
c-parse-and-markup-<>-arglists
;; Start of the identifier for which `got-identifier' was set.
- name-start)
+ name-start
+ ;; Position after (innermost) open parenthesis encountered in the
+ ;; prefix operators.
+ after-paren-pos)
(goto-char id-start)
@@ -7308,7 +8039,8 @@ comment at the start of cc-engine.el for more info."
(when (eq (char-after) ?\()
(progn
(setq paren-depth (1+ paren-depth))
- (forward-char)))
+ (forward-char)
+ (setq after-paren-pos (point))))
(while (and (looking-at c-type-decl-prefix-key)
(if (and (c-major-mode-is 'c++-mode)
(match-beginning 3))
@@ -7331,7 +8063,8 @@ comment at the start of cc-engine.el for more info."
(if (eq (char-after) ?\()
(progn
(setq paren-depth (1+ paren-depth))
- (forward-char))
+ (forward-char)
+ (setq after-paren-pos (point)))
(unless got-prefix-before-parens
(setq got-prefix-before-parens (= paren-depth 0)))
(setq got-prefix t)
@@ -7340,55 +8073,69 @@ comment at the start of cc-engine.el for more info."
(setq got-parens (> paren-depth 0))
- ;; Skip over an identifier.
+ ;; Try to skip over an identifier.
(or got-identifier
(and (looking-at c-identifier-start)
(setq pos (point))
(setq got-identifier (c-forward-name))
(setq name-start pos)))
- ;; Skip over type decl suffix operators.
- (while (if (looking-at c-type-decl-suffix-key)
+ ;; Skip over type decl suffix operators and trailing noise macros.
+ (while
+ (cond
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause))
+
+ ((looking-at c-type-decl-suffix-key)
+ (if (eq (char-after) ?\))
+ (when (> paren-depth 0)
+ (setq paren-depth (1- paren-depth))
+ (forward-char)
+ t)
+ (when (if (save-match-data (looking-at "\\s("))
+ (c-safe (c-forward-sexp 1) t)
+ (goto-char (match-end 1))
+ t)
+ (when (and (not got-suffix-after-parens)
+ (= paren-depth 0))
+ (setq got-suffix-after-parens (match-beginning 0)))
+ (setq got-suffix t))))
- (if (eq (char-after) ?\))
- (when (> paren-depth 0)
- (setq paren-depth (1- paren-depth))
- (forward-char)
- t)
- (when (if (save-match-data (looking-at "\\s("))
- (c-safe (c-forward-sexp 1) t)
- (goto-char (match-end 1))
- t)
- (when (and (not got-suffix-after-parens)
- (= paren-depth 0))
- (setq got-suffix-after-parens (match-beginning 0)))
- (setq got-suffix t)))
-
- ;; No suffix matched. We might have matched the
- ;; identifier as a type and the open paren of a
- ;; function arglist as a type decl prefix. In that
- ;; case we should "backtrack": Reinterpret the last
- ;; type as the identifier, move out of the arglist and
- ;; continue searching for suffix operators.
- ;;
- ;; Do this even if there's no preceding type, to cope
- ;; with old style function declarations in K&R C,
- ;; (con|de)structors in C++ and `c-typeless-decl-kwds'
- ;; style declarations. That isn't applicable in an
- ;; arglist context, though.
- (when (and (= paren-depth 1)
+ (t
+ ;; No suffix matched. We might have matched the
+ ;; identifier as a type and the open paren of a
+ ;; function arglist as a type decl prefix. In that
+ ;; case we should "backtrack": Reinterpret the last
+ ;; type as the identifier, move out of the arglist and
+ ;; continue searching for suffix operators.
+ ;;
+ ;; Do this even if there's no preceding type, to cope
+ ;; with old style function declarations in K&R C,
+ ;; (con|de)structors in C++ and `c-typeless-decl-kwds'
+ ;; style declarations. That isn't applicable in an
+ ;; arglist context, though.
+ (when (and (= paren-depth 1)
(not got-prefix-before-parens)
(not (eq at-type t))
(or backup-at-type
maybe-typeless
backup-maybe-typeless
(when c-recognize-typeless-decls
- (not context)))
+ (and (not context)
+ ;; Deal with C++11's "copy-initialization"
+ ;; where we have <type>(<constant>), by
+ ;; contraasting with a typeless
+ ;; <name>(<type><parameter>, ...).
+ (save-excursion
+ (goto-char after-paren-pos)
+ (c-forward-syntactic-ws)
+ (c-forward-type)))))
(setq pos (c-up-list-forward (point)))
(eq (char-before pos) ?\)))
(c-fdoc-shift-type-backward)
(goto-char pos)
- t))
+ t)))
(c-forward-syntactic-ws))
@@ -7421,11 +8168,15 @@ comment at the start of cc-engine.el for more info."
;; Encountered something inside parens that isn't matched by
;; the `c-type-decl-*' regexps, so it's not a type decl
;; expression. Try to skip out to the same paren depth to
- ;; not confuse the cast check below.
- (c-safe (goto-char (scan-lists (point) 1 paren-depth)))
+ ;; not confuse the cast check below. If we don't manage this and
+ ;; `at-decl-or-cast' is 'ids we might have an expression like
+ ;; "foo bar ({ ..." which is a valid C++11 initialization.
+ (if (and (not (c-safe (goto-char (scan-lists (point) 1 paren-depth))))
+ (eq at-decl-or-cast 'ids))
+ (c-fdoc-shift-type-backward))
;; If we've found a specifier keyword then it's a
;; declaration regardless.
- (throw 'at-decl-or-cast (eq at-decl-or-cast t)))
+ (throw 'at-decl-or-cast (memq at-decl-or-cast '(t ids))))
(setq at-decl-end
(looking-at (cond ((eq context '<>) "[,>]")
@@ -7454,16 +8205,32 @@ comment at the start of cc-engine.el for more info."
maybe-typeless
backup-maybe-typeless
(eq at-decl-or-cast t)
+ ;; Check whether we have "bar (gnu);" where we
+ ;; are directly inside a class (etc.) called "bar".
(save-excursion
- (goto-char name-start)
- (not (memq (c-forward-type) '(nil maybe))))))
+ (and
+ (progn
+ (goto-char name-start)
+ (not (memq (c-forward-type) '(nil maybe))))
+ (progn
+ (goto-char id-start)
+ (c-directly-in-class-called-p
+ (buffer-substring
+ type-start
+ (progn
+ (goto-char type-start)
+ (c-forward-type)
+ (c-backward-syntactic-ws)
+ (point)))))))))
;; Got a declaration of the form "foo bar (gnu);" or "bar
;; (gnu);" where we've recognized "bar" as the type and "gnu"
- ;; as the declarator. In this case it's however more likely
- ;; that "bar" is the declarator and "gnu" a function argument
- ;; or initializer (if `c-recognize-paren-inits' is set),
- ;; since the parens around "gnu" would be superfluous if it's
- ;; a declarator. Shift the type one step backward.
+ ;; as the declarator, and in the latter case, checked that
+ ;; "bar (gnu)" appears directly inside the class "bar". In
+ ;; this case it's however more likely that "bar" is the
+ ;; declarator and "gnu" a function argument or initializer
+ ;; (if `c-recognize-paren-inits' is set), since the parens
+ ;; around "gnu" would be superfluous if it's a declarator.
+ ;; Shift the type one step backward.
(c-fdoc-shift-type-backward)))
;; Found no identifier.
@@ -7697,12 +8464,16 @@ comment at the start of cc-engine.el for more info."
at-type
(or at-decl-end (looking-at "=[^=]"))
(not context)
- (not got-suffix))
- ;; Got something like "foo * bar;". Since we're not inside an
- ;; arglist it would be a meaningless expression because the
- ;; result isn't used. We therefore choose to recognize it as
- ;; a declaration. Do not allow a suffix since it could then
- ;; be a function call.
+ (or (not got-suffix)
+ at-decl-start))
+ ;; Got something like "foo * bar;". Since we're not inside
+ ;; an arglist it would be a meaningless expression because
+ ;; the result isn't used. We therefore choose to recognize
+ ;; it as a declaration. We only allow a suffix (which makes
+ ;; the construct look like a function call) when
+ ;; `at-decl-start' provides additional evidence that we do
+ ;; have a declaration.
+ (setq maybe-expression t)
(throw 'at-decl-or-cast t))
;; CASE 17
@@ -7714,6 +8485,7 @@ comment at the start of cc-engine.el for more info."
;; be an odd expression or it could be a declaration. Treat
;; it as a declaration if "a" has been used as a type
;; somewhere else (if it's a known type we won't get here).
+ (setq maybe-expression t)
(throw 'at-decl-or-cast t)))
;; CASE 18
@@ -7837,9 +8609,11 @@ comment at the start of cc-engine.el for more info."
(goto-char type-start)
(c-forward-type))))
- (cons id-start
+ (list id-start
(and (or at-type-decl at-typedef)
- (cons at-type-decl at-typedef))))
+ (cons at-type-decl at-typedef))
+ maybe-expression
+ type-start))
(t
;; False alarm. Restore the recorded ranges.
@@ -8598,7 +9372,8 @@ comment at the start of cc-engine.el for more info."
(/= last-stmt-start (point))
(progn
(c-backward-syntactic-ws lim)
- (not (memq (char-before) '(?\; ?} ?: nil))))
+ (not (or (memq (char-before) '(?\; ?} ?: nil))
+ (c-at-vsemi-p))))
(save-excursion
(backward-char)
(not (looking-at "\\s(")))
@@ -8773,6 +9548,22 @@ comment at the start of cc-engine.el for more info."
(c-syntactic-skip-backward c-block-prefix-charset limit t)
(eq (char-before) ?>))))))
+ ;; Skip back over noise clauses.
+ (while (and
+ c-opt-cpp-prefix
+ (eq (char-before) ?\))
+ (let ((after-paren (point)))
+ (if (and (c-go-list-backward)
+ (progn (c-backward-syntactic-ws)
+ (c-simple-skip-symbol-backward))
+ (or (looking-at c-paren-nontype-key)
+ (looking-at c-noise-macro-with-parens-name-re)))
+ (progn
+ (c-syntactic-skip-backward c-block-prefix-charset limit t)
+ t)
+ (goto-char after-paren)
+ nil))))
+
;; Note: Can't get bogus hits inside template arglists below since they
;; have gotten paren syntax above.
(when (and
@@ -8879,6 +9670,26 @@ comment at the start of cc-engine.el for more info."
kwd-start)))
+(defun c-directly-in-class-called-p (name)
+ ;; Check whether point is directly inside a brace block which is the brace
+ ;; block of a class, struct, or union which is called NAME, a string.
+ (let* ((paren-state (c-parse-state))
+ (brace-pos (c-pull-open-brace paren-state))
+ )
+ (when (eq (char-after brace-pos) ?{)
+ (goto-char brace-pos)
+ (save-excursion
+ ; *c-looking-at-decl-block
+ ; containing-sexp goto-start &optional
+ ; limit)
+ (when (and (c-looking-at-decl-block
+ (c-pull-open-brace paren-state)
+ nil)
+ (looking-at c-class-key))
+ (goto-char (match-end 1))
+ (c-forward-syntactic-ws)
+ (looking-at name))))))
+
(defun c-search-uplist-for-classkey (paren-state)
;; Check if the closest containing paren sexp is a declaration
;; block, returning a 2 element vector in that case. Aref 0
@@ -8986,6 +9797,12 @@ comment at the start of cc-engine.el for more info."
t)
((looking-at c-after-brace-list-key) t)
((looking-at c-brace-list-key) nil)
+ ((eq (char-after) ?\()
+ (and (eq (c-backward-token-2) 0)
+ (or (looking-at c-decl-hangon-key)
+ (and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re)))))
+
((and c-recognize-<>-arglists
(eq (char-after) ?<)
(looking-at "\\s("))
@@ -8994,6 +9811,169 @@ comment at the start of cc-engine.el for more info."
(or (looking-at c-brace-list-key)
(progn (goto-char here) nil))))
+(defun c-looking-at-or-maybe-in-bracelist (containing-sexp &optional lim)
+ ;; Point is at an open brace. If this starts a brace list, return the
+ ;; buffer position of the start of the construct which introduces the list.
+ ;; Otherwise, if point might be inside an enclosing brace list, return t.
+ ;; If point is definitely neither at nor in a brace list, return nil.
+ ;;
+ ;; CONTAINING-SEXP is the position of the brace/paren/braacket enclosing
+ ;; POINT, or nil if there is no such position. LIM is a backward search
+ ;; limit.
+ ;;
+ ;; Here, "brace list" does not include the body of an enum.
+ (save-excursion
+ (let ((start (point))
+ (class-key
+ ;; Pike can have class definitions anywhere, so we must
+ ;; check for the class key here.
+ (and (c-major-mode-is 'pike-mode)
+ c-decl-block-key))
+ (braceassignp 'dontknow)
+ bufpos macro-start res after-type-id-pos)
+
+ (setq res (c-backward-token-2 1 t lim))
+ ;; Checks to do only on the first sexp before the brace.
+ ;; Have we a C++ initialisation, without an "="?
+ (if (and (c-major-mode-is 'c++-mode)
+ (cond
+ ((and (not (eq res 0))
+ (c-go-up-list-backward nil lim) ; FIXME!!! Check ; `lim' 2016-07-12.
+ (eq (char-after) ?\())
+ (setq braceassignp 'c++-noassign))
+ ((looking-at c-pre-id-bracelist-key))
+ ((looking-at c-return-key))
+ ((and (looking-at c-symbol-start)
+ (not (looking-at c-keywords-regexp)))
+ (setq after-type-id-pos (point)))
+ (t nil))
+ (save-excursion
+ (cond
+ ((not (eq res 0))
+ (and (c-go-up-list-backward nil lim) ; FIXME!!! Check `lim' 2016-07-12.
+ (eq (char-after) ?\()))
+ ((looking-at c-pre-id-bracelist-key))
+ ((looking-at c-return-key))
+ (t (setq after-type-id-pos (point))
+ nil))))
+ (setq braceassignp 'c++-noassign))
+
+ (when (and c-opt-inexpr-brace-list-key
+ (eq (char-after) ?\[))
+ ;; In Java, an initialization brace list may follow
+ ;; directly after "new Foo[]", so check for a "new"
+ ;; earlier.
+ (while (eq braceassignp 'dontknow)
+ (setq braceassignp
+ (cond ((/= (c-backward-token-2 1 t lim) 0) nil)
+ ((looking-at c-opt-inexpr-brace-list-key) t)
+ ((looking-at "\\sw\\|\\s_\\|[.[]")
+ ;; Carry on looking if this is an
+ ;; identifier (may contain "." in Java)
+ ;; or another "[]" sexp.
+ 'dontknow)
+ (t nil)))))
+
+ ;; Checks to do on all sexps before the brace, up to the
+ ;; beginning of the statement.
+ (while (eq braceassignp 'dontknow)
+ (cond ((eq (char-after) ?\;)
+ (setq braceassignp nil))
+ ((and class-key
+ (looking-at class-key))
+ (setq braceassignp nil))
+ ((eq (char-after) ?=)
+ ;; We've seen a =, but must check earlier tokens so
+ ;; that it isn't something that should be ignored.
+ (setq braceassignp 'maybe)
+ (while (and (eq braceassignp 'maybe)
+ (zerop (c-backward-token-2 1 t lim)))
+ (setq braceassignp
+ (cond
+ ;; Check for operator =
+ ((and c-opt-op-identifier-prefix
+ (looking-at c-opt-op-identifier-prefix))
+ nil)
+ ;; Check for `<opchar>= in Pike.
+ ((and (c-major-mode-is 'pike-mode)
+ (or (eq (char-after) ?`)
+ ;; Special case for Pikes
+ ;; `[]=, since '[' is not in
+ ;; the punctuation class.
+ (and (eq (char-after) ?\[)
+ (eq (char-before) ?`))))
+ nil)
+ ((looking-at "\\s.") 'maybe)
+ ;; make sure we're not in a C++ template
+ ;; argument assignment
+ ((and
+ (c-major-mode-is 'c++-mode)
+ (save-excursion
+ (let ((here (point))
+ (pos< (progn
+ (skip-chars-backward "^<>")
+ (point))))
+ (and (eq (char-before) ?<)
+ (not (c-crosses-statement-barrier-p
+ pos< here))
+ (not (c-in-literal))
+ ))))
+ nil)
+ (t t))))))
+ (if (and (eq braceassignp 'dontknow)
+ (/= (c-backward-token-2 1 t lim) 0))
+ (setq braceassignp nil)))
+
+ (cond
+ (braceassignp
+ ;; We've hit the beginning of the aggregate list.
+ (c-beginning-of-statement-1 containing-sexp)
+ (point))
+ ((and after-type-id-pos
+ (save-excursion
+ (when (eq (char-after) ?\;)
+ (c-forward-token-2 1 t))
+ (setq bufpos (point))
+ (when (looking-at c-opt-<>-sexp-key)
+ (c-forward-token-2)
+ (when (and (eq (char-after) ?<)
+ (c-get-char-property (point) 'syntax-table))
+ (c-go-list-forward nil after-type-id-pos)
+ (c-forward-syntactic-ws)))
+ (and
+ (or (not (looking-at c-class-key))
+ (save-excursion
+ (goto-char (match-end 1))
+ (c-forward-syntactic-ws)
+ (not (eq (point) after-type-id-pos))))
+ (progn
+ (setq res
+ (c-forward-decl-or-cast-1
+ (save-excursion (c-backward-syntactic-ws) (point))
+ nil nil))
+ (and (consp res)
+ (eq (car res) after-type-id-pos))))))
+ bufpos)
+ ((eq (char-after) ?\;)
+ ;; Brace lists can't contain a semicolon, so we're done.
+ ;; (setq containing-sexp nil)
+ nil)
+ ((and (setq macro-start (point))
+ (c-forward-to-cpp-define-body)
+ (eq (point) start))
+ ;; We've a macro whose expansion starts with the '{'.
+ ;; Heuristically, if we have a ';' in it we've not got a
+ ;; brace list, otherwise we have.
+ (let ((macro-end (progn (c-end-of-macro) (point))))
+ (goto-char start)
+ (forward-char)
+ (if (and (c-syntactic-re-search-forward "[;,]" macro-end t t)
+ (eq (char-before) ?\;))
+ nil
+ macro-start)))
+ (t t)) ;; The caller can go up one level.
+ )))
+
(defun c-inside-bracelist-p (containing-sexp paren-state)
;; return the buffer position of the beginning of the brace list
;; statement if we're inside a brace list, otherwise return nil.
@@ -9013,13 +9993,9 @@ comment at the start of cc-engine.el for more info."
(c-backward-over-enum-header))
;; this will pick up array/aggregate init lists, even if they are nested.
(save-excursion
- (let ((class-key
- ;; Pike can have class definitions anywhere, so we must
- ;; check for the class key here.
- (and (c-major-mode-is 'pike-mode)
- c-decl-block-key))
- bufpos braceassignp lim next-containing macro-start)
- (while (and (not bufpos)
+ (let ((bufpos t)
+ lim next-containing)
+ (while (and (eq bufpos t)
containing-sexp)
(when paren-state
(if (consp (car paren-state))
@@ -9029,113 +10005,22 @@ comment at the start of cc-engine.el for more info."
(when paren-state
(setq next-containing (car paren-state)
paren-state (cdr paren-state))))
+
(goto-char containing-sexp)
(if (c-looking-at-inexpr-block next-containing next-containing)
;; We're in an in-expression block of some kind. Do not
;; check nesting. We deliberately set the limit to the
;; containing sexp, so that c-looking-at-inexpr-block
;; doesn't check for an identifier before it.
- (setq containing-sexp nil)
- ;; see if the open brace is preceded by = or [...] in
- ;; this statement, but watch out for operator=
- (setq braceassignp 'dontknow)
- (c-backward-token-2 1 t lim)
- ;; Checks to do only on the first sexp before the brace.
- (when (and c-opt-inexpr-brace-list-key
- (eq (char-after) ?\[))
- ;; In Java, an initialization brace list may follow
- ;; directly after "new Foo[]", so check for a "new"
- ;; earlier.
- (while (eq braceassignp 'dontknow)
- (setq braceassignp
- (cond ((/= (c-backward-token-2 1 t lim) 0) nil)
- ((looking-at c-opt-inexpr-brace-list-key) t)
- ((looking-at "\\sw\\|\\s_\\|[.[]")
- ;; Carry on looking if this is an
- ;; identifier (may contain "." in Java)
- ;; or another "[]" sexp.
- 'dontknow)
- (t nil)))))
- ;; Checks to do on all sexps before the brace, up to the
- ;; beginning of the statement.
- (while (eq braceassignp 'dontknow)
- (cond ((eq (char-after) ?\;)
- (setq braceassignp nil))
- ((and class-key
- (looking-at class-key))
- (setq braceassignp nil))
- ((eq (char-after) ?=)
- ;; We've seen a =, but must check earlier tokens so
- ;; that it isn't something that should be ignored.
- (setq braceassignp 'maybe)
- (while (and (eq braceassignp 'maybe)
- (zerop (c-backward-token-2 1 t lim)))
- (setq braceassignp
- (cond
- ;; Check for operator =
- ((and c-opt-op-identifier-prefix
- (looking-at c-opt-op-identifier-prefix))
- nil)
- ;; Check for `<opchar>= in Pike.
- ((and (c-major-mode-is 'pike-mode)
- (or (eq (char-after) ?`)
- ;; Special case for Pikes
- ;; `[]=, since '[' is not in
- ;; the punctuation class.
- (and (eq (char-after) ?\[)
- (eq (char-before) ?`))))
- nil)
- ((looking-at "\\s.") 'maybe)
- ;; make sure we're not in a C++ template
- ;; argument assignment
- ((and
- (c-major-mode-is 'c++-mode)
- (save-excursion
- (let ((here (point))
- (pos< (progn
- (skip-chars-backward "^<>")
- (point))))
- (and (eq (char-before) ?<)
- (not (c-crosses-statement-barrier-p
- pos< here))
- (not (c-in-literal))
- ))))
- nil)
- (t t))))))
- (if (and (eq braceassignp 'dontknow)
- (/= (c-backward-token-2 1 t lim) 0))
- (setq braceassignp nil)))
- (cond
- (braceassignp
- ;; We've hit the beginning of the aggregate list.
- (c-beginning-of-statement-1
- (c-most-enclosing-brace paren-state))
- (setq bufpos (point)))
- ((eq (char-after) ?\;)
- ;; Brace lists can't contain a semicolon, so we're done.
- (setq containing-sexp nil))
- ((and (setq macro-start (point))
- (c-forward-to-cpp-define-body)
- (eq (point) containing-sexp))
- ;; We've a macro whose expansion starts with the '{'.
- ;; Heuristically, if we have a ';' in it we've not got a
- ;; brace list, otherwise we have.
- (let ((macro-end (progn (c-end-of-macro) (point))))
- (goto-char containing-sexp)
- (forward-char)
- (if (and (c-syntactic-re-search-forward "[;,]" macro-end t t)
- (eq (char-before) ?\;))
- (setq bufpos nil
- containing-sexp nil)
- (setq bufpos macro-start))))
- (t
- ;; Go up one level
+ (setq bufpos nil)
+ (when (or (not (eq (char-after) ?{))
+ (eq (setq bufpos (c-looking-at-or-maybe-in-bracelist
+ next-containing lim))
+ t))
(setq containing-sexp next-containing
lim nil
- next-containing nil)))))
-
- bufpos))
- ))
+ next-containing nil))))
+ (and (numberp bufpos) bufpos)))))
(defun c-looking-at-special-brace-list (&optional lim)
;; If we're looking at the start of a pike-style list, i.e., `({ })',
@@ -9231,12 +10116,27 @@ comment at the start of cc-engine.el for more info."
;; This function might do hidden buffer changes.
(save-excursion
- (let ((res 'maybe) passed-paren
+ (let ((res 'maybe) (passed-bracket-pairs 0) bracket-pos passed-paren
+ haskell-op-pos
(closest-lim (or containing-sexp lim (point-min)))
;; Look at the character after point only as a last resort
;; when we can't disambiguate.
(block-follows (and (eq (char-after) ?{) (point))))
+ ;; Search for a C++11 "->" which suggests a lambda declaration.
+ (when (and (c-major-mode-is 'c++-mode)
+ (setq haskell-op-pos
+ (save-excursion
+ (while
+ (progn
+ (c-syntactic-skip-backward "^;=}>" closest-lim t)
+ (and (eq (char-before) ?>)
+ (c-backward-token-2)
+ (not (looking-at c-haskell-op-re)))))
+ (and (looking-at c-haskell-op-re)
+ (point)))))
+ (goto-char haskell-op-pos))
+
(while (and (eq res 'maybe)
(progn (c-backward-syntactic-ws)
(> (point) closest-lim))
@@ -9274,6 +10174,11 @@ comment at the start of cc-engine.el for more info."
(zerop (c-forward-token-2 1 t)))
(eq (char-after) ?\())))
(cons 'inexpr-class (point))))
+ ((c-keyword-member kw-sym 'c-paren-any-kwds) ; e.g. C++11 "throw" or "noexcept"
+ (setq passed-paren nil)
+ (setq passed-bracket-pairs 0)
+ (setq bracket-pos nil)
+ 'maybe)
((c-keyword-member kw-sym 'c-inexpr-block-kwds)
(when (not passed-paren)
(cons 'inexpr-statement (point))))
@@ -9288,20 +10193,49 @@ comment at the start of cc-engine.el for more info."
(if (looking-at "\\s(")
(if passed-paren
- (if (and (eq passed-paren ?\[)
- (eq (char-after) ?\[))
- ;; Accept several square bracket sexps for
- ;; Java array initializations.
- 'maybe)
- (setq passed-paren (char-after))
+ (cond
+ ((and (eq passed-paren ?\[)
+ (eq (char-after) ?\[)
+ (not (eq (char-after (1+ (point))) ?\[))) ; C++ attribute.
+ ;; Accept several square bracket sexps for
+ ;; Java array initializations.
+ (setq passed-bracket-pairs (1+ passed-bracket-pairs))
+ 'maybe)
+ ((and (eq passed-paren ?\()
+ (eq (char-after) ?\[)
+ (not (eq (char-after (1+ (point))) ?\[))
+ (eq passed-bracket-pairs 0))
+ ;; C++11 lambda function declaration
+ (setq passed-bracket-pairs 1)
+ (setq bracket-pos (point))
+ 'maybe)
+ (t nil))
+ (when (not (looking-at "\\[\\["))
+ (setq passed-paren (char-after))
+ (when (eq passed-paren ?\[)
+ (setq passed-bracket-pairs 1)
+ (setq bracket-pos (point))))
'maybe)
'maybe))))
(if (eq res 'maybe)
- (when (and c-recognize-paren-inexpr-blocks
- block-follows
- containing-sexp
- (eq (char-after containing-sexp) ?\())
+ (cond
+ ((and (c-major-mode-is 'c++-mode)
+ block-follows
+ (eq passed-bracket-pairs 1)
+ (save-excursion
+ (goto-char bracket-pos)
+ (or (<= (point) (or lim (point-min)))
+ (progn
+ (c-backward-token-2 1 nil lim)
+ (and
+ (not (c-on-identifier))
+ (not (looking-at c-opt-op-identifier-prefix)))))))
+ (cons 'inlambda bracket-pos))
+ ((and c-recognize-paren-inexpr-blocks
+ block-follows
+ containing-sexp
+ (eq (char-after containing-sexp) ?\())
(goto-char containing-sexp)
(if (or (save-excursion
(c-backward-syntactic-ws lim)
@@ -9313,9 +10247,21 @@ comment at the start of cc-engine.el for more info."
(and (> (point) (or lim (point-min)))
(c-on-identifier)))
(and c-special-brace-lists
- (c-looking-at-special-brace-list)))
+ (c-looking-at-special-brace-list))
+ (and (c-major-mode-is 'c++-mode)
+ (save-excursion
+ (goto-char block-follows)
+ (if (c-go-list-forward)
+ (progn
+ (backward-char)
+ (c-syntactic-skip-backward
+ "^;," block-follows t)
+ (not (eq (char-before) ?\;)))
+ (or (not (c-syntactic-re-search-forward
+ "[;,]" nil t t))
+ (not (eq (char-before) ?\;)))))))
nil
- (cons 'inexpr-statement (point))))
+ (cons 'inexpr-statement (point)))))
res))))
@@ -9341,6 +10287,18 @@ comment at the start of cc-engine.el for more info."
paren-state)
containing-sexp)))))
+(defun c-looking-at-c++-lambda-capture-list ()
+ ;; Return non-nil if we're at the opening "[" of the capture list of a C++
+ ;; lambda function, nil otherwise.
+ (and
+ (eq (char-after) ?\[)
+ (not (eq (char-before) ?\[))
+ (not (eq (char-after (1+ (point))) ?\[))
+ (save-excursion
+ (or (eq (c-backward-token-2 1) 1)
+ (looking-at c-pre-lambda-tokens-re)))
+ (not (c-in-literal))))
+
(defun c-at-macro-vsemi-p (&optional pos)
;; Is there a "virtual semicolon" at POS or point?
;; (See cc-defs.el for full details of "virtual semicolons".)
@@ -9710,10 +10668,10 @@ comment at the start of cc-engine.el for more info."
;; CASE B.2: brace-list-open
((or (consp special-brace-list)
- (save-excursion
- (goto-char beg-of-same-or-containing-stmt)
- (c-syntactic-re-search-forward "=\\([^=]\\|$\\)"
- indent-point t t t)))
+ (numberp
+ (c-looking-at-or-maybe-in-bracelist
+ containing-sexp beg-of-same-or-containing-stmt))
+ )
;; The most semantically accurate symbol here is
;; brace-list-open, but we normally report it simply as a
;; statement-cont. The reason is that one normally adjusts
@@ -9746,6 +10704,14 @@ comment at the start of cc-engine.el for more info."
(c-add-stmt-syntax 'defun-open nil t
containing-sexp paren-state))
+ ;; CASE B.5: We have a C++11 "return \n { ..... }" Note that we're
+ ;; not at the "{", currently.
+ ((progn (goto-char indent-point)
+ (backward-sexp)
+ (looking-at c-return-key))
+ (c-add-stmt-syntax 'statement-cont nil t
+ containing-sexp paren-state))
+
;; CASE B.4: Continued statement with block open. The most
;; accurate analysis is perhaps `statement-cont' together with
;; `block-open' but we play DWIM and use `substatement-open'
@@ -9973,8 +10939,8 @@ comment at the start of cc-engine.el for more info."
;; versions, which results in that we get nil from
;; `c-literal-limits' even when `c-in-literal' claims
;; we're inside a comment.
- (setq placeholder (c-literal-limits lim)))
- (c-add-syntax literal (car placeholder)))
+ (setq placeholder (c-literal-start lim)))
+ (c-add-syntax literal placeholder))
;; CASE 3: in a cpp preprocessor macro continuation.
((and (save-excursion
@@ -10246,9 +11212,12 @@ comment at the start of cc-engine.el for more info."
;; CASE 5A.3: brace list open
((save-excursion
(c-beginning-of-decl-1 lim)
- (while (looking-at c-specifier-key)
- (goto-char (match-end 1))
- (c-forward-syntactic-ws indent-point))
+ (while (cond
+ ((looking-at c-specifier-key)
+ (c-forward-keyword-clause 1))
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause))))
(setq placeholder (c-point 'boi))
(or (consp special-brace-list)
(and (or (save-excursion
@@ -10262,7 +11231,14 @@ comment at the start of cc-engine.el for more info."
(looking-at c-opt-inexpr-brace-list-key)
(setq tmpsymbol 'topmost-intro-cont)))
(looking-at "=\\([^=]\\|$\\)"))
- (looking-at c-brace-list-key))
+ (looking-at c-brace-list-key)
+ (looking-at c-return-key)
+ (save-excursion
+ (and (c-forward-type)
+ (looking-at c-identifier-start)
+ (not (looking-at c-keywords-regexp))
+ (c-forward-token-2)
+ (eq (point) (c-point 'boi indent-point)))))
(save-excursion
(while (and (< (point) indent-point)
(zerop (c-forward-token-2 1 t))
@@ -10300,9 +11276,12 @@ comment at the start of cc-engine.el for more info."
(t
(save-excursion
(c-beginning-of-decl-1 lim)
- (while (looking-at c-specifier-key)
- (goto-char (match-end 1))
- (c-forward-syntactic-ws indent-point))
+ (while (cond
+ ((looking-at c-specifier-key)
+ (c-forward-keyword-clause 1))
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause))))
(c-add-syntax 'defun-open (c-point 'boi))
;; Bogus to use bol here, but it's the legacy. (Resolved,
;; 2007-11-09)
@@ -10933,9 +11912,12 @@ comment at the start of cc-engine.el for more info."
(c-beginning-of-statement-1
(c-safe-position (1- containing-sexp) paren-state))
(c-forward-token-2 0)
- (while (looking-at c-specifier-key)
- (goto-char (match-end 1))
- (c-forward-syntactic-ws))
+ (while (cond
+ ((looking-at c-specifier-key)
+ (c-forward-keyword-clause 1))
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause))))
(c-add-syntax 'brace-list-open (c-point 'boi))))
;; CASE 9B: brace-list-close brace
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index d864367719..60b8b6db3c 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -723,6 +723,10 @@ casts and declarations are fontified. Used on level 2 and higher."
(concat ".\\(" c-string-limit-regexp "\\)")
'((c-font-lock-invalid-string)))
+ ;; Fontify C++ raw strings.
+ ,@(when (c-major-mode-is 'c++-mode)
+ '(c-font-lock-raw-strings))
+
;; Fontify keyword constants.
,@(when (c-lang-const c-constant-kwds)
(let ((re (c-make-keywords-re nil (c-lang-const c-constant-kwds))))
@@ -1162,7 +1166,8 @@ casts and declarations are fontified. Used on level 2 and higher."
;; `parse-sexp-lookup-properties' (when it exists).
(parse-sexp-lookup-properties
(cc-eval-when-compile
- (boundp 'parse-sexp-lookup-properties))))
+ (boundp 'parse-sexp-lookup-properties))
+ ))
;; Below we fontify a whole declaration even when it crosses the limit,
;; to avoid gaps when jit/lazy-lock fontifies the file a block at a
@@ -1200,7 +1205,8 @@ casts and declarations are fontified. Used on level 2 and higher."
(setq start-pos (point))
(when
;; The result of the form below is true when we don't recognize a
- ;; declaration or cast.
+ ;; declaration or cast, and we don't recognise a "non-decl",
+ ;; typically a brace list.
(if (or (and (eq (get-text-property (point) 'face)
'font-lock-keyword-face)
(looking-at c-not-decl-init-keywords))
@@ -1216,7 +1222,7 @@ casts and declarations are fontified. Used on level 2 and higher."
;; (e.g. "for (").
(let ((type (and (> match-pos (point-min))
(c-get-char-property (1- match-pos) 'c-type))))
- (cond ((not (memq (char-before match-pos) '(?\( ?, ?\[ ?<)))
+ (cond ((not (memq (char-before match-pos) '(?\( ?, ?\[ ?< ?{)))
(setq context nil
c-restricted-<>-arglists nil))
;; A control flow expression or a decltype
@@ -1238,6 +1244,37 @@ casts and declarations are fontified. Used on level 2 and higher."
((eq type 'c-decl-arg-start)
(setq context 'decl
c-restricted-<>-arglists nil))
+ ;; We're inside (probably) a brace list.
+ ((eq type 'c-not-decl)
+ (setq context 'not-decl
+ c-restricted-<>-arglists nil))
+ ;; Inside a C++11 lambda function arglist.
+ ((and (c-major-mode-is 'c++-mode)
+ (eq (char-before match-pos) ?\()
+ (save-excursion
+ (goto-char match-pos)
+ (c-backward-token-2)
+ (and
+ (c-safe (goto-char (scan-sexps (point) -1)))
+ (c-looking-at-c++-lambda-capture-list))))
+ (setq context 'decl
+ c-restricted-<>-arglists nil)
+ (c-put-char-property (1- match-pos) 'c-type
+ 'c-decl-arg-start))
+ ;; We're inside an brace list.
+ ((and (eq (char-before match-pos) ?{)
+ (save-excursion
+ (goto-char (1- match-pos))
+ (numberp
+ (c-looking-at-or-maybe-in-bracelist nil))))
+ (setq context 'not-decl
+ c-restricted-<>-arglists nil)
+ (c-put-char-property (1- match-pos) 'c-type
+ 'c-not-decl))
+ ;; We're inside an "ordinary" open brace.
+ ((eq (char-before match-pos) ?{)
+ (setq context nil
+ c-restricted-<>-arglists nil))
;; Inside an angle bracket arglist.
((or (eq type 'c-<>-arg-sep)
(eq (char-before match-pos) ?<))
@@ -1283,182 +1320,131 @@ casts and declarations are fontified. Used on level 2 and higher."
(c-forward-syntactic-ws))
;; Now analyze the construct.
- (setq decl-or-cast (c-forward-decl-or-cast-1
- match-pos context last-cast-end))
-
- ;; Ensure that c-<>-arg-sep c-type properties are in place on the
- ;; commas separating the arguments inside template/generic <..>s.
- (when (and (eq (char-before match-pos) ?<)
- (> match-pos max-<>-end))
- (save-excursion
- (goto-char match-pos)
- (c-backward-token-2)
- (if (and
- (eq (char-after) ?<)
- (let ((c-restricted-<>-arglists
- (save-excursion
- (c-backward-token-2)
- (and
- (not (looking-at c-opt-<>-sexp-key))
- (progn (c-backward-syntactic-ws)
- (memq (char-before) '(?\( ?,)))
- (not (eq (c-get-char-property (1- (point))
- 'c-type)
- 'c-decl-arg-start))))))
- (c-forward-<>-arglist nil)))
- (setq max-<>-end (point)))))
-
- (cond
- ((eq decl-or-cast 'cast)
- ;; Save the position after the previous cast so we can feed
- ;; it to `c-forward-decl-or-cast-1' in the next round. That
- ;; helps it discover cast chains like "(a) (b) c".
- (setq last-cast-end (point))
- (c-fontify-recorded-types-and-refs)
- nil)
-
- (decl-or-cast
- ;; We've found a declaration.
-
- ;; Set `max-type-decl-end' or `max-type-decl-end-before-token'
- ;; under the assumption that we're after the first type decl
- ;; expression in the declaration now. That's not really true;
- ;; we could also be after a parenthesized initializer
- ;; expression in C++, but this is only used as a last resort
- ;; to slant ambiguous expression/declarations, and overall
- ;; it's worth the risk to occasionally fontify an expression
- ;; as a declaration in an initializer expression compared to
- ;; getting ambiguous things in normal function prototypes
- ;; fontified as expressions.
- (if inside-macro
- (when (> (point) max-type-decl-end-before-token)
- (setq max-type-decl-end-before-token (point)))
- (when (> (point) max-type-decl-end)
- (setq max-type-decl-end (point))))
-
- ;; Back up to the type to fontify the declarator(s).
- (goto-char (car decl-or-cast))
-
- (let ((decl-list
- (if context
- ;; Should normally not fontify a list of
- ;; declarators inside an arglist, but the first
- ;; argument in the ';' separated list of a "for"
- ;; statement is an exception.
- (when (eq (char-before match-pos) ?\()
- (save-excursion
- (goto-char (1- match-pos))
- (c-backward-syntactic-ws)
- (and (c-simple-skip-symbol-backward)
- (looking-at c-paren-stmt-key))))
- t)))
-
- ;; Fix the `c-decl-id-start' or `c-decl-type-start' property
- ;; before the first declarator if it's a list.
- ;; `c-font-lock-declarators' handles the rest.
- (when decl-list
- (save-excursion
- (c-backward-syntactic-ws)
- (unless (bobp)
- (c-put-char-property (1- (point)) 'c-type
- (if (cdr decl-or-cast)
- 'c-decl-type-start
- 'c-decl-id-start)))))
-
- (c-font-lock-declarators
- (point-max) decl-list (cdr decl-or-cast)))
-
- ;; A declaration has been successfully identified, so do all the
- ;; fontification of types and refs that've been recorded.
- (c-fontify-recorded-types-and-refs)
- nil)
-
- ;; Restore point, since at this point in the code it has been
- ;; left undefined by c-forward-decl-or-cast-1 above.
- ((progn (goto-char start-pos) nil))
-
- ;; If point is inside a bracelist, there's no point checking it
- ;; being at a declarator.
- ((let ((paren-state (c-parse-state)))
- (setq lbrace (c-cheap-inside-bracelist-p paren-state)))
- ;; Move past this bracelist to prevent an endless loop.
- (goto-char lbrace)
- (unless (c-safe (progn (forward-list) t))
- (goto-char start-pos)
- (c-forward-token-2))
- nil)
-
- ;; If point is just after a ")" which is followed by an
- ;; identifier which isn't a label, or at the matching "(", we're
- ;; at either a macro invocation, a cast, or a
- ;; for/while/etc. statement. The cast case is handled above.
- ;; None of these cases can contain a declarator.
- ((or (and (eq (char-before match-pos) ?\))
- (c-on-identifier)
- (save-excursion (not (c-forward-label))))
- (and (eq (char-after) ?\()
- (save-excursion
- (and
- (progn (c-backward-token-2) (c-on-identifier))
- (save-excursion (not (c-forward-label)))
- (progn (c-backward-token-2)
- (eq (char-after) ?\())))))
- (c-forward-token-2) ; Must prevent looping.
- nil)
-
- ((and (not c-enums-contain-decls)
- ;; An optimization quickly to eliminate scans of long enum
- ;; declarations in the next cond arm.
- (let ((paren-state (c-parse-state)))
- (and
- (numberp (car paren-state))
+ (if (eq context 'not-decl)
+ (progn
+ (setq decl-or-cast nil)
+ (if (c-syntactic-re-search-forward
+ "," (min limit (point-max)) 'at-limit t)
+ (c-put-char-property (1- (point)) 'c-type 'c-not-decl))
+ nil)
+ (setq decl-or-cast
+ (c-forward-decl-or-cast-1
+ match-pos context last-cast-end))
+
+ ;; Ensure that c-<>-arg-sep c-type properties are in place on the
+ ;; commas separating the arguments inside template/generic <..>s.
+ (when (and (eq (char-before match-pos) ?<)
+ (> match-pos max-<>-end))
+ (save-excursion
+ (goto-char match-pos)
+ (c-backward-token-2)
+ (if (and
+ (eq (char-after) ?<)
+ (let ((c-restricted-<>-arglists
+ (save-excursion
+ (c-backward-token-2)
+ (and
+ (not (looking-at c-opt-<>-sexp-key))
+ (progn (c-backward-syntactic-ws)
+ (memq (char-before) '(?\( ?,)))
+ (not (eq (c-get-char-property (1- (point))
+ 'c-type)
+ 'c-decl-arg-start))))))
+ (c-forward-<>-arglist nil)))
+ (setq max-<>-end (point)))))
+
+ (cond
+ ((eq decl-or-cast 'cast)
+ ;; Save the position after the previous cast so we can feed
+ ;; it to `c-forward-decl-or-cast-1' in the next round. That
+ ;; helps it discover cast chains like "(a) (b) c".
+ (setq last-cast-end (point))
+ (c-fontify-recorded-types-and-refs)
+ nil)
+
+ (decl-or-cast
+ ;; We've found a declaration.
+
+ ;; Set `max-type-decl-end' or `max-type-decl-end-before-token'
+ ;; under the assumption that we're after the first type decl
+ ;; expression in the declaration now. That's not really true;
+ ;; we could also be after a parenthesized initializer
+ ;; expression in C++, but this is only used as a last resort
+ ;; to slant ambiguous expression/declarations, and overall
+ ;; it's worth the risk to occasionally fontify an expression
+ ;; as a declaration in an initializer expression compared to
+ ;; getting ambiguous things in normal function prototypes
+ ;; fontified as expressions.
+ (if inside-macro
+ (when (> (point) max-type-decl-end-before-token)
+ (setq max-type-decl-end-before-token (point)))
+ (when (> (point) max-type-decl-end)
+ (setq max-type-decl-end (point))))
+
+ ;; Do we have an expression as the second or third clause of
+ ;; a "for" paren expression?
+ (if (save-excursion
+ (and
+ (car (cddr decl-or-cast)) ; maybe-expression flag.
+ (goto-char start-pos)
+ (c-go-up-list-backward)
+ (eq (char-after) ?\()
+ (progn (c-backward-syntactic-ws)
+ (c-simple-skip-symbol-backward))
+ (looking-at c-paren-stmt-key)
+ (progn (goto-char match-pos)
+ (while (and (eq (char-before) ?\))
+ (c-go-list-backward))
+ (c-backward-syntactic-ws))
+ (eq (char-before) ?\;))))
+ ;; We've got an expression in "for" parens. Remove the
+ ;; "type" that would spuriously get fontified.
+ (let ((elt (and (consp c-record-type-identifiers)
+ (assq (cadr (cddr decl-or-cast))
+ c-record-type-identifiers))))
+ (when elt
+ (setq c-record-type-identifiers
+ (c-delq-from-dotted-list
+ elt c-record-type-identifiers)))
+ t)
+ ;; Back up to the type to fontify the declarator(s).
+ (goto-char (car decl-or-cast))
+
+ (let ((decl-list
+ (if context
+ ;; Should normally not fontify a list of
+ ;; declarators inside an arglist, but the first
+ ;; argument in the ';' separated list of a "for"
+ ;; statement is an exception.
+ (when (eq (char-before match-pos) ?\()
+ (save-excursion
+ (goto-char (1- match-pos))
+ (c-backward-syntactic-ws)
+ (and (c-simple-skip-symbol-backward)
+ (looking-at c-paren-stmt-key))))
+ t)))
+
+ ;; Fix the `c-decl-id-start' or `c-decl-type-start' property
+ ;; before the first declarator if it's a list.
+ ;; `c-font-lock-declarators' handles the rest.
+ (when decl-list
(save-excursion
- (goto-char (car paren-state))
- (c-backward-over-enum-header)))))
- (c-forward-token-2)
- nil)
+ (c-backward-syntactic-ws)
+ (unless (bobp)
+ (c-put-char-property (1- (point)) 'c-type
+ (if (cadr decl-or-cast)
+ 'c-decl-type-start
+ 'c-decl-id-start)))))
+
+ (c-font-lock-declarators
+ (min limit (point-max)) decl-list (cadr decl-or-cast)))
+
+ ;; A declaration has been successfully identified, so do all the
+ ;; fontification of types and refs that've been recorded.
+ (c-fontify-recorded-types-and-refs)
+ nil))
- (t
- ;; Are we at a declarator? Try to go back to the declaration
- ;; to check this. If we get there, check whether a "typedef"
- ;; is there, then fontify the declarators accordingly.
- (let ((decl-search-lim (c-determine-limit 1000))
- paren-state bod-res encl-pos is-typedef
- c-recognize-knr-p) ; Strictly speaking, bogus, but it
- ; speeds up lisp.h tremendously.
- (save-excursion
- (if (c-back-over-member-initializers)
- t ; Can't be at a declarator
- (unless (or (eobp)
- (looking-at "\\s(\\|\\s)"))
- (forward-char))
- (setq bod-res (car (c-beginning-of-decl-1 decl-search-lim)))
- (if (and (eq bod-res 'same)
- (save-excursion
- (c-backward-syntactic-ws)
- (eq (char-before) ?\})))
- (c-beginning-of-decl-1 decl-search-lim))
-
- ;; We're now putatively at the declaration.
- (setq paren-state (c-parse-state))
- ;; At top level or inside a "{"?
- (if (or (not (setq encl-pos
- (c-most-enclosing-brace paren-state)))
- (eq (char-after encl-pos) ?\{))
- (progn
- (when (looking-at c-typedef-key) ; "typedef"
- (setq is-typedef t)
- (goto-char (match-end 0))
- (c-forward-syntactic-ws))
- ;; At a real declaration?
- (if (memq (c-forward-type t) '(t known found decltype))
- (progn
- (c-font-lock-declarators (point-max) t is-typedef)
- nil)
- ;; False alarm. Return t to go on to the next check.
- (goto-char start-pos)
- t))
- t)))))))
+ (t t))))
;; It was a false alarm. Check if we're in a label (or other
;; construct with `:' except bitfield) instead.
@@ -1515,6 +1501,47 @@ casts and declarations are fontified. Used on level 2 and higher."
(c-font-lock-declarators limit t nil)))
nil)
+(defun c-font-lock-cut-off-declarators (limit)
+ ;; Fontify any declarators "cut off" from their declaring type at the start
+ ;; of the region being fontified.
+ ;;
+ ;; This function will be called from font-lock- for a region bounded by
+ ;; POINT and LIMIT, as though it were to identify a keyword for
+ ;; font-lock-keyword-face. It always returns NIL to inhibit this and
+ ;; prevent a repeat invocation. See elisp/lispref page "Search-based
+ ;; fontification".
+ (let ((decl-search-lim (c-determine-limit 1000))
+ paren-state bod-res is-typedef encl-pos
+ c-recognize-knr-p) ; Strictly speaking, bogus, but it
+ ; speeds up lisp.h tremendously.
+ (save-excursion
+ (when (not (c-back-over-member-initializers))
+ (unless (or (eobp)
+ (looking-at "\\s(\\|\\s)"))
+ (forward-char))
+ (c-syntactic-skip-backward "^;{}" decl-search-lim t)
+ (when (eq (char-before) ?})
+ (c-go-list-backward) ; brace block of struct, etc.?
+ (c-syntactic-skip-backward "^;{}" decl-search-lim t))
+ (when (or (bobp)
+ (memq (char-before) '(?\; ?{ ?})))
+ (c-forward-syntactic-ws)
+ ;; We're now putatively at the declaration.
+ (setq paren-state (c-parse-state))
+ ;; At top level or inside a "{"?
+ (if (or (not (setq encl-pos
+ (c-most-enclosing-brace paren-state)))
+ (eq (char-after encl-pos) ?\{))
+ (progn
+ (when (looking-at c-typedef-key) ; "typedef"
+ (setq is-typedef t)
+ (goto-char (match-end 0))
+ (c-forward-syntactic-ws))
+ ;; At a real declaration?
+ (if (memq (c-forward-type t) '(t known found decltype))
+ (c-font-lock-declarators limit t is-typedef)))))))
+ nil))
+
(defun c-font-lock-enclosing-decls (limit)
;; Fontify the declarators of (nested) declarations we're in the middle of.
;; This is mainly for when a jit-lock etc. chunk starts inside the brace
@@ -1527,7 +1554,7 @@ casts and declarations are fontified. Used on level 2 and higher."
;; Fontification".
(let* ((paren-state (c-parse-state))
(decl-search-lim (c-determine-limit 1000))
- decl-context in-typedef ps-elt)
+ in-typedef ps-elt)
;; Are we in any nested struct/union/class/etc. braces?
(while paren-state
(setq ps-elt (car paren-state)
@@ -1535,15 +1562,151 @@ casts and declarations are fontified. Used on level 2 and higher."
(when (and (atom ps-elt)
(eq (char-after ps-elt) ?\{))
(goto-char ps-elt)
- (setq decl-context (c-beginning-of-decl-1 decl-search-lim)
- in-typedef (looking-at c-typedef-key))
- (if in-typedef (c-forward-token-2))
- (when (and c-opt-block-decls-with-vars-key
- (looking-at c-opt-block-decls-with-vars-key))
- (goto-char ps-elt)
- (when (c-safe (c-forward-sexp))
- (c-forward-syntactic-ws)
- (c-font-lock-declarators limit t in-typedef)))))))
+ (c-syntactic-skip-backward "^;{}" decl-search-lim)
+ (when (or (bobp)
+ (memq (char-before) '(?\; ?})))
+ (c-forward-syntactic-ws)
+ (setq in-typedef (looking-at c-typedef-key))
+ (if in-typedef (c-forward-token-2))
+ (when (and c-opt-block-decls-with-vars-key
+ (looking-at c-opt-block-decls-with-vars-key))
+ (goto-char ps-elt)
+ (when (c-safe (c-forward-sexp))
+ (c-forward-syntactic-ws)
+ (c-font-lock-declarators limit t in-typedef))))))))
+
+(defun c-font-lock-raw-strings (limit)
+ ;; Fontify C++ raw strings.
+ ;;
+ ;; This function will be called from font-lock for a region bounded by POINT
+ ;; and LIMIT, as though it were to identify a keyword for
+ ;; font-lock-keyword-face. It always returns NIL to inhibit this and
+ ;; prevent a repeat invocation. See elisp/lispref page "Search-based
+ ;; Fontification".
+ (let* ((state (c-state-semi-pp-to-literal (point)))
+ (string-start (and (eq (cadr state) 'string)
+ (car (cddr state))))
+ (raw-id (and string-start
+ (save-excursion
+ (goto-char string-start)
+ (and (eq (char-before) ?R)
+ (looking-at "\"\\([^ ()\\\n\r\t]\\{0,16\\}\\)(")
+ (match-string-no-properties 1))))))
+ (while (< (point) limit)
+ (if raw-id
+ (progn
+ (if (search-forward-regexp (concat ")\\(" (regexp-quote raw-id) "\\)\"")
+ limit 'limit)
+ (c-put-font-lock-face (match-beginning 1) (point) 'default))
+ (setq raw-id nil))
+
+ (when (search-forward-regexp
+ "R\\(\"\\)\\([^ ()\\\n\r\t]\\{0,16\\}\\)(" limit 'limit)
+ (when
+ (or (and (eobp)
+ (eq (c-get-char-property (1- (point)) 'face)
+ 'font-lock-warning-face))
+ (eq (c-get-char-property (point) 'face) 'font-lock-string-face)
+ (and (equal (c-get-char-property (match-end 2) 'syntax-table) '(1))
+ (equal (c-get-char-property (match-beginning 1) 'syntax-table)
+ '(1))))
+ (let ((paren-prop (c-get-char-property (1- (point)) 'syntax-table)))
+ (if paren-prop
+ (progn
+ (c-put-font-lock-face (match-beginning 0) (match-end 0)
+ 'font-lock-warning-face)
+ (when
+ (and
+ (equal paren-prop '(15))
+ (not (c-search-forward-char-property 'syntax-table '(15) limit)))
+ (goto-char limit)))
+ (c-put-font-lock-face (match-beginning 1) (match-end 2) 'default)
+ (setq raw-id (match-string-no-properties 2)))))))))
+ nil)
+
+(defun c-font-lock-c++-lambda-captures (limit)
+ ;; Fontify the lambda capture component of C++ lambda declarations.
+ ;;
+ ;; This function will be called from font-lock for a region bounded by POINT
+ ;; and LIMIT, as though it were to identify a keyword for
+ ;; font-lock-keyword-face. It always returns NIL to inhibit this and
+ ;; prevent a repeat invocation. See elisp/lispref page "Search-based
+ ;; Fontification".
+ (let (mode capture-default id-start id-end declaration sub-begin sub-end)
+ (while (and (< (point) limit)
+ (search-forward "[" limit t))
+ (when (progn (backward-char)
+ (prog1
+ (c-looking-at-c++-lambda-capture-list)
+ (forward-char)))
+ (c-forward-syntactic-ws)
+ (setq mode (and (memq (char-after) '(?= ?&))
+ (char-after)))
+ ;; Is the first element of the list a bare "=" or "&"?
+ (when mode
+ (forward-char)
+ (c-forward-syntactic-ws)
+ (if (memq (char-after) '(?, ?\]))
+ (progn
+ (setq capture-default mode)
+ (when (eq (char-after) ?,)
+ (forward-char)
+ (c-forward-syntactic-ws)))
+ (c-backward-token-2)))
+
+ ;; Go round the following loop once per captured item.
+ (while (and (not (eq (char-after) ?\]))
+ (< (point) limit))
+ (if (eq (char-after) ?&)
+ (progn (setq mode ?&)
+ (forward-char)
+ (c-forward-syntactic-ws))
+ (setq mode ?=))
+ (if (c-on-identifier)
+ (progn
+ (setq id-start (point))
+ (forward-char)
+ (c-end-of-current-token)
+ (setq id-end (point))
+ (c-forward-syntactic-ws)
+
+ (setq declaration (eq (char-after) ?=))
+ (when declaration
+ (forward-char) ; over "="
+ (c-forward-syntactic-ws)
+ (setq sub-begin (point)))
+ (if (or (and (< (point) limit)
+ (c-syntactic-re-search-forward "," limit t t))
+ (and (c-go-up-list-forward nil limit)
+ (eq (char-before) ?\])))
+ (backward-char)
+ (goto-char limit))
+ (when declaration
+ (save-excursion
+ (setq sub-end (point))
+ (goto-char sub-begin)
+ (c-font-lock-c++-lambda-captures sub-end)))
+
+ (c-put-font-lock-face id-start id-end
+ (cond
+ (declaration
+ 'font-lock-variable-name-face)
+ ((and capture-default
+ (eq mode capture-default))
+ 'font-lock-warning-face)
+ ((eq mode ?=) font-lock-constant-face)
+ (t 'font-lock-variable-name-face))))
+ (c-syntactic-re-search-forward "," limit 'bound t))
+
+ (c-forward-syntactic-ws)
+ (when (eq (char-after) ?,)
+ (forward-char)
+ (c-forward-syntactic-ws)))
+
+ (setq capture-default nil)
+ (forward-char)))) ; over the terminating "]".
+ nil)
+
(c-lang-defconst c-simple-decl-matchers
"Simple font lock matchers for types and declarations. These are used
@@ -1648,6 +1811,10 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
'c-type 'c-decl-end)))
c-font-lock-objc-methods))
+ ;; Fontify declarators which have been cut off from their declaring
+ ;; types at the start of the region.
+ c-font-lock-cut-off-declarators
+
;; Fontify all declarations, casts and normal labels.
c-font-lock-declarations
@@ -1658,6 +1825,9 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
,@(when (c-lang-const c-recognize-<>-arglists)
`(c-font-lock-<>-arglists))
+ ,@(when (c-major-mode-is 'c++-mode)
+ `(c-font-lock-c++-lambda-captures))
+
;; The first two rules here mostly find occurrences that
;; `c-font-lock-declarations' has found already, but not
;; declarations containing blocks in the type (see note below).
@@ -1699,10 +1869,18 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
(unless (c-skip-comments-and-strings limit)
(c-forward-syntactic-ws)
;; Handle prefix declaration specifiers.
- (when (or (looking-at c-prefix-spec-kwds-re)
- (and (c-major-mode-is 'java-mode)
- (looking-at "@[A-Za-z0-9]+")))
- (c-forward-keyword-clause 1))
+ (while
+ (or
+ (when (or (looking-at c-prefix-spec-kwds-re)
+ (and (c-major-mode-is 'java-mode)
+ (looking-at "@[A-Za-z0-9]+")))
+ (c-forward-keyword-clause 1)
+ t)
+ (when (and c-opt-cpp-prefix
+ (looking-at
+ c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause)
+ t)))
,(if (c-major-mode-is 'c++-mode)
`(when (and (c-forward-type)
(eq (char-after) ?=))
@@ -1828,7 +2006,7 @@ higher."
"\\)\\>"
;; Disallow various common punctuation chars that can't come
;; before the '{' of the enum list, to avoid searching too far.
- "[^][{}();/#=]*"
+ "[^][{};/#=]*"
"{")
'((c-font-lock-declarators limit t nil)
(save-match-data
@@ -2401,10 +2579,10 @@ need for `pike-font-lock-extra-types'.")
'font-lock-comment-face)
;; Handle the case when the fontified region starts inside a
;; comment.
- (let ((range (c-literal-limits)))
+ (let ((start (c-literal-start)))
(setq region-beg (point))
- (when range
- (goto-char (car range)))
+ (when start
+ (goto-char start))
(when (looking-at prefix)
(setq comment-beg (point)))))
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index dd1bccf3d9..e1ccc7924a 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -474,9 +474,15 @@ so that all identifiers are recognized as words.")
;; The value here may be a list of functions or a single function.
t nil
c++ '(c-extend-region-for-CPP
+; c-before-after-change-extend-region-for-lambda-capture ; doesn't seem needed.
+ c-before-change-check-raw-strings
c-before-change-check-<>-operators
+ c-depropertize-CPP
+ c-before-after-change-digit-quote
c-invalidate-macro-cache)
- (c objc) '(c-extend-region-for-CPP c-invalidate-macro-cache)
+ (c objc) '(c-extend-region-for-CPP
+ c-depropertize-CPP
+ c-invalidate-macro-cache)
;; java 'c-before-change-check-<>-operators
awk 'c-awk-record-region-clear-NL)
(c-lang-defvar c-get-state-before-change-functions
@@ -504,15 +510,25 @@ parameters \(point-min) and \(point-max).")
(c-lang-defconst c-before-font-lock-functions
;; For documentation see the following c-lang-defvar of the same name.
;; The value here may be a list of functions or a single function.
- t 'c-change-expand-fl-region
- (c objc) '(c-neutralize-syntax-in-and-mark-CPP
+ t '(c-depropertize-new-text
+ c-change-expand-fl-region)
+ (c objc) '(c-depropertize-new-text
+ c-extend-font-lock-region-for-macros
+ c-neutralize-syntax-in-and-mark-CPP
c-change-expand-fl-region)
- c++ '(c-neutralize-syntax-in-and-mark-CPP
+ c++ '(c-depropertize-new-text
+ c-extend-font-lock-region-for-macros
+; c-before-after-change-extend-region-for-lambda-capture ; doesn't seem needed.
+ c-before-after-change-digit-quote
+ c-after-change-re-mark-raw-strings
+ c-neutralize-syntax-in-and-mark-CPP
c-restore-<>-properties
c-change-expand-fl-region)
- java '(c-restore-<>-properties
+ java '(c-depropertize-new-text
+ c-restore-<>-properties
c-change-expand-fl-region)
- awk 'c-awk-extend-and-syntax-tablify-region)
+ awk '(c-depropertize-new-text
+ c-awk-extend-and-syntax-tablify-region))
(c-lang-defvar c-before-font-lock-functions
(let ((fs (c-lang-const c-before-font-lock-functions)))
(if (listp fs)
@@ -619,6 +635,11 @@ This is of the form that fits inside [ ] in a regexp."
objc (concat c-alnum "_$@"))
(c-lang-defvar c-symbol-chars (c-lang-const c-symbol-chars))
+(c-lang-defconst c-symbol-char-key
+ "Regexp matching a sequence of at least one identifier character."
+ t (concat "[" (c-lang-const c-symbol-chars) "]+"))
+(c-lang-defvar c-symbol-char-key (c-lang-const c-symbol-char-key))
+
(c-lang-defconst c-symbol-key
"Regexp matching identifiers and keywords (with submatch 0). Assumed
to match if `c-symbol-start' matches on the same position."
@@ -1310,6 +1331,14 @@ operators."
(c-lang-defvar c-stmt-delim-chars-with-comma
(c-lang-const c-stmt-delim-chars-with-comma))
+(c-lang-defconst c-pack-ops
+ "Ops which signal C++11's \"parameter pack\""
+ t nil
+ c++ '("..."))
+(c-lang-defconst c-pack-key
+ t (c-make-keywords-re 'appendable (c-lang-const c-pack-ops)))
+(c-lang-defvar c-pack-key (c-lang-const c-pack-key))
+
(c-lang-defconst c-auto-ops
;; Ops which signal C++11's new auto uses.
t nil
@@ -1325,6 +1354,33 @@ operators."
(c-lang-defconst c-haskell-op-re
t (c-make-keywords-re nil (c-lang-const c-haskell-op)))
(c-lang-defvar c-haskell-op-re (c-lang-const c-haskell-op-re))
+
+(c-lang-defconst c-pre-start-tokens
+ "List of operators following which an apparent declaration \(e.g.
+\"t1 *fn (t2 *b);\") is most likely to be an actual declaration
+\(as opposed to an arithmetic expression)."
+ t '(";" "{" "}"))
+(c-lang-defvar c-pre-start-tokens (c-lang-const c-pre-start-tokens))
+
+(c-lang-defconst c-pre-lambda-tokens
+ "List of tokens which may precede a lambda declaration.
+In C++ this is something like \"[a,b] (foo, bar) -> int { ... };\".
+Currently (2016-08) only used in C++ mode."
+ t (c--set-difference
+ (c--delete-duplicates
+ (append (c-lang-const c-operator-list)
+ (c-lang-const c-other-op-syntax-tokens)))
+ (append
+ '("#" "%:" "??=" "##" "%:%:" "??=??=" "::" "." "->"
+ "]" "<:" ":>" "??(" "??)" "??-" "new" "delete"
+ ")" ".*" "->*" "??'" "??!" "??!??!" "??!=" "??'=")
+ '("<%" "%>" "<:" ":>" "%:" "%:%:" "#" "##" "::" "..."))
+ :test #'string-equal))
+
+(c-lang-defconst c-pre-lambda-tokens-re
+ ;; Regexp matching any token in the list `c-pre-lambda-tokens'.
+ t (regexp-opt (c-lang-const c-pre-lambda-tokens)))
+(c-lang-defvar c-pre-lambda-tokens-re (c-lang-const c-pre-lambda-tokens-re))
;;; Syntactic whitespace.
@@ -1716,6 +1772,16 @@ the appropriate place for that."
"array" "float" "function" "int" "mapping" "mixed" "multiset"
"object" "program" "string" "this_program" "void"))
+(c-lang-defconst c-return-kwds
+ "Keywords which return a value to the calling function."
+ t '("return")
+ idl nil)
+
+(c-lang-defconst c-return-key
+ ;; Adorned regexp matching `c-return-kwds'.
+ t (c-make-keywords-re t (c-lang-const c-return-kwds)))
+(c-lang-defvar c-return-key (c-lang-const c-return-key))
+
(c-lang-defconst c-primitive-type-key
;; An adorned regexp that matches `c-primitive-type-kwds'.
t (c-make-keywords-re t (c-lang-const c-primitive-type-kwds)))
@@ -1778,7 +1844,7 @@ but they don't build a type of themselves. Unlike the keywords on
not the type face."
t nil
c '("const" "restrict" "volatile")
- c++ '("const" "constexpr" "noexcept" "volatile" "throw" "final" "override")
+ c++ '("const" "noexcept" "volatile" "throw" "final" "override")
objc '("const" "volatile"))
(c-lang-defconst c-opt-type-modifier-key
@@ -1980,8 +2046,8 @@ If any of these also are on `c-type-list-kwds', `c-ref-list-kwds',
will be handled."
t nil
(c c++) '("auto" "extern" "inline" "register" "static")
- c++ (append '("explicit" "friend" "mutable" "template" "thread_local"
- "using" "virtual")
+ c++ (append '("constexpr" "explicit" "friend" "mutable" "template"
+ "thread_local" "using" "virtual")
(c-lang-const c-modifier-kwds))
objc '("auto" "bycopy" "byref" "extern" "in" "inout" "oneway" "out" "static")
;; FIXME: Some of those below ought to be on `c-other-decl-kwds' instead.
@@ -2249,7 +2315,12 @@ contain type identifiers."
(c c++) '(;; GCC extension.
"__attribute__"
;; MSVC extension.
- "__declspec"))
+ "__declspec")
+ c++ (append (c-lang-const c-paren-nontype-kwds) '("noexcept")))
+
+(c-lang-defconst c-paren-nontype-key
+ t (c-make-keywords-re t (c-lang-const c-paren-nontype-kwds)))
+(c-lang-defvar c-paren-nontype-key (c-lang-const c-paren-nontype-key))
(c-lang-defconst c-paren-type-kwds
"Keywords that may be followed by a parenthesis expression containing
@@ -2297,6 +2368,15 @@ assumed to be set if this isn't nil."
t (c-make-keywords-re t (c-lang-const c-<>-sexp-kwds)))
(c-lang-defvar c-opt-<>-sexp-key (c-lang-const c-opt-<>-sexp-key))
+(c-lang-defconst c-inside-<>-type-kwds
+ "Keywords which, used inside a C++ style template arglist, introduce a type."
+ t nil
+ java '("extends" "super"))
+
+(c-lang-defconst c-inside-<>-type-key
+ t (c-make-keywords-re t (c-lang-const c-inside-<>-type-kwds)))
+(c-lang-defvar c-inside-<>-type-key (c-lang-const c-inside-<>-type-key))
+
(c-lang-defconst c-brace-id-list-kwds
"Keywords that may be followed by a brace block containing a comma
separated list of identifier definitions, i.e. like the list of
@@ -2918,6 +2998,10 @@ Identifier syntax is in effect when this is matched \(see
"\\)"
"\\([^=]\\|$\\)")
c++ (concat "\\("
+ "&&"
+ "\\|"
+ "\\.\\.\\."
+ "\\|"
"[*(&]"
"\\|"
(c-lang-const c-type-decl-prefix-key)
@@ -3064,7 +3148,7 @@ is in effect or not."
(c-lang-defconst c-special-brace-lists
"List of open- and close-chars that makes up a pike-style brace list,
-i.e. for a ([ ]) list there should be a cons (?\\[ . ?\\]) in this
+i.e., for a ([ ]) list there should be a cons (?\\[ . ?\\]) in this
list."
t nil
pike '((?{ . ?}) (?\[ . ?\]) (?< . ?>)))
@@ -3076,6 +3160,13 @@ list."
c t)
(c-lang-defvar c-recognize-knr-p (c-lang-const c-recognize-knr-p))
+(c-lang-defconst c-pre-id-bracelist-key
+ "A regexp matching tokens which, preceding an identifier, signify a bracelist.
+"
+ t "\\<\\>"
+ c++ "new\\([^[:alnum:]_$]\\|$\\)\\|&&?\\(\\S.\\|$\\)")
+(c-lang-defvar c-pre-id-bracelist-key (c-lang-const c-pre-id-bracelist-key))
+
(c-lang-defconst c-recognize-typeless-decls
"Non-nil means function declarations without return type should be
recognized. That can introduce an ambiguity with parenthesized macro
@@ -3213,8 +3304,8 @@ i.e. before \":\". Only used if `c-recognize-colon-labels' is set."
(append (c-lang-const c-label-kwds)
(c-lang-const c-protection-kwds))
:test 'string-equal)))
- ;; Don't allow string literals, except in AWK. Character constants are OK.
- (c objc java pike idl) (concat "\"\\|"
+ ;; Don't allow string literals, except in AWK and Java. Character constants are OK.
+ (c objc pike idl) (concat "\"\\|"
(c-lang-const c-nonlabel-token-key))
;; Also check for open parens in C++, to catch member init lists in
;; constructors. We normally allow it so that macros with arguments
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 738870b727..5b324d6d24 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -71,6 +71,19 @@
;;
;; http://lists.sourceforge.net/mailman/listinfo/cc-mode-announce
+;; Externally maintained major modes which use CC-mode's engine include:
+;; - cuda-mode
+;; - csharp-mode (https://github.com/josteink/csharp-mode)
+;; - haxe-mode
+;; - d-mode
+;; - dart-mode
+;; - cc-php-js-cs.el
+;; - php-mode
+;; - yang-mode
+;; - math-mode (mathematica)
+;; - unrealscript-mode
+;; - groovy-mode
+
;;; Code:
;; For Emacs < 22.2.
@@ -141,7 +154,18 @@
;; derived-mode-ex.el>.
(defun c-leave-cc-mode-mode ()
- (setq c-buffer-is-cc-mode nil))
+ (when c-buffer-is-cc-mode
+ (save-restriction
+ (widen)
+ (c-save-buffer-state ()
+ (c-clear-char-properties (point-min) (point-max) 'category)
+ (c-clear-char-properties (point-min) (point-max) 'syntax-table)
+ (c-clear-char-properties (point-min) (point-max) 'c-is-sws)
+ (c-clear-char-properties (point-min) (point-max) 'c-in-sws)
+ (c-clear-char-properties (point-min) (point-max) 'c-type)
+ (if (c-major-mode-is 'awk-mode)
+ (c-clear-char-properties (point-min) (point-max) 'c-awk-NL-prop))))
+ (setq c-buffer-is-cc-mode nil)))
(defun c-init-language-vars-for (mode)
"Initialize the language variables for one of the language modes
@@ -468,10 +492,15 @@ preferably use the `c-mode-menu' language constant directly."
(defvar c-just-done-before-change nil)
(make-variable-buffer-local 'c-just-done-before-change)
;; This variable is set to t by `c-before-change' and to nil by
-;; `c-after-change'. It is used to detect a spurious invocation of
-;; `before-change-functions' directly following on from a correct one. This
-;; happens in some Emacsen, for example when `basic-save-buffer' does (insert
-;; ?\n) when `require-final-newline' is non-nil.
+;; `c-after-change'. It is used for two purposes: (i) to detect a spurious
+;; invocation of `before-change-functions' directly following on from a
+;; correct one. This happens in some Emacsen, for example when
+;; `basic-save-buffer' does (insert ?\n) when `require-final-newline' is
+;; non-nil; (ii) to detect when Emacs fails to invoke
+;; `before-change-functions'. This can happen when reverting a buffer - see
+;; bug #24094. It seems these failures happen only in GNU Emacs; XEmacs
+;; seems to maintain the strict alternation of calls to
+;; `before-change-functions' and `after-change-functions'.
(defun c-basic-common-init (mode default-style)
"Do the necessary initialization for the syntax handling routines
@@ -641,6 +670,14 @@ that requires a literal mode spec at compile time."
(make-variable-buffer-local 'c-new-BEG)
(defvar c-new-END 0)
(make-variable-buffer-local 'c-new-END)
+;; The following two variables record the values of `c-new-BEG' and
+;; `c-new-END' just after `c-new-END' has been adjusted for the length of text
+;; inserted or removed. They may be read by any after-change function (but
+;; should not be altered by one).
+(defvar c-old-BEG 0)
+(make-variable-buffer-local 'c-old-BEG)
+(defvar c-old-END 0)
+(make-variable-buffer-local 'c-old-END)
(defun c-common-init (&optional mode)
"Common initialization for all CC Mode modes.
@@ -674,9 +711,8 @@ compatible with old code; callers should always specify it."
(funcall fn (point-min) (point-max)))
c-get-state-before-change-functions)
(mapc (lambda (fn)
- (if (not (eq fn 'c-restore-<>-properties))
- (funcall fn (point-min) (point-max)
- (- (point-max) (point-min)))))
+ (funcall fn (point-min) (point-max)
+ (- (point-max) (point-min))))
c-before-font-lock-functions))))
(set (make-local-variable 'outline-regexp) "[^#\n\^M]")
@@ -842,14 +878,6 @@ Note that the style variables are always made local to the buffer."
;;; Change hooks, linking with Font Lock and electric-indent-mode.
-;; Buffer local variables recording Beginning/End-of-Macro position before a
-;; change, when a macro straddles, respectively, the BEG or END (or both) of
-;; the change region. Otherwise these have the values BEG/END.
-(defvar c-old-BOM 0)
-(make-variable-buffer-local 'c-old-BOM)
-(defvar c-old-EOM 0)
-(make-variable-buffer-local 'c-old-EOM)
-
(defun c-called-from-text-property-change-p ()
;; Is the primitive which invoked `before-change-functions' or
;; `after-change-functions' one which merely changes text properties? This
@@ -862,9 +890,42 @@ Note that the style variables are always made local to the buffer."
(memq (cadr (backtrace-frame 3))
'(put-text-property remove-list-of-text-properties)))
+(defun c-depropertize-CPP (beg end)
+ ;; Remove the punctuation syntax-table text property from the CPP parts of
+ ;; (c-new-BEG c-new-END).
+ ;;
+ ;; This function is in the C/C++/ObjC values of
+ ;; `c-get-state-before-change-functions' and is called exclusively as a
+ ;; before change function.
+ (c-save-buffer-state (m-beg ss-found)
+ (goto-char c-new-BEG)
+ (while (and (< (point) beg)
+ (search-forward-regexp c-anchored-cpp-prefix beg 'bound))
+ (goto-char (match-beginning 1))
+ (setq m-beg (point))
+ (c-end-of-macro)
+ (c-clear-char-property-with-value m-beg (point) 'syntax-table '(1)))
+
+ (while (and (< (point) end)
+ (setq ss-found
+ (search-forward-regexp c-anchored-cpp-prefix end 'bound)))
+ (goto-char (match-beginning 1))
+ (setq m-beg (point))
+ (c-end-of-macro))
+ (if (and ss-found (> (point) end))
+ (c-clear-char-property-with-value m-beg (point) 'syntax-table '(1)))
+
+ (while (and (< (point) c-new-END)
+ (search-forward-regexp c-anchored-cpp-prefix c-new-END 'bound))
+ (goto-char (match-beginning 1))
+ (setq m-beg (point))
+ (c-end-of-macro)
+ (c-clear-char-property-with-value
+ m-beg (point) 'syntax-table '(1)))))
+
(defun c-extend-region-for-CPP (beg end)
- ;; Set c-old-BOM or c-old-EOM respectively to BEG, END, each extended to the
- ;; beginning/end of any preprocessor construct they may be in.
+ ;; Adjust `c-new-BEG', `c-new-END' respectively to the beginning and end of
+ ;; any preprocessor construct they may be in.
;;
;; Point is undefined both before and after this function call; the buffer
;; has already been widened, and match-data saved. The return value is
@@ -873,45 +934,56 @@ Note that the style variables are always made local to the buffer."
;; This function is in the C/C++/ObjC values of
;; `c-get-state-before-change-functions' and is called exclusively as a
;; before change function.
- (goto-char beg)
+ (goto-char c-new-BEG)
(c-beginning-of-macro)
- (setq c-old-BOM (point))
+ (when (< (point) c-new-BEG)
+ (setq c-new-BEG (max (point) (c-determine-limit 500 c-new-BEG))))
- (goto-char end)
+ (goto-char c-new-END)
(when (c-beginning-of-macro)
(c-end-of-macro)
(or (eobp) (forward-char))) ; Over the terminating NL which may be marked
; with a c-cpp-delimiter category property
- (setq c-old-EOM (point)))
-
-(defun c-extend-font-lock-region-for-macros (begg endd &optional old-len)
- ;; Extend the region (BEGG ENDD) to cover all (possibly changed)
- ;; preprocessor macros; return the cons (new-BEG . new-END). OLD-LEN should
- ;; be either the old length parameter when called from an
- ;; after-change-function, or nil otherwise. This defun uses the variables
- ;; c-old-BOM, c-new-BOM.
+ (when (> (point) c-new-END)
+ (setq c-new-END (min (point) (c-determine-+ve-limit 500 c-new-END)))))
+
+(defun c-depropertize-new-text (beg end old-len)
+ ;; Remove from the new text in (BEG END) any and all text properties which
+ ;; might interfere with CC Mode's proper working.
+ ;;
+ ;; This function is called exclusively as an after-change function. It
+ ;; appears in the value (for all languages) of
+ ;; `c-before-font-lock-functions'. The value of point is undefined both on
+ ;; entry and exit, and the return value has no significance. The parameters
+ ;; BEG, END, and OLD-LEN are the standard ones supplied to all after-change
+ ;; functions.
+ (c-save-buffer-state ()
+ (when (> end beg)
+ (c-clear-char-properties beg end 'syntax-table)
+ (c-clear-char-properties beg end 'category)
+ (c-clear-char-properties beg end 'c-is-sws)
+ (c-clear-char-properties beg end 'c-in-sws)
+ (c-clear-char-properties beg end 'c-type)
+ (c-clear-char-properties beg end 'c-awk-NL-prop))))
+
+(defun c-extend-font-lock-region-for-macros (begg endd old-len)
+ ;; Extend the region (c-new-BEG c-new-END) to cover all (possibly changed)
+ ;; preprocessor macros; The return value has no significance.
;;
;; Point is undefined on both entry and exit to this function. The buffer
;; will have been widened on entry.
- (let (limits new-beg new-end)
- (goto-char c-old-BOM) ; already set to old start of macro or begg.
- (setq new-beg
- (min begg
- (if (setq limits (c-state-literal-at (point)))
- (cdr limits) ; go forward out of any string or comment.
- (point))))
-
- (goto-char endd)
- (if (setq limits (c-state-literal-at (point)))
- (goto-char (car limits))) ; go backward out of any string or comment.
- (if (c-beginning-of-macro)
- (c-end-of-macro))
- (setq new-end (max endd
- (if old-len
- (+ (- c-old-EOM old-len) (- endd begg))
- c-old-EOM)
- (point)))
- (cons new-beg new-end)))
+ ;;
+ ;; c-new-BEG has already been extended in `c-extend-region-for-CPP' so we
+ ;; don't need to repeat the exercise here.
+ ;;
+ ;; This function is in the C/C++/ObjC value of `c-before-font-lock-functions'.
+ (goto-char endd)
+ (when (c-beginning-of-macro)
+ (c-end-of-macro)
+ ;; Determine the region, (c-new-BEG c-new-END), which will get font
+ ;; locked. This restricts the region should there be long macros.
+ (setq c-new-END (min (max c-new-END (point))
+ (c-determine-+ve-limit 500 c-new-END)))))
(defun c-neutralize-CPP-line (beg end)
;; BEG and END bound a region, typically a preprocessor line. Put a
@@ -940,19 +1012,14 @@ Note that the style variables are always made local to the buffer."
(t nil)))))))
(defun c-neutralize-syntax-in-and-mark-CPP (begg endd old-len)
- ;; (i) Extend the font lock region to cover all changed preprocessor
- ;; regions; it does this by setting the variables `c-new-BEG' and
- ;; `c-new-END' to the new boundaries.
- ;;
- ;; (ii) "Neutralize" every preprocessor line wholly or partially in the
- ;; extended changed region. "Restore" lines which were CPP lines before the
- ;; change and are no longer so; these can be located from the Buffer local
- ;; variables `c-old-BOM' and `c-old-EOM'.
+ ;; (i) "Neutralize" every preprocessor line wholly or partially in the
+ ;; changed region. "Restore" lines which were CPP lines before the change
+ ;; and are no longer so.
;;
- ;; (iii) Mark every CPP construct by placing a `category' property value
+ ;; (ii) Mark each CPP construct by placing a `category' property value
;; `c-cpp-delimiter' at its start and end. The marked characters are the
;; opening # and usually the terminating EOL, but sometimes the character
- ;; before a comment/string delimiter.
+ ;; before a comment delimiter.
;;
;; That is, set syntax-table properties on characters that would otherwise
;; interact syntactically with those outside the CPP line(s).
@@ -969,16 +1036,9 @@ Note that the style variables are always made local to the buffer."
;; Note: SPEED _MATTERS_ IN THIS FUNCTION!!!
;;
;; This function might make hidden buffer changes.
- (c-save-buffer-state (new-bounds)
- ;; First determine the region, (c-new-BEG c-new-END), which will get font
- ;; locked. It might need "neutralizing". This region may not start
- ;; inside a string, comment, or macro.
- (setq new-bounds (c-extend-font-lock-region-for-macros
- c-new-BEG c-new-END old-len))
- (setq c-new-BEG (max (car new-bounds) (c-determine-limit 500 begg))
- c-new-END (min (cdr new-bounds) (c-determine-+ve-limit 500 endd)))
- ;; Clear all old relevant properties.
- (c-clear-char-property-with-value c-new-BEG c-new-END 'syntax-table '(1))
+ (c-save-buffer-state (limits)
+ ;; Clear 'syntax-table properties "punctuation":
+ ;; (c-clear-char-property-with-value c-new-BEG c-new-END 'syntax-table '(1))
;; CPP "comment" markers:
(if (eval-when-compile (memq 'category-properties c-emacs-features));Emacs.
@@ -988,6 +1048,8 @@ Note that the style variables are always made local to the buffer."
;; Add needed properties to each CPP construct in the region.
(goto-char c-new-BEG)
+ (if (setq limits (c-literal-limits)) ; Go past any literal.
+ (goto-char (cdr limits)))
(skip-chars-backward " \t")
(let ((pps-position (point)) pps-state mbeg)
(while (and (< (point) c-new-END)
@@ -1007,7 +1069,7 @@ Note that the style variables are always made local to the buffer."
(nth 4 pps-state)))) ; in a comment?
(goto-char (match-beginning 1))
(setq mbeg (point))
- (if (> (c-syntactic-end-of-macro) mbeg)
+ (if (> (c-no-comment-end-of-macro) mbeg)
(progn
(c-neutralize-CPP-line mbeg (point)) ; "punctuation" properties
(if (eval-when-compile
@@ -1016,6 +1078,102 @@ Note that the style variables are always made local to the buffer."
(forward-line)) ; no infinite loop with, e.g., "#//"
)))))
+(defun c-before-after-change-digit-quote (beg end &optional old-len)
+ ;; This function either removes or applies the punctuation value ('(1)) of
+ ;; the `syntax-table' text property on single quote marks which are
+ ;; separator characters in long integer literals, e.g. "4'294'967'295". It
+ ;; applies to both decimal/octal and hex literals. (FIXME (2016-06-10): it
+ ;; should also apply to binary literals.)
+ ;;
+ ;; In both uses of the function, the `syntax-table' properties are
+ ;; removed/applied only on quote marks which appear to be digit separators.
+ ;;
+ ;; Point is undefined on both entry and exit to this function, and the
+ ;; return value has no significance. The function is called solely as a
+ ;; before-change function (see `c-get-state-before-change-functions') and as
+ ;; an after change function (see `c-before-font-lock-functions', with the
+ ;; parameters BEG, END, and (optionally) OLD-LEN being given the standard
+ ;; values for before/after-change functions.
+ (c-save-buffer-state ((num-begin c-new-BEG) digit-re try-end)
+ (goto-char c-new-END)
+ (when (looking-at "\\(x\\)?[0-9a-fA-F']+")
+ (setq c-new-END (match-end 0)))
+ (goto-char c-new-BEG)
+ (when (looking-at "\\(x?\\)[0-9a-fA-F']")
+ (if (re-search-backward "\\(0x\\)?[0-9a-fA-F]*\\=" nil t)
+ (setq c-new-BEG (point))))
+
+ (while
+ (re-search-forward "[0-9a-fA-F]'[0-9a-fA-F]" c-new-END t)
+ (setq try-end (1- (point)))
+ (re-search-backward "[^0-9a-fA-F']" num-begin t)
+ (setq digit-re
+ (cond
+ ((and (not (bobp)) (eq (char-before) ?0) (memq (char-after) '(?x ?X)))
+ "[0-9a-fA-F]")
+ ((and (eq (char-after (1+ (point))) ?0)
+ (memq (char-after (+ 2 (point))) '(?b ?B)))
+ "[01]")
+ ((memq (char-after (1+ (point))) '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))
+ "[0-9]")
+ (t nil)))
+ (when digit-re
+ (cond ((eq (char-after) ?x) (forward-char))
+ ((looking-at ".?0[Bb]") (goto-char (match-end 0)))
+ ((looking-at digit-re))
+ (t (forward-char)))
+ (when (not (c-in-literal))
+ (let ((num-end ; End of valid sequence of digits/quotes.
+ (save-excursion
+ (re-search-forward
+ (concat "\\=\\(" digit-re "+'\\)*" digit-re "+") nil t)
+ (point))))
+ (setq try-end ; End of sequence of digits/quotes
+ (save-excursion
+ (re-search-forward
+ (concat "\\=\\(" digit-re "\\|'\\)+") nil t)
+ (point)))
+ (while (re-search-forward
+ (concat digit-re "\\('\\)" digit-re) num-end t)
+ (if old-len ; i.e. are we in an after-change function?
+ (c-put-char-property (match-beginning 1) 'syntax-table '(1))
+ (c-clear-char-property (match-beginning 1) 'syntax-table))
+ (backward-char)))))
+ (goto-char try-end)
+ (setq num-begin (point)))))
+
+;; The following doesn't seem needed at the moment (2016-08-15).
+;; (defun c-before-after-change-extend-region-for-lambda-capture
+;; (_beg _end &optional _old-len)
+;; ;; In C++ Mode, extend the region (c-new-BEG c-new-END) to cover any lambda
+;; ;; function capture lists we happen to be inside. This function is expected
+;; ;; to be called both as a before-change and after change function.
+;; ;;
+;; ;; Note that these things _might_ be nested, with a capture list looking
+;; ;; like:
+;; ;;
+;; ;; [ ...., &foo = [..](){...}(..), ... ]
+;; ;;
+;; ;; . What a wonderful language is C++. ;-)
+;; (c-save-buffer-state (paren-state pos)
+;; (goto-char c-new-BEG)
+;; (setq paren-state (c-parse-state))
+;; (while (setq pos (c-pull-open-brace paren-state))
+;; (goto-char pos)
+;; (when (c-looking-at-c++-lambda-capture-list)
+;; (setq c-new-BEG (min c-new-BEG pos))
+;; (if (c-go-list-forward)
+;; (setq c-new-END (max c-new-END (point))))))
+
+;; (goto-char c-new-END)
+;; (setq paren-state (c-parse-state))
+;; (while (setq pos (c-pull-open-brace paren-state))
+;; (goto-char pos)
+;; (when (c-looking-at-c++-lambda-capture-list)
+;; (setq c-new-BEG (min c-new-BEG pos))
+;; (if (c-go-list-forward)
+;; (setq c-new-END (max c-new-END (point))))))))
+
(defun c-before-change (beg end)
;; Function to be put on `before-change-functions'. Primarily, this calls
;; the language dependent `c-get-state-before-change-functions'. It is
@@ -1130,10 +1288,22 @@ Note that the style variables are always made local to the buffer."
;; This calls the language variable c-before-font-lock-functions, if non nil.
;; This typically sets `syntax-table' properties.
+ ;; We can sometimes get two consecutive calls to `after-change-functions'
+ ;; without an intervening call to `before-change-functions' when reverting
+ ;; the buffer (see bug #24094). Whatever the cause, assume that the entire
+ ;; buffer has changed.
+ (when (not c-just-done-before-change)
+ (save-restriction
+ (widen)
+ (c-before-change (point-min) (point-max))
+ (setq beg (point-min)
+ end (point-max)
+ old-len (- end beg))))
+
;; (c-new-BEG c-new-END) will be the region to fontify. It may become
;; larger than (beg end).
- ;; (setq c-new-BEG beg c-new-END end)
(setq c-new-END (- (+ c-new-END (- end beg)) old-len))
+ (setq c-old-BEG c-new-BEG c-old-END c-new-END)
(unless (c-called-from-text-property-change-p)
(setq c-just-done-before-change nil)
@@ -1181,28 +1351,41 @@ Note that the style variables are always made local to the buffer."
(defun c-fl-decl-start (pos)
;; If the beginning of the line containing POS is in the middle of a "local"
- ;; declaration (i.e. one which does not start outside of braces enclosing
- ;; POS, such as a struct), return the beginning of that declaration.
- ;; Otherwise return nil. Note that declarations, in this sense, can be
- ;; nested.
+ ;; declaration, return the beginning of that declaration. Otherwise return
+ ;; nil. Note that declarations, in this sense, can be nested. (A local
+ ;; declaration is one which does not start outside of struct braces (and
+ ;; similar) enclosing POS. Brace list braces here are not "similar".
;;
;; This function is called indirectly from font locking stuff - either from
;; c-after-change (to prepare for after-change font-locking) or from font
;; lock context (etc.) fontification.
- (let ((lit-limits (c-literal-limits))
+ (let ((lit-start (c-literal-start))
(new-pos pos)
+ capture-opener
bod-lim bo-decl)
(goto-char (c-point 'bol new-pos))
- (when lit-limits ; Comment or string.
- (goto-char (car lit-limits)))
+ (when lit-start ; Comment or string.
+ (goto-char lit-start))
(setq bod-lim (c-determine-limit 500))
+ ;; In C++ Mode, first check if we are within a (possibly nested) lambda
+ ;; form capture list.
+ (when (c-major-mode-is 'c++-mode)
+ (let ((paren-state (c-parse-state))
+ opener)
+ (save-excursion
+ (while (setq opener (c-pull-open-brace paren-state))
+ (goto-char opener)
+ (if (c-looking-at-c++-lambda-capture-list)
+ (setq capture-opener (point)))))))
+
(while
;; Go to a less nested declaration each time round this loop.
(and
- (eq (car (c-beginning-of-decl-1 bod-lim)) 'same)
+ (c-syntactic-skip-backward "^;{}" bod-lim t)
(> (point) bod-lim)
- (progn (setq bo-decl (point))
+ (progn (c-forward-syntactic-ws)
+ (setq bo-decl (point))
;; Are we looking at a keyword such as "template" or
;; "typedef" which can decorate a type, or the type itself?
(when (or (looking-at c-prefix-spec-kwds-re)
@@ -1219,12 +1402,19 @@ Note that the style variables are always made local to the buffer."
(and (eq (char-before) ?\<)
(eq (c-get-char-property
(1- (point)) 'syntax-table)
- c-<-as-paren-syntax)))))
+ c-<-as-paren-syntax))
+ (and (eq (char-before) ?{)
+ (save-excursion
+ (backward-char)
+ (numberp (c-looking-at-or-maybe-in-bracelist nil))))
+ )))
(not (bobp)))
(backward-char)) ; back over (, [, <.
+ (when (and capture-opener (< capture-opener new-pos))
+ (setq new-pos capture-opener))
(and (/= new-pos pos) new-pos)))
-(defun c-change-expand-fl-region (beg end old-len)
+(defun c-change-expand-fl-region (_beg _end _old-len)
;; Expand the region (c-new-BEG c-new-END) to an after-change font-lock
;; region. This will usually be the smallest sequence of whole lines
;; containing `c-new-BEG' and `c-new-END', but if `c-new-BEG' is in a
@@ -1233,10 +1423,15 @@ Note that the style variables are always made local to the buffer."
;;
;; This is called from an after-change-function, but the parameters BEG END
;; and OLD-LEN are not used.
- (if font-lock-mode
- (setq c-new-BEG
- (or (c-fl-decl-start c-new-BEG) (c-point 'bol c-new-BEG))
- c-new-END (c-point 'bonl c-new-END))))
+ (if font-lock-mode
+ (setq c-new-BEG
+ (or (c-fl-decl-start c-new-BEG) (c-point 'bol c-new-BEG))
+ c-new-END
+ (save-excursion
+ (goto-char c-new-END)
+ (if (bolp)
+ (point)
+ (c-point 'bonl c-new-END))))))
(defun c-context-expand-fl-region (beg end)
;; Return a cons (NEW-BEG . NEW-END), where NEW-BEG is the beginning of a
@@ -1446,7 +1641,8 @@ This function is called from `c-common-init', once per mode initialization."
;;;###autoload (add-to-list 'auto-mode-alist '("\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\'" . c++-mode))
;;;###autoload (add-to-list 'auto-mode-alist '("\\.\\(CC?\\|HH?\\)\\'" . c++-mode))
-;;;###autoload (add-to-list 'auto-mode-alist '("\\.[ch]\\'" . c-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.c\\'" . c-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.h\\'" . c-or-c++-mode))
;; NB: The following two associate yacc and lex files to C Mode, which
;; is not really suitable for those formats. Anyway, afaik there's
@@ -1476,18 +1672,50 @@ initialization, then `c-mode-hook'.
Key bindings:
\\{c-mode-map}"
+ :after-hook (progn (c-make-noise-macro-regexps)
+ (c-make-macro-with-semi-re)
+ (c-update-modeline))
(c-initialize-cc-mode t)
- (set-syntax-table c-mode-syntax-table)
- (setq local-abbrev-table c-mode-abbrev-table
- abbrev-mode t)
- (use-local-map c-mode-map)
+ (setq abbrev-mode t)
(c-init-language-vars-for 'c-mode)
- (c-make-macro-with-semi-re) ; matches macro names whose expansion ends with ;
(c-common-init 'c-mode)
(easy-menu-add c-c-menu)
(cc-imenu-init cc-imenu-c-generic-expression)
- (c-run-mode-hooks 'c-mode-common-hook 'c-mode-hook)
- (c-update-modeline))
+ (c-run-mode-hooks 'c-mode-common-hook))
+
+(defconst c-or-c++-mode--regexp
+ (eval-when-compile
+ (let ((id "[a-zA-Z0-9_]+") (ws "[ \t\r]+") (ws-maybe "[ \t\r]*"))
+ (concat "^" ws-maybe "\\(?:"
+ "using" ws "\\(?:namespace" ws "std;\\|std::\\)"
+ "\\|" "namespace" "\\(:?" ws id "\\)?" ws-maybe "{"
+ "\\|" "class" ws id ws-maybe "[:{\n]"
+ "\\|" "template" ws-maybe "<.*>"
+ "\\|" "#include" ws-maybe "<\\(?:string\\|iostream\\|map\\)>"
+ "\\)")))
+ "A regexp applied to C header files to check if they are really C++.")
+
+;;;###autoload
+(defun c-or-c++-mode ()
+ "Analyse buffer and enable either C or C++ mode.
+
+Some people and projects use .h extension for C++ header files
+which is also the one used for C header files. This makes
+matching on file name insufficient for detecting major mode that
+should be used.
+
+This function attempts to use file contents to determine whether
+the code is C or C++ and based on that chooses whether to enable
+`c-mode' or `c++-mode'."
+ (if (save-excursion
+ (save-restriction
+ (save-match-data
+ (widen)
+ (goto-char (point-min))
+ (re-search-forward c-or-c++-mode--regexp
+ (+ (point) c-guess-region-max) t))))
+ (c++-mode)
+ (c-mode)))
;; Support for C++
@@ -1531,18 +1759,16 @@ initialization, then `c++-mode-hook'.
Key bindings:
\\{c++-mode-map}"
+ :after-hook (progn (c-make-noise-macro-regexps)
+ (c-make-macro-with-semi-re)
+ (c-update-modeline))
(c-initialize-cc-mode t)
- (set-syntax-table c++-mode-syntax-table)
- (setq local-abbrev-table c++-mode-abbrev-table
- abbrev-mode t)
- (use-local-map c++-mode-map)
+ (setq abbrev-mode t)
(c-init-language-vars-for 'c++-mode)
- (c-make-macro-with-semi-re) ; matches macro names whose expansion ends with ;
(c-common-init 'c++-mode)
(easy-menu-add c-c++-menu)
(cc-imenu-init cc-imenu-c++-generic-expression)
- (c-run-mode-hooks 'c-mode-common-hook 'c++-mode-hook)
- (c-update-modeline))
+ (c-run-mode-hooks 'c-mode-common-hook))
;; Support for Objective-C
@@ -1584,18 +1810,16 @@ initialization, then `objc-mode-hook'.
Key bindings:
\\{objc-mode-map}"
+ :after-hook (progn (c-make-noise-macro-regexps)
+ (c-make-macro-with-semi-re)
+ (c-update-modeline))
(c-initialize-cc-mode t)
- (set-syntax-table objc-mode-syntax-table)
- (setq local-abbrev-table objc-mode-abbrev-table
- abbrev-mode t)
- (use-local-map objc-mode-map)
+ (setq abbrev-mode t)
(c-init-language-vars-for 'objc-mode)
- (c-make-macro-with-semi-re) ; matches macro names whose expansion ends with ;
(c-common-init 'objc-mode)
(easy-menu-add c-objc-menu)
(cc-imenu-init nil 'cc-imenu-objc-function)
- (c-run-mode-hooks 'c-mode-common-hook 'objc-mode-hook)
- (c-update-modeline))
+ (c-run-mode-hooks 'c-mode-common-hook))
;; Support for Java
@@ -1645,17 +1869,14 @@ initialization, then `java-mode-hook'.
Key bindings:
\\{java-mode-map}"
+ :after-hook (c-update-modeline)
(c-initialize-cc-mode t)
- (set-syntax-table java-mode-syntax-table)
- (setq local-abbrev-table java-mode-abbrev-table
- abbrev-mode t)
- (use-local-map java-mode-map)
+ (setq abbrev-mode t)
(c-init-language-vars-for 'java-mode)
(c-common-init 'java-mode)
(easy-menu-add c-java-menu)
(cc-imenu-init cc-imenu-java-generic-expression)
- (c-run-mode-hooks 'c-mode-common-hook 'java-mode-hook)
- (c-update-modeline))
+ (c-run-mode-hooks 'c-mode-common-hook))
;; Support for CORBA's IDL language
@@ -1694,16 +1915,13 @@ initialization, then `idl-mode-hook'.
Key bindings:
\\{idl-mode-map}"
+ :after-hook (c-update-modeline)
(c-initialize-cc-mode t)
- (set-syntax-table idl-mode-syntax-table)
- (setq local-abbrev-table idl-mode-abbrev-table)
- (use-local-map idl-mode-map)
(c-init-language-vars-for 'idl-mode)
(c-common-init 'idl-mode)
(easy-menu-add c-idl-menu)
;;(cc-imenu-init cc-imenu-idl-generic-expression) ;TODO
- (c-run-mode-hooks 'c-mode-common-hook 'idl-mode-hook)
- (c-update-modeline))
+ (c-run-mode-hooks 'c-mode-common-hook))
;; Support for Pike
@@ -1746,17 +1964,14 @@ initialization, then `pike-mode-hook'.
Key bindings:
\\{pike-mode-map}"
+ :after-hook (c-update-modeline)
(c-initialize-cc-mode t)
- (set-syntax-table pike-mode-syntax-table)
- (setq local-abbrev-table pike-mode-abbrev-table
- abbrev-mode t)
- (use-local-map pike-mode-map)
+ (setq abbrev-mode t)
(c-init-language-vars-for 'pike-mode)
(c-common-init 'pike-mode)
(easy-menu-add c-pike-menu)
;;(cc-imenu-init cc-imenu-pike-generic-expression) ;TODO
- (c-run-mode-hooks 'c-mode-common-hook 'pike-mode-hook)
- (c-update-modeline))
+ (c-run-mode-hooks 'c-mode-common-hook))
;; Support for AWK
@@ -1775,9 +1990,9 @@ Key bindings:
(defvar awk-mode-map
(let ((map (c-make-inherited-keymap)))
;; Add bindings which are only useful for awk.
- (define-key map "#" 'self-insert-command)
- (define-key map "/" 'self-insert-command)
- (define-key map "*" 'self-insert-command)
+ (define-key map "#" 'self-insert-command);Overrides electric parent binding.
+ (define-key map "/" 'self-insert-command);Overrides electric parent binding.
+ (define-key map "*" 'self-insert-command);Overrides electric parent binding.
(define-key map "\C-c\C-n" 'undefined) ; #if doesn't exist in awk.
(define-key map "\C-c\C-p" 'undefined)
(define-key map "\C-c\C-u" 'undefined)
@@ -1810,22 +2025,18 @@ initialization, then `awk-mode-hook'.
Key bindings:
\\{awk-mode-map}"
+ :after-hook (c-update-modeline)
;; We need the next line to stop the macro defining
;; `awk-mode-syntax-table'. This would mask the real table which is
;; declared in cc-awk.el and hasn't yet been loaded.
:syntax-table nil
(require 'cc-awk) ; Added 2003/6/10.
(c-initialize-cc-mode t)
- (set-syntax-table awk-mode-syntax-table)
- (setq local-abbrev-table awk-mode-abbrev-table
- abbrev-mode t)
- (use-local-map awk-mode-map)
+ (setq abbrev-mode t)
(c-init-language-vars-for 'awk-mode)
(c-common-init 'awk-mode)
(c-awk-unstick-NL-prop)
-
- (c-run-mode-hooks 'c-mode-common-hook 'awk-mode-hook)
- (c-update-modeline))
+ (c-run-mode-hooks 'c-mode-common-hook))
;; bug reporting
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index b46b9b8270..7a6f4baaa7 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -247,7 +247,7 @@ See `c-offsets-alist'."
;;; User variables
(defcustom c-strict-syntax-p nil
- "*If non-nil, all syntactic symbols must be found in `c-offsets-alist'.
+ "If non-nil, all syntactic symbols must be found in `c-offsets-alist'.
If the syntactic symbol for a particular line does not match a symbol
in the offsets alist, or if no non-nil offset value can be determined
for a symbol, an error is generated, otherwise no error is reported
@@ -260,12 +260,12 @@ syntactic symbols in `c-offsets-alist'. Please keep it set to nil."
:group 'c)
(defcustom c-echo-syntactic-information-p nil
- "*If non-nil, syntactic info is echoed when the line is indented."
+ "If non-nil, syntactic info is echoed when the line is indented."
:type 'boolean
:group 'c)
(defcustom c-report-syntactic-errors nil
- "*If non-nil, certain syntactic errors are reported with a ding
+ "If non-nil, certain syntactic errors are reported with a ding
and a message, for example when an \"else\" is indented for which
there's no corresponding \"if\".
@@ -277,7 +277,7 @@ anchoring position to indent the line in that case."
:group 'c)
(defcustom-c-stylevar c-basic-offset 4
- "*Amount of basic offset used by + and - symbols in `c-offsets-alist'.
+ "Amount of basic offset used by + and - symbols in `c-offsets-alist'.
Also used as the indentation step when `c-syntactic-indentation' is
nil."
:type 'integer
@@ -286,7 +286,7 @@ nil."
(defcustom c-tab-always-indent t
- "*Controls the operation of the TAB key.
+ "Controls the operation of the TAB key.
If t, hitting TAB always just indents the current line. If nil, hitting
TAB indents the current line if point is at the left margin or in the
line's indentation, otherwise it inserts a `real' tab character \(see
@@ -308,7 +308,7 @@ by the `c-comment-only-line-offset' variable."
:group 'c)
(defcustom c-insert-tab-function 'insert-tab
- "*Function used when inserting a tab for \\[c-indent-command].
+ "Function used when inserting a tab for \\[c-indent-command].
Only used when `c-tab-always-indent' indicates a `real' tab character
should be inserted. Value must be a function taking no arguments.
The default, `insert-tab', inserts either a tab or the equivalent
@@ -317,7 +317,7 @@ number of spaces depending on the value of `indent-tabs-mode'."
:group 'c)
(defcustom c-syntactic-indentation t
- "*Whether the indentation should be controlled by the syntactic context.
+ "Whether the indentation should be controlled by the syntactic context.
If t, the indentation functions indent according to the syntactic
context, using the style settings specified by `c-offsets-alist'.
@@ -333,7 +333,7 @@ e.g. `c-special-indent-hook'."
(put 'c-syntactic-indentation 'safe-local-variable 'booleanp)
(defcustom c-syntactic-indentation-in-macros t
- "*Enable syntactic analysis inside macros.
+ "Enable syntactic analysis inside macros.
If this is nil, all lines inside macro definitions are analyzed as
`cpp-macro-cont'. Otherwise they are analyzed syntactically, just
like normal code, and `cpp-define-intro' is used to create the
@@ -352,7 +352,7 @@ better with the \"do { ... } while \(0)\" trick)."
(put 'c-syntactic-indentation-in-macros 'safe-local-variable 'booleanp)
(defcustom c-defun-tactic 'go-outward
- "*Whether functions are recognized inside, e.g., a class.
+ "Whether functions are recognized inside, e.g., a class.
This is used by `c-beginning-of-defun' and like functions.
Its value is one of:
@@ -367,7 +367,7 @@ Its value is one of:
:group 'c)
(defcustom-c-stylevar c-comment-only-line-offset 0
- "*Extra offset for line which contains only the start of a comment.
+ "Extra offset for line which contains only the start of a comment.
Can contain an integer or a cons cell of the form:
(NON-ANCHORED-OFFSET . ANCHORED-OFFSET)
@@ -391,7 +391,7 @@ default)."
'((anchored-comment . (column . 0))
(end-block . (space . 1))
(cpp-end-block . (space . 2)))
- "*Specifies how \\[indent-for-comment] calculates the comment start column.
+ "Specifies how \\[indent-for-comment] calculates the comment start column.
This is an association list that contains entries of the form:
(LINE-TYPE . INDENT-SPEC)
@@ -465,7 +465,7 @@ in that case, i.e. as if \\[c-indent-command] was used instead."
:group 'c)
(defcustom-c-stylevar c-indent-comments-syntactically-p nil
- "*Specifies how \\[indent-for-comment] should handle comment-only lines.
+ "Specifies how \\[indent-for-comment] should handle comment-only lines.
When this variable is non-nil, comment-only lines are indented
according to syntactic analysis via `c-offsets-alist'. Otherwise, the
comment is indented as if it was preceded by code. Note that this
@@ -488,7 +488,7 @@ comment-only lines."
(if (boundp 'c-comment-continuation-stars)
(symbol-value 'c-comment-continuation-stars)
"* ")
- "*Specifies the line prefix of continued C-style block comments.
+ "Specifies the line prefix of continued C-style block comments.
You should set this variable to the literal string that gets inserted
at the front of continued block style comment lines. This should
either be the empty string, or some characters without preceding
@@ -507,7 +507,7 @@ style comments."
'((pike-mode . "//+!?\\|\\**")
(awk-mode . "#+")
(other . "//+\\|\\**"))
- "*Regexp to match the line prefix inside comments.
+ "Regexp to match the line prefix inside comments.
This regexp is used to recognize the fill prefix inside comments for
correct paragraph filling and other things.
@@ -564,7 +564,7 @@ variable in a mode hook."
'((java-mode . javadoc)
(pike-mode . autodoc)
(c-mode . gtkdoc))
- "*Specifies documentation comment style(s) to recognize.
+ "Specifies documentation comment style(s) to recognize.
This is primarily used to fontify doc comments and the markup within
them, e.g. Javadoc comments.
@@ -634,7 +634,7 @@ afterwards to redo that work."
:group 'c)
(defcustom c-ignore-auto-fill '(string cpp code)
- "*List of contexts in which automatic filling never occurs.
+ "List of contexts in which automatic filling never occurs.
If Auto Fill mode is active, it will be temporarily disabled if point
is in any context on this list. It's e.g. useful to enable Auto Fill
in comments only, but not in strings or normal code. The valid
@@ -654,7 +654,7 @@ contexts are:
:group 'c)
(defcustom-c-stylevar c-cleanup-list '(scope-operator)
- "*List of various C/C++/ObjC constructs to \"clean up\".
+ "List of various C/C++/ObjC constructs to \"clean up\".
The following clean ups only take place when the auto-newline feature
is turned on, as evidenced by the `/la' appearing next to the mode
name:
@@ -751,7 +751,7 @@ involve auto-newline inserted newlines:
(inexpr-class-open after)
(inexpr-class-close before)
(arglist-cont-nonempty))
- "*Controls the insertion of newlines before and after braces
+ "Controls the insertion of newlines before and after braces
when the auto-newline feature is active. This variable contains an
association list with elements of the following form:
\(SYNTACTIC-SYMBOL . ACTION).
@@ -815,7 +815,7 @@ Zero or nil means no limit."
:group 'c)
(defcustom-c-stylevar c-hanging-colons-alist nil
- "*Controls the insertion of newlines before and after certain colons.
+ "Controls the insertion of newlines before and after certain colons.
This variable contains an association list with elements of the
following form: (SYNTACTIC-SYMBOL . ACTION).
@@ -838,7 +838,7 @@ currently not supported for this variable."
(defcustom-c-stylevar c-hanging-semi&comma-criteria
'(c-semi&comma-inside-parenlist)
- "*List of functions that decide whether to insert a newline or not.
+ "List of functions that decide whether to insert a newline or not.
The functions in this list are called, in order, whenever the
auto-newline minor mode is activated (as evidenced by a `/a' or `/ah'
string in the mode line), and a semicolon or comma is typed (see
@@ -855,7 +855,7 @@ then no newline is inserted."
:group 'c)
(defcustom-c-stylevar c-backslash-column 48
- "*Minimum alignment column for line continuation backslashes.
+ "Minimum alignment column for line continuation backslashes.
This is used by the functions that automatically insert or align the
line continuation backslashes in multiline macros. If any line in the
macro exceeds this column then the next tab stop from that line is
@@ -865,7 +865,7 @@ used as alignment column instead. See also `c-backslash-max-column'."
;;;###autoload(put 'c-backslash-column 'safe-local-variable 'integerp)
(defcustom-c-stylevar c-backslash-max-column 72
- "*Maximum alignment column for line continuation backslashes.
+ "Maximum alignment column for line continuation backslashes.
This is used by the functions that automatically insert or align the
line continuation backslashes in multiline macros. If any line in the
macro exceeds this column then the backslashes for the other lines
@@ -874,7 +874,7 @@ will be aligned at this column."
:group 'c)
(defcustom c-auto-align-backslashes t
- "*Align automatically inserted line continuation backslashes.
+ "Align automatically inserted line continuation backslashes.
When line continuation backslashes are inserted automatically for line
breaks in multiline macros, e.g. by \\[c-context-line-break], they are
aligned with the other backslashes in the same macro if this flag is
@@ -884,12 +884,12 @@ space."
:group 'c)
(defcustom c-backspace-function 'backward-delete-char-untabify
- "*Function called by `c-electric-backspace' when deleting backwards."
+ "Function called by `c-electric-backspace' when deleting backwards."
:type 'function
:group 'c)
(defcustom c-delete-function 'delete-char
- "*Function called by `c-electric-delete-forward' when deleting forwards."
+ "Function called by `c-electric-delete-forward' when deleting forwards."
:type 'function
:group 'c)
@@ -901,7 +901,7 @@ space."
'((c-mode . t)
(c++-mode . t)
(objc-mode . t))
- "*Controls whether a final newline is ensured when the file is saved.
+ "Controls whether a final newline is ensured when the file is saved.
The value is an association list that for each language mode specifies
the value to give to `require-final-newline' at mode initialization;
see that variable for details about the value. If a language isn't
@@ -931,20 +931,20 @@ present on the association list, CC Mode won't touch
:group 'c)
(defcustom c-electric-pound-behavior nil
- "*List of behaviors for electric pound insertion.
+ "List of behaviors for electric pound insertion.
Only currently supported behavior is `alignleft'."
:type '(set (const alignleft))
:group 'c)
(defcustom c-special-indent-hook nil
- "*Hook for user defined special indentation adjustments.
+ "Hook for user defined special indentation adjustments.
This hook gets called after each line is indented by the mode. It is only
called when `c-syntactic-indentation' is non-nil."
:type 'hook
:group 'c)
(defcustom-c-stylevar c-label-minimum-indentation 1
- "*Minimum indentation for lines inside code blocks.
+ "Minimum indentation for lines inside code blocks.
This variable typically only affects code using the `gnu' style, which
mandates a minimum of one space in front of every line inside code
blocks. Specifically, the function `c-gnu-impose-minimum' on your
@@ -953,7 +953,7 @@ blocks. Specifically, the function `c-gnu-impose-minimum' on your
:group 'c)
(defcustom c-progress-interval 5
- "*Interval used to update progress status during long re-indentation.
+ "Interval used to update progress status during long re-indentation.
If a number, percentage complete gets updated after each interval of
that many seconds. To inhibit all messages during indentation, set
this variable to nil."
@@ -961,7 +961,7 @@ this variable to nil."
:group 'c)
(defcustom c-objc-method-arg-min-delta-to-bracket 2
- "*Minimum number of chars to the opening bracket.
+ "Minimum number of chars to the opening bracket.
Consider this ObjC snippet:
@@ -981,7 +981,7 @@ This behavior can be overridden by customizing the indentation of
:group 'c)
(defcustom c-objc-method-arg-unfinished-offset 4
- "*Offset relative to bracket if first selector is on a new line.
+ "Offset relative to bracket if first selector is on a new line.
[aaaaaaaaa
|<-x->|bbbbbbb: cccccc
@@ -990,7 +990,7 @@ This behavior can be overridden by customizing the indentation of
:group 'c)
(defcustom c-objc-method-parameter-offset 4
- "*Offset for selector parameter on a new line (relative to first selector.
+ "Offset for selector parameter on a new line (relative to first selector.
[aaaaaaa bbbbbbbbbb:
|<-x->|cccccccc
@@ -1001,7 +1001,7 @@ This behavior can be overridden by customizing the indentation of
(defcustom c-default-style '((java-mode . "java") (awk-mode . "awk")
(other . "gnu"))
- "*Style which gets installed by default when a file is visited.
+ "Style which gets installed by default when a file is visited.
The value of this variable can be any style defined in
`c-style-alist', including styles you add. The value can also be an
@@ -1411,7 +1411,7 @@ Here is the current list of valid syntactic element symbols:
do-while-closure else-clause catch-clause inlambda annotation-var-cont))
(defcustom c-style-variables-are-local-p t
- "*Whether style variables should be buffer local by default.
+ "Whether style variables should be buffer local by default.
If non-nil, then all indentation style related variables will be made
buffer local by default. If nil, they will remain global. Variables
are made buffer local when this file is loaded, and once buffer
@@ -1442,54 +1442,54 @@ The list of variables to buffer localize are:
:group 'c)
(defcustom c-mode-hook nil
- "*Hook called by `c-mode'."
+ "Hook called by `c-mode'."
:type 'hook
:group 'c)
(defcustom c++-mode-hook nil
- "*Hook called by `c++-mode'."
+ "Hook called by `c++-mode'."
:type 'hook
:group 'c)
(defcustom objc-mode-hook nil
- "*Hook called by `objc-mode'."
+ "Hook called by `objc-mode'."
:type 'hook
:group 'c)
(defcustom java-mode-hook nil
- "*Hook called by `java-mode'."
+ "Hook called by `java-mode'."
:type 'hook
:group 'c)
(defcustom idl-mode-hook nil
- "*Hook called by `idl-mode'."
+ "Hook called by `idl-mode'."
:type 'hook
:group 'c)
(defcustom pike-mode-hook nil
- "*Hook called by `pike-mode'."
+ "Hook called by `pike-mode'."
:type 'hook
:group 'c)
(defcustom awk-mode-hook nil
- "*Hook called by `awk-mode'."
+ "Hook called by `awk-mode'."
:type 'hook
:group 'c)
(defcustom c-mode-common-hook nil
- "*Hook called by all CC Mode modes for common initializations."
+ "Hook called by all CC Mode modes for common initializations."
:type 'hook
:group 'c)
(defcustom c-initialization-hook nil
- "*Hook called when the CC Mode package gets initialized.
+ "Hook called when the CC Mode package gets initialized.
This hook is only run once per Emacs session and can be used as a
`load-hook' or in place of using `eval-after-load'."
:type 'hook
:group 'c)
(defcustom c-enable-xemacs-performance-kludge-p nil
- "*Enables a XEmacs only hack that may improve speed for some coding styles.
+ "Enables a XEmacs only hack that may improve speed for some coding styles.
For styles that hang top-level opening braces (as is common with JDK
Java coding styles) this can improve performance between 3 and 60
times for core indentation functions (e.g. `c-parse-state'). For
@@ -1499,8 +1499,8 @@ This variable only has effect in XEmacs."
:type 'boolean
:group 'c)
-(defvar c-old-style-variable-behavior nil
- "*Enables the old style variable behavior when non-nil.
+(defcustom c-old-style-variable-behavior nil
+ "Enables the old style variable behavior when non-nil.
Normally the values of the style variables will override the style
settings specified by the variables `c-default-style' and
@@ -1513,7 +1513,9 @@ It's believed that despite this change, the new behavior will still
produce the same results for most old CC Mode configurations, since
all style variables are per default set in a special non-override
state. Set this variable only if your configuration has stopped
-working due to this change.")
+working due to this change."
+ :type 'boolean
+ :group 'c)
(define-widget 'c-extra-types-widget 'radio
"Internal CC Mode widget for the `*-font-lock-extra-types' variables."
@@ -1632,12 +1634,53 @@ names)."))
:type 'c-extra-types-widget
:group 'c)
-
-;; Non-customizable variables, still part of the interface to CC Mode
-;; The following two are preparations for Emacs 25.2 (2016-05-09):
+(defvar c-noise-macro-with-parens-name-re "\\<\\>")
+(defvar c-noise-macro-name-re "\\<\\>")
+
+(defcustom c-noise-macro-names nil
+ "A list of names of macros which expand to nothing, or compiler extensions
+like \"????\" which are syntactic noise. Such a macro/extension is complete in
+itself, never having parentheses. All these names must be syntactically valid
+identifiers.
+
+If you change this variable's value, call the function
+`c-make-noise-macro-regexps' to set the necessary internal variables (or do
+this implicitly by reinitializing C/C++/Objc Mode on any buffer)."
+ :type '(repeat :tag "List of names" string)
+ :group 'c)
(put 'c-noise-macro-names 'safe-local-variable #'c-string-list-p)
+
+(defcustom c-noise-macro-with-parens-names nil
+ "A list of names of macros \(or compiler extensions like \"__attribute__\")
+which optionally have arguments in parentheses, and which expand to nothing.
+These are recognized by CC Mode only in declarations."
+ :type '(regexp :tag "List of names (possibly empty)" string)
+ :group 'c)
(put 'c-noise-macro-with-parens-names 'safe-local-variable #'c-string-list-p)
+(defun c-make-noise-macro-regexps ()
+ ;; Convert `c-noise-macro-names' and `c-noise-macro-with-parens-names' into
+ ;; `c-noise-macro-name-re' and `c-noise-macro-with-parens-name-re'.
+ (setq c-noise-macro-with-parens-name-re
+ (cond ((null c-noise-macro-with-parens-names) "\\<\\>")
+ ((consp c-noise-macro-with-parens-names)
+ (concat (regexp-opt c-noise-macro-with-parens-names t)
+ "\\([^[:alnum:]_$]\\|$\\)"))
+ ((stringp c-noise-macro-with-parens-names)
+ (copy-sequence c-noise-macro-with-parens-names))
+ (t (error "c-make-noise-macro-regexps: \
+c-noise-macro-with-parens-names is invalid: %s" c-noise-macro-with-parens-names))))
+ (setq c-noise-macro-name-re
+ (cond ((null c-noise-macro-names) "\\<\\>")
+ ((consp c-noise-macro-names)
+ (concat (regexp-opt c-noise-macro-names t)
+ "\\([^[:alnum:]_$]\\|$\\)"))
+ ((stringp c-noise-macro-names)
+ (copy-sequence c-noise-macro-names))
+ (t (error "c-make-noise-macro-regexps: \
+c-noise-macro-names is invalid: %s" c-noise-macro-names)))))
+
+;; Non-customizable variables, still part of the interface to CC Mode
(defvar c-macro-with-semi-re nil
;; Regular expression which matches a (#define'd) symbol whose expansion
;; ends with a semicolon.
@@ -1659,10 +1702,7 @@ the regular expression must match only valid identifiers.
If you change this variable's value, call the function
`c-make-macros-with-semi-re' to set the necessary internal
-variables.
-
-Note that currently \(2008-11-04) this variable is a prototype,
-and is likely to disappear or change its form soon.")
+variables.")
(make-variable-buffer-local 'c-macro-names-with-semicolon)
(put 'c-macro-names-with-semicolon 'safe-local-variable
#'c-string-or-string-list-p)
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index f060b571b7..f2e397a413 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -161,6 +161,13 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
\\(?: characters? \\([0-9]+\\)-?\\([0-9]+\\)?:\\)?\\([ \n]Warning\\(?: [0-9]+\\)?:\\)?\\)"
2 (3 . 4) (5 . 6) (7))
+ (cmake
+ "^CMake \\(?:Error\\|\\(Warning\\)\\) at \\(.*\\):\\([1-9][0-9]*\\) ([^)]+):$"
+ 2 3 nil (1))
+ (cmake-info
+ "^ \\(?: \\*\\)?\\(.*\\):\\([1-9][0-9]*\\) ([^)]+)$"
+ 1 2 nil 0)
+
(comma
"^\"\\([^,\" \n\t]+\\)\", line \\([0-9]+\\)\
\\(?:[(. pos]+\\([0-9]+\\))?\\)?[:.,; (-]\\( warning:\\|[-0-9 ]*(W)\\)?" 1 2 3 (4))
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 83eded136e..9658b8b928 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -202,7 +202,7 @@
(defcustom cperl-extra-newline-before-brace nil
- "*Non-nil means that if, elsif, while, until, else, for, foreach
+ "Non-nil means that if, elsif, while, until, else, for, foreach
and do constructs look like:
if ()
@@ -218,13 +218,13 @@ instead of:
(defcustom cperl-extra-newline-before-brace-multiline
cperl-extra-newline-before-brace
- "*Non-nil means the same as `cperl-extra-newline-before-brace', but
+ "Non-nil means the same as `cperl-extra-newline-before-brace', but
for constructs with multiline if/unless/while/until/for/foreach condition."
:type 'boolean
:group 'cperl-autoinsert-details)
(defcustom cperl-indent-level 2
- "*Indentation of CPerl statements with respect to containing block."
+ "Indentation of CPerl statements with respect to containing block."
:type 'integer
:group 'cperl-indentation-details)
@@ -242,52 +242,52 @@ for constructs with multiline if/unless/while/until/for/foreach condition."
;;;###autoload(put 'cperl-merge-trailing-else 'safe-local-variable 'booleanp)
(defcustom cperl-lineup-step nil
- "*`cperl-lineup' will always lineup at multiple of this number.
+ "`cperl-lineup' will always lineup at multiple of this number.
If nil, the value of `cperl-indent-level' will be used."
:type '(choice (const nil) integer)
:group 'cperl-indentation-details)
(defcustom cperl-brace-imaginary-offset 0
- "*Imagined indentation of a Perl open brace that actually follows a statement.
+ "Imagined indentation of a Perl open brace that actually follows a statement.
An open brace following other text is treated as if it were this far
to the right of the start of its line."
:type 'integer
:group 'cperl-indentation-details)
(defcustom cperl-brace-offset 0
- "*Extra indentation for braces, compared with other text in same context."
+ "Extra indentation for braces, compared with other text in same context."
:type 'integer
:group 'cperl-indentation-details)
(defcustom cperl-label-offset -2
- "*Offset of CPerl label lines relative to usual indentation."
+ "Offset of CPerl label lines relative to usual indentation."
:type 'integer
:group 'cperl-indentation-details)
(defcustom cperl-min-label-indent 1
- "*Minimal offset of CPerl label lines."
+ "Minimal offset of CPerl label lines."
:type 'integer
:group 'cperl-indentation-details)
(defcustom cperl-continued-statement-offset 2
- "*Extra indent for lines not starting new statements."
+ "Extra indent for lines not starting new statements."
:type 'integer
:group 'cperl-indentation-details)
(defcustom cperl-continued-brace-offset 0
- "*Extra indent for substatements that start with open-braces.
+ "Extra indent for substatements that start with open-braces.
This is in addition to cperl-continued-statement-offset."
:type 'integer
:group 'cperl-indentation-details)
(defcustom cperl-close-paren-offset -1
- "*Extra indent for substatements that start with close-parenthesis."
+ "Extra indent for substatements that start with close-parenthesis."
:type 'integer
:group 'cperl-indentation-details)
(defcustom cperl-indent-wrt-brace t
- "*Non-nil means indent statements in if/etc block relative brace, not if/etc.
+ "Non-nil means indent statements in if/etc block relative brace, not if/etc.
Versions 5.2 ... 5.20 behaved as if this were nil."
:type 'boolean
:group 'cperl-indentation-details)
(defcustom cperl-auto-newline nil
- "*Non-nil means automatically newline before and after braces,
+ "Non-nil means automatically newline before and after braces,
and after colons and semicolons, inserted in CPerl code. The following
\\[cperl-electric-backspace] will remove the inserted whitespace.
Insertion after colons requires both this variable and
@@ -296,43 +296,43 @@ Insertion after colons requires both this variable and
:group 'cperl-autoinsert-details)
(defcustom cperl-autoindent-on-semi nil
- "*Non-nil means automatically indent after insertion of (semi)colon.
+ "Non-nil means automatically indent after insertion of (semi)colon.
Active if `cperl-auto-newline' is false."
:type 'boolean
:group 'cperl-autoinsert-details)
(defcustom cperl-auto-newline-after-colon nil
- "*Non-nil means automatically newline even after colons.
+ "Non-nil means automatically newline even after colons.
Subject to `cperl-auto-newline' setting."
:type 'boolean
:group 'cperl-autoinsert-details)
(defcustom cperl-tab-always-indent t
- "*Non-nil means TAB in CPerl mode should always reindent the current line,
+ "Non-nil means TAB in CPerl mode should always reindent the current line,
regardless of where in the line point is when the TAB command is used."
:type 'boolean
:group 'cperl-indentation-details)
(defcustom cperl-font-lock nil
- "*Non-nil (and non-null) means CPerl buffers will use `font-lock-mode'.
+ "Non-nil (and non-null) means CPerl buffers will use `font-lock-mode'.
Can be overwritten by `cperl-hairy' if nil."
:type '(choice (const null) boolean)
:group 'cperl-affected-by-hairy)
(defcustom cperl-electric-lbrace-space nil
- "*Non-nil (and non-null) means { after $ should be preceded by ` '.
+ "Non-nil (and non-null) means { after $ should be preceded by ` '.
Can be overwritten by `cperl-hairy' if nil."
:type '(choice (const null) boolean)
:group 'cperl-affected-by-hairy)
(defcustom cperl-electric-parens-string "({[]})<"
- "*String of parentheses that should be electric in CPerl.
+ "String of parentheses that should be electric in CPerl.
Closing ones are electric only if the region is highlighted."
:type 'string
:group 'cperl-affected-by-hairy)
(defcustom cperl-electric-parens nil
- "*Non-nil (and non-null) means parentheses should be electric in CPerl.
+ "Non-nil (and non-null) means parentheses should be electric in CPerl.
Can be overwritten by `cperl-hairy' if nil."
:type '(choice (const null) boolean)
:group 'cperl-affected-by-hairy)
@@ -345,20 +345,20 @@ Can be overwritten by `cperl-hairy' if nil."
transient-mark-mode)
(and (boundp 'zmacs-regions) ; For XEmacs
zmacs-regions)))
- "*Not-nil means that electric parens look for active mark.
+ "Not-nil means that electric parens look for active mark.
Default is yes if there is visual feedback on mark."
:type 'boolean
:group 'cperl-autoinsert-details)
(defcustom cperl-electric-linefeed nil
- "*If true, LFD should be hairy in CPerl, otherwise C-c LFD is hairy.
+ "If true, LFD should be hairy in CPerl, otherwise C-c LFD is hairy.
In any case these two mean plain and hairy linefeeds together.
Can be overwritten by `cperl-hairy' if nil."
:type '(choice (const null) boolean)
:group 'cperl-affected-by-hairy)
(defcustom cperl-electric-keywords nil
- "*Not-nil (and non-null) means keywords are electric in CPerl.
+ "Not-nil (and non-null) means keywords are electric in CPerl.
Can be overwritten by `cperl-hairy' if nil.
Uses `abbrev-mode' to do the expansion. If you want to use your
@@ -372,12 +372,12 @@ that begin with \"cperl-electric\".
:group 'cperl-affected-by-hairy)
(defcustom cperl-electric-backspace-untabify t
- "*Not-nil means electric-backspace will untabify in CPerl."
+ "Not-nil means electric-backspace will untabify in CPerl."
:type 'boolean
:group 'cperl-autoinsert-details)
(defcustom cperl-hairy nil
- "*Not-nil means most of the bells and whistles are enabled in CPerl.
+ "Not-nil means most of the bells and whistles are enabled in CPerl.
Affects: `cperl-font-lock', `cperl-electric-lbrace-space',
`cperl-electric-parens', `cperl-electric-linefeed', `cperl-electric-keywords',
`cperl-info-on-command-no-prompt', `cperl-clobber-lisp-bindings',
@@ -386,22 +386,22 @@ Affects: `cperl-font-lock', `cperl-electric-lbrace-space',
:group 'cperl-affected-by-hairy)
(defcustom cperl-comment-column 32
- "*Column to put comments in CPerl (use \\[cperl-indent] to lineup with code)."
+ "Column to put comments in CPerl (use \\[cperl-indent] to lineup with code)."
:type 'integer
:group 'cperl-indentation-details)
(defcustom cperl-indent-comment-at-column-0 nil
- "*Non-nil means that comment started at column 0 should be indentable."
+ "Non-nil means that comment started at column 0 should be indentable."
:type 'boolean
:group 'cperl-indentation-details)
(defcustom cperl-vc-sccs-header '("($sccs) = ('%W\ %' =~ /(\\d+(\\.\\d+)+)/) ;")
- "*Special version of `vc-sccs-header' that is used in CPerl mode buffers."
+ "Special version of `vc-sccs-header' that is used in CPerl mode buffers."
:type '(repeat string)
:group 'cperl)
(defcustom cperl-vc-rcs-header '("($rcs) = (' $Id\ $ ' =~ /(\\d+(\\.\\d+)+)/);")
- "*Special version of `vc-rcs-header' that is used in CPerl mode buffers."
+ "Special version of `vc-rcs-header' that is used in CPerl mode buffers."
:type '(repeat string)
:group 'cperl)
@@ -418,43 +418,43 @@ Affects: `cperl-font-lock', `cperl-electric-lbrace-space',
;; (boundp 'interpreter-mode-alist)
;; (assoc "miniperl" interpreter-mode-alist)
;; (assoc "\\.\\([pP][Llm]\\|al\\)$" auto-mode-alist)))
-;; "*Whether to install us into `interpreter-' and `extension' mode lists."
+;; "Whether to install us into `interpreter-' and `extension' mode lists."
;; :type 'boolean
;; :group 'cperl)
(defcustom cperl-info-on-command-no-prompt nil
- "*Not-nil (and non-null) means not to prompt on C-h f.
+ "Not-nil (and non-null) means not to prompt on C-h f.
The opposite behavior is always available if prefixed with C-c.
Can be overwritten by `cperl-hairy' if nil."
:type '(choice (const null) boolean)
:group 'cperl-affected-by-hairy)
(defcustom cperl-clobber-lisp-bindings nil
- "*Not-nil (and non-null) means not overwrite C-h f.
+ "Not-nil (and non-null) means not overwrite C-h f.
The function is available on \\[cperl-info-on-command], \\[cperl-get-help].
Can be overwritten by `cperl-hairy' if nil."
:type '(choice (const null) boolean)
:group 'cperl-affected-by-hairy)
(defcustom cperl-lazy-help-time nil
- "*Not-nil (and non-null) means to show lazy help after given idle time.
+ "Not-nil (and non-null) means to show lazy help after given idle time.
Can be overwritten by `cperl-hairy' to be 5 sec if nil."
:type '(choice (const null) (const nil) integer)
:group 'cperl-affected-by-hairy)
(defcustom cperl-pod-face 'font-lock-comment-face
- "*Face for POD highlighting."
+ "Face for POD highlighting."
:type 'face
:group 'cperl-faces)
(defcustom cperl-pod-head-face 'font-lock-variable-name-face
- "*Face for POD highlighting.
+ "Face for POD highlighting.
Font for POD headers."
:type 'face
:group 'cperl-faces)
(defcustom cperl-here-face 'font-lock-string-face
- "*Face for here-docs highlighting."
+ "Face for here-docs highlighting."
:type 'face
:group 'cperl-faces)
@@ -462,23 +462,23 @@ Font for POD headers."
(defvar cperl-singly-quote-face (featurep 'xemacs))
(defcustom cperl-invalid-face 'underline
- "*Face for highlighting trailing whitespace."
+ "Face for highlighting trailing whitespace."
:type 'face
:version "21.1"
:group 'cperl-faces)
(defcustom cperl-pod-here-fontify '(featurep 'font-lock)
- "*Not-nil after evaluation means to highlight POD and here-docs sections."
+ "Not-nil after evaluation means to highlight POD and here-docs sections."
:type 'boolean
:group 'cperl-faces)
(defcustom cperl-fontify-m-as-s t
- "*Not-nil means highlight 1arg regular expressions operators same as 2arg."
+ "Not-nil means highlight 1arg regular expressions operators same as 2arg."
:type 'boolean
:group 'cperl-faces)
(defcustom cperl-highlight-variables-indiscriminately nil
- "*Non-nil means perform additional highlighting on variables.
+ "Non-nil means perform additional highlighting on variables.
Currently only changes how scalar variables are highlighted.
Note that that variable is only read at initialization time for
the variable `cperl-font-lock-keywords-2', so changing it after you've
@@ -487,125 +487,125 @@ entered CPerl mode the first time will have no effect."
:group 'cperl)
(defcustom cperl-pod-here-scan t
- "*Not-nil means look for POD and here-docs sections during startup.
+ "Not-nil means look for POD and here-docs sections during startup.
You can always make lookup from menu or using \\[cperl-find-pods-heres]."
:type 'boolean
:group 'cperl-speed)
(defcustom cperl-regexp-scan t
- "*Not-nil means make marking of regular expression more thorough.
+ "Not-nil means make marking of regular expression more thorough.
Effective only with `cperl-pod-here-scan'."
:type 'boolean
:group 'cperl-speed)
(defcustom cperl-hook-after-change t
- "*Not-nil means install hook to know which regions of buffer are changed.
+ "Not-nil means install hook to know which regions of buffer are changed.
May significantly speed up delayed fontification. Changes take effect
after reload."
:type 'boolean
:group 'cperl-speed)
(defcustom cperl-imenu-addback nil
- "*Not-nil means add backreferences to generated `imenu's.
+ "Not-nil means add backreferences to generated `imenu's.
May require patched `imenu' and `imenu-go'. Obsolete."
:type 'boolean
:group 'cperl-help-system)
(defcustom cperl-max-help-size 66
- "*Non-nil means shrink-wrapping of info-buffer allowed up to these percents."
+ "Non-nil means shrink-wrapping of info-buffer allowed up to these percents."
:type '(choice integer (const nil))
:group 'cperl-help-system)
(defcustom cperl-shrink-wrap-info-frame t
- "*Non-nil means shrink-wrapping of info-buffer-frame allowed."
+ "Non-nil means shrink-wrapping of info-buffer-frame allowed."
:type 'boolean
:group 'cperl-help-system)
(defcustom cperl-info-page "perl"
- "*Name of the info page containing perl docs.
+ "Name of the info page containing perl docs.
Older version of this page was called `perl5', newer `perl'."
:type 'string
:group 'cperl-help-system)
(defcustom cperl-use-syntax-table-text-property
(boundp 'parse-sexp-lookup-properties)
- "*Non-nil means CPerl sets up and uses `syntax-table' text property."
+ "Non-nil means CPerl sets up and uses `syntax-table' text property."
:type 'boolean
:group 'cperl-speed)
(defcustom cperl-use-syntax-table-text-property-for-tags
cperl-use-syntax-table-text-property
- "*Non-nil means: set up and use `syntax-table' text property generating TAGS."
+ "Non-nil means: set up and use `syntax-table' text property generating TAGS."
:type 'boolean
:group 'cperl-speed)
(defcustom cperl-scan-files-regexp "\\.\\([pP][Llm]\\|xs\\)$"
- "*Regexp to match files to scan when generating TAGS."
+ "Regexp to match files to scan when generating TAGS."
:type 'regexp
:group 'cperl)
(defcustom cperl-noscan-files-regexp
"/\\(\\.\\.?\\|SCCS\\|RCS\\|CVS\\|blib\\)$"
- "*Regexp to match files/dirs to skip when generating TAGS."
+ "Regexp to match files/dirs to skip when generating TAGS."
:type 'regexp
:group 'cperl)
(defcustom cperl-regexp-indent-step nil
- "*Indentation used when beautifying regexps.
+ "Indentation used when beautifying regexps.
If nil, the value of `cperl-indent-level' will be used."
:type '(choice integer (const nil))
:group 'cperl-indentation-details)
(defcustom cperl-indent-left-aligned-comments t
- "*Non-nil means that the comment starting in leftmost column should indent."
+ "Non-nil means that the comment starting in leftmost column should indent."
:type 'boolean
:group 'cperl-indentation-details)
(defcustom cperl-under-as-char nil
- "*Non-nil means that the _ (underline) should be treated as word char."
+ "Non-nil means that the _ (underline) should be treated as word char."
:type 'boolean
:group 'cperl)
(make-obsolete-variable 'cperl-under-as-char 'superword-mode "24.4")
(defcustom cperl-extra-perl-args ""
- "*Extra arguments to use when starting Perl.
+ "Extra arguments to use when starting Perl.
Currently used with `cperl-check-syntax' only."
:type 'string
:group 'cperl)
(defcustom cperl-message-electric-keyword t
- "*Non-nil means that the `cperl-electric-keyword' prints a help message."
+ "Non-nil means that the `cperl-electric-keyword' prints a help message."
:type 'boolean
:group 'cperl-help-system)
(defcustom cperl-indent-region-fix-constructs 1
- "*Amount of space to insert between `}' and `else' or `elsif'
+ "Amount of space to insert between `}' and `else' or `elsif'
in `cperl-indent-region'. Set to nil to leave as is. Values other
than 1 and nil will probably not work."
:type '(choice (const nil) (const 1))
:group 'cperl-indentation-details)
(defcustom cperl-break-one-line-blocks-when-indent t
- "*Non-nil means that one-line if/unless/while/until/for/foreach BLOCKs
+ "Non-nil means that one-line if/unless/while/until/for/foreach BLOCKs
need to be reformatted into multiline ones when indenting a region."
:type 'boolean
:group 'cperl-indentation-details)
(defcustom cperl-fix-hanging-brace-when-indent t
- "*Non-nil means that BLOCK-end `}' may be put on a separate line
+ "Non-nil means that BLOCK-end `}' may be put on a separate line
when indenting a region.
Braces followed by else/elsif/while/until are excepted."
:type 'boolean
:group 'cperl-indentation-details)
(defcustom cperl-merge-trailing-else t
- "*Non-nil means that BLOCK-end `}' followed by else/elsif/continue
+ "Non-nil means that BLOCK-end `}' followed by else/elsif/continue
may be merged to be on the same line when indenting a region."
:type 'boolean
:group 'cperl-indentation-details)
(defcustom cperl-indent-parens-as-block nil
- "*Non-nil means that non-block ()-, {}- and []-groups are indented as blocks,
+ "Non-nil means that non-block ()-, {}- and []-groups are indented as blocks,
but for trailing \",\" inside the group, which won't increase indentation.
One should tune up `cperl-close-paren-offset' as well."
:type 'boolean
@@ -614,20 +614,20 @@ One should tune up `cperl-close-paren-offset' as well."
(defcustom cperl-syntaxify-by-font-lock
(and cperl-can-font-lock
(boundp 'parse-sexp-lookup-properties))
- "*Non-nil means that CPerl uses the `font-lock' routines for syntaxification."
+ "Non-nil means that CPerl uses the `font-lock' routines for syntaxification."
:type '(choice (const message) boolean)
:group 'cperl-speed)
(defcustom cperl-syntaxify-unwind
t
- "*Non-nil means that CPerl unwinds to a start of a long construction
+ "Non-nil means that CPerl unwinds to a start of a long construction
when syntaxifying a chunk of buffer."
:type 'boolean
:group 'cperl-speed)
(defcustom cperl-syntaxify-for-menu
t
- "*Non-nil means that CPerl syntaxifies up to the point before showing menu.
+ "Non-nil means that CPerl syntaxifies up to the point before showing menu.
This way enabling/disabling of menu items is more correct."
:type 'boolean
:group 'cperl-speed)
@@ -8578,7 +8578,7 @@ the appropriate statement modifier."
(cperl-perldoc (cperl-word-at-point)))
(defcustom pod2man-program "pod2man"
- "*File name for `pod2man'."
+ "File name for `pod2man'."
:type 'file
:group 'cperl)
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index d02951dcf6..d6f2679513 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -245,11 +245,8 @@ Blank lines separate paragraphs. Semicolons start comments.
;; Font-locking support.
(defun elisp--font-lock-flush-elisp-buffers (&optional file)
- ;; FIXME: Aren't we only ever called from after-load-functions?
- ;; Don't flush during load unless called from after-load-functions.
- ;; In that case, FILE is non-nil. It's somehow strange that
- ;; load-in-progress is t when an after-load-function is called since
- ;; that should run *after* the load...
+ ;; We're only ever called from after-load-functions, load-in-progress can
+ ;; still be t in case of nested loads.
(when (or (not load-in-progress) file)
;; FIXME: If the loaded file did not define any macros, there shouldn't
;; be any need to font-lock-flush all the Elisp buffers.
@@ -721,7 +718,10 @@ non-nil result supercedes the xrefs produced by
(let* ((info (cl--generic-method-info method));; qual-string combined-args doconly
(specializers (cl--generic-method-specializers method))
(non-default nil)
- (met-name (cons symbol specializers))
+ (met-name (cl--generic-load-hist-format
+ symbol
+ (cl--generic-method-qualifiers method)
+ specializers))
(file (find-lisp-object-file-name met-name 'cl-defmethod)))
(dolist (item specializers)
;; default method has all 't' in specializers
@@ -1061,6 +1061,17 @@ If CHAR is not a character, return nil."
((or (eq (following-char) ?\')
(eq (preceding-char) ?\'))
(setq left-quote ?\`)))
+
+ ;; When after a named character literal, skip over the entire
+ ;; literal, not only its last word.
+ (when (= (preceding-char) ?})
+ (let ((begin (save-excursion
+ (backward-char)
+ (skip-syntax-backward "w-")
+ (backward-char 3)
+ (when (looking-at-p "\\\\N{") (point)))))
+ (when begin (goto-char begin))))
+
(forward-sexp -1)
;; If we were after `?\e' (or similar case),
;; use the whole thing, not just the `e'.
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index d243650d73..8047e208ea 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -2492,7 +2492,9 @@ current thread and update GDB buffers."
;; Reason is available with target-async only
(let* ((result (gdb-json-string output-field))
(reason (bindat-get-field result 'reason))
- (thread-id (bindat-get-field result 'thread-id)))
+ (thread-id (bindat-get-field result 'thread-id))
+ (retval (bindat-get-field result 'return-value))
+ (varnum (bindat-get-field result 'gdb-result-var)))
;; -data-list-register-names needs to be issued for any stopped
;; thread
@@ -2518,6 +2520,15 @@ current thread and update GDB buffers."
(if (string-equal reason "exited-normally")
(setq gdb-active-process nil))
+ (when (and retval varnum
+ ;; When the user typed CLI commands, GDB/MI helpfully
+ ;; includes the "Value returned" response in the "~"
+ ;; record; here we avoid displaying it twice.
+ (not (string-match "^Value returned is " gdb-filter-output)))
+ (setq gdb-filter-output
+ (concat gdb-filter-output
+ (format "Value returned is %s = %s\n" varnum retval))))
+
;; Select new current thread.
;; Don't switch if we have no reasons selected
@@ -2650,8 +2661,15 @@ responses.
If FIX-LIST is non-nil, \"FIX-LIST={..}\" is replaced with
\"FIX-LIST=[..]\" prior to parsing. This is used to fix broken
-break-info output when it contains breakpoint script field
-incompatible with GDB/MI output syntax."
+incompatible with GDB/MI output syntax.
+
+If `default-directory' is remote, full file names are adapted accordingly."
(save-excursion
+ (let ((remote (file-remote-p default-directory)))
+ (when remote
+ (goto-char (point-min))
+ (while (re-search-forward "[\\[,]fullname=\"\\(.+\\)\"" nil t)
+ (replace-match (concat remote "\\1") nil nil nil 1))))
(goto-char (point-min))
(when fix-key
(save-excursion
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index f04a7226d1..f7f097b6be 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -227,6 +227,22 @@ to determine whether cdr should not be excluded."
(const :tag "No ignored files" nil))
:group 'grep)
+(defcustom grep-save-buffers 'ask
+ "If non-nil, save buffers before running the grep commands.
+If `ask', ask before saving. If a function, call it with no arguments
+with each buffer current, as a predicate to determine whether that
+buffer should be saved or not. E.g., one can set this to
+ (lambda ()
+ (string-prefix-p my-grep-root (file-truename (buffer-file-name))))
+to limit saving to files located under `my-grep-root'."
+ :version "25.2"
+ :type '(choice
+ (const :tag "Ask before saving" ask)
+ (const :tag "Don't save buffers" nil)
+ function
+ (other :tag "Save all buffers" t))
+ :group 'grep)
+
(defcustom grep-error-screen-columns nil
"If non-nil, column numbers in grep hits are screen columns.
See `compilation-error-screen-columns'"
@@ -527,7 +543,9 @@ This function is called from `compilation-filter-hook'."
(let* ((host-id
(intern (or (file-remote-p default-directory) "localhost")))
(host-defaults (assq host-id grep-host-defaults-alist))
- (defaults (assq nil grep-host-defaults-alist)))
+ (defaults (assq nil grep-host-defaults-alist))
+ (quot-braces (shell-quote-argument "{}"))
+ (quot-scolon (shell-quote-argument ";")))
;; There are different defaults on different hosts. They must be
;; computed for every host once.
(dolist (setting '(grep-command grep-template
@@ -621,9 +639,8 @@ This function is called from `compilation-filter-hook'."
"")))
(cons
(if (eq grep-find-use-xargs 'exec-plus)
- (format "%s %s{} +" cmd0 null)
- (format "%s {} %s%s" cmd0 null
- (shell-quote-argument ";")))
+ (format "%s %s%s +" cmd0 null quot-braces)
+ (format "%s %s %s%s" cmd0 quot-braces null quot-scolon))
(1+ (length cmd0)))))
(t
(format "%s . -type f -print | \"%s\" %s"
@@ -639,12 +656,11 @@ This function is called from `compilation-filter-hook'."
(format "%s <D> <X> -type f <F> -print0 | \"%s\" -0 %s"
find-program xargs-program gcmd))
((eq grep-find-use-xargs 'exec)
- (format "%s <D> <X> -type f <F> -exec %s {} %s%s"
- find-program gcmd null
- (shell-quote-argument ";")))
+ (format "%s <D> <X> -type f <F> -exec %s %s %s%s"
+ find-program gcmd quot-braces null quot-scolon))
((eq grep-find-use-xargs 'exec-plus)
- (format "%s <D> <X> -type f <F> -exec %s %s{} +"
- find-program gcmd null))
+ (format "%s <D> <X> -type f <F> -exec %s %s%s +"
+ find-program gcmd null quot-braces))
(t
(format "%s <D> <X> -type f <F> -print | \"%s\" %s"
find-program xargs-program gcmd))))))))
@@ -728,6 +744,12 @@ This function is called from `compilation-filter-hook'."
grep-error-screen-columns)
(add-hook 'compilation-filter-hook 'grep-filter nil t))
+(defun grep--save-buffers ()
+ (when grep-save-buffers
+ (save-some-buffers (and (not (eq grep-save-buffers 'ask))
+ (not (functionp grep-save-buffers)))
+ (and (functionp grep-save-buffers)
+ grep-save-buffers))))
;;;###autoload
(defun grep (command-args)
@@ -759,6 +781,7 @@ list is empty)."
'grep-history
(if current-prefix-arg nil default))))))
+ (grep--save-buffers)
;; Setting process-setup-function makes exit-message-function work
;; even when async processes aren't supported.
(compilation-start (if (and grep-use-null-device null-device)
@@ -952,6 +975,7 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
(let ((default-directory dir))
;; Setting process-setup-function makes exit-message-function work
;; even when async processes aren't supported.
+ (grep--save-buffers)
(compilation-start (if (and grep-use-null-device null-device)
(concat command " " null-device)
command)
@@ -1014,6 +1038,7 @@ to specify a command to run."
(read-from-minibuffer "Confirm: "
command nil nil 'grep-find-history))
(add-to-history 'grep-find-history command))
+ (grep--save-buffers)
(let ((default-directory dir))
(compilation-start command 'grep-mode))
;; Set default-directory if we started rgrep in the *grep* buffer.
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 0ac48f5f52..9052aa4035 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -1188,36 +1188,30 @@ containing the executable being debugged."
;; correct line number, but life's too short.
;; d.love@dl.ac.uk (Dave Love) can be blamed for this
-(defvar gud-irix-p
- (and (string-match "^mips-[^-]*-irix" system-configuration)
- (not (string-match "irix[6-9]\\.[1-9]" system-configuration)))
+(defvar gud-irix-p nil
"Non-nil to assume the interface appropriate for IRIX dbx.
This works in IRIX 4, 5 and 6, but `gud-dbx-use-stopformat-p' provides
a better solution in 6.1 upwards.")
-(defvar gud-dbx-use-stopformat-p
- (string-match "irix[6-9]\\.[1-9]" system-configuration)
+(defvar gud-dbx-use-stopformat-p nil
"Non-nil to use the dbx feature present at least from Irix 6.1
whereby $stopformat=1 produces an output format compatible with
`gud-dbx-marker-filter'.")
-;; [Irix dbx seems to be a moving target. The dbx output changed
+;; [Irix dbx seemed to be a moving target. The dbx output changed
;; subtly sometime between OS v4.0.5 and v5.2 so that, for instance,
;; the output from `up' is no longer spotted by gud (and it's probably
;; not distinctive enough to try to match it -- use C-<, C->
;; exclusively) . For 5.3 and 6.0, the $curline variable changed to
;; `long long'(why?!), so the printf stuff needed changing. The line
;; number was cast to `long' as a compromise between the new `long
-;; long' and the original `int'. This is reported not to work in 6.2,
+;; long' and the original `int'. This was reported not to work in 6.2,
;; so it's changed back to int -- don't make your sources too long.
-;; From Irix6.1 (but not 6.0?) dbx supports an undocumented feature
+;; From Irix6.1 (but not 6.0?) dbx supported an undocumented feature
;; whereby `set $stopformat=1' reportedly produces output compatible
;; with `gud-dbx-marker-filter', which we prefer.
;; The process filter is also somewhat
;; unreliable, sometimes not spotting the markers; I don't know
-;; whether there's anything that can be done about that. It would be
-;; much better if SGI could be persuaded to (re?)instate the MIPS
-;; -emacs flag for gdb-like output (which ought to be possible as most
-;; of the communication I've had over it has been from sgi.com).]
+;; whether there's anything that can be done about that.]
;; this filter is influenced by the xdb one rather than the gdb one
(defun gud-irixdbx-marker-filter (string)
@@ -1959,10 +1953,10 @@ the source code display in sync with the debugging session.")
PATH gives the directories in which to search for files with
extension EXTN. Normally EXTN is given as the regular expression
\"\\.java$\" ."
- (apply 'nconc (mapcar (lambda (d)
- (when (file-directory-p d)
- (directory-files d t extn nil)))
- path)))
+ (mapcan (lambda (d)
+ (when (file-directory-p d)
+ (directory-files d t extn nil)))
+ path))
;; Move point past whitespace.
(defun gud-jdb-skip-whitespace ()
@@ -2573,9 +2567,6 @@ comint mode, which see."
:group 'gud
:type 'boolean)
-(declare-function tramp-file-name-localname "tramp" (vec))
-(declare-function tramp-dissect-file-name "tramp" (name &optional nodefault))
-
;; Perform initializations common to all debuggers.
;; The first arg is the specified command line,
;; which starts with the program to debug.
@@ -2634,8 +2625,7 @@ comint mode, which see."
(setcar w
(if (file-remote-p file)
;; Tramp has already been loaded if we are here.
- (setq file (tramp-file-name-localname
- (tramp-dissect-file-name file)))
+ (setq file (file-remote-p file 'localname))
file))))
(apply 'make-comint (concat "gud" filepart) program nil
(if massage-args (funcall massage-args file args) args))
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el
index 6b5f51a3fb..9fbb7d6ad3 100644
--- a/lisp/progmodes/hideif.el
+++ b/lisp/progmodes/hideif.el
@@ -1114,8 +1114,8 @@ preprocessing token"
result)))
(defun hif-delimit (lis atom)
- (nconc (cl-mapcan (lambda (l) (list l atom))
- (butlast lis))
+ (nconc (mapcan (lambda (l) (list l atom))
+ (butlast lis))
(last lis)))
;; Perform token replacement:
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el
index e5460009a5..cabdf45458 100644
--- a/lisp/progmodes/hideshow.el
+++ b/lisp/progmodes/hideshow.el
@@ -351,6 +351,10 @@ Use the command `hs-minor-mode' to toggle or set this variable.")
(define-key map "\C-c@\C-\M-s" 'hs-show-all)
(define-key map "\C-c@\C-l" 'hs-hide-level)
(define-key map "\C-c@\C-c" 'hs-toggle-hiding)
+ (define-key map "\C-c@\C-a" 'hs-show-all)
+ (define-key map "\C-c@\C-t" 'hs-hide-all)
+ (define-key map "\C-c@\C-d" 'hs-hide-block)
+ (define-key map "\C-c@\C-e" 'hs-toggle-hiding)
(define-key map [(shift mouse-2)] 'hs-mouse-toggle-hiding)
map)
"Keymap for hideshow minor mode.")
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index f024d397ff..5d5d101835 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -62,7 +62,7 @@
(defvar moz-repl-name)
(defvar ido-cur-list)
(defvar electric-layout-rules)
-(declare-function ido-mode "ido")
+(declare-function ido-mode "ido" (&optional arg))
(declare-function inferior-moz-process "ext:mozrepl" ())
;;; Constants
@@ -1722,7 +1722,8 @@ This performs fontification according to `js--class-styles'."
(eval-when-compile (append "=({[,:;" '(nil))))))
(put-text-property (match-beginning 1) (match-end 1)
'syntax-table (string-to-syntax "\"/"))
- (js-syntax-propertize-regexp end))))))
+ (js-syntax-propertize-regexp end)))))
+ ("\\`\\(#\\)!" (1 "< b")))
(point) end))
(defconst js--prettify-symbols-alist
@@ -2248,7 +2249,7 @@ i.e., customize JSX element indentation with `sgml-basic-offset',
"Fill the paragraph with `c-fill-paragraph'."
(interactive "*P")
(let ((js--filling-paragraph t)
- (fill-paragraph-function 'c-fill-paragraph))
+ (fill-paragraph-function #'c-fill-paragraph))
(c-fill-paragraph justify)))
;;; Type database and Imenu
@@ -3495,6 +3496,7 @@ browser, respectively."
(unwind-protect
+ ;; FIXME: Don't impose IDO on the user.
(setq selected-tab-cname
(let ((ido-minibuffer-setup-hook
(cons #'setup-hook ido-minibuffer-setup-hook)))
@@ -3717,9 +3719,9 @@ If one hasn't been set, or if it's stale, prompt for a new one."
(define-derived-mode js-mode prog-mode "JavaScript"
"Major mode for editing JavaScript."
:group 'js
- (setq-local indent-line-function 'js-indent-line)
- (setq-local beginning-of-defun-function 'js-beginning-of-defun)
- (setq-local end-of-defun-function 'js-end-of-defun)
+ (setq-local indent-line-function #'js-indent-line)
+ (setq-local beginning-of-defun-function #'js-beginning-of-defun)
+ (setq-local end-of-defun-function #'js-end-of-defun)
(setq-local open-paren-in-column-0-is-defun-start nil)
(setq-local font-lock-defaults (list js--font-lock-keywords))
(setq-local syntax-propertize-function #'js-syntax-propertize)
@@ -3732,7 +3734,7 @@ If one hasn't been set, or if it's stale, prompt for a new one."
;; Comments
(setq-local comment-start "// ")
(setq-local comment-end "")
- (setq-local fill-paragraph-function 'js-c-fill-paragraph)
+ (setq-local fill-paragraph-function #'js-c-fill-paragraph)
;; Parse cache
(add-hook 'before-change-functions #'js--flush-caches t t)
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index ee4b104056..fb71420829 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -103,7 +103,6 @@
(t (:reverse-video t)))
"Face to use for highlighting leading spaces in Font-Lock mode."
:group 'makefile)
-(define-obsolete-face-alias 'makefile-space-face 'makefile-space "22.1")
(defface makefile-targets
;; This needs to go along both with foreground and background colors (i.e. shell)
diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el
index f309565acf..4f223f2f3c 100644
--- a/lisp/progmodes/octave.el
+++ b/lisp/progmodes/octave.el
@@ -34,31 +34,6 @@
;;; Code:
(require 'comint)
-;;; For emacs < 24.3.
-(require 'newcomment)
-(eval-and-compile
- (unless (fboundp 'user-error)
- (defalias 'user-error 'error))
- (unless (fboundp 'delete-consecutive-dups)
- (defalias 'delete-consecutive-dups 'delete-dups))
- (unless (fboundp 'completion-table-with-cache)
- (defun completion-table-with-cache (fun &optional ignore-case)
- ;; See eg bug#11906.
- (let* (last-arg last-result
- (new-fun
- (lambda (arg)
- (if (and last-arg (string-prefix-p last-arg arg ignore-case))
- last-result
- (prog1
- (setq last-result (funcall fun arg))
- (setq last-arg arg))))))
- (completion-table-dynamic new-fun)))))
-(eval-when-compile
- (unless (fboundp 'setq-local)
- (defmacro setq-local (var val)
- "Set variable VAR to value VAL in current buffer."
- (list 'set (list 'make-local-variable (list 'quote var)) val))))
-
(defgroup octave nil
"Editing Octave code."
:link '(custom-manual "(octave-mode)Top")
@@ -605,13 +580,8 @@ Key bindings:
(setq-local fill-nobreak-predicate
(lambda () (eq (octave-in-string-p) ?')))
- (with-no-warnings
- (if (fboundp 'add-function) ; new in 24.4
- (add-function :around (local 'comment-line-break-function)
- #'octave--indent-new-comment-line)
- (setq-local comment-line-break-function
- (apply-partially #'octave--indent-new-comment-line
- #'comment-indent-new-line))))
+ (add-function :around (local 'comment-line-break-function)
+ #'octave--indent-new-comment-line)
(setq font-lock-defaults '(octave-font-lock-keywords))
@@ -908,9 +878,6 @@ startup file, `~/.emacs-octave'."
(inferior-octave-completion-table)
'comint-completion-file-name-table))))))
-(define-obsolete-function-alias 'inferior-octave-complete
- 'completion-at-point "24.1")
-
(defun inferior-octave-dynamic-list-input-ring ()
"List the buffer's input history in a help buffer."
;; We cannot use `comint-dynamic-list-input-ring', because it replaces
@@ -1060,8 +1027,7 @@ directory and makes this the current buffer's default directory."
(skip-syntax-backward "-(")
(thing-at-point 'symbol)))))
(completing-read
- (format (if def "Function (default %s): "
- "Function: ") def)
+ (format (if def "Function (default %s): " "Function: ") def)
(inferior-octave-completion-table)
nil nil nil nil def)))
@@ -1448,9 +1414,6 @@ The block marked is the one that contains point or follows point."
(inferior-octave-completion-table))
octave-reserved-words)))))
-(define-obsolete-function-alias 'octave-complete-symbol
- 'completion-at-point "24.1")
-
(defun octave-add-log-current-defun ()
"A function for `add-log-current-defun-function' (which see)."
(save-excursion
diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el
index 3f25a0c064..718b33932e 100644
--- a/lisp/progmodes/prog-mode.el
+++ b/lisp/progmodes/prog-mode.el
@@ -49,6 +49,53 @@
map)
"Keymap used for programming modes.")
+(defvar prog-indentation-context nil
+ "When non-nil, provides context for indenting embedded code chunks.
+
+There are languages where part of the code is actually written in
+a sub language, e.g., a Yacc/Bison or ANTLR grammar also consists
+of plain C code. This variable enables the major mode of the
+main language to use the indentation engine of the sub-mode for
+lines in code chunks written in the sub-mode's language.
+
+When a major mode of such a main language decides to delegate the
+indentation of a line/region to the indentation engine of the sub
+mode, it should bind this variable to non-nil around the call.
+
+The non-nil value should be a list of the form:
+
+ (FIRST-COLUMN (START . END) PREVIOUS-CHUNKS)
+
+FIRST-COLUMN is the column the indentation engine of the sub-mode
+should use for top-level language constructs inside the code
+chunk (instead of 0).
+
+START and END specify the region of the code chunk. END can be
+nil, which stands for the value of `point-max'. The function
+`prog-widen' uses this to restore restrictions imposed by the
+sub-mode's indentation engine.
+
+PREVIOUS-CHUNKS, if non-nil, provides the indentation engine of
+the sub-mode with the virtual context of the code chunk. Valid
+values are:
+
+ - A string containing text which the indentation engine can
+ consider as standing in front of the code chunk. To cache the
+ string's calculated syntactic information for repeated calls
+ with the same string, the sub-mode can add text-properties to
+ the string.
+
+ A typical use case is for grammars with code chunks which are
+ to be indented like function bodies -- the string would contain
+ the corresponding function preamble.
+
+ - A function, to be called with the start position of the current
+ chunk. It should return either the region of the previous chunk
+ as (PREV-START . PREV-END), or nil if there is no previous chunk.
+
+ A typical use case are literate programming sources -- the
+ function would successively return the previous code chunks.")
+
(defun prog-indent-sexp (&optional defun)
"Indent the expression after point.
When interactively called with prefix, indent the enclosing defun
@@ -62,6 +109,27 @@ instead."
(end (progn (forward-sexp 1) (point))))
(indent-region start end nil))))
+(defun prog-first-column ()
+ "Return the indentation column normally used for top-level constructs."
+ (or (car prog-indentation-context) 0))
+
+(defun prog-widen ()
+ "Remove restrictions (narrowing) from current code chunk or buffer.
+This function should be used instead of `widen' in any function used
+by the indentation engine to make it respect the value of
+`prog-indentation-context'.
+
+This function (like `widen') is useful inside a
+`save-restriction' to make the indentation correctly work when
+narrowing is in effect."
+ (let ((chunk (cadr prog-indentation-context)))
+ (if chunk
+ ;; No call to `widen' is necessary here, as narrow-to-region
+ ;; changes (not just narrows) the existing restrictions
+ (narrow-to-region (car chunk) (or (cdr chunk) (point-max)))
+ (widen))))
+
+
(defvar-local prettify-symbols-alist nil
"Alist of symbol prettifications.
Each element looks like (SYMBOL . CHARACTER), where the symbol
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 212a5fa69a..2b23c51a11 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -271,6 +271,9 @@
(require 'easymenu)
(require 'align)
+(eval-when-compile
+ (or (fboundp 'use-region-p)
+ (defsubst use-region-p () (region-exists-p))))
(defgroup prolog nil
"Editing and running Prolog and Mercury files."
@@ -1271,7 +1274,7 @@ Actually this is just customized `prolog-mode'."
(comint-send-string proc (string last-command-event))
(call-interactively 'self-insert-command))))
-(declare-function 'compilation-shell-minor-mode "compile" (&optional arg))
+(declare-function compilation-shell-minor-mode "compile" (&optional arg))
(defvar compilation-error-regexp-alist)
(define-derived-mode prolog-inferior-mode comint-mode "Inferior Prolog"
@@ -3329,12 +3332,6 @@ PREFIX is the prefix of the search regexp."
;; prolog buffer)
;;-------------------------------------------------------------------
-(unless (fboundp 'region-exists-p)
- (defun region-exists-p ()
- "Non-nil if the mark is set. Lobotomized version for Emacsen that do not provide their own."
- (mark)))
-
-
;; GNU Emacs ignores `easy-menu-add' so the order in which the menus
;; are defined _is_ important!
@@ -3368,7 +3365,7 @@ PREFIX is the prefix of the search regexp."
:included (not (eq prolog-system 'mercury))]
["Consult buffer" prolog-consult-buffer
:included (not (eq prolog-system 'mercury))]
- ["Consult region" prolog-consult-region :active (region-exists-p)
+ ["Consult region" prolog-consult-region :active (use-region-p)
:included (not (eq prolog-system 'mercury))]
["Consult predicate" prolog-consult-predicate
:included (not (eq prolog-system 'mercury))]
@@ -3380,7 +3377,7 @@ PREFIX is the prefix of the search regexp."
:included (eq prolog-system 'sicstus)]
["Compile buffer" prolog-compile-buffer
:included (eq prolog-system 'sicstus)]
- ["Compile region" prolog-compile-region :active (region-exists-p)
+ ["Compile region" prolog-compile-region :active (use-region-p)
:included (eq prolog-system 'sicstus)]
["Compile predicate" prolog-compile-predicate
:included (eq prolog-system 'sicstus)]
@@ -3418,11 +3415,11 @@ PREFIX is the prefix of the search regexp."
prolog-edit-menu-insert-move prolog-mode-map
"Commands for Prolog code manipulation."
'("Prolog"
- ["Comment region" comment-region (region-exists-p)]
- ["Uncomment region" prolog-uncomment-region (region-exists-p)]
+ ["Comment region" comment-region (use-region-p)]
+ ["Uncomment region" prolog-uncomment-region (use-region-p)]
["Add comment/move to comment" indent-for-comment t]
["Convert variables in region to '_'" prolog-variables-to-anonymous
- :active (region-exists-p) :included (not (eq prolog-system 'mercury))]
+ :active (use-region-p) :included (not (eq prolog-system 'mercury))]
"---"
["Insert predicate template" prolog-insert-predicate-template t]
["Insert next clause head" prolog-insert-next-clause t]
@@ -3435,10 +3432,10 @@ PREFIX is the prefix of the search regexp."
["End of predicate" prolog-end-of-predicate t]
"---"
["Indent line" indent-according-to-mode t]
- ["Indent region" indent-region (region-exists-p)]
+ ["Indent region" indent-region (use-region-p)]
["Indent predicate" prolog-indent-predicate t]
["Indent buffer" prolog-indent-buffer t]
- ["Align region" align (region-exists-p)]
+ ["Align region" align (use-region-p)]
"---"
["Mark clause" prolog-mark-clause t]
["Mark predicate" prolog-mark-predicate t]
diff --git a/lisp/progmodes/ps-mode.el b/lisp/progmodes/ps-mode.el
index 2fc0d29ec9..3b0694541b 100644
--- a/lisp/progmodes/ps-mode.el
+++ b/lisp/progmodes/ps-mode.el
@@ -113,7 +113,7 @@ When the figure is finished these values should be replaced."
(defcustom ps-mode-print-function
(lambda ()
(let ((lpr-switches nil)
- (lpr-command (if (memq system-type '(usg-unix-v hpux irix))
+ (lpr-command (if (memq system-type '(usg-unix-v hpux))
"lp" "lpr")))
(lpr-buffer)))
"Lisp function to print current buffer as PostScript."
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 49f7bcf5df..ad69f8779e 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -4,7 +4,7 @@
;; Author: Fabián E. Gallina <fgallina@gnu.org>
;; URL: https://github.com/fgallina/python.el
-;; Version: 0.25.1
+;; Version: 0.25.2
;; Package-Requires: ((emacs "24.1") (cl-lib "1.0"))
;; Maintainer: emacs-devel@gnu.org
;; Created: Jul 2010
@@ -283,6 +283,18 @@
:version "24.3"
:link '(emacs-commentary-link "python"))
+
+;;; 24.x Compat
+
+
+(unless (fboundp 'prog-widen)
+ (defun prog-widen ()
+ (widen)))
+
+(unless (fboundp 'prog-first-column)
+ (defun prog-first-column ()
+ 0))
+
;;; Bindings
@@ -318,6 +330,7 @@
;; Some util commands
(define-key map "\C-c\C-v" 'python-check)
(define-key map "\C-c\C-f" 'python-eldoc-at-point)
+ (define-key map "\C-c\C-d" 'python-describe-at-point)
;; Utilities
(substitute-key-definition 'complete-symbol 'completion-at-point
map global-map)
@@ -549,23 +562,32 @@ The type returned can be `comment', `string' or `paren'."
;; Builtin Exceptions
(,(rx symbol-start
(or
+ ;; Python 2 and 3:
"ArithmeticError" "AssertionError" "AttributeError" "BaseException"
- "DeprecationWarning" "EOFError" "EnvironmentError" "Exception"
- "FloatingPointError" "FutureWarning" "GeneratorExit" "IOError"
- "ImportError" "ImportWarning" "IndexError" "KeyError"
- "KeyboardInterrupt" "LookupError" "MemoryError" "NameError"
- "NotImplementedError" "OSError" "OverflowError"
- "PendingDeprecationWarning" "ReferenceError" "RuntimeError"
- "RuntimeWarning" "StopIteration" "SyntaxError" "SyntaxWarning"
- "SystemError" "SystemExit" "TypeError" "UnboundLocalError"
- "UnicodeDecodeError" "UnicodeEncodeError" "UnicodeError"
- "UnicodeTranslateError" "UnicodeWarning" "UserWarning" "VMSError"
- "ValueError" "Warning" "WindowsError" "ZeroDivisionError"
+ "BufferError" "BytesWarning" "DeprecationWarning" "EOFError"
+ "EnvironmentError" "Exception" "FloatingPointError" "FutureWarning"
+ "GeneratorExit" "IOError" "ImportError" "ImportWarning"
+ "IndentationError" "IndexError" "KeyError" "KeyboardInterrupt"
+ "LookupError" "MemoryError" "NameError" "NotImplementedError"
+ "OSError" "OverflowError" "PendingDeprecationWarning"
+ "ReferenceError" "RuntimeError" "RuntimeWarning" "StopIteration"
+ "SyntaxError" "SyntaxWarning" "SystemError" "SystemExit" "TabError"
+ "TypeError" "UnboundLocalError" "UnicodeDecodeError"
+ "UnicodeEncodeError" "UnicodeError" "UnicodeTranslateError"
+ "UnicodeWarning" "UserWarning" "ValueError" "Warning"
+ "ZeroDivisionError"
;; Python 2:
"StandardError"
;; Python 3:
- "BufferError" "BytesWarning" "IndentationError" "ResourceWarning"
- "TabError")
+ "BlockingIOError" "BrokenPipeError" "ChildProcessError"
+ "ConnectionAbortedError" "ConnectionError" "ConnectionRefusedError"
+ "ConnectionResetError" "FileExistsError" "FileNotFoundError"
+ "InterruptedError" "IsADirectoryError" "NotADirectoryError"
+ "PermissionError" "ProcessLookupError" "RecursionError"
+ "ResourceWarning" "StopAsyncIteration" "TimeoutError"
+ ;; OS specific
+ "VMSError" "WindowsError"
+ )
symbol-end) . font-lock-type-face)
;; Builtins
(,(rx symbol-start
@@ -759,7 +781,7 @@ work on `python-indent-calculate-indentation' instead."
(interactive)
(save-excursion
(save-restriction
- (widen)
+ (prog-widen)
(goto-char (point-min))
(let ((block-end))
(while (and (not block-end)
@@ -858,7 +880,7 @@ keyword
- Point is on a line starting a dedenter block.
- START is the position where the dedenter block starts."
(save-restriction
- (widen)
+ (prog-widen)
(let ((ppss (save-excursion
(beginning-of-line)
(syntax-ppss))))
@@ -1005,10 +1027,10 @@ current context or a list of integers. The latter case is only
happening for :at-dedenter-block-start context since the
possibilities can be narrowed to specific indentation points."
(save-restriction
- (widen)
+ (prog-widen)
(save-excursion
(pcase (python-indent-context)
- (`(:no-indent . ,_) 0)
+ (`(:no-indent . ,_) (prog-first-column)) ; usually 0
(`(,(or :after-line
:after-comment
:inside-string
@@ -1046,7 +1068,7 @@ possibilities can be narrowed to specific indentation points."
(let ((opening-block-start-points
(python-info-dedenter-opening-block-positions)))
(if (not opening-block-start-points)
- 0 ; if not found default to first column
+ (prog-first-column) ; if not found default to first column
(mapcar (lambda (pos)
(save-excursion
(goto-char pos)
@@ -1064,7 +1086,7 @@ integers. Levels are returned in ascending order, and in the
case INDENTATION is a list, this order is enforced."
(if (listp indentation)
(sort (copy-sequence indentation) #'<)
- (nconc (number-sequence 0 (1- indentation)
+ (nconc (number-sequence (prog-first-column) (1- indentation)
python-indent-offset)
(list indentation))))
@@ -1089,7 +1111,7 @@ minimum."
(python-indent--previous-level levels (current-indentation))
(if levels
(apply #'max levels)
- 0))))
+ (prog-first-column)))))
(defun python-indent-line (&optional previous)
"Internal implementation of `python-indent-line-function'.
@@ -2042,8 +2064,8 @@ virtualenv."
(defun python-shell-calculate-pythonpath ()
"Calculate the PYTHONPATH using `python-shell-extra-pythonpaths'."
(let ((pythonpath
- (tramp-compat-split-string
- (or (getenv "PYTHONPATH") "") path-separator)))
+ (split-string
+ (or (getenv "PYTHONPATH") "") path-separator 'omit)))
(python-shell--add-to-path-with-priority
pythonpath python-shell-extra-pythonpaths)
(mapconcat 'identity pythonpath path-separator)))
@@ -2114,7 +2136,7 @@ appends `python-shell-remote-exec-path' instead of `exec-path'."
(md5 tramp-end-of-output)))
unset vars item)
(while env
- (setq item (tramp-compat-split-string (car env) "="))
+ (setq item (split-string (car env) "=" 'omit))
(setcdr item (mapconcat 'identity (cdr item) "="))
(if (and (stringp (cdr item)) (not (string-equal (cdr item) "")))
(push (format "%s %s" (car item) (cdr item)) vars)
@@ -4024,8 +4046,8 @@ The skeleton will be bound to python-skeleton-NAME."
(declare (indent 2))
(let* ((name (symbol-name name))
(function-name (intern (concat "python-skeleton--" name)))
- (msg (format-message
- "Add `%s' clause? " name)))
+ (msg (funcall (if (fboundp 'format-message) #'format-message #'format)
+ "Add `%s' clause? " name)))
(when (not skel)
(setq skel
`(< ,(format "%s:" name) \n \n
@@ -4346,6 +4368,11 @@ Interactively, prompt for symbol."
nil nil symbol))))
(message (python-eldoc--get-doc-at-point symbol)))
+(defun python-describe-at-point (symbol process)
+ (interactive (list (python-info-current-symbol)
+ (python-shell-get-process)))
+ (comint-send-string process (concat "help('" symbol "')\n")))
+
;;; Hideshow
@@ -4513,7 +4540,7 @@ Optional argument INCLUDE-TYPE indicates to include the type of the defun.
This function can be used as the value of `add-log-current-defun-function'
since it returns nil if point is not inside a defun."
(save-restriction
- (widen)
+ (prog-widen)
(save-excursion
(end-of-line 1)
(let ((names)
@@ -4696,7 +4723,7 @@ likely an invalid python file."
(let ((point (python-info-dedenter-opening-block-position)))
(when point
(save-restriction
- (widen)
+ (prog-widen)
(message "Closes %s" (save-excursion
(goto-char point)
(buffer-substring
@@ -4717,7 +4744,7 @@ statement."
With optional argument LINE-NUMBER, check that line instead."
(save-excursion
(save-restriction
- (widen)
+ (prog-widen)
(when line-number
(python-util-goto-line line-number))
(while (and (not (eobp))
@@ -4733,7 +4760,7 @@ With optional argument LINE-NUMBER, check that line instead."
Optional argument LINE-NUMBER forces the line number to check against."
(save-excursion
(save-restriction
- (widen)
+ (prog-widen)
(when line-number
(python-util-goto-line line-number))
(when (python-info-line-ends-backslash-p)
@@ -4750,7 +4777,7 @@ When current line is continuation of another return the point
where the continued line ends."
(save-excursion
(save-restriction
- (widen)
+ (prog-widen)
(let* ((context-type (progn
(back-to-indentation)
(python-syntax-context-type)))
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index d75edbc84e..e7b37acc3d 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -1799,9 +1799,9 @@ If the result is do-end block, it will always be multiline."
(content
(buffer-substring-no-properties (1+ min) (1- max))))
(setq content
- (if (equal string-quote "\"")
- (replace-regexp-in-string "\\\\\"" "\"" (replace-regexp-in-string "\\([^\\\\]\\)'" "\\1\\\\'" content))
- (replace-regexp-in-string "\\\\'" "'" (replace-regexp-in-string "\\([^\\\\]\\)\"" "\\1\\\\\"" content))))
+ (if (equal string-quote "'")
+ (replace-regexp-in-string "\\\\\"" "\"" (replace-regexp-in-string "\\(\\`\\|[^\\\\]\\)'" "\\1\\\\'" content))
+ (replace-regexp-in-string "\\\\'" "'" (replace-regexp-in-string "\\(\\`\\|[^\\\\]\\)\"" "\\1\\\\\"" content))))
(let ((orig-point (point)))
(delete-region min max)
(insert
diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
index 27ce60bde4..66d9ed6fae 100644
--- a/lisp/progmodes/scheme.el
+++ b/lisp/progmodes/scheme.el
@@ -54,7 +54,7 @@
(defvar scheme-mode-syntax-table
(let ((st (make-syntax-table))
- (i 0))
+ (i 0))
;; Symbol constituents
;; We used to treat chars 128-256 as symbol-constituent, but they
;; should be valid word constituents (Bug#8843). Note that valid
@@ -116,11 +116,11 @@
(defvar scheme-imenu-generic-expression
'((nil
- "^(define\\(\\|-\\(generic\\(\\|-procedure\\)\\|method\\)\\)*\\s-+(?\\(\\sw+\\)" 4)
- ("Types"
- "^(define-class\\s-+(?\\(\\sw+\\)" 1)
- ("Macros"
- "^(\\(defmacro\\|define-macro\\|define-syntax\\)\\s-+(?\\(\\sw+\\)" 2))
+ "^(define\\(\\|-\\(generic\\(\\|-procedure\\)\\|method\\)\\)*\\s-+(?\\(\\sw+\\)" 4)
+ ("Types"
+ "^(define-class\\s-+(?\\(\\sw+\\)" 1)
+ ("Macros"
+ "^(\\(defmacro\\|define-macro\\|define-syntax\\)\\s-+(?\\(\\sw+\\)" 2))
"Imenu generic expression for Scheme mode. See `imenu-generic-expression'.")
(defun scheme-mode-variables ()
@@ -151,18 +151,19 @@
(setq-local imenu-syntax-alist '(("+-*/.<>=?!$%_&~^:" . "w")))
(setq-local syntax-propertize-function #'scheme-syntax-propertize)
(setq font-lock-defaults
- '((scheme-font-lock-keywords
- scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
- nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
- beginning-of-defun
- (font-lock-mark-block-function . mark-defun)))
+ '((scheme-font-lock-keywords
+ scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
+ nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
+ beginning-of-defun
+ (font-lock-mark-block-function . mark-defun)))
+ (setq-local prettify-symbols-alist lisp-prettify-symbols-alist)
(setq-local lisp-doc-string-elt-property 'scheme-doc-string-elt))
(defvar scheme-mode-line-process "")
(defvar scheme-mode-map
(let ((smap (make-sparse-keymap))
- (map (make-sparse-keymap "Scheme")))
+ (map (make-sparse-keymap "Scheme")))
(set-keymap-parent smap lisp-mode-shared-map)
(define-key smap [menu-bar scheme] (cons "Scheme" map))
(define-key map [run-scheme] '("Run Inferior Scheme" . run-scheme))
@@ -270,25 +271,25 @@ See `run-hooks'."
;; Declarations. Hannes Haug <hannes.haug@student.uni-tuebingen.de> says
;; this works for SOS, STklos, SCOOPS, Meroon and Tiny CLOS.
(list (concat "(\\(define\\*?\\("
- ;; Function names.
- "\\(\\|-public\\|-method\\|-generic\\(-procedure\\)?\\)\\|"
- ;; Macro names, as variable names. A bit dubious, this.
- "\\(-syntax\\|-macro\\)\\|"
- ;; Class names.
- "-class"
+ ;; Function names.
+ "\\(\\|-public\\|-method\\|-generic\\(-procedure\\)?\\)\\|"
+ ;; Macro names, as variable names. A bit dubious, this.
+ "\\(-syntax\\|-macro\\)\\|"
+ ;; Class names.
+ "-class"
;; Guile modules.
"\\|-module"
- "\\)\\)\\>"
- ;; Any whitespace and declared object.
- ;; The "(*" is for curried definitions, e.g.,
- ;; (define ((sum a) b) (+ a b))
- "[ \t]*(*"
- "\\(\\sw+\\)?")
- '(1 font-lock-keyword-face)
- '(6 (cond ((match-beginning 3) font-lock-function-name-face)
- ((match-beginning 5) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))
+ "\\)\\)\\>"
+ ;; Any whitespace and declared object.
+ ;; The "(*" is for curried definitions, e.g.,
+ ;; (define ((sum a) b) (+ a b))
+ "[ \t]*(*"
+ "\\(\\sw+\\)?")
+ '(1 font-lock-keyword-face)
+ '(6 (cond ((match-beginning 3) font-lock-function-name-face)
+ ((match-beginning 5) font-lock-variable-name-face)
+ (t font-lock-type-face))
+ nil t))
))
"Subdued expressions to highlight in Scheme modes.")
@@ -300,21 +301,30 @@ See `run-hooks'."
;; Control structures.
(cons
(concat
- "(" (regexp-opt
- '("begin" "call-with-current-continuation" "call/cc"
- "call-with-input-file" "call-with-output-file" "case" "cond"
- "do" "else" "for-each" "if" "lambda" "λ"
- "let" "let*" "let-syntax" "letrec" "letrec-syntax"
- ;; R6RS library subforms.
- "export" "import"
- ;; SRFI 11 usage comes up often enough.
- "let-values" "let*-values"
- ;; Hannes Haug <hannes.haug@student.uni-tuebingen.de> wants:
- "and" "or" "delay" "force"
- ;; Stefan Monnier <stefan.monnier@epfl.ch> says don't bother:
- ;;"quasiquote" "quote" "unquote" "unquote-splicing"
- "map" "syntax" "syntax-rules") t)
- "\\>") 1)
+ "(" (regexp-opt
+ '("begin" "call-with-current-continuation" "call/cc"
+ "call-with-input-file" "call-with-output-file" "case" "cond"
+ "do" "else" "for-each" "if" "lambda" "λ"
+ "let" "let*" "let-syntax" "letrec" "letrec-syntax"
+ ;; R6RS library subforms.
+ "export" "import"
+ ;; SRFI 11 usage comes up often enough.
+ "let-values" "let*-values"
+ ;; Hannes Haug <hannes.haug@student.uni-tuebingen.de> wants:
+ "and" "or" "delay" "force"
+ ;; Stefan Monnier <stefan.monnier@epfl.ch> says don't bother:
+ ;;"quasiquote" "quote" "unquote" "unquote-splicing"
+ "map" "syntax" "syntax-rules"
+ ;; For R7RS
+ "when" "unless" "letrec*" "include" "include-ci" "cond-expand"
+ "delay-force" "parameterize" "guard" "case-lambda"
+ "syntax-error" "only" "except" "prefix" "rename" "define-values"
+ "define-record-type" "define-library"
+ "include-library-declarations"
+ ;; SRFI-8
+ "receive"
+ ) t)
+ "\\>") 1)
;;
;; It wouldn't be Scheme w/o named-let.
'("(let\\s-+\\(\\sw+\\)"
@@ -327,8 +337,8 @@ See `run-hooks'."
'("\\<#?:\\sw+\\>" . font-lock-builtin-face)
;; R6RS library declarations.
'("(\\(\\<library\\>\\)\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-type-face))
+ (1 font-lock-keyword-face)
+ (2 font-lock-type-face))
)))
"Gaudy expressions to highlight in Scheme modes.")
@@ -393,9 +403,9 @@ that variable's value is a string."
(not buffer-read-only)
(insert dsssl-sgml-declaration))
(setq font-lock-defaults '(dsssl-font-lock-keywords
- nil t (("+-*/.<>=?$%_&~^:" . "w"))
- beginning-of-defun
- (font-lock-mark-block-function . mark-defun)))
+ nil t (("+-*/.<>=?$%_&~^:" . "w"))
+ beginning-of-defun
+ (font-lock-mark-block-function . mark-defun)))
(setq-local add-log-current-defun-function #'lisp-current-defun-name)
(setq-local imenu-case-fold-search nil)
(setq imenu-generic-expression dsssl-imenu-generic-expression)
@@ -415,22 +425,22 @@ that variable's value is a string."
(eval-when-compile
(list
;; Similar to Scheme
- (list "(\\(define\\(-\\w+\\)?\\)\\>[ ]*\\((?\\)\\(\\sw+\\)\\>"
- '(1 font-lock-keyword-face)
- '(4 font-lock-function-name-face))
+ (list "(\\(define\\(-\\w+\\)?\\)\\>[ \t]*\\((?\\)\\(\\sw+\\)\\>"
+ '(1 font-lock-keyword-face)
+ '(4 font-lock-function-name-face))
(cons
(concat "(\\("
- ;; (make-regexp '("case" "cond" "else" "if" "lambda"
- ;; "let" "let*" "letrec" "and" "or" "map" "with-mode"))
- "and\\|c\\(ase\\|ond\\)\\|else\\|if\\|"
- "l\\(ambda\\|et\\(\\|*\\|rec\\)\\)\\|map\\|or\\|with-mode"
- "\\)\\>")
+ ;; (make-regexp '("case" "cond" "else" "if" "lambda"
+ ;; "let" "let*" "letrec" "and" "or" "map" "with-mode"))
+ "and\\|c\\(ase\\|ond\\)\\|else\\|if\\|"
+ "l\\(ambda\\|et\\(\\|*\\|rec\\)\\)\\|map\\|or\\|with-mode"
+ "\\)\\>")
1)
;; DSSSL syntax
- '("(\\(element\\|mode\\|declare-\\w+\\)\\>[ ]*\\(\\sw+\\)"
+ '("(\\(element\\|mode\\|declare-\\w+\\)\\>[ \t]*\\(\\sw+\\)"
(1 font-lock-keyword-face)
(2 font-lock-type-face))
- '("(\\(element\\)\\>[ ]*(\\(\\S)+\\))"
+ '("(\\(element\\)\\>[ \t]*(\\(\\S)+\\))"
(1 font-lock-keyword-face)
(2 font-lock-type-face))
'("\\<\\sw+:\\>" . font-lock-constant-face) ; trailing `:' c.f. scheme
@@ -467,7 +477,7 @@ indentation."
(progn (goto-char calculate-lisp-indent-last-sexp)
(beginning-of-line)
(parse-partial-sexp (point)
- calculate-lisp-indent-last-sexp 0 t)))
+ calculate-lisp-indent-last-sexp 0 t)))
;; Indent under the list or under the first sexp on the same
;; line as calculate-lisp-indent-last-sexp. Note that first
;; thing on that line has to be complete sexp since we are
@@ -475,20 +485,20 @@ indentation."
(backward-prefix-chars)
(current-column))
(let ((function (buffer-substring (point)
- (progn (forward-sexp 1) (point))))
- method)
- (setq method (or (get (intern-soft function) 'scheme-indent-function)
- (get (intern-soft function) 'scheme-indent-hook)))
- (cond ((or (eq method 'defun)
- (and (null method)
- (> (length function) 3)
- (string-match "\\`def" function)))
- (lisp-indent-defform state indent-point))
- ((integerp method)
- (lisp-indent-specform method state
- indent-point normal-indent))
- (method
- (funcall method state indent-point normal-indent)))))))
+ (progn (forward-sexp 1) (point))))
+ method)
+ (setq method (or (get (intern-soft function) 'scheme-indent-function)
+ (get (intern-soft function) 'scheme-indent-hook)))
+ (cond ((or (eq method 'defun)
+ (and (null method)
+ (> (length function) 3)
+ (string-match "\\`def" function)))
+ (lisp-indent-defform state indent-point))
+ ((integerp method)
+ (lisp-indent-specform method state
+ indent-point normal-indent))
+ (method
+ (funcall method state indent-point normal-indent)))))))
;;; Let is different in Scheme
@@ -546,6 +556,18 @@ indentation."
(put 'call-with-values 'scheme-indent-function 1) ; r5rs?
(put 'dynamic-wind 'scheme-indent-function 3) ; r5rs?
+;; R7RS
+(put 'when 'scheme-indent-function 1)
+(put 'unless 'scheme-indent-function 1)
+(put 'letrec* 'scheme-indent-function 1)
+(put 'parameterize 'scheme-indent-function 1)
+(put 'define-values 'scheme-indent-function 1)
+(put 'define-record-type 'scheme-indent-function 1) ;; is 1 correct?
+(put 'define-library 'scheme-indent-function 1)
+
+;; SRFI-8
+(put 'receive 'scheme-indent-function 2)
+
;;;; MIT Scheme specific indentation.
(if scheme-mit-dialect
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index f089c81fe5..7a9e6c7422 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -925,8 +925,6 @@ See `sh-feature'.")
(:weight bold)))
"Face to show quoted execs like \\=`blabla\\=`."
:group 'sh-indentation)
-(define-obsolete-face-alias 'sh-heredoc-face 'sh-heredoc "22.1")
-(defvar sh-heredoc-face 'sh-heredoc)
(defface sh-escaped-newline '((t :inherit font-lock-string-face))
"Face used for (non-escaped) backslash at end of a line in Shell-script mode."
@@ -1207,7 +1205,7 @@ subshells can nest."
(if q
(if (characterp q)
(if (eq q ?\`) 'sh-quoted-exec font-lock-string-face)
- sh-heredoc-face)
+ 'sh-heredoc)
font-lock-comment-face)))
(defgroup sh-indentation nil
@@ -1662,7 +1660,12 @@ with your script for an edit-interpret-debug cycle."
(setq-local skeleton-filter-function 'sh-feature)
(setq-local skeleton-newline-indent-rigidly t)
(setq-local defun-prompt-regexp
- (concat "^\\(function[ \t]\\|[[:alnum:]]+[ \t]+()[ \t]+\\)"))
+ (concat
+ "^\\("
+ "\\(function[ \t]\\)?[ \t]*[[:alnum:]]+[ \t]*([ \t]*)"
+ "\\|"
+ "function[ \t]+[[:alnum:]]+[ \t]*\\(([ \t]*)\\)?"
+ "\\)[ \t]*"))
(setq-local add-log-current-defun-function #'sh-current-defun-name)
(add-hook 'completion-at-point-functions
#'sh-completion-at-point-function nil t)
@@ -2427,8 +2430,8 @@ whose value is the shell name (don't quote it)."
(funcall mksym "rules")
:forward-token (funcall mksym "forward-token")
:backward-token (funcall mksym "backward-token")))
+ (setq-local parse-sexp-lookup-properties t)
(unless sh-use-smie
- (setq-local parse-sexp-lookup-properties t)
(setq-local sh-kw-alist (sh-feature sh-kw))
(let ((regexp (sh-feature sh-kws-for-done)))
(if regexp
@@ -2897,7 +2900,7 @@ STRING This is ignored for the purposes of calculating
;;(This function never returns just t.)
(cond
((or (nth 3 (syntax-ppss (point)))
- (eq (get-text-property (point) 'face) sh-heredoc-face))
+ (eq (get-text-property (point) 'face) 'sh-heredoc))
;; String continuation -- don't indent
(setq result t)
(setq have-result t))
@@ -3103,8 +3106,7 @@ we go to the end of the previous line and do not check for continuations."
(forward-comment (- (point-max)))
(unless end (beginning-of-line))
(when (and (not (bobp))
- (equal (get-text-property (1- (point)) 'face)
- sh-heredoc-face))
+ (eq (get-text-property (1- (point)) 'face) 'sh-heredoc))
(let ((p1 (previous-single-property-change (1- (point)) 'face)))
(when p1
(goto-char p1)
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
index fd59f4687c..a11d4560ae 100644
--- a/lisp/progmodes/sql.el
+++ b/lisp/progmodes/sql.el
@@ -462,9 +462,9 @@ file. Since that is a plaintext file, this could be dangerous."
:list-all ("\\d+" . "\\dS+")
:list-table ("\\d+ %s" . "\\dS+ %s")
:completion-object sql-postgres-completion-object
- :prompt-regexp "^\\w*=[#>] "
+ :prompt-regexp "^[[:alnum:]_]*=[#>] "
:prompt-length 5
- :prompt-cont-regexp "^\\w*[-(][#>] "
+ :prompt-cont-regexp "^[[:alnum:]_]*[-(][#>] "
:input-filter sql-remove-tabs-filter
:terminator ("\\(^\\s-*\\\\g$\\|;\\)" . "\\g"))
@@ -514,9 +514,9 @@ file. Since that is a plaintext file, this could be dangerous."
:sqli-comint-func sql-comint-vertica
:list-all ("\\d" . "\\dS")
:list-table "\\d %s"
- :prompt-regexp "^\\w*=[#>] "
+ :prompt-regexp "^[[:alnum:]_]*=[#>] "
:prompt-length 5
- :prompt-cont-regexp "^\\w*[-(][#>] ")
+ :prompt-cont-regexp "^[[:alnum:]_]*[-(][#>] ")
)
"An alist of product specific configuration settings.
@@ -1340,7 +1340,7 @@ Based on `comint-mode-map'.")
;; double quotes (") don't delimit strings
(modify-syntax-entry ?\" "." table)
;; Make these all punctuation
- (mapc #'(lambda (c) (modify-syntax-entry c "." table))
+ (mapc (lambda (c) (modify-syntax-entry c "." table))
(string-to-list "!#$%&+,.:;<=>?@\\|"))
table)
"Syntax table used in `sql-mode' and `sql-interactive-mode'.")
@@ -2441,7 +2441,7 @@ highlighting rules in SQL mode.")
(let ((init (or (and initial (symbol-name initial)) "ansi")))
(intern (completing-read
prompt
- (mapcar #'(lambda (info) (symbol-name (car info)))
+ (mapcar (lambda (info) (symbol-name (car info)))
sql-product-alist)
nil 'require-match
init 'sql-product-history init))))
@@ -2476,7 +2476,7 @@ configuration."
;; after this product's name.
(let ((next-item)
(down-display (downcase display)))
- (map-keymap #'(lambda (k b)
+ (map-keymap (lambda (k b)
(when (and (not next-item)
(string-lessp down-display
(downcase (cadr b))))
@@ -2582,7 +2582,7 @@ also be configured."
(font-lock-mode-internal t))
(add-hook 'font-lock-mode-hook
- #'(lambda ()
+ (lambda ()
;; Provide defaults for new font-lock faces.
(defvar font-lock-builtin-face
(if (boundp 'font-lock-preprocessor-face)
@@ -2631,7 +2631,7 @@ adds a fontification pattern to fontify identifiers ending in
"Iterate through login parameters and return a list of results."
(delq nil
(mapcar
- #'(lambda (param)
+ (lambda (param)
(let ((token (or (car-safe param) param))
(plist (cdr-safe param)))
(funcall body token plist)))
@@ -2643,7 +2643,7 @@ adds a fontification pattern to fontify identifiers ending in
(defun sql-product-syntax-table ()
(let ((table (copy-syntax-table sql-mode-syntax-table)))
- (mapc #'(lambda (entry)
+ (mapc (lambda (entry)
(modify-syntax-entry (car entry) (cdr entry) table))
(sql-get-product-feature sql-product :syntax-alist))
table))
@@ -2652,7 +2652,7 @@ adds a fontification pattern to fontify identifiers ending in
(append
;; Change all symbol character to word characters
(mapcar
- #'(lambda (entry) (if (string= (substring (cdr entry) 0 1) "_")
+ (lambda (entry) (if (string= (substring (cdr entry) 0 1) "_")
(cons (car entry)
(concat "w" (substring (cdr entry) 1)))
entry))
@@ -3025,7 +3025,7 @@ In order to qualify, the SQLi buffer must be alive, be in
buf)
;; Look thru each buffer
(car (apply #'append
- (mapcar #'(lambda (b)
+ (mapcar (lambda (b)
(and (sql-buffer-live-p b prod connection)
(list (buffer-name b))))
(buffer-list)))))))
@@ -3112,7 +3112,7 @@ server/database name."
(apply #'append nil
(sql-for-each-login
(sql-get-product-feature sql-product :sqli-login)
- #'(lambda (token plist)
+ (lambda (token plist)
(pcase token
(`user
(unless (string= "" sql-user)
@@ -3278,12 +3278,12 @@ Allows the suppression of continuation prompts.")
((functionp filter)
(setq string (funcall filter string)))
((listp filter)
- (mapc #'(lambda (f) (setq string (funcall f string))) filter))
+ (mapc (lambda (f) (setq string (funcall f string))) filter))
(t nil))
;; Count how many newlines in the string
(setq sql-output-newline-count
- (apply #'+ (mapcar #'(lambda (ch)
+ (apply #'+ (mapcar (lambda (ch)
(if (eq ch ?\n) 1 0)) string)))
;; Send the string
@@ -3510,7 +3510,7 @@ list of SQLi command strings."
(when visible
(message "Executing SQL command..."))
(if (consp command)
- (mapc #'(lambda (c) (sql-redirect-one sqlbuf c outbuf save-prior))
+ (mapc (lambda (c) (sql-redirect-one sqlbuf c outbuf save-prior))
command)
(sql-redirect-one sqlbuf command outbuf save-prior))
(when visible
@@ -3594,7 +3594,7 @@ for each match."
(match-string regexp-groups))
;; list of numbers; return the specified matches only
((consp regexp-groups)
- (mapcar #'(lambda (c)
+ (mapcar (lambda (c)
(cond
((numberp c) (match-string c))
((stringp c) (match-substitute-replacement c))
@@ -3624,7 +3624,7 @@ strings are formatted with ARG and executed.
If the results are empty the OUTBUF is deleted, otherwise the
buffer is popped into a view window."
(mapc
- #'(lambda (c)
+ (lambda (c)
(cond
((stringp c)
(sql-redirect sqlbuf (if arg (format c arg) c) outbuf) t)
@@ -4009,7 +4009,7 @@ Sentinels will always get the two parameters PROCESS and EVENT."
"Read a connection name."
(let ((completion-ignore-case t))
(completing-read prompt
- (mapcar #'(lambda (c) (car c))
+ (mapcar (lambda (c) (car c))
sql-connection-alist)
nil t initial 'sql-connection-history default)))
@@ -4052,7 +4052,7 @@ is specified in the connection settings."
;; Params in the connection
(setq set-params
(mapcar
- #'(lambda (v)
+ (lambda (v)
(pcase (car v)
(`sql-user 'user)
(`sql-password 'password)
@@ -4065,13 +4065,13 @@ is specified in the connection settings."
;; the remaining params (w/o the connection params)
(setq rem-params
(sql-for-each-login login-params
- #'(lambda (token plist)
+ (lambda (token plist)
(unless (member token set-params)
(if plist (cons token plist) token)))))
;; Set the parameters and start the interactive session
(mapc
- #'(lambda (vv)
+ (lambda (vv)
(set-default (car vv) (eval (cadr vv))))
(cdr connect-set))
(setq-default sql-connection connection)
@@ -4125,7 +4125,7 @@ optionally is saved to the user's init file."
(cons name
(sql-for-each-login
`(product ,@login)
- #'(lambda (token _plist)
+ (lambda (token _plist)
(pcase token
(`product `(sql-product ',product))
(`user `(sql-user ,user))
@@ -4144,7 +4144,7 @@ optionally is saved to the user's init file."
"Generate menu entries for using each connection."
(append
(mapcar
- #'(lambda (conn)
+ (lambda (conn)
(vector
(format "Connection <%s>\t%s" (car conn)
(let ((sql-user "") (sql-database "")
@@ -4428,7 +4428,7 @@ The default comes from `process-coding-system-alist' and
;; Remove any settings that haven't changed
(mapc
- #'(lambda (one-cur-setting)
+ (lambda (one-cur-setting)
(setq saved-settings (delete one-cur-setting saved-settings)))
(sql-oracle-save-settings sqlbuf))
@@ -4946,7 +4946,7 @@ Try to set `comint-output-filter-functions' like this:
(sql-redirect sqlbuf "\\a"))
;; Return the list of table names (public schema name can be omitted)
- (mapcar #'(lambda (tbl)
+ (mapcar (lambda (tbl)
(if (string= (car tbl) "public")
(format "\"%s\"" (cadr tbl))
(format "\"%s\".\"%s\"" (car tbl) (cadr tbl))))
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 8e0133006d..fd2e96af48 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -123,7 +123,7 @@
;;
;; This variable will always hold the version number of the mode
-(defconst verilog-mode-version "2015-09-18-314cf1d-vpo-GNU"
+(defconst verilog-mode-version "2016-03-22-7547e76-vpo-GNU"
"Version of this Verilog mode.")
(defconst verilog-mode-release-emacs t
"If non-nil, this version of Verilog mode was released with Emacs itself.")
@@ -230,10 +230,9 @@ STRING should be given if the last search was by `string-match' on STRING."
`(customize ,var))
)
- (unless (boundp 'inhibit-point-motion-hooks)
- (defvar inhibit-point-motion-hooks nil))
- (unless (boundp 'deactivate-mark)
- (defvar deactivate-mark nil))
+ (defvar inhibit-modification-hooks)
+ (defvar inhibit-point-motion-hooks)
+ (defvar deactivate-mark)
)
;;
;; OK, do this stuff if we are NOT XEmacs:
@@ -327,6 +326,14 @@ wherever possible, since it is slow."
(not (null pos)))))))
(eval-and-compile
+ (cond
+ ((fboundp 'restore-buffer-modified-p)
+ ;; Faster, as does not update mode line when nothing changes
+ (defalias 'verilog-restore-buffer-modified-p 'restore-buffer-modified-p))
+ (t
+ (defalias 'verilog-restore-buffer-modified-p 'set-buffer-modified-p))))
+
+(eval-and-compile
;; Both xemacs and emacs
(condition-case nil
(require 'diff) ; diff-command and diff-switches
@@ -342,6 +349,11 @@ wherever possible, since it is slow."
(condition-case nil
(unless (fboundp 'prog-mode)
(define-derived-mode prog-mode fundamental-mode "Prog"))
+ (error nil))
+ ;; Added in Emacs 25.1
+ (condition-case nil
+ (unless (fboundp 'forward-word-strictly)
+ (defalias 'forward-word-strictly 'forward-word))
(error nil)))
(eval-when-compile
@@ -827,6 +839,10 @@ Function takes three arguments, the original buffer, the
difference buffer, and the point in original buffer with the
first difference.")
+(defvar verilog-diff-ignore-regexp nil
+ "Non-nil specifies regexp which `verilog-diff-auto' will ignore.
+This is typically nil.")
+
;;; Compile support:
;;
@@ -1310,8 +1326,13 @@ See also `verilog-case-fold'."
:type 'hook)
(defvar verilog-imenu-generic-expression
- '((nil "^\\s-*\\(\\(m\\(odule\\|acromodule\\)\\)\\|primitive\\)\\s-+\\([a-zA-Z0-9_.:]+\\)" 4)
- ("*Vars*" "^\\s-*\\(reg\\|wire\\)\\s-+\\(\\|\\[[^]]+\\]\\s-+\\)\\([A-Za-z0-9_]+\\)" 3))
+ '((nil "^\\s-*\\(?:m\\(?:odule\\|acromodule\\)\\|p\\(?:rimitive\\|rogram\\|ackage\\)\\)\\s-+\\([a-zA-Z0-9_.:]+\\)" 1)
+ ("*Variables*" "^\\s-*\\(reg\\|wire\\|logic\\)\\s-+\\(\\|\\[[^]]+\\]\\s-+\\)\\([A-Za-z0-9_]+\\)" 3)
+ ("*Classes*" "^\\s-*\\(?:\\(?:virtual\\|interface\\)\\s-+\\)?class\\s-+\\([A-Za-z_][A-Za-z0-9_]+\\)" 1)
+ ("*Tasks*" "^\\s-*\\(?:\\(?:static\\|pure\\|virtual\\|local\\|protected\\)\\s-+\\)*task\\s-+\\(?:\\(?:static\\|automatic\\)\\s-+\\)?\\([A-Za-z_][A-Za-z0-9_:]+\\)" 1)
+ ("*Functions*" "^\\s-*\\(?:\\(?:static\\|pure\\|virtual\\|local\\|protected\\)\\s-+\\)*function\\s-+\\(?:\\(?:static\\|automatic\\)\\s-+\\)?\\(?:\\w+\\s-+\\)?\\([A-Za-z_][A-Za-z0-9_:]+\\)" 1)
+ ("*Interfaces*" "^\\s-*interface\\s-+\\([a-zA-Z_0-9]+\\)" 1)
+ ("*Types*" "^\\s-*typedef\\s-+.*\\s-+\\([a-zA-Z_0-9]+\\)\\s-*;" 1))
"Imenu expression for Verilog mode. See `imenu-generic-expression'.")
;;
@@ -1363,7 +1384,7 @@ If set will become buffer local.")
(define-key map "\C-c\C-i" 'verilog-pretty-declarations)
(define-key map "\C-c=" 'verilog-pretty-expr)
(define-key map "\C-c\C-b" 'verilog-submit-bug-report)
- (define-key map "\M-*" 'verilog-star-comment)
+ (define-key map "\C-c/" 'verilog-star-comment)
(define-key map "\C-c\C-c" 'verilog-comment-region)
(define-key map "\C-c\C-u" 'verilog-uncomment-region)
(when (featurep 'xemacs)
@@ -2937,8 +2958,6 @@ find the errors."
(modify-syntax-entry ?> "." table)
(modify-syntax-entry ?& "." table)
(modify-syntax-entry ?| "." table)
- ;; FIXME: This goes against Emacs conventions. Use "_" syntax instead and
- ;; then use regexps with things like "\\_<...\\_>".
(modify-syntax-entry ?` "w" table) ; ` is part of definition symbols in Verilog
(modify-syntax-entry ?_ "w" table)
(modify-syntax-entry ?\' "." table)
@@ -3017,7 +3036,7 @@ See also `verilog-font-lock-extra-types'.")
"Font lock mode face used to highlight AMS keywords."
:group 'font-lock-highlighting-faces)
-(defvar verilog-font-grouping-keywords-face
+(defvar verilog-font-lock-grouping-keywords-face
'verilog-font-lock-grouping-keywords-face
"Font to use for Verilog Grouping Keywords (such as begin..end).")
(defface verilog-font-lock-grouping-keywords-face
@@ -3225,56 +3244,63 @@ A change is considered significant if it affects the buffer text
in any way that isn't completely restored again. Any
user-visible changes to the buffer must not be within a
`verilog-save-buffer-state'."
- ;; From c-save-buffer-state
- `(let* ((modified (buffer-modified-p))
- (buffer-undo-list t)
- (inhibit-read-only t)
- (inhibit-point-motion-hooks t)
- (verilog-no-change-functions t)
- before-change-functions
- after-change-functions
- deactivate-mark
- buffer-file-name ; Prevent primitives checking
- buffer-file-truename) ; for file modification
- (unwind-protect
- (progn ,@body)
- (and (not modified)
- (buffer-modified-p)
- (set-buffer-modified-p nil)))))
+ `(let ((inhibit-point-motion-hooks t)
+ (verilog-no-change-functions t))
+ ,(if (fboundp 'with-silent-modifications)
+ `(with-silent-modifications ,@body)
+ ;; Backward compatible version of with-silent-modifications
+ `(let* ((modified (buffer-modified-p))
+ (buffer-undo-list t)
+ (inhibit-read-only t)
+ (inhibit-modification-hooks t)
+ ;; XEmacs ignores inhibit-modification-hooks.
+ before-change-functions after-change-functions
+ deactivate-mark
+ buffer-file-name ; Prevent primitives checking
+ buffer-file-truename) ; for file modification
+ (unwind-protect
+ (progn ,@body)
+ (and (not modified)
+ (buffer-modified-p)
+ (verilog-restore-buffer-modified-p nil)))))))
-(defmacro verilog-save-no-change-functions (&rest body)
- "Execute BODY forms, disabling all change hooks in BODY.
-For insignificant changes, see instead `verilog-save-buffer-state'."
- `(let* ((inhibit-point-motion-hooks t)
- (verilog-no-change-functions t)
- before-change-functions
- after-change-functions)
- (progn ,@body)))
(defvar verilog-save-font-mod-hooked nil
- "Local variable when inside a `verilog-save-font-mods' block.")
+ "Local variable when inside a `verilog-save-font-no-change-functions' block.")
(make-variable-buffer-local 'verilog-save-font-mod-hooked)
-(defmacro verilog-save-font-mods (&rest body)
- "Execute BODY forms, disabling text modifications to allow performing BODY.
+(defmacro verilog-save-font-no-change-functions (&rest body)
+ "Execute BODY forms, disabling all change hooks in BODY.
Includes temporary disabling of `font-lock' to restore the buffer
to full text form for parsing. Additional actions may be specified with
-`verilog-before-save-font-hook' and `verilog-after-save-font-hook'."
- ;; Before version 20, match-string with font-lock returns a
- ;; vector that is not equal to the string. IE if on "input"
- ;; nil==(equal "input" (progn (looking-at "input") (match-string 0)))
- `(let* ((hooked (unless verilog-save-font-mod-hooked
- (verilog-run-hooks 'verilog-before-save-font-hook)
- t))
- (verilog-save-font-mod-hooked t)
- (fontlocked (when (and (boundp 'font-lock-mode) font-lock-mode)
- (font-lock-mode 0)
- t)))
- (unwind-protect
- (progn ,@body)
- ;; Unwind forms
- (when fontlocked (font-lock-mode t))
- (when hooked (verilog-run-hooks 'verilog-after-save-font-hook)))))
+`verilog-before-save-font-hook' and `verilog-after-save-font-hook'.
+For insignificant changes, see instead `verilog-save-buffer-state'."
+ `(if verilog-save-font-mod-hooked ; Short-circuit a recursive call
+ (progn ,@body)
+ ;; Before version 20, match-string with font-lock returns a
+ ;; vector that is not equal to the string. IE if on "input"
+ ;; nil==(equal "input" (progn (looking-at "input") (match-string 0)))
+ ;; Therefore we must remove and restore font-lock mode
+ (verilog-run-hooks 'verilog-before-save-font-hook)
+ (let* ((verilog-save-font-mod-hooked (- (point-max) (point-min)))
+ ;; Significant speed savings with no font-lock properties
+ (fontlocked (when (and (boundp 'font-lock-mode) font-lock-mode)
+ (font-lock-mode 0)
+ t)))
+ (run-hook-with-args 'before-change-functions (point-min) (point-max))
+ (unwind-protect
+ ;; Must inhibit and restore hooks before restoring font-lock
+ (let* ((inhibit-point-motion-hooks t)
+ (inhibit-modification-hooks t)
+ (verilog-no-change-functions t)
+ ;; XEmacs and pre-Emacs 21 ignore inhibit-modification-hooks.
+ before-change-functions after-change-functions)
+ (progn ,@body))
+ ;; Unwind forms
+ (run-hook-with-args 'after-change-functions (point-min) (point-max)
+ verilog-save-font-mod-hooked) ; old length
+ (when fontlocked (font-lock-mode t))
+ (verilog-run-hooks 'verilog-after-save-font-hook)))))
;;
;; Comment detection and caching
@@ -3854,6 +3880,25 @@ Key bindings specific to `verilog-mode-map' are:
(add-hook 'write-contents-hooks 'verilog-auto-save-check nil 'local)
;; verilog-mode-hook call added by define-derived-mode
)
+
+;;; Integration with the speedbar
+;;
+
+(declare-function speedbar-add-supported-extension "speedbar" (extension))
+
+(defun verilog-speedbar-initialize ()
+ "Initialize speedbar to understand `verilog-mode'."
+ ;; Set Verilog file extensions (extracted from `auto-mode-alist')
+ (let ((mode-alist auto-mode-alist))
+ (while mode-alist
+ (when (eq (cdar mode-alist) 'verilog-mode)
+ (speedbar-add-supported-extension (caar mode-alist)))
+ (setq mode-alist (cdr mode-alist)))))
+
+;; If the speedbar is loaded, execute initialization instructions right away,
+;; otherwise add the initialization instructions to the speedbar loader.
+(eval-after-load "speedbar" '(verilog-speedbar-initialize))
+
;;; Electric functions:
;;
@@ -8074,7 +8119,7 @@ Duplicate signals are also removed. For example A[2] and A[1] become A[2:1]."
(when (and sv-busstring
(not (equal sv-busstring (verilog-sig-bits sig))))
(when nil ; Debugging
- (message (concat "Warning, can't merge into single bus %s%s"
+ (message (concat "Warning, can't merge into single bus `%s%s'"
", the AUTOs may be wrong")
sv-name bus))
(setq buswarn ", Couldn't Merge"))
@@ -8377,18 +8422,18 @@ Return an array of [outputs inouts inputs wire reg assign const]."
(setcar (cdr (cdr (cdr newsig)))
(if (verilog-sig-memory newsig)
(concat (verilog-sig-memory newsig) (match-string 1))
- (match-string 1))))
+ (match-string-no-properties 1))))
(vec ; Multidimensional
(setq multidim (cons vec multidim))
(setq vec (verilog-string-replace-matches
- "\\s-+" "" nil nil (match-string 1))))
+ "\\s-+" "" nil nil (match-string-no-properties 1))))
(t ; Bit width
(setq vec (verilog-string-replace-matches
- "\\s-+" "" nil nil (match-string 1))))))
+ "\\s-+" "" nil nil (match-string-no-properties 1))))))
;; Normal or escaped identifier -- note we remember the \ if escaped
((looking-at "\\s-*\\([a-zA-Z0-9`_$]+\\|\\\\[^ \t\n\f]+\\)")
(goto-char (match-end 0))
- (setq keywd (match-string 1))
+ (setq keywd (match-string-no-properties 1))
(when (string-match "^\\\\" (match-string 1))
(setq keywd (concat keywd " "))) ; Escaped ID needs space at end
;; Add any :: package names to same identifier
@@ -8573,11 +8618,12 @@ Return an array of [outputs inouts inputs wire reg assign const]."
(defvar sigs-out-unk)
(defvar sigs-temp)
;; These are known to be from other packages and may not be defined
- (defvar diff-command nil)
+ (defvar diff-command)
;; There are known to be from newer versions of Emacs
- (defvar create-lockfiles))
+ (defvar create-lockfiles)
+ (defvar which-func-modes))
-(defun verilog-read-sub-decls-sig (submoddecls comment port sig vec multidim)
+(defun verilog-read-sub-decls-sig (submoddecls comment port sig vec multidim mem)
"For `verilog-read-sub-decls-line', add a signal."
;; sig eq t to indicate .name syntax
;;(message "vrsds: %s(%S)" port sig)
@@ -8588,6 +8634,7 @@ Return an array of [outputs inouts inputs wire reg assign const]."
(setq sig (if dotname port (verilog-symbol-detick-denumber sig)))
(if vec (setq vec (verilog-symbol-detick-denumber vec)))
(if multidim (setq multidim (mapcar `verilog-symbol-detick-denumber multidim)))
+ (if mem (setq mem (verilog-symbol-detick-denumber mem)))
(unless (or (not sig)
(equal sig "")) ; Ignore .foo(1'b1) assignments
(cond ((or (setq portdata (assoc port (verilog-decls-get-inouts submoddecls)))
@@ -8597,7 +8644,7 @@ Return an array of [outputs inouts inputs wire reg assign const]."
sig
(if dotname (verilog-sig-bits portdata) vec)
(concat "To/From " comment)
- (verilog-sig-memory portdata)
+ mem
nil
(verilog-sig-signed portdata)
(unless (member (verilog-sig-type portdata) '("wire" "reg"))
@@ -8611,7 +8658,7 @@ Return an array of [outputs inouts inputs wire reg assign const]."
sig
(if dotname (verilog-sig-bits portdata) vec)
(concat "From " comment)
- (verilog-sig-memory portdata)
+ mem
nil
(verilog-sig-signed portdata)
;; Though ok in SV, in V2K code, propagating the
@@ -8630,7 +8677,7 @@ Return an array of [outputs inouts inputs wire reg assign const]."
sig
(if dotname (verilog-sig-bits portdata) vec)
(concat "To " comment)
- (verilog-sig-memory portdata)
+ mem
nil
(verilog-sig-signed portdata)
(unless (member (verilog-sig-type portdata) '("wire" "reg"))
@@ -8643,7 +8690,7 @@ Return an array of [outputs inouts inputs wire reg assign const]."
sig
(if dotname (verilog-sig-bits portdata) vec)
(concat "To/From " comment)
- (verilog-sig-memory portdata)
+ mem
nil
(verilog-sig-signed portdata)
(verilog-sig-type portdata)
@@ -8656,7 +8703,7 @@ Return an array of [outputs inouts inputs wire reg assign const]."
sig
(if dotname (verilog-sig-bits portdata) vec)
(concat "To/From " comment)
- (verilog-sig-memory portdata)
+ mem
nil
(verilog-sig-signed portdata)
(verilog-sig-type portdata)
@@ -8669,7 +8716,7 @@ Return an array of [outputs inouts inputs wire reg assign const]."
"For `verilog-read-sub-decls-line', parse a subexpression and add signals."
;;(message "vrsde: `%s'" expr)
;; Replace special /*[....]*/ comments inserted by verilog-auto-inst-port
- (setq expr (verilog-string-replace-matches "/\\*\\(\\[[^*]+\\]\\)\\*/" "\\1" nil nil expr))
+ (setq expr (verilog-string-replace-matches "/\\*\\(\\.?\\[[^*]+\\]\\)\\*/" "\\1" nil nil expr))
;; Remove front operators
(setq expr (verilog-string-replace-matches "^\\s-*[---+~!|&]+\\s-*" "" nil nil expr))
;;
@@ -8683,7 +8730,7 @@ Return an array of [outputs inouts inputs wire reg assign const]."
(while (setq mstr (pop mlst))
(verilog-read-sub-decls-expr submoddecls comment port mstr)))))
(t
- (let (sig vec multidim)
+ (let (sig vec multidim mem)
;; Remove leading reduction operators, etc
(setq expr (verilog-string-replace-matches "^\\s-*[---+~!|&]+\\s-*" "" nil nil expr))
;;(message "vrsde-ptop: `%s'" expr)
@@ -8703,10 +8750,15 @@ Return an array of [outputs inouts inputs wire reg assign const]."
(when vec (setq multidim (cons vec multidim)))
(setq vec (match-string 1 expr)
expr (substring expr (match-end 0))))
+ ;; Find .[unpacked_memory] or .[unpacked][unpacked]...
+ (while (string-match "^\\s-*\\.\\(\\[[^]]+\\]\\)" expr)
+ ;;(message "vrsde-m: `%s'" (match-string 1 expr))
+ (setq mem (match-string 1 expr)
+ expr (substring expr (match-end 0))))
;; If found signal, and nothing unrecognized, add the signal
;;(message "vrsde-rem: `%s'" expr)
(when (and sig (string-match "^\\s-*$" expr))
- (verilog-read-sub-decls-sig submoddecls comment port sig vec multidim))))))
+ (verilog-read-sub-decls-sig submoddecls comment port sig vec multidim mem))))))
(defun verilog-read-sub-decls-line (submoddecls comment)
"For `verilog-read-sub-decls', read lines of port defs until none match.
@@ -8717,23 +8769,23 @@ Inserts the list of signals found, using submodi to look up each port."
(while (not done)
;; Get port name
(cond ((looking-at "\\s-*\\.\\s-*\\([a-zA-Z0-9`_$]*\\)\\s-*(\\s-*")
- (setq port (match-string 1))
+ (setq port (match-string-no-properties 1))
(goto-char (match-end 0)))
;; .\escaped (
((looking-at "\\s-*\\.\\s-*\\(\\\\[^ \t\n\f]*\\)\\s-*(\\s-*")
- (setq port (concat (match-string 1) " ")) ; escaped id's need trailing space
+ (setq port (concat (match-string-no-properties 1) " ")) ; escaped id's need trailing space
(goto-char (match-end 0)))
;; .name
((looking-at "\\s-*\\.\\s-*\\([a-zA-Z0-9`_$]*\\)\\s-*[,)/]")
(verilog-read-sub-decls-sig
- submoddecls comment (match-string 1) t ; sig==t for .name
- nil nil) ; vec multidim
+ submoddecls comment (match-string-no-properties 1) t ; sig==t for .name
+ nil nil nil) ; vec multidim mem
(setq port nil))
;; .\escaped_name
((looking-at "\\s-*\\.\\s-*\\(\\\\[^ \t\n\f]*\\)\\s-*[,)/]")
(verilog-read-sub-decls-sig
- submoddecls comment (concat (match-string 1) " ") t ; sig==t for .name
- nil nil) ; vec multidim
+ submoddecls comment (concat (match-string-no-properties 1) " ") t ; sig==t for .name
+ nil nil nil) ; vec multidim mem
(setq port nil))
;; random
((looking-at "\\s-*\\.[^(]*(")
@@ -8748,20 +8800,20 @@ Inserts the list of signals found, using submodi to look up each port."
(cond ((looking-at "\\([a-zA-Z_][a-zA-Z_0-9]*\\)\\s-*)")
(verilog-read-sub-decls-sig
submoddecls comment port
- (verilog-string-remove-spaces (match-string 1)) ; sig
- nil nil)) ; vec multidim
+ (verilog-string-remove-spaces (match-string-no-properties 1)) ; sig
+ nil nil nil)) ; vec multidim mem
;;
((looking-at "\\([a-zA-Z_][a-zA-Z_0-9]*\\)\\s-*\\(\\[[^]]+\\]\\)\\s-*)")
(verilog-read-sub-decls-sig
submoddecls comment port
- (verilog-string-remove-spaces (match-string 1)) ; sig
- (match-string 2) nil)) ; vec multidim
+ (verilog-string-remove-spaces (match-string-no-properties 1)) ; sig
+ (match-string-no-properties 2) nil nil)) ; vec multidim mem
;; Fastpath was above looking-at's.
;; For something more complicated invoke a parser
((looking-at "[^)]+")
(verilog-read-sub-decls-expr
submoddecls comment port
- (buffer-substring
+ (buffer-substring-no-properties
(point) (1- (progn (search-backward "(") ; start at (
(verilog-forward-sexp-ign-cmt 1)
(point)))))))) ; expr
@@ -8993,7 +9045,8 @@ IGNORE-NEXT is true to ignore next token, fake from inside case statement."
;;(if dbg (setq dbg (concat dbg (format "\tif-check-else-other %s\n" keywd))))
(setq gotend t))
;; Final statement?
- ((and exit-keywd (equal keywd exit-keywd))
+ ((and exit-keywd (and (equal keywd exit-keywd)
+ (not (looking-at "::"))))
(setq gotend t)
(forward-char (length keywd)))
;; Standard tokens...
@@ -9009,7 +9062,9 @@ IGNORE-NEXT is true to ignore next token, fake from inside case statement."
(goto-char (match-end 0))
(forward-char 1)))
((equal keywd ":") ; Case statement, begin/end label, x?y:z
- (cond ((equal "endcase" exit-keywd) ; case x: y=z; statement next
+ (cond ((looking-at "::")
+ (forward-char 1)) ; Another forward-char below
+ ((equal "endcase" exit-keywd) ; case x: y=z; statement next
(setq ignore-next nil rvalue nil))
((equal "?" exit-keywd) ; x?y:z rvalue
) ; NOP
@@ -9104,7 +9159,7 @@ IGNORE-NEXT is true to ignore next token, fake from inside case statement."
(verilog-read-always-signals-recurse nil nil nil)
(setq sigs-out-i (append sigs-out-i sigs-out-unk)
sigs-out-unk nil)
- ;;(if dbg (with-current-buffer (get-buffer-create "*vl-dbg*")) (delete-region (point-min) (point-max)) (insert dbg) (setq dbg ""))
+ ;;(if dbg (with-current-buffer (get-buffer-create "*vl-dbg*") (delete-region (point-min) (point-max)) (insert dbg) (setq dbg "")))
;; Return what was found
(verilog-alw-new sigs-out-d sigs-out-i sigs-temp sigs-in))))
@@ -9894,7 +9949,7 @@ Return modi if successful, else print message unless IGNORE-ERROR is true."
(or mif ignore-error
(error
(concat
- "%s: Can't locate %s module definition%s"
+ "%s: Can't locate `%s' module definition%s"
"\n Check the verilog-library-directories variable."
"\n I looked in (if not listed, doesn't exist):\n\t%s")
(verilog-point-text) module
@@ -9959,9 +10014,9 @@ Cache the output of function so next call may have faster access."
(t
;; Read from file
;; Clear then restore any highlighting to make emacs19 happy
- (let (func-returns)
- (verilog-save-font-mods
- (setq func-returns (funcall function)))
+ (let ((func-returns
+ (verilog-save-font-no-change-functions
+ (funcall function))))
;; Cache for next time
(setq verilog-modi-cache-list
(cons (list (list modi function)
@@ -10003,7 +10058,7 @@ Report errors unless optional IGNORE-ERROR."
(let* ((realname (verilog-symbol-detick name t))
(modport (assoc name (verilog-decls-get-modports (verilog-modi-get-decls modi)))))
(or modport ignore-error
- (error "%s: Can't locate %s modport definition%s"
+ (error "%s: Can't locate `%s' modport definition%s"
(verilog-point-text) name
(if (not (equal name realname))
(concat " (Expanded macro to " realname ")")
@@ -10193,7 +10248,7 @@ When MODI is non-null, also add to modi-cache, for tracking."
((equal direction "parameter")
(verilog-modi-cache-add-gparams modi sigs))
(t
- (error "Unsupported verilog-insert-definition direction: %s" direction))))
+ (error "Unsupported verilog-insert-definition direction: `%s'" direction))))
(or dont-sort
(setq sigs (sort (copy-alist sigs) `verilog-signals-sort-compare)))
(while sigs
@@ -10224,7 +10279,7 @@ When MODI is non-null, also add to modi-cache, for tracking."
(eval-when-compile
(if (not (boundp 'indent-pt))
- (defvar indent-pt nil "Local used by insert-indent")))
+ (defvar indent-pt nil "Local used by `verilog-insert-indent'.")))
(defun verilog-insert-indent (&rest stuff)
"Indent to position stored in local `indent-pt' variable, then insert STUFF.
@@ -10510,6 +10565,41 @@ removed."
(re-search-backward ",")
(delete-char 1))))))
+(defun verilog-delete-auto-buffer ()
+ "Perform `verilog-delete-auto' on the current buffer.
+Intended for internal use inside a `verilog-save-font-no-change-functions' block."
+ ;; Allow user to customize
+ (verilog-run-hooks 'verilog-before-delete-auto-hook)
+
+ ;; Remove those that have multi-line insertions, possibly with parameters
+ ;; We allow anything beginning with AUTO, so that users can add their own
+ ;; patterns
+ (verilog-auto-re-search-do
+ (concat "/\\*AUTO[A-Za-z0-9_]+"
+ ;; Optional parens or quoted parameter or .* for (((...)))
+ "\\(\\|([^)]*)\\|(\"[^\"]*\")\\).*?"
+ "\\*/")
+ 'verilog-delete-autos-lined)
+ ;; Remove those that are in parenthesis
+ (verilog-auto-re-search-do
+ (concat "/\\*"
+ (eval-when-compile
+ (verilog-regexp-words
+ `("AS" "AUTOARG" "AUTOCONCATWIDTH" "AUTOINST" "AUTOINSTPARAM"
+ "AUTOSENSE")))
+ "\\*/")
+ 'verilog-delete-to-paren)
+ ;; Do .* instantiations, but avoid removing any user pins by looking for our magic comments
+ (verilog-auto-re-search-do "\\.\\*"
+ 'verilog-delete-auto-star-all)
+ ;; Remove template comments ... anywhere in case was pasted after AUTOINST removed
+ (goto-char (point-min))
+ (while (re-search-forward "\\s-*// \\(Templated\\|Implicit \\.\\*\\)\\([ \tLT0-9]*\\| LHS: .*\\)?$" nil t)
+ (replace-match ""))
+
+ ;; Final customize
+ (verilog-run-hooks 'verilog-delete-auto-hook))
+
(defun verilog-delete-auto ()
"Delete the automatic outputs, regs, and wires created by \\[verilog-auto].
Use \\[verilog-auto] to re-insert the updated AUTOs.
@@ -10520,39 +10610,10 @@ called before and after this function, respectively."
(save-excursion
(if (buffer-file-name)
(find-file-noselect (buffer-file-name))) ; To check we have latest version
- (verilog-save-no-change-functions
+ (verilog-save-font-no-change-functions
(verilog-save-scan-cache
- ;; Allow user to customize
- (verilog-run-hooks 'verilog-before-delete-auto-hook)
-
- ;; Remove those that have multi-line insertions, possibly with parameters
- ;; We allow anything beginning with AUTO, so that users can add their own
- ;; patterns
- (verilog-auto-re-search-do
- (concat "/\\*AUTO[A-Za-z0-9_]+"
- ;; Optional parens or quoted parameter or .* for (((...)))
- "\\(\\|([^)]*)\\|(\"[^\"]*\")\\).*?"
- "\\*/")
- 'verilog-delete-autos-lined)
- ;; Remove those that are in parenthesis
- (verilog-auto-re-search-do
- (concat "/\\*"
- (eval-when-compile
- (verilog-regexp-words
- `("AS" "AUTOARG" "AUTOCONCATWIDTH" "AUTOINST" "AUTOINSTPARAM"
- "AUTOSENSE")))
- "\\*/")
- 'verilog-delete-to-paren)
- ;; Do .* instantiations, but avoid removing any user pins by looking for our magic comments
- (verilog-auto-re-search-do "\\.\\*"
- 'verilog-delete-auto-star-all)
- ;; Remove template comments ... anywhere in case was pasted after AUTOINST removed
- (goto-char (point-min))
- (while (re-search-forward "\\s-*// \\(Templated\\|Implicit \\.\\*\\)\\([ \tLT0-9]*\\| LHS: .*\\)?$" nil t)
- (replace-match ""))
+ (verilog-delete-auto-buffer)))))
- ;; Final customize
- (verilog-run-hooks 'verilog-delete-auto-hook)))))
;;; Auto inject:
;;
@@ -10679,10 +10740,11 @@ Typing \\[verilog-inject-auto] will make this into:
;; Auto diff:
;;
-(defun verilog-diff-buffers-p (b1 b2 &optional whitespace)
+(defun verilog-diff-buffers-p (b1 b2 &optional whitespace regexp)
"Return nil if buffers B1 and B2 have same contents.
Else, return point in B1 that first mismatches.
-If optional WHITESPACE true, ignore whitespace."
+If optional WHITESPACE true, ignore whitespace.
+If optional REGEXP, ignore differences matching it."
(save-excursion
(let* ((case-fold-search nil) ; compare-buffer-substrings cares
(p1 (with-current-buffer b1 (goto-char (point-min))))
@@ -10703,6 +10765,15 @@ If optional WHITESPACE true, ignore whitespace."
(goto-char p2)
(skip-chars-forward " \t\n\r\f\v")
(setq p2 (point))))
+ (when regexp
+ (with-current-buffer b1
+ (goto-char p1)
+ (when (looking-at regexp)
+ (setq p1 (match-end 0))))
+ (with-current-buffer b2
+ (goto-char p2)
+ (when (looking-at regexp)
+ (setq p2 (match-end 0)))))
(setq size (min (- maxp1 p1) (- maxp2 p2)))
(setq progress (compare-buffer-substrings b2 p2 (+ size p2)
b1 p1 (+ size p1)))
@@ -10723,7 +10794,7 @@ Ignores WHITESPACE if t, and writes output to stdout if SHOW."
;; call `diff' as `diff' has different calling semantics on different
;; versions of Emacs.
(if (not (file-exists-p f1))
- (message "Buffer %s has no associated file on disc" (buffer-name b2))
+ (message "Buffer `%s' has no associated file on disk" (buffer-name b2))
(with-temp-buffer "*Verilog-Diff*"
(let ((outbuf (current-buffer))
(f2 (make-temp-file "vm-diff-auto-")))
@@ -10791,7 +10862,7 @@ or `diff' in batch mode."
;; Restore name if unwind
(with-current-buffer b1 (setq buffer-file-name name1)))))
;;
- (setq diffpt (verilog-diff-buffers-p b1 b2 t))
+ (setq diffpt (verilog-diff-buffers-p b1 b2 t verilog-diff-ignore-regexp))
(cond ((not diffpt)
(unless noninteractive (message "AUTO expansion identical"))
(kill-buffer newname)) ; Nice to cleanup after oneself
@@ -11054,6 +11125,7 @@ If PAR-VALUES replace final strings with these parameter values."
(vl-name (verilog-sig-name port-st))
(vl-width (verilog-sig-width port-st))
(vl-modport (verilog-sig-modport port-st))
+ (vl-memory (verilog-sig-memory port-st))
(vl-mbits (if (verilog-sig-multidim port-st)
(verilog-sig-multidim-string port-st) ""))
(vl-bits (if (or verilog-auto-inst-vector
@@ -11078,15 +11150,25 @@ If PAR-VALUES replace final strings with these parameter values."
(concat "\\<" (nth 0 (car check-values)) "\\>")
(concat "(" (nth 1 (car check-values)) ")")
t t vl-mbits)
+ vl-memory (when vl-memory
+ (verilog-string-replace-matches
+ (concat "\\<" (nth 0 (car check-values)) "\\>")
+ (concat "(" (nth 1 (car check-values)) ")")
+ t t vl-memory))
check-values (cdr check-values)))
(setq vl-bits (verilog-simplify-range-expression vl-bits)
vl-mbits (verilog-simplify-range-expression vl-mbits)
+ vl-memory (when vl-memory (verilog-simplify-range-expression vl-memory))
vl-width (verilog-make-width-expression vl-bits))) ; Not in the loop for speed
;; Default net value if not found
- (setq dflt-bits (if (and (verilog-sig-bits port-st)
- (or (verilog-sig-multidim port-st)
- (verilog-sig-memory port-st)))
- (concat "/*" vl-mbits vl-bits "*/")
+ (setq dflt-bits (if (or (and (verilog-sig-bits port-st)
+ (verilog-sig-multidim port-st))
+ (verilog-sig-memory port-st))
+ (concat "/*" vl-mbits vl-bits
+ ;; .[ used to separate packed from unpacked
+ (if vl-memory "." "")
+ (if vl-memory vl-memory "")
+ "*/")
(concat vl-bits))
tpl-net (concat port
(if (and vl-modport
@@ -11157,7 +11239,7 @@ If PAR-VALUES replace final strings with these parameter values."
(for-star
(indent-to (+ (if (< verilog-auto-inst-column 48) 24 16)
verilog-auto-inst-column))
- (verilog-insert " // Implicit .\*\n")) ;For some reason the . or * must be escaped...
+ (verilog-insert " // Implicit .*\n"))
(t
(insert "\n")))))
;;(verilog-auto-inst-port (list "foo" "[5:0]") 10 (list (list "foo" "a@\"(% (+ @ 1) 4)\"a")) "3")
@@ -13316,13 +13398,16 @@ Typing \\[verilog-auto] will make this into:
(sig-list-all (verilog-decls-get-iovars moddecls))
;;
(undecode-sig (or (assoc undecode-name sig-list-all)
- (error "%s: Signal %s not found in design" (verilog-point-text) undecode-name)))
+ (error "%s: Signal `%s' not found in design"
+ (verilog-point-text) undecode-name)))
(undecode-enum (or (verilog-sig-enum undecode-sig)
- (error "%s: Signal %s does not have an enum tag" (verilog-point-text) undecode-name)))
+ (error "%s: Signal `%s' does not have an enum tag"
+ (verilog-point-text) undecode-name)))
;;
(enum-sigs (verilog-signals-not-in
(or (verilog-signals-matching-enum sig-list-consts undecode-enum)
- (error "%s: No state definitions for %s" (verilog-point-text) undecode-enum))
+ (error "%s: No state definitions for `%s'"
+ (verilog-point-text) undecode-enum))
nil))
;;
(one-hot (or
@@ -13518,120 +13603,115 @@ Wilson Snyder (wsnyder@wsnyder.org)."
(unless noninteractive (message "Updating AUTOs..."))
(if (fboundp 'dinotrace-unannotate-all)
(dinotrace-unannotate-all))
- (verilog-save-font-mods
+ ;; Disable change hooks for speed
+ ;; This let can't be part of above let; must restore
+ ;; after-change-functions before font-lock resumes
+ (verilog-save-font-no-change-functions
(let ((oldbuf (if (not (buffer-modified-p))
- (buffer-string)))
- (case-fold-search verilog-case-fold)
- ;; Cache directories; we don't write new files, so can't change
- (verilog-dir-cache-preserving t)
- ;; Cache current module
- (verilog-modi-cache-current-enable t)
- (verilog-modi-cache-current-max (point-min)) ; IE it's invalid
- verilog-modi-cache-current)
- (unwind-protect
- ;; Disable change hooks for speed
- ;; This let can't be part of above let; must restore
- ;; after-change-functions before font-lock resumes
- (verilog-save-no-change-functions
- (verilog-save-scan-cache
- (save-excursion
- ;; Wipe cache; otherwise if we AUTOed a block above this one,
- ;; we'll misremember we have generated IOs, confusing AUTOOUTPUT
- (setq verilog-modi-cache-list nil)
- ;; Local state
- (verilog-read-auto-template-init)
- ;; If we're not in verilog-mode, change syntax table so parsing works right
- (unless (eq major-mode `verilog-mode) (verilog-mode))
- ;; Allow user to customize
- (verilog-run-hooks 'verilog-before-auto-hook)
- ;; Try to save the user from needing to revert-file to reread file local-variables
- (verilog-auto-reeval-locals)
- (verilog-read-auto-lisp-present)
- (verilog-read-auto-lisp (point-min) (point-max))
- (verilog-getopt-flags)
- ;; From here on out, we can cache anything we read from disk
- (verilog-preserve-dir-cache
- ;; These two may seem obvious to do always, but on large includes it can be way too slow
- (when verilog-auto-read-includes
- (verilog-read-includes)
- (verilog-read-defines nil nil t))
- ;; Setup variables due to SystemVerilog expansion
- (verilog-auto-re-search-do "/\\*AUTOLOGIC\\*/" 'verilog-auto-logic-setup)
- ;; This particular ordering is important
- ;; INST: Lower modules correct, no internal dependencies, FIRST
- (verilog-preserve-modi-cache
- ;; Clear existing autos else we'll be screwed by existing ones
- (verilog-delete-auto)
- ;; Injection if appropriate
- (when inject
- (verilog-inject-inst)
- (verilog-inject-sense)
- (verilog-inject-arg))
- ;;
- ;; Do user inserts first, so their code can insert AUTOs
- (verilog-auto-re-search-do "/\\*AUTOINSERTLISP(.*?)\\*/"
- 'verilog-auto-insert-lisp)
- ;; Expand instances before need the signals the instances input/output
- (verilog-auto-re-search-do "/\\*AUTOINSTPARAM\\*/" 'verilog-auto-inst-param)
- (verilog-auto-re-search-do "/\\*AUTOINST\\*/" 'verilog-auto-inst)
- (verilog-auto-re-search-do "\\.\\*" 'verilog-auto-star)
- ;; Doesn't matter when done, but combine it with a common changer
- (verilog-auto-re-search-do "/\\*\\(AUTOSENSE\\|AS\\)\\*/" 'verilog-auto-sense)
- (verilog-auto-re-search-do "/\\*AUTORESET\\*/" 'verilog-auto-reset)
- ;; Must be done before autoin/out as creates a reg
- (verilog-auto-re-search-do "/\\*AUTOASCIIENUM(.*?)\\*/" 'verilog-auto-ascii-enum)
- ;;
- ;; first in/outs from other files
- (verilog-auto-re-search-do "/\\*AUTOINOUTMODPORT(.*?)\\*/" 'verilog-auto-inout-modport)
- (verilog-auto-re-search-do "/\\*AUTOINOUTMODULE(.*?)\\*/" 'verilog-auto-inout-module)
- (verilog-auto-re-search-do "/\\*AUTOINOUTCOMP(.*?)\\*/" 'verilog-auto-inout-comp)
- (verilog-auto-re-search-do "/\\*AUTOINOUTIN(.*?)\\*/" 'verilog-auto-inout-in)
- (verilog-auto-re-search-do "/\\*AUTOINOUTPARAM(.*?)\\*/" 'verilog-auto-inout-param)
- ;; next in/outs which need previous sucked inputs first
- (verilog-auto-re-search-do "/\\*AUTOOUTPUT\\((.*?)\\)?\\*/" 'verilog-auto-output)
- (verilog-auto-re-search-do "/\\*AUTOINPUT\\((.*?)\\)?\\*/" 'verilog-auto-input)
- (verilog-auto-re-search-do "/\\*AUTOINOUT\\((.*?)\\)?\\*/" 'verilog-auto-inout)
- ;; Then tie off those in/outs
- (verilog-auto-re-search-do "/\\*AUTOTIEOFF\\*/" 'verilog-auto-tieoff)
- ;; These can be anywhere after AUTOINSERTLISP
- (verilog-auto-re-search-do "/\\*AUTOUNDEF\\((.*?)\\)?\\*/" 'verilog-auto-undef)
- ;; Wires/regs must be after inputs/outputs
- (verilog-auto-re-search-do "/\\*AUTOASSIGNMODPORT(.*?)\\*/" 'verilog-auto-assign-modport)
- (verilog-auto-re-search-do "/\\*AUTOLOGIC\\*/" 'verilog-auto-logic)
- (verilog-auto-re-search-do "/\\*AUTOWIRE\\*/" 'verilog-auto-wire)
- (verilog-auto-re-search-do "/\\*AUTOREG\\*/" 'verilog-auto-reg)
- (verilog-auto-re-search-do "/\\*AUTOREGINPUT\\*/" 'verilog-auto-reg-input)
- ;; outputevery needs AUTOOUTPUTs done first
- (verilog-auto-re-search-do "/\\*AUTOOUTPUTEVERY\\((.*?)\\)?\\*/" 'verilog-auto-output-every)
- ;; After we've created all new variables
- (verilog-auto-re-search-do "/\\*AUTOUNUSED\\*/" 'verilog-auto-unused)
- ;; Must be after all inputs outputs are generated
- (verilog-auto-re-search-do "/\\*AUTOARG\\*/" 'verilog-auto-arg)
- ;; User inserts
- (verilog-auto-re-search-do "/\\*AUTOINSERTLAST(.*?)\\*/" 'verilog-auto-insert-last)
- ;; Fix line numbers (comments only)
- (when verilog-auto-inst-template-numbers
- (verilog-auto-templated-rel))
- (when verilog-auto-template-warn-unused
- (verilog-auto-template-lint))))
- ;;
- (verilog-run-hooks 'verilog-auto-hook)
- ;;
- (when verilog-auto-delete-trailing-whitespace
- (verilog-delete-trailing-whitespace))
- ;;
- (set (make-local-variable 'verilog-auto-update-tick) (buffer-chars-modified-tick))
- ;;
- ;; If end result is same as when started, clear modified flag
- (cond ((and oldbuf (equal oldbuf (buffer-string)))
- (set-buffer-modified-p nil)
- (unless noninteractive (message "Updating AUTOs...done (no changes)")))
- (t (unless noninteractive (message "Updating AUTOs...done"))))
- ;; End of after-change protection
- )))
- ;; Unwind forms
- ;; Currently handled in verilog-save-font-mods
- ))))
+ (buffer-string)))
+ (case-fold-search verilog-case-fold)
+ ;; Cache directories; we don't write new files, so can't change
+ (verilog-dir-cache-preserving t)
+ ;; Cache current module
+ (verilog-modi-cache-current-enable t)
+ (verilog-modi-cache-current-max (point-min)) ; IE it's invalid
+ verilog-modi-cache-current)
+ (verilog-save-scan-cache
+ (save-excursion
+ ;; Wipe cache; otherwise if we AUTOed a block above this one,
+ ;; we'll misremember we have generated IOs, confusing AUTOOUTPUT
+ (setq verilog-modi-cache-list nil)
+ ;; Local state
+ (verilog-read-auto-template-init)
+ ;; If we're not in verilog-mode, change syntax table so parsing works right
+ (unless (eq major-mode `verilog-mode) (verilog-mode))
+ ;; Allow user to customize
+ (verilog-run-hooks 'verilog-before-auto-hook)
+ ;; Try to save the user from needing to revert-file to reread file local-variables
+ (verilog-auto-reeval-locals)
+ (verilog-read-auto-lisp-present)
+ (verilog-read-auto-lisp (point-min) (point-max))
+ (verilog-getopt-flags)
+ ;; From here on out, we can cache anything we read from disk
+ (verilog-preserve-dir-cache
+ ;; These two may seem obvious to do always, but on large includes it can be way too slow
+ (when verilog-auto-read-includes
+ (verilog-read-includes)
+ (verilog-read-defines nil nil t))
+ ;; Setup variables due to SystemVerilog expansion
+ (verilog-auto-re-search-do "/\\*AUTOLOGIC\\*/" 'verilog-auto-logic-setup)
+ ;; This particular ordering is important
+ ;; INST: Lower modules correct, no internal dependencies, FIRST
+ (verilog-preserve-modi-cache
+ ;; Clear existing autos else we'll be screwed by existing ones
+ (verilog-delete-auto-buffer)
+ ;; Injection if appropriate
+ (when inject
+ (verilog-inject-inst)
+ (verilog-inject-sense)
+ (verilog-inject-arg))
+ ;;
+ ;; Do user inserts first, so their code can insert AUTOs
+ (verilog-auto-re-search-do "/\\*AUTOINSERTLISP(.*?)\\*/"
+ 'verilog-auto-insert-lisp)
+ ;; Expand instances before need the signals the instances input/output
+ (verilog-auto-re-search-do "/\\*AUTOINSTPARAM\\*/" 'verilog-auto-inst-param)
+ (verilog-auto-re-search-do "/\\*AUTOINST\\*/" 'verilog-auto-inst)
+ (verilog-auto-re-search-do "\\.\\*" 'verilog-auto-star)
+ ;; Doesn't matter when done, but combine it with a common changer
+ (verilog-auto-re-search-do "/\\*\\(AUTOSENSE\\|AS\\)\\*/" 'verilog-auto-sense)
+ (verilog-auto-re-search-do "/\\*AUTORESET\\*/" 'verilog-auto-reset)
+ ;; Must be done before autoin/out as creates a reg
+ (verilog-auto-re-search-do "/\\*AUTOASCIIENUM(.*?)\\*/" 'verilog-auto-ascii-enum)
+ ;;
+ ;; first in/outs from other files
+ (verilog-auto-re-search-do "/\\*AUTOINOUTMODPORT(.*?)\\*/" 'verilog-auto-inout-modport)
+ (verilog-auto-re-search-do "/\\*AUTOINOUTMODULE(.*?)\\*/" 'verilog-auto-inout-module)
+ (verilog-auto-re-search-do "/\\*AUTOINOUTCOMP(.*?)\\*/" 'verilog-auto-inout-comp)
+ (verilog-auto-re-search-do "/\\*AUTOINOUTIN(.*?)\\*/" 'verilog-auto-inout-in)
+ (verilog-auto-re-search-do "/\\*AUTOINOUTPARAM(.*?)\\*/" 'verilog-auto-inout-param)
+ ;; next in/outs which need previous sucked inputs first
+ (verilog-auto-re-search-do "/\\*AUTOOUTPUT\\((.*?)\\)?\\*/" 'verilog-auto-output)
+ (verilog-auto-re-search-do "/\\*AUTOINPUT\\((.*?)\\)?\\*/" 'verilog-auto-input)
+ (verilog-auto-re-search-do "/\\*AUTOINOUT\\((.*?)\\)?\\*/" 'verilog-auto-inout)
+ ;; Then tie off those in/outs
+ (verilog-auto-re-search-do "/\\*AUTOTIEOFF\\*/" 'verilog-auto-tieoff)
+ ;; These can be anywhere after AUTOINSERTLISP
+ (verilog-auto-re-search-do "/\\*AUTOUNDEF\\((.*?)\\)?\\*/" 'verilog-auto-undef)
+ ;; Wires/regs must be after inputs/outputs
+ (verilog-auto-re-search-do "/\\*AUTOASSIGNMODPORT(.*?)\\*/" 'verilog-auto-assign-modport)
+ (verilog-auto-re-search-do "/\\*AUTOLOGIC\\*/" 'verilog-auto-logic)
+ (verilog-auto-re-search-do "/\\*AUTOWIRE\\*/" 'verilog-auto-wire)
+ (verilog-auto-re-search-do "/\\*AUTOREG\\*/" 'verilog-auto-reg)
+ (verilog-auto-re-search-do "/\\*AUTOREGINPUT\\*/" 'verilog-auto-reg-input)
+ ;; outputevery needs AUTOOUTPUTs done first
+ (verilog-auto-re-search-do "/\\*AUTOOUTPUTEVERY\\((.*?)\\)?\\*/" 'verilog-auto-output-every)
+ ;; After we've created all new variables
+ (verilog-auto-re-search-do "/\\*AUTOUNUSED\\*/" 'verilog-auto-unused)
+ ;; Must be after all inputs outputs are generated
+ (verilog-auto-re-search-do "/\\*AUTOARG\\*/" 'verilog-auto-arg)
+ ;; User inserts
+ (verilog-auto-re-search-do "/\\*AUTOINSERTLAST(.*?)\\*/" 'verilog-auto-insert-last)
+ ;; Fix line numbers (comments only)
+ (when verilog-auto-inst-template-numbers
+ (verilog-auto-templated-rel))
+ (when verilog-auto-template-warn-unused
+ (verilog-auto-template-lint))))
+ ;;
+ (verilog-run-hooks 'verilog-auto-hook)
+ ;;
+ (when verilog-auto-delete-trailing-whitespace
+ (verilog-delete-trailing-whitespace))
+ ;;
+ (set (make-local-variable 'verilog-auto-update-tick) (buffer-chars-modified-tick))
+ ;;
+ ;; If end result is same as when started, clear modified flag
+ (cond ((and oldbuf (equal oldbuf (buffer-string)))
+ (verilog-restore-buffer-modified-p nil)
+ (unless noninteractive (message "Updating AUTOs...done (no changes)")))
+ (t (unless noninteractive (message "Updating AUTOs...done"))))
+ ;; End of save-cache
+ )))))
;;; Skeletons:
;;
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el
index d883d4fc4d..2fc24a8cb3 100644
--- a/lisp/progmodes/which-func.el
+++ b/lisp/progmodes/which-func.el
@@ -1,4 +1,4 @@
-;;; which-func.el --- print current function in mode line
+;;; which-func.el --- print current function in mode line -*- lexical-binding:t -*-
;; Copyright (C) 1994, 1997-1998, 2001-2016 Free Software Foundation,
;; Inc.
@@ -80,7 +80,6 @@
"List of major modes for which Which Function mode should be used.
For other modes it is disabled. If this is equal to t,
then Which Function mode is enabled in any major mode that supports it."
- :group 'which-func
:version "24.3" ; explicit list -> t
:type '(choice (const :tag "All modes" t)
(repeat (symbol :tag "Major mode"))))
@@ -91,13 +90,11 @@ This means that Which Function mode won't really do anything
until you use Imenu, in these modes. Note that files
larger than `which-func-maxout' behave in this way too;
Which Function mode doesn't do anything until you use Imenu."
- :group 'which-func
:type '(repeat (symbol :tag "Major mode")))
(defcustom which-func-maxout 500000
"Don't automatically compute the Imenu menu if buffer is this big or bigger.
Zero means compute the Imenu menu regardless of size."
- :group 'which-func
:type 'integer)
(defvar which-func-keymap
@@ -137,8 +134,7 @@ Zero means compute the Imenu menu regardless of size."
:foreground "Blue1")
(t
:foreground "LightSkyBlue"))
- "Face used to highlight mode line function names."
- :group 'which-func)
+ "Face used to highlight mode line function names.")
(defcustom which-func-format
`("["
@@ -152,7 +148,6 @@ mouse-3: go to end")
"]")
"Format for displaying the function in the mode line."
:version "24.2" ; added mouse-face; 24point2 is correct
- :group 'which-func
:type 'sexp)
;;;###autoload (put 'which-func-format 'risky-local-variable t)
@@ -193,14 +188,16 @@ This makes a difference only if `which-function-mode' is non-nil.")
(add-hook 'find-file-hook 'which-func-ff-hook t)
+(defun which-func-try-to-enable ()
+ (unless (or (not which-function-mode)
+ (local-variable-p 'which-func-mode))
+ (setq which-func-mode (or (eq which-func-modes t)
+ (member major-mode which-func-modes)))))
+
(defun which-func-ff-hook ()
"File find hook for Which Function mode.
It creates the Imenu index for the buffer, if necessary."
- (unless (local-variable-p 'which-func-mode)
- (setq which-func-mode
- (and which-function-mode
- (or (eq which-func-modes t)
- (member major-mode which-func-modes)))))
+ (which-func-try-to-enable)
(condition-case err
(if (and which-func-mode
@@ -239,6 +236,13 @@ It creates the Imenu index for the buffer, if necessary."
(defvar which-func-update-timer nil)
+(unless (or (assq 'which-func-mode mode-line-misc-info)
+ (assq 'which-function-mode mode-line-misc-info))
+ (add-to-list 'mode-line-misc-info
+ '(which-function-mode ;Only display if mode is enabled.
+ (which-func-mode ;Only display if buffer supports it.
+ ("" which-func-format " ")))))
+
;; This is the name people would normally expect.
;;;###autoload
(define-minor-mode which-function-mode
@@ -254,17 +258,12 @@ in certain major modes."
(when (timerp which-func-update-timer)
(cancel-timer which-func-update-timer))
(setq which-func-update-timer nil)
- (if which-function-mode
- ;;Turn it on
- (progn
- (setq which-func-update-timer
- (run-with-idle-timer idle-update-delay t #'which-func-update))
- (dolist (buf (buffer-list))
- (with-current-buffer buf
- (unless (local-variable-p 'which-func-mode)
- (setq which-func-mode
- (or (eq which-func-modes t)
- (member major-mode which-func-modes)))))))))
+ (when which-function-mode
+ ;;Turn it on.
+ (setq which-func-update-timer
+ (run-with-idle-timer idle-update-delay t #'which-func-update))
+ (dolist (buf (buffer-list))
+ (with-current-buffer buf (which-func-try-to-enable)))))
(defvar which-function-imenu-failed nil
"Locally t in a buffer if `imenu--make-index-alist' found nothing there.")
diff --git a/lisp/ps-mule.el b/lisp/ps-mule.el
index f8a1154412..f14cd0d81c 100644
--- a/lisp/ps-mule.el
+++ b/lisp/ps-mule.el
@@ -1232,7 +1232,7 @@ V%s 0 /%s-latin1 /%s Latin1Encoding put\n"
(provide 'ps-mule)
;; Local Variables:
-;; generated-autoload-file: "ps-print.el"
+;; generated-autoload-file: "ps-print-loaddefs.el"
;; End:
;;; ps-mule.el ends here
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 1167b9c053..2ea0919c68 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -1475,6 +1475,8 @@ Please send all bug fixes and enhancements to
;; Load XEmacs/Emacs definitions
(require 'ps-def)
+;; autoloads for secondary file
+(require 'ps-print-loaddefs)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; User Variables:
@@ -6588,79 +6590,6 @@ If FACE is not a valid face name, use default face."
(unless noninteractive
(add-hook 'kill-emacs-hook #'ps-kill-emacs-check))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; To make this file smaller, some commands go in a separate file.
-;; But autoload them here to make the separation invisible.
-
-;;;### (autoloads nil "ps-mule" "ps-mule.el" "4a263b7a727e853f2e6672922c4e5755")
-;;; Generated autoloads from ps-mule.el
-
-(defvar ps-multibyte-buffer nil "\
-Specifies the multi-byte buffer handling.
-
-Valid values are:
-
- nil This is the value to use the default settings;
- by default, this only works to print buffers with
- only ASCII and Latin characters. But this default
- setting can be changed by setting the variable
- `ps-mule-font-info-database-default' differently.
- The initial value of this variable is
- `ps-mule-font-info-database-latin' (see
- documentation).
-
- `non-latin-printer' This is the value to use when you have a Japanese
- or Korean PostScript printer and want to print
- buffer with ASCII, Latin-1, Japanese (JISX0208 and
- JISX0201-Kana) and Korean characters. At present,
- it was not tested with the Korean characters
- printing. If you have a korean PostScript printer,
- please, test it.
-
- `bdf-font' This is the value to use when you want to print
- buffer with BDF fonts. BDF fonts include both latin
- and non-latin fonts. BDF (Bitmap Distribution
- Format) is a format used for distributing X's font
- source file. BDF fonts are included in
- `intlfonts-1.2' which is a collection of X11 fonts
- for all characters supported by Emacs. In order to
- use this value, be sure to have installed
- `intlfonts-1.2' and set the variable
- `bdf-directory-list' appropriately (see ps-bdf.el for
- documentation of this variable).
-
- `bdf-font-except-latin' This is like `bdf-font' except that it uses
- PostScript default fonts to print ASCII and Latin-1
- characters. This is convenient when you want or
- need to use both latin and non-latin characters on
- the same buffer. See `ps-font-family',
- `ps-header-font-family' and `ps-font-info-database'.
-
-Any other value is treated as nil.")
-
-(custom-autoload 'ps-multibyte-buffer "ps-mule" t)
-
-(autoload 'ps-mule-initialize "ps-mule" "\
-Initialize global data for printing multi-byte characters.
-
-\(fn)" nil nil)
-
-(autoload 'ps-mule-begin-job "ps-mule" "\
-Start printing job for multi-byte chars between FROM and TO.
-It checks if all multi-byte characters in the region are printable or not.
-
-\(fn FROM TO)" nil nil)
-
-(autoload 'ps-mule-end-job "ps-mule" "\
-Finish printing job for multi-byte chars.
-
-\(fn)" nil nil)
-
-;;;***
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
(provide 'ps-print)
;;; ps-print.el ends here
diff --git a/lisp/recentf.el b/lisp/recentf.el
index dc9489752f..e30e6468eb 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -1124,8 +1124,9 @@ IGNORE arguments."
(recentf-dialog (format "*%s - Edit list*" recentf-menu-title)
(set (make-local-variable 'recentf-edit-list) nil)
(widget-insert
- "Click on OK to delete selected files from the recent list.
-Click on Cancel or type `q' to cancel.\n")
+ (format-message
+ "Click on OK to delete selected files from the recent list.
+Click on Cancel or type `q' to cancel.\n"))
;; Insert the list of files as checkboxes
(dolist (item recentf-list)
(widget-create 'checkbox
diff --git a/lisp/rect.el b/lisp/rect.el
index 70a542d672..13499d686f 100644
--- a/lisp/rect.el
+++ b/lisp/rect.el
@@ -473,10 +473,15 @@ Called from a program, takes three args; START, END and STRING."
#'rectangle--string-erase-preview nil t)
(add-hook 'post-command-hook
#'rectangle--string-preview nil t))
- (read-string (format "String rectangle (default %s): "
- (or (car string-rectangle-history) ""))
- nil 'string-rectangle-history
+ (read-string (format "String rectangle (default %s): "
+ (or (car string-rectangle-history) ""))
+ nil 'string-rectangle-history
(car string-rectangle-history)))))))
+ ;; If we undo this change, we want to have the point back where we
+ ;; are now, and not after the first line in the rectangle (which is
+ ;; the first line to be changed by the following command).
+ (unless (eq buffer-undo-list t)
+ (push (point) buffer-undo-list))
(goto-char
(apply-on-rectangle 'string-rectangle-line start end string t)))
diff --git a/lisp/gnus/registry.el b/lisp/registry.el
index 9e6babcc35..e8bc6f5545 100644
--- a/lisp/gnus/registry.el
+++ b/lisp/registry.el
@@ -129,7 +129,7 @@
:type hash-table
:documentation "The data hashtable.")))
-(defmethod initialize-instance :BEFORE ((this registry-db) slots)
+(cl-defmethod initialize-instance :before ((this registry-db) slots)
"Check whether a registry object needs to be upgraded."
;; Hardcoded upgrade routines. Version 0.1 to 0.2 requires the
;; :max-soft slot to disappear, and the :max-hard slot to be renamed
@@ -146,7 +146,7 @@
(cl-remf slots :max-hard)
(cl-remf slots :max-soft))))
-(defmethod initialize-instance :AFTER ((this registry-db) slots)
+(cl-defmethod initialize-instance :after ((this registry-db) slots)
"Set value of data slot of THIS after initialization."
(with-slots (data tracker) this
(unless (member :data slots)
@@ -155,7 +155,7 @@
(unless (member :tracker slots)
(setq tracker (make-hash-table :size 100 :rehash-size 2.0)))))
-(defmethod registry-lookup ((db registry-db) keys)
+(cl-defmethod registry-lookup ((db registry-db) keys)
"Search for KEYS in the registry-db THIS.
Returns an alist of the key followed by the entry in a list, not a cons cell."
(let ((data (oref db data)))
@@ -166,7 +166,7 @@ Returns an alist of the key followed by the entry in a list, not a cons cell."
(list k (gethash k data))))
keys))))
-(defmethod registry-lookup-breaks-before-lexbind ((db registry-db) keys)
+(cl-defmethod registry-lookup-breaks-before-lexbind ((db registry-db) keys)
"Search for KEYS in the registry-db THIS.
Returns an alist of the key followed by the entry in a list, not a cons cell."
(let ((data (oref db data)))
@@ -175,11 +175,11 @@ Returns an alist of the key followed by the entry in a list, not a cons cell."
when (gethash key data)
collect (list key (gethash key data))))))
-(defmethod registry-lookup-secondary ((db registry-db) tracksym
- &optional create)
+(cl-defmethod registry-lookup-secondary ((db registry-db) tracksym
+ &optional create)
"Search for TRACKSYM in the registry-db THIS.
When CREATE is not nil, create the secondary index hashtable if needed."
- (let ((h (gethash tracksym (oref db :tracker))))
+ (let ((h (gethash tracksym (oref db tracker))))
(if h
h
(when create
@@ -188,8 +188,8 @@ When CREATE is not nil, create the secondary index hashtable if needed."
(oref db tracker))
(gethash tracksym (oref db tracker))))))
-(defmethod registry-lookup-secondary-value ((db registry-db) tracksym val
- &optional set)
+(cl-defmethod registry-lookup-secondary-value ((db registry-db) tracksym val
+ &optional set)
"Search for TRACKSYM with value VAL in the registry-db THIS.
When SET is not nil, set it for VAL (use t for an empty list)."
;; either we're asked for creation or there should be an existing index
@@ -220,7 +220,7 @@ When SET is not nil, set it for VAL (use t for an empty list)."
(or found
(registry--match mode entry (cdr-safe check-list))))))
-(defmethod registry-search ((db registry-db) &rest spec)
+(cl-defmethod registry-search ((db registry-db) &rest spec)
"Search for SPEC across the registry-db THIS.
For example calling with `:member \\='(a 1 2)' will match entry \((a 3 1)).
Calling with `:all t' (any non-nil value) will match all.
@@ -241,7 +241,7 @@ The test order is to check :all first, then :member, then :regex."
(and regex (registry--match :regex v regex)))
collect k))))
-(defmethod registry-delete ((db registry-db) keys assert &rest spec)
+(cl-defmethod registry-delete ((db registry-db) keys assert &rest spec)
"Delete KEYS from the registry-db THIS.
If KEYS is nil, use SPEC to do a search.
Updates the secondary ('tracked') indices as well.
@@ -274,17 +274,17 @@ With assert non-nil, errors out if the key does not exist already."
(remhash key data)))
keys))
-(defmethod registry-size ((db registry-db))
+(cl-defmethod registry-size ((db registry-db))
"Returns the size of the registry-db object THIS.
This is the key count of the `data' slot."
(hash-table-count (oref db data)))
-(defmethod registry-full ((db registry-db))
+(cl-defmethod registry-full ((db registry-db))
"Checks if registry-db THIS is full."
(>= (registry-size db)
(oref db max-size)))
-(defmethod registry-insert ((db registry-db) key entry)
+(cl-defmethod registry-insert ((db registry-db) key entry)
"Insert ENTRY under KEY into the registry-db THIS.
Updates the secondary ('tracked') indices as well.
Errors out if the key exists already."
@@ -308,7 +308,7 @@ Errors out if the key exists already."
(registry-lookup-secondary-value db tr val value-keys))))
entry)
-(defmethod registry-reindex ((db registry-db))
+(cl-defmethod registry-reindex ((db registry-db))
"Rebuild the secondary indices of registry-db THIS."
(let ((count 0)
(expected (* (length (oref db tracked)) (registry-size db))))
@@ -327,7 +327,7 @@ Errors out if the key exists already."
(registry-lookup-secondary-value db tr val value-keys))))
(oref db data))))))
-(defmethod registry-prune ((db registry-db) &optional sortfunc)
+(cl-defmethod registry-prune ((db registry-db) &optional sortfunc)
"Prunes the registry-db object DB.
Attempts to prune the number of entries down to \(*
@@ -354,7 +354,8 @@ Returns the number of deleted entries."
(length (registry-delete db candidates nil)))
0)))
-(defmethod registry-collect-prune-candidates ((db registry-db) limit sortfunc)
+(cl-defmethod registry-collect-prune-candidates ((db registry-db)
+ limit sortfunc)
"Collects pruning candidates from the registry-db object DB.
Proposes only entries without the :precious keys, and attempts to
diff --git a/lisp/replace.el b/lisp/replace.el
index eb5e0cfffc..e6124f44c9 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -1835,6 +1835,8 @@ C-w to delete match and recursive edit,
C-l to clear the screen, redisplay, and offer same replacement again,
! to replace all remaining matches in this buffer with no more questions,
^ to move point back to previous match,
+u to undo previous replacement,
+U to undo all replacements,
E to edit the replacement string.
In multi-buffer replacements type `Y' to replace all remaining
matches in all remaining buffers with no more questions,
@@ -1864,6 +1866,8 @@ in the current buffer."
(define-key map "\C-l" 'recenter)
(define-key map "!" 'automatic)
(define-key map "^" 'backup)
+ (define-key map "u" 'undo)
+ (define-key map "U" 'undo-all)
(define-key map "\C-h" 'help)
(define-key map [f1] 'help)
(define-key map [help] 'help)
@@ -1889,7 +1893,7 @@ The valid answers include `act', `skip', `act-and-show',
`act-and-exit', `exit', `exit-prefix', `recenter', `scroll-up',
`scroll-down', `scroll-other-window', `scroll-other-window-down',
`edit', `edit-replacement', `delete-and-edit', `automatic',
-`backup', `quit', and `help'.
+`backup', `undo', `undo-all', `quit', and `help'.
This keymap is used by `y-or-n-p' as well as `query-replace'.")
@@ -2145,6 +2149,10 @@ It must return a string."
(noedit nil)
(keep-going t)
(stack nil)
+ (search-string-replaced nil) ; last string matching `from-string'
+ (next-replacement-replaced nil) ; replacement string
+ ; (substituted regexp)
+ (last-was-undo)
(replace-count 0)
(skip-read-only-count 0)
(skip-filtered-count 0)
@@ -2341,8 +2349,28 @@ It must return a string."
(match-beginning 0) (match-end 0)
start end search-string
regexp-flag delimited-flag case-fold-search backward)
- ;; Bind message-log-max so we don't fill up the message log
- ;; with a bunch of identical messages.
+ ;; Obtain the matched groups: needed only when
+ ;; regexp-flag non nil.
+ (when (and last-was-undo regexp-flag)
+ (setq last-was-undo nil
+ real-match-data
+ (save-excursion
+ (goto-char (match-beginning 0))
+ (looking-at search-string)
+ (match-data t real-match-data))))
+ ;; Matched string and next-replacement-replaced
+ ;; stored in stack.
+ (setq search-string-replaced (buffer-substring-no-properties
+ (match-beginning 0)
+ (match-end 0))
+ next-replacement-replaced
+ (query-replace-descr
+ (save-match-data
+ (set-match-data real-match-data)
+ (match-substitute-replacement
+ next-replacement nocasify literal))))
+ ;; Bind message-log-max so we don't fill up the
+ ;; message log with a bunch of identical messages.
(let ((message-log-max nil)
(replacement-presentation
(if query-replace-show-replacement
@@ -2355,8 +2383,8 @@ It must return a string."
(query-replace-descr from-string)
(query-replace-descr replacement-presentation)))
(setq key (read-event))
- ;; Necessary in case something happens during read-event
- ;; that clobbers the match data.
+ ;; Necessary in case something happens during
+ ;; read-event that clobbers the match data.
(set-match-data real-match-data)
(setq key (vector key))
(setq def (lookup-key map key))
@@ -2367,7 +2395,8 @@ It must return a string."
(concat "Query replacing "
(if delimited-flag
(or (and (symbolp delimited-flag)
- (get delimited-flag 'isearch-message-prefix))
+ (get delimited-flag
+ 'isearch-message-prefix))
"word ") "")
(if regexp-flag "regexp " "")
(if backward "backward " "")
@@ -2394,6 +2423,73 @@ It must return a string."
(message "No previous match")
(ding 'no-terminate)
(sit-for 1)))
+ ((or (eq def 'undo) (eq def 'undo-all))
+ (if (null stack)
+ (progn
+ (message "Nothing to undo")
+ (ding 'no-terminate)
+ (sit-for 1))
+ (let ((stack-idx 0)
+ (stack-len (length stack))
+ (num-replacements 0)
+ search-string
+ next-replacement)
+ (while (and (< stack-idx stack-len)
+ stack
+ (null replaced))
+ (let* ((elt (nth stack-idx stack)))
+ (setq
+ stack-idx (1+ stack-idx)
+ replaced (nth 1 elt)
+ ;; Bind swapped values
+ ;; (search-string <--> replacement)
+ search-string (nth (if replaced 4 3) elt)
+ next-replacement (nth (if replaced 3 4) elt)
+ search-string-replaced search-string
+ next-replacement-replaced next-replacement)
+
+ (when (and (= stack-idx stack-len)
+ (null replaced)
+ (zerop num-replacements))
+ (message "Nothing to undo")
+ (ding 'no-terminate)
+ (sit-for 1))
+
+ (when replaced
+ (setq stack (nthcdr stack-idx stack))
+ (goto-char (nth 0 elt))
+ (set-match-data (nth 2 elt))
+ (setq real-match-data
+ (save-excursion
+ (goto-char (match-beginning 0))
+ (looking-at search-string)
+ (match-data t (nth 2 elt)))
+ noedit
+ (replace-match-maybe-edit
+ next-replacement nocasify literal
+ noedit real-match-data backward)
+ replace-count (1- replace-count)
+ real-match-data
+ (save-excursion
+ (goto-char (match-beginning 0))
+ (looking-at next-replacement)
+ (match-data t (nth 2 elt))))
+ ;; Set replaced nil to keep in loop
+ (when (eq def 'undo-all)
+ (setq replaced nil
+ stack-len (- stack-len stack-idx)
+ stack-idx 0
+ num-replacements
+ (1+ num-replacements))))))
+ (when (and (eq def 'undo-all)
+ (null (zerop num-replacements)))
+ (message "Undid %d %s" num-replacements
+ (if (= num-replacements 1)
+ "replacement"
+ "replacements"))
+ (ding 'no-terminate)
+ (sit-for 1)))
+ (setq replaced nil last-was-undo t)))
((eq def 'act)
(or replaced
(setq noedit
@@ -2516,9 +2612,12 @@ It must return a string."
(match-beginning 0)
(match-end 0)
(current-buffer))
- (match-data t)))
- stack))))))
-
+ (match-data t))
+ search-string-replaced
+ next-replacement-replaced)
+ stack)
+ (setq next-replacement-replaced nil
+ search-string-replaced nil))))))
(replace-dehighlight))
(or unread-command-events
(message "Replaced %d occurrence%s%s"
diff --git a/lisp/gnus/rtree.el b/lisp/rtree.el
index 662e043669..662e043669 100644
--- a/lisp/gnus/rtree.el
+++ b/lisp/rtree.el
diff --git a/lisp/scroll-bar.el b/lisp/scroll-bar.el
index 5cfa2c4353..e5fe31675d 100644
--- a/lisp/scroll-bar.el
+++ b/lisp/scroll-bar.el
@@ -148,8 +148,7 @@ created in the future."
"Return non-nil when horizontal scroll bars are available on this system."
(and (display-graphic-p)
(boundp 'x-toolkit-scroll-bars)
- x-toolkit-scroll-bars
- (not (eq (window-system) 'ns))))
+ x-toolkit-scroll-bars))
(define-minor-mode horizontal-scroll-bar-mode
"Toggle horizontal scroll bars on all frames (Horizontal Scroll Bar mode).
@@ -184,9 +183,7 @@ when they are turned on; if it is nil, they go on the left."
(interactive "P")
(if (null arg)
(setq arg
- (if (cdr (assq 'vertical-scroll-bars
- (frame-parameters (selected-frame))))
- -1 1))
+ (if (frame-parameter nil 'vertical-scroll-bars) -1 1))
(setq arg (prefix-numeric-value arg)))
(modify-frame-parameters
(selected-frame)
@@ -200,9 +197,7 @@ With ARG, turn vertical scroll bars on if and only if ARG is positive."
(interactive "P")
(if (null arg)
(setq arg
- (if (cdr (assq 'horizontal-scroll-bars
- (frame-parameters (selected-frame))))
- -1 1))
+ (if (frame-parameter nil 'horizontal-scroll-bars) -1 1))
(setq arg (prefix-numeric-value arg)))
(modify-frame-parameters
(selected-frame)
diff --git a/lisp/server.el b/lisp/server.el
index 524382073f..53009849e2 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -255,6 +255,7 @@ This means that the server should not kill the buffer when you say you
are done with it in the server.")
(make-variable-buffer-local 'server-existing-buffer)
+;;;###autoload
(defcustom server-name "server"
"The name of the Emacs server, if this Emacs process creates one.
The command `server-start' makes use of this. It should not be
@@ -655,6 +656,7 @@ server or call `\\[server-force-delete]' to forcibly disconnect it."))
:noquery t
:sentinel #'server-sentinel
:filter #'server-process-filter
+ :use-external-socket t
;; We must receive file names without being decoded.
;; Those are decoded by server-process-filter according
;; to file-name-coding-system. Also don't get
@@ -782,7 +784,7 @@ This handles splitting the command if it would be bigger than
;; We have to split the string
(setq part (substring qtext 0 (- server-msg-size (length prefix) 1)))
;; Don't split in the middle of a quote sequence
- (if (string-match "\\(^\\|[^&]\\)\\(&&\\)+$" part)
+ (if (string-match "\\(^\\|[^&]\\)&\\(&&\\)*$" part)
;; There is an uneven number of & at the end
(setq part (substring part 0 -1)))
(setq qtext (substring qtext (length part)))
diff --git a/lisp/ses.el b/lisp/ses.el
index ab9f0715fd..c80415e1e1 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -1,3 +1,4 @@
+
;;; ses.el -- Simple Emacs Spreadsheet -*- lexical-binding:t -*-
;; Copyright (C) 2002-2016 Free Software Foundation, Inc.
@@ -275,12 +276,15 @@ Each function is called with ARG=1."
"Display properties to create a raised box for cells in the header line.")
(defconst ses-standard-printer-functions
- '(ses-center ses-center-span ses-dashfill ses-dashfill-span
- ses-tildefill-span)
- "List of print functions to be included in initial history of printer
-functions. None of these standard-printer functions is suitable for use as a
-column printer or a global-default printer because they invoke the column or
-default printer and then modify its output.")
+ '(ses-center
+ ses-center-span ses-dashfill ses-dashfill-span
+ ses-tildefill-span
+ ses-prin1)
+ "List of print functions to be included in initial history of
+printer functions. None of these standard-printer functions,
+except function `ses-prin1', is suitable for use as a column
+printer or a global-default printer because they invoke the
+column or default printer and then modify its output.")
;;----------------------------------------------------------------------------
@@ -561,7 +565,14 @@ definition."
(cond
((functionp printer) printer)
((stringp printer)
- `(lambda (x) (format ,printer x)))
+ `(lambda (x)
+ (if (null x) ""
+ (format ,printer x))))
+ ((stringp (car-safe printer))
+ `(lambda (x)
+ (if (null x) ""
+ (setq ses-call-printer-return t)
+ (format ,(car printer) x))))
(t (error "Invalid printer %S" printer))))
(defun ses--local-printer (name def)
@@ -1319,7 +1330,7 @@ printer signaled one (and \"%s\" is used as the default printer), else nil."
(and locprn
(ses--locprn-compiled locprn))))
printer)
- (or value "")))
+ value))
(if (stringp value)
value
(or (stringp (car-safe value))
@@ -1328,7 +1339,7 @@ printer signaled one (and \"%s\" is used as the default printer), else nil."
(car value))))
(error
(setq ses-call-printer-return signal)
- (prin1-to-string value t))))
+ (ses-prin1 value))))
(defun ses-adjust-print-width (col change)
"Insert CHANGE spaces in front of column COL, or at end of line if
@@ -1539,7 +1550,8 @@ Sets `ses-relocate-return' to `delete' if cell-references were removed."
(if (setq rowcol (ses-sym-rowcol formula))
(ses-relocate-symbol formula rowcol
startrow startcol rowincr colincr)
- formula) ; Pass through as-is.
+ ;; Constants pass through as-is.
+ formula)
(dolist (cur formula)
(setq rowcol (ses-sym-rowcol cur))
(cond
@@ -2200,7 +2212,17 @@ Based on the current set of columns and `window-hscroll' position."
(defun ses-jump (sym)
"Move point to cell SYM."
- (interactive "SJump to cell: ")
+ (interactive (let* (names
+ (s (completing-read
+ "Jump to cell: "
+ (and ses--named-cell-hashmap
+ (progn (maphash (lambda (key val) (push (symbol-name key) names))
+ ses--named-cell-hashmap)
+ names)))))
+ (if
+ (string= s "")
+ (error "Invalid cell name")
+ (list (intern s)))))
(let ((rowcol (ses-sym-rowcol sym)))
(or rowcol (error "Invalid cell name"))
(if (eq (symbol-value sym) '*skip*)
@@ -3221,7 +3243,7 @@ is non-nil. Newlines and tabs in the export text are escaped."
(when (eq (car-safe item) 'quote)
(push "'" result)
(setq item (cadr item)))
- (setq item (prin1-to-string item t))
+ (setq item (ses-prin1 item))
(setq item (replace-regexp-in-string "\t" "\\\\t" item))
(push item result)
(cond
@@ -3463,7 +3485,7 @@ highlighted range in the spreadsheet."
(error "Spreadsheet is broken, both symbols %S and %S refering to cell (%d,%d)" sym old-name row col))
(if new-rowcol
;; the new name is of A1 type, so we test that the coordinate
- ;; inferred from new name
+ ;; inferred from new name
(if (equal new-rowcol rowcol)
(put new-name 'ses-cell rowcol)
(error "Not a valid name for this cell location"))
@@ -3520,34 +3542,67 @@ Uses the value COMPILED-VALUE for this printer."
(ses-begin-change))
(ses-print-cell row col)))))))
-(defun ses-define-local-printer (name)
- "Define a local printer with name NAME."
- (interactive "*SEnter printer name: ")
+
+(defun ses-define-local-printer (name definition)
+ "Define a local printer with name NAME and definition DEFINITION.
+
+NAME shall be a symbol. Use TAB to complete over existing local
+printer names.
+
+DEFINITION shall be either a string formatter, e.g.:
+
+ \"%.2f\" or (\"%.2f\") for left alignment.
+
+or a lambda expression, e.g. for formatting in ISO format dates
+created with a '(calcFunc-date YEAR MONTH DAY)' formula:
+
+ (lambda (x)
+ (cond
+ ((null val) \"\")
+ ((eq (car-safe x) 'date)
+ (let ((calc-format-date '(X YYYY \"-\" MM \"-\" DD)))
+ (math-format-date x)))
+ (t (ses-center-span val ?# 'ses-prin1))))
+
+If NAME is already used to name a local printer function, then
+the current definition is proposed as default value, and the
+function is redefined."
+ (interactive
+ (let (name def already-defined-names)
+ (maphash (lambda (key val) (push (symbol-name key) already-defined-names))
+ ses--local-printer-hashmap)
+ (setq name (completing-read "Enter printer name: " already-defined-names))
+ (when (string= name "")
+ (error "Invalid printer name"))
+ (setq name (intern name))
+ (let* ((cur-printer (gethash name ses--local-printer-hashmap))
+ (default (and cur-printer (ses--locprn-def cur-printer))))
+ (setq def (ses-read-printer (format "Enter definition of printer %S: " name)
+ default)))
+ (list name def)))
+
(let* ((cur-printer (gethash name ses--local-printer-hashmap))
- (default (and (vectorp cur-printer) (ses--locprn-def cur-printer)))
- create-printer
- (new-def
- (ses-read-printer (format "Enter definition of printer %S: " name)
- default)))
+ (default (and cur-printer (ses--locprn-def cur-printer)))
+ create-printer)
(cond
;; cancelled operation => do nothing
- ((eq new-def t))
+ ((eq definition t))
;; no change => do nothing
- ((and (vectorp cur-printer) (equal new-def default)))
+ ((and cur-printer (equal definition default)))
;; re-defined printer
- ((vectorp cur-printer)
+ (cur-printer
(setq create-printer 0)
- (setf (ses--locprn-def cur-printer) new-def)
+ (setf (ses--locprn-def cur-printer) definition)
(ses-refresh-local-printer
name
(setf (ses--locprn-compiled cur-printer)
- (ses-local-printer-compile new-def))))
+ (ses-local-printer-compile definition))))
;; new definition
(t
(setq create-printer 1)
(puthash name
(setq cur-printer
- (ses-make-local-printer-info new-def))
+ (ses-make-local-printer-info definition))
ses--local-printer-hashmap)))
(when create-printer
(let ((printer-def-text
@@ -3571,8 +3626,17 @@ Uses the value COMPILED-VALUE for this printer."
(when (= create-printer 1)
(ses-file-format-extend-parameter-list 3)
(ses-set-parameter 'ses--numlocprn
- (+ ses--numlocprn create-printer))))))))))
+ (1+ ses--numlocprn))))))))))
+
+(defsubst ses-define-if-new-local-printer (name def)
+ "Same as function `ses-define-if-new-local-printer', except
+that the definition occurs only when the local printer does not
+already exists.
+Function `ses-define-if-new-local-printer' is not interactive; it
+is intended for mode hooks to add local printers automatically."
+ (unless (gethash name ses--local-printer-hashmap)
+ (ses-define-local-printer name def)))
;;----------------------------------------------------------------------------
;; Checking formulas for safety
@@ -3742,7 +3806,7 @@ Use `math-format-value' as a printer for Calc objects."
"Return ARGS reversed, with the blank elements (nil and *skip*) removed."
(let (result)
(dolist (cur args)
- (unless (memq cur '(nil *skip* *error*))
+ (unless (memq cur '(nil *skip*))
(push cur result)))
result))
@@ -3783,13 +3847,16 @@ either (ses-range BEG END) or (list ...). The TEST is evaluated."
;; Standard print functions
;;----------------------------------------------------------------------------
-(defun ses-center (value &optional span fill)
+(defun ses-center (value &optional span fill printer)
"Print VALUE, centered within column.
FILL is the fill character for centering (default = space).
SPAN indicates how many additional rightward columns to include
-in width (default = 0)."
- (let ((printer (or (ses-col-printer ses--col) ses--default-printer))
- (width (ses-col-width ses--col))
+in width (default = 0).
+PRINTER is the printer to use for printing the value, default is the
+column printer if any, or the spreadsheet the spreadsheet default
+printer otherwise."
+ (setq printer (or printer (ses-col-printer ses--col) ses--default-printer))
+ (let ((width (ses-col-width ses--col))
half)
(or fill (setq fill ?\s))
(or span (setq span 0))
@@ -3804,7 +3871,7 @@ in width (default = 0)."
(concat half value half
(if (> (% width 2) 0) (char-to-string fill))))))
-(defun ses-center-span (value &optional fill)
+(defun ses-center-span (value &optional fill printer)
"Print VALUE, centered within the span that starts in the current column
and continues until the next nonblank column.
FILL specifies the fill character (default = space)."
@@ -3812,22 +3879,28 @@ FILL specifies the fill character (default = space)."
(while (and (< end ses--numcols)
(memq (ses-cell-value ses--row end) '(nil *skip*)))
(setq end (1+ end)))
- (ses-center value (- end ses--col 1) fill)))
+ (ses-center value (- end ses--col 1) fill printer)))
-(defun ses-dashfill (value &optional span)
+(defun ses-dashfill (value &optional span printer)
"Print VALUE centered using dashes.
SPAN indicates how many rightward columns to include in width (default = 0)."
- (ses-center value span ?-))
+ (ses-center value span ?- printer))
-(defun ses-dashfill-span (value)
+(defun ses-dashfill-span (value &optional printer)
"Print VALUE, centered using dashes within the span that starts in the
current column and continues until the next nonblank column."
- (ses-center-span value ?-))
+ (ses-center-span value ?- printer))
-(defun ses-tildefill-span (value)
+(defun ses-tildefill-span (value &optional printer)
"Print VALUE, centered using tildes within the span that starts in the
current column and continues until the next nonblank column."
- (ses-center-span value ?~))
+ (ses-center-span value ?~ printer))
+
+(defun ses-prin1 (value)
+ "Shorthand for '(prin1-to-string VALUE t)'.
+Useful to handle the default behavior in custom lambda based
+printer functions."
+ (prin1-to-string value t))
(defun ses-unsafe (_value)
"Substitute for an unsafe formula or printer."
diff --git a/lisp/simple.el b/lisp/simple.el
index c08a01faed..51b24bb3ff 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -37,6 +37,27 @@
(defvar compilation-current-error)
(defvar compilation-context-lines)
+(defcustom shell-command-not-erase-buffer nil
+ "If non-nil, output buffer is not erased between shell commands.
+Also, a non-nil value set the point in the output buffer
+once the command complete.
+The value `beg-last-out' set point at the beginning of the output,
+`end-last-out' set point at the end of the buffer, `save-point'
+restore the buffer position before the command."
+ :type '(choice
+ (const :tag "Erase buffer" nil)
+ (const :tag "Set point to beginning of last output" beg-last-out)
+ (const :tag "Set point to end of last output" end-last-out)
+ (const :tag "Save point" save-point))
+ :group 'shell
+ :version "25.2")
+
+(defvar shell-command-saved-pos nil
+ "Point position in the output buffer after command complete.
+It is an alist (BUFFER . POS), where BUFFER is the output
+buffer, and POS is the point position in BUFFER once the command finish.
+This variable is used when `shell-command-not-erase-buffer' is non-nil.")
+
(defcustom idle-update-delay 0.5
"Idle time delay before updating various things on the screen.
Various Emacs features that update auxiliary information when point moves
@@ -602,24 +623,23 @@ buffer if the variable `delete-trailing-lines' is non-nil."
(list nil nil))))
(save-match-data
(save-excursion
- (let ((end-marker (copy-marker (or end (point-max))))
- (start (or start (point-min))))
- (goto-char start)
- (while (re-search-forward "\\s-$" end-marker t)
- (skip-syntax-backward "-" (line-beginning-position))
+ (let ((end-marker (and end (copy-marker end))))
+ (goto-char (or start (point-min)))
+ (with-syntax-table (make-syntax-table (syntax-table))
;; Don't delete formfeeds, even if they are considered whitespace.
- (if (looking-at-p ".*\f")
- (goto-char (match-end 0)))
- (delete-region (point) (match-end 0)))
- ;; Delete trailing empty lines.
- (goto-char end-marker)
- (when (and (not end)
- delete-trailing-lines
- ;; Really the end of buffer.
- (= (point-max) (1+ (buffer-size)))
- (<= (skip-chars-backward "\n") -2))
- (delete-region (1+ (point)) end-marker))
- (set-marker end-marker nil))))
+ (modify-syntax-entry ?\f "_")
+ ;; Treating \n as non-whitespace makes things easier.
+ (modify-syntax-entry ?\n "_")
+ (while (re-search-forward "\\s-+$" end-marker t)
+ (delete-region (match-beginning 0) (match-end 0))))
+ (if end
+ (set-marker end-marker nil)
+ ;; Delete trailing empty lines.
+ (and delete-trailing-lines
+ ;; Really the end of buffer.
+ (= (goto-char (point-max)) (1+ (buffer-size)))
+ (<= (skip-chars-backward "\n") -2)
+ (delete-region (1+ (point)) (point-max)))))))
;; Return nil for the benefit of `write-file-functions'.
nil)
@@ -1075,7 +1095,9 @@ that uses or sets the mark."
(interactive)
(push-mark (point))
(push-mark (point-max) nil t)
- (goto-char (point-min)))
+ ;; This is really `point-min' in most cases, but if we're in the
+ ;; minibuffer, this is at the end of the prompt.
+ (goto-char (minibuffer-prompt-end)))
;; Counting lines, one way or another.
@@ -1633,6 +1655,12 @@ If the value is non-nil and not a number, we wait 2 seconds."
(integer :tag "time" 2)
(other :tag "on")))
+(defcustom extended-command-suggest-shorter t
+ "If non-nil, show a shorter M-x invocation when there is one."
+ :group 'keyboard
+ :type 'boolean
+ :version "25.2")
+
(defun execute-extended-command--shorter-1 (name length)
(cond
((zerop length) (list ""))
@@ -1715,7 +1743,8 @@ invoking, give a prefix argument to `execute-extended-command'."
((numberp suggest-key-bindings) suggest-key-bindings)
(t 2))))))
(when (and waited (not (consp unread-command-events)))
- (unless (or binding executing-kbd-macro (not (symbolp function))
+ (unless (or (not extended-command-suggest-shorter)
+ binding executing-kbd-macro (not (symbolp function))
(<= (length (symbol-name function)) 2))
;; There's no binding for CMD. Let's try and find the shortest
;; string to use in M-x.
@@ -2875,6 +2904,10 @@ REASON describes the reason that the boundary is being added; see
"Check recently changed buffers and add a boundary if necessary.
REASON describes the reason that the boundary is being added; see
`undo-last-boundary' for more information."
+ ;; (Bug #23785) All commands should ensure that there is an undo
+ ;; boundary whether they have changed the current buffer or not.
+ (when (eq cause 'command)
+ (add-to-list 'undo-auto--undoably-changed-buffers (current-buffer)))
(dolist (b undo-auto--undoably-changed-buffers)
(when (buffer-live-p b)
(with-current-buffer b
@@ -2940,20 +2973,47 @@ behavior."
(cdr buffer-undo-list))))))
(setq undo-auto--last-boundary-cause 0)))))
-;; This function is called also from one place in fileio.c. We call
-;; this function, rather than undoable-change because it reduces the
-;; number of lisp functions we have to use fboundp for to avoid
-;; bootstrap issues.
-(defun undo-auto--undoable-change-no-timer ()
- "Record `current-buffer' as changed."
- (add-to-list 'undo-auto--undoably-changed-buffers (current-buffer)))
-
(defun undo-auto--undoable-change ()
"Called after every undoable buffer change."
- (undo-auto--undoable-change-no-timer)
+ (add-to-list 'undo-auto--undoably-changed-buffers (current-buffer))
(undo-auto--boundary-ensure-timer))
;; End auto-boundary section
+(defun undo-amalgamate-change-group (handle)
+ "Amalgamate changes in change-group since HANDLE.
+Remove all undo boundaries between the state of HANDLE and now.
+HANDLE is as returned by `prepare-change-group'."
+ (dolist (elt handle)
+ (with-current-buffer (car elt)
+ (setq elt (cdr elt))
+ (when (consp buffer-undo-list)
+ (let ((old-car (car-safe elt))
+ (old-cdr (cdr-safe elt)))
+ (unwind-protect
+ (progn
+ ;; Temporarily truncate the undo log at ELT.
+ (when (consp elt)
+ (setcar elt t) (setcdr elt nil))
+ (when
+ (or (null elt) ;The undo-log was empty.
+ ;; `elt' is still in the log: normal case.
+ (eq elt (last buffer-undo-list))
+ ;; `elt' is not in the log any more, but that's because
+ ;; the log is "all new", so we should remove all
+ ;; boundaries from it.
+ (not (eq (last buffer-undo-list) (last old-cdr))))
+ (cl-callf (lambda (x) (delq nil x))
+ (if (car buffer-undo-list)
+ buffer-undo-list
+ ;; Preserve the undo-boundaries at either ends of the
+ ;; change-groups.
+ (cdr buffer-undo-list)))))
+ ;; Reset the modified cons cell ELT to its original content.
+ (when (consp elt)
+ (setcar elt old-car)
+ (setcdr elt old-cdr))))))))
+
+
(defcustom undo-ask-before-discard nil
"If non-nil ask about discarding undo info for the current command.
Normally, Emacs discards the undo info for the current command if
@@ -3171,6 +3231,53 @@ output buffer and running a new command in the default buffer,
:group 'shell
:version "24.3")
+(defun shell-command--save-pos-or-erase ()
+ "Store a buffer position or erase the buffer.
+See `shell-command-not-erase-buffer'."
+ (let ((sym shell-command-not-erase-buffer)
+ pos)
+ (setq buffer-read-only nil)
+ ;; Setting buffer-read-only to nil doesn't suffice
+ ;; if some text has a non-nil read-only property,
+ ;; which comint sometimes adds for prompts.
+ (setq pos
+ (cond ((eq sym 'save-point) (point))
+ ((eq sym 'beg-last-out) (point-max))
+ ((not sym)
+ (let ((inhibit-read-only t))
+ (erase-buffer) nil))))
+ (when pos
+ (goto-char (point-max))
+ (push (cons (current-buffer) pos)
+ shell-command-saved-pos))))
+
+(defun shell-command--set-point-after-cmd (&optional buffer)
+ "Set point in BUFFER after command complete.
+BUFFER is the output buffer of the command; if nil, then defaults
+to the current BUFFER.
+Set point to the `cdr' of the element in `shell-command-saved-pos'
+whose `car' is BUFFER."
+ (when shell-command-not-erase-buffer
+ (let* ((sym shell-command-not-erase-buffer)
+ (buf (or buffer (current-buffer)))
+ (pos (alist-get buf shell-command-saved-pos)))
+ (setq shell-command-saved-pos
+ (assq-delete-all buf shell-command-saved-pos))
+ (when (buffer-live-p buf)
+ (let ((win (car (get-buffer-window-list buf)))
+ (pmax (with-current-buffer buf (point-max))))
+ (unless (and pos (memq sym '(save-point beg-last-out)))
+ (setq pos pmax))
+ ;; Set point in the window displaying buf, if any; otherwise
+ ;; display buf temporary in selected frame and set the point.
+ (if win
+ (set-window-point win pos)
+ (save-window-excursion
+ (let ((win (display-buffer
+ buf
+ '(nil (inhibit-switch-frame . t)))))
+ (set-window-point win pos)))))))))
+
(defun async-shell-command (command &optional output-buffer error-buffer)
"Execute string COMMAND asynchronously in background.
@@ -3231,11 +3338,12 @@ Noninteractive callers can specify coding systems by binding
The optional second argument OUTPUT-BUFFER, if non-nil,
says to put the output in some other buffer.
-If OUTPUT-BUFFER is a buffer or buffer name, put the output there.
-If OUTPUT-BUFFER is not a buffer and not nil,
-insert output in current buffer. (This cannot be done asynchronously.)
-In either case, the buffer is first erased, and the output is
-inserted after point (leaving mark after it).
+If OUTPUT-BUFFER is a buffer or buffer name, erase that buffer
+and insert the output there; a non-nil value of
+`shell-command-not-erase-buffer' prevent to erase the buffer.
+If OUTPUT-BUFFER is not a buffer and not nil, insert the output
+in current buffer after point leaving mark after it.
+This cannot be done asynchronously.
If the command terminates without error, but generates output,
and you did not specify \"insert it in the current buffer\",
@@ -3249,9 +3357,6 @@ If there is output and an error, and you did not specify \"insert it
in the current buffer\", a message about the error goes at the end
of the output.
-If there is no output, or if output is inserted in the current buffer,
-then `*Shell Command Output*' is deleted.
-
If the optional third argument ERROR-BUFFER is non-nil, it is a buffer
or buffer name to which to direct the command's standard error output.
If it is nil, error output is mingled with regular output.
@@ -3324,6 +3429,8 @@ the use of a shell (with its need to quote arguments)."
(current-buffer)))))
;; Output goes in a separate buffer.
;; Preserve the match data in case called from a program.
+ ;; FIXME: It'd be ridiculous for an Elisp function to call
+ ;; shell-command and assume that it won't mess the match-data!
(save-match-data
(if (string-match "[ \t]*&[ \t]*\\'" command)
;; Command ending with ampersand means asynchronous.
@@ -3370,13 +3477,8 @@ the use of a shell (with its need to quote arguments)."
(setq buffer (get-buffer-create
(or output-buffer "*Async Shell Command*"))))))
(with-current-buffer buffer
- (setq buffer-read-only nil)
- ;; Setting buffer-read-only to nil doesn't suffice
- ;; if some text has a non-nil read-only property,
- ;; which comint sometimes adds for prompts.
- (let ((inhibit-read-only t))
- (erase-buffer))
(display-buffer buffer '(nil (allow-no-window . t)))
+ (shell-command--save-pos-or-erase)
(setq default-directory directory)
(setq proc (start-process "Shell" buffer shell-file-name
shell-command-switch command))
@@ -3459,12 +3561,14 @@ and are only used if a pop-up buffer is displayed."
;; We have a sentinel to prevent insertion of a termination message
-;; in the buffer itself.
+;; in the buffer itself, and to set the point in the buffer when
+;; `shell-command-not-erase-buffer' is non-nil.
(defun shell-command-sentinel (process signal)
- (if (memq (process-status process) '(exit signal))
- (message "%s: %s."
- (car (cdr (cdr (process-command process))))
- (substring signal 0 -1))))
+ (when (memq (process-status process) '(exit signal))
+ (shell-command--set-point-after-cmd (process-buffer process))
+ (message "%s: %s."
+ (car (cdr (cdr (process-command process))))
+ (substring signal 0 -1))))
(defun shell-command-on-region (start end command
&optional output-buffer replace
@@ -3494,16 +3598,15 @@ Otherwise it is displayed in the buffer `*Shell Command Output*'.
The output is available in that buffer in both cases.
If there is output and an error, a message about the error
-appears at the end of the output. If there is no output, or if
-output is inserted in the current buffer, the buffer `*Shell
-Command Output*' is deleted.
+appears at the end of the output.
Optional fourth arg OUTPUT-BUFFER specifies where to put the
command's output. If the value is a buffer or buffer name,
-put the output there. If the value is nil, use the buffer
-`*Shell Command Output*'. Any other value, excluding nil,
-means to insert the output in the current buffer. In either case,
-the output is inserted after point (leaving mark after it).
+erase that buffer and insert the output there; a non-nil value of
+`shell-command-not-erase-buffer' prevent to erase the buffer.
+If the value is nil, use the buffer `*Shell Command Output*'.
+Any other non-nil value means to insert the output in the
+current buffer after START.
Optional fifth arg REPLACE, if non-nil, means to insert the
output in place of text from START to END, putting point and mark
@@ -3580,7 +3683,10 @@ interactively, this is t."
(let ((buffer (get-buffer-create
(or output-buffer "*Shell Command Output*"))))
(unwind-protect
- (if (eq buffer (current-buffer))
+ (if (and (eq buffer (current-buffer))
+ (or (not shell-command-not-erase-buffer)
+ (and (not (eq buffer (get-buffer "*Shell Command Output*")))
+ (not (region-active-p)))))
;; If the input is the same buffer as the output,
;; delete everything but the specified region,
;; then replace that region with the output.
@@ -3599,10 +3705,9 @@ interactively, this is t."
;; output there.
(let ((directory default-directory))
(with-current-buffer buffer
- (setq buffer-read-only nil)
(if (not output-buffer)
(setq default-directory directory))
- (erase-buffer)))
+ (shell-command--save-pos-or-erase)))
(setq exit-status
(call-process-region start end shell-file-name nil
(if error-file
@@ -3620,8 +3725,10 @@ interactively, this is t."
(format " - Exit [%d]" exit-status)))))
(if (with-current-buffer buffer (> (point-max) (point-min)))
;; There's some output, display it
- (display-message-or-buffer buffer)
- ;; No output; error?
+ (progn
+ (display-message-or-buffer buffer)
+ (shell-command--set-point-after-cmd buffer))
+ ;; No output; error?
(let ((output
(if (and error-file
(< 0 (nth 7 (file-attributes error-file))))
@@ -3749,6 +3856,7 @@ support pty association, if PROGRAM is nil."
(define-derived-mode process-menu-mode tabulated-list-mode "Process Menu"
"Major mode for listing the processes called by Emacs."
(setq tabulated-list-format [("Process" 15 t)
+ ("PID" 7 t)
("Status" 7 t)
("Buffer" 15 t)
("TTY" 12 t)
@@ -3761,8 +3869,13 @@ support pty association, if PROGRAM is nil."
(defun process-menu-delete-process ()
"Kill process at point in a `list-processes' buffer."
(interactive)
- (delete-process (tabulated-list-get-id))
- (revert-buffer))
+ (let ((pos (point)))
+ (delete-process (tabulated-list-get-id))
+ (revert-buffer)
+ (goto-char (min pos (point-max)))
+ (if (eobp)
+ (forward-line -1)
+ (beginning-of-line))))
(defun list-processes--refresh ()
"Recompute the list of processes for the Process List buffer.
@@ -3775,6 +3888,7 @@ Also, delete any process that is exited or signaled."
(process-query-on-exit-flag p))
(let* ((buf (process-buffer p))
(type (process-type p))
+ (pid (if (process-id p) (format "%d" (process-id p)) "--"))
(name (process-name p))
(status (symbol-name (process-status p)))
(buf-label (if (buffer-live-p buf)
@@ -3810,7 +3924,7 @@ Also, delete any process that is exited or signaled."
(format " at %s b/s" speed)
"")))))
(mapconcat 'identity (process-command p) " "))))
- (push (list p (vector name status buf-label tty cmd))
+ (push (list p (vector name pid status buf-label tty cmd))
tabulated-list-entries))))))
(defun process-menu-visit-buffer (button)
@@ -4053,7 +4167,8 @@ Its arguments and return value are as specified for `filter-buffer-substring'.
This respects the wrapper hook `filter-buffer-substring-functions',
and the abnormal hook `buffer-substring-filters'.
No filtering is done unless a hook says to."
- (with-wrapper-hook filter-buffer-substring-functions (beg end delete)
+ (subr--with-wrapper-hook-no-warnings
+ filter-buffer-substring-functions (beg end delete)
(cond
((or delete buffer-substring-filters)
(save-excursion
@@ -5210,6 +5325,7 @@ store it in a Lisp variable. Example:
(defmacro save-mark-and-excursion (&rest body)
"Like `save-excursion', but also save and restore the mark state.
This macro does what `save-excursion' did before Emacs 25.1."
+ (declare (indent 0) (debug t))
(let ((saved-marker-sym (make-symbol "saved-marker")))
`(let ((,saved-marker-sym (save-mark-and-excursion--save)))
(unwind-protect
@@ -5829,7 +5945,7 @@ The value is a floating-point number."
(/ (float (- (nth 3 edges) (nth 1 edges))) dlh)))
;; Returns non-nil if partial move was done.
-(defun line-move-partial (arg noerror to-end)
+(defun line-move-partial (arg noerror &optional _to-end)
(if (< arg 0)
;; Move backward (up).
;; If already vscrolled, reduce vscroll
@@ -5927,7 +6043,7 @@ The value is a floating-point number."
;; discrepancies between that and DLH.
(if (and rowh rbot (>= (- (+ rowh rbot) winh) 1))
(set-window-vscroll nil dlh t))
- (line-move-1 arg noerror to-end)
+ (line-move-1 arg noerror)
t)
;; If there are lines above the last line, scroll-up one line.
((and vpos (> vpos 0))
@@ -5944,7 +6060,7 @@ The value is a floating-point number."
;; scrolling with cursor motion. But so far we don't have
;; a cleaner solution to the problem of making C-n do something
;; useful given a tall image.
-(defun line-move (arg &optional noerror to-end try-vscroll)
+(defun line-move (arg &optional noerror _to-end try-vscroll)
"Move forward ARG lines.
If NOERROR, don't signal an error if we can't move ARG lines.
TO-END is unused.
@@ -5952,7 +6068,7 @@ TRY-VSCROLL controls whether to vscroll tall lines: if either
`auto-window-vscroll' or TRY-VSCROLL is nil, this function will
not vscroll."
(if noninteractive
- (line-move-1 arg noerror to-end)
+ (line-move-1 arg noerror)
(unless (and auto-window-vscroll try-vscroll
;; Only vscroll for single line moves
(= (abs arg) 1)
@@ -5962,7 +6078,7 @@ not vscroll."
;; But don't vscroll in a keyboard macro.
(not defining-kbd-macro)
(not executing-kbd-macro)
- (line-move-partial arg noerror to-end))
+ (line-move-partial arg noerror))
(set-window-vscroll nil 0 t)
(if (and line-move-visual
;; Display-based column are incompatible with goal-column.
@@ -5994,7 +6110,7 @@ not vscroll."
(set-window-vscroll
nil
(- lh dlh) t))))
- (line-move-1 arg noerror to-end)))))
+ (line-move-1 arg noerror)))))
;; Display-based alternative to line-move-1.
;; Arg says how many lines to move. The value is t if we can move the
@@ -6032,7 +6148,13 @@ If NOERROR, don't signal an error if we can't move that many lines."
(setq temporary-goal-column
(cons (/ (float x-pos)
(frame-char-width))
- hscroll))))))
+ hscroll)))
+ (executing-kbd-macro
+ ;; When we move beyond the first/last character visible in
+ ;; the window, posn-at-point will return nil, so we need to
+ ;; approximate the goal column as below.
+ (setq temporary-goal-column
+ (mod (current-column) (window-text-width)))))))
(if target-hscroll
(set-window-hscroll (selected-window) target-hscroll))
;; vertical-motion can move more than it was asked to if it moves
diff --git a/lisp/sort.el b/lisp/sort.el
index 4d7311f1e5..8bc71388ad 100644
--- a/lisp/sort.el
+++ b/lisp/sort.el
@@ -596,7 +596,7 @@ is non-nil, it also prints a message describing the number of deletions."
(equal current-prefix-arg '(64))
t)))
(let ((lines (unless adjacent (make-hash-table :test 'equal)))
- line prev-line
+ line prev-line first-line
(count 0)
(beg (copy-marker beg))
(end (copy-marker end)))
@@ -604,8 +604,9 @@ is non-nil, it also prints a message describing the number of deletions."
(goto-char (if reverse end beg))
(if (and reverse (bolp)) (forward-char -1))
(while (if reverse
- (and (> (point) beg) (not (bobp)))
+ (not first-line)
(and (< (point) end) (not (eobp))))
+ (setq first-line (and reverse (or (<= (point) beg) (bobp))))
(setq line (buffer-substring-no-properties
(line-beginning-position) (line-end-position)))
(if (and keep-blanks (string= "" line))
diff --git a/lisp/startup.el b/lisp/startup.el
index 761e69e03b..fcdc376c5f 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -2360,7 +2360,14 @@ nil default-directory" name)
((member argi '("-eval" "-execute"))
(setq inhibit-startup-screen t)
- (eval (read (or argval (pop command-line-args-left)))))
+ (let* ((str-expr (or argval (pop command-line-args-left)))
+ (read-data (read-from-string str-expr))
+ (expr (car read-data))
+ (end (cdr read-data)))
+ (unless (= end (length str-expr))
+ (error "Trailing garbage following expression: %s"
+ (substring str-expr end)))
+ (eval expr)))
((member argi '("-L" "-directory"))
;; -L :/foo adds /foo to the _end_ of load-path.
diff --git a/lisp/subr.el b/lisp/subr.el
index e9e19d35f6..8ab1178f4c 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -22,20 +22,18 @@
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; Commentary:
-
-;;; Code:
-
;; Beware: while this file has tag `utf-8', before it's compiled, it gets
;; loaded as "raw-text", so non-ASCII chars won't work right during bootstrap.
-(defmacro declare-function (_fn _file &optional _arglist _fileonly)
+
+;; declare-function's args use &rest, not &optional, for compatibility
+;; with byte-compile-macroexpand-declare-function.
+
+(defmacro declare-function (_fn _file &rest _args)
"Tell the byte-compiler that function FN is defined, in FILE.
-Optional ARGLIST is the argument list used by the function.
The FILE argument is not used by the byte-compiler, but by the
`check-declare' package, which checks that FILE contains a
-definition for FN. ARGLIST is used by both the byte-compiler
-and `check-declare' to check for consistency.
+definition for FN.
FILE can be either a Lisp file (in which case the \".el\"
extension is optional), or a C file. C files are expanded
@@ -46,19 +44,22 @@ declaration. A FILE with an \"ext:\" prefix is an external file.
`check-declare' will check such files if they are found, and skip
them without error if they are not.
-FILEONLY non-nil means that `check-declare' will only check that
-FILE exists, not that it defines FN. This is intended for
-function-definitions that `check-declare' does not recognize, e.g.
-`defstruct'.
+Optional ARGLIST specifies FN's arguments, or is t to not specify
+FN's arguments. An omitted ARGLIST defaults to t, not nil: a nil
+ARGLIST specifies an empty argument list, and an explicit t
+ARGLIST is a placeholder that allows supplying a later arg.
-To specify a value for FILEONLY without passing an argument list,
-set ARGLIST to t. This is necessary because nil means an
-empty argument list, rather than an unspecified one.
+Optional FILEONLY non-nil means that `check-declare' will check
+only that FILE exists, not that it defines FN. This is intended
+for function definitions that `check-declare' does not recognize,
+e.g., `defstruct'.
Note that for the purposes of `check-declare', this statement
must be the first non-whitespace on a line.
For more information, see Info node `(elisp)Declaring Functions'."
+ (declare (advertised-calling-convention
+ (fn file &optional arglist fileonly) nil))
;; Does nothing - byte-compile-declare-function does the work.
nil)
@@ -66,6 +67,7 @@ For more information, see Info node `(elisp)Declaring Functions'."
;;;; Basic Lisp macros.
(defalias 'not 'null)
+(defalias 'sxhash 'sxhash-equal)
(defmacro noreturn (form)
"Evaluate FORM, expecting it not to return.
@@ -859,7 +861,12 @@ above 127 (such as ISO Latin-1) can be included if you use a vector.
Note that if KEY has a local binding in the current buffer,
that local binding will continue to shadow any global binding
that you make with this function."
- (interactive "KSet key globally: \nCSet key %s to command: ")
+ (interactive
+ (let* ((menu-prompting nil)
+ (key (read-key-sequence "Set key globally: ")))
+ (list key
+ (read-command (format "Set key %s to command: "
+ (key-description key))))))
(or (vectorp key) (stringp key)
(signal 'wrong-type-argument (list 'arrayp key)))
(define-key (current-global-map) key command))
@@ -1293,6 +1300,12 @@ be a list of the form returned by `event-start' and `event-end'."
(make-obsolete 'forward-point "use (+ (point) N) instead." "23.1")
(make-obsolete 'buffer-has-markers-at nil "24.3")
+;; bug#23850
+(make-obsolete 'string-to-unibyte "use `encode-coding-string'." "25.2")
+(make-obsolete 'string-as-unibyte "use `encode-coding-string'." "25.2")
+(make-obsolete 'string-to-multibyte "use `decode-coding-string'." "25.2")
+(make-obsolete 'string-as-multibyte "use `decode-coding-string'." "25.2")
+
(defun insert-string (&rest args)
"Mocklisp-compatibility insert function.
Like the function `insert' except that any argument that is a number
@@ -1322,8 +1335,6 @@ is converted into a string by expressing it in decimal."
(set-advertised-calling-convention 'unintern '(name obarray) "23.3")
(set-advertised-calling-convention 'indirect-function '(object) "25.1")
(set-advertised-calling-convention 'redirect-frame-focus '(frame focus-frame) "24.3")
-(set-advertised-calling-convention 'decode-char '(ch charset) "21.4")
-(set-advertised-calling-convention 'encode-char '(ch charset) "21.4")
;;;; Obsolescence declarations for variables, and aliases.
@@ -1545,6 +1556,10 @@ FUN is then called once."
(declare (indent 2) (debug (form sexp body))
(obsolete "use a <foo>-function variable modified by `add-function'."
"24.4"))
+ `(subr--with-wrapper-hook-no-warnings ,hook ,args ,@body))
+
+(defmacro subr--with-wrapper-hook-no-warnings (hook args &rest body)
+ "Like (with-wrapper-hook HOOK ARGS BODY), but without warnings."
;; We need those two gensyms because CL's lexical scoping is not available
;; for function arguments :-(
(let ((funs (make-symbol "funs"))
@@ -1735,6 +1750,11 @@ if it is empty or a duplicate."
(make-variable-buffer-local 'delayed-mode-hooks)
(put 'delay-mode-hooks 'permanent-local t)
+(defvar delayed-after-hook-forms nil
+ "List of delayed :after-hook forms waiting to be run.
+These forms come from `define-derived-mode'.")
+(make-variable-buffer-local 'delayed-after-hook-forms)
+
(defvar change-major-mode-after-body-hook nil
"Normal hook run in major mode functions, before the mode hooks.")
@@ -1743,12 +1763,19 @@ if it is empty or a duplicate."
(defun run-mode-hooks (&rest hooks)
"Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS.
-If the variable `delay-mode-hooks' is non-nil, does not run any hooks,
+Call `hack-local-variables' to set up file local and directory local
+variables.
+
+If the variable `delay-mode-hooks' is non-nil, does not do anything,
just adds the HOOKS to the list `delayed-mode-hooks'.
Otherwise, runs hooks in the sequence: `change-major-mode-after-body-hook',
-`delayed-mode-hooks' (in reverse order), HOOKS, and finally
-`after-change-major-mode-hook'. Major mode functions should use
-this instead of `run-hooks' when running their FOO-mode-hook."
+`delayed-mode-hooks' (in reverse order), HOOKS, then runs
+`hack-local-variables', runs the hook `after-change-major-mode-hook', and
+finally evaluates the forms in `delayed-after-hook-forms' (see
+`define-derived-mode').
+
+Major mode functions should use this instead of `run-hooks' when
+running their FOO-mode-hook."
(if delay-mode-hooks
;; Delaying case.
(dolist (hook hooks)
@@ -1757,7 +1784,13 @@ this instead of `run-hooks' when running their FOO-mode-hook."
(setq hooks (nconc (nreverse delayed-mode-hooks) hooks))
(setq delayed-mode-hooks nil)
(apply 'run-hooks (cons 'change-major-mode-after-body-hook hooks))
- (run-hooks 'after-change-major-mode-hook)))
+ (if (buffer-file-name)
+ (with-demoted-errors "File local-variables error: %s"
+ (hack-local-variables 'no-mode)))
+ (run-hooks 'after-change-major-mode-hook)
+ (dolist (form (nreverse delayed-after-hook-forms))
+ (eval form))
+ (setq delayed-after-hook-forms nil)))
(defmacro delay-mode-hooks (&rest body)
"Execute BODY, but delay any `run-mode-hooks'.
@@ -2502,26 +2535,27 @@ This finishes the change group by reverting all of its changes."
;; Widen buffer temporarily so if the buffer was narrowed within
;; the body of `atomic-change-group' all changes can be undone.
(widen)
- (let ((old-car
- (if (consp elt) (car elt)))
- (old-cdr
- (if (consp elt) (cdr elt))))
- ;; Temporarily truncate the undo log at ELT.
- (when (consp elt)
- (setcar elt nil) (setcdr elt nil))
- (unless (eq last-command 'undo) (undo-start))
- ;; Make sure there's no confusion.
- (when (and (consp elt) (not (eq elt (last pending-undo-list))))
- (error "Undoing to some unrelated state"))
- ;; Undo it all.
- (save-excursion
- (while (listp pending-undo-list) (undo-more 1)))
- ;; Reset the modified cons cell ELT to its original content.
- (when (consp elt)
- (setcar elt old-car)
- (setcdr elt old-cdr))
- ;; Revert the undo info to what it was when we grabbed the state.
- (setq buffer-undo-list elt))))))
+ (let ((old-car (car-safe elt))
+ (old-cdr (cdr-safe elt)))
+ (unwind-protect
+ (progn
+ ;; Temporarily truncate the undo log at ELT.
+ (when (consp elt)
+ (setcar elt nil) (setcdr elt nil))
+ (unless (eq last-command 'undo) (undo-start))
+ ;; Make sure there's no confusion.
+ (when (and (consp elt) (not (eq elt (last pending-undo-list))))
+ (error "Undoing to some unrelated state"))
+ ;; Undo it all.
+ (save-excursion
+ (while (listp pending-undo-list) (undo-more 1)))
+ ;; Revert the undo info to what it was when we grabbed
+ ;; the state.
+ (setq buffer-undo-list elt))
+ ;; Reset the modified cons cell ELT to its original content.
+ (when (consp elt)
+ (setcar elt old-car)
+ (setcdr elt old-cdr))))))))
;;;; Display-related functions.
@@ -4139,8 +4173,7 @@ and the function returns nil. Field boundaries are not noticed if
`inhibit-field-text-motion' is non-nil.
This function is like `forward-word', but it is not affected
-by `find-word-boundary-function-table' (as set up by
-e.g. `subword-mode'). It is also not interactive."
+by `find-word-boundary-function-table'. It is also not interactive."
(let ((find-word-boundary-function-table
(if (char-table-p word-move-empty-char-table)
word-move-empty-char-table
@@ -4153,8 +4186,7 @@ With argument ARG, do this that many times.
If ARG is omitted or nil, move point backward one word.
This function is like `forward-word', but it is not affected
-by `find-word-boundary-function-table' (as set up by
-e.g. `subword-mode'). It is also not interactive."
+by `find-word-boundary-function-table'. It is also not interactive."
(let ((find-word-boundary-function-table
(if (char-table-p word-move-empty-char-table)
word-move-empty-char-table
@@ -4513,7 +4545,8 @@ to deactivate this transient map, regardless of KEEP-PRED."
(with-demoted-errors "set-transient-map PCH: %S"
(unless (cond
((null keep-pred) nil)
- ((not (eq map (cadr overriding-terminal-local-map)))
+ ((and (not (eq map (cadr overriding-terminal-local-map)))
+ (memq map (cddr overriding-terminal-local-map)))
;; There's presumably some other transient-map in
;; effect. Wait for that one to terminate before we
;; remove ourselves.
@@ -4967,6 +5000,26 @@ as a list.")
;;; Misc.
+
+(defvar definition-prefixes (make-hash-table :test 'equal)
+ "Hash table mapping prefixes to the files in which they're used.
+This can be used to automatically fetch not-yet-loaded definitions.
+More specifically, if there is a value of the form (FILES...) for a string PREFIX
+it means that the FILES define variables or functions with names that start
+with PREFIX.
+
+Note that it does not imply that all definitions starting with PREFIX can
+be found in those files. E.g. if prefix is \"gnus-article-\" there might
+still be definitions of the form \"gnus-article-toto-titi\" in other files, which would
+presumably appear in this table under another prefix such as \"gnus-\"
+or \"gnus-article-toto-\".")
+
+(defun register-definition-prefixes (file prefixes)
+ "Register that FILE uses PREFIXES."
+ (dolist (prefix prefixes)
+ (puthash prefix (cons file (gethash prefix definition-prefixes))
+ definition-prefixes)))
+
(defconst menu-bar-separator '("--")
"Separator for menus.")
diff --git a/lisp/svg.el b/lisp/svg.el
new file mode 100644
index 0000000000..a92c6dfb61
--- /dev/null
+++ b/lisp/svg.el
@@ -0,0 +1,273 @@
+;;; svg.el --- SVG image creation functions -*- lexical-binding: t -*-
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; Keywords: image
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'cl-lib)
+(require 'xml)
+(require 'dom)
+(require 'subr-x)
+
+(defun svg-create (width height &rest args)
+ "Create a new, empty SVG image with dimensions WIDTHxHEIGHT.
+ARGS can be used to provide `stroke' and `stroke-width' parameters to
+any further elements added."
+ (dom-node 'svg
+ `((width . ,width)
+ (height . ,height)
+ (version . "1.1")
+ (xmlns . "http://www.w3.org/2000/svg")
+ ,@(svg--arguments nil args))))
+
+(defun svg-gradient (svg id type stops)
+ "Add a gradient with ID to SVG.
+TYPE is `linear' or `radial'. STOPS is a list of percentage/color
+pairs."
+ (svg--def
+ svg
+ (apply
+ 'dom-node
+ (if (eq type 'linear)
+ 'linearGradient
+ 'radialGradient)
+ `((id . ,id)
+ (x1 . 0)
+ (x2 . 0)
+ (y1 . 0)
+ (y2 . 1))
+ (mapcar
+ (lambda (stop)
+ (dom-node 'stop `((offset . ,(format "%s%%" (car stop)))
+ (stop-color . ,(cdr stop)))))
+ stops))))
+
+(defun svg-rectangle (svg x y width height &rest args)
+ "Create a rectangle on SVG, starting at position X/Y, of WIDTH/HEIGHT.
+ARGS is a plist of modifiers. Possible values are
+
+:stroke-width PIXELS. The line width.
+:stroke-color COLOR. The line color.
+:gradient ID. The gradient ID to use."
+ (svg--append
+ svg
+ (dom-node 'rect
+ `((width . ,width)
+ (height . ,height)
+ (x . ,x)
+ (y . ,y)
+ ,@(svg--arguments svg args)))))
+
+(defun svg-circle (svg x y radius &rest args)
+ "Create a circle of RADIUS on SVG.
+X/Y denote the center of the circle."
+ (svg--append
+ svg
+ (dom-node 'circle
+ `((cx . ,x)
+ (cy . ,y)
+ (r . ,radius)
+ ,@(svg--arguments svg args)))))
+
+(defun svg-ellipse (svg x y x-radius y-radius &rest args)
+ "Create an ellipse of X-RADIUS/Y-RADIUS on SVG.
+X/Y denote the center of the ellipse."
+ (svg--append
+ svg
+ (dom-node 'ellipse
+ `((cx . ,x)
+ (cy . ,y)
+ (rx . ,x-radius)
+ (ry . ,y-radius)
+ ,@(svg--arguments svg args)))))
+
+(defun svg-line (svg x1 y1 x2 y2 &rest args)
+ "Create a line of starting in X1/Y1, ending at X2/Y2 in SVG."
+ (svg--append
+ svg
+ (dom-node 'line
+ `((x1 . ,x1)
+ (x2 . ,y1)
+ (y1 . ,x2)
+ (y2 . ,y2)
+ ,@(svg--arguments svg args)))))
+
+(defun svg-polyline (svg points &rest args)
+ "Create a polyline going through POINTS on SVG.
+POINTS is a list of x/y pairs."
+ (svg--append
+ svg
+ (dom-node
+ 'polyline
+ `((points . ,(mapconcat (lambda (pair)
+ (format "%s %s" (car pair) (cdr pair)))
+ points
+ ", "))
+ ,@(svg--arguments svg args)))))
+
+(defun svg-polygon (svg points &rest args)
+ "Create a polygon going through POINTS on SVG.
+POINTS is a list of x/y pairs."
+ (svg--append
+ svg
+ (dom-node
+ 'polygon
+ `((points . ,(mapconcat (lambda (pair)
+ (format "%s %s" (car pair) (cdr pair)))
+ points
+ ", "))
+ ,@(svg--arguments svg args)))))
+
+(defun svg-embed (svg image image-type datap &rest args)
+ "Insert IMAGE into the SVG structure.
+IMAGE should be a file name if DATAP is nil, and a binary string
+otherwise. IMAGE-TYPE should be a MIME image type, like
+\"image/jpeg\" or the like."
+ (svg--append
+ svg
+ (dom-node
+ 'image
+ `((xlink:href . ,(svg--image-data image image-type datap))
+ ,@(svg--arguments svg args)))))
+
+(defun svg-text (svg text &rest args)
+ "Add TEXT to SVG."
+ (svg--append
+ svg
+ (dom-node
+ 'text
+ `(,@(svg--arguments svg args))
+ text)))
+
+(defun svg--append (svg node)
+ (let ((old (and (dom-attr node 'id)
+ (dom-by-id svg
+ (concat "\\`" (regexp-quote (dom-attr node 'id))
+ "\\'")))))
+ (if old
+ (setcdr (car old) (cdr node))
+ (dom-append-child svg node)))
+ (svg-possibly-update-image svg))
+
+(defun svg--image-data (image image-type datap)
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (if datap
+ (insert image)
+ (insert-file-contents image))
+ (base64-encode-region (point-min) (point-max) t)
+ (goto-char (point-min))
+ (insert "data:" image-type ";base64,")
+ (buffer-string)))
+
+(defun svg--arguments (svg args)
+ (let ((stroke-width (or (plist-get args :stroke-width)
+ (dom-attr svg 'stroke-width)))
+ (stroke-color (or (plist-get args :stroke-color)
+ (dom-attr svg 'stroke-color)))
+ (fill-color (plist-get args :fill-color))
+ attr)
+ (when stroke-width
+ (push (cons 'stroke-width stroke-width) attr))
+ (when stroke-color
+ (push (cons 'stroke stroke-color) attr))
+ (when fill-color
+ (push (cons 'fill fill-color) attr))
+ (when (plist-get args :gradient)
+ (setq attr
+ (append
+ ;; We need a way to specify the gradient direction here...
+ `((x1 . 0)
+ (x2 . 0)
+ (y1 . 0)
+ (y2 . 1)
+ (fill . ,(format "url(#%s)"
+ (plist-get args :gradient))))
+ attr)))
+ (cl-loop for (key value) on args by #'cddr
+ unless (memq key '(:stroke-color :stroke-width :gradient
+ :fill-color))
+ ;; Drop the leading colon.
+ do (push (cons (intern (substring (symbol-name key) 1) obarray)
+ value)
+ attr))
+ attr))
+
+(defun svg--def (svg def)
+ (dom-append-child
+ (or (dom-by-tag svg 'defs)
+ (let ((node (dom-node 'defs)))
+ (dom-add-child-before svg node)
+ node))
+ def)
+ svg)
+
+(defun svg-image (svg)
+ "Return an image object from SVG."
+ (create-image
+ (with-temp-buffer
+ (svg-print svg)
+ (buffer-string))
+ 'svg t))
+
+(defun svg-insert-image (svg)
+ "Insert SVG as an image at point.
+If the SVG is later changed, the image will also be updated."
+ (let ((image (svg-image svg))
+ (marker (point-marker)))
+ (insert-image image)
+ (dom-set-attribute svg :image marker)))
+
+(defun svg-possibly-update-image (svg)
+ (let ((marker (dom-attr svg :image)))
+ (when (and marker
+ (buffer-live-p (marker-buffer marker)))
+ (with-current-buffer (marker-buffer marker)
+ (put-text-property marker (1+ marker) 'display (svg-image svg))))))
+
+(defun svg-print (dom)
+ "Convert DOM into a string containing the xml representation."
+ (if (stringp dom)
+ (insert dom)
+ (insert (format "<%s" (car dom)))
+ (dolist (attr (nth 1 dom))
+ ;; Ignore attributes that start with a colon.
+ (unless (= (aref (format "%s" (car attr)) 0) ?:)
+ (insert (format " %s=\"%s\"" (car attr) (cdr attr)))))
+ (insert ">")
+ (dolist (elem (nthcdr 2 dom))
+ (insert " ")
+ (svg-print elem))
+ (insert (format "</%s>" (car dom)))))
+
+(defun svg-remove (svg id)
+ "Remove the element identified by ID from SVG."
+ (when-let ((node (car (dom-by-id
+ svg
+ (concat "\\`" (regexp-quote id)
+ "\\'")))))
+ (dom-remove-node svg node)))
+
+(provide 'svg)
+
+;;; svg.el ends here
diff --git a/lisp/term.el b/lisp/term.el
index f477bccbe2..87f600cdf7 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -834,6 +834,10 @@ is buffer-local."
(define-key map [down] 'term-send-down)
(define-key map [right] 'term-send-right)
(define-key map [left] 'term-send-left)
+ (define-key map [C-up] 'term-send-ctrl-up)
+ (define-key map [C-down] 'term-send-ctrl-down)
+ (define-key map [C-right] 'term-send-ctrl-right)
+ (define-key map [C-left] 'term-send-ctrl-left)
(define-key map [delete] 'term-send-del)
(define-key map [deletechar] 'term-send-del)
(define-key map [backspace] 'term-send-backspace)
@@ -1098,17 +1102,6 @@ Entry to this mode runs the hooks on `term-mode-hook'."
(term-reset-size (cdr size) (car size)))
size))
- ;; Without the below setting, term-mode and ansi-term behave
- ;; sluggishly when the buffer includes a lot of whitespace
- ;; characters.
- ;;
- ;; There's a larger problem here with supporting bidirectional text:
- ;; the application that writes to the terminal could have its own
- ;; ideas about displaying bidirectional text, and might not want us
- ;; reordering the text or deciding on base paragraph direction. One
- ;; such application is Emacs in TTY mode... FIXME.
- (setq bidi-paragraph-direction 'left-to-right)
-
(easy-menu-add term-terminal-menu)
(easy-menu-add term-signals-menu)
(or term-input-ring
@@ -1215,6 +1208,10 @@ without any interpretation."
(defun term-send-down () (interactive) (term-send-raw-string "\eOB"))
(defun term-send-right () (interactive) (term-send-raw-string "\eOC"))
(defun term-send-left () (interactive) (term-send-raw-string "\eOD"))
+(defun term-send-ctrl-up () (interactive) (term-send-raw-string "\e[1;5A"))
+(defun term-send-ctrl-down () (interactive) (term-send-raw-string "\e[1;5B"))
+(defun term-send-ctrl-right () (interactive) (term-send-raw-string "\e[1;5C"))
+(defun term-send-ctrl-left () (interactive) (term-send-raw-string "\e[1;5D"))
(defun term-send-home () (interactive) (term-send-raw-string "\e[1~"))
(defun term-send-insert() (interactive) (term-send-raw-string "\e[2~"))
(defun term-send-end () (interactive) (term-send-raw-string "\e[4~"))
@@ -3250,6 +3247,10 @@ See `term-prompt-regexp'."
;; \E[D - cursor left (terminfo: cub)
((eq char ?D)
(term-move-columns (- (max 1 term-terminal-parameter))))
+ ;; \E[G - cursor motion to absolute column (terminfo: hpa)
+ ((eq char ?G)
+ (term-move-columns (- (max 0 (min term-width term-terminal-parameter))
+ (term-current-column))))
;; \E[J - clear to end of screen (terminfo: ed, clear)
((eq char ?J)
(term-erase-in-display term-terminal-parameter))
diff --git a/lisp/term/AT386.el b/lisp/term/AT386.el
index 7f46f61c4f..63469422f7 100644
--- a/lisp/term/AT386.el
+++ b/lisp/term/AT386.el
@@ -54,4 +54,6 @@
(define-key local-function-key-map [ALT] [27])
))
+(provide 'term/AT386)
+
;;; AT386.el ends here
diff --git a/lisp/term/bobcat.el b/lisp/term/bobcat.el
index f26dc6b919..a32da6ae8f 100644
--- a/lisp/term/bobcat.el
+++ b/lisp/term/bobcat.el
@@ -5,4 +5,6 @@
(keyboard-translate ?\177 ?\^h)
(keyboard-translate ?\^h ?\177))
+(provide 'term/bobcat)
+
;;; bobcat.el ends here
diff --git a/lisp/term/cygwin.el b/lisp/term/cygwin.el
index d69433a77c..edc64b4404 100644
--- a/lisp/term/cygwin.el
+++ b/lisp/term/cygwin.el
@@ -6,4 +6,6 @@
"Terminal initialization function for cygwin."
(tty-no-underline))
+(provide 'term/cygwin)
+
;;; cygwin.el ends here
diff --git a/lisp/term/internal.el b/lisp/term/internal.el
index 6f4866b079..0fd0f2237a 100644
--- a/lisp/term/internal.el
+++ b/lisp/term/internal.el
@@ -606,4 +606,6 @@ list. You can (and should) also run it if and when the value of
(run-hooks 'dos-codepage-setup-hook)
))
+(provide 'term/internal)
+
;;; internal.el ends here
diff --git a/lisp/term/iris-ansi.el b/lisp/term/iris-ansi.el
index ee63864394..5217e42e31 100644
--- a/lisp/term/iris-ansi.el
+++ b/lisp/term/iris-ansi.el
@@ -327,4 +327,6 @@
(set-keymap-parent m (keymap-parent input-decode-map))
(set-keymap-parent input-decode-map m)))
+(provide 'term/iris-ansi)
+
;;; iris-ansi.el ends here
diff --git a/lisp/term/linux.el b/lisp/term/linux.el
index 00bcdfdf54..70730dc584 100644
--- a/lisp/term/linux.el
+++ b/lisp/term/linux.el
@@ -19,4 +19,6 @@
;; The arg only matters in that it is not t or nil.
(set-input-meta-mode 'iso-latin-1))
+(provide 'term/linux)
+
;;; linux.el ends here
diff --git a/lisp/term/lk201.el b/lisp/term/lk201.el
index 6b9e130100..aab4110b3a 100644
--- a/lisp/term/lk201.el
+++ b/lisp/term/lk201.el
@@ -80,4 +80,6 @@
(set-keymap-parent m (keymap-parent input-decode-map))
(set-keymap-parent input-decode-map m)))
+(provide 'term/lk201)
+
;;; lk201.el ends here
diff --git a/lisp/term/news.el b/lisp/term/news.el
index b66e000e3b..5738644259 100644
--- a/lisp/term/news.el
+++ b/lisp/term/news.el
@@ -66,4 +66,6 @@
(define-key news-fkey-prefix "x" [kp-8])
))
+(provide 'term/news)
+
;;; news.el ends here
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index e737131d5b..5080ed0a8f 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -717,60 +717,12 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
;;;; Scrollbar handling.
-(global-set-key [vertical-scroll-bar down-mouse-1] 'ns-handle-scroll-bar-event)
+(global-set-key [vertical-scroll-bar down-mouse-1] 'scroll-bar-toolkit-scroll)
+(global-set-key [horizontal-scroll-bar down-mouse-1] 'scroll-bar-toolkit-horizontal-scroll)
(global-unset-key [vertical-scroll-bar mouse-1])
(global-unset-key [vertical-scroll-bar drag-mouse-1])
-
-(declare-function scroll-bar-scale "scroll-bar" (num-denom whole))
-
-(defun ns-scroll-bar-move (event)
- "Scroll the frame according to a Nextstep scroller event."
- (interactive "e")
- (let* ((pos (event-end event))
- (window (nth 0 pos))
- (scale (nth 2 pos)))
- (with-current-buffer (window-buffer window)
- (cond
- ((eq (car scale) (cdr scale))
- (goto-char (point-max)))
- ((= (car scale) 0)
- (goto-char (point-min)))
- (t
- (goto-char (+ (point-min) 1
- (scroll-bar-scale scale (- (point-max) (point-min)))))))
- (beginning-of-line)
- (set-window-start window (point))
- (vertical-motion (/ (window-height window) 2) window))))
-
-(defun ns-handle-scroll-bar-event (event)
- "Handle scroll bar EVENT to emulate Nextstep style scrolling."
- (interactive "e")
- (let* ((position (event-start event))
- (bar-part (nth 4 position))
- (window (nth 0 position))
- (old-window (selected-window)))
- (cond
- ((eq bar-part 'ratio)
- (ns-scroll-bar-move event))
- ((eq bar-part 'handle)
- (if (eq window (selected-window))
- (track-mouse (ns-scroll-bar-move event))
- ;; track-mouse faster for selected window, slower for unselected.
- (ns-scroll-bar-move event)))
- (t
- (select-window window)
- (cond
- ((eq bar-part 'up)
- (goto-char (window-start window))
- (scroll-down 1))
- ((eq bar-part 'above-handle)
- (scroll-down))
- ((eq bar-part 'below-handle)
- (scroll-up))
- ((eq bar-part 'down)
- (goto-char (window-start window))
- (scroll-up 1)))
- (select-window old-window)))))
+(global-unset-key [horizontal-scroll-bar mouse-1])
+(global-unset-key [horizontal-scroll-bar drag-mouse-1])
;;;; Color support.
@@ -936,5 +888,6 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
(ns-get-selection selection-symbol target-type))
(provide 'ns-win)
+(provide 'term/ns-win)
;;; ns-win.el ends here
diff --git a/lisp/term/pc-win.el b/lisp/term/pc-win.el
index 8ca98c6ec9..031768cec2 100644
--- a/lisp/term/pc-win.el
+++ b/lisp/term/pc-win.el
@@ -388,5 +388,6 @@ Errors out because it is not supposed to be called, ever."
;; ---------------------------------------------------------------------------
(provide 'pc-win)
+(provide 'term/pc-win)
;;; pc-win.el ends here
diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el
index da26d30a68..97d3865911 100644
--- a/lisp/term/rxvt.el
+++ b/lisp/term/rxvt.el
@@ -195,4 +195,6 @@
(* (apply '+ (car (cddr (nth 15 rxvt-standard-colors)))) 0.6))
(set-terminal-parameter nil 'background-mode 'dark)))))
+(provide 'term/rxvt)
+
;;; rxvt.el ends here
diff --git a/lisp/term/screen.el b/lisp/term/screen.el
index 7f681154d6..d7ee770520 100644
--- a/lisp/term/screen.el
+++ b/lisp/term/screen.el
@@ -20,4 +20,6 @@ it runs, which can change when the screen session is moved to another tty."
(let ((xterm-extra-capabilities xterm-screen-extra-capabilities))
(tty-run-terminal-initialization (selected-frame) "xterm")))
+(provide 'term/screen)
+
;; screen.el ends here
diff --git a/lisp/term/sun.el b/lisp/term/sun.el
index 7fb8e7ed98..ef40db16d1 100644
--- a/lisp/term/sun.el
+++ b/lisp/term/sun.el
@@ -158,4 +158,6 @@
(eval (car hooks))
(setq hooks (cdr hooks))))))
+(provide 'term/sun)
+
;;; sun.el ends here
diff --git a/lisp/term/tty-colors.el b/lisp/term/tty-colors.el
index 3ea26b8c3e..a88695062b 100644
--- a/lisp/term/tty-colors.el
+++ b/lisp/term/tty-colors.el
@@ -1035,4 +1035,6 @@ A color is considered gray if the 3 components of its RGB value are equal."
(setq colors (cdr colors)))
count))
+(provide 'term/tty-colors)
+
;;; tty-colors.el ends here
diff --git a/lisp/term/tvi970.el b/lisp/term/tvi970.el
index 1173f9f15d..e25a3b616d 100644
--- a/lisp/term/tvi970.el
+++ b/lisp/term/tvi970.el
@@ -115,4 +115,6 @@ which the keypad's keys act as ordinary digits."
(send-string-to-terminal
(if (terminal-parameter nil 'tvi970-keypad-numeric) "\e=" "\e>")))
+(provide 'term/tvi970)
+
;;; tvi970.el ends here
diff --git a/lisp/term/vt100.el b/lisp/term/vt100.el
index fb46c99649..16a1c271b9 100644
--- a/lisp/term/vt100.el
+++ b/lisp/term/vt100.el
@@ -48,4 +48,6 @@ switch to 132-column mode if ARG is omitted or nil."
(send-string-to-terminal (if vt100-wide-mode "\e[?3h" "\e[?3l"))
(set-frame-width terminal-frame (if vt100-wide-mode 132 80)))
+(provide 'term/vt100)
+
;;; vt100.el ends here
diff --git a/lisp/term/vt200.el b/lisp/term/vt200.el
index 550266816e..dde2e22906 100644
--- a/lisp/term/vt200.el
+++ b/lisp/term/vt200.el
@@ -7,4 +7,6 @@
(define-key input-decode-map "\e[23~" [f11]) ;Probably redundant.
(define-key local-function-key-map [f11] [?\e]))
+(provide 'term/vt200)
+
;;; vt200.el ends here
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index 134e3106b7..8f3eaa2c02 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -463,5 +463,6 @@ That includes all Windows systems except for 9X/Me."
(getenv "SystemRoot"))
(provide 'w32-win)
+(provide 'term/w32-win)
;;; w32-win.el ends here
diff --git a/lisp/term/w32console.el b/lisp/term/w32console.el
index b7e0a22bfb..bf1550f7c3 100644
--- a/lisp/term/w32console.el
+++ b/lisp/term/w32console.el
@@ -93,4 +93,6 @@
(tty-set-up-initial-frame-faces)
(run-hooks 'terminal-init-w32-hook))
+(provide 'term/w32console)
+
;;; w32console.el ends here
diff --git a/lisp/term/wyse50.el b/lisp/term/wyse50.el
index 3e1055a187..d3ee7a0a6c 100644
--- a/lisp/term/wyse50.el
+++ b/lisp/term/wyse50.el
@@ -155,4 +155,6 @@ M-r M-x move-to-window-line, Funct up-arrow or down-arrow are similar"
;; (nth 1 key-definition)))
(fset 'enable-arrow-keys nil))
+(provide 'term/wyse50)
+
;;; wyse50.el ends here
diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el
index 59df14da93..c8e79e3f81 100644
--- a/lisp/term/x-win.el
+++ b/lisp/term/x-win.el
@@ -1487,5 +1487,6 @@ This uses `icon-map-list' to map icon file names to stock icon names."
(global-set-key [XF86WakeUp] 'ignore)
(provide 'x-win)
+(provide 'term/x-win)
;;; x-win.el ends here
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 19eb37a51d..01c01130e7 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -591,6 +591,19 @@ Return the pasted text as a string."
(define-key map [f59] [M-f11])
(define-key map [f60] [M-f12])
+ (define-key map [f61] [M-S-f1])
+ (define-key map [f62] [M-S-f2])
+ (define-key map [f63] [M-S-f3])
+ (define-key map [f64] [M-S-f4])
+ (define-key map [f65] [M-S-f5])
+ (define-key map [f66] [M-S-f6])
+ (define-key map [f67] [M-S-f7])
+ (define-key map [f68] [M-S-f8])
+ (define-key map [f69] [M-S-f9])
+ (define-key map [f70] [M-S-f10])
+ (define-key map [f71] [M-S-f11])
+ (define-key map [f72] [M-S-f12])
+
map)
"Keymap of possible alternative meanings for some keys.")
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index b3a41d3822..261826e8b2 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -29,11 +29,15 @@
;; - electric ; and }
;; - filling code with auto-fill-mode
-;; - attribute value completion
;; - fix font-lock errors with multi-line selectors
+;; - support completion of user-defined classes names and IDs
;;; Code:
+(require 'seq)
+(require 'sgml-mode)
+(require 'smie)
+
(defgroup css nil
"Cascading Style Sheets (CSS) editing mode."
:group 'languages)
@@ -51,9 +55,20 @@
"Identifiers for pseudo-elements.")
(defconst css-at-ids
- '("charset" "font-face" "import" "media" "namespace" "page")
+ '("charset" "font-face" "import" "keyframes" "media" "namespace"
+ "page")
"Identifiers that appear in the form @foo.")
+(defconst scss-at-ids
+ '("at-root" "content" "debug" "each" "else" "else if" "error" "extend"
+ "for" "function" "if" "import" "include" "mixin" "return" "warn"
+ "while")
+ "Additional identifiers that appear in the form @foo in SCSS.")
+
+(defvar css--at-ids css-at-ids
+ "List of at-rules for the current mode.")
+(make-variable-buffer-local 'css--at-ids)
+
(defconst css-bang-ids
'("important")
"Identifiers that appear in the form !foo.")
@@ -62,6 +77,10 @@
'("default" "global" "optional")
"Additional identifiers that appear in the form !foo in SCSS.")
+(defvar css--bang-ids css-bang-ids
+ "List of bang-rules for the current mode.")
+(make-variable-buffer-local 'css--bang-ids)
+
(defconst css-descriptor-ids
'("ascent" "baseline" "bbox" "cap-height" "centerline" "definition-src"
"descent" "font-family" "font-size" "font-stretch" "font-style"
@@ -74,110 +93,498 @@
"visual")
"Identifiers for types of media.")
-(defconst css-property-ids
- '(;; CSS 2.1 properties (http://www.w3.org/TR/CSS21/propidx.html).
- ;;
- ;; Properties duplicated by any of the CSS3 modules below have
- ;; been removed.
- "azimuth" "border-collapse" "border-spacing" "bottom"
- "caption-side" "clear" "clip" "content" "counter-increment"
- "counter-reset" "cue" "cue-after" "cue-before" "direction" "display"
- "elevation" "empty-cells" "float" "height" "left" "line-height"
- "list-style" "list-style-image" "list-style-position"
- "list-style-type" "margin" "margin-bottom" "margin-left"
- "margin-right" "margin-top" "max-height" "max-width" "min-height"
- "min-width" "orphans" "padding" "padding-bottom" "padding-left"
- "padding-right" "padding-top" "page-break-after"
- "page-break-before" "page-break-inside" "pause" "pause-after"
- "pause-before" "pitch" "pitch-range" "play-during" "position"
- "quotes" "richness" "right" "speak" "speak-header" "speak-numeral"
- "speak-punctuation" "speech-rate" "stress" "table-layout" "top"
- "unicode-bidi" "vertical-align" "visibility" "voice-family" "volume"
- "widows" "width" "z-index"
+(defconst css-property-alist
+ ;; CSS 2.1 properties (http://www.w3.org/TR/CSS21/propidx.html).
+ ;;
+ ;; Properties duplicated by any of the CSS3 modules below have been
+ ;; removed.
+ '(("azimuth" angle "left-side" "far-left" "left" "center-left"
+ "center" "center-right" "right" "far-right" "right-side" "behind"
+ "leftwards" "rightwards")
+ ("border-collapse" "collapse" "separate")
+ ("border-spacing" length)
+ ("bottom" length percentage "auto")
+ ("caption-side" "top" "bottom")
+ ("clear" "none" "left" "right" "both")
+ ("clip" shape "auto")
+ ("content" "normal" "none" string uri counter "attr()"
+ "open-quote" "close-quote" "no-open-quote" "no-close-quote")
+ ("counter-increment" identifier integer "none")
+ ("counter-reset" identifier integer "none")
+ ("cue" cue-before cue-after)
+ ("cue-after" uri "none")
+ ("cue-before" uri "none")
+ ("direction" "ltr" "rtl")
+ ("display" "inline" "block" "list-item" "inline-block" "table"
+ "inline-table" "table-row-group" "table-header-group"
+ "table-footer-group" "table-row" "table-column-group"
+ "table-column" "table-cell" "table-caption" "none"
+ ;; CSS Flexible Box Layout Module Level 1
+ ;; (https://www.w3.org/TR/css3-flexbox/#valdef-display-flex)
+ "flex" "inline-flex")
+ ("elevation" angle "below" "level" "above" "higher" "lower")
+ ("empty-cells" "show" "hide")
+ ("float" "left" "right" "none")
+ ("height" length percentage "auto")
+ ("left" length percentage "auto")
+ ("line-height" "normal" number length percentage)
+ ("list-style" list-style-type list-style-position
+ list-style-image)
+ ("list-style-image" uri "none")
+ ("list-style-position" "inside" "outside")
+ ("list-style-type" "disc" "circle" "square" "decimal"
+ "decimal-leading-zero" "lower-roman" "upper-roman" "lower-greek"
+ "lower-latin" "upper-latin" "armenian" "georgian" "lower-alpha"
+ "upper-alpha" "none")
+ ("margin" margin-width)
+ ("margin-bottom" margin-width)
+ ("margin-left" margin-width)
+ ("margin-right" margin-width)
+ ("margin-top" margin-width)
+ ("max-height" length percentage "none")
+ ("max-width" length percentage "none")
+ ("min-height" length percentage)
+ ("min-width" length percentage)
+ ("padding" padding-width)
+ ("padding-bottom" padding-width)
+ ("padding-left" padding-width)
+ ("padding-right" padding-width)
+ ("padding-top" padding-width)
+ ("page-break-after" "auto" "always" "avoid" "left" "right")
+ ("page-break-before" "auto" "always" "avoid" "left" "right")
+ ("page-break-inside" "avoid" "auto")
+ ("pause" time percentage)
+ ("pause-after" time percentage)
+ ("pause-before" time percentage)
+ ("pitch" frequency "x-low" "low" "medium" "high" "x-high")
+ ("pitch-range" number)
+ ("play-during" uri "mix" "repeat" "auto" "none")
+ ("position" "static" "relative" "absolute" "fixed")
+ ("quotes" string "none")
+ ("richness" number)
+ ("right" length percentage "auto")
+ ("speak" "normal" "none" "spell-out")
+ ("speak-header" "once" "always")
+ ("speak-numeral" "digits" "continuous")
+ ("speak-punctuation" "code" "none")
+ ("speech-rate" number "x-slow" "slow" "medium" "fast" "x-fast"
+ "faster" "slower")
+ ("stress" number)
+ ("table-layout" "auto" "fixed")
+ ("top" length percentage "auto")
+ ("unicode-bidi" "normal" "embed" "bidi-override")
+ ("vertical-align" "baseline" "sub" "super" "top" "text-top"
+ "middle" "bottom" "text-bottom" percentage length)
+ ("visibility" "visible" "hidden" "collapse")
+ ("voice-family" specific-voice generic-voice specific-voice
+ generic-voice)
+ ("volume" number percentage "silent" "x-soft" "soft" "medium"
+ "loud" "x-loud")
+ ("width" length percentage "auto")
+ ("z-index" "auto" integer)
;; CSS Animations
;; (http://www.w3.org/TR/css3-animations/#property-index)
- "animation" "animation-delay" "animation-direction"
- "animation-duration" "animation-fill-mode"
- "animation-iteration-count" "animation-name"
- "animation-play-state" "animation-timing-function"
+ ("animation" single-animation-name time single-timing-function
+ single-animation-iteration-count single-animation-direction
+ single-animation-fill-mode single-animation-play-state)
+ ("animation-delay" time)
+ ("animation-direction" single-animation-direction)
+ ("animation-duration" time)
+ ("animation-fill-mode" single-animation-fill-mode)
+ ("animation-iteration-count" single-animation-iteration-count)
+ ("animation-name" single-animation-name)
+ ("animation-play-state" single-animation-play-state)
+ ("animation-timing-function" single-timing-function)
;; CSS Backgrounds and Borders Module Level 3
;; (http://www.w3.org/TR/css3-background/#property-index)
- "background" "background-attachment" "background-clip"
- "background-color" "background-image" "background-origin"
- "background-position" "background-repeat" "background-size"
- "border" "border-bottom" "border-bottom-color"
- "border-bottom-left-radius" "border-bottom-right-radius"
- "border-bottom-style" "border-bottom-width" "border-color"
- "border-image" "border-image-outset" "border-image-repeat"
- "border-image-slice" "border-image-source" "border-image-width"
- "border-left" "border-left-color" "border-left-style"
- "border-left-width" "border-radius" "border-right"
- "border-right-color" "border-right-style" "border-right-width"
- "border-style" "border-top" "border-top-color"
- "border-top-left-radius" "border-top-right-radius"
- "border-top-style" "border-top-width" "border-width" "box-shadow"
+ ("background" bg-layer final-bg-layer)
+ ("background-attachment" attachment)
+ ("background-clip" box)
+ ("background-color" color)
+ ("background-image" bg-image)
+ ("background-origin" box)
+ ("background-position" position)
+ ("background-repeat" repeat-style)
+ ("background-size" bg-size)
+ ("border" line-width line-style color)
+ ("border-bottom" line-width line-style color)
+ ("border-bottom-color" color)
+ ("border-bottom-left-radius" length percentage)
+ ("border-bottom-right-radius" length percentage)
+ ("border-bottom-style" line-style)
+ ("border-bottom-width" line-width)
+ ("border-color" color)
+ ("border-image" border-image-source border-image-slice
+ border-image-width border-image-outset border-image-repeat)
+ ("border-image-outset" length number)
+ ("border-image-repeat" "stretch" "repeat" "round" "space")
+ ("border-image-slice" number percentage "fill")
+ ("border-image-source" "none" image)
+ ("border-image-width" length percentage number "auto")
+ ("border-left" line-width line-style color)
+ ("border-left-color" color)
+ ("border-left-style" line-style)
+ ("border-left-width" line-width)
+ ("border-radius" length percentage)
+ ("border-right" line-width line-style color)
+ ("border-right-color" color)
+ ("border-right-style" line-style)
+ ("border-right-width" line-width)
+ ("border-style" line-style)
+ ("border-top" line-width line-style color)
+ ("border-top-color" color)
+ ("border-top-left-radius" length percentage)
+ ("border-top-right-radius" length percentage)
+ ("border-top-style" line-style)
+ ("border-top-width" line-width)
+ ("border-width" line-width)
+ ("box-shadow" "none" shadow)
;; CSS Basic User Interface Module Level 3 (CSS3 UI)
;; (http://www.w3.org/TR/css3-ui/#property-index)
- "box-sizing" "caret-color" "cursor" "nav-down" "nav-left"
- "nav-right" "nav-up" "outline" "outline-color" "outline-offset"
- "outline-style" "outline-width" "resize" "text-overflow"
+ ("box-sizing" "content-box" "border-box")
+ ("caret-color" "auto" color)
+ ("cursor" uri x y "auto" "default" "none" "context-menu" "help"
+ "pointer" "progress" "wait" "cell" "crosshair" "text"
+ "vertical-text" "alias" "copy" "move" "no-drop" "not-allowed"
+ "grab" "grabbing" "e-resize" "n-resize" "ne-resize" "nw-resize"
+ "s-resize" "se-resize" "sw-resize" "w-resize" "ew-resize"
+ "ns-resize" "nesw-resize" "nwse-resize" "col-resize" "row-resize"
+ "all-scroll" "zoom-in" "zoom-out")
+ ("nav-down" "auto" id "current" "root" target-name)
+ ("nav-left" "auto" id "current" "root" target-name)
+ ("nav-right" "auto" id "current" "root" target-name)
+ ("nav-up" "auto" id "current" "root" target-name)
+ ("outline" outline-color outline-style outline-width)
+ ("outline-color" color "invert")
+ ("outline-offset" length)
+ ("outline-style" "auto" border-style)
+ ("outline-width" border-width)
+ ("resize" "none" "both" "horizontal" "vertical")
+ ("text-overflow" "clip" "ellipsis" string)
;; CSS Color Module Level 3
;; (http://www.w3.org/TR/css3-color/#property)
- "color" "opacity"
+ ("color" color)
+ ("opacity" alphavalue)
;; CSS Flexible Box Layout Module Level 1
;; (http://www.w3.org/TR/css-flexbox-1/#property-index)
- "align-content" "align-items" "align-self" "flex" "flex-basis"
- "flex-direction" "flex-flow" "flex-grow" "flex-shrink" "flex-wrap"
- "justify-content" "order"
+ ("align-content" "flex-start" "flex-end" "center" "space-between"
+ "space-around" "stretch")
+ ("align-items" "flex-start" "flex-end" "center" "baseline"
+ "stretch")
+ ("align-self" "auto" "flex-start" "flex-end" "center" "baseline"
+ "stretch")
+ ("flex" "none" flex-grow flex-shrink flex-basis)
+ ("flex-basis" "auto" "content" width)
+ ("flex-direction" "row" "row-reverse" "column" "column-reverse")
+ ("flex-flow" flex-direction flex-wrap)
+ ("flex-grow" number)
+ ("flex-shrink" number)
+ ("flex-wrap" "nowrap" "wrap" "wrap-reverse")
+ ("justify-content" "flex-start" "flex-end" "center"
+ "space-between" "space-around")
+ ("order" integer)
;; CSS Fonts Module Level 3
;; (http://www.w3.org/TR/css3-fonts/#property-index)
- "font" "font-family" "font-feature-settings" "font-kerning"
- "font-language-override" "font-size" "font-size-adjust"
- "font-stretch" "font-style" "font-synthesis" "font-variant"
- "font-variant-alternates" "font-variant-caps"
- "font-variant-east-asian" "font-variant-ligatures"
- "font-variant-numeric" "font-variant-position" "font-weight"
+ ("font" font-style font-variant-css21 font-weight font-stretch
+ font-size line-height font-family "caption" "icon" "menu"
+ "message-box" "small-caption" "status-bar")
+ ("font-family" family-name generic-family)
+ ("font-feature-settings" "normal" feature-tag-value)
+ ("font-kerning" "auto" "normal" "none")
+ ("font-language-override" "normal" string)
+ ("font-size" absolute-size relative-size length percentage)
+ ("font-size-adjust" "none" number)
+ ("font-stretch" "normal" "ultra-condensed" "extra-condensed"
+ "condensed" "semi-condensed" "semi-expanded" "expanded"
+ "extra-expanded" "ultra-expanded")
+ ("font-style" "normal" "italic" "oblique")
+ ("font-synthesis" "none" "weight" "style")
+ ("font-variant" "normal" "none" common-lig-values
+ discretionary-lig-values historical-lig-values
+ contextual-alt-values "stylistic()" "historical-forms"
+ "styleset()" "character-variant()" "swash()" "ornaments()"
+ "annotation()" "small-caps" "all-small-caps" "petite-caps"
+ "all-petite-caps" "unicase" "titling-caps" numeric-figure-values
+ numeric-spacing-values numeric-fraction-values "ordinal"
+ "slashed-zero" east-asian-variant-values east-asian-width-values
+ "ruby")
+ ("font-variant-alternates" "normal" "stylistic()"
+ "historical-forms" "styleset()" "character-variant()" "swash()"
+ "ornaments()" "annotation()")
+ ("font-variant-caps" "normal" "small-caps" "all-small-caps"
+ "petite-caps" "all-petite-caps" "unicase" "titling-caps")
+ ("font-variant-east-asian" "normal" east-asian-variant-values
+ east-asian-width-values "ruby")
+ ("font-variant-ligatures" "normal" "none" common-lig-values
+ discretionary-lig-values historical-lig-values
+ contextual-alt-values)
+ ("font-variant-numeric" "normal" numeric-figure-values
+ numeric-spacing-values numeric-fraction-values "ordinal"
+ "slashed-zero")
+ ("font-variant-position" "normal" "sub" "super")
+ ("font-weight" "normal" "bold" "bolder" "lighter" "100" "200"
+ "300" "400" "500" "600" "700" "800" "900")
+
+ ;; CSS Fragmentation Module Level 3
+ ;; (https://www.w3.org/TR/css-break-3/#property-index)
+ ("box-decoration-break" "slice" "clone")
+ ("break-after" "auto" "avoid" "avoid-page" "page" "left" "right"
+ "recto" "verso" "avoid-column" "column" "avoid-region" "region")
+ ("break-before" "auto" "avoid" "avoid-page" "page" "left" "right"
+ "recto" "verso" "avoid-column" "column" "avoid-region" "region")
+ ("break-inside" "auto" "avoid" "avoid-page" "avoid-column"
+ "avoid-region")
+ ("orphans" integer)
+ ("widows" integer)
+
+ ;; CSS Multi-column Layout Module
+ ;; (https://www.w3.org/TR/css3-multicol/#property-index)
+ ;; "break-after", "break-before", and "break-inside" are left out
+ ;; below, because they're already included in CSS Fragmentation
+ ;; Module Level 3.
+ ("column-count" integer "auto")
+ ("column-fill" "auto" "balance")
+ ("column-gap" length "normal")
+ ("column-rule" column-rule-width column-rule-style
+ column-rule-color "transparent")
+ ("column-rule-color" color)
+ ("column-rule-style" border-style)
+ ("column-rule-width" border-width)
+ ("column-span" "none" "all")
+ ("column-width" length "auto")
+ ("columns" column-width column-count)
;; CSS Overflow Module Level 3
;; (http://www.w3.org/TR/css-overflow-3/#property-index)
- "max-lines" "overflow" "overflow-x" "overflow-y"
+ ("max-lines" "none" integer)
+ ("overflow" "visible" "hidden" "scroll" "auto" "paged-x" "paged-y"
+ "paged-x-controls" "paged-y-controls" "fragments")
+ ("overflow-x" "visible" "hidden" "scroll" "auto" "paged-x"
+ "paged-y" "paged-x-controls" "paged-y-controls" "fragments")
+ ("overflow-y" "visible" "hidden" "scroll" "auto" "paged-x"
+ "paged-y" "paged-x-controls" "paged-y-controls" "fragments")
;; CSS Text Decoration Module Level 3
;; (http://dev.w3.org/csswg/css-text-decor-3/#property-index)
- "text-decoration" "text-decoration-color" "text-decoration-line"
- "text-decoration-skip" "text-decoration-style" "text-emphasis"
- "text-emphasis-color" "text-emphasis-position" "text-emphasis-style"
- "text-shadow" "text-underline-position"
+ ("text-decoration" text-decoration-line text-decoration-style
+ text-decoration-color)
+ ("text-decoration-color" color)
+ ("text-decoration-line" "none" "underline" "overline"
+ "line-through" "blink")
+ ("text-decoration-skip" "none" "objects" "spaces" "ink" "edges"
+ "box-decoration")
+ ("text-decoration-style" "solid" "double" "dotted" "dashed"
+ "wavy")
+ ("text-emphasis" text-emphasis-style text-emphasis-color)
+ ("text-emphasis-color" color)
+ ("text-emphasis-position" "over" "under" "right" "left")
+ ("text-emphasis-style" "none" "filled" "open" "dot" "circle"
+ "double-circle" "triangle" "sesame" string)
+ ("text-shadow" "none" length color)
+ ("text-underline-position" "auto" "under" "left" "right")
;; CSS Text Module Level 3
;; (http://www.w3.org/TR/css3-text/#property-index)
- "hanging-punctuation" "hyphens" "letter-spacing" "line-break"
- "overflow-wrap" "tab-size" "text-align" "text-align-last"
- "text-indent" "text-justify" "text-transform" "white-space"
- "word-break" "word-spacing" "word-wrap"
+ ("hanging-punctuation" "none" "first" "force-end" "allow-end"
+ "last")
+ ("hyphens" "none" "manual" "auto")
+ ("letter-spacing" "normal" length)
+ ("line-break" "auto" "loose" "normal" "strict")
+ ("overflow-wrap" "normal" "break-word")
+ ("tab-size" integer length)
+ ("text-align" "start" "end" "left" "right" "center" "justify"
+ "match-parent")
+ ("text-align-last" "auto" "start" "end" "left" "right" "center"
+ "justify")
+ ("text-indent" length percentage)
+ ("text-justify" "auto" "none" "inter-word" "distribute")
+ ("text-transform" "none" "capitalize" "uppercase" "lowercase"
+ "full-width")
+ ("white-space" "normal" "pre" "nowrap" "pre-wrap" "pre-line")
+ ("word-break" "normal" "keep-all" "break-all")
+ ("word-spacing" "normal" length percentage)
+ ("word-wrap" "normal" "break-word")
;; CSS Transforms Module Level 1
;; (http://www.w3.org/TR/css3-2d-transforms/#property-index)
- "backface-visibility" "perspective" "perspective-origin"
- "transform" "transform-origin" "transform-style"
+ ("backface-visibility" "visible" "hidden")
+ ("perspective" "none" length)
+ ("perspective-origin" "left" "center" "right" "top" "bottom"
+ percentage length)
+ ("transform" "none" transform-list)
+ ("transform-origin" "left" "center" "right" "top" "bottom"
+ percentage length)
+ ("transform-style" "flat" "preserve-3d")
;; CSS Transitions
;; (http://www.w3.org/TR/css3-transitions/#property-index)
- "transition" "transition-delay" "transition-duration"
- "transition-property" "transition-timing-function"
+ ("transition" single-transition)
+ ("transition-delay" time)
+ ("transition-duration" time)
+ ("transition-property" "none" single-transition-property "all")
+ ("transition-timing-function" single-transition-timing-function)
;; Filter Effects Module Level 1
;; (http://www.w3.org/TR/filter-effects/#property-index)
- "color-interpolation-filters" "filter" "flood-color"
- "flood-opacity" "lighting-color")
+ ("color-interpolation-filters" "auto" "sRGB" "linearRGB")
+ ("filter" "none" filter-function-list)
+ ("flood-color" color)
+ ("flood-opacity" number percentage)
+ ("lighting-color" color))
+ "Identifiers for properties and their possible values.
+The CAR of each entry is the name of a property, while the CDR is
+a list of possible values for that property. String values in
+the CDRs represent literal values, while symbols represent one of
+the value classes found in `css-value-class-alist'. If a symbol
+is not found in `css-value-class-alist', it's interpreted as a
+reference back to one of the properties in this list. Some
+symbols, such as `number' or `identifier', don't produce any
+further value candidates, since that list would be infinite.")
+
+(defconst css-property-ids
+ (mapcar #'car css-property-alist)
"Identifiers for properties.")
+(defconst css-value-class-alist
+ '((absolute-size
+ "xx-small" "x-small" "small" "medium" "large" "x-large"
+ "xx-large")
+ (alphavalue number)
+ (angle "calc()")
+ (attachment "scroll" "fixed" "local")
+ (bg-image image "none")
+ (bg-layer bg-image position repeat-style attachment box)
+ (bg-size length percentage "auto" "cover" "contain")
+ (box "border-box" "padding-box" "content-box")
+ (color
+ "rgb()" "rgba()" "hsl()" "hsla()" named-color "transparent"
+ "currentColor")
+ (common-lig-values "common-ligatures" "no-common-ligatures")
+ (contextual-alt-values "contextual" "no-contextual")
+ (counter "counter()" "counters()")
+ (discretionary-lig-values
+ "discretionary-ligatures" "no-discretionary-ligatures")
+ (east-asian-variant-values
+ "jis78" "jis83" "jis90" "jis04" "simplified" "traditional")
+ (east-asian-width-values "full-width" "proportional-width")
+ (family-name "Courier" "Helvetica" "Times")
+ (feature-tag-value string integer "on" "off")
+ (filter-function
+ "blur()" "brightness()" "contrast()" "drop-shadow()"
+ "grayscale()" "hue-rotate()" "invert()" "opacity()" "sepia()"
+ "saturate()")
+ (filter-function-list filter-function uri)
+ (final-bg-layer
+ bg-image position repeat-style attachment box color)
+ (font-variant-css21 "normal" "small-caps")
+ (frequency "calc()")
+ (generic-family
+ "serif" "sans-serif" "cursive" "fantasy" "monospace")
+ (generic-voice "male" "female" "child")
+ (gradient
+ linear-gradient radial-gradient repeating-linear-gradient
+ repeating-radial-gradient)
+ (historical-lig-values
+ "historical-ligatures" "no-historical-ligatures")
+ (image uri image-list element-reference gradient)
+ (image-list "image()")
+ (integer "calc()")
+ (length "calc()" number)
+ (line-height "normal" number length percentage)
+ (line-style
+ "none" "hidden" "dotted" "dashed" "solid" "double" "groove"
+ "ridge" "inset" "outset")
+ (line-width length "thin" "medium" "thick")
+ (linear-gradient "linear-gradient()")
+ (margin-width "auto" length percentage)
+ (named-color
+ "aliceblue" "antiquewhite" "aqua" "aquamarine" "azure" "beige"
+ "bisque" "black" "blanchedalmond" "blue" "blueviolet" "brown"
+ "burlywood" "cadetblue" "chartreuse" "chocolate" "coral"
+ "cornflowerblue" "cornsilk" "crimson" "cyan" "darkblue"
+ "darkcyan" "darkgoldenrod" "darkgray" "darkgreen" "darkkhaki"
+ "darkmagenta" "darkolivegreen" "darkorange" "darkorchid"
+ "darkred" "darksalmon" "darkseagreen" "darkslateblue"
+ "darkslategray" "darkturquoise" "darkviolet" "deeppink"
+ "deepskyblue" "dimgray" "dodgerblue" "firebrick" "floralwhite"
+ "forestgreen" "fuchsia" "gainsboro" "ghostwhite" "gold"
+ "goldenrod" "gray" "green" "greenyellow" "honeydew" "hotpink"
+ "indianred" "indigo" "ivory" "khaki" "lavender" "lavenderblush"
+ "lawngreen" "lemonchiffon" "lightblue" "lightcoral" "lightcyan"
+ "lightgoldenrodyellow" "lightgray" "lightgreen" "lightpink"
+ "lightsalmon" "lightseagreen" "lightskyblue" "lightslategray"
+ "lightsteelblue" "lightyellow" "lime" "limegreen" "linen"
+ "magenta" "maroon" "mediumaquamarine" "mediumblue" "mediumorchid"
+ "mediumpurple" "mediumseagreen" "mediumslateblue"
+ "mediumspringgreen" "mediumturquoise" "mediumvioletred"
+ "midnightblue" "mintcream" "mistyrose" "moccasin" "navajowhite"
+ "navy" "oldlace" "olive" "olivedrab" "orange" "orangered"
+ "orchid" "palegoldenrod" "palegreen" "paleturquoise"
+ "palevioletred" "papayawhip" "peachpuff" "peru" "pink" "plum"
+ "powderblue" "purple" "rebeccapurple" "red" "rosybrown"
+ "royalblue" "saddlebrown" "salmon" "sandybrown" "seagreen"
+ "seashell" "sienna" "silver" "skyblue" "slateblue" "slategray"
+ "snow" "springgreen" "steelblue" "tan" "teal" "thistle" "tomato"
+ "turquoise" "violet" "wheat" "white" "whitesmoke" "yellow"
+ "yellowgreen")
+ (number "calc()")
+ (numeric-figure-values "lining-nums" "oldstyle-nums")
+ (numeric-fraction-values "diagonal-fractions" "stacked-fractions")
+ (numeric-spacing-values "proportional-nums" "tabular-nums")
+ (padding-width length percentage)
+ (position
+ "left" "center" "right" "top" "bottom" percentage length)
+ (radial-gradient "radial-gradient()")
+ (relative-size "larger" "smaller")
+ (repeat-style
+ "repeat-x" "repeat-y" "repeat" "space" "round" "no-repeat")
+ (repeating-linear-gradient "repeating-linear-gradient()")
+ (repeating-radial-gradient "repeating-radial-gradient()")
+ (shadow "inset" length color)
+ (shape "rect()")
+ (single-animation-direction
+ "normal" "reverse" "alternate" "alternate-reverse")
+ (single-animation-fill-mode "none" "forwards" "backwards" "both")
+ (single-animation-iteration-count "infinite" number)
+ (single-animation-name "none" identifier)
+ (single-animation-play-state "running" "paused")
+ (single-timing-function single-transition-timing-function)
+ (single-transition
+ "none" single-transition-property time
+ single-transition-timing-function)
+ (single-transition-property "all" identifier)
+ (single-transition-timing-function
+ "ease" "linear" "ease-in" "ease-out" "ease-in-out" "step-start"
+ "step-end" "steps()" "cubic-bezier()")
+ (specific-voice identifier)
+ (target-name string)
+ (time "calc()")
+ (transform-list
+ "matrix()" "translate()" "translateX()" "translateY()" "scale()"
+ "scaleX()" "scaleY()" "rotate()" "skew()" "skewX()" "skewY()"
+ "matrix3d()" "translate3d()" "translateZ()" "scale3d()"
+ "scaleZ()" "rotate3d()" "rotateX()" "rotateY()" "rotateZ()"
+ "perspective()")
+ (uri "url()")
+ (width length percentage "auto")
+ (x number)
+ (y number))
+ "Property value classes and their values.
+The format is similar to that of `css-property-alist', except
+that the CARs aren't actual CSS properties, but rather a name for
+a class of values, and that symbols in the CDRs always refer to
+other entries in this list, not to properties.
+
+The following classes have been left out above because they
+cannot be completed sensibly: `element-reference', `id',
+`identifier', `percentage', and `string'.")
+
(defcustom css-electric-keys '(?\} ?\;) ;; '()
"Self inserting keys which should trigger re-indentation."
:version "22.2"
@@ -243,9 +650,7 @@
"Face to use for vendor-specific properties.")
(defun css--font-lock-keywords (&optional sassy)
- `((,(concat "!\\s-*"
- (regexp-opt (append (if sassy scss-bang-ids)
- css-bang-ids)))
+ `((,(concat "!\\s-*" (regexp-opt css--bang-ids))
(0 font-lock-builtin-face))
;; Atrules keywords. IDs not in css-at-ids are valid (ignored).
;; In fact the regexp should probably be
@@ -321,8 +726,6 @@
:type 'integer
:safe 'integerp)
-(require 'smie)
-
(defconst css-smie-grammar
(smie-prec2->grammar
(smie-precs->prec2 '((assoc ";") (assoc ",") (left ":")))))
@@ -377,6 +780,14 @@
(when (memq (char-before) '(?\{ ?\;))
(list start pos css-property-ids))))))
+(defun css--complete-bang-rule ()
+ "Complete bang-rule at point."
+ (save-excursion
+ (let ((pos (point)))
+ (skip-chars-backward "-[:alnum:]")
+ (when (eq (char-before) ?\!)
+ (list (point) pos css--bang-ids)))))
+
(defun css--complete-pseudo-element-or-class ()
"Complete pseudo-element or pseudo-class at point."
(save-excursion
@@ -394,15 +805,91 @@
(let ((pos (point)))
(skip-chars-backward "-[:alnum:]")
(when (eq (char-before) ?\@)
- (list (point) pos css-at-ids)))))
+ (list (point) pos css--at-ids)))))
+
+(defvar css--property-value-cache
+ (make-hash-table :test 'equal :size (length css-property-alist))
+ "Cache of previously completed property values.")
+
+(defun css--value-class-lookup (value-class)
+ "Return a list of value completion candidates for VALUE-CLASS.
+Completion candidates are looked up in `css-value-class-alist' by
+the symbol VALUE-CLASS."
+ (seq-uniq
+ (seq-mapcat
+ (lambda (value)
+ (if (stringp value)
+ (list value)
+ (css--value-class-lookup value)))
+ (cdr (assq value-class css-value-class-alist)))))
+
+(defun css--property-values (property)
+ "Return a list of value completion candidates for PROPERTY.
+Completion candidates are looked up in `css-property-alist' by
+the string PROPERTY."
+ (or (gethash property css--property-value-cache)
+ (let ((values
+ (seq-uniq
+ (seq-mapcat
+ (lambda (value)
+ (if (stringp value)
+ (list value)
+ (or (css--value-class-lookup value)
+ (css--property-values (symbol-name value)))))
+ (cdr (assoc property css-property-alist))))))
+ (puthash property values css--property-value-cache))))
+
+(defun css--complete-property-value ()
+ "Complete property value at point."
+ (let ((property
+ (save-excursion
+ (re-search-backward ":[^/]" (line-beginning-position) t)
+ (let ((property-end (point)))
+ (skip-chars-backward "-[:alnum:]")
+ (let ((property (buffer-substring (point) property-end)))
+ (car (member property css-property-ids)))))))
+ (when property
+ (let ((end (point)))
+ (save-excursion
+ (skip-chars-backward "[:graph:]")
+ (list (point) end
+ (append '("inherit" "initial" "unset")
+ (css--property-values property))))))))
+
+(defvar css--html-tags (mapcar #'car html-tag-alist)
+ "List of HTML tags.
+Used to provide completion of HTML tags in selectors.")
+
+(defvar css--nested-selectors-allowed nil
+ "Non-nil if nested selectors are allowed in the current mode.")
+(make-variable-buffer-local 'css--nested-selectors-allowed)
+
+;; TODO: Currently only supports completion of HTML tags. By looking
+;; at open HTML mode buffers we should be able to provide completion
+;; of user-defined classes and IDs too.
+(defun css--complete-selector ()
+ "Complete part of a CSS selector at point."
+ (when (or (= (nth 0 (syntax-ppss)) 0) css--nested-selectors-allowed)
+ (save-excursion
+ (let ((end (point)))
+ (skip-chars-backward "-[:alnum:]")
+ (list (point) end css--html-tags)))))
(defun css-completion-at-point ()
"Complete current symbol at point.
-Currently supports completion of CSS properties, pseudo-elements,
-pseudo-classes, and at-rules."
- (or (css--complete-property)
+Currently supports completion of CSS properties, property values,
+pseudo-elements, pseudo-classes, at-rules, and bang-rules."
+ (or (css--complete-bang-rule)
+ (css--complete-property-value)
(css--complete-pseudo-element-or-class)
- (css--complete-at-rule)))
+ (css--complete-at-rule)
+ (seq-let (prop-beg prop-end prop-table) (css--complete-property)
+ (seq-let (sel-beg sel-end sel-table) (css--complete-selector)
+ (when (or prop-table sel-table)
+ `(,@(if prop-table
+ (list prop-beg prop-end)
+ (list sel-beg sel-end))
+ ,(completion-table-merge prop-table sel-table)))))))
;;;###autoload
(define-derived-mode css-mode prog-mode "CSS"
@@ -533,9 +1020,11 @@ pseudo-classes, and at-rules."
(let ((st (make-syntax-table css-mode-syntax-table)))
(modify-syntax-entry ?/ ". 124" st)
(modify-syntax-entry ?\n ">" st)
+ ;; Variable names are prefixed by $.
+ (modify-syntax-entry ?$ "'" st)
st))
-(defvar scss-font-lock-keywords
+(defun scss-font-lock-keywords ()
(append `((,(concat "$" css-ident-re) (0 font-lock-variable-name-face)))
(css--font-lock-keywords 'sassy)
`((,(concat "@mixin[ \t]+\\(" css-ident-re "\\)[ \t]*(")
@@ -556,7 +1045,11 @@ pseudo-classes, and at-rules."
(setq-local comment-continue " *")
(setq-local comment-start-skip "/[*/]+[ \t]*")
(setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*+/\\)")
- (setq-local font-lock-defaults '(scss-font-lock-keywords nil t)))
+ (setq-local css--at-ids (append css-at-ids scss-at-ids))
+ (setq-local css--bang-ids (append css-bang-ids scss-bang-ids))
+ (setq-local css--nested-selectors-allowed t)
+ (setq-local font-lock-defaults
+ (list (scss-font-lock-keywords) nil t)))
(provide 'css-mode)
;;; css-mode.el ends here
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el
index 100e2a2436..173d1c9d19 100644
--- a/lisp/textmodes/fill.el
+++ b/lisp/textmodes/fill.el
@@ -804,65 +804,75 @@ region, instead of just filling the current paragraph."
(interactive (progn
(barf-if-buffer-read-only)
(list (if current-prefix-arg 'full) t)))
- (or
- ;; 1. Fill the region if it is active when called interactively.
- (and region transient-mark-mode mark-active
- (not (eq (region-beginning) (region-end)))
- (or (fill-region (region-beginning) (region-end) justify) t))
- ;; 2. Try fill-paragraph-function.
- (and (not (eq fill-paragraph-function t))
- (or fill-paragraph-function
- (and (minibufferp (current-buffer))
- (= 1 (point-min))))
- (let ((function (or fill-paragraph-function
- ;; In the minibuffer, don't count the width
- ;; of the prompt.
- 'fill-minibuffer-function))
- ;; If fill-paragraph-function is set, it probably takes care
- ;; of comments and stuff. If not, it will have to set
- ;; fill-paragraph-handle-comment back to t explicitly or
- ;; return nil.
- (fill-paragraph-handle-comment nil)
- (fill-paragraph-function t))
- (funcall function justify)))
- ;; 3. Try our syntax-aware filling code.
- (and fill-paragraph-handle-comment
- ;; Our code only handles \n-terminated comments right now.
- comment-start (equal comment-end "")
- (let ((fill-paragraph-handle-comment nil))
- (fill-comment-paragraph justify)))
- ;; 4. If it all fails, default to the good ol' text paragraph filling.
- (let ((before (point))
- (paragraph-start paragraph-start)
- ;; Fill prefix used for filling the paragraph.
- fill-pfx)
- ;; Try to prevent code sections and comment sections from being
- ;; filled together.
- (when (and fill-paragraph-handle-comment comment-start-skip)
- (setq paragraph-start
- (concat paragraph-start "\\|[ \t]*\\(?:"
- comment-start-skip "\\)")))
- (save-excursion
- ;; To make sure the return value of forward-paragraph is meaningful,
- ;; we have to start from the beginning of line, otherwise skipping
- ;; past the last few chars of a paragraph-separator would count as
- ;; a paragraph (and not skipping any chars at EOB would not count
- ;; as a paragraph even if it is).
- (move-to-left-margin)
- (if (not (zerop (fill-forward-paragraph 1)))
- ;; There's no paragraph at or after point: give up.
- (setq fill-pfx "")
- (let ((end (point))
- (beg (progn (fill-forward-paragraph -1) (point))))
- (goto-char before)
- (setq fill-pfx
- (if use-hard-newlines
- ;; Can't use fill-region-as-paragraph, since this
- ;; paragraph may still contain hard newlines. See
- ;; fill-region.
- (fill-region beg end justify)
- (fill-region-as-paragraph beg end justify))))))
- fill-pfx)))
+ (let ((hash (and (not (buffer-modified-p))
+ (buffer-hash))))
+ (prog1
+ (or
+ ;; 1. Fill the region if it is active when called interactively.
+ (and region transient-mark-mode mark-active
+ (not (eq (region-beginning) (region-end)))
+ (or (fill-region (region-beginning) (region-end) justify) t))
+ ;; 2. Try fill-paragraph-function.
+ (and (not (eq fill-paragraph-function t))
+ (or fill-paragraph-function
+ (and (minibufferp (current-buffer))
+ (= 1 (point-min))))
+ (let ((function (or fill-paragraph-function
+ ;; In the minibuffer, don't count
+ ;; the width of the prompt.
+ 'fill-minibuffer-function))
+ ;; If fill-paragraph-function is set, it probably
+ ;; takes care of comments and stuff. If not, it
+ ;; will have to set fill-paragraph-handle-comment
+ ;; back to t explicitly or return nil.
+ (fill-paragraph-handle-comment nil)
+ (fill-paragraph-function t))
+ (funcall function justify)))
+ ;; 3. Try our syntax-aware filling code.
+ (and fill-paragraph-handle-comment
+ ;; Our code only handles \n-terminated comments right now.
+ comment-start (equal comment-end "")
+ (let ((fill-paragraph-handle-comment nil))
+ (fill-comment-paragraph justify)))
+ ;; 4. If it all fails, default to the good ol' text paragraph filling.
+ (let ((before (point))
+ (paragraph-start paragraph-start)
+ ;; Fill prefix used for filling the paragraph.
+ fill-pfx)
+ ;; Try to prevent code sections and comment sections from being
+ ;; filled together.
+ (when (and fill-paragraph-handle-comment comment-start-skip)
+ (setq paragraph-start
+ (concat paragraph-start "\\|[ \t]*\\(?:"
+ comment-start-skip "\\)")))
+ (save-excursion
+ ;; To make sure the return value of forward-paragraph is
+ ;; meaningful, we have to start from the beginning of
+ ;; line, otherwise skipping past the last few chars of a
+ ;; paragraph-separator would count as a paragraph (and
+ ;; not skipping any chars at EOB would not count as a
+ ;; paragraph even if it is).
+ (move-to-left-margin)
+ (if (not (zerop (fill-forward-paragraph 1)))
+ ;; There's no paragraph at or after point: give up.
+ (setq fill-pfx "")
+ (let ((end (point))
+ (beg (progn (fill-forward-paragraph -1) (point))))
+ (goto-char before)
+ (setq fill-pfx
+ (if use-hard-newlines
+ ;; Can't use fill-region-as-paragraph, since this
+ ;; paragraph may still contain hard newlines. See
+ ;; fill-region.
+ (fill-region beg end justify)
+ (fill-region-as-paragraph beg end justify))))))
+ fill-pfx))
+ ;; If we didn't change anything in the buffer (and the buffer
+ ;; was previously unmodified), then flip the modification status
+ ;; back to "unchanged".
+ (when (and hash
+ (equal hash (buffer-hash)))
+ (set-buffer-modified-p nil)))))
(declare-function comment-search-forward "newcomment" (limit &optional noerror))
(declare-function comment-string-strip "newcomment" (str beforep afterp))
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index 730b55fbd8..042b7d40ed 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -88,11 +88,34 @@ downcased before comparing with these exceptions."
:version "24.1")
(defcustom flyspell-sort-corrections nil
- "Non-nil means, sort the corrections alphabetically before popping them."
+ "If non-nil, sort the corrections before popping them.
+The sorting is controlled by the `flyspell-sort-corrections-function'
+variable, and defaults to sorting alphabetically."
:group 'flyspell
:version "21.1"
:type 'boolean)
+(defcustom flyspell-sort-corrections-function
+ 'flyspell-sort-corrections-alphabetically
+ "The function used to sort corrections.
+This only happens if `flyspell-sort-corrections' is non-nil. The
+function takes three parameters -- the two correction candidates
+to be sorted, and the third parameter is the word that's being
+corrected."
+ :version "25.2"
+ :type 'function
+ :group 'flyspell)
+
+(defun flyspell-sort-corrections-alphabetically (corr1 corr2 _)
+ (string< corr1 corr2))
+
+(defun flyspell-sort (corrs word)
+ (if flyspell-sort-corrections
+ (sort corrs
+ (lambda (c1 c2)
+ (funcall flyspell-sort-corrections-function c1 c2 word)))
+ corrs))
+
(defcustom flyspell-duplicate-distance 400000
"The maximum distance for finding duplicates of unrecognized words.
This applies to the feature that when a word is not found in the dictionary,
@@ -1007,9 +1030,7 @@ Mostly we check word delimiters."
(defun flyspell-notify-misspell (word poss)
(let ((replacements (if (stringp poss)
poss
- (if flyspell-sort-corrections
- (sort (car (cdr (cdr poss))) 'string<)
- (car (cdr (cdr poss)))))))
+ (flyspell-sort (car (cdr (cdr poss))) word))))
(if flyspell-issue-message-flag
(message "misspelling `%s' %S" word replacements))))
@@ -1979,9 +2000,8 @@ This command proposes various successive corrections for the current word."
(error "Ispell: error in Ispell process"))
(t
;; The word is incorrect, we have to propose a replacement.
- (let ((replacements (if flyspell-sort-corrections
- (sort (car (cdr (cdr poss))) 'string<)
- (car (cdr (cdr poss))))))
+ (let ((replacements (flyspell-sort (car (cdr (cdr poss)))
+ word)))
(setq flyspell-auto-correct-region nil)
(if (consp replacements)
(progn
@@ -2229,9 +2249,7 @@ If OPOINT is non-nil, restore point there after adjusting it for replacement."
(setq event (list (list (car (cdr mouse-pos))
(1+ (cdr (cdr mouse-pos))))
(car mouse-pos)))))
- (let* ((corrects (if flyspell-sort-corrections
- (sort (car (cdr (cdr poss))) 'string<)
- (car (cdr (cdr poss)))))
+ (let* ((corrects (flyspell-sort (car (cdr (cdr poss))) word))
(cor-menu (if (consp corrects)
(mapcar (lambda (correct)
(list correct correct))
@@ -2262,9 +2280,7 @@ If OPOINT is non-nil, restore point there after adjusting it for replacement."
;;*---------------------------------------------------------------------*/
(defun flyspell-xemacs-popup (poss word cursor-location start end save)
"The XEmacs popup menu."
- (let* ((corrects (if flyspell-sort-corrections
- (sort (car (cdr (cdr poss))) 'string<)
- (car (cdr (cdr poss)))))
+ (let* ((corrects (flyspell-sort (car (cdr (cdr poss))) word))
(cor-menu (if (consp corrects)
(mapcar (lambda (correct)
(vector correct
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 0cedf86bb7..0ed6c68942 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -1,4 +1,4 @@
-;;; ispell.el --- interface to International Ispell Versions 3.1 and 3.2
+;;; ispell.el --- interface to International Ispell Versions 3.1 and 3.2 -*- lexical-binding:t -*-
;; Copyright (C) 1994-1995, 1997-2016 Free Software Foundation, Inc.
@@ -46,9 +46,9 @@
;; your own dictionaries.
;; Depending on the mail system you use, you may want to include these:
-;; (add-hook 'news-inews-hook 'ispell-message)
-;; (add-hook 'mail-send-hook 'ispell-message)
-;; (add-hook 'mh-before-send-letter-hook 'ispell-message)
+;; (add-hook 'news-inews-hook #'ispell-message)
+;; (add-hook 'mail-send-hook #'ispell-message)
+;; (add-hook 'mh-before-send-letter-hook #'ispell-message)
;; Ispell has a TeX parser and a nroff parser (the default).
;; The parsing is controlled by the variable ispell-parser. Currently
@@ -196,54 +196,46 @@
;; Fixed bug in returning to nroff mode from tex mode.
;;; Compatibility code for XEmacs and (not too) older emacsen:
-
-(eval-and-compile ;; Protect against declare-function undefined in XEmacs
- (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
-
-(declare-function ispell-check-minver "ispell" (v1 v2))
-(declare-function ispell-looking-back "ispell"
- (regexp &optional limit &rest ignored))
-
-(if (fboundp 'version<=)
- (defalias 'ispell-check-minver 'version<=)
- (defun ispell-check-minver (minver version)
- "Check if string VERSION is at least string MINVER.
+(defalias 'ispell-check-minver
+ (if (fboundp 'version<=) 'version<=
+ (lambda (minver version)
+ "Check if string VERSION is at least string MINVER.
Both must be in [0-9]+.[0-9]+... format. This is a fallback
compatibility function in case `version<=' is not available."
- (let ((pending t)
- (return t)
- start-ver start-mver)
- ;; Loop until an absolute greater or smaller condition is reached
- ;; or until no elements are left in any of version and minver. In
- ;; this case version is exactly the minimal, so return OK.
- (while pending
- (let (ver mver)
- (if (string-match "[0-9]+" version start-ver)
- (setq start-ver (match-end 0)
- ver (string-to-number (match-string 0 version))))
- (if (string-match "[0-9]+" minver start-mver)
- (setq start-mver (match-end 0)
- mver (string-to-number (match-string 0 minver))))
-
- (if (or ver mver)
- (progn
- (or ver (setq ver 0))
- (or mver (setq mver 0))
- ;; If none of below conditions match, this element is the
- ;; same. Go checking next element.
- (if (> ver mver)
- (setq pending nil)
- (if (< ver mver)
- (setq pending nil
- return nil))))
- (setq pending nil))))
- return)))
+ (let ((pending t)
+ (return t)
+ start-ver start-mver)
+ ;; Loop until an absolute greater or smaller condition is reached
+ ;; or until no elements are left in any of version and minver. In
+ ;; this case version is exactly the minimal, so return OK.
+ (while pending
+ (let (ver mver)
+ (if (string-match "[0-9]+" version start-ver)
+ (setq start-ver (match-end 0)
+ ver (string-to-number (match-string 0 version))))
+ (if (string-match "[0-9]+" minver start-mver)
+ (setq start-mver (match-end 0)
+ mver (string-to-number (match-string 0 minver))))
+
+ (if (or ver mver)
+ (progn
+ (or ver (setq ver 0))
+ (or mver (setq mver 0))
+ ;; If none of below conditions match, this element is the
+ ;; same. Go checking next element.
+ (if (> ver mver)
+ (setq pending nil)
+ (if (< ver mver)
+ (setq pending nil
+ return nil))))
+ (setq pending nil))))
+ return))))
;; XEmacs does not have looking-back
-(if (fboundp 'looking-back)
- (defalias 'ispell-looking-back 'looking-back)
- (defun ispell-looking-back (regexp &optional limit &rest ignored)
- "Return non-nil if text before point matches regular expression REGEXP.
+(defalias 'ispell-looking-back
+ (if (fboundp 'looking-back) 'looking-back
+ (lambda (regexp &optional limit &rest ignored)
+ "Return non-nil if text before point matches regular expression REGEXP.
Like `looking-at' except matches before point, and is slower.
LIMIT if non-nil speeds up the search by specifying a minimum
starting position, to avoid checking matches that would start
@@ -251,8 +243,8 @@ before LIMIT.
This is a stripped down compatibility function for use when
full featured `looking-back' function is missing."
- (save-excursion
- (re-search-backward (concat "\\(?:" regexp "\\)\\=") limit t))))
+ (save-excursion
+ (re-search-backward (concat "\\(?:" regexp "\\)\\=") limit t)))))
;;; XEmacs21 does not have `with-no-warnings'. Taken from org mode.
(defmacro ispell-with-no-warnings (&rest body)
@@ -260,6 +252,8 @@ full featured `looking-back' function is missing."
;;; Code:
+(eval-when-compile (require 'cl-lib))
+
(defvar mail-yank-prefix)
(defgroup ispell nil
@@ -402,19 +396,15 @@ Always stores Fcc copy of message when nil."
(defcustom ispell-grep-command
- ;; MS-Windows/MS-DOS have `egrep' as a Unix shell script, so they
- ;; cannot invoke it. Use "grep -E" instead (see ispell-grep-options
- ;; below).
- (if (memq system-type '(windows-nt ms-dos)) "grep" "egrep")
+ "grep"
"Name of the grep command for search processes."
:type 'string
:group 'ispell)
(defcustom ispell-grep-options
- (if (memq system-type '(windows-nt ms-dos)) "-Ei" "-i")
+ "-Ei"
"String of options to use when running the program in `ispell-grep-command'.
-Should probably be \"-i\" or \"-e\".
-Some machines (like the NeXT) don't support \"-i\"."
+Should probably be \"-Ei\"."
:type 'string
:group 'ispell)
@@ -942,6 +932,8 @@ Otherwise returns the library directory name, if that is defined."
(setq default-directory (expand-file-name "~/")))
(apply 'call-process-region args)))
+(defvar ispell-debug-buffer)
+
(defun ispell-create-debug-buffer (&optional append)
"Create an ispell debug buffer for debugging output.
If APPEND is non-nil, append the info to previous buffer if exists,
@@ -1182,15 +1174,15 @@ all uninitialized dicts using that affix file."
(if (cadr (assoc tmp-dict ispell-dictionary-alist))
(ispell-print-if-debug
"ispell-hfde: %s already expanded; skipping.\n" tmp-dict)
- (add-to-list 'use-for-dicts tmp-dict))))))
+ (cl-pushnew tmp-dict use-for-dicts :test #'equal))))))
(ispell-print-if-debug
"ispell-hfde: Filling %s entry. Use for %s.\n" dict use-for-dicts)
;; The final loop.
(dolist (entry ispell-dictionary-alist)
- (if (member (car entry) use-for-dicts)
- (add-to-list 'newlist
- (append (list (car entry)) dict-args-cdr))
- (add-to-list 'newlist entry)))
+ (cl-pushnew (if (member (car entry) use-for-dicts)
+ (cons (car entry) dict-args-cdr)
+ entry)
+ newlist :test #'equal))
(setq ispell-dictionary-alist newlist))))
(defun ispell-parse-hunspell-affix-file (dict-key)
@@ -1235,7 +1227,7 @@ did."
(chars-list (append otherchars-string nil)))
(setq chars-list (delq ?\ chars-list))
(dolist (ch chars-list)
- (add-to-list 'otherchars-list ch)))))
+ (cl-pushnew ch otherchars-list :test #'equal)))))
;; Cons the argument for the -d switch.
(setq dict-arg (concat dict-arg
(if (> (length dict-arg) 0) ",")
@@ -1246,7 +1238,7 @@ did."
"[[:alpha:]]"
"[^[:alpha:]]"
(if otherchars-list
- (regexp-opt (mapcar 'char-to-string otherchars-list))
+ (regexp-opt (mapcar #'char-to-string otherchars-list))
"")
t ; many-otherchars-p: We can't tell, set to t.
(list "-d" dict-arg)
@@ -1268,7 +1260,7 @@ in the list must have an affix file where Hunspell affix files are kept."
(or (assoc first-dict ispell-local-dictionary-alist)
(assoc first-dict ispell-dictionary-alist)
(error "Unknown dictionary: %s" first-dict)))
- (add-to-list 'ispell-dictionary-alist (list dict '()))
+ (cl-pushnew (list dict '()) ispell-dictionary-alist :test #'equal)
(ispell-hunspell-fill-dictionary-entry dict))
(defun ispell-find-hunspell-dictionaries ()
@@ -1308,8 +1300,8 @@ entries if a specific dictionary was found."
(ispell-print-if-debug
"++ ispell-fhd: dict-entry:%s name:%s basename:%s affix-file:%s\n"
dict full-name basename affix-file)
- (add-to-list 'ispell-hunspell-dict-paths-alist
- (list basename affix-file)))
+ (cl-pushnew (list basename affix-file)
+ ispell-hunspell-dict-paths-alist :test #'equal))
(ispell-print-if-debug
"-- ispell-fhd: Skipping entry: %s\n" dict)))))
;; Remove entry from aliases alist if explicit dict was found.
@@ -1319,7 +1311,7 @@ entries if a specific dictionary was found."
(ispell-print-if-debug
"-- ispell-fhd: Excluding %s alias. Standalone dict found.\n"
(car dict))
- (add-to-list 'newlist dict)))
+ (cl-pushnew dict newlist :test #'equal)))
(setq ispell-dicts-name2locale-equivs-alist newlist))
;; Add known hunspell aliases
(dolist (dict-equiv ispell-dicts-name2locale-equivs-alist)
@@ -1337,22 +1329,20 @@ entries if a specific dictionary was found."
ispell-hunspell-dict-paths-alist))))
(ispell-print-if-debug "++ ispell-fhd: Adding alias %s -> %s.\n"
dict-equiv-key affix-file)
- (add-to-list
- 'ispell-hunspell-dict-paths-alist
- (list dict-equiv-key affix-file))))))
+ (cl-pushnew (list dict-equiv-key affix-file)
+ ispell-hunspell-dict-paths-alist :test #'equal)))))
;; Parse and set values for default dictionary.
(setq hunspell-default-dict (car hunspell-default-dict))
(setq hunspell-default-dict-entry
(ispell-parse-hunspell-affix-file hunspell-default-dict))
;; Create an alist of found dicts with only names, except for default dict.
(setq ispell-hunspell-dictionary-alist
- (list (append (list nil) (cdr hunspell-default-dict-entry))))
- (dolist (dict (mapcar 'car ispell-hunspell-dict-paths-alist))
- (if (string= dict hunspell-default-dict)
- (add-to-list 'ispell-hunspell-dictionary-alist
- hunspell-default-dict-entry)
- (add-to-list 'ispell-hunspell-dictionary-alist
- (list dict))))))
+ (list (cons nil (cdr hunspell-default-dict-entry))))
+ (dolist (dict (mapcar #'car ispell-hunspell-dict-paths-alist))
+ (cl-pushnew (if (string= dict hunspell-default-dict)
+ hunspell-default-dict-entry
+ (list dict))
+ ispell-hunspell-dictionary-alist :test #'equal))))
;; Set params according to the selected spellchecker
@@ -1443,17 +1433,17 @@ aspell is used along with Emacs).")
(setq skip-dict t)))
(unless skip-dict
- (add-to-list 'tmp-dicts-alist
- (list
- dict-name ; dict name
- (nth 1 adict) ; casechars
- (nth 2 adict) ; not-casechars
- (nth 3 adict) ; otherchars
- (nth 4 adict) ; many-otherchars-p
- ispell-args ; ispell-args
- (nth 6 adict) ; extended-character-mode
- (nth 7 adict) ; dict encoding
- ))))
+ (cl-pushnew (list
+ dict-name ; dict name
+ (nth 1 adict) ; casechars
+ (nth 2 adict) ; not-casechars
+ (nth 3 adict) ; otherchars
+ (nth 4 adict) ; many-otherchars-p
+ ispell-args ; ispell-args
+ (nth 6 adict) ; extended-character-mode
+ (nth 7 adict) ; dict encoding
+ )
+ tmp-dicts-alist :test #'equal)))
(setq ispell-dictionary-base-alist tmp-dicts-alist))))
(run-hooks 'ispell-initialize-spellchecker-hook)
@@ -1463,7 +1453,7 @@ aspell is used along with Emacs).")
ispell-base-dicts-override-alist
ispell-dictionary-base-alist))
(unless (assoc (car dict) all-dicts-alist)
- (add-to-list 'all-dicts-alist dict)))
+ (push dict all-dicts-alist)))
(setq ispell-dictionary-alist all-dicts-alist))
;; If Emacs flavor supports [:alpha:] use it for global dicts. If
@@ -1473,20 +1463,20 @@ aspell is used along with Emacs).")
(if ispell-emacs-alpha-regexp
(let (tmp-dicts-alist)
(dolist (adict ispell-dictionary-alist)
- (if (cadr adict) ;; Do not touch hunspell uninitialized entries
- (add-to-list 'tmp-dicts-alist
- (list
- (nth 0 adict) ; dict name
- "[[:alpha:]]" ; casechars
- "[^[:alpha:]]" ; not-casechars
- (nth 3 adict) ; otherchars
- (nth 4 adict) ; many-otherchars-p
- (nth 5 adict) ; ispell-args
- (nth 6 adict) ; extended-character-mode
- (if ispell-encoding8-command
- 'utf-8
- (nth 7 adict))))
- (add-to-list 'tmp-dicts-alist adict)))
+ (cl-pushnew (if (cadr adict) ;; Do not touch hunspell uninitialized entries
+ (list
+ (nth 0 adict) ; dict name
+ "[[:alpha:]]" ; casechars
+ "[^[:alpha:]]" ; not-casechars
+ (nth 3 adict) ; otherchars
+ (nth 4 adict) ; many-otherchars-p
+ (nth 5 adict) ; ispell-args
+ (nth 6 adict) ; extended-character-mode
+ (if ispell-encoding8-command
+ 'utf-8
+ (nth 7 adict)))
+ adict)
+ tmp-dicts-alist :test #'equal))
(setq ispell-dictionary-alist tmp-dicts-alist)))))
(defun ispell-valid-dictionary-list ()
@@ -1875,6 +1865,7 @@ Valid forms include:
("\\\\add\\(tocontents\\|vspace\\)" ispell-tex-arg-end)
("\\\\\\([aA]lph\\|arabic\\)" ispell-tex-arg-end)
;;("\\\\author" ispell-tex-arg-end)
+ ("\\\\cref" ispell-tex-arg-end)
("\\\\bibliographystyle" ispell-tex-arg-end)
("\\\\makebox" ispell-tex-arg-end 0)
("\\\\e?psfig" ispell-tex-arg-end)
@@ -2427,7 +2418,8 @@ Global `ispell-quit' set to start location to continue spell session."
nil)
((or (= char ?a) (= char ?A)) ; accept word without insert
(ispell-send-string (concat "@" word "\n"))
- (add-to-list 'ispell-buffer-session-localwords word)
+ (cl-pushnew word ispell-buffer-session-localwords
+ :test #'equal)
(and (fboundp 'flyspell-unhighlight-at)
(flyspell-unhighlight-at start))
(or ispell-buffer-local-name ; session localwords might conflict
@@ -2682,8 +2674,8 @@ SPC: Accept word this time.
(defun ispell-lookup-words (word &optional lookup-dict)
"Look up WORD in optional word-list dictionary LOOKUP-DICT.
A `*' serves as a wild card. If no wild cards, `look' is used if it exists.
-Otherwise the variable `ispell-grep-command' contains the command used to
-search for the words (usually egrep).
+Otherwise the variable `ispell-grep-command' contains the command
+\(usually \"grep\") used to search for the words.
Optional second argument contains the dictionary to use; the default is
`ispell-alternate-dictionary', overridden by `ispell-complete-word-dict'
@@ -2760,7 +2752,7 @@ if defined."
;; This is the case when a process dies or fails. The default behavior
;; in this case treats the next input received as fresh input.
-(defun ispell-filter (process output)
+(defun ispell-filter (_process output)
"Output filter function for ispell, grep, and look."
(let ((start 0)
(continue t)
@@ -3040,14 +3032,13 @@ Keeps argument list for future Ispell invocations for no async support."
(ispell-send-string "\032\n") ; so Ispell prints version and exits
t)))
-
(defun ispell-init-process ()
"Check status of Ispell process and start if necessary."
(let* (;; Basename of dictionary used by the spell-checker
(dict-bname (or (car (cdr (member "-d" (ispell-get-ispell-args))))
ispell-current-dictionary))
;; The directory where process was started.
- (current-ispell-directory default-directory)
+ (current-ispell-directory default-directory) ;FIXME: Unused?
;; The default directory for the process.
;; Use "~/" as default-directory unless using Ispell with per-dir
;; personal dictionaries and not in a minibuffer under XEmacs
@@ -3150,7 +3141,7 @@ Keeps argument list for future Ispell invocations for no async support."
;; Otherwise we get cool errors like "Can't open ".
(sleep-for 1)
(ispell-accept-output 3)
- (error "%s" (mapconcat 'identity ispell-filter "\n"))))
+ (error "%s" (mapconcat #'identity ispell-filter "\n"))))
(setq ispell-filter nil) ; Discard version ID line
(let ((extended-char-mode (ispell-get-extended-character-mode)))
(if extended-char-mode ; ~ extended character mode
@@ -3206,7 +3197,7 @@ By just answering RET you can find out what the current dictionary is."
(list (completing-read
"Use new dictionary (RET for current, SPC to complete): "
(and (fboundp 'ispell-valid-dictionary-list)
- (mapcar 'list (ispell-valid-dictionary-list)))
+ (mapcar #'list (ispell-valid-dictionary-list)))
nil t)
current-prefix-arg))
(ispell-set-spellchecker-params) ; Initialize variables and dicts alists
@@ -3412,7 +3403,7 @@ ispell-region: Search for first region to skip after (ispell-begin-skip-region-r
Includes `ispell-skip-region-alist' plus tex, tib, html, and comment keys.
Must be called after `ispell-buffer-local-parsing' due to dependence on mode."
(mapconcat
- 'identity
+ #'identity
(delq nil
(list
;; messages
@@ -3869,7 +3860,7 @@ Standard ispell choices are then available."
(setq case-fold-search nil) ; Try and respect case of word.
(cond
((string-equal (upcase word) word)
- (setq possibilities (mapcar 'upcase possibilities)))
+ (setq possibilities (mapcar #'upcase possibilities)))
((eq (upcase (aref word 0)) (aref word 0))
(setq possibilities (mapcar (function
(lambda (pos)
@@ -4103,10 +4094,10 @@ The `X' command aborts sending the message so that you can edit the buffer.
To spell-check whenever a message is sent, include the appropriate lines
in your init file:
- (add-hook \\='message-send-hook \\='ispell-message) ;; GNUS 5
- (add-hook \\='news-inews-hook \\='ispell-message) ;; GNUS 4
- (add-hook \\='mail-send-hook \\='ispell-message)
- (add-hook \\='mh-before-send-letter-hook \\='ispell-message)
+ (add-hook \\='message-send-hook #\\='ispell-message) ;; GNUS 5
+ (add-hook \\='news-inews-hook #\\='ispell-message) ;; GNUS 4
+ (add-hook \\='mail-send-hook #\\='ispell-message)
+ (add-hook \\='mh-before-send-letter-hook #\\='ispell-message)
You can bind this to the key C-c i in GNUS or mail by adding to
`news-reply-mode-hook' or `mail-mode-hook' the following lambda expression:
@@ -4428,6 +4419,7 @@ Both should not be used to define a buffer-local dictionary."
(insert comment-end)))))
(insert (concat " " word))))))))
+;;FIXME: Use `user-error' instead!
(add-to-list 'debug-ignored-errors "^No word found to check!$")
(provide 'ispell)
diff --git a/lisp/textmodes/reftex-auc.el b/lisp/textmodes/reftex-auc.el
index c3f39ecd32..505df5d342 100644
--- a/lisp/textmodes/reftex-auc.el
+++ b/lisp/textmodes/reftex-auc.el
@@ -237,5 +237,5 @@ of ENTRY-LIST is a list of cons cells (\"MACRONAME\" . LEVEL). See
;;; reftex-auc.el ends here
;; Local Variables:
-;; generated-autoload-file: "reftex.el"
+;; generated-autoload-file: "reftex-loaddefs.el"
;; End:
diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el
index 0a3e7a4835..b5b7d466e9 100644
--- a/lisp/textmodes/reftex-cite.el
+++ b/lisp/textmodes/reftex-cite.el
@@ -1262,5 +1262,5 @@ created files in the variables `reftex-create-bibtex-header' or
;;; reftex-cite.el ends here
;; Local Variables:
-;; generated-autoload-file: "reftex.el"
+;; generated-autoload-file: "reftex-loaddefs.el"
;; End:
diff --git a/lisp/textmodes/reftex-dcr.el b/lisp/textmodes/reftex-dcr.el
index 9d4ee086db..f1d4d6fcba 100644
--- a/lisp/textmodes/reftex-dcr.el
+++ b/lisp/textmodes/reftex-dcr.el
@@ -488,5 +488,5 @@ Calling this function several times find successive citation locations."
;;; reftex-dcr.el ends here
;; Local Variables:
-;; generated-autoload-file: "reftex.el"
+;; generated-autoload-file: "reftex-loaddefs.el"
;; End:
diff --git a/lisp/textmodes/reftex-global.el b/lisp/textmodes/reftex-global.el
index 7f27158d25..d250051044 100644
--- a/lisp/textmodes/reftex-global.el
+++ b/lisp/textmodes/reftex-global.el
@@ -477,5 +477,5 @@ With no argument, this command toggles
;;; reftex-global.el ends here
;; Local Variables:
-;; generated-autoload-file: "reftex.el"
+;; generated-autoload-file: "reftex-loaddefs.el"
;; End:
diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el
index c5c3885b16..0ed6f26699 100644
--- a/lisp/textmodes/reftex-index.el
+++ b/lisp/textmodes/reftex-index.el
@@ -2119,5 +2119,5 @@ Does not do a save-excursion."
;;; reftex-index.el ends here
;; Local Variables:
-;; generated-autoload-file: "reftex.el"
+;; generated-autoload-file: "reftex-loaddefs.el"
;; End:
diff --git a/lisp/textmodes/reftex-parse.el b/lisp/textmodes/reftex-parse.el
index 5f969f4eff..1d6fa311d5 100644
--- a/lisp/textmodes/reftex-parse.el
+++ b/lisp/textmodes/reftex-parse.el
@@ -1131,5 +1131,5 @@ When LEVEL is non-nil, increase section numbers on that level."
;;; reftex-parse.el ends here
;; Local Variables:
-;; generated-autoload-file: "reftex.el"
+;; generated-autoload-file: "reftex-loaddefs.el"
;; End:
diff --git a/lisp/textmodes/reftex-ref.el b/lisp/textmodes/reftex-ref.el
index 32703591ca..f5a784bf63 100644
--- a/lisp/textmodes/reftex-ref.el
+++ b/lisp/textmodes/reftex-ref.el
@@ -881,5 +881,5 @@ Optional prefix argument OTHER-WINDOW goes to the label in another window."
;;; reftex-ref.el ends here
;; Local Variables:
-;; generated-autoload-file: "reftex.el"
+;; generated-autoload-file: "reftex-loaddefs.el"
;; End:
diff --git a/lisp/textmodes/reftex-sel.el b/lisp/textmodes/reftex-sel.el
index f46c2370d7..02caa67e9a 100644
--- a/lisp/textmodes/reftex-sel.el
+++ b/lisp/textmodes/reftex-sel.el
@@ -745,5 +745,5 @@ Cycle in reverse order if optional argument REVERSE is non-nil."
;;; reftex-sel.el ends here
;; Local Variables:
-;; generated-autoload-file: "reftex.el"
+;; generated-autoload-file: "reftex-loaddefs.el"
;; End:
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index e96e822fd0..915acc8382 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -1111,5 +1111,5 @@ always show the current section in connection with the option
;;; reftex-toc.el ends here
;; Local Variables:
-;; generated-autoload-file: "reftex.el"
+;; generated-autoload-file: "reftex-loaddefs.el"
;; End:
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index ae9db7de10..a488ab14b1 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -70,7 +70,8 @@
(require 'reftex-vars)
-;;; Autoloads - see end for automatic autoloads
+;;; Autoloads to ensure loading of support files when necessary
+(require 'reftex-loaddefs)
;; We autoload tons of functions from these files, but some have
;; a single function that needs to be globally autoloaded.
@@ -2394,702 +2395,6 @@ Your bug report will be posted to the AUCTeX bug reporting list.
(setq reftex-tables-dirty t) ; in case this file is evaluated by hand
-
-;;; Start of automatically extracted autoloads.
-
-;;;### (autoloads nil "reftex-auc" "reftex-auc.el" "32dc44348a7eaf247f63c81b3ead2ba4")
-;;; Generated autoloads from reftex-auc.el
-
-(autoload 'reftex-arg-label "reftex-auc" "\
-Use `reftex-label', `reftex-reference' or AUCTeX's code to insert label arg.
-What is being used depends upon `reftex-plug-into-AUCTeX'.
-
-\(fn OPTIONAL &optional PROMPT DEFINITION)" nil nil)
-
-(autoload 'reftex-arg-cite "reftex-auc" "\
-Use `reftex-citation' or AUCTeX's code to insert a cite-key macro argument.
-What is being used depends upon `reftex-plug-into-AUCTeX'.
-
-\(fn OPTIONAL &optional PROMPT DEFINITION)" nil nil)
-
-(autoload 'reftex-arg-index-tag "reftex-auc" "\
-Prompt for an index tag with completion.
-This is the name of an index, not the entry.
-
-\(fn OPTIONAL &optional PROMPT &rest ARGS)" nil nil)
-
-(autoload 'reftex-arg-index "reftex-auc" "\
-Prompt for an index entry completing with known entries.
-Completion is specific for just one index, if the macro or a tag
-argument identify one of multiple indices.
-
-\(fn OPTIONAL &optional PROMPT &rest ARGS)" nil nil)
-
-(autoload 'reftex-plug-into-AUCTeX "reftex-auc" "\
-
-
-\(fn)" nil nil)
-
-(autoload 'reftex-toggle-plug-into-AUCTeX "reftex-auc" "\
-Toggle Interface between AUCTeX and RefTeX on and off.
-
-\(fn)" t nil)
-
-(autoload 'reftex-add-label-environments "reftex-auc" "\
-Add label environment descriptions to `reftex-label-alist-style'.
-The format of ENTRY-LIST is exactly like `reftex-label-alist'. See there
-for details.
-This function makes it possible to support RefTeX from AUCTeX style files.
-The entries in ENTRY-LIST will be processed after the user settings in
-`reftex-label-alist', and before the defaults (specified in
-`reftex-default-label-alist-entries'). Any changes made to
-`reftex-label-alist-style' will raise a flag to the effect that
-the label information is recompiled on next use.
-
-\(fn ENTRY-LIST)" nil nil)
-
-(defalias 'reftex-add-to-label-alist 'reftex-add-label-environments)
-
-(autoload 'reftex-add-section-levels "reftex-auc" "\
-Add entries to the value of `reftex-section-levels'.
-The added values are kept local to the current document. The format
-of ENTRY-LIST is a list of cons cells (\"MACRONAME\" . LEVEL). See
-`reftex-section-levels' for an example.
-
-\(fn ENTRY-LIST)" nil nil)
-
-(autoload 'reftex-notice-new-section "reftex-auc" "\
-
-
-\(fn)" nil nil)
-
-;;;***
-
-;;;### (autoloads nil "reftex-cite" "reftex-cite.el" "7ee48dcf194ffd3cce3b7a2eb990e300")
-;;; Generated autoloads from reftex-cite.el
-
-(autoload 'reftex-default-bibliography "reftex-cite" "\
-Return the expanded value of variable `reftex-default-bibliography'.
-The expanded value is cached.
-
-\(fn)" nil nil)
-
-(autoload 'reftex-bib-or-thebib "reftex-cite" "\
-Test if BibTeX or egin{thebibliography} should be used for the citation.
-Find the bof of the current file
-
-\(fn)" nil nil)
-
-(autoload 'reftex-get-bibfile-list "reftex-cite" "\
-Return list of bibfiles for current document.
-When using the chapterbib or bibunits package you should either
-use the same database files everywhere, or separate parts using
-different databases into different files (included into the mater file).
-Then this function will return the applicable database files.
-
-\(fn)" nil nil)
-
-(autoload 'reftex-pop-to-bibtex-entry "reftex-cite" "\
-Find BibTeX KEY in any file in FILE-LIST in another window.
-If MARK-TO-KILL is non-nil, mark new buffer to kill.
-If HIGHLIGHT is non-nil, highlight the match.
-If ITEM in non-nil, search for bibitem instead of database entry.
-If RETURN is non-nil, just return the entry and restore point.
-
-\(fn KEY FILE-LIST &optional MARK-TO-KILL HIGHLIGHT ITEM RETURN)" nil nil)
-
-(autoload 'reftex-end-of-bib-entry "reftex-cite" "\
-
-
-\(fn ITEM)" nil nil)
-
-(autoload 'reftex-parse-bibtex-entry "reftex-cite" "\
-Parse BibTeX ENTRY.
-If ENTRY is nil then parse the entry in current buffer between FROM and TO.
-If RAW is non-nil, keep double quotes/curly braces delimiting fields.
-
-\(fn ENTRY &optional FROM TO RAW)" nil nil)
-
-(autoload 'reftex-citation "reftex-cite" "\
-Make a citation using BibTeX database files.
-After prompting for a regular expression, scans the buffers with
-bibtex entries (taken from the \\bibliography command) and offers the
-matching entries for selection. The selected entry is formatted according
-to `reftex-cite-format' and inserted into the buffer.
-
-If NO-INSERT is non-nil, nothing is inserted, only the selected key returned.
-
-FORMAT-KEY can be used to pre-select a citation format.
-
-When called with a `C-u' prefix, prompt for optional arguments in
-cite macros. When called with a numeric prefix, make that many
-citations. When called with point inside the braces of a `\\cite'
-command, it will add another key, ignoring the value of
-`reftex-cite-format'.
-
-The regular expression uses an expanded syntax: && is interpreted as `and'.
-Thus, `aaaa&&bbb' matches entries which contain both `aaaa' and `bbb'.
-While entering the regexp, completion on knows citation keys is possible.
-`=' is a good regular expression to match all entries in all files.
-
-\(fn &optional NO-INSERT FORMAT-KEY)" t nil)
-
-(autoload 'reftex-citep "reftex-cite" "\
-Call `reftex-citation' with a format selector `?p'.
-
-\(fn)" t nil)
-
-(autoload 'reftex-citet "reftex-cite" "\
-Call `reftex-citation' with a format selector `?t'.
-
-\(fn)" t nil)
-
-(autoload 'reftex-make-cite-echo-string "reftex-cite" "\
-Format a bibtex ENTRY for the echo area and cache the result.
-
-\(fn ENTRY DOCSTRUCT-SYMBOL)" nil nil)
-
-(autoload 'reftex-create-bibtex-file "reftex-cite" "\
-Create a new BibTeX database BIBFILE with all entries referenced in document.
-The command prompts for a filename and writes the collected
-entries to that file. Only entries referenced in the current
-document with any \\cite-like macros are used. The sequence in
-the new file is the same as it was in the old database.
-
-Entries referenced from other entries must appear after all
-referencing entries.
-
-You can define strings to be used as header or footer for the
-created files in the variables `reftex-create-bibtex-header' or
-`reftex-create-bibtex-footer' respectively.
-
-\(fn BIBFILE)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "reftex-dcr" "reftex-dcr.el" "8a1cb9d9c9190eefd4e22ab89d278e03")
-;;; Generated autoloads from reftex-dcr.el
-
-(autoload 'reftex-view-crossref "reftex-dcr" "\
-View cross reference of macro at point. Point must be on the KEY
-argument. When at a `\\ref' macro, show corresponding `\\label'
-definition, also in external documents (`xr'). When on a label, show
-a locations where KEY is referenced. Subsequent calls find additional
-locations. When on a `\\cite', show the associated `\\bibitem' macro or
-the BibTeX database entry. When on a `\\bibitem', show a `\\cite' macro
-which uses this KEY. When on an `\\index', show other locations marked
-by the same index entry.
-To define additional cross referencing items, use the option
-`reftex-view-crossref-extra'. See also `reftex-view-crossref-from-bibtex'.
-With one or two C-u prefixes, enforce rescanning of the document.
-With argument 2, select the window showing the cross reference.
-AUTO-HOW is only for the automatic crossref display and is handed through
-to the functions `reftex-view-cr-cite' and `reftex-view-cr-ref'.
-
-\(fn &optional ARG AUTO-HOW FAIL-QUIETLY)" t nil)
-
-(autoload 'reftex-mouse-view-crossref "reftex-dcr" "\
-View cross reference of \\ref or \\cite macro where you click.
-If the macro at point is a \\ref, show the corresponding label definition.
-If it is a \\cite, show the BibTeX database entry.
-If there is no such macro at point, search forward to find one.
-With argument, actually select the window showing the cross reference.
-
-\(fn EV)" t nil)
-
-(autoload 'reftex-toggle-auto-view-crossref "reftex-dcr" "\
-Toggle the automatic display of crossref information in the echo area.
-When active, leaving point idle in the argument of a \\ref or \\cite macro
-will display info in the echo area.
-
-\(fn)" t nil)
-
-(autoload 'reftex-view-crossref-from-bibtex "reftex-dcr" "\
-View location in a LaTeX document which cites the BibTeX entry at point.
-Since BibTeX files can be used by many LaTeX documents, this function
-prompts upon first use for a buffer in RefTeX mode. To reset this
-link to a document, call the function with a prefix arg.
-Calling this function several times find successive citation locations.
-
-\(fn &optional ARG)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "reftex-global" "reftex-global.el" "a7a6a1872e4509da5b211972c2a588ad")
-;;; Generated autoloads from reftex-global.el
-
-(autoload 'reftex-create-tags-file "reftex-global" "\
-Create TAGS file by running `etags' on the current document.
-The TAGS file is also immediately visited with `visit-tags-table'.
-
-\(fn)" t nil)
-
-(autoload 'reftex-grep-document "reftex-global" "\
-Run grep query through all files related to this document.
-With prefix arg, force to rescan document.
-No active TAGS table is required.
-
-\(fn GREP-CMD)" t nil)
-
-(autoload 'reftex-search-document "reftex-global" "\
-Regexp search through all files of the current document.
-Starts always in the master file. Stops when a match is found.
-To continue searching for next match, use command \\[tags-loop-continue].
-No active TAGS table is required.
-
-\(fn &optional REGEXP)" t nil)
-
-(autoload 'reftex-query-replace-document "reftex-global" "\
-Do `query-replace-regexp' of FROM with TO over the entire document.
-Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
-If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
-with the command \\[tags-loop-continue].
-No active TAGS table is required.
-
-\(fn &optional FROM TO DELIMITED)" t nil)
-
-(autoload 'reftex-find-duplicate-labels "reftex-global" "\
-Produce a list of all duplicate labels in the document.
-
-\(fn)" t nil)
-
-(autoload 'reftex-change-label "reftex-global" "\
-Run `query-replace-regexp' of FROM with TO in all macro arguments.
-Works on the entire multifile document.
-If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
-with the command \\[tags-loop-continue].
-No active TAGS table is required.
-
-\(fn &optional FROM TO)" t nil)
-
-(autoload 'reftex-renumber-simple-labels "reftex-global" "\
-Renumber all simple labels in the document to make them sequentially.
-Simple labels are the ones created by RefTeX, consisting only of the
-prefix and a number. After the command completes, all these labels will
-have sequential numbers throughout the document. Any references to
-the labels will be changed as well. For this, RefTeX looks at the
-arguments of any macros which either start or end in the string `ref'.
-This command should be used with care, in particular in multifile
-documents. You should not use it if another document refers to this
-one with the `xr' package.
-
-\(fn)" t nil)
-
-(autoload 'reftex-save-all-document-buffers "reftex-global" "\
-Save all documents associated with the current document.
-The function is useful after a global action like replacing or renumbering
-labels.
-
-\(fn)" t nil)
-
-(autoload 'reftex-isearch-minor-mode "reftex-global" "\
-When on, isearch searches the whole document, not only the current file.
-This minor mode allows isearch to search through all the files of
-the current TeX document.
-
-With no argument, this command toggles
-`reftex-isearch-minor-mode'. With a prefix argument ARG, turn
-`reftex-isearch-minor-mode' on if ARG is positive, otherwise turn it off.
-
-\(fn &optional ARG)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "reftex-index" "reftex-index.el" "0e0eef2a199fb9de6f13b5eef601843f")
-;;; Generated autoloads from reftex-index.el
-
-(autoload 'reftex-index-selection-or-word "reftex-index" "\
-Put selection or the word near point into the default index macro.
-This uses the information in `reftex-index-default-macro' to make an index
-entry. The phrase indexed is the current selection or the word near point.
-When called with one `C-u' prefix, let the user have a chance to edit the
-index entry. When called with 2 `C-u' as prefix, also ask for the index
-macro and other stuff.
-When called inside TeX math mode as determined by the `texmathp.el' library
-which is part of AUCTeX, the string is first processed with the
-`reftex-index-math-format', which see.
-
-\(fn &optional ARG PHRASE)" t nil)
-
-(autoload 'reftex-index "reftex-index" "\
-Query for an index macro and insert it along with its arguments.
-The index macros available are those defined in `reftex-index-macro' or
-by a call to `reftex-add-index-macros', typically from an AUCTeX style file.
-RefteX provides completion for the index tag and the index key, and
-will prompt for other arguments.
-
-\(fn &optional CHAR KEY TAG SEL NO-INSERT)" t nil)
-
-(autoload 'reftex-index-complete-tag "reftex-index" "\
-
-
-\(fn &optional ITAG OPT-ARGS)" nil nil)
-
-(autoload 'reftex-index-select-tag "reftex-index" "\
-
-
-\(fn)" nil nil)
-
-(autoload 'reftex-index-complete-key "reftex-index" "\
-
-
-\(fn &optional TAG OPTIONAL INITIAL)" nil nil)
-
-(autoload 'reftex-index-show-entry "reftex-index" "\
-
-
-\(fn DATA &optional NO-REVISIT)" nil nil)
-
-(autoload 'reftex-display-index "reftex-index" "\
-Display a buffer with an index compiled from the current document.
-When the document has multiple indices, first prompts for the correct one.
-When index support is turned off, offer to turn it on.
-With one or two `C-u' prefixes, rescan document first.
-With prefix 2, restrict index to current document section.
-With prefix 3, restrict index to region.
-
-\(fn &optional TAG OVERRIDING-RESTRICTION REDO &rest LOCATIONS)" t nil)
-
-(autoload 'reftex-index-phrase-selection-or-word "reftex-index" "\
-Add current selection or word at point to the phrases buffer.
-When you are in transient-mark-mode and the region is active, the
-selection will be used - otherwise the word at point.
-You get a chance to edit the entry in the phrases buffer - finish with
-`C-c C-c'.
-
-\(fn ARG)" t nil)
-
-(autoload 'reftex-index-visit-phrases-buffer "reftex-index" "\
-Switch to the phrases buffer, initialize if empty.
-
-\(fn)" t nil)
-
-(autoload 'reftex-index-phrases-mode "reftex-index" "\
-Major mode for managing the Index phrases of a LaTeX document.
-This buffer was created with RefTeX.
-
-To insert new phrases, use
- - `C-c \\' in the LaTeX document to copy selection or word
- - `\\[reftex-index-new-phrase]' in the phrases buffer.
-
-To index phrases use one of:
-
-\\[reftex-index-this-phrase] index current phrase
-\\[reftex-index-next-phrase] index next phrase (or N with prefix arg)
-\\[reftex-index-all-phrases] index all phrases
-\\[reftex-index-remaining-phrases] index current and following phrases
-\\[reftex-index-region-phrases] index the phrases in the region
-
-You can sort the phrases in this buffer with \\[reftex-index-sort-phrases].
-To display information about the phrase at point, use \\[reftex-index-phrases-info].
-
-For more information see the RefTeX User Manual.
-
-Here are all local bindings.
-
-\\{reftex-index-phrases-mode-map}
-
-\(fn)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "reftex-parse" "reftex-parse.el" "9015d91c86a135c850f92b828eca6b62")
-;;; Generated autoloads from reftex-parse.el
-
-(autoload 'reftex-parse-one "reftex-parse" "\
-Re-parse this file.
-
-\(fn)" t nil)
-
-(autoload 'reftex-parse-all "reftex-parse" "\
-Re-parse entire document.
-
-\(fn)" t nil)
-
-(autoload 'reftex-do-parse "reftex-parse" "\
-Do a document rescan.
-When allowed, do only a partial scan from FILE.
-
-\(fn RESCAN &optional FILE)" nil nil)
-
-(autoload 'reftex-everything-regexp "reftex-parse" "\
-
-
-\(fn)" nil nil)
-
-(autoload 'reftex-all-document-files "reftex-parse" "\
-Return a list of all files belonging to the current document.
-When RELATIVE is non-nil, give file names relative to directory
-of master file.
-
-\(fn &optional RELATIVE)" nil nil)
-
-(autoload 'reftex-locate-bibliography-files "reftex-parse" "\
-Scan buffer for bibliography macros and return file list.
-
-\(fn MASTER-DIR &optional FILES)" nil nil)
-
-(autoload 'reftex-section-info "reftex-parse" "\
-Return a section entry for the current match.
-Careful: This function expects the match-data to be still in place!
-
-\(fn FILE)" nil nil)
-
-(autoload 'reftex-ensure-index-support "reftex-parse" "\
-When index support is turned off, ask to turn it on and
-set the current prefix argument so that `reftex-access-scan-info'
-will rescan the entire document.
-
-\(fn &optional ABORT)" nil nil)
-
-(autoload 'reftex-index-info-safe "reftex-parse" "\
-
-
-\(fn FILE)" nil nil)
-
-(autoload 'reftex-index-info "reftex-parse" "\
-Return an index entry for the current match.
-Careful: This function expects the match-data to be still in place!
-
-\(fn FILE)" nil nil)
-
-(autoload 'reftex-short-context "reftex-parse" "\
-Get about one line of useful context for the label definition at point.
-
-\(fn ENV PARSE &optional BOUND DERIVE)" nil nil)
-
-(autoload 'reftex-where-am-I "reftex-parse" "\
-Return the docstruct entry above point.
-Actually returns a cons cell in which the cdr is a flag indicating
-if the information is exact (t) or approximate (nil).
-
-\(fn)" nil nil)
-
-(autoload 'reftex-notice-new "reftex-parse" "\
-Hook to handshake with RefTeX after something new has been inserted.
-
-\(fn &optional N FORCE)" nil nil)
-
-(autoload 'reftex-what-macro-safe "reftex-parse" "\
-Call `reftex-what-macro' with special syntax table.
-
-\(fn WHICH &optional BOUND)" nil nil)
-
-(autoload 'reftex-what-macro "reftex-parse" "\
-Find out if point is within the arguments of any TeX-macro.
-The return value is either (\"\\macro\" . (point)) or a list of them.
-
-If WHICH is nil, immediately return nil.
-If WHICH is 1, return innermost enclosing macro.
-If WHICH is t, return list of all macros enclosing point.
-If WHICH is a list of macros, look only for those macros and return the
- name of the first macro in this list found to enclose point.
-If the optional BOUND is an integer, bound backwards directed
- searches to this point. If it is nil, limit to nearest \\section -
- like statement.
-
-This function is pretty stable, but can be fooled if the text contains
-things like \\macro{aa}{bb} where \\macro is defined to take only one
-argument. As RefTeX cannot know this, the string \"bb\" would still be
-considered an argument of macro \\macro.
-
-\(fn WHICH &optional BOUND)" nil nil)
-
-(autoload 'reftex-what-environment "reftex-parse" "\
-Find out if point is inside a LaTeX environment.
-The return value is (e.g.) either (\"equation\" . (point)) or a list of
-them.
-
-If WHICH is nil, immediately return nil.
-If WHICH is 1, return innermost enclosing environment.
-If WHICH is t, return list of all environments enclosing point.
-If WHICH is a list of environments, look only for those environments and
- return the name of the first environment in this list found to enclose
- point.
-
-If the optional BOUND is an integer, bound backwards directed searches to
-this point. If it is nil, limit to nearest \\section - like statement.
-
-\(fn WHICH &optional BOUND)" nil nil)
-
-(autoload 'reftex-what-special-env "reftex-parse" "\
-Run the special environment parsers and return the matches.
-
-The return value is (e.g.) either (\"my-parser-function\" . (point))
-or a list of them.
-
-If WHICH is nil, immediately return nil.
-If WHICH is 1, return innermost enclosing environment.
-If WHICH is t, return list of all environments enclosing point.
-If WHICH is a list of environments, look only for those environments and
- return the name of the first environment in this list found to enclose
- point.
-
-\(fn WHICH &optional BOUND)" nil nil)
-
-(autoload 'reftex-nth-arg "reftex-parse" "\
-Return the Nth following {} or [] parentheses content.
-OPT-ARGS is a list of argument numbers which are optional.
-
-\(fn N &optional OPT-ARGS)" nil nil)
-
-(autoload 'reftex-move-over-touching-args "reftex-parse" "\
-
-
-\(fn)" nil nil)
-
-(autoload 'reftex-init-section-numbers "reftex-parse" "\
-Initialize the section numbers with zeros or with what is found in the TOC-ENTRY.
-
-\(fn &optional TOC-ENTRY APPENDIX)" nil nil)
-
-(autoload 'reftex-section-number "reftex-parse" "\
-Return a string with the current section number.
-When LEVEL is non-nil, increase section numbers on that level.
-
-\(fn &optional LEVEL STAR)" nil nil)
-
-;;;***
-
-;;;### (autoloads nil "reftex-ref" "reftex-ref.el" "b2ce366d12050904d89cc38b96b8058a")
-;;; Generated autoloads from reftex-ref.el
-
-(autoload 'reftex-label-location "reftex-ref" "\
-Return the environment or macro which determines the label type at point.
-If optional BOUND is an integer, limit backward searches to that point.
-
-\(fn &optional BOUND)" nil nil)
-
-(autoload 'reftex-label-info-update "reftex-ref" "\
-
-
-\(fn CELL)" nil nil)
-
-(autoload 'reftex-label-info "reftex-ref" "\
-
-
-\(fn LABEL &optional FILE BOUND DERIVE ENV-OR-MAC)" nil nil)
-
-(autoload 'reftex-label "reftex-ref" "\
-Insert a unique label. Return the label.
-If ENVIRONMENT is given, don't bother to find out yourself.
-If NO-INSERT is non-nil, do not insert label into buffer.
-With prefix arg, force to rescan document first.
-When you are prompted to enter or confirm a label, and you reply with
-just the prefix or an empty string, no label at all will be inserted.
-A new label is also recorded into the label list.
-This function is controlled by the settings of reftex-insert-label-flags.
-
-\(fn &optional ENVIRONMENT NO-INSERT)" t nil)
-
-(autoload 'reftex-reference "reftex-ref" "\
-Make a LaTeX reference. Look only for labels of a certain TYPE.
-With prefix arg, force to rescan buffer for labels. This should only be
-necessary if you have recently entered labels yourself without using
-reftex-label. Rescanning of the buffer can also be requested from the
-label selection menu.
-The function returns the selected label or nil.
-If NO-INSERT is non-nil, do not insert \\ref command, just return label.
-When called with 2 C-u prefix args, disable magic word recognition.
-
-\(fn &optional TYPE NO-INSERT CUT)" t nil)
-
-(autoload 'reftex-query-label-type "reftex-ref" "\
-
-
-\(fn)" nil nil)
-
-(autoload 'reftex-show-label-location "reftex-ref" "\
-
-
-\(fn DATA FORWARD NO-REVISIT &optional STAY ERROR)" nil nil)
-
-(autoload 'reftex-goto-label "reftex-ref" "\
-Prompt for a label (with completion) and jump to the location of this label.
-Optional prefix argument OTHER-WINDOW goes to the label in another window.
-
-\(fn &optional OTHER-WINDOW)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "reftex-sel" "reftex-sel.el" "b5e68431056b461d8a0562e9e685a5f1")
-;;; Generated autoloads from reftex-sel.el
-
-(autoload 'reftex-select-label-mode "reftex-sel" "\
-Major mode for selecting a label in a LaTeX document.
-This buffer was created with RefTeX.
-It only has a meaningful keymap when you are in the middle of a
-selection process.
-To select a label, move the cursor to it and press RET.
-Press `?' for a summary of important key bindings.
-
-During a selection process, these are the local bindings.
-
-\\{reftex-select-label-mode-map}
-
-\(fn)" t nil)
-
-(autoload 'reftex-select-bib-mode "reftex-sel" "\
-Major mode for selecting a citation key in a LaTeX document.
-This buffer was created with RefTeX.
-It only has a meaningful keymap when you are in the middle of a
-selection process.
-In order to select a citation, move the cursor to it and press RET.
-Press `?' for a summary of important key bindings.
-
-During a selection process, these are the local bindings.
-
-\\{reftex-select-label-mode-map}
-
-\(fn)" t nil)
-
-(autoload 'reftex-get-offset "reftex-sel" "\
-
-
-\(fn BUF HERE-AM-I &optional TYPEKEY TOC INDEX FILE)" nil nil)
-
-(autoload 'reftex-insert-docstruct "reftex-sel" "\
-
-
-\(fn BUF TOC LABELS INDEX-ENTRIES FILES CONTEXT COUNTER SHOW-COMMENTED HERE-I-AM XR-PREFIX TOC-BUFFER)" nil nil)
-
-(autoload 'reftex-find-start-point "reftex-sel" "\
-
-
-\(fn FALLBACK &rest LOCATIONS)" nil nil)
-
-(autoload 'reftex-select-item "reftex-sel" "\
-
-
-\(fn REFTEX-SELECT-PROMPT HELP-STRING KEYMAP &optional OFFSET CALL-BACK CB-FLAG)" nil nil)
-
-;;;***
-
-;;;### (autoloads nil "reftex-toc" "reftex-toc.el" "af8f426ef3a0607322ca4c9742e177a8")
-;;; Generated autoloads from reftex-toc.el
-
-(autoload 'reftex-toc "reftex-toc" "\
-Show the table of contents for the current document.
-When called with a raw C-u prefix, rescan the document first.
-
-\(fn &optional REBUILD REUSE)" t nil)
-
-(autoload 'reftex-toc-recenter "reftex-toc" "\
-Display the TOC window and highlight line corresponding to current position.
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'reftex-toggle-auto-toc-recenter "reftex-toc" "\
-Toggle the automatic recentering of the TOC window.
-When active, leaving point idle will make the TOC window jump to the correct
-section.
-
-\(fn)" t nil)
-
-;;;***
-
-;;; End of automatically extracted autoloads.
-
(provide 'reftex)
;;; reftex.el ends here
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el
index 3d4854e89d..029139e572 100644
--- a/lisp/textmodes/rst.el
+++ b/lisp/textmodes/rst.el
@@ -2,8 +2,8 @@
;; Copyright (C) 2003-2016 Free Software Foundation, Inc.
-;; Maintainer: Stefan Merten <smerten@oekonux.de>
-;; Author: Stefan Merten <smerten@oekonux.de>,
+;; Maintainer: Stefan Merten <stefan at merten-home dot de>
+;; Author: Stefan Merten <stefan at merten-home dot de>,
;; Martin Blais <blais@furius.ca>,
;; David Goodger <goodger@python.org>,
;; Wei-Wei Guo <wwguocn@gmail.com>
@@ -53,10 +53,10 @@
;; For full details on how to use the contents of this file, see
;; http://docutils.sourceforge.net/docs/user/emacs.html
;;
-;;
-;; There are a number of convenient key bindings provided by rst-mode.
-;; For more on bindings, see rst-mode-map below. There are also many variables
-;; that can be customized, look for defcustom in this file.
+;; There are a number of convenient key bindings provided by rst-mode. For the
+;; bindings, try C-c C-h when in rst-mode. There are also many variables that
+;; can be customized, look for defcustom in this file or look for the "rst"
+;; customization group contained in the "wp" group.
;;
;; If you use the table-of-contents feature, you may want to add a hook to
;; update the TOC automatically every time you adjust a section title::
@@ -68,11 +68,6 @@
;;
;; (setq font-lock-global-modes '(not rst-mode ...))
;;
-;;
-;;
-;; Customization is done by customizable variables contained in customization
-;; group "rst" and subgroups. Group "rst" is contained in the "wp" group.
-;;
;;; DOWNLOAD
@@ -110,10 +105,10 @@
;; FIXME: When 24.1 is common place remove use of `lexical-let' and put "-*-
;; lexical-binding: t -*-" in the first line.
-;; FIXME: Use `testcover'.
+;; FIXME: Embed complicated `defconst's in `eval-when-compile'.
-;; FIXME: The adornment classification often called `ado' should be a
-;; `defstruct'.
+;; FIXME: Use `testcover'. Mark up a function with sufficient test coverage by
+;; a comment tagged with `testcover' after the `defun'.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Support for `testcover'
@@ -160,6 +155,7 @@ considered constants. Revert it with this function after each `defcustom'."
;; used from there.
(defun rst-signum (x)
+ ;; testcover: ok.
"Return 1 if X is positive, -1 if negative, 0 if zero."
(cond
((> x 0) 1)
@@ -167,6 +163,7 @@ considered constants. Revert it with this function after each `defcustom'."
(t 0)))
(defun rst-some (seq &optional pred)
+ ;; testcover: ok.
"Return non-nil if any element of SEQ yields non-nil when PRED is applied.
Apply PRED to each element of list SEQ until the first non-nil
result is yielded and return this result. PRED defaults to
@@ -180,6 +177,7 @@ result is yielded and return this result. PRED defaults to
(throw 'rst-some r))))))
(defun rst-position-if (pred seq)
+ ;; testcover: ok.
"Return position of first element satisfying PRED in list SEQ or nil."
(catch 'rst-position-if
(let ((i 0))
@@ -189,6 +187,7 @@ result is yielded and return this result. PRED defaults to
(incf i)))))
(defun rst-position (elem seq)
+ ;; testcover: ok.
"Return position of ELEM in list SEQ or nil.
Comparison done with `equal'."
;; Create a closure containing `elem' so the `lambda' always sees our
@@ -199,13 +198,22 @@ Comparison done with `equal'."
(equal elem e)))
seq)))
-;; FIXME: Embed complicated `defconst's in `eval-when-compile'.
+(defun rst-member-if (pred seq)
+ ;; testcover: ok.
+ "Return sublist of SEQ starting with the element whose car satisfies PRED."
+ (let (found)
+ (while (and (not found) seq)
+ (if (funcall pred (car seq))
+ (setq found seq)
+ (setq seq (cdr seq))))
+ found))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Versions
-;; testcover: ok.
(defun rst-extract-version (delim-re head-re re tail-re var &optional default)
+ ;; testcover: ok.
"Extract the version from a variable according to the given regexes.
Return the version after regex DELIM-RE and HEAD-RE matching RE
and before TAIL-RE and DELIM-RE in VAR or DEFAULT for no match."
@@ -218,7 +226,7 @@ and before TAIL-RE and DELIM-RE in VAR or DEFAULT for no match."
;; Use CVSHeader to really get information from CVS and not other version
;; control systems.
(defconst rst-cvs-header
- "$CVSHeader: sm/rst_el/rst.el,v 1.327.2.26 2015/10/04 09:26:04 stefan Exp $")
+ "$CVSHeader: sm/rst_el/rst.el,v 1.600 2016/07/31 11:13:44 stefan Exp $")
(defconst rst-cvs-rev
(rst-extract-version "\\$" "CVSHeader: \\S + " "[0-9]+\\(?:\\.[0-9]+\\)+"
" .*" rst-cvs-header "0.0")
@@ -232,22 +240,22 @@ and before TAIL-RE and DELIM-RE in VAR or DEFAULT for no match."
;; Use LastChanged... to really get information from SVN.
(defconst rst-svn-rev
(rst-extract-version "\\$" "LastChangedRevision: " "[0-9]+" " "
- "$LastChangedRevision: 7925 $")
+ "$LastChangedRevision: 7963 $")
"The SVN revision of this file.
SVN revision is the upstream (docutils) revision.")
(defconst rst-svn-timestamp
(rst-extract-version "\\$" "LastChangedDate: " ".+?+" " "
- "$LastChangedDate: 2015-10-04 11:21:35 +0200 (Sun, 04 Oct 2015) $")
+ "$LastChangedDate: 2016-07-31 13:13:21 +0200 (Sun, 31 Jul 2016) $")
"The SVN time stamp of this file.")
;; Maintained by the release process.
(defconst rst-official-version
(rst-extract-version "%" "OfficialVersion: " "[0-9]+\\(?:\\.[0-9]+\\)+" " "
- "%OfficialVersion: 1.4.1 %")
+ "%OfficialVersion: 1.5.0 %")
"Official version of the package.")
(defconst rst-official-cvs-rev
(rst-extract-version "[%$]" "Revision: " "[0-9]+\\(?:\\.[0-9]+\\)+" " "
- "%Revision: 1.327.2.25 %")
+ "%Revision: 1.600 %")
"CVS revision of this file in the official version.")
(defconst rst-version
@@ -268,6 +276,8 @@ in parentheses follows the development revision and the time stamp.")
("1.3.1" . "24.3")
("1.4.0" . "24.3")
("1.4.1" . "24.5")
+ ("1.4.2" . "24.5")
+ ("1.5.0" . "25.2")
))
(unless (assoc rst-official-version rst-package-emacs-version-alist)
@@ -277,10 +287,10 @@ in parentheses follows the development revision and the time stamp.")
(add-to-list 'customize-package-emacs-version-alist
(cons 'ReST rst-package-emacs-version-alist))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Initialize customization
-
(defgroup rst nil "Support for reStructuredText documents."
:group 'wp
:version "23.1"
@@ -490,8 +500,10 @@ in parentheses follows the development revision and the time stamp.")
; character.
;; Titles (`ttl')
- (ttl-tag "\\S *\\w\\S *") ; A title text.
- (ttl-beg lin-beg ttl-tag) ; A title text at the beginning of a line.
+ (ttl-tag "\\S *\\w.*\\S ") ; A title text.
+ (ttl-beg-1 lin-beg (:grp ttl-tag)) ; A title text at the beginning of a
+ ; line. First group is the complete,
+ ; trimmed title text.
;; Directives and substitution definitions (`dir')
(dir-tag-3 (:grp exm-sta)
@@ -531,8 +543,8 @@ argument list for `rst-re'.")
;; FIXME: Use `sregex' or `rx' instead of re-inventing the wheel.
(rst-testcover-add-compose 'rst-re)
-;; testcover: ok.
(defun rst-re (&rest args)
+ ;; testcover: ok.
"Interpret ARGS as regular expressions and return a regex string.
Each element of ARGS may be one of the following:
@@ -603,10 +615,579 @@ After interpretation of ARGS the results are concatenated as for
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Concepts
+
+;; Each of the following classes represents an own concept. The suffix of the
+;; class name is used in the code to represent entities of the respective
+;; class.
+;;
+;; In addition a reStructuredText section header in the buffer is called
+;; "section".
+;;
+;; For lists a "s" is added to the name of the concepts.
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Class rst-Ado
+
+(defstruct
+ (rst-Ado
+ (:constructor nil) ;; Prevent creating unchecked values.
+ ;; Construct a transition.
+ (:constructor
+ rst-Ado-new-transition
+ (&aux
+ (char nil)
+ (-style 'transition)))
+ ;; Construct a simple section header.
+ (:constructor
+ rst-Ado-new-simple
+ (char-arg
+ &aux
+ (char (rst-Ado--validate-char char-arg))
+ (-style 'simple)))
+ ;; Construct a over-and-under section header.
+ (:constructor
+ rst-Ado-new-over-and-under
+ (char-arg
+ &aux
+ (char (rst-Ado--validate-char char-arg))
+ (-style 'over-and-under)))
+ ;; Construct from adornment with inverted style.
+ (:constructor
+ rst-Ado-new-invert
+ (ado-arg
+ &aux
+ (char (rst-Ado-char ado-arg))
+ (-style (let ((sty (rst-Ado--style ado-arg)))
+ (cond
+ ((eq sty 'simple)
+ 'over-and-under)
+ ((eq sty 'over-and-under)
+ 'simple)
+ (sty)))))))
+ "Representation of a reStructuredText adornment.
+Adornments are either section markers where they markup the
+section header or transitions.
+
+This type is immutable."
+ ;; The character used for the adornment.
+ (char nil :read-only t)
+ ;; The style of the adornment. This is a private attribute.
+ (-style nil :read-only t))
+
+;; Private class methods
+
+(defun rst-Ado--validate-char (char)
+ ;; testcover: ok.
+ "Validate CHAR to be a valid adornment character.
+Return CHAR if so or signal an error otherwise."
+ (cond
+ ((not (characterp char))
+ (signal 'wrong-type-argument (list 'characterp char)))
+ ((memq char rst-adornment-chars)
+ char)
+ (t
+ (signal 'args-out-of-range
+ (list (format
+ "Character must be a valid adornment character, not '%s'"
+ char))))))
+
+;; Public methods
+
+(defun rst-Ado-is-transition (self)
+ ;; testcover: ok.
+ "Return non-nil if SELF is a transition adornment."
+ (unless (rst-Ado-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Ado-p self)))
+ (eq (rst-Ado--style self) 'transition))
+
+(defun rst-Ado-is-section (self)
+ ;; testcover: ok.
+ "Return non-nil if SELF is a section adornment."
+ (unless (rst-Ado-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Ado-p self)))
+ (not (rst-Ado-is-transition self)))
+
+(defun rst-Ado-is-simple (self)
+ ;; testcover: ok.
+ "Return non-nil if SELF is a simple section adornment."
+ (unless (rst-Ado-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Ado-p self)))
+ (eq (rst-Ado--style self) 'simple))
+
+(defun rst-Ado-is-over-and-under (self)
+ ;; testcover: ok.
+ "Return non-nil if SELF is a over-and-under section adornment."
+ (unless (rst-Ado-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Ado-p self)))
+ (eq (rst-Ado--style self) 'over-and-under))
+
+(defun rst-Ado-equal (self other)
+ ;; testcover: ok.
+ "Return non-nil when SELF and OTHER are equal."
+ (cond
+ ((not (rst-Ado-p self))
+ (signal 'wrong-type-argument
+ (list 'rst-Ado-p self)))
+ ((not (rst-Ado-p other))
+ (signal 'wrong-type-argument
+ (list 'rst-Ado-p other)))
+ ((not (eq (rst-Ado--style self) (rst-Ado--style other)))
+ nil)
+ ((rst-Ado-is-transition self))
+ ((equal (rst-Ado-char self) (rst-Ado-char other)))))
+
+(defun rst-Ado-position (self ados)
+ ;; testcover: ok.
+ "Return position of of SELF in ADOS or nil."
+ (unless (rst-Ado-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Ado-p self)))
+ (lexical-let ((ado self)) ;; Create closure.
+ (rst-position-if (function (lambda (e)
+ (rst-Ado-equal ado e)))
+ ados)))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Class rst-Hdr
+
+(defstruct
+ (rst-Hdr
+ (:constructor nil) ;; Prevent creating unchecked values.
+ ;; Construct while all parameters must be valid.
+ (:constructor
+ rst-Hdr-new
+ (ado-arg
+ indent-arg
+ &aux
+ (ado (rst-Hdr--validate-ado ado-arg))
+ (indent (rst-Hdr--validate-indent indent-arg ado nil))))
+ ;; Construct while all parameters but `indent' must be valid.
+ (:constructor
+ rst-Hdr-new-lax
+ (ado-arg
+ indent-arg
+ &aux
+ (ado (rst-Hdr--validate-ado ado-arg))
+ (indent (rst-Hdr--validate-indent indent-arg ado t))))
+ ;; Construct a header with same characteristics but opposite style as `ado'.
+ (:constructor
+ rst-Hdr-new-invert
+ (ado-arg
+ indent-arg
+ &aux
+ (ado (rst-Hdr--validate-ado (rst-Ado-new-invert ado-arg)))
+ (indent (rst-Hdr--validate-indent indent-arg ado t))))
+ (:copier rst-Hdr-copy)) ;; Not really needed for an immutable type.
+ "Representation of reStructuredText section header characteristics.
+
+This type is immutable."
+ ;; The adornment of the header.
+ (ado nil :read-only t)
+ ;; The indentation of a title text or nil if not given.
+ (indent nil :read-only t))
+
+;; Private class methods
+
+(defun rst-Hdr--validate-indent (indent ado lax)
+ ;; testcover: ok.
+ "Validate INDENT to be a valid indentation for ADO.
+Return INDENT if so or signal an error otherwise. If LAX don't
+signal an error and return a valid indent."
+ (cond
+ ((not (integerp indent))
+ (signal 'wrong-type-argument
+ (list 'integerp 'null indent)))
+ ((zerop indent)
+ indent)
+ ((rst-Ado-is-simple ado)
+ (if lax
+ 0
+ (signal 'args-out-of-range
+ '("Indentation must be 0 for style simple"))))
+ ((< indent 0)
+ (if lax
+ 0
+ (signal 'args-out-of-range
+ '("Indentation must not be negative"))))
+ (indent))) ;; Implicitly over-and-under.
+
+(defun rst-Hdr--validate-ado (ado)
+ ;; testcover: ok.
+ "Validate ADO to be a valid adornment.
+Return ADO if so or signal an error otherwise."
+ (cond
+ ((not (rst-Ado-p ado))
+ (signal 'wrong-type-argument
+ (list 'rst-Ado-p ado)))
+ ((rst-Ado-is-transition ado)
+ (signal 'args-out-of-range
+ '("Adornment for header must not be transition.")))
+ (t
+ ado)))
+
+;; Public class methods
+
+(defun rst-Hdr-preferred-adornments ()
+ ;; testcover: ok.
+ "Return preferred adornments as list of `rst-Hdr'."
+ (mapcar (lambda (el)
+ (rst-Hdr-new-lax
+ (if (eq (cadr el) 'over-and-under)
+ (rst-Ado-new-over-and-under (car el))
+ (rst-Ado-new-simple (car el)))
+ (caddr el)))
+ rst-preferred-adornments))
+
+;; Public methods
+
+(defun rst-Hdr-member-ado (self hdrs)
+ ;; testcover: ok.
+ "Return sublist of HDRS whose car's adornment equals that of SELF or nil."
+ (unless (rst-Hdr-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Hdr-p self)))
+ (let ((pos (rst-Ado-position (rst-Hdr-ado self) (rst-Hdr-ado-map hdrs))))
+ (and pos (nthcdr pos hdrs))))
+
+(defun rst-Hdr-ado-map (selves)
+ ;; testcover: ok.
+ "Return `rst-Ado' list extracted from elements of SELVES."
+ (mapcar 'rst-Hdr-ado selves))
+
+(defun rst-Hdr-get-char (self)
+ ;; testcover: ok.
+ "Return character of the adornment of SELF."
+ (unless (rst-Hdr-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Hdr-p self)))
+ (rst-Ado-char (rst-Hdr-ado self)))
+
+(defun rst-Hdr-is-over-and-under (self)
+ ;; testcover: ok.
+ "Return non-nil if SELF is a over-and-under section header."
+ (unless (rst-Hdr-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Hdr-p self)))
+ (rst-Ado-is-over-and-under (rst-Hdr-ado self)))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Class rst-Ttl
+
+(defstruct
+ (rst-Ttl
+ (:constructor nil) ;; Prevent creating unchecked values.
+ ;; Construct with valid parameters for all attributes.
+ (:constructor
+ rst-Ttl-new
+ (ado-arg
+ match-arg
+ indent-arg
+ text-arg
+ &optional
+ hdr-arg
+ level-arg
+ &aux
+ (ado (rst-Ttl--validate-ado ado-arg))
+ (match (rst-Ttl--validate-match match-arg ado))
+ (indent (rst-Ttl--validate-indent indent-arg ado))
+ (text (rst-Ttl--validate-text text-arg ado))
+ (hdr (and hdr-arg (rst-Ttl--validate-hdr hdr-arg ado indent)))
+ (level (and level-arg (rst-Ttl--validate-level level-arg)))))
+ (:copier rst-Ttl-copy))
+ "Representation of a reStructuredText section header as found in the buffer.
+This type gathers information about an adorned part in the
+buffer. Thus only the basic attributes are immutable. Although
+the remaining attributes are `setf'-able the respective setters
+should be used."
+ ;; The adornment characteristics or nil for a title candidate.
+ (ado nil :read-only t)
+ ;; The match-data for `ado' as returned by `match-data'. Match group 0
+ ;; matches the whole construct. Match group 1 matches the overline adornment
+ ;; if present. Match group 2 matches the section title text or the
+ ;; transition. Match group 3 matches the underline adornment.
+ (match nil :read-only t)
+ ;; An indentation found for the title line or nil for a transition.
+ (indent nil :read-only t)
+ ;; The text of the title or nil for a transition.
+ (text nil :read-only t)
+ ;; The header characteristics if it is a valid section header.
+ (hdr nil)
+ ;; The hierarchical level of the section header starting with 0.
+ (level nil))
+
+;; Private class methods
+
+(defun rst-Ttl--validate-ado (ado)
+ ;; testcover: ok.
+ "Return valid ADO or signal error."
+ (unless (or (null ado) (rst-Ado-p ado))
+ (signal 'wrong-type-argument
+ (list 'null 'rst-Ado-p ado)))
+ ado)
+
+(defun rst-Ttl--validate-match (match ado)
+ ;; testcover: ok.
+ "Return valid MATCH matching ADO or signal error."
+ (unless (listp match)
+ (signal 'wrong-type-argument
+ (list 'listp match)))
+ (unless (equal (length match) 8)
+ (signal 'args-out-of-range
+ '("Match data must consist of exactly 8 buffer positions.")))
+ (mapcar (lambda (pos)
+ (unless (or (null pos) (integer-or-marker-p pos))
+ (signal 'wrong-type-argument
+ (list 'integer-or-marker-p 'null pos))))
+ match)
+ (unless (and (integer-or-marker-p (nth 0 match))
+ (integer-or-marker-p (nth 1 match)))
+ (signal 'args-out-of-range
+ '("First two elements of match data must be buffer positions.")))
+ (cond
+ ((null ado)
+ (unless (and (null (nth 2 match))
+ (null (nth 3 match))
+ (integer-or-marker-p (nth 4 match))
+ (integer-or-marker-p (nth 5 match))
+ (null (nth 6 match))
+ (null (nth 7 match)))
+ (signal 'args-out-of-range
+ '("For a title candidate exactly the third match pair must be set."))))
+ ((rst-Ado-is-transition ado)
+ (unless (and (null (nth 2 match))
+ (null (nth 3 match))
+ (integer-or-marker-p (nth 4 match))
+ (integer-or-marker-p (nth 5 match))
+ (null (nth 6 match))
+ (null (nth 7 match)))
+ (signal 'args-out-of-range
+ '("For a transition exactly the third match pair must be set."))))
+ ((rst-Ado-is-simple ado)
+ (unless (and (null (nth 2 match))
+ (null (nth 3 match))
+ (integer-or-marker-p (nth 4 match))
+ (integer-or-marker-p (nth 5 match))
+ (integer-or-marker-p (nth 6 match))
+ (integer-or-marker-p (nth 7 match)))
+ (signal 'args-out-of-range
+ '("For a simple section adornment exactly the third and fourth match pair must be set."))))
+ (t ;; over-and-under
+ (unless (and (integer-or-marker-p (nth 2 match))
+ (integer-or-marker-p (nth 3 match))
+ (integer-or-marker-p (nth 4 match))
+ (integer-or-marker-p (nth 5 match))
+ (or (null (nth 6 match)) (integer-or-marker-p (nth 6 match)))
+ (or (null (nth 7 match)) (integer-or-marker-p (nth 7 match))))
+ (signal 'args-out-of-range
+ '("For a over-and-under section adornment all match pairs must be set.")))))
+ match)
+
+(defun rst-Ttl--validate-indent (indent ado)
+ ;; testcover: ok.
+ "Return valid INDENT for ADO or signal error."
+ (if (and ado (rst-Ado-is-transition ado))
+ (unless (null indent)
+ (signal 'args-out-of-range
+ '("Indent for a transition must be nil.")))
+ (unless (integerp indent)
+ (signal 'wrong-type-argument
+ (list 'integerp indent)))
+ (unless (>= indent 0)
+ (signal 'args-out-of-range
+ '("Indent for a section header must be non-negative."))))
+ indent)
+
+(defun rst-Ttl--validate-hdr (hdr ado indent)
+ ;; testcover: ok.
+ "Return valid HDR in relation to ADO and INDENT or signal error."
+ (unless (rst-Hdr-p hdr)
+ (signal 'wrong-type-argument
+ (list 'rst-Hdr-p hdr)))
+ (unless (rst-Ado-equal (rst-Hdr-ado hdr) ado)
+ (signal 'args-out-of-range
+ '("Basic adornment and adornment in header must match.")))
+ (unless (equal (rst-Hdr-indent hdr) indent)
+ (signal 'args-out-of-range
+ '("Basic indent and indent in header must match.")))
+ hdr)
+
+(defun rst-Ttl--validate-text (text ado)
+ ;; testcover: ok.
+ "Return valid TEXT for ADO or signal error."
+ (if (and ado (rst-Ado-is-transition ado))
+ (unless (null text)
+ (signal 'args-out-of-range
+ '("Transitions may not have title text.")))
+ (unless (stringp text)
+ (signal 'wrong-type-argument
+ (list 'stringp text))))
+ text)
+
+(defun rst-Ttl--validate-level (level)
+ ;; testcover: ok.
+ "Return valid LEVEL or signal error."
+ (unless (integerp level)
+ (signal 'wrong-type-argument
+ (list 'integerp level)))
+ (unless (>= level 0)
+ (signal 'args-out-of-range
+ '("Level must be non-negative.")))
+ level)
+
+;; Public methods
+
+(defun rst-Ttl-evaluate-hdr (self)
+ ;; testcover: ok.
+ "Check for `ado' and `indent' in SELF forming a valid `rst-Hdr'.
+Set and return it or nil if no valid `rst-Hdr' can be formed."
+ (setf (rst-Ttl-hdr self)
+ (condition-case nil
+ (rst-Hdr-new (rst-Ttl-ado self) (rst-Ttl-indent self))
+ (error nil))))
+
+(defun rst-Ttl-set-level (self level)
+ ;; testcover: ok.
+ "In SELF set and return LEVEL or nil if invalid."
+ (setf (rst-Ttl-level self)
+ (rst-Ttl--validate-level level)))
+
+(defun rst-Ttl-get-title-beginning (self)
+ ;; testcover: ok.
+ "Return position of beginning of title text of SELF.
+This position should always be at the start of a line."
+ (nth 4 (rst-Ttl-match self)))
+
+(defun rst-Ttl-get-beginning (self)
+ ;; testcover: ok.
+ "Return position of beginning of whole SELF."
+ (nth 0 (rst-Ttl-match self)))
+
+(defun rst-Ttl-get-end (self)
+ ;; testcover: ok.
+ "Return position of end of whole SELF."
+ (nth 1 (rst-Ttl-match self)))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Class rst-Stn
+
+(defstruct
+ (rst-Stn
+ (:constructor nil) ;; Prevent creating unchecked values.
+ ;; Construct while all parameters must be valid.
+ (:constructor
+ rst-Stn-new
+ (ttl-arg
+ level-arg
+ children-arg
+ &aux
+ (ttl (rst-Stn--validate-ttl ttl-arg))
+ (level (rst-Stn--validate-level level-arg ttl))
+ (children (rst-Stn--validate-children children-arg ttl)))))
+ "Representation of a section tree node.
+
+This type is immutable."
+ ;; The title of the node or nil for a missing node.
+ (ttl nil :read-only t)
+ ;; The level of the node in the tree. Negative for the (virtual) top level
+ ;; node.
+ (level nil :read-only t)
+ ;; The list of children of the node.
+ (children nil :read-only t))
+
+;; Private class methods
+
+(defun rst-Stn--validate-ttl (ttl)
+ ;; testcover: ok.
+ "Return valid TTL or signal error."
+ (unless (or (null ttl) (rst-Ttl-p ttl))
+ (signal 'wrong-type-argument
+ (list 'null 'rst-Ttl-p ttl)))
+ ttl)
+
+(defun rst-Stn--validate-level (level ttl)
+ ;; testcover: ok.
+ "Return valid LEVEL for TTL or signal error."
+ (unless (integerp level)
+ (signal 'wrong-type-argument
+ (list 'integerp level)))
+ (when ttl
+ (unless (or (not (rst-Ttl-level ttl))
+ (equal (rst-Ttl-level ttl) level))
+ (signal 'args-out-of-range
+ '("A title must have correct level or none at all.")))
+ (when (< level 0)
+ ;; testcover: Never reached because a title may not have a negative level
+ (signal 'args-out-of-range
+ '("Top level node must not have a title."))))
+ level)
+
+(defun rst-Stn--validate-children (children ttl)
+ ;; testcover: ok.
+ "Return valid CHILDREN for TTL or signal error."
+ (unless (listp children)
+ (signal 'wrong-type-argument
+ (list 'listp children)))
+ (mapcar (lambda (child)
+ (unless (rst-Stn-p child)
+ (signal 'wrong-type-argument
+ (list 'rst-Stn-p child))))
+ children)
+ (unless (or ttl children)
+ (signal 'args-out-of-range
+ '("A missing node must have children.")))
+ children)
+
+;; Public methods
+
+(defun rst-Stn-get-title-beginning (self)
+ ;; testcover: ok.
+ "Return the beginning of the title of SELF.
+Handles missing node properly."
+ (unless (rst-Stn-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Stn-p self)))
+ (let ((ttl (rst-Stn-ttl self)))
+ (if ttl
+ (rst-Ttl-get-title-beginning ttl)
+ (rst-Stn-get-title-beginning (car (rst-Stn-children self))))))
+
+(defun rst-Stn-get-text (self &optional default)
+ ;; testcover: ok.
+ "Return title text of SELF or DEFAULT if SELF is a missing node.
+For a missing node and no DEFAULT given return a standard title text."
+ (unless (rst-Stn-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Stn-p self)))
+ (let ((ttl (rst-Stn-ttl self)))
+ (cond
+ (ttl
+ (rst-Ttl-text ttl))
+ (default)
+ ("[missing node]"))))
+
+(defun rst-Stn-is-top (self)
+ ;; testcover: ok.
+ "Return non-nil if SELF is a top level node."
+ (unless (rst-Stn-p self)
+ (signal 'wrong-type-argument
+ (list 'rst-Stn-p self)))
+ (< (rst-Stn-level self) 0))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Mode definition
-;; testcover: ok.
(defun rst-define-key (keymap key def &rest deprecated)
+ ;; testcover: ok.
"Bind like `define-key' but add deprecated key definitions.
KEYMAP, KEY, and DEF are as in `define-key'. DEPRECATED key
definitions should be in vector notation. These are defined
@@ -618,7 +1199,7 @@ as well but give an additional message."
(if (string-match "^rst-\\(.*\\)$" command-name)
(concat "rst-deprecated-"
(match-string 1 command-name))
- (error "not an RST command: %s" command-name)))
+ (error "Not an RST command: %s" command-name)))
(forwarder-function (intern forwarder-function-name)))
(unless (fboundp forwarder-function)
(defalias forwarder-function
@@ -633,6 +1214,7 @@ as well but give an additional message."
def def)))
(dolist (dep-key deprecated)
(define-key keymap dep-key forwarder-function)))))
+
;; Key bindings.
(defvar rst-mode-map
(let ((map (make-sparse-keymap)))
@@ -654,9 +1236,9 @@ as well but give an additional message."
(rst-define-key map [?\C-c ?\C-a ?\C-a] 'rst-adjust)
;; Display the hierarchy of adornments implied by the current document
;; contents.
- (rst-define-key map [?\C-c ?\C-a ?\C-d] 'rst-display-adornments-hierarchy)
+ (rst-define-key map [?\C-c ?\C-a ?\C-d] 'rst-display-hdr-hierarchy)
;; Homogenize the adornments in the document.
- (rst-define-key map [?\C-c ?\C-a ?\C-s] 'rst-straighten-adornments
+ (rst-define-key map [?\C-c ?\C-a ?\C-s] 'rst-straighten-sections
[?\C-c ?\C-s])
;;
@@ -818,71 +1400,62 @@ highlighting.
:group 'rst
;; Paragraph recognition.
- (set (make-local-variable 'paragraph-separate)
- (rst-re '(:alt
- "\f"
- lin-end)))
- (set (make-local-variable 'paragraph-start)
- (rst-re '(:alt
- "\f"
- lin-end
- (:seq hws-tag par-tag- bli-sfx))))
+ (setq-local paragraph-separate
+ (rst-re '(:alt
+ "\f"
+ lin-end)))
+ (setq-local paragraph-start
+ (rst-re '(:alt
+ "\f"
+ lin-end
+ (:seq hws-tag par-tag- bli-sfx))))
;; Indenting and filling.
- (set (make-local-variable 'indent-line-function) 'rst-indent-line)
- (set (make-local-variable 'adaptive-fill-mode) t)
- (set (make-local-variable 'adaptive-fill-regexp)
- (rst-re 'hws-tag 'par-tag- "?" 'hws-tag))
- (set (make-local-variable 'adaptive-fill-function) 'rst-adaptive-fill)
- (set (make-local-variable 'fill-paragraph-handle-comment) nil)
+ (setq-local indent-line-function 'rst-indent-line)
+ (setq-local adaptive-fill-mode t)
+ (setq-local adaptive-fill-regexp (rst-re 'hws-tag 'par-tag- "?" 'hws-tag))
+ (setq-local adaptive-fill-function 'rst-adaptive-fill)
+ (setq-local fill-paragraph-handle-comment nil)
;; Comments.
- (set (make-local-variable 'comment-start) ".. ")
- (set (make-local-variable 'comment-start-skip)
- (rst-re 'lin-beg 'exm-tag 'bli-sfx))
- (set (make-local-variable 'comment-continue) " ")
- (set (make-local-variable 'comment-multi-line) t)
- (set (make-local-variable 'comment-use-syntax) nil)
+ (setq-local comment-start ".. ")
+ (setq-local comment-start-skip (rst-re 'lin-beg 'exm-tag 'bli-sfx))
+ (setq-local comment-continue " ")
+ (setq-local comment-multi-line t)
+ (setq-local comment-use-syntax nil)
;; reStructuredText has not really a comment ender but nil is not really a
;; permissible value.
- (set (make-local-variable 'comment-end) "")
- (set (make-local-variable 'comment-end-skip) nil)
+ (setq-local comment-end "")
+ (setq-local comment-end-skip nil)
;; Commenting in reStructuredText is very special so use our own set of
;; functions.
- (set (make-local-variable 'comment-line-break-function)
- 'rst-comment-line-break)
- (set (make-local-variable 'comment-indent-function)
- 'rst-comment-indent)
- (set (make-local-variable 'comment-insert-comment-function)
- 'rst-comment-insert-comment)
- (set (make-local-variable 'comment-region-function)
- 'rst-comment-region)
- (set (make-local-variable 'uncomment-region-function)
- 'rst-uncomment-region)
-
- (set (make-local-variable 'electric-pair-pairs)
- '((?\" . ?\") (?\* . ?\*) (?\` . ?\`)))
+ (setq-local comment-line-break-function 'rst-comment-line-break)
+ (setq-local comment-indent-function 'rst-comment-indent)
+ (setq-local comment-insert-comment-function 'rst-comment-insert-comment)
+ (setq-local comment-region-function 'rst-comment-region)
+ (setq-local uncomment-region-function 'rst-uncomment-region)
+
+ (setq-local electric-pair-pairs '((?\" . ?\") (?\* . ?\*) (?\` . ?\`)))
;; Imenu and which function.
;; FIXME: Check documentation of `which-function' for alternative ways to
;; determine the current function name.
- (set (make-local-variable 'imenu-create-index-function)
- 'rst-imenu-create-index)
+ (setq-local imenu-create-index-function 'rst-imenu-create-index)
;; Font lock.
- (set (make-local-variable 'font-lock-defaults)
- '(rst-font-lock-keywords
- t nil nil nil
- (font-lock-multiline . t)
- (font-lock-mark-block-function . mark-paragraph)))
+ (setq-local font-lock-defaults
+ '(rst-font-lock-keywords
+ t nil nil nil
+ (font-lock-multiline . t)
+ (font-lock-mark-block-function . mark-paragraph)))
(add-hook 'font-lock-extend-region-functions 'rst-font-lock-extend-region t)
;; Text after a changed line may need new fontification.
- (set (make-local-variable 'jit-lock-contextually) t)
+ (setq-local jit-lock-contextually t)
;; Indentation is not deterministic.
- (setq electric-indent-inhibit t))
+ (setq-local electric-indent-inhibit t))
;;;###autoload
(define-minor-mode rst-minor-mode
@@ -908,38 +1481,14 @@ for modes derived from Text mode, like Mail mode."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Section Adornment Adjustment
-;; ============================
-;;
+;; Section adornment adjustment
+
;; The following functions implement a smart automatic title sectioning feature.
;; The idea is that with the cursor sitting on a section title, we try to get as
;; much information from context and try to do the best thing automatically.
;; This function can be invoked many times and/or with prefix argument to rotate
;; between the various sectioning adornments.
;;
-;; Definitions: the two forms of sectioning define semantically separate section
-;; levels. A sectioning ADORNMENT consists in:
-;;
-;; - a CHARACTER
-;;
-;; - a STYLE which can be either of 'simple' or 'over-and-under'.
-;;
-;; - an INDENT (meaningful for the over-and-under style only) which determines
-;; how many characters and over-and-under style is hanging outside of the
-;; title at the beginning and ending.
-;;
-;; Here are two examples of adornments (| represents the window border, column
-;; 0):
-;;
-;; |
-;; 1. char: '-' e |Some Title
-;; style: simple |----------
-;; |
-;; 2. char: '=' |==============
-;; style: over-and-under | Some Title
-;; indent: 2 |==============
-;; |
-;;
;; Some notes:
;;
;; - The underlining character that is used depends on context. The file is
@@ -948,7 +1497,7 @@ for modes derived from Text mode, like Mail mode."
;; rotated among the existing section adornments.
;;
;; Note that when rotating the characters, if we come to the end of the
-;; hierarchy of adornments, the variable rst-preferred-adornments is
+;; hierarchy of adornments, the variable `rst-preferred-adornments' is
;; consulted to propose a new underline adornment, and if continued, we cycle
;; the adornments all over again. Set this variable to nil if you want to
;; limit the underlining character propositions to the existing adornments in
@@ -986,6 +1535,8 @@ for modes derived from Text mode, like Mail mode."
(define-obsolete-variable-alias
'rst-preferred-decorations 'rst-preferred-adornments "rst 1.0.0")
+;; FIXME: Default must match suggestion in
+;; http://sphinx-doc.org/rest.html#sections for Python documentation.
(defcustom rst-preferred-adornments '((?= over-and-under 1)
(?= simple 0)
(?- simple 0)
@@ -995,13 +1546,10 @@ for modes derived from Text mode, like Mail mode."
(?# simple 0)
(?@ simple 0))
"Preferred hierarchy of section title adornments.
-
A list consisting of lists of the form (CHARACTER STYLE INDENT).
CHARACTER is the character used. STYLE is one of the symbols
`over-and-under' or `simple'. INDENT is an integer giving the
-wanted indentation for STYLE `over-and-under'. CHARACTER and
-STYLE are always used when a section adornment is described.
-In other places, t instead of a list stands for a transition.
+wanted indentation for STYLE `over-and-under'.
This sequence is consulted to offer a new adornment suggestion
when we rotate the underlines at the end of the existing
@@ -1025,156 +1573,111 @@ file."
:value 0))))
(rst-testcover-defcustom)
+;; FIXME: Rename this to `rst-over-and-under-default-indent' and set default to
+;; 0 because the effect of 1 is probably surprising in the few cases
+;; where this is used.
+;; FIXME: A matching adornment style can be looked for in
+;; `rst-preferred-adornments' and its indentation used before using this
+;; variable.
(defcustom rst-default-indent 1
"Number of characters to indent the section title.
-
-This is used for when toggling adornment styles, when switching
+This is only used while toggling adornment styles when switching
from a simple adornment style to a over-and-under adornment
-style."
+style. In addition this is used in cases where the adornments
+found in the buffer are to be used but the indentation for
+over-and-under adornments is inconsistent across the buffer."
:group 'rst-adjust
:type '(integer))
(rst-testcover-defcustom)
-(defun rst-compare-adornments (ado1 ado2)
- "Compare adornments.
-Return true if both ADO1 and ADO2 adornments are equal,
-according to restructured text semantics (only the character
-and the style are compared, the indentation does not matter)."
- (and (eq (car ado1) (car ado2))
- (eq (cadr ado1) (cadr ado2))))
-
-
-(defun rst-get-adornment-match (hier ado)
- "Return the index (level) in hierarchy HIER of adornment ADO.
-This basically just searches for the item using the appropriate
-comparison and returns the index. Return nil if the item is
-not found."
- (let ((cur hier))
- (while (and cur (not (rst-compare-adornments (car cur) ado)))
- (setq cur (cdr cur)))
- cur))
-
-;; testcover: FIXME: Test with `rst-preferred-adornments' == nil. Add test
-;; `rst-adjust-no-preference'.
-(defun rst-suggest-new-adornment (allados &optional prev)
- "Suggest a new, different adornment from all that have been seen.
-
-ALLADOS is the set of all adornments, including the line numbers.
-PREV is the optional previous adornment, in order to suggest a
-better match."
-
- ;; For all the preferred adornments...
- (let* (
- ;; If 'prev' is given, reorder the list to start searching after the
- ;; match.
- (fplist
- (cdr (rst-get-adornment-match rst-preferred-adornments prev)))
-
- ;; List of candidates to search.
- (curpotential (append fplist rst-preferred-adornments)))
- (while
- ;; For all the adornments...
- (let ((cur allados)
- found)
- (while (and cur (not found))
- (if (rst-compare-adornments (car cur) (car curpotential))
- ;; Found it!
- (setq found (car curpotential))
- (setq cur (cdr cur))))
- found)
-
- (setq curpotential (cdr curpotential)))
-
- (copy-sequence (car curpotential))))
+(defun rst-new-preferred-hdr (seen prev)
+ ;; testcover: ok.
+ "Return a new, preferred `rst-Hdr' different from all in SEEN.
+PREV is the previous `rst-Hdr' in the buffer. If given the
+search starts after this entry. Return nil if no new preferred
+`rst-Hdr' can be found."
+ ;; All preferred adornments are candidates.
+ (let ((candidates
+ (append
+ (if prev
+ ;; Start searching after the level of the previous adornment.
+ (cdr (rst-Hdr-member-ado prev (rst-Hdr-preferred-adornments))))
+ (rst-Hdr-preferred-adornments))))
+ (car
+ (rst-member-if (lambda (cand)
+ (not (rst-Hdr-member-ado cand seen)))
+ candidates))))
(defun rst-delete-entire-line ()
"Delete the entire current line without using the `kill-ring'."
(delete-region (line-beginning-position)
(line-beginning-position 2)))
-(defun rst-update-section (char style &optional indent)
- "Unconditionally update the style of a section adornment.
-
-Do this using the given character CHAR, with STYLE `simple'
-or `over-and-under', and with indent INDENT. If the STYLE
-is `simple', whitespace before the title is removed (indent
-is always assumed to be 0).
-
+(defun rst-update-section (hdr)
+ "Unconditionally update the style of the section header at point to HDR.
If there are existing overline and/or underline from the
existing adornment, they are removed before adding the
requested adornment."
(end-of-line)
- (let ((marker (point-marker))
- len)
+ (let ((indent (or (rst-Hdr-indent hdr) 0))
+ (marker (point-marker))
+ len)
- ;; Fixup whitespace at the beginning and end of the line.
- (if (or (null indent) (eq style 'simple)) ;; testcover: ok.
- (setq indent 0))
- (beginning-of-line)
- (delete-horizontal-space)
- (insert (make-string indent ? ))
+ ;; Fixup whitespace at the beginning and end of the line.
+ (beginning-of-line)
+ (delete-horizontal-space)
+ (insert (make-string indent ? ))
- (end-of-line)
- (delete-horizontal-space)
+ (end-of-line)
+ (delete-horizontal-space)
- ;; Set the current column, we're at the end of the title line.
- (setq len (+ (current-column) indent))
+ ;; Set the current column, we're at the end of the title line.
+ (setq len (+ (current-column) indent))
- ;; Remove previous line if it is an adornment.
- (save-excursion
- (forward-line -1) ;; testcover: FIXME: Doesn't work when in first line
- ;; of buffer.
- (if (and (looking-at (rst-re 'ado-beg-2-1))
- ;; Avoid removing the underline of a title right above us.
- (save-excursion (forward-line -1)
- (not (looking-at (rst-re 'ttl-beg)))))
- (rst-delete-entire-line)))
-
- ;; Remove following line if it is an adornment.
+ ;; Remove previous line if it is an adornment.
+ (save-excursion
+ (forward-line -1) ;; FIXME testcover: Doesn't work when in first line of
+ ;; buffer.
+ (if (and (looking-at (rst-re 'ado-beg-2-1))
+ ;; Avoid removing the underline of a title right above us.
+ (save-excursion (forward-line -1)
+ (not (looking-at (rst-re 'ttl-beg-1)))))
+ (rst-delete-entire-line)))
+
+ ;; Remove following line if it is an adornment.
+ (save-excursion
+ (forward-line +1) ;; FIXME testcover: Doesn't work when in last line
+ ;; of buffer.
+ (if (looking-at (rst-re 'ado-beg-2-1))
+ (rst-delete-entire-line))
+ ;; Add a newline if we're at the end of the buffer unless it is the final
+ ;; empty line, for the subsequent inserting of the underline.
+ (if (and (= (point) (buffer-end 1)) (not (bolp)))
+ (newline 1)))
+
+ ;; Insert overline.
+ (when (rst-Hdr-is-over-and-under hdr)
(save-excursion
- (forward-line +1) ;; testcover: FIXME: Doesn't work when in last line
- ;; of buffer.
- (if (looking-at (rst-re 'ado-beg-2-1))
- (rst-delete-entire-line))
- ;; Add a newline if we're at the end of the buffer, for the subsequence
- ;; inserting of the underline.
- (if (= (point) (buffer-end 1))
- (newline 1)))
-
- ;; Insert overline.
- (if (eq style 'over-and-under)
- (save-excursion
- (beginning-of-line)
- (open-line 1)
- (insert (make-string len char))))
-
- ;; Insert underline.
- (1value ;; Line has been inserted above.
- (forward-line +1))
- (open-line 1)
- (insert (make-string len char))
-
- (1value ;; Line has been inserted above.
- (forward-line +1))
- (goto-char marker)))
+ (beginning-of-line)
+ (open-line 1)
+ (insert (make-string len (rst-Hdr-get-char hdr)))))
+
+ ;; Insert underline.
+ (1value ;; Line has been inserted above.
+ (forward-line +1))
+ (open-line 1)
+ (insert (make-string len (rst-Hdr-get-char hdr)))
+
+ (1value ;; Line has been inserted above.
+ (forward-line +1))
+ (goto-char marker)))
(defun rst-classify-adornment (adornment end)
- "Classify adornment for section titles and transitions.
+ "Classify adornment string for section titles and transitions.
ADORNMENT is the complete adornment string as found in the buffer
with optional trailing whitespace. END is the point after the
-last character of ADORNMENT.
-
-Return a list. The first entry is t for a transition or a
-cons (CHARACTER . STYLE). Check `rst-preferred-adornments' for
-the meaning of CHARACTER and STYLE.
-
-The remaining list forms four match groups as returned by
-`match-data'. Match group 0 matches the whole construct. Match
-group 1 matches the overline adornment if present. Match group 2
-matches the section title text or the transition. Match group 3
-matches the underline adornment.
-
-Return nil if no syntactically valid adornment is found."
+last character of ADORNMENT. Return a `rst-Ttl' or nil if no
+syntactically valid adornment is found."
(save-excursion
(save-match-data
(when (string-match (rst-re 'ado-beg-2-1) adornment)
@@ -1189,31 +1692,35 @@ Return nil if no syntactically valid adornment is found."
(nxt-emp ; Next line nonexistent or empty
(save-excursion
(or (not (zerop (forward-line 1)))
- ;; testcover: FIXME: Add test classifying at the end of
- ;; buffer.
+ ;; FIXME testcover: Add test classifying at the end of
+ ;; buffer.
(looking-at (rst-re 'lin-end)))))
(prv-emp ; Previous line nonexistent or empty
(save-excursion
(or (not (zerop (forward-line -1)))
(looking-at (rst-re 'lin-end)))))
+ txt-blw
(ttl-blw ; Title found below starting here.
(save-excursion
(and
- (zerop (forward-line 1)) ;; testcover: FIXME: Add test
+ (zerop (forward-line 1)) ;; FIXME testcover: Add test
;; classifying at the end of
;; buffer.
- (looking-at (rst-re 'ttl-beg))
+ (looking-at (rst-re 'ttl-beg-1))
+ (setq txt-blw (match-string-no-properties 1))
(point))))
+ txt-abv
(ttl-abv ; Title found above starting here.
(save-excursion
(and
(zerop (forward-line -1))
- (looking-at (rst-re 'ttl-beg))
+ (looking-at (rst-re 'ttl-beg-1))
+ (setq txt-abv (match-string-no-properties 1))
(point))))
(und-fnd ; Matching underline found starting here.
(save-excursion
(and ttl-blw
- (zerop (forward-line 2)) ;; testcover: FIXME: Add test
+ (zerop (forward-line 2)) ;; FIXME testcover: Add test
;; classifying at the end of
;; buffer.
(looking-at (rst-re ado-re 'lin-end))
@@ -1224,16 +1731,16 @@ Return nil if no syntactically valid adornment is found."
(zerop (forward-line -2))
(looking-at (rst-re ado-re 'lin-end))
(point))))
- key beg-ovr end-ovr beg-txt end-txt beg-und end-und)
+ ado ind txt beg-ovr end-ovr beg-txt end-txt beg-und end-und)
(cond
((and nxt-emp prv-emp)
;; A transition.
- (setq key t
+ (setq ado (rst-Ado-new-transition)
beg-txt beg-pnt
end-txt end-pnt))
((or und-fnd ovr-fnd)
;; An overline with an underline.
- (setq key (cons ado-ch 'over-and-under))
+ (setq ado (rst-Ado-new-over-and-under ado-ch))
(let (;; Prefer overline match over underline match.
(und-pnt (if ovr-fnd beg-pnt und-fnd))
(ovr-pnt (if ovr-fnd ovr-fnd beg-pnt))
@@ -1243,41 +1750,40 @@ Return nil if no syntactically valid adornment is found."
end-ovr (line-end-position))
(goto-char txt-pnt)
(setq beg-txt (point)
- end-txt (line-end-position))
+ end-txt (line-end-position)
+ ind (current-indentation)
+ txt (if ovr-fnd txt-abv txt-blw))
(goto-char und-pnt)
(setq beg-und (point)
end-und (line-end-position))))
(ttl-abv
;; An underline.
- (setq key (cons ado-ch 'simple)
+ (setq ado (rst-Ado-new-simple ado-ch)
beg-und beg-pnt
end-und end-pnt)
(goto-char ttl-abv)
(setq beg-txt (point)
- end-txt (line-end-position)))
+ end-txt (line-end-position)
+ ind (current-indentation)
+ txt txt-abv))
(t
;; Invalid adornment.
- (setq key nil)))
- (if key
- (list key
- (or beg-ovr beg-txt)
- (or end-und end-txt)
- beg-ovr end-ovr beg-txt end-txt beg-und end-und)))))))
-
-(defun rst-find-title-line ()
+ (setq ado nil)))
+ (if ado
+ (rst-Ttl-new ado
+ (list
+ (or beg-ovr beg-txt)
+ (or end-und end-txt)
+ beg-ovr end-ovr beg-txt end-txt beg-und end-und)
+ ind txt)))))))
+
+(defun rst-ttl-at-point ()
"Find a section title line around point and return its characteristics.
If the point is on an adornment line find the respective title
line. If the point is on an empty line check previous or next
line whether it is a suitable title line and use it if so. If
-point is on a suitable title line use it.
-
-If no title line is found return nil.
-
-Otherwise return as `rst-classify-adornment' does. However, if
-the title line has no syntactically valid adornment, STYLE is nil
-in the first element. If there is no adornment around the title,
-CHARACTER is also nil and match groups for overline and underline
-are nil."
+point is on a suitable title line use it. Return a `rst-Ttl' for
+a section header or nil if no title line is found."
(save-excursion
(1value ;; No lines may be left to move.
(forward-line 0))
@@ -1285,225 +1791,258 @@ are nil."
(orig-end (line-end-position)))
(cond
((looking-at (rst-re 'ado-beg-2-1))
+ ;; Adornment found - consider it.
(let ((char (string-to-char (match-string-no-properties 2)))
(r (rst-classify-adornment (match-string-no-properties 0)
(match-end 0))))
(cond
((not r)
- ;; Invalid adornment - check whether this is an incomplete overline.
+ ;; Invalid adornment - check whether this is an overline with
+ ;; missing underline.
(if (and
(zerop (forward-line 1))
- (looking-at (rst-re 'ttl-beg)))
- (list (cons char nil) orig-pnt (line-end-position)
- orig-pnt orig-end (point) (line-end-position) nil nil)))
- ((consp (car r))
- ;; A section title - not a transition.
- r))))
+ (looking-at (rst-re 'ttl-beg-1)))
+ (rst-Ttl-new (rst-Ado-new-over-and-under char)
+ (list orig-pnt (line-end-position)
+ orig-pnt orig-end
+ (point) (line-end-position)
+ nil nil)
+ (current-indentation)
+ (match-string-no-properties 1))))
+ ((rst-Ado-is-transition (rst-Ttl-ado r))
+ nil)
+ ;; Return any other classification as is.
+ (r))))
((looking-at (rst-re 'lin-end))
+ ;; Empty line found - check surrounding lines for a title.
(or
(save-excursion
(if (and (zerop (forward-line -1))
- (looking-at (rst-re 'ttl-beg)))
- (list (cons nil nil) (point) (line-end-position)
- nil nil (point) (line-end-position) nil nil)))
+ (looking-at (rst-re 'ttl-beg-1)))
+ (rst-Ttl-new nil
+ (list (point) (line-end-position)
+ nil nil
+ (point) (line-end-position)
+ nil nil)
+ (current-indentation)
+ (match-string-no-properties 1))))
(save-excursion
(if (and (zerop (forward-line 1))
- (looking-at (rst-re 'ttl-beg)))
- (list (cons nil nil) (point) (line-end-position)
- nil nil (point) (line-end-position) nil nil)))))
- ((looking-at (rst-re 'ttl-beg))
- ;; Try to use the underline.
- (let ((r (rst-classify-adornment
- (buffer-substring-no-properties
- (line-beginning-position 2) (line-end-position 2))
- (line-end-position 2))))
- (if r
- r
- ;; No valid adornment found.
- (list (cons nil nil) (point) (line-end-position)
- nil nil (point) (line-end-position) nil nil))))))))
+ (looking-at (rst-re 'ttl-beg-1)))
+ (rst-Ttl-new nil
+ (list (point) (line-end-position)
+ nil nil
+ (point) (line-end-position)
+ nil nil)
+ (current-indentation)
+ (match-string-no-properties 1))))))
+ ((looking-at (rst-re 'ttl-beg-1))
+ ;; Title line found - check for a following underline.
+ (let ((txt (match-string-no-properties 1)))
+ (or (rst-classify-adornment
+ (buffer-substring-no-properties
+ (line-beginning-position 2) (line-end-position 2))
+ (line-end-position 2))
+ ;; No valid adornment found.
+ (rst-Ttl-new nil
+ (list (point) (line-end-position)
+ nil nil
+ (point) (line-end-position)
+ nil nil)
+ (current-indentation)
+ txt))))))))
;; The following function and variables are used to maintain information about
;; current section adornment in a buffer local cache. Thus they can be used for
;; font-locking and manipulation commands.
-(defvar rst-all-sections nil
- "All section adornments in the buffer as found by `rst-find-all-adornments'.
+(defvar rst-all-ttls-cache nil
+ "All section adornments in the buffer as found by `rst-all-ttls'.
Set to t when no section adornments were found.")
-(make-variable-buffer-local 'rst-all-sections)
+(make-variable-buffer-local 'rst-all-ttls-cache)
;; FIXME: If this variable is set to a different value font-locking of section
;; headers is wrong.
-(defvar rst-section-hierarchy nil
- "Section hierarchy in the buffer as determined by `rst-get-hierarchy'.
+(defvar rst-hdr-hierarchy-cache nil
+ "Section hierarchy in the buffer as determined by `rst-hdr-hierarchy'.
Set to t when no section adornments were found.
-Value depends on `rst-all-sections'.")
-(make-variable-buffer-local 'rst-section-hierarchy)
+Value depends on `rst-all-ttls-cache'.")
+(make-variable-buffer-local 'rst-hdr-hierarchy-cache)
(rst-testcover-add-1value 'rst-reset-section-caches)
(defun rst-reset-section-caches ()
"Reset all section cache variables.
Should be called by interactive functions which deal with sections."
- (setq rst-all-sections nil
- rst-section-hierarchy nil))
+ (setq rst-all-ttls-cache nil
+ rst-hdr-hierarchy-cache nil))
-(defun rst-find-all-adornments ()
+(defun rst-all-ttls ()
"Return all the section adornments in the current buffer.
-Return a list of (LINE . ADORNMENT) with ascending LINE where
-LINE is the line containing the section title. ADORNMENT consists
-of a (CHARACTER STYLE INDENT) triple as described for
-`rst-preferred-adornments'.
+Return a list of `rst-Ttl' with ascending line number.
-Uses and sets `rst-all-sections'."
- (unless rst-all-sections
+Uses and sets `rst-all-ttls-cache'."
+ (unless rst-all-ttls-cache
(let (positions)
;; Iterate over all the section titles/adornments in the file.
(save-excursion
- (goto-char (point-min))
- (while (re-search-forward (rst-re 'ado-beg-2-1) nil t)
- (let ((ado-data (rst-classify-adornment
- (match-string-no-properties 0) (point))))
- (when (and ado-data
- (consp (car ado-data))) ; Ignore transitions.
- (set-match-data (cdr ado-data))
- (goto-char (match-beginning 2)) ; Goto the title start.
- (push (cons (1+ (count-lines (point-min) (point)))
- (list (caar ado-data)
- (cdar ado-data)
- (current-indentation)))
- positions)
- (goto-char (match-end 0))))) ; Go beyond the whole thing.
- (setq positions (nreverse positions))
- (setq rst-all-sections (or positions t)))))
- (if (eq rst-all-sections t)
+ (save-match-data
+ (goto-char (point-min))
+ (while (re-search-forward (rst-re 'ado-beg-2-1) nil t)
+ (let ((ttl (rst-classify-adornment
+ (match-string-no-properties 0) (point))))
+ (when (and ttl (rst-Ado-is-section (rst-Ttl-ado ttl)))
+ (when (rst-Ttl-evaluate-hdr ttl)
+ (push ttl positions))
+ (goto-char (rst-Ttl-get-end ttl)))))
+ (setq positions (nreverse positions))
+ (setq rst-all-ttls-cache (or positions t))))))
+ (if (eq rst-all-ttls-cache t)
nil
- rst-all-sections))
-
-(defun rst-infer-hierarchy (adornments)
- "Build a hierarchy of adornments using the list of given ADORNMENTS.
-
-ADORNMENTS is a list of (CHARACTER STYLE INDENT) adornment
-specifications, in order that they appear in a file, and will
-infer a hierarchy of section levels by removing adornments that
-have already been seen in a forward traversal of the adornments,
-comparing just CHARACTER and STYLE.
-
-Similarly returns a list of (CHARACTER STYLE INDENT), where each
-list element should be unique."
- (let (hierarchy-alist)
- (dolist (x adornments)
- (let ((char (car x))
- (style (cadr x)))
- (unless (assoc (cons char style) hierarchy-alist)
- (push (cons (cons char style) x) hierarchy-alist))))
- (mapcar 'cdr (nreverse hierarchy-alist))))
-
-(defun rst-get-hierarchy (&optional ignore)
- "Return the hierarchy of section titles in the file.
-
-Return a list of adornments that represents the hierarchy of
-section titles in the file. Each element consists of (CHARACTER
-STYLE INDENT) as described for `rst-find-all-adornments'. If the
-line number in IGNORE is specified, a possibly adornment found on
-that line is not taken into account when building the hierarchy.
-
-Uses and sets `rst-section-hierarchy' unless IGNORE is given."
- (if (and (not ignore) rst-section-hierarchy)
- (if (eq rst-section-hierarchy t)
- nil
- rst-section-hierarchy)
- (let ((r (rst-infer-hierarchy
- (mapcar 'cdr
- (assq-delete-all
- ignore
- (rst-find-all-adornments))))))
- (setq rst-section-hierarchy
- (if ignore
- ;; Clear cache reflecting that a possible update is not
- ;; reflected.
- nil
- (or r t)))
- r)))
-
-(defun rst-get-adornments-around ()
- "Return the adornments around point.
-Return a list of the previous and next adornments."
- (let* ((all (rst-find-all-adornments))
- (curline (line-number-at-pos))
- prev next
- (cur all))
+ (mapcar 'rst-Ttl-copy rst-all-ttls-cache)))
+
+(defun rst-infer-hdr-hierarchy (hdrs)
+ "Build a hierarchy from HDRS.
+HDRS reflects the order in which the headers appear in the
+buffer. Return a `rst-Hdr' list representing the hierarchy of
+headers in the buffer. Indentation is unified."
+ (let (ado2indents)
+ (dolist (hdr hdrs)
+ (let* ((ado (rst-Hdr-ado hdr))
+ (indent (rst-Hdr-indent hdr))
+ (found (assoc ado ado2indents)))
+ (if found
+ (unless (member indent (cdr found))
+ ;; Append newly found indent.
+ (setcdr found (append (cdr found) (list indent))))
+ (push (list ado indent) ado2indents))))
+ (mapcar (lambda (ado_indents)
+ (let ((ado (car ado_indents))
+ (indents (cdr ado_indents)))
+ (rst-Hdr-new
+ ado
+ (if (> (length indents) 1)
+ ;; Indentations used inconsistently - use default.
+ rst-default-indent
+ ;; Only one indentation used - use this.
+ (car indents)))))
+ (nreverse ado2indents))))
+
+(defun rst-hdr-hierarchy (&optional ignore-current)
+ "Return the hierarchy of section titles in the file as a `rst-Hdr' list.
+Each returned element may be used directly to create a section
+adornment on that level. If IGNORE-CURRENT a title found on the
+current line is not taken into account when building the
+hierarchy unless it appears again elsewhere. This catches cases
+where the current title is edited and may not be final regarding
+its level.
+
+Uses and sets `rst-hdr-hierarchy-cache' unless IGNORE-CURRENT is
+given."
+ (let* ((all-ttls (rst-all-ttls))
+ (ignore-position (if ignore-current
+ (line-beginning-position)))
+ (ignore-ttl
+ (if ignore-position
+ (car (member-if
+ (lambda (ttl)
+ (equal ignore-position (rst-Ttl-get-title-beginning ttl)))
+ all-ttls))))
+ (really-ignore
+ (if ignore-ttl
+ (<= (count-if
+ (lambda (ttl)
+ (rst-Ado-equal (rst-Ttl-ado ignore-ttl) (rst-Ttl-ado ttl)))
+ all-ttls)
+ 1)))
+ (real-ttls (delq (if really-ignore ignore-ttl) all-ttls)))
+ (mapcar ;; Protect cache.
+ 'rst-Hdr-copy
+ (if (and (not ignore-current) rst-hdr-hierarchy-cache)
+ (if (eq rst-hdr-hierarchy-cache t)
+ nil
+ rst-hdr-hierarchy-cache)
+ (let ((r (rst-infer-hdr-hierarchy (mapcar 'rst-Ttl-hdr real-ttls))))
+ (setq rst-hdr-hierarchy-cache
+ (if ignore-current
+ ;; Clear cache reflecting that a possible update is not
+ ;; reflected.
+ nil
+ (or r t)))
+ r)))))
+
+(defun rst-all-ttls-with-level ()
+ "Return the section adornments with levels set according to hierarchy.
+Return a list of `rst-Ttl' with ascending line number."
+ (let ((hier (rst-Hdr-ado-map (rst-hdr-hierarchy))))
+ (mapcar
+ (lambda (ttl)
+ (rst-Ttl-set-level ttl (rst-Ado-position (rst-Ttl-ado ttl) hier))
+ ttl)
+ (rst-all-ttls))))
+
+(defun rst-get-previous-hdr ()
+ "Return the `rst-Hdr' before point or nil if none."
+ (let ((ttls (rst-all-ttls))
+ (curpos (line-beginning-position))
+ prev)
;; Search for the adornments around the current line.
- (while (and cur (< (caar cur) curline))
- (setq prev cur
- cur (cdr cur)))
- ;; 'cur' is the following adornment.
-
- (if (and cur (caar cur))
- (setq next (if (= curline (caar cur)) (cdr cur) cur)))
-
- (mapcar 'cdar (list prev next))))
-
-(defun rst-adornment-complete-p (ado)
- "Return true if the adornment ADO around point is complete."
+ (while (and ttls (< (rst-Ttl-get-title-beginning (car ttls)) curpos))
+ (setq prev (car ttls)
+ ttls (cdr ttls)))
+ (and prev (rst-Ttl-hdr prev))))
+
+(defun rst-adornment-complete-p (ado indent)
+ "Return true if the adornment ADO around point is complete using INDENT.
+The adornment is complete if it is a completely correct
+reStructuredText adornment for the title line at point. This
+includes indentation and correct length of adornment lines."
;; Note: we assume that the detection of the overline as being the underline
;; of a preceding title has already been detected, and has been eliminated
;; from the adornment that is given to us.
-
- ;; There is some sectioning already present, so check if the current
- ;; sectioning is complete and correct.
- (let* ((char (car ado))
- (style (cadr ado))
- (indent (caddr ado))
- (endcol (save-excursion (end-of-line) (current-column))))
- (if char
- (let ((exps (rst-re "^" char (format "\\{%d\\}" (+ endcol indent)) "$")))
- (and
- (save-excursion (forward-line +1)
- (beginning-of-line)
- (looking-at exps))
- (or (not (eq style 'over-and-under))
- (save-excursion (forward-line -1)
- (beginning-of-line)
- (looking-at exps))))))))
-
-
-(defun rst-get-next-adornment
- (curado hier &optional suggestion reverse-direction)
- "Get the next adornment for CURADO, in given hierarchy HIER.
-If suggesting, suggest for new adornment SUGGESTION.
-REVERSE-DIRECTION is used to reverse the cycling order."
-
- (let* (
- (char (car curado))
- (style (cadr curado))
-
- ;; Build a new list of adornments for the rotation.
- (rotados
- (append hier
- ;; Suggest a new adornment.
- (list suggestion
- ;; If nothing to suggest, use first adornment.
- (car hier)))) )
+ (let ((exps (rst-re "^" (rst-Ado-char ado)
+ (format "\\{%d\\}"
+ (+ (save-excursion
+ ;; Determine last column of title.
+ (end-of-line)
+ (current-column))
+ indent)) "$")))
+ (and
+ (save-excursion (forward-line +1)
+ (looking-at exps))
+ (or (rst-Ado-is-simple ado)
+ (save-excursion (forward-line -1)
+ (looking-at exps))))))
+
+(defun rst-next-hdr (hdr hier prev down)
+ ;; testcover: ok.
+ "Return the next best `rst-Hdr' upward from HDR.
+Consider existing hierarchy HIER and preferred headers. PREV may
+be a previous `rst-Hdr' which may be taken into account. If DOWN
+return the next best `rst-Hdr' downward instead. Return nil in
+HIER is nil."
+ (let* ((normalized-hier (if down
+ hier
+ (reverse hier)))
+ (fnd (rst-Hdr-member-ado hdr normalized-hier))
+ (prev-fnd (and prev (rst-Hdr-member-ado prev normalized-hier))))
(or
- ;; Search for next adornment.
- (cadr
- (let ((cur (if reverse-direction rotados
- (reverse rotados))))
- (while (and cur
- (not (and (eq char (caar cur))
- (eq style (cadar cur)))))
- (setq cur (cdr cur)))
- cur))
-
- ;; If not found, take the first of all adornments.
- suggestion)))
-
+ ;; Next entry in existing hierarchy if it exists.
+ (cadr fnd)
+ (if fnd
+ ;; If current header is found try introducing a new one from preferred
+ ;; hierarchy.
+ (rst-new-preferred-hdr hier prev)
+ ;; If not found try using previous header.
+ (if down
+ (cadr prev-fnd)
+ (car prev-fnd)))
+ ;; All failed - rotate by using first from normalized existing hierarchy.
+ (car normalized-hier))))
;; FIXME: A line "``/`` full" is not accepted as a section title.
(defun rst-adjust (pfxarg)
"Auto-adjust the adornment around point.
-
Adjust/rotate the section adornment for the section title around
point or promote/demote the adornments inside the region,
depending on whether the region is active. This function is meant
@@ -1516,12 +2055,9 @@ the adornments of a section title in reStructuredText. It tries
to deal with all the possible cases gracefully and to do \"the
right thing\" in all cases.
-See the documentations of `rst-adjust-adornment-work' and
+See the documentations of `rst-adjust-section' and
`rst-promote-region' for full details.
-Prefix Arguments
-================
-
The method can take either (but not both) of
a. a (non-negative) prefix argument, which means to toggle the
@@ -1542,11 +2078,15 @@ b. a negative numerical argument, which generally inverts the
;; Adjust adornments within region.
(rst-promote-region (and pfxarg t))
;; Adjust adornment around point.
- (rst-adjust-adornment-work toggle-style reverse-direction))
+ (let ((msg (rst-adjust-section toggle-style reverse-direction)))
+ (when msg
+ (apply 'message msg))))
;; Run the hooks to run after adjusting.
(run-hooks 'rst-adjust-hook)
+ (rst-reset-section-caches)
+
;; Make sure to reset the cursor position properly after we're done.
(goto-char origpt)))
@@ -1567,31 +2107,23 @@ b. a negative numerical argument, which generally inverts the
(rst-testcover-defcustom)
(defun rst-adjust-adornment (pfxarg)
- "Call `rst-adjust-adornment-work' interactively.
-
+ "Call `rst-adjust-section' interactively.
Keep this for compatibility for older bindings (are there any?).
Argument PFXARG has the same meaning as for `rst-adjust'."
(interactive "P")
(let* ((reverse-direction (and pfxarg (< (prefix-numeric-value pfxarg) 0)))
(toggle-style (and pfxarg (not reverse-direction))))
- (rst-adjust-adornment-work toggle-style reverse-direction)))
+ (rst-adjust-section toggle-style reverse-direction)))
-(defun rst-adjust-adornment-work (toggle-style reverse-direction)
+(defun rst-adjust-section (toggle-style reverse)
"Adjust/rotate the section adornment for the section title around point.
+The action this function takes depends on context around the
+point, and it is meant to be invoked possibly more than once to
+rotate among the various possibilities. Basically, this function
+deals with:
-This function is meant to be invoked possibly multiple times, and
-can vary its behavior with a true TOGGLE-STYLE argument, or with
-a REVERSE-DIRECTION argument.
-
-General Behavior
-================
-
-The next action it takes depends on context around the point, and
-it is meant to be invoked possibly more than once to rotate among
-the various possibilities. Basically, this function deals with:
-
-- adding a adornment if the title does not have one;
+- adding an adornment if the title does not have one;
- adjusting the length of the underline characters to fit a
modified title;
@@ -1599,316 +2131,242 @@ the various possibilities. Basically, this function deals with:
- rotating the adornment in the set of already existing
sectioning adornments used in the file;
-- switching between simple and over-and-under styles.
-
-You should normally not have to read all the following, just
-invoke the method and it will do the most obvious thing that you
-would expect.
-
-
-Adornment Definitions
-=====================
-
-The adornments consist in
-
-1. a CHARACTER
-
-2. a STYLE which can be either `simple' or `over-and-under'.
-
-3. an INDENT (meaningful for the over-and-under style only)
- which determines how many characters and over-and-under
- style is hanging outside of the title at the beginning and
- ending.
-
-See source code for mode details.
-
-
-Detailed Behavior Description
-=============================
-
-Here are the gory details of the algorithm (it seems quite
-complicated, but really, it does the most obvious thing in all
-the particular cases):
-
-Before applying the adornment change, the cursor is placed on
-the closest line that could contain a section title.
-
-Case 1: No Adornment
---------------------
-
-If the current line has no adornment around it,
-
-- search backwards for the last previous adornment, and apply
- the adornment one level lower to the current line. If there
- is no defined level below this previous adornment, we suggest
- the most appropriate of the `rst-preferred-adornments'.
-
- If REVERSE-DIRECTION is true, we simply use the previous
- adornment found directly.
+- switching between simple and over-and-under styles by giving
+ TOGGLE-STYLE.
-- if there is no adornment found in the given direction, we use
- the first of `rst-preferred-adornments'.
+Return nil if the function did something. If the function were
+not able to do something return an argument list for `message' to
+inform the user about what failed.
-TOGGLE-STYLE forces a toggle of the prescribed adornment style.
+The following is a detailed description but you should normally
+not have to read it.
-Case 2: Incomplete Adornment
-----------------------------
+Before applying the adornment change, the cursor is placed on the
+closest line that could contain a section title if such is found
+around the cursor. Then the following cases are distinguished.
-If the current line does have an existing adornment, but the
-adornment is incomplete, that is, the underline/overline does
-not extend to exactly the end of the title line (it is either
-too short or too long), we simply extend the length of the
-underlines/overlines to fit exactly the section title.
+* Case 1: No Adornment
-If TOGGLE-STYLE we toggle the style of the adornment as well.
+ If the current line has no adornment around it,
-REVERSE-DIRECTION has no effect in this case.
+ - search for a previous adornment, and apply this adornment (unless
+ `rst-new-adornment-down') or one level lower (otherwise) to the current
+ line. If there is no defined level below this previous adornment, we
+ suggest the most appropriate of the `rst-preferred-adornments'.
-Case 3: Complete Existing Adornment
------------------------------------
+ If REVERSE is true, we simply use the previous adornment found
+ directly.
-If the adornment is complete (i.e. the underline (overline)
-length is already adjusted to the end of the title line), we
-search/parse the file to establish the hierarchy of all the
-adornments (making sure not to include the adornment around
-point), and we rotate the current title's adornment from within
-that list (by default, going *down* the hierarchy that is present
-in the file, i.e. to a lower section level). This is meant to be
-used potentially multiple times, until the desired adornment is
-found around the title.
+ - if there is no adornment found in the given direction, we use the first of
+ `rst-preferred-adornments'.
-If we hit the boundary of the hierarchy, exactly one choice from
-the list of preferred adornments is suggested/chosen, the first
-of those adornment that has not been seen in the file yet (and
-not including the adornment around point), and the next
-invocation rolls over to the other end of the hierarchy (i.e. it
-cycles). This allows you to avoid having to set which character
-to use.
+ TOGGLE-STYLE forces a toggle of the prescribed adornment style.
-If REVERSE-DIRECTION is true, the effect is to change the
-direction of rotation in the hierarchy of adornments, thus
-instead going *up* the hierarchy.
+* Case 2: Incomplete Adornment
-However, if TOGGLE-STYLE, we do not rotate the adornment, but
-instead simply toggle the style of the current adornment (this
-should be the most common way to toggle the style of an existing
-complete adornment).
+ If the current line does have an existing adornment, but the adornment is
+ incomplete, that is, the underline/overline does not extend to exactly the
+ end of the title line (it is either too short or too long), we simply extend
+ the length of the underlines/overlines to fit exactly the section title.
+ If TOGGLE-STYLE we toggle the style of the adornment as well.
-Point Location
-==============
+ REVERSE has no effect in this case.
-The invocation of this function can be carried out anywhere
-within the section title line, on an existing underline or
-overline, as well as on an empty line following a section title.
-This is meant to be as convenient as possible.
+* Case 3: Complete Existing Adornment
+ If the adornment is complete (i.e. the underline (overline) length is already
+ adjusted to the end of the title line), we rotate the current title's
+ adornment according to the adornment hierarchy found in the buffer. This is
+ meant to be used potentially multiple times, until the desired adornment is
+ found around the title.
-Indented Sections
-=================
+ If we hit the boundary of the hierarchy, exactly one choice from the list of
+ preferred adornments is suggested/chosen, the first of those adornment that
+ has not been seen in the buffer yet, and the next invocation rolls over to
+ the other end of the hierarchy (i.e. it cycles).
-Indented section titles such as ::
+ If REVERSE is we go up in the hierarchy. Otherwise we go down.
- My Title
- --------
-
-are invalid in reStructuredText and thus not recognized by the
-parser. This code will thus not work in a way that would support
-indented sections (it would be ambiguous anyway).
-
-
-Joint Sections
-==============
-
-Section titles that are right next to each other may not be
-treated well. More work might be needed to support those, and
-special conditions on the completeness of existing adornments
-might be required to make it non-ambiguous.
-
-For now we assume that the adornments are disjoint, that is,
-there is at least a single line between the titles/adornment
-lines."
+ However, if TOGGLE-STYLE, we do not rotate the adornment, but instead simply
+ toggle the style of the current adornment."
(rst-reset-section-caches)
- (let ((ttl-fnd (rst-find-title-line))
- (orig-pnt (point)))
- (when ttl-fnd
- (set-match-data (cdr ttl-fnd))
- (goto-char (match-beginning 2))
- (let* ((moved (- (line-number-at-pos) (line-number-at-pos orig-pnt)))
- (char (caar ttl-fnd))
- (style (cdar ttl-fnd))
- (indent (current-indentation))
- (curado (list char style indent))
- char-new style-new indent-new)
- (cond
- ;;-------------------------------------------------------------------
- ;; Case 1: No valid adornment
- ((not style)
- (let ((prev (car (rst-get-adornments-around)))
- cur
- (hier (rst-get-hierarchy)))
- ;; Advance one level down.
- (setq cur
+ (let ((ttl (rst-ttl-at-point))
+ (orig-pnt (point))
+ msg)
+ (if (not ttl)
+ (setq msg '("No section header or candidate at point"))
+ (goto-char (rst-Ttl-get-title-beginning ttl))
+ (let ((moved (- (line-number-at-pos) (line-number-at-pos orig-pnt)))
+ (found (rst-Ttl-ado ttl))
+ (indent (rst-Ttl-indent ttl))
+ (prev (rst-get-previous-hdr))
+ new)
+ (when (and found (not (rst-Ado-p found)))
+ ;; Normalize found adornment - overline with no underline counts as
+ ;; overline.
+ (setq found (rst-Ado-new-over-and-under found)))
+ (setq new
+ (cond
+ ((not found)
+ ;; Case 1: No adornment at all.
+ (let ((hier (rst-hdr-hierarchy)))
(if prev
- (if (or (and rst-new-adornment-down reverse-direction)
- (and (not rst-new-adornment-down)
- (not reverse-direction)))
- prev
- (or (cadr (rst-get-adornment-match hier prev))
- (rst-suggest-new-adornment hier prev)))
- (copy-sequence (car rst-preferred-adornments))))
- ;; Invert the style if requested.
- (if toggle-style
- (setcar (cdr cur) (if (eq (cadr cur) 'simple)
- 'over-and-under 'simple)) )
- (setq char-new (car cur)
- style-new (cadr cur)
- indent-new (caddr cur))))
- ;;-------------------------------------------------------------------
- ;; Case 2: Incomplete Adornment
- ((not (rst-adornment-complete-p curado))
- ;; Invert the style if requested.
- (if toggle-style
- (setq style (if (eq style 'simple) 'over-and-under 'simple)))
- (setq char-new char
- style-new style
- indent-new indent))
- ;;-------------------------------------------------------------------
- ;; Case 3: Complete Existing Adornment
- (t
- (if toggle-style
- ;; Simply switch the style of the current adornment.
- (setq char-new char
- style-new (if (eq style 'simple) 'over-and-under 'simple)
- indent-new rst-default-indent)
- ;; Else, we rotate, ignoring the adornment around the current
- ;; line...
- (let* ((hier (rst-get-hierarchy (line-number-at-pos)))
- ;; Suggestion, in case we need to come up with something new.
- (suggestion (rst-suggest-new-adornment
- hier
- (car (rst-get-adornments-around))))
- (nextado (rst-get-next-adornment
- curado hier suggestion reverse-direction)))
- ;; Indent, if present, always overrides the prescribed indent.
- (setq char-new (car nextado)
- style-new (cadr nextado)
- indent-new (caddr nextado))))))
- ;; Override indent with present indent!
- (setq indent-new (if (> indent 0) indent indent-new))
- (if (and char-new style-new)
- (rst-update-section char-new style-new indent-new))
- ;; Correct the position of the cursor to more accurately reflect where
- ;; it was located when the function was invoked.
- (unless (zerop moved)
- (forward-line (- moved))
- (end-of-line))))))
+ ;; Previous header exists - use it.
+ (cond
+ ;; Customization and parameters require that the
+ ;; previous level is used - use it as is.
+ ((or (and rst-new-adornment-down reverse)
+ (and (not rst-new-adornment-down) (not reverse)))
+ prev)
+ ;; Advance one level down.
+ ((rst-next-hdr prev hier prev t))
+ (t
+ (setq msg '("Neither hierarchy nor preferences can suggest a deeper header"))
+ nil))
+ ;; First header in the buffer - use the first adornment
+ ;; from preferences or hierarchy.
+ (let ((p (car (rst-Hdr-preferred-adornments)))
+ (h (car hier)))
+ (cond
+ ((if reverse
+ ;; Prefer hierarchy for downwards
+ (or h p)
+ ;; Prefer preferences for upwards
+ (or p h)))
+ (t
+ (setq msg '("No preferences to suggest a top level from"))
+ nil))))))
+ ((not (rst-adornment-complete-p found indent))
+ ;; Case 2: Incomplete adornment.
+ ;; Use lax since indentation might not match suggestion.
+ (rst-Hdr-new-lax found indent))
+ ;; Case 3: Complete adornment exists from here on.
+ (toggle-style
+ ;; Simply switch the style of the current adornment.
+ (setq toggle-style nil) ;; Remember toggling has been done.
+ (rst-Hdr-new-invert found rst-default-indent))
+ (t
+ ;; Rotate, ignoring a sole adornment around the current line.
+ (let ((hier (rst-hdr-hierarchy t)))
+ (cond
+ ;; Next header can be determined from hierarchy or
+ ;; preferences.
+ ((rst-next-hdr
+ ;; Use lax since indentation might not match suggestion.
+ (rst-Hdr-new-lax found indent) hier prev reverse))
+ ;; No next header found.
+ (t
+ (setq msg '("No preferences or hierarchy to suggest another level from"))
+ nil))))))
+ (if (not new)
+ (goto-char orig-pnt)
+ (when toggle-style
+ (setq new (rst-Hdr-new-invert (rst-Hdr-ado new) indent)))
+ ;; Override indent with present indent if there is some.
+ (when (> indent 0)
+ ;; Use lax since existing indent may not be valid for new style.
+ (setq new (rst-Hdr-new-lax (rst-Hdr-ado new) indent)))
+ (rst-update-section new)
+ ;; Correct the position of the cursor to more accurately reflect where
+ ;; it was located when the function was invoked.
+ (unless (zerop moved)
+ (forward-line (- moved))
+ (end-of-line)))))
+ msg))
;; Maintain an alias for compatibility.
(defalias 'rst-adjust-section-title 'rst-adjust)
-
(defun rst-promote-region (demote)
"Promote the section titles within the region.
-
With argument DEMOTE or a prefix argument, demote the section
titles instead. The algorithm used at the boundaries of the
-hierarchy is similar to that used by `rst-adjust-adornment-work'."
+hierarchy is similar to that used by `rst-adjust-section'."
(interactive "P")
(rst-reset-section-caches)
- (let* ((cur (rst-find-all-adornments))
- (hier (rst-get-hierarchy))
- (suggestion (rst-suggest-new-adornment hier))
-
- (region-begin-line (line-number-at-pos (region-beginning)))
- (region-end-line (line-number-at-pos (region-end)))
-
- marker-list)
+ (let ((ttls (rst-all-ttls))
+ (hier (rst-hdr-hierarchy))
+ (region-beg (save-excursion
+ (goto-char (region-beginning))
+ (line-beginning-position)))
+ (region-end (save-excursion
+ (goto-char (region-end))
+ (line-beginning-position)))
+ marker-list)
;; Skip the markers that come before the region beginning.
- (while (and cur (< (caar cur) region-begin-line))
- (setq cur (cdr cur)))
+ (while (and ttls (< (rst-Ttl-get-title-beginning (car ttls)) region-beg))
+ (setq ttls (cdr ttls)))
;; Create a list of markers for all the adornments which are found within
;; the region.
(save-excursion
- (let (line)
- (while (and cur (< (setq line (caar cur)) region-end-line))
- (goto-char (point-min))
- (forward-line (1- line))
- (push (list (point-marker) (cdar cur)) marker-list)
- (setq cur (cdr cur)) ))
+ (while (and ttls (< (rst-Ttl-get-title-beginning (car ttls)) region-end))
+ (push (cons (copy-marker (rst-Ttl-get-title-beginning (car ttls)))
+ (rst-Ttl-hdr (car ttls))) marker-list)
+ (setq ttls (cdr ttls)))
;; Apply modifications.
(dolist (p marker-list)
;; Go to the adornment to promote.
(goto-char (car p))
-
- ;; Update the adornment.
- (apply 'rst-update-section
- ;; Rotate the next adornment.
- (rst-get-next-adornment
- (cadr p) hier suggestion demote))
+ ;; `rst-next-hdr' cannot return nil because we apply to a section
+ ;; header so there is some hierarchy.
+ (rst-update-section (rst-next-hdr (cdr p) hier nil demote))
;; Clear marker to avoid slowing down the editing after we're done.
(set-marker (car p) nil))
(setq deactivate-mark nil))))
-
-
-(defun rst-display-adornments-hierarchy (&optional adornments)
+(defun rst-display-hdr-hierarchy ()
"Display the current file's section title adornments hierarchy.
-This function expects a list of (CHARACTER STYLE INDENT) triples
-in ADORNMENTS."
+Hierarchy is displayed in a temporary buffer."
(interactive)
(rst-reset-section-caches)
- (if (not adornments)
- (setq adornments (rst-get-hierarchy)))
- (with-output-to-temp-buffer "*rest section hierarchy*"
- (let ((level 1))
+ (let ((hdrs (rst-hdr-hierarchy))
+ (level 1))
+ (with-output-to-temp-buffer "*rest section hierarchy*"
(with-current-buffer standard-output
- (dolist (x adornments)
- (insert (format "\nSection Level %d" level))
- (apply 'rst-update-section x)
- (goto-char (point-max))
- (insert "\n")
- (incf level))))))
-
-(defun rst-straighten-adornments ()
- "Redo all the adornments in the current buffer.
-This is done using our preferred set of adornments. This can be
+ (dolist (hdr hdrs)
+ (insert (format "\nSection Level %d" level))
+ (rst-update-section hdr)
+ (goto-char (point-max))
+ (insert "\n")
+ (incf level))))))
+
+;; Maintain an alias for backward compatibility.
+(defalias 'rst-display-adornments-hierarchy 'rst-display-hdr-hierarchy)
+
+;; FIXME: Should accept an argument giving the hierarchy level to start with
+;; instead of the top of the hierarchy.
+(defun rst-straighten-sections ()
+ "Redo the adornments of all section titles in the current buffer.
+This is done using the preferred set of adornments. This can be
used, for example, when using somebody else's copy of a document,
in order to adapt it to our preferred style."
(interactive)
(rst-reset-section-caches)
(save-excursion
- (let (;; Get a list of pairs of (level . marker).
- (levels-and-markers (mapcar
- (lambda (ado)
- (cons (rst-position (cdr ado)
- (rst-get-hierarchy))
- (progn
- (goto-char (point-min))
- (forward-line (1- (car ado)))
- (point-marker))))
- (rst-find-all-adornments))))
- (dolist (lm levels-and-markers)
- ;; Go to the appropriate position.
- (goto-char (cdr lm))
-
- ;; Apply the new style.
- (apply 'rst-update-section (nth (car lm) rst-preferred-adornments))
-
- ;; Reset the marker to avoid slowing down editing until it gets GC'ed.
- (set-marker (cdr lm) nil)))))
+ (dolist (ttl-marker (mapcar
+ (lambda (ttl)
+ (cons ttl (copy-marker
+ (rst-Ttl-get-title-beginning ttl))))
+ (rst-all-ttls-with-level)))
+ ;; Go to the appropriate position.
+ (goto-char (cdr ttl-marker))
+ (rst-update-section (nth (rst-Ttl-level (car ttl-marker))
+ (rst-Hdr-preferred-adornments)))
+ ;; Reset the marker to avoid slowing down editing.
+ (set-marker (cdr ttl-marker) nil))))
+
+;; Maintain an alias for compatibility.
+(defalias 'rst-straighten-adornments 'rst-straighten-sections)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Insert list items
-;; =================
-
-;=================================================
; Borrowed from a2r.el (version 1.3), by Lawrence Mitchell <wence@gmx.li>.
; I needed to make some tiny changes to the functions, so I put it here.
; -- Wei-Wei Guo
@@ -1956,7 +2414,8 @@ If optional ARG is non-nil, insert in current buffer."
string (replace-match "" nil t string))
(setq map (cdr map))))
(if arg (insert res) res)))
-;=================================================
+
+;; End of borrow.
(defun rst-find-pfx-in-region (beg end pfx-re)
"Find all the positions of prefixes in region between BEG and END.
@@ -2124,7 +2583,9 @@ If PREFER-ROMAN roman numbering is preferred over using letters."
(1+ (string-to-char (match-string 0 curitem))))
nil nil curitem)))))
-
+;; FIXME: At least the continuation may be folded into
+;; `newline-and-indent`. However, this may not be wanted by everyone so
+;; it should be possible to switch this off.
(defun rst-insert-list (&optional prefer-roman)
"Insert a list item at the current point.
@@ -2197,112 +2658,57 @@ adjust. If bullets are found on levels beyond the
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Table of contents
-;; =================
-
-;; FIXME: Return value should be a `defstruct'.
-(defun rst-section-tree ()
- "Return the hierarchical tree of section titles.
-A tree entry looks like ((TITLE MARKER) CHILD...). TITLE is the
-stripped text of the section title. MARKER is a marker for the
-beginning of the title text. For the top node or a missing
-section level node TITLE is nil and MARKER points to the title
-text of the first child. Each CHILD is another tree entry. The
-CHILD list may be empty."
- (let ((hier (rst-get-hierarchy))
- (ch-sty2level (make-hash-table :test 'equal :size 10))
- lev-ttl-mrk-l)
-
- (let ((lev 0))
- (dolist (ado hier)
- ;; Compare just the character and indent in the hash table.
- (puthash (cons (car ado) (cadr ado)) lev ch-sty2level)
- (incf lev)))
-
- ;; Create a list that contains (LEVEL TITLE MARKER) for each adornment.
- (save-excursion
- (setq lev-ttl-mrk-l
- (mapcar (lambda (ado)
- (goto-char (point-min))
- (1value ;; This should really succeed.
- (forward-line (1- (car ado))))
- (list (gethash (cons (cadr ado) (caddr ado)) ch-sty2level)
- ;; Get title.
- (save-excursion
- (if (re-search-forward
- (rst-re "\\S .*\\S ") (line-end-position) t)
- (buffer-substring-no-properties
- (match-beginning 0) (match-end 0))
- ""))
- (point-marker)))
- (rst-find-all-adornments))))
- (cdr (rst-section-tree-rec lev-ttl-mrk-l -1))))
-
-;; FIXME: Return value should be a `defstruct'.
-(defun rst-section-tree-rec (remaining lev)
+
+(defun rst-all-stn ()
+ "Return the hierarchical tree of section titles as a top level `rst-Stn'.
+Return nil for no section titles."
+ ;; FIXME: The top level node may contain the document title instead of nil.
+ (cdr (rst-remaining-stn (rst-all-ttls-with-level) -1)))
+
+(defun rst-remaining-stn (remaining lev)
"Process the first entry of REMAINING expected to be on level LEV.
-REMAINING is the remaining list of adornments consisting
-of (LEVEL TITLE MARKER) entries.
-
-Return (UNPROCESSED (TITLE MARKER) CHILD...) for the first entry
-of REMAINING where TITLE is nil if the expected level is not
-matched. UNPROCESSED is the list of still unprocessed entries.
-Each CHILD is a child of this entry in the same format but
-without UNPROCESSED."
- (let ((cur (car remaining))
+REMAINING is the remaining list of `rst-Ttl' entries.
+Return (UNPROCESSED . NODE) for the first entry of REMAINING.
+UNPROCESSED is the list of still unprocessed entries. NODE is a
+`rst-Stn' or nil if REMAINING is empty."
+ (let ((ttl (car remaining))
(unprocessed remaining)
- ttl-mrk children)
+ fnd children)
;; If the current adornment matches expected level.
- (when (and cur (= (car cur) lev))
+ (when (and ttl (= (rst-Ttl-level ttl) lev))
;; Consume the current entry and create the current node with it.
(setq unprocessed (cdr remaining))
- (setq ttl-mrk (cdr cur)))
-
+ (setq fnd ttl))
;; Build the child nodes as long as they have deeper level.
- (while (and unprocessed (> (caar unprocessed) lev))
- (let ((rem-children (rst-section-tree-rec unprocessed (1+ lev))))
- (setq children (cons (cdr rem-children) children))
- (setq unprocessed (car rem-children))))
+ (while (and unprocessed (> (rst-Ttl-level (car unprocessed)) lev))
+ (let* ((rem-child (rst-remaining-stn unprocessed (1+ lev)))
+ (child (cdr rem-child)))
+ (when child
+ (push child children))
+ (setq unprocessed (car rem-child))))
(setq children (reverse children))
-
(cons unprocessed
- (cons (or ttl-mrk
- ;; Node on this level missing - use nil as text and the
- ;; marker of the first child.
- (cons nil (cdaar children)))
- children))))
-
-(defun rst-section-tree-point (tree &optional point)
- "Return section containing POINT by returning the closest node in TREE.
-TREE is a section tree as returned by `rst-section-tree'
-consisting of (NODE CHILD...) entries. POINT defaults to the
-current point. A NODE must have the structure (IGNORED MARKER...).
-
-Return (PATH NODE CHILD...). NODE is the node where POINT is in
-if any. PATH is a list of nodes from the top of the tree down to
-and including NODE. List of CHILD are the children of NODE if any."
- (setq point (or point (point)))
- (let ((cur (car tree))
- (children (cdr tree)))
- ;; Point behind current node?
- (if (and (cadr cur) (>= point (cadr cur)))
- ;; Iterate all the children, looking for one that might contain the
- ;; current section.
- (let (found)
- (while (and children (>= point (cadaar children)))
- (setq found children
- children (cdr children)))
- (if found
- ;; Found section containing point in children.
- (let ((sub (rst-section-tree-point (car found) point)))
- ;; Extend path with current node and return NODE CHILD... from
- ;; sub.
- (cons (cons cur (car sub)) (cdr sub)))
- ;; Point in this section: Start a new path with current node and
- ;; return current NODE CHILD...
- (cons (list cur) tree)))
- ;; Current node behind point: start a new path with current node and
- ;; no NODE CHILD...
- (list (list cur)))))
+ (if (or fnd children)
+ (rst-Stn-new fnd lev children)))))
+
+(defun rst-stn-containing-point (stn &optional point)
+ "Return `rst-Stn' in STN before POINT or nil if in no section.
+POINT defaults to the current point. STN may be nil for no
+section headers at all."
+ (when stn
+ (setq point (or point (point)))
+ (when (>= point (rst-Stn-get-title-beginning stn))
+ ;; Point may be in this section or a child.
+ (let ((children (rst-Stn-children stn))
+ found)
+ (while (and children
+ (>= point (rst-Stn-get-title-beginning (car children))))
+ ;; Point may be in this child.
+ (setq found (car children)
+ children (cdr children)))
+ (if found
+ (rst-stn-containing-point found point)
+ stn)))))
(defgroup rst-toc nil
"Settings for reStructuredText table of contents."
@@ -2337,6 +2743,7 @@ indentation style:
:group 'rst-toc)
(rst-testcover-defcustom)
+;; FIXME: What does this mean?
;; This is used to avoid having to change the user's mode.
(defvar rst-toc-insert-click-keymap
(let ((map (make-sparse-keymap)))
@@ -2351,7 +2758,7 @@ indentation style:
(rst-testcover-defcustom)
(defun rst-toc-insert (&optional pfxarg)
- "Insert a simple text rendering of the table of contents.
+ "Insert a text rendering of the table of contents of the current section.
By default the top level is ignored if there is only one, because
we assume that the document will have a single title.
@@ -2361,98 +2768,77 @@ to the specified level.
The TOC is inserted indented at the current column."
(interactive "P")
(rst-reset-section-caches)
- (let* (;; Check maximum level override.
- (rst-toc-insert-max-level
- (if (and (integerp pfxarg) (> (prefix-numeric-value pfxarg) 0))
- (prefix-numeric-value pfxarg) rst-toc-insert-max-level))
-
- ;; Get the section tree for the current cursor point.
- (sectree-pair
- (rst-section-tree-point
- (rst-section-tree)))
-
- ;; Figure out initial indent.
- (initial-indent (make-string (current-column) ? ))
- (init-point (point)))
-
- (when (cddr sectree-pair)
- (rst-toc-insert-node (cdr sectree-pair) 0 initial-indent "")
-
- ;; Fixup for the first line.
- (delete-region init-point (+ init-point (length initial-indent)))
-
+ (let (;; Check maximum level override.
+ (rst-toc-insert-max-level
+ (if (and (integerp pfxarg) (> (prefix-numeric-value pfxarg) 0))
+ (prefix-numeric-value pfxarg) rst-toc-insert-max-level))
+ (pt-stn (rst-stn-containing-point (rst-all-stn)))
+ ;; Figure out initial indent.
+ (initial-indent (make-string (current-column) ? ))
+ (init-point (point)))
+ (when (and pt-stn (rst-Stn-children pt-stn))
+ (rst-toc-insert-node pt-stn 0 initial-indent "")
+ ;; FIXME: Really having the last newline would be better.
;; Delete the last newline added.
(delete-char -1))))
-(defun rst-toc-insert-node (node level indent pfx)
- "Insert tree node NODE in table-of-contents.
-Recursive function that does printing of the inserted TOC.
-LEVEL is the depth level of the sections in the tree.
-INDENT is the indentation string. PFX is the prefix numbering,
-that includes the alignment necessary for all the children of
-level to align."
-
+(defun rst-toc-insert-node (stn level indent pfx)
+ "Insert STN in table-of-contents.
+LEVEL is the depth level of the sections in the tree currently
+rendered. INDENT is the indentation string. PFX is the prefix
+numbering, that includes the alignment necessary for all the
+children of level to align."
;; Note: we do child numbering from the parent, so we start number the
;; children one level before we print them.
- (let ((do-print (> level 0))
- (count 1))
- (when do-print
- (insert indent)
- (let ((b (point)))
- (unless (equal rst-toc-insert-style 'plain)
- (insert pfx rst-toc-insert-number-separator))
- (insert (or (caar node) "[missing node]"))
- ;; Add properties to the text, even though in normal text mode it
- ;; won't be doing anything for now. Not sure that I want to change
- ;; mode stuff. At least the highlighting gives the idea that this
- ;; is generated automatically.
- (put-text-property b (point) 'mouse-face 'highlight)
- (put-text-property b (point) 'rst-toc-target (cadar node))
- (put-text-property b (point) 'keymap rst-toc-insert-click-keymap))
- (insert "\n")
-
- ;; Prepare indent for children.
- (setq indent
- (cond
- ((eq rst-toc-insert-style 'plain)
- (concat indent (make-string rst-toc-indent ? )))
-
- ((eq rst-toc-insert-style 'fixed)
- (concat indent (make-string rst-toc-indent ? )))
-
- ((eq rst-toc-insert-style 'aligned)
- (concat indent (make-string (+ (length pfx) 2) ? )))
-
- ((eq rst-toc-insert-style 'listed)
- (concat (substring indent 0 -3)
- (concat (make-string (+ (length pfx) 2) ? ) " - "))))))
-
- (if (or (eq rst-toc-insert-max-level nil)
- (< level rst-toc-insert-max-level))
- (let ((do-child-numbering (>= level 0))
- fmt)
- (if do-child-numbering
- (progn
- ;; Add a separating dot if there is already a prefix.
- (when (> (length pfx) 0)
- (string-match (rst-re "[ \t\n]*\\'") pfx)
- (setq pfx (concat (replace-match "" t t pfx) ".")))
-
- ;; Calculate the amount of space that the prefix will require
- ;; for the numbers.
- (if (cdr node)
- (setq fmt (format "%%-%dd"
- (1+ (floor (log (length (cdr node))
- 10))))))))
-
- (dolist (child (cdr node))
- (rst-toc-insert-node child
- (1+ level)
- indent
- (if do-child-numbering
- (concat pfx (format fmt count)) pfx))
- (incf count))))))
-
+ (when (> level 0)
+ (unless (> (current-column) 0)
+ ;; No indent yet - insert it.
+ (insert indent))
+ (let ((beg (point)))
+ (unless (equal rst-toc-insert-style 'plain)
+ (insert pfx rst-toc-insert-number-separator))
+ (insert (rst-Stn-get-text stn))
+ ;; Add properties to the text, even though in normal text mode it
+ ;; won't be doing anything for now. Not sure that I want to change
+ ;; mode stuff. At least the highlighting gives the idea that this
+ ;; is generated automatically.
+ (put-text-property beg (point) 'mouse-face 'highlight)
+ (put-text-property
+ beg (point) 'rst-toc-target
+ (set-marker (make-marker) (rst-Stn-get-title-beginning stn)))
+ (put-text-property beg (point) 'keymap rst-toc-insert-click-keymap))
+ (insert "\n")
+ ;; Prepare indent for children.
+ (setq indent
+ (cond
+ ((eq rst-toc-insert-style 'plain)
+ (concat indent (make-string rst-toc-indent ? )))
+ ((eq rst-toc-insert-style 'fixed)
+ (concat indent (make-string rst-toc-indent ? )))
+ ((eq rst-toc-insert-style 'aligned)
+ (concat indent (make-string (+ (length pfx) 2) ? )))
+ ((eq rst-toc-insert-style 'listed)
+ (concat (substring indent 0 -3)
+ (concat (make-string (+ (length pfx) 2) ? ) " - "))))))
+ (when (or (eq rst-toc-insert-max-level nil)
+ (< level rst-toc-insert-max-level))
+ (let ((count 1)
+ fmt)
+ ;; Add a separating dot if there is already a prefix.
+ (when (> (length pfx) 0)
+ (string-match (rst-re "[ \t\n]*\\'") pfx)
+ (setq pfx (concat (replace-match "" t t pfx) ".")))
+ ;; Calculate the amount of space that the prefix will require
+ ;; for the numbers.
+ (when (rst-Stn-children stn)
+ (setq fmt
+ (format "%%-%dd"
+ (1+ (floor (log (length (rst-Stn-children stn))
+ 10))))))
+ (dolist (child (rst-Stn-children stn))
+ (rst-toc-insert-node child (1+ level) indent
+ (concat pfx (format fmt count)))
+ (incf count)))))
(defun rst-toc-update ()
"Automatically find the contents section of a document and update.
@@ -2497,57 +2883,45 @@ file-write hook to always make it up-to-date automatically."
;; Note: always return nil, because this may be used as a hook.
nil)
-;; Note: we cannot bind the TOC update on file write because it messes with
-;; undo. If we disable undo, since it adds and removes characters, the
-;; positions in the undo list are not making sense anymore. Dunno what to do
-;; with this, it would be nice to update when saving.
+;; FIXME: Updating the toc on saving would be nice. However, this doesn't work
+;; correctly:
;;
-;; (add-hook 'write-contents-hooks 'rst-toc-update-fun)
-;; (defun rst-toc-update-fun ()
-;; ;; Disable undo for the write file hook.
-;; (let ((buffer-undo-list t)) (rst-toc-update) ))
+;; (add-hook 'write-contents-hooks 'rst-toc-update-fun)
+;; (defun rst-toc-update-fun ()
+;; ;; Disable undo for the write file hook.
+;; (let ((buffer-undo-list t)) (rst-toc-update) ))
(defalias 'rst-toc-insert-update 'rst-toc-update) ; backwards compat.
-;;------------------------------------------------------------------------------
-
-(defun rst-toc-node (node level)
- "Recursive function that does insert NODE at LEVEL in the table-of-contents."
-
- (if (> level 0)
- (let ((b (point)))
- ;; Insert line text.
- (insert (make-string (* rst-toc-indent (1- level)) ? ))
- (insert (or (caar node) "[missing node]"))
-
- ;; Highlight lines.
- (put-text-property b (point) 'mouse-face 'highlight)
-
- ;; Add link on lines.
- (put-text-property b (point) 'rst-toc-target (cadar node))
-
- (insert "\n")))
-
- (dolist (child (cdr node))
- (rst-toc-node child (1+ level))))
-
-(defun rst-toc-count-lines (node target-node)
- "Count the number of lines from NODE to the TARGET-NODE node.
-This recursive function returns a cons of the number of
-additional lines that have been counted for its node and
-children, and t if the node has been found."
-
- (let ((count 1)
- found)
- (if (eq node target-node)
- (setq found t)
- (let ((child (cdr node)))
- (while (and child (not found))
- (let ((cl (rst-toc-count-lines (car child) target-node)))
- (setq count (+ count (car cl))
- found (cdr cl)
- child (cdr child))))))
- (cons count found)))
+(defun rst-toc-node (stn buf target)
+ "Insert STN in the table-of-contents of buffer BUF.
+If TARGET is given and this call renders a `rst-Stn' at the same
+location return position of beginning of line. Otherwise return
+nil."
+ (let ((beg (point))
+ fnd)
+ (if (or (not stn) (rst-Stn-is-top stn))
+ (progn
+ (insert (format "Table of Contents:\n"))
+ (put-text-property beg (point)
+ 'face (list '(background-color . "gray"))))
+ (when (and target
+ (equal (rst-Stn-get-title-beginning stn)
+ (rst-Stn-get-title-beginning target)))
+ (setq fnd beg))
+ (insert (make-string (* rst-toc-indent (rst-Stn-level stn)) ? ))
+ (insert (rst-Stn-get-text stn))
+ ;; Highlight lines.
+ (put-text-property beg (point) 'mouse-face 'highlight)
+ (insert "\n")
+ ;; Add link on lines.
+ (put-text-property
+ beg (point) 'rst-toc-target
+ (set-marker (make-marker) (rst-Stn-get-title-beginning stn) buf)))
+ (when stn
+ (dolist (child (rst-Stn-children stn))
+ (setq fnd (or (rst-toc-node child buf target) fnd))))
+ fnd))
(defvar rst-toc-buffer-name "*Table of Contents*"
"Name of the Table of Contents buffer.")
@@ -2555,7 +2929,6 @@ children, and t if the node has been found."
(defvar rst-toc-return-wincfg nil
"Window configuration to which to return when leaving the TOC.")
-
(defun rst-toc ()
"Display a table-of-contents.
Finds all the section titles and their adornments in the
@@ -2567,37 +2940,21 @@ The Emacs buffer can be navigated, and selecting a section
brings the cursor in that section."
(interactive)
(rst-reset-section-caches)
- (let* ((curbuf (list (current-window-configuration) (point-marker)))
- (sectree (rst-section-tree))
-
- (our-node (cdr (rst-section-tree-point sectree)))
- line
-
- ;; Create a temporary buffer.
- (buf (get-buffer-create rst-toc-buffer-name)))
-
+ (let* ((wincfg (list (current-window-configuration) (point-marker)))
+ (sectree (rst-all-stn))
+ (target-node (rst-stn-containing-point sectree))
+ (target-buf (current-buffer))
+ (buf (get-buffer-create rst-toc-buffer-name))
+ target-pos)
(with-current-buffer buf
(let ((inhibit-read-only t))
(rst-toc-mode)
(delete-region (point-min) (point-max))
- (insert (format "Table of Contents: %s\n" (or (caar sectree) "")))
- (put-text-property (point-min) (point)
- 'face (list '(background-color . "gray")))
- (rst-toc-node sectree 0)
-
- ;; Count the lines to our found node.
- (let ((linefound (rst-toc-count-lines sectree our-node)))
- (setq line (if (cdr linefound) (car linefound) 0)))))
+ (setq target-pos (rst-toc-node sectree target-buf target-node))))
(display-buffer buf)
(pop-to-buffer buf)
-
- ;; Save the buffer to return to.
- (set (make-local-variable 'rst-toc-return-wincfg) curbuf)
-
- ;; Move the cursor near the right section in the TOC.
- (goto-char (point-min))
- (forward-line (1- line))))
-
+ (setq-local rst-toc-return-wincfg wincfg)
+ (goto-char (or target-pos (point-min)))))
(defun rst-toc-mode-find-section ()
"Get the section from text property at point."
@@ -2660,10 +3017,12 @@ EVENT is the input event."
(defvar rst-toc-mode-map
(let ((map (make-sparse-keymap)))
(define-key map [mouse-1] 'rst-toc-mode-mouse-goto-kill)
+ ;; FIXME: This very useful function must be on some key.
(define-key map [mouse-2] 'rst-toc-mode-mouse-goto)
(define-key map "\C-m" 'rst-toc-mode-goto-section)
(define-key map "f" 'rst-toc-mode-goto-section)
(define-key map "q" 'rst-toc-quit-window)
+ ;; FIXME: Killing should clean up like `rst-toc-quit-window' does.
(define-key map "z" 'kill-this-buffer)
map)
"Keymap for `rst-toc-mode'.")
@@ -2672,15 +3031,13 @@ EVENT is the input event."
;; Could inherit from the new `special-mode'.
(define-derived-mode rst-toc-mode nil "ReST-TOC"
- "Major mode for output from \\[rst-toc], the table-of-contents for the document."
- (setq buffer-read-only t))
+ "Major mode for output from \\[rst-toc], the table-of-contents for the document.
-;; Note: use occur-mode (replace.el) as a good example to complete missing
-;; features.
+\\{rst-toc-mode-map}"
+ (setq buffer-read-only t))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Section movement commands
-;; =========================
+;; Section movement
(defun rst-forward-section (&optional offset)
"Skip to the next reStructuredText section title.
@@ -2688,38 +3045,32 @@ OFFSET specifies how many titles to skip. Use a negative OFFSET
to move backwards in the file (default is to use 1)."
(interactive)
(rst-reset-section-caches)
- (let* (;; Default value for offset.
- (offset (or offset 1))
-
- ;; Get all the adornments in the file, with their line numbers.
- (allados (rst-find-all-adornments))
-
- ;; Get the current line.
- (curline (line-number-at-pos))
-
- (cur allados)
- (idx 0))
-
- ;; Find the index of the "next" adornment w.r.t. to the current line.
- (while (and cur (< (caar cur) curline))
+ (let* ((offset (or offset 1))
+ (ttls (rst-all-ttls))
+ (curpos (line-beginning-position))
+ (cur ttls)
+ (idx 0)
+ ttl)
+
+ ;; Find the index of the "next" adornment with respect to the current line.
+ (while (and cur (< (rst-Ttl-get-title-beginning (car cur)) curpos))
(setq cur (cdr cur))
(incf idx))
- ;; 'cur' is the adornment on or following the current line.
+ ;; `cur' is the `rst-Ttl' on or following the current line.
- (if (and (> offset 0) cur (= (caar cur) curline))
+ (if (and (> offset 0) cur
+ (equal (rst-Ttl-get-title-beginning (car cur)) curpos))
(incf idx))
;; Find the final index.
(setq idx (+ idx (if (> offset 0) (- offset 1) offset)))
- (setq cur (nth idx allados))
-
- ;; If the index is positive, goto the line, otherwise go to the buffer
- ;; boundaries.
- (if (and cur (>= idx 0))
- (progn
- (goto-char (point-min))
- (forward-line (1- (car cur))))
- (if (> offset 0) (goto-char (point-max)) (goto-char (point-min))))))
+ (setq ttl (nth idx ttls))
+ (goto-char (cond
+ ((and ttl (>= idx 0))
+ (rst-Ttl-get-title-beginning ttl))
+ ((> offset 0)
+ (point-max))
+ ((point-min))))))
(defun rst-backward-section ()
"Like `rst-forward-section', except move back one title."
@@ -2751,11 +3102,13 @@ for negative COUNT."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Functions to work on item lists (e.g. indent/dedent, enumerate), which are
-;; always 2 or 3 characters apart horizontally with rest.
+;; Indentation
(defun rst-find-leftmost-column (beg end)
- "Return the leftmost column in region BEG to END."
+ "Return the leftmost column spanned by region BEG to END.
+The line containing the start of the region is always considered
+spanned. If the region ends at the beginning of a line this line
+is not considered spanned, otherwise it is spanned."
(let (mincol)
(save-excursion
(goto-char beg)
@@ -2768,80 +3121,6 @@ for negative COUNT."
(forward-line 1)))
mincol))
-;; FIXME: This definition is old and deprecated. We need to move to the newer
-;; version below.
-(defmacro rst-iterate-leftmost-paragraphs
- (beg end first-only body-consequent body-alternative)
- ;; FIXME: The following comment is pretty useless.
- "Call FUN at the beginning of each line, with an argument that
-specifies whether we are at the first line of a paragraph that
-starts at the leftmost column of the given region BEG and END.
-Set FIRST-ONLY to true if you want to callback on the first line
-of each paragraph only."
- `(save-excursion
- (let ((leftcol (rst-find-leftmost-column ,beg ,end))
- (endm (copy-marker ,end)))
-
- (do* (;; Iterate lines.
- (l (progn (goto-char ,beg) (back-to-indentation))
- (progn (forward-line 1) (back-to-indentation)))
-
- (previous nil valid)
-
- (curcol (current-column)
- (current-column))
-
- (valid (and (= curcol leftcol)
- (not (looking-at (rst-re 'lin-end))))
- (and (= curcol leftcol)
- (not (looking-at (rst-re 'lin-end))))))
- ((>= (point) endm))
-
- (if (if ,first-only
- (and valid (not previous))
- valid)
- ,body-consequent
- ,body-alternative)))))
-
-;; FIXME: This needs to be refactored. Probably this is simply a function
-;; applying BODY rather than a macro.
-(defmacro rst-iterate-leftmost-paragraphs-2 (spec &rest body)
- "Evaluate BODY for each line in region defined by BEG END.
-LEFTMOST is set to true if the line is one of the leftmost of the
-entire paragraph. PARABEGIN is set to true if the line is the
-first of a paragraph."
- (declare (indent 1) (debug (sexp body)))
- (destructuring-bind
- (beg end parabegin leftmost isleftmost isempty) spec
-
- `(save-excursion
- (let ((,leftmost (rst-find-leftmost-column ,beg ,end))
- (endm (copy-marker ,end)))
-
- (do* (;; Iterate lines.
- (l (progn (goto-char ,beg) (back-to-indentation))
- (progn (forward-line 1) (back-to-indentation)))
-
- (empty-line-previous nil ,isempty)
-
- (,isempty (looking-at (rst-re 'lin-end))
- (looking-at (rst-re 'lin-end)))
-
- (,parabegin (not ,isempty)
- (and empty-line-previous
- (not ,isempty)))
-
- (,isleftmost (and (not ,isempty)
- (= (current-column) ,leftmost))
- (and (not ,isempty)
- (= (current-column) ,leftmost))))
- ((>= (point) endm))
-
- (progn ,@body))))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Indentation
-
;; FIXME: At the moment only block comments with leading empty comment line are
;; supported. Comment lines with leading comment markup should be also
;; supported. May be a customizable option could control which style to
@@ -3052,7 +3331,7 @@ above. If no suitable tab is found `rst-indent-width' is used."
(abs (abs cnt)) ; Absolute number of steps to take.
;; Get the position of the first tab beyond leftmostcol.
(fnd (lexical-let ((cmp cmp)
- (leftmostcol leftmostcol)) ; Create closure.
+ (leftmostcol leftmostcol)) ;; Create closure.
(rst-position-if (lambda (elt)
(funcall cmp elt leftmostcol))
tabs)))
@@ -3139,7 +3418,7 @@ Region is from BEG to END. Uncomment if ARG."
(defun rst-uncomment-region (beg end &optional _arg)
"Uncomment the current region.
-Region is from BEG to END. ARG is ignored"
+Region is from BEG to END. _ARG is ignored"
(save-excursion
(let (bol eol)
(goto-char beg)
@@ -3150,7 +3429,8 @@ Region is from BEG to END. ARG is ignored"
(indent-rigidly eol end (- rst-indent-comment))
(delete-region bol eol))))
-;;------------------------------------------------------------------------------
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Apply to indented block
;; FIXME: These next functions should become part of a larger effort to redo
;; the bullets in bulleted lists. The enumerate would just be one of
@@ -3158,29 +3438,127 @@ Region is from BEG to END. ARG is ignored"
;;
;; FIXME: We need to do the enumeration removal as well.
+(defun rst-apply-indented-blocks (beg end ind fun)
+ "Apply FUN to all lines from BEG to END in blocks indented to IND.
+The first indented block starts with the first non-empty line
+containing or after BEG and indented to IND. After the first
+line the indented block may contain more lines with same
+indentation (the paragraph) followed by empty lines and lines
+more indented (the sub-blocks). A following line indented to IND
+starts the next indented block. A line with less indentation
+than IND terminates the current indented block. Such lines and
+all following lines not indented to IND are skipped. FUN is
+applied to unskipped lines like this
+
+ (FUN COUNT FIRSTP SUBP EMPTYP RELIND LASTRET)
+
+COUNT is 0 before the first indented block and increments for
+every indented block found.
+
+FIRSTP is t when this is the first line of the paragraph.
+
+SUBP is t when this line is part of a sub-block.
+
+EMPTYP is t when this line is empty.
+
+RELIND is nil for an empty line, 0 for a line indented to IND,
+and the number of columns more indented otherwise.
+
+LASTRET is the return value of FUN returned by the last
+invocation for the same indented block or nil for the first
+invocation.
+
+When FUN is called point is immediately behind indentation of
+that line. FUN may change everything as long as a marker at END
+is handled correctly by the change.
+
+Return the return value of the last invocation of FUN or nil if
+FUN was never called."
+ (let (lastret
+ subp
+ skipping
+ nextm
+ (count 0) ; Before first indented block
+ (endm (copy-marker end t)))
+ (save-excursion
+ (goto-char beg)
+ (while (< (point) endm)
+ (save-excursion
+ (setq nextm (save-excursion
+ (forward-line 1)
+ (copy-marker (point) t)))
+ (back-to-indentation)
+ (let (firstp
+ emptyp
+ (relind (- (current-column) ind)))
+ (cond
+ ((looking-at (rst-re 'lin-end))
+ (setq emptyp t)
+ (setq relind nil)
+ ;; Breaks indented block if one is started
+ (setq subp (not (zerop count))))
+ ((< relind 0) ; Less indented
+ (setq skipping t))
+ ((zerop relind) ; In indented block
+ (when (or subp skipping (zerop count))
+ (setq firstp t)
+ (incf count))
+ (setq subp nil)
+ (setq skipping nil))
+ (t ; More indented
+ (setq subp t)))
+ (unless skipping
+ (setq lastret
+ (funcall fun count firstp subp emptyp relind lastret)))))
+ (goto-char nextm))
+ lastret)))
+
(defun rst-enumerate-region (beg end all)
"Add enumeration to all the leftmost paragraphs in the given region.
The region is specified between BEG and END. With ALL,
do all lines instead of just paragraphs."
(interactive "r\nP")
- (let ((count 0)
- (last-insert-len nil))
- (rst-iterate-leftmost-paragraphs
- beg end (not all)
- (let ((ins-string (format "%d. " (incf count))))
- (setq last-insert-len (length ins-string))
- (insert ins-string))
- (insert (make-string last-insert-len ?\ )))))
+ (let ((enum 0))
+ (rst-apply-indented-blocks
+ beg end (rst-find-leftmost-column beg end)
+ (lambda (count firstp subp emptyp relind lastret)
+ (cond
+ (emptyp)
+ ((zerop count))
+ (subp
+ (insert lastret))
+ ((or firstp all)
+ (let ((ins (format "%d. " (incf enum))))
+ (setq lastret (make-string (length ins) ?\ ))
+ (insert ins)))
+ (t
+ (insert lastret)))
+ lastret))))
+;; FIXME: Does not deal with deeper indentation - although
+;; `rst-apply-indented-blocks' could.
(defun rst-bullet-list-region (beg end all)
"Add bullets to all the leftmost paragraphs in the given region.
The region is specified between BEG and END. With ALL,
do all lines instead of just paragraphs."
(interactive "r\nP")
- (rst-iterate-leftmost-paragraphs
- beg end (not all)
- (insert (car rst-preferred-bullets) " ")
- (insert " ")))
+ (unless rst-preferred-bullets
+ (error "No preferred bullets defined"))
+ (let ((bul (format "%c " (car rst-preferred-bullets)))
+ (cont " "))
+ (rst-apply-indented-blocks
+ beg end (rst-find-leftmost-column beg end)
+ (lambda (count firstp subp emptyp relind lastret)
+ (cond
+ (emptyp)
+ ((zerop count))
+ (subp
+ (insert cont))
+ ((or firstp all)
+ (insert bul))
+ (t
+ (insert cont)))
+ nil))))
;; FIXME: Does not deal with a varying number of digits appropriately.
;; FIXME: Does not deal with multiple levels independently.
@@ -3203,29 +3581,21 @@ Renumber as necessary. Region is from BEG to END."
(replace-match (format "%d." count) nil nil nil 1)
(incf count)))))
-;;------------------------------------------------------------------------------
-
-(defun rst-line-block-region (rbeg rend &optional pfxarg)
- "Toggle line block prefixes for a region.
-Region is from RBEG to REND. With PFXARG set the empty lines too."
+(defun rst-line-block-region (beg end &optional with-empty)
+ "Add line block prefixes for a region.
+Region is from BEG to END. With WITH-EMPTY prefix empty lines too."
(interactive "r\nP")
- (let ((comment-start "| ")
- (comment-end "")
- (comment-start-skip "| ")
- (comment-style 'indent)
- (force (not (not pfxarg))))
- (rst-iterate-leftmost-paragraphs-2
- (rbeg rend parbegin leftmost isleft isempty)
- (when (or force (not isempty))
- (move-to-column leftmost force)
- (delete-region (point) (+ (point) (- (current-indentation) leftmost)))
- (insert "| ")))))
-
+ (let ((ind (rst-find-leftmost-column beg end)))
+ (rst-apply-indented-blocks
+ beg end ind
+ (lambda (count firstp subp emptyp relind lastret)
+ (when (or with-empty (not emptyp))
+ (move-to-column ind t)
+ (insert "| "))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Font lock
-;; =========
(require 'font-lock)
@@ -3525,7 +3895,7 @@ of your own."
(,(rst-re 'ilm-pfx '(:grp "_`" ilcbkq-tag "`") 'ilm-sfx)
1 rst-definition-face)
;; `Hyperlink References`_
- ;; FIXME: `Embedded URIs`_ not considered.
+ ;; FIXME: `Embedded URIs and Aliases`_ not considered.
;; FIXME: Directly adjacent marked up words are not fontified correctly
;; unless they are not separated by two spaces: foo_ bar_.
(,(rst-re 'ilm-pfx '(:grp (:alt (:seq "`" ilcbkq-tag "`")
@@ -3714,9 +4084,9 @@ Return extended point or nil if not moved."
(if (looking-at (rst-re 'ado-beg-2-1)) ; may be an underline /
; overline.
(if (zerop (rst-forward-line dir))
- (if (looking-at (rst-re 'ttl-beg)) ; title found, i.e.
- ; underline / overline
- ; found.
+ (if (looking-at (rst-re 'ttl-beg-1)) ; title found, i.e.
+ ; underline / overline
+ ; found.
(if (zerop (rst-forward-line dir))
(if (not
(looking-at (rst-re 'ado-beg-2-1))) ; no
@@ -3726,7 +4096,7 @@ Return extended point or nil if not moved."
; / adornment.
(if (< dir 0) ; keep downward adornment.
(rst-forward-line (- dir))))) ; step back to adornment.
- (if (looking-at (rst-re 'ttl-beg)) ; may be a title.
+ (if (looking-at (rst-re 'ttl-beg-1)) ; may be a title.
(if (zerop (rst-forward-line dir))
(if (not
(looking-at (rst-re 'ado-beg-2-1))) ; no overline /
@@ -3827,7 +4197,7 @@ next non-empty line if this is indented more than the current one."
"Set the match found earlier if match were found.
Match has been found by `rst-font-lock-find-unindented-line-limit'
the first time called or no match is found. Return non-nil if
-match was found. LIMIT is not used but mandated by the caller."
+match was found. _LIMIT is not used but mandated by the caller."
(when rst-font-lock-find-unindented-line-end
(set-match-data
(list rst-font-lock-find-unindented-line-begin
@@ -3846,22 +4216,14 @@ match was found. LIMIT is not used but mandated by the caller."
"Storage for `rst-font-lock-handle-adornment-matcher'.
Either section level of the current adornment or t for a transition.")
-(defun rst-adornment-level (key)
- "Return section level for adornment KEY.
-KEY is the first element of the return list of `rst-classify-adornment'.
-If KEY is not a cons return it. If KEY is found in the hierarchy return
-its level. Otherwise return a level one beyond the existing hierarchy."
- (if (not (consp key))
- key
- (let* ((hier (rst-get-hierarchy))
- (char (car key))
- (style (cdr key)))
- (1+ (or (lexical-let ((char char)
- (style style)
- (hier hier)) ; Create closure.
- (rst-position-if (lambda (elt)
- (and (equal (car elt) char)
- (equal (cadr elt) style))) hier))
+(defun rst-adornment-level (ado)
+ "Return section level for ADO or t for a transition.
+If ADO is found in the hierarchy return its level. Otherwise
+return a level one beyond the existing hierarchy."
+ (if (rst-Ado-is-transition ado)
+ t
+ (let ((hier (rst-Hdr-ado-map (rst-hdr-hierarchy))))
+ (1+ (or (rst-Ado-position ado hier)
(length hier))))))
(defvar rst-font-lock-adornment-match nil
@@ -3878,15 +4240,15 @@ matched. ADO-END is the point where ADO ends. Return the point
where the whole adorned construct ends.
Called as a PRE-MATCH-FORM in the sense of `font-lock-keywords'."
- (let ((ado-data (rst-classify-adornment ado ado-end)))
- (if (not ado-data)
+ (let ((ttl (rst-classify-adornment ado ado-end)))
+ (if (not ttl)
(setq rst-font-lock-adornment-level nil
rst-font-lock-adornment-match nil)
(setq rst-font-lock-adornment-level
- (rst-adornment-level (car ado-data)))
- (setq rst-font-lock-adornment-match (cdr ado-data))
- (goto-char (nth 1 ado-data)) ; Beginning of construct.
- (nth 2 ado-data)))) ; End of construct.
+ (rst-adornment-level (rst-Ttl-ado ttl)))
+ (setq rst-font-lock-adornment-match (rst-Ttl-match ttl))
+ (goto-char (rst-Ttl-get-beginning ttl))
+ (rst-Ttl-get-end ttl))))
(defun rst-font-lock-handle-adornment-matcher (_limit)
"Set the match found earlier if match were found.
@@ -3895,7 +4257,7 @@ Match has been found by
called or no match is found. Return non-nil if match was found.
Called as a MATCHER in the sense of `font-lock-keywords'.
-LIMIT is not used but mandated by the caller."
+_LIMIT is not used but mandated by the caller."
(let ((match rst-font-lock-adornment-match))
;; May run only once - enforce this.
(setq rst-font-lock-adornment-match nil)
@@ -3933,6 +4295,13 @@ document with \\[rst-compile]."
".pdf" nil)
(s5 ,(if (executable-find "rst2s5.py") "rst2s5.py" "rst2s5")
".html" nil))
+ ;; FIXME: Add at least those converters officially supported like `rst2odt'
+ ;; and `rst2man'.
+ ;; FIXME: To make this really useful there should be a generic command the
+ ;; user gives one of the symbols and this way select the conversion to
+ ;; run. This should replace the toolset stuff somehow.
+ ;; FIXME: Allow a template for the conversion command so `rst2pdf ... -o ...'
+ ;; can be supported.
"Table describing the command to use for each tool-set.
An association list of the tool-set to a list of the (command to use,
extension of produced filename, options to the tool (nil or a
@@ -4002,16 +4371,17 @@ select the alternative tool-set."
(outname (file-name-sans-extension bufname)))
;; Set compile-command before invocation of compile.
- (set (make-local-variable 'compile-command)
- (mapconcat 'identity
- (list command
- (or options "")
- (if conffile
- (concat "--config=" (shell-quote-argument conffile))
- "")
- (shell-quote-argument bufname)
- (shell-quote-argument (concat outname extension)))
- " "))
+ (setq-local
+ compile-command
+ (mapconcat 'identity
+ (list command
+ (or options "")
+ (if conffile
+ (concat "--config=" (shell-quote-argument conffile))
+ "")
+ (shell-quote-argument bufname)
+ (shell-quote-argument (concat outname extension)))
+ " "))
;; Invoke the compile command.
(if (or compilation-read-command use-alt)
@@ -4036,7 +4406,7 @@ buffer, if the region is not selected."
(cadr (assq 'pseudoxml rst-compile-toolsets))
standard-output)))
-;; FIXME: Should be defcustom.
+;; FIXME: Should be integrated in `rst-compile-toolsets'.
(defvar rst-pdf-program "xpdf"
"Program used to preview PDF files.")
@@ -4053,7 +4423,8 @@ buffer, if the region is not selected."
;; output.
))
-;; FIXME: Should be defcustom or use something like `browse-url'.
+;; FIXME: Should be integrated in `rst-compile-toolsets' defaulting to
+;; something like `browse-url'.
(defvar rst-slides-program "firefox"
"Program used to preview S5 slides.")
@@ -4070,56 +4441,41 @@ buffer, if the region is not selected."
;; output.
))
+;; FIXME: Add `rst-compile-html-preview'.
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Imenu support.
-
-;; FIXME: Integrate this properly. Consider a key binding.
-
-;; Based on code from Masatake YAMATO <yamato@redhat.com>.
-
-(defun rst-imenu-find-adornments-for-position (adornments pos)
- "Find adornments cell in ADORNMENTS for position POS."
- (let ((a nil))
- (while adornments
- (if (and (car adornments)
- (eq (car (car adornments)) pos))
- (setq a adornments
- adornments nil)
- (setq adornments (cdr adornments))))
- a))
-
-(defun rst-imenu-convert-cell (elt adornments)
- "Convert a cell ELT in a tree returned from `rst-section-tree' to Imenu index.
-ADORNMENTS is used as hint information for conversion."
- (let* ((kar (car elt))
- (kdr (cdr elt))
- (title (car kar)))
- (if kar
- (let* ((p (marker-position (cadr kar)))
- (adornments
- (rst-imenu-find-adornments-for-position adornments p))
- (a (car adornments))
- (adornments (cdr adornments))
- ;; FIXME: Overline adornment characters need to be in front so
- ;; they become visible even for long title lines. May be
- ;; an additional level number is also useful.
- (title (format "%s%s%s"
- (make-string (1+ (nth 3 a)) (nth 1 a))
- title
- (if (eq (nth 2 a) 'simple)
- ""
- (char-to-string (nth 1 a))))))
- (cons title
- (if (null kdr)
- p
- (cons
- ;; A bit ugly but this make which-func happy.
- (cons title p)
- (mapcar (lambda (elt0)
- (rst-imenu-convert-cell elt0 adornments))
- kdr)))))
- nil)))
+;; Imenu support
+
+;; FIXME: Consider a key binding. A key binding needs to definitely switch on
+;; `which-func-mode' - i.e. `which-func-modes' must be set properly.
+
+;; Based on ideas from Masatake YAMATO <yamato@redhat.com>.
+
+(defun rst-imenu-convert-cell (stn)
+ "Convert a STN to an Imenu index node and return it."
+ (let ((ttl (rst-Stn-ttl stn))
+ (children (rst-Stn-children stn))
+ (pos (rst-Stn-get-title-beginning stn))
+ (txt (rst-Stn-get-text stn ""))
+ (pfx " ")
+ (sfx "")
+ name)
+ (when ttl
+ (let ((hdr (rst-Ttl-hdr ttl)))
+ (setq pfx (char-to-string (rst-Hdr-get-char hdr)))
+ (when (rst-Hdr-is-over-and-under hdr)
+ (setq sfx pfx))))
+ ;; FIXME: Overline adornment characters need to be in front so they
+ ;; become visible even for long title lines. May be an additional
+ ;; level number is also useful.
+ (setq name (format "%s%s%s" pfx txt sfx))
+ (cons name ;; The name of the entry.
+ (if children
+ (cons ;; The entry has a submenu.
+ (cons name pos) ;; The entry itself.
+ (mapcar 'rst-imenu-convert-cell children)) ;; The children.
+ pos)))) ;; The position of a plain entry.
;; FIXME: Document title and subtitle need to be handled properly. They should
;; get an own "Document" top level entry.
@@ -4127,25 +4483,13 @@ ADORNMENTS is used as hint information for conversion."
"Create index for Imenu.
Return as described for `imenu--index-alist'."
(rst-reset-section-caches)
- (let ((tree (rst-section-tree))
- ;; Translate line notation to point notation.
- (adornments (save-excursion
- (mapcar (lambda (ln-ado)
- (cons (progn
- (goto-char (point-min))
- (forward-line (1- (car ln-ado)))
- ;; FIXME: Need to consider
- ;; `imenu-use-markers' here?
- (point))
- (cdr ln-ado)))
- (rst-find-all-adornments)))))
- (delete nil (mapcar (lambda (elt)
- (rst-imenu-convert-cell elt adornments))
- tree))))
+ (let ((root (rst-all-stn)))
+ (when root
+ (mapcar 'rst-imenu-convert-cell (rst-Stn-children root)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Generic text functions that are more convenient than the defaults.
+;; Convenience functions
;; FIXME: Unbound command - should be bound or removed.
(defun rst-replace-lines (fromchar tochar)
@@ -4228,12 +4572,12 @@ column is used (fill-column vs. end of previous/next line)."
;; LocalWords: docutils http sourceforge rst html wp svn svnroot txt reST regex
;; LocalWords: regexes alist seq alt grp keymap abbrev overline overlines toc
-;; LocalWords: XML PNT propertized
+;; LocalWords: XML PNT propertized init referenceable
+
+(provide 'rst)
;; Local Variables:
-;; sentence-end-double-space: t
+;; sentence-end-double-space: t
;; End:
-(provide 'rst)
-
;;; rst.el ends here
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 98a01e8d83..990c09bfda 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -842,6 +842,25 @@ Return non-nil if we skipped over matched tags."
(setq arg (1- arg)))
return))
+(defun sgml-forward-sexp (n)
+ ;; This function is needed in major-modes such as nxml-mode where
+ ;; forward-sexp-function is used to give a more dwimish behavior to
+ ;; the `forward-sexp' command.
+ ;; Without it, we can end up with backtraces like:
+ ;; "get-text-property" (0xffffc0f0)
+ ;; "nxml-token-after" (0xffffc2ac)
+ ;; "nxml-forward-single-balanced-item" (0xffffc46c)
+ ;; "nxml-forward-balanced-item" (0xffffc61c)
+ ;; "forward-sexp" (0xffffc7f8)
+ ;; "sgml-parse-tag-backward" (0xffffc9c8)
+ ;; "sgml-lexical-context" (0xffffcba8)
+ ;; "sgml-mode-flyspell-verify" (0xffffcd74)
+ ;; "flyspell-word" (0xffffcf3c)
+ ;; "flyspell-post-command-hook" (0xffffd108)
+ ;; FIXME: should we also set the sgml-tag-syntax-table?
+ (let ((forward-sexp-function nil))
+ (forward-sexp n)))
+
(defvar sgml-electric-tag-pair-overlays nil)
(defvar sgml-electric-tag-pair-timer nil)
@@ -862,11 +881,12 @@ Return non-nil if we skipped over matched tags."
(if endp
(when (sgml-skip-tag-backward 1) (forward-char 1) t)
(with-syntax-table sgml-tag-syntax-table
- (up-list -1)
- (when (sgml-skip-tag-forward 1)
- (backward-sexp 1)
- (forward-char 2)
- t))))
+ (let ((forward-sexp-function nil))
+ (up-list -1)
+ (when (sgml-skip-tag-forward 1)
+ (backward-sexp 1)
+ (forward-char 2)
+ t)))))
(clones (get-char-property (point) 'text-clones)))
(when (and match
(/= cl-end cl-start)
@@ -1066,9 +1086,9 @@ With prefix argument ARG, repeat this ARG times."
((and (eq (char-before) ?>)
(or (not (eq (char-after) ?<))
(> x y)))
- (backward-sexp))
+ (sgml-forward-sexp -1))
((eq (char-after y) ?<)
- (forward-sexp)))
+ (sgml-forward-sexp 1)))
(point))))
(message "Invisible tag: %s"
;; Strip properties, otherwise, the text is invisible.
@@ -1235,7 +1255,7 @@ You might want to turn on `auto-fill-mode' to get better results."
(unless (or ;;(looking-at "</")
(progn (skip-chars-backward " \t") (bolp)))
(reindent-then-newline-and-indent))
- (forward-sexp 1)))
+ (sgml-forward-sexp 1)))
;; (indent-region beg end)
))
@@ -1281,7 +1301,7 @@ Leave point at the beginning of the tag."
(let ((pos (point)))
(condition-case nil
;; FIXME: This does not correctly skip over PI an CDATA tags.
- (forward-sexp)
+ (sgml-forward-sexp 1)
(scan-error
;; This < seems to be just a spurious one, let's ignore it.
(goto-char pos)
@@ -1315,7 +1335,7 @@ Leave point at the beginning of the tag."
(with-syntax-table sgml-tag-syntax-table
(goto-char tag-end)
(condition-case nil
- (backward-sexp)
+ (sgml-forward-sexp -1)
(scan-error
;; This > isn't really the end of a tag. Skip it.
(goto-char (1- tag-end))
@@ -1540,7 +1560,7 @@ LCON is the lexical context, if any."
(`text
(while (looking-at "</")
- (forward-sexp 1)
+ (sgml-forward-sexp 1)
(skip-chars-forward " \t"))
(let* ((here (point))
(unclosed (and ;; (not sgml-xml-mode)
@@ -1759,11 +1779,12 @@ This takes effect when first loading the library.")
"Value of `sgml-display-text' for HTML mode.")
-;; should code exactly HTML 3 here when that is finished
(defvar html-tag-alist
(let* ((1-7 '(("1") ("2") ("3") ("4") ("5") ("6") ("7")))
(1-9 `(,@1-7 ("8") ("9")))
(align '(("align" ("left") ("center") ("right"))))
+ (ialign '(("align" ("top") ("middle") ("bottom") ("left")
+ ("right"))))
(valign '(("top") ("middle") ("bottom") ("baseline")))
(rel '(("next") ("previous") ("parent") ("subdocument") ("made")))
(href '("href" ("ftp:") ("file:") ("finger:") ("gopher:") ("http:")
@@ -1776,17 +1797,29 @@ This takes effect when first loading the library.")
("title")))
(list '((nil \n ("List item: " "<li>" str
(if sgml-xml-mode "</li>") \n))))
+ (shape '(("shape" ("rect") ("circle") ("poly") ("default"))))
(cell `(t
,@align
("valign" ,@valign)
("colspan" ,@1-9)
("rowspan" ,@1-9)
- ("nowrap" t))))
+ ("nowrap" t)))
+ (cellhalign '(("align" ("left") ("center") ("right")
+ ("justify") ("char"))
+ ("char") ("charoff")))
+ (cellvalign '(("valign" ("top") ("middle") ("bottom")
+ ("baseline")))))
;; put ,-expressions first, else byte-compile chokes (as of V19.29)
;; and like this it's more efficient anyway
`(("a" ,name ,@link)
+ ("area" t ,@shape ("coords") ("href") ("nohref" "nohref") ("alt")
+ ("tabindex") ("accesskey") ("onfocus") ("onblur"))
("base" t ,@href)
+ ("col" t ,@cellhalign ,@cellvalign ("span") ("width"))
+ ("colgroup" \n ,@cellhalign ,@cellvalign ("span") ("width"))
("dir" ,@list)
+ ("figcaption")
+ ("figure" \n)
("font" nil "size" ("-1") ("+1") ("-2") ("+2") ,@1-7)
("form" (\n _ \n "<input type=\"submit\" value=\"\""
(if sgml-xml-mode " />" ">"))
@@ -1798,6 +1831,9 @@ This takes effect when first loading the library.")
("h5" ,@align)
("h6" ,@align)
("hr" t ("size" ,@1-9) ("width") ("noshade" t) ,@align)
+ ("iframe" \n ,@ialign ("longdesc") ("name") ("src")
+ ("frameborder" ("1") ("0")) ("marginwidth") ("marginheight")
+ ("scrolling" ("yes") ("no") ("auto")) ("height") ("width"))
("img" t ("align" ,@valign ("texttop") ("absmiddle") ("absbottom"))
("src") ("alt") ("width" "1") ("height" "1")
("border" "1") ("vspace" "1") ("hspace" "1") ("ismap" t))
@@ -1819,14 +1855,17 @@ This takes effect when first loading the library.")
"<tr><" str ?> _
(if sgml-xml-mode (concat "<" str "></tr>")) \n))
("border" t ,@1-9) ("width" "10") ("cellpadding"))
+ ("tbody" \n ,@cellhalign ,@cellvalign)
("td" ,@cell)
("textarea" ,name ("rows" ,@1-9) ("cols" ,@1-9))
+ ("tfoot" \n ,@cellhalign ,@cellvalign)
("th" ,@cell)
+ ("thead" \n ,@cellhalign ,@cellvalign)
("ul" ,@list ("type" ("disc") ("circle") ("square")))
,@sgml-tag-alist
- ("abbrev")
+ ("abbr")
("acronym")
("address")
("array" (nil \n
@@ -1835,20 +1874,33 @@ This takes effect when first loading the library.")
("article" \n)
("aside" \n)
("au")
+ ("audio" \n
+ ("src") ("crossorigin" ("anonymous") ("use-credentials"))
+ ("preload" ("none") ("metadata") ("auto"))
+ ("autoplay" "autoplay") ("mediagroup") ("loop" "loop")
+ ("muted" "muted") ("controls" "controls"))
("b")
+ ("bdi")
+ ("bdo" nil ("lang") ("dir" ("ltr") ("rtl")))
("big")
("blink")
- ("blockquote" \n)
+ ("blockquote" \n ("cite"))
("body" \n ("background" ".gif") ("bgcolor" "#") ("text" "#")
("link" "#") ("alink" "#") ("vlink" "#"))
("box" (nil _ "<over>" _ (if sgml-xml-mode "</over>")))
("br" t ("clear" ("left") ("right")))
+ ("button" nil ("name") ("value")
+ ("type" ("submit") ("reset") ("button"))
+ ("disabled" "disabled")
+ ("tabindex") ("accesskey") ("onfocus") ("onblur"))
+ ("canvas" \n ("width") ("height"))
("caption" ("valign" ("top") ("bottom")))
("center" \n)
("cite")
("code" \n)
+ ("datalist" \n)
("dd" ,(not sgml-xml-mode))
- ("del")
+ ("del" nil ("cite") ("datetime"))
("dfn")
("div")
("dl" (nil \n
@@ -1858,8 +1910,14 @@ This takes effect when first loading the library.")
("dt" (t _ (if sgml-xml-mode "</dt>")
"<dd>" (if sgml-xml-mode "</dd>") \n))
("em")
+ ("embed" t ("src") ("type") ("width") ("height"))
+ ("fieldset" \n)
("fn" "id" "fn") ;; Footnotes were deprecated in HTML 3.2
("footer" \n)
+ ("frame" t ("longdesc") ("name") ("src")
+ ("frameborder" ("1") ("0")) ("marginwidth") ("marginheight")
+ ("noresize" "noresize") ("scrolling" ("yes") ("no") ("auto")))
+ ("frameset" \n ("rows") ("cols") ("onload") ("onunload"))
("head" \n)
("header" \n)
("hgroup" \n)
@@ -1874,24 +1932,49 @@ This takes effect when first loading the library.")
"</body>"
))
("i")
- ("ins")
+ ("ins" nil ("cite") ("datetime"))
("isindex" t ("action") ("prompt"))
("kbd")
+ ("label" nil ("for") ("accesskey") ("onfocus") ("onblur"))
("lang")
+ ("legend" nil ("accesskey"))
("li" ,(not sgml-xml-mode))
+ ("main" \n)
+ ("map" \n ("name"))
+ ("mark")
("math" \n)
+ ("meta" t ("http-equiv") ("name") ("content") ("scheme"))
+ ("meter" nil ("value") ("min") ("max") ("low") ("high")
+ ("optimum"))
("nav" \n)
("nobr")
+ ("noframes" \n)
+ ("noscript" \n)
+ ("object" \n ("declare" "declare") ("classid") ("codebase")
+ ("data") ("type") ("codetype") ("archive") ("standby")
+ ("height") ("width") ("usemap") ("name") ("tabindex"))
+ ("optgroup" \n ("name") ("size") ("multiple" "multiple")
+ ("disabled" "disabled") ("tabindex") ("onfocus") ("onblur")
+ ("onchange"))
("option" t ("value") ("label") ("selected" t))
+ ("output" nil ("for") ("form") ("name"))
("over" t)
+ ("param" t ("name") ("value")
+ ("valuetype" ("data") ("ref") ("object")) ("type"))
("person") ;; Tag for person's name tag deprecated in HTML 3.2
("pre" \n)
- ("q")
+ ("progress" nil ("value") ("max"))
+ ("q" nil ("cite"))
("rev")
+ ("rp" t)
+ ("rt" t)
+ ("ruby")
("s")
("samp")
+ ("script" nil ("charset") ("type") ("src") ("defer" "defer"))
("section" \n)
("small")
+ ("source" t ("src") ("type") ("media"))
("span" nil
("class"
("builtin")
@@ -1904,39 +1987,60 @@ This takes effect when first loading the library.")
("variable-name")
("warning")))
("strong")
+ ("style" \n ("type") ("media") ("title"))
("sub")
+ ("summary")
("sup")
+ ("time" nil ("datetime"))
("title")
("tr" t)
+ ("track" t
+ ("kind" ("subtitles") ("captions") ("descriptions")
+ ("chapters") ("metadata"))
+ ("src") ("srclang") ("label") ("default"))
("tt")
("u")
("var")
+ ("video" \n
+ ("src") ("crossorigin" ("anonymous") ("use-credentials"))
+ ("poster") ("preload" ("none") ("metadata") ("auto"))
+ ("autoplay" "autoplay") ("mediagroup") ("loop" "loop")
+ ("muted" "muted") ("controls" "controls") ("width") ("height"))
("wbr" t)))
"Value of `sgml-tag-alist' for HTML mode.")
(defvar html-tag-help
`(,@sgml-tag-help
("a" . "Anchor of point or link elsewhere")
- ("abbrev" . "Abbreviation")
+ ("abbr" . "Abbreviation")
("acronym" . "Acronym")
("address" . "Formatted mail address")
+ ("area" . "Region of an image map")
("array" . "Math array")
("article" . "An independent part of document or site")
("aside" . "Secondary content related to surrounding content (e.g. page or article)")
("au" . "Author")
+ ("audio" . "Sound or audio stream")
("b" . "Bold face")
("base" . "Base address for URLs")
+ ("bdi" . "Text isolated for bidirectional formatting")
+ ("bdo" . "Override text directionality")
("big" . "Font size")
("blink" . "Blinking text")
("blockquote" . "Indented quotation")
("body" . "Document body")
("box" . "Math fraction")
("br" . "Line break")
+ ("button" . "Clickable button")
+ ("canvas" . "Script generated graphics canvas")
("caption" . "Table caption")
("center" . "Centered text")
("changed" . "Change bars")
("cite" . "Citation of a document")
("code" . "Formatted source code")
+ ("col" . "Group of attribute specifications for table columns")
+ ("colgroup" . "Group of columns")
+ ("datalist" . "A set of predefined options")
("dd" . "Definition of term")
("del" . "Deleted text")
("dfn" . "Defining instance of a term")
@@ -1946,14 +2050,19 @@ This takes effect when first loading the library.")
("dt" . "Term to be defined")
("em" . "Emphasized")
("embed" . "Embedded data in foreign format")
+ ("fieldset" . "Group of related controls and labels")
("fig" . "Figure")
("figa" . "Figure anchor")
+ ("figcaption" . "Caption for a figure")
("figd" . "Figure description")
("figt" . "Figure text")
+ ("figure" . "Self-contained content, often with a caption")
("fn" . "Footnote") ;; No one supports special footnote rendering.
("font" . "Font size")
("footer" . "Footer of a section")
("form" . "Form with input fields")
+ ("frame" . "Frame in which another HTML document can be displayed")
+ ("frameset" . "Container for frames")
("group" . "Document grouping")
("h1" . "Most important section headline")
("h2" . "Important section headline")
@@ -1967,50 +2076,78 @@ This takes effect when first loading the library.")
("hr" . "Horizontal rule")
("html" . "HTML Document")
("i" . "Italic face")
+ ("iframe" . "Inline frame with a nested browsing context")
("img" . "Graphic image")
("input" . "Form input field")
("ins" . "Inserted text")
("isindex" . "Input field for index search")
("kbd" . "Keyboard example face")
+ ("label" . "Caption for a user interface item")
("lang" . "Natural language")
+ ("legend" . "Caption for a fieldset")
("li" . "List item")
("link" . "Link relationship")
+ ("main" . "Main content of the document body")
+ ("map" . "Image map (a clickable link area")
+ ("mark" . "Highlighted text")
("math" . "Math formula")
("menu" . "List of commands")
+ ("meta" . "Document properties")
+ ("meter" . "Scalar measurement within a known range")
("mh" . "Form mail header")
("nav" . "Group of navigational links")
("nextid" . "Allocate new id")
("nobr" . "Text without line break")
+ ("noframes" . "Content for user agents that don't support frames")
+ ("noscript" . "Alternate content for when a script isn't executed")
+ ("object" . "External resource")
("ol" . "Ordered list")
+ ("optgroup" . "Group of options")
("option" . "Selection list item")
+ ("output" . "Result of a calculation or user action")
("over" . "Math fraction rule")
("p" . "Paragraph start")
("panel" . "Floating panel")
+ ("param" . "Parameters for an object")
("person" . "Person's name")
("pre" . "Preformatted fixed width text")
+ ("progress" . "Completion progress of a task")
("q" . "Quotation")
("rev" . "Reverse video")
+ ("rp" . "Fallback text for when ruby annotations aren't supported")
+ ("rt" . "Ruby text component of a ruby annotation")
+ ("ruby" . "Ruby annotation")
("s" . "Strikeout")
("samp" . "Sample text")
+ ("script" . "Executable script within a document")
("section" . "Section of a document")
("select" . "Selection list")
("small" . "Font size")
+ ("source" . "Media resource for media elements")
("sp" . "Nobreak space")
("span" . "Generic inline container")
("strong" . "Standout text")
+ ("style" . "Style information")
("sub" . "Subscript")
+ ("summary" . "Summary, caption, or legend")
("sup" . "Superscript")
("table" . "Table with rows and columns")
("tb" . "Table vertical break")
+ ("tbody" . "Table body")
("td" . "Table data cell")
("textarea" . "Form multiline edit area")
+ ("tfoot" . "Table foot")
("th" . "Table header cell")
+ ("thead" . "Table head")
+ ("time" . "Content with optional machine-readable timestamp")
("title" . "Document title")
("tr" . "Table row separator")
+ ("track" . "Timed text track for media elements")
("tt" . "Typewriter face")
("u" . "Underlined text")
("ul" . "Unordered list")
("var" . "Math variable face")
+ ("video" . "Video or movie")
("wbr" . "Enable <br> within <nobr>"))
"Value of variable `sgml-tag-help' for HTML mode.")
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 653db83107..8330e1772d 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -936,6 +936,7 @@ This is always set to nil at the entry to `table-with-cache-buffer' before execu
([(shift backtab)] . table-backward-cell) ; for HPUX console keyboard
([(shift iso-lefttab)] . table-backward-cell) ; shift-tab on a microsoft natural keyboard and redhat linux
([(shift tab)] . table-backward-cell)
+ ([backtab] . table-backward-cell) ; for terminals (e.g., xterm)
([return] . *table--cell-newline)
([(control m)] . *table--cell-newline)
([(control j)] . *table--cell-newline-and-indent)
@@ -2967,8 +2968,7 @@ CALS (DocBook DTD):
(default (car table-source-language-history))
(language (downcase (completing-read
(format "Language (default %s): " default)
- (mapcar (lambda (s) (list (symbol-name s)))
- table-source-languages)
+ table-source-languages
nil t nil 'table-source-language-history default))))
(list
(intern language)
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 3ac68bdf79..710899fa30 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -343,7 +343,7 @@ An alternative value is \" . \", if you use a font with a narrow period."
(defun latex-imenu-create-index ()
"Generate an alist for imenu from a LaTeX buffer."
(let ((section-regexp
- (concat "\\\\" (regexp-opt (mapcar 'car latex-section-alist) t)
+ (concat "\\\\" (regexp-opt (mapcar #'car latex-section-alist) t)
"\\*?[ \t]*{"))
(metasection-regexp
(concat "\\\\" (regexp-opt latex-metasection-list t)))
@@ -373,7 +373,7 @@ An alternative value is \" . \", if you use a font with a narrow period."
;; Using sexps allows some use of matching {...} inside
;; titles.
(forward-sexp 1)
- (push (cons (concat (apply 'concat
+ (push (cons (concat (apply #'concat
(make-list
(max 0 (- i i0))
latex-imenu-indent-string))
@@ -413,7 +413,8 @@ An alternative value is \" . \", if you use a font with a narrow period."
(defvar latex-outline-regexp
(concat "\\\\"
(regexp-opt (append latex-metasection-list
- (mapcar 'car latex-section-alist)) t)))
+ (mapcar #'car latex-section-alist))
+ t)))
(defun latex-outline-level ()
(if (looking-at latex-outline-regexp)
@@ -504,7 +505,7 @@ An alternative value is \" . \", if you use a font with a narrow period."
(funcall inbraces-re
(concat "{" (funcall inbraces-re "{[^}]*}") "*}"))
"*}\\)+\\$?\\$")
- (0 tex-math-face))
+ (0 'tex-math))
;; Heading args.
(,(concat slash headings "\\*?" opt arg)
;; If ARG ends up matching too much (if the {} don't match, e.g.)
@@ -544,7 +545,8 @@ An alternative value is \" . \", if you use a font with a narrow period."
(let* (;;
;; Names of commands whose arg should be fontified with fonts.
(bold (regexp-opt '("textbf" "textsc" "textup"
- "boldsymbol" "pmb") t))
+ "boldsymbol" "pmb")
+ t))
(italic (regexp-opt '("textit" "textsl" "emph") t))
;; FIXME: unimplemented yet.
;; (type (regexp-opt '("texttt" "textmd" "textrm" "textsf") t))
@@ -566,7 +568,8 @@ An alternative value is \" . \", if you use a font with a narrow period."
'("linebreak" "nolinebreak" "pagebreak" "nopagebreak"
"newline" "newpage" "clearpage" "cleardoublepage"
"displaybreak" "allowdisplaybreaks"
- "enlargethispage") t))
+ "enlargethispage")
+ t))
(general "\\([a-zA-Z@]+\\**\\|[^ \t\n]\\)")
;;
;; Miscellany.
@@ -649,7 +652,7 @@ An alternative value is \" . \", if you use a font with a narrow period."
(defvar tex-verbatim-environments
'("verbatim" "verbatim*"))
(put 'tex-verbatim-environments 'safe-local-variable
- (lambda (x) (null (delq t (mapcar 'stringp x)))))
+ (lambda (x) (null (delq t (mapcar #'stringp x)))))
(eval-when-compile
(defconst tex-syntax-propertize-rules
@@ -797,16 +800,11 @@ Not smaller than the value set by `tex-suscript-height-minimum'."
'((t :inherit font-lock-string-face))
"Face used to highlight TeX math expressions."
:group 'tex)
-(define-obsolete-face-alias 'tex-math-face 'tex-math "22.1")
-(defvar tex-math-face 'tex-math)
(defface tex-verbatim
- ;; '((t :inherit font-lock-string-face))
- '((t :family "courier"))
+ '((t :inherit fixed-pitch-serif))
"Face used to highlight TeX verbatim environments."
:group 'tex)
-(define-obsolete-face-alias 'tex-verbatim-face 'tex-verbatim "22.1")
-(defvar tex-verbatim-face 'tex-verbatim)
(defun tex-font-lock-verb (start delim)
"Place syntax table properties on the \\verb construct.
@@ -834,10 +832,10 @@ START is the position of the \\ and DELIM is the delimiter char."
(let ((char (nth 3 state)))
(cond
((not char)
- (if (eq 2 (nth 7 state)) tex-verbatim-face font-lock-comment-face))
- ((eq char ?$) tex-math-face)
+ (if (eq 2 (nth 7 state)) 'tex-verbatim font-lock-comment-face))
+ ((eq char ?$) 'tex-math)
;; A \verb element.
- (t tex-verbatim-face))))
+ (t 'tex-verbatim))))
(defun tex-define-common-keys (keymap)
@@ -1129,34 +1127,36 @@ subshell is initiated, `tex-shell-hook' is run."
(concat "[ \t]*\\(\\$\\$\\|"
"\\\\[][]\\|"
"\\\\" (regexp-opt (append
- (mapcar 'car latex-section-alist)
+ (mapcar #'car latex-section-alist)
'("begin" "label" "end"
"item" "bibitem" "newline" "noindent"
"newpage" "footnote" "marginpar"
- "parbox" "caption")) t)
+ "parbox" "caption"))
+ t)
"\\>\\|\\\\[a-z]*" (regexp-opt '("space" "skip" "page") t)
"\\>\\)"))
(setq paragraph-separate
(concat "[\f%]\\|[ \t]*\\($\\|"
"\\\\[][]\\|"
"\\\\" (regexp-opt (append
- (mapcar 'car latex-section-alist)
- '("begin" "label" "end" )) t)
+ (mapcar #'car latex-section-alist)
+ '("begin" "label" "end" ))
+ t)
"\\>\\|\\\\\\(" (regexp-opt '("item" "bibitem" "newline"
"noindent" "newpage" "footnote"
"marginpar" "parbox" "caption"))
"\\|\\$\\$\\|[a-z]*\\(space\\|skip\\|page[a-z]*\\)"
"\\>\\)[ \t]*\\($\\|%\\)\\)"))
- (setq-local imenu-create-index-function 'latex-imenu-create-index)
+ (setq-local imenu-create-index-function #'latex-imenu-create-index)
(setq-local tex-face-alist tex-latex-face-alist)
- (add-hook 'fill-nobreak-predicate 'latex-fill-nobreak-predicate nil t)
- (setq-local indent-line-function 'latex-indent)
+ (add-hook 'fill-nobreak-predicate #'latex-fill-nobreak-predicate nil t)
+ (setq-local indent-line-function #'latex-indent)
(setq-local fill-indent-according-to-mode t)
(add-hook 'completion-at-point-functions
- 'latex-complete-data nil 'local)
+ #'latex-complete-data nil 'local)
(setq-local outline-regexp latex-outline-regexp)
- (setq-local outline-level 'latex-outline-level)
- (setq-local forward-sexp-function 'latex-forward-sexp)
+ (setq-local outline-level #'latex-outline-level)
+ (setq-local forward-sexp-function #'latex-forward-sexp)
(setq-local skeleton-end-hook nil))
;;;###autoload
@@ -1206,6 +1206,8 @@ Entering SliTeX mode runs the hook `text-mode-hook', then the hook
(defvar tildify-space-string)
(defvar tildify-foreach-region-function)
+(declare-function tildify-foreach-ignore-environments
+ "tildify" (pairs callback _beg end))
(defvar tex--prettify-symbols-alist)
(defun tex-common-initialization ()
@@ -1217,7 +1219,7 @@ Entering SliTeX mode runs the hook `text-mode-hook', then the hook
;; rather than using regex-based filtering.
(setq-local tildify-foreach-region-function
(apply-partially
- 'tildify-foreach-ignore-environments
+ #'tildify-foreach-ignore-environments
`(("\\\\\\\\" . "") ; do not remove this
(,(eval-when-compile
(concat "\\\\begin{\\("
@@ -1535,8 +1537,7 @@ a skeleton (see `skeleton-insert').")
Puts point on a blank line between them."
(let ((choice (completing-read (format "LaTeX block name [%s]: "
latex-block-default)
- (append latex-block-names
- latex-standard-block-names)
+ (latex-complete-envnames)
nil nil nil nil latex-block-default)))
(setq latex-block-default choice)
(unless (or (member choice latex-standard-block-names)
@@ -1593,17 +1594,32 @@ Puts point on a blank line between them."
(complete-with-action action keys key pred)))))
(defun latex-complete-envnames ()
- (append latex-block-names latex-standard-block-names))
+ (completion-table-in-turn
+ (append latex-block-names latex-standard-block-names)
+ (completion-table-dynamic
+ (lambda (str)
+ (with-current-buffer (if (and (minibufferp) (minibuffer-selected-window))
+ (window-buffer (minibuffer-selected-window))
+ (current-buffer))
+ (save-excursion
+ (let ((comps '())
+ (pos (point)))
+ (goto-char (point-min))
+ (while (re-search-forward (concat "\\\\begin{\\(" str "[^}\n ]*\\)")
+ nil t)
+ (unless (and (<= (match-beginning 0) pos)
+ (>= (match-end 0) pos))
+ (push (match-string 1) comps)))
+ comps)))))))
(defun latex-complete-refkeys ()
(when (boundp 'reftex-docstruct-symbol)
(symbol-value reftex-docstruct-symbol)))
(defvar latex-complete-alist
- ;; TODO: Add \begin, \end, \ref, ...
- '(("\\`\\\\\\(short\\)?cite\\'" . latex-complete-bibtex-keys)
- ("\\`\\\\\\(begin\\|end\\)\\'" . latex-complete-envnames)
- ("\\`\\\\[vf]?ref\\'" . latex-complete-refkeys)))
+ `(("\\`\\\\\\(short\\)?cite\\'" . ,#'latex-complete-bibtex-keys)
+ ("\\`\\\\\\(begin\\|end\\)\\'" . ,#'latex-complete-envnames)
+ ("\\`\\\\[vf]?ref\\'" . ,#'latex-complete-refkeys)))
(defun latex-complete-data ()
"Get completion-data at point."
@@ -2186,7 +2202,7 @@ of the current buffer."
(defun tex-summarize-command (cmd)
(if (not (stringp cmd)) ""
- (mapconcat 'identity
+ (mapconcat #'identity
(mapcar (lambda (s) (car (split-string s)))
(split-string cmd "\\s-*\\(?:;\\|&&\\)\\s-*"))
"&")))
@@ -2368,7 +2384,8 @@ Only applies the FSPEC to the args part of FORMAT."
;; Substitute and return.
(if (and hist-cmd
(string-match (concat "[' \t\"]" (format-spec "%r" fspec)
- "\\([;&' \t\"]\\|\\'\\)") hist-cmd))
+ "\\([;&' \t\"]\\|\\'\\)")
+ hist-cmd))
;; The history command was already applied to the same file,
;; so just reuse it.
hist-cmd
@@ -2753,7 +2770,7 @@ Runs the shell command defined by `tex-show-queue-command'."
(defvar tex-indent-item-re "\\\\\\(bib\\)?item\\>")
(defvar latex-noindent-environments '("document"))
(put 'latex-noindent-environments 'safe-local-variable
- (lambda (x) (null (delq t (mapcar 'stringp x)))))
+ (lambda (x) (null (delq t (mapcar #'stringp x)))))
(defvar tex-latex-indent-syntax-table
(let ((st (make-syntax-table tex-mode-syntax-table)))
diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el
index c22f531440..bc82bb6d0a 100644
--- a/lisp/textmodes/texinfo.el
+++ b/lisp/textmodes/texinfo.el
@@ -351,8 +351,6 @@ Subexpression 1 is what goes into the corresponding `@end' statement.")
'((t (:inherit font-lock-function-name-face)))
"Face used for section headings in `texinfo-mode'."
:group 'texinfo)
-(define-obsolete-face-alias 'texinfo-heading-face 'texinfo-heading "22.1")
-(defvar texinfo-heading-face 'texinfo-heading)
(defvar texinfo-font-lock-keywords
`(;; All but the first had an OVERRIDE of t.
@@ -368,8 +366,10 @@ Subexpression 1 is what goes into the corresponding `@end' statement.")
;; their arguments frequently include a @@, and we don't want that
;; to overwrite the normal fontification of the argument.
("@\\(file\\|email\\){\\([^}]+\\)" 2 font-lock-string-face keep)
- ("@\\(samp\\|code\\|var\\|math\\|env\\|command\\|option\\){\\([^}]+\\)"
+ ("@\\(samp\\|code\\|var\\|env\\|command\\|option\\){\\([^}]+\\)"
2 font-lock-variable-name-face keep)
+ ;; @math allows nested braces like @math{2^{12}}
+ ("@math{\\([^{}]*{?[^{}]*}?[^{}]*\\)}" 1 font-lock-variable-name-face)
("@\\(cite\\|x?ref\\|pxref\\|dfn\\|inforef\\){\\([^}]+\\)"
2 font-lock-constant-face)
("@\\(anchor\\){\\([^}]+\\)" 2 font-lock-type-face)
@@ -378,7 +378,8 @@ Subexpression 1 is what goes into the corresponding `@end' statement.")
;; (,texinfo-environment-regexp
;; 1 (texinfo-clone-environment (match-beginning 1) (match-end 1)) keep)
(,(concat "^@" (regexp-opt (mapcar 'car texinfo-section-list) t)
- ".*\n") 0 texinfo-heading-face t))
+ ".*\n")
+ 0 'texinfo-heading t))
"Additional expressions to highlight in Texinfo mode.")
(defun texinfo-clone-environment (start end)
diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
index 9920fa06d0..df5c52d4d6 100644
--- a/lisp/thingatpt.el
+++ b/lisp/thingatpt.el
@@ -603,7 +603,10 @@ Signal an error if the entire string was not used."
;;;###autoload
(defun number-at-point ()
"Return the number at point, or nil if none is found."
- (form-at-point 'sexp 'numberp))
+ (when (thing-at-point-looking-at "-?[0-9]+\\.?[0-9]*" 500)
+ (string-to-number
+ (buffer-substring (match-beginning 0) (match-end 0)))))
+
(put 'number 'thing-at-point 'number-at-point)
;;;###autoload
(defun list-at-point ()
diff --git a/lisp/time-stamp.el b/lisp/time-stamp.el
index d4cddc92f9..c053ea6e92 100644
--- a/lisp/time-stamp.el
+++ b/lisp/time-stamp.el
@@ -43,10 +43,7 @@
(defcustom time-stamp-format "%:y-%02m-%02d %02H:%02M:%02S %u"
"Format of the string inserted by \\[time-stamp].
-The value may be a string or a list. Lists are supported only for
-backward compatibility; see variable `time-stamp-old-format-warn'.
-
-A string is used verbatim except for character sequences beginning
+This is a string, used verbatim except for character sequences beginning
with %, as follows. The values of non-numeric formatted items depend
on the locale setting recorded in `system-time-locale' and
`locale-coding-system'. The examples here are for the default
@@ -107,17 +104,6 @@ otherwise would have been updated."
:group 'time-stamp
:version "19.29")
-(defcustom time-stamp-old-format-warn 'ask
- "Action if `time-stamp-format' is an old-style list.
-If `error', the format is not used. If `ask', the user is queried about
-using the time-stamp-format. If `warn', a warning is displayed.
-If nil, no notification is given."
- :type '(choice (const :tag "Don't use the format" error)
- (const ask)
- (const warn)
- (const :tag "No notification" nil))
- :group 'time-stamp)
-
(defcustom time-stamp-time-zone nil
"The time zone to be used by \\[time-stamp].
Its format is that of the ZONE argument of the `format-time-string' function."
@@ -420,26 +406,14 @@ With ARG, turn time stamping on if and only if arg is positive."
"Generate the new string to be inserted by \\[time-stamp].
Optionally use format TS-FORMAT instead of `time-stamp-format' to
format the string."
- (or ts-format
- (setq ts-format time-stamp-format))
- (if (stringp ts-format)
- (time-stamp--format (time-stamp-string-preprocess ts-format) nil)
- ;; handle version 1 compatibility
- (cond ((or (eq time-stamp-old-format-warn 'error)
- (and (eq time-stamp-old-format-warn 'ask)
- (not (y-or-n-p "Use non-string time-stamp-format? "))))
- (message "Warning: no time-stamp: time-stamp-format not a string")
- (sit-for 1)
- nil)
- (t
- (cond ((eq time-stamp-old-format-warn 'warn)
- (message "Obsolescent time-stamp-format type; should be string")
- (sit-for 1)))
- (time-stamp-fconcat ts-format " ")))))
+ (if (stringp (or ts-format (setq ts-format time-stamp-format)))
+ (time-stamp--format (time-stamp-string-preprocess ts-format) nil)))
+
(defconst time-stamp-no-file "(no file)"
"String to use when the buffer is not associated with a file.")
+;;; FIXME This comment was written in 1996!
;;; time-stamp is transitioning to using the new, expanded capabilities
;;; of format-time-string. During the process, this function implements
;;; intermediate, compatible formats and complains about old, soon to
@@ -676,28 +650,6 @@ otherwise the value of the function `system-name'."
mail-host-address)
(system-name)))
-;;; the rest of this file is for version 1 compatibility
-
-(defun time-stamp-fconcat (list sep)
- "Similar to (mapconcat \\='funcall LIST SEP) but LIST allows literals.
-If an element of LIST is a symbol, it is funcalled to get the string to use;
-the separator SEP is used between two strings obtained by funcalling a
-symbol. Otherwise the element itself is inserted; no separator is used
-around literals."
- (let ((return-string "")
- (insert-sep-p nil))
- (while list
- (cond ((symbolp (car list))
- (if insert-sep-p
- (setq return-string (concat return-string sep)))
- (setq return-string (concat return-string (funcall (car list))))
- (setq insert-sep-p t))
- (t
- (setq return-string (concat return-string (car list)))
- (setq insert-sep-p nil)))
- (setq list (cdr list)))
- return-string))
-
(provide 'time-stamp)
;;; time-stamp.el ends here
diff --git a/lisp/time.el b/lisp/time.el
index ba5792441c..651dd56779 100644
--- a/lisp/time.el
+++ b/lisp/time.el
@@ -535,7 +535,8 @@ See `display-time-world'."
(setq fmt (concat "%-" (int-to-string max-width) "s %s\n"))
(dolist (timedata (nreverse result))
(insert (format fmt (car timedata) (cdr timedata))))
- (delete-char -1)))
+ (delete-char -1))
+ (goto-char (point-min)))
;;;###autoload
(defun display-time-world ()
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el
index 4c7366adc8..6848230c28 100644
--- a/lisp/url/url-cookie.el
+++ b/lisp/url/url-cookie.el
@@ -353,6 +353,24 @@ to run the `url-cookie-setup-save-timer' function manually."
url-cookie-save-interval
#'url-cookie-write-file))))
+(defun url-cookie-delete-cookies (&optional regexp keep)
+ "Delete all cookies from the cookie store where the domain matches REGEXP.
+If REGEXP is nil, all cookies are deleted. If KEEP is non-nil,
+instead delete all cookies that do not match REGEXP."
+ (dolist (variable '(url-cookie-secure-storage url-cookie-storage))
+ (let ((cookies (symbol-value variable)))
+ (dolist (elem cookies)
+ (when (or (and (null keep)
+ (or (null regexp)
+ (string-match regexp (car elem))))
+ (and keep
+ regexp
+ (not (string-match regexp (car elem)))))
+ (setq cookies (delq elem cookies))))
+ (set variable cookies)))
+ (setq url-cookies-changed-since-last-save t)
+ (url-cookie-write-file))
+
;;; Mode for listing and editing cookies.
(defun url-cookie-list ()
diff --git a/lisp/url/url-file.el b/lisp/url/url-file.el
index 9eb9377583..61e83c0997 100644
--- a/lisp/url/url-file.el
+++ b/lisp/url/url-file.el
@@ -27,6 +27,7 @@
(require 'url-vars)
(require 'url-parse)
(require 'url-dired)
+(declare-function mm-disable-multibyte "mm-util" ())
(defconst url-file-default-port 21 "Default FTP port.")
(defconst url-file-asynchronous-p t "FTP transfers are asynchronous.")
diff --git a/lisp/url/url-gw.el b/lisp/url/url-gw.el
index 460ee0dd42..d898368cf9 100644
--- a/lisp/url/url-gw.el
+++ b/lisp/url/url-gw.el
@@ -246,8 +246,8 @@ overriding the value of `url-gateway-method'."
:type gw-method
;; Use non-blocking socket if we can.
:nowait (featurep 'make-network-process
- '(:nowait t))))
- (`socks
+ '(:nowait t))))
+ (`socks
(socks-open-network-stream name buffer host service))
(`telnet
(url-open-telnet name buffer host service))
diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el
index 717651df54..d3be880b38 100644
--- a/lisp/url/url-handlers.el
+++ b/lisp/url/url-handlers.el
@@ -269,7 +269,8 @@ A prefix arg makes KEEP-TIME non-nil."
(error "Opening input file: No such file or directory, %s" url))
(with-current-buffer buffer
(setq handle (mm-dissect-buffer t)))
- (mm-save-part-to-file handle newname)
+ (let ((mm-attachment-file-modes (default-file-modes)))
+ (mm-save-part-to-file handle newname))
(kill-buffer buffer)
(mm-destroy-parts handle)))
(put 'copy-file 'url-file-handlers 'url-copy-file)
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index bbe5268e4d..f62ec57f53 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -1,4 +1,4 @@
-;;; url-http.el --- HTTP retrieval routines
+;;; url-http.el --- HTTP retrieval routines -*- lexical-binding:t -*-
;; Copyright (C) 1999, 2001, 2004-2016 Free Software Foundation, Inc.
@@ -26,6 +26,8 @@
;;; Code:
(require 'cl-lib)
+(require 'puny)
+(require 'nsm)
(eval-when-compile
(require 'subr-x))
@@ -135,6 +137,8 @@ request.")
(507 insufficient-storage "Insufficient storage"))
"The HTTP return codes and their text.")
+(defconst url-https-default-port 443 "Default HTTPS port.")
+
;(eval-when-compile
;; These are all macros so that they are hidden from external sight
;; when the file is byte-compiled.
@@ -196,7 +200,14 @@ request.")
;; `url-open-stream' needs a buffer in which to do things
;; like authentication. But we use another buffer afterwards.
(unwind-protect
- (let ((proc (url-open-stream host buf host port gateway-method)))
+ (let ((proc (url-open-stream host buf
+ (if url-using-proxy
+ (url-host url-using-proxy)
+ host)
+ (if url-using-proxy
+ (url-port url-using-proxy)
+ port)
+ gateway-method)))
;; url-open-stream might return nil.
(when (processp proc)
;; Drop the temp buffer link before killing the buffer.
@@ -211,15 +222,36 @@ request.")
(if connection
(url-http-mark-connection-as-busy host port connection))))
+(defun url-http--user-agent-default-string ()
+ "Compute a default User-Agent string based on `url-privacy-level'."
+ (let ((package-info (when url-package-name
+ (format "%s/%s" url-package-name url-package-version)))
+ (emacs-info (unless (and (listp url-privacy-level)
+ (memq 'emacs url-privacy-level))
+ (format "Emacs/%s" emacs-version)))
+ (os-info (unless (and (listp url-privacy-level)
+ (memq 'os url-privacy-level))
+ (format "(%s; %s)" url-system-type url-os-type)))
+ (url-info (format "URL/%s" url-version)))
+ (string-join (delq nil (list package-info url-info
+ emacs-info os-info))
+ " ")))
+
;; Building an HTTP request
(defun url-http-user-agent-string ()
- (if (or (eq url-privacy-level 'paranoid)
- (and (listp url-privacy-level)
- (memq 'agent url-privacy-level)))
- ""
- (if (functionp url-user-agent)
- (funcall url-user-agent)
- url-user-agent)))
+ "Compute a User-Agent string.
+The string is based on `url-privacy-level' and `url-user-agent'."
+ (let* ((hide-ua
+ (or (eq url-privacy-level 'paranoid)
+ (and (listp url-privacy-level)
+ (memq 'agent url-privacy-level))))
+ (ua-string
+ (and (not hide-ua)
+ (cond
+ ((functionp url-user-agent) (funcall url-user-agent))
+ ((stringp url-user-agent) url-user-agent)
+ ((eq url-user-agent 'default) (url-http--user-agent-default-string))))))
+ (if ua-string (format "User-Agent: %s\r\n" (string-trim ua-string)) "")))
(defun url-http-create-request (&optional ref-url)
"Create an HTTP request for `url-http-target-url', referred to by REF-URL."
@@ -296,8 +328,9 @@ request.")
(url-scheme-get-property
(url-type url-http-target-url) 'default-port))
(format
- "Host: %s:%d\r\n" host (url-port url-http-target-url))
- (format "Host: %s\r\n" host))
+ "Host: %s:%d\r\n" (puny-encode-domain host)
+ (url-port url-http-target-url))
+ (format "Host: %s\r\n" (puny-encode-domain host)))
;; Who its from
(if url-personal-mail-address
(concat
@@ -474,6 +507,7 @@ work correctly."
)
(declare-function gnutls-peer-status "gnutls.c" (proc))
+(declare-function gnutls-negotiate "gnutls.el" t t)
(defun url-http-parse-headers ()
"Parse and handle HTTP specific headers.
@@ -587,15 +621,7 @@ should be shown to the user."
;; We do not support agent-driven negotiation, so we just
;; redirect to the preferred URI if one is provided.
nil)
- ((or `moved-permanently `found `temporary-redirect) ; 301 302 307
- ;; If the 301|302 status code is received in response to a
- ;; request other than GET or HEAD, the user agent MUST NOT
- ;; automatically redirect the request unless it can be
- ;; confirmed by the user, since this might change the
- ;; conditions under which the request was issued.
- (unless (member url-http-method '("HEAD" "GET"))
- (setq redirect-uri nil)))
- (`see-other ; 303
+ (`see-other ; 303
;; The response to the request can be found under a different
;; URI and SHOULD be retrieved using a GET method on that
;; resource.
@@ -904,7 +930,7 @@ should be shown to the user."
;; )
;; These unfortunately cannot be macros... please ignore them!
-(defun url-http-idle-sentinel (proc why)
+(defun url-http-idle-sentinel (proc _why)
"Remove (now defunct) process PROC from the list of open connections."
(maphash (lambda (key val)
(if (memq proc val)
@@ -930,18 +956,24 @@ should be shown to the user."
(erase-buffer)
(let ((url-request-method url-http-method)
(url-request-extra-headers url-http-extra-headers)
- (url-request-data url-http-data))
+ (url-request-data url-http-data)
+ (url-using-proxy (url-find-proxy-for-url
+ url-current-object
+ (url-host url-current-object))))
+ (when url-using-proxy
+ (setq url-using-proxy
+ (url-generic-parse-url url-using-proxy)))
(url-http url-current-object url-callback-function
url-callback-arguments (current-buffer)))))
((url-http-parse-headers)
(url-http-activate-callback))))))
-(defun url-http-simple-after-change-function (st nd length)
+(defun url-http-simple-after-change-function (_st _nd _length)
;; Function used when we do NOT know how long the document is going to be
;; Just _very_ simple 'downloaded %d' type of info.
- (url-lazy-message "Reading %s..." (file-size-human-readable nd)))
+ (url-lazy-message "Reading %s..." (file-size-human-readable (buffer-size))))
-(defun url-http-content-length-after-change-function (st nd length)
+(defun url-http-content-length-after-change-function (_st nd _length)
"Function used when we DO know how long the document is going to be.
More sophisticated percentage downloaded, etc.
Also does minimal parsing of HTTP headers and will actually cause
@@ -1060,7 +1092,7 @@ the end of the document."
(if (url-http-parse-headers)
(url-http-activate-callback))))))))))
-(defun url-http-wait-for-headers-change-function (st nd length)
+(defun url-http-wait-for-headers-change-function (_st nd _length)
;; This will wait for the headers to arrive and then splice in the
;; next appropriate after-change-function, etc.
(url-http-debug "url-http-wait-for-headers-change-function (%s)"
@@ -1068,7 +1100,8 @@ the end of the document."
(let ((end-of-headers nil)
(old-http nil)
(process-buffer (current-buffer))
- (content-length nil))
+ ;; (content-length nil)
+ )
(when (not (bobp))
(goto-char (point-min))
(if (and (looking-at ".*\n") ; have one line at least
@@ -1194,34 +1227,40 @@ the end of the document."
"Retrieve URL via HTTP asynchronously.
URL must be a parsed URL. See `url-generic-parse-url' for details.
-When retrieval is completed, execute the function CALLBACK, passing it
-an updated value of CBARGS as arguments. The first element in CBARGS
-should be a plist describing what has happened so far during the
-request, as described in the docstring of `url-retrieve' (if in
-doubt, specify nil).
+When retrieval is completed, execute the function CALLBACK,
+passing it an updated value of CBARGS as arguments. The first
+element in CBARGS should be a plist describing what has happened
+so far during the request, as described in the docstring of
+`url-retrieve' (if in doubt, specify nil). The current buffer
+then CALLBACK is executed is the retrieval buffer.
Optional arg RETRY-BUFFER, if non-nil, specifies the buffer of a
previous `url-http' call, which is being re-attempted.
Optional arg GATEWAY-METHOD specifies the gateway to be used,
-overriding the value of `url-gateway-method'."
+overriding the value of `url-gateway-method'.
+
+The return value of this function is the retrieval buffer."
(cl-check-type url vector "Need a pre-parsed URL.")
- (let* ((host (url-host (or url-using-proxy url)))
- (port (url-port (or url-using-proxy url)))
+ (let* (;; (host (url-host (or url-using-proxy url)))
+ ;; (port (url-port (or url-using-proxy url)))
(nsm-noninteractive (or url-request-noninteractive
(and (boundp 'url-http-noninteractive)
url-http-noninteractive)))
- (connection (url-http-find-free-connection host port gateway-method))
+ (connection (url-http-find-free-connection (url-host url)
+ (url-port url)
+ gateway-method))
(mime-accept-string url-mime-accept-string)
(buffer (or retry-buffer
(generate-new-buffer
- (format " *http %s:%d*" host port)))))
+ (format " *http %s:%d*" (url-host url) (url-port url))))))
(if (not connection)
;; Failed to open the connection for some reason
(progn
(kill-buffer buffer)
(setq buffer nil)
- (error "Could not create connection to %s:%d" host port))
+ (error "Could not create connection to %s:%d" (url-host url)
+ (url-port url)))
(with-current-buffer buffer
(mm-disable-multibyte)
(setq url-current-object url
@@ -1277,13 +1316,72 @@ overriding the value of `url-gateway-method'."
(set-process-sentinel connection 'url-http-async-sentinel))
(`failed
;; Asynchronous connection failed
- (error "Could not create connection to %s:%d" host port))
+ (error "Could not create connection to %s:%d" (url-host url)
+ (url-port url)))
(_
- (set-process-sentinel connection
- 'url-http-end-of-document-sentinel)
- (process-send-string connection (url-http-create-request))))))
+ (if (and url-http-proxy (string= "https"
+ (url-type url-current-object)))
+ (url-https-proxy-connect connection)
+ (set-process-sentinel connection
+ 'url-http-end-of-document-sentinel)
+ (process-send-string connection (url-http-create-request)))))))
buffer))
+(defun url-https-proxy-connect (connection)
+ (setq url-http-after-change-function 'url-https-proxy-after-change-function)
+ (process-send-string connection (format (concat "CONNECT %s:%d HTTP/1.1\r\n"
+ "Host: %s\r\n"
+ "\r\n")
+ (url-host url-current-object)
+ (or (url-port url-current-object)
+ url-https-default-port)
+ (url-host url-current-object))))
+
+(defun url-https-proxy-after-change-function (_st _nd _length)
+ (let* ((process-buffer (current-buffer))
+ (proc (get-buffer-process process-buffer)))
+ (goto-char (point-min))
+ (when (re-search-forward "^\r?\n" nil t)
+ (backward-char 1)
+ ;; Saw the end of the headers
+ (setq url-http-end-of-headers (set-marker (make-marker) (point)))
+ (url-http-parse-response)
+ (cond
+ ((null url-http-response-status)
+ ;; We got back a headerless malformed response from the
+ ;; server.
+ (url-http-activate-callback)
+ (error "Malformed response from proxy, fail!"))
+ ((= url-http-response-status 200)
+ (if (gnutls-available-p)
+ (condition-case e
+ (let ((tls-connection (gnutls-negotiate
+ :process proc
+ :hostname (url-host url-current-object)
+ :verify-error nil)))
+ ;; check certificate validity
+ (setq tls-connection
+ (nsm-verify-connection tls-connection
+ (url-host url-current-object)
+ (url-port url-current-object)))
+ (with-current-buffer process-buffer (erase-buffer))
+ (set-process-buffer tls-connection process-buffer)
+ (setq url-http-after-change-function
+ 'url-http-wait-for-headers-change-function)
+ (set-process-filter tls-connection 'url-http-generic-filter)
+ (process-send-string tls-connection
+ (url-http-create-request)))
+ (gnutls-error
+ (url-http-activate-callback)
+ (error "gnutls-error: %s" e))
+ (error
+ (url-http-activate-callback)
+ (error "error: %s" e)))
+ (error "error: gnutls support needed!")))
+ (t
+ (message "error response: %d" url-http-response-status)
+ (url-http-activate-callback))))))
+
(defun url-http-async-sentinel (proc why)
;; We are performing an asynchronous connection, and a status change
;; has occurred.
@@ -1295,11 +1393,13 @@ overriding the value of `url-gateway-method'."
(url-http-end-of-document-sentinel proc why))
((string= (substring why 0 4) "open")
(setq url-http-connection-opened t)
- (condition-case error
- (process-send-string proc (url-http-create-request))
- (file-error
- (setq url-http-connection-opened nil)
- (message "HTTP error: %s" error))))
+ (if (and url-http-proxy (string= "https" (url-type url-current-object)))
+ (url-https-proxy-connect proc)
+ (condition-case error
+ (process-send-string proc (url-http-create-request))
+ (file-error
+ (setq url-http-connection-opened nil)
+ (message "HTTP error: %s" error)))))
(t
(setf (car url-callback-arguments)
(nconc (list :error (list 'error 'connection-failed why
@@ -1361,7 +1461,7 @@ overriding the value of `url-gateway-method'."
(defalias 'url-http-file-readable-p 'url-http-file-exists-p)
-(defun url-http-head-file-attributes (url &optional id-format)
+(defun url-http-head-file-attributes (url &optional _id-format)
(let ((buffer (url-http-head url)))
(when buffer
(prog1
@@ -1376,7 +1476,7 @@ overriding the value of `url-gateway-method'."
nil nil nil) ;whether gid would change ; inode ; device.
(kill-buffer buffer)))))
-(declare-function url-dav-file-attributes "url-dav" (url &optional id-format))
+(declare-function url-dav-file-attributes "url-dav" (url &optional _id-format))
(defun url-http-file-attributes (url &optional id-format)
(if (url-dav-supported-p url)
@@ -1460,7 +1560,6 @@ p3p
;; with url-http.el on systems with 8-character file names.
(require 'tls)
-(defconst url-https-default-port 443 "Default HTTPS port.")
(defconst url-https-asynchronous-p t "HTTPS retrievals are asynchronous.")
;; FIXME what is the point of this alias being an autoload?
diff --git a/lisp/url/url-misc.el b/lisp/url/url-misc.el
index 2c277fb69c..14b9f7eab4 100644
--- a/lisp/url/url-misc.el
+++ b/lisp/url/url-misc.el
@@ -24,6 +24,7 @@
(require 'url-vars)
(require 'url-parse)
+(declare-function mm-disable-multibyte "mm-util" ())
(autoload 'Info-goto-node "info" "" t)
(autoload 'man "man" nil t)
diff --git a/lisp/url/url-queue.el b/lisp/url/url-queue.el
index 0ff4ad1556..8972d0b056 100644
--- a/lisp/url/url-queue.el
+++ b/lisp/url/url-queue.el
@@ -1,4 +1,4 @@
-;;; url-queue.el --- Fetching web pages in parallel
+;;; url-queue.el --- Fetching web pages in parallel -*- lexical-binding: t -*-
;; Copyright (C) 2011-2016 Free Software Foundation, Inc.
@@ -47,6 +47,7 @@
;;; Internal variables.
(defvar url-queue nil)
+(defvar url-queue-progress-timer nil)
(cl-defstruct url-queue
url callback cbargs silentp
@@ -90,7 +91,13 @@ The variable `url-queue-timeout' sets a timeout."
(when (and waiting
(< running url-queue-parallel-processes))
(setf (url-queue-pre-triggered waiting) t)
- (run-with-idle-timer 0.01 nil 'url-queue-run-queue))))
+ ;; We start fetching from this idle timer...
+ (run-with-idle-timer 0.01 nil #'url-queue-run-queue)
+ ;; And then we set up a separate timer to ensure progress when a
+ ;; web server is unresponsive.
+ (unless url-queue-progress-timer
+ (setq url-queue-progress-timer
+ (run-with-idle-timer 1 1 #'url-queue-check-progress))))))
(defun url-queue-run-queue ()
(url-queue-prune-old-entries)
@@ -107,6 +114,13 @@ The variable `url-queue-timeout' sets a timeout."
(setf (url-queue-start-time waiting) (float-time))
(url-queue-start-retrieve waiting))))
+(defun url-queue-check-progress ()
+ (when url-queue-progress-timer
+ (if url-queue
+ (url-queue-run-queue)
+ (cancel-timer url-queue-progress-timer)
+ (setq url-queue-progress-timer nil))))
+
(defun url-queue-callback-function (status job)
(setq url-queue (delq job url-queue))
(when (and (eq (car status) :error)
diff --git a/lisp/url/url-util.el b/lisp/url/url-util.el
index 1ae2213eee..af18acd8b6 100644
--- a/lisp/url/url-util.el
+++ b/lisp/url/url-util.el
@@ -468,7 +468,7 @@ should return it unchanged."
(and host
(not (string-match "\\`\\[.*\\]\\'" host))
(setf (url-host obj)
- (url-hexify-string host url-host-allowed-chars)))
+ (decode-coding-string (url-host obj) 'utf-8)))
(if path
(setq path (url-hexify-string path url-path-allowed-chars)))
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el
index 960a04ad30..f6aae21a83 100644
--- a/lisp/url/url-vars.el
+++ b/lisp/url/url-vars.el
@@ -116,6 +116,7 @@ If a list, this should be a list of symbols of what NOT to send.
Valid symbols are:
email -- the email address
os -- the operating system info
+emacs -- the version of Emacs
lastloc -- the last location
agent -- do not send the User-Agent string
cookies -- never accept HTTP cookies
@@ -143,6 +144,7 @@ variable."
(checklist :tag "Custom"
(const :tag "Email address" :value email)
(const :tag "Operating system" :value os)
+ (const :tag "Emacs version" :value emacs)
(const :tag "Last location" :value lastloc)
(const :tag "Browser identification" :value agent)
(const :tag "No cookies" :value cookie)))
@@ -357,16 +359,21 @@ Currently supported methods:
(const :tag "Direct connection" :value native))
:group 'url-hairy)
-(defcustom url-user-agent (format "User-Agent: %sURL/%s\r\n"
- (if url-package-name
- (concat url-package-name "/"
- url-package-version " ")
- "") url-version)
- "User Agent used by the URL package for HTTP/HTTPS requests
-Should be a string or a function of no arguments returning a string."
- :type '(choice (string :tag "A static User-Agent string")
- (function :tag "Call a function to get the User-Agent string"))
- :version "25.1"
+(defcustom url-user-agent 'default
+ "User Agent used by the URL package for HTTP/HTTPS requests.
+Should be one of:
+* A string (not including the \"User-Agent:\" prefix)
+* A function of no arguments, returning a string
+* `default' (to compute a value according to `url-privacy-level')
+* nil (to omit the User-Agent header entirely)"
+ :type
+ '(choice
+ (string :tag "A static User-Agent string")
+ (function :tag "Call a function to get the User-Agent string")
+ (const :tag "No User-Agent at all" :value nil)
+ (const :tag "An string auto-generated according to `url-privacy-level'"
+ :value default))
+ :version "25.2"
:group 'url)
(defvar url-setup-done nil "Has setup configuration been done?")
diff --git a/lisp/url/url.el b/lisp/url/url.el
index 91adada5e8..6d710e02d6 100644
--- a/lisp/url/url.el
+++ b/lisp/url/url.el
@@ -221,17 +221,20 @@ URL-encoded before it's used."
buffer))
;;;###autoload
-(defun url-retrieve-synchronously (url &optional silent inhibit-cookies)
+(defun url-retrieve-synchronously (url &optional silent inhibit-cookies timeout)
"Retrieve URL synchronously.
Return the buffer containing the data, or nil if there are no data
associated with it (the case for dired, info, or mailto URLs that need
no further processing). URL is either a string or a parsed URL.
-If SILENT is non-nil, don't display progress reports and similar messages.
-If INHIBIT-COOKIES is non-nil, cookies will neither be stored nor sent
-to the server."
+
+If SILENT is non-nil, don't do any messaging while retrieving.
+If INHIBIT-COOKIES is non-nil, refuse to store cookies. If
+TIMEOUT is passed, it should be a number that says (in seconds)
+how long to wait for a response before giving up."
(url-do-setup)
(let ((retrieval-done nil)
+ (start-time (current-time))
(asynch-buffer nil))
(setq asynch-buffer
(url-retrieve url (lambda (&rest ignored)
@@ -253,7 +256,11 @@ to the server."
;; buffer-local variable so we can find the exact process that we
;; should be waiting for. In the mean time, we'll just wait for any
;; process output.
- (while (not retrieval-done)
+ (while (and (not retrieval-done)
+ (or (not timeout)
+ (< (float-time (time-subtract
+ (current-time) start-time))
+ timeout)))
(url-debug 'retrieval
"Spinning in url-retrieve-synchronously: %S (%S)"
retrieval-done asynch-buffer)
@@ -284,7 +291,7 @@ to the server."
;; `sleep-for' was tried but it lead to other forms of
;; hanging. --Stef
(unless (or (with-local-quit
- (accept-process-output proc))
+ (accept-process-output proc 1))
(null proc))
;; accept-process-output returned nil, maybe because the process
;; exited (and may have been replaced with another). If we got
diff --git a/lisp/vc/add-log.el b/lisp/vc/add-log.el
index fa02a5a1f5..b516b67b96 100644
--- a/lisp/vc/add-log.el
+++ b/lisp/vc/add-log.el
@@ -171,56 +171,55 @@ Note: The search is conducted only within 10%, at the beginning of the file."
:type '(repeat regexp)
:group 'change-log)
+(defcustom change-log-directory-files '(".bzr" ".git" ".hg" ".svn")
+ "List of files that cause `find-change-log' to stop in containing directory.
+This applies if no pre-existing ChangeLog is found. If nil, then in such
+a case simply use the directory containing the changed file."
+ :version "25.2"
+ :type '(repeat file)
+ :group 'change-log)
+
(defface change-log-date
'((t (:inherit font-lock-string-face)))
"Face used to highlight dates in date lines."
:version "21.1"
:group 'change-log)
-(define-obsolete-face-alias 'change-log-date-face 'change-log-date "22.1")
(defface change-log-name
'((t (:inherit font-lock-constant-face)))
"Face for highlighting author names."
:version "21.1"
:group 'change-log)
-(define-obsolete-face-alias 'change-log-name-face 'change-log-name "22.1")
(defface change-log-email
'((t (:inherit font-lock-variable-name-face)))
"Face for highlighting author email addresses."
:version "21.1"
:group 'change-log)
-(define-obsolete-face-alias 'change-log-email-face 'change-log-email "22.1")
(defface change-log-file
'((t (:inherit font-lock-function-name-face)))
"Face for highlighting file names."
:version "21.1"
:group 'change-log)
-(define-obsolete-face-alias 'change-log-file-face 'change-log-file "22.1")
(defface change-log-list
'((t (:inherit font-lock-keyword-face)))
"Face for highlighting parenthesized lists of functions or variables."
:version "21.1"
:group 'change-log)
-(define-obsolete-face-alias 'change-log-list-face 'change-log-list "22.1")
(defface change-log-conditionals
'((t (:inherit font-lock-variable-name-face)))
"Face for highlighting conditionals of the form `[...]'."
:version "21.1"
:group 'change-log)
-(define-obsolete-face-alias 'change-log-conditionals-face
- 'change-log-conditionals "22.1")
(defface change-log-function
'((t (:inherit font-lock-variable-name-face)))
"Face for highlighting items of the form `<....>'."
:version "21.1"
:group 'change-log)
-(define-obsolete-face-alias 'change-log-function-face
- 'change-log-function "22.1")
(defface change-log-acknowledgment
'((t (:inherit font-lock-comment-face)))
@@ -229,8 +228,6 @@ Note: The search is conducted only within 10%, at the beginning of the file."
:group 'change-log)
(define-obsolete-face-alias 'change-log-acknowledgement
'change-log-acknowledgment "24.3")
-(define-obsolete-face-alias 'change-log-acknowledgement-face
- 'change-log-acknowledgment "22.1")
(defconst change-log-file-names-re "^\\( +\\|\t\\)\\* \\([^ ,:([\n]+\\)")
(defconst change-log-start-entry-re "^\\sw.........[0-9:+ ]*")
@@ -582,25 +579,14 @@ If a string, interpret as the ZONE argument of `format-time-string'.")
(lambda (x) (or (booleanp x) (stringp x))))
(defun add-log-iso8601-time-zone (&optional time zone)
- (let* ((utc-offset (or (car (current-time-zone time zone)) 0))
- (sign (if (< utc-offset 0) ?- ?+))
- (sec (abs utc-offset))
- (ss (% sec 60))
- (min (/ sec 60))
- (mm (% min 60))
- (hh (/ min 60)))
- (format (cond ((not (zerop ss)) "%c%02d:%02d:%02d")
- ((not (zerop mm)) "%c%02d:%02d")
- (t "%c%02d"))
- sign hh mm ss)))
+ (declare (obsolete nil "25.2"))
+ (format-time-string "%:::z" time zone))
(defvar add-log-iso8601-with-time-zone nil)
(defun add-log-iso8601-time-string (&optional time zone)
- (let ((date (format-time-string "%Y-%m-%d" time zone)))
- (if add-log-iso8601-with-time-zone
- (concat date " " (add-log-iso8601-time-zone time zone))
- date)))
+ (format-time-string
+ (if add-log-iso8601-with-time-zone "%Y-%m-%d %:::z" "%Y-%m-%d") time zone))
(defun change-log-name ()
"Return (system-dependent) default name for a change log file."
@@ -690,7 +676,11 @@ If `change-log-default-name' is nil, behave as though it were \"ChangeLog\"
If `change-log-default-name' contains a leading directory component, then
simply find it in the current directory. Otherwise, search in the current
-directory and its successive parents for a file so named.
+directory and its successive parents for a file so named. Stop at the first
+such file that exists (or has a buffer visiting it), or the first directory
+that contains any of `change-log-directory-files'. If no match is found,
+use the current directory. To override the choice of this function,
+simply create an empty ChangeLog file first by hand in the desired place.
Once a file is found, `change-log-default-name' is set locally in the
current buffer to the complete file name.
@@ -723,24 +713,27 @@ Optional arg BUFFER-FILE overrides `buffer-file-name'."
;; for several related directories.
(setq file-name (file-chase-links file-name))
(setq file-name (expand-file-name file-name))
- ;; Move up in the dir hierarchy till we find a change log file.
- (let ((file1 file-name)
- parent-dir)
- (while (and (not (or (get-file-buffer file1) (file-exists-p file1)))
- (progn (setq parent-dir
- (file-name-directory
- (directory-file-name
- (file-name-directory file1))))
- ;; Give up if we are already at the root dir.
- (not (string= (file-name-directory file1)
- parent-dir))))
- ;; Move up to the parent dir and try again.
- (setq file1 (expand-file-name
- (file-name-nondirectory (change-log-name))
- parent-dir)))
- ;; If we found a change log in a parent, use that.
- (if (or (get-file-buffer file1) (file-exists-p file1))
- (setq file-name file1)))))
+ (let* ((cbase (file-name-nondirectory (change-log-name)))
+ (root
+ (locate-dominating-file
+ file-name
+ (lambda (dir)
+ (or
+ (let ((clog (expand-file-name cbase dir)))
+ (or (get-file-buffer clog) (file-exists-p clog)))
+ ;; Stop at VCS root?
+ (and change-log-directory-files
+ (let ((files change-log-directory-files)
+ found)
+ (while
+ (and
+ (not
+ (setq found
+ (file-exists-p
+ (expand-file-name (car files) dir))))
+ (setq files (cdr files))))
+ found)))))))
+ (if root (setq file-name (expand-file-name cbase root))))))
;; Make a local variable in this buffer so we needn't search again.
(set (make-local-variable 'change-log-default-name) file-name))
file-name)
@@ -895,8 +888,10 @@ non-nil, otherwise in local time."
"\\(\\s \\|[(),:]\\)")
bound t)))
;; Add to the existing item for the same file.
- (re-search-forward "^\\s *$\\|^\\s \\*")
- (goto-char (match-beginning 0))
+ (if (re-search-forward "^\\s *$\\|^\\s \\*" nil t)
+ (goto-char (match-beginning 0))
+ (goto-char (point-max))
+ (insert "\n"))
;; Delete excess empty lines; make just 2.
(while (and (not (eobp)) (looking-at "^\\s *$"))
(delete-region (point) (line-beginning-position 2)))
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index bada492a31..58498cb611 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -243,8 +243,6 @@ well."
(t :weight bold))
"`diff-mode' face inherited by hunk and index header faces."
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-header-face 'diff-header "22.1")
-(defvar diff-header-face 'diff-header)
(defface diff-file-header
'((((class color) (min-colors 88) (background light))
@@ -256,22 +254,16 @@ well."
(t :weight bold)) ; :height 1.3
"`diff-mode' face used to highlight file header lines."
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-file-header-face 'diff-file-header "22.1")
-(defvar diff-file-header-face 'diff-file-header)
(defface diff-index
'((t :inherit diff-file-header))
"`diff-mode' face used to highlight index header lines."
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-index-face 'diff-index "22.1")
-(defvar diff-index-face 'diff-index)
(defface diff-hunk-header
'((t :inherit diff-header))
"`diff-mode' face used to highlight hunk header lines."
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-hunk-header-face 'diff-hunk-header "22.1")
-(defvar diff-hunk-header-face 'diff-hunk-header)
(defface diff-removed
'((default
@@ -284,8 +276,6 @@ well."
:foreground "red"))
"`diff-mode' face used to highlight removed lines."
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-removed-face 'diff-removed "22.1")
-(defvar diff-removed-face 'diff-removed)
(defface diff-added
'((default
@@ -298,16 +288,12 @@ well."
:foreground "green"))
"`diff-mode' face used to highlight added lines."
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-added-face 'diff-added "22.1")
-(defvar diff-added-face 'diff-added)
(defface diff-changed
'((t nil))
"`diff-mode' face used to highlight changed lines."
:version "25.1"
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-changed-face 'diff-changed "22.1")
-(defvar diff-changed-face 'diff-changed)
(defface diff-indicator-removed
'((t :inherit diff-removed))
@@ -334,8 +320,6 @@ well."
'((t :inherit diff-header))
"`diff-mode' face used to highlight function names produced by \"diff -p\"."
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-function-face 'diff-function "22.1")
-(defvar diff-function-face 'diff-function)
(defface diff-context
'((((class color grayscale) (min-colors 88) (background light))
@@ -345,15 +329,11 @@ well."
"`diff-mode' face used to highlight context and other side-information."
:version "25.1"
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-context-face 'diff-context "22.1")
-(defvar diff-context-face 'diff-context)
(defface diff-nonexistent
'((t :inherit diff-file-header))
"`diff-mode' face used to highlight nonexistent files in recursive diffs."
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-nonexistent-face 'diff-nonexistent "22.1")
-(defvar diff-nonexistent-face 'diff-nonexistent)
(defconst diff-yank-handler '(diff-yank-function))
(defun diff-yank-function (text)
@@ -382,57 +362,57 @@ well."
(defconst diff-context-mid-hunk-header-re
"--- \\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)? ----$")
-(defvar diff-use-changed-face (and (face-differs-from-default-p diff-changed-face)
- (not (face-equal diff-changed-face diff-added-face))
- (not (face-equal diff-changed-face diff-removed-face)))
+(defvar diff-use-changed-face (and (face-differs-from-default-p 'diff-changed)
+ (not (face-equal 'diff-changed 'diff-added))
+ (not (face-equal 'diff-changed 'diff-removed)))
"If non-nil, use the face `diff-changed' for changed lines in context diffs.
Otherwise, use the face `diff-removed' for removed lines,
and the face `diff-added' for added lines.")
(defvar diff-font-lock-keywords
`((,(concat "\\(" diff-hunk-header-re-unified "\\)\\(.*\\)$")
- (1 diff-hunk-header-face) (6 diff-function-face))
+ (1 'diff-hunk-header) (6 'diff-function))
("^\\(\\*\\{15\\}\\)\\(.*\\)$" ;context
- (1 diff-hunk-header-face) (2 diff-function-face))
- ("^\\*\\*\\* .+ \\*\\*\\*\\*". diff-hunk-header-face) ;context
- (,diff-context-mid-hunk-header-re . diff-hunk-header-face) ;context
- ("^[0-9,]+[acd][0-9,]+$" . diff-hunk-header-face) ;normal
- ("^---$" . diff-hunk-header-face) ;normal
+ (1 'diff-hunk-header) (2 'diff-function))
+ ("^\\*\\*\\* .+ \\*\\*\\*\\*". 'diff-hunk-header) ;context
+ (,diff-context-mid-hunk-header-re . 'diff-hunk-header) ;context
+ ("^[0-9,]+[acd][0-9,]+$" . 'diff-hunk-header) ;normal
+ ("^---$" . 'diff-hunk-header) ;normal
;; For file headers, accept files with spaces, but be careful to rule
;; out false-positives when matching hunk headers.
("^\\(---\\|\\+\\+\\+\\|\\*\\*\\*\\) \\([^\t\n]+?\\)\\(?:\t.*\\| \\(\\*\\*\\*\\*\\|----\\)\\)?\n"
- (0 diff-header-face)
- (2 (if (not (match-end 3)) diff-file-header-face) prepend))
+ (0 'diff-header)
+ (2 (if (not (match-end 3)) 'diff-file-header) prepend))
("^\\([-<]\\)\\(.*\n\\)"
- (1 diff-indicator-removed-face) (2 diff-removed-face))
+ (1 diff-indicator-removed-face) (2 'diff-removed))
("^\\([+>]\\)\\(.*\n\\)"
- (1 diff-indicator-added-face) (2 diff-added-face))
+ (1 diff-indicator-added-face) (2 'diff-added))
("^\\(!\\)\\(.*\n\\)"
(1 (if diff-use-changed-face
diff-indicator-changed-face
;; Otherwise, search for `diff-context-mid-hunk-header-re' and
- ;; if the line of context diff is above, use `diff-removed-face';
- ;; if below, use `diff-added-face'.
+ ;; if the line of context diff is above, use `diff-removed';
+ ;; if below, use `diff-added'.
(save-match-data
(let ((limit (save-excursion (diff-beginning-of-hunk))))
(if (save-excursion (re-search-backward diff-context-mid-hunk-header-re limit t))
diff-indicator-added-face
diff-indicator-removed-face)))))
(2 (if diff-use-changed-face
- diff-changed-face
+ 'diff-changed
;; Otherwise, use the same method as above.
(save-match-data
(let ((limit (save-excursion (diff-beginning-of-hunk))))
(if (save-excursion (re-search-backward diff-context-mid-hunk-header-re limit t))
- diff-added-face
- diff-removed-face))))))
+ 'diff-added
+ 'diff-removed))))))
("^\\(?:Index\\|revno\\): \\(.+\\).*\n"
- (0 diff-header-face) (1 diff-index-face prepend))
- ("^Only in .*\n" . diff-nonexistent-face)
+ (0 'diff-header) (1 'diff-index prepend))
+ ("^Only in .*\n" . 'diff-nonexistent)
("^\\(#\\)\\(.*\\)"
(1 font-lock-comment-delimiter-face)
(2 font-lock-comment-face))
- ("^[^-=+*!<>#].*\n" (0 diff-context-face))))
+ ("^[^-=+*!<>#].*\n" (0 'diff-context))))
(defconst diff-font-lock-defaults
'(diff-font-lock-keywords t nil nil nil (font-lock-multiline . nil)))
@@ -820,7 +800,7 @@ If the OLD prefix arg is passed, tell the file NAME of the old file."
(error (point-min)))))
(header-files
;; handle filenames with spaces;
- ;; cf. diff-font-lock-keywords / diff-file-header-face
+ ;; cf. diff-font-lock-keywords / diff-file-header
(if (looking-at "[-*][-*][-*] \\([^\t\n]+\\).*\n[-+][-+][-+] \\([^\t\n]+\\)")
(list (if old (match-string 1) (match-string 2))
(if old (match-string 2) (match-string 1)))
@@ -1936,11 +1916,10 @@ For use in `add-log-current-defun-function'."
(t :inverse-video t))
"Face used for char-based changes shown by `diff-refine-hunk'."
:group 'diff-mode)
-(define-obsolete-face-alias 'diff-refine-change 'diff-refine-changed "24.5")
(defface diff-refine-removed
'((default
- :inherit diff-refine-change)
+ :inherit diff-refine-changed)
(((class color) (min-colors 88) (background light))
:background "#ffbbbb")
(((class color) (min-colors 88) (background dark))
@@ -1951,7 +1930,7 @@ For use in `add-log-current-defun-function'."
(defface diff-refine-added
'((default
- :inherit diff-refine-change)
+ :inherit diff-refine-changed)
(((class color) (min-colors 88) (background light))
:background "#aaffaa")
(((class color) (min-colors 88) (background dark))
@@ -1984,7 +1963,7 @@ For use in `add-log-current-defun-function'."
(let* ((start (point))
(style (diff-hunk-style)) ;Skips the hunk header as well.
(beg (point))
- (props-c '((diff-mode . fine) (face diff-refine-change)))
+ (props-c '((diff-mode . fine) (face diff-refine-changed)))
(props-r '((diff-mode . fine) (face diff-refine-removed)))
(props-a '((diff-mode . fine) (face diff-refine-added)))
;; Be careful to go back to `start' so diff-end-of-hunk gets
diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el
index 5419d47781..99672fcb01 100644
--- a/lisp/vc/ediff-util.el
+++ b/lisp/vc/ediff-util.el
@@ -1,4 +1,4 @@
-;;; ediff-util.el --- the core commands and utilities of ediff
+;;; ediff-util.el --- the core commands and utilities of ediff -*- lexical-binding:t -*-
;; Copyright (C) 1994-2016 Free Software Foundation, Inc.
@@ -517,7 +517,7 @@ to invocation.")
(select-window ediff-control-window)
(ediff-visible-region)
- (run-hooks 'startup-hooks)
+ (mapc #'funcall startup-hooks)
(ediff-arrange-autosave-in-merge-jobs merge-buffer-file)
(ediff-refresh-mode-lines)
@@ -1141,11 +1141,8 @@ of the current buffer."
))
(defun ediff-file-compressed-p (file)
- (condition-case nil
- (require 'jka-compr)
- (error))
- (if (featurep 'jka-compr)
- (string-match (jka-compr-build-file-regexp) file)))
+ (require 'jka-compr)
+ (string-match (jka-compr-build-file-regexp) file))
(defun ediff-swap-buffers ()
@@ -1293,7 +1290,8 @@ which see."
(cond ((eq ediff-window-setup-function 'ediff-setup-windows-multiframe)
(setq ediff-multiframe nil)
- (setq window-setup-func 'ediff-setup-windows-plain))
+ (setq window-setup-func 'ediff-setup-windows-plain)
+ (message "ediff is now in 'plain' mode"))
((eq ediff-window-setup-function 'ediff-setup-windows-plain)
(if (ediff-in-control-buffer-p)
(ediff-kill-bottom-toolbar))
@@ -1301,14 +1299,15 @@ which see."
(window-live-p ediff-control-window))
(set-window-dedicated-p ediff-control-window nil))
(setq ediff-multiframe t)
- (setq window-setup-func 'ediff-setup-windows-multiframe))
+ (setq window-setup-func 'ediff-setup-windows-multiframe)
+ (message "ediff is now in 'multiframe' mode"))
(t
(if (and (ediff-buffer-live-p ediff-control-buffer)
(window-live-p ediff-control-window))
(set-window-dedicated-p ediff-control-window nil))
(setq ediff-multiframe t)
(setq window-setup-func 'ediff-setup-windows-multiframe))
- )
+ (message "ediff is now in 'multiframe' mode"))
;; change default
(setq-default ediff-window-setup-function window-setup-func)
@@ -1643,8 +1642,8 @@ the width of the A/B/C windows."
(or ctl-buf (setq ctl-buf ediff-control-buffer))
(ediff-with-current-buffer ctl-buf
(let* ((buf (ediff-get-buffer buf-type))
- (wind (eval (ediff-get-symbol-from-alist
- buf-type ediff-window-alist)))
+ (wind (symbol-value (ediff-get-symbol-from-alist
+ buf-type ediff-window-alist)))
(beg (window-start wind))
(end (ediff-get-diff-posn buf-type 'end))
lines)
@@ -1661,8 +1660,8 @@ the width of the A/B/C windows."
(or ctl-buf (setq ctl-buf ediff-control-buffer))
(ediff-with-current-buffer ctl-buf
(let* ((buf (ediff-get-buffer buf-type))
- (wind (eval (ediff-get-symbol-from-alist
- buf-type ediff-window-alist)))
+ (wind (symbol-value (ediff-get-symbol-from-alist
+ buf-type ediff-window-alist)))
(end (or (window-end wind) (window-end wind t)))
(beg (ediff-get-diff-posn buf-type 'beg diff-num)))
(ediff-with-current-buffer buf
@@ -2440,7 +2439,9 @@ temporarily reverses the meaning of this variable."
;; restore buffer mode line id's in buffer-A/B/C
(let ((control-buffer ediff-control-buffer)
(meta-buffer ediff-meta-buffer)
- (after-quit-hook-internal ediff-after-quit-hook-internal)
+ ;; FIXME: Here we ignore the global part of the
+ ;; ediff-after-quit-hook-internal hook.
+ (after-quit-hook-internal (remq t ediff-after-quit-hook-internal))
(session-number ediff-meta-session-number)
;; suitable working frame
(warp-frame (if (and (ediff-window-display-p) (eq ediff-grab-mouse t))
@@ -2523,7 +2524,7 @@ temporarily reverses the meaning of this variable."
(frame-selected-window warp-frame))
2 1))
- (run-hooks 'after-quit-hook-internal)
+ (mapc #'funcall after-quit-hook-internal)
))
;; Returns frame under mouse, if this frame is not a minibuffer
@@ -3480,6 +3481,7 @@ Without an argument, it saves customized diff argument, if available
(declare-function ediff-regions-internal "ediff"
(buffer-a beg-a end-a buffer-b beg-b end-b
startup-hooks job-name word-mode setup-parameters))
+(defvar zmacs-regions) ;;XEmacs'ism.
(defun ediff-inferior-compare-regions ()
"Compare regions in an active Ediff session.
@@ -3527,7 +3529,7 @@ Ediff Control Panel to restore highlighting."
(while (cond ((memq answer possibilities)
(setq possibilities (delq answer possibilities))
(setq bufA
- (eval
+ (symbol-value
(ediff-get-symbol-from-alist
answer ediff-buffer-alist)))
nil)
@@ -3546,7 +3548,7 @@ Ediff Control Panel to restore highlighting."
(while (cond ((memq answer possibilities)
(setq possibilities (delq answer possibilities))
(setq bufB
- (eval
+ (symbol-value
(ediff-get-symbol-from-alist
answer ediff-buffer-alist)))
nil)
@@ -3945,15 +3947,18 @@ Ediff Control Panel to restore highlighting."
(setq n (1+ n)))
(format "%s<%d>%s" prefix n suffix))))
+(defvar reporter-prompt-for-summary-p)
(defun ediff-submit-report ()
"Submit bug report on Ediff."
(interactive)
(ediff-barf-if-not-control-buffer)
+ (defvar ediff-device-type)
+ (defvar ediff-buffer-name)
(let ((reporter-prompt-for-summary-p t)
(ctl-buf ediff-control-buffer)
(ediff-device-type (ediff-device-type))
- varlist salutation buffer-name)
+ varlist salutation ediff-buffer-name)
(setq varlist '(ediff-diff-program ediff-diff-options
ediff-diff3-program ediff-diff3-options
ediff-patch-program ediff-patch-options
@@ -3970,7 +3975,7 @@ Ediff Control Panel to restore highlighting."
ediff-split-window-function
ediff-job-name
ediff-word-mode
- buffer-name
+ ediff-buffer-name
ediff-device-type
))
(setq salutation "
@@ -4025,7 +4030,7 @@ Mail anyway? (y or n) ")
(progn
(if (ediff-buffer-live-p ctl-buf)
(set-buffer ctl-buf))
- (setq buffer-name (buffer-name))
+ (setq ediff-buffer-name (buffer-name))
(require 'reporter)
(reporter-submit-bug-report "kifer@cs.stonybrook.edu, bug-gnu-emacs@gnu.org"
(ediff-version)
diff --git a/lisp/vc/ediff.el b/lisp/vc/ediff.el
index 71099ab4d6..a4244c941d 100644
--- a/lisp/vc/ediff.el
+++ b/lisp/vc/ediff.el
@@ -1367,7 +1367,8 @@ buffer. If odd -- assume it is in a file."
(require 'ediff-ptch)
(setq patch-buf
(ediff-get-patch-buffer
- (if arg (prefix-numeric-value arg)) patch-buf))
+ (and arg (prefix-numeric-value arg))
+ (and patch-buf (get-buffer patch-buf))))
(setq source-dir (cond (ediff-use-last-dir ediff-last-dir-patch)
((and (not ediff-patch-default-directory)
(buffer-file-name patch-buf))
@@ -1401,9 +1402,8 @@ patch. If not given, the user is prompted according to the prefix argument."
(if arg (prefix-numeric-value arg)) patch-buf))
(ediff-patch-buffer-internal
patch-buf
- (read-buffer
- "Which buffer to patch? "
- (ediff-other-buffer patch-buf))))
+ (read-buffer "Which buffer to patch? " (ediff-other-buffer patch-buf)
+ 'require-match)))
;;;###autoload
diff --git a/lisp/vc/emerge.el b/lisp/vc/emerge.el
index de25cbafb0..058b15c206 100644
--- a/lisp/vc/emerge.el
+++ b/lisp/vc/emerge.el
@@ -621,9 +621,10 @@ This is *not* a user option, since Emerge uses it for its own processing.")
(erase-buffer)
(shell-command
(format "%s %s %s %s"
- emerge-diff-program emerge-diff-options
- (emerge-protect-metachars file-A)
- (emerge-protect-metachars file-B))
+ (shell-quote-argument emerge-diff-program)
+ emerge-diff-options
+ (shell-quote-argument file-A)
+ (shell-quote-argument file-B))
t))
(emerge-prepare-error-list emerge-diff-ok-lines-regexp)
(emerge-convert-diffs-to-markers
@@ -792,10 +793,11 @@ This is *not* a user option, since Emerge uses it for its own processing.")
(erase-buffer)
(shell-command
(format "%s %s %s %s %s"
- emerge-diff3-program emerge-diff-options
- (emerge-protect-metachars file-A)
- (emerge-protect-metachars file-ancestor)
- (emerge-protect-metachars file-B))
+ (shell-quote-argument emerge-diff3-program)
+ emerge-diff-options
+ (shell-quote-argument file-A)
+ (shell-quote-argument file-ancestor)
+ (shell-quote-argument file-B))
t))
(emerge-prepare-error-list emerge-diff3-ok-lines-regexp)
(emerge-convert-diffs-to-markers
@@ -3171,26 +3173,11 @@ See also `auto-save-file-name-p'."
;; Metacharacters that have to be protected from the shell when executing
;; a diff/diff3 command.
-(defcustom emerge-metachars
- (if (memq system-type '(ms-dos windows-nt))
- "[ \t\"<>|?*^&=]"
- "[ \t\n!\"#$&'()*;<=>?[\\^`{|~]")
- "Characters that must be quoted when used in a shell command line.
-More precisely, a [...] regexp to match any one such character."
+(defcustom emerge-metachars nil
+ "Obsolete, emerge now uses `shell-quote-argument'."
:type 'regexp
:group 'emerge)
-
-;; Quote metacharacters (using \) when executing a diff/diff3 command.
-(defun emerge-protect-metachars (s)
- (if (memq system-type '(ms-dos windows-nt))
- (shell-quote-argument s)
- (let ((limit 0))
- (while (string-match emerge-metachars s limit)
- (setq s (concat (substring s 0 (match-beginning 0))
- "\\"
- (substring s (match-beginning 0))))
- (setq limit (1+ (match-end 0)))))
- s))
+(make-obsolete-variable 'emerge-metachars nil "25.2")
(provide 'emerge)
diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el
index 63d50033ee..44b8e0b0f3 100644
--- a/lisp/vc/log-view.el
+++ b/lisp/vc/log-view.el
@@ -200,8 +200,6 @@ If it is nil, `log-view-toggle-entry-display' does nothing.")
(t (:weight bold)))
"Face for the file header line in `log-view-mode'."
:group 'log-view)
-(define-obsolete-face-alias 'log-view-file-face 'log-view-file "22.1")
-(defvar log-view-file-face 'log-view-file)
(defface log-view-message
'((((class color) (background light))
@@ -209,9 +207,6 @@ If it is nil, `log-view-toggle-entry-display' does nothing.")
(t (:weight bold)))
"Face for the message header line in `log-view-mode'."
:group 'log-view)
-;; backward-compatibility alias
-(define-obsolete-face-alias 'log-view-message-face 'log-view-message "22.1")
-(defvar log-view-message-face 'log-view-message)
(defvar log-view-file-re
(concat "^\\(?:Working file: \\(?1:.+\\)" ;RCS and CVS.
@@ -246,8 +241,8 @@ The match group number 1 should match the revision number itself.")
;; and log-view-message-re, if applicable.
'((eval . `(,log-view-file-re
(1 (if (boundp 'cvs-filename-face) cvs-filename-face))
- (0 log-view-file-face append)))
- (eval . `(,log-view-message-re . log-view-message-face))))
+ (0 'log-view-file append)))
+ (eval . `(,log-view-message-re . 'log-view-message))))
(defconst log-view-font-lock-defaults
'(log-view-font-lock-keywords t nil nil nil))
diff --git a/lisp/vc/pcvs-info.el b/lisp/vc/pcvs-info.el
index b9ecc89254..6bb1370682 100644
--- a/lisp/vc/pcvs-info.el
+++ b/lisp/vc/pcvs-info.el
@@ -69,7 +69,6 @@ to confuse some users sometimes."
(t (:weight bold)))
"PCL-CVS face used to highlight directory changes."
:group 'pcl-cvs)
-(define-obsolete-face-alias 'cvs-header-face 'cvs-header "22.1")
(defface cvs-filename
'((((class color) (background dark))
@@ -79,7 +78,6 @@ to confuse some users sometimes."
(t ()))
"PCL-CVS face used to highlight file names."
:group 'pcl-cvs)
-(define-obsolete-face-alias 'cvs-filename-face 'cvs-filename "22.1")
(defface cvs-unknown
'((((class color) (background dark))
@@ -89,7 +87,6 @@ to confuse some users sometimes."
(t (:slant italic)))
"PCL-CVS face used to highlight unknown file status."
:group 'pcl-cvs)
-(define-obsolete-face-alias 'cvs-unknown-face 'cvs-unknown "22.1")
(defface cvs-handled
'((((class color) (background dark))
@@ -99,7 +96,6 @@ to confuse some users sometimes."
(t ()))
"PCL-CVS face used to highlight handled file status."
:group 'pcl-cvs)
-(define-obsolete-face-alias 'cvs-handled-face 'cvs-handled "22.1")
(defface cvs-need-action
'((((class color) (background dark))
@@ -109,7 +105,6 @@ to confuse some users sometimes."
(t (:slant italic)))
"PCL-CVS face used to highlight status of files needing action."
:group 'pcl-cvs)
-(define-obsolete-face-alias 'cvs-need-action-face 'cvs-need-action "22.1")
(defface cvs-marked
'((((min-colors 88) (class color) (background dark))
@@ -121,13 +116,11 @@ to confuse some users sometimes."
(t (:weight bold)))
"PCL-CVS face used to highlight marked file indicator."
:group 'pcl-cvs)
-(define-obsolete-face-alias 'cvs-marked-face 'cvs-marked "22.1")
(defface cvs-msg
'((t :slant italic))
"PCL-CVS face used to highlight CVS messages."
:group 'pcl-cvs)
-(define-obsolete-face-alias 'cvs-msg-face 'cvs-msg "22.1")
(defvar cvs-fi-up-to-date-face 'cvs-handled)
(defvar cvs-fi-unknown-face 'cvs-unknown)
diff --git a/lisp/vc/smerge-mode.el b/lisp/vc/smerge-mode.el
index 489ece81be..5198624ea7 100644
--- a/lisp/vc/smerge-mode.el
+++ b/lisp/vc/smerge-mode.el
@@ -67,34 +67,34 @@
(append '("-d" "-b")
(if (listp diff-switches) diff-switches (list diff-switches)))
"A list of strings specifying switches to be passed to diff.
-Used in `smerge-diff-base-mine' and related functions."
+Used in `smerge-diff-base-upper' and related functions."
:type '(repeat string))
(defcustom smerge-auto-leave t
"Non-nil means to leave `smerge-mode' when the last conflict is resolved."
:type 'boolean)
-(defface smerge-mine
+(defface smerge-upper
'((((class color) (min-colors 88) (background light))
:background "#ffdddd")
(((class color) (min-colors 88) (background dark))
:background "#553333")
(((class color))
:foreground "red"))
- "Face for your code.")
-(define-obsolete-face-alias 'smerge-mine-face 'smerge-mine "22.1")
-(defvar smerge-mine-face 'smerge-mine)
+ "Face for the `upper' version of a conflict.")
+(define-obsolete-face-alias 'smerge-mine 'smerge-upper "25.2")
+(defvar smerge-upper-face 'smerge-upper)
-(defface smerge-other
+(defface smerge-lower
'((((class color) (min-colors 88) (background light))
:background "#ddffdd")
(((class color) (min-colors 88) (background dark))
:background "#335533")
(((class color))
:foreground "green"))
- "Face for the other code.")
-(define-obsolete-face-alias 'smerge-other-face 'smerge-other "22.1")
-(defvar smerge-other-face 'smerge-other)
+ "Face for the `lower' version of a conflict.")
+(define-obsolete-face-alias 'smerge-other 'smerge-lower "25.2")
+(defvar smerge-lower-face 'smerge-lower)
(defface smerge-base
'((((class color) (min-colors 88) (background light))
@@ -149,16 +149,18 @@ Used in `smerge-diff-base-mine' and related functions."
("r" . smerge-resolve)
("a" . smerge-keep-all)
("b" . smerge-keep-base)
- ("o" . smerge-keep-other)
- ("m" . smerge-keep-mine)
+ ("o" . smerge-keep-lower) ; for the obsolete keep-other
+ ("l" . smerge-keep-lower)
+ ("m" . smerge-keep-upper) ; for the obsolete keep-mine
+ ("u" . smerge-keep-upper)
("E" . smerge-ediff)
("C" . smerge-combine-with-next)
("R" . smerge-refine)
("\C-m" . smerge-keep-current)
("=" . ,(make-sparse-keymap "Diff"))
- ("=<" "base-mine" . smerge-diff-base-mine)
- ("=>" "base-other" . smerge-diff-base-other)
- ("==" "mine-other" . smerge-diff-mine-other))
+ ("=<" "base-upper" . smerge-diff-base-upper)
+ ("=>" "base-lower" . smerge-diff-base-lower)
+ ("==" "upper-lower" . smerge-diff-upper-lower))
"The base keymap for `smerge-mode'.")
(defcustom smerge-command-prefix "\C-c^"
@@ -196,19 +198,19 @@ Used in `smerge-diff-base-mine' and related functions."
"--"
["Revert to Base" smerge-keep-base :help "Revert to base version"
:active (smerge-check 2)]
- ["Keep Other" smerge-keep-other :help "Keep `other' version"
- :active (smerge-check 3)]
- ["Keep Yours" smerge-keep-mine :help "Keep your version"
+ ["Keep Upper" smerge-keep-upper :help "Keep `upper' version"
:active (smerge-check 1)]
+ ["Keep Lower" smerge-keep-lower :help "Keep `lower' version"
+ :active (smerge-check 3)]
"--"
- ["Diff Base/Mine" smerge-diff-base-mine
- :help "Diff `base' and `mine' for current conflict"
+ ["Diff Base/Upper" smerge-diff-base-upper
+ :help "Diff `base' and `upper' for current conflict"
:active (smerge-check 2)]
- ["Diff Base/Other" smerge-diff-base-other
- :help "Diff `base' and `other' for current conflict"
+ ["Diff Base/Lower" smerge-diff-base-lower
+ :help "Diff `base' and `lower' for current conflict"
:active (smerge-check 2)]
- ["Diff Mine/Other" smerge-diff-mine-other
- :help "Diff `mine' and `other' for current conflict"
+ ["Diff Upper/Lower" smerge-diff-upper-lower
+ :help "Diff `upper' and `lower' for current conflict"
:active (smerge-check 1)]
"--"
["Invoke Ediff" smerge-ediff
@@ -223,7 +225,7 @@ Used in `smerge-diff-base-mine' and related functions."
))
(easy-menu-define smerge-context-menu nil
- "Context menu for mine area in `smerge-mode'."
+ "Context menu for upper area in `smerge-mode'."
'(nil
["Keep Current" smerge-keep-current :help "Use current (at point) version"]
["Kill Current" smerge-kill-current :help "Remove current (at point) version"]
@@ -234,9 +236,9 @@ Used in `smerge-diff-base-mine' and related functions."
(defconst smerge-font-lock-keywords
'((smerge-find-conflict
- (1 smerge-mine-face prepend t)
+ (1 smerge-upper-face prepend t)
(2 smerge-base-face prepend t)
- (3 smerge-other-face prepend t)
+ (3 smerge-lower-face prepend t)
;; FIXME: `keep' doesn't work right with syntactic fontification.
(0 smerge-markers-face keep)
(4 nil t t)
@@ -246,7 +248,7 @@ Used in `smerge-diff-base-mine' and related functions."
(defconst smerge-begin-re "^<<<<<<< \\(.*\\)\n")
(defconst smerge-end-re "^>>>>>>> \\(.*\\)\n")
(defconst smerge-base-re "^||||||| \\(.*\\)\n")
-(defconst smerge-other-re "^=======\n")
+(defconst smerge-lower-re "^=======\n")
(defvar smerge-conflict-style nil
"Keep track of which style of conflict is in use.
@@ -267,7 +269,7 @@ Can be nil if the style is undecided, or else:
(if diff-auto-refine-mode
(condition-case nil (smerge-refine) (error nil))))
-(defconst smerge-match-names ["conflict" "mine" "base" "other"])
+(defconst smerge-match-names ["conflict" "upper" "base" "lower"])
(defun smerge-ensure-match (n)
(unless (match-end n)
@@ -570,7 +572,7 @@ major modes. Uses `smerge-resolve-function' to do the actual work."
(zerop (call-process diff-command nil buf nil "-bc" b m)))
(set-match-data md)
(smerge-keep-n 3))
- ;; Try "diff -b BASE MINE | patch OTHER".
+ ;; Try "diff -b BASE UPPER | patch LOWER".
((when (and (not safe) m2e b
;; If the BASE is empty, this would just concatenate
;; the two, which is rarely right.
@@ -585,7 +587,7 @@ major modes. Uses `smerge-resolve-function' to do the actual work."
(narrow-to-region m0b m0e)
(smerge-remove-props m0b m0e)
(insert-file-contents o nil nil nil t)))
- ;; Try "diff -b BASE OTHER | patch MINE".
+ ;; Try "diff -b BASE LOWER | patch UPPER".
((when (and (not safe) m2e b
;; If the BASE is empty, this would just concatenate
;; the two, which is rarely right.
@@ -685,22 +687,40 @@ major modes. Uses `smerge-resolve-function' to do the actual work."
(smerge-keep-n 2)
(smerge-auto-leave))
-(defun smerge-keep-other ()
- "Use \"other\" version."
+(defun smerge-keep-lower ()
+ "Keep the \"lower\" version of a merge conflict.
+In a conflict that looks like:
+ <<<<<<<
+ UUU
+ =======
+ LLL
+ >>>>>>>
+this keeps \"LLL\"."
(interactive)
(smerge-match-conflict)
;;(smerge-ensure-match 3)
(smerge-keep-n 3)
(smerge-auto-leave))
-(defun smerge-keep-mine ()
- "Keep your version."
+(define-obsolete-function-alias 'smerge-keep-other 'smerge-keep-lower "25.2")
+
+(defun smerge-keep-upper ()
+ "Keep the \"upper\" version of a merge conflict.
+In a conflict that looks like:
+ <<<<<<<
+ UUU
+ =======
+ LLL
+ >>>>>>>
+this keeps \"UUU\"."
(interactive)
(smerge-match-conflict)
;;(smerge-ensure-match 1)
(smerge-keep-n 1)
(smerge-auto-leave))
+(define-obsolete-function-alias 'smerge-keep-mine 'smerge-keep-upper "25.2")
+
(defun smerge-get-current ()
(let ((i 3))
(while (or (not (match-end i))
@@ -734,28 +754,37 @@ major modes. Uses `smerge-resolve-function' to do the actual work."
(smerge-keep-n (car left))
(smerge-auto-leave))))))
-(defun smerge-diff-base-mine ()
- "Diff `base' and `mine' version in current conflict region."
+(defun smerge-diff-base-upper ()
+ "Diff `base' and `upper' version in current conflict region."
(interactive)
(smerge-diff 2 1))
-(defun smerge-diff-base-other ()
- "Diff `base' and `other' version in current conflict region."
+(define-obsolete-function-alias 'smerge-diff-base-mine
+ 'smerge-diff-base-upper "25.2")
+
+(defun smerge-diff-base-lower ()
+ "Diff `base' and `lower' version in current conflict region."
(interactive)
(smerge-diff 2 3))
-(defun smerge-diff-mine-other ()
- "Diff `mine' and `other' version in current conflict region."
+(define-obsolete-function-alias 'smerge-diff-base-other
+ 'smerge-diff-base-lower "25.2")
+
+(defun smerge-diff-upper-lower ()
+ "Diff `upper' and `lower' version in current conflict region."
(interactive)
(smerge-diff 1 3))
+(define-obsolete-function-alias 'smerge-diff-mine-other
+ 'smerge-diff-upper-lower "25.2")
+
(defun smerge-match-conflict ()
"Get info about the conflict. Puts the info in the `match-data'.
The submatches contain:
0: the whole conflict.
- 1: your code.
- 2: the base code.
- 3: other code.
+ 1: upper version of the code.
+ 2: base version of the code.
+ 3: lower version of the code.
An error is raised if not inside a conflict."
(save-excursion
(condition-case nil
@@ -765,26 +794,26 @@ An error is raised if not inside a conflict."
(_ (re-search-backward smerge-begin-re))
(start (match-beginning 0))
- (mine-start (match-end 0))
+ (upper-start (match-end 0))
(filename (or (match-string 1) ""))
(_ (re-search-forward smerge-end-re))
(_ (cl-assert (< orig-point (match-end 0))))
- (other-end (match-beginning 0))
+ (lower-end (match-beginning 0))
(end (match-end 0))
- (_ (re-search-backward smerge-other-re start))
+ (_ (re-search-backward smerge-lower-re start))
- (mine-end (match-beginning 0))
- (other-start (match-end 0))
+ (upper-end (match-beginning 0))
+ (lower-start (match-end 0))
base-start base-end)
;; handle the various conflict styles
(cond
((save-excursion
- (goto-char mine-start)
+ (goto-char upper-start)
(re-search-forward smerge-begin-re end t))
;; There's a nested conflict and we're after the beginning
;; of the outer one but before the beginning of the inner one.
@@ -797,8 +826,8 @@ An error is raised if not inside a conflict."
((re-search-backward smerge-base-re start t)
;; a 3-parts conflict
(set (make-local-variable 'smerge-conflict-style) 'diff3-A)
- (setq base-end mine-end)
- (setq mine-end (match-beginning 0))
+ (setq base-end upper-end)
+ (setq upper-end (match-beginning 0))
(setq base-start (match-end 0)))
((string= filename (file-name-nondirectory
@@ -811,17 +840,17 @@ An error is raised if not inside a conflict."
(equal filename "ANCESTOR")
(string-match "\\`[.0-9]+\\'" filename)))
;; a same-diff conflict
- (setq base-start mine-start)
- (setq base-end mine-end)
- (setq mine-start other-start)
- (setq mine-end other-end)))
+ (setq base-start upper-start)
+ (setq base-end upper-end)
+ (setq upper-start lower-start)
+ (setq upper-end lower-end)))
(store-match-data (list start end
- mine-start mine-end
+ upper-start upper-end
base-start base-end
- other-start other-end
+ lower-start lower-end
(when base-start (1- base-start)) base-start
- (1- other-start) other-start))
+ (1- lower-start) lower-start))
t)
(search-failed (user-error "Point not in conflict region")))))
@@ -1133,10 +1162,10 @@ repeating the command will highlight other two parts."
'((smerge . refine) (face . smerge-refined-added))))))
(defun smerge-swap ()
- "Swap the \"Mine\" and the \"Other\" chunks.
+ "Swap the \"Upper\" and the \"Lower\" chunks.
Can be used before things like `smerge-keep-all' or `smerge-resolve' where the
ordering can have some subtle influence on the result, such as preferring the
-spacing of the \"Other\" chunk."
+spacing of the \"Lower\" chunk."
(interactive)
(smerge-match-conflict)
(goto-char (match-beginning 3))
@@ -1205,9 +1234,9 @@ spacing of the \"Other\" chunk."
default)))
;;;###autoload
-(defun smerge-ediff (&optional name-mine name-other name-base)
+(defun smerge-ediff (&optional name-upper name-lower name-base)
"Invoke ediff to resolve the conflicts.
-NAME-MINE, NAME-OTHER, and NAME-BASE, if non-nil, are used for the
+NAME-UPPER, NAME-LOWER, and NAME-BASE, if non-nil, are used for the
buffer names."
(interactive)
(let* ((buf (current-buffer))
@@ -1215,18 +1244,18 @@ buffer names."
;;(ediff-default-variant 'default-B)
(config (current-window-configuration))
(filename (file-name-nondirectory (or buffer-file-name "-")))
- (mine (generate-new-buffer
- (or name-mine
+ (upper (generate-new-buffer
+ (or name-upper
(concat "*" filename " "
- (smerge--get-marker smerge-begin-re "MINE")
+ (smerge--get-marker smerge-begin-re "UPPER")
"*"))))
- (other (generate-new-buffer
- (or name-other
+ (lower (generate-new-buffer
+ (or name-lower
(concat "*" filename " "
- (smerge--get-marker smerge-end-re "OTHER")
+ (smerge--get-marker smerge-end-re "LOWER")
"*"))))
base)
- (with-current-buffer mine
+ (with-current-buffer upper
(buffer-disable-undo)
(insert-buffer-substring buf)
(goto-char (point-min))
@@ -1237,7 +1266,7 @@ buffer names."
(set-buffer-modified-p nil)
(funcall mode))
- (with-current-buffer other
+ (with-current-buffer lower
(buffer-disable-undo)
(insert-buffer-substring buf)
(goto-char (point-min))
@@ -1269,9 +1298,9 @@ buffer names."
;; Fire up ediff.
(set-buffer
(if base
- (ediff-merge-buffers-with-ancestor mine other base)
+ (ediff-merge-buffers-with-ancestor upper lower base)
;; nil 'ediff-merge-revisions-with-ancestor buffer-file-name)
- (ediff-merge-buffers mine other)))
+ (ediff-merge-buffers upper lower)))
;; nil 'ediff-merge-revisions buffer-file-name)))
;; Ediff is now set up, and we are in the control buffer.
@@ -1313,21 +1342,21 @@ with a \\[universal-argument] prefix, makes up a 3-way conflict."
(pcase-let ((`(,pt1 ,pt2 ,pt3 ,pt4)
(sort `(,pt1 ,pt2 ,pt3 ,@(if pt4 (list pt4))) '>=)))
(goto-char pt1) (beginning-of-line)
- (insert ">>>>>>> OTHER\n")
+ (insert ">>>>>>> LOWER\n")
(goto-char pt2) (beginning-of-line)
(insert "=======\n")
(goto-char pt3) (beginning-of-line)
(when pt4
(insert "||||||| BASE\n")
(goto-char pt4) (beginning-of-line))
- (insert "<<<<<<< MINE\n"))
+ (insert "<<<<<<< UPPER\n"))
(if smerge-mode nil (smerge-mode 1))
(smerge-refine))
(defconst smerge-parsep-re
(concat smerge-begin-re "\\|" smerge-end-re "\\|"
- smerge-base-re "\\|" smerge-other-re "\\|"))
+ smerge-base-re "\\|" smerge-lower-re "\\|"))
;;;###autoload
(define-minor-mode smerge-mode
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el
index 03c134a100..4bcab66fb5 100644
--- a/lisp/vc/vc-bzr.el
+++ b/lisp/vc/vc-bzr.el
@@ -50,6 +50,11 @@
(require 'vc-dispatcher)
(require 'vc-dir)) ; vc-dir-at-event
+(declare-function vc-deduce-fileset "vc"
+ (&optional observer allow-unregistered
+ state-model-only-files))
+
+
;; Clear up the cache to force vc-call to check again and discover
;; new functions when we reload this file.
(put 'Bzr 'vc-functions nil)
diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el
index a2499a2294..50198713b4 100644
--- a/lisp/vc/vc-cvs.el
+++ b/lisp/vc/vc-cvs.el
@@ -27,6 +27,12 @@
(eval-when-compile (require 'vc))
+(declare-function vc-branch-p "vc" (rev))
+(declare-function vc-checkout "vc" (file &optional rev))
+(declare-function vc-expand-dirs "vc" (file-or-dir-list backend))
+(declare-function vc-read-revision "vc"
+ (prompt &optional files backend default initial-input))
+
;; Clear up the cache to force vc-call to check again and discover
;; new functions when we reload this file.
(put 'CVS 'vc-functions nil)
diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el
index 59f2ae329e..a5515420a1 100644
--- a/lisp/vc/vc-dispatcher.el
+++ b/lisp/vc/vc-dispatcher.el
@@ -669,7 +669,7 @@ BACKEND, if non-nil, specifies a VC backend for the Log Edit buffer."
(make-local-variable 'vc-log-after-operation-hook)
(when after-hook
(setq vc-log-after-operation-hook after-hook))
- (setq vc-log-operation action)
+ (set (make-local-variable 'vc-log-operation) action)
(when comment
(erase-buffer)
(when (stringp comment) (insert comment)))
@@ -711,6 +711,7 @@ the buffer contents as a comment."
(funcall log-operation
log-fileset
log-entry))
+ (setq vc-log-operation nil)
;; Quit windows on logbuf.
(cond
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 9eac5b26f0..43a831f159 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -705,7 +705,12 @@ It is based on `log-edit-mode', and has Git-specific extensions.")
;; arguments must be in the system codepage, and therefore
;; might not support the non-ASCII characters in the log
;; message.
- (if (eq system-type 'windows-nt) (make-temp-file "git-msg"))))
+ (if (eq system-type 'windows-nt)
+ (if (file-remote-p file1)
+ (let ((default-directory (file-name-directory file1)))
+ (file-remote-p
+ (make-nearby-temp-file "git-msg") 'localname))
+ (make-temp-file "git-msg")))))
(cl-flet ((boolean-arg-fn
(argument)
(lambda (value) (when (equal value "yes") (list argument)))))
@@ -1005,7 +1010,9 @@ or BRANCH^ (where \"^\" can be repeated)."
(goto-char (point-min))
(unless (eobp)
;; Indent the expanded log entry.
- (indent-region (point-min) (point-max) 2)
+ (while (re-search-forward "^ " nil t)
+ (replace-match "")
+ (forward-line))
(buffer-string))))
(defun vc-git-region-history (file buffer lfrom lto)
@@ -1082,6 +1089,13 @@ or BRANCH^ (where \"^\" can be repeated)."
(cons 'vc-git-region-history-font-lock-keywords
(cdr font-lock-defaults))))
+(defun vc-git--asciify-coding-system ()
+ ;; Try to reconcile the content encoding with the encoding of Git's
+ ;; auxiliary output (which is ASCII or ASCII-compatible), bug#23595.
+ (unless (let ((samp "Binary files differ"))
+ (string-equal samp (decode-coding-string
+ samp coding-system-for-read t)))
+ (setq coding-system-for-read 'undecided)))
(autoload 'vc-switches "vc")
@@ -1089,6 +1103,7 @@ or BRANCH^ (where \"^\" can be repeated)."
"Get a difference report using Git between two revisions of FILES."
(let (process-file-side-effects
(command "diff-tree"))
+ (vc-git--asciify-coding-system)
(if rev2
;; Diffing against the empty tree.
(unless rev1 (setq rev1 "4b825dc642cb6eb9a060e54bf8d69288fbee4904"))
@@ -1127,6 +1142,7 @@ or BRANCH^ (where \"^\" can be repeated)."
table))
(defun vc-git-annotate-command (file buf &optional rev)
+ (vc-git--asciify-coding-system)
(let ((name (file-relative-name file)))
(apply #'vc-git-command buf 'async nil "blame" "--date=short"
(append (vc-switches 'git 'annotate)
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index 2d8bab7059..78ff56c3ae 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -48,7 +48,7 @@
;; - dir-printer (fileinfo) OK
;; * working-revision (file) OK
;; * checkout-model (files) OK
-;; - mode-line-string (file) NOT NEEDED
+;; - mode-line-string (file) OK
;; STATE-CHANGING FUNCTIONS
;; * register (files &optional rev comment) OK
;; * create-repo () OK
@@ -106,6 +106,8 @@
(require 'vc)
(require 'vc-dir))
+(declare-function vc-compilation-mode "vc-dispatcher" (backend))
+
;;; Customization options
(defgroup vc-hg nil
@@ -197,6 +199,11 @@ highlighting the Log View buffer."
(defun vc-hg-state (file)
"Hg-specific version of `vc-state'."
+ (let ((state (vc-hg-state-fast file)))
+ (if (eq state 'unsupported) (vc-hg-state-slow file) state)))
+
+(defun vc-hg-state-slow (file)
+ "Determine status of FILE by running hg."
(setq file (expand-file-name file))
(let*
((status nil)
@@ -245,6 +252,130 @@ highlighting the Log View buffer."
"parent" "--template" "{rev}")))
"0"))
+(defcustom vc-hg-symbolic-revision-styles
+ '(builtin-active-bookmark
+ "{if(bookmarks,sub(' ',',',bookmarks),if(phabdiff,phabdiff,shortest(node,6)))}")
+ "List of ways to present versions symbolically. The version
+that we use is the first one that successfully produces a
+non-empty string.
+
+Each entry in the list can be either:
+
+- The symbol `builtin-active-bookmark', which indicates that we
+should use the active bookmark if one exists. A template can
+supply this information as well, but `builtin-active-bookmark' is
+handled entirely inside Emacs and so is more efficient than using
+the generic Mercurial mechanism.
+
+- A string giving the Mercurial template to supply to \"hg
+parent\". \"hg help template\" may be useful reading.
+
+- A function to call; it should accept two arguments (a revision
+and an optional path to which to limit history) and produce a
+string. The function is called with `default-directory' set to
+within the repository.
+
+If no list entry produces a useful revision, return `nil'."
+ :type '(repeat (choice
+ (const :tag "Active bookmark" 'bookmark)
+ (string :tag "Hg template")
+ (function :tag "Custom")))
+ :version "25.2"
+ :group 'vc-hg)
+
+(defcustom vc-hg-use-file-version-for-mode-line-version nil
+ "When enabled, the modeline contains revision information for the visited file.
+When not, the revision in the modeline is for the repository
+working copy. `nil' is the much faster setting for
+large repositories."
+ :type 'boolean
+ :version "25.2"
+ :group 'vc-hg)
+
+(defun vc-hg--active-bookmark-internal (rev)
+ (when (equal rev ".")
+ (let* ((current-bookmarks-file ".hg/bookmarks.current"))
+ (when (file-exists-p current-bookmarks-file)
+ (ignore-errors
+ (with-temp-buffer
+ (insert-file-contents current-bookmarks-file)
+ (buffer-substring-no-properties
+ (point-min) (point-max))))))))
+
+(defun vc-hg--run-log (template rev path)
+ (ignore-errors
+ (with-output-to-string
+ (if path
+ (vc-hg-command
+ standard-output 0 nil
+ "log" "-f" "-l1" "--template" template path)
+ (vc-hg-command
+ standard-output 0 nil
+ "log" "-r" rev "-l1" "--template" template)))))
+
+(defun vc-hg--symbolic-revision (rev &optional path)
+ "Make a Mercurial revision human-readable.
+REV is a Mercurial revision. `default-directory' is assumed to
+be in the repository root of interest. PATH, if set, is a
+specific file to query."
+ (let ((symbolic-revision nil)
+ (styles vc-hg-symbolic-revision-styles))
+ (while (and (not symbolic-revision) styles)
+ (let ((style (pop styles)))
+ (setf symbolic-revision
+ (cond ((and (null path) (eq style 'builtin-active-bookmark))
+ (vc-hg--active-bookmark-internal rev))
+ ((stringp style)
+ (vc-hg--run-log style rev path))
+ ((functionp style)
+ (funcall style rev path))))))
+ symbolic-revision))
+
+(defun vc-hg-mode-line-string (file)
+ "Hg-specific version of `vc-mode-line-string'."
+ (let* ((backend-name "Hg")
+ (truename (file-truename file))
+ (state (vc-state truename))
+ (state-echo nil)
+ (face nil)
+ (rev (and state
+ (let ((default-directory
+ (expand-file-name (vc-hg-root truename))))
+ (vc-hg--symbolic-revision
+ "."
+ (and vc-hg-use-file-version-for-mode-line-version
+ truename)))))
+ (rev (or rev "???")))
+ (propertize
+ (cond ((or (eq state 'up-to-date)
+ (eq state 'needs-update))
+ (setq state-echo "Up to date file")
+ (setq face 'vc-up-to-date-state)
+ (concat backend-name "-" rev))
+ ((eq state 'added)
+ (setq state-echo "Locally added file")
+ (setq face 'vc-locally-added-state)
+ (concat backend-name "@" rev))
+ ((eq state 'conflict)
+ (setq state-echo "File contains conflicts after the last merge")
+ (setq face 'vc-conflict-state)
+ (concat backend-name "!" rev))
+ ((eq state 'removed)
+ (setq state-echo "File removed from the VC system")
+ (setq face 'vc-removed-state)
+ (concat backend-name "!" rev))
+ ((eq state 'missing)
+ (setq state-echo "File tracked by the VC system, but missing from the file system")
+ (setq face 'vc-missing-state)
+ (concat backend-name "?" rev))
+ (t
+ (setq state-echo "Locally modified file")
+ (setq face 'vc-edited-state)
+ (concat backend-name ":" rev)))
+ 'face face
+ 'help-echo (concat state-echo " under the " backend-name
+ " version control system"))))
+
;;; History functions
(defcustom vc-hg-log-switches nil
@@ -435,6 +566,488 @@ Optional arg REVISION is a revision to annotate from."
;; TODO: update *vc-change-log* buffer so can see @ if --graph
))
+;;; Native data structure reading
+
+(defcustom vc-hg-parse-hg-data-structures t
+ "If true, try directly parsing Mercurial data structures
+directly instead of always running Mercurial. We try to be safe
+against Mercurial data structure format changes and always fall
+back to running Mercurial directly."
+ :type 'boolean
+ :version "25.2"
+ :group 'vc-hg)
+
+(defsubst vc-hg--read-u8 ()
+ "Read and advance over an unsigned byte.
+Return a fixnum."
+ (prog1 (char-after)
+ (forward-char)))
+
+(defsubst vc-hg--read-u32-be ()
+ "Read and advance over a big-endian unsigned 32-bit integer.
+Return a fixnum; on overflow, result is undefined."
+ ;; Because elisp bytecode has an instruction for multiply and
+ ;; doesn't have one for lsh, it's somewhat counter-intuitively
+ ;; faster to multiply than to shift.
+ (+ (* (vc-hg--read-u8) (* 256 256 256))
+ (* (vc-hg--read-u8) (* 256 256))
+ (* (vc-hg--read-u8) 256)
+ (identity (vc-hg--read-u8))))
+
+(defun vc-hg--raw-dirstate-search (dirstate fname)
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (insert-file-contents-literally dirstate)
+ (let* ((result nil)
+ (flen (length fname))
+ (case-fold-search nil)
+ (inhibit-changing-match-data t)
+ ;; Find a conservative bound for the loop below by using
+ ;; Boyer-Moore on the raw dirstate without parsing it; we
+ ;; know we can't possibly find fname _after_ the last place
+ ;; it appears, so we can bail out early if we try to parse
+ ;; past it, which especially helps when the file we're
+ ;; trying to find isn't in dirstate at all. There's no way
+ ;; to similarly bound the starting search position, since
+ ;; the file format is such that we need to parse it from
+ ;; the beginning to find record boundaries.
+ (search-limit
+ (progn
+ (goto-char (point-max))
+ (or (search-backward fname (+ (point-min) 40) t)
+ (point-min)))))
+ ;; 40 is just after the header, which contains the working
+ ;; directory parents
+ (goto-char (+ (point-min) 40))
+ ;; Iterate over all dirstate entries; we might run this loop
+ ;; hundreds of thousands of times, so performance is important
+ ;; here
+ (while (< (point) search-limit)
+ ;; 1+4*4 is the length of the dirstate item header, which we
+ ;; spell as a literal for performance, since the elisp
+ ;; compiler lacks constant propagation
+ (forward-char (1+ (* 3 4)))
+ (let ((this-flen (vc-hg--read-u32-be)))
+ (if (and (or (eq this-flen flen)
+ (and (> this-flen flen)
+ (eq (char-after (+ (point) flen)) 0)))
+ (search-forward fname (+ (point) flen) t))
+ (progn
+ (backward-char (+ flen (1+ (* 4 4))))
+ (setf result
+ (list (vc-hg--read-u8) ; status
+ (vc-hg--read-u32-be) ; mode
+ (vc-hg--read-u32-be) ; size (of file)
+ (vc-hg--read-u32-be) ; mtime
+ ))
+ (goto-char (point-max)))
+ (forward-char this-flen))))
+ result)))
+
+(define-error 'vc-hg-unsupported-syntax "unsupported hgignore syntax")
+
+(defconst vc-hg--pcre-c-escapes
+ '((?a . ?\a)
+ (?b . ?\b)
+ (?f . ?\f)
+ (?n . ?\n)
+ (?r . ?\r)
+ (?t . ?\t)
+ (?n . ?\n)
+ (?r . ?\r)
+ (?t . ?\t)
+ (?v . ?\v)))
+
+(defconst vc-hg--pcre-metacharacters
+ '(?. ?^ ?$ ?* ?+ ?? ?{ ?\\ ?\[ ?\| ?\())
+
+(defconst vc-hg--elisp-metacharacters
+ '(?. ?* ?+ ?? ?\[ ?$ ?\\))
+
+(defun vc-hg--escape-for-pcre (c)
+ (if (memq c vc-hg--pcre-metacharacters)
+ (string ?\\ c)
+ c))
+
+(defun vc-hg--parts-to-string (parts)
+ "Build a string from list PARTS. Each element is a character or string."
+ (let ((parts2 nil))
+ (while parts
+ (let* ((partcell (prog1 parts (setf parts (cdr parts))))
+ (part (car partcell)))
+ (if (stringp part)
+ (setf parts2 (nconc (append part nil) parts2))
+ (setcdr partcell parts2)
+ (setf parts2 partcell))))
+ (apply #'string parts2)))
+
+(defun vc-hg--pcre-to-elisp-re (pcre prefix)
+ "Transform PCRE, a Mercurial file PCRE, into an elisp RE against PREFIX.
+PREFIX is the directory name of the directory against which these
+patterns are rooted. We understand only a subset of PCRE syntax;
+if we don't understand a construct, we signal
+`vc-hg-unsupported-syntax'."
+ (cl-assert (string-match "^/\\(.*/\\)?$" prefix))
+ (let ((parts nil)
+ (i 0)
+ (anchored nil)
+ (state 'normal)
+ (pcrelen (length pcre)))
+ (while (< i pcrelen)
+ (let ((c (aref pcre i)))
+ (cond ((eq state 'normal)
+ (cond ((string-match
+ (rx (| "}\\?" (: "(?" (not (any ":")))))
+ pcre i)
+ (signal 'vc-hg-unsupported-syntax (list pcre)))
+ ((eq c ?\\)
+ (setf state 'backslash))
+ ((eq c ?\[)
+ (setf state 'charclass-enter)
+ (push c parts))
+ ((eq c ?^)
+ (if (eq i 0) (setf anchored t)
+ (signal 'vc-hg-unsupported-syntax (list pcre))))
+ ((eq c ?$)
+ ;; Patterns can also match directories exactly,
+ ;; ignoring everything under a matched directory
+ (push "\\(?:$\\|/\\)" parts))
+ ((memq c '(?| ?\( ?\)))
+ (push ?\\ parts)
+ (push c parts))
+ (t (push c parts))))
+ ((eq state 'backslash)
+ (cond ((memq c '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9
+ ?A ?b ?B ?d ?D ?s ?S ?w ?W ?Z ?x))
+ (signal 'vc-hg-unsupported-syntax (list pcre)))
+ ((memq c vc-hg--elisp-metacharacters)
+ (push ?\\ parts)
+ (push c parts))
+ (t (push (or (cdr (assq c vc-hg--pcre-c-escapes)) c) parts)))
+ (setf state 'normal))
+ ((eq state 'charclass-enter)
+ (push c parts)
+ (setf state
+ (if (eq c ?\\)
+ 'charclass
+ 'charclass-backslash)))
+ ((eq state 'charclass-backslash)
+ (if (memq c '(?0 ?x))
+ (signal 'vc-hg-unsupported-syntax (list pcre)))
+ (push (or (cdr (assq c vc-hg--pcre-c-escapes)) c) parts)
+ (setf state 'charclass))
+ ((eq state 'charclass)
+ (push c parts)
+ (cond ((eq c ?\\) (setf state 'charclass-backslash))
+ ((eq c ?\]) (setf state 'normal))))
+ (t (error "invalid state")))
+ (setf i (1+ i))))
+ (unless (eq state 'normal)
+ (signal 'vc-hg-unsupported-syntax (list pcre)))
+ (concat
+ "^"
+ prefix
+ (if anchored "" "\\(?:.*/\\)?")
+ (vc-hg--parts-to-string parts))))
+
+(defun vc-hg--glob-to-pcre (glob)
+ "Transform a glob pattern into a Mercurial file pattern regex."
+ (let ((parts nil) (i 0) (n (length glob)) (group 0) c)
+ (cl-macrolet ((peek () '(and (< i n) (aref glob i))))
+ (while (< i n)
+ (setf c (aref glob i))
+ (cl-incf i)
+ (cond ((not (memq c '(?* ?? ?\[ ?\{ ?\} ?, ?\\)))
+ (push (vc-hg--escape-for-pcre c) parts))
+ ((eq c ?*)
+ (cond ((eq (peek) ?*)
+ (cl-incf i)
+ (cond ((eq (peek) ?/)
+ (cl-incf i)
+ (push "(?:.*/)?" parts))
+ (t
+ (push ".*" parts))))
+ (t (push "[^/]*" parts))))
+ ((eq c ??)
+ (push ?. parts))
+ ((eq c ?\[)
+ (let ((j i))
+ (when (and (< j n) (memq (aref glob j) '(?! ?\])))
+ (cl-incf j))
+ (while (and (< j n) (not (eq (aref glob j) ?\])))
+ (cl-incf j))
+ (cond ((>= j n)
+ (push "\\[" parts))
+ (t
+ (let ((x (substring glob i j)))
+ (setf x (replace-regexp-in-string
+ "\\\\" "\\\\" x t t))
+ (setf i (1+ j))
+ (cond ((eq (aref x 0) ?!)
+ (setf (aref x 0) ?^))
+ ((eq (aref x 0) ?^)
+ (setf x (concat "\\" x))))
+ (push ?\[ parts)
+ (push x parts)
+ (push ?\] parts))))))
+ ((eq c ?\{)
+ (cl-incf group)
+ (push "(?:" parts))
+ ((eq c ?\})
+ (push ?\) parts)
+ (cl-decf group))
+ ((and (eq c ?,) (> group 0))
+ (push ?| parts))
+ ((eq c ?\\)
+ (if (eq i n)
+ (push "\\\\" parts)
+ (cl-incf i)
+ (push ?\\ parts)
+ (push c parts)))
+ (t
+ (push (vc-hg--escape-for-pcre c) parts)))))
+ (concat (vc-hg--parts-to-string parts) "$")))
+
+(defvar vc-hg--hgignore-patterns)
+(defvar vc-hg--hgignore-filenames)
+
+(defun vc-hg--hgignore-add-pcre (pcre prefix)
+ (push (vc-hg--pcre-to-elisp-re pcre prefix) vc-hg--hgignore-patterns))
+
+(defun vc-hg--hgignore-add-glob (glob prefix)
+ (push (vc-hg--pcre-to-elisp-re (vc-hg--glob-to-pcre glob) prefix)
+ vc-hg--hgignore-patterns))
+
+(defun vc-hg--hgignore-add-path (path prefix)
+ (let ((parts nil))
+ (dotimes (i (length path))
+ (push (vc-hg--escape-for-pcre (aref path i)) parts))
+ (vc-hg--hgignore-add-pcre
+ (concat "^" (vc-hg--parts-to-string parts) "$")
+ prefix)))
+
+(defun vc-hg--slurp-hgignore-1 (hgignore prefix)
+ (let ((default-syntax 'vc-hg--hgignore-add-glob))
+ (with-temp-buffer
+ (let ((attr (file-attributes hgignore)))
+ (when attr (insert-file-contents hgignore))
+ (push (list hgignore (nth 5 attr) (nth 7 attr))
+ vc-hg--hgignore-filenames))
+ (while (not (eobp))
+ ;; This list of pattern-file commands isn't complete, but it
+ ;; should cover the common cases. Remember that we fall back
+ ;; to regular hg commands if we see something we don't like.
+ (save-restriction
+ (narrow-to-region (point) (point-at-eol))
+ (cond ((looking-at "[ \t]*\\(?:#.*\\)?$"))
+ ((looking-at "syntax:[ \t]*re[ \t]*$")
+ (setf default-syntax 'vc-hg--hgignore-add-pcre))
+ ((looking-at "syntax:[ \t]*glob[ \t]*$")
+ (setf default-syntax 'vc-hg--hgignore-add-glob))
+ ((looking-at "path:\\(.+?\\)[ \t]*$")
+ (vc-hg--hgignore-add-path (match-string 1) prefix))
+ ((looking-at "glob:\\(.+?\\)[ \t]*$")
+ (vc-hg--hgignore-add-glob (match-string 1) prefix))
+ ((looking-at "re:\\(.+?\\)[ \t]*$")
+ (vc-hg--hgignore-add-pcre (match-string 1) prefix))
+ ((looking-at "\\(sub\\)?include:\\(.+?\\)[ \t]*$")
+ (let* ((sub (equal (match-string 1) "sub"))
+ (arg (match-string 2))
+ (included-file
+ (if (string-match "^/" arg) arg
+ (concat (file-name-directory hgignore) arg))))
+ (vc-hg--slurp-hgignore-1
+ included-file
+ (if sub (file-name-directory included-file) prefix))))
+ ((looking-at "[a-zA-Z0-9_]*:")
+ (signal 'vc-hg-unsupported-syntax (list (match-string 0))))
+ ((looking-at ".*$")
+ (funcall default-syntax (match-string 0) prefix))))
+ (forward-line 1)))))
+
+(cl-defstruct (vc-hg--ignore-patterns
+ (:copier nil)
+ (:constructor vc-hg--ignore-patterns-make))
+ repo
+ ignore-patterns
+ file-sources)
+
+(defun vc-hg--slurp-hgignore (repo)
+ "Read hg ignore patterns from REPO.
+REPO must be the directory name of an hg repository."
+ (cl-assert (string-match "^/\\(.*/\\)?$" repo))
+ (let* ((hgignore (concat repo ".hgignore"))
+ (vc-hg--hgignore-patterns nil)
+ (vc-hg--hgignore-filenames nil))
+ (vc-hg--slurp-hgignore-1 hgignore repo)
+ (vc-hg--ignore-patterns-make
+ :repo repo
+ :ignore-patterns (nreverse vc-hg--hgignore-patterns)
+ :file-sources (nreverse vc-hg--hgignore-filenames))))
+
+(defun vc-hg--ignore-patterns-valid-p (hgip)
+ "Return whether the cached ignore patterns in HGIP are still valid"
+ (let ((valid t)
+ (file-sources (vc-hg--ignore-patterns-file-sources hgip)))
+ (while (and file-sources valid)
+ (let* ((fs (pop file-sources))
+ (saved-mtime (nth 1 fs))
+ (saved-size (nth 2 fs))
+ (attr (file-attributes (nth 0 fs)))
+ (current-mtime (nth 5 attr))
+ (current-size (nth 7 attr)))
+ (unless (and (equal saved-mtime current-mtime)
+ (equal saved-size current-size))
+ (setf valid nil))))
+ valid))
+
+(defun vc-hg--ignore-patterns-ignored-p (hgip filename)
+ "Test whether the ignore pattern set HGIP says to ignore FILENAME.
+FILENAME must be the file's true absolute name."
+ (let ((patterns (vc-hg--ignore-patterns-ignore-patterns hgip))
+ (inhibit-changing-match-data t)
+ (ignored nil))
+ (while (and patterns (not ignored))
+ (setf ignored (string-match (pop patterns) filename)))
+ ignored))
+
+(defun vc-hg--time-to-fixnum (ts)
+ (+ (* 65536 (car ts)) (cadr ts)))
+
+(defvar vc-hg--cached-ignore-patterns nil
+ "Cached pre-parsed hg ignore patterns.")
+
+(defun vc-hg--file-ignored-p (repo repo-relative-filename)
+ (let ((hgip vc-hg--cached-ignore-patterns))
+ (unless (and hgip
+ (equal repo (vc-hg--ignore-patterns-repo hgip))
+ (vc-hg--ignore-patterns-valid-p hgip))
+ (setf vc-hg--cached-ignore-patterns nil)
+ (setf hgip (vc-hg--slurp-hgignore repo))
+ (setf vc-hg--cached-ignore-patterns hgip))
+ (vc-hg--ignore-patterns-ignored-p
+ hgip
+ (concat repo repo-relative-filename))))
+
+(defun vc-hg--read-repo-requirements (repo)
+ (cl-assert (string-match "^/\\(.*/\\)?$" repo))
+ (let* ((requires-filename (concat repo ".hg/requires")))
+ (and (file-exists-p requires-filename)
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (insert-file-contents-literally requires-filename)
+ (split-string (buffer-substring-no-properties
+ (point-min) (point-max)))))))
+
+(defconst vc-hg-supported-requirements
+ '("dotencode"
+ "fncache"
+ "generaldelta"
+ "lz4revlog"
+ "remotefilelog"
+ "revlogv1"
+ "store")
+ "List of Mercurial repository requirements we understand; if a
+repository requires features not present in this list, we avoid
+attempting to parse Mercurial data structures.")
+
+(defun vc-hg--requirements-understood-p (repo)
+ "Check that we understand the format of the given repository.
+REPO is the directory name of a Mercurial repository."
+ (null (cl-set-difference (vc-hg--read-repo-requirements repo)
+ vc-hg-supported-requirements
+ :test #'equal)))
+
+(defvar vc-hg--dirstate-scan-cache nil
+ "Cache of the last result of `vc-hg--raw-dirstate-search'.
+Avoids the need to repeatedly scan dirstate on repeated calls to
+`vc-hg-state', as we see during registration queries.")
+
+(defun vc-hg--cached-dirstate-search (dirstate dirstate-attr ascii-fname)
+ (let* ((mtime (nth 5 dirstate-attr))
+ (size (nth 7 dirstate-attr))
+ (cache vc-hg--dirstate-scan-cache)
+ )
+ (if (and cache
+ (equal dirstate (pop cache))
+ (equal mtime (pop cache))
+ (equal size (pop cache))
+ (equal ascii-fname (pop cache)))
+ (pop cache)
+ (let ((result (vc-hg--raw-dirstate-search dirstate ascii-fname)))
+ (setf vc-hg--dirstate-scan-cache
+ (list dirstate mtime size ascii-fname result))
+ result))))
+
+(defun vc-hg-state-fast (filename)
+ "Like `vc-hg-state', but parse internal data structures directly.
+Returns one of the usual `vc-state' enumeration values or
+`unsupported' if we need to take the slow path and run the
+hg binary."
+ (let* (truename
+ repo
+ dirstate
+ dirstate-attr
+ repo-relative-filename
+ ascii-fname)
+ (if (or
+ ;; Explicit user disable
+ (not vc-hg-parse-hg-data-structures)
+ ;; It'll probably be faster to run hg remotely
+ (file-remote-p filename)
+ (progn
+ (setf truename (file-truename filename))
+ (file-remote-p truename))
+ (not (setf repo (vc-hg-root truename)))
+ ;; dirstate must exist
+ (not (progn
+ (setf repo (expand-file-name repo))
+ (cl-assert (string-match "^/\\(.*/\\)?$" repo))
+ (setf dirstate (concat repo ".hg/dirstate"))
+ (setf dirstate-attr (file-attributes dirstate))))
+ ;; Repository must be in an understood format
+ (not (vc-hg--requirements-understood-p repo))
+ ;; Dirstate too small to be valid
+ (< (nth 7 dirstate-attr) 40)
+ ;; We want to store 32-bit unsigned values in fixnums
+ (< most-positive-fixnum 4294967295)
+ (progn
+ (setf repo-relative-filename
+ (file-relative-name truename repo))
+ (setf ascii-fname
+ (string-as-unibyte
+ (let (last-coding-system-used)
+ (encode-coding-string
+ repo-relative-filename
+ 'us-ascii t))))
+ ;; We only try dealing with ASCII filenames
+ (not (equal ascii-fname repo-relative-filename))))
+ 'unsupported
+ (let* ((dirstate-entry
+ (vc-hg--cached-dirstate-search
+ dirstate dirstate-attr ascii-fname))
+ (state (car dirstate-entry))
+ (stat (file-attributes
+ (concat repo repo-relative-filename))))
+ (cond ((eq state ?r) 'removed)
+ ((and (not state) stat)
+ (condition-case nil
+ (if (vc-hg--file-ignored-p repo repo-relative-filename)
+ 'ignored
+ 'unregistered)
+ (vc-hg-unsupported-syntax 'unsupported)))
+ ((and state (not stat)) 'missing)
+ ((eq state ?n)
+ (let ((vc-hg-size (nth 2 dirstate-entry))
+ (vc-hg-mtime (nth 3 dirstate-entry))
+ (fs-size (nth 7 stat))
+ (fs-mtime (vc-hg--time-to-fixnum (nth 5 stat))))
+ (if (and (eql vc-hg-size fs-size) (eql vc-hg-mtime fs-mtime))
+ 'up-to-date
+ 'edited)))
+ ((eq state ?a) 'added)
+ (state 'unsupported))))))
+
;;; Miscellaneous
(defun vc-hg-previous-revision (_file rev)
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index b3644cc1ac..f59b4632e7 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -206,17 +206,17 @@ VC commands are globally reachable under the prefix `\\[vc-prefix-map]':
(not (memq property vc-touched-properties)))
(setq vc-touched-properties (append (list property)
vc-touched-properties)))
- (put (intern file vc-file-prop-obarray) property value))
+ (put (intern (expand-file-name file) vc-file-prop-obarray) property value))
(defun vc-file-getprop (file property)
"Get per-file VC PROPERTY for FILE."
- (get (intern file vc-file-prop-obarray) property))
+ (get (intern (expand-file-name file) vc-file-prop-obarray) property))
(defun vc-file-clearprops (file)
"Clear all VC properties of FILE."
(if (boundp 'vc-parent-buffer)
(kill-local-variable 'vc-parent-buffer))
- (setplist (intern file vc-file-prop-obarray) nil))
+ (setplist (intern (expand-file-name file) vc-file-prop-obarray) nil))
;; We keep properties on each symbol naming a backend as follows:
@@ -394,7 +394,7 @@ For registered files, the possible values are:
(defun vc-user-login-name (file)
"Return the name under which the user accesses the given FILE."
- (or (and (eq (string-match tramp-file-name-regexp file) 0)
+ (or (and (file-remote-p file)
;; tramp case: execute "whoami" via tramp
(let ((default-directory (file-name-directory file))
process-file-side-effects)
@@ -468,16 +468,20 @@ status of this file. Otherwise, the value returned is one of:
`unregistered' The file is not under version control."
- ;; Note: in Emacs 22 and older, return of nil meant the file was
- ;; unregistered. This is potentially a source of
- ;; backward-compatibility bugs.
+ ;; Note: we usually return nil here for unregistered files anyway
+ ;; when called with only one argument. This doesn't seem to cause
+ ;; any problems. But if we wanted to change that, we should
+ ;; probably opt for redefining the `registered' command to return
+ ;; non-nil even for unregistered files (maybe also rename it), and
+ ;; then make sure that all `state' implementations handle
+ ;; unregistered file appropriately.
;; FIXME: New (sub)states needed (?):
;; - `copied' and `moved' (might be handled by `removed' and `added')
(or (vc-file-getprop file 'vc-state)
(when (> (length file) 0) ;Why?? --Stef
- (setq backend (or backend (vc-backend file)))
- (when backend
+ (setq backend (or backend (vc-backend file)))
+ (when backend
(vc-state-refresh file backend)))))
(defun vc-state-refresh (file backend)
@@ -495,10 +499,11 @@ status of this file. Otherwise, the value returned is one of:
If FILE is not registered, this function always returns nil."
(or (vc-file-getprop file 'vc-working-revision)
(progn
- (setq backend (or backend (vc-backend file)))
- (when backend
- (vc-file-setprop file 'vc-working-revision
- (vc-call-backend backend 'working-revision file))))))
+ (setq backend (or backend (vc-backend file)))
+ (when backend
+ (vc-file-setprop file 'vc-working-revision
+ (vc-call-backend
+ backend 'working-revision file))))))
;; Backward compatibility.
(define-obsolete-function-alias
@@ -807,15 +812,15 @@ In the latter case, VC mode is deactivated for this buffer."
(add-hook 'vc-mode-line-hook 'vc-mode-line nil t)
(let (backend)
(cond
- ((setq backend (with-demoted-errors (vc-backend buffer-file-name)))
+ ((setq backend (with-demoted-errors (vc-backend buffer-file-name)))
+ ;; Let the backend setup any buffer-local things he needs.
+ (vc-call-backend backend 'find-file-hook)
;; Compute the state and put it in the mode line.
(vc-mode-line buffer-file-name backend)
(unless vc-make-backup-files
;; Use this variable, not make-backup-files,
;; because this is for things that depend on the file name.
- (set (make-local-variable 'backup-inhibited) t))
- ;; Let the backend setup any buffer-local things he needs.
- (vc-call-backend backend 'find-file-hook))
+ (set (make-local-variable 'backup-inhibited) t)))
((let* ((truename (and buffer-file-truename
(expand-file-name buffer-file-truename)))
(link-type (and truename
diff --git a/lisp/vc/vc-rcs.el b/lisp/vc/vc-rcs.el
index 8d58611cb5..fcb1849d74 100644
--- a/lisp/vc/vc-rcs.el
+++ b/lisp/vc/vc-rcs.el
@@ -41,6 +41,13 @@
(require 'cl-lib)
(require 'vc))
+(declare-function vc-branch-p "vc" (rev))
+(declare-function vc-read-revision "vc"
+ (prompt &optional files backend default initial-input))
+(declare-function vc-buffer-context "vc-dispatcher" ())
+(declare-function vc-restore-buffer-context "vc-dispatcher" (context))
+(declare-function vc-setup-buffer "vc-dispatcher" (buf))
+
(defgroup vc-rcs nil
"VC RCS backend."
:version "24.1"
@@ -120,7 +127,9 @@ For a description of possible values, see `vc-check-master-templates'."
(setq result (vc-file-getprop file 'vc-checkout-model)))
(or result
(progn (vc-rcs-fetch-master-state file)
- (vc-file-getprop file 'vc-checkout-model)))))
+ (vc-file-getprop file 'vc-checkout-model))
+ ;; For non-existing files we assume strict locking.
+ 'locking)))
;;;
;;; State-querying functions
diff --git a/lisp/vc/vc-src.el b/lisp/vc/vc-src.el
index 2329042804..8b82b56a6c 100644
--- a/lisp/vc/vc-src.el
+++ b/lisp/vc/vc-src.el
@@ -85,6 +85,8 @@
(require 'cl-lib)
(require 'vc))
+(declare-function vc-setup-buffer "vc-dispatcher" (buf))
+
(defgroup vc-src nil
"VC SRC backend."
:version "25.1"
diff --git a/lisp/version.el b/lisp/version.el
index 77188a51ee..d4cb92ec86 100644
--- a/lisp/version.el
+++ b/lisp/version.el
@@ -38,13 +38,11 @@ This variable first existed in version 19.23.")
"Minor version number of this version of Emacs.
This variable first existed in version 19.23.")
-(defconst emacs-build-time (current-time)
- "Time at which Emacs was dumped out.")
-
-;; I think this should be obsoleted/removed. It's just one more meaningless
-;; difference between different builds. It's usually not even an fqdn.
(defconst emacs-build-system (system-name)
- "Name of the system on which Emacs was built.")
+ "Name of the system on which Emacs was built, or nil if not available.")
+
+(defconst emacs-build-time (if emacs-build-system (current-time))
+ "Time at which Emacs was dumped out, or nil if not available.")
(defvar motif-version-string)
(defvar gtk-version-string)
@@ -58,9 +56,7 @@ Don't use this function in programs to choose actions according
to the system configuration; look at `system-configuration' instead."
(interactive "P")
(let ((version-string
- (format (if (not (called-interactively-p 'interactive))
- "GNU Emacs %s (%s%s%s%s)\n of %s"
- "GNU Emacs %s (%s%s%s%s) of %s")
+ (format "GNU Emacs %s (%s%s%s%s)%s"
emacs-version
system-configuration
(cond ((featurep 'motif)
@@ -79,7 +75,14 @@ to the system configuration; look at `system-configuration' instead."
(format ", %s scroll bars"
(capitalize (symbol-name x-toolkit-scroll-bars)))
"")
- (format-time-string "%Y-%m-%d" emacs-build-time))))
+ (if emacs-build-time
+ (format-time-string (concat
+ (if (called-interactively-p
+ 'interactive)
+ "" "\n")
+ " of %Y-%m-%d")
+ emacs-build-time)
+ ""))))
(if here
(insert version-string)
(if (called-interactively-p 'interactive)
@@ -113,18 +116,6 @@ or if we could not determine the revision.")
(looking-at "[0-9a-fA-F]\\{40\\}"))
(match-string 0)))))
-(defun emacs-repository--version-git-1 (file dir)
- "Internal subroutine of `emacs-repository-get-version'."
- (when (file-readable-p file)
- (with-temp-buffer
- (insert-file-contents file)
- (cond ((looking-at "[0-9a-fA-F]\\{40\\}")
- (match-string 0))
- ((looking-at "ref: \\(.*\\)")
- (emacs-repository--version-git-1
- (expand-file-name (match-string 1) dir)
- dir))))))
-
(defun emacs-repository-get-version (&optional dir external)
"Try to return as a string the repository revision of the Emacs sources.
The format of the returned string is dependent on the VCS in use.
@@ -134,42 +125,8 @@ this reports on the current state of the sources, which may not
correspond to the running Emacs.
Optional argument DIR is a directory to use instead of `source-directory'.
-Optional argument EXTERNAL non-nil means to just ask the VCS itself,
-if the sources appear to be under version control. Otherwise only ask
-the VCS if we cannot find any information ourselves."
- (or dir (setq dir source-directory))
- (let* ((base-dir (expand-file-name ".git" dir))
- (in-main-worktree (file-directory-p base-dir))
- (in-linked-worktree nil)
- sub-dir)
- ;; If the sources are in a linked worktree, .git is a file that points to
- ;; the location of the main worktree and the repo's administrative files.
- (when (and (not in-main-worktree)
- (file-regular-p base-dir)
- (file-readable-p base-dir))
- (with-temp-buffer
- (insert-file-contents base-dir)
- (when (looking-at "gitdir: \\(.*\.git\\)\\(.*\\)$")
- (setq base-dir (match-string 1)
- sub-dir (concat base-dir (match-string 2))
- in-linked-worktree t))))
- ;; We've found a worktree, either main or linked.
- (when (or in-main-worktree in-linked-worktree)
- (if external
- (emacs-repository-version-git dir)
- (or (if in-linked-worktree
- (emacs-repository--version-git-1
- (expand-file-name "HEAD" sub-dir) base-dir)
- (let ((files '("HEAD" "refs/heads/master"))
- file rev)
- (while (and (not rev)
- (setq file (car files)))
- (setq file (expand-file-name file base-dir)
- files (cdr files)
- rev (emacs-repository--version-git-1 file base-dir)))
- rev))
- ;; AFAICS this doesn't work during dumping (bug#20799).
- (emacs-repository-version-git dir))))))
+Optional argument EXTERNAL is ignored."
+ (emacs-repository-version-git (or dir source-directory)))
;; We put version info into the executable in the form that `ident' uses.
(purecopy (concat "\n$Id: " (subst-char-in-string ?\n ?\s (emacs-version))
diff --git a/lisp/w32-fns.el b/lisp/w32-fns.el
index 0f31c4a668..3c524e76d4 100644
--- a/lisp/w32-fns.el
+++ b/lisp/w32-fns.el
@@ -121,7 +121,7 @@ You should set this to t when using a non-system shell.\n\n"))))
(add-hook 'after-init-hook 'w32-check-shell-configuration)
;; Override setting chosen at startup.
-(defun set-default-process-coding-system ()
+(defun w32-set-default-process-coding-system ()
;; Most programs on Windows will accept Unix line endings on input
;; (and some programs ported from Unix require it) but most will
;; produce DOS line endings on output.
@@ -142,8 +142,9 @@ You should set this to t when using a non-system shell.\n\n"))))
. ,(if (default-value 'enable-multibyte-characters)
'(undecided-dos . undecided-dos)
'(raw-text-dos . raw-text-dos)))))
-
-(add-hook 'before-init-hook 'set-default-process-coding-system)
+(define-obsolete-function-alias 'set-default-process-coding-system
+ #'w32-set-default-process-coding-system "25.2")
+(add-hook 'before-init-hook #'w32-set-default-process-coding-system)
;;; Basic support functions for managing Emacs's locale setting
@@ -200,8 +201,7 @@ certain patterns.
This function is called by `convert-standard-filename'.
Replace invalid characters and turn Cygwin names into native
-names, and also turn slashes into backslashes if the shell
-requires it (see `w32-shell-dos-semantics')."
+names."
(save-match-data
(let ((name
(if (string-match "\\`/cygdrive/\\([a-zA-Z]\\)/" filename)
@@ -216,16 +216,9 @@ requires it (see `w32-shell-dos-semantics')."
(while (string-match "[?*:<>|\"\000-\037]" name start)
(aset name (match-beginning 0) ?!)
(setq start (match-end 0)))
- ;; convert directory separators to Windows format
- ;; (but only if the shell in use requires it)
- (when (w32-shell-dos-semantics)
- (setq start 0)
- (while (string-match "/" name start)
- (aset name (match-beginning 0) ?\\)
- (setq start (match-end 0))))
name)))
-(defun set-w32-system-coding-system (coding-system)
+(defun w32-set-system-coding-system (coding-system)
"Set the coding system used by the Windows system to CODING-SYSTEM.
This is used for things like passing font names with non-ASCII
characters in them to the system. For a list of possible values of
@@ -241,6 +234,8 @@ This function is provided for backward compatibility, since
default))))
(check-coding-system coding-system)
(setq locale-coding-system coding-system))
+(define-obsolete-function-alias 'set-w32-system-coding-system
+ #'w32-set-system-coding-system "25.2")
;; locale-coding-system was introduced to do the same thing as
;; w32-system-coding-system. Use that instead.
diff --git a/lisp/wdired.el b/lisp/wdired.el
index 16ea67dba5..5b23f843e0 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -1,4 +1,4 @@
-;;; wdired.el --- Rename files editing their names in dired buffers
+;;; wdired.el --- Rename files editing their names in dired buffers -*- coding: utf-8; -*-
;; Copyright (C) 2004-2016 Free Software Foundation, Inc.
@@ -152,6 +152,16 @@ renamed by `dired-do-rename' and `dired-do-rename-regexp'."
:version "24.3"
:group 'wdired)
+(defcustom wdired-create-parent-directories t
+ "If non-nil, create parent directories of destination files.
+If non-nil, when you rename a file to a destination path within a
+nonexistent directory, wdired will create any parent directories
+necessary. When nil, attempts to rename a file into a
+nonexistent directory will fail."
+ :version "25.2"
+ :type 'boolean
+ :group 'wdired)
+
(defvar wdired-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\C-x\C-s" 'wdired-finish-edit)
@@ -492,6 +502,8 @@ non-nil means return old filename."
(require 'dired-aux)
(condition-case err
(let ((dired-backup-overwrite nil))
+ (and wdired-create-parent-directories
+ (wdired-create-parentdirs file-new))
(dired-rename-file file-ori file-new
overwrite))
(error
@@ -501,6 +513,11 @@ non-nil means return old filename."
err)))))))))
errors))
+(defun wdired-create-parentdirs (file-new)
+ "Create parent directories for FILE-NEW if they don't exist."
+ (and (not (file-exists-p (file-name-directory file-new)))
+ (message "Creating directory for file %s" file-new)
+ (make-directory (file-name-directory file-new) t)))
(defun wdired-exit ()
"Exit wdired and return to dired mode.
@@ -573,7 +590,7 @@ Optional arguments are ignored."
"Move down lines then position at filename or the current column.
See `wdired-use-dired-vertical-movement'. Optional prefix ARG
says how many lines to move; default is one line."
- (interactive "p")
+ (interactive "^p")
(with-no-warnings (next-line arg))
(if (or (eq wdired-use-dired-vertical-movement t)
(and wdired-use-dired-vertical-movement
@@ -586,7 +603,7 @@ says how many lines to move; default is one line."
"Move up lines then position at filename or the current column.
See `wdired-use-dired-vertical-movement'. Optional prefix ARG
says how many lines to move; default is one line."
- (interactive "p")
+ (interactive "^p")
(with-no-warnings (previous-line arg))
(if (or (eq wdired-use-dired-vertical-movement t)
(and wdired-use-dired-vertical-movement
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index f0054be4c8..10b10456f3 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -102,8 +102,6 @@ This exists as a variable so it can be set locally in certain buffers.")
"Face used for documentation text."
:group 'widget-documentation
:group 'widget-faces)
-(define-obsolete-face-alias 'widget-documentation-face
- 'widget-documentation "22.1")
(defvar widget-button-face 'widget-button
"Face used for buttons in widgets.
@@ -112,7 +110,6 @@ This exists as a variable so it can be set locally in certain buffers.")
(defface widget-button '((t (:weight bold)))
"Face used for widget buttons."
:group 'widget-faces)
-(define-obsolete-face-alias 'widget-button-face 'widget-button "22.1")
(defcustom widget-mouse-face 'highlight
"Face used for widget buttons when the mouse is above them."
@@ -135,7 +132,6 @@ This exists as a variable so it can be set locally in certain buffers.")
:slant italic))
"Face used for editable fields."
:group 'widget-faces)
-(define-obsolete-face-alias 'widget-field-face 'widget-field "22.1")
(defface widget-single-line-field '((((type tty))
:background "green3"
@@ -150,8 +146,6 @@ This exists as a variable so it can be set locally in certain buffers.")
:slant italic))
"Face used for editable fields spanning only a single line."
:group 'widget-faces)
-(define-obsolete-face-alias 'widget-single-line-field-face
- 'widget-single-line-field "22.1")
;;; This causes display-table to be loaded, and not usefully.
;;;(defvar widget-single-line-display-table
@@ -427,8 +421,6 @@ the :notify function can't know the new value.")
'((t :inherit shadow))
"Face used for inactive widgets."
:group 'widget-faces)
-(define-obsolete-face-alias 'widget-inactive-face
- 'widget-inactive "22.1")
(defun widget-specify-inactive (widget from to)
"Make WIDGET inactive for user modifications."
@@ -905,8 +897,6 @@ Note that such modes will need to require wid-edit.")
(:weight bold :underline t)))
"Face used for pressed buttons."
:group 'widget-faces)
-(define-obsolete-face-alias 'widget-button-pressed-face
- 'widget-button-pressed "22.1")
(defvar widget-button-click-moves-point nil
"If non-nil, `widget-button-click' moves point to a button after invoking it.
@@ -1789,7 +1779,13 @@ If END is omitted, it defaults to the length of LIST."
"An embedded link."
:button-prefix 'widget-link-prefix
:button-suffix 'widget-link-suffix
- :follow-link 'mouse-face
+ ;; The `follow-link' property should only be used in those contexts where the
+ ;; mouse-1 event normally doesn't follow the link, yet the `link' widget
+ ;; seems to almost always be used in contexts where (down-)mouse-1 is bound
+ ;; to `widget-button-click' and hence the "mouse-1 to mouse-2" remapping is
+ ;; not necessary (and can even be harmful). So let's not add a :follow-link
+ ;; by default. See (bug#22434).
+ ;; :follow-link 'mouse-face
:help-echo "Follow the link."
:format "%[%t%]")
diff --git a/lisp/widget.el b/lisp/widget.el
index 2db645ab08..54507cdc41 100644
--- a/lisp/widget.el
+++ b/lisp/widget.el
@@ -68,7 +68,6 @@
;; :button-face-get :button-face :value-face :keymap :entry-from
;; :entry-to :help-echo :documentation-property :tab-order)
-(put 'define-widget 'doc-string-elt 3) ;`declare' doesn't work in functions.
(defun define-widget (name class doc &rest args)
"Define a new widget type named NAME from CLASS.
@@ -80,9 +79,10 @@ create identical widgets:
* (widget-create NAME)
-* (apply \\='widget-create CLASS ARGS)
+* (apply #\\='widget-create CLASS ARGS)
The third argument DOC is a documentation string for the widget."
+ (declare (doc-string 3))
;;
(unless (or (null doc) (stringp doc))
(error "widget documentation must be nil or a string."))
@@ -91,7 +91,7 @@ The third argument DOC is a documentation string for the widget."
name)
;; This is used by external widget code (in W3, at least).
-(defalias 'widget-plist-member 'plist-member)
+(define-obsolete-function-alias 'widget-plist-member #'plist-member "25.2")
;;; The End.
diff --git a/lisp/window.el b/lisp/window.el
index 8505bef6b1..cfa10ea1b0 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -1,4 +1,4 @@
-;;; window.el --- GNU Emacs window commands aside from those written in C
+;;; window.el --- GNU Emacs window commands aside from those written in C -*- lexical-binding:t -*-
;; Copyright (C) 1985, 1989, 1992-1994, 2000-2016 Free Software
;; Foundation, Inc.
@@ -1333,10 +1333,8 @@ return the minimum pixel-size of WINDOW."
(window--min-size-1
(window-normalize-window window) horizontal ignore pixelwise))
-(defun window--min-size-ignore-p (window horizontal ignore)
- "Return non-nil if IGNORE says to ignore height restrictions for WINDOW.
-HORIZONTAL non-nil means to return non-nil if IGNORE says to
-ignore width restrictions for WINDOW."
+(defun window--min-size-ignore-p (window ignore)
+ "Return non-nil if IGNORE says to ignore height restrictions for WINDOW."
(if (window-valid-p ignore)
(eq window ignore)
(not (memq ignore '(nil preserved)))))
@@ -1407,12 +1405,12 @@ ignore width restrictions for WINDOW."
pixel-width
;; Round up to next integral of columns.
(* (ceiling pixel-width char-size) char-size))
- (if (window--min-size-ignore-p window horizontal ignore)
+ (if (window--min-size-ignore-p window ignore)
0
(window-min-pixel-width window)))
(max
(ceiling pixel-width char-size)
- (if (window--min-size-ignore-p window horizontal ignore)
+ (if (window--min-size-ignore-p window ignore)
0
window-min-width)))))
((let ((char-size (frame-char-size window))
@@ -1428,11 +1426,11 @@ ignore width restrictions for WINDOW."
pixel-height
;; Round up to next integral of lines.
(* (ceiling pixel-height char-size) char-size))
- (if (window--min-size-ignore-p window horizontal ignore)
+ (if (window--min-size-ignore-p window ignore)
0
(window-min-pixel-height window)))
(max (ceiling pixel-height char-size)
- (if (window--min-size-ignore-p window horizontal ignore)
+ (if (window--min-size-ignore-p window ignore)
0
window-min-height))))))))))
@@ -3140,8 +3138,8 @@ routines."
pixel-delta
(/ pixel-delta (frame-char-height frame)))))
-(defun window--sanitize-window-sizes (frame horizontal)
- "Assert that all windows on FRAME are large enough.
+(defun window--sanitize-window-sizes (horizontal)
+ "Assert that all windows on selected frame are large enough.
If necessary and possible, make sure that every window on frame
FRAME has its minimum height. Optional argument HORIZONTAL
non-nil means to make sure that every window on frame FRAME has
@@ -3519,8 +3517,7 @@ ABSOLUTE is non-nil, PIXELWISE is implicitly non-nil too."
(bottom (+ top (if pixelwise
(window-pixel-height window)
(window-total-height window))))
- (bottom-body (and body (+ top-body (window-body-height window t))))
- left-off right-off)
+ (bottom-body (and body (+ top-body (window-body-height window t)))))
(if absolute
(let* ((native-edges (frame-edges frame 'native-edges))
(left-off (nth 0 native-edges))
@@ -4889,7 +4886,7 @@ frame. The selected window is not changed by this function."
;; Sanitize sizes unless SIZE was specified.
(unless size
- (window--sanitize-window-sizes frame horizontal))
+ (window--sanitize-window-sizes horizontal))
(run-window-configuration-change-hook frame)
(run-window-scroll-functions new)
@@ -5511,7 +5508,9 @@ value can be also stored on disk and read back in a new session."
;; Install positions (maybe we should do this after all
;; windows have been created and sized).
(ignore-errors
- (set-window-start window (cdr (assq 'start state)))
+ ;; Set 'noforce argument to avoid that window start
+ ;; overrides window point set below (Bug#24240).
+ (set-window-start window (cdr (assq 'start state)) 'noforce)
(set-window-point window (cdr (assq 'point state))))
;; Select window if it's the selected one.
(when (cdr (assq 'selected state))
@@ -6757,6 +6756,70 @@ that frame."
(unless (cdr (assq 'inhibit-switch-frame alist))
(window--maybe-raise-frame (window-frame window)))))))
+(defun display-buffer-reuse-mode-window (buffer alist)
+ "Return a window based on the mode of the buffer it displays.
+Display BUFFER in the returned window. Return nil if no usable
+window is found.
+
+If ALIST contains a `mode' entry, its value is a major mode (a
+symbol) or a list of modes. A window is a candidate if it
+displays a buffer that derives from one of the given modes. When
+ALIST contains no `mode' entry, the current major mode of BUFFER
+is used.
+
+The behavior is also controlled by entries for
+`inhibit-same-window', `reusable-frames' and
+`inhibit-switch-frame' as is done in the function
+`display-buffer-reuse-window'."
+ (let* ((alist-entry (assq 'reusable-frames alist))
+ (alist-mode-entry (assq 'mode alist))
+ (frames (cond (alist-entry (cdr alist-entry))
+ ((if (eq pop-up-frames 'graphic-only)
+ (display-graphic-p)
+ pop-up-frames)
+ 0)
+ (display-buffer-reuse-frames 0)
+ (t (last-nonminibuffer-frame))))
+ (inhibit-same-window-p (cdr (assq 'inhibit-same-window alist)))
+ (windows (window-list-1 nil 'nomini frames))
+ (buffer-mode (with-current-buffer buffer major-mode))
+ (allowed-modes (if alist-mode-entry
+ (cdr alist-mode-entry)
+ buffer-mode))
+ (curwin (selected-window))
+ (curframe (selected-frame)))
+ (unless (listp allowed-modes)
+ (setq allowed-modes (list allowed-modes)))
+ (let (same-mode-same-frame
+ same-mode-other-frame
+ derived-mode-same-frame
+ derived-mode-other-frame)
+ (dolist (window windows)
+ (let ((mode?
+ (with-current-buffer (window-buffer window)
+ (cond ((memq major-mode allowed-modes)
+ 'same)
+ ((derived-mode-p allowed-modes)
+ 'derived)))))
+ (when (and mode?
+ (not (and inhibit-same-window-p
+ (eq window curwin))))
+ (push window (if (eq curframe (window-frame window))
+ (if (eq mode? 'same)
+ same-mode-same-frame
+ derived-mode-same-frame)
+ (if (eq mode? 'same)
+ same-mode-other-frame
+ derived-mode-other-frame))))))
+ (let ((window (car (nconc same-mode-same-frame
+ same-mode-other-frame
+ derived-mode-same-frame
+ derived-mode-other-frame))))
+ (when (window-live-p window)
+ (prog1 (window--display-buffer buffer window 'reuse alist)
+ (unless (cdr (assq 'inhibit-switch-frame alist))
+ (window--maybe-raise-frame (window-frame window)))))))))
+
(defun display-buffer--special-action (buffer)
"Return special display action for BUFFER, if any.
If `special-display-p' returns non-nil for BUFFER, return an
@@ -6829,7 +6892,6 @@ raising the frame."
(defun display-buffer--maybe-pop-up-frame-or-window (buffer alist)
"Try displaying BUFFER based on `pop-up-frames' or `pop-up-windows'.
-
If `pop-up-frames' is non-nil (and not `graphic-only' on a
text-only terminal), try with `display-buffer-pop-up-frame'.
@@ -6844,8 +6906,11 @@ again with `display-buffer-pop-up-window'."
(defun display-buffer-below-selected (buffer alist)
"Try displaying BUFFER in a window below the selected window.
-This either splits the selected window or reuses the window below
-the selected one."
+If there is a window below the selected one and that window
+already displays BUFFER, use that window. Otherwise, try to
+create a new window below the selected one and show BUFFER there.
+If that attempt fails as well and there is a non-dedicated window
+below the selected one, use that window."
(let (window)
(or (and (setq window (window-in-direction 'below))
(eq buffer (window-buffer window))
@@ -7093,7 +7158,7 @@ buffer with the name BUFFER-OR-NAME and return that buffer."
buffer))
(other-buffer)))
-(defcustom switch-to-buffer-preserve-window-point nil
+(defcustom switch-to-buffer-preserve-window-point t
"If non-nil, `switch-to-buffer' tries to preserve `window-point'.
If this is nil, `switch-to-buffer' displays the buffer at that
buffer's `point'. If this is `already-displayed', it tries to
@@ -7111,7 +7176,7 @@ the selected window or never appeared in it before, or if
(const :tag "If already displayed elsewhere" already-displayed)
(const :tag "Always" t))
:group 'windows
- :version "24.3")
+ :version "25.2")
(defcustom switch-to-buffer-in-dedicated-window nil
"Allow switching to buffer in strongly dedicated windows.
@@ -7494,8 +7559,7 @@ FRAME."
(setq frame (window-normalize-frame frame))
(when (window-live-p (frame-root-window frame))
(with-selected-window (frame-root-window frame)
- (let* ((window (frame-root-window frame))
- (char-width (frame-char-width))
+ (let* ((char-width (frame-char-width))
(char-height (frame-char-height))
(monitor-attributes (car (display-monitor-attributes-list
(frame-parameter frame 'display))))
@@ -7542,8 +7606,6 @@ FRAME."
;; and the window's body width. This is the space we can't
;; use for fitting.
(extra-width (- frame-width window-body-width))
- ;; The maximum width we can use for fitting.
- (fit-width (- workarea-width extra-width))
;; The pixel position of FRAME's left border. We usually
;; try to leave this alone.
(left
@@ -7562,23 +7624,6 @@ FRAME."
;; The difference in pixels between the frame's pixel
;; height and the window's height.
(extra-height (- frame-height window-height))
- ;; When tool-bar-mode is enabled and we just created a new
- ;; frame, reserve lines for toolbar resizing. Needed
- ;; because for reasons unknown to me Emacs (1) reserves one
- ;; line for the toolbar when making the initial frame and
- ;; toolbars are enabled, and (2) later adds the remaining
- ;; lines needed. Our code runs IN BETWEEN (1) and (2).
- ;; YMMV when you're on a system that behaves differently.
- (toolbar-extra-height
- (let ((quit-restore (window-parameter window 'quit-restore))
- ;; This may have to change when we allow arbitrary
- ;; pixel height toolbars.
- (lines (tool-bar-height)))
- (* char-height
- (if (and quit-restore (eq (car quit-restore) 'frame)
- (not (zerop lines)))
- (1- lines)
- 0))))
;; The pixel position of FRAME's top border.
(top
(let ((top (frame-parameter nil 'top)))
@@ -8500,9 +8545,9 @@ overrides the global or buffer-local value of
:group 'windows
:version "25.1")
-(defun window-adjust-process-window-size (reducer process windows)
- "Adjust the process window size of PROCESS.
-WINDOWS is a list of windows associated with PROCESS. REDUCER is
+(defun window-adjust-process-window-size (reducer windows)
+ "Adjust the window sizes of a process.
+WINDOWS is a list of windows associated with that process. REDUCER is
a two-argument function used to combine the widths and heights of
the given windows."
(when windows
@@ -8513,17 +8558,17 @@ the given windows."
(setf height (funcall reducer height (window-body-height window))))
(cons width height))))
-(defun window-adjust-process-window-size-smallest (process windows)
+(defun window-adjust-process-window-size-smallest (_process windows)
"Adjust the process window size of PROCESS.
WINDOWS is a list of windows associated with PROCESS. Choose the
smallest area available for displaying PROCESS's output."
- (window-adjust-process-window-size #'min process windows))
+ (window-adjust-process-window-size #'min windows))
-(defun window-adjust-process-window-size-largest (process windows)
+(defun window-adjust-process-window-size-largest (_process windows)
"Adjust the process window size of PROCESS.
WINDOWS is a list of windows associated with PROCESS. Choose the
largest area available for displaying PROCESS's output."
- (window-adjust-process-window-size #'max process windows))
+ (window-adjust-process-window-size #'max windows))
(defun window--process-window-list ()
"Return an alist mapping processes to associated windows.
diff --git a/lisp/woman.el b/lisp/woman.el
index a4a0da209c..9c3fb2ab4c 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -414,9 +414,8 @@
(substring arg 0 (match-end 1))
arg))))
-(require 'cl-lib)
-
(eval-when-compile ; to avoid compiler warnings
+ (require 'cl-lib)
(require 'dired)
(require 'apropos))
@@ -434,7 +433,7 @@ As a special case, if PATHS is nil then replace it by calling
(mapcar 'woman-Cyg-to-Win (woman-parse-man.conf)))
((string-match-p ";" paths)
;; Assume DOS-style path-list...
- (cl-mapcan ; splice list into list
+ (mapcan ; splice list into list
(lambda (x)
(if x
(list x)
@@ -445,14 +444,14 @@ As a special case, if PATHS is nil then replace it by calling
(list paths))
(t
;; Assume UNIX/Cygwin-style path-list...
- (cl-mapcan ; splice list into list
+ (mapcan ; splice list into list
(lambda (x)
(mapcar 'woman-Cyg-to-Win
(if x (list x) (woman-parse-man.conf))))
(let ((path-separator ":"))
(parse-colon-path paths)))))
;; Assume host-default-style path-list...
- (cl-mapcan ; splice list into list
+ (mapcan ; splice list into list
(lambda (x) (if x (list x) (woman-parse-man.conf)))
(parse-colon-path (or paths "")))))
@@ -569,11 +568,11 @@ or
"\
^[ \t]*\\(?:\\(?:MANDATORY_\\|OPTIONAL_\\)?MANPATH[ \t]+\\(\\S-+\\)\\|\
MANPATH_MAP[ \t]+\\(\\S-+\\)[ \t]+\\(\\S-+\\)\\)" nil t)
- (add-to-list 'manpath
- (if (match-beginning 1)
- (match-string 1)
- (cons (match-string 2)
- (match-string 3)))))
+ (cl-pushnew (if (match-beginning 1)
+ (match-string 1)
+ (cons (match-string 2)
+ (match-string 3)))
+ manpath))
manpath))
))
(setq path (cdr path)))
@@ -624,11 +623,12 @@ of `woman-expand-locale' on `woman-locale' added, where they exist."
(if (consp elem)
(cdr elem)
elem))))))
- (add-to-list 'lst (if (consp elem)
- (cons (car elem) dir)
- dir))))
+ (cl-pushnew (if (consp elem)
+ (cons (car elem) dir)
+ dir)
+ lst)))
;; Non-locale-specific has lowest precedence.
- (add-to-list 'lst elem)))))
+ (cl-pushnew elem lst)))))
(defcustom woman-manpath
;; Locales could also be added in woman-expand-directory-path.
@@ -926,25 +926,21 @@ or different fonts."
'((t :inherit italic))
"Face for italic font in man pages."
:group 'woman-faces)
-(define-obsolete-face-alias 'woman-italic-face 'woman-italic "22.1")
(defface woman-bold
'((t :inherit bold))
"Face for bold font in man pages."
:group 'woman-faces)
-(define-obsolete-face-alias 'woman-bold-face 'woman-bold "22.1")
(defface woman-unknown
'((t :inherit font-lock-warning-face))
"Face for all unknown fonts in man pages."
:group 'woman-faces)
-(define-obsolete-face-alias 'woman-unknown-face 'woman-unknown "22.1")
(defface woman-addition
'((t :inherit font-lock-builtin-face))
"Face for all WoMan additions to man pages."
:group 'woman-faces)
-(define-obsolete-face-alias 'woman-addition-face 'woman-addition "22.1")
(defun woman-default-faces ()
"Set foreground colors of italic and bold faces to their default values."
@@ -1026,8 +1022,7 @@ Under MS-Windows, the default is
;;; Internal variables:
-(defconst woman-justify-list
- '(left right center full)
+(defconst woman-justify-styles [left right center full]
"Justify styles for `fill-region-as-paragraph'.")
(defconst woman-adjust-left 0 ; == adjust off, noadjust
"Adjustment indicator `l' -- adjust left margin only.")
@@ -1042,8 +1037,7 @@ Under MS-Windows, the default is
"Current adjustment number-register value.")
(defvar woman-adjust-previous woman-adjust
"Previous adjustment number-register value.")
-(defvar woman-justify
- (nth woman-adjust woman-justify-list) ; use vector?
+(defvar woman-justify (aref woman-justify-styles woman-adjust)
"Current justification style for `fill-region-as-paragraph'.")
(defvar woman-justify-previous woman-justify
"Previous justification style for `fill-region-as-paragraph'.")
@@ -1203,7 +1197,7 @@ Called both to generate and to check the cache!"
(setq path
(split-string (getenv "PATH") path-separator t)))
(setq dir (and (member (car dir) path) (cdr dir))))
- (when dir (add-to-list 'lst (substitute-in-file-name dir)))))
+ (when dir (cl-pushnew (substitute-in-file-name dir) lst))))
(mapcar 'substitute-in-file-name woman-path)))
(defun woman-read-directory-cache ()
@@ -2242,7 +2236,7 @@ Currently set only from \\='\\\" t in the first line of the source file.")
woman-RS-left-margin nil
woman-RS-prevailing-indent nil
woman-adjust woman-adjust-both
- woman-justify (nth woman-adjust woman-justify-list)
+ woman-justify (aref woman-justify-styles woman-adjust)
woman-nofill nil)
(setq woman-if-conditions-true
@@ -4037,7 +4031,7 @@ Format paragraphs upto TO. (Breaks, but should not.)"
((memq (following-char) '(?b ?n)) woman-adjust-both)
(t (woman-get-numeric-arg))
)
- woman-justify (nth woman-adjust woman-justify-list))
+ woman-justify (aref woman-justify-styles woman-adjust))
(woman-delete-line 1) ; ignore any remaining arguments
(woman2-format-paragraphs to))
@@ -4047,7 +4041,7 @@ Format paragraphs upto TO. (Breaks, but should not.)"
(setq woman-adjust-previous woman-adjust
woman-justify-previous woman-justify
woman-adjust woman-adjust-left ; fill but do not adjust
- woman-justify (nth woman-adjust woman-justify-list))
+ woman-justify (aref woman-justify-styles woman-adjust))
(woman-delete-line 1) ; ignore any arguments
(woman2-format-paragraphs to))
diff --git a/lwlib/Makefile.in b/lwlib/Makefile.in
index cc863f3d21..94af056ea6 100644
--- a/lwlib/Makefile.in
+++ b/lwlib/Makefile.in
@@ -44,6 +44,7 @@ RANLIB=@RANLIB@
AR = @AR@
ARFLAGS = @ARFLAGS@
MKDIR_P = @MKDIR_P@
+EXEEXT = @EXEEXT@
LUCID_OBJS = lwlib-Xlw.o xlwmenu.o lwlib-Xaw.o
MOTIF_OBJS = lwlib-Xm.o
@@ -128,15 +129,17 @@ distclean: clean
bootstrap-clean maintainer-clean: distclean
rm -f TAGS
+ETAGS = ../lib-src/etags${EXEEXT}
-ETAGS = ../lib-src/etags
+${ETAGS}: FORCE
+ ${MAKE} -C ../lib-src $(notdir $@)
-ctagsfiles= $(srcdir)/*.[ch]
+ctagsfiles= $(wildcard ${srcdir}/*.[ch])
-TAGS: $(ctagsfiles)
- "$(ETAGS)" $(ctagsfiles)
+FORCE:
+.PHONY: tags FORCE
tags: TAGS
-.PHONY: tags
-
+TAGS: ${ETAGS} $(ctagsfiles)
+ ${ETAGS} $(ctagsfiles)
### Makefile.in ends here
diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c
index c68cf77c92..d1c5195dbf 100644
--- a/lwlib/lwlib.c
+++ b/lwlib/lwlib.c
@@ -1042,11 +1042,13 @@ widget_value*
lw_get_all_values (LWLIB_ID id)
{
widget_info* info = get_widget_info (id, False);
- widget_value* val = info->val;
- if (lw_get_some_values (id, val))
- return val;
- else
- return NULL;
+ if (info)
+ {
+ widget_value* val = info->val;
+ if (lw_get_some_values (id, val))
+ return val;
+ }
+ return NULL;
}
/* internal function used by the library dependent implementation to get the
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index 547af6641a..5a3fc98597 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -78,6 +78,7 @@ AC_DEFUN([gl_EARLY],
# Code from module fdatasync:
# Code from module fdopendir:
# Code from module filemode:
+ # Code from module filevercmp:
# Code from module fpending:
# Code from module fstatat:
# Code from module fsync:
@@ -126,6 +127,7 @@ AC_DEFUN([gl_EARLY],
# Code from module ssize_t:
# Code from module stat:
# Code from module stat-time:
+ # Code from module std-gnu11:
# Code from module stdalign:
# Code from module stddef:
# Code from module stdint:
@@ -888,6 +890,8 @@ AC_DEFUN([gl_FILE_LIST], [
lib/fdopendir.c
lib/filemode.c
lib/filemode.h
+ lib/filevercmp.c
+ lib/filevercmp.h
lib/fpending.c
lib/fpending.h
lib/fstatat.c
@@ -1052,6 +1056,7 @@ AC_DEFUN([gl_FILE_LIST], [
m4/st_dm_mode.m4
m4/stat-time.m4
m4/stat.m4
+ m4/std-gnu11.m4
m4/stdalign.m4
m4/stddef_h.m4
m4/stdint.m4
diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4
index 12d68da6f3..90823b0acf 100644
--- a/m4/manywarnings.m4
+++ b/m4/manywarnings.m4
@@ -1,4 +1,4 @@
-# manywarnings.m4 serial 7
+# manywarnings.m4 serial 8
dnl Copyright (C) 2008-2016 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -129,6 +129,7 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC],
-Wdiscarded-qualifiers \
-Wdiv-by-zero \
-Wdouble-promotion \
+ -Wduplicated-cond \
-Wempty-body \
-Wendif-labels \
-Wenum-compare \
@@ -140,7 +141,10 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC],
-Wformat-signedness \
-Wformat-y2k \
-Wformat-zero-length \
+ -Wframe-address \
-Wfree-nonheap-object \
+ -Whsa \
+ -Wignored-attributes \
-Wignored-qualifiers \
-Wimplicit \
-Wimplicit-function-declaration \
@@ -158,6 +162,7 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC],
-Wmain \
-Wmaybe-uninitialized \
-Wmemset-transposed-args \
+ -Wmisleading-indentation \
-Wmissing-braces \
-Wmissing-declarations \
-Wmissing-field-initializers \
@@ -168,6 +173,8 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC],
-Wnarrowing \
-Wnested-externs \
-Wnonnull \
+ -Wnonnull-compare \
+ -Wnull-dereference \
-Wodr \
-Wold-style-declaration \
-Wold-style-definition \
@@ -184,10 +191,12 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC],
-Wpragmas \
-Wreturn-local-addr \
-Wreturn-type \
+ -Wscalar-storage-order \
-Wsequence-point \
-Wshadow \
-Wshift-count-negative \
-Wshift-count-overflow \
+ -Wshift-negative-value \
-Wsizeof-array-argument \
-Wsizeof-pointer-memaccess \
-Wstack-protector \
@@ -205,6 +214,7 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC],
-Wswitch-default \
-Wsync-nand \
-Wsystem-headers \
+ -Wtautological-compare \
-Wtrampolines \
-Wtrigraphs \
-Wtype-limits \
@@ -237,6 +247,8 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC],
# them here so that the above 'comm' command doesn't report a false match.
gl_manywarn_set="$gl_manywarn_set -Warray-bounds=2"
gl_manywarn_set="$gl_manywarn_set -Wnormalized=nfc"
+ gl_manywarn_set="$gl_manywarn_set -Wshift-overflow=2"
+ gl_manywarn_set="$gl_manywarn_set -Wunused-const-variable=2"
# These are needed for older GCC versions.
if test -n "$GCC"; then
diff --git a/m4/mktime.m4 b/m4/mktime.m4
index 78f16ba66a..23cad732ff 100644
--- a/m4/mktime.m4
+++ b/m4/mktime.m4
@@ -1,4 +1,4 @@
-# serial 25
+# serial 27
dnl Copyright (C) 2002-2003, 2005-2007, 2009-2016 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
@@ -7,14 +7,30 @@ dnl with or without modifications, as long as this notice is preserved.
dnl From Jim Meyering.
+AC_DEFUN([gl_TIME_T_IS_SIGNED],
+[
+ AC_CACHE_CHECK([whether time_t is signed],
+ [gl_cv_time_t_is_signed],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <time.h>
+ char time_t_signed[(time_t) -1 < 0 ? 1 : -1];]])],
+ [gl_cv_time_t_is_signed=yes],
+ [gl_cv_time_t_is_signed=no])])
+ if test $gl_cv_time_t_is_signed = yes; then
+ AC_DEFINE([TIME_T_IS_SIGNED], [1], [Define to 1 if time_t is signed.])
+ fi
+])
+
AC_DEFUN([gl_FUNC_MKTIME],
[
AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+ AC_REQUIRE([gl_TIME_T_IS_SIGNED])
dnl We don't use AC_FUNC_MKTIME any more, because it is no longer maintained
dnl in Autoconf and because it invokes AC_LIBOBJ.
AC_CHECK_HEADERS_ONCE([unistd.h])
AC_CHECK_DECLS_ONCE([alarm])
+ AC_CHECK_FUNCS_ONCE([tzset])
AC_REQUIRE([gl_MULTIARCH])
if test $APPLE_UNIVERSAL_BUILD = 1; then
# A universal build on Apple Mac OS X platforms.
@@ -169,7 +185,6 @@ main ()
time_t t, delta;
int i, j;
int time_t_signed_magnitude = (time_t) ~ (time_t) 0 < (time_t) -1;
- int time_t_signed = ! ((time_t) 0 < (time_t) -1);
#if HAVE_DECL_ALARM
/* This test makes some buggy mktime implementations loop.
@@ -179,11 +194,11 @@ main ()
alarm (60);
#endif
- time_t_max = (! time_t_signed
+ time_t_max = (! TIME_T_IS_SIGNED
? (time_t) -1
: ((((time_t) 1 << (sizeof (time_t) * CHAR_BIT - 2)) - 1)
* 2 + 1));
- time_t_min = (! time_t_signed
+ time_t_min = (! TIME_T_IS_SIGNED
? (time_t) 0
: time_t_signed_magnitude
? ~ (time_t) 0
diff --git a/m4/nocrash.m4 b/m4/nocrash.m4
index ecc55c6172..d8dd8f13a1 100644
--- a/m4/nocrash.m4
+++ b/m4/nocrash.m4
@@ -110,11 +110,12 @@ nocrash_init (void)
#else
/* Avoid a crash on POSIX systems. */
#include <signal.h>
+#include <unistd.h>
/* A POSIX signal handler. */
static void
exception_handler (int sig)
{
- exit (1);
+ _exit (1);
}
static void
nocrash_init (void)
diff --git a/m4/secure_getenv.m4 b/m4/secure_getenv.m4
index 00194c8497..3983173603 100644
--- a/m4/secure_getenv.m4
+++ b/m4/secure_getenv.m4
@@ -22,4 +22,5 @@ AC_DEFUN([gl_PREREQ_SECURE_GETENV], [
if test $ac_cv_func___secure_getenv = no; then
AC_CHECK_FUNCS([issetugid])
fi
+ AC_CHECK_FUNCS_ONCE([getuid geteuid getgid getegid])
])
diff --git a/m4/std-gnu11.m4 b/m4/std-gnu11.m4
new file mode 100644
index 0000000000..10da26f130
--- /dev/null
+++ b/m4/std-gnu11.m4
@@ -0,0 +1,824 @@
+# Prefer GNU C11 and C++11 to earlier versions. -*- coding: utf-8 -*-
+
+# This implementation is taken from GNU Autoconf lib/autoconf/c.m4
+# commit 017d5ddd82854911f0119691d91ea8a1438824d6
+# dated Sun Apr 3 13:57:17 2016 -0700
+# This implementation will be obsolete once we can assume Autoconf 2.70
+# or later is installed everywhere a Gnulib program might be developed.
+
+
+# Copyright (C) 2001-2016 Free Software Foundation, Inc.
+
+# This program 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 3 of the License, or
+# (at your option) any later version.
+#
+# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Written by David MacKenzie, with help from
+# Akim Demaille, Paul Eggert,
+# François Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor,
+# Roland McGrath, Noah Friedman, david d zuhn, and many others.
+
+
+# AC_PROG_CC([COMPILER ...])
+# --------------------------
+# COMPILER ... is a space separated list of C compilers to search for.
+# This just gives the user an opportunity to specify an alternative
+# search list for the C compiler.
+AC_DEFUN_ONCE([AC_PROG_CC],
+[AC_LANG_PUSH(C)dnl
+AC_ARG_VAR([CC], [C compiler command])dnl
+AC_ARG_VAR([CFLAGS], [C compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+_AC_ARG_VAR_LIBS()dnl
+_AC_ARG_VAR_CPPFLAGS()dnl
+m4_ifval([$1],
+ [AC_CHECK_TOOLS(CC, [$1])],
+[AC_CHECK_TOOL(CC, gcc)
+if test -z "$CC"; then
+ dnl Here we want:
+ dnl AC_CHECK_TOOL(CC, cc)
+ dnl but without the check for a tool without the prefix.
+ dnl Until the check is removed from there, copy the code:
+ if test -n "$ac_tool_prefix"; then
+ AC_CHECK_PROG(CC, [${ac_tool_prefix}cc], [${ac_tool_prefix}cc])
+ fi
+fi
+if test -z "$CC"; then
+ AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
+fi
+if test -z "$CC"; then
+ AC_CHECK_TOOLS(CC, cl.exe)
+fi
+if test -z "$CC"; then
+ AC_CHECK_TOOL(CC, clang)
+fi
+])
+
+test -z "$CC" && AC_MSG_FAILURE([no acceptable C compiler found in \$PATH])
+
+# Provide some information about the compiler.
+_AS_ECHO_LOG([checking for _AC_LANG compiler version])
+set X $ac_compile
+ac_compiler=$[2]
+for ac_option in --version -v -V -qversion -version; do
+ _AC_DO_LIMIT([$ac_compiler $ac_option >&AS_MESSAGE_LOG_FD])
+done
+
+m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl
+m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl
+_AC_LANG_COMPILER_GNU
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+_AC_PROG_CC_G
+dnl
+dnl Set ac_prog_cc_stdc to the supported C version.
+dnl Also set the documented variable ac_cv_prog_cc_stdc;
+dnl its name was chosen when it was cached, but it is no longer cached.
+_AC_PROG_CC_C11([ac_prog_cc_stdc=c11
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11],
+ [_AC_PROG_CC_C99([ac_prog_cc_stdc=c99
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99],
+ [_AC_PROG_CC_C89([ac_prog_cc_stdc=c89
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89],
+ [ac_prog_cc_stdc=no
+ ac_cv_prog_cc_stdc=no])])])
+dnl
+AC_LANG_POP(C)dnl
+])# AC_PROG_CC
+
+
+
+# AC_PROG_CXX([LIST-OF-COMPILERS])
+# --------------------------------
+# LIST-OF-COMPILERS is a space separated list of C++ compilers to search
+# for (if not specified, a default list is used). This just gives the
+# user an opportunity to specify an alternative search list for the C++
+# compiler.
+# aCC HP-UX C++ compiler much better than `CC', so test before.
+# FCC Fujitsu C++ compiler
+# KCC KAI C++ compiler
+# RCC Rational C++
+# xlC_r AIX C Set++ (with support for reentrant code)
+# xlC AIX C Set++
+AC_DEFUN([AC_PROG_CXX],
+[AC_LANG_PUSH(C++)dnl
+AC_ARG_VAR([CXX], [C++ compiler command])dnl
+AC_ARG_VAR([CXXFLAGS], [C++ compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+_AC_ARG_VAR_LIBS()dnl
+_AC_ARG_VAR_CPPFLAGS()dnl
+_AC_ARG_VAR_PRECIOUS([CCC])dnl
+if test -z "$CXX"; then
+ if test -n "$CCC"; then
+ CXX=$CCC
+ else
+ AC_CHECK_TOOLS(CXX,
+ [m4_default([$1],
+ [g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++])],
+ g++)
+ fi
+fi
+# Provide some information about the compiler.
+_AS_ECHO_LOG([checking for _AC_LANG compiler version])
+set X $ac_compile
+ac_compiler=$[2]
+for ac_option in --version -v -V -qversion; do
+ _AC_DO_LIMIT([$ac_compiler $ac_option >&AS_MESSAGE_LOG_FD])
+done
+
+m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl
+m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl
+_AC_LANG_COMPILER_GNU
+if test $ac_compiler_gnu = yes; then
+ GXX=yes
+else
+ GXX=
+fi
+_AC_PROG_CXX_G
+_AC_PROG_CXX_CXX11([ac_prog_cxx_stdcxx=cxx11
+ ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11
+ ac_cv_prog_cxx_cxx98=$ac_cv_prog_cxx_cxx11],
+ [_AC_PROG_CXX_CXX98([ac_prog_cxx_stdcxx=cxx98
+ ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98],
+ [ac_prog_cxx_stdcxx=no
+ ac_cv_prog_cxx_stdcxx=no])])
+AC_LANG_POP(C++)dnl
+])# AC_PROG_CXX
+
+
+# _AC_C_STD_TRY(STANDARD, TEST-PROLOGUE, TEST-BODY, OPTION-LIST,
+# ACTION-IF-AVAILABLE, ACTION-IF-UNAVAILABLE)
+# --------------------------------------------------------------
+# Check whether the C compiler accepts features of STANDARD (e.g `c89', `c99')
+# by trying to compile a program of TEST-PROLOGUE and TEST-BODY. If this fails,
+# try again with each compiler option in the space-separated OPTION-LIST; if one
+# helps, append it to CC. If eventually successful, run ACTION-IF-AVAILABLE,
+# else ACTION-IF-UNAVAILABLE.
+AC_DEFUN([_AC_C_STD_TRY],
+[AC_MSG_CHECKING([for $CC option to enable ]m4_translit($1, [c], [C])[ features])
+AC_CACHE_VAL(ac_cv_prog_cc_$1,
+[ac_cv_prog_cc_$1=no
+ac_save_CC=$CC
+AC_LANG_CONFTEST([AC_LANG_PROGRAM([$2], [$3])])
+for ac_arg in '' $4
+do
+ CC="$ac_save_CC $ac_arg"
+ _AC_COMPILE_IFELSE([], [ac_cv_prog_cc_$1=$ac_arg])
+ test "x$ac_cv_prog_cc_$1" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+])# AC_CACHE_VAL
+ac_prog_cc_stdc_options=
+case "x$ac_cv_prog_cc_$1" in
+ x)
+ AC_MSG_RESULT([none needed]) ;;
+ xno)
+ AC_MSG_RESULT([unsupported]) ;;
+ *)
+ ac_prog_cc_stdc_options=" $ac_cv_prog_cc_$1"
+ CC=$CC$ac_prog_cc_stdc_options
+ AC_MSG_RESULT([$ac_cv_prog_cc_$1]) ;;
+esac
+AS_IF([test "x$ac_cv_prog_cc_$1" != xno], [$5], [$6])
+])# _AC_C_STD_TRY
+
+# _AC_C_C99_TEST_HEADER
+# ---------------------
+# A C header suitable for testing for C99.
+AC_DEFUN([_AC_C_C99_TEST_HEADER],
+[[#include <stdarg.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+ your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str = "";
+ int number = 0;
+ float fnumber = 0;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case 's': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case 'd': // int
+ number = va_arg (args_copy, int);
+ break;
+ case 'f': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+
+ return *str && number && fnumber;
+}]])# _AC_C_C99_TEST_HEADER
+
+# _AC_C_C99_TEST_BODY
+# -------------------
+# A C body suitable for testing for C99, assuming the corresponding header.
+AC_DEFUN([_AC_C_C99_TEST_BODY],
+[[
+ // Check bool.
+ _Bool success = false;
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ success &= test_varargs ("s, d' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+ || dynamic_array[ni.number - 1] != 543);
+]])
+
+# _AC_PROG_CC_C99 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
+# ----------------------------------------------------------------
+# If the C compiler is not in ISO C99 mode by default, try to add an
+# option to output variable CC to make it so. This macro tries
+# various options that select ISO C99 on some system or another. It
+# considers the compiler to be in ISO C99 mode if it handles _Bool,
+# // comments, flexible array members, inline, long long int, mixed
+# code and declarations, named initialization of structs, restrict,
+# va_copy, varargs macros, variable declarations in for loops and
+# variable length arrays.
+AC_DEFUN([_AC_PROG_CC_C99],
+[_AC_C_STD_TRY([c99],
+[_AC_C_C99_TEST_HEADER],
+[_AC_C_C99_TEST_BODY],
+dnl Try
+dnl GCC -std=gnu99 (unused restrictive modes: -std=c99 -std=iso9899:1999)
+dnl IBM XL C -qlanglvl=extc1x (V12.1; does not pass C11 test)
+dnl IBM XL C -qlanglvl=extc99
+dnl (pre-V12.1; unused restrictive mode: -qlanglvl=stdc99)
+dnl HP cc -AC99
+dnl Intel ICC -std=c99, -c99 (deprecated)
+dnl IRIX -c99
+dnl Solaris -D_STDC_C99=
+dnl cc's -xc99 option uses linker magic to define the external
+dnl symbol __xpg4 as if by "int __xpg4 = 1;", which enables C99
+dnl behavior for C library functions. This is not wanted here,
+dnl because it means that a single module compiled with -xc99
+dnl alters C runtime behavior for the entire program, not for
+dnl just the module. Instead, define the (private) symbol
+dnl _STDC_C99, which suppresses a bogus failure in <stdbool.h>.
+dnl The resulting compiler passes the test case here, and that's
+dnl good enough. For more, please see the thread starting at:
+dnl http://lists.gnu.org/archive/html/autoconf/2010-12/msg00059.html
+dnl Tru64 -c99
+dnl with extended modes being tried first.
+[[-std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc1x -qlanglvl=extc99]], [$1], [$2])[]dnl
+])# _AC_PROG_CC_C99
+
+
+# _AC_PROG_CC_C11 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
+# ----------------------------------------------------------------
+# If the C compiler is not in ISO C11 mode by default, try to add an
+# option to output variable CC to make it so. This macro tries
+# various options that select ISO C11 on some system or another. It
+# considers the compiler to be in ISO C11 mode if it handles _Alignas,
+# _Alignof, _Noreturn, _Static_assert, UTF-8 string literals,
+# duplicate typedefs, and anonymous structures and unions.
+AC_DEFUN([_AC_PROG_CC_C11],
+[_AC_C_STD_TRY([c11],
+[_AC_C_C99_TEST_HEADER[
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+ int_alignment = _Alignof (int),
+ int_array_alignment = _Alignof (int[100]),
+ char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+ int x;
+ _Static_assert (sizeof (int) <= sizeof (long int),
+ "_Static_assert does not work in struct");
+ long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+ union {
+ struct { int i; int j; };
+ struct { int k; long int l; } w;
+ };
+ int m;
+} v1;
+]],
+[_AC_C_C99_TEST_BODY[
+ v1.i = 2;
+ v1.w.k = 5;
+ _Static_assert ((offsetof (struct anonymous, i)
+ == offsetof (struct anonymous, w.k)),
+ "Anonymous union alignment botch");
+]],
+dnl Try
+dnl GCC -std=gnu11 (unused restrictive mode: -std=c11)
+dnl with extended modes being tried first.
+dnl
+dnl Do not try -qlanglvl=extc1x, because IBM XL C V12.1 (the latest version as
+dnl of September 2012) does not pass the C11 test. For now, try extc1x when
+dnl compiling the C99 test instead, since it enables _Static_assert and
+dnl _Noreturn, which is a win. If -qlanglvl=extc11 or -qlanglvl=extc1x passes
+dnl the C11 test in some future version of IBM XL C, we'll add it here,
+dnl preferably extc11.
+[[-std=gnu11]], [$1], [$2])[]dnl
+])# _AC_PROG_CC_C11
+
+
+# AC_PROG_CC_C89
+# --------------
+# Do not use AU_ALIAS here and in AC_PROG_CC_C99 and AC_PROG_CC_STDC,
+# as that'd be incompatible with how Automake redefines AC_PROG_CC. See
+# <http://lists.gnu.org/archive/html/autoconf/2012-10/msg00048.html>.
+AU_DEFUN([AC_PROG_CC_C89],
+ [AC_REQUIRE([AC_PROG_CC])],
+ [$0 is obsolete; use AC_PROG_CC]
+)
+
+# AC_PROG_CC_C99
+# --------------
+AU_DEFUN([AC_PROG_CC_C99],
+ [AC_REQUIRE([AC_PROG_CC])],
+ [$0 is obsolete; use AC_PROG_CC]
+)
+
+# AC_PROG_CC_STDC
+# ---------------
+AU_DEFUN([AC_PROG_CC_STDC],
+ [AC_REQUIRE([AC_PROG_CC])],
+ [$0 is obsolete; use AC_PROG_CC]
+)
+
+
+# AC_C_PROTOTYPES
+# ---------------
+# Check if the C compiler supports prototypes, included if it needs
+# options.
+AC_DEFUN([AC_C_PROTOTYPES],
+[AC_REQUIRE([AC_PROG_CC])dnl
+if test "$ac_prog_cc_stdc" != no; then
+ AC_DEFINE(PROTOTYPES, 1,
+ [Define to 1 if the C compiler supports function prototypes.])
+ AC_DEFINE(__PROTOTYPES, 1,
+ [Define like PROTOTYPES; this can be used by system headers.])
+fi
+])# AC_C_PROTOTYPES
+
+
+# _AC_CXX_STD_TRY(STANDARD, TEST-PROLOGUE, TEST-BODY, OPTION-LIST,
+# ACTION-IF-AVAILABLE, ACTION-IF-UNAVAILABLE)
+# ----------------------------------------------------------------
+# Check whether the C++ compiler accepts features of STANDARD (e.g
+# `cxx98', `cxx11') by trying to compile a program of TEST-PROLOGUE
+# and TEST-BODY. If this fails, try again with each compiler option
+# in the space-separated OPTION-LIST; if one helps, append it to CXX.
+# If eventually successful, run ACTION-IF-AVAILABLE, else
+# ACTION-IF-UNAVAILABLE.
+AC_DEFUN([_AC_CXX_STD_TRY],
+[AC_MSG_CHECKING([for $CXX option to enable ]m4_translit(m4_translit($1, [x], [+]), [a-z], [A-Z])[ features])
+AC_LANG_PUSH(C++)dnl
+AC_CACHE_VAL(ac_cv_prog_cxx_$1,
+[ac_cv_prog_cxx_$1=no
+ac_save_CXX=$CXX
+AC_LANG_CONFTEST([AC_LANG_PROGRAM([$2], [$3])])
+for ac_arg in '' $4
+do
+ CXX="$ac_save_CXX $ac_arg"
+ _AC_COMPILE_IFELSE([], [ac_cv_prog_cxx_$1=$ac_arg])
+ test "x$ac_cv_prog_cxx_$1" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CXX=$ac_save_CXX
+])# AC_CACHE_VAL
+ac_prog_cxx_stdcxx_options=
+case "x$ac_cv_prog_cxx_$1" in
+ x)
+ AC_MSG_RESULT([none needed]) ;;
+ xno)
+ AC_MSG_RESULT([unsupported]) ;;
+ *)
+ ac_prog_cxx_stdcxx_options=" $ac_cv_prog_cxx_$1"
+ CXX=$CXX$ac_prog_cxx_stdcxx_options
+ AC_MSG_RESULT([$ac_cv_prog_cxx_$1]) ;;
+esac
+AC_LANG_POP(C++)dnl
+AS_IF([test "x$ac_cv_prog_cxx_$1" != xno], [$5], [$6])
+])# _AC_CXX_STD_TRY
+
+# _AC_CXX_CXX98_TEST_HEADER
+# -------------------------
+# A C++ header suitable for testing for CXX98.
+AC_DEFUN([_AC_CXX_CXX98_TEST_HEADER],
+[[
+#include <algorithm>
+#include <cstdlib>
+#include <fstream>
+#include <iomanip>
+#include <iostream>
+#include <list>
+#include <map>
+#include <set>
+#include <sstream>
+#include <stdexcept>
+#include <string>
+#include <utility>
+#include <vector>
+
+namespace test {
+ typedef std::vector<std::string> string_vec;
+ typedef std::pair<int,bool> map_value;
+ typedef std::map<std::string,map_value> map_type;
+ typedef std::set<int> set_type;
+
+ template<typename T>
+ class printer {
+ public:
+ printer(std::ostringstream& os): os(os) {}
+ void operator() (T elem) { os << elem << std::endl; }
+ private:
+ std::ostringstream& os;
+ };
+}
+]])# _AC_CXX_CXX98_TEST_HEADER
+
+# _AC_CXX_CXX98_TEST_BODY
+# -----------------------
+# A C++ body suitable for testing for CXX98, assuming the corresponding header.
+AC_DEFUN([_AC_CXX_CXX98_TEST_BODY],
+[[
+
+try {
+ // Basic string.
+ std::string teststr("ASCII text");
+ teststr += " string";
+
+ // Simple vector.
+ test::string_vec testvec;
+ testvec.push_back(teststr);
+ testvec.push_back("foo");
+ testvec.push_back("bar");
+ if (testvec.size() != 3) {
+ throw std::runtime_error("vector size is not 1");
+ }
+
+ // Dump vector into stringstream and obtain string.
+ std::ostringstream os;
+ for (test::string_vec::const_iterator i = testvec.begin();
+ i != testvec.end(); ++i) {
+ if (i + 1 != testvec.end()) {
+ os << teststr << '\n';
+ }
+ }
+ // Check algorithms work.
+ std::for_each(testvec.begin(), testvec.end(), test::printer<std::string>(os));
+ std::string os_out = os.str();
+
+ // Test pair and map.
+ test::map_type testmap;
+ testmap.insert(std::make_pair(std::string("key"),
+ std::make_pair(53,false)));
+
+ // Test set.
+ int values[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1};
+ test::set_type testset(values, values + sizeof(values)/sizeof(values[0]));
+ std::list<int> testlist(testset.begin(), testset.end());
+ std::copy(testset.begin(), testset.end(), std::back_inserter(testlist));
+} catch (const std::exception& e) {
+ std::cerr << "Caught exception: " << e.what() << std::endl;
+
+ // Test fstream
+ std::ofstream of("test.txt");
+ of << "Test ASCII text\n" << std::flush;
+ of << "N= " << std::hex << std::setw(8) << std::left << 534 << std::endl;
+ of.close();
+}
+std::exit(0);
+]])
+
+# _AC_CXX_CXX11_TEST_HEADER
+# -------------------------
+# A C++ header suitable for testing for CXX11.
+AC_DEFUN([_AC_CXX_CXX11_TEST_HEADER],
+[[
+#include <deque>
+#include <functional>
+#include <memory>
+#include <tuple>
+#include <array>
+#include <regex>
+#include <iostream>
+
+namespace cxx11test
+{
+ typedef std::shared_ptr<std::string> sptr;
+ typedef std::weak_ptr<std::string> wptr;
+
+ typedef std::tuple<std::string,int,double> tp;
+ typedef std::array<int, 20> int_array;
+
+ constexpr int get_val() { return 20; }
+
+ struct testinit
+ {
+ int i;
+ double d;
+ };
+
+ class delegate {
+ public:
+ delegate(int n) : n(n) {}
+ delegate(): delegate(2354) {}
+
+ virtual int getval() { return this->n; };
+ protected:
+ int n;
+ };
+
+ class overridden : public delegate {
+ public:
+ overridden(int n): delegate(n) {}
+ virtual int getval() override final { return this->n * 2; }
+ };
+
+ class nocopy {
+ public:
+ nocopy(int i): i(i) {}
+ nocopy() = default;
+ nocopy(const nocopy&) = delete;
+ nocopy & operator=(const nocopy&) = delete;
+ private:
+ int i;
+ };
+}
+]])# _AC_CXX_CXX11_TEST_HEADER
+
+# _AC_CXX_CXX11_TEST_BODY
+# -----------------------
+# A C++ body suitable for testing for CXX11, assuming the corresponding header.
+AC_DEFUN([_AC_CXX_CXX11_TEST_BODY],
+[[
+{
+ // Test auto and decltype
+ std::deque<int> d;
+ d.push_front(43);
+ d.push_front(484);
+ d.push_front(3);
+ d.push_front(844);
+ int total = 0;
+ for (auto i = d.begin(); i != d.end(); ++i) { total += *i; }
+
+ auto a1 = 6538;
+ auto a2 = 48573953.4;
+ auto a3 = "String literal";
+
+ decltype(a2) a4 = 34895.034;
+}
+{
+ // Test constexpr
+ short sa[cxx11test::get_val()] = { 0 };
+}
+{
+ // Test initializer lists
+ cxx11test::testinit il = { 4323, 435234.23544 };
+}
+{
+ // Test range-based for and lambda
+ cxx11test::int_array array = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1};
+ for (int &x : array) { x += 23; }
+ std::for_each(array.begin(), array.end(), [](int v1){ std::cout << v1; });
+}
+{
+ using cxx11test::sptr;
+ using cxx11test::wptr;
+
+ sptr sp(new std::string("ASCII string"));
+ wptr wp(sp);
+ sptr sp2(wp);
+}
+{
+ cxx11test::tp tuple("test", 54, 45.53434);
+ double d = std::get<2>(tuple);
+ std::string s;
+ int i;
+ std::tie(s,i,d) = tuple;
+}
+{
+ static std::regex filename_regex("^_?([a-z0-9_.]+-)+[a-z0-9]+$");
+ std::string testmatch("Test if this string matches");
+ bool match = std::regex_search(testmatch, filename_regex);
+}
+{
+ cxx11test::int_array array = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1};
+ cxx11test::int_array::size_type size = array.size();
+}
+{
+ // Test constructor delegation
+ cxx11test::delegate d1;
+ cxx11test::delegate d2();
+ cxx11test::delegate d3(45);
+}
+{
+ // Test override and final
+ cxx11test::overridden o1(55464);
+}
+{
+ // Test nullptr
+ char *c = nullptr;
+}
+{
+ // Test template brackets
+ std::vector<std::pair<int,char*>> v1;
+}
+{
+ // Unicode literals
+ char const *utf8 = u8"UTF-8 string \u2500";
+ char16_t const *utf16 = u"UTF-8 string \u2500";
+ char32_t const *utf32 = U"UTF-32 string \u2500";
+}
+]])
+
+# _AC_PROG_CXX_CXX98 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
+# -------------------------------------------------------------------
+
+# If the C++ compiler is not in ISO C++98 mode by default, try to add
+# an option to output variable CXX to make it so. This macro tries
+# various options that select ISO C++98 on some system or another. It
+# considers the compiler to be in ISO C++98 mode if it handles basic
+# features of the std namespace including: string, containers (list,
+# map, set, vector), streams (fstreams, iostreams, stringstreams,
+# iomanip), pair, exceptions and algorithms.
+
+
+AC_DEFUN([_AC_PROG_CXX_CXX98],
+[_AC_CXX_STD_TRY([cxx98],
+[_AC_CXX_CXX98_TEST_HEADER],
+[_AC_CXX_CXX98_TEST_BODY],
+dnl Try
+dnl GCC -std=gnu++98 (unused restrictive mode: -std=c++98)
+dnl IBM XL C -qlanglvl=extended
+dnl HP aC++ -AA
+dnl Intel ICC -std=gnu++98
+dnl Solaris N/A (default)
+dnl Tru64 N/A (default, but -std gnu could be used)
+dnl with extended modes being tried first.
+[[-std=gnu++98 -std=c++98 -qlanglvl=extended -AA]], [$1], [$2])[]dnl
+])# _AC_PROG_CXX_CXX98
+
+# _AC_PROG_CXX_CXX11 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
+# -------------------------------------------------------------------
+# If the C++ compiler is not in ISO CXX11 mode by default, try to add
+# an option to output variable CXX to make it so. This macro tries
+# various options that select ISO C++11 on some system or another. It
+# considers the compiler to be in ISO C++11 mode if it handles all the
+# tests from the C++98 checks, plus the following: Language features
+# (auto, constexpr, decltype, default/deleted constructors, delegate
+# constructors, final, initializer lists, lambda functions, nullptr,
+# override, range-based for loops, template brackets without spaces,
+# unicode literals) and library features (array, memory (shared_ptr,
+# weak_ptr), regex and tuple types).
+AC_DEFUN([_AC_PROG_CXX_CXX11],
+[_AC_CXX_STD_TRY([cxx11],
+[_AC_CXX_CXX11_TEST_HEADER
+_AC_CXX_CXX98_TEST_HEADER],
+[_AC_CXX_CXX11_TEST_BODY
+_AC_CXX_CXX98_TEST_BODY],
+dnl Try
+dnl GCC -std=gnu++11 (unused restrictive mode: -std=c++11) [and 0x variants]
+dnl IBM XL C -qlanglvl=extended0x
+dnl (pre-V12.1; unused restrictive mode: -qlanglvl=stdcxx11)
+dnl HP aC++ -AA
+dnl Intel ICC -std=c++11 -std=c++0x
+dnl Solaris N/A (no support)
+dnl Tru64 N/A (no support)
+dnl with extended modes being tried first.
+[[-std=gnu++11 -std=c++11 -std=gnu++0x -std=c++0x -qlanglvl=extended0x -AA]], [$1], [$2])[]dnl
+])# _AC_PROG_CXX_CXX11
diff --git a/make-dist b/make-dist
index 1cd1a50d75..c0b0a0466f 100755
--- a/make-dist
+++ b/make-dist
@@ -284,7 +284,7 @@ echo "Creating top directory: '${tempdir}'"
mkdir ${tempdir}
if [ "$changelog" = yes ]; then
- if test -d .git; then
+ if test -e .git; then
echo "Making top-level ChangeLog"
make ChangeLog CHANGELOG=${tempdir}/ChangeLog || \
{ x=$?; echo "make ChangeLog FAILED (try --no-changelog?)" >&2; exit $x; }
diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp
index 118e63451f..d1a6eaba5d 100644
--- a/msdos/sed2v2.inp
+++ b/msdos/sed2v2.inp
@@ -66,7 +66,7 @@
/^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/
/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION VERSION/
/^#undef PENDING_OUTPUT_COUNT/s/^.*$/#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_ptr - (FILE)->_base)/
-/^#undef VERSION/s/^.*$/#define VERSION "25.1"/
+/^#undef VERSION/s/^.*$/#define VERSION "25.1.50"/
/^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/
/^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/
/^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/
diff --git a/nt/Makefile.in b/nt/Makefile.in
index 2b528aa4bd..28060febad 100644
--- a/nt/Makefile.in
+++ b/nt/Makefile.in
@@ -225,9 +225,18 @@ extraclean: maintainer-clean
check:
@echo "We don't have any tests for the nt/ directory yet."
+ETAGS = ../lib-src/etags${EXEEXT}
+
+${ETAGS}: FORCE
+ ${MAKE} -C ../lib-src $(notdir $@)
+
+tagsfiles= $(wildcard ${srcdir}/*.[ch])
+
+FORCE:
+.PHONY: tags FORCE
tags: TAGS
-TAGS: ${EXE_FILES:${EXEEXT}=.c}
- ../lib-src/etags *.[ch]
+TAGS: ${ETAGS} ${tagsfiles}
+ ${ETAGS} ${tagsfiles}
## Build the programs
addpm${EXEEXT}: ${srcdir}/addpm.c ../src/epaths.h
diff --git a/nt/gnulib.mk b/nt/gnulib.mk
index 6884bf9f07..fdbad17184 100644
--- a/nt/gnulib.mk
+++ b/nt/gnulib.mk
@@ -1,4 +1,4 @@
-## This file is an edited copy if ../lib/gnulib.mk.
+## This file is an edited copy of ../lib/gnulib.mk.
##
## The purpose of the edits is to avoid generating any headers
## which would conflict with either the headers we have in nt/inc,
@@ -43,7 +43,7 @@
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=flexmember --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=setenv --avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib --avoid=unsetenv --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt binary-io byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qcopy-acl readlink readlinkat sig2str socklen stat-time stdalign stddef stdio stpcpy strftime strtoimax strtoumax symlink sys_stat sys_time time time_r time_rz timegm timer-time timespec-add timespec-sub unsetenv update-copyright utimens vla warnings
+# Reproduce by: gnulib-tool --import --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=flexmember --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=setenv --avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib --avoid=unsetenv --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt binary-io byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode filevercmp fstatat fsync getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog ignore-value intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qcopy-acl readlink readlinkat sig2str socklen stat-time std-gnu11 stdalign stddef stdio stpcpy strftime strtoimax strtoumax symlink sys_stat sys_time time time_r time_rz timegm timer-time timespec-add timespec-sub unsetenv update-copyright utimens vla warnings
MOSTLYCLEANFILES += core *.stackdump
@@ -334,6 +334,14 @@ EXTRA_DIST += filemode.h
## end gnulib module filemode
+## begin gnulib module filevercmp
+
+libgnu_a_SOURCES += filevercmp.c
+
+EXTRA_DIST += filevercmp.h
+
+## end gnulib module filevercmp
+
## begin gnulib module fpending
@@ -1082,6 +1090,7 @@ EXTRA_DIST += utimens.h
## begin gnulib module verify
+
EXTRA_DIST += verify.h
## end gnulib module verify
diff --git a/nt/inc/ms-w32.h b/nt/inc/ms-w32.h
index d1534336c4..bb8ae6ad8f 100644
--- a/nt/inc/ms-w32.h
+++ b/nt/inc/ms-w32.h
@@ -185,6 +185,13 @@ extern struct tm * sys_localtime (const time_t *);
supply the 2nd arg correctly, so don't use _setjmp directly in that
case. */
#undef HAVE__SETJMP
+
+/* Unlike MS and mingw.org, MinGW64 doesn't define gai_strerror as an
+ inline function in a system header file, and instead seems to
+ require to link against ws2_32.a. But we don't want to link with
+ -lws2_32, as that would make Emacs dependent on the respective DLL.
+ So MinGW64 is amply punished here by the following: */
+#undef HAVE_GAI_STRERROR
#endif
/* The following is needed for recovery from C stack overflows. */
@@ -284,6 +291,9 @@ extern int sys_umask (int);
/* Map to MSVC names. */
#define execlp _execlp
#define execvp _execvp
+#include <stdint.h> /* for intptr_t */
+extern intptr_t _execvp (const char *, char **);
+extern intptr_t execve (const char *, char * const *, char * const *);
#define fdatasync _commit
#define fdopen _fdopen
#define fsync _commit
diff --git a/nt/inc/sys/socket.h b/nt/inc/sys/socket.h
index ad40fc9a23..6b9f56f917 100644
--- a/nt/inc/sys/socket.h
+++ b/nt/inc/sys/socket.h
@@ -98,6 +98,8 @@ typedef unsigned short uint16_t;
#define accept sys_accept
#define recvfrom sys_recvfrom
#define sendto sys_sendto
+#define getaddrinfo sys_getaddrinfo
+#define freeaddrinfo sys_freeaddrinfo
int sys_socket(int af, int type, int protocol);
int sys_bind (int s, const struct sockaddr *addr, int namelen);
@@ -118,6 +120,9 @@ int sys_recvfrom (int s, char *buf, int len, int flags,
struct sockaddr *from, int * fromlen);
int sys_sendto (int s, const char * buf, int len, int flags,
const struct sockaddr *to, int tolen);
+int sys_getaddrinfo (const char * node, const char * service,
+ const struct addrinfo * hints, struct addrinfo ** res);
+void sys_freeaddrinfo (struct addrinfo * ai);
/* In addition to wrappers for the winsock functions, we also provide
an fcntl function, for setting sockets to non-blocking mode. */
diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
index 05034fedd4..f3c8f81e28 100644
--- a/nt/mingw-cfg.site
+++ b/nt/mingw-cfg.site
@@ -40,6 +40,12 @@ gl_cv_sys_struct_timespec_in_pthread_h=no
# Or at all...
ac_cv_header_pthread_h=no
+# We don't want to check for these functions
+# because they are implemented in libwinpthread.
+ac_cv_search_clock_gettime="none required"
+ac_cv_func_clock_gettime=no
+ac_cv_func_clock_settime=no
+
# ACL functions are implemented in w32.c
ac_cv_search_acl_get_file="none required"
ac_cv_func_acl_get_file=yes
@@ -68,6 +74,10 @@ ac_cv_func_getsockname=yes
ac_cv_func_getpeername=yes
# Implemented as sys_socket in w32.c
ac_cv_func_socket=yes
+# Implemented as sys_getaddrinfo in w32.c
+ac_cv_func_getaddrinfo=yes
+# Implemented as an inline function in ws2tcpip.h
+ac_cv_func_gai_strerror=yes
# Implemented in w32.c
ac_cv_func_mkostemp=yes
ac_cv_func_readlink=yes
@@ -119,3 +129,5 @@ gl_cv_func_stat_file_slash=yes
ac_cv_func_random=yes
# Implemented in w32.c as sys_putenv
gl_cv_func_svid_putenv=yes
+# GCC warnings that produce too much noise
+gl_cv_warn_c__Wredundant_decls=no
diff --git a/nt/runemacs.c b/nt/runemacs.c
index b5e16c0304..9edf148348 100644
--- a/nt/runemacs.c
+++ b/nt/runemacs.c
@@ -203,7 +203,7 @@ void
set_user_model_id (void)
{
HMODULE shell;
- HRESULT (WINAPI * set_user_model) (wchar_t * id);
+ HRESULT (WINAPI * set_user_model) (const wchar_t * id);
/* On Windows 7 and later, we need to set the user model ID
to associate emacsclient launched files with Emacs frames
diff --git a/oldXMenu/Makefile.in b/oldXMenu/Makefile.in
index 6be115a4ab..a695e73157 100644
--- a/oldXMenu/Makefile.in
+++ b/oldXMenu/Makefile.in
@@ -58,12 +58,12 @@ CC=@CC@
CFLAGS=@CFLAGS@
CPPFLAGS = @CPPFLAGS@
-TAGS = etags
RM = rm -f
RANLIB = @RANLIB@
AR = @AR@
ARFLAGS = @ARFLAGS@
MKDIR_P = @MKDIR_P@
+EXEEXT = @EXEEXT@
OBJS = Activate.o \
AddPane.o \
@@ -152,8 +152,17 @@ clean mostlyclean:
bootstrap-clean maintainer-clean distclean: clean
rm -f Makefile
-.PHONY: tags
-tags:
- $(TAGS) -t *.[ch]
+ETAGS = ../lib-src/etags${EXEEXT}
+
+${ETAGS}: FORCE
+ ${MAKE} -C ../lib-src $(notdir $@)
+
+tagsfiles = $(wildcard ${srcdir}/*.[ch])
+
+FORCE:
+.PHONY: tags FORCE
+tags: TAGS
+TAGS: ${ETAGS} ${tagsfiles}
+ ${ETAGS} ${tagsfiles}
### Makefile.in ends here
diff --git a/src/.gdbinit b/src/.gdbinit
index a4e9f70938..8e7ac3ce54 100644
--- a/src/.gdbinit
+++ b/src/.gdbinit
@@ -1215,21 +1215,6 @@ document xwhichsymbols
maximum number of symbols referencing it to produce.
end
-define xbytecode
- set $bt = byte_stack_list
- while $bt
- xgetptr $bt->byte_string
- set $ptr = (struct Lisp_String *) $ptr
- xprintbytestr $ptr
- printf "\n0x%x => ", $bt->byte_string
- xwhichsymbols $bt->byte_string 5
- set $bt = $bt->next
- end
-end
-document xbytecode
- Print a backtrace of the byte code stack.
-end
-
# Show Lisp backtrace after normal backtrace.
define hookpost-backtrace
set $bt = backtrace_top ()
diff --git a/src/Makefile.in b/src/Makefile.in
index d54670932d..89f7a921fa 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -236,6 +236,8 @@ IMAGEMAGICK_CFLAGS= @IMAGEMAGICK_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
+GETADDRINFO_A_LIBS = @GETADDRINFO_A_LIBS@
+
LIBZ = @LIBZ@
## system-specific libs for dynamic modules, else empty
@@ -255,7 +257,9 @@ XFIXES_CFLAGS = @XFIXES_CFLAGS@
## widget.o if USE_X_TOOLKIT, otherwise empty.
WIDGET_OBJ=@WIDGET_OBJ@
-## sheap.o if CYGWIN, otherwise empty.
+HYBRID_MALLOC = @HYBRID_MALLOC@
+
+## cygw32.o if CYGWIN, otherwise empty.
CYGWIN_OBJ=@CYGWIN_OBJ@
## fontset.o fringe.o image.o if we have any window system
@@ -299,20 +303,23 @@ CM_OBJ=@CM_OBJ@
LIBGPM = @LIBGPM@
-## -lresolv, or empty.
-LIBRESOLV = @LIBRESOLV@
-
LIBSELINUX_LIBS = @LIBSELINUX_LIBS@
LIBGNUTLS_LIBS = @LIBGNUTLS_LIBS@
LIBGNUTLS_CFLAGS = @LIBGNUTLS_CFLAGS@
+LIBSYSTEMD_LIBS = @LIBSYSTEMD_LIBS@
+LIBSYSTEMD_CFLAGS = @LIBSYSTEMD_CFLAGS@
+
INTERVALS_H = dispextern.h intervals.h composite.h
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
RUN_TEMACS = ./temacs
+# Whether builds should contain details. '--no-build-details' or empty.
+BUILD_DETAILS = @BUILD_DETAILS@
+
UNEXEC_OBJ = @UNEXEC_OBJ@
CANNOT_DUMP=@CANNOT_DUMP@
@@ -369,6 +376,7 @@ ALL_CFLAGS=-Demacs $(MYCPPFLAGS) -I. -I$(srcdir) \
$(WEBKIT_CFLAGS) \
$(SETTINGS_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \
$(LIBOTF_CFLAGS) $(M17N_FLT_CFLAGS) $(DEPFLAGS) \
+ $(LIBSYSTEMD_CFLAGS) \
$(LIBGNUTLS_CFLAGS) $(NOTIFY_CFLAGS) $(CAIRO_CFLAGS) \
$(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAGS)
ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
@@ -398,6 +406,7 @@ base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
doprnt.o intervals.o textprop.o composite.o xml.o $(NOTIFY_OBJ) \
$(XWIDGETS_OBJ) \
profiler.o decompress.o \
+ $(if $(HYBRID_MALLOC),sheap.o) \
$(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ) \
$(W32_OBJ) $(WINDOW_SYSTEM_OBJ) $(XGSELOBJ)
obj = $(base_obj) $(NS_OBJC_OBJ)
@@ -480,11 +489,11 @@ LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(LIBX_BASE) $(LIBIMAGE) \
$(WEBKIT_LIBS) \
$(LIB_EACCESS) $(LIB_FDATASYNC) $(LIB_TIMER_TIME) $(DBUS_LIBS) \
$(LIB_EXECINFO) $(XRANDR_LIBS) $(XINERAMA_LIBS) $(XFIXES_LIBS) \
- $(LIBXML2_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) $(CAIRO_LIBS) \
+ $(LIBXML2_LIBS) $(LIBGPM) $(LIBS_SYSTEM) $(CAIRO_LIBS) \
$(LIBS_TERMCAP) $(GETLOADAVG_LIBS) $(SETTINGS_LIBS) $(LIBSELINUX_LIBS) \
$(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \
- $(LIBGNUTLS_LIBS) $(LIB_PTHREAD) \
- $(NOTIFY_LIBS) $(LIB_MATH) $(LIBZ) $(LIBMODULES)
+ $(LIBGNUTLS_LIBS) $(LIB_PTHREAD) $(GETADDRINFO_A_LIBS) \
+ $(NOTIFY_LIBS) $(LIB_MATH) $(LIBZ) $(LIBMODULES) $(LIBSYSTEMD_LIBS)
$(leimdir)/leim-list.el: bootstrap-emacs$(EXEEXT)
$(MAKE) -C ../leim leim-list.el EMACS="$(bootstrap_exe)"
@@ -532,7 +541,7 @@ emacs$(EXEEXT): temacs$(EXEEXT) \
ifeq ($(CANNOT_DUMP),yes)
ln -f temacs$(EXEEXT) $@
else
- LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump
+ LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup dump
ifneq ($(PAXCTL_dumped),)
$(PAXCTL_dumped) $@
endif
@@ -584,7 +593,9 @@ globals.h: gl-stamp; @true
$(ALLOBJS): globals.h
-$(lib)/libgnu.a: $(config_h)
+LIBEGNU_ARCHIVE = $(lib)/lib$(if $(HYBRID_MALLOC),e)gnu.a
+
+$(LIBEGNU_ARCHIVE): $(config_h)
$(MAKE) -C $(lib) all
## We have to create $(etc) here because init_cmdargs tests its
@@ -592,9 +603,9 @@ $(lib)/libgnu.a: $(config_h)
## This goes on to affect various things, and the emacs binary fails
## to start if Vinstallation_directory has the wrong value.
temacs$(EXEEXT): $(LIBXMENU) $(ALLOBJS) \
- $(lib)/libgnu.a $(EMACSRES) ${charsets} ${charscript}
+ $(LIBEGNU_ARCHIVE) $(EMACSRES) ${charsets} ${charscript}
$(AM_V_CCLD)$(CC) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(LDFLAGS) \
- -o temacs $(ALLOBJS) $(lib)/libgnu.a $(W32_RES_LINK) $(LIBES)
+ -o temacs $(ALLOBJS) $(LIBEGNU_ARCHIVE) $(W32_RES_LINK) $(LIBES)
$(MKDIR_P) $(etc)
ifneq ($(CANNOT_DUMP),yes)
ifneq ($(PAXCTL_notdumped),)
@@ -667,32 +678,34 @@ extraclean: distclean
-rm -f *~ \#*
-ETAGS = ../lib-src/etags
+ETAGS = ../lib-src/etags${EXEEXT}
+
+${ETAGS}: FORCE
+ ${MAKE} -C ../lib-src $(notdir $@)
-ctagsfiles1 = [xyzXYZ]*.[hc]
-ctagsfiles2 = [a-wA-W]*.[hc]
-ctagsfiles3 = [a-zA-Z]*.m
+ctagsfiles1 = $(wildcard ${srcdir}/*.[hc])
+ctagsfiles2 = $(wildcard ${srcdir}/*.m)
## FIXME? In out-of-tree builds, should TAGS be generated in srcdir?
## This does not need to depend on ../lisp and ../lwlib TAGS files,
## because etags "--include" only includes a pointer to the file,
## rather than the file contents.
-TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) $(srcdir)/$(ctagsfiles3)
- "$(ETAGS)" --include=../lisp/TAGS --include=$(lwlibdir)/TAGS \
+TAGS: ${ETAGS} $(ctagsfiles1) $(ctagsfiles2)
+ ${ETAGS} --include=../lisp/TAGS --include=$(lwlibdir)/TAGS \
--regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/\1/' \
--regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"[^"]+",[ ]\([A-Za-z0-9_]+\)/\1/' \
- $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) \
+ $(ctagsfiles1) \
--regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/\1/' \
--regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"[^"]+",[ ]\([A-Za-z0-9_]+\)/\1/' \
- $(srcdir)/$(ctagsfiles3)
+ $(ctagsfiles2)
## Arrange to make tags tables for ../lisp and ../lwlib,
## which the above TAGS file for the C files includes by reference.
-../lisp/TAGS:
+../lisp/TAGS: FORCE
$(MAKE) -C ../lisp TAGS ETAGS="$(ETAGS)"
-$(lwlibdir)/TAGS:
+$(lwlibdir)/TAGS: FORCE
$(MAKE) -C $(lwlibdir) TAGS ETAGS="$(ETAGS)"
tags: TAGS ../lisp/TAGS $(lwlibdir)/TAGS
@@ -737,7 +750,7 @@ bootstrap-emacs$(EXEEXT): temacs$(EXEEXT)
ifeq ($(CANNOT_DUMP),yes)
ln -f temacs$(EXEEXT) $@
else
- $(RUN_TEMACS) --batch --load loadup bootstrap
+ $(RUN_TEMACS) --batch $(BUILD_DETAILS) --load loadup bootstrap
ifneq ($(PAXCTL_dumped),)
$(PAXCTL_dumped) emacs$(EXEEXT)
endif
diff --git a/src/alloc.c b/src/alloc.c
index 45234474a2..db165757e1 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -20,12 +20,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
+#include <errno.h>
#include <stdio.h>
#include <limits.h> /* For CHAR_BIT. */
-
-#ifdef ENABLE_CHECKING
-#include <signal.h> /* For SIGABRT. */
-#endif
+#include <signal.h> /* For SIGABRT, SIGDANGER. */
#ifdef HAVE_PTHREAD
#include <pthread.h>
@@ -35,6 +33,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "dispextern.h"
#include "intervals.h"
#include "puresize.h"
+#include "sheap.h"
#include "systime.h"
#include "character.h"
#include "buffer.h"
@@ -58,6 +57,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "dosfns.h" /* For dos_memory_info. */
#endif
+#ifdef HAVE_MALLOC_H
+# include <malloc.h>
+#endif
+
#if (defined ENABLE_CHECKING \
&& defined HAVE_VALGRIND_VALGRIND_H \
&& !defined USE_VALGRIND)
@@ -106,8 +109,6 @@ my_heap_start (void)
#ifdef DOUG_LEA_MALLOC
-#include <malloc.h>
-
/* Specify maximum number of areas to mmap. It would be nice to use a
value that explicitly means "no limit". */
@@ -117,18 +118,6 @@ my_heap_start (void)
inside glibc's malloc. */
static void *malloc_state_ptr;
-/* Get and free this pointer; useful around unexec. */
-void
-alloc_unexec_pre (void)
-{
- malloc_state_ptr = malloc_get_state ();
-}
-void
-alloc_unexec_post (void)
-{
- free (malloc_state_ptr);
-}
-
/* Restore the dumped malloc state. Because malloc can be invoked
even before main (e.g. by the dynamic linker), the dumped malloc
state must be restored as early as possible using this special hook. */
@@ -162,21 +151,50 @@ malloc_initialize_hook (void)
}
}
- malloc_set_state (malloc_state_ptr);
+ if (malloc_set_state (malloc_state_ptr) != 0)
+ emacs_abort ();
# ifndef XMALLOC_OVERRUN_CHECK
alloc_unexec_post ();
# endif
}
}
+/* Declare the malloc initialization hook, which runs before 'main' starts.
+ EXTERNALLY_VISIBLE works around Bug#22522. */
# ifndef __MALLOC_HOOK_VOLATILE
# define __MALLOC_HOOK_VOLATILE
# endif
-voidfuncptr __MALLOC_HOOK_VOLATILE __malloc_initialize_hook
+voidfuncptr __MALLOC_HOOK_VOLATILE __malloc_initialize_hook EXTERNALLY_VISIBLE
= malloc_initialize_hook;
#endif
+/* Allocator-related actions to do just before and after unexec. */
+
+void
+alloc_unexec_pre (void)
+{
+#ifdef DOUG_LEA_MALLOC
+ malloc_state_ptr = malloc_get_state ();
+ if (!malloc_state_ptr)
+ fatal ("malloc_get_state: %s", strerror (errno));
+#endif
+#ifdef HYBRID_MALLOC
+ bss_sbrk_did_unexec = true;
+#endif
+}
+
+void
+alloc_unexec_post (void)
+{
+#ifdef DOUG_LEA_MALLOC
+ free (malloc_state_ptr);
+#endif
+#ifdef HYBRID_MALLOC
+ bss_sbrk_did_unexec = false;
+#endif
+}
+
/* Mark, unmark, query mark bit of a Lisp string. S must be a pointer
to a struct Lisp_String. */
@@ -468,15 +486,10 @@ static void *pure_alloc (size_t, int);
? ((x) + (y) - 1) - ((x) + (y) - 1) % (y) \
: ((x) + (y) - 1) & ~ ((y) - 1))
-/* Bug#23764 */
-#ifdef ALIGN
-# undef ALIGN
-#endif
-
/* Return PTR rounded up to the next multiple of ALIGNMENT. */
static void *
-ALIGN (void *ptr, int alignment)
+pointer_align (void *ptr, int alignment)
{
return (void *) ROUNDUP ((uintptr_t) ptr, alignment);
}
@@ -555,6 +568,8 @@ static struct Lisp_Finalizer doomed_finalizers;
Malloc
************************************************************************/
+#if defined SIGDANGER || (!defined SYSTEM_MALLOC && !defined HYBRID_MALLOC)
+
/* Function malloc calls this if it finds we are near exhausting storage. */
void
@@ -563,6 +578,7 @@ malloc_warning (const char *str)
pending_malloc_warning = str;
}
+#endif
/* Display an already-pending malloc warning. */
@@ -1116,23 +1132,14 @@ lisp_free (void *block)
unexmacosx.c, so don't use it on Darwin. */
#if ! ADDRESS_SANITIZER && !defined DARWIN_OS
-# if !defined SYSTEM_MALLOC && !defined DOUG_LEA_MALLOC && !defined HYBRID_MALLOC
+# if (defined HAVE_ALIGNED_ALLOC \
+ || (defined HYBRID_MALLOC \
+ ? defined HAVE_POSIX_MEMALIGN \
+ : !defined SYSTEM_MALLOC && !defined DOUG_LEA_MALLOC))
# define USE_ALIGNED_ALLOC 1
-# ifndef HAVE_ALIGNED_ALLOC
-/* Defined in gmalloc.c. */
-void *aligned_alloc (size_t, size_t);
-# endif
-# elif defined HYBRID_MALLOC
-# if defined HAVE_ALIGNED_ALLOC || defined HAVE_POSIX_MEMALIGN
-# define USE_ALIGNED_ALLOC 1
-# define aligned_alloc hybrid_aligned_alloc
-/* Defined in gmalloc.c. */
-void *aligned_alloc (size_t, size_t);
-# endif
-# elif defined HAVE_ALIGNED_ALLOC
-# define USE_ALIGNED_ALLOC 1
-# elif defined HAVE_POSIX_MEMALIGN
+# elif !defined HYBRID_MALLOC && defined HAVE_POSIX_MEMALIGN
# define USE_ALIGNED_ALLOC 1
+# define aligned_alloc my_aligned_alloc /* Avoid collision with lisp.h. */
static void *
aligned_alloc (size_t alignment, size_t size)
{
@@ -1171,16 +1178,18 @@ struct ablock
char payload[BLOCK_BYTES];
struct ablock *next_free;
} x;
- /* `abase' is the aligned base of the ablocks. */
- /* It is overloaded to hold the virtual `busy' field that counts
- the number of used ablock in the parent ablocks.
- The first ablock has the `busy' field, the others have the `abase'
- field. To tell the difference, we assume that pointers will have
- integer values larger than 2 * ABLOCKS_SIZE. The lowest bit of `busy'
- is used to tell whether the real base of the parent ablocks is `abase'
- (if not, the word before the first ablock holds a pointer to the
- real base). */
+
+ /* ABASE is the aligned base of the ablocks. It is overloaded to
+ hold a virtual "busy" field that counts twice the number of used
+ ablock values in the parent ablocks, plus one if the real base of
+ the parent ablocks is ABASE (if the "busy" field is even, the
+ word before the first ablock holds a pointer to the real base).
+ The first ablock has a "busy" ABASE, and the others have an
+ ordinary pointer ABASE. To tell the difference, the code assumes
+ that pointers, when cast to uintptr_t, are at least 2 *
+ ABLOCKS_SIZE + 1. */
struct ablocks *abase;
+
/* The padding of all but the last ablock is unused. The padding of
the last ablock in an ablocks is not allocated. */
#if BLOCK_PADDING
@@ -1199,18 +1208,18 @@ struct ablocks
#define ABLOCK_ABASE(block) \
(((uintptr_t) (block)->abase) <= (1 + 2 * ABLOCKS_SIZE) \
- ? (struct ablocks *)(block) \
+ ? (struct ablocks *) (block) \
: (block)->abase)
/* Virtual `busy' field. */
-#define ABLOCKS_BUSY(abase) ((abase)->blocks[0].abase)
+#define ABLOCKS_BUSY(a_base) ((a_base)->blocks[0].abase)
/* Pointer to the (not necessarily aligned) malloc block. */
#ifdef USE_ALIGNED_ALLOC
#define ABLOCKS_BASE(abase) (abase)
#else
#define ABLOCKS_BASE(abase) \
- (1 & (intptr_t) ABLOCKS_BUSY (abase) ? abase : ((void **)abase)[-1])
+ (1 & (intptr_t) ABLOCKS_BUSY (abase) ? abase : ((void **) (abase))[-1])
#endif
/* The list of free ablock. */
@@ -1236,7 +1245,7 @@ lisp_align_malloc (size_t nbytes, enum mem_type type)
if (!free_ablock)
{
int i;
- intptr_t aligned; /* int gets warning casting to 64-bit pointer. */
+ bool aligned;
#ifdef DOUG_LEA_MALLOC
if (!mmap_lisp_allowed_p ())
@@ -1247,7 +1256,7 @@ lisp_align_malloc (size_t nbytes, enum mem_type type)
abase = base = aligned_alloc (BLOCK_ALIGN, ABLOCKS_BYTES);
#else
base = malloc (ABLOCKS_BYTES);
- abase = ALIGN (base, BLOCK_ALIGN);
+ abase = pointer_align (base, BLOCK_ALIGN);
#endif
if (base == 0)
@@ -1292,13 +1301,14 @@ lisp_align_malloc (size_t nbytes, enum mem_type type)
abase->blocks[i].x.next_free = free_ablock;
free_ablock = &abase->blocks[i];
}
- ABLOCKS_BUSY (abase) = (struct ablocks *) aligned;
+ intptr_t ialigned = aligned;
+ ABLOCKS_BUSY (abase) = (struct ablocks *) ialigned;
- eassert (0 == ((uintptr_t) abase) % BLOCK_ALIGN);
+ eassert ((uintptr_t) abase % BLOCK_ALIGN == 0);
eassert (ABLOCK_ABASE (&abase->blocks[3]) == abase); /* 3 is arbitrary */
eassert (ABLOCK_ABASE (&abase->blocks[0]) == abase);
eassert (ABLOCKS_BASE (abase) == base);
- eassert (aligned == (intptr_t) ABLOCKS_BUSY (abase));
+ eassert ((intptr_t) ABLOCKS_BUSY (abase) == aligned);
}
abase = ABLOCK_ABASE (free_ablock);
@@ -1334,12 +1344,14 @@ lisp_align_free (void *block)
ablock->x.next_free = free_ablock;
free_ablock = ablock;
/* Update busy count. */
- ABLOCKS_BUSY (abase)
- = (struct ablocks *) (-2 + (intptr_t) ABLOCKS_BUSY (abase));
+ intptr_t busy = (intptr_t) ABLOCKS_BUSY (abase) - 2;
+ eassume (0 <= busy && busy <= 2 * ABLOCKS_SIZE - 1);
+ ABLOCKS_BUSY (abase) = (struct ablocks *) busy;
- if (2 > (intptr_t) ABLOCKS_BUSY (abase))
+ if (busy < 2)
{ /* All the blocks are free. */
- int i = 0, aligned = (intptr_t) ABLOCKS_BUSY (abase);
+ int i = 0;
+ bool aligned = busy;
struct ablock **tem = &free_ablock;
struct ablock *atop = &abase->blocks[aligned ? ABLOCKS_SIZE : ABLOCKS_SIZE - 1];
@@ -2171,89 +2183,96 @@ free_large_strings (void)
static void
compact_small_strings (void)
{
- struct sblock *b, *tb, *next;
- sdata *from, *to, *end, *tb_end;
- sdata *to_end, *from_end;
-
/* TB is the sblock we copy to, TO is the sdata within TB we copy
to, and TB_END is the end of TB. */
- tb = oldest_sblock;
- tb_end = (sdata *) ((char *) tb + SBLOCK_SIZE);
- to = tb->data;
-
- /* Step through the blocks from the oldest to the youngest. We
- expect that old blocks will stabilize over time, so that less
- copying will happen this way. */
- for (b = oldest_sblock; b; b = b->next)
+ struct sblock *tb = oldest_sblock;
+ if (tb)
{
- end = b->next_free;
- eassert ((char *) end <= (char *) b + SBLOCK_SIZE);
+ sdata *tb_end = (sdata *) ((char *) tb + SBLOCK_SIZE);
+ sdata *to = tb->data;
- for (from = b->data; from < end; from = from_end)
+ /* Step through the blocks from the oldest to the youngest. We
+ expect that old blocks will stabilize over time, so that less
+ copying will happen this way. */
+ struct sblock *b = tb;
+ do
{
- /* Compute the next FROM here because copying below may
- overwrite data we need to compute it. */
- ptrdiff_t nbytes;
- struct Lisp_String *s = from->string;
+ sdata *end = b->next_free;
+ eassert ((char *) end <= (char *) b + SBLOCK_SIZE);
+
+ for (sdata *from = b->data; from < end; )
+ {
+ /* Compute the next FROM here because copying below may
+ overwrite data we need to compute it. */
+ ptrdiff_t nbytes;
+ struct Lisp_String *s = from->string;
#ifdef GC_CHECK_STRING_BYTES
- /* Check that the string size recorded in the string is the
- same as the one recorded in the sdata structure. */
- if (s && string_bytes (s) != SDATA_NBYTES (from))
- emacs_abort ();
+ /* Check that the string size recorded in the string is the
+ same as the one recorded in the sdata structure. */
+ if (s && string_bytes (s) != SDATA_NBYTES (from))
+ emacs_abort ();
#endif /* GC_CHECK_STRING_BYTES */
- nbytes = s ? STRING_BYTES (s) : SDATA_NBYTES (from);
- eassert (nbytes <= LARGE_STRING_BYTES);
+ nbytes = s ? STRING_BYTES (s) : SDATA_NBYTES (from);
+ eassert (nbytes <= LARGE_STRING_BYTES);
- nbytes = SDATA_SIZE (nbytes);
- from_end = (sdata *) ((char *) from + nbytes + GC_STRING_EXTRA);
+ nbytes = SDATA_SIZE (nbytes);
+ sdata *from_end = (sdata *) ((char *) from
+ + nbytes + GC_STRING_EXTRA);
#ifdef GC_CHECK_STRING_OVERRUN
- if (memcmp (string_overrun_cookie,
- (char *) from_end - GC_STRING_OVERRUN_COOKIE_SIZE,
- GC_STRING_OVERRUN_COOKIE_SIZE))
- emacs_abort ();
+ if (memcmp (string_overrun_cookie,
+ (char *) from_end - GC_STRING_OVERRUN_COOKIE_SIZE,
+ GC_STRING_OVERRUN_COOKIE_SIZE))
+ emacs_abort ();
#endif
- /* Non-NULL S means it's alive. Copy its data. */
- if (s)
- {
- /* If TB is full, proceed with the next sblock. */
- to_end = (sdata *) ((char *) to + nbytes + GC_STRING_EXTRA);
- if (to_end > tb_end)
+ /* Non-NULL S means it's alive. Copy its data. */
+ if (s)
{
- tb->next_free = to;
- tb = tb->next;
- tb_end = (sdata *) ((char *) tb + SBLOCK_SIZE);
- to = tb->data;
- to_end = (sdata *) ((char *) to + nbytes + GC_STRING_EXTRA);
- }
+ /* If TB is full, proceed with the next sblock. */
+ sdata *to_end = (sdata *) ((char *) to
+ + nbytes + GC_STRING_EXTRA);
+ if (to_end > tb_end)
+ {
+ tb->next_free = to;
+ tb = tb->next;
+ tb_end = (sdata *) ((char *) tb + SBLOCK_SIZE);
+ to = tb->data;
+ to_end = (sdata *) ((char *) to + nbytes + GC_STRING_EXTRA);
+ }
- /* Copy, and update the string's `data' pointer. */
- if (from != to)
- {
- eassert (tb != b || to < from);
- memmove (to, from, nbytes + GC_STRING_EXTRA);
- to->string->data = SDATA_DATA (to);
- }
+ /* Copy, and update the string's `data' pointer. */
+ if (from != to)
+ {
+ eassert (tb != b || to < from);
+ memmove (to, from, nbytes + GC_STRING_EXTRA);
+ to->string->data = SDATA_DATA (to);
+ }
- /* Advance past the sdata we copied to. */
- to = to_end;
+ /* Advance past the sdata we copied to. */
+ to = to_end;
+ }
+ from = from_end;
}
+ b = b->next;
}
- }
+ while (b);
- /* The rest of the sblocks following TB don't contain live data, so
- we can free them. */
- for (b = tb->next; b; b = next)
- {
- next = b->next;
- lisp_free (b);
+ /* The rest of the sblocks following TB don't contain live data, so
+ we can free them. */
+ for (b = tb->next; b; )
+ {
+ struct sblock *next = b->next;
+ lisp_free (b);
+ b = next;
+ }
+
+ tb->next_free = to;
+ tb->next = NULL;
}
- tb->next_free = to;
- tb->next = NULL;
current_sblock = tb;
}
@@ -3396,22 +3415,13 @@ allocate_buffer (void)
DEFUN ("make-vector", Fmake_vector, Smake_vector, 2, 2, 0,
doc: /* Return a newly created vector of length LENGTH, with each element being INIT.
See also the function `vector'. */)
- (register Lisp_Object length, Lisp_Object init)
+ (Lisp_Object length, Lisp_Object init)
{
- Lisp_Object vector;
- register ptrdiff_t sizei;
- register ptrdiff_t i;
- register struct Lisp_Vector *p;
-
CHECK_NATNUM (length);
-
- p = allocate_vector (XFASTINT (length));
- sizei = XFASTINT (length);
- for (i = 0; i < sizei; i++)
+ struct Lisp_Vector *p = allocate_vector (XFASTINT (length));
+ for (ptrdiff_t i = 0; i < XFASTINT (length); i++)
p->contents[i] = init;
-
- XSETVECTOR (vector, p);
- return vector;
+ return make_lisp_ptr (p, Lisp_Vectorlike);
}
DEFUN ("vector", Fvector, Svector, 0, MANY, 0,
@@ -3420,12 +3430,9 @@ Any number of arguments, even zero arguments, are allowed.
usage: (vector &rest OBJECTS) */)
(ptrdiff_t nargs, Lisp_Object *args)
{
- ptrdiff_t i;
- register Lisp_Object val = make_uninit_vector (nargs);
- register struct Lisp_Vector *p = XVECTOR (val);
-
- for (i = 0; i < nargs; i++)
- p->contents[i] = args[i];
+ Lisp_Object val = make_uninit_vector (nargs);
+ struct Lisp_Vector *p = XVECTOR (val);
+ memcpy (p->contents, args, nargs * sizeof *args);
return val;
}
@@ -3464,9 +3471,8 @@ stack before executing the byte-code.
usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INTERACTIVE-SPEC &rest ELEMENTS) */)
(ptrdiff_t nargs, Lisp_Object *args)
{
- ptrdiff_t i;
- register Lisp_Object val = make_uninit_vector (nargs);
- register struct Lisp_Vector *p = XVECTOR (val);
+ Lisp_Object val = make_uninit_vector (nargs);
+ struct Lisp_Vector *p = XVECTOR (val);
/* We used to purecopy everything here, if purify-flag was set. This worked
OK for Emacs-23, but with Emacs-24's lexical binding code, it can be
@@ -3476,8 +3482,7 @@ usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INT
just wasteful and other times plainly wrong (e.g. those free vars may want
to be setcar'd). */
- for (i = 0; i < nargs; i++)
- p->contents[i] = args[i];
+ memcpy (p->contents, args, nargs * sizeof *args);
make_byte_code (p);
XSETCOMPILED (val, p);
return val;
@@ -5173,7 +5178,7 @@ pure_alloc (size_t size, int type)
{
/* Allocate space for a Lisp object from the beginning of the free
space with taking account of alignment. */
- result = ALIGN (purebeg + pure_bytes_used_lisp, GCALIGNMENT);
+ result = pointer_align (purebeg + pure_bytes_used_lisp, GCALIGNMENT);
pure_bytes_used_lisp = ((char *)result - (char *)purebeg) + size;
}
else
@@ -5436,7 +5441,7 @@ purecopy (Lisp_Object obj)
}
else
{
- Lisp_Object fmt = build_pure_c_string ("Don't know how to purify: %S");
+ AUTO_STRING (fmt, "Don't know how to purify: %S");
Fsignal (Qerror, list1 (CALLN (Fformat, fmt, obj)));
}
@@ -5667,7 +5672,7 @@ garbage_collect_1 (void *end)
return Qnil;
/* Record this function, so it appears on the profiler's backtraces. */
- record_in_backtrace (Qautomatic_gc, 0, 0);
+ record_in_backtrace (QAutomatic_GC, 0, 0);
check_cons_list ();
@@ -5794,8 +5799,6 @@ garbage_collect_1 (void *end)
gc_sweep ();
- relocate_byte_stack ();
-
/* Clear the mark bits that we set in certain root slots. */
VECTOR_UNMARK (&buffer_defaults);
VECTOR_UNMARK (&buffer_local_symbols);
@@ -6130,7 +6133,7 @@ mark_face_cache (struct face_cache *c)
int i, j;
for (i = 0; i < c->used; ++i)
{
- struct face *face = FACE_FROM_ID (c->f, i);
+ struct face *face = FACE_FROM_ID_OR_NULL (c->f, i);
if (face)
{
@@ -7227,21 +7230,6 @@ die (const char *msg, const char *file, int line)
#if defined (ENABLE_CHECKING) && USE_STACK_LISP_OBJECTS
-/* Debugging check whether STR is ASCII-only. */
-
-const char *
-verify_ascii (const char *str)
-{
- const unsigned char *ptr = (unsigned char *) str, *end = ptr + strlen (str);
- while (ptr < end)
- {
- int c = STRING_CHAR_ADVANCE (ptr);
- if (!ASCII_CHAR_P (c))
- emacs_abort ();
- }
- return str;
-}
-
/* Stress alloca with inconveniently sized requests and check
whether all allocated areas may be used for Lisp_Object. */
@@ -7397,7 +7385,7 @@ do hash-consing of the objects allocated to pure space. */);
DEFSYM (Qstring_bytes, "string-bytes");
DEFSYM (Qvector_slots, "vector-slots");
DEFSYM (Qheap, "heap");
- DEFSYM (Qautomatic_gc, "Automatic GC");
+ DEFSYM (QAutomatic_GC, "Automatic GC");
DEFSYM (Qgc_cons_threshold, "gc-cons-threshold");
DEFSYM (Qchar_table_extra_slots, "char-table-extra-slots");
diff --git a/src/bidi.c b/src/bidi.c
index c2208cd12c..5824de54ad 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -1107,15 +1107,9 @@ bidi_initialize (void)
emacs_abort ();
staticpro (&bidi_brackets_table);
- DEFSYM (Qparagraph_start, "paragraph-start");
- paragraph_start_re = Fsymbol_value (Qparagraph_start);
- if (!STRINGP (paragraph_start_re))
- paragraph_start_re = build_string ("\f\\|[ \t]*$");
+ paragraph_start_re = build_string ("^\\(\f\\|[ \t]*\\)$");
staticpro (&paragraph_start_re);
- DEFSYM (Qparagraph_separate, "paragraph-separate");
- paragraph_separate_re = Fsymbol_value (Qparagraph_separate);
- if (!STRINGP (paragraph_separate_re))
- paragraph_separate_re = build_string ("[ \t\f]*$");
+ paragraph_separate_re = build_string ("^[ \t\f]*$");
staticpro (&paragraph_separate_re);
bidi_cache_sp = 0;
diff --git a/src/buffer.c b/src/buffer.c
index 89f4479740..24c997fcdb 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -30,7 +30,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <verify.h>
#include "lisp.h"
-#include "coding.h"
#include "intervals.h"
#include "systime.h"
#include "window.h"
@@ -1051,44 +1050,36 @@ it is in the sequence to be tried) even if a buffer with that name exists.
If NAME begins with a space (i.e., a buffer that is not normally
visible to users), then if buffer NAME already exists a random number
is first appended to NAME, to speed up finding a non-existent buffer. */)
- (register Lisp_Object name, Lisp_Object ignore)
+ (Lisp_Object name, Lisp_Object ignore)
{
- register Lisp_Object gentemp, tem, tem2;
- ptrdiff_t count;
- char number[INT_BUFSIZE_BOUND (ptrdiff_t) + sizeof "<>"];
+ Lisp_Object genbase;
CHECK_STRING (name);
- tem = Fstring_equal (name, ignore);
- if (!NILP (tem))
- return name;
- tem = Fget_buffer (name);
- if (NILP (tem))
+ if (!NILP (Fstring_equal (name, ignore)) || NILP (Fget_buffer (name)))
return name;
- if (!strncmp (SSDATA (name), " ", 1)) /* see bug#1229 */
+ if (SREF (name, 0) != ' ') /* See bug#1229. */
+ genbase = name;
+ else
{
/* Note fileio.c:make_temp_name does random differently. */
- tem2 = concat2 (name, make_formatted_string
- (number, "-%"pI"d",
- XFASTINT (Frandom (make_number (999999)))));
- tem = Fget_buffer (tem2);
- if (NILP (tem))
- return tem2;
+ char number[sizeof "-999999"];
+ int i = XFASTINT (Frandom (make_number (999999)));
+ AUTO_STRING_WITH_LEN (lnumber, number, sprintf (number, "-%d", i));
+ genbase = concat2 (name, lnumber);
+ if (NILP (Fget_buffer (genbase)))
+ return genbase;
}
- else
- tem2 = name;
- count = 1;
- while (1)
+ for (ptrdiff_t count = 2; ; count++)
{
- gentemp = concat2 (tem2, make_formatted_string
- (number, "<%"pD"d>", ++count));
- tem = Fstring_equal (gentemp, ignore);
- if (!NILP (tem))
- return gentemp;
- tem = Fget_buffer (gentemp);
- if (NILP (tem))
+ char number[INT_BUFSIZE_BOUND (ptrdiff_t) + sizeof "<>"];
+ AUTO_STRING_WITH_LEN (lnumber, number,
+ sprintf (number, "<%"pD"d>", count));
+ Lisp_Object gentemp = concat2 (genbase, lnumber);
+ if (!NILP (Fstring_equal (gentemp, ignore))
+ || NILP (Fget_buffer (gentemp)))
return gentemp;
}
}
@@ -1993,7 +1984,9 @@ the current buffer's major mode. */)
function = BVAR (current_buffer, major_mode);
}
- if (NILP (function) || EQ (function, Qfundamental_mode))
+ if (NILP (function)) /* If function is `fundamental-mode', allow it to run
+ so that `run-mode-hooks' and thus
+ `hack-local-variables' get run. */
return Qnil;
count = SPECPDL_INDEX ();
@@ -2001,7 +1994,7 @@ the current buffer's major mode. */)
/* To select a nonfundamental mode,
select the buffer temporarily and then call the mode function. */
- record_unwind_protect (save_excursion_restore, save_excursion_save ());
+ record_unwind_current_buffer ();
Fset_buffer (buffer);
call0 (function);
@@ -3562,8 +3555,8 @@ void
fix_start_end_in_overlays (register ptrdiff_t start, register ptrdiff_t end)
{
Lisp_Object overlay;
- struct Lisp_Overlay *before_list IF_LINT (= NULL);
- struct Lisp_Overlay *after_list IF_LINT (= NULL);
+ struct Lisp_Overlay *before_list;
+ struct Lisp_Overlay *after_list;
/* These are either nil, indicating that before_list or after_list
should be assigned, or the cons cell the cdr of which should be
assigned. */
@@ -3710,7 +3703,7 @@ fix_overlays_before (struct buffer *bp, ptrdiff_t prev, ptrdiff_t pos)
/* If parent is nil, replace overlays_before; otherwise, parent->next. */
struct Lisp_Overlay *tail = bp->overlays_before, *parent = NULL, *right_pair;
Lisp_Object tem;
- ptrdiff_t end IF_LINT (= 0);
+ ptrdiff_t end;
/* After the insertion, the several overlays may be in incorrect
order. The possibility is that, in the list `overlays_before',
@@ -3917,7 +3910,8 @@ buffer. */)
struct buffer *b, *ob = 0;
Lisp_Object obuffer;
ptrdiff_t count = SPECPDL_INDEX ();
- ptrdiff_t n_beg, n_end, o_beg IF_LINT (= 0), o_end IF_LINT (= 0);
+ ptrdiff_t n_beg, n_end;
+ ptrdiff_t o_beg UNINIT, o_end UNINIT;
CHECK_OVERLAY (overlay);
if (NILP (buffer))
@@ -5279,7 +5273,7 @@ init_buffer (int initialized)
if (NILP (BVAR (&buffer_defaults, enable_multibyte_characters)))
Fset_buffer_multibyte (Qnil);
- pwd = get_current_dir_name ();
+ pwd = emacs_get_current_dir_name ();
if (!pwd)
{
diff --git a/src/bytecode.c b/src/bytecode.c
index 9ae2e820d5..e2d8ab706c 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -17,22 +17,6 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
-/*
-hacked on by jwz@lucid.com 17-jun-91
- o added a compile-time switch to turn on simple sanity checking;
- o put back the obsolete byte-codes for error-detection;
- o added a new instruction, unbind_all, which I will use for
- tail-recursion elimination;
- o made temp_output_buffer_show be called with the right number
- of args;
- o made the new bytecodes be called with args in the right order;
- o added metering support.
-
-by Hallvard:
- o added relative jump instructions;
- o all conditionals now only do QUIT if they jump.
- */
-
#include <config.h>
#include "lisp.h"
@@ -43,18 +27,19 @@ by Hallvard:
#include "syntax.h"
#include "window.h"
-#ifdef CHECK_FRAME_FONT
-#include "frame.h"
-#include "xterm.h"
+/* Work around GCC bug 54561. */
+#if GNUC_PREREQ (4, 3, 0)
+# pragma GCC diagnostic ignored "-Wclobbered"
+#endif
+
+/* Define BYTE_CODE_SAFE true to enable some minor sanity checking,
+ useful for debugging the byte compiler. It defaults to false. */
+
+#ifndef BYTE_CODE_SAFE
+# define BYTE_CODE_SAFE false
#endif
-/*
- * define BYTE_CODE_SAFE to enable some minor sanity checking (useful for
- * debugging the byte compiler...)
- *
- * define BYTE_CODE_METER to enable generation of a byte-op usage histogram.
- */
-/* #define BYTE_CODE_SAFE */
+/* Define BYTE_CODE_METER to generate a byte-op usage histogram. */
/* #define BYTE_CODE_METER */
/* If BYTE_CODE_THREADED is defined, then the interpreter will be
@@ -62,14 +47,15 @@ by Hallvard:
as currently implemented, is incompatible with BYTE_CODE_SAFE and
BYTE_CODE_METER. */
#if (defined __GNUC__ && !defined __STRICT_ANSI__ \
- && !defined BYTE_CODE_SAFE && !defined BYTE_CODE_METER)
+ && !BYTE_CODE_SAFE && !defined BYTE_CODE_METER)
#define BYTE_CODE_THREADED
#endif
#ifdef BYTE_CODE_METER
-#define METER_2(code1, code2) AREF (AREF (Vbyte_code_meter, code1), code2)
+#define METER_2(code1, code2) \
+ (*aref_addr (AREF (Vbyte_code_meter, code1), code2))
#define METER_1(code) METER_2 (0, code)
#define METER_CODE(last_code, this_code) \
@@ -289,87 +275,25 @@ enum byte_code_op
BYTE_CODES
#undef DEFINE
-#ifdef BYTE_CODE_SAFE
+#if BYTE_CODE_SAFE
Bscan_buffer = 0153, /* No longer generated as of v18. */
Bset_mark = 0163, /* this loser is no longer generated as of v18 */
#endif
};
-
-/* Whether to maintain a `top' and `bottom' field in the stack frame. */
-#define BYTE_MAINTAIN_TOP BYTE_CODE_SAFE
-
-/* Structure describing a value stack used during byte-code execution
- in Fbyte_code. */
-
-struct byte_stack
-{
- /* Program counter. This points into the byte_string below
- and is relocated when that string is relocated. */
- const unsigned char *pc;
-
- /* Top and bottom of stack. The bottom points to an area of memory
- allocated with alloca in Fbyte_code. */
-#if BYTE_MAINTAIN_TOP
- Lisp_Object *top, *bottom;
-#endif
-
- /* The string containing the byte-code, and its current address.
- Storing this here protects it from GC because mark_byte_stack
- marks it. */
- Lisp_Object byte_string;
- const unsigned char *byte_string_start;
-
- /* Next entry in byte_stack_list. */
- struct byte_stack *next;
-};
-
-/* A list of currently active byte-code execution value stacks.
- Fbyte_code adds an entry to the head of this list before it starts
- processing byte-code, and it removes the entry again when it is
- done. Signaling an error truncates the list. */
-
-struct byte_stack *byte_stack_list;
-
-
-/* Relocate program counters in the stacks on byte_stack_list. Called
- when GC has completed. */
-
-void
-relocate_byte_stack (void)
-{
- struct byte_stack *stack;
-
- for (stack = byte_stack_list; stack; stack = stack->next)
- {
- if (stack->byte_string_start != SDATA (stack->byte_string))
- {
- ptrdiff_t offset = stack->pc - stack->byte_string_start;
- stack->byte_string_start = SDATA (stack->byte_string);
- stack->pc = stack->byte_string_start + offset;
- }
- }
-}
-
/* Fetch the next byte from the bytecode stream. */
-#ifdef BYTE_CODE_SAFE
-#define FETCH (eassert (stack.byte_string_start == SDATA (stack.byte_string)), *stack.pc++)
-#else
-#define FETCH *stack.pc++
-#endif
+#define FETCH (*pc++)
/* Fetch two bytes from the bytecode stream and make a 16-bit number
out of them. */
#define FETCH2 (op = FETCH, op + (FETCH << 8))
-/* Push x onto the execution stack. This used to be #define PUSH(x)
- (*++stackp = (x)) This oddity is necessary because Alliant can't be
- bothered to compile the preincrement operator properly, as of 4/91.
- -JimB */
+/* Push X onto the execution stack. The expression X should not
+ contain TOP, to avoid competing side effects. */
-#define PUSH(x) (top++, *top = (x))
+#define PUSH(x) (*++top = (x))
/* Pop a value off the execution stack. */
@@ -384,60 +308,6 @@ relocate_byte_stack (void)
#define TOP (*top)
-/* Actions that must be performed before and after calling a function
- that might GC. */
-
-#if !BYTE_MAINTAIN_TOP
-#define BEFORE_POTENTIAL_GC() ((void)0)
-#define AFTER_POTENTIAL_GC() ((void)0)
-#else
-#define BEFORE_POTENTIAL_GC() stack.top = top
-#define AFTER_POTENTIAL_GC() stack.top = NULL
-#endif
-
-/* Garbage collect if we have consed enough since the last time.
- We do this at every branch, to avoid loops that never GC. */
-
-#define MAYBE_GC() \
- do { \
- BEFORE_POTENTIAL_GC (); \
- maybe_gc (); \
- AFTER_POTENTIAL_GC (); \
- } while (0)
-
-/* Check for jumping out of range. */
-
-#ifdef BYTE_CODE_SAFE
-
-#define CHECK_RANGE(ARG) \
- if (ARG >= bytestr_length) emacs_abort ()
-
-#else /* not BYTE_CODE_SAFE */
-
-#define CHECK_RANGE(ARG)
-
-#endif /* not BYTE_CODE_SAFE */
-
-/* A version of the QUIT macro which makes sure that the stack top is
- set before signaling `quit'. */
-
-#define BYTE_CODE_QUIT \
- do { \
- if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \
- { \
- Lisp_Object flag = Vquit_flag; \
- Vquit_flag = Qnil; \
- BEFORE_POTENTIAL_GC (); \
- if (EQ (Vthrow_on_input, flag)) \
- Fthrow (Vthrow_on_input, Qt); \
- Fsignal (Qquit, Qnil); \
- AFTER_POTENTIAL_GC (); \
- } \
- else if (pending_signals) \
- process_pending_signals (); \
- } while (0)
-
-
DEFUN ("byte-code", Fbyte_code, Sbyte_code, 3, 3, 0,
doc: /* Function used internally in byte-compiled code.
The first argument, BYTESTR, is a string of byte code;
@@ -467,41 +337,15 @@ Lisp_Object
exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
Lisp_Object args_template, ptrdiff_t nargs, Lisp_Object *args)
{
- ptrdiff_t count = SPECPDL_INDEX ();
#ifdef BYTE_CODE_METER
int volatile this_op = 0;
- int prev_op;
-#endif
- int op;
- /* Lisp_Object v1, v2; */
- Lisp_Object *vectorp;
-#ifdef BYTE_CODE_SAFE
- ptrdiff_t const_length;
- Lisp_Object *stacke;
- ptrdiff_t bytestr_length;
-#endif
- struct byte_stack stack;
- Lisp_Object *top;
- Lisp_Object result;
- enum handlertype type;
-
-#if 0 /* CHECK_FRAME_FONT */
- {
- struct frame *f = SELECTED_FRAME ();
- if (FRAME_X_P (f)
- && FRAME_FONT (f)->direction != 0
- && FRAME_FONT (f)->direction != 1)
- emacs_abort ();
- }
#endif
CHECK_STRING (bytestr);
CHECK_VECTOR (vector);
CHECK_NATNUM (maxdepth);
-#ifdef BYTE_CODE_SAFE
- const_length = ASIZE (vector);
-#endif
+ ptrdiff_t const_length = ASIZE (vector);
if (STRING_MULTIBYTE (bytestr))
/* BYTESTR must have been produced by Emacs 20.2 or the earlier
@@ -511,90 +355,59 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
convert them back to the originally intended unibyte form. */
bytestr = Fstring_as_unibyte (bytestr);
-#ifdef BYTE_CODE_SAFE
- bytestr_length = SBYTES (bytestr);
-#endif
- vectorp = XVECTOR (vector)->contents;
-
- stack.byte_string = bytestr;
- stack.pc = stack.byte_string_start = SDATA (bytestr);
- if (MAX_ALLOCA / word_size <= XFASTINT (maxdepth))
- memory_full (SIZE_MAX);
- top = alloca ((XFASTINT (maxdepth) + 1) * sizeof *top);
-#if BYTE_MAINTAIN_TOP
- stack.bottom = top + 1;
- stack.top = NULL;
-#endif
- stack.next = byte_stack_list;
- byte_stack_list = &stack;
-
-#ifdef BYTE_CODE_SAFE
- stacke = stack.bottom - 1 + XFASTINT (maxdepth);
-#endif
+ ptrdiff_t bytestr_length = SBYTES (bytestr);
+ Lisp_Object *vectorp = XVECTOR (vector)->contents;
+
+ unsigned char quitcounter = 1;
+ EMACS_INT stack_items = XFASTINT (maxdepth) + 1;
+ USE_SAFE_ALLOCA;
+ Lisp_Object *stack_base;
+ SAFE_ALLOCA_LISP_EXTRA (stack_base, stack_items, bytestr_length);
+ Lisp_Object *stack_lim = stack_base + stack_items;
+ Lisp_Object *top = stack_base;
+ memcpy (stack_lim, SDATA (bytestr), bytestr_length);
+ void *void_stack_lim = stack_lim;
+ unsigned char const *bytestr_data = void_stack_lim;
+ unsigned char const *pc = bytestr_data;
+ ptrdiff_t count = SPECPDL_INDEX ();
- if (INTEGERP (args_template))
+ if (!NILP (args_template))
{
+ eassert (INTEGERP (args_template));
ptrdiff_t at = XINT (args_template);
bool rest = (at & 128) != 0;
int mandatory = at & 127;
ptrdiff_t nonrest = at >> 8;
- eassert (mandatory <= nonrest);
- if (nargs <= nonrest)
- {
- ptrdiff_t i;
- for (i = 0 ; i < nargs; i++, args++)
- PUSH (*args);
- if (nargs < mandatory)
- /* Too few arguments. */
- Fsignal (Qwrong_number_of_arguments,
- list2 (Fcons (make_number (mandatory),
- rest ? Qand_rest : make_number (nonrest)),
- make_number (nargs)));
- else
- {
- for (; i < nonrest; i++)
- PUSH (Qnil);
- if (rest)
- PUSH (Qnil);
- }
- }
- else if (rest)
- {
- ptrdiff_t i;
- for (i = 0 ; i < nonrest; i++, args++)
- PUSH (*args);
- PUSH (Flist (nargs - nonrest, args));
- }
- else
- /* Too many arguments. */
+ ptrdiff_t maxargs = rest ? PTRDIFF_MAX : nonrest;
+ if (! (mandatory <= nargs && nargs <= maxargs))
Fsignal (Qwrong_number_of_arguments,
list2 (Fcons (make_number (mandatory), make_number (nonrest)),
make_number (nargs)));
- }
- else if (! NILP (args_template))
- /* We should push some arguments on the stack. */
- {
- error ("Unknown args template!");
+ ptrdiff_t pushedargs = min (nonrest, nargs);
+ for (ptrdiff_t i = 0; i < pushedargs; i++, args++)
+ PUSH (*args);
+ if (nonrest < nargs)
+ PUSH (Flist (nargs - nonrest, args));
+ else
+ for (ptrdiff_t i = nargs - rest; i < nonrest; i++)
+ PUSH (Qnil);
}
- while (1)
+ while (true)
{
-#ifdef BYTE_CODE_SAFE
- if (top > stacke)
- emacs_abort ();
- else if (top < stack.bottom - 1)
+ int op;
+ enum handlertype type;
+
+ if (BYTE_CODE_SAFE && ! (stack_base <= top && top < stack_lim))
emacs_abort ();
-#endif
#ifdef BYTE_CODE_METER
- prev_op = this_op;
+ int prev_op = this_op;
this_op = op = FETCH;
METER_CODE (prev_op, op);
-#else
-#ifndef BYTE_CODE_THREADED
+#elif !defined BYTE_CODE_THREADED
op = FETCH;
#endif
-#endif
/* The interpreter can be compiled one of two ways: as an
ordinary switch-based interpreter, or as a threaded
@@ -637,7 +450,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
the table clearer. */
#define LABEL(OP) [OP] = &&insn_ ## OP
-#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
+#if GNUC_PREREQ (4, 6, 0)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Woverride-init"
#elif defined __clang__
@@ -656,7 +469,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
#undef DEFINE
};
-#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) || defined __clang__
+#if GNUC_PREREQ (4, 6, 0) || defined __clang__
# pragma GCC diagnostic pop
#endif
@@ -675,7 +488,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
CASE (Bvarref3):
CASE (Bvarref4):
CASE (Bvarref5):
- op = op - Bvarref;
+ op -= Bvarref;
goto varref;
/* This seems to be the most frequently executed byte-code
@@ -684,92 +497,51 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
op = FETCH;
varref:
{
- Lisp_Object v1, v2;
-
- v1 = vectorp[op];
- if (SYMBOLP (v1))
- {
- if (XSYMBOL (v1)->redirect != SYMBOL_PLAINVAL
- || (v2 = SYMBOL_VAL (XSYMBOL (v1)),
- EQ (v2, Qunbound)))
- {
- BEFORE_POTENTIAL_GC ();
- v2 = Fsymbol_value (v1);
- AFTER_POTENTIAL_GC ();
- }
- }
- else
- {
- BEFORE_POTENTIAL_GC ();
- v2 = Fsymbol_value (v1);
- AFTER_POTENTIAL_GC ();
- }
+ Lisp_Object v1 = vectorp[op], v2;
+ if (!SYMBOLP (v1)
+ || XSYMBOL (v1)->redirect != SYMBOL_PLAINVAL
+ || (v2 = SYMBOL_VAL (XSYMBOL (v1)), EQ (v2, Qunbound)))
+ v2 = Fsymbol_value (v1);
PUSH (v2);
NEXT;
}
CASE (Bgotoifnil):
{
- Lisp_Object v1;
- MAYBE_GC ();
+ Lisp_Object v1 = POP;
op = FETCH2;
- v1 = POP;
if (NILP (v1))
- {
- BYTE_CODE_QUIT;
- CHECK_RANGE (op);
- stack.pc = stack.byte_string_start + op;
- }
+ goto op_branch;
NEXT;
}
CASE (Bcar):
- {
- Lisp_Object v1;
- v1 = TOP;
- if (CONSP (v1))
- TOP = XCAR (v1);
- else if (NILP (v1))
- TOP = Qnil;
- else
- {
- BEFORE_POTENTIAL_GC ();
- wrong_type_argument (Qlistp, v1);
- }
- NEXT;
- }
+ if (CONSP (TOP))
+ TOP = XCAR (TOP);
+ else if (!NILP (TOP))
+ wrong_type_argument (Qlistp, TOP);
+ NEXT;
CASE (Beq):
{
- Lisp_Object v1;
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = EQ (v1, TOP) ? Qt : Qnil;
NEXT;
}
CASE (Bmemq):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fmemq (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bcdr):
{
- Lisp_Object v1;
- v1 = TOP;
- if (CONSP (v1))
- TOP = XCDR (v1);
- else if (NILP (v1))
- TOP = Qnil;
- else
- {
- BEFORE_POTENTIAL_GC ();
- wrong_type_argument (Qlistp, v1);
- }
+ if (CONSP (TOP))
+ TOP = XCDR (TOP);
+ else if (!NILP (TOP))
+ wrong_type_argument (Qlistp, TOP);
NEXT;
}
@@ -790,10 +562,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
op = FETCH;
varset:
{
- Lisp_Object sym, val;
-
- sym = vectorp[op];
- val = TOP;
+ Lisp_Object sym = vectorp[op];
+ Lisp_Object val = POP;
/* Inline the most common case. */
if (SYMBOLP (sym)
@@ -802,19 +572,13 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
&& !SYMBOL_CONSTANT_P (sym))
SET_SYMBOL_VAL (XSYMBOL (sym), val);
else
- {
- BEFORE_POTENTIAL_GC ();
- set_internal (sym, val, Qnil, 0);
- AFTER_POTENTIAL_GC ();
- }
+ set_internal (sym, val, Qnil, false);
}
- (void) POP;
NEXT;
CASE (Bdup):
{
- Lisp_Object v1;
- v1 = TOP;
+ Lisp_Object v1 = TOP;
PUSH (v1);
NEXT;
}
@@ -838,9 +602,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
op -= Bvarbind;
varbind:
/* Specbind can signal and thus GC. */
- BEFORE_POTENTIAL_GC ();
specbind (vectorp[op], POP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bcall6):
@@ -860,15 +622,12 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
op -= Bcall;
docall:
{
- BEFORE_POTENTIAL_GC ();
DISCARD (op);
#ifdef BYTE_CODE_METER
if (byte_metering_on && SYMBOLP (TOP))
{
- Lisp_Object v1, v2;
-
- v1 = TOP;
- v2 = Fget (v1, Qbyte_code_meter);
+ Lisp_Object v1 = TOP;
+ Lisp_Object v2 = Fget (v1, Qbyte_code_meter);
if (INTEGERP (v2)
&& XINT (v2) < MOST_POSITIVE_FIXNUM)
{
@@ -878,7 +637,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
}
#endif
TOP = Ffuncall (op + 1, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
}
@@ -898,124 +656,85 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
CASE (Bunbind5):
op -= Bunbind;
dounbind:
- BEFORE_POTENTIAL_GC ();
unbind_to (SPECPDL_INDEX () - op, Qnil);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bunbind_all): /* Obsolete. Never used. */
/* To unbind back to the beginning of this frame. Not used yet,
but will be needed for tail-recursion elimination. */
- BEFORE_POTENTIAL_GC ();
unbind_to (count, Qnil);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bgoto):
- MAYBE_GC ();
- BYTE_CODE_QUIT;
- op = FETCH2; /* pc = FETCH2 loses since FETCH2 contains pc++ */
- CHECK_RANGE (op);
- stack.pc = stack.byte_string_start + op;
+ op = FETCH2;
+ op_branch:
+ op -= pc - bytestr_data;
+ op_relative_branch:
+ if (BYTE_CODE_SAFE
+ && ! (bytestr_data - pc <= op
+ && op < bytestr_data + bytestr_length - pc))
+ emacs_abort ();
+ quitcounter += op < 0;
+ if (!quitcounter)
+ {
+ quitcounter = 1;
+ maybe_gc ();
+ QUIT;
+ }
+ pc += op;
NEXT;
CASE (Bgotoifnonnil):
- {
- Lisp_Object v1;
- MAYBE_GC ();
- op = FETCH2;
- v1 = POP;
- if (!NILP (v1))
- {
- BYTE_CODE_QUIT;
- CHECK_RANGE (op);
- stack.pc = stack.byte_string_start + op;
- }
- NEXT;
- }
+ op = FETCH2;
+ if (!NILP (POP))
+ goto op_branch;
+ NEXT;
CASE (Bgotoifnilelsepop):
- MAYBE_GC ();
op = FETCH2;
if (NILP (TOP))
- {
- BYTE_CODE_QUIT;
- CHECK_RANGE (op);
- stack.pc = stack.byte_string_start + op;
- }
- else DISCARD (1);
+ goto op_branch;
+ DISCARD (1);
NEXT;
CASE (Bgotoifnonnilelsepop):
- MAYBE_GC ();
op = FETCH2;
if (!NILP (TOP))
- {
- BYTE_CODE_QUIT;
- CHECK_RANGE (op);
- stack.pc = stack.byte_string_start + op;
- }
- else DISCARD (1);
+ goto op_branch;
+ DISCARD (1);
NEXT;
CASE (BRgoto):
- MAYBE_GC ();
- BYTE_CODE_QUIT;
- stack.pc += (int) *stack.pc - 127;
- NEXT;
+ op = FETCH - 128;
+ goto op_relative_branch;
CASE (BRgotoifnil):
- {
- Lisp_Object v1;
- MAYBE_GC ();
- v1 = POP;
- if (NILP (v1))
- {
- BYTE_CODE_QUIT;
- stack.pc += (int) *stack.pc - 128;
- }
- stack.pc++;
- NEXT;
- }
+ op = FETCH - 128;
+ if (NILP (POP))
+ goto op_relative_branch;
+ NEXT;
CASE (BRgotoifnonnil):
- {
- Lisp_Object v1;
- MAYBE_GC ();
- v1 = POP;
- if (!NILP (v1))
- {
- BYTE_CODE_QUIT;
- stack.pc += (int) *stack.pc - 128;
- }
- stack.pc++;
- NEXT;
- }
+ op = FETCH - 128;
+ if (!NILP (POP))
+ goto op_relative_branch;
+ NEXT;
CASE (BRgotoifnilelsepop):
- MAYBE_GC ();
- op = *stack.pc++;
+ op = FETCH - 128;
if (NILP (TOP))
- {
- BYTE_CODE_QUIT;
- stack.pc += op - 128;
- }
- else DISCARD (1);
+ goto op_relative_branch;
+ DISCARD (1);
NEXT;
CASE (BRgotoifnonnilelsepop):
- MAYBE_GC ();
- op = *stack.pc++;
+ op = FETCH - 128;
if (!NILP (TOP))
- {
- BYTE_CODE_QUIT;
- stack.pc += op - 128;
- }
- else DISCARD (1);
+ goto op_relative_branch;
+ DISCARD (1);
NEXT;
CASE (Breturn):
- result = POP;
goto exit;
CASE (Bdiscard):
@@ -1041,10 +760,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
ptrdiff_t count1 = SPECPDL_INDEX ();
record_unwind_protect (restore_window_configuration,
Fcurrent_window_configuration (Qnil));
- BEFORE_POTENTIAL_GC ();
TOP = Fprogn (TOP);
unbind_to (count1, TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
}
@@ -1055,11 +772,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
CASE (Bcatch): /* Obsolete since 24.4. */
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = internal_catch (TOP, eval_sub, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
@@ -1070,93 +784,70 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
type = CONDITION_CASE;
pushhandler:
{
- Lisp_Object tag = POP;
- int dest = FETCH2;
-
- struct handler *c = push_handler (tag, type);
- c->bytecode_dest = dest;
+ struct handler *c = push_handler (POP, type);
+ c->bytecode_dest = FETCH2;
c->bytecode_top = top;
if (sys_setjmp (c->jmp))
{
struct handler *c = handlerlist;
- int dest;
top = c->bytecode_top;
- dest = c->bytecode_dest;
+ op = c->bytecode_dest;
handlerlist = c->next;
PUSH (c->val);
- CHECK_RANGE (dest);
- /* Might have been re-set by longjmp! */
- stack.byte_string_start = SDATA (stack.byte_string);
- stack.pc = stack.byte_string_start + dest;
+ goto op_branch;
}
NEXT;
}
CASE (Bpophandler): /* New in 24.4. */
- {
- handlerlist = handlerlist->next;
- NEXT;
- }
+ handlerlist = handlerlist->next;
+ NEXT;
CASE (Bunwind_protect): /* FIXME: avoid closure for lexbind. */
{
Lisp_Object handler = POP;
/* Support for a function here is new in 24.4. */
- record_unwind_protect (NILP (Ffunctionp (handler))
- ? unwind_body : bcall0,
+ record_unwind_protect ((NILP (Ffunctionp (handler))
+ ? unwind_body : bcall0),
handler);
NEXT;
}
CASE (Bcondition_case): /* Obsolete since 24.4. */
{
- Lisp_Object handlers, body;
- handlers = POP;
- body = POP;
- BEFORE_POTENTIAL_GC ();
+ Lisp_Object handlers = POP, body = POP;
TOP = internal_lisp_condition_case (TOP, body, handlers);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Btemp_output_buffer_setup): /* Obsolete since 24.1. */
- BEFORE_POTENTIAL_GC ();
CHECK_STRING (TOP);
temp_output_buffer_setup (SSDATA (TOP));
- AFTER_POTENTIAL_GC ();
TOP = Vstandard_output;
NEXT;
CASE (Btemp_output_buffer_show): /* Obsolete since 24.1. */
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
temp_output_buffer_show (TOP);
TOP = v1;
/* pop binding of standard-output */
unbind_to (SPECPDL_INDEX () - 1, Qnil);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bnth):
{
- Lisp_Object v1, v2;
- EMACS_INT n;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
- v2 = TOP;
- CHECK_NUMBER (v2);
- n = XINT (v2);
- immediate_quit = 1;
- while (--n >= 0 && CONSP (v1))
- v1 = XCDR (v1);
- immediate_quit = 0;
- TOP = CAR (v1);
- AFTER_POTENTIAL_GC ();
+ Lisp_Object v2 = POP, v1 = TOP;
+ CHECK_NUMBER (v1);
+ EMACS_INT n = XINT (v1);
+ immediate_quit = true;
+ while (--n >= 0 && CONSP (v2))
+ v2 = XCDR (v2);
+ immediate_quit = false;
+ TOP = CAR (v2);
NEXT;
}
@@ -1182,8 +873,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
CASE (Bcons):
{
- Lisp_Object v1;
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fcons (TOP, v1);
NEXT;
}
@@ -1194,8 +884,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
CASE (Blist2):
{
- Lisp_Object v1;
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = list2 (TOP, v1);
NEXT;
}
@@ -1217,305 +906,191 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
NEXT;
CASE (Blength):
- BEFORE_POTENTIAL_GC ();
TOP = Flength (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Baref):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Faref (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Baset):
{
- Lisp_Object v1, v2;
- BEFORE_POTENTIAL_GC ();
- v2 = POP; v1 = POP;
+ Lisp_Object v2 = POP, v1 = POP;
TOP = Faset (TOP, v1, v2);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bsymbol_value):
- BEFORE_POTENTIAL_GC ();
TOP = Fsymbol_value (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bsymbol_function):
- BEFORE_POTENTIAL_GC ();
TOP = Fsymbol_function (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bset):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fset (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bfset):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Ffset (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bget):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fget (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bsubstring):
{
- Lisp_Object v1, v2;
- BEFORE_POTENTIAL_GC ();
- v2 = POP; v1 = POP;
+ Lisp_Object v2 = POP, v1 = POP;
TOP = Fsubstring (TOP, v1, v2);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bconcat2):
- BEFORE_POTENTIAL_GC ();
DISCARD (1);
TOP = Fconcat (2, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bconcat3):
- BEFORE_POTENTIAL_GC ();
DISCARD (2);
TOP = Fconcat (3, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bconcat4):
- BEFORE_POTENTIAL_GC ();
DISCARD (3);
TOP = Fconcat (4, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (BconcatN):
op = FETCH;
- BEFORE_POTENTIAL_GC ();
DISCARD (op - 1);
TOP = Fconcat (op, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bsub1):
- {
- Lisp_Object v1;
- v1 = TOP;
- if (INTEGERP (v1))
- {
- XSETINT (v1, XINT (v1) - 1);
- TOP = v1;
- }
- else
- {
- BEFORE_POTENTIAL_GC ();
- TOP = Fsub1 (v1);
- AFTER_POTENTIAL_GC ();
- }
- NEXT;
- }
+ TOP = INTEGERP (TOP) ? make_number (XINT (TOP) - 1) : Fsub1 (TOP);
+ NEXT;
CASE (Badd1):
- {
- Lisp_Object v1;
- v1 = TOP;
- if (INTEGERP (v1))
- {
- XSETINT (v1, XINT (v1) + 1);
- TOP = v1;
- }
- else
- {
- BEFORE_POTENTIAL_GC ();
- TOP = Fadd1 (v1);
- AFTER_POTENTIAL_GC ();
- }
- NEXT;
- }
+ TOP = INTEGERP (TOP) ? make_number (XINT (TOP) + 1) : Fadd1 (TOP);
+ NEXT;
CASE (Beqlsign):
{
- Lisp_Object v1, v2;
- BEFORE_POTENTIAL_GC ();
- v2 = POP; v1 = TOP;
+ Lisp_Object v2 = POP, v1 = TOP;
CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v1);
CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v2);
- AFTER_POTENTIAL_GC ();
+ bool equal;
if (FLOATP (v1) || FLOATP (v2))
{
- double f1, f2;
-
- f1 = (FLOATP (v1) ? XFLOAT_DATA (v1) : XINT (v1));
- f2 = (FLOATP (v2) ? XFLOAT_DATA (v2) : XINT (v2));
- TOP = (f1 == f2 ? Qt : Qnil);
+ double f1 = FLOATP (v1) ? XFLOAT_DATA (v1) : XINT (v1);
+ double f2 = FLOATP (v2) ? XFLOAT_DATA (v2) : XINT (v2);
+ equal = f1 == f2;
}
else
- TOP = (XINT (v1) == XINT (v2) ? Qt : Qnil);
+ equal = XINT (v1) == XINT (v2);
+ TOP = equal ? Qt : Qnil;
NEXT;
}
CASE (Bgtr):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = arithcompare (TOP, v1, ARITH_GRTR);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Blss):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = arithcompare (TOP, v1, ARITH_LESS);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bleq):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = arithcompare (TOP, v1, ARITH_LESS_OR_EQUAL);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bgeq):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = arithcompare (TOP, v1, ARITH_GRTR_OR_EQUAL);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bdiff):
- BEFORE_POTENTIAL_GC ();
DISCARD (1);
TOP = Fminus (2, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bnegate):
- {
- Lisp_Object v1;
- v1 = TOP;
- if (INTEGERP (v1))
- {
- XSETINT (v1, - XINT (v1));
- TOP = v1;
- }
- else
- {
- BEFORE_POTENTIAL_GC ();
- TOP = Fminus (1, &TOP);
- AFTER_POTENTIAL_GC ();
- }
- NEXT;
- }
+ TOP = INTEGERP (TOP) ? make_number (- XINT (TOP)) : Fminus (1, &TOP);
+ NEXT;
CASE (Bplus):
- BEFORE_POTENTIAL_GC ();
DISCARD (1);
TOP = Fplus (2, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bmax):
- BEFORE_POTENTIAL_GC ();
DISCARD (1);
TOP = Fmax (2, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bmin):
- BEFORE_POTENTIAL_GC ();
DISCARD (1);
TOP = Fmin (2, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bmult):
- BEFORE_POTENTIAL_GC ();
DISCARD (1);
TOP = Ftimes (2, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bquo):
- BEFORE_POTENTIAL_GC ();
DISCARD (1);
TOP = Fquo (2, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Brem):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Frem (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bpoint):
- {
- Lisp_Object v1;
- XSETFASTINT (v1, PT);
- PUSH (v1);
- NEXT;
- }
+ PUSH (make_natnum (PT));
+ NEXT;
CASE (Bgoto_char):
- BEFORE_POTENTIAL_GC ();
TOP = Fgoto_char (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Binsert):
- BEFORE_POTENTIAL_GC ();
TOP = Finsert (1, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (BinsertN):
op = FETCH;
- BEFORE_POTENTIAL_GC ();
DISCARD (op - 1);
TOP = Finsert (op, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bpoint_max):
@@ -1527,53 +1102,27 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
}
CASE (Bpoint_min):
- {
- Lisp_Object v1;
- XSETFASTINT (v1, BEGV);
- PUSH (v1);
- NEXT;
- }
+ PUSH (make_natnum (BEGV));
+ NEXT;
CASE (Bchar_after):
- BEFORE_POTENTIAL_GC ();
TOP = Fchar_after (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bfollowing_char):
- {
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = Ffollowing_char ();
- AFTER_POTENTIAL_GC ();
- PUSH (v1);
- NEXT;
- }
+ PUSH (Ffollowing_char ());
+ NEXT;
CASE (Bpreceding_char):
- {
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = Fprevious_char ();
- AFTER_POTENTIAL_GC ();
- PUSH (v1);
- NEXT;
- }
+ PUSH (Fprevious_char ());
+ NEXT;
CASE (Bcurrent_column):
- {
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- XSETFASTINT (v1, current_column ());
- AFTER_POTENTIAL_GC ();
- PUSH (v1);
- NEXT;
- }
+ PUSH (make_natnum (current_column ()));
+ NEXT;
CASE (Bindent_to):
- BEFORE_POTENTIAL_GC ();
TOP = Findent_to (TOP, Qnil);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Beolp):
@@ -1597,63 +1146,43 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
NEXT;
CASE (Bset_buffer):
- BEFORE_POTENTIAL_GC ();
TOP = Fset_buffer (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Binteractive_p): /* Obsolete since 24.1. */
- BEFORE_POTENTIAL_GC ();
PUSH (call0 (intern ("interactive-p")));
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bforward_char):
- BEFORE_POTENTIAL_GC ();
TOP = Fforward_char (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bforward_word):
- BEFORE_POTENTIAL_GC ();
TOP = Fforward_word (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bskip_chars_forward):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fskip_chars_forward (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bskip_chars_backward):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fskip_chars_backward (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bforward_line):
- BEFORE_POTENTIAL_GC ();
TOP = Fforward_line (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bchar_syntax):
{
- int c;
-
- BEFORE_POTENTIAL_GC ();
CHECK_CHARACTER (TOP);
- AFTER_POTENTIAL_GC ();
- c = XFASTINT (TOP);
+ int c = XFASTINT (TOP);
if (NILP (BVAR (current_buffer, enable_multibyte_characters)))
MAKE_CHAR_MULTIBYTE (c);
XSETFASTINT (TOP, syntax_code_spec[SYNTAX (c)]);
@@ -1662,239 +1191,169 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
CASE (Bbuffer_substring):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fbuffer_substring (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bdelete_region):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fdelete_region (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bnarrow_to_region):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fnarrow_to_region (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bwiden):
- BEFORE_POTENTIAL_GC ();
PUSH (Fwiden ());
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bend_of_line):
- BEFORE_POTENTIAL_GC ();
TOP = Fend_of_line (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bset_marker):
{
- Lisp_Object v1, v2;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
- v2 = POP;
- TOP = Fset_marker (TOP, v2, v1);
- AFTER_POTENTIAL_GC ();
+ Lisp_Object v2 = POP, v1 = POP;
+ TOP = Fset_marker (TOP, v1, v2);
NEXT;
}
CASE (Bmatch_beginning):
- BEFORE_POTENTIAL_GC ();
TOP = Fmatch_beginning (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bmatch_end):
- BEFORE_POTENTIAL_GC ();
TOP = Fmatch_end (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bupcase):
- BEFORE_POTENTIAL_GC ();
TOP = Fupcase (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bdowncase):
- BEFORE_POTENTIAL_GC ();
TOP = Fdowncase (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bstringeqlsign):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fstring_equal (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bstringlss):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fstring_lessp (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bequal):
{
- Lisp_Object v1;
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fequal (TOP, v1);
NEXT;
}
CASE (Bnthcdr):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fnthcdr (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Belt):
{
- Lisp_Object v1, v2;
if (CONSP (TOP))
{
/* Exchange args and then do nth. */
- EMACS_INT n;
- BEFORE_POTENTIAL_GC ();
- v2 = POP;
- v1 = TOP;
+ Lisp_Object v2 = POP, v1 = TOP;
CHECK_NUMBER (v2);
- AFTER_POTENTIAL_GC ();
- n = XINT (v2);
- immediate_quit = 1;
+ EMACS_INT n = XINT (v2);
+ immediate_quit = true;
while (--n >= 0 && CONSP (v1))
v1 = XCDR (v1);
- immediate_quit = 0;
+ immediate_quit = false;
TOP = CAR (v1);
}
else
{
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Felt (TOP, v1);
- AFTER_POTENTIAL_GC ();
}
NEXT;
}
CASE (Bmember):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fmember (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bassq):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fassq (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bnreverse):
- BEFORE_POTENTIAL_GC ();
TOP = Fnreverse (TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bsetcar):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fsetcar (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bsetcdr):
{
- Lisp_Object v1;
- BEFORE_POTENTIAL_GC ();
- v1 = POP;
+ Lisp_Object v1 = POP;
TOP = Fsetcdr (TOP, v1);
- AFTER_POTENTIAL_GC ();
NEXT;
}
CASE (Bcar_safe):
- {
- Lisp_Object v1;
- v1 = TOP;
- TOP = CAR_SAFE (v1);
- NEXT;
- }
+ TOP = CAR_SAFE (TOP);
+ NEXT;
CASE (Bcdr_safe):
- {
- Lisp_Object v1;
- v1 = TOP;
- TOP = CDR_SAFE (v1);
- NEXT;
- }
+ TOP = CDR_SAFE (TOP);
+ NEXT;
CASE (Bnconc):
- BEFORE_POTENTIAL_GC ();
DISCARD (1);
TOP = Fnconc (2, &TOP);
- AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bnumberp):
- TOP = (NUMBERP (TOP) ? Qt : Qnil);
+ TOP = NUMBERP (TOP) ? Qt : Qnil;
NEXT;
CASE (Bintegerp):
TOP = INTEGERP (TOP) ? Qt : Qnil;
NEXT;
-#ifdef BYTE_CODE_SAFE
+#if BYTE_CODE_SAFE
/* These are intentionally written using 'case' syntax,
because they are incompatible with the threaded
interpreter. */
case Bset_mark:
- BEFORE_POTENTIAL_GC ();
error ("set-mark is an obsolete bytecode");
- AFTER_POTENTIAL_GC ();
break;
case Bscan_buffer:
- BEFORE_POTENTIAL_GC ();
error ("scan-buffer is an obsolete bytecode");
- AFTER_POTENTIAL_GC ();
break;
#endif
@@ -1905,7 +1364,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
call3 (Qerror,
build_string ("Invalid byte opcode: op=%s, ptr=%d"),
make_number (op),
- make_number ((stack.pc - 1) - stack.byte_string_start));
+ make_number (pc - 1 - bytestr_data));
/* Handy byte-codes for lexical binding. */
CASE (Bstack_ref1):
@@ -1914,32 +1373,32 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
CASE (Bstack_ref4):
CASE (Bstack_ref5):
{
- Lisp_Object *ptr = top - (op - Bstack_ref);
- PUSH (*ptr);
+ Lisp_Object v1 = top[Bstack_ref - op];
+ PUSH (v1);
NEXT;
}
CASE (Bstack_ref6):
{
- Lisp_Object *ptr = top - (FETCH);
- PUSH (*ptr);
+ Lisp_Object v1 = top[- FETCH];
+ PUSH (v1);
NEXT;
}
CASE (Bstack_ref7):
{
- Lisp_Object *ptr = top - (FETCH2);
- PUSH (*ptr);
+ Lisp_Object v1 = top[- FETCH2];
+ PUSH (v1);
NEXT;
}
CASE (Bstack_set):
/* stack-set-0 = discard; stack-set-1 = discard-1-preserve-tos. */
{
- Lisp_Object *ptr = top - (FETCH);
+ Lisp_Object *ptr = top - FETCH;
*ptr = POP;
NEXT;
}
CASE (Bstack_set2):
{
- Lisp_Object *ptr = top - (FETCH2);
+ Lisp_Object *ptr = top - FETCH2;
*ptr = POP;
NEXT;
}
@@ -1955,27 +1414,16 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
CASE_DEFAULT
CASE (Bconstant):
-#ifdef BYTE_CODE_SAFE
- if (op < Bconstant)
- {
- emacs_abort ();
- }
- if ((op -= Bconstant) >= const_length)
- {
- emacs_abort ();
- }
- PUSH (vectorp[op]);
-#else
+ if (BYTE_CODE_SAFE
+ && ! (Bconstant <= op && op < Bconstant + const_length))
+ emacs_abort ();
PUSH (vectorp[op - Bconstant]);
-#endif
NEXT;
}
}
exit:
- byte_stack_list = byte_stack_list->next;
-
/* Binds and unbinds are supposed to be compiled balanced. */
if (SPECPDL_INDEX () != count)
{
@@ -1984,9 +1432,25 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
error ("binding stack not balanced (serious byte compiler bug)");
}
+ Lisp_Object result = TOP;
+ SAFE_FREE ();
return result;
}
+/* `args_template' has the same meaning as in exec_byte_code() above. */
+Lisp_Object
+get_byte_code_arity (Lisp_Object args_template)
+{
+ eassert (NATNUMP (args_template));
+ EMACS_INT at = XINT (args_template);
+ bool rest = (at & 128) != 0;
+ int mandatory = at & 127;
+ EMACS_INT nonrest = at >> 8;
+
+ return Fcons (make_number (mandatory),
+ rest ? Qmany : make_number (nonrest));
+}
+
void
syms_of_bytecode (void)
{
@@ -2008,7 +1472,7 @@ The variable byte-code-meter indicates how often each byte opcode is used.
If a symbol has a property named `byte-code-meter' whose value is an
integer, it is incremented each time that symbol's function is called. */);
- byte_metering_on = 0;
+ byte_metering_on = false;
Vbyte_code_meter = Fmake_vector (make_number (256), make_number (0));
DEFSYM (Qbyte_code_meter, "byte-code-meter");
{
diff --git a/src/callproc.c b/src/callproc.c
index 2fb5b1d519..487115d60c 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -565,8 +565,7 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd,
{
/* Since CRLF is converted to LF within `decode_coding', we
can always open a file with binary mode. */
- callproc_fd[CALLPROC_PIPEREAD] = emacs_open (tempfile,
- O_RDONLY | O_BINARY, 0);
+ callproc_fd[CALLPROC_PIPEREAD] = emacs_open (tempfile, O_RDONLY, 0);
if (callproc_fd[CALLPROC_PIPEREAD] < 0)
{
int open_errno = errno;
@@ -1078,10 +1077,6 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
return unbind_to (count, val);
}
-#ifndef WINDOWSNT
-static int relocate_fd (int fd, int minfd);
-#endif
-
static char **
add_env (char **env, char **new_env, char *string)
{
@@ -1300,7 +1295,7 @@ child_setup (int in, int out, int err, char **new_argv, bool set_pgrp,
#ifdef WINDOWSNT
prepare_standard_handles (in, out, err, handles);
- set_process_dir (SDATA (current_dir));
+ set_process_dir (SSDATA (current_dir));
/* Spawn the child. (See w32proc.c:sys_spawnve). */
cpid = spawnve (_P_NOWAIT, new_argv[0], new_argv, env);
reset_standard_handles (in, out, err, handles);
@@ -1310,43 +1305,20 @@ child_setup (int in, int out, int err, char **new_argv, bool set_pgrp,
return cpid;
#else /* not WINDOWSNT */
- /* Make sure that in, out, and err are not actually already in
- descriptors zero, one, or two; this could happen if Emacs is
- started with its standard in, out, or error closed, as might
- happen under X. */
- {
- int oin = in, oout = out;
-
- /* We have to avoid relocating the same descriptor twice! */
-
- in = relocate_fd (in, 3);
-
- if (out == oin)
- out = in;
- else
- out = relocate_fd (out, 3);
-
- if (err == oin)
- err = in;
- else if (err == oout)
- err = out;
- else
- err = relocate_fd (err, 3);
- }
#ifndef MSDOS
/* Redirect file descriptors and clear the close-on-exec flag on the
redirected ones. IN, OUT, and ERR are close-on-exec so they
need not be closed explicitly. */
- dup2 (in, 0);
- dup2 (out, 1);
- dup2 (err, 2);
+ dup2 (in, STDIN_FILENO);
+ dup2 (out, STDOUT_FILENO);
+ dup2 (err, STDERR_FILENO);
setpgid (0, 0);
tcsetpgrp (0, pid);
- execve (new_argv[0], new_argv, env);
- exec_failed (new_argv[0], errno);
+ int errnum = emacs_exec_file (new_argv[0], new_argv, env);
+ exec_failed (new_argv[0], errnum);
#else /* MSDOS */
pid = run_msdos_command (new_argv, pwd_var + 4, in, out, err, env);
@@ -1359,31 +1331,6 @@ child_setup (int in, int out, int err, char **new_argv, bool set_pgrp,
#endif /* not WINDOWSNT */
}
-#ifndef WINDOWSNT
-/* Move the file descriptor FD so that its number is not less than MINFD.
- If the file descriptor is moved at all, the original is closed on MSDOS,
- but not elsewhere as the caller will close it anyway. */
-static int
-relocate_fd (int fd, int minfd)
-{
- if (fd >= minfd)
- return fd;
- else
- {
- int new = fcntl (fd, F_DUPFD_CLOEXEC, minfd);
- if (new == -1)
- {
- emacs_perror ("while setting up child");
- _exit (EXIT_CANCELED);
- }
-#ifdef MSDOS
- emacs_close (fd);
-#endif
- return new;
- }
-}
-#endif /* not WINDOWSNT */
-
static bool
getenv_internal_1 (const char *var, ptrdiff_t varlen, char **value,
ptrdiff_t *valuelen, Lisp_Object env)
@@ -1395,7 +1342,7 @@ getenv_internal_1 (const char *var, ptrdiff_t varlen, char **value,
&& SBYTES (entry) >= varlen
#ifdef WINDOWSNT
/* NT environment variables are case insensitive. */
- && ! strnicmp (SDATA (entry), var, varlen)
+ && ! strnicmp (SSDATA (entry), var, varlen)
#else /* not WINDOWSNT */
&& ! memcmp (SDATA (entry), var, varlen)
#endif /* not WINDOWSNT */
@@ -1428,6 +1375,20 @@ getenv_internal (const char *var, ptrdiff_t varlen, char **value,
Vprocess_environment))
return *value ? 1 : 0;
+ /* On Windows we make some modifications to Emacs' environment
+ without recording them in Vprocess_environment. */
+#ifdef WINDOWSNT
+ {
+ char* tmpval = getenv (var);
+ if (tmpval)
+ {
+ *value = tmpval;
+ *valuelen = strlen (tmpval);
+ return 1;
+ }
+ }
+#endif
+
/* For DISPLAY try to get the values from the frame or the initial env. */
if (strcmp (var, "DISPLAY") == 0)
{
diff --git a/src/casefiddle.c b/src/casefiddle.c
index c5bfa36663..6114a6f785 100644
--- a/src/casefiddle.c
+++ b/src/casefiddle.c
@@ -196,7 +196,7 @@ casify_region (enum case_action flag, Lisp_Object b, Lisp_Object e)
ptrdiff_t start_byte;
/* Position of first and last changes. */
- ptrdiff_t first = -1, last IF_LINT (= 0);
+ ptrdiff_t first = -1, last;
ptrdiff_t opoint = PT;
ptrdiff_t opoint_byte = PT_BYTE;
@@ -294,15 +294,31 @@ casify_region (enum case_action flag, Lisp_Object b, Lisp_Object e)
}
}
-DEFUN ("upcase-region", Fupcase_region, Supcase_region, 2, 2, "r",
+DEFUN ("upcase-region", Fupcase_region, Supcase_region, 2, 3,
+ "(list (region-beginning) (region-end) (region-noncontiguous-p))",
doc: /* Convert the region to upper case. In programs, wants two arguments.
These arguments specify the starting and ending character numbers of
the region to operate on. When used as a command, the text between
point and the mark is operated on.
See also `capitalize-region'. */)
- (Lisp_Object beg, Lisp_Object end)
+ (Lisp_Object beg, Lisp_Object end, Lisp_Object region_noncontiguous_p)
{
- casify_region (CASE_UP, beg, end);
+ Lisp_Object bounds = Qnil;
+
+ if (!NILP (region_noncontiguous_p))
+ {
+ bounds = call1 (Fsymbol_value (intern ("region-extract-function")),
+ intern ("bounds"));
+
+ while (CONSP (bounds))
+ {
+ casify_region (CASE_UP, XCAR (XCAR (bounds)), XCDR (XCAR (bounds)));
+ bounds = XCDR (bounds);
+ }
+ }
+ else
+ casify_region (CASE_UP, beg, end);
+
return Qnil;
}
diff --git a/src/ccl.c b/src/ccl.c
index d9620340f0..b9dc52e256 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -1908,8 +1908,6 @@ ccl_get_compiled_code (Lisp_Object ccl_prog, ptrdiff_t *idx)
bool
setup_ccl_program (struct ccl_program *ccl, Lisp_Object ccl_prog)
{
- int i;
-
if (! NILP (ccl_prog))
{
struct Lisp_Vector *vp;
@@ -1931,8 +1929,7 @@ setup_ccl_program (struct ccl_program *ccl, Lisp_Object ccl_prog)
}
}
ccl->ic = CCL_HEADER_MAIN;
- for (i = 0; i < 8; i++)
- ccl->reg[i] = 0;
+ memset (ccl->reg, 0, sizeof ccl->reg);
ccl->last_block = false;
ccl->status = 0;
ccl->stack_idx = 0;
diff --git a/src/character.h b/src/character.h
index bc3e155784..586f330fba 100644
--- a/src/character.h
+++ b/src/character.h
@@ -612,14 +612,13 @@ sanitize_char_width (EMACS_INT width)
: (c) <= 0xE01EF ? (c) - 0xE0100 + 17 \
: 0)
-/* If C is a high surrogate, return 1. If C is a low surrogate,
- return 2. Otherwise, return 0. */
+/* Return true if C is a surrogate. */
-#define CHAR_SURROGATE_PAIR_P(c) \
- ((c) < 0xD800 ? 0 \
- : (c) <= 0xDBFF ? 1 \
- : (c) <= 0xDFFF ? 2 \
- : 0)
+INLINE bool
+char_surrogate_p (int c)
+{
+ return 0xD800 <= c && c <= 0xDFFF;
+}
/* Data type for Unicode general category.
diff --git a/src/charset.c b/src/charset.c
index 8ff469e13a..0c831f1359 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -240,7 +240,8 @@ struct charset_map_entries
static void
load_charset_map (struct charset *charset, struct charset_map_entries *entries, int n_entries, int control_flag)
{
- Lisp_Object vec IF_LINT (= Qnil), table IF_LINT (= Qnil);
+ Lisp_Object vec;
+ Lisp_Object table UNINIT;
unsigned max_code = CHARSET_MAX_CODE (charset);
bool ascii_compatible_p = charset->ascii_compatible_p;
int min_char, max_char, nonascii_min_char;
@@ -842,9 +843,9 @@ usage: (define-charset-internal ...) */)
int nchars;
if (nargs != charset_arg_max)
- return Fsignal (Qwrong_number_of_arguments,
- Fcons (intern ("define-charset-internal"),
- make_number (nargs)));
+ Fsignal (Qwrong_number_of_arguments,
+ Fcons (intern ("define-charset-internal"),
+ make_number (nargs)));
attrs = Fmake_vector (make_number (charset_attr_max), Qnil);
@@ -1050,8 +1051,8 @@ usage: (define-charset-internal ...) */)
/* Here, we just copy the parent's fast_map. It's not accurate,
but at least it works for quickly detecting which character
DOESN'T belong to this charset. */
- for (i = 0; i < 190; i++)
- charset.fast_map[i] = parent_charset->fast_map[i];
+ memcpy (charset.fast_map, parent_charset->fast_map,
+ sizeof charset.fast_map);
/* We also copy these for parents. */
charset.min_char = parent_charset->min_char;
@@ -1400,7 +1401,7 @@ check_iso_charset_parameter (Lisp_Object dimension, Lisp_Object chars,
int final_ch = XFASTINT (final_char);
if (! ('0' <= final_ch && final_ch <= '~'))
- error ("Invalid FINAL-CHAR '%c', it should be '0'..'~'", final_ch);
+ error ("Invalid FINAL-CHAR `%c', it should be `0'..`~'", final_ch);
return chars_flag;
}
@@ -1838,12 +1839,12 @@ encode_char (struct charset *charset, int c)
}
-DEFUN ("decode-char", Fdecode_char, Sdecode_char, 2, 3, 0,
+DEFUN ("decode-char", Fdecode_char, Sdecode_char, 2, 2, 0,
doc: /* Decode the pair of CHARSET and CODE-POINT into a character.
Return nil if CODE-POINT is not valid in CHARSET.
CODE-POINT may be a cons (HIGHER-16-BIT-VALUE . LOWER-16-BIT-VALUE). */)
- (Lisp_Object charset, Lisp_Object code_point, Lisp_Object restriction)
+ (Lisp_Object charset, Lisp_Object code_point)
{
int c, id;
unsigned code;
@@ -1857,10 +1858,10 @@ CODE-POINT may be a cons (HIGHER-16-BIT-VALUE . LOWER-16-BIT-VALUE). */)
}
-DEFUN ("encode-char", Fencode_char, Sencode_char, 2, 3, 0,
+DEFUN ("encode-char", Fencode_char, Sencode_char, 2, 2, 0,
doc: /* Encode the character CH into a code-point of CHARSET.
Return nil if CHARSET doesn't include CH. */)
- (Lisp_Object ch, Lisp_Object charset, Lisp_Object restriction)
+ (Lisp_Object ch, Lisp_Object charset)
{
int c, id;
unsigned code;
diff --git a/src/chartab.c b/src/chartab.c
index 6cf8fea0b6..fa5a8e4116 100644
--- a/src/chartab.c
+++ b/src/chartab.c
@@ -492,7 +492,7 @@ char_table_set_range (Lisp_Object table, int from, int to, Lisp_Object val)
int lim = CHARTAB_IDX (to, 0, 0);
int i, c;
- for (i = CHARTAB_IDX (from, 0, 0), c = 0; i <= lim;
+ for (i = CHARTAB_IDX (from, 0, 0), c = i * chartab_chars[0]; i <= lim;
i++, c += chartab_chars[0])
{
if (c > to)
diff --git a/src/cm.c b/src/cm.c
index 4f94c07931..e135889f17 100644
--- a/src/cm.c
+++ b/src/cm.c
@@ -321,7 +321,7 @@ cmgoto (struct tty_display_info *tty, int row, int col)
llcost,
relcost,
directcost;
- int use IF_LINT (= 0);
+ int use UNINIT;
char *p;
const char *dcm;
diff --git a/src/coding.c b/src/coding.c
index 9f709bea24..b82d4f5cda 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -2365,7 +2365,8 @@ decode_coding_emacs_mule (struct coding_system *coding)
while (1)
{
- int c, id IF_LINT (= 0);
+ int c;
+ int id UNINIT;
src_base = src;
consumed_chars_base = consumed_chars;
@@ -2410,7 +2411,7 @@ decode_coding_emacs_mule (struct coding_system *coding)
}
else
{
- int nchars IF_LINT (= 0), nbytes IF_LINT (= 0);
+ int nchars UNINIT, nbytes UNINIT;
/* emacs_mule_char can load a charset map from a file, which
allocates a large structure and might cause buffer text
to be relocated as result. Thus, we need to remember the
@@ -6814,39 +6815,33 @@ decode_eol (struct coding_system *coding)
else if (EQ (eol_type, Qdos))
{
ptrdiff_t n = 0;
+ ptrdiff_t pos = coding->dst_pos;
+ ptrdiff_t pos_byte = coding->dst_pos_byte;
+ ptrdiff_t pos_end = pos_byte + coding->produced - 1;
- if (NILP (coding->dst_object))
- {
- /* Start deleting '\r' from the tail to minimize the memory
- movement. */
- for (p = pend - 2; p >= pbeg; p--)
- if (*p == '\r')
- {
- memmove (p, p + 1, pend-- - p - 1);
- n++;
- }
- }
- else
+ /* This assertion is here instead of code, now deleted, that
+ handled the NILP case, which no longer happens with the
+ current codebase. */
+ eassert (!NILP (coding->dst_object));
+
+ while (pos_byte < pos_end)
{
- ptrdiff_t pos = coding->dst_pos;
- ptrdiff_t pos_byte = coding->dst_pos_byte;
- ptrdiff_t pos_end = pos_byte + coding->produced - 1;
+ int incr;
+
+ p = BYTE_POS_ADDR (pos_byte);
+ if (coding->dst_multibyte)
+ incr = BYTES_BY_CHAR_HEAD (*p);
+ else
+ incr = 1;
- while (pos_byte < pos_end)
+ if (*p == '\r' && p[1] == '\n')
{
- p = BYTE_POS_ADDR (pos_byte);
- if (*p == '\r' && p[1] == '\n')
- {
- del_range_2 (pos, pos_byte, pos + 1, pos_byte + 1, 0);
- n++;
- pos_end--;
- }
- pos++;
- if (coding->dst_multibyte)
- pos_byte += BYTES_BY_CHAR_HEAD (*p);
- else
- pos_byte++;
+ del_range_2 (pos, pos_byte, pos + 1, pos_byte + 1, 0);
+ n++;
+ pos_end--;
}
+ pos++;
+ pos_byte += incr;
}
coding->produced -= n;
coding->produced_char -= n;
@@ -6957,18 +6952,21 @@ get_translation_table (Lisp_Object attrs, bool encodep, int *max_lookup)
/* Return a translation of character(s) at BUF according to TRANS.
- TRANS is TO-CHAR or ((FROM . TO) ...) where
- FROM = [FROM-CHAR ...], TO is TO-CHAR or [TO-CHAR ...].
- The return value is TO-CHAR or ([FROM-CHAR ...] . TO) if a
- translation is found, and Qnil if not found..
- If BUF is too short to lookup characters in FROM, return Qt. */
+ TRANS is TO-CHAR, [TO-CHAR ...], or ((FROM . TO) ...) where FROM =
+ [FROM-CHAR ...], TO is TO-CHAR or [TO-CHAR ...]. The return value
+ is TO-CHAR or [TO-CHAR ...] if a translation is found, Qnil if not
+ found, or Qt if BUF is too short to lookup characters in FROM. As
+ a side effect, if a translation is found, *NCHARS is set to the
+ number of characters being translated. */
static Lisp_Object
-get_translation (Lisp_Object trans, int *buf, int *buf_end)
+get_translation (Lisp_Object trans, int *buf, int *buf_end, ptrdiff_t *nchars)
{
-
- if (INTEGERP (trans))
- return trans;
+ if (INTEGERP (trans) || VECTORP (trans))
+ {
+ *nchars = 1;
+ return trans;
+ }
for (; CONSP (trans); trans = XCDR (trans))
{
Lisp_Object val = XCAR (trans);
@@ -6984,7 +6982,10 @@ get_translation (Lisp_Object trans, int *buf, int *buf_end)
break;
}
if (i == len)
- return val;
+ {
+ *nchars = len;
+ return XCDR (val);
+ }
}
return Qnil;
}
@@ -7027,20 +7028,13 @@ produce_chars (struct coding_system *coding, Lisp_Object translation_table,
LOOKUP_TRANSLATION_TABLE (translation_table, c, trans);
if (! NILP (trans))
{
- trans = get_translation (trans, buf, buf_end);
+ trans = get_translation (trans, buf, buf_end, &from_nchars);
if (INTEGERP (trans))
c = XINT (trans);
- else if (CONSP (trans))
+ else if (VECTORP (trans))
{
- from_nchars = ASIZE (XCAR (trans));
- trans = XCDR (trans);
- if (INTEGERP (trans))
- c = XINT (trans);
- else
- {
- to_nchars = ASIZE (trans);
- c = XINT (AREF (trans, 0));
- }
+ to_nchars = ASIZE (trans);
+ c = XINT (AREF (trans, 0));
}
else if (EQ (trans, Qt) && ! last_block)
break;
@@ -7681,22 +7675,16 @@ consume_chars (struct coding_system *coding, Lisp_Object translation_table,
for (i = 1; i < max_lookup && p < src_end; i++)
lookup_buf[i] = STRING_CHAR_ADVANCE (p);
lookup_buf_end = lookup_buf + i;
- trans = get_translation (trans, lookup_buf, lookup_buf_end);
+ trans = get_translation (trans, lookup_buf, lookup_buf_end,
+ &from_nchars);
if (INTEGERP (trans))
c = XINT (trans);
- else if (CONSP (trans))
+ else if (VECTORP (trans))
{
- from_nchars = ASIZE (XCAR (trans));
- trans = XCDR (trans);
- if (INTEGERP (trans))
- c = XINT (trans);
- else
- {
- to_nchars = ASIZE (trans);
- if (buf_end - buf < to_nchars)
- break;
- c = XINT (AREF (trans, 0));
- }
+ to_nchars = ASIZE (trans);
+ if (buf_end - buf < to_nchars)
+ break;
+ c = XINT (AREF (trans, 0));
}
else
break;
@@ -7863,6 +7851,15 @@ code_conversion_save (bool with_work_buf, bool multibyte)
return workbuf;
}
+static void
+coding_restore_undo_list (Lisp_Object arg)
+{
+ Lisp_Object undo_list = XCAR (arg);
+ struct buffer *buf = XBUFFER (XCDR (arg));
+
+ bset_undo_list (buf, undo_list);
+}
+
void
decode_coding_gap (struct coding_system *coding,
ptrdiff_t chars, ptrdiff_t bytes)
@@ -7975,13 +7972,19 @@ decode_coding_gap (struct coding_system *coding,
{
ptrdiff_t prev_Z = Z, prev_Z_BYTE = Z_BYTE;
Lisp_Object val;
+ Lisp_Object undo_list = BVAR (current_buffer, undo_list);
+ ptrdiff_t count1 = SPECPDL_INDEX ();
+ record_unwind_protect (coding_restore_undo_list,
+ Fcons (undo_list, Fcurrent_buffer ()));
+ bset_undo_list (current_buffer, Qt);
TEMP_SET_PT_BOTH (coding->dst_pos, coding->dst_pos_byte);
val = call1 (CODING_ATTR_POST_READ (attrs),
make_number (coding->produced_char));
CHECK_NATNUM (val);
coding->produced_char += Z - prev_Z;
coding->produced += Z_BYTE - prev_Z_BYTE;
+ unbind_to (count1, Qnil);
}
unbind_to (count, Qnil);
@@ -8025,12 +8028,12 @@ decode_coding_object (struct coding_system *coding,
Lisp_Object dst_object)
{
ptrdiff_t count = SPECPDL_INDEX ();
- unsigned char *destination IF_LINT (= NULL);
- ptrdiff_t dst_bytes IF_LINT (= 0);
+ unsigned char *destination;
+ ptrdiff_t dst_bytes;
ptrdiff_t chars = to - from;
ptrdiff_t bytes = to_byte - from_byte;
Lisp_Object attrs;
- ptrdiff_t saved_pt = -1, saved_pt_byte IF_LINT (= 0);
+ ptrdiff_t saved_pt = -1, saved_pt_byte;
bool need_marker_adjustment = 0;
Lisp_Object old_deactivate_mark;
@@ -8122,13 +8125,19 @@ decode_coding_object (struct coding_system *coding,
{
ptrdiff_t prev_Z = Z, prev_Z_BYTE = Z_BYTE;
Lisp_Object val;
+ Lisp_Object undo_list = BVAR (current_buffer, undo_list);
+ ptrdiff_t count1 = SPECPDL_INDEX ();
+ record_unwind_protect (coding_restore_undo_list,
+ Fcons (undo_list, Fcurrent_buffer ()));
+ bset_undo_list (current_buffer, Qt);
TEMP_SET_PT_BOTH (coding->dst_pos, coding->dst_pos_byte);
val = safe_call1 (CODING_ATTR_POST_READ (attrs),
make_number (coding->produced_char));
CHECK_NATNUM (val);
coding->produced_char += Z - prev_Z;
coding->produced += Z_BYTE - prev_Z_BYTE;
+ unbind_to (count1, Qnil);
}
if (EQ (dst_object, Qt))
@@ -8208,7 +8217,7 @@ encode_coding_object (struct coding_system *coding,
ptrdiff_t chars = to - from;
ptrdiff_t bytes = to_byte - from_byte;
Lisp_Object attrs;
- ptrdiff_t saved_pt = -1, saved_pt_byte IF_LINT (= 0);
+ ptrdiff_t saved_pt = -1, saved_pt_byte;
bool need_marker_adjustment = 0;
bool kill_src_buffer = 0;
Lisp_Object old_deactivate_mark;
@@ -8429,11 +8438,10 @@ from_unicode (Lisp_Object str)
Lisp_Object
from_unicode_buffer (const wchar_t *wstr)
{
- return from_unicode (
- make_unibyte_string (
- (char *) wstr,
- /* we get one of the two final 0 bytes for free. */
- 1 + sizeof (wchar_t) * wcslen (wstr)));
+ /* We get one of the two final null bytes for free. */
+ ptrdiff_t len = 1 + sizeof (wchar_t) * wcslen (wstr);
+ AUTO_STRING_WITH_LEN (str, (char *) wstr, len);
+ return from_unicode (str);
}
wchar_t *
@@ -8583,8 +8591,8 @@ detect_coding_system (const unsigned char *src,
base_category = XINT (CODING_ATTR_CATEGORY (attrs));
if (base_category == coding_category_undecided)
{
- enum coding_category category IF_LINT (= 0);
- struct coding_system *this IF_LINT (= NULL);
+ enum coding_category category UNINIT;
+ struct coding_system *this UNINIT;
int c, i;
bool inhibit_nbd = inhibit_flag (coding.spec.undecided.inhibit_nbd,
inhibit_null_byte_detection);
@@ -9854,7 +9862,8 @@ usage: (find-operation-coding-system OPERATION ARGUMENTS...) */)
if (!(STRINGP (target)
|| (EQ (operation, Qinsert_file_contents) && CONSP (target)
&& STRINGP (XCAR (target)) && BUFFERP (XCDR (target)))
- || (EQ (operation, Qopen_network_stream) && INTEGERP (target))))
+ || (EQ (operation, Qopen_network_stream)
+ && (INTEGERP (target) || EQ (target, Qt)))))
error ("Invalid argument %"pI"d of operation `%s'",
XFASTINT (target_idx) + 1, SDATA (SYMBOL_NAME (operation)));
if (CONSP (target))
@@ -10558,9 +10567,9 @@ usage: (define-coding-system-internal ...) */)
return Qnil;
short_args:
- return Fsignal (Qwrong_number_of_arguments,
- Fcons (intern ("define-coding-system-internal"),
- make_number (nargs)));
+ Fsignal (Qwrong_number_of_arguments,
+ Fcons (intern ("define-coding-system-internal"),
+ make_number (nargs)));
}
@@ -11319,24 +11328,4 @@ internal character representation. */);
#endif
staticpro (&system_eol_type);
}
-
-char *
-emacs_strerror (int error_number)
-{
- char *str;
-
- synchronize_system_messages_locale ();
- str = strerror (error_number);
-
- if (! NILP (Vlocale_coding_system))
- {
- Lisp_Object dec = code_convert_string_norecord (build_string (str),
- Vlocale_coding_system,
- 0);
- str = SSDATA (dec);
- }
-
- return str;
-}
-
#endif /* emacs */
diff --git a/src/coding.h b/src/coding.h
index 93ddff0c6b..426be6277c 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -768,8 +768,6 @@ extern Lisp_Object preferred_coding_system (void);
#ifdef emacs
-extern char *emacs_strerror (int);
-
/* Coding system to be used to encode text for terminal display when
terminal coding system is nil. */
extern struct coding_system safe_terminal_coding;
diff --git a/src/composite.c b/src/composite.c
index 49b0003636..8aa6974659 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -891,7 +891,6 @@ autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos,
if (len <= 0)
return unbind_to (count, Qnil);
to = limit = charpos + len;
-#ifdef HAVE_WINDOW_SYSTEM
if (FRAME_WINDOW_P (f))
{
font_object = font_range (charpos, bytepos, &to, win, face, string);
@@ -902,7 +901,6 @@ autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos,
return unbind_to (count, Qnil);
}
else
-#endif /* not HAVE_WINDOW_SYSTEM */
font_object = win->frame;
lgstring = Fcomposition_get_gstring (pos, make_number (to), font_object,
string);
@@ -1308,7 +1306,8 @@ composition_reseat_it (struct composition_it *cmp_it, ptrdiff_t charpos,
int
composition_update_it (struct composition_it *cmp_it, ptrdiff_t charpos, ptrdiff_t bytepos, Lisp_Object string)
{
- int i, c IF_LINT (= 0);
+ int i;
+ int c UNINIT;
if (cmp_it->ch < 0)
{
diff --git a/src/conf_post.h b/src/conf_post.h
index 209f60792c..865d0183a5 100644
--- a/src/conf_post.h
+++ b/src/conf_post.h
@@ -34,6 +34,18 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <stdbool.h>
+/* GNUC_PREREQ (V, W, X) is true if this is GNU C version V.W.X or later.
+ It can be used in a preprocessor expression. */
+#ifndef __GNUC_MINOR__
+# define GNUC_PREREQ(v, w, x) false
+#elif ! defined __GNUC_PATCHLEVEL__
+# define GNUC_PREREQ(v, w, x) \
+ ((v) < __GNUC__ + ((w) < __GNUC_MINOR__ + ((x) == 0))
+#else
+# define GNUC_PREREQ(v, w, x) \
+ ((v) < __GNUC__ + ((w) < __GNUC_MINOR__ + ((x) <= __GNUC_PATCHLEVEL__)))
+#endif
+
/* The type of bool bitfields. Needed to compile Objective-C with
standard GCC. It was also needed to port to pre-C99 compilers,
although we don't care about that any more. */
@@ -55,13 +67,19 @@ typedef bool bool_bf;
on arguments like alloc_size that are handled in this simulation. */
#ifndef __has_attribute
# define __has_attribute(a) __has_attribute_##a
-# define __has_attribute_alloc_size (4 < __GNUC__ + (3 <= __GNUC_MINOR__))
-# define __has_attribute_cleanup (3 < __GNUC__ + (4 <= __GNUC_MINOR__))
-# define __has_attribute_externally_visible \
- (4 < __GNUC__ + (1 <= __GNUC_MINOR__))
+# define __has_attribute_alloc_size GNUC_PREREQ (4, 3, 0)
+# define __has_attribute_cleanup GNUC_PREREQ (3, 4, 0)
+# define __has_attribute_externally_visible GNUC_PREREQ (4, 1, 0)
# define __has_attribute_no_address_safety_analysis false
-# define __has_attribute_no_sanitize_address \
- (4 < __GNUC__ + (8 <= __GNUC_MINOR__))
+# define __has_attribute_no_sanitize_address GNUC_PREREQ (4, 8, 0)
+#endif
+
+/* Simulate __has_builtin on compilers that lack it. It is used only
+ on arguments like __builtin_assume_aligned that are handled in this
+ simulation. */
+#ifndef __has_builtin
+# define __has_builtin(a) __has_builtin_##a
+# define __has_builtin___builtin_assume_aligned GNUC_PREREQ (4, 7, 0)
#endif
/* Simulate __has_feature on compilers that lack it. It is used only
@@ -77,6 +95,11 @@ typedef bool bool_bf;
# define ADDRESS_SANITIZER false
#endif
+/* Yield PTR, which must be aligned to ALIGNMENT. */
+#if ! __has_builtin (__builtin_assume_aligned)
+# define __builtin_assume_aligned(ptr, ...) ((void *) (ptr))
+#endif
+
#ifdef DARWIN_OS
#ifdef emacs
#define malloc unexec_malloc
@@ -99,12 +122,9 @@ typedef bool bool_bf;
#ifdef emacs
#define malloc hybrid_malloc
#define realloc hybrid_realloc
+#define aligned_alloc hybrid_aligned_alloc
#define calloc hybrid_calloc
#define free hybrid_free
-#if defined HAVE_GET_CURRENT_DIR_NAME && !defined BROKEN_GET_CURRENT_DIR_NAME
-#define HYBRID_GET_CURRENT_DIR_NAME 1
-#define get_current_dir_name hybrid_get_current_dir_name
-#endif
#endif
#endif /* HYBRID_MALLOC */
@@ -120,14 +140,6 @@ typedef bool bool_bf;
#undef HAVE_RINT
#endif /* HPUX */
-#ifdef IRIX6_5
-#ifdef emacs
-char *_getpty();
-#endif
-#define INET6 /* Needed for struct sockaddr_in6. */
-#undef HAVE_GETADDRINFO /* IRIX has getaddrinfo but not struct addrinfo. */
-#endif /* IRIX6_5 */
-
#ifdef MSDOS
#ifndef __DJGPP__
You lose; /* Emacs for DOS must be compiled with DJGPP */
@@ -192,7 +204,7 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
#endif
#ifdef CYGWIN
-#define SYSTEM_PURESIZE_EXTRA 10000
+#define SYSTEM_PURESIZE_EXTRA 50000
#endif
#if defined HAVE_NTGUI && !defined DebPrint
@@ -200,7 +212,7 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
extern void _DebPrint (const char *fmt, ...);
# define DebPrint(stuff) _DebPrint stuff
# else
-# define DebPrint(stuff)
+# define DebPrint(stuff) ((void) 0)
# endif
#endif
@@ -242,19 +254,21 @@ extern int emacs_setenv_TZ (char const *);
#define EXTERNALLY_VISIBLE
#endif
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+#if GNUC_PREREQ (2, 7, 0)
# define ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
#else
# define ATTRIBUTE_FORMAT(spec) /* empty */
#endif
-#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
-# define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
- ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
+#if GNUC_PREREQ (4, 4, 0) && defined __GLIBC_MINOR__
+# define PRINTF_ARCHETYPE __gnu_printf__
+#elif GNUC_PREREQ (4, 4, 0) && defined __MINGW32__
+# define PRINTF_ARCHETYPE __ms_printf__
#else
-# define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
- ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
+# define PRINTF_ARCHETYPE __printf__
#endif
+#define ATTRIBUTE_FORMAT_PRINTF(string_index, first_to_check) \
+ ATTRIBUTE_FORMAT ((PRINTF_ARCHETYPE, string_index, first_to_check))
#define ATTRIBUTE_CONST _GL_ATTRIBUTE_CONST
#define ATTRIBUTE_UNUSED _GL_UNUSED
@@ -278,7 +292,7 @@ extern int emacs_setenv_TZ (char const *);
no_sanitize_address attribute. This bug is fixed in GCC 4.9.0 and
clang 3.4. */
#if (! ADDRESS_SANITIZER \
- || ((4 < __GNUC__ + (9 <= __GNUC_MINOR__)) \
+ || (GNUC_PREREQ (4, 9, 0) \
|| 3 < __clang_major__ + (4 <= __clang_minor__)))
# define ADDRESS_SANITIZER_WORKAROUND /* No workaround needed. */
#else
@@ -354,12 +368,12 @@ extern int emacs_setenv_TZ (char const *);
# define FLEXIBLE_ARRAY_MEMBER
#endif
-/* Use this to suppress gcc's `...may be used before initialized' warnings. */
-#ifdef lint
-/* Use CODE only if lint checking is in effect. */
-# define IF_LINT(Code) Code
+/* 'int x UNINIT;' is equivalent to 'int x;', except it cajoles GCC
+ into not warning incorrectly about use of an uninitialized variable. */
+#if defined GCC_LINT || defined lint
+# define UNINIT = {0,}
#else
-# define IF_LINT(Code) /* empty */
+# define UNINIT /* empty */
#endif
/* conf_post.h ends here */
diff --git a/src/cygw32.c b/src/cygw32.c
index 682232035f..ca9069a120 100644
--- a/src/cygw32.c
+++ b/src/cygw32.c
@@ -31,7 +31,7 @@ fchdir_unwind (int dir_fd)
}
static void
-chdir_to_default_directory ()
+chdir_to_default_directory (void)
{
Lisp_Object new_cwd;
int old_cwd_fd = emacs_open (".", O_RDONLY | O_DIRECTORY, 0);
@@ -46,7 +46,7 @@ chdir_to_default_directory ()
if (!STRINGP (new_cwd))
new_cwd = build_string ("/");
- if (chdir (SDATA (ENCODE_FILE (new_cwd))))
+ if (chdir (SSDATA (ENCODE_FILE (new_cwd))))
error ("could not chdir: %s", strerror (errno));
}
diff --git a/src/data.c b/src/data.c
index 3a51129d18..9a076741f7 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1619,8 +1619,8 @@ The function `default-value' gets the default value and `set-default' sets it.
{
struct Lisp_Symbol *sym;
struct Lisp_Buffer_Local_Value *blv = NULL;
- union Lisp_Val_Fwd valcontents IF_LINT (= {LISP_INITIALLY_ZERO});
- bool forwarded IF_LINT (= 0);
+ union Lisp_Val_Fwd valcontents;
+ bool forwarded;
CHECK_SYMBOL (variable);
sym = XSYMBOL (variable);
@@ -1697,8 +1697,8 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
(Lisp_Object variable)
{
Lisp_Object tem;
- bool forwarded IF_LINT (= 0);
- union Lisp_Val_Fwd valcontents IF_LINT (= {LISP_INITIALLY_ZERO});
+ bool forwarded;
+ union Lisp_Val_Fwd valcontents;
struct Lisp_Symbol *sym;
struct Lisp_Buffer_Local_Value *blv = NULL;
@@ -2463,7 +2463,7 @@ uintmax_t
cons_to_unsigned (Lisp_Object c, uintmax_t max)
{
bool valid = 0;
- uintmax_t val IF_LINT (= 0);
+ uintmax_t val;
if (INTEGERP (c))
{
valid = 0 <= XINT (c);
@@ -2516,7 +2516,7 @@ intmax_t
cons_to_signed (Lisp_Object c, intmax_t min, intmax_t max)
{
bool valid = 0;
- intmax_t val IF_LINT (= 0);
+ intmax_t val;
if (INTEGERP (c))
{
val = XINT (c);
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 56bfd7164a..7a94c81eea 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -168,25 +168,25 @@ static int
xd_symbol_to_dbus_type (Lisp_Object object)
{
return
- ((EQ (object, QCdbus_type_byte)) ? DBUS_TYPE_BYTE
- : (EQ (object, QCdbus_type_boolean)) ? DBUS_TYPE_BOOLEAN
- : (EQ (object, QCdbus_type_int16)) ? DBUS_TYPE_INT16
- : (EQ (object, QCdbus_type_uint16)) ? DBUS_TYPE_UINT16
- : (EQ (object, QCdbus_type_int32)) ? DBUS_TYPE_INT32
- : (EQ (object, QCdbus_type_uint32)) ? DBUS_TYPE_UINT32
- : (EQ (object, QCdbus_type_int64)) ? DBUS_TYPE_INT64
- : (EQ (object, QCdbus_type_uint64)) ? DBUS_TYPE_UINT64
- : (EQ (object, QCdbus_type_double)) ? DBUS_TYPE_DOUBLE
- : (EQ (object, QCdbus_type_string)) ? DBUS_TYPE_STRING
- : (EQ (object, QCdbus_type_object_path)) ? DBUS_TYPE_OBJECT_PATH
- : (EQ (object, QCdbus_type_signature)) ? DBUS_TYPE_SIGNATURE
+ (EQ (object, QCbyte) ? DBUS_TYPE_BYTE
+ : EQ (object, QCboolean) ? DBUS_TYPE_BOOLEAN
+ : EQ (object, QCint16) ? DBUS_TYPE_INT16
+ : EQ (object, QCuint16) ? DBUS_TYPE_UINT16
+ : EQ (object, QCint32) ? DBUS_TYPE_INT32
+ : EQ (object, QCuint32) ? DBUS_TYPE_UINT32
+ : EQ (object, QCint64) ? DBUS_TYPE_INT64
+ : EQ (object, QCuint64) ? DBUS_TYPE_UINT64
+ : EQ (object, QCdouble) ? DBUS_TYPE_DOUBLE
+ : EQ (object, QCstring) ? DBUS_TYPE_STRING
+ : EQ (object, QCobject_path) ? DBUS_TYPE_OBJECT_PATH
+ : EQ (object, QCsignature) ? DBUS_TYPE_SIGNATURE
#ifdef DBUS_TYPE_UNIX_FD
- : (EQ (object, QCdbus_type_unix_fd)) ? DBUS_TYPE_UNIX_FD
+ : EQ (object, QCunix_fd) ? DBUS_TYPE_UNIX_FD
#endif
- : (EQ (object, QCdbus_type_array)) ? DBUS_TYPE_ARRAY
- : (EQ (object, QCdbus_type_variant)) ? DBUS_TYPE_VARIANT
- : (EQ (object, QCdbus_type_struct)) ? DBUS_TYPE_STRUCT
- : (EQ (object, QCdbus_type_dict_entry)) ? DBUS_TYPE_DICT_ENTRY
+ : EQ (object, QCarray) ? DBUS_TYPE_ARRAY
+ : EQ (object, QCvariant) ? DBUS_TYPE_VARIANT
+ : EQ (object, QCstruct) ? DBUS_TYPE_STRUCT
+ : EQ (object, QCdict_entry) ? DBUS_TYPE_DICT_ENTRY
: DBUS_TYPE_INVALID);
}
@@ -257,16 +257,16 @@ XD_OBJECT_TO_STRING (Lisp_Object object)
if ((session_bus_address != NULL) \
&& (!NILP (Fstring_equal \
(bus, build_string (session_bus_address))))) \
- bus = QCdbus_session_bus; \
+ bus = QCsession; \
} \
\
else \
{ \
CHECK_SYMBOL (bus); \
- if (!(EQ (bus, QCdbus_system_bus) || EQ (bus, QCdbus_session_bus))) \
+ if (!(EQ (bus, QCsystem) || EQ (bus, QCsession))) \
XD_SIGNAL2 (build_string ("Wrong bus name"), bus); \
/* We do not want to have an autolaunch for the session bus. */ \
- if (EQ (bus, QCdbus_session_bus) && session_bus_address == NULL) \
+ if (EQ (bus, QCsession) && session_bus_address == NULL) \
XD_SIGNAL2 (build_string ("No connection to bus"), bus); \
} \
} while (0)
@@ -395,7 +395,7 @@ xd_signature (char *signature, int dtype, int parent_type, Lisp_Object object)
CHECK_CONS (object);
/* Type symbol is optional. */
- if (EQ (QCdbus_type_array, CAR_SAFE (elt)))
+ if (EQ (QCarray, CAR_SAFE (elt)))
elt = XD_NEXT_VALUE (elt);
/* If the array is empty, DBUS_TYPE_STRING is the default
@@ -1009,8 +1009,7 @@ xd_add_watch (DBusWatch *watch, void *data)
}
/* Stop monitoring WATCH for possible I/O.
- DATA is the used bus, either a string or QCdbus_system_bus or
- QCdbus_session_bus. */
+ DATA is the used bus, either a string or QCsystem or QCsession. */
static void
xd_remove_watch (DBusWatch *watch, void *data)
{
@@ -1025,7 +1024,7 @@ xd_remove_watch (DBusWatch *watch, void *data)
/* Unset session environment. */
#if 0
/* This is buggy, since unsetenv is not thread-safe. */
- if (XSYMBOL (QCdbus_session_bus) == data)
+ if (XSYMBOL (QCsession) == data)
{
XD_DEBUG_MESSAGE ("unsetenv DBUS_SESSION_BUS_ADDRESS");
unsetenv ("DBUS_SESSION_BUS_ADDRESS");
@@ -1147,14 +1146,14 @@ this connection to those buses. */)
connection = dbus_connection_open_private (SSDATA (bus), &derror);
else
- if (NILP (private))
- connection = dbus_bus_get (EQ (bus, QCdbus_system_bus)
- ? DBUS_BUS_SYSTEM : DBUS_BUS_SESSION,
- &derror);
- else
- connection = dbus_bus_get_private (EQ (bus, QCdbus_system_bus)
- ? DBUS_BUS_SYSTEM : DBUS_BUS_SESSION,
- &derror);
+ {
+ DBusBusType bustype = (EQ (bus, QCsystem)
+ ? DBUS_BUS_SYSTEM : DBUS_BUS_SESSION);
+ if (NILP (private))
+ connection = dbus_bus_get (bustype, &derror);
+ else
+ connection = dbus_bus_get_private (bustype, &derror);
+ }
if (dbus_error_is_set (&derror))
XD_ERROR (derror);
@@ -1405,7 +1404,7 @@ usage: (dbus-message-internal &rest REST) */)
}
/* Check for timeout parameter. */
- if ((count+2 <= nargs) && (EQ ((args[count]), QCdbus_timeout)))
+ if ((count + 2 <= nargs) && EQ (args[count], QCtimeout))
{
CHECK_NATNUM (args[count+1]);
timeout = min (XFASTINT (args[count+1]), INT_MAX);
@@ -1452,8 +1451,7 @@ usage: (dbus-message-internal &rest REST) */)
/* The result is the key in Vdbus_registered_objects_table. */
serial = dbus_message_get_serial (dmessage);
- result = list3 (QCdbus_registered_serial,
- bus, make_fixnum_or_float (serial));
+ result = list3 (QCserial, bus, make_fixnum_or_float (serial));
/* Create a hash table entry. */
Fputhash (result, handler, Vdbus_registered_objects_table);
@@ -1540,8 +1538,7 @@ xd_read_message_1 (DBusConnection *connection, Lisp_Object bus)
|| (mtype == DBUS_MESSAGE_TYPE_ERROR))
{
/* Search for a registered function of the message. */
- key = list3 (QCdbus_registered_serial, bus,
- make_fixnum_or_float (serial));
+ key = list3 (QCserial, bus, make_fixnum_or_float (serial));
value = Fgethash (key, Vdbus_registered_objects_table, Qnil);
/* There shall be exactly one entry. Construct an event. */
@@ -1566,9 +1563,7 @@ xd_read_message_1 (DBusConnection *connection, Lisp_Object bus)
goto cleanup;
/* Search for a registered function of the message. */
- key = list4 ((mtype == DBUS_MESSAGE_TYPE_METHOD_CALL)
- ? QCdbus_registered_method
- : QCdbus_registered_signal,
+ key = list4 (mtype == DBUS_MESSAGE_TYPE_METHOD_CALL ? QCmethod : QCsignal,
bus, build_string (interface), build_string (member));
value = Fgethash (key, Vdbus_registered_objects_table, Qnil);
@@ -1697,37 +1692,37 @@ syms_of_dbusbind (void)
build_pure_c_string ("D-Bus error"));
/* Lisp symbols of the system and session buses. */
- DEFSYM (QCdbus_system_bus, ":system");
- DEFSYM (QCdbus_session_bus, ":session");
+ DEFSYM (QCsystem, ":system");
+ DEFSYM (QCsession, ":session");
/* Lisp symbol for method call timeout. */
- DEFSYM (QCdbus_timeout, ":timeout");
+ DEFSYM (QCtimeout, ":timeout");
/* Lisp symbols of D-Bus types. */
- DEFSYM (QCdbus_type_byte, ":byte");
- DEFSYM (QCdbus_type_boolean, ":boolean");
- DEFSYM (QCdbus_type_int16, ":int16");
- DEFSYM (QCdbus_type_uint16, ":uint16");
- DEFSYM (QCdbus_type_int32, ":int32");
- DEFSYM (QCdbus_type_uint32, ":uint32");
- DEFSYM (QCdbus_type_int64, ":int64");
- DEFSYM (QCdbus_type_uint64, ":uint64");
- DEFSYM (QCdbus_type_double, ":double");
- DEFSYM (QCdbus_type_string, ":string");
- DEFSYM (QCdbus_type_object_path, ":object-path");
- DEFSYM (QCdbus_type_signature, ":signature");
+ DEFSYM (QCbyte, ":byte");
+ DEFSYM (QCboolean, ":boolean");
+ DEFSYM (QCint16, ":int16");
+ DEFSYM (QCuint16, ":uint16");
+ DEFSYM (QCint32, ":int32");
+ DEFSYM (QCuint32, ":uint32");
+ DEFSYM (QCint64, ":int64");
+ DEFSYM (QCuint64, ":uint64");
+ DEFSYM (QCdouble, ":double");
+ DEFSYM (QCstring, ":string");
+ DEFSYM (QCobject_path, ":object-path");
+ DEFSYM (QCsignature, ":signature");
#ifdef DBUS_TYPE_UNIX_FD
- DEFSYM (QCdbus_type_unix_fd, ":unix-fd");
+ DEFSYM (QCunix_fd, ":unix-fd");
#endif
- DEFSYM (QCdbus_type_array, ":array");
- DEFSYM (QCdbus_type_variant, ":variant");
- DEFSYM (QCdbus_type_struct, ":struct");
- DEFSYM (QCdbus_type_dict_entry, ":dict-entry");
+ DEFSYM (QCarray, ":array");
+ DEFSYM (QCvariant, ":variant");
+ DEFSYM (QCstruct, ":struct");
+ DEFSYM (QCdict_entry, ":dict-entry");
/* Lisp symbols of objects in `dbus-registered-objects-table'. */
- DEFSYM (QCdbus_registered_serial, ":serial");
- DEFSYM (QCdbus_registered_method, ":method");
- DEFSYM (QCdbus_registered_signal, ":signal");
+ DEFSYM (QCserial, ":serial");
+ DEFSYM (QCmethod, ":method");
+ DEFSYM (QCsignal, ":signal");
DEFVAR_LISP ("dbus-compiled-version",
Vdbus_compiled_version,
diff --git a/src/decompress.c b/src/decompress.c
index 1213f482f7..6ebf74aaf5 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -42,7 +42,7 @@ static bool zlib_initialized;
static bool
init_zlib_functions (void)
{
- HMODULE library = w32_delayed_load (Qzlib_dll);
+ HMODULE library = w32_delayed_load (Qzlib);
if (!library)
return false;
@@ -91,7 +91,7 @@ DEFUN ("zlib-available-p", Fzlib_available_p, Szlib_available_p, 0, 0, 0,
(void)
{
#ifdef WINDOWSNT
- Lisp_Object found = Fassq (Qzlib_dll, Vlibrary_cache);
+ Lisp_Object found = Fassq (Qzlib, Vlibrary_cache);
if (CONSP (found))
return XCDR (found);
else
@@ -99,7 +99,7 @@ DEFUN ("zlib-available-p", Fzlib_available_p, Szlib_available_p, 0, 0, 0,
Lisp_Object status;
zlib_initialized = init_zlib_functions ();
status = zlib_initialized ? Qt : Qnil;
- Vlibrary_cache = Fcons (Fcons (Qzlib_dll, status), Vlibrary_cache);
+ Vlibrary_cache = Fcons (Fcons (Qzlib, status), Vlibrary_cache);
return status;
}
#else
diff --git a/src/dired.c b/src/dired.c
index dba575ce4c..e468147e8b 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -42,12 +42,15 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "buffer.h"
#include "coding.h"
#include "regex.h"
-#include "blockinput.h"
#ifdef MSDOS
#include "msdos.h" /* for fstatat */
#endif
+#ifdef WINDOWSNT
+extern int is_slow_fs (const char *);
+#endif
+
static ptrdiff_t scmp (const char *, const char *, ptrdiff_t);
static Lisp_Object file_attributes (int, char const *, Lisp_Object);
@@ -69,8 +72,6 @@ open_directory (Lisp_Object dirname, int *fdp)
DIR *d;
int fd, opendir_errno;
- block_input ();
-
#ifdef DOS_NT
/* Directories cannot be opened. The emulation assumes that any
file descriptor other than AT_FDCWD corresponds to the most
@@ -94,8 +95,6 @@ open_directory (Lisp_Object dirname, int *fdp)
}
#endif
- unblock_input ();
-
if (!d)
report_file_errno ("Opening directory", dirname, opendir_errno);
*fdp = fd;
@@ -103,7 +102,7 @@ open_directory (Lisp_Object dirname, int *fdp)
}
#ifdef WINDOWSNT
-void
+static void
directory_files_internal_w32_unwind (Lisp_Object arg)
{
Vw32_get_true_file_attributes = arg;
@@ -111,12 +110,9 @@ directory_files_internal_w32_unwind (Lisp_Object arg)
#endif
static void
-directory_files_internal_unwind (void *dh)
+directory_files_internal_unwind (void *d)
{
- DIR *d = dh;
- block_input ();
closedir (d);
- unblock_input ();
}
/* Return the next directory entry from DIR; DIR's name is DIRNAME.
@@ -214,8 +210,6 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
#ifdef WINDOWSNT
if (attrs)
{
- extern int is_slow_fs (const char *);
-
/* Do this only once to avoid doing it (in w32.c:stat) for each
file in the directory, when we call Ffile_attributes below. */
record_unwind_protect (directory_files_internal_w32_unwind,
@@ -225,7 +219,7 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
{
/* w32.c:stat will notice these bindings and avoid calling
GetDriveType for each file. */
- if (is_slow_fs (SDATA (dirfilename)))
+ if (is_slow_fs (SSDATA (dirfilename)))
Vw32_get_true_file_attributes = Qnil;
else
Vw32_get_true_file_attributes = Qt;
@@ -307,9 +301,7 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
}
}
- block_input ();
closedir (d);
- unblock_input ();
#ifdef WINDOWSNT
if (attrs)
Vw32_get_true_file_attributes = w32_save;
@@ -860,6 +852,14 @@ below) - valid values are `string' and `integer'. The latter is the
default, but we plan to change that, so you should specify a non-nil value
for ID-FORMAT if you use the returned uid or gid.
+To access the elements returned, the following access functions are
+provided: `file-attribute-type', `file-attribute-link-number',
+`file-attribute-user-id', `file-attribute-group-id',
+`file-attribute-access-time', `file-attribute-modification-time',
+`file-attribute-status-change-time', `file-attribute-size',
+`file-attribute-modes', `file-attribute-inode-number', and
+`file-attribute-device-number'.
+
Elements of the attribute list are:
0. t for directory, string (name linked to) for symbolic link, or nil.
1. Number of links to file.
@@ -950,10 +950,8 @@ file_attributes (int fd, char const *name, Lisp_Object id_format)
if (!(NILP (id_format) || EQ (id_format, Qinteger)))
{
- block_input ();
uname = stat_uname (&s);
gname = stat_gname (&s);
- unblock_input ();
}
filemodestring (&s, modes);
diff --git a/src/dispextern.h b/src/dispextern.h
index 7b9ae78dcd..f2c42de6cd 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -82,6 +82,7 @@ typedef XImagePtr XImagePtr_or_DC;
#ifdef HAVE_WINDOW_SYSTEM
# include <time.h>
+# include "fontset.h"
#endif
#ifndef HAVE_WINDOW_SYSTEM
@@ -1812,36 +1813,46 @@ struct face_cache
bool_bf menu_face_changed_p : 1;
};
+/* Return a non-null pointer to the cached face with ID on frame F. */
+
+#define FACE_FROM_ID(F, ID) \
+ (eassert (UNSIGNED_CMP (ID, <, FRAME_FACE_CACHE (F)->used)), \
+ FRAME_FACE_CACHE (F)->faces_by_id[ID])
+
/* Return a pointer to the face with ID on frame F, or null if such a
face doesn't exist. */
-#define FACE_FROM_ID(F, ID) \
- (UNSIGNED_CMP (ID, <, FRAME_FACE_CACHE (F)->used) \
- ? FRAME_FACE_CACHE (F)->faces_by_id[ID] \
- : NULL)
+#define FACE_FROM_ID_OR_NULL(F, ID) \
+ (UNSIGNED_CMP (ID, <, FRAME_FACE_CACHE (F)->used) \
+ ? FRAME_FACE_CACHE (F)->faces_by_id[ID] \
+ : NULL)
+/* True if FACE is suitable for displaying ASCII characters. */
+INLINE bool
+FACE_SUITABLE_FOR_ASCII_CHAR_P (struct face *face)
+{
#ifdef HAVE_WINDOW_SYSTEM
-
-/* Non-zero if FACE is suitable for displaying character CHAR. */
-
-#define FACE_SUITABLE_FOR_ASCII_CHAR_P(FACE, CHAR) \
- ((FACE) == (FACE)->ascii_face)
+ return face == face->ascii_face;
+#else
+ return true;
+#endif
+}
/* Return the id of the realized face on frame F that is like the face
- FACE, but is suitable for displaying character CHAR at buffer or
+ FACE, but is suitable for displaying character CHARACTER at buffer or
string position POS. OBJECT is the string object, or nil for
buffer. This macro is only meaningful for multibyte character
CHAR. */
-
-#define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT) \
- face_for_char ((F), (FACE), (CHAR), (POS), (OBJECT))
-
-#else /* not HAVE_WINDOW_SYSTEM */
-
-#define FACE_SUITABLE_FOR_ASCII_CHAR_P(FACE, CHAR) true
-#define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT) ((FACE)->id)
-
-#endif /* not HAVE_WINDOW_SYSTEM */
+INLINE int
+FACE_FOR_CHAR (struct frame *f, struct face *face, int character,
+ ptrdiff_t pos, Lisp_Object object)
+{
+#ifdef HAVE_WINDOW_SYSTEM
+ return face_for_char (f, face, character, pos, object);
+#else
+ return face->id;
+#endif
+}
/* Return true if G contains a valid character code. */
INLINE bool
@@ -3083,13 +3094,19 @@ struct image_cache
};
+/* A non-null pointer to the image with id ID on frame F. */
+
+#define IMAGE_FROM_ID(F, ID) \
+ (eassert (UNSIGNED_CMP (ID, <, FRAME_IMAGE_CACHE (F)->used)), \
+ FRAME_IMAGE_CACHE (F)->images[ID])
+
/* Value is a pointer to the image with id ID on frame F, or null if
no image with that id exists. */
-#define IMAGE_FROM_ID(F, ID) \
- (((ID) >= 0 && (ID) < (FRAME_IMAGE_CACHE (F)->used)) \
- ? FRAME_IMAGE_CACHE (F)->images[ID] \
- : NULL)
+#define IMAGE_OPT_FROM_ID(F, ID) \
+ (UNSIGNED_CMP (ID, <, FRAME_IMAGE_CACHE (F)->used) \
+ ? FRAME_IMAGE_CACHE (F)->images[ID] \
+ : NULL)
/* Size of bucket vector of image caches. Should be prime. */
diff --git a/src/dispnew.c b/src/dispnew.c
index 3a0532a693..82d0b76a95 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -5177,8 +5177,8 @@ buffer_posn_from_coords (struct window *w, int *x, int *y, struct display_pos *p
#ifdef HAVE_WINDOW_SYSTEM
if (it.what == IT_IMAGE)
{
- if ((img = IMAGE_FROM_ID (it.f, it.image_id)) != NULL
- && !NILP (img->spec))
+ img = IMAGE_OPT_FROM_ID (it.f, it.image_id);
+ if (img && !NILP (img->spec))
*object = img->spec;
}
#endif
@@ -5275,7 +5275,7 @@ mode_line_string (struct window *w, enum window_part part,
if (glyph->type == IMAGE_GLYPH)
{
struct image *img;
- img = IMAGE_FROM_ID (WINDOW_XFRAME (w), glyph->u.img_id);
+ img = IMAGE_OPT_FROM_ID (WINDOW_XFRAME (w), glyph->u.img_id);
if (img != NULL)
*object = img->spec;
y0 -= row->ascent - glyph->ascent;
@@ -5362,7 +5362,7 @@ marginal_area_string (struct window *w, enum window_part part,
if (glyph->type == IMAGE_GLYPH)
{
struct image *img;
- img = IMAGE_FROM_ID (WINDOW_XFRAME (w), glyph->u.img_id);
+ img = IMAGE_OPT_FROM_ID (WINDOW_XFRAME (w), glyph->u.img_id);
if (img != NULL)
*object = img->spec;
y0 -= row->ascent - glyph->ascent;
@@ -6038,11 +6038,11 @@ init_display (void)
#endif
/* If no window system has been specified, try to use the terminal. */
- if (! isatty (0))
+ if (! isatty (STDIN_FILENO))
fatal ("standard input is not a tty");
#ifdef WINDOWSNT
- terminal_type = "w32console";
+ terminal_type = (char *)"w32console";
#else
terminal_type = getenv ("TERM");
#endif
diff --git a/src/doc.c b/src/doc.c
index 86e1e0d408..6376398cc2 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -339,16 +339,7 @@ string is passed through `substitute-command-keys'. */)
if (CONSP (fun) && EQ (XCAR (fun), Qmacro))
fun = XCDR (fun);
if (SUBRP (fun))
- {
- if (XSUBR (fun)->doc == 0)
- return Qnil;
- /* FIXME: This is not portable, as it assumes that string
- pointers have the top bit clear. */
- else if ((intptr_t) XSUBR (fun)->doc >= 0)
- doc = build_string (XSUBR (fun)->doc);
- else
- doc = make_number ((intptr_t) XSUBR (fun)->doc);
- }
+ doc = make_number (XSUBR (fun)->doc);
else if (COMPILEDP (fun))
{
if ((ASIZE (fun) & PSEUDOVECTOR_SIZE_MASK) <= COMPILED_DOC_STRING)
@@ -473,7 +464,7 @@ aren't strings. */)
/* Scanning the DOC files and placing docstring offsets into functions. */
static void
-store_function_docstring (Lisp_Object obj, ptrdiff_t offset)
+store_function_docstring (Lisp_Object obj, EMACS_INT offset)
{
/* Don't use indirect_function here, or defaliases will apply their
docstrings to the base functions (Bug#2603). */
@@ -481,15 +472,10 @@ store_function_docstring (Lisp_Object obj, ptrdiff_t offset)
/* The type determines where the docstring is stored. */
- /* Lisp_Subrs have a slot for it. */
- if (SUBRP (fun))
- {
- intptr_t negative_offset = - offset;
- XSUBR (fun)->doc = (char *) negative_offset;
- }
-
/* If it's a lisp form, stick it in the form. */
- else if (CONSP (fun))
+ if (CONSP (fun) && EQ (XCAR (fun), Qmacro))
+ fun = XCDR (fun);
+ if (CONSP (fun))
{
Lisp_Object tem;
@@ -503,10 +489,12 @@ store_function_docstring (Lisp_Object obj, ptrdiff_t offset)
correctness is quite delicate. */
XSETCAR (tem, make_number (offset));
}
- else if (EQ (tem, Qmacro))
- store_function_docstring (XCDR (fun), offset);
}
+ /* Lisp_Subrs have a slot for it. */
+ else if (SUBRP (fun))
+ XSUBR (fun)->doc = offset;
+
/* Bytecode objects sometimes have slots for it. */
else if (COMPILEDP (fun))
{
@@ -726,13 +714,13 @@ summary).
Each substring of the form \\=\\<MAPVAR> specifies the use of MAPVAR
as the keymap for future \\=\\[COMMAND] substrings.
-Each \\=‘ and \\=` is replaced by left quote, and each \\=’ and \\='
+Each grave accent \\=` is replaced by left quote, and each apostrophe \\='
is replaced by right quote. Left and right quote characters are
specified by `text-quoting-style'.
-\\=\\= quotes the following character and is discarded; thus,
-\\=\\=\\=\\= puts \\=\\= into the output, \\=\\=\\=\\[ puts \\=\\[ into the output, and
-\\=\\=\\=` puts \\=` into the output.
+\\=\\= quotes the following character and is discarded; thus, \\=\\=\\=\\= puts \\=\\=
+into the output, \\=\\=\\=\\[ puts \\=\\[ into the output, and \\=\\=\\=` puts \\=` into the
+output.
Return the original STRING if no substitutions are made.
Otherwise, return a new string. */)
@@ -750,25 +738,20 @@ Otherwise, return a new string. */)
unsigned char const *start;
ptrdiff_t length, length_byte;
Lisp_Object name;
- bool multibyte, pure_ascii;
ptrdiff_t nchars;
if (NILP (string))
return Qnil;
- CHECK_STRING (string);
- tem = Qnil;
- keymap = Qnil;
- name = Qnil;
+ /* If STRING contains non-ASCII unibyte data, process its
+ properly-encoded multibyte equivalent instead. This simplifies
+ the implementation and is OK since substitute-command-keys is
+ intended for use only on text strings. Keep STRING around, since
+ it will be returned if no changes occur. */
+ Lisp_Object str = Fstring_make_multibyte (string);
enum text_quoting_style quoting_style = text_quoting_style ();
- multibyte = STRING_MULTIBYTE (string);
- /* Pure-ASCII unibyte input strings should produce unibyte strings
- if substitution doesn't yield non-ASCII bytes, otherwise they
- should produce multibyte strings. */
- pure_ascii = SBYTES (string) == count_size_as_multibyte (SDATA (string),
- SCHARS (string));
nchars = 0;
/* KEYMAP is either nil (which means search all the active keymaps)
@@ -777,59 +760,53 @@ Otherwise, return a new string. */)
or from a \\<mapname> construct in STRING itself.. */
keymap = Voverriding_local_map;
- bsize = SBYTES (string);
+ ptrdiff_t strbytes = SBYTES (str);
+ bsize = strbytes;
+
+ /* Fixed-size stack buffer. */
+ char sbuf[MAX_ALLOCA];
- /* Add some room for expansion due to quote replacement. */
- enum { EXTRA_ROOM = 20 };
- if (bsize <= STRING_BYTES_BOUND - EXTRA_ROOM)
- bsize += EXTRA_ROOM;
+ /* Heap-allocated buffer, if any. */
+ char *abuf;
- bufp = buf = xmalloc (bsize);
+ /* Extra room for expansion due to replacing ‘\[]’ with ‘M-x ’. */
+ enum { EXTRA_ROOM = sizeof "M-x " - sizeof "\\[]" };
+
+ if (bsize <= sizeof sbuf - EXTRA_ROOM)
+ {
+ abuf = NULL;
+ buf = sbuf;
+ bsize = sizeof sbuf;
+ }
+ else
+ buf = abuf = xpalloc (NULL, &bsize, EXTRA_ROOM, STRING_BYTES_BOUND, 1);
+ bufp = buf;
- strp = SDATA (string);
- while (strp < SDATA (string) + SBYTES (string))
+ strp = SDATA (str);
+ while (strp < SDATA (str) + strbytes)
{
- if (strp[0] == '\\' && strp[1] == '=')
+ unsigned char *close_bracket;
+
+ if (strp[0] == '\\' && strp[1] == '='
+ && strp + 2 < SDATA (str) + strbytes)
{
/* \= quotes the next character;
thus, to put in \[ without its special meaning, use \=\[. */
changed = nonquotes_changed = true;
strp += 2;
- if (multibyte)
- {
- int len;
-
- STRING_CHAR_AND_LENGTH (strp, len);
- if (len == 1)
- *bufp = *strp;
- else
- memcpy (bufp, strp, len);
- strp += len;
- bufp += len;
- nchars++;
- }
- else
- *bufp++ = *strp++, nchars++;
+ /* Fall through to copy one char. */
}
- else if (strp[0] == '\\' && strp[1] == '[')
+ else if (strp[0] == '\\' && strp[1] == '['
+ && (close_bracket
+ = memchr (strp + 2, ']',
+ SDATA (str) + strbytes - (strp + 2))))
{
- ptrdiff_t start_idx;
bool follow_remap = 1;
- strp += 2; /* skip \[ */
- start = strp;
- start_idx = start - SDATA (string);
-
- while ((strp - SDATA (string)
- < SBYTES (string))
- && *strp != ']')
- strp++;
- length_byte = strp - start;
-
- strp++; /* skip ] */
+ start = strp + 2;
+ length_byte = close_bracket - start;
+ idx = close_bracket + 1 - SDATA (str);
- /* Save STRP in IDX. */
- idx = strp - SDATA (string);
name = Fintern (make_string ((char *) start, length_byte), Qnil);
do_remap:
@@ -844,25 +821,17 @@ Otherwise, return a new string. */)
goto do_remap;
}
- /* Note the Fwhere_is_internal can GC, so we have to take
- relocation of string contents into account. */
- strp = SDATA (string) + idx;
- start = SDATA (string) + start_idx;
+ /* Fwhere_is_internal can GC, so take relocation of string
+ contents into account. */
+ strp = SDATA (str) + idx;
+ start = strp - length_byte - 1;
if (NILP (tem)) /* but not on any keys */
{
- ptrdiff_t offset = bufp - buf;
- if (STRING_BYTES_BOUND - 4 < bsize)
- string_overflow ();
- buf = xrealloc (buf, bsize += 4);
- bufp = buf + offset;
memcpy (bufp, "M-x ", 4);
bufp += 4;
nchars += 4;
- if (multibyte)
- length = multibyte_chars_in_text (start, length_byte);
- else
- length = length_byte;
+ length = multibyte_chars_in_text (start, length_byte);
goto subst;
}
else
@@ -873,28 +842,20 @@ Otherwise, return a new string. */)
}
/* \{foo} is replaced with a summary of the keymap (symbol-value foo).
\<foo> just sets the keymap used for \[cmd]. */
- else if (strp[0] == '\\' && (strp[1] == '{' || strp[1] == '<'))
+ else if (strp[0] == '\\' && (strp[1] == '{' || strp[1] == '<')
+ && (close_bracket
+ = memchr (strp + 2, strp[1] == '{' ? '}' : '>',
+ SDATA (str) + strbytes - (strp + 2))))
{
- struct buffer *oldbuf;
- ptrdiff_t start_idx;
+ {
+ bool generate_summary = strp[1] == '{';
/* This is for computing the SHADOWS arg for describe_map_tree. */
Lisp_Object active_maps = Fcurrent_active_maps (Qnil, Qnil);
- Lisp_Object earlier_maps;
ptrdiff_t count = SPECPDL_INDEX ();
- strp += 2; /* skip \{ or \< */
- start = strp;
- start_idx = start - SDATA (string);
-
- while ((strp - SDATA (string) < SBYTES (string))
- && *strp != '}' && *strp != '>')
- strp++;
-
- length_byte = strp - start;
- strp++; /* skip } or > */
-
- /* Save STRP in IDX. */
- idx = strp - SDATA (string);
+ start = strp + 2;
+ length_byte = close_bracket - start;
+ idx = close_bracket + 1 - SDATA (str);
/* Get the value of the keymap in TEM, or nil if undefined.
Do this while still in the user's current buffer
@@ -905,16 +866,11 @@ Otherwise, return a new string. */)
{
tem = Fsymbol_value (name);
if (! NILP (tem))
- {
- tem = get_keymap (tem, 0, 1);
- /* Note that get_keymap can GC. */
- strp = SDATA (string) + idx;
- start = SDATA (string) + start_idx;
- }
+ tem = get_keymap (tem, 0, 1);
}
/* Now switch to a temp buffer. */
- oldbuf = current_buffer;
+ struct buffer *oldbuf = current_buffer;
set_buffer_internal (XBUFFER (Vprin1_to_string_buffer));
/* This is for an unusual case where some after-change
function uses 'format' or 'prin1' or something else that
@@ -931,15 +887,17 @@ Otherwise, return a new string. */)
SBYTES (name), 1);
AUTO_STRING (msg_suffix, "', which is not currently defined.\n");
insert1 (Fsubstitute_command_keys (msg_suffix));
- if (start[-1] == '<') keymap = Qnil;
+ if (!generate_summary)
+ keymap = Qnil;
}
- else if (start[-1] == '<')
+ else if (!generate_summary)
keymap = tem;
else
{
/* Get the list of active keymaps that precede this one.
If this one's not active, get nil. */
- earlier_maps = Fcdr (Fmemq (tem, Freverse (active_maps)));
+ Lisp_Object earlier_maps
+ = Fcdr (Fmemq (tem, Freverse (active_maps)));
describe_map_tree (tem, 1, Fnreverse (earlier_maps),
Qnil, 0, 1, 0, 0, 1);
}
@@ -947,42 +905,52 @@ Otherwise, return a new string. */)
Ferase_buffer ();
set_buffer_internal (oldbuf);
unbind_to (count, Qnil);
+ }
subst_string:
+ /* Convert non-ASCII unibyte data to properly-encoded multibyte,
+ for the same reason STRING was converted to STR. */
+ tem = Fstring_make_multibyte (tem);
start = SDATA (tem);
+ length = SCHARS (tem);
length_byte = SBYTES (tem);
- if (multibyte || pure_ascii)
- length = SCHARS (tem);
- else
- length = length_byte;
subst:
nonquotes_changed = true;
subst_quote:
changed = true;
{
ptrdiff_t offset = bufp - buf;
- if (STRING_BYTES_BOUND - length_byte < bsize)
+ ptrdiff_t avail = bsize - offset;
+ ptrdiff_t need = strbytes - idx;
+ if (INT_ADD_WRAPV (need, length_byte + EXTRA_ROOM, &need))
string_overflow ();
- buf = xrealloc (buf, bsize += length_byte);
- bufp = buf + offset;
+ if (avail < need)
+ {
+ abuf = xpalloc (abuf, &bsize, need - avail,
+ STRING_BYTES_BOUND, 1);
+ if (buf == sbuf)
+ memcpy (abuf, sbuf, offset);
+ buf = abuf;
+ bufp = buf + offset;
+ }
memcpy (bufp, start, length_byte);
bufp += length_byte;
nchars += length;
- /* Check STRING again in case gc relocated it. */
- strp = SDATA (string) + idx;
+
+ /* Some of the previous code can GC, so take relocation of
+ string contents into account. */
+ strp = SDATA (str) + idx;
+
+ continue;
}
}
else if ((strp[0] == '`' || strp[0] == '\'')
- && quoting_style == CURVE_QUOTING_STYLE
- && multibyte)
+ && quoting_style == CURVE_QUOTING_STYLE)
{
start = (unsigned char const *) (strp[0] == '`' ? uLSQM : uRSQM);
+ length = 1;
length_byte = sizeof uLSQM - 1;
- if (multibyte || pure_ascii)
- length = 1;
- else
- length = length_byte;
- idx = strp - SDATA (string) + 1;
+ idx = strp - SDATA (str) + 1;
goto subst_quote;
}
else if (strp[0] == '`' && quoting_style == STRAIGHT_QUOTING_STYLE)
@@ -991,31 +959,14 @@ Otherwise, return a new string. */)
strp++;
nchars++;
changed = true;
+ continue;
}
- else if (! multibyte)
- *bufp++ = *strp++, nchars++;
- else
- {
- int len;
- int ch = STRING_CHAR_AND_LENGTH (strp, len);
- if ((ch == LEFT_SINGLE_QUOTATION_MARK
- || ch == RIGHT_SINGLE_QUOTATION_MARK)
- && quoting_style != CURVE_QUOTING_STYLE)
- {
- *bufp++ = ((ch == LEFT_SINGLE_QUOTATION_MARK
- && quoting_style == GRAVE_QUOTING_STYLE)
- ? '`' : '\'');
- strp += len;
- changed = true;
- }
- else
- {
- do
- *bufp++ = *strp++;
- while (--len != 0);
- }
- nchars++;
- }
+
+ /* Copy one char. */
+ do
+ *bufp++ = *strp++;
+ while (! CHAR_HEAD_P (*strp));
+ nchars++;
}
if (changed) /* don't bother if nothing substituted */
@@ -1037,7 +988,7 @@ Otherwise, return a new string. */)
}
else
tem = string;
- xfree (buf);
+ xfree (abuf);
return tem;
}
@@ -1058,12 +1009,17 @@ syms_of_doc (void)
DEFVAR_LISP ("text-quoting-style", Vtext_quoting_style,
doc: /* Style to use for single quotes in help and messages.
-Its value should be a symbol.
+Its value should be a symbol. It works by substituting certain single
+quotes for grave accent and apostrophe. This is done in help output
+and in functions like `message' and `format-message'. It is not done
+in `format'.
+
`curve' means quote with curved single quotes \\=‘like this\\=’.
`straight' means quote with straight apostrophes \\='like this\\='.
-`grave' means quote with grave accent and apostrophe \\=`like this\\='.
-The default value nil acts like `curve' if curved single quotes are
-displayable, and like `grave' otherwise. */);
+`grave' means quote with grave accent and apostrophe \\=`like this\\=';
+i.e., do not alter quote marks. The default value nil acts like
+`curve' if curved single quotes are displayable, and like `grave'
+otherwise. */);
Vtext_quoting_style = Qnil;
DEFVAR_BOOL ("internal--text-quoting-flag", text_quoting_flag,
diff --git a/src/dynlib.c b/src/dynlib.c
index 64f688ca80..ada5837380 100644
--- a/src/dynlib.c
+++ b/src/dynlib.c
@@ -52,6 +52,7 @@ typedef BOOL (WINAPI *GetModuleHandleExA_Proc) (DWORD,LPCSTR,HMODULE*);
/* This needs to be called at startup to countermand any non-zero
values recorded by temacs. */
+void dynlib_reset_last_error (void);
void
dynlib_reset_last_error (void)
{
diff --git a/src/editfns.c b/src/editfns.c
index 32c8bec6db..732306af86 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -146,8 +146,9 @@ xtzfree (timezone_t tz)
static timezone_t
tzlookup (Lisp_Object zone, bool settz)
{
- static char const tzbuf_format[] = "XXX%s%"pI"d:%02d:%02d";
- char tzbuf[sizeof tzbuf_format + INT_STRLEN_BOUND (EMACS_INT)];
+ static char const tzbuf_format[] = "<%+.*"pI"d>%s%"pI"d:%02d:%02d";
+ char const *trailing_tzbuf_format = tzbuf_format + sizeof "<%+.*"pI"d" - 1;
+ char tzbuf[sizeof tzbuf_format + 2 * INT_STRLEN_BOUND (EMACS_INT)];
char const *zone_string;
timezone_t new_tz;
@@ -160,16 +161,50 @@ tzlookup (Lisp_Object zone, bool settz)
}
else
{
+ bool plain_integer = INTEGERP (zone);
+
if (EQ (zone, Qwall))
zone_string = 0;
else if (STRINGP (zone))
- zone_string = SSDATA (zone);
- else if (INTEGERP (zone))
+ zone_string = SSDATA (ENCODE_SYSTEM (zone));
+ else if (plain_integer || (CONSP (zone) && INTEGERP (XCAR (zone))
+ && CONSP (XCDR (zone))))
{
+ Lisp_Object abbr;
+ if (!plain_integer)
+ {
+ abbr = XCAR (XCDR (zone));
+ zone = XCAR (zone);
+ }
+
EMACS_INT abszone = eabs (XINT (zone)), hour = abszone / (60 * 60);
- int min = (abszone / 60) % 60, sec = abszone % 60;
- sprintf (tzbuf, tzbuf_format, &"-"[XINT (zone) < 0], hour, min, sec);
- zone_string = tzbuf;
+ int hour_remainder = abszone % (60 * 60);
+ int min = hour_remainder / 60, sec = hour_remainder % 60;
+
+ if (plain_integer)
+ {
+ int prec = 2;
+ EMACS_INT numzone = hour;
+ if (hour_remainder != 0)
+ {
+ prec += 2, numzone = 100 * numzone + min;
+ if (sec != 0)
+ prec += 2, numzone = 100 * numzone + sec;
+ }
+ sprintf (tzbuf, tzbuf_format, prec, numzone,
+ &"-"[XINT (zone) < 0], hour, min, sec);
+ zone_string = tzbuf;
+ }
+ else
+ {
+ AUTO_STRING (leading, "<");
+ AUTO_STRING_WITH_LEN (trailing, tzbuf,
+ sprintf (tzbuf, trailing_tzbuf_format,
+ &"-"[XINT (zone) < 0],
+ hour, min, sec));
+ zone_string = SSDATA (concat3 (leading, ENCODE_SYSTEM (abbr),
+ trailing));
+ }
}
else
xsignal2 (Qerror, build_string ("Invalid time zone specification"),
@@ -181,6 +216,7 @@ tzlookup (Lisp_Object zone, bool settz)
{
block_input ();
emacs_setenv_TZ (zone_string);
+ tzset ();
timezone_t old_tz = local_tz;
local_tz = new_tz;
tzfree (old_tz);
@@ -1969,9 +2005,13 @@ DEFUN ("format-time-string", Fformat_time_string, Sformat_time_string, 1, 3, 0,
doc: /* Use FORMAT-STRING to format the time TIME, or now if omitted.
TIME is specified as (HIGH LOW USEC PSEC), as returned by
`current-time' or `file-attributes'. The obsolete form (HIGH . LOW)
-is also still accepted. The optional ZONE is omitted or nil for Emacs
-local time, t for Universal Time, `wall' for system wall clock time,
-or a string as in the TZ environment variable.
+is also still accepted.
+
+The optional ZONE is omitted or nil for Emacs local time, t for
+Universal Time, `wall' for system wall clock time, or a string as in
+the TZ environment variable. It can also be a list (as from
+`current-time-zone') or an integer (as from `decode-time') applied
+without consideration for daylight saving time.
The value is a copy of FORMAT-STRING, but with certain constructs replaced
by text that describes the specified date and time in TIME:
@@ -2042,7 +2082,6 @@ format_time_string (char const *format, ptrdiff_t formatlen,
char *buf = buffer;
ptrdiff_t size = sizeof buffer;
size_t len;
- Lisp_Object bufstring;
int ns = t.tv_nsec;
USE_SAFE_ALLOCA;
@@ -2074,9 +2113,11 @@ format_time_string (char const *format, ptrdiff_t formatlen,
}
xtzfree (tz);
- bufstring = make_unibyte_string (buf, len);
+ AUTO_STRING_WITH_LEN (bufstring, buf, len);
+ Lisp_Object result = code_convert_string_norecord (bufstring,
+ Vlocale_coding_system, 0);
SAFE_FREE ();
- return code_convert_string_norecord (bufstring, Vlocale_coding_system, 0);
+ return result;
}
DEFUN ("decode-time", Fdecode_time, Sdecode_time, 0, 2, 0,
@@ -2084,9 +2125,12 @@ DEFUN ("decode-time", Fdecode_time, Sdecode_time, 0, 2, 0,
The optional SPECIFIED-TIME should be a list of (HIGH LOW . IGNORED),
as from `current-time' and `file-attributes', or nil to use the
current time. The obsolete form (HIGH . LOW) is also still accepted.
+
The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
-the TZ environment variable.
+the TZ environment variable. It can also be a list (as from
+`current-time-zone') or an integer (as from `decode-time') applied
+without consideration for daylight saving time.
The list has the following nine members: SEC is an integer between 0
and 60; SEC is 60 for a leap second, which only some operating systems
@@ -2133,22 +2177,22 @@ usage: (decode-time &optional TIME ZONE) */)
}
/* Return OBJ - OFFSET, checking that OBJ is a valid fixnum and that
- the result is representable as an int. Assume OFFSET is small and
- nonnegative. */
+ the result is representable as an int. */
static int
check_tm_member (Lisp_Object obj, int offset)
{
- EMACS_INT n;
CHECK_NUMBER (obj);
- n = XINT (obj);
- if (! (INT_MIN + offset <= n && n - offset <= INT_MAX))
+ EMACS_INT n = XINT (obj);
+ int result;
+ if (INT_SUBTRACT_WRAPV (n, offset, &result))
time_overflow ();
- return n - offset;
+ return result;
}
DEFUN ("encode-time", Fencode_time, Sencode_time, 6, MANY, 0,
doc: /* Convert SECOND, MINUTE, HOUR, DAY, MONTH, YEAR and ZONE to internal time.
This is the reverse operation of `decode-time', which see.
+
The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
the TZ environment variable. It can also be a list (as from
@@ -2183,8 +2227,6 @@ usage: (encode-time SECOND MINUTE HOUR DAY MONTH YEAR &optional ZONE) */)
tm.tm_year = check_tm_member (args[5], TM_YEAR_BASE);
tm.tm_isdst = -1;
- if (CONSP (zone))
- zone = XCAR (zone);
timezone_t tz = tzlookup (zone, false);
value = emacs_mktime_z (tz, &tm);
xtzfree (tz);
@@ -2213,7 +2255,9 @@ but this is considered obsolete.
The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
-the TZ environment variable. */)
+the TZ environment variable. It can also be a list (as from
+`current-time-zone') or an integer (as from `decode-time') applied
+without consideration for daylight saving time. */)
(Lisp_Object specified_time, Lisp_Object zone)
{
time_t value = lisp_seconds_argument (specified_time);
@@ -2289,8 +2333,12 @@ instead of using the current time. The argument should have the form
\(HIGH LOW . IGNORED). Thus, you can use times obtained from
`current-time' and from `file-attributes'. SPECIFIED-TIME can also
have the form (HIGH . LOW), but this is considered obsolete.
-Optional second arg ZONE is omitted or nil for the local time zone, or
-a string as in the TZ environment variable.
+
+The optional ZONE is omitted or nil for Emacs local time, t for
+Universal Time, `wall' for system wall clock time, or a string as in
+the TZ environment variable. It can also be a list (as from
+`current-time-zone') or an integer (as from `decode-time') applied
+without consideration for daylight saving time.
Some operating systems cannot provide all this information to Emacs;
in this case, `current-time-zone' returns a list containing nil for
@@ -2314,15 +2362,18 @@ the data it can't find. */)
zone_offset = make_number (offset);
if (SCHARS (zone_name) == 0)
{
- /* No local time zone name is available; use "+-NNNN" instead. */
- long int m = offset / 60;
- long int am = offset < 0 ? - m : m;
- long int hour = am / 60;
- int min = am % 60;
- char buf[sizeof "+00" + INT_STRLEN_BOUND (long int)];
- zone_name = make_formatted_string (buf, "%c%02ld%02d",
+ /* No local time zone name is available; use numeric zone instead. */
+ long int hour = offset / 3600;
+ int min_sec = offset % 3600;
+ int amin_sec = min_sec < 0 ? - min_sec : min_sec;
+ int min = amin_sec / 60;
+ int sec = amin_sec % 60;
+ int min_prec = min_sec ? 2 : 0;
+ int sec_prec = sec ? 2 : 0;
+ char buf[sizeof "+0000" + INT_STRLEN_BOUND (long int)];
+ zone_name = make_formatted_string (buf, "%c%.2ld%.*d%.*d",
(offset < 0 ? '-' : '+'),
- hour, min);
+ hour, min_prec, min, sec_prec, sec);
}
}
@@ -2331,11 +2382,11 @@ the data it can't find. */)
DEFUN ("set-time-zone-rule", Fset_time_zone_rule, Sset_time_zone_rule, 1, 1, 0,
doc: /* Set the Emacs local time zone using TZ, a string specifying a time zone rule.
-
If TZ is nil or `wall', use system wall clock time; this differs from
the usual Emacs convention where nil means current local time. If TZ
-is t, use Universal Time. If TZ is an integer, treat it as in
-`encode-time'.
+is t, use Universal Time. If TZ is a list (as from
+`current-time-zone') or an integer (as from `decode-time'), use the
+specified time zone without consideration for daylight saving time.
Instead of calling this function, you typically want something else.
To temporarily use a different time zone rule for just one invocation
@@ -2408,23 +2459,24 @@ emacs_setenv_TZ (const char *tzstring)
tzval[tzeqlen] = 0;
}
- if (new_tzvalbuf
-#ifdef WINDOWSNT
- /* MS-Windows implementation of 'putenv' copies the argument
- string into a block it allocates, so modifying tzval string
- does not change the environment. OTOH, the other threads run
- by Emacs on MS-Windows never call 'xputenv' or 'putenv' or
- 'unsetenv', so the original cause for the dicey in-place
- modification technique doesn't exist there in the first
- place. */
- || 1
+
+#ifndef WINDOWSNT
+ /* Modifying *TZVAL merely requires calling tzset (which is the
+ caller's responsibility). However, modifying TZVAL requires
+ calling putenv; although this is not thread-safe, in practice this
+ runs only on startup when there is only one thread. */
+ bool need_putenv = new_tzvalbuf;
+#else
+ /* MS-Windows 'putenv' copies the argument string into a block it
+ allocates, so modifying *TZVAL will not change the environment.
+ However, the other threads run by Emacs on MS-Windows never call
+ 'xputenv' or 'putenv' or 'unsetenv', so the original cause for the
+ dicey in-place modification technique doesn't exist there in the
+ first place. */
+ bool need_putenv = true;
#endif
- )
- {
- /* Although this is not thread-safe, in practice this runs only
- on startup when there is only one thread. */
- xputenv (tzval);
- }
+ if (need_putenv)
+ xputenv (tzval);
return 0;
}
@@ -3312,7 +3364,7 @@ It returns the number of characters changed. */)
ptrdiff_t size; /* Size of translate table. */
ptrdiff_t pos, pos_byte, end_pos;
bool multibyte = !NILP (BVAR (current_buffer, enable_multibyte_characters));
- bool string_multibyte IF_LINT (= 0);
+ bool string_multibyte UNINIT;
validate_region (&start, &end);
if (CHAR_TABLE_P (table))
@@ -3833,6 +3885,9 @@ precision specifier says how many decimal places to show; if zero, the
decimal point itself is omitted. For %s and %S, the precision
specifier truncates the string to the given width.
+Text properties, if any, are copied from the format-string to the
+produced text.
+
usage: (format STRING &rest OBJECTS) */)
(ptrdiff_t nargs, Lisp_Object *args)
{
@@ -3867,7 +3922,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
ptrdiff_t bufsize = sizeof initial_buffer;
ptrdiff_t max_bufsize = STRING_BYTES_BOUND + 1;
char *p;
- ptrdiff_t buf_save_value_index IF_LINT (= 0);
+ ptrdiff_t buf_save_value_index UNINIT;
char *format, *end;
ptrdiff_t nchars;
/* When we make a multibyte string, we must pay attention to the
@@ -4126,6 +4181,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
p += padding;
nchars += padding;
}
+ info[n].start = nchars;
if (p > buf
&& multibyte
@@ -4138,9 +4194,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
nbytes,
STRING_MULTIBYTE (args[n]), multibyte);
- info[n].start = nchars;
nchars += nchars_string;
- info[n].end = nchars;
if (minus_flag)
{
@@ -4148,6 +4202,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
p += padding;
nchars += padding;
}
+ info[n].end = nchars;
/* If this argument has text properties, record where
in the result string it appears. */
@@ -4365,6 +4420,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
exponent_bytes = src + sprintf_bytes - e;
}
+ info[n].start = nchars;
if (! minus_flag)
{
memset (p, ' ', padding);
@@ -4387,9 +4443,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
memcpy (p, src, exponent_bytes);
p += exponent_bytes;
- info[n].start = nchars;
nchars += leading_zeros + sprintf_bytes + trailing_zeros;
- info[n].end = nchars;
if (minus_flag)
{
@@ -4397,6 +4451,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
p += padding;
nchars += padding;
}
+ info[n].end = nchars;
continue;
}
@@ -4404,14 +4459,6 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
}
else
{
- /* Named constants for the UTF-8 encodings of U+2018 LEFT SINGLE
- QUOTATION MARK and U+2019 RIGHT SINGLE QUOTATION MARK. */
- enum
- {
- uLSQM0 = 0xE2, uLSQM1 = 0x80, uLSQM2 = 0x98,
- /* uRSQM0 = 0xE2, uRSQM1 = 0x80, */ uRSQM2 = 0x99
- };
-
unsigned char str[MAX_MULTIBYTE_LENGTH];
if ((format_char == '`' || format_char == '\'')
@@ -4427,18 +4474,6 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
}
else if (format_char == '`' && quoting_style == STRAIGHT_QUOTING_STYLE)
convsrc = "'";
- else if (format_char == uLSQM0 && CURVE_QUOTING_STYLE < quoting_style
- && multibyte_format
- && (unsigned char) format[0] == uLSQM1
- && ((unsigned char) format[1] == uLSQM2
- || (unsigned char) format[1] == uRSQM2))
- {
- convsrc = (((unsigned char) format[1] == uLSQM2
- && quoting_style == GRAVE_QUOTING_STYLE)
- ? "`" : "'");
- format += 2;
- memset (&discarded[format0 + 1 - format_start], 2, 2);
- }
else
{
/* Copy a single character from format to buf. */
@@ -4596,7 +4631,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
len = make_number (SCHARS (args[i]));
Lisp_Object new_len = make_number (info[i].end - info[i].start);
props = text_property_list (args[i], make_number (0), len, Qnil);
- props = extend_property_ranges (props, new_len);
+ props = extend_property_ranges (props, len, new_len);
/* If successive arguments have properties, be sure that
the value of `composition' property be the copy. */
if (1 < i && info[i - 1].end)
@@ -5023,6 +5058,14 @@ Transposing beyond buffer boundaries is an error. */)
start2_byte, start2_byte + len2_byte);
fix_start_end_in_overlays (start1, end2);
}
+ else
+ {
+ /* The character positions of the markers remain intact, but we
+ still need to update their byte positions, because the
+ transposed regions might include multibyte sequences which
+ make some original byte positions of the markers invalid. */
+ adjust_markers_bytepos (start1, start1_byte, end2, end2_byte, 0);
+ }
signal_after_change (start1, end2 - start1, end2 - start1);
return Qnil;
diff --git a/src/emacs-module.c b/src/emacs-module.c
index eca5af739b..724d24a776 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -64,6 +64,13 @@ enum
&& INTPTR_MAX == EMACS_INT_MAX)
};
+/* Function prototype for the module init function. */
+typedef int (*emacs_init_function) (struct emacs_runtime *);
+
+/* Function prototype for the module Lisp functions. */
+typedef emacs_value (*emacs_subr) (emacs_env *, ptrdiff_t,
+ emacs_value [], void *);
+
/* Function prototype for module user-pointer finalizers. These
should not throw C++ exceptions, so emacs-module.h declares the
corresponding interfaces with EMACS_NOEXCEPT. There is only C code
@@ -107,14 +114,12 @@ static enum emacs_funcall_exit module_non_local_exit_check (emacs_env *);
static void check_main_thread (void);
static void finalize_environment (struct emacs_env_private *);
static void initialize_environment (emacs_env *, struct emacs_env_private *priv);
-static void module_args_out_of_range (emacs_env *, Lisp_Object, Lisp_Object);
static void module_handle_signal (emacs_env *, Lisp_Object);
static void module_handle_throw (emacs_env *, Lisp_Object);
static void module_non_local_exit_signal_1 (emacs_env *, Lisp_Object, Lisp_Object);
static void module_non_local_exit_throw_1 (emacs_env *, Lisp_Object, Lisp_Object);
static void module_out_of_memory (emacs_env *);
static void module_reset_handlerlist (const int *);
-static void module_wrong_type (emacs_env *, Lisp_Object, Lisp_Object);
/* We used to return NULL when emacs_value was a different type from
Lisp_Object, but nowadays we just use Qnil instead. Although they
@@ -243,6 +248,12 @@ struct module_fun_env
return error_retval; \
MODULE_HANDLE_NONLOCAL_EXIT (error_retval)
+static void
+CHECK_USER_PTR (Lisp_Object obj)
+{
+ CHECK_TYPE (USER_PTRP (obj), Quser_ptrp, obj);
+}
+
/* Catch signals and throws only if the code can actually signal or
throw. If checking is enabled, abort if the current thread is not
the Emacs main thread. */
@@ -270,11 +281,8 @@ module_make_global_ref (emacs_env *env, emacs_value ref)
{
Lisp_Object value = HASH_VALUE (h, i);
EMACS_INT refcount = XFASTINT (value) + 1;
- if (refcount > MOST_POSITIVE_FIXNUM)
- {
- module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
- return module_nil;
- }
+ if (MOST_POSITIVE_FIXNUM < refcount)
+ xsignal0 (Qoverflow_error);
value = make_natnum (refcount);
set_hash_value_slot (h, i, value);
}
@@ -387,17 +395,19 @@ module_make_function (emacs_env *env, ptrdiff_t min_arity, ptrdiff_t max_arity,
envptr->data = data;
Lisp_Object envobj = make_save_ptr (envptr);
- Lisp_Object doc
- = (documentation
- ? code_convert_string_norecord (build_unibyte_string (documentation),
- Qutf_8, false)
- : Qnil);
+ Lisp_Object doc = Qnil;
+ if (documentation)
+ {
+ AUTO_STRING (unibyte_doc, documentation);
+ doc = code_convert_string_norecord (unibyte_doc, Qutf_8, false);
+ }
+
/* FIXME: Use a bytecompiled object, or even better a subr. */
Lisp_Object ret = list4 (Qlambda,
list2 (Qand_rest, Qargs),
doc,
list4 (Qapply,
- list2 (Qfunction, Qinternal_module_call),
+ list2 (Qfunction, Qinternal__module_call),
envobj,
Qargs));
@@ -414,6 +424,8 @@ module_funcall (emacs_env *env, emacs_value fun, ptrdiff_t nargs,
first arg, because that's what Ffuncall takes. */
Lisp_Object *newargs;
USE_SAFE_ALLOCA;
+ if (nargs == PTRDIFF_MAX)
+ xsignal0 (Qoverflow_error);
SAFE_ALLOCA_LISP (newargs, nargs + 1);
newargs[0] = value_to_lisp (fun);
for (ptrdiff_t i = 0; i < nargs; i++)
@@ -460,11 +472,7 @@ module_extract_integer (emacs_env *env, emacs_value n)
{
MODULE_FUNCTION_BEGIN (0);
Lisp_Object l = value_to_lisp (n);
- if (! INTEGERP (l))
- {
- module_wrong_type (env, Qintegerp, l);
- return 0;
- }
+ CHECK_NUMBER (l);
return XINT (l);
}
@@ -472,11 +480,8 @@ static emacs_value
module_make_integer (emacs_env *env, intmax_t n)
{
MODULE_FUNCTION_BEGIN (module_nil);
- if (! (MOST_NEGATIVE_FIXNUM <= n && n <= MOST_POSITIVE_FIXNUM))
- {
- module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
- return module_nil;
- }
+ if (FIXNUM_OVERFLOW_P (n))
+ xsignal0 (Qoverflow_error);
return lisp_to_value (make_number (n));
}
@@ -485,11 +490,7 @@ module_extract_float (emacs_env *env, emacs_value f)
{
MODULE_FUNCTION_BEGIN (0);
Lisp_Object lisp = value_to_lisp (f);
- if (! FLOATP (lisp))
- {
- module_wrong_type (env, Qfloatp, lisp);
- return 0;
- }
+ CHECK_TYPE (FLOATP (lisp), Qfloatp, lisp);
return XFLOAT_DATA (lisp);
}
@@ -506,19 +507,10 @@ module_copy_string_contents (emacs_env *env, emacs_value value, char *buffer,
{
MODULE_FUNCTION_BEGIN (false);
Lisp_Object lisp_str = value_to_lisp (value);
- if (! STRINGP (lisp_str))
- {
- module_wrong_type (env, Qstringp, lisp_str);
- return false;
- }
+ CHECK_STRING (lisp_str);
Lisp_Object lisp_str_utf8 = ENCODE_UTF_8 (lisp_str);
ptrdiff_t raw_size = SBYTES (lisp_str_utf8);
- if (raw_size == PTRDIFF_MAX)
- {
- module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
- return false;
- }
ptrdiff_t required_buf_size = raw_size + 1;
eassert (length != NULL);
@@ -534,8 +526,7 @@ module_copy_string_contents (emacs_env *env, emacs_value value, char *buffer,
if (*length < required_buf_size)
{
*length = required_buf_size;
- module_non_local_exit_signal_1 (env, Qargs_out_of_range, Qnil);
- return false;
+ xsignal0 (Qargs_out_of_range);
}
*length = required_buf_size;
@@ -548,12 +539,7 @@ static emacs_value
module_make_string (emacs_env *env, const char *str, ptrdiff_t length)
{
MODULE_FUNCTION_BEGIN (module_nil);
- if (length > STRING_BYTES_BOUND)
- {
- module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
- return module_nil;
- }
- Lisp_Object lstr = make_unibyte_string (str, length);
+ AUTO_STRING_WITH_LEN (lstr, str, length);
return lisp_to_value (code_convert_string_norecord (lstr, Qutf_8, false));
}
@@ -569,11 +555,7 @@ module_get_user_ptr (emacs_env *env, emacs_value uptr)
{
MODULE_FUNCTION_BEGIN (NULL);
Lisp_Object lisp = value_to_lisp (uptr);
- if (! USER_PTRP (lisp))
- {
- module_wrong_type (env, Quser_ptr, lisp);
- return NULL;
- }
+ CHECK_USER_PTR (lisp);
return XUSER_PTR (lisp)->p;
}
@@ -582,12 +564,8 @@ module_set_user_ptr (emacs_env *env, emacs_value uptr, void *ptr)
{
/* FIXME: This function should return bool because it can fail. */
MODULE_FUNCTION_BEGIN ();
- check_main_thread ();
- if (module_non_local_exit_check (env) != emacs_funcall_exit_return)
- return;
Lisp_Object lisp = value_to_lisp (uptr);
- if (! USER_PTRP (lisp))
- module_wrong_type (env, Quser_ptr, lisp);
+ CHECK_USER_PTR (lisp);
XUSER_PTR (lisp)->p = ptr;
}
@@ -596,11 +574,7 @@ module_get_user_finalizer (emacs_env *env, emacs_value uptr)
{
MODULE_FUNCTION_BEGIN (NULL);
Lisp_Object lisp = value_to_lisp (uptr);
- if (! USER_PTRP (lisp))
- {
- module_wrong_type (env, Quser_ptr, lisp);
- return NULL;
- }
+ CHECK_USER_PTR (lisp);
return XUSER_PTR (lisp)->finalizer;
}
@@ -611,30 +585,26 @@ module_set_user_finalizer (emacs_env *env, emacs_value uptr,
/* FIXME: This function should return bool because it can fail. */
MODULE_FUNCTION_BEGIN ();
Lisp_Object lisp = value_to_lisp (uptr);
- if (! USER_PTRP (lisp))
- module_wrong_type (env, Quser_ptr, lisp);
+ CHECK_USER_PTR (lisp);
XUSER_PTR (lisp)->finalizer = fin;
}
static void
+check_vec_index (Lisp_Object lvec, ptrdiff_t i)
+{
+ CHECK_VECTOR (lvec);
+ if (! (0 <= i && i < ASIZE (lvec)))
+ args_out_of_range_3 (make_fixnum_or_float (i),
+ make_number (0), make_number (ASIZE (lvec) - 1));
+}
+
+static void
module_vec_set (emacs_env *env, emacs_value vec, ptrdiff_t i, emacs_value val)
{
/* FIXME: This function should return bool because it can fail. */
MODULE_FUNCTION_BEGIN ();
Lisp_Object lvec = value_to_lisp (vec);
- if (! VECTORP (lvec))
- {
- module_wrong_type (env, Qvectorp, lvec);
- return;
- }
- if (! (0 <= i && i < ASIZE (lvec)))
- {
- if (MOST_NEGATIVE_FIXNUM <= i && i <= MOST_POSITIVE_FIXNUM)
- module_args_out_of_range (env, lvec, make_number (i));
- else
- module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
- return;
- }
+ check_vec_index (lvec, i);
ASET (lvec, i, value_to_lisp (val));
}
@@ -643,19 +613,7 @@ module_vec_get (emacs_env *env, emacs_value vec, ptrdiff_t i)
{
MODULE_FUNCTION_BEGIN (module_nil);
Lisp_Object lvec = value_to_lisp (vec);
- if (! VECTORP (lvec))
- {
- module_wrong_type (env, Qvectorp, lvec);
- return module_nil;
- }
- if (! (0 <= i && i < ASIZE (lvec)))
- {
- if (MOST_NEGATIVE_FIXNUM <= i && i <= MOST_POSITIVE_FIXNUM)
- module_args_out_of_range (env, lvec, make_number (i));
- else
- module_non_local_exit_signal_1 (env, Qoverflow_error, Qnil);
- return module_nil;
- }
+ check_vec_index (lvec, i);
return lisp_to_value (AREF (lvec, i));
}
@@ -665,11 +623,7 @@ module_vec_size (emacs_env *env, emacs_value vec)
/* FIXME: Return a sentinel value (e.g., -1) on error. */
MODULE_FUNCTION_BEGIN (0);
Lisp_Object lvec = value_to_lisp (vec);
- if (! VECTORP (lvec))
- {
- module_wrong_type (env, Qvectorp, lvec);
- return 0;
- }
+ CHECK_VECTOR (lvec);
return ASIZE (lvec);
}
@@ -828,14 +782,6 @@ module_non_local_exit_throw_1 (emacs_env *env, Lisp_Object tag,
}
}
-/* Module version of `wrong_type_argument'. */
-static void
-module_wrong_type (emacs_env *env, Lisp_Object predicate, Lisp_Object value)
-{
- module_non_local_exit_signal_1 (env, Qwrong_type_argument,
- list2 (predicate, value));
-}
-
/* Signal an out-of-memory condition to the caller. */
static void
module_out_of_memory (emacs_env *env)
@@ -846,13 +792,6 @@ module_out_of_memory (emacs_env *env)
XCDR (Vmemory_signal_data));
}
-/* Signal arguments are out of range. */
-static void
-module_args_out_of_range (emacs_env *env, Lisp_Object a1, Lisp_Object a2)
-{
- module_non_local_exit_signal_1 (env, Qargs_out_of_range, list2 (a1, a2));
-}
-
/* Value conversion. */
@@ -1055,10 +994,12 @@ module_format_fun_env (const struct module_fun_env *env)
? exprintf (&buf, &bufsize, buffer, -1,
"#<module function %s from %s>", sym, path)
: sprintf (buffer, noaddr_format, env->subr));
- Lisp_Object unibyte_result = make_unibyte_string (buffer, size);
+ AUTO_STRING_WITH_LEN (unibyte_result, buffer, size);
+ Lisp_Object result = code_convert_string_norecord (unibyte_result,
+ Qutf_8, false);
if (buf != buffer)
xfree (buf);
- return code_convert_string_norecord (unibyte_result, Qutf_8, false);
+ return result;
}
@@ -1117,7 +1058,7 @@ syms_of_module (void)
defsubr (&Smodule_load);
- DEFSYM (Qinternal_module_call, "internal--module-call");
+ DEFSYM (Qinternal__module_call, "internal--module-call");
defsubr (&Sinternal_module_call);
}
diff --git a/src/emacs-module.h b/src/emacs-module.h
index b4ae5ea743..ae7311b05a 100644
--- a/src/emacs-module.h
+++ b/src/emacs-module.h
@@ -41,7 +41,7 @@ typedef struct emacs_env_25 emacs_env;
BEWARE: Do not assume NULL is a valid value! */
typedef struct emacs_value_tag *emacs_value;
-enum emacs_arity { emacs_variadic_function = -2 };
+enum { emacs_variadic_function = -2 };
/* Struct passed to a module init function (emacs_module_init). */
struct emacs_runtime
@@ -57,13 +57,6 @@ struct emacs_runtime
};
-/* Function prototype for the module init function. */
-typedef int (*emacs_init_function) (struct emacs_runtime *ert);
-
-/* Function prototype for the module Lisp functions. */
-typedef emacs_value (*emacs_subr) (emacs_env *env, ptrdiff_t nargs,
- emacs_value args[], void *data);
-
/* Possible Emacs function call outcomes. */
enum emacs_funcall_exit
{
diff --git a/src/emacs.c b/src/emacs.c
index 2480dfc603..9b2300989f 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -57,11 +57,15 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "dosfns.h"
#endif
+#ifdef HAVE_LIBSYSTEMD
+# include <systemd/sd-daemon.h>
+# include <sys/socket.h>
+#endif
+
#ifdef HAVE_WINDOW_SYSTEM
#include TERM_HEADER
#endif /* HAVE_WINDOW_SYSTEM */
-#include "coding.h"
#include "intervals.h"
#include "character.h"
#include "buffer.h"
@@ -80,11 +84,13 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "composite.h"
#include "dispextern.h"
#include "regex.h"
+#include "sheap.h"
#include "syntax.h"
#include "sysselect.h"
#include "systime.h"
#include "puresize.h"
+#include "getpagesize.h"
#include "gnutls.h"
#if (defined PROFILING \
@@ -106,10 +112,6 @@ extern void moncontrol (int mode);
#include <sys/resource.h>
#endif
-#ifdef HAVE_PERSONALITY_LINUX32
-#include <sys/personality.h>
-#endif
-
static const char emacs_version[] = PACKAGE_VERSION;
static const char emacs_copyright[] = COPYRIGHT;
static const char emacs_bugreport[] = PACKAGE_BUGREPORT;
@@ -128,14 +130,15 @@ Lisp_Object Vlibrary_cache;
bool initialized;
/* Set to true if this instance of Emacs might dump. */
+#ifndef DOUG_LEA_MALLOC
+static
+#endif
bool might_dump;
#ifdef DARWIN_OS
extern void unexec_init_emacs_zone (void);
#endif
-extern void malloc_enable_thread (void);
-
/* If true, Emacs should not attempt to use a window-specific code,
but instead should use the virtual terminal under which it was started. */
bool inhibit_window_system;
@@ -180,6 +183,9 @@ bool noninteractive;
/* True means remove site-lisp directories from load-path. */
bool no_site_lisp;
+/* True means put details like time stamps into builds. */
+bool build_details;
+
/* Name for the server started by the daemon.*/
static char *daemon_name;
@@ -221,6 +227,7 @@ Initialization options:\n\
--display, -d DISPLAY use X server DISPLAY\n\
",
"\
+--no-build-details do not add build details such as time stamps\n\
--no-desktop do not load a saved desktop\n\
--no-init-file, -q load neither ~/.emacs nor default.el\n\
--no-loadup, -nl do not load loadup.el into bare Emacs\n\
@@ -353,17 +360,20 @@ terminate_due_to_signal (int sig, int backtrace_limit)
{
signal (sig, SIG_DFL);
- /* If fatal error occurs in code below, avoid infinite recursion. */
- if (! fatal_error_in_progress)
+ if (attempt_orderly_shutdown_on_fatal_signal)
{
- fatal_error_in_progress = 1;
+ /* If fatal error occurs in code below, avoid infinite recursion. */
+ if (! fatal_error_in_progress)
+ {
+ fatal_error_in_progress = 1;
- totally_unblock_input ();
- if (sig == SIGTERM || sig == SIGHUP || sig == SIGINT)
- Fkill_emacs (make_number (sig));
+ totally_unblock_input ();
+ if (sig == SIGTERM || sig == SIGHUP || sig == SIGINT)
+ Fkill_emacs (make_number (sig));
- shut_down_emacs (sig, Qnil);
- emacs_backtrace (backtrace_limit);
+ shut_down_emacs (sig, Qnil);
+ emacs_backtrace (backtrace_limit);
+ }
}
/* Signal the same code; this time it will really be fatal.
@@ -658,10 +668,7 @@ main (int argc, char **argv)
bool do_initial_setlocale;
bool dumping;
int skip_args = 0;
-#ifdef HAVE_SETRLIMIT
- struct rlimit rlim;
-#endif
- bool no_loadup = 0;
+ bool no_loadup = false;
char *junk = 0;
char *dname_arg = 0;
#ifdef DAEMON_MUST_EXEC
@@ -674,25 +681,29 @@ main (int argc, char **argv)
stack_base = &dummy;
-#if defined HAVE_PERSONALITY_LINUX32 && defined __PPC64__
- /* This code partly duplicates the HAVE_PERSONALITY_LINUX32 code
- below. This duplication is planned to be fixed in a later
- Emacs release. */
-# define ADD_NO_RANDOMIZE 0x0040000
- int pers = personality (0xffffffff);
- if (! (pers & ADD_NO_RANDOMIZE)
- && 0 <= personality (pers | ADD_NO_RANDOMIZE))
+ dumping = !initialized && (strcmp (argv[argc - 1], "dump") == 0
+ || strcmp (argv[argc - 1], "bootstrap") == 0);
+
+ /* True if address randomization interferes with memory allocation. */
+# ifdef __PPC64__
+ bool disable_aslr = true;
+# else
+ bool disable_aslr = dumping;
+# endif
+
+ if (disable_aslr && disable_address_randomization ())
{
+ /* Set this so the personality will be reverted before execs
+ after this one. */
+ xputenv ("EMACS_HEAP_EXEC=true");
+
/* Address randomization was enabled, but is now disabled.
Re-execute Emacs to get a clean slate. */
execvp (argv[0], argv);
- /* If the exec fails, warn the user and then try without a
- clean slate. */
+ /* If the exec fails, warn and then try anyway. */
perror (argv[0]);
}
-# undef ADD_NO_RANDOMIZE
-#endif
#ifndef CANNOT_DUMP
might_dump = !initialized;
@@ -733,6 +744,7 @@ main (int argc, char **argv)
unexec_init_emacs_zone ();
#endif
+ init_standard_fds ();
atexit (close_output_streams);
#ifdef HAVE_MODULES
@@ -792,7 +804,7 @@ main (int argc, char **argv)
filename_from_ansi (ch_to_dir, newdir);
ch_to_dir = newdir;
#endif
- original_pwd = get_current_dir_name ();
+ original_pwd = emacs_get_current_dir_name ();
if (chdir (ch_to_dir) != 0)
{
fprintf (stderr, "%s: Can't chdir to %s: %s\n",
@@ -801,28 +813,6 @@ main (int argc, char **argv)
}
}
- dumping = !initialized && (strcmp (argv[argc - 1], "dump") == 0
- || strcmp (argv[argc - 1], "bootstrap") == 0);
-
-#if defined HAVE_PERSONALITY_LINUX32 && !defined __PPC64__
- if (dumping && ! getenv ("EMACS_HEAP_EXEC"))
- {
- /* Set this so we only do this once. */
- xputenv ("EMACS_HEAP_EXEC=true");
-
- /* A flag to turn off address randomization which is introduced
- in linux kernel shipped with fedora core 4 */
-#define ADD_NO_RANDOMIZE 0x0040000
- personality (PER_LINUX32 | ADD_NO_RANDOMIZE);
-#undef ADD_NO_RANDOMIZE
-
- execvp (argv[0], argv);
-
- /* If the exec fails, try to dump anyway. */
- emacs_perror (argv[0]);
- }
-#endif
-
#if defined (HAVE_SETRLIMIT) && defined (RLIMIT_STACK) && !defined (CYGWIN)
/* Extend the stack space available. Don't do that if dumping,
since some systems (e.g. DJGPP) might define a smaller stack
@@ -830,38 +820,54 @@ main (int argc, char **argv)
is built with an 8MB stack. Moreover, the setrlimit call can
cause problems on Cygwin
(https://www.cygwin.com/ml/cygwin/2015-07/msg00096.html). */
- if (1
-#ifndef CANNOT_DUMP
- && (!noninteractive || initialized)
-#endif
- && !getrlimit (RLIMIT_STACK, &rlim))
+ struct rlimit rlim;
+ if (getrlimit (RLIMIT_STACK, &rlim) == 0
+ && 0 <= rlim.rlim_cur && rlim.rlim_cur <= LONG_MAX)
{
- long newlim;
- /* Approximate the amount regex.c needs per unit of re_max_failures. */
+ long lim = rlim.rlim_cur;
+
+ /* Approximate the amount regex.c needs per unit of
+ re_max_failures, then add 33% to cover the size of the
+ smaller stacks that regex.c successively allocates and
+ discards on its way to the maximum. */
int ratio = 20 * sizeof (char *);
- /* Then add 33% to cover the size of the smaller stacks that regex.c
- successively allocates and discards, on its way to the maximum. */
ratio += ratio / 3;
- /* Add in some extra to cover
- what we're likely to use for other reasons. */
- newlim = re_max_failures * ratio + 200000;
-#ifdef __NetBSD__
- /* NetBSD (at least NetBSD 1.2G and former) has a bug in its
- stack allocation routine for new process that the allocation
- fails if stack limit is not on page boundary. So, round up the
- new limit to page boundary. */
- newlim = (newlim + getpagesize () - 1) / getpagesize () * getpagesize ();
-#endif
- if (newlim > rlim.rlim_max)
+
+ /* Extra space to cover what we're likely to use for other reasons. */
+ int extra = 200000;
+
+ bool try_to_grow_stack = true;
+#ifndef CANNOT_DUMP
+ try_to_grow_stack = !noninteractive || initialized;
+#endif
+
+ if (try_to_grow_stack)
{
- newlim = rlim.rlim_max;
- /* Don't let regex.c overflow the stack we have. */
- re_max_failures = (newlim - 200000) / ratio;
+ long newlim = re_max_failures * ratio + extra;
+
+ /* Round the new limit to a page boundary; this is needed
+ for Darwin kernel 15.4.0 (see Bug#23622) and perhaps
+ other systems. Do not shrink the stack and do not exceed
+ rlim_max. Don't worry about exact values of
+ RLIM_INFINITY etc. since in practice when they are
+ nonnegative they are so large that the code does the
+ right thing anyway. */
+ long pagesize = getpagesize ();
+ newlim += pagesize - 1;
+ if (0 <= rlim.rlim_max && rlim.rlim_max < newlim)
+ newlim = rlim.rlim_max;
+ newlim -= newlim % pagesize;
+
+ if (pagesize <= newlim - lim)
+ {
+ rlim.rlim_cur = newlim;
+ if (setrlimit (RLIMIT_STACK, &rlim) == 0)
+ lim = newlim;
+ }
}
- if (rlim.rlim_cur < newlim)
- rlim.rlim_cur = newlim;
- setrlimit (RLIMIT_STACK, &rlim);
+ /* Don't let regex.c overflow the stack. */
+ re_max_failures = lim < extra ? 0 : min (lim - extra, SIZE_MAX) / ratio;
}
#endif /* HAVE_SETRLIMIT and RLIMIT_STACK and not CYGWIN */
@@ -911,24 +917,25 @@ main (int argc, char **argv)
char *term;
if (argmatch (argv, argc, "-t", "--terminal", 4, &term, &skip_args))
{
- int result;
- emacs_close (0);
- emacs_close (1);
- result = emacs_open (term, O_RDWR, 0);
- if (result < 0 || fcntl (0, F_DUPFD_CLOEXEC, 1) < 0)
+ emacs_close (STDIN_FILENO);
+ emacs_close (STDOUT_FILENO);
+ int result = emacs_open (term, O_RDWR, 0);
+ if (result != STDIN_FILENO
+ || (fcntl (STDIN_FILENO, F_DUPFD_CLOEXEC, STDOUT_FILENO)
+ != STDOUT_FILENO))
{
char *errstring = strerror (errno);
fprintf (stderr, "%s: %s: %s\n", argv[0], term, errstring);
- exit (1);
+ exit (EXIT_FAILURE);
}
- if (! isatty (0))
+ if (! isatty (STDIN_FILENO))
{
fprintf (stderr, "%s: %s: not a tty\n", argv[0], term);
- exit (1);
+ exit (EXIT_FAILURE);
}
fprintf (stderr, "Using %s\n", term);
#ifdef HAVE_WINDOW_SYSTEM
- inhibit_window_system = 1; /* -t => -nw */
+ inhibit_window_system = true; /* -t => -nw */
#endif
}
else
@@ -976,6 +983,9 @@ main (int argc, char **argv)
w32_daemon_event = NULL;
#endif
+
+ int sockfd = -1;
+
if (argmatch (argv, argc, "-daemon", "--daemon", 5, NULL, &skip_args)
|| argmatch (argv, argc, "-daemon", "--daemon", 5, &dname_arg, &skip_args))
{
@@ -1009,6 +1019,21 @@ main (int argc, char **argv)
exit (1);
}
+#ifdef HAVE_LIBSYSTEMD
+ /* Read the number of sockets passed through by systemd. */
+ int systemd_socket = sd_listen_fds (1);
+
+ if (systemd_socket > 1)
+ fprintf (stderr,
+ ("\n"
+ "Warning: systemd passed more than one socket to Emacs.\n"
+ "Try 'Accept=false' in the Emacs socket unit file.\n"));
+ else if (systemd_socket == 1
+ && (0 < sd_is_socket (SD_LISTEN_FDS_START,
+ AF_UNSPEC, SOCK_STREAM, 1)))
+ sockfd = SD_LISTEN_FDS_START;
+#endif /* HAVE_LIBSYSTEMD */
+
#ifndef DAEMON_MUST_EXEC
#ifdef USE_GTK
fprintf (stderr, "\nWarning: due to a long standing Gtk+ bug\nhttp://bugzilla.gnome.org/show_bug.cgi?id=85715\n\
@@ -1205,6 +1230,9 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
no_site_lisp
= argmatch (argv, argc, "-nsl", "--no-site-lisp", 11, NULL, &skip_args);
+ build_details = ! argmatch (argv, argc, "-no-build-details",
+ "--no-build-details", 7, NULL, &skip_args);
+
#ifdef HAVE_NS
ns_pool = ns_alloc_autorelease_pool ();
#ifdef NS_IMPL_GNUSTEP
@@ -1218,7 +1246,7 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
/* Started from GUI? */
/* FIXME: Do the right thing if getenv returns NULL, or if
chdir fails. */
- if (! inhibit_window_system && ! isatty (0) && ! ch_to_dir)
+ if (! inhibit_window_system && ! isatty (STDIN_FILENO) && ! ch_to_dir)
chdir (getenv ("HOME"));
if (skip_args < argc)
{
@@ -1321,16 +1349,6 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
globals_of_gfilenotify ();
#endif
-#ifdef WINDOWSNT
- globals_of_w32 ();
-#ifdef HAVE_W32NOTIFY
- globals_of_w32notify ();
-#endif
- /* Initialize environment from registry settings. */
- init_environment (argv);
- init_ntproc (dumping); /* must precede init_editfns. */
-#endif
-
#ifdef HAVE_NS
/* Initialize the locale from user defaults. */
ns_init_locale ();
@@ -1347,6 +1365,20 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
if (! dumping)
set_initial_environment ();
+#ifdef WINDOWSNT
+ globals_of_w32 ();
+#ifdef HAVE_W32NOTIFY
+ globals_of_w32notify ();
+#endif
+ /* Initialize environment from registry settings. Make sure to do
+ this only after calling set_initial_environment so that
+ Vinitial_environment and Vprocess_environment will contain only
+ variables from the parent process without modifications from
+ Emacs. */
+ init_environment (argv);
+ init_ntproc (dumping); /* must precede init_editfns. */
+#endif
+
/* AIX crashes are reported in system versions 3.2.3 and 3.2.4
if this is not done. Do it after set_global_environment so that we
don't pollute Vglobal_environment. */
@@ -1562,7 +1594,7 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
/* This can create a thread that may call getenv, so it must follow
all calls to putenv and setenv. Also, this sets up
add_keyboard_wait_descriptor, which init_display uses. */
- init_process_emacs ();
+ init_process_emacs (sockfd);
init_keyboard (); /* This too must precede init_sys_modes. */
if (!noninteractive)
@@ -1654,6 +1686,7 @@ static const struct standard_args standard_args[] =
{ "-help", "--help", 90, 0 },
{ "-nl", "--no-loadup", 70, 0 },
{ "-nsl", "--no-site-lisp", 65, 0 },
+ { "-no-build-details", "--no-build-details", 63, 0 },
/* -d must come last before the options handled in startup.el. */
{ "-d", "--display", 60, 1 },
{ "-display", 0, 60, 1 },
@@ -2096,6 +2129,17 @@ You must run Emacs in batch mode in order to dump it. */)
tem = Vpurify_flag;
Vpurify_flag = Qnil;
+#ifdef HYBRID_MALLOC
+ {
+ static char const fmt[] = "%d of %d static heap bytes used";
+ char buf[sizeof fmt + 2 * (INT_STRLEN_BOUND (int) - 2)];
+ int max_usage = max_bss_sbrk_ptr - bss_sbrk_buffer;
+ sprintf (buf, fmt, max_usage, STATIC_HEAP_SIZE);
+ /* Don't log messages, because at this point buffers cannot be created. */
+ message1_nolog (buf);
+ }
+#endif
+
fflush (stdout);
/* Tell malloc where start of impure now is. */
/* Also arrange for warnings when nearly out of space. */
@@ -2183,6 +2227,15 @@ synchronize_system_messages_locale (void)
#endif
}
#endif /* HAVE_SETLOCALE */
+
+/* Return a diagnostic string for ERROR_NUMBER, in the wording
+ and encoding appropriate for the current locale. */
+char *
+emacs_strerror (int error_number)
+{
+ synchronize_system_messages_locale ();
+ return strerror (error_number);
+}
Lisp_Object
@@ -2354,9 +2407,9 @@ from the parent process and its tty file descriptors. */)
/* Get rid of stdin, stdout and stderr. */
nfd = emacs_open ("/dev/null", O_RDWR, 0);
err |= nfd < 0;
- err |= dup2 (nfd, 0) < 0;
- err |= dup2 (nfd, 1) < 0;
- err |= dup2 (nfd, 2) < 0;
+ err |= dup2 (nfd, STDIN_FILENO) < 0;
+ err |= dup2 (nfd, STDOUT_FILENO) < 0;
+ err |= dup2 (nfd, STDERR_FILENO) < 0;
err |= emacs_close (nfd) != 0;
/* Closing the pipe will notify the parent that it can exit.
@@ -2416,8 +2469,8 @@ Special values:
`ms-dos' compiled as an MS-DOS application.
`windows-nt' compiled as a native W32 application.
`cygwin' compiled using the Cygwin library.
-Anything else (in Emacs 24.1, the possibilities are: aix, berkeley-unix,
-hpux, irix, usg-unix-v) indicates some sort of Unix system. */);
+Anything else (in Emacs 26, the possibilities are: aix, berkeley-unix,
+hpux, usg-unix-v) indicates some sort of Unix system. */);
Vsystem_type = intern_c_string (SYSTEM_TYPE);
/* See configure.ac for the possible SYSTEM_TYPEs. */
diff --git a/src/emacsgtkfixed.c b/src/emacsgtkfixed.c
index ca0bbfbb86..c04adf28b3 100644
--- a/src/emacsgtkfixed.c
+++ b/src/emacsgtkfixed.c
@@ -27,7 +27,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "emacsgtkfixed.h"
/* Silence a bogus diagnostic; see GNOME bug 683906. */
-#if 4 < __GNUC__ + (7 <= __GNUC_MINOR__) && ! GLIB_CHECK_VERSION (2, 35, 7)
+#if GNUC_PREREQ (4, 7, 0) && ! GLIB_CHECK_VERSION (2, 35, 7)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#endif
diff --git a/src/eval.c b/src/eval.c
index fe6460d53b..f681ef7c27 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -90,6 +90,7 @@ union specbinding *backtrace_top (void) EXTERNALLY_VISIBLE;
static Lisp_Object funcall_lambda (Lisp_Object, ptrdiff_t, Lisp_Object *);
static Lisp_Object apply_lambda (Lisp_Object, Lisp_Object, ptrdiff_t);
+static Lisp_Object lambda_arity (Lisp_Object);
static Lisp_Object
specpdl_symbol (union specbinding *pdl)
@@ -221,7 +222,6 @@ static struct handler handlerlist_sentinel;
void
init_eval (void)
{
- byte_stack_list = 0;
specpdl_ptr = specpdl;
{ /* Put a dummy catcher at top-level so that handlerlist is never NULL.
This is important since handlerlist->nextfree holds the freelist
@@ -299,6 +299,11 @@ call_debugger (Lisp_Object arg)
specbind (Qinhibit_redisplay, Qnil);
specbind (Qinhibit_debugger, Qt);
+ /* If we are debugging an error while `inhibit-changing-match-data'
+ is bound to non-nil (e.g., within a call to `string-match-p'),
+ then make sure debugger code can still use match data. */
+ specbind (Qinhibit_changing_match_data, Qnil);
+
#if 0 /* Binding this prevents execution of Lisp code during
redisplay, which necessarily leads to display problems. */
specbind (Qinhibit_eval_during_redisplay, Qt);
@@ -1129,7 +1134,6 @@ unwind_to_catch (struct handler *catch, Lisp_Object value)
eassert (handlerlist == catch);
- byte_stack_list = catch->byte_stack;
lisp_eval_depth = catch->lisp_eval_depth;
sys_longjmp (catch->jmp, 1);
@@ -1424,12 +1428,12 @@ push_handler_nosignal (Lisp_Object tag_ch_val, enum handlertype handlertype)
c->pdlcount = SPECPDL_INDEX ();
c->poll_suppress_count = poll_suppress_count;
c->interrupt_input_blocked = interrupt_input_blocked;
- c->byte_stack = byte_stack_list;
handlerlist = c;
return c;
}
+static Lisp_Object signal_or_quit (Lisp_Object, Lisp_Object, bool);
static Lisp_Object find_handler_clause (Lisp_Object, Lisp_Object);
static bool maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig,
Lisp_Object data);
@@ -1443,7 +1447,7 @@ process_quit_flag (void)
Fkill_emacs (Qnil);
if (EQ (Vthrow_on_input, flag))
Fthrow (Vthrow_on_input, Qt);
- Fsignal (Qquit, Qnil);
+ quit ();
}
DEFUN ("signal", Fsignal, Ssignal, 2, 2, 0,
@@ -1459,9 +1463,29 @@ DATA should be a list. Its elements are printed as part of the error message.
See Info anchor `(elisp)Definition of signal' for some details on how this
error message is constructed.
If the signal is handled, DATA is made available to the handler.
-See also the function `condition-case'. */)
+See also the function `condition-case'. */
+ attributes: noreturn)
(Lisp_Object error_symbol, Lisp_Object data)
{
+ signal_or_quit (error_symbol, data, false);
+ eassume (false);
+}
+
+/* Quit, in response to a keyboard quit request. */
+Lisp_Object
+quit (void)
+{
+ return signal_or_quit (Qquit, Qnil, true);
+}
+
+/* Signal an error, or quit. ERROR_SYMBOL and DATA are as with Fsignal.
+ If KEYBOARD_QUIT, this is a quit; ERROR_SYMBOL should be
+ Qquit and DATA should be Qnil, and this function may return.
+ Otherwise this function is like Fsignal and does not return. */
+
+static Lisp_Object
+signal_or_quit (Lisp_Object error_symbol, Lisp_Object data, bool keyboard_quit)
+{
/* When memory is full, ERROR-SYMBOL is nil,
and DATA is (REAL-ERROR-SYMBOL . REAL-DATA).
That is a special case--don't do this in other situations. */
@@ -1541,7 +1565,7 @@ See also the function `condition-case'. */)
= maybe_call_debugger (conditions, error_symbol, data);
/* We can't return values to code which signaled an error, but we
can continue code which has signaled a quit. */
- if (debugger_called && EQ (real_error_symbol, Qquit))
+ if (keyboard_quit && debugger_called && EQ (real_error_symbol, Qquit))
return Qnil;
}
@@ -1568,16 +1592,6 @@ See also the function `condition-case'. */)
fatal ("%s", SDATA (string));
}
-/* Internal version of Fsignal that never returns.
- Used for anything but Qquit (which can return from Fsignal). */
-
-void
-xsignal (Lisp_Object error_symbol, Lisp_Object data)
-{
- Fsignal (error_symbol, data);
- emacs_abort ();
-}
-
/* Like xsignal, but takes 0, 1, 2, or 3 args instead of a list. */
void
@@ -1751,9 +1765,9 @@ find_handler_clause (Lisp_Object handlers, Lisp_Object conditions)
}
-/* Dump an error message; called like vprintf. */
-void
-verror (const char *m, va_list ap)
+/* Format and return a string; called like vprintf. */
+Lisp_Object
+vformat_string (const char *m, va_list ap)
{
char buf[4000];
ptrdiff_t size = sizeof buf;
@@ -1767,7 +1781,14 @@ verror (const char *m, va_list ap)
if (buffer != buf)
xfree (buffer);
- xsignal1 (Qerror, string);
+ return string;
+}
+
+/* Dump an error message; called like vprintf. */
+void
+verror (const char *m, va_list ap)
+{
+ xsignal1 (Qerror, vformat_string (m, ap));
}
@@ -2839,14 +2860,14 @@ funcall_lambda (Lisp_Object fun, ptrdiff_t nargs,
xsignal1 (Qinvalid_function, fun);
syms_left = AREF (fun, COMPILED_ARGLIST);
if (INTEGERP (syms_left))
- /* A byte-code object with a non-nil `push args' slot means we
+ /* A byte-code object with an integer args template means we
shouldn't bind any arguments, instead just call the byte-code
interpreter directly; it will push arguments as necessary.
- Byte-code objects with either a non-existent, or a nil value for
- the `push args' slot (the default), have dynamically-bound
- arguments, and use the argument-binding code below instead (as do
- all interpreted functions, even lexically bound ones). */
+ Byte-code objects with a nil args template (the default)
+ have dynamically-bound arguments, and use the
+ argument-binding code below instead (as do all interpreted
+ functions, even lexically bound ones). */
{
/* If we have not actually read the bytecode string
and constants vector yet, fetch them from the file. */
@@ -2927,6 +2948,118 @@ funcall_lambda (Lisp_Object fun, ptrdiff_t nargs,
return unbind_to (count, val);
}
+DEFUN ("func-arity", Ffunc_arity, Sfunc_arity, 1, 1, 0,
+ doc: /* Return minimum and maximum number of args allowed for FUNCTION.
+FUNCTION must be a function of some kind.
+The returned value is a cons cell (MIN . MAX). MIN is the minimum number
+of args. MAX is the maximum number, or the symbol `many', for a
+function with `&rest' args, or `unevalled' for a special form. */)
+ (Lisp_Object function)
+{
+ Lisp_Object original;
+ Lisp_Object funcar;
+ Lisp_Object result;
+
+ original = function;
+
+ retry:
+
+ /* Optimize for no indirection. */
+ function = original;
+ if (SYMBOLP (function) && !NILP (function))
+ {
+ function = XSYMBOL (function)->function;
+ if (SYMBOLP (function))
+ function = indirect_function (function);
+ }
+
+ if (CONSP (function) && EQ (XCAR (function), Qmacro))
+ function = XCDR (function);
+
+ if (SUBRP (function))
+ result = Fsubr_arity (function);
+ else if (COMPILEDP (function))
+ result = lambda_arity (function);
+ else
+ {
+ if (NILP (function))
+ xsignal1 (Qvoid_function, original);
+ if (!CONSP (function))
+ xsignal1 (Qinvalid_function, original);
+ funcar = XCAR (function);
+ if (!SYMBOLP (funcar))
+ xsignal1 (Qinvalid_function, original);
+ if (EQ (funcar, Qlambda)
+ || EQ (funcar, Qclosure))
+ result = lambda_arity (function);
+ else if (EQ (funcar, Qautoload))
+ {
+ Fautoload_do_load (function, original, Qnil);
+ goto retry;
+ }
+ else
+ xsignal1 (Qinvalid_function, original);
+ }
+ return result;
+}
+
+/* FUN must be either a lambda-expression or a compiled-code object. */
+static Lisp_Object
+lambda_arity (Lisp_Object fun)
+{
+ Lisp_Object syms_left;
+
+ if (CONSP (fun))
+ {
+ if (EQ (XCAR (fun), Qclosure))
+ {
+ fun = XCDR (fun); /* Drop `closure'. */
+ CHECK_LIST_CONS (fun, fun);
+ }
+ syms_left = XCDR (fun);
+ if (CONSP (syms_left))
+ syms_left = XCAR (syms_left);
+ else
+ xsignal1 (Qinvalid_function, fun);
+ }
+ else if (COMPILEDP (fun))
+ {
+ ptrdiff_t size = ASIZE (fun) & PSEUDOVECTOR_SIZE_MASK;
+ if (size <= COMPILED_STACK_DEPTH)
+ xsignal1 (Qinvalid_function, fun);
+ syms_left = AREF (fun, COMPILED_ARGLIST);
+ if (INTEGERP (syms_left))
+ return get_byte_code_arity (syms_left);
+ }
+ else
+ emacs_abort ();
+
+ EMACS_INT minargs = 0, maxargs = 0;
+ bool optional = false;
+ for (; CONSP (syms_left); syms_left = XCDR (syms_left))
+ {
+ Lisp_Object next = XCAR (syms_left);
+ if (!SYMBOLP (next))
+ xsignal1 (Qinvalid_function, fun);
+
+ if (EQ (next, Qand_rest))
+ return Fcons (make_number (minargs), Qmany);
+ else if (EQ (next, Qand_optional))
+ optional = true;
+ else
+ {
+ if (!optional)
+ minargs++;
+ maxargs++;
+ }
+ }
+
+ if (!NILP (syms_left))
+ xsignal1 (Qinvalid_function, fun);
+
+ return Fcons (make_number (minargs), make_number (maxargs));
+}
+
DEFUN ("fetch-bytecode", Ffetch_bytecode, Sfetch_bytecode,
1, 1, 0,
doc: /* If byte-compiled OBJECT is lazy-loaded, fetch it now. */)
@@ -3801,6 +3934,7 @@ alist of active lexical bindings. */);
defsubr (&Seval);
defsubr (&Sapply);
defsubr (&Sfuncall);
+ defsubr (&Sfunc_arity);
defsubr (&Srun_hooks);
defsubr (&Srun_hook_with_args);
defsubr (&Srun_hook_with_args_until_success);
diff --git a/src/fileio.c b/src/fileio.c
index 3005ca320e..37948bc0ee 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -185,11 +185,10 @@ void
report_file_errno (char const *string, Lisp_Object name, int errorno)
{
Lisp_Object data = CONSP (name) || NILP (name) ? name : list1 (name);
- synchronize_system_messages_locale ();
- char *str = strerror (errorno);
+ char *str = emacs_strerror (errorno);
+ AUTO_STRING (unibyte_str, str);
Lisp_Object errstring
- = code_convert_string_norecord (build_unibyte_string (str),
- Vlocale_coding_system, 0);
+ = code_convert_string_norecord (unibyte_str, Vlocale_coding_system, 0);
Lisp_Object errdata = Fcons (errstring, data);
if (errorno == EEXIST)
@@ -214,12 +213,11 @@ report_file_error (char const *string, Lisp_Object name)
void
report_file_notify_error (const char *string, Lisp_Object name)
{
- Lisp_Object data = CONSP (name) || NILP (name) ? name : list1 (name);
- synchronize_system_messages_locale ();
- char *str = strerror (errno);
+ char *str = emacs_strerror (errno);
+ AUTO_STRING (unibyte_str, str);
Lisp_Object errstring
- = code_convert_string_norecord (build_unibyte_string (str),
- Vlocale_coding_system, 0);
+ = code_convert_string_norecord (unibyte_str, Vlocale_coding_system, 0);
+ Lisp_Object data = CONSP (name) || NILP (name) ? name : list1 (name);
Lisp_Object errdata = Fcons (errstring, data);
xsignal (Qfile_notify_error, Fcons (build_string (string), errdata));
@@ -510,7 +508,8 @@ This operation exists because a directory is also a file, but its name as
a directory is different from its name as a file.
The result can be used as the value of `default-directory'
or passed as second argument to `expand-file-name'.
-For a Unix-syntax file name, just appends a slash. */)
+For a Unix-syntax file name, just appends a slash unless a trailing slash
+is already present. */)
(Lisp_Object file)
{
char *buf;
@@ -1015,11 +1014,9 @@ filesystem tree, not (expand-file-name ".." dirname). */)
/* Drive must be set, so this is okay. */
if (strcmp (nm - 2, SSDATA (name)) != 0)
{
- char temp[] = " :";
-
name = make_specified_string (nm, -1, p - nm, multibyte);
- temp[0] = DRIVE_LETTER (drive);
- AUTO_STRING (drive_prefix, temp);
+ char temp[] = { DRIVE_LETTER (drive), ':', 0 };
+ AUTO_STRING_WITH_LEN (drive_prefix, temp, 2);
name = concat2 (drive_prefix, name);
}
#ifdef WINDOWSNT
@@ -2544,7 +2541,7 @@ DEFUN ("file-writable-p", Ffile_writable_p, Sfile_writable_p, 1, 1, 0,
/* The read-only attribute of the parent directory doesn't affect
whether a file or directory can be created within it. Some day we
should check ACLs though, which do affect this. */
- return file_directory_p (SDATA (dir)) ? Qt : Qnil;
+ return file_directory_p (SSDATA (dir)) ? Qt : Qnil;
#else
return check_writable (SSDATA (dir), W_OK | X_OK) ? Qt : Qnil;
#endif
@@ -2775,7 +2772,7 @@ See `file-symlink-p' to distinguish symlinks. */)
/* Tell stat to use expensive method to get accurate info. */
Vw32_get_true_file_attributes = Qt;
- result = stat (SDATA (absname), &st);
+ result = stat (SSDATA (absname), &st);
Vw32_get_true_file_attributes = tem;
if (result < 0)
@@ -3363,6 +3360,21 @@ restore_window_points (Lisp_Object window_markers, ptrdiff_t inserted,
}
}
+/* Make sure the gap is at Z_BYTE. This is required to treat buffer
+ text as a linear C char array. */
+static void
+maybe_move_gap (struct buffer *b)
+{
+ if (BUF_GPT_BYTE (b) != BUF_Z_BYTE (b))
+ {
+ struct buffer *cb = current_buffer;
+
+ set_buffer_internal (b);
+ move_gap_both (Z, Z_BYTE);
+ set_buffer_internal (cb);
+ }
+}
+
/* FIXME: insert-file-contents should be split with the top-level moved to
Elisp and only the core kept in C. */
@@ -3436,9 +3448,6 @@ by calling `format-decode', which see. */)
if (!NILP (BVAR (current_buffer, read_only)))
Fbarf_if_buffer_read_only (Qnil);
- if (!NILP (Ffboundp (Qundo_auto__undoable_change_no_timer)))
- call0 (Qundo_auto__undoable_change_no_timer);
-
val = Qnil;
p = Qnil;
orig_filename = Qnil;
@@ -3949,6 +3958,7 @@ by calling `format-decode', which see. */)
coding_system = CODING_ID_NAME (coding.id);
set_coding_system = true;
+ maybe_move_gap (XBUFFER (conversion_buffer));
decoded = BUF_BEG_ADDR (XBUFFER (conversion_buffer));
inserted = (BUF_Z_BYTE (XBUFFER (conversion_buffer))
- BUF_BEG_BYTE (XBUFFER (conversion_buffer)));
@@ -4504,7 +4514,7 @@ by calling `format-decode', which see. */)
PT - BEG, Z - PT - inserted);
if (read_quit)
- Fsignal (Qquit, Qnil);
+ quit ();
/* Retval needs to be dealt with in all cases consistently. */
if (NILP (val))
@@ -4692,7 +4702,7 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
{
int open_flags;
int mode;
- off_t offset IF_LINT (= 0);
+ off_t offset UNINIT;
bool open_and_close_file = desc < 0;
bool ok;
int save_errno = 0;
@@ -4700,7 +4710,7 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
struct stat st;
struct timespec modtime;
ptrdiff_t count = SPECPDL_INDEX ();
- ptrdiff_t count1 IF_LINT (= 0);
+ ptrdiff_t count1 UNINIT;
Lisp_Object handler;
Lisp_Object visit_file;
Lisp_Object annotations;
@@ -4809,7 +4819,7 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
encoded_filename = ENCODE_FILE (filename);
fn = SSDATA (encoded_filename);
- open_flags = O_WRONLY | O_BINARY | O_CREAT;
+ open_flags = O_WRONLY | O_CREAT;
open_flags |= EQ (mustbenew, Qexcl) ? O_EXCL : !NILP (append) ? 0 : O_TRUNC;
if (NUMBERP (append))
offset = file_offset (append);
@@ -4928,7 +4938,7 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
if (timespec_valid_p (modtime)
&& ! (valid_timestamp_file_system && st.st_dev == timestamp_file_system))
{
- int desc1 = emacs_open (fn, O_WRONLY | O_BINARY, 0);
+ int desc1 = emacs_open (fn, O_WRONLY, 0);
if (desc1 >= 0)
{
struct stat st1;
@@ -5381,25 +5391,15 @@ An argument specifies the modification time value to use
static Lisp_Object
auto_save_error (Lisp_Object error_val)
{
- Lisp_Object msg;
- int i;
-
auto_save_error_occurred = 1;
ring_bell (XFRAME (selected_frame));
AUTO_STRING (format, "Auto-saving %s: %s");
- msg = CALLN (Fformat, format, BVAR (current_buffer, name),
- Ferror_message_string (error_val));
-
- for (i = 0; i < 3; ++i)
- {
- if (i == 0)
- message3 (msg);
- else
- message3_nolog (msg);
- Fsleep_for (make_number (1), Qnil);
- }
+ Lisp_Object msg = CALLN (Fformat, format, BVAR (current_buffer, name),
+ Ferror_message_string (error_val));
+ call3 (intern ("display-warning"),
+ intern ("auto-save"), msg, intern ("error"));
return Qnil;
}
@@ -5800,8 +5800,6 @@ syms_of_fileio (void)
which gives a list of operations it handles. */
DEFSYM (Qoperations, "operations");
- DEFSYM (Qundo_auto__undoable_change_no_timer, "undo-auto--undoable-change-no-timer");
-
DEFSYM (Qexpand_file_name, "expand-file-name");
DEFSYM (Qsubstitute_in_file_name, "substitute-in-file-name");
DEFSYM (Qdirectory_file_name, "directory-file-name");
diff --git a/src/filelock.c b/src/filelock.c
index 8aaa656438..2f92e0fdc8 100644
--- a/src/filelock.c
+++ b/src/filelock.c
@@ -65,7 +65,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define BOOT_TIME_FILE "/var/run/random-seed"
#endif
-#ifndef WTMP_FILE
+#if !defined WTMP_FILE && !defined WINDOWSNT
#define WTMP_FILE "/var/log/wtmp"
#endif
@@ -193,14 +193,11 @@ get_boot_time (void)
/* If we did not find a boot time in wtmp, look at wtmp, and so on. */
for (counter = 0; counter < 20 && ! boot_time; counter++)
{
+ Lisp_Object filename = Qnil;
+ bool delete_flag = false;
char cmd_string[sizeof WTMP_FILE ".19.gz"];
- Lisp_Object tempname, filename;
- bool delete_flag = 0;
-
- filename = Qnil;
-
- tempname = make_formatted_string
- (cmd_string, "%s.%d", WTMP_FILE, counter);
+ AUTO_STRING_WITH_LEN (tempname, cmd_string,
+ sprintf (cmd_string, "%s.%d", WTMP_FILE, counter));
if (! NILP (Ffile_exists_p (tempname)))
filename = tempname;
else
@@ -220,7 +217,7 @@ get_boot_time (void)
CALLN (Fcall_process, build_string ("gzip"), Qnil,
list2 (QCfile, filename), Qnil,
build_string ("-cd"), tempname);
- delete_flag = 1;
+ delete_flag = true;
}
}
@@ -255,14 +252,7 @@ get_boot_time_1 (const char *filename, bool newest)
struct utmp ut, *utp;
if (filename)
- {
- /* On some versions of IRIX, opening a nonexistent file name
- is likely to crash in the utmp routines. */
- if (faccessat (AT_FDCWD, filename, R_OK, AT_EACCESS) != 0)
- return;
-
- utmpname (filename);
- }
+ utmpname (filename);
setutent ();
@@ -497,7 +487,7 @@ read_lock_data (char *lfname, char lfinfo[MAX_LFINFO + 1])
while ((nbytes = readlinkat (AT_FDCWD, lfname, lfinfo, MAX_LFINFO + 1)) < 0
&& errno == EINVAL)
{
- int fd = emacs_open (lfname, O_RDONLY | O_BINARY | O_NOFOLLOW, 0);
+ int fd = emacs_open (lfname, O_RDONLY | O_NOFOLLOW, 0);
if (0 <= fd)
{
/* Use read, not emacs_read, since FD isn't unwind-protected. */
diff --git a/src/fns.c b/src/fns.c
index d5a1f74d0d..31f0fd2741 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -21,8 +21,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <unistd.h>
+#include <filevercmp.h>
#include <intprops.h>
#include <vla.h>
+#include <errno.h>
#include "lisp.h"
#include "character.h"
@@ -331,6 +333,50 @@ Symbols are also allowed; their print names are used instead. */)
return i1 < SCHARS (string2) ? Qt : Qnil;
}
+DEFUN ("string-version-lessp", Fstring_version_lessp,
+ Sstring_version_lessp, 2, 2, 0,
+ doc: /* Return non-nil if S1 is less than S2, as version strings.
+
+This function compares version strings S1 and S2:
+ 1) By prefix lexicographically.
+ 2) Then by version (similarly to version comparison of Debian's dpkg).
+ Leading zeros in version numbers are ignored.
+ 3) If both prefix and version are equal, compare as ordinary strings.
+
+For example, \"foo2.png\" compares less than \"foo12.png\".
+Case is significant.
+Symbols are also allowed; their print names are used instead. */)
+ (Lisp_Object string1, Lisp_Object string2)
+{
+ if (SYMBOLP (string1))
+ string1 = SYMBOL_NAME (string1);
+ if (SYMBOLP (string2))
+ string2 = SYMBOL_NAME (string2);
+ CHECK_STRING (string1);
+ CHECK_STRING (string2);
+
+ char *p1 = SSDATA (string1);
+ char *p2 = SSDATA (string2);
+ char *lim1 = p1 + SBYTES (string1);
+ char *lim2 = p2 + SBYTES (string2);
+ int cmp;
+
+ while ((cmp = filevercmp (p1, p2)) == 0)
+ {
+ /* If the strings are identical through their first null bytes,
+ skip past identical prefixes and try again. */
+ ptrdiff_t size = strlen (p1) + 1;
+ p1 += size;
+ p2 += size;
+ if (lim1 < p1)
+ return lim2 < p2 ? Qnil : Qt;
+ if (lim2 < p2)
+ return Qnil;
+ }
+
+ return cmp < 0 ? Qt : Qnil;
+}
+
DEFUN ("string-collate-lessp", Fstring_collate_lessp, Sstring_collate_lessp, 2, 4, 0,
doc: /* Return t if first arg string is less than second in collation order.
Symbols are also allowed; their print names are used instead.
@@ -1348,7 +1394,7 @@ The value is actually the tail of LIST whose car is ELT. */)
(register Lisp_Object elt, Lisp_Object list)
{
register Lisp_Object tail;
- for (tail = list; CONSP (tail); tail = XCDR (tail))
+ for (tail = list; !NILP (tail); tail = XCDR (tail))
{
register Lisp_Object tem;
CHECK_LIST_CONS (tail, list);
@@ -1396,7 +1442,7 @@ The value is actually the tail of LIST whose car is ELT. */)
if (!FLOATP (elt))
return Fmemq (elt, list);
- for (tail = list; CONSP (tail); tail = XCDR (tail))
+ for (tail = list; !NILP (tail); tail = XCDR (tail))
{
register Lisp_Object tem;
CHECK_LIST_CONS (tail, list);
@@ -1709,7 +1755,7 @@ changing the value of a sequence `foo'. */)
{
Lisp_Object tail, prev;
- for (tail = seq, prev = Qnil; CONSP (tail); tail = XCDR (tail))
+ for (tail = seq, prev = Qnil; !NILP (tail); tail = XCDR (tail))
{
CHECK_LIST_CONS (tail, seq);
@@ -2470,11 +2516,13 @@ usage: (nconc &rest LISTS) */)
}
/* This is the guts of all mapping functions.
- Apply FN to each element of SEQ, one by one,
- storing the results into elements of VALS, a C vector of Lisp_Objects.
- LENI is the length of VALS, which should also be the length of SEQ. */
+ Apply FN to each element of SEQ, one by one, storing the results
+ into elements of VALS, a C vector of Lisp_Objects. LENI is the
+ length of VALS, which should also be the length of SEQ. Return the
+ number of results; although this is normally LENI, it can be less
+ if SEQ is made shorter as a side effect of FN. */
-static void
+static EMACS_INT
mapcar1 (EMACS_INT leni, Lisp_Object *vals, Lisp_Object fn, Lisp_Object seq)
{
Lisp_Object tail, dummy;
@@ -2517,14 +2565,18 @@ mapcar1 (EMACS_INT leni, Lisp_Object *vals, Lisp_Object fn, Lisp_Object seq)
else /* Must be a list, since Flength did not get an error */
{
tail = seq;
- for (i = 0; i < leni && CONSP (tail); i++)
+ for (i = 0; i < leni; i++)
{
+ if (! CONSP (tail))
+ return i;
dummy = call1 (fn, XCAR (tail));
if (vals)
vals[i] = dummy;
tail = XCDR (tail);
}
}
+
+ return leni;
}
DEFUN ("mapconcat", Fmapconcat, Smapconcat, 3, 3, 0,
@@ -2534,34 +2586,26 @@ SEPARATOR results in spaces between the values returned by FUNCTION.
SEQUENCE may be a list, a vector, a bool-vector, or a string. */)
(Lisp_Object function, Lisp_Object sequence, Lisp_Object separator)
{
- Lisp_Object len;
- EMACS_INT leni;
- EMACS_INT nargs;
- ptrdiff_t i;
- Lisp_Object *args;
- Lisp_Object ret;
USE_SAFE_ALLOCA;
-
- len = Flength (sequence);
+ EMACS_INT leni = XFASTINT (Flength (sequence));
if (CHAR_TABLE_P (sequence))
wrong_type_argument (Qlistp, sequence);
- leni = XINT (len);
- nargs = leni + leni - 1;
- if (nargs < 0) return empty_unibyte_string;
-
- SAFE_ALLOCA_LISP (args, nargs);
-
- mapcar1 (leni, args, function, sequence);
+ EMACS_INT args_alloc = 2 * leni - 1;
+ if (args_alloc < 0)
+ return empty_unibyte_string;
+ Lisp_Object *args;
+ SAFE_ALLOCA_LISP (args, args_alloc);
+ ptrdiff_t nmapped = mapcar1 (leni, args, function, sequence);
+ ptrdiff_t nargs = 2 * nmapped - 1;
- for (i = leni - 1; i > 0; i--)
+ for (ptrdiff_t i = nmapped - 1; i > 0; i--)
args[i + i] = args[i];
- for (i = 1; i < nargs; i += 2)
+ for (ptrdiff_t i = 1; i < nargs; i += 2)
args[i] = separator;
- ret = Fconcat (nargs, args);
+ Lisp_Object ret = Fconcat (nargs, args);
SAFE_FREE ();
-
return ret;
}
@@ -2571,24 +2615,15 @@ The result is a list just as long as SEQUENCE.
SEQUENCE may be a list, a vector, a bool-vector, or a string. */)
(Lisp_Object function, Lisp_Object sequence)
{
- register Lisp_Object len;
- register EMACS_INT leni;
- register Lisp_Object *args;
- Lisp_Object ret;
USE_SAFE_ALLOCA;
-
- len = Flength (sequence);
+ EMACS_INT leni = XFASTINT (Flength (sequence));
if (CHAR_TABLE_P (sequence))
wrong_type_argument (Qlistp, sequence);
- leni = XFASTINT (len);
-
+ Lisp_Object *args;
SAFE_ALLOCA_LISP (args, leni);
-
- mapcar1 (leni, args, function, sequence);
-
- ret = Flist (leni, args);
+ ptrdiff_t nmapped = mapcar1 (leni, args, function, sequence);
+ Lisp_Object ret = Flist (nmapped, args);
SAFE_FREE ();
-
return ret;
}
@@ -2607,6 +2642,24 @@ SEQUENCE may be a list, a vector, a bool-vector, or a string. */)
return sequence;
}
+
+DEFUN ("mapcan", Fmapcan, Smapcan, 2, 2, 0,
+ doc: /* Apply FUNCTION to each element of SEQUENCE, and concatenate
+the results by altering them (using `nconc').
+SEQUENCE may be a list, a vector, a bool-vector, or a string. */)
+ (Lisp_Object function, Lisp_Object sequence)
+{
+ USE_SAFE_ALLOCA;
+ EMACS_INT leni = XFASTINT (Flength (sequence));
+ if (CHAR_TABLE_P (sequence))
+ wrong_type_argument (Qlistp, sequence);
+ Lisp_Object *args;
+ SAFE_ALLOCA_LISP (args, leni);
+ ptrdiff_t nmapped = mapcar1 (leni, args, function, sequence);
+ Lisp_Object ret = Fnconc (nmapped, args);
+ SAFE_FREE ();
+ return ret;
+}
/* This is how C code calls `yes-or-no-p' and allows the user
to redefine it. */
@@ -2959,7 +3012,6 @@ The data read from the system are decoded using `locale-coding-system'. */)
{
char *str = NULL;
#ifdef HAVE_LANGINFO_CODESET
- Lisp_Object val;
if (EQ (item, Qcodeset))
{
str = nl_langinfo (CODESET);
@@ -2975,7 +3027,7 @@ The data read from the system are decoded using `locale-coding-system'. */)
for (i = 0; i < 7; i++)
{
str = nl_langinfo (days[i]);
- val = build_unibyte_string (str);
+ AUTO_STRING (val, str);
/* Fixme: Is this coding system necessarily right, even if
it is consistent with CODESET? If not, what to do? */
ASET (v, i, code_convert_string_norecord (val, Vlocale_coding_system,
@@ -2995,7 +3047,7 @@ The data read from the system are decoded using `locale-coding-system'. */)
for (i = 0; i < 12; i++)
{
str = nl_langinfo (months[i]);
- val = build_unibyte_string (str);
+ AUTO_STRING (val, str);
ASET (v, i, code_convert_string_norecord (val, Vlocale_coding_system,
0));
}
@@ -3628,8 +3680,6 @@ larger_vector (Lisp_Object vec, ptrdiff_t incr_min, ptrdiff_t nitems_max)
Low-level Functions
***********************************************************************/
-struct hash_table_test hashtest_eq, hashtest_eql, hashtest_equal;
-
/* Compare KEY1 which has hash code HASH1 and KEY2 with hash code
HASH2 in hash table H using `eql'. Value is true if KEY1 and
KEY2 are the same. */
@@ -3670,7 +3720,6 @@ cmpfn_user_defined (struct hash_table_test *ht,
return !NILP (call2 (ht->user_cmp_function, key1, key2));
}
-
/* Value is a hash code for KEY for use in hash table H which uses
`eq' to compare keys. The hash code returned is guaranteed to fit
in a Lisp integer. */
@@ -3678,34 +3727,27 @@ cmpfn_user_defined (struct hash_table_test *ht,
static EMACS_UINT
hashfn_eq (struct hash_table_test *ht, Lisp_Object key)
{
- EMACS_UINT hash = XHASH (key) ^ XTYPE (key);
- return hash;
+ return XHASH (key) ^ XTYPE (key);
}
/* Value is a hash code for KEY for use in hash table H which uses
- `eql' to compare keys. The hash code returned is guaranteed to fit
+ `equal' to compare keys. The hash code returned is guaranteed to fit
in a Lisp integer. */
static EMACS_UINT
-hashfn_eql (struct hash_table_test *ht, Lisp_Object key)
+hashfn_equal (struct hash_table_test *ht, Lisp_Object key)
{
- EMACS_UINT hash;
- if (FLOATP (key))
- hash = sxhash (key, 0);
- else
- hash = XHASH (key) ^ XTYPE (key);
- return hash;
+ return sxhash (key, 0);
}
/* Value is a hash code for KEY for use in hash table H which uses
- `equal' to compare keys. The hash code returned is guaranteed to fit
+ `eql' to compare keys. The hash code returned is guaranteed to fit
in a Lisp integer. */
static EMACS_UINT
-hashfn_equal (struct hash_table_test *ht, Lisp_Object key)
+hashfn_eql (struct hash_table_test *ht, Lisp_Object key)
{
- EMACS_UINT hash = sxhash (key, 0);
- return hash;
+ return FLOATP (key) ? hashfn_equal (ht, key) : hashfn_eq (ht, key);
}
/* Value is a hash code for KEY for use in hash table H which uses as
@@ -3719,6 +3761,14 @@ hashfn_user_defined (struct hash_table_test *ht, Lisp_Object key)
return hashfn_eq (ht, hash);
}
+struct hash_table_test const
+ hashtest_eq = { LISPSYM_INITIALLY (Qeq), LISPSYM_INITIALLY (Qnil),
+ LISPSYM_INITIALLY (Qnil), 0, hashfn_eq },
+ hashtest_eql = { LISPSYM_INITIALLY (Qeql), LISPSYM_INITIALLY (Qnil),
+ LISPSYM_INITIALLY (Qnil), cmpfn_eql, hashfn_eql },
+ hashtest_equal = { LISPSYM_INITIALLY (Qequal), LISPSYM_INITIALLY (Qnil),
+ LISPSYM_INITIALLY (Qnil), cmpfn_equal, hashfn_equal };
+
/* Allocate basically initialized hash table. */
static struct Lisp_Hash_Table *
@@ -4408,15 +4458,29 @@ sxhash (Lisp_Object obj, int depth)
Lisp Interface
***********************************************************************/
+DEFUN ("sxhash-eq", Fsxhash_eq, Ssxhash_eq, 1, 1, 0,
+ doc: /* Return an integer hash code for OBJ suitable for `eq'.
+If (eq A B), then (= (sxhash-eq A) (sxhash-eq B)). */)
+ (Lisp_Object obj)
+{
+ return make_number (hashfn_eq (NULL, obj));
+}
-DEFUN ("sxhash", Fsxhash, Ssxhash, 1, 1, 0,
- doc: /* Compute a hash code for OBJ and return it as integer. */)
+DEFUN ("sxhash-eql", Fsxhash_eql, Ssxhash_eql, 1, 1, 0,
+ doc: /* Return an integer hash code for OBJ suitable for `eql'.
+If (eql A B), then (= (sxhash-eql A) (sxhash-eql B)). */)
(Lisp_Object obj)
{
- EMACS_UINT hash = sxhash (obj, 0);
- return make_number (hash);
+ return make_number (hashfn_eql (NULL, obj));
}
+DEFUN ("sxhash-equal", Fsxhash_equal, Ssxhash_equal, 1, 1, 0,
+ doc: /* Return an integer hash code for OBJ suitable for `equal'.
+If (equal A B), then (= (sxhash-equal A) (sxhash-equal B)). */)
+ (Lisp_Object obj)
+{
+ return make_number (hashfn_equal (NULL, obj));
+}
DEFUN ("make-hash-table", Fmake_hash_table, Smake_hash_table, 0, MANY, 0,
doc: /* Create and return a new hash table.
@@ -4697,6 +4761,21 @@ returns nil, then (funcall TEST x1 x2) also returns nil. */)
#include "sha256.h"
#include "sha512.h"
+static Lisp_Object
+make_digest_string (Lisp_Object digest, int digest_size)
+{
+ unsigned char *p = SDATA (digest);
+
+ for (int i = digest_size - 1; i >= 0; i--)
+ {
+ static char const hexdigit[16] = "0123456789abcdef";
+ int p_i = p[i];
+ p[2 * i] = hexdigit[p_i >> 4];
+ p[2 * i + 1] = hexdigit[p_i & 0xf];
+ }
+ return digest;
+}
+
/* ALGORITHM is a symbol: md5, sha1, sha224 and so on. */
static Lisp_Object
@@ -4704,7 +4783,6 @@ secure_hash (Lisp_Object algorithm, Lisp_Object object, Lisp_Object start,
Lisp_Object end, Lisp_Object coding_system, Lisp_Object noerror,
Lisp_Object binary)
{
- int i;
ptrdiff_t size, start_char = 0, start_byte, end_char = 0, end_byte;
register EMACS_INT b, e;
register struct buffer *bp;
@@ -4896,17 +4974,7 @@ secure_hash (Lisp_Object algorithm, Lisp_Object object, Lisp_Object start,
SSDATA (digest));
if (NILP (binary))
- {
- unsigned char *p = SDATA (digest);
- for (i = digest_size - 1; i >= 0; i--)
- {
- static char const hexdigit[16] = "0123456789abcdef";
- int p_i = p[i];
- p[2 * i] = hexdigit[p_i >> 4];
- p[2 * i + 1] = hexdigit[p_i & 0xf];
- }
- return digest;
- }
+ return make_digest_string (digest, digest_size);
else
return make_unibyte_string (SSDATA (digest), digest_size);
}
@@ -4957,6 +5025,45 @@ If BINARY is non-nil, returns a string in binary form. */)
{
return secure_hash (algorithm, object, start, end, Qnil, Qnil, binary);
}
+
+DEFUN ("buffer-hash", Fbuffer_hash, Sbuffer_hash, 0, 1, 0,
+ doc: /* Return a hash of the contents of BUFFER-OR-NAME.
+This hash is performed on the raw internal format of the buffer,
+disregarding any coding systems.
+If nil, use the current buffer." */ )
+ (Lisp_Object buffer_or_name)
+{
+ Lisp_Object buffer;
+ struct buffer *b;
+ struct sha1_ctx ctx;
+
+ if (NILP (buffer_or_name))
+ buffer = Fcurrent_buffer ();
+ else
+ buffer = Fget_buffer (buffer_or_name);
+ if (NILP (buffer))
+ nsberror (buffer_or_name);
+
+ b = XBUFFER (buffer);
+ sha1_init_ctx (&ctx);
+
+ /* Process the first part of the buffer. */
+ sha1_process_bytes (BUF_BEG_ADDR (b),
+ BUF_GPT_BYTE (b) - BUF_BEG_BYTE (b),
+ &ctx);
+
+ /* If the gap is before the end of the buffer, process the last half
+ of the buffer. */
+ if (BUF_GPT_BYTE (b) < BUF_Z_BYTE (b))
+ sha1_process_bytes (BUF_GAP_END_ADDR (b),
+ BUF_Z_ADDR (b) - BUF_GAP_END_ADDR (b),
+ &ctx);
+
+ Lisp_Object digest = make_uninit_string (SHA1_DIGEST_SIZE * 2);
+ sha1_finish_ctx (&ctx, SSDATA (digest));
+ return make_digest_string (digest, SHA1_DIGEST_SIZE);
+}
+
void
syms_of_fns (void)
@@ -4984,7 +5091,9 @@ syms_of_fns (void)
DEFSYM (Qkey_or_value, "key-or-value");
DEFSYM (Qkey_and_value, "key-and-value");
- defsubr (&Ssxhash);
+ defsubr (&Ssxhash_eq);
+ defsubr (&Ssxhash_eql);
+ defsubr (&Ssxhash_equal);
defsubr (&Smake_hash_table);
defsubr (&Scopy_hash_table);
defsubr (&Shash_table_count);
@@ -5020,6 +5129,9 @@ syms_of_fns (void)
doc: /* A list of symbols which are the features of the executing Emacs.
Used by `featurep' and `require', and altered by `provide'. */);
Vfeatures = list1 (Qemacs);
+ DEFSYM (Qfeatures, "features");
+ /* Let people use lexically scoped vars named `features'. */
+ Fmake_var_non_special (Qfeatures);
DEFSYM (Qsubfeatures, "subfeatures");
DEFSYM (Qfuncall, "funcall");
@@ -5055,6 +5167,7 @@ this variable. */);
defsubr (&Sstring_equal);
defsubr (&Scompare_strings);
defsubr (&Sstring_lessp);
+ defsubr (&Sstring_version_lessp);
defsubr (&Sstring_collate_lessp);
defsubr (&Sstring_collate_equalp);
defsubr (&Sappend);
@@ -5099,6 +5212,7 @@ this variable. */);
defsubr (&Snconc);
defsubr (&Smapcar);
defsubr (&Smapc);
+ defsubr (&Smapcan);
defsubr (&Smapconcat);
defsubr (&Syes_or_no_p);
defsubr (&Sload_average);
@@ -5115,23 +5229,6 @@ this variable. */);
defsubr (&Sbase64_decode_string);
defsubr (&Smd5);
defsubr (&Ssecure_hash);
+ defsubr (&Sbuffer_hash);
defsubr (&Slocale_info);
-
- hashtest_eq.name = Qeq;
- hashtest_eq.user_hash_function = Qnil;
- hashtest_eq.user_cmp_function = Qnil;
- hashtest_eq.cmpfn = 0;
- hashtest_eq.hashfn = hashfn_eq;
-
- hashtest_eql.name = Qeql;
- hashtest_eql.user_hash_function = Qnil;
- hashtest_eql.user_cmp_function = Qnil;
- hashtest_eql.cmpfn = cmpfn_eql;
- hashtest_eql.hashfn = hashfn_eql;
-
- hashtest_equal.name = Qequal;
- hashtest_equal.user_hash_function = Qnil;
- hashtest_equal.user_cmp_function = Qnil;
- hashtest_equal.cmpfn = cmpfn_equal;
- hashtest_equal.hashfn = hashfn_equal;
}
diff --git a/src/font.c b/src/font.c
index 2519599bc6..144ba07c42 100644
--- a/src/font.c
+++ b/src/font.c
@@ -1771,7 +1771,8 @@ font_parse_family_registry (Lisp_Object family, Lisp_Object registry, Lisp_Objec
p1 = strchr (p0, '-');
if (! p1)
{
- AUTO_STRING (extra, (&"*-*"[len && p0[len - 1] == '*']));
+ bool asterisk = len && p0[len - 1] == '*';
+ AUTO_STRING_WITH_LEN (extra, &"*-*"[asterisk], 3 - asterisk);
registry = concat2 (registry, extra);
}
registry = Fdowncase (registry);
@@ -2233,7 +2234,8 @@ font_sort_entities (Lisp_Object list, Lisp_Object prefer,
struct font_sort_data *data;
unsigned best_score;
Lisp_Object best_entity;
- Lisp_Object tail, vec IF_LINT (= Qnil);
+ Lisp_Object tail;
+ Lisp_Object vec UNINIT;
USE_SAFE_ALLOCA;
for (i = FONT_WEIGHT_INDEX; i <= FONT_AVGWIDTH_INDEX; i++)
@@ -2861,7 +2863,7 @@ font_open_entity (struct frame *f, Lisp_Object entity, int pixel_size)
struct font_driver_list *driver_list;
Lisp_Object objlist, size, val, font_object;
struct font *font;
- int min_width, height, psize;
+ int height, psize;
eassert (FONT_ENTITY_P (entity));
size = AREF (entity, FONT_SIZE_INDEX);
@@ -2905,10 +2907,12 @@ font_open_entity (struct frame *f, Lisp_Object entity, int pixel_size)
Fcons (font_object, AREF (entity, FONT_OBJLIST_INDEX)));
font = XFONT_OBJECT (font_object);
- min_width = (font->min_width ? font->min_width
- : font->average_width ? font->average_width
- : font->space_width ? font->space_width
- : 1);
+#ifdef HAVE_WINDOW_SYSTEM
+ int min_width = (font->min_width ? font->min_width
+ : font->average_width ? font->average_width
+ : font->space_width ? font->space_width
+ : 1);
+#endif
int font_ascent, font_descent;
get_font_ascent_descent (font, &font_ascent, &font_descent);
diff --git a/src/fontset.c b/src/fontset.c
index dc037a807c..67696d0fea 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -63,17 +63,26 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
An element of a base fontset is a vector of FONT-DEFs which themselves
are vectors of the form [ FONT-SPEC ENCODING REPERTORY ].
- An element of a realized fontset is nil, t, 0, or a vector of this
- form:
+ An element of a realized fontset is nil, t, 0, or a cons that has
+ this from:
- [ PREFERRED-RFONT-DEF RFONT-DEF0 RFONT-DEF1 ... ]
+ (CHARSET-ORDERED-LIST-TICK . FONT-GROUP)
+
+ CHARSET_ORDERED_LIST_TICK is the same as charset_ordered_list_tick or -1.
+
+ FONT-GROUP is a vector of elements that have this form:
+
+ [ RFONT-DEF0 RFONT-DEF1 ... ]
Each RFONT-DEFn (i.e. Realized FONT-DEF) has this form:
[ FACE-ID FONT-DEF FONT-OBJECT SORTING-SCORE ]
- RFONT-DEFn are automatically reordered by the current charset
- priority list.
+ RFONT-DEFn are automatically reordered considering the current
+ charset priority list, the current language environment, and
+ priorities determined by font-backends.
+
+ RFONT-DEFn may not be a vector in the following cases.
The value nil means that we have not yet generated the above vector
from the base of the fontset.
@@ -83,7 +92,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
The value 0 means that no font is available for the corresponding
range of characters in this fontset, but may be available in the
- default fontset.
+ fallback font-group or in the default fontset.
A fontset has 8 extra slots.
@@ -407,6 +416,9 @@ reorder_font_vector (Lisp_Object font_group, struct font *font)
if (! NILP (encoding))
{
+ /* This spec specifies an encoding by a charset set
+ name. Reflect the preference order of that charset
+ in the upper bits of SCORE. */
Lisp_Object tail;
for (tail = Vcharset_ordered_list;
@@ -419,6 +431,10 @@ reorder_font_vector (Lisp_Object font_group, struct font *font)
}
else
{
+ /* This spec does not specify an encoding. If the spec
+ specifies a language, and the language is not for the
+ current language environment, make the score
+ larger. */
Lisp_Object lang = Ffont_get (font_spec, QClang);
if (! NILP (lang)
@@ -442,11 +458,11 @@ reorder_font_vector (Lisp_Object font_group, struct font *font)
XSETCAR (font_group, make_number (low_tick_bits));
}
-/* Return a font-group (actually a cons (-1 . FONT-GROUP-VECTOR)) for
- character C in FONTSET. If C is -1, return a fallback font-group.
- If C is not -1, the value may be Qt (FONTSET doesn't have a font
- for C even in the fallback group), or 0 (a font for C may be found
- only in the fallback group). */
+/* Return a font-group (actually a cons (CHARSET_ORDERED_LIST_TICK
+ . FONT-GROUP)) for character C or a fallback font-group in the
+ realized fontset FONTSET. The elements of FONT-GROUP are
+ RFONT-DEFs. The value may not be a cons. See the comment at the
+ head of this file for the detail of the return value. */
static Lisp_Object
fontset_get_font_group (Lisp_Object fontset, int c)
@@ -461,23 +477,37 @@ fontset_get_font_group (Lisp_Object fontset, int c)
else
font_group = FONTSET_FALLBACK (fontset);
if (! NILP (font_group))
+ /* We have already realized FONT-DEFs of this font group for C or
+ for fallback (FONT_GROUP is a cons), or we have already found
+ that no appropriate font was found (FONT_GROUP is t or 0). */
return font_group;
base_fontset = FONTSET_BASE (fontset);
if (NILP (base_fontset))
+ /* Actually we never come here because FONTSET is a realized one,
+ and thus it should have a base. */
font_group = Qnil;
else if (c >= 0)
font_group = char_table_ref_and_range (base_fontset, c, &from, &to);
else
font_group = FONTSET_FALLBACK (base_fontset);
+
+ /* FONT_GROUP not being a vector means that no fonts are specified
+ for C, or the fontset does not have fallback fonts. */
if (NILP (font_group))
{
font_group = make_number (0);
if (c >= 0)
+ /* Record that FONTSET does not specify fonts for C. As
+ there's a possibility that a font is found in a fallback
+ font group, we set 0 at the moment. */
char_table_set_range (fontset, from, to, font_group);
return font_group;
}
if (!VECTORP (font_group))
return font_group;
+
+ /* Now realize FONT-DEFs of this font group, and update the realized
+ fontset FONTSET. */
font_group = Fcopy_sequence (font_group);
for (i = 0; i < ASIZE (font_group); i++)
if (! NILP (AREF (font_group, i)))
@@ -498,21 +528,21 @@ fontset_get_font_group (Lisp_Object fontset, int c)
}
/* Return RFONT-DEF (vector) in the realized fontset FONTSET for the
- character C. If no font is found, return Qnil if there's a
+ character C. If no font is found, return Qnil or 0 if there's a
possibility that the default fontset or the fallback font groups
have a proper font, and return Qt if not.
If a font is found but is not yet opened, open it (if FACE is not
NULL) or return Qnil (if FACE is NULL).
- ID is a charset-id that must be preferred, or -1 meaning no
+ CHARSET_ID is a charset-id that must be preferred, or -1 meaning no
preference.
If FALLBACK, search only fallback fonts. */
static Lisp_Object
-fontset_find_font (Lisp_Object fontset, int c, struct face *face, int id,
- bool fallback)
+fontset_find_font (Lisp_Object fontset, int c, struct face *face,
+ int charset_id, bool fallback)
{
Lisp_Object vec, font_group;
int i, charset_matched = 0, found_index;
@@ -534,8 +564,8 @@ fontset_find_font (Lisp_Object fontset, int c, struct face *face, int id,
/* We have just created the font-group,
or the charset priorities were changed. */
reorder_font_vector (font_group, face->ascii_face->font);
- if (id >= 0)
- /* Find a spec matching with the charset ID to try at
+ if (charset_id >= 0)
+ /* Find a spec matching with CHARSET_ID to try it at
first. */
for (i = 0; i < ASIZE (vec); i++)
{
@@ -546,7 +576,7 @@ fontset_find_font (Lisp_Object fontset, int c, struct face *face, int id,
break;
repertory = FONT_DEF_REPERTORY (RFONT_DEF_FONT_DEF (rfont_def));
- if (XINT (repertory) == id)
+ if (XINT (repertory) == charset_id)
{
charset_matched = i;
break;
@@ -554,7 +584,9 @@ fontset_find_font (Lisp_Object fontset, int c, struct face *face, int id,
}
}
- /* Find the first available font in the vector of RFONT-DEF. */
+ /* Find the first available font in the vector of RFONT-DEF. If
+ CHARSET_MATCHED > 0, try the corresponding RFONT-DEF first, then
+ try the rest. */
for (i = 0; i < ASIZE (vec); i++)
{
Lisp_Object font_def;
@@ -565,13 +597,13 @@ fontset_find_font (Lisp_Object fontset, int c, struct face *face, int id,
{
if (charset_matched > 0)
{
- /* Try the element matching with the charset ID at first. */
+ /* Try the element matching with CHARSET_ID at first. */
found_index = charset_matched;
/* Make this negative so that we don't come here in the
next loop. */
charset_matched = - charset_matched;
/* We must try the first element in the next loop. */
- i--;
+ i = -1;
}
}
else if (i == - charset_matched)
@@ -630,10 +662,10 @@ fontset_find_font (Lisp_Object fontset, int c, struct face *face, int id,
if (NILP (font_object))
{
/* Something strange happened, perhaps because of a
- Font-backend problem. Too avoid crashing, record
+ Font-backend problem. To avoid crashing, record
that this spec is unusable. It may be better to find
another font of the same spec, but currently we don't
- have such an API. */
+ have such an API in font-backend. */
RFONT_DEF_SET_FACE (rfont_def, -1);
continue;
}
@@ -693,6 +725,7 @@ fontset_find_font (Lisp_Object fontset, int c, struct face *face, int id,
i = found_index;
}
+ /* Record that no font in this font group supports C. */
FONTSET_SET (fontset, make_number (c), make_number (0));
return Qnil;
@@ -711,10 +744,14 @@ fontset_find_font (Lisp_Object fontset, int c, struct face *face, int id,
}
+/* Return RFONT-DEF (vector) corresponding to the font for character
+ C. The value is not a vector if no font is found for C. */
+
static Lisp_Object
fontset_font (Lisp_Object fontset, int c, struct face *face, int id)
{
- Lisp_Object rfont_def, default_rfont_def IF_LINT (= Qnil);
+ Lisp_Object rfont_def;
+ Lisp_Object default_rfont_def UNINIT;
Lisp_Object base_fontset;
/* Try a font-group of FONTSET. */
@@ -1268,7 +1305,7 @@ free_realized_fontsets (Lisp_Object base)
{
struct frame *f = XFRAME (FONTSET_FRAME (this));
int face_id = XINT (XCDR (XCAR (tail)));
- struct face *face = FACE_FROM_ID (f, face_id);
+ struct face *face = FACE_FROM_ID_OR_NULL (f, face_id);
/* Face THIS itself is also freed by the following call. */
free_realized_face (f, face);
@@ -1600,7 +1637,7 @@ appended. By default, FONT-SPEC overrides the previous settings. */)
continue;
if (fontset_id != FRAME_FONTSET (f))
continue;
- face = FACE_FROM_ID (f, DEFAULT_FACE_ID);
+ face = FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID);
if (face)
font_object = font_load_for_lface (f, face->lface, font_spec);
else
diff --git a/src/frame.c b/src/frame.c
index 00f25f7e91..2b7ee3b7c3 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -106,31 +106,32 @@ decode_any_frame (register Lisp_Object frame)
}
#ifdef HAVE_WINDOW_SYSTEM
-
bool
-window_system_available (struct frame *f)
+display_available (void)
{
- return f ? FRAME_WINDOW_P (f) || FRAME_MSDOS_P (f) : x_display_list != NULL;
+ return x_display_list != NULL;
}
-
-#endif /* HAVE_WINDOW_SYSTEM */
+#endif
struct frame *
decode_window_system_frame (Lisp_Object frame)
{
struct frame *f = decode_live_frame (frame);
-
- if (!window_system_available (f))
- error ("Window system frame should be used");
+ check_window_system (f);
+#ifdef HAVE_WINDOW_SYSTEM
return f;
+#endif
}
void
check_window_system (struct frame *f)
{
- if (!window_system_available (f))
- error (f ? "Window system frame should be used"
- : "Window system is not in use or not initialized");
+#ifdef HAVE_WINDOW_SYSTEM
+ if (window_system_available (f))
+ return;
+#endif
+ error (f ? "Window system frame should be used"
+ : "Window system is not in use or not initialized");
}
/* Return the value of frame parameter PROP in frame FRAME. */
@@ -500,8 +501,8 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit,
&& new_lines == old_lines)
/* No change. Sanitize window sizes and return. */
{
- sanitize_window_sizes (frame, Qt);
- sanitize_window_sizes (frame, Qnil);
+ sanitize_window_sizes (Qt);
+ sanitize_window_sizes (Qnil);
return;
}
@@ -537,7 +538,7 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit,
#endif
}
else if (new_cols != old_cols)
- call2 (Qwindow_pixel_to_total, frame, Qt);
+ call2 (Qwindow__pixel_to_total, frame, Qt);
if (new_windows_height != old_windows_height
/* When the top margin has changed we have to recalculate the top
@@ -553,7 +554,7 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit,
FrameRows (FRAME_TTY (f)) = new_lines + FRAME_TOP_MARGIN (f);
}
else if (new_lines != old_lines)
- call2 (Qwindow_pixel_to_total, frame, Qnil);
+ call2 (Qwindow__pixel_to_total, frame, Qnil);
frame_size_history_add
(f, Qadjust_frame_size_3, new_text_width, new_text_height,
@@ -581,8 +582,8 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit,
}
/* Sanitize window sizes. */
- sanitize_window_sizes (frame, Qt);
- sanitize_window_sizes (frame, Qnil);
+ sanitize_window_sizes (Qt);
+ sanitize_window_sizes (Qnil);
adjust_frame_glyphs (f);
calculate_costs (f);
@@ -594,8 +595,6 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit,
|| new_pixel_height != old_pixel_height);
unblock_input ();
-
- run_window_configuration_change_hook (f);
}
/* Allocate basically initialized frame. */
@@ -611,7 +610,7 @@ make_frame (bool mini_p)
{
Lisp_Object frame;
struct frame *f;
- struct window *rw, *mw IF_LINT (= NULL);
+ struct window *rw, *mw;
Lisp_Object root_window;
Lisp_Object mini_window;
@@ -659,6 +658,7 @@ make_frame (bool mini_p)
mw->mini = 1;
wset_frame (mw, frame);
fset_minibuffer_window (f, mini_window);
+ store_frame_param (f, Qminibuffer, Qt);
}
else
{
@@ -771,6 +771,7 @@ make_frame_without_minibuffer (Lisp_Object mini_window, KBOARD *kb,
}
fset_minibuffer_window (f, mini_window);
+ store_frame_param (f, Qminibuffer, mini_window);
/* Make the chosen minibuffer window display the proper minibuffer,
unless it is already showing a minibuffer. */
@@ -808,6 +809,7 @@ make_minibuffer_frame (void)
mini_window = f->root_window;
fset_minibuffer_window (f, mini_window);
+ store_frame_param (f, Qminibuffer, Qonly);
XWINDOW (mini_window)->mini = 1;
wset_next (XWINDOW (mini_window), Qnil);
wset_prev (XWINDOW (mini_window), Qnil);
@@ -1308,7 +1310,7 @@ candidate_frame (Lisp_Object candidate, Lisp_Object frame, Lisp_Object minibuf)
FRAME_FOCUS_FRAME (c)))
return candidate;
}
- else if (XFASTINT (minibuf) == 0)
+ else if (INTEGERP (minibuf) && XINT (minibuf) == 0)
{
if (FRAME_VISIBLE_P (c) || FRAME_ICONIFIED_P (c))
return candidate;
@@ -2137,10 +2139,12 @@ If omitted, FRAME defaults to the currently selected frame. */)
check_minibuf_window (frame, EQ (minibuf_window, selected_window));
/* I think this should be done with a hook. */
-#ifdef HAVE_WINDOW_SYSTEM
if (FRAME_WINDOW_P (f))
+ {
+#ifdef HAVE_WINDOW_SYSTEM
x_iconify_frame (f);
#endif
+ }
/* Make menu bar update for the Buffers and Frames menus. */
windows_or_buffers_changed = 17;
@@ -2403,6 +2407,46 @@ store_frame_param (struct frame *f, Lisp_Object prop, Lisp_Object val)
{
register Lisp_Object old_alist_elt;
+ if (EQ (prop, Qminibuffer))
+ {
+ if (WINDOWP (val))
+ {
+ if (!MINI_WINDOW_P (XWINDOW (val)))
+ error ("The `minibuffer' parameter does not specify a valid minibuffer window");
+ else if (FRAME_MINIBUF_ONLY_P (f))
+ {
+ if (EQ (val, FRAME_MINIBUF_WINDOW (f)))
+ val = Qonly;
+ else
+ error ("Can't change the minibuffer window of a minibuffer-only frame");
+ }
+ else if (FRAME_HAS_MINIBUF_P (f))
+ {
+ if (EQ (val, FRAME_MINIBUF_WINDOW (f)))
+ val = Qt;
+ else
+ error ("Can't change the minibuffer window of a frame with its own minibuffer");
+ }
+ else
+ /* Store the chosen minibuffer window. */
+ fset_minibuffer_window (f, val);
+ }
+ else
+ {
+ Lisp_Object old_val = Fcdr (Fassq (Qminibuffer, f->param_alist));
+
+ if (!NILP (old_val))
+ {
+ if (WINDOWP (old_val) && NILP (val))
+ /* Don't change the value for a minibuffer-less frame if
+ only nil was specified as new value. */
+ val = old_val;
+ else if (!EQ (old_val, val))
+ error ("Can't change the `minibuffer' parameter of this frame");
+ }
+ }
+ }
+
/* The buffer-list parameters are stored in a special place and not
in the alist. All buffers must be live. */
if (EQ (prop, Qbuffer_list))
@@ -2474,19 +2518,6 @@ store_frame_param (struct frame *f, Lisp_Object prop, Lisp_Object val)
else if (EQ (prop, Qname))
set_term_frame_name (f, val);
}
-
- if (EQ (prop, Qminibuffer) && WINDOWP (val))
- {
- if (! MINI_WINDOW_P (XWINDOW (val)))
- error ("Surrogate minibuffer windows must be minibuffer windows");
-
- if ((FRAME_HAS_MINIBUF_P (f) || FRAME_MINIBUF_ONLY_P (f))
- && !EQ (val, f->minibuffer_window))
- error ("Can't change the surrogate minibuffer of a frame with its own minibuffer");
-
- /* Install the chosen minibuffer window, with proper buffer. */
- fset_minibuffer_window (f, val);
- }
}
/* Return color matches UNSPEC on frame F or nil if UNSPEC
@@ -2564,10 +2595,6 @@ If FRAME is omitted or nil, return information on the currently selected frame.
: FRAME_COLS (f));
store_in_alist (&alist, Qwidth, make_number (width));
store_in_alist (&alist, Qmodeline, (FRAME_WANTS_MODELINE_P (f) ? Qt : Qnil));
- store_in_alist (&alist, Qminibuffer,
- (! FRAME_HAS_MINIBUF_P (f) ? Qnil
- : FRAME_MINIBUF_ONLY_P (f) ? Qonly
- : FRAME_MINIBUF_WINDOW (f)));
store_in_alist (&alist, Qunsplittable, (FRAME_NO_SPLIT_P (f) ? Qt : Qnil));
store_in_alist (&alist, Qbuffer_list, f->buffer_list);
store_in_alist (&alist, Qburied_buffer_list, f->buried_buffer_list);
@@ -2606,6 +2633,22 @@ If FRAME is nil, describe the currently selected frame. */)
/* Avoid consing in frequent cases. */
if (EQ (parameter, Qname))
value = f->name;
+#ifdef HAVE_WINDOW_SYSTEM
+ /* These are used by vertical motion commands. */
+ else if (EQ (parameter, Qvertical_scroll_bars))
+ value = (f->vertical_scroll_bar_type == vertical_scroll_bar_none
+ ? Qnil
+ : (f->vertical_scroll_bar_type == vertical_scroll_bar_left
+ ? Qleft : Qright));
+ else if (EQ (parameter, Qhorizontal_scroll_bars))
+ value = f->horizontal_scroll_bars ? Qt : Qnil;
+ else if (EQ (parameter, Qline_spacing) && f->extra_line_spacing == 0)
+ /* If this is non-zero, we can't determine whether the user specified
+ an integer or float value without looking through 'param_alist'. */
+ value = make_number (0);
+ else if (EQ (parameter, Qfont) && FRAME_X_P (f))
+ value = FRAME_FONT (f)->props[FONT_NAME_INDEX];
+#endif /* HAVE_WINDOW_SYSTEM */
#ifdef HAVE_X_WINDOWS
else if (EQ (parameter, Qdisplay) && FRAME_X_P (f))
value = XCAR (FRAME_DISPLAY_INFO (f)->name_list_element);
@@ -3003,16 +3046,18 @@ or bottom edge of the outer frame of FRAME relative to the right or
bottom edge of FRAME's display. */)
(Lisp_Object frame, Lisp_Object x, Lisp_Object y)
{
- register struct frame *f = decode_live_frame (frame);
+ struct frame *f = decode_live_frame (frame);
CHECK_TYPE_RANGED_INTEGER (int, x);
CHECK_TYPE_RANGED_INTEGER (int, y);
/* I think this should be done with a hook. */
-#ifdef HAVE_WINDOW_SYSTEM
if (FRAME_WINDOW_P (f))
- x_set_offset (f, XINT (x), XINT (y), 1);
+ {
+#ifdef HAVE_WINDOW_SYSTEM
+ x_set_offset (f, XINT (x), XINT (y), 1);
#endif
+ }
return Qt;
}
@@ -3091,7 +3136,7 @@ x_set_frame_parameters (struct frame *f, Lisp_Object alist)
/* If both of these parameters are present, it's more efficient to
set them both at once. So we wait until we've looked at the
entire list before we set them. */
- int width IF_LINT (= 0), height IF_LINT (= 0);
+ int width, height;
bool width_change = false, height_change = false;
/* Same here. */
@@ -3107,70 +3152,58 @@ x_set_frame_parameters (struct frame *f, Lisp_Object alist)
/* Record in these vectors all the parms specified. */
Lisp_Object *parms;
Lisp_Object *values;
- ptrdiff_t i, p;
+ ptrdiff_t i, j, size;
bool left_no_change = 0, top_no_change = 0;
#ifdef HAVE_X_WINDOWS
bool icon_left_no_change = 0, icon_top_no_change = 0;
#endif
- i = 0;
- for (tail = alist; CONSP (tail); tail = XCDR (tail))
- i++;
+ for (size = 0, tail = alist; CONSP (tail); tail = XCDR (tail))
+ size++;
USE_SAFE_ALLOCA;
- SAFE_ALLOCA_LISP (parms, 2 * i);
- values = parms + i;
+ SAFE_ALLOCA_LISP (parms, 2 * size);
+ values = parms + size;
/* Extract parm names and values into those vectors. */
- i = 0;
+ i = 0, j = size - 1;
for (tail = alist; CONSP (tail); tail = XCDR (tail))
{
- Lisp_Object elt;
-
- elt = XCAR (tail);
- parms[i] = Fcar (elt);
- values[i] = Fcdr (elt);
- i++;
- }
- /* TAIL and ALIST are not used again below here. */
- alist = tail = Qnil;
-
- top = left = Qunbound;
- icon_left = icon_top = Qunbound;
+ Lisp_Object elt = XCAR (tail), prop = Fcar (elt), val = Fcdr (elt);
- /* Process foreground_color and background_color before anything else.
- They are independent of other properties, but other properties (e.g.,
- cursor_color) are dependent upon them. */
- /* Process default font as well, since fringe widths depends on it. */
- for (p = 0; p < i; p++)
- {
- Lisp_Object prop, val;
+ /* Some properties are independent of other properties, but other
+ properties are dependent upon them. These special properties
+ are foreground_color, background_color (affects cursor_color)
+ and font (affects fringe widths); they're recorded starting
+ from the end of PARMS and VALUES to process them first by using
+ reverse iteration. */
- prop = parms[p];
- val = values[p];
if (EQ (prop, Qforeground_color)
|| EQ (prop, Qbackground_color)
|| EQ (prop, Qfont))
{
- register Lisp_Object param_index, old_value;
-
- old_value = get_frame_param (f, prop);
- if (NILP (Fequal (val, old_value)))
- {
- store_frame_param (f, prop, val);
-
- param_index = Fget (prop, Qx_frame_parameter);
- if (NATNUMP (param_index)
- && XFASTINT (param_index) < ARRAYELTS (frame_parms)
- && FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])
- (*(FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
- }
+ parms[j] = prop;
+ values[j] = val;
+ j--;
+ }
+ else
+ {
+ parms[i] = prop;
+ values[i] = val;
+ i++;
}
}
- /* Now process them in reverse of specified order. */
- while (i-- != 0)
+ /* TAIL and ALIST are not used again below here. */
+ alist = tail = Qnil;
+
+ top = left = Qunbound;
+ icon_left = icon_top = Qunbound;
+
+ /* Reverse order is used to make sure that special
+ properties noticed above are processed first. */
+ for (i = size - 1; i >= 0; i--)
{
Lisp_Object prop, val;
@@ -3218,11 +3251,6 @@ x_set_frame_parameters (struct frame *f, Lisp_Object alist)
fullscreen = val;
fullscreen_change = true;
}
- else if (EQ (prop, Qforeground_color)
- || EQ (prop, Qbackground_color)
- || EQ (prop, Qfont))
- /* Processed above. */
- continue;
else
{
register Lisp_Object param_index, old_value;
@@ -3646,7 +3674,7 @@ x_set_font (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
x_new_font (f, font_object, fontset);
store_frame_param (f, Qfont, arg);
#ifdef HAVE_X_WINDOWS
- store_frame_param (f, Qfont_param, font_param);
+ store_frame_param (f, Qfont_parameter, font_param);
#endif
/* Recalculate toolbar height. */
f->n_tool_bar_rows = 0;
@@ -3741,8 +3769,8 @@ x_set_left_fringe (struct frame *f, Lisp_Object new_value, Lisp_Object old_value
if (new_width != old_width)
{
- FRAME_LEFT_FRINGE_WIDTH (f) = new_width;
- FRAME_FRINGE_COLS (f) /* Round up. */
+ f->left_fringe_width = new_width;
+ f->fringe_cols /* Round up. */
= (new_width + FRAME_RIGHT_FRINGE_WIDTH (f) + unit - 1) / unit;
if (FRAME_X_WINDOW (f) != 0)
@@ -3765,8 +3793,8 @@ x_set_right_fringe (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu
if (new_width != old_width)
{
- FRAME_RIGHT_FRINGE_WIDTH (f) = new_width;
- FRAME_FRINGE_COLS (f) /* Round up. */
+ f->right_fringe_width = new_width;
+ f->fringe_cols /* Round up. */
= (new_width + FRAME_LEFT_FRINGE_WIDTH (f) + unit - 1) / unit;
if (FRAME_X_WINDOW (f) != 0)
@@ -3795,13 +3823,11 @@ void
x_set_right_divider_width (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
{
int old = FRAME_RIGHT_DIVIDER_WIDTH (f);
-
CHECK_TYPE_RANGED_INTEGER (int, arg);
- FRAME_RIGHT_DIVIDER_WIDTH (f) = XINT (arg);
- if (FRAME_RIGHT_DIVIDER_WIDTH (f) < 0)
- FRAME_RIGHT_DIVIDER_WIDTH (f) = 0;
- if (FRAME_RIGHT_DIVIDER_WIDTH (f) != old)
+ int new = max (0, XINT (arg));
+ if (new != old)
{
+ f->right_divider_width = new;
adjust_frame_size (f, -1, -1, 4, 0, Qright_divider_width);
adjust_frame_glyphs (f);
SET_FRAME_GARBAGED (f);
@@ -3813,13 +3839,11 @@ void
x_set_bottom_divider_width (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
{
int old = FRAME_BOTTOM_DIVIDER_WIDTH (f);
-
CHECK_TYPE_RANGED_INTEGER (int, arg);
- FRAME_BOTTOM_DIVIDER_WIDTH (f) = XINT (arg);
- if (FRAME_BOTTOM_DIVIDER_WIDTH (f) < 0)
- FRAME_BOTTOM_DIVIDER_WIDTH (f) = 0;
- if (FRAME_BOTTOM_DIVIDER_WIDTH (f) != old)
+ int new = max (0, XINT (arg));
+ if (new != old)
{
+ f->bottom_divider_width = new;
adjust_frame_size (f, -1, -1, 4, 0, Qbottom_divider_width);
adjust_frame_glyphs (f);
SET_FRAME_GARBAGED (f);
@@ -4889,7 +4913,7 @@ syms_of_frame (void)
DEFSYM (Qframep, "framep");
DEFSYM (Qframe_live_p, "frame-live-p");
DEFSYM (Qframe_windows_min_size, "frame-windows-min-size");
- DEFSYM (Qwindow_pixel_to_total, "window--pixel-to-total");
+ DEFSYM (Qwindow__pixel_to_total, "window--pixel-to-total");
DEFSYM (Qexplicit_name, "explicit-name");
DEFSYM (Qheight, "height");
DEFSYM (Qicon, "icon");
@@ -5267,6 +5291,21 @@ The function `frame--size-history' displays the value of this variable
in a more readable form. */);
frame_size_history = Qnil;
+ DEFVAR_BOOL ("tooltip-reuse-hidden-frame", tooltip_reuse_hidden_frame,
+ doc: /* Non-nil means reuse hidden tooltip frames.
+When this is nil, delete a tooltip frame when hiding the associated
+tooltip. When this is non-nil, make the tooltip frame invisible only,
+so it can be reused when the next tooltip is shown.
+
+Setting this to non-nil may drastically reduce the consing overhead
+incurred by creating new tooltip frames. However, a value of non-nil
+means also that intermittent changes of faces or `default-frame-alist'
+are not applied when showing a tooltip in a reused frame.
+
+This variable is effective only with the X toolkit (and there only when
+Gtk+ tooltips are not used) and on Windows. */);
+ tooltip_reuse_hidden_frame = false;
+
staticpro (&Vframe_list);
defsubr (&Sframep);
diff --git a/src/frame.h b/src/frame.h
index f0cdcd4209..5e3ee68942 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -288,8 +288,9 @@ struct frame
cleared. */
bool_bf explicit_name : 1;
- /* True if size of some window on this frame has changed. */
- bool_bf window_sizes_changed : 1;
+ /* True if configuration of windows on this frame has changed since
+ last call of run_window_size_change_functions. */
+ bool_bf window_configuration_changed : 1;
/* True if the mouse has moved on this display device
since the last time we checked. */
@@ -828,10 +829,10 @@ default_pixels_per_inch_y (void)
are frozen on frame F. */
#define FRAME_WINDOWS_FROZEN(f) (f)->frozen_window_starts
-/* True if a size change has been requested for frame F
- but not yet really put into effect. This can be true temporarily
- when an X event comes in at a bad time. */
-#define FRAME_WINDOW_SIZES_CHANGED(f) (f)->window_sizes_changed
+/* True if the frame's window configuration has changed since last call
+ of run_window_size_change_functions. */
+#define FRAME_WINDOW_CONFIGURATION_CHANGED(f) \
+ (f)->window_configuration_changed
/* The minibuffer window of frame F, if it has one; otherwise nil. */
#define FRAME_MINIBUF_WINDOW(f) f->minibuffer_window
@@ -1101,7 +1102,14 @@ extern Lisp_Object selected_frame;
extern int frame_default_tool_bar_height;
#endif
-extern struct frame *decode_window_system_frame (Lisp_Object);
+#ifdef HAVE_WINDOW_SYSTEM
+# define WINDOW_SYSTEM_RETURN
+#else
+# define WINDOW_SYSTEM_RETURN _Noreturn
+#endif
+
+extern WINDOW_SYSTEM_RETURN struct frame *
+ decode_window_system_frame (Lisp_Object);
extern struct frame *decode_live_frame (Lisp_Object);
extern struct frame *decode_any_frame (Lisp_Object);
extern struct frame *make_initial_frame (void);
@@ -1111,11 +1119,20 @@ extern struct frame *make_minibuffer_frame (void);
extern struct frame *make_frame_without_minibuffer (Lisp_Object,
struct kboard *,
Lisp_Object);
-extern bool window_system_available (struct frame *);
-#else /* not HAVE_WINDOW_SYSTEM */
-#define window_system_available(f) ((void) (f), false)
-#endif /* HAVE_WINDOW_SYSTEM */
-extern void check_window_system (struct frame *);
+extern bool display_available (void);
+#endif
+
+INLINE bool
+window_system_available (struct frame *f)
+{
+#ifdef HAVE_WINDOW_SYSTEM
+ return f ? FRAME_WINDOW_P (f) || FRAME_MSDOS_P (f) : display_available ();
+#else
+ return false;
+#endif
+}
+
+extern WINDOW_SYSTEM_RETURN void check_window_system (struct frame *);
extern void frame_make_pointer_invisible (struct frame *);
extern void frame_make_pointer_visible (struct frame *);
extern Lisp_Object delete_frame (Lisp_Object, Lisp_Object);
@@ -1149,46 +1166,68 @@ extern Lisp_Object Vframe_list;
This value currently equals the average width of the default font of F. */
#define FRAME_COLUMN_WIDTH(F) ((F)->column_width)
-/* Pixel width of areas used to display truncation marks, continuation
- marks, overlay arrows. This is 0 for terminal frames. */
+/* Get a frame's window system dimension. If no window system, this is 0. */
+INLINE int
+frame_dimension (int x)
+{
#ifdef HAVE_WINDOW_SYSTEM
+ return x;
+#else
+ return 0;
+#endif
+}
/* Total width of fringes reserved for drawing truncation bitmaps,
continuation bitmaps and alike. The width is in canonical char
units of the frame. This must currently be the case because window
sizes aren't pixel values. If it weren't the case, we wouldn't be
able to split windows horizontally nicely. */
-#define FRAME_FRINGE_COLS(F) ((F)->fringe_cols)
+INLINE int
+FRAME_FRINGE_COLS (struct frame *f)
+{
+ return frame_dimension (f->fringe_cols);
+}
/* Pixel-width of the left and right fringe. */
-#define FRAME_LEFT_FRINGE_WIDTH(F) ((F)->left_fringe_width)
-#define FRAME_RIGHT_FRINGE_WIDTH(F) ((F)->right_fringe_width)
+INLINE int
+FRAME_LEFT_FRINGE_WIDTH (struct frame *f)
+{
+ return frame_dimension (f->left_fringe_width);
+}
+INLINE int
+FRAME_RIGHT_FRINGE_WIDTH (struct frame *f)
+{
+ return frame_dimension (f->right_fringe_width);
+}
/* Total width of fringes in pixels. */
-#define FRAME_TOTAL_FRINGE_WIDTH(F) \
- (FRAME_LEFT_FRINGE_WIDTH (F) + FRAME_RIGHT_FRINGE_WIDTH (F))
+INLINE int
+FRAME_TOTAL_FRINGE_WIDTH (struct frame *f)
+{
+ return FRAME_LEFT_FRINGE_WIDTH (f) + FRAME_RIGHT_FRINGE_WIDTH (f);
+}
/* Pixel-width of internal border lines */
-#define FRAME_INTERNAL_BORDER_WIDTH(F) ((F)->internal_border_width)
+INLINE int
+FRAME_INTERNAL_BORDER_WIDTH (struct frame *f)
+{
+ return frame_dimension (f->internal_border_width);
+}
/* Pixel-size of window border lines */
-#define FRAME_RIGHT_DIVIDER_WIDTH(F) ((F)->right_divider_width)
-#define FRAME_BOTTOM_DIVIDER_WIDTH(F) ((F)->bottom_divider_width)
-
-#else /* not HAVE_WINDOW_SYSTEM */
-
-#define FRAME_FRINGE_COLS(F) 0
-#define FRAME_TOTAL_FRINGE_WIDTH(F) 0
-#define FRAME_LEFT_FRINGE_WIDTH(F) 0
-#define FRAME_RIGHT_FRINGE_WIDTH(F) 0
-#define FRAME_INTERNAL_BORDER_WIDTH(F) 0
-#define FRAME_RIGHT_DIVIDER_WIDTH(F) 0
-#define FRAME_BOTTOM_DIVIDER_WIDTH(F) 0
-
-#endif /* not HAVE_WINDOW_SYSTEM */
+INLINE int
+FRAME_RIGHT_DIVIDER_WIDTH (struct frame *f)
+{
+ return frame_dimension (f->right_divider_width);
+}
+INLINE int
+FRAME_BOTTOM_DIVIDER_WIDTH (struct frame *f)
+{
+ return frame_dimension (f->bottom_divider_width);
+}
/***********************************************************************
Conversion between canonical units and pixels
@@ -1469,7 +1508,7 @@ INLINE_HEADER_END
/* Suppress -Wsuggest-attribute=const if there are no scroll bars.
This is for functions like x_set_horizontal_scroll_bars that have
no effect in this case. */
-#if ! USE_HORIZONTAL_SCROLL_BARS && 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
+#if ! USE_HORIZONTAL_SCROLL_BARS && GNUC_PREREQ (4, 6, 0)
# pragma GCC diagnostic ignored "-Wsuggest-attribute=const"
#endif
diff --git a/src/fringe.c b/src/fringe.c
index 061f78658c..986bde16f0 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -620,8 +620,7 @@ draw_fringe_bitmap_1 (struct window *w, struct glyph_row *row, int left_p, int o
break;
}
- p.face = FACE_FROM_ID (f, face_id);
-
+ p.face = FACE_FROM_ID_OR_NULL (f, face_id);
if (p.face == NULL)
{
/* This could happen after clearing face cache.
@@ -956,7 +955,7 @@ update_window_fringes (struct window *w, bool keep_current_p)
row->indicate_bob_p is set, so it's OK that top_row_ends_at_zv_p
is not initialized here. Similarly for bot_ind_rn,
row->indicate_eob_p and bot_row_ends_at_zv_p. */
- int top_row_ends_at_zv_p IF_LINT (= 0), bot_row_ends_at_zv_p IF_LINT (= 0);
+ int top_row_ends_at_zv_p UNINIT, bot_row_ends_at_zv_p UNINIT;
if (w->pseudo_window_p)
return 0;
@@ -1627,7 +1626,7 @@ If FACE is nil, reset face to default fringe face. */)
{
struct frame *f = SELECTED_FRAME ();
- if (FACE_FROM_ID (f, FRINGE_FACE_ID)
+ if (FACE_FROM_ID_OR_NULL (f, FRINGE_FACE_ID)
&& lookup_derived_face (f, face, FRINGE_FACE_ID, 1) < 0)
error ("No such face");
}
diff --git a/src/ftfont.c b/src/ftfont.c
index 7285aee9bd..1ae3f88daa 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -568,7 +568,6 @@ ftfont_get_charset (Lisp_Object registry)
char *str = SSDATA (SYMBOL_NAME (registry));
USE_SAFE_ALLOCA;
char *re = SAFE_ALLOCA (SBYTES (SYMBOL_NAME (registry)) * 2 + 1);
- Lisp_Object regexp;
int i, j;
for (i = j = 0; i < SBYTES (SYMBOL_NAME (registry)); i++, j++)
@@ -582,13 +581,13 @@ ftfont_get_charset (Lisp_Object registry)
re[j] = '.';
}
re[j] = '\0';
- regexp = make_unibyte_string (re, j);
- SAFE_FREE ();
+ AUTO_STRING_WITH_LEN (regexp, re, j);
for (i = 0; fc_charset_table[i].name; i++)
if (fast_c_string_match_ignore_case
(regexp, fc_charset_table[i].name,
strlen (fc_charset_table[i].name)) >= 0)
break;
+ SAFE_FREE ();
if (! fc_charset_table[i].name)
return -1;
if (! fc_charset_table[i].fc_charset)
diff --git a/src/gmalloc.c b/src/gmalloc.c
index 00b8364131..483d05c5c6 100644
--- a/src/gmalloc.c
+++ b/src/gmalloc.c
@@ -25,14 +25,10 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
#define USE_PTHREAD
#endif
+#include <stddef.h>
#include <string.h>
#include <limits.h>
#include <stdint.h>
-
-#ifdef HYBRID_GET_CURRENT_DIR_NAME
-#undef get_current_dir_name
-#endif
-
#include <unistd.h>
#ifdef USE_PTHREAD
@@ -44,7 +40,22 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
#endif
#ifdef emacs
-extern void emacs_abort (void);
+# include "lisp.h"
+#endif
+
+#ifdef HAVE_MALLOC_H
+# if GNUC_PREREQ (4, 2, 0)
+# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+# endif
+# include <malloc.h>
+#endif
+#ifndef __MALLOC_HOOK_VOLATILE
+# define __MALLOC_HOOK_VOLATILE volatile
+#endif
+#ifndef HAVE_MALLOC_H
+extern void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void);
+extern void (*__MALLOC_HOOK_VOLATILE __malloc_initialize_hook) (void);
+extern void *(*__morecore) (ptrdiff_t);
#endif
/* If HYBRID_MALLOC is defined, then temacs will use malloc,
@@ -53,31 +64,27 @@ extern void emacs_abort (void);
however, will use the system malloc, realloc.... In other source
files, malloc, realloc... are renamed hybrid_malloc,
hybrid_realloc... via macros in conf_post.h. hybrid_malloc and
- friends are wrapper functions defined later in this file.
- aligned_alloc is defined as a macro only in alloc.c.
-
- As of this writing (August 2014), Cygwin is the only platform on
- which HYBRID_MACRO is defined. Any other platform that wants to
- define it will have to define the macros DUMPED and
- ALLOCATED_BEFORE_DUMPING, defined below for Cygwin. */
+ friends are wrapper functions defined later in this file. */
#undef malloc
#undef realloc
#undef calloc
+#undef aligned_alloc
#undef free
#define malloc gmalloc
#define realloc grealloc
#define calloc gcalloc
#define aligned_alloc galigned_alloc
#define free gfree
+#define malloc_info gmalloc_info
-#ifdef CYGWIN
-extern void *bss_sbrk (ptrdiff_t size);
-extern int bss_sbrk_did_unexec;
-extern char bss_sbrk_buffer[];
-extern void *bss_sbrk_buffer_end;
-#define DUMPED bss_sbrk_did_unexec
-#define ALLOCATED_BEFORE_DUMPING(P) \
- ((P) < bss_sbrk_buffer_end && (P) >= (void *) bss_sbrk_buffer)
+#ifdef HYBRID_MALLOC
+# include "sheap.h"
+# define DUMPED bss_sbrk_did_unexec
+static bool
+ALLOCATED_BEFORE_DUMPING (char *p)
+{
+ return bss_sbrk_buffer <= p && p < bss_sbrk_buffer + STATIC_HEAP_SIZE;
+}
#endif
#ifdef __cplusplus
@@ -85,8 +92,9 @@ extern "C"
{
#endif
-#include <stddef.h>
-
+#ifdef HYBRID_MALLOC
+#define extern static
+#endif
/* Allocate SIZE bytes of memory. */
extern void *malloc (size_t size) ATTRIBUTE_MALLOC_SIZE ((1));
@@ -95,25 +103,16 @@ extern void *malloc (size_t size) ATTRIBUTE_MALLOC_SIZE ((1));
extern void *realloc (void *ptr, size_t size) ATTRIBUTE_ALLOC_SIZE ((2));
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
extern void *calloc (size_t nmemb, size_t size) ATTRIBUTE_MALLOC_SIZE ((1,2));
-/* Free a block allocated by `malloc', `realloc' or `calloc'. */
+/* Free a block. */
extern void free (void *ptr);
/* Allocate SIZE bytes allocated to ALIGNMENT bytes. */
-#ifdef MSDOS
extern void *aligned_alloc (size_t, size_t);
+#ifdef MSDOS
extern void *memalign (size_t, size_t);
extern int posix_memalign (void **, size_t, size_t);
#endif
-#ifdef USE_PTHREAD
-/* Set up mutexes and make malloc etc. thread-safe. */
-extern void malloc_enable_thread (void);
-#endif
-
-#ifdef emacs
-extern void emacs_abort (void);
-#endif
-
/* The allocator divides the heap into blocks of fixed size; large
requests receive one or more whole blocks, and small requests
receive a fragment of a block. Fragment sizes are powers of two,
@@ -245,36 +244,12 @@ extern int _malloc_thread_enabled_p;
#define UNLOCK_ALIGNED_BLOCKS()
#endif
-/* Given an address in the middle of a malloc'd object,
- return the address of the beginning of the object. */
-extern void *malloc_find_object_address (void *ptr);
-
-/* Underlying allocation function; successive calls should
- return contiguous pieces of memory. */
-extern void *(*__morecore) (ptrdiff_t size);
-
-/* Default value of `__morecore'. */
-extern void *__default_morecore (ptrdiff_t size);
-
-/* If not NULL, this function is called after each time
- `__morecore' is called to increase the data size. */
-extern void (*__after_morecore_hook) (void);
-
-/* Number of extra blocks to get each time we ask for more core.
- This reduces the frequency of calling `(*__morecore)'. */
-extern size_t __malloc_extra_blocks;
-
/* Nonzero if `malloc' has been called and done its initialization. */
extern int __malloc_initialized;
/* Function called to initialize malloc data structures. */
extern int __malloc_initialize (void);
-/* Hooks for debugging versions. */
-extern void (*__malloc_initialize_hook) (void);
-extern void (*__free_hook) (void *ptr);
-extern void *(*__malloc_hook) (size_t size);
-extern void *(*__realloc_hook) (void *ptr, size_t size);
-extern void *(*__memalign_hook) (size_t size, size_t alignment);
+#ifdef GC_MCHECK
/* Return values for `mprobe': these are the kinds of inconsistencies that
`mcheck' enables detection of. */
@@ -315,8 +290,9 @@ struct mstats
/* Pick up the current statistics. */
extern struct mstats mstats (void);
-/* Call WARNFUN with a warning message when memory usage is high. */
-extern void memory_warnings (void *start, void (*warnfun) (const char *));
+#endif
+
+#undef extern
#ifdef __cplusplus
}
@@ -344,10 +320,17 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
#include <errno.h>
-void *(*__morecore) (ptrdiff_t size) = __default_morecore;
+/* Debugging hook for 'malloc'. */
+static void *(*__MALLOC_HOOK_VOLATILE gmalloc_hook) (size_t);
-/* Debugging hook for `malloc'. */
-void *(*__malloc_hook) (size_t size);
+/* Replacements for traditional glibc malloc hooks, for platforms that
+ do not already have these hooks. Platforms with these hooks all
+ used relaxed ref/def, so it is OK to define them here too. */
+void (*__MALLOC_HOOK_VOLATILE __malloc_initialize_hook) (void);
+void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void);
+void *(*__morecore) (ptrdiff_t);
+
+#ifndef HYBRID_MALLOC
/* Pointer to the base of the first block. */
char *_heapbase;
@@ -355,9 +338,6 @@ char *_heapbase;
/* Block information table. Allocated with align/__free (not malloc/free). */
malloc_info *_heapinfo;
-/* Number of info entries. */
-static size_t heapsize;
-
/* Search index in the info table. */
size_t _heapindex;
@@ -376,10 +356,21 @@ size_t _bytes_free;
/* Are you experienced? */
int __malloc_initialized;
+#else
+
+static struct list _fraghead[BLOCKLOG];
+
+#endif /* HYBRID_MALLOC */
+
+/* Number of extra blocks to get each time we ask for more core.
+ This reduces the frequency of calling `(*__morecore)'. */
+#if defined DOUG_LEA_MALLOC || defined HYBRID_MALLOC || defined SYSTEM_MALLOC
+static
+#endif
size_t __malloc_extra_blocks;
-void (*__malloc_initialize_hook) (void);
-void (*__after_morecore_hook) (void);
+/* Number of info entries. */
+static size_t heapsize;
#if defined GC_MALLOC_CHECK && defined GC_PROTECT_MALLOC_STATE
@@ -934,19 +925,19 @@ malloc (size_t size)
if (!__malloc_initialized && !__malloc_initialize ())
return NULL;
- /* Copy the value of __malloc_hook to an automatic variable in case
- __malloc_hook is modified in another thread between its
+ /* Copy the value of gmalloc_hook to an automatic variable in case
+ gmalloc_hook is modified in another thread between its
NULL-check and the use.
Note: Strictly speaking, this is not a right solution. We should
use mutexes to access non-read-only variables that are shared
among multiple threads. We just leave it for compatibility with
- glibc malloc (i.e., assignments to __malloc_hook) for now. */
- hook = __malloc_hook;
+ glibc malloc (i.e., assignments to gmalloc_hook) for now. */
+ hook = gmalloc_hook;
return (hook != NULL ? *hook : _malloc_internal) (size);
}
-#ifndef _LIBC
+#if !(defined (_LIBC) || defined (HYBRID_MALLOC))
/* On some ANSI C systems, some libc functions call _malloc, _free
and _realloc. Make them use the GNU functions. */
@@ -994,12 +985,14 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
The author may be reached (Email) at the address mike@ai.mit.edu,
or (US mail) as Mike Haertel c/o Free Software Foundation. */
-
/* Debugging hook for free. */
-void (*__free_hook) (void *__ptr);
+static void (*__MALLOC_HOOK_VOLATILE gfree_hook) (void *);
+
+#ifndef HYBRID_MALLOC
/* List of blocks allocated by aligned_alloc. */
struct alignlist *_aligned_blocks = NULL;
+#endif
/* Return memory to the heap.
Like `_free_internal' but don't lock mutex. */
@@ -1248,7 +1241,7 @@ _free_internal_nolock (void *ptr)
}
/* Return memory to the heap.
- Like `free' but don't call a __free_hook if there is one. */
+ Like 'free' but don't call a hook if there is one. */
void
_free_internal (void *ptr)
{
@@ -1262,7 +1255,7 @@ _free_internal (void *ptr)
void
free (void *ptr)
{
- void (*hook) (void *) = __free_hook;
+ void (*hook) (void *) = gfree_hook;
if (hook != NULL)
(*hook) (ptr);
@@ -1270,6 +1263,7 @@ free (void *ptr)
_free_internal (ptr);
}
+#ifndef HYBRID_MALLOC
/* Define the `cfree' alias for `free'. */
#ifdef weak_alias
weak_alias (free, cfree)
@@ -1280,6 +1274,7 @@ cfree (void *ptr)
free (ptr);
}
#endif
+#endif
/* Change the size of a block allocated by `malloc'.
Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
Written May 1989 by Mike Haertel.
@@ -1305,7 +1300,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
#endif
/* Debugging hook for realloc. */
-void *(*__realloc_hook) (void *ptr, size_t size);
+static void *(*grealloc_hook) (void *, size_t);
/* Resize the given region to the new size, returning a pointer
to the (possibly moved) region. This is optimized for speed;
@@ -1449,7 +1444,7 @@ realloc (void *ptr, size_t size)
if (!__malloc_initialized && !__malloc_initialize ())
return NULL;
- hook = __realloc_hook;
+ hook = grealloc_hook;
return (hook != NULL ? *hook : _realloc_internal) (ptr, size);
}
/* Copyright (C) 1991, 1992, 1994 Free Software Foundation, Inc.
@@ -1519,11 +1514,11 @@ extern void *__sbrk (ptrdiff_t increment);
/* Allocate INCREMENT more bytes of data space,
and return the start of data space, or NULL on errors.
If INCREMENT is negative, shrink data space. */
-void *
-__default_morecore (ptrdiff_t increment)
+static void *
+gdefault_morecore (ptrdiff_t increment)
{
void *result;
-#if defined (CYGWIN)
+#ifdef HYBRID_MALLOC
if (!DUMPED)
{
return bss_sbrk (increment);
@@ -1534,6 +1529,9 @@ __default_morecore (ptrdiff_t increment)
return NULL;
return result;
}
+
+void *(*__morecore) (ptrdiff_t) = gdefault_morecore;
+
/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
This library is free software; you can redistribute it and/or
@@ -1549,17 +1547,11 @@ General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>. */
-void *(*__memalign_hook) (size_t size, size_t alignment);
-
void *
aligned_alloc (size_t alignment, size_t size)
{
void *result;
size_t adj, lastadj;
- void *(*hook) (size_t, size_t) = __memalign_hook;
-
- if (hook)
- return (*hook) (alignment, size);
/* Allocate a block with enough extra space to pad the block with up to
(ALIGNMENT - 1) bytes if necessary. */
@@ -1638,6 +1630,8 @@ aligned_alloc (size_t alignment, size_t size)
return result;
}
+/* Note that memalign and posix_memalign are not used in Emacs. */
+#ifndef HYBRID_MALLOC
/* An obsolete alias for aligned_alloc, for any old libraries that use
this alias. */
@@ -1649,7 +1643,6 @@ memalign (size_t alignment, size_t size)
/* If HYBRID_MALLOC is defined, we may want to use the system
posix_memalign below. */
-#ifndef HYBRID_MALLOC
int
posix_memalign (void **memptr, size_t alignment, size_t size)
{
@@ -1689,14 +1682,18 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
The author may be reached (Email) at the address mike@ai.mit.edu,
or (US mail) as Mike Haertel c/o Free Software Foundation. */
+#ifndef HYBRID_MALLOC
+
+# ifndef HAVE_MALLOC_H
/* Allocate SIZE bytes on a page boundary. */
extern void *valloc (size_t);
+# endif
-#if defined _SC_PAGESIZE || !defined HAVE_GETPAGESIZE
-# include "getpagesize.h"
-#elif !defined getpagesize
+# if defined _SC_PAGESIZE || !defined HAVE_GETPAGESIZE
+# include "getpagesize.h"
+# elif !defined getpagesize
extern int getpagesize (void);
-#endif
+# endif
static size_t pagesize;
@@ -1708,6 +1705,7 @@ valloc (size_t size)
return aligned_alloc (pagesize, size);
}
+#endif /* HYBRID_MALLOC */
#undef malloc
#undef realloc
@@ -1773,7 +1771,7 @@ hybrid_aligned_alloc (size_t alignment, size_t size)
#endif
}
#endif
-
+
void *
hybrid_realloc (void *ptr, size_t size)
{
@@ -1801,19 +1799,6 @@ hybrid_realloc (void *ptr, size_t size)
return result;
}
-#ifdef HYBRID_GET_CURRENT_DIR_NAME
-/* Defined in sysdep.c. */
-char *gget_current_dir_name (void);
-
-char *
-hybrid_get_current_dir_name (void)
-{
- if (DUMPED)
- return get_current_dir_name ();
- return gget_current_dir_name ();
-}
-#endif
-
#else /* ! HYBRID_MALLOC */
void *
@@ -1948,9 +1933,9 @@ freehook (void *ptr)
else
hdr = NULL;
- __free_hook = old_free_hook;
+ gfree_hook = old_free_hook;
free (hdr);
- __free_hook = freehook;
+ gfree_hook = freehook;
}
static void *
@@ -1958,9 +1943,9 @@ mallochook (size_t size)
{
struct hdr *hdr;
- __malloc_hook = old_malloc_hook;
+ gmalloc_hook = old_malloc_hook;
hdr = malloc (sizeof *hdr + size + 1);
- __malloc_hook = mallochook;
+ gmalloc_hook = mallochook;
if (hdr == NULL)
return NULL;
@@ -1986,13 +1971,13 @@ reallochook (void *ptr, size_t size)
memset ((char *) ptr + size, FREEFLOOD, osize - size);
}
- __free_hook = old_free_hook;
- __malloc_hook = old_malloc_hook;
- __realloc_hook = old_realloc_hook;
+ gfree_hook = old_free_hook;
+ gmalloc_hook = old_malloc_hook;
+ grealloc_hook = old_realloc_hook;
hdr = realloc (hdr, sizeof *hdr + size + 1);
- __free_hook = freehook;
- __malloc_hook = mallochook;
- __realloc_hook = reallochook;
+ gfree_hook = freehook;
+ gmalloc_hook = mallochook;
+ grealloc_hook = reallochook;
if (hdr == NULL)
return NULL;
@@ -2049,12 +2034,12 @@ mcheck (void (*func) (enum mcheck_status))
/* These hooks may not be safely inserted if malloc is already in use. */
if (!__malloc_initialized && !mcheck_used)
{
- old_free_hook = __free_hook;
- __free_hook = freehook;
- old_malloc_hook = __malloc_hook;
- __malloc_hook = mallochook;
- old_realloc_hook = __realloc_hook;
- __realloc_hook = reallochook;
+ old_free_hook = gfree_hook;
+ gfree_hook = freehook;
+ old_malloc_hook = gmalloc_hook;
+ gmalloc_hook = mallochook;
+ old_realloc_hook = grealloc_hook;
+ grealloc_hook = reallochook;
mcheck_used = 1;
}
diff --git a/src/gnutls.c b/src/gnutls.c
index f0354d7fed..af2ba52870 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -26,7 +26,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "coding.h"
#ifdef HAVE_GNUTLS
-#include <gnutls/gnutls.h>
#ifdef WINDOWSNT
#include <windows.h>
@@ -55,7 +54,6 @@ DEF_DLL_FN (gnutls_alert_description_t, gnutls_alert_get,
(gnutls_session_t));
DEF_DLL_FN (const char *, gnutls_alert_get_name,
(gnutls_alert_description_t));
-DEF_DLL_FN (int, gnutls_alert_send_appropriate, (gnutls_session_t, int));
DEF_DLL_FN (int, gnutls_anon_allocate_client_credentials,
(gnutls_anon_client_credentials_t *));
DEF_DLL_FN (void, gnutls_anon_free_client_credentials,
@@ -111,8 +109,6 @@ DEF_DLL_FN (ssize_t, gnutls_record_send,
(gnutls_session_t, const void *, size_t));
DEF_DLL_FN (const char *, gnutls_strerror, (int));
DEF_DLL_FN (void, gnutls_transport_set_errno, (gnutls_session_t, int));
-DEF_DLL_FN (const char *, gnutls_check_version, (const char *));
-DEF_DLL_FN (void, gnutls_transport_set_lowat, (gnutls_session_t, int));
DEF_DLL_FN (void, gnutls_transport_set_ptr2,
(gnutls_session_t, gnutls_transport_ptr_t,
gnutls_transport_ptr_t));
@@ -156,8 +152,6 @@ DEF_DLL_FN (int, gnutls_x509_crt_get_subject_unique_id,
(gnutls_x509_crt_t, char *, size_t *));
DEF_DLL_FN (int, gnutls_x509_crt_get_signature_algorithm,
(gnutls_x509_crt_t));
-DEF_DLL_FN (int, gnutls_x509_crt_get_signature,
- (gnutls_x509_crt_t, char *, size_t *));
DEF_DLL_FN (int, gnutls_x509_crt_get_key_id,
(gnutls_x509_crt_t, unsigned int, unsigned char *, size_t *_size));
DEF_DLL_FN (const char*, gnutls_sec_param_get_name, (gnutls_sec_param_t));
@@ -184,7 +178,7 @@ init_gnutls_functions (void)
HMODULE library;
int max_log_level = 1;
- if (!(library = w32_delayed_load (Qgnutls_dll)))
+ if (!(library = w32_delayed_load (Qgnutls)))
{
GNUTLS_LOG (1, max_log_level, "GnuTLS library not found");
return 0;
@@ -192,7 +186,6 @@ init_gnutls_functions (void)
LOAD_DLL_FN (library, gnutls_alert_get);
LOAD_DLL_FN (library, gnutls_alert_get_name);
- LOAD_DLL_FN (library, gnutls_alert_send_appropriate);
LOAD_DLL_FN (library, gnutls_anon_allocate_client_credentials);
LOAD_DLL_FN (library, gnutls_anon_free_client_credentials);
LOAD_DLL_FN (library, gnutls_bye);
@@ -229,11 +222,6 @@ init_gnutls_functions (void)
LOAD_DLL_FN (library, gnutls_record_send);
LOAD_DLL_FN (library, gnutls_strerror);
LOAD_DLL_FN (library, gnutls_transport_set_errno);
- LOAD_DLL_FN (library, gnutls_check_version);
- /* We don't need to call gnutls_transport_set_lowat in GnuTLS 2.11.1
- and later, and the function was removed entirely in 3.0.0. */
- if (!fn_gnutls_check_version ("2.11.1"))
- LOAD_DLL_FN (library, gnutls_transport_set_lowat);
LOAD_DLL_FN (library, gnutls_transport_set_ptr2);
LOAD_DLL_FN (library, gnutls_transport_set_pull_function);
LOAD_DLL_FN (library, gnutls_transport_set_push_function);
@@ -255,7 +243,6 @@ init_gnutls_functions (void)
LOAD_DLL_FN (library, gnutls_x509_crt_get_issuer_unique_id);
LOAD_DLL_FN (library, gnutls_x509_crt_get_subject_unique_id);
LOAD_DLL_FN (library, gnutls_x509_crt_get_signature_algorithm);
- LOAD_DLL_FN (library, gnutls_x509_crt_get_signature);
LOAD_DLL_FN (library, gnutls_x509_crt_get_key_id);
LOAD_DLL_FN (library, gnutls_sec_param_get_name);
LOAD_DLL_FN (library, gnutls_sign_get_name);
@@ -272,7 +259,7 @@ init_gnutls_functions (void)
max_log_level = global_gnutls_log_level;
{
- Lisp_Object name = CAR_SAFE (Fget (Qgnutls_dll, QCloaded_from));
+ Lisp_Object name = CAR_SAFE (Fget (Qgnutls, QCloaded_from));
GNUTLS_LOG2 (1, max_log_level, "GnuTLS library loaded:",
STRINGP (name) ? (const char *) SDATA (name) : "unknown");
}
@@ -282,7 +269,6 @@ init_gnutls_functions (void)
# define gnutls_alert_get fn_gnutls_alert_get
# define gnutls_alert_get_name fn_gnutls_alert_get_name
-# define gnutls_alert_send_appropriate fn_gnutls_alert_send_appropriate
# define gnutls_anon_allocate_client_credentials fn_gnutls_anon_allocate_client_credentials
# define gnutls_anon_free_client_credentials fn_gnutls_anon_free_client_credentials
# define gnutls_bye fn_gnutls_bye
@@ -296,7 +282,6 @@ init_gnutls_functions (void)
# define gnutls_certificate_set_x509_trust_file fn_gnutls_certificate_set_x509_trust_file
# define gnutls_certificate_type_get fn_gnutls_certificate_type_get
# define gnutls_certificate_verify_peers2 fn_gnutls_certificate_verify_peers2
-# define gnutls_check_version fn_gnutls_check_version
# define gnutls_cipher_get fn_gnutls_cipher_get
# define gnutls_cipher_get_name fn_gnutls_cipher_get_name
# define gnutls_credentials_set fn_gnutls_credentials_set
@@ -327,7 +312,6 @@ init_gnutls_functions (void)
# define gnutls_sign_get_name fn_gnutls_sign_get_name
# define gnutls_strerror fn_gnutls_strerror
# define gnutls_transport_set_errno fn_gnutls_transport_set_errno
-# define gnutls_transport_set_lowat fn_gnutls_transport_set_lowat
# define gnutls_transport_set_ptr2 fn_gnutls_transport_set_ptr2
# define gnutls_transport_set_pull_function fn_gnutls_transport_set_pull_function
# define gnutls_transport_set_push_function fn_gnutls_transport_set_push_function
@@ -343,7 +327,6 @@ init_gnutls_functions (void)
# define gnutls_x509_crt_get_key_id fn_gnutls_x509_crt_get_key_id
# define gnutls_x509_crt_get_pk_algorithm fn_gnutls_x509_crt_get_pk_algorithm
# define gnutls_x509_crt_get_serial fn_gnutls_x509_crt_get_serial
-# define gnutls_x509_crt_get_signature fn_gnutls_x509_crt_get_signature
# define gnutls_x509_crt_get_signature_algorithm fn_gnutls_x509_crt_get_signature_algorithm
# define gnutls_x509_crt_get_subject_unique_id fn_gnutls_x509_crt_get_subject_unique_id
# define gnutls_x509_crt_get_version fn_gnutls_x509_crt_get_version
@@ -390,18 +373,72 @@ gnutls_log_function2 (int level, const char *string, const char *extra)
message ("gnutls.c: [%d] %s %s", level, string, extra);
}
-/* Log a message and an integer. */
-static void
-gnutls_log_function2i (int level, const char *string, int extra)
+int
+gnutls_try_handshake (struct Lisp_Process *proc)
{
- message ("gnutls.c: [%d] %s %d", level, string, extra);
+ gnutls_session_t state = proc->gnutls_state;
+ int ret;
+ bool non_blocking = proc->is_non_blocking_client;
+
+ if (proc->gnutls_complete_negotiation_p)
+ non_blocking = false;
+
+ if (non_blocking)
+ proc->gnutls_p = true;
+
+ do
+ {
+ ret = gnutls_handshake (state);
+ emacs_gnutls_handle_error (state, ret);
+ QUIT;
+ }
+ while (ret < 0
+ && gnutls_error_is_fatal (ret) == 0
+ && ! non_blocking);
+
+ proc->gnutls_initstage = GNUTLS_STAGE_HANDSHAKE_TRIED;
+
+ if (ret == GNUTLS_E_SUCCESS)
+ {
+ /* Here we're finally done. */
+ proc->gnutls_initstage = GNUTLS_STAGE_READY;
+ }
+ else
+ {
+ /* check_memory_full (gnutls_alert_send_appropriate (state, ret)); */
+ }
+ return ret;
}
+#ifndef WINDOWSNT
+static int
+emacs_gnutls_nonblock_errno (gnutls_transport_ptr_t ptr)
+{
+ int err = errno;
+
+ switch (err)
+ {
+# ifdef _AIX
+ /* This is taken from the GnuTLS system_errno function circa 2016;
+ see <http://savannah.gnu.org/support/?107464>. */
+ case 0:
+ errno = EAGAIN;
+ /* Fall through. */
+# endif
+ case EINPROGRESS:
+ case ENOTCONN:
+ return EAGAIN;
+
+ default:
+ return err;
+ }
+}
+#endif
+
static int
emacs_gnutls_handshake (struct Lisp_Process *proc)
{
gnutls_session_t state = proc->gnutls_state;
- int ret;
if (proc->gnutls_initstage < GNUTLS_STAGE_HANDSHAKE_CANDO)
return -1;
@@ -417,20 +454,6 @@ emacs_gnutls_handshake (struct Lisp_Process *proc)
(gnutls_transport_ptr_t) proc);
gnutls_transport_set_push_function (state, &emacs_gnutls_push);
gnutls_transport_set_pull_function (state, &emacs_gnutls_pull);
-
- /* For non blocking sockets or other custom made pull/push
- functions the gnutls_transport_set_lowat must be called, with
- a zero low water mark value. (GnuTLS 2.10.4 documentation)
-
- (Note: this is probably not strictly necessary as the lowat
- value is only used when no custom pull/push functions are
- set.) */
- /* According to GnuTLS NEWS file, lowat level has been set to
- zero by default in version 2.11.1, and the function
- gnutls_transport_set_lowat was removed from the library in
- version 2.99.0. */
- if (!gnutls_check_version ("2.11.1"))
- gnutls_transport_set_lowat (state, 0);
#else
/* This is how GnuTLS takes sockets: as file descriptors passed
in. For an Emacs process socket, infd and outfd are the
@@ -438,31 +461,15 @@ emacs_gnutls_handshake (struct Lisp_Process *proc)
gnutls_transport_set_ptr2 (state,
(void *) (intptr_t) proc->infd,
(void *) (intptr_t) proc->outfd);
+ if (proc->is_non_blocking_client)
+ gnutls_transport_set_errno_function (state,
+ emacs_gnutls_nonblock_errno);
#endif
proc->gnutls_initstage = GNUTLS_STAGE_TRANSPORT_POINTERS_SET;
}
- do
- {
- ret = gnutls_handshake (state);
- emacs_gnutls_handle_error (state, ret);
- QUIT;
- }
- while (ret < 0 && gnutls_error_is_fatal (ret) == 0);
-
- proc->gnutls_initstage = GNUTLS_STAGE_HANDSHAKE_TRIED;
-
- if (ret == GNUTLS_E_SUCCESS)
- {
- /* Here we're finally done. */
- proc->gnutls_initstage = GNUTLS_STAGE_READY;
- }
- else
- {
- check_memory_full (gnutls_alert_send_appropriate (state, ret));
- }
- return ret;
+ return gnutls_try_handshake (proc);
}
ptrdiff_t
@@ -528,26 +535,12 @@ emacs_gnutls_read (struct Lisp_Process *proc, char *buf, ptrdiff_t nbyte)
ssize_t rtnval;
gnutls_session_t state = proc->gnutls_state;
- int log_level = proc->gnutls_log_level;
-
if (proc->gnutls_initstage != GNUTLS_STAGE_READY)
{
- /* If the handshake count is under the limit, try the handshake
- again and increment the handshake count. This count is kept
- per process (connection), not globally. */
- if (proc->gnutls_handshakes_tried < GNUTLS_EMACS_HANDSHAKES_LIMIT)
- {
- proc->gnutls_handshakes_tried++;
- emacs_gnutls_handshake (proc);
- GNUTLS_LOG2i (5, log_level, "Retried handshake",
- proc->gnutls_handshakes_tried);
- return -1;
- }
-
- GNUTLS_LOG (2, log_level, "Giving up on handshake; resetting retries");
- proc->gnutls_handshakes_tried = 0;
- return 0;
+ errno = EAGAIN;
+ return -1;
}
+
rtnval = gnutls_record_recv (state, buf, nbyte);
if (rtnval >= 0)
return rtnval;
@@ -655,7 +648,7 @@ emacs_gnutls_deinit (Lisp_Object proc)
CHECK_PROCESS (proc);
- if (XPROCESS (proc)->gnutls_p == 0)
+ if (! XPROCESS (proc)->gnutls_p)
return Qnil;
log_level = XPROCESS (proc)->gnutls_log_level;
@@ -682,10 +675,23 @@ emacs_gnutls_deinit (Lisp_Object proc)
GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_INIT - 1;
}
- XPROCESS (proc)->gnutls_p = 0;
+ XPROCESS (proc)->gnutls_p = false;
return Qt;
}
+DEFUN ("gnutls-asynchronous-parameters", Fgnutls_asynchronous_parameters,
+ Sgnutls_asynchronous_parameters, 2, 2, 0,
+ doc: /* Mark this process as being a pre-init GnuTLS process.
+The second parameter is the list of parameters to feed to gnutls-boot
+to finish setting up the connection. */)
+ (Lisp_Object proc, Lisp_Object params)
+{
+ CHECK_PROCESS (proc);
+
+ XPROCESS (proc)->gnutls_boot_parameters = params;
+ return Qnil;
+}
+
DEFUN ("gnutls-get-initstage", Fgnutls_get_initstage, Sgnutls_get_initstage, 1, 1, 0,
doc: /* Return the GnuTLS init stage of process PROC.
See also `gnutls-boot'. */)
@@ -703,7 +709,9 @@ usage: (gnutls-errorp ERROR) */
attributes: const)
(Lisp_Object err)
{
- if (EQ (err, Qt)) return Qnil;
+ if (EQ (err, Qt)
+ || EQ (err, Qgnutls_e_again))
+ return Qnil;
return Qt;
}
@@ -874,8 +882,6 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
xfree (dn);
}
- /* Versions older than 2.11 doesn't have these four functions. */
-#if GNUTLS_VERSION_NUMBER >= 0x020b00
/* SubjectPublicKeyInfo. */
{
unsigned int bits;
@@ -924,7 +930,6 @@ gnutls_certificate_details (gnutls_x509_crt_t cert)
make_string (buf, buf_size)));
xfree (buf);
}
-#endif
/* Signature. */
err = gnutls_x509_crt_get_signature_algorithm (cert);
@@ -1022,7 +1027,7 @@ The return value is a property list with top-level keys :warnings and
CHECK_PROCESS (proc);
- if (GNUTLS_INITSTAGE (proc) < GNUTLS_STAGE_INIT)
+ if (GNUTLS_INITSTAGE (proc) != GNUTLS_STAGE_READY)
return Qnil;
/* Then collect any warnings already computed by the handshake. */
@@ -1154,6 +1159,160 @@ emacs_gnutls_global_deinit (void)
}
#endif
+static void ATTRIBUTE_FORMAT_PRINTF (2, 3)
+boot_error (struct Lisp_Process *p, const char *m, ...)
+{
+ va_list ap;
+ va_start (ap, m);
+ if (p->is_non_blocking_client)
+ pset_status (p, list2 (Qfailed, vformat_string (m, ap)));
+ else
+ verror (m, ap);
+ va_end (ap);
+}
+
+Lisp_Object
+gnutls_verify_boot (Lisp_Object proc, Lisp_Object proplist)
+{
+ int ret;
+ struct Lisp_Process *p = XPROCESS (proc);
+ gnutls_session_t state = p->gnutls_state;
+ unsigned int peer_verification;
+ Lisp_Object warnings;
+ int max_log_level = p->gnutls_log_level;
+ Lisp_Object hostname, verify_error;
+ bool verify_error_all = false;
+ char *c_hostname;
+
+ if (NILP (proplist))
+ proplist = Fcdr (Fplist_get (p->childp, QCtls_parameters));
+
+ verify_error = Fplist_get (proplist, QCverify_error);
+ hostname = Fplist_get (proplist, QChostname);
+
+ if (EQ (verify_error, Qt))
+ verify_error_all = true;
+ else if (NILP (Flistp (verify_error)))
+ {
+ boot_error (p,
+ "gnutls-boot: invalid :verify_error parameter (not a list)");
+ return Qnil;
+ }
+
+ if (!STRINGP (hostname))
+ {
+ boot_error (p, "gnutls-boot: invalid :hostname parameter (not a string)");
+ return Qnil;
+ }
+ c_hostname = SSDATA (hostname);
+
+ /* Now verify the peer, following
+ http://www.gnu.org/software/gnutls/manual/html_node/Verifying-peer_0027s-certificate.html.
+ The peer should present at least one certificate in the chain; do a
+ check of the certificate's hostname with
+ gnutls_x509_crt_check_hostname against :hostname. */
+
+ ret = gnutls_certificate_verify_peers2 (state, &peer_verification);
+ if (ret < GNUTLS_E_SUCCESS)
+ return gnutls_make_error (ret);
+
+ XPROCESS (proc)->gnutls_peer_verification = peer_verification;
+
+ warnings = Fplist_get (Fgnutls_peer_status (proc), intern (":warnings"));
+ if (!NILP (warnings))
+ {
+ for (Lisp_Object tail = warnings; CONSP (tail); tail = XCDR (tail))
+ {
+ Lisp_Object warning = XCAR (tail);
+ Lisp_Object message = Fgnutls_peer_status_warning_describe (warning);
+ if (!NILP (message))
+ GNUTLS_LOG2 (1, max_log_level, "verification:", SSDATA (message));
+ }
+ }
+
+ if (peer_verification != 0)
+ {
+ if (verify_error_all
+ || !NILP (Fmember (QCtrustfiles, verify_error)))
+ {
+ emacs_gnutls_deinit (proc);
+ boot_error (p,
+ "Certificate validation failed %s, verification code %x",
+ c_hostname, peer_verification);
+ return Qnil;
+ }
+ else
+ {
+ GNUTLS_LOG2 (1, max_log_level, "certificate validation failed:",
+ c_hostname);
+ }
+ }
+
+ /* Up to here the process is the same for X.509 certificates and
+ OpenPGP keys. From now on X.509 certificates are assumed. This
+ can be easily extended to work with openpgp keys as well. */
+ if (gnutls_certificate_type_get (state) == GNUTLS_CRT_X509)
+ {
+ gnutls_x509_crt_t gnutls_verify_cert;
+ const gnutls_datum_t *gnutls_verify_cert_list;
+ unsigned int gnutls_verify_cert_list_size;
+
+ ret = gnutls_x509_crt_init (&gnutls_verify_cert);
+ if (ret < GNUTLS_E_SUCCESS)
+ return gnutls_make_error (ret);
+
+ gnutls_verify_cert_list
+ = gnutls_certificate_get_peers (state, &gnutls_verify_cert_list_size);
+
+ if (gnutls_verify_cert_list == NULL)
+ {
+ gnutls_x509_crt_deinit (gnutls_verify_cert);
+ emacs_gnutls_deinit (proc);
+ boot_error (p, "No x509 certificate was found\n");
+ return Qnil;
+ }
+
+ /* Check only the first certificate in the given chain. */
+ ret = gnutls_x509_crt_import (gnutls_verify_cert,
+ &gnutls_verify_cert_list[0],
+ GNUTLS_X509_FMT_DER);
+
+ if (ret < GNUTLS_E_SUCCESS)
+ {
+ gnutls_x509_crt_deinit (gnutls_verify_cert);
+ return gnutls_make_error (ret);
+ }
+
+ XPROCESS (proc)->gnutls_certificate = gnutls_verify_cert;
+
+ int err = gnutls_x509_crt_check_hostname (gnutls_verify_cert,
+ c_hostname);
+ check_memory_full (err);
+ if (!err)
+ {
+ XPROCESS (proc)->gnutls_extra_peer_verification
+ |= CERTIFICATE_NOT_MATCHING;
+ if (verify_error_all
+ || !NILP (Fmember (QChostname, verify_error)))
+ {
+ gnutls_x509_crt_deinit (gnutls_verify_cert);
+ emacs_gnutls_deinit (proc);
+ boot_error (p, "The x509 certificate does not match \"%s\"",
+ c_hostname);
+ return Qnil;
+ }
+ else
+ GNUTLS_LOG2 (1, max_log_level, "x509 certificate does not match:",
+ c_hostname);
+ }
+ }
+
+ /* Set this flag only if the whole initialization succeeded. */
+ XPROCESS (proc)->gnutls_p = true;
+
+ return gnutls_make_error (ret);
+}
+
DEFUN ("gnutls-boot", Fgnutls_boot, Sgnutls_boot, 3, 3, 0,
doc: /* Initialize GnuTLS client for process PROC with TYPE+PROPLIST.
Currently only client mode is supported. Return a success/failure
@@ -1190,6 +1349,9 @@ t to do all checks. Currently it can contain `:trustfiles' and
:min-prime-bits is the minimum accepted number of bits the client will
accept in Diffie-Hellman key exchange.
+:complete-negotiation, if non-nil, will make negotiation complete
+before returning even on non-blocking sockets.
+
The debug level will be set for this process AND globally for GnuTLS.
So if you set it higher or lower at any point, it affects global
debugging.
@@ -1212,14 +1374,12 @@ one trustfile (usually a CA bundle). */)
{
int ret = GNUTLS_E_SUCCESS;
int max_log_level = 0;
- bool verify_error_all = 0;
gnutls_session_t state;
gnutls_certificate_credentials_t x509_cred = NULL;
gnutls_anon_client_credentials_t anon_cred = NULL;
Lisp_Object global_init;
char const *priority_string_ptr = "NORMAL"; /* default priority string. */
- unsigned int peer_verification;
char *c_hostname;
/* Placeholders for the property list elements. */
@@ -1230,40 +1390,38 @@ one trustfile (usually a CA bundle). */)
/* Lisp_Object callbacks; */
Lisp_Object loglevel;
Lisp_Object hostname;
- Lisp_Object verify_error;
Lisp_Object prime_bits;
- Lisp_Object warnings;
+ struct Lisp_Process *p = XPROCESS (proc);
CHECK_PROCESS (proc);
CHECK_SYMBOL (type);
CHECK_LIST (proplist);
if (NILP (Fgnutls_available_p ()))
- error ("GnuTLS not available");
-
- if (!EQ (type, Qgnutls_x509pki) && !EQ (type, Qgnutls_anon))
- error ("Invalid GnuTLS credential type");
-
- hostname = Fplist_get (proplist, QCgnutls_bootprop_hostname);
- priority_string = Fplist_get (proplist, QCgnutls_bootprop_priority);
- trustfiles = Fplist_get (proplist, QCgnutls_bootprop_trustfiles);
- keylist = Fplist_get (proplist, QCgnutls_bootprop_keylist);
- crlfiles = Fplist_get (proplist, QCgnutls_bootprop_crlfiles);
- loglevel = Fplist_get (proplist, QCgnutls_bootprop_loglevel);
- verify_error = Fplist_get (proplist, QCgnutls_bootprop_verify_error);
- prime_bits = Fplist_get (proplist, QCgnutls_bootprop_min_prime_bits);
-
- if (EQ (verify_error, Qt))
{
- verify_error_all = 1;
+ boot_error (p, "GnuTLS not available");
+ return Qnil;
}
- else if (NILP (Flistp (verify_error)))
+
+ if (!EQ (type, Qgnutls_x509pki) && !EQ (type, Qgnutls_anon))
{
- error ("gnutls-boot: invalid :verify_error parameter (not a list)");
+ boot_error (p, "Invalid GnuTLS credential type");
+ return Qnil;
}
+ hostname = Fplist_get (proplist, QChostname);
+ priority_string = Fplist_get (proplist, QCpriority);
+ trustfiles = Fplist_get (proplist, QCtrustfiles);
+ keylist = Fplist_get (proplist, QCkeylist);
+ crlfiles = Fplist_get (proplist, QCcrlfiles);
+ loglevel = Fplist_get (proplist, QCloglevel);
+ prime_bits = Fplist_get (proplist, QCmin_prime_bits);
+
if (!STRINGP (hostname))
- error ("gnutls-boot: invalid :hostname parameter (not a string)");
+ {
+ boot_error (p, "gnutls-boot: invalid :hostname parameter (not a string)");
+ return Qnil;
+ }
c_hostname = SSDATA (hostname);
state = XPROCESS (proc)->gnutls_state;
@@ -1307,7 +1465,7 @@ one trustfile (usually a CA bundle). */)
check_memory_full (gnutls_certificate_allocate_credentials (&x509_cred));
XPROCESS (proc)->gnutls_x509_cred = x509_cred;
- verify_flags = Fplist_get (proplist, QCgnutls_bootprop_verify_flags);
+ verify_flags = Fplist_get (proplist, QCverify_flags);
if (NUMBERP (verify_flags))
{
gnutls_verify_flags = XINT (verify_flags);
@@ -1371,7 +1529,8 @@ one trustfile (usually a CA bundle). */)
else
{
emacs_gnutls_deinit (proc);
- error ("Invalid trustfile");
+ boot_error (p, "Invalid trustfile");
+ return Qnil;
}
}
@@ -1395,7 +1554,8 @@ one trustfile (usually a CA bundle). */)
else
{
emacs_gnutls_deinit (proc);
- error ("Invalid CRL file");
+ boot_error (p, "Invalid CRL file");
+ return Qnil;
}
}
@@ -1424,8 +1584,9 @@ one trustfile (usually a CA bundle). */)
else
{
emacs_gnutls_deinit (proc);
- error (STRINGP (keyfile) ? "Invalid client cert file"
- : "Invalid client key file");
+ boot_error (p, STRINGP (keyfile) ? "Invalid client cert file"
+ : "Invalid client key file");
+ return Qnil;
}
}
}
@@ -1437,7 +1598,12 @@ one trustfile (usually a CA bundle). */)
/* Call gnutls_init here: */
GNUTLS_LOG (1, max_log_level, "gnutls_init");
- ret = gnutls_init (&state, GNUTLS_CLIENT);
+ int gnutls_flags = GNUTLS_CLIENT;
+#ifdef GNUTLS_NONBLOCK
+ if (XPROCESS (proc)->is_non_blocking_client)
+ gnutls_flags |= GNUTLS_NONBLOCK;
+#endif
+ ret = gnutls_init (&state, gnutls_flags);
XPROCESS (proc)->gnutls_state = state;
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
@@ -1479,114 +1645,14 @@ one trustfile (usually a CA bundle). */)
return gnutls_make_error (ret);
}
+ XPROCESS (proc)->gnutls_complete_negotiation_p =
+ !NILP (Fplist_get (proplist, QCcomplete_negotiation));
GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_CRED_SET;
ret = emacs_gnutls_handshake (XPROCESS (proc));
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
- /* Now verify the peer, following
- http://www.gnu.org/software/gnutls/manual/html_node/Verifying-peer_0027s-certificate.html.
- The peer should present at least one certificate in the chain; do a
- check of the certificate's hostname with
- gnutls_x509_crt_check_hostname against :hostname. */
-
- ret = gnutls_certificate_verify_peers2 (state, &peer_verification);
- if (ret < GNUTLS_E_SUCCESS)
- return gnutls_make_error (ret);
-
- XPROCESS (proc)->gnutls_peer_verification = peer_verification;
-
- warnings = Fplist_get (Fgnutls_peer_status (proc), intern (":warnings"));
- if (!NILP (warnings))
- {
- Lisp_Object tail;
- for (tail = warnings; CONSP (tail); tail = XCDR (tail))
- {
- Lisp_Object warning = XCAR (tail);
- Lisp_Object message = Fgnutls_peer_status_warning_describe (warning);
- if (!NILP (message))
- GNUTLS_LOG2 (1, max_log_level, "verification:", SSDATA (message));
- }
- }
-
- if (peer_verification != 0)
- {
- if (verify_error_all
- || !NILP (Fmember (QCgnutls_bootprop_trustfiles, verify_error)))
- {
- emacs_gnutls_deinit (proc);
- error ("Certificate validation failed %s, verification code %x",
- c_hostname, peer_verification);
- }
- else
- {
- GNUTLS_LOG2 (1, max_log_level, "certificate validation failed:",
- c_hostname);
- }
- }
-
- /* Up to here the process is the same for X.509 certificates and
- OpenPGP keys. From now on X.509 certificates are assumed. This
- can be easily extended to work with openpgp keys as well. */
- if (gnutls_certificate_type_get (state) == GNUTLS_CRT_X509)
- {
- gnutls_x509_crt_t gnutls_verify_cert;
- const gnutls_datum_t *gnutls_verify_cert_list;
- unsigned int gnutls_verify_cert_list_size;
-
- ret = gnutls_x509_crt_init (&gnutls_verify_cert);
- if (ret < GNUTLS_E_SUCCESS)
- return gnutls_make_error (ret);
-
- gnutls_verify_cert_list =
- gnutls_certificate_get_peers (state, &gnutls_verify_cert_list_size);
-
- if (gnutls_verify_cert_list == NULL)
- {
- gnutls_x509_crt_deinit (gnutls_verify_cert);
- emacs_gnutls_deinit (proc);
- error ("No x509 certificate was found\n");
- }
-
- /* We only check the first certificate in the given chain. */
- ret = gnutls_x509_crt_import (gnutls_verify_cert,
- &gnutls_verify_cert_list[0],
- GNUTLS_X509_FMT_DER);
-
- if (ret < GNUTLS_E_SUCCESS)
- {
- gnutls_x509_crt_deinit (gnutls_verify_cert);
- return gnutls_make_error (ret);
- }
-
- XPROCESS (proc)->gnutls_certificate = gnutls_verify_cert;
-
- int err = gnutls_x509_crt_check_hostname (gnutls_verify_cert,
- c_hostname);
- check_memory_full (err);
- if (!err)
- {
- XPROCESS (proc)->gnutls_extra_peer_verification |=
- CERTIFICATE_NOT_MATCHING;
- if (verify_error_all
- || !NILP (Fmember (QCgnutls_bootprop_hostname, verify_error)))
- {
- gnutls_x509_crt_deinit (gnutls_verify_cert);
- emacs_gnutls_deinit (proc);
- error ("The x509 certificate does not match \"%s\"", c_hostname);
- }
- else
- {
- GNUTLS_LOG2 (1, max_log_level, "x509 certificate does not match:",
- c_hostname);
- }
- }
- }
-
- /* Set this flag only if the whole initialization succeeded. */
- XPROCESS (proc)->gnutls_p = 1;
-
- return gnutls_make_error (ret);
+ return gnutls_verify_boot (proc, proplist);
}
DEFUN ("gnutls-bye", Fgnutls_bye,
@@ -1627,14 +1693,14 @@ DEFUN ("gnutls-available-p", Fgnutls_available_p, Sgnutls_available_p, 0, 0, 0,
{
#ifdef HAVE_GNUTLS
# ifdef WINDOWSNT
- Lisp_Object found = Fassq (Qgnutls_dll, Vlibrary_cache);
+ Lisp_Object found = Fassq (Qgnutls, Vlibrary_cache);
if (CONSP (found))
return XCDR (found);
else
{
Lisp_Object status;
status = init_gnutls_functions () ? Qt : Qnil;
- Vlibrary_cache = Fcons (Fcons (Qgnutls_dll, status), Vlibrary_cache);
+ Vlibrary_cache = Fcons (Fcons (Qgnutls, status), Vlibrary_cache);
return status;
}
# else /* !WINDOWSNT */
@@ -1666,15 +1732,16 @@ syms_of_gnutls (void)
DEFSYM (Qgnutls_x509pki, "gnutls-x509pki");
/* The following are for the property list of 'gnutls-boot'. */
- DEFSYM (QCgnutls_bootprop_hostname, ":hostname");
- DEFSYM (QCgnutls_bootprop_priority, ":priority");
- DEFSYM (QCgnutls_bootprop_trustfiles, ":trustfiles");
- DEFSYM (QCgnutls_bootprop_keylist, ":keylist");
- DEFSYM (QCgnutls_bootprop_crlfiles, ":crlfiles");
- DEFSYM (QCgnutls_bootprop_min_prime_bits, ":min-prime-bits");
- DEFSYM (QCgnutls_bootprop_loglevel, ":loglevel");
- DEFSYM (QCgnutls_bootprop_verify_flags, ":verify-flags");
- DEFSYM (QCgnutls_bootprop_verify_error, ":verify-error");
+ DEFSYM (QChostname, ":hostname");
+ DEFSYM (QCpriority, ":priority");
+ DEFSYM (QCtrustfiles, ":trustfiles");
+ DEFSYM (QCkeylist, ":keylist");
+ DEFSYM (QCcrlfiles, ":crlfiles");
+ DEFSYM (QCmin_prime_bits, ":min-prime-bits");
+ DEFSYM (QCloglevel, ":loglevel");
+ DEFSYM (QCcomplete_negotiation, ":complete-negotiation");
+ DEFSYM (QCverify_flags, ":verify-flags");
+ DEFSYM (QCverify_error, ":verify-error");
DEFSYM (Qgnutls_e_interrupted, "gnutls-e-interrupted");
Fput (Qgnutls_e_interrupted, Qgnutls_code,
@@ -1693,6 +1760,7 @@ syms_of_gnutls (void)
make_number (GNUTLS_E_APPLICATION_ERROR_MIN));
defsubr (&Sgnutls_get_initstage);
+ defsubr (&Sgnutls_asynchronous_parameters);
defsubr (&Sgnutls_errorp);
defsubr (&Sgnutls_error_fatalp);
defsubr (&Sgnutls_error_string);
diff --git a/src/gnutls.h b/src/gnutls.h
index e9348e7423..41769a47f5 100644
--- a/src/gnutls.h
+++ b/src/gnutls.h
@@ -25,8 +25,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "lisp.h"
-/* This limits the attempts to handshake per process (connection). */
-#define GNUTLS_EMACS_HANDSHAKES_LIMIT 100
+/* This limits the attempts to handshake per process (connection). It
+ should work out to about one minute in asynchronous cases. */
+#define GNUTLS_EMACS_HANDSHAKES_LIMIT 6000
typedef enum
{
@@ -70,7 +71,7 @@ typedef enum
#define GNUTLS_LOG2i(level, max, string, extra) \
do { \
if ((level) <= (max)) \
- gnutls_log_function2i (level, "(Emacs) " string, extra); \
+ message ("gnutls.c: [%d] %s %d", level, string, extra); \
} while (false)
extern ptrdiff_t
@@ -84,6 +85,8 @@ extern void emacs_gnutls_transport_set_errno (gnutls_session_t state, int err);
#endif
extern Lisp_Object emacs_gnutls_deinit (Lisp_Object);
extern Lisp_Object emacs_gnutls_global_init (void);
+extern int gnutls_try_handshake (struct Lisp_Process *p);
+extern Lisp_Object gnutls_verify_boot (Lisp_Object proc, Lisp_Object proplist);
#endif
diff --git a/src/gtkutil.c b/src/gtkutil.c
index e791e6ac31..88e6d30bd9 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -1829,7 +1829,8 @@ xg_get_file_with_chooser (struct frame *f,
{
char msgbuf[1024];
- GtkWidget *filewin, *wtoggle, *wbox, *wmessage IF_LINT (= NULL);
+ GtkWidget *filewin, *wtoggle, *wbox;
+ GtkWidget *wmessage UNINIT;
GtkWindow *gwin = GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f));
GtkFileChooserAction action = (mustmatch_p ?
GTK_FILE_CHOOSER_ACTION_OPEN :
diff --git a/src/image.c b/src/image.c
index a85d5149e7..7a554ef1b6 100644
--- a/src/image.c
+++ b/src/image.c
@@ -56,6 +56,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include TERM_HEADER
#endif /* HAVE_WINDOW_SYSTEM */
+/* Work around GCC bug 54561. */
+#if GNUC_PREREQ (4, 3, 0)
+# pragma GCC diagnostic ignored "-Wclobbered"
+#endif
+
#ifdef HAVE_X_WINDOWS
typedef struct x_bitmap_record Bitmap_Record;
#define GET_PIXEL(ximg, x, y) XGetPixel (ximg, x, y)
@@ -80,7 +85,6 @@ typedef struct w32_bitmap_record Bitmap_Record;
#define PIX_MASK_DRAW 1
#define x_defined_color w32_defined_color
-#define DefaultDepthOfScreen(screen) (one_w32_display_info.n_cbits)
#endif /* HAVE_NTGUI */
@@ -223,6 +227,7 @@ x_create_bitmap_from_data (struct frame *f, char *bits, unsigned int width, unsi
#endif /* HAVE_X_WINDOWS */
#ifdef HAVE_NTGUI
+ Lisp_Object frame UNINIT; /* The value is not used. */
Pixmap bitmap;
bitmap = CreateBitmap (width, height,
FRAME_DISPLAY_INFO (XFRAME (frame))->n_planes,
@@ -270,11 +275,11 @@ x_create_bitmap_from_data (struct frame *f, char *bits, unsigned int width, unsi
ptrdiff_t
x_create_bitmap_from_file (struct frame *f, Lisp_Object file)
{
- Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
-
#ifdef HAVE_NTGUI
return -1; /* W32_TODO : bitmap support */
-#endif /* HAVE_NTGUI */
+#else
+ Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f);
+#endif
#ifdef HAVE_NS
ptrdiff_t id;
@@ -1142,7 +1147,8 @@ static RGB_PIXEL_COLOR
four_corners_best (XImagePtr_or_DC ximg, int *corners,
unsigned long width, unsigned long height)
{
- RGB_PIXEL_COLOR corner_pixels[4], best IF_LINT (= 0);
+ RGB_PIXEL_COLOR corner_pixels[4];
+ RGB_PIXEL_COLOR best UNINIT;
int i, best_count;
if (corners && corners[BOT_CORNER] >= 0)
@@ -2300,7 +2306,7 @@ x_find_image_fd (Lisp_Object file, int *pfd)
happens, e.g., under Auto Image File Mode.) 'openp'
didn't open the file, so we should, because the caller
expects that. */
- fd = emacs_open (SSDATA (file_found), O_RDONLY | O_BINARY, 0);
+ fd = emacs_open (SSDATA (file_found), O_RDONLY, 0);
}
}
else /* fd < 0, but not -2 */
@@ -3158,16 +3164,18 @@ static bool xpm_load (struct frame *f, struct image *img);
#define XColor xpm_XColor
#define XImage xpm_XImage
#define Display xpm_Display
-#define PIXEL_ALREADY_TYPEDEFED
+#ifdef CYGWIN
+#include "noX/xpm.h"
+#else /* not CYGWIN */
#include "X11/xpm.h"
+#endif /* not CYGWIN */
#undef FOR_MSW
#undef XColor
#undef XImage
#undef Display
-#undef PIXEL_ALREADY_TYPEDEFED
-#else
+#else /* not HAVE_NTGUI */
#include "X11/xpm.h"
-#endif /* HAVE_NTGUI */
+#endif /* not HAVE_NTGUI */
#endif /* HAVE_XPM */
#if defined (HAVE_XPM) || defined (HAVE_NS)
@@ -3677,7 +3685,7 @@ xpm_load (struct frame *f, struct image *img)
#endif
/* XpmReadFileToPixmap is not available in the Windows port of
libxpm. But XpmReadFileToImage almost does what we want. */
- rc = XpmReadFileToImage (&hdc, SDATA (file),
+ rc = XpmReadFileToImage (&hdc, SSDATA (file),
&xpm_image, &xpm_mask,
&attrs);
#else
@@ -3701,7 +3709,7 @@ xpm_load (struct frame *f, struct image *img)
#ifdef HAVE_NTGUI
/* XpmCreatePixmapFromBuffer is not available in the Windows port
of libxpm. But XpmCreateImageFromBuffer almost does what we want. */
- rc = XpmCreateImageFromBuffer (&hdc, SDATA (buffer),
+ rc = XpmCreateImageFromBuffer (&hdc, SSDATA (buffer),
&xpm_image, &xpm_mask,
&attrs);
#else
@@ -5894,13 +5902,12 @@ struct png_load_context
static bool
png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
{
- Lisp_Object specified_file;
- Lisp_Object specified_data;
+ Lisp_Object specified_file, specified_data;
+ FILE *fp = NULL;
int x, y;
ptrdiff_t i;
png_struct *png_ptr;
png_info *info_ptr = NULL, *end_info = NULL;
- FILE *fp = NULL;
png_byte sig[8];
png_byte *pixels = NULL;
png_byte **rows = NULL;
@@ -5922,7 +5929,6 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
/* Find out what file to load. */
specified_file = image_spec_value (img->spec, QCfile, NULL);
specified_data = image_spec_value (img->spec, QCdata, NULL);
- IF_LINT (Lisp_Object volatile specified_data_volatile = specified_data);
if (NILP (specified_data))
{
@@ -6018,10 +6024,6 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
return 0;
}
- /* Silence a bogus diagnostic; see GCC bug 54561. */
- IF_LINT (fp = c->fp);
- IF_LINT (specified_data = specified_data_volatile);
-
/* Read image info. */
if (!NILP (specified_data))
png_set_read_fn (png_ptr, &tbr, png_read_from_memory);
@@ -6671,10 +6673,8 @@ static bool
jpeg_load_body (struct frame *f, struct image *img,
struct my_jpeg_error_mgr *mgr)
{
- Lisp_Object specified_file;
- Lisp_Object specified_data;
- /* The 'volatile' silences a bogus diagnostic; see GCC bug 54561. */
- FILE * IF_LINT (volatile) fp = NULL;
+ Lisp_Object specified_file, specified_data;
+ FILE *volatile fp = NULL;
JSAMPARRAY buffer;
int row_stride, x, y;
unsigned long *colors;
@@ -6687,7 +6687,6 @@ jpeg_load_body (struct frame *f, struct image *img,
/* Open the JPEG file. */
specified_file = image_spec_value (img->spec, QCfile, NULL);
specified_data = image_spec_value (img->spec, QCdata, NULL);
- IF_LINT (Lisp_Object volatile specified_data_volatile = specified_data);
if (NILP (specified_data))
{
@@ -6751,9 +6750,6 @@ jpeg_load_body (struct frame *f, struct image *img,
return 0;
}
- /* Silence a bogus diagnostic; see GCC bug 54561. */
- IF_LINT (specified_data = specified_data_volatile);
-
/* Create the JPEG decompression object. Let it read from fp.
Read the JPEG image header. */
jpeg_CreateDecompress (&mgr->cinfo, JPEG_LIB_VERSION, sizeof *&mgr->cinfo);
@@ -8077,15 +8073,25 @@ compute_image_size (size_t width, size_t height,
{
Lisp_Object value;
int desired_width, desired_height;
+ double scale = 1;
+
+ value = image_spec_value (spec, QCscale, NULL);
+ if (NUMBERP (value))
+ scale = extract_float (value);
/* If width and/or height is set in the display spec assume we want
to scale to those values. If either h or w is unspecified, the
unspecified should be calculated from the specified to preserve
aspect ratio. */
value = image_spec_value (spec, QCwidth, NULL);
- desired_width = NATNUMP (value) ? min (XFASTINT (value), INT_MAX) : -1;
+ desired_width = NATNUMP (value) ?
+ min (XFASTINT (value) * scale, INT_MAX) : -1;
value = image_spec_value (spec, QCheight, NULL);
- desired_height = NATNUMP (value) ? min (XFASTINT (value), INT_MAX) : -1;
+ desired_height = NATNUMP (value) ?
+ min (XFASTINT (value) * scale, INT_MAX) : -1;
+
+ width = width * scale;
+ height = height * scale;
if (desired_width == -1)
{
@@ -8136,6 +8142,13 @@ compute_image_size (size_t width, size_t height,
/* h known, calculate w. */
desired_width = scale_image_size (desired_height, height, width);
+ /* We have no width/height settings, so just apply the scale. */
+ if (desired_width == -1 && desired_height == -1)
+ {
+ desired_width = width;
+ desired_height = height;
+ }
+
*d_width = desired_width;
*d_height = desired_height;
}
@@ -8550,6 +8563,18 @@ imagemagick_load_image (struct frame *f, struct image *img,
return 0;
}
+#ifdef HAVE_MAGICKAUTOORIENTIMAGE
+ /* If no :rotation is explicitly specified, apply the automatic
+ rotation from EXIF. */
+ if (NILP (image_spec_value (img->spec, QCrotation, NULL)))
+ if (MagickAutoOrientImage (image_wand) == MagickFalse)
+ {
+ image_error ("Error applying automatic orientation in image `%s'", img->spec);
+ DestroyMagickWand (image_wand);
+ return 0;
+ }
+#endif
+
if (ino < 0 || ino >= MagickGetNumberImages (image_wand))
{
image_error ("Invalid image number `%s' in image `%s'", image, img->spec);
@@ -9232,8 +9257,8 @@ svg_load_image (struct frame *f, /* Pointer to emacs frame structure. *
eassert (gdk_pixbuf_get_has_alpha (pixbuf));
eassert (gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);
-#ifdef USE_CAIRO
{
+#ifdef USE_CAIRO
unsigned char *data = (unsigned char *) xmalloc (width*height*4);
uint32_t bgcolor = get_spec_bg_or_alpha_as_argb (img, f);
@@ -9259,82 +9284,77 @@ svg_load_image (struct frame *f, /* Pointer to emacs frame structure. *
create_cairo_image_surface (img, data, width, height);
g_object_unref (pixbuf);
- }
#else
- /* Try to create a x pixmap to hold the svg pixmap. */
- XImagePtr ximg;
- if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0))
- {
- g_object_unref (pixbuf);
- return 0;
- }
+ /* Try to create a x pixmap to hold the svg pixmap. */
+ XImagePtr ximg;
+ if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0))
+ {
+ g_object_unref (pixbuf);
+ return 0;
+ }
- init_color_table ();
+ init_color_table ();
- /* Handle alpha channel by combining the image with a background
- color. */
- XColor background;
- Lisp_Object specified_bg = image_spec_value (img->spec, QCbackground, NULL);
- if (!STRINGP (specified_bg)
- || !x_defined_color (f, SSDATA (specified_bg), &background, 0))
- x_query_frame_background_color (f, &background);
-
- /* SVG pixmaps specify transparency in the last byte, so right
- shift 8 bits to get rid of it, since emacs doesn't support
- transparency. */
- background.red >>= 8;
- background.green >>= 8;
- background.blue >>= 8;
-
- /* This loop handles opacity values, since Emacs assumes
- non-transparent images. Each pixel must be "flattened" by
- calculating the resulting color, given the transparency of the
- pixel, and the image background color. */
- for (int y = 0; y < height; ++y)
- {
- for (int x = 0; x < width; ++x)
- {
- int red;
- int green;
- int blue;
- int opacity;
-
- red = *pixels++;
- green = *pixels++;
- blue = *pixels++;
- opacity = *pixels++;
-
- red = ((red * opacity)
- + (background.red * ((1 << 8) - opacity)));
- green = ((green * opacity)
- + (background.green * ((1 << 8) - opacity)));
- blue = ((blue * opacity)
- + (background.blue * ((1 << 8) - opacity)));
-
- XPutPixel (ximg, x, y, lookup_rgb_color (f, red, green, blue));
- }
+ /* Handle alpha channel by combining the image with a background
+ color. */
+ XColor background;
+ Lisp_Object specified_bg = image_spec_value (img->spec, QCbackground, NULL);
+ if (!STRINGP (specified_bg)
+ || !x_defined_color (f, SSDATA (specified_bg), &background, 0))
+ x_query_frame_background_color (f, &background);
+
+ /* SVG pixmaps specify transparency in the last byte, so right
+ shift 8 bits to get rid of it, since emacs doesn't support
+ transparency. */
+ background.red >>= 8;
+ background.green >>= 8;
+ background.blue >>= 8;
+
+ /* This loop handles opacity values, since Emacs assumes
+ non-transparent images. Each pixel must be "flattened" by
+ calculating the resulting color, given the transparency of the
+ pixel, and the image background color. */
+ for (int y = 0; y < height; ++y)
+ {
+ for (int x = 0; x < width; ++x)
+ {
+ int red = *pixels++;
+ int green = *pixels++;
+ int blue = *pixels++;
+ int opacity = *pixels++;
+
+ red = ((red * opacity)
+ + (background.red * ((1 << 8) - opacity)));
+ green = ((green * opacity)
+ + (background.green * ((1 << 8) - opacity)));
+ blue = ((blue * opacity)
+ + (background.blue * ((1 << 8) - opacity)));
+
+ XPutPixel (ximg, x, y, lookup_rgb_color (f, red, green, blue));
+ }
- pixels += rowstride - 4 * width;
- }
+ pixels += rowstride - 4 * width;
+ }
#ifdef COLOR_TABLE_SUPPORT
- /* Remember colors allocated for this image. */
- img->colors = colors_in_color_table (&img->ncolors);
- free_color_table ();
+ /* Remember colors allocated for this image. */
+ img->colors = colors_in_color_table (&img->ncolors);
+ free_color_table ();
#endif /* COLOR_TABLE_SUPPORT */
- g_object_unref (pixbuf);
+ g_object_unref (pixbuf);
- img->width = width;
- img->height = height;
+ img->width = width;
+ img->height = height;
- /* Maybe fill in the background field while we have ximg handy.
- Casting avoids a GCC warning. */
- IMAGE_BACKGROUND (img, f, (XImagePtr_or_DC)ximg);
+ /* Maybe fill in the background field while we have ximg handy.
+ Casting avoids a GCC warning. */
+ IMAGE_BACKGROUND (img, f, (XImagePtr_or_DC)ximg);
- /* Put ximg into the image. */
- image_put_x_image (f, img, ximg, 0);
+ /* Put ximg into the image. */
+ image_put_x_image (f, img, ximg, 0);
#endif /* ! USE_CAIRO */
+ }
return 1;
@@ -9799,6 +9819,7 @@ non-numeric, there is no explicit limit on the size of images. */);
DEFSYM (QCcrop, ":crop");
DEFSYM (QCrotation, ":rotation");
DEFSYM (QCmatrix, ":matrix");
+ DEFSYM (QCscale, ":scale");
DEFSYM (QCcolor_adjustment, ":color-adjustment");
DEFSYM (QCmask, ":mask");
diff --git a/src/indent.c b/src/indent.c
index 578dac83df..f8c180d3e2 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1162,7 +1162,7 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos,
int prev_tab_offset; /* Previous tab offset. */
int continuation_glyph_width;
struct buffer *cache_buffer = current_buffer;
- struct region_cache *width_cache;
+ struct region_cache *width_cache = NULL;
struct composition_it cmp_it;
@@ -1170,11 +1170,14 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos,
if (cache_buffer->base_buffer)
cache_buffer = cache_buffer->base_buffer;
- width_cache = width_run_cache_on_off ();
if (dp == buffer_display_table ())
- width_table = (VECTORP (BVAR (current_buffer, width_table))
- ? XVECTOR (BVAR (current_buffer, width_table))->contents
- : 0);
+ {
+ width_table = (VECTORP (BVAR (current_buffer, width_table))
+ ? XVECTOR (BVAR (current_buffer, width_table))->contents
+ : 0);
+ if (width_table)
+ width_cache = width_run_cache_on_off ();
+ }
else
/* If the window has its own display table, we can't use the width
run cache, because that's based on the buffer's display table. */
@@ -1995,7 +1998,7 @@ whether or not it is currently displayed in some window. */)
struct text_pos pt;
struct window *w;
Lisp_Object old_buffer;
- EMACS_INT old_charpos IF_LINT (= 0), old_bytepos IF_LINT (= 0);
+ EMACS_INT old_charpos UNINIT, old_bytepos UNINIT;
Lisp_Object lcols;
void *itdata = NULL;
@@ -2037,8 +2040,8 @@ whether or not it is currently displayed in some window. */)
bool disp_string_at_start_p = 0;
ptrdiff_t nlines = XINT (lines);
int vpos_init = 0;
- double start_col IF_LINT (= 0);
- int start_x IF_LINT (= 0);
+ double start_col UNINIT;
+ int start_x UNINIT;
int to_x = -1;
bool start_x_given = !NILP (cur_col);
@@ -2179,6 +2182,7 @@ whether or not it is currently displayed in some window. */)
if (nlines <= 0)
{
it.vpos = vpos_init;
+ it.current_y = 0;
/* Do this even if LINES is 0, so that we move back to the
beginning of the current line as we ought. */
if ((nlines < 0 && IT_CHARPOS (it) > 0)
@@ -2188,6 +2192,7 @@ whether or not it is currently displayed in some window. */)
else if (overshoot_handled)
{
it.vpos = vpos_init;
+ it.current_y = 0;
move_it_by_lines (&it, min (PTRDIFF_MAX, nlines));
}
else
@@ -2201,6 +2206,7 @@ whether or not it is currently displayed in some window. */)
while (IT_CHARPOS (it) <= it_start)
{
it.vpos = 0;
+ it.current_y = 0;
move_it_by_lines (&it, 1);
}
if (nlines > 1)
@@ -2209,6 +2215,7 @@ whether or not it is currently displayed in some window. */)
else /* it_start = ZV */
{
it.vpos = 0;
+ it.current_y = 0;
move_it_by_lines (&it, min (PTRDIFF_MAX, nlines));
/* We could have some display or overlay string at ZV,
in which case it.vpos will be nonzero now, while
diff --git a/src/insdel.c b/src/insdel.c
index fc3f19fd58..5d3884b405 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -364,6 +364,78 @@ adjust_markers_for_replace (ptrdiff_t from, ptrdiff_t from_byte,
check_markers ();
}
+/* Starting at POS (BYTEPOS), find the byte position corresponding to
+ ENDPOS, which could be either before or after POS. */
+static ptrdiff_t
+count_bytes (ptrdiff_t pos, ptrdiff_t bytepos, ptrdiff_t endpos)
+{
+ eassert (BEG_BYTE <= bytepos && bytepos <= Z_BYTE
+ && BEG <= endpos && endpos <= Z);
+
+ if (pos <= endpos)
+ for ( ; pos < endpos; pos++)
+ INC_POS (bytepos);
+ else
+ for ( ; pos > endpos; pos--)
+ DEC_POS (bytepos);
+
+ return bytepos;
+}
+
+/* Adjust byte positions of markers when their character positions
+ didn't change. This is used in several places that replace text,
+ but keep the character positions of the markers unchanged -- the
+ byte positions could still change due to different numbers of bytes
+ in the new text.
+
+ FROM (FROM_BYTE) and TO (TO_BYTE) specify the region of text where
+ changes have been done. TO_Z, if non-zero, means all the markers
+ whose positions are after TO should also be adjusted. */
+void
+adjust_markers_bytepos (ptrdiff_t from, ptrdiff_t from_byte,
+ ptrdiff_t to, ptrdiff_t to_byte, int to_z)
+{
+ register struct Lisp_Marker *m;
+ ptrdiff_t beg = from, begbyte = from_byte;
+
+ adjust_suspend_auto_hscroll (from, to);
+
+ if (Z == Z_BYTE || (!to_z && to == to_byte))
+ {
+ /* Make sure each affected marker's bytepos is equal to
+ its charpos. */
+ for (m = BUF_MARKERS (current_buffer); m; m = m->next)
+ {
+ if (m->bytepos > from_byte
+ && (to_z || m->bytepos <= to_byte))
+ m->bytepos = m->charpos;
+ }
+ }
+ else
+ {
+ for (m = BUF_MARKERS (current_buffer); m; m = m->next)
+ {
+ /* Recompute each affected marker's bytepos. */
+ if (m->bytepos > from_byte
+ && (to_z || m->bytepos <= to_byte))
+ {
+ if (m->charpos < beg
+ && beg - m->charpos > m->charpos - from)
+ {
+ beg = from;
+ begbyte = from_byte;
+ }
+ m->bytepos = count_bytes (beg, begbyte, m->charpos);
+ beg = m->charpos;
+ begbyte = m->bytepos;
+ }
+ }
+ }
+
+ /* Make sure cached charpos/bytepos is invalid. */
+ clear_charpos_cache (current_buffer);
+}
+
void
buffer_overflow (void)
@@ -1400,6 +1472,16 @@ replace_range (ptrdiff_t from, ptrdiff_t to, Lisp_Object new,
if (markers)
adjust_markers_for_replace (from, from_byte, nchars_del, nbytes_del,
inschars, outgoing_insbytes);
+ else
+ {
+ /* The character positions of the markers remain intact, but we
+ still need to update their byte positions, because the
+ deleted and the inserted text might have multibyte sequences
+ which make the original byte positions of the markers
+ invalid. */
+ adjust_markers_bytepos (from, from_byte, from + inschars,
+ from_byte + outgoing_insbytes, 1);
+ }
/* Adjust the overlay center as needed. This must be done after
adjusting the markers that bound the overlays. */
@@ -1515,10 +1597,22 @@ replace_range_2 (ptrdiff_t from, ptrdiff_t from_byte,
eassert (GPT <= GPT_BYTE);
/* Adjust markers for the deletion and the insertion. */
- if (markers
- && ! (nchars_del == 1 && inschars == 1 && nbytes_del == insbytes))
- adjust_markers_for_replace (from, from_byte, nchars_del, nbytes_del,
- inschars, insbytes);
+ if (! (nchars_del == 1 && inschars == 1 && nbytes_del == insbytes))
+ {
+ if (markers)
+ adjust_markers_for_replace (from, from_byte, nchars_del, nbytes_del,
+ inschars, insbytes);
+ else
+ {
+ /* The character positions of the markers remain intact, but
+ we still need to update their byte positions, because the
+ deleted and the inserted text might have multibyte
+ sequences which make the original byte positions of the
+ markers invalid. */
+ adjust_markers_bytepos (from, from_byte, from + inschars,
+ from_byte + insbytes, 1);
+ }
+ }
/* Adjust the overlay center as needed. This must be done after
adjusting the markers that bound the overlays. */
diff --git a/src/intervals.h b/src/intervals.h
index b8cdcfdc0f..9a38d849b8 100644
--- a/src/intervals.h
+++ b/src/intervals.h
@@ -197,12 +197,12 @@ set_interval_plist (INTERVAL i, Lisp_Object plist)
/* Is this interval writable? Replace later with cache access. */
#define INTERVAL_WRITABLE_P(i) \
- (i && (NILP (textget ((i)->plist, Qread_only)) \
- || !NILP (textget ((i)->plist, Qinhibit_read_only)) \
- || ((CONSP (Vinhibit_read_only) \
- ? !NILP (Fmemq (textget ((i)->plist, Qread_only), \
- Vinhibit_read_only)) \
- : !NILP (Vinhibit_read_only))))) \
+ (NILP (textget ((i)->plist, Qread_only)) \
+ || !NILP (textget ((i)->plist, Qinhibit_read_only)) \
+ || ((CONSP (Vinhibit_read_only) \
+ ? !NILP (Fmemq (textget ((i)->plist, Qread_only), \
+ Vinhibit_read_only)) \
+ : !NILP (Vinhibit_read_only))))
/* Macros to tell whether insertions before or after this interval
should stick to it. Now we have Vtext_property_default_nonsticky,
@@ -285,7 +285,7 @@ extern void set_text_properties_1 (Lisp_Object, Lisp_Object,
Lisp_Object text_property_list (Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object);
void add_text_properties_from_list (Lisp_Object, Lisp_Object, Lisp_Object);
-Lisp_Object extend_property_ranges (Lisp_Object, Lisp_Object);
+Lisp_Object extend_property_ranges (Lisp_Object, Lisp_Object, Lisp_Object);
Lisp_Object get_char_property_and_overlay (Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object*);
extern int text_property_stickiness (Lisp_Object prop, Lisp_Object pos,
diff --git a/src/keyboard.c b/src/keyboard.c
index 918424630f..f27ca0f86e 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -70,6 +70,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include TERM_HEADER
#endif /* HAVE_WINDOW_SYSTEM */
+/* Work around GCC bug 54561. */
+#if GNUC_PREREQ (4, 3, 0)
+# pragma GCC diagnostic ignored "-Wclobbered"
+#endif
+
/* Variables for blockinput.h: */
/* Positive if interrupt input is blocked right now. */
@@ -691,7 +696,7 @@ recursive_edit_1 (void)
val = command_loop ();
if (EQ (val, Qt))
- Fsignal (Qquit, Qnil);
+ quit ();
/* Handle throw from read_minibuf when using minibuffer
while it's active but we're in another window. */
if (STRINGP (val))
@@ -2130,7 +2135,7 @@ read_event_from_main_queue (struct timespec *end_time,
{
Lisp_Object c = Qnil;
sys_jmp_buf save_jump;
- KBOARD *kb IF_LINT (= NULL);
+ KBOARD *kb;
start:
@@ -2201,8 +2206,8 @@ read_decoded_event_from_main_queue (struct timespec *end_time,
Lisp_Object prev_event,
bool *used_mouse_menu)
{
-#define MAX_ENCODED_BYTES 16
#ifndef WINDOWSNT
+#define MAX_ENCODED_BYTES 16
Lisp_Object events[MAX_ENCODED_BYTES];
int n = 0;
#endif
@@ -2842,7 +2847,16 @@ read_char (int commandflag, Lisp_Object map,
last_input_event = c;
call4 (Qcommand_execute, tem, Qnil, Fvector (1, &last_input_event), Qt);
- if (CONSP (c) && EQ (XCAR (c), Qselect_window) && !end_time)
+ if (CONSP (c)
+ && (EQ (XCAR (c), Qselect_window)
+#ifdef HAVE_DBUS
+ || EQ (XCAR (c), Qdbus_event)
+#endif
+#ifdef USE_FILE_NOTIFY
+ || EQ (XCAR (c), Qfile_notify)
+#endif
+ || EQ (XCAR (c), Qconfig_changed_event))
+ && !end_time)
/* We stopped being idle for this event; undo that. This
prevents automatic window selection (under
mouse-autoselect-window) from acting as a real input event, for
@@ -3892,6 +3906,16 @@ kbd_buffer_get_event (KBOARD **kbp,
kbd_fetch_ptr = event + 1;
}
#endif
+
+#ifdef HAVE_NTGUI
+ else if (event->kind == END_SESSION_EVENT)
+ {
+ /* Make an event (end-session). */
+ obj = list1 (Qend_session);
+ kbd_fetch_ptr = event + 1;
+ }
+#endif
+
#if defined (HAVE_X11) || defined (HAVE_NTGUI) \
|| defined (HAVE_NS)
else if (event->kind == ICONIFY_EVENT)
@@ -5979,7 +6003,6 @@ make_lispy_event (struct input_event *event)
}
#endif
-
#if defined HAVE_INOTIFY || defined HAVE_KQUEUE || defined HAVE_GFILENOTIFY
case FILE_NOTIFY_EVENT:
{
@@ -6879,7 +6902,10 @@ tty_read_avail_input (struct terminal *terminal,
the kbd_buffer can really hold. That may prevent loss
of characters on some systems when input is stuffed at us. */
unsigned char cbuf[KBD_BUFFER_SIZE - 1];
- int n_to_read, i;
+#ifndef WINDOWSNT
+ int n_to_read;
+#endif
+ int i;
struct tty_display_info *tty = terminal->display_info.tty;
int nread = 0;
#ifdef subprocesses
@@ -7555,7 +7581,7 @@ menu_item_eval_property_1 (Lisp_Object arg)
/* If we got a quit from within the menu computation,
quit all the way out of it. This takes care of C-] in the debugger. */
if (CONSP (arg) && EQ (XCAR (arg), Qquit))
- Fsignal (Qquit, Qnil);
+ quit ();
return Qnil;
}
@@ -8828,7 +8854,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
/* The length of the echo buffer when we started reading, and
the length of this_command_keys when we started reading. */
- ptrdiff_t echo_start IF_LINT (= 0);
+ ptrdiff_t echo_start UNINIT;
ptrdiff_t keys_start;
Lisp_Object current_binding = Qnil;
@@ -8876,7 +8902,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
While we're reading, we keep the event here. */
Lisp_Object delayed_switch_frame;
- Lisp_Object original_uppercase IF_LINT (= Qnil);
+ Lisp_Object original_uppercase UNINIT;
int original_uppercase_position = -1;
/* Gets around Microsoft compiler limitations. */
@@ -8986,7 +9012,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
while those allow us to restart the entire key sequence,
echo_local_start and keys_local_start allow us to throw away
just one key. */
- ptrdiff_t echo_local_start IF_LINT (= 0);
+ ptrdiff_t echo_local_start UNINIT;
int keys_local_start;
Lisp_Object new_binding;
@@ -10317,6 +10343,9 @@ handle_interrupt (bool in_signal_handler)
is used. Note that [Enter] is not echoed by dos. */
cursor_to (SELECTED_FRAME (), 0, 0);
#endif
+
+ write_stdout ("Emacs is resuming after an emergency escape.\n");
+
/* It doesn't work to autosave while GC is in progress;
the code used for auto-saving doesn't cope with the mark bit. */
if (!gc_in_progress)
@@ -10378,7 +10407,7 @@ handle_interrupt (bool in_signal_handler)
immediate_quit = false;
pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
saved = gl_state;
- Fsignal (Qquit, Qnil);
+ quit ();
gl_state = saved;
}
else
@@ -10983,6 +11012,7 @@ syms_of_keyboard (void)
#ifdef HAVE_NTGUI
DEFSYM (Qlanguage_change, "language-change");
+ DEFSYM (Qend_session, "end-session");
#endif
#ifdef HAVE_DBUS
@@ -11724,6 +11754,25 @@ Currently, the only supported values for this
variable are `sigusr1' and `sigusr2'. */);
Vdebug_on_event = intern_c_string ("sigusr2");
+ DEFVAR_BOOL ("attempt-stack-overflow-recovery",
+ attempt_stack_overflow_recovery,
+ doc: /* If non-nil, attempt to recover from C stack
+overflow. This recovery is unsafe and may lead to deadlocks or data
+corruption, but it usually works and may preserve modified buffers
+that would otherwise be lost. If nil, treat stack overflow like any
+other kind of crash. */);
+ attempt_stack_overflow_recovery = true;
+
+ DEFVAR_BOOL ("attempt-orderly-shutdown-on-fatal-signal",
+ attempt_orderly_shutdown_on_fatal_signal,
+ doc: /* If non-nil, attempt to perform an orderly
+shutdown when Emacs receives a fatal signal (e.g., a crash).
+This cleanup is unsafe and may lead to deadlocks or data corruption,
+but it usually works and may preserve modified buffers that would
+otherwise be lost. If nil, crash immediately in response to fatal
+signals. */);
+ attempt_orderly_shutdown_on_fatal_signal = true;
+
/* Create the initial keyboard. Qt means 'unset'. */
initial_kboard = allocate_kboard (Qt);
}
@@ -11739,6 +11788,10 @@ keys_of_keyboard (void)
initial_define_lispy_key (Vspecial_event_map, "delete-frame",
"handle-delete-frame");
+#ifdef HAVE_NTGUI
+ initial_define_lispy_key (Vspecial_event_map, "end-session",
+ "kill-emacs");
+#endif
initial_define_lispy_key (Vspecial_event_map, "ns-put-working-text",
"ns-put-working-text");
initial_define_lispy_key (Vspecial_event_map, "ns-unput-working-text",
diff --git a/src/keymap.c b/src/keymap.c
index c975aad27d..b27df1d045 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -971,8 +971,18 @@ copy_keymap_1 (Lisp_Object chartable, Lisp_Object idx, Lisp_Object elt)
DEFUN ("copy-keymap", Fcopy_keymap, Scopy_keymap, 1, 1, 0,
doc: /* Return a copy of the keymap KEYMAP.
-The copy starts out with the same definitions of KEYMAP,
-but changing either the copy or KEYMAP does not affect the other.
+
+Note that this is almost never needed. If you want a keymap that's like
+another yet with a few changes, you should use map inheritance rather
+than copying. I.e. something like:
+
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map <theirmap>)
+ (define-key map ...)
+ ...)
+
+After performing `copy-keymap', the copy starts out with the same definitions
+of KEYMAP, but changing either the copy or KEYMAP does not affect the other.
Any key definitions that are subkeymaps are recursively copied.
However, a key definition which is a symbol whose definition is a keymap
is not copied. */)
@@ -1303,7 +1313,7 @@ silly_event_symbol_error (Lisp_Object c)
*p = 0;
c = reorder_modifiers (c);
- AUTO_STRING (new_mods_string, new_mods);
+ AUTO_STRING_WITH_LEN (new_mods_string, new_mods, p - new_mods);
keystring = concat2 (new_mods_string, XCDR (assoc));
error ("To bind the key %s, use [?%s], not [%s]",
diff --git a/src/kqueue.c b/src/kqueue.c
index c848b7ff1a..f45bd0c4c2 100644
--- a/src/kqueue.c
+++ b/src/kqueue.c
@@ -29,6 +29,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "keyboard.h"
#include "process.h"
+#ifdef HAVE_SYS_RESOURCE_H
+#include <sys/resource.h>
+#endif /* HAVE_SYS_RESOURCE_H */
+
/* File handle for kqueue. */
static int kqueuefd = -1;
@@ -366,9 +370,12 @@ only when the upper directory of the renamed file is watched. */)
(Lisp_Object file, Lisp_Object flags, Lisp_Object callback)
{
Lisp_Object watch_object, dir_list;
- int fd, oflags;
+ int maxfd, fd, oflags;
u_short fflags = 0;
struct kevent kev;
+#ifdef HAVE_GETRLIMIT
+ struct rlimit rlim;
+#endif /* HAVE_GETRLIMIT */
/* Check parameters. */
CHECK_STRING (file);
@@ -381,6 +388,21 @@ only when the upper directory of the renamed file is watched. */)
if (! FUNCTIONP (callback))
wrong_type_argument (Qinvalid_function, callback);
+ /* Check available file descriptors. */
+#ifdef HAVE_GETRLIMIT
+ if (! getrlimit (RLIMIT_NOFILE, &rlim))
+ maxfd = rlim.rlim_cur;
+ else
+#endif /* HAVE_GETRLIMIT */
+ maxfd = 256;
+
+ /* We assume 50 file descriptors are sufficient for the rest of Emacs. */
+ if ((maxfd - 50) < XINT (Flength (watch_list)))
+ xsignal2
+ (Qfile_notify_error,
+ build_string ("File watching not possible, no file descriptor left"),
+ Flength (watch_list));
+
if (kqueuefd < 0)
{
/* Create kqueue descriptor. */
diff --git a/src/lastfile.c b/src/lastfile.c
index d516093b29..9d70b001d1 100644
--- a/src/lastfile.c
+++ b/src/lastfile.c
@@ -38,7 +38,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "lisp.h"
+#if ((!defined SYSTEM_MALLOC && !defined HYBRID_MALLOC) \
+ || defined WINDOWSNT || defined CYGWIN || defined DARWIN_OS)
char my_edata[] = "End of Emacs initialized data";
+#endif
/* Help unexec locate the end of the .bss area used by Emacs (which
isn't always a separate section in NT executables). */
diff --git a/src/lisp.h b/src/lisp.h
index 25f811e06e..97c8d9fe84 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -88,7 +88,11 @@ typedef unsigned long EMACS_UINT;
typedef long long int EMACS_INT;
typedef unsigned long long int EMACS_UINT;
# define EMACS_INT_MAX LLONG_MAX
-# define pI "ll"
+# ifdef __MINGW32__
+# define pI "I64"
+# else
+# define pI "ll"
+# endif
# else
# error "INTPTR_MAX too large"
# endif
@@ -341,7 +345,9 @@ error !;
(struct Lisp_Symbol *) ((intptr_t) XLI (a) - Lisp_Symbol \
+ (char *) lispsym))
# define lisp_h_XTYPE(a) ((enum Lisp_Type) (XLI (a) & ~VALMASK))
-# define lisp_h_XUNTAG(a, type) ((void *) (intptr_t) (XLI (a) - (type)))
+# define lisp_h_XUNTAG(a, type) \
+ __builtin_assume_aligned ((void *) (intptr_t) (XLI (a) - (type)), \
+ GCALIGNMENT)
#endif
/* When compiling via gcc -O0, define the key operations as macros, as
@@ -600,7 +606,9 @@ extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object);
extern _Noreturn void wrong_choice (Lisp_Object, Lisp_Object);
/* Defined in emacs.c. */
+#ifdef DOUG_LEA_MALLOC
extern bool might_dump;
+#endif
/* True means Emacs has already been initialized.
Used during startup to detect startup of dumped Emacs. */
extern bool initialized;
@@ -719,12 +727,16 @@ struct Lisp_Symbol
except the former expands to an integer constant expression. */
#define XLI_BUILTIN_LISPSYM(iname) TAG_SYMOFFSET ((iname) * sizeof *lispsym)
+/* LISPSYM_INITIALLY (Qfoo) is equivalent to Qfoo except it is
+ designed for use as an initializer, even for a constant initializer. */
+#define LISPSYM_INITIALLY(name) LISP_INITIALLY (XLI_BUILTIN_LISPSYM (i##name))
+
/* Declare extern constants for Lisp symbols. These can be helpful
when using a debugger like GDB, on older platforms where the debug
format does not represent C macros. */
#define DEFINE_LISP_SYMBOL(name) \
DEFINE_GDB_SYMBOL_BEGIN (Lisp_Object, name) \
- DEFINE_GDB_SYMBOL_END (LISP_INITIALLY (XLI_BUILTIN_LISPSYM (i##name)))
+ DEFINE_GDB_SYMBOL_END (LISPSYM_INITIALLY (name))
/* By default, define macros for Qt, etc., as this leads to a bit
better performance in the core Emacs interpreter. A plugin can
@@ -1740,7 +1752,7 @@ struct Lisp_Subr
short min_args, max_args;
const char *symbol_name;
const char *intspec;
- const char *doc;
+ EMACS_INT doc;
};
enum char_table_specials
@@ -3190,7 +3202,6 @@ struct handler
ptrdiff_t pdlcount;
int poll_suppress_count;
int interrupt_input_blocked;
- struct byte_stack *byte_stack;
};
extern Lisp_Object memory_signal_data;
@@ -3439,7 +3450,7 @@ ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, EMACS_UINT *);
ptrdiff_t hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object,
EMACS_UINT);
void hash_remove_from_table (struct Lisp_Hash_Table *, Lisp_Object);
-extern struct hash_table_test hashtest_eq, hashtest_eql, hashtest_equal;
+extern struct hash_table_test const hashtest_eq, hashtest_eql, hashtest_equal;
extern void validate_subarray (Lisp_Object, Lisp_Object, Lisp_Object,
ptrdiff_t, ptrdiff_t *, ptrdiff_t *);
extern Lisp_Object substring_both (Lisp_Object, ptrdiff_t, ptrdiff_t,
@@ -3516,6 +3527,8 @@ extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t,
ptrdiff_t, ptrdiff_t);
extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t,
ptrdiff_t, ptrdiff_t);
+extern void adjust_markers_bytepos (ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t, int);
extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, bool, bool, bool, bool);
extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
const char *, ptrdiff_t, ptrdiff_t, bool);
@@ -3584,13 +3597,8 @@ extern void mark_object (Lisp_Object);
#if defined REL_ALLOC && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
extern void refill_memory_reserve (void);
#endif
-#ifdef DOUG_LEA_MALLOC
extern void alloc_unexec_pre (void);
extern void alloc_unexec_post (void);
-#else
-INLINE void alloc_unexec_pre (void) {}
-INLINE void alloc_unexec_post (void) {}
-#endif
extern const char *pending_malloc_warning;
extern Lisp_Object zero_vector;
extern Lisp_Object *stack_base;
@@ -3756,6 +3764,15 @@ extern void check_cons_list (void);
INLINE void (check_cons_list) (void) { lisp_h_check_cons_list (); }
#endif
+/* Defined in gmalloc.c. */
+#if !defined DOUG_LEA_MALLOC && !defined HYBRID_MALLOC && !defined SYSTEM_MALLOC
+extern size_t __malloc_extra_blocks;
+#endif
+#if !HAVE_DECL_ALIGNED_ALLOC
+extern void *aligned_alloc (size_t, size_t) ATTRIBUTE_MALLOC_SIZE ((2));
+#endif
+extern void malloc_enable_thread (void);
+
#ifdef REL_ALLOC
/* Defined in ralloc.c. */
extern void *r_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
@@ -3861,7 +3878,12 @@ extern void run_hook_with_args_2 (Lisp_Object, Lisp_Object, Lisp_Object);
extern Lisp_Object run_hook_with_args (ptrdiff_t nargs, Lisp_Object *args,
Lisp_Object (*funcall)
(ptrdiff_t nargs, Lisp_Object *args));
-extern _Noreturn void xsignal (Lisp_Object, Lisp_Object);
+extern Lisp_Object quit (void);
+INLINE _Noreturn void
+xsignal (Lisp_Object error_symbol, Lisp_Object data)
+{
+ Fsignal (error_symbol, data);
+}
extern _Noreturn void xsignal0 (Lisp_Object);
extern _Noreturn void xsignal1 (Lisp_Object, Lisp_Object);
extern _Noreturn void xsignal2 (Lisp_Object, Lisp_Object, Lisp_Object);
@@ -3901,6 +3923,8 @@ extern Lisp_Object unbind_to (ptrdiff_t, Lisp_Object);
extern _Noreturn void error (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2);
extern _Noreturn void verror (const char *, va_list)
ATTRIBUTE_FORMAT_PRINTF (1, 0);
+extern Lisp_Object vformat_string (const char *, va_list)
+ ATTRIBUTE_FORMAT_PRINTF (1, 0);
extern void un_autoload (Lisp_Object);
extern Lisp_Object call_debugger (Lisp_Object arg);
extern void *near_C_stack_top (void);
@@ -4119,6 +4143,7 @@ INLINE void fixup_locale (void) {}
INLINE void synchronize_system_messages_locale (void) {}
INLINE void synchronize_system_time_locale (void) {}
#endif
+extern char *emacs_strerror (int);
extern void shut_down_emacs (int, Lisp_Object);
/* True means don't do interactive redisplay and don't change tty modes. */
@@ -4127,6 +4152,9 @@ extern bool noninteractive;
/* True means remove site-lisp directories from load-path. */
extern bool no_site_lisp;
+/* True means put details like time stamps into builds. */
+extern bool build_details;
+
/* Pipe used to send exit notification to the daemon parent at
startup. On Windows, we use a kernel event instead. */
#ifndef WINDOWSNT
@@ -4152,8 +4180,8 @@ extern void kill_buffer_processes (Lisp_Object);
extern int wait_reading_process_output (intmax_t, int, int, bool, Lisp_Object,
struct Lisp_Process *, int);
/* Max value for the first argument of wait_reading_process_output. */
-#if __GNUC__ == 3 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 5)
-/* Work around a bug in GCC 3.4.2, known to be fixed in GCC 4.6.3.
+#if GNUC_PREREQ (3, 0, 0) && ! GNUC_PREREQ (4, 6, 0)
+/* Work around a bug in GCC 3.4.2, known to be fixed in GCC 4.6.0.
The bug merely causes a bogus warning, but the warning is annoying. */
# define WAIT_READING_MAX min (TYPE_MAXIMUM (time_t), INTMAX_MAX)
#else
@@ -4168,7 +4196,7 @@ extern void delete_keyboard_wait_descriptor (int);
extern void add_gpm_wait_descriptor (int);
extern void delete_gpm_wait_descriptor (int);
#endif
-extern void init_process_emacs (void);
+extern void init_process_emacs (int);
extern void syms_of_process (void);
extern void setup_process_coding_systems (Lisp_Object);
@@ -4202,10 +4230,9 @@ extern int read_bytecode_char (bool);
/* Defined in bytecode.c. */
extern void syms_of_bytecode (void);
-extern struct byte_stack *byte_stack_list;
-extern void relocate_byte_stack (void);
extern Lisp_Object exec_byte_code (Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object, ptrdiff_t, Lisp_Object *);
+extern Lisp_Object get_byte_code_arity (Lisp_Object);
/* Defined in macros.c. */
extern void init_macros (void);
@@ -4238,9 +4265,14 @@ struct tty_display_info;
struct terminal;
/* Defined in sysdep.c. */
-#ifndef HAVE_GET_CURRENT_DIR_NAME
-extern char *get_current_dir_name (void);
+#ifdef HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
+extern bool disable_address_randomization (void);
+#else
+INLINE bool disable_address_randomization (void) { return false; }
#endif
+extern int emacs_exec_file (char const *, char *const *, char *const *);
+extern void init_standard_fds (void);
+extern char *emacs_get_current_dir_name (void);
extern void stuff_char (char c);
extern void init_foreground_group (void);
extern void sys_subshell (void);
@@ -4495,12 +4527,14 @@ extern void *record_xmalloc (size_t) ATTRIBUTE_ALLOC_SIZE ((1));
} \
} while (false)
-/* SAFE_ALLOCA_LISP allocates an array of Lisp_Objects. */
+/* Set BUF to point to an allocated array of NELT Lisp_Objects,
+ immediately followed by EXTRA spare bytes. */
-#define SAFE_ALLOCA_LISP(buf, nelt) \
+#define SAFE_ALLOCA_LISP_EXTRA(buf, nelt, extra) \
do { \
ptrdiff_t alloca_nbytes; \
if (INT_MULTIPLY_WRAPV (nelt, word_size, &alloca_nbytes) \
+ || INT_ADD_WRAPV (alloca_nbytes, extra, &alloca_nbytes) \
|| SIZE_MAX < alloca_nbytes) \
memory_full (SIZE_MAX); \
else if (alloca_nbytes <= sa_avail) \
@@ -4515,6 +4549,10 @@ extern void *record_xmalloc (size_t) ATTRIBUTE_ALLOC_SIZE ((1));
} \
} while (false)
+/* Set BUF to point to an allocated array of NELT Lisp_Objects. */
+
+#define SAFE_ALLOCA_LISP(buf, nelt) SAFE_ALLOCA_LISP_EXTRA (buf, nelt, 0)
+
/* If USE_STACK_LISP_OBJECTS, define macros that and functions that allocate
block-scoped conses and strings. These objects are not
@@ -4526,8 +4564,7 @@ extern void *record_xmalloc (size_t) ATTRIBUTE_ALLOC_SIZE ((1));
Build with CPPFLAGS='-DUSE_STACK_LISP_OBJECTS=0' to disable it. */
#if (!defined USE_STACK_LISP_OBJECTS \
- && defined __GNUC__ && !defined __clang__ \
- && !(4 < __GNUC__ + (3 < __GNUC_MINOR__ + (2 <= __GNUC_PATCHLEVEL__))))
+ && defined __GNUC__ && !defined __clang__ && ! GNUC_PREREQ (4, 3, 2))
/* Work around GCC bugs 36584 and 35271, which were fixed in GCC 4.3.2. */
# define USE_STACK_LISP_OBJECTS false
#endif
@@ -4600,27 +4637,29 @@ enum
STACK_CONS (d, Qnil)))) \
: list4 (a, b, c, d))
-/* Check whether stack-allocated strings are ASCII-only. */
+/* Declare NAME as an auto Lisp string if possible, a GC-based one if not.
+ Take its unibyte value from the null-terminated string STR,
+ an expression that should not have side effects.
+ STR's value is not necessarily copied. The resulting Lisp string
+ should not be modified or made visible to user code. */
-#if defined (ENABLE_CHECKING) && USE_STACK_LISP_OBJECTS
-extern const char *verify_ascii (const char *);
-#else
-# define verify_ascii(str) (str)
-#endif
+#define AUTO_STRING(name, str) \
+ AUTO_STRING_WITH_LEN (name, str, strlen (str))
/* Declare NAME as an auto Lisp string if possible, a GC-based one if not.
- Take its value from STR. STR is not necessarily copied and should
- contain only ASCII characters. The resulting Lisp string should
- not be modified or made visible to user code. */
+ Take its unibyte value from the null-terminated string STR with length LEN.
+ STR may have side effects and may contain null bytes.
+ STR's value is not necessarily copied. The resulting Lisp string
+ should not be modified or made visible to user code. */
-#define AUTO_STRING(name, str) \
+#define AUTO_STRING_WITH_LEN(name, str, len) \
Lisp_Object name = \
(USE_STACK_STRING \
? (make_lisp_ptr \
((&(union Aligned_String) \
- {{strlen (str), -1, 0, (unsigned char *) verify_ascii (str)}}.s), \
- Lisp_String)) \
- : build_string (verify_ascii (str)))
+ {{len, -1, 0, (unsigned char *) (str)}}.s), \
+ Lisp_String)) \
+ : make_unibyte_string (str, len))
/* Loop over all tails of a list, checking for cycles.
FIXME: Make tortoise and n internal declarations.
diff --git a/src/lread.c b/src/lread.c
index ef58b20070..ecd482793a 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -36,13 +36,13 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "character.h"
#include "buffer.h"
#include "charset.h"
-#include "coding.h"
#include <epaths.h>
#include "commands.h"
#include "keyboard.h"
#include "systime.h"
#include "termhooks.h"
#include "blockinput.h"
+#include <c-ctype.h>
#ifdef MSDOS
#include "msdos.h"
@@ -1039,7 +1039,7 @@ Return t if the file exists and loads successfully. */)
{
FILE *stream;
int fd;
- int fd_index;
+ int fd_index UNINIT;
ptrdiff_t count = SPECPDL_INDEX ();
Lisp_Object found, efound, hist_file_name;
/* True means we printed the ".el is newer" message. */
@@ -1155,12 +1155,7 @@ Return t if the file exists and loads successfully. */)
#endif
}
- if (fd < 0)
- {
- /* Pacify older GCC with --enable-gcc-warnings. */
- IF_LINT (fd_index = 0);
- }
- else
+ if (0 <= fd)
{
fd_index = SPECPDL_INDEX ();
record_unwind_protect_int (close_file_unwind, fd);
@@ -1209,7 +1204,11 @@ Return t if the file exists and loads successfully. */)
specbind (Qold_style_backquotes, Qnil);
record_unwind_protect (load_warn_old_style_backquotes, file);
- if (suffix_p (found, ".elc") || (fd >= 0 && (version = safe_to_load_version (fd)) > 0))
+ int is_elc;
+ if ((is_elc = suffix_p (found, ".elc")) != 0
+ /* version = 1 means the file is empty, in which case we can
+ treat it as not byte-compiled. */
+ || (fd >= 0 && (version = safe_to_load_version (fd)) > 1))
/* Load .elc files directly, but not when they are
remote and have no handler! */
{
@@ -1236,7 +1235,7 @@ Return t if the file exists and loads successfully. */)
/* openp already checked for newness, no point doing it again.
FIXME would be nice to get a message when openp
ignores suffix order due to load_prefer_newer. */
- if (!load_prefer_newer)
+ if (!load_prefer_newer && is_elc)
{
result = stat (SSDATA (efound), &s1);
if (result == 0)
@@ -1465,6 +1464,8 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes,
for (; CONSP (path); path = XCDR (path))
{
+ ptrdiff_t baselen, prefixlen;
+
filename = Fexpand_file_name (str, XCAR (path));
if (!complete_filename_p (filename))
/* If there are non-absolute elts in PATH (eg "."). */
@@ -1486,6 +1487,14 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes,
fn = SAFE_ALLOCA (fn_size);
}
+ /* Copy FILENAME's data to FN but remove starting /: if any. */
+ prefixlen = ((SCHARS (filename) > 2
+ && SREF (filename, 0) == '/'
+ && SREF (filename, 1) == ':')
+ ? 2 : 0);
+ baselen = SBYTES (filename) - prefixlen;
+ memcpy (fn, SDATA (filename) + prefixlen, baselen);
+
/* Loop over suffixes. */
for (tail = NILP (suffixes) ? list1 (empty_unibyte_string) : suffixes;
CONSP (tail); tail = XCDR (tail))
@@ -1494,16 +1503,10 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes,
ptrdiff_t fnlen, lsuffix = SBYTES (suffix);
Lisp_Object handler;
- /* Concatenate path element/specified name with the suffix.
- If the directory starts with /:, remove that. */
- int prefixlen = ((SCHARS (filename) > 2
- && SREF (filename, 0) == '/'
- && SREF (filename, 1) == ':')
- ? 2 : 0);
- fnlen = SBYTES (filename) - prefixlen;
- memcpy (fn, SDATA (filename) + prefixlen, fnlen);
- memcpy (fn + fnlen, SDATA (suffix), lsuffix + 1);
- fnlen += lsuffix;
+ /* Make complete filename by appending SUFFIX. */
+ memcpy (fn + baselen, SDATA (suffix), lsuffix + 1);
+ fnlen = baselen + lsuffix;
+
/* Check that the file exists and is not a directory. */
/* We used to only check for handlers on non-absolute file names:
if (absolute)
@@ -1582,8 +1585,7 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes,
}
else
{
- int oflags = O_RDONLY + (NILP (predicate) ? 0 : O_BINARY);
- fd = emacs_open (pfn, oflags, 0);
+ fd = emacs_open (pfn, O_RDONLY, 0);
if (fd < 0)
{
if (errno != ENOENT)
@@ -2154,6 +2156,33 @@ grow_read_buffer (void)
MAX_MULTIBYTE_LENGTH, -1, 1);
}
+/* Return the scalar value that has the Unicode character name NAME.
+ Raise 'invalid-read-syntax' if there is no such character. */
+static int
+character_name_to_code (char const *name, ptrdiff_t name_len)
+{
+ /* For "U+XXXX", pass the leading '+' to string_to_number to reject
+ monstrosities like "U+-0000". */
+ Lisp_Object code
+ = (name[0] == 'U' && name[1] == '+'
+ ? string_to_number (name + 1, 16, false)
+ : call2 (Qchar_from_name, make_unibyte_string (name, name_len), Qt));
+
+ if (! RANGED_INTEGERP (0, code, MAX_UNICODE_CHAR)
+ || char_surrogate_p (XINT (code)))
+ {
+ AUTO_STRING (format, "\\N{%s}");
+ AUTO_STRING_WITH_LEN (namestr, name, name_len);
+ xsignal1 (Qinvalid_read_syntax, CALLN (Fformat, format, namestr));
+ }
+
+ return XINT (code);
+}
+
+/* Bound on the length of a Unicode character name. As of
+ Unicode 9.0.0 the maximum is 83, so this should be safe. */
+enum { UNICODE_CHARACTER_NAME_LENGTH_BOUND = 200 };
+
/* Read a \-escape sequence, assuming we already read the `\'.
If the escape sequence forces unibyte, return eight-bit char. */
@@ -2361,6 +2390,51 @@ read_escape (Lisp_Object readcharfun, bool stringp)
return i;
}
+ case 'N':
+ /* Named character. */
+ {
+ c = READCHAR;
+ if (c != '{')
+ invalid_syntax ("Expected opening brace after \\N");
+ char name[UNICODE_CHARACTER_NAME_LENGTH_BOUND + 1];
+ bool whitespace = false;
+ ptrdiff_t length = 0;
+ while (true)
+ {
+ c = READCHAR;
+ if (c < 0)
+ end_of_file_error ();
+ if (c == '}')
+ break;
+ if (! (0 < c && c < 0x80))
+ {
+ AUTO_STRING (format,
+ "Invalid character U+%04X in character name");
+ xsignal1 (Qinvalid_read_syntax,
+ CALLN (Fformat, format, make_natnum (c)));
+ }
+ /* Treat multiple adjacent whitespace characters as a
+ single space character. This makes it easier to use
+ character names in e.g. multi-line strings. */
+ if (c_isspace (c))
+ {
+ if (whitespace)
+ continue;
+ c = ' ';
+ whitespace = true;
+ }
+ else
+ whitespace = false;
+ name[length++] = c;
+ if (length >= sizeof name)
+ invalid_syntax ("Character name too long");
+ }
+ if (length == 0)
+ invalid_syntax ("Empty character name");
+ name[length] = '\0';
+ return character_name_to_code (name, length);
+ }
+
default:
return c;
}
@@ -4417,18 +4491,24 @@ void
dir_warning (char const *use, Lisp_Object dirname)
{
static char const format[] = "Warning: %s '%s': %s\n";
- int access_errno = errno;
- fprintf (stderr, format, use, SSDATA (ENCODE_SYSTEM (dirname)),
- strerror (access_errno));
+ char *diagnostic = emacs_strerror (errno);
+ fprintf (stderr, format, use, SSDATA (ENCODE_SYSTEM (dirname)), diagnostic);
/* Don't log the warning before we've initialized!! */
if (initialized)
{
- char const *diagnostic = emacs_strerror (access_errno);
+ ptrdiff_t diaglen = strlen (diagnostic);
+ AUTO_STRING_WITH_LEN (diag, diagnostic, diaglen);
+ if (! NILP (Vlocale_coding_system))
+ {
+ Lisp_Object s
+ = code_convert_string_norecord (diag, Vlocale_coding_system, false);
+ diagnostic = SSDATA (s);
+ diaglen = SBYTES (s);
+ }
USE_SAFE_ALLOCA;
char *buffer = SAFE_ALLOCA (sizeof format - 3 * (sizeof "%s" - 1)
- + strlen (use) + SBYTES (dirname)
- + strlen (diagnostic));
+ + strlen (use) + SBYTES (dirname) + diaglen);
ptrdiff_t message_len = esprintf (buffer, format, use, SSDATA (dirname),
diagnostic);
message_dolog (buffer, message_len, 0, STRING_MULTIBYTE (dirname));
@@ -4750,4 +4830,6 @@ that are loaded before your customizations are read! */);
DEFSYM (Qweakness, "weakness");
DEFSYM (Qrehash_size, "rehash-size");
DEFSYM (Qrehash_threshold, "rehash-threshold");
+
+ DEFSYM (Qchar_from_name, "char-from-name");
}
diff --git a/src/macfont.m b/src/macfont.m
index 04456283fa..c799100c85 100644
--- a/src/macfont.m
+++ b/src/macfont.m
@@ -2856,7 +2856,8 @@ macfont_draw (struct glyph_string *s, int from, int to, int x, int y,
{
if (s->hl == DRAW_MOUSE_FACE)
{
- face = FACE_FROM_ID (s->f, MOUSE_HL_INFO (s->f)->mouse_face_face_id);
+ face = FACE_FROM_ID_OR_NULL (s->f,
+ MOUSE_HL_INFO (s->f)->mouse_face_face_id);
if (!face)
face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
}
@@ -3766,6 +3767,7 @@ mac_font_shape (CTFontRef font, CFStringRef string,
{
struct mac_glyph_layout *gl;
CGPoint position;
+ CGFloat max_x;
if (!RIGHT_TO_LEFT_P)
gl = glbuf + range.location;
@@ -3787,12 +3789,13 @@ mac_font_shape (CTFontRef font, CFStringRef string,
CTRunGetGlyphs (ctrun, range, &gl->glyph_id);
CTRunGetPositions (ctrun, range, &position);
+ max_x = position.x + CTRunGetTypographicBounds (ctrun, range,
+ NULL, NULL, NULL);
+ max_x = max (max_x, total_advance);
gl->advance_delta = position.x - total_advance;
gl->baseline_delta = position.y;
- gl->advance = (gl->advance_delta
- + CTRunGetTypographicBounds (ctrun, range,
- NULL, NULL, NULL));
- total_advance += gl->advance;
+ gl->advance = max_x - total_advance;
+ total_advance = max_x;
}
if (RIGHT_TO_LEFT_P)
diff --git a/src/menu.c b/src/menu.c
index 9504cee592..90bb19a2e9 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -42,12 +42,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif /* HAVE_WINDOW_SYSTEM */
#ifdef HAVE_NTGUI
-# ifdef NTGUI_UNICODE
-# define unicode_append_menu AppendMenuW
-# else /* !NTGUI_UNICODE */
extern AppendMenuW_Proc unicode_append_menu;
-# endif /* NTGUI_UNICODE */
-extern HMENU current_popup_menu;
#endif /* HAVE_NTGUI */
#include "menu.h"
@@ -408,7 +403,7 @@ single_menu_item (Lisp_Object key, Lisp_Object item, Lisp_Object dummy, void *sk
if (prefix)
{
- AUTO_STRING (prefix_obj, prefix);
+ AUTO_STRING_WITH_LEN (prefix_obj, prefix, 4);
item_string = concat2 (prefix_obj, item_string);
}
}
diff --git a/src/minibuf.c b/src/minibuf.c
index 3d34635c6c..57eea05b0f 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -194,7 +194,7 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
int c;
unsigned char hide_char = 0;
struct emacs_tty etty;
- bool etty_valid;
+ bool etty_valid UNINIT;
/* Check, whether we need to suppress echoing. */
if (CHARACTERP (Vread_hide_char))
@@ -203,10 +203,10 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
/* Manipulate tty. */
if (hide_char)
{
- etty_valid = emacs_get_tty (fileno (stdin), &etty) == 0;
+ etty_valid = emacs_get_tty (STDIN_FILENO, &etty) == 0;
if (etty_valid)
- set_binary_mode (fileno (stdin), O_BINARY);
- suppress_echo_on_tty (fileno (stdin));
+ set_binary_mode (STDIN_FILENO, O_BINARY);
+ suppress_echo_on_tty (STDIN_FILENO);
}
fwrite (SDATA (prompt), 1, SBYTES (prompt), stdout);
@@ -240,8 +240,8 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
fprintf (stdout, "\n");
if (etty_valid)
{
- emacs_set_tty (fileno (stdin), &etty, 0);
- set_binary_mode (fileno (stdin), O_TEXT);
+ emacs_set_tty (STDIN_FILENO, &etty, 0);
+ set_binary_mode (STDIN_FILENO, O_TEXT);
}
}
@@ -630,8 +630,31 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
Qrear_nonsticky, Qt, Qnil);
Fput_text_property (make_number (BEG), make_number (PT),
Qfield, Qt, Qnil);
- Fadd_text_properties (make_number (BEG), make_number (PT),
- Vminibuffer_prompt_properties, Qnil);
+ if (CONSP (Vminibuffer_prompt_properties))
+ {
+ /* We want to apply all properties from
+ `minibuffer-prompt-properties' to the region normally,
+ but if the `face' property is present, add that
+ property to the end of the face properties to avoid
+ overwriting faces. */
+ Lisp_Object list = Vminibuffer_prompt_properties;
+ while (CONSP (list))
+ {
+ Lisp_Object key = XCAR (list);
+ list = XCDR (list);
+ if (CONSP (list))
+ {
+ Lisp_Object val = XCAR (list);
+ list = XCDR (list);
+ if (EQ (key, Qface))
+ Fadd_face_text_property (make_number (BEG),
+ make_number (PT), val, Qt, Qnil);
+ else
+ Fput_text_property (make_number (BEG), make_number (PT),
+ key, val, Qnil);
+ }
+ }
+ }
}
unbind_to (count1, Qnil);
}
@@ -742,27 +765,25 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
}
/* Return a buffer to be used as the minibuffer at depth `depth'.
- depth = 0 is the lowest allowed argument, and that is the value
- used for nonrecursive minibuffer invocations. */
+ depth = 0 is the lowest allowed argument, and that is the value
+ used for nonrecursive minibuffer invocations. */
Lisp_Object
get_minibuffer (EMACS_INT depth)
{
- Lisp_Object tail, num, buf;
- char name[sizeof " *Minibuf-*" + INT_STRLEN_BOUND (EMACS_INT)];
-
- XSETFASTINT (num, depth);
- tail = Fnthcdr (num, Vminibuffer_list);
+ Lisp_Object tail = Fnthcdr (make_number (depth), Vminibuffer_list);
if (NILP (tail))
{
tail = list1 (Qnil);
Vminibuffer_list = nconc2 (Vminibuffer_list, tail);
}
- buf = Fcar (tail);
+ Lisp_Object buf = Fcar (tail);
if (NILP (buf) || !BUFFER_LIVE_P (XBUFFER (buf)))
{
- buf = Fget_buffer_create
- (make_formatted_string (name, " *Minibuf-%"pI"d*", depth));
+ static char const name_fmt[] = " *Minibuf-%"pI"d*";
+ char name[sizeof name_fmt + INT_STRLEN_BOUND (EMACS_INT)];
+ AUTO_STRING_WITH_LEN (lname, name, sprintf (name, name_fmt, depth));
+ buf = Fget_buffer_create (lname);
/* Although the buffer's name starts with a space, undo should be
enabled in it. */
@@ -1665,6 +1686,8 @@ the values STRING, PREDICATE and `lambda'. */)
tem = Fassoc_string (string, collection, completion_ignore_case ? Qt : Qnil);
if (NILP (tem))
return Qnil;
+ else if (CONSP (tem))
+ tem = XCAR (tem);
}
else if (VECTORP (collection))
{
diff --git a/src/msdos.c b/src/msdos.c
index 62411ea2f6..73d755ae64 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -795,8 +795,8 @@ static void
IT_set_face (int face)
{
struct frame *sf = SELECTED_FRAME ();
- struct face *fp = FACE_FROM_ID (sf, face);
- struct face *dfp = FACE_FROM_ID (sf, DEFAULT_FACE_ID);
+ struct face *fp = FACE_FROM_ID_OR_NULL (sf, face);
+ struct face *dfp = FACE_FROM_ID_OR_NULL (sf, DEFAULT_FACE_ID);
unsigned long fg, bg, dflt_fg, dflt_bg;
struct tty_display_info *tty = FRAME_TTY (sf);
@@ -1076,7 +1076,7 @@ IT_clear_screen (struct frame *f)
any valid faces and will abort. Instead, use the initial screen
colors; that should mimic what a Unix tty does, which simply clears
the screen with whatever default colors are in use. */
- if (FACE_FROM_ID (SELECTED_FRAME (), DEFAULT_FACE_ID) == NULL)
+ if (FACE_FROM_ID_OR_NULL (SELECTED_FRAME (), DEFAULT_FACE_ID) == NULL)
ScreenAttrib = (initial_screen_colors[0] << 4) | initial_screen_colors[1];
else
IT_set_face (0);
diff --git a/src/nsfns.m b/src/nsfns.m
index 9bc6c1d341..051e509191 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -726,9 +726,9 @@ x_set_internal_border_width (struct frame *f, Lisp_Object arg, Lisp_Object oldva
int old_width = FRAME_INTERNAL_BORDER_WIDTH (f);
CHECK_TYPE_RANGED_INTEGER (int, arg);
- FRAME_INTERNAL_BORDER_WIDTH (f) = XINT (arg);
+ f->internal_border_width = XINT (arg);
if (FRAME_INTERNAL_BORDER_WIDTH (f) < 0)
- FRAME_INTERNAL_BORDER_WIDTH (f) = 0;
+ f->internal_border_width = 0;
if (FRAME_INTERNAL_BORDER_WIDTH (f) == old_width)
return;
@@ -983,8 +983,8 @@ frame_parm_handler ns_frame_parm_handlers[] =
x_set_icon_name,
x_set_icon_type,
x_set_internal_border_width, /* generic OK */
- 0, /* x_set_right_divider_width */
- 0, /* x_set_bottom_divider_width */
+ x_set_right_divider_width,
+ x_set_bottom_divider_width,
x_set_menu_bar_lines,
x_set_mouse_color,
x_explicitly_set_name,
diff --git a/src/nsfont.m b/src/nsfont.m
index 92e7d1154b..569a69f9fe 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -1071,7 +1071,8 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
face = s->face;
break;
case NS_DUMPGLYPH_MOUSEFACE:
- face = FACE_FROM_ID (s->f, MOUSE_HL_INFO (s->f)->mouse_face_face_id);
+ face = FACE_FROM_ID_OR_NULL (s->f,
+ MOUSE_HL_INFO (s->f)->mouse_face_face_id);
if (!face)
face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
break;
diff --git a/src/nsmenu.m b/src/nsmenu.m
index 7d340e8ec8..d1f4b020bb 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -136,12 +136,6 @@ ns_update_menubar (struct frame *f, bool deep_p, EmacsMenu *submenu)
menu = [[EmacsMenu alloc] initWithTitle: ns_app_name];
needsSet = YES;
}
- else
- { /* close up anything on there */
- id attMenu = [menu attachedMenu];
- if (attMenu != nil)
- [attMenu close];
- }
#if NSMENUPROFILE
ftime (&tb);
@@ -1426,29 +1420,19 @@ update_frame_tool_bar (struct frame *f)
========================================================================== */
-struct Popdown_data
-{
- NSAutoreleasePool *pool;
- EmacsDialogPanel *dialog;
-};
-
static void
pop_down_menu (void *arg)
{
- struct Popdown_data *unwind_data = arg;
+ EmacsDialogPanel *panel = arg;
- block_input ();
if (popup_activated_flag)
{
- EmacsDialogPanel *panel = unwind_data->dialog;
+ block_input ();
popup_activated_flag = 0;
[panel close];
- [unwind_data->pool release];
[[FRAME_NS_VIEW (SELECTED_FRAME ()) window] makeKeyWindow];
+ unblock_input ();
}
-
- xfree (unwind_data);
- unblock_input ();
}
@@ -1459,7 +1443,6 @@ ns_popup_dialog (struct frame *f, Lisp_Object header, Lisp_Object contents)
Lisp_Object tem, title;
NSPoint p;
BOOL isQ;
- NSAutoreleasePool *pool;
NSTRACE ("ns_popup_dialog");
@@ -1479,18 +1462,13 @@ ns_popup_dialog (struct frame *f, Lisp_Object header, Lisp_Object contents)
contents = list2 (title, Fcons (build_string ("Ok"), Qt));
block_input ();
- pool = [[NSAutoreleasePool alloc] init];
dialog = [[EmacsDialogPanel alloc] initFromContents: contents
isQuestion: isQ];
{
ptrdiff_t specpdl_count = SPECPDL_INDEX ();
- struct Popdown_data *unwind_data = xmalloc (sizeof (*unwind_data));
-
- unwind_data->pool = pool;
- unwind_data->dialog = dialog;
- record_unwind_protect_ptr (pop_down_menu, unwind_data);
+ record_unwind_protect_ptr (pop_down_menu, dialog);
popup_activated_flag = 1;
tem = [dialog runDialogAt: p];
unbind_to (specpdl_count, Qnil); /* calls pop_down_menu */
@@ -1865,7 +1843,7 @@ ns_popup_dialog (struct frame *f, Lisp_Object header, Lisp_Object contents)
if (EQ (ret, Qundefined) && window_closed)
/* Make close button pressed equivalent to C-g. */
- Fsignal (Qquit, Qnil);
+ quit ();
return ret;
}
diff --git a/src/nsterm.h b/src/nsterm.h
index 4b246bd3d0..3d8b1a16a3 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -676,11 +676,13 @@ char const * nstrace_fullscreen_type_name (int);
/* offset to the bottom of knob of last mouse down */
CGFloat last_mouse_offset;
float min_portion;
- int pixel_height;
+ int pixel_length;
enum scroll_bar_part last_hit_part;
BOOL condemned;
+ BOOL horizontal;
+
/* optimize against excessive positioning calls generated by emacs */
int em_position;
int em_portion;
@@ -1012,7 +1014,7 @@ struct x_output
#define FRAME_NS_TITLEBAR_HEIGHT(f) ((f)->output_data.ns->titlebar_height)
#define FRAME_TOOLBAR_HEIGHT(f) ((f)->output_data.ns->toolbar_height)
-#define FRAME_DEFAULT_FACE(f) FACE_FROM_ID (f, DEFAULT_FACE_ID)
+#define FRAME_DEFAULT_FACE(f) FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID)
#define FRAME_NS_VIEW(f) ((f)->output_data.ns->view)
#define FRAME_CURSOR_COLOR(f) ((f)->output_data.ns->cursor_color)
diff --git a/src/nsterm.m b/src/nsterm.m
index 4d9d10559e..dcc1e87280 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -1806,23 +1806,6 @@ x_set_window_size (struct frame *f,
[window setFrame: wr display: YES];
- /* This is a trick to compensate for Emacs' managing the scrollbar area
- as a fixed number of standard character columns. Instead of leaving
- blank space for the extra, we chopped it off above. Now for
- left-hand scrollbars, we shift all rendering to the left by the
- difference between the real width and Emacs' imagined one. For
- right-hand bars, don't worry about it since the extra is never used.
- (Obviously doesn't work for vertically split windows tho..) */
- {
- NSPoint origin = FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f)
- ? NSMakePoint (FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f)
- - NS_SCROLL_BAR_WIDTH (f), 0)
- : NSMakePoint (0, 0);
-
- [view setFrame: NSMakeRect (0, 0, pixelwidth, pixelheight)];
- [view setBoundsOrigin: origin];
- }
-
[view updateFrameSize: NO];
unblock_input ();
}
@@ -2878,7 +2861,10 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
{
if (cursor_width < 1)
cursor_width = max (FRAME_CURSOR_WIDTH (f), 1);
- w->phys_cursor_width = cursor_width;
+
+ /* The bar cursor should never be wider than the glyph. */
+ if (cursor_width < w->phys_cursor_width)
+ w->phys_cursor_width = cursor_width;
}
/* If we have an HBAR, "cursor_width" MAY specify height. */
else if (cursor_type == HBAR_CURSOR)
@@ -2895,12 +2881,11 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
r.size.height = h;
r.size.width = w->phys_cursor_width;
- /* TODO: only needed in rare cases with last-resort font in HELLO..
- should we do this more efficiently? */
- ns_clip_to_row (w, glyph_row, ANY_AREA, NO); /* do ns_focus(f, &r, 1); if remove */
+ /* Prevent the cursor from being drawn outside the text area. */
+ ns_clip_to_row (w, glyph_row, TEXT_AREA, NO); /* do ns_focus(f, &r, 1); if remove */
- face = FACE_FROM_ID (f, phys_cursor_glyph->face_id);
+ face = FACE_FROM_ID_OR_NULL (f, phys_cursor_glyph->face_id);
if (face && NS_FACE_BACKGROUND (face)
== ns_index_color (FRAME_CURSOR_COLOR (f), f))
{
@@ -2972,11 +2957,12 @@ ns_draw_vertical_window_border (struct window *w, int x, int y0, int y1)
NSTRACE ("ns_draw_vertical_window_border");
- face = FACE_FROM_ID (f, VERTICAL_BORDER_FACE_ID);
- if (face)
- [ns_lookup_indexed_color(face->foreground, f) set];
+ face = FACE_FROM_ID_OR_NULL (f, VERTICAL_BORDER_FACE_ID);
ns_focus (f, &r, 1);
+ if (face)
+ [ns_lookup_indexed_color(face->foreground, f) set];
+
NSRectFill(r);
ns_unfocus (f);
}
@@ -2994,11 +2980,12 @@ ns_draw_window_divider (struct window *w, int x0, int x1, int y0, int y1)
NSTRACE ("ns_draw_window_divider");
- face = FACE_FROM_ID (f, WINDOW_DIVIDER_FACE_ID);
- if (face)
- [ns_lookup_indexed_color(face->foreground, f) set];
+ face = FACE_FROM_ID_OR_NULL (f, WINDOW_DIVIDER_FACE_ID);
ns_focus (f, &r, 1);
+ if (face)
+ [ns_lookup_indexed_color(face->foreground, f) set];
+
NSRectFill(r);
ns_unfocus (f);
}
@@ -3327,9 +3314,10 @@ ns_dumpglyphs_box_or_relief (struct glyph_string *s)
if (s->hl == DRAW_MOUSE_FACE)
{
- face = FACE_FROM_ID (s->f, MOUSE_HL_INFO (s->f)->mouse_face_face_id);
+ face = FACE_FROM_ID_OR_NULL (s->f,
+ MOUSE_HL_INFO (s->f)->mouse_face_face_id);
if (!face)
- face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
+ face = FACE_FROM_ID_OR_NULL (s->f, MOUSE_FACE_ID);
}
else
face = s->face;
@@ -3394,8 +3382,9 @@ ns_maybe_dumpglyphs_background (struct glyph_string *s, char force_p)
struct face *face;
if (s->hl == DRAW_MOUSE_FACE)
{
- face = FACE_FROM_ID (s->f,
- MOUSE_HL_INFO (s->f)->mouse_face_face_id);
+ face
+ = FACE_FROM_ID_OR_NULL (s->f,
+ MOUSE_HL_INFO (s->f)->mouse_face_face_id);
if (!face)
face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
}
@@ -3461,7 +3450,8 @@ ns_dumpglyphs_image (struct glyph_string *s, NSRect r)
with its background color), we must clear just the image area. */
if (s->hl == DRAW_MOUSE_FACE)
{
- face = FACE_FROM_ID (s->f, MOUSE_HL_INFO (s->f)->mouse_face_face_id);
+ face = FACE_FROM_ID_OR_NULL (s->f,
+ MOUSE_HL_INFO (s->f)->mouse_face_face_id);
if (!face)
face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
}
@@ -3578,7 +3568,8 @@ ns_dumpglyphs_stretch (struct glyph_string *s)
if (s->hl == DRAW_MOUSE_FACE)
{
- face = FACE_FROM_ID (s->f, MOUSE_HL_INFO (s->f)->mouse_face_face_id);
+ face = FACE_FROM_ID_OR_NULL (s->f,
+ MOUSE_HL_INFO (s->f)->mouse_face_face_id);
if (!face)
face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
}
@@ -3656,6 +3647,32 @@ ns_dumpglyphs_stretch (struct glyph_string *s)
static void
+ns_draw_glyph_string_foreground (struct glyph_string *s)
+{
+ int x, flags;
+ struct font *font = s->font;
+
+ /* If first glyph of S has a left box line, start drawing the text
+ of S to the right of that box line. */
+ if (s->face && s->face->box != FACE_NO_BOX
+ && s->first_glyph->left_box_line_p)
+ x = s->x + eabs (s->face->box_line_width);
+ else
+ x = s->x;
+
+ flags = s->hl == DRAW_CURSOR ? NS_DUMPGLYPH_CURSOR :
+ (s->hl == DRAW_MOUSE_FACE ? NS_DUMPGLYPH_MOUSEFACE :
+ (s->for_overlaps ? NS_DUMPGLYPH_FOREGROUND :
+ NS_DUMPGLYPH_NORMAL));
+
+ font->driver->draw
+ (s, s->cmp_from, s->nchars, x, s->ybase,
+ (flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p)
+ || flags == NS_DUMPGLYPH_MOUSEFACE);
+}
+
+
+static void
ns_draw_composite_glyph_string_foreground (struct glyph_string *s)
{
int i, j, x;
@@ -3753,7 +3770,7 @@ ns_draw_glyph_string (struct glyph_string *s)
{
/* TODO (optimize): focus for box and contents draw */
NSRect r[2];
- int n, flags;
+ int n;
char box_drawn_p = 0;
struct font *font = s->face->font;
if (! font) font = FRAME_FONT (s->f);
@@ -3823,11 +3840,6 @@ ns_draw_glyph_string (struct glyph_string *s)
ns_maybe_dumpglyphs_background
(s, s->first_glyph->type == COMPOSITE_GLYPH);
- flags = s->hl == DRAW_CURSOR ? NS_DUMPGLYPH_CURSOR :
- (s->hl == DRAW_MOUSE_FACE ? NS_DUMPGLYPH_MOUSEFACE :
- (s->for_overlaps ? NS_DUMPGLYPH_FOREGROUND :
- NS_DUMPGLYPH_NORMAL));
-
if (s->hl == DRAW_CURSOR && s->w->phys_cursor_type == FILLED_BOX_CURSOR)
{
unsigned long tmp = NS_FACE_BACKGROUND (s->face);
@@ -3841,10 +3853,7 @@ ns_draw_glyph_string (struct glyph_string *s)
if (isComposite)
ns_draw_composite_glyph_string_foreground (s);
else
- font->driver->draw
- (s, s->cmp_from, s->nchars, s->x, s->ybase,
- (flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p)
- || flags == NS_DUMPGLYPH_MOUSEFACE);
+ ns_draw_glyph_string_foreground (s);
}
{
@@ -4091,6 +4100,9 @@ ns_read_socket (struct terminal *terminal, struct input_event *hold_quit)
NSTRACE_WHEN (NSTRACE_GROUP_EVENTS, "ns_read_socket");
+ if (apploopnr > 0)
+ return -1; /* Already within event loop. */
+
#ifdef HAVE_NATIVE_FS
check_native_fs ();
#endif
@@ -4175,6 +4187,9 @@ ns_select (int nfds, fd_set *readfds, fd_set *writefds,
NSTRACE_WHEN (NSTRACE_GROUP_EVENTS, "ns_select");
+ if (apploopnr > 0)
+ return -1; /* Already within event loop. */
+
#ifdef HAVE_NATIVE_FS
check_native_fs ();
#endif
@@ -4355,7 +4370,7 @@ ns_set_vertical_scroll_bar (struct window *window,
window_box (window, ANY_AREA, 0, &window_y, 0, &window_height);
top = window_y;
height = window_height;
- width = WINDOW_CONFIG_SCROLL_BAR_COLS (window) * FRAME_COLUMN_WIDTH (f);
+ width = NS_SCROLL_BAR_WIDTH (f);
left = WINDOW_SCROLL_BAR_AREA_X (window);
r = NSMakeRect (left, top, width, height);
@@ -4446,34 +4461,20 @@ ns_set_horizontal_scroll_bar (struct window *window,
NSTRACE ("ns_set_horizontal_scroll_bar");
/* Get dimensions. */
- window_box (window, ANY_AREA, 0, &window_x, &window_width, 0);
+ window_box (window, ANY_AREA, &window_x, 0, &window_width, 0);
left = window_x;
width = window_width;
- height = WINDOW_CONFIG_SCROLL_BAR_LINES (window) * FRAME_LINE_HEIGHT (f);
+ height = NS_SCROLL_BAR_HEIGHT (f);
top = WINDOW_SCROLL_BAR_AREA_Y (window);
r = NSMakeRect (left, top, width, height);
/* the parent view is flipped, so we need to flip y value */
v = [view frame];
- /* ??????? PXW/scrollbars !!!!!!!!!!!!!!!!!!!! */
r.origin.y = (v.size.height - r.size.height - r.origin.y);
XSETWINDOW (win, window);
block_input ();
- if (WINDOW_TOTAL_COLS (window) < 5)
- {
- if (!NILP (window->horizontal_scroll_bar))
- {
- bar = XNS_SCROLL_BAR (window->horizontal_scroll_bar);
- [bar removeFromSuperview];
- wset_horizontal_scroll_bar (window, Qnil);
- }
- ns_clear_frame_area (f, left, top, width, height);
- unblock_input ();
- return;
- }
-
if (NILP (window->horizontal_scroll_bar))
{
if (width > 0 && height > 0)
@@ -4488,16 +4489,22 @@ ns_set_horizontal_scroll_bar (struct window *window,
NSRect oldRect;
bar = XNS_SCROLL_BAR (window->horizontal_scroll_bar);
oldRect = [bar frame];
- r.size.width = oldRect.size.width;
if (FRAME_LIVE_P (f) && !NSEqualRects (oldRect, r))
{
- if (oldRect.origin.x != r.origin.x)
- ns_clear_frame_area (f, left, top, width, height);
+ if (oldRect.origin.y != r.origin.y)
+ ns_clear_frame_area (f, left, top, width, height);
[bar setFrame: r];
update_p = YES;
}
}
+ /* If there are both horizontal and vertical scroll-bars they leave
+ a square that belongs to neither. We need to clear it otherwise
+ it fills with junk. */
+ if (!NILP (window->vertical_scroll_bar))
+ ns_clear_frame_area (f, WINDOW_SCROLL_BAR_AREA_X (window), top,
+ NS_SCROLL_BAR_HEIGHT (f), height);
+
if (update_p)
[bar setPosition: position portion: portion whole: whole];
unblock_input ();
@@ -4535,13 +4542,15 @@ ns_redeem_scroll_bar (struct window *window)
{
id bar;
NSTRACE ("ns_redeem_scroll_bar");
- if (!NILP (window->vertical_scroll_bar))
+ if (!NILP (window->vertical_scroll_bar)
+ && WINDOW_HAS_VERTICAL_SCROLL_BAR (window))
{
bar = XNS_SCROLL_BAR (window->vertical_scroll_bar);
[bar reprieve];
}
- if (!NILP (window->horizontal_scroll_bar))
+ if (!NILP (window->horizontal_scroll_bar)
+ && WINDOW_HAS_HORIZONTAL_SCROLL_BAR (window))
{
bar = XNS_SCROLL_BAR (window->horizontal_scroll_bar);
[bar reprieve];
@@ -6188,8 +6197,14 @@ not_in_argv (NSString *arg)
+FRAME_LINE_HEIGHT (emacsframe));
pt = [self convertPoint: pt toView: nil];
+#if !defined (NS_IMPL_COCOA) || \
+ MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
pt = [[self window] convertBaseToScreen: pt];
rect.origin = pt;
+#else
+ rect.origin = pt;
+ rect = [[self window] convertRectToScreen: rect];
+#endif
return rect;
}
@@ -8112,12 +8127,15 @@ not_in_argv (NSString *arg)
return r;
}
-
- initFrame: (NSRect )r window: (Lisp_Object)nwin
{
NSTRACE ("[EmacsScroller initFrame: window:]");
- r.size.width = [EmacsScroller scrollerWidth];
+ if (r.size.width > r.size.height)
+ horizontal = YES;
+ else
+ horizontal = NO;
+
[super initWithFrame: r/*NSMakeRect (0, 0, 0, 0)*/];
[self setContinuous: YES];
[self setEnabled: YES];
@@ -8133,9 +8151,12 @@ not_in_argv (NSString *arg)
window = XWINDOW (nwin);
condemned = NO;
- pixel_height = NSHeight (r);
- if (pixel_height == 0) pixel_height = 1;
- min_portion = 20 / pixel_height;
+ if (horizontal)
+ pixel_length = NSWidth (r);
+ else
+ pixel_length = NSHeight (r);
+ if (pixel_length == 0) pixel_length = 1;
+ min_portion = 20 / pixel_length;
frame = XFRAME (window->frame);
if (FRAME_LIVE_P (frame))
@@ -8164,9 +8185,12 @@ not_in_argv (NSString *arg)
NSTRACE ("[EmacsScroller setFrame:]");
/* block_input (); */
- pixel_height = NSHeight (newRect);
- if (pixel_height == 0) pixel_height = 1;
- min_portion = 20 / pixel_height;
+ if (horizontal)
+ pixel_length = NSWidth (newRect);
+ else
+ pixel_length = NSHeight (newRect);
+ if (pixel_length == 0) pixel_length = 1;
+ min_portion = 20 / pixel_length;
[super setFrame: newRect];
/* unblock_input (); */
}
@@ -8176,7 +8200,12 @@ not_in_argv (NSString *arg)
{
NSTRACE ("[EmacsScroller dealloc]");
if (window)
- wset_vertical_scroll_bar (window, Qnil);
+ {
+ if (horizontal)
+ wset_horizontal_scroll_bar (window, Qnil);
+ else
+ wset_vertical_scroll_bar (window, Qnil);
+ }
window = 0;
[super dealloc];
}
@@ -8211,7 +8240,12 @@ not_in_argv (NSString *arg)
if (view != nil)
view->scrollbarsNeedingUpdate++;
if (window)
- wset_vertical_scroll_bar (window, Qnil);
+ {
+ if (horizontal)
+ wset_horizontal_scroll_bar (window, Qnil);
+ else
+ wset_vertical_scroll_bar (window, Qnil);
+ }
window = 0;
[self removeFromSuperview];
[self release];
@@ -8261,7 +8295,7 @@ not_in_argv (NSString *arg)
{
float pos;
CGFloat por;
- portion = max ((float)whole*min_portion/pixel_height, portion);
+ portion = max ((float)whole*min_portion/pixel_length, portion);
pos = (float)position / (whole - portion);
por = (CGFloat)portion/whole;
#ifdef NS_IMPL_COCOA
@@ -8291,10 +8325,20 @@ not_in_argv (NSString *arg)
XSETWINDOW (win, window);
emacs_event->frame_or_window = win;
emacs_event->timestamp = EV_TIMESTAMP (e);
- emacs_event->kind = SCROLL_BAR_CLICK_EVENT;
emacs_event->arg = Qnil;
- XSETINT (emacs_event->x, loc * pixel_height);
- XSETINT (emacs_event->y, pixel_height-20);
+
+ if (horizontal)
+ {
+ emacs_event->kind = HORIZONTAL_SCROLL_BAR_CLICK_EVENT;
+ XSETINT (emacs_event->x, em_whole * loc / pixel_length);
+ XSETINT (emacs_event->y, em_whole);
+ }
+ else
+ {
+ emacs_event->kind = SCROLL_BAR_CLICK_EVENT;
+ XSETINT (emacs_event->x, loc);
+ XSETINT (emacs_event->y, pixel_length-20);
+ }
if (q_event_ptr)
{
@@ -8357,15 +8401,15 @@ not_in_argv (NSString *arg)
switch (part)
{
case NSScrollerDecrementPage:
- last_hit_part = scroll_bar_above_handle; inc = -1.0; break;
+ last_hit_part = horizontal ? scroll_bar_before_handle : scroll_bar_above_handle; break;
case NSScrollerIncrementPage:
- last_hit_part = scroll_bar_below_handle; inc = 1.0; break;
+ last_hit_part = horizontal ? scroll_bar_after_handle : scroll_bar_below_handle; break;
case NSScrollerDecrementLine:
- last_hit_part = scroll_bar_up_arrow; inc = -0.1; break;
+ last_hit_part = horizontal ? scroll_bar_left_arrow : scroll_bar_up_arrow; break;
case NSScrollerIncrementLine:
- last_hit_part = scroll_bar_down_arrow; inc = 0.1; break;
+ last_hit_part = horizontal ? scroll_bar_right_arrow : scroll_bar_down_arrow; break;
case NSScrollerKnob:
- last_hit_part = scroll_bar_handle; break;
+ last_hit_part = horizontal ? scroll_bar_horizontal_handle : scroll_bar_handle; break;
case NSScrollerKnobSlot: /* GNUstep-only */
last_hit_part = scroll_bar_move_ratio; break;
default: /* NSScrollerNoPart? */
@@ -8374,36 +8418,34 @@ not_in_argv (NSString *arg)
return;
}
- if (inc != 0.0)
- {
- pos = 0; /* ignored */
-
- /* set a timer to repeat, as we can't let superclass do this modally */
- scroll_repeat_entry
- = [[NSTimer scheduledTimerWithTimeInterval: SCROLL_BAR_FIRST_DELAY
- target: self
- selector: @selector (repeatScroll:)
- userInfo: 0
- repeats: YES]
- retain];
- }
- else
+ if (part == NSScrollerKnob || part == NSScrollerKnobSlot)
{
/* handle, or on GNUstep possibly slot */
NSEvent *fake_event;
+ int length;
/* compute float loc in slot and mouse offset on knob */
sr = [self convertRect: [self rectForPart: NSScrollerKnobSlot]
toView: nil];
- loc = NSHeight (sr) - ([e locationInWindow].y - NSMinY (sr));
+ if (horizontal)
+ {
+ length = NSWidth (sr);
+ loc = ([e locationInWindow].x - NSMinX (sr));
+ }
+ else
+ {
+ length = NSHeight (sr);
+ loc = length - ([e locationInWindow].y - NSMinY (sr));
+ }
+
if (loc <= 0.0)
{
loc = 0.0;
edge = -1;
}
- else if (loc >= NSHeight (sr))
+ else if (loc >= length)
{
- loc = NSHeight (sr);
+ loc = length;
edge = 1;
}
@@ -8413,17 +8455,16 @@ not_in_argv (NSString *arg)
{
kr = [self convertRect: [self rectForPart: NSScrollerKnob]
toView: nil];
- kloc = NSHeight (kr) - ([e locationInWindow].y - NSMinY (kr));
+ if (horizontal)
+ kloc = ([e locationInWindow].x - NSMinX (kr));
+ else
+ kloc = NSHeight (kr) - ([e locationInWindow].y - NSMinY (kr));
}
last_mouse_offset = kloc;
- /* if knob, tell emacs a location offset by knob pos
- (to indicate top of handle) */
- if (part == NSScrollerKnob)
- pos = (loc - last_mouse_offset) / NSHeight (sr);
- else
- /* else this is a slot click on GNUstep: go straight there */
- pos = loc / NSHeight (sr);
+ if (part != NSScrollerKnob)
+ /* this is a slot click on GNUstep: go straight there */
+ pos = loc;
/* send a fake mouse-up to super to preempt modal -trackKnob: mode */
fake_event = [NSEvent mouseEventWithType: NSLeftMouseUp
@@ -8437,6 +8478,19 @@ not_in_argv (NSString *arg)
pressure: [e pressure]];
[super mouseUp: fake_event];
}
+ else
+ {
+ pos = 0; /* ignored */
+
+ /* set a timer to repeat, as we can't let superclass do this modally */
+ scroll_repeat_entry
+ = [[NSTimer scheduledTimerWithTimeInterval: SCROLL_BAR_FIRST_DELAY
+ target: self
+ selector: @selector (repeatScroll:)
+ userInfo: 0
+ repeats: YES]
+ retain];
+ }
if (part != NSScrollerKnob)
[self sendScrollEventAtLoc: pos fromEvent: e];
@@ -8448,23 +8502,34 @@ not_in_argv (NSString *arg)
{
NSRect sr;
double loc, pos;
+ int length;
NSTRACE ("[EmacsScroller mouseDragged:]");
sr = [self convertRect: [self rectForPart: NSScrollerKnobSlot]
toView: nil];
- loc = NSHeight (sr) - ([e locationInWindow].y - NSMinY (sr));
+
+ if (horizontal)
+ {
+ length = NSWidth (sr);
+ loc = ([e locationInWindow].x - NSMinX (sr));
+ }
+ else
+ {
+ length = NSHeight (sr);
+ loc = length - ([e locationInWindow].y - NSMinY (sr));
+ }
if (loc <= 0.0)
{
loc = 0.0;
}
- else if (loc >= NSHeight (sr) + last_mouse_offset)
+ else if (loc >= length + last_mouse_offset)
{
- loc = NSHeight (sr) + last_mouse_offset;
+ loc = length + last_mouse_offset;
}
- pos = (loc - last_mouse_offset) / NSHeight (sr);
+ pos = (loc - last_mouse_offset);
[self sendScrollEventAtLoc: pos fromEvent: e];
}
diff --git a/src/print.c b/src/print.c
index 2b53d7580b..5531210e1b 100644
--- a/src/print.c
+++ b/src/print.c
@@ -38,6 +38,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <float.h>
#include <ftoastr.h>
+#ifdef WINDOWSNT
+# include <sys/socket.h> /* for F_DUPFD_CLOEXEC */
+#endif
+
struct terminal;
/* Avoid actual stack overflow in print. */
@@ -199,7 +203,7 @@ print_unwind (Lisp_Object saved_text)
static void
printchar_to_stream (unsigned int ch, FILE *stream)
{
- Lisp_Object dv IF_LINT (= Qnil);
+ Lisp_Object dv UNINIT;
ptrdiff_t i = 0, n = 1;
Lisp_Object coding_system = Vlocale_coding_system;
bool encode_p = false;
@@ -775,15 +779,6 @@ debug_output_compilation_hack (bool x)
print_output_debug_flag = x;
}
-#if defined (GNU_LINUX)
-
-/* This functionality is not vitally important in general, so we rely on
- non-portable ability to use stderr as lvalue. */
-
-#define WITH_REDIRECT_DEBUGGING_OUTPUT 1
-
-static FILE *initial_stderr_stream = NULL;
-
DEFUN ("redirect-debugging-output", Fredirect_debugging_output, Sredirect_debugging_output,
1, 2,
"FDebug output file: \nP",
@@ -793,30 +788,38 @@ Optional arg APPEND non-nil (interactively, with prefix arg) means
append to existing target file. */)
(Lisp_Object file, Lisp_Object append)
{
- if (initial_stderr_stream != NULL)
- {
- block_input ();
- fclose (stderr);
- unblock_input ();
- }
- stderr = initial_stderr_stream;
- initial_stderr_stream = NULL;
+ /* If equal to STDERR_FILENO, stderr has not been duplicated and is OK as-is.
+ Otherwise, this is a close-on-exec duplicate of the original stderr. */
+ static int stderr_dup = STDERR_FILENO;
+ int fd = stderr_dup;
- if (STRINGP (file))
+ if (! NILP (file))
{
file = Fexpand_file_name (file, Qnil);
- initial_stderr_stream = stderr;
- stderr = emacs_fopen (SSDATA (file), NILP (append) ? "w" : "a");
- if (stderr == NULL)
+
+ if (stderr_dup == STDERR_FILENO)
{
- stderr = initial_stderr_stream;
- initial_stderr_stream = NULL;
- report_file_error ("Cannot open debugging output stream", file);
+ int n = fcntl (STDERR_FILENO, F_DUPFD_CLOEXEC, STDERR_FILENO + 1);
+ if (n < 0)
+ report_file_error ("dup", file);
+ stderr_dup = n;
}
+
+ fd = emacs_open (SSDATA (ENCODE_FILE (file)),
+ (O_WRONLY | O_CREAT
+ | (! NILP (append) ? O_APPEND : O_TRUNC)),
+ 0666);
+ if (fd < 0)
+ report_file_error ("Cannot open debugging output stream", file);
}
+
+ fflush (stderr);
+ if (dup2 (fd, STDERR_FILENO) < 0)
+ report_file_error ("dup2", file);
+ if (fd != stderr_dup)
+ emacs_close (fd);
return Qnil;
}
-#endif /* GNU_LINUX */
/* This is the interface for debugging printing. */
@@ -2305,9 +2308,7 @@ priorities. */);
defsubr (&Sprint);
defsubr (&Sterpri);
defsubr (&Swrite_char);
-#ifdef WITH_REDIRECT_DEBUGGING_OUTPUT
defsubr (&Sredirect_debugging_output);
-#endif
DEFSYM (Qprint_escape_newlines, "print-escape-newlines");
DEFSYM (Qprint_escape_multibyte, "print-escape-multibyte");
diff --git a/src/process.c b/src/process.c
index 05934294a0..69d1b2a11b 100644
--- a/src/process.c
+++ b/src/process.c
@@ -75,11 +75,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
# include <sys/stropts.h>
#endif
-#ifdef HAVE_RES_INIT
-#include <arpa/nameser.h>
-#include <resolv.h>
-#endif
-
#ifdef HAVE_UTIL_H
#include <util.h>
#endif
@@ -125,15 +120,20 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#endif
+#if defined HAVE_GETADDRINFO_A || defined HAVE_GNUTLS
+/* This is 0.1s in nanoseconds. */
+#define ASYNC_RETRY_NSEC 100000000
+#endif
+
#ifdef WINDOWSNT
extern int sys_select (int, fd_set *, fd_set *, fd_set *,
struct timespec *, void *);
#endif
-/* Work around GCC 4.7.0 bug with strict overflow checking; see
+/* Work around GCC 4.3.0 bug with strict overflow checking; see
<http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52904>.
This bug appears to be fixed in GCC 5.1, so don't work around it there. */
-#if __GNUC__ == 4 && __GNUC_MINOR__ >= 3
+#if GNUC_PREREQ (4, 3, 0) && ! GNUC_PREREQ (5, 1, 0)
# pragma GCC diagnostic ignored "-Wstrict-overflow"
#endif
@@ -150,6 +150,21 @@ bool inhibit_sentinels;
#ifndef SOCK_CLOEXEC
# define SOCK_CLOEXEC 0
#endif
+#ifndef SOCK_NONBLOCK
+# define SOCK_NONBLOCK 0
+#endif
+
+/* True if ERRNUM represents an error where the system call would
+ block if a blocking variant were used. */
+static bool
+would_block (int errnum)
+{
+#ifdef EWOULDBLOCK
+ if (EWOULDBLOCK != EAGAIN && errnum == EWOULDBLOCK)
+ return true;
+#endif
+ return errnum == EAGAIN;
+}
#ifndef HAVE_ACCEPT4
@@ -193,16 +208,6 @@ static EMACS_INT process_tick;
/* Number of events for which the user or sentinel has been notified. */
static EMACS_INT update_tick;
-/* Define NON_BLOCKING_CONNECT if we can support non-blocking connects.
- The code can be simplified by assuming NON_BLOCKING_CONNECT once
- Emacs starts assuming POSIX 1003.1-2001 or later. */
-
-#if (defined HAVE_SELECT \
- && (defined GNU_LINUX || defined HAVE_GETPEERNAME) \
- && (defined EWOULDBLOCK || defined EINPROGRESS))
-# define NON_BLOCKING_CONNECT
-#endif
-
/* Define DATAGRAM_SOCKETS if datagrams can be used safely on
this system. We need to read full packets, so we need a
"non-destructive" select. So we require either native select,
@@ -233,6 +238,7 @@ static int process_output_delay_count;
static bool process_output_skip;
+static void start_process_unwind (Lisp_Object);
static void create_process (Lisp_Object, char **, Lisp_Object);
#ifdef USABLE_SIGIO
static bool keyboard_bit_set (fd_set *);
@@ -240,11 +246,8 @@ static bool keyboard_bit_set (fd_set *);
static void deactivate_process (Lisp_Object);
static int status_notify (struct Lisp_Process *, struct Lisp_Process *);
static int read_process_output (Lisp_Object, int);
-static void handle_child_signal (int);
static void create_pty (Lisp_Object);
-
-static Lisp_Object get_process (register Lisp_Object name);
-static void exec_sentinel (Lisp_Object proc, Lisp_Object reason);
+static void exec_sentinel (Lisp_Object, Lisp_Object);
/* Mask of bits indicating the descriptors that we wait for input on. */
@@ -262,7 +265,6 @@ static fd_set non_process_wait_mask;
static fd_set write_mask;
-#ifdef NON_BLOCKING_CONNECT
/* Mask of bits indicating the descriptors that we wait for connect to
complete on. Once they complete, they are removed from this mask
and added to the input_wait_mask and non_keyboard_wait_mask. */
@@ -271,7 +273,6 @@ static fd_set connect_wait_mask;
/* Number of bits set in connect_wait_mask. */
static int num_pending_connects;
-#endif /* NON_BLOCKING_CONNECT */
/* The largest descriptor currently in use for a process object; -1 if none. */
static int max_process_desc;
@@ -279,8 +280,15 @@ static int max_process_desc;
/* The largest descriptor currently in use for input; -1 if none. */
static int max_input_desc;
+/* Set the external socket descriptor for Emacs to use when
+ `make-network-process' is called with a non-nil
+ `:use-external-socket' option. The value should be either -1, or
+ the file descriptor of a socket that is already bound. */
+static int external_sock_fd;
+
/* Indexed by descriptor, gives the process (if any) for that descriptor. */
static Lisp_Object chan_process[FD_SETSIZE];
+static void wait_for_socket_fds (Lisp_Object, char const *);
/* Alist of elements (NAME . PROCESS). */
static Lisp_Object Vprocess_alist;
@@ -301,7 +309,7 @@ static struct coding_system *proc_encode_coding_system[FD_SETSIZE];
/* Table of `partner address' for datagram sockets. */
static struct sockaddr_and_len {
struct sockaddr *sa;
- int len;
+ ptrdiff_t len;
} datagram_address[FD_SETSIZE];
#define DATAGRAM_CHAN_P(chan) (datagram_address[chan].sa != 0)
#define DATAGRAM_CONN_P(proc) \
@@ -309,7 +317,6 @@ static struct sockaddr_and_len {
XPROCESS (proc)->infd >= 0 && \
datagram_address[XPROCESS (proc)->infd].sa != 0)
#else
-#define DATAGRAM_CHAN_P(chan) (0)
#define DATAGRAM_CONN_P(proc) (0)
#endif
@@ -381,11 +388,6 @@ pset_sentinel (struct Lisp_Process *p, Lisp_Object val)
p->sentinel = NILP (val) ? Qinternal_default_process_sentinel : val;
}
static void
-pset_status (struct Lisp_Process *p, Lisp_Object val)
-{
- p->status = val;
-}
-static void
pset_tty_name (struct Lisp_Process *p, Lisp_Object val)
{
p->tty_name = val;
@@ -529,25 +531,37 @@ status_convert (int w)
return Qrun;
}
+/* True if STATUS is that of a process attempting connection. */
+
+static bool
+connecting_status (Lisp_Object status)
+{
+ return CONSP (status) && EQ (XCAR (status), Qconnect);
+}
+
/* Given a status-list, extract the three pieces of information
and store them individually through the three pointers. */
static void
-decode_status (Lisp_Object l, Lisp_Object *symbol, int *code, bool *coredump)
+decode_status (Lisp_Object l, Lisp_Object *symbol, Lisp_Object *code,
+ bool *coredump)
{
Lisp_Object tem;
+ if (connecting_status (l))
+ l = XCAR (l);
+
if (SYMBOLP (l))
{
*symbol = l;
- *code = 0;
+ *code = make_number (0);
*coredump = 0;
}
else
{
*symbol = XCAR (l);
tem = XCDR (l);
- *code = XFASTINT (XCAR (tem));
+ *code = XCAR (tem);
tem = XCDR (tem);
*coredump = !NILP (tem);
}
@@ -559,8 +573,7 @@ static Lisp_Object
status_message (struct Lisp_Process *p)
{
Lisp_Object status = p->status;
- Lisp_Object symbol;
- int code;
+ Lisp_Object symbol, code;
bool coredump;
Lisp_Object string;
@@ -570,7 +583,7 @@ status_message (struct Lisp_Process *p)
{
char const *signame;
synchronize_system_messages_locale ();
- signame = strsignal (code);
+ signame = strsignal (XFASTINT (code));
if (signame == 0)
string = build_string ("unknown");
else
@@ -592,20 +605,20 @@ status_message (struct Lisp_Process *p)
else if (EQ (symbol, Qexit))
{
if (NETCONN1_P (p))
- return build_string (code == 0 ? "deleted\n" : "connection broken by remote peer\n");
- if (code == 0)
+ return build_string (XFASTINT (code) == 0
+ ? "deleted\n"
+ : "connection broken by remote peer\n");
+ if (XFASTINT (code) == 0)
return build_string ("finished\n");
AUTO_STRING (prefix, "exited abnormally with code ");
- string = Fnumber_to_string (make_number (code));
+ string = Fnumber_to_string (code);
AUTO_STRING (suffix, coredump ? " (core dumped)\n" : "\n");
return concat3 (prefix, string, suffix);
}
else if (EQ (symbol, Qfailed))
{
- AUTO_STRING (prefix, "failed with code ");
- string = Fnumber_to_string (make_number (code));
- AUTO_STRING (suffix, "\n");
- return concat3 (prefix, string, suffix);
+ AUTO_STRING (format, "failed with code %s\n");
+ return CALLN (Fformat, format, code);
}
else
return Fcopy_sequence (Fsymbol_name (symbol));
@@ -691,12 +704,7 @@ allocate_process (void)
static Lisp_Object
make_process (Lisp_Object name)
{
- register Lisp_Object val, tem, name1;
- register struct Lisp_Process *p;
- char suffix[sizeof "<>" + INT_STRLEN_BOUND (printmax_t)];
- printmax_t i;
-
- p = allocate_process ();
+ struct Lisp_Process *p = allocate_process ();
/* Initialize Lisp data. Note that allocate_process initializes all
Lisp data to nil, so do it only for slots which should not be nil. */
pset_status (p, Qrun);
@@ -706,26 +714,33 @@ make_process (Lisp_Object name)
non-Lisp data, so do it only for slots which should not be zero. */
p->infd = -1;
p->outfd = -1;
- for (i = 0; i < PROCESS_OPEN_FDS; i++)
+ for (int i = 0; i < PROCESS_OPEN_FDS; i++)
p->open_fd[i] = -1;
#ifdef HAVE_GNUTLS
- p->gnutls_initstage = GNUTLS_STAGE_EMPTY;
+ verify (GNUTLS_STAGE_EMPTY == 0);
+ eassert (p->gnutls_initstage == GNUTLS_STAGE_EMPTY);
+ eassert (NILP (p->gnutls_boot_parameters));
#endif
/* If name is already in use, modify it until it is unused. */
- name1 = name;
- for (i = 1; ; i++)
+ Lisp_Object name1 = name;
+ for (printmax_t i = 1; ; i++)
{
- tem = Fget_process (name1);
- if (NILP (tem)) break;
- name1 = concat2 (name, make_formatted_string (suffix, "<%"pMd">", i));
+ Lisp_Object tem = Fget_process (name1);
+ if (NILP (tem))
+ break;
+ char const suffix_fmt[] = "<%"pMd">";
+ char suffix[sizeof suffix_fmt + INT_STRLEN_BOUND (printmax_t)];
+ AUTO_STRING_WITH_LEN (lsuffix, suffix, sprintf (suffix, suffix_fmt, i));
+ name1 = concat2 (name, lsuffix);
}
name = name1;
pset_name (p, name);
pset_sentinel (p, Qinternal_default_process_sentinel);
pset_filter (p, Qinternal_default_process_filter);
+ Lisp_Object val;
XSETPROCESS (val, p);
Vprocess_alist = Fcons (Fcons (name, val), Vprocess_alist);
return val;
@@ -742,6 +757,19 @@ remove_process (register Lisp_Object proc)
deactivate_process (proc);
}
+#ifdef HAVE_GETADDRINFO_A
+static void
+free_dns_request (Lisp_Object proc)
+{
+ struct Lisp_Process *p = XPROCESS (proc);
+
+ if (p->dns_request->ar_result)
+ freeaddrinfo (p->dns_request->ar_result);
+ xfree (p->dns_request);
+ p->dns_request = NULL;
+}
+#endif
+
DEFUN ("processp", Fprocessp, Sprocessp, 1, 1, 0,
doc: /* Return t if OBJECT is a process. */)
@@ -832,6 +860,25 @@ nil, indicating the current buffer's process. */)
process = get_process (process);
p = XPROCESS (process);
+#ifdef HAVE_GETADDRINFO_A
+ if (p->dns_request)
+ {
+ /* Cancel the request. Unless shutting down, wait until
+ completion. Free the request if completely canceled. */
+
+ bool canceled = gai_cancel (p->dns_request) != EAI_NOTCANCELED;
+ if (!canceled && !inhibit_sentinels)
+ {
+ struct gaicb const *req = p->dns_request;
+ while (gai_suspend (&req, 1, NULL) != 0)
+ continue;
+ canceled = true;
+ }
+ if (canceled)
+ free_dns_request (process);
+ }
+#endif
+
p->raw_status_new = 0;
if (NETCONN1_P (p) || SERIALCONN1_P (p) || PIPECONN1_P (p))
{
@@ -1008,6 +1055,23 @@ DEFUN ("process-mark", Fprocess_mark, Sprocess_mark,
return XPROCESS (process)->mark;
}
+static void
+set_process_filter_masks (struct Lisp_Process *p)
+{
+ if (EQ (p->filter, Qt) && !EQ (p->status, Qlisten))
+ {
+ FD_CLR (p->infd, &input_wait_mask);
+ FD_CLR (p->infd, &non_keyboard_wait_mask);
+ }
+ else if (EQ (p->filter, Qt)
+ /* Network or serial process not stopped: */
+ && !EQ (p->command, Qt))
+ {
+ FD_SET (p->infd, &input_wait_mask);
+ FD_SET (p->infd, &non_keyboard_wait_mask);
+ }
+}
+
DEFUN ("set-process-filter", Fset_process_filter, Sset_process_filter,
2, 2, 0,
doc: /* Give PROCESS the filter function FILTER; nil means default.
@@ -1024,12 +1088,10 @@ The string argument is normally a multibyte string, except:
- if `default-enable-multibyte-characters' is nil, it is a unibyte
string (the result of converting the decoded input multibyte
string to unibyte with `string-make-unibyte'). */)
- (register Lisp_Object process, Lisp_Object filter)
+ (Lisp_Object process, Lisp_Object filter)
{
- struct Lisp_Process *p;
-
CHECK_PROCESS (process);
- p = XPROCESS (process);
+ struct Lisp_Process *p = XPROCESS (process);
/* Don't signal an error if the process's input file descriptor
is closed. This could make debugging Lisp more difficult,
@@ -1042,23 +1104,11 @@ The string argument is normally a multibyte string, except:
if (NILP (filter))
filter = Qinternal_default_process_filter;
+ pset_filter (p, filter);
+
if (p->infd >= 0)
- {
- if (EQ (filter, Qt) && !EQ (p->status, Qlisten))
- {
- FD_CLR (p->infd, &input_wait_mask);
- FD_CLR (p->infd, &non_keyboard_wait_mask);
- }
- else if (EQ (p->filter, Qt)
- /* Network or serial process not stopped: */
- && !EQ (p->command, Qt))
- {
- FD_SET (p->infd, &input_wait_mask);
- FD_SET (p->infd, &non_keyboard_wait_mask);
- }
- }
+ set_process_filter_masks (p);
- pset_filter (p, filter);
if (NETCONN1_P (p) || SERIALCONN1_P (p) || PIPECONN1_P (p))
pset_childp (p, Fplist_put (p->childp, QCfilter, filter));
setup_process_coding_systems (process);
@@ -1119,7 +1169,8 @@ nil otherwise. */)
CHECK_RANGED_INTEGER (height, 0, USHRT_MAX);
CHECK_RANGED_INTEGER (width, 0, USHRT_MAX);
- if (XPROCESS (process)->infd < 0
+ if (NETCONN_P (process)
+ || XPROCESS (process)->infd < 0
|| (set_window_size (XPROCESS (process)->infd,
XINT (height), XINT (width))
< 0))
@@ -1187,8 +1238,10 @@ SERVICE) for a network connection or (PORT SPEED) for a serial
connection. If KEY is t, the complete contact information for the
connection is returned, else the specific value for the keyword KEY is
returned. See `make-network-process' or `make-serial-process' for a
-list of keywords. */)
- (register Lisp_Object process, Lisp_Object key)
+list of keywords.
+If PROCESS is a non-blocking network process that hasn't been fully
+set up yet, this function will block until socket setup has completed. */)
+ (Lisp_Object process, Lisp_Object key)
{
Lisp_Object contact;
@@ -1196,6 +1249,10 @@ list of keywords. */)
contact = XPROCESS (process)->childp;
#ifdef DATAGRAM_SOCKETS
+
+ if (NETCONN_P (process))
+ wait_for_socket_fds (process, "process-contact");
+
if (DATAGRAM_CONN_P (process)
&& (EQ (key, Qt) || EQ (key, QCremote)))
contact = Fplist_put (contact, QCremote,
@@ -1230,8 +1287,8 @@ DEFUN ("process-plist", Fprocess_plist, Sprocess_plist,
DEFUN ("set-process-plist", Fset_process_plist, Sset_process_plist,
2, 2, 0,
- doc: /* Replace the plist of PROCESS with PLIST. Returns PLIST. */)
- (register Lisp_Object process, Lisp_Object plist)
+ doc: /* Replace the plist of PROCESS with PLIST. Return PLIST. */)
+ (Lisp_Object process, Lisp_Object plist)
{
CHECK_PROCESS (process);
CHECK_LIST (plist);
@@ -1271,7 +1328,7 @@ A 4 or 5 element vector represents an IPv4 address (with port number).
An 8 or 9 element vector represents an IPv6 address (with port number).
If optional second argument OMIT-PORT is non-nil, don't include a port
number in the string, even when present in ADDRESS.
-Returns nil if format of ADDRESS is invalid. */)
+Return nil if format of ADDRESS is invalid. */)
(Lisp_Object address, Lisp_Object omit_port)
{
if (NILP (address))
@@ -1348,8 +1405,6 @@ DEFUN ("process-list", Fprocess_list, Sprocess_list, 0, 0, 0,
/* Starting asynchronous inferior processes. */
-static void start_process_unwind (Lisp_Object proc);
-
DEFUN ("make-process", Fmake_process, Smake_process, 0, MANY, 0,
doc: /* Start a program in a subprocess. Return the process object for it.
@@ -1400,7 +1455,6 @@ usage: (make-process &rest ARGS) */)
Lisp_Object buffer, name, command, program, proc, contact, current_dir, tem;
Lisp_Object xstderr, stderrproc;
ptrdiff_t count = SPECPDL_INDEX ();
- USE_SAFE_ALLOCA;
if (nargs == 0)
return Qnil;
@@ -1449,14 +1503,10 @@ usage: (make-process &rest ARGS) */)
}
proc = make_process (name);
- /* If an error occurs and we can't start the process, we want to
- remove it from the process list. This means that each error
- check in create_process doesn't need to call remove_process
- itself; it's all taken care of here. */
record_unwind_protect (start_process_unwind, proc);
pset_childp (XPROCESS (proc), Qt);
- pset_plist (XPROCESS (proc), Qnil);
+ eassert (NILP (XPROCESS (proc)->plist));
pset_type (XPROCESS (proc), Qreal);
pset_buffer (XPROCESS (proc), buffer);
pset_sentinel (XPROCESS (proc), Fplist_get (contact, QCsentinel));
@@ -1487,8 +1537,9 @@ usage: (make-process &rest ARGS) */)
#ifdef HAVE_GNUTLS
/* AKA GNUTLS_INITSTAGE(proc). */
- XPROCESS (proc)->gnutls_initstage = GNUTLS_STAGE_EMPTY;
- pset_gnutls_cred_type (XPROCESS (proc), Qnil);
+ verify (GNUTLS_STAGE_EMPTY == 0);
+ eassert (XPROCESS (proc)->gnutls_initstage == GNUTLS_STAGE_EMPTY);
+ eassert (NILP (XPROCESS (proc)->gnutls_cred_type));
#endif
XPROCESS (proc)->adaptive_read_buffering
@@ -1501,6 +1552,8 @@ usage: (make-process &rest ARGS) */)
BUF_ZV (XBUFFER (buffer)),
BUF_ZV_BYTE (XBUFFER (buffer)));
+ USE_SAFE_ALLOCA;
+
{
/* Decide coding systems for communicating with the process. Here
we don't setup the structure coding_system nor pay attention to
@@ -1578,7 +1631,7 @@ usage: (make-process &rest ARGS) */)
pset_decoding_buf (XPROCESS (proc), empty_unibyte_string);
- XPROCESS (proc)->decoding_carryover = 0;
+ eassert (XPROCESS (proc)->decoding_carryover == 0);
pset_encoding_buf (XPROCESS (proc), empty_unibyte_string);
XPROCESS (proc)->inherit_coding_system_flag
@@ -1659,18 +1712,11 @@ usage: (make-process &rest ARGS) */)
return unbind_to (count, proc);
}
-/* This function is the unwind_protect form for Fstart_process. If
- PROC doesn't have its pid set, then we know someone has signaled
- an error and the process wasn't started successfully, so we should
- remove it from the process list. */
+/* If PROC doesn't have its pid set, then an error was signaled and
+ the process wasn't started successfully, so remove it. */
static void
start_process_unwind (Lisp_Object proc)
{
- if (!PROCESSP (proc))
- emacs_abort ();
-
- /* Was PROC started successfully?
- -2 is used for a pty with no process, eg for gdb. */
if (XPROCESS (proc)->pid <= 0 && XPROCESS (proc)->pid != -2)
remove_process (proc);
}
@@ -2128,7 +2174,7 @@ usage: (make-pipe-process &rest ARGS) */)
pset_type (p, Qpipe);
pset_sentinel (p, Fplist_get (contact, QCsentinel));
pset_filter (p, Fplist_get (contact, QCfilter));
- pset_log (p, Qnil);
+ eassert (NILP (p->log));
if (tem = Fplist_get (contact, QCnoquery), !NILP (tem))
p->kill_without_query = 1;
if (tem = Fplist_get (contact, QCstop), !NILP (tem))
@@ -2219,12 +2265,12 @@ usage: (make-pipe-process &rest ARGS) */)
The address family of sa is not included in the result. */
Lisp_Object
-conv_sockaddr_to_lisp (struct sockaddr *sa, int len)
+conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len)
{
Lisp_Object address;
- int i;
+ ptrdiff_t i;
unsigned char *cp;
- register struct Lisp_Vector *p;
+ struct Lisp_Vector *p;
/* Workaround for a bug in getsockname on BSD: Names bound to
sockets in the UNIX domain are inaccessible; getsockname returns
@@ -2296,13 +2342,23 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len)
return address;
}
+/* Convert an internal struct addrinfo to a Lisp object. */
+
+static Lisp_Object
+conv_addrinfo_to_lisp (struct addrinfo *res)
+{
+ Lisp_Object protocol = make_number (res->ai_protocol);
+ eassert (XINT (protocol) == res->ai_protocol);
+ return Fcons (protocol, conv_sockaddr_to_lisp (res->ai_addr, res->ai_addrlen));
+}
+
/* Get family and required size for sockaddr structure to hold ADDRESS. */
-static int
+static ptrdiff_t
get_lisp_to_sockaddr_size (Lisp_Object address, int *familyp)
{
- register struct Lisp_Vector *p;
+ struct Lisp_Vector *p;
if (VECTORP (address))
{
@@ -2418,13 +2474,18 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int
#ifdef DATAGRAM_SOCKETS
DEFUN ("process-datagram-address", Fprocess_datagram_address, Sprocess_datagram_address,
1, 1, 0,
- doc: /* Get the current datagram address associated with PROCESS. */)
+ doc: /* Get the current datagram address associated with PROCESS.
+If PROCESS is a non-blocking network process that hasn't been fully
+set up yet, this function will block until socket setup has completed. */)
(Lisp_Object process)
{
int channel;
CHECK_PROCESS (process);
+ if (NETCONN_P (process))
+ wait_for_socket_fds (process, "process-datagram-address");
+
if (!DATAGRAM_CONN_P (process))
return Qnil;
@@ -2436,14 +2497,21 @@ DEFUN ("process-datagram-address", Fprocess_datagram_address, Sprocess_datagram_
DEFUN ("set-process-datagram-address", Fset_process_datagram_address, Sset_process_datagram_address,
2, 2, 0,
doc: /* Set the datagram address for PROCESS to ADDRESS.
-Returns nil upon error setting address, ADDRESS otherwise. */)
+Return nil upon error setting address, ADDRESS otherwise.
+
+If PROCESS is a non-blocking network process that hasn't been fully
+set up yet, this function will block until socket setup has completed. */)
(Lisp_Object process, Lisp_Object address)
{
int channel;
- int family, len;
+ int family;
+ ptrdiff_t len;
CHECK_PROCESS (process);
+ if (NETCONN_P (process))
+ wait_for_socket_fds (process, "set-process-datagram-address");
+
if (!DATAGRAM_CONN_P (process))
return Qnil;
@@ -2499,7 +2567,7 @@ static const struct socket_options {
/* Set option OPT to value VAL on socket S.
- Returns (1<<socket_options[OPT].optbit) if option is known, 0 otherwise.
+ Return (1<<socket_options[OPT].optbit) if option is known, 0 otherwise.
Signals an error if setting a known option fails.
*/
@@ -2601,7 +2669,10 @@ DEFUN ("set-network-process-option",
doc: /* For network process PROCESS set option OPTION to value VALUE.
See `make-network-process' for a list of options and values.
If optional fourth arg NO-ERROR is non-nil, don't signal an error if
-OPTION is not a supported option, return nil instead; otherwise return t. */)
+OPTION is not a supported option, return nil instead; otherwise return t.
+
+If PROCESS is a non-blocking network process that hasn't been fully
+set up yet, this function will block until socket setup has completed. */)
(Lisp_Object process, Lisp_Object option, Lisp_Object value, Lisp_Object no_error)
{
int s;
@@ -2612,6 +2683,8 @@ OPTION is not a supported option, return nil instead; otherwise return t. */)
if (!NETCONN1_P (p))
error ("Process is not a network process");
+ wait_for_socket_fds (process, "set-network-process-option");
+
s = p->infd;
if (s < 0)
error ("Process is not running");
@@ -2840,7 +2913,7 @@ usage: (make-serial-process &rest ARGS) */)
pset_type (p, Qserial);
pset_sentinel (p, Fplist_get (contact, QCsentinel));
pset_filter (p, Fplist_get (contact, QCfilter));
- pset_log (p, Qnil);
+ eassert (NILP (p->log));
if (tem = Fplist_get (contact, QCnoquery), !NILP (tem))
p->kill_without_query = 1;
if (tem = Fplist_get (contact, QCstop), !NILP (tem))
@@ -2894,7 +2967,7 @@ usage: (make-serial-process &rest ARGS) */)
setup_process_coding_systems (proc);
pset_decoding_buf (p, empty_unibyte_string);
- p->decoding_carryover = 0;
+ eassert (p->decoding_carryover == 0);
pset_encoding_buf (p, empty_unibyte_string);
p->inherit_coding_system_flag
= !(!NILP (tem) || NILP (buffer) || !inherit_process_coding_system);
@@ -2906,6 +2979,479 @@ usage: (make-serial-process &rest ARGS) */)
return proc;
}
+static void
+set_network_socket_coding_system (Lisp_Object proc, Lisp_Object host,
+ Lisp_Object service, Lisp_Object name)
+{
+ Lisp_Object tem;
+ struct Lisp_Process *p = XPROCESS (proc);
+ Lisp_Object contact = p->childp;
+ Lisp_Object coding_systems = Qt;
+ Lisp_Object val;
+
+ tem = Fplist_member (contact, QCcoding);
+ if (!NILP (tem) && (!CONSP (tem) || !CONSP (XCDR (tem))))
+ tem = Qnil; /* No error message (too late!). */
+
+ /* Setup coding systems for communicating with the network stream. */
+ /* Qt denotes we have not yet called Ffind_operation_coding_system. */
+
+ if (!NILP (tem))
+ {
+ val = XCAR (XCDR (tem));
+ if (CONSP (val))
+ val = XCAR (val);
+ }
+ else if (!NILP (Vcoding_system_for_read))
+ val = Vcoding_system_for_read;
+ else if ((!NILP (p->buffer)
+ && NILP (BVAR (XBUFFER (p->buffer), enable_multibyte_characters)))
+ || (NILP (p->buffer)
+ && NILP (BVAR (&buffer_defaults, enable_multibyte_characters))))
+ /* We dare not decode end-of-line format by setting VAL to
+ Qraw_text, because the existing Emacs Lisp libraries
+ assume that they receive bare code including a sequence of
+ CR LF. */
+ val = Qnil;
+ else
+ {
+ if (NILP (host) || NILP (service))
+ coding_systems = Qnil;
+ else
+ coding_systems = CALLN (Ffind_operation_coding_system,
+ Qopen_network_stream, name, p->buffer,
+ host, service);
+ if (CONSP (coding_systems))
+ val = XCAR (coding_systems);
+ else if (CONSP (Vdefault_process_coding_system))
+ val = XCAR (Vdefault_process_coding_system);
+ else
+ val = Qnil;
+ }
+ pset_decode_coding_system (p, val);
+
+ if (!NILP (tem))
+ {
+ val = XCAR (XCDR (tem));
+ if (CONSP (val))
+ val = XCDR (val);
+ }
+ else if (!NILP (Vcoding_system_for_write))
+ val = Vcoding_system_for_write;
+ else if (NILP (BVAR (current_buffer, enable_multibyte_characters)))
+ val = Qnil;
+ else
+ {
+ if (EQ (coding_systems, Qt))
+ {
+ if (NILP (host) || NILP (service))
+ coding_systems = Qnil;
+ else
+ coding_systems = CALLN (Ffind_operation_coding_system,
+ Qopen_network_stream, name, p->buffer,
+ host, service);
+ }
+ if (CONSP (coding_systems))
+ val = XCDR (coding_systems);
+ else if (CONSP (Vdefault_process_coding_system))
+ val = XCDR (Vdefault_process_coding_system);
+ else
+ val = Qnil;
+ }
+ pset_encode_coding_system (p, val);
+
+ pset_decoding_buf (p, empty_unibyte_string);
+ p->decoding_carryover = 0;
+ pset_encoding_buf (p, empty_unibyte_string);
+
+ p->inherit_coding_system_flag
+ = !(!NILP (tem) || NILP (p->buffer) || !inherit_process_coding_system);
+}
+
+#ifdef HAVE_GNUTLS
+static void
+finish_after_tls_connection (Lisp_Object proc)
+{
+ struct Lisp_Process *p = XPROCESS (proc);
+ Lisp_Object contact = p->childp;
+ Lisp_Object result = Qt;
+
+ if (!NILP (Ffboundp (Qnsm_verify_connection)))
+ result = call3 (Qnsm_verify_connection,
+ proc,
+ Fplist_get (contact, QChost),
+ Fplist_get (contact, QCservice));
+
+ if (NILP (result))
+ {
+ pset_status (p, list2 (Qfailed,
+ build_string ("The Network Security Manager stopped the connections")));
+ deactivate_process (proc);
+ }
+ else
+ {
+ /* If we cleared the connection wait mask before we did
+ the TLS setup, then we have to say that the process
+ is finally "open" here. */
+ if (! FD_ISSET (p->outfd, &connect_wait_mask))
+ {
+ pset_status (p, Qrun);
+ /* Execute the sentinel here. If we had relied on
+ status_notify to do it later, it will read input
+ from the process before calling the sentinel. */
+ exec_sentinel (proc, build_string ("open\n"));
+ }
+ }
+}
+#endif
+
+static void
+connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
+ Lisp_Object use_external_socket_p)
+{
+ ptrdiff_t count = SPECPDL_INDEX ();
+ int s = -1, outch, inch;
+ int xerrno = 0;
+ int family;
+ struct sockaddr *sa = NULL;
+ int ret;
+ ptrdiff_t addrlen;
+ struct Lisp_Process *p = XPROCESS (proc);
+ Lisp_Object contact = p->childp;
+ int optbits = 0;
+ int socket_to_use = -1;
+
+ if (!NILP (use_external_socket_p))
+ {
+ socket_to_use = external_sock_fd;
+
+ /* Ensure we don't consume the external socket twice. */
+ external_sock_fd = -1;
+ }
+
+ /* Do this in case we never enter the while-loop below. */
+ s = -1;
+
+ while (!NILP (addrinfos))
+ {
+ Lisp_Object addrinfo = XCAR (addrinfos);
+ addrinfos = XCDR (addrinfos);
+ int protocol = XINT (XCAR (addrinfo));
+ Lisp_Object ip_address = XCDR (addrinfo);
+
+#ifdef WINDOWSNT
+ retry_connect:
+#endif
+
+ addrlen = get_lisp_to_sockaddr_size (ip_address, &family);
+ if (sa)
+ free (sa);
+ sa = xmalloc (addrlen);
+ conv_lisp_to_sockaddr (family, ip_address, sa, addrlen);
+
+ s = socket_to_use;
+ if (s < 0)
+ {
+ int socktype = p->socktype | SOCK_CLOEXEC;
+ if (p->is_non_blocking_client)
+ socktype |= SOCK_NONBLOCK;
+ s = socket (family, socktype, protocol);
+ if (s < 0)
+ {
+ xerrno = errno;
+ continue;
+ }
+ }
+
+ if (p->is_non_blocking_client && ! (SOCK_NONBLOCK && socket_to_use < 0))
+ {
+ ret = fcntl (s, F_SETFL, O_NONBLOCK);
+ if (ret < 0)
+ {
+ xerrno = errno;
+ emacs_close (s);
+ s = -1;
+ if (0 <= socket_to_use)
+ break;
+ continue;
+ }
+ }
+
+#ifdef DATAGRAM_SOCKETS
+ if (!p->is_server && p->socktype == SOCK_DGRAM)
+ break;
+#endif /* DATAGRAM_SOCKETS */
+
+ /* Make us close S if quit. */
+ record_unwind_protect_int (close_file_unwind, s);
+
+ /* Parse network options in the arg list. We simply ignore anything
+ which isn't a known option (including other keywords). An error
+ is signaled if setting a known option fails. */
+ {
+ Lisp_Object params = contact, key, val;
+
+ while (!NILP (params))
+ {
+ key = XCAR (params);
+ params = XCDR (params);
+ val = XCAR (params);
+ params = XCDR (params);
+ optbits |= set_socket_option (s, key, val);
+ }
+ }
+
+ if (p->is_server)
+ {
+ /* Configure as a server socket. */
+
+ /* SO_REUSEADDR = 1 is default for server sockets; must specify
+ explicit :reuseaddr key to override this. */
+#ifdef HAVE_LOCAL_SOCKETS
+ if (family != AF_LOCAL)
+#endif
+ if (!(optbits & (1 << OPIX_REUSEADDR)))
+ {
+ int optval = 1;
+ if (setsockopt (s, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval))
+ report_file_error ("Cannot set reuse option on server socket", Qnil);
+ }
+
+ /* If passed a socket descriptor, it should be already bound. */
+ if (socket_to_use < 0 && bind (s, sa, addrlen) != 0)
+ report_file_error ("Cannot bind server socket", Qnil);
+
+#ifdef HAVE_GETSOCKNAME
+ if (p->port == 0)
+ {
+ struct sockaddr_in sa1;
+ socklen_t len1 = sizeof (sa1);
+ if (getsockname (s, (struct sockaddr *)&sa1, &len1) == 0)
+ {
+ Lisp_Object service;
+ service = make_number (ntohs (sa1.sin_port));
+ contact = Fplist_put (contact, QCservice, service);
+ /* Save the port number so that we can stash it in
+ the process object later. */
+ ((struct sockaddr_in *)sa)->sin_port = sa1.sin_port;
+ }
+ }
+#endif
+
+ if (p->socktype != SOCK_DGRAM && listen (s, p->backlog))
+ report_file_error ("Cannot listen on server socket", Qnil);
+
+ break;
+ }
+
+ immediate_quit = 1;
+ QUIT;
+
+ ret = connect (s, sa, addrlen);
+ xerrno = errno;
+
+ if (ret == 0 || xerrno == EISCONN)
+ {
+ /* The unwind-protect will be discarded afterwards.
+ Likewise for immediate_quit. */
+ break;
+ }
+
+ if (p->is_non_blocking_client && xerrno == EINPROGRESS)
+ break;
+
+#ifndef WINDOWSNT
+ if (xerrno == EINTR)
+ {
+ /* Unlike most other syscalls connect() cannot be called
+ again. (That would return EALREADY.) The proper way to
+ wait for completion is pselect(). */
+ int sc;
+ socklen_t len;
+ fd_set fdset;
+ retry_select:
+ FD_ZERO (&fdset);
+ FD_SET (s, &fdset);
+ QUIT;
+ sc = pselect (s + 1, NULL, &fdset, NULL, NULL, NULL);
+ if (sc == -1)
+ {
+ if (errno == EINTR)
+ goto retry_select;
+ else
+ report_file_error ("Failed select", Qnil);
+ }
+ eassert (sc > 0);
+
+ len = sizeof xerrno;
+ eassert (FD_ISSET (s, &fdset));
+ if (getsockopt (s, SOL_SOCKET, SO_ERROR, &xerrno, &len) < 0)
+ report_file_error ("Failed getsockopt", Qnil);
+ if (xerrno == 0)
+ break;
+ if (NILP (addrinfos))
+ report_file_errno ("Failed connect", Qnil, xerrno);
+ }
+#endif /* !WINDOWSNT */
+
+ immediate_quit = 0;
+
+ /* Discard the unwind protect closing S. */
+ specpdl_ptr = specpdl + count;
+ emacs_close (s);
+ s = -1;
+ if (0 <= socket_to_use)
+ break;
+
+#ifdef WINDOWSNT
+ if (xerrno == EINTR)
+ goto retry_connect;
+#endif
+ }
+
+ if (s >= 0)
+ {
+#ifdef DATAGRAM_SOCKETS
+ if (p->socktype == SOCK_DGRAM)
+ {
+ if (datagram_address[s].sa)
+ emacs_abort ();
+
+ datagram_address[s].sa = xmalloc (addrlen);
+ datagram_address[s].len = addrlen;
+ if (p->is_server)
+ {
+ Lisp_Object remote;
+ memset (datagram_address[s].sa, 0, addrlen);
+ if (remote = Fplist_get (contact, QCremote), !NILP (remote))
+ {
+ int rfamily;
+ ptrdiff_t rlen = get_lisp_to_sockaddr_size (remote, &rfamily);
+ if (rlen != 0 && rfamily == family
+ && rlen == addrlen)
+ conv_lisp_to_sockaddr (rfamily, remote,
+ datagram_address[s].sa, rlen);
+ }
+ }
+ else
+ memcpy (datagram_address[s].sa, sa, addrlen);
+ }
+#endif
+
+ contact = Fplist_put (contact, p->is_server? QClocal: QCremote,
+ conv_sockaddr_to_lisp (sa, addrlen));
+#ifdef HAVE_GETSOCKNAME
+ if (!p->is_server)
+ {
+ struct sockaddr_in sa1;
+ socklen_t len1 = sizeof (sa1);
+ if (getsockname (s, (struct sockaddr *)&sa1, &len1) == 0)
+ contact = Fplist_put (contact, QClocal,
+ conv_sockaddr_to_lisp ((struct sockaddr *)&sa1, len1));
+ }
+#endif
+ }
+
+ immediate_quit = 0;
+
+ if (s < 0)
+ {
+ /* If non-blocking got this far - and failed - assume non-blocking is
+ not supported after all. This is probably a wrong assumption, but
+ the normal blocking calls to open-network-stream handles this error
+ better. */
+ if (p->is_non_blocking_client)
+ return;
+
+ report_file_errno ((p->is_server
+ ? "make server process failed"
+ : "make client process failed"),
+ contact, xerrno);
+ }
+
+ inch = s;
+ outch = s;
+
+ chan_process[inch] = proc;
+
+ fcntl (inch, F_SETFL, O_NONBLOCK);
+
+ p = XPROCESS (proc);
+ p->open_fd[SUBPROCESS_STDIN] = inch;
+ p->infd = inch;
+ p->outfd = outch;
+
+ /* Discard the unwind protect for closing S, if any. */
+ specpdl_ptr = specpdl + count;
+
+ if (p->is_server && p->socktype != SOCK_DGRAM)
+ pset_status (p, Qlisten);
+
+ /* Make the process marker point into the process buffer (if any). */
+ if (BUFFERP (p->buffer))
+ set_marker_both (p->mark, p->buffer,
+ BUF_ZV (XBUFFER (p->buffer)),
+ BUF_ZV_BYTE (XBUFFER (p->buffer)));
+
+ if (p->is_non_blocking_client)
+ {
+ /* We may get here if connect did succeed immediately. However,
+ in that case, we still need to signal this like a non-blocking
+ connection. */
+ if (! (connecting_status (p->status)
+ && EQ (XCDR (p->status), addrinfos)))
+ pset_status (p, Fcons (Qconnect, addrinfos));
+ if (!FD_ISSET (inch, &connect_wait_mask))
+ {
+ FD_SET (inch, &connect_wait_mask);
+ FD_SET (inch, &write_mask);
+ num_pending_connects++;
+ }
+ }
+ else
+ /* A server may have a client filter setting of Qt, but it must
+ still listen for incoming connects unless it is stopped. */
+ if ((!EQ (p->filter, Qt) && !EQ (p->command, Qt))
+ || (EQ (p->status, Qlisten) && NILP (p->command)))
+ {
+ FD_SET (inch, &input_wait_mask);
+ FD_SET (inch, &non_keyboard_wait_mask);
+ }
+
+ if (inch > max_process_desc)
+ max_process_desc = inch;
+
+ /* Set up the masks based on the process filter. */
+ set_process_filter_masks (p);
+
+ setup_process_coding_systems (proc);
+
+#ifdef HAVE_GNUTLS
+ /* Continue the asynchronous connection. */
+ if (!NILP (p->gnutls_boot_parameters))
+ {
+ Lisp_Object boot, params = p->gnutls_boot_parameters;
+
+ boot = Fgnutls_boot (proc, XCAR (params), XCDR (params));
+ p->gnutls_boot_parameters = Qnil;
+
+ if (p->gnutls_initstage == GNUTLS_STAGE_READY)
+ /* Run sentinels, etc. */
+ finish_after_tls_connection (proc);
+ else if (p->gnutls_initstage != GNUTLS_STAGE_HANDSHAKE_TRIED)
+ {
+ deactivate_process (proc);
+ if (NILP (boot))
+ pset_status (p, list2 (Qfailed,
+ build_string ("TLS negotiation failed")));
+ else
+ pset_status (p, list2 (Qfailed, boot));
+ }
+ }
+#endif
+
+}
+
/* Create a network stream/datagram client/server process. Treated
exactly like a normal process when reading and writing. Primary
differences are in status display and process deletion. A network
@@ -2941,9 +3487,8 @@ host, and only clients connecting to that address will be accepted.
:service SERVICE -- SERVICE is name of the service desired, or an
integer specifying a port number to connect to. If SERVICE is t,
-a random port number is selected for the server. (If Emacs was
-compiled with getaddrinfo, a port number can also be specified as a
-string, e.g. "80", as well as an integer. This is not portable.)
+a random port number is selected for the server. A port number can
+be specified as an integer string, e.g., "80", as well as an integer.
:type TYPE -- TYPE is the type of connection. The default (nil) is a
stream type connection, `datagram' creates a datagram type connection,
@@ -2984,11 +3529,12 @@ system used for both reading and writing for this process. If CODING
is a cons (DECODING . ENCODING), DECODING is used for reading, and
ENCODING is used for writing.
-:nowait BOOL -- If BOOL is non-nil for a stream type client process,
-return without waiting for the connection to complete; instead, the
-sentinel function will be called with second arg matching "open" (if
-successful) or "failed" when the connect completes. Default is to use
-a blocking connect (i.e. wait) for stream type connections.
+:nowait BOOL -- If NOWAIT is non-nil for a stream type client
+process, return without waiting for the connection to complete;
+instead, the sentinel function will be called with second arg matching
+"open" (if successful) or "failed" when the connect completes.
+Default is to use a blocking connect (i.e. wait) for stream type
+connections.
:noquery BOOL -- Query the user unless BOOL is non-nil, and process is
running when Emacs is exited.
@@ -3016,6 +3562,12 @@ and MESSAGE is a string.
:plist PLIST -- Install PLIST as the new process's initial plist.
+:tls-parameters LIST -- is a list that should be supplied if you're
+opening a TLS connection. The first element is the TLS type (either
+`gnutls-x509pki' or `gnutls-anon'), and the remaining elements should
+be a keyword list accepted by gnutls-boot (as returned by
+`gnutls-boot-parameters').
+
:server QLEN -- if QLEN is non-nil, create a server process for the
specified FAMILY, SERVICE, and connection type (stream or datagram).
If QLEN is an integer, it is used as the max. length of the server's
@@ -3034,6 +3586,11 @@ The following network options can be specified for this connection:
(this is allowed by default for a server process).
:bindtodevice NAME -- bind to interface NAME. Using this may require
special privileges on some systems.
+:use-external-socket BOOL -- Use any pre-allocated sockets that have
+ been passed to Emacs. If Emacs wasn't
+ passed a socket, this option is silently
+ ignored.
+
Consult the relevant system programmer's manual pages for more
information on using these options.
@@ -3069,41 +3626,24 @@ usage: (make-network-process &rest ARGS) */)
Lisp_Object proc;
Lisp_Object contact;
struct Lisp_Process *p;
-#ifdef HAVE_GETADDRINFO
- struct addrinfo ai, *res, *lres;
- struct addrinfo hints;
const char *portstring;
- char portbuf[128];
-#else /* HAVE_GETADDRINFO */
- struct _emacs_addrinfo
- {
- int ai_family;
- int ai_socktype;
- int ai_protocol;
- int ai_addrlen;
- struct sockaddr *ai_addr;
- struct _emacs_addrinfo *ai_next;
- } ai, *res, *lres;
-#endif /* HAVE_GETADDRINFO */
- struct sockaddr_in address_in;
+ ptrdiff_t portstringlen ATTRIBUTE_UNUSED;
+ char portbuf[INT_BUFSIZE_BOUND (EMACS_INT)];
#ifdef HAVE_LOCAL_SOCKETS
struct sockaddr_un address_un;
#endif
- int port;
- int ret = 0;
- int xerrno = 0;
- int s = -1, outch, inch;
- ptrdiff_t count = SPECPDL_INDEX ();
- ptrdiff_t count1;
- Lisp_Object colon_address; /* Either QClocal or QCremote. */
+ EMACS_INT port = 0;
Lisp_Object tem;
Lisp_Object name, buffer, host, service, address;
- Lisp_Object filter, sentinel;
- bool is_non_blocking_client = 0;
- bool is_server = 0;
- int backlog = 5;
+ Lisp_Object filter, sentinel, use_external_socket_p;
+ Lisp_Object addrinfos = Qnil;
int socktype;
int family = -1;
+ enum { any_protocol = 0 };
+#ifdef HAVE_GETADDRINFO_A
+ struct gaicb *dns_request = NULL;
+#endif
+ ptrdiff_t count = SPECPDL_INDEX ();
if (nargs == 0)
return Qnil;
@@ -3131,55 +3671,28 @@ usage: (make-network-process &rest ARGS) */)
else
error ("Unsupported connection type");
- /* :server BOOL */
- tem = Fplist_get (contact, QCserver);
- if (!NILP (tem))
- {
- /* Don't support network sockets when non-blocking mode is
- not available, since a blocked Emacs is not useful. */
- is_server = 1;
- if (TYPE_RANGED_INTEGERP (int, tem))
- backlog = XINT (tem);
- }
-
- /* Make colon_address an alias for :local (server) or :remote (client). */
- colon_address = is_server ? QClocal : QCremote;
-
- /* :nowait BOOL */
- if (!is_server && socktype != SOCK_DGRAM
- && (tem = Fplist_get (contact, QCnowait), !NILP (tem)))
- {
-#ifndef NON_BLOCKING_CONNECT
- error ("Non-blocking connect not supported");
-#else
- is_non_blocking_client = 1;
-#endif
- }
-
name = Fplist_get (contact, QCname);
buffer = Fplist_get (contact, QCbuffer);
filter = Fplist_get (contact, QCfilter);
sentinel = Fplist_get (contact, QCsentinel);
+ use_external_socket_p = Fplist_get (contact, QCuse_external_socket);
CHECK_STRING (name);
- /* Initialize addrinfo structure in case we don't use getaddrinfo. */
- ai.ai_socktype = socktype;
- ai.ai_protocol = 0;
- ai.ai_next = NULL;
- res = &ai;
-
/* :local ADDRESS or :remote ADDRESS */
- address = Fplist_get (contact, colon_address);
+ tem = Fplist_get (contact, QCserver);
+ if (NILP (tem))
+ address = Fplist_get (contact, QCremote);
+ else
+ address = Fplist_get (contact, QClocal);
if (!NILP (address))
{
host = service = Qnil;
- if (!(ai.ai_addrlen = get_lisp_to_sockaddr_size (address, &family)))
+ if (!get_lisp_to_sockaddr_size (address, &family))
error ("Malformed :address");
- ai.ai_family = family;
- ai.ai_addr = alloca (ai.ai_addrlen);
- conv_lisp_to_sockaddr (family, address, ai.ai_addr, ai.ai_addrlen);
+
+ addrinfos = list1 (Fcons (make_number (any_protocol), address));
goto open_socket;
}
@@ -3187,7 +3700,7 @@ usage: (make-network-process &rest ARGS) */)
tem = Fplist_get (contact, QCfamily);
if (NILP (tem))
{
-#if defined (HAVE_GETADDRINFO) && defined (AF_INET6)
+#ifdef AF_INET6
family = AF_UNSPEC;
#else
family = AF_INET;
@@ -3208,14 +3721,21 @@ usage: (make-network-process &rest ARGS) */)
else
error ("Unknown address family");
- ai.ai_family = family;
-
/* :service SERVICE -- string, integer (port number), or t (random port). */
service = Fplist_get (contact, QCservice);
/* :host HOST -- hostname, ip address, or 'local for localhost. */
host = Fplist_get (contact, QChost);
- if (!NILP (host))
+ if (NILP (host))
+ {
+ /* The "connection" function gets it bind info from the address we're
+ given, so use this dummy address if nothing is specified. */
+#ifdef HAVE_LOCAL_SOCKETS
+ if (family != AF_LOCAL)
+#endif
+ host = build_string ("127.0.0.1");
+ }
+ else
{
if (EQ (host, Qlocal))
/* Depending on setup, "localhost" may map to different IPv4 and/or
@@ -3234,13 +3754,9 @@ usage: (make-network-process &rest ARGS) */)
host = Qnil;
}
CHECK_STRING (service);
- memset (&address_un, 0, sizeof address_un);
- address_un.sun_family = AF_LOCAL;
if (sizeof address_un.sun_path <= SBYTES (service))
error ("Service name too long");
- lispstpcpy (address_un.sun_path, service);
- ai.ai_addr = (struct sockaddr *) &address_un;
- ai.ai_addrlen = sizeof address_un;
+ addrinfos = list1 (Fcons (make_number (any_protocol), service));
goto open_socket;
}
#endif
@@ -3256,359 +3772,147 @@ usage: (make-network-process &rest ARGS) */)
}
#endif
-#ifdef HAVE_GETADDRINFO
- /* If we have a host, use getaddrinfo to resolve both host and service.
- Otherwise, use getservbyname to lookup the service. */
if (!NILP (host))
{
-
/* SERVICE can either be a string or int.
Convert to a C string for later use by getaddrinfo. */
if (EQ (service, Qt))
- portstring = "0";
+ {
+ portstring = "0";
+ portstringlen = 1;
+ }
else if (INTEGERP (service))
{
- sprintf (portbuf, "%"pI"d", XINT (service));
portstring = portbuf;
+ portstringlen = sprintf (portbuf, "%"pI"d", XINT (service));
}
else
{
CHECK_STRING (service);
portstring = SSDATA (service);
+ portstringlen = SBYTES (service);
}
+ }
- immediate_quit = 1;
- QUIT;
- memset (&hints, 0, sizeof (hints));
- hints.ai_flags = 0;
- hints.ai_family = family;
- hints.ai_socktype = socktype;
- hints.ai_protocol = 0;
-
-#ifdef HAVE_RES_INIT
- res_init ();
-#endif
-
- ret = getaddrinfo (SSDATA (host), portstring, &hints, &res);
+#ifdef HAVE_GETADDRINFO_A
+ if (!NILP (host) && !NILP (Fplist_get (contact, QCnowait)))
+ {
+ ptrdiff_t hostlen = SBYTES (host);
+ struct req
+ {
+ struct gaicb gaicb;
+ struct addrinfo hints;
+ char str[FLEXIBLE_ARRAY_MEMBER];
+ } *req = xmalloc (offsetof (struct req, str)
+ + hostlen + 1 + portstringlen + 1);
+ dns_request = &req->gaicb;
+ dns_request->ar_name = req->str;
+ dns_request->ar_service = req->str + hostlen + 1;
+ dns_request->ar_request = &req->hints;
+ dns_request->ar_result = NULL;
+ memset (&req->hints, 0, sizeof req->hints);
+ req->hints.ai_family = family;
+ req->hints.ai_socktype = socktype;
+ strcpy (req->str, SSDATA (host));
+ strcpy (req->str + hostlen + 1, portstring);
+
+ int ret = getaddrinfo_a (GAI_NOWAIT, &dns_request, 1, NULL);
if (ret)
-#ifdef HAVE_GAI_STRERROR
- error ("%s/%s %s", SSDATA (host), portstring, gai_strerror (ret));
-#else
- error ("%s/%s getaddrinfo error %d", SSDATA (host), portstring, ret);
-#endif
- immediate_quit = 0;
+ error ("%s/%s getaddrinfo_a error %d", SSDATA (host), portstring, ret);
goto open_socket;
}
-#endif /* HAVE_GETADDRINFO */
+#endif /* HAVE_GETADDRINFO_A */
- /* We end up here if getaddrinfo is not defined, or in case no hostname
- has been specified (e.g. for a local server process). */
-
- if (EQ (service, Qt))
- port = 0;
- else if (INTEGERP (service))
- port = htons ((unsigned short) XINT (service));
- else
- {
- struct servent *svc_info;
- CHECK_STRING (service);
- svc_info = getservbyname (SSDATA (service),
- (socktype == SOCK_DGRAM ? "udp" : "tcp"));
- if (svc_info == 0)
- error ("Unknown service: %s", SDATA (service));
- port = svc_info->s_port;
- }
-
- memset (&address_in, 0, sizeof address_in);
- address_in.sin_family = family;
- address_in.sin_addr.s_addr = INADDR_ANY;
- address_in.sin_port = port;
+ /* If we have a host, use getaddrinfo to resolve both host and service.
+ Otherwise, use getservbyname to lookup the service. */
-#ifndef HAVE_GETADDRINFO
if (!NILP (host))
{
- struct hostent *host_info_ptr;
-
- /* gethostbyname may fail with TRY_AGAIN, but we don't honor that,
- as it may `hang' Emacs for a very long time. */
- immediate_quit = 1;
- QUIT;
-
-#ifdef HAVE_RES_INIT
- res_init ();
-#endif
-
- host_info_ptr = gethostbyname (SDATA (host));
- immediate_quit = 0;
-
- if (host_info_ptr)
- {
- memcpy (&address_in.sin_addr, host_info_ptr->h_addr,
- host_info_ptr->h_length);
- family = host_info_ptr->h_addrtype;
- address_in.sin_family = family;
- }
- else
- /* Attempt to interpret host as numeric inet address. */
- {
- unsigned long numeric_addr;
- numeric_addr = inet_addr (SSDATA (host));
- if (numeric_addr == -1)
- error ("Unknown host \"%s\"", SDATA (host));
-
- memcpy (&address_in.sin_addr, &numeric_addr,
- sizeof (address_in.sin_addr));
- }
-
- }
-#endif /* not HAVE_GETADDRINFO */
-
- ai.ai_family = family;
- ai.ai_addr = (struct sockaddr *) &address_in;
- ai.ai_addrlen = sizeof address_in;
-
- open_socket:
-
- /* Do this in case we never enter the for-loop below. */
- count1 = SPECPDL_INDEX ();
- s = -1;
-
- for (lres = res; lres; lres = lres->ai_next)
- {
- ptrdiff_t optn;
- int optbits;
-
-#ifdef WINDOWSNT
- retry_connect:
-#endif
-
- s = socket (lres->ai_family, lres->ai_socktype | SOCK_CLOEXEC,
- lres->ai_protocol);
- if (s < 0)
- {
- xerrno = errno;
- continue;
- }
-
-#ifdef DATAGRAM_SOCKETS
- if (!is_server && socktype == SOCK_DGRAM)
- break;
-#endif /* DATAGRAM_SOCKETS */
-
-#ifdef NON_BLOCKING_CONNECT
- if (is_non_blocking_client)
- {
- ret = fcntl (s, F_SETFL, O_NONBLOCK);
- if (ret < 0)
- {
- xerrno = errno;
- emacs_close (s);
- s = -1;
- continue;
- }
- }
-#endif
-
- /* Make us close S if quit. */
- record_unwind_protect_int (close_file_unwind, s);
-
- /* Parse network options in the arg list.
- We simply ignore anything which isn't a known option (including other keywords).
- An error is signaled if setting a known option fails. */
- for (optn = optbits = 0; optn < nargs - 1; optn += 2)
- optbits |= set_socket_option (s, args[optn], args[optn + 1]);
-
- if (is_server)
- {
- /* Configure as a server socket. */
-
- /* SO_REUSEADDR = 1 is default for server sockets; must specify
- explicit :reuseaddr key to override this. */
-#ifdef HAVE_LOCAL_SOCKETS
- if (family != AF_LOCAL)
-#endif
- if (!(optbits & (1 << OPIX_REUSEADDR)))
- {
- int optval = 1;
- if (setsockopt (s, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval))
- report_file_error ("Cannot set reuse option on server socket", Qnil);
- }
-
- if (bind (s, lres->ai_addr, lres->ai_addrlen))
- report_file_error ("Cannot bind server socket", Qnil);
-
-#ifdef HAVE_GETSOCKNAME
- if (EQ (service, Qt))
- {
- struct sockaddr_in sa1;
- socklen_t len1 = sizeof (sa1);
- if (getsockname (s, (struct sockaddr *)&sa1, &len1) == 0)
- {
- ((struct sockaddr_in *)(lres->ai_addr))->sin_port = sa1.sin_port;
- service = make_number (ntohs (sa1.sin_port));
- contact = Fplist_put (contact, QCservice, service);
- }
- }
-#endif
-
- if (socktype != SOCK_DGRAM && listen (s, backlog))
- report_file_error ("Cannot listen on server socket", Qnil);
-
- break;
- }
+ struct addrinfo *res, *lres;
+ int ret;
immediate_quit = 1;
QUIT;
- ret = connect (s, lres->ai_addr, lres->ai_addrlen);
- xerrno = errno;
+ struct addrinfo hints;
+ memset (&hints, 0, sizeof hints);
+ hints.ai_family = family;
+ hints.ai_socktype = socktype;
- if (ret == 0 || xerrno == EISCONN)
+ ret = getaddrinfo (SSDATA (host), portstring, &hints, &res);
+ if (ret)
+#ifdef HAVE_GAI_STRERROR
{
- /* The unwind-protect will be discarded afterwards.
- Likewise for immediate_quit. */
- break;
+ synchronize_system_messages_locale ();
+ char const *str = gai_strerror (ret);
+ if (! NILP (Vlocale_coding_system))
+ str = SSDATA (code_convert_string_norecord
+ (build_string (str), Vlocale_coding_system, 0));
+ error ("%s/%s %s", SSDATA (host), portstring, str);
}
-
-#ifdef NON_BLOCKING_CONNECT
-#ifdef EINPROGRESS
- if (is_non_blocking_client && xerrno == EINPROGRESS)
- break;
#else
-#ifdef EWOULDBLOCK
- if (is_non_blocking_client && xerrno == EWOULDBLOCK)
- break;
-#endif
-#endif
+ error ("%s/%s getaddrinfo error %d", SSDATA (host), portstring, ret);
#endif
+ immediate_quit = 0;
-#ifndef WINDOWSNT
- if (xerrno == EINTR)
- {
- /* Unlike most other syscalls connect() cannot be called
- again. (That would return EALREADY.) The proper way to
- wait for completion is pselect(). */
- int sc;
- socklen_t len;
- fd_set fdset;
- retry_select:
- FD_ZERO (&fdset);
- FD_SET (s, &fdset);
- QUIT;
- sc = pselect (s + 1, NULL, &fdset, NULL, NULL, NULL);
- if (sc == -1)
- {
- if (errno == EINTR)
- goto retry_select;
- else
- report_file_error ("Failed select", Qnil);
- }
- eassert (sc > 0);
-
- len = sizeof xerrno;
- eassert (FD_ISSET (s, &fdset));
- if (getsockopt (s, SOL_SOCKET, SO_ERROR, &xerrno, &len) < 0)
- report_file_error ("Failed getsockopt", Qnil);
- if (xerrno)
- report_file_errno ("Failed connect", Qnil, xerrno);
- break;
- }
-#endif /* !WINDOWSNT */
+ for (lres = res; lres; lres = lres->ai_next)
+ addrinfos = Fcons (conv_addrinfo_to_lisp (lres), addrinfos);
- immediate_quit = 0;
+ addrinfos = Fnreverse (addrinfos);
- /* Discard the unwind protect closing S. */
- specpdl_ptr = specpdl + count1;
- emacs_close (s);
- s = -1;
+ freeaddrinfo (res);
-#ifdef WINDOWSNT
- if (xerrno == EINTR)
- goto retry_connect;
-#endif
+ goto open_socket;
}
- if (s >= 0)
+ /* No hostname has been specified (e.g., a local server process). */
+
+ if (EQ (service, Qt))
+ port = 0;
+ else if (INTEGERP (service))
+ port = XINT (service);
+ else
{
-#ifdef DATAGRAM_SOCKETS
- if (socktype == SOCK_DGRAM)
+ CHECK_STRING (service);
+
+ port = -1;
+ if (SBYTES (service) != 0)
{
- if (datagram_address[s].sa)
- emacs_abort ();
- datagram_address[s].sa = xmalloc (lres->ai_addrlen);
- datagram_address[s].len = lres->ai_addrlen;
- if (is_server)
+ /* Allow the service to be a string containing the port number,
+ because that's allowed if you have getaddrbyname. */
+ char *service_end;
+ long int lport = strtol (SSDATA (service), &service_end, 10);
+ if (service_end == SSDATA (service) + SBYTES (service))
+ port = lport;
+ else
{
- Lisp_Object remote;
- memset (datagram_address[s].sa, 0, lres->ai_addrlen);
- if (remote = Fplist_get (contact, QCremote), !NILP (remote))
- {
- int rfamily, rlen;
- rlen = get_lisp_to_sockaddr_size (remote, &rfamily);
- if (rlen != 0 && rfamily == lres->ai_family
- && rlen == lres->ai_addrlen)
- conv_lisp_to_sockaddr (rfamily, remote,
- datagram_address[s].sa, rlen);
- }
+ struct servent *svc_info
+ = getservbyname (SSDATA (service),
+ socktype == SOCK_DGRAM ? "udp" : "tcp");
+ if (svc_info)
+ port = ntohs (svc_info->s_port);
}
- else
- memcpy (datagram_address[s].sa, lres->ai_addr, lres->ai_addrlen);
- }
-#endif
- contact = Fplist_put (contact, colon_address,
- conv_sockaddr_to_lisp (lres->ai_addr, lres->ai_addrlen));
-#ifdef HAVE_GETSOCKNAME
- if (!is_server)
- {
- struct sockaddr_in sa1;
- socklen_t len1 = sizeof (sa1);
- if (getsockname (s, (struct sockaddr *)&sa1, &len1) == 0)
- contact = Fplist_put (contact, QClocal,
- conv_sockaddr_to_lisp ((struct sockaddr *)&sa1, len1));
}
-#endif
}
- immediate_quit = 0;
-
-#ifdef HAVE_GETADDRINFO
- if (res != &ai)
+ if (! (0 <= port && port < 1 << 16))
{
- block_input ();
- freeaddrinfo (res);
- unblock_input ();
- }
-#endif
-
- if (s < 0)
- {
- /* If non-blocking got this far - and failed - assume non-blocking is
- not supported after all. This is probably a wrong assumption, but
- the normal blocking calls to open-network-stream handles this error
- better. */
- if (is_non_blocking_client)
- return Qnil;
-
- report_file_errno ((is_server
- ? "make server process failed"
- : "make client process failed"),
- contact, xerrno);
+ AUTO_STRING (unknown_service, "Unknown service: %s");
+ xsignal1 (Qerror, CALLN (Fformat, unknown_service, service));
}
- inch = s;
- outch = s;
+ open_socket:
if (!NILP (buffer))
buffer = Fget_buffer_create (buffer);
- proc = make_process (name);
-
- chan_process[inch] = proc;
- fcntl (inch, F_SETFL, O_NONBLOCK);
+ /* Unwind bind_polling_period. */
+ unbind_to (count, Qnil);
+ proc = make_process (name);
+ record_unwind_protect (remove_process, proc);
p = XPROCESS (proc);
-
pset_childp (p, contact);
pset_plist (p, Fcopy_sequence (Fplist_get (contact, QCplist)));
pset_type (p, Qnetwork);
@@ -3621,136 +3925,54 @@ usage: (make-network-process &rest ARGS) */)
p->kill_without_query = 1;
if ((tem = Fplist_get (contact, QCstop), !NILP (tem)))
pset_command (p, Qt);
- p->pid = 0;
-
- p->open_fd[SUBPROCESS_STDIN] = inch;
- p->infd = inch;
- p->outfd = outch;
-
- /* Discard the unwind protect for closing S, if any. */
- specpdl_ptr = specpdl + count1;
-
- /* Unwind bind_polling_period and request_sigio. */
- unbind_to (count, Qnil);
+ eassert (p->pid == 0);
+ p->backlog = 5;
+ eassert (! p->is_non_blocking_client);
+ eassert (! p->is_server);
+ p->port = port;
+ p->socktype = socktype;
+#ifdef HAVE_GETADDRINFO_A
+ eassert (! p->dns_request);
+#endif
+#ifdef HAVE_GNUTLS
+ tem = Fplist_get (contact, QCtls_parameters);
+ CHECK_LIST (tem);
+ p->gnutls_boot_parameters = tem;
+#endif
- if (is_server && socktype != SOCK_DGRAM)
- pset_status (p, Qlisten);
+ set_network_socket_coding_system (proc, host, service, name);
- /* Make the process marker point into the process buffer (if any). */
- if (BUFFERP (buffer))
- set_marker_both (p->mark, buffer,
- BUF_ZV (XBUFFER (buffer)),
- BUF_ZV_BYTE (XBUFFER (buffer)));
+ /* :server BOOL */
+ tem = Fplist_get (contact, QCserver);
+ if (!NILP (tem))
+ {
+ /* Don't support network sockets when non-blocking mode is
+ not available, since a blocked Emacs is not useful. */
+ p->is_server = true;
+ if (TYPE_RANGED_INTEGERP (int, tem))
+ p->backlog = XINT (tem);
+ }
-#ifdef NON_BLOCKING_CONNECT
- if (is_non_blocking_client)
+ /* :nowait BOOL */
+ if (!p->is_server && socktype != SOCK_DGRAM
+ && !NILP (Fplist_get (contact, QCnowait)))
+ p->is_non_blocking_client = true;
+
+ bool postpone_connection = false;
+#ifdef HAVE_GETADDRINFO_A
+ /* With async address resolution, the list of addresses is empty, so
+ postpone connecting to the server. */
+ if (!p->is_server && NILP (addrinfos))
{
- /* We may get here if connect did succeed immediately. However,
- in that case, we still need to signal this like a non-blocking
- connection. */
- pset_status (p, Qconnect);
- if (!FD_ISSET (inch, &connect_wait_mask))
- {
- FD_SET (inch, &connect_wait_mask);
- FD_SET (inch, &write_mask);
- num_pending_connects++;
- }
+ p->dns_request = dns_request;
+ p->status = list1 (Qconnect);
+ postpone_connection = true;
}
- else
#endif
- /* A server may have a client filter setting of Qt, but it must
- still listen for incoming connects unless it is stopped. */
- if ((!EQ (p->filter, Qt) && !EQ (p->command, Qt))
- || (EQ (p->status, Qlisten) && NILP (p->command)))
- {
- FD_SET (inch, &input_wait_mask);
- FD_SET (inch, &non_keyboard_wait_mask);
- }
-
- if (inch > max_process_desc)
- max_process_desc = inch;
-
- tem = Fplist_member (contact, QCcoding);
- if (!NILP (tem) && (!CONSP (tem) || !CONSP (XCDR (tem))))
- tem = Qnil; /* No error message (too late!). */
-
- {
- /* Setup coding systems for communicating with the network stream. */
- /* Qt denotes we have not yet called Ffind_operation_coding_system. */
- Lisp_Object coding_systems = Qt;
- Lisp_Object val;
-
- if (!NILP (tem))
- {
- val = XCAR (XCDR (tem));
- if (CONSP (val))
- val = XCAR (val);
- }
- else if (!NILP (Vcoding_system_for_read))
- val = Vcoding_system_for_read;
- else if ((!NILP (buffer) && NILP (BVAR (XBUFFER (buffer), enable_multibyte_characters)))
- || (NILP (buffer) && NILP (BVAR (&buffer_defaults, enable_multibyte_characters))))
- /* We dare not decode end-of-line format by setting VAL to
- Qraw_text, because the existing Emacs Lisp libraries
- assume that they receive bare code including a sequence of
- CR LF. */
- val = Qnil;
- else
- {
- if (NILP (host) || NILP (service))
- coding_systems = Qnil;
- else
- coding_systems = CALLN (Ffind_operation_coding_system,
- Qopen_network_stream, name, buffer,
- host, service);
- if (CONSP (coding_systems))
- val = XCAR (coding_systems);
- else if (CONSP (Vdefault_process_coding_system))
- val = XCAR (Vdefault_process_coding_system);
- else
- val = Qnil;
- }
- pset_decode_coding_system (p, val);
-
- if (!NILP (tem))
- {
- val = XCAR (XCDR (tem));
- if (CONSP (val))
- val = XCDR (val);
- }
- else if (!NILP (Vcoding_system_for_write))
- val = Vcoding_system_for_write;
- else if (NILP (BVAR (current_buffer, enable_multibyte_characters)))
- val = Qnil;
- else
- {
- if (EQ (coding_systems, Qt))
- {
- if (NILP (host) || NILP (service))
- coding_systems = Qnil;
- else
- coding_systems = CALLN (Ffind_operation_coding_system,
- Qopen_network_stream, name, buffer,
- host, service);
- }
- if (CONSP (coding_systems))
- val = XCDR (coding_systems);
- else if (CONSP (Vdefault_process_coding_system))
- val = XCDR (Vdefault_process_coding_system);
- else
- val = Qnil;
- }
- pset_encode_coding_system (p, val);
- }
- setup_process_coding_systems (proc);
-
- pset_decoding_buf (p, empty_unibyte_string);
- p->decoding_carryover = 0;
- pset_encoding_buf (p, empty_unibyte_string);
-
- p->inherit_coding_system_flag
- = !(!NILP (tem) || NILP (buffer) || !inherit_process_coding_system);
+ if (! postpone_connection)
+ connect_network_socket (proc, addrinfos, use_external_socket_p);
+ specpdl_ptr = specpdl + count;
return proc;
}
@@ -4130,7 +4352,6 @@ deactivate_process (Lisp_Object proc)
chan_process[inchannel] = Qnil;
FD_CLR (inchannel, &input_wait_mask);
FD_CLR (inchannel, &non_keyboard_wait_mask);
-#ifdef NON_BLOCKING_CONNECT
if (FD_ISSET (inchannel, &connect_wait_mask))
{
FD_CLR (inchannel, &connect_wait_mask);
@@ -4138,7 +4359,6 @@ deactivate_process (Lisp_Object proc)
if (--num_pending_connects < 0)
emacs_abort ();
}
-#endif
if (inchannel == max_process_desc)
{
/* We just closed the highest-numbered process input descriptor,
@@ -4262,15 +4482,7 @@ server_accept_connection (Lisp_Object server, int channel)
if (s < 0)
{
int code = errno;
-
- if (code == EAGAIN)
- return;
-#ifdef EWOULDBLOCK
- if (code == EWOULDBLOCK)
- return;
-#endif
-
- if (!NILP (ps->log))
+ if (!would_block (code) && !NILP (ps->log))
call3 (ps->log, server, Qnil,
concat3 (build_string ("accept failed with code"),
Fnumber_to_string (make_number (code)),
@@ -4391,8 +4603,8 @@ server_accept_connection (Lisp_Object server, int channel)
pset_buffer (p, buffer);
pset_sentinel (p, ps->sentinel);
pset_filter (p, ps->filter);
- pset_command (p, Qnil);
- p->pid = 0;
+ eassert (NILP (p->command));
+ eassert (p->pid == 0);
/* Discard the unwind protect for closing S. */
specpdl_ptr = specpdl + count;
@@ -4422,7 +4634,7 @@ server_accept_connection (Lisp_Object server, int channel)
setup_process_coding_systems (proc);
pset_decoding_buf (p, empty_unibyte_string);
- p->decoding_carryover = 0;
+ eassert (p->decoding_carryover == 0);
pset_encoding_buf (p, empty_unibyte_string);
p->inherit_coding_system_flag
@@ -4442,6 +4654,87 @@ server_accept_connection (Lisp_Object server, int channel)
exec_sentinel (proc, concat3 (open_from, host_string, nl));
}
+#ifdef HAVE_GETADDRINFO_A
+static Lisp_Object
+check_for_dns (Lisp_Object proc)
+{
+ struct Lisp_Process *p = XPROCESS (proc);
+ Lisp_Object addrinfos = Qnil;
+
+ /* Sanity check. */
+ if (! p->dns_request)
+ return Qnil;
+
+ int ret = gai_error (p->dns_request);
+ if (ret == EAI_INPROGRESS)
+ return Qt;
+
+ /* We got a response. */
+ if (ret == 0)
+ {
+ struct addrinfo *res;
+
+ for (res = p->dns_request->ar_result; res; res = res->ai_next)
+ addrinfos = Fcons (conv_addrinfo_to_lisp (res), addrinfos);
+
+ addrinfos = Fnreverse (addrinfos);
+ }
+ /* The DNS lookup failed. */
+ else if (connecting_status (p->status))
+ {
+ deactivate_process (proc);
+ pset_status (p, (list2
+ (Qfailed,
+ concat3 (build_string ("Name lookup of "),
+ build_string (p->dns_request->ar_name),
+ build_string (" failed")))));
+ }
+
+ free_dns_request (proc);
+
+ /* This process should not already be connected (or killed). */
+ if (! connecting_status (p->status))
+ return Qnil;
+
+ return addrinfos;
+}
+
+#endif /* HAVE_GETADDRINFO_A */
+
+static void
+wait_for_socket_fds (Lisp_Object process, char const *name)
+{
+ while (XPROCESS (process)->infd < 0
+ && connecting_status (XPROCESS (process)->status))
+ {
+ add_to_log ("Waiting for socket from %s...", build_string (name));
+ wait_reading_process_output (0, 20 * 1000 * 1000, 0, 0, Qnil, NULL, 0);
+ }
+}
+
+static void
+wait_while_connecting (Lisp_Object process)
+{
+ while (connecting_status (XPROCESS (process)->status))
+ {
+ add_to_log ("Waiting for connection...");
+ wait_reading_process_output (0, 20 * 1000 * 1000, 0, 0, Qnil, NULL, 0);
+ }
+}
+
+static void
+wait_for_tls_negotiation (Lisp_Object process)
+{
+#ifdef HAVE_GNUTLS
+ while (XPROCESS (process)->gnutls_p
+ && XPROCESS (process)->gnutls_initstage != GNUTLS_STAGE_READY)
+ {
+ add_to_log ("Waiting for TLS...");
+ wait_reading_process_output (0, 20 * 1000 * 1000, 0, 0, Qnil, NULL, 0);
+ }
+#endif
+}
+
/* This variable is different from waiting_for_input in keyboard.c.
It is used to communicate to a lisp process-filter/sentinel (via the
function Fwaiting_for_user_input_p below) whether Emacs was waiting
@@ -4520,6 +4813,9 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
struct timespec got_output_end_time = invalid_timespec ();
enum { MINIMUM = -1, TIMEOUT, INFINITY } wait;
int got_some_output = -1;
+#if defined HAVE_GETADDRINFO_A || defined HAVE_GNUTLS
+ bool retry_for_async;
+#endif
ptrdiff_t count = SPECPDL_INDEX ();
/* Close to the current time if known, an invalid timespec otherwise. */
@@ -4567,6 +4863,60 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
if (! NILP (wait_for_cell) && ! NILP (XCAR (wait_for_cell)))
break;
+#if defined HAVE_GETADDRINFO_A || defined HAVE_GNUTLS
+ {
+ Lisp_Object process_list_head, aproc;
+ struct Lisp_Process *p;
+
+ retry_for_async = false;
+ FOR_EACH_PROCESS(process_list_head, aproc)
+ {
+ p = XPROCESS (aproc);
+
+ if (! wait_proc || p == wait_proc)
+ {
+#ifdef HAVE_GETADDRINFO_A
+ /* Check for pending DNS requests. */
+ if (p->dns_request)
+ {
+ Lisp_Object addrinfos = check_for_dns (aproc);
+ if (!NILP (addrinfos) && !EQ (addrinfos, Qt))
+ connect_network_socket (aproc, addrinfos, Qnil);
+ else
+ retry_for_async = true;
+ }
+#endif
+#ifdef HAVE_GNUTLS
+ /* Continue TLS negotiation. */
+ if (p->gnutls_initstage == GNUTLS_STAGE_HANDSHAKE_TRIED
+ && p->is_non_blocking_client)
+ {
+ gnutls_try_handshake (p);
+ p->gnutls_handshakes_tried++;
+
+ if (p->gnutls_initstage == GNUTLS_STAGE_READY)
+ {
+ gnutls_verify_boot (aproc, Qnil);
+ finish_after_tls_connection (aproc);
+ }
+ else
+ {
+ retry_for_async = true;
+ if (p->gnutls_handshakes_tried
+ > GNUTLS_EMACS_HANDSHAKES_LIMIT)
+ {
+ deactivate_process (aproc);
+ pset_status (p, list2 (Qfailed,
+ build_string ("TLS negotiation failed")));
+ }
+ }
+ }
+#endif
+ }
+ }
+ }
+#endif /* GETADDRINFO_A or GNUTLS */
+
/* Compute time from now till when time limit is up. */
/* Exit if already run out. */
if (wait == TIMEOUT)
@@ -4649,11 +4999,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
timeout = make_timespec (0, 0);
if ((pselect (max (max_process_desc, max_input_desc) + 1,
&Atemp,
-#ifdef NON_BLOCKING_CONNECT
(num_pending_connects > 0 ? &Ctemp : NULL),
-#else
- NULL,
-#endif
NULL, &timeout, NULL)
<= 0))
{
@@ -4671,7 +5017,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
update_status (wait_proc);
if (wait_proc
&& ! EQ (wait_proc->status, Qrun)
- && ! EQ (wait_proc->status, Qconnect))
+ && ! connecting_status (wait_proc->status))
{
bool read_some_bytes = false;
@@ -4687,12 +5033,8 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
int nread = read_process_output (proc, wait_proc->infd);
if (nread < 0)
{
- if (errno == EIO || errno == EAGAIN)
- break;
-#ifdef EWOULDBLOCK
- if (errno == EWOULDBLOCK)
- break;
-#endif
+ if (errno == EIO || would_block (errno))
+ break;
}
else
{
@@ -4825,6 +5167,15 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
if (timeout.tv_sec > 0 || timeout.tv_nsec > 0)
now = invalid_timespec ();
+#if defined HAVE_GETADDRINFO_A || defined HAVE_GNUTLS
+ if (retry_for_async
+ && (timeout.tv_sec > 0 || timeout.tv_nsec > ASYNC_RETRY_NSEC))
+ {
+ timeout.tv_sec = 0;
+ timeout.tv_nsec = ASYNC_RETRY_NSEC;
+ }
+#endif
+
#if defined (HAVE_NS)
nfds = ns_select
#elif defined (HAVE_GLIB)
@@ -5073,11 +5424,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
if (do_display)
redisplay_preserve_echo_area (12);
}
-#ifdef EWOULDBLOCK
- else if (nread == -1 && errno == EWOULDBLOCK)
- ;
-#endif
- else if (nread == -1 && errno == EAGAIN)
+ else if (nread == -1 && would_block (errno))
;
#ifdef WINDOWSNT
/* FIXME: Is this special case still needed? */
@@ -5142,7 +5489,6 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
list2 (Qexit, make_number (256)));
}
}
-#ifdef NON_BLOCKING_CONNECT
if (FD_ISSET (channel, &Writeok)
&& FD_ISSET (channel, &connect_wait_mask))
{
@@ -5159,15 +5505,16 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
p = XPROCESS (proc);
-#ifdef GNU_LINUX
- /* getsockopt(,,SO_ERROR,,) is said to hang on some systems.
- So only use it on systems where it is known to work. */
+#ifndef WINDOWSNT
{
socklen_t xlen = sizeof (xerrno);
if (getsockopt (channel, SOL_SOCKET, SO_ERROR, &xerrno, &xlen))
xerrno = errno;
}
#else
+ /* On MS-Windows, getsockopt clears the error for the
+ entire process, which may not be the right thing; see
+ w32.c. Use getpeername instead. */
{
struct sockaddr pname;
socklen_t pnamelen = sizeof (pname);
@@ -5186,17 +5533,36 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
#endif
if (xerrno)
{
- p->tick = ++process_tick;
- pset_status (p, list2 (Qfailed, make_number (xerrno)));
+ Lisp_Object addrinfos
+ = connecting_status (p->status) ? XCDR (p->status) : Qnil;
+ if (!NILP (addrinfos))
+ XSETCDR (p->status, XCDR (addrinfos));
+ else
+ {
+ p->tick = ++process_tick;
+ pset_status (p, list2 (Qfailed, make_number (xerrno)));
+ }
deactivate_process (proc);
+ if (!NILP (addrinfos))
+ connect_network_socket (proc, addrinfos, Qnil);
}
else
{
- pset_status (p, Qrun);
- /* Execute the sentinel here. If we had relied on
- status_notify to do it later, it will read input
- from the process before calling the sentinel. */
- exec_sentinel (proc, build_string ("open\n"));
+#ifdef HAVE_GNUTLS
+ /* If we have an incompletely set up TLS connection,
+ then defer the sentinel signaling until
+ later. */
+ if (NILP (p->gnutls_boot_parameters)
+ && !p->gnutls_p)
+#endif
+ {
+ pset_status (p, Qrun);
+ /* Execute the sentinel here. If we had relied on
+ status_notify to do it later, it will read input
+ from the process before calling the sentinel. */
+ exec_sentinel (proc, build_string ("open\n"));
+ }
+
if (0 <= p->infd && !EQ (p->filter, Qt)
&& !EQ (p->command, Qt))
{
@@ -5205,7 +5571,6 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
}
}
}
-#endif /* NON_BLOCKING_CONNECT */
} /* End for each file descriptor. */
} /* End while exit conditions not met. */
@@ -5653,6 +6018,12 @@ send_process (Lisp_Object proc, const char *buf, ptrdiff_t len,
ssize_t rv;
struct coding_system *coding;
+ if (NETCONN_P (proc))
+ {
+ wait_while_connecting (proc);
+ wait_for_tls_negotiation (proc);
+ }
+
if (p->raw_status_new)
update_status (p);
if (! EQ (p->status, Qrun))
@@ -5801,11 +6172,7 @@ send_process (Lisp_Object proc, const char *buf, ptrdiff_t len,
if (rv < 0)
{
- if (errno == EAGAIN
-#ifdef EWOULDBLOCK
- || errno == EWOULDBLOCK
-#endif
- )
+ if (would_block (errno))
/* Buffer is full. Wait, accepting input;
that may allow the program
to finish doing output and read more. */
@@ -5870,7 +6237,10 @@ nil, indicating the current buffer's process.
Called from program, takes three arguments, PROCESS, START and END.
If the region is more than 500 characters long,
it is sent in several bunches. This may happen even for shorter regions.
-Output from processes can arrive in between bunches. */)
+Output from processes can arrive in between bunches.
+
+If PROCESS is a non-blocking network process that hasn't been fully
+set up yet, this function will block until socket setup has completed. */)
(Lisp_Object process, Lisp_Object start, Lisp_Object end)
{
Lisp_Object proc = get_process (process);
@@ -5884,6 +6254,9 @@ Output from processes can arrive in between bunches. */)
if (XINT (start) < GPT && XINT (end) > GPT)
move_gap_both (XINT (start), start_byte);
+ if (NETCONN_P (proc))
+ wait_while_connecting (proc);
+
send_process (proc, (char *) BYTE_POS_ADDR (start_byte),
end_byte - start_byte, Fcurrent_buffer ());
@@ -5897,12 +6270,14 @@ PROCESS may be a process, a buffer, the name of a process or buffer, or
nil, indicating the current buffer's process.
If STRING is more than 500 characters long,
it is sent in several bunches. This may happen even for shorter strings.
-Output from processes can arrive in between bunches. */)
+Output from processes can arrive in between bunches.
+
+If PROCESS is a non-blocking network process that hasn't been fully
+set up yet, this function will block until socket setup has completed. */)
(Lisp_Object process, Lisp_Object string)
{
- Lisp_Object proc;
CHECK_STRING (string);
- proc = get_process (process);
+ Lisp_Object proc = get_process (process);
send_process (proc, SSDATA (string),
SBYTES (string), string);
return Qnil;
@@ -5944,12 +6319,8 @@ process group. */)
{
/* Initialize in case ioctl doesn't exist or gives an error,
in a way that will cause returning t. */
- pid_t gid;
- Lisp_Object proc;
- struct Lisp_Process *p;
-
- proc = get_process (process);
- p = XPROCESS (proc);
+ Lisp_Object proc = get_process (process);
+ struct Lisp_Process *p = XPROCESS (proc);
if (!EQ (p->type, Qreal))
error ("Process %s is not a subprocess",
@@ -5958,7 +6329,7 @@ process group. */)
error ("Process %s is not active",
SDATA (p->name));
- gid = emacs_get_tty_pgrp (p);
+ pid_t gid = emacs_get_tty_pgrp (p);
if (gid == p->pid)
return Qnil;
@@ -6029,7 +6400,7 @@ process_send_signal (Lisp_Object process, int signo, Lisp_Object current_group,
break;
case SIGTSTP:
-#if defined (VSWTCH) && !defined (PREFER_VSUSP)
+#ifdef VSWTCH
sig_char = &t.c_cc[VSWTCH];
#else
sig_char = &t.c_cc[VSUSP];
@@ -6317,10 +6688,15 @@ process has been transmitted to the serial port. */)
struct coding_system *coding = NULL;
int outfd;
- if (DATAGRAM_CONN_P (process))
+ proc = get_process (process);
+
+ if (NETCONN_P (proc))
+ wait_while_connecting (proc);
+
+ if (DATAGRAM_CONN_P (proc))
return process;
- proc = get_process (process);
+
outfd = XPROCESS (proc)->outfd;
if (outfd >= 0)
coding = proc_encode_coding_system[outfd];
@@ -6645,7 +7021,7 @@ status_notify (struct Lisp_Process *deleting_process,
/* If process is still active, read any output that remains. */
while (! EQ (p->filter, Qt)
- && ! EQ (p->status, Qconnect)
+ && ! connecting_status (p->status)
&& ! EQ (p->status, Qlisten)
/* Network or serial process not stopped: */
&& ! EQ (p->command, Qt)
@@ -6765,22 +7141,24 @@ DEFUN ("set-process-coding-system", Fset_process_coding_system,
Sset_process_coding_system, 1, 3, 0,
doc: /* Set coding systems of PROCESS to DECODING and ENCODING.
DECODING will be used to decode subprocess output and ENCODING to
-encode subprocess input. */)
- (register Lisp_Object process, Lisp_Object decoding, Lisp_Object encoding)
+encode subprocess input. */)
+ (Lisp_Object process, Lisp_Object decoding, Lisp_Object encoding)
{
- register struct Lisp_Process *p;
-
CHECK_PROCESS (process);
- p = XPROCESS (process);
- if (p->infd < 0)
- error ("Input file descriptor of %s closed", SDATA (p->name));
- if (p->outfd < 0)
- error ("Output file descriptor of %s closed", SDATA (p->name));
+
+ struct Lisp_Process *p = XPROCESS (process);
+
Fcheck_coding_system (decoding);
Fcheck_coding_system (encoding);
encoding = coding_inherit_eol_type (encoding, Qnil);
pset_decode_coding_system (p, decoding);
pset_encode_coding_system (p, encoding);
+
+ /* If the sockets haven't been set up yet, the final setup part of
+ this will be called asynchronously. */
+ if (p->infd < 0 || p->outfd < 0)
+ return Qnil;
+
setup_process_coding_systems (process);
return Qnil;
@@ -6805,13 +7183,18 @@ all character code conversion except for end-of-line conversion is
suppressed. */)
(Lisp_Object process, Lisp_Object flag)
{
- register struct Lisp_Process *p;
-
CHECK_PROCESS (process);
- p = XPROCESS (process);
+
+ struct Lisp_Process *p = XPROCESS (process);
if (NILP (flag))
pset_decode_coding_system
(p, raw_text_coding_system (p->decode_coding_system));
+
+ /* If the sockets haven't been set up yet, the final setup part of
+ this will be called asynchronously. */
+ if (p->infd < 0 || p->outfd < 0)
+ return Qnil;
+
setup_process_coding_systems (process);
return Qnil;
@@ -6822,14 +7205,11 @@ DEFUN ("process-filter-multibyte-p", Fprocess_filter_multibyte_p,
doc: /* Return t if a multibyte string is given to PROCESS's filter.*/)
(Lisp_Object process)
{
- register struct Lisp_Process *p;
- struct coding_system *coding;
-
CHECK_PROCESS (process);
- p = XPROCESS (process);
+ struct Lisp_Process *p = XPROCESS (process);
if (p->infd < 0)
return Qnil;
- coding = proc_decode_coding_system[p->infd];
+ struct coding_system *coding = proc_decode_coding_system[p->infd];
return (CODING_FOR_UNIBYTE (coding) ? Qnil : Qt);
}
@@ -7383,10 +7763,10 @@ catch_child_signal (void)
/* This is not called "init_process" because that is the name of a
Mach system call, so it would cause problems on Darwin systems. */
void
-init_process_emacs (void)
+init_process_emacs (int sockfd)
{
#ifdef subprocesses
- register int i;
+ int i;
inhibit_sentinels = 0;
@@ -7409,12 +7789,11 @@ init_process_emacs (void)
FD_ZERO (&non_process_wait_mask);
FD_ZERO (&write_mask);
max_process_desc = max_input_desc = -1;
+ external_sock_fd = sockfd;
memset (fd_callback_info, 0, sizeof (fd_callback_info));
-#ifdef NON_BLOCKING_CONNECT
FD_ZERO (&connect_wait_mask);
num_pending_connects = 0;
-#endif
process_output_delay_count = 0;
process_output_skip = 0;
@@ -7509,6 +7888,9 @@ syms_of_process (void)
DEFSYM (QCserver, ":server");
DEFSYM (QCnowait, ":nowait");
DEFSYM (QCsentinel, ":sentinel");
+ DEFSYM (QCuse_external_socket, ":use-external-socket");
+ DEFSYM (QCtls_parameters, ":tls-parameters");
+ DEFSYM (Qnsm_verify_connection, "nsm-verify-connection");
DEFSYM (QClog, ":log");
DEFSYM (QCnoquery, ":noquery");
DEFSYM (QCstop, ":stop");
@@ -7658,9 +8040,7 @@ The variable takes effect when `start-process' is called. */);
#define ADD_SUBFEATURE(key, val) \
subfeatures = pure_cons (pure_cons (key, pure_cons (val, Qnil)), subfeatures)
-#ifdef NON_BLOCKING_CONNECT
ADD_SUBFEATURE (QCnowait, Qt);
-#endif
#ifdef DATAGRAM_SOCKETS
ADD_SUBFEATURE (QCtype, Qdatagram);
#endif
diff --git a/src/process.h b/src/process.h
index 2e743a3dc3..9926050b9c 100644
--- a/src/process.h
+++ b/src/process.h
@@ -83,7 +83,10 @@ struct Lisp_Process
Lisp_Object mark;
/* Symbol indicating status of process.
- This may be a symbol: run, open, or closed.
+ This may be a symbol: run, open, closed, listen, or failed.
+ Or it may be a pair (connect . ADDRINFOS) where ADDRINFOS is
+ a list of remaining (PROTOCOL . ADDRINFO) pairs to try.
+ Or it may be (failed ERR) where ERR is an integer, string or symbol.
Or it may be a list, whose car is stop, exit or signal
and whose cdr is a pair (EXIT_CODE . COREDUMP_FLAG)
or (SIGNAL_NUMBER . COREDUMP_FLAG). */
@@ -106,6 +109,7 @@ struct Lisp_Process
#ifdef HAVE_GNUTLS
Lisp_Object gnutls_cred_type;
+ Lisp_Object gnutls_boot_parameters;
#endif
/* Pipe process attached to the standard error of this process. */
@@ -114,10 +118,11 @@ struct Lisp_Process
/* After this point, there are no Lisp_Objects any more. */
/* alloc.c assumes that `pid' is the first such non-Lisp slot. */
- /* Number of this process.
- allocate_process assumes this is the first non-Lisp_Object field.
- A value 0 is used for pseudo-processes such as network or serial
- connections. */
+ /* Process ID. A positive value is a child process ID.
+ Zero is for pseudo-processes such as network or serial connections,
+ or for processes that have not been fully created yet.
+ -1 is for a process that was not created successfully.
+ -2 is for a pty with no process, e.g., for GDB. */
pid_t pid;
/* Descriptor by which we read from this process. */
int infd;
@@ -161,7 +166,23 @@ struct Lisp_Process
flag indicates that `raw_status' contains a new status that still
needs to be synced to `status'. */
bool_bf raw_status_new : 1;
+ /* Whether this is a nonblocking socket. */
+ bool_bf is_non_blocking_client : 1;
+ /* Whether this is a server or a client socket. */
+ bool_bf is_server : 1;
int raw_status;
+ /* The length of the socket backlog. */
+ int backlog;
+ /* The port number. */
+ int port;
+ /* The socket type. */
+ int socktype;
+
+#ifdef HAVE_GETADDRINFO_A
+ /* Whether the socket is waiting for response from an asynchronous
+ DNS call. */
+ struct gaicb *dns_request;
+#endif
#ifdef HAVE_GNUTLS
gnutls_initstage_t gnutls_initstage;
@@ -174,6 +195,7 @@ struct Lisp_Process
int gnutls_log_level;
int gnutls_handshakes_tried;
bool_bf gnutls_p : 1;
+ bool_bf gnutls_complete_negotiation_p : 1;
#endif
};
@@ -191,6 +213,12 @@ pset_childp (struct Lisp_Process *p, Lisp_Object val)
p->childp = val;
}
+INLINE void
+pset_status (struct Lisp_Process *p, Lisp_Object val)
+{
+ p->status = val;
+}
+
#ifdef HAVE_GNUTLS
INLINE void
pset_gnutls_cred_type (struct Lisp_Process *p, Lisp_Object val)
@@ -225,7 +253,7 @@ extern Lisp_Object system_process_attributes (Lisp_Object);
extern void record_deleted_pid (pid_t, Lisp_Object);
struct sockaddr;
-extern Lisp_Object conv_sockaddr_to_lisp (struct sockaddr *, int);
+extern Lisp_Object conv_sockaddr_to_lisp (struct sockaddr *, ptrdiff_t);
extern void hold_keyboard_input (void);
extern void unhold_keyboard_input (void);
extern bool kbd_on_hold_p (void);
diff --git a/src/profiler.c b/src/profiler.c
index 31bd77f00e..07e21aeab1 100644
--- a/src/profiler.c
+++ b/src/profiler.c
@@ -201,7 +201,12 @@ static bool profiler_timer_ok;
/* Status of sampling profiler. */
static enum profiler_cpu_running
- { NOT_RUNNING, TIMER_SETTIME_RUNNING, SETITIMER_RUNNING }
+ { NOT_RUNNING,
+#ifdef HAVE_ITIMERSPEC
+ TIMER_SETTIME_RUNNING,
+#endif
+ SETITIMER_RUNNING
+ }
profiler_cpu_running;
/* Hash-table log of CPU profiler. */
@@ -224,7 +229,7 @@ static EMACS_INT current_sampling_interval;
static void
handle_profiler_signal (int signal)
{
- if (EQ (backtrace_top_function (), Qautomatic_gc))
+ if (EQ (backtrace_top_function (), QAutomatic_GC))
/* Special case the time-count inside GC because the hash-table
code is not prepared to be used while the GC is running.
More specifically it uses ASIZE at many places where it does
@@ -418,7 +423,7 @@ Before returning, a new log is allocated for future samples. */)
cpu_log = (profiler_cpu_running
? make_log (profiler_log_size, profiler_max_stack_depth)
: Qnil);
- Fputhash (Fmake_vector (make_number (1), Qautomatic_gc),
+ Fputhash (Fmake_vector (make_number (1), QAutomatic_GC),
make_number (cpu_gc_count),
result);
cpu_gc_count = 0;
diff --git a/src/puresize.h b/src/puresize.h
index fb9d934cad..da827ed399 100644
--- a/src/puresize.h
+++ b/src/puresize.h
@@ -47,7 +47,7 @@ INLINE_HEADER_BEGIN
#endif
#ifndef BASE_PURESIZE
-#define BASE_PURESIZE (1800000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
+#define BASE_PURESIZE (1900000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
#endif
/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */
diff --git a/src/ralloc.c b/src/ralloc.c
index a94f81b5bf..071cee777e 100644
--- a/src/ralloc.c
+++ b/src/ralloc.c
@@ -22,31 +22,15 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
rather than all of them. This means allowing for a possible
hole between the first bloc and the end of malloc storage. */
-#ifdef emacs
-
#include <config.h>
-#include "lisp.h" /* Needed for VALBITS. */
-#include "blockinput.h"
-
-#include <unistd.h>
-
-#ifdef DOUG_LEA_MALLOC
-#define M_TOP_PAD -2
-extern int mallopt (int, int);
-#else /* not DOUG_LEA_MALLOC */
-#if !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
-extern size_t __malloc_extra_blocks;
-#endif /* not SYSTEM_MALLOC and not HYBRID_MALLOC */
-#endif /* not DOUG_LEA_MALLOC */
-
-#else /* not emacs */
-
#include <stddef.h>
-#include <malloc.h>
-
-#endif /* not emacs */
+#ifdef emacs
+# include "lisp.h"
+# include "blockinput.h"
+# include <unistd.h>
+#endif
#include "getpagesize.h"
@@ -95,7 +79,9 @@ static int extra_bytes;
/* The hook `malloc' uses for the function which gets more space
from the system. */
-#if !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
+#ifdef HAVE_MALLOC_H
+# include <malloc.h>
+#else
extern void *(*__morecore) (ptrdiff_t);
#endif
diff --git a/src/regex.c b/src/regex.c
index 164eb4612a..c191f2462a 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -215,7 +215,7 @@ xmalloc (size_t size)
void *val = malloc (size);
if (!val && size)
{
- write (2, "virtual memory exhausted\n", 25);
+ write (STDERR_FILENO, "virtual memory exhausted\n", 25);
exit (1);
}
return val;
@@ -233,7 +233,7 @@ xrealloc (void *block, size_t size)
val = realloc (block, size);
if (!val && size)
{
- write (2, "virtual memory exhausted\n", 25);
+ write (STDERR_FILENO, "virtual memory exhausted\n", 25);
exit (1);
}
return val;
@@ -513,8 +513,6 @@ init_syntax_once (void)
#define BYTEWIDTH 8 /* In bits. */
-#define STREQ(s1, s2) ((strcmp (s1, s2) == 0))
-
#ifndef emacs
# undef max
# undef min
@@ -669,9 +667,7 @@ typedef enum
notsyntaxspec
#ifdef emacs
- ,before_dot, /* Succeeds if before point. */
- at_dot, /* Succeeds if at point. */
- after_dot, /* Succeeds if after point. */
+ , at_dot, /* Succeeds if at point. */
/* Matches any character whose category-set contains the specified
category. The operator is followed by a byte which contains a
@@ -783,44 +779,6 @@ extract_number_and_incr (re_char **source)
and end. */
#define CHARSET_RANGE_TABLE_END(range_table, count) \
((range_table) + (count) * 2 * 3)
-
-/* Test if C is in RANGE_TABLE. A flag NOT is negated if C is in.
- COUNT is number of ranges in RANGE_TABLE. */
-#define CHARSET_LOOKUP_RANGE_TABLE_RAW(not, c, range_table, count) \
- do \
- { \
- re_wchar_t range_start, range_end; \
- re_char *rtp; \
- re_char *range_table_end \
- = CHARSET_RANGE_TABLE_END ((range_table), (count)); \
- \
- for (rtp = (range_table); rtp < range_table_end; rtp += 2 * 3) \
- { \
- EXTRACT_CHARACTER (range_start, rtp); \
- EXTRACT_CHARACTER (range_end, rtp + 3); \
- \
- if (range_start <= (c) && (c) <= range_end) \
- { \
- (not) = !(not); \
- break; \
- } \
- } \
- } \
- while (0)
-
-/* Test if C is in range table of CHARSET. The flag NOT is negated if
- C is listed in it. */
-#define CHARSET_LOOKUP_RANGE_TABLE(not, c, charset) \
- do \
- { \
- /* Number of ranges in range table. */ \
- int count; \
- re_char *range_table = CHARSET_RANGE_TABLE (charset); \
- \
- EXTRACT_NUMBER_AND_INCR (count, range_table); \
- CHARSET_LOOKUP_RANGE_TABLE_RAW ((not), (c), range_table, count); \
- } \
- while (0)
/* If DEBUG is defined, Regex prints many voluminous messages about what
it is doing (if the variable `debug' is nonzero). If linked with the
@@ -1091,18 +1049,10 @@ print_partial_compiled_pattern (re_char *start, re_char *end)
break;
# ifdef emacs
- case before_dot:
- fprintf (stderr, "/before_dot");
- break;
-
case at_dot:
fprintf (stderr, "/at_dot");
break;
- case after_dot:
- fprintf (stderr, "/after_dot");
- break;
-
case categoryspec:
fprintf (stderr, "/categoryspec");
mcnt = *p++;
@@ -1156,7 +1106,9 @@ print_compiled_pattern (struct re_pattern_buffer *bufp)
printf ("no_sub: %d\t", bufp->no_sub);
printf ("not_bol: %d\t", bufp->not_bol);
printf ("not_eol: %d\t", bufp->not_eol);
+#ifndef emacs
printf ("syntax: %lx\n", bufp->syntax);
+#endif
fflush (stdout);
/* Perhaps we should print the translate table? */
}
@@ -1197,13 +1149,8 @@ print_double_string (re_char *where, re_char *string1, ssize_t size1,
#endif /* not DEBUG */
-/* Use this to suppress gcc's `...may be used before initialized' warnings. */
-#ifdef lint
-# define IF_LINT(Code) Code
-#else
-# define IF_LINT(Code) /* empty */
-#endif
-
+#ifndef emacs
+
/* Set by `re_set_syntax' to the current regexp syntax to recognize. Can
also be assigned to arbitrarily: each pattern buffer stores its own
syntax, so it can be changed between regex compilations. */
@@ -1229,15 +1176,7 @@ re_set_syntax (reg_syntax_t syntax)
}
WEAK_ALIAS (__re_set_syntax, re_set_syntax)
-/* Regexp to use to replace spaces, or NULL meaning don't. */
-static const_re_char *whitespace_regexp;
-
-void
-re_set_whitespace_regexp (const char *regexp)
-{
- whitespace_regexp = (const_re_char *) regexp;
-}
-WEAK_ALIAS (__re_set_syntax, re_set_syntax)
+#endif
/* This table gives an error message for each of the error codes listed
in regex.h. Obviously the order here has to be same as there.
@@ -1619,7 +1558,12 @@ do { \
/* Subroutine declarations and macros for regex_compile. */
static reg_errcode_t regex_compile (re_char *pattern, size_t size,
+#ifdef emacs
+ bool posix_backtracking,
+ const char *whitespace_regexp,
+#else
reg_syntax_t syntax,
+#endif
struct re_pattern_buffer *bufp);
static void store_op1 (re_opcode_t op, unsigned char *loc, int arg);
static void store_op2 (re_opcode_t op, unsigned char *loc, int arg1, int arg2);
@@ -2014,29 +1958,96 @@ struct range_table_work_area
#if ! WIDE_CHAR_SUPPORT
-/* Map a string to the char class it names (if any). */
+/* Parse a character class, i.e. string such as "[:name:]". *strp
+ points to the string to be parsed and limit is length, in bytes, of
+ that string.
+
+ If *strp point to a string that begins with "[:name:]", where name is
+ a non-empty sequence of lower case letters, *strp will be advanced past the
+ closing square bracket and RECC_* constant which maps to the name will be
+ returned. If name is not a valid character class name zero, or RECC_ERROR,
+ is returned.
+
+ Otherwise, if *strp doesn’t begin with "[:name:]", -1 is returned.
+
+ The function can be used on ASCII and multibyte (UTF-8-encoded) strings.
+ */
re_wctype_t
-re_wctype (const_re_char *str)
+re_wctype_parse (const unsigned char **strp, unsigned limit)
{
- const char *string = (const char *) str;
- if (STREQ (string, "alnum")) return RECC_ALNUM;
- else if (STREQ (string, "alpha")) return RECC_ALPHA;
- else if (STREQ (string, "word")) return RECC_WORD;
- else if (STREQ (string, "ascii")) return RECC_ASCII;
- else if (STREQ (string, "nonascii")) return RECC_NONASCII;
- else if (STREQ (string, "graph")) return RECC_GRAPH;
- else if (STREQ (string, "lower")) return RECC_LOWER;
- else if (STREQ (string, "print")) return RECC_PRINT;
- else if (STREQ (string, "punct")) return RECC_PUNCT;
- else if (STREQ (string, "space")) return RECC_SPACE;
- else if (STREQ (string, "upper")) return RECC_UPPER;
- else if (STREQ (string, "unibyte")) return RECC_UNIBYTE;
- else if (STREQ (string, "multibyte")) return RECC_MULTIBYTE;
- else if (STREQ (string, "digit")) return RECC_DIGIT;
- else if (STREQ (string, "xdigit")) return RECC_XDIGIT;
- else if (STREQ (string, "cntrl")) return RECC_CNTRL;
- else if (STREQ (string, "blank")) return RECC_BLANK;
- else return 0;
+ const char *beg = (const char *)*strp, *it;
+
+ if (limit < 4 || beg[0] != '[' || beg[1] != ':')
+ return -1;
+
+ beg += 2; /* skip opening ‘[:’ */
+ limit -= 3; /* opening ‘[:’ and half of closing ‘:]’; --limit handles rest */
+ for (it = beg; it[0] != ':' || it[1] != ']'; ++it)
+ if (!--limit)
+ return -1;
+
+ *strp = (const unsigned char *)(it + 2);
+
+ /* Sort tests in the length=five case by frequency the classes to minimize
+ number of times we fail the comparison. The frequencies of character class
+ names used in Emacs sources as of 2016-07-27:
+
+ $ find \( -name \*.c -o -name \*.el \) -exec grep -h '\[:[a-z]*:]' {} + |
+ sed 's/]/]\n/g' |grep -o '\[:[a-z]*:]' |sort |uniq -c |sort -nr
+ 213 [:alnum:]
+ 104 [:alpha:]
+ 62 [:space:]
+ 39 [:digit:]
+ 36 [:blank:]
+ 26 [:word:]
+ 26 [:upper:]
+ 21 [:lower:]
+ 10 [:xdigit:]
+ 10 [:punct:]
+ 10 [:ascii:]
+ 4 [:nonascii:]
+ 4 [:graph:]
+ 2 [:print:]
+ 2 [:cntrl:]
+ 1 [:ff:]
+
+ If you update this list, consider also updating chain of or’ed conditions
+ in execute_charset function.
+ */
+
+ switch (it - beg) {
+ case 4:
+ if (!memcmp (beg, "word", 4)) return RECC_WORD;
+ break;
+ case 5:
+ if (!memcmp (beg, "alnum", 5)) return RECC_ALNUM;
+ if (!memcmp (beg, "alpha", 5)) return RECC_ALPHA;
+ if (!memcmp (beg, "space", 5)) return RECC_SPACE;
+ if (!memcmp (beg, "digit", 5)) return RECC_DIGIT;
+ if (!memcmp (beg, "blank", 5)) return RECC_BLANK;
+ if (!memcmp (beg, "upper", 5)) return RECC_UPPER;
+ if (!memcmp (beg, "lower", 5)) return RECC_LOWER;
+ if (!memcmp (beg, "punct", 5)) return RECC_PUNCT;
+ if (!memcmp (beg, "ascii", 5)) return RECC_ASCII;
+ if (!memcmp (beg, "graph", 5)) return RECC_GRAPH;
+ if (!memcmp (beg, "print", 5)) return RECC_PRINT;
+ if (!memcmp (beg, "cntrl", 5)) return RECC_CNTRL;
+ break;
+ case 6:
+ if (!memcmp (beg, "xdigit", 6)) return RECC_XDIGIT;
+ break;
+ case 7:
+ if (!memcmp (beg, "unibyte", 7)) return RECC_UNIBYTE;
+ break;
+ case 8:
+ if (!memcmp (beg, "nonascii", 8)) return RECC_NONASCII;
+ break;
+ case 9:
+ if (!memcmp (beg, "multibyte", 9)) return RECC_MULTIBYTE;
+ break;
+ }
+
+ return RECC_ERROR;
}
/* True if CH is in the char class CC. */
@@ -2382,6 +2393,9 @@ static boolean group_in_compile_stack (compile_stack_type compile_stack,
/* `regex_compile' compiles PATTERN (of length SIZE) according to SYNTAX.
Returns one of error codes defined in `regex.h', or zero for success.
+ If WHITESPACE_REGEXP is given (only #ifdef emacs), it is used instead of
+ a space character in PATTERN.
+
Assumes the `allocated' (and perhaps `buffer') and `translate'
fields are set in BUFP on entry.
@@ -2414,7 +2428,15 @@ do { \
} while (0)
static reg_errcode_t
-regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
+regex_compile (const_re_char *pattern, size_t size,
+#ifdef emacs
+# define syntax RE_SYNTAX_EMACS
+ bool posix_backtracking,
+ const char *whitespace_regexp,
+#else
+ reg_syntax_t syntax,
+# define posix_backtracking (!(syntax & RE_NO_POSIX_BACKTRACKING))
+#endif
struct re_pattern_buffer *bufp)
{
/* We fetch characters from PATTERN here. */
@@ -2467,14 +2489,16 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
/* If the object matched can contain multibyte characters. */
const boolean multibyte = RE_MULTIBYTE_P (bufp);
+#ifdef emacs
/* Nonzero if we have pushed down into a subpattern. */
int in_subpattern = 0;
/* These hold the values of p, pattern, and pend from the main
pattern when we have pushed into a subpattern. */
- re_char *main_p IF_LINT (= NULL);
- re_char *main_pattern IF_LINT (= NULL);
- re_char *main_pend IF_LINT (= NULL);
+ re_char *main_p;
+ re_char *main_pattern;
+ re_char *main_pend;
+#endif
#ifdef DEBUG
debug++;
@@ -2501,7 +2525,9 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
range_table_work.allocated = 0;
/* Initialize the pattern buffer. */
+#ifndef emacs
bufp->syntax = syntax;
+#endif
bufp->fastmap_accurate = 0;
bufp->not_bol = bufp->not_eol = 0;
bufp->used_syntax = 0;
@@ -2543,6 +2569,7 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
{
if (p == pend)
{
+#ifdef emacs
/* If this is the end of an included regexp,
pop back to the main regexp and try again. */
if (in_subpattern)
@@ -2553,6 +2580,7 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
pend = main_pend;
continue;
}
+#endif
/* If this is the end of the main regexp, we are done. */
break;
}
@@ -2561,6 +2589,7 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
switch (c)
{
+#ifdef emacs
case ' ':
{
re_char *p1 = p;
@@ -2589,10 +2618,11 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
main_p = p1;
main_pend = pend;
main_pattern = pattern;
- p = pattern = whitespace_regexp;
- pend = p + strlen ((const char *) p);
+ p = pattern = (re_char *) whitespace_regexp;
+ pend = p + strlen (whitespace_regexp);
break;
}
+#endif
case '^':
{
@@ -2821,10 +2851,74 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
{
boolean escaped_char = false;
const unsigned char *p2 = p;
+ re_wctype_t cc;
re_wchar_t ch;
if (p == pend) FREE_STACK_RETURN (REG_EBRACK);
+ /* See if we're at the beginning of a possible character
+ class. */
+ if (syntax & RE_CHAR_CLASSES &&
+ (cc = re_wctype_parse(&p, pend - p)) != -1)
+ {
+ if (cc == 0)
+ FREE_STACK_RETURN (REG_ECTYPE);
+
+ if (p == pend)
+ FREE_STACK_RETURN (REG_EBRACK);
+
+#ifndef emacs
+ for (ch = 0; ch < (1 << BYTEWIDTH); ++ch)
+ if (re_iswctype (btowc (ch), cc))
+ {
+ c = TRANSLATE (ch);
+ if (c < (1 << BYTEWIDTH))
+ SET_LIST_BIT (c);
+ }
+#else /* emacs */
+ /* Most character classes in a multibyte match just set
+ a flag. Exceptions are is_blank, is_digit, is_cntrl, and
+ is_xdigit, since they can only match ASCII characters.
+ We don't need to handle them for multibyte. They are
+ distinguished by a negative wctype. */
+
+ /* Setup the gl_state object to its buffer-defined value.
+ This hardcodes the buffer-global syntax-table for ASCII
+ chars, while the other chars will obey syntax-table
+ properties. It's not ideal, but it's the way it's been
+ done until now. */
+ SETUP_BUFFER_SYNTAX_TABLE ();
+
+ for (ch = 0; ch < 256; ++ch)
+ {
+ c = RE_CHAR_TO_MULTIBYTE (ch);
+ if (! CHAR_BYTE8_P (c)
+ && re_iswctype (c, cc))
+ {
+ SET_LIST_BIT (ch);
+ c1 = TRANSLATE (c);
+ if (c1 == c)
+ continue;
+ if (ASCII_CHAR_P (c1))
+ SET_LIST_BIT (c1);
+ else if ((c1 = RE_CHAR_TO_UNIBYTE (c1)) >= 0)
+ SET_LIST_BIT (c1);
+ }
+ }
+ SET_RANGE_TABLE_WORK_AREA_BIT
+ (range_table_work, re_wctype_to_bit (cc));
+#endif /* emacs */
+ /* In most cases the matching rule for char classes only
+ uses the syntax table for multibyte chars, so that the
+ content of the syntax-table is not hardcoded in the
+ range_table. SPACE and WORD are the two exceptions. */
+ if ((1 << cc) & ((1 << RECC_SPACE) | (1 << RECC_WORD)))
+ bufp->used_syntax = 1;
+
+ /* Repeat the loop. */
+ continue;
+ }
+
/* Don't translate yet. The range TRANSLATE(X..Y) cannot
always be determined from TRANSLATE(X) and TRANSLATE(Y)
So the translation is done later in a loop. Example:
@@ -2848,119 +2942,6 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
break;
}
- /* See if we're at the beginning of a possible character
- class. */
-
- if (!escaped_char &&
- syntax & RE_CHAR_CLASSES && c == '[' && *p == ':')
- {
- /* Leave room for the null. */
- unsigned char str[CHAR_CLASS_MAX_LENGTH + 1];
- const unsigned char *class_beg;
-
- PATFETCH (c);
- c1 = 0;
- class_beg = p;
-
- /* If pattern is `[[:'. */
- if (p == pend) FREE_STACK_RETURN (REG_EBRACK);
-
- for (;;)
- {
- PATFETCH (c);
- if ((c == ':' && *p == ']') || p == pend)
- break;
- if (c1 < CHAR_CLASS_MAX_LENGTH)
- str[c1++] = c;
- else
- /* This is in any case an invalid class name. */
- str[0] = '\0';
- }
- str[c1] = '\0';
-
- /* If isn't a word bracketed by `[:' and `:]':
- undo the ending character, the letters, and
- leave the leading `:' and `[' (but set bits for
- them). */
- if (c == ':' && *p == ']')
- {
- re_wctype_t cc = re_wctype (str);
-
- if (cc == 0)
- FREE_STACK_RETURN (REG_ECTYPE);
-
- /* Throw away the ] at the end of the character
- class. */
- PATFETCH (c);
-
- if (p == pend) FREE_STACK_RETURN (REG_EBRACK);
-
-#ifndef emacs
- for (ch = 0; ch < (1 << BYTEWIDTH); ++ch)
- if (re_iswctype (btowc (ch), cc))
- {
- c = TRANSLATE (ch);
- if (c < (1 << BYTEWIDTH))
- SET_LIST_BIT (c);
- }
-#else /* emacs */
- /* Most character classes in a multibyte match
- just set a flag. Exceptions are is_blank,
- is_digit, is_cntrl, and is_xdigit, since
- they can only match ASCII characters. We
- don't need to handle them for multibyte.
- They are distinguished by a negative wctype. */
-
- /* Setup the gl_state object to its buffer-defined
- value. This hardcodes the buffer-global
- syntax-table for ASCII chars, while the other chars
- will obey syntax-table properties. It's not ideal,
- but it's the way it's been done until now. */
- SETUP_BUFFER_SYNTAX_TABLE ();
-
- for (ch = 0; ch < 256; ++ch)
- {
- c = RE_CHAR_TO_MULTIBYTE (ch);
- if (! CHAR_BYTE8_P (c)
- && re_iswctype (c, cc))
- {
- SET_LIST_BIT (ch);
- c1 = TRANSLATE (c);
- if (c1 == c)
- continue;
- if (ASCII_CHAR_P (c1))
- SET_LIST_BIT (c1);
- else if ((c1 = RE_CHAR_TO_UNIBYTE (c1)) >= 0)
- SET_LIST_BIT (c1);
- }
- }
- SET_RANGE_TABLE_WORK_AREA_BIT
- (range_table_work, re_wctype_to_bit (cc));
-#endif /* emacs */
- /* In most cases the matching rule for char classes
- only uses the syntax table for multibyte chars,
- so that the content of the syntax-table is not
- hardcoded in the range_table. SPACE and WORD are
- the two exceptions. */
- if ((1 << cc) & ((1 << RECC_SPACE) | (1 << RECC_WORD)))
- bufp->used_syntax = 1;
-
- /* Repeat the loop. */
- continue;
- }
- else
- {
- /* Go back to right after the "[:". */
- p = class_beg;
- SET_LIST_BIT ('[');
-
- /* Because the `:' may start the range, we
- can't simply set bit and repeat the loop.
- Instead, just set it to C and handle below. */
- c = ':';
- }
- }
-
if (p < pend && p[0] == '-' && p[1] != ']')
{
@@ -3467,8 +3448,6 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
goto normal_char;
#ifdef emacs
- /* There is no way to specify the before_dot and after_dot
- operators. rms says this is ok. --karl */
case '=':
laststart = b;
BUF_PUSH (at_dot);
@@ -3675,7 +3654,7 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
/* If we don't want backtracking, force success
the first time we reach the end of the compiled pattern. */
- if (syntax & RE_NO_POSIX_BACKTRACKING)
+ if (!posix_backtracking)
BUF_PUSH (succeed);
/* We have succeeded; set the length of the buffer. */
@@ -3710,6 +3689,12 @@ regex_compile (const_re_char *pattern, size_t size, reg_syntax_t syntax,
#endif /* not MATCH_MAY_ALLOCATE */
FREE_STACK_RETURN (REG_NOERROR);
+
+#ifdef emacs
+# undef syntax
+#else
+# undef posix_backtracking
+#endif
} /* regex_compile */
/* Subroutines for `regex_compile'. */
@@ -4045,9 +4030,7 @@ analyze_first (const_re_char *p, const_re_char *pend, char *fastmap,
/* All cases after this match the empty string. These end with
`continue'. */
- case before_dot:
case at_dot:
- case after_dot:
#endif /* !emacs */
case no_op:
case begline:
@@ -4668,6 +4651,73 @@ skip_noops (const_re_char *p, const_re_char *pend)
return p;
}
+/* Test if C matches charset op. *PP points to the charset or charset_not
+ opcode. When the function finishes, *PP will be advanced past that opcode.
+ C is character to test (possibly after translations) and CORIG is original
+ character (i.e. without any translations). UNIBYTE denotes whether c is
+ unibyte or multibyte character. */
+static bool
+execute_charset (const_re_char **pp, unsigned c, unsigned corig, bool unibyte)
+{
+ re_char *p = *pp, *rtp = NULL;
+ bool not = (re_opcode_t) *p == charset_not;
+
+ if (CHARSET_RANGE_TABLE_EXISTS_P (p))
+ {
+ int count;
+ rtp = CHARSET_RANGE_TABLE (p);
+ EXTRACT_NUMBER_AND_INCR (count, rtp);
+ *pp = CHARSET_RANGE_TABLE_END ((rtp), (count));
+ }
+ else
+ *pp += 2 + CHARSET_BITMAP_SIZE (p);
+
+ if (unibyte && c < (1 << BYTEWIDTH))
+ { /* Lookup bitmap. */
+ /* Cast to `unsigned' instead of `unsigned char' in
+ case the bit list is a full 32 bytes long. */
+ if (c < (unsigned) (CHARSET_BITMAP_SIZE (p) * BYTEWIDTH)
+ && p[2 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
+ return !not;
+ }
+#ifdef emacs
+ else if (rtp)
+ {
+ int class_bits = CHARSET_RANGE_TABLE_BITS (p);
+ re_wchar_t range_start, range_end;
+
+ /* Sort tests by the most commonly used classes with some adjustment to which
+ tests are easiest to perform. Take a look at comment in re_wctype_parse
+ for table with frequencies of character class names. */
+
+ if ((class_bits & BIT_MULTIBYTE) ||
+ (class_bits & BIT_ALNUM && ISALNUM (c)) ||
+ (class_bits & BIT_ALPHA && ISALPHA (c)) ||
+ (class_bits & BIT_SPACE && ISSPACE (c)) ||
+ (class_bits & BIT_WORD && ISWORD (c)) ||
+ ((class_bits & BIT_UPPER) &&
+ (ISUPPER (c) || (corig != c &&
+ c == downcase (corig) && ISLOWER (c)))) ||
+ ((class_bits & BIT_LOWER) &&
+ (ISLOWER (c) || (corig != c &&
+ c == upcase (corig) && ISUPPER(c)))) ||
+ (class_bits & BIT_PUNCT && ISPUNCT (c)) ||
+ (class_bits & BIT_GRAPH && ISGRAPH (c)) ||
+ (class_bits & BIT_PRINT && ISPRINT (c)))
+ return !not;
+
+ for (p = *pp; rtp < p; rtp += 2 * 3)
+ {
+ EXTRACT_CHARACTER (range_start, rtp);
+ EXTRACT_CHARACTER (range_end, rtp + 3);
+ if (range_start <= c && c <= range_end)
+ return !not;
+ }
+ }
+#endif /* emacs */
+ return not;
+}
+
/* Non-zero if "p1 matches something" implies "p2 fails". */
static int
mutually_exclusive_p (struct re_pattern_buffer *bufp, const_re_char *p1,
@@ -4725,22 +4775,7 @@ mutually_exclusive_p (struct re_pattern_buffer *bufp, const_re_char *p1,
else if ((re_opcode_t) *p1 == charset
|| (re_opcode_t) *p1 == charset_not)
{
- int not = (re_opcode_t) *p1 == charset_not;
-
- /* Test if C is listed in charset (or charset_not)
- at `p1'. */
- if (! multibyte || IS_REAL_ASCII (c))
- {
- if (c < CHARSET_BITMAP_SIZE (p1) * BYTEWIDTH
- && p1[2 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
- not = !not;
- }
- else if (CHARSET_RANGE_TABLE_EXISTS_P (p1))
- CHARSET_LOOKUP_RANGE_TABLE (not, c, p1);
-
- /* `not' is equal to 1 if c would match, which means
- that we can't change to pop_failure_jump. */
- if (!not)
+ if (!execute_charset (&p1, c, c, !multibyte || IS_REAL_ASCII (c)))
{
DEBUG_PRINT (" No match => fast loop.\n");
return 1;
@@ -5140,8 +5175,6 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1,
if (p == pend)
{
- ptrdiff_t dcnt;
-
/* End of pattern means we might have succeeded. */
DEBUG_PRINT ("end of pattern ... ");
@@ -5149,19 +5182,22 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1,
longest match, try backtracking. */
if (d != end_match_2)
{
- /* 1 if this match ends in the same string (string1 or string2)
- as the best previous match. */
- boolean same_str_p = (FIRST_STRING_P (match_end)
- == FIRST_STRING_P (d));
- /* 1 if this match is the best seen so far. */
- boolean best_match_p;
-
- /* AIX compiler got confused when this was combined
- with the previous declaration. */
- if (same_str_p)
- best_match_p = d > match_end;
- else
- best_match_p = !FIRST_STRING_P (d);
+ /* True if this match is the best seen so far. */
+ bool best_match_p;
+
+ {
+ /* True if this match ends in the same string (string1
+ or string2) as the best previous match. */
+ bool same_str_p = (FIRST_STRING_P (match_end)
+ == FIRST_STRING_P (d));
+
+ /* AIX compiler got confused when this was combined
+ with the previous declaration. */
+ if (same_str_p)
+ best_match_p = d > match_end;
+ else
+ best_match_p = !FIRST_STRING_P (d);
+ }
DEBUG_PRINT ("backtracking.\n");
@@ -5290,7 +5326,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1,
nfailure_points_pushed - nfailure_points_popped);
DEBUG_PRINT ("%u registers pushed.\n", num_regs_pushed);
- dcnt = POINTER_TO_OFFSET (d) - pos;
+ ptrdiff_t dcnt = POINTER_TO_OFFSET (d) - pos;
DEBUG_PRINT ("Returning %td from re_match_2.\n", dcnt);
@@ -5421,6 +5457,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1,
{
int buf_charlen;
re_wchar_t buf_ch;
+ reg_syntax_t syntax;
DEBUG_PRINT ("EXECUTING anychar.\n");
@@ -5429,10 +5466,14 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1,
target_multibyte);
buf_ch = TRANSLATE (buf_ch);
- if ((!(bufp->syntax & RE_DOT_NEWLINE)
- && buf_ch == '\n')
- || ((bufp->syntax & RE_DOT_NOT_NULL)
- && buf_ch == '\000'))
+#ifdef emacs
+ syntax = RE_SYNTAX_EMACS;
+#else
+ syntax = bufp->syntax;
+#endif
+
+ if ((!(syntax & RE_DOT_NEWLINE) && buf_ch == '\n')
+ || ((syntax & RE_DOT_NOT_NULL) && buf_ch == '\000'))
goto fail;
DEBUG_PRINT (" Matched \"%d\".\n", *d);
@@ -5445,32 +5486,13 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1,
case charset_not:
{
register unsigned int c, corig;
- boolean not = (re_opcode_t) *(p - 1) == charset_not;
int len;
- /* Start of actual range_table, or end of bitmap if there is no
- range table. */
- re_char *range_table IF_LINT (= NULL);
-
- /* Nonzero if there is a range table. */
- int range_table_exists;
-
- /* Number of ranges of range table. This is not included
- in the initial byte-length of the command. */
- int count = 0;
-
/* Whether matching against a unibyte character. */
boolean unibyte_char = false;
- DEBUG_PRINT ("EXECUTING charset%s.\n", not ? "_not" : "");
-
- range_table_exists = CHARSET_RANGE_TABLE_EXISTS_P (&p[-1]);
-
- if (range_table_exists)
- {
- range_table = CHARSET_RANGE_TABLE (&p[-1]); /* Past the bitmap. */
- EXTRACT_NUMBER_AND_INCR (count, range_table);
- }
+ DEBUG_PRINT ("EXECUTING charset%s.\n",
+ (re_opcode_t) *(p - 1) == charset_not ? "_not" : "");
PREFETCH ();
corig = c = RE_STRING_CHAR_AND_LENGTH (d, len, target_multibyte);
@@ -5504,47 +5526,9 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1,
unibyte_char = true;
}
- if (unibyte_char && c < (1 << BYTEWIDTH))
- { /* Lookup bitmap. */
- /* Cast to `unsigned' instead of `unsigned char' in
- case the bit list is a full 32 bytes long. */
- if (c < (unsigned) (CHARSET_BITMAP_SIZE (&p[-1]) * BYTEWIDTH)
- && p[1 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
- not = !not;
- }
-#ifdef emacs
- else if (range_table_exists)
- {
- int class_bits = CHARSET_RANGE_TABLE_BITS (&p[-1]);
-
- if ( (class_bits & BIT_LOWER
- && (ISLOWER (c)
- || (corig != c
- && c == upcase (corig) && ISUPPER(c))))
- | (class_bits & BIT_MULTIBYTE)
- | (class_bits & BIT_PUNCT && ISPUNCT (c))
- | (class_bits & BIT_SPACE && ISSPACE (c))
- | (class_bits & BIT_UPPER
- && (ISUPPER (c)
- || (corig != c
- && c == downcase (corig) && ISLOWER (c))))
- | (class_bits & BIT_WORD && ISWORD (c))
- | (class_bits & BIT_ALPHA && ISALPHA (c))
- | (class_bits & BIT_ALNUM && ISALNUM (c))
- | (class_bits & BIT_GRAPH && ISGRAPH (c))
- | (class_bits & BIT_PRINT && ISPRINT (c)))
- not = !not;
- else
- CHARSET_LOOKUP_RANGE_TABLE_RAW (not, c, range_table, count);
- }
-#endif /* emacs */
-
- if (range_table_exists)
- p = CHARSET_RANGE_TABLE_END (range_table, count);
- else
- p += CHARSET_BITMAP_SIZE (&p[-1]) + 1;
-
- if (!not) goto fail;
+ p -= 1;
+ if (!execute_charset (&p, c, corig, unibyte_char))
+ goto fail;
d += len;
}
@@ -6179,24 +6163,12 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1,
break;
#ifdef emacs
- case before_dot:
- DEBUG_PRINT ("EXECUTING before_dot.\n");
- if (PTR_BYTE_POS (d) >= PT_BYTE)
- goto fail;
- break;
-
case at_dot:
DEBUG_PRINT ("EXECUTING at_dot.\n");
if (PTR_BYTE_POS (d) != PT_BYTE)
goto fail;
break;
- case after_dot:
- DEBUG_PRINT ("EXECUTING after_dot.\n");
- if (PTR_BYTE_POS (d) <= PT_BYTE)
- goto fail;
- break;
-
case categoryspec:
case notcategoryspec:
{
@@ -6328,6 +6300,9 @@ bcmp_translate (const_re_char *s1, const_re_char *s2, register ssize_t len,
const char *
re_compile_pattern (const char *pattern, size_t length,
+#ifdef emacs
+ bool posix_backtracking, const char *whitespace_regexp,
+#endif
struct re_pattern_buffer *bufp)
{
reg_errcode_t ret;
@@ -6341,7 +6316,14 @@ re_compile_pattern (const char *pattern, size_t length,
setting no_sub. */
bufp->no_sub = 0;
- ret = regex_compile ((re_char*) pattern, length, re_syntax_options, bufp);
+ ret = regex_compile ((re_char*) pattern, length,
+#ifdef emacs
+ posix_backtracking,
+ whitespace_regexp,
+#else
+ re_syntax_options,
+#endif
+ bufp);
if (!ret)
return NULL;
diff --git a/src/regex.h b/src/regex.h
index 817167a07c..b672d3fdef 100644
--- a/src/regex.h
+++ b/src/regex.h
@@ -20,6 +20,13 @@
#ifndef _REGEX_H
#define _REGEX_H 1
+#if defined emacs && (defined _REGEX_RE_COMP || defined _LIBC)
+/* We’re not defining re_set_syntax and using a different prototype of
+ re_compile_pattern when building Emacs so fail compilation early with
+ a (somewhat helpful) error message when conflict is detected. */
+# error "_REGEX_RE_COMP nor _LIBC can be defined if emacs is defined."
+#endif
+
/* Allow the use in C++ code. */
#ifdef __cplusplus
extern "C" {
@@ -347,9 +354,10 @@ struct re_pattern_buffer
/* Number of bytes actually used in `buffer'. */
size_t used;
+#ifndef emacs
/* Syntax setting with which the pattern was compiled. */
reg_syntax_t syntax;
-
+#endif
/* Pointer to a fastmap, if any, otherwise zero. re_search uses
the fastmap, if there is one, to skip over impossible
starting points for matches. */
@@ -453,14 +461,22 @@ typedef struct
/* Declarations for routines. */
+#ifndef emacs
+
/* Sets the current default syntax to SYNTAX, and return the old syntax.
You can also simply assign to the `re_syntax_options' variable. */
extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
+#endif
+
/* Compile the regular expression PATTERN, with length LENGTH
and syntax given by the global `re_syntax_options', into the buffer
BUFFER. Return NULL if successful, and an error string if not. */
extern const char *re_compile_pattern (const char *__pattern, size_t __length,
+#ifdef emacs
+ bool posix_backtracking,
+ const char *whitespace_regexp,
+#endif
struct re_pattern_buffer *__buffer);
@@ -585,25 +601,13 @@ extern void regfree (regex_t *__preg);
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
# include <wchar.h>
# include <wctype.h>
-#endif
-#if WIDE_CHAR_SUPPORT
-/* The GNU C library provides support for user-defined character classes
- and the functions from ISO C amendment 1. */
-# ifdef CHARCLASS_NAME_MAX
-# define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX
-# else
-/* This shouldn't happen but some implementation might still have this
- problem. Use a reasonable default value. */
-# define CHAR_CLASS_MAX_LENGTH 256
-# endif
typedef wctype_t re_wctype_t;
typedef wchar_t re_wchar_t;
# define re_wctype wctype
# define re_iswctype iswctype
# define re_wctype_to_bit(cc) 0
#else
-# define CHAR_CLASS_MAX_LENGTH 9 /* Namely, `multibyte'. */
# ifndef emacs
# define btowc(c) c
# endif
@@ -621,12 +625,10 @@ typedef enum { RECC_ERROR = 0,
} re_wctype_t;
extern char re_iswctype (int ch, re_wctype_t cc);
-extern re_wctype_t re_wctype (const unsigned char* str);
+extern re_wctype_t re_wctype_parse (const unsigned char **strp, unsigned limit);
typedef int re_wchar_t;
-extern void re_set_whitespace_regexp (const char *regexp);
-
#endif /* not WIDE_CHAR_SUPPORT */
#endif /* regex.h */
diff --git a/src/search.c b/src/search.c
index b70f02097b..9b8fc58412 100644
--- a/src/search.c
+++ b/src/search.c
@@ -113,8 +113,8 @@ static void
compile_pattern_1 (struct regexp_cache *cp, Lisp_Object pattern,
Lisp_Object translate, bool posix)
{
+ const char *whitespace_regexp;
char *val;
- reg_syntax_t old;
cp->regexp = Qnil;
cp->buf.translate = (! NILP (translate) ? translate : make_number (0));
@@ -131,24 +131,17 @@ compile_pattern_1 (struct regexp_cache *cp, Lisp_Object pattern,
Using BLOCK_INPUT here means the debugger won't run if an error occurs.
So let's turn it off. */
/* BLOCK_INPUT; */
- old = re_set_syntax (RE_SYNTAX_EMACS
- | (posix ? 0 : RE_NO_POSIX_BACKTRACKING));
- if (STRINGP (Vsearch_spaces_regexp))
- re_set_whitespace_regexp (SSDATA (Vsearch_spaces_regexp));
- else
- re_set_whitespace_regexp (NULL);
+ whitespace_regexp = STRINGP (Vsearch_spaces_regexp) ?
+ SSDATA (Vsearch_spaces_regexp) : NULL;
- val = (char *) re_compile_pattern (SSDATA (pattern),
- SBYTES (pattern), &cp->buf);
+ val = (char *) re_compile_pattern (SSDATA (pattern), SBYTES (pattern),
+ posix, whitespace_regexp, &cp->buf);
/* If the compiled pattern hard codes some of the contents of the
syntax-table, it can only be reused with *this* syntax table. */
cp->syntax_table = cp->buf.used_syntax ? BVAR (current_buffer, syntax_table) : Qt;
- re_set_whitespace_regexp (NULL);
-
- re_set_syntax (old);
/* unblock_input (); */
if (val)
xsignal1 (Qinvalid_regexp, build_string (val));
@@ -2739,7 +2732,8 @@ since only regular expressions have distinguished subexpressions. */)
if (case_action == all_caps)
Fupcase_region (make_number (search_regs.start[sub]),
- make_number (newpoint));
+ make_number (newpoint),
+ Qnil);
else if (case_action == cap_initial)
Fupcase_initials_region (make_number (search_regs.start[sub]),
make_number (newpoint));
@@ -3396,6 +3390,7 @@ or other such regexp constructs are not replaced with this.
A value of nil (which is the normal value) means treat spaces literally. */);
Vsearch_spaces_regexp = Qnil;
+ DEFSYM (Qinhibit_changing_match_data, "inhibit-changing-match-data");
DEFVAR_LISP ("inhibit-changing-match-data", Vinhibit_changing_match_data,
doc: /* Internal use only.
If non-nil, the primitive searching and matching functions
diff --git a/src/sheap.c b/src/sheap.c
index fc53c5822d..72b74fa355 100644
--- a/src/sheap.c
+++ b/src/sheap.c
@@ -19,87 +19,62 @@ You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
+
+#include "sheap.h"
+
#include <stdio.h>
#include "lisp.h"
#include <unistd.h>
#include <stdlib.h> /* for exit */
-#ifdef ENABLE_CHECKING
-#define STATIC_HEAP_SIZE (28 * 1024 * 1024)
-#else
-#define STATIC_HEAP_SIZE (19 * 1024 * 1024)
-#endif
-
-int debug_sheap = 0;
-
-#define BLOCKSIZE 4096
+static int debug_sheap;
char bss_sbrk_buffer[STATIC_HEAP_SIZE];
-/* The following is needed in gmalloc.c */
-void *bss_sbrk_buffer_end = bss_sbrk_buffer + STATIC_HEAP_SIZE;
-char *bss_sbrk_ptr;
char *max_bss_sbrk_ptr;
-int bss_sbrk_did_unexec;
+bool bss_sbrk_did_unexec;
void *
bss_sbrk (ptrdiff_t request_size)
{
+ static char *bss_sbrk_ptr;
+
if (!bss_sbrk_ptr)
{
max_bss_sbrk_ptr = bss_sbrk_ptr = bss_sbrk_buffer;
#ifdef CYGWIN
- sbrk (BLOCKSIZE); /* force space for fork to work */
+ /* Force space for fork to work. */
+ sbrk (4096);
#endif
}
- if (!(int) request_size)
- {
- return (bss_sbrk_ptr);
- }
- else if (bss_sbrk_ptr + (int) request_size < bss_sbrk_buffer)
+ int used = bss_sbrk_ptr - bss_sbrk_buffer;
+
+ if (request_size < -used)
{
- printf
- ("attempt to free too much: avail %d used %d failed request %d\n",
- STATIC_HEAP_SIZE, bss_sbrk_ptr - bss_sbrk_buffer,
- (int) request_size);
+ printf (("attempt to free too much: "
+ "avail %d used %d failed request %"pD"d\n"),
+ STATIC_HEAP_SIZE, used, request_size);
exit (-1);
return 0;
}
- else if (bss_sbrk_ptr + (int) request_size >
- bss_sbrk_buffer + STATIC_HEAP_SIZE)
+ else if (STATIC_HEAP_SIZE - used < request_size)
{
- printf ("static heap exhausted: avail %d used %d failed request %d\n",
- STATIC_HEAP_SIZE,
- bss_sbrk_ptr - bss_sbrk_buffer, (int) request_size);
+ printf ("static heap exhausted: avail %d used %d failed request %"pD"d\n",
+ STATIC_HEAP_SIZE, used, request_size);
exit (-1);
return 0;
}
- else if ((int) request_size < 0)
- {
- bss_sbrk_ptr += (int) request_size;
- if (debug_sheap)
- printf ("freed size %d\n", request_size);
- return bss_sbrk_ptr;
- }
- else
+
+ void *ret = bss_sbrk_ptr;
+ bss_sbrk_ptr += request_size;
+ if (max_bss_sbrk_ptr < bss_sbrk_ptr)
+ max_bss_sbrk_ptr = bss_sbrk_ptr;
+ if (debug_sheap)
{
- char *ret = bss_sbrk_ptr;
- if (debug_sheap)
- printf ("allocated 0x%08x size %d\n", ret, request_size);
- bss_sbrk_ptr += (int) request_size;
- if (bss_sbrk_ptr > max_bss_sbrk_ptr)
- max_bss_sbrk_ptr = bss_sbrk_ptr;
- return ret;
+ if (request_size < 0)
+ printf ("freed size %"pD"d\n", request_size);
+ else
+ printf ("allocated %p size %"pD"d\n", ret, request_size);
}
-}
-
-void
-report_sheap_usage (int die_if_pure_storage_exceeded)
-{
- char buf[200];
- sprintf (buf, "Maximum static heap usage: %d of %d bytes",
- max_bss_sbrk_ptr - bss_sbrk_buffer, STATIC_HEAP_SIZE);
- /* Don't log messages, cause at this point, we're not allowed to create
- buffers. */
- message1_nolog (buf);
+ return ret;
}
diff --git a/src/sheap.h b/src/sheap.h
new file mode 100644
index 0000000000..c229a1b06e
--- /dev/null
+++ b/src/sheap.h
@@ -0,0 +1,31 @@
+/* Static heap allocation for GNU Emacs.
+
+Copyright 2016 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs 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 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stddef.h>
+#include "lisp.h"
+
+/* Size of the static heap. Guess a value that is probably too large,
+ by up to a factor of four or so. Typically the unused part is not
+ paged in and so does not cost much. */
+enum { STATIC_HEAP_SIZE = sizeof (Lisp_Object) << 22 };
+
+extern char bss_sbrk_buffer[STATIC_HEAP_SIZE];
+extern char *max_bss_sbrk_ptr;
+extern bool bss_sbrk_did_unexec;
+extern void *bss_sbrk (ptrdiff_t);
diff --git a/src/sound.c b/src/sound.c
index b9a794b6a4..f5f570190c 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -310,12 +310,13 @@ sound_perror (const char *msg)
}
#endif
if (saved_errno != 0)
- error ("%s: %s", msg, strerror (saved_errno));
+ error ("%s: %s", msg, emacs_strerror (saved_errno));
else
error ("%s", msg);
}
+#ifndef WINDOWSNT
/* Display a warning message. */
static void
@@ -323,6 +324,7 @@ sound_warning (const char *msg)
{
message1 (msg);
}
+#endif /* !WINDOWSNT */
/* Parse sound specification SOUND, and fill ATTRS with what is
diff --git a/src/syntax.c b/src/syntax.c
index 6e133ad9c2..667de402ec 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -81,6 +81,11 @@ SYNTAX_FLAGS_COMEND_SECOND (int flags)
return (flags >> 19) & 1;
}
static bool
+SYNTAX_FLAGS_COMSTARTEND_FIRST (int flags)
+{
+ return (flags & 0x50000) != 0;
+}
+static bool
SYNTAX_FLAGS_PREFIX (int flags)
{
return (flags >> 20) & 1;
@@ -153,6 +158,10 @@ struct lisp_parse_state
ptrdiff_t comstr_start; /* Position of last comment/string starter. */
Lisp_Object levelstarts; /* Char numbers of starts-of-expression
of levels (starting from outermost). */
+ int prev_syntax; /* Syntax of previous position scanned, when
+ that position (potentially) holds the first char
+ of a 2-char construct, i.e. comment delimiter
+ or Sescape, etc. Smax otherwise. */
};
/* These variables are a cache for finding the start of a defun.
@@ -176,7 +185,8 @@ static Lisp_Object skip_syntaxes (bool, Lisp_Object, Lisp_Object);
static Lisp_Object scan_lists (EMACS_INT, EMACS_INT, EMACS_INT, bool);
static void scan_sexps_forward (struct lisp_parse_state *,
ptrdiff_t, ptrdiff_t, ptrdiff_t, EMACS_INT,
- bool, Lisp_Object, int);
+ bool, int);
+static void internalize_parse_state (Lisp_Object, struct lisp_parse_state *);
static bool in_classes (int, Lisp_Object);
static void parse_sexp_propertize (ptrdiff_t charpos);
@@ -698,7 +708,7 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
ptrdiff_t comment_end = from;
ptrdiff_t comment_end_byte = from_byte;
ptrdiff_t comstart_pos = 0;
- ptrdiff_t comstart_byte IF_LINT (= 0);
+ ptrdiff_t comstart_byte;
/* Place where the containing defun starts,
or 0 if we didn't come across it yet. */
ptrdiff_t defun_start = 0;
@@ -911,10 +921,11 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
}
do
{
+ internalize_parse_state (Qnil, &state);
scan_sexps_forward (&state,
defun_start, defun_start_byte,
comment_end, TYPE_MINIMUM (EMACS_INT),
- 0, Qnil, 0);
+ 0, 0);
defun_start = comment_end;
if (!adjusted)
{
@@ -1622,7 +1633,7 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim,
int c;
char fastmap[0400];
/* Store the ranges of non-ASCII characters. */
- int *char_ranges IF_LINT (= NULL);
+ int *char_ranges UNINIT;
int n_char_ranges = 0;
bool negate = 0;
ptrdiff_t i, i_byte;
@@ -1680,44 +1691,22 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim,
/* At first setup fastmap. */
while (i_byte < size_byte)
{
- c = str[i_byte++];
-
- if (handle_iso_classes && c == '['
- && i_byte < size_byte
- && str[i_byte] == ':')
+ if (handle_iso_classes)
{
- const unsigned char *class_beg = str + i_byte + 1;
- const unsigned char *class_end = class_beg;
- const unsigned char *class_limit = str + size_byte - 2;
- /* Leave room for the null. */
- unsigned char class_name[CHAR_CLASS_MAX_LENGTH + 1];
- re_wctype_t cc;
-
- if (class_limit - class_beg > CHAR_CLASS_MAX_LENGTH)
- class_limit = class_beg + CHAR_CLASS_MAX_LENGTH;
-
- while (class_end < class_limit
- && *class_end >= 'a' && *class_end <= 'z')
- class_end++;
-
- if (class_end == class_beg
- || *class_end != ':' || class_end[1] != ']')
- goto not_a_class_name;
-
- memcpy (class_name, class_beg, class_end - class_beg);
- class_name[class_end - class_beg] = 0;
-
- cc = re_wctype (class_name);
+ const unsigned char *ch = str + i_byte;
+ re_wctype_t cc = re_wctype_parse (&ch, size_byte - i_byte);
if (cc == 0)
error ("Invalid ISO C character class");
-
- iso_classes = Fcons (make_number (cc), iso_classes);
-
- i_byte = class_end + 2 - str;
- continue;
+ if (cc != -1)
+ {
+ iso_classes = Fcons (make_number (cc), iso_classes);
+ i_byte = ch - str;
+ continue;
+ }
}
- not_a_class_name:
+ c = str[i_byte++];
+
if (c == '\\')
{
if (i_byte == size_byte)
@@ -1797,54 +1786,32 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim,
while (i_byte < size_byte)
{
int leading_code = str[i_byte];
- c = STRING_CHAR_AND_LENGTH (str + i_byte, len);
- i_byte += len;
- if (handle_iso_classes && c == '['
- && i_byte < size_byte
- && STRING_CHAR (str + i_byte) == ':')
+ if (handle_iso_classes)
{
- const unsigned char *class_beg = str + i_byte + 1;
- const unsigned char *class_end = class_beg;
- const unsigned char *class_limit = str + size_byte - 2;
- /* Leave room for the null. */
- unsigned char class_name[CHAR_CLASS_MAX_LENGTH + 1];
- re_wctype_t cc;
-
- if (class_limit - class_beg > CHAR_CLASS_MAX_LENGTH)
- class_limit = class_beg + CHAR_CLASS_MAX_LENGTH;
-
- while (class_end < class_limit
- && *class_end >= 'a' && *class_end <= 'z')
- class_end++;
-
- if (class_end == class_beg
- || *class_end != ':' || class_end[1] != ']')
- goto not_a_class_name_multibyte;
-
- memcpy (class_name, class_beg, class_end - class_beg);
- class_name[class_end - class_beg] = 0;
-
- cc = re_wctype (class_name);
+ const unsigned char *ch = str + i_byte;
+ re_wctype_t cc = re_wctype_parse (&ch, size_byte - i_byte);
if (cc == 0)
error ("Invalid ISO C character class");
-
- iso_classes = Fcons (make_number (cc), iso_classes);
-
- i_byte = class_end + 2 - str;
- continue;
+ if (cc != -1)
+ {
+ iso_classes = Fcons (make_number (cc), iso_classes);
+ i_byte = ch - str;
+ continue;
+ }
}
- not_a_class_name_multibyte:
- if (c == '\\')
+ if (leading_code== '\\')
{
- if (i_byte == size_byte)
+ if (++i_byte == size_byte)
break;
leading_code = str[i_byte];
- c = STRING_CHAR_AND_LENGTH (str + i_byte, len);
- i_byte += len;
}
+ c = STRING_CHAR_AND_LENGTH (str + i_byte, len);
+ i_byte += len;
+
+
/* Treat `-' as range character only if another character
follows. */
if (i_byte + 1 < size_byte
@@ -2299,11 +2266,15 @@ in_classes (int c, Lisp_Object iso_classes)
PREV_SYNTAX is the SYNTAX_WITH_FLAGS of the previous character
(or 0 If the search cannot start in the middle of a two-character).
- If successful, return true and store the charpos of the comment's end
- into *CHARPOS_PTR and the corresponding bytepos into *BYTEPOS_PTR.
- Else, return false and store the charpos STOP into *CHARPOS_PTR, the
- corresponding bytepos into *BYTEPOS_PTR and the current nesting
- (as defined for state.incomment) in *INCOMMENT_PTR.
+ If successful, return true and store the charpos of the comment's
+ end into *CHARPOS_PTR and the corresponding bytepos into
+ *BYTEPOS_PTR. Else, return false and store the charpos STOP into
+ *CHARPOS_PTR, the corresponding bytepos into *BYTEPOS_PTR and the
+ current nesting (as defined for state->incomment) in
+ *INCOMMENT_PTR. Should the last character scanned in an incomplete
+ comment be a possible first character of a two character construct,
+ we store its SYNTAX_WITH_FLAGS into *last_syntax_ptr. Otherwise,
+ we store Smax into *last_syntax_ptr.
The comment end is the last character of the comment rather than the
character just after the comment.
@@ -2315,7 +2286,7 @@ static bool
forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
EMACS_INT nesting, int style, int prev_syntax,
ptrdiff_t *charpos_ptr, ptrdiff_t *bytepos_ptr,
- EMACS_INT *incomment_ptr)
+ EMACS_INT *incomment_ptr, int *last_syntax_ptr)
{
register int c, c1;
register enum syntaxcode code;
@@ -2326,7 +2297,8 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
/* Enter the loop in the middle so that we find
a 2-char comment ender if we start in the middle of it. */
syntax = prev_syntax;
- if (syntax != 0) goto forw_incomment;
+ code = syntax & 0xff;
+ if (syntax != 0 && from < stop) goto forw_incomment;
while (1)
{
@@ -2335,6 +2307,12 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
*incomment_ptr = nesting;
*charpos_ptr = from;
*bytepos_ptr = from_byte;
+ *last_syntax_ptr =
+ (code == Sescape || code == Scharquote
+ || SYNTAX_FLAGS_COMEND_FIRST (syntax)
+ || (nesting > 0
+ && SYNTAX_FLAGS_COMSTART_FIRST (syntax)))
+ ? syntax : Smax ;
return 0;
}
c = FETCH_CHAR_AS_MULTIBYTE (from_byte);
@@ -2375,7 +2353,9 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
SYNTAX_FLAGS_COMMENT_NESTED (other_syntax))
? nesting > 0 : nesting < 0))
{
- if (--nesting <= 0)
+ syntax = Smax; /* So that "|#" (lisp) can not return
+ the syntax of "#" in *last_syntax_ptr. */
+ if (--nesting <= 0)
/* We have encountered a comment end of the same style
as the comment sequence which began this comment section. */
break;
@@ -2397,6 +2377,7 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
/* We have encountered a nested comment of the same style
as the comment sequence which began this comment section. */
{
+ syntax = Smax; /* So that "#|#" isn't also a comment ender. */
INC_BOTH (from, from_byte);
UPDATE_SYNTAX_TABLE_FORWARD (from);
nesting++;
@@ -2404,6 +2385,8 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
}
*charpos_ptr = from;
*bytepos_ptr = from_byte;
+ *last_syntax_ptr = Smax; /* Any syntactic power the last byte had is
+ used up. */
return 1;
}
@@ -2425,6 +2408,7 @@ between them, return t; otherwise return nil. */)
EMACS_INT count1;
ptrdiff_t out_charpos, out_bytepos;
EMACS_INT dummy;
+ int dummy2;
CHECK_NUMBER (count);
count1 = XINT (count);
@@ -2488,7 +2472,7 @@ between them, return t; otherwise return nil. */)
}
/* We're at the start of a comment. */
found = forw_comment (from, from_byte, stop, comnested, comstyle, 0,
- &out_charpos, &out_bytepos, &dummy);
+ &out_charpos, &out_bytepos, &dummy, &dummy2);
from = out_charpos; from_byte = out_bytepos;
if (!found)
{
@@ -2648,6 +2632,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag)
ptrdiff_t from_byte;
ptrdiff_t out_bytepos, out_charpos;
EMACS_INT dummy;
+ int dummy2;
bool multibyte_symbol_p = sexpflag && multibyte_syntax_as_symbol;
if (depth > 0) min_depth = 0;
@@ -2744,7 +2729,8 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag)
UPDATE_SYNTAX_TABLE_FORWARD (from);
found = forw_comment (from, from_byte, stop,
comnested, comstyle, 0,
- &out_charpos, &out_bytepos, &dummy);
+ &out_charpos, &out_bytepos, &dummy,
+ &dummy2);
from = out_charpos, from_byte = out_bytepos;
if (!found)
{
@@ -3109,7 +3095,7 @@ the prefix syntax flag (p). */)
}
/* Parse forward from FROM / FROM_BYTE to END,
- assuming that FROM has state OLDSTATE (nil means FROM is start of function),
+ assuming that FROM has state STATE,
and return a description of the state of the parse at END.
If STOPBEFORE, stop at the start of an atom.
If COMMENTSTOP is 1, stop at the start of a comment.
@@ -3117,12 +3103,11 @@ the prefix syntax flag (p). */)
after the beginning of a string, or after the end of a string. */
static void
-scan_sexps_forward (struct lisp_parse_state *stateptr,
+scan_sexps_forward (struct lisp_parse_state *state,
ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t end,
EMACS_INT targetdepth, bool stopbefore,
- Lisp_Object oldstate, int commentstop)
+ int commentstop)
{
- struct lisp_parse_state state;
enum syntaxcode code;
int c1;
bool comnested;
@@ -3138,7 +3123,7 @@ scan_sexps_forward (struct lisp_parse_state *stateptr,
Lisp_Object tem;
ptrdiff_t prev_from; /* Keep one character before FROM. */
ptrdiff_t prev_from_byte;
- int prev_from_syntax;
+ int prev_from_syntax, prev_prev_from_syntax;
bool boundary_stop = commentstop == -1;
bool nofence;
bool found;
@@ -3155,6 +3140,7 @@ scan_sexps_forward (struct lisp_parse_state *stateptr,
do { prev_from = from; \
prev_from_byte = from_byte; \
temp = FETCH_CHAR_AS_MULTIBYTE (prev_from_byte); \
+ prev_prev_from_syntax = prev_from_syntax; \
prev_from_syntax = SYNTAX_WITH_FLAGS (temp); \
INC_BOTH (from, from_byte); \
if (from < end) \
@@ -3164,88 +3150,38 @@ do { prev_from = from; \
immediate_quit = 1;
QUIT;
- if (NILP (oldstate))
- {
- depth = 0;
- state.instring = -1;
- state.incomment = 0;
- state.comstyle = 0; /* comment style a by default. */
- state.comstr_start = -1; /* no comment/string seen. */
- }
- else
- {
- tem = Fcar (oldstate);
- if (!NILP (tem))
- depth = XINT (tem);
- else
- depth = 0;
+ depth = state->depth;
+ start_quoted = state->quoted;
+ prev_prev_from_syntax = Smax;
+ prev_from_syntax = state->prev_syntax;
- oldstate = Fcdr (oldstate);
- oldstate = Fcdr (oldstate);
- oldstate = Fcdr (oldstate);
- tem = Fcar (oldstate);
- /* Check whether we are inside string_fence-style string: */
- state.instring = (!NILP (tem)
- ? (CHARACTERP (tem) ? XFASTINT (tem) : ST_STRING_STYLE)
- : -1);
-
- oldstate = Fcdr (oldstate);
- tem = Fcar (oldstate);
- state.incomment = (!NILP (tem)
- ? (INTEGERP (tem) ? XINT (tem) : -1)
- : 0);
-
- oldstate = Fcdr (oldstate);
- tem = Fcar (oldstate);
- start_quoted = !NILP (tem);
-
- /* if the eighth element of the list is nil, we are in comment
- style a. If it is non-nil, we are in comment style b */
- oldstate = Fcdr (oldstate);
- oldstate = Fcdr (oldstate);
- tem = Fcar (oldstate);
- state.comstyle = (NILP (tem)
- ? 0
- : (RANGED_INTEGERP (0, tem, ST_COMMENT_STYLE)
- ? XINT (tem)
- : ST_COMMENT_STYLE));
-
- oldstate = Fcdr (oldstate);
- tem = Fcar (oldstate);
- state.comstr_start =
- RANGED_INTEGERP (PTRDIFF_MIN, tem, PTRDIFF_MAX) ? XINT (tem) : -1;
- oldstate = Fcdr (oldstate);
- tem = Fcar (oldstate);
- while (!NILP (tem)) /* >= second enclosing sexps. */
- {
- Lisp_Object temhd = Fcar (tem);
- if (RANGED_INTEGERP (PTRDIFF_MIN, temhd, PTRDIFF_MAX))
- curlevel->last = XINT (temhd);
- if (++curlevel == endlevel)
- curlevel--; /* error ("Nesting too deep for parser"); */
- curlevel->prev = -1;
- curlevel->last = -1;
- tem = Fcdr (tem);
- }
+ tem = state->levelstarts;
+ while (!NILP (tem)) /* >= second enclosing sexps. */
+ {
+ Lisp_Object temhd = Fcar (tem);
+ if (RANGED_INTEGERP (PTRDIFF_MIN, temhd, PTRDIFF_MAX))
+ curlevel->last = XINT (temhd);
+ if (++curlevel == endlevel)
+ curlevel--; /* error ("Nesting too deep for parser"); */
+ curlevel->prev = -1;
+ curlevel->last = -1;
+ tem = Fcdr (tem);
}
- state.quoted = 0;
- mindepth = depth;
-
curlevel->prev = -1;
curlevel->last = -1;
- SETUP_SYNTAX_TABLE (prev_from, 1);
- temp = FETCH_CHAR (prev_from_byte);
- prev_from_syntax = SYNTAX_WITH_FLAGS (temp);
- UPDATE_SYNTAX_TABLE_FORWARD (from);
+ state->quoted = 0;
+ mindepth = depth;
+
+ SETUP_SYNTAX_TABLE (from, 1);
/* Enter the loop at a place appropriate for initial state. */
- if (state.incomment)
+ if (state->incomment)
goto startincomment;
- if (state.instring >= 0)
+ if (state->instring >= 0)
{
- nofence = state.instring != ST_STRING_STYLE;
+ nofence = state->instring != ST_STRING_STYLE;
if (start_quoted)
goto startquotedinstring;
goto startinstring;
@@ -3256,11 +3192,8 @@ do { prev_from = from; \
while (from < end)
{
int syntax;
- INC_FROM;
- code = prev_from_syntax & 0xff;
- if (from < end
- && SYNTAX_FLAGS_COMSTART_FIRST (prev_from_syntax)
+ if (SYNTAX_FLAGS_COMSTART_FIRST (prev_from_syntax)
&& (c1 = FETCH_CHAR (from_byte),
syntax = SYNTAX_WITH_FLAGS (c1),
SYNTAX_FLAGS_COMSTART_SECOND (syntax)))
@@ -3270,32 +3203,39 @@ do { prev_from = from; \
/* Record the comment style we have entered so that only
the comment-end sequence of the same style actually
terminates the comment section. */
- state.comstyle
+ state->comstyle
= SYNTAX_FLAGS_COMMENT_STYLE (syntax, prev_from_syntax);
comnested = (SYNTAX_FLAGS_COMMENT_NESTED (prev_from_syntax)
| SYNTAX_FLAGS_COMMENT_NESTED (syntax));
- state.incomment = comnested ? 1 : -1;
- state.comstr_start = prev_from;
+ state->incomment = comnested ? 1 : -1;
+ state->comstr_start = prev_from;
INC_FROM;
+ prev_from_syntax = Smax; /* the syntax has already been
+ "used up". */
code = Scomment;
}
- else if (code == Scomment_fence)
- {
- /* Record the comment style we have entered so that only
- the comment-end sequence of the same style actually
- terminates the comment section. */
- state.comstyle = ST_COMMENT_STYLE;
- state.incomment = -1;
- state.comstr_start = prev_from;
- code = Scomment;
- }
- else if (code == Scomment)
- {
- state.comstyle = SYNTAX_FLAGS_COMMENT_STYLE (prev_from_syntax, 0);
- state.incomment = (SYNTAX_FLAGS_COMMENT_NESTED (prev_from_syntax) ?
- 1 : -1);
- state.comstr_start = prev_from;
- }
+ else
+ {
+ INC_FROM;
+ code = prev_from_syntax & 0xff;
+ if (code == Scomment_fence)
+ {
+ /* Record the comment style we have entered so that only
+ the comment-end sequence of the same style actually
+ terminates the comment section. */
+ state->comstyle = ST_COMMENT_STYLE;
+ state->incomment = -1;
+ state->comstr_start = prev_from;
+ code = Scomment;
+ }
+ else if (code == Scomment)
+ {
+ state->comstyle = SYNTAX_FLAGS_COMMENT_STYLE (prev_from_syntax, 0);
+ state->incomment = (SYNTAX_FLAGS_COMMENT_NESTED (prev_from_syntax) ?
+ 1 : -1);
+ state->comstr_start = prev_from;
+ }
+ }
if (SYNTAX_FLAGS_PREFIX (prev_from_syntax))
continue;
@@ -3340,26 +3280,28 @@ do { prev_from = from; \
case Scomment_fence: /* Can't happen because it's handled above. */
case Scomment:
- if (commentstop || boundary_stop) goto done;
+ if (commentstop || boundary_stop) goto done;
startincomment:
/* The (from == BEGV) test was to enter the loop in the middle so
that we find a 2-char comment ender even if we start in the
middle of it. We don't want to do that if we're just at the
beginning of the comment (think of (*) ... (*)). */
found = forw_comment (from, from_byte, end,
- state.incomment, state.comstyle,
- (from == BEGV || from < state.comstr_start + 3)
- ? 0 : prev_from_syntax,
- &out_charpos, &out_bytepos, &state.incomment);
+ state->incomment, state->comstyle,
+ from == BEGV ? 0 : prev_from_syntax,
+ &out_charpos, &out_bytepos, &state->incomment,
+ &prev_from_syntax);
from = out_charpos; from_byte = out_bytepos;
- /* Beware! prev_from and friends are invalid now.
- Luckily, the `done' doesn't use them and the INC_FROM
- sets them to a sane value without looking at them. */
+ /* Beware! prev_from and friends (except prev_from_syntax)
+ are invalid now. Luckily, the `done' doesn't use them
+ and the INC_FROM sets them to a sane value without
+ looking at them. */
if (!found) goto done;
INC_FROM;
- state.incomment = 0;
- state.comstyle = 0; /* reset the comment style */
- if (boundary_stop) goto done;
+ state->incomment = 0;
+ state->comstyle = 0; /* reset the comment style */
+ prev_from_syntax = Smax; /* For the comment closer */
+ if (boundary_stop) goto done;
break;
case Sopen:
@@ -3386,16 +3328,16 @@ do { prev_from = from; \
case Sstring:
case Sstring_fence:
- state.comstr_start = from - 1;
+ state->comstr_start = from - 1;
if (stopbefore) goto stop; /* this arg means stop at sexp start */
curlevel->last = prev_from;
- state.instring = (code == Sstring
+ state->instring = (code == Sstring
? (FETCH_CHAR_AS_MULTIBYTE (prev_from_byte))
: ST_STRING_STYLE);
if (boundary_stop) goto done;
startinstring:
{
- nofence = state.instring != ST_STRING_STYLE;
+ nofence = state->instring != ST_STRING_STYLE;
while (1)
{
@@ -3409,7 +3351,7 @@ do { prev_from = from; \
/* Check C_CODE here so that if the char has
a syntax-table property which says it is NOT
a string character, it does not end the string. */
- if (nofence && c == state.instring && c_code == Sstring)
+ if (nofence && c == state->instring && c_code == Sstring)
break;
switch (c_code)
@@ -3432,7 +3374,7 @@ do { prev_from = from; \
}
}
string_end:
- state.instring = -1;
+ state->instring = -1;
curlevel->prev = curlevel->last;
INC_FROM;
if (boundary_stop) goto done;
@@ -3451,25 +3393,96 @@ do { prev_from = from; \
stop: /* Here if stopping before start of sexp. */
from = prev_from; /* We have just fetched the char that starts it; */
from_byte = prev_from_byte;
+ prev_from_syntax = prev_prev_from_syntax;
goto done; /* but return the position before it. */
endquoted:
- state.quoted = 1;
+ state->quoted = 1;
done:
- state.depth = depth;
- state.mindepth = mindepth;
- state.thislevelstart = curlevel->prev;
- state.prevlevelstart
+ state->depth = depth;
+ state->mindepth = mindepth;
+ state->thislevelstart = curlevel->prev;
+ state->prevlevelstart
= (curlevel == levelstart) ? -1 : (curlevel - 1)->last;
- state.location = from;
- state.location_byte = from_byte;
- state.levelstarts = Qnil;
+ state->location = from;
+ state->location_byte = from_byte;
+ state->levelstarts = Qnil;
while (curlevel > levelstart)
- state.levelstarts = Fcons (make_number ((--curlevel)->last),
- state.levelstarts);
+ state->levelstarts = Fcons (make_number ((--curlevel)->last),
+ state->levelstarts);
+ state->prev_syntax = (SYNTAX_FLAGS_COMSTARTEND_FIRST (prev_from_syntax)
+ || state->quoted) ? prev_from_syntax : Smax;
immediate_quit = 0;
+}
+
+/* Convert a (lisp) parse state to the internal form used in
+ scan_sexps_forward. */
+static void
+internalize_parse_state (Lisp_Object external, struct lisp_parse_state *state)
+{
+ Lisp_Object tem;
+
+ if (NILP (external))
+ {
+ state->depth = 0;
+ state->instring = -1;
+ state->incomment = 0;
+ state->quoted = 0;
+ state->comstyle = 0; /* comment style a by default. */
+ state->comstr_start = -1; /* no comment/string seen. */
+ state->levelstarts = Qnil;
+ state->prev_syntax = Smax;
+ }
+ else
+ {
+ tem = Fcar (external);
+ if (!NILP (tem))
+ state->depth = XINT (tem);
+ else
+ state->depth = 0;
- *stateptr = state;
+ external = Fcdr (external);
+ external = Fcdr (external);
+ external = Fcdr (external);
+ tem = Fcar (external);
+ /* Check whether we are inside string_fence-style string: */
+ state->instring = (!NILP (tem)
+ ? (CHARACTERP (tem) ? XFASTINT (tem) : ST_STRING_STYLE)
+ : -1);
+
+ external = Fcdr (external);
+ tem = Fcar (external);
+ state->incomment = (!NILP (tem)
+ ? (INTEGERP (tem) ? XINT (tem) : -1)
+ : 0);
+
+ external = Fcdr (external);
+ tem = Fcar (external);
+ state->quoted = !NILP (tem);
+
+ /* if the eighth element of the list is nil, we are in comment
+ style a. If it is non-nil, we are in comment style b */
+ external = Fcdr (external);
+ external = Fcdr (external);
+ tem = Fcar (external);
+ state->comstyle = (NILP (tem)
+ ? 0
+ : (RANGED_INTEGERP (0, tem, ST_COMMENT_STYLE)
+ ? XINT (tem)
+ : ST_COMMENT_STYLE));
+
+ external = Fcdr (external);
+ tem = Fcar (external);
+ state->comstr_start =
+ RANGED_INTEGERP (PTRDIFF_MIN, tem, PTRDIFF_MAX) ? XINT (tem) : -1;
+ external = Fcdr (external);
+ tem = Fcar (external);
+ state->levelstarts = tem;
+
+ external = Fcdr (external);
+ tem = Fcar (external);
+ state->prev_syntax = NILP (tem) ? Smax : XINT (tem);
+ }
}
DEFUN ("parse-partial-sexp", Fparse_partial_sexp, Sparse_partial_sexp, 2, 6, 0,
@@ -3478,6 +3491,7 @@ Parsing stops at TO or when certain criteria are met;
point is set to where parsing stops.
If fifth arg OLDSTATE is omitted or nil,
parsing assumes that FROM is the beginning of a function.
+
Value is a list of elements describing final state of parsing:
0. depth in parens.
1. character address of start of innermost containing list; nil if none.
@@ -3491,16 +3505,22 @@ Value is a list of elements describing final state of parsing:
6. the minimum paren-depth encountered during this scan.
7. style of comment, if any.
8. character address of start of comment or string; nil if not in one.
- 9. Intermediate data for continuation of parsing (subject to change).
+ 9. List of positions of currently open parens, outermost first.
+10. When the last position scanned holds the first character of a
+ (potential) two character construct, the syntax of that position,
+ otherwise nil. That construct can be a two character comment
+ delimiter or an Escaped or Char-quoted character.
+11..... Possible further internal information used by `parse-partial-sexp'.
+
If third arg TARGETDEPTH is non-nil, parsing stops if the depth
in parentheses becomes equal to TARGETDEPTH.
-Fourth arg STOPBEFORE non-nil means stop when come to
+Fourth arg STOPBEFORE non-nil means stop when we come to
any character that starts a sexp.
Fifth arg OLDSTATE is a list like what this function returns.
It is used to initialize the state of the parse. Elements number 1, 2, 6
are ignored.
-Sixth arg COMMENTSTOP non-nil means stop at the start of a comment.
- If it is symbol `syntax-table', stop after the start of a comment or a
+Sixth arg COMMENTSTOP non-nil means stop after the start of a comment.
+ If it is the symbol `syntax-table', stop after the start of a comment or a
string, or after end of a comment or a string. */)
(Lisp_Object from, Lisp_Object to, Lisp_Object targetdepth,
Lisp_Object stopbefore, Lisp_Object oldstate, Lisp_Object commentstop)
@@ -3517,15 +3537,17 @@ Sixth arg COMMENTSTOP non-nil means stop at the start of a comment.
target = TYPE_MINIMUM (EMACS_INT); /* We won't reach this depth. */
validate_region (&from, &to);
+ internalize_parse_state (oldstate, &state);
scan_sexps_forward (&state, XINT (from), CHAR_TO_BYTE (XINT (from)),
XINT (to),
- target, !NILP (stopbefore), oldstate,
+ target, !NILP (stopbefore),
(NILP (commentstop)
? 0 : (EQ (commentstop, Qsyntax_table) ? -1 : 1)));
SET_PT_BOTH (state.location, state.location_byte);
- return Fcons (make_number (state.depth),
+ return
+ Fcons (make_number (state.depth),
Fcons (state.prevlevelstart < 0
? Qnil : make_number (state.prevlevelstart),
Fcons (state.thislevelstart < 0
@@ -3543,11 +3565,15 @@ Sixth arg COMMENTSTOP non-nil means stop at the start of a comment.
? Qsyntax_table
: make_number (state.comstyle))
: Qnil),
- Fcons (((state.incomment
- || (state.instring >= 0))
- ? make_number (state.comstr_start)
- : Qnil),
- Fcons (state.levelstarts, Qnil))))))))));
+ Fcons (((state.incomment
+ || (state.instring >= 0))
+ ? make_number (state.comstr_start)
+ : Qnil),
+ Fcons (state.levelstarts,
+ Fcons (state.prev_syntax == Smax
+ ? Qnil
+ : make_number (state.prev_syntax),
+ Qnil)))))))))));
}
void
diff --git a/src/sysdep.c b/src/sysdep.c
index 460166d119..70cb961e21 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -19,14 +19,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-/* If HYBRID_GET_CURRENT_DIR_NAME is defined in conf_post.h, then we
- need the following before including unistd.h, in order to pick up
- the right prototype for gget_current_dir_name. */
-#ifdef HYBRID_GET_CURRENT_DIR_NAME
-#undef get_current_dir_name
-#define get_current_dir_name gget_current_dir_name
-#endif
-
#include <execinfo.h>
#include "sysstdio.h"
#ifdef HAVE_PWD_H
@@ -40,6 +32,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <utimens.h>
#include "lisp.h"
+#include "sheap.h"
#include "sysselect.h"
#include "blockinput.h"
@@ -102,7 +95,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "gnutls.h"
/* MS-Windows loads GnuTLS at run time, if available; we don't want to
do that during startup just to call gnutls_rnd. */
-#if 0x020c00 <= GNUTLS_VERSION_NUMBER && !defined WINDOWSNT
+#if defined HAVE_GNUTLS && !defined WINDOWSNT
# include <gnutls/crypto.h>
#else
# define emacs_gnutls_global_init() Qnil
@@ -114,7 +107,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* In process.h which conflicts with the local copy. */
#define _P_WAIT 0
int _cdecl _spawnlp (int, const char *, const char *, ...);
-int _cdecl _getpid (void);
/* The following is needed for O_CLOEXEC, F_SETFD, FD_CLOEXEC, and
several prototypes of functions called below. */
#include <sys/socket.h>
@@ -137,14 +129,92 @@ static const int baud_convert[] =
1800, 2400, 4800, 9600, 19200, 38400
};
-#if !defined HAVE_GET_CURRENT_DIR_NAME || defined BROKEN_GET_CURRENT_DIR_NAME \
- || (defined HYBRID_GET_CURRENT_DIR_NAME)
-/* Return the current working directory. Returns NULL on errors.
- Any other returned value must be freed with free. This is used
- only when get_current_dir_name is not defined on the system. */
+#ifdef HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
+# include <sys/personality.h>
+
+/* Disable address randomization in the current process. Return true
+ if addresses were randomized but this has been disabled, false
+ otherwise. */
+bool
+disable_address_randomization (void)
+{
+ bool disabled = false;
+ int pers = personality (0xffffffff);
+ disabled = (! (pers & ADDR_NO_RANDOMIZE)
+ && 0 <= personality (pers | ADDR_NO_RANDOMIZE));
+ return disabled;
+}
+#endif
+
+/* Execute the program in FILE, with argument vector ARGV and environ
+ ENVP. Return an error number if unsuccessful. This is like execve
+ except it reenables ASLR in the executed program if necessary, and
+ on error it returns an error number rather than -1. */
+int
+emacs_exec_file (char const *file, char *const *argv, char *const *envp)
+{
+#ifdef HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
+ int pers = getenv ("EMACS_HEAP_EXEC") ? personality (0xffffffff) : -1;
+ bool change_personality = 0 <= pers && pers & ADDR_NO_RANDOMIZE;
+ if (change_personality)
+ personality (pers & ~ADDR_NO_RANDOMIZE);
+#endif
+
+ execve (file, argv, envp);
+ int err = errno;
+
+#ifdef HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
+ if (change_personality)
+ personality (pers);
+#endif
+
+ return err;
+}
+
+/* If FD is not already open, arrange for it to be open with FLAGS. */
+static void
+force_open (int fd, int flags)
+{
+ if (dup2 (fd, fd) < 0 && errno == EBADF)
+ {
+ int n = open (NULL_DEVICE, flags);
+ if (n < 0 || (fd != n && (dup2 (n, fd) < 0 || emacs_close (n) != 0)))
+ {
+ emacs_perror (NULL_DEVICE);
+ exit (EXIT_FAILURE);
+ }
+ }
+}
+
+/* Make sure stdin, stdout, and stderr are open to something, so that
+ their file descriptors are not hijacked by later system calls. */
+void
+init_standard_fds (void)
+{
+ /* Open stdin for *writing*, and stdout and stderr for *reading*.
+ That way, any attempt to do normal I/O will result in an error,
+ just as if the files were closed, and the file descriptors will
+ not be reused by later opens. */
+ force_open (STDIN_FILENO, O_WRONLY);
+ force_open (STDOUT_FILENO, O_RDONLY);
+ force_open (STDERR_FILENO, O_RDONLY);
+}
+
+/* Return the current working directory. The result should be freed
+ with 'free'. Return NULL on errors. */
char *
-get_current_dir_name (void)
+emacs_get_current_dir_name (void)
{
+# if HAVE_GET_CURRENT_DIR_NAME && !BROKEN_GET_CURRENT_DIR_NAME
+# ifdef HYBRID_MALLOC
+ bool use_libc = bss_sbrk_did_unexec;
+# else
+ bool use_libc = true;
+# endif
+ if (use_libc)
+ return get_current_dir_name ();
+# endif
+
char *buf;
char *pwd = getenv ("PWD");
struct stat dotstat, pwdstat;
@@ -192,7 +262,6 @@ get_current_dir_name (void)
}
return buf;
}
-#endif
/* Discard pending input on all input descriptors. */
@@ -479,15 +548,16 @@ void
sys_subshell (void)
{
#ifdef DOS_NT /* Demacs 1.1.2 91/10/20 Manabu Higashida */
- int st;
#ifdef MSDOS
+ int st;
char oldwd[MAXPATHLEN+1]; /* Fixed length is safe on MSDOS. */
#else
char oldwd[MAX_UTF8_PATH];
-#endif
+#endif /* MSDOS */
+#else /* !DOS_NT */
+ int status;
#endif
pid_t pid;
- int status;
struct save_signal saved_handlers[5];
char *str = SSDATA (encode_current_directory ());
@@ -910,7 +980,9 @@ void
init_sys_modes (struct tty_display_info *tty_out)
{
struct emacs_tty tty;
+#ifndef DOS_NT
Lisp_Object terminal;
+#endif
Vtty_erase_char = Qnil;
@@ -1409,6 +1481,12 @@ setup_pty (int fd)
void
init_system_name (void)
{
+ if (!build_details)
+ {
+ /* Set system-name to nil so that the build is deterministic. */
+ Vsystem_name = Qnil;
+ return;
+ }
char *hostname_alloc = NULL;
char *hostname;
#ifndef HAVE_GETHOSTNAME
@@ -1632,6 +1710,9 @@ static unsigned char sigsegv_stack[SIGSTKSZ];
static bool
stack_overflow (siginfo_t *siginfo)
{
+ if (!attempt_stack_overflow_recovery)
+ return false;
+
/* In theory, a more-accurate heuristic can be obtained by using
GNU/Linux pthread_getattr_np along with POSIX pthread_attr_getstack
and pthread_attr_getguardsize to find the location and size of the
@@ -2111,7 +2192,7 @@ init_random (void)
{
bool success = false;
#ifndef WINDOWSNT
- int fd = emacs_open ("/dev/urandom", O_RDONLY | O_BINARY, 0);
+ int fd = emacs_open ("/dev/urandom", O_RDONLY, 0);
if (0 <= fd)
{
success = emacs_read (fd, &v, sizeof v) == sizeof v;
@@ -2291,7 +2372,6 @@ emacs_fopen (char const *file, char const *mode)
switch (*m++)
{
case '+': omode = O_RDWR; break;
- case 'b': bflag = O_BINARY; break;
case 't': bflag = O_TEXT; break;
default: /* Ignore. */ break;
}
@@ -2460,7 +2540,7 @@ void
emacs_perror (char const *message)
{
int err = errno;
- char const *error_string = strerror (err);
+ char const *error_string = emacs_strerror (err);
char const *command = (initial_argv && initial_argv[0]
? initial_argv[0] : "emacs");
/* Write it out all at once, if it's short; this is less likely to
@@ -3013,7 +3093,7 @@ system_process_attributes (Lisp_Object pid)
struct timespec tnow, tstart, tboot, telapsed, us_time;
double pcpu, pmem;
Lisp_Object attrs = Qnil;
- Lisp_Object cmd_str, decoded_cmd;
+ Lisp_Object decoded_cmd;
ptrdiff_t count;
CHECK_NUMBER_OR_FLOAT (pid);
@@ -3070,7 +3150,7 @@ system_process_attributes (Lisp_Object pid)
else
q = NULL;
/* Command name is encoded in locale-coding-system; decode it. */
- cmd_str = make_unibyte_string (cmd, cmdsize);
+ AUTO_STRING_WITH_LEN (cmd_str, cmd, cmdsize);
decoded_cmd = code_convert_string_norecord (cmd_str,
Vlocale_coding_system, 0);
attrs = Fcons (Fcons (Qcomm, decoded_cmd), attrs);
@@ -3203,7 +3283,7 @@ system_process_attributes (Lisp_Object pid)
sprintf (cmdline, "[%.*s]", cmdsize, cmd);
}
/* Command line is encoded in locale-coding-system; decode it. */
- cmd_str = make_unibyte_string (q, nread);
+ AUTO_STRING_WITH_LEN (cmd_str, q, nread);
decoded_cmd = code_convert_string_norecord (cmd_str,
Vlocale_coding_system, 0);
unbind_to (count, Qnil);
@@ -3338,13 +3418,13 @@ system_process_attributes (Lisp_Object pid)
make_float (100.0 / 0x8000 * pinfo.pr_pctmem)),
attrs);
- decoded_cmd = (code_convert_string_norecord
- (build_unibyte_string (pinfo.pr_fname),
- Vlocale_coding_system, 0));
+ AUTO_STRING (fname, pinfo.pr_fname);
+ decoded_cmd = code_convert_string_norecord (fname,
+ Vlocale_coding_system, 0);
attrs = Fcons (Fcons (Qcomm, decoded_cmd), attrs);
- decoded_cmd = (code_convert_string_norecord
- (build_unibyte_string (pinfo.pr_psargs),
- Vlocale_coding_system, 0));
+ AUTO_STRING (psargs, pinfo.pr_psargs);
+ decoded_cmd = code_convert_string_norecord (psargs,
+ Vlocale_coding_system, 0);
attrs = Fcons (Fcons (Qargs, decoded_cmd), attrs);
}
unbind_to (count, Qnil);
@@ -3409,9 +3489,8 @@ system_process_attributes (Lisp_Object pid)
if (gr)
attrs = Fcons (Fcons (Qgroup, build_string (gr->gr_name)), attrs);
- decoded_comm = (code_convert_string_norecord
- (build_unibyte_string (proc.ki_comm),
- Vlocale_coding_system, 0));
+ AUTO_STRING (comm, proc.ki_comm);
+ decoded_comm = code_convert_string_norecord (comm, Vlocale_coding_system, 0);
attrs = Fcons (Fcons (Qcomm, decoded_comm), attrs);
{
@@ -3522,10 +3601,9 @@ system_process_attributes (Lisp_Object pid)
args[i] = ' ';
}
- decoded_comm =
- (code_convert_string_norecord
- (build_unibyte_string (args),
- Vlocale_coding_system, 0));
+ AUTO_STRING (comm, args);
+ decoded_comm = code_convert_string_norecord (comm,
+ Vlocale_coding_system, 0);
attrs = Fcons (Fcons (Qargs, decoded_comm), attrs);
}
@@ -3533,6 +3611,146 @@ system_process_attributes (Lisp_Object pid)
return attrs;
}
+#elif defined DARWIN_OS
+
+static struct timespec
+timeval_to_timespec (struct timeval t)
+{
+ return make_timespec (t.tv_sec, t.tv_usec * 1000);
+}
+
+static Lisp_Object
+make_lisp_timeval (struct timeval t)
+{
+ return make_lisp_time (timeval_to_timespec (t));
+}
+
+Lisp_Object
+system_process_attributes (Lisp_Object pid)
+{
+ int proc_id;
+ int pagesize = getpagesize ();
+ unsigned long npages;
+ int fscale;
+ struct passwd *pw;
+ struct group *gr;
+ char *ttyname;
+ size_t len;
+ char args[MAXPATHLEN];
+ struct timeval starttime;
+ struct timespec t, now;
+ struct rusage *rusage;
+ dev_t tdev;
+ uid_t uid;
+ gid_t gid;
+
+ int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID};
+ struct kinfo_proc proc;
+ size_t proclen = sizeof proc;
+
+ Lisp_Object attrs = Qnil;
+ Lisp_Object decoded_comm;
+
+ CHECK_NUMBER_OR_FLOAT (pid);
+ CONS_TO_INTEGER (pid, int, proc_id);
+ mib[3] = proc_id;
+
+ if (sysctl (mib, 4, &proc, &proclen, NULL, 0) != 0)
+ return attrs;
+
+ uid = proc.kp_eproc.e_ucred.cr_uid;
+ attrs = Fcons (Fcons (Qeuid, make_fixnum_or_float (uid)), attrs);
+
+ block_input ();
+ pw = getpwuid (uid);
+ unblock_input ();
+ if (pw)
+ attrs = Fcons (Fcons (Quser, build_string (pw->pw_name)), attrs);
+
+ gid = proc.kp_eproc.e_pcred.p_svgid;
+ attrs = Fcons (Fcons (Qegid, make_fixnum_or_float (gid)), attrs);
+
+ block_input ();
+ gr = getgrgid (gid);
+ unblock_input ();
+ if (gr)
+ attrs = Fcons (Fcons (Qgroup, build_string (gr->gr_name)), attrs);
+
+ decoded_comm = (code_convert_string_norecord
+ (build_unibyte_string (proc.kp_proc.p_comm),
+ Vlocale_coding_system, 0));
+
+ attrs = Fcons (Fcons (Qcomm, decoded_comm), attrs);
+ {
+ char state[2] = {'\0', '\0'};
+ switch (proc.kp_proc.p_stat)
+ {
+ case SRUN:
+ state[0] = 'R';
+ break;
+
+ case SSLEEP:
+ state[0] = 'S';
+ break;
+
+ case SZOMB:
+ state[0] = 'Z';
+ break;
+
+ case SSTOP:
+ state[0] = 'T';
+ break;
+
+ case SIDL:
+ state[0] = 'I';
+ break;
+ }
+ attrs = Fcons (Fcons (Qstate, build_string (state)), attrs);
+ }
+
+ attrs = Fcons (Fcons (Qppid, make_fixnum_or_float (proc.kp_eproc.e_ppid)),
+ attrs);
+ attrs = Fcons (Fcons (Qpgrp, make_fixnum_or_float (proc.kp_eproc.e_pgid)),
+ attrs);
+
+ tdev = proc.kp_eproc.e_tdev;
+ block_input ();
+ ttyname = tdev == NODEV ? NULL : devname (tdev, S_IFCHR);
+ unblock_input ();
+ if (ttyname)
+ attrs = Fcons (Fcons (Qtty, build_string (ttyname)), attrs);
+
+ attrs = Fcons (Fcons (Qtpgid, make_fixnum_or_float (proc.kp_eproc.e_tpgid)),
+ attrs);
+
+ rusage = proc.kp_proc.p_ru;
+ if (rusage)
+ {
+ attrs = Fcons (Fcons (Qminflt, make_fixnum_or_float (rusage->ru_minflt)),
+ attrs);
+ attrs = Fcons (Fcons (Qmajflt, make_fixnum_or_float (rusage->ru_majflt)),
+ attrs);
+
+ attrs = Fcons (Fcons (Qutime, make_lisp_timeval (rusage->ru_utime)),
+ attrs);
+ attrs = Fcons (Fcons (Qstime, make_lisp_timeval (rusage->ru_stime)),
+ attrs);
+ t = timespec_add (timeval_to_timespec (rusage->ru_utime),
+ timeval_to_timespec (rusage->ru_stime));
+ attrs = Fcons (Fcons (Qtime, make_lisp_time (t)), attrs);
+ }
+
+ starttime = proc.kp_proc.p_starttime;
+ attrs = Fcons (Fcons (Qnice, make_number (proc.kp_proc.p_nice)), attrs);
+ attrs = Fcons (Fcons (Qstart, make_lisp_timeval (starttime)), attrs);
+
+ now = current_timespec ();
+ t = timespec_sub (now, timeval_to_timespec (starttime));
+ attrs = Fcons (Fcons (Qetime, make_lisp_time (t)), attrs);
+
+ return attrs;
+}
+
/* The WINDOWSNT implementation is in w32.c.
The MSDOS implementation is in dosfns.c. */
#elif !defined (WINDOWSNT) && !defined (MSDOS)
@@ -3689,7 +3907,7 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
locale_t loc = newlocale (LC_COLLATE_MASK | LC_CTYPE_MASK,
SSDATA (locale), 0);
if (!loc)
- error ("Invalid locale %s: %s", SSDATA (locale), strerror (errno));
+ error ("Invalid locale %s: %s", SSDATA (locale), emacs_strerror (errno));
if (! NILP (ignore_case))
for (int i = 1; i < 3; i++)
@@ -3720,10 +3938,10 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
}
# ifndef HAVE_NEWLOCALE
if (err)
- error ("Invalid locale or string for collation: %s", strerror (err));
+ error ("Invalid locale or string for collation: %s", emacs_strerror (err));
# else
if (err)
- error ("Invalid string for collation: %s", strerror (err));
+ error ("Invalid string for collation: %s", emacs_strerror (err));
# endif
SAFE_FREE ();
@@ -3741,7 +3959,7 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
int res, err = errno;
errno = 0;
- res = w32_compare_strings (SDATA (s1), SDATA (s2), loc, !NILP (ignore_case));
+ res = w32_compare_strings (SSDATA (s1), SSDATA (s2), loc, !NILP (ignore_case));
if (errno)
error ("Invalid string for collation: %s", strerror (errno));
diff --git a/src/term.c b/src/term.c
index 4397210965..d54ff115f9 100644
--- a/src/term.c
+++ b/src/term.c
@@ -548,8 +548,8 @@ encode_terminal_code (struct glyph *src, int src_len,
{
if (src->type == COMPOSITE_GLYPH)
{
- struct composition *cmp IF_LINT (= NULL);
- Lisp_Object gstring IF_LINT (= Qnil);
+ struct composition *cmp UNINIT;
+ Lisp_Object gstring UNINIT;
int i;
nbytes = buf - encode_terminal_src;
@@ -614,7 +614,7 @@ encode_terminal_code (struct glyph *src, int src_len,
else if (! CHAR_GLYPH_PADDING_P (*src))
{
GLYPH g;
- int c IF_LINT (= 0);
+ int c UNINIT;
Lisp_Object string;
string = Qnil;
@@ -1496,6 +1496,8 @@ append_glyph (struct it *it)
glyph->pixel_width = 1;
glyph->u.ch = it->char_to_display;
glyph->face_id = it->face_id;
+ glyph->avoid_cursor_p = it->avoid_cursor_p;
+ glyph->multibyte_p = it->multibyte_p;
glyph->padding_p = i > 0;
glyph->charpos = CHARPOS (it->position);
glyph->object = it->object;
@@ -1692,8 +1694,10 @@ append_composite_glyph (struct it *it)
glyph->slice.cmp.to = it->cmp_it.to - 1;
}
+ glyph->avoid_cursor_p = it->avoid_cursor_p;
+ glyph->multibyte_p = it->multibyte_p;
glyph->face_id = it->face_id;
- glyph->padding_p = 0;
+ glyph->padding_p = false;
glyph->charpos = CHARPOS (it->position);
glyph->object = it->object;
if (it->bidi_p)
@@ -1776,8 +1780,10 @@ append_glyphless_glyph (struct it *it, int face_id, const char *str)
return;
glyph->type = CHAR_GLYPH;
glyph->pixel_width = 1;
+ glyph->avoid_cursor_p = it->avoid_cursor_p;
+ glyph->multibyte_p = it->multibyte_p;
glyph->face_id = face_id;
- glyph->padding_p = 0;
+ glyph->padding_p = false;
glyph->charpos = CHARPOS (it->position);
glyph->object = it->object;
if (it->bidi_p)
@@ -1954,8 +1960,6 @@ turn_off_face (struct frame *f, int face_id)
struct face *face = FACE_FROM_ID (f, face_id);
struct tty_display_info *tty = FRAME_TTY (f);
- eassert (face != NULL);
-
if (tty->TS_exit_attribute_mode)
{
/* Capability "me" will turn off appearance modes double-bright,
@@ -3101,7 +3105,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
struct tty_menu_state *state;
int statecount, x, y, i;
bool leave, onepane;
- int result IF_LINT (= 0);
+ int result UNINIT;
int title_faces[4]; /* Face to display the menu title. */
int faces[4], buffers_num_deleted = 0;
struct frame *sf = SELECTED_FRAME ();
@@ -3755,7 +3759,7 @@ tty_menu_show (struct frame *f, int x, int y, int menuflags,
/* Make "Cancel" equivalent to C-g unless FOR_CLICK (which means
the menu was invoked with a mouse event as POSITION). */
if (!(menuflags & MENU_FOR_CLICK))
- Fsignal (Qquit, Qnil);
+ quit ();
break;
}
@@ -3915,13 +3919,15 @@ dissociate_if_controlling_tty (int fd)
struct terminal *
init_tty (const char *name, const char *terminal_type, bool must_succeed)
{
+ struct tty_display_info *tty = NULL;
+ struct terminal *terminal = NULL;
+#ifndef DOS_NT
char *area;
char **address = &area;
int status;
- struct tty_display_info *tty = NULL;
- struct terminal *terminal = NULL;
sigset_t oldset;
bool ctty = false; /* True if asked to open controlling tty. */
+#endif
if (!terminal_type)
maybe_fatal (must_succeed, 0,
@@ -3930,8 +3936,10 @@ init_tty (const char *name, const char *terminal_type, bool must_succeed)
if (name == NULL)
name = DEV_TTY;
+#ifndef DOS_NT
if (!strcmp (name, DEV_TTY))
ctty = 1;
+#endif
/* If we already have a terminal on the given device, use that. If
all such terminals are suspended, create a new one instead. */
diff --git a/src/termhooks.h b/src/termhooks.h
index d21d6ce588..ff74d99b7c 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -158,6 +158,9 @@ enum event_kind
SELECTION_CLEAR_EVENT, /* Another X client cleared our selection. */
BUFFER_SWITCH_EVENT, /* A process filter has switched buffers. */
DELETE_WINDOW_EVENT, /* An X client said "delete this window". */
+#ifdef HAVE_NTGUI
+ END_SESSION_EVENT, /* The user is logging out or shutting down. */
+#endif
MENU_BAR_EVENT, /* An event generated by the menu bar.
The frame_or_window field's cdr holds the
Lisp-level event value.
diff --git a/src/textprop.c b/src/textprop.c
index c4e49d98eb..7af8c69873 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -2043,18 +2043,19 @@ add_text_properties_from_list (Lisp_Object object, Lisp_Object list, Lisp_Object
end-points to NEW_END. */
Lisp_Object
-extend_property_ranges (Lisp_Object list, Lisp_Object new_end)
+extend_property_ranges (Lisp_Object list, Lisp_Object old_end, Lisp_Object new_end)
{
Lisp_Object prev = Qnil, head = list;
ptrdiff_t max = XINT (new_end);
for (; CONSP (list); prev = list, list = XCDR (list))
{
- Lisp_Object item, beg, end;
+ Lisp_Object item, beg;
+ ptrdiff_t end;
item = XCAR (list);
beg = XCAR (item);
- end = XCAR (XCDR (item));
+ end = XINT (XCAR (XCDR (item)));
if (XINT (beg) >= max)
{
@@ -2065,9 +2066,16 @@ extend_property_ranges (Lisp_Object list, Lisp_Object new_end)
else
XSETCDR (prev, XCDR (list));
}
- else if (XINT (end) > max)
- /* The end-point is past the end of the new string. */
- XSETCAR (XCDR (item), new_end);
+ else if ((end == XINT (old_end) && end != max)
+ || end > max)
+ {
+ /* Either the end-point is past the end of the new string,
+ and we need to discard the properties past the new end,
+ or the caller is extending the property range, and we
+ should update all end-points that are on the old end of
+ the range to reflect that. */
+ XSETCAR (XCDR (item), new_end);
+ }
}
return head;
diff --git a/src/unexcw.c b/src/unexcw.c
index afd5413c64..6343b38bcf 100644
--- a/src/unexcw.c
+++ b/src/unexcw.c
@@ -30,10 +30,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define DOTEXE ".exe"
-extern void report_sheap_usage (int);
-
-extern int bss_sbrk_did_unexec;
-
/*
** header for Windows executable files
*/
@@ -151,7 +147,7 @@ fixup_executable (int fd)
assert (ret == my_edata - (char *) start_address);
++found_data;
if (debug_unexcw)
- printf (" .data, mem start %#lx mem length %d\n",
+ printf (" .data, mem start %#lx mem length %td\n",
start_address, my_edata - (char *) start_address);
if (debug_unexcw)
printf (" .data, file start %d file length %d\n",
@@ -217,7 +213,7 @@ fixup_executable (int fd)
sizeof (exe_header->section_header[i]));
assert (ret == sizeof (exe_header->section_header[i]));
if (debug_unexcw)
- printf (" seek to %ld, write %d\n",
+ printf (" seek to %ld, write %zu\n",
(long) ((char *) &exe_header->section_header[i] -
(char *) exe_header),
sizeof (exe_header->section_header[i]));
@@ -232,7 +228,7 @@ fixup_executable (int fd)
my_endbss - (char *) start_address);
assert (ret == (my_endbss - (char *) start_address));
if (debug_unexcw)
- printf (" .bss, mem start %#lx mem length %d\n",
+ printf (" .bss, mem start %#lx mem length %td\n",
start_address, my_endbss - (char *) start_address);
if (debug_unexcw)
printf (" .bss, file start %d file length %d\n",
@@ -276,14 +272,12 @@ unexec (const char *outfile, const char *infile)
int ret;
int ret2;
- report_sheap_usage (1);
-
infile = add_exe_suffix_if_necessary (infile, infile_buffer);
outfile = add_exe_suffix_if_necessary (outfile, outfile_buffer);
- fd_in = emacs_open (infile, O_RDONLY | O_BINARY, 0);
+ fd_in = emacs_open (infile, O_RDONLY, 0);
assert (fd_in >= 0);
- fd_out = emacs_open (outfile, O_RDWR | O_TRUNC | O_CREAT | O_BINARY, 0755);
+ fd_out = emacs_open (outfile, O_RDWR | O_TRUNC | O_CREAT, 0755);
assert (fd_out >= 0);
for (;;)
{
@@ -302,9 +296,7 @@ unexec (const char *outfile, const char *infile)
ret = emacs_close (fd_in);
assert (ret == 0);
- bss_sbrk_did_unexec = 1;
fixup_executable (fd_out);
- bss_sbrk_did_unexec = 0;
ret = emacs_close (fd_out);
assert (ret == 0);
diff --git a/src/unexelf.c b/src/unexelf.c
index 068d268808..551915712f 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -461,29 +461,6 @@ unexec (const char *new_name, const char *old_name)
|| !strcmp (old_section_names + new_shdr->sh_name, ".sdata")
|| !strcmp (old_section_names + new_shdr->sh_name, ".lit4")
|| !strcmp (old_section_names + new_shdr->sh_name, ".lit8")
- /* The conditional bit below was in Oliva's original code
- (1999-08-25) and seems to have been dropped by mistake
- subsequently. It prevents a crash at startup under X in
- `IRIX64 6.5 6.5.17m', whether compiled on that release or
- an earlier one. It causes no trouble on the other ELF
- platforms I could test (Irix 6.5.15m, Solaris 8, Debian
- Potato x86, Debian Woody SPARC); however, it's reported
- to cause crashes under some version of GNU/Linux. It's
- not yet clear what's changed in that Irix version to
- cause the problem, or why the fix sometimes fails under
- GNU/Linux. There's probably no good reason to have
- something Irix-specific here, but this will have to do
- for now. IRIX6_5 is the most specific macro we have to
- test. -- fx 2002-10-01
-
- The issue _looks_ as though it's gone away on 6.5.18m,
- but maybe it's still lurking, to be triggered by some
- change in the binary. It appears to concern the dynamic
- loader, but I never got anywhere with an SGI support call
- seeking clues. -- fx 2002-11-29. */
-#ifdef IRIX6_5
- || !strcmp (old_section_names + new_shdr->sh_name, ".got")
-#endif
|| !strcmp (old_section_names + new_shdr->sh_name, ".sdata1")
|| !strcmp (old_section_names + new_shdr->sh_name, ".data1"))
src = (caddr_t) old_shdr->sh_addr;
@@ -665,9 +642,6 @@ unexec (const char *new_name, const char *old_name)
|| !strcmp (old_section_names + shdr->sh_name, ".sdata")
|| !strcmp (old_section_names + shdr->sh_name, ".lit4")
|| !strcmp (old_section_names + shdr->sh_name, ".lit8")
-#ifdef IRIX6_5 /* see above */
- || !strcmp (old_section_names + shdr->sh_name, ".got")
-#endif
|| !strcmp (old_section_names + shdr->sh_name, ".sdata1")
|| !strcmp (old_section_names + shdr->sh_name, ".data1"))
{
diff --git a/src/unexw32.c b/src/unexw32.c
index 15aa7263bf..f4183dc976 100644
--- a/src/unexw32.c
+++ b/src/unexw32.c
@@ -50,10 +50,6 @@ extern char *my_begbss_static;
/* Basically, our "initialized" flag. */
BOOL using_dynamic_heap = FALSE;
-int open_input_file (file_data *p_file, char *name);
-int open_output_file (file_data *p_file, char *name, unsigned long size);
-void close_file_data (file_data *p_file);
-
void get_section_info (file_data *p_file);
void copy_executable_and_dump_data (file_data *, file_data *);
void dump_bss_and_heap (file_data *p_infile, file_data *p_outfile);
@@ -81,14 +77,17 @@ DWORD_PTR extra_bss_size_static = 0;
#define _start __start
#endif
+extern void mainCRTStartup (void);
+
/* Startup code for running on NT. When we are running as the dumped
version, we need to bootstrap our heap and .bss section into our
address space before we can actually hand off control to the startup
code supplied by NT (primarily because that code relies upon malloc ()). */
+void _start (void);
+
void
_start (void)
{
- extern void mainCRTStartup (void);
#if 1
/* Give us a way to debug problems with crashes on startup when
@@ -205,7 +204,7 @@ close_file_data (file_data *p_file)
/* Return pointer to section header for named section. */
IMAGE_SECTION_HEADER *
-find_section (char * name, IMAGE_NT_HEADERS * nt_header)
+find_section (const char * name, IMAGE_NT_HEADERS * nt_header)
{
PIMAGE_SECTION_HEADER section;
int i;
@@ -214,7 +213,7 @@ find_section (char * name, IMAGE_NT_HEADERS * nt_header)
for (i = 0; i < nt_header->FileHeader.NumberOfSections; i++)
{
- if (strcmp (section->Name, name) == 0)
+ if (strcmp ((char *)section->Name, name) == 0)
return section;
section++;
}
@@ -249,9 +248,10 @@ rva_to_section (DWORD_PTR rva, IMAGE_NT_HEADERS * nt_header)
return NULL;
}
+#if 0 /* unused */
/* Return pointer to section header for section containing the given
offset in its raw data area. */
-IMAGE_SECTION_HEADER *
+static IMAGE_SECTION_HEADER *
offset_to_section (DWORD_PTR offset, IMAGE_NT_HEADERS * nt_header)
{
PIMAGE_SECTION_HEADER section;
@@ -268,11 +268,12 @@ offset_to_section (DWORD_PTR offset, IMAGE_NT_HEADERS * nt_header)
}
return NULL;
}
+#endif
/* Return offset to an object in dst, given offset in src. We assume
there is at least one section in both src and dst images, and that
the some sections may have been added to dst (after sections in src). */
-DWORD_PTR
+static DWORD_PTR
relocate_offset (DWORD_PTR offset,
IMAGE_NT_HEADERS * src_nt_header,
IMAGE_NT_HEADERS * dst_nt_header)
@@ -306,9 +307,6 @@ relocate_offset (DWORD_PTR offset,
(dst_section->PointerToRawData - src_section->PointerToRawData);
}
-#define OFFSET_TO_RVA(offset, section) \
- ((section)->VirtualAddress + ((DWORD_PTR)(offset) - (section)->PointerToRawData))
-
#define RVA_TO_OFFSET(rva, section) \
((section)->PointerToRawData + ((DWORD_PTR)(rva) - (section)->VirtualAddress))
@@ -318,15 +316,20 @@ relocate_offset (DWORD_PTR offset,
/* Convert address in executing image to RVA. */
#define PTR_TO_RVA(ptr) ((DWORD_PTR)(ptr) - (DWORD_PTR) GetModuleHandle (NULL))
-#define RVA_TO_PTR(var,section,filedata) \
- ((unsigned char *)(RVA_TO_OFFSET (var,section) + (filedata).file_base))
-
#define PTR_TO_OFFSET(ptr, pfile_data) \
((unsigned char *)(ptr) - (pfile_data)->file_base)
#define OFFSET_TO_PTR(offset, pfile_data) \
((pfile_data)->file_base + (DWORD_PTR)(offset))
+#if 0 /* unused */
+#define OFFSET_TO_RVA(offset, section) \
+ ((section)->VirtualAddress + ((DWORD_PTR)(offset) - (section)->PointerToRawData))
+
+#define RVA_TO_PTR(var,section,filedata) \
+ ((unsigned char *)(RVA_TO_OFFSET (var,section) + (filedata).file_base))
+#endif
+
/* Flip through the executable and cache the info necessary for dumping. */
void
diff --git a/src/vm-limit.c b/src/vm-limit.c
index d32050fd01..58e7729186 100644
--- a/src/vm-limit.c
+++ b/src/vm-limit.c
@@ -51,9 +51,16 @@ char data_start[1] = { 1 };
# endif
#endif
-/* From gmalloc.c. */
-extern void (* __after_morecore_hook) (void);
+#ifdef HAVE_MALLOC_H
+# include <malloc.h>
+#endif
+#ifndef HAVE_MALLOC_H
+# ifndef __MALLOC_HOOK_VOLATILE
+# define __MALLOC_HOOK_VOLATILE volatile
+# endif
extern void *(*__morecore) (ptrdiff_t);
+extern void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void);
+#endif
/* From ralloc.c. */
#ifdef REL_ALLOC
diff --git a/src/w32.c b/src/w32.c
index 793bc0f28d..1db3426097 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -66,6 +66,24 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#undef localtime
+char *sys_ctime (const time_t *);
+int sys_chdir (const char *);
+int sys_creat (const char *, int);
+FILE *sys_fopen (const char *, const char *);
+int sys_mkdir (const char *);
+int sys_open (const char *, int, int);
+int sys_rename (char const *, char const *);
+int sys_rmdir (const char *);
+int sys_close (int);
+int sys_dup2 (int, int);
+int sys_read (int, char *, unsigned int);
+int sys_write (int, const void *, unsigned int);
+struct tm *sys_localtime (const time_t *);
+
+#ifdef HAVE_MODULES
+extern void dynlib_reset_last_error (void);
+#endif
+
#include "lisp.h"
#include "epaths.h" /* for PATH_EXEC */
@@ -227,6 +245,7 @@ typedef struct _REPARSE_DATA_BUFFER {
#include <wincrypt.h>
#include <c-strcase.h>
+#include <utimens.h> /* for fdutimens */
#include "w32.h"
#include <dirent.h>
@@ -246,7 +265,6 @@ typedef struct _REPARSE_DATA_BUFFER {
typedef HRESULT (WINAPI * ShGetFolderPath_fn)
(IN HWND, IN int, IN HANDLE, IN DWORD, OUT char *);
-void globals_of_w32 (void);
static DWORD get_rid (PSID);
static int is_symlink (const char *);
static char * chase_symlinks (const char *);
@@ -512,6 +530,8 @@ static Lisp_Object ltime (ULONGLONG);
/* Get total user and system times for get-internal-run-time.
Returns a list of integers if the times are provided by the OS
(NT derivatives), otherwise it returns the result of current-time. */
+Lisp_Object w32_get_internal_run_time (void);
+
Lisp_Object
w32_get_internal_run_time (void)
{
@@ -2485,13 +2505,42 @@ sys_putenv (char *str)
return unsetenv (str);
}
+ if (strncmp (str, "TZ=<", 4) == 0)
+ {
+ /* MS-Windows does not support POSIX.1-2001 angle-bracket TZ
+ abbreviation syntax. Convert to POSIX.1-1988 syntax if possible,
+ and to the undocumented placeholder "ZZZ" otherwise. */
+ bool supported_abbr = true;
+ for (char *p = str + 4; *p; p++)
+ {
+ if (('0' <= *p && *p <= '9') || *p == '-' || *p == '+')
+ supported_abbr = false;
+ else if (*p == '>')
+ {
+ ptrdiff_t abbrlen;
+ if (supported_abbr)
+ {
+ abbrlen = p - (str + 4);
+ memmove (str + 3, str + 4, abbrlen);
+ }
+ else
+ {
+ abbrlen = 3;
+ memset (str + 3, 'Z', abbrlen);
+ }
+ memmove (str + 3 + abbrlen, p + 1, strlen (p));
+ break;
+ }
+ }
+ }
+
return _putenv (str);
}
#define REG_ROOT "SOFTWARE\\GNU\\Emacs"
LPBYTE
-w32_get_resource (char *key, LPDWORD lpdwtype)
+w32_get_resource (const char *key, LPDWORD lpdwtype)
{
LPBYTE lpvalue;
HKEY hrootkey = NULL;
@@ -2600,8 +2649,8 @@ init_environment (char ** argv)
static const struct env_entry
{
- char * name;
- char * def_value;
+ const char * name;
+ const char * def_value;
} dflt_envvars[] =
{
/* If the default value is NULL, we will use the value from the
@@ -2761,14 +2810,14 @@ init_environment (char ** argv)
{
/* If not found in any directory, use the
default as the last resort. */
- lpval = env_vars[i].def_value;
+ lpval = (char *)env_vars[i].def_value;
dwType = REG_EXPAND_SZ;
}
} while (*pstart);
}
else
{
- lpval = env_vars[i].def_value;
+ lpval = (char *)env_vars[i].def_value;
dwType = REG_EXPAND_SZ;
}
if (strcmp (env_vars[i].name, "HOME") == 0 && !appdata)
@@ -2789,7 +2838,7 @@ init_environment (char ** argv)
if (dwType == REG_EXPAND_SZ)
ExpandEnvironmentStrings ((LPSTR) lpval, buf1, sizeof (buf1));
else if (dwType == REG_SZ)
- strcpy (buf1, lpval);
+ strcpy (buf1, (char *)lpval);
if (dwType == REG_EXPAND_SZ || dwType == REG_SZ)
{
_snprintf (buf2, sizeof (buf2)-1, "%s=%s", env_vars[i].name,
@@ -2964,7 +3013,7 @@ char *
sys_ctime (const time_t *t)
{
char *str = (char *) ctime (t);
- return (str ? str : "Sun Jan 01 00:00:00 1970");
+ return (str ? str : (char *)"Sun Jan 01 00:00:00 1970");
}
/* Emulate sleep...we could have done this with a define, but that
@@ -3228,6 +3277,8 @@ is_fat_volume (const char * name, const char ** pPath)
/* Convert all slashes in a filename to backslashes, and map filename
to a valid 8.3 name if necessary. The result is a pointer to a
static buffer, so CAVEAT EMPTOR! */
+const char *map_w32_filename (const char *, const char **);
+
const char *
map_w32_filename (const char * name, const char ** pPath)
{
@@ -4433,7 +4484,7 @@ sys_rename_replace (const char *oldname, const char *newname, BOOL force)
{
/* Force temp name to require a manufactured 8.3 alias - this
seems to make the second rename work properly. */
- sprintf (p, "_.%s.%u", o, i);
+ sprintf (p, "_.%s.%d", o, i);
i++;
result = rename (oldname_a, temp_a);
}
@@ -4861,6 +4912,8 @@ get_file_owner_and_group (PSECURITY_DESCRIPTOR psd, struct stat *st)
}
/* Return non-zero if NAME is a potentially slow filesystem. */
+int is_slow_fs (const char *);
+
int
is_slow_fs (const char *name)
{
@@ -7205,6 +7258,10 @@ int (PASCAL *pfn_recvfrom) (SOCKET s, char * buf, int len, int flags,
int (PASCAL *pfn_sendto) (SOCKET s, const char * buf, int len, int flags,
const struct sockaddr * to, int tolen);
+int (PASCAL *pfn_getaddrinfo) (const char *, const char *,
+ const struct addrinfo *, struct addrinfo **);
+void (PASCAL *pfn_freeaddrinfo) (struct addrinfo *);
+
/* SetHandleInformation is only needed to make sockets non-inheritable. */
BOOL (WINAPI *pfn_SetHandleInformation) (HANDLE object, DWORD mask, DWORD flags);
#ifndef HANDLE_FLAG_INHERIT
@@ -7214,6 +7271,8 @@ BOOL (WINAPI *pfn_SetHandleInformation) (HANDLE object, DWORD mask, DWORD flags)
HANDLE winsock_lib;
static int winsock_inuse;
+BOOL term_winsock (void);
+
BOOL
term_winsock (void)
{
@@ -7287,6 +7346,16 @@ init_winsock (int load_now)
LOAD_PROC (sendto);
#undef LOAD_PROC
+ /* Try loading functions not available before XP. */
+ pfn_getaddrinfo = (void *) GetProcAddress (winsock_lib, "getaddrinfo");
+ pfn_freeaddrinfo = (void *) GetProcAddress (winsock_lib, "freeaddrinfo");
+ /* Paranoia: these two functions should go together, so if one
+ is absent, we cannot use the other. */
+ if (pfn_getaddrinfo == NULL)
+ pfn_freeaddrinfo = NULL;
+ else if (pfn_freeaddrinfo == NULL)
+ pfn_getaddrinfo = NULL;
+
/* specify version 1.1 of winsock */
if (pfn_WSAStartup (0x101, &winsockData) == 0)
{
@@ -7361,7 +7430,7 @@ check_errno (void)
/* Extend strerror to handle the winsock-specific error codes. */
struct {
int errnum;
- char * msg;
+ const char * msg;
} _wsa_errlist[] = {
{WSAEINTR , "Interrupted function call"},
{WSAEBADF , "Bad file descriptor"},
@@ -7445,7 +7514,7 @@ sys_strerror (int error_no)
for (i = 0; _wsa_errlist[i].errnum >= 0; i++)
if (_wsa_errlist[i].errnum == error_no)
- return _wsa_errlist[i].msg;
+ return (char *)_wsa_errlist[i].msg;
sprintf (unknown_msg, "Unidentified error: %d", error_no);
return unknown_msg;
@@ -7737,6 +7806,117 @@ sys_getpeername (int s, struct sockaddr *addr, int * namelen)
}
int
+sys_getaddrinfo (const char *node, const char *service,
+ const struct addrinfo *hints, struct addrinfo **res)
+{
+ int rc;
+
+ if (winsock_lib == NULL)
+ {
+ errno = ENETDOWN;
+ return SOCKET_ERROR;
+ }
+
+ check_errno ();
+ if (pfn_getaddrinfo)
+ rc = pfn_getaddrinfo (node, service, hints, res);
+ else
+ {
+ int port = 0;
+ struct hostent *host_info;
+ struct gai_storage {
+ struct addrinfo addrinfo;
+ struct sockaddr_in sockaddr_in;
+ } *gai_storage;
+
+ /* We don't (yet) support any flags, as Emacs doesn't need that. */
+ if (hints && hints->ai_flags != 0)
+ return WSAEINVAL;
+ /* NODE cannot be NULL, since process.c has fallbacks for that. */
+ if (!node)
+ return WSAHOST_NOT_FOUND;
+
+ if (service)
+ {
+ const char *protocol =
+ (hints && hints->ai_socktype == SOCK_DGRAM) ? "udp" : "tcp";
+ struct servent *srv = sys_getservbyname (service, protocol);
+
+ if (srv)
+ port = srv->s_port;
+ else if (*service >= '0' && *service <= '9')
+ {
+ char *endp;
+
+ port = strtoul (service, &endp, 10);
+ if (*endp || port > 65536)
+ return WSAHOST_NOT_FOUND;
+ port = sys_htons ((unsigned short) port);
+ }
+ else
+ return WSAHOST_NOT_FOUND;
+ }
+
+ gai_storage = xzalloc (sizeof *gai_storage);
+ gai_storage->sockaddr_in.sin_port = port;
+ host_info = sys_gethostbyname (node);
+ if (host_info)
+ {
+ memcpy (&gai_storage->sockaddr_in.sin_addr,
+ host_info->h_addr, host_info->h_length);
+ gai_storage->sockaddr_in.sin_family = host_info->h_addrtype;
+ }
+ else
+ {
+ /* Attempt to interpret host as numeric inet address. */
+ unsigned long numeric_addr = sys_inet_addr (node);
+
+ if (numeric_addr == -1)
+ {
+ free (gai_storage);
+ return WSAHOST_NOT_FOUND;
+ }
+
+ memcpy (&gai_storage->sockaddr_in.sin_addr, &numeric_addr,
+ sizeof (gai_storage->sockaddr_in.sin_addr));
+ gai_storage->sockaddr_in.sin_family = (hints) ? hints->ai_family : 0;
+ }
+
+ gai_storage->addrinfo.ai_addr =
+ (struct sockaddr *)&gai_storage->sockaddr_in;
+ gai_storage->addrinfo.ai_addrlen = sizeof (gai_storage->sockaddr_in);
+ gai_storage->addrinfo.ai_protocol = (hints) ? hints->ai_protocol : 0;
+ gai_storage->addrinfo.ai_socktype = (hints) ? hints->ai_socktype : 0;
+ gai_storage->addrinfo.ai_family = gai_storage->sockaddr_in.sin_family;
+ gai_storage->addrinfo.ai_next = NULL;
+
+ *res = &gai_storage->addrinfo;
+ rc = 0;
+ }
+
+ return rc;
+}
+
+void
+sys_freeaddrinfo (struct addrinfo *ai)
+{
+ if (winsock_lib == NULL)
+ {
+ errno = ENETDOWN;
+ return;
+ }
+
+ check_errno ();
+ if (pfn_freeaddrinfo)
+ pfn_freeaddrinfo (ai);
+ else
+ {
+ eassert (ai->ai_next == NULL);
+ xfree (ai);
+ }
+}
+
+int
sys_shutdown (int s, int how)
{
if (winsock_lib == NULL)
@@ -8059,17 +8239,33 @@ sys_dup2 (int src, int dst)
return -1;
}
- /* make sure we close the destination first if it's a pipe or socket */
- if (src != dst && fd_info[dst].flags != 0)
+ /* MS _dup2 seems to have weird side effect when invoked with 2
+ identical arguments: an attempt to fclose the corresponding stdio
+ stream after that hangs (we do close standard streams in
+ init_ntproc). Attempt to avoid that by not calling _dup2 that
+ way: if SRC is valid, we know that dup2 should be a no-op, so do
+ nothing and return DST. */
+ if (src == dst)
+ {
+ if ((HANDLE)_get_osfhandle (src) == INVALID_HANDLE_VALUE)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ return dst;
+ }
+
+ /* Make sure we close the destination first if it's a pipe or socket. */
+ if (fd_info[dst].flags != 0)
sys_close (dst);
rc = _dup2 (src, dst);
if (rc == 0)
{
- /* duplicate our internal info as well */
+ /* Duplicate our internal info as well. */
fd_info[dst] = fd_info[src];
}
- return rc;
+ return rc == 0 ? dst : rc;
}
int
@@ -8650,6 +8846,30 @@ sys_write (int fd, const void * buffer, unsigned int count)
unsigned long nblock = 0;
if (winsock_lib == NULL) emacs_abort ();
+ child_process *cp = fd_info[fd].cp;
+
+ /* If this is a non-blocking socket whose connection is in
+ progress or terminated with an error already, return the
+ proper error code to the caller. */
+ if (cp != NULL && (fd_info[fd].flags & FILE_CONNECT) != 0)
+ {
+ /* In case connection is in progress, ENOTCONN that would
+ result from calling pfn_send is not what callers expect. */
+ if (cp->status != STATUS_CONNECT_FAILED)
+ {
+ errno = EWOULDBLOCK;
+ return -1;
+ }
+ /* In case connection failed, use the actual error code
+ stashed by '_sys_wait_connect' in cp->errcode. */
+ else if (cp->errcode != 0)
+ {
+ pfn_WSASetLastError (cp->errcode);
+ set_errno ();
+ return -1;
+ }
+ }
+
/* TODO: implement select() properly so non-blocking I/O works. */
/* For now, make sure the write blocks. */
if (fd_info[fd].flags & FILE_NDELAY)
@@ -8657,6 +8877,13 @@ sys_write (int fd, const void * buffer, unsigned int count)
nchars = pfn_send (SOCK_HANDLE (fd), buffer, count, 0);
+ if (nchars == SOCKET_ERROR)
+ {
+ set_errno ();
+ DebPrint (("sys_write.send failed with error %d on socket %ld\n",
+ pfn_WSAGetLastError (), SOCK_HANDLE (fd)));
+ }
+
/* Set the socket back to non-blocking if it was before,
for other operations that support it. */
if (fd_info[fd].flags & FILE_NDELAY)
@@ -8664,13 +8891,6 @@ sys_write (int fd, const void * buffer, unsigned int count)
nblock = 1;
pfn_ioctlsocket (SOCK_HANDLE (fd), FIONBIO, &nblock);
}
-
- if (nchars == SOCKET_ERROR)
- {
- DebPrint (("sys_write.send failed with error %d on socket %ld\n",
- pfn_WSAGetLastError (), SOCK_HANDLE (fd)));
- set_errno ();
- }
}
else
{
@@ -8743,8 +8963,6 @@ sys_write (int fd, const void * buffer, unsigned int count)
/* Emulation of SIOCGIFCONF and getifaddrs, see process.c. */
-extern Lisp_Object conv_sockaddr_to_lisp (struct sockaddr *, int);
-
/* Return information about network interface IFNAME, or about all
interfaces (if IFNAME is nil). */
static Lisp_Object
@@ -9457,7 +9675,6 @@ globals_of_w32 (void)
w32_unicode_filenames = 1;
#ifdef HAVE_MODULES
- extern void dynlib_reset_last_error (void);
dynlib_reset_last_error ();
#endif
diff --git a/src/w32.h b/src/w32.h
index 42a1c423ce..702bb5255c 100644
--- a/src/w32.h
+++ b/src/w32.h
@@ -162,7 +162,7 @@ extern void reset_standard_handles (int in, int out,
int err, HANDLE handles[4]);
/* Return the string resource associated with KEY of type TYPE. */
-extern LPBYTE w32_get_resource (char * key, LPDWORD type);
+extern LPBYTE w32_get_resource (const char * key, LPDWORD type);
extern void release_listen_threads (void);
extern void init_ntproc (int);
diff --git a/src/w32console.c b/src/w32console.c
index 512d20dd24..c71afb6f88 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -35,6 +35,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "w32common.h" /* for os_subtype */
#include "w32inevt.h"
+#ifdef WINDOWSNT
+#include "w32.h" /* for syms_of_ntterm */
+#endif
+
static void w32con_move_cursor (struct frame *f, int row, int col);
static void w32con_clear_to_end (struct frame *f);
static void w32con_clear_frame (struct frame *f);
@@ -67,6 +71,8 @@ int w32_console_unicode_input;
someone hits ^C in a 'suspended' session (child shell).
Also ignore Ctrl-Break signals. */
+BOOL ctrl_c_handler (unsigned long);
+
BOOL
ctrl_c_handler (unsigned long type)
{
@@ -509,11 +515,15 @@ w32con_update_end (struct frame * f)
stubs from termcap.c
***********************************************************************/
+void sys_tputs (char *, int, int (*) (int));
+
void
sys_tputs (char *str, int nlines, int (*outfun) (int))
{
}
+char *sys_tgetstr (char *, char **);
+
char *
sys_tgetstr (char *cap, char **area)
{
@@ -528,33 +538,45 @@ sys_tgetstr (char *cap, char **area)
struct tty_display_info *current_tty = NULL;
int cost = 0;
+int evalcost (int);
+
int
evalcost (int c)
{
return c;
}
+int cmputc (int);
+
int
cmputc (int c)
{
return c;
}
+void cmcheckmagic (struct tty_display_info *);
+
void
cmcheckmagic (struct tty_display_info *tty)
{
}
+void cmcostinit (struct tty_display_info *);
+
void
cmcostinit (struct tty_display_info *tty)
{
}
+void cmgoto (struct tty_display_info *, int, int);
+
void
cmgoto (struct tty_display_info *tty, int row, int col)
{
}
+void Wcm_clear (struct tty_display_info *);
+
void
Wcm_clear (struct tty_display_info *tty)
{
@@ -589,8 +611,6 @@ w32_face_attributes (struct frame *f, int face_id)
WORD char_attr;
struct face *face = FACE_FROM_ID (f, face_id);
- eassert (face != NULL);
-
char_attr = char_attr_normal;
/* Reverse the default color if requested. If background and
@@ -759,6 +779,9 @@ initialize_w32_display (struct terminal *term, int *width, int *height)
/* Setup w32_display_info structure for this frame. */
w32_initialize_display_info (build_string ("Console"));
+
+ /* Set up the keyboard hook. */
+ setup_w32_kbdhook ();
}
diff --git a/src/w32fns.c b/src/w32fns.c
index c57b5a188b..2b07bb20e4 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -20,6 +20,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Added by Kevin Gallo */
#include <config.h>
+/* Override API version to get the latest functionality. */
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
#include <signal.h>
#include <stdio.h>
@@ -41,6 +44,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "coding.h"
#include "w32common.h"
+#include "w32inevt.h"
#ifdef WINDOWSNT
#include <mbstring.h>
@@ -52,6 +56,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "w32.h"
#endif
+#include <basetyps.h>
+#include <unknwn.h>
#include <commctrl.h>
#include <commdlg.h>
#include <shellapi.h>
@@ -68,15 +74,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define FOF_NO_CONNECTED_ELEMENTS 0x2000
#endif
-void syms_of_w32fns (void);
-void globals_of_w32fns (void);
-
-extern void free_frame_menubar (struct frame *);
extern int w32_console_toggle_lock_key (int, Lisp_Object);
extern void w32_menu_display_help (HWND, HMENU, UINT, UINT);
extern void w32_free_menu_strings (HWND);
extern const char *map_w32_filename (const char *, const char **);
-extern char * w32_strerror (int error_no);
#ifndef IDC_HAND
#define IDC_HAND MAKEINTRESOURCE(32649)
@@ -185,11 +186,7 @@ MonitorFromWindow_Proc monitor_from_window_fn = NULL;
EnumDisplayMonitors_Proc enum_display_monitors_fn = NULL;
GetTitleBarInfo_Proc get_title_bar_info_fn = NULL;
-#ifdef NTGUI_UNICODE
-#define unicode_append_menu AppendMenuW
-#else /* !NTGUI_UNICODE */
extern AppendMenuW_Proc unicode_append_menu;
-#endif /* NTGUI_UNICODE */
/* Flag to selectively ignore WM_IME_CHAR messages. */
static int ignore_ime_char = 0;
@@ -216,7 +213,6 @@ static HWND w32_visible_system_caret_hwnd;
static int w32_unicode_gui;
/* From w32menu.c */
-extern HMENU current_popup_menu;
int menubar_in_use = 0;
/* From w32uniscribe.c */
@@ -251,6 +247,40 @@ HINSTANCE hinst = NULL;
static unsigned int sound_type = 0xFFFFFFFF;
#define MB_EMACS_SILENT (0xFFFFFFFF - 1)
+/* Special virtual key code for indicating "any" key. */
+#define VK_ANY 0xFF
+
+#ifndef WM_WTSSESSION_CHANGE
+/* 32-bit MinGW does not define these constants. */
+# define WM_WTSSESSION_CHANGE 0x02B1
+# define WTS_SESSION_LOCK 0x7
+#endif
+
+/* Keyboard hook state data. */
+static struct
+{
+ int hook_count; /* counter, if several windows are created */
+ HHOOK hook; /* hook handle */
+ HWND console; /* console window handle */
+
+ int lwindown; /* Left Windows key currently pressed (and hooked) */
+ int rwindown; /* Right Windows key currently pressed (and hooked) */
+ int winsdown; /* Number of handled keys currently pressed */
+ int send_win_up; /* Pass through the keyup for this Windows key press? */
+ int suppress_lone; /* Suppress simulated Windows keydown-keyup for this press? */
+ int winseen; /* Windows keys seen during this press? */
+
+ char alt_hooked[256]; /* hook Alt+[this key]? */
+ char lwin_hooked[256]; /* hook left Win+[this key]? */
+ char rwin_hooked[256]; /* hook right Win+[this key]? */
+} kbdhook;
+typedef HWND (WINAPI *GetConsoleWindow_Proc) (void);
+
+typedef BOOL (WINAPI *IsDebuggerPresent_Proc) (void);
+
+/* stdin, from w32console.c */
+extern HANDLE keyboard_handle;
+
/* Let the user specify a display with a frame.
nil stands for the selected frame--or, if that is not a w32 frame,
the first display on the list. */
@@ -327,10 +357,7 @@ void x_set_cursor_type (struct frame *, Lisp_Object, Lisp_Object);
void x_set_icon_type (struct frame *, Lisp_Object, Lisp_Object);
void x_set_icon_name (struct frame *, Lisp_Object, Lisp_Object);
void x_explicitly_set_name (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
void x_set_title (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_tool_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_internal_border_width (struct frame *f, Lisp_Object, Lisp_Object);
/* Store the screen positions of frame F into XPTR and YPTR.
@@ -453,7 +480,7 @@ if the entry is new. */)
/* The default colors for the w32 color map */
typedef struct colormap_t
{
- char *name;
+ const char *name;
COLORREF colorref;
} colormap_t;
@@ -791,7 +818,7 @@ add_system_logical_colors_to_map (Lisp_Object *system_colors)
NULL, NULL, (LPBYTE)color_buffer, &color_size)
== ERROR_SUCCESS)
{
- int r, g, b;
+ unsigned r, g, b;
if (sscanf (color_buffer, " %u %u %u", &r, &g, &b) == 3)
*system_colors = Fcons (Fcons (build_string (full_name_buffer),
make_number (RGB (r, g, b))),
@@ -1206,7 +1233,7 @@ w32_defined_color (struct frame *f, const char *color, XColor *color_def,
If F is not a color screen, return DEF (default) regardless of what
ARG says. */
-int
+static int
x_decode_color (struct frame *f, Lisp_Object arg, int def)
{
XColor cdef;
@@ -1489,7 +1516,7 @@ x_set_cursor_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
Note that this does not fully take effect if done before
F has a window. */
-void
+static void
x_set_border_pixel (struct frame *f, int pix)
{
@@ -1600,7 +1627,7 @@ x_set_icon_name (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
#endif
}
-void
+static void
x_clear_under_internal_border (struct frame *f)
{
int border = FRAME_INTERNAL_BORDER_WIDTH (f);
@@ -1633,7 +1660,7 @@ x_set_internal_border_width (struct frame *f, Lisp_Object arg, Lisp_Object oldva
if (border != FRAME_INTERNAL_BORDER_WIDTH (f))
{
- FRAME_INTERNAL_BORDER_WIDTH (f) = border;
+ f->internal_border_width = border;
if (FRAME_X_WINDOW (f) != 0)
{
@@ -1826,7 +1853,7 @@ w32_set_title_bar_text (struct frame *f, Lisp_Object name)
suggesting a new name, which lisp code should override; if
F->explicit_name is set, ignore the new name; otherwise, set it. */
-void
+static void
x_set_name (struct frame *f, Lisp_Object name, bool explicit)
{
/* Make sure that requests from lisp code override requests from
@@ -1931,6 +1958,8 @@ x_set_scroll_bar_default_height (struct frame *f)
/* Subroutines for creating a frame. */
+Cursor w32_load_cursor (LPCTSTR);
+
Cursor
w32_load_cursor (LPCTSTR name)
{
@@ -2074,6 +2103,365 @@ my_post_msg (W32Msg * wmsg, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
post_msg (wmsg);
}
+#ifdef WINDOWSNT
+/* The Windows keyboard hook callback. */
+static LRESULT CALLBACK
+funhook (int code, WPARAM w, LPARAM l)
+{
+ INPUT inputs[2];
+ HWND focus = GetFocus ();
+ int console = 0;
+ KBDLLHOOKSTRUCT const *hs = (KBDLLHOOKSTRUCT*)l;
+
+ if (code < 0 || (hs->flags & LLKHF_INJECTED))
+ return CallNextHookEx (0, code, w, l);
+
+ /* The keyboard hook sees keyboard input on all processes (except
+ elevated ones, when Emacs itself is not elevated). As such,
+ care must be taken to only filter out keyboard input when Emacs
+ itself is on the foreground.
+
+ GetFocus returns a non-NULL window if another application is active,
+ and always for a console Emacs process. For a console Emacs, determine
+ focus by checking if the current foreground window is the process's
+ console window. */
+ if (focus == NULL && kbdhook.console != NULL)
+ {
+ if (GetForegroundWindow () == kbdhook.console)
+ {
+ focus = kbdhook.console;
+ console = 1;
+ }
+ }
+
+ /* First, check hooks for the left and right Windows keys. */
+ if (hs->vkCode == VK_LWIN || hs->vkCode == VK_RWIN)
+ {
+ if (focus != NULL && (w == WM_KEYDOWN || w == WM_SYSKEYDOWN))
+ {
+ /* The key is being pressed in an Emacs window. */
+ if (hs->vkCode == VK_LWIN && !kbdhook.lwindown)
+ {
+ kbdhook.lwindown = 1;
+ kbdhook.winseen = 1;
+ kbdhook.winsdown++;
+ }
+ else if (hs->vkCode == VK_RWIN && !kbdhook.rwindown)
+ {
+ kbdhook.rwindown = 1;
+ kbdhook.winseen = 1;
+ kbdhook.winsdown++;
+ }
+ /* Returning 1 here drops the keypress without further processing.
+ If the keypress was allowed to go through, the normal Windows
+ hotkeys would take over. */
+ return 1;
+ }
+ else if (kbdhook.winsdown > 0 && (w == WM_KEYUP || w == WM_SYSKEYUP))
+ {
+ /* A key that has been captured earlier is being released now. */
+ if (hs->vkCode == VK_LWIN && kbdhook.lwindown)
+ {
+ kbdhook.lwindown = 0;
+ kbdhook.winsdown--;
+ }
+ else if (hs->vkCode == VK_RWIN && kbdhook.rwindown)
+ {
+ kbdhook.rwindown = 0;
+ kbdhook.winsdown--;
+ }
+ if (kbdhook.winsdown == 0 && kbdhook.winseen)
+ {
+ if (!kbdhook.suppress_lone)
+ {
+ /* The Windows key was pressed, then released,
+ without any other key pressed simultaneously.
+ Normally, this opens the Start menu, but the user
+ can prevent this by setting the
+ w32-pass-[lr]window-to-system variable to
+ NIL. */
+ if ((hs->vkCode == VK_LWIN && !NILP (Vw32_pass_lwindow_to_system)) ||
+ (hs->vkCode == VK_RWIN && !NILP (Vw32_pass_rwindow_to_system)))
+ {
+ /* Not prevented - Simulate the keypress to the system. */
+ memset (inputs, 0, sizeof (inputs));
+ inputs[0].type = INPUT_KEYBOARD;
+ inputs[0].ki.wVk = hs->vkCode;
+ inputs[0].ki.wScan = hs->vkCode;
+ inputs[0].ki.dwFlags = KEYEVENTF_EXTENDEDKEY;
+ inputs[0].ki.time = 0;
+ inputs[1].type = INPUT_KEYBOARD;
+ inputs[1].ki.wVk = hs->vkCode;
+ inputs[1].ki.wScan = hs->vkCode;
+ inputs[1].ki.dwFlags
+ = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP;
+ inputs[1].ki.time = 0;
+ SendInput (2, inputs, sizeof (INPUT));
+ }
+ else if (focus != NULL)
+ {
+ /* When not passed to system, must simulate privately to Emacs. */
+ PostMessage (focus, WM_SYSKEYDOWN, hs->vkCode, 0);
+ PostMessage (focus, WM_SYSKEYUP, hs->vkCode, 0);
+ }
+ }
+ }
+ if (kbdhook.winsdown == 0)
+ {
+ /* No Windows keys pressed anymore - clear the state flags. */
+ kbdhook.suppress_lone = 0;
+ kbdhook.winseen = 0;
+ }
+ if (!kbdhook.send_win_up)
+ {
+ /* Swallow this release message, as not to confuse
+ applications who did not get to see the original
+ WM_KEYDOWN message either. */
+ return 1;
+ }
+ kbdhook.send_win_up = 0;
+ }
+ }
+ else if (kbdhook.winsdown > 0)
+ {
+ /* Some other key was pressed while a captured Win key is down.
+ This is either an Emacs registered hotkey combination, or a
+ system hotkey. */
+ if ((kbdhook.lwindown && kbdhook.lwin_hooked[hs->vkCode]) ||
+ (kbdhook.rwindown && kbdhook.rwin_hooked[hs->vkCode]))
+ {
+ /* Hooked Win-x combination, do not pass the keypress to Windows. */
+ kbdhook.suppress_lone = 1;
+ }
+ else if (!kbdhook.suppress_lone)
+ {
+ /* Unhooked S-x combination; simulate the combination now
+ (will be seen by the system). */
+ memset (inputs, 0, sizeof (inputs));
+ inputs[0].type = INPUT_KEYBOARD;
+ inputs[0].ki.wVk = kbdhook.lwindown ? VK_LWIN : VK_RWIN;
+ inputs[0].ki.wScan = kbdhook.lwindown ? VK_LWIN : VK_RWIN;
+ inputs[0].ki.dwFlags = KEYEVENTF_EXTENDEDKEY;
+ inputs[0].ki.time = 0;
+ inputs[1].type = INPUT_KEYBOARD;
+ inputs[1].ki.wVk = hs->vkCode;
+ inputs[1].ki.wScan = hs->scanCode;
+ inputs[1].ki.dwFlags =
+ (hs->flags & LLKHF_EXTENDED) ? KEYEVENTF_EXTENDEDKEY : 0;
+ inputs[1].ki.time = 0;
+ SendInput (2, inputs, sizeof (INPUT));
+ /* Stop processing of this Win sequence here; the
+ corresponding keyup messages will come through the normal
+ channel when the keys are released. */
+ kbdhook.suppress_lone = 1;
+ kbdhook.send_win_up = 1;
+ /* Swallow the original keypress (as we want the Win key
+ down message simulated above to precede this real message). */
+ return 1;
+ }
+ }
+
+ /* Next, handle the registered Alt-* combinations. */
+ if ((w == WM_SYSKEYDOWN || w == WM_KEYDOWN)
+ && kbdhook.alt_hooked[hs->vkCode]
+ && focus != NULL
+ && (GetAsyncKeyState (VK_MENU) & 0x8000))
+ {
+ /* Prevent the system from getting this Alt-* key - suppress the
+ message and post as a normal keypress to Emacs. */
+ if (console)
+ {
+ INPUT_RECORD rec;
+ DWORD n;
+ rec.EventType = KEY_EVENT;
+ rec.Event.KeyEvent.bKeyDown = TRUE;
+ rec.Event.KeyEvent.wVirtualKeyCode = hs->vkCode;
+ rec.Event.KeyEvent.wVirtualScanCode = hs->scanCode;
+ rec.Event.KeyEvent.uChar.UnicodeChar = 0;
+ rec.Event.KeyEvent.dwControlKeyState =
+ ((GetAsyncKeyState (VK_LMENU) & 0x8000) ? LEFT_ALT_PRESSED : 0)
+ | ((GetAsyncKeyState (VK_RMENU) & 0x8000) ? RIGHT_ALT_PRESSED : 0)
+ | ((GetAsyncKeyState (VK_LCONTROL) & 0x8000) ? LEFT_CTRL_PRESSED : 0)
+ | ((GetAsyncKeyState (VK_RCONTROL) & 0x8000) ? RIGHT_CTRL_PRESSED : 0)
+ | ((GetAsyncKeyState (VK_SHIFT) & 0x8000) ? SHIFT_PRESSED : 0)
+ | ((hs->flags & LLKHF_EXTENDED) ? ENHANCED_KEY : 0);
+ if (w32_console_unicode_input)
+ WriteConsoleInputW (keyboard_handle, &rec, 1, &n);
+ else
+ WriteConsoleInputA (keyboard_handle, &rec, 1, &n);
+ }
+ else
+ PostMessage (focus, w, hs->vkCode, 1 | (1<<29));
+ return 1;
+ }
+
+ /* The normal case - pass the message through. */
+ return CallNextHookEx (0, code, w, l);
+}
+
+/* Set up the hook; can be called several times, with matching
+ remove_w32_kbdhook calls. */
+void
+setup_w32_kbdhook (void)
+{
+ kbdhook.hook_count++;
+
+ /* This hook gets in the way of debugging, since when Emacs stops,
+ its input thread stops, and there's nothing to process keyboard
+ events, whereas this hook is global, and is invoked in the
+ context of the thread that installed it. So we don't install the
+ hook if the process is being debugged. */
+ if (w32_kbdhook_active)
+ {
+ IsDebuggerPresent_Proc is_debugger_present = (IsDebuggerPresent_Proc)
+ GetProcAddress (GetModuleHandle ("kernel32.dll"), "IsDebuggerPresent");
+ if (is_debugger_present && is_debugger_present ())
+ return;
+ }
+
+ /* Hooking is only available on NT architecture systems, as
+ indicated by the w32_kbdhook_active variable. */
+ if (kbdhook.hook_count == 1 && w32_kbdhook_active)
+ {
+ /* Get the handle of the Emacs console window. As the
+ GetConsoleWindow function is only available on Win2000+, a
+ hackish workaround described in Microsoft KB article 124103
+ (https://support.microsoft.com/en-us/kb/124103) is used for
+ NT 4 systems. */
+ GetConsoleWindow_Proc get_console = (GetConsoleWindow_Proc)
+ GetProcAddress (GetModuleHandle ("kernel32.dll"), "GetConsoleWindow");
+
+ if (get_console != NULL)
+ kbdhook.console = get_console ();
+ else
+ {
+ GUID guid;
+ wchar_t *oldTitle = malloc (1024 * sizeof(wchar_t));
+ wchar_t newTitle[64];
+ int i;
+
+ CoCreateGuid (&guid);
+ StringFromGUID2 (&guid, newTitle, 64);
+ if (newTitle != NULL)
+ {
+ GetConsoleTitleW (oldTitle, 1024);
+ SetConsoleTitleW (newTitle);
+ for (i = 0; i < 25; i++)
+ {
+ Sleep (40);
+ kbdhook.console = FindWindowW (NULL, newTitle);
+ if (kbdhook.console != NULL)
+ break;
+ }
+ SetConsoleTitleW (oldTitle);
+ }
+ free (oldTitle);
+ }
+
+ /* Set the hook. */
+ kbdhook.hook = SetWindowsHookEx (WH_KEYBOARD_LL, funhook,
+ GetModuleHandle (NULL), 0);
+ }
+}
+
+/* Remove the hook. */
+void
+remove_w32_kbdhook (void)
+{
+ kbdhook.hook_count--;
+ if (kbdhook.hook_count == 0 && w32_kbdhook_active)
+ {
+ UnhookWindowsHookEx (kbdhook.hook);
+ kbdhook.hook = NULL;
+ }
+}
+#endif /* WINDOWSNT */
+
+/* Mark a specific key combination as hooked, preventing it to be
+ handled by the system. */
+static void
+hook_w32_key (int hook, int modifier, int vkey)
+{
+ char *tbl = NULL;
+
+ switch (modifier)
+ {
+ case VK_MENU:
+ tbl = kbdhook.alt_hooked;
+ break;
+ case VK_LWIN:
+ tbl = kbdhook.lwin_hooked;
+ break;
+ case VK_RWIN:
+ tbl = kbdhook.rwin_hooked;
+ break;
+ }
+
+ if (tbl != NULL && vkey >= 0 && vkey <= 255)
+ {
+ /* VK_ANY hooks all keys for this modifier */
+ if (vkey == VK_ANY)
+ memset (tbl, (char)hook, 256);
+ else
+ tbl[vkey] = (char)hook;
+ /* Alt-<modifier>s should go through */
+ kbdhook.alt_hooked[VK_MENU] = 0;
+ kbdhook.alt_hooked[VK_LMENU] = 0;
+ kbdhook.alt_hooked[VK_RMENU] = 0;
+ kbdhook.alt_hooked[VK_CONTROL] = 0;
+ kbdhook.alt_hooked[VK_LCONTROL] = 0;
+ kbdhook.alt_hooked[VK_RCONTROL] = 0;
+ kbdhook.alt_hooked[VK_SHIFT] = 0;
+ kbdhook.alt_hooked[VK_LSHIFT] = 0;
+ kbdhook.alt_hooked[VK_RSHIFT] = 0;
+ }
+}
+
+#ifdef WINDOWSNT
+/* Check the current Win key pressed state. */
+int
+check_w32_winkey_state (int vkey)
+{
+ /* The hook code handles grabbing of the Windows keys and Alt-* key
+ combinations reserved by the system. Handling Alt is a bit
+ easier, as Windows intends Alt-* shortcuts for application use in
+ Windows; hotkeys such as Alt-tab and Alt-escape are special
+ cases. Win-* hotkeys, on the other hand, are primarily meant for
+ system use.
+
+ As a result, when we want Emacs to be able to grab the Win-*
+ keys, we must swallow all Win key presses in a low-level keyboard
+ hook. Unfortunately, this means that the Emacs window procedure
+ (and console input handler) never see the keypresses either.
+ Thus, to check the modifier states properly, Emacs code must use
+ the check_w32_winkey_state function that uses the flags directly
+ updated by the hook callback. */
+ switch (vkey)
+ {
+ case VK_LWIN:
+ return kbdhook.lwindown;
+ case VK_RWIN:
+ return kbdhook.rwindown;
+ }
+ return 0;
+}
+#endif /* WINDOWSNT */
+
+/* Reset the keyboard hook state. Locking the workstation with Win-L
+ leaves the Win key(s) "down" from the hook's point of view - the
+ keyup event is never seen. Thus, this function must be called when
+ the system is locked. */
+static void
+reset_w32_kbdhook_state (void)
+{
+ kbdhook.lwindown = 0;
+ kbdhook.rwindown = 0;
+ kbdhook.winsdown = 0;
+ kbdhook.send_win_up = 0;
+ kbdhook.suppress_lone = 0;
+ kbdhook.winseen = 0;
+}
+
/* GetKeyState and MapVirtualKey on Windows 95 do not actually distinguish
between left and right keys as advertised. We test for this
support dynamically, and set a flag when the support is absent. If
@@ -2248,6 +2636,10 @@ modifier_set (int vkey)
else
return (GetKeyState (vkey) & 0x1);
}
+#ifdef WINDOWSNT
+ if (w32_kbdhook_active && (vkey == VK_LWIN || vkey == VK_RWIN))
+ return check_w32_winkey_state (vkey);
+#endif
if (!modifiers_recorded)
return (GetKeyState (vkey) & 0x8000);
@@ -2268,6 +2660,7 @@ modifier_set (int vkey)
/* Convert between the modifier bits W32 uses and the modifier bits
Emacs uses. */
+unsigned int w32_key_to_modifier (int);
unsigned int
w32_key_to_modifier (int key)
@@ -2366,6 +2759,8 @@ w32_get_key_modifiers (unsigned int wparam, unsigned int lparam)
return mods;
}
+unsigned int map_keypad_keys (unsigned int, unsigned int);
+
unsigned int
map_keypad_keys (unsigned int virt_key, unsigned int extended)
{
@@ -2390,7 +2785,9 @@ map_keypad_keys (unsigned int virt_key, unsigned int extended)
/* List of special key combinations which w32 would normally capture,
but Emacs should grab instead. Not directly visible to lisp, to
simplify synchronization. Each item is an integer encoding a virtual
- key code and modifier combination to capture. */
+ key code and modifier combination to capture.
+ Note: This code is not used if keyboard hooks are active
+ (Windows 2000 and later). */
static Lisp_Object w32_grabbed_keys;
#define HOTKEY(vk, mods) make_number (((vk) & 255) | ((mods) << 8))
@@ -2736,6 +3133,8 @@ cancel_all_deferred_msgs (void)
PostThreadMessage (dwWindowsThreadId, WM_NULL, 0, 0);
}
+DWORD WINAPI w32_msg_worker (void *);
+
DWORD WINAPI
w32_msg_worker (void *arg)
{
@@ -2954,7 +3353,7 @@ get_wm_chars (HWND aWnd, int *buf, int buflen, int ignore_ctrl, int ctrl,
Be ready to treat the case when this delivers WM_(SYS)DEADCHAR. */
static int after_deadkey = -1;
-int
+static int
deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, UINT wParam,
UINT lParam, int legacy_alt_meta)
{
@@ -2998,7 +3397,7 @@ deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, UINT wParam,
W32Msg wmsg;
DWORD console_modifiers = construct_console_modifiers ();
int *b = buf, strip_ExtraMods = 1, hairy = 0;
- char *type_CtrlAlt = NULL;
+ const char *type_CtrlAlt = NULL;
/* XXXX In fact, there may be another case when we need to do the same:
What happens if the string defined in the LIGATURES has length
@@ -3476,7 +3875,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
switch (wParam)
{
case VK_LWIN:
- if (NILP (Vw32_pass_lwindow_to_system))
+ if (!w32_kbdhook_active && NILP (Vw32_pass_lwindow_to_system))
{
/* Prevent system from acting on keyup (which opens the
Start menu if no other key was pressed) by simulating a
@@ -3495,7 +3894,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
return 0;
break;
case VK_RWIN:
- if (NILP (Vw32_pass_rwindow_to_system))
+ if (!w32_kbdhook_active && NILP (Vw32_pass_rwindow_to_system))
{
if (GetAsyncKeyState (wParam) & 1)
{
@@ -4352,10 +4751,12 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
case WM_SETFOCUS:
dpyinfo->faked_key = 0;
reset_modifiers ();
- register_hot_keys (hwnd);
+ if (!w32_kbdhook_active)
+ register_hot_keys (hwnd);
goto command;
case WM_KILLFOCUS:
- unregister_hot_keys (hwnd);
+ if (!w32_kbdhook_active)
+ unregister_hot_keys (hwnd);
button_state = 0;
ReleaseCapture ();
/* Relinquish the system caret. */
@@ -4384,15 +4785,34 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
goto dflt;
+#ifdef WINDOWSNT
+ case WM_CREATE:
+ setup_w32_kbdhook ();
+ goto dflt;
+#endif
+
case WM_DESTROY:
+#ifdef WINDOWSNT
+ remove_w32_kbdhook ();
+#endif
CoUninitialize ();
return 0;
+ case WM_WTSSESSION_CHANGE:
+ if (wParam == WTS_SESSION_LOCK)
+ reset_w32_kbdhook_state ();
+ goto dflt;
+
case WM_CLOSE:
wmsg.dwModifiers = w32_get_modifiers ();
my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
return 0;
+ case WM_ENDSESSION:
+ my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
+ /* If we return, the process will be terminated immediately. */
+ sleep (1000);
+
case WM_WINDOWPOSCHANGING:
/* Don't restrict the sizing of any kind of frames. If the window
manager doesn't, there's no reason to do it ourselves. */
@@ -4860,7 +5280,7 @@ x_default_font_parameter (struct frame *f, Lisp_Object parms)
if (!STRINGP (font))
{
int i;
- static char *names[]
+ static const char *names[]
= { "Courier New-10",
"-*-Courier-normal-r-*-*-13-*-*-*-c-*-iso8859-1",
"-*-Fixedsys-normal-r-*-*-12-*-*-*-c-*-iso8859-1",
@@ -4880,7 +5300,8 @@ x_default_font_parameter (struct frame *f, Lisp_Object parms)
{
/* Remember the explicit font parameter, so we can re-apply it after
we've applied the `default' face settings. */
- x_set_frame_parameters (f, Fcons (Fcons (Qfont_param, font_param), Qnil));
+ x_set_frame_parameters (f, Fcons (Fcons (Qfont_parameter, font_param),
+ Qnil));
}
x_default_parameter (f, parms, Qfont, font, "font", "Font", RES_TYPE_STRING);
}
@@ -5202,8 +5623,10 @@ This function is an internal primitive--use `make-frame' instead. */)
else if (! NILP (visibility))
x_make_frame_visible (f);
else
- /* Must have been Qnil. */
- ;
+ {
+ /* Must have been Qnil. */
+ ;
+ }
}
/* Initialize `default-minibuffer-frame' in case this is the first
@@ -5746,11 +6169,13 @@ SOUND is nil to use the normal beep. */)
return sound;
}
+#if 0 /* unused */
int
x_screen_planes (register struct frame *f)
{
return FRAME_DISPLAY_INFO (f)->n_planes;
}
+#endif
/* Return the display structure for the display named NAME.
Open a new connection if necessary. */
@@ -6056,8 +6481,6 @@ no value of TYPE (always string in the MS Windows case). */)
Tool tips
***********************************************************************/
-static Lisp_Object x_create_tip_frame (struct w32_display_info *,
- Lisp_Object, Lisp_Object);
static void compute_tip_xy (struct frame *, Lisp_Object, Lisp_Object,
Lisp_Object, int, int, int *, int *);
@@ -6092,8 +6515,7 @@ unwind_create_tip_frame (Lisp_Object frame)
/* Create a frame for a tooltip on the display described by DPYINFO.
- PARMS is a list of frame parameters. TEXT is the string to
- display in the tip frame. Value is the frame.
+ PARMS is a list of frame parameters. Value is the frame.
Note that functions called here, esp. x_default_parameter can
signal errors, for instance when a specified color name is
@@ -6101,8 +6523,7 @@ unwind_create_tip_frame (Lisp_Object frame)
when this happens. */
static Lisp_Object
-x_create_tip_frame (struct w32_display_info *dpyinfo,
- Lisp_Object parms, Lisp_Object text)
+x_create_tip_frame (struct w32_display_info *dpyinfo, Lisp_Object parms)
{
struct frame *f;
Lisp_Object frame;
@@ -6111,8 +6532,6 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
ptrdiff_t count = SPECPDL_INDEX ();
struct kboard *kb;
bool face_change_before = face_change;
- Lisp_Object buffer;
- struct buffer *old_buffer;
int x_width = 0, x_height = 0;
/* Use this general default value to start with until we know if
@@ -6136,23 +6555,9 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
frame = Qnil;
/* Make a frame without minibuffer nor mode-line. */
f = make_frame (false);
- f->wants_modeline = 0;
+ f->wants_modeline = false;
XSETFRAME (frame, f);
- AUTO_STRING (tip, " *tip*");
- buffer = Fget_buffer_create (tip);
- /* Use set_window_buffer instead of Fset_window_buffer (see
- discussion of bug#11984, bug#12025, bug#12026). */
- set_window_buffer (FRAME_ROOT_WINDOW (f), buffer, false, false);
- old_buffer = current_buffer;
- set_buffer_internal_1 (XBUFFER (buffer));
- bset_truncate_lines (current_buffer, Qnil);
- specbind (Qinhibit_read_only, Qt);
- specbind (Qinhibit_modification_hooks, Qt);
- Ferase_buffer ();
- Finsert (1, &text);
- set_buffer_internal_1 (old_buffer);
-
record_unwind_protect (unwind_create_tip_frame, frame);
/* By setting the output method, we're essentially saying that
@@ -6186,7 +6591,7 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
{
fset_name (f, name);
f->explicit_name = true;
- /* use the frame's title when getting resources for this frame. */
+ /* Use the frame's title when getting resources for this frame. */
specbind (Qx_resource_name, name);
}
@@ -6216,14 +6621,10 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
parms = Fcons (Fcons (Qinternal_border_width, value),
parms);
}
+
x_default_parameter (f, parms, Qinternal_border_width, make_number (1),
"internalBorderWidth", "internalBorderWidth",
RES_TYPE_NUMBER);
- x_default_parameter (f, parms, Qright_divider_width, make_number (0),
- NULL, NULL, RES_TYPE_NUMBER);
- x_default_parameter (f, parms, Qbottom_divider_width, make_number (0),
- NULL, NULL, RES_TYPE_NUMBER);
-
/* Also do the stuff which must be set before the window exists. */
x_default_parameter (f, parms, Qforeground_color, build_string ("black"),
"foreground", "Foreground", RES_TYPE_STRING);
@@ -6250,6 +6651,9 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
f->fringe_cols = 0;
f->left_fringe_width = 0;
f->right_fringe_width = 0;
+ /* No dividers on tip frame. */
+ f->right_divider_width = 0;
+ f->bottom_divider_width = 0;
block_input ();
my_create_tip_window (f);
@@ -6276,7 +6680,6 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
SET_FRAME_LINES (f, 0);
adjust_frame_size (f, width * FRAME_COLUMN_WIDTH (f),
height * FRAME_LINE_HEIGHT (f), 0, true, Qtip_frame);
-
/* Add `tooltip' frame parameter's default value. */
if (NILP (Fframe_parameter (frame, Qtooltip)))
Fmodify_frame_parameters (frame, Fcons (Fcons (Qtooltip, Qt), Qnil));
@@ -6294,8 +6697,6 @@ x_create_tip_frame (struct w32_display_info *dpyinfo,
Lisp_Object fg = Fframe_parameter (frame, Qforeground_color);
Lisp_Object colors = Qnil;
- /* Set tip_frame here, so that */
- tip_frame = frame;
call2 (Qface_set_after_frame_default, frame, Qnil);
if (!EQ (bg, Fframe_parameter (frame, Qbackground_color)))
@@ -6427,6 +6828,48 @@ compute_tip_xy (struct frame *f,
*root_x = min_x;
}
+/* Hide tooltip. Delete its frame if DELETE is true. */
+static Lisp_Object
+x_hide_tip (bool delete)
+{
+ if (!NILP (tip_timer))
+ {
+ call1 (Qcancel_timer, tip_timer);
+ tip_timer = Qnil;
+ }
+
+ if (NILP (tip_frame)
+ || (!delete && FRAMEP (tip_frame)
+ && !FRAME_VISIBLE_P (XFRAME (tip_frame))))
+ return Qnil;
+ else
+ {
+ ptrdiff_t count;
+ Lisp_Object was_open = Qnil;
+
+ count = SPECPDL_INDEX ();
+ specbind (Qinhibit_redisplay, Qt);
+ specbind (Qinhibit_quit, Qt);
+
+ if (FRAMEP (tip_frame))
+ {
+ if (delete)
+ {
+ delete_frame (tip_frame, Qnil);
+ tip_frame = Qnil;
+ }
+ else
+ x_make_frame_invisible (XFRAME (tip_frame));
+
+ was_open = Qt;
+ }
+ else
+ tip_frame = Qnil;
+
+ return unbind_to (count, was_open);
+ }
+}
+
DEFUN ("x-show-tip", Fx_show_tip, Sx_show_tip, 1, 6, 0,
doc: /* Show STRING in a \"tooltip\" window on frame FRAME.
@@ -6460,20 +6903,22 @@ A tooltip's maximum size is specified by `x-max-tooltip-size'.
Text larger than the specified size is clipped. */)
(Lisp_Object string, Lisp_Object frame, Lisp_Object parms, Lisp_Object timeout, Lisp_Object dx, Lisp_Object dy)
{
- struct frame *f;
+ struct frame *tip_f;
struct window *w;
int root_x, root_y;
struct buffer *old_buffer;
struct text_pos pos;
- int i, width, height;
- bool seen_reversed_p;
+ int width, height;
int old_windows_or_buffers_changed = windows_or_buffers_changed;
ptrdiff_t count = SPECPDL_INDEX ();
+ ptrdiff_t count_1;
+ Lisp_Object window, size;
+ AUTO_STRING (tip, " *tip*");
specbind (Qinhibit_redisplay, Qt);
CHECK_STRING (string);
- f = decode_window_system_frame (frame);
+ decode_window_system_frame (frame);
if (NILP (timeout))
timeout = make_number (5);
else
@@ -6492,91 +6937,155 @@ Text larger than the specified size is clipped. */)
if (NILP (last_show_tip_args))
last_show_tip_args = Fmake_vector (make_number (3), Qnil);
- if (!NILP (tip_frame))
+ if (FRAMEP (tip_frame) && FRAME_LIVE_P (XFRAME (tip_frame)))
{
Lisp_Object last_string = AREF (last_show_tip_args, 0);
Lisp_Object last_frame = AREF (last_show_tip_args, 1);
Lisp_Object last_parms = AREF (last_show_tip_args, 2);
- if (EQ (frame, last_frame)
- && !NILP (Fequal (last_string, string))
+ if (FRAME_VISIBLE_P (XFRAME (tip_frame))
+ && EQ (frame, last_frame)
+ && !NILP (Fequal_including_properties (last_string, string))
&& !NILP (Fequal (last_parms, parms)))
{
- struct frame *f = XFRAME (tip_frame);
-
/* Only DX and DY have changed. */
+ tip_f = XFRAME (tip_frame);
if (!NILP (tip_timer))
{
Lisp_Object timer = tip_timer;
+
tip_timer = Qnil;
call1 (Qcancel_timer, timer);
}
block_input ();
- compute_tip_xy (f, parms, dx, dy, FRAME_PIXEL_WIDTH (f),
- FRAME_PIXEL_HEIGHT (f), &root_x, &root_y);
+ compute_tip_xy (tip_f, parms, dx, dy, FRAME_PIXEL_WIDTH (tip_f),
+ FRAME_PIXEL_HEIGHT (tip_f), &root_x, &root_y);
/* Put tooltip in topmost group and in position. */
- SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOPMOST,
+ SetWindowPos (FRAME_W32_WINDOW (tip_f), HWND_TOPMOST,
root_x, root_y, 0, 0,
SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOOWNERZORDER);
/* Ensure tooltip is on top of other topmost windows (eg menus). */
- SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOP,
+ SetWindowPos (FRAME_W32_WINDOW (tip_f), HWND_TOP,
0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE
| SWP_NOACTIVATE | SWP_NOOWNERZORDER);
+ /* Let redisplay know that we have made the frame visible already. */
+ SET_FRAME_VISIBLE (tip_f, 1);
+ ShowWindow (FRAME_W32_WINDOW (tip_f), SW_SHOWNOACTIVATE);
unblock_input ();
+
goto start_timer;
}
- }
+ else if (tooltip_reuse_hidden_frame && EQ (frame, last_frame))
+ {
+ bool delete = false;
+ Lisp_Object tail, elt, parm, last;
+
+ /* Check if every parameter in PARMS has the same value in
+ last_parms. This may destruct last_parms which, however,
+ will be recreated below. */
+ for (tail = parms; CONSP (tail); tail = XCDR (tail))
+ {
+ elt = XCAR (tail);
+ parm = Fcar (elt);
+ /* The left, top, right and bottom parameters are handled
+ by compute_tip_xy so they can be ignored here. */
+ if (!EQ (parm, Qleft) && !EQ (parm, Qtop)
+ && !EQ (parm, Qright) && !EQ (parm, Qbottom))
+ {
+ last = Fassq (parm, last_parms);
+ if (NILP (Fequal (Fcdr (elt), Fcdr (last))))
+ {
+ /* We lost, delete the old tooltip. */
+ delete = true;
+ break;
+ }
+ else
+ last_parms = call2 (Qassq_delete_all, parm, last_parms);
+ }
+ else
+ last_parms = call2 (Qassq_delete_all, parm, last_parms);
+ }
+
+ /* Now check if there's a parameter left in last_parms with a
+ non-nil value. */
+ for (tail = last_parms; CONSP (tail); tail = XCDR (tail))
+ {
+ elt = XCAR (tail);
+ parm = Fcar (elt);
+ if (!EQ (parm, Qleft) && !EQ (parm, Qtop) && !EQ (parm, Qright)
+ && !EQ (parm, Qbottom) && !NILP (Fcdr (elt)))
+ {
+ /* We lost, delete the old tooltip. */
+ delete = true;
+ break;
+ }
+ }
- /* Hide a previous tip, if any. */
- Fx_hide_tip ();
+ x_hide_tip (delete);
+ }
+ else
+ x_hide_tip (true);
+ }
+ else
+ x_hide_tip (true);
ASET (last_show_tip_args, 0, string);
ASET (last_show_tip_args, 1, frame);
ASET (last_show_tip_args, 2, parms);
- /* Add default values to frame parameters. */
- if (NILP (Fassq (Qname, parms)))
- parms = Fcons (Fcons (Qname, build_string ("tooltip")), parms);
- if (NILP (Fassq (Qinternal_border_width, parms)))
- parms = Fcons (Fcons (Qinternal_border_width, make_number (3)), parms);
- if (NILP (Fassq (Qright_divider_width, parms)))
- parms = Fcons (Fcons (Qright_divider_width, make_number (0)), parms);
- if (NILP (Fassq (Qbottom_divider_width, parms)))
- parms = Fcons (Fcons (Qbottom_divider_width, make_number (0)), parms);
- if (NILP (Fassq (Qborder_width, parms)))
- parms = Fcons (Fcons (Qborder_width, make_number (1)), parms);
- if (NILP (Fassq (Qborder_color, parms)))
- parms = Fcons (Fcons (Qborder_color, build_string ("lightyellow")), parms);
- if (NILP (Fassq (Qbackground_color, parms)))
- parms = Fcons (Fcons (Qbackground_color, build_string ("lightyellow")),
- parms);
-
/* Block input until the tip has been fully drawn, to avoid crashes
when drawing tips in menus. */
block_input ();
- /* Create a frame for the tooltip, and record it in the global
- variable tip_frame. */
- frame = x_create_tip_frame (FRAME_DISPLAY_INFO (f), parms, string);
- f = XFRAME (frame);
+ if (!FRAMEP (tip_frame) || !FRAME_LIVE_P (XFRAME (tip_frame)))
+ {
+ /* Add default values to frame parameters. */
+ if (NILP (Fassq (Qname, parms)))
+ parms = Fcons (Fcons (Qname, build_string ("tooltip")), parms);
+ if (NILP (Fassq (Qinternal_border_width, parms)))
+ parms = Fcons (Fcons (Qinternal_border_width, make_number (3)), parms);
+ if (NILP (Fassq (Qborder_width, parms)))
+ parms = Fcons (Fcons (Qborder_width, make_number (1)), parms);
+ if (NILP (Fassq (Qborder_color, parms)))
+ parms = Fcons (Fcons (Qborder_color, build_string ("lightyellow")), parms);
+ if (NILP (Fassq (Qbackground_color, parms)))
+ parms = Fcons (Fcons (Qbackground_color, build_string ("lightyellow")),
+ parms);
- /* Set up the frame's root window. */
- w = XWINDOW (FRAME_ROOT_WINDOW (f));
+ /* Create a frame for the tooltip, and record it in the global
+ variable tip_frame. */
+ struct frame *f; /* The value is unused. */
+ if (NILP (tip_frame = x_create_tip_frame (FRAME_DISPLAY_INFO (f), parms)))
+ {
+ /* Creating the tip frame failed. */
+ unblock_input ();
+ return unbind_to (count, Qnil);
+ }
+ }
+
+ tip_f = XFRAME (tip_frame);
+ window = FRAME_ROOT_WINDOW (tip_f);
+ set_window_buffer (window, Fget_buffer_create (tip), false, false);
+ w = XWINDOW (window);
+ w->pseudo_window_p = true;
+
+ /* Set up the frame's root window. Note: The following code does not
+ try to size the window or its frame correctly. Its only purpose is
+ to make the subsequent text size calculations work. The right
+ sizes should get installed when the toolkit gets back to us. */
w->left_col = 0;
w->top_line = 0;
w->pixel_left = 0;
w->pixel_top = 0;
if (CONSP (Vx_max_tooltip_size)
- && INTEGERP (XCAR (Vx_max_tooltip_size))
- && XINT (XCAR (Vx_max_tooltip_size)) > 0
- && INTEGERP (XCDR (Vx_max_tooltip_size))
- && XINT (XCDR (Vx_max_tooltip_size)) > 0)
+ && RANGED_INTEGERP (1, XCAR (Vx_max_tooltip_size), INT_MAX)
+ && RANGED_INTEGERP (1, XCDR (Vx_max_tooltip_size), INT_MAX))
{
w->total_cols = XFASTINT (XCAR (Vx_max_tooltip_size));
w->total_lines = XFASTINT (XCDR (Vx_max_tooltip_size));
@@ -6587,164 +7096,71 @@ Text larger than the specified size is clipped. */)
w->total_lines = 40;
}
- w->pixel_width = w->total_cols * FRAME_COLUMN_WIDTH (f);
- w->pixel_height = w->total_lines * FRAME_LINE_HEIGHT (f);
+ w->pixel_width = w->total_cols * FRAME_COLUMN_WIDTH (tip_f);
+ w->pixel_height = w->total_lines * FRAME_LINE_HEIGHT (tip_f);
+ FRAME_TOTAL_COLS (tip_f) = WINDOW_TOTAL_COLS (w);
+ adjust_frame_glyphs (tip_f);
- FRAME_TOTAL_COLS (f) = WINDOW_TOTAL_COLS (w);
- adjust_frame_glyphs (f);
- w->pseudo_window_p = true;
-
- /* Display the tooltip text in a temporary buffer. */
+ /* Insert STRING into the root window's buffer and fit the frame to
+ the buffer. */
+ count_1 = SPECPDL_INDEX ();
old_buffer = current_buffer;
- set_buffer_internal_1 (XBUFFER (XWINDOW (FRAME_ROOT_WINDOW (f))->contents));
+ set_buffer_internal_1 (XBUFFER (w->contents));
bset_truncate_lines (current_buffer, Qnil);
+ specbind (Qinhibit_read_only, Qt);
+ specbind (Qinhibit_modification_hooks, Qt);
+ specbind (Qinhibit_point_motion_hooks, Qt);
+ Ferase_buffer ();
+ Finsert (1, &string);
clear_glyph_matrix (w->desired_matrix);
clear_glyph_matrix (w->current_matrix);
SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
- try_window (FRAME_ROOT_WINDOW (f), pos, TRY_WINDOW_IGNORE_FONTS_CHANGE);
-
- /* Compute width and height of the tooltip. */
- width = height = 0;
- seen_reversed_p = false;
- for (i = 0; i < w->desired_matrix->nrows; ++i)
- {
- struct glyph_row *row = &w->desired_matrix->rows[i];
- struct glyph *last;
- int row_width;
-
- /* Stop at the first empty row at the end. */
- if (!row->enabled_p || !MATRIX_ROW_DISPLAYS_TEXT_P (row))
- break;
-
- /* Let the row go over the full width of the frame. */
- row->full_width_p = true;
-
- row_width = row->pixel_width;
- if (row->used[TEXT_AREA])
- {
- if (!row->reversed_p)
- {
- /* There's a glyph at the end of rows that is used to
- place the cursor there. Don't include the width of
- this glyph. */
- last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1];
- if (NILP (last->object))
- row_width -= last->pixel_width;
- }
- else
- {
- /* There could be a stretch glyph at the beginning of R2L
- rows that is produced by extend_face_to_end_of_line.
- Don't count that glyph. */
- struct glyph *g = row->glyphs[TEXT_AREA];
-
- if (g->type == STRETCH_GLYPH && NILP (g->object))
- {
- row_width -= g->pixel_width;
- seen_reversed_p = true;
- }
- }
- }
-
- height += row->height;
- width = max (width, row_width);
- }
-
- /* If we've seen partial-length R2L rows, we need to re-adjust the
- tool-tip frame width and redisplay it again, to avoid over-wide
- tips due to the stretch glyph that extends R2L lines to full
- width of the frame. */
- if (seen_reversed_p)
- {
- /* PXW: Why do we do the pixel-to-cols conversion only if
- seen_reversed_p holds? Don't we have to set other fields of
- the window/frame structure?
-
- w->total_cols and FRAME_TOTAL_COLS want the width in columns,
- not in pixels. */
- w->pixel_width = width;
- width /= WINDOW_FRAME_COLUMN_WIDTH (w);
- w->total_cols = width;
- FRAME_TOTAL_COLS (f) = width;
- SET_FRAME_WIDTH (f, width);
- adjust_frame_glyphs (f);
- w->pseudo_window_p = 1;
- clear_glyph_matrix (w->desired_matrix);
- clear_glyph_matrix (w->current_matrix);
- try_window (FRAME_ROOT_WINDOW (f), pos, TRY_WINDOW_IGNORE_FONTS_CHANGE);
- width = height = 0;
- /* Recompute width and height of the tooltip. */
- for (i = 0; i < w->desired_matrix->nrows; ++i)
- {
- struct glyph_row *row = &w->desired_matrix->rows[i];
- struct glyph *last;
- int row_width;
-
- if (!row->enabled_p || !MATRIX_ROW_DISPLAYS_TEXT_P (row))
- break;
- row->full_width_p = true;
- row_width = row->pixel_width;
- if (row->used[TEXT_AREA] && !row->reversed_p)
- {
- last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1];
- if (NILP (last->object))
- row_width -= last->pixel_width;
- }
-
- height += row->height;
- width = max (width, row_width);
- }
- }
-
- /* Add the frame's internal border to the width and height the w32
- window should have. */
- height += 2 * FRAME_INTERNAL_BORDER_WIDTH (f);
- width += 2 * FRAME_INTERNAL_BORDER_WIDTH (f);
-
- /* Move the tooltip window where the mouse pointer is. Resize and
- show it.
-
- PXW: This should use the frame's pixel coordinates. */
- compute_tip_xy (f, parms, dx, dy, width, height, &root_x, &root_y);
-
+ try_window (window, pos, TRY_WINDOW_IGNORE_FONTS_CHANGE);
+ /* Calculate size of tooltip window. */
+ size = Fwindow_text_pixel_size (window, Qnil, Qnil, Qnil,
+ make_number (w->pixel_height), Qnil);
+ /* Add the frame's internal border to calculated size. */
+ width = XINT (Fcar (size)) + 2 * FRAME_INTERNAL_BORDER_WIDTH (tip_f);
+ height = XINT (Fcdr (size)) + 2 * FRAME_INTERNAL_BORDER_WIDTH (tip_f);
+ /* Calculate position of tooltip frame. */
+ compute_tip_xy (tip_f, parms, dx, dy, width, height, &root_x, &root_y);
+
+ /* Show tooltip frame. */
{
- /* Adjust Window size to take border into account. */
RECT rect;
+ int pad = (NUMBERP (Vw32_tooltip_extra_pixels)
+ ? max (0, XINT (Vw32_tooltip_extra_pixels))
+ : FRAME_COLUMN_WIDTH (tip_f));
+
rect.left = rect.top = 0;
rect.right = width;
rect.bottom = height;
- AdjustWindowRect (&rect, f->output_data.w32->dwStyle, false);
-
- /* Position and size tooltip, and put it in the topmost group.
- The add-on of FRAME_COLUMN_WIDTH to the 5th argument is a
- peculiarity of w32 display: without it, some fonts cause the
- last character of the tip to be truncated or wrapped around to
- the next line. */
- SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOPMOST,
+ AdjustWindowRect (&rect, tip_f->output_data.w32->dwStyle,
+ FRAME_EXTERNAL_MENU_BAR (tip_f));
+
+ /* Position and size tooltip and put it in the topmost group. */
+ SetWindowPos (FRAME_W32_WINDOW (tip_f), HWND_TOPMOST,
root_x, root_y,
- rect.right - rect.left + FRAME_COLUMN_WIDTH (f),
+ rect.right - rect.left + pad,
rect.bottom - rect.top, SWP_NOACTIVATE | SWP_NOOWNERZORDER);
/* Ensure tooltip is on top of other topmost windows (eg menus). */
- SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOP,
+ SetWindowPos (FRAME_W32_WINDOW (tip_f), HWND_TOP,
0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE
| SWP_NOACTIVATE | SWP_NOOWNERZORDER);
/* Let redisplay know that we have made the frame visible already. */
- SET_FRAME_VISIBLE (f, 1);
+ SET_FRAME_VISIBLE (tip_f, 1);
- ShowWindow (FRAME_W32_WINDOW (f), SW_SHOWNOACTIVATE);
+ ShowWindow (FRAME_W32_WINDOW (tip_f), SW_SHOWNOACTIVATE);
}
- /* Draw into the window. */
w->must_be_updated_p = true;
update_single_window (w);
-
- unblock_input ();
-
- /* Restore original current buffer. */
set_buffer_internal_1 (old_buffer);
+ unbind_to (count_1, Qnil);
+ unblock_input ();
windows_or_buffers_changed = old_windows_or_buffers_changed;
start_timer:
@@ -6761,31 +7177,7 @@ DEFUN ("x-hide-tip", Fx_hide_tip, Sx_hide_tip, 0, 0, 0,
Value is t if tooltip was open, nil otherwise. */)
(void)
{
- ptrdiff_t count;
- Lisp_Object deleted, frame, timer;
-
- /* Return quickly if nothing to do. */
- if (NILP (tip_timer) && NILP (tip_frame))
- return Qnil;
-
- frame = tip_frame;
- timer = tip_timer;
- tip_frame = tip_timer = deleted = Qnil;
-
- count = SPECPDL_INDEX ();
- specbind (Qinhibit_redisplay, Qt);
- specbind (Qinhibit_quit, Qt);
-
- if (!NILP (timer))
- call1 (Qcancel_timer, timer);
-
- if (FRAMEP (frame))
- {
- delete_frame (frame, Qnil);
- deleted = Qt;
- }
-
- return unbind_to (count, deleted);
+ return x_hide_tip (!tooltip_reuse_hidden_frame);
}
/***********************************************************************
@@ -6912,7 +7304,9 @@ value of DIR as in previous invocations; this is standard Windows behavior. */)
{
/* Filter index: 1: All Files, 2: Directories only */
static const wchar_t filter_w[] = L"All Files (*.*)\0*.*\0Directories\0*|*\0";
+#ifndef NTGUI_UNICODE
static const char filter_a[] = "All Files (*.*)\0*.*\0Directories\0*|*\0";
+#endif
Lisp_Object filename = default_filename;
struct frame *f = SELECTED_FRAME ();
@@ -7190,7 +7584,7 @@ value of DIR as in previous invocations; this is standard Windows behavior. */)
/* Make "Cancel" equivalent to C-g. */
if (NILP (filename))
- Fsignal (Qquit, Qnil);
+ quit ();
return filename;
}
@@ -7653,19 +8047,34 @@ lookup_vk_code (char *key)
&& strcmp (lispy_function_keys[i], key) == 0)
return i;
+ if (w32_kbdhook_active)
+ {
+ /* Alphanumerics map to themselves. */
+ if (key[1] == 0)
+ {
+ if ((key[0] >= 'A' && key[0] <= 'Z')
+ || (key[0] >= '0' && key[0] <= '9'))
+ return key[0];
+ if (key[0] >= 'a' && key[0] <= 'z')
+ return toupper(key[0]);
+ }
+ }
+
return -1;
}
/* Convert a one-element vector style key sequence to a hot key
definition. */
static Lisp_Object
-w32_parse_hot_key (Lisp_Object key)
+w32_parse_and_hook_hot_key (Lisp_Object key, int hook)
{
/* Copied from Fdefine_key and store_in_keymap. */
register Lisp_Object c;
int vk_code;
int lisp_modifiers;
int w32_modifiers;
+ Lisp_Object res = Qnil;
+ char* vkname;
CHECK_VECTOR (key);
@@ -7688,7 +8097,12 @@ w32_parse_hot_key (Lisp_Object key)
c = Fcar (c);
if (!SYMBOLP (c))
emacs_abort ();
- vk_code = lookup_vk_code (SSDATA (SYMBOL_NAME (c)));
+ vkname = SSDATA (SYMBOL_NAME (c));
+ /* [s-], [M-], [h-]: Register all keys for this modifier */
+ if (w32_kbdhook_active && vkname[0] == 0)
+ vk_code = VK_ANY;
+ else
+ vk_code = lookup_vk_code (vkname);
}
else if (INTEGERP (c))
{
@@ -7712,34 +8126,75 @@ w32_parse_hot_key (Lisp_Object key)
#define MOD_WIN 0x0008
#endif
- /* Convert lisp modifiers to Windows hot-key form. */
- w32_modifiers = (lisp_modifiers & hyper_modifier) ? MOD_WIN : 0;
- w32_modifiers |= (lisp_modifiers & alt_modifier) ? MOD_ALT : 0;
- w32_modifiers |= (lisp_modifiers & ctrl_modifier) ? MOD_CONTROL : 0;
- w32_modifiers |= (lisp_modifiers & shift_modifier) ? MOD_SHIFT : 0;
+ if (w32_kbdhook_active)
+ {
+ /* Register Alt-x combinations. */
+ if (lisp_modifiers & alt_modifier)
+ {
+ hook_w32_key (hook, VK_MENU, vk_code);
+ res = Qt;
+ }
+ /* Register Win-x combinations based on modifier mappings. */
+ if (((lisp_modifiers & hyper_modifier)
+ && EQ (Vw32_lwindow_modifier, Qhyper))
+ || ((lisp_modifiers & super_modifier)
+ && EQ (Vw32_lwindow_modifier, Qsuper)))
+ {
+ hook_w32_key (hook, VK_LWIN, vk_code);
+ res = Qt;
+ }
+ if (((lisp_modifiers & hyper_modifier)
+ && EQ (Vw32_rwindow_modifier, Qhyper))
+ || ((lisp_modifiers & super_modifier)
+ && EQ (Vw32_rwindow_modifier, Qsuper)))
+ {
+ hook_w32_key (hook, VK_RWIN, vk_code);
+ res = Qt;
+ }
+ return res;
+ }
+ else
+ {
+ /* Convert lisp modifiers to Windows hot-key form. */
+ w32_modifiers = (lisp_modifiers & hyper_modifier) ? MOD_WIN : 0;
+ w32_modifiers |= (lisp_modifiers & alt_modifier) ? MOD_ALT : 0;
+ w32_modifiers |= (lisp_modifiers & ctrl_modifier) ? MOD_CONTROL : 0;
+ w32_modifiers |= (lisp_modifiers & shift_modifier) ? MOD_SHIFT : 0;
- return HOTKEY (vk_code, w32_modifiers);
+ return HOTKEY (vk_code, w32_modifiers);
+ }
}
DEFUN ("w32-register-hot-key", Fw32_register_hot_key,
Sw32_register_hot_key, 1, 1, 0,
doc: /* Register KEY as a hot-key combination.
-Certain key combinations like Alt-Tab are reserved for system use on
-Windows, and therefore are normally intercepted by the system. However,
-most of these key combinations can be received by registering them as
-hot-keys, overriding their special meaning.
-
-KEY must be a one element key definition in vector form that would be
-acceptable to `define-key' (e.g. [A-tab] for Alt-Tab). The meta
-modifier is interpreted as Alt if `w32-alt-is-meta' is t, and hyper
-is always interpreted as the Windows modifier keys.
-
-The return value is the hotkey-id if registered, otherwise nil. */)
+Certain key combinations like Alt-Tab and Win-R are reserved for
+system use on Windows, and therefore are normally intercepted by the
+system. These key combinations can be received by registering them
+as hot-keys, except for Win-L which always locks the computer.
+
+On Windows 98 and ME, KEY must be a one element key definition in
+vector form that would be acceptable to `define-key' (e.g. [A-tab] for
+Alt-Tab). The meta modifier is interpreted as Alt if
+`w32-alt-is-meta' is t, and hyper is always interpreted as the Windows
+modifier keys. The return value is the hotkey-id if registered, otherwise nil.
+
+On Windows versions since NT, KEY can also be specified as [M-], [s-] or
+[h-] to indicate that all combinations of that key should be processed
+by Emacs instead of the operating system. The super and hyper
+modifiers are interpreted according to the current values of
+`w32-lwindow-modifier' and `w32-rwindow-modifier'. For instance,
+setting `w32-lwindow-modifier' to `super' and then calling
+`(register-hot-key [s-])' grabs all combinations of the left Windows
+key to Emacs, but leaves the right Windows key free for the operating
+system keyboard shortcuts. The return value is t if the call affected
+any key combinations, otherwise nil. */)
(Lisp_Object key)
{
- key = w32_parse_hot_key (key);
+ key = w32_parse_and_hook_hot_key (key, 1);
- if (!NILP (key) && NILP (Fmemq (key, w32_grabbed_keys)))
+ if (!w32_kbdhook_active
+ && !NILP (key) && NILP (Fmemq (key, w32_grabbed_keys)))
{
/* Reuse an empty slot if possible. */
Lisp_Object item = Fmemq (Qnil, w32_grabbed_keys);
@@ -7767,7 +8222,10 @@ DEFUN ("w32-unregister-hot-key", Fw32_unregister_hot_key,
Lisp_Object item;
if (!INTEGERP (key))
- key = w32_parse_hot_key (key);
+ key = w32_parse_and_hook_hot_key (key, 0);
+
+ if (w32_kbdhook_active)
+ return key;
item = Fmemq (key, w32_grabbed_keys);
@@ -8007,24 +8465,25 @@ and width values are in pixels.
Fcons (Qouter_size,
Fcons (make_number (right - left),
make_number (bottom - top))),
- Fcons (Qexternal_border_size,
+ Fcons (Qexternal_border_size,
Fcons (make_number (external_border_width),
make_number (external_border_height))),
Fcons (Qtitle_bar_size,
Fcons (make_number (title_bar_width),
make_number (title_bar_height))),
- Fcons (Qmenu_bar_external, Qt),
- Fcons (Qmenu_bar_size,
- Fcons (make_number
- (menu_bar.rcBar.right - menu_bar.rcBar.left),
- make_number (menu_bar_height))),
- Fcons (Qtool_bar_external, Qnil),
+ Fcons (Qmenu_bar_external, Qt),
+ Fcons (Qmenu_bar_size,
+ Fcons (make_number
+ (menu_bar.rcBar.right - menu_bar.rcBar.left),
+ make_number (menu_bar_height))),
+ Fcons (Qtool_bar_external, Qnil),
Fcons (Qtool_bar_position, tool_bar_height ? Qtop : Qnil),
- Fcons (Qtool_bar_size,
+ Fcons (Qtool_bar_size,
Fcons (make_number
(tool_bar_height
- ? right - left - 2 * internal_border_width
- : 0),
+ ? (right - left - 2 * external_border_width
+ - 2 * internal_border_width)
+ : 0),
make_number (tool_bar_height))),
Fcons (Qinternal_border_width,
make_number (internal_border_width)));
@@ -8229,7 +8688,7 @@ The following %-sequences are provided:
else
{
long m;
- float h;
+ double h;
char buffer[16];
snprintf (buffer, 16, "%ld", seconds_left);
seconds = build_string (buffer);
@@ -8522,7 +8981,7 @@ w32_strerror (int error_no)
--ret;
buf[ret] = '\0';
if (!ret)
- sprintf (buf, "w32 error %u", error_no);
+ sprintf (buf, "w32 error %d", error_no);
return buf;
}
@@ -8530,6 +8989,8 @@ w32_strerror (int error_no)
/* For convenience when debugging. (You cannot call GetLastError
directly from GDB: it will crash, because it uses the __stdcall
calling convention, not the _cdecl convention assumed by GDB.) */
+DWORD w32_last_error (void);
+
DWORD
w32_last_error (void)
{
@@ -9180,7 +9641,7 @@ usage: (w32-notification-notify &rest PARAMS) */)
EMACS_INT retval;
char *icon, *tip, *title, *msg;
enum NI_Severity severity;
- unsigned timeout;
+ unsigned timeout = 0;
if (nargs == 0)
return Qnil;
@@ -9192,14 +9653,14 @@ usage: (w32-notification-notify &rest PARAMS) */)
if (STRINGP (lres))
icon = SSDATA (ENCODE_FILE (Fexpand_file_name (lres, Qnil)));
else
- icon = "";
+ icon = (char *)"";
/* Tip. */
lres = Fplist_get (arg_plist, QCtip);
if (STRINGP (lres))
tip = SSDATA (code_convert_string_norecord (lres, Qutf_8, 1));
else
- tip = "Emacs notification";
+ tip = (char *)"Emacs notification";
/* Severity. */
lres = Fplist_get (arg_plist, QClevel);
@@ -9219,14 +9680,14 @@ usage: (w32-notification-notify &rest PARAMS) */)
if (STRINGP (lres))
title = SSDATA (code_convert_string_norecord (lres, Qutf_8, 1));
else
- title = "";
+ title = (char *)"";
/* Notification body text. */
lres = Fplist_get (arg_plist, QCbody);
if (STRINGP (lres))
msg = SSDATA (code_convert_string_norecord (lres, Qutf_8, 1));
else
- msg = "";
+ msg = (char *)"";
/* Do it! */
retval = add_tray_notification (f, icon, tip, severity, timeout, title, msg);
@@ -9315,12 +9776,13 @@ syms_of_w32fns (void)
DEFSYM (Qctrl, "ctrl");
DEFSYM (Qcontrol, "control");
DEFSYM (Qshift, "shift");
- DEFSYM (Qfont_param, "font-parameter");
+ DEFSYM (Qfont_parameter, "font-parameter");
DEFSYM (Qgeometry, "geometry");
DEFSYM (Qworkarea, "workarea");
DEFSYM (Qmm_size, "mm-size");
DEFSYM (Qframes, "frames");
DEFSYM (Qtip_frame, "tip-frame");
+ DEFSYM (Qassq_delete_all, "assq-delete-all");
DEFSYM (Qunicode_sip, "unicode-sip");
#if defined WINDOWSNT && !defined HAVE_DBUS
DEFSYM (QCicon, ":icon");
@@ -9333,10 +9795,10 @@ syms_of_w32fns (void)
#endif
/* Symbols used elsewhere, but only in MS-Windows-specific code. */
- DEFSYM (Qgnutls_dll, "gnutls");
- DEFSYM (Qlibxml2_dll, "libxml2");
+ DEFSYM (Qgnutls, "gnutls");
+ DEFSYM (Qlibxml2, "libxml2");
DEFSYM (Qserif, "serif");
- DEFSYM (Qzlib_dll, "zlib");
+ DEFSYM (Qzlib, "zlib");
Fput (Qundefined_color, Qerror_conditions,
listn (CONSTYPE_PURE, 2, Qundefined_color, Qerror));
@@ -9374,11 +9836,15 @@ When non-nil, the Start menu is opened by tapping the key.
If you set this to nil, the left \"Windows\" key is processed by Emacs
according to the value of `w32-lwindow-modifier', which see.
-Note that some combinations of the left \"Windows\" key with other keys are
-caught by Windows at low level, and so binding them in Emacs will have no
-effect. For example, <lwindow>-r always pops up the Windows Run dialog,
-<lwindow>-<Pause> pops up the "System Properties" dialog, etc. However, see
-the doc string of `w32-phantom-key-code'. */);
+Note that some combinations of the left \"Windows\" key with other
+keys are caught by Windows at low level. For example, <lwindow>-r
+pops up the Windows Run dialog, <lwindow>-<Pause> pops up the "System
+Properties" dialog, etc. On Windows 10, no \"Windows\" key
+combinations are normally handed to applications. To enable Emacs to
+process \"Windows\" key combinations, use the function
+`w32-register-hot-key`.
+
+For Windows 98/ME, see the doc string of `w32-phantom-key-code'. */);
Vw32_pass_lwindow_to_system = Qt;
DEFVAR_LISP ("w32-pass-rwindow-to-system",
@@ -9389,11 +9855,15 @@ When non-nil, the Start menu is opened by tapping the key.
If you set this to nil, the right \"Windows\" key is processed by Emacs
according to the value of `w32-rwindow-modifier', which see.
-Note that some combinations of the right \"Windows\" key with other keys are
-caught by Windows at low level, and so binding them in Emacs will have no
-effect. For example, <rwindow>-r always pops up the Windows Run dialog,
-<rwindow>-<Pause> pops up the "System Properties" dialog, etc. However, see
-the doc string of `w32-phantom-key-code'. */);
+Note that some combinations of the right \"Windows\" key with other
+keys are caught by Windows at low level. For example, <rwindow>-r
+pops up the Windows Run dialog, <rwindow>-<Pause> pops up the "System
+Properties" dialog, etc. On Windows 10, no \"Windows\" key
+combinations are normally handed to applications. To enable Emacs to
+process \"Windows\" key combinations, use the function
+`w32-register-hot-key`.
+
+For Windows 98/ME, see the doc string of `w32-phantom-key-code'. */);
Vw32_pass_rwindow_to_system = Qt;
DEFVAR_LISP ("w32-phantom-key-code",
@@ -9403,7 +9873,11 @@ Value is a number between 0 and 255.
Phantom key presses are generated in order to stop the system from
acting on \"Windows\" key events when `w32-pass-lwindow-to-system' or
-`w32-pass-rwindow-to-system' is nil. */);
+`w32-pass-rwindow-to-system' is nil.
+
+This variable is only used on Windows 98 and ME. For other Windows
+versions, see the documentation of the `w32-register-hot-key`
+function. */);
/* Although 255 is technically not a valid key code, it works and
means that this hack won't interfere with any real key code. */
XSETINT (Vw32_phantom_key_code, 255);
@@ -9433,7 +9907,9 @@ Any other value will cause the Scroll Lock key to be ignored. */);
doc: /* Modifier to use for the left \"Windows\" key.
The value can be hyper, super, meta, alt, control or shift for the
respective modifier, or nil to appear as the `lwindow' key.
-Any other value will cause the key to be ignored. */);
+Any other value will cause the key to be ignored.
+
+Also see the documentation of the `w32-register-hot-key` function. */);
Vw32_lwindow_modifier = Qnil;
DEFVAR_LISP ("w32-rwindow-modifier",
@@ -9441,7 +9917,9 @@ Any other value will cause the key to be ignored. */);
doc: /* Modifier to use for the right \"Windows\" key.
The value can be hyper, super, meta, alt, control or shift for the
respective modifier, or nil to appear as the `rwindow' key.
-Any other value will cause the key to be ignored. */);
+Any other value will cause the key to be ignored.
+
+Also see the documentation of the `w32-register-hot-key` function. */);
Vw32_rwindow_modifier = Qnil;
DEFVAR_LISP ("w32-apps-modifier",
@@ -9617,6 +10095,18 @@ Default is nil.
This variable has effect only on Windows Vista and later. */);
w32_disable_new_uniscribe_apis = 0;
+ DEFVAR_LISP ("w32-tooltip-extra-pixels",
+ Vw32_tooltip_extra_pixels,
+ doc: /* Number of pixels added after tooltip text.
+On Windows some fonts may cause the last character of a tooltip be
+truncated or wrapped around to the next line. Adding some extra space
+at the end of the toooltip works around this problem.
+
+This variable specifies the number of pixels that shall be added. The
+default value t means to add the width of one canonical character of the
+tip frame. */);
+ Vw32_tooltip_extra_pixels = Qt;
+
#if 0 /* TODO: Port to W32 */
defsubr (&Sx_change_window_property);
defsubr (&Sx_delete_window_property);
@@ -9787,7 +10277,7 @@ typedef USHORT (WINAPI * CaptureStackBackTrace_proc) (ULONG, ULONG, PVOID *,
#define BACKTRACE_LIMIT_MAX 62
-int
+static int
w32_backtrace (void **buffer, int limit)
{
static CaptureStackBackTrace_proc s_pfn_CaptureStackBackTrace = NULL;
@@ -9860,8 +10350,8 @@ emacs_abort (void)
but not on Windows 7. addr2line doesn't mind a missing
"0x", but will be confused by an extra one. */
if (except_addr)
- sprintf (buf, "\r\nException 0x%lx at this address:\r\n%p\r\n",
- except_code, except_addr);
+ sprintf (buf, "\r\nException 0x%x at this address:\r\n%p\r\n",
+ (unsigned int) except_code, except_addr);
if (stderr_fd >= 0)
{
if (except_addr)
diff --git a/src/w32font.c b/src/w32font.c
index 018e657256..4d15cffb9f 100644
--- a/src/w32font.c
+++ b/src/w32font.c
@@ -102,7 +102,6 @@ static void list_all_matching_fonts (struct font_callback_data *);
static BOOL g_b_init_get_outline_metrics_w;
static BOOL g_b_init_get_text_metrics_w;
static BOOL g_b_init_get_glyph_outline_w;
-static BOOL g_b_init_get_glyph_outline_w;
static BOOL g_b_init_get_char_width_32_w;
typedef UINT (WINAPI * GetOutlineTextMetricsW_Proc) (
@@ -1688,7 +1687,7 @@ w32_to_x_charset (int fncharset, char *matching)
/* Handle startup case of w32-charset-info-alist not
being set up yet. */
if (NILP (Vw32_charset_info_alist))
- return "iso8859-1";
+ return (char *)"iso8859-1";
charset_type = Qw32_charset_ansi;
break;
case DEFAULT_CHARSET:
@@ -1748,7 +1747,7 @@ w32_to_x_charset (int fncharset, char *matching)
default:
/* Encode numerical value of unknown charset. */
- sprintf (buf, "*-#%u", fncharset);
+ sprintf (buf, "*-#%d", fncharset);
return buf;
}
@@ -1835,7 +1834,7 @@ w32_to_x_charset (int fncharset, char *matching)
/* If no match, encode the numeric value. */
if (!best_match)
{
- sprintf (buf, "*-#%u", fncharset);
+ sprintf (buf, "*-#%d", fncharset);
return buf;
}
@@ -2355,7 +2354,7 @@ w32font_full_name (LOGFONT * font, Lisp_Object font_obj,
{
if (outline)
{
- float pointsize = height * 72.0 / one_w32_display_info.resy;
+ double pointsize = height * 72.0 / one_w32_display_info.resy;
/* Round to nearest half point. floor is used, since round is not
supported in MS library. */
pointsize = floor (pointsize * 2 + 0.5) / 2;
diff --git a/src/w32font.h b/src/w32font.h
index 728ad8be96..0e2d0f7982 100644
--- a/src/w32font.h
+++ b/src/w32font.h
@@ -84,7 +84,6 @@ int uniscribe_check_otf (LOGFONT *font, Lisp_Object otf_spec);
Lisp_Object intern_font_name (char *);
-extern void syms_of_w32font (void);
extern void globals_of_w32font (void);
#endif
diff --git a/src/w32heap.c b/src/w32heap.c
index 6643b439a2..658a8a5d69 100644
--- a/src/w32heap.c
+++ b/src/w32heap.c
@@ -189,7 +189,7 @@ free_fn the_free_fn;
claims for new memory. Before dumping, we allocate space
from the fixed size dumped_data[] array.
*/
-NTSTATUS NTAPI
+static NTSTATUS NTAPI
dumped_data_commit (PVOID Base, PVOID *CommitAddress, PSIZE_T CommitSize)
{
/* This is used before dumping.
@@ -323,9 +323,9 @@ init_heap (void)
/* FREEABLE_P checks if the block can be safely freed. */
#define FREEABLE_P(addr) \
- ((unsigned char *)(addr) > 0 \
- && ((unsigned char *)(addr) < dumped_data \
- || (unsigned char *)(addr) >= dumped_data + DUMPED_HEAP_SIZE))
+ ((DWORD_PTR)(unsigned char *)(addr) > 0 \
+ && ((unsigned char *)(addr) < dumped_data \
+ || (unsigned char *)(addr) >= dumped_data + DUMPED_HEAP_SIZE))
void *
malloc_after_dump (size_t size)
@@ -708,7 +708,7 @@ mmap_realloc (void **var, size_t nbytes)
if (memInfo.RegionSize < nbytes)
{
memset (&m2, 0, sizeof (m2));
- if (VirtualQuery (*var + memInfo.RegionSize, &m2, sizeof(m2)) == 0)
+ if (VirtualQuery ((char *)*var + memInfo.RegionSize, &m2, sizeof(m2)) == 0)
DebPrint (("mmap_realloc: VirtualQuery error = %ld\n",
GetLastError ()));
/* If there is enough room in the current reserved area, then
@@ -778,7 +778,7 @@ mmap_realloc (void **var, size_t nbytes)
}
/* We still can decommit pages. */
- if (VirtualFree (*var + nbytes + get_page_size(),
+ if (VirtualFree ((char *)*var + nbytes + get_page_size(),
memInfo.RegionSize - nbytes - get_page_size(),
MEM_DECOMMIT) == 0)
DebPrint (("mmap_realloc: VirtualFree error %ld\n", GetLastError ()));
diff --git a/src/w32heap.h b/src/w32heap.h
index 523bcebe12..4f2d6c82a7 100644
--- a/src/w32heap.h
+++ b/src/w32heap.h
@@ -61,10 +61,10 @@ int open_output_file (file_data *p_file, char *name, unsigned long size);
void close_file_data (file_data *p_file);
/* Return pointer to section header for named section. */
-IMAGE_SECTION_HEADER * find_section (char * name, IMAGE_NT_HEADERS * nt_header);
+IMAGE_SECTION_HEADER * find_section (const char *, IMAGE_NT_HEADERS *);
/* Return pointer to section header for section containing the given
relative virtual address. */
-IMAGE_SECTION_HEADER * rva_to_section (DWORD_PTR rva, IMAGE_NT_HEADERS * nt_header);
+IMAGE_SECTION_HEADER * rva_to_section (DWORD_PTR, IMAGE_NT_HEADERS *);
#endif /* NTHEAP_H_ */
diff --git a/src/w32inevt.c b/src/w32inevt.c
index 867425f0bf..2269d31805 100644
--- a/src/w32inevt.c
+++ b/src/w32inevt.c
@@ -41,6 +41,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "termchar.h" /* for Mouse_HLInfo, tty_display_info */
#include "w32term.h"
#include "w32inevt.h"
+#include "w32common.h"
/* stdin, from w32console.c */
extern HANDLE keyboard_handle;
@@ -148,10 +149,12 @@ key_event (KEY_EVENT_RECORD *event, struct input_event *emacs_ev, int *isdead)
switch (event->wVirtualKeyCode)
{
case VK_LWIN:
- mod_key_state &= ~LEFT_WIN_PRESSED;
+ if (!w32_kbdhook_active)
+ mod_key_state &= ~LEFT_WIN_PRESSED;
break;
case VK_RWIN:
- mod_key_state &= ~RIGHT_WIN_PRESSED;
+ if (!w32_kbdhook_active)
+ mod_key_state &= ~RIGHT_WIN_PRESSED;
break;
case VK_APPS:
mod_key_state &= ~APPS_PRESSED;
@@ -185,7 +188,8 @@ key_event (KEY_EVENT_RECORD *event, struct input_event *emacs_ev, int *isdead)
keybd_event (faked_key, (BYTE) MapVirtualKey (faked_key, 0), 0, 0);
}
}
- mod_key_state |= LEFT_WIN_PRESSED;
+ if (!w32_kbdhook_active)
+ mod_key_state |= LEFT_WIN_PRESSED;
if (!NILP (Vw32_lwindow_modifier))
return 0;
break;
@@ -201,7 +205,8 @@ key_event (KEY_EVENT_RECORD *event, struct input_event *emacs_ev, int *isdead)
keybd_event (faked_key, (BYTE) MapVirtualKey (faked_key, 0), 0, 0);
}
}
- mod_key_state |= RIGHT_WIN_PRESSED;
+ if (!w32_kbdhook_active)
+ mod_key_state |= RIGHT_WIN_PRESSED;
if (!NILP (Vw32_rwindow_modifier))
return 0;
break;
@@ -267,6 +272,13 @@ key_event (KEY_EVENT_RECORD *event, struct input_event *emacs_ev, int *isdead)
/* Recognize state of Windows and Apps keys. */
event->dwControlKeyState |= mod_key_state;
+ if (w32_kbdhook_active)
+ {
+ if (check_w32_winkey_state (VK_LWIN))
+ event->dwControlKeyState |= LEFT_WIN_PRESSED;
+ if (check_w32_winkey_state (VK_RWIN))
+ event->dwControlKeyState |= RIGHT_WIN_PRESSED;
+ }
/* Distinguish numeric keypad keys from extended keys. */
event->wVirtualKeyCode =
@@ -608,70 +620,89 @@ maybe_generate_resize_event (void)
int
handle_file_notifications (struct input_event *hold_quit)
{
- BYTE *p = file_notifications;
- FILE_NOTIFY_INFORMATION *fni = (PFILE_NOTIFY_INFORMATION)p;
- const DWORD min_size
- = offsetof (FILE_NOTIFY_INFORMATION, FileName) + sizeof(wchar_t);
- struct input_event inev;
+ struct notifications_set *ns = NULL;
int nevents = 0;
+ int done = 0;
/* We cannot process notification before Emacs is fully initialized,
since we need the UTF-16LE coding-system to be set up. */
if (!initialized)
{
- notification_buffer_in_use = 0;
return nevents;
}
- enter_crit ();
- if (notification_buffer_in_use)
+ while (!done)
{
- DWORD info_size = notifications_size;
- Lisp_Object cs = Qutf_16le;
- Lisp_Object obj = w32_get_watch_object (notifications_desc);
-
- /* notifications_size could be zero when the buffer of
- notifications overflowed on the OS level, or when the
- directory being watched was itself deleted. Do nothing in
- that case. */
- if (info_size
- && !NILP (obj) && CONSP (obj))
- {
- Lisp_Object callback = XCDR (obj);
+ ns = NULL;
- EVENT_INIT (inev);
+ /* Find out if there is a record available in the linked list of
+ notifications sets. If so, unlink te set from the linked list.
+ Use the critical section. */
+ enter_crit ();
+ if (notifications_set_head->next != notifications_set_head)
+ {
+ ns = notifications_set_head->next;
+ ns->prev->next = ns->next;
+ ns->next->prev = ns->prev;
+ }
+ else
+ done = 1;
+ leave_crit();
- while (info_size >= min_size)
+ if (ns)
+ {
+ BYTE *p = ns->notifications;
+ FILE_NOTIFY_INFORMATION *fni = (PFILE_NOTIFY_INFORMATION)p;
+ const DWORD min_size
+ = offsetof (FILE_NOTIFY_INFORMATION, FileName) + sizeof(wchar_t);
+ struct input_event inev;
+ DWORD info_size = ns->size;
+ Lisp_Object cs = Qutf_16le;
+ Lisp_Object obj = w32_get_watch_object (ns->desc);
+
+ /* notifications size could be zero when the buffer of
+ notifications overflowed on the OS level, or when the
+ directory being watched was itself deleted. Do nothing in
+ that case. */
+ if (info_size
+ && !NILP (obj) && CONSP (obj))
{
- Lisp_Object utf_16_fn
- = make_unibyte_string ((char *)fni->FileName,
- fni->FileNameLength);
- /* Note: mule-conf is preloaded, so utf-16le must
- already be defined at this point. */
- Lisp_Object fname
- = code_convert_string_norecord (utf_16_fn, cs, 0);
- Lisp_Object action = lispy_file_action (fni->Action);
-
- inev.kind = FILE_NOTIFY_EVENT;
- inev.timestamp = GetTickCount ();
- inev.modifiers = 0;
- inev.frame_or_window = callback;
- inev.arg = Fcons (action, fname);
- inev.arg = list3 (make_pointer_integer (notifications_desc),
- action, fname);
- kbd_buffer_store_event_hold (&inev, hold_quit);
- nevents++;
-
- if (!fni->NextEntryOffset)
- break;
- p += fni->NextEntryOffset;
- fni = (PFILE_NOTIFY_INFORMATION)p;
- info_size -= fni->NextEntryOffset;
+ Lisp_Object callback = XCDR (obj);
+
+ EVENT_INIT (inev);
+
+ while (info_size >= min_size)
+ {
+ Lisp_Object utf_16_fn
+ = make_unibyte_string ((char *)fni->FileName,
+ fni->FileNameLength);
+ /* Note: mule-conf is preloaded, so utf-16le must
+ already be defined at this point. */
+ Lisp_Object fname
+ = code_convert_string_norecord (utf_16_fn, cs, 0);
+ Lisp_Object action = lispy_file_action (fni->Action);
+
+ inev.kind = FILE_NOTIFY_EVENT;
+ inev.timestamp = GetTickCount ();
+ inev.modifiers = 0;
+ inev.frame_or_window = callback;
+ inev.arg = Fcons (action, fname);
+ inev.arg = list3 (make_pointer_integer (ns->desc),
+ action, fname);
+ kbd_buffer_store_event_hold (&inev, hold_quit);
+ nevents++;
+ if (!fni->NextEntryOffset)
+ break;
+ p += fni->NextEntryOffset;
+ fni = (PFILE_NOTIFY_INFORMATION)p;
+ info_size -= fni->NextEntryOffset;
+ }
}
+ /* Free this notification set. */
+ free (ns->notifications);
+ free (ns);
}
- notification_buffer_in_use = 0;
}
- leave_crit ();
return nevents;
}
#else /* !HAVE_W32NOTIFY */
diff --git a/src/w32menu.c b/src/w32menu.c
index d9ab8f5e51..7c66360bec 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -60,9 +60,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
HMENU current_popup_menu;
-void syms_of_w32menu (void);
-void globals_of_w32menu (void);
-
typedef BOOL (WINAPI * GetMenuItemInfoA_Proc) (
IN HMENU,
IN UINT,
@@ -80,10 +77,10 @@ typedef int (WINAPI * MessageBoxW_Proc) (
IN UINT type);
#ifdef NTGUI_UNICODE
-#define get_menu_item_info GetMenuItemInfoA
-#define set_menu_item_info SetMenuItemInfoA
-#define unicode_append_menu AppendMenuW
-#define unicode_message_box MessageBoxW
+GetMenuItemInfoA_Proc get_menu_item_info = GetMenuItemInfoA;
+SetMenuItemInfoA_Proc set_menu_item_info = SetMenuItemInfoA;
+AppendMenuW_Proc unicode_append_menu = AppendMenuW;
+MessageBoxW_Proc unicode_message_box = MessageBoxW;
#else /* !NTGUI_UNICODE */
GetMenuItemInfoA_Proc get_menu_item_info = NULL;
SetMenuItemInfoA_Proc set_menu_item_info = NULL;
@@ -91,8 +88,6 @@ AppendMenuW_Proc unicode_append_menu = NULL;
MessageBoxW_Proc unicode_message_box = NULL;
#endif /* NTGUI_UNICODE */
-void set_frame_menubar (struct frame *, bool, bool);
-
#ifdef HAVE_DIALOGS
static Lisp_Object w32_dialog_show (struct frame *, Lisp_Object, Lisp_Object, char **);
#else
@@ -172,6 +167,7 @@ x_activate_menubar (struct frame *f)
when the user makes a selection.
Figure out what the user chose
and put the appropriate events into the keyboard buffer. */
+void menubar_selection_callback (struct frame *, void *);
void
menubar_selection_callback (struct frame *f, void * client_data)
@@ -831,7 +827,7 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags,
{
unblock_input ();
/* Make "Cancel" equivalent to C-g. */
- Fsignal (Qquit, Qnil);
+ quit ();
}
unblock_input ();
@@ -1023,7 +1019,7 @@ w32_dialog_show (struct frame *f, Lisp_Object title,
}
else
/* Make "Cancel" equivalent to C-g. */
- Fsignal (Qquit, Qnil);
+ quit ();
return Qnil;
}
@@ -1111,7 +1107,7 @@ simple_dialog_show (struct frame *f, Lisp_Object contents, Lisp_Object header)
}
else
{
- text = L"";
+ text = (WCHAR *)L"";
}
if (NILP (header))
@@ -1159,7 +1155,7 @@ simple_dialog_show (struct frame *f, Lisp_Object contents, Lisp_Object header)
else if (answer == IDNO)
lispy_answer = build_string ("No");
else
- Fsignal (Qquit, Qnil);
+ quit ();
for (temp = XCDR (contents); CONSP (temp); temp = XCDR (temp))
{
@@ -1181,8 +1177,7 @@ simple_dialog_show (struct frame *f, Lisp_Object contents, Lisp_Object header)
return value;
}
}
- Fsignal (Qquit, Qnil);
- return Qnil;
+ return quit ();
}
#endif /* !HAVE_DIALOGS */
@@ -1465,6 +1460,8 @@ fill_in_menu (HMENU menu, widget_value *wv)
/* Display help string for currently pointed to menu item. Not
supported on NT 3.51 and earlier, as GetMenuItemInfo is not
available. */
+void w32_menu_display_help (HWND, HMENU, UINT, UINT);
+
void
w32_menu_display_help (HWND owner, HMENU menu, UINT item, UINT flags)
{
diff --git a/src/w32notify.c b/src/w32notify.c
index 586c2062f6..d4a113aaa4 100644
--- a/src/w32notify.c
+++ b/src/w32notify.c
@@ -22,27 +22,30 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
For each watch request, we launch a separate worker thread. The
worker thread runs the watch_worker function, which issues an
- asynchronous call to ReadDirectoryChangesW, and then waits in
- SleepEx for that call to complete. Waiting in SleepEx puts the
- thread in an "alertable" state, so it wakes up when either (a) the
- call to ReadDirectoryChangesW completes, or (b) the main thread
- instructs the worker thread to terminate by sending it an APC, see
- below.
+ asynchronous call to ReadDirectoryChangesW, and then calls
+ WaitForSingleObjectEx to wait that an event be signaled
+ to terminate the thread.
+ Waiting with WaitForSingleObjectEx puts the thread in an
+ "alertable" state, so it wakes up when either (a) the call to
+ ReadDirectoryChangesW completes, or (b) the main thread instructs
+ the worker thread to terminate by signaling an event, see below.
When the ReadDirectoryChangesW call completes, its completion
routine watch_completion is automatically called. watch_completion
- stashes the received file events in a buffer used to communicate
- them to the main thread (using a critical section, so that several
- threads could use the same buffer), posts a special message,
- WM_EMACS_FILENOTIFY, to the Emacs's message queue, and returns.
- That causes the SleepEx function call inside watch_worker to
- return, and watch_worker then issues another call to
- ReadDirectoryChangesW. (Except when it does not, see below.)
+ stashes the received file events in a linked list used to
+ communicate them to the main thread (using a critical section, so
+ that several threads could alter the same linked list), posts a
+ special message, WM_EMACS_FILENOTIFY, to the Emacs's message queue,
+ and returns. That causes the WaitForSingleObjectEx function call
+ inside watch_worker to return, but the thread won't terminate until
+ the event telling to do so will be signaled. The completion
+ routine issued another call to ReadDirectoryChangesW as quickly as
+ possible. (Except when it does not, see below.)
In a GUI session, the WM_EMACS_FILENOTIFY message posted to the
message queue gets dispatched to the main Emacs window procedure,
which queues it for processing by w32_read_socket. When
- w32_read_socket sees this message, it accesses the buffer with file
+ w32_read_socket sees this message, it accesses the linked list with file
notifications (using a critical section), extracts the information,
converts it to a series of FILE_NOTIFY_EVENT events, and stuffs
them into the input event queue to be processed by keyboard.c input
@@ -53,7 +56,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
procedures in console programs. That message wakes up
MsgWaitForMultipleObjects inside sys_select, which then signals to
its caller that some keyboard input is available. This causes
- w32_console_read_socket to be called, which accesses the buffer
+ w32_console_read_socket to be called, which accesses the linked list
with file notifications and stuffs them into the input event queue
for keyboard.c to process.
@@ -62,24 +65,21 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
bound to a command. The default binding is file-notify-handle-event,
defined on subr.el.
- After w32_read_socket or w32_console_read_socket are done
- processing the notifications, they reset a flag signaling to all
- watch worker threads that the notifications buffer is available for
- more input.
+ Routines w32_read_socket or w32_console_read_socket process notifications
+ sets as long as some are available.
When the watch is removed by a call to w32notify-rm-watch, the main
- thread requests that the worker thread terminates by queuing an APC
- for the worker thread. The APC specifies the watch_end function to
- be called. watch_end calls CancelIo on the outstanding
- ReadDirectoryChangesW call and closes the handle on which the
- watched directory was open. When watch_end returns, the
- watch_completion function is called one last time with the
- ERROR_OPERATION_ABORTED status, which causes it to clean up and set
- a flag telling watch_worker to exit without issuing another
- ReadDirectoryChangesW call. Since watch_worker is the thread
- procedure of the worker thread, exiting it causes the thread to
- exit. The main thread waits for some time for the worker thread to
- exit, and if it doesn't, terminates it forcibly. */
+ thread requests that the worker thread terminates by signaling the
+ appropriate event and queuing an APC for the worker thread. The
+ APC specifies the watch_end function to be called. watch_end calls
+ CancelIo on the outstanding ReadDirectoryChangesW call. When
+ watch_end returns, the watch_completion function is called one last
+ time with the ERROR_OPERATION_ABORTED status, which causes it to
+ clean up and set a flag telling watch_worker to exit without
+ issuing another ReadDirectoryChangesW call. Since watch_worker is
+ the thread procedure of the worker thread, exiting it causes the
+ thread to exit. The main thread waits for some time for the worker
+ thread to exit, and if it doesn't, terminates it forcibly. */
#include <stddef.h>
#include <errno.h>
@@ -98,6 +98,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "frame.h" /* needed by termhooks.h */
#include "termhooks.h" /* for FILE_NOTIFY_EVENT */
+#define DIRWATCH_BUFFER_SIZE 16384
#define DIRWATCH_SIGNATURE 0x01233210
struct notification {
@@ -108,73 +109,53 @@ struct notification {
char *watchee; /* the file we are interested in, UTF-8 encoded */
HANDLE dir; /* handle to the watched directory */
HANDLE thr; /* handle to the thread that watches */
- volatile int terminate; /* if non-zero, request for the thread to terminate */
+ HANDLE terminate; /* event signaling the thread to terminate */
unsigned signature;
};
/* Used for communicating notifications to the main thread. */
-volatile int notification_buffer_in_use;
-BYTE file_notifications[16384];
-DWORD notifications_size;
-void *notifications_desc;
+struct notifications_set *notifications_set_head;
static Lisp_Object watch_list;
/* Signal to the main thread that we have file notifications for it to
process. */
static void
-send_notifications (BYTE *info, DWORD info_size, void *desc,
- volatile int *terminate)
+send_notifications (struct notifications_set *ns)
{
- int done = 0;
struct frame *f = SELECTED_FRAME ();
- /* A single buffer is used to communicate all notifications to the
- main thread. Since both the main thread and several watcher
- threads could be active at the same time, we use a critical area
- and an "in-use" flag to synchronize them. A watcher thread can
- only put its notifications in the buffer if it acquires the
- critical area and finds the "in-use" flag reset. The main thread
- resets the flag after it is done processing notifications.
-
- FIXME: is there a better way of dealing with this? */
- while (!done && !*terminate)
- {
+ /* We add the current notification set to the linked list. Use the
+ critical section to make sure only one thread will access the
+ linked list. */
enter_crit ();
- if (!notification_buffer_in_use)
- {
- if (info_size)
- memcpy (file_notifications, info,
- min (info_size, sizeof (file_notifications)));
- notifications_size = min (info_size, sizeof (file_notifications));
- notifications_desc = desc;
- /* If PostMessage fails, the message queue is full. If that
- happens, the last thing they will worry about is file
- notifications. So we effectively discard the
- notification in that case. */
- if ((FRAME_TERMCAP_P (f)
- /* We send the message to the main (a.k.a. "Lisp")
- thread, where it will wake up MsgWaitForMultipleObjects
- inside sys_select, causing it to report that there's
- some keyboard input available. This will in turn cause
- w32_console_read_socket to be called, which will pick
- up the file notifications. */
- && PostThreadMessage (dwMainThreadId, WM_EMACS_FILENOTIFY, 0, 0))
- || (FRAME_W32_P (f)
- && PostMessage (FRAME_W32_WINDOW (f),
- WM_EMACS_FILENOTIFY, 0, 0))
- /* When we are running in batch mode, there's no one to
- send a message, so we just signal the data is
- available and hope sys_select will be called soon and
- will read the data. */
- || (FRAME_INITIAL_P (f) && noninteractive))
- notification_buffer_in_use = 1;
- done = 1;
- }
- leave_crit ();
- if (!done)
- Sleep (5);
- }
+ ns->next = notifications_set_head;
+ ns->prev = notifications_set_head->prev;
+ ns->prev->next = ns;
+ notifications_set_head->prev = ns;
+ leave_crit();
+
+ /* If PostMessage fails, the message queue is full. If that
+ happens, the last thing they will worry about is file
+ notifications. So we effectively discard the notification in
+ that case. */
+ if (FRAME_TERMCAP_P (f))
+ /* We send the message to the main (a.k.a. "Lisp") thread, where
+ it will wake up MsgWaitForMultipleObjects inside sys_select,
+ causing it to report that there's some keyboard input
+ available. This will in turn cause w32_console_read_socket to
+ be called, which will pick up the file notifications. */
+ PostThreadMessage (dwMainThreadId, WM_EMACS_FILENOTIFY, 0, 0);
+ else if (FRAME_W32_P (f))
+ PostMessage (FRAME_W32_WINDOW (f),
+ WM_EMACS_FILENOTIFY, 0, 0);
+ /* When we are running in batch mode, there's no one to send a
+ message, so we just signal the data is available and hope
+ sys_select will be called soon and will read the data. */
+#if 0
+ else if (FRAME_INITIAL_P (f) && noninteractive)
+ ;
+#endif
}
/* An APC routine to cancel outstanding directory watch. Invoked by
@@ -182,33 +163,40 @@ send_notifications (BYTE *info, DWORD info_size, void *desc,
thread that issued the ReadDirectoryChangesW call can call CancelIo
to cancel that. (CancelIoEx is only available since Vista, so we
cannot use it on XP.) */
+VOID CALLBACK watch_end (ULONG_PTR);
+
VOID CALLBACK
watch_end (ULONG_PTR arg)
{
HANDLE hdir = (HANDLE)arg;
if (hdir && hdir != INVALID_HANDLE_VALUE)
- {
- CancelIo (hdir);
- CloseHandle (hdir);
- }
+ CancelIo (hdir);
}
/* A completion routine (a.k.a. "APC function") for handling events
read by ReadDirectoryChangesW. Called by the OS when the thread
which issued the asynchronous ReadDirectoryChangesW call is in the
"alertable state", i.e. waiting inside SleepEx call. */
+VOID CALLBACK watch_completion (DWORD, DWORD, OVERLAPPED *);
+
VOID CALLBACK
watch_completion (DWORD status, DWORD bytes_ret, OVERLAPPED *io_info)
{
struct notification *dirwatch;
+ DWORD _bytes;
+ struct notifications_set *ns = NULL;
+ BOOL terminate = FALSE;
/* Who knows what happened? Perhaps the OVERLAPPED structure was
freed by someone already? In any case, we cannot do anything
with this request, so just punt and skip it. FIXME: should we
raise the 'terminate' flag in this case? */
if (!io_info)
- return;
+ {
+ DebPrint(("watch_completion: io_info is null.\n"));
+ return;
+ }
/* We have a pointer to our dirwatch structure conveniently stashed
away in the hEvent member of the OVERLAPPED struct. According to
@@ -216,26 +204,69 @@ watch_completion (DWORD status, DWORD bytes_ret, OVERLAPPED *io_info)
of the OVERLAPPED structure is not used by the system, so you can
use it yourself." */
dirwatch = (struct notification *)io_info->hEvent;
+
if (status == ERROR_OPERATION_ABORTED)
{
/* We've been called because the main thread told us to issue
CancelIo on the directory we watch, and watch_end did so.
- The directory handle is already closed. We should clean up
- and exit, signaling to the thread worker routine not to
- issue another call to ReadDirectoryChangesW. Note that we
- don't free the dirwatch object itself nor the memory consumed
- by its buffers; this is done by the main thread in
- remove_watch. Calling malloc/free from a thread other than
- the main thread is a no-no. */
- dirwatch->dir = NULL;
- dirwatch->terminate = 1;
+ We must exit, without issuing another call to
+ ReadDirectoryChangesW. */
+ return;
}
- else
+
+ /* We allocate a new set of notifications to be linked to the linked
+ list of notifications set. This will be processed by Emacs event
+ loop in the main thread. We need to duplicate the notifications
+ buffer, but not the dirwatch structure. */
+
+ /* Implementation note: In general, allocating memory in non-main
+ threads is a no-no in Emacs. We certainly cannot call xmalloc
+ and friends, because it can longjmp when allocation fails, which
+ will crash Emacs because the jmp_buf is set up to a location on
+ the main thread's stack. However, we can call 'malloc' directly,
+ since that is redirected to HeapAlloc that uses our private heap,
+ see w32heap.c, and that is thread-safe. */
+ ns = malloc (sizeof(struct notifications_set));
+ if (ns)
+ {
+ memset (ns, 0, sizeof(struct notifications_set));
+ ns->notifications = malloc (bytes_ret);
+ if (ns->notifications)
+ {
+ memcpy (ns->notifications, dirwatch->buf, bytes_ret);
+ ns->size = bytes_ret;
+ ns->desc = dirwatch;
+ }
+ else
+ {
+ free (ns);
+ ns = NULL;
+ }
+ }
+ if (ns == NULL)
+ DebPrint(("Out of memory. Notifications lost."));
+
+ /* Calling ReadDirectoryChangesW quickly to watch again for new
+ notifications. */
+ if (!ReadDirectoryChangesW (dirwatch->dir, dirwatch->buf,
+ DIRWATCH_BUFFER_SIZE, dirwatch->subtree,
+ dirwatch->filter, &_bytes, dirwatch->io_info,
+ watch_completion))
{
- /* Tell the main thread we have notifications for it. */
- send_notifications (dirwatch->buf, bytes_ret, dirwatch,
- &dirwatch->terminate);
+ DebPrint (("ReadDirectoryChangesW error: %lu\n", GetLastError ()));
+ /* If this call fails, it means that the directory is not
+ watchable any more. We need to terminate the worker thread.
+ Still, we will wait until the current notifications have been
+ sent to the main thread. */
+ terminate = TRUE;
}
+
+ if (ns)
+ send_notifications(ns);
+
+ /* If we were asked to terminate the thread, then fire the event. */
+ if (terminate)
+ SetEvent(dirwatch->terminate);
}
/* Worker routine for the watch thread. */
@@ -243,42 +274,43 @@ static DWORD WINAPI
watch_worker (LPVOID arg)
{
struct notification *dirwatch = (struct notification *)arg;
+ BOOL bErr;
+ DWORD _bytes = 0;
+ DWORD status;
+
+ if (dirwatch->dir)
+ {
+ bErr = ReadDirectoryChangesW (dirwatch->dir, dirwatch->buf,
+ DIRWATCH_BUFFER_SIZE, dirwatch->subtree,
+ dirwatch->filter, &_bytes,
+ dirwatch->io_info, watch_completion);
+ if (!bErr)
+ {
+ DebPrint (("ReadDirectoryChangesW: %lu\n", GetLastError ()));
+ /* We cannot remove the dirwatch object from watch_list,
+ because we are in a separate thread. For the same
+ reason, we also cannot free memory consumed by the
+ buffers allocated for the dirwatch object. So we close
+ the directory handle, but do not free the object itself
+ or its buffers. We also don't touch the signature. This
+ way, remove_watch can still identify the object, remove
+ it, and free its memory. */
+ CloseHandle (dirwatch->dir);
+ dirwatch->dir = NULL;
+ return 1;
+ }
+ }
do {
- BOOL status;
- DWORD bytes_ret = 0;
-
- if (dirwatch->dir)
- {
- status = ReadDirectoryChangesW (dirwatch->dir, dirwatch->buf, 16384,
- dirwatch->subtree, dirwatch->filter,
- &bytes_ret,
- dirwatch->io_info, watch_completion);
- if (!status)
- {
- DebPrint (("watch_worker, abnormal exit: %lu\n", GetLastError ()));
- /* We cannot remove the dirwatch object from watch_list,
- because we are in a separate thread. For the same
- reason, we also cannot free memory consumed by the
- buffers allocated for the dirwatch object. So we close
- the directory handle, but do not free the object itself
- or its buffers. We also don't touch the signature.
- This way, remove_watch can still identify the object,
- remove it, and free its memory. */
- CloseHandle (dirwatch->dir);
- dirwatch->dir = NULL;
- return 1;
- }
- }
- /* Sleep indefinitely until awoken by the I/O completion, which
- could be either a change notification or a cancellation of the
- watch. */
- SleepEx (INFINITE, TRUE);
- } while (!dirwatch->terminate);
+ status = WaitForSingleObjectEx(dirwatch->terminate, INFINITE, TRUE);
+ } while (status == WAIT_IO_COMPLETION);
+
+ /* The thread is about to terminate, so we clean up the dir handle. */
+ CloseHandle (dirwatch->dir);
+ dirwatch->dir = NULL;
return 0;
}
-
/* Launch a thread to watch changes to FILE in a directory open on
handle HDIR. */
static struct notification *
@@ -287,7 +319,7 @@ start_watching (const char *file, HANDLE hdir, BOOL subdirs, DWORD flags)
struct notification *dirwatch = xzalloc (sizeof (struct notification));
dirwatch->signature = DIRWATCH_SIGNATURE;
- dirwatch->buf = xmalloc (16384);
+ dirwatch->buf = xmalloc (DIRWATCH_BUFFER_SIZE);
dirwatch->io_info = xzalloc (sizeof(OVERLAPPED));
/* Stash a pointer to dirwatch structure for use by the completion
routine. According to MSDN documentation of ReadDirectoryChangesW:
@@ -297,7 +329,9 @@ start_watching (const char *file, HANDLE hdir, BOOL subdirs, DWORD flags)
dirwatch->subtree = subdirs;
dirwatch->filter = flags;
dirwatch->watchee = xstrdup (file);
- dirwatch->terminate = 0;
+
+ dirwatch->terminate = CreateEvent(NULL, FALSE, FALSE, NULL);
+
dirwatch->dir = hdir;
/* See w32proc.c where it calls CreateThread for the story behind
@@ -307,11 +341,11 @@ start_watching (const char *file, HANDLE hdir, BOOL subdirs, DWORD flags)
if (!dirwatch->thr)
{
+ CloseHandle(dirwatch->terminate);
xfree (dirwatch->buf);
xfree (dirwatch->io_info);
xfree (dirwatch->watchee);
xfree (dirwatch);
- dirwatch = NULL;
}
return dirwatch;
}
@@ -370,7 +404,10 @@ add_watch (const char *parent_dir, const char *file, BOOL subdirs, DWORD flags)
return NULL;
if ((dirwatch = start_watching (file, hdir, subdirs, flags)) == NULL)
- CloseHandle (hdir);
+ {
+ CloseHandle (hdir);
+ dirwatch->dir = NULL;
+ }
return dirwatch;
}
@@ -383,7 +420,7 @@ remove_watch (struct notification *dirwatch)
{
int i;
BOOL status;
- DWORD exit_code, err;
+ DWORD exit_code = 0, err;
/* Only the thread that issued the outstanding I/O call can call
CancelIo on it. (CancelIoEx is available only since Vista.)
@@ -391,12 +428,10 @@ remove_watch (struct notification *dirwatch)
to terminate. */
if (!QueueUserAPC (watch_end, dirwatch->thr, (ULONG_PTR)dirwatch->dir))
DebPrint (("QueueUserAPC failed (%lu)!\n", GetLastError ()));
- /* We also set the terminate flag, for when the thread is
- waiting on the critical section that never gets acquired.
- FIXME: is there a cleaner method? Using SleepEx there is a
- no-no, as that will lead to recursive APC invocations and
- stack overflow. */
- dirwatch->terminate = 1;
+
+ /* We also signal the thread that it can terminate. */
+ SetEvent(dirwatch->terminate);
+
/* Wait for the thread to exit. FIXME: is there a better method
that is not overly complex? */
for (i = 0; i < 50; i++)
@@ -406,11 +441,13 @@ remove_watch (struct notification *dirwatch)
break;
Sleep (10);
}
+
if ((status == FALSE && (err = GetLastError ()) == ERROR_INVALID_HANDLE)
|| exit_code == STILL_ACTIVE)
{
if (!(status == FALSE && err == ERROR_INVALID_HANDLE))
{
+ DebPrint(("Forcing thread termination.\n"));
TerminateThread (dirwatch->thr, 0);
if (dirwatch->dir)
CloseHandle (dirwatch->dir);
@@ -423,11 +460,11 @@ remove_watch (struct notification *dirwatch)
CloseHandle (dirwatch->thr);
dirwatch->thr = NULL;
}
+ CloseHandle(dirwatch->terminate);
xfree (dirwatch->buf);
xfree (dirwatch->io_info);
xfree (dirwatch->watchee);
xfree (dirwatch);
-
return 0;
}
else
diff --git a/src/w32proc.c b/src/w32proc.c
index 4a6f786280..11a121f7c0 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -45,11 +45,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#undef kill
#include <windows.h>
-#if defined(__GNUC__) && !defined(__MINGW64__)
-/* This definition is missing from mingw.org headers, but not MinGW64
- headers. */
-extern BOOL WINAPI IsValidLocale (LCID, DWORD);
-#endif
#ifdef HAVE_LANGINFO_CODESET
#include <nl_types.h>
@@ -70,6 +65,10 @@ extern BOOL WINAPI IsValidLocale (LCID, DWORD);
+ ((DWORD_PTR)(var) - (section)->VirtualAddress) \
+ (filedata).file_base))
+extern BOOL g_b_init_compare_string_w;
+int sys_select (int, SELECT_TYPE *, SELECT_TYPE *, SELECT_TYPE *,
+ struct timespec *, void *);
+
/* Signal handlers...SIG_DFL == 0 so this is initialized correctly. */
static signal_handler sig_handlers[NSIG];
@@ -1728,7 +1727,7 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp)
are not expanded if we run the program directly without a shell.
Some extra whitespace characters need quoting in Cygwin/MSYS programs,
so this list is conditionally modified below. */
- char *sepchars = " \t*?";
+ const char *sepchars = " \t*?";
/* This is for native w32 apps; modified below for Cygwin/MSUS apps. */
char escape_char = '\\';
char cmdname_a[MAX_PATH];
@@ -2815,7 +2814,6 @@ set_process_dir (char * dir)
/* From w32.c */
extern HANDLE winsock_lib;
extern BOOL term_winsock (void);
-extern BOOL init_winsock (int load_now);
DEFUN ("w32-has-winsock", Fw32_has_winsock, Sw32_has_winsock, 0, 1, 0,
doc: /* Test for presence of the Windows socket library `winsock'.
@@ -3522,7 +3520,6 @@ w32_compare_strings (const char *s1, const char *s2, char *locname,
LCID lcid = GetThreadLocale ();
wchar_t *string1_w, *string2_w;
int val, needed;
- extern BOOL g_b_init_compare_string_w;
static CompareStringW_Proc pCompareStringW;
DWORD flags = 0;
diff --git a/src/w32reg.c b/src/w32reg.c
index a87381831e..25d6bb8393 100644
--- a/src/w32reg.c
+++ b/src/w32reg.c
@@ -56,9 +56,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
*/
static char *
-w32_get_rdb_resource (char *rdb, const char *resource)
+w32_get_rdb_resource (const char *rdb, const char *resource)
{
- char *value = rdb;
+ char *value = (char *)rdb;
int len = strlen (resource);
while (*value)
diff --git a/src/w32select.c b/src/w32select.c
index 138fe853c4..a38a42ca05 100644
--- a/src/w32select.c
+++ b/src/w32select.c
@@ -76,6 +76,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "lisp.h"
#include "w32common.h" /* os_subtype */
#include "w32term.h" /* for all of the w32 includes */
+#include "w32select.h"
#include "keyboard.h" /* for waiting_for_input */
#include "blockinput.h"
#include "coding.h"
@@ -256,7 +257,7 @@ render (Lisp_Object oformat)
switch (format)
{
case CF_UNICODETEXT:
- htext = convert_to_handle_as_coded (QUNICODE);
+ htext = convert_to_handle_as_coded (Qutf_16le_dos);
break;
case CF_TEXT:
case CF_OEMTEXT:
@@ -1109,7 +1110,7 @@ After the communication, this variable is set to nil. */);
current_text = Qnil; staticpro (&current_text);
current_coding_system = Qnil; staticpro (&current_coding_system);
- DEFSYM (QUNICODE, "utf-16le-dos");
+ DEFSYM (Qutf_16le_dos, "utf-16le-dos");
QANSICP = Qnil; staticpro (&QANSICP);
QOEMCP = Qnil; staticpro (&QOEMCP);
}
@@ -1132,7 +1133,7 @@ globals_of_w32select (void)
QOEMCP = coding_from_cp (OEMCP);
if (os_subtype == OS_NT)
- Vselection_coding_system = QUNICODE;
+ Vselection_coding_system = Qutf_16le_dos;
else if (inhibit_window_system)
Vselection_coding_system = QOEMCP;
else
diff --git a/src/w32term.c b/src/w32term.c
index 51743f8f94..5a11e2a871 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -83,8 +83,6 @@ static int any_help_event_p;
extern unsigned int msh_mousewheel;
-extern void free_frame_menubar (struct frame *);
-
extern int w32_codepage_for_font (char *fontname);
extern Cursor w32_load_cursor (LPCTSTR name);
@@ -178,9 +176,7 @@ static void w32_define_cursor (Window, Cursor);
void x_lower_frame (struct frame *);
void x_scroll_bar_clear (struct frame *);
-void x_wm_set_size_hint (struct frame *, long, bool);
void x_raise_frame (struct frame *);
-void x_set_window_size (struct frame *, bool, int, int, bool);
void x_wm_set_window_state (struct frame *, int);
void x_wm_set_icon_pixmap (struct frame *, int);
static void w32_initialize (void);
@@ -248,7 +244,7 @@ record_event (char *locus, int type)
#endif /* 0 */
-void
+static void
XChangeGC (void *ignore, XGCValues *gc, unsigned long mask,
XGCValues *xgcv)
{
@@ -270,12 +266,14 @@ XCreateGC (void *ignore, Window window, unsigned long mask, XGCValues *xgcv)
return gc;
}
-void
+#if 0 /* unused for now, see x_draw_image_glyph_string below */
+static void
XGetGCValues (void *ignore, XGCValues *gc,
unsigned long mask, XGCValues *xgcv)
{
XChangeGC (ignore, xgcv, mask, gc);
}
+#endif
static void
w32_set_clip_rectangle (HDC hdc, RECT *rect)
@@ -321,7 +319,7 @@ w32_restore_glyph_string_clip (struct glyph_string *s)
*/
-void
+static void
w32_draw_underwave (struct glyph_string *s, COLORREF color)
{
int wave_height = 3, wave_length = 2;
@@ -384,7 +382,7 @@ w32_draw_underwave (struct glyph_string *s, COLORREF color)
}
/* Draw a hollow rectangle at the specified position. */
-void
+static void
w32_draw_rectangle (HDC hdc, XGCValues *gc, int x, int y,
int width, int height)
{
@@ -613,7 +611,7 @@ w32_draw_vertical_window_border (struct window *w, int x, int y0, int y1)
r.bottom = y1;
hdc = get_frame_dc (f);
- face = FACE_FROM_ID (f, VERTICAL_BORDER_FACE_ID);
+ face = FACE_FROM_ID_OR_NULL (f, VERTICAL_BORDER_FACE_ID);
if (face)
w32_fill_rect (f, hdc, face->foreground, &r);
else
@@ -630,9 +628,11 @@ w32_draw_window_divider (struct window *w, int x0, int x1, int y0, int y1)
{
struct frame *f = XFRAME (WINDOW_FRAME (w));
HDC hdc = get_frame_dc (f);
- struct face *face = FACE_FROM_ID (f, WINDOW_DIVIDER_FACE_ID);
- struct face *face_first = FACE_FROM_ID (f, WINDOW_DIVIDER_FIRST_PIXEL_FACE_ID);
- struct face *face_last = FACE_FROM_ID (f, WINDOW_DIVIDER_LAST_PIXEL_FACE_ID);
+ struct face *face = FACE_FROM_ID_OR_NULL (f, WINDOW_DIVIDER_FACE_ID);
+ struct face *face_first
+ = FACE_FROM_ID_OR_NULL (f, WINDOW_DIVIDER_FIRST_PIXEL_FACE_ID);
+ struct face *face_last
+ = FACE_FROM_ID_OR_NULL (f, WINDOW_DIVIDER_LAST_PIXEL_FACE_ID);
unsigned long color = face ? face->foreground : FRAME_FOREGROUND_PIXEL (f);
unsigned long color_first = (face_first
? face_first->foreground
@@ -991,7 +991,7 @@ x_set_mouse_face_gc (struct glyph_string *s)
/* What face has to be used last for the mouse face? */
face_id = MOUSE_HL_INFO (s->f)->mouse_face_face_id;
- face = FACE_FROM_ID (s->f, face_id);
+ face = FACE_FROM_ID_OR_NULL (s->f, face_id);
if (face == NULL)
face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
@@ -1434,7 +1434,7 @@ x_draw_glyphless_glyph_string_foreground (struct glyph_string *s)
{
sprintf ((char *) buf, "%0*X",
glyph->u.glyphless.ch < 0x10000 ? 4 : 6,
- glyph->u.glyphless.ch);
+ (unsigned int) glyph->u.glyphless.ch);
str = buf;
}
@@ -2577,7 +2577,7 @@ x_draw_glyph_string (struct glyph_string *s)
/* Shift display to make room for inserted glyphs. */
-void
+static void
w32_shift_glyphs_for_insert (struct frame *f, int x, int y,
int width, int height, int shift_by)
{
@@ -2874,13 +2874,15 @@ w32_detect_focus_change (struct w32_display_info *dpyinfo, W32Msg *event,
}
+#if 0 /* unused */
/* Handle an event saying the mouse has moved out of an Emacs frame. */
-void
+static void
x_mouse_leave (struct w32_display_info *dpyinfo)
{
x_new_focus_frame (dpyinfo, dpyinfo->w32_focus_event_frame);
}
+#endif
/* The focus has changed, or we have redirected a frame's focus to
another frame (this happens when a frame uses a surrogate
@@ -3211,71 +3213,85 @@ static void
queue_notifications (struct input_event *event, W32Msg *msg, struct frame *f,
int *evcount)
{
- BYTE *p = file_notifications;
- FILE_NOTIFY_INFORMATION *fni = (PFILE_NOTIFY_INFORMATION)p;
- const DWORD min_size
- = offsetof (FILE_NOTIFY_INFORMATION, FileName) + sizeof(wchar_t);
+ struct notifications_set *ns = NULL;
Lisp_Object frame;
+ int done = 0;
/* We cannot process notification before Emacs is fully initialized,
since we need the UTF-16LE coding-system to be set up. */
if (!initialized)
- {
- notification_buffer_in_use = 0;
- return;
- }
+ return;
XSETFRAME (frame, f);
- enter_crit ();
- if (notification_buffer_in_use)
+ while (!done)
{
- DWORD info_size = notifications_size;
- Lisp_Object cs = Qutf_16le;
- Lisp_Object obj = w32_get_watch_object (notifications_desc);
-
- /* notifications_size could be zero when the buffer of
- notifications overflowed on the OS level, or when the
- directory being watched was itself deleted. Do nothing in
- that case. */
- if (info_size
- && !NILP (obj) && CONSP (obj))
+ ns = NULL;
+
+ /* Find out if there is a record available in the linked list of
+ notifications sets. If so, unlink the set from the linked
+ list. Use critical section. */
+ enter_crit ();
+ if (notifications_set_head->next != notifications_set_head)
{
- Lisp_Object callback = XCDR (obj);
+ ns = notifications_set_head->next;
+ ns->prev->next = ns->next;
+ ns->next->prev = ns->prev;
+ }
+ else
+ done = 1;
+ leave_crit();
- while (info_size >= min_size)
+ if (ns)
+ {
+ BYTE *p = ns->notifications;
+ FILE_NOTIFY_INFORMATION *fni = (PFILE_NOTIFY_INFORMATION)p;
+ const DWORD min_size
+ = offsetof (FILE_NOTIFY_INFORMATION, FileName) + sizeof(wchar_t);
+ DWORD info_size = ns->size;
+ Lisp_Object cs = Qutf_16le;
+ Lisp_Object obj = w32_get_watch_object (ns->desc);
+
+ /* notifications size could be zero when the buffer of
+ notifications overflowed on the OS level, or when the
+ directory being watched was itself deleted. Do nothing in
+ that case. */
+ if (info_size
+ && !NILP (obj) && CONSP (obj))
{
- Lisp_Object utf_16_fn
- = make_unibyte_string ((char *)fni->FileName,
- fni->FileNameLength);
- /* Note: mule-conf is preloaded, so utf-16le must
- already be defined at this point. */
- Lisp_Object fname
- = code_convert_string_norecord (utf_16_fn, cs, 0);
- Lisp_Object action = lispy_file_action (fni->Action);
-
- event->kind = FILE_NOTIFY_EVENT;
- event->timestamp = msg->msg.time;
- event->modifiers = 0;
- event->frame_or_window = callback;
- event->arg = list3 (make_pointer_integer (notifications_desc),
- action, fname);
- kbd_buffer_store_event (event);
- (*evcount)++;
-
- if (!fni->NextEntryOffset)
- break;
- p += fni->NextEntryOffset;
- fni = (PFILE_NOTIFY_INFORMATION)p;
- info_size -= fni->NextEntryOffset;
+ Lisp_Object callback = XCDR (obj);
+
+ while (info_size >= min_size)
+ {
+ Lisp_Object utf_16_fn
+ = make_unibyte_string ((char *)fni->FileName,
+ fni->FileNameLength);
+ /* Note: mule-conf is preloaded, so utf-16le must
+ already be defined at this point. */
+ Lisp_Object fname
+ = code_convert_string_norecord (utf_16_fn, cs, 0);
+ Lisp_Object action = lispy_file_action (fni->Action);
+
+ event->kind = FILE_NOTIFY_EVENT;
+ event->timestamp = msg->msg.time;
+ event->modifiers = 0;
+ event->frame_or_window = callback;
+ event->arg = list3 (make_pointer_integer (ns->desc),
+ action, fname);
+ kbd_buffer_store_event (event);
+ (*evcount)++;
+ if (!fni->NextEntryOffset)
+ break;
+ p += fni->NextEntryOffset;
+ fni = (PFILE_NOTIFY_INFORMATION)p;
+ info_size -= fni->NextEntryOffset;
+ }
}
+ /* Free this notifications set. */
+ xfree (ns->notifications);
+ xfree (ns);
}
- notification_buffer_in_use = 0;
}
- else
- DebPrint (("We were promised notifications, but in-use flag is zero!\n"));
- leave_crit ();
-
/* We've stuffed all the events ourselves, so w32_read_socket shouldn't. */
event->kind = NO_EVENT;
}
@@ -4182,6 +4198,7 @@ w32_scroll_bar_handle_click (struct scroll_bar *bar, W32Msg *msg,
y = si.nPos;
bar->dragging = 0;
+ struct frame *f; /* Value is not used. */
FRAME_DISPLAY_INFO (f)->last_mouse_scroll_bar_pos = msg->msg.wParam;
switch (sb_event)
@@ -4297,6 +4314,7 @@ w32_horizontal_scroll_bar_handle_click (struct scroll_bar *bar, W32Msg *msg,
y = si.nMax - si.nPage;
bar->dragging = 0;
+ struct frame *f; /* Value is not used. */
FRAME_DISPLAY_INFO (f)->last_mouse_scroll_bar_pos = msg->msg.wParam;
switch (sb_event)
@@ -4534,6 +4552,8 @@ static char dbcs_lead = 0;
recursively with different messages by the system.
*/
+extern void menubar_selection_callback (struct frame *, void *);
+
static int
w32_read_socket (struct terminal *terminal,
struct input_event *hold_quit)
@@ -5246,6 +5266,10 @@ w32_read_socket (struct terminal *terminal,
}
break;
+ case WM_ENDSESSION:
+ inev.kind = END_SESSION_EVENT;
+ break;
+
case WM_INITMENU:
f = x_window_to_frame (dpyinfo, msg.msg.hwnd);
@@ -5261,8 +5285,6 @@ w32_read_socket (struct terminal *terminal,
if (f)
{
- extern void menubar_selection_callback
- (struct frame *f, void * client_data);
menubar_selection_callback (f, (void *)msg.msg.wParam);
}
@@ -5879,7 +5901,7 @@ xim_close_dpy (dpyinfo)
/* Calculate the absolute position in frame F
from its current recorded position values and gravity. */
-void
+static void
x_calc_absolute_position (struct frame *f)
{
int flags = f->size_hint_flags;
@@ -6555,7 +6577,7 @@ x_free_frame_resources (struct frame *f)
/* Destroy the window of frame F. */
-void
+static void
x_destroy_window (struct frame *f)
{
struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
@@ -6951,6 +6973,8 @@ w32_init_main_thread (void)
DuplicateHandle (GetCurrentProcess (), GetCurrentThread (),
GetCurrentProcess (), &hMainThread, 0, TRUE,
DUPLICATE_SAME_ACCESS);
+
+
}
DWORD WINAPI w32_msg_worker (void * arg);
diff --git a/src/w32term.h b/src/w32term.h
index 2fed56ed79..320477073a 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -230,25 +230,14 @@ extern struct frame *x_window_to_frame (struct w32_display_info *, HWND);
struct w32_display_info *x_display_info_for_name (Lisp_Object);
-Lisp_Object display_x_get_resource (struct w32_display_info *,
- Lisp_Object, Lisp_Object,
- Lisp_Object, Lisp_Object);
-
/* also defined in xterm.h XXX: factor out to common header */
extern struct w32_display_info *w32_term_init (Lisp_Object,
char *, char *);
extern int w32_defined_color (struct frame *f, const char *color,
XColor *color_def, bool alloc_p);
-extern void x_set_window_size (struct frame *f, bool change_gravity,
- int width, int height, bool pixelwise);
extern int x_display_pixel_height (struct w32_display_info *);
extern int x_display_pixel_width (struct w32_display_info *);
-extern Lisp_Object x_get_focus_frame (struct frame *);
-extern void x_make_frame_visible (struct frame *f);
-extern void x_make_frame_invisible (struct frame *f);
-extern void x_iconify_frame (struct frame *f);
-extern void x_set_frame_alpha (struct frame *f);
extern void x_set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
extern void x_set_tool_bar_lines (struct frame *f,
Lisp_Object value,
@@ -256,19 +245,12 @@ extern void x_set_tool_bar_lines (struct frame *f,
extern void x_set_internal_border_width (struct frame *f,
Lisp_Object value,
Lisp_Object oldval);
-extern void x_activate_menubar (struct frame *);
-extern bool x_bitmap_icon (struct frame *, Lisp_Object);
extern void initialize_frame_menubar (struct frame *);
-extern void x_free_frame_resources (struct frame *);
-extern void x_real_positions (struct frame *, int *, int *);
/* w32inevt.c */
extern int w32_kbd_patch_key (KEY_EVENT_RECORD *event, int cpId);
extern int w32_kbd_mods_to_emacs (DWORD mods, WORD key);
-
-extern Lisp_Object x_get_focus_frame (struct frame *);
-
/* w32console.c */
extern void w32con_hide_cursor (void);
extern void w32con_show_cursor (void);
@@ -417,7 +399,7 @@ extern struct w32_output w32term_display;
#define FRAME_BASELINE_OFFSET(f) ((f)->output_data.w32->baseline_offset)
/* This gives the w32_display_info structure for the display F is on. */
-#define FRAME_DISPLAY_INFO(f) (&one_w32_display_info)
+#define FRAME_DISPLAY_INFO(f) ((void) (f), (&one_w32_display_info))
/* This is the `Display *' which frame F is on. */
#define FRAME_X_DISPLAY(f) (0)
@@ -727,10 +709,18 @@ extern void x_delete_display (struct w32_display_info *dpyinfo);
extern void x_query_color (struct frame *, XColor *);
-extern volatile int notification_buffer_in_use;
-extern BYTE file_notifications[16384];
-extern DWORD notifications_size;
-extern void *notifications_desc;
+#define FILE_NOTIFICATIONS_SIZE 16384
+/* Notifications come in sets. We use a doubly linked list with a
+ sentinel to communicate those sets from the watching threads to the
+ main thread. */
+struct notifications_set {
+ LPBYTE notifications;
+ DWORD size;
+ void *desc;
+ struct notifications_set *next;
+ struct notifications_set *prev;
+};
+extern struct notifications_set *notifications_set_head;
extern Lisp_Object w32_get_watch_object (void *);
extern Lisp_Object lispy_file_action (DWORD);
extern int handle_file_notifications (struct input_event *);
@@ -738,6 +728,16 @@ extern int handle_file_notifications (struct input_event *);
extern void w32_initialize_display_info (Lisp_Object);
extern void initialize_w32_display (struct terminal *, int *, int *);
+#ifdef WINDOWSNT
+/* Keyboard hooks. */
+extern void setup_w32_kbdhook (void);
+extern void remove_w32_kbdhook (void);
+extern int check_w32_winkey_state (int);
+#define w32_kbdhook_active (os_subtype != OS_9X)
+#else
+#define w32_kbdhook_active 0
+#endif
+
/* Keypad command key support. W32 doesn't have virtual keys defined
for the function keys on the keypad (they are mapped to the standard
function keys), so we define our own. */
diff --git a/src/w32uniscribe.c b/src/w32uniscribe.c
index ddca5f5ef5..5f91b5022d 100644
--- a/src/w32uniscribe.c
+++ b/src/w32uniscribe.c
@@ -50,7 +50,7 @@ static int CALLBACK ALIGN_STACK add_opentype_font_name_to_list (ENUMLOGFONTEX *,
NEWTEXTMETRICEX *,
DWORD, LPARAM);
/* Used by uniscribe_otf_capability. */
-static Lisp_Object otf_features (HDC context, char *table);
+static Lisp_Object otf_features (HDC context, const char *table);
static int
memq_no_quit (Lisp_Object elt, Lisp_Object list)
@@ -1042,7 +1042,7 @@ uniscribe_check_otf (LOGFONT *font, Lisp_Object otf_spec)
}
static Lisp_Object
-otf_features (HDC context, char *table)
+otf_features (HDC context, const char *table)
{
Lisp_Object script_list = Qnil;
unsigned short scriptlist_table, n_scripts, feature_table;
@@ -1166,6 +1166,8 @@ struct font_driver uniscribe_font_driver =
/* Note that this should be called at every startup, not just when dumping,
as it needs to test for the existence of the Uniscribe library. */
+void syms_of_w32uniscribe (void);
+
void
syms_of_w32uniscribe (void)
{
diff --git a/src/w32xfns.c b/src/w32xfns.c
index 04bf5ce733..b5b22c9aa5 100644
--- a/src/w32xfns.c
+++ b/src/w32xfns.c
@@ -48,6 +48,21 @@ init_crit (void)
when the input queue is empty, so make it a manual reset event. */
input_available = CreateEvent (NULL, TRUE, FALSE, NULL);
+#if HAVE_W32NOTIFY
+ /* Initialize the linked list of notifications sets that will be
+ used to communicate between the watching worker threads and the
+ main thread. */
+ notifications_set_head = malloc (sizeof(struct notifications_set));
+ if (notifications_set_head)
+ {
+ memset (notifications_set_head, 0, sizeof(struct notifications_set));
+ notifications_set_head->next
+ = notifications_set_head->prev = notifications_set_head;
+ }
+ else
+ DebPrint(("Out of memory: can't initialize notifications sets."));
+#endif
+
#ifdef WINDOWSNT
keyboard_handle = input_available;
#endif /* WINDOWSNT */
@@ -76,6 +91,23 @@ delete_crit (void)
CloseHandle (interrupt_handle);
interrupt_handle = NULL;
}
+
+#if HAVE_W32NOTIFY
+ if (notifications_set_head)
+ {
+ /* Free any remaining notifications set that could be left over. */
+ while (notifications_set_head->next != notifications_set_head)
+ {
+ struct notifications_set *ns = notifications_set_head->next;
+ notifications_set_head->next = ns->next;
+ ns->next->prev = notifications_set_head;
+ if (ns->notifications)
+ free (ns->notifications);
+ free (ns);
+ }
+ }
+ free (notifications_set_head);
+#endif
}
void
diff --git a/src/window.c b/src/window.c
index 733cf75d13..374ef0f838 100644
--- a/src/window.c
+++ b/src/window.c
@@ -57,6 +57,7 @@ static bool foreach_window_1 (struct window *,
static bool window_resize_check (struct window *, bool);
static void window_resize_apply (struct window *, bool);
static void select_window_1 (Lisp_Object, bool);
+static void run_window_configuration_change_hook (struct frame *);
static struct window *set_window_fringes (struct window *, Lisp_Object,
Lisp_Object, Lisp_Object);
@@ -720,6 +721,36 @@ the height of the screen areas spanned by its children. */)
return make_number (decode_valid_window (window)->pixel_height);
}
+DEFUN ("window-pixel-width-before-size-change",
+ Fwindow_pixel_width_before_size_change,
+ Swindow_pixel_width_before_size_change, 0, 1, 0,
+ doc: /* Return pixel width of window WINDOW before last size changes.
+WINDOW must be a valid window and defaults to the selected one.
+
+The return value is the pixel width of WINDOW at the last time
+`window-size-change-functions' was run. It's zero if WINDOW was made
+after that. */)
+ (Lisp_Object window)
+{
+ return (make_number
+ (decode_valid_window (window)->pixel_width_before_size_change));
+}
+
+DEFUN ("window-pixel-height-before-size-change",
+ Fwindow_pixel_height_before_size_change,
+ Swindow_pixel_height_before_size_change, 0, 1, 0,
+ doc: /* Return pixel height of window WINDOW before last size changes.
+WINDOW must be a valid window and defaults to the selected one.
+
+The return value is the pixel height of WINDOW at the last time
+`window-size-change-functions' was run. It's zero if WINDOW was made
+after that. */)
+ (Lisp_Object window)
+{
+ return (make_number
+ (decode_valid_window (window)->pixel_height_before_size_change));
+}
+
DEFUN ("window-total-height", Fwindow_total_height, Swindow_total_height, 0, 2, 0,
doc: /* Return the height of window WINDOW in lines.
WINDOW must be a valid window and defaults to the selected one.
@@ -2828,32 +2859,27 @@ selected frame and no others. */)
static Lisp_Object
-resize_root_window (Lisp_Object window, Lisp_Object delta, Lisp_Object horizontal, Lisp_Object ignore, Lisp_Object pixelwise)
+resize_root_window (Lisp_Object window, Lisp_Object delta,
+ Lisp_Object horizontal, Lisp_Object ignore,
+ Lisp_Object pixelwise)
{
- return call5 (Qwindow_resize_root_window, window, delta, horizontal, ignore, pixelwise);
+ return call5 (Qwindow__resize_root_window, window, delta,
+ horizontal, ignore, pixelwise);
}
-/* Placeholder used by temacs -nw before window.el is loaded. */
-DEFUN ("window--sanitize-window-sizes", Fwindow__sanitize_window_sizes,
- Swindow__sanitize_window_sizes, 2, 2, 0,
- doc: /* */
- attributes: const)
- (Lisp_Object frame, Lisp_Object horizontal)
-{
- return Qnil;
-}
-
-Lisp_Object
-sanitize_window_sizes (Lisp_Object frame, Lisp_Object horizontal)
+void
+sanitize_window_sizes (Lisp_Object horizontal)
{
- return call2 (Qwindow_sanitize_window_sizes, frame, horizontal);
+ /* Don't burp in temacs -nw before window.el is loaded. */
+ if (!NILP (Fsymbol_function (Qwindow__sanitize_window_sizes)))
+ call1 (Qwindow__sanitize_window_sizes, horizontal);
}
static Lisp_Object
window_pixel_to_total (Lisp_Object frame, Lisp_Object horizontal)
{
- return call2 (Qwindow_pixel_to_total, frame, horizontal);
+ return call2 (Qwindow__pixel_to_total, frame, horizontal);
}
@@ -2876,9 +2902,12 @@ window-start value is reasonable when this function is called. */)
{
struct window *w, *r, *s;
struct frame *f;
- Lisp_Object sibling, pwindow, swindow IF_LINT (= Qnil), delta;
- ptrdiff_t startpos IF_LINT (= 0), startbyte IF_LINT (= 0);
- int top IF_LINT (= 0), new_top;
+ Lisp_Object sibling, pwindow, delta;
+ Lisp_Object swindow UNINIT;
+ ptrdiff_t startpos UNINIT, startbyte UNINIT;
+ int top UNINIT;
+ int new_top;
+ bool resize_failed = false;
w = decode_valid_window (window);
XSETWINDOW (window, w);
@@ -2978,8 +3007,6 @@ window-start value is reasonable when this function is called. */)
fset_redisplay (f);
Vwindow_list = Qnil;
- FRAME_WINDOW_SIZES_CHANGED (f) = true;
- bool resize_failed = false;
if (!WINDOW_LEAF_P (w))
{
@@ -3157,7 +3184,7 @@ select_frame_norecord (Lisp_Object frame)
Fselect_frame (frame, Qt);
}
-void
+static void
run_window_configuration_change_hook (struct frame *f)
{
ptrdiff_t count = SPECPDL_INDEX ();
@@ -3229,6 +3256,76 @@ If WINDOW is omitted or nil, it defaults to the selected window. */)
return Qnil;
}
+
+/* Compare old and present pixel sizes of windows in tree rooted at W.
+ Return true iff any of these windows differs in size. */
+
+static bool
+window_size_changed (struct window *w)
+{
+ if (w->pixel_width != w->pixel_width_before_size_change
+ || w->pixel_height != w->pixel_height_before_size_change)
+ return true;
+
+ if (WINDOW_INTERNAL_P (w))
+ {
+ w = XWINDOW (w->contents);
+ while (w)
+ {
+ if (window_size_changed (w))
+ return true;
+
+ w = NILP (w->next) ? 0 : XWINDOW (w->next);
+ }
+ }
+
+ return false;
+}
+
+/* Set before size change pixel sizes of windows in tree rooted at W to
+ their present pixel sizes. */
+
+static void
+window_set_before_size_change_sizes (struct window *w)
+{
+ w->pixel_width_before_size_change = w->pixel_width;
+ w->pixel_height_before_size_change = w->pixel_height;
+
+ if (WINDOW_INTERNAL_P (w))
+ {
+ w = XWINDOW (w->contents);
+ while (w)
+ {
+ window_set_before_size_change_sizes (w);
+ w = NILP (w->next) ? 0 : XWINDOW (w->next);
+ }
+ }
+}
+
+
+void
+run_window_size_change_functions (Lisp_Object frame)
+{
+ struct frame *f = XFRAME (frame);
+ struct window *r = XWINDOW (FRAME_ROOT_WINDOW (f));
+ Lisp_Object functions = Vwindow_size_change_functions;
+
+ if (FRAME_WINDOW_CONFIGURATION_CHANGED (f)
+ || window_size_changed (r))
+ {
+ while (CONSP (functions))
+ {
+ if (!EQ (XCAR (functions), Qt))
+ safe_call1 (XCAR (functions), frame);
+ functions = XCDR (functions);
+ }
+
+ window_set_before_size_change_sizes (r);
+ FRAME_WINDOW_CONFIGURATION_CHANGED (f) = false;
+ }
+}
+
+
/* Make WINDOW display BUFFER. RUN_HOOKS_P means it's allowed
to run hooks. See make_frame for a case where it's not allowed.
KEEP_MARGINS_P means that the current margins, fringes, and
@@ -3263,15 +3360,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
if (!(keep_margins_p && samebuf))
{ /* If we're not actually changing the buffer, don't reset hscroll
- and vscroll. This case happens for example when called from
- change_frame_size_1, where we use a dummy call to
- Fset_window_buffer on the frame's selected window (and no
- other) just in order to run window-configuration-change-hook
- (no longer true since change_frame_size_1 directly calls
- run_window_configuration_change_hook). Resetting hscroll and
- vscroll here is problematic for things like image-mode and
- doc-view-mode since it resets the image's position whenever we
- resize the frame. */
+ and vscroll. Resetting hscroll and vscroll here is problematic
+ for things like image-mode and doc-view-mode since it resets
+ the image's position whenever we resize the frame. */
w->hscroll = w->min_hscroll = w->hscroll_whole = 0;
w->suspend_auto_hscroll = false;
w->vscroll = 0;
@@ -3283,10 +3374,8 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
w->start_at_line_beg = false;
w->force_start = false;
}
- /* Maybe we could move this into the `if' but it's not obviously safe and
- I doubt it's worth the trouble. */
- wset_redisplay (w);
+ wset_redisplay (w);
wset_update_mode_line (w);
/* We must select BUFFER to run the window-scroll-functions and to look up
@@ -3314,7 +3403,7 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
if (run_hooks_p)
{
- if (! NILP (Vwindow_scroll_functions))
+ if (!NILP (Vwindow_scroll_functions))
run_hook_with_args_2 (Qwindow_scroll_functions, window,
Fmarker_position (w->start));
if (!samebuf)
@@ -3559,6 +3648,8 @@ make_window (void)
w->phys_cursor_width = -1;
#endif
w->sequence_number = ++sequence_number;
+ w->pixel_width_before_size_change = 0;
+ w->pixel_height_before_size_change = 0;
w->scroll_bar_width = -1;
w->scroll_bar_height = -1;
w->column_number_displayed = -1;
@@ -3922,7 +4013,6 @@ be applied on the Elisp level. */)
window_resize_apply (r, horflag);
fset_redisplay (f);
- FRAME_WINDOW_SIZES_CHANGED (f) = true;
adjust_frame_glyphs (f);
unblock_input ();
@@ -4089,7 +4179,6 @@ resize_frame_windows (struct frame *f, int size, bool horflag, bool pixelwise)
}
}
- FRAME_WINDOW_SIZES_CHANGED (f) = true;
fset_redisplay (f);
}
@@ -4216,7 +4305,6 @@ set correctly. See the code of `split-window' for how this is done. */)
p = XWINDOW (o->parent);
fset_redisplay (f);
- FRAME_WINDOW_SIZES_CHANGED (f) = true;
new = make_window ();
n = XWINDOW (new);
wset_frame (n, frame);
@@ -4385,7 +4473,6 @@ Signal an error when WINDOW is the only window on its frame. */)
fset_redisplay (f);
Vwindow_list = Qnil;
- FRAME_WINDOW_SIZES_CHANGED (f) = true;
wset_next (w, Qnil); /* Don't delete w->next too. */
free_window_matrices (w);
@@ -4453,9 +4540,6 @@ Signal an error when WINDOW is the only window on its frame. */)
}
else
unblock_input ();
-
- /* Must be run by the caller:
- run_window_configuration_change_hook (f); */
}
else
/* We failed: Relink WINDOW into window tree. */
@@ -4498,7 +4582,7 @@ grow_mini_window (struct window *w, int delta, bool pixelwise)
{
root = FRAME_ROOT_WINDOW (f);
r = XWINDOW (root);
- height = call3 (Qwindow_resize_root_window_vertically,
+ height = call3 (Qwindow__resize_root_window_vertically,
root, make_number (- delta), pixelwise ? Qt : Qnil);
if (INTEGERP (height) && window_resize_check (r, false))
{
@@ -4529,10 +4613,12 @@ grow_mini_window (struct window *w, int delta, bool pixelwise)
/* Enforce full redisplay of the frame. */
/* FIXME: Shouldn't window--resize-root-window-vertically do it? */
fset_redisplay (f);
- FRAME_WINDOW_SIZES_CHANGED (f) = true;
adjust_frame_glyphs (f);
unblock_input ();
}
+ else
+ error ("Failed to grow minibuffer window");
+
}
}
@@ -4553,7 +4639,7 @@ shrink_mini_window (struct window *w, bool pixelwise)
{
root = FRAME_ROOT_WINDOW (f);
r = XWINDOW (root);
- delta = call3 (Qwindow_resize_root_window_vertically,
+ delta = call3 (Qwindow__resize_root_window_vertically,
root, make_number (height - unit),
pixelwise ? Qt : Qnil);
if (INTEGERP (delta) && window_resize_check (r, false))
@@ -4569,7 +4655,6 @@ shrink_mini_window (struct window *w, bool pixelwise)
/* Enforce full redisplay of the frame. */
/* FIXME: Shouldn't window--resize-root-window-vertically do it? */
fset_redisplay (f);
- FRAME_WINDOW_SIZES_CHANGED (f) = true;
adjust_frame_glyphs (f);
unblock_input ();
}
@@ -4577,6 +4662,8 @@ shrink_mini_window (struct window *w, bool pixelwise)
one window frame here. The same routine will be needed when
shrinking the frame (and probably when making the initial
*scratch* window). For the moment leave things as they are. */
+ else
+ error ("Failed to shrink minibuffer window");
}
}
@@ -4612,7 +4699,6 @@ DEFUN ("resize-mini-window-internal", Fresize_mini_window_internal, Sresize_mini
w->top_line = r->top_line + r->total_lines;
fset_redisplay (f);
- FRAME_WINDOW_SIZES_CHANGED (f) = true;
adjust_frame_glyphs (f);
unblock_input ();
return Qt;
@@ -5557,21 +5643,14 @@ displayed_window_lines (struct window *w)
bottom_y = line_bottom_y (&it);
bidi_unshelve_cache (itdata, false);
- /* rms: On a non-window display,
- the value of it.vpos at the bottom of the screen
- seems to be 1 larger than window_box_height (w).
- This kludge fixes a bug whereby (move-to-window-line -1)
- when ZV is on the last screen line
- moves to the previous screen line instead of the last one. */
- if (! FRAME_WINDOW_P (XFRAME (w->frame)))
- height++;
-
/* Add in empty lines at the bottom of the window. */
if (bottom_y < height)
{
int uy = FRAME_LINE_HEIGHT (it.f);
it.vpos += (height - bottom_y + uy - 1) / uy;
}
+ else if (bottom_y == height)
+ it.vpos++;
if (old_buffer)
set_buffer_internal (old_buffer);
@@ -5601,7 +5680,7 @@ and redisplay normally--don't erase and redraw the frame. */)
struct buffer *buf = XBUFFER (w->contents);
bool center_p = false;
ptrdiff_t charpos, bytepos;
- EMACS_INT iarg IF_LINT (= 0);
+ EMACS_INT iarg;
int this_scroll_margin;
if (buf != current_buffer)
@@ -5846,7 +5925,12 @@ DEFUN ("move-to-window-line", Fmove_to_window_line, Smove_to_window_line,
doc: /* Position point relative to window.
ARG nil means position point at center of window.
Else, ARG specifies vertical position within the window;
-zero means top of window, negative means relative to bottom of window. */)
+zero means top of window, negative means relative to bottom
+of window, -1 meaning the last fully visible display line
+of the window.
+
+Value is the screen line of the window point moved to, counting
+from the top of the window. */)
(Lisp_Object arg)
{
struct window *w = XWINDOW (selected_window);
@@ -5950,6 +6034,7 @@ struct saved_window
Lisp_Object window, buffer, start, pointm, old_pointm;
Lisp_Object pixel_left, pixel_top, pixel_height, pixel_width;
+ Lisp_Object pixel_height_before_size_change, pixel_width_before_size_change;
Lisp_Object left_col, top_line, total_cols, total_lines;
Lisp_Object normal_cols, normal_lines;
Lisp_Object hscroll, min_hscroll, hscroll_whole, suspend_auto_hscroll;
@@ -6065,6 +6150,12 @@ the return value is nil. Otherwise the value is t. */)
struct window *root_window;
struct window **leaf_windows;
ptrdiff_t i, k, n_leaf_windows;
+ /* Records whether a window has been added or removed wrt the
+ original configuration. */
+ bool window_changed = false;
+ /* Records whether a window has changed its buffer wrt the
+ original configuration. */
+ bool buffer_changed = false;
/* Don't do this within the main loop below: This may call Lisp
code and is thus potentially unsafe while input is blocked. */
@@ -6073,6 +6164,12 @@ the return value is nil. Otherwise the value is t. */)
p = SAVED_WINDOW_N (saved_windows, k);
window = p->window;
w = XWINDOW (window);
+
+ if (NILP (w->contents))
+ /* A dead window that will be resurrected, the window
+ configuration will change. */
+ window_changed = true;
+
if (BUFFERP (w->contents)
&& !EQ (w->contents, p->buffer)
&& BUFFER_LIVE_P (XBUFFER (p->buffer)))
@@ -6102,7 +6199,6 @@ the return value is nil. Otherwise the value is t. */)
}
fset_redisplay (f);
- FRAME_WINDOW_SIZES_CHANGED (f) = true;
/* Problem: Freeing all matrices and later allocating them again
is a serious redisplay flickering problem. What we would
@@ -6158,6 +6254,10 @@ the return value is nil. Otherwise the value is t. */)
w->pixel_top = XFASTINT (p->pixel_top);
w->pixel_width = XFASTINT (p->pixel_width);
w->pixel_height = XFASTINT (p->pixel_height);
+ w->pixel_width_before_size_change
+ = XFASTINT (p->pixel_width_before_size_change);
+ w->pixel_height_before_size_change
+ = XFASTINT (p->pixel_height_before_size_change);
w->left_col = XFASTINT (p->left_col);
w->top_line = XFASTINT (p->top_line);
w->total_cols = XFASTINT (p->total_cols);
@@ -6205,6 +6305,9 @@ the return value is nil. Otherwise the value is t. */)
if (BUFFERP (p->buffer) && BUFFER_LIVE_P (XBUFFER (p->buffer)))
/* If saved buffer is alive, install it. */
{
+ if (!EQ (w->contents, p->buffer))
+ /* Record buffer configuration change. */
+ buffer_changed = true;
wset_buffer (w, p->buffer);
w->start_at_line_beg = !NILP (p->start_at_line_beg);
set_marker_restricted (w->start, p->start, w->contents);
@@ -6238,6 +6341,8 @@ the return value is nil. Otherwise the value is t. */)
else if (!NILP (w->start))
/* Leaf window has no live buffer, get one. */
{
+ /* Record buffer configuration change. */
+ buffer_changed = true;
/* Get the buffer via other_buffer_safely in order to
avoid showing an unimportant buffer and, if necessary, to
recreate *scratch* in the course (part of Juanma's bs-show
@@ -6285,7 +6390,10 @@ the return value is nil. Otherwise the value is t. */)
/* Now, free glyph matrices in windows that were not reused. */
for (i = 0; i < n_leaf_windows; i++)
if (NILP (leaf_windows[i]->contents))
- free_window_matrices (leaf_windows[i]);
+ {
+ free_window_matrices (leaf_windows[i]);
+ window_changed = true;
+ }
/* Allow x_set_window_size again and apply frame size changes if
needed. */
@@ -6305,7 +6413,8 @@ the return value is nil. Otherwise the value is t. */)
/* Record the selected window's buffer here. The window should
already be the selected one from the call above. */
- select_window (data->current_window, Qnil, false);
+ if (WINDOW_LIVE_P (data->current_window))
+ select_window (data->current_window, Qnil, false);
/* Fselect_window will have made f the selected frame, so we
reselect the proper frame here. Fhandle_switch_frame will change the
@@ -6315,7 +6424,32 @@ the return value is nil. Otherwise the value is t. */)
if (FRAME_LIVE_P (XFRAME (data->selected_frame)))
do_switch_frame (data->selected_frame, 0, 0, Qnil);
- run_window_configuration_change_hook (f);
+ if (window_changed)
+ /* At least one window has been added or removed. Run
+ `window-configuration-change-hook' and make sure
+ `window-size-change-functions' get run later.
+
+ We have to do this in order to capture the following
+ scenario: Suppose our frame contains two live windows W1 and
+ W2 and ‘set-window-configuration’ replaces them by two
+ windows W3 and W4 that were dead the last time
+ run_window_size_change_functions was run. If W3 and W4 have
+ the same values for their old and new pixel sizes but these
+ values differ from those of W1 and W2, the sizes of our
+ frame's two live windows changed but window_size_changed has
+ no means to detect that fact.
+
+ Obviously, this will get us false positives, for example,
+ when we restore the original configuration with W1 and W2
+ before run_window_size_change_functions gets called. */
+ {
+ run_window_configuration_change_hook (f);
+ FRAME_WINDOW_CONFIGURATION_CHANGED (f) = true;
+ }
+ else if (buffer_changed)
+ /* At least one window has changed its buffer. Run
+ `window-configuration-change-hook' only. */
+ run_window_configuration_change_hook (f);
}
if (!NILP (new_current_buffer))
@@ -6466,6 +6600,10 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, ptrdiff_t i)
p->pixel_top = make_number (w->pixel_top);
p->pixel_width = make_number (w->pixel_width);
p->pixel_height = make_number (w->pixel_height);
+ p->pixel_width_before_size_change
+ = make_number (w->pixel_width_before_size_change);
+ p->pixel_height_before_size_change
+ = make_number (w->pixel_height_before_size_change);
p->left_col = make_number (w->left_col);
p->top_line = make_number (w->top_line);
p->total_cols = make_number (w->total_cols);
@@ -7166,10 +7304,11 @@ syms_of_window (void)
DEFSYM (Qwindow_valid_p, "window-valid-p");
DEFSYM (Qwindow_deletable_p, "window-deletable-p");
DEFSYM (Qdelete_window, "delete-window");
- DEFSYM (Qwindow_resize_root_window, "window--resize-root-window");
- DEFSYM (Qwindow_resize_root_window_vertically, "window--resize-root-window-vertically");
- DEFSYM (Qwindow_sanitize_window_sizes, "window--sanitize-window-sizes");
- DEFSYM (Qwindow_pixel_to_total, "window--pixel-to-total");
+ DEFSYM (Qwindow__resize_root_window, "window--resize-root-window");
+ DEFSYM (Qwindow__resize_root_window_vertically,
+ "window--resize-root-window-vertically");
+ DEFSYM (Qwindow__sanitize_window_sizes, "window--sanitize-window-sizes");
+ DEFSYM (Qwindow__pixel_to_total, "window--pixel-to-total");
DEFSYM (Qsafe, "safe");
DEFSYM (Qdisplay_buffer, "display-buffer");
DEFSYM (Qreplace_buffer_in_windows, "replace-buffer-in-windows");
@@ -7248,6 +7387,16 @@ selected; while the global part is run only once for the modified frame,
with the relevant frame selected. */);
Vwindow_configuration_change_hook = Qnil;
+ DEFVAR_LISP ("window-size-change-functions", Vwindow_size_change_functions,
+ doc: /* Functions called during redisplay, if window sizes have changed.
+The value should be a list of functions that take one argument.
+During the first part of redisplay, for each frame, if any of its windows
+have changed size since the last redisplay, or have been split or deleted,
+all the functions in the list are called, with the frame as argument.
+If redisplay decides to resize the minibuffer window, it calls these
+functions on behalf of that as well. */);
+ Vwindow_size_change_functions = Qnil;
+
DEFVAR_LISP ("recenter-redisplay", Vrecenter_redisplay,
doc: /* Non-nil means `recenter' redraws entire frame.
If this option is non-nil, then the `recenter' command with a nil
@@ -7376,6 +7525,8 @@ displayed after a scrolling operation to be somewhat inaccurate. */);
defsubr (&Swindow_use_time);
defsubr (&Swindow_pixel_width);
defsubr (&Swindow_pixel_height);
+ defsubr (&Swindow_pixel_width_before_size_change);
+ defsubr (&Swindow_pixel_height_before_size_change);
defsubr (&Swindow_total_width);
defsubr (&Swindow_total_height);
defsubr (&Swindow_normal_size);
@@ -7417,7 +7568,6 @@ displayed after a scrolling operation to be somewhat inaccurate. */);
defsubr (&Sset_window_display_table);
defsubr (&Snext_window);
defsubr (&Sprevious_window);
- defsubr (&Swindow__sanitize_window_sizes);
defsubr (&Sget_buffer_window);
defsubr (&Sdelete_other_windows_internal);
defsubr (&Sdelete_window_internal);
diff --git a/src/window.h b/src/window.h
index 0cfff88be5..c289819485 100644
--- a/src/window.h
+++ b/src/window.h
@@ -214,6 +214,11 @@ struct window
int pixel_width;
int pixel_height;
+ /* The pixel sizes of the window at the last time
+ `window-size-change-functions' was run. */
+ int pixel_width_before_size_change;
+ int pixel_height_before_size_change;
+
/* The size of the window. */
int total_cols;
int total_lines;
@@ -499,15 +504,17 @@ wset_next_buffers (struct window *w, Lisp_Object val)
#define WINDOW_LEAF_P(W) \
(BUFFERP ((W)->contents))
-/* True if W is a member of horizontal combination. */
+/* Non-nil if W is internal. */
+#define WINDOW_INTERNAL_P(W) \
+ (WINDOWP ((W)->contents))
+/* True if W is a member of horizontal combination. */
#define WINDOW_HORIZONTAL_COMBINATION_P(W) \
- (WINDOWP ((W)->contents) && (W)->horizontal)
+ (WINDOW_INTERNAL_P (W) && (W)->horizontal)
/* True if W is a member of vertical combination. */
-
#define WINDOW_VERTICAL_COMBINATION_P(W) \
- (WINDOWP ((W)->contents) && !(W)->horizontal)
+ (WINDOW_INTERNAL_P (W) && !(W)->horizontal)
/* WINDOW's XFRAME. */
#define WINDOW_XFRAME(W) (XFRAME (WINDOW_FRAME ((W))))
@@ -786,7 +793,7 @@ wset_next_buffers (struct window *w, Lisp_Object val)
|| WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (W))
#if (defined (HAVE_WINDOW_SYSTEM) \
- && ((defined (USE_TOOLKIT_SCROLL_BARS) && !defined (HAVE_NS)) \
+ && ((defined (USE_TOOLKIT_SCROLL_BARS)) \
|| defined (HAVE_NTGUI)))
# define USE_HORIZONTAL_SCROLL_BARS true
#else
@@ -1013,7 +1020,7 @@ extern void grow_mini_window (struct window *, int, bool);
extern void shrink_mini_window (struct window *, bool);
extern int window_relative_x_coord (struct window *, enum window_part, int);
-void run_window_configuration_change_hook (struct frame *f);
+void run_window_size_change_functions (Lisp_Object);
/* Make WINDOW display BUFFER. RUN_HOOKS_P means it's allowed
to run hooks. See make_frame for a case where it's not allowed. */
@@ -1098,7 +1105,7 @@ extern int window_body_width (struct window *w, bool);
extern void temp_output_buffer_show (Lisp_Object);
extern void replace_buffer_in_windows (Lisp_Object);
extern void replace_buffer_in_windows_safely (Lisp_Object);
-extern Lisp_Object sanitize_window_sizes (Lisp_Object, Lisp_Object);
+extern void sanitize_window_sizes (Lisp_Object horizontal);
/* This looks like a setter, but it is a bit special. */
extern void wset_buffer (struct window *, Lisp_Object);
extern bool window_outdated (struct window *);
diff --git a/src/xdisp.c b/src/xdisp.c
index 24daa0c3b7..dc68cd48e5 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1321,6 +1321,11 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y,
if (CHARPOS (top) > ZV)
SET_TEXT_POS (top, BEGV, BEGV_BYTE);
+ /* If the top of the window is after CHARPOS, the latter is surely
+ not visible. */
+ if (charpos >= 0 && CHARPOS (top) > charpos)
+ return visible_p;
+
/* Compute exact mode line heights. */
if (WINDOW_WANTS_MODELINE_P (w))
w->mode_line_height
@@ -1813,7 +1818,7 @@ estimate_mode_line_height (struct frame *f, enum face_id face_id)
cache and mode line face are not yet initialized. */
if (FRAME_FACE_CACHE (f))
{
- struct face *face = FACE_FROM_ID (f, face_id);
+ struct face *face = FACE_FROM_ID_OR_NULL (f, face_id);
if (face)
{
if (face->font)
@@ -2232,7 +2237,7 @@ get_phys_cursor_geometry (struct window *w, struct glyph_row *row,
ascent = row->ascent;
if (row->ascent < glyph->ascent)
{
- y =- glyph->ascent - row->ascent;
+ y -= glyph->ascent - row->ascent;
ascent = glyph->ascent;
}
@@ -2918,7 +2923,7 @@ init_iterator (struct it *it, struct window *w,
/* If we have a boxed mode line, make the first character appear
with a left box line. */
- face = FACE_FROM_ID (it->f, remapped_base_face_id);
+ face = FACE_FROM_ID_OR_NULL (it->f, remapped_base_face_id);
if (face && face->box != FACE_NO_BOX)
it->start_of_box_run_p = true;
}
@@ -3877,9 +3882,9 @@ handle_face_prop (struct it *it)
{
struct face *new_face = FACE_FROM_ID (it->f, new_face_id);
/* If it->face_id is -1, old_face below will be NULL, see
- the definition of FACE_FROM_ID. This will happen if this
- is the initial call that gets the face. */
- struct face *old_face = FACE_FROM_ID (it->f, it->face_id);
+ the definition of FACE_FROM_ID_OR_NULL. This will happen
+ if this is the initial call that gets the face. */
+ struct face *old_face = FACE_FROM_ID_OR_NULL (it->f, it->face_id);
/* If the value of face_id of the iterator is -1, we have to
look in front of IT's position and see whether there is a
@@ -3888,7 +3893,7 @@ handle_face_prop (struct it *it)
{
int prev_face_id = face_before_it_pos (it);
- old_face = FACE_FROM_ID (it->f, prev_face_id);
+ old_face = FACE_FROM_ID_OR_NULL (it->f, prev_face_id);
}
/* If the new face has a box, but the old face does not,
@@ -3988,7 +3993,7 @@ handle_face_prop (struct it *it)
if (new_face_id != it->face_id)
{
struct face *new_face = FACE_FROM_ID (it->f, new_face_id);
- struct face *old_face = FACE_FROM_ID (it->f, it->face_id);
+ struct face *old_face = FACE_FROM_ID_OR_NULL (it->f, it->face_id);
/* If new face has a box but old face hasn't, this is the
start of a run of characters with box, i.e. it has a
@@ -4847,7 +4852,6 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
it->font_height = XCAR (XCDR (spec));
if (!NILP (it->font_height))
{
- struct face *face = FACE_FROM_ID (it->f, it->face_id);
int new_height = -1;
if (CONSP (it->font_height)
@@ -4866,6 +4870,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
{
/* Call function with current height as argument.
Value is the new height. */
+ struct face *face = FACE_FROM_ID (it->f, it->face_id);
Lisp_Object height;
height = safe_call1 (it->font_height,
face->lface[LFACE_HEIGHT_INDEX]);
@@ -4887,6 +4892,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
/* Evaluate IT->font_height with `height' bound to the
current specified height to get the new height. */
ptrdiff_t count = SPECPDL_INDEX ();
+ struct face *face = FACE_FROM_ID (it->f, it->face_id);
specbind (Qheight, face->lface[LFACE_HEIGHT_INDEX]);
value = safe_eval (it->font_height);
@@ -5016,8 +5022,6 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
|| EQ (XCAR (spec), Qright_fringe))
&& CONSP (XCDR (spec)))
{
- int fringe_bitmap;
-
if (it)
{
if (!FRAME_WINDOW_P (it->f))
@@ -5042,8 +5046,8 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
#ifdef HAVE_WINDOW_SYSTEM
value = XCAR (XCDR (spec));
- if (!SYMBOLP (value)
- || !(fringe_bitmap = lookup_fringe_bitmap (value)))
+ int fringe_bitmap = SYMBOLP (value) ? lookup_fringe_bitmap (value) : 0;
+ if (! fringe_bitmap)
/* If we return here, POSITION has been advanced
across the text with this property. */
{
@@ -6096,7 +6100,7 @@ pop_it (struct it *it)
break;
case GET_FROM_STRING:
{
- struct face *face = FACE_FROM_ID (it->f, it->face_id);
+ struct face *face = FACE_FROM_ID_OR_NULL (it->f, it->face_id);
/* Restore the face_box_p flag, since it could have been
overwritten by the face of the object that we just finished
@@ -6777,7 +6781,8 @@ static next_element_function const get_next_element[NUM_IT_METHODS] =
|| ((IT)->cmp_it.stop_pos == (CHARPOS) \
&& composition_reseat_it (&(IT)->cmp_it, CHARPOS, BYTEPOS, \
END_CHARPOS, (IT)->w, \
- FACE_FROM_ID ((IT)->f, (IT)->face_id), \
+ FACE_FROM_ID_OR_NULL ((IT)->f, \
+ (IT)->face_id), \
(IT)->string)))
@@ -7080,6 +7085,19 @@ get_next_display_element (struct it *it)
goto display_control;
}
+ /* Handle non-ascii hyphens in the mode where it only
+ gets highlighting. */
+
+ if (nonascii_hyphen_p && EQ (Vnobreak_char_display, Qt))
+ {
+ /* Merge `nobreak-space' into the current face. */
+ face_id = merge_faces (it->f, Qnobreak_hyphen, 0,
+ it->face_id);
+ XSETINT (it->ctl_chars[0], '-');
+ ctl_len = 1;
+ goto display_control;
+ }
+
/* Handle sequences that start with the "escape glyph". */
/* the default escape glyph is \. */
@@ -7096,15 +7114,6 @@ get_next_display_element (struct it *it)
? merge_faces (it->f, Qt, lface_id, it->face_id)
: merge_escape_glyph_face (it));
- /* Draw non-ASCII hyphen with just highlighting: */
-
- if (nonascii_hyphen_p && EQ (Vnobreak_char_display, Qt))
- {
- XSETINT (it->ctl_chars[0], '-');
- ctl_len = 1;
- goto display_control;
- }
-
/* Draw non-ASCII space/hyphen with escape glyph: */
if (nonascii_space_p || nonascii_hyphen_p)
@@ -7202,7 +7211,7 @@ get_next_display_element (struct it *it)
if (it->method == GET_FROM_STRING && it->sp)
{
int face_id = underlying_face_id (it);
- struct face *face = FACE_FROM_ID (it->f, face_id);
+ struct face *face = FACE_FROM_ID_OR_NULL (it->f, face_id);
if (face)
{
@@ -7735,8 +7744,8 @@ next_element_from_display_vector (struct it *it)
/* Glyphs in the display vector could have the box face, so we
need to set the related flags in the iterator, as
appropriate. */
- this_face = FACE_FROM_ID (it->f, it->face_id);
- prev_face = FACE_FROM_ID (it->f, prev_face_id);
+ this_face = FACE_FROM_ID_OR_NULL (it->f, it->face_id);
+ prev_face = FACE_FROM_ID_OR_NULL (it->f, prev_face_id);
/* Is this character the first character of a box-face run? */
it->start_of_box_run_p = (this_face && this_face->box != FACE_NO_BOX
@@ -7761,7 +7770,7 @@ next_element_from_display_vector (struct it *it)
it->saved_face_id);
}
}
- next_face = FACE_FROM_ID (it->f, next_face_id);
+ next_face = FACE_FROM_ID_OR_NULL (it->f, next_face_id);
it->end_of_box_run_p = (this_face && this_face->box != FACE_NO_BOX
&& (!next_face
|| next_face->box == FACE_NO_BOX));
@@ -8553,7 +8562,8 @@ move_it_in_display_line_to (struct it *it,
void *ppos_data = NULL;
bool may_wrap = false;
enum it_method prev_method = it->method;
- ptrdiff_t closest_pos IF_LINT (= 0), prev_pos = IT_CHARPOS (*it);
+ ptrdiff_t closest_pos UNINIT;
+ ptrdiff_t prev_pos = IT_CHARPOS (*it);
bool saw_smaller_pos = prev_pos < to_charpos;
/* Don't produce glyphs in produce_glyphs. */
@@ -8604,8 +8614,7 @@ move_it_in_display_line_to (struct it *it,
&& it->dpvec + it->current.dpvec_index + 1 >= it->dpend)))
/* If there's a line-/wrap-prefix, handle it. */
- if (it->hpos == 0 && it->method == GET_FROM_BUFFER
- && it->current_y < it->last_visible_y)
+ if (it->hpos == 0 && it->method == GET_FROM_BUFFER)
handle_line_prefix (it);
if (IT_CHARPOS (*it) < CHARPOS (this_line_min_pos))
@@ -8805,6 +8814,8 @@ move_it_in_display_line_to (struct it *it,
? WINDOW_LEFT_FRINGE_WIDTH (it->w)
: WINDOW_RIGHT_FRINGE_WIDTH (it->w)))))
{
+ bool moved_forward = false;
+
if (/* IT->hpos == 0 means the very first glyph
doesn't fit on the line, e.g. a wide image. */
it->hpos == 0
@@ -8823,16 +8834,37 @@ move_it_in_display_line_to (struct it *it,
now that we know it fits in this row. */
if (BUFFER_POS_REACHED_P ())
{
+ bool can_wrap = true;
+
+ /* If we are at a whitespace character
+ that barely fits on this screen line,
+ but the next character is also
+ whitespace, we cannot wrap here. */
+ if (it->line_wrap == WORD_WRAP
+ && wrap_it.sp >= 0
+ && may_wrap
+ && IT_OVERFLOW_NEWLINE_INTO_FRINGE (it))
+ {
+ struct it tem_it;
+ void *tem_data = NULL;
+
+ SAVE_IT (tem_it, *it, tem_data);
+ set_iterator_to_next (it, true);
+ if (get_next_display_element (it)
+ && IT_DISPLAYING_WHITESPACE (it))
+ can_wrap = false;
+ RESTORE_IT (it, &tem_it, tem_data);
+ }
if (it->line_wrap != WORD_WRAP
|| wrap_it.sp < 0
- /* If we've just found whitespace to
- wrap, effectively ignore the
- previous wrap point -- it is no
- longer relevant, but we won't
- have an opportunity to update it,
- since we've reached the edge of
- this screen line. */
- || (may_wrap
+ /* If we've just found whitespace
+ where we can wrap, effectively
+ ignore the previous wrap point --
+ it is no longer relevant, but we
+ won't have an opportunity to
+ update it, since we've reached
+ the edge of this screen line. */
+ || (may_wrap && can_wrap
&& IT_OVERFLOW_NEWLINE_INTO_FRINGE (it)))
{
it->hpos = hpos_before_this_char;
@@ -8875,6 +8907,7 @@ move_it_in_display_line_to (struct it *it,
result = MOVE_POS_MATCH_OR_ZV;
break;
}
+ moved_forward = true;
if (BUFFER_POS_REACHED_P ())
{
if (ITERATOR_AT_END_OF_LINE_P (it))
@@ -8902,7 +8935,14 @@ move_it_in_display_line_to (struct it *it,
longer relevant, but we won't have an opportunity
to update it, since we are done with this screen
line. */
- if (may_wrap && IT_OVERFLOW_NEWLINE_INTO_FRINGE (it))
+ if (may_wrap && IT_OVERFLOW_NEWLINE_INTO_FRINGE (it)
+ /* If the character after the one which set the
+ may_wrap flag is also whitespace, we can't
+ wrap here, since the screen line cannot be
+ wrapped in the middle of whitespace.
+ Therefore, wrap_it _is_ relevant in that
+ case. */
+ && !(moved_forward && IT_DISPLAYING_WHITESPACE (it)))
{
/* If we've found TO_X, go back there, as we now
know the last word fits on this screen line. */
@@ -9001,6 +9041,11 @@ move_it_in_display_line_to (struct it *it,
}
else
result = MOVE_NEWLINE_OR_CR;
+ /* If we've processed the newline, make sure this flag is
+ reset, as it must only be set when the newline itself is
+ processed. */
+ if (result == MOVE_NEWLINE_OR_CR)
+ it->constrain_row_ascent_descent_p = false;
break;
}
@@ -9083,9 +9128,18 @@ move_it_in_display_line_to (struct it *it,
#undef BUFFER_POS_REACHED_P
- /* If we scanned beyond to_pos and didn't find a point to wrap at,
- restore the saved iterator. */
- if (atpos_it.sp >= 0)
+ /* If we scanned beyond TO_POS, restore the saved iterator either to
+ the wrap point (if found), or to atpos/atx location. We decide which
+ data to use to restore the saved iterator state by their X coordinates,
+ since buffer positions might increase non-monotonically with screen
+ coordinates due to bidi reordering. */
+ if (result == MOVE_LINE_CONTINUED
+ && it->line_wrap == WORD_WRAP
+ && wrap_it.sp >= 0
+ && ((atpos_it.sp >= 0 && wrap_it.current_x < atpos_it.current_x)
+ || (atx_it.sp >= 0 && wrap_it.current_x < atx_it.current_x)))
+ RESTORE_IT (it, &wrap_it, wrap_data);
+ else if (atpos_it.sp >= 0)
RESTORE_IT (it, &atpos_it, atpos_data);
else if (atx_it.sp >= 0)
RESTORE_IT (it, &atx_it, atx_data);
@@ -9827,26 +9881,28 @@ the maximum pixel-height of all text lines.
The optional argument FROM, if non-nil, specifies the first text
position and defaults to the minimum accessible position of the buffer.
-If FROM is t, use the minimum accessible position that is not a newline
-character. TO, if non-nil, specifies the last text position and
+If FROM is t, use the minimum accessible position that starts a
+non-empty line. TO, if non-nil, specifies the last text position and
defaults to the maximum accessible position of the buffer. If TO is t,
-use the maximum accessible position that is not a newline character.
+use the maximum accessible position that ends a non-empty line.
The optional argument X-LIMIT, if non-nil, specifies the maximum text
width that can be returned. X-LIMIT nil or omitted, means to use the
-pixel-width of WINDOW's body; use this if you do not intend to change
-the width of WINDOW. Use the maximum width WINDOW may assume if you
-intend to change WINDOW's width. In any case, text whose x-coordinate
-is beyond X-LIMIT is ignored. Since calculating the width of long lines
-can take some time, it's always a good idea to make this argument as
-small as possible; in particular, if the buffer contains long lines that
-shall be truncated anyway.
+pixel-width of WINDOW's body; use this if you want to know how high
+WINDOW should be become in order to fit all of its buffer's text with
+the width of WINDOW unaltered. Use the maximum width WINDOW may assume
+if you intend to change WINDOW's width. In any case, text whose
+x-coordinate is beyond X-LIMIT is ignored. Since calculating the width
+of long lines can take some time, it's always a good idea to make this
+argument as small as possible; in particular, if the buffer contains
+long lines that shall be truncated anyway.
The optional argument Y-LIMIT, if non-nil, specifies the maximum text
-height that can be returned. Text lines whose y-coordinate is beyond
-Y-LIMIT are ignored. Since calculating the text height of a large
-buffer can take some time, it makes sense to specify this argument if
-the size of the buffer is unknown.
+height (excluding the height of the mode- or header-line, if any) that
+can be returned. Text lines whose y-coordinate is beyond Y-LIMIT are
+ignored. Since calculating the text height of a large buffer can take
+some time, it makes sense to specify this argument if the size of the
+buffer is large or unknown.
Optional argument MODE-AND-HEADER-LINE nil or omitted means do not
include the height of the mode- or header-line of WINDOW in the return
@@ -9864,7 +9920,7 @@ include the height of both, if present, in the return value. */)
ptrdiff_t start, end, pos;
struct text_pos startp;
void *itdata = NULL;
- int c, max_y = -1, x = 0, y = 0;
+ int c, max_x = 0, max_y = 0, x = 0, y = 0;
CHECK_BUFFER (buffer);
b = XBUFFER (buffer);
@@ -9909,11 +9965,13 @@ include the height of both, if present, in the return value. */)
end = max (start, min (XINT (to), ZV));
}
- if (!NILP (y_limit))
- {
- CHECK_NUMBER (y_limit);
- max_y = min (XINT (y_limit), INT_MAX);
- }
+ if (!NILP (x_limit) && RANGED_INTEGERP (0, x_limit, INT_MAX))
+ max_x = XINT (x_limit);
+
+ if (NILP (y_limit))
+ max_y = INT_MAX;
+ else if (RANGED_INTEGERP (0, y_limit, INT_MAX))
+ max_y = XINT (y_limit);
itdata = bidi_shelve_cache ();
SET_TEXT_POS (startp, start, CHAR_TO_BYTE (start));
@@ -9923,27 +9981,33 @@ include the height of both, if present, in the return value. */)
x = move_it_to (&it, end, -1, max_y, -1, MOVE_TO_POS | MOVE_TO_Y);
else
{
- CHECK_NUMBER (x_limit);
- it.last_visible_x = min (XINT (x_limit), INFINITY);
+ it.last_visible_x = max_x;
/* Actually, we never want move_it_to stop at to_x. But to make
sure that move_it_in_display_line_to always moves far enough,
we set it to INT_MAX and specify MOVE_TO_X. */
x = move_it_to (&it, end, INT_MAX, max_y, -1,
MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y);
+ /* Don't return more than X-LIMIT. */
+ if (x > max_x)
+ x = max_x;
}
- y = it.current_y + it.max_ascent + it.max_descent;
+ /* Subtract height of header-line which was counted automatically by
+ start_display. */
+ y = it.current_y + it.max_ascent + it.max_descent
+ - WINDOW_HEADER_LINE_HEIGHT (w);
+ /* Don't return more than Y-LIMIT. */
+ if (y > max_y)
+ y = max_y;
- if (!EQ (mode_and_header_line, Qheader_line)
- && !EQ (mode_and_header_line, Qt))
- /* Do not count the header-line which was counted automatically by
- start_display. */
- y = y - WINDOW_HEADER_LINE_HEIGHT (w);
+ if (EQ (mode_and_header_line, Qheader_line)
+ || EQ (mode_and_header_line, Qt))
+ /* Re-add height of header-line as requested. */
+ y = y + WINDOW_HEADER_LINE_HEIGHT (w);
if (EQ (mode_and_header_line, Qmode_line)
|| EQ (mode_and_header_line, Qt))
- /* Do count the mode-line which is not included automatically by
- start_display. */
+ /* Add height of mode-line as requested. */
y = y + WINDOW_MODE_LINE_HEIGHT (w);
bidi_unshelve_cache (itdata, false);
@@ -10521,25 +10585,21 @@ update_echo_area (void)
static void
ensure_echo_area_buffers (void)
{
- int i;
-
- for (i = 0; i < 2; ++i)
+ for (int i = 0; i < 2; i++)
if (!BUFFERP (echo_buffer[i])
|| !BUFFER_LIVE_P (XBUFFER (echo_buffer[i])))
{
- char name[30];
- Lisp_Object old_buffer;
- int j;
-
- old_buffer = echo_buffer[i];
- echo_buffer[i] = Fget_buffer_create
- (make_formatted_string (name, " *Echo Area %d*", i));
+ Lisp_Object old_buffer = echo_buffer[i];
+ static char const name_fmt[] = " *Echo Area %d*";
+ char name[sizeof name_fmt + INT_STRLEN_BOUND (int)];
+ AUTO_STRING_WITH_LEN (lname, name, sprintf (name, name_fmt, i));
+ echo_buffer[i] = Fget_buffer_create (lname);
bset_truncate_lines (XBUFFER (echo_buffer[i]), Qnil);
/* to force word wrap in echo area -
it was decided to postpone this*/
/* XBUFFER (echo_buffer[i])->word_wrap = Qt; */
- for (j = 0; j < 2; ++j)
+ for (int j = 0; j < 2; j++)
if (EQ (old_buffer, echo_area_buffer[j]))
echo_area_buffer[j] = echo_buffer[i];
}
@@ -11684,6 +11744,12 @@ x_consider_frame_title (Lisp_Object frame)
record_unwind_protect (unwind_format_mode_line,
format_mode_line_unwind_data
(f, current_buffer, selected_window, false));
+ /* select-frame calls resize_mini_window, which could resize the
+ mini-window and by that undo the effect of this redisplay
+ cycle wrt minibuffer and echo-area display. Binding
+ inhibit-redisplay to t makes the call to resize_mini_window a
+ no-op, thus avoiding the adverse side effects. */
+ specbind (Qinhibit_redisplay, Qt);
Fselect_window (f->selected_window, Qt);
set_buffer_internal_1
@@ -11826,24 +11892,7 @@ prepare_menu_bars (void)
&& !XBUFFER (w->contents)->text->redisplay)
continue;
- /* If a window on this frame changed size, report that to
- the user and clear the size-change flag. */
- if (FRAME_WINDOW_SIZES_CHANGED (f))
- {
- Lisp_Object functions;
-
- /* Clear flag first in case we get an error below. */
- FRAME_WINDOW_SIZES_CHANGED (f) = false;
- functions = Vwindow_size_change_functions;
-
- while (CONSP (functions))
- {
- if (!EQ (XCAR (functions), Qt))
- call1 (XCAR (functions), frame);
- functions = XCDR (functions);
- }
- }
-
+ run_window_size_change_functions (frame);
menu_bar_hooks_run = update_menu_bar (f, false, menu_bar_hooks_run);
#ifdef HAVE_WINDOW_SYSTEM
update_tool_bar (f, false);
@@ -13518,7 +13567,7 @@ redisplay_internal (void)
specbind (Qinhibit_free_realized_faces, Qnil);
/* Record this function, so it appears on the profiler's backtraces. */
- record_in_backtrace (Qredisplay_internal, 0, 0);
+ record_in_backtrace (Qredisplay_internal_xC_functionx, 0, 0);
FOR_EACH_FRAME (tail, frame)
XFRAME (frame)->already_hscrolled_p = false;
@@ -13639,24 +13688,12 @@ redisplay_internal (void)
it's too late for the hooks in window-size-change-functions,
which have been examined already in prepare_menu_bars. So in
that case we call the hooks here only for the selected frame. */
- if (sf->redisplay && FRAME_WINDOW_SIZES_CHANGED (sf))
+ if (sf->redisplay)
{
- Lisp_Object functions;
ptrdiff_t count1 = SPECPDL_INDEX ();
record_unwind_save_match_data ();
-
- /* Clear flag first in case we get an error below. */
- FRAME_WINDOW_SIZES_CHANGED (sf) = false;
- functions = Vwindow_size_change_functions;
-
- while (CONSP (functions))
- {
- if (!EQ (XCAR (functions), Qt))
- call1 (XCAR (functions), selected_frame);
- functions = XCDR (functions);
- }
-
+ run_window_size_change_functions (selected_frame);
unbind_to (count1, Qnil);
}
@@ -13678,22 +13715,10 @@ redisplay_internal (void)
{
if (sf->redisplay)
{
- Lisp_Object functions;
ptrdiff_t count1 = SPECPDL_INDEX ();
record_unwind_save_match_data ();
-
- /* Clear flag first in case we get an error below. */
- FRAME_WINDOW_SIZES_CHANGED (sf) = false;
- functions = Vwindow_size_change_functions;
-
- while (CONSP (functions))
- {
- if (!EQ (XCAR (functions), Qt))
- call1 (XCAR (functions), selected_frame);
- functions = XCDR (functions);
- }
-
+ run_window_size_change_functions (selected_frame);
unbind_to (count1, Qnil);
}
@@ -14070,9 +14095,6 @@ redisplay_internal (void)
}
else if (FRAME_VISIBLE_P (sf) && !FRAME_OBSCURED_P (sf))
{
- Lisp_Object mini_window = FRAME_MINIBUF_WINDOW (sf);
- struct frame *mini_frame;
-
displayed_buffer = XBUFFER (XWINDOW (selected_window)->contents);
/* Use list_of_error, not Qerror, so that
we catch only errors and don't run the debugger. */
@@ -14080,8 +14102,8 @@ redisplay_internal (void)
list_of_error,
redisplay_window_error);
if (update_miniwindow_p)
- internal_condition_case_1 (redisplay_window_1, mini_window,
- list_of_error,
+ internal_condition_case_1 (redisplay_window_1,
+ FRAME_MINIBUF_WINDOW (sf), list_of_error,
redisplay_window_error);
/* Compare desired and current matrices, perform output. */
@@ -14131,8 +14153,8 @@ redisplay_internal (void)
have put text on a frame other than the selected one, so the
above call to update_frame would not have caught it. Catch
it here. */
- mini_window = FRAME_MINIBUF_WINDOW (sf);
- mini_frame = XFRAME (WINDOW_FRAME (XWINDOW (mini_window)));
+ Lisp_Object mini_window = FRAME_MINIBUF_WINDOW (sf);
+ struct frame *mini_frame = XFRAME (WINDOW_FRAME (XWINDOW (mini_window)));
if (mini_frame != sf && FRAME_WINDOW_P (mini_frame))
{
@@ -15297,6 +15319,40 @@ try_scrolling (Lisp_Object window, bool just_this_one_p,
if (dy > 0)
scroll_down_p = true;
}
+ else if (PT == IT_CHARPOS (it)
+ && IT_CHARPOS (it) < ZV
+ && it.method == GET_FROM_STRING
+ && arg_scroll_conservatively > scroll_limit
+ && it.current_x == 0)
+ {
+ enum move_it_result skip;
+ int y1 = it.current_y;
+ int vpos;
+
+ /* A before-string that includes newlines and is displayed
+ on the last visible screen line could fail us under
+ scroll-conservatively > 100, because we will be unable to
+ position the cursor on that last visible line. Try to
+ recover by finding the first screen line that has some
+ glyphs coming from the buffer text. */
+ do {
+ skip = move_it_in_display_line_to (&it, ZV, -1, MOVE_TO_POS);
+ if (skip != MOVE_NEWLINE_OR_CR
+ || IT_CHARPOS (it) != PT
+ || it.method == GET_FROM_BUFFER)
+ break;
+ vpos = it.vpos;
+ move_it_to (&it, -1, -1, -1, vpos + 1, MOVE_TO_VPOS);
+ } while (it.vpos > vpos);
+
+ dy = it.current_y - y1;
+
+ if (dy > scroll_max)
+ return SCROLLING_FAILED;
+
+ if (dy > 0)
+ scroll_down_p = true;
+ }
}
if (scroll_down_p)
@@ -15501,12 +15557,14 @@ try_scrolling (Lisp_Object window, bool just_this_one_p,
The new window start will be computed, based on W's width, starting
from the start of the continued line. It is the start of the
- screen line with the minimum distance from the old start W->start. */
+ screen line with the minimum distance from the old start W->start,
+ which is still before point (otherwise point will definitely not
+ be visible in the window). */
static bool
compute_window_start_on_continuation_line (struct window *w)
{
- struct text_pos pos, start_pos;
+ struct text_pos pos, start_pos, pos_before_pt;
bool window_start_changed_p = false;
SET_TEXT_POS_FROM_MARKER (start_pos, w->start);
@@ -15534,10 +15592,14 @@ compute_window_start_on_continuation_line (struct window *w)
reseat_at_previous_visible_line_start (&it);
/* If the line start is "too far" away from the window start,
- say it takes too much time to compute a new window start. */
- if (CHARPOS (start_pos) - IT_CHARPOS (it)
- /* PXW: Do we need upper bounds here? */
- < WINDOW_TOTAL_LINES (w) * WINDOW_TOTAL_COLS (w))
+ say it takes too much time to compute a new window start.
+ Also, give up if the line start is after point, as in that
+ case point will not be visible with any window start we
+ compute. */
+ if (IT_CHARPOS (it) <= PT
+ || (CHARPOS (start_pos) - IT_CHARPOS (it)
+ /* PXW: Do we need upper bounds here? */
+ < WINDOW_TOTAL_LINES (w) * WINDOW_TOTAL_COLS (w)))
{
int min_distance, distance;
@@ -15547,12 +15609,14 @@ compute_window_start_on_continuation_line (struct window *w)
decreased, the new window start will be < the old start.
So, we're looking for the display line start with the
minimum distance from the old window start. */
- pos = it.current.pos;
+ pos_before_pt = pos = it.current.pos;
min_distance = INFINITY;
while ((distance = eabs (CHARPOS (start_pos) - IT_CHARPOS (it))),
distance < min_distance)
{
min_distance = distance;
+ if (CHARPOS (pos) <= PT)
+ pos_before_pt = pos;
pos = it.current.pos;
if (it.line_wrap == WORD_WRAP)
{
@@ -15575,6 +15639,13 @@ compute_window_start_on_continuation_line (struct window *w)
move_it_by_lines (&it, 1);
}
+ /* It makes very little sense to make the new window start
+ after point, as point won't be visible. If that's what
+ the loop above finds, fall back on the candidate before
+ or at point that is closest to the old window start. */
+ if (CHARPOS (pos) > PT)
+ pos = pos_before_pt;
+
/* Set the window start there. */
SET_MARKER_FROM_TEXT_POS (w->start, pos);
window_start_changed_p = true;
@@ -16122,6 +16193,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
bool last_line_misfit = false;
ptrdiff_t beg_unchanged, end_unchanged;
int frame_line_height;
+ bool use_desired_matrix;
void *itdata = NULL;
SET_TEXT_POS (lpoint, PT, PT_BYTE);
@@ -16850,7 +16922,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
itdata = bidi_shelve_cache ();
/* Redisplay the window. */
- bool use_desired_matrix = false;
+ use_desired_matrix = false;
if (!current_matrix_up_to_date_p
|| windows_or_buffers_changed
|| f->cursor_type_changed
@@ -16890,6 +16962,27 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
move_it_by_lines (&it, -1);
try_window (window, it.current.pos, 0);
}
+ else if (scroll_conservatively > SCROLL_LIMIT
+ && (it.method == GET_FROM_STRING
+ || overlay_touches_p (IT_CHARPOS (it)))
+ && IT_CHARPOS (it) < ZV)
+ {
+ /* If the window starts with a before-string that spans more
+ than one screen line, using that position to display the
+ window might fail to bring point into the view, because
+ start_display will always start by displaying the string,
+ whereas the code above determines where to set w->start
+ by the buffer position of the place where it takes screen
+ coordinates. Try to recover by finding the next screen
+ line that displays buffer text. */
+ ptrdiff_t pos0 = IT_CHARPOS (it);
+
+ clear_glyph_matrix (w->desired_matrix);
+ do {
+ move_it_by_lines (&it, 1);
+ } while (IT_CHARPOS (it) == pos0);
+ try_window (window, it.current.pos, 0);
+ }
else
{
/* Not much we can do about it. */
@@ -17090,16 +17183,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
ignore_mouse_drag_p = true;
#endif
}
- ptrdiff_t count1 = SPECPDL_INDEX ();
- /* x_consider_frame_title calls select-frame, which calls
- resize_mini_window, which could resize the mini-window and by
- that undo the effect of this redisplay cycle wrt minibuffer
- and echo-area display. Binding inhibit-redisplay to t makes
- the call to resize_mini_window a no-op, thus avoiding the
- adverse side effects. */
- specbind (Qinhibit_redisplay, Qt);
x_consider_frame_title (w->frame);
- unbind_to (count1, Qnil);
#endif
}
@@ -18706,7 +18790,7 @@ try_window_id (struct window *w)
eassert (MATRIX_ROW_DISPLAYS_TEXT_P (first_unchanged_at_end_row));
row = find_last_row_displaying_text (w->current_matrix, &it,
first_unchanged_at_end_row);
- eassert (row && MATRIX_ROW_DISPLAYS_TEXT_P (row));
+ eassume (row && MATRIX_ROW_DISPLAYS_TEXT_P (row));
adjust_window_ends (w, row, true);
eassert (w->window_end_bytepos >= 0);
IF_DEBUG (debug_method_add (w, "A"));
@@ -18736,10 +18820,9 @@ try_window_id (struct window *w)
struct glyph_row *current_row = current_matrix->rows + vpos;
struct glyph_row *desired_row = desired_matrix->rows + vpos;
- for (row = NULL;
- row == NULL && vpos >= first_vpos;
- --vpos, --current_row, --desired_row)
+ for (row = NULL; !row; --vpos, --current_row, --desired_row)
{
+ eassert (first_vpos <= vpos);
if (desired_row->enabled_p)
{
if (MATRIX_ROW_DISPLAYS_TEXT_P (desired_row))
@@ -18749,7 +18832,6 @@ try_window_id (struct window *w)
row = current_row;
}
- eassert (row != NULL);
w->window_end_vpos = vpos + 1;
w->window_end_pos = Z - MATRIX_ROW_END_CHARPOS (row);
w->window_end_bytepos = Z_BYTE - MATRIX_ROW_END_BYTEPOS (row);
@@ -19513,7 +19595,6 @@ append_space_for_newline (struct it *it, bool default_face_p)
struct text_pos saved_pos;
Lisp_Object saved_object;
struct face *face;
- struct glyph *g;
saved_object = it->object;
saved_pos = it->position;
@@ -19549,7 +19630,7 @@ append_space_for_newline (struct it *it, bool default_face_p)
/* Make sure this space glyph has the right ascent and
descent values, or else cursor at end of line will look
funny, and height of empty lines will be incorrect. */
- g = it->glyph_row->glyphs[TEXT_AREA] + n;
+ struct glyph *g = it->glyph_row->glyphs[TEXT_AREA] + n;
struct font *font = face->font ? face->font : FRAME_FONT (it->f);
if (n == 0)
{
@@ -19674,15 +19755,15 @@ extend_face_to_end_of_line (struct it *it)
return;
/* The default face, possibly remapped. */
- default_face = FACE_FROM_ID (f, lookup_basic_face (f, DEFAULT_FACE_ID));
+ default_face = FACE_FROM_ID_OR_NULL (f,
+ lookup_basic_face (f, DEFAULT_FACE_ID));
/* Face extension extends the background and box of IT->face_id
to the end of the line. If the background equals the background
of the frame, we don't have to do anything. */
- if (it->face_before_selective_p)
- face = FACE_FROM_ID (f, it->saved_face_id);
- else
- face = FACE_FROM_ID (f, it->face_id);
+ face = FACE_FROM_ID (f, (it->face_before_selective_p
+ ? it->saved_face_id
+ : it->face_id));
if (FRAME_WINDOW_P (f)
&& MATRIX_ROW_DISPLAYS_TEXT_P (it->glyph_row)
@@ -20422,16 +20503,16 @@ display_line (struct it *it)
struct it wrap_it;
void *wrap_data = NULL;
bool may_wrap = false;
- int wrap_x IF_LINT (= 0);
+ int wrap_x UNINIT;
int wrap_row_used = -1;
- int wrap_row_ascent IF_LINT (= 0), wrap_row_height IF_LINT (= 0);
- int wrap_row_phys_ascent IF_LINT (= 0), wrap_row_phys_height IF_LINT (= 0);
- int wrap_row_extra_line_spacing IF_LINT (= 0);
- ptrdiff_t wrap_row_min_pos IF_LINT (= 0), wrap_row_min_bpos IF_LINT (= 0);
- ptrdiff_t wrap_row_max_pos IF_LINT (= 0), wrap_row_max_bpos IF_LINT (= 0);
+ int wrap_row_ascent UNINIT, wrap_row_height UNINIT;
+ int wrap_row_phys_ascent UNINIT, wrap_row_phys_height UNINIT;
+ int wrap_row_extra_line_spacing UNINIT;
+ ptrdiff_t wrap_row_min_pos UNINIT, wrap_row_min_bpos UNINIT;
+ ptrdiff_t wrap_row_max_pos UNINIT, wrap_row_max_bpos UNINIT;
int cvpos;
ptrdiff_t min_pos = ZV + 1, max_pos = 0;
- ptrdiff_t min_bpos IF_LINT (= 0), max_bpos IF_LINT (= 0);
+ ptrdiff_t min_bpos UNINIT, max_bpos UNINIT;
bool pending_handle_line_prefix = false;
/* We always start displaying at hpos zero even if hscrolled. */
@@ -21848,7 +21929,6 @@ Value is the new character position of point. */)
}
/* Move to the target X coordinate. */
-#ifdef HAVE_WINDOW_SYSTEM
/* On GUI frames, as we don't know the X coordinate of the
character to the left of point, moving point to the left
requires walking, one grapheme cluster at a time, until we
@@ -21905,9 +21985,7 @@ Value is the new character position of point. */)
new_pos.bytepos = CHAR_TO_BYTE (new_pos.charpos);
it.current.pos = new_pos;
}
- else
-#endif
- if (it.current_x != target_x)
+ else if (it.current_x != target_x)
move_it_in_display_line_to (&it, ZV, target_x, MOVE_TO_POS | MOVE_TO_X);
/* If we ended up in a display string that covers point, move to
@@ -24656,7 +24734,6 @@ get_glyph_face_and_encoding (struct frame *f, struct glyph *glyph,
face = FACE_FROM_ID (f, glyph->face_id);
/* Make sure X resources of the face are allocated. */
- eassert (face != NULL);
prepare_face_for_display (f, face);
if (face->font)
@@ -25381,7 +25458,7 @@ compute_overhangs_and_x (struct glyph_string *s, int x, bool backward_p)
#define BUILD_COMPOSITE_GLYPH_STRING(START, END, HEAD, TAIL, HL, X, LAST_X) \
do { \
int face_id = (row)->glyphs[area][START].face_id; \
- struct face *base_face = FACE_FROM_ID (f, face_id); \
+ struct face *base_face = FACE_FROM_ID (f, face_id); \
ptrdiff_t cmp_id = (row)->glyphs[area][START].u.cmp.id; \
struct composition *cmp = composition_table[cmp_id]; \
XChar2b *char2b; \
@@ -25602,7 +25679,7 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row,
{
struct glyph_string *h, *t;
Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f);
- int mouse_beg_col IF_LINT (= 0), mouse_end_col IF_LINT (= 0);
+ int mouse_beg_col UNINIT, mouse_end_col UNINIT;
bool check_mouse_face = false;
int dummy_x = 0;
@@ -26004,7 +26081,6 @@ produce_image_glyph (struct it *it)
eassert (it->what == IT_IMAGE);
face = FACE_FROM_ID (it->f, it->face_id);
- eassert (face);
/* Make sure X resources of the face is loaded. */
prepare_face_for_display (it->f, face);
@@ -26019,7 +26095,6 @@ produce_image_glyph (struct it *it)
}
img = IMAGE_FROM_ID (it->f, it->image_id);
- eassert (img);
/* Make sure X resources of the image is loaded. */
prepare_image_for_display (it->f, img);
@@ -26175,7 +26250,6 @@ produce_xwidget_glyph (struct it *it)
eassert (it->what == IT_XWIDGET);
struct face *face = FACE_FROM_ID (it->f, it->face_id);
- eassert (face);
/* Make sure X resources of the face is loaded. */
prepare_face_for_display (it->f, face);
@@ -26701,12 +26775,8 @@ calc_line_height_property (struct it *it, Lisp_Object val, struct font *font,
struct face *face;
face_id = lookup_named_face (it->f, face_name, false);
- if (face_id < 0)
- return make_number (-1);
-
- face = FACE_FROM_ID (it->f, face_id);
- font = face->font;
- if (font == NULL)
+ face = FACE_FROM_ID_OR_NULL (it->f, face_id);
+ if (face == NULL || ((font = face->font) == NULL))
return make_number (-1);
boff = font->baseline_offset;
if (font->vertical_centering)
@@ -27352,18 +27422,21 @@ x_produce_glyphs (struct it *it)
int leftmost, rightmost, lowest, highest;
int lbearing, rbearing;
int i, width, ascent, descent;
- int c IF_LINT (= 0); /* cmp->glyph_len can't be zero; see Bug#8512 */
+ int c;
XChar2b char2b;
struct font_metrics *pcm;
ptrdiff_t pos;
- for (glyph_len = cmp->glyph_len; glyph_len > 0; glyph_len--)
- if ((c = COMPOSITION_GLYPH (cmp, glyph_len - 1)) != '\t')
- break;
+ eassume (0 < glyph_len); /* See Bug#8512. */
+ do
+ c = COMPOSITION_GLYPH (cmp, glyph_len - 1);
+ while (c == '\t' && 0 < --glyph_len);
+
bool right_padded = glyph_len < cmp->glyph_len;
for (i = 0; i < glyph_len; i++)
{
- if ((c = COMPOSITION_GLYPH (cmp, i)) != '\t')
+ c = COMPOSITION_GLYPH (cmp, i);
+ if (c != '\t')
break;
cmp->offsets[i * 2] = cmp->offsets[i * 2 + 1] = 0;
}
@@ -28062,7 +28135,7 @@ get_window_cursor_type (struct window *w, struct glyph *glyph, int *width,
/* Using a block cursor on large images can be very annoying.
So use a hollow cursor for "large" images.
If image is not transparent (no mask), also use hollow cursor. */
- struct image *img = IMAGE_FROM_ID (f, glyph->u.img_id);
+ struct image *img = IMAGE_OPT_FROM_ID (f, glyph->u.img_id);
if (img != NULL && IMAGEP (img->spec))
{
/* Arbitrarily, interpret "Large" as >32x32 and >NxN
@@ -28687,12 +28760,12 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw)
}
}
-#ifdef HAVE_WINDOW_SYSTEM
/* When we've written over the cursor, arrange for it to
be displayed again. */
if (FRAME_WINDOW_P (f)
&& phys_cursor_on_p && !w->phys_cursor_on_p)
{
+#ifdef HAVE_WINDOW_SYSTEM
int hpos = w->phys_cursor.hpos;
/* When the window is hscrolled, cursor hpos can legitimately be
@@ -28707,8 +28780,8 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw)
display_and_set_cursor (w, true, hpos, w->phys_cursor.vpos,
w->phys_cursor.x, w->phys_cursor.y);
unblock_input ();
- }
#endif /* HAVE_WINDOW_SYSTEM */
+ }
}
#ifdef HAVE_WINDOW_SYSTEM
@@ -29648,12 +29721,17 @@ Returns the alist element for the first matching AREA in MAP. */)
clip_to_bounds (INT_MIN, XINT (x), INT_MAX),
clip_to_bounds (INT_MIN, XINT (y), INT_MAX));
}
+#endif /* HAVE_WINDOW_SYSTEM */
/* Display frame CURSOR, optionally using shape defined by POINTER. */
static void
define_frame_cursor1 (struct frame *f, Cursor cursor, Lisp_Object pointer)
{
+#ifdef HAVE_WINDOW_SYSTEM
+ if (!FRAME_WINDOW_P (f))
+ return;
+
/* Do not change cursor shape while dragging mouse. */
if (EQ (do_mouse_tracking, Qdragging))
return;
@@ -29670,10 +29748,10 @@ define_frame_cursor1 (struct frame *f, Cursor cursor, Lisp_Object pointer)
cursor = FRAME_X_OUTPUT (f)->horizontal_drag_cursor;
else if (EQ (pointer, intern ("nhdrag")))
cursor = FRAME_X_OUTPUT (f)->vertical_drag_cursor;
-#ifdef HAVE_X_WINDOWS
+# ifdef HAVE_X_WINDOWS
else if (EQ (pointer, intern ("vdrag")))
cursor = FRAME_DISPLAY_INFO (f)->vertical_scroll_bar_cursor;
-#endif
+# endif
else if (EQ (pointer, intern ("hourglass")))
cursor = FRAME_X_OUTPUT (f)->hourglass_cursor;
else if (EQ (pointer, Qmodeline))
@@ -29684,10 +29762,9 @@ define_frame_cursor1 (struct frame *f, Cursor cursor, Lisp_Object pointer)
if (cursor != No_Cursor)
FRAME_RIF (f)->define_frame_cursor (f, cursor);
+#endif
}
-#endif /* HAVE_WINDOW_SYSTEM */
-
/* Take proper action when mouse has moved to the mode or header line
or marginal area AREA of window W, x-position X and y-position Y.
X is relative to the start of the text display area of W, so the
@@ -29709,12 +29786,11 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
int dx, dy, width, height;
ptrdiff_t charpos;
Lisp_Object string, object = Qnil;
- Lisp_Object pos IF_LINT (= Qnil), help;
-
+ Lisp_Object pos UNINIT;
Lisp_Object mouse_face;
int original_x_pixel = x;
struct glyph * glyph = NULL, * row_start_glyph = NULL;
- struct glyph_row *row IF_LINT (= 0);
+ struct glyph_row *row UNINIT;
if (area == ON_MODE_LINE || area == ON_HEADER_LINE)
{
@@ -29754,7 +29830,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
&object, &dx, &dy, &width, &height);
}
- help = Qnil;
+ Lisp_Object help = Qnil;
#ifdef HAVE_WINDOW_SYSTEM
if (IMAGEP (object))
@@ -30002,10 +30078,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
if ((area == ON_MODE_LINE || area == ON_HEADER_LINE) && !mouse_face_shown)
clear_mouse_face (hlinfo);
-#ifdef HAVE_WINDOW_SYSTEM
- if (FRAME_WINDOW_P (f))
- define_frame_cursor1 (f, cursor, pointer);
-#endif
+ define_frame_cursor1 (f, cursor, pointer);
}
@@ -30149,7 +30222,7 @@ note_mouse_highlight (struct frame *f, int x, int y)
/* Look for :pointer property on image. */
if (glyph != NULL && glyph->type == IMAGE_GLYPH)
{
- struct image *img = IMAGE_FROM_ID (f, glyph->u.img_id);
+ struct image *img = IMAGE_OPT_FROM_ID (f, glyph->u.img_id);
if (img != NULL && IMAGEP (img->spec))
{
Lisp_Object image_map, hotspot;
@@ -30210,15 +30283,15 @@ note_mouse_highlight (struct frame *f, int x, int y)
{
if (clear_mouse_face (hlinfo))
cursor = No_Cursor;
-#ifdef HAVE_WINDOW_SYSTEM
if (FRAME_WINDOW_P (f) && NILP (pointer))
{
+#ifdef HAVE_WINDOW_SYSTEM
if (area != TEXT_AREA)
cursor = FRAME_X_OUTPUT (f)->nontext_cursor;
else
pointer = Vvoid_text_area_pointer;
- }
#endif
+ }
goto set_cursor;
}
@@ -30329,8 +30402,8 @@ note_mouse_highlight (struct frame *f, int x, int y)
{
/* The mouse-highlighting, if any, comes from an overlay
or text property in the buffer. */
- Lisp_Object buffer IF_LINT (= Qnil);
- Lisp_Object disp_string IF_LINT (= Qnil);
+ Lisp_Object buffer UNINIT;
+ Lisp_Object disp_string UNINIT;
if (STRINGP (object))
{
@@ -30530,15 +30603,7 @@ note_mouse_highlight (struct frame *f, int x, int y)
}
set_cursor:
-
-#ifdef HAVE_WINDOW_SYSTEM
- if (FRAME_WINDOW_P (f))
- define_frame_cursor1 (f, cursor, pointer);
-#else
- /* This is here to prevent a compiler error, about "label at end of
- compound statement". */
- return;
-#endif
+ define_frame_cursor1 (f, cursor, pointer);
}
@@ -31175,7 +31240,7 @@ syms_of_xdisp (void)
/* Non-nil means don't actually do any redisplay. */
DEFSYM (Qinhibit_redisplay, "inhibit-redisplay");
- DEFSYM (Qredisplay_internal, "redisplay_internal (C function)");
+ DEFSYM (Qredisplay_internal_xC_functionx, "redisplay_internal (C function)");
DEFVAR_BOOL("inhibit-message", inhibit_message,
doc: /* Non-nil means calls to `message' are not displayed.
@@ -31246,8 +31311,10 @@ They are still logged to the *Messages* buffer. */);
/* Name and number of the face used to highlight escape glyphs. */
DEFSYM (Qescape_glyph, "escape-glyph");
- /* Name and number of the face used to highlight non-breaking spaces. */
+ /* Name and number of the face used to highlight non-breaking
+ spaces/hyphens. */
DEFSYM (Qnobreak_space, "nobreak-space");
+ DEFSYM (Qnobreak_hyphen, "nobreak-hyphen");
/* The symbol 'image' which is the car of the lists used to represent
images in Lisp. Also a tool bar style. */
@@ -31359,7 +31426,7 @@ The face used for trailing whitespace is `trailing-whitespace'. */);
doc: /* Control highlighting of non-ASCII space and hyphen chars.
If the value is t, Emacs highlights non-ASCII chars which have the
same appearance as an ASCII space or hyphen, using the `nobreak-space'
-or `escape-glyph' face respectively.
+or `nobreak-hyphen' face respectively.
U+00A0 (no-break space), U+00AD (soft hyphen), U+2010 (hyphen), and
U+2011 (non-breaking hyphen) are affected.
@@ -31512,16 +31579,6 @@ If nil, disable message logging. If t, log messages but don't truncate
the buffer when it becomes large. */);
Vmessage_log_max = make_number (1000);
- DEFVAR_LISP ("window-size-change-functions", Vwindow_size_change_functions,
- doc: /* Functions called during redisplay, if window sizes have changed.
-The value should be a list of functions that take one argument.
-During the first part of redisplay, for each frame, if any of its windows
-have changed size since the last redisplay, or have been split or deleted,
-all the functions in the list are called, with the frame as argument.
-If redisplay decides to resize the minibuffer window, it calls these
-functions on behalf of that as well. */);
- Vwindow_size_change_functions = Qnil;
-
DEFVAR_LISP ("window-scroll-functions", Vwindow_scroll_functions,
doc: /* List of functions to call before redisplaying a window with scrolling.
Each function is called with two arguments, the window and its new
diff --git a/src/xfaces.c b/src/xfaces.c
index 5077cb2d94..0a1315d6f0 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -221,7 +221,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include TERM_HEADER
#include "fontset.h"
#ifdef HAVE_NTGUI
-#define x_display_info w32_display_info
#define GCGraphicsExposures 0
#endif /* HAVE_NTGUI */
@@ -1520,7 +1519,7 @@ the WIDTH times as wide as FACE on FRAME. */)
Lisp_Object maximum, Lisp_Object width)
{
struct frame *f;
- int size, avgwidth IF_LINT (= 0);
+ int size, avgwidth;
check_window_system (NULL);
CHECK_STRING (pattern);
@@ -1553,9 +1552,7 @@ the WIDTH times as wide as FACE on FRAME. */)
/* This is of limited utility since it works with character
widths. Keep it for compatibility. --gerd. */
int face_id = lookup_named_face (f, face, false);
- struct face *width_face = (face_id < 0
- ? NULL
- : FACE_FROM_ID (f, face_id));
+ struct face *width_face = FACE_FROM_ID_OR_NULL (f, face_id);
if (width_face && width_face->font)
{
@@ -3695,7 +3692,7 @@ Default face attributes override any local face attributes. */)
if (EQ (face, Qdefault))
{
struct face_cache *c = FRAME_FACE_CACHE (f);
- struct face *newface, *oldface = FACE_FROM_ID (f, DEFAULT_FACE_ID);
+ struct face *newface, *oldface = FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID);
Lisp_Object attrs[LFACE_VECTOR_SIZE];
/* This can be NULL (e.g., in batch mode). */
@@ -3778,7 +3775,7 @@ return the font name used for CHARACTER. */)
{
struct frame *f = decode_live_frame (frame);
int face_id = lookup_named_face (f, face, true);
- struct face *fface = FACE_FROM_ID (f, face_id);
+ struct face *fface = FACE_FROM_ID_OR_NULL (f, face_id);
if (! fface)
return Qnil;
@@ -3787,9 +3784,9 @@ return the font name used for CHARACTER. */)
{
CHECK_CHARACTER (character);
face_id = FACE_FOR_CHAR (f, fface, XINT (character), -1, Qnil);
- fface = FACE_FROM_ID (f, face_id);
+ fface = FACE_FROM_ID_OR_NULL (f, face_id);
}
- return (fface->font
+ return ((fface && fface->font)
? fface->font->props[FONT_NAME_INDEX]
: Qnil);
#else /* !HAVE_WINDOW_SYSTEM */
@@ -4377,7 +4374,7 @@ lookup_face (struct frame *f, Lisp_Object *attr)
face = realize_face (cache, attr, -1);
#ifdef GLYPH_DEBUG
- eassert (face == FACE_FROM_ID (f, face->id));
+ eassert (face == FACE_FROM_ID_OR_NULL (f, face->id));
#endif /* GLYPH_DEBUG */
return face->id;
@@ -4430,15 +4427,13 @@ lookup_named_face (struct frame *f, Lisp_Object symbol, bool signal_p)
{
Lisp_Object attrs[LFACE_VECTOR_SIZE];
Lisp_Object symbol_attrs[LFACE_VECTOR_SIZE];
- struct face *default_face = FACE_FROM_ID (f, DEFAULT_FACE_ID);
+ struct face *default_face = FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID);
if (default_face == NULL)
{
if (!realize_basic_faces (f))
return -1;
default_face = FACE_FROM_ID (f, DEFAULT_FACE_ID);
- if (default_face == NULL)
- emacs_abort (); /* realize_basic_faces must have set it up */
}
if (! get_lface_attributes (f, symbol, symbol_attrs, signal_p, 0))
@@ -4599,14 +4594,12 @@ lookup_derived_face (struct frame *f, Lisp_Object symbol, int face_id,
{
Lisp_Object attrs[LFACE_VECTOR_SIZE];
Lisp_Object symbol_attrs[LFACE_VECTOR_SIZE];
- struct face *default_face = FACE_FROM_ID (f, face_id);
-
- if (!default_face)
- emacs_abort ();
+ struct face *default_face;
if (!get_lface_attributes (f, symbol, symbol_attrs, signal_p, 0))
return -1;
+ default_face = FACE_FROM_ID (f, face_id);
memcpy (attrs, default_face->lface, sizeof attrs);
merge_face_vectors (f, symbol_attrs, attrs, 0);
return lookup_face (f, attrs);
@@ -4707,7 +4700,7 @@ x_supports_face_attributes_p (struct frame *f,
merge_face_vectors (f, attrs, merged_attrs, 0);
face_id = lookup_face (f, merged_attrs);
- face = FACE_FROM_ID (f, face_id);
+ face = FACE_FROM_ID_OR_NULL (f, face_id);
if (! face)
error ("Cannot make face");
@@ -4977,14 +4970,12 @@ face for italic. */)
attrs[i] = Qunspecified;
merge_face_ref (f, attributes, attrs, true, 0);
- def_face = FACE_FROM_ID (f, DEFAULT_FACE_ID);
+ def_face = FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID);
if (def_face == NULL)
{
if (! realize_basic_faces (f))
error ("Cannot realize default face");
def_face = FACE_FROM_ID (f, DEFAULT_FACE_ID);
- if (def_face == NULL)
- emacs_abort (); /* realize_basic_faces must have set it up */
}
/* Dispatch to the appropriate handler. */
@@ -5206,7 +5197,6 @@ realize_default_face (struct frame *f)
struct face_cache *c = FRAME_FACE_CACHE (f);
Lisp_Object lface;
Lisp_Object attrs[LFACE_VECTOR_SIZE];
- struct face *face;
/* If the `default' face is not yet known, create it. */
lface = lface_from_face_name (f, Qdefault, false);
@@ -5296,10 +5286,11 @@ realize_default_face (struct frame *f)
eassert (lface_fully_specified_p (XVECTOR (lface)->contents));
check_lface (lface);
memcpy (attrs, XVECTOR (lface)->contents, sizeof attrs);
- face = realize_face (c, attrs, DEFAULT_FACE_ID);
+ struct face *face = realize_face (c, attrs, DEFAULT_FACE_ID);
-#ifdef HAVE_WINDOW_SYSTEM
-#ifdef HAVE_X_WINDOWS
+#ifndef HAVE_WINDOW_SYSTEM
+ (void) face;
+#else
if (FRAME_X_P (f) && face->font != FRAME_FONT (f))
{
/* This can happen when making a frame on a display that does
@@ -5313,8 +5304,7 @@ realize_default_face (struct frame *f)
font. */
x_set_font (f, LFACE_FONT (lface), Qnil);
}
-#endif /* HAVE_X_WINDOWS */
-#endif /* HAVE_WINDOW_SYSTEM */
+#endif
return true;
}
@@ -5454,7 +5444,7 @@ realize_x_face (struct face_cache *cache, Lisp_Object attrs[LFACE_VECTOR_SIZE])
/* Determine the font to use. Most of the time, the font will be
the same as the font of the default face, so try that first. */
- default_face = FACE_FROM_ID (f, DEFAULT_FACE_ID);
+ default_face = FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID);
if (default_face
&& lface_same_font_attributes_p (default_face->lface, attrs))
{
@@ -6094,7 +6084,6 @@ face_at_string_position (struct window *w, Lisp_Object string,
*endptr = -1;
base_face = FACE_FROM_ID (f, base_face_id);
- eassert (base_face);
/* Optimize the default case that there is no face property. */
if (NILP (prop)
@@ -6103,7 +6092,7 @@ face_at_string_position (struct window *w, Lisp_Object string,
if we don't have fonts, so we can stop here if not working
on a window-system frame. */
|| !FRAME_WINDOW_P (f)
- || FACE_SUITABLE_FOR_ASCII_CHAR_P (base_face, 0)))
+ || FACE_SUITABLE_FOR_ASCII_CHAR_P (base_face)))
return base_face->id;
/* Begin with attributes from the base face. */
@@ -6141,7 +6130,7 @@ merge_faces (struct frame *f, Lisp_Object face_name, int face_id,
Lisp_Object attrs[LFACE_VECTOR_SIZE];
struct face *base_face;
- base_face = FACE_FROM_ID (f, base_face_id);
+ base_face = FACE_FROM_ID_OR_NULL (f, base_face_id);
if (!base_face)
return base_face_id;
@@ -6169,7 +6158,7 @@ merge_faces (struct frame *f, Lisp_Object face_name, int face_id,
struct face *face;
if (face_id < 0)
return base_face_id;
- face = FACE_FROM_ID (f, face_id);
+ face = FACE_FROM_ID_OR_NULL (f, face_id);
if (!face)
return base_face_id;
merge_face_vectors (f, face->lface, attrs, 0);
@@ -6289,7 +6278,7 @@ DEFUN ("dump-face", Fdump_face, Sdump_face, 0, 1, 0, doc: /* */)
{
struct face *face;
CHECK_NUMBER (n);
- face = FACE_FROM_ID (SELECTED_FRAME (), XINT (n));
+ face = FACE_FROM_ID_OR_NULL (SELECTED_FRAME (), XINT (n));
if (face == NULL)
error ("Not a valid face");
dump_realized_face (face);
diff --git a/src/xfns.c b/src/xfns.c
index 7c1bb1c281..8860a21e67 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -91,11 +91,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "../lwlib/xlwmenu.h"
#endif
-#if !defined (NO_EDITRES)
-#define HACK_EDITRES
-extern void _XEditResCheckMessages (Widget, XtPointer, XEvent *, Boolean *);
-#endif /* not defined NO_EDITRES */
-
/* Unique id counter for widgets created by the Lucid Widget Library. */
extern LWLIB_ID widget_id_tick;
@@ -1313,7 +1308,6 @@ x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
}
#endif /* not USE_X_TOOLKIT && not USE_GTK */
adjust_frame_glyphs (f);
- run_window_configuration_change_hook (f);
}
@@ -1435,7 +1429,7 @@ x_set_internal_border_width (struct frame *f, Lisp_Object arg, Lisp_Object oldva
if (border != FRAME_INTERNAL_BORDER_WIDTH (f))
{
- FRAME_INTERNAL_BORDER_WIDTH (f) = border;
+ f->internal_border_width = border;
#ifdef USE_X_TOOLKIT
if (FRAME_X_OUTPUT (f)->edit_widget)
@@ -2663,7 +2657,7 @@ x_window (struct frame *f, long window_prompting)
hack_wm_protocols (f, shell_widget);
-#ifdef HACK_EDITRES
+#ifdef X_TOOLKIT_EDITRES
XtAddEventHandler (shell_widget, 0, True, _XEditResCheckMessages, 0);
#endif
@@ -3129,7 +3123,7 @@ x_default_font_parameter (struct frame *f, Lisp_Object parms)
{
/* Remember the explicit font parameter, so we can re-apply it after
we've applied the `default' face settings. */
- AUTO_FRAME_ARG (arg, Qfont_param, font_param);
+ AUTO_FRAME_ARG (arg, Qfont_parameter, font_param);
x_set_frame_parameters (f, arg);
}
@@ -4296,8 +4290,8 @@ x_get_monitor_attributes_xrandr (struct x_display_info *dpyinfo)
{
XRROutputInfo *info = XRRGetOutputInfo (dpy, resources,
resources->outputs[i]);
- Connection conn = info ? info->connection : RR_Disconnected;
- RRCrtc id = info ? info->crtc : None;
+ if (!info)
+ continue;
if (strcmp (info->name, "default") == 0)
{
@@ -4308,9 +4302,9 @@ x_get_monitor_attributes_xrandr (struct x_display_info *dpyinfo)
return Qnil;
}
- if (conn != RR_Disconnected && id != None)
+ if (info->connection != RR_Disconnected && info->crtc != None)
{
- XRRCrtcInfo *crtc = XRRGetCrtcInfo (dpy, resources, id);
+ XRRCrtcInfo *crtc = XRRGetCrtcInfo (dpy, resources, info->crtc);
struct MonitorInfo *mi = &monitors[i];
XRectangle workarea_r;
@@ -4632,7 +4626,9 @@ frame_geometry (Lisp_Object frame, Lisp_Object attribute)
}
#else
tool_bar_height = FRAME_TOOL_BAR_HEIGHT (f);
- tool_bar_width = tool_bar_height ? native_width : 0;
+ tool_bar_width = (tool_bar_height
+ ? native_width - 2 * internal_border_width
+ : 0);
inner_top += tool_bar_height;
#endif
@@ -5117,6 +5113,7 @@ FRAME. Default is to change on the edit X window. */)
if (INT_MAX < SBYTES (value))
error ("VALUE too long");
nelements = SBYTES (value);
+ element_format = 8; /* ignore any provided format */
}
block_input ();
@@ -5227,7 +5224,7 @@ x_window_property_intern (struct frame *f,
}
if (NILP (vector_ret_p))
- prop_value = make_string ((char *) tmp_data, actual_size);
+ prop_value = make_string ((char *) tmp_data, (actual_format / 8) * actual_size);
else
prop_value = x_property_data_to_lisp (f,
tmp_data,
@@ -5314,12 +5311,66 @@ no value of TYPE (always string in the MS Windows case). */)
return prop_value;
}
+DEFUN ("x-window-property-attributes", Fx_window_property_attributes, Sx_window_property_attributes,
+ 1, 3, 0,
+ doc: /* Retrieve metadata about window property PROP on FRAME.
+If FRAME is nil or omitted, use the selected frame.
+If SOURCE is non-nil, get the property on that window instead of from
+FRAME. The number 0 denotes the root window.
+
+Return value is nil if FRAME hasn't a property with name PROP.
+Otherwise, the return value is a vector with the following fields:
+
+0. The property type, as an integer. The symbolic name of
+ the type can be obtained with `x-get-atom-name'.
+1. The format of each element; one of 8, 16, or 32.
+2. The length of the property, in number of elements. */)
+ (Lisp_Object prop, Lisp_Object frame, Lisp_Object source)
+{
+ struct frame *f = decode_window_system_frame (frame);
+ Window target_window = FRAME_X_WINDOW (f);
+ Atom prop_atom;
+ Lisp_Object prop_attr = Qnil;
+ Atom actual_type;
+ int actual_format;
+ unsigned long actual_size, bytes_remaining;
+ unsigned char *tmp_data = NULL;
+ int rc;
+
+ CHECK_STRING (prop);
+
+ if (! NILP (source))
+ {
+ CONS_TO_INTEGER (source, Window, target_window);
+ if (! target_window)
+ target_window = FRAME_DISPLAY_INFO (f)->root_window;
+ }
+
+ block_input ();
+
+ prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (prop), False);
+ rc = XGetWindowProperty (FRAME_X_DISPLAY (f), target_window,
+ prop_atom, 0, 0, False, AnyPropertyType,
+ &actual_type, &actual_format, &actual_size,
+ &bytes_remaining, &tmp_data);
+ if (rc == Success && actual_format != 0)
+ {
+ XFree (tmp_data);
+
+ prop_attr = Fmake_vector (make_number (3), Qnil);
+ ASET (prop_attr, 0, make_number (actual_type));
+ ASET (prop_attr, 1, make_number (actual_format));
+ ASET (prop_attr, 2, make_number (bytes_remaining / (actual_format / 8)));
+ }
+
+ unblock_input ();
+ return prop_attr;
+}
+
/***********************************************************************
Tool tips
***********************************************************************/
-static Lisp_Object x_create_tip_frame (struct x_display_info *,
- Lisp_Object, Lisp_Object);
static void compute_tip_xy (struct frame *, Lisp_Object, Lisp_Object,
Lisp_Object, int, int, int *, int *);
@@ -5363,9 +5414,7 @@ unwind_create_tip_frame (Lisp_Object frame)
when this happens. */
static Lisp_Object
-x_create_tip_frame (struct x_display_info *dpyinfo,
- Lisp_Object parms,
- Lisp_Object text)
+x_create_tip_frame (struct x_display_info *dpyinfo, Lisp_Object parms)
{
struct frame *f;
Lisp_Object frame;
@@ -5373,8 +5422,6 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
int width, height;
ptrdiff_t count = SPECPDL_INDEX ();
bool face_change_before = face_change;
- Lisp_Object buffer;
- struct buffer *old_buffer;
int x_width = 0, x_height = 0;
if (!dpyinfo->terminal->name)
@@ -5390,23 +5437,9 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
error ("Invalid frame name--not a string or nil");
frame = Qnil;
- f = make_frame (true);
+ f = make_frame (false);
+ f->wants_modeline = false;
XSETFRAME (frame, f);
-
- AUTO_STRING (tip, " *tip*");
- buffer = Fget_buffer_create (tip);
- /* Use set_window_buffer instead of Fset_window_buffer (see
- discussion of bug#11984, bug#12025, bug#12026). */
- set_window_buffer (FRAME_ROOT_WINDOW (f), buffer, false, false);
- old_buffer = current_buffer;
- set_buffer_internal_1 (XBUFFER (buffer));
- bset_truncate_lines (current_buffer, Qnil);
- specbind (Qinhibit_read_only, Qt);
- specbind (Qinhibit_modification_hooks, Qt);
- Ferase_buffer ();
- Finsert (1, &text);
- set_buffer_internal_1 (old_buffer);
-
record_unwind_protect (unwind_create_tip_frame, frame);
f->terminal = dpyinfo->terminal;
@@ -5648,8 +5681,6 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
{
Lisp_Object bg = Fframe_parameter (frame, Qbackground_color);
- /* Set tip_frame here, so that */
- tip_frame = frame;
call2 (Qface_set_after_frame_default, frame, Qnil);
if (!EQ (bg, Fframe_parameter (frame, Qbackground_color)))
@@ -5788,6 +5819,85 @@ compute_tip_xy (struct frame *f, Lisp_Object parms, Lisp_Object dx, Lisp_Object
}
+/* Hide tooltip. Delete its frame if DELETE is true. */
+static Lisp_Object
+x_hide_tip (bool delete)
+{
+ if (!NILP (tip_timer))
+ {
+ call1 (Qcancel_timer, tip_timer);
+ tip_timer = Qnil;
+ }
+
+
+ if (NILP (tip_frame)
+ || (!delete && FRAMEP (tip_frame)
+ && !FRAME_VISIBLE_P (XFRAME (tip_frame))))
+ return Qnil;
+ else
+ {
+ ptrdiff_t count;
+ Lisp_Object was_open = Qnil;
+
+ count = SPECPDL_INDEX ();
+ specbind (Qinhibit_redisplay, Qt);
+ specbind (Qinhibit_quit, Qt);
+
+#ifdef USE_GTK
+ {
+ /* When using system tooltip, tip_frame is the Emacs frame on
+ which the tip is shown. */
+ struct frame *f = XFRAME (tip_frame);
+
+ if (FRAME_LIVE_P (f) && xg_hide_tooltip (f))
+ {
+ tip_frame = Qnil;
+ was_open = Qt;
+ }
+ }
+#endif
+
+ if (FRAMEP (tip_frame))
+ {
+ if (delete)
+ {
+ delete_frame (tip_frame, Qnil);
+ tip_frame = Qnil;
+ }
+ else
+ x_make_frame_invisible (XFRAME (tip_frame));
+
+ was_open = Qt;
+
+#ifdef USE_LUCID
+ /* Bloodcurdling hack alert: The Lucid menu bar widget's
+ redisplay procedure is not called when a tip frame over
+ menu items is unmapped. Redisplay the menu manually... */
+ {
+ Widget w;
+ struct frame *f = SELECTED_FRAME ();
+ if (FRAME_X_P (f) && FRAME_LIVE_P (f))
+ {
+ w = f->output_data.x->menubar_widget;
+
+ if (!DoesSaveUnders (FRAME_DISPLAY_INFO (f)->screen)
+ && w != NULL)
+ {
+ block_input ();
+ xlwmenu_redisplay (w);
+ unblock_input ();
+ }
+ }
+ }
+#endif /* USE_LUCID */
+ }
+ else
+ tip_frame = Qnil;
+
+ return unbind_to (count, was_open);
+ }
+}
+
DEFUN ("x-show-tip", Fx_show_tip, Sx_show_tip, 1, 6, 0,
doc: /* Show STRING in a "tooltip" window on frame FRAME.
A tooltip window is a small X window displaying a string.
@@ -5820,15 +5930,17 @@ A tooltip's maximum size is specified by `x-max-tooltip-size'.
Text larger than the specified size is clipped. */)
(Lisp_Object string, Lisp_Object frame, Lisp_Object parms, Lisp_Object timeout, Lisp_Object dx, Lisp_Object dy)
{
- struct frame *f;
+ struct frame *f, *tip_f;
struct window *w;
int root_x, root_y;
struct buffer *old_buffer;
struct text_pos pos;
- int i, width, height;
- bool seen_reversed_p;
+ int width, height;
int old_windows_or_buffers_changed = windows_or_buffers_changed;
ptrdiff_t count = SPECPDL_INDEX ();
+ ptrdiff_t count_1;
+ Lisp_Object window, size;
+ AUTO_STRING (tip, " *tip*");
specbind (Qinhibit_redisplay, Qt);
@@ -5877,22 +5989,23 @@ Text larger than the specified size is clipped. */)
if (NILP (last_show_tip_args))
last_show_tip_args = Fmake_vector (make_number (3), Qnil);
- if (!NILP (tip_frame))
+ if (FRAMEP (tip_frame) && FRAME_LIVE_P (XFRAME (tip_frame)))
{
Lisp_Object last_string = AREF (last_show_tip_args, 0);
Lisp_Object last_frame = AREF (last_show_tip_args, 1);
Lisp_Object last_parms = AREF (last_show_tip_args, 2);
- if (EQ (frame, last_frame)
- && !NILP (Fequal (last_string, string))
+ if (FRAME_VISIBLE_P (XFRAME (tip_frame))
+ && EQ (frame, last_frame)
+ && !NILP (Fequal_including_properties (last_string, string))
&& !NILP (Fequal (last_parms, parms)))
{
- struct frame *tip_f = XFRAME (tip_frame);
-
/* Only DX and DY have changed. */
+ tip_f = XFRAME (tip_frame);
if (!NILP (tip_timer))
{
Lisp_Object timer = tip_timer;
+
tip_timer = Qnil;
call1 (Qcancel_timer, timer);
}
@@ -5903,41 +6016,102 @@ Text larger than the specified size is clipped. */)
XMoveWindow (FRAME_X_DISPLAY (tip_f), FRAME_X_WINDOW (tip_f),
root_x, root_y);
unblock_input ();
+
goto start_timer;
}
- }
+ else if (tooltip_reuse_hidden_frame && EQ (frame, last_frame))
+ {
+ bool delete = false;
+ Lisp_Object tail, elt, parm, last;
+
+ /* Check if every parameter in PARMS has the same value in
+ last_parms unless it should be ignored by means of
+ Vtooltip_reuse_hidden_frame_parameters. This may destruct
+ last_parms which, however, will be recreated below. */
+ for (tail = parms; CONSP (tail); tail = XCDR (tail))
+ {
+ elt = XCAR (tail);
+ parm = Fcar (elt);
+ /* The left, top, right and bottom parameters are handled
+ by compute_tip_xy so they can be ignored here. */
+ if (!EQ (parm, Qleft) && !EQ (parm, Qtop)
+ && !EQ (parm, Qright) && !EQ (parm, Qbottom))
+ {
+ last = Fassq (parm, last_parms);
+ if (NILP (Fequal (Fcdr (elt), Fcdr (last))))
+ {
+ /* We lost, delete the old tooltip. */
+ delete = true;
+ break;
+ }
+ else
+ last_parms = call2 (Qassq_delete_all, parm, last_parms);
+ }
+ else
+ last_parms = call2 (Qassq_delete_all, parm, last_parms);
+ }
+
+ /* Now check if every parameter in what is left of last_parms
+ with a non-nil value has an association in PARMS unless it
+ should be ignored by means of
+ Vtooltip_reuse_hidden_frame_parameters. */
+ for (tail = last_parms; CONSP (tail); tail = XCDR (tail))
+ {
+ elt = XCAR (tail);
+ parm = Fcar (elt);
+ if (!EQ (parm, Qleft) && !EQ (parm, Qtop) && !EQ (parm, Qright)
+ && !EQ (parm, Qbottom) && !NILP (Fcdr (elt)))
+ {
+ /* We lost, delete the old tooltip. */
+ delete = true;
+ break;
+ }
+ }
- /* Hide a previous tip, if any. */
- Fx_hide_tip ();
+ x_hide_tip (delete);
+ }
+ else
+ x_hide_tip (true);
+ }
+ else
+ x_hide_tip (true);
ASET (last_show_tip_args, 0, string);
ASET (last_show_tip_args, 1, frame);
ASET (last_show_tip_args, 2, parms);
- /* Add default values to frame parameters. */
- if (NILP (Fassq (Qname, parms)))
- parms = Fcons (Fcons (Qname, build_string ("tooltip")), parms);
- if (NILP (Fassq (Qinternal_border_width, parms)))
- parms = Fcons (Fcons (Qinternal_border_width, make_number (3)), parms);
- if (NILP (Fassq (Qborder_width, parms)))
- parms = Fcons (Fcons (Qborder_width, make_number (1)), parms);
- if (NILP (Fassq (Qbottom_divider_width, parms)))
- parms = Fcons (Fcons (Qbottom_divider_width, make_number (0)), parms);
- if (NILP (Fassq (Qright_divider_width, parms)))
- parms = Fcons (Fcons (Qright_divider_width, make_number (0)), parms);
- if (NILP (Fassq (Qborder_color, parms)))
- parms = Fcons (Fcons (Qborder_color, build_string ("lightyellow")), parms);
- if (NILP (Fassq (Qbackground_color, parms)))
- parms = Fcons (Fcons (Qbackground_color, build_string ("lightyellow")),
- parms);
-
- /* Create a frame for the tooltip, and record it in the global
- variable tip_frame. */
- frame = x_create_tip_frame (FRAME_DISPLAY_INFO (f), parms, string);
- f = XFRAME (frame);
-
- /* Set up the frame's root window. */
- w = XWINDOW (FRAME_ROOT_WINDOW (f));
+ if (!FRAMEP (tip_frame) || !FRAME_LIVE_P (XFRAME (tip_frame)))
+ {
+ /* Add default values to frame parameters. */
+ if (NILP (Fassq (Qname, parms)))
+ parms = Fcons (Fcons (Qname, build_string ("tooltip")), parms);
+ if (NILP (Fassq (Qinternal_border_width, parms)))
+ parms = Fcons (Fcons (Qinternal_border_width, make_number (3)), parms);
+ if (NILP (Fassq (Qborder_width, parms)))
+ parms = Fcons (Fcons (Qborder_width, make_number (1)), parms);
+ if (NILP (Fassq (Qborder_color, parms)))
+ parms = Fcons (Fcons (Qborder_color, build_string ("lightyellow")), parms);
+ if (NILP (Fassq (Qbackground_color, parms)))
+ parms = Fcons (Fcons (Qbackground_color, build_string ("lightyellow")),
+ parms);
+
+ /* Create a frame for the tooltip, and record it in the global
+ variable tip_frame. */
+ if (NILP (tip_frame = x_create_tip_frame (FRAME_DISPLAY_INFO (f), parms)))
+ /* Creating the tip frame failed. */
+ return unbind_to (count, Qnil);
+ }
+
+ tip_f = XFRAME (tip_frame);
+ window = FRAME_ROOT_WINDOW (tip_f);
+ set_window_buffer (window, Fget_buffer_create (tip), false, false);
+ w = XWINDOW (window);
+ w->pseudo_window_p = true;
+
+ /* Set up the frame's root window. Note: The following code does not
+ try to size the window or its frame correctly. Its only purpose is
+ to make the subsequent text size calculations work. The right
+ sizes should get installed when the toolkit gets back to us. */
w->left_col = 0;
w->top_line = 0;
w->pixel_left = 0;
@@ -5956,130 +6130,47 @@ Text larger than the specified size is clipped. */)
w->total_lines = 40;
}
- w->pixel_width = w->total_cols * FRAME_COLUMN_WIDTH (f);
- w->pixel_height = w->total_lines * FRAME_LINE_HEIGHT (f);
+ w->pixel_width = w->total_cols * FRAME_COLUMN_WIDTH (tip_f);
+ w->pixel_height = w->total_lines * FRAME_LINE_HEIGHT (tip_f);
+ FRAME_TOTAL_COLS (tip_f) = w->total_cols;
+ adjust_frame_glyphs (tip_f);
- FRAME_TOTAL_COLS (f) = w->total_cols;
- adjust_frame_glyphs (f);
- w->pseudo_window_p = true;
-
- /* Display the tooltip text in a temporary buffer. */
+ /* Insert STRING into root window's buffer and fit the frame to the
+ buffer. */
+ count_1 = SPECPDL_INDEX ();
old_buffer = current_buffer;
- set_buffer_internal_1 (XBUFFER (XWINDOW (FRAME_ROOT_WINDOW (f))->contents));
+ set_buffer_internal_1 (XBUFFER (w->contents));
bset_truncate_lines (current_buffer, Qnil);
+ specbind (Qinhibit_read_only, Qt);
+ specbind (Qinhibit_modification_hooks, Qt);
+ specbind (Qinhibit_point_motion_hooks, Qt);
+ Ferase_buffer ();
+ Finsert (1, &string);
clear_glyph_matrix (w->desired_matrix);
clear_glyph_matrix (w->current_matrix);
SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
- try_window (FRAME_ROOT_WINDOW (f), pos, TRY_WINDOW_IGNORE_FONTS_CHANGE);
-
- /* Compute width and height of the tooltip. */
- width = height = 0;
- seen_reversed_p = false;
- for (i = 0; i < w->desired_matrix->nrows; ++i)
- {
- struct glyph_row *row = &w->desired_matrix->rows[i];
- struct glyph *last;
- int row_width;
-
- /* Stop at the first empty row at the end. */
- if (!row->enabled_p || !MATRIX_ROW_DISPLAYS_TEXT_P (row))
- break;
-
- /* Let the row go over the full width of the frame. */
- row->full_width_p = true;
-
- row_width = row->pixel_width;
- if (row->used[TEXT_AREA])
- {
- /* There's a glyph at the end of rows that is used to place
- the cursor there. Don't include the width of this glyph. */
- if (!row->reversed_p)
- {
- last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1];
- if (NILP (last->object))
- row_width -= last->pixel_width;
- }
- else
- {
- /* There could be a stretch glyph at the beginning of R2L
- rows that is produced by extend_face_to_end_of_line.
- Don't count that glyph. */
- struct glyph *g = row->glyphs[TEXT_AREA];
-
- if (g->type == STRETCH_GLYPH && NILP (g->object))
- {
- row_width -= g->pixel_width;
- seen_reversed_p = true;
- }
- }
- }
-
- height += row->height;
- width = max (width, row_width);
- }
-
- /* If we've seen partial-length R2L rows, we need to re-adjust the
- tool-tip frame width and redisplay it again, to avoid over-wide
- tips due to the stretch glyph that extends R2L lines to full
- width of the frame. */
- if (seen_reversed_p)
- {
- /* w->total_cols and FRAME_TOTAL_COLS want the width in columns,
- not in pixels. */
- w->pixel_width = width;
- width /= WINDOW_FRAME_COLUMN_WIDTH (w);
- w->total_cols = width;
- FRAME_TOTAL_COLS (f) = width;
- SET_FRAME_WIDTH (f, width);
- adjust_frame_glyphs (f);
- clear_glyph_matrix (w->desired_matrix);
- clear_glyph_matrix (w->current_matrix);
- try_window (FRAME_ROOT_WINDOW (f), pos, 0);
- width = height = 0;
- /* Recompute width and height of the tooltip. */
- for (i = 0; i < w->desired_matrix->nrows; ++i)
- {
- struct glyph_row *row = &w->desired_matrix->rows[i];
- struct glyph *last;
- int row_width;
-
- if (!row->enabled_p || !MATRIX_ROW_DISPLAYS_TEXT_P (row))
- break;
- row->full_width_p = true;
- row_width = row->pixel_width;
- if (row->used[TEXT_AREA] && !row->reversed_p)
- {
- last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1];
- if (NILP (last->object))
- row_width -= last->pixel_width;
- }
-
- height += row->height;
- width = max (width, row_width);
- }
- }
-
- /* Add the frame's internal border to the width and height the X
- window should have. */
- height += 2 * FRAME_INTERNAL_BORDER_WIDTH (f);
- width += 2 * FRAME_INTERNAL_BORDER_WIDTH (f);
-
- /* Move the tooltip window where the mouse pointer is. Resize and
- show it. */
- compute_tip_xy (f, parms, dx, dy, width, height, &root_x, &root_y);
-
+ try_window (window, pos, TRY_WINDOW_IGNORE_FONTS_CHANGE);
+ /* Calculate size of tooltip window. */
+ size = Fwindow_text_pixel_size (window, Qnil, Qnil, Qnil,
+ make_number (w->pixel_height), Qnil);
+ /* Add the frame's internal border to calculated size. */
+ width = XINT (Fcar (size)) + 2 * FRAME_INTERNAL_BORDER_WIDTH (tip_f);
+ height = XINT (Fcdr (size)) + 2 * FRAME_INTERNAL_BORDER_WIDTH (tip_f);
+
+ /* Calculate position of tooltip frame. */
+ compute_tip_xy (tip_f, parms, dx, dy, width, height, &root_x, &root_y);
+
+ /* Show tooltip frame. */
block_input ();
- XMoveResizeWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
+ XMoveResizeWindow (FRAME_X_DISPLAY (tip_f), FRAME_X_WINDOW (tip_f),
root_x, root_y, width, height);
- XMapRaised (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f));
+ XMapRaised (FRAME_X_DISPLAY (tip_f), FRAME_X_WINDOW (tip_f));
unblock_input ();
- /* Draw into the window. */
w->must_be_updated_p = true;
update_single_window (w);
-
- /* Restore original current buffer. */
set_buffer_internal_1 (old_buffer);
+ unbind_to (count_1, Qnil);
windows_or_buffers_changed = old_windows_or_buffers_changed;
start_timer:
@@ -6096,66 +6187,9 @@ DEFUN ("x-hide-tip", Fx_hide_tip, Sx_hide_tip, 0, 0, 0,
Value is t if tooltip was open, nil otherwise. */)
(void)
{
- ptrdiff_t count;
- Lisp_Object deleted, frame, timer;
-
- /* Return quickly if nothing to do. */
- if (NILP (tip_timer) && NILP (tip_frame))
- return Qnil;
-
- frame = tip_frame;
- timer = tip_timer;
- tip_frame = tip_timer = deleted = Qnil;
-
- count = SPECPDL_INDEX ();
- specbind (Qinhibit_redisplay, Qt);
- specbind (Qinhibit_quit, Qt);
-
- if (!NILP (timer))
- call1 (Qcancel_timer, timer);
-
-#ifdef USE_GTK
- {
- /* When using system tooltip, tip_frame is the Emacs frame on which
- the tip is shown. */
- struct frame *f = XFRAME (frame);
- if (FRAME_LIVE_P (f) && xg_hide_tooltip (f))
- frame = Qnil;
- }
-#endif
-
- if (FRAMEP (frame))
- {
- delete_frame (frame, Qnil);
- deleted = Qt;
-
-#ifdef USE_LUCID
- /* Bloodcurdling hack alert: The Lucid menu bar widget's
- redisplay procedure is not called when a tip frame over menu
- items is unmapped. Redisplay the menu manually... */
- {
- Widget w;
- struct frame *f = SELECTED_FRAME ();
- if (FRAME_X_P (f) && FRAME_LIVE_P (f))
- {
- w = f->output_data.x->menubar_widget;
-
- if (!DoesSaveUnders (FRAME_DISPLAY_INFO (f)->screen)
- && w != NULL)
- {
- block_input ();
- xlwmenu_redisplay (w);
- unblock_input ();
- }
- }
- }
-#endif /* USE_LUCID */
- }
-
- return unbind_to (count, deleted);
+ return x_hide_tip (!tooltip_reuse_hidden_frame);
}
-
/***********************************************************************
File selection dialog
@@ -6371,7 +6405,7 @@ value of DIR as in previous invocations; this is standard Windows behavior. */)
/* Make "Cancel" equivalent to C-g. */
if (NILP (file))
- Fsignal (Qquit, Qnil);
+ quit ();
decoded_file = DECODE_FILE (file);
@@ -6443,7 +6477,7 @@ value of DIR as in previous invocations; this is standard Windows behavior. */)
/* Make "Cancel" equivalent to C-g. */
if (NILP (file))
- Fsignal (Qquit, Qnil);
+ quit ();
decoded_file = DECODE_FILE (file);
@@ -6483,7 +6517,7 @@ nil, it defaults to the selected frame. */)
default_name = xlispstrdup (font_param);
else
{
- font_param = Fframe_parameter (frame, Qfont_param);
+ font_param = Fframe_parameter (frame, Qfont_parameter);
if (STRINGP (font_param))
default_name = xlispstrdup (font_param);
}
@@ -6494,7 +6528,7 @@ nil, it defaults to the selected frame. */)
unblock_input ();
if (NILP (font))
- Fsignal (Qquit, Qnil);
+ quit ();
return unbind_to (count, font);
}
@@ -6815,8 +6849,9 @@ syms_of_xfns (void)
DEFSYM (Qundefined_color, "undefined-color");
DEFSYM (Qcompound_text, "compound-text");
DEFSYM (Qcancel_timer, "cancel-timer");
- DEFSYM (Qfont_param, "font-parameter");
+ DEFSYM (Qfont_parameter, "font-parameter");
DEFSYM (Qmono, "mono");
+ DEFSYM (Qassq_delete_all, "assq-delete-all");
#ifdef USE_CAIRO
DEFSYM (Qpdf, "pdf");
@@ -6988,6 +7023,7 @@ When using Gtk+ tooltips, the tooltip face is not used. */);
defsubr (&Sx_change_window_property);
defsubr (&Sx_delete_window_property);
defsubr (&Sx_window_property);
+ defsubr (&Sx_window_property_attributes);
defsubr (&Sxw_display_color_p);
defsubr (&Sx_display_grayscale_p);
diff --git a/src/xfont.c b/src/xfont.c
index 0ef64bef10..8fbe94c01a 100644
--- a/src/xfont.c
+++ b/src/xfont.c
@@ -635,7 +635,7 @@ xfont_list_family (struct frame *f)
char **names;
int num_fonts, i;
Lisp_Object list;
- char *last_family IF_LINT (= 0);
+ char *last_family UNINIT;
int last_len;
block_input ();
diff --git a/src/xmenu.c b/src/xmenu.c
index 9e1a817946..9ab7bdf971 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -1649,7 +1649,7 @@ x_menu_show (struct frame *f, int x, int y, int menuflags,
{
unblock_input ();
/* Make "Cancel" equivalent to C-g. */
- Fsignal (Qquit, Qnil);
+ quit ();
}
unblock_input ();
@@ -1913,7 +1913,7 @@ x_dialog_show (struct frame *f, Lisp_Object title,
}
else
/* Make "Cancel" equivalent to C-g. */
- Fsignal (Qquit, Qnil);
+ quit ();
return Qnil;
}
@@ -2304,7 +2304,7 @@ x_menu_show (struct frame *f, int x, int y, int menuflags,
if (!(menuflags & MENU_FOR_CLICK))
{
unblock_input ();
- Fsignal (Qquit, Qnil);
+ quit ();
}
break;
}
diff --git a/src/xml.c b/src/xml.c
index b1175d14a1..03e9053f29 100644
--- a/src/xml.c
+++ b/src/xml.c
@@ -45,7 +45,7 @@ DEF_DLL_FN (void, xmlCheckVersion, (int));
static bool
libxml2_loaded_p (void)
{
- Lisp_Object found = Fassq (Qlibxml2_dll, Vlibrary_cache);
+ Lisp_Object found = Fassq (Qlibxml2, Vlibrary_cache);
return CONSP (found) && EQ (XCDR (found), Qt);
}
@@ -96,7 +96,7 @@ init_libxml2_functions (void)
{
HMODULE library;
- if (!(library = w32_delayed_load (Qlibxml2_dll)))
+ if (!(library = w32_delayed_load (Qlibxml2)))
{
message1 ("libxml2 library not found");
return false;
@@ -105,12 +105,12 @@ init_libxml2_functions (void)
if (! load_dll_functions (library))
goto bad_library;
- Vlibrary_cache = Fcons (Fcons (Qlibxml2_dll, Qt), Vlibrary_cache);
+ Vlibrary_cache = Fcons (Fcons (Qlibxml2, Qt), Vlibrary_cache);
return true;
}
bad_library:
- Vlibrary_cache = Fcons (Fcons (Qlibxml2_dll, Qnil), Vlibrary_cache);
+ Vlibrary_cache = Fcons (Fcons (Qlibxml2, Qnil), Vlibrary_cache);
return false;
#else /* !WINDOWSNT */
diff --git a/src/xselect.c b/src/xselect.c
index 123e46374a..156888a540 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -215,7 +215,7 @@ symbol_to_x_atom (struct x_display_info *dpyinfo, Lisp_Object sym)
if (EQ (sym, QDELETE)) return dpyinfo->Xatom_DELETE;
if (EQ (sym, QMULTIPLE)) return dpyinfo->Xatom_MULTIPLE;
if (EQ (sym, QINCR)) return dpyinfo->Xatom_INCR;
- if (EQ (sym, QEMACS_TMP)) return dpyinfo->Xatom_EMACS_TMP;
+ if (EQ (sym, Q_EMACS_TMP_)) return dpyinfo->Xatom_EMACS_TMP;
if (EQ (sym, QTARGETS)) return dpyinfo->Xatom_TARGETS;
if (EQ (sym, QNULL)) return dpyinfo->Xatom_NULL;
if (!SYMBOLP (sym)) emacs_abort ();
@@ -273,7 +273,7 @@ x_atom_to_symbol (struct x_display_info *dpyinfo, Atom atom)
if (atom == dpyinfo->Xatom_INCR)
return QINCR;
if (atom == dpyinfo->Xatom_EMACS_TMP)
- return QEMACS_TMP;
+ return Q_EMACS_TMP_;
if (atom == dpyinfo->Xatom_TARGETS)
return QTARGETS;
if (atom == dpyinfo->Xatom_NULL)
@@ -1612,11 +1612,24 @@ selection_data_to_lisp_data (struct x_display_info *dpyinfo,
/* Convert a single 16-bit number or a small 32-bit number to a Lisp_Int.
If the number is 32 bits and won't fit in a Lisp_Int,
convert it to a cons of integers, 16 bits in each half.
+
+ INTEGER is a signed type, CARDINAL is unsigned.
+ Assume any other types are unsigned as well.
*/
else if (format == 32 && size == sizeof (int))
- return INTEGER_TO_CONS (((int *) data) [0]);
+ {
+ if (type == XA_INTEGER)
+ return INTEGER_TO_CONS (((int *) data) [0]);
+ else
+ return INTEGER_TO_CONS (((unsigned int *) data) [0]);
+ }
else if (format == 16 && size == sizeof (short))
- return make_number (((short *) data) [0]);
+ {
+ if (type == XA_INTEGER)
+ return make_number (((short *) data) [0]);
+ else
+ return make_number (((unsigned short *) data) [0]);
+ }
/* Convert any other kind of data to a vector of numbers, represented
as above (as an integer, or a cons of two 16 bit integers.)
@@ -1626,11 +1639,22 @@ selection_data_to_lisp_data (struct x_display_info *dpyinfo,
ptrdiff_t i;
Lisp_Object v = make_uninit_vector (size / 2);
- for (i = 0; i < size / 2; i++)
- {
- short j = ((short *) data) [i];
- ASET (v, i, make_number (j));
- }
+ if (type == XA_INTEGER)
+ {
+ for (i = 0; i < size / 2; i++)
+ {
+ short j = ((short *) data) [i];
+ ASET (v, i, make_number (j));
+ }
+ }
+ else
+ {
+ for (i = 0; i < size / 2; i++)
+ {
+ unsigned short j = ((unsigned short *) data) [i];
+ ASET (v, i, make_number (j));
+ }
+ }
return v;
}
else
@@ -1638,11 +1662,22 @@ selection_data_to_lisp_data (struct x_display_info *dpyinfo,
ptrdiff_t i;
Lisp_Object v = make_uninit_vector (size / X_LONG_SIZE);
- for (i = 0; i < size / X_LONG_SIZE; i++)
- {
- int j = ((int *) data) [i];
- ASET (v, i, INTEGER_TO_CONS (j));
- }
+ if (type == XA_INTEGER)
+ {
+ for (i = 0; i < size / X_LONG_SIZE; i++)
+ {
+ int j = ((int *) data) [i];
+ ASET (v, i, INTEGER_TO_CONS (j));
+ }
+ }
+ else
+ {
+ for (i = 0; i < size / X_LONG_SIZE; i++)
+ {
+ unsigned int j = ((unsigned int *) data) [i];
+ ASET (v, i, INTEGER_TO_CONS (j));
+ }
+ }
return v;
}
}
@@ -2296,13 +2331,13 @@ x_fill_property_data (Display *dpy, Lisp_Object data, void *ret, int format)
if (format == 8)
{
if ((1 << 8) < val && val <= X_ULONG_MAX - (1 << 7))
- error ("Out of 'char' range");
+ error ("Out of `char' range");
*d08++ = val;
}
else if (format == 16)
{
if ((1 << 16) < val && val <= X_ULONG_MAX - (1 << 15))
- error ("Out of 'short' range");
+ error ("Out of `short' range");
*d16++ = val;
}
else
@@ -2679,7 +2714,7 @@ A value of 0 means wait as long as necessary. This is initialized from the
DEFSYM (QDELETE, "DELETE");
DEFSYM (QMULTIPLE, "MULTIPLE");
DEFSYM (QINCR, "INCR");
- DEFSYM (QEMACS_TMP, "_EMACS_TMP_");
+ DEFSYM (Q_EMACS_TMP_, "_EMACS_TMP_");
DEFSYM (QTARGETS, "TARGETS");
DEFSYM (QATOM, "ATOM");
DEFSYM (QCLIPBOARD_MANAGER, "CLIPBOARD_MANAGER");
diff --git a/src/xsmfns.c b/src/xsmfns.c
index 42e23401c7..a7ec8e0c7e 100644
--- a/src/xsmfns.c
+++ b/src/xsmfns.c
@@ -204,7 +204,7 @@ smc_save_yourself_CB (SmcConn smcConn,
props[props_idx]->vals[0].value = SDATA (user_login_name);
++props_idx;
- char *cwd = get_current_dir_name ();
+ char *cwd = emacs_get_current_dir_name ();
if (cwd)
{
props[props_idx] = &prop_ptr[props_idx];
@@ -401,7 +401,7 @@ x_session_initialize (struct x_display_info *dpyinfo)
ptrdiff_t name_len = 0;
/* libSM seems to crash if pwd is missing - see bug#18851. */
- if (! get_current_dir_name ())
+ if (! emacs_get_current_dir_name ())
{
fprintf (stderr, "Disabling session management due to pwd error: %s\n",
emacs_strerror (errno));
diff --git a/src/xterm.c b/src/xterm.c
index c64c17463c..cd1d712f39 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -95,10 +95,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#ifdef USE_X_TOOLKIT
-#if !defined (NO_EDITRES)
-#define HACK_EDITRES
-extern void _XEditResCheckMessages (Widget, XtPointer, XEvent *, Boolean *);
-#endif /* not NO_EDITRES */
/* Include toolkit specific headers for the scroll bar widget. */
@@ -1062,7 +1058,7 @@ x_draw_vertical_window_border (struct window *w, int x, int y0, int y1)
struct frame *f = XFRAME (WINDOW_FRAME (w));
struct face *face;
- face = FACE_FROM_ID (f, VERTICAL_BORDER_FACE_ID);
+ face = FACE_FROM_ID_OR_NULL (f, VERTICAL_BORDER_FACE_ID);
if (face)
XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc,
face->foreground);
@@ -1081,9 +1077,11 @@ static void
x_draw_window_divider (struct window *w, int x0, int x1, int y0, int y1)
{
struct frame *f = XFRAME (WINDOW_FRAME (w));
- struct face *face = FACE_FROM_ID (f, WINDOW_DIVIDER_FACE_ID);
- struct face *face_first = FACE_FROM_ID (f, WINDOW_DIVIDER_FIRST_PIXEL_FACE_ID);
- struct face *face_last = FACE_FROM_ID (f, WINDOW_DIVIDER_LAST_PIXEL_FACE_ID);
+ struct face *face = FACE_FROM_ID_OR_NULL (f, WINDOW_DIVIDER_FACE_ID);
+ struct face *face_first
+ = FACE_FROM_ID_OR_NULL (f, WINDOW_DIVIDER_FIRST_PIXEL_FACE_ID);
+ struct face *face_last
+ = FACE_FROM_ID_OR_NULL (f, WINDOW_DIVIDER_LAST_PIXEL_FACE_ID);
unsigned long color = face ? face->foreground : FRAME_FOREGROUND_PIXEL (f);
unsigned long color_first = (face_first
? face_first->foreground
@@ -1505,7 +1503,7 @@ x_set_mouse_face_gc (struct glyph_string *s)
/* What face has to be used last for the mouse face? */
face_id = MOUSE_HL_INFO (s->f)->mouse_face_face_id;
- face = FACE_FROM_ID (s->f, face_id);
+ face = FACE_FROM_ID_OR_NULL (s->f, face_id);
if (face == NULL)
face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
@@ -2156,6 +2154,7 @@ static const XColor *
x_color_cells (Display *dpy, int *ncells)
{
struct x_display_info *dpyinfo = x_display_info_for_display (dpy);
+ eassume (dpyinfo);
if (dpyinfo->color_cells == NULL)
{
@@ -2352,17 +2351,19 @@ x_alloc_nearest_color_1 (Display *dpy, Colormap cmap, XColor *color)
equal to a cached pixel color recorded earlier, there was a
change in the colormap, so clear the color cache. */
struct x_display_info *dpyinfo = x_display_info_for_display (dpy);
- XColor *cached_color;
+ eassume (dpyinfo);
- if (dpyinfo->color_cells
- && (cached_color = &dpyinfo->color_cells[color->pixel],
- (cached_color->red != color->red
- || cached_color->blue != color->blue
- || cached_color->green != color->green)))
+ if (dpyinfo->color_cells)
{
- xfree (dpyinfo->color_cells);
- dpyinfo->color_cells = NULL;
- dpyinfo->ncolor_cells = 0;
+ XColor *cached_color = &dpyinfo->color_cells[color->pixel];
+ if (cached_color->red != color->red
+ || cached_color->blue != color->blue
+ || cached_color->green != color->green)
+ {
+ xfree (dpyinfo->color_cells);
+ dpyinfo->color_cells = NULL;
+ dpyinfo->ncolor_cells = 0;
+ }
}
}
@@ -7605,7 +7606,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
goto done;
}
-#ifdef HACK_EDITRES
+#ifdef X_TOOLKIT_EDITRES
if (event->xclient.message_type == dpyinfo->Xatom_editres)
{
f = any;
@@ -7614,7 +7615,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
NULL, (XEvent *) event, NULL);
goto done;
}
-#endif /* HACK_EDITRES */
+#endif /* X_TOOLKIT_EDITRES */
if (event->xclient.message_type == dpyinfo->Xatom_DONE
|| event->xclient.message_type == dpyinfo->Xatom_PAGE)
@@ -7895,16 +7896,6 @@ handle_one_xevent (struct x_display_info *dpyinfo,
/* Force a redisplay sooner or later to update the
frame titles in case this is the second frame. */
record_asynch_buffer_change ();
-
-#ifdef USE_GTK
- /* xg_frame_resized does the wrong thing with Gtk+ 3.20.3 or later.
- For earlier Gtk+ versions it is unclear whether
- xg_frame_resized is useful, so leave it in for now.
- See Bug#23144. */
-# if ! GTK_CHECK_VERSION (3, 20, 3)
- xg_frame_resized (f, -1, -1);
-# endif
-#endif
}
goto OTHER;
@@ -9398,7 +9389,7 @@ static char *error_msg;
/* Handle the loss of connection to display DPY. ERROR_MESSAGE is
the text of an error message that lead to the connection loss. */
-static void
+static _Noreturn void
x_connection_closed (Display *dpy, const char *error_message, bool ioerror)
{
struct x_display_info *dpyinfo = x_display_info_for_display (dpy);
@@ -9496,9 +9487,6 @@ For details, see etc/PROBLEMS.\n",
unbind_to (idx, Qnil);
clear_waiting_for_input ();
- /* Tell GCC not to suggest attribute 'noreturn' for this function. */
- IF_LINT (if (! terminal_list) return; )
-
/* Here, we absolutely have to use a non-local exit (e.g. signal, throw,
longjmp), because returning from this function would get us back into
Xlib's code which will directly call `exit'. */
@@ -9564,7 +9552,7 @@ x_error_quitter (Display *display, XErrorEvent *event)
It kills all frames on the display that we lost touch with.
If that was the only one, it prints an error message and kills Emacs. */
-static int
+static _Noreturn int
x_io_error_quitter (Display *display)
{
char buf[256];
@@ -9572,7 +9560,7 @@ x_io_error_quitter (Display *display)
snprintf (buf, sizeof buf, "Connection lost to X server '%s'",
DisplayString (display));
x_connection_closed (display, buf, true);
- return 0;
+ assume (false);
}
/* Changing the font of the frame. */
diff --git a/src/xterm.h b/src/xterm.h
index 8e1fc788bc..675a48443d 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -38,6 +38,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <X11/CoreP.h> /* foul, but we need this to use our own
window inside a widget instead of one
that Xt creates... */
+#ifdef X_TOOLKIT_EDITRES
+#include <X11/Xmu/Editres.h>
+#endif
+
typedef Widget xt_or_gtk_widget;
#endif
diff --git a/src/xwidget.c b/src/xwidget.c
index 82449f7a21..f5f4da0d36 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -21,87 +21,13 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "xwidget.h"
-#include <signal.h>
-
-#include <stdio.h>
-#include <setjmp.h>
-#ifdef HAVE_X_WINDOWS
-
#include "lisp.h"
#include "blockinput.h"
-#include "syssignal.h"
-
-#include "xterm.h"
-#include <X11/cursorfont.h>
-
-#ifndef makedev
-# include <sys/types.h>
-#endif
-
-#ifdef BSD_SYSTEM
-# include <sys/ioctl.h>
-#endif
-
-#include "systime.h"
-
-#ifndef INCLUDED_FCNTL
-# include <fcntl.h>
-#endif
-#include <ctype.h>
-#include <errno.h>
-#include <setjmp.h>
-#include <sys/stat.h>
-
-#include "charset.h"
-#include "character.h"
-#include "coding.h"
-#include "ccl.h"
#include "frame.h"
-#include "dispextern.h"
-#include "fontset.h"
-#include "termhooks.h"
-#include "termopts.h"
-#include "termchar.h"
-#include "disptab.h"
-#include "buffer.h"
-#include "window.h"
#include "keyboard.h"
-#include "intervals.h"
-#include "process.h"
-#include "atimer.h"
-#include "keymap.h"
-
-
-#ifdef USE_X_TOOLKIT
-#include <X11/Shell.h>
-#endif
-#include <X11/extensions/Xcomposite.h>
-#include <X11/extensions/Xrender.h>
-#include <cairo.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
#include "gtkutil.h"
-#include "font.h"
-#endif /* HAVE_X_WINDOWS */
-
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-
-#include <gtk/gtkx.h>
-
-#include "emacsgtkfixed.h"
-
-#include <wchar.h>
#include <webkit/webkitwebview.h>
-#include <webkit/webkitwebplugindatabase.h>
-#include <webkit/webkitwebplugin.h>
-#include <webkit/webkitglobals.h>
#include <webkit/webkitwebnavigationaction.h>
#include <webkit/webkitdownload.h>
#include <webkit/webkitwebpolicydecision.h>
@@ -565,12 +491,16 @@ x_draw_xwidget_glyph_string (struct glyph_string *s)
xwidget on screen. Moving and clipping is done here. Also view
initialization. */
struct xwidget *xww = s->xwidget;
- struct xwidget_view *xv = xwidget_view_lookup (xww, s->w);
+ struct xwidget_view *xv;
int clip_right;
int clip_bottom;
int clip_top;
int clip_left;
+ /* FIXME: The result of this call is discarded.
+ What if the lookup fails? */
+ xwidget_view_lookup (xww, s->w);
+
int x = s->x;
int y = s->y + (s->height / 2) - (xww->height / 2);
@@ -1145,7 +1075,13 @@ xwidget_end_redisplay (struct window *w, struct glyph_matrix *matrix)
{
/* The only call to xwidget_end_redisplay is in dispnew.
xwidget_end_redisplay (w->current_matrix); */
- xwidget_touch (xwidget_view_lookup (glyph->u.xwidget, w));
+ struct xwidget_view *xv
+ = xwidget_view_lookup (glyph->u.xwidget, w);
+ /* FIXME: Is it safe to assume xwidget_view_lookup
+ always succeeds here? If so, this comment can be removed.
+ If not, the code probably needs fixing. */
+ eassume (xv);
+ xwidget_touch (xv);
}
}
}
diff --git a/test/automated/Makefile.in b/test/Makefile.in
index 9c9b3be1e0..33e625fc99 100644
--- a/test/automated/Makefile.in
+++ b/test/Makefile.in
@@ -21,7 +21,8 @@
## Some targets:
## check: re-run all tests, writing to .log files.
-## check-maybe: run all tests whose .log file needs updating
+## check-maybe: run all tests which are outdated with their .log file
+## or the source files they are testing.
## filename.log: run tests from filename.el(c) if .log file needs updating
## filename: re-run tests from filename.el(c), with no logging
@@ -32,12 +33,14 @@ SHELL = @SHELL@
srcdir = @srcdir@
VPATH = $(srcdir)
+MKDIR_P = @MKDIR_P@
+
SEPCHAR = @SEPCHAR@
# We never change directory before running Emacs, so a relative file
# name is fine, and makes life easier. If we need to change
# directory, we can use emacs --chdir.
-EMACS = ../../src/emacs
+EMACS = ../src/emacs
EMACS_EXTRAOPT=
@@ -103,22 +106,31 @@ else
SELECTOR_ACTUAL=$(SELECTOR_EXPENSIVE)
endif
+## Byte-compile all test files to test for errors (unless explicitly
+## told not to), but then evaluate the un-byte-compiled files, because
+## they give cleaner stacktraces.
-%.log: ${srcdir}/%.el
- @if grep '^;.*no-byte-compile: t' $< > /dev/null; then \
- loadfile=$<; \
- else \
- loadfile=$<c; \
- ${MAKE} $$loadfile; \
+## Beware: it approximates 'no-byte-compile', so watch out for false-positives!
+%.log: %.el
+ elc=$<c; \
+ if ! grep '^;.*no-byte-compile: t' $< > /dev/null; then \
+ ${MAKE} $$elc; \
fi; \
+ loadfile=$<; \
echo Testing $$loadfile; \
stat=OK ; \
+ ${MKDIR_P} $(dir $@) ; \
$(emacs) -l ert -l $$loadfile \
--eval "(ert-run-tests-batch-and-exit ${SELECTOR_ACTUAL})" ${WRITE_LOG}
-ELFILES = $(sort $(wildcard ${srcdir}/*.el))
-LOGFILES = $(patsubst %.el,%.log,$(notdir ${ELFILES}))
-TESTS = ${LOGFILES:.log=}
+ELFILES = $(shell find ${srcdir} -path "${srcdir}/manual" -prune -o \
+ -path "*resources" -prune -o -name "*el" -print)
+## .elc files may be in a different directory for out of source builds
+ELCFILES = $(patsubst %.el,%.elc, \
+ $(patsubst $(srcdir)%,.%,$(ELFILES)))
+LOGFILES = $(patsubst %.elc,%.log,${ELCFILES})
+LOGSAVEFILES = $(patsubst %.elc,%.log~,${ELCFILES})
+TESTS = $(subst ${srcdir}/,,$(LOGFILES:.log=))
## If we have to interrupt a hanging test, preserve the log so we can
## see what the problem was.
@@ -127,26 +139,46 @@ TESTS = ${LOGFILES:.log=}
.PHONY: ${TESTS}
## The short aliases that always re-run the tests, with no logging.
+## Define an alias both with and without the directory name for ease
+## of use.
define test_template
$(1):
- @test ! -f $(1).log || mv $(1).log $(1).log~
- @${MAKE} $(1).log WRITE_LOG=
+ @test ! -f ./$(1).log || mv ./$(1).log ./$(1).log~
+ @${MAKE} ./$(1).log WRITE_LOG=
+
+$(notdir $(1)): $(1)
endef
$(foreach test,${TESTS},$(eval $(call test_template,${test})))
+## Check that there is no 'automated' subdirectory, which would
+## indicate an incomplete merge from an older version of Emacs where
+## the tests were arranged differently.
+.PHONY: check-no-automated-subdir
+check-no-automated-subdir:
+ test ! -d $(srcdir)/automated
+
+## Include dependencies between test files and the files they test.
+## We could do this without the file and eval directly, but then we
+## would have to run Emacs for every make invocation, and it might not
+## be available during clean.
+-include make-test-deps.mk
## Rerun all default tests.
-check: mostlyclean
+check: mostlyclean check-no-automated-subdir
@${MAKE} check-doit SELECTOR="${SELECTOR_ACTUAL}"
## Rerun all default and expensive tests.
.PHONY: check-expensive
-check-expensive: mostlyclean
+check-expensive: mostlyclean check-no-automated-subdir
@${MAKE} check-doit SELECTOR="${SELECTOR_EXPENSIVE}"
-## Only re-run default tests whose .log is older than the test.
+## Re-run all tests which are outdated. A test is outdated if its
+## logfile is out-of-date with either the test file, or the source
+## files that the tests depend on. The source file dependencies are
+## determined by a heuristic and does not identify the full dependency
+## graph. See make-test-deps.emacs-lisp for details.
.PHONY: check-maybe
-check-maybe:
+check-maybe: check-no-automated-subdir
@${MAKE} check-doit SELECTOR="${SELECTOR_ACTUAL}"
## Run the tests.
@@ -157,17 +189,22 @@ check-doit: ${LOGFILES}
.PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean
mostlyclean:
- -@for f in *.log; do test ! -f $$f || mv $$f $$f~; done
+ -@for f in ${LOGFILES}; do test ! -f $$f || mv $$f $$f~; done
clean:
- -rm -f *.log *.log~
+ -rm -f ${LOGFILES} ${LOGSAVEFILES}
+ -rm make-test-deps.mk
bootstrap-clean: clean
- -rm -f ${srcdir}/*.elc
+ -rm -f ${ELCFILES}
distclean: clean
rm -f Makefile
maintainer-clean: distclean bootstrap-clean
+make-test-deps.mk: $(ELFILES) make-test-deps.emacs-lisp
+ $(EMACS) --batch -l $(srcdir)/make-test-deps.emacs-lisp \
+ --eval "(make-test-deps \"$(srcdir)\")" \
+ 2> $@
# Makefile ends here.
diff --git a/test/README b/test/README
index d2aee9bf57..2994fca6c8 100644
--- a/test/README
+++ b/test/README
@@ -8,8 +8,7 @@ Emacs uses ERT, Emacs Lisp Regression Testing, for testing. See (info
"(ert)") or https://www.gnu.org/software/emacs/manual/html_node/ert/
for more information on writing and running tests.
-All ERT test files are supposed to run from subdirectory automated/.
-The Makefile in that directory supports the following targets:
+The Makefile in this directory supports the following targets:
* make check
Run all tests as defined in the directory. Expensive tests are
diff --git a/test/automated/abbrev-tests.el b/test/automated/abbrev-tests.el
deleted file mode 100644
index 66413c5a59..0000000000
--- a/test/automated/abbrev-tests.el
+++ /dev/null
@@ -1,98 +0,0 @@
-;;; abbrev-tests.el --- Test suite for abbrevs.
-
-;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
-
-;; Author: Eli Zaretskii <eliz@gnu.org>
-;; Keywords: abbrevs
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; `kill-all-abbrevs-test' will remove all user *and* system abbrevs
-;; if called noninteractively with the init file loaded.
-
-;;; Code:
-
-(require 'ert)
-(require 'abbrev)
-(require 'seq)
-
-;; set up test abbrev table and abbrev entry
-(defun setup-test-abbrev-table ()
- (defvar ert-test-abbrevs nil)
- (define-abbrev-table 'ert-test-abbrevs '(("a-e-t" "abbrev-ert-test")))
- (abbrev-table-put ert-test-abbrevs :ert-test "ert-test-value")
- ert-test-abbrevs)
-
-(ert-deftest copy-abbrev-table-test ()
- (defvar foo-abbrev-table nil) ; Avoid compiler warning
- (define-abbrev-table 'foo-abbrev-table
- '())
- (should (abbrev-table-p foo-abbrev-table))
- ;; Bug 21828
- (let ((new-foo-abbrev-table
- (condition-case nil
- (copy-abbrev-table foo-abbrev-table)
- (error nil))))
- (should (abbrev-table-p new-foo-abbrev-table)))
- (should-not (string-equal (buffer-name) "*Backtrace*")))
-
-(ert-deftest kill-all-abbrevs-test ()
- "Test undefining all defined abbrevs"
- (unless noninteractive
- (ert-skip "Cannot test kill-all-abbrevs in interactive mode"))
-
- (let ((num-tables 0))
- ;; ensure at least one abbrev exists
- (should (abbrev-table-p (setup-test-abbrev-table)))
- (setf num-tables (length abbrev-table-name-list))
- (kill-all-abbrevs)
-
- ;; no tables should have been removed/added
- (should (= num-tables (length abbrev-table-name-list)))
- ;; number of empty tables should be the same as number of tables
- (should (= num-tables (length (seq-filter
- (lambda (table)
- (abbrev-table-empty-p (symbol-value table)))
- abbrev-table-name-list))))))
-
-(ert-deftest abbrev-table-name-test ()
- "Test returning name of abbrev-table"
- (let ((ert-test-abbrevs (setup-test-abbrev-table))
- (no-such-table nil))
- (should (equal 'ert-test-abbrevs (abbrev-table-name ert-test-abbrevs)))
- (should (equal nil (abbrev-table-name no-such-table)))))
-
-(ert-deftest clear-abbrev-table-test ()
- "Test clearing single abbrev table"
- (let ((ert-test-abbrevs (setup-test-abbrev-table)))
- (should (equal "a-e-t" (symbol-name
- (abbrev-symbol "a-e-t" ert-test-abbrevs))))
- (should (equal "abbrev-ert-test" (symbol-value
- (abbrev-symbol "a-e-t" ert-test-abbrevs))))
-
- (clear-abbrev-table ert-test-abbrevs)
-
- (should (equal "nil" (symbol-name
- (abbrev-symbol "a-e-t" ert-test-abbrevs))))
- (should (equal nil (symbol-value
- (abbrev-symbol "a-e-t" ert-test-abbrevs))))
- (should (equal t (abbrev-table-empty-p ert-test-abbrevs)))))
-
-(provide 'abbrev-tests)
-
-;;; abbrev-tests.el ends here
diff --git a/test/automated/help-fns.el b/test/automated/help-fns.el
deleted file mode 100644
index babba1a68f..0000000000
--- a/test/automated/help-fns.el
+++ /dev/null
@@ -1,70 +0,0 @@
-;;; help-fns.el --- tests for help-fns.el
-
-;; Copyright (C) 2014-2016 Free Software Foundation, Inc.
-
-;; Maintainer: emacs-devel@gnu.org
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;;; Code:
-
-(require 'ert)
-
-(autoload 'help-fns-test--macro "help-fns" nil nil t)
-
-(ert-deftest help-fns-test-bug17410 ()
- "Test for http://debbugs.gnu.org/17410 ."
- (describe-function 'help-fns-test--macro)
- (with-current-buffer "*Help*"
- (goto-char (point-min))
- (should (search-forward "autoloaded Lisp macro" (line-end-position)))))
-
-(defun abc\\\[universal-argument\]b\`c\'d\\e\"f (x)
- "A function with a funny name.
-
-\(fn XYZZY)"
- x)
-
-(defun defgh\\\[universal-argument\]b\`c\'d\\e\"f (x)
- "Another function with a funny name."
- x)
-
-(ert-deftest help-fns-test-funny-names ()
- "Test for help with functions with funny names."
- (describe-function 'abc\\\[universal-argument\]b\`c\'d\\e\"f)
- (with-current-buffer "*Help*"
- (goto-char (point-min))
- (should (search-forward
- "(abc\\\\\\[universal-argument\\]b\\`c\\'d\\\\e\\\"f XYZZY)")))
- (describe-function 'defgh\\\[universal-argument\]b\`c\'d\\e\"f)
- (with-current-buffer "*Help*"
- (goto-char (point-min))
- (should (search-forward
- "(defgh\\\\\\[universal-argument\\]b\\`c\\'d\\\\e\\\"f X)"))))
-
-(ert-deftest help-fns-test-describe-symbol ()
- "Test the `describe-symbol' function."
- ;; 'describe-symbol' would originally signal an error for
- ;; 'font-lock-comment-face'.
- (describe-symbol 'font-lock-comment-face)
- (with-current-buffer "*Help*"
- (should (> (point-max) 1))
- (goto-char (point-min))
- (should (looking-at "^font-lock-comment-face is "))))
-
-;;; help-fns.el ends here
diff --git a/test/automated/data/decompress/foo.gz b/test/data/decompress/foo.gz
index a68653fcbb..a68653fcbb 100644
--- a/test/automated/data/decompress/foo.gz
+++ b/test/data/decompress/foo.gz
Binary files differ
diff --git a/test/automated/data/epg/pubkey.asc b/test/data/epg/pubkey.asc
index c0bf28f620..c0bf28f620 100644
--- a/test/automated/data/epg/pubkey.asc
+++ b/test/data/epg/pubkey.asc
diff --git a/test/automated/data/epg/seckey.asc b/test/data/epg/seckey.asc
index 4ac7ba4a50..4ac7ba4a50 100644
--- a/test/automated/data/epg/seckey.asc
+++ b/test/data/epg/seckey.asc
diff --git a/test/automated/data/files-bug18141.el.gz b/test/data/files-bug18141.el.gz
index 53d463e85b..53d463e85b 100644
--- a/test/automated/data/files-bug18141.el.gz
+++ b/test/data/files-bug18141.el.gz
Binary files differ
diff --git a/test/data/net/cert.pem b/test/data/net/cert.pem
new file mode 100644
index 0000000000..4df4e92e0b
--- /dev/null
+++ b/test/data/net/cert.pem
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIELTCCAxWgAwIBAgIJAI6LqlFyaPRkMA0GCSqGSIb3DQEBCwUAMIGsMQswCQYD
+VQQGEwJBVTEYMBYGA1UECAwPTmV3IFNvdXRoIFdhbGVzMQ8wDQYDVQQHDAZTeWRu
+ZXkxITAfBgNVBAoMGEVtYWNzIFRlc3QgU2VydmljZXNzIExMQzESMBAGA1UECwwJ
+QXV0b21hdGVkMRcwFQYDVQQDDA50ZXN0LmVtYWNzLnpvdDEiMCAGCSqGSIb3DQEJ
+ARYTZW1hY3MtZGV2ZWxAZnNmLm9yZzAeFw0xNjAyMDgwNDA0MzJaFw0xNjAzMDkw
+NDA0MzJaMIGsMQswCQYDVQQGEwJBVTEYMBYGA1UECAwPTmV3IFNvdXRoIFdhbGVz
+MQ8wDQYDVQQHDAZTeWRuZXkxITAfBgNVBAoMGEVtYWNzIFRlc3QgU2VydmljZXNz
+IExMQzESMBAGA1UECwwJQXV0b21hdGVkMRcwFQYDVQQDDA50ZXN0LmVtYWNzLnpv
+dDEiMCAGCSqGSIb3DQEJARYTZW1hY3MtZGV2ZWxAZnNmLm9yZzCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAM52lP7k1rBpctBX1irRVgDerxqlFSTkvg8L
+WmRCfwm3XY8EZWqM/8Eex5soH7myRlWfUH/cKxbqScZqXotj0hlPxdRkM6gWgHS9
+Mml7wnz2LZGvD5PfMfs+yBHKAMrqortFXCKksHsYIJ66l9gJMm1G5XjWha6CaEr/
+k2bE5Ovw0fB2B4vH0OqhJzGyenJOspXZz1ttn3h3UC5fbDXS8fUM9k/FbgJKypWr
+zB3P12GcMR939FsR5sqa8nNoCMw+WBzs4XuM5Ad+s/UtEaZvmtwvLwmdB7cgCEyM
+x5gaM969SlpOmuy7dDTCCK3lBl6B5dgFKvVcChYwSW+xJz5tfL0CAwEAAaNQME4w
+HQYDVR0OBBYEFG3YhH7ZzEdOGstkT67uUh1RylNjMB8GA1UdIwQYMBaAFG3YhH7Z
+zEdOGstkT67uUh1RylNjMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB
+ADnJL2tBMnPepywA57yDfJz54FvrqRd+UAjSiB7/QySDpHnTM3b3sXWfwAkXPTjM
+c+jRW2kfdnL6OQW2tpcpPZANGnwK8MJrtGcbHhtPXjgDRhVZp64hsB7ayS+l0Dm7
+2ZBbi2SF8FgZVcQy0WD01ir2raSODo124dMrq+3aHP77YLbiNEKj+wFoDbndQ1FQ
+gtIJBE80FADoqc7LnBrpA20aVlfqhKZqe+leYDSZ+CE1iwlPdvD+RTUxVDs5EfpB
+qVOHDlzEfVmcMnddKTV8pNYuo93AG4s0KdrGG9RwSvtLaOoHd2i6RmIs+Yiumbau
+mXodMxxAEW/cM7Ita/2QVmk=
+-----END CERTIFICATE-----
diff --git a/test/data/net/key.pem b/test/data/net/key.pem
new file mode 100644
index 0000000000..5db58f573c
--- /dev/null
+++ b/test/data/net/key.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOdpT+5NawaXLQ
+V9Yq0VYA3q8apRUk5L4PC1pkQn8Jt12PBGVqjP/BHsebKB+5skZVn1B/3CsW6knG
+al6LY9IZT8XUZDOoFoB0vTJpe8J89i2Rrw+T3zH7PsgRygDK6qK7RVwipLB7GCCe
+upfYCTJtRuV41oWugmhK/5NmxOTr8NHwdgeLx9DqoScxsnpyTrKV2c9bbZ94d1Au
+X2w10vH1DPZPxW4CSsqVq8wdz9dhnDEfd/RbEebKmvJzaAjMPlgc7OF7jOQHfrP1
+LRGmb5rcLy8JnQe3IAhMjMeYGjPevUpaTprsu3Q0wgit5QZegeXYBSr1XAoWMElv
+sSc+bXy9AgMBAAECggEAaqHkIiGeoE5V9jTncAXeHWTlmyVX3k4luy9p6A5P/nyt
+3YevuXBJRzzWatQ2Tno8yUwXD3Ju7s7ie4/EdMmBYYFJ84AtDctRXPm6Z7B7qn6a
+2ntH2F+WOOUb/9QMxMCae44/H8VfQLQdZN2KPxHA8Z+ENPzW3mKL6vBE+PcIJLK2
+kTXQdCEIuUb1v4kxKYfjyyHAQ9yHvocUvZdodGHrpmWOr/2QCrqCjwiKnXyvdJMi
+JQ4a3dU+JG5Zwr2hScyeLgS4p+M3A2NY+oIACn2rCcsIKC6uvBK3wAbhssaY8z9c
+5kap862oMBNmPCxPuQTIIO7ptla0EWHktpFxnu7GIQKBgQDvKyXt82zGHiOZ9acx
+4fV7t3NF2MNd9fOn59NYWYRSs2gaEjit6BnsCgiKZOJJ2YFsggBiQMiWuEzwqIdW
+bOH8W5AubTxnE2OjeIpH5r8AXI6I/pKdOedM86oeElbL0p53OZqSqBK6vA5SnE76
+fZwC505h/mqH2E6AdKpcyL7sJwKBgQDc/jc4MkVnqF7xcYoJrYEbnkhwqRxIM+0Y
+HY2qXszWQPgjae3NK1rw/PEOATzWrHLvRS/utQ8yeLUAZIGsFY8+c1kjvkvl4ZK2
+OnsEOVLmEwjDqqnq3JFYCVSkXfLBGRD3wGldzkCQljOiGuJ/Co1rGHk7CfBmxX2p
+kxdts5OKewKBgQDTRsSc7Zs7cMh2a0GlmTyoa6iTHSeIy4rQ2sQimgGApSfjUBFt
+30l28G4XA4O7RT9FwZnhMeWA75JYTigwOsNvkNtPiAQB8mjksclGNxqnkRwA/RI7
+fjlMCzxOkFjIeWivXd2kjIDvIM1uQNKsCWZWUks12e/1zSmb5HPSvyuZpQKBgQDQ
+qVgKP604ysmav9HOgXy+Tx2nAoYpxp2/f2gbzZcrVfz1szdN2fnsQWh6CMEhEYMU
+WQeBJIRM65w72qp1iYXPOaqZDT0suWiFl4I/4sBbbO2BkssNb2Xs8iJxcCOeH8Td
+qVfTssNTwf7OuQPTYGtXC6ysCh5ra13Tl4cvlbdhsQKBgFHXP+919wSncLS+2ySD
+waBzG6GyVOgV+FE3DrM3Xp4S6fldWYAndKHQ1HjJVDY8SkC2Tk1D7QSQnmS+ZzYs
+YqzcnkPCTHLb6wCErs4ZiW0gn9xJnfxyv6wPujsayL4TMsmsqkj/IAB61UjwaA/a
+Z+rUw/WkcNPD59AD1J0eeSZu
+-----END PRIVATE KEY-----
diff --git a/test/data/shr/div-div.html b/test/data/shr/div-div.html
new file mode 100644
index 0000000000..1c191ae44d
--- /dev/null
+++ b/test/data/shr/div-div.html
@@ -0,0 +1 @@
+<div>foo</div><div>Bar</div>
diff --git a/test/data/shr/div-div.txt b/test/data/shr/div-div.txt
new file mode 100644
index 0000000000..62715e1251
--- /dev/null
+++ b/test/data/shr/div-div.txt
@@ -0,0 +1,2 @@
+foo
+Bar
diff --git a/test/data/shr/div-p.html b/test/data/shr/div-p.html
new file mode 100644
index 0000000000..fcbdfc4329
--- /dev/null
+++ b/test/data/shr/div-p.html
@@ -0,0 +1 @@
+<div>foo</div><p>Bar</p>
diff --git a/test/data/shr/div-p.txt b/test/data/shr/div-p.txt
new file mode 100644
index 0000000000..859d731da8
--- /dev/null
+++ b/test/data/shr/div-p.txt
@@ -0,0 +1,3 @@
+foo
+
+Bar
diff --git a/test/data/shr/li-div.html b/test/data/shr/li-div.html
new file mode 100644
index 0000000000..eca3c511bd
--- /dev/null
+++ b/test/data/shr/li-div.html
@@ -0,0 +1,10 @@
+<ul>
+ <li>
+ <div>
+ <p >This is the first paragraph of a list item.</div>
+ <p >This is the second paragraph of a list item.</li>
+ <li>
+ <div>This is the first paragraph of a list item.</div>
+ <div>This is the second paragraph of a list item.</div>
+ </li>
+</ul>
diff --git a/test/data/shr/li-div.txt b/test/data/shr/li-div.txt
new file mode 100644
index 0000000000..9fc54f2bdc
--- /dev/null
+++ b/test/data/shr/li-div.txt
@@ -0,0 +1,6 @@
+* This is the first paragraph of a list item.
+
+ This is the second paragraph of a list item.
+
+* This is the first paragraph of a list item.
+ This is the second paragraph of a list item.
diff --git a/test/data/shr/li-empty.html b/test/data/shr/li-empty.html
new file mode 100644
index 0000000000..05cfee7bdd
--- /dev/null
+++ b/test/data/shr/li-empty.html
@@ -0,0 +1 @@
+<ol><li></li><li></li><li></li></ol>
diff --git a/test/data/shr/li-empty.txt b/test/data/shr/li-empty.txt
new file mode 100644
index 0000000000..906fd8df8b
--- /dev/null
+++ b/test/data/shr/li-empty.txt
@@ -0,0 +1,3 @@
+1%20
+2%20
+3%20
diff --git a/test/data/shr/nonbr.html b/test/data/shr/nonbr.html
new file mode 100644
index 0000000000..56282cf4ca
--- /dev/null
+++ b/test/data/shr/nonbr.html
@@ -0,0 +1 @@
+<div class="gmail_extra">(progn</div><div class="gmail_extra">  (setq minibuffer-prompt-properties &#39;(read-only t cursor-intangible t face minibuffer-prompt))</div><div class="gmail_extra"><br></div><div class="gmail_extra">  (defun turn-on-cursor-intangible-mode ()</div><div class="gmail_extra">    &quot;Turns on cursor-intangible-mode.&quot;</div><div class="gmail_extra">    (interactive)</div><div class="gmail_extra">    (cursor-intangible-mode 1))</div><div class="gmail_extra">  (define-globalized-minor-mode global-cursor-intangible-mode cursor-intangible-mode turn-on-cursor-intangible-mode)</div><div class="gmail_extra"><br></div><div class="gmail_extra">  (global-cursor-intangible-mode 1))</div><div class="gmail_extra"><br></div>
diff --git a/test/data/shr/nonbr.txt b/test/data/shr/nonbr.txt
new file mode 100644
index 0000000000..0c3cffa93f
--- /dev/null
+++ b/test/data/shr/nonbr.txt
@@ -0,0 +1,12 @@
+(progn
+ (setq minibuffer-prompt-properties '(read-only t cursor-intangible t face
+minibuffer-prompt))
+
+ (defun turn-on-cursor-intangible-mode ()
+ "Turns on cursor-intangible-mode."
+ (interactive)
+ (cursor-intangible-mode 1))
+ (define-globalized-minor-mode global-cursor-intangible-mode
+cursor-intangible-mode turn-on-cursor-intangible-mode)
+
+ (global-cursor-intangible-mode 1))
diff --git a/test/data/shr/ul-empty.html b/test/data/shr/ul-empty.html
new file mode 100644
index 0000000000..e5a75ab921
--- /dev/null
+++ b/test/data/shr/ul-empty.html
@@ -0,0 +1,4 @@
+<ul>
+<li></li>
+</ul>
+Lala
diff --git a/test/data/shr/ul-empty.txt b/test/data/shr/ul-empty.txt
new file mode 100644
index 0000000000..8993555425
--- /dev/null
+++ b/test/data/shr/ul-empty.txt
@@ -0,0 +1,3 @@
+*
+
+Lala \ No newline at end of file
diff --git a/test/automated/data/xref/file1.txt b/test/data/xref/file1.txt
index 5d7cc54444..5d7cc54444 100644
--- a/test/automated/data/xref/file1.txt
+++ b/test/data/xref/file1.txt
diff --git a/test/automated/data/xref/file2.txt b/test/data/xref/file2.txt
index 9f075f2600..9f075f2600 100644
--- a/test/automated/data/xref/file2.txt
+++ b/test/data/xref/file2.txt
diff --git a/test/file-organization.org b/test/file-organization.org
new file mode 100644
index 0000000000..226e12d533
--- /dev/null
+++ b/test/file-organization.org
@@ -0,0 +1,54 @@
+#+TITLE: The Location of Emacs-Lisp Tests
+
+
+
+* The Main Emacs Repository
+
+The Emacs repository contains a very large number of Emacs-Lisp files, many of
+which pre-date both formal package support for Emacs and automated unit
+testing.
+
+All paths are relative to the Emacs root directory.
+
+** Source
+
+Lisp files are stored in the ~lisp~ directory or its sub-directories.
+Sub-directories are in many cases themed after packages (~gnus~, ~org~,
+~calc~), related functionality (~net~, ~emacs-lisp~, ~progmodes~) or status
+(~obsolete~).
+
+C source is stored in the ~src~ directory, which is flat.
+
+** Test Files
+
+Automated tests should be stored in the ~test/automated/lisp~ directory. Tests
+should reflect the directory structure of the source tree; so tests for files
+in the ~emacs-lisp~ source directory should reside in the
+~test/lisp/emacs-lisp~ directory.
+
+Tests should normally reside in a file with ~-tests~ added to the name of
+the tested source file; hence ~ert.el~ is tested in ~ert-tests.el~, or
+~pcase.el~ is tested in ~pcase-tests.el~. Exceptionally, tests for a
+single feature may be placed into multiple files of any name which are
+themselves placed in a directory named after the feature with ~-tests~
+appended, such as ~/test/lisp/emacs-lisp/eieio-tests~
+
+Where features of the C source are tested using Emacs-Lisp test files, these
+should reside in ~/test/src~ and be named after the C file.
+
+A few test suites which predate this scheme and do not fit cleanly
+into it are placed in ~/test/lisp/legacy~.
+
+There are also some test materials that cannot be run automatically
+(i.e. via ert). These should be placed in ~/test/manual~
+
+** Resource Files
+
+Resource files for tests (containing test data) should reside in a directory
+named after the feature with a ~-resources~ suffix, and located in the same
+directory as the feature. Hence, the lisp file ~flymake.el~ should have test
+files in ~/test/automated/lisp/progmodes/flymake-tests.el~ should reside in a
+directory called ~/test/automated/lisp/progmodes/flymake-resources~.
+
+No guidance is given for the organization of resource files inside the
+~-resource~ directory; files can be organized at the author's discretion.
diff --git a/test/lisp/abbrev-tests.el b/test/lisp/abbrev-tests.el
new file mode 100644
index 0000000000..c747e19db8
--- /dev/null
+++ b/test/lisp/abbrev-tests.el
@@ -0,0 +1,255 @@
+;;; abbrev-tests.el --- Test suite for abbrevs -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
+
+;; Author: Eli Zaretskii <eliz@gnu.org>
+;; Keywords: abbrevs
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; `kill-all-abbrevs-test' will remove all user *and* system abbrevs
+;; if called noninteractively with the init file loaded.
+
+;;; Code:
+
+(require 'ert)
+(require 'abbrev)
+(require 'seq)
+
+;; set up test abbrev table and abbrev entry
+(defun setup-test-abbrev-table ()
+ (defvar ert-test-abbrevs nil)
+ (define-abbrev-table 'ert-test-abbrevs '(("a-e-t" "abbrev-ert-test")))
+ (abbrev-table-put ert-test-abbrevs :ert-test "ert-test-value")
+ ert-test-abbrevs)
+
+(ert-deftest abbrev-table-p-test ()
+ (should-not (abbrev-table-p 42))
+ (should-not (abbrev-table-p "aoeu"))
+ (should-not (abbrev-table-p '()))
+ (should-not (abbrev-table-p []))
+ ;; Missing :abbrev-table-modiff counter:
+ (should-not (abbrev-table-p (obarray-make)))
+ (let* ((table (obarray-make)))
+ (should (abbrev-table-empty-p (make-abbrev-table)))))
+
+(ert-deftest abbrev-make-abbrev-table-test ()
+ ;; Table without properties:
+ (let ((table (make-abbrev-table)))
+ (should (abbrev-table-p table))
+ (should (= (length table) obarray-default-size)))
+ ;; Table with one property 'foo with value 'bar:
+ (let ((table (make-abbrev-table '(foo bar))))
+ (should (abbrev-table-p table))
+ (should (= (length table) obarray-default-size))
+ (should (eq (abbrev-table-get table 'foo) 'bar))))
+
+(ert-deftest abbrev-table-get-put-test ()
+ (let ((table (make-abbrev-table)))
+ (should-not (abbrev-table-get table 'foo))
+ (should (= (abbrev-table-put table 'foo 42) 42))
+ (should (= (abbrev-table-get table 'foo) 42))
+ (should (eq (abbrev-table-put table 'foo 'bar) 'bar))
+ (should (eq (abbrev-table-get table 'foo) 'bar))))
+
+(ert-deftest copy-abbrev-table-test ()
+ (defvar foo-abbrev-table nil) ; Avoid compiler warning
+ (define-abbrev-table 'foo-abbrev-table
+ '())
+ (should (abbrev-table-p foo-abbrev-table))
+ ;; Bug 21828
+ (let ((new-foo-abbrev-table
+ (condition-case nil
+ (copy-abbrev-table foo-abbrev-table)
+ (error nil))))
+ (should (abbrev-table-p new-foo-abbrev-table)))
+ (should-not (string-equal (buffer-name) "*Backtrace*")))
+
+(ert-deftest abbrev-table-empty-p-test ()
+ (should-error (abbrev-table-empty-p 42))
+ (should-error (abbrev-table-empty-p "aoeu"))
+ (should-error (abbrev-table-empty-p '()))
+ (should-error (abbrev-table-empty-p []))
+ ;; Missing :abbrev-table-modiff counter:
+ (should-error (abbrev-table-empty-p (obarray-make)))
+ (let* ((table (obarray-make)))
+ (abbrev-table-put table :abbrev-table-modiff 42)
+ (should (abbrev-table-empty-p table))))
+
+(ert-deftest kill-all-abbrevs-test ()
+ "Test undefining all defined abbrevs"
+ (unless noninteractive
+ (ert-skip "Cannot test kill-all-abbrevs in interactive mode"))
+
+ (let ((num-tables 0))
+ ;; ensure at least one abbrev exists
+ (should (abbrev-table-p (setup-test-abbrev-table)))
+ (setf num-tables (length abbrev-table-name-list))
+ (kill-all-abbrevs)
+
+ ;; no tables should have been removed/added
+ (should (= num-tables (length abbrev-table-name-list)))
+ ;; number of empty tables should be the same as number of tables
+ (should (= num-tables (length (seq-filter
+ (lambda (table)
+ (abbrev-table-empty-p (symbol-value table)))
+ abbrev-table-name-list))))))
+
+(ert-deftest abbrev-table-name-test ()
+ "Test returning name of abbrev-table"
+ (let ((ert-test-abbrevs (setup-test-abbrev-table))
+ (no-such-table nil))
+ (should (equal 'ert-test-abbrevs (abbrev-table-name ert-test-abbrevs)))
+ (should (equal nil (abbrev-table-name no-such-table)))))
+
+(ert-deftest clear-abbrev-table-test ()
+ "Test clearing single abbrev table"
+ (let ((ert-test-abbrevs (setup-test-abbrev-table)))
+ (should (equal "abbrev-ert-test" (abbrev-expansion "a-e-t" ert-test-abbrevs)))
+ (clear-abbrev-table ert-test-abbrevs)
+ (should (equal nil (abbrev-expansion "a-e-t" ert-test-abbrevs)))
+ (should (equal t (abbrev-table-empty-p ert-test-abbrevs)))))
+
+(ert-deftest list-abbrevs-test ()
+ "Test generation of abbrev list buffer"
+ ;; Somewhat redundant as prepare-abbrev-list-buffer is also tested.
+ ;; all abbrevs
+ (let ((abbrev-buffer (prepare-abbrev-list-buffer)))
+ (should (equal "*Abbrevs*" (buffer-name abbrev-buffer)))
+ (kill-buffer abbrev-buffer))
+ ;; mode-specific abbrevs
+ (let ((abbrev-buffer (prepare-abbrev-list-buffer t)))
+ (should (equal "*Abbrevs*" (buffer-name abbrev-buffer)))
+ (kill-buffer abbrev-buffer)))
+
+(ert-deftest prepare-abbrev-list-buffer-test ()
+ "Test generation of abbrev list buffer"
+ ;; all abbrevs
+ (let ((ert-test-abbrevs (setup-test-abbrev-table)))
+ (with-current-buffer (prepare-abbrev-list-buffer)
+ ;; Check for a couple of abbrev-table names in buffer.
+ (should (and (progn
+ (goto-char (point-min))
+ (search-forward (symbol-name (abbrev-table-name ert-test-abbrevs))))
+ (progn
+ (goto-char (point-min))
+ (search-forward "global-abbrev-table"))))
+ (should (equal 'edit-abbrevs-mode major-mode))
+ (kill-buffer "*Abbrevs*")))
+
+ ;; mode-specific abbrevs (temp buffer uses fundamental-mode)
+ (with-temp-buffer
+ (prepare-abbrev-list-buffer t)
+ (with-current-buffer "*Abbrevs*"
+ (should (progn
+ (goto-char (point-min))
+ (search-forward "fundamental-mode-abbrev-table")))
+ (should-error (progn
+ (goto-char (point-min))
+ (search-forward "global-abbrev-table")))
+ (should-not (equal 'edit-abbrevs-mode major-mode))
+ (kill-buffer "*Abbrevs*"))))
+
+(ert-deftest insert-abbrevs-test ()
+ "Test inserting abbrev definitions into buffer"
+ (with-temp-buffer
+ (insert-abbrevs)
+ (should (progn
+ (goto-char (point-min))
+ (search-forward "global-abbrev-table")))))
+
+(ert-deftest edit-abbrevs-test ()
+ "Test editing abbrevs from buffer"
+ (defvar ert-edit-abbrevs-test-table nil)
+ (let ((ert-test-abbrevs (setup-test-abbrev-table)))
+ (with-temp-buffer
+ ;; insert test table and new abbrev, redefine, check definition
+ (goto-char (point-min))
+ (insert "(ert-edit-abbrevs-test-table)\n")
+ (insert "\n" "\"e-a-t\"\t" "0\t" "\"edit-abbrevs-test\"\n")
+ ;; check test table before redefine
+ (should (equal "abbrev-ert-test"
+ (abbrev-expansion "a-e-t" ert-test-abbrevs)))
+ (edit-abbrevs-redefine)
+ (should-not (abbrev-expansion "a-e-t" ert-test-abbrevs))
+ (should (equal "edit-abbrevs-test"
+ (abbrev-expansion "e-a-t" ert-edit-abbrevs-test-table))))))
+
+(ert-deftest define-abbrevs-test ()
+ "Test defining abbrevs from buffer"
+ (defvar ert-bad-abbrev-table nil)
+ (defvar ert-good-abbrev-table nil)
+ (defvar ert-redefine-abbrev-table nil)
+ (with-temp-buffer
+ ;; insert bad abbrev data and attempt define
+ (goto-char (point-min))
+ (insert "ert-bad-abbrev-table\n")
+ (insert "\n" "\"b-a-t\"\t" "0\t" "\n")
+ (should-not (define-abbrevs))
+ (should (equal nil (abbrev-expansion "b-a-t" ert-bad-abbrev-table)))
+ (delete-region (point-min) (point-max))
+ ;; try with valid abbrev data
+ (goto-char (point-min))
+ (insert "(ert-good-abbrev-table)\n")
+ (insert "\n" "\"g-a-t\"\t" "0\t" "\"good-abbrev-table\"\n")
+ (define-abbrevs)
+ (should (equal "good-abbrev-table"
+ (abbrev-expansion "g-a-t" ert-good-abbrev-table)))
+ ;; redefine from buffer
+ (delete-region (point-min) (point-max))
+ (insert "(ert-redefine-abbrev-table)\n")
+ (insert "\n" "\"r-a-t\"\t" "0\t" "\"redefine-abbrev-table\"\n")
+ ;; arg = kill-all-abbrevs
+ (define-abbrevs t)
+ (should (equal "redefine-abbrev-table"
+ (abbrev-expansion "r-a-t" ert-redefine-abbrev-table)))
+ (should (equal nil (abbrev-expansion "g-a-t" ert-good-abbrev-table)))))
+
+(ert-deftest read-write-abbrev-file-test ()
+ "Test reading and writing abbrevs from file"
+ (let ((temp-test-file (make-temp-file "ert-abbrev-test"))
+ (ert-test-abbrevs (setup-test-abbrev-table)))
+ (write-abbrev-file temp-test-file)
+ (clear-abbrev-table ert-test-abbrevs)
+ (should (abbrev-table-empty-p ert-test-abbrevs))
+ (read-abbrev-file temp-test-file)
+ (should (equal "abbrev-ert-test" (abbrev-expansion "a-e-t" ert-test-abbrevs)))
+ (delete-file temp-test-file)))
+
+(ert-deftest abbrev-edit-save-to-file-test ()
+ "Test saving abbrev definitions in buffer to file"
+ (defvar ert-save-test-table nil)
+ (let ((temp-test-file (make-temp-file "ert-abbrev-test"))
+ (ert-test-abbrevs (setup-test-abbrev-table)))
+ (with-temp-buffer
+ (goto-char (point-min))
+ (insert "(ert-save-test-table)\n")
+ (insert "\n" "\"s-a-t\"\t" "0\t" "\"save-abbrevs-test\"\n")
+ (should (equal "abbrev-ert-test"
+ (abbrev-expansion "a-e-t" ert-test-abbrevs)))
+ ;; clears abbrev tables
+ (abbrev-edit-save-to-file temp-test-file)
+ (should-not (abbrev-expansion "a-e-t" ert-test-abbrevs))
+ (read-abbrev-file temp-test-file)
+ (should (equal "save-abbrevs-test"
+ (abbrev-expansion "s-a-t" ert-save-test-table)))
+ (delete-file temp-test-file))))
+
+(provide 'abbrev-tests)
+
+;;; abbrev-tests.el ends here
diff --git a/test/automated/auth-source-tests.el b/test/lisp/auth-source-tests.el
index 5faa1fe20b..5faa1fe20b 100644
--- a/test/automated/auth-source-tests.el
+++ b/test/lisp/auth-source-tests.el
diff --git a/test/automated/auto-revert-tests.el b/test/lisp/autorevert-tests.el
index a6f8cb2956..2f951c0c9a 100644
--- a/test/automated/auto-revert-tests.el
+++ b/test/lisp/autorevert-tests.el
@@ -156,7 +156,76 @@
(ignore-errors (delete-directory tmpdir1 'recursive))
(ignore-errors (delete-directory tmpdir2 'recursive)))))
-(ert-deftest auto-revert-test02-auto-revert-tail-mode ()
+;; This is inspired by Bug#23276.
+(ert-deftest auto-revert-test02-auto-revert-deleted-file ()
+ "Check autorevert for a deleted file."
+ :tags '(:expensive-test)
+
+ (let ((tmpfile (make-temp-file "auto-revert-test"))
+ buf)
+ (unwind-protect
+ (progn
+ (with-current-buffer (get-buffer-create "*Messages*")
+ (narrow-to-region (point-max) (point-max)))
+ (write-region "any text" nil tmpfile nil 'no-message)
+ (setq buf (find-file-noselect tmpfile))
+ (with-current-buffer buf
+ (should (string-equal (buffer-string) "any text"))
+ ;; `buffer-stale--default-function' checks for
+ ;; `verify-visited-file-modtime'. We must ensure that
+ ;; it returns nil.
+ (sleep-for 1)
+ (auto-revert-mode 1)
+ (should auto-revert-mode)
+
+ ;; Remove file while reverting. We simulate this by
+ ;; modifying `before-revert-hook'.
+ (add-hook
+ 'before-revert-hook
+ (lambda () (delete-file buffer-file-name))
+ nil t)
+ (with-current-buffer (get-buffer-create "*Messages*")
+ (narrow-to-region (point-max) (point-max)))
+ (sleep-for 1)
+ (write-region "another text" nil tmpfile nil 'no-message)
+
+ ;; Check, that the buffer hasn't been reverted. File
+ ;; notification should be disabled, falling back to
+ ;; polling.
+ (auto-revert--wait-for-revert buf)
+ (should (string-match "any text" (buffer-string)))
+ (should-not auto-revert-use-notify)
+
+ ;; Once the file has been recreated, the buffer shall be
+ ;; reverted.
+ (kill-local-variable 'before-revert-hook)
+ (with-current-buffer (get-buffer-create "*Messages*")
+ (narrow-to-region (point-max) (point-max)))
+ (sleep-for 1)
+ (write-region "another text" nil tmpfile nil 'no-message)
+
+ ;; Check, that the buffer has been reverted.
+ (auto-revert--wait-for-revert buf)
+ (should (string-match "another text" (buffer-string)))
+
+ ;; An empty file shall still be reverted.
+ (with-current-buffer (get-buffer-create "*Messages*")
+ (narrow-to-region (point-max) (point-max)))
+ (sleep-for 1)
+ (write-region "" nil tmpfile nil 'no-message)
+
+ ;; Check, that the buffer has been reverted.
+ (auto-revert--wait-for-revert buf)
+ (should (string-equal "" (buffer-string)))))
+
+ ;; Exit.
+ (with-current-buffer "*Messages*" (widen))
+ (ignore-errors
+ (with-current-buffer buf (set-buffer-modified-p nil))
+ (kill-buffer buf))
+ (ignore-errors (delete-file tmpfile)))))
+
+(ert-deftest auto-revert-test03-auto-revert-tail-mode ()
"Check autorevert tail mode."
;; `auto-revert-buffers' runs every 5". And we must wait, until the
;; file has been reverted.
@@ -194,7 +263,7 @@
(ignore-errors (kill-buffer buf))
(ignore-errors (delete-file tmpfile)))))
-(ert-deftest auto-revert-test03-auto-revert-mode-dired ()
+(ert-deftest auto-revert-test04-auto-revert-mode-dired ()
"Check autorevert for dired."
;; `auto-revert-buffers' runs every 5". And we must wait, until the
;; file has been reverted.
diff --git a/test/automated/calc-tests.el b/test/lisp/calc/calc-tests.el
index c1fb1695c7..c1fb1695c7 100644
--- a/test/automated/calc-tests.el
+++ b/test/lisp/calc/calc-tests.el
diff --git a/test/automated/icalendar-tests.el b/test/lisp/calendar/icalendar-tests.el
index 2c13a36321..6db4222697 100644
--- a/test/automated/icalendar-tests.el
+++ b/test/lisp/calendar/icalendar-tests.el
@@ -58,23 +58,16 @@
(ert-deftest icalendar--create-uid ()
"Test for `icalendar--create-uid'."
(let* ((icalendar-uid-format "xxx-%t-%c-%h-%u-%s")
- t-ct
(icalendar--uid-count 77)
(entry-full "30.06.1964 07:01 blahblah")
(hash (format "%d" (abs (sxhash entry-full))))
(contents "DTSTART:19640630T070100\nblahblah")
- (username (or user-login-name "UNKNOWN_USER"))
- )
- (fset 't-ct (symbol-function 'current-time))
- (unwind-protect
- (progn
- (fset 'current-time (lambda () '(1 2 3)))
- (should (= 77 icalendar--uid-count))
- (should (string= (concat "xxx-123-77-" hash "-" username "-19640630")
- (icalendar--create-uid entry-full contents)))
- (should (= 78 icalendar--uid-count)))
- ;; restore 'current-time
- (fset 'current-time (symbol-function 't-ct)))
+ (username (or user-login-name "UNKNOWN_USER")))
+ (cl-letf (((symbol-function 'current-time) (lambda () '(1 2 3))))
+ (should (= 77 icalendar--uid-count))
+ (should (string= (concat "xxx-123-77-" hash "-" username "-19640630")
+ (icalendar--create-uid entry-full contents)))
+ (should (= 78 icalendar--uid-count)))
(setq contents "blahblah")
(setq icalendar-uid-format "yyy%syyy")
(should (string= (concat "yyyDTSTARTyyy")
diff --git a/test/lisp/calendar/parse-time-tests.el b/test/lisp/calendar/parse-time-tests.el
new file mode 100644
index 0000000000..9bcf2b4a53
--- /dev/null
+++ b/test/lisp/calendar/parse-time-tests.el
@@ -0,0 +1,49 @@
+;; parse-time-tests.el --- Test suite for parse-time.el
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Lars Ingebrigtsen <larsi@gnus.org>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'ert)
+(require 'parse-time)
+
+(ert-deftest parse-time-tests ()
+ (should (equal (parse-time-string "Mon, 22 Feb 2016 19:35:42 +0100")
+ '(42 35 19 22 2 2016 1 nil 3600)))
+ (should (equal (parse-time-string "22 Feb 2016 19:35:42 +0100")
+ '(42 35 19 22 2 2016 nil nil 3600)))
+ (should (equal (parse-time-string "22 Feb 2016 +0100")
+ '(nil nil nil 22 2 2016 nil nil 3600)))
+ (should (equal (parse-time-string "Mon, 22 Feb 16 19:35:42 +0100")
+ '(42 35 19 22 2 2016 1 nil 3600)))
+ (should (equal (parse-time-string "Mon, 22 February 2016 19:35:42 +0100")
+ '(42 35 19 22 2 2016 1 nil 3600)))
+ (should (equal (parse-time-string "Mon, 22 feb 2016 19:35:42 +0100")
+ '(42 35 19 22 2 2016 1 nil 3600)))
+ (should (equal (parse-time-string "Monday, 22 february 2016 19:35:42 +0100")
+ '(42 35 19 22 2 2016 1 nil 3600)))
+ (should (equal (parse-time-string "Monday, 22 february 2016 19:35:42 PDT")
+ '(42 35 19 22 2 2016 1 t -25200))))
+
+(provide 'parse-time-tests)
+
+;;; parse-time-tests.el ends here
diff --git a/test/automated/char-fold-tests.el b/test/lisp/char-fold-tests.el
index 485254aa6c..485254aa6c 100644
--- a/test/automated/char-fold-tests.el
+++ b/test/lisp/char-fold-tests.el
diff --git a/test/automated/comint-testsuite.el b/test/lisp/comint-tests.el
index 576be23840..576be23840 100644
--- a/test/automated/comint-testsuite.el
+++ b/test/lisp/comint-tests.el
diff --git a/test/automated/dabbrev-tests.el b/test/lisp/dabbrev-tests.el
index 9c7a838553..9c7a838553 100644
--- a/test/automated/dabbrev-tests.el
+++ b/test/lisp/dabbrev-tests.el
diff --git a/test/automated/descr-text-test.el b/test/lisp/descr-text-tests.el
index 9e851c3a11..9e851c3a11 100644
--- a/test/automated/descr-text-test.el
+++ b/test/lisp/descr-text-tests.el
diff --git a/test/lisp/dired-tests.el b/test/lisp/dired-tests.el
new file mode 100644
index 0000000000..6dd4bb91bc
--- /dev/null
+++ b/test/lisp/dired-tests.el
@@ -0,0 +1,56 @@
+;;; dired-tests.el --- Test suite. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+(require 'ert)
+(require 'dired)
+
+
+(ert-deftest dired-autoload ()
+ "Tests to see whether dired-x has been autoloaded"
+ (should
+ (fboundp 'dired-jump))
+ (should
+ (autoloadp
+ (symbol-function
+ 'dired-jump))))
+
+(ert-deftest dired-test-bug22694 ()
+ "Test for http://debbugs.gnu.org/22694 ."
+ (let* ((dir (expand-file-name "bug22694" default-directory))
+ (file "test")
+ (full-name (expand-file-name file dir))
+ (regexp "bar")
+ (dired-always-read-filesystem t))
+ (if (file-exists-p dir)
+ (delete-directory dir 'recursive))
+ (make-directory dir)
+ (with-temp-file full-name (insert "foo"))
+ (find-file-noselect full-name)
+ (dired dir)
+ (with-temp-file full-name (insert "bar"))
+ (dired-mark-files-containing-regexp regexp)
+ (unwind-protect
+ (should (equal (dired-get-marked-files nil nil nil 'distinguish-1-mark)
+ `(t ,full-name)))
+ ;; Clean up
+ (delete-directory dir 'recursive))))
+
+(provide 'dired-tests)
+;; dired-tests.el ends here
diff --git a/test/automated/electric-tests.el b/test/lisp/electric-tests.el
index afd707667b..afd707667b 100644
--- a/test/automated/electric-tests.el
+++ b/test/lisp/electric-tests.el
diff --git a/test/automated/cl-generic-tests.el b/test/lisp/emacs-lisp/cl-generic-tests.el
index dee10fe285..dee10fe285 100644
--- a/test/automated/cl-generic-tests.el
+++ b/test/lisp/emacs-lisp/cl-generic-tests.el
diff --git a/test/automated/cl-lib-tests.el b/test/lisp/emacs-lisp/cl-lib-tests.el
index cbaf70fc4b..cbaf70fc4b 100644
--- a/test/automated/cl-lib-tests.el
+++ b/test/lisp/emacs-lisp/cl-lib-tests.el
diff --git a/test/lisp/emacs-lisp/cl-seq-tests.el b/test/lisp/emacs-lisp/cl-seq-tests.el
new file mode 100644
index 0000000000..cc393f4058
--- /dev/null
+++ b/test/lisp/emacs-lisp/cl-seq-tests.el
@@ -0,0 +1,308 @@
+;;; cl-seq-tests.el --- Tests for cl-seq.el functionality -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
+
+;; Author: Nicolas Richard <youngfrog@members.fsf.org>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'ert)
+(require 'cl-seq)
+
+(ert-deftest cl-union-test-00 ()
+ "Test for http://debbugs.gnu.org/22729 ."
+ (let ((str1 "foo")
+ (str2 (make-string 3 ?o)))
+ ;; Emacs may make two string literals eql when reading.
+ (aset str2 0 ?f)
+ (should (not (eql str1 str2)))
+ (should (equal str1 str2))
+ (should (equal (cl-union (list str1) (list str2))
+ (list str2)))
+ (should (equal (cl-union (list str1) (list str2) :test 'eql)
+ (list str1 str2)))))
+
+(defvar cl-seq--test-list nil
+ "List used on `cl-seq' tests with side effects.")
+(defvar cl-seq--test-list2 nil
+ "List used on `cl-seq' tests with side effects.")
+
+(defmacro cl-seq--with-side-effects (list list2 &rest body)
+ "Run a test with side effects on lists; after the test restore the lists.
+LIST is the value of `cl-seq--test-list' before the test.
+LIST2, if non-nil, is the value of `cl-seq--test-list2' before the test.
+Body are forms defining the test."
+ (declare (indent 2) (debug t))
+ (let ((orig (make-symbol "orig"))
+ (orig2 (make-symbol "orig2")))
+ `(let ((,orig (copy-sequence ,list))
+ (,orig2 (copy-sequence ,list2)))
+ (unwind-protect (progn ,@body)
+ (setq cl-seq--test-list ,orig)
+ (when ,list2
+ (setq cl-seq--test-list2 ,orig2))))))
+
+;; keywords supported: :start :end
+(ert-deftest cl-seq-fill-test ()
+ (let* ((cl-seq--test-list '(1 2 3 4 5 2 6))
+ (orig (copy-sequence cl-seq--test-list))
+ (tests '((should (equal '(b b b b b b b) (cl-fill _list 'b)))
+ (should (equal '(1 2 3 4 b b b) (cl-fill _list 'b :start 4)))
+ (should (equal '(b b b b 5 2 6) (cl-fill _list 'b :end 4)))
+ (should (equal '(1 2 b b 5 2 6) (cl-fill _list 'b :start 2 :end 4)))
+ (should (equal orig (cl-fill _list 'b :end 0))))))
+ (dolist (test tests)
+ (let ((_list cl-seq--test-list))
+ (cl-seq--with-side-effects orig nil
+ test)))))
+
+;; keywords supported: :start1 :end1 :start2 :end2
+(ert-deftest cl-seq-replace-test ()
+ (let* ((cl-seq--test-list '(1 2 3 4 5 2 6))
+ (cl-seq--test-list2 (make-list 6 'a))
+ (orig (copy-sequence cl-seq--test-list))
+ (orig2 (copy-sequence cl-seq--test-list2))
+ (tests '((should (equal '(a a a a a a 6) (cl-replace _list _list2)))
+ (should (equal '(a a a a a a 6) (cl-replace _list _list2 :start1 0)))
+ (should (equal '(a a a a a a 6) (cl-replace _list _list2 :start2 0)))
+ (should (equal orig (cl-replace _list _list2 :start1 (length _list))))
+ (should (equal orig (cl-replace _list _list2 :start2 (length _list2))))
+ (should (equal orig (cl-replace _list _list2 :end1 0)))
+ (should (equal orig (cl-replace _list _list2 :end2 0)))
+ (should (equal '(1 2 3 4 a a a) (cl-replace _list _list2 :start1 4)))
+ (should (equal '(a a a a 5 2 6) (cl-replace _list _list2 :end1 4)))
+ (should (equal '(a a 3 4 5 2 6) (cl-replace _list _list2 :start2 4)))
+ (should (equal '(a a a a 5 2 6) (cl-replace _list _list2 :end2 4)))
+ (should (equal '(1 2 a a 5 2 6) (cl-replace _list _list2 :start1 2 :end1 4)))
+ (should (equal '(a a 3 4 5 2 6) (cl-replace _list _list2 :start2 2 :end2 4))))))
+ (dolist (test tests)
+ (let ((_list cl-seq--test-list)
+ (_list2 cl-seq--test-list2))
+ (cl-seq--with-side-effects orig orig2
+ test)))))
+
+;; keywords supported: :test :test-not :key :count :start :end :from-end
+(ert-deftest cl-seq-remove-test ()
+ (let ((list '(1 2 3 4 5 2 6)))
+ (should (equal list (cl-remove 'foo list)))
+ (should (equal '(1 3 4 5 6) (cl-remove 2 list)))
+ (should (equal '(1 3 4 5 6) (cl-remove 2 list
+ :key #'identity
+ :test (lambda (a b) (eql a b)))))
+ (should (equal '(1 2 3 4 2) (cl-remove 4 list :test (lambda (a b) (> b a)))))
+ (should (equal '(5 6) (cl-remove 4 list :test-not (lambda (a b) (> b a)))))
+ (should (equal '(1 3 5) (cl-remove 'foo list :if #'cl-evenp)))
+ (should (equal '(2 4 2 6) (cl-remove 'foo list :if-not #'cl-evenp)))
+ (should (equal '(1 2 3 4 5) (cl-remove 'foo list :if #'cl-evenp :start 4)))
+ (should (equal '(1 2 3 4 5 6) (cl-remove 2 list :start 5 :end 6)))
+ (should (equal '(1 3 4 5 2 6) (cl-remove 2 list :count 1)))
+ (should (equal '(1 3 4 5 2 6) (cl-remove 2 list :from-end nil :count 1)))
+ (should (equal '(1 2 3 4 5 6) (cl-remove 2 list :from-end t :count 1)))))
+
+;; keywords supported: :test :test-not :key :count :start :end :from-end
+(ert-deftest cl-seq-delete-test ()
+ (let* ((cl-seq--test-list '(1 2 3 4 5 2 6))
+ (orig (copy-sequence cl-seq--test-list))
+ (tests '((should (equal orig (cl-delete 'foo _list)))
+ (should (equal '(1 3 4 5 6) (cl-delete 2 _list)))
+ (should (equal '(1 3 4 5 6) (cl-delete 2 _list
+ :key #'identity
+ :test (lambda (a b) (eql a b)))))
+ (should (equal '(1 2 3 4 2) (cl-delete 4 _list :test (lambda (a b) (> b a)))))
+ (should (equal '(5 6) (cl-delete 4 _list :test-not (lambda (a b) (> b a)))))
+ (should (equal '(1 3 5) (cl-delete 'foo _list :if #'cl-evenp)))
+ (should (equal '(2 4 2 6) (cl-delete 'foo _list :if-not #'cl-evenp)))
+ (should (equal '(1 2 3 4 5) (cl-delete 'foo _list :if #'cl-evenp :start 4)))
+ (should (equal '(1 2 3 4 5 6) (cl-delete 2 _list :start 5 :end 6)))
+ (should (equal '(1 3 4 5 2 6) (cl-delete 2 _list :count 1)))
+ (should (equal '(1 3 4 5 2 6) (cl-delete 2 _list :from-end nil :count 1)))
+ (should (equal '(1 2 3 4 5 6) (cl-delete 2 _list :from-end t :count 1))))))
+ (dolist (test tests)
+ (let ((_list cl-seq--test-list))
+ (cl-seq--with-side-effects orig nil
+ test)))))
+
+;; keywords supported: :test :test-not :key :start :end :from-end
+(ert-deftest cl-seq-remove-duplicates-test ()
+ (let ((list '(1 2 3 4 5 2 6)))
+ (should (equal '(1 3 4 5 2 6) (cl-remove-duplicates list)))
+ (should (equal '(1 2 3 4 5 6) (cl-remove-duplicates list :from-end t)))
+ (should (equal list (cl-remove-duplicates list :start 2)))
+ (should (equal list (cl-remove-duplicates list :start 2 :from-end t)))
+ (should (equal list (cl-remove-duplicates list :end 4)))
+ (should (equal '(6) (cl-remove-duplicates list :test (lambda (a b) (< a b)))))
+ (should (equal '(1 2 6) (cl-remove-duplicates list :test (lambda (a b) (>= a b)))))
+ (should (equal (cl-remove-duplicates list :test (lambda (a b) (>= a b)))
+ (cl-remove-duplicates list :test-not (lambda (a b) (< a b)))))
+ (should (equal (cl-remove-duplicates list)
+ (cl-remove-duplicates list :key #'number-to-string :test #'string=)))
+ (should (equal list
+ (cl-remove-duplicates list :key #'number-to-string :test #'eq)))))
+
+;; keywords supported: :test :test-not :key :count :start :end :from-end
+(ert-deftest cl-seq-substitute-test ()
+ (let ((list '(1 2 3 4 5 2 6)))
+ (should (equal '(1 b 3 4 5 b 6) (cl-substitute 'b 2 list)))
+ (should (equal list (cl-substitute 'b 2 list :start (length list))))
+ (should (equal list (cl-substitute 'b 2 list :end 0)))
+ (should (equal '(1 2 3 4 5 b 6) (cl-substitute 'b 2 list :start 2)))
+ (should (equal '(1 b 3 4 5 2 6) (cl-substitute 'b 2 list :end 2)))
+ (should (equal list (cl-substitute 'b 2 list :start 2 :end 4)))
+ (should (equal '(1 b 3 4 5 2 6) (cl-substitute 'b 2 list :count 1)))
+ (should (equal '(1 2 3 4 5 b 6) (cl-substitute 'b 2 list :count 1 :from-end t)))
+ (should (equal list (cl-substitute 'b 2 list :count -1)))
+ (should (equal '(1 b 3 4 5 b 6) (cl-substitute 'b "2" list :key #'number-to-string
+ :test #'string=)))
+ (should (equal (cl-substitute 'b 2 list)
+ (cl-substitute 'b 2 list :test #'eq)))
+ (should (equal '(1 2 b b b 2 b) (cl-substitute 'b 2 list :test (lambda (a b) (< a b)))))
+ (should (equal '(b b 3 4 5 b 6) (cl-substitute 'b 2 list :test (lambda (a b) (>= a b)))))
+ (should (equal list (cl-substitute 'b 99 list :test (lambda (a b) (< a b)))))
+ (should (equal (cl-substitute 'b 2 list :test (lambda (a b) (>= a b)))
+ (cl-substitute 'b 2 list :test-not (lambda (a b) (< a b)))))
+ (should (equal '(1 2 b b b 2 b) (cl-substitute 'b nil list :if (lambda (x) (> (cl-position x list) 1)))))
+ (should (equal '(1 b b b b b b) (cl-substitute 'b nil list :if (lambda (x) (> (cl-position x list :from-end t) 1)))))
+
+ (should (equal '(b b 3 4 5 b 6) (cl-substitute 'b nil list
+ :if-not (lambda (x) (> (cl-position x list) 1)))))
+ (should (equal '(b 2 3 4 5 2 6) (cl-substitute 'b nil list
+ :if-not (lambda (x) (> (cl-position x list :from-end t) 1)))))))
+
+
+;; keywords supported: :test :test-not :key :count :start :end :from-end
+(ert-deftest cl-seq-nsubstitute-test ()
+ (let ((cl-seq--test-list '(1 2 3 4 5 2 6))
+ (orig (copy-sequence cl-seq--test-list))
+ (tests '((should (equal '(1 b 3 4 5 b 6) (cl-nsubstitute 'b 2 _list)))
+ (should (equal _list (cl-substitute 'b 2 _list :start (length _list))))
+ (should (equal _list (cl-substitute 'b 2 _list :end 0)))
+ (should (equal '(1 2 3 4 5 b 6) (cl-substitute 'b 2 _list :start 2)))
+ (should (equal '(1 b 3 4 5 2 6) (cl-substitute 'b 2 _list :end 2)))
+ (should (equal _list (cl-substitute 'b 2 _list :start 2 :end 4)))
+ (should (equal '(1 b 3 4 5 2 6) (cl-nsubstitute 'b 2 _list :count 1)))
+ (should (equal '(1 2 3 4 5 b 6) (cl-nsubstitute 'b 2 _list :count 1 :from-end t)))
+ (should (equal _list (cl-nsubstitute 'b 2 _list :count -1)))
+ (should (equal '(1 b 3 4 5 b 6) (cl-nsubstitute 'b "2" _list :key #'number-to-string
+ :test #'string=)))
+ (should (equal (cl-nsubstitute 'b 2 _list)
+ (cl-nsubstitute 'b 2 _list :test #'eq)))
+ (should (equal '(1 2 b b b 2 b) (cl-nsubstitute 'b 2 _list :test (lambda (a b) (< a b)))))
+ (should (equal '(b b 3 4 5 b 6) (cl-nsubstitute 'b 2 _list :test (lambda (a b) (>= a b)))))
+ (should (equal _list (cl-nsubstitute 'b 99 _list :test (lambda (a b) (< a b)))))
+ (should (equal (cl-nsubstitute 'b 2 _list :test (lambda (a b) (>= a b)))
+ (cl-nsubstitute 'b 2 _list :test-not (lambda (a b) (< a b)))))
+ (should (equal '(1 2 b b b 2 b)
+ (cl-nsubstitute 'b nil _list :if (lambda (x) (> (cl-position x _list) 1)))))
+ (should (equal '(1 b b b b b b)
+ (cl-nsubstitute 'b nil _list :if (lambda (x) (> (cl-position x _list :from-end t) 1)))))
+ (should (equal '(b b 3 4 5 b 6)
+ (cl-nsubstitute 'b nil _list
+ :if-not (lambda (x) (> (cl-position x _list) 1)))))
+ (should (equal '(b 2 3 4 5 2 6)
+ (cl-nsubstitute 'b nil _list
+ :if-not (lambda (x) (> (cl-position x _list :from-end t) 1))))))))
+ (dolist (test tests)
+ (let ((_list cl-seq--test-list))
+ (cl-seq--with-side-effects orig nil
+ test)))))
+
+;; keywords supported: :test :test-not :key :start :end :from-end
+(ert-deftest cl-seq-position-test ()
+ (let ((list '(1 2 3 4 5 2 6)))
+ (should-not (cl-position 'foo list))
+ (should (= 1 (cl-position 2 list)))
+ (should (= 5 (cl-position 2 list :start 5 :end 6)))
+ (should (= 1 (cl-position 2 list :from-end nil)))
+ (should (= 5 (cl-position 2 list :from-end t)))
+ (should (cl-position 2 list :key #'identity
+ :test (lambda (a b) (eql a b))))
+ (should (= 1 (cl-position "2" list :key #'number-to-string :test #'string=)))
+ (should (= 5 (cl-position "2" list :key #'number-to-string :test #'string= :from-end t)))
+ (should-not (cl-position "2" list :key #'number-to-string))
+ (should (cl-position 5 list :key (lambda (x) (1+ (* 1.0 x x))) :test #'=))
+ (should-not (cl-position 5 list :key (lambda (x) (1+ (* 1.0 x x)))))
+ (should (= 1 (cl-position 5 list :key (lambda (x) (1+ (* x x))))))
+ (should (= 5 (cl-position 5 list :key (lambda (x) (1+ (* x x))) :from-end t)))))
+
+;; keywords supported: :test :test-not :key :start :end
+(ert-deftest cl-seq-count-test ()
+ (let ((list '(1 2 3 4 5 2 6)))
+ (should (= 2 (cl-count 2 list)))
+ (should (= 1 (cl-count 2 list :start 2)))
+ (should (= 1 (cl-count 2 list :end 4)))
+ (should (= 0 (cl-count -5 list)))
+ (should (= 0 (cl-count 2 list :start 2 :end 4)))
+ (should (= 4 (cl-count 'foo list :key (lambda (x) (and (cl-evenp x) 'foo)))))
+ (should (= 4 (cl-count 'foo list :test (lambda (a b) (cl-evenp b)))))
+ (should (equal (cl-count 'foo list :test (lambda (a b) (cl-oddp b)))
+ (cl-count 'foo list :test-not (lambda (a b) (cl-evenp b)))))))
+
+;; keywords supported: :test :test-not :key :start1 :end1 :start2 :end2 :from-end
+(ert-deftest cl-seq-mismatch-test ()
+ (let ((list '(1 2 3 4 5 2 6))
+ (list2 '(1 999 2 3 4 5 2 6)))
+ (should-not (cl-mismatch list list))
+ (should-not (cl-mismatch list (remove 999 list2)))
+ (should (= 0 (cl-mismatch list list :key #'number-to-string)))
+ (should-not (cl-mismatch list list :key #'number-to-string :test #'string=))
+ (should (= 1 (cl-mismatch list list2)))
+ (should (= 0 (cl-mismatch list list2 :from-end t)))
+ (should (= 3 (cl-mismatch '(1 2 3) list)))
+ (should-not (cl-mismatch list list2 :end1 1 :end2 1))
+ (should-not (cl-mismatch list list2 :start1 1 :start2 2))
+ (should (= 1 (cl-mismatch list list2 :start1 1 :end1 2 :start2 4 :end2 4)))
+ (should (= -1 (cl-mismatch list list2 :key #'number-to-string
+ :test (lambda (a b)
+ (and (stringp a) (stringp b))) :from-end t)))
+ (should (= 7 (cl-mismatch list list2 :key #'number-to-string
+ :test (lambda (a b)
+ (and (stringp a) (stringp b))))))))
+
+;; keywords supported: :test :test-not :key :start1 :end1 :start2 :end2 :from-end
+(ert-deftest cl-seq-search-test ()
+ (let ((list '(1 2 3 4 5 2 6))
+ (list2 '(1 999 2 3 4 5 2 6)))
+ (should-not (cl-search list list2))
+ (should (= 2 (cl-search list list2 :start1 1 :start2 2)))
+ (should (= 4 (cl-search list list2 :start1 3)))
+ (should (= 6 (cl-search list list2 :start1 5)))
+ (should (= 0 (cl-search list list2 :end1 1)))
+ (should (= 0 (cl-search nil list2)))
+ (should (= 2 (cl-search list list2 :start1 1 :end1 2 :end2 3)))
+ (should (= 0 (cl-search list list2 :test (lambda (a b) (and (numberp a) (numberp b))))))
+ (should (= 0 (cl-search list list2 :key (lambda (x) (and (numberp x) 'foo))
+ :test (lambda (a b) (and (eq a 'foo) (eq b 'foo))))))
+ (should (= 1 (cl-search (nthcdr 2 list) (nthcdr 2 list2))))
+ (should (= 3 (cl-search (nthcdr 2 list) list2)))))
+
+(ert-deftest cl-seq-test-bug24264 ()
+ "Test for http://debbugs.gnu.org/24264 ."
+ :expected-result :failed
+ (let ((list (append (make-list 8000005 1) '(8)))
+ (list2 (make-list 8000005 2)))
+ (should (cl-position 8 list))
+ (should-not (equal '(8) (last (cl-remove 8 list))))
+ (should (equal '(2 8) (last (cl-substitute 2 1 list) 2)))
+ (should (equal '(2 8) (last (cl-replace list list2) 2)))
+ (should (equal '(1 1) (last (cl-fill list 1) 2)))))
+
+
+(provide 'cl-seq-tests)
+;;; cl-seq-tests.el ends here
diff --git a/test/automated/eieio-test-methodinvoke.el b/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el
index eb26047da2..eb26047da2 100644
--- a/test/automated/eieio-test-methodinvoke.el
+++ b/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el
diff --git a/test/automated/eieio-test-persist.el b/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el
index 2f8d65e512..2f8d65e512 100644
--- a/test/automated/eieio-test-persist.el
+++ b/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el
diff --git a/test/automated/eieio-tests.el b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el
index bdf66c946f..9665beb490 100644
--- a/test/automated/eieio-tests.el
+++ b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el
@@ -895,6 +895,12 @@ Subclasses to override slot attributes.")
(ert-deftest eieio-test-37-obsolete-name-in-constructor ()
(should (equal (eieio--testing "toto") '("toto" 2))))
+(ert-deftest eieio-autoload ()
+ "Tests to see whether reftex-auc has been autoloaded"
+ (should
+ (fboundp 'eieio--defalias)))
+
+
(provide 'eieio-tests)
;;; eieio-tests.el ends here
diff --git a/test/automated/ert-tests.el b/test/lisp/emacs-lisp/ert-tests.el
index 5d3675553d..5d3675553d 100644
--- a/test/automated/ert-tests.el
+++ b/test/lisp/emacs-lisp/ert-tests.el
diff --git a/test/automated/ert-x-tests.el b/test/lisp/emacs-lisp/ert-x-tests.el
index ef8642aebf..ef8642aebf 100644
--- a/test/automated/ert-x-tests.el
+++ b/test/lisp/emacs-lisp/ert-x-tests.el
diff --git a/test/automated/generator-tests.el b/test/lisp/emacs-lisp/generator-tests.el
index 8ed0f2a240..8ed0f2a240 100644
--- a/test/automated/generator-tests.el
+++ b/test/lisp/emacs-lisp/generator-tests.el
diff --git a/test/automated/let-alist.el b/test/lisp/emacs-lisp/let-alist-tests.el
index 80d418cabb..80d418cabb 100644
--- a/test/automated/let-alist.el
+++ b/test/lisp/emacs-lisp/let-alist-tests.el
diff --git a/test/lisp/emacs-lisp/lisp-tests.el b/test/lisp/emacs-lisp/lisp-tests.el
new file mode 100644
index 0000000000..4fe20f06e9
--- /dev/null
+++ b/test/lisp/emacs-lisp/lisp-tests.el
@@ -0,0 +1,211 @@
+;;; lisp-tests.el --- Test Lisp editing commands -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2013-2016 Free Software Foundation, Inc.
+
+;; Author: Aaron S. Hawley <aaron.s.hawley@gmail.com>
+;; Keywords: internal
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Testing of `forward-sexp' and related functions.
+
+;;; Code:
+
+(require 'ert)
+(require 'python)
+
+(ert-deftest lisp-forward-sexp-1-empty-parens ()
+ "Test basics of \\[forward-sexp]."
+ (with-temp-buffer
+ (insert "()")
+ (goto-char (point-min))
+ (should (null
+ (forward-sexp 1)))))
+
+(ert-deftest lisp-forward-sexp-1-error-mismatch ()
+ "Test basics of \\[forward-sexp]."
+ (with-temp-buffer
+ (insert "(")
+ (goto-char (point-min))
+ (should-error
+ (forward-sexp 1))))
+
+(ert-deftest lisp-backward-sexp-1-empty-parens ()
+ "Test basics of \\[backward-sexp]."
+ (with-temp-buffer
+ (insert "()")
+ (should (null
+ (forward-sexp -1)))))
+
+(ert-deftest lisp-backward-sexp-1-error-mismatch ()
+ "Test mismatched parens with \\[backward-sexp]."
+ (with-temp-buffer
+ (insert "(")
+ (should-error
+ (forward-sexp -1))))
+
+(ert-deftest lisp-forward-sexp-1-eobp ()
+ "Test \\[forward-sexp] at `eobp'."
+ (with-temp-buffer
+ (insert "()")
+ (should (null ;; (should-error ;; No, per #13994
+ (forward-sexp 1)))))
+
+(ert-deftest lisp-backward-sexp-1-eobp ()
+ "Test \\[backward-sexp] at `bobp'."
+ (with-temp-buffer
+ (insert "()")
+ (goto-char (point-min))
+ (should (null ;; (should-error ;; No, per #13994
+ (forward-sexp -1)))))
+
+(ert-deftest lisp-forward-sexp-2-eobp ()
+ "Test \\[forward-sexp] beyond `eobp'."
+ (with-temp-buffer
+ (insert "()")
+ (goto-char (point-min))
+ (should (null ;; (should-error ;; No, per #13994
+ (forward-sexp 2)))
+ (should (eobp))))
+
+(ert-deftest lisp-backward-sexp-2-bobp ()
+ "Test \\[backward-sexp] beyond `bobp'."
+ (with-temp-buffer
+ (insert "()")
+ (should (null ;; (should-error ;; No, per #13994
+ (forward-sexp -2)))
+ (should (bobp))))
+
+(ert-deftest lisp-forward-sexp-2-eobp-and-subsequent ()
+ "Test \\[forward-sexp] beyond `eobp' and again."
+ (with-temp-buffer
+ (insert "()")
+ (goto-char (point-min))
+ (should (null ;; (should-error ;; No, per #13994
+ (forward-sexp 2)))
+ (should (eobp))
+ (should (null ;; (should-error ;; No, per #13994
+ (forward-sexp 1)))))
+
+(ert-deftest lisp-backward-sexp-2-bobp-and-subsequent ()
+ "Test \\[backward-sexp] ahead of `bobp' and again."
+ (with-temp-buffer
+ (insert "()")
+ (should (null ;; (should-error ;; No, per #13994
+ (forward-sexp -2)))
+ (should (bobp))
+ (should (null ;; (should-error ;; No, per #13994
+ (forward-sexp -1)))))
+
+(ert-deftest lisp-delete-pair-parens ()
+ "Test \\[delete-pair] with parens."
+ (with-temp-buffer
+ (insert "(foo)")
+ (goto-char (point-min))
+ (delete-pair)
+ (should (string-equal "foo" (buffer-string)))))
+
+(ert-deftest lisp-delete-pair-quotation-marks ()
+ "Test \\[delete-pair] with quotation marks."
+ (with-temp-buffer
+ (insert "\"foo\"")
+ (goto-char (point-min))
+ (delete-pair)
+ (should (string-equal "foo" (buffer-string)))))
+
+(ert-deftest lisp-delete-pair-quotes-in-text-mode ()
+ "Test \\[delete-pair] against string in Text Mode for #15014."
+ (with-temp-buffer
+ (text-mode)
+ (insert "\"foo\"")
+ (goto-char (point-min))
+ (delete-pair)
+ (should (string-equal "fo\"" (buffer-string)))))
+
+(ert-deftest lisp-delete-pair-quotes-text-mode-syntax-table ()
+ "Test \\[delete-pair] with modified Text Mode syntax for #15014."
+ (with-temp-buffer
+ (text-mode)
+ (let ((st (copy-syntax-table text-mode-syntax-table)))
+ (with-syntax-table st
+ ;; (modify-syntax-entry ?\" "." text-mode-syntax-table)
+ (modify-syntax-entry ?\" "$" st)
+ (insert "\"foo\"")
+ (goto-char (point-min))
+ (delete-pair)
+ (should (string-equal "foo" (buffer-string)))))))
+
+(ert-deftest lisp-forward-sexp-elisp-inside-symbol ()
+ "Test \\[forward-sexp] on symbol in Emacs Lisp Mode for #20492."
+ (with-temp-buffer
+ (emacs-lisp-mode)
+ (insert "hide-ifdef-env ")
+ (insert (concat (number-sequence 32 126)))
+ (goto-char (point-min))
+ (re-search-forward "hide" nil t) ;; (forward-char 4)
+ (should (looking-at "-"))
+ (forward-sexp)
+ (should (looking-at " "))))
+
+(ert-deftest lisp-forward-sexp-elisp-quoted-symbol ()
+ "Test \\[forward-sexp] on symbol in Emacs Lisp Mode for #20492."
+ (with-temp-buffer
+ (emacs-lisp-mode)
+ (insert "`hide-ifdef-env'.")
+ (goto-char (point-min))
+ (re-search-forward "hide" nil t) ;; (forward-char 5)
+ (should (= ?- (char-after)))
+ (forward-sexp)
+ (should (= ?. (char-before)))))
+
+(ert-deftest lisp-forward-sexp-python-triple-quoted-string ()
+ "Test \\[forward-sexp] on Python doc strings for #11321."
+ (with-temp-buffer
+ (insert "\"\"\"Triple-quoted string\"\"\"")
+ (goto-char (point-min))
+ (let ((python-indent-guess-indent-offset nil))
+ (python-mode))
+ (forward-sexp)
+ (should (eobp))))
+
+(ert-deftest lisp-forward-sexp-python-triple-quotes-string ()
+ "Test \\[forward-sexp] on Python doc strings for #11321."
+ (with-temp-buffer
+ (insert "'''Triple-quoted string'''")
+ (goto-char (point-min))
+ (let ((python-indent-guess-indent-offset nil))
+ (python-mode))
+ (forward-sexp)
+ (should (eobp))))
+
+(ert-deftest lisp-forward-sexp-emacs-lisp-semi-char-error ()
+ "Test \\[forward-sexp] on expression with unquoted semicolon per #4030."
+ (with-temp-buffer
+ (emacs-lisp-mode)
+ (insert "(insert ?;)")
+ (goto-char (point-min))
+ (should-error (forward-sexp)))) ;; FIXME: Shouldn't be an error.
+
+(ert-deftest lisp-forward-sexp-emacs-lisp-quote-char ()
+ "Test \\[forward-sexp] on expression with unquoted quote per #4030."
+ (with-temp-buffer
+ (emacs-lisp-mode)
+ (insert "(insert ?\")")
+ (goto-char (point-min))
+ (should-error (forward-sexp)))) ;; FIXME: Shouldn't be an error.
+
+(provide 'lisp-tests)
+;;; lisp-tests.el ends here
diff --git a/test/automated/map-tests.el b/test/lisp/emacs-lisp/map-tests.el
index 20cb0f6b39..0af1c656e0 100644
--- a/test/automated/map-tests.el
+++ b/test/lisp/emacs-lisp/map-tests.el
@@ -192,6 +192,14 @@ Evaluate BODY for each created map.
(2 . b)
(3 . c))))))
+(ert-deftest test-map-do ()
+ (with-maps-do map
+ (let ((result nil))
+ (map-do (lambda (k v)
+ (add-to-list 'result (list (int-to-string k) v)))
+ map)
+ (should (equal result '(("2" 5) ("1" 4) ("0" 3)))))))
+
(ert-deftest test-map-keys-apply ()
(with-maps-do map
(should (equal (map-keys-apply (lambda (k) (int-to-string k))
diff --git a/test/automated/advice-tests.el b/test/lisp/emacs-lisp/nadvice-tests.el
index cd51599b86..cd51599b86 100644
--- a/test/automated/advice-tests.el
+++ b/test/lisp/emacs-lisp/nadvice-tests.el
diff --git a/test/automated/data/package/archive-contents b/test/lisp/emacs-lisp/package-resources/archive-contents
index e2f92304f8..e2f92304f8 100644
--- a/test/automated/data/package/archive-contents
+++ b/test/lisp/emacs-lisp/package-resources/archive-contents
diff --git a/test/automated/data/package/key.pub b/test/lisp/emacs-lisp/package-resources/key.pub
index a326d34e54..a326d34e54 100644
--- a/test/automated/data/package/key.pub
+++ b/test/lisp/emacs-lisp/package-resources/key.pub
diff --git a/test/automated/data/package/key.sec b/test/lisp/emacs-lisp/package-resources/key.sec
index d21e6ae9a4..d21e6ae9a4 100644
--- a/test/automated/data/package/key.sec
+++ b/test/lisp/emacs-lisp/package-resources/key.sec
diff --git a/test/automated/data/package/macro-problem-package-1.0/macro-aux.el b/test/lisp/emacs-lisp/package-resources/macro-problem-package-1.0/macro-aux.el
index f43232224a..f43232224a 100644
--- a/test/automated/data/package/macro-problem-package-1.0/macro-aux.el
+++ b/test/lisp/emacs-lisp/package-resources/macro-problem-package-1.0/macro-aux.el
diff --git a/test/automated/data/package/macro-problem-package-1.0/macro-problem.el b/test/lisp/emacs-lisp/package-resources/macro-problem-package-1.0/macro-problem.el
index 0533b1bd9c..0533b1bd9c 100644
--- a/test/automated/data/package/macro-problem-package-1.0/macro-problem.el
+++ b/test/lisp/emacs-lisp/package-resources/macro-problem-package-1.0/macro-problem.el
diff --git a/test/automated/data/package/macro-problem-package-2.0/macro-aux.el b/test/lisp/emacs-lisp/package-resources/macro-problem-package-2.0/macro-aux.el
index 6a55a40e3b..6a55a40e3b 100644
--- a/test/automated/data/package/macro-problem-package-2.0/macro-aux.el
+++ b/test/lisp/emacs-lisp/package-resources/macro-problem-package-2.0/macro-aux.el
diff --git a/test/automated/data/package/macro-problem-package-2.0/macro-problem.el b/test/lisp/emacs-lisp/package-resources/macro-problem-package-2.0/macro-problem.el
index cad4ed93f1..cad4ed93f1 100644
--- a/test/automated/data/package/macro-problem-package-2.0/macro-problem.el
+++ b/test/lisp/emacs-lisp/package-resources/macro-problem-package-2.0/macro-problem.el
diff --git a/test/automated/data/package/multi-file-0.2.3.tar b/test/lisp/emacs-lisp/package-resources/multi-file-0.2.3.tar
index 2f1c5e93df..2f1c5e93df 100644
--- a/test/automated/data/package/multi-file-0.2.3.tar
+++ b/test/lisp/emacs-lisp/package-resources/multi-file-0.2.3.tar
Binary files differ
diff --git a/test/automated/data/package/multi-file-readme.txt b/test/lisp/emacs-lisp/package-resources/multi-file-readme.txt
index affd2e96fb..affd2e96fb 100644
--- a/test/automated/data/package/multi-file-readme.txt
+++ b/test/lisp/emacs-lisp/package-resources/multi-file-readme.txt
diff --git a/test/automated/data/package/newer-versions/archive-contents b/test/lisp/emacs-lisp/package-resources/newer-versions/archive-contents
index add5f2909d..add5f2909d 100644
--- a/test/automated/data/package/newer-versions/archive-contents
+++ b/test/lisp/emacs-lisp/package-resources/newer-versions/archive-contents
diff --git a/test/automated/data/package/newer-versions/new-pkg-1.0.el b/test/lisp/emacs-lisp/package-resources/newer-versions/new-pkg-1.0.el
index 7251622fa5..7251622fa5 100644
--- a/test/automated/data/package/newer-versions/new-pkg-1.0.el
+++ b/test/lisp/emacs-lisp/package-resources/newer-versions/new-pkg-1.0.el
diff --git a/test/automated/data/package/newer-versions/simple-single-1.4.el b/test/lisp/emacs-lisp/package-resources/newer-versions/simple-single-1.4.el
index 7b1c00c06d..7b1c00c06d 100644
--- a/test/automated/data/package/newer-versions/simple-single-1.4.el
+++ b/test/lisp/emacs-lisp/package-resources/newer-versions/simple-single-1.4.el
diff --git a/test/automated/data/package/package-test-server.py b/test/lisp/emacs-lisp/package-resources/package-test-server.py
index 35ca820f31..1acd9f744b 100644
--- a/test/automated/data/package/package-test-server.py
+++ b/test/lisp/emacs-lisp/package-resources/package-test-server.py
@@ -10,7 +10,7 @@ Protocol = "HTTP/1.0"
if sys.argv[1:]:
port = int(sys.argv[1])
else:
- port = 8000
+ port = 0
server_address = ('127.0.0.1', port)
HandlerClass.protocol_version = Protocol
diff --git a/test/automated/data/package/signed/archive-contents b/test/lisp/emacs-lisp/package-resources/signed/archive-contents
index 2a773ecba6..2a773ecba6 100644
--- a/test/automated/data/package/signed/archive-contents
+++ b/test/lisp/emacs-lisp/package-resources/signed/archive-contents
diff --git a/test/automated/data/package/signed/archive-contents.sig b/test/lisp/emacs-lisp/package-resources/signed/archive-contents.sig
index 658edd3f60..658edd3f60 100644
--- a/test/automated/data/package/signed/archive-contents.sig
+++ b/test/lisp/emacs-lisp/package-resources/signed/archive-contents.sig
Binary files differ
diff --git a/test/automated/data/package/signed/signed-bad-1.0.el b/test/lisp/emacs-lisp/package-resources/signed/signed-bad-1.0.el
index 3734823876..3734823876 100644
--- a/test/automated/data/package/signed/signed-bad-1.0.el
+++ b/test/lisp/emacs-lisp/package-resources/signed/signed-bad-1.0.el
diff --git a/test/automated/data/package/signed/signed-bad-1.0.el.sig b/test/lisp/emacs-lisp/package-resources/signed/signed-bad-1.0.el.sig
index 747918794c..747918794c 100644
--- a/test/automated/data/package/signed/signed-bad-1.0.el.sig
+++ b/test/lisp/emacs-lisp/package-resources/signed/signed-bad-1.0.el.sig
Binary files differ
diff --git a/test/automated/data/package/signed/signed-good-1.0.el b/test/lisp/emacs-lisp/package-resources/signed/signed-good-1.0.el
index 22718df276..22718df276 100644
--- a/test/automated/data/package/signed/signed-good-1.0.el
+++ b/test/lisp/emacs-lisp/package-resources/signed/signed-good-1.0.el
diff --git a/test/automated/data/package/signed/signed-good-1.0.el.sig b/test/lisp/emacs-lisp/package-resources/signed/signed-good-1.0.el.sig
index 747918794c..747918794c 100644
--- a/test/automated/data/package/signed/signed-good-1.0.el.sig
+++ b/test/lisp/emacs-lisp/package-resources/signed/signed-good-1.0.el.sig
Binary files differ
diff --git a/test/automated/data/package/simple-depend-1.0.el b/test/lisp/emacs-lisp/package-resources/simple-depend-1.0.el
index b58b658d02..b58b658d02 100644
--- a/test/automated/data/package/simple-depend-1.0.el
+++ b/test/lisp/emacs-lisp/package-resources/simple-depend-1.0.el
diff --git a/test/automated/data/package/simple-single-1.3.el b/test/lisp/emacs-lisp/package-resources/simple-single-1.3.el
index 6756a28080..6756a28080 100644
--- a/test/automated/data/package/simple-single-1.3.el
+++ b/test/lisp/emacs-lisp/package-resources/simple-single-1.3.el
diff --git a/test/automated/data/package/simple-single-readme.txt b/test/lisp/emacs-lisp/package-resources/simple-single-readme.txt
index 25d3034032..25d3034032 100644
--- a/test/automated/data/package/simple-single-readme.txt
+++ b/test/lisp/emacs-lisp/package-resources/simple-single-readme.txt
diff --git a/test/automated/data/package/simple-two-depend-1.1.el b/test/lisp/emacs-lisp/package-resources/simple-two-depend-1.1.el
index 9cfe5c0d4e..9cfe5c0d4e 100644
--- a/test/automated/data/package/simple-two-depend-1.1.el
+++ b/test/lisp/emacs-lisp/package-resources/simple-two-depend-1.1.el
diff --git a/test/automated/package-test.el b/test/lisp/emacs-lisp/package-tests.el
index c4c856f303..3d2801e3d7 100644
--- a/test/automated/package-test.el
+++ b/test/lisp/emacs-lisp/package-tests.el
@@ -97,7 +97,7 @@
(multi-file (0 1))))
"`package-desc' used for testing dependencies.")
-(defvar package-test-data-dir (expand-file-name "data/package" package-test-file-dir)
+(defvar package-test-data-dir (expand-file-name "package-resources" package-test-file-dir)
"Base directory of package test files.")
(defvar package-test-fake-contents-file
@@ -190,18 +190,18 @@ Must called from within a `tar-mode' buffer."
(ert-deftest package-test-desc-from-buffer ()
"Parse an elisp buffer to get a `package-desc' object."
- (with-package-test (:basedir "data/package" :file "simple-single-1.3.el")
+ (with-package-test (:basedir "package-resources" :file "simple-single-1.3.el")
(should (equal (package-buffer-info) simple-single-desc)))
- (with-package-test (:basedir "data/package" :file "simple-depend-1.0.el")
+ (with-package-test (:basedir "package-resources" :file "simple-depend-1.0.el")
(should (equal (package-buffer-info) simple-depend-desc)))
- (with-package-test (:basedir "data/package"
+ (with-package-test (:basedir "package-resources"
:file "multi-file-0.2.3.tar")
(tar-mode)
(should (equal (package-tar-file-info) multi-file-desc))))
(ert-deftest package-test-install-single ()
"Install a single file without using an archive."
- (with-package-test (:basedir "data/package" :file "simple-single-1.3.el")
+ (with-package-test (:basedir "package-resources" :file "simple-single-1.3.el")
(should (package-install-from-buffer))
(package-initialize)
(should (package-installed-p 'simple-single))
@@ -244,7 +244,7 @@ Must called from within a `tar-mode' buffer."
(ert-deftest package-test-macro-compilation ()
"Install a package which includes a dependency."
- (with-package-test (:basedir "data/package")
+ (with-package-test (:basedir "package-resources")
(package-install-file (expand-file-name "macro-problem-package-1.0/"))
(require 'macro-problem)
;; `macro-problem-func' uses a macro from `macro-aux'.
@@ -283,7 +283,7 @@ Must called from within a `tar-mode' buffer."
(ert-deftest package-test-install-prioritized ()
"Install a lower version from a higher-prioritized archive."
(with-package-test ()
- (let* ((newer-version (expand-file-name "data/package/newer-versions"
+ (let* ((newer-version (expand-file-name "package-resources/newer-versions"
package-test-file-dir))
(package-archives `(("older" . ,package-test-data-dir)
("newer" . ,newer-version)))
@@ -299,7 +299,7 @@ Must called from within a `tar-mode' buffer."
(ert-deftest package-test-install-multifile ()
"Check properties of the installed multi-file package."
- (with-package-test (:basedir "data/package" :install '(multi-file))
+ (with-package-test (:basedir "package-resources" :install '(multi-file))
(let ((autoload-file
(expand-file-name "multi-file-autoloads.el"
(expand-file-name
@@ -350,7 +350,7 @@ Must called from within a `tar-mode' buffer."
(package-menu-execute)
(should (package-installed-p 'simple-single))
(let ((package-test-data-dir
- (expand-file-name "data/package/newer-versions" package-test-file-dir)))
+ (expand-file-name "package-resources/newer-versions" package-test-file-dir)))
(setq package-archives `(("gnu" . ,package-test-data-dir)))
(package-menu-refresh)
@@ -370,18 +370,28 @@ Must called from within a `tar-mode' buffer."
(ert-deftest package-test-update-archives-async ()
"Test updating package archives asynchronously."
(skip-unless (executable-find "python2"))
- ;; For some reason this test doesn't work reliably on hydra.nixos.org.
- (skip-unless (not (getenv "NIX_STORE")))
- (with-package-test (:basedir
- package-test-data-dir
- :location "http://0.0.0.0:8000/")
- (let* ((package-menu-async t)
- (process (start-process
- "package-server" "package-server-buffer"
- (executable-find "python2")
- (expand-file-name "package-test-server.py"))))
- (unwind-protect
- (progn
+ (let* ((package-menu-async t)
+ (default-directory package-test-data-dir)
+ (process (start-process
+ "package-server" "package-server-buffer"
+ (executable-find "python2")
+ "package-test-server.py"))
+ port)
+ (unwind-protect
+ (progn
+ (with-current-buffer "package-server-buffer"
+ (should
+ (with-timeout (10 nil)
+ (while (not port)
+ (accept-process-output nil 1)
+ (goto-char (point-min))
+ (if (re-search-forward "Serving HTTP on .* port \\([0-9]+\\) "
+ nil t)
+ (setq port (match-string 1))))
+ port)))
+ (with-package-test (:basedir
+ package-test-data-dir
+ :location (format "http://0.0.0.0:%s/" port))
(list-packages)
(should package--downloads-in-progress)
(should mode-line-process)
@@ -395,8 +405,8 @@ Must called from within a `tar-mode' buffer."
(skip-unless (process-live-p process))
(goto-char (point-min))
(should
- (search-forward-regexp "^ +simple-single" nil t)))
- (if (process-live-p process) (kill-process process))))))
+ (search-forward-regexp "^ +simple-single" nil t))))
+ (if (process-live-p process) (kill-process process)))))
(ert-deftest package-test-describe-package ()
"Test displaying help for a package."
@@ -470,7 +480,7 @@ Must called from within a `tar-mode' buffer."
(delete-directory homedir t)))))
(let* ((keyring (expand-file-name "key.pub" package-test-data-dir))
(package-test-data-dir
- (expand-file-name "data/package/signed" package-test-file-dir)))
+ (expand-file-name "package-resources/signed" package-test-file-dir)))
(with-package-test ()
(package-initialize)
(package-import-keyring keyring)
@@ -529,7 +539,7 @@ Must called from within a `tar-mode' buffer."
(ert-deftest package-x-test-upload-buffer ()
"Test creating an \"archive-contents\" file"
- (with-package-test (:basedir "data/package"
+ (with-package-test (:basedir "package-resources"
:file "simple-single-1.3.el"
:upload-base t)
(package-upload-buffer)
@@ -553,7 +563,7 @@ Must called from within a `tar-mode' buffer."
(ert-deftest package-x-test-upload-new-version ()
"Test uploading a new version of a package"
- (with-package-test (:basedir "data/package"
+ (with-package-test (:basedir "package-resources"
:file "simple-single-1.3.el"
:upload-base t)
(package-upload-buffer)
@@ -620,6 +630,7 @@ Must called from within a `tar-mode' buffer."
simple-depend-desc-2)))
(should
(equal (package--sort-by-dependence delete-list)
+
(list simple-depend-desc-2 simple-depend-desc-1 new-pkg-desc
multi-file-desc simple-depend-desc simple-single-desc)))
(should
diff --git a/test/automated/pcase-tests.el b/test/lisp/emacs-lisp/pcase-tests.el
index a428e4092f..a428e4092f 100644
--- a/test/automated/pcase-tests.el
+++ b/test/lisp/emacs-lisp/pcase-tests.el
diff --git a/test/automated/regexp-tests.el b/test/lisp/emacs-lisp/regexp-opt-tests.el
index 01119a3374..01119a3374 100644
--- a/test/automated/regexp-tests.el
+++ b/test/lisp/emacs-lisp/regexp-opt-tests.el
diff --git a/test/automated/seq-tests.el b/test/lisp/emacs-lisp/seq-tests.el
index a8ca48b132..c2065c6718 100644
--- a/test/automated/seq-tests.el
+++ b/test/lisp/emacs-lisp/seq-tests.el
@@ -97,6 +97,31 @@ Evaluate BODY for each created sequence.
(with-test-sequences (seq '())
(should (seq-empty-p (seq-take-while #'test-sequences-oddp seq)))))
+(ert-deftest test-seq-map-indexed ()
+ (should (equal (seq-map-indexed (lambda (elt i)
+ (list elt i))
+ nil)
+ nil))
+ (should (equal (seq-map-indexed (lambda (elt i)
+ (list elt i))
+ '(a b c d))
+ '((a 0) (b 1) (c 2) (d 3)))))
+
+(ert-deftest test-seq-do-indexed ()
+ (let ((result nil))
+ (seq-do-indexed (lambda (elt i)
+ (add-to-list 'result (list elt i)))
+ nil)
+ (should (equal result nil)))
+ (with-test-sequences (seq '(4 5 6))
+ (let ((result nil))
+ (seq-do-indexed (lambda (elt i)
+ (add-to-list 'result (list elt i)))
+ seq)
+ (should (equal (seq-elt result 0) '(6 2)))
+ (should (equal (seq-elt result 1) '(5 1)))
+ (should (equal (seq-elt result 2) '(4 0))))))
+
(ert-deftest test-seq-filter ()
(with-test-sequences (seq '(6 7 8 9 10))
(should (equal (seq-filter #'test-sequences-evenp seq) '(6 8 10)))
@@ -156,6 +181,10 @@ Evaluate BODY for each created sequence.
(should-not (seq-contains seq 3))
(should-not (seq-contains seq nil))))
+(ert-deftest test-seq-contains-should-return-the-elt ()
+ (with-test-sequences (seq '(3 4 5 6))
+ (should (= 5 (seq-contains seq 5)))))
+
(ert-deftest test-seq-every-p ()
(with-test-sequences (seq '(43 54 22 1))
(should (seq-every-p (lambda (elt) t) seq))
@@ -337,5 +366,10 @@ Evaluate BODY for each created sequence.
(should (= (seq-position seq 'a #'eq) 0))
(should (null (seq-position seq (make-symbol "a") #'eq)))))
+(ert-deftest test-seq-sort-by ()
+ (let ((seq ["x" "xx" "xxx"]))
+ (should (equal (seq-sort-by #'seq-length #'> seq)
+ ["xxx" "xx" "x"]))))
+
(provide 'seq-tests)
;;; seq-tests.el ends here
diff --git a/test/automated/subr-x-tests.el b/test/lisp/emacs-lisp/subr-x-tests.el
index e30b5d8f54..e30b5d8f54 100644
--- a/test/automated/subr-x-tests.el
+++ b/test/lisp/emacs-lisp/subr-x-tests.el
diff --git a/test/automated/tabulated-list-test.el b/test/lisp/emacs-lisp/tabulated-list-test.el
index 0fb8dee7fd..0fb8dee7fd 100644
--- a/test/automated/tabulated-list-test.el
+++ b/test/lisp/emacs-lisp/tabulated-list-test.el
diff --git a/test/automated/thunk-tests.el b/test/lisp/emacs-lisp/thunk-tests.el
index f995d362c7..f995d362c7 100644
--- a/test/automated/thunk-tests.el
+++ b/test/lisp/emacs-lisp/thunk-tests.el
diff --git a/test/automated/timer-tests.el b/test/lisp/emacs-lisp/timer-tests.el
index e3cdec7323..e3cdec7323 100644
--- a/test/automated/timer-tests.el
+++ b/test/lisp/emacs-lisp/timer-tests.el
diff --git a/test/automated/viper-tests.el b/test/lisp/emulation/viper-tests.el
index 0d6095b2c9..2c63b24fae 100644
--- a/test/automated/viper-tests.el
+++ b/test/lisp/emulation/viper-tests.el
@@ -78,7 +78,7 @@ after itself, although it will leave a buffer called
(viper-test-undo-kmacro [])))
(ert-deftest viper-test-undo-1 ()
- "Test for VI like undo behaviour.
+ "Test for VI like undo behavior.
Insert 1, then 2 on consecutive lines, followed by undo. This
should leave just 1 in the buffer.
@@ -100,7 +100,7 @@ Test for Bug #22295"
))))
(ert-deftest viper-test-undo-2 ()
- "Test for VI like undo behaviour.
+ "Test for VI like undo behavior.
Insert \"1 2 3 4 5\" then delete the 2, then the 4, and undo.
Should restore the 4, but leave the 2 deleted.
@@ -120,7 +120,7 @@ Test for Bug #22295"
]))))
(ert-deftest viper-test-undo-3 ()
- "Test for VI like undo behaviour.
+ "Test for VI like undo behavior.
Insert \"1 2 3 4 5 6\", delete the 2, then the 3 4 and 5.
Should restore the 3 4 and 5 but not the 2.
diff --git a/test/automated/epg-tests.el b/test/lisp/epg-tests.el
index 4a317974ef..d51ab23f71 100644
--- a/test/automated/epg-tests.el
+++ b/test/lisp/epg-tests.el
@@ -30,16 +30,17 @@
(expand-file-name "data/epg" (getenv "EMACS_TEST_DIRECTORY"))
"Directory containing epg test data.")
-(defun epg-tests-gpg-usable (&optional require-passphrase)
- (and (executable-find epg-gpg-program)
- (condition-case nil
- (progn
- (epg-check-configuration (epg-configuration))
- (if require-passphrase
- (string-match "\\`1\\."
- (cdr (assq 'version (epg-configuration))))
- t))
- (error nil))))
+(defconst epg-tests-program-alist-for-passphrase-callback
+ '((OpenPGP
+ nil
+ ("gpg" . "1.4.3"))))
+
+(defun epg-tests-find-usable-gpg-configuration (&optional require-passphrase)
+ (epg-find-configuration
+ 'OpenPGP
+ 'no-cache
+ (if require-passphrase
+ epg-tests-program-alist-for-passphrase-callback)))
(defun epg-tests-passphrase-callback (_c _k _d)
;; Need to create a copy here, since the string will be wiped out
@@ -52,9 +53,14 @@
&rest body)
"Set up temporary locations and variables for testing."
(declare (indent 1))
- `(let* ((epg-tests-home-directory (make-temp-file "epg-tests-homedir" t)))
+ `(let ((epg-tests-home-directory (make-temp-file "epg-tests-homedir" t)))
(unwind-protect
(let ((context (epg-make-context 'OpenPGP)))
+ (setf (epg-context-program context)
+ (alist-get 'program
+ (epg-tests-find-usable-gpg-configuration
+ ,(if require-passphrase
+ `'require-passphrase))))
(setf (epg-context-home-directory context)
epg-tests-home-directory)
(setenv "GPG_AGENT_INFO")
@@ -78,7 +84,7 @@
(delete-directory epg-tests-home-directory t)))))
(ert-deftest epg-decrypt-1 ()
- (skip-unless (epg-tests-gpg-usable 'require-passphrase))
+ (skip-unless (epg-tests-find-usable-gpg-configuration 'require-passphrase))
(with-epg-tests (:require-passphrase t)
(should (equal "test"
(epg-decrypt-string epg-tests-context "\
@@ -90,14 +96,14 @@ jA0EAwMCE19JBLTvvmhgyRrGGglRbnKkK9PJG8fDwO5ccjysrR7IcdNcnA==
-----END PGP MESSAGE-----")))))
(ert-deftest epg-roundtrip-1 ()
- (skip-unless (epg-tests-gpg-usable 'require-passphrase))
+ (skip-unless (epg-tests-find-usable-gpg-configuration 'require-passphrase))
(with-epg-tests (:require-passphrase t)
(let ((cipher (epg-encrypt-string epg-tests-context "symmetric" nil)))
(should (equal "symmetric"
(epg-decrypt-string epg-tests-context cipher))))))
(ert-deftest epg-roundtrip-2 ()
- (skip-unless (epg-tests-gpg-usable 'require-passphrase))
+ (skip-unless (epg-tests-find-usable-gpg-configuration 'require-passphrase))
(with-epg-tests (:require-passphrase t
:require-public-key t
:require-secret-key t)
@@ -108,7 +114,7 @@ jA0EAwMCE19JBLTvvmhgyRrGGglRbnKkK9PJG8fDwO5ccjysrR7IcdNcnA==
(epg-decrypt-string epg-tests-context cipher))))))
(ert-deftest epg-sign-verify-1 ()
- (skip-unless (epg-tests-gpg-usable 'require-passphrase))
+ (skip-unless (epg-tests-find-usable-gpg-configuration 'require-passphrase))
(with-epg-tests (:require-passphrase t
:require-public-key t
:require-secret-key t)
@@ -122,7 +128,7 @@ jA0EAwMCE19JBLTvvmhgyRrGGglRbnKkK9PJG8fDwO5ccjysrR7IcdNcnA==
(should (eq 'good (epg-signature-status (car verify-result)))))))
(ert-deftest epg-sign-verify-2 ()
- (skip-unless (epg-tests-gpg-usable 'require-passphrase))
+ (skip-unless (epg-tests-find-usable-gpg-configuration 'require-passphrase))
(with-epg-tests (:require-passphrase t
:require-public-key t
:require-secret-key t)
@@ -138,7 +144,7 @@ jA0EAwMCE19JBLTvvmhgyRrGGglRbnKkK9PJG8fDwO5ccjysrR7IcdNcnA==
(should (eq 'good (epg-signature-status (car verify-result)))))))
(ert-deftest epg-sign-verify-3 ()
- (skip-unless (epg-tests-gpg-usable 'require-passphrase))
+ (skip-unless (epg-tests-find-usable-gpg-configuration 'require-passphrase))
(with-epg-tests (:require-passphrase t
:require-public-key t
:require-secret-key t)
@@ -153,7 +159,7 @@ jA0EAwMCE19JBLTvvmhgyRrGGglRbnKkK9PJG8fDwO5ccjysrR7IcdNcnA==
(should (eq 'good (epg-signature-status (car verify-result)))))))
(ert-deftest epg-import-1 ()
- (skip-unless (epg-tests-gpg-usable 'require-passphrase))
+ (skip-unless (epg-tests-find-usable-gpg-configuration 'require-passphrase))
(with-epg-tests (:require-passphrase nil)
(should (= 0 (length (epg-list-keys epg-tests-context))))
(should (= 0 (length (epg-list-keys epg-tests-context nil t)))))
diff --git a/test/lisp/erc/erc-track-tests.el b/test/lisp/erc/erc-track-tests.el
new file mode 100644
index 0000000000..7cf3ef7bb2
--- /dev/null
+++ b/test/lisp/erc/erc-track-tests.el
@@ -0,0 +1,122 @@
+;;; erc-track-tests.el --- Tests for erc-track.
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Mario Lang <mlang@delysid.org>
+;; Author: Vivek Dasmohapatra <vivek@etla.org>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'erc-track)
+(require 'font-core)
+
+(ert-deftest erc-track--shorten-aggressive-nil ()
+ "Test non-aggressive erc track buffer name shortening."
+ (let (erc-track-shorten-aggressively)
+ (should
+ (equal (erc-unique-channel-names '("#emacs" "#vi" "#electronica" "#folk")
+ '("#emacs" "#vi"))
+ '("#em" "#vi")))
+ (should
+ (equal (erc-unique-channel-names '("#linux-de" "#linux-fr")
+ '("#linux-de" "#linux-fr"))
+ '("#linux-de" "#linux-fr")))
+ (should
+ (equal (erc-unique-channel-names
+ '("#dunnet" "#lisp" "#sawfish" "#fsf" "#guile" "#testgnome"
+ "#gnu" "#fsbot" "#hurd" "#hurd-bunny" "#emacs")
+ '("#hurd-bunny" "#hurd" "#sawfish" "#lisp"))
+ '("#hurd-" "#hurd" "#s" "#l")))
+ (should
+ (equal (erc-unique-substrings '("#emacs" "#vi" "#electronica" "#folk"))
+ '("#em" "#vi" "#el" "#f")))
+ (should
+ (equal (erc-unique-channel-names
+ '("#emacs" "#burse" "+linux.de" "#starwars"
+ "#bitlbee" "+burse" "#ratpoison")
+ '("+linux.de" "#starwars" "#burse"))
+ '("+l" "#s" "#bu")))
+ (should
+ (equal (erc-unique-channel-names '("fsbot" "#emacs" "deego") '("fsbot"))
+ '("fs")))
+ (should
+ (equal (erc-unique-channel-names '("fsbot" "#emacs" "deego")
+ '("fsbot")
+ (lambda (s) (> (length s) 4)) 1)
+ '("f")))
+ (should
+ (equal (erc-unique-channel-names '("fsbot" "#emacs" "deego")
+ '("fsbot")
+ (lambda (s) (> (length s) 4)) 2)
+ '("fs")))
+ (should
+ (equal (erc-unique-channel-names '("deego" "#hurd" "#hurd-bunny" "#emacs")
+ '("#hurd" "#hurd-bunny"))
+ '("#hurd" "#hurd-")))
+ (should
+ (and
+ (equal (erc-unique-substring-1 "abc" '("ab" "abcd")) "abcd")
+ (not (erc-unique-substring-1 "a" '("xyz" "xab")))
+ (equal (erc-unique-substrings '("abc" "xyz" "xab")) '("abc" "xyz" "xab"))
+ (equal (erc-unique-substrings '("abc" "abcdefg")) '("abc" "abcd")))) ))
+
+(ert-deftest erc-track--shorten-aggressive-t ()
+ "Test aggressive erc track buffer name shortening."
+ (let ((erc-track-shorten-aggressively t))
+ (should
+ (equal (erc-unique-channel-names '("#emacs" "#vi" "#electronica" "#folk")
+ '("#emacs" "#vi"))
+ '("#em" "#v")))
+ (should
+ (equal (erc-unique-channel-names '("#linux-de" "#linux-fr")
+ '("#linux-de" "#linux-fr"))
+ '("#linux-d" "#linux-f")))
+ (should
+ (equal (erc-unique-substrings '("#emacs" "#vi" "#electronica" "#folk"))
+ '("#em" "#v" "#el" "#f")))
+ (should
+ (and
+ (equal (erc-unique-substring-1 "abc" '("ab" "abcd")) "abcd")
+ (not (erc-unique-substring-1 "a" '("xyz" "xab")))
+ (equal (erc-unique-substrings '("abc" "xyz" "xab")) '("ab" "xy" "xa"))
+ (equal (erc-unique-substrings '("abc" "abcdefg")) '("abc" "abcd")))) ))
+
+(ert-deftest erc-track--shorten-aggressive-max ()
+ "Test maximally aggressive erc track buffer name shortening."
+ (let ((erc-track-shorten-aggressively 'max))
+ (should
+ (equal (erc-unique-channel-names '("#emacs" "#vi" "#electronica" "#folk")
+ '("#emacs" "#vi"))
+ '("#e" "#v"))) ))
+
+(ert-deftest erc-track--erc-faces-in ()
+ "`erc-faces-in' should pick up both 'face and 'font-lock-face properties."
+ (let ((str0 "is bold")
+ (str1 "is bold"))
+ ;; Turn on Font Lock mode: this initialize `char-property-alias-alist'
+ ;; to '((face font-lock-face)). Note that `font-lock-mode' don't
+ ;; turn on the mode if the test is run on batch mode or if the
+ ;; buffer name starts with ?\s (Bug#23954).
+ (unless font-lock-mode (font-lock-default-function 1))
+ (put-text-property 3 (length str0) 'font-lock-face
+ '(bold erc-current-nick-face) str0)
+ (put-text-property 3 (length str1) 'face
+ '(bold erc-current-nick-face) str1)
+ (should (erc-faces-in str0))
+ (should (erc-faces-in str1)) ))
diff --git a/test/automated/eshell.el b/test/lisp/eshell/eshell.el
index d5676dd1da..d5676dd1da 100644
--- a/test/automated/eshell.el
+++ b/test/lisp/eshell/eshell.el
diff --git a/test/automated/faces-tests.el b/test/lisp/faces-tests.el
index 809ba24d21..809ba24d21 100644
--- a/test/automated/faces-tests.el
+++ b/test/lisp/faces-tests.el
diff --git a/test/automated/file-notify-tests.el b/test/lisp/filenotify-tests.el
index 9f0c0ed0dc..0e6e58e7b8 100644
--- a/test/automated/file-notify-tests.el
+++ b/test/lisp/filenotify-tests.el
@@ -1,4 +1,4 @@
-;;; file-notify-tests.el --- Tests of file notifications -*- lexical-binding: t; -*-
+;;; filenotify-tests.el --- Tests of file notifications -*- lexical-binding: t; -*-
;; Copyright (C) 2013-2016 Free Software Foundation, Inc.
@@ -73,9 +73,46 @@ It is different for local and remote file notification libraries.")
(cond
((file-remote-p temporary-file-directory) 6)
((string-equal (file-notify--test-library) "w32notify") 4)
- ((eq system-type 'cygwin) 10)
+ ((eq system-type 'cygwin) 6)
(t 3)))
+(defmacro file-notify--wait-for-events (timeout until)
+ "Wait for and return file notification events until form UNTIL is true.
+TIMEOUT is the maximum time to wait for, in seconds."
+ `(with-timeout (,timeout (ignore))
+ (while (null ,until)
+ (read-event nil nil file-notify--test-read-event-timeout))))
+
+(defun file-notify--test-no-descriptors ()
+ "Check that `file-notify-descriptors' is an empty hash table.
+Return nil when any other file notification watch is still active."
+ ;; Give read events a last chance.
+ (file-notify--wait-for-events
+ (file-notify--test-timeout)
+ (zerop (hash-table-count file-notify-descriptors)))
+ ;; Now check.
+ (zerop (hash-table-count file-notify-descriptors)))
+
+(defun file-notify--test-no-descriptors-explainer ()
+ "Explain why `file-notify--test-no-descriptors' fails."
+ (let ((result (list "Watch descriptor(s) existent:")))
+ (maphash
+ (lambda (key value) (push (cons key value) result))
+ file-notify-descriptors)
+ (nreverse result)))
+
+(put 'file-notify--test-no-descriptors 'ert-explainer
+ 'file-notify--test-no-descriptors-explainer)
+
+(defun file-notify--test-cleanup-p ()
+ "Check, that the test has cleaned up the environment as much as needed."
+ ;; `file-notify--test-event' should not be set but bound
+ ;; dynamically.
+ (should-not file-notify--test-event)
+ ;; The test should have cleaned up this already. Let's check
+ ;; nevertheless.
+ (should (file-notify--test-no-descriptors)))
+
(defun file-notify--test-cleanup ()
"Cleanup after a test."
(file-notify-rm-watch file-notify--test-desc)
@@ -103,9 +140,7 @@ It is different for local and remote file notification libraries.")
file-notify--test-desc1 nil
file-notify--test-desc2 nil
file-notify--test-results nil
- file-notify--test-events nil)
- (when file-notify--test-event
- (error "file-notify--test-event should not be set but bound dynamically")))
+ file-notify--test-events nil))
(setq password-cache-expiry nil
tramp-verbose 0
@@ -140,7 +175,7 @@ being the result.")
(setq desc
(file-notify-add-watch
file-notify-test-remote-temporary-file-directory
- '(change) 'ignore))))
+ '(change) #'ignore))))
(setq file-notify--test-remote-enabled-checked (cons t desc))
(when desc (file-notify-rm-watch desc))))
;; Return result.
@@ -176,14 +211,22 @@ remote host, or nil."
(ert-deftest file-notify-test00-availability ()
"Test availability of `file-notify'."
(skip-unless (file-notify--test-local-enabled))
- ;; Report the native library which has been used.
- (message "Library: `%s'" (file-notify--test-library))
- (should
- (setq file-notify--test-desc
- (file-notify-add-watch temporary-file-directory '(change) 'ignore)))
- ;; Cleanup.
- (file-notify--test-cleanup))
+ (unwind-protect
+ (progn
+ ;; Report the native library which has been used.
+ (message "Library: `%s'" (file-notify--test-library))
+ (should
+ (setq file-notify--test-desc
+ (file-notify-add-watch
+ temporary-file-directory '(change) #'ignore)))
+ (file-notify-rm-watch file-notify--test-desc)
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
+
+ ;; Cleanup.
+ (file-notify--test-cleanup)))
(file-notify--deftest-remote file-notify-test00-availability
"Test availability of `file-notify' for remote files.")
@@ -192,58 +235,66 @@ remote host, or nil."
"Check `file-notify-add-watch'."
(skip-unless (file-notify--test-local-enabled))
- (setq file-notify--test-tmpfile (file-notify--test-make-temp-name)
- file-notify--test-tmpfile1
- (format "%s/%s" file-notify--test-tmpfile (md5 (current-time-string))))
+ (unwind-protect
+ (progn
+ (setq file-notify--test-tmpfile (file-notify--test-make-temp-name)
+ file-notify--test-tmpfile1
+ (format
+ "%s/%s" file-notify--test-tmpfile (md5 (current-time-string))))
- ;; Check, that different valid parameters are accepted.
- (should
- (setq file-notify--test-desc
- (file-notify-add-watch temporary-file-directory '(change) 'ignore)))
- (file-notify-rm-watch file-notify--test-desc)
- (should
- (setq file-notify--test-desc
- (file-notify-add-watch
- temporary-file-directory '(attribute-change) 'ignore)))
- (file-notify-rm-watch file-notify--test-desc)
- (should
- (setq file-notify--test-desc
- (file-notify-add-watch
- temporary-file-directory '(change attribute-change) 'ignore)))
- (file-notify-rm-watch file-notify--test-desc)
- (write-region "any text" nil file-notify--test-tmpfile nil 'no-message)
- (should
- (setq file-notify--test-desc
- (file-notify-add-watch
- file-notify--test-tmpfile '(change attribute-change) 'ignore)))
- (file-notify-rm-watch file-notify--test-desc)
- (delete-file file-notify--test-tmpfile)
+ ;; Check, that different valid parameters are accepted.
+ (should
+ (setq file-notify--test-desc
+ (file-notify-add-watch
+ temporary-file-directory '(change) #'ignore)))
+ (file-notify-rm-watch file-notify--test-desc)
+ (should
+ (setq file-notify--test-desc
+ (file-notify-add-watch
+ temporary-file-directory '(attribute-change) #'ignore)))
+ (file-notify-rm-watch file-notify--test-desc)
+ (should
+ (setq file-notify--test-desc
+ (file-notify-add-watch
+ temporary-file-directory '(change attribute-change) #'ignore)))
+ (file-notify-rm-watch file-notify--test-desc)
+ (write-region "any text" nil file-notify--test-tmpfile nil 'no-message)
+ (should
+ (setq file-notify--test-desc
+ (file-notify-add-watch
+ file-notify--test-tmpfile '(change attribute-change) #'ignore)))
+ (file-notify-rm-watch file-notify--test-desc)
+ (delete-file file-notify--test-tmpfile)
- ;; Check error handling.
- (should-error (file-notify-add-watch 1 2 3 4)
- :type 'wrong-number-of-arguments)
- (should
- (equal (should-error
- (file-notify-add-watch 1 2 3))
- '(wrong-type-argument 1)))
- (should
- (equal (should-error
- (file-notify-add-watch temporary-file-directory 2 3))
- '(wrong-type-argument 2)))
- (should
- (equal (should-error
- (file-notify-add-watch temporary-file-directory '(change) 3))
- '(wrong-type-argument 3)))
- ;; The upper directory of a file must exist.
- (should
- (equal (should-error
- (file-notify-add-watch
- file-notify--test-tmpfile1 '(change attribute-change) 'ignore))
- `(file-notify-error
- "Directory does not exist" ,file-notify--test-tmpfile)))
+ ;; Check error handling.
+ (should-error (file-notify-add-watch 1 2 3 4)
+ :type 'wrong-number-of-arguments)
+ (should
+ (equal (should-error
+ (file-notify-add-watch 1 2 3))
+ '(wrong-type-argument 1)))
+ (should
+ (equal (should-error
+ (file-notify-add-watch temporary-file-directory 2 3))
+ '(wrong-type-argument 2)))
+ (should
+ (equal (should-error
+ (file-notify-add-watch temporary-file-directory '(change) 3))
+ '(wrong-type-argument 3)))
+ ;; The upper directory of a file must exist.
+ (should
+ (equal (should-error
+ (file-notify-add-watch
+ file-notify--test-tmpfile1
+ '(change attribute-change) #'ignore))
+ `(file-notify-error
+ "Directory does not exist" ,file-notify--test-tmpfile)))
- ;; Cleanup.
- (file-notify--test-cleanup))
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
+
+ ;; Cleanup.
+ (file-notify--test-cleanup)))
(file-notify--deftest-remote file-notify-test01-add-watch
"Check `file-notify-add-watch' for remote files.")
@@ -289,28 +340,25 @@ and the event to `file-notify--test-events'."
(expand-file-name
(make-temp-name "file-notify-test") temporary-file-directory))
-(defmacro file-notify--wait-for-events (timeout until)
- "Wait for and return file notification events until form UNTIL is true.
-TIMEOUT is the maximum time to wait for, in seconds."
- `(with-timeout (,timeout (ignore))
- (while (null ,until)
- (read-event nil nil file-notify--test-read-event-timeout))))
-
(defun file-notify--test-with-events-check (events)
"Check whether received events match one of the EVENTS alternatives."
(let (result)
(dolist (elt events result)
(setq result
(or result
- (equal elt (mapcar #'cadr file-notify--test-events)))))))
+ (if (eq (car elt) :random)
+ (equal (sort (cdr elt) 'string-lessp)
+ (sort (mapcar #'cadr file-notify--test-events)
+ 'string-lessp))
+ (equal elt (mapcar #'cadr file-notify--test-events))))))))
(defun file-notify--test-with-events-explainer (events)
"Explain why `file-notify--test-with-events-check' fails."
(if (null (cdr events))
- (format "Received events `%s' do not match expected events `%s'"
+ (format "Received events do not match expected events\n%s\n%s"
(mapcar #'cadr file-notify--test-events) (car events))
(format
- "Received events `%s' do not match any sequence of expected events `%s'"
+ "Received events do not match any sequence of expected events\n%s\n%s"
(mapcar #'cadr file-notify--test-events) events)))
(put 'file-notify--test-with-events-check 'ert-explainer
@@ -319,16 +367,25 @@ TIMEOUT is the maximum time to wait for, in seconds."
(defmacro file-notify--test-with-events (events &rest body)
"Run BODY collecting events and then compare with EVENTS.
EVENTS is either a simple list of events, or a list of lists of
-events, which represent different possible results. Don't wait
-longer than timeout seconds for the events to be delivered."
+events, which represent different possible results. The first
+event of a list could be the pseudo event `:random', which is
+just an indicator for comparison.
+
+Don't wait longer than timeout seconds for the events to be
+delivered."
(declare (indent 1))
`(let* ((events (if (consp (car ,events)) ,events (list ,events)))
- (max-length (apply 'max (mapcar 'length events)))
+ (max-length
+ (apply
+ 'max
+ (mapcar
+ (lambda (x) (length (if (eq (car x) :random) (cdr x) x)))
+ events)))
create-lockfiles)
;; Flush pending events.
(file-notify--wait-for-events
(file-notify--test-timeout)
- (input-pending-p))
+ (not (input-pending-p)))
(setq file-notify--test-events nil
file-notify--test-results nil)
,@body
@@ -361,7 +418,7 @@ longer than timeout seconds for the events to be delivered."
(setq file-notify--test-desc
(file-notify-add-watch
file-notify--test-tmpfile
- '(change) 'file-notify--test-event-handler)))
+ '(change) #'file-notify--test-event-handler)))
(file-notify--test-with-events
(cond
;; cygwin recognizes only `deleted' and `stopped' events.
@@ -381,23 +438,15 @@ longer than timeout seconds for the events to be delivered."
(setq file-notify--test-desc
(file-notify-add-watch
file-notify--test-tmpfile
- '(change) 'file-notify--test-event-handler)))
+ '(change) #'file-notify--test-event-handler)))
(file-notify--test-with-events
(cond
;; cygwin recognizes only `deleted' and `stopped' events.
((eq system-type 'cygwin)
'(deleted stopped))
- ;; inotify and kqueue raise just one `changed' event.
- ((or (string-equal "inotify" (file-notify--test-library))
- (string-equal "kqueue" (file-notify--test-library)))
- '(changed deleted stopped))
- ;; gfilenotify raises one or two `changed' events
- ;; randomly, no chance to test. So we accept both cases.
- ((string-equal "gfilenotify" (file-notify--test-library))
- '((changed deleted stopped)
- (changed changed deleted stopped)))
- (t '(changed changed deleted stopped)))
- (read-event nil nil file-notify--test-read-event-timeout)
+ ;; There could be one or two `changed' events.
+ (t '((changed deleted stopped)
+ (changed changed deleted stopped))))
(write-region
"another text" nil file-notify--test-tmpfile nil 'no-message)
(read-event nil nil file-notify--test-read-event-timeout)
@@ -414,7 +463,7 @@ longer than timeout seconds for the events to be delivered."
file-notify--test-desc
(file-notify-add-watch
temporary-file-directory
- '(change) 'file-notify--test-event-handler)))
+ '(change) #'file-notify--test-event-handler)))
(file-notify--test-with-events
(cond
;; w32notify does not raise `deleted' and `stopped'
@@ -429,11 +478,10 @@ longer than timeout seconds for the events to be delivered."
((string-equal (file-notify--test-library) "kqueue")
'(created changed deleted stopped))
(t '(created changed deleted deleted stopped)))
- (read-event nil nil file-notify--test-read-event-timeout)
(write-region
"any text" nil file-notify--test-tmpfile nil 'no-message)
(read-event nil nil file-notify--test-read-event-timeout)
- (delete-directory temporary-file-directory 'recursive))
+ (delete-directory temporary-file-directory 'recursive))
(file-notify-rm-watch file-notify--test-desc))
;; Check copy of files inside a directory.
@@ -445,7 +493,7 @@ longer than timeout seconds for the events to be delivered."
file-notify--test-desc
(file-notify-add-watch
temporary-file-directory
- '(change) 'file-notify--test-event-handler)))
+ '(change) #'file-notify--test-event-handler)))
(file-notify--test-with-events
(cond
;; w32notify does not distinguish between `changed' and
@@ -464,7 +512,6 @@ longer than timeout seconds for the events to be delivered."
'(created changed created changed deleted stopped))
(t '(created changed created changed
deleted deleted deleted stopped)))
- (read-event nil nil file-notify--test-read-event-timeout)
(write-region
"any text" nil file-notify--test-tmpfile nil 'no-message)
(read-event nil nil file-notify--test-read-event-timeout)
@@ -475,7 +522,7 @@ longer than timeout seconds for the events to be delivered."
(read-event nil nil file-notify--test-read-event-timeout)
(set-file-times file-notify--test-tmpfile '(0 0))
(read-event nil nil file-notify--test-read-event-timeout)
- (delete-directory temporary-file-directory 'recursive))
+ (delete-directory temporary-file-directory 'recursive))
(file-notify-rm-watch file-notify--test-desc))
;; Check rename of files inside a directory.
@@ -487,7 +534,7 @@ longer than timeout seconds for the events to be delivered."
file-notify--test-desc
(file-notify-add-watch
temporary-file-directory
- '(change) 'file-notify--test-event-handler)))
+ '(change) #'file-notify--test-event-handler)))
(file-notify--test-with-events
(cond
;; w32notify does not raise `deleted' and `stopped'
@@ -502,14 +549,13 @@ longer than timeout seconds for the events to be delivered."
((string-equal (file-notify--test-library) "kqueue")
'(created changed renamed deleted stopped))
(t '(created changed renamed deleted deleted stopped)))
- (read-event nil nil file-notify--test-read-event-timeout)
(write-region
"any text" nil file-notify--test-tmpfile nil 'no-message)
(read-event nil nil file-notify--test-read-event-timeout)
(rename-file file-notify--test-tmpfile file-notify--test-tmpfile1)
;; After the rename, we won't get events anymore.
(read-event nil nil file-notify--test-read-event-timeout)
- (delete-directory temporary-file-directory 'recursive))
+ (delete-directory temporary-file-directory 'recursive))
(file-notify-rm-watch file-notify--test-desc))
;; Check attribute change. Does not work for cygwin.
@@ -521,20 +567,22 @@ longer than timeout seconds for the events to be delivered."
(setq file-notify--test-desc
(file-notify-add-watch
file-notify--test-tmpfile
- '(attribute-change) 'file-notify--test-event-handler)))
+ '(attribute-change) #'file-notify--test-event-handler)))
(file-notify--test-with-events
(cond
;; w32notify does not distinguish between `changed' and
- ;; `attribute-changed'.
+ ;; `attribute-changed'. Under MS Windows 7, we get
+ ;; four `changed' events, and under MS Windows 10 just
+ ;; two. Strange.
((string-equal (file-notify--test-library) "w32notify")
- '(changed changed changed changed))
+ '((changed changed)
+ (changed changed changed changed)))
;; For kqueue and in the remote case, `write-region'
;; raises also an `attribute-changed' event.
((or (string-equal (file-notify--test-library) "kqueue")
(file-remote-p temporary-file-directory))
'(attribute-changed attribute-changed attribute-changed))
(t '(attribute-changed attribute-changed)))
- (read-event nil nil file-notify--test-read-event-timeout)
(write-region
"any text" nil file-notify--test-tmpfile nil 'no-message)
(read-event nil nil file-notify--test-read-event-timeout)
@@ -543,7 +591,10 @@ longer than timeout seconds for the events to be delivered."
(set-file-times file-notify--test-tmpfile '(0 0))
(read-event nil nil file-notify--test-read-event-timeout)
(delete-file file-notify--test-tmpfile))
- (file-notify-rm-watch file-notify--test-desc)))
+ (file-notify-rm-watch file-notify--test-desc))
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(file-notify--test-cleanup)))
@@ -559,6 +610,7 @@ longer than timeout seconds for the events to be delivered."
(ert-deftest file-notify-test03-autorevert ()
"Check autorevert via file notification."
(skip-unless (file-notify--test-local-enabled))
+
;; `auto-revert-buffers' runs every 5". And we must wait, until the
;; file has been reverted.
(let ((timeout (if (file-remote-p temporary-file-directory) 60 10))
@@ -566,7 +618,6 @@ longer than timeout seconds for the events to be delivered."
(unwind-protect
(progn
(setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
-
(write-region
"any text" nil file-notify--test-tmpfile nil 'no-message)
(setq buf (find-file-noselect file-notify--test-tmpfile))
@@ -628,7 +679,10 @@ longer than timeout seconds for the events to be delivered."
(string-match
(format-message "Reverting buffer `%s'." (buffer-name buf))
(buffer-string))))
- (should (string-match "foo bla" (buffer-string)))))
+ (should (string-match "foo bla" (buffer-string))))
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(with-current-buffer "*Messages*" (widen))
@@ -649,14 +703,16 @@ longer than timeout seconds for the events to be delivered."
(should
(setq file-notify--test-desc
(file-notify-add-watch
- file-notify--test-tmpfile
- '(change) #'file-notify--test-event-handler)))
+ file-notify--test-tmpfile '(change) #'ignore)))
(should (file-notify-valid-p file-notify--test-desc))
;; After calling `file-notify-rm-watch', the descriptor is not
;; valid anymore.
(file-notify-rm-watch file-notify--test-desc)
(should-not (file-notify-valid-p file-notify--test-desc))
- (delete-file file-notify--test-tmpfile))
+ (delete-file file-notify--test-tmpfile)
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(file-notify--test-cleanup))
@@ -670,30 +726,25 @@ longer than timeout seconds for the events to be delivered."
(file-notify-add-watch
file-notify--test-tmpfile
'(change) #'file-notify--test-event-handler)))
+ (should (file-notify-valid-p file-notify--test-desc))
(file-notify--test-with-events
(cond
;; cygwin recognizes only `deleted' and `stopped' events.
((eq system-type 'cygwin)
'(deleted stopped))
- ;; inotify and kqueue raise just one `changed' event.
- ((or (string-equal "inotify" (file-notify--test-library))
- (string-equal "kqueue" (file-notify--test-library)))
- '(changed deleted stopped))
- ;; gfilenotify raises one or two `changed' events
- ;; randomly, no chance to test. So we accept both cases.
- ((string-equal "gfilenotify" (file-notify--test-library))
- '((changed deleted stopped)
- (changed changed deleted stopped)))
- (t '(changed changed deleted stopped)))
- (should (file-notify-valid-p file-notify--test-desc))
- (read-event nil nil file-notify--test-read-event-timeout)
+ ;; There could be one or two `changed' events.
+ (t '((changed deleted stopped)
+ (changed changed deleted stopped))))
(write-region
"another text" nil file-notify--test-tmpfile nil 'no-message)
(read-event nil nil file-notify--test-read-event-timeout)
(delete-file file-notify--test-tmpfile))
;; After deleting the file, the descriptor is not valid anymore.
(should-not (file-notify-valid-p file-notify--test-desc))
- (file-notify-rm-watch file-notify--test-desc))
+ (file-notify-rm-watch file-notify--test-desc)
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(file-notify--test-cleanup))
@@ -707,6 +758,7 @@ longer than timeout seconds for the events to be delivered."
(file-notify-add-watch
temporary-file-directory
'(change) #'file-notify--test-event-handler)))
+ (should (file-notify-valid-p file-notify--test-desc))
(file-notify--test-with-events
(cond
;; w32notify does not raise `deleted' and `stopped' events
@@ -721,15 +773,16 @@ longer than timeout seconds for the events to be delivered."
((string-equal (file-notify--test-library) "kqueue")
'(created changed deleted stopped))
(t '(created changed deleted deleted stopped)))
- (should (file-notify-valid-p file-notify--test-desc))
- (read-event nil nil file-notify--test-read-event-timeout)
(write-region
"any text" nil file-notify--test-tmpfile nil 'no-message)
(read-event nil nil file-notify--test-read-event-timeout)
(delete-directory temporary-file-directory t))
;; After deleting the parent directory, the descriptor must
;; not be valid anymore.
- (should-not (file-notify-valid-p file-notify--test-desc)))
+ (should-not (file-notify-valid-p file-notify--test-desc))
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(file-notify--test-cleanup)))
@@ -743,14 +796,13 @@ longer than timeout seconds for the events to be delivered."
(unwind-protect
(progn
- (setq file-notify--test-tmpfile
- (file-name-as-directory (file-notify--test-make-temp-name)))
- (make-directory file-notify--test-tmpfile)
+ (should
+ (setq file-notify--test-tmpfile
+ (make-temp-file "file-notify-test-parent" t)))
(should
(setq file-notify--test-desc
(file-notify-add-watch
- file-notify--test-tmpfile
- '(change) #'file-notify--test-event-handler)))
+ file-notify--test-tmpfile '(change) #'ignore)))
(should (file-notify-valid-p file-notify--test-desc))
;; After removing the watch, the descriptor must not be valid
;; anymore.
@@ -758,21 +810,24 @@ longer than timeout seconds for the events to be delivered."
(file-notify--wait-for-events
(file-notify--test-timeout)
(not (file-notify-valid-p file-notify--test-desc)))
- (should-not (file-notify-valid-p file-notify--test-desc)))
+ (should-not (file-notify-valid-p file-notify--test-desc))
+ (delete-directory file-notify--test-tmpfile t)
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(file-notify--test-cleanup))
(unwind-protect
(progn
- (setq file-notify--test-tmpfile
- (file-name-as-directory (file-notify--test-make-temp-name)))
- (make-directory file-notify--test-tmpfile)
+ (should
+ (setq file-notify--test-tmpfile
+ (make-temp-file "file-notify-test-parent" t)))
(should
(setq file-notify--test-desc
(file-notify-add-watch
- file-notify--test-tmpfile
- '(change) #'file-notify--test-event-handler)))
+ file-notify--test-tmpfile '(change) #'ignore)))
(should (file-notify-valid-p file-notify--test-desc))
;; After deleting the directory, the descriptor must not be
;; valid anymore.
@@ -780,7 +835,10 @@ longer than timeout seconds for the events to be delivered."
(file-notify--wait-for-events
(file-notify--test-timeout)
(not (file-notify-valid-p file-notify--test-desc)))
- (should-not (file-notify-valid-p file-notify--test-desc)))
+ (should-not (file-notify-valid-p file-notify--test-desc))
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(file-notify--test-cleanup)))
@@ -792,16 +850,15 @@ longer than timeout seconds for the events to be delivered."
"Check that events are not dropped."
:tags '(:expensive-test)
(skip-unless (file-notify--test-local-enabled))
- ;; Under cygwin events arrive in random order. Impossible to define a test.
- (skip-unless (not (eq system-type 'cygwin)))
- (setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
- (make-directory file-notify--test-tmpfile)
+ (should
+ (setq file-notify--test-tmpfile
+ (make-temp-file "file-notify-test-parent" t)))
(should
(setq file-notify--test-desc
(file-notify-add-watch
file-notify--test-tmpfile
- '(change) 'file-notify--test-event-handler)))
+ '(change) #'file-notify--test-event-handler)))
(unwind-protect
(let ((n 1000)
source-file-list target-file-list
@@ -831,6 +888,12 @@ longer than timeout seconds for the events to be delivered."
(let (r)
(dotimes (_i n r)
(setq r (append '(deleted renamed) r)))))
+ ;; cygwin fires `changed' and `deleted' events, sometimes
+ ;; in random order.
+ ((eq system-type 'cygwin)
+ (let ((r '(:random)))
+ (dotimes (_i n r)
+ (setq r (append r '(changed deleted))))))
(t (make-list n 'renamed)))
(let ((source-file-list source-file-list)
(target-file-list target-file-list))
@@ -840,7 +903,11 @@ longer than timeout seconds for the events to be delivered."
(file-notify--test-with-events (make-list n 'deleted)
(dolist (file target-file-list)
(read-event nil nil file-notify--test-read-event-timeout)
- (delete-file file) file-notify--test-read-event-timeout)))
+ (delete-file file) file-notify--test-read-event-timeout))
+ (delete-directory file-notify--test-tmpfile)
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(file-notify--test-cleanup)))
@@ -863,18 +930,9 @@ longer than timeout seconds for the events to be delivered."
'(change) #'file-notify--test-event-handler)))
(should (file-notify-valid-p file-notify--test-desc))
(file-notify--test-with-events
- (cond
- ;; For w32notify and in the remote case, there are two
- ;; `changed' events.
- ((or (string-equal (file-notify--test-library) "w32notify")
- (file-remote-p temporary-file-directory))
- '(changed changed))
- ;; gfilenotify raises one or two `changed' events
- ;; randomly, no chance to test. So we accept both cases.
- ((string-equal "gfilenotify" (file-notify--test-library))
- '((changed)
- (changed changed)))
- (t '(changed)))
+ ;; There could be one or two `changed' events.
+ '((changed)
+ (changed changed))
;; There shouldn't be any problem, because the file is kept.
(with-temp-buffer
(let ((buffer-file-name file-notify--test-tmpfile)
@@ -886,40 +944,49 @@ longer than timeout seconds for the events to be delivered."
(save-buffer))))
;; After saving the buffer, the descriptor is still valid.
(should (file-notify-valid-p file-notify--test-desc))
- (delete-file file-notify--test-tmpfile))
+ (delete-file file-notify--test-tmpfile)
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(file-notify--test-cleanup))
(unwind-protect
- (progn
- ;; It doesn't work for kqueue, because we don't use an
- ;; implicit directory monitor.
- (unless (string-equal (file-notify--test-library) "kqueue")
- (setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
- (write-region
- "any text" nil file-notify--test-tmpfile nil 'no-message)
- (should
- (setq file-notify--test-desc
- (file-notify-add-watch
- file-notify--test-tmpfile
- '(change) #'file-notify--test-event-handler)))
- (should (file-notify-valid-p file-notify--test-desc))
- (file-notify--test-with-events '(renamed created changed)
- ;; The file is renamed when creating a backup. It shall
- ;; still be watched.
- (with-temp-buffer
- (let ((buffer-file-name file-notify--test-tmpfile)
- (make-backup-files t)
- (backup-by-copying nil)
- (backup-by-copying-when-mismatch nil)
- (kept-new-versions 1)
- (delete-old-versions t))
- (insert "another text")
- (save-buffer))))
- ;; After saving the buffer, the descriptor is still valid.
- (should (file-notify-valid-p file-notify--test-desc))
- (delete-file file-notify--test-tmpfile)))
+ ;; It doesn't work for kqueue, because we don't use an implicit
+ ;; directory monitor.
+ (unless (string-equal (file-notify--test-library) "kqueue")
+ (setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
+ (write-region
+ "any text" nil file-notify--test-tmpfile nil 'no-message)
+ (should
+ (setq file-notify--test-desc
+ (file-notify-add-watch
+ file-notify--test-tmpfile
+ '(change) #'file-notify--test-event-handler)))
+ (should (file-notify-valid-p file-notify--test-desc))
+ (file-notify--test-with-events
+ (cond
+ ;; On cygwin we only get the `changed' event.
+ ((eq system-type 'cygwin) '(changed))
+ (t '(renamed created changed)))
+ ;; The file is renamed when creating a backup. It shall
+ ;; still be watched.
+ (with-temp-buffer
+ (let ((buffer-file-name file-notify--test-tmpfile)
+ (make-backup-files t)
+ (backup-by-copying nil)
+ (backup-by-copying-when-mismatch nil)
+ (kept-new-versions 1)
+ (delete-old-versions t))
+ (insert "another text")
+ (save-buffer))))
+ ;; After saving the buffer, the descriptor is still valid.
+ (should (file-notify-valid-p file-notify--test-desc))
+ (delete-file file-notify--test-tmpfile)
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(file-notify--test-cleanup)))
@@ -969,58 +1036,45 @@ the file watch."
(should (file-notify-valid-p file-notify--test-desc1))
(should (file-notify-valid-p file-notify--test-desc2))
(should-not (equal file-notify--test-desc1 file-notify--test-desc2))
- ;; gfilenotify raises one or two `changed' events randomly in
- ;; the file monitor, no chance to test.
- (unless (string-equal "gfilenotify" (file-notify--test-library))
- (let ((n 100) events)
- ;; Compute the expected events.
- (dotimes (_i (/ n 2))
- (setq events
- (append
- (append
- ;; Directory monitor and file monitor.
- (cond
- ;; In the remote case, there are two `changed'
- ;; events.
- ((file-remote-p temporary-file-directory)
- '(changed changed changed changed))
- ;; The directory monitor in kqueue does not
- ;; raise any `changed' event. Just the file
- ;; monitor event is received.
- ((string-equal (file-notify--test-library) "kqueue")
- '(changed))
- ;; Otherwise, both monitors report the
- ;; `changed' event.
- (t '(changed changed)))
- ;; Just the directory monitor.
- (cond
- ;; In kqueue, there is an additional `changed'
- ;; event. Why?
- ((string-equal (file-notify--test-library) "kqueue")
- '(changed created changed))
- (t '(created changed))))
- events)))
-
- ;; Run the test.
- (file-notify--test-with-events events
- (dotimes (i n)
- (read-event nil nil file-notify--test-read-event-timeout)
- (if (zerop (mod i 2))
- (write-region
- "any text" nil file-notify--test-tmpfile1 t 'no-message)
- (let ((temporary-file-directory file-notify--test-tmpfile))
- (write-region
- "any text" nil
- (file-notify--test-make-temp-name) nil 'no-message)))))))
+ (let ((n 100))
+ ;; Run the test.
+ (file-notify--test-with-events
+ ;; There could be one or two `changed' events.
+ (list
+ (append
+ '(:random)
+ ;; Directory monitor and file monitor.
+ (make-list (/ n 2) 'changed)
+ (make-list (/ n 2) 'changed)
+ ;; Just the directory monitor.
+ (make-list (/ n 2) 'created)
+ (make-list (/ n 2) 'changed))
+ (append
+ '(:random)
+ ;; Directory monitor and file monitor.
+ (make-list (/ n 2) 'changed)
+ (make-list (/ n 2) 'changed)
+ (make-list (/ n 2) 'changed)
+ (make-list (/ n 2) 'changed)
+ ;; Just the directory monitor.
+ (make-list (/ n 2) 'created)
+ (make-list (/ n 2) 'changed)))
+ (dotimes (i n)
+ (read-event nil nil file-notify--test-read-event-timeout)
+ (if (zerop (mod i 2))
+ (write-region
+ "any text" nil file-notify--test-tmpfile1 t 'no-message)
+ (let ((temporary-file-directory file-notify--test-tmpfile))
+ (write-region
+ "any text" nil
+ (file-notify--test-make-temp-name) nil 'no-message))))))
;; If we delete the file, the directory monitor shall still be
;; active. We receive the `deleted' event from both the
;; directory and the file monitor. The `stopped' event is
;; from the file monitor. It's undecided in which order the
;; the directory and the file monitor are triggered.
- (file-notify--test-with-events
- '((deleted deleted stopped)
- (deleted stopped deleted))
+ (file-notify--test-with-events '(:random deleted deleted stopped)
(delete-file file-notify--test-tmpfile1))
(should (file-notify-valid-p file-notify--test-desc1))
(should-not (file-notify-valid-p file-notify--test-desc2))
@@ -1050,7 +1104,10 @@ the file watch."
(t '(deleted stopped))))))
(delete-directory file-notify--test-tmpfile 'recursive))
(should-not (file-notify-valid-p file-notify--test-desc1))
- (should-not (file-notify-valid-p file-notify--test-desc2)))
+ (should-not (file-notify-valid-p file-notify--test-desc2))
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
;; Cleanup.
(file-notify--test-cleanup)))
@@ -1058,6 +1115,50 @@ the file watch."
(file-notify--deftest-remote file-notify-test08-watched-file-in-watched-dir
"Check `file-notify-test08-watched-file-in-watched-dir' for remote files.")
+(ert-deftest file-notify-test09-sufficient-resources ()
+ "Check that file notification does not use too many resources."
+ :tags '(:expensive-test)
+ (skip-unless (file-notify--test-local-enabled))
+ ;; This test is intended for kqueue only.
+ (skip-unless (string-equal (file-notify--test-library) "kqueue"))
+
+ (should
+ (setq file-notify--test-tmpfile
+ (make-temp-file "file-notify-test-parent" t)))
+ (unwind-protect
+ (let ((temporary-file-directory file-notify--test-tmpfile)
+ descs)
+ (should-error
+ (while t
+ ;; We watch directories, because we want to reach the upper
+ ;; limit. Watching a file might not be sufficient, because
+ ;; most of the libraries implement this as watching the
+ ;; upper directory.
+ (setq file-notify--test-tmpfile1
+ (make-temp-file "file-notify-test-parent" t)
+ descs
+ (cons
+ (should
+ (file-notify-add-watch
+ file-notify--test-tmpfile1 '(change) #'ignore))
+ descs)))
+ :type 'file-notify-error)
+ ;; Remove watches. If we don't do it prior removing
+ ;; directories, Emacs crashes in batch mode.
+ (dolist (desc descs)
+ (file-notify-rm-watch desc))
+ ;; Remove directories.
+ (delete-directory file-notify--test-tmpfile 'recursive)
+
+ ;; The environment shall be cleaned up.
+ (file-notify--test-cleanup-p))
+
+ ;; Cleanup.
+ (file-notify--test-cleanup)))
+
+(file-notify--deftest-remote file-notify-test09-sufficient-resources
+ "Check `file-notify-test09-sufficient-resources' for remote files.")
+
(defun file-notify-test-all (&optional interactive)
"Run all tests for \\[file-notify]."
(interactive "p")
@@ -1076,4 +1177,4 @@ the file watch."
;; * Check, why cygwin recognizes only `deleted' and `stopped' events.
(provide 'file-notify-tests)
-;;; file-notify-tests.el ends here
+;;; filenotify-tests.el ends here
diff --git a/test/automated/gnus-tests.el b/test/lisp/gnus/gnus-tests.el
index 6801ce69a3..6801ce69a3 100644
--- a/test/automated/gnus-tests.el
+++ b/test/lisp/gnus/gnus-tests.el
diff --git a/test/automated/message-mode-tests.el b/test/lisp/gnus/message-tests.el
index 3afa1569f6..13c15e33b2 100644
--- a/test/automated/message-mode-tests.el
+++ b/test/lisp/gnus/message-tests.el
@@ -55,6 +55,49 @@
(point)))))
(set-buffer-modified-p nil))))
+
+(ert-deftest message-strip-subject-trailing-was ()
+ (cl-letf (((symbol-function 'message-talkative-question) nil))
+ (with-temp-buffer
+ (let ((no-was "Re: Foo ")
+ (with-was "Re: Foo \t (was: Bar ) ")
+ (stripped-was "Re: Foo")
+ reply)
+
+ ;; Test unconditional stripping
+ (setq-local message-subject-trailing-was-query t)
+ (should (string= no-was (message-strip-subject-trailing-was no-was)))
+ (should (string= stripped-was
+ (message-strip-subject-trailing-was with-was)))
+
+ ;; Test asking
+ (setq-local message-subject-trailing-was-query 'ask)
+ (fset 'message-talkative-question
+ (lambda (_ question show text)
+ (should (string= "Strip `(was: <old subject>)' in subject? "
+ question))
+ (should show)
+ (should (string-match
+ (concat
+ "Strip `(was: <old subject>)' in subject "
+ "and use the new one instead\\?\n\n"
+ "Current subject is: \"\\(.*\\)\"\n\n"
+ "New subject would be: \"\\(.*\\)\"\n\n"
+ "See the variable "
+ "`message-subject-trailing-was-query' "
+ "to get rid of this query.")
+ text))
+ (should (string= (match-string 1 text) with-was))
+ (should (string= (match-string 2 text) stripped-was))
+ reply))
+ (message-strip-subject-trailing-was with-was)
+ (should (string= with-was
+ (message-strip-subject-trailing-was with-was)))
+ (setq reply t)
+ (should (string= stripped-was
+ (message-strip-subject-trailing-was with-was)))))))
+
+
(provide 'message-mode-tests)
;;; message-mode-tests.el ends here
diff --git a/test/lisp/help-fns-tests.el b/test/lisp/help-fns-tests.el
new file mode 100644
index 0000000000..ba0d8ed8e3
--- /dev/null
+++ b/test/lisp/help-fns-tests.el
@@ -0,0 +1,121 @@
+;;; help-fns.el --- tests for help-fns.el
+
+;; Copyright (C) 2014-2016 Free Software Foundation, Inc.
+
+;; Maintainer: emacs-devel@gnu.org
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'ert)
+
+(autoload 'help-fns-test--macro "help-fns" nil nil t)
+
+
+;;; Several tests for describe-function
+
+(defun help-fns-tests--describe-function (func)
+ "Helper function for `describe-function' tests.
+FUNC is the function to describe, a symbol.
+Return first line of the output of (describe-function-1 FUNC)."
+ (let ((string (with-output-to-string
+ (describe-function-1 func))))
+ (string-match "\\(.+\\)\n" string)
+ (match-string-no-properties 1 string)))
+
+(ert-deftest help-fns-test-bug17410 ()
+ "Test for http://debbugs.gnu.org/17410 ."
+ (let ((regexp "autoloaded Lisp macro")
+ (result (help-fns-tests--describe-function 'help-fns-test--macro)))
+ (should (string-match regexp result))))
+
+(ert-deftest help-fns-test-built-in ()
+ (let ((regexp "a built-in function in .C source code")
+ (result (help-fns-tests--describe-function 'mapcar)))
+ (should (string-match regexp result))))
+
+(ert-deftest help-fns-test-interactive-built-in ()
+ (let ((regexp "an interactive built-in function in .C source code")
+ (result (help-fns-tests--describe-function 're-search-forward)))
+ (should (string-match regexp result))))
+
+(ert-deftest help-fns-test-lisp-macro ()
+ (let ((regexp "a Lisp macro in .subr\.el")
+ (result (help-fns-tests--describe-function 'when)))
+ (should (string-match regexp result))))
+
+(ert-deftest help-fns-test-lisp-defun ()
+ (let ((regexp "a compiled Lisp function in .subr\.el")
+ (result (help-fns-tests--describe-function 'last)))
+ (should (string-match regexp result))))
+
+(ert-deftest help-fns-test-lisp-defsubst ()
+ (let ((regexp "a compiled Lisp function in .subr\.el")
+ (result (help-fns-tests--describe-function 'posn-window)))
+ (should (string-match regexp result))))
+
+(ert-deftest help-fns-test-alias-to-defun ()
+ (let ((regexp "an alias for .set-file-modes. in .subr\.el")
+ (result (help-fns-tests--describe-function 'chmod)))
+ (should (string-match regexp result))))
+
+(ert-deftest help-fns-test-bug23887 ()
+ "Test for http://debbugs.gnu.org/23887 ."
+ (let ((regexp "an alias for .re-search-forward. in .subr\.el")
+ (result (help-fns-tests--describe-function 'search-forward-regexp)))
+ (should (string-match regexp result))))
+
+
+;;; Test describe-function over functions with funny names
+(defun abc\\\[universal-argument\]b\`c\'d\\e\"f (x)
+ "A function with a funny name.
+
+\(fn XYZZY)"
+ x)
+
+(defun defgh\\\[universal-argument\]b\`c\'d\\e\"f (x)
+ "Another function with a funny name."
+ x)
+
+(ert-deftest help-fns-test-funny-names ()
+ "Test for help with functions with funny names."
+ (describe-function 'abc\\\[universal-argument\]b\`c\'d\\e\"f)
+ (with-current-buffer "*Help*"
+ (goto-char (point-min))
+ (should (search-forward
+ "(abc\\\\\\[universal-argument\\]b\\`c\\'d\\\\e\\\"f XYZZY)")))
+ (describe-function 'defgh\\\[universal-argument\]b\`c\'d\\e\"f)
+ (with-current-buffer "*Help*"
+ (goto-char (point-min))
+ (should (search-forward
+ "(defgh\\\\\\[universal-argument\\]b\\`c\\'d\\\\e\\\"f X)"))))
+
+
+;;; Test for describe-symbol
+(ert-deftest help-fns-test-describe-symbol ()
+ "Test the `describe-symbol' function."
+ ;; 'describe-symbol' would originally signal an error for
+ ;; 'font-lock-comment-face'.
+ (describe-symbol 'font-lock-comment-face)
+ (with-current-buffer "*Help*"
+ (should (> (point-max) 1))
+ (goto-char (point-min))
+ (should (looking-at "^font-lock-comment-face is "))))
+
+;;; help-fns.el ends here
diff --git a/test/lisp/htmlfontify-tests.el b/test/lisp/htmlfontify-tests.el
new file mode 100644
index 0000000000..012e170f4d
--- /dev/null
+++ b/test/lisp/htmlfontify-tests.el
@@ -0,0 +1,34 @@
+;;; htmlfontify-tests.el --- Test suite. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+(require 'ert)
+(require 'htmlfontify)
+
+(ert-deftest htmlfontify-autoload ()
+ "Tests to see whether reftex-auc has been autoloaded"
+ (should
+ (fboundp 'htmlfontify-load-rgb-file))
+ (should
+ (autoloadp
+ (symbol-function
+ 'htmlfontify-load-rgb-file))))
+
+(provide 'htmlfontify-tests)
+;; htmlfontify-tests.el ends here
diff --git a/test/lisp/ibuffer-tests.el b/test/lisp/ibuffer-tests.el
new file mode 100644
index 0000000000..de281c0373
--- /dev/null
+++ b/test/lisp/ibuffer-tests.el
@@ -0,0 +1,34 @@
+;;; ibuffer-tests.el --- Test suite. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+(require 'ert)
+(require 'ibuffer)
+
+(ert-deftest ibuffer-autoload ()
+ "Tests to see whether reftex-auc has been autoloaded"
+ (should
+ (fboundp 'ibuffer-mark-unsaved-buffers))
+ (should
+ (autoloadp
+ (symbol-function
+ 'ibuffer-mark-unsaved-buffers))))
+
+(provide 'ibuffer-tests)
+;; ibuffer-tests.el ends here
diff --git a/test/automated/imenu-test.el b/test/lisp/imenu-tests.el
index b6e0f604d0..b6e0f604d0 100644
--- a/test/automated/imenu-test.el
+++ b/test/lisp/imenu-tests.el
diff --git a/test/automated/info-xref.el b/test/lisp/info-xref-tests.el
index bc3115042b..bc3115042b 100644
--- a/test/automated/info-xref.el
+++ b/test/lisp/info-xref-tests.el
diff --git a/test/automated/mule-util.el b/test/lisp/international/mule-util-tests.el
index 9846aa1329..9846aa1329 100644
--- a/test/automated/mule-util.el
+++ b/test/lisp/international/mule-util-tests.el
diff --git a/test/lisp/international/ucs-normalize-tests.el b/test/lisp/international/ucs-normalize-tests.el
new file mode 100644
index 0000000000..42cf805b77
--- /dev/null
+++ b/test/lisp/international/ucs-normalize-tests.el
@@ -0,0 +1,277 @@
+;;; ucs-normalize --- tests for international/ucs-normalize.el -*- lexical-binding: t -*-
+
+;; Copyright (C) 2002-2016 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; The Part1 test takes a long time because it goes over the whole
+;; unicode character set; you should build Emacs with optimization
+;; enabled before running it.
+;;
+;; If there are lines marked as failing (see
+;; `ucs-normalize-tests--failing-lines-part1' and
+;; `ucs-normalize-tests--failing-lines-part2'), they may need to be
+;; adjusted when NormalizationTest.txt is updated. To get a list of
+;; currently failing lines, set those 2 variables to nil, run the
+;; tests, and inspect the values of
+;; `ucs-normalize-tests--part1-rule1-failed-lines' and
+;; `ucs-normalize-tests--part1-rule2-failed-chars', respectively.
+
+;;; Code:
+
+(eval-when-compile (require 'cl-lib))
+(require 'ert)
+(require 'ucs-normalize)
+
+(defconst ucs-normalize-test-data-file
+ (expand-file-name "admin/unidata/NormalizationTest.txt" source-directory))
+
+(defun ucs-normalize-tests--parse-column ()
+ (let ((chars nil)
+ (term nil))
+ (while (and (not (equal term ";"))
+ (looking-at "\\([[:xdigit:]]\\{4,6\\}\\)\\([; ]\\)"))
+ (let ((code-point (match-string 1)))
+ (setq term (match-string 2))
+ (goto-char (match-end 0))
+ (push (string-to-number code-point 16) chars)))
+ (nreverse chars)))
+
+(defmacro ucs-normalize-tests--normalize (norm str)
+ "Like `ucs-normalize-string' but reuse current buffer for efficiency.
+And NORM is one of the symbols `NFC', `NFD', `NFKC', `NFKD' for brevity."
+ (let ((norm-alist '((NFC . ucs-normalize-NFC-region)
+ (NFD . ucs-normalize-NFD-region)
+ (NFKC . ucs-normalize-NFKC-region)
+ (NFKD . ucs-normalize-NFKD-region))))
+ `(save-restriction
+ (narrow-to-region (point) (point))
+ (insert ,str)
+ (funcall #',(cdr (assq norm norm-alist)) (point-min) (point-max))
+ (delete-and-extract-region (point-min) (point-max)))))
+
+(defvar ucs-normalize-tests--chars-part1 nil)
+
+(defun ucs-normalize-tests--invariants-hold-p (&rest columns)
+ "Check 1st conformance rule.
+The following invariants must be true for all conformant implementations..."
+ (when ucs-normalize-tests--chars-part1
+ ;; See `ucs-normalize-tests--invariants-rule2-hold-p'.
+ (aset ucs-normalize-tests--chars-part1
+ (caar columns) 1))
+ (cl-destructuring-bind (source nfc nfd nfkc nfkd)
+ (mapcar (lambda (c) (apply #'string c)) columns)
+ (and
+ ;; c2 == toNFC(c1) == toNFC(c2) == toNFC(c3)
+ (equal nfc (ucs-normalize-tests--normalize NFC source))
+ (equal nfc (ucs-normalize-tests--normalize NFC nfc))
+ (equal nfc (ucs-normalize-tests--normalize NFC nfd))
+ ;; c4 == toNFC(c4) == toNFC(c5)
+ (equal nfkc (ucs-normalize-tests--normalize NFC nfkc))
+ (equal nfkc (ucs-normalize-tests--normalize NFC nfkd))
+
+ ;; c3 == toNFD(c1) == toNFD(c2) == toNFD(c3)
+ (equal nfd (ucs-normalize-tests--normalize NFD source))
+ (equal nfd (ucs-normalize-tests--normalize NFD nfc))
+ (equal nfd (ucs-normalize-tests--normalize NFD nfd))
+ ;; c5 == toNFD(c4) == toNFD(c5)
+ (equal nfkd (ucs-normalize-tests--normalize NFD nfkc))
+ (equal nfkd (ucs-normalize-tests--normalize NFD nfkd))
+
+ ;; c4 == toNFKC(c1) == toNFKC(c2) == toNFKC(c3) == toNFKC(c4) == toNFKC(c5)
+ (equal nfkc (ucs-normalize-tests--normalize NFKC source))
+ (equal nfkc (ucs-normalize-tests--normalize NFKC nfc))
+ (equal nfkc (ucs-normalize-tests--normalize NFKC nfd))
+ (equal nfkc (ucs-normalize-tests--normalize NFKC nfkc))
+ (equal nfkc (ucs-normalize-tests--normalize NFKC nfkd))
+
+ ;; c5 == toNFKD(c1) == toNFKD(c2) == toNFKD(c3) == toNFKD(c4) == toNFKD(c5)
+ (equal nfkd (ucs-normalize-tests--normalize NFKD source))
+ (equal nfkd (ucs-normalize-tests--normalize NFKD nfc))
+ (equal nfkd (ucs-normalize-tests--normalize NFKD nfd))
+ (equal nfkd (ucs-normalize-tests--normalize NFKD nfkc))
+ (equal nfkd (ucs-normalize-tests--normalize NFKD nfkd)))))
+
+(defun ucs-normalize-tests--invariants-rule2-hold-p (char)
+ "Check 2nd conformance rule.
+For every code point X assigned in this version of Unicode that is not specifically
+listed in Part 1, the following invariants must be true for all conformant
+implementations:
+
+ X == toNFC(X) == toNFD(X) == toNFKC(X) == toNFKD(X)"
+ (let ((X (string char)))
+ (and (equal X (ucs-normalize-tests--normalize NFC X))
+ (equal X (ucs-normalize-tests--normalize NFD X))
+ (equal X (ucs-normalize-tests--normalize NFKC X))
+ (equal X (ucs-normalize-tests--normalize NFKD X)))))
+
+(cl-defun ucs-normalize-tests--invariants-failing-for-part (part &optional skip-lines &key progress-str)
+ "Returns a list of failed line numbers."
+ (with-temp-buffer
+ (insert-file-contents ucs-normalize-test-data-file)
+ (let ((beg-line (progn (search-forward (format "@Part%d" part))
+ (forward-line)
+ (line-number-at-pos)))
+ (end-line (progn (or (search-forward (format "@Part%d" (1+ part)) nil t)
+ (goto-char (point-max)))
+ (line-number-at-pos))))
+ (goto-char (point-min))
+ (forward-line (1- beg-line))
+ (cl-loop with reporter = (if progress-str (make-progress-reporter
+ progress-str beg-line end-line
+ 0 nil 0.5))
+ for line from beg-line to (1- end-line)
+ unless (or (= (following-char) ?#)
+ (ucs-normalize-tests--invariants-hold-p
+ (ucs-normalize-tests--parse-column)
+ (ucs-normalize-tests--parse-column)
+ (ucs-normalize-tests--parse-column)
+ (ucs-normalize-tests--parse-column)
+ (ucs-normalize-tests--parse-column))
+ (memq line skip-lines))
+ collect line
+ do (forward-line)
+ if reporter do (progress-reporter-update reporter line)))))
+
+(defun ucs-normalize-tests--invariants-failing-for-lines (lines)
+ "Returns a list of failed line numbers."
+ (with-temp-buffer
+ (insert-file-contents ucs-normalize-test-data-file)
+ (goto-char (point-min))
+ (cl-loop for prev-line = 1 then line
+ for line in lines
+ do (forward-line (- line prev-line))
+ unless (ucs-normalize-tests--invariants-hold-p
+ (ucs-normalize-tests--parse-column)
+ (ucs-normalize-tests--parse-column)
+ (ucs-normalize-tests--parse-column)
+ (ucs-normalize-tests--parse-column)
+ (ucs-normalize-tests--parse-column))
+ collect line)))
+
+(ert-deftest ucs-normalize-part0 ()
+ (should-not (ucs-normalize-tests--invariants-failing-for-part 0)))
+
+(defconst ucs-normalize-tests--failing-lines-part1
+ (list 15131 15132 15133 15134 15135 15136 15137 15138
+ 15139
+ 16149 16150 16151 16152 16153 16154 16155 16156
+ 16157 16158 16159 16160 16161 16162 16163 16164
+ 16165 16166 16167 16168 16169 16170 16171 16172
+ 16173 16174 16175 16176 16177 16178 16179 16180
+ 16181 16182 16183 16184 16185 16186 16187 16188
+ 16189 16190 16191 16192 16193 16194 16195 16196
+ 16197 16198 16199 16200 16201 16202 16203 16204
+ 16205 16206 16207 16208 16209 16210 16211 16212
+ 16213 16214 16215 16216 16217 16218 16219 16220
+ 16221 16222 16223 16224 16225 16226 16227 16228
+ 16229 16230 16231 16232 16233 16234 16235 16236
+ 16237 16238 16239 16240 16241 16242 16243 16244
+ 16245 16246 16247 16248 16249 16250 16251 16252
+ 16253 16254 16255 16256 16257 16258 16259 16260
+ 16261 16262 16263 16264 16265 16266 16267 16268
+ 16269 16270 16271 16272 16273 16274 16275 16276
+ 16277 16278 16279 16280 16281 16282 16283 16284
+ 16285 16286 16287 16288 16289))
+
+;; Keep a record of failures, for consulting afterwards (the ert
+;; backtrace only shows a truncated version of these lists).
+(defvar ucs-normalize-tests--part1-rule1-failed-lines nil
+ "A list of line numbers.")
+(defvar ucs-normalize-tests--part1-rule2-failed-chars nil
+ "A list of code points.")
+
+(defun ucs-normalize-tests--part1-rule2 (chars-part1)
+ (let ((reporter (make-progress-reporter "UCS Normalize Test Part1, rule 2"
+ 0 (max-char)))
+ (failed-chars nil))
+ (map-char-table
+ (lambda (char-range listed-in-part)
+ (unless (eq listed-in-part 1)
+ (if (characterp char-range)
+ (progn (unless (ucs-normalize-tests--invariants-rule2-hold-p char-range)
+ (push char-range failed-chars))
+ (progress-reporter-update reporter char-range))
+ (cl-loop for char from (car char-range) to (cdr char-range)
+ unless (ucs-normalize-tests--invariants-rule2-hold-p char)
+ do (push char failed-chars)
+ do (progress-reporter-update reporter char)))))
+ chars-part1)
+ (progress-reporter-done reporter)
+ failed-chars))
+
+(ert-deftest ucs-normalize-part1 ()
+ :tags '(:expensive-test)
+ ;; This takes a long time, so make sure we're compiled.
+ (dolist (fun '(ucs-normalize-tests--part1-rule2
+ ucs-normalize-tests--invariants-failing-for-part
+ ucs-normalize-tests--invariants-hold-p
+ ucs-normalize-tests--invariants-rule2-hold-p))
+ (or (byte-code-function-p (symbol-function fun))
+ (byte-compile fun)))
+ (let ((ucs-normalize-tests--chars-part1 (make-char-table 'ucs-normalize-tests t)))
+ (should-not
+ (setq ucs-normalize-tests--part1-rule1-failed-lines
+ (ucs-normalize-tests--invariants-failing-for-part
+ 1 ucs-normalize-tests--failing-lines-part1
+ :progress-str "UCS Normalize Test Part1, rule 1")))
+ (should-not (setq ucs-normalize-tests--part1-rule2-failed-chars
+ (ucs-normalize-tests--part1-rule2
+ ucs-normalize-tests--chars-part1)))))
+
+(ert-deftest ucs-normalize-part1-failing ()
+ :expected-result :failed
+ (skip-unless ucs-normalize-tests--failing-lines-part1)
+ (should-not
+ (ucs-normalize-tests--invariants-failing-for-lines
+ ucs-normalize-tests--failing-lines-part1)))
+
+(defconst ucs-normalize-tests--failing-lines-part2
+ (list 18328 18330 18332 18334 18336 18338 18340 18342
+ 18344 18346 18348 18350 18352 18354 18356 18358
+ 18360 18362 18364 18366 18368 18370 18372 18374
+ 18376 18378 18380 18382 18384 18386 18388 18390
+ 18392 18394 18396 18398 18400 18402 18404 18406
+ 18408 18410 18412 18414 18416 18418 18420 18422
+ 18424 18426 18494 18496 18498 18500 18502 18504
+ 18506 18508 18510 18512 18514 18516 18518 18520
+ 18522 18524 18526 18528 18530 18532 18534 18536
+ 18538 18540 18542 18544 18546 18548 18550 18552
+ 18554 18556 18558 18560 18562 18564 18566 18568
+ 18570 18572 18574 18576 18578 18580 18582 18584
+ 18586 18588 18590 18592 18594 18596))
+
+(ert-deftest ucs-normalize-part2 ()
+ :tags '(:expensive-test)
+ (should-not
+ (ucs-normalize-tests--invariants-failing-for-part
+ 2 ucs-normalize-tests--failing-lines-part2
+ :progress-str "UCS Normalize Test Part2")))
+
+(ert-deftest ucs-normalize-part2-failing ()
+ :expected-result :failed
+ (skip-unless ucs-normalize-tests--failing-lines-part2)
+ (should-not
+ (ucs-normalize-tests--invariants-failing-for-lines
+ ucs-normalize-tests--failing-lines-part2)))
+
+(ert-deftest ucs-normalize-part3 ()
+ (should-not
+ (ucs-normalize-tests--invariants-failing-for-part 3)))
+
+;;; ucs-normalize-tests.el ends here
diff --git a/test/automated/isearch-tests.el b/test/lisp/isearch-tests.el
index 48c342403c..48c342403c 100644
--- a/test/automated/isearch-tests.el
+++ b/test/lisp/isearch-tests.el
diff --git a/test/lisp/jit-lock-tests.el b/test/lisp/jit-lock-tests.el
new file mode 100644
index 0000000000..dcb6936e32
--- /dev/null
+++ b/test/lisp/jit-lock-tests.el
@@ -0,0 +1,60 @@
+;;; jit-lock-tests.el --- tests for jit-lock
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Dmitry Gutov <dgutov@yandex.ru>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'jit-lock)
+(require 'ert-x)
+
+(defun jit-lock-tests--setup-buffer ()
+ (setq font-lock-defaults '(nil t))
+ (let (noninteractive)
+ (font-lock-mode)))
+
+(ert-deftest jit-lock-fontify-now-fontifies-a-new-buffer ()
+ (ert-with-test-buffer (:name "xxx")
+ (jit-lock-tests--setup-buffer)
+ (insert "xyz")
+ (jit-lock-fontify-now (point-min) (point-max))
+ (should-not (text-property-not-all (point-min) (point-max) 'fontified t))))
+
+(ert-deftest jit-lock-fontify-now-mends-the-gaps ()
+ (ert-with-test-buffer (:name "xxx")
+ (jit-lock-tests--setup-buffer)
+ (insert "aaabbbcccddd")
+ (with-silent-modifications
+ (put-text-property 1 4 'fontified t)
+ (put-text-property 7 10 'fontified t))
+ (jit-lock-fontify-now (point-min) (point-max))
+ (should-not (text-property-not-all (point-min) (point-max) 'fontified t))))
+
+(ert-deftest jit-lock-fontify-now-does-not-refontify-unnecessarily ()
+ (ert-with-test-buffer (:name "xxx")
+ (setq font-lock-defaults
+ (list '(((lambda () (error "Don't call me")))) t))
+ (let (noninteractive)
+ (font-lock-mode))
+ (insert "aaa")
+ (with-silent-modifications
+ (put-text-property (point-min) (point-max) 'fontified t))
+ (jit-lock-fontify-now (point-min) (point-max))))
diff --git a/test/automated/json-tests.el b/test/lisp/json-tests.el
index 78cebb45ee..78cebb45ee 100644
--- a/test/automated/json-tests.el
+++ b/test/lisp/json-tests.el
diff --git a/test/automated/bytecomp-tests.el b/test/lisp/legacy/bytecomp-tests.el
index 48211f03ba..48211f03ba 100644
--- a/test/automated/bytecomp-tests.el
+++ b/test/lisp/legacy/bytecomp-tests.el
diff --git a/test/automated/coding-tests.el b/test/lisp/legacy/coding-tests.el
index cba8c7bc25..772c873551 100644
--- a/test/automated/coding-tests.el
+++ b/test/lisp/legacy/coding-tests.el
@@ -48,3 +48,11 @@
(let ((coding-system-for-write (intern "\"us-ascii\"")))
(write-region "some text" nil test-file))))
(coding-tests-remove-files)))
+
+;; See issue #5251.
+(ert-deftest ert-test-unibyte-buffer-dos-eol-decode ()
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (insert (encode-coding-string "ã‚" 'euc-jp) "\xd" "\n")
+ (decode-coding-region (point-min) (point-max) 'euc-jp-dos)
+ (should-not (string-match-p "\^M" (buffer-string)))))
diff --git a/test/automated/core-elisp-tests.el b/test/lisp/legacy/core-elisp-tests.el
index b44bb37cc4..b44bb37cc4 100644
--- a/test/automated/core-elisp-tests.el
+++ b/test/lisp/legacy/core-elisp-tests.el
diff --git a/test/automated/decoder-tests.el b/test/lisp/legacy/decoder-tests.el
index 5699fec7d1..5699fec7d1 100644
--- a/test/automated/decoder-tests.el
+++ b/test/lisp/legacy/decoder-tests.el
diff --git a/test/automated/files.el b/test/lisp/legacy/files-tests.el
index 3c6f61b792..3c6f61b792 100644
--- a/test/automated/files.el
+++ b/test/lisp/legacy/files-tests.el
diff --git a/test/automated/font-parse-tests.el b/test/lisp/legacy/font-parse-tests.el
index 6274253360..9f730d3148 100644
--- a/test/automated/font-parse-tests.el
+++ b/test/lisp/legacy/font-parse-tests.el
@@ -32,6 +32,7 @@
(defvar font-parse-tests--data
`((" " ,(intern " ") nil nil nil nil)
("Monospace" Monospace nil nil nil nil)
+ ("Monospace Serif" ,(intern "Monospace Serif") nil nil nil nil)
("Foo1" Foo1 nil nil nil nil)
("12" nil 12.0 nil nil nil)
("12 " ,(intern "12 ") nil nil nil nil)
diff --git a/test/automated/lexbind-tests.el b/test/lisp/legacy/lexbind-tests.el
index 3bf8c1361a..3bf8c1361a 100644
--- a/test/automated/lexbind-tests.el
+++ b/test/lisp/legacy/lexbind-tests.el
diff --git a/test/automated/occur-tests.el b/test/lisp/legacy/occur-tests.el
index da45d5f650..da45d5f650 100644
--- a/test/automated/occur-tests.el
+++ b/test/lisp/legacy/occur-tests.el
diff --git a/test/automated/process-tests.el b/test/lisp/legacy/process-tests.el
index 8554a287cc..8554a287cc 100644
--- a/test/automated/process-tests.el
+++ b/test/lisp/legacy/process-tests.el
diff --git a/test/automated/syntax-tests.el b/test/lisp/legacy/syntax-tests.el
index d4af80e8eb..d4af80e8eb 100644
--- a/test/automated/syntax-tests.el
+++ b/test/lisp/legacy/syntax-tests.el
diff --git a/test/automated/textprop-tests.el b/test/lisp/legacy/textprop-tests.el
index 397ef28c03..397ef28c03 100644
--- a/test/automated/textprop-tests.el
+++ b/test/lisp/legacy/textprop-tests.el
diff --git a/test/automated/undo-tests.el b/test/lisp/legacy/undo-tests.el
index b1c786993e..b1c786993e 100644
--- a/test/automated/undo-tests.el
+++ b/test/lisp/legacy/undo-tests.el
diff --git a/test/automated/cl-seq-tests.el b/test/lisp/mail/rmail-tests.el
index d2eb412eee..2f18372146 100644
--- a/test/automated/cl-seq-tests.el
+++ b/test/lisp/mail/rmail-tests.el
@@ -1,9 +1,7 @@
-;;; cl-seq-tests.el --- Tests for cl-seq.el functionality -*- lexical-binding: t; -*-
+;;; rmail-tests.el --- Test suite. -*- lexical-binding: t -*-
;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
-;; Author: Nicolas Richard <youngfrog@members.fsf.org>
-
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
@@ -19,24 +17,19 @@
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; Commentary:
-
;;; Code:
-
(require 'ert)
-(require 'cl-seq)
-
-(ert-deftest cl-union-test-00 ()
- (let ((str1 "foo")
- (str2 (make-string 3 ?o)))
- ;; Emacs may make two string literals eql when reading.
- (aset str2 0 ?f)
- (should (not (eql str1 str2)))
- (should (equal str1 str2))
- (should (equal (cl-union (list str1) (list str2))
- (list str2)))
- (should (equal (cl-union (list str1) (list str2) :test 'eql)
- (list str1 str2)))))
-
-(provide 'cl-seq-tests)
-;;; cl-seq-tests.el ends here
+(require 'rmail)
+
+
+(ert-deftest rmail-autoload ()
+ "Tests to see whether reftex-auc has been autoloaded"
+ (should
+ (fboundp 'rmail-edit-current-message))
+ (should
+ (autoloadp
+ (symbol-function
+ 'rmail-edit-current-message))))
+
+(provide 'rmail-tests)
+;; rmail-tests.el ends here
diff --git a/test/automated/man-tests.el b/test/lisp/man-tests.el
index b1cc443725..b1cc443725 100644
--- a/test/automated/man-tests.el
+++ b/test/lisp/man-tests.el
diff --git a/test/automated/completion-tests.el b/test/lisp/minibuffer-tests.el
index 0f2abf4567..0f2abf4567 100644
--- a/test/automated/completion-tests.el
+++ b/test/lisp/minibuffer-tests.el
diff --git a/test/lisp/mouse-tests.el b/test/lisp/mouse-tests.el
new file mode 100644
index 0000000000..204f5d3b8d
--- /dev/null
+++ b/test/lisp/mouse-tests.el
@@ -0,0 +1,50 @@
+;;; mouse-tests.el --- unit tests for mouse.el -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Philipp Stephani <phst@google.com>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Unit tests for lisp/mouse.el.
+
+;;; Code:
+
+(ert-deftest bug23288-use-return-value ()
+ "If ‘mouse-on-link-p’ returns a string, its first character is
+used."
+ (cl-letf ((last-input-event '(down-mouse-1 nil 1))
+ (unread-command-events '((mouse-1 nil 1)))
+ (mouse-1-click-follows-link t)
+ (mouse-1-click-in-non-selected-windows t)
+ ((symbol-function 'mouse-on-link-p) (lambda (_pos) "abc")))
+ (should-not (mouse--down-1-maybe-follows-link))
+ (should (equal unread-command-events '(?a)))))
+
+(ert-deftest bug23288-translate-to-mouse-2 ()
+ "If ‘mouse-on-link-p’ doesn’t return a string or vector,
+translate ‘mouse-1’ events into ‘mouse-2’ events."
+ (cl-letf ((last-input-event '(down-mouse-1 nil 1))
+ (unread-command-events '((mouse-1 nil 1)))
+ (mouse-1-click-follows-link t)
+ (mouse-1-click-in-non-selected-windows t)
+ ((symbol-function 'mouse-on-link-p) (lambda (_pos) t)))
+ (should-not (mouse--down-1-maybe-follows-link))
+ (should (equal unread-command-events '((mouse-2 nil 1))))))
+
+;;; mouse-tests.el ends here
diff --git a/test/automated/dbus-tests.el b/test/lisp/net/dbus-tests.el
index 12be163710..12be163710 100644
--- a/test/automated/dbus-tests.el
+++ b/test/lisp/net/dbus-tests.el
diff --git a/test/lisp/net/network-stream-tests.el b/test/lisp/net/network-stream-tests.el
new file mode 100644
index 0000000000..afffeeb193
--- /dev/null
+++ b/test/lisp/net/network-stream-tests.el
@@ -0,0 +1,294 @@
+;;; network-stream-tests.el --- tests for network processes -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Lars Ingebrigtsen <larsi@gnus.org>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+
+;;; Code:
+
+(require 'gnutls)
+
+(ert-deftest make-local-unix-server ()
+ (skip-unless (featurep 'make-network-process '(:family local)))
+ (let* ((file (make-temp-name "/tmp/server-test"))
+ (server
+ (make-network-process
+ :name "server"
+ :server t
+ :buffer (get-buffer-create "*server*")
+ :noquery t
+ :family 'local
+ :service file)))
+ (should (equal (process-contact server :local) file))
+ (delete-file (process-contact server :local))))
+
+(ert-deftest make-ipv4-tcp-server-with-unspecified-port ()
+ (let ((server
+ (make-network-process
+ :name "server"
+ :server t
+ :noquery t
+ :family 'ipv4
+ :service t
+ :host 'local)))
+ (should (and (arrayp (process-contact server :local))
+ (numberp (aref (process-contact server :local) 4))
+ (> (aref (process-contact server :local) 4) 0)))
+ (delete-process server)))
+
+(ert-deftest make-ipv4-tcp-server-with-specified-port ()
+ (let ((server
+ (make-network-process
+ :name "server"
+ :server t
+ :noquery t
+ :family 'ipv4
+ :service 57869
+ :host 'local)))
+ (should (and (arrayp (process-contact server :local))
+ (= (aref (process-contact server :local) 4) 57869)))
+ (delete-process server)))
+
+(defun make-server (host)
+ (make-network-process
+ :name "server"
+ :server t
+ :noquery t
+ :family 'ipv4
+ :coding 'raw-text-unix
+ :buffer (get-buffer-create "*server*")
+ :service t
+ :sentinel 'server-sentinel
+ :filter 'server-process-filter
+ :host host))
+
+(defun server-sentinel (_proc _msg)
+ )
+
+(defun server-process-filter (proc string)
+ (message "Received %s" string)
+ (let ((prev (process-get proc 'previous-string)))
+ (when prev
+ (setq string (concat prev string))
+ (process-put proc 'previous-string nil)))
+ (if (and (not (string-match "\n" string))
+ (> (length string) 0))
+ (process-put proc 'previous-string string))
+ (let ((command (split-string string)))
+ (cond
+ ((equal (car command) "echo")
+ (process-send-string proc (concat (cadr command) "\n")))
+ (t
+ ))))
+
+(ert-deftest echo-server-with-dns ()
+ (let* ((server (make-server (system-name)))
+ (port (aref (process-contact server :local) 4))
+ (proc (make-network-process :name "foo"
+ :buffer (generate-new-buffer "*foo*")
+ :host (system-name)
+ :service port)))
+ (with-current-buffer (process-buffer proc)
+ (process-send-string proc "echo foo")
+ (sleep-for 0.1)
+ (should (equal (buffer-string) "foo\n")))
+ (delete-process server)))
+
+(ert-deftest echo-server-with-localhost ()
+ (let* ((server (make-server 'local))
+ (port (aref (process-contact server :local) 4))
+ (proc (make-network-process :name "foo"
+ :buffer (generate-new-buffer "*foo*")
+ :host "localhost"
+ :service port)))
+ (with-current-buffer (process-buffer proc)
+ (process-send-string proc "echo foo")
+ (sleep-for 0.1)
+ (should (equal (buffer-string) "foo\n")))
+ (delete-process server)))
+
+(ert-deftest echo-server-with-ip ()
+ (let* ((server (make-server 'local))
+ (port (aref (process-contact server :local) 4))
+ (proc (make-network-process :name "foo"
+ :buffer (generate-new-buffer "*foo*")
+ :host "127.0.0.1"
+ :service port)))
+ (with-current-buffer (process-buffer proc)
+ (process-send-string proc "echo foo")
+ (sleep-for 0.1)
+ (should (equal (buffer-string) "foo\n")))
+ (delete-process server)))
+
+(ert-deftest echo-server-nowait ()
+ (let* ((server (make-server 'local))
+ (port (aref (process-contact server :local) 4))
+ (proc (make-network-process :name "foo"
+ :buffer (generate-new-buffer "*foo*")
+ :host "localhost"
+ :nowait t
+ :family 'ipv4
+ :service port))
+ (times 0))
+ (should (eq (process-status proc) 'connect))
+ (while (and (eq (process-status proc) 'connect)
+ (< (setq times (1+ times)) 10))
+ (sit-for 0.1))
+ (should-not (eq (process-status proc) 'connect))
+ (with-current-buffer (process-buffer proc)
+ (process-send-string proc "echo foo")
+ (sleep-for 0.1)
+ (should (equal (buffer-string) "foo\n")))
+ (delete-process server)))
+
+(defconst network-stream-tests--datadir
+ (expand-file-name "test/data/net" source-directory))
+
+(defun make-tls-server (port)
+ (start-process "gnutls" (generate-new-buffer "*tls*")
+ "gnutls-serv" "--http"
+ "--x509keyfile"
+ (concat network-stream-tests--datadir "/key.pem")
+ "--x509certfile"
+ (concat network-stream-tests--datadir "/cert.pem")
+ "--port" (format "%s" port)))
+
+(ert-deftest connect-to-tls-ipv4-wait ()
+ (skip-unless (executable-find "gnutls-serv"))
+ (skip-unless (gnutls-available-p))
+ (let ((server (make-tls-server 44332))
+ (times 0)
+ proc status)
+ (unwind-protect
+ (progn
+ (sleep-for 1)
+ (with-current-buffer (process-buffer server)
+ (message "gnutls-serv: %s" (buffer-string)))
+
+ ;; It takes a while for gnutls-serv to start.
+ (while (and (null (ignore-errors
+ (setq proc (make-network-process
+ :name "bar"
+ :buffer (generate-new-buffer "*foo*")
+ :host "localhost"
+ :service 44332))))
+ (< (setq times (1+ times)) 10))
+ (sit-for 0.1))
+ (should proc)
+ (gnutls-negotiate :process proc
+ :type 'gnutls-x509pki
+ :hostname "localhost"))
+ (if (process-live-p server) (delete-process server)))
+ (setq status (gnutls-peer-status proc))
+ (should (consp status))
+ (delete-process proc)
+ ;; This sleep-for is needed for the native MS-Windows build. If
+ ;; it is removed, the next test mysteriously fails because the
+ ;; initial part of the echo is not received.
+ (sleep-for 0.1)
+ (let ((issuer (plist-get (plist-get status :certificate) :issuer)))
+ (should (stringp issuer))
+ (setq issuer (split-string issuer ","))
+ (should (equal (nth 3 issuer) "O=Emacs Test Servicess LLC")))))
+
+(ert-deftest connect-to-tls-ipv4-nowait ()
+ (skip-unless (executable-find "gnutls-serv"))
+ (skip-unless (gnutls-available-p))
+ (let ((server (make-tls-server 44331))
+ (times 0)
+ proc status)
+ (unwind-protect
+ (progn
+ (sleep-for 1)
+ (with-current-buffer (process-buffer server)
+ (message "gnutls-serv: %s" (buffer-string)))
+
+ ;; It takes a while for gnutls-serv to start.
+ (while (and (null (ignore-errors
+ (setq proc (make-network-process
+ :name "bar"
+ :buffer (generate-new-buffer "*foo*")
+ :nowait t
+ :tls-parameters
+ (cons 'gnutls-x509pki
+ (gnutls-boot-parameters
+ :hostname "localhost"))
+ :host "localhost"
+ :service 44331))))
+ (< (setq times (1+ times)) 10))
+ (sit-for 0.1))
+ (should proc)
+ (setq times 0)
+ (while (and (eq (process-status proc) 'connect)
+ (< (setq times (1+ times)) 10))
+ (sit-for 0.1))
+ (should-not (eq (process-status proc) 'connect)))
+ (if (process-live-p server) (delete-process server)))
+ (setq status (gnutls-peer-status proc))
+ (should (consp status))
+ (delete-process proc)
+ (let ((issuer (plist-get (plist-get status :certificate) :issuer)))
+ (should (stringp issuer))
+ (setq issuer (split-string issuer ","))
+ (should (equal (nth 3 issuer) "O=Emacs Test Servicess LLC")))))
+
+(ert-deftest connect-to-tls-ipv6-nowait ()
+ (skip-unless (executable-find "gnutls-serv"))
+ (skip-unless (gnutls-available-p))
+ (skip-unless (not (eq system-type 'windows-nt)))
+ (skip-unless (featurep 'make-network-process '(:family ipv6)))
+ (let ((server (make-tls-server 44333))
+ (times 0)
+ proc status)
+ (unwind-protect
+ (progn
+ (sleep-for 1)
+ (with-current-buffer (process-buffer server)
+ (message "gnutls-serv: %s" (buffer-string)))
+
+ ;; It takes a while for gnutls-serv to start.
+ (while (and (null (ignore-errors
+ (setq proc (make-network-process
+ :name "bar"
+ :buffer (generate-new-buffer "*foo*")
+ :family 'ipv6
+ :nowait t
+ :tls-parameters
+ (cons 'gnutls-x509pki
+ (gnutls-boot-parameters
+ :hostname "localhost"))
+ :host "::1"
+ :service 44333))))
+ (< (setq times (1+ times)) 10))
+ (sit-for 0.1))
+ (should proc)
+ (while (eq (process-status proc) 'connect)
+ (sit-for 0.1)))
+ (if (process-live-p server) (delete-process server)))
+ (setq status (gnutls-peer-status proc))
+ (should (consp status))
+ (delete-process proc)
+ (let ((issuer (plist-get (plist-get status :certificate) :issuer)))
+ (should (stringp issuer))
+ (setq issuer (split-string issuer ","))
+ (should (equal (nth 3 issuer) "O=Emacs Test Servicess LLC")))))
+
+;;; network-stream-tests.el ends here
diff --git a/test/automated/newsticker-tests.el b/test/lisp/net/newsticker-tests.el
index d8531083e6..d8531083e6 100644
--- a/test/automated/newsticker-tests.el
+++ b/test/lisp/net/newsticker-tests.el
diff --git a/test/automated/sasl-scram-rfc-tests.el b/test/lisp/net/sasl-scram-rfc-tests.el
index 130de24048..130de24048 100644
--- a/test/automated/sasl-scram-rfc-tests.el
+++ b/test/lisp/net/sasl-scram-rfc-tests.el
diff --git a/test/lisp/net/shr-tests.el b/test/lisp/net/shr-tests.el
new file mode 100644
index 0000000000..501916fc8b
--- /dev/null
+++ b/test/lisp/net/shr-tests.el
@@ -0,0 +1,58 @@
+;;; network-stream-tests.el --- tests for network processes -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Lars Ingebrigtsen <larsi@gnus.org>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'shr)
+
+(defconst shr-tests--datadir
+ (expand-file-name "test/data/shr" source-directory))
+
+(defun shr-test (name)
+ (with-temp-buffer
+ (insert-file-contents (format (concat shr-tests--datadir "/%s.html") name))
+ (let ((dom (libxml-parse-html-region (point-min) (point-max)))
+ (shr-width 80)
+ (shr-use-fonts nil))
+ (erase-buffer)
+ (shr-insert-document dom)
+ (cons (buffer-substring-no-properties (point-min) (point-max))
+ (with-temp-buffer
+ (insert-file-contents
+ (format (concat shr-tests--datadir "/%s.txt") name))
+ (while (re-search-forward "%\\([0-9A-F][0-9A-F]\\)" nil t)
+ (replace-match (string (string-to-number (match-string 1) 16))
+ t t))
+ (buffer-string))))))
+
+(ert-deftest rendering ()
+ (skip-unless (fboundp 'libxml-parse-html-region))
+ (dolist (file (directory-files shr-tests--datadir nil "\\.html\\'"))
+ (let* ((name (replace-regexp-in-string "\\.html\\'" "" file))
+ (result (shr-test name)))
+ (unless (equal (car result) (cdr result))
+ (should (not (list name (car result) (cdr result))))))))
+
+(require 'shr)
+
+;;; shr-stream-tests.el ends here
diff --git a/test/automated/tramp-tests.el b/test/lisp/net/tramp-tests.el
index 34d8d6ad49..5d9d3a039b 100644
--- a/test/automated/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -115,11 +115,10 @@ being the result.")
(defmacro tramp--instrument-test-case (verbose &rest body)
"Run BODY with `tramp-verbose' equal VERBOSE.
Print the the content of the Tramp debug buffer, if BODY does not
-eval properly in `should', `should-not' or `should-error'. BODY
-shall not contain a timeout."
+eval properly in `should' or `should-not'. `should-error' is not
+handled properly. BODY shall not contain a timeout."
(declare (indent 1) (debug (natnump body)))
`(let ((tramp-verbose ,verbose)
- (tramp-message-show-message t)
(tramp-debug-on-error t)
(debug-ignored-errors
(cons "^make-symbolic-link not supported$" debug-ignored-errors)))
@@ -637,7 +636,27 @@ This checks also `file-name-as-directory', `file-name-directory',
(should
(string-equal (file-name-nondirectory "/method:host:/path/to/file/") ""))
(should-not
- (unhandled-file-name-directory "/method:host:/path/to/file")))
+ (unhandled-file-name-directory "/method:host:/path/to/file"))
+
+ ;; Bug#10085.
+ (when (tramp--test-enabled) ;; Packages like tramp-gvfs.el might be disabled.
+ (dolist (n-e '(nil t))
+ ;; We must clear `tramp-default-method'. On hydra, it is "ftp",
+ ;; which ruins the tests.
+ (let ((non-essential n-e)
+ tramp-default-method)
+ (dolist (file
+ `(,(file-remote-p tramp-test-temporary-file-directory 'method)
+ ,(file-remote-p tramp-test-temporary-file-directory 'host)))
+ (unless (zerop (length file))
+ (setq file (format "/%s:" file))
+ (should (string-equal (directory-file-name file) file))
+ (should
+ (string-equal
+ (file-name-as-directory file)
+ (if (tramp-completion-mode-p) file (concat file "./"))))
+ (should (string-equal (file-name-directory file) file))
+ (should (string-equal (file-name-nondirectory file) ""))))))))
(ert-deftest tramp-test07-file-exists-p ()
"Check `file-exist-p', `write-region' and `delete-file'."
@@ -913,7 +932,7 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(make-directory tmp-name1)
(should (file-directory-p tmp-name1))
(should (file-accessible-directory-p tmp-name1))
- (should-error (make-directory tmp-name2) :type 'file-error)
+ (should-error (make-directory tmp-name2))
(make-directory tmp-name2 'parents)
(should (file-directory-p tmp-name2))
(should (file-accessible-directory-p tmp-name2)))
@@ -933,19 +952,16 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(should-not (file-directory-p tmp-name))
;; Delete non-empty directory.
(make-directory tmp-name)
+ (should (file-directory-p tmp-name))
(write-region "foo" nil (expand-file-name "bla" tmp-name))
- (should-error (delete-directory tmp-name) :type 'file-error)
+ (should (file-exists-p (expand-file-name "bla" tmp-name)))
+ (should-error (delete-directory tmp-name))
(delete-directory tmp-name 'recursive)
(should-not (file-directory-p tmp-name))))
(ert-deftest tramp-test15-copy-directory ()
"Check `copy-directory'."
(skip-unless (tramp--test-enabled))
- (skip-unless
- (not
- (eq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- 'tramp-smb-file-name-handler)))
(let* ((tmp-name1 (tramp--test-make-temp-name))
(tmp-name2 (tramp--test-make-temp-name))
@@ -954,6 +970,8 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(tmp-name4 (expand-file-name "foo" tmp-name1))
(tmp-name5 (expand-file-name "foo" tmp-name2))
(tmp-name6 (expand-file-name "foo" tmp-name3)))
+
+ ;; Copy complete directory.
(unwind-protect
(progn
;; Copy empty directory.
@@ -972,6 +990,31 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
;; Cleanup.
(ignore-errors
(delete-directory tmp-name1 'recursive)
+ (delete-directory tmp-name2 'recursive)))
+
+ ;; Copy directory contents.
+ (unwind-protect
+ (progn
+ ;; Copy empty directory.
+ (make-directory tmp-name1)
+ (write-region "foo" nil tmp-name4)
+ (should (file-directory-p tmp-name1))
+ (should (file-exists-p tmp-name4))
+ (copy-directory tmp-name1 tmp-name2 nil 'parents 'contents)
+ (should (file-directory-p tmp-name2))
+ (should (file-exists-p tmp-name5))
+ ;; Target directory does exist already.
+ (delete-file tmp-name5)
+ (should-not (file-exists-p tmp-name5))
+ (copy-directory tmp-name1 tmp-name2 nil 'parents 'contents)
+ (should (file-directory-p tmp-name2))
+ (should (file-exists-p tmp-name5))
+ (should-not (file-directory-p tmp-name3))
+ (should-not (file-exists-p tmp-name6)))
+
+ ;; Cleanup.
+ (ignore-errors
+ (delete-directory tmp-name1 'recursive)
(delete-directory tmp-name2 'recursive)))))
(ert-deftest tramp-test16-directory-files ()
@@ -1049,7 +1092,8 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(ert-deftest tramp-test18-file-attributes ()
"Check `file-attributes'.
-This tests also `file-readable-p' and `file-regular-p'."
+This tests also `file-readable-p', `file-regular-p' and
+`file-ownership-preserved-p'."
(skip-unless (tramp--test-enabled))
;; We must use `file-truename' for the temporary directory, because
@@ -1069,14 +1113,20 @@ This tests also `file-readable-p' and `file-regular-p'."
attr)
(unwind-protect
(progn
+ ;; `file-ownership-preserved-p' should return t for
+ ;; non-existing files. It is implemented only in tramp-sh.el.
+ (when (tramp--test-sh-p)
+ (should (file-ownership-preserved-p tmp-name1 'group)))
(write-region "foo" nil tmp-name1)
(should (file-exists-p tmp-name1))
- (setq attr (file-attributes tmp-name1))
- (should (consp attr))
- (should (file-exists-p tmp-name1))
(should (file-readable-p tmp-name1))
(should (file-regular-p tmp-name1))
+ (when (tramp--test-sh-p)
+ (should (file-ownership-preserved-p tmp-name1 'group)))
+
;; We do not test inodes and device numbers.
+ (setq attr (file-attributes tmp-name1))
+ (should (consp attr))
(should (null (car attr)))
(should (numberp (nth 1 attr))) ;; Link.
(should (numberp (nth 2 attr))) ;; Uid.
@@ -1096,9 +1146,13 @@ This tests also `file-readable-p' and `file-regular-p'."
(condition-case err
(progn
+ (when (tramp--test-sh-p)
+ (should (file-ownership-preserved-p tmp-name2 'group)))
(make-symbolic-link tmp-name1 tmp-name2)
(should (file-exists-p tmp-name2))
(should (file-symlink-p tmp-name2))
+ (when (tramp--test-sh-p)
+ (should (file-ownership-preserved-p tmp-name2 'group)))
(setq attr (file-attributes tmp-name2))
(should (string-equal
(car attr)
@@ -1125,11 +1179,15 @@ This tests also `file-readable-p' and `file-regular-p'."
(tramp-file-name-localname (tramp-dissect-file-name tmp-name3))))
(delete-file tmp-name2))
+ (when (tramp--test-sh-p)
+ (should (file-ownership-preserved-p tmp-name1 'group)))
(delete-file tmp-name1)
(make-directory tmp-name1)
(should (file-exists-p tmp-name1))
(should (file-readable-p tmp-name1))
(should-not (file-regular-p tmp-name1))
+ (when (tramp--test-sh-p)
+ (should (file-ownership-preserved-p tmp-name1 'group)))
(setq attr (file-attributes tmp-name1))
(should (eq (car attr) t)))
@@ -1185,13 +1243,7 @@ This tests also `file-readable-p' and `file-regular-p'."
"Check `file-modes'.
This tests also `file-executable-p', `file-writable-p' and `set-file-modes'."
(skip-unless (tramp--test-enabled))
- (skip-unless
- (not
- (memq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- '(tramp-adb-file-name-handler
- tramp-gvfs-file-name-handler
- tramp-smb-file-name-handler))))
+ (skip-unless (tramp--test-sh-p))
(let ((tmp-name (tramp--test-make-temp-name)))
(unwind-protect
@@ -1295,11 +1347,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(ert-deftest tramp-test22-file-times ()
"Check `set-file-times' and `file-newer-than-file-p'."
(skip-unless (tramp--test-enabled))
- (skip-unless
- (not
- (memq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- '(tramp-gvfs-file-name-handler tramp-smb-file-name-handler))))
+ (skip-unless (or (tramp--test-adb-p) (tramp--test-sh-p)))
(let ((tmp-name1 (tramp--test-make-temp-name))
(tmp-name2 (tramp--test-make-temp-name))
@@ -1353,25 +1401,85 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
"Check `file-name-completion' and `file-name-all-completions'."
(skip-unless (tramp--test-enabled))
- (let ((tmp-name (tramp--test-make-temp-name)))
- (unwind-protect
- (progn
- (make-directory tmp-name)
- (should (file-directory-p tmp-name))
- (write-region "foo" nil (expand-file-name "foo" tmp-name))
- (write-region "bar" nil (expand-file-name "bold" tmp-name))
- (make-directory (expand-file-name "boz" tmp-name))
- (should (equal (file-name-completion "fo" tmp-name) "foo"))
- (should (equal (file-name-completion "b" tmp-name) "bo"))
- (should
- (equal (file-name-completion "b" tmp-name 'file-directory-p) "boz/"))
- (should (equal (file-name-all-completions "fo" tmp-name) '("foo")))
- (should
- (equal (sort (file-name-all-completions "b" tmp-name) 'string-lessp)
- '("bold" "boz/"))))
+ (dolist (n-e '(nil t))
+ (let ((non-essential n-e)
+ (tmp-name (tramp--test-make-temp-name))
+ (method (file-remote-p tramp-test-temporary-file-directory 'method))
+ (host (file-remote-p tramp-test-temporary-file-directory 'host)))
- ;; Cleanup.
- (ignore-errors (delete-directory tmp-name 'recursive)))))
+ (unwind-protect
+ (progn
+ ;; Method and host name in completion mode. This kind of
+ ;; completion does not work on MS Windows.
+ (when (and (tramp-completion-mode-p)
+ (not (memq system-type '(cygwin windows-nt))))
+ (unless (zerop (length method))
+ (should
+ (member
+ (format "%s:" method)
+ (file-name-all-completions (substring method 0 1) "/"))))
+ (unless (zerop (length host))
+ (let ((tramp-default-method (or method tramp-default-method)))
+ (should
+ (member
+ (format "%s:" host)
+ (file-name-all-completions (substring host 0 1) "/")))))
+ (unless (or (zerop (length method)) (zerop (length host)))
+ (should
+ (member
+ (format "%s:" host)
+ (file-name-all-completions
+ (substring host 0 1) (format "/%s:" method))))))
+
+ ;; Local files.
+ (make-directory tmp-name)
+ (should (file-directory-p tmp-name))
+ (write-region "foo" nil (expand-file-name "foo" tmp-name))
+ (should (file-exists-p (expand-file-name "foo" tmp-name)))
+ (write-region "bar" nil (expand-file-name "bold" tmp-name))
+ (should (file-exists-p (expand-file-name "bold" tmp-name)))
+ (make-directory (expand-file-name "boz" tmp-name))
+ (should (file-directory-p (expand-file-name "boz" tmp-name)))
+ (should (equal (file-name-completion "fo" tmp-name) "foo"))
+ (should (equal (file-name-completion "foo" tmp-name) t))
+ (should (equal (file-name-completion "b" tmp-name) "bo"))
+ (should-not (file-name-completion "a" tmp-name))
+ (should
+ (equal
+ (file-name-completion "b" tmp-name 'file-directory-p) "boz/"))
+ (should (equal (file-name-all-completions "fo" tmp-name) '("foo")))
+ (should
+ (equal
+ (sort (file-name-all-completions "b" tmp-name) 'string-lessp)
+ '("bold" "boz/")))
+ (should-not (file-name-all-completions "a" tmp-name))
+ ;; `completion-regexp-list' restricts the completion to
+ ;; files which match all expressions in this list.
+ (let ((completion-regexp-list
+ `(,directory-files-no-dot-files-regexp "b")))
+ (should
+ (equal (file-name-completion "" tmp-name) "bo"))
+ (should
+ (equal
+ (sort (file-name-all-completions "" tmp-name) 'string-lessp)
+ '("bold" "boz/"))))
+ ;; `file-name-completion' ignores file names that end in
+ ;; any string in `completion-ignored-extensions'.
+ (let ((completion-ignored-extensions '(".ext")))
+ (write-region "foo" nil (expand-file-name "foo.ext" tmp-name))
+ (should (file-exists-p (expand-file-name "foo.ext" tmp-name)))
+ (should (equal (file-name-completion "fo" tmp-name) "foo"))
+ (should (equal (file-name-completion "foo" tmp-name) t))
+ (should (equal (file-name-completion "foo." tmp-name) "foo.ext"))
+ (should (equal (file-name-completion "foo.ext" tmp-name) t))
+ ;; `file-name-all-completions' is not affected.
+ (should
+ (equal
+ (sort (file-name-all-completions "" tmp-name) 'string-lessp)
+ '("../" "./" "bold" "boz/" "foo" "foo.ext")))))
+
+ ;; Cleanup.
+ (ignore-errors (delete-directory tmp-name 'recursive))))))
(ert-deftest tramp-test25-load ()
"Check `load'."
@@ -1397,11 +1505,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
"Check `process-file'."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (not
- (memq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- '(tramp-gvfs-file-name-handler tramp-smb-file-name-handler))))
+ (skip-unless (or (tramp--test-adb-p) (tramp--test-sh-p)))
(let* ((tmp-name (tramp--test-make-temp-name))
(fnnd (file-name-nondirectory tmp-name))
@@ -1420,7 +1524,8 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should (zerop (process-file "ls" nil t nil fnnd)))
;; `ls' could produce colorized output.
(goto-char (point-min))
- (while (re-search-forward tramp-color-escape-sequence-regexp nil t)
+ (while
+ (re-search-forward tramp-display-escape-sequence-regexp nil t)
(replace-match "" nil nil))
(should (string-equal (format "%s\n" fnnd) (buffer-string)))
(should-not (get-buffer-window (current-buffer) t))
@@ -1430,7 +1535,8 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should (zerop (process-file "ls" nil t t fnnd)))
;; `ls' could produce colorized output.
(goto-char (point-min))
- (while (re-search-forward tramp-color-escape-sequence-regexp nil t)
+ (while
+ (re-search-forward tramp-display-escape-sequence-regexp nil t)
(replace-match "" nil nil))
(should
(string-equal (format "%s\n%s\n" fnnd fnnd) (buffer-string)))
@@ -1444,13 +1550,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
"Check `start-file-process'."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (not
- (memq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- '(tramp-adb-file-name-handler
- tramp-gvfs-file-name-handler
- tramp-smb-file-name-handler))))
+ (skip-unless (tramp--test-sh-p))
(let ((default-directory tramp-test-temporary-file-directory)
(tmp-name (tramp--test-make-temp-name))
@@ -1465,7 +1565,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
;; Read output.
(with-timeout (10 (ert-fail "`start-file-process' timed out"))
(while (< (- (point-max) (point-min)) (length "foo"))
- (accept-process-output proc 1)))
+ (accept-process-output proc 0.1)))
(should (string-equal (buffer-string) "foo")))
;; Cleanup.
@@ -1483,7 +1583,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
;; Read output.
(with-timeout (10 (ert-fail "`start-file-process' timed out"))
(while (< (- (point-max) (point-min)) (length "foo"))
- (accept-process-output proc 1)))
+ (accept-process-output proc 0.1)))
(should (string-equal (buffer-string) "foo")))
;; Cleanup.
@@ -1504,7 +1604,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
;; Read output.
(with-timeout (10 (ert-fail "`start-file-process' timed out"))
(while (< (- (point-max) (point-min)) (length "foo"))
- (accept-process-output proc 1)))
+ (accept-process-output proc 0.1)))
(should (string-equal (buffer-string) "foo")))
;; Cleanup.
@@ -1514,13 +1614,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
"Check `shell-command'."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (not
- (memq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- '(tramp-adb-file-name-handler
- tramp-gvfs-file-name-handler
- tramp-smb-file-name-handler))))
+ (skip-unless (tramp--test-sh-p))
(let ((tmp-name (tramp--test-make-temp-name))
(default-directory tramp-test-temporary-file-directory)
@@ -1533,7 +1627,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(format "ls %s" (file-name-nondirectory tmp-name)) (current-buffer))
;; `ls' could produce colorized output.
(goto-char (point-min))
- (while (re-search-forward tramp-color-escape-sequence-regexp nil t)
+ (while (re-search-forward tramp-display-escape-sequence-regexp nil t)
(replace-match "" nil nil))
(should
(string-equal
@@ -1553,10 +1647,11 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(with-timeout (10 (ert-fail "`async-shell-command' timed out"))
(while (< (- (point-max) (point-min))
(1+ (length (file-name-nondirectory tmp-name))))
- (accept-process-output (get-buffer-process (current-buffer)) 1)))
+ (accept-process-output
+ (get-buffer-process (current-buffer)) 0.1)))
;; `ls' could produce colorized output.
(goto-char (point-min))
- (while (re-search-forward tramp-color-escape-sequence-regexp nil t)
+ (while (re-search-forward tramp-display-escape-sequence-regexp nil t)
(replace-match "" nil nil))
;; There might be a nasty "Process *Async Shell* finished" message.
(goto-char (point-min))
@@ -1582,10 +1677,11 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(with-timeout (10 (ert-fail "`async-shell-command' timed out"))
(while (< (- (point-max) (point-min))
(1+ (length (file-name-nondirectory tmp-name))))
- (accept-process-output (get-buffer-process (current-buffer)) 1)))
+ (accept-process-output
+ (get-buffer-process (current-buffer)) 0.1)))
;; `ls' could produce colorized output.
(goto-char (point-min))
- (while (re-search-forward tramp-color-escape-sequence-regexp nil t)
+ (while (re-search-forward tramp-display-escape-sequence-regexp nil t)
(replace-match "" nil nil))
;; There might be a nasty "Process *Async Shell* finished" message.
(goto-char (point-min))
@@ -1604,9 +1700,10 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(async-shell-command command (current-buffer))
;; Suppress nasty messages.
(set-process-sentinel (get-buffer-process (current-buffer)) nil)
- (while (get-buffer-process (current-buffer))
- (accept-process-output (get-buffer-process (current-buffer)) 0.1))
- (accept-process-output)
+ (with-timeout (10)
+ (while (get-buffer-process (current-buffer))
+ (accept-process-output (get-buffer-process (current-buffer)) 0.1)))
+ (accept-process-output nil 0.1)
(buffer-substring-no-properties (point-min) (point-max))))
;; This test is inspired by Bug#23952.
@@ -1614,10 +1711,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
"Check that remote processes set / unset environment variables properly."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (eq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- 'tramp-sh-file-name-handler))
+ (skip-unless (tramp--test-sh-p))
(dolist (this-shell-command-to-string
'(;; Synchronously.
@@ -1694,10 +1788,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
"Check `vc-registered'."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (eq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- 'tramp-sh-file-name-handler))
+ (skip-unless (tramp--test-sh-p))
(let* ((default-directory tramp-test-temporary-file-directory)
(tmp-name1 (tramp--test-make-temp-name))
@@ -1843,6 +1934,39 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(ignore-errors (delete-file tmp-name1))
(ignore-errors (delete-directory tmp-name2 'recursive)))))
+;; The functions have been introduced in Emacs 25.2.
+(ert-deftest tramp-test32-make-nearby-temp-file ()
+ "Check `make-nearby-temp-file' and `temporary-file-directory'."
+ (skip-unless (tramp--test-enabled))
+ (skip-unless
+ (and (fboundp 'make-nearby-temp-file) (fboundp 'temporary-file-directory)))
+
+ (let ((default-directory tramp-test-temporary-file-directory)
+ tmp-file)
+ ;; The remote host shall know a temporary file directory.
+ (should (stringp (temporary-file-directory)))
+ (should
+ (string-equal
+ (file-remote-p default-directory)
+ (file-remote-p (temporary-file-directory))))
+
+ ;; The temporary file shall be located on the remote host.
+ (setq tmp-file (make-nearby-temp-file "tramp-test"))
+ (should (file-exists-p tmp-file))
+ (should (file-regular-p tmp-file))
+ (should
+ (string-equal
+ (file-remote-p default-directory)
+ (file-remote-p tmp-file)))
+ (delete-file tmp-file)
+ (should-not (file-exists-p tmp-file))
+
+ (setq tmp-file (make-nearby-temp-file "tramp-test" 'dir))
+ (should (file-exists-p tmp-file))
+ (should (file-directory-p tmp-file))
+ (delete-directory tmp-file)
+ (should-not (file-exists-p tmp-file))))
+
(defun tramp--test-adb-p ()
"Check, whether the remote host runs Android.
This requires restrictions of file name syntax."
@@ -1852,17 +1976,26 @@ This requires restrictions of file name syntax."
"Check, whether an FTP-like method is used.
This does not support globbing characters in file names (yet)."
;; Globbing characters are ??, ?* and ?\[.
- (and (eq (tramp-find-foreign-file-name-handler
- tramp-test-temporary-file-directory)
- 'tramp-sh-file-name-handler)
- (string-match
- "ftp$" (file-remote-p tramp-test-temporary-file-directory 'method))))
+ (string-match
+ "ftp$" (file-remote-p tramp-test-temporary-file-directory 'method)))
(defun tramp--test-gvfs-p ()
"Check, whether the remote host runs a GVFS based method.
This requires restrictions of file name syntax."
(tramp-gvfs-file-name-p tramp-test-temporary-file-directory))
+(defun tramp--test-rsync-p ()
+ "Check, whether the rsync method is used.
+This does not support special file names."
+ (string-equal
+ "rsync" (file-remote-p tramp-test-temporary-file-directory 'method)))
+
+(defun tramp--test-sh-p ()
+ "Check, whether the remote host runs a based method from tramp-sh.el."
+ (eq
+ (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
+ 'tramp-sh-file-name-handler))
+
(defun tramp--test-smb-or-windows-nt-p ()
"Check, whether the locale or remote host runs MS Windows.
This requires restrictions of file name syntax."
@@ -2013,7 +2146,7 @@ Several special characters do not work properly there."
(ignore-errors (delete-directory tmp-name2 'recursive)))))
(defun tramp--test-special-characters ()
- "Perform the test in `tramp-test32-special-characters*'."
+ "Perform the test in `tramp-test33-special-characters*'."
;; Newlines, slashes and backslashes in file names are not
;; supported. So we don't test. And we don't test the tab
;; character on Windows or Cygwin, because the backslash is
@@ -2054,21 +2187,19 @@ Several special characters do not work properly there."
"{foo}bar{baz}"))
;; These tests are inspired by Bug#17238.
-(ert-deftest tramp-test32-special-characters ()
+(ert-deftest tramp-test33-special-characters ()
"Check special characters in file names."
(skip-unless (tramp--test-enabled))
+ (skip-unless (not (tramp--test-rsync-p)))
(tramp--test-special-characters))
-(ert-deftest tramp-test32-special-characters-with-stat ()
+(ert-deftest tramp-test33-special-characters-with-stat ()
"Check special characters in file names.
Use the `stat' command."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (eq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- 'tramp-sh-file-name-handler))
+ (skip-unless (and (tramp--test-sh-p) (not (tramp--test-rsync-p))))
(with-parsed-tramp-file-name tramp-test-temporary-file-directory nil
(skip-unless (tramp-get-remote-stat v)))
@@ -2079,15 +2210,12 @@ Use the `stat' command."
tramp-connection-properties)))
(tramp--test-special-characters)))
-(ert-deftest tramp-test32-special-characters-with-perl ()
+(ert-deftest tramp-test33-special-characters-with-perl ()
"Check special characters in file names.
Use the `perl' command."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (eq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- 'tramp-sh-file-name-handler))
+ (skip-unless (and (tramp--test-sh-p) (not (tramp--test-rsync-p))))
(with-parsed-tramp-file-name tramp-test-temporary-file-directory nil
(skip-unless (tramp-get-remote-perl v)))
@@ -2101,15 +2229,12 @@ Use the `perl' command."
tramp-connection-properties)))
(tramp--test-special-characters)))
-(ert-deftest tramp-test32-special-characters-with-ls ()
+(ert-deftest tramp-test33-special-characters-with-ls ()
"Check special characters in file names.
Use the `ls' command."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (eq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- 'tramp-sh-file-name-handler))
+ (skip-unless (and (tramp--test-sh-p) (not (tramp--test-rsync-p))))
(let ((tramp-connection-properties
(append
@@ -2124,7 +2249,7 @@ Use the `ls' command."
(tramp--test-special-characters)))
(defun tramp--test-utf8 ()
- "Perform the test in `tramp-test33-utf8*'."
+ "Perform the test in `tramp-test34-utf8*'."
(let* ((utf8 (if (and (eq system-type 'darwin)
(memq 'utf-8-hfs (coding-system-list)))
'utf-8-hfs 'utf-8))
@@ -2138,21 +2263,19 @@ Use the `ls' command."
"银河系漫游指å—系列"
"ÐвтоÑтопом по галаÌктике")))
-(ert-deftest tramp-test33-utf8 ()
+(ert-deftest tramp-test34-utf8 ()
"Check UTF8 encoding in file names and file contents."
(skip-unless (tramp--test-enabled))
+ (skip-unless (not (tramp--test-rsync-p)))
(tramp--test-utf8))
-(ert-deftest tramp-test33-utf8-with-stat ()
+(ert-deftest tramp-test34-utf8-with-stat ()
"Check UTF8 encoding in file names and file contents.
Use the `stat' command."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (eq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- 'tramp-sh-file-name-handler))
+ (skip-unless (and (tramp--test-sh-p) (not (tramp--test-rsync-p))))
(with-parsed-tramp-file-name tramp-test-temporary-file-directory nil
(skip-unless (tramp-get-remote-stat v)))
@@ -2163,15 +2286,12 @@ Use the `stat' command."
tramp-connection-properties)))
(tramp--test-utf8)))
-(ert-deftest tramp-test33-utf8-with-perl ()
+(ert-deftest tramp-test34-utf8-with-perl ()
"Check UTF8 encoding in file names and file contents.
Use the `perl' command."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (eq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- 'tramp-sh-file-name-handler))
+ (skip-unless (and (tramp--test-sh-p) (not (tramp--test-rsync-p))))
(with-parsed-tramp-file-name tramp-test-temporary-file-directory nil
(skip-unless (tramp-get-remote-perl v)))
@@ -2185,15 +2305,12 @@ Use the `perl' command."
tramp-connection-properties)))
(tramp--test-utf8)))
-(ert-deftest tramp-test33-utf8-with-ls ()
+(ert-deftest tramp-test34-utf8-with-ls ()
"Check UTF8 encoding in file names and file contents.
Use the `ls' command."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (eq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- 'tramp-sh-file-name-handler))
+ (skip-unless (and (tramp--test-sh-p) (not (tramp--test-rsync-p))))
(let ((tramp-connection-properties
(append
@@ -2208,7 +2325,7 @@ Use the `ls' command."
(tramp--test-utf8)))
;; This test is inspired by Bug#16928.
-(ert-deftest tramp-test34-asynchronous-requests ()
+(ert-deftest tramp-test35-asynchronous-requests ()
"Check parallel asynchronous requests.
Such requests could arrive from timers, process filters and
process sentinels. They shall not disturb each other."
@@ -2216,10 +2333,7 @@ process sentinels. They shall not disturb each other."
:expected-result :failed
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- (skip-unless
- (eq
- (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
- 'tramp-sh-file-name-handler))
+ (skip-unless (tramp--test-sh-p))
;; Keep instrumentation verbosity 0 until Tramp bug is fixed. This
;; has the side effect, that this test fails instead to abort. Good
@@ -2298,7 +2412,7 @@ process sentinels. They shall not disturb each other."
(dolist (buf buffers)
(ignore-errors (kill-buffer buf)))))))
-(ert-deftest tramp-test35-recursive-load ()
+(ert-deftest tramp-test36-recursive-load ()
"Check that Tramp does not fail due to recursive load."
(skip-unless (tramp--test-enabled))
@@ -2321,7 +2435,7 @@ process sentinels. They shall not disturb each other."
(mapconcat 'shell-quote-argument load-path " -L ")
(shell-quote-argument code)))))))
-(ert-deftest tramp-test36-unload ()
+(ert-deftest tramp-test37-unload ()
"Check that Tramp and its subpackages unload completely.
Since it unloads Tramp, it shall be the last test to run."
;; Mark as failed until all symbols are unbound.
@@ -2359,18 +2473,16 @@ Since it unloads Tramp, it shall be the last test to run."
;; * dired-compress-file
;; * dired-uncache
;; * file-acl
-;; * file-ownership-preserved-p
;; * file-selinux-context
;; * find-backup-file-name
;; * set-file-acl
;; * set-file-selinux-context
;; * Work on skipped tests. Make a comment, when it is impossible.
-;; * Fix `tramp-test15-copy-directory' for `smb'. Using tar in a pipe
-;; doesn't work well when an interactive password must be provided.
+;; * Fix `tramp-test06-directory-file-name' for `ftp'.
;; * Fix `tramp-test27-start-file-process' on MS Windows (`process-send-eof'?).
-;; * Fix Bug#16928. Set expected error of `tramp-test34-asynchronous-requests'.
-;; * Fix `tramp-test36-unload' (Not all symbols are unbound). Set
+;; * Fix Bug#16928. Set expected error of `tramp-test35-asynchronous-requests'.
+;; * Fix `tramp-test37-unload' (Not all symbols are unbound). Set
;; expected error.
(defun tramp-test-all (&optional interactive)
diff --git a/test/automated/obarray-tests.el b/test/lisp/obarray-tests.el
index 92345b7198..92345b7198 100644
--- a/test/automated/obarray-tests.el
+++ b/test/lisp/obarray-tests.el
diff --git a/test/lisp/progmodes/cc-mode.el b/test/lisp/progmodes/cc-mode.el
new file mode 100644
index 0000000000..6cd9fa4bad
--- /dev/null
+++ b/test/lisp/progmodes/cc-mode.el
@@ -0,0 +1,65 @@
+;;; cc-mode-tests.el --- Test suite for cc-mode. -*- lexical-binning: t -*-
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Michal Nazarewicz <mina86@mina86.com>
+;; Keywords: internal
+;; Human-Keywords: internal
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'ert-x)
+(require 'cc-mode)
+
+(ert-deftest c-or-c++-mode ()
+ "Test c-or-c++-mode language detection."
+ (cl-letf* ((mode nil)
+ (do-test (lambda (content expected)
+ (delete-region (point-min) (point-max))
+ (insert content)
+ (setq mode nil)
+ (c-or-c++-mode)
+ (unless(eq expected mode)
+ (ert-fail
+ (format "expected %s but got %s when testing '%s'"
+ expected mode content)))))
+ ((symbol-function 'c-mode) (lambda () (setq mode 'c-mode)))
+ ((symbol-function 'c++-mode) (lambda () (setq mode 'c++-mode))))
+ (with-temp-buffer
+ (mapc (lambda (content)
+ (funcall do-test content 'c++-mode)
+ (funcall do-test (concat "// " content) 'c-mode)
+ (funcall do-test (concat " * " content) 'c-mode))
+ '("using \t namespace \t std;"
+ "using \t std::string;"
+ "namespace \t {"
+ "namespace \t foo \t {"
+ "class \t Blah_42 \t {"
+ "class \t Blah_42 \t \n"
+ "class \t _42_Blah:public Foo {"
+ "template \t < class T >"
+ "template< class T >"
+ "#include <string>"
+ "#include<iostream>"
+ "#include \t <map>"))
+
+ (mapc (lambda (content) (funcall do-test content 'c-mode))
+ '("struct \t Blah_42 \t {"
+ "struct template {"
+ "#include <string.h>")))))
diff --git a/test/automated/compile-tests.el b/test/lisp/progmodes/compile-tests.el
index 6821a6bfae..89615760c7 100644
--- a/test/automated/compile-tests.el
+++ b/test/lisp/progmodes/compile-tests.el
@@ -79,6 +79,13 @@
1 nil 302 "\\lib\\python\\Products\\PythonScripts\\PythonScript.py")
("File \"/tmp/foo.py\", line 10"
1 nil 10 "/tmp/foo.py")
+ ;; cmake cmake-info
+ ("CMake Error at CMakeLists.txt:23 (hurz):"
+ 1 nil 23 "CMakeLists.txt")
+ ("CMake Warning at cmake/modules/UseUG.cmake:73 (find_package):"
+ 1 nil 73 "cmake/modules/UseUG.cmake")
+ (" cmake/modules/DuneGridMacros.cmake:19 (include)"
+ 1 nil 19 "cmake/modules/DuneGridMacros.cmake")
;; comma
("\"foo.f\", line 3: Error: syntax error near end of statement"
1 nil 3 "foo.f")
diff --git a/test/automated/elisp-mode-tests.el b/test/lisp/progmodes/elisp-mode-tests.el
index f3f15ad3db..12e61cf8d1 100644
--- a/test/automated/elisp-mode-tests.el
+++ b/test/lisp/progmodes/elisp-mode-tests.el
@@ -244,7 +244,7 @@ to (xref-elisp-test-descr-to-target xref)."
(xref-make "(cl-defstruct (xref-elisp-location (:constructor xref-make-elisp-location)))"
(xref-make-elisp-location
'xref-elisp-location 'define-type
- (expand-file-name "../../lisp/progmodes/elisp-mode.el" emacs-test-dir)))
+ (expand-file-name "../../../lisp/progmodes/elisp-mode.el" emacs-test-dir)))
;; It's not worth adding another special case to `xref-elisp-test-descr-to-target' for this
"(cl-defstruct (xref-elisp-location")
))
@@ -255,11 +255,11 @@ to (xref-elisp-test-descr-to-target xref)."
(xref-make "(defalias Buffer-menu-sort)"
(xref-make-elisp-location
'Buffer-menu-sort 'defalias
- (expand-file-name "../../lisp/buff-menu.elc" emacs-test-dir)))
+ (expand-file-name "../../../lisp/buff-menu.elc" emacs-test-dir)))
(xref-make "(defun tabulated-list-sort)"
(xref-make-elisp-location
'tabulated-list-sort nil
- (expand-file-name "../../lisp/emacs-lisp/tabulated-list.el" emacs-test-dir)))
+ (expand-file-name "../../../lisp/emacs-lisp/tabulated-list.el" emacs-test-dir)))
))
;; FIXME: defconst
@@ -347,7 +347,9 @@ to (xref-elisp-test-descr-to-target xref)."
(expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
(xref-make "(cl-defmethod xref-elisp-generic-no-default ((this xref-elisp-root-type) arg2))"
(xref-make-elisp-location
- '(xref-elisp-generic-no-default xref-elisp-root-type t) 'cl-defmethod
+ (cl--generic-load-hist-format
+ 'xref-elisp-generic-no-default nil '(xref-elisp-root-type t))
+ 'cl-defmethod
(expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
))
@@ -360,7 +362,10 @@ to (xref-elisp-test-descr-to-target xref)."
(expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
(xref-make "(cl-defmethod xref-elisp-generic-co-located-default ((this xref-elisp-root-type) arg2))"
(xref-make-elisp-location
- '(xref-elisp-generic-co-located-default xref-elisp-root-type t) 'cl-defmethod
+ (cl--generic-load-hist-format
+ 'xref-elisp-generic-co-located-default nil
+ '(xref-elisp-root-type t))
+ 'cl-defmethod
(expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
))
@@ -373,11 +378,16 @@ to (xref-elisp-test-descr-to-target xref)."
(expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
(xref-make "(cl-defmethod xref-elisp-generic-separate-default (arg1 arg2))"
(xref-make-elisp-location
- '(xref-elisp-generic-separate-default t t) 'cl-defmethod
+ (cl--generic-load-hist-format
+ 'xref-elisp-generic-separate-default nil '(t t))
+ 'cl-defmethod
(expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
(xref-make "(cl-defmethod xref-elisp-generic-separate-default ((this xref-elisp-root-type) arg2))"
(xref-make-elisp-location
- '(xref-elisp-generic-separate-default xref-elisp-root-type t) 'cl-defmethod
+ (cl--generic-load-hist-format
+ 'xref-elisp-generic-separate-default nil
+ '(xref-elisp-root-type t))
+ 'cl-defmethod
(expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
))
@@ -386,11 +396,16 @@ to (xref-elisp-test-descr-to-target xref)."
(list
(xref-make "(cl-defmethod xref-elisp-generic-implicit-generic (arg1 arg2))"
(xref-make-elisp-location
- '(xref-elisp-generic-implicit-generic t t) 'cl-defmethod
+ (cl--generic-load-hist-format
+ 'xref-elisp-generic-implicit-generic nil '(t t))
+ 'cl-defmethod
(expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
(xref-make "(cl-defmethod xref-elisp-generic-implicit-generic ((this xref-elisp-root-type) arg2))"
(xref-make-elisp-location
- '(xref-elisp-generic-implicit-generic xref-elisp-root-type t) 'cl-defmethod
+ (cl--generic-load-hist-format
+ 'xref-elisp-generic-implicit-generic nil
+ '(xref-elisp-root-type t))
+ 'cl-defmethod
(expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
))
@@ -406,27 +421,37 @@ to (xref-elisp-test-descr-to-target xref)."
(xref-make "(cl-defgeneric xref-location-marker)"
(xref-make-elisp-location
'xref-location-marker 'cl-defgeneric
- (expand-file-name "../../lisp/progmodes/xref.el" emacs-test-dir)))
+ (expand-file-name "../../../lisp/progmodes/xref.el" emacs-test-dir)))
(xref-make "(cl-defmethod xref-location-marker ((l xref-elisp-location)))"
(xref-make-elisp-location
- '(xref-location-marker xref-elisp-location) 'cl-defmethod
- (expand-file-name "../../lisp/progmodes/elisp-mode.el" emacs-test-dir)))
+ (cl--generic-load-hist-format
+ 'xref-location-marker nil '(xref-elisp-location))
+ 'cl-defmethod
+ (expand-file-name "../../../lisp/progmodes/elisp-mode.el" emacs-test-dir)))
(xref-make "(cl-defmethod xref-location-marker ((l xref-file-location)))"
(xref-make-elisp-location
- '(xref-location-marker xref-file-location) 'cl-defmethod
- (expand-file-name "../../lisp/progmodes/xref.el" emacs-test-dir)))
+ (cl--generic-load-hist-format
+ 'xref-location-marker nil '(xref-file-location))
+ 'cl-defmethod
+ (expand-file-name "../../../lisp/progmodes/xref.el" emacs-test-dir)))
(xref-make "(cl-defmethod xref-location-marker ((l xref-buffer-location)))"
(xref-make-elisp-location
- '(xref-location-marker xref-buffer-location) 'cl-defmethod
- (expand-file-name "../../lisp/progmodes/xref.el" emacs-test-dir)))
+ (cl--generic-load-hist-format
+ 'xref-location-marker nil '(xref-buffer-location))
+ 'cl-defmethod
+ (expand-file-name "../../../lisp/progmodes/xref.el" emacs-test-dir)))
(xref-make "(cl-defmethod xref-location-marker ((l xref-bogus-location)))"
(xref-make-elisp-location
- '(xref-location-marker xref-bogus-location) 'cl-defmethod
- (expand-file-name "../../lisp/progmodes/xref.el" emacs-test-dir)))
+ (cl--generic-load-hist-format
+ 'xref-location-marker nil '(xref-bogus-location))
+ 'cl-defmethod
+ (expand-file-name "../../../lisp/progmodes/xref.el" emacs-test-dir)))
(xref-make "(cl-defmethod xref-location-marker ((l xref-etags-location)))"
(xref-make-elisp-location
- '(xref-location-marker xref-etags-location) 'cl-defmethod
- (expand-file-name "../../lisp/progmodes/etags.el" emacs-test-dir)))
+ (cl--generic-load-hist-format
+ 'xref-location-marker nil '(xref-etags-location))
+ 'cl-defmethod
+ (expand-file-name "../../../lisp/progmodes/etags.el" emacs-test-dir)))
))
(xref-elisp-deftest find-defs-defgeneric-eval
@@ -528,7 +553,7 @@ to (xref-elisp-test-descr-to-target xref)."
(xref-make "(defun xref-find-definitions)"
(xref-make-elisp-location
'xref-find-definitions nil
- (expand-file-name "../../lisp/progmodes/xref.el" emacs-test-dir)))))
+ (expand-file-name "../../../lisp/progmodes/xref.el" emacs-test-dir)))))
(xref-elisp-deftest find-defs-defun-eval
(elisp--xref-find-definitions (eval '(defun stephe-leake-defun ())))
@@ -561,7 +586,7 @@ to (xref-elisp-test-descr-to-target xref)."
(xref-make "(defun abbrev-mode)"
(xref-make-elisp-location
'abbrev-mode nil
- (expand-file-name "../../lisp/abbrev.el" emacs-test-dir)))
+ (expand-file-name "../../../lisp/abbrev.el" emacs-test-dir)))
"(define-minor-mode abbrev-mode"))
)
@@ -582,7 +607,7 @@ to (xref-elisp-test-descr-to-target xref)."
(xref-make "(defun compilation-minor-mode)"
(xref-make-elisp-location
'compilation-minor-mode nil
- (expand-file-name "../../lisp/progmodes/compile.el" emacs-test-dir)))
+ (expand-file-name "../../../lisp/progmodes/compile.el" emacs-test-dir)))
"(define-minor-mode compilation-minor-mode")
))
@@ -592,7 +617,7 @@ to (xref-elisp-test-descr-to-target xref)."
(xref-make "(defvar xref--marker-ring)"
(xref-make-elisp-location
'xref--marker-ring 'defvar
- (expand-file-name "../../lisp/progmodes/xref.el" emacs-test-dir)))
+ (expand-file-name "../../../lisp/progmodes/xref.el" emacs-test-dir)))
))
(xref-elisp-deftest find-defs-defvar-c
@@ -615,11 +640,11 @@ to (xref-elisp-test-descr-to-target xref)."
(xref-make "(defvar font-lock-keyword-face)"
(xref-make-elisp-location
'font-lock-keyword-face 'defvar
- (expand-file-name "../../lisp/font-lock.el" emacs-test-dir)))
+ (expand-file-name "../../../lisp/font-lock.el" emacs-test-dir)))
(xref-make "(defface font-lock-keyword-face)"
(xref-make-elisp-location
'font-lock-keyword-face 'defface
- (expand-file-name "../../lisp/font-lock.el" emacs-test-dir)))
+ (expand-file-name "../../../lisp/font-lock.el" emacs-test-dir)))
))
(xref-elisp-deftest find-defs-face-eval
@@ -633,7 +658,7 @@ to (xref-elisp-test-descr-to-target xref)."
(xref-make "(feature xref)"
(xref-make-elisp-location
'xref 'feature
- (expand-file-name "../../lisp/progmodes/xref.el" emacs-test-dir)))
+ (expand-file-name "../../../lisp/progmodes/xref.el" emacs-test-dir)))
";;; Code:")
))
@@ -641,5 +666,11 @@ to (xref-elisp-test-descr-to-target xref)."
(elisp--xref-find-definitions (eval '(provide 'stephe-leake-feature)))
nil)
+(ert-deftest elisp--preceding-sexp--char-name ()
+ (with-temp-buffer
+ (emacs-lisp-mode)
+ (insert "?\\N{HEAVY CHECK MARK}")
+ (should (equal (elisp--preceding-sexp) ?\N{HEAVY CHECK MARK}))))
+
(provide 'elisp-mode-tests)
;;; elisp-mode-tests.el ends here
diff --git a/test/automated/f90.el b/test/lisp/progmodes/f90.el
index fece86ca1d..fece86ca1d 100644
--- a/test/automated/f90.el
+++ b/test/lisp/progmodes/f90.el
diff --git a/test/automated/data/flymake/Makefile b/test/lisp/progmodes/flymake-resources/Makefile
index 0f3f39791c..0f3f39791c 100644
--- a/test/automated/data/flymake/Makefile
+++ b/test/lisp/progmodes/flymake-resources/Makefile
diff --git a/test/automated/data/flymake/test.c b/test/lisp/progmodes/flymake-resources/test.c
index 3a3926131f..3a3926131f 100644
--- a/test/automated/data/flymake/test.c
+++ b/test/lisp/progmodes/flymake-resources/test.c
diff --git a/test/automated/data/flymake/test.pl b/test/lisp/progmodes/flymake-resources/test.pl
index d5abcb47e7..d5abcb47e7 100644
--- a/test/automated/data/flymake/test.pl
+++ b/test/lisp/progmodes/flymake-resources/test.pl
diff --git a/test/automated/flymake-tests.el b/test/lisp/progmodes/flymake-tests.el
index f3b830d365..386516190b 100644
--- a/test/automated/flymake-tests.el
+++ b/test/lisp/progmodes/flymake-tests.el
@@ -26,7 +26,7 @@
(require 'flymake)
(defvar flymake-tests-data-directory
- (expand-file-name "data/flymake" (getenv "EMACS_TEST_DIRECTORY"))
+ (expand-file-name "lisp/progmodes/flymake-resources" (getenv "EMACS_TEST_DIRECTORY"))
"Directory containing flymake test data.")
diff --git a/test/automated/python-tests.el b/test/lisp/progmodes/python-tests.el
index 54ed92212b..54ed92212b 100644
--- a/test/automated/python-tests.el
+++ b/test/lisp/progmodes/python-tests.el
diff --git a/test/automated/ruby-mode-tests.el b/test/lisp/progmodes/ruby-mode-tests.el
index 52126a3bdf..97f277bff4 100644
--- a/test/automated/ruby-mode-tests.el
+++ b/test/lisp/progmodes/ruby-mode-tests.el
@@ -716,6 +716,17 @@ VALUES-PLIST is a list with alternating index and value elements."
(ruby-backward-sexp)
(should (= 2 (line-number-at-pos)))))
+(ert-deftest ruby-toggle-string-quotes-quotes-correctly ()
+ (let ((pairs
+ '(("puts '\"foo\"\\''" . "puts \"\\\"foo\\\"'\"")
+ ("puts \"'foo'\\\"\"" . "puts '\\'foo\\'\"'"))))
+ (dolist (pair pairs)
+ (ruby-with-temp-buffer (car pair)
+ (beginning-of-line)
+ (search-forward "foo")
+ (ruby-toggle-string-quotes)
+ (should (string= (buffer-string) (cdr pair)))))))
+
(ert-deftest ruby--insert-coding-comment-ruby-style ()
(with-temp-buffer
(let ((ruby-encoding-magic-comment-style 'ruby))
diff --git a/test/automated/subword-tests.el b/test/lisp/progmodes/subword-tests.el
index 5a562765bb..5a562765bb 100644
--- a/test/automated/subword-tests.el
+++ b/test/lisp/progmodes/subword-tests.el
diff --git a/test/automated/xref-tests.el b/test/lisp/progmodes/xref-tests.el
index 079b196aa8..2b745816c6 100644
--- a/test/automated/xref-tests.el
+++ b/test/lisp/progmodes/xref-tests.el
@@ -28,7 +28,7 @@
(defvar xref-tests-data-dir
(expand-file-name "data/xref/"
- (file-name-directory (or load-file-name (buffer-file-name)))))
+ (getenv "EMACS_TEST_DIRECTORY")))
(ert-deftest xref-collect-matches-finds-none-for-some-regexp ()
(should (null (xref-collect-matches "zzz" "*" xref-tests-data-dir nil))))
diff --git a/lisp/obsolete/keyswap.el b/test/lisp/ps-print-tests.el
index ee3ba10809..9ebd31b746 100644
--- a/lisp/obsolete/keyswap.el
+++ b/test/lisp/ps-print-tests.el
@@ -1,10 +1,8 @@
-;;; keyswap.el --- swap BS and DEL keys
+;;; ps-print-tests.el --- Test suite for ps-print.el -*- lexical-binding: t; -*-
-;; Copyright (C) 1992, 2001-2016 Free Software Foundation, Inc.
+;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
-;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
-;; Keywords: terminals
-;; Obsolete-since: 22.1
+;; Author: Phillip Lord <phillip.lord@russet.org.uk>
;; This file is part of GNU Emacs.
@@ -23,18 +21,16 @@
;;; Commentary:
-;; This package is meant to be called by other terminal packages.
-
;;; Code:
-
-(let ((the-table (make-string 128 0)))
- (let ((i 0))
- (while (< i 128)
- (aset the-table i i)
- (setq i (1+ i))))
- ;; Swap ^H and DEL
- (aset the-table ?\177 ?\^h)
- (aset the-table ?\^h ?\177)
- (setq keyboard-translate-table the-table))
-
-;;; keyswap.el ends here
+(require 'ps-print)
+(require 'ert)
+
+;;; Autoload tests
+(ert-deftest ps-mule-autoload ()
+ "Tests to see whether ps-mule has been autoloaded"
+ (should
+ (fboundp 'ps-mule-initialize))
+ (should
+ (autoloadp
+ (symbol-function
+ 'ps-mule-initialize))))
diff --git a/test/automated/replace-tests.el b/test/lisp/replace-tests.el
index bfaab6c894..bfaab6c894 100644
--- a/test/automated/replace-tests.el
+++ b/test/lisp/replace-tests.el
diff --git a/test/automated/simple-test.el b/test/lisp/simple-tests.el
index c41d01075e..d022240ae5 100644
--- a/test/automated/simple-test.el
+++ b/test/lisp/simple-tests.el
@@ -204,7 +204,7 @@
;;; `delete-trailing-whitespace'
-(ert-deftest simple-delete-trailing-whitespace ()
+(ert-deftest simple-delete-trailing-whitespace--bug-21766 ()
"Test bug#21766: delete-whitespace sometimes deletes non-whitespace."
(defvar python-indent-guess-indent-offset) ; to avoid a warning
(let ((python (featurep 'python))
@@ -219,11 +219,25 @@
"\n"
"\n"))
(delete-trailing-whitespace)
- (should (equal (count-lines (point-min) (point-max)) 3)))
+ (should (string-equal (buffer-string)
+ (concat "query = \"\"\"WITH filtered AS\n"
+ "WHERE\n"
+ "\"\"\".format(fv_)\n"))))
;; Let's clean up if running interactive
(unless (or noninteractive python)
(unload-feature 'python)))))
+(ert-deftest simple-delete-trailing-whitespace--formfeeds ()
+ "Test formfeeds are not deleted but whitespace past them is."
+ (with-temp-buffer
+ (with-syntax-table (make-syntax-table)
+ (modify-syntax-entry ?\f " ") ; Make sure \f is whitespace
+ (insert " \f \n \f \f \n\nlast\n")
+ (delete-trailing-whitespace)
+ (should (string-equal (buffer-string) " \f\n \f \f\n\nlast\n"))
+ (should (equal ?\s (char-syntax ?\f)))
+ (should (equal ?\s (char-syntax ?\n))))))
+
;;; auto-boundary tests
(ert-deftest undo-auto-boundary-timer ()
diff --git a/test/automated/sort-tests.el b/test/lisp/sort-tests.el
index f3a182cdc1..f3a182cdc1 100644
--- a/test/automated/sort-tests.el
+++ b/test/lisp/sort-tests.el
diff --git a/test/automated/subr-tests.el b/test/lisp/subr-tests.el
index ce212903c9..ce212903c9 100644
--- a/test/automated/subr-tests.el
+++ b/test/lisp/subr-tests.el
diff --git a/test/lisp/textmodes/css-mode-tests.el b/test/lisp/textmodes/css-mode-tests.el
new file mode 100644
index 0000000000..d281787595
--- /dev/null
+++ b/test/lisp/textmodes/css-mode-tests.el
@@ -0,0 +1,188 @@
+;;; css-mode-tests.el --- Test suite for CSS mode -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Simen Heggestøyl <simenheg@gmail.com>
+;; Keywords: internal
+
+;; This file is part of GNU Emacs.
+
+;; This program 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 3 of the License, or
+;; (at your option) any later version.
+
+;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'css-mode)
+(require 'ert)
+(require 'seq)
+
+(ert-deftest css-test-property-values ()
+ ;; The `float' property has a flat value list.
+ (should
+ (equal (seq-sort #'string-lessp (css--property-values "float"))
+ '("left" "none" "right")))
+
+ ;; The `list-style' property refers to several other properties.
+ (should
+ (equal (seq-sort #'string-lessp (css--property-values "list-style"))
+ (seq-sort
+ #'string-lessp
+ (seq-uniq
+ (append (css--property-values "list-style-type")
+ (css--property-values "list-style-position")
+ (css--property-values "list-style-image"))))))
+
+ ;; The `position' property is tricky because it's also the name of a
+ ;; value class.
+ (should
+ (equal (seq-sort #'string-lessp (css--property-values "position"))
+ '("absolute" "fixed" "relative" "static")))
+
+ ;; The `background-position' property should refer to the `position'
+ ;; value class, not the property of the same name.
+ (should
+ (equal (css--property-values "background-position")
+ (css--value-class-lookup 'position)))
+
+ ;; Check that the `color' property doesn't cause infinite recursion
+ ;; because it refers to the value class of the same name.
+ (should (= (length (css--property-values "color")) 147)))
+
+(ert-deftest css-test-property-value-cache ()
+ "Test that `css--property-value-cache' is in use."
+ (should-not (gethash "word-wrap" css--property-value-cache))
+ (let ((word-wrap-values (css--property-values "word-wrap")))
+ (should (equal (gethash "word-wrap" css--property-value-cache)
+ word-wrap-values))))
+
+(ert-deftest css-test-property-values-no-duplicates ()
+ "Test that `css--property-values' returns no duplicates."
+ ;; The `flex' property is prone to duplicate values; if they aren't
+ ;; removed, it'll contain at least two instances of `auto'.
+ (should
+ (equal (seq-sort #'string-lessp (css--property-values "flex"))
+ '("auto" "calc()" "content" "none"))))
+
+(ert-deftest css-test-value-class-lookup ()
+ (should
+ (equal (seq-sort #'string-lessp (css--value-class-lookup 'position))
+ '("bottom" "calc()" "center" "left" "right" "top"))))
+
+;;; Completion
+
+(defun css-mode-tests--completions ()
+ (let ((data (css-completion-at-point)))
+ (all-completions (buffer-substring (nth 0 data) (nth 1 data))
+ (nth 2 data))))
+
+(ert-deftest css-test-complete-bang-rule ()
+ (with-temp-buffer
+ (css-mode)
+ (insert "body { left: 0 !")
+ (let ((completions (css-mode-tests--completions)))
+ (should (member "important" completions))
+ ;; Don't include SCSS bang-rules
+ (should-not (member "default" completions)))))
+
+(ert-deftest scss-test-complete-bang-rule ()
+ (with-temp-buffer
+ (scss-mode)
+ (insert "body { left: 0 !")
+ (let ((completions (css-mode-tests--completions)))
+ (should (member "important" completions))
+ (should (member "default" completions)))))
+
+(ert-deftest css-test-complete-property-value ()
+ (with-temp-buffer
+ (css-mode)
+ (insert "body { position: ")
+ (let ((completions (css-mode-tests--completions)))
+ (should
+ (equal (seq-sort #'string-lessp completions)
+ '("absolute" "fixed" "inherit" "initial" "relative"
+ "static" "unset"))))))
+
+(ert-deftest css-test-complete-pseudo-class ()
+ (with-temp-buffer
+ (css-mode)
+ (insert "body:a")
+ (let ((completions (css-mode-tests--completions)))
+ (should (member "active" completions))
+ (should-not (member "disabled" completions))
+ ;; Don't include pseudo-elements
+ (should-not (member "after" completions)))))
+
+(ert-deftest css-test-complete-pseudo-element ()
+ (with-temp-buffer
+ (css-mode)
+ (insert "body::a")
+ (let ((completions (css-mode-tests--completions)))
+ (should (member "after" completions))
+ (should-not (member "disabled" completions))
+ ;; Don't include pseudo-classes
+ (should-not (member "active" completions)))))
+
+(ert-deftest css-test-complete-at-rule ()
+ (with-temp-buffer
+ (css-mode)
+ (insert "@m")
+ (let ((completions (css-mode-tests--completions)))
+ (should (member "media" completions))
+ (should-not (member "keyframes" completions))
+ ;; Don't include SCSS at-rules
+ (should-not (member "mixin" completions)))))
+
+(ert-deftest scss-test-complete-at-rule ()
+ (with-temp-buffer
+ (scss-mode)
+ (insert "@m")
+ (let ((completions (css-mode-tests--completions)))
+ (should (member "media" completions))
+ (should-not (member "keyframes" completions))
+ (should (member "mixin" completions)))))
+
+(ert-deftest css-test-complete-property ()
+ (with-temp-buffer
+ (css-mode)
+ (insert "body { f")
+ (let ((completions (css-mode-tests--completions)))
+ (should (member "filter" completions))
+ (should-not (member "position" completions)))))
+
+(ert-deftest css-test-complete-selector ()
+ (with-temp-buffer
+ (css-mode)
+ (insert "b")
+ (let ((completions (css-mode-tests--completions)))
+ (should (member "body" completions))
+ (should-not (member "article" completions)))))
+
+(ert-deftest css-test-complete-nested-selector ()
+ (with-temp-buffer
+ (css-mode)
+ (insert "body {")
+ (let ((completions (css-mode-tests--completions)))
+ (should-not (member "body" completions)))))
+
+(ert-deftest scss-test-complete-nested-selector ()
+ (with-temp-buffer
+ (scss-mode)
+ (insert "body { b")
+ (let ((completions (css-mode-tests--completions)))
+ (should (member "body" completions))
+ (should-not (member "article" completions)))))
+
+(provide 'css-mode-tests)
+;;; css-mode-tests.el ends here
diff --git a/test/automated/reftex-tests.el b/test/lisp/textmodes/reftex-tests.el
index 0f1186d8a8..12ec7f5a39 100644
--- a/test/automated/reftex-tests.el
+++ b/test/lisp/textmodes/reftex-tests.el
@@ -204,5 +204,20 @@
(should (string= (reftex-format-citation entry "%l:%A:%y:%t %j %P %a")
"Foo13:Jane Roe:2013:Some Article Some Journal 1 Jane Roe, John Doe \\& Jane Taxpayer"))))
+
+;;; Autoload tests
+
+;; Test to check whether reftex autoloading mechanisms are working
+;; correctly.
+(ert-deftest reftex-autoload-auc ()
+ "Tests to see whether reftex-auc has been autoloaded"
+ (should
+ (fboundp 'reftex-arg-label))
+ (should
+ (autoloadp
+ (symbol-function
+ 'reftex-arg-label))))
+
+
(provide 'reftex-tests)
;;; reftex-tests.el ends here.
diff --git a/test/automated/sgml-mode-tests.el b/test/lisp/textmodes/sgml-mode-tests.el
index 4184e2c380..4184e2c380 100644
--- a/test/automated/sgml-mode-tests.el
+++ b/test/lisp/textmodes/sgml-mode-tests.el
diff --git a/test/automated/tildify-tests.el b/test/lisp/textmodes/tildify-tests.el
index 8b50cf7286..8b50cf7286 100644
--- a/test/automated/tildify-tests.el
+++ b/test/lisp/textmodes/tildify-tests.el
diff --git a/test/automated/thingatpt.el b/test/lisp/thingatpt-tests.el
index d3ecbf8c64..d3ecbf8c64 100644
--- a/test/automated/thingatpt.el
+++ b/test/lisp/thingatpt-tests.el
diff --git a/test/lisp/url/url-auth-tests.el b/test/lisp/url/url-auth-tests.el
new file mode 100644
index 0000000000..bc30f3518e
--- /dev/null
+++ b/test/lisp/url/url-auth-tests.el
@@ -0,0 +1,255 @@
+;;; url-auth-tests.el --- Test suite for url-auth.
+
+;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
+
+;; Author: Jarno Malmari <jarno@malmari.fi>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Test HTTP authentication methods.
+
+;;; Code:
+
+(require 'ert)
+(require 'url-auth)
+
+(defvar url-auth-test-challenges nil
+ "List of challenges for testing.
+Each challenge is a plist. Values are as presented by the
+server's WWW-Authenticate header field.")
+
+;; Set explicitly for easier modification for re-runs.
+(setq url-auth-test-challenges
+ (list
+ (list :qop "auth"
+ :nonce "uBr3+qkQBybTr/dKWkmpUqVO7SaEwWYzyTKO7g==$"
+ :uri "/random/path"
+ :method "GET"
+ :realm "Some test realm"
+ :cnonce "YWU4NDcxYWMxMDAxMjlkMjAwMDE4MjI5MDAwMGY4NGQ="
+ :nc "00000001"
+ :username "jytky"
+ :password "xi5Ac2HEfKt1lKKO05DCSqsK0u7hqqtsT"
+ :expected-ha1 "af521db3a83abd91262fead04fa31892"
+ :expected-ha2 "e490a6a147c79404b365d1f6059ddda5"
+ :expected-response "ecb6396e93b9e09e31f19264cfd8f854")
+ (list :nonce "a1be8a3065e00c5bf190ad499299aea5"
+ :opaque "d7c2a27230fc8c74bb6e06be8c9cd189"
+ :realm "The Test Realm"
+ :username "user"
+ :password "passwd"
+ :uri "/digest-auth/auth/user/passwd"
+ :method "GET"
+ :expected-ha1 "19c41161a8720edaeb7922ef8531137d"
+ :expected-ha2 "b44272ea65ee4af7fb26c5dba58f6863"
+ :expected-response "46c47a6d8e1fa95a3efcf49724af3fe7")
+ (list :nonce "servernonce"
+ :username "user"
+ :password "passwd"
+ :realm "The Test Realm 1"
+ :uri "/digest-auth/auth/user/passwd"
+ :method "GET"
+ :expected-ha1 "00f848f943c9a05dd06c932a7334f120"
+ :expected-ha2 "b44272ea65ee4af7fb26c5dba58f6863"
+ :expected-response "b8a48cdc9aa9e514509a5a5c53d4e8cf")
+ (list :nonce "servernonce"
+ :username "user"
+ :password "passwd"
+ :realm "The Test Realm 2"
+ :uri "/digest-auth/auth/user/passwd"
+ :method "GET"
+ :expected-ha1 "74d6abd3651d6b8260733d8a4c37ec1a"
+ :expected-ha2 "b44272ea65ee4af7fb26c5dba58f6863"
+ :expected-response "0d84884d967e04440efc77e9e2b5b561")))
+
+(ert-deftest url-auth-test-digest-create-key ()
+ "Check user credentials in their hashed form."
+ (dolist (challenge url-auth-test-challenges)
+ (let ((key (url-digest-auth-create-key (plist-get challenge :username)
+ (plist-get challenge :password)
+ (plist-get challenge :realm)
+ (plist-get challenge :method)
+ (plist-get challenge :uri))))
+ (should (= (length key) 2))
+ (should (string= (nth 0 key) (plist-get challenge :expected-ha1)))
+ (should (string= (nth 1 key) (plist-get challenge :expected-ha2)))
+ )))
+
+(ert-deftest url-auth-test-digest-auth-retrieve-cache ()
+ "Check how the entry point retrieves cached authentication.
+Essential is how realms and paths are matched."
+
+ (let* ((url-digest-auth-storage
+ '(("example.org:80"
+ ("/path/auth1" "auth1user" "key")
+ ("/path" "pathuser" "key")
+ ("/" "rootuser" "key")
+ ("realm1" "realm1user" "key")
+ ("realm2" "realm2user" "key")
+ ("/path/auth2" "auth2user" "key"))
+ ("example.org:443"
+ ("realm" "secure_user" "key"))
+ ("rootless.org:80" ; no "/" entry for this on purpose
+ ("/path" "pathuser" "key")
+ ("realm" "realmuser" "key"))))
+ (attrs (list (cons "nonce" "servernonce")))
+ auth)
+
+ (dolist (row (list
+ ;; If :expected-user is `nil' it indicates
+ ;; authentication information shouldn't be found.
+
+ ;; non-existent server
+ (list :url "http://other.com/path"
+ :realm nil :expected-user nil)
+
+ ;; unmatched port
+ (list :url "http://example.org:444/path"
+ :realm nil :expected-user nil)
+
+ ;; root, no realm
+ (list :url "http://example.org/"
+ :realm nil :expected-user "rootuser")
+
+ ;; root, no realm, explicit port
+ (list :url "http://example.org:80/"
+ :realm nil :expected-user "rootuser")
+
+ (list :url "http://example.org/unknown"
+ :realm nil :expected-user "rootuser")
+
+ ;; realm specified, overrides any path
+ (list :url "http://example.org/"
+ :realm "realm1" :expected-user "realm1user")
+
+ ;; realm specified, overrides any path
+ (list :url "http://example.org/"
+ :realm "realm2" :expected-user "realm2user")
+
+ ;; authentication determined by path
+ (list :url "http://example.org/path/auth1/query"
+ :realm nil :expected-user "auth1user")
+
+ ;; /path shadows /path/auth2, hence pathuser is expected
+ (list :url "http://example.org/path/auth2/query"
+ :realm nil :expected-user "pathuser")
+
+ (list :url "https://example.org/path"
+ :realm nil :expected-user "secure_user")
+
+ ;; not really secure user but using the same port
+ (list :url "http://example.org:443/path"
+ :realm nil :expected-user "secure_user")
+
+ ;; preferring realm user over path, even though no
+ ;; realm specified (not sure why)
+ (list :url "http://rootless.org/"
+ :realm nil :expected-user "realmuser")
+ ;; second variant for the same case
+ (list :url "http://rootless.org/unknown/path"
+ :realm nil :expected-user "realmuser")
+
+ ;; path match
+ (list :url "http://rootless.org/path/query?q=a"
+ :realm nil :expected-user "pathuser")
+
+ ;; path match, realm match, prefer realm
+ (list :url "http://rootless.org/path/query?q=a"
+ :realm "realm" :expected-user "realmuser")
+ ))
+ (setq auth (url-digest-auth (plist-get row :url)
+ nil nil
+ (plist-get row :realm) attrs))
+ (if (plist-get row :expected-user)
+ (progn (should auth)
+ (should (string-match ".*username=\"\\(.*?\\)\".*" auth))
+ (should (string= (match-string 1 auth)
+ (plist-get row :expected-user))))
+ (should-not auth)))))
+
+(ert-deftest url-auth-test-digest-auth ()
+ "Check common authorization string contents.
+Challenges with qop are not checked for response since a unique
+cnonce is used for generating them which is not mocked by the
+test and cannot be passed by arguments to `url-digest-auth'."
+ (dolist (challenge url-auth-test-challenges)
+ (let* ((attrs (append
+ (list (cons "nonce" (plist-get challenge :nonce)))
+ (if (plist-get challenge :qop)
+ (list (cons "qop" (plist-get challenge :qop))))))
+ (url (concat "http://example.org" (plist-get challenge :uri)))
+ url-digest-auth-storage
+ auth)
+ ;; Add authentication info to cache so `url-digest-auth' can
+ ;; complete without prompting minibuffer input.
+ (setq url-digest-auth-storage
+ (list
+ (list "example.org:80"
+ (cons (or (plist-get challenge :realm) "/")
+ (cons (plist-get challenge :username)
+ (url-digest-auth-create-key
+ (plist-get challenge :username)
+ (plist-get challenge :password)
+ (plist-get challenge :realm)
+ (plist-get challenge :method)
+ (plist-get challenge :uri)))))))
+ (setq auth (url-digest-auth (url-generic-parse-url url) nil nil
+ (plist-get challenge :realm) attrs))
+ (should auth)
+ (should (string-prefix-p "Digest " auth))
+ (should (string-match ".*username=\"\\(.*?\\)\".*" auth))
+ (should (string= (match-string 1 auth)
+ (plist-get challenge :username)))
+ (should (string-match ".*realm=\"\\(.*?\\)\".*" auth))
+ (should (string= (match-string 1 auth)
+ (plist-get challenge :realm)))
+
+ (if (plist-member challenge :qop)
+ (progn
+ ;; We don't know these, just check that they exists.
+ (should (string-match-p ".*response=\".*?\".*" auth))
+ ;; url-digest-auth doesn't return these AFAICS.
+;;; (should (string-match-p ".*nc=\".*?\".*" auth))
+;;; (should (string-match-p ".*cnonce=\".*?\".*" auth))
+ )
+ (should (string-match ".*response=\"\\(.*?\\)\".*" auth))
+ (should (string= (match-string 1 auth)
+ (plist-get challenge :expected-response))))
+ )))
+
+(ert-deftest url-auth-test-digest-auth-opaque ()
+ "Check that `opaque' value is added to result when presented by
+the server."
+ (let* ((url-digest-auth-storage
+ '(("example.org:80" ("/" "user" "key"))))
+ (attrs (list (cons "nonce" "anynonce")))
+ auth)
+ ;; Get authentication info from cache without `opaque'.
+ (setq auth (url-digest-auth "http://example.org/path" nil nil nil attrs))
+ (should auth)
+ (should-not (string-match-p "opaque=" auth))
+
+ ;; Add `opaque' to attributes.
+ (push (cons "opaque" "opaque-value") attrs)
+ (setq auth (url-digest-auth "http://example.org/path" nil nil nil attrs))
+ (should auth)
+ (should (string-match ".*opaque=\"\\(.*?\\)\".*" auth))
+ (should (string= (match-string 1 auth) "opaque-value"))))
+
+(provide 'url-auth-tests)
+;;; url-auth-tests.el ends here
diff --git a/test/automated/url-expand-tests.el b/test/lisp/url/url-expand-tests.el
index 6d1d54d4ff..6d1d54d4ff 100644
--- a/test/automated/url-expand-tests.el
+++ b/test/lisp/url/url-expand-tests.el
diff --git a/test/automated/url-future-tests.el b/test/lisp/url/url-future-tests.el
index 87298cc1b9..87298cc1b9 100644
--- a/test/automated/url-future-tests.el
+++ b/test/lisp/url/url-future-tests.el
diff --git a/test/automated/url-parse-tests.el b/test/lisp/url/url-parse-tests.el
index 77c5320e35..77c5320e35 100644
--- a/test/automated/url-parse-tests.el
+++ b/test/lisp/url/url-parse-tests.el
diff --git a/test/automated/url-util-tests.el b/test/lisp/url/url-util-tests.el
index 2f1de5103d..2f1de5103d 100644
--- a/test/automated/url-util-tests.el
+++ b/test/lisp/url/url-util-tests.el
diff --git a/test/automated/add-log-tests.el b/test/lisp/vc/add-log-tests.el
index 71be5a9ead..71be5a9ead 100644
--- a/test/automated/add-log-tests.el
+++ b/test/lisp/vc/add-log-tests.el
diff --git a/test/automated/vc-bzr.el b/test/lisp/vc/vc-bzr-tests.el
index 82721eeee4..f27e6588cf 100644
--- a/test/automated/vc-bzr.el
+++ b/test/lisp/vc/vc-bzr-tests.el
@@ -101,12 +101,8 @@
(while (vc-dir-busy)
(sit-for 0.1))
(vc-dir-mark-all-files t)
- (let ((f (symbol-function 'y-or-n-p)))
- (unwind-protect
- (progn
- (fset 'y-or-n-p (lambda (prompt) t))
- (vc-next-action nil))
- (fset 'y-or-n-p f)))
+ (cl-letf (((symbol-function 'y-or-n-p) (lambda (_) t)))
+ (vc-next-action nil))
(should (get-buffer "*vc-log*")))
(delete-directory homedir t))))
diff --git a/test/automated/vc-hg.el b/test/lisp/vc/vc-hg.el
index ba966598c4..ba966598c4 100644
--- a/test/automated/vc-hg.el
+++ b/test/lisp/vc/vc-hg.el
diff --git a/test/automated/vc-tests.el b/test/lisp/vc/vc-tests.el
index 5042196f42..8dc72cd7c8 100644
--- a/test/automated/vc-tests.el
+++ b/test/lisp/vc/vc-tests.el
@@ -109,6 +109,8 @@
(require 'ert)
(require 'vc)
+(declare-function w32-application-type "w32proc")
+
;; The working horses.
(defvar vc-test--cleanup-hook nil
@@ -117,7 +119,7 @@ Don't set it globally, the functions shall be let-bound.")
(defun vc-test--revision-granularity-function (backend)
"Run the `vc-revision-granularity' backend function."
- (funcall (intern (downcase (format "vc-%s-revision-granularity" backend)))))
+ (vc-call-backend backend 'revision-granularity))
(defun vc-test--create-repo-function (backend)
"Run the `vc-create-repo' backend function.
@@ -201,19 +203,28 @@ For backends which dont support it, it is emulated."
;; Save exit.
(ignore-errors (run-hooks 'vc-test--cleanup-hook)))))
-;; Why isn't there `vc-unregister'?
+;; FIXME: Why isn't there `vc-unregister'?
(defun vc-test--unregister-function (backend file)
"Run the `vc-unregister' backend function.
-For backends which dont support it, `vc-not-supported' is signalled."
-
- (let ((symbol (intern (downcase (format "vc-%s-unregister" backend)))))
- (if (functionp symbol)
- (funcall symbol file)
- ;; CVS, SVN, SCCS, SRC and Mtn are not supported.
- (signal 'vc-not-supported (list 'unregister backend)))))
+For backends which don't support it, `vc-not-supported' is signalled."
+ ;; CVS, SVN, SCCS, SRC and Mtn are not supported, and will signal
+ ;; `vc-not-supported'.
+ (prog1
+ (vc-call-backend backend 'unregister file)
+ (vc-file-clearprops file)))
+
+(defmacro vc-test--run-maybe-unsupported-function (func &rest args)
+ "Run FUNC with ARGS as arguments.
+Catch the `vc-not-supported' error."
+ `(let (err)
+ (condition-case err
+ (funcall ,func ,@args)
+ (vc-not-supported 'vc-not-supported)
+ (t (signal (car err) (cdr err))))))
(defun vc-test--register (backend)
- "Register and unregister a file."
+ "Register and unregister a file.
+This checks also `vc-backend' and `vc-responsible-backend'."
(let ((vc-handled-backends `(,backend))
(default-directory
@@ -232,32 +243,56 @@ For backends which dont support it, `vc-not-supported' is signalled."
;; Create empty repository.
(make-directory default-directory)
(vc-test--create-repo-function backend)
+ ;; For file oriented backends CVS, RCS and SVN the backend is
+ ;; returned, and the directory is registered already.
+ (should (if (vc-backend default-directory)
+ (vc-registered default-directory)
+ (not (vc-registered default-directory))))
+ (should (eq (vc-responsible-backend default-directory) backend))
(let ((tmp-name1 (expand-file-name "foo" default-directory))
(tmp-name2 "bla"))
;; Register files. Check for it.
(write-region "foo" nil tmp-name1 nil 'nomessage)
(should (file-exists-p tmp-name1))
+ (should-not (vc-backend tmp-name1))
+ (should (eq (vc-responsible-backend tmp-name1) backend))
(should-not (vc-registered tmp-name1))
+
(write-region "bla" nil tmp-name2 nil 'nomessage)
(should (file-exists-p tmp-name2))
+ (should-not (vc-backend tmp-name2))
+ (should (eq (vc-responsible-backend tmp-name2) backend))
(should-not (vc-registered tmp-name2))
+
(vc-register (list backend (list tmp-name1 tmp-name2)))
(should (file-exists-p tmp-name1))
+ (should (eq (vc-backend tmp-name1) backend))
+ (should (eq (vc-responsible-backend tmp-name1) backend))
(should (vc-registered tmp-name1))
+
(should (file-exists-p tmp-name2))
+ (should (eq (vc-backend tmp-name2) backend))
+ (should (eq (vc-responsible-backend tmp-name2) backend))
(should (vc-registered tmp-name2))
+ ;; `vc-backend' accepts also a list of files,
+ ;; `vc-responsible-backend' doesn't.
+ (should (vc-backend (list tmp-name1 tmp-name2)))
+
;; Unregister the files.
- (condition-case err
- (progn
- (vc-test--unregister-function backend tmp-name1)
- (should-not (vc-registered tmp-name1))
- (vc-test--unregister-function backend tmp-name2)
- (should-not (vc-registered tmp-name2)))
- ;; CVS, SVN, SCCS, SRC and Mtn are not supported.
- (vc-not-supported t))
- ;; The files shall still exist.
+ (unless (eq (vc-test--run-maybe-unsupported-function
+ 'vc-test--unregister-function backend tmp-name1)
+ 'vc-not-supported)
+ (should-not (vc-backend tmp-name1))
+ (should-not (vc-registered tmp-name1)))
+ (unless (eq (vc-test--run-maybe-unsupported-function
+ 'vc-test--unregister-function backend tmp-name2)
+ 'vc-not-supported)
+ (should-not (vc-backend tmp-name2))
+ (should-not (vc-registered tmp-name2)))
+
+ ;; The files shall still exist.
(should (file-exists-p tmp-name1))
(should (file-exists-p tmp-name2))))
@@ -281,70 +316,42 @@ For backends which dont support it, `vc-not-supported' is signalled."
'vc-test--cleanup-hook
`(lambda () (delete-directory ,default-directory 'recursive)))
- ;; Create empty repository. Check repository state.
+ ;; Create empty repository.
(make-directory default-directory)
(vc-test--create-repo-function backend)
- ;; nil: Hg Mtn RCS
- ;; added: Git
- ;; unregistered: CVS SCCS SRC
- ;; up-to-date: Bzr SVN
- (message "vc-state1 %s" (vc-state default-directory))
- ;;(should (eq (vc-state default-directory)
- ;;(vc-state default-directory backend)))
- (should (memq (vc-state default-directory)
- '(nil added unregistered up-to-date)))
-
(let ((tmp-name (expand-file-name "foo" default-directory)))
- ;; Check state of an empty file.
+ ;; Check state of a nonexistent file.
- ;; nil: Hg Mtn SRC SVN
- ;; added: Git
- ;; unregistered: RCS SCCS
- ;; up-to-date: Bzr CVS
(message "vc-state2 %s" (vc-state tmp-name))
- ;;(should (eq (vc-state tmp-name) (vc-state tmp-name backend)))
- (should (memq (vc-state tmp-name)
- '(nil added unregistered up-to-date)))
+ (should (null (vc-state tmp-name)))
;; Write a new file. Check state.
(write-region "foo" nil tmp-name nil 'nomessage)
- ;; nil: Mtn
- ;; added: Git
- ;; unregistered: Hg RCS SCCS SRC SVN
- ;; up-to-date: Bzr CVS
(message "vc-state3 %s" (vc-state tmp-name))
- ;;(should (eq (vc-state tmp-name) (vc-state tmp-name backend)))
- (should (memq (vc-state tmp-name)
- '(nil added unregistered up-to-date)))
+ (should (null (vc-state tmp-name)))
;; Register a file. Check state.
(vc-register
(list backend (list (file-name-nondirectory tmp-name))))
- ;; added: Git Mtn
- ;; unregistered: Hg RCS SCCS SRC SVN
- ;; up-to-date: Bzr CVS
+ ;; FIXME: nil is definitely wrong.
+ ;; nil: SRC
+ ;; added: Bzr CVS Git Hg Mtn SVN
+ ;; up-to-date: RCS SCCS
(message "vc-state4 %s" (vc-state tmp-name))
- ;;(should (eq (vc-state tmp-name) (vc-state tmp-name backend)))
- (should (memq (vc-state tmp-name)
- '(nil added unregistered up-to-date)))
+ (should (memq (vc-state tmp-name) '(nil added up-to-date)))
;; Unregister the file. Check state.
- (condition-case nil
- (progn
- (vc-test--unregister-function backend tmp-name)
-
- ;; added: Git
- ;; unregistered: Hg RCS
- ;; unsupported: CVS Mtn SCCS SRC SVN
- ;; up-to-date: Bzr
- (message "vc-state5 %s" (vc-state tmp-name))
- ;;(should (eq (vc-state tmp-name) (vc-state tmp-name backend)))
- (should (memq (vc-state tmp-name)
- '(nil added unregistered up-to-date))))
- (vc-not-supported (message "vc-state5 unsupported")))))
+ (if (eq (vc-test--run-maybe-unsupported-function
+ 'vc-test--unregister-function backend tmp-name)
+ 'vc-not-supported)
+ (message "vc-state5 unsupported")
+ ;; nil: Bzr Git Hg RCS
+ ;; unsupported: CVS Mtn SCCS SRC SVN
+ (message "vc-state5 %s" (vc-state tmp-name))
+ (should (null (vc-state tmp-name))))))
;; Save exit.
(ignore-errors (run-hooks 'vc-test--cleanup-hook)))))
@@ -371,60 +378,51 @@ For backends which dont support it, `vc-not-supported' is signalled."
(make-directory default-directory)
(vc-test--create-repo-function backend)
- ;; nil: CVS Git Mtn RCS SCCS
- ;; "0": Bzr Hg SRC SVN
+ ;; FIXME: Is the value for SVN correct?
+ ;; nil: Bzr CVS Git Hg Mtn RCS SCCS SRC
+ ;; "0": SVN
(message
"vc-working-revision1 %s" (vc-working-revision default-directory))
- ;;(should (eq (vc-working-revision default-directory)
- ;;(vc-working-revision default-directory backend)))
- (should (member (vc-working-revision default-directory) '(nil "0")))
+ (should (member (vc-working-revision default-directory) '(nil "0")))
(let ((tmp-name (expand-file-name "foo" default-directory)))
;; Check initial working revision, should be nil until
;; it's registered.
- ;; nil: CVS Git Mtn RCS SCCS SVN
- ;; "0": Bzr Hg SRC
(message "vc-working-revision2 %s" (vc-working-revision tmp-name))
- ;;(should (eq (vc-working-revision tmp-name)
- ;;(vc-working-revision tmp-name backend)))
- (should (member (vc-working-revision tmp-name) '(nil "0")))
+ (should-not (vc-working-revision tmp-name))
;; Write a new file. Check working revision.
(write-region "foo" nil tmp-name nil 'nomessage)
- ;; nil: CVS Git Mtn RCS SCCS SVN
- ;; "0": Bzr Hg SRC
(message "vc-working-revision3 %s" (vc-working-revision tmp-name))
- ;;(should (eq (vc-working-revision tmp-name)
- ;;(vc-working-revision tmp-name backend)))
- (should (member (vc-working-revision tmp-name) '(nil "0")))
+ (should-not (vc-working-revision tmp-name))
;; Register a file. Check working revision.
(vc-register
(list backend (list (file-name-nondirectory tmp-name))))
- ;; nil: Mtn Git RCS SCCS
+ ;; XXX: nil is fine, at least in Git's case, because
+ ;; `vc-register' only makes the file `added' in this case.
+ ;; nil: Git Mtn
;; "0": Bzr CVS Hg SRC SVN
+ ;; "1.1": RCS SCCS
(message "vc-working-revision4 %s" (vc-working-revision tmp-name))
- ;;(should (eq (vc-working-revision tmp-name)
- ;;(vc-working-revision tmp-name backend)))
- (should (member (vc-working-revision tmp-name) '(nil "0")))
+ (should (member (vc-working-revision tmp-name) '(nil "0" "1.1")))
+
+ ;; TODO: Call `vc-checkin', and check the resulting
+ ;; working revision. None of the return values should be
+ ;; nil then.
;; Unregister the file. Check working revision.
- (condition-case nil
- (progn
- (vc-test--unregister-function backend tmp-name)
-
- ;; nil: Git RCS
- ;; "0": Bzr Hg
- ;; unsupported: CVS Mtn SCCS SRC SVN
- (message
- "vc-working-revision5 %s" (vc-working-revision tmp-name))
- ;;(should (eq (vc-working-revision tmp-name)
- ;;(vc-working-revision tmp-name backend)))
- (should (member (vc-working-revision tmp-name) '(nil "0"))))
- (vc-not-supported (message "vc-working-revision5 unsupported")))))
+ (if (eq (vc-test--run-maybe-unsupported-function
+ 'vc-test--unregister-function backend tmp-name)
+ 'vc-not-supported)
+ (message "vc-working-revision5 unsupported")
+ ;; nil: Bzr Git Hg RCS
+ ;; unsupported: CVS Mtn SCCS SRC SVN
+ (message "vc-working-revision5 %s" (vc-working-revision tmp-name))
+ (should-not (vc-working-revision tmp-name)))))
;; Save exit.
(ignore-errors (run-hooks 'vc-test--cleanup-hook)))))
@@ -451,9 +449,8 @@ For backends which dont support it, `vc-not-supported' is signalled."
(vc-test--create-repo-function backend)
;; Surprisingly, none of the backends returns 'announce.
- ;; nil: RCS
;; implicit: Bzr CVS Git Hg Mtn SRC SVN
- ;; locking: SCCS
+ ;; locking: RCS SCCS
(message
"vc-checkout-model1 %s"
(vc-checkout-model backend default-directory))
@@ -461,11 +458,10 @@ For backends which dont support it, `vc-not-supported' is signalled."
'(announce implicit locking)))
(let ((tmp-name (expand-file-name "foo" default-directory)))
- ;; Check checkout model of an empty file.
+ ;; Check checkout model of a nonexistent file.
- ;; nil: RCS
;; implicit: Bzr CVS Git Hg Mtn SRC SVN
- ;; locking: SCCS
+ ;; locking: RCS SCCS
(message
"vc-checkout-model2 %s" (vc-checkout-model backend tmp-name))
(should (memq (vc-checkout-model backend tmp-name)
@@ -474,9 +470,8 @@ For backends which dont support it, `vc-not-supported' is signalled."
;; Write a new file. Check checkout model.
(write-region "foo" nil tmp-name nil 'nomessage)
- ;; nil: RCS
;; implicit: Bzr CVS Git Hg Mtn SRC SVN
- ;; locking: SCCS
+ ;; locking: RCS SCCS
(message
"vc-checkout-model3 %s" (vc-checkout-model backend tmp-name))
(should (memq (vc-checkout-model backend tmp-name)
@@ -486,27 +481,25 @@ For backends which dont support it, `vc-not-supported' is signalled."
(vc-register
(list backend (list (file-name-nondirectory tmp-name))))
- ;; nil: RCS
;; implicit: Bzr CVS Git Hg Mtn SRC SVN
- ;; locking: SCCS
+ ;; locking: RCS SCCS
(message
"vc-checkout-model4 %s" (vc-checkout-model backend tmp-name))
(should (memq (vc-checkout-model backend tmp-name)
'(announce implicit locking)))
;; Unregister the file. Check checkout model.
- (condition-case nil
- (progn
- (vc-test--unregister-function backend tmp-name)
-
- ;; nil: RCS
- ;; implicit: Bzr Git Hg
- ;; unsupported: CVS Mtn SCCS SRC SVN
- (message
- "vc-checkout-model5 %s" (vc-checkout-model backend tmp-name))
- (should (memq (vc-checkout-model backend tmp-name)
- '(announce implicit locking))))
- (vc-not-supported (message "vc-checkout-model5 unsupported")))))
+ (if (eq (vc-test--run-maybe-unsupported-function
+ 'vc-test--unregister-function backend tmp-name)
+ 'vc-not-supported)
+ (message "vc-checkout-model5 unsupported")
+ ;; implicit: Bzr Git Hg
+ ;; locking: RCS
+ ;; unsupported: CVS Mtn SCCS SRC SVN
+ (message
+ "vc-checkout-model5 %s" (vc-checkout-model backend tmp-name))
+ (should (memq (vc-checkout-model backend tmp-name)
+ '(announce implicit locking))))))
;; Save exit.
(ignore-errors (run-hooks 'vc-test--cleanup-hook)))))
@@ -605,8 +598,6 @@ For backends which dont support it, `vc-not-supported' is signalled."
,(intern (format "vc-test-%s04-checkout-model" backend-string)) ()
,(format "Check `vc-checkout-model' for the %s backend."
backend-string)
- ;; FIXME make this pass.
- :expected-result ,(if (equal backend 'RCS) :failed :passed)
(skip-unless
(ert-test-passed-p
(ert-test-most-recent-result
diff --git a/test/automated/xml-parse-tests.el b/test/lisp/xml-tests.el
index 488d2c6f92..488d2c6f92 100644
--- a/test/automated/xml-parse-tests.el
+++ b/test/lisp/xml-tests.el
diff --git a/test/automated/xt-mouse-tests.el b/test/lisp/xt-mouse-tests.el
index c7e835c031..c7e835c031 100644
--- a/test/automated/xt-mouse-tests.el
+++ b/test/lisp/xt-mouse-tests.el
diff --git a/test/make-test-deps.emacs-lisp b/test/make-test-deps.emacs-lisp
new file mode 100644
index 0000000000..9edeef3d2a
--- /dev/null
+++ b/test/make-test-deps.emacs-lisp
@@ -0,0 +1,98 @@
+;; -*- emacs-lisp -*-
+
+;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file generates dependencies between test files and the files
+;; that they test.
+
+;; It has an .emacs-lisp extension because it makes the Makefile easier!
+
+(require 'seq)
+
+(defun make-test-deps (src-dir)
+ (let ((src-dir (file-truename src-dir)))
+ (message
+ "%s"
+ (concat
+ (make-test-deps-lisp src-dir)
+ (make-test-deps-src src-dir)))))
+
+(defun make-test-deps-lisp (src-dir)
+ (mapconcat
+ (lambda (file-without-suffix)
+ (format "./%s-tests.log: %s/../%s.el\n"
+ file-without-suffix
+ src-dir
+ file-without-suffix))
+ (make-test-test-files src-dir "lisp") ""))
+
+(defun make-test-deps-src (src-dir)
+ (mapconcat
+ (lambda (file-without-suffix)
+ (format "./%s-tests.log: %s/../%s.c\n"
+ file-without-suffix
+ src-dir
+ file-without-suffix))
+ (make-test-test-files src-dir "src") ""))
+
+(defun make-test-test-files (src-dir sub-src-dir)
+ (make-test-munge-files
+ src-dir
+ (directory-files-recursively
+ (concat src-dir "/" sub-src-dir)
+ ".*-tests.el$")))
+
+(defun make-test-munge-files (src-dir files)
+ (make-test-sans-suffix
+ (make-test-de-stem
+ src-dir
+ (make-test-no-legacy
+ (make-test-no-test-dir
+ (make-test-no-resources
+ files))))))
+
+(defun make-test-sans-suffix (files)
+ (mapcar
+ (lambda (file)
+ (substring file 0 -9))
+ files))
+
+(defun make-test-de-stem (stem files)
+ (mapcar
+ (lambda (file)
+ (substring
+ file
+ (+ 1 (length stem))))
+ files))
+
+(defun make-test-no-legacy (list)
+ (make-test-remove list "legacy/"))
+
+(defun make-test-no-resources (list)
+ (make-test-remove list "-resources/"))
+
+(defun make-test-no-test-dir (list)
+ (make-test-remove list "-tests/"))
+
+(defun make-test-remove (list match)
+ (seq-remove
+ (lambda (file)
+ (string-match-p match file))
+ list))
diff --git a/test/BidiCharacterTest.txt b/test/manual/BidiCharacterTest.txt
index 7a460b48af..7a460b48af 100644
--- a/test/BidiCharacterTest.txt
+++ b/test/manual/BidiCharacterTest.txt
diff --git a/test/biditest.el b/test/manual/biditest.el
index 3545c50734..3545c50734 100644
--- a/test/biditest.el
+++ b/test/manual/biditest.el
diff --git a/test/cedet/cedet-utests.el b/test/manual/cedet/cedet-utests.el
index ae9d576f0f..ae9d576f0f 100644
--- a/test/cedet/cedet-utests.el
+++ b/test/manual/cedet/cedet-utests.el
diff --git a/test/cedet/ede-tests.el b/test/manual/cedet/ede-tests.el
index 32971e441e..32971e441e 100644
--- a/test/cedet/ede-tests.el
+++ b/test/manual/cedet/ede-tests.el
diff --git a/test/cedet/semantic-ia-utest.el b/test/manual/cedet/semantic-ia-utest.el
index a5b70b8326..a5b70b8326 100644
--- a/test/cedet/semantic-ia-utest.el
+++ b/test/manual/cedet/semantic-ia-utest.el
diff --git a/test/cedet/semantic-tests.el b/test/manual/cedet/semantic-tests.el
index 179851fafe..179851fafe 100644
--- a/test/cedet/semantic-tests.el
+++ b/test/manual/cedet/semantic-tests.el
diff --git a/test/cedet/semantic-utest-c.el b/test/manual/cedet/semantic-utest-c.el
index ec09b96211..ec09b96211 100644
--- a/test/cedet/semantic-utest-c.el
+++ b/test/manual/cedet/semantic-utest-c.el
diff --git a/test/cedet/semantic-utest.el b/test/manual/cedet/semantic-utest.el
index d26d6118d2..d26d6118d2 100644
--- a/test/cedet/semantic-utest.el
+++ b/test/manual/cedet/semantic-utest.el
diff --git a/test/cedet/srecode-tests.el b/test/manual/cedet/srecode-tests.el
index 18beb9291f..18beb9291f 100644
--- a/test/cedet/srecode-tests.el
+++ b/test/manual/cedet/srecode-tests.el
diff --git a/test/cedet/tests/test.c b/test/manual/cedet/tests/test.c
index 0aa8852b8a..0aa8852b8a 100644
--- a/test/cedet/tests/test.c
+++ b/test/manual/cedet/tests/test.c
diff --git a/test/cedet/tests/test.el b/test/manual/cedet/tests/test.el
index 0b8f9dee61..15517da0dc 100644
--- a/test/cedet/tests/test.el
+++ b/test/manual/cedet/tests/test.el
@@ -89,7 +89,7 @@
(defconst a-defconst 'a "var doc const")
(defcustom a-defcustom nil
- "*doc custom"
+ "doc custom"
:group 'a-defgroup
:type 'boolean)
diff --git a/test/cedet/tests/test.make b/test/manual/cedet/tests/test.make
index 1eb71f7ccc..1eb71f7ccc 100644
--- a/test/cedet/tests/test.make
+++ b/test/manual/cedet/tests/test.make
diff --git a/test/cedet/tests/testdoublens.cpp b/test/manual/cedet/tests/testdoublens.cpp
index 63c4deedd0..63c4deedd0 100644
--- a/test/cedet/tests/testdoublens.cpp
+++ b/test/manual/cedet/tests/testdoublens.cpp
diff --git a/test/cedet/tests/testdoublens.hpp b/test/manual/cedet/tests/testdoublens.hpp
index 6d2a0f0755..6d2a0f0755 100644
--- a/test/cedet/tests/testdoublens.hpp
+++ b/test/manual/cedet/tests/testdoublens.hpp
diff --git a/test/cedet/tests/testfriends.cpp b/test/manual/cedet/tests/testfriends.cpp
index 20425f93af..20425f93af 100644
--- a/test/cedet/tests/testfriends.cpp
+++ b/test/manual/cedet/tests/testfriends.cpp
diff --git a/test/cedet/tests/testjavacomp.java b/test/manual/cedet/tests/testjavacomp.java
index f0abfc97b0..f0abfc97b0 100644
--- a/test/cedet/tests/testjavacomp.java
+++ b/test/manual/cedet/tests/testjavacomp.java
diff --git a/test/cedet/tests/testnsp.cpp b/test/manual/cedet/tests/testnsp.cpp
index 012dc66060..012dc66060 100644
--- a/test/cedet/tests/testnsp.cpp
+++ b/test/manual/cedet/tests/testnsp.cpp
diff --git a/test/cedet/tests/testpolymorph.cpp b/test/manual/cedet/tests/testpolymorph.cpp
index 94ae9d9041..94ae9d9041 100644
--- a/test/cedet/tests/testpolymorph.cpp
+++ b/test/manual/cedet/tests/testpolymorph.cpp
diff --git a/test/cedet/tests/testspp.c b/test/manual/cedet/tests/testspp.c
index cfb3996db4..cfb3996db4 100644
--- a/test/cedet/tests/testspp.c
+++ b/test/manual/cedet/tests/testspp.c
diff --git a/test/cedet/tests/testsppcomplete.c b/test/manual/cedet/tests/testsppcomplete.c
index d789994228..d789994228 100644
--- a/test/cedet/tests/testsppcomplete.c
+++ b/test/manual/cedet/tests/testsppcomplete.c
diff --git a/test/cedet/tests/testsppreplace.c b/test/manual/cedet/tests/testsppreplace.c
index fbbaa75fee..fbbaa75fee 100644
--- a/test/cedet/tests/testsppreplace.c
+++ b/test/manual/cedet/tests/testsppreplace.c
diff --git a/test/cedet/tests/testsppreplaced.c b/test/manual/cedet/tests/testsppreplaced.c
index 8cbe05bd4f..8cbe05bd4f 100644
--- a/test/cedet/tests/testsppreplaced.c
+++ b/test/manual/cedet/tests/testsppreplaced.c
diff --git a/test/cedet/tests/testsubclass.cpp b/test/manual/cedet/tests/testsubclass.cpp
index 2cb9e76388..2cb9e76388 100644
--- a/test/cedet/tests/testsubclass.cpp
+++ b/test/manual/cedet/tests/testsubclass.cpp
diff --git a/test/cedet/tests/testsubclass.hh b/test/manual/cedet/tests/testsubclass.hh
index 7c93f8ec02..7c93f8ec02 100644
--- a/test/cedet/tests/testsubclass.hh
+++ b/test/manual/cedet/tests/testsubclass.hh
diff --git a/test/cedet/tests/testtypedefs.cpp b/test/manual/cedet/tests/testtypedefs.cpp
index 312a77f005..312a77f005 100644
--- a/test/cedet/tests/testtypedefs.cpp
+++ b/test/manual/cedet/tests/testtypedefs.cpp
diff --git a/test/cedet/tests/testvarnames.c b/test/manual/cedet/tests/testvarnames.c
index 419361d1db..419361d1db 100644
--- a/test/cedet/tests/testvarnames.c
+++ b/test/manual/cedet/tests/testvarnames.c
diff --git a/test/etags/CTAGS.good b/test/manual/etags/CTAGS.good
index 19bc0bef65..19bc0bef65 100644
--- a/test/etags/CTAGS.good
+++ b/test/manual/etags/CTAGS.good
diff --git a/test/etags/ETAGS.good_1 b/test/manual/etags/ETAGS.good_1
index 58661bbf60..58661bbf60 100644
--- a/test/etags/ETAGS.good_1
+++ b/test/manual/etags/ETAGS.good_1
diff --git a/test/etags/ETAGS.good_2 b/test/manual/etags/ETAGS.good_2
index ecfa7d1988..ecfa7d1988 100644
--- a/test/etags/ETAGS.good_2
+++ b/test/manual/etags/ETAGS.good_2
diff --git a/test/etags/ETAGS.good_3 b/test/manual/etags/ETAGS.good_3
index 5f84aa9a0c..5f84aa9a0c 100644
--- a/test/etags/ETAGS.good_3
+++ b/test/manual/etags/ETAGS.good_3
diff --git a/test/etags/ETAGS.good_4 b/test/manual/etags/ETAGS.good_4
index 12e2a6549c..12e2a6549c 100644
--- a/test/etags/ETAGS.good_4
+++ b/test/manual/etags/ETAGS.good_4
diff --git a/test/etags/ETAGS.good_5 b/test/manual/etags/ETAGS.good_5
index 98de4f2c2f..98de4f2c2f 100644
--- a/test/etags/ETAGS.good_5
+++ b/test/manual/etags/ETAGS.good_5
diff --git a/test/etags/ETAGS.good_6 b/test/manual/etags/ETAGS.good_6
index f5e0ad4407..f5e0ad4407 100644
--- a/test/etags/ETAGS.good_6
+++ b/test/manual/etags/ETAGS.good_6
diff --git a/test/etags/Makefile b/test/manual/etags/Makefile
index 6e335711ff..07ad0f4641 100644
--- a/test/etags/Makefile
+++ b/test/manual/etags/Makefile
@@ -33,8 +33,8 @@ SRCS=${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\
${PROLSRC} ${PYTSRC} ${RBSRC} ${TEXSRC} ${YSRC}
NONSRCS=./f-src/entry.strange ./erl-src/lists.erl ./cp-src/clheir.hpp.gz
-ETAGS_PROG=../../lib-src/etags
-CTAGS_PROG=../../lib-src/ctags
+ETAGS_PROG=../../../lib-src/etags
+CTAGS_PROG=../../../lib-src/ctags
REGEX=/[ \t]*DEFVAR_[A-Z_ \t\n(]+"\([^"]+\)"/
xx="this line is here because of a fontlock bug
diff --git a/test/etags/a-src/empty.zz b/test/manual/etags/a-src/empty.zz
index e69de29bb2..e69de29bb2 100644
--- a/test/etags/a-src/empty.zz
+++ b/test/manual/etags/a-src/empty.zz
diff --git a/test/etags/a-src/empty.zz.gz b/test/manual/etags/a-src/empty.zz.gz
index e69de29bb2..e69de29bb2 100644
--- a/test/etags/a-src/empty.zz.gz
+++ b/test/manual/etags/a-src/empty.zz.gz
diff --git a/test/etags/ada-src/2ataspri.adb b/test/manual/etags/ada-src/2ataspri.adb
index 43ca983824..43ca983824 100644
--- a/test/etags/ada-src/2ataspri.adb
+++ b/test/manual/etags/ada-src/2ataspri.adb
diff --git a/test/etags/ada-src/2ataspri.ads b/test/manual/etags/ada-src/2ataspri.ads
index 01c786028a..01c786028a 100644
--- a/test/etags/ada-src/2ataspri.ads
+++ b/test/manual/etags/ada-src/2ataspri.ads
diff --git a/test/etags/ada-src/etags-test-for.ada b/test/manual/etags/ada-src/etags-test-for.ada
index 09e5a1ec9b..09e5a1ec9b 100644
--- a/test/etags/ada-src/etags-test-for.ada
+++ b/test/manual/etags/ada-src/etags-test-for.ada
diff --git a/test/etags/ada-src/waroquiers.ada b/test/manual/etags/ada-src/waroquiers.ada
index 316120998f..316120998f 100644
--- a/test/etags/ada-src/waroquiers.ada
+++ b/test/manual/etags/ada-src/waroquiers.ada
diff --git a/test/etags/c-src/a/b/b.c b/test/manual/etags/c-src/a/b/b.c
index ee3c97c245..ee3c97c245 100644
--- a/test/etags/c-src/a/b/b.c
+++ b/test/manual/etags/c-src/a/b/b.c
diff --git a/test/etags/c-src/abbrev.c b/test/manual/etags/c-src/abbrev.c
index b7d137cd9b..b7d137cd9b 100644
--- a/test/etags/c-src/abbrev.c
+++ b/test/manual/etags/c-src/abbrev.c
diff --git a/test/etags/c-src/c.c b/test/manual/etags/c-src/c.c
index 77c8929afb..77c8929afb 100644
--- a/test/etags/c-src/c.c
+++ b/test/manual/etags/c-src/c.c
diff --git a/test/etags/c-src/dostorture.c b/test/manual/etags/c-src/dostorture.c
index 5190734e0f..5190734e0f 100644
--- a/test/etags/c-src/dostorture.c
+++ b/test/manual/etags/c-src/dostorture.c
diff --git a/test/etags/c-src/emacs/src/gmalloc.c b/test/manual/etags/c-src/emacs/src/gmalloc.c
index 683ee0c950..683ee0c950 100644
--- a/test/etags/c-src/emacs/src/gmalloc.c
+++ b/test/manual/etags/c-src/emacs/src/gmalloc.c
diff --git a/test/etags/c-src/emacs/src/keyboard.c b/test/manual/etags/c-src/emacs/src/keyboard.c
index 68584ee71f..68584ee71f 100644
--- a/test/etags/c-src/emacs/src/keyboard.c
+++ b/test/manual/etags/c-src/emacs/src/keyboard.c
diff --git a/test/etags/c-src/emacs/src/lisp.h b/test/manual/etags/c-src/emacs/src/lisp.h
index db8722917e..db8722917e 100644
--- a/test/etags/c-src/emacs/src/lisp.h
+++ b/test/manual/etags/c-src/emacs/src/lisp.h
diff --git a/test/etags/c-src/emacs/src/regex.h b/test/manual/etags/c-src/emacs/src/regex.h
index f97c1cb38c..f97c1cb38c 100644
--- a/test/etags/c-src/emacs/src/regex.h
+++ b/test/manual/etags/c-src/emacs/src/regex.h
diff --git a/test/etags/c-src/etags.c b/test/manual/etags/c-src/etags.c
index 453419897b..453419897b 100644
--- a/test/etags/c-src/etags.c
+++ b/test/manual/etags/c-src/etags.c
diff --git a/test/etags/c-src/exit.c b/test/manual/etags/c-src/exit.c
index 86afda9ed0..86afda9ed0 100644
--- a/test/etags/c-src/exit.c
+++ b/test/manual/etags/c-src/exit.c
diff --git a/test/etags/c-src/exit.strange_suffix b/test/manual/etags/c-src/exit.strange_suffix
index 86afda9ed0..86afda9ed0 100644
--- a/test/etags/c-src/exit.strange_suffix
+++ b/test/manual/etags/c-src/exit.strange_suffix
diff --git a/test/etags/c-src/fail.c b/test/manual/etags/c-src/fail.c
index 32482781b1..32482781b1 100644
--- a/test/etags/c-src/fail.c
+++ b/test/manual/etags/c-src/fail.c
diff --git a/test/etags/c-src/getopt.h b/test/manual/etags/c-src/getopt.h
index aa2eb1dc17..aa2eb1dc17 100644
--- a/test/etags/c-src/getopt.h
+++ b/test/manual/etags/c-src/getopt.h
diff --git a/test/etags/c-src/h.h b/test/manual/etags/c-src/h.h
index f86c00d64a..f86c00d64a 100644
--- a/test/etags/c-src/h.h
+++ b/test/manual/etags/c-src/h.h
diff --git a/test/etags/c-src/machsyscalls.c b/test/manual/etags/c-src/machsyscalls.c
index 44930c33cf..44930c33cf 100644
--- a/test/etags/c-src/machsyscalls.c
+++ b/test/manual/etags/c-src/machsyscalls.c
diff --git a/test/etags/c-src/machsyscalls.h b/test/manual/etags/c-src/machsyscalls.h
index 8b33dc4e7e..8b33dc4e7e 100644
--- a/test/etags/c-src/machsyscalls.h
+++ b/test/manual/etags/c-src/machsyscalls.h
diff --git a/test/etags/c-src/sysdep.h b/test/manual/etags/c-src/sysdep.h
index 6409fcc1e1..6409fcc1e1 100644
--- a/test/etags/c-src/sysdep.h
+++ b/test/manual/etags/c-src/sysdep.h
diff --git a/test/etags/c-src/tab.c b/test/manual/etags/c-src/tab.c
index b25d55cb2e..b25d55cb2e 100644
--- a/test/etags/c-src/tab.c
+++ b/test/manual/etags/c-src/tab.c
diff --git a/test/etags/c-src/torture.c b/test/manual/etags/c-src/torture.c
index 77c3763564..77c3763564 100644
--- a/test/etags/c-src/torture.c
+++ b/test/manual/etags/c-src/torture.c
diff --git a/test/etags/cp-src/MDiagArray2.h b/test/manual/etags/cp-src/MDiagArray2.h
index 78ee5e1523..78ee5e1523 100644
--- a/test/etags/cp-src/MDiagArray2.h
+++ b/test/manual/etags/cp-src/MDiagArray2.h
diff --git a/test/etags/cp-src/Range.h b/test/manual/etags/cp-src/Range.h
index b8cbab47eb..b8cbab47eb 100644
--- a/test/etags/cp-src/Range.h
+++ b/test/manual/etags/cp-src/Range.h
diff --git a/test/etags/cp-src/burton.cpp b/test/manual/etags/cp-src/burton.cpp
index d86ad758d8..d86ad758d8 100644
--- a/test/etags/cp-src/burton.cpp
+++ b/test/manual/etags/cp-src/burton.cpp
diff --git a/test/etags/cp-src/c.C b/test/manual/etags/cp-src/c.C
index 2c5f7e01fa..2c5f7e01fa 100644
--- a/test/etags/cp-src/c.C
+++ b/test/manual/etags/cp-src/c.C
diff --git a/test/etags/cp-src/clheir.cpp.gz b/test/manual/etags/cp-src/clheir.cpp.gz
index 38b08a8e7f..38b08a8e7f 100644
--- a/test/etags/cp-src/clheir.cpp.gz
+++ b/test/manual/etags/cp-src/clheir.cpp.gz
Binary files differ
diff --git a/test/etags/cp-src/clheir.hpp b/test/manual/etags/cp-src/clheir.hpp
index 55d91228fb..55d91228fb 100644
--- a/test/etags/cp-src/clheir.hpp
+++ b/test/manual/etags/cp-src/clheir.hpp
diff --git a/test/etags/cp-src/conway.cpp b/test/manual/etags/cp-src/conway.cpp
index 1e600147ed..1e600147ed 100644
--- a/test/etags/cp-src/conway.cpp
+++ b/test/manual/etags/cp-src/conway.cpp
diff --git a/test/etags/cp-src/conway.hpp b/test/manual/etags/cp-src/conway.hpp
index 9fbb251752..9fbb251752 100644
--- a/test/etags/cp-src/conway.hpp
+++ b/test/manual/etags/cp-src/conway.hpp
diff --git a/test/etags/cp-src/fail.C b/test/manual/etags/cp-src/fail.C
index c602ed2639..c602ed2639 100644
--- a/test/etags/cp-src/fail.C
+++ b/test/manual/etags/cp-src/fail.C
diff --git a/test/etags/cp-src/functions.cpp b/test/manual/etags/cp-src/functions.cpp
index fb546ed4de..764498d408 100644
--- a/test/etags/cp-src/functions.cpp
+++ b/test/manual/etags/cp-src/functions.cpp
@@ -1,7 +1,7 @@
#include "main.hpp"
#pragma ident "@(#)functions.cpp 1.0 98/11/12 (c) Rupak Rathore"
-// Constructor default argument initialises to today's values
+// Constructor default argument initializes to today's values
void Date::setDate ( int d , int m , int y ){
time_t t;
struct tm * ptm;
@@ -9,9 +9,9 @@ void Date::setDate ( int d , int m , int y ){
if ( date != NULL )
delete date;
date = NULL;
- if ( d == 0 && m == 0 && y == 0 ) // explicity called or default constructor hence leave it.
+ if ( d == 0 && m == 0 && y == 0 ) //Explicitly called or default constructor hence leave it.
return;
- if ( d < 0 && m < 0 && d < 0 ) // Special instruction to intialise to today's value
+ if ( d < 0 && m < 0 && d < 0 ) //Special instruction to initialize to today's value
d=m=y=0;
date = new tm;
ptm=localtime ( &t ) ;
diff --git a/test/etags/cp-src/screen.cpp b/test/manual/etags/cp-src/screen.cpp
index 1958a19d62..1958a19d62 100644
--- a/test/etags/cp-src/screen.cpp
+++ b/test/manual/etags/cp-src/screen.cpp
diff --git a/test/etags/cp-src/screen.hpp b/test/manual/etags/cp-src/screen.hpp
index a7099a3379..a7099a3379 100644
--- a/test/etags/cp-src/screen.hpp
+++ b/test/manual/etags/cp-src/screen.hpp
diff --git a/test/etags/cp-src/x.cc b/test/manual/etags/cp-src/x.cc
index a236060281..a236060281 100644
--- a/test/etags/cp-src/x.cc
+++ b/test/manual/etags/cp-src/x.cc
diff --git a/test/etags/el-src/TAGTEST.EL b/test/manual/etags/el-src/TAGTEST.EL
index acf0baf82f..acf0baf82f 100644
--- a/test/etags/el-src/TAGTEST.EL
+++ b/test/manual/etags/el-src/TAGTEST.EL
diff --git a/test/etags/el-src/emacs/lisp/progmodes/etags.el b/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el
index 5d28657e28..5d28657e28 100644
--- a/test/etags/el-src/emacs/lisp/progmodes/etags.el
+++ b/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el
diff --git a/test/etags/erl-src/gs_dialog.erl b/test/manual/etags/erl-src/gs_dialog.erl
index c04ee8be0c..c04ee8be0c 100644
--- a/test/etags/erl-src/gs_dialog.erl
+++ b/test/manual/etags/erl-src/gs_dialog.erl
diff --git a/test/etags/f-src/entry.for b/test/manual/etags/f-src/entry.for
index 52b8a2487c..52b8a2487c 100644
--- a/test/etags/f-src/entry.for
+++ b/test/manual/etags/f-src/entry.for
diff --git a/test/etags/f-src/entry.strange.gz b/test/manual/etags/f-src/entry.strange.gz
index 5f22edc86b..5f22edc86b 100644
--- a/test/etags/f-src/entry.strange.gz
+++ b/test/manual/etags/f-src/entry.strange.gz
Binary files differ
diff --git a/test/etags/f-src/entry.strange_suffix b/test/manual/etags/f-src/entry.strange_suffix
index 52b8a2487c..52b8a2487c 100644
--- a/test/etags/f-src/entry.strange_suffix
+++ b/test/manual/etags/f-src/entry.strange_suffix
diff --git a/test/etags/forth-src/test-forth.fth b/test/manual/etags/forth-src/test-forth.fth
index ce4069dfa8..ce4069dfa8 100644
--- a/test/etags/forth-src/test-forth.fth
+++ b/test/manual/etags/forth-src/test-forth.fth
diff --git a/test/etags/html-src/algrthms.html b/test/manual/etags/html-src/algrthms.html
index becd93a62d..becd93a62d 100644
--- a/test/etags/html-src/algrthms.html
+++ b/test/manual/etags/html-src/algrthms.html
diff --git a/test/etags/html-src/index.shtml b/test/manual/etags/html-src/index.shtml
index 6d8cd85885..6d8cd85885 100644
--- a/test/etags/html-src/index.shtml
+++ b/test/manual/etags/html-src/index.shtml
diff --git a/test/etags/html-src/software.html b/test/manual/etags/html-src/software.html
index b5de1e6d68..dbf8228199 100644
--- a/test/etags/html-src/software.html
+++ b/test/manual/etags/html-src/software.html
@@ -123,7 +123,7 @@ HREF="ftp://fly.cnuce.cnr.it/pub/software/octave/leasqr/">published</A> it.
Since then, the original authors Richard I. Shrager, A.Jutan, Ray Muzic, and
Sean Brennan agreed to put it under the <A
HREF="http://www.gnu.org/licenses/gpl.html">GPL</A>. Matthias Jueschke tested
-the program using a non-linear optimisation <A
+the program using a non-linear optimization <A
HREF="http://www.itl.nist.gov/div898/strd/nls/nls_main.shtml">test suite</A>,
and was satisfied with the results.
diff --git a/test/etags/html-src/softwarelibero.html b/test/manual/etags/html-src/softwarelibero.html
index b374273c96..b374273c96 100644
--- a/test/etags/html-src/softwarelibero.html
+++ b/test/manual/etags/html-src/softwarelibero.html
diff --git a/test/etags/lua-src/allegro.lua b/test/manual/etags/lua-src/allegro.lua
index c316b6f26a..c316b6f26a 100644
--- a/test/etags/lua-src/allegro.lua
+++ b/test/manual/etags/lua-src/allegro.lua
diff --git a/test/etags/lua-src/test.lua b/test/manual/etags/lua-src/test.lua
index 405eb5f1de..405eb5f1de 100644
--- a/test/etags/lua-src/test.lua
+++ b/test/manual/etags/lua-src/test.lua
diff --git a/test/etags/make-src/Makefile b/test/manual/etags/make-src/Makefile
index 016c633d79..016c633d79 100644
--- a/test/etags/make-src/Makefile
+++ b/test/manual/etags/make-src/Makefile
diff --git a/test/etags/objc-src/PackInsp.h b/test/manual/etags/objc-src/PackInsp.h
index 0e3643c828..0e3643c828 100644
--- a/test/etags/objc-src/PackInsp.h
+++ b/test/manual/etags/objc-src/PackInsp.h
diff --git a/test/etags/objc-src/PackInsp.m b/test/manual/etags/objc-src/PackInsp.m
index 41cc876850..41cc876850 100644
--- a/test/etags/objc-src/PackInsp.m
+++ b/test/manual/etags/objc-src/PackInsp.m
diff --git a/test/etags/objc-src/Subprocess.h b/test/manual/etags/objc-src/Subprocess.h
index 7e586a16a1..7e586a16a1 100644
--- a/test/etags/objc-src/Subprocess.h
+++ b/test/manual/etags/objc-src/Subprocess.h
diff --git a/test/etags/objc-src/Subprocess.m b/test/manual/etags/objc-src/Subprocess.m
index 2d8d586507..2d8d586507 100644
--- a/test/etags/objc-src/Subprocess.m
+++ b/test/manual/etags/objc-src/Subprocess.m
diff --git a/test/etags/objcpp-src/SimpleCalc.H b/test/manual/etags/objcpp-src/SimpleCalc.H
index 121ae6bada..121ae6bada 100644
--- a/test/etags/objcpp-src/SimpleCalc.H
+++ b/test/manual/etags/objcpp-src/SimpleCalc.H
diff --git a/test/etags/objcpp-src/SimpleCalc.M b/test/manual/etags/objcpp-src/SimpleCalc.M
index 34846a7ace..34846a7ace 100644
--- a/test/etags/objcpp-src/SimpleCalc.M
+++ b/test/manual/etags/objcpp-src/SimpleCalc.M
diff --git a/test/etags/pas-src/common.pas b/test/manual/etags/pas-src/common.pas
index ec8e80c4a7..ec8e80c4a7 100644
--- a/test/etags/pas-src/common.pas
+++ b/test/manual/etags/pas-src/common.pas
diff --git a/test/etags/perl-src/htlmify-cystic b/test/manual/etags/perl-src/htlmify-cystic
index de150a72b8..de150a72b8 100644
--- a/test/etags/perl-src/htlmify-cystic
+++ b/test/manual/etags/perl-src/htlmify-cystic
diff --git a/test/etags/perl-src/kai-test.pl b/test/manual/etags/perl-src/kai-test.pl
index 51b66728f1..51b66728f1 100644
--- a/test/etags/perl-src/kai-test.pl
+++ b/test/manual/etags/perl-src/kai-test.pl
diff --git a/test/etags/perl-src/yagrip.pl b/test/manual/etags/perl-src/yagrip.pl
index be9f09c02d..be9f09c02d 100644
--- a/test/etags/perl-src/yagrip.pl
+++ b/test/manual/etags/perl-src/yagrip.pl
diff --git a/test/etags/php-src/lce_functions.php b/test/manual/etags/php-src/lce_functions.php
index 6573813459..6573813459 100644
--- a/test/etags/php-src/lce_functions.php
+++ b/test/manual/etags/php-src/lce_functions.php
diff --git a/test/etags/php-src/ptest.php b/test/manual/etags/php-src/ptest.php
index 9893839b49..9893839b49 100644
--- a/test/etags/php-src/ptest.php
+++ b/test/manual/etags/php-src/ptest.php
diff --git a/test/etags/php-src/sendmail.php b/test/manual/etags/php-src/sendmail.php
index 1d15e4ad9f..1d15e4ad9f 100644
--- a/test/etags/php-src/sendmail.php
+++ b/test/manual/etags/php-src/sendmail.php
diff --git a/test/etags/prol-src/natded.prolog b/test/manual/etags/prol-src/natded.prolog
index f0ee6b41b1..f0ee6b41b1 100644
--- a/test/etags/prol-src/natded.prolog
+++ b/test/manual/etags/prol-src/natded.prolog
diff --git a/test/etags/prol-src/ordsets.prolog b/test/manual/etags/prol-src/ordsets.prolog
index 7192129fdc..7192129fdc 100644
--- a/test/etags/prol-src/ordsets.prolog
+++ b/test/manual/etags/prol-src/ordsets.prolog
diff --git a/test/etags/ps-src/rfc1245.ps b/test/manual/etags/ps-src/rfc1245.ps
index ad2244f1dc..ad2244f1dc 100644
--- a/test/etags/ps-src/rfc1245.ps
+++ b/test/manual/etags/ps-src/rfc1245.ps
diff --git a/test/etags/pyt-src/server.py b/test/manual/etags/pyt-src/server.py
index 68aa29abcf..68aa29abcf 100644
--- a/test/etags/pyt-src/server.py
+++ b/test/manual/etags/pyt-src/server.py
diff --git a/test/etags/ruby-src/test.rb b/test/manual/etags/ruby-src/test.rb
index adb2cb1d0b..adb2cb1d0b 100644
--- a/test/etags/ruby-src/test.rb
+++ b/test/manual/etags/ruby-src/test.rb
diff --git a/test/manual/etags/ruby-src/test1.ruby b/test/manual/etags/ruby-src/test1.ruby
new file mode 100644
index 0000000000..26b7d538b6
--- /dev/null
+++ b/test/manual/etags/ruby-src/test1.ruby
@@ -0,0 +1,29 @@
+class A
+ def a()
+ super(" do ")
+ end
+ def b()
+ end
+end
+
+module A
+ class B
+ ABC = 4
+
+ def foo!
+ end
+
+ def self._bar?(abc)
+ end
+
+ class << self
+ def qux=(tee)
+ end
+ end
+ end
+end
+
+A::Constant = 5
+
+# def foo_in_comment
+# end
diff --git a/test/etags/tex-src/gzip.texi b/test/manual/etags/tex-src/gzip.texi
index 07be37187d..07be37187d 100644
--- a/test/etags/tex-src/gzip.texi
+++ b/test/manual/etags/tex-src/gzip.texi
diff --git a/test/etags/tex-src/nonewline.tex b/test/manual/etags/tex-src/nonewline.tex
index 8cc01ce915..8cc01ce915 100644
--- a/test/etags/tex-src/nonewline.tex
+++ b/test/manual/etags/tex-src/nonewline.tex
diff --git a/test/etags/tex-src/testenv.tex b/test/manual/etags/tex-src/testenv.tex
index efb83cb834..efb83cb834 100644
--- a/test/etags/tex-src/testenv.tex
+++ b/test/manual/etags/tex-src/testenv.tex
diff --git a/test/etags/tex-src/texinfo.tex b/test/manual/etags/tex-src/texinfo.tex
index aa745c6847..aa745c6847 100644
--- a/test/etags/tex-src/texinfo.tex
+++ b/test/manual/etags/tex-src/texinfo.tex
diff --git a/test/etags/y-src/atest.y b/test/manual/etags/y-src/atest.y
index 81087b8d86..81087b8d86 100644
--- a/test/etags/y-src/atest.y
+++ b/test/manual/etags/y-src/atest.y
diff --git a/test/etags/y-src/cccp.c b/test/manual/etags/y-src/cccp.c
index 776e3dad4b..776e3dad4b 100644
--- a/test/etags/y-src/cccp.c
+++ b/test/manual/etags/y-src/cccp.c
diff --git a/test/etags/y-src/cccp.y b/test/manual/etags/y-src/cccp.y
index 1cd2111464..1cd2111464 100644
--- a/test/etags/y-src/cccp.y
+++ b/test/manual/etags/y-src/cccp.y
diff --git a/test/etags/y-src/parse.c b/test/manual/etags/y-src/parse.c
index 9509867427..9509867427 100644
--- a/test/etags/y-src/parse.c
+++ b/test/manual/etags/y-src/parse.c
diff --git a/test/etags/y-src/parse.y b/test/manual/etags/y-src/parse.y
index 824c98d624..824c98d624 100644
--- a/test/etags/y-src/parse.y
+++ b/test/manual/etags/y-src/parse.y
diff --git a/test/indent/Makefile b/test/manual/indent/Makefile
index 83162681d7..83162681d7 100644
--- a/test/indent/Makefile
+++ b/test/manual/indent/Makefile
diff --git a/test/indent/css-mode.css b/test/manual/indent/css-mode.css
index 3a00739bfc..3a00739bfc 100644
--- a/test/indent/css-mode.css
+++ b/test/manual/indent/css-mode.css
diff --git a/test/indent/js-indent-init-dynamic.js b/test/manual/indent/js-indent-init-dynamic.js
index 536a976e86..536a976e86 100644
--- a/test/indent/js-indent-init-dynamic.js
+++ b/test/manual/indent/js-indent-init-dynamic.js
diff --git a/test/indent/js-indent-init-t.js b/test/manual/indent/js-indent-init-t.js
index bb755420ba..bb755420ba 100644
--- a/test/indent/js-indent-init-t.js
+++ b/test/manual/indent/js-indent-init-t.js
diff --git a/test/indent/js-jsx.js b/test/manual/indent/js-jsx.js
index 7401939d28..7401939d28 100644
--- a/test/indent/js-jsx.js
+++ b/test/manual/indent/js-jsx.js
diff --git a/test/indent/js.js b/test/manual/indent/js.js
index b40d47b3e5..b40d47b3e5 100644
--- a/test/indent/js.js
+++ b/test/manual/indent/js.js
diff --git a/test/indent/latex-mode.tex b/test/manual/indent/latex-mode.tex
index 55c8e7033b..55c8e7033b 100644
--- a/test/indent/latex-mode.tex
+++ b/test/manual/indent/latex-mode.tex
diff --git a/test/indent/modula2.mod b/test/manual/indent/modula2.mod
index f8fbcb7f4e..f8fbcb7f4e 100644
--- a/test/indent/modula2.mod
+++ b/test/manual/indent/modula2.mod
diff --git a/test/indent/nxml.xml b/test/manual/indent/nxml.xml
index 61b84f270b..61b84f270b 100644
--- a/test/indent/nxml.xml
+++ b/test/manual/indent/nxml.xml
diff --git a/test/indent/octave.m b/test/manual/indent/octave.m
index 4758f9933c..4758f9933c 100644
--- a/test/indent/octave.m
+++ b/test/manual/indent/octave.m
diff --git a/test/indent/pascal.pas b/test/manual/indent/pascal.pas
index 2d09eb775a..2d09eb775a 100644
--- a/test/indent/pascal.pas
+++ b/test/manual/indent/pascal.pas
diff --git a/test/indent/perl.perl b/test/manual/indent/perl.perl
index f86a09b273..f86a09b273 100755
--- a/test/indent/perl.perl
+++ b/test/manual/indent/perl.perl
diff --git a/test/indent/prolog.prolog b/test/manual/indent/prolog.prolog
index 9ac6df1b6c..9ac6df1b6c 100644
--- a/test/indent/prolog.prolog
+++ b/test/manual/indent/prolog.prolog
diff --git a/test/indent/ps-mode.ps b/test/manual/indent/ps-mode.ps
index 4b4ee0f10c..4b4ee0f10c 100644
--- a/test/indent/ps-mode.ps
+++ b/test/manual/indent/ps-mode.ps
diff --git a/test/indent/ruby.rb b/test/manual/indent/ruby.rb
index b038512b11..b038512b11 100644
--- a/test/indent/ruby.rb
+++ b/test/manual/indent/ruby.rb
diff --git a/test/indent/scheme.scm b/test/manual/indent/scheme.scm
index 84d0f6d878..84d0f6d878 100644
--- a/test/indent/scheme.scm
+++ b/test/manual/indent/scheme.scm
diff --git a/test/indent/scss-mode.scss b/test/manual/indent/scss-mode.scss
index e1ec90a529..e1ec90a529 100644
--- a/test/indent/scss-mode.scss
+++ b/test/manual/indent/scss-mode.scss
diff --git a/test/indent/sgml-mode-attribute.html b/test/manual/indent/sgml-mode-attribute.html
index 4cbec0af2c..4cbec0af2c 100644
--- a/test/indent/sgml-mode-attribute.html
+++ b/test/manual/indent/sgml-mode-attribute.html
diff --git a/test/indent/shell.rc b/test/manual/indent/shell.rc
index e5c63e335b..e5c63e335b 100755
--- a/test/indent/shell.rc
+++ b/test/manual/indent/shell.rc
diff --git a/test/indent/shell.sh b/test/manual/indent/shell.sh
index dc184ea0d7..dc184ea0d7 100755
--- a/test/indent/shell.sh
+++ b/test/manual/indent/shell.sh
diff --git a/test/redisplay-testsuite.el b/test/manual/redisplay-testsuite.el
index 37a5649dc1..37a5649dc1 100644
--- a/test/redisplay-testsuite.el
+++ b/test/manual/redisplay-testsuite.el
diff --git a/test/rmailmm.el b/test/manual/rmailmm.el
index 96acbc4735..96acbc4735 100644
--- a/test/rmailmm.el
+++ b/test/manual/rmailmm.el
diff --git a/test/automated/finalizer-tests.el b/test/src/alloc-tests.el
index 5aa35f4a2a..97c6b4f807 100644
--- a/test/automated/finalizer-tests.el
+++ b/test/src/alloc-tests.el
@@ -1,4 +1,4 @@
-;;; finalizer-tests.el --- Finalizer tests -*- lexical-binding: t -*-
+;;; alloc-tests.el --- alloc tests -*- lexical-binding: t -*-
;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
diff --git a/test/automated/buffer-tests.el b/test/src/buffer-tests.el
index 62875216a3..62875216a3 100644
--- a/test/automated/buffer-tests.el
+++ b/test/src/buffer-tests.el
diff --git a/test/src/callproc-tests.el b/test/src/callproc-tests.el
new file mode 100644
index 0000000000..46541aba78
--- /dev/null
+++ b/test/src/callproc-tests.el
@@ -0,0 +1,39 @@
+;;; callproc-tests.el --- callproc.c tests -*- lexical-binding: t -*-
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(eval-when-compile (require 'cl-lib))
+
+(ert-deftest initial-environment-preserved ()
+ "Check that `initial-environment' is not modified by Emacs (Bug #10980)."
+ (skip-unless (eq system-type 'windows-nt))
+ (cl-destructuring-bind (initial-shell shell)
+ (with-temp-buffer
+ (let ((process-environment (cons "SHELL" process-environment)))
+ (call-process (expand-file-name invocation-name invocation-directory)
+ nil t nil
+ "--batch" "-Q" "--eval"
+ (prin1-to-string
+ '(progn (prin1 (getenv-internal "SHELL" initial-environment))
+ (prin1 (getenv-internal "SHELL"))))))
+ (split-string-and-unquote (buffer-string)))
+ (should (equal initial-shell "nil"))
+ (should-not (equal initial-shell shell))))
diff --git a/test/src/chartab-tests.el b/test/src/chartab-tests.el
new file mode 100644
index 0000000000..016ddcdde6
--- /dev/null
+++ b/test/src/chartab-tests.el
@@ -0,0 +1,51 @@
+;;; chartab-tests.el --- Tests for char-tab.c
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Eli Zaretskii <eliz@gnu.org>
+
+;; This program 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 3 of the License, or
+;; (at your option) any later version.
+
+;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+
+(defun chartab-set-and-test (rng)
+ (let ((tbl (make-char-table nil nil))
+ (from (car rng))
+ (to (cdr rng)))
+ (set-char-table-range tbl rng t)
+ (should (eq (aref tbl from) t))
+ (should (eq (aref tbl to) t))
+ (should (eq (aref tbl (/ (+ from to) 2)) t))
+ (when (< to (max-char))
+ (should-not (eq (aref tbl (1+ to)) t)))
+ (when (> from 0)
+ (should-not (eq (aref tbl (1- from)) t)))))
+
+(ert-deftest chartab-test-range-setting ()
+ (mapc (lambda (elt)
+ (chartab-set-and-test elt))
+ '((0 . 127)
+ (128 . 256)
+ (#x1000 . #x1fff)
+ (#x1001 . #x2000)
+ (#x10000 . #x20000)
+ (#x10001 . #x1ffff)
+ (#x20000 . #x30000)
+ (#xe0e00 . #xe0ef6)
+ )))
+
+(provide 'chartab-tests)
+;;; chartab-tests.el ends here
diff --git a/test/automated/cmds-tests.el b/test/src/cmds-tests.el
index 4a30d9872a..4a30d9872a 100644
--- a/test/automated/cmds-tests.el
+++ b/test/src/cmds-tests.el
diff --git a/test/automated/data-tests.el b/test/src/data-tests.el
index 0a292336f3..0a292336f3 100644
--- a/test/automated/data-tests.el
+++ b/test/src/data-tests.el
diff --git a/test/automated/zlib-tests.el b/test/src/decompress-tests.el
index 7ece58d97c..f0264ec548 100644
--- a/test/automated/zlib-tests.el
+++ b/test/src/decompress-tests.el
@@ -1,4 +1,4 @@
-;;; zlib-tests.el --- Test suite for zlib.
+;;; decompress-tests.el --- Test suite for decompress.
;; Copyright (C) 2013-2016 Free Software Foundation, Inc.
@@ -40,6 +40,6 @@
(buffer-string))
"foo\n"))))
-(provide 'zlib-tests)
+(provide 'decompress-tests)
-;;; zlib-tests.el ends here.
+;;; decompress-tests.el ends here.
diff --git a/test/src/doc-tests.el b/test/src/doc-tests.el
new file mode 100644
index 0000000000..be49054574
--- /dev/null
+++ b/test/src/doc-tests.el
@@ -0,0 +1,92 @@
+;;; doc-tests.el --- Tests for doc.c
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Eli Zaretskii <eliz@gnu.org>
+
+;; This program 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 3 of the License, or
+;; (at your option) any later version.
+
+;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+
+(ert-deftest doc-test-substitute-command-keys ()
+ ;; Bindings.
+ (should (string= (substitute-command-keys "foo \\[goto-char]") "foo M-g c"))
+ ;; Cannot use string= here, as that compares unibyte and multibyte
+ ;; strings not equal.
+ (should (compare-strings
+ (substitute-command-keys "\200 \\[goto-char]") nil nil
+ "\200 M-g c" nil nil))
+ ;; Literals.
+ (should (string= (substitute-command-keys "foo \\=\\[goto-char]")
+ "foo \\[goto-char]"))
+ (should (string= (substitute-command-keys "foo \\=\\=")
+ "foo \\="))
+ ;; Keymaps.
+ (should (string= (substitute-command-keys
+ "\\{minibuffer-local-must-match-map}")
+ "\
+key binding
+--- -------
+
+C-g abort-recursive-edit
+TAB minibuffer-complete
+C-j minibuffer-complete-and-exit
+RET minibuffer-complete-and-exit
+ESC Prefix Command
+SPC minibuffer-complete-word
+? minibuffer-completion-help
+<C-tab> file-cache-minibuffer-complete
+<XF86Back> previous-history-element
+<XF86Forward> next-history-element
+<down> next-line-or-history-element
+<next> next-history-element
+<prior> switch-to-completions
+<up> previous-line-or-history-element
+
+M-v switch-to-completions
+
+M-n next-history-element
+M-p previous-history-element
+M-r previous-matching-history-element
+M-s next-matching-history-element
+
+"))
+ (should (string=
+ (substitute-command-keys
+ "\\<minibuffer-local-must-match-map>\\[abort-recursive-edit]")
+ "C-g"))
+ ;; Allow any style of quotes, since the terminal might not support
+ ;; UTF-8.
+ (should (string-match
+ "\nUses keymap [`‘']foobar-map['’], which is not currently defined.\n"
+ (substitute-command-keys "\\{foobar-map}")))
+ ;; Quotes.
+ (should (let ((text-quoting-style 'grave))
+ (string= (substitute-command-keys "quotes `like this'")
+ "quotes `like this'")))
+ (should (let ((text-quoting-style 'grave))
+ (string= (substitute-command-keys "quotes ‘like this’")
+ "quotes ‘like this’")))
+ (should (let ((text-quoting-style 'straight))
+ (string= (substitute-command-keys "quotes `like this'")
+ "quotes 'like this'")))
+ ;; Bugs.
+ (should (string= (substitute-command-keys "\\[foobar") "\\[foobar"))
+ (should (string= (substitute-command-keys "\\=") "\\="))
+ )
+
+(provide 'doc-tests)
+;;; doc-tests.el ends here
diff --git a/test/src/editfns-tests.el b/test/src/editfns-tests.el
new file mode 100644
index 0000000000..2f90d1e749
--- /dev/null
+++ b/test/src/editfns-tests.el
@@ -0,0 +1,136 @@
+;;; editfns-tests.el -- tests for editfns.c
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; This program 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 3 of the License, or
+;; (at your option) any later version.
+
+;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+
+(ert-deftest format-properties ()
+ ;; Bug #23730
+ (should (ert-equal-including-properties
+ (format (propertize "%d" 'face '(:background "red")) 1)
+ #("1" 0 1 (face (:background "red")))))
+ (should (ert-equal-including-properties
+ (format (propertize "%2d" 'face '(:background "red")) 1)
+ #(" 1" 0 2 (face (:background "red")))))
+ (should (ert-equal-including-properties
+ (format (propertize "%02d" 'face '(:background "red")) 1)
+ #("01" 0 2 (face (:background "red")))))
+ (should (ert-equal-including-properties
+ (format (concat (propertize "%2d" 'x 'X)
+ (propertize "a" 'a 'A)
+ (propertize "b" 'b 'B))
+ 1)
+ #(" 1ab" 0 2 (x X) 2 3 (a A) 3 4 (b B))))
+
+ ;; Bug #5306
+ (should (ert-equal-including-properties
+ (format "%.10s"
+ (concat "1234567890aaaa"
+ (propertize "12345678901234567890" 'xxx 25)))
+ "1234567890"))
+ (should (ert-equal-including-properties
+ (format "%.10s"
+ (concat "123456789"
+ (propertize "12345678901234567890" 'xxx 25)))
+ #("1234567891" 9 10 (xxx 25))))
+
+ ;; Bug #23859
+ (should (ert-equal-including-properties
+ (format "%4s" (propertize "hi" 'face 'bold))
+ #(" hi" 2 4 (face bold))))
+
+ ;; Bug #23897
+ (should (ert-equal-including-properties
+ (format "%s" (concat (propertize "01234" 'face 'bold) "56789"))
+ #("0123456789" 0 5 (face bold))))
+ (should (ert-equal-including-properties
+ (format "%s" (concat (propertize "01" 'face 'bold)
+ (propertize "23" 'face 'underline)
+ "45"))
+ #("012345" 0 2 (face bold) 2 4 (face underline))))
+ ;; The last property range is extended to include padding on the
+ ;; right, but the first range is not extended to the left to include
+ ;; padding on the left!
+ (should (ert-equal-including-properties
+ (format "%12s" (concat (propertize "01234" 'face 'bold) "56789"))
+ #(" 0123456789" 2 7 (face bold))))
+ (should (ert-equal-including-properties
+ (format "%-12s" (concat (propertize "01234" 'face 'bold) "56789"))
+ #("0123456789 " 0 5 (face bold))))
+ (should (ert-equal-including-properties
+ (format "%10s" (concat (propertize "01" 'face 'bold)
+ (propertize "23" 'face 'underline)
+ "45"))
+ #(" 012345" 4 6 (face bold) 6 8 (face underline))))
+ (should (ert-equal-including-properties
+ (format "%-10s" (concat (propertize "01" 'face 'bold)
+ (propertize "23" 'face 'underline)
+ "45"))
+ #("012345 " 0 2 (face bold) 2 4 (face underline))))
+ (should (ert-equal-including-properties
+ (format "%-10s" (concat (propertize "01" 'face 'bold)
+ (propertize "23" 'face 'underline)
+ (propertize "45" 'face 'italic)))
+ #("012345 " 0 2 (face bold) 2 4 (face underline) 4 10 (face italic)))))
+
+;; Tests for bug#5131.
+(defun transpose-test-reverse-word (start end)
+ "Reverse characters in a word by transposing pairs of characters."
+ (let ((begm (make-marker))
+ (endm (make-marker)))
+ (set-marker begm start)
+ (set-marker endm end)
+ (while (> endm begm)
+ (progn (transpose-regions begm (1+ begm) endm (1+ endm) t)
+ (set-marker begm (1+ begm))
+ (set-marker endm (1- endm))))))
+
+(defun transpose-test-get-byte-positions (len)
+ "Validate character position to byte position translation."
+ (let ((bytes '()))
+ (dotimes (pos len)
+ (setq bytes (add-to-list 'bytes (position-bytes (1+ pos)) t)))
+ bytes))
+
+(ert-deftest transpose-ascii-regions-test ()
+ (with-temp-buffer
+ (erase-buffer)
+ (insert "abcd")
+ (transpose-test-reverse-word 1 4)
+ (should (string= (buffer-string) "dcba"))
+ (should (equal (transpose-test-get-byte-positions 5) '(1 2 3 4 5)))))
+
+(ert-deftest transpose-nonascii-regions-test-1 ()
+ (with-temp-buffer
+ (erase-buffer)
+ (insert "÷bcd")
+ (transpose-test-reverse-word 1 4)
+ (should (string= (buffer-string) "dcb÷"))
+ (should (equal (transpose-test-get-byte-positions 5) '(1 2 3 4 6)))))
+
+(ert-deftest transpose-nonascii-regions-test-2 ()
+ (with-temp-buffer
+ (erase-buffer)
+ (insert "÷ab\"äé")
+ (transpose-test-reverse-word 1 6)
+ (should (string= (buffer-string) "éä\"ba÷"))
+ (should (equal (transpose-test-get-byte-positions 7) '(1 3 5 6 7 8 10)))))
+
+;;; editfns-tests.el ends here
diff --git a/test/automated/fns-tests.el b/test/src/fns-tests.el
index 762f7bdd94..c533bad3cd 100644
--- a/test/automated/fns-tests.el
+++ b/test/src/fns-tests.el
@@ -191,3 +191,57 @@
(string-collate-lessp
a b (if (eq system-type 'windows-nt) "enu_USA" "en_US.UTF-8")))))
'("Adrian" "Ævar" "Agustín" "Eli"))))
+
+(ert-deftest fns-tests-string-version-lessp ()
+ (should (string-version-lessp "foo2.png" "foo12.png"))
+ (should (not (string-version-lessp "foo12.png" "foo2.png")))
+ (should (string-version-lessp "foo12.png" "foo20000.png"))
+ (should (not (string-version-lessp "foo20000.png" "foo12.png")))
+ (should (string-version-lessp "foo.png" "foo2.png"))
+ (should (not (string-version-lessp "foo2.png" "foo.png")))
+ (should (equal (sort '("foo12.png" "foo2.png" "foo1.png")
+ 'string-version-lessp)
+ '("foo1.png" "foo2.png" "foo12.png")))
+ (should (string-version-lessp "foo2" "foo1234"))
+ (should (not (string-version-lessp "foo1234" "foo2")))
+ (should (string-version-lessp "foo.png" "foo2"))
+ (should (string-version-lessp "foo1.25.5.png" "foo1.125.5"))
+ (should (string-version-lessp "2" "1245"))
+ (should (not (string-version-lessp "1245" "2"))))
+
+(ert-deftest fns-tests-func-arity ()
+ (should (equal (func-arity 'car) '(1 . 1)))
+ (should (equal (func-arity 'caar) '(1 . 1)))
+ (should (equal (func-arity 'format) '(1 . many)))
+ (require 'info)
+ (should (equal (func-arity 'Info-goto-node) '(1 . 3)))
+ (should (equal (func-arity (lambda (&rest x))) '(0 . many)))
+ (should (equal (func-arity (eval (lambda (x &optional y)) nil)) '(1 . 2)))
+ (should (equal (func-arity (eval (lambda (x &optional y)) t)) '(1 . 2)))
+ (should (equal (func-arity 'let) '(1 . unevalled))))
+
+(ert-deftest fns-tests-hash-buffer ()
+ (should (equal (sha1 "foo") "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"))
+ (should (equal (with-temp-buffer
+ (insert "foo")
+ (buffer-hash))
+ (sha1 "foo")))
+ ;; This tests whether the presence of a gap in the middle of the
+ ;; buffer is handled correctly.
+ (should (equal (with-temp-buffer
+ (insert "foo")
+ (goto-char 2)
+ (insert " ")
+ (backward-delete-char 1)
+ (buffer-hash))
+ (sha1 "foo"))))
+
+(ert-deftest fns-tests-mapcan ()
+ (should-error (mapcan))
+ (should-error (mapcan #'identity))
+ (should-error (mapcan #'identity (make-char-table 'foo)))
+ (should (equal (mapcan #'list '(1 2 3)) '(1 2 3)))
+ ;; `mapcan' is destructive
+ (let ((data '((foo) (bar))))
+ (should (equal (mapcan #'identity data) '(foo bar)))
+ (should (equal data '((foo bar) (bar))))))
diff --git a/test/automated/inotify-test.el b/test/src/inotify-tests.el
index 54977925f8..54977925f8 100644
--- a/test/automated/inotify-test.el
+++ b/test/src/inotify-tests.el
diff --git a/test/automated/keymap-tests.el b/test/src/keymap-tests.el
index b835fc7530..b835fc7530 100644
--- a/test/automated/keymap-tests.el
+++ b/test/src/keymap-tests.el
diff --git a/test/src/lread-tests.el b/test/src/lread-tests.el
new file mode 100644
index 0000000000..1a82d133a4
--- /dev/null
+++ b/test/src/lread-tests.el
@@ -0,0 +1,107 @@
+;;; lread-tests.el --- tests for lread.c -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Philipp Stephani <phst@google.com>
+
+;; This file is part of GNU Emacs.
+
+;; This program 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 3 of the License, or
+;; (at your option) any later version.
+
+;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Unit tests for code in src/lread.c.
+
+;;; Code:
+
+(ert-deftest lread-char-number ()
+ (should (equal (read "?\\N{U+A817}") #xA817)))
+
+(ert-deftest lread-char-name-1 ()
+ (should (equal (read "?\\N{SYLOTI NAGRI LETTER \n DHO}")
+ #xA817)))
+(ert-deftest lread-char-name-2 ()
+ (should (equal (read "?\\N{BED}") #x1F6CF)))
+(ert-deftest lread-char-name-3 ()
+ (should (equal (read "?\\N{U+BED}") #xBED)))
+(ert-deftest lread-char-name-4 ()
+ (should (equal (read "?\\N{VARIATION SELECTOR-1}") #xFE00)))
+(ert-deftest lread-char-name-5 ()
+ (should (equal (read "?\\N{VARIATION SELECTOR-16}") #xFE0F)))
+(ert-deftest lread-char-name-6 ()
+ (should (equal (read "?\\N{VARIATION SELECTOR-17}") #xE0100)))
+(ert-deftest lread-char-name-7 ()
+ (should (equal (read "?\\N{VARIATION SELECTOR-256}") #xE01EF)))
+(ert-deftest lread-char-name-8 ()
+ (should (equal (read "?\\N{CJK COMPATIBILITY IDEOGRAPH-F900}") #xF900)))
+(ert-deftest lread-char-name-9 ()
+ (should (equal (read "?\\N{CJK COMPATIBILITY IDEOGRAPH-FAD9}") #xFAD9)))
+(ert-deftest lread-char-name-10 ()
+ (should (equal (read "?\\N{CJK COMPATIBILITY IDEOGRAPH-2F800}") #x2F800)))
+(ert-deftest lread-char-name-11 ()
+ (should (equal (read "?\\N{CJK COMPATIBILITY IDEOGRAPH-2FA1D}") #x2FA1D)))
+
+(ert-deftest lread-char-invalid-number ()
+ (should-error (read "?\\N{U+110000}") :type 'invalid-read-syntax))
+
+(ert-deftest lread-char-invalid-name-1 ()
+ (should-error (read "?\\N{DOES NOT EXIST}")) :type 'invalid-read-syntax)
+(ert-deftest lread-char-invalid-name-2 ()
+ (should-error (read "?\\N{VARIATION SELECTOR-0}")) :type 'invalid-read-syntax)
+(ert-deftest lread-char-invalid-name-3 ()
+ (should-error (read "?\\N{VARIATION SELECTOR-257}"))
+ :type 'invalid-read-syntax)
+(ert-deftest lread-char-invalid-name-4 ()
+ (should-error (read "?\\N{VARIATION SELECTOR--0}"))
+ :type 'invalid-read-syntax)
+(ert-deftest lread-char-invalid-name-5 ()
+ (should-error (read "?\\N{CJK COMPATIBILITY IDEOGRAPH-F8FF}"))
+ :type 'invalid-read-syntax)
+(ert-deftest lread-char-invalid-name-6 ()
+ (should-error (read "?\\N{CJK COMPATIBILITY IDEOGRAPH-FADA}"))
+ :type 'invalid-read-syntax)
+(ert-deftest lread-char-invalid-name-7 ()
+ (should-error (read "?\\N{CJK COMPATIBILITY IDEOGRAPH-2F7FF}"))
+ :type 'invalid-read-syntax)
+(ert-deftest lread-char-invalid-name-8 ()
+ (should-error (read "?\\N{CJK COMPATIBILITY IDEOGRAPH-2FA1E}"))
+ :type 'invalid-read-syntax)
+
+(ert-deftest lread-char-non-ascii-name ()
+ (should-error (read "?\\N{LATIN CAPITAL LETTER Ø}")
+ :type 'invalid-read-syntax))
+
+(ert-deftest lread-char-empty-name ()
+ (should-error (read "?\\N{}") :type 'invalid-read-syntax))
+
+(ert-deftest lread-char-surrogate-1 ()
+ (should-error (read "?\\N{U+D800}") :type 'invalid-read-syntax))
+(ert-deftest lread-char-surrogate-2 ()
+ (should-error (read "?\\N{U+D801}") :type 'invalid-read-syntax))
+(ert-deftest lread-char-surrogate-3 ()
+ (should-error (read "?\\N{U+Dffe}") :type 'invalid-read-syntax))
+(ert-deftest lread-char-surrogate-4 ()
+ (should-error (read "?\\N{U+DFFF}") :type 'invalid-read-syntax))
+
+(ert-deftest lread-string-char-number-1 ()
+ (should (equal (read "\"a\\N{U+A817}b\"") "a\uA817b")))
+(ert-deftest lread-string-char-number-2 ()
+ (should-error (read "?\\N{0.5}") :type 'invalid-read-syntax))
+(ert-deftest lread-string-char-number-3 ()
+ (should-error (read "?\\N{U+-0}") :type 'invalid-read-syntax))
+
+(ert-deftest lread-string-char-name ()
+ (should (equal (read "\"a\\N{SYLOTI NAGRI LETTER DHO}b\"") "a\uA817b")))
+
+;;; lread-tests.el ends here
diff --git a/test/automated/print-tests.el b/test/src/print-tests.el
index 1abfa53581..1abfa53581 100644
--- a/test/automated/print-tests.el
+++ b/test/src/print-tests.el
diff --git a/test/src/regex-resources/BOOST.tests b/test/src/regex-resources/BOOST.tests
new file mode 100644
index 0000000000..98fd3b6abf
--- /dev/null
+++ b/test/src/regex-resources/BOOST.tests
@@ -0,0 +1,829 @@
+;
+;
+; this file contains a script of tests to run through regress.exe
+;
+; comments start with a semicolon and proceed to the end of the line
+;
+; changes to regular expression compile flags start with a "-" as the first
+; non-whitespace character and consist of a list of the printable names
+; of the flags, for example "match_default"
+;
+; Other lines contain a test to perform using the current flag status
+; the first token contains the expression to compile, the second the string
+; to match it against. If the second string is "!" then the expression should
+; not compile, that is the first string is an invalid regular expression.
+; This is then followed by a list of integers that specify what should match,
+; each pair represents the starting and ending positions of a subexpression
+; starting with the zeroth subexpression (the whole match).
+; A value of -1 indicates that the subexpression should not take part in the
+; match at all, if the first value is -1 then no part of the expression should
+; match the string.
+;
+; Tests taken from BOOST testsuite and adapted to glibc regex.
+;
+; Boost Software License - Version 1.0 - August 17th, 2003
+;
+; Permission is hereby granted, free of charge, to any person or organization
+; obtaining a copy of the software and accompanying documentation covered by
+; this license (the "Software") to use, reproduce, display, distribute,
+; execute, and transmit the Software, and to prepare derivative works of the
+; Software, and to permit third-parties to whom the Software is furnished to
+; do so, all subject to the following:
+;
+; The copyright notices in the Software and this entire statement, including
+; the above license grant, this restriction and the following disclaimer,
+; must be included in all copies of the Software, in whole or in part, and
+; all derivative works of the Software, unless such copies or derivative
+; works are solely in the form of machine-executable object code generated by
+; a source language processor.
+;
+; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+; FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+; SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+; FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+; ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+; DEALINGS IN THE SOFTWARE.
+;
+
+- match_default normal REG_EXTENDED
+
+;
+; try some really simple literals:
+a a 0 1
+Z Z 0 1
+Z aaa -1 -1
+Z xxxxZZxxx 4 5
+
+; and some simple brackets:
+(a) zzzaazz 3 4 3 4
+() zzz 0 0 0 0
+() "" 0 0 0 0
+( !
+) ) 0 1
+(aa !
+aa) baa)b 1 4
+a b -1 -1
+\(\) () 0 2
+\(a\) (a) 0 3
+\() () 0 2
+(\) !
+p(a)rameter ABCparameterXYZ 3 12 4 5
+[pq](a)rameter ABCparameterXYZ 3 12 4 5
+
+; now try escaped brackets:
+- match_default bk_parens REG_BASIC
+\(a\) zzzaazz 3 4 3 4
+\(\) zzz 0 0 0 0
+\(\) "" 0 0 0 0
+\( !
+\) !
+\(aa !
+aa\) !
+() () 0 2
+(a) (a) 0 3
+(\) !
+\() !
+
+; now move on to "." wildcards
+- match_default normal REG_EXTENDED REG_STARTEND
+. a 0 1
+. \n 0 1
+. \r 0 1
+. \0 0 1
+
+;
+; now move on to the repetion ops,
+; starting with operator *
+- match_default normal REG_EXTENDED
+a* b 0 0
+ab* a 0 1
+ab* ab 0 2
+ab* sssabbbbbbsss 3 10
+ab*c* a 0 1
+ab*c* abbb 0 4
+ab*c* accc 0 4
+ab*c* abbcc 0 5
+*a !
+\<* !
+\>* !
+\n* \n\n 0 2
+\** ** 0 2
+\* * 0 1
+
+; now try operator +
+ab+ a -1 -1
+ab+ ab 0 2
+ab+ sssabbbbbbsss 3 10
+ab+c+ a -1 -1
+ab+c+ abbb -1 -1
+ab+c+ accc -1 -1
+ab+c+ abbcc 0 5
++a !
+\<+ !
+\>+ !
+\n+ \n\n 0 2
+\+ + 0 1
+\+ ++ 0 1
+\++ ++ 0 2
+
+; now try operator ?
+- match_default normal REG_EXTENDED
+a? b 0 0
+ab? a 0 1
+ab? ab 0 2
+ab? sssabbbbbbsss 3 5
+ab?c? a 0 1
+ab?c? abbb 0 2
+ab?c? accc 0 2
+ab?c? abcc 0 3
+?a !
+\<? !
+\>? !
+\n? \n\n 0 1
+\? ? 0 1
+\? ?? 0 1
+\?? ?? 0 1
+
+; now try operator {}
+- match_default normal REG_EXTENDED
+a{2} a -1 -1
+a{2} aa 0 2
+a{2} aaa 0 2
+a{2,} a -1 -1
+a{2,} aa 0 2
+a{2,} aaaaa 0 5
+a{2,4} a -1 -1
+a{2,4} aa 0 2
+a{2,4} aaa 0 3
+a{2,4} aaaa 0 4
+a{2,4} aaaaa 0 4
+a{} !
+a{2 !
+a} a} 0 2
+\{\} {} 0 2
+
+- match_default normal REG_BASIC
+a\{2\} a -1 -1
+a\{2\} aa 0 2
+a\{2\} aaa 0 2
+a\{2,\} a -1 -1
+a\{2,\} aa 0 2
+a\{2,\} aaaaa 0 5
+a\{2,4\} a -1 -1
+a\{2,4\} aa 0 2
+a\{2,4\} aaa 0 3
+a\{2,4\} aaaa 0 4
+a\{2,4\} aaaaa 0 4
+{} {} 0 2
+
+; now test the alternation operator |
+- match_default normal REG_EXTENDED
+a|b a 0 1
+a|b b 0 1
+a(b|c) ab 0 2 1 2
+a(b|c) ac 0 2 1 2
+a(b|c) ad -1 -1 -1 -1
+a\| a| 0 2
+
+; now test the set operator []
+- match_default normal REG_EXTENDED
+; try some literals first
+[abc] a 0 1
+[abc] b 0 1
+[abc] c 0 1
+[abc] d -1 -1
+[^bcd] a 0 1
+[^bcd] b -1 -1
+[^bcd] d -1 -1
+[^bcd] e 0 1
+a[b]c abc 0 3
+a[ab]c abc 0 3
+a[^ab]c adc 0 3
+a[]b]c a]c 0 3
+a[[b]c a[c 0 3
+a[-b]c a-c 0 3
+a[^]b]c adc 0 3
+a[^-b]c adc 0 3
+a[b-]c a-c 0 3
+a[b !
+a[] !
+
+; then some ranges
+[b-e] a -1 -1
+[b-e] b 0 1
+[b-e] e 0 1
+[b-e] f -1 -1
+[^b-e] a 0 1
+[^b-e] b -1 -1
+[^b-e] e -1 -1
+[^b-e] f 0 1
+a[1-3]c a2c 0 3
+a[3-1]c !
+a[1-3-5]c !
+a[1- !
+
+; and some classes
+a[[:alpha:]]c abc 0 3
+a[[:unknown:]]c !
+a[[: !
+a[[:alpha !
+a[[:alpha:] !
+a[[:alpha,:] !
+a[[:]:]]b !
+a[[:-:]]b !
+a[[:alph:]] !
+a[[:alphabet:]] !
+[[:alnum:]]+ -%@a0X_- 3 6
+[[:alpha:]]+ -%@aX_0- 3 5
+[[:blank:]]+ "a \tb" 1 4
+[[:cntrl:]]+ a\n\tb 1 3
+[[:digit:]]+ a019b 1 4
+[[:graph:]]+ " a%b " 1 4
+[[:lower:]]+ AabC 1 3
+; This test fails with STLPort, disable for now as this is a corner case anyway...
+;[[:print:]]+ "\na b\n" 1 4
+[[:punct:]]+ " %-&\t" 1 4
+[[:space:]]+ "a \n\t\rb" 1 5
+[[:upper:]]+ aBCd 1 3
+[[:xdigit:]]+ p0f3Cx 1 5
+
+; now test flag settings:
+- escape_in_lists REG_NO_POSIX_TEST
+[\n] \n 0 1
+- REG_NO_POSIX_TEST
+
+; line anchors
+- match_default normal REG_EXTENDED
+^ab ab 0 2
+^ab xxabxx -1 -1
+ab$ ab 0 2
+ab$ abxx -1 -1
+- match_default match_not_bol match_not_eol normal REG_EXTENDED REG_NOTBOL REG_NOTEOL
+^ab ab -1 -1
+^ab xxabxx -1 -1
+ab$ ab -1 -1
+ab$ abxx -1 -1
+
+; back references
+- match_default normal REG_PERL
+a(b)\2c !
+a(b\1)c !
+a(b*)c\1d abbcbbd 0 7 1 3
+a(b*)c\1d abbcbd -1 -1
+a(b*)c\1d abbcbbbd -1 -1
+^(.)\1 abc -1 -1
+a([bc])\1d abcdabbd 4 8 5 6
+; strictly speaking this is at best ambiguous, at worst wrong, this is what most
+; re implimentations will match though.
+a(([bc])\2)*d abbccd 0 6 3 5 3 4
+
+a(([bc])\2)*d abbcbd -1 -1
+a((b)*\2)*d abbbd 0 5 1 4 2 3
+; perl only:
+(ab*)[ab]*\1 ababaaa 0 7 0 1
+(a)\1bcd aabcd 0 5 0 1
+(a)\1bc*d aabcd 0 5 0 1
+(a)\1bc*d aabd 0 4 0 1
+(a)\1bc*d aabcccd 0 7 0 1
+(a)\1bc*[ce]d aabcccd 0 7 0 1
+^(a)\1b(c)*cd$ aabcccd 0 7 0 1 4 5
+
+; posix only:
+- match_default extended REG_EXTENDED
+(ab*)[ab]*\1 ababaaa 0 7 0 1
+
+;
+; word operators:
+\w a 0 1
+\w z 0 1
+\w A 0 1
+\w Z 0 1
+\w _ 0 1
+\w } -1 -1
+\w ` -1 -1
+\w [ -1 -1
+\w @ -1 -1
+; non-word:
+\W a -1 -1
+\W z -1 -1
+\W A -1 -1
+\W Z -1 -1
+\W _ -1 -1
+\W } 0 1
+\W ` 0 1
+\W [ 0 1
+\W @ 0 1
+; word start:
+\<abcd " abcd" 2 6
+\<ab cab -1 -1
+\<ab "\nab" 1 3
+\<tag ::tag 2 5
+;word end:
+abc\> abc 0 3
+abc\> abcd -1 -1
+abc\> abc\n 0 3
+abc\> abc:: 0 3
+; word boundary:
+\babcd " abcd" 2 6
+\bab cab -1 -1
+\bab "\nab" 1 3
+\btag ::tag 2 5
+abc\b abc 0 3
+abc\b abcd -1 -1
+abc\b abc\n 0 3
+abc\b abc:: 0 3
+; within word:
+\B ab 1 1
+a\Bb ab 0 2
+a\B ab 0 1
+a\B a -1 -1
+a\B "a " -1 -1
+
+;
+; buffer operators:
+\`abc abc 0 3
+\`abc \nabc -1 -1
+\`abc " abc" -1 -1
+abc\' abc 0 3
+abc\' abc\n -1 -1
+abc\' "abc " -1 -1
+
+;
+; now follows various complex expressions designed to try and bust the matcher:
+a(((b)))c abc 0 3 1 2 1 2 1 2
+a(b|(c))d abd 0 3 1 2 -1 -1
+a(b|(c))d acd 0 3 1 2 1 2
+a(b*|c)d abbd 0 4 1 3
+; just gotta have one DFA-buster, of course
+a[ab]{20} aaaaabaaaabaaaabaaaab 0 21
+; and an inline expansion in case somebody gets tricky
+a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab] aaaaabaaaabaaaabaaaab 0 21
+; and in case somebody just slips in an NFA...
+a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab](wee|week)(knights|night) aaaaabaaaabaaaabaaaabweeknights 0 31 21 24 24 31
+; one really big one
+1234567890123456789012345678901234567890123456789012345678901234567890 a1234567890123456789012345678901234567890123456789012345678901234567890b 1 71
+; fish for problems as brackets go past 8
+[ab][cd][ef][gh][ij][kl][mn] xacegikmoq 1 8
+[ab][cd][ef][gh][ij][kl][mn][op] xacegikmoq 1 9
+[ab][cd][ef][gh][ij][kl][mn][op][qr] xacegikmoqy 1 10
+[ab][cd][ef][gh][ij][kl][mn][op][q] xacegikmoqy 1 10
+; and as parenthesis go past 9:
+(a)(b)(c)(d)(e)(f)(g)(h) zabcdefghi 1 9 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9
+(a)(b)(c)(d)(e)(f)(g)(h)(i) zabcdefghij 1 10 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
+(a)(b)(c)(d)(e)(f)(g)(h)(i)(j) zabcdefghijk 1 11 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11
+(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k) zabcdefghijkl 1 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12
+(a)d|(b)c abc 1 3 -1 -1 1 2
+_+((www)|(ftp)|(mailto)):_* "_wwwnocolon _mailto:" 12 20 13 19 -1 -1 -1 -1 13 19
+
+; subtleties of matching
+;a(b)?c\1d acd 0 3 -1 -1
+; POSIX is about the following test:
+a(b)?c\1d acd -1 -1 -1 -1
+a(b?c)+d accd 0 4 2 3
+(wee|week)(knights|night) weeknights 0 10 0 3 3 10
+.* abc 0 3
+a(b|(c))d abd 0 3 1 2 -1 -1
+a(b|(c))d acd 0 3 1 2 1 2
+a(b*|c|e)d abbd 0 4 1 3
+a(b*|c|e)d acd 0 3 1 2
+a(b*|c|e)d ad 0 2 1 1
+a(b?)c abc 0 3 1 2
+a(b?)c ac 0 2 1 1
+a(b+)c abc 0 3 1 2
+a(b+)c abbbc 0 5 1 4
+a(b*)c ac 0 2 1 1
+(a|ab)(bc([de]+)f|cde) abcdef 0 6 0 1 1 6 3 5
+a([bc]?)c abc 0 3 1 2
+a([bc]?)c ac 0 2 1 1
+a([bc]+)c abc 0 3 1 2
+a([bc]+)c abcc 0 4 1 3
+a([bc]+)bc abcbc 0 5 1 3
+a(bb+|b)b abb 0 3 1 2
+a(bbb+|bb+|b)b abb 0 3 1 2
+a(bbb+|bb+|b)b abbb 0 4 1 3
+a(bbb+|bb+|b)bb abbb 0 4 1 2
+(.*).* abcdef 0 6 0 6
+(a*)* bc 0 0 0 0
+xyx*xz xyxxxxyxxxz 5 11
+
+; do we get the right subexpression when it is used more than once?
+a(b|c)*d ad 0 2 -1 -1
+a(b|c)*d abcd 0 4 2 3
+a(b|c)+d abd 0 3 1 2
+a(b|c)+d abcd 0 4 2 3
+a(b|c?)+d ad 0 2 1 1
+a(b|c){0,0}d ad 0 2 -1 -1
+a(b|c){0,1}d ad 0 2 -1 -1
+a(b|c){0,1}d abd 0 3 1 2
+a(b|c){0,2}d ad 0 2 -1 -1
+a(b|c){0,2}d abcd 0 4 2 3
+a(b|c){0,}d ad 0 2 -1 -1
+a(b|c){0,}d abcd 0 4 2 3
+a(b|c){1,1}d abd 0 3 1 2
+a(b|c){1,2}d abd 0 3 1 2
+a(b|c){1,2}d abcd 0 4 2 3
+a(b|c){1,}d abd 0 3 1 2
+a(b|c){1,}d abcd 0 4 2 3
+a(b|c){2,2}d acbd 0 4 2 3
+a(b|c){2,2}d abcd 0 4 2 3
+a(b|c){2,4}d abcd 0 4 2 3
+a(b|c){2,4}d abcbd 0 5 3 4
+a(b|c){2,4}d abcbcd 0 6 4 5
+a(b|c){2,}d abcd 0 4 2 3
+a(b|c){2,}d abcbd 0 5 3 4
+; perl only: these conflict with the POSIX test below
+;a(b|c?)+d abcd 0 4 3 3
+;a(b+|((c)*))+d abd 0 3 2 2 2 2 -1 -1
+;a(b+|((c)*))+d abcd 0 4 3 3 3 3 2 3
+
+; posix only:
+- match_default extended REG_EXTENDED REG_STARTEND
+
+a(b|c?)+d abcd 0 4 2 3
+a(b|((c)*))+d abcd 0 4 2 3 2 3 2 3
+a(b+|((c)*))+d abd 0 3 1 2 -1 -1 -1 -1
+a(b+|((c)*))+d abcd 0 4 2 3 2 3 2 3
+a(b|((c)*))+d ad 0 2 1 1 1 1 -1 -1
+a(b|((c)*))*d abcd 0 4 2 3 2 3 2 3
+a(b+|((c)*))*d abd 0 3 1 2 -1 -1 -1 -1
+a(b+|((c)*))*d abcd 0 4 2 3 2 3 2 3
+a(b|((c)*))*d ad 0 2 1 1 1 1 -1 -1
+
+- match_default normal REG_PERL
+; try to match C++ syntax elements:
+; line comment:
+//[^\n]* "++i //here is a line comment\n" 4 28
+; block comment:
+/\*([^*]|\*+[^*/])*\*+/ "/* here is a block comment */" 0 29 26 27
+/\*([^*]|\*+[^*/])*\*+/ "/**/" 0 4 -1 -1
+/\*([^*]|\*+[^*/])*\*+/ "/***/" 0 5 -1 -1
+/\*([^*]|\*+[^*/])*\*+/ "/****/" 0 6 -1 -1
+/\*([^*]|\*+[^*/])*\*+/ "/*****/" 0 7 -1 -1
+/\*([^*]|\*+[^*/])*\*+/ "/*****/*/" 0 7 -1 -1
+; preprossor directives:
+^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol" 0 19 -1 -1
+^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol(x) #x" 0 25 -1 -1
+; perl only:
+^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol(x) \\ \r\n foo();\\\r\n printf(#x);" 0 53 30 42
+; literals:
+((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFF 0 4 0 4 0 4 -1 -1 -1 -1 -1 -1 -1 -1
+((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 35 0 2 0 2 -1 -1 0 2 -1 -1 -1 -1 -1 -1
+((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFu 0 5 0 4 0 4 -1 -1 -1 -1 -1 -1 -1 -1
+((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFL 0 5 0 4 0 4 -1 -1 4 5 -1 -1 -1 -1
+((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFFFFFFFFFFFFFFFuint64 0 24 0 18 0 18 -1 -1 19 24 19 24 22 24
+; strings:
+'([^\\']|\\.)*' '\\x3A' 0 6 4 5
+'([^\\']|\\.)*' '\\'' 0 4 1 3
+'([^\\']|\\.)*' '\\n' 0 4 1 3
+
+; finally try some case insensitive matches:
+- match_default normal REG_EXTENDED REG_ICASE
+; upper and lower have no meaning here so they fail, however these
+; may compile with other libraries...
+;[[:lower:]] !
+;[[:upper:]] !
+0123456789@abcdefghijklmnopqrstuvwxyz\[\\\]\^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ\{\|\} 0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]\^_`abcdefghijklmnopqrstuvwxyz\{\|\} 0 72
+
+; known and suspected bugs:
+- match_default normal REG_EXTENDED
+\( ( 0 1
+\) ) 0 1
+\$ $ 0 1
+\^ ^ 0 1
+\. . 0 1
+\* * 0 1
+\+ + 0 1
+\? ? 0 1
+\[ [ 0 1
+\] ] 0 1
+\| | 0 1
+\\ \\ 0 1
+# # 0 1
+\# # 0 1
+a- a- 0 2
+\- - 0 1
+\{ { 0 1
+\} } 0 1
+0 0 0 1
+1 1 0 1
+9 9 0 1
+b b 0 1
+B B 0 1
+< < 0 1
+> > 0 1
+w w 0 1
+W W 0 1
+` ` 0 1
+' ' 0 1
+\n \n 0 1
+, , 0 1
+a a 0 1
+f f 0 1
+n n 0 1
+r r 0 1
+t t 0 1
+v v 0 1
+c c 0 1
+x x 0 1
+: : 0 1
+(\.[[:alnum:]]+){2} "w.a.b " 1 5 3 5
+
+- match_default normal REG_EXTENDED REG_ICASE
+a A 0 1
+A a 0 1
+[abc]+ abcABC 0 6
+[ABC]+ abcABC 0 6
+[a-z]+ abcABC 0 6
+[A-Z]+ abzANZ 0 6
+[a-Z]+ abzABZ 0 6
+[A-z]+ abzABZ 0 6
+[[:lower:]]+ abyzABYZ 0 8
+[[:upper:]]+ abzABZ 0 6
+[[:alpha:]]+ abyzABYZ 0 8
+[[:alnum:]]+ 09abyzABYZ 0 10
+
+; word start:
+\<abcd " abcd" 2 6
+\<ab cab -1 -1
+\<ab "\nab" 1 3
+\<tag ::tag 2 5
+;word end:
+abc\> abc 0 3
+abc\> abcd -1 -1
+abc\> abc\n 0 3
+abc\> abc:: 0 3
+
+; collating elements and rewritten set code:
+- match_default normal REG_EXTENDED REG_STARTEND
+;[[.zero.]] 0 0 1
+;[[.one.]] 1 0 1
+;[[.two.]] 2 0 1
+;[[.three.]] 3 0 1
+[[.a.]] baa 1 2
+;[[.right-curly-bracket.]] } 0 1
+;[[.NUL.]] \0 0 1
+[[:<:]z] !
+[a[:>:]] !
+[[=a=]] a 0 1
+;[[=right-curly-bracket=]] } 0 1
+- match_default normal REG_EXTENDED REG_STARTEND REG_ICASE
+[[.A.]] A 0 1
+[[.A.]] a 0 1
+[[.A.]-b]+ AaBb 0 4
+[A-[.b.]]+ AaBb 0 4
+[[.a.]-B]+ AaBb 0 4
+[a-[.B.]]+ AaBb 0 4
+- match_default normal REG_EXTENDED REG_STARTEND
+[[.a.]-c]+ abcd 0 3
+[a-[.c.]]+ abcd 0 3
+[[:alpha:]-a] !
+[a-[:alpha:]] !
+
+; try mutli-character ligatures:
+;[[.ae.]] ae 0 2
+;[[.ae.]] aE -1 -1
+;[[.AE.]] AE 0 2
+;[[.Ae.]] Ae 0 2
+;[[.ae.]-b] a -1 -1
+;[[.ae.]-b] b 0 1
+;[[.ae.]-b] ae 0 2
+;[a-[.ae.]] a 0 1
+;[a-[.ae.]] b -1 -1
+;[a-[.ae.]] ae 0 2
+- match_default normal REG_EXTENDED REG_STARTEND REG_ICASE
+;[[.ae.]] AE 0 2
+;[[.ae.]] Ae 0 2
+;[[.AE.]] Ae 0 2
+;[[.Ae.]] aE 0 2
+;[[.AE.]-B] a -1 -1
+;[[.Ae.]-b] b 0 1
+;[[.Ae.]-b] B 0 1
+;[[.ae.]-b] AE 0 2
+
+- match_default normal REG_EXTENDED REG_STARTEND REG_NO_POSIX_TEST
+\s+ "ab ab" 2 5
+\S+ " abc " 2 5
+
+- match_default normal REG_EXTENDED REG_STARTEND
+\`abc abc 0 3
+\`abc aabc -1 -1
+abc\' abc 0 3
+abc\' abcd -1 -1
+abc\' abc\n\n -1 -1
+abc\' abc 0 3
+
+; extended repeat checking to exercise new algorithms:
+ab.*xy abxy_ 0 4
+ab.*xy ab_xy_ 0 5
+ab.*xy abxy 0 4
+ab.*xy ab_xy 0 5
+ab.* ab 0 2
+ab.* ab__ 0 4
+
+ab.{2,5}xy ab__xy_ 0 6
+ab.{2,5}xy ab____xy_ 0 8
+ab.{2,5}xy ab_____xy_ 0 9
+ab.{2,5}xy ab__xy 0 6
+ab.{2,5}xy ab_____xy 0 9
+ab.{2,5} ab__ 0 4
+ab.{2,5} ab_______ 0 7
+ab.{2,5}xy ab______xy -1 -1
+ab.{2,5}xy ab_xy -1 -1
+
+ab.*?xy abxy_ 0 4
+ab.*?xy ab_xy_ 0 5
+ab.*?xy abxy 0 4
+ab.*?xy ab_xy 0 5
+ab.*? ab 0 2
+ab.*? ab__ 0 4
+
+ab.{2,5}?xy ab__xy_ 0 6
+ab.{2,5}?xy ab____xy_ 0 8
+ab.{2,5}?xy ab_____xy_ 0 9
+ab.{2,5}?xy ab__xy 0 6
+ab.{2,5}?xy ab_____xy 0 9
+ab.{2,5}? ab__ 0 4
+ab.{2,5}? ab_______ 0 7
+ab.{2,5}?xy ab______xy -1 -1
+ab.{2,5}xy ab_xy -1 -1
+
+; again but with slower algorithm variant:
+- match_default REG_EXTENDED
+; now again for single character repeats:
+
+ab_*xy abxy_ 0 4
+ab_*xy ab_xy_ 0 5
+ab_*xy abxy 0 4
+ab_*xy ab_xy 0 5
+ab_* ab 0 2
+ab_* ab__ 0 4
+
+ab_{2,5}xy ab__xy_ 0 6
+ab_{2,5}xy ab____xy_ 0 8
+ab_{2,5}xy ab_____xy_ 0 9
+ab_{2,5}xy ab__xy 0 6
+ab_{2,5}xy ab_____xy 0 9
+ab_{2,5} ab__ 0 4
+ab_{2,5} ab_______ 0 7
+ab_{2,5}xy ab______xy -1 -1
+ab_{2,5}xy ab_xy -1 -1
+
+ab_*?xy abxy_ 0 4
+ab_*?xy ab_xy_ 0 5
+ab_*?xy abxy 0 4
+ab_*?xy ab_xy 0 5
+ab_*? ab 0 2
+ab_*? ab__ 0 4
+
+ab_{2,5}?xy ab__xy_ 0 6
+ab_{2,5}?xy ab____xy_ 0 8
+ab_{2,5}?xy ab_____xy_ 0 9
+ab_{2,5}?xy ab__xy 0 6
+ab_{2,5}?xy ab_____xy 0 9
+ab_{2,5}? ab__ 0 4
+ab_{2,5}? ab_______ 0 7
+ab_{2,5}?xy ab______xy -1 -1
+ab_{2,5}xy ab_xy -1 -1
+
+; and again for sets:
+ab[_,;]*xy abxy_ 0 4
+ab[_,;]*xy ab_xy_ 0 5
+ab[_,;]*xy abxy 0 4
+ab[_,;]*xy ab_xy 0 5
+ab[_,;]* ab 0 2
+ab[_,;]* ab__ 0 4
+
+ab[_,;]{2,5}xy ab__xy_ 0 6
+ab[_,;]{2,5}xy ab____xy_ 0 8
+ab[_,;]{2,5}xy ab_____xy_ 0 9
+ab[_,;]{2,5}xy ab__xy 0 6
+ab[_,;]{2,5}xy ab_____xy 0 9
+ab[_,;]{2,5} ab__ 0 4
+ab[_,;]{2,5} ab_______ 0 7
+ab[_,;]{2,5}xy ab______xy -1 -1
+ab[_,;]{2,5}xy ab_xy -1 -1
+
+ab[_,;]*?xy abxy_ 0 4
+ab[_,;]*?xy ab_xy_ 0 5
+ab[_,;]*?xy abxy 0 4
+ab[_,;]*?xy ab_xy 0 5
+ab[_,;]*? ab 0 2
+ab[_,;]*? ab__ 0 4
+
+ab[_,;]{2,5}?xy ab__xy_ 0 6
+ab[_,;]{2,5}?xy ab____xy_ 0 8
+ab[_,;]{2,5}?xy ab_____xy_ 0 9
+ab[_,;]{2,5}?xy ab__xy 0 6
+ab[_,;]{2,5}?xy ab_____xy 0 9
+ab[_,;]{2,5}? ab__ 0 4
+ab[_,;]{2,5}? ab_______ 0 7
+ab[_,;]{2,5}?xy ab______xy -1 -1
+ab[_,;]{2,5}xy ab_xy -1 -1
+
+; and again for tricky sets with digraphs:
+;ab[_[.ae.]]*xy abxy_ 0 4
+;ab[_[.ae.]]*xy ab_xy_ 0 5
+;ab[_[.ae.]]*xy abxy 0 4
+;ab[_[.ae.]]*xy ab_xy 0 5
+;ab[_[.ae.]]* ab 0 2
+;ab[_[.ae.]]* ab__ 0 4
+
+;ab[_[.ae.]]{2,5}xy ab__xy_ 0 6
+;ab[_[.ae.]]{2,5}xy ab____xy_ 0 8
+;ab[_[.ae.]]{2,5}xy ab_____xy_ 0 9
+;ab[_[.ae.]]{2,5}xy ab__xy 0 6
+;ab[_[.ae.]]{2,5}xy ab_____xy 0 9
+;ab[_[.ae.]]{2,5} ab__ 0 4
+;ab[_[.ae.]]{2,5} ab_______ 0 7
+;ab[_[.ae.]]{2,5}xy ab______xy -1 -1
+;ab[_[.ae.]]{2,5}xy ab_xy -1 -1
+
+;ab[_[.ae.]]*?xy abxy_ 0 4
+;ab[_[.ae.]]*?xy ab_xy_ 0 5
+;ab[_[.ae.]]*?xy abxy 0 4
+;ab[_[.ae.]]*?xy ab_xy 0 5
+;ab[_[.ae.]]*? ab 0 2
+;ab[_[.ae.]]*? ab__ 0 2
+
+;ab[_[.ae.]]{2,5}?xy ab__xy_ 0 6
+;ab[_[.ae.]]{2,5}?xy ab____xy_ 0 8
+;ab[_[.ae.]]{2,5}?xy ab_____xy_ 0 9
+;ab[_[.ae.]]{2,5}?xy ab__xy 0 6
+;ab[_[.ae.]]{2,5}?xy ab_____xy 0 9
+;ab[_[.ae.]]{2,5}? ab__ 0 4
+;ab[_[.ae.]]{2,5}? ab_______ 0 4
+;ab[_[.ae.]]{2,5}?xy ab______xy -1 -1
+;ab[_[.ae.]]{2,5}xy ab_xy -1 -1
+
+; new bugs detected in spring 2003:
+- normal match_continuous REG_NO_POSIX_TEST
+b abc 1 2
+
+() abc 0 0 0 0
+^() abc 0 0 0 0
+^()+ abc 0 0 0 0
+^(){1} abc 0 0 0 0
+^(){2} abc 0 0 0 0
+^((){2}) abc 0 0 0 0 0 0
+() "" 0 0 0 0
+()\1 "" 0 0 0 0
+()\1 a 0 0 0 0
+a()\1b ab 0 2 1 1
+a()b\1 ab 0 2 1 1
+
+; subtleties of matching with no sub-expressions marked
+- normal match_nosubs REG_NO_POSIX_TEST
+a(b?c)+d accd 0 4
+(wee|week)(knights|night) weeknights 0 10
+.* abc 0 3
+a(b|(c))d abd 0 3
+a(b|(c))d acd 0 3
+a(b*|c|e)d abbd 0 4
+a(b*|c|e)d acd 0 3
+a(b*|c|e)d ad 0 2
+a(b?)c abc 0 3
+a(b?)c ac 0 2
+a(b+)c abc 0 3
+a(b+)c abbbc 0 5
+a(b*)c ac 0 2
+(a|ab)(bc([de]+)f|cde) abcdef 0 6
+a([bc]?)c abc 0 3
+a([bc]?)c ac 0 2
+a([bc]+)c abc 0 3
+a([bc]+)c abcc 0 4
+a([bc]+)bc abcbc 0 5
+a(bb+|b)b abb 0 3
+a(bbb+|bb+|b)b abb 0 3
+a(bbb+|bb+|b)b abbb 0 4
+a(bbb+|bb+|b)bb abbb 0 4
+(.*).* abcdef 0 6
+(a*)* bc 0 0
+
+- normal nosubs REG_NO_POSIX_TEST
+a(b?c)+d accd 0 4
+(wee|week)(knights|night) weeknights 0 10
+.* abc 0 3
+a(b|(c))d abd 0 3
+a(b|(c))d acd 0 3
+a(b*|c|e)d abbd 0 4
+a(b*|c|e)d acd 0 3
+a(b*|c|e)d ad 0 2
+a(b?)c abc 0 3
+a(b?)c ac 0 2
+a(b+)c abc 0 3
+a(b+)c abbbc 0 5
+a(b*)c ac 0 2
+(a|ab)(bc([de]+)f|cde) abcdef 0 6
+a([bc]?)c abc 0 3
+a([bc]?)c ac 0 2
+a([bc]+)c abc 0 3
+a([bc]+)c abcc 0 4
+a([bc]+)bc abcbc 0 5
+a(bb+|b)b abb 0 3
+a(bbb+|bb+|b)b abb 0 3
+a(bbb+|bb+|b)b abbb 0 4
+a(bbb+|bb+|b)bb abbb 0 4
+(.*).* abcdef 0 6
+(a*)* bc 0 0
+
diff --git a/test/src/regex-resources/PCRE.tests b/test/src/regex-resources/PCRE.tests
new file mode 100644
index 0000000000..0fb9cadafc
--- /dev/null
+++ b/test/src/regex-resources/PCRE.tests
@@ -0,0 +1,2386 @@
+# PCRE version 4.4 21-August-2003
+
+# Tests taken from PCRE and modified to suit glibc regex.
+#
+# PCRE LICENCE
+# ------------
+#
+# PCRE is a library of functions to support regular expressions whose syntax
+# and semantics are as close as possible to those of the Perl 5 language.
+#
+# Written by: Philip Hazel <ph10@cam.ac.uk>
+#
+# University of Cambridge Computing Service,
+# Cambridge, England. Phone: +44 1223 334714.
+#
+# Copyright (c) 1997-2003 University of Cambridge
+#
+# Permission is granted to anyone to use this software for any purpose on any
+# computer system, and to redistribute it freely, subject to the following
+# restrictions:
+#
+# 1. This software 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.
+#
+# 2. The origin of this software must not be misrepresented, either by
+# explicit claim or by omission. In practice, this means that if you use
+# PCRE in software that you distribute to others, commercially or
+# otherwise, you must put a sentence like this
+#
+# Regular expression support is provided by the PCRE library package,
+# which is open source software, written by Philip Hazel, and copyright
+# by the University of Cambridge, England.
+#
+# somewhere reasonably visible in your documentation and in any relevant
+# files or online help data or similar. A reference to the ftp site for
+# the source, that is, to
+#
+# ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
+#
+# should also be given in the documentation. However, this condition is not
+# intended to apply to whole chains of software. If package A includes PCRE,
+# it must acknowledge it, but if package B is software that includes package
+# A, the condition is not imposed on package B (unless it uses PCRE
+# independently).
+#
+# 3. Altered versions must be plainly marked as such, and must not be
+# misrepresented as being the original software.
+#
+# 4. If PCRE is embedded in any software that is released under the GNU
+# General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL),
+# then the terms of that licence shall supersede any condition above with
+# which it is incompatible.
+#
+# The documentation for PCRE, supplied in the "doc" directory, is distributed
+# under the same terms as the software itself.
+#
+# End
+#
+
+/the quick brown fox/
+ the quick brown fox
+ 0: the quick brown fox
+ The quick brown FOX
+No match
+ What do you know about the quick brown fox?
+ 0: the quick brown fox
+ What do you know about THE QUICK BROWN FOX?
+No match
+
+/The quick brown fox/i
+ the quick brown fox
+ 0: the quick brown fox
+ The quick brown FOX
+ 0: The quick brown FOX
+ What do you know about the quick brown fox?
+ 0: the quick brown fox
+ What do you know about THE QUICK BROWN FOX?
+ 0: THE QUICK BROWN FOX
+
+/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
+ abxyzpqrrrabbxyyyypqAzz
+ 0: abxyzpqrrrabbxyyyypqAzz
+ abxyzpqrrrabbxyyyypqAzz
+ 0: abxyzpqrrrabbxyyyypqAzz
+ aabxyzpqrrrabbxyyyypqAzz
+ 0: aabxyzpqrrrabbxyyyypqAzz
+ aaabxyzpqrrrabbxyyyypqAzz
+ 0: aaabxyzpqrrrabbxyyyypqAzz
+ aaaabxyzpqrrrabbxyyyypqAzz
+ 0: aaaabxyzpqrrrabbxyyyypqAzz
+ abcxyzpqrrrabbxyyyypqAzz
+ 0: abcxyzpqrrrabbxyyyypqAzz
+ aabcxyzpqrrrabbxyyyypqAzz
+ 0: aabcxyzpqrrrabbxyyyypqAzz
+ aaabcxyzpqrrrabbxyyyypAzz
+ 0: aaabcxyzpqrrrabbxyyyypAzz
+ aaabcxyzpqrrrabbxyyyypqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqAzz
+ aaabcxyzpqrrrabbxyyyypqqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqqAzz
+ aaabcxyzpqrrrabbxyyyypqqqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqqqAzz
+ aaabcxyzpqrrrabbxyyyypqqqqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqqqqAzz
+ aaabcxyzpqrrrabbxyyyypqqqqqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
+ aaabcxyzpqrrrabbxyyyypqqqqqqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
+ aaaabcxyzpqrrrabbxyyyypqAzz
+ 0: aaaabcxyzpqrrrabbxyyyypqAzz
+ abxyzzpqrrrabbxyyyypqAzz
+ 0: abxyzzpqrrrabbxyyyypqAzz
+ aabxyzzzpqrrrabbxyyyypqAzz
+ 0: aabxyzzzpqrrrabbxyyyypqAzz
+ aaabxyzzzzpqrrrabbxyyyypqAzz
+ 0: aaabxyzzzzpqrrrabbxyyyypqAzz
+ aaaabxyzzzzpqrrrabbxyyyypqAzz
+ 0: aaaabxyzzzzpqrrrabbxyyyypqAzz
+ abcxyzzpqrrrabbxyyyypqAzz
+ 0: abcxyzzpqrrrabbxyyyypqAzz
+ aabcxyzzzpqrrrabbxyyyypqAzz
+ 0: aabcxyzzzpqrrrabbxyyyypqAzz
+ aaabcxyzzzzpqrrrabbxyyyypqAzz
+ 0: aaabcxyzzzzpqrrrabbxyyyypqAzz
+ aaaabcxyzzzzpqrrrabbxyyyypqAzz
+ 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
+ aaaabcxyzzzzpqrrrabbbxyyyypqAzz
+ 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
+ aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
+ 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
+ aaabcxyzpqrrrabbxyyyypABzz
+ 0: aaabcxyzpqrrrabbxyyyypABzz
+ aaabcxyzpqrrrabbxyyyypABBzz
+ 0: aaabcxyzpqrrrabbxyyyypABBzz
+ >>>aaabxyzpqrrrabbxyyyypqAzz
+ 0: aaabxyzpqrrrabbxyyyypqAzz
+ >aaaabxyzpqrrrabbxyyyypqAzz
+ 0: aaaabxyzpqrrrabbxyyyypqAzz
+ >>>>abcxyzpqrrrabbxyyyypqAzz
+ 0: abcxyzpqrrrabbxyyyypqAzz
+ *** Failers
+No match
+ abxyzpqrrabbxyyyypqAzz
+No match
+ abxyzpqrrrrabbxyyyypqAzz
+No match
+ abxyzpqrrrabxyyyypqAzz
+No match
+ aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
+No match
+ aaaabcxyzzzzpqrrrabbbxyyypqAzz
+No match
+ aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
+No match
+
+/^(abc){1,2}zz/
+ abczz
+ 0: abczz
+ 1: abc
+ abcabczz
+ 0: abcabczz
+ 1: abc
+ *** Failers
+No match
+ zz
+No match
+ abcabcabczz
+No match
+ >>abczz
+No match
+
+/^(b+|a){1,2}c/
+ bc
+ 0: bc
+ 1: b
+ bbc
+ 0: bbc
+ 1: bb
+ bbbc
+ 0: bbbc
+ 1: bbb
+ bac
+ 0: bac
+ 1: a
+ bbac
+ 0: bbac
+ 1: a
+ aac
+ 0: aac
+ 1: a
+ abbbbbbbbbbbc
+ 0: abbbbbbbbbbbc
+ 1: bbbbbbbbbbb
+ bbbbbbbbbbbac
+ 0: bbbbbbbbbbbac
+ 1: a
+ *** Failers
+No match
+ aaac
+No match
+ abbbbbbbbbbbac
+No match
+
+/^[]cde]/
+ ]thing
+ 0: ]
+ cthing
+ 0: c
+ dthing
+ 0: d
+ ething
+ 0: e
+ *** Failers
+No match
+ athing
+No match
+ fthing
+No match
+
+/^[^]cde]/
+ athing
+ 0: a
+ fthing
+ 0: f
+ *** Failers
+ 0: *
+ ]thing
+No match
+ cthing
+No match
+ dthing
+No match
+ ething
+No match
+
+/^[0-9]+$/
+ 0
+ 0: 0
+ 1
+ 0: 1
+ 2
+ 0: 2
+ 3
+ 0: 3
+ 4
+ 0: 4
+ 5
+ 0: 5
+ 6
+ 0: 6
+ 7
+ 0: 7
+ 8
+ 0: 8
+ 9
+ 0: 9
+ 10
+ 0: 10
+ 100
+ 0: 100
+ *** Failers
+No match
+ abc
+No match
+
+/^.*nter/
+ enter
+ 0: enter
+ inter
+ 0: inter
+ uponter
+ 0: uponter
+
+/^xxx[0-9]+$/
+ xxx0
+ 0: xxx0
+ xxx1234
+ 0: xxx1234
+ *** Failers
+No match
+ xxx
+No match
+
+/^.+[0-9][0-9][0-9]$/
+ x123
+ 0: x123
+ xx123
+ 0: xx123
+ 123456
+ 0: 123456
+ *** Failers
+No match
+ 123
+No match
+ x1234
+ 0: x1234
+
+/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
+ abc!pqr=apquxz.ixr.zzz.ac.uk
+ 0: abc!pqr=apquxz.ixr.zzz.ac.uk
+ 1: abc
+ 2: pqr
+ *** Failers
+No match
+ !pqr=apquxz.ixr.zzz.ac.uk
+No match
+ abc!=apquxz.ixr.zzz.ac.uk
+No match
+ abc!pqr=apquxz:ixr.zzz.ac.uk
+No match
+ abc!pqr=apquxz.ixr.zzz.ac.ukk
+No match
+
+/:/
+ Well, we need a colon: somewhere
+ 0: :
+ *** Fail if we don't
+No match
+
+/([0-9a-f:]+)$/i
+ 0abc
+ 0: 0abc
+ 1: 0abc
+ abc
+ 0: abc
+ 1: abc
+ fed
+ 0: fed
+ 1: fed
+ E
+ 0: E
+ 1: E
+ ::
+ 0: ::
+ 1: ::
+ 5f03:12C0::932e
+ 0: 5f03:12C0::932e
+ 1: 5f03:12C0::932e
+ fed def
+ 0: def
+ 1: def
+ Any old stuff
+ 0: ff
+ 1: ff
+ *** Failers
+No match
+ 0zzz
+No match
+ gzzz
+No match
+ Any old rubbish
+No match
+
+/^.*\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/
+ .1.2.3
+ 0: .1.2.3
+ 1: 1
+ 2: 2
+ 3: 3
+ A.12.123.0
+ 0: A.12.123.0
+ 1: 12
+ 2: 123
+ 3: 0
+ *** Failers
+No match
+ .1.2.3333
+No match
+ 1.2.3
+No match
+ 1234.2.3
+No match
+
+/^([0-9]+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
+ 1 IN SOA non-sp1 non-sp2(
+ 0: 1 IN SOA non-sp1 non-sp2(
+ 1: 1
+ 2: non-sp1
+ 3: non-sp2
+ 1 IN SOA non-sp1 non-sp2 (
+ 0: 1 IN SOA non-sp1 non-sp2 (
+ 1: 1
+ 2: non-sp1
+ 3: non-sp2
+ *** Failers
+No match
+ 1IN SOA non-sp1 non-sp2(
+No match
+
+/^[a-zA-Z0-9][a-zA-Z0-9-]*(\.[a-zA-Z0-9][a-zA-z0-9-]*)*\.$/
+ a.
+ 0: a.
+ Z.
+ 0: Z.
+ 2.
+ 0: 2.
+ ab-c.pq-r.
+ 0: ab-c.pq-r.
+ 1: .pq-r
+ sxk.zzz.ac.uk.
+ 0: sxk.zzz.ac.uk.
+ 1: .uk
+ x-.y-.
+ 0: x-.y-.
+ 1: .y-
+ *** Failers
+No match
+ -abc.peq.
+No match
+
+/^\*\.[a-z]([a-z0-9-]*[a-z0-9]+)?(\.[a-z]([a-z0-9-]*[a-z0-9]+)?)*$/
+ *.a
+ 0: *.a
+ *.b0-a
+ 0: *.b0-a
+ 1: 0-a
+ *.c3-b.c
+ 0: *.c3-b.c
+ 1: 3-b
+ 2: .c
+ *.c-a.b-c
+ 0: *.c-a.b-c
+ 1: -a
+ 2: .b-c
+ 3: -c
+ *** Failers
+No match
+ *.0
+No match
+ *.a-
+No match
+ *.a-b.c-
+No match
+ *.c-a.0-c
+No match
+
+/^[0-9a-f](\.[0-9a-f])*$/i
+ a.b.c.d
+ 0: a.b.c.d
+ 1: .d
+ A.B.C.D
+ 0: A.B.C.D
+ 1: .D
+ a.b.c.1.2.3.C
+ 0: a.b.c.1.2.3.C
+ 1: .C
+
+/^".*"\s*(;.*)?$/
+ "1234"
+ 0: "1234"
+ "abcd" ;
+ 0: "abcd" ;
+ 1: ;
+ "" ; rhubarb
+ 0: "" ; rhubarb
+ 1: ; rhubarb
+ *** Failers
+No match
+ "1234" : things
+No match
+
+/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
+ abcdefhijklm
+ 0: abcdefhijklm
+ 1: abc
+ 2: bc
+ 3: c
+ 4: def
+ 5: ef
+ 6: f
+ 7: hij
+ 8: ij
+ 9: j
+10: klm
+11: lm
+12: m
+
+/^a*\w/
+ z
+ 0: z
+ az
+ 0: az
+ aaaz
+ 0: aaaz
+ a
+ 0: a
+ aa
+ 0: aa
+ aaaa
+ 0: aaaa
+ a+
+ 0: a
+ aa+
+ 0: aa
+
+/^a+\w/
+ az
+ 0: az
+ aaaz
+ 0: aaaz
+ aa
+ 0: aa
+ aaaa
+ 0: aaaa
+ aa+
+ 0: aa
+
+/^[0-9]{8}\w{2,}/
+ 1234567890
+ 0: 1234567890
+ 12345678ab
+ 0: 12345678ab
+ 12345678__
+ 0: 12345678__
+ *** Failers
+No match
+ 1234567
+No match
+
+/^[aeiou0-9]{4,5}$/
+ uoie
+ 0: uoie
+ 1234
+ 0: 1234
+ 12345
+ 0: 12345
+ aaaaa
+ 0: aaaaa
+ *** Failers
+No match
+ 123456
+No match
+
+/\`(abc|def)=(\1){2,3}\'/
+ abc=abcabc
+ 0: abc=abcabc
+ 1: abc
+ 2: abc
+ def=defdefdef
+ 0: def=defdefdef
+ 1: def
+ 2: def
+ *** Failers
+No match
+ abc=defdef
+No match
+
+/(cat(a(ract|tonic)|erpillar)) \1()2(3)/
+ cataract cataract23
+ 0: cataract cataract23
+ 1: cataract
+ 2: aract
+ 3: ract
+ 4:
+ 5: 3
+ catatonic catatonic23
+ 0: catatonic catatonic23
+ 1: catatonic
+ 2: atonic
+ 3: tonic
+ 4:
+ 5: 3
+ caterpillar caterpillar23
+ 0: caterpillar caterpillar23
+ 1: caterpillar
+ 2: erpillar
+ 3: <unset>
+ 4:
+ 5: 3
+
+
+/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
+ From abcd Mon Sep 01 12:33:02 1997
+ 0: From abcd Mon Sep 01 12:33
+ 1: abcd
+
+/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}[0-9]{1,2}\s+[0-9][0-9]:[0-9][0-9]/
+ From abcd Mon Sep 01 12:33:02 1997
+ 0: From abcd Mon Sep 01 12:33
+ 1: Sep
+ From abcd Mon Sep 1 12:33:02 1997
+ 0: From abcd Mon Sep 1 12:33
+ 1: Sep
+ *** Failers
+No match
+ From abcd Sep 01 12:33:02 1997
+No match
+
+/^(a)\1{2,3}(.)/
+ aaab
+ 0: aaab
+ 1: a
+ 2: b
+ aaaab
+ 0: aaaab
+ 1: a
+ 2: b
+ aaaaab
+ 0: aaaaa
+ 1: a
+ 2: a
+ aaaaaab
+ 0: aaaaa
+ 1: a
+ 2: a
+
+/^[ab]{1,3}(ab*|b)/
+ aabbbbb
+ 0: aabbbbb
+ 1: abbbbb
+
+/^(cow|)\1(bell)/
+ cowcowbell
+ 0: cowcowbell
+ 1: cow
+ 2: bell
+ bell
+ 0: bell
+ 1:
+ 2: bell
+ *** Failers
+No match
+ cowbell
+No match
+
+/^(a|)\1+b/
+ aab
+ 0: aab
+ 1: a
+ aaaab
+ 0: aaaab
+ 1: a
+ b
+ 0: b
+ 1:
+ *** Failers
+No match
+ ab
+No match
+
+/^(a|)\1{2}b/
+ aaab
+ 0: aaab
+ 1: a
+ b
+ 0: b
+ 1:
+ *** Failers
+No match
+ ab
+No match
+ aab
+No match
+ aaaab
+No match
+
+/^(a|)\1{2,3}b/
+ aaab
+ 0: aaab
+ 1: a
+ aaaab
+ 0: aaaab
+ 1: a
+ b
+ 0: b
+ 1:
+ *** Failers
+No match
+ ab
+No match
+ aab
+No match
+ aaaaab
+No match
+
+/ab{1,3}bc/
+ abbbbc
+ 0: abbbbc
+ abbbc
+ 0: abbbc
+ abbc
+ 0: abbc
+ *** Failers
+No match
+ abc
+No match
+ abbbbbc
+No match
+
+/([^.]*)\.([^:]*):[T ]+(.*)/
+ track1.title:TBlah blah blah
+ 0: track1.title:TBlah blah blah
+ 1: track1
+ 2: title
+ 3: Blah blah blah
+
+/([^.]*)\.([^:]*):[T ]+(.*)/i
+ track1.title:TBlah blah blah
+ 0: track1.title:TBlah blah blah
+ 1: track1
+ 2: title
+ 3: Blah blah blah
+
+/([^.]*)\.([^:]*):[t ]+(.*)/i
+ track1.title:TBlah blah blah
+ 0: track1.title:TBlah blah blah
+ 1: track1
+ 2: title
+ 3: Blah blah blah
+
+/^abc$/
+ abc
+ 0: abc
+ *** Failers
+No match
+
+/[-az]+/
+ az-
+ 0: az-
+ *** Failers
+ 0: a
+ b
+No match
+
+/[az-]+/
+ za-
+ 0: za-
+ *** Failers
+ 0: a
+ b
+No match
+
+/[a-z]+/
+ abcdxyz
+ 0: abcdxyz
+
+/[0-9-]+/
+ 12-34
+ 0: 12-34
+ *** Failers
+No match
+ aaa
+No match
+
+/(abc)\1/i
+ abcabc
+ 0: abcabc
+ 1: abc
+ ABCabc
+ 0: ABCabc
+ 1: ABC
+ abcABC
+ 0: abcABC
+ 1: abc
+
+/a{0}bc/
+ bc
+ 0: bc
+
+/^([^a])([^b])([^c]*)([^d]{3,4})/
+ baNOTccccd
+ 0: baNOTcccc
+ 1: b
+ 2: a
+ 3: NOT
+ 4: cccc
+ baNOTcccd
+ 0: baNOTccc
+ 1: b
+ 2: a
+ 3: NOT
+ 4: ccc
+ baNOTccd
+ 0: baNOTcc
+ 1: b
+ 2: a
+ 3: NO
+ 4: Tcc
+ bacccd
+ 0: baccc
+ 1: b
+ 2: a
+ 3:
+ 4: ccc
+ *** Failers
+ 0: *** Failers
+ 1: *
+ 2: *
+ 3: * Fail
+ 4: ers
+ anything
+No match
+ baccd
+No match
+
+/[^a]/
+ Abc
+ 0: A
+
+/[^a]/i
+ Abc
+ 0: b
+
+/[^a]+/
+ AAAaAbc
+ 0: AAA
+
+/[^a]+/i
+ AAAaAbc
+ 0: bc
+
+/[^k]$/
+ abc
+ 0: c
+ *** Failers
+ 0: s
+ abk
+No match
+
+/[^k]{2,3}$/
+ abc
+ 0: abc
+ kbc
+ 0: bc
+ kabc
+ 0: abc
+ *** Failers
+ 0: ers
+ abk
+No match
+ akb
+No match
+ akk
+No match
+
+/^[0-9]{8,}@.+[^k]$/
+ 12345678@a.b.c.d
+ 0: 12345678@a.b.c.d
+ 123456789@x.y.z
+ 0: 123456789@x.y.z
+ *** Failers
+No match
+ 12345678@x.y.uk
+No match
+ 1234567@a.b.c.d
+No match
+
+/(a)\1{8,}/
+ aaaaaaaaa
+ 0: aaaaaaaaa
+ 1: a
+ aaaaaaaaaa
+ 0: aaaaaaaaaa
+ 1: a
+ *** Failers
+No match
+ aaaaaaa
+No match
+
+/[^a]/
+ aaaabcd
+ 0: b
+ aaAabcd
+ 0: A
+
+/[^a]/i
+ aaaabcd
+ 0: b
+ aaAabcd
+ 0: b
+
+/[^az]/
+ aaaabcd
+ 0: b
+ aaAabcd
+ 0: A
+
+/[^az]/i
+ aaaabcd
+ 0: b
+ aaAabcd
+ 0: b
+
+/P[^*]TAIRE[^*]{1,6}LL/
+ xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
+ 0: PSTAIREISLL
+
+/P[^*]TAIRE[^*]{1,}LL/
+ xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
+ 0: PSTAIREISLL
+
+/(\.[0-9][0-9][1-9]?)[0-9]+/
+ 1.230003938
+ 0: .230003938
+ 1: .23
+ 1.875000282
+ 0: .875000282
+ 1: .875
+ 1.235
+ 0: .235
+ 1: .23
+
+/\b(foo)\s+(\w+)/i
+ Food is on the foo table
+ 0: foo table
+ 1: foo
+ 2: table
+
+/foo(.*)bar/
+ The food is under the bar in the barn.
+ 0: food is under the bar in the bar
+ 1: d is under the bar in the
+
+/(.*)([0-9]*)/
+ I have 2 numbers: 53147
+ 0: I have 2 numbers: 53147
+ 1: I have 2 numbers: 53147
+ 2:
+
+/(.*)([0-9]+)/
+ I have 2 numbers: 53147
+ 0: I have 2 numbers: 53147
+ 1: I have 2 numbers: 5314
+ 2: 7
+
+/(.*)([0-9]+)$/
+ I have 2 numbers: 53147
+ 0: I have 2 numbers: 53147
+ 1: I have 2 numbers: 5314
+ 2: 7
+
+/(.*)\b([0-9]+)$/
+ I have 2 numbers: 53147
+ 0: I have 2 numbers: 53147
+ 1: I have 2 numbers:
+ 2: 53147
+
+/(.*[^0-9])([0-9]+)$/
+ I have 2 numbers: 53147
+ 0: I have 2 numbers: 53147
+ 1: I have 2 numbers:
+ 2: 53147
+
+/[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]][[:digit:]][[:digit:]]/
+ 01/01/2000
+ 0: 01/01/2000
+
+/^(a){0,0}/
+ bcd
+ 0:
+ abc
+ 0:
+ aab
+ 0:
+
+/^(a){0,1}/
+ bcd
+ 0:
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: a
+ 1: a
+
+/^(a){0,2}/
+ bcd
+ 0:
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: aa
+ 1: a
+
+/^(a){0,3}/
+ bcd
+ 0:
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: aa
+ 1: a
+ aaa
+ 0: aaa
+ 1: a
+
+/^(a){0,}/
+ bcd
+ 0:
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: aa
+ 1: a
+ aaa
+ 0: aaa
+ 1: a
+ aaaaaaaa
+ 0: aaaaaaaa
+ 1: a
+
+/^(a){1,1}/
+ bcd
+No match
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: a
+ 1: a
+
+/^(a){1,2}/
+ bcd
+No match
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: aa
+ 1: a
+
+/^(a){1,3}/
+ bcd
+No match
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: aa
+ 1: a
+ aaa
+ 0: aaa
+ 1: a
+
+/^(a){1,}/
+ bcd
+No match
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: aa
+ 1: a
+ aaa
+ 0: aaa
+ 1: a
+ aaaaaaaa
+ 0: aaaaaaaa
+ 1: a
+
+/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
+ 123456654321
+ 0: 123456654321
+
+/^[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]/
+ 123456654321
+ 0: 123456654321
+
+/^[abc]{12}/
+ abcabcabcabc
+ 0: abcabcabcabc
+
+/^[a-c]{12}/
+ abcabcabcabc
+ 0: abcabcabcabc
+
+/^(a|b|c){12}/
+ abcabcabcabc
+ 0: abcabcabcabc
+ 1: c
+
+/^[abcdefghijklmnopqrstuvwxy0123456789]/
+ n
+ 0: n
+ *** Failers
+No match
+ z
+No match
+
+/abcde{0,0}/
+ abcd
+ 0: abcd
+ *** Failers
+No match
+ abce
+No match
+
+/ab[cd]{0,0}e/
+ abe
+ 0: abe
+ *** Failers
+No match
+ abcde
+No match
+
+/ab(c){0,0}d/
+ abd
+ 0: abd
+ *** Failers
+No match
+ abcd
+No match
+
+/a(b*)/
+ a
+ 0: a
+ 1:
+ ab
+ 0: ab
+ 1: b
+ abbbb
+ 0: abbbb
+ 1: bbbb
+ *** Failers
+ 0: a
+ 1:
+ bbbbb
+No match
+
+/ab[0-9]{0}e/
+ abe
+ 0: abe
+ *** Failers
+No match
+ ab1e
+No match
+
+/(A|B)*CD/
+ CD
+ 0: CD
+
+/(AB)*\1/
+ ABABAB
+ 0: ABABAB
+ 1: AB
+
+/([0-9]+)(\w)/
+ 12345a
+ 0: 12345a
+ 1: 12345
+ 2: a
+ 12345+
+ 0: 12345
+ 1: 1234
+ 2: 5
+
+/(abc|)+/
+ abc
+ 0: abc
+ 1: abc
+ abcabc
+ 0: abcabc
+ 1: abc
+ abcabcabc
+ 0: abcabcabc
+ 1: abc
+ xyz
+ 0:
+ 1:
+
+/([a]*)*/
+ a
+ 0: a
+ 1: a
+ aaaaa
+ 0: aaaaa
+ 1: aaaaa
+
+/([ab]*)*/
+ a
+ 0: a
+ 1: a
+ b
+ 0: b
+ 1: b
+ ababab
+ 0: ababab
+ 1: ababab
+ aaaabcde
+ 0: aaaab
+ 1: aaaab
+ bbbb
+ 0: bbbb
+ 1: bbbb
+
+/([^a]*)*/
+ b
+ 0: b
+ 1: b
+ bbbb
+ 0: bbbb
+ 1: bbbb
+ aaa
+ 0:
+
+/([^ab]*)*/
+ cccc
+ 0: cccc
+ 1: cccc
+ abab
+ 0:
+
+/abc/
+ abc
+ 0: abc
+ xabcy
+ 0: abc
+ ababc
+ 0: abc
+ *** Failers
+No match
+ xbc
+No match
+ axc
+No match
+ abx
+No match
+
+/ab*c/
+ abc
+ 0: abc
+
+/ab*bc/
+ abc
+ 0: abc
+ abbc
+ 0: abbc
+ abbbbc
+ 0: abbbbc
+
+/.{1}/
+ abbbbc
+ 0: a
+
+/.{3,4}/
+ abbbbc
+ 0: abbb
+
+/ab{0,}bc/
+ abbbbc
+ 0: abbbbc
+
+/ab+bc/
+ abbc
+ 0: abbc
+ *** Failers
+No match
+ abc
+No match
+ abq
+No match
+
+/ab+bc/
+ abbbbc
+ 0: abbbbc
+
+/ab{1,}bc/
+ abbbbc
+ 0: abbbbc
+
+/ab{1,3}bc/
+ abbbbc
+ 0: abbbbc
+
+/ab{3,4}bc/
+ abbbbc
+ 0: abbbbc
+
+/ab{4,5}bc/
+ *** Failers
+No match
+ abq
+No match
+ abbbbc
+No match
+
+/ab?bc/
+ abbc
+ 0: abbc
+ abc
+ 0: abc
+
+/ab{0,1}bc/
+ abc
+ 0: abc
+
+/ab?c/
+ abc
+ 0: abc
+
+/ab{0,1}c/
+ abc
+ 0: abc
+
+/^abc$/
+ abc
+ 0: abc
+ *** Failers
+No match
+ abbbbc
+No match
+ abcc
+No match
+
+/^abc/
+ abcc
+ 0: abc
+
+/abc$/
+ aabc
+ 0: abc
+ *** Failers
+No match
+ aabc
+ 0: abc
+ aabcd
+No match
+
+/^/
+ abc
+ 0:
+
+/$/
+ abc
+ 0:
+
+/a.c/
+ abc
+ 0: abc
+ axc
+ 0: axc
+
+/a.*c/
+ axyzc
+ 0: axyzc
+
+/a[bc]d/
+ abd
+ 0: abd
+ *** Failers
+No match
+ axyzd
+No match
+ abc
+No match
+
+/a[b-d]e/
+ ace
+ 0: ace
+
+/a[b-d]/
+ aac
+ 0: ac
+
+/a[-b]/
+ a-
+ 0: a-
+
+/a[b-]/
+ a-
+ 0: a-
+
+/a[]]b/
+ a]b
+ 0: a]b
+
+/a[^bc]d/
+ aed
+ 0: aed
+ *** Failers
+No match
+ abd
+No match
+ abd
+No match
+
+/a[^-b]c/
+ adc
+ 0: adc
+
+/a[^]b]c/
+ adc
+ 0: adc
+ *** Failers
+No match
+ a-c
+ 0: a-c
+ a]c
+No match
+
+/\ba\b/
+ a-
+ 0: a
+ -a
+ 0: a
+ -a-
+ 0: a
+
+/\by\b/
+ *** Failers
+No match
+ xy
+No match
+ yz
+No match
+ xyz
+No match
+
+/\Ba\B/
+ *** Failers
+ 0: a
+ a-
+No match
+ -a
+No match
+ -a-
+No match
+
+/\By\b/
+ xy
+ 0: y
+
+/\by\B/
+ yz
+ 0: y
+
+/\By\B/
+ xyz
+ 0: y
+
+/\w/
+ a
+ 0: a
+
+/\W/
+ -
+ 0: -
+ *** Failers
+ 0: *
+ -
+ 0: -
+ a
+No match
+
+/a\sb/
+ a b
+ 0: a b
+
+/a\Sb/
+ a-b
+ 0: a-b
+ *** Failers
+No match
+ a-b
+ 0: a-b
+ a b
+No match
+
+/[0-9]/
+ 1
+ 0: 1
+
+/[^0-9]/
+ -
+ 0: -
+ *** Failers
+ 0: *
+ -
+ 0: -
+ 1
+No match
+
+/ab|cd/
+ abc
+ 0: ab
+ abcd
+ 0: ab
+
+/()ef/
+ def
+ 0: ef
+ 1:
+
+/a\(b/
+ a(b
+ 0: a(b
+
+/a\(*b/
+ ab
+ 0: ab
+ a((b
+ 0: a((b
+
+/((a))/
+ abc
+ 0: a
+ 1: a
+ 2: a
+
+/(a)b(c)/
+ abc
+ 0: abc
+ 1: a
+ 2: c
+
+/a+b+c/
+ aabbabc
+ 0: abc
+
+/a{1,}b{1,}c/
+ aabbabc
+ 0: abc
+
+/(a+|b)*/
+ ab
+ 0: ab
+ 1: b
+
+/(a+|b){0,}/
+ ab
+ 0: ab
+ 1: b
+
+/(a+|b)+/
+ ab
+ 0: ab
+ 1: b
+
+/(a+|b){1,}/
+ ab
+ 0: ab
+ 1: b
+
+/(a+|b)?/
+ ab
+ 0: a
+ 1: a
+
+/(a+|b){0,1}/
+ ab
+ 0: a
+ 1: a
+
+/[^ab]*/
+ cde
+ 0: cde
+
+/abc/
+ *** Failers
+No match
+ b
+No match
+
+
+/a*/
+
+
+/([abc])*d/
+ abbbcd
+ 0: abbbcd
+ 1: c
+
+/([abc])*bcd/
+ abcd
+ 0: abcd
+ 1: a
+
+/a|b|c|d|e/
+ e
+ 0: e
+
+/(a|b|c|d|e)f/
+ ef
+ 0: ef
+ 1: e
+
+/abcd*efg/
+ abcdefg
+ 0: abcdefg
+
+/ab*/
+ xabyabbbz
+ 0: ab
+ xayabbbz
+ 0: a
+
+/(ab|cd)e/
+ abcde
+ 0: cde
+ 1: cd
+
+/[abhgefdc]ij/
+ hij
+ 0: hij
+
+/(abc|)ef/
+ abcdef
+ 0: ef
+ 1:
+
+/(a|b)c*d/
+ abcd
+ 0: bcd
+ 1: b
+
+/(ab|ab*)bc/
+ abc
+ 0: abc
+ 1: a
+
+/a([bc]*)c*/
+ abc
+ 0: abc
+ 1: bc
+
+/a([bc]*)(c*d)/
+ abcd
+ 0: abcd
+ 1: bc
+ 2: d
+
+/a([bc]+)(c*d)/
+ abcd
+ 0: abcd
+ 1: bc
+ 2: d
+
+/a([bc]*)(c+d)/
+ abcd
+ 0: abcd
+ 1: b
+ 2: cd
+
+/a[bcd]*dcdcde/
+ adcdcde
+ 0: adcdcde
+
+/a[bcd]+dcdcde/
+ *** Failers
+No match
+ abcde
+No match
+ adcdcde
+No match
+
+/(ab|a)b*c/
+ abc
+ 0: abc
+ 1: ab
+
+/((a)(b)c)(d)/
+ abcd
+ 0: abcd
+ 1: abc
+ 2: a
+ 3: b
+ 4: d
+
+/[a-zA-Z_][a-zA-Z0-9_]*/
+ alpha
+ 0: alpha
+
+/^a(bc+|b[eh])g|.h$/
+ abh
+ 0: bh
+
+/(bc+d$|ef*g.|h?i(j|k))/
+ effgz
+ 0: effgz
+ 1: effgz
+ ij
+ 0: ij
+ 1: ij
+ 2: j
+ reffgz
+ 0: effgz
+ 1: effgz
+ *** Failers
+No match
+ effg
+No match
+ bcdd
+No match
+
+/((((((((((a))))))))))/
+ a
+ 0: a
+ 1: a
+ 2: a
+ 3: a
+ 4: a
+ 5: a
+ 6: a
+ 7: a
+ 8: a
+ 9: a
+10: a
+
+/((((((((((a))))))))))\9/
+ aa
+ 0: aa
+ 1: a
+ 2: a
+ 3: a
+ 4: a
+ 5: a
+ 6: a
+ 7: a
+ 8: a
+ 9: a
+10: a
+
+/(((((((((a)))))))))/
+ a
+ 0: a
+ 1: a
+ 2: a
+ 3: a
+ 4: a
+ 5: a
+ 6: a
+ 7: a
+ 8: a
+ 9: a
+
+/multiple words of text/
+ *** Failers
+No match
+ aa
+No match
+ uh-uh
+No match
+
+/multiple words/
+ multiple words, yeah
+ 0: multiple words
+
+/(.*)c(.*)/
+ abcde
+ 0: abcde
+ 1: ab
+ 2: de
+
+/\((.*), (.*)\)/
+ (a, b)
+ 0: (a, b)
+ 1: a
+ 2: b
+
+/abcd/
+ abcd
+ 0: abcd
+
+/a(bc)d/
+ abcd
+ 0: abcd
+ 1: bc
+
+/a[-]?c/
+ ac
+ 0: ac
+
+/(abc)\1/
+ abcabc
+ 0: abcabc
+ 1: abc
+
+/([a-c]*)\1/
+ abcabc
+ 0: abcabc
+ 1: abc
+
+/(a)|\1/
+ a
+ 0: a
+ 1: a
+ *** Failers
+ 0: a
+ 1: a
+ ab
+ 0: a
+ 1: a
+ x
+No match
+
+/abc/i
+ ABC
+ 0: ABC
+ XABCY
+ 0: ABC
+ ABABC
+ 0: ABC
+ *** Failers
+No match
+ aaxabxbaxbbx
+No match
+ XBC
+No match
+ AXC
+No match
+ ABX
+No match
+
+/ab*c/i
+ ABC
+ 0: ABC
+
+/ab*bc/i
+ ABC
+ 0: ABC
+ ABBC
+ 0: ABBC
+
+/ab+bc/i
+ *** Failers
+No match
+ ABC
+No match
+ ABQ
+No match
+
+/ab+bc/i
+ ABBBBC
+ 0: ABBBBC
+
+/^abc$/i
+ ABC
+ 0: ABC
+ *** Failers
+No match
+ ABBBBC
+No match
+ ABCC
+No match
+
+/^abc/i
+ ABCC
+ 0: ABC
+
+/abc$/i
+ AABC
+ 0: ABC
+
+/^/i
+ ABC
+ 0:
+
+/$/i
+ ABC
+ 0:
+
+/a.c/i
+ ABC
+ 0: ABC
+ AXC
+ 0: AXC
+
+/a.*c/i
+ *** Failers
+No match
+ AABC
+ 0: AABC
+ AXYZD
+No match
+
+/a[bc]d/i
+ ABD
+ 0: ABD
+
+/a[b-d]e/i
+ ACE
+ 0: ACE
+ *** Failers
+No match
+ ABC
+No match
+ ABD
+No match
+
+/a[b-d]/i
+ AAC
+ 0: AC
+
+/a[-b]/i
+ A-
+ 0: A-
+
+/a[b-]/i
+ A-
+ 0: A-
+
+/a[]]b/i
+ A]B
+ 0: A]B
+
+/a[^bc]d/i
+ AED
+ 0: AED
+
+/a[^-b]c/i
+ ADC
+ 0: ADC
+ *** Failers
+No match
+ ABD
+No match
+ A-C
+No match
+
+/a[^]b]c/i
+ ADC
+ 0: ADC
+
+/ab|cd/i
+ ABC
+ 0: AB
+ ABCD
+ 0: AB
+
+/()ef/i
+ DEF
+ 0: EF
+ 1:
+
+/$b/i
+ *** Failers
+No match
+ A]C
+No match
+ B
+No match
+
+/a\(b/i
+ A(B
+ 0: A(B
+
+/a\(*b/i
+ AB
+ 0: AB
+ A((B
+ 0: A((B
+
+/((a))/i
+ ABC
+ 0: A
+ 1: A
+ 2: A
+
+/(a)b(c)/i
+ ABC
+ 0: ABC
+ 1: A
+ 2: C
+
+/a+b+c/i
+ AABBABC
+ 0: ABC
+
+/a{1,}b{1,}c/i
+ AABBABC
+ 0: ABC
+
+/(a+|b)*/i
+ AB
+ 0: AB
+ 1: B
+
+/(a+|b){0,}/i
+ AB
+ 0: AB
+ 1: B
+
+/(a+|b)+/i
+ AB
+ 0: AB
+ 1: B
+
+/(a+|b){1,}/i
+ AB
+ 0: AB
+ 1: B
+
+/(a+|b)?/i
+ AB
+ 0: A
+ 1: A
+
+/(a+|b){0,1}/i
+ AB
+ 0: A
+ 1: A
+
+/[^ab]*/i
+ CDE
+ 0: CDE
+
+/([abc])*d/i
+ ABBBCD
+ 0: ABBBCD
+ 1: C
+
+/([abc])*bcd/i
+ ABCD
+ 0: ABCD
+ 1: A
+
+/a|b|c|d|e/i
+ E
+ 0: E
+
+/(a|b|c|d|e)f/i
+ EF
+ 0: EF
+ 1: E
+
+/abcd*efg/i
+ ABCDEFG
+ 0: ABCDEFG
+
+/ab*/i
+ XABYABBBZ
+ 0: AB
+ XAYABBBZ
+ 0: A
+
+/(ab|cd)e/i
+ ABCDE
+ 0: CDE
+ 1: CD
+
+/[abhgefdc]ij/i
+ HIJ
+ 0: HIJ
+
+/^(ab|cd)e/i
+ ABCDE
+No match
+
+/(abc|)ef/i
+ ABCDEF
+ 0: EF
+ 1:
+
+/(a|b)c*d/i
+ ABCD
+ 0: BCD
+ 1: B
+
+/(ab|ab*)bc/i
+ ABC
+ 0: ABC
+ 1: A
+
+/a([bc]*)c*/i
+ ABC
+ 0: ABC
+ 1: BC
+
+/a([bc]*)(c*d)/i
+ ABCD
+ 0: ABCD
+ 1: BC
+ 2: D
+
+/a([bc]+)(c*d)/i
+ ABCD
+ 0: ABCD
+ 1: BC
+ 2: D
+
+/a([bc]*)(c+d)/i
+ ABCD
+ 0: ABCD
+ 1: B
+ 2: CD
+
+/a[bcd]*dcdcde/i
+ ADCDCDE
+ 0: ADCDCDE
+
+/a[bcd]+dcdcde/i
+
+/(ab|a)b*c/i
+ ABC
+ 0: ABC
+ 1: AB
+
+/((a)(b)c)(d)/i
+ ABCD
+ 0: ABCD
+ 1: ABC
+ 2: A
+ 3: B
+ 4: D
+
+/[a-zA-Z_][a-zA-Z0-9_]*/i
+ ALPHA
+ 0: ALPHA
+
+/^a(bc+|b[eh])g|.h$/i
+ ABH
+ 0: BH
+
+/(bc+d$|ef*g.|h?i(j|k))/i
+ EFFGZ
+ 0: EFFGZ
+ 1: EFFGZ
+ IJ
+ 0: IJ
+ 1: IJ
+ 2: J
+ REFFGZ
+ 0: EFFGZ
+ 1: EFFGZ
+ *** Failers
+No match
+ ADCDCDE
+No match
+ EFFG
+No match
+ BCDD
+No match
+
+/((((((((((a))))))))))/i
+ A
+ 0: A
+ 1: A
+ 2: A
+ 3: A
+ 4: A
+ 5: A
+ 6: A
+ 7: A
+ 8: A
+ 9: A
+10: A
+
+/((((((((((a))))))))))\9/i
+ AA
+ 0: AA
+ 1: A
+ 2: A
+ 3: A
+ 4: A
+ 5: A
+ 6: A
+ 7: A
+ 8: A
+ 9: A
+10: A
+
+/(((((((((a)))))))))/i
+ A
+ 0: A
+ 1: A
+ 2: A
+ 3: A
+ 4: A
+ 5: A
+ 6: A
+ 7: A
+ 8: A
+ 9: A
+
+/multiple words of text/i
+ *** Failers
+No match
+ AA
+No match
+ UH-UH
+No match
+
+/multiple words/i
+ MULTIPLE WORDS, YEAH
+ 0: MULTIPLE WORDS
+
+/(.*)c(.*)/i
+ ABCDE
+ 0: ABCDE
+ 1: AB
+ 2: DE
+
+/\((.*), (.*)\)/i
+ (A, B)
+ 0: (A, B)
+ 1: A
+ 2: B
+
+/abcd/i
+ ABCD
+ 0: ABCD
+
+/a(bc)d/i
+ ABCD
+ 0: ABCD
+ 1: BC
+
+/a[-]?c/i
+ AC
+ 0: AC
+
+/(abc)\1/i
+ ABCABC
+ 0: ABCABC
+ 1: ABC
+
+/([a-c]*)\1/i
+ ABCABC
+ 0: ABCABC
+ 1: ABC
+
+/((foo)|(bar))*/
+ foobar
+ 0: foobar
+ 1: bar
+ 2: foo
+ 3: bar
+
+/^(.+)?B/
+ AB
+ 0: AB
+ 1: A
+
+/^([^a-z])|(\^)$/
+ .
+ 0: .
+ 1: .
+
+/^[<>]&/
+ <&OUT
+ 0: <&
+
+/^(){3,5}/
+ abc
+ 0:
+ 1:
+
+/^(a+)*ax/
+ aax
+ 0: aax
+ 1: a
+
+/^((a|b)+)*ax/
+ aax
+ 0: aax
+ 1: a
+ 2: a
+
+/^((a|bc)+)*ax/
+ aax
+ 0: aax
+ 1: a
+ 2: a
+
+/(a|x)*ab/
+ cab
+ 0: ab
+
+/(a)*ab/
+ cab
+ 0: ab
+
+/(ab)[0-9]\1/i
+ Ab4ab
+ 0: Ab4ab
+ 1: Ab
+ ab4Ab
+ 0: ab4Ab
+ 1: ab
+
+/foo\w*[0-9]{4}baz/
+ foobar1234baz
+ 0: foobar1234baz
+
+/(\w+:)+/
+ one:
+ 0: one:
+ 1: one:
+
+/((\w|:)+::)?(\w+)$/
+ abcd
+ 0: abcd
+ 1: <unset>
+ 2: <unset>
+ 3: abcd
+ xy:z:::abcd
+ 0: xy:z:::abcd
+ 1: xy:z:::
+ 2: :
+ 3: abcd
+
+/^[^bcd]*(c+)/
+ aexycd
+ 0: aexyc
+ 1: c
+
+/(a*)b+/
+ caab
+ 0: aab
+ 1: aa
+
+/((\w|:)+::)?(\w+)$/
+ abcd
+ 0: abcd
+ 1: <unset>
+ 2: <unset>
+ 3: abcd
+ xy:z:::abcd
+ 0: xy:z:::abcd
+ 1: xy:z:::
+ 2: :
+ 3: abcd
+ *** Failers
+ 0: Failers
+ 1: <unset>
+ 2: <unset>
+ 3: Failers
+ abcd:
+No match
+ abcd:
+No match
+
+/^[^bcd]*(c+)/
+ aexycd
+ 0: aexyc
+ 1: c
+
+/((Z)+|A)*/
+ ZABCDEFG
+ 0: ZA
+ 1: A
+ 2: Z
+
+/(Z()|A)*/
+ ZABCDEFG
+ 0: ZA
+ 1: A
+ 2:
+
+/(Z(())|A)*/
+ ZABCDEFG
+ 0: ZA
+ 1: A
+ 2:
+ 3:
+
+/(.*)[0-9]+\1/
+ abc123abc
+ 0: abc123abc
+ 1: abc
+ abc123bc
+ 0: bc123bc
+ 1: bc
+
+/((.*))[0-9]+\1/
+ abc123abc
+ 0: abc123abc
+ 1: abc
+ 2: abc
+ abc123bc
+ 0: bc123bc
+ 1: bc
+ 2: bc
+
+/^a{2,5}$/
+ aa
+ 0: aa
+ aaa
+ 0: aaa
+ aaaa
+ 0: aaaa
+ aaaaa
+ 0: aaaaa
+ *** Failers
+No match
+ a
+No match
+ b
+No match
+ aaaaab
+No match
+ aaaaaa
diff --git a/test/src/regex-resources/PTESTS b/test/src/regex-resources/PTESTS
new file mode 100644
index 0000000000..02b357cf2e
--- /dev/null
+++ b/test/src/regex-resources/PTESTS
@@ -0,0 +1,341 @@
+# 2.8.2 Regular Expression General Requirement
+2¦4¦bb*¦abbbc¦
+2¦2¦bb*¦ababbbc¦
+7¦9¦A#*::¦A:A#:qA::qA#::qA##::q¦
+1¦5¦A#*::¦A##::A#::qA::qA#:q¦
+# 2.8.3.1.2 BRE Special Characters
+# GA108
+2¦2¦\.¦a.c¦
+2¦2¦\[¦a[c¦
+2¦2¦\\¦a\c¦
+2¦2¦\*¦a*c¦
+2¦2¦\^¦a^c¦
+2¦2¦\$¦a$c¦
+7¦11¦X\*Y\*8¦Y*8X*8X*Y*8¦
+# GA109
+2¦2¦[.]¦a.c¦
+2¦2¦[[]¦a[c¦
+-1¦-1¦[[]¦ac¦
+2¦2¦[\]¦a\c¦
+1¦1¦[\a]¦abc¦
+2¦2¦[\.]¦a\.c¦
+2¦2¦[\.]¦a.\c¦
+2¦2¦[*]¦a*c¦
+2¦2¦[$]¦a$c¦
+2¦2¦[X*Y8]¦7*8YX¦
+# GA110
+2¦2¦*¦a*c¦
+3¦4¦*a¦*b*a*c¦
+1¦5¦**9=¦***9=9¦
+# GA111
+1¦1¦^*¦*bc¦
+-1¦-1¦^*¦a*c¦
+-1¦-1¦^*¦^*ab¦
+1¦5¦^**9=¦***9=¦
+-1¦-1¦^*5<*9¦5<9*5<*9¦
+# GA112
+2¦3¦\(*b\)¦a*b¦
+-1¦-1¦\(*b\)¦ac¦
+1¦6¦A\(**9\)=¦A***9=79¦
+# GA113(1)
+1¦3¦\(^*ab\)¦*ab¦
+-1¦-1¦\(^*ab\)¦^*ab¦
+-1¦-1¦\(^*b\)¦a*b¦
+-1¦-1¦\(^*b\)¦^*b¦
+### GA113(2) GNU regex implements GA113(1)
+##-1¦-1¦\(^*ab\)¦*ab¦
+##-1¦-1¦\(^*ab\)¦^*ab¦
+##1¦1¦\(^*b\)¦b¦
+##1¦3¦\(^*b\)¦^^b¦
+# GA114
+1¦3¦a^b¦a^b¦
+1¦3¦a\^b¦a^b¦
+1¦1¦^^¦^bc¦
+2¦2¦\^¦a^c¦
+1¦1¦[c^b]¦^abc¦
+1¦1¦[\^ab]¦^ab¦
+2¦2¦[\^ab]¦c\d¦
+-1¦-1¦[^^]¦^¦
+1¦3¦\(a^b\)¦a^b¦
+1¦3¦\(a\^b\)¦a^b¦
+2¦2¦\(\^\)¦a^b¦
+# GA115
+3¦3¦$$¦ab$¦
+-1¦-1¦$$¦$ab¦
+2¦3¦$c¦a$c¦
+2¦2¦[$]¦a$c¦
+1¦2¦\$a¦$a¦
+3¦3¦\$$¦ab$¦
+2¦6¦A\([34]$[34]\)B¦XA4$3BY¦
+# 2.8.3.1.3 Periods in BREs
+# GA116
+1¦1¦.¦abc¦
+-1¦-1¦.ab¦abc¦
+1¦3¦ab.¦abc¦
+1¦3¦a.b¦a,b¦
+-1¦-1¦.......¦PqRs6¦
+1¦7¦.......¦PqRs6T8¦
+# 2.8.3.2 RE Bracket Expression
+# GA118
+2¦2¦[abc]¦xbyz¦
+-1¦-1¦[abc]¦xyz¦
+2¦2¦[abc]¦xbay¦
+# GA119
+2¦2¦[^a]¦abc¦
+4¦4¦[^]cd]¦cd]ef¦
+2¦2¦[^abc]¦axyz¦
+-1¦-1¦[^abc]¦abc¦
+3¦3¦[^[.a.]b]¦abc¦
+3¦3¦[^[=a=]b]¦abc¦
+2¦2¦[^-ac]¦abcde-¦
+2¦2¦[^ac-]¦abcde-¦
+3¦3¦[^a-b]¦abcde¦
+3¦3¦[^a-bd-e]¦dec¦
+2¦2¦[^---]¦-ab¦
+16¦16¦[^a-zA-Z0-9]¦pqrstVWXYZ23579#¦
+# GA120(1)
+3¦3¦[]a]¦cd]ef¦
+1¦1¦[]-a]¦a_b¦
+3¦3¦[][.-.]-0]¦ab0-]¦
+1¦1¦[]^a-z]¦string¦
+# GA120(2)
+4¦4¦[^]cd]¦cd]ef¦
+0¦0¦[^]]*¦]]]]]]]]X¦
+0¦0¦[^]]*¦]]]]]]]]¦
+9¦9¦[^]]\{1,\}¦]]]]]]]]X¦
+-1¦-1¦[^]]\{1,\}¦]]]]]]]]¦
+# GA120(3)
+3¦3¦[c[.].]d]¦ab]cd¦
+2¦8¦[a-z]*[[.].]][A-Z]*¦Abcd]DEFg¦
+# GA121
+2¦2¦[[.a.]b]¦Abc¦
+1¦1¦[[.a.]b]¦aBc¦
+-1¦-1¦[[.a.]b]¦ABc¦
+3¦3¦[^[.a.]b]¦abc¦
+3¦3¦[][.-.]-0]¦ab0-]¦
+3¦3¦[A-[.].]c]¦ab]!¦
+# GA122
+-2¦-2¦[[.ch.]]¦abc¦
+-2¦-2¦[[.ab.][.CD.][.EF.]]¦yZabCDEFQ9¦
+# GA125
+2¦2¦[[=a=]b]¦Abc¦
+1¦1¦[[=a=]b]¦aBc¦
+-1¦-1¦[[=a=]b]¦ABc¦
+3¦3¦[^[=a=]b]¦abc¦
+# GA126
+#W the expected result for [[:alnum:]]* is 2-7 which is wrong
+0¦0¦[[:alnum:]]*¦ aB28gH¦
+2¦7¦[[:alnum:]][[:alnum:]]*¦ aB28gH¦
+#W the expected result for [^[:alnum:]]* is 2-5 which is wrong
+0¦0¦[^[:alnum:]]*¦2 ,a¦
+2¦5¦[^[:alnum:]][^[:alnum:]]*¦2 ,a¦
+#W the expected result for [[:alpha:]]* is 2-5 which is wrong
+0¦0¦[[:alpha:]]*¦ aBgH2¦
+2¦5¦[[:alpha:]][[:alpha:]]*¦ aBgH2¦
+1¦6¦[^[:alpha:]]*¦2 8,a¦
+1¦2¦[[:blank:]]*¦ ¦
+1¦8¦[^[:blank:]]*¦aB28gH, ¦
+1¦2¦[[:cntrl:]]*¦  ¦
+1¦8¦[^[:cntrl:]]*¦aB2 8gh,¦
+#W the expected result for [[:digit:]]* is 2-3 which is wrong
+0¦0¦[[:digit:]]*¦a28¦
+2¦3¦[[:digit:]][[:digit:]]*¦a28¦
+1¦8¦[^[:digit:]]*¦aB gH,¦
+1¦7¦[[:graph:]]*¦aB28gH, ¦
+1¦3¦[^[:graph:]]*¦ ,¦
+1¦2¦[[:lower:]]*¦agB¦
+1¦8¦[^[:lower:]]*¦B2 8H,a¦
+1¦8¦[[:print:]]*¦aB2 8gH, ¦
+1¦2¦[^[:print:]]*¦  ¦
+#W the expected result for [[:punct:]]* is 2-2 which is wrong
+0¦0¦[[:punct:]]*¦a,2¦
+2¦3¦[[:punct:]][[:punct:]]*¦a,,2¦
+1¦9¦[^[:punct:]]*¦aB2 8gH¦
+1¦3¦[[:space:]]*¦ ¦
+#W the expected result for [^[:space:]]* is 2-9 which is wrong
+0¦0¦[^[:space:]]*¦ aB28gH, ¦
+2¦9¦[^[:space:]][^[:space:]]*¦ aB28gH, ¦
+#W the expected result for [[:upper:]]* is 2-3 which is wrong
+0¦0¦[[:upper:]]*¦aBH2¦
+2¦3¦[[:upper:]][[:upper:]]*¦aBH2¦
+1¦8¦[^[:upper:]]*¦a2 8g,B¦
+#W the expected result for [[:xdigit:]]* is 2-5 which is wrong
+0¦0¦[[:xdigit:]]*¦gaB28h¦
+2¦5¦[[:xdigit:]][[:xdigit:]]*¦gaB28h¦
+#W the expected result for [^[:xdigit:]]* is 2-7 which is wrong
+2¦7¦[^[:xdigit:]][^[:xdigit:]]*¦a gH,2¦
+# GA127
+-2¦-2¦[b-a]¦abc¦
+1¦1¦[a-c]¦bbccde¦
+2¦2¦[a-b]¦-bc¦
+3¦3¦[a-z0-9]¦AB0¦
+3¦3¦[^a-b]¦abcde¦
+3¦3¦[^a-bd-e]¦dec¦
+1¦1¦[]-a]¦a_b¦
+2¦2¦[+--]¦a,b¦
+2¦2¦[--/]¦a.b¦
+2¦2¦[^---]¦-ab¦
+3¦3¦[][.-.]-0]¦ab0-]¦
+3¦3¦[A-[.].]c]¦ab]!¦
+2¦6¦bc[d-w]xy¦abchxyz¦
+# GA129
+1¦1¦[a-cd-f]¦dbccde¦
+-1¦-1¦[a-ce-f]¦dBCCdE¦
+2¦4¦b[n-zA-M]Y¦absY9Z¦
+2¦4¦b[n-zA-M]Y¦abGY9Z¦
+# GA130
+3¦3¦[-xy]¦ac-¦
+2¦4¦c[-xy]D¦ac-D+¦
+2¦2¦[--/]¦a.b¦
+2¦4¦c[--/]D¦ac.D+b¦
+2¦2¦[^-ac]¦abcde-¦
+1¦3¦a[^-ac]c¦abcde-¦
+3¦3¦[xy-]¦zc-¦
+2¦4¦c[xy-]7¦zc-786¦
+2¦2¦[^ac-]¦abcde-¦
+2¦4¦a[^ac-]c¦5abcde-¦
+2¦2¦[+--]¦a,b¦
+2¦4¦a[+--]B¦Xa,By¦
+2¦2¦[^---]¦-ab¦
+4¦6¦X[^---]Y¦X-YXaYXbY¦
+# 2.8.3.3 BREs Matching Multiple Characters
+# GA131
+3¦4¦cd¦abcdeabcde¦
+1¦2¦ag*b¦abcde¦
+-1¦-1¦[a-c][e-f]¦abcdef¦
+3¦4¦[a-c][e-f]¦acbedf¦
+4¦8¦abc*XYZ¦890abXYZ#*¦
+4¦9¦abc*XYZ¦890abcXYZ#*¦
+4¦15¦abc*XYZ¦890abcccccccXYZ#*¦
+-1¦-1¦abc*XYZ¦890abc*XYZ#*¦
+# GA132
+2¦4¦\(*bc\)¦a*bc¦
+1¦2¦\(ab\)¦abcde¦
+1¦10¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)¦abcdefghijk¦
+3¦8¦43\(2\(6\)*0\)AB¦654320ABCD¦
+3¦9¦43\(2\(7\)*0\)AB¦6543270ABCD¦
+3¦12¦43\(2\(7\)*0\)AB¦6543277770ABCD¦
+# GA133
+1¦10¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)¦abcdefghijk¦
+-1¦-1¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(k\)\)\)\)\)\)\)\)¦abcdefghijk¦
+# GA134
+2¦4¦\(bb*\)¦abbbc¦
+2¦2¦\(bb*\)¦ababbbc¦
+1¦6¦a\(.*b\)¦ababbbc¦
+1¦2¦a\(b*\)¦ababbbc¦
+1¦20¦a\(.*b\)c¦axcaxbbbcsxbbbbbbbbc¦
+# GA135
+1¦7¦\(a\(b\(c\(d\(e\)\)\)\)\)\4¦abcdededede¦
+#W POSIX does not really specify whether a\(b\)*c\1 matches acb.
+#W back references are supposed to expand to the last match, but what
+#W if there never was a match as in this case?
+-1¦-1¦a\(b\)*c\1¦acb¦
+1¦11¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)\9¦abcdefghijjk¦
+# GA136
+#W These two tests have the same problem as the test in GA135. No match
+#W of a subexpression, why should the back reference be usable?
+#W 1 2 a\(b\)*c\1 acb
+#W 4 7 a\(b\(c\(d\(f\)*\)\)\)\4¦xYzabcdePQRST
+-1¦-1¦a\(b\)*c\1¦acb¦
+-1¦-1¦a\(b\(c\(d\(f\)*\)\)\)\4¦xYzabcdePQRST¦
+# GA137
+-2¦-2¦\(a\(b\)\)\3¦foo¦
+-2¦-2¦\(a\(b\)\)\(a\(b\)\)\5¦foo¦
+# GA138
+1¦2¦ag*b¦abcde¦
+1¦10¦a.*b¦abababvbabc¦
+2¦5¦b*c¦abbbcdeabbbbbbcde¦
+2¦5¦bbb*c¦abbbcdeabbbbbbcde¦
+1¦5¦a\(b\)*c\1¦abbcbbb¦
+-1¦-1¦a\(b\)*c\1¦abbdbd¦
+0¦0¦\([a-c]*\)\1¦abcacdef¦
+1¦6¦\([a-c]*\)\1¦abcabcabcd¦
+1¦2¦a^*b¦ab¦
+1¦5¦a^*b¦a^^^b¦
+# GA139
+1¦2¦a\{2\}¦aaaa¦
+1¦7¦\([a-c]*\)\{0,\}¦aabcaab¦
+1¦2¦\(a\)\1\{1,2\}¦aabc¦
+1¦3¦\(a\)\1\{1,2\}¦aaaabc¦
+#W the expression \(\(a\)\1\)\{1,2\} is ill-formed, using \2
+1¦4¦\(\(a\)\2\)\{1,2\}¦aaaabc¦
+# GA140
+1¦2¦a\{2\}¦aaaa¦
+-1¦-1¦a\{2\}¦abcd¦
+0¦0¦a\{0\}¦aaaa¦
+1¦64¦a\{64\}¦aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa¦
+# GA141
+1¦7¦\([a-c]*\)\{0,\}¦aabcaab¦
+#W the expected result for \([a-c]*\)\{2,\} is failure which isn't correct
+1¦3¦\([a-c]*\)\{2,\}¦abcdefg¦
+1¦3¦\([a-c]*\)\{1,\}¦abcdefg¦
+-1¦-1¦a\{64,\}¦aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa¦
+# GA142
+1¦3¦a\{2,3\}¦aaaa¦
+-1¦-1¦a\{2,3\}¦abcd¦
+0¦0¦\([a-c]*\)\{0,0\}¦foo¦
+1¦63¦a\{1,63\}¦aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa¦
+# 2.8.3.4 BRE Precedence
+# GA143
+#W There are numerous bugs in the original version.
+2¦19¦\^\[[[.].]]\\(\\1\\)\*\\{1,2\\}\$¦a^[]\(\1\)*\{1,2\}$b¦
+1¦6¦[[=*=]][[=\=]][[=]=]][[===]][[...]][[:punct:]]¦*\]=.;¦
+1¦6¦[$\(*\)^]*¦$\()*^¦
+1¦1¦[\1]¦1¦
+1¦1¦[\{1,2\}]¦{¦
+#W the expected result for \(*\)*\1* is 2-2 which isn't correct
+0¦0¦\(*\)*\1*¦a*b*11¦
+2¦3¦\(*\)*\1*b¦a*b*11¦
+#W the expected result for \(a\(b\{1,2\}\)\{1,2\}\) is 1-5 which isn't correct
+1¦3¦\(a\(b\{1,2\}\)\{1,2\}\)¦abbab¦
+1¦5¦\(a\(b\{1,2\}\)\)\{1,2\}¦abbab¦
+1¦1¦^\(^\(^a$\)$\)$¦a¦
+1¦2¦\(a\)\1$¦aa¦
+1¦3¦ab*¦abb¦
+1¦4¦ab\{2,4\}¦abbbc¦
+# 2.8.3.5 BRE Expression Anchoring
+# GA144
+1¦1¦^a¦abc¦
+-1¦-1¦^b¦abc¦
+-1¦-1¦^[a-zA-Z]¦99Nine¦
+1¦4¦^[a-zA-Z]*¦Nine99¦
+# GA145(1)
+1¦2¦\(^a\)\1¦aabc¦
+-1¦-1¦\(^a\)\1¦^a^abc¦
+1¦2¦\(^^a\)¦^a¦
+1¦1¦\(^^\)¦^^¦
+1¦3¦\(^abc\)¦abcdef¦
+-1¦-1¦\(^def\)¦abcdef¦
+### GA145(2) GNU regex implements GA145(1)
+##-1¦-1¦\(^a\)\1¦aabc¦
+##1¦4¦\(^a\)\1¦^a^abc¦
+##-1¦-1¦\(^^a\)¦^a¦
+##1¦2¦\(^^\)¦^^¦
+# GA146
+3¦3¦a$¦cba¦
+-1¦-1¦a$¦abc¦
+5¦7¦[a-z]*$¦99ZZxyz¦
+#W the expected result for [a-z]*$ is failure which isn't correct
+10¦9¦[a-z]*$¦99ZZxyz99¦
+3¦3¦$$¦ab$¦
+-1¦-1¦$$¦$ab¦
+3¦3¦\$$¦ab$¦
+# GA147(1)
+-1¦-1¦\(a$\)\1¦bcaa¦
+-1¦-1¦\(a$\)\1¦ba$¦
+-1¦-1¦\(ab$\)¦ab$¦
+1¦2¦\(ab$\)¦ab¦
+4¦6¦\(def$\)¦abcdef¦
+-1¦-1¦\(abc$\)¦abcdef¦
+### GA147(2) GNU regex implements GA147(1)
+##-1¦-1¦\(a$\)\1¦bcaa¦
+##2¦5¦\(a$\)\1¦ba$a$¦
+##-1¦-1¦\(ab$\)¦ab¦
+##1¦3¦\(ab$\)¦ab$¦
+# GA148
+0¦0¦^$¦¦
+1¦3¦^abc$¦abc¦
+-1¦-1¦^xyz$¦^xyz^¦
+-1¦-1¦^234$¦^234$¦
+1¦9¦^[a-zA-Z0-9]*$¦2aA3bB9zZ¦
+-1¦-1¦^[a-z0-9]*$¦2aA3b#B9zZ¦
diff --git a/test/src/regex-resources/TESTS b/test/src/regex-resources/TESTS
new file mode 100644
index 0000000000..f2c9886405
--- /dev/null
+++ b/test/src/regex-resources/TESTS
@@ -0,0 +1,167 @@
+0:(.*)*\1:xx
+0:^:
+0:$:
+0:^$:
+0:^a$:a
+0:abc:abc
+1:abc:xbc
+1:abc:axc
+1:abc:abx
+0:abc:xabcy
+0:abc:ababc
+0:ab*c:abc
+0:ab*bc:abc
+0:ab*bc:abbc
+0:ab*bc:abbbbc
+0:ab+bc:abbc
+1:ab+bc:abc
+1:ab+bc:abq
+0:ab+bc:abbbbc
+0:ab?bc:abbc
+0:ab?bc:abc
+1:ab?bc:abbbbc
+0:ab?c:abc
+0:^abc$:abc
+1:^abc$:abcc
+0:^abc:abcc
+1:^abc$:aabc
+0:abc$:aabc
+0:^:abc
+0:$:abc
+0:a.c:abc
+0:a.c:axc
+0:a.*c:axyzc
+1:a.*c:axyzd
+1:a[bc]d:abc
+0:a[bc]d:abd
+1:a[b-d]e:abd
+0:a[b-d]e:ace
+0:a[b-d]:aac
+0:a[-b]:a-
+0:a[b-]:a-
+2:a[b-a]:-
+2:a[]b:-
+2:a[:-
+0:a]:a]
+0:a[]]b:a]b
+0:a[^bc]d:aed
+1:a[^bc]d:abd
+0:a[^-b]c:adc
+1:a[^-b]c:a-c
+1:a[^]b]c:a]c
+0:a[^]b]c:adc
+0:ab|cd:abc
+0:ab|cd:abcd
+0:()ef:def
+0:()*:-
+2:*a:-
+2:^*:-
+2:$*:-
+2:(*)b:-
+1:$b:b
+2:a\:-
+0:a\(b:a(b
+0:a\(*b:ab
+0:a\(*b:a((b
+1:a\x:a\x
+1:abc):-
+2:(abc:-
+0:((a)):abc
+0:(a)b(c):abc
+0:a+b+c:aabbabc
+0:a**:-
+0:a*?:-
+0:(a*)*:-
+0:(a*)+:-
+0:(a|)*:-
+0:(a*|b)*:-
+0:(a+|b)*:ab
+0:(a+|b)+:ab
+0:(a+|b)?:ab
+0:[^ab]*:cde
+0:(^)*:-
+0:(ab|)*:-
+2:)(:-
+1:abc:
+1:abc:
+0:a*:
+0:([abc])*d:abbbcd
+0:([abc])*bcd:abcd
+0:a|b|c|d|e:e
+0:(a|b|c|d|e)f:ef
+0:((a*|b))*:-
+0:abcd*efg:abcdefg
+0:ab*:xabyabbbz
+0:ab*:xayabbbz
+0:(ab|cd)e:abcde
+0:[abhgefdc]ij:hij
+1:^(ab|cd)e:abcde
+0:(abc|)ef:abcdef
+0:(a|b)c*d:abcd
+0:(ab|ab*)bc:abc
+0:a([bc]*)c*:abc
+0:a([bc]*)(c*d):abcd
+0:a([bc]+)(c*d):abcd
+0:a([bc]*)(c+d):abcd
+0:a[bcd]*dcdcde:adcdcde
+1:a[bcd]+dcdcde:adcdcde
+0:(ab|a)b*c:abc
+0:((a)(b)c)(d):abcd
+0:[A-Za-z_][A-Za-z0-9_]*:alpha
+0:^a(bc+|b[eh])g|.h$:abh
+0:(bc+d$|ef*g.|h?i(j|k)):effgz
+0:(bc+d$|ef*g.|h?i(j|k)):ij
+1:(bc+d$|ef*g.|h?i(j|k)):effg
+1:(bc+d$|ef*g.|h?i(j|k)):bcdd
+0:(bc+d$|ef*g.|h?i(j|k)):reffgz
+1:((((((((((a)))))))))):-
+0:(((((((((a))))))))):a
+1:multiple words of text:uh-uh
+0:multiple words:multiple words, yeah
+0:(.*)c(.*):abcde
+1:\((.*),:(.*)\)
+1:[k]:ab
+0:abcd:abcd
+0:a(bc)d:abcd
+0:a[-]?c:ac
+0:(....).*\1:beriberi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Qaddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mo'ammar Gadhafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Kaddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Qadhafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moammar El Kadhafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Gadafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar al-Qadafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamer El Kazzafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamar al-Gaddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar Al Qathafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Al Qathafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mo'ammar el-Gadhafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamar El Kadhafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar al-Qadhafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar al-Qadhdhafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar Qadafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamar Gaddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar Qadhdhafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Khaddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar al-Khaddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'amar al-Kadafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Ghaddafy
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Ghadafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Ghaddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muamar Kaddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Quathafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Gheddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muamar Al-Kaddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moammar Khadafy
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moammar Qudhafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar al-Qaddafi
+0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mulazim Awwal Mu'ammar Muhammad Abu Minyar al-Qadhafi
+0:[[:digit:]]+:01234
+1:[[:alpha:]]+:01234
+0:^[[:digit:]]*$:01234
+1:^[[:digit:]]*$:01234a
+0:^[[:alnum:]]*$:01234a
+0:^[[:xdigit:]]*$:01234a
+1:^[[:xdigit:]]*$:01234g
+0:^[[:alnum:][:space:]]*$:Hello world
diff --git a/test/src/regex-tests.el b/test/src/regex-tests.el
new file mode 100644
index 0000000000..6e21088114
--- /dev/null
+++ b/test/src/regex-tests.el
@@ -0,0 +1,678 @@
+;;; regex-tests.el --- tests for regex.c functions -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+
+(defvar regex-tests--resources-dir
+ (concat (concat (file-name-directory (or load-file-name buffer-file-name))
+ "/regex-resources/"))
+ "Path to regex-resources directory next to the \"regex-tests.el\" file.")
+
+(ert-deftest regex-word-cc-fallback-test ()
+ "Test that ‘[[:cc:]]*x’ matches ‘x’ (bug#24020).
+
+Test that a regex of the form \"[[:cc:]]*x\" where CC is
+a character class which matches a multibyte character X, matches
+string \"x\".
+
+For example, ‘[[:word:]]*\u2620’ regex (note: \u2620 is a word
+character) must match a string \"\u2420\"."
+ (dolist (class '("[[:word:]]" "\\sw"))
+ (dolist (repeat '("*" "+"))
+ (dolist (suffix '("" "b" "bar" "\u2620"))
+ (dolist (string '("" "foo"))
+ (when (not (and (string-equal repeat "+")
+ (string-equal string "")))
+ (should (string-match (concat "^" class repeat suffix "$")
+ (concat string suffix)))))))))
+
+(defun regex--test-cc (name matching not-matching)
+ (should (string-match-p (concat "^[[:" name ":]]*$") matching))
+ (should (string-match-p (concat "^[[:" name ":]]*?\u2622$")
+ (concat matching "\u2622")))
+ (should (string-match-p (concat "^[^[:" name ":]]*$") not-matching))
+ (should (string-match-p (concat "^[^[:" name ":]]*\u2622$")
+ (concat not-matching "\u2622")))
+ (with-temp-buffer
+ (insert matching)
+ (let ((p (point)))
+ (insert not-matching)
+ (goto-char (point-min))
+ (skip-chars-forward (concat "[:" name ":]"))
+ (should (equal (point) p))
+ (skip-chars-forward (concat "^[:" name ":]"))
+ (should (equal (point) (point-max)))
+ (goto-char (point-min))
+ (skip-chars-forward (concat "[:" name ":]\u2622"))
+ (should (or (equal (point) p) (equal (point) (1+ p)))))))
+
+(ert-deftest regex-character-classes ()
+ "Perform sanity test of regexes using character classes.
+
+Go over all the supported character classes and test whether the
+classes and their inversions match what they are supposed to
+match. The test is done using `string-match-p' as well as
+`skip-chars-forward'."
+ (let (case-fold-search)
+ (regex--test-cc "alnum" "abcABC012Å‚Ä…ka" "-, \t\n")
+ (regex--test-cc "alpha" "abcABCÅ‚Ä…ka" "-,012 \t\n")
+ (regex--test-cc "digit" "012" "abcABCÅ‚Ä…ka-, \t\n")
+ (regex--test-cc "xdigit" "0123aBc" "Å‚Ä…k-, \t\n")
+ (regex--test-cc "upper" "ABCÅÄ„KA" "abc012-, \t\n")
+ (regex--test-cc "lower" "abcłąka" "ABC012-, \t\n")
+
+ (regex--test-cc "word" "abcABC012\u2620" "-, \t\n")
+
+ (regex--test-cc "punct" ".,-" "abcABC012\u2620 \t\n")
+ (regex--test-cc "cntrl" "\1\2\t\n" ".,-abcABC012\u2620 ")
+ (regex--test-cc "graph" "abcłąka\u2620-," " \t\n\1")
+ (regex--test-cc "print" "abcłąka\u2620-, " "\t\n\1")
+
+ (regex--test-cc "space" " \t\n\u2001" "abcABCÅ‚0123")
+ (regex--test-cc "blank" " \t" "\n\u2001")
+
+ (regex--test-cc "ascii" "abcABC012 \t\n\1" "Å‚Ä…\u2620")
+ (regex--test-cc "nonascii" "Å‚Ä…\u2622" "abcABC012 \t\n\1")
+ (regex--test-cc "unibyte" "abcABC012 \t\n\1" "Å‚Ä…\u2622")
+ (regex--test-cc "multibyte" "Å‚Ä…\u2622" "abcABC012 \t\n\1")))
+
+
+(defmacro regex-tests-generic-line (comment-char test-file whitelist &rest body)
+ "Reads a line of the test file TEST-FILE, skipping
+comments (defined by COMMENT-CHAR), and evaluates the tests in
+this line as defined in the BODY. Line numbers in the WHITELIST
+are known failures, and are skipped."
+
+ `(with-temp-buffer
+ (modify-syntax-entry ?_ "w;; ") ; tests expect _ to be a word
+ (insert-file-contents (concat regex-tests--resources-dir ,test-file))
+ (let ((case-fold-search nil)
+ (line-number 1)
+ (whitelist-idx 0))
+
+ (goto-char (point-min))
+
+ (while (not (eobp))
+ (let ((start (point)))
+ (end-of-line)
+ (narrow-to-region start (point))
+
+ (goto-char (point-min))
+
+ (when
+ (and
+ ;; ignore comments
+ (save-excursion
+ (re-search-forward ,(concat "^[^" (string comment-char) "]") nil t))
+
+ ;; skip lines in the whitelist
+ (let ((whitelist-next
+ (condition-case nil
+ (aref ,whitelist whitelist-idx) (args-out-of-range nil))))
+ (cond
+ ;; whitelist exhausted. do process this line
+ ((null whitelist-next) t)
+
+ ;; we're not yet at the next whitelist element. do
+ ;; process this line
+ ((< line-number whitelist-next) t)
+
+ ;; we're past the next whitelist element. This
+ ;; shouldn't happen
+ ((> line-number whitelist-next)
+ (error
+ (format
+ "We somehow skipped the next whitelist element: line %d" whitelist-next)))
+
+ ;; we're at the next whitelist element. Skip this
+ ;; line, and advance the whitelist index
+ (t
+ (setq whitelist-idx (1+ whitelist-idx)) nil))))
+ ,@body)
+
+ (widen)
+ (forward-line)
+ (beginning-of-line)
+ (setq line-number (1+ line-number)))))))
+
+(defun regex-tests-compare (string what-failed bounds-ref &optional substring-ref)
+ "I just ran a search, looking at STRING. WHAT-FAILED describes
+what failed, if anything; valid values are 'search-failed,
+'compilation-failed and nil. I compare the beginning/end of each
+group with their expected values. This is done with either
+BOUNDS-REF or SUBSTRING-REF; one of those should be non-nil.
+BOUNDS-REF is a sequence \[start-ref0 end-ref0 start-ref1
+end-ref1 ....] while SUBSTRING-REF is the expected substring
+obtained by indexing the input string by start/end-ref.
+
+If the search was supposed to fail then start-ref0/substring-ref0
+is 'search-failed. If the search wasn't even supposed to compile
+successfully, then start-ref0/substring-ref0 is
+'compilation-failed. If I only care about a match succeeding,
+this can be set to t.
+
+This function returns a string that describes the failure, or nil
+on success"
+
+ (when (or
+ (and bounds-ref substring-ref)
+ (not (or bounds-ref substring-ref)))
+ (error "Exactly one of bounds-ref and bounds-ref should be non-nil"))
+
+ (let ((what-failed-ref (car (or bounds-ref substring-ref))))
+
+ (cond
+ ((eq what-failed 'search-failed)
+ (cond
+ ((eq what-failed-ref 'search-failed)
+ nil)
+ ((eq what-failed-ref 'compilation-failed)
+ "Expected pattern failure; but no match")
+ (t
+ "Expected match; but no match")))
+
+ ((eq what-failed 'compilation-failed)
+ (cond
+ ((eq what-failed-ref 'search-failed)
+ "Expected no match; but pattern failure")
+ ((eq what-failed-ref 'compilation-failed)
+ nil)
+ (t
+ "Expected match; but pattern failure")))
+
+ ;; The regex match succeeded
+ ((eq what-failed-ref 'search-failed)
+ "Expected no match; but match")
+ ((eq what-failed-ref 'compilation-failed)
+ "Expected pattern failure; but match")
+
+ ;; The regex match succeeded, as expected. I now check all the
+ ;; bounds
+ (t
+ (let ((idx 0)
+ msg
+ ref next-ref-function compare-ref-function mismatched-ref-function)
+
+ (if bounds-ref
+ (setq ref bounds-ref
+ next-ref-function (lambda (x) (cddr x))
+ compare-ref-function (lambda (ref start-pos end-pos)
+ (or (eq (car ref) t)
+ (and (eq start-pos (car ref))
+ (eq end-pos (cadr ref)))))
+ mismatched-ref-function (lambda (ref start-pos end-pos)
+ (format
+ "beginning/end positions: %d/%s and %d/%s"
+ start-pos (car ref) end-pos (cadr ref))))
+ (setq ref substring-ref
+ next-ref-function (lambda (x) (cdr x))
+ compare-ref-function (lambda (ref start-pos end-pos)
+ (or (eq (car ref) t)
+ (string= (substring string start-pos end-pos) (car ref))))
+ mismatched-ref-function (lambda (ref start-pos end-pos)
+ (format
+ "beginning/end positions: %d/%s and %d/%s"
+ start-pos (car ref) end-pos (cadr ref)))))
+
+ (while (not (or (null ref) msg))
+
+ (let ((start (match-beginning idx))
+ (end (match-end idx)))
+
+ (when (not (funcall compare-ref-function ref start end))
+ (setq msg
+ (format
+ "Have expected match, but mismatch in group %d: %s" idx (funcall mismatched-ref-function ref start end))))
+
+ (setq ref (funcall next-ref-function ref)
+ idx (1+ idx))))
+
+ (or msg
+ nil))))))
+
+
+
+(defun regex-tests-match (pattern string bounds-ref &optional substring-ref)
+ "I match the given STRING against PATTERN. I compare the
+beginning/end of each group with their expected values.
+BOUNDS-REF is a sequence [start-ref0 end-ref0 start-ref1 end-ref1
+....].
+
+If the search was supposed to fail then start-ref0 is
+'search-failed. If the search wasn't even supposed to compile
+successfully, then start-ref0 is 'compilation-failed.
+
+This function returns a string that describes the failure, or nil
+on success"
+
+ (if (string-match "\\[\\([\\.=]\\)..?\\1\\]" pattern)
+ ;; Skipping test: [.x.] and [=x=] forms not supported by emacs
+ nil
+
+ (regex-tests-compare
+ string
+ (condition-case nil
+ (if (string-match pattern string) nil 'search-failed)
+ ('invalid-regexp 'compilation-failed))
+ bounds-ref substring-ref)))
+
+
+(defconst regex-tests-re-even-escapes
+ "\\(?:^\\|[^\\\\]\\)\\(?:\\\\\\\\\\)*"
+ "Regex that matches an even number of \\ characters")
+
+(defconst regex-tests-re-odd-escapes
+ (concat regex-tests-re-even-escapes "\\\\")
+ "Regex that matches an odd number of \\ characters")
+
+
+(defun regex-tests-unextend (pattern)
+ "Basic conversion from extended regexes to emacs ones. This is
+mostly a hack that adds \\ to () and | and {}, and removes it if
+it already exists. We also change \\S (and \\s) to \\S- (and
+\\s-) because extended regexes see the former as whitespace, but
+emacs requires an extra symbol character"
+
+ (with-temp-buffer
+ (insert pattern)
+ (goto-char (point-min))
+
+ (while (re-search-forward "[()|{}]" nil t)
+ ;; point is past special character. If it is escaped, unescape
+ ;; it
+
+ (if (save-excursion
+ (re-search-backward (concat regex-tests-re-odd-escapes ".\\=") nil t))
+
+ ;; This special character is preceded by an odd number of \,
+ ;; so I unescape it by removing the last one
+ (progn
+ (forward-char -2)
+ (delete-char 1)
+ (forward-char 1))
+
+ ;; This special character is preceded by an even (possibly 0)
+ ;; number of \. I add an escape
+ (forward-char -1)
+ (insert "\\")
+ (forward-char 1)))
+
+ ;; convert \s to \s-
+ (goto-char (point-min))
+ (while (re-search-forward (concat regex-tests-re-odd-escapes "[Ss]") nil t)
+ (insert "-"))
+
+ (buffer-string)))
+
+(defun regex-tests-BOOST-frob-escapes (s ispattern)
+ "Mangle \\ the way it is done in frob_escapes() in
+regex-tests-BOOST.c in glibc: \\t, \\n, \\r are interpreted;
+\\\\, \\^, \{, \\|, \} are unescaped for the string (not
+pattern)"
+
+ ;; this is all similar to (regex-tests-unextend)
+ (with-temp-buffer
+ (insert s)
+
+ (let ((interpret-list (list "t" "n" "r")))
+ (while interpret-list
+ (goto-char (point-min))
+ (while (re-search-forward
+ (concat "\\(" regex-tests-re-even-escapes "\\)"
+ "\\\\" (car interpret-list))
+ nil t)
+ (replace-match (concat "\\1" (car (read-from-string
+ (concat "\"\\" (car interpret-list) "\""))))))
+
+ (setq interpret-list (cdr interpret-list))))
+
+ (when (not ispattern)
+ ;; unescape \\, \^, \{, \|, \}
+ (let ((unescape-list (list "\\\\" "^" "{" "|" "}")))
+ (while unescape-list
+ (goto-char (point-min))
+ (while (re-search-forward
+ (concat "\\(" regex-tests-re-even-escapes "\\)"
+ "\\\\" (car unescape-list))
+ nil t)
+ (replace-match (concat "\\1" (car unescape-list))))
+
+ (setq unescape-list (cdr unescape-list))))
+ )
+ (buffer-string)))
+
+
+
+
+(defconst regex-tests-BOOST-whitelist
+ [
+ ;; emacs is more stringent with regexes involving unbalanced )
+ 63 65 69
+
+ ;; in emacs, regex . doesn't match \n
+ 91
+
+ ;; emacs is more forgiving with * and ? that don't apply to
+ ;; characters
+ 107 108 109 122 123 124 140 141 142
+
+ ;; emacs accepts regexes with {}
+ 161
+
+ ;; emacs doesn't fail on bogus ranges such as [3-1] or [1-3-5]
+ 222 223
+
+ ;; emacs doesn't match (ab*)[ab]*\1 greedily: only 4 chars of
+ ;; ababaaa match
+ 284 294
+
+ ;; ambiguous groupings are ambiguous
+ 443 444 445 446 448 449 450
+
+ ;; emacs doesn't know how to handle weird ranges such as [a-Z] and
+ ;; [[:alpha:]-a]
+ 539 580 581
+
+ ;; emacs matches non-greedy regex ab.*? non-greedily
+ 639 677 712
+ ]
+ "Line numbers in the boost test that should be skipped. These
+are false-positive test failures that represent known/benign
+differences in behavior.")
+
+;; - Format
+;; - Comments are lines starting with ;
+;; - Lines starting with - set options passed to regcomp() and regexec():
+;; - if no "REG_BASIC" is found, with have an extended regex
+;; - These set a flag:
+;; - REG_ICASE
+;; - REG_NEWLINE (ignored by this function)
+;; - REG_NOTBOL
+;; - REG_NOTEOL
+;;
+;; - Test lines are
+;; pattern string start0 end0 start1 end1 ...
+;;
+;; - pattern, string can have escapes
+;; - string can have whitespace if enclosed in ""
+;; - if string is "!", then the pattern is supposed to fail compilation
+;; - start/end are of group0, group1, etc. group 0 is the full match
+;; - start<0 indicates "no match"
+;; - start is the 0-based index of the first character
+;; - end is the 0-based index of the first character past the group
+(defun regex-tests-BOOST ()
+ (let (failures
+ basic icase notbol noteol)
+ (regex-tests-generic-line
+ ?; "BOOST.tests" regex-tests-BOOST-whitelist
+ (if (save-excursion (re-search-forward "^-" nil t))
+ (setq basic (save-excursion (re-search-forward "REG_BASIC" nil t))
+ icase (save-excursion (re-search-forward "REG_ICASE" nil t))
+ notbol (save-excursion (re-search-forward "REG_NOTBOL" nil t))
+ noteol (save-excursion (re-search-forward "REG_NOTEOL" nil t)))
+
+ (save-excursion
+ (or (re-search-forward "\\(\\S-+\\)\\s-+\"\\(.*\\)\"\\s-+?\\(.+\\)" nil t)
+ (re-search-forward "\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+?\\(.+\\)" nil t)
+ (re-search-forward "\\(\\S-+\\)\\s-+\\(!\\)" nil t)))
+
+ (let* ((pattern-raw (match-string 1))
+ (string-raw (match-string 2))
+ (positions-raw (match-string 3))
+ (pattern (regex-tests-BOOST-frob-escapes pattern-raw t))
+ (string (regex-tests-BOOST-frob-escapes string-raw nil))
+ (positions
+ (if (string= string "!")
+ (list 'compilation-failed 0)
+ (mapcar
+ (lambda (x)
+ (let ((x (string-to-number x)))
+ (if (< x 0) nil x)))
+ (split-string positions-raw)))))
+
+ (when (null (car positions))
+ (setcar positions 'search-failed))
+
+ (when (not basic)
+ (setq pattern (regex-tests-unextend pattern)))
+
+ ;; great. I now have all the data parsed. Let's use it to do
+ ;; stuff
+ (let* ((case-fold-search icase)
+ (msg (regex-tests-match pattern string positions)))
+
+ (if (and
+ ;; Skipping test: notbol/noteol not supported
+ (not notbol) (not noteol)
+
+ msg)
+
+ ;; store failure
+ (setq failures
+ (cons (format "line number %d: Regex '%s': %s"
+ line-number pattern msg)
+ failures)))))))
+
+ failures))
+
+(defconst regex-tests-PCRE-whitelist
+ [
+ ;; ambiguous groupings are ambiguous
+ 610 611 1154 1157 1160 1168 1171 1176 1179 1182 1185 1188 1193 1196 1203
+ ]
+ "Line numbers in the PCRE test that should be skipped. These
+are false-positive test failures that represent known/benign
+differences in behavior.")
+
+;; - Format
+;;
+;; regex
+;; input_string
+;; group_num: group_match | "No match"
+;; input_string
+;; group_num: group_match | "No match"
+;; input_string
+;; group_num: group_match | "No match"
+;; input_string
+;; group_num: group_match | "No match"
+;; ...
+(defun regex-tests-PCRE ()
+ (let (failures
+ pattern icase string what-failed matches-observed)
+ (regex-tests-generic-line
+ ?# "PCRE.tests" regex-tests-PCRE-whitelist
+
+ (cond
+
+ ;; pattern
+ ((save-excursion (re-search-forward "^/\\(.*\\)/\\(.*i?\\)$" nil t))
+ (setq icase (string= "i" (match-string 2))
+ pattern (regex-tests-unextend (match-string 1))))
+
+ ;; string. read it in, match against pattern, and save all the results
+ ((save-excursion (re-search-forward "^ \\(.*\\)" nil t))
+ (let ((case-fold-search icase))
+ (setq string (match-string 1)
+
+ ;; the regex match under test
+ what-failed
+ (condition-case nil
+ (if (string-match pattern string) nil 'search-failed)
+ ('invalid-regexp 'compilation-failed))
+
+ matches-observed
+ (cl-loop for x from 0 to 20
+ collect (and (not what-failed)
+ (or (match-string x string) "<unset>")))))
+ nil)
+
+ ;; verification line: failed match
+ ((save-excursion (re-search-forward "^No match" nil t))
+ (unless what-failed
+ (setq failures
+ (cons (format "line number %d: Regex '%s': Expected no match; but match"
+ line-number pattern)
+ failures))))
+
+ ;; verification line: succeeded match
+ ((save-excursion (re-search-forward "^ *\\([0-9]+\\): \\(.*\\)" nil t))
+ (let* ((match-ref (match-string 2))
+ (idx (string-to-number (match-string 1))))
+
+ (if what-failed
+ "Expected match; but no match"
+ (unless (string= match-ref (elt matches-observed idx))
+ (setq failures
+ (cons (format "line number %d: Regex '%s': Have expected match, but group %d is wrong: '%s'/'%s'"
+ line-number pattern
+ idx match-ref (elt matches-observed idx))
+ failures))))))
+
+ ;; reset
+ (t (setq pattern nil) nil)))
+
+ failures))
+
+(defconst regex-tests-PTESTS-whitelist
+ [
+ ;; emacs doesn't barf on weird ranges such as [b-a], but simply
+ ;; fails to match
+ 138
+
+ ;; emacs doesn't see DEL (0x78) as a [:cntrl:] character
+ 168
+ ]
+ "Line numbers in the PTESTS test that should be skipped. These
+are false-positive test failures that represent known/benign
+differences in behavior.")
+
+;; - Format
+;; - fields separated by ¦ (note: this is not a |)
+;; - start¦end¦pattern¦string
+;; - start is the 1-based index of the first character
+;; - end is the 1-based index of the last character
+(defun regex-tests-PTESTS ()
+ (let (failures)
+ (regex-tests-generic-line
+ ?# "PTESTS" regex-tests-PTESTS-whitelist
+ (let* ((fields (split-string (buffer-string) "¦"))
+
+ ;; string has 1-based index of first char in the
+ ;; match. -1 means "no match". -2 means "invalid
+ ;; regex".
+ ;;
+ ;; start-ref is 0-based index of first char in the
+ ;; match
+ ;;
+ ;; string==0 is a special case, and I have to treat
+ ;; it as start-ref = 0
+ (start-ref (let ((raw (string-to-number (elt fields 0))))
+ (cond
+ ((= raw -2) 'compilation-failed)
+ ((= raw -1) 'search-failed)
+ ((= raw 0) 0)
+ (t (1- raw)))))
+
+ ;; string has 1-based index of last char in the
+ ;; match. end-ref is 0-based index of first char past
+ ;; the match
+ (end-ref (string-to-number (elt fields 1)))
+ (pattern (elt fields 2))
+ (string (elt fields 3)))
+
+ (let ((msg (regex-tests-match pattern string (list start-ref end-ref))))
+ (when msg
+ (setq failures
+ (cons (format "line number %d: Regex '%s': %s"
+ line-number pattern msg)
+ failures))))))
+ failures))
+
+(defconst regex-tests-TESTS-whitelist
+ [
+ ;; emacs doesn't barf on weird ranges such as [b-a], but simply
+ ;; fails to match
+ 42
+
+ ;; emacs is more forgiving with * and ? that don't apply to
+ ;; characters
+ 57 58 59 60
+
+ ;; emacs is more stringent with regexes involving unbalanced )
+ 67
+ ]
+ "Line numbers in the TESTS test that should be skipped. These
+are false-positive test failures that represent known/benign
+differences in behavior.")
+
+;; - Format
+;; - fields separated by :. Watch for [\[:xxx:]]
+;; - expected:pattern:string
+;;
+;; expected:
+;; | 0 | successful match |
+;; | 1 | failed match |
+;; | 2 | regcomp() should fail |
+(defun regex-tests-TESTS ()
+ (let (failures)
+ (regex-tests-generic-line
+ ?# "TESTS" regex-tests-TESTS-whitelist
+ (if (save-excursion (re-search-forward "^\\([^:]+\\):\\(.*\\):\\([^:]*\\)$" nil t))
+ (let* ((what-failed
+ (let ((raw (string-to-number (match-string 1))))
+ (cond
+ ((= raw 2) 'compilation-failed)
+ ((= raw 1) 'search-failed)
+ (t t))))
+ (string (match-string 3))
+ (pattern (regex-tests-unextend (match-string 2))))
+
+ (let ((msg (regex-tests-match pattern string nil (list what-failed))))
+ (when msg
+ (setq failures
+ (cons (format "line number %d: Regex '%s': %s"
+ line-number pattern msg)
+ failures)))))
+
+ (error "Error parsing TESTS file line: '%s'" (buffer-string))))
+ failures))
+
+(ert-deftest regex-tests-BOOST ()
+ "Tests of the regular expression engine.
+This evaluates the BOOST test cases from glibc."
+ (should-not (regex-tests-BOOST)))
+
+(ert-deftest regex-tests-PCRE ()
+ "Tests of the regular expression engine.
+This evaluates the PCRE test cases from glibc."
+ (should-not (regex-tests-PCRE)))
+
+(ert-deftest regex-tests-PTESTS ()
+ "Tests of the regular expression engine.
+This evaluates the PTESTS test cases from glibc."
+ (should-not (regex-tests-PTESTS)))
+
+(ert-deftest regex-tests-TESTS ()
+ "Tests of the regular expression engine.
+This evaluates the TESTS test cases from glibc."
+ (should-not (regex-tests-TESTS)))
+
+;;; regex-tests.el ends here
diff --git a/test/automated/libxml-tests.el b/test/src/xml-tests.el
index dc60197b59..dc60197b59 100644
--- a/test/automated/libxml-tests.el
+++ b/test/src/xml-tests.el